diff --git a/package-lock.json b/package-lock.json index 0dbeec8..7cba292 100644 --- a/package-lock.json +++ b/package-lock.json @@ -21,6 +21,7 @@ "@graphql-codegen/typescript": "4.1.2", "@graphql-codegen/typescript-resolvers": "4.4.1", "@jest/globals": "^29.7.0", + "@types/express": "^5.0.3", "@types/jsonwebtoken": "^9.0.8", "@types/node": "^22.10.2", "@types/redis": "^4.0.11", @@ -125,6 +126,17 @@ "graphql": "14.x || 15.x || 16.x" } }, + "node_modules/@apollo/server/node_modules/@types/express": { + "version": "4.17.23", + "resolved": "https://registry.npmjs.org/@types/express/-/express-4.17.23.tgz", + "integrity": "sha512-Crp6WY9aTYP3qPi2wGDo9iUe/rceX01UMhnF1jmwDcKCFM6cx7YhGP/Mpr3y9AASpfHixIG0E6azCcL5OcDHsQ==", + "dependencies": { + "@types/body-parser": "*", + "@types/express-serve-static-core": "^4.17.33", + "@types/qs": "*", + "@types/serve-static": "*" + } + }, "node_modules/@apollo/server/node_modules/accepts": { "version": "1.3.8", "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.8.tgz", @@ -2955,13 +2967,13 @@ } }, "node_modules/@types/express": { - "version": "4.17.23", - "resolved": "https://registry.npmjs.org/@types/express/-/express-4.17.23.tgz", - "integrity": "sha512-Crp6WY9aTYP3qPi2wGDo9iUe/rceX01UMhnF1jmwDcKCFM6cx7YhGP/Mpr3y9AASpfHixIG0E6azCcL5OcDHsQ==", + "version": "5.0.3", + "resolved": "https://registry.npmjs.org/@types/express/-/express-5.0.3.tgz", + "integrity": "sha512-wGA0NX93b19/dZC1J18tKWVIYWyyF2ZjT9vin/NRu0qzzvfVzWjs04iq2rQ3H65vCTQYlRqs3YHfY7zjdV+9Kw==", + "dev": true, "dependencies": { "@types/body-parser": "*", - "@types/express-serve-static-core": "^4.17.33", - "@types/qs": "*", + "@types/express-serve-static-core": "^5.0.0", "@types/serve-static": "*" } }, @@ -2976,6 +2988,18 @@ "@types/send": "*" } }, + "node_modules/@types/express/node_modules/@types/express-serve-static-core": { + "version": "5.0.7", + "resolved": "https://registry.npmjs.org/@types/express-serve-static-core/-/express-serve-static-core-5.0.7.tgz", + "integrity": "sha512-R+33OsgWw7rOhD1emjU7dzCDHucJrgJXMA5PYCzJxVil0dsyx5iBEPHqpPfiKNJQb7lZ1vxwoLR4Z87bBUpeGQ==", + "dev": true, + "dependencies": { + "@types/node": "*", + "@types/qs": "*", + "@types/range-parser": "*", + "@types/send": "*" + } + }, "node_modules/@types/graceful-fs": { "version": "4.1.9", "resolved": "https://registry.npmjs.org/@types/graceful-fs/-/graceful-fs-4.1.9.tgz", diff --git a/package.json b/package.json index 483dc38..d0a04e6 100644 --- a/package.json +++ b/package.json @@ -19,6 +19,7 @@ "@types/jsonwebtoken": "^9.0.8", "@types/node": "^22.10.2", "@types/redis": "^4.0.11", + "@types/express": "^5.0.3", "jest": "^29.7.0", "ts-jest": "^29.2.5", "typescript": "^5.7.2" diff --git a/src/index.ts b/src/index.ts index f42d80b..d7d44c0 100644 --- a/src/index.ts +++ b/src/index.ts @@ -1,13 +1,11 @@ import { readFileSync } from "fs"; import { ApolloServer } from "@apollo/server"; -import { startStandaloneServer } from "@apollo/server/standalone"; import { MergedResolvers } from "./MergedResolvers"; import { ServerContext } from "./ServerContext"; -import { loadShuttleTestData } from "./loaders/shuttle/loadShuttleTestData"; import { InterchangeSystem, InterchangeSystemBuilderArguments } from "./entities/InterchangeSystem"; import { ChapmanApiBasedParkingRepositoryLoader } from "./loaders/parking/ChapmanApiBasedParkingRepositoryLoader"; -import { supportedIntegrationTestSystems } from "./loaders/supportedIntegrationTestSystems"; -import { loadParkingTestData } from "./loaders/parking/loadParkingTestData"; +import express from "express"; +import { expressMiddleware } from "@as-integrations/express5"; const typeDefs = readFileSync("./schema.graphqls", "utf8"); @@ -27,6 +25,7 @@ async function main() { resolvers: MergedResolvers, introspection: process.env.NODE_ENV !== "production", }); + await server.start(); let systems: InterchangeSystem[]; @@ -36,26 +35,30 @@ async function main() { }, )); - const { url } = await startStandaloneServer(server, { - listen: { - port: process.env.PORT ? parseInt(process.env.PORT) : 4000, - }, - context: async () => { - return { - systems, - findSystemById: (id: string) => { - const system = systems.find((system) => system.id === id); - if (!system) { - return null; - } - return system; - }, - } - }, + const app = express(); + app.use( + "/", + express.json(), + expressMiddleware(server, { + context: async () => { + return { + systems, + findSystemById: (id: string) => { + const system = systems.find((system) => system.id === id); + if (!system) { + return null; + } + return system; + }, + } + }, + }) + ); + + const port = process.env.PORT ? parseInt(process.env.PORT) : 4000; + app.listen(port, () => { + console.log(`Server ready at port ${port}`); }); - - - console.log(`Server ready at: ${url}`); } main();