diesel-core 1.4.2 → 1.4.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/ctx.d.ts CHANGED
@@ -1,3 +1,4 @@
1
1
  import { Server } from "bun";
2
2
  import type { ContextType } from "./types";
3
3
  export default function createCtx(req: Request, server: Server, pathname: string, routePattern: string | undefined): ContextType;
4
+ export declare function extractDynamicParams(originalPath: string, incomingPath: string): Record<string, string> | null;
@@ -1,10 +1,14 @@
1
1
  import { BunRequest, Server } from "bun";
2
- import type { ContextType, DieselT } from "./types";
2
+ import type { ContextType, DieselT, HookType } from "./types";
3
3
  /** Fast parse that extracts pathname and raw query without constructing URL */
4
4
  export declare function parseRequestUrl(rawUrl: string): string;
5
5
  export default function handleRequest(req: BunRequest, server: Server, diesel: DieselT): Promise<Response>;
6
+ export declare function runHooks<T extends any[]>(label: HookType, hooksArray: any, args: T): Promise<any>;
7
+ export declare function runMiddlewares(diesel: DieselT, pathname: string, ctx: ContextType, server: Server): Promise<Response | null>;
6
8
  export declare function executeBunMiddlewares(middlewares: Function[], req: BunRequest, server: Server): Promise<any>;
9
+ export declare function runFilter(diesel: DieselT, path: string, ctx: ContextType, server: Server): Promise<any>;
7
10
  export declare function handleFilterRequest(diesel: DieselT, path: string, ctx: ContextType, server: Server): Promise<Response | undefined>;
8
11
  export declare function handleBunFilterRequest(diesel: DieselT, path: string, req: BunRequest, server: Server): Promise<Response | undefined>;
12
+ export declare function handleRouteNotFound(diesel: DieselT, ctx: ContextType, pathname: string): Promise<Response>;
9
13
  export declare function generateErrorResponse(status: number, error: string): Response;
10
14
  export declare function handleStaticFiles(diesel: DieselT, pathname: string, ctx: ContextType): Promise<Response | null>;
package/dist/main.d.ts CHANGED
@@ -1,28 +1,21 @@
1
1
  import Trie from "./trie.js";
2
- import { ContextType, corsT, FilterMethods, HookFunction, HookType, listenArgsT, middlewareFunc, onError, onRequest, RouteNotFoundHandler, type handlerFunction, type Hooks, type HttpMethod } from "./types.js";
2
+ import { CompileConfig, ContextType, corsT, FilterMethods, HookFunction, HookType, listenArgsT, middlewareFunc, onError, onRequest, RouteNotFoundHandler, type handlerFunction, type Hooks, type HttpMethod } from "./types.js";
3
3
  import { BunRequest, Server } from "bun";
4
4
  import { AdvancedLoggerOptions, LoggerOptions } from "./middlewares/logger/logger.js";
