feat: add undici fetch interceptor (#687)

Co-authored-by: Meier Lukas <meierschlumpf@gmail.com>
This commit is contained in:
Manuel
2024-06-19 19:26:42 +02:00
committed by GitHub
parent bf607349e0
commit 508369cb0b
4 changed files with 34 additions and 1 deletions

View File

@@ -33,7 +33,8 @@
"@homarr/analytics": "workspace:^0.1.0",
"dotenv": "^16.4.5",
"node-cron": "^3.0.3",
"superjson": "2.2.1"
"superjson": "2.2.1",
"undici": "6.18.2"
},
"devDependencies": {
"@homarr/eslint-config": "workspace:^0.2.0",

View File

@@ -1,3 +1,6 @@
// This import has to be the first import in the file so that the agent is overridden before any other modules are imported.
import "./undici-log-agent-override";
import { jobs } from "./jobs";
import { seedServerSettingsAsync } from "./seed-server-settings";

View File

@@ -0,0 +1,20 @@
import type { Dispatcher } from "undici";
import { Agent, setGlobalDispatcher } from "undici";
import { logger } from "@homarr/log";
class LoggingAgent extends Agent {
constructor(...props: ConstructorParameters<typeof Agent>) {
super(...props);
}
dispatch(options: Dispatcher.DispatchOptions, handler: Dispatcher.DispatchHandlers): boolean {
logger.info(
`Dispatching request ${options.method} ${options.origin as string}${options.path} (${Object.keys(options.headers as object).length} headers)`,
);
return super.dispatch(options, handler);
}
}
const agent = new LoggingAgent();
setGlobalDispatcher(agent);

9
pnpm-lock.yaml generated
View File

@@ -297,6 +297,9 @@ importers:
superjson:
specifier: 2.2.1
version: 2.2.1
undici:
specifier: 6.18.2
version: 6.18.2
devDependencies:
'@homarr/eslint-config':
specifier: workspace:^0.2.0
@@ -6171,6 +6174,10 @@ packages:
undici-types@5.26.5:
resolution: {integrity: sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==}
undici@6.18.2:
resolution: {integrity: sha512-o/MQLTwRm9IVhOqhZ0NQ9oXax1ygPjw6Vs+Vq/4QRjbOAC3B1GCHy7TYxxbExKlb7bzDRzt9vBWU6BDz0RFfYg==}
engines: {node: '>=18.17'}
universalify@0.2.0:
resolution: {integrity: sha512-CJ1QgKmNg3CwvAv/kOFmtnEN05f0D/cn9QntgNOQlQF9dgvVTHj3t+8JPdjqawCHk7V/KA+fbUqzZ9XWhcqPUg==}
engines: {node: '>= 4.0.0'}
@@ -11914,6 +11921,8 @@ snapshots:
undici-types@5.26.5: {}
undici@6.18.2: {}
universalify@0.2.0: {}
universalify@2.0.1: {}