diff --git a/package.json b/package.json index 91a2d48..984598d 100644 --- a/package.json +++ b/package.json @@ -2,15 +2,16 @@ "name": "mapmel", "version": "1.0.0", "description": "", - "main": "index.js", + "main": "dist/index.js", "scripts": { "test": "echo \"Error: no test specified\" && exit 1", - "start": "node index.js", - "dev": "nodemon index.js", - "dbadd": "node data/add_to_db.js", - "dbaddprop": "node data/add_edge_weight.js", - "dbaddpoi": "node data/add_poi.js", - "dbaddlength": "node data/add_edge_length.js" + "build": "tsc", + "start": "node dist/index.js", + "dev": "ts-node src/index.ts", + "dbadd": "ts-node src/data/add_to_db.ts", + "dbaddprop": "ts-node src/data/add_edge_weight.ts", + "dbaddpoi": "ts-node src/data/add_poi.ts", + "dbaddlength": "ts-node src/data/add_edge_length.ts" }, "keywords": [], "author": "", @@ -28,6 +29,10 @@ "@eslint/js": "^9.18.0", "eslint": "^9.18.0", "globals": "^15.14.0", - "nodemon": "^3.1.7" + "nodemon": "^3.1.7", + "typescript": "^5.4.0", + "ts-node": "^10.9.2", + "@types/node": "^20.11.17", + "@types/express": "^4.17.21" } } diff --git a/routers/page_loading.js b/routers/page_loading.js deleted file mode 100644 index 3d4ec45..0000000 --- a/routers/page_loading.js +++ /dev/null @@ -1,7 +0,0 @@ -const express = require("express") -const router = express.Router() - -router.get("/", require("../controllers/pages/index.js")) -router.get("/editor", require("../controllers/pages/editor.js")) - -module.exports = router diff --git a/controllers/api/editor_actions/get_node.js b/src/controllers/api/editor_actions/get_node.ts similarity index 98% rename from controllers/api/editor_actions/get_node.js rename to src/controllers/api/editor_actions/get_node.ts index 02e59a7..ba807ca 100644 --- a/controllers/api/editor_actions/get_node.js +++ b/src/controllers/api/editor_actions/get_node.ts @@ -1,4 +1,4 @@ -const get_closest_node = require("../../../functions/editor/get_closest_node.js") +const get_closest_node = require("../../../functions/editor/get_closest_node") module.exports = async (req, res) => { const { lat, lng } = req.query diff --git a/controllers/api/get_intermediate_points.js b/src/controllers/api/get_intermediate_points.ts similarity index 80% rename from controllers/api/get_intermediate_points.js rename to src/controllers/api/get_intermediate_points.ts index c1231db..a3b669e 100644 --- a/controllers/api/get_intermediate_points.js +++ b/src/controllers/api/get_intermediate_points.ts @@ -1,4 +1,4 @@ -const { run_query } = require("../../functions/neo4j_driver.js") +const { run_query } = require("../../functions/neo4j_driver") module.exports = async (req, res) => { let nodes = await run_query(` diff --git a/controllers/api/get_tile.js b/src/controllers/api/get_tile.ts similarity index 98% rename from controllers/api/get_tile.js rename to src/controllers/api/get_tile.ts index 2c2ca49..0c03419 100644 --- a/controllers/api/get_tile.js +++ b/src/controllers/api/get_tile.ts @@ -1,5 +1,5 @@ -const { run_query } = require("../../functions/neo4j_driver.js") -const { get_lat_lon_from_tile_and_position } = require("../../functions/tile_converter.js") +const { run_query } = require("../../functions/neo4j_driver") +const { get_lat_lon_from_tile_and_position } = require("../../functions/tile_converter") const MAX_CACHE_SIZE = 500 diff --git a/controllers/api/result.js b/src/controllers/api/result.ts similarity index 95% rename from controllers/api/result.js rename to src/controllers/api/result.ts index eab36f3..eb2225c 100644 --- a/controllers/api/result.js +++ b/src/controllers/api/result.ts @@ -1,4 +1,4 @@ -const { run_query } = require("../../functions/neo4j_driver.js") +const { run_query } = require("../../functions/neo4j_driver") module.exports = async (req, res) => { // get the result id from the request diff --git a/controllers/api/route.js b/src/controllers/api/route.ts similarity index 98% rename from controllers/api/route.js rename to src/controllers/api/route.ts index 537103d..3976964 100644 --- a/controllers/api/route.js +++ b/src/controllers/api/route.ts @@ -1,6 +1,6 @@ -const { run_query } = require("../../functions/neo4j_driver.js") -const { find_closest_edge } = require("../../functions/get_closest_road_edge.js") -const driving_route = require("../../functions/routing/driving.js") +const { run_query } = require("../../functions/neo4j_driver") +const { find_closest_edge } = require("../../functions/get_closest_road_edge") +const driving_route = require("../../functions/routing/driving") async function get_closest_road_edge(lat, lng) { // get a list of the 100 nearest nodes to the given coordinate diff --git a/controllers/api/search.js b/src/controllers/api/search.ts similarity index 97% rename from controllers/api/search.js rename to src/controllers/api/search.ts index 9da3a29..53da330 100644 --- a/controllers/api/search.js +++ b/src/controllers/api/search.ts @@ -1,5 +1,5 @@ -const { run_query } = require("../../functions/neo4j_driver.js") -const fuse = require("fuse.js") +const { run_query } = require("../../functions/neo4j_driver") +const fuse = require("fuse") const replacements = { rd: "road", diff --git a/controllers/pages/editor.js b/src/controllers/pages/editor.ts similarity index 100% rename from controllers/pages/editor.js rename to src/controllers/pages/editor.ts diff --git a/controllers/pages/index.js b/src/controllers/pages/index.ts similarity index 100% rename from controllers/pages/index.js rename to src/controllers/pages/index.ts diff --git a/data/add_edge_length.js b/src/data/add_edge_length.ts similarity index 100% rename from data/add_edge_length.js rename to src/data/add_edge_length.ts diff --git a/data/add_edge_weight.js b/src/data/add_edge_weight.ts similarity index 100% rename from data/add_edge_weight.js rename to src/data/add_edge_weight.ts diff --git a/data/add_poi.js b/src/data/add_poi.ts similarity index 100% rename from data/add_poi.js rename to src/data/add_poi.ts diff --git a/data/add_to_db.js b/src/data/add_to_db.ts similarity index 100% rename from data/add_to_db.js rename to src/data/add_to_db.ts diff --git a/data/run_all_adds.js b/src/data/run_all_adds.ts similarity index 100% rename from data/run_all_adds.js rename to src/data/run_all_adds.ts diff --git a/functions/color.js b/src/functions/color.ts similarity index 100% rename from functions/color.js rename to src/functions/color.ts diff --git a/functions/editor/get_closest_node.js b/src/functions/editor/get_closest_node.ts similarity index 95% rename from functions/editor/get_closest_node.js rename to src/functions/editor/get_closest_node.ts index 22373e8..8d315f0 100644 --- a/functions/editor/get_closest_node.js +++ b/src/functions/editor/get_closest_node.ts @@ -1,4 +1,4 @@ -let { run_query } = require("../neo4j_driver.js") +let { run_query } = require("../neo4j_driver") module.exports = async (lat, lng) => { /** diff --git a/functions/get_closest_road_edge.js b/src/functions/get_closest_road_edge.ts similarity index 100% rename from functions/get_closest_road_edge.js rename to src/functions/get_closest_road_edge.ts diff --git a/functions/neo4j_driver.js b/src/functions/neo4j_driver.ts similarity index 100% rename from functions/neo4j_driver.js rename to src/functions/neo4j_driver.ts diff --git a/functions/routing/driving.js b/src/functions/routing/driving.ts similarity index 95% rename from functions/routing/driving.js rename to src/functions/routing/driving.ts index 6bfdff4..873a146 100644 --- a/functions/routing/driving.js +++ b/src/functions/routing/driving.ts @@ -1,5 +1,5 @@ -let { run_query } = require("../neo4j_driver.js") -let PriorityQueue = require("./helpers/priority_queue.js") +let { run_query } = require("../neo4j_driver") +let PriorityQueue = require("./helpers/priority_queue") let { SHORT_ROUTE_THRESHOLD_METERS, LONG_ROUTE_THRESHOLD_METERS, @@ -7,12 +7,12 @@ let { MEDIUM_RADIUS_METERS, LARGE_RADIUS_METERS, MAJOR_HIGHWAYS, -} = require("./helpers/driving/defaults.js") -let distance_heuristic = require("./helpers/driving/distance_heuristic.js") -let time_heuristic = require("./helpers/time_heuristic.js") -let get_neighbours = require("./helpers/get_neighbours.js") -const Benchmarks = require("./helpers/benchmarks.js") -const { start_session, close_session } = require("./routing_neo4j_driver.js") +} = require("./helpers/driving/defaults") +let distance_heuristic = require("./helpers/driving/distance_heuristic") +let time_heuristic = require("./helpers/time_heuristic") +let get_neighbours = require("./helpers/get_neighbours") +const Benchmarks = require("./helpers/benchmarks") +const { start_session, close_session } = require("./routing_neo4j_driver") // --- Node Position Cache --- let node_positions = {} diff --git a/functions/routing/helpers/benchmarks.js b/src/functions/routing/helpers/benchmarks.ts similarity index 100% rename from functions/routing/helpers/benchmarks.js rename to src/functions/routing/helpers/benchmarks.ts diff --git a/functions/routing/helpers/driving/defaults.js b/src/functions/routing/helpers/driving/defaults.ts similarity index 100% rename from functions/routing/helpers/driving/defaults.js rename to src/functions/routing/helpers/driving/defaults.ts diff --git a/functions/routing/helpers/driving/distance_heuristic.js b/src/functions/routing/helpers/driving/distance_heuristic.ts similarity index 100% rename from functions/routing/helpers/driving/distance_heuristic.js rename to src/functions/routing/helpers/driving/distance_heuristic.ts diff --git a/functions/routing/helpers/driving/kmh_to_mps.js b/src/functions/routing/helpers/driving/kmh_to_mps.ts similarity index 100% rename from functions/routing/helpers/driving/kmh_to_mps.js rename to src/functions/routing/helpers/driving/kmh_to_mps.ts diff --git a/functions/routing/helpers/get_neighbours.js b/src/functions/routing/helpers/get_neighbours.ts similarity index 93% rename from functions/routing/helpers/get_neighbours.js rename to src/functions/routing/helpers/get_neighbours.ts index 811fe09..22a48c9 100644 --- a/functions/routing/helpers/get_neighbours.js +++ b/src/functions/routing/helpers/get_neighbours.ts @@ -1,8 +1,8 @@ -let { run_query } = require("../../neo4j_driver.js") -let distance_heuristic = require("./driving/distance_heuristic.js") -let kmh_to_mps = require("./driving/kmh_to_mps.js") -let { DEFAULT_SPEEDS_KMH } = require("./driving/defaults.js") -const { run_bached_query } = require("../routing_neo4j_driver.js") +let { run_query } = require("../../neo4j_driver") +let distance_heuristic = require("./driving/distance_heuristic") +let kmh_to_mps = require("./driving/kmh_to_mps") +let { DEFAULT_SPEEDS_KMH } = require("./driving/defaults") +const { run_bached_query } = require("../routing_neo4j_driver") module.exports = async function get_neighbours(node_positions, node_id, benchmarks, session) { const overallStart = performance.now() diff --git a/functions/routing/helpers/priority_queue.js b/src/functions/routing/helpers/priority_queue.ts similarity index 100% rename from functions/routing/helpers/priority_queue.js rename to src/functions/routing/helpers/priority_queue.ts diff --git a/functions/routing/helpers/time_heuristic.js b/src/functions/routing/helpers/time_heuristic.ts similarity index 73% rename from functions/routing/helpers/time_heuristic.js rename to src/functions/routing/helpers/time_heuristic.ts index 693a17a..099ccee 100644 --- a/functions/routing/helpers/time_heuristic.js +++ b/src/functions/routing/helpers/time_heuristic.ts @@ -1,6 +1,6 @@ -let { MAX_ASSUMED_SPEED_KMH } = require("./driving/defaults.js") -let distance_heuristic = require("./driving/distance_heuristic.js") -let kmh_to_mps = require("./driving/kmh_to_mps.js") +let { MAX_ASSUMED_SPEED_KMH } = require("./driving/defaults") +let distance_heuristic = require("./driving/distance_heuristic") +let kmh_to_mps = require("./driving/kmh_to_mps") module.exports = function time_heuristic(pos1, pos2, benchmarks) { const start = performance.now() diff --git a/functions/routing/routing_neo4j_driver.js b/src/functions/routing/routing_neo4j_driver.ts similarity index 100% rename from functions/routing/routing_neo4j_driver.js rename to src/functions/routing/routing_neo4j_driver.ts diff --git a/functions/tile_converter.js b/src/functions/tile_converter.ts similarity index 100% rename from functions/tile_converter.js rename to src/functions/tile_converter.ts diff --git a/index.js b/src/index.ts similarity index 73% rename from index.js rename to src/index.ts index b934068..5b861a4 100644 --- a/index.js +++ b/src/index.ts @@ -5,26 +5,26 @@ require("dotenv").config() const express = require("express") // config.json file -const config = require("./config.json") +const config = require("../config.json") // set up express app const app = express() app.set("view engine", "ejs") // set up middleware -app.use(require("./middlewares/logging.js")) // logging +app.use(require("./middlewares/logging")) // logging app.use(express.static("public")) app.use(express.json()) // routers -> main -app.use(require("./routers/page_loading.js")) -app.use(require("./routers/three_routes.js")) // three.js stuff +app.use(require("./routers/page_loading")) +app.use(require("./routers/three_routes")) // three.js stuff // routers -> api -app.use(require("./routers/api.js")) +app.use(require("./routers/api")) // neo4j stuff idk chatgpt told me to add it -const { close_driver } = require("./functions/neo4j_driver.js") +const { close_driver } = require("./functions/neo4j_driver") function on_signal() { console.log("Shutting down gracefully") diff --git a/middlewares/logging.js b/src/middlewares/logging.ts similarity index 97% rename from middlewares/logging.js rename to src/middlewares/logging.ts index aa10821..8ca846e 100644 --- a/middlewares/logging.js +++ b/src/middlewares/logging.ts @@ -1,4 +1,4 @@ -const color = require("../functions/color.js") +const color = require("../functions/color") module.exports = async (req, res, next) => { const start_time = process.hrtime() diff --git a/routers/api.js b/src/routers/api.ts similarity index 51% rename from routers/api.js rename to src/routers/api.ts index bcc1644..ec47c55 100644 --- a/routers/api.js +++ b/src/routers/api.ts @@ -2,13 +2,16 @@ const express = require("express") const router = express.Router() // Public frontend UI API -router.get("/api/get_tile/:z/:x/:y", require("../controllers/api/get_tile.js")) -router.get("/api/search", require("../controllers/api/search.js")) -router.get("/api/result/:id", require("../controllers/api/result.js")) +router.get("/api/get_tile/:z/:x/:y", require("../controllers/api/get_tile")) +router.get("/api/search", require("../controllers/api/search")) +router.get("/api/result/:id", require("../controllers/api/result")) -router.get("/api/route", require("../controllers/api/route.js")) +router.get("/api/route", require("../controllers/api/route")) // Private (Editor) UI API -router.get("/api/editor/get_closest_road_edge", require("../controllers/api/editor_actions/get_node.js")) +router.get( + "/api/editor/get_closest_road_edge", + require("../controllers/api/editor_actions/get_node") +) module.exports = router diff --git a/src/routers/page_loading.ts b/src/routers/page_loading.ts new file mode 100644 index 0000000..7d96b75 --- /dev/null +++ b/src/routers/page_loading.ts @@ -0,0 +1,7 @@ +const express = require("express") +const router = express.Router() + +router.get("/", require("../controllers/pages/index")) +router.get("/editor", require("../controllers/pages/editor")) + +module.exports = router diff --git a/routers/three_routes.js b/src/routers/three_routes.ts similarity index 100% rename from routers/three_routes.js rename to src/routers/three_routes.ts diff --git a/tsconfig.json b/tsconfig.json new file mode 100644 index 0000000..312f530 --- /dev/null +++ b/tsconfig.json @@ -0,0 +1,14 @@ +{ + "compilerOptions": { + "target": "es2016", + "module": "commonjs", + "rootDir": "src", + "outDir": "dist", + "esModuleInterop": true, + "resolveJsonModule": true, + "forceConsistentCasingInFileNames": true, + "strict": false, + "skipLibCheck": true + }, + "include": ["src/**/*"] +}