From 25c8c6fa2786aa4e77d4549afa0f2d412a51ae15 Mon Sep 17 00:00:00 2001 From: Moza Al Fahad Date: Sun, 31 Aug 2025 15:45:41 +0300 Subject: [PATCH 1/4] fixed issue --- src/fibRoute.ts | 24 +++++++++++++++--------- 1 file changed, 15 insertions(+), 9 deletions(-) diff --git a/src/fibRoute.ts b/src/fibRoute.ts index 2d41ca5..ec3377c 100644 --- a/src/fibRoute.ts +++ b/src/fibRoute.ts @@ -1,16 +1,22 @@ -// Endpoint for querying the fibonacci numbers +// src/fibRoute.ts +import { type Request, type Response } from "express"; +import { fib } from "./fib"; // make sure fib.ts has `export function fib(n: number): number` -const fibonacci = require("./fib"); +// Define the expected params shape +type FibParams = { num: string }; -export default (req, res) => { - const { num } = req.params; +export default (req: Request, res: Response) => { + const { num } = req.params; // num: string + const n = parseInt(num, 10); - const fibN = fibonacci(parseInt(num)); - let result = `fibonacci(${num}) is ${fibN}`; - - if (fibN < 0) { - result = `fibonacci(${num}) is undefined`; + // Input validation + if (isNaN(n) || n < 0) { + return res.status(400).send(`fibonacci(${num}) is undefined`); } + const fibN = fib(n); // fib returns number + const result = `fibonacci(${n}) is ${fibN}`; + res.send(result); }; + From 662406402d1af3f41ea78cfd3a450b13a20cd776 Mon Sep 17 00:00:00 2001 From: mfahad2 Date: Sun, 31 Aug 2025 17:31:10 +0300 Subject: [PATCH 2/4] Update fibRoute.ts --- src/fibRoute.ts | 23 ++++++++++++----------- 1 file changed, 12 insertions(+), 11 deletions(-) diff --git a/src/fibRoute.ts b/src/fibRoute.ts index 33c7bde..9c8acd3 100644 --- a/src/fibRoute.ts +++ b/src/fibRoute.ts @@ -1,25 +1,26 @@ // src/fibRoute.ts import { Request, Response } from "express"; -import { fib } from "./fib"; +import fibonacci from "./fib"; // <-- if fib.ts uses default export -// Expected route params: /fib/:num -type FibParams = { num: string }; +// If fib.ts has `export function fib(...)`, then instead do: +// import { fib as fibonacci } from "./fib"; -export default function fibRoute(req: Request, res: Response): void { - const numParam = req.params?.num; // string from URL +export default function fibRoute(req: Request, res: Response): void { + const { num } = (req.params as { num?: string }); - if (typeof numParam !== "string") { + if (typeof num !== "string") { res.status(400).send("Missing route parameter 'num'"); return; } - const n = Number.parseInt(numParam, 10); - if (Number.isNaN(n) || n < 0) { - res.status(400).send(`Invalid number: "${numParam}"`); + const n = Number.parseInt(num, 10); + if (!Number.isFinite(n) || n < 0) { + res.status(400).send(`Invalid number: "${num}"`); return; } - const fibN = fib(n); // fib: (number) => number - res.send(`fibonacci(${n}) is ${fibN}`); + const value = fibonacci(n); + res.send(`fibonacci(${n}) is ${value}`); } + From c7ca2ed90d273daa98c3e641e5dc642b125eb50d Mon Sep 17 00:00:00 2001 From: mfahad2 Date: Sun, 31 Aug 2025 17:32:51 +0300 Subject: [PATCH 3/4] fixing fibRoute.ts --- src/fibRoute.ts | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/src/fibRoute.ts b/src/fibRoute.ts index 9c8acd3..cf45371 100644 --- a/src/fibRoute.ts +++ b/src/fibRoute.ts @@ -1,9 +1,6 @@ // src/fibRoute.ts import { Request, Response } from "express"; -import fibonacci from "./fib"; // <-- if fib.ts uses default export - -// If fib.ts has `export function fib(...)`, then instead do: -// import { fib as fibonacci } from "./fib"; +import { fibonacci } from "./fib"; export default function fibRoute(req: Request, res: Response): void { const { num } = (req.params as { num?: string }); @@ -24,3 +21,4 @@ export default function fibRoute(req: Request, res: Response): void { } + From c15e9247f5a79c9d07a3d5de8931dc412e6832dc Mon Sep 17 00:00:00 2001 From: mfahad2 Date: Sun, 31 Aug 2025 17:36:36 +0300 Subject: [PATCH 4/4] Update again fibRoute.ts --- src/fibRoute.ts | 32 +++++++++++++++----------------- 1 file changed, 15 insertions(+), 17 deletions(-) diff --git a/src/fibRoute.ts b/src/fibRoute.ts index cf45371..3c35694 100644 --- a/src/fibRoute.ts +++ b/src/fibRoute.ts @@ -1,24 +1,22 @@ // src/fibRoute.ts -import { Request, Response } from "express"; -import { fibonacci } from "./fib"; +<<<<<<< fix-issue-fibRoute +import { type Request, type Response } from "express"; +import { fib } from "./fib"; // make sure fib.ts has `export function fib(n: number): number` -export default function fibRoute(req: Request, res: Response): void { - const { num } = (req.params as { num?: string }); +// Define the expected params shape +type FibParams = { num: string }; - if (typeof num !== "string") { - res.status(400).send("Missing route parameter 'num'"); - return; - } +export default (req: Request, res: Response) => { + const { num } = req.params; // num: string + const n = parseInt(num, 10); - const n = Number.parseInt(num, 10); - if (!Number.isFinite(n) || n < 0) { - res.status(400).send(`Invalid number: "${num}"`); - return; + // Input validation + if (isNaN(n) || n < 0) { + return res.status(400).send(`fibonacci(${num}) is undefined`); } - const value = fibonacci(n); - res.send(`fibonacci(${n}) is ${value}`); -} - - + const fibN = fib(n); // fib returns number + const result = `fibonacci(${n}) is ${fibN}`; + res.send(result); +};