From df154e6b9b22fbc5e4a4b303d2802bcd2b7743c9 Mon Sep 17 00:00:00 2001 From: Avior Date: Tue, 7 May 2024 02:41:57 +0200 Subject: [PATCH] Chore: upgrade deps (#483) Co-authored-by: Avior --- bun.lockb | Bin 2035 -> 2035 bytes meta/definitions/graphql.gql | 6 ++--- server/bun.lockb | Bin 88310 -> 88423 bytes server/compiler/index.ts | 5 ++--- server/compiler/utils/util.ts | 16 ++++++++----- server/package.json | 16 +++++-------- server/src/V2/graphql/index.ts | 40 ++++++++++++++++++++++++--------- 7 files changed, 51 insertions(+), 32 deletions(-) mode change 100644 => 100755 bun.lockb mode change 100644 => 100755 server/bun.lockb diff --git a/bun.lockb b/bun.lockb old mode 100644 new mode 100755 index 8d80863d8515981cd71bd34647a84f59030d5276..a916bca271a64741461871dc6b64a47c5207f3a4 GIT binary patch delta 33 kcmey&|CxV7C=(;&7zv7Ir5l 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 GlK%x-bya}? diff --git a/server/compiler/index.ts b/server/compiler/index.ts index cdb6dfdd0..8bf6c67a6 100644 --- a/server/compiler/index.ts +++ b/server/compiler/index.ts @@ -1,9 +1,8 @@ /* eslint-disable max-statements */ -import { FileFunction } from './compilerInterfaces' import { promises as fs } from 'fs' -import { fetchRemoteFile } from './utils/util' -import { objectValues } from '@dzeio/object-util' import { SupportedLanguages } from '../../interfaces' +import { FileFunction } from './compilerInterfaces' +import { fetchRemoteFile } from './utils/util' const LANGS: Array = ['en', 'fr', 'es', 'it', 'pt', 'de'] diff --git a/server/compiler/utils/util.ts b/server/compiler/utils/util.ts index 25977828a..736859e4c 100644 --- a/server/compiler/utils/util.ts +++ b/server/compiler/utils/util.ts @@ -1,6 +1,5 @@ +import { glob } from 'glob' import { Card, Set } from '../../../interfaces' -import glob from 'glob' -import fetch from 'node-fetch' import * as legals from '../../../meta/legals' interface fileCacheInterface { @@ -18,9 +17,16 @@ const fileCache: fileCacheInterface = {} */ export async function fetchRemoteFile(url: string): Promise { if (!fileCache[url]) { + const signal = new AbortController() + + const finished = setTimeout(() => { + signal.abort() + }, 60 * 1000); + const resp = await fetch(url, { - timeout: 60 * 1000 + signal: signal.signal }) + clearTimeout(finished) fileCache[url] = resp.json() } return fileCache[url] @@ -30,9 +36,7 @@ const globCache: Record> = {} export async function smartGlob(query: string): Promise> { if (!globCache[query]) { - globCache[query] = await new Promise((res) => { - glob(query, (_, matches) => res(matches)) - }) + globCache[query] = await glob(query) } return globCache[query] } diff --git a/server/package.json b/server/package.json index bb92056f7..826d90c71 100644 --- a/server/package.json +++ b/server/package.json @@ -16,19 +16,15 @@ "@tcgdex/sdk": "^2", "apicache": "^1", "express": "^4", - "express-graphql": "^0.12.0", - "graphql": "^15" + "graphql": "^15", + "graphql-http": "^1.22.1", + "ruru": "^2.0.0-beta.11" }, "devDependencies": { "@types/apicache": "^1", "@types/express": "^4", - "@types/glob": "^8", - "@types/node": "^18", - "@types/node-fetch": "^2", - "glob": "^8", - "node-fetch": "^2", - "ts-node": "^10", - "ts-node-dev": "^2", - "typescript": "^4" + "@types/node": "^20", + "glob": "^10", + "typescript": "^5" } } diff --git a/server/src/V2/graphql/index.ts b/server/src/V2/graphql/index.ts index a569be0e6..384a16b78 100644 --- a/server/src/V2/graphql/index.ts +++ b/server/src/V2/graphql/index.ts @@ -1,9 +1,15 @@ import express from 'express' -import { graphqlHTTP } from 'express-graphql' import fs from 'fs' -import { buildSchema, formatError, GraphQLError } from 'graphql' +import { buildSchema, GraphQLError } from 'graphql' +import { createHandler } from 'graphql-http/lib/use/express' +import { type ruruHTML as RuruHTML } from 'ruru/dist/server' +/** @ts-expect-error typing is not correctly mapped (real type at ruru/dist/server.d.ts) */ +import { makeHTMLParts, ruruHTML as tmp } from 'ruru/server' import resolver from './resolver' + +const ruruHTML: typeof RuruHTML = tmp + // Init Express Router const router = express.Router() @@ -14,11 +20,19 @@ const router = express.Router() const schema = buildSchema(fs.readFileSync('./public/v2/graphql.gql', 'utf-8')) // Error Logging for debugging -function graphQLErrorHandle(error: GraphQLError) { +function graphQLErrorHandle(error: Readonly) { if (process.env.NODE_ENV !== 'production') { console.error(error) } - if (error.source) { + if (!('source' in error)) { + const columns = (process?.stdout?.columns ?? 32) - 7 + const dashes = ''.padEnd(columns / 2, '-') + + console.error(`\x1b[91m${dashes} ERROR ${dashes}\x1b[0m`) + console.error('GraphQL Error') + console.error(error.message) + console.error(`\x1b[91m${dashes} ERROR ${dashes}\x1b[0m`) + } else if (error.source) { const columns = (process?.stdout?.columns ?? 32) - 7 const dashes = ''.padEnd(columns / 2, '-') @@ -28,18 +42,24 @@ function graphQLErrorHandle(error: GraphQLError) { console.error(error.source?.body) console.error(`\x1b[91m${dashes} ERROR ${dashes}\x1b[0m`) } - return formatError(error) + return error } -const graphql = graphqlHTTP({ - schema, +const graphql = createHandler({ + schema: schema, rootValue: resolver, - graphiql: true, - customFormatErrorFn: graphQLErrorHandle + formatError: graphQLErrorHandle }) // Add graphql to the route -router.get('/', graphql) +router.get('/', (_, res) => { + res.type('html') + + res.end(ruruHTML({ endpoint: '/v2/graphql' }, { + ...makeHTMLParts(), + titleTag: 'GraphiQL - TCGdex API V2' + })) +}) router.post('/', graphql) export default router