Files
makemd/dashboard/src/.umi/appData.json

2242 lines
226 KiB
JSON
Raw Normal View History

{
"cwd": "D:\\trae_projects\\makemd\\makemd\\dashboard",
"pkg": {
"name": "dashboard",
"version": "1.0.0",
"private": true,
"scripts": {
"dev": "umi dev",
"build": "umi build",
"postinstall": "umi setup",
"setup": "umi setup",
"start": "npm run dev"
},
"dependencies": {
"@ant-design/charts": "^2.6.7",
"@ant-design/icons": "^5.2.6",
"@ant-design/plots": "^2.6.8",
"@antv/g6": "^5.0.51",
"@antv/l7": "^2.25.2",
"@antv/l7-react": "^2.4.3",
"antd": "^5.12.2",
"axios": "^1.13.6",
"moment": "^2.30.1",
"react": "^18.2.0",
"react-dom": "^18.2.0",
"react-responsive": "^10.0.1",
"recharts": "^3.8.0",
"umi": "^4.0.0"
},
"devDependencies": {
"@types/react": "^18.2.0",
"@types/react-dom": "^18.2.0",
"msw": "^2.12.13",
"typescript": "^5.9.3"
}
},
"pkgPath": "D:\\trae_projects\\makemd\\makemd\\dashboard\\package.json",
"plugins": {
"./node_modules/@umijs/core/dist/service/servicePlugin": {
"cwd": "D:\\trae_projects\\makemd\\makemd\\dashboard",
"type": "preset",
"path": "D:/trae_projects/makemd/makemd/dashboard/node_modules/@umijs/core/dist/service/servicePlugin.js",
"id": "./node_modules/@umijs/core/dist/service/servicePlugin",
"key": "servicePlugin",
"config": {},
"time": {
"hooks": {},
"register": 1
},
"enableBy": "register"
},
"@umijs/preset-umi": {
"cwd": "D:\\trae_projects\\makemd\\makemd\\dashboard",
"type": "preset",
"path": "D:/trae_projects/makemd/makemd/dashboard/node_modules/@umijs/preset-umi/dist/index.js",
"id": "@umijs/preset-umi",
"key": "umi",
"config": {},
"time": {
"hooks": {},
"register": 21
},
"enableBy": "register"
},
"./node_modules/@umijs/preset-umi/dist/registerMethods": {
"cwd": "D:\\trae_projects\\makemd\\makemd\\dashboard",
"type": "plugin",
"path": "D:/trae_projects/makemd/makemd/dashboard/node_modules/@umijs/preset-umi/dist/registerMethods.js",
"id": "./node_modules/@umijs/preset-umi/dist/registerMethods",
"key": "registerMethods",
"config": {},
"time": {
"hooks": {
"onStart": [
0
]
},
"register": 5
},
"enableBy": "register"
},
"@umijs/did-you-know": {
"cwd": "D:\\trae_projects\\makemd\\makemd\\dashboard",
"type": "plugin",
"path": "D:/trae_projects/makemd/makemd/dashboard/node_modules/@umijs/did-you-know/dist/plugin.js",
"id": "@umijs/did-you-know",
"key": "umijsDidYouKnow",
"config": {},
"time": {
"hooks": {
"onStart": [
3
]
},
"register": 3
},
"enableBy": "register"
},
"./node_modules/@umijs/preset-umi/dist/features/404/404": {
"cwd": "D:\\trae_projects\\makemd\\makemd\\dashboard",
"type": "plugin",
"path": "D:/trae_projects/makemd/makemd/dashboard/node_modules/@umijs/preset-umi/dist/features/404/404.js",
"id": "./node_modules/@umijs/preset-umi/dist/features/404/404",
"key": "404",
"config": {},
"time": {
"hooks": {
"modifyRoutes": [
0
]
},
"register": 0
},
"enableBy": "register"
},
"./node_modules/@umijs/preset-umi/dist/features/aiDev/aiDev": {
"cwd": "D:\\trae_projects\\makemd\\makemd\\dashboard",
"type": "plugin",
"path": "D:/trae_projects/makemd/makemd/dashboard/node_modules/@umijs/preset-umi/dist/features/aiDev/aiDev.js",
"id": "./node_modules/@umijs/preset-umi/dist/features/aiDev/aiDev",
"key": "aiDev",
"config": {},
"time": {
"hooks": {},
"register": 4
},
"enableBy": "register"
},
"./node_modules/@umijs/preset-umi/dist/features/appData/appData": {
"cwd": "D:\\trae_projects\\makemd\\makemd\\dashboard",
"type": "plugin",
"path": "D:/trae_projects/makemd/makemd/dashboard/node_modules/@umijs/preset-umi/dist/features/appData/appData.js",
"id": "./node_modules/@umijs/preset-umi/dist/features/appData/appData",
"key": "appData",
"config": {},
"time": {
"hooks": {
"modifyAppData": [
25
]
},
"register": 37
},
"enableBy": "register"
},
"./node_modules/@umijs/preset-umi/dist/features/appData/umiInfo": {
"cwd": "D:\\trae_projects\\makemd\\makemd\\dashboard",
"type": "plugin",
"path": "D:/trae_projects/makemd/makemd/dashboard/node_modules/@umijs/preset-umi/dist/features/appData/umiInfo.js",
"id": "./node_modules/@umijs/preset-umi/dist/features/appData/umiInfo",
"key": "umiInfo",
"config": {},
"time": {
"hooks": {},
"register": 1
},
"enableBy": "register"
},
"./node_modules/@umijs/preset-umi/dist/features/check/check": {
"cwd": "D:\\trae_projects\\makemd\\makemd\\dashboard",
"type": "plugin",
"path": "D:/trae_projects/makemd/makemd/dashboard/node_modules/@umijs/preset-umi/dist/features/check/check.js",
"id": "./node_modules/@umijs/preset-umi/dist/features/check/check",
"key": "check",
"config": {},
"time": {
"hooks": {
"onCheckConfig": [
0
],
"onCheck": [
0
]
},
"register": 1
},
"enableBy": "register"
},
"./node_modules/@umijs/preset-umi/dist/features/check/babel722": {
"cwd": "D:\\trae_projects\\makemd\\makemd\\dashboard",
"type": "plugin",
"path": "D:/trae_projects/makemd/makemd/dashboard/node_modules/@umijs/preset-umi/dist/features/check/babel722.js",
"id": "./node_modules/@umijs/preset-umi/dist/features/check/babel722",
"key": "babel722",
"config": {},
"time": {
"hooks": {
"onCheck": [
1
]
},
"register": 1
},
"enableBy": "register"
},
"./node_modules/@umijs/preset-umi/dist/features/codeSplitting/codeSplitting": {
"cwd": "D:\\trae_projects\\makemd\\makemd\\dashboard",
"type": "plugin",
"path": "D:/trae_projects/makemd/makemd/dashboard/node_modules/@umijs/preset-umi/dist/features/codeSplitting/codeSplitting.js",
"id": "./node_modules/@umijs/preset-umi/dist/features/codeSplitting/codeSplitting",
"key": "codeSplitting",
"config": {},
"time": {
"hooks": {},
"register": 1
},
"enableBy": "config"
},
"./node_modules/@umijs/preset-umi/dist/features/configPlugins/configPlugins": {
"cwd": "D:\\trae_projects\\makemd\\makemd\\dashboard",
"type": "plugin",
"path": "D:/trae_projects/makemd/makemd/dashboard/node_modules/@umijs/preset-umi/dist/features/configPlugins/configPlugins.js",
"id": "./node_modules/@umijs/preset-umi/dist/features/configPlugins/configPlugins",
"key": "configPlugins",
"config": {},
"time": {
"hooks": {
"modifyConfig": [
0
]
},
"register": 16
},
"enableBy": "register"
},
"virtual: config-title": {
"id": "virtual: config-title",
"key": "title",
"config": {},
"type": "plugin",
"enableBy": "register",
"time": {
"hooks": {},
"register": 0
}
},
"virtual: config-styles": {
"id": "virtual: config-styles",
"key": "styles",
"config": {},
"type": "plugin",
"enableBy": "register",
"time": {
"hooks": {},
"register": 0
}
},
"virtual: config-scripts": {
"id": "virtual: config-scripts",
"key": "scripts",
"config": {},
"type": "plugin",
"enableBy": "register",
"time": {
"hooks": {},
"register": 0
}
},
"virtual: config-routes": {
"id": "virtual: config-routes",
"key": "routes",
"config": {
"onChange": "regenerateTmpFiles"
},
"type": "plugin",
"enableBy": "register",
"time": {
"hooks": {},
"register": 0
}
},
"virtual: config-routeLoader": {
"id": "virtual: config-routeLoader",
"key": "routeLoader",
"config": {
"default": {
"moduleType": "esm"
}
},
"type": "plugin",
"enableBy": "register",
"time": {
"hooks": {},
"register": 0
}
},
"virtual: config-reactRouter5Compat": {
"id": "virtual: config-reactRouter5Compat",
"key": "reactRouter5Compat",
"config": {},
"type": "plugin",
"enableBy": "register",
"time": {
"hooks": {},
"register": 0
}
},
"virtual: config-presets": {
"id": "virtual: config-presets",
"key": "presets",
"config": {},
"type": "plugin",
"enableBy": "register",
"time": {
"hooks": {},
"register": 0
}
},
"virtual: config-plugins": {
"id": "virtual: config-plugins",
"key": "plugins",
"config": {},
"type": "plugin",
"enableBy": "register",
"time": {
"hooks": {},
"register": 0
}
},
"virtual: config-npmClient": {
"id": "virtual: config-npmClient",
"key": "npmClient",
"config": {},
"type": "plugin",
"enableBy": "register",
"time": {
"hooks": {},
"register": 0
}
},
"virtual: config-mountElementId": {
"id": "virtual: config-mountElementId",
"key": "mountElementId",
"config": {
"default": "root"
},
"type": "plugin",
"enableBy": "register",
"time": {
"hooks": {},
"register": 0
}
},
"virtual: config-metas": {
"id": "virtual: config-metas",
"key": "metas",
"config": {},
"type": "plugin",
"enableBy": "register",
"time": {
"hooks": {},
"register": 0
}
},
"virtual: config-links": {
"id": "virtual: config-links",
"key": "links",
"config": {},
"type": "plugin",
"enableBy": "register",
"time": {
"hooks": {},
"register": 0
}
},
"virtual: config-historyWithQuery": {
"id": "virtual: config-historyWithQuery",
"key": "historyWithQuery",
"config": {},
"type": "plugin",
"enableBy": "register",
"time": {
"hooks": {},
"register": 0
}
},
"virtual: config-history": {
"id": "virtual: config-history",
"key": "history",
"config": {
"default": {
"type": "browser"
}
},
"type": "plugin",
"enableBy": "register",
"time": {
"hooks": {},
"register": 0
}
},
"virtual: config-headScripts": {
"id": "virtual: config-headScripts",
"key": "headScripts",
"config": {},
"type": "plugin",
"enableBy": "register",
"time": {
"hooks": {},
"register": 0
}
},
"virtual: config-esbuildMinifyIIFE": {
"id": "virtual: config-esbuildMinifyIIFE",
"key": "esbuildMinifyIIFE",
"config": {},
"type": "plugin",
"enableBy": "register",
"time": {
"hooks": {},
"register": 0
}
},
"virtual: config-conventionRoutes": {
"id": "virtual: config-conventionRoutes",
"key": "conventionRoutes",
"config": {},
"type": "plugin",
"enableBy": "register",
"time": {
"hooks": {},
"register": 0
}
},
"virtual: config-conventionLayout": {
"id": "virtual: config-conventionLayout",
"key": "conventionLayout",
"config": {},
"type": "plugin",
"enableBy": "register",
"time": {
"hooks": {},
"register": 0
}
},
"virtual: config-base": {
"id": "virtual: config-base",
"key": "base",
"config": {
"default": "/"
},
"type": "plugin",
"enableBy": "register",
"time": {
"hooks": {},
"register": 0
}
},
"virtual: config-analyze": {
"id": "virtual: config-analyze",
"key": "analyze",
"config": {},
"type": "plugin",
"enableBy": "register",
"time": {
"hooks": {},
"register": 0
}
},
"virtual: config-writeToDisk": {
"id": "virtual: config-writeToDisk",
"key": "writeToDisk",
"config": {},
"type": "plugin",
"enableBy": "register",
"time": {
"hooks": {},
"register": 0
}
},
"virtual: config-transformRuntime": {
"id": "virtual: config-transformRuntime",
"key": "transformRuntime",
"config": {},
"type": "plugin",
"enableBy": "register",
"time": {
"hooks": {},
"register": 0
}
},
"virtual: config-theme": {
"id": "virtual: config-theme",
"key": "theme",
"config": {},
"type": "plugin",
"enableBy": "register",
"time": {
"hooks": {},
"register": 0
}
},
"virtual: config-targets": {
"id": "virtual: config-targets",
"key": "targets",
"config": {},
"type": "plugin",
"enableBy": "register",
"time": {
"hooks": {},
"register": 0
}
},
"virtual: config-svgr": {
"id": "virtual: config-svgr",
"key": "svgr",
"config": {
"default": {}
},
"type": "plugin",
"enableBy": "register",
"time": {
"hooks": {},
"register": 0
}
},
"virtual: config-svgo": {
"id": "virtual: config-svgo",
"key": "svgo",
"config": {},
"type": "plugin",
"enableBy": "register",
"time": {
"hooks": {},
"register": 0
}
},
"virtual: config-stylusLoader": {
"id": "virtual: config-stylusLoader",
"key": "stylusLoader",
"config": {},
"type": "plugin",
"enableBy": "register",
"time": {
"hooks": {},
"register": 0
}
},
"virtual: config-styleLoader": {
"id": "virtual: config-styleLoader",
"key": "styleLoader",
"config": {},
"type": "plugin",
"enableBy": "register",
"time": {
"hooks": {},
"register": 0
}
},
"virtual: config-srcTranspilerOptions": {
"id": "virtual: config-srcTranspilerOptions",
"key": "srcTranspilerOptions",
"config": {},
"type": "plugin",
"enableBy": "register",
"time": {
"hooks": {},
"register": 0
}
},
"virtual: config-srcTranspiler": {
"id": "virtual: config-srcTranspiler",
"key": "srcTranspiler",
"config": {},
"type": "plugin",
"enableBy": "register",
"time": {
"hooks": {},
"register": 0
}
},
"virtual: config-sassLoader": {
"id": "virtual: config-sassLoader",
"key": "sassLoader",
"config": {},
"type": "plugin",
"enableBy": "register",
"time": {
"hooks": {},
"register": 0
}
},
"virtual: config-runtimePublicPath": {
"id": "virtual: config-runtimePublicPath",
"key": "runtimePublicPath",
"config": {},
"type": "plugin",
"enableBy": "register",
"time": {
"hooks": {},
"register": 0
}
},
"virtual: config-purgeCSS": {
"id": "virtual: config-purgeCSS",
"key": "purgeCSS",
"config": {},
"type": "plugin",
"enableBy": "register",
"time": {
"hooks": {},
"register": 0
}
},
"virtual: config-publicPath": {
"id": "virtual: config-publicPath",
"key": "publicPath",
"config": {
"default": "/"
},
"type": "plugin",
"enableBy": "register",
"time": {
"hooks": {},
"register": 0
}
},
"virtual: config-proxy": {
"id": "virtual: config-proxy",
"key": "proxy",
"config": {},
"type": "plugin",
"enableBy": "register",
"time": {
"hooks": {},
"register": 0
}
},
"virtual: config-postcssLoader": {
"id": "virtual: config-postcssLoader",
"key": "postcssLoader",
"config": {},
"type": "plugin",
"enableBy": "register",
"time": {
"hooks": {},
"register": 0
}
},
"virtual: config-outputPath": {
"id": "virtual: config-outputPath",
"key": "outputPath",
"config": {},
"type": "plugin",
"enableBy": "register",
"time": {
"hooks": {},
"register": 0
}
},
"virtual: config-normalCSSLoaderModules": {
"id": "virtual: config-normalCSSLoaderModules",
"key": "normalCSSLoaderModules",
"config": {},
"type": "plugin",
"enableBy": "register",
"time": {
"hooks": {},
"register": 0
}
},
"virtual: config-mfsu": {
"id": "virtual: config-mfsu",
"key": "mfsu",
"config": {
"default": {
"strategy": "eager"
}
},
"type": "plugin",
"enableBy": "register",
"time": {
"hooks": {},
"register": 0
}
},
"virtual: config-mdx": {
"id": "virtual: config-mdx",
"key": "mdx",
"config": {},
"type": "plugin",
"enableBy": "register",
"time": {
"hooks": {},
"register": 0
}
},
"virtual: config-manifest": {
"id": "virtual: config-manifest",
"key": "manifest",
"config": {},
"type": "plugin",
"enableBy": "register",
"time": {
"hooks": {},
"register": 0
}
},
"virtual: config-lessLoader": {
"id": "virtual: config-lessLoader",
"key": "lessLoader",
"config": {},
"type": "plugin",
"enableBy": "register",
"time": {
"hooks": {},
"register": 0
}
},
"virtual: config-jsMinifierOptions": {
"id": "virtual: config-jsMinifierOptions",
"key": "jsMinifierOptions",
"config": {},
"type": "plugin",
"enableBy": "register",
"time": {
"hooks": {},
"register": 0
}
},
"virtual: config-jsMinifier": {
"id": "virtual: config-jsMinifier",
"key": "jsMinifier",
"config": {},
"type": "plugin",
"enableBy": "register",
"time": {
"hooks": {},
"register": 0
}
},
"virtual: config-inlineLimit": {
"id": "virtual: config-inlineLimit",
"key": "inlineLimit",
"config": {},
"type": "plugin",
"enableBy": "register",
"time": {
"hooks": {},
"register": 0
}
},
"virtual: config-ignoreMomentLocale": {
"id": "virtual: config-ignoreMomentLocale",
"key": "ignoreMomentLocale",
"config": {
"default": true
},
"type": "plugin",
"enableBy": "register",
"time": {
"hooks": {},
"register": 0
}
},
"virtual: config-https": {
"id": "virtual: config-https",
"key": "https",
"config": {},
"type": "plugin",
"enableBy": "register",
"time": {
"hooks": {},
"register": 0
}
},
"virtual: config-hash": {
"id": "virtual: config-hash",
"key": "hash",
"config": {},
"type": "plugin",
"enableBy": "register",
"time": {
"hooks": {},
"register": 0
}
},
"virtual: config-forkTSChecker": {
"id": "virtual: config-forkTSChecker",
"key": "forkTSChecker",
"config": {},
"type": "plugin",
"enableBy": "register",
"time": {
"hooks": {},
"register": 0
}
},
"virtual: config-fastRefresh": {
"id": "virtual: config-fastRefresh",
"key": "fastRefresh",
"config": {},
"type": "plugin",
"enableBy": "register",
"time": {
"hooks": {},
"register": 0
}
},
"virtual: config-extraPostCSSPlugins": {
"id": "virtual: config-extraPostCSSPlugins",
"key": "extraPostCSSPlugins",
"config": {},
"type": "plugin",
"enableBy": "register",
"time": {
"hooks": {},
"register": 0
}
},
"virtual: config-extraBabelPresets": {
"id": "virtual: config-extraBabelPresets",
"key": "extraBabelPresets",
"config": {},
"type": "plugin",
"enableBy": "register",
"time": {
"hooks": {},
"register": 0
}
},
"virtual: config-extraBabelPlugins": {
"id": "virtual: config-extraBabelPlugins",
"key": "extraBabelPlugins",
"config": {},
"type": "plugin",
"enableBy": "register",
"time": {
"hooks": {},
"register": 0
}
},
"virtual: config-extraBabelIncludes": {
"id": "virtual: config-extraBabelIncludes",
"key": "extraBabelIncludes",
"config": {},
"type": "plugin",
"enableBy": "register",
"time": {
"hooks": {},
"register": 0
}
},
"virtual: config-externals": {
"id": "virtual: config-externals",
"key": "externals",
"config": {
"default": {}
},
"type": "plugin",
"enableBy": "register",
"time": {
"hooks": {},
"register": 0
}
},
"virtual: config-esm": {
"id": "virtual: config-esm",
"key": "esm",
"config": {},
"type": "plugin",
"enableBy": "register",
"time": {
"hooks": {},
"register": 0
}
},
"virtual: config-devtool": {
"id": "virtual: config-devtool",
"key": "devtool",
"config": {},
"type": "plugin",
"enableBy": "register",
"time": {
"hooks": {},
"register": 0
}
},
"virtual: config-depTranspiler": {
"id": "virtual: config-depTranspiler",
"key": "depTranspiler",
"config": {},
"type": "plugin",
"enableBy": "register",
"time": {
"hooks": {},
"register": 0
}
},
"virtual: config-define": {
"id": "virtual: config-define",
"key": "define",
"config": {},
"type": "plugin",
"enableBy": "register",
"time": {
"hooks": {},
"register": 0
}
},
"virtual: config-deadCode": {
"id": "virtual: config-deadCode",
"key": "deadCode",
"config": {},
"type": "plugin",
"enableBy": "register",
"time": {
"hooks": {},
"register": 0
}
},
"virtual: config-cssPublicPath": {
"id": "virtual: config-cssPublicPath",
"key": "cssPublicPath",
"config": {},
"type": "plugin",
"enableBy": "register",
"time": {
"hooks": {},
"register": 0
}
},
"virtual: config-cssMinifierOptions": {
"id": "virtual: config-cssMinifierOptions",
"key": "cssMinifierOptions",
"config": {},
"type": "plugin",
"enableBy": "register",
"time": {
"hooks": {},
"register": 0
}
},
"virtual: config-cssMinifier": {
"id": "virtual: config-cssMinifier",
"key": "cssMinifier",
"config": {},
"type": "plugin",
"enableBy": "register",
"time": {
"hooks": {},
"register": 0
}
},
"virtual: config-cssLoaderModules": {
"id": "virtual: config-cssLoaderModules",
"key": "cssLoaderModules",
"config": {},
"type": "plugin",
"enableBy": "register",
"time": {
"hooks": {},
"register": 0
}
},
"virtual: config-cssLoader": {
"id": "virtual: config-cssLoader",
"key": "cssLoader",
"config": {},
"type": "plugin",
"enableBy": "register",
"time": {
"hooks": {},
"register": 0
}
},
"virtual: config-copy": {
"id": "virtual: config-copy",
"key": "copy",
"config": {},
"type": "plugin",
"enableBy": "register",
"time": {
"hooks": {},
"register": 0
}
},
"virtual: config-checkDepCssModules": {
"id": "virtual: config-checkDepCssModules",
"key": "checkDepCssModules",
"config": {},
"type": "plugin",
"enableBy": "register",
"time": {
"hooks": {},
"register": 0
}
},
"virtual: config-chainWebpack": {
"id": "virtual: config-chainWebpack",
"key": "chainWebpack",
"config": {},
"type": "plugin",
"enableBy": "register",
"time": {
"hooks": {},
"register": 0
}
},
"virtual: config-cacheDirectoryPath": {
"id": "virtual: config-cacheDirectoryPath",
"key": "cacheDirectoryPath",
"config": {},
"type": "plugin",
"enableBy": "register",
"time": {
"hooks": {},
"register": 0
}
},
"virtual: config-babelLoaderCustomize": {
"id": "virtual: config-babelLoaderCustomize",
"key": "babelLoaderCustomize",
"config": {},
"type": "plugin",
"enableBy": "register",
"time": {
"hooks": {},
"register": 0
}
},
"virtual: config-autoprefixer": {
"id": "virtual: config-autoprefixer",
"key": "autoprefixer",
"config": {},
"type": "plugin",
"enableBy": "register",
"time": {
"hooks": {},
"register": 0
}
},
"virtual: config-autoCSSModules": {
"id": "virtual: config-autoCSSModules",
"key": "autoCSSModules",
"config": {
"default": true
},
"type": "plugin",
"enableBy": "register",
"time": {
"hooks": {},
"register": 0
}
},
"virtual: config-alias": {
"id": "virtual: config-alias",
"key": "alias",
"config": {
"default": {
"umi": "@@/exports",
"react": "D:\\trae_projects\\makemd\\makemd\\dashboard\\node_modules\\react",
"react-dom": "D:\\trae_projects\\makemd\\makemd\\dashboard\\node_modules\\react-dom",
"react-router": "D:\\trae_projects\\makemd\\makemd\\dashboard\\node_modules\\react-router",
"react-router-dom": "D:\\trae_projects\\makemd\\makemd\\dashboard\\node_modules\\react-router-dom"
}
},
"type": "plugin",
"enableBy": "register",
"time": {
"hooks": {},
"register": 0
}
},
"./node_modules/@umijs/preset-umi/dist/features/crossorigin/crossorigin": {
"cwd": "D:\\trae_projects\\makemd\\makemd\\dashboard",
"type": "plugin",
"path": "D:/trae_projects/makemd/makemd/dashboard/node_modules/@umijs/preset-umi/dist/features/crossorigin/crossorigin.js",
"id": "./node_modules/@umijs/preset-umi/dist/features/crossorigin/crossorigin",
"key": "crossorigin",
"config": {},
"time": {
"hooks": {},
"register": 1
},
"enableBy": "config"
},
"./node_modules/@umijs/preset-umi/dist/features/depsOnDemand/depsOnDemand": {
"cwd": "D:\\trae_projects\\makemd\\makemd\\dashboard",
"type": "plugin",
"path": "D:/trae_projects/makemd/makemd/dashboard/node_modules/@umijs/preset-umi/dist/features/depsOnDemand/depsOnDemand.js",
"id": "./node_modules/@umijs/preset-umi/dist/features/depsOnDemand/depsOnDemand",
"key": "depsOnDemand",
"config": {},
"time": {
"hooks": {
"onStart": [
1
]
},
"register": 2
},
"enableBy": "register"
},
"./node_modules/@umijs/preset-umi/dist/features/devTool/devTool": {
"cwd": "D:\\trae_projects\\makemd\\makemd\\dashboard",
"type": "plugin",
"path": "D:/trae_projects/makemd/makemd/dashboard/node_modules/@umijs/preset-umi/dist/features/devTool/devTool.js",
"id": "./node_modules/@umijs/preset-umi/dist/features/devTool/devTool",
"key": "devTool",
"config": {},
"time": {
"hooks": {},
"register": 1
},
"enableBy": "register"
},
"./node_modules/@umijs/preset-umi/dist/features/esbuildHelperChecker/esbuildHelperChecker": {
"cwd": "D:\\trae_projects\\makemd\\makemd\\dashboard",
"type": "plugin",
"path": "D:/trae_projects/makemd/makemd/dashboard/node_modules/@umijs/preset-umi/dist/features/esbuildHelperChecker/esbuildHelperChecker.js",
"id": "./node_modules/@umijs/preset-umi/dist/features/esbuildHelperChecker/esbuildHelperChecker",
"key": "esbuildHelperChecker",
"config": {},
"time": {
"hooks": {},
"register": 128
},
"enableBy": "register"
},
"./node_modules/@umijs/preset-umi/dist/features/esmi/esmi": {
"cwd": "D:\\trae_projects\\makemd\\makemd\\dashboard",
"type": "plugin",
"path": "D:/trae_projects/makemd/makemd/dashboard/node_modules/@umijs/preset-umi/dist/features/esmi/esmi.js",
"id": "./node_modules/@umijs/preset-umi/dist/features/esmi/esmi",
"key": "esmi",
"config": {},
"time": {
"hooks": {},
"register": 83
},
"enableBy": "config"
},
"./node_modules/@umijs/preset-umi/dist/features/exportStatic/exportStatic": {
"cwd": "D:\\trae_projects\\makemd\\makemd\\dashboard",
"type": "plugin",
"path": "D:/trae_projects/makemd/makemd/dashboard/node_modules/@umijs/preset-umi/dist/features/exportStatic/exportStatic.js",
"id": "./node_modules/@umijs/preset-umi/dist/features/exportStatic/exportStatic",
"key": "exportStatic",
"config": {},
"time": {
"hooks": {},
"register": 37
},
"enableBy": "config"
},
"./node_modules/@umijs/preset-umi/dist/features/favicons/favicons": {
"cwd": "D:\\trae_projects\\makemd\\makemd\\dashboard",
"type": "plugin",
"path": "D:/trae_projects/makemd/makemd/dashboard/node_modules/@umijs/preset-umi/dist/features/favicons/favicons.js",
"id": "./node_modules/@umijs/preset-umi/dist/features/favicons/favicons",
"key": "favicons",
"config": {},
"time": {
"hooks": {
"modifyAppData": [
0
]
},
"register": 1
},
"enableBy": "register"
},
"./node_modules/@umijs/preset-umi/dist/features/helmet/helmet": {
"cwd": "D:\\trae_projects\\makemd\\makemd\\dashboard",
"type": "plugin",
"path": "D:/trae_projects/makemd/makemd/dashboard/node_modules/@umijs/preset-umi/dist/features/helmet/helmet.js",
"id": "./node_modules/@umijs/preset-umi/dist/features/helmet/helmet",
"key": "helmet",
"config": {},
"time": {
"hooks": {},
"register": 1
},
"enableBy": "register"
},
"./node_modules/@umijs/preset-umi/dist/features/icons/icons": {
"cwd": "D:\\trae_projects\\makemd\\makemd\\dashboard",
"type": "plugin",
"path": "D:/trae_projects/makemd/makemd/dashboard/node_modules/@umijs/preset-umi/dist/features/icons/icons.js",
"id": "./node_modules/@umijs/preset-umi/dist/features/icons/icons",
"key": "icons",
"config": {},
"time": {
"hooks": {},
"register": 7
},
"enableBy": "config"
},
"./node_modules/@umijs/preset-umi/dist/features/mock/mock": {
"cwd": "D:\\trae_projects\\makemd\\makemd\\dashboard",
"type": "plugin",
"path": "D:/trae_projects/makemd/makemd/dashboard/node_modules/@umijs/preset-umi/dist/features/mock/mock.js",
"id": "./node_modules/@umijs/preset-umi/dist/features/mock/mock",
"key": "mock",
"config": {},
"time": {
"hooks": {},
"register": 72
}
},
"./node_modules/@umijs/preset-umi/dist/features/mpa/mpa": {
"cwd": "D:\\trae_projects\\makemd\\makemd\\dashboard",
"type": "plugin",
"path": "D:/trae_projects/makemd/makemd/dashboard/node_modules/@umijs/preset-umi/dist/features/mpa/mpa.js",
"id": "./node_modules/@umijs/preset-umi/dist/features/mpa/mpa",
"key": "mpa",
"config": {},
"time": {
"hooks": {},
"register": 3
},
"enableBy": "config"
},
"./node_modules/@umijs/preset-umi/dist/features/okam/okam": {
"cwd": "D:\\trae_projects\\makemd\\makemd\\dashboard",
"type": "plugin",
"path": "D:/trae_projects/makemd/makemd/dashboard/node_modules/@umijs/preset-umi/dist/features/okam/okam.js",
"id": "./node_modules/@umijs/preset-umi/dist/features/okam/okam",
"key": "okam",
"config": {},
"time": {
"hooks": {},
"register": 2
}
},
"./node_modules/@umijs/preset-umi/dist/features/overrides/overrides": {
"cwd": "D:\\trae_projects\\makemd\\makemd\\dashboard",
"type": "plugin",
"path": "D:/trae_projects/makemd/makemd/dashboard/node_modules/@umijs/preset-umi/dist/features/overrides/overrides.js",
"id": "./node_modules/@umijs/preset-umi/dist/features/overrides/overrides",
"key": "overrides",
"config": {},
"time": {
"hooks": {},
"register": 1
},
"enableBy": "register"
},
"./node_modules/@umijs/preset-umi/dist/features/phantomDependency/phantomDependency": {
"cwd": "D:\\trae_projects\\makemd\\makemd\\dashboard",
"type": "plugin",
"path": "D:/trae_projects/makemd/makemd/dashboard/node_modules/@umijs/preset-umi/dist/features/phantomDependency/phantomDependency.js",
"id": "./node_modules/@umijs/preset-umi/dist/features/phantomDependency/phantomDependency",
"key": "phantomDependency",
"config": {},
"time": {
"hooks": {},
"register": 2
},
"enableBy": "config"
},
"./node_modules/@umijs/preset-umi/dist/features/polyfill/polyfill": {
"cwd": "D:\\trae_projects\\makemd\\makemd\\dashboard",
"type": "plugin",
"path": "D:/trae_projects/makemd/makemd/dashboard/node_modules/@umijs/preset-umi/dist/features/polyfill/polyfill.js",
"id": "./node_modules/@umijs/preset-umi/dist/features/polyfill/polyfill",
"key": "polyfill",
"config": {},
"time": {
"hooks": {
"modifyConfig": [
1
]
},
"register": 5
}
},
"./node_modules/@umijs/preset-umi/dist/features/polyfill/publicPathPolyfill": {
"cwd": "D:\\trae_projects\\makemd\\makemd\\dashboard",
"type": "plugin",
"path": "D:/trae_projects/makemd/makemd/dashboard/node_modules/@umijs/preset-umi/dist/features/polyfill/publicPathPolyfill.js",
"id": "./node_modules/@umijs/preset-umi/dist/features/polyfill/publicPathPolyfill",
"key": "publicPathPolyfill",
"config": {},
"time": {
"hooks": {},
"register": 2
},
"enableBy": "register"
},
"./node_modules/@umijs/preset-umi/dist/features/prepare/prepare": {
"cwd": "D:\\trae_projects\\makemd\\makemd\\dashboard",
"type": "plugin",
"path": "D:/trae_projects/makemd/makemd/dashboard/node_modules/@umijs/preset-umi/dist/features/prepare/prepare.js",
"id": "./node_modules/@umijs/preset-umi/dist/features/prepare/prepare",
"key": "prepare",
"config": {},
"time": {
"hooks": {},
"register": 15
},
"enableBy": "register"
},
"./node_modules/@umijs/preset-umi/dist/features/routePrefetch/routePrefetch": {
"cwd": "D:\\trae_projects\\makemd\\makemd\\dashboard",
"type": "plugin",
"path": "D:/trae_projects/makemd/makemd/dashboard/node_modules/@umijs/preset-umi/dist/features/routePrefetch/routePrefetch.js",
"id": "./node_modules/@umijs/preset-umi/dist/features/routePrefetch/routePrefetch",
"key": "routePrefetch",
"config": {},
"time": {
"hooks": {},
"register": 3
},
"enableBy": "config"
},
"./node_modules/@umijs/preset-umi/dist/features/stagewise/stagewise": {
"cwd": "D:\\trae_projects\\makemd\\makemd\\dashboard",
"type": "plugin",
"path": "D:/trae_projects/makemd/makemd/dashboard/node_modules/@umijs/preset-umi/dist/features/stagewise/stagewise.js",
"id": "./node_modules/@umijs/preset-umi/dist/features/stagewise/stagewise",
"key": "stagewise",
"config": {},
"time": {
"hooks": {},
"register": 1
},
"enableBy": "config"
},
"./node_modules/@umijs/preset-umi/dist/features/terminal/terminal": {
"cwd": "D:\\trae_projects\\makemd\\makemd\\dashboard",
"type": "plugin",
"path": "D:/trae_projects/makemd/makemd/dashboard/node_modules/@umijs/preset-umi/dist/features/terminal/terminal.js",
"id": "./node_modules/@umijs/preset-umi/dist/features/terminal/terminal",
"key": "terminal",
"config": {},
"time": {
"hooks": {},
"register": 2
},
"enableBy": "register"
},
"./node_modules/@umijs/preset-umi/dist/features/tmpFiles/tmpFiles": {
"cwd": "D:\\trae_projects\\makemd\\makemd\\dashboard",
"type": "plugin",
"path": "D:/trae_projects/makemd/makemd/dashboard/node_modules/@umijs/preset-umi/dist/features/tmpFiles/tmpFiles.js",
"id": "./node_modules/@umijs/preset-umi/dist/features/tmpFiles/tmpFiles",
"key": "tmpFiles",
"config": {},
"time": {
"hooks": {},
"register": 11
},
"enableBy": "register"
},
"./node_modules/@umijs/preset-umi/dist/features/clientLoader/clientLoader": {
"cwd": "D:\\trae_projects\\makemd\\makemd\\dashboard",
"type": "plugin",
"path": "D:/trae_projects/makemd/makemd/dashboard/node_modules/@umijs/preset-umi/dist/features/clientLoader/clientLoader.js",
"id": "./node_modules/@umijs/preset-umi/dist/features/clientLoader/clientLoader",
"key": "clientLoader",
"config": {},
"time": {
"hooks": {},
"register": 3
},
"enableBy": "config"
},
"./node_modules/@umijs/preset-umi/dist/features/routeProps/routeProps": {
"cwd": "D:\\trae_projects\\makemd\\makemd\\dashboard",
"type": "plugin",
"path": "D:/trae_projects/makemd/makemd/dashboard/node_modules/@umijs/preset-umi/dist/features/routeProps/routeProps.js",
"id": "./node_modules/@umijs/preset-umi/dist/features/routeProps/routeProps",
"key": "routeProps",
"config": {},
"time": {
"hooks": {},
"register": 1
}
},
"./node_modules/@umijs/preset-umi/dist/features/ssr/ssr": {
"cwd": "D:\\trae_projects\\makemd\\makemd\\dashboard",
"type": "plugin",
"path": "D:/trae_projects/makemd/makemd/dashboard/node_modules/@umijs/preset-umi/dist/features/ssr/ssr.js",
"id": "./node_modules/@umijs/preset-umi/dist/features/ssr/ssr",
"key": "ssr",
"config": {},
"time": {
"hooks": {},
"register": 9
},
"enableBy": "config"
},
"./node_modules/@umijs/preset-umi/dist/features/tmpFiles/configTypes": {
"cwd": "D:\\trae_projects\\makemd\\makemd\\dashboard",
"type": "plugin",
"path": "D:/trae_projects/makemd/makemd/dashboard/node_modules/@umijs/preset-umi/dist/features/tmpFiles/configTypes.js",
"id": "./node_modules/@umijs/preset-umi/dist/features/tmpFiles/configTypes",
"key": "configTypes",
"config": {},
"time": {
"hooks": {},
"register": 6
},
"enableBy": "register"
},
"./node_modules/@umijs/preset-umi/dist/features/transform/transform": {
"cwd": "D:\\trae_projects\\makemd\\makemd\\dashboard",
"type": "plugin",
"path": "D:/trae_projects/makemd/makemd/dashboard/node_modules/@umijs/preset-umi/dist/features/transform/transform.js",
"id": "./node_modules/@umijs/preset-umi/dist/features/transform/transform",
"key": "transform",
"config": {},
"time": {
"hooks": {},
"register": 25
},
"enableBy": "register"
},
"./node_modules/@umijs/preset-umi/dist/features/lowImport/lowImport": {
"cwd": "D:\\trae_projects\\makemd\\makemd\\dashboard",
"type": "plugin",
"path": "D:/trae_projects/makemd/makemd/dashboard/node_modules/@umijs/preset-umi/dist/features/lowImport/lowImport.js",
"id": "./node_modules/@umijs/preset-umi/dist/features/lowImport/lowImport",
"key": "lowImport",
"config": {},
"time": {
"hooks": {},
"register": 6
},
"enableBy": "config"
},
"./node_modules/@umijs/preset-umi/dist/features/vite/vite": {
"cwd": "D:\\trae_projects\\makemd\\makemd\\dashboard",
"type": "plugin",
"path": "D:/trae_projects/makemd/makemd/dashboard/node_modules/@umijs/preset-umi/dist/features/vite/vite.js",
"id": "./node_modules/@umijs/preset-umi/dist/features/vite/vite",
"key": "vite",
"config": {},
"time": {
"hooks": {},
"register": 1
},
"enableBy": "config"
},
"./node_modules/@umijs/preset-umi/dist/features/apiRoute/apiRoute": {
"cwd": "D:\\trae_projects\\makemd\\makemd\\dashboard",
"type": "plugin",
"path": "D:/trae_projects/makemd/makemd/dashboard/node_modules/@umijs/preset-umi/dist/features/apiRoute/apiRoute.js",
"id": "./node_modules/@umijs/preset-umi/dist/features/apiRoute/apiRoute",
"key": "apiRoute",
"config": {},
"time": {
"hooks": {},
"register": 17
}
},
"./node_modules/@umijs/preset-umi/dist/features/monorepo/redirect": {
"cwd": "D:\\trae_projects\\makemd\\makemd\\dashboard",
"type": "plugin",
"path": "D:/trae_projects/makemd/makemd/dashboard/node_modules/@umijs/preset-umi/dist/features/monorepo/redirect.js",
"id": "./node_modules/@umijs/preset-umi/dist/features/monorepo/redirect",
"key": "monorepoRedirect",
"config": {},
"time": {
"hooks": {},
"register": 75
},
"enableBy": "config"
},
"./node_modules/@umijs/preset-umi/dist/features/test/test": {
"cwd": "D:\\trae_projects\\makemd\\makemd\\dashboard",
"type": "plugin",
"path": "D:/trae_projects/makemd/makemd/dashboard/node_modules/@umijs/preset-umi/dist/features/test/test.js",
"id": "./node_modules/@umijs/preset-umi/dist/features/test/test",
"key": "test",
"config": {},
"time": {
"hooks": {},
"register": 4
}
},
"./node_modules/@umijs/preset-umi/dist/features/clickToComponent/clickToComponent": {
"cwd": "D:\\trae_projects\\makemd\\makemd\\dashboard",
"type": "plugin",
"path": "D:/trae_projects/makemd/makemd/dashboard/node_modules/@umijs/preset-umi/dist/features/clickToComponent/clickToComponent.js",
"id": "./node_modules/@umijs/preset-umi/dist/features/clickToComponent/clickToComponent",
"key": "clickToComponent",
"config": {},
"time": {
"hooks": {},
"register": 2
},
"enableBy": "config"
},
"./node_modules/@umijs/preset-umi/dist/features/legacy/legacy": {
"cwd": "D:\\trae_projects\\makemd\\makemd\\dashboard",
"type": "plugin",
"path": "D:/trae_projects/makemd/makemd/dashboard/node_modules/@umijs/preset-umi/dist/features/legacy/legacy.js",
"id": "./node_modules/@umijs/preset-umi/dist/features/legacy/legacy",
"key": "legacy",
"config": {},
"time": {
"hooks": {},
"register": 4
},
"enableBy": "config"
},
"./node_modules/@umijs/preset-umi/dist/features/classPropertiesLoose/classPropertiesLoose": {
"cwd": "D:\\trae_projects\\makemd\\makemd\\dashboard",
"type": "plugin",
"path": "D:/trae_projects/makemd/makemd/dashboard/node_modules/@umijs/preset-umi/dist/features/classPropertiesLoose/classPropertiesLoose.js",
"id": "./node_modules/@umijs/preset-umi/dist/features/classPropertiesLoose/classPropertiesLoose",
"key": "classPropertiesLoose",
"config": {},
"time": {
"hooks": {},
"register": 1
},
"enableBy": "config"
},
"./node_modules/@umijs/preset-umi/dist/features/webpack/webpack": {
"cwd": "D:\\trae_projects\\makemd\\makemd\\dashboard",
"type": "plugin",
"path": "D:/trae_projects/makemd/makemd/dashboard/node_modules/@umijs/preset-umi/dist/features/webpack/webpack.js",
"id": "./node_modules/@umijs/preset-umi/dist/features/webpack/webpack",
"key": "preset-umi:webpack",
"config": {},
"time": {
"hooks": {},
"register": 2
}
},
"./node_modules/@umijs/preset-umi/dist/features/swc/swc": {
"cwd": "D:\\trae_projects\\makemd\\makemd\\dashboard",
"type": "plugin",
"path": "D:/trae_projects/makemd/makemd/dashboard/node_modules/@umijs/preset-umi/dist/features/swc/swc.js",
"id": "./node_modules/@umijs/preset-umi/dist/features/swc/swc",
"key": "swc",
"config": {},
"time": {
"hooks": {
"addOnDemandDeps": [
0
]
},
"register": 1
},
"enableBy": "register"
},
"./node_modules/@umijs/preset-umi/dist/features/ui/ui": {
"cwd": "D:\\trae_projects\\makemd\\makemd\\dashboard",
"type": "plugin",
"path": "D:/trae_projects/makemd/makemd/dashboard/node_modules/@umijs/preset-umi/dist/features/ui/ui.js",
"id": "./node_modules/@umijs/preset-umi/dist/features/ui/ui",
"key": "ui",
"config": {},
"time": {
"hooks": {},
"register": 8
}
},
"./node_modules/@umijs/preset-umi/dist/features/mako/mako": {
"cwd": "D:\\trae_projects\\makemd\\makemd\\dashboard",
"type": "plugin",
"path": "D:/trae_projects/makemd/makemd/dashboard/node_modules/@umijs/preset-umi/dist/features/mako/mako.js",
"id": "./node_modules/@umijs/preset-umi/dist/features/mako/mako",
"key": "mako",
"config": {},
"time": {
"hooks": {},
"register": 1
},
"enableBy": "config"
},
"./node_modules/@umijs/preset-umi/dist/features/utoopack/utoopack": {
"cwd": "D:\\trae_projects\\makemd\\makemd\\dashboard",
"type": "plugin",
"path": "D:/trae_projects/makemd/makemd/dashboard/node_modules/@umijs/preset-umi/dist/features/utoopack/utoopack.js",
"id": "./node_modules/@umijs/preset-umi/dist/features/utoopack/utoopack",
"key": "utoopack",
"config": {},
"time": {
"hooks": {},
"register": 3
}
},
"./node_modules/@umijs/preset-umi/dist/features/hmrGuardian/hmrGuardian": {
"cwd": "D:\\trae_projects\\makemd\\makemd\\dashboard",
"type": "plugin",
"path": "D:/trae_projects/makemd/makemd/dashboard/node_modules/@umijs/preset-umi/dist/features/hmrGuardian/hmrGuardian.js",
"id": "./node_modules/@umijs/preset-umi/dist/features/hmrGuardian/hmrGuardian",
"key": "hmrGuardian",
"config": {},
"time": {
"hooks": {},
"register": 5
}
},
"./node_modules/@umijs/preset-umi/dist/features/routePreloadOnLoad/routePreloadOnLoad": {
"cwd": "D:\\trae_projects\\makemd\\makemd\\dashboard",
"type": "plugin",
"path": "D:/trae_projects/makemd/makemd/dashboard/node_modules/@umijs/preset-umi/dist/features/routePreloadOnLoad/routePreloadOnLoad.js",
"id": "./node_modules/@umijs/preset-umi/dist/features/routePreloadOnLoad/routePreloadOnLoad",
"key": "routePreloadOnLoad",
"config": {},
"time": {
"hooks": {},
"register": 61
}
},
"./node_modules/@umijs/preset-umi/dist/features/forget/forget": {
"cwd": "D:\\trae_projects\\makemd\\makemd\\dashboard",
"type": "plugin",
"path": "D:/trae_projects/makemd/makemd/dashboard/node_modules/@umijs/preset-umi/dist/features/forget/forget.js",
"id": "./node_modules/@umijs/preset-umi/dist/features/forget/forget",
"key": "forget",
"config": {},
"time": {
"hooks": {},
"register": 3
},
"enableBy": "config"
},
"./node_modules/@umijs/preset-umi/dist/features/bundler/bundler": {
"cwd": "D:\\trae_projects\\makemd\\makemd\\dashboard",
"type": "plugin",
"path": "D:/trae_projects/makemd/makemd/dashboard/node_modules/@umijs/preset-umi/dist/features/bundler/bundler.js",
"id": "./node_modules/@umijs/preset-umi/dist/features/bundler/bundler",
"key": "preset-umi:bundler",
"config": {},
"time": {
"hooks": {},
"register": 5
},
"enableBy": "register"
},
"./node_modules/@umijs/preset-umi/dist/commands/build": {
"cwd": "D:\\trae_projects\\makemd\\makemd\\dashboard",
"type": "plugin",
"path": "D:/trae_projects/makemd/makemd/dashboard/node_modules/@umijs/preset-umi/dist/commands/build.js",
"id": "./node_modules/@umijs/preset-umi/dist/commands/build",
"key": "build",
"config": {},
"time": {
"hooks": {},
"register": 9
},
"enableBy": "register"
},
"./node_modules/@umijs/preset-umi/dist/commands/config/config": {
"cwd": "D:\\trae_projects\\makemd\\makemd\\dashboard",
"type": "plugin",
"path": "D:/trae_projects/makemd/makemd/dashboard/node_modules/@umijs/preset-umi/dist/commands/config/config.js",
"id": "./node_modules/@umijs/preset-umi/dist/commands/config/config",
"key": "config",
"config": {},
"time": {
"hooks": {},
"register": 78
},
"enableBy": "register"
},
"./node_modules/@umijs/preset-umi/dist/commands/dev/dev": {
"cwd": "D:\\trae_projects\\makemd\\makemd\\dashboard",
"type": "plugin",
"path": "D:/trae_projects/makemd/makemd/dashboard/node_modules/@umijs/preset-umi/dist/commands/dev/dev.js",
"id": "./node_modules/@umijs/preset-umi/dist/commands/dev/dev",
"key": "dev",
"config": {},
"time": {
"hooks": {},
"register": 144
}
},
"./node_modules/@umijs/preset-umi/dist/commands/help": {
"cwd": "D:\\trae_projects\\makemd\\makemd\\dashboard",
"type": "plugin",
"path": "D:/trae_projects/makemd/makemd/dashboard/node_modules/@umijs/preset-umi/dist/commands/help.js",
"id": "./node_modules/@umijs/preset-umi/dist/commands/help",
"key": "help",
"config": {},
"time": {
"hooks": {},
"register": 2
},
"enableBy": "register"
},
"./node_modules/@umijs/preset-umi/dist/commands/lint": {
"cwd": "D:\\trae_projects\\makemd\\makemd\\dashboard",
"type": "plugin",
"path": "D:/trae_projects/makemd/makemd/dashboard/node_modules/@umijs/preset-umi/dist/commands/lint.js",
"id": "./node_modules/@umijs/preset-umi/dist/commands/lint",
"key": "lint",
"config": {},
"time": {
"hooks": {},
"register": 1
},
"enableBy": "register"
},
"./node_modules/@umijs/preset-umi/dist/commands/setup": {
"cwd": "D:\\trae_projects\\makemd\\makemd\\dashboard",
"type": "plugin",
"path": "D:/trae_projects/makemd/makemd/dashboard/node_modules/@umijs/preset-umi/dist/commands/setup.js",
"id": "./node_modules/@umijs/preset-umi/dist/commands/setup",
"key": "setup",
"config": {},
"time": {
"hooks": {},
"register": 1
},
"enableBy": "register"
},
"./node_modules/@umijs/preset-umi/dist/commands/deadcode": {
"cwd": "D:\\trae_projects\\makemd\\makemd\\dashboard",
"type": "plugin",
"path": "D:/trae_projects/makemd/makemd/dashboard/node_modules/@umijs/preset-umi/dist/commands/deadcode.js",
"id": "./node_modules/@umijs/preset-umi/dist/commands/deadcode",
"key": "deadcode",
"config": {},
"time": {
"hooks": {},
"register": 3
},
"enableBy": "register"
},
"./node_modules/@umijs/preset-umi/dist/commands/version": {
"cwd": "D:\\trae_projects\\makemd\\makemd\\dashboard",
"type": "plugin",
"path": "D:/trae_projects/makemd/makemd/dashboard/node_modules/@umijs/preset-umi/dist/commands/version.js",
"id": "./node_modules/@umijs/preset-umi/dist/commands/version",
"key": "version",
"config": {},
"time": {
"hooks": {},
"register": 1
},
"enableBy": "register"
},
"./node_modules/@umijs/preset-umi/dist/commands/generators/page": {
"cwd": "D:\\trae_projects\\makemd\\makemd\\dashboard",
"type": "plugin",
"path": "D:/trae_projects/makemd/makemd/dashboard/node_modules/@umijs/preset-umi/dist/commands/generators/page.js",
"id": "./node_modules/@umijs/preset-umi/dist/commands/generators/page",
"key": "generator:page",
"config": {},
"time": {
"hooks": {},
"register": 4
},
"enableBy": "register"
},
"./node_modules/@umijs/preset-umi/dist/commands/generators/prettier": {
"cwd": "D:\\trae_projects\\makemd\\makemd\\dashboard",
"type": "plugin",
"path": "D:/trae_projects/makemd/makemd/dashboard/node_modules/@umijs/preset-umi/dist/commands/generators/prettier.js",
"id": "./node_modules/@umijs/preset-umi/dist/commands/generators/prettier",
"key": "generator:prettier",
"config": {},
"time": {
"hooks": {},
"register": 3
},
"enableBy": "register"
},
"./node_modules/@umijs/preset-umi/dist/commands/generators/tsconfig": {
"cwd": "D:\\trae_projects\\makemd\\makemd\\dashboard",
"type": "plugin",
"path": "D:/trae_projects/makemd/makemd/dashboard/node_modules/@umijs/preset-umi/dist/commands/generators/tsconfig.js",
"id": "./node_modules/@umijs/preset-umi/dist/commands/generators/tsconfig",
"key": "generator:tsconfig",
"config": {},
"time": {
"hooks": {},
"register": 3
},
"enableBy": "register"
},
"./node_modules/@umijs/preset-umi/dist/commands/generators/jest": {
"cwd": "D:\\trae_projects\\makemd\\makemd\\dashboard",
"type": "plugin",
"path": "D:/trae_projects/makemd/makemd/dashboard/node_modules/@umijs/preset-umi/dist/commands/generators/jest.js",
"id": "./node_modules/@umijs/preset-umi/dist/commands/generators/jest",
"key": "generator:jest",
"config": {},
"time": {
"hooks": {},
"register": 2
},
"enableBy": "register"
},
"./node_modules/@umijs/preset-umi/dist/commands/generators/tailwindcss": {
"cwd": "D:\\trae_projects\\makemd\\makemd\\dashboard",
"type": "plugin",
"path": "D:/trae_projects/makemd/makemd/dashboard/node_modules/@umijs/preset-umi/dist/commands/generators/tailwindcss.js",
"id": "./node_modules/@umijs/preset-umi/dist/commands/generators/tailwindcss",
"key": "generator:tailwindcss",
"config": {},
"time": {
"hooks": {},
"register": 2
},
"enableBy": "register"
},
"./node_modules/@umijs/preset-umi/dist/commands/generators/dva": {
"cwd": "D:\\trae_projects\\makemd\\makemd\\dashboard",
"type": "plugin",
"path": "D:/trae_projects/makemd/makemd/dashboard/node_modules/@umijs/preset-umi/dist/commands/generators/dva.js",
"id": "./node_modules/@umijs/preset-umi/dist/commands/generators/dva",
"key": "generator:dva",
"config": {},
"time": {
"hooks": {},
"register": 1
},
"enableBy": "register"
},
"./node_modules/@umijs/preset-umi/dist/commands/generators/component": {
"cwd": "D:\\trae_projects\\makemd\\makemd\\dashboard",
"type": "plugin",
"path": "D:/trae_projects/makemd/makemd/dashboard/node_modules/@umijs/preset-umi/dist/commands/generators/component.js",
"id": "./node_modules/@umijs/preset-umi/dist/commands/generators/component",
"key": "generator:component",
"config": {},
"time": {
"hooks": {},
"register": 1
},
"enableBy": "register"
},
"./node_modules/@umijs/preset-umi/dist/commands/generators/mock": {
"cwd": "D:\\trae_projects\\makemd\\makemd\\dashboard",
"type": "plugin",
"path": "D:/trae_projects/makemd/makemd/dashboard/node_modules/@umijs/preset-umi/dist/commands/generators/mock.js",
"id": "./node_modules/@umijs/preset-umi/dist/commands/generators/mock",
"key": "generator:mock",
"config": {},
"time": {
"hooks": {},
"register": 1
},
"enableBy": "register"
},
"./node_modules/@umijs/preset-umi/dist/commands/generators/cypress": {
"cwd": "D:\\trae_projects\\makemd\\makemd\\dashboard",
"type": "plugin",
"path": "D:/trae_projects/makemd/makemd/dashboard/node_modules/@umijs/preset-umi/dist/commands/generators/cypress.js",
"id": "./node_modules/@umijs/preset-umi/dist/commands/generators/cypress",
"key": "generator:cypress",
"config": {},
"time": {
"hooks": {},
"register": 2
},
"enableBy": "register"
},
"./node_modules/@umijs/preset-umi/dist/commands/generators/api": {
"cwd": "D:\\trae_projects\\makemd\\makemd\\dashboard",
"type": "plugin",
"path": "D:/trae_projects/makemd/makemd/dashboard/node_modules/@umijs/preset-umi/dist/commands/generators/api.js",
"id": "./node_modules/@umijs/preset-umi/dist/commands/generators/api",
"key": "generator:api",
"config": {},
"time": {
"hooks": {},
"register": 1
},
"enableBy": "register"
},
"./node_modules/@umijs/preset-umi/dist/commands/generators/precommit": {
"cwd": "D:\\trae_projects\\makemd\\makemd\\dashboard",
"type": "plugin",
"path": "D:/trae_projects/makemd/makemd/dashboard/node_modules/@umijs/preset-umi/dist/commands/generators/precommit.js",
"id": "./node_modules/@umijs/preset-umi/dist/commands/generators/precommit",
"key": "generator:precommit",
"config": {},
"time": {
"hooks": {},
"register": 2
},
"enableBy": "register"
},
"./node_modules/@umijs/preset-umi/dist/commands/plugin": {
"cwd": "D:\\trae_projects\\makemd\\makemd\\dashboard",
"type": "plugin",
"path": "D:/trae_projects/makemd/makemd/dashboard/node_modules/@umijs/preset-umi/dist/commands/plugin.js",
"id": "./node_modules/@umijs/preset-umi/dist/commands/plugin",
"key": "command:plugin",
"config": {},
"time": {
"hooks": {},
"register": 2
},
"enableBy": "register"
},
"./node_modules/@umijs/preset-umi/dist/commands/verify-commit": {
"cwd": "D:\\trae_projects\\makemd\\makemd\\dashboard",
"type": "plugin",
"path": "D:/trae_projects/makemd/makemd/dashboard/node_modules/@umijs/preset-umi/dist/commands/verify-commit.js",
"id": "./node_modules/@umijs/preset-umi/dist/commands/verify-commit",
"key": "verifyCommit",
"config": {},
"time": {
"hooks": {},
"register": 2
},
"enableBy": "register"
},
"./node_modules/@umijs/preset-umi/dist/commands/preview": {
"cwd": "D:\\trae_projects\\makemd\\makemd\\dashboard",
"type": "plugin",
"path": "D:/trae_projects/makemd/makemd/dashboard/node_modules/@umijs/preset-umi/dist/commands/preview.js",
"id": "./node_modules/@umijs/preset-umi/dist/commands/preview",
"key": "preview",
"config": {},
"time": {
"hooks": {},
"register": 40
},
"enableBy": "register"
},
"./node_modules/@umijs/preset-umi/dist/commands/mfsu/mfsu": {
"cwd": "D:\\trae_projects\\makemd\\makemd\\dashboard",
"type": "plugin",
"path": "D:/trae_projects/makemd/makemd/dashboard/node_modules/@umijs/preset-umi/dist/commands/mfsu/mfsu.js",
"id": "./node_modules/@umijs/preset-umi/dist/commands/mfsu/mfsu",
"key": "mfsu-cli",
"config": {},
"time": {
"hooks": {},
"register": 2
},
"enableBy": "register"
},
"@umijs/plugin-run": {
"cwd": "D:\\trae_projects\\makemd\\makemd\\dashboard",
"type": "plugin",
"path": "D:/trae_projects/makemd/makemd/dashboard/node_modules/@umijs/plugin-run/dist/index.js",
"id": "@umijs/plugin-run",
"key": "run",
"config": {},
"time": {
"hooks": {},
"register": 7
},
"enableBy": "register"
},
"./node_modules/@umijs/core/dist/service/generatePlugin": {
"cwd": "D:\\trae_projects\\makemd\\makemd\\dashboard",
"type": "plugin",
"path": "D:/trae_projects/makemd/makemd/dashboard/node_modules/@umijs/core/dist/service/generatePlugin.js",
"id": "./node_modules/@umijs/core/dist/service/generatePlugin",
"key": "generatePlugin",
"config": {},
"time": {
"hooks": {},
"register": 1
},
"enableBy": "register"
}
},
"presets": [],
"name": "setup",
"args": {
"_": []
},
"userConfig": {
"routes": [
{
"path": "/",
"component": "@/pages/Homepage",
"layout": false
},
{
"path": "/pricing",
"component": "@/pages/Pricing",
"layout": false
},
{
"path": "/case-study",
"component": "@/pages/CaseStudy",
"layout": false
},
{
"path": "/case-study/:id",
"component": "@/pages/CaseStudy",
"layout": false
},
{
"path": "/auth",
"layout": false,
"routes": [
{
"path": "login",
"component": "@/pages/Auth/LoginPage"
},
{
"path": "register",
"component": "@/pages/Auth/RegisterPage"
}
]
},
{
"path": "/dashboard",
"layout": "@/layouts/index",
"routes": [
{
"path": "",
"component": "@/pages/OperationAgent"
},
{
"path": "operation-agent",
"component": "@/pages/OperationAgent"
}
]
}
],
"fastRefresh": true
},
"mainConfigFile": "D:\\trae_projects\\makemd\\makemd\\dashboard\\.umirc.ts",
"config": {
"routeLoader": {
"moduleType": "esm"
},
"mountElementId": "root",
"history": {
"type": "browser"
},
"base": "/",
"svgr": {},
"publicPath": "/",
"mfsu": {
"strategy": "eager"
},
"ignoreMomentLocale": true,
"externals": {},
"autoCSSModules": true,
"alias": {
"umi": "@@/exports",
"react": "D:\\trae_projects\\makemd\\makemd\\dashboard\\node_modules\\react",
"react-dom": "D:\\trae_projects\\makemd\\makemd\\dashboard\\node_modules\\react-dom",
"react-router": "D:\\trae_projects\\makemd\\makemd\\dashboard\\node_modules\\react-router",
"react-router-dom": "D:\\trae_projects\\makemd\\makemd\\dashboard\\node_modules\\react-router-dom",
"@": "D:/trae_projects/makemd/makemd/dashboard/src",
"@@": "D:/trae_projects/makemd/makemd/dashboard/src/.umi",
"regenerator-runtime": "D:\\trae_projects\\makemd\\makemd\\dashboard\\node_modules\\regenerator-runtime"
},
"routes": [
{
"path": "/",
"component": "@/pages/Homepage",
"layout": false
},
{
"path": "/pricing",
"component": "@/pages/Pricing",
"layout": false
},
{
"path": "/case-study",
"component": "@/pages/CaseStudy",
"layout": false
},
{
"path": "/case-study/:id",
"component": "@/pages/CaseStudy",
"layout": false
},
{
"path": "/auth",
"layout": false,
"routes": [
{
"path": "login",
"component": "@/pages/Auth/LoginPage"
},
{
"path": "register",
"component": "@/pages/Auth/RegisterPage"
}
]
},
{
"path": "/dashboard",
"layout": "@/layouts/index",
"routes": [
{
"path": "",
"component": "@/pages/OperationAgent"
},
{
"path": "operation-agent",
"component": "@/pages/OperationAgent"
}
]
}
],
"fastRefresh": true,
"targets": {
"chrome": 80
}
},
"routes": {
"1": {
"path": "/",
"layout": false,
"file": "@/pages/Homepage.tsx",
"id": "1",
"absPath": "/",
"__content": "import React, { useState, useEffect } from 'react';\nimport { Link, useNavigate } from 'umi';\nimport { Button, Typography, Row, Col, Card, Divider } from 'antd';\nimport { ArrowRightOutlined, CheckCircleOutlined, MenuOutlined, XOutlined, TwitterOutlined, LinkedinOutlined, GithubOutlined } from '@ant-design/icons';\nimport Navbar from '@/components/Navbar';\n\nconst { Title, Paragraph, Text } = Typography;\n\nconst Homepage: React.FC = () => {\n const navigate = useNavigate();\n const [isScrolled, setIsScrolled] = useState(false);\n const [isMobileMenuOpen, setIsMobileMenuOpen] = useState(false);\n\n useEffect(() => {\n const handleScroll = () => {\n setIsScrolled(window.scrollY > 50);\n };\n window.addEventListener('scroll', handleScroll);\n return () => window.removeEventListener('scroll', handleScroll);\n }, []);\n\n const features = [\n {\n title: '智能选品系统',\n description: '基于AI的商品推荐自动识别高潜力商品提升选品效率',\n },\n {\n title: 'AI动态定价',\n description: '实时市场分析,优化定价策略,最大化利润',\n },\n {\n title: '自动上架系统',\n description: '一键批量上架,节省人工成本,提高运营效率',\n },\n {\n title: '跨平台套利',\n description: '发现价格差异,实现利润最大化,降低运营风险',\n },\n {\n title: 'AI店铺托管',\n description: '24/7智能运营解放人力提升店铺表现',\n },\n {\n title: '多商户管理',\n description: '集中管理多店铺,数据一目了然,简化管理流程',\n },\n ];\n\n const stats = [\n { title: '平均提升', value: '30%', suffix: '运营效率' },\n { title: '平均提升', value: '25%', suffix: '利润率' },\n { title: '支持商户', value: '1000+', suffix: '同时在线' },\n ];\n\n return (\n <div className=\"homepage\" style={{ \n fontFamily: '-apple-system, BlinkMacSystemFont, \\'Segoe UI\\', Roboto, \\'Helvetica Neue\\', Arial, sans-serif',\n overflowX: 'hidden'\n }}>\n <Navbar />\n\n {/* 英雄区 */}\n <section className=\"hero\" style={{ \n padding: '180px 0 120px', \n background: 'linear-gradient(135deg, #0a192f 0%, #172a45 100%)',\n position: 'relative',\n overflow: 'hidden'\n }}>\n {/* 背景装饰 */}\n <div style={{\n position: 'absolute',\n top: 0,\n left: 0,\n right: 0,\n bottom: 0,\n backgroundImage: 'radial-gradient(circle at 25% 25%, rgba(24, 144, 255, 0.15) 0%, transparent 50%), radial-gradient(circle at 75% 75%, rgba(54, 207, 201, 0.15) 0%, transparent 50%)',\n zIndex: 1\n }} />\n {/* 网格背景 */}\n <div style={{\n position: 'absolute',\n top: 0,\n left: 0,\n right: 0,\n bottom: 0,\n backgroundImage: 'linear-gradient(rgba(255, 255, 255, 0.03) 1px, transparent 1px), linear-gradient(90deg, rgba(255, 255, 255, 0.03) 1px, transparent 1px)',\n backgroundSize: '40px 40px',\n zIndex: 1\n }} />\n <div className=\"container\" style={{ maxWidth: '1200px', margin: '0 auto', padding: '0 20px', position: 'relative', zIndex: 2 }}>\n <Row align=\"middle\" gutter={[48, 48]}>\n <Col xs={24} md={12} style={{ textAlign: 'left' }}>\n <div style={{ \n display: 'inline-block', \n background: 'rgba(24, 144, 255, 0.15)', \n color: '#1890ff', \n padding: '10px 20px', \n borderRadius: '25px', \n fontSize: '14px', \n fontWeight: '600',\n marginBottom: '32px',\n boxShadow: '0 4px 12px rgba(24, 144, 255, 0.15)'\n }}>\n AI · \n </div>\n <Title level={1} style={{ \n color: '#fff', \n margi
"__isJSFile": true,
"__absFile": "D:/trae_projects/makemd/makemd/dashboard/src/pages/Homepage.tsx"
},
"2": {
"path": "/pricing",
"layout": false,
"file": "@/pages/Pricing.tsx",
"id": "2",
"absPath": "/pricing",
"__content": "import React, { useState } from 'react';\nimport { Link, useNavigate } from 'umi';\nimport { Card, Button, Typography, Divider, Radio, Row, Col, Tag, Alert } from 'antd';\nimport { CheckCircleOutlined, CloseCircleOutlined, ArrowRightOutlined, DollarOutlined, UsersOutlined, ShieldOutlined, BarChartOutlined, ZapOutlined, GlobeOutlined, StarOutlined } from '@ant-design/icons';\nimport Navbar from '@/components/Navbar';\n\nconst { Title, Paragraph, Text } = Typography;\n\nconst Pricing: React.FC = () => {\n const navigate = useNavigate();\n const [billingCycle, setBillingCycle] = useState<'monthly' | 'yearly'>('monthly');\n\n const plans = [\n {\n name: '免费版',\n price: 0,\n billing: '永久免费',\n features: [\n '基础功能',\n '最多1个店铺',\n '500条商品数据',\n '邮件支持',\n '基础报表',\n '手动操作',\n ],\n cta: '开始免费使用',\n popular: false,\n buttonType: 'primary',\n onClick: () => navigate('/auth/register'),\n },\n {\n name: '专业版',\n price: billingCycle === 'monthly' ? 999 : 9990,\n billing: billingCycle === 'monthly' ? '每月' : '每年',\n features: [\n '所有核心功能',\n '最多10个店铺',\n '5000条商品数据',\n '优先邮件支持',\n '高级报表',\n 'AI智能选品',\n '自动上架',\n '动态定价',\n '跨平台套利',\n ],\n cta: '选择专业版',\n popular: true,\n buttonType: 'primary',\n onClick: () => navigate('/checkout?plan=professional'),\n },\n {\n name: '企业版',\n price: 0,\n billing: '定制',\n features: [\n '完整功能',\n '无限店铺',\n '无限商品数据',\n '24/7专属支持',\n '定制化报表',\n 'AI店铺托管',\n '定制化开发',\n 'API接入',\n '专属客户经理',\n ],\n cta: '联系销售',\n popular: false,\n buttonType: 'default',\n onClick: () => navigate('/contact'),\n },\n ];\n\n const compareFeatures = [\n { feature: '核心功能', free: true, professional: true, enterprise: true },\n { feature: '店铺数量', free: '1个', professional: '10个', enterprise: '无限' },\n { feature: '商品数据', free: '500条', professional: '5000条', enterprise: '无限' },\n { feature: 'AI智能选品', free: false, professional: true, enterprise: true },\n { feature: '自动上架', free: false, professional: true, enterprise: true },\n { feature: '动态定价', free: false, professional: true, enterprise: true },\n { feature: '跨平台套利', free: false, professional: true, enterprise: true },\n { feature: 'AI店铺托管', free: false, professional: false, enterprise: true },\n { feature: '技术支持', free: '邮件', professional: '优先邮件', enterprise: '24/7专属' },\n { feature: '定制化开发', free: false, professional: false, enterprise: true },\n { feature: 'API接入', free: false, professional: false, enterprise: true },\n ];\n\n return (\n <div className=\"pricing-page\">\n <Navbar />\n {/* 页面头部 */}\n <section className=\"pricing-header\">\n <div className=\"container\">\n <Title level={1}>选择适合您的方案</Title>\n <Paragraph className=\"subtitle\">\n 无论您是个人卖家还是大型企业,我们都有适合您的解决方案\n </Paragraph>\n <div className=\"billing-cycle\">\n <Text>月付</Text>\n <Radio.Group value={billingCycle} onChange={(e) => setBillingCycle(e.target.value)}>\n <Radio.Button value=\"monthly\">月付</Radio.Button>\n <Radio.Button value=\"yearly\">年付 <Tag color=\"green\">16%</Tag></Radio.Button>\n </Radio.Group>\n <Text></Text>\n </div>\n </div>\n </section>\n\n {/* */}\n <
"__isJSFile": true,
"__absFile": "D:/trae_projects/makemd/makemd/dashboard/src/pages/Pricing.tsx"
},
"3": {
"path": "/case-study",
"layout": false,
"file": "@/pages/CaseStudy.tsx",
"id": "3",
"absPath": "/case-study",
"__content": "import React, { useState } from 'react';\nimport { Link, useNavigate } from 'umi';\nimport { Card, Button, Typography, Row, Col, Tag, Carousel, Pagination } from 'antd';\nimport { ArrowRightOutlined, CheckCircleOutlined, DollarOutlined, BarChartOutlined, ZapOutlined, GlobeOutlined, StarOutlined, UserOutlined, CompanyOutlined, TrendingUpOutlined } from '@ant-design/icons';\nimport Navbar from '@/components/Navbar';\n\nconst { Title, Paragraph, Text } = Typography;\n\nconst CaseStudy: React.FC = () => {\n const navigate = useNavigate();\n const [activeCategory, setActiveCategory] = useState('all');\n const [currentPage, setCurrentPage] = useState(1);\n\n const caseStudies = [\n {\n id: 1,\n title: '中小商户案例月销售额提升45%',\n category: 'small',\n company: '广州某跨境电商公司',\n industry: '电子产品',\n challenge: '手动选品效率低,定价策略单一,运营成本高',\n solution: '使用智能选品系统和AI动态定价实现自动化运营',\n results: [\n '月销售额提升45%',\n '运营成本降低30%',\n '选品效率提升60%',\n ],\n testimonial: '\"Crawlful Hub帮助我们实现了店铺的自动化运营节省了大量人力成本销售额提升了40%。\"',\n author: '张总',\n position: 'CEO',\n image: 'data:image/svg+xml,%3Csvg xmlns=%27http://www.w3.org/2000/svg%27 width=%27600%27 height=%27400%27 viewBox=%270 0 600 400%27%3E%3Crect width=%27600%27 height=%27400%27 fill=%27%23f0f2f5%27/%3E%3Ctext x=%2750%25%27 y=%2750%25%27 dominant-baseline=%27middle%27 text-anchor=%27middle%27 font-family=%27Arial%27 font-size=%2716%27 fill=%27%231890ff%27%3E成功案例展示%3C/text%3E%3C/svg%3E',\n },\n {\n id: 2,\n title: '大型企业案例多店铺管理效率提升60%',\n category: 'enterprise',\n company: '深圳某品牌电商',\n industry: '服装行业',\n challenge: '多店铺管理复杂,数据分散,难以统一运营',\n solution: '使用多店铺管理系统,实现数据集中管理和统一运营',\n results: [\n '管理效率提升60%',\n '数据处理时间减少70%',\n '运营成本降低25%',\n ],\n testimonial: '\"多店铺管理功能让我们能够集中管理所有店铺,数据一目了然,大大提高了管理效率。\"',\n author: '李经理',\n position: '运营总监',\n image: 'data:image/svg+xml,%3Csvg xmlns=%27http://www.w3.org/2000/svg%27 width=%27600%27 height=%27400%27 viewBox=%270 0 600 400%27%3E%3Crect width=%27600%27 height=%27400%27 fill=%27%23f0f2f5%27/%3E%3Ctext x=%2750%25%27 y=%2750%25%27 dominant-baseline=%27middle%27 text-anchor=%27middle%27 font-family=%27Arial%27 font-size=%2716%27 fill=%27%231890ff%27%3E成功案例展示%3C/text%3E%3C/svg%3E',\n },\n {\n id: 3,\n title: '跨境电商案例利润率提升30%',\n category: 'crossborder',\n company: '杭州某跨境电商平台',\n industry: '家居用品',\n challenge: '跨平台价格差异难以把握,利润空间小',\n solution: '使用跨平台套利系统,发现价格差异,优化定价策略',\n results: [\n '利润率提升30%',\n '价格优化效率提升80%',\n '市场竞争力增强',\n ],\n testimonial: '\"跨平台套利系统帮助我们发现了很多价格差异利润率提高了30%,市场竞争力大大增强。\"',\n author: '',\n position: '',\n image: 'data:image/svg+xml,%3Csvg xmlns=%27http://www.w3.org/2000/svg%27 width=%27600%27 height=%27400%27 viewBox=%270 0 600 400%27%3E%3Crect width=%27600%27 height=%27400%27 fill=%27%23f0f2f5%27/%3E%3Ctext x=%2750%25%27 y=%2750%25%27 dominant-baseline=%27middle%27 text-anchor=%27middle%27 font-family=%27Arial%27 font-size=%2716%27 fill=%27%231890ff%27%3E成功案例展示%3C/text%3E%3C/svg%3E',\n },\n {\n id: 4,\n title: '新手卖家案例:快速启动电商
"__isJSFile": true,
"__absFile": "D:/trae_projects/makemd/makemd/dashboard/src/pages/CaseStudy.tsx"
},
"4": {
"path": "/case-study/:id",
"layout": false,
"file": "@/pages/CaseStudy.tsx",
"id": "4",
"absPath": "/case-study/:id",
"__content": "import React, { useState } from 'react';\nimport { Link, useNavigate } from 'umi';\nimport { Card, Button, Typography, Row, Col, Tag, Carousel, Pagination } from 'antd';\nimport { ArrowRightOutlined, CheckCircleOutlined, DollarOutlined, BarChartOutlined, ZapOutlined, GlobeOutlined, StarOutlined, UserOutlined, CompanyOutlined, TrendingUpOutlined } from '@ant-design/icons';\nimport Navbar from '@/components/Navbar';\n\nconst { Title, Paragraph, Text } = Typography;\n\nconst CaseStudy: React.FC = () => {\n const navigate = useNavigate();\n const [activeCategory, setActiveCategory] = useState('all');\n const [currentPage, setCurrentPage] = useState(1);\n\n const caseStudies = [\n {\n id: 1,\n title: '中小商户案例月销售额提升45%',\n category: 'small',\n company: '广州某跨境电商公司',\n industry: '电子产品',\n challenge: '手动选品效率低,定价策略单一,运营成本高',\n solution: '使用智能选品系统和AI动态定价实现自动化运营',\n results: [\n '月销售额提升45%',\n '运营成本降低30%',\n '选品效率提升60%',\n ],\n testimonial: '\"Crawlful Hub帮助我们实现了店铺的自动化运营节省了大量人力成本销售额提升了40%。\"',\n author: '张总',\n position: 'CEO',\n image: 'data:image/svg+xml,%3Csvg xmlns=%27http://www.w3.org/2000/svg%27 width=%27600%27 height=%27400%27 viewBox=%270 0 600 400%27%3E%3Crect width=%27600%27 height=%27400%27 fill=%27%23f0f2f5%27/%3E%3Ctext x=%2750%25%27 y=%2750%25%27 dominant-baseline=%27middle%27 text-anchor=%27middle%27 font-family=%27Arial%27 font-size=%2716%27 fill=%27%231890ff%27%3E成功案例展示%3C/text%3E%3C/svg%3E',\n },\n {\n id: 2,\n title: '大型企业案例多店铺管理效率提升60%',\n category: 'enterprise',\n company: '深圳某品牌电商',\n industry: '服装行业',\n challenge: '多店铺管理复杂,数据分散,难以统一运营',\n solution: '使用多店铺管理系统,实现数据集中管理和统一运营',\n results: [\n '管理效率提升60%',\n '数据处理时间减少70%',\n '运营成本降低25%',\n ],\n testimonial: '\"多店铺管理功能让我们能够集中管理所有店铺,数据一目了然,大大提高了管理效率。\"',\n author: '李经理',\n position: '运营总监',\n image: 'data:image/svg+xml,%3Csvg xmlns=%27http://www.w3.org/2000/svg%27 width=%27600%27 height=%27400%27 viewBox=%270 0 600 400%27%3E%3Crect width=%27600%27 height=%27400%27 fill=%27%23f0f2f5%27/%3E%3Ctext x=%2750%25%27 y=%2750%25%27 dominant-baseline=%27middle%27 text-anchor=%27middle%27 font-family=%27Arial%27 font-size=%2716%27 fill=%27%231890ff%27%3E成功案例展示%3C/text%3E%3C/svg%3E',\n },\n {\n id: 3,\n title: '跨境电商案例利润率提升30%',\n category: 'crossborder',\n company: '杭州某跨境电商平台',\n industry: '家居用品',\n challenge: '跨平台价格差异难以把握,利润空间小',\n solution: '使用跨平台套利系统,发现价格差异,优化定价策略',\n results: [\n '利润率提升30%',\n '价格优化效率提升80%',\n '市场竞争力增强',\n ],\n testimonial: '\"跨平台套利系统帮助我们发现了很多价格差异利润率提高了30%,市场竞争力大大增强。\"',\n author: '',\n position: '',\n image: 'data:image/svg+xml,%3Csvg xmlns=%27http://www.w3.org/2000/svg%27 width=%27600%27 height=%27400%27 viewBox=%270 0 600 400%27%3E%3Crect width=%27600%27 height=%27400%27 fill=%27%23f0f2f5%27/%3E%3Ctext x=%2750%25%27 y=%2750%25%27 dominant-baseline=%27middle%27 text-anchor=%27middle%27 font-family=%27Arial%27 font-size=%2716%27 fill=%27%231890ff%27%3E成功案例展示%3C/text%3E%3C/svg%3E',\n },\n {\n id: 4,\n title: '新手卖家案例:快速启动电商
"__isJSFile": true,
"__absFile": "D:/trae_projects/makemd/makemd/dashboard/src/pages/CaseStudy.tsx"
},
"5": {
"path": "/auth",
"layout": false,
"id": "5",
"absPath": "/auth"
},
"6": {
"path": "login",
"file": "@/pages/Auth/LoginPage.tsx",
"parentId": "5",
"id": "6",
"absPath": "/auth/login",
"__content": "import React, { useState } from 'react';\nimport { useNavigate } from 'umi';\nimport {\n Card,\n Form,\n Input,\n Button,\n Checkbox,\n Space,\n Divider,\n Typography,\n Alert,\n message,\n Row,\n Col,\n Image,\n} from 'antd';\nimport {\n UserOutlined,\n LockOutlined,\n SafetyOutlined,\n EyeInvisibleOutlined,\n EyeTwoTone,\n LoginOutlined,\n GoogleOutlined,\n GithubOutlined,\n} from '@ant-design/icons';\n\nconst { Title, Text, Link } = Typography;\n\ninterface LoginFormValues {\n username: string;\n password: string;\n remember: boolean;\n captcha?: string;\n}\n\nexport const LoginPage: React.FC = () => {\n const [form] = Form.useForm();\n const [loading, setLoading] = useState(false);\n const [loginError, setLoginError] = useState<string | null>(null);\n const [captchaCode, setCaptchaCode] = useState('');\n const navigate = useNavigate();\n\n const generateCaptcha = () => {\n const chars = 'ABCDEFGHJKLMNPQRSTUVWXYZ23456789';\n let result = '';\n for (let i = 0; i < 4; i++) {\n result += chars.charAt(Math.floor(Math.random() * chars.length));\n }\n setCaptchaCode(result);\n };\n\n React.useEffect(() => {\n generateCaptcha();\n }, []);\n\n const handleLogin = async (values: LoginFormValues) => {\n setLoading(true);\n setLoginError(null);\n\n try {\n await new Promise(resolve => setTimeout(resolve, 1500));\n\n if (values.captcha?.toUpperCase() !== captchaCode) {\n setLoginError('Invalid verification code');\n generateCaptcha();\n setLoading(false);\n return;\n }\n\n message.success('Login successful! Redirecting...');\n setTimeout(() => {\n navigate('/dashboard');\n }, 1000);\n } catch (error) {\n setLoginError('Login failed. Please check your credentials.');\n } finally {\n setLoading(false);\n }\n };\n\n return (\n <div style={{\n minHeight: '100vh',\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n background: 'linear-gradient(135deg, #667eea 0%, #764ba2 100%)',\n padding: 24,\n }}>\n <Row gutter={[48, 0]} align=\"middle\" style={{ maxWidth: 1000, width: '100%' }}>\n <Col xs={0} md={12}>\n <div style={{ color: 'white', paddingRight: 48 }}>\n <Title level={1} style={{ color: 'white', marginBottom: 24 }}>\n Crawlful Hub\n </Title>\n <Text style={{ color: 'rgba(255,255,255,0.9)', fontSize: 18, display: 'block', marginBottom: 32 }}>\n Your all-in-one cross-border e-commerce management platform\n </Text>\n <Space direction=\"vertical\" size=\"large\" style={{ color: 'rgba(255,255,255,0.8)' }}>\n <div>✓ Multi-platform integration</div>\n <div>✓ Automated operations</div>\n <div>✓ Real-time analytics</div>\n <div>✓ Compliance management</div>\n </Space>\n </div>\n </Col>\n\n <Col xs={24} md={12}>\n <Card\n style={{\n borderRadius: 16,\n boxShadow: '0 20px 60px rgba(0,0,0,0.3)',\n }}\n bodyStyle={{ padding: 40 }}\n >\n <div style={{ textAlign: 'center', marginBottom: 32 }}>\n <Title level={3}>Welcome Back</Title>\n <Text type=\"secondary\">Sign in to your account</Text>\n </div>\n\n {loginError && (\n <Alert\n message={loginError}\n type=\"error\"\n showIcon\n style={{ marginBottom: 24 }}\n closable\n onClose={() => setLoginError(null)}\n />\n )}\n\n <Form\n form={form}\n layout=\"vertical\"\n onFinish={handleLogin}\n initialValues={{ remember: true }}\n >\n <Form.Item\n name=\"username\"\n rules={[\n { required: true
"__isJSFile": true,
"__absFile": "D:/trae_projects/makemd/makemd/dashboard/src/pages/Auth/LoginPage.tsx"
},
"7": {
"path": "register",
"file": "@/pages/Auth/RegisterPage.tsx",
"parentId": "5",
"id": "7",
"absPath": "/auth/register",
"__content": "import React, { useState } from 'react';\nimport {\n Card,\n Form,\n Input,\n Button,\n Checkbox,\n Space,\n Divider,\n Typography,\n Alert,\n message,\n Steps,\n Row,\n Col,\n Select,\n} from 'antd';\nimport {\n UserOutlined,\n LockOutlined,\n MailOutlined,\n SafetyOutlined,\n EyeInvisibleOutlined,\n EyeTwoTone,\n UserAddOutlined,\n CheckCircleOutlined,\n ArrowLeftOutlined,\n ArrowRightOutlined,\n BankOutlined,\n PhoneOutlined,\n} from '@ant-design/icons';\n\nconst { Title, Text, Link } = Typography;\nconst { Step } = Steps;\nconst { Option } = Select;\n\ninterface RegisterFormValues {\n username: string;\n email: string;\n password: string;\n confirmPassword: string;\n companyName: string;\n phone: string;\n businessType: string;\n agreeTerms: boolean;\n captcha: string;\n}\n\nexport const RegisterPage: React.FC = () => {\n const [form] = Form.useForm();\n const [currentStep, setCurrentStep] = useState(0);\n const [loading, setLoading] = useState(false);\n const [registerError, setRegisterError] = useState<string | null>(null);\n const [captchaCode, setCaptchaCode] = useState('');\n const [registrationComplete, setRegistrationComplete] = useState(false);\n\n const generateCaptcha = () => {\n const chars = 'ABCDEFGHJKLMNPQRSTUVWXYZ23456789';\n let result = '';\n for (let i = 0; i < 4; i++) {\n result += chars.charAt(Math.floor(Math.random() * chars.length));\n }\n setCaptchaCode(result);\n };\n\n React.useEffect(() => {\n generateCaptcha();\n }, []);\n\n const steps = [\n { title: 'Account', description: 'Basic info' },\n { title: 'Business', description: 'Company details' },\n { title: 'Verify', description: 'Confirmation' },\n ];\n\n const nextStep = async () => {\n try {\n if (currentStep === 0) {\n await form.validateFields(['username', 'email', 'password', 'confirmPassword']);\n } else if (currentStep === 1) {\n await form.validateFields(['companyName', 'phone', 'businessType']);\n }\n setCurrentStep(currentStep + 1);\n } catch (error) {\n // Validation failed\n }\n };\n\n const prevStep = () => {\n setCurrentStep(currentStep - 1);\n };\n\n const handleRegister = async (values: RegisterFormValues) => {\n setLoading(true);\n setRegisterError(null);\n\n try {\n await new Promise(resolve => setTimeout(resolve, 2000));\n\n if (values.captcha?.toUpperCase() !== captchaCode) {\n setRegisterError('Invalid verification code');\n generateCaptcha();\n setLoading(false);\n return;\n }\n\n setRegistrationComplete(true);\n message.success('Registration successful!');\n } catch (error) {\n setRegisterError('Registration failed. Please try again.');\n } finally {\n setLoading(false);\n }\n };\n\n if (registrationComplete) {\n return (\n <div style={{\n minHeight: '100vh',\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n background: 'linear-gradient(135deg, #667eea 0%, #764ba2 100%)',\n padding: 24,\n }}>\n <Card style={{ maxWidth: 500, width: '100%', textAlign: 'center', borderRadius: 16 }}>\n <CheckCircleOutlined style={{ fontSize: 80, color: '#52c41a', marginBottom: 24 }} />\n <Title level={3}>Registration Complete!</Title>\n <Text type=\"secondary\" style={{ display: 'block', marginBottom: 24 }}>\n Your account has been created successfully. Please check your email to verify your account.\n </Text>\n <Button type=\"primary\" size=\"large\" href=\"/auth/login\">\n Go to Login\n </Button>\n </Card>\n </div>\n );\n }\n\n return (\n <div style={{\n minHeight: '100vh',\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n background: 'linear-gradient(135deg, #667eea 0%, #764ba2 100%)',\n padding: 24,\n }}>\n <Card\n style={{\n maxWidth: 600,\n
"__isJSFile": true,
"__absFile": "D:/trae_projects/makemd/makemd/dashboard/src/pages/Auth/RegisterPage.tsx"
},
"8": {
"path": "/dashboard",
"layout": "@/layouts/index",
"parentId": "@@/global-layout",
"id": "8",
"absPath": "/dashboard"
},
"9": {
"path": "",
"file": "@/pages/OperationAgent.tsx",
"parentId": "8",
"id": "9",
"absPath": "/dashboard",
"__content": "import React, { useState, useEffect } from 'react';\nimport { Button, Table, Form, Input, Select, Modal, message, Card, Tabs, Space, Tag, Divider, Alert } from 'antd';\nimport { PlusOutlined, SyncOutlined, EditOutlined, DeleteOutlined, CheckOutlined, CloseOutlined, LoadingOutlined } from '@ant-design/icons';\nimport { operationAgentService, Store, StoreBindingData } from '../services/operationAgentService';\n\nconst { Option } = Select;\nconst { TabPane } = Tabs;\nconst { TextArea } = Input;\n\nconst platforms = [\n { value: 'amazon', label: 'Amazon' },\n { value: 'shopee', label: 'Shopee' },\n { value: 'aliexpress', label: 'AliExpress' },\n { value: 'tiktok', label: 'TikTok' },\n { value: 'ebay', label: 'Ebay' },\n { value: 'lazada', label: 'Lazada' },\n { value: 'wish', label: 'Wish' },\n { value: 'shein', label: 'Shein' },\n { value: 'jd_worldwide', label: 'JD Worldwide' },\n { value: 'walmart', label: 'Walmart' },\n { value: 'etsy', label: 'Etsy' },\n { value: 'target', label: 'Target' },\n { value: 'newegg', label: 'Newegg' },\n { value: 'cdiscount', label: 'Cdiscount' },\n { value: 'allegro', label: 'Allegro' },\n { value: 'otto', label: 'Otto' },\n { value: 'rakuten', label: 'Rakuten' },\n { value: 'qoo10', label: 'Qoo10' },\n];\n\nconst statusMap = {\n active: { color: 'green', text: '' },\n inactive: { color: 'red', text: '' },\n pending: { color: 'orange', text: '' },\n suspended: { color: 'gray', text: '' },\n};\n\nconst OperationAgent: React.FC = () => {\n const [stores, setStores] = useState<Store[]>([]);\n const [loading, setLoading] = useState(false);\n const [bindingModalVisible, setBindingModalVisible] = useState(false);\n const [currentStore, setCurrentStore] = useState<Store | null>(null);\n const [merchantId, setMerchantId] = useState('merchant-1'); // 默认商户ID\n const [form] = Form.useForm();\n\n // 加载店铺列表\n const loadStores = async () => {\n setLoading(true);\n try {\n const data = await operationAgentService.getStores(merchantId);\n setStores(data);\n } catch (error) {\n message.error('加载店铺失败');\n console.error(error);\n } finally {\n setLoading(false);\n }\n };\n\n // 初始加载\n useEffect(() => {\n loadStores();\n }, [merchantId]);\n\n // 绑定店铺\n const handleBindStore = async (values: any) => {\n setLoading(true);\n try {\n const bindingData: StoreBindingData = {\n merchantId: values.merchantId,\n platform: values.platform,\n platformShopId: values.platformShopId,\n name: values.name,\n description: values.description,\n authInfo: {\n ...(values.platform === 'amazon' && {\n accessKey: values.accessKey,\n secretKey: values.secretKey,\n sellerId: values.sellerId,\n marketplaceId: values.marketplaceId,\n }),\n ...(values.platform === 'shopee' && {\n partnerId: values.partnerId,\n partnerKey: values.partnerKey,\n shopId: values.shopId,\n }),\n ...(values.platform === 'aliexpress' && {\n appKey: values.appKey,\n appSecret: values.appSecret,\n accessToken: values.accessToken,\n }),\n ...(values.platform === 'tiktok' && {\n appId: values.appId,\n appSecret: values.appSecret,\n accessToken: values.accessToken,\n }),\n ...(values.platform === 'ebay' && {\n clientId: values.clientId,\n clientSecret: values.clientSecret,\n refreshToken: values.refreshToken,\n }),\n ...(values.platform && !['amazon', 'shopee', 'aliexpress', 'tiktok', 'ebay'].includes(values.platform) && {\n apiKey: values.apiKey,\n apiSecret: values.apiSecret,\n }),\n },\n };\n\n await operationAgentService.bindStore(bindingData);\n message.success('店铺绑定成功');\n setBindingModalVisible(fal
"__isJSFile": true,
"__absFile": "D:/trae_projects/makemd/makemd/dashboard/src/pages/OperationAgent.tsx"
},
"10": {
"path": "operation-agent",
"file": "@/pages/OperationAgent.tsx",
"parentId": "8",
"id": "10",
"absPath": "/dashboard/operation-agent",
"__content": "import React, { useState, useEffect } from 'react';\nimport { Button, Table, Form, Input, Select, Modal, message, Card, Tabs, Space, Tag, Divider, Alert } from 'antd';\nimport { PlusOutlined, SyncOutlined, EditOutlined, DeleteOutlined, CheckOutlined, CloseOutlined, LoadingOutlined } from '@ant-design/icons';\nimport { operationAgentService, Store, StoreBindingData } from '../services/operationAgentService';\n\nconst { Option } = Select;\nconst { TabPane } = Tabs;\nconst { TextArea } = Input;\n\nconst platforms = [\n { value: 'amazon', label: 'Amazon' },\n { value: 'shopee', label: 'Shopee' },\n { value: 'aliexpress', label: 'AliExpress' },\n { value: 'tiktok', label: 'TikTok' },\n { value: 'ebay', label: 'Ebay' },\n { value: 'lazada', label: 'Lazada' },\n { value: 'wish', label: 'Wish' },\n { value: 'shein', label: 'Shein' },\n { value: 'jd_worldwide', label: 'JD Worldwide' },\n { value: 'walmart', label: 'Walmart' },\n { value: 'etsy', label: 'Etsy' },\n { value: 'target', label: 'Target' },\n { value: 'newegg', label: 'Newegg' },\n { value: 'cdiscount', label: 'Cdiscount' },\n { value: 'allegro', label: 'Allegro' },\n { value: 'otto', label: 'Otto' },\n { value: 'rakuten', label: 'Rakuten' },\n { value: 'qoo10', label: 'Qoo10' },\n];\n\nconst statusMap = {\n active: { color: 'green', text: '' },\n inactive: { color: 'red', text: '' },\n pending: { color: 'orange', text: '' },\n suspended: { color: 'gray', text: '' },\n};\n\nconst OperationAgent: React.FC = () => {\n const [stores, setStores] = useState<Store[]>([]);\n const [loading, setLoading] = useState(false);\n const [bindingModalVisible, setBindingModalVisible] = useState(false);\n const [currentStore, setCurrentStore] = useState<Store | null>(null);\n const [merchantId, setMerchantId] = useState('merchant-1'); // 默认商户ID\n const [form] = Form.useForm();\n\n // 加载店铺列表\n const loadStores = async () => {\n setLoading(true);\n try {\n const data = await operationAgentService.getStores(merchantId);\n setStores(data);\n } catch (error) {\n message.error('加载店铺失败');\n console.error(error);\n } finally {\n setLoading(false);\n }\n };\n\n // 初始加载\n useEffect(() => {\n loadStores();\n }, [merchantId]);\n\n // 绑定店铺\n const handleBindStore = async (values: any) => {\n setLoading(true);\n try {\n const bindingData: StoreBindingData = {\n merchantId: values.merchantId,\n platform: values.platform,\n platformShopId: values.platformShopId,\n name: values.name,\n description: values.description,\n authInfo: {\n ...(values.platform === 'amazon' && {\n accessKey: values.accessKey,\n secretKey: values.secretKey,\n sellerId: values.sellerId,\n marketplaceId: values.marketplaceId,\n }),\n ...(values.platform === 'shopee' && {\n partnerId: values.partnerId,\n partnerKey: values.partnerKey,\n shopId: values.shopId,\n }),\n ...(values.platform === 'aliexpress' && {\n appKey: values.appKey,\n appSecret: values.appSecret,\n accessToken: values.accessToken,\n }),\n ...(values.platform === 'tiktok' && {\n appId: values.appId,\n appSecret: values.appSecret,\n accessToken: values.accessToken,\n }),\n ...(values.platform === 'ebay' && {\n clientId: values.clientId,\n clientSecret: values.clientSecret,\n refreshToken: values.refreshToken,\n }),\n ...(values.platform && !['amazon', 'shopee', 'aliexpress', 'tiktok', 'ebay'].includes(values.platform) && {\n apiKey: values.apiKey,\n apiSecret: values.apiSecret,\n }),\n },\n };\n\n await operationAgentService.bindStore(bindingData);\n message.success('店铺绑定成功');\n setBindingModalVisible(fal
"__isJSFile": true,
"__absFile": "D:/trae_projects/makemd/makemd/dashboard/src/pages/OperationAgent.tsx"
},
"@@/global-layout": {
"id": "@@/global-layout",
"path": "/",
"file": "D:/trae_projects/makemd/makemd/dashboard/src/layouts/index.tsx",
"absPath": "/",
"isLayout": true,
"__absFile": "D:/trae_projects/makemd/makemd/dashboard/src/layouts/index.tsx"
}
},
"apiRoutes": {},
"hasSrcDir": true,
"npmClient": "cnpm",
"umi": {
"version": "4.6.31",
"name": "Umi",
"importSource": "umi",
"cliName": "umi"
},
"bundleStatus": {
"done": false
},
"mfsuBundleStatus": {
"done": false
},
"react": {
"version": "18.3.1",
"path": "D:\\trae_projects\\makemd\\makemd\\dashboard\\node_modules\\react"
},
"react-dom": {
"version": "18.3.1",
"path": "D:\\trae_projects\\makemd\\makemd\\dashboard\\node_modules\\react-dom"
},
"appJS": {
"path": "D:\\trae_projects\\makemd\\makemd\\dashboard\\src\\app.ts",
"exports": [
"render"
]
},
"locale": "zh-CN",
"globalCSS": [],
"globalJS": [],
"overridesCSS": [],
"bundler": "webpack",
"git": {
"originUrl": "https://github.com/Ansonfishing/makemd.git"
},
"framework": "react",
"typescript": {
"tsVersion": "5.9.3",
"tslibVersion": "2.8.1"
},
"faviconFiles": []
}