core: loader: add perf tool

This commit is contained in:
undefined committed 2023-01-29 01:56:25 +08:00
1 parent 4f9c1a03f2
commit 5f995f97ad
6 files changed
+51 -20

No files matched your search

+6 -5
View File
@@ -36,8 +36,8 @@
"@types/node": "^18.11.18",
"@types/semver": "^7.3.13",
"@types/supertest": "^2.0.12",
"@typescript-eslint/eslint-plugin": "^5.48.2",
"@typescript-eslint/parser": "^5.48.2",
"@typescript-eslint/eslint-plugin": "^5.49.0",
"@typescript-eslint/parser": "^5.49.0",
"autocannon": "^7.10.0",
"cac": "^6.7.14",
"chokidar": "^3.5.3",
@@ -57,7 +57,7 @@
"eslint-plugin-jsx-a11y": "^6.7.1",
"eslint-plugin-react": "^7.32.1",
"eslint-plugin-react-hooks": "^4.6.0",
"eslint-plugin-simple-import-sort": "8.0.0",
"eslint-plugin-simple-import-sort": "10.0.0",
"friendly-errors-webpack-plugin": "^1.7.0",
"fs-extra": "^11.1.0",
"globby": "13.1.3",
@@ -65,7 +65,7 @@
"mini-css-extract-plugin": "^2.7.2",
"monaco-editor-webpack-plugin": "^7.0.1",
"mongodb": "^3.7.3",
"mongodb-memory-server": "^8.11.3",
"mongodb-memory-server": "^8.11.4",
"nyc": "^15.1.0",
"ora": "^6.1.2",
"postcss-loader": "^7.0.2",
@@ -80,7 +80,8 @@
"webpack-bundle-analyzer": "^4.7.0",
"webpack-dev-server": "^4.11.1",
"webpack-manifest-plugin": "^5.0.0",
"webpackbar": "^5.0.2"
"webpackbar": "^5.0.2",
"wtfnode": "^0.9.1"
},
"resolutions": {
"@types/node": "18.11.18",
+1 -1
View File
@@ -13,7 +13,7 @@
"p-queue": "^7.3.0",
"schemastery": "^3.6.1",
"shell-quote": "^1.7.4",
"superagent": "^8.0.8",
"superagent": "^8.0.9",
"ws": "^8.12.0"
},
"preferUnplugged": true,
+9 -9
View File
@@ -12,17 +12,17 @@
},
"preferUnplugged": true,
"dependencies": {
"@aws-sdk/client-s3": "^3.254.0",
"@aws-sdk/lib-storage": "^3.254.0",
"@aws-sdk/middleware-endpoint": "^3.254.0",
"@aws-sdk/s3-presigned-post": "^3.254.0",
"@aws-sdk/s3-request-presigner": "^3.254.0",
"@graphql-tools/schema": "^9.0.13",
"@aws-sdk/client-s3": "^3.259.0",
"@aws-sdk/lib-storage": "^3.259.0",
"@aws-sdk/middleware-endpoint": "^3.257.0",
"@aws-sdk/s3-presigned-post": "^3.259.0",
"@aws-sdk/s3-request-presigner": "^3.259.0",
"@graphql-tools/schema": "^9.0.14",
"@hydrooj/utils": "workspace:*",
"@simplewebauthn/server": "^7.0.0",
"adm-zip": "0.5.5",
"cac": "^6.7.14",
"cordis": "^2.7.1",
"cordis": "^2.7.2",
"detect-browser": "^5.3.0",
"emoji-regex": "^10.2.1",
"emojis-list": "2.1.0",
@@ -43,7 +43,7 @@
"moment-timezone": "^0.5.40",
"mongodb": "^3.7.3",
"nanoid": "^4.0.0",
"nodemailer": "^6.9.0",
"nodemailer": "^6.9.1",
"notp": "^2.0.3",
"p-queue": "^7.3.0",
"path-to-regexp": "^6.2.1",
@@ -52,7 +52,7 @@
"schemastery": "^3.6.1",
"semver": "^7.3.8",
"serialize-javascript": "^6.0.1",
"superagent": "^8.0.8",
"superagent": "^8.0.9",
"tar": "^6.1.13",
"thirty-two": "^1.0.2",
"ws": "^8.12.0"
+31 -1
View File
@@ -36,6 +36,9 @@ export function resolveConfig(plugin: any, config: any) {
}
Context.service('loader');
const timeout = Symbol.for('loader.timeout');
const showLoadTime = argv.options.showLoadTime;
export class Loader {
static readonly Record = Symbol.for('loader.record');
@@ -60,11 +63,38 @@ export class Loader {
fork.update(config);
} else {
logger.info('apply plugin %c', key.split('node_modules').pop());
const plugin = await this.resolvePlugin(key);
let plugin = await this.resolvePlugin(key);
if (!plugin) return;
resolveConfig(plugin, config);
if (asName) plugin.name = asName;
// fork = parent.plugin(plugin, this.interpolate(config));
if (plugin.apply) {
const original = plugin.apply;
const apply = (...args) => {
const start = Date.now();
const result = Promise.resolve(original(...args)).catch((e) => logger.error(e));
Promise.race([
result,
new Promise((resolve) => {
setTimeout(() => resolve(timeout), 10000);
}),
]).then((t) => {
if (t === timeout) {
logger.warn('Plugin %s took too long to load', key);
}
});
if (showLoadTime && (typeof showLoadTime !== 'number' || Date.now() - start > showLoadTime)) {
logger.info('Plugin %s loaded in %dms', key, Date.now() - start);
}
return result;
};
plugin = Object.create(plugin);
Object.defineProperty(plugin, 'apply', {
writable: true,
value: apply,
enumerable: true,
});
}
fork = parent.plugin(plugin, config);
if (!fork) return;
parent.state[Loader.Record] ||= Object.create(null);
+3 -3
View File
@@ -46,7 +46,7 @@
"classnames": "^2.3.2",
"clipboard": "^2.0.11",
"diff": "^5.1.0",
"diff-dom": "^4.2.8",
"diff-dom": "^5.0.2",
"echarts": "^5.4.1",
"emojis-keywords": "2.0.0",
"emojis-list": "2.1.0",
@@ -67,7 +67,7 @@
"monaco-editor": "0.33.0",
"monaco-editor-nls": "^2.0.0",
"monaco-themes": "^0.4.3",
"monaco-yaml": "^4.0.2",
"monaco-yaml": "^4.0.3",
"nanoid": "^4.0.0",
"normalize.css": "^8.0.1",
"nprogress": "^0.2.0",
@@ -84,7 +84,7 @@
"react-dnd": "^16.0.1",
"react-dnd-html5-backend": "^16.0.1",
"react-dom": "^18.2.0",
"react-query": "^3.39.2",
"react-query": "^3.39.3",
"react-redux": "^8.0.5",
"react-split-pane": "^0.1.92",
"reconnecting-websocket": "^4.4.0",
+1 -1
View File
@@ -16,7 +16,7 @@
"mongodb": "^3.7.3",
"reggol": "^1.3.5",
"source-map-support": "^0.5.21",
"systeminformation": "^5.17.3"
"systeminformation": "^5.17.4"
},
"devDependencies": {
"@types/fs-extra": "^11.0.1",