mirror of
https://github.com/brendan-ch/project-inter-server.git
synced 2026-04-17 07:50:31 +00:00
Change the server setup to use Express.js for hosting
This commit is contained in:
34
package-lock.json
generated
34
package-lock.json
generated
@@ -21,6 +21,7 @@
|
|||||||
"@graphql-codegen/typescript": "4.1.2",
|
"@graphql-codegen/typescript": "4.1.2",
|
||||||
"@graphql-codegen/typescript-resolvers": "4.4.1",
|
"@graphql-codegen/typescript-resolvers": "4.4.1",
|
||||||
"@jest/globals": "^29.7.0",
|
"@jest/globals": "^29.7.0",
|
||||||
|
"@types/express": "^5.0.3",
|
||||||
"@types/jsonwebtoken": "^9.0.8",
|
"@types/jsonwebtoken": "^9.0.8",
|
||||||
"@types/node": "^22.10.2",
|
"@types/node": "^22.10.2",
|
||||||
"@types/redis": "^4.0.11",
|
"@types/redis": "^4.0.11",
|
||||||
@@ -125,6 +126,17 @@
|
|||||||
"graphql": "14.x || 15.x || 16.x"
|
"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": {
|
"node_modules/@apollo/server/node_modules/accepts": {
|
||||||
"version": "1.3.8",
|
"version": "1.3.8",
|
||||||
"resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.8.tgz",
|
"resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.8.tgz",
|
||||||
@@ -2955,13 +2967,13 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/@types/express": {
|
"node_modules/@types/express": {
|
||||||
"version": "4.17.23",
|
"version": "5.0.3",
|
||||||
"resolved": "https://registry.npmjs.org/@types/express/-/express-4.17.23.tgz",
|
"resolved": "https://registry.npmjs.org/@types/express/-/express-5.0.3.tgz",
|
||||||
"integrity": "sha512-Crp6WY9aTYP3qPi2wGDo9iUe/rceX01UMhnF1jmwDcKCFM6cx7YhGP/Mpr3y9AASpfHixIG0E6azCcL5OcDHsQ==",
|
"integrity": "sha512-wGA0NX93b19/dZC1J18tKWVIYWyyF2ZjT9vin/NRu0qzzvfVzWjs04iq2rQ3H65vCTQYlRqs3YHfY7zjdV+9Kw==",
|
||||||
|
"dev": true,
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@types/body-parser": "*",
|
"@types/body-parser": "*",
|
||||||
"@types/express-serve-static-core": "^4.17.33",
|
"@types/express-serve-static-core": "^5.0.0",
|
||||||
"@types/qs": "*",
|
|
||||||
"@types/serve-static": "*"
|
"@types/serve-static": "*"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
@@ -2976,6 +2988,18 @@
|
|||||||
"@types/send": "*"
|
"@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": {
|
"node_modules/@types/graceful-fs": {
|
||||||
"version": "4.1.9",
|
"version": "4.1.9",
|
||||||
"resolved": "https://registry.npmjs.org/@types/graceful-fs/-/graceful-fs-4.1.9.tgz",
|
"resolved": "https://registry.npmjs.org/@types/graceful-fs/-/graceful-fs-4.1.9.tgz",
|
||||||
|
|||||||
@@ -19,6 +19,7 @@
|
|||||||
"@types/jsonwebtoken": "^9.0.8",
|
"@types/jsonwebtoken": "^9.0.8",
|
||||||
"@types/node": "^22.10.2",
|
"@types/node": "^22.10.2",
|
||||||
"@types/redis": "^4.0.11",
|
"@types/redis": "^4.0.11",
|
||||||
|
"@types/express": "^5.0.3",
|
||||||
"jest": "^29.7.0",
|
"jest": "^29.7.0",
|
||||||
"ts-jest": "^29.2.5",
|
"ts-jest": "^29.2.5",
|
||||||
"typescript": "^5.7.2"
|
"typescript": "^5.7.2"
|
||||||
|
|||||||
49
src/index.ts
49
src/index.ts
@@ -1,13 +1,11 @@
|
|||||||
import { readFileSync } from "fs";
|
import { readFileSync } from "fs";
|
||||||
import { ApolloServer } from "@apollo/server";
|
import { ApolloServer } from "@apollo/server";
|
||||||
import { startStandaloneServer } from "@apollo/server/standalone";
|
|
||||||
import { MergedResolvers } from "./MergedResolvers";
|
import { MergedResolvers } from "./MergedResolvers";
|
||||||
import { ServerContext } from "./ServerContext";
|
import { ServerContext } from "./ServerContext";
|
||||||
import { loadShuttleTestData } from "./loaders/shuttle/loadShuttleTestData";
|
|
||||||
import { InterchangeSystem, InterchangeSystemBuilderArguments } from "./entities/InterchangeSystem";
|
import { InterchangeSystem, InterchangeSystemBuilderArguments } from "./entities/InterchangeSystem";
|
||||||
import { ChapmanApiBasedParkingRepositoryLoader } from "./loaders/parking/ChapmanApiBasedParkingRepositoryLoader";
|
import { ChapmanApiBasedParkingRepositoryLoader } from "./loaders/parking/ChapmanApiBasedParkingRepositoryLoader";
|
||||||
import { supportedIntegrationTestSystems } from "./loaders/supportedIntegrationTestSystems";
|
import express from "express";
|
||||||
import { loadParkingTestData } from "./loaders/parking/loadParkingTestData";
|
import { expressMiddleware } from "@as-integrations/express5";
|
||||||
|
|
||||||
const typeDefs = readFileSync("./schema.graphqls", "utf8");
|
const typeDefs = readFileSync("./schema.graphqls", "utf8");
|
||||||
|
|
||||||
@@ -27,6 +25,7 @@ async function main() {
|
|||||||
resolvers: MergedResolvers,
|
resolvers: MergedResolvers,
|
||||||
introspection: process.env.NODE_ENV !== "production",
|
introspection: process.env.NODE_ENV !== "production",
|
||||||
});
|
});
|
||||||
|
await server.start();
|
||||||
|
|
||||||
let systems: InterchangeSystem[];
|
let systems: InterchangeSystem[];
|
||||||
|
|
||||||
@@ -36,26 +35,30 @@ async function main() {
|
|||||||
},
|
},
|
||||||
));
|
));
|
||||||
|
|
||||||
const { url } = await startStandaloneServer(server, {
|
const app = express();
|
||||||
listen: {
|
app.use(
|
||||||
port: process.env.PORT ? parseInt(process.env.PORT) : 4000,
|
"/",
|
||||||
},
|
express.json(),
|
||||||
context: async () => {
|
expressMiddleware(server, {
|
||||||
return {
|
context: async () => {
|
||||||
systems,
|
return {
|
||||||
findSystemById: (id: string) => {
|
systems,
|
||||||
const system = systems.find((system) => system.id === id);
|
findSystemById: (id: string) => {
|
||||||
if (!system) {
|
const system = systems.find((system) => system.id === id);
|
||||||
return null;
|
if (!system) {
|
||||||
}
|
return null;
|
||||||
return system;
|
}
|
||||||
},
|
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();
|
main();
|
||||||
|
|||||||
Reference in New Issue
Block a user