Compare commits
10
Commits
9165188100
...
3975bbed73
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
3975bbed73 | ||
|
|
1e478c2eaa | ||
|
|
349760b60c | ||
|
|
af3fcbea96 | ||
|
|
127f491167 | ||
|
|
ad6387e49e | ||
|
|
c1c7eb006b | ||
|
|
5dd00c310f | ||
|
|
1f51c330dd | ||
|
|
bd99fc8e81 |
@@ -0,0 +1,15 @@
|
|||||||
|
# 服务器配置
|
||||||
|
PORT=3501
|
||||||
|
NODE_ENV=development
|
||||||
|
|
||||||
|
# JWT 密钥(生产环境必须修改)
|
||||||
|
JWT_SECRET=your-secret-key-here
|
||||||
|
|
||||||
|
# 数据库路径
|
||||||
|
DB_PATH=./accountbook.db
|
||||||
|
|
||||||
|
# 日志级别
|
||||||
|
LOG_LEVEL=info
|
||||||
|
|
||||||
|
# 生产环境允许的域名(逗号分隔)
|
||||||
|
ALLOWED_ORIGINS=https://yourdomain.com,https://www.yourdomain.com
|
||||||
@@ -0,0 +1,7 @@
|
|||||||
|
node_modules/
|
||||||
|
frontend/node_modules/
|
||||||
|
frontend/.next/
|
||||||
|
logs/
|
||||||
|
*.log
|
||||||
|
accountbook.db
|
||||||
|
.worktrees/
|
||||||
@@ -0,0 +1,42 @@
|
|||||||
|
module.exports = {
|
||||||
|
root: true,
|
||||||
|
env: {
|
||||||
|
node: true,
|
||||||
|
es2021: true,
|
||||||
|
jest: true,
|
||||||
|
browser: true,
|
||||||
|
},
|
||||||
|
extends: [
|
||||||
|
'eslint:recommended',
|
||||||
|
'plugin:react/recommended',
|
||||||
|
'plugin:react-hooks/recommended',
|
||||||
|
],
|
||||||
|
parserOptions: {
|
||||||
|
ecmaVersion: 'latest',
|
||||||
|
sourceType: 'module',
|
||||||
|
ecmaFeatures: {
|
||||||
|
jsx: true,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
settings: {
|
||||||
|
react: {
|
||||||
|
version: 'detect',
|
||||||
|
},
|
||||||
|
},
|
||||||
|
rules: {
|
||||||
|
'no-console': 'off',
|
||||||
|
'no-unused-vars': ['error', { argsIgnorePattern: '^_' }],
|
||||||
|
'prefer-const': 'error',
|
||||||
|
'no-var': 'error',
|
||||||
|
'react/react-in-jsx-scope': 'off',
|
||||||
|
'react/prop-types': 'off',
|
||||||
|
},
|
||||||
|
overrides: [
|
||||||
|
{
|
||||||
|
files: ['**/*.js'],
|
||||||
|
rules: {
|
||||||
|
'react/no-unknown-property': ['error', { ignore: ['class'] }],
|
||||||
|
},
|
||||||
|
},
|
||||||
|
],
|
||||||
|
};
|
||||||
@@ -15,6 +15,7 @@ node_modules/
|
|||||||
# Build output
|
# Build output
|
||||||
dist/
|
dist/
|
||||||
build/
|
build/
|
||||||
|
frontend/.next/
|
||||||
|
|
||||||
# IDE
|
# IDE
|
||||||
.idea/
|
.idea/
|
||||||
|
|||||||
@@ -0,0 +1,9 @@
|
|||||||
|
{
|
||||||
|
"semi": true,
|
||||||
|
"singleQuote": true,
|
||||||
|
"tabWidth": 2,
|
||||||
|
"trailingComma": "es5",
|
||||||
|
"printWidth": 100,
|
||||||
|
"bracketSpacing": true,
|
||||||
|
"arrowParens": "always"
|
||||||
|
}
|
||||||
@@ -0,0 +1,25 @@
|
|||||||
|
# 更新日志
|
||||||
|
|
||||||
|
## [1.1.0] - 2026-03-18
|
||||||
|
|
||||||
|
### 新增
|
||||||
|
- 后端模块化重构,拆分单体 server.js
|
||||||
|
- 数据库迁移系统
|
||||||
|
- 统一错误处理机制
|
||||||
|
- 数据库索引优化
|
||||||
|
- SWR 数据获取和缓存
|
||||||
|
- 乐观更新支持
|
||||||
|
- 错误边界组件
|
||||||
|
- ESLint + Prettier 配置
|
||||||
|
- Jest 测试框架
|
||||||
|
|
||||||
|
### 优化
|
||||||
|
- API 错误响应格式统一
|
||||||
|
- 前端数据获取性能优化
|
||||||
|
- 代码质量和一致性检查
|
||||||
|
|
||||||
|
### 开发体验
|
||||||
|
- 新增 `npm run dev` 同时启动前后端
|
||||||
|
- 新增 `npm run migrate` 数据库迁移
|
||||||
|
- 新增 `npm run lint` 代码检查
|
||||||
|
- 新增 `npm test` 运行测试
|
||||||
@@ -203,3 +203,43 @@ npm run dev
|
|||||||
```
|
```
|
||||||
|
|
||||||
访问 http://你的IP:3500
|
访问 http://你的IP:3500
|
||||||
|
|
||||||
|
## 9. 项目结构
|
||||||
|
|
||||||
|
### 后端目录结构
|
||||||
|
```
|
||||||
|
server/
|
||||||
|
├── index.js # 入口文件
|
||||||
|
├── config/
|
||||||
|
│ └── database.js # 数据库配置
|
||||||
|
├── middleware/
|
||||||
|
│ ├── auth.js # 认证中间件
|
||||||
|
│ └── errorHandler.js # 错误处理
|
||||||
|
├── routes/
|
||||||
|
│ ├── auth.js # 认证路由
|
||||||
|
│ ├── records.js # 账目路由
|
||||||
|
│ ├── stats.js # 统计路由
|
||||||
|
│ ├── recurring.js # 周期性账单
|
||||||
|
│ ├── categories.js # 分类路由
|
||||||
|
│ ├── export.js # 导入导出
|
||||||
|
│ └── search.js # 搜索路由
|
||||||
|
├── utils/
|
||||||
|
│ └── validators.js # 验证函数
|
||||||
|
└── db/
|
||||||
|
├── migrations/ # 数据库迁移
|
||||||
|
└── migrate.js # 迁移脚本
|
||||||
|
```
|
||||||
|
|
||||||
|
### 前端优化
|
||||||
|
- 使用 SWR 进行数据获取和缓存
|
||||||
|
- 乐观更新支持
|
||||||
|
- 错误边界组件
|
||||||
|
- 统一加载状态
|
||||||
|
|
||||||
|
### 新增功能
|
||||||
|
- 数据库迁移系统 (`npm run migrate`)
|
||||||
|
- 结构化日志
|
||||||
|
- 统一错误处理
|
||||||
|
- API 请求验证
|
||||||
|
- 数据库索引优化
|
||||||
|
|
||||||
|
|||||||
File diff suppressed because it is too large
Load Diff
@@ -1 +0,0 @@
|
|||||||
qLhTs8_S85rjOOeVUp07g
|
|
||||||
@@ -1,72 +0,0 @@
|
|||||||
{
|
|
||||||
"polyfillFiles": [
|
|
||||||
"static/chunks/polyfills-42372ed130431b0a.js"
|
|
||||||
],
|
|
||||||
"devFiles": [],
|
|
||||||
"ampDevFiles": [],
|
|
||||||
"lowPriorityFiles": [
|
|
||||||
"static/qLhTs8_S85rjOOeVUp07g/_buildManifest.js",
|
|
||||||
"static/qLhTs8_S85rjOOeVUp07g/_ssgManifest.js"
|
|
||||||
],
|
|
||||||
"rootMainFiles": [],
|
|
||||||
"pages": {
|
|
||||||
"/": [
|
|
||||||
"static/chunks/webpack-8fa1640cc84ba8fe.js",
|
|
||||||
"static/chunks/framework-64ad27b21261a9ce.js",
|
|
||||||
"static/chunks/main-aefbcb23b1606112.js",
|
|
||||||
"static/chunks/pages/index-9134a1c15f8e7e73.js"
|
|
||||||
],
|
|
||||||
"/_app": [
|
|
||||||
"static/chunks/webpack-8fa1640cc84ba8fe.js",
|
|
||||||
"static/chunks/framework-64ad27b21261a9ce.js",
|
|
||||||
"static/chunks/main-aefbcb23b1606112.js",
|
|
||||||
"static/css/a115fcea0d441c48.css",
|
|
||||||
"static/chunks/pages/_app-be10d8e0e3953b07.js"
|
|
||||||
],
|
|
||||||
"/_error": [
|
|
||||||
"static/chunks/webpack-8fa1640cc84ba8fe.js",
|
|
||||||
"static/chunks/framework-64ad27b21261a9ce.js",
|
|
||||||
"static/chunks/main-aefbcb23b1606112.js",
|
|
||||||
"static/chunks/pages/_error-7a92967bea80186d.js"
|
|
||||||
],
|
|
||||||
"/categories": [
|
|
||||||
"static/chunks/webpack-8fa1640cc84ba8fe.js",
|
|
||||||
"static/chunks/framework-64ad27b21261a9ce.js",
|
|
||||||
"static/chunks/main-aefbcb23b1606112.js",
|
|
||||||
"static/chunks/pages/categories-53ccc6325e13ffd1.js"
|
|
||||||
],
|
|
||||||
"/login": [
|
|
||||||
"static/chunks/webpack-8fa1640cc84ba8fe.js",
|
|
||||||
"static/chunks/framework-64ad27b21261a9ce.js",
|
|
||||||
"static/chunks/main-aefbcb23b1606112.js",
|
|
||||||
"static/chunks/pages/login-f50164aa2a6805b4.js"
|
|
||||||
],
|
|
||||||
"/recurring": [
|
|
||||||
"static/chunks/webpack-8fa1640cc84ba8fe.js",
|
|
||||||
"static/chunks/framework-64ad27b21261a9ce.js",
|
|
||||||
"static/chunks/main-aefbcb23b1606112.js",
|
|
||||||
"static/chunks/pages/recurring-560011bee3956d16.js"
|
|
||||||
],
|
|
||||||
"/search": [
|
|
||||||
"static/chunks/webpack-8fa1640cc84ba8fe.js",
|
|
||||||
"static/chunks/framework-64ad27b21261a9ce.js",
|
|
||||||
"static/chunks/main-aefbcb23b1606112.js",
|
|
||||||
"static/chunks/pages/search-3f7f0eb3485675fc.js"
|
|
||||||
],
|
|
||||||
"/settings": [
|
|
||||||
"static/chunks/webpack-8fa1640cc84ba8fe.js",
|
|
||||||
"static/chunks/framework-64ad27b21261a9ce.js",
|
|
||||||
"static/chunks/main-aefbcb23b1606112.js",
|
|
||||||
"static/chunks/pages/settings-bb02e29d5162e9fa.js"
|
|
||||||
],
|
|
||||||
"/stats": [
|
|
||||||
"static/chunks/webpack-8fa1640cc84ba8fe.js",
|
|
||||||
"static/chunks/framework-64ad27b21261a9ce.js",
|
|
||||||
"static/chunks/main-aefbcb23b1606112.js",
|
|
||||||
"static/chunks/ee8b1517-5dfbbb6838544537.js",
|
|
||||||
"static/chunks/925-ca8bea7fb2a62185.js",
|
|
||||||
"static/chunks/pages/stats-656db72deae83243.js"
|
|
||||||
]
|
|
||||||
},
|
|
||||||
"ampFirstPages": []
|
|
||||||
}
|
|
||||||
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
@@ -1 +0,0 @@
|
|||||||
{"version":1,"hasExportPathMap":false,"exportTrailingSlash":false,"isNextImageImported":false}
|
|
||||||
@@ -1 +0,0 @@
|
|||||||
{"version":1,"images":{"deviceSizes":[640,750,828,1080,1200,1920,2048,3840],"imageSizes":[16,32,48,64,96,128,256,384],"path":"/_next/image","loader":"default","loaderFile":"","domains":[],"disableStaticImages":false,"minimumCacheTTL":60,"formats":["image/webp"],"dangerouslyAllowSVG":false,"contentSecurityPolicy":"script-src 'none'; frame-src 'none'; sandbox;","contentDispositionType":"inline","remotePatterns":[],"unoptimized":false,"sizes":[640,750,828,1080,1200,1920,2048,3840,16,32,48,64,96,128,256,384]}}
|
|
||||||
@@ -1 +0,0 @@
|
|||||||
{"version":1,"files":["../node_modules/styled-jsx/index.js","../node_modules/styled-jsx/package.json","../node_modules/styled-jsx/dist/index/index.js","../node_modules/react/package.json","../node_modules/react/index.js","../node_modules/client-only/package.json","../node_modules/react/cjs/react.production.min.js","../node_modules/client-only/index.js","../node_modules/styled-jsx/style.js","../node_modules/next/dist/compiled/next-server/server.runtime.prod.js","../node_modules/next/package.json","../node_modules/next/dist/server/body-streams.js","../node_modules/next/dist/lib/constants.js","../node_modules/next/dist/lib/picocolors.js","../node_modules/next/dist/shared/lib/constants.js","../node_modules/next/dist/server/web/utils.js","../node_modules/next/dist/client/components/app-router-headers.js","../node_modules/next/dist/server/lib/trace/tracer.js","../node_modules/next/dist/server/lib/trace/constants.js","../node_modules/next/dist/shared/lib/modern-browserslist-target.js","../node_modules/next/dist/compiled/ws/package.json","../node_modules/next/dist/compiled/node-html-parser/package.json","../node_modules/next/dist/compiled/lru-cache/package.json","../node_modules/next/dist/shared/lib/runtime-config.external.js","../node_modules/@swc/helpers/_/_interop_require_default/package.json","../node_modules/next/dist/compiled/ws/index.js","../node_modules/next/dist/compiled/node-html-parser/index.js","../node_modules/next/dist/compiled/lru-cache/index.js","../node_modules/next/dist/compiled/@opentelemetry/api/package.json","../node_modules/@swc/helpers/package.json","../node_modules/next/dist/compiled/jsonwebtoken/package.json","../node_modules/@swc/helpers/cjs/_interop_require_default.cjs","../node_modules/next/dist/compiled/@opentelemetry/api/index.js","../node_modules/next/dist/compiled/jsonwebtoken/index.js","../node_modules/next/dist/client/components/async-local-storage.js","../node_modules/next/dist/shared/lib/error-source.js","../node_modules/next/dist/compiled/debug/package.json","../node_modules/next/dist/lib/semver-noop.js","../node_modules/next/dist/client/components/static-generation-async-storage.external.js","../node_modules/next/dist/compiled/debug/index.js","../node_modules/next/dist/client/components/static-generation-async-storage-instance.js","../node_modules/next/dist/server/future/route-modules/app-page/vendored/contexts/amp-context.js","../node_modules/next/dist/server/future/route-modules/app-page/vendored/contexts/app-router-context.js","../node_modules/next/dist/server/future/route-modules/app-page/vendored/contexts/entrypoints.js","../node_modules/next/dist/server/future/route-modules/app-page/vendored/contexts/head-manager-context.js","../node_modules/next/dist/server/future/route-modules/app-page/vendored/contexts/hooks-client-context.js","../node_modules/next/dist/server/future/route-modules/app-page/vendored/contexts/html-context.js","../node_modules/next/dist/server/future/route-modules/app-page/vendored/contexts/image-config-context.js","../node_modules/next/dist/server/future/route-modules/app-page/vendored/contexts/loadable-context.js","../node_modules/next/dist/server/future/route-modules/app-page/vendored/contexts/loadable.js","../node_modules/next/dist/server/future/route-modules/app-page/vendored/contexts/router-context.js","../node_modules/next/dist/server/future/route-modules/app-page/vendored/contexts/server-inserted-html.js","../node_modules/next/dist/server/future/route-modules/app-page/module.compiled.js","../node_modules/next/dist/server/future/route-modules/pages/vendored/contexts/amp-context.js","../node_modules/next/dist/server/future/route-modules/pages/vendored/contexts/app-router-context.js","../node_modules/next/dist/server/future/route-modules/pages/vendored/contexts/entrypoints.js","../node_modules/next/dist/server/future/route-modules/pages/vendored/contexts/head-manager-context.js","../node_modules/next/dist/server/future/route-modules/pages/vendored/contexts/hooks-client-context.js","../node_modules/next/dist/server/future/route-modules/pages/vendored/contexts/html-context.js","../node_modules/next/dist/server/future/route-modules/pages/vendored/contexts/image-config-context.js","../node_modules/next/dist/server/future/route-modules/pages/vendored/contexts/loadable-context.js","../node_modules/next/dist/server/future/route-modules/pages/vendored/contexts/loadable.js","../node_modules/next/dist/server/future/route-modules/pages/vendored/contexts/router-context.js","../node_modules/next/dist/server/future/route-modules/pages/vendored/contexts/server-inserted-html.js","../node_modules/next/dist/server/future/route-modules/pages/module.compiled.js"]}
|
|
||||||
File diff suppressed because one or more lines are too long
@@ -1 +0,0 @@
|
|||||||
{"type": "commonjs"}
|
|
||||||
@@ -1 +0,0 @@
|
|||||||
{"version":4,"routes":{},"dynamicRoutes":{},"preview":{"previewModeId":"48b81c455a5b7cce3d806d7026b56964","previewModeSigningKey":"66b57b635f1afb73fff9bf508ff8dbef304766f3a4e41b31e0ffec2f72860915","previewModeEncryptionKey":"38fba3ca573e476136b9b934594a1c12dd88e6e11b789ed305cffe9a0b2c6111"},"notFoundRoutes":[]}
|
|
||||||
@@ -1 +0,0 @@
|
|||||||
{}
|
|
||||||
@@ -1 +0,0 @@
|
|||||||
{"version":1,"config":{"env":{},"webpack":null,"eslint":{"ignoreDuringBuilds":false},"typescript":{"ignoreBuildErrors":false,"tsconfigPath":"tsconfig.json"},"distDir":".next","cleanDistDir":true,"assetPrefix":"","cacheMaxMemorySize":52428800,"configOrigin":"next.config.js","useFileSystemPublicRoutes":true,"generateEtags":true,"pageExtensions":["tsx","ts","jsx","js"],"poweredByHeader":true,"compress":true,"analyticsId":"","images":{"deviceSizes":[640,750,828,1080,1200,1920,2048,3840],"imageSizes":[16,32,48,64,96,128,256,384],"path":"/_next/image","loader":"default","loaderFile":"","domains":[],"disableStaticImages":false,"minimumCacheTTL":60,"formats":["image/webp"],"dangerouslyAllowSVG":false,"contentSecurityPolicy":"script-src 'none'; frame-src 'none'; sandbox;","contentDispositionType":"inline","remotePatterns":[],"unoptimized":false},"devIndicators":{"buildActivity":true,"buildActivityPosition":"bottom-right"},"onDemandEntries":{"maxInactiveAge":60000,"pagesBufferLength":5},"amp":{"canonicalBase":""},"basePath":"","sassOptions":{},"trailingSlash":false,"i18n":null,"productionBrowserSourceMaps":false,"optimizeFonts":true,"excludeDefaultMomentLocales":true,"serverRuntimeConfig":{},"publicRuntimeConfig":{},"reactProductionProfiling":false,"reactStrictMode":null,"httpAgentOptions":{"keepAlive":true},"outputFileTracing":true,"staticPageGenerationTimeout":60,"swcMinify":true,"modularizeImports":{"@mui/icons-material":{"transform":"@mui/icons-material/{{member}}"},"lodash":{"transform":"lodash/{{member}}"}},"experimental":{"multiZoneDraftMode":false,"prerenderEarlyExit":false,"serverMinification":true,"serverSourceMaps":false,"linkNoTouchStart":false,"caseSensitiveRoutes":false,"clientRouterFilter":true,"clientRouterFilterRedirects":false,"fetchCacheKeyPrefix":"","middlewarePrefetch":"flexible","optimisticClientCache":true,"manualClientBasePath":false,"cpus":3,"memoryBasedWorkersCount":false,"isrFlushToDisk":true,"workerThreads":false,"optimizeCss":false,"nextScriptWorkers":false,"scrollRestoration":false,"externalDir":false,"disableOptimizedLoading":false,"gzipSize":true,"craCompat":false,"esmExternals":true,"fullySpecified":false,"outputFileTracingRoot":"/opt/accountbook/frontend","swcTraceProfiling":false,"forceSwcTransforms":false,"largePageDataBytes":128000,"adjustFontFallbacks":false,"adjustFontFallbacksWithSizeAdjust":false,"typedRoutes":false,"instrumentationHook":false,"bundlePagesExternals":false,"parallelServerCompiles":false,"parallelServerBuildTraces":false,"ppr":false,"missingSuspenseWithCSRBailout":true,"optimizeServerReact":true,"useEarlyImport":false,"staleTimes":{"dynamic":30,"static":300},"optimizePackageImports":["lucide-react","date-fns","lodash-es","ramda","antd","react-bootstrap","ahooks","@ant-design/icons","@headlessui/react","@headlessui-float/react","@heroicons/react/20/solid","@heroicons/react/24/solid","@heroicons/react/24/outline","@visx/visx","@tremor/react","rxjs","@mui/material","@mui/icons-material","recharts","react-use","@material-ui/core","@material-ui/icons","@tabler/icons-react","mui-core","react-icons/ai","react-icons/bi","react-icons/bs","react-icons/cg","react-icons/ci","react-icons/di","react-icons/fa","react-icons/fa6","react-icons/fc","react-icons/fi","react-icons/gi","react-icons/go","react-icons/gr","react-icons/hi","react-icons/hi2","react-icons/im","react-icons/io","react-icons/io5","react-icons/lia","react-icons/lib","react-icons/lu","react-icons/md","react-icons/pi","react-icons/ri","react-icons/rx","react-icons/si","react-icons/sl","react-icons/tb","react-icons/tfi","react-icons/ti","react-icons/vsc","react-icons/wi"],"trustHostHeader":false,"isExperimentalCompile":false},"configFileName":"next.config.js","_originalRewrites":{"beforeFiles":[],"afterFiles":[{"source":"/api/:path*","destination":"http://localhost:3501/api/:path*"}],"fallback":[]}},"appDir":"/opt/accountbook/frontend","relativeAppDir":"","files":[".next/routes-manifest.json",".next/server/pages-manifest.json",".next/build-manifest.json",".next/prerender-manifest.json",".next/server/middleware-manifest.json",".next/server/middleware-build-manifest.js",".next/server/middleware-react-loadable-manifest.js",".next/react-loadable-manifest.json",".next/server/font-manifest.json",".next/BUILD_ID",".next/server/next-font-manifest.js",".next/server/next-font-manifest.json"],"ignore":["node_modules/next/dist/compiled/@ampproject/toolbox-optimizer/**/*"]}
|
|
||||||
@@ -1 +0,0 @@
|
|||||||
{"version":3,"pages404":true,"caseSensitive":false,"basePath":"","redirects":[{"source":"/:path+/","destination":"/:path+","internal":true,"statusCode":308,"regex":"^(?:/((?:[^/]+?)(?:/(?:[^/]+?))*))/$"}],"headers":[],"dynamicRoutes":[],"staticRoutes":[{"page":"/","regex":"^/(?:/)?$","routeKeys":{},"namedRegex":"^/(?:/)?$"},{"page":"/categories","regex":"^/categories(?:/)?$","routeKeys":{},"namedRegex":"^/categories(?:/)?$"},{"page":"/login","regex":"^/login(?:/)?$","routeKeys":{},"namedRegex":"^/login(?:/)?$"},{"page":"/recurring","regex":"^/recurring(?:/)?$","routeKeys":{},"namedRegex":"^/recurring(?:/)?$"},{"page":"/search","regex":"^/search(?:/)?$","routeKeys":{},"namedRegex":"^/search(?:/)?$"},{"page":"/settings","regex":"^/settings(?:/)?$","routeKeys":{},"namedRegex":"^/settings(?:/)?$"},{"page":"/stats","regex":"^/stats(?:/)?$","routeKeys":{},"namedRegex":"^/stats(?:/)?$"}],"dataRoutes":[],"rsc":{"header":"RSC","varyHeader":"RSC, Next-Router-State-Tree, Next-Router-Prefetch","prefetchHeader":"Next-Router-Prefetch","didPostponeHeader":"x-nextjs-postponed","contentTypeHeader":"text/x-component","suffix":".rsc","prefetchSuffix":".prefetch.rsc"},"rewrites":[{"source":"/api/:path*","destination":"http://localhost:3501/api/:path*","regex":"^/api(?:/((?:[^/]+?)(?:/(?:[^/]+?))*))?(?:/)?$"}]}
|
|
||||||
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
@@ -1 +0,0 @@
|
|||||||
[]
|
|
||||||
@@ -1 +0,0 @@
|
|||||||
[]
|
|
||||||
@@ -1 +0,0 @@
|
|||||||
{"version":1,"functions":{}}
|
|
||||||
@@ -1 +0,0 @@
|
|||||||
self.__INTERCEPTION_ROUTE_REWRITE_MANIFEST="[]";
|
|
||||||
@@ -1 +0,0 @@
|
|||||||
self.__BUILD_MANIFEST={polyfillFiles:["static/chunks/polyfills-42372ed130431b0a.js"],devFiles:[],ampDevFiles:[],lowPriorityFiles:[],rootMainFiles:[],pages:{"/":["static/chunks/webpack-8fa1640cc84ba8fe.js","static/chunks/framework-64ad27b21261a9ce.js","static/chunks/main-aefbcb23b1606112.js","static/chunks/pages/index-9134a1c15f8e7e73.js"],"/_app":["static/chunks/webpack-8fa1640cc84ba8fe.js","static/chunks/framework-64ad27b21261a9ce.js","static/chunks/main-aefbcb23b1606112.js","static/css/a115fcea0d441c48.css","static/chunks/pages/_app-be10d8e0e3953b07.js"],"/_error":["static/chunks/webpack-8fa1640cc84ba8fe.js","static/chunks/framework-64ad27b21261a9ce.js","static/chunks/main-aefbcb23b1606112.js","static/chunks/pages/_error-7a92967bea80186d.js"],"/categories":["static/chunks/webpack-8fa1640cc84ba8fe.js","static/chunks/framework-64ad27b21261a9ce.js","static/chunks/main-aefbcb23b1606112.js","static/chunks/pages/categories-53ccc6325e13ffd1.js"],"/login":["static/chunks/webpack-8fa1640cc84ba8fe.js","static/chunks/framework-64ad27b21261a9ce.js","static/chunks/main-aefbcb23b1606112.js","static/chunks/pages/login-f50164aa2a6805b4.js"],"/recurring":["static/chunks/webpack-8fa1640cc84ba8fe.js","static/chunks/framework-64ad27b21261a9ce.js","static/chunks/main-aefbcb23b1606112.js","static/chunks/pages/recurring-560011bee3956d16.js"],"/search":["static/chunks/webpack-8fa1640cc84ba8fe.js","static/chunks/framework-64ad27b21261a9ce.js","static/chunks/main-aefbcb23b1606112.js","static/chunks/pages/search-3f7f0eb3485675fc.js"],"/settings":["static/chunks/webpack-8fa1640cc84ba8fe.js","static/chunks/framework-64ad27b21261a9ce.js","static/chunks/main-aefbcb23b1606112.js","static/chunks/pages/settings-bb02e29d5162e9fa.js"],"/stats":["static/chunks/webpack-8fa1640cc84ba8fe.js","static/chunks/framework-64ad27b21261a9ce.js","static/chunks/main-aefbcb23b1606112.js","static/chunks/ee8b1517-5dfbbb6838544537.js","static/chunks/925-ca8bea7fb2a62185.js","static/chunks/pages/stats-656db72deae83243.js"]},ampFirstPages:[]},self.__BUILD_MANIFEST.lowPriorityFiles=["/static/"+process.env.__NEXT_BUILD_ID+"/_buildManifest.js",,"/static/"+process.env.__NEXT_BUILD_ID+"/_ssgManifest.js"];
|
|
||||||
@@ -1,6 +0,0 @@
|
|||||||
{
|
|
||||||
"version": 3,
|
|
||||||
"middleware": {},
|
|
||||||
"functions": {},
|
|
||||||
"sortedMiddleware": []
|
|
||||||
}
|
|
||||||
@@ -1 +0,0 @@
|
|||||||
self.__REACT_LOADABLE_MANIFEST="{}";
|
|
||||||
@@ -1 +0,0 @@
|
|||||||
self.__NEXT_FONT_MANIFEST='{"pages":{},"app":{},"appUsingSizeAdjust":false,"pagesUsingSizeAdjust":false}';
|
|
||||||
@@ -1 +0,0 @@
|
|||||||
{"pages":{},"app":{},"appUsingSizeAdjust":false,"pagesUsingSizeAdjust":false}
|
|
||||||
@@ -1 +0,0 @@
|
|||||||
{"/_app":"pages/_app.js","/_error":"pages/_error.js","/categories":"pages/categories.html","/":"pages/index.html","/login":"pages/login.html","/recurring":"pages/recurring.html","/search":"pages/search.html","/settings":"pages/settings.html","/stats":"pages/stats.html","/_document":"pages/_document.js","/404":"pages/404.html"}
|
|
||||||
@@ -1 +0,0 @@
|
|||||||
<!DOCTYPE html><html><head><meta charSet="utf-8"/><meta name="viewport" content="width=device-width"/><title>404: This page could not be found</title><meta name="next-head-count" content="3"/><link rel="preload" href="/_next/static/css/a115fcea0d441c48.css" as="style"/><link rel="stylesheet" href="/_next/static/css/a115fcea0d441c48.css" data-n-g=""/><noscript data-n-css=""></noscript><script defer="" nomodule="" src="/_next/static/chunks/polyfills-42372ed130431b0a.js"></script><script src="/_next/static/chunks/webpack-8fa1640cc84ba8fe.js" defer=""></script><script src="/_next/static/chunks/framework-64ad27b21261a9ce.js" defer=""></script><script src="/_next/static/chunks/main-aefbcb23b1606112.js" defer=""></script><script src="/_next/static/chunks/pages/_app-be10d8e0e3953b07.js" defer=""></script><script src="/_next/static/chunks/pages/_error-7a92967bea80186d.js" defer=""></script><script src="/_next/static/qLhTs8_S85rjOOeVUp07g/_buildManifest.js" defer=""></script><script src="/_next/static/qLhTs8_S85rjOOeVUp07g/_ssgManifest.js" defer=""></script></head><body><div id="__next"><div style="font-family:system-ui,"Segoe UI",Roboto,Helvetica,Arial,sans-serif,"Apple Color Emoji","Segoe UI Emoji";height:100vh;text-align:center;display:flex;flex-direction:column;align-items:center;justify-content:center"><div style="line-height:48px"><style>body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}</style><h1 class="next-error-h1" style="display:inline-block;margin:0 20px 0 0;padding-right:23px;font-size:24px;font-weight:500;vertical-align:top">404</h1><div style="display:inline-block"><h2 style="font-size:14px;font-weight:400;line-height:28px">This page could not be found<!-- -->.</h2></div></div></div><div class="toast-stack" aria-live="polite" aria-atomic="true"></div></div><script id="__NEXT_DATA__" type="application/json">{"props":{"pageProps":{"statusCode":404}},"page":"/_error","query":{},"buildId":"qLhTs8_S85rjOOeVUp07g","nextExport":true,"isFallback":false,"gip":true,"scriptLoader":[]}</script></body></html>
|
|
||||||
@@ -1 +0,0 @@
|
|||||||
<!DOCTYPE html><html><head><meta charSet="utf-8"/><meta name="viewport" content="width=device-width"/><title>500: Internal Server Error</title><meta name="next-head-count" content="3"/><link rel="preload" href="/_next/static/css/a115fcea0d441c48.css" as="style"/><link rel="stylesheet" href="/_next/static/css/a115fcea0d441c48.css" data-n-g=""/><noscript data-n-css=""></noscript><script defer="" nomodule="" src="/_next/static/chunks/polyfills-42372ed130431b0a.js"></script><script src="/_next/static/chunks/webpack-8fa1640cc84ba8fe.js" defer=""></script><script src="/_next/static/chunks/framework-64ad27b21261a9ce.js" defer=""></script><script src="/_next/static/chunks/main-aefbcb23b1606112.js" defer=""></script><script src="/_next/static/chunks/pages/_app-be10d8e0e3953b07.js" defer=""></script><script src="/_next/static/chunks/pages/_error-7a92967bea80186d.js" defer=""></script><script src="/_next/static/qLhTs8_S85rjOOeVUp07g/_buildManifest.js" defer=""></script><script src="/_next/static/qLhTs8_S85rjOOeVUp07g/_ssgManifest.js" defer=""></script></head><body><div id="__next"><div style="font-family:system-ui,"Segoe UI",Roboto,Helvetica,Arial,sans-serif,"Apple Color Emoji","Segoe UI Emoji";height:100vh;text-align:center;display:flex;flex-direction:column;align-items:center;justify-content:center"><div style="line-height:48px"><style>body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}</style><h1 class="next-error-h1" style="display:inline-block;margin:0 20px 0 0;padding-right:23px;font-size:24px;font-weight:500;vertical-align:top">500</h1><div style="display:inline-block"><h2 style="font-size:14px;font-weight:400;line-height:28px">Internal Server Error<!-- -->.</h2></div></div></div><div class="toast-stack" aria-live="polite" aria-atomic="true"></div></div><script id="__NEXT_DATA__" type="application/json">{"props":{"pageProps":{"statusCode":500}},"page":"/_error","query":{},"buildId":"qLhTs8_S85rjOOeVUp07g","nextExport":true,"isFallback":false,"gip":true,"scriptLoader":[]}</script></body></html>
|
|
||||||
File diff suppressed because one or more lines are too long
@@ -1 +0,0 @@
|
|||||||
{"version":1,"files":["../../../node_modules/react/cjs/react-jsx-runtime.development.js","../../../node_modules/react/cjs/react-jsx-runtime.production.min.js","../../../node_modules/react/cjs/react.development.js","../../../node_modules/react/cjs/react.production.min.js","../../../node_modules/react/index.js","../../../node_modules/react/jsx-runtime.js","../../../node_modules/react/package.json","../../../package.json","../../../pages/_app.js","../../package.json","../webpack-runtime.js"]}
|
|
||||||
@@ -1 +0,0 @@
|
|||||||
"use strict";(()=>{var e={};e.id=660,e.ids=[660],e.modules={2785:e=>{e.exports=require("next/dist/compiled/next-server/pages.runtime.prod.js")},6689:e=>{e.exports=require("react")},997:e=>{e.exports=require("react/jsx-runtime")},5315:e=>{e.exports=require("path")}};var r=require("../webpack-runtime.js");r.C(e);var s=e=>r(r.s=e),t=r.X(0,[899],()=>s(2899));module.exports=t})();
|
|
||||||
@@ -1 +0,0 @@
|
|||||||
{"version":1,"files":["../../../node_modules/client-only/index.js","../../../node_modules/client-only/package.json","../../../node_modules/next/dist/compiled/@opentelemetry/api/index.js","../../../node_modules/next/dist/compiled/@opentelemetry/api/package.json","../../../node_modules/next/dist/compiled/jsonwebtoken/index.js","../../../node_modules/next/dist/compiled/jsonwebtoken/package.json","../../../node_modules/next/dist/compiled/next-server/pages.runtime.prod.js","../../../node_modules/next/dist/compiled/node-html-parser/index.js","../../../node_modules/next/dist/compiled/node-html-parser/package.json","../../../node_modules/next/dist/lib/semver-noop.js","../../../node_modules/next/dist/pages/_document.js","../../../node_modules/next/dist/server/lib/trace/constants.js","../../../node_modules/next/dist/server/lib/trace/tracer.js","../../../node_modules/next/package.json","../../../node_modules/react-dom/cjs/react-dom-server-legacy.browser.development.js","../../../node_modules/react-dom/cjs/react-dom-server-legacy.browser.production.min.js","../../../node_modules/react-dom/cjs/react-dom-server.browser.development.js","../../../node_modules/react-dom/cjs/react-dom-server.browser.production.min.js","../../../node_modules/react-dom/package.json","../../../node_modules/react-dom/server.browser.js","../../../node_modules/react/cjs/react-jsx-runtime.development.js","../../../node_modules/react/cjs/react-jsx-runtime.production.min.js","../../../node_modules/react/cjs/react.development.js","../../../node_modules/react/cjs/react.production.min.js","../../../node_modules/react/index.js","../../../node_modules/react/jsx-runtime.js","../../../node_modules/react/package.json","../../../node_modules/styled-jsx/dist/index/index.js","../../../node_modules/styled-jsx/index.js","../../../node_modules/styled-jsx/package.json","../../../package.json","../../package.json","../chunks/899.js","../webpack-runtime.js"]}
|
|
||||||
File diff suppressed because one or more lines are too long
@@ -1 +0,0 @@
|
|||||||
{"version":1,"files":["../../../node_modules/client-only/index.js","../../../node_modules/client-only/package.json","../../../node_modules/next/dist/compiled/@opentelemetry/api/index.js","../../../node_modules/next/dist/compiled/@opentelemetry/api/package.json","../../../node_modules/next/dist/compiled/jsonwebtoken/index.js","../../../node_modules/next/dist/compiled/jsonwebtoken/package.json","../../../node_modules/next/dist/compiled/next-server/pages.runtime.prod.js","../../../node_modules/next/dist/compiled/node-html-parser/index.js","../../../node_modules/next/dist/compiled/node-html-parser/package.json","../../../node_modules/next/dist/lib/semver-noop.js","../../../node_modules/next/dist/server/lib/trace/constants.js","../../../node_modules/next/dist/server/lib/trace/tracer.js","../../../node_modules/next/package.json","../../../node_modules/react-dom/cjs/react-dom-server-legacy.browser.development.js","../../../node_modules/react-dom/cjs/react-dom-server-legacy.browser.production.min.js","../../../node_modules/react-dom/cjs/react-dom-server.browser.development.js","../../../node_modules/react-dom/cjs/react-dom-server.browser.production.min.js","../../../node_modules/react-dom/package.json","../../../node_modules/react-dom/server.browser.js","../../../node_modules/react/cjs/react-jsx-runtime.development.js","../../../node_modules/react/cjs/react-jsx-runtime.production.min.js","../../../node_modules/react/cjs/react.development.js","../../../node_modules/react/cjs/react.production.min.js","../../../node_modules/react/index.js","../../../node_modules/react/jsx-runtime.js","../../../node_modules/react/package.json","../../../node_modules/styled-jsx/dist/index/index.js","../../../node_modules/styled-jsx/index.js","../../../node_modules/styled-jsx/package.json","../../package.json","../chunks/899.js","../webpack-runtime.js"]}
|
|
||||||
@@ -1 +0,0 @@
|
|||||||
<!DOCTYPE html><html><head><meta charSet="utf-8"/><meta name="viewport" content="width=device-width"/><meta name="next-head-count" content="2"/><link rel="preload" href="/_next/static/css/a115fcea0d441c48.css" as="style"/><link rel="stylesheet" href="/_next/static/css/a115fcea0d441c48.css" data-n-g=""/><noscript data-n-css=""></noscript><script defer="" nomodule="" src="/_next/static/chunks/polyfills-42372ed130431b0a.js"></script><script src="/_next/static/chunks/webpack-8fa1640cc84ba8fe.js" defer=""></script><script src="/_next/static/chunks/framework-64ad27b21261a9ce.js" defer=""></script><script src="/_next/static/chunks/main-aefbcb23b1606112.js" defer=""></script><script src="/_next/static/chunks/pages/_app-be10d8e0e3953b07.js" defer=""></script><script src="/_next/static/chunks/pages/categories-53ccc6325e13ffd1.js" defer=""></script><script src="/_next/static/qLhTs8_S85rjOOeVUp07g/_buildManifest.js" defer=""></script><script src="/_next/static/qLhTs8_S85rjOOeVUp07g/_ssgManifest.js" defer=""></script></head><body><div id="__next"><div class="app-shell"><header class="app-header app-header--compact app-header--with-content app-header--with-actions"><div class="app-shell__container app-header__inner"><div class="app-header__main"><div class="app-header__text"><h1>分类</h1><p>整理常用分类与图标</p></div></div><div class="app-header__actions"><button type="button" class="icon-button" aria-label="设置"><svg viewBox="0 0 24 24" width="18" height="18" class="" aria-hidden="true" role="presentation" fill="none"><path d="M12 8.5A3.5 3.5 0 1 0 12 15.5A3.5 3.5 0 1 0 12 8.5Z" fill="none" stroke="currentColor" stroke-width="1.8"></path><path d="M19.4 15a1 1 0 0 0 .2 1.1l.1.1a2 2 0 0 1-2.8 2.8l-.1-.1a1 1 0 0 0-1.1-.2 1 1 0 0 0-.6.9V20a2 2 0 0 1-4 0v-.2a1 1 0 0 0-.6-.9 1 1 0 0 0-1.1.2l-.1.1a2 2 0 1 1-2.8-2.8l.1-.1a1 1 0 0 0 .2-1.1 1 1 0 0 0-.9-.6H4a2 2 0 0 1 0-4h.2a1 1 0 0 0 .9-.6 1 1 0 0 0-.2-1.1l-.1-.1a2 2 0 1 1 2.8-2.8l.1.1a1 1 0 0 0 1.1.2 1 1 0 0 0 .6-.9V4a2 2 0 0 1 4 0v.2a1 1 0 0 0 .6.9 1 1 0 0 0 1.1-.2l.1-.1a2 2 0 1 1 2.8 2.8l-.1.1a1 1 0 0 0-.2 1.1 1 1 0 0 0 .9.6H20a2 2 0 0 1 0 4h-.2a1 1 0 0 0-.4 1Z" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"></path></svg></button></div></div></header><main class="app-content"><div class="app-shell__container app-content__inner"><div class="card loading-state">加载中...</div></div></main><nav class="bottom-nav" aria-label="主导航"><div class="app-shell__container bottom-nav__inner"><button type="button" class="bottom-nav__item"><svg viewBox="0 0 24 24" width="20" height="20" class="" aria-hidden="true" role="presentation" fill="none"><path d="M3 10.5 12 3l9 7.5V20a1 1 0 0 1-1 1h-5.5v-6h-5v6H4a1 1 0 0 1-1-1v-9.5Z" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round"></path></svg><span>首页</span></button><button type="button" class="bottom-nav__item"><svg viewBox="0 0 24 24" width="20" height="20" class="" aria-hidden="true" role="presentation" fill="none"><path d="M4 20h16" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round"></path><path d="M7 16v-4" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round"></path><path d="M12 16V8" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round"></path><path d="M17 16v-7" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round"></path></svg><span>统计</span></button><button type="button" class="bottom-nav__item"><svg viewBox="0 0 24 24" width="20" height="20" class="" aria-hidden="true" role="presentation" fill="none"><path d="M17 3l4 4-4 4" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round"></path><path d="M3 7h18" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round"></path><path d="M7 21l-4-4 4-4" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round"></path><path d="M21 17H3" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round"></path></svg><span>周期</span></button><button type="button" class="bottom-nav__item is-active" aria-current="page"><svg viewBox="0 0 24 24" width="20" height="20" class="" aria-hidden="true" role="presentation" fill="none"><path d="M11 4H5a2 2 0 0 0-2 2v6l8.5 8.5a2.1 2.1 0 0 0 3 0l6-6a2.1 2.1 0 0 0 0-3L12 4Z" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linejoin="round"></path><circle cx="7.5" cy="8.5" r="1.2" fill="currentColor"></circle></svg><span>分类</span></button></div></nav></div><div class="toast-stack" aria-live="polite" aria-atomic="true"></div></div><script id="__NEXT_DATA__" type="application/json">{"props":{"pageProps":{}},"page":"/categories","query":{},"buildId":"qLhTs8_S85rjOOeVUp07g","nextExport":true,"autoExport":true,"isFallback":false,"scriptLoader":[]}</script></body></html>
|
|
||||||
@@ -1 +0,0 @@
|
|||||||
{"version":1,"files":["../webpack-runtime.js","../chunks/899.js","../chunks/342.js","../chunks/261.js","../../../package.json"]}
|
|
||||||
File diff suppressed because one or more lines are too long
@@ -1 +0,0 @@
|
|||||||
{"version":1,"files":["../../../node_modules/client-only/index.js","../../../node_modules/client-only/package.json","../../../node_modules/next/dist/compiled/@opentelemetry/api/index.js","../../../node_modules/next/dist/compiled/@opentelemetry/api/package.json","../../../node_modules/next/dist/compiled/jsonwebtoken/index.js","../../../node_modules/next/dist/compiled/jsonwebtoken/package.json","../../../node_modules/next/dist/compiled/next-server/pages.runtime.prod.js","../../../node_modules/next/dist/compiled/node-html-parser/index.js","../../../node_modules/next/dist/compiled/node-html-parser/package.json","../../../node_modules/next/dist/lib/semver-noop.js","../../../node_modules/next/dist/server/lib/trace/constants.js","../../../node_modules/next/dist/server/lib/trace/tracer.js","../../../node_modules/next/package.json","../../../node_modules/react-dom/cjs/react-dom-server-legacy.browser.development.js","../../../node_modules/react-dom/cjs/react-dom-server-legacy.browser.production.min.js","../../../node_modules/react-dom/cjs/react-dom-server.browser.development.js","../../../node_modules/react-dom/cjs/react-dom-server.browser.production.min.js","../../../node_modules/react-dom/cjs/react-dom.development.js","../../../node_modules/react-dom/cjs/react-dom.production.min.js","../../../node_modules/react-dom/index.js","../../../node_modules/react-dom/package.json","../../../node_modules/react-dom/server.browser.js","../../../node_modules/react/cjs/react-jsx-runtime.development.js","../../../node_modules/react/cjs/react-jsx-runtime.production.min.js","../../../node_modules/react/cjs/react.development.js","../../../node_modules/react/cjs/react.production.min.js","../../../node_modules/react/index.js","../../../node_modules/react/jsx-runtime.js","../../../node_modules/react/package.json","../../../node_modules/scheduler/cjs/scheduler.development.js","../../../node_modules/scheduler/cjs/scheduler.production.min.js","../../../node_modules/scheduler/index.js","../../../node_modules/scheduler/package.json","../../../node_modules/styled-jsx/dist/index/index.js","../../../node_modules/styled-jsx/index.js","../../../node_modules/styled-jsx/package.json","../../../package.json","../../package.json","../chunks/261.js","../chunks/342.js","../chunks/899.js","../webpack-runtime.js"]}
|
|
||||||
@@ -1 +0,0 @@
|
|||||||
<!DOCTYPE html><html><head><meta charSet="utf-8"/><meta name="viewport" content="width=device-width"/><meta name="next-head-count" content="2"/><link rel="preload" href="/_next/static/css/a115fcea0d441c48.css" as="style"/><link rel="stylesheet" href="/_next/static/css/a115fcea0d441c48.css" data-n-g=""/><noscript data-n-css=""></noscript><script defer="" nomodule="" src="/_next/static/chunks/polyfills-42372ed130431b0a.js"></script><script src="/_next/static/chunks/webpack-8fa1640cc84ba8fe.js" defer=""></script><script src="/_next/static/chunks/framework-64ad27b21261a9ce.js" defer=""></script><script src="/_next/static/chunks/main-aefbcb23b1606112.js" defer=""></script><script src="/_next/static/chunks/pages/_app-be10d8e0e3953b07.js" defer=""></script><script src="/_next/static/chunks/pages/login-f50164aa2a6805b4.js" defer=""></script><script src="/_next/static/qLhTs8_S85rjOOeVUp07g/_buildManifest.js" defer=""></script><script src="/_next/static/qLhTs8_S85rjOOeVUp07g/_ssgManifest.js" defer=""></script></head><body><div id="__next"><div class="app-shell app-shell--standalone"><header class="app-header app-header--compact app-header--with-content"><div class="app-shell__container app-header__inner"><div class="app-header__main"><div class="app-header__text"><h1>记账本</h1><p>随时记录每一笔收支</p></div></div></div></header><main class="app-content auth-layout"><div class="app-shell__container app-content__inner"><div class="auth-page"><div class="auth-card auth-card--refresh"><div class="auth-logo auth-logo--refresh"><div class="auth-logo__mark" aria-hidden="true"><svg viewBox="0 0 24 24" width="24" height="24" class="" aria-hidden="true" role="presentation" fill="none"><path d="M4 20h16" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round"></path><path d="M7 16v-4" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round"></path><path d="M12 16V8" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round"></path><path d="M17 16v-7" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round"></path></svg></div><h1>欢迎回来</h1><p>登录后继续记录每一笔收支</p></div><div class="auth-switch" role="tablist" aria-label="登录或注册"><button type="button" class="is-active">登录</button><button type="button" class="">注册</button></div><form class="auth-form"><div class="form-group"><label for="username">用户名</label><input id="username" type="text" placeholder="3-20个字符" required="" value=""/></div><div class="form-group"><label for="password">密码</label><input id="password" type="password" placeholder="6-20个字符" required="" value=""/></div><button type="submit" class="btn btn-primary">登录</button></form></div></div></div></main></div><div class="toast-stack" aria-live="polite" aria-atomic="true"></div></div><script id="__NEXT_DATA__" type="application/json">{"props":{"pageProps":{}},"page":"/login","query":{},"buildId":"qLhTs8_S85rjOOeVUp07g","nextExport":true,"autoExport":true,"isFallback":false,"scriptLoader":[]}</script></body></html>
|
|
||||||
@@ -1 +0,0 @@
|
|||||||
{"version":1,"files":["../webpack-runtime.js","../chunks/899.js","../chunks/342.js","../chunks/261.js","../../../package.json"]}
|
|
||||||
File diff suppressed because one or more lines are too long
@@ -1 +0,0 @@
|
|||||||
{"version":1,"files":["../webpack-runtime.js","../chunks/899.js","../chunks/342.js","../chunks/261.js","../../../package.json"]}
|
|
||||||
File diff suppressed because one or more lines are too long
@@ -1 +0,0 @@
|
|||||||
{"version":1,"files":["../webpack-runtime.js","../chunks/899.js","../chunks/342.js","../chunks/261.js","../../../package.json"]}
|
|
||||||
File diff suppressed because one or more lines are too long
@@ -1 +0,0 @@
|
|||||||
{"version":1,"files":["../webpack-runtime.js","../chunks/899.js","../chunks/342.js","../chunks/261.js","../../../package.json"]}
|
|
||||||
File diff suppressed because one or more lines are too long
@@ -1 +0,0 @@
|
|||||||
{"version":1,"files":["../webpack-runtime.js","../chunks/899.js","../chunks/342.js","../chunks/261.js","../../../package.json"]}
|
|
||||||
@@ -1 +0,0 @@
|
|||||||
(()=>{"use strict";var e={},r={};function o(t){var a=r[t];if(void 0!==a)return a.exports;var n=r[t]={exports:{}},u=!0;try{e[t](n,n.exports,o),u=!1}finally{u&&delete r[t]}return n.exports}o.m=e,(()=>{var e="function"==typeof Symbol?Symbol("webpack queues"):"__webpack_queues__",r="function"==typeof Symbol?Symbol("webpack exports"):"__webpack_exports__",t="function"==typeof Symbol?Symbol("webpack error"):"__webpack_error__",a=e=>{e&&e.d<1&&(e.d=1,e.forEach(e=>e.r--),e.forEach(e=>e.r--?e.r++:e()))},n=o=>o.map(o=>{if(null!==o&&"object"==typeof o){if(o[e])return o;if(o.then){var n=[];n.d=0,o.then(e=>{u[r]=e,a(n)},e=>{u[t]=e,a(n)});var u={};return u[e]=e=>e(n),u}}var p={};return p[e]=e=>{},p[r]=o,p});o.a=(o,u,p)=>{p&&((f=[]).d=-1);var f,i,l,d,s=new Set,c=o.exports,b=new Promise((e,r)=>{d=r,l=e});b[r]=c,b[e]=e=>(f&&e(f),s.forEach(e),b.catch(e=>{})),o.exports=b,u(o=>{i=n(o);var a,u=()=>i.map(e=>{if(e[t])throw e[t];return e[r]}),p=new Promise(r=>{(a=()=>r(u)).r=0;var o=e=>e!==f&&!s.has(e)&&(s.add(e),e&&!e.d&&(a.r++,e.push(a)));i.map(r=>r[e](o))});return a.r?p:u()},e=>(e?d(b[t]=e):l(c),a(f))),f&&f.d<0&&(f.d=0)}})(),o.n=e=>{var r=e&&e.__esModule?()=>e.default:()=>e;return o.d(r,{a:r}),r},o.d=(e,r)=>{for(var t in r)o.o(r,t)&&!o.o(e,t)&&Object.defineProperty(e,t,{enumerable:!0,get:r[t]})},o.f={},o.e=e=>Promise.all(Object.keys(o.f).reduce((r,t)=>(o.f[t](e,r),r),[])),o.u=e=>""+e+".js",o.o=(e,r)=>Object.prototype.hasOwnProperty.call(e,r),o.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},o.X=(e,r,t)=>{var a=r;t||(r=e,t=()=>o(o.s=a)),r.map(o.e,o);var n=t();return void 0===n?e:n},(()=>{var e={658:1},r=r=>{var t=r.modules,a=r.ids,n=r.runtime;for(var u in t)o.o(t,u)&&(o.m[u]=t[u]);n&&n(o);for(var p=0;p<a.length;p++)e[a[p]]=1};o.f.require=(t,a)=>{e[t]||(658!=t?r(require("./chunks/"+o.u(t))):e[t]=1)},module.exports=o,o.C=r})()})();
|
|
||||||
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user