5
- import { ServerOptions } from "http";
6
5
  export default class Diesel {
7
6
  private static instance;
8
- fecth: ServerOptions['fetch'];
7
+ fecth: any;
9
8
  routes: Record<string, Function>;
10
9
  private tempRoutes;
11
10
  globalMiddlewares: middlewareFunc[];
12
11
  middlewares: Map<string, middlewareFunc[]>;
13
12
  trie: Trie;
14
- hasOnReqHook: boolean;
15
- hasMiddleware: boolean;
16
- hasPreHandlerHook: boolean;
17
- hasPostHandlerHook: boolean;
18
- hasOnSendHook: boolean;
19
- hasOnError: boolean;
20
13
  hooks: Hooks;
21
14
  corsConfig: corsT;
22
15
  FilterRoutes: string[] | null | undefined;
23
16
  filters: Set<string>;
24
- filterFunction: middlewareFunc[];
25
- hasFilterEnabled: boolean;
17
+ filterFunction: Function[];
18
+ private hasFilterEnabled;
26
19
  private serverInstance;
27
20
  staticPath: any;
28
21
  staticFiles: any;
@@ -32,6 +25,7 @@ export default class Diesel {
32
25
  idleTimeOut: number;
33
26
  routeNotFoundFunc: (c: ContextType) => void | Promise<void> | Promise<Response> | Response;
34
27
  private prefixApiUrl;
28
+ compileConfig: CompileConfig | null;
35
29
  constructor({ jwtSecret, baseApiUrl, enableFileRouting, idleTimeOut, prefixApiUrl, }?: {
36
30
  jwtSecret?: string;
37
31
  baseApiUrl?: string;
@@ -57,9 +51,9 @@ export default class Diesel {
57
51
  private loadRoutes;
58
52
  useLogger(options: LoggerOptions): this;
59
53
  useAdvancedLogger(options: AdvancedLoggerOptions): this;
60
- BunRoute(method: string, path: string, ...handlers: any[]): void;
54
+ BunRoute(method: string, path: string, ...handlersOrResponse: any[]): this;
61
55
  listen(port: any, ...args: listenArgsT[]): Server | void;
62
- fetch(): (req: BunRequest, server: Server) => Promise<Response>;
56
+ fetch(): (req: BunRequest, server: Server) => Promise<any>;
63
57
  close(callback?: () => void): void;
64
58
  /**
65
59
  * Registers a router instance for subrouting.
@@ -1,3 +1,3 @@
1
- var t={reset:"\x1B[0m",info:"\x1B[36m",warn:"\x1B[33m",error:"\x1B[31m",method:{GET:"\x1B[32m",POST:"\x1B[34m",PUT:"\x1B[35m",DELETE:"\x1B[31m",PATCH:"\x1B[36m"}},p=(d,n,o)=>{let i=t[d]||t.reset,g=o?.method?t.method[o.method]||t.reset:t.reset,u=o?.status?o.status>=500?t.error:o.status>=400?t.warn:t.info:t.reset;console.log(`
2
- ${i}[${d.toUpperCase()}]${t.reset} ${n} - ${g}${o?.method||""}${t.reset}`);let s={timestamp:new Date().toISOString(),...o,status:o?.status?`${u}${o.status}${t.reset}`:void 0,method:o?.method?`${g>i}${o.method}${t.reset}`:void 0};console.log(JSON.stringify(s,null,2)+`
3
- `)},$=(d)=>{let{app:n,logger:o,logLevel:i="info",onRequest:g,onSend:u,onError:s}=d||{};n?.addHooks("onRequest",(e,r)=>{e.startTime=Date.now(),o?.()??p(i,"Incoming Request",{method:e.method,url:r.toString(),headers:{"user-agent":e.headers.get("user-agent"),"content-type":e.headers.get("content-type")}}),g?.(e,r)}),n?.addHooks("onSend",async(e)=>{let r=`${Date.now()-e.req.startTime}ms`;o?.()??p(i,"Response Sent",{method:e.req.method,url:e.url.toString(),status:e.status,duration:r,reqId:e.get?.("requestId"),headers:{"content-type":e.headers.get("content-type")}});let a=await u?.(e);if(a instanceof Response)return a}),n?.addHooks("onError",async(e,r,a)=>{o?.()??p("error","Unhandled Error",{method:r.method,url:a.toString(),status:500,error:e.message});let m=await s?.(e,r,a);if(m instanceof Response)return m})},c=(d,n,o,i=0,g,u)=>{let s=t.method[n]||t.reset,e=i>=500?t.error:i>=400?t.warn:t.info,r=u?`[${u}] `:"",a=d==="<--"?`${d} ${s}${n}${t.reset} ${o} ${r}`:`${d} ${s}${n}${t.reset} ${o} ${e}${i}${t.reset} ${g??""} ${r}`;console.log(a)},l=(d)=>{let n=Date.now()-d;return n<1000?`${n}ms`:`${Math.round(n/1000)}s`},h=(d)=>{let{app:n,log:o,onRequest:i,onSend:g,onError:u}=d;n.addHooks("onRequest",(s,e)=>{s.startTime=Date.now(),o?.()??c("<--",s.method,e.pathname),i?.(s,e)}),n.addHooks("onSend",async(s)=>{let{method:e,url:r}=s.req,a=new URL(r).pathname,m=s.get?.("requestId");o?.()??c("-->",e,a,s.status,l(s.req.startTime),m);let R=await g?.(s);if(R instanceof Response)return R}),n.addHooks("onError",async(s,e,r)=>{o?.()??c(s.message,e.method,r.toString(),500);let a=await u?.(s,e,r);if(a instanceof Response)return a})};export{h as logger,$ as advancedLogger};
1
+ var t={reset:"\x1B[0m",info:"\x1B[36m",warn:"\x1B[33m",error:"\x1B[31m",method:{GET:"\x1B[32m",POST:"\x1B[34m",PUT:"\x1B[35m",DELETE:"\x1B[31m",PATCH:"\x1B[36m"}},p=(i,n,o)=>{let a=t[i]||t.reset,g=o?.method?t.method[o.method]||t.reset:t.reset,u=o?.status?o.status>=500?t.error:o.status>=400?t.warn:t.info:t.reset;console.log(`
2
+ ${a}[${i.toUpperCase()}]${t.reset} ${n} - ${g}${o?.method||""}${t.reset}`);let s={timestamp:new Date().toISOString(),...o,status:o?.status?`${u}${o.status}${t.reset}`:void 0,method:o?.method?`${g>a}${o.method}${t.reset}`:void 0};console.log(JSON.stringify(s,null,2)+`
3
+ `)},$=(i)=>{let{app:n,logger:o,logLevel:a="info",onRequest:g,onSend:u,onError:s}=i||{};n?.addHooks("onRequest",(e,r)=>{e.startTime=Date.now(),o?.()??p(a,"Incoming Request",{method:e.method,url:r,headers:{"user-agent":e.headers.get("user-agent"),"content-type":e.headers.get("content-type")}}),g?.(e,r)}),n?.addHooks("onSend",async(e)=>{let r=`${Date.now()-e.req.startTime}ms`;o?.()??p(a,"Response Sent",{method:e.req.method,url:e.url.toString(),status:e.status,duration:r,reqId:e.get?.("requestId"),headers:{"content-type":e.headers.get("content-type")}});let d=await u?.(e);if(d instanceof Response)return d}),n?.addHooks("onError",async(e,r,d)=>{o?.()??p("error","Unhandled Error",{method:r.method,url:d,status:500,error:e.message});let m=await s?.(e,r,d);if(m instanceof Response)return m})},c=(i,n,o,a=0,g,u)=>{let s=t.method[n]||t.reset,e=a>=500?t.error:a>=400?t.warn:t.info,r=u?`[${u}] `:"",d=i==="<--"?`${i} ${s}${n}${t.reset} ${o} ${r}`:`${i} ${s}${n}${t.reset} ${o} ${e}${a}${t.reset} ${g??""} ${r}`;console.log(d)},R=(i)=>{let n=Date.now()-i;return n<1000?`${n}ms`:`${Math.round(n/1000)}s`},h=(i)=>{let{app:n,log:o,onRequest:a,onSend:g,onError:u}=i;n.addHooks("onRequest",(s,e)=>{s.startTime=Date.now(),o?.()??c("<--",s.method,e),a?.(s,e)}),n.addHooks("onSend",async(s)=>{let{method:e,url:r}=s.req,d=new URL(r).pathname,m=s.get?.("requestId");o?.()??c("-->",e,d,s.status,R(s.req.startTime),m);let l=await g?.(s);if(l instanceof Response)return l}),n.addHooks("onError",async(s,e,r)=>{o?.()??c(s.message,e.method,r,500);let d=await u?.(s,e,r);if(d instanceof Response)return d})};export{h as logger,$ as advancedLogger};
@@ -10,11 +10,4 @@ declare class RedisStore implements RateLimitStore {
10
10
  set(key: string, value: string, ttlMs: number): Promise<void>;
11
11
  reset(key: string): Promise<void>;
12
12
  }
13
- declare class DiceDbStore implements RateLimitStore {
14
- private dicedb;
15
- constructor(dicedb: any);
16
- get(key: string): Promise<number | null>;
17
- set(key: string, value: string, ttlMs: number): Promise<void>;
18
- reset(key: string): Promise<void>;
19
- }
20
- export { RedisStore, DiceDbStore };
13
+ export { RedisStore, };
@@ -1 +1 @@
1
- class i{redis;constructor(t){this.redis=t}async get(t){let e=await this.redis.get(t);return e?parseInt(e):null}async set(t,e,s){await this.redis.set(t,e,"PX",s)}async reset(t){await this.redis.del(t)}}class r{dicedb;constructor(t){this.dicedb=t}async get(t){let e=await this.dicedb.get(t);return e?parseInt(e):null}async set(t,e,s){await this.dicedb.set(t,e,"PX",s)}async reset(t){await this.dicedb.del(t)}}export{i as RedisStore,r as DiceDbStore};
1
+ class r{redis;constructor(t){this.redis=t}async get(t){let e=await this.redis.get(t);return e?parseInt(e):null}async set(t,e,s){await this.redis.set(t,e,"PX",s)}async reset(t){await this.redis.del(t)}}export{r as RedisStore};
@@ -0,0 +1,3 @@
1
+ import { CompileConfig, DieselT } from "./types";
2
+ export declare const buildRequestPipeline: (config: CompileConfig, diesel: DieselT) => any;
3
+ export declare const BunRequestPipline: (config: CompileConfig, diesel: DieselT, method: string, path: string, ...handlersOrResponse: Function[]) => any;
package/dist/trie.d.ts CHANGED
@@ -1,4 +1,4 @@
1
- import type { handlerFunction, HttpMethod, RouteT } from "./types";
1
+ import type { handlerFunction, HttpMethod, RouteHandlerT } from "./types";
2
2
  declare class TrieNode {
3
3
  children: Record<string, TrieNode>;
4
4
  isEndOfWord: boolean;
@@ -12,13 +12,11 @@ declare class TrieNode {
12
12
  export default class Trie {
13
13
  root: TrieNode;
14
14
  constructor();
15
- insert(path: string, route: RouteT): void;
15
+ insert(path: string, route: RouteHandlerT): void;
16
16
  search(path: string, method: HttpMethod): {
17
17
  path: string;
18
18
  handler: handlerFunction;
19
- isDynamic: boolean;
20
19
  pattern: string;
21
- method: string;
22
20
  } | null;
23
21
  }
24
22
  export {};
package/dist/types.d.ts CHANGED
@@ -94,6 +94,7 @@ export interface DieselT {
94
94
  routeNotFoundFunc: RouteNotFoundHandler;
95
95
  routerInstance: DieselT;
96
96
  tempRoutes: Map<string, TempRouteEntry>;
97
+ routes: Record<string, Function>;
97
98
  }
98
99
  export type corsT = {
99
100
  origin?: string | string[] | null;
@@ -126,3 +127,12 @@ declare global {
126
127
  [key: string]: any;
127
128
  }
128
129
  }
130
+ export interface CompileConfig {
131
+ hasMiddleware: boolean;
132
+ hasOnReqHook: boolean;
133
+ hasPreHandlerHook: boolean;
134
+ hasOnError: boolean;
135
+ hasPostHandlerHook: boolean;
136
+ hasOnSendHook: boolean;
137
+ hasFilterEnabled: boolean;
138
+ }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "diesel-core",
3
- "version": "1.4.2",
3
+ "version": "1.4.4",
4
4
  "description": "Web framework built on Web Standards",
5
5
  "main": "index.js",
6
6
  "types": "index.d.ts",