diff --git a/dist/index.d.ts.map b/dist/index.d.ts.map index cd4678d..7508e82 100644 --- a/dist/index.d.ts.map +++ b/dist/index.d.ts.map @@ -1 +1 @@ -{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAyDA,QAAA,MAAM,GAAG,6CAAY,CAAC;AA2WtB,eAAe,GAAG,CAAC"} \ No newline at end of file +{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AA6DA,QAAA,MAAM,GAAG,6CAAY,CAAC;AAwXtB,eAAe,GAAG,CAAC"} \ No newline at end of file diff --git a/dist/index.js b/dist/index.js index 99148ee..bdf50c6 100644 --- a/dist/index.js +++ b/dist/index.js @@ -19,8 +19,10 @@ import { SorobanEventListener } from "./services/sorobanEventListener"; import { specs } from "./lib/swagger"; import { multiSigSubmissionService } from "./services/multiSigSubmissionService"; import { apiKeyMiddleware } from "./middleware/apiKeyMiddleware"; +import { rateLimitMiddleware } from "./middleware/rateLimitMiddleware"; import { validateEnv } from "./utils/envValidator"; import { hourlyAverageService } from "./services/hourlyAverageService"; +import { metricsMiddleware, metricsEndpoint } from "./middleware/metrics"; // Load environment variables dotenv.config(); // [OPS] Implement "Environment Variable" Check on Start @@ -39,7 +41,9 @@ if (missingEnvVars.length > 0) { console.error("\nPlease set these variables in your .env file and restart the server."); process.exit(1); } -const dashboardUrl = process.env.DASHBOARD_URL || process.env.FRONTEND_URL || "http://localhost:3000"; +const dashboardUrl = process.env.DASHBOARD_URL || + process.env.FRONTEND_URL || + "http://localhost:3000"; if (!dashboardUrl) { console.error("❌ Missing required environment variable: DASHBOARD_URL"); process.exit(1); @@ -109,6 +113,13 @@ app.get("/api/v1/docs", swaggerUi.setup(specs, { `, customSiteTitle: "StellarFlow API Documentation", })); +// Expose metrics endpoint early so it's not rate limited, but still want timing +app.use(metricsMiddleware); +app.get("/metrics", metricsEndpoint); +// Apply Rate Limiting to all /api routes +app.use("/api", rateLimitMiddleware); +// Apply API Key Middleware to all /api routes +app.use("/api", apiKeyMiddleware); // Apply API Key Middleware to all /api/v1 routes app.use("/api/v1", apiKeyMiddleware); // Routes @@ -230,6 +241,9 @@ app.get("/", (req, res) => { cache: "/api/v1/market-rates/cache", clearCache: "POST /api/v1/market-rates/cache/clear", }, + system: { + metrics: "/metrics", + }, stats: { volume: "/api/v1/stats/volume?date=YYYY-MM-DD", }, @@ -248,7 +262,7 @@ app.use((err, req, res, next) => { }); }); // 404 handler -app.use("*", (req, res) => { +app.use((req, res) => { res.status(404).json({ success: false, error: "Endpoint not found", diff --git a/dist/index.js.map b/dist/index.js.map index 433394e..e93717f 100644 --- a/dist/index.js.map +++ b/dist/index.js.map @@ -1 +1 @@ -{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/dist/lib/swagger.d.ts b/dist/lib/swagger.d.ts index 5f71f42..2e51c2d 100644 --- a/dist/lib/swagger.d.ts +++ b/dist/lib/swagger.d.ts @@ -1,2 +1,2 @@ -export declare const specs: any; +export declare const specs: object; //# sourceMappingURL=swagger.d.ts.map \ No newline at end of file diff --git a/dist/lib/swagger.d.ts.map b/dist/lib/swagger.d.ts.map index bfb8e47..d54bbd3 100644 --- a/dist/lib/swagger.d.ts.map +++ b/dist/lib/swagger.d.ts.map @@ -1 +1 @@ -{"version":3,"file":"swagger.d.ts","sourceRoot":"","sources":["../../src/lib/swagger.ts"],"names":[],"mappings":"AAuGA,eAAO,MAAM,KAAK,KAAwB,CAAC"} \ No newline at end of file +{"version":3,"file":"swagger.d.ts","sourceRoot":"","sources":["../../src/lib/swagger.ts"],"names":[],"mappings":"AAuGA,eAAO,MAAM,KAAK,QAAwB,CAAC"} \ No newline at end of file diff --git a/dist/services/priceReviewService.d.ts.map b/dist/services/priceReviewService.d.ts.map index d74182a..897ae81 100644 --- a/dist/services/priceReviewService.d.ts.map +++ b/dist/services/priceReviewService.d.ts.map @@ -1 +1 @@ -{"version":3,"file":"priceReviewService.d.ts","sourceRoot":"","sources":["../../src/services/priceReviewService.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAQrD,eAAO,MAAM,qBAAqB,aAAiC,CAAC;AAEpE,KAAK,YAAY,GAAG,eAAe,GAAG,SAAS,GAAG,UAAU,GAAG,UAAU,CAAC;AAC1E,KAAK,cAAc,GAAG,eAAe,GAAG,WAAW,GAAG,SAAS,CAAC;AAuBhE,MAAM,WAAW,kBAAkB;IACjC,EAAE,EAAE,MAAM,CAAC;IACX,QAAQ,EAAE,MAAM,CAAC;IACjB,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,IAAI,CAAC;IAChB,YAAY,EAAE,YAAY,CAAC;IAC3B,cAAc,EAAE,cAAc,CAAC;IAC/B,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IACrB,YAAY,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,iBAAiB,EAAE,IAAI,GAAG,IAAI,CAAC;IAC/B,aAAa,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,aAAa,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B,UAAU,EAAE,IAAI,GAAG,IAAI,CAAC;IACxB,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,SAAS,EAAE,IAAI,CAAC;IAChB,SAAS,EAAE,IAAI,CAAC;CACjB;AAED,MAAM,WAAW,eAAe;IAC9B,cAAc,EAAE,MAAM,CAAC;IACvB,oBAAoB,EAAE,OAAO,CAAC;IAC9B,MAAM,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC5B,aAAa,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IACnC,cAAc,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IACpC,mBAAmB,CAAC,EAAE,IAAI,GAAG,SAAS,CAAC;CACxC;AAsCD,qBAAa,kBAAkB;IAC7B,OAAO,CAAC,kBAAkB,CAA8B;IAExD,OAAO,CAAC,YAAY;IAwCd,UAAU,CAAC,IAAI,EAAE,UAAU,GAAG,OAAO,CAAC,eAAe,CAAC;IAiGtD,qBAAqB,CACzB,cAAc,EAAE,MAAM,EACtB,MAAM,EAAE,MAAM,EACd,aAAa,EAAE,MAAM,GACpB,OAAO,CAAC,IAAI,CAAC;IAcV,iBAAiB,IAAI,OAAO,CAAC,kBAAkB,EAAE,CAAC;IAalD,oBAAoB,CACxB,QAAQ,EAAE,MAAM,GACf,OAAO,CAAC,kBAAkB,GAAG,IAAI,CAAC;IAc/B,aAAa,CAAC,MAAM,EAAE;QAC1B,QAAQ,EAAE,MAAM,CAAC;QACjB,UAAU,CAAC,EAAE,MAAM,CAAC;QACpB,WAAW,CAAC,EAAE,MAAM,CAAC;QACrB,MAAM,EAAE,MAAM,CAAC;QACf,aAAa,EAAE,MAAM,CAAC;KACvB,GAAG,OAAO,CAAC,kBAAkB,CAAC;IA2BzB,YAAY,CAAC,MAAM,EAAE;QACzB,QAAQ,EAAE,MAAM,CAAC;QACjB,UAAU,CAAC,EAAE,MAAM,CAAC;QACpB,WAAW,CAAC,EAAE,MAAM,CAAC;KACtB,GAAG,OAAO,CAAC,kBAAkB,CAAC;YAyBjB,0BAA0B;CA+BzC;AAED,eAAO,MAAM,kBAAkB,oBAA2B,CAAC"} \ No newline at end of file +{"version":3,"file":"priceReviewService.d.ts","sourceRoot":"","sources":["../../src/services/priceReviewService.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAQrD,eAAO,MAAM,qBAAqB,aAAiC,CAAC;AAEpE,KAAK,YAAY,GAAG,eAAe,GAAG,SAAS,GAAG,UAAU,GAAG,UAAU,CAAC;AAC1E,KAAK,cAAc,GAAG,eAAe,GAAG,WAAW,GAAG,SAAS,CAAC;AAuBhE,MAAM,WAAW,kBAAkB;IACjC,EAAE,EAAE,MAAM,CAAC;IACX,QAAQ,EAAE,MAAM,CAAC;IACjB,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,IAAI,CAAC;IAChB,YAAY,EAAE,YAAY,CAAC;IAC3B,cAAc,EAAE,cAAc,CAAC;IAC/B,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IACrB,YAAY,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,iBAAiB,EAAE,IAAI,GAAG,IAAI,CAAC;IAC/B,aAAa,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,aAAa,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B,UAAU,EAAE,IAAI,GAAG,IAAI,CAAC;IACxB,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,SAAS,EAAE,IAAI,CAAC;IAChB,SAAS,EAAE,IAAI,CAAC;CACjB;AAED,MAAM,WAAW,eAAe;IAC9B,cAAc,EAAE,MAAM,CAAC;IACvB,oBAAoB,EAAE,OAAO,CAAC;IAC9B,MAAM,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC5B,aAAa,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IACnC,cAAc,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IACpC,mBAAmB,CAAC,EAAE,IAAI,GAAG,SAAS,CAAC;CACxC;AAsCD,qBAAa,kBAAkB;IAC7B,OAAO,CAAC,kBAAkB,CAA8B;IAExD,OAAO,CAAC,YAAY;IA0Cd,UAAU,CAAC,IAAI,EAAE,UAAU,GAAG,OAAO,CAAC,eAAe,CAAC;IAoGtD,qBAAqB,CACzB,cAAc,EAAE,MAAM,EACtB,MAAM,EAAE,MAAM,EACd,aAAa,EAAE,MAAM,GACpB,OAAO,CAAC,IAAI,CAAC;IAcV,iBAAiB,IAAI,OAAO,CAAC,kBAAkB,EAAE,CAAC;IAalD,oBAAoB,CACxB,QAAQ,EAAE,MAAM,GACf,OAAO,CAAC,kBAAkB,GAAG,IAAI,CAAC;IAc/B,aAAa,CAAC,MAAM,EAAE;QAC1B,QAAQ,EAAE,MAAM,CAAC;QACjB,UAAU,CAAC,EAAE,MAAM,CAAC;QACpB,WAAW,CAAC,EAAE,MAAM,CAAC;QACrB,MAAM,EAAE,MAAM,CAAC;QACf,aAAa,EAAE,MAAM,CAAC;KACvB,GAAG,OAAO,CAAC,kBAAkB,CAAC;IA2BzB,YAAY,CAAC,MAAM,EAAE;QACzB,QAAQ,EAAE,MAAM,CAAC;QACjB,UAAU,CAAC,EAAE,MAAM,CAAC;QACpB,WAAW,CAAC,EAAE,MAAM,CAAC;KACtB,GAAG,OAAO,CAAC,kBAAkB,CAAC;YAyBjB,0BAA0B;CA+BzC;AAED,eAAO,MAAM,kBAAkB,oBAA2B,CAAC"} \ No newline at end of file diff --git a/dist/services/priceReviewService.js b/dist/services/priceReviewService.js index ae99443..e94785b 100644 --- a/dist/services/priceReviewService.js +++ b/dist/services/priceReviewService.js @@ -136,7 +136,7 @@ export class PriceReviewService { ${comparisonTimestamp ?? null}, ${changePercent ?? null} ) - RETURNING * + RETURNING *; `; const inserted = insertedRows[0]; if (!inserted) { @@ -167,52 +167,52 @@ export class PriceReviewService { await this.ensureSchema(); await prisma.$executeRaw ` UPDATE price_review_records - SET - contract_status = 'SUBMITTED', - memo_id = ${memoId}, - stellar_tx_hash = ${stellarTxHash}, - updated_at = CURRENT_TIMESTAMP +SET +contract_status = 'SUBMITTED', + memo_id = ${memoId}, +stellar_tx_hash = ${stellarTxHash}, +updated_at = CURRENT_TIMESTAMP WHERE id = ${reviewRecordId} - `; +`; } async getPendingReviews() { await this.ensureSchema(); const rows = await prisma.$queryRaw ` - SELECT * - FROM price_review_records +SELECT * + FROM price_review_records WHERE review_status = 'PENDING' ORDER BY created_at DESC - `; + `; return rows.map(mapReviewRow); } async getPendingReviewById(reviewId) { await this.ensureSchema(); const rows = await prisma.$queryRaw ` - SELECT * - FROM price_review_records +SELECT * + FROM price_review_records WHERE id = ${reviewId} AND review_status = 'PENDING' LIMIT 1 - `; + `; return rows[0] ? mapReviewRow(rows[0]) : null; } async approveReview(params) { await this.ensureSchema(); const rows = await prisma.$queryRaw ` UPDATE price_review_records - SET - review_status = 'APPROVED', - contract_status = 'SUBMITTED', - review_notes = ${params.reviewNotes ?? null}, - reviewed_by = ${params.reviewedBy ?? "manual-review"}, - reviewed_at = CURRENT_TIMESTAMP, - memo_id = ${params.memoId}, - stellar_tx_hash = ${params.stellarTxHash}, - updated_at = CURRENT_TIMESTAMP +SET +review_status = 'APPROVED', + contract_status = 'SUBMITTED', + review_notes = ${params.reviewNotes ?? null}, +reviewed_by = ${params.reviewedBy ?? "manual-review"}, +reviewed_at = CURRENT_TIMESTAMP, + memo_id = ${params.memoId}, +stellar_tx_hash = ${params.stellarTxHash}, +updated_at = CURRENT_TIMESTAMP WHERE id = ${params.reviewId} AND review_status = 'PENDING' - RETURNING * - `; +RETURNING * + `; const row = rows[0]; if (!row) { throw new Error(`Pending review ${params.reviewId} was not found`); @@ -223,17 +223,17 @@ export class PriceReviewService { await this.ensureSchema(); const rows = await prisma.$queryRaw ` UPDATE price_review_records - SET - review_status = 'REJECTED', - contract_status = 'SKIPPED', - review_notes = ${params.reviewNotes ?? null}, - reviewed_by = ${params.reviewedBy ?? "manual-review"}, - reviewed_at = CURRENT_TIMESTAMP, - updated_at = CURRENT_TIMESTAMP +SET +review_status = 'REJECTED', + contract_status = 'SKIPPED', + review_notes = ${params.reviewNotes ?? null}, +reviewed_by = ${params.reviewedBy ?? "manual-review"}, +reviewed_at = CURRENT_TIMESTAMP, + updated_at = CURRENT_TIMESTAMP WHERE id = ${params.reviewId} AND review_status = 'PENDING' - RETURNING * - `; +RETURNING * + `; const row = rows[0]; if (!row) { throw new Error(`Pending review ${params.reviewId} was not found`); @@ -243,15 +243,15 @@ export class PriceReviewService { async getLatestSubmittedBaseline(currency, timestamp) { const windowStart = new Date(timestamp.getTime() - PRICE_REVIEW_WINDOW_MS); const rows = await prisma.$queryRaw ` - SELECT * - FROM price_review_records +SELECT * + FROM price_review_records WHERE currency = ${currency} AND contract_status = 'SUBMITTED' AND fetched_at >= ${windowStart} AND fetched_at < ${timestamp} ORDER BY fetched_at DESC LIMIT 1 - `; + `; const row = rows[0]; if (!row) { return null; diff --git a/dist/services/priceReviewService.js.map b/dist/services/priceReviewService.js.map index 7278389..7d73bf7 100644 --- a/dist/services/priceReviewService.js.map +++ b/dist/services/priceReviewService.js.map @@ -1 +1 @@ -{"version":3,"file":"priceReviewService.js","sourceRoot":"","sources":["../../src/services/priceReviewService.ts"],"names":[],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"priceReviewService.js","sourceRoot":"","sources":["../../src/services/priceReviewService.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/package-lock.json b/package-lock.json index ee842b1..9a50eb8 100644 --- a/package-lock.json +++ b/package-lock.json @@ -22,7 +22,7 @@ "helmet": "^8.1.0", "morgan": "^1.10.1", "pg": "^8.20.0", - "redis": "^5.11.0", + "prom-client": "^15.1.3", "socket.io": "^4.8.3", "swagger-jsdoc": "^6.2.8", "swagger-ui-express": "^5.0.1", @@ -3783,132 +3783,19 @@ "@babel/core": "^7.11.0 || ^8.0.0-0" } }, - "node_modules/babel-plugin-istanbul": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/babel-plugin-istanbul/-/babel-plugin-istanbul-7.0.1.tgz", - "integrity": "sha512-D8Z6Qm8jCvVXtIRkBnqNHX0zJ37rQcFJ9u8WOS6tkYOsRdHBzypCstaxWiu5ZIlqQtviRYbgnRLSoCEvjqcqbA==", - "dev": true, - "license": "BSD-3-Clause", - "workspaces": [ - "test/babel-8" - ], - "dependencies": { - "@babel/helper-plugin-utils": "^7.0.0", - "@istanbuljs/load-nyc-config": "^1.0.0", - "@istanbuljs/schema": "^0.1.3", - "istanbul-lib-instrument": "^6.0.2", - "test-exclude": "^6.0.0" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/babel-plugin-jest-hoist": { - "version": "30.3.0", - "resolved": "https://registry.npmjs.org/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-30.3.0.tgz", - "integrity": "sha512-+TRkByhsws6sfPjVaitzadk1I0F5sPvOVUH5tyTSzhePpsGIVrdeunHSw/C36QeocS95OOk8lunc4rlu5Anwsg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/babel__core": "^7.20.5" - }, - "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" - } - }, - "node_modules/babel-preset-current-node-syntax": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/babel-preset-current-node-syntax/-/babel-preset-current-node-syntax-1.2.0.tgz", - "integrity": "sha512-E/VlAEzRrsLEb2+dv8yp3bo4scof3l9nR4lrld+Iy5NyVqgVYUJnDAmunkhPMisRI32Qc4iRiz425d8vM++2fg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/plugin-syntax-async-generators": "^7.8.4", - "@babel/plugin-syntax-bigint": "^7.8.3", - "@babel/plugin-syntax-class-properties": "^7.12.13", - "@babel/plugin-syntax-class-static-block": "^7.14.5", - "@babel/plugin-syntax-import-attributes": "^7.24.7", - "@babel/plugin-syntax-import-meta": "^7.10.4", - "@babel/plugin-syntax-json-strings": "^7.8.3", - "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4", - "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3", - "@babel/plugin-syntax-numeric-separator": "^7.10.4", - "@babel/plugin-syntax-object-rest-spread": "^7.8.3", - "@babel/plugin-syntax-optional-catch-binding": "^7.8.3", - "@babel/plugin-syntax-optional-chaining": "^7.8.3", - "@babel/plugin-syntax-private-property-in-object": "^7.14.5", - "@babel/plugin-syntax-top-level-await": "^7.14.5" - }, - "peerDependencies": { - "@babel/core": "^7.0.0 || ^8.0.0-0" - } - }, - "node_modules/babel-preset-jest": { - "version": "30.3.0", - "resolved": "https://registry.npmjs.org/babel-preset-jest/-/babel-preset-jest-30.3.0.tgz", - "integrity": "sha512-6ZcUbWHC+dMz2vfzdNwi87Z1gQsLNK2uLuK1Q89R11xdvejcivlYYwDlEv0FHX3VwEXpbBQ9uufB/MUNpZGfhQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "babel-plugin-jest-hoist": "30.3.0", - "babel-preset-current-node-syntax": "^1.2.0" - }, - "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" - }, - "peerDependencies": { - "@babel/core": "^7.11.0 || ^8.0.0-beta.1" - } - }, - "node_modules/balanced-match": { - "version": "4.0.4", - "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-4.0.4.tgz", - "integrity": "sha512-BLrgEcRTwX2o6gGxGOCNyMvGSp35YofuYzw9h1IMTRmKqttAZZVU67bdb9Pr2vUHA8+j3i2tJfjO6C6+4myGTA==", - "dev": true, - "license": "MIT", - "engines": { - "node": "18 || 20 || >=22" - } - }, - "node_modules/base32.js": { - "version": "0.1.0", - "license": "MIT", - "engines": { - "node": ">=0.12.0" - } - }, - "node_modules/base64-js": { - "version": "1.5.1", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ], - "license": "MIT" - }, - "node_modules/base64id": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/base64id/-/base64id-2.0.0.tgz", - "integrity": "sha512-lGe34o6EHj9y3Kts9R4ZYs/Gr+6N7MCaMlIFA3F1R2O5/m7K06AxfSeO5530PEERE6/WyEg3lsuyw4GHlPZHog==", - "license": "MIT", + "node_modules/@opentelemetry/api": { + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/@opentelemetry/api/-/api-1.9.1.tgz", + "integrity": "sha512-gLyJlPHPZYdAk1JENA9LeHejZe1Ti77/pTeFm/nMXmQH/HFZlcS/O2XJB+L8fkbrNSqhdtlvjBVjxwUYanNH5Q==", + "license": "Apache-2.0", "engines": { - "node": "^4.5.0 || >= 5.9" + "node": ">=8.0.0" } }, - "node_modules/baseline-browser-mapping": { - "version": "2.10.12", - "resolved": "https://registry.npmjs.org/baseline-browser-mapping/-/baseline-browser-mapping-2.10.12.tgz", - "integrity": "sha512-qyq26DxfY4awP2gIRXhhLWfwzwI+N5Nxk6iQi8EFizIaWIjqicQTE4sLnZZVdeKPRcVNoJOkkpfzoIYuvCKaIQ==", - "dev": true, + "node_modules/@prisma/adapter-pg": { + "version": "7.6.0", + "resolved": "https://registry.npmjs.org/@prisma/adapter-pg/-/adapter-pg-7.6.0.tgz", + "integrity": "sha512-BjHNmJqqa42NqJSDPnXUfwUofWo8LJY7Ui2gqxN4DmAOb+H/gGKv+hln2Xq/1kSJXPW5AXMXuNiPDMpywvyIOw==", "license": "Apache-2.0", "bin": { "baseline-browser-mapping": "dist/cli.cjs" @@ -5059,10 +4946,14 @@ "node": ">= 0.4" } }, - "node_modules/esbuild": { - "version": "0.27.4", - "dev": true, - "hasInstallScript": true, + "node_modules/bintrees": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/bintrees/-/bintrees-1.0.2.tgz", + "integrity": "sha512-VOMgTMwjAaUG580SXn3LacVgjurrbMme7ZZNYGSSV7mmtY6QQRh0Eg3pwIcntQ77DErK1L0NxkbetjcoXzVwKw==", + "license": "MIT" + }, + "node_modules/body-parser": { + "version": "2.2.2", "license": "MIT", "bin": { "esbuild": "bin/esbuild" @@ -5871,21 +5762,12 @@ "resolved": "https://registry.npmjs.org/entities/-/entities-4.5.0.tgz", "integrity": "sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==", "dev": true, - "hasInstallScript": true, - "license": "MIT", - "optional": true, - "os": [ - "darwin" - ], + "license": "BSD-2-Clause", "engines": { - "node": "^8.16.0 || ^10.6.0 || >=11.0.0" - } - }, - "node_modules/function-bind": { - "version": "1.1.2", - "license": "MIT", + "node": ">=0.12" + }, "funding": { - "url": "https://github.com/sponsors/ljharb" + "url": "https://github.com/fb55/entities?sponsor=1" } }, "node_modules/env-paths": { @@ -8642,6 +8524,19 @@ } } }, + "node_modules/prom-client": { + "version": "15.1.3", + "resolved": "https://registry.npmjs.org/prom-client/-/prom-client-15.1.3.tgz", + "integrity": "sha512-6ZiOBfCywsD4k1BN9IX0uZhF+tJkV8q8llP64G5Hajs4JOeVLPCwpPVcpXy3BwYiUGgyJzsJJQeOIv7+hDSq8g==", + "license": "Apache-2.0", + "dependencies": { + "@opentelemetry/api": "^1.4.0", + "tdigest": "^0.1.1" + }, + "engines": { + "node": "^16 || ^18 || >=20" + } + }, "node_modules/proper-lockfile": { "version": "4.1.2", "resolved": "https://registry.npmjs.org/proper-lockfile/-/proper-lockfile-4.1.2.tgz", @@ -9728,6 +9623,15 @@ "node": "*" } }, + "node_modules/tdigest": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/tdigest/-/tdigest-0.1.2.tgz", + "integrity": "sha512-+G0LLgjjo9BZX2MfdvPfH+MKLCrxlXSYec5DaPYP1fe6Iyhf0/fSmJ0bFiZ1F8BT6cGXl2LpltQptzjXKWEkKA==", + "license": "MIT", + "dependencies": { + "bintrees": "1.0.2" + } + }, "node_modules/tinyexec": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/tinyexec/-/tinyexec-1.0.4.tgz", diff --git a/package.json b/package.json index 5ea3dae..77641e0 100644 --- a/package.json +++ b/package.json @@ -51,7 +51,7 @@ "helmet": "^8.1.0", "morgan": "^1.10.1", "pg": "^8.20.0", - "redis": "^5.11.0", + "prom-client": "^15.1.3", "socket.io": "^4.8.3", "swagger-jsdoc": "^6.2.8", "swagger-ui-express": "^5.0.1", diff --git a/src/index.ts b/src/index.ts index 990b631..06e6c8f 100644 --- a/src/index.ts +++ b/src/index.ts @@ -11,6 +11,7 @@ import { multiSigSubmissionService } from "./services/multiSigSubmissionService" import { validateEnv } from "./utils/envValidator"; import { enableGlobalLogMasking } from "./utils/logMasker"; import { hourlyAverageService } from "./services/hourlyAverageService"; +import { metricsMiddleware, metricsEndpoint } from "./middleware/metrics"; // Load environment variables dotenv.config(); @@ -133,6 +134,10 @@ app.get( }), ); +// Expose metrics endpoint early so it's not rate limited, but still want timing +app.use(metricsMiddleware); +app.get("/metrics", metricsEndpoint); + // Apply Rate Limiting to all /api routes app.use("/api", rateLimitMiddleware); @@ -264,6 +269,9 @@ app.get("/", (req, res) => { cache: "/api/v1/market-rates/cache", clearCache: "POST /api/v1/market-rates/cache/clear", }, + system: { + metrics: "/metrics", + }, stats: { volume: "/api/v1/stats/volume?date=YYYY-MM-DD", }, diff --git a/src/middleware/metrics.ts b/src/middleware/metrics.ts new file mode 100644 index 0000000..565b1ef --- /dev/null +++ b/src/middleware/metrics.ts @@ -0,0 +1,82 @@ +import { Request, Response, NextFunction } from "express"; +import promClient from "prom-client"; + +// Create a Registry which registers the metrics +export const register = new promClient.Registry(); + +// Add default metrics (e.g., memory, CPU) +promClient.collectDefaultMetrics({ + register, + labels: { app: 'stellarflow-backend' }, +}); + +// Create a custom histogram for HTTP request durations +export const httpRequestDurationMicroseconds = new promClient.Histogram({ + name: "http_request_duration_seconds", + help: "Duration of HTTP requests in seconds", + labelNames: ["method", "route", "status_code"], + buckets: [0.01, 0.05, 0.1, 0.3, 0.5, 0.7, 1, 3, 5, 7, 10], +}); +register.registerMetric(httpRequestDurationMicroseconds); + +// Create a custom counter for HTTP requests +export const httpRequestsTotal = new promClient.Counter({ + name: "http_requests_total", + help: "Total number of HTTP requests", + labelNames: ["method", "route", "status_code"], +}); +register.registerMetric(httpRequestsTotal); + +export const metricsMiddleware = ( + req: Request, + res: Response, + next: NextFunction, +) => { + const start = process.hrtime(); + + res.on("finish", () => { + const elapsed = process.hrtime(start); + const durationSeconds = elapsed[0] + elapsed[1] / 1e9; + + let routeStr = "(unmatched)"; + if (req.route && req.route.path) { + routeStr = req.baseUrl + req.route.path; + } else { + // Fallback for custom handlers mapped directly on app + if ( + req.path === "/health" || + req.path === "/" || + req.path === "/metrics" || + req.path.startsWith("/api/v1/docs") + ) { + routeStr = req.path; + } + } + + httpRequestsTotal.inc({ + method: req.method, + route: routeStr, + status_code: res.statusCode, + }); + + httpRequestDurationMicroseconds.observe( + { + method: req.method, + route: routeStr, + status_code: res.statusCode, + }, + durationSeconds, + ); + }); + + next(); +}; + +export const metricsEndpoint = async (req: Request, res: Response) => { + try { + res.set("Content-Type", register.contentType); + res.end(await register.metrics()); + } catch (err) { + res.status(500).end(err); + } +}; diff --git a/tsc_output.txt b/tsc_output.txt new file mode 100644 index 0000000..fab14b8 Binary files /dev/null and b/tsc_output.txt differ