generated from tailored/router-template
	Initial commit
This commit is contained in:
		
							
								
								
									
										14
									
								
								.gitignore
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										14
									
								
								.gitignore
									
									
									
									
										vendored
									
									
										Normal file
									
								
							| @@ -0,0 +1,14 @@ | ||||
| node_modules | ||||
|  | ||||
| dist | ||||
|  | ||||
| app.config.json5 | ||||
|  | ||||
| apps.config.json | ||||
|  | ||||
| deploy.tar.gz | ||||
| cache-file | ||||
|  | ||||
| /apps | ||||
|  | ||||
| logs | ||||
							
								
								
									
										2
									
								
								.npmrc
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										2
									
								
								.npmrc
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,2 @@ | ||||
| //npm.xiongxiao.me/:_authToken=${ME_NPM_TOKEN} | ||||
| //registry.npmjs.org/:_authToken=${NPM_TOKEN} | ||||
							
								
								
									
										13
									
								
								app.config.json5.example
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										13
									
								
								app.config.json5.example
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,13 @@ | ||||
| { | ||||
|   port: 3000, | ||||
|   postgres: { | ||||
|     username: 'postgres', | ||||
|     host: 'localhost', | ||||
|     database: 'postgres', | ||||
|     password: 'postgres', | ||||
|     port: 5432, | ||||
|   }, | ||||
|   tableName: { | ||||
|     table: 'name', | ||||
|   } | ||||
| } | ||||
							
								
								
									
										70
									
								
								package.json
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										70
									
								
								package.json
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,70 @@ | ||||
| { | ||||
|   "name": "demo-app", | ||||
|   "version": "0.0.1", | ||||
|   "description": "", | ||||
|   "main": "index.js", | ||||
|   "app": { | ||||
|     "key": "demo-app", | ||||
|     "entry": "dist/app.mjs", | ||||
|     "type": "system-app", | ||||
|     "files": [ | ||||
|       "dist" | ||||
|     ] | ||||
|   }, | ||||
|   "scripts": { | ||||
|     "watch": "rollup -c rollup.config.mjs -w", | ||||
|     "dev": "cross-env NODE_ENV=development nodemon --delay 2.5 -e js,cjs,mjs --exec node dist/app.mjs", | ||||
|     "test": "tsx  test/**/*.ts", | ||||
|     "dev:watch": "cross-env NODE_ENV=development concurrently -n \"Watch,Dev\" -c \"green,blue\" \"npm run watch\" \"sleep 1 && npm run dev\" ", | ||||
|     "clean": "rm -rf dist", | ||||
|     "prepub": "envision switch root", | ||||
|     "pub": "npm run build && envision pack -p -u" | ||||
|   }, | ||||
|   "keywords": [], | ||||
|   "author": "abearxiong <xiongxiao@xiongxiao.me>", | ||||
|   "license": "MIT", | ||||
|   "type": "module", | ||||
|   "types": "types/index.d.ts", | ||||
|   "files": [ | ||||
|     "types", | ||||
|     "dist", | ||||
|     "src" | ||||
|   ], | ||||
|   "dependencies": { | ||||
|     "@kevisual/code-center-module": "0.0.11-alpha.1", | ||||
|     "@kevisual/mark": "0.0.6", | ||||
|     "@kevisual/router": "0.0.8-alpha.3", | ||||
|     "cookie": "^1.0.2", | ||||
|     "dayjs": "^1.11.13", | ||||
|     "formidable": "^3.5.2", | ||||
|     "json5": "^2.2.3", | ||||
|     "lodash-es": "^4.17.21" | ||||
|   }, | ||||
|   "devDependencies": { | ||||
|     "@kevisual/types": "^0.0.6", | ||||
|     "@kevisual/use-config": "^1.0.9", | ||||
|     "@rollup/plugin-alias": "^5.1.1", | ||||
|     "@rollup/plugin-commonjs": "^28.0.2", | ||||
|     "@rollup/plugin-json": "^6.1.0", | ||||
|     "@rollup/plugin-node-resolve": "^16.0.0", | ||||
|     "@rollup/plugin-replace": "^6.0.2", | ||||
|     "@rollup/plugin-typescript": "^12.1.2", | ||||
|     "@types/crypto-js": "^4.2.2", | ||||
|     "@types/formidable": "^3.4.5", | ||||
|     "@types/lodash-es": "^4.17.12", | ||||
|     "@types/node": "^22.13.8", | ||||
|     "concurrently": "^9.1.2", | ||||
|     "cross-env": "^7.0.3", | ||||
|     "nodemon": "^3.1.9", | ||||
|     "pm2": "^5.4.3", | ||||
|     "rimraf": "^6.0.1", | ||||
|     "rollup": "^4.34.9", | ||||
|     "rollup-plugin-copy": "^3.5.0", | ||||
|     "rollup-plugin-dts": "^6.1.1", | ||||
|     "rollup-plugin-esbuild": "^6.2.1", | ||||
|     "tape": "^5.9.0", | ||||
|     "tsx": "^4.19.3", | ||||
|     "typescript": "^5.8.2" | ||||
|   }, | ||||
|   "pnpm": {} | ||||
| } | ||||
							
								
								
									
										4439
									
								
								pnpm-lock.yaml
									
									
									
										generated
									
									
									
										Normal file
									
								
							
							
						
						
									
										4439
									
								
								pnpm-lock.yaml
									
									
									
										generated
									
									
									
										Normal file
									
								
							
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							
							
								
								
									
										75
									
								
								rollup.config.mjs
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										75
									
								
								rollup.config.mjs
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,75 @@ | ||||
| import resolve from '@rollup/plugin-node-resolve'; | ||||
| import commonjs from '@rollup/plugin-commonjs'; | ||||
| import json from '@rollup/plugin-json'; | ||||
| import path from 'path'; | ||||
| import esbuild from 'rollup-plugin-esbuild'; | ||||
| import alias from '@rollup/plugin-alias'; | ||||
| import replace from '@rollup/plugin-replace'; | ||||
| import pkgs from './package.json' with {type: 'json'}; | ||||
|  | ||||
| const isDev = process.env.NODE_ENV === 'development'; | ||||
| const input = isDev ? './src/dev.ts' : './src/index.ts'; | ||||
| /** | ||||
|  * @type {import('rollup').RollupOptions} | ||||
|  */ | ||||
| const config = { | ||||
|   input, | ||||
|   output: { | ||||
|     dir: './dist', | ||||
|     entryFileNames: 'app.mjs', | ||||
|     chunkFileNames: '[name]-[hash].mjs', | ||||
|     format: 'esm', | ||||
|   }, | ||||
|   plugins: [ | ||||
|     replace({ | ||||
|       preventAssignment: true, // 防止意外赋值 | ||||
|       DEV_SERVER: JSON.stringify(isDev), // 替换 process.env.NODE_ENV | ||||
|       VERSION: JSON.stringify(pkgs.version), | ||||
|     }), | ||||
|     alias({ | ||||
|       // only esbuild needs to be configured | ||||
|       entries: [ | ||||
|         { find: '@', replacement: path.resolve('src') }, // 配置 @ 为 src 目录 | ||||
|         { find: 'http', replacement: 'node:http' }, | ||||
|         { find: 'https', replacement: 'node:https' }, | ||||
|         { find: 'fs', replacement: 'node:fs' }, | ||||
|         { find: 'path', replacement: 'node:path' }, | ||||
|         { find: 'crypto', replacement: 'node:crypto' }, | ||||
|         { find: 'zlib', replacement: 'node:zlib' }, | ||||
|         { find: 'stream', replacement: 'node:stream' }, | ||||
|         { find: 'net', replacement: 'node:net' }, | ||||
|         { find: 'tty', replacement: 'node:tty' }, | ||||
|         { find: 'tls', replacement: 'node:tls' }, | ||||
|         { find: 'buffer', replacement: 'node:buffer' }, | ||||
|         { find: 'timers', replacement: 'node:timers' }, | ||||
|         // { find: 'string_decoder', replacement: 'node:string_decoder' }, | ||||
|         { find: 'dns', replacement: 'node:dns' }, | ||||
|         { find: 'domain', replacement: 'node:domain' }, | ||||
|         { find: 'os', replacement: 'node:os' }, | ||||
|         { find: 'events', replacement: 'node:events' }, | ||||
|         { find: 'url', replacement: 'node:url' }, | ||||
|         { find: 'assert', replacement: 'node:assert' }, | ||||
|         { find: 'util', replacement: 'node:util' }, | ||||
|       ], | ||||
|     }), | ||||
|     resolve({ | ||||
|       preferBuiltins: true, // 强制优先使用内置模块 | ||||
|     }), | ||||
|     commonjs(), | ||||
|     esbuild({ | ||||
|       target: 'node22', // | ||||
|       minify: false, // 启用代码压缩 | ||||
|       tsconfig: 'tsconfig.json', | ||||
|     }), | ||||
|     json(), | ||||
|   ], | ||||
|   external: [ | ||||
|     /@kevisual\/router(\/.*)?/, //, // 路由 | ||||
|     /@kevisual\/use-config(\/.*)?/, // | ||||
|  | ||||
|     // 'sequelize', // 数据库 orm | ||||
|     // 'ioredis', // redis | ||||
|     // 'pg', // pg | ||||
|   ], | ||||
| }; | ||||
| export default config; | ||||
							
								
								
									
										8
									
								
								src/app.ts
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										8
									
								
								src/app.ts
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,8 @@ | ||||
| import { App } from '@kevisual/router'; | ||||
| import { useContextKey } from '@kevisual/use-config/context'; | ||||
|  | ||||
| const init = () => { | ||||
|   return new App(); | ||||
| }; | ||||
|  | ||||
| export const app = useContextKey('app', init); | ||||
							
								
								
									
										16
									
								
								src/demo-route.ts
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										16
									
								
								src/demo-route.ts
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,16 @@ | ||||
| import { app } from './app.ts'; | ||||
| import { useConfig } from '@kevisual/use-config'; | ||||
|  | ||||
| app | ||||
|   .route({ | ||||
|     path: 'demo', | ||||
|     key: 'demo', | ||||
|   }) | ||||
|   .define(async (ctx) => { | ||||
|     ctx.body = '123'; | ||||
|   }) | ||||
|   .addTo(app); | ||||
|  | ||||
| const config = useConfig(); | ||||
|  | ||||
| console.log('run demo: http://localhost:' + config.port + '/api/router?path=demo&key=demo'); | ||||
							
								
								
									
										8
									
								
								src/dev.ts
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										8
									
								
								src/dev.ts
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,8 @@ | ||||
| import { useConfig } from '@kevisual/use-config'; | ||||
| import { app } from './index.ts'; | ||||
|  | ||||
| const config = useConfig(); | ||||
|  | ||||
| app.listen(config.port, () => { | ||||
|   console.log(`server is running at http://localhost:${config.port}`); | ||||
| }); | ||||
							
								
								
									
										4
									
								
								src/index.ts
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										4
									
								
								src/index.ts
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,4 @@ | ||||
| import { app } from './app.ts'; | ||||
| import './demo-route.ts'; | ||||
|  | ||||
| export { app }; | ||||
							
								
								
									
										9
									
								
								src/modules/mark.ts
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										9
									
								
								src/modules/mark.ts
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,9 @@ | ||||
| import { Mark, markModelInit } from '@kevisual/mark'; | ||||
|  | ||||
| export { Mark, markModelInit }; | ||||
|  | ||||
| export const init = () => { | ||||
|   markModelInit({ | ||||
|     tableName: '', | ||||
|   }); | ||||
| }; | ||||
							
								
								
									
										1
									
								
								src/modules/sequelize.ts
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										1
									
								
								src/modules/sequelize.ts
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1 @@ | ||||
| export { sequelize } from '@kevisual/code-center-module'; | ||||
							
								
								
									
										9
									
								
								src/modules/user.ts
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										9
									
								
								src/modules/user.ts
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,9 @@ | ||||
| import { sequelize, User, UserInit, Org, OrgInit } from '@kevisual/code-center-module'; | ||||
|  | ||||
| export { sequelize, User, UserInit, Org, OrgInit }; | ||||
|  | ||||
| export const init = () => { | ||||
|   UserInit(); | ||||
|   OrgInit(); | ||||
| }; | ||||
| init(); | ||||
							
								
								
									
										33
									
								
								tsconfig.json
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										33
									
								
								tsconfig.json
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,33 @@ | ||||
| { | ||||
|   "compilerOptions": { | ||||
|     "module": "nodenext", | ||||
|     "target": "esnext", | ||||
|     "noImplicitAny": false, | ||||
|     "outDir": "./dist", | ||||
|     "sourceMap": false, | ||||
|     "allowJs": true, | ||||
|     "newLine": "LF", | ||||
|     "baseUrl": "./", | ||||
|     "typeRoots": [ | ||||
|       "node_modules/@types", | ||||
|       "node_modules/@kevisual/types" | ||||
|     ], | ||||
|     "declaration": true, | ||||
|     "noEmit": false, | ||||
|     "allowImportingTsExtensions": true, | ||||
|     "emitDeclarationOnly": true, | ||||
|     "moduleResolution": "NodeNext", | ||||
|     "experimentalDecorators": true, | ||||
|     "emitDecoratorMetadata": true, | ||||
|     "esModuleInterop": true, | ||||
|     "paths": { | ||||
|       "@/*": [ | ||||
|         "src/*" | ||||
|       ] | ||||
|     } | ||||
|   }, | ||||
|   "include": [ | ||||
|     "src/**/*.ts", | ||||
|   ], | ||||
|   "exclude": [], | ||||
| } | ||||
		Reference in New Issue
	
	Block a user
	 kevisual
					kevisual