From 298550c862cfd4ab717056439c8c3f56e66bc298 Mon Sep 17 00:00:00 2001 From: moonrailgun Date: Tue, 16 May 2023 16:54:39 +0800 Subject: [PATCH] chore: add build script for admin-next --- pnpm-lock.yaml | 238 +++++++++++++++++++++++-- server/admin-next/package.json | 10 +- server/admin-next/src/server/index.ts | 9 +- server/admin-next/tsconfig.server.json | 20 +++ 4 files changed, 260 insertions(+), 17 deletions(-) create mode 100644 server/admin-next/tsconfig.server.json diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index c2a60167..eff6f229 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -1595,9 +1595,6 @@ importers: axios: specifier: ^1.4.0 version: 1.4.0 - body-parser: - specifier: ^1.20.1 - version: 1.20.1 compression: specifier: ^1.7.4 version: 1.7.4 @@ -1632,15 +1629,12 @@ importers: specifier: workspace:^ version: link:../packages/sdk tushan: - specifier: ^0.2.3 - version: 0.2.3(ts-node@10.9.1) + specifier: ^0.2.4 + version: 0.2.4(prop-types@15.8.1)(ts-node@10.9.1) vite-express: specifier: ^0.5.4 version: 0.5.4(express@4.18.2)(vite@4.2.0) devDependencies: - '@types/body-parser': - specifier: ^1.19.2 - version: 1.19.2 '@types/compression': specifier: ^1.7.2 version: 1.7.2 @@ -1662,6 +1656,9 @@ importers: '@vitejs/plugin-react': specifier: ^3.1.0 version: 3.1.0(vite@4.2.0) + cross-env: + specifier: ^7.0.3 + version: 7.0.3 nodemon: specifier: ^2.0.22 version: 2.0.22 @@ -12372,6 +12369,48 @@ packages: dependencies: postcss: 7.0.39 + /@types/d3-array@3.0.4: + resolution: {integrity: sha512-nwvEkG9vYOc0Ic7G7kwgviY4AQlTfYGIZ0fqB7CQHXGyYM6nO7kJh5EguSNA3jfh4rq7Sb7eMVq8isuvg2/miQ==} + dev: false + + /@types/d3-color@3.1.0: + resolution: {integrity: sha512-HKuicPHJuvPgCD+np6Se9MQvS6OCbJmOjGvylzMJRlDwUXjKTTXs6Pwgk79O09Vj/ho3u1ofXnhFOaEWWPrlwA==} + dev: false + + /@types/d3-ease@3.0.0: + resolution: {integrity: sha512-aMo4eaAOijJjA6uU+GIeW018dvy9+oH5Y2VPPzjjfxevvGQ/oRDs+tfYC9b50Q4BygRR8yE2QCLsrT0WtAVseA==} + dev: false + + /@types/d3-interpolate@3.0.1: + resolution: {integrity: sha512-jx5leotSeac3jr0RePOH1KdR9rISG91QIE4Q2PYTu4OymLTZfA3SrnURSLzKH48HmXVUru50b8nje4E79oQSQw==} + dependencies: + '@types/d3-color': 3.1.0 + dev: false + + /@types/d3-path@3.0.0: + resolution: {integrity: sha512-0g/A+mZXgFkQxN3HniRDbXMN79K3CdTpLsevj+PXiTcb2hVyvkZUBg37StmgCQkaD84cUJ4uaDAWq7UJOQy2Tg==} + dev: false + + /@types/d3-scale@4.0.3: + resolution: {integrity: sha512-PATBiMCpvHJSMtZAMEhc2WyL+hnzarKzI6wAHYjhsonjWJYGq5BXTzQjv4l8m2jO183/4wZ90rKvSeT7o72xNQ==} + dependencies: + '@types/d3-time': 3.0.0 + dev: false + + /@types/d3-shape@3.1.1: + resolution: {integrity: sha512-6Uh86YFF7LGg4PQkuO2oG6EMBRLuW9cbavUW46zkIO5kuS2PfTqo2o9SkgtQzguBHbLgNnU90UNsITpsX1My+A==} + dependencies: + '@types/d3-path': 3.0.0 + dev: false + + /@types/d3-time@3.0.0: + resolution: {integrity: sha512-sZLCdHvBUcNby1cB6Fd3ZBrABbjz3v1Vm90nysCQ6Vt7vd6e/h9Lt7SiJUoEX0l4Dzc7P5llKyhqSi1ycSf1Hg==} + dev: false + + /@types/d3-timer@3.0.0: + resolution: {integrity: sha512-HNB/9GHqu7Fo8AQiugyJbv6ZxYz58wef0esl4Mv828w1ZKpAshw/uFWVDUcIB9KKFeFKoxS3cHY07FFgtTRZ1g==} + dev: false + /@types/debug@4.1.7: resolution: {integrity: sha512-9AonUzyTjXXhEOa0DnqpzZi6VHlqKMswga9EXjpXnnqxwLtdvPPtlO8evrI5D9S6asFRCQ6v+wpiUKbw+vKqyg==} dependencies: @@ -17403,6 +17442,77 @@ packages: dev: true optional: true + /d3-array@3.2.3: + resolution: {integrity: sha512-JRHwbQQ84XuAESWhvIPaUV4/1UYTBOLiOPGWqgFDHZS1D5QN9c57FbH3QpEnQMYiOXNzKUQyGTZf+EVO7RT5TQ==} + engines: {node: '>=12'} + dependencies: + internmap: 2.0.3 + dev: false + + /d3-color@3.1.0: + resolution: {integrity: sha512-zg/chbXyeBtMQ1LbD/WSoW2DpC3I0mpmPdW+ynRTj/x2DAWYrIY7qeZIHidozwV24m4iavr15lNwIwLxRmOxhA==} + engines: {node: '>=12'} + dev: false + + /d3-ease@3.0.1: + resolution: {integrity: sha512-wR/XK3D3XcLIZwpbvQwQ5fK+8Ykds1ip7A2Txe0yxncXSdq1L9skcG7blcedkOX+ZcgxGAmLX1FrRGbADwzi0w==} + engines: {node: '>=12'} + dev: false + + /d3-format@3.1.0: + resolution: {integrity: sha512-YyUI6AEuY/Wpt8KWLgZHsIU86atmikuoOmCfommt0LYHiQSPjvX2AcFc38PX0CBpr2RCyZhjex+NS/LPOv6YqA==} + engines: {node: '>=12'} + dev: false + + /d3-interpolate@3.0.1: + resolution: {integrity: sha512-3bYs1rOD33uo8aqJfKP3JWPAibgw8Zm2+L9vBKEHJ2Rg+viTR7o5Mmv5mZcieN+FRYaAOWX5SJATX6k1PWz72g==} + engines: {node: '>=12'} + dependencies: + d3-color: 3.1.0 + dev: false + + /d3-path@3.1.0: + resolution: {integrity: sha512-p3KP5HCf/bvjBSSKuXid6Zqijx7wIfNW+J/maPs+iwR35at5JCbLUT0LzF1cnjbCHWhqzQTIN2Jpe8pRebIEFQ==} + engines: {node: '>=12'} + dev: false + + /d3-scale@4.0.2: + resolution: {integrity: sha512-GZW464g1SH7ag3Y7hXjf8RoUuAFIqklOAq3MRl4OaWabTFJY9PN/E1YklhXLh+OQ3fM9yS2nOkCoS+WLZ6kvxQ==} + engines: {node: '>=12'} + dependencies: + d3-array: 3.2.3 + d3-format: 3.1.0 + d3-interpolate: 3.0.1 + d3-time: 3.1.0 + d3-time-format: 4.1.0 + dev: false + + /d3-shape@3.2.0: + resolution: {integrity: sha512-SaLBuwGm3MOViRq2ABk3eLoxwZELpH6zhl3FbAoJ7Vm1gofKx6El1Ib5z23NUEhF9AsGl7y+dzLe5Cw2AArGTA==} + engines: {node: '>=12'} + dependencies: + d3-path: 3.1.0 + dev: false + + /d3-time-format@4.1.0: + resolution: {integrity: sha512-dJxPBlzC7NugB2PDLwo9Q8JiTR3M3e4/XANkreKSUxF8vvXKqm1Yfq4Q5dl8budlunRVlUUaDUgFt7eA8D6NLg==} + engines: {node: '>=12'} + dependencies: + d3-time: 3.1.0 + dev: false + + /d3-time@3.1.0: + resolution: {integrity: sha512-VqKjzBLejbSMT4IgbmVgDjpkYrNWUYJnbCGo874u7MMKIWsILRX+OpX/gTk8MqjpT1A/c6HY2dCA77ZN0lkQ2Q==} + engines: {node: '>=12'} + dependencies: + d3-array: 3.2.3 + dev: false + + /d3-timer@3.0.1: + resolution: {integrity: sha512-ndfJ/JxxMd3nw31uyKoY2naivF+r29V+Lc0svZxe1JvvIRmi8hUsrMvdOwgS1o6uBHmiz91geQ0ylPP0aj1VUA==} + engines: {node: '>=12'} + dev: false + /d@0.1.1: resolution: {integrity: sha512-0SdM9V9pd/OXJHoWmTfNPTAeD+lw6ZqHg+isPyBFuJsZLSE0Ygg1cYZ/0l6DrKQXMOqGOu1oWupMoOfoRfMZrQ==} dependencies: @@ -17535,6 +17645,10 @@ packages: engines: {node: '>=0.10.0'} dev: true + /decimal.js-light@2.5.1: + resolution: {integrity: sha512-qIMFpTMZmny+MMIitAB6D7iVPEorVw6YQRWkvarTkT4tBeSLLiHzcwj6q0MmYSFCiVpiqPJTJEYIrpcPzVEIvg==} + dev: false + /decimal.js@10.4.3: resolution: {integrity: sha512-VBBaLc1MgL5XpzgIP7ny5Z6Nx3UrRkIViUkPUdtl9aya5amy3De1gsUUSB1g3+3sExYNjCAsAznmukyxCb1GRA==} dev: true @@ -18030,6 +18144,12 @@ packages: dependencies: utila: 0.4.0 + /dom-helpers@3.4.0: + resolution: {integrity: sha512-LnuPJ+dwqKDIyotW1VzmOZ5TONUN7CwkCR5hrgawTUbkBGYdeoNLZo6nNfGkCrjtE1nXXaj7iMMpDa8/d9WoIA==} + dependencies: + '@babel/runtime': 7.21.0 + dev: false + /dom-helpers@5.2.1: resolution: {integrity: sha512-nRCa7CK3VTrM2NmGkIy4cbK7IZlgBE/PYMn55rrXefr5xXDP0LdtfPnblFDoVdcAfslJ7or6iqAUnx0CCGIWQA==} dependencies: @@ -19473,6 +19593,10 @@ packages: resolution: {integrity: sha512-xJuoT5+L99XlZ8twedaRf6Ax2TgQVxvgZOYoPKqZufmJib0tL2tegPBOZb1pVNgIhlqDlA0eO0c3wBvQcmzx4w==} dev: true + /fast-equals@4.0.3: + resolution: {integrity: sha512-G3BSX9cfKttjr+2o1O22tYMLq0DPluZnYtq1rXumE1SpL/F/SLIfHx08WYQoWSIpeMYf8sRbJ8++71+v6Pnxfg==} + dev: false + /fast-glob@2.2.7: resolution: {integrity: sha512-g1KuQwHOZAmOZMuBtHdxDtju+T2RT8jgCC9aANsbpdiDDTSnjgfuVsIBNKbUeJI3oKMRExcfNDtJl4OhbffMsw==} engines: {node: '>=4.0.0'} @@ -22038,6 +22162,11 @@ packages: has: 1.0.3 side-channel: 1.0.4 + /internmap@2.0.3: + resolution: {integrity: sha512-5Hh7Y1wQbvY5ooGgPbDaL5iYLAPzMTUrjMulskHLH6wnv/A+1q5rgEaiuqEjB+oxGXIVZs1FF+R/KPN3ZSQYYg==} + engines: {node: '>=12'} + dev: false + /interpret@1.4.0: resolution: {integrity: sha512-agE4QfB2Lkp9uICn7BAqoscw4SZP9kTE2hxiFI3jBPmXJfdqiahTbUuKGsMoN2GtqL9AxhYioAcVvgsb1HvRbA==} engines: {node: '>= 0.10'} @@ -30225,6 +30354,17 @@ packages: engines: {node: '>=0.10.0'} dev: true + /react-resize-detector@8.1.0(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-S7szxlaIuiy5UqLhLL1KY3aoyGHbZzsTpYal9eYMwCyKqoqoVLCmIgAgNyIM1FhnP2KyBygASJxdhejrzjMb+w==} + peerDependencies: + react: ^16.0.0 || ^17.0.0 || ^18.0.0 + react-dom: ^16.0.0 || ^17.0.0 || ^18.0.0 + dependencies: + lodash: 4.17.21 + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + dev: false + /react-router-config@5.1.1(react-router@5.3.4)(react@17.0.2): resolution: {integrity: sha512-DuanZjaD8mQp1ppHjgnnUnyOlqYXZVjnov/JzFhjLEwd3Z4dYjMSnqrEzzGThH47vpCOqPPwJM2FtthLeJ8Pbg==} peerDependencies: @@ -30299,6 +30439,20 @@ packages: react: 18.2.0 dev: false + /react-smooth@2.0.2(prop-types@15.8.1)(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-pgqSp1q8rAGtF1bXQE0m3CHGLNfZZh5oA5o1tsPLXRHnKtkujMIJ8Ws5nO1mTySZf1c4vgwlEk+pHi3Ln6eYLw==} + peerDependencies: + prop-types: ^15.6.0 + react: ^15.0.0 || ^16.0.0 || ^17.0.0 || ^18.0.0 + react-dom: ^15.0.0 || ^16.0.0 || ^17.0.0 || ^18.0.0 + dependencies: + fast-equals: 4.0.3 + prop-types: 15.8.1 + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + react-transition-group: 2.9.0(react-dom@18.2.0)(react@18.2.0) + dev: false + /react-split@2.0.14(react@18.2.0): resolution: {integrity: sha512-bKWydgMgaKTg/2JGQnaJPg51T6dmumTWZppFgEbbY0Fbme0F5TuatAScCLaqommbGQQf/ZT1zaejuPDriscISA==} peerDependencies: @@ -30337,6 +30491,20 @@ packages: - '@types/react' dev: false + /react-transition-group@2.9.0(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-+HzNTCHpeQyl4MJ/bdE0u6XRMe9+XG/+aL4mCxVN4DnPBQ0/5bfHWPDuOZUzYdMj94daZaZdCCc1Dzt9R/xSSg==} + peerDependencies: + react: '>=15.0.0' + react-dom: '>=15.0.0' + dependencies: + dom-helpers: 3.4.0 + loose-envify: 1.4.0 + prop-types: 15.8.1 + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + react-lifecycles-compat: 3.0.4 + dev: false + /react-transition-group@4.4.5(react-dom@18.2.0)(react@18.2.0): resolution: {integrity: sha512-pZcd1MCJoiKiBR2NRxeCRg13uCXbydPnmB4EOeRrY7480qNWO8IIgQG6zlDkm6uRMsURXPuKq0GWtiM59a5Q6g==} peerDependencies: @@ -30557,6 +30725,34 @@ packages: tslib: 2.5.0 dev: true + /recharts-scale@0.4.5: + resolution: {integrity: sha512-kivNFO+0OcUNu7jQquLXAxz1FIwZj8nrj+YkOKc5694NbjCvcT6aSZiIzNzd2Kul4o4rTto8QVR9lMNtxD4G1w==} + dependencies: + decimal.js-light: 2.5.1 + dev: false + + /recharts@2.6.2(prop-types@15.8.1)(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-dVhNfgI21LlF+4AesO3mj+i+9YdAAjoGaDWIctUgH/G2iy14YVtb/DSUeic77xr19rbKCiq+pQGfeg2kJQDHig==} + engines: {node: '>=12'} + peerDependencies: + prop-types: ^15.6.0 + react: ^16.0.0 || ^17.0.0 || ^18.0.0 + react-dom: ^16.0.0 || ^17.0.0 || ^18.0.0 + dependencies: + classnames: 2.3.2 + eventemitter3: 4.0.7 + lodash: 4.17.21 + prop-types: 15.8.1 + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + react-is: 16.13.1 + react-resize-detector: 8.1.0(react-dom@18.2.0)(react@18.2.0) + react-smooth: 2.0.2(prop-types@15.8.1)(react-dom@18.2.0)(react@18.2.0) + recharts-scale: 0.4.5 + reduce-css-calc: 2.1.8 + victory-vendor: 36.6.10 + dev: false + /rechoir@0.6.2: resolution: {integrity: sha512-HFM8rkZ+i3zrV+4LQjwQ0W+ez98pApMGM3HUrN04j3CqzPOzl9nmP15Y8YXNm8QHGv/eacOVEjqhmWpkRV0NAw==} engines: {node: '>= 0.10'} @@ -34351,8 +34547,8 @@ packages: domino: 2.1.6 dev: false - /tushan@0.2.3(ts-node@10.9.1): - resolution: {integrity: sha512-ac45lQIM5jyPmu2rFpOM3QDyx6MNnL+um0NMl+u2YMOIDS86ygUYhEoH+6pLYQDRQtPkKmVsTu9EUEFHMp0/4Q==} + /tushan@0.2.4(prop-types@15.8.1)(ts-node@10.9.1): + resolution: {integrity: sha512-IcWNjk1HeGGZq3k4ERozgjDgXolu1wTibvK7x5OP8ONc0xGNSqRvS0IwObl4YvvI+e7qJ+YE22LsQgIxF4cy5A==} dependencies: '@arco-design/web-react': 2.47.1(@types/react@18.0.20)(react-dom@18.2.0)(react@18.2.0) '@tanstack/react-query': 4.29.3(react-dom@18.2.0)(react@18.2.0) @@ -34364,6 +34560,7 @@ packages: axios: 0.27.2 clsx: 1.2.1 immer: 9.0.21 + jsonexport: 3.2.0 lodash: 4.17.21 postcss: 8.4.21 qs: 6.11.1 @@ -34373,6 +34570,7 @@ packages: react-json-view: 1.21.3(@types/react@18.0.20)(react-dom@18.2.0)(react@18.2.0) react-router: 6.11.0(react@18.2.0) react-router-dom: 6.11.0(react-dom@18.2.0)(react@18.2.0) + recharts: 2.6.2(prop-types@15.8.1)(react-dom@18.2.0)(react@18.2.0) styled-components: 5.3.10(react-dom@18.2.0)(react-is@18.2.0)(react@18.2.0) tailwindcss: 3.3.1(postcss@8.4.21)(ts-node@10.9.1) url-regex: 5.0.0 @@ -34380,6 +34578,7 @@ packages: transitivePeerDependencies: - debug - encoding + - prop-types - react-native - ts-node dev: false @@ -35294,6 +35493,25 @@ packages: unist-util-stringify-position: 3.0.3 vfile-message: 3.1.4 + /victory-vendor@36.6.10: + resolution: {integrity: sha512-7YqYGtsA4mByokBhCjk+ewwPhUfzhR1I3Da6/ZsZUv/31ceT77RKoaqrxRq5Ki+9we4uzf7+A+7aG2sfYhm7nA==} + dependencies: + '@types/d3-array': 3.0.4 + '@types/d3-ease': 3.0.0 + '@types/d3-interpolate': 3.0.1 + '@types/d3-scale': 4.0.3 + '@types/d3-shape': 3.1.1 + '@types/d3-time': 3.0.0 + '@types/d3-timer': 3.0.0 + d3-array: 3.2.3 + d3-ease: 3.0.1 + d3-interpolate: 3.0.1 + d3-scale: 4.0.2 + d3-shape: 3.2.0 + d3-time: 3.1.0 + d3-timer: 3.0.1 + dev: false + /vinyl-fs@3.0.3: resolution: {integrity: sha512-vIu34EkyNyJxmP0jscNzWBSygh7VWhqun6RmqVfXePrOwi9lhvRs//dOaGOTRUQr4tx7/zd26Tk5WeSVZitgng==} engines: {node: '>= 0.10'} diff --git a/server/admin-next/package.json b/server/admin-next/package.json index 91932672..6847e315 100644 --- a/server/admin-next/package.json +++ b/server/admin-next/package.json @@ -5,13 +5,14 @@ "author": "moonrailgun", "scripts": { "dev": "nodemon", - "start": "NODE_ENV=production ts-node src/server/index.ts", - "build": "vite build" + "start": "NODE_ENV=production node dist/admin-next/src/server/index.js", + "build": "pnpm build:client && pnpm build:server", + "build:client": "vite build", + "build:server": "tsc -p tsconfig.server.json" }, "dependencies": { "@fastify/busboy": "^1.1.0", "axios": "^1.4.0", - "body-parser": "^1.20.1", "compression": "^1.7.4", "express": "^4.18.2", "express-mongoose-ra-json-server": "^0.1.0", @@ -23,11 +24,10 @@ "react": "^18.2.0", "react-dom": "^18.2.0", "tailchat-server-sdk": "workspace:^", - "tushan": "^0.2.3", + "tushan": "^0.2.4", "vite-express": "^0.5.4" }, "devDependencies": { - "@types/body-parser": "^1.19.2", "@types/compression": "^1.7.2", "@types/express": "^4.17.15", "@types/md5": "^2.3.2", diff --git a/server/admin-next/src/server/index.ts b/server/admin-next/src/server/index.ts index 4068f843..52849dfb 100644 --- a/server/admin-next/src/server/index.ts +++ b/server/admin-next/src/server/index.ts @@ -3,7 +3,6 @@ import ViteExpress from 'vite-express'; import mongoose from 'mongoose'; import compression from 'compression'; import morgan from 'morgan'; -import bodyParser from 'body-parser'; import path from 'path'; import dotenv from 'dotenv'; dotenv.config({ path: path.resolve(__dirname, '../../../.env') }); @@ -27,7 +26,7 @@ mongoose.connect(process.env.MONGO_URL, (error: any) => { }); app.use(compression()); -app.use(bodyParser()); +app.use(express.json()); // http://expressjs.com/en/advanced/best-practice-security.html#at-a-minimum-disable-x-powered-by-header app.disable('x-powered-by'); @@ -51,6 +50,12 @@ app.use((err: any, req: any, res: any, next: any) => { res.json({ error: err.message }); }); +if (process.env.NODE_ENV === 'production') { + ViteExpress.config({ + mode: 'production', + }); +} + ViteExpress.listen(app, port, () => console.log( `Server is listening on port ${port}, visit with: http://localhost:${port}/admin/` diff --git a/server/admin-next/tsconfig.server.json b/server/admin-next/tsconfig.server.json new file mode 100644 index 00000000..7d15171e --- /dev/null +++ b/server/admin-next/tsconfig.server.json @@ -0,0 +1,20 @@ +{ + "extends": "./tsconfig.json", + "include": ["./src/server/**/*.ts", "../models/**/*.ts"], + "exclude": ["node_modules/**/*", "dist"], + "compilerOptions": { + "rootDirs": ["./", "../"], + "outDir": "./dist", + "skipLibCheck": true, + "isolatedModules": true, + "esModuleInterop": true, + "moduleResolution": "node", + "resolveJsonModule": true, + "target": "ES2019", + "allowJs": true, + "forceConsistentCasingInFileNames": true, + "importsNotUsedAsValues": "error", + "experimentalDecorators": true, + "noEmit": false + } +}