@igosprojects/rivet
Advanced tools
| import type { RivetResponse, CorsOptions } from './types'; | ||
| export declare function AddCORSHeader(res: RivetResponse, options?: CorsOptions): void; | ||
| export declare function HandlePreflight(req: any, res: RivetResponse): boolean; | ||
| //# sourceMappingURL=cors.d.ts.map |
| {"version":3,"file":"cors.d.ts","sourceRoot":"","sources":["../src/cors.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,aAAa,EAAE,WAAW,EAAE,MAAM,SAAS,CAAC;AAU1D,wBAAgB,aAAa,CAAC,GAAG,EAAE,aAAa,EAAE,OAAO,GAAE,WAAgC,QAgB1F;AAGD,wBAAgB,eAAe,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,aAAa,GAAG,OAAO,CAOrE"} |
+39
| "use strict"; | ||
| /* | ||
| This file is licensed under the MIT license, the terms must be followed! | ||
| Copyright(c) 2026 EyeDev | ||
| */ | ||
| Object.defineProperty(exports, "__esModule", { value: true }); | ||
| exports.AddCORSHeader = AddCORSHeader; | ||
| exports.HandlePreflight = HandlePreflight; | ||
| const DefaultCorsOptions = { | ||
| origin: '*', | ||
| methods: ['GET', 'POST', 'PUT', 'DELETE', 'PATCH', 'OPTIONS'], | ||
| headers: ['Content-Type', 'Authorization'], | ||
| credentials: false, | ||
| }; | ||
| // Adds the needed CORS tags to the response header | ||
| function AddCORSHeader(res, options = DefaultCorsOptions) { | ||
| const opts = { ...DefaultCorsOptions, ...options }; | ||
| // Origin | ||
| const origin = Array.isArray(opts.origin) ? opts.origin.join(', ') : opts.origin; | ||
| res.setHeader('Access-Control-Allow-Origin', origin || '*'); | ||
| // Headers | ||
| if (opts.headers) { | ||
| res.setHeader('Access-Control-Allow-Headers', opts.headers.join(', ')); | ||
| } | ||
| // Credentials | ||
| if (opts.credentials) { | ||
| res.setHeader('Access-Control-Allow-Credentials', 'true'); | ||
| } | ||
| } | ||
| // Handles preflight request sent by browsers | ||
| function HandlePreflight(req, res) { | ||
| if (req.method === 'OPTIONS') { | ||
| res.writeHead(204); // 204: No content | ||
| res.end(); | ||
| return true; | ||
| } | ||
| return false; | ||
| } | ||
| //# sourceMappingURL=cors.js.map |
| {"version":3,"file":"cors.js","sourceRoot":"","sources":["../src/cors.ts"],"names":[],"mappings":";AAAA;;;EAGE;;AAcF,sCAgBC;AAGD,0CAOC;AAlCD,MAAM,kBAAkB,GAAgB;IACpC,MAAM,EAAE,GAAG;IACX,OAAO,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,QAAQ,EAAE,OAAO,EAAE,SAAS,CAAC;IAC7D,OAAO,EAAE,CAAC,cAAc,EAAE,eAAe,CAAC;IAC1C,WAAW,EAAE,KAAK;CACrB,CAAC;AAEF,mDAAmD;AACnD,SAAgB,aAAa,CAAC,GAAkB,EAAE,UAAuB,kBAAkB;IACvF,MAAM,IAAI,GAAG,EAAE,GAAG,kBAAkB,EAAE,GAAG,OAAO,EAAE,CAAC;IAEnD,SAAS;IACT,MAAM,MAAM,GAAG,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC;IACjF,GAAG,CAAC,SAAS,CAAC,6BAA6B,EAAE,MAAM,IAAI,GAAG,CAAC,CAAC;IAE5D,UAAU;IACV,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;QACf,GAAG,CAAC,SAAS,CAAC,8BAA8B,EAAE,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;IAC3E,CAAC;IAED,cAAc;IACd,IAAI,IAAI,CAAC,WAAW,EAAE,CAAC;QACnB,GAAG,CAAC,SAAS,CAAC,kCAAkC,EAAE,MAAM,CAAC,CAAC;IAC9D,CAAC;AACL,CAAC;AAED,6CAA6C;AAC7C,SAAgB,eAAe,CAAC,GAAQ,EAAE,GAAkB;IACxD,IAAI,GAAG,CAAC,MAAM,KAAK,SAAS,EAAE,CAAC;QAC3B,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,kBAAkB;QACtC,GAAG,CAAC,GAAG,EAAE,CAAC;QACV,OAAO,IAAI,CAAC;IAChB,CAAC;IACD,OAAO,KAAK,CAAC;AACjB,CAAC"} |
| import type { RivetPlugin } from '../types'; | ||
| export declare const LoggingPlugin: RivetPlugin; | ||
| //# sourceMappingURL=logging.d.ts.map |
| {"version":3,"file":"logging.d.ts","sourceRoot":"","sources":["../../src/plugins/logging.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAc,MAAM,UAAU,CAAC;AAExD,eAAO,MAAM,aAAa,EAAE,WAmB3B,CAAC"} |
| "use strict"; | ||
| Object.defineProperty(exports, "__esModule", { value: true }); | ||
| exports.LoggingPlugin = void 0; | ||
| exports.LoggingPlugin = { | ||
| name: 'logging', | ||
| version: '1.0.0', | ||
| install(app) { | ||
| app.UseMiddleware((req, res, next) => { | ||
| const start = Date.now(); | ||
| const method = req.method; | ||
| const url = req.url; | ||
| console.log(`${method} ${url}`); | ||
| // Use 'finish' event instead of overriding end | ||
| res.once('finish', () => { | ||
| const duration = Date.now() - start; | ||
| console.log(`${method} ${url} - ${duration}ms`); | ||
| }); | ||
| next(); | ||
| }); | ||
| }, | ||
| }; | ||
| //# sourceMappingURL=logging.js.map |
| {"version":3,"file":"logging.js","sourceRoot":"","sources":["../../src/plugins/logging.ts"],"names":[],"mappings":";;;AAEa,QAAA,aAAa,GAAgB;IACtC,IAAI,EAAE,SAAS;IACf,OAAO,EAAE,OAAO;IAChB,OAAO,CAAC,GAAG;QACP,GAAG,CAAC,aAAa,CAAC,CAAC,GAAG,EAAE,GAAG,EAAE,IAAI,EAAE,EAAE;YACjC,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;YACzB,MAAM,MAAM,GAAG,GAAG,CAAC,MAAM,CAAC;YAC1B,MAAM,GAAG,GAAG,GAAG,CAAC,GAAG,CAAC;YACpB,OAAO,CAAC,GAAG,CAAC,GAAG,MAAM,IAAI,GAAG,EAAE,CAAC,CAAC;YAEhC,+CAA+C;YAC/C,GAAG,CAAC,IAAI,CAAC,QAAQ,EAAE,GAAG,EAAE;gBACpB,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,KAAK,CAAC;gBACpC,OAAO,CAAC,GAAG,CAAC,GAAG,MAAM,IAAI,GAAG,MAAM,QAAQ,IAAI,CAAC,CAAC;YACpD,CAAC,CAAC,CAAC;YAEH,IAAI,EAAE,CAAC;QACX,CAAC,CAAC,CAAC;IACP,CAAC;CACJ,CAAC"} |
+44
| /* | ||
| This file is licensed under the MIT license, the terms must be followed! | ||
| Copyright(c) 2026 EyeDev | ||
| */ | ||
| // This file handles CORS on the server side, it is used for security | ||
| import type { RivetResponse, CorsOptions } from './types'; | ||
| const DefaultCorsOptions: CorsOptions = { | ||
| origin: '*', | ||
| methods: ['GET', 'POST', 'PUT', 'DELETE', 'PATCH', 'OPTIONS'], | ||
| headers: ['Content-Type', 'Authorization'], | ||
| credentials: false, | ||
| }; | ||
| // Adds the needed CORS tags to the response header | ||
| export function AddCORSHeader(res: RivetResponse, options: CorsOptions = DefaultCorsOptions) { | ||
| const opts = { ...DefaultCorsOptions, ...options }; | ||
| // Origin | ||
| const origin = Array.isArray(opts.origin) ? opts.origin.join(', ') : opts.origin; | ||
| res.setHeader('Access-Control-Allow-Origin', origin || '*'); | ||
| // Headers | ||
| if (opts.headers) { | ||
| res.setHeader('Access-Control-Allow-Headers', opts.headers.join(', ')); | ||
| } | ||
| // Credentials | ||
| if (opts.credentials) { | ||
| res.setHeader('Access-Control-Allow-Credentials', 'true'); | ||
| } | ||
| } | ||
| // Handles preflight request sent by browsers | ||
| export function HandlePreflight(req: any, res: RivetResponse): boolean { | ||
| if (req.method === 'OPTIONS') { | ||
| res.writeHead(204); // 204: No content | ||
| res.end(); | ||
| return true; | ||
| } | ||
| return false; | ||
| } |
| import type { RivetPlugin, Middleware } from '../types'; | ||
| export const LoggingPlugin: RivetPlugin = { | ||
| name: 'logging', | ||
| version: '1.0.0', | ||
| install(app) { | ||
| app.UseMiddleware((req, res, next) => { | ||
| const start = Date.now(); | ||
| const method = req.method; | ||
| const url = req.url; | ||
| console.log(`${method} ${url}`); | ||
| // Use 'finish' event instead of overriding end | ||
| res.once('finish', () => { | ||
| const duration = Date.now() - start; | ||
| console.log(`${method} ${url} - ${duration}ms`); | ||
| }); | ||
| next(); | ||
| }); | ||
| }, | ||
| }; |
+1
-1
| export { Rivet } from './rivet'; | ||
| export type { RivetResponse } from './types'; | ||
| export type { RivetResponse, RivetPlugin } from './types'; | ||
| //# sourceMappingURL=index.d.ts.map |
@@ -1,1 +0,1 @@ | ||
| {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,KAAK,EAAE,MAAM,SAAS,CAAC;AAChC,YAAY,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC"} | ||
| {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,KAAK,EAAE,MAAM,SAAS,CAAC;AAChC,YAAY,EAAE,aAAa,EAAE,WAAW,EAAE,MAAM,SAAS,CAAC"} |
+8
-1
@@ -1,4 +0,6 @@ | ||
| import type { RivetResponse, RouteHandlers } from './types'; | ||
| import type { RivetResponse, RouteHandlers, CorsOptions, RivetPlugin, Middleware } from './types'; | ||
| import type { IncomingMessage } from 'http'; | ||
| export declare class Rivet { | ||
| private plugins; | ||
| private middlewares; | ||
| private server; | ||
@@ -12,3 +14,7 @@ routes: { | ||
| constructor(); | ||
| private corsOptions; | ||
| cors(options: CorsOptions): this; | ||
| start(port: number, callback?: () => void): void; | ||
| UseMiddleware(middleware: Middleware): this; | ||
| use(plugin: RivetPlugin): this; | ||
| private ParsePath; | ||
@@ -18,4 +24,5 @@ get(path: string, handler: Function): void; | ||
| OnRequest(req: IncomingMessage, res: RivetResponse): Promise<void>; | ||
| HandleRoute(req: IncomingMessage, res: RivetResponse): Promise<void>; | ||
| static(prefix: string, directory: string): void; | ||
| } | ||
| //# sourceMappingURL=rivet.d.ts.map |
@@ -1,1 +0,1 @@ | ||
| {"version":3,"file":"rivet.d.ts","sourceRoot":"","sources":["../src/rivet.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AAI5D,OAAO,KAAK,EAAE,eAAe,EAA0B,MAAM,MAAM,CAAC;AAkDpE,qBAAa,KAAK;IACd,OAAO,CAAC,MAAM,CAAuB;IACrC,MAAM,EAAE;QACJ,GAAG,EAAE,aAAa,CAAC;QACnB,IAAI,EAAE,aAAa,CAAC;QACpB,GAAG,EAAE,aAAa,CAAC;QACnB,MAAM,EAAE,aAAa,CAAC;KACzB,CAAC;;IAaF,KAAK,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,MAAM,IAAI,GAAG,IAAI;IAYhD,OAAO,CAAC,SAAS;IAkBjB,GAAG,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,QAAQ,GAAG,IAAI;IAU1C,IAAI,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,QAAQ,GAAG,IAAI;IAUrC,SAAS,CAAC,GAAG,EAAE,eAAe,EAAE,GAAG,EAAE,aAAa,GAAG,OAAO,CAAC,IAAI,CAAC;IAyExE,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,IAAI;CAgBlD"} | ||
| {"version":3,"file":"rivet.d.ts","sourceRoot":"","sources":["../src/rivet.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,aAAa,EAAE,aAAa,EAAE,WAAW,EAAE,WAAW,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AAKlG,OAAO,KAAK,EAAE,eAAe,EAA0B,MAAM,MAAM,CAAC;AAkDpE,qBAAa,KAAK;IACd,OAAO,CAAC,OAAO,CAAqB;IACpC,OAAO,CAAC,WAAW,CAAoB;IAEvC,OAAO,CAAC,MAAM,CAAuB;IACrC,MAAM,EAAE;QACJ,GAAG,EAAE,aAAa,CAAC;QACnB,IAAI,EAAE,aAAa,CAAC;QACpB,GAAG,EAAE,aAAa,CAAC;QACnB,MAAM,EAAE,aAAa,CAAC;KACzB,CAAC;;IAYF,OAAO,CAAC,WAAW,CAAmB;IAGtC,IAAI,CAAC,OAAO,EAAE,WAAW,GAAG,IAAI;IAMhC,KAAK,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,MAAM,IAAI,GAAG,IAAI;IAYhD,aAAa,CAAC,UAAU,EAAE,UAAU,GAAG,IAAI;IAM3C,GAAG,CAAC,MAAM,EAAE,WAAW,GAAG,IAAI;IAO9B,OAAO,CAAC,SAAS;IAkBjB,GAAG,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,QAAQ,GAAG,IAAI;IAU1C,IAAI,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,QAAQ,GAAG,IAAI;IAUrC,SAAS,CAAC,GAAG,EAAE,eAAe,EAAE,GAAG,EAAE,aAAa,GAAG,OAAO,CAAC,IAAI,CAAC;IAgBlE,WAAW,CAAC,GAAG,EAAE,eAAe,EAAE,GAAG,EAAE,aAAa,GAAG,OAAO,CAAC,IAAI,CAAC;IA8E1E,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,IAAI;CAgBlD"} |
+41
-1
@@ -13,2 +13,3 @@ "use strict"; | ||
| const response_1 = require("./response"); | ||
| const cors_1 = require("./cors"); | ||
| const static_1 = require("./static"); | ||
@@ -61,3 +62,6 @@ // Parses the request body | ||
| constructor() { | ||
| this.plugins = []; | ||
| this.middlewares = []; | ||
| this.server = null; | ||
| this.corsOptions = {}; | ||
| // Route function handlers are defined in here | ||
@@ -71,2 +75,7 @@ this.routes = { | ||
| } | ||
| // Allows editing of CORS options before the server is started, or while its running | ||
| cors(options) { | ||
| this.corsOptions = { ...this.corsOptions, ...options }; | ||
| return this; | ||
| } | ||
| // Starts the HTTP server and serves on the provided port | ||
@@ -82,2 +91,13 @@ start(port, callback) { | ||
| } | ||
| // Registers new middleware to run every request | ||
| UseMiddleware(middleware) { | ||
| this.middlewares.push(middleware); | ||
| return this; | ||
| } | ||
| // Registers a plugin | ||
| use(plugin) { | ||
| plugin.install(this); // Call the install function | ||
| this.plugins.push(plugin); | ||
| return this; | ||
| } | ||
| // Parses a path and returns the regex and parameters | ||
@@ -114,4 +134,24 @@ ParsePath(path) { | ||
| } | ||
| // Called when an request happends on the server | ||
| // Called when the server recives an request | ||
| async OnRequest(req, res) { | ||
| // Run all the middleware | ||
| let index = 0; | ||
| const next = async () => { | ||
| if (index < this.middlewares.length) { | ||
| const middleware = this.middlewares[index++]; | ||
| await middleware(req, res, next); | ||
| } | ||
| else { | ||
| await this.HandleRoute(req, res); | ||
| } | ||
| }; | ||
| await next(); | ||
| } | ||
| // Called when after middleware runs | ||
| async HandleRoute(req, res) { | ||
| // Always apply CORS headers | ||
| (0, cors_1.AddCORSHeader)(res, this.corsOptions); | ||
| // Handle preflight | ||
| if ((0, cors_1.HandlePreflight)(req, res)) | ||
| return; | ||
| const method = req.method; // Get the HTTP method | ||
@@ -118,0 +158,0 @@ const url = req.url?.split('?')[0] || '/'; // Get the URL and strip the query params |
@@ -1,1 +0,1 @@ | ||
| {"version":3,"file":"rivet.js","sourceRoot":"","sources":["../src/rivet.ts"],"names":[],"mappings":"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"} | ||
| {"version":3,"file":"rivet.js","sourceRoot":"","sources":["../src/rivet.ts"],"names":[],"mappings":"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"} |
+14
-1
@@ -1,2 +0,3 @@ | ||
| import { ServerResponse } from 'node:http'; | ||
| import { ServerResponse, IncomingMessage } from 'node:http'; | ||
| import type { Rivet } from './rivet'; | ||
| export type Route = { | ||
@@ -15,2 +16,14 @@ handler: Function; | ||
| }; | ||
| export interface CorsOptions { | ||
| origin?: string | string[]; | ||
| methods?: string[]; | ||
| headers?: string[]; | ||
| credentials?: boolean; | ||
| } | ||
| export interface RivetPlugin { | ||
| name: string; | ||
| version?: string; | ||
| install(app: Rivet): void | Promise<void>; | ||
| } | ||
| export type Middleware = (req: IncomingMessage, res: RivetResponse, next: () => void) => void; | ||
| //# sourceMappingURL=types.d.ts.map |
@@ -1,1 +0,1 @@ | ||
| {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,cAAc,EAAE,MAAM,WAAW,CAAC;AAG3C,MAAM,MAAM,KAAK,GAAG;IAChB,OAAO,EAAE,QAAQ,CAAC;IAClB,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB,KAAK,EAAE,MAAM,CAAC;CACjB,CAAC;AAGF,MAAM,MAAM,aAAa,GAAG;IACxB,CAAC,GAAG,EAAE,MAAM,GAAG,KAAK,CAAC;CACxB,CAAC;AAGF,MAAM,MAAM,aAAa,GAAG,cAAc,GAAG;IACzC,IAAI,EAAE,CAAC,IAAI,EAAE,GAAG,KAAK,IAAI,CAAC;IAC1B,IAAI,EAAE,CAAC,IAAI,EAAE,GAAG,KAAK,IAAI,CAAC;IAC1B,QAAQ,EAAE,CAAC,QAAQ,EAAE,MAAM,EAAE,WAAW,CAAC,EAAE,MAAM,KAAK,IAAI,CAAC;CAC9D,CAAC"} | ||
| {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,cAAc,EAAE,eAAe,EAAE,MAAM,WAAW,CAAC;AAC5D,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,SAAS,CAAC;AAGrC,MAAM,MAAM,KAAK,GAAG;IAChB,OAAO,EAAE,QAAQ,CAAC;IAClB,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB,KAAK,EAAE,MAAM,CAAC;CACjB,CAAC;AAGF,MAAM,MAAM,aAAa,GAAG;IACxB,CAAC,GAAG,EAAE,MAAM,GAAG,KAAK,CAAC;CACxB,CAAC;AAGF,MAAM,MAAM,aAAa,GAAG,cAAc,GAAG;IACzC,IAAI,EAAE,CAAC,IAAI,EAAE,GAAG,KAAK,IAAI,CAAC;IAC1B,IAAI,EAAE,CAAC,IAAI,EAAE,GAAG,KAAK,IAAI,CAAC;IAC1B,QAAQ,EAAE,CAAC,QAAQ,EAAE,MAAM,EAAE,WAAW,CAAC,EAAE,MAAM,KAAK,IAAI,CAAC;CAC9D,CAAC;AAEF,MAAM,WAAW,WAAW;IACxB,MAAM,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE,CAAC;IAC3B,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;IACnB,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;IACnB,WAAW,CAAC,EAAE,OAAO,CAAC;CACzB;AAED,MAAM,WAAW,WAAW;IACxB,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,OAAO,CAAC,GAAG,EAAE,KAAK,GAAG,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CAC7C;AAED,MAAM,MAAM,UAAU,GAAG,CAAC,GAAG,EAAE,eAAe,EAAE,GAAG,EAAE,aAAa,EAAE,IAAI,EAAE,MAAM,IAAI,KAAK,IAAI,CAAC"} |
+5
-3
| { | ||
| "name": "@igosprojects/rivet", | ||
| "version": "1.0.3", | ||
| "version": "1.0.4", | ||
| "description": "Rivet is a small server framework for NodeJS", | ||
@@ -21,4 +21,6 @@ "main": "./dist/index.js", | ||
| }, | ||
| "keywords": [], | ||
| "author": "", | ||
| "keywords": [ | ||
| "rivet" | ||
| ], | ||
| "author": "EyeDev", | ||
| "license": "MIT", | ||
@@ -25,0 +27,0 @@ "packageManager": "pnpm@10.33.0", |
+1
-1
@@ -7,2 +7,2 @@ /* | ||
| export { Rivet } from './rivet'; | ||
| export type { RivetResponse } from './types'; | ||
| export type { RivetResponse, RivetPlugin } from './types'; |
+49
-4
@@ -7,5 +7,5 @@ /* | ||
| import http from 'http'; | ||
| import https from 'https'; | ||
| import type { RivetResponse, RouteHandlers } from './types'; | ||
| import type { RivetResponse, RouteHandlers, CorsOptions, RivetPlugin, Middleware } from './types'; | ||
| import { InjectResponseHelpers } from './response'; | ||
| import { AddCORSHeader, HandlePreflight } from './cors'; | ||
| import { ServeStatic } from './static'; | ||
@@ -64,2 +64,5 @@ | ||
| export class Rivet { | ||
| private plugins: RivetPlugin[] = []; | ||
| private middlewares: Middleware[] = []; | ||
| private server: Server | null = null; | ||
@@ -83,2 +86,10 @@ routes: { | ||
| private corsOptions: CorsOptions = {}; | ||
| // Allows editing of CORS options before the server is started, or while its running | ||
| cors(options: CorsOptions): this { | ||
| this.corsOptions = { ...this.corsOptions, ...options }; | ||
| return this; | ||
| } | ||
| // Starts the HTTP server and serves on the provided port | ||
@@ -96,2 +107,15 @@ start(port: number, callback?: () => void): void { | ||
| // Registers new middleware to run every request | ||
| UseMiddleware(middleware: Middleware): this { | ||
| this.middlewares.push(middleware); | ||
| return this; | ||
| } | ||
| // Registers a plugin | ||
| use(plugin: RivetPlugin): this { | ||
| plugin.install(this); // Call the install function | ||
| this.plugins.push(plugin); | ||
| return this; | ||
| } | ||
| // Parses a path and returns the regex and parameters | ||
@@ -135,4 +159,26 @@ private ParsePath(path: string): { regex: RegExp; paramNames: string[] } { | ||
| // Called when an request happends on the server | ||
| // Called when the server recives an request | ||
| async OnRequest(req: IncomingMessage, res: RivetResponse): Promise<void> { | ||
| // Run all the middleware | ||
| let index = 0; | ||
| const next = async () => { | ||
| if (index < this.middlewares.length) { | ||
| const middleware = this.middlewares[index++]; | ||
| await middleware(req, res, next); | ||
| } else { | ||
| await this.HandleRoute(req, res); | ||
| } | ||
| }; | ||
| await next(); | ||
| } | ||
| // Called when after middleware runs | ||
| async HandleRoute(req: IncomingMessage, res: RivetResponse): Promise<void> { | ||
| // Always apply CORS headers | ||
| AddCORSHeader(res, this.corsOptions); | ||
| // Handle preflight | ||
| if (HandlePreflight(req, res)) return; | ||
| const method = req.method as keyof typeof this.routes; // Get the HTTP method | ||
@@ -171,3 +217,2 @@ const url = req.url?.split('?')[0] || '/'; // Get the URL and strip the query params | ||
| if (!route) { | ||
| for (const [pattern, r] of Object.entries(methodRoutes)) { | ||
@@ -174,0 +219,0 @@ if (pattern.endsWith('*')) continue; // Check if "/*" or such |
+17
-1
@@ -6,3 +6,4 @@ /* | ||
| import { ServerResponse } from 'node:http'; | ||
| import { ServerResponse, IncomingMessage } from 'node:http'; | ||
| import type { Rivet } from './rivet'; | ||
@@ -27,1 +28,16 @@ // New route type, replaced old simple one | ||
| }; | ||
| export interface CorsOptions { | ||
| origin?: string | string[]; | ||
| methods?: string[]; | ||
| headers?: string[]; | ||
| credentials?: boolean; | ||
| } | ||
| export interface RivetPlugin { | ||
| name: string; | ||
| version?: string; | ||
| install(app: Rivet): void | Promise<void>; | ||
| } | ||
| export type Middleware = (req: IncomingMessage, res: RivetResponse, next: () => void) => void; |
Network access
Supply chain riskThis module accesses the network.
Found 1 instance in 1 package
No contributors or author data
MaintenancePackage does not specify a list of contributors or an author in package.json.
Found 1 instance in 1 package
53927
30.56%43
30.3%907
33.78%0
-100%4
-20%