basic setup with yoga + pothos and pino logger

This commit is contained in:
Benjamin Palko 2024-12-02 11:30:52 -05:00
parent f8a16a9fce
commit 6312b344cd
7 changed files with 52 additions and 10 deletions

BIN
bun.lockb

Binary file not shown.

19
lib/logger/index.ts Normal file
View file

@ -0,0 +1,19 @@
import { type YogaLogger } from "graphql-yoga";
import pino from "pino";
export const logger = pino();
export const yogaLogger: YogaLogger = {
debug(...args) {
logger.debug("", ...args);
},
info(...args) {
logger.info("", ...args);
},
warn(...args) {
logger.warn("", ...args);
},
error(...args) {
logger.error("", ...args);
},
};

View file

@ -3,11 +3,10 @@
"module": "src/index.ts", "module": "src/index.ts",
"type": "module", "type": "module",
"scripts": { "scripts": {
"dev": "bun src/index.ts --watch" "dev": "bun --watch src/index.ts | pino-pretty"
}, },
"devDependencies": { "devDependencies": {
"@types/bun": "latest", "@types/bun": "latest"
"@types/pino": "^7.0.5"
}, },
"peerDependencies": { "peerDependencies": {
"typescript": "^5.0.0" "typescript": "^5.0.0"

View file

@ -1,8 +1,15 @@
import { createYoga } from "graphql-yoga"; import { logger } from "@lib/logger";
import { schema } from "./schema"; import { yoga } from "./yoga";
const yoga = createYoga({ schema }); const server = Bun.serve({
fetch: yoga.fetch,
error: (error) => {
logger.error(error.message);
return new Response("", {
status: 500,
statusText: "You fucked the goose",
});
},
});
const server = Bun.serve({ fetch: yoga.fetch }); logger.info(`Server is running on: ${server.url}${yoga.graphqlEndpoint}`);
console.log(`Server is running on: ${server.url}${yoga.graphqlEndpoint}`);

8
src/yoga/index.ts Normal file
View file

@ -0,0 +1,8 @@
import { yogaLogger } from "@lib/logger";
import { createYoga } from "graphql-yoga";
import { schema } from "./schema";
export const yoga = createYoga({
schema,
logging: yogaLogger,
});

View file

@ -22,6 +22,15 @@
// Some stricter flags (disabled by default) // Some stricter flags (disabled by default)
"noUnusedLocals": false, "noUnusedLocals": false,
"noUnusedParameters": false, "noUnusedParameters": false,
"noPropertyAccessFromIndexSignature": false "noPropertyAccessFromIndexSignature": false,
// Path mapping
"baseUrl": ".",
"paths": {
"@app": ["./src"],
"@app/*": ["./src/*"],
"@lib": ["./lib"],
"@lib/*": ["./lib/*"]
}
} }
} }