@adonisjs/http-server 6.3.0-0 → 6.4.0-0

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/README.md CHANGED
@@ -21,7 +21,7 @@ In order to ensure that the AdonisJS community is welcoming to all, please revie
21
21
  ## License
22
22
  AdonisJS HTTP server is open-sourced software licensed under the [MIT license](LICENSE.md).
23
23
 
24
- [gh-workflow-image]: https://img.shields.io/github/workflow/status/adonisjs/http-server/test?style=for-the-badge
24
+ [gh-workflow-image]: https://img.shields.io/github/actions/workflow/status/adonisjs/http-server/test.yml?style=for-the-badge
25
25
  [gh-workflow-url]: https://github.com/adonisjs/http-server/actions/workflows/test.yml "Github action"
26
26
 
27
27
  [typescript-image]: https://img.shields.io/badge/Typescript-294E80.svg?style=for-the-badge&logo=typescript
package/build/index.d.ts CHANGED
@@ -9,7 +9,4 @@ export { defineConfig } from './src/define_config.js';
9
9
  export { RouteResource } from './src/router/resource.js';
10
10
  export { BriskRoute } from './src/router/brisk.js';
11
11
  export { HttpContext } from './src/http_context/main.js';
12
- export { HttpException } from './src/exceptions/http_exception.js';
13
- export { AbortException } from './src/exceptions/abort_exception.js';
14
- export { RouteNotFoundException } from './src/exceptions/route_not_found.js';
15
- export { CannotLookupRouteException } from './src/exceptions/cannot_lookup_route.js';
12
+ export * as errors from './src/exceptions/main.js';
package/build/index.js CHANGED
@@ -9,7 +9,4 @@ export { defineConfig } from './src/define_config.js';
9
9
  export { RouteResource } from './src/router/resource.js';
10
10
  export { BriskRoute } from './src/router/brisk.js';
11
11
  export { HttpContext } from './src/http_context/main.js';
12
- export { HttpException } from './src/exceptions/http_exception.js';
13
- export { AbortException } from './src/exceptions/abort_exception.js';
14
- export { RouteNotFoundException } from './src/exceptions/route_not_found.js';
15
- export { CannotLookupRouteException } from './src/exceptions/cannot_lookup_route.js';
12
+ export * as errors from './src/exceptions/main.js';
@@ -0,0 +1,78 @@
1
+ /// <reference types="node" resolution-mode="require"/>
2
+ import { Exception } from '@poppinss/utils';
3
+ import type { HttpContext } from '../http_context/main.js';
4
+ export declare const E_ROUTE_NOT_FOUND: new (args: [method: string, url: string], options?: ErrorOptions | undefined) => Exception;
5
+ export declare const E_CANNOT_LOOKUP_ROUTE: new (args: [routeIdentifier: string], options?: ErrorOptions | undefined) => Exception;
6
+ export declare const E_HTTP_EXCEPTION: {
7
+ new (message?: string | undefined, options?: (ErrorOptions & {
8
+ code?: string | undefined;
9
+ status?: number | undefined;
10
+ }) | undefined): {
11
+ body: any;
12
+ name: string;
13
+ help?: string | undefined;
14
+ code?: string | undefined;
15
+ status: number;
16
+ toString(): string;
17
+ readonly [Symbol.toStringTag]: string;
18
+ message: string;
19
+ stack?: string | undefined;
20
+ cause?: unknown;
21
+ };
22
+ code: string;
23
+ invoke(body: any, status: number, code?: string): {
24
+ body: any;
25
+ name: string;
26
+ help?: string | undefined;
27
+ code?: string | undefined;
28
+ status: number;
29
+ toString(): string;
30
+ readonly [Symbol.toStringTag]: string;
31
+ message: string;
32
+ stack?: string | undefined;
33
+ cause?: unknown;
34
+ };
35
+ help?: string | undefined;
36
+ status?: number | undefined;
37
+ message?: string | undefined;
38
+ captureStackTrace(targetObject: object, constructorOpt?: Function | undefined): void;
39
+ prepareStackTrace?: ((err: Error, stackTraces: NodeJS.CallSite[]) => any) | undefined;
40
+ stackTraceLimit: number;
41
+ };
42
+ export declare const E_HTTP_REQUEST_ABORTED: {
43
+ new (message?: string | undefined, options?: (ErrorOptions & {
44
+ code?: string | undefined;
45
+ status?: number | undefined;
46
+ }) | undefined): {
47
+ handle(error: any, ctx: HttpContext): void;
48
+ body: any;
49
+ name: string;
50
+ help?: string | undefined;
51
+ code?: string | undefined;
52
+ status: number;
53
+ toString(): string;
54
+ readonly [Symbol.toStringTag]: string;
55
+ message: string;
56
+ stack?: string | undefined;
57
+ cause?: unknown;
58
+ };
59
+ code: string;
60
+ invoke(body: any, status: number, code?: string): {
61
+ body: any;
62
+ name: string;
63
+ help?: string | undefined;
64
+ code?: string | undefined;
65
+ status: number;
66
+ toString(): string;
67
+ readonly [Symbol.toStringTag]: string;
68
+ message: string;
69
+ stack?: string | undefined;
70
+ cause?: unknown;
71
+ };
72
+ help?: string | undefined;
73
+ status?: number | undefined;
74
+ message?: string | undefined;
75
+ captureStackTrace(targetObject: object, constructorOpt?: Function | undefined): void;
76
+ prepareStackTrace?: ((err: Error, stackTraces: NodeJS.CallSite[]) => any) | undefined;
77
+ stackTraceLimit: number;
78
+ };
@@ -1,5 +1,7 @@
1
- import { Exception } from '@poppinss/utils';
2
- export class HttpException extends Exception {
1
+ import { createError, Exception } from '@poppinss/utils';
2
+ export const E_ROUTE_NOT_FOUND = createError('Cannot %s:%s', 'E_ROUTE_NOT_FOUND', 404);
3
+ export const E_CANNOT_LOOKUP_ROUTE = createError('Cannot lookup route "%s"', 'E_CANNOT_LOOKUP_ROUTE', 500);
4
+ export const E_HTTP_EXCEPTION = class HttpException extends Exception {
3
5
  body;
4
6
  static code = 'E_HTTP_EXCEPTION';
5
7
  static invoke(body, status, code = 'E_HTTP_EXCEPTION') {
@@ -17,4 +19,9 @@ export class HttpException extends Exception {
17
19
  error.body = body;
18
20
  return error;
19
21
  }
20
- }
22
+ };
23
+ export const E_HTTP_REQUEST_ABORTED = class AbortException extends E_HTTP_EXCEPTION {
24
+ handle(error, ctx) {
25
+ ctx.response.status(error.status).send(error.body);
26
+ }
27
+ };
@@ -13,7 +13,7 @@ import { RuntimeException } from '@poppinss/utils';
13
13
  import contentDisposition from 'content-disposition';
14
14
  import { Redirect } from './redirect.js';
15
15
  import { CookieSerializer } from './cookies/serializer.js';
16
- import { AbortException } from './exceptions/abort_exception.js';
16
+ import { E_HTTP_REQUEST_ABORTED } from './exceptions/main.js';
17
17
  const statFn = promisify(stat);
18
18
  const CACHEABLE_HTTP_METHODS = ['GET', 'HEAD'];
19
19
  export class Response extends Macroable {
@@ -357,7 +357,7 @@ export class Response extends Macroable {
357
357
  return handler;
358
358
  }
359
359
  abort(body, status) {
360
- throw AbortException.invoke(body, status || 400);
360
+ throw E_HTTP_REQUEST_ABORTED.invoke(body, status || 400);
361
361
  }
362
362
  abortIf(condition, body, status) {
363
363
  if (condition) {
@@ -1,4 +1,4 @@
1
- import { CannotLookupRouteException } from '../../exceptions/cannot_lookup_route.js';
1
+ import * as errors from '../../exceptions/main.js';
2
2
  export class RouteFinder {
3
3
  #routes;
4
4
  constructor(routes) {
@@ -18,7 +18,7 @@ export class RouteFinder {
18
18
  findOrFail(routeIdentifier) {
19
19
  const route = this.find(routeIdentifier);
20
20
  if (!route) {
21
- throw new CannotLookupRouteException(`Cannot lookup route "${routeIdentifier}"`);
21
+ throw new errors.E_CANNOT_LOOKUP_ROUTE([routeIdentifier]);
22
22
  }
23
23
  return route;
24
24
  }
@@ -1,4 +1,4 @@
1
- import { RouteNotFoundException } from '../../exceptions/route_not_found.js';
1
+ import * as errors from '../../exceptions/main.js';
2
2
  export function finalHandler(router, resolver, ctx) {
3
3
  return function () {
4
4
  const url = ctx.request.url();
@@ -12,6 +12,6 @@ export function finalHandler(router, resolver, ctx) {
12
12
  ctx.routeKey = route.routeKey;
13
13
  return route.route.execute(route.route, resolver, ctx);
14
14
  }
15
- return Promise.reject(new RouteNotFoundException(`Cannot ${method}:${url}`));
15
+ return Promise.reject(new errors.E_ROUTE_NOT_FOUND([method, url]));
16
16
  };
17
17
  }
@@ -0,0 +1,15 @@
1
+ import type { Logger } from '@adonisjs/logger';
2
+ import type { Request } from '../src/request.js';
3
+ import type { Response } from '../src/response.js';
4
+ import { HttpContext } from '../src/http_context/main.js';
5
+ type FactoryParameters = {
6
+ request: Request;
7
+ response: Response;
8
+ logger: Logger;
9
+ };
10
+ export declare class HttpContextFactory {
11
+ #private;
12
+ merge(params: Partial<FactoryParameters>): this;
13
+ create(): HttpContext;
14
+ }
15
+ export {};
@@ -0,0 +1,24 @@
1
+ import { Container } from '@adonisjs/fold';
2
+ import { LoggerFactory } from '@adonisjs/logger/test_factories/logger';
3
+ import { RequestFactory } from './request.js';
4
+ import { ResponseFactory } from './response.js';
5
+ import { HttpContext } from '../src/http_context/main.js';
6
+ export class HttpContextFactory {
7
+ #parameters = {};
8
+ #createRequest() {
9
+ return this.#parameters.request || new RequestFactory().create();
10
+ }
11
+ #createResponse() {
12
+ return this.#parameters.response || new ResponseFactory().create();
13
+ }
14
+ #createLogger() {
15
+ return this.#parameters.logger || new LoggerFactory().create();
16
+ }
17
+ merge(params) {
18
+ Object.assign(this.#parameters, params);
19
+ return this;
20
+ }
21
+ create() {
22
+ return new HttpContext(this.#createRequest(), this.#createResponse(), this.#createLogger(), new Container().createResolver());
23
+ }
24
+ }
@@ -0,0 +1,10 @@
1
+ import { Qs } from '../src/qs.js';
2
+ import type { QSParserConfig } from '../src/types/qs.js';
3
+ export declare class QsParserFactory {
4
+ #private;
5
+ merge(options: Partial<{
6
+ parse: Partial<QSParserConfig['parse']>;
7
+ stringify: Partial<QSParserConfig['stringify']>;
8
+ }>): this;
9
+ create(): Qs;
10
+ }
@@ -0,0 +1,26 @@
1
+ import { Qs } from '../src/qs.js';
2
+ export class QsParserFactory {
3
+ #options = {
4
+ parse: {
5
+ depth: 5,
6
+ parameterLimit: 1000,
7
+ allowSparse: false,
8
+ arrayLimit: 20,
9
+ comma: true,
10
+ },
11
+ stringify: {
12
+ encode: true,
13
+ encodeValuesOnly: false,
14
+ arrayFormat: 'indices',
15
+ skipNulls: false,
16
+ },
17
+ };
18
+ merge(options) {
19
+ Object.assign(this.#options.parse, options.parse);
20
+ Object.assign(this.#options.stringify, options.stringify);
21
+ return this;
22
+ }
23
+ create() {
24
+ return new Qs(this.#options);
25
+ }
26
+ }
@@ -0,0 +1,19 @@
1
+ /// <reference types="node" resolution-mode="require"/>
2
+ import type { Encryption } from '@adonisjs/encryption';
3
+ import { IncomingMessage, ServerResponse } from 'node:http';
4
+ import { Request } from '../src/request.js';
5
+ import { RequestConfig } from '../src/types/request.js';
6
+ type FactoryParameters = {
7
+ url: string;
8
+ method: string;
9
+ req: IncomingMessage;
10
+ res: ServerResponse;
11
+ encryption: Encryption;
12
+ config: Partial<RequestConfig>;
13
+ };
14
+ export declare class RequestFactory {
15
+ #private;
16
+ merge(params: Partial<FactoryParameters>): this;
17
+ create(): Request;
18
+ }
19
+ export {};
@@ -0,0 +1,42 @@
1
+ import { Socket } from 'node:net';
2
+ import proxyAddr from 'proxy-addr';
3
+ import { IncomingMessage, ServerResponse } from 'node:http';
4
+ import { EncryptionFactory } from '@adonisjs/encryption/test_factories/encryption';
5
+ import { Request } from '../src/request.js';
6
+ import { QsParserFactory } from './qs_parser_factory.js';
7
+ export class RequestFactory {
8
+ #parameters = {};
9
+ #getConfig() {
10
+ return {
11
+ allowMethodSpoofing: false,
12
+ trustProxy: proxyAddr.compile('loopback'),
13
+ subdomainOffset: 2,
14
+ generateRequestId: true,
15
+ ...this.#parameters.config,
16
+ };
17
+ }
18
+ #createRequest() {
19
+ const req = this.#parameters.req || new IncomingMessage(new Socket());
20
+ if (this.#parameters.url) {
21
+ req.url = this.#parameters.url;
22
+ }
23
+ if (this.#parameters.method) {
24
+ req.method = this.#parameters.method;
25
+ }
26
+ return req;
27
+ }
28
+ #createResponse(req) {
29
+ return this.#parameters.res || new ServerResponse(req);
30
+ }
31
+ #createEncryption() {
32
+ return this.#parameters.encryption || new EncryptionFactory().create();
33
+ }
34
+ merge(params) {
35
+ Object.assign(this.#parameters, params);
36
+ return this;
37
+ }
38
+ create() {
39
+ const req = this.#createRequest();
40
+ return new Request(req, this.#createResponse(req), this.#createEncryption(), this.#getConfig(), new QsParserFactory().create());
41
+ }
42
+ }
@@ -0,0 +1,19 @@
1
+ /// <reference types="node" resolution-mode="require"/>
2
+ import type { Encryption } from '@adonisjs/encryption';
3
+ import { IncomingMessage, ServerResponse } from 'node:http';
4
+ import { Response } from '../src/response.js';
5
+ import { Router } from '../src/router/main.js';
6
+ import { ResponseConfig } from '../src/types/response.js';
7
+ type FactoryParameters = {
8
+ req: IncomingMessage;
9
+ res: ServerResponse;
10
+ encryption: Encryption;
11
+ config: Partial<ResponseConfig>;
12
+ router: Router;
13
+ };
14
+ export declare class ResponseFactory {
15
+ #private;
16
+ merge(params: Partial<FactoryParameters>): this;
17
+ create(): Response;
18
+ }
19
+ export {};
@@ -0,0 +1,43 @@
1
+ import { Socket } from 'node:net';
2
+ import { IncomingMessage, ServerResponse } from 'node:http';
3
+ import { EncryptionFactory } from '@adonisjs/encryption/test_factories/encryption';
4
+ import { RouterFactory } from './router.js';
5
+ import { Response } from '../src/response.js';
6
+ import { QsParserFactory } from './qs_parser_factory.js';
7
+ export class ResponseFactory {
8
+ #parameters = {};
9
+ #getConfig() {
10
+ return {
11
+ etag: false,
12
+ jsonpCallbackName: 'callback',
13
+ cookie: {
14
+ maxAge: 90,
15
+ path: '/',
16
+ httpOnly: true,
17
+ sameSite: false,
18
+ secure: false,
19
+ },
20
+ ...this.#parameters.config,
21
+ };
22
+ }
23
+ #createRequest() {
24
+ return this.#parameters.req || new IncomingMessage(new Socket());
25
+ }
26
+ #createRouter() {
27
+ return this.#parameters.router || new RouterFactory().create();
28
+ }
29
+ #createResponse(req) {
30
+ return this.#parameters.res || new ServerResponse(req);
31
+ }
32
+ #createEncryption() {
33
+ return this.#parameters.encryption || new EncryptionFactory().create();
34
+ }
35
+ merge(params) {
36
+ Object.assign(this.#parameters, params);
37
+ return this;
38
+ }
39
+ create() {
40
+ const req = this.#createRequest();
41
+ return new Response(req, this.#createResponse(req), this.#createEncryption(), this.#getConfig(), this.#createRouter(), new QsParserFactory().create());
42
+ }
43
+ }
@@ -0,0 +1,13 @@
1
+ import type { Encryption } from '@adonisjs/encryption';
2
+ import type { Application } from '@adonisjs/application';
3
+ import { Router } from '../src/router/main.js';
4
+ type FactoryParameters = {
5
+ app: Application<any, any>;
6
+ encryption: Encryption;
7
+ };
8
+ export declare class RouterFactory {
9
+ #private;
10
+ merge(params: Partial<FactoryParameters>): this;
11
+ create(): Router;
12
+ }
13
+ export {};
@@ -0,0 +1,20 @@
1
+ import { AppFactory } from '@adonisjs/application/test_factories/app';
2
+ import { EncryptionFactory } from '@adonisjs/encryption/test_factories/encryption';
3
+ import { Router } from '../src/router/main.js';
4
+ import { QsParserFactory } from './qs_parser_factory.js';
5
+ export class RouterFactory {
6
+ #parameters = {};
7
+ #getApp() {
8
+ return this.#parameters.app || new AppFactory().create(new URL('./app/', import.meta.url));
9
+ }
10
+ #createEncryption() {
11
+ return this.#parameters.encryption || new EncryptionFactory().create();
12
+ }
13
+ merge(params) {
14
+ Object.assign(this.#parameters, params);
15
+ return this;
16
+ }
17
+ create() {
18
+ return new Router(this.#getApp(), this.#createEncryption(), new QsParserFactory().create());
19
+ }
20
+ }
@@ -0,0 +1,17 @@
1
+ import { Emitter } from '@adonisjs/events';
2
+ import type { Encryption } from '@adonisjs/encryption';
3
+ import type { Application } from '@adonisjs/application';
4
+ import { Server } from '../src/server/main.js';
5
+ import type { ServerConfig } from '../src/types/server.js';
6
+ type FactoryParameters = {
7
+ app: Application<any, any>;
8
+ encryption: Encryption;
9
+ emitter: Emitter<any>;
10
+ config: Partial<ServerConfig>;
11
+ };
12
+ export declare class ServerFactory {
13
+ #private;
14
+ merge(params: Partial<FactoryParameters>): this;
15
+ create(): Server;
16
+ }
17
+ export {};
@@ -0,0 +1,27 @@
1
+ import { Emitter } from '@adonisjs/events';
2
+ import { AppFactory } from '@adonisjs/application/test_factories/app';
3
+ import { EncryptionFactory } from '@adonisjs/encryption/test_factories/encryption';
4
+ import { Server } from '../src/server/main.js';
5
+ import { defineConfig } from '../src/define_config.js';
6
+ export class ServerFactory {
7
+ #parameters = {};
8
+ #getEmitter() {
9
+ return this.#parameters.emitter || new Emitter(this.#getApp());
10
+ }
11
+ #getConfig() {
12
+ return defineConfig(this.#parameters.config || {});
13
+ }
14
+ #getApp() {
15
+ return this.#parameters.app || new AppFactory().create(new URL('./app/', import.meta.url));
16
+ }
17
+ #createEncryption() {
18
+ return this.#parameters.encryption || new EncryptionFactory().create();
19
+ }
20
+ merge(params) {
21
+ Object.assign(this.#parameters, params);
22
+ return this;
23
+ }
24
+ create() {
25
+ return new Server(this.#getApp(), this.#createEncryption(), this.#getEmitter(), this.#getConfig());
26
+ }
27
+ }
package/package.json CHANGED
@@ -1,17 +1,19 @@
1
1
  {
2
2
  "name": "@adonisjs/http-server",
3
- "version": "6.3.0-0",
3
+ "version": "6.4.0-0",
4
4
  "description": "AdonisJS HTTP server with support packed with Routing and Cookies",
5
5
  "main": "build/index.js",
6
6
  "type": "module",
7
7
  "files": [
8
8
  "build/src",
9
+ "build/test_factories",
9
10
  "build/index.d.ts",
10
11
  "build/index.js"
11
12
  ],
12
13
  "exports": {
13
14
  ".": "./build/index.js",
14
- "./types": "./build/src/types/main.js"
15
+ "./types": "./build/src/types/main.js",
16
+ "./test_factories/*": "./build/test_factories/*.js"
15
17
  },
16
18
  "scripts": {
17
19
  "pretest": "npm run lint",
@@ -37,13 +39,13 @@
37
39
  "author": "virk,adonisjs",
38
40
  "license": "MIT",
39
41
  "devDependencies": {
40
- "@adonisjs/application": "^6.5.1-0",
42
+ "@adonisjs/application": "^6.6.0-0",
41
43
  "@adonisjs/config": "^4.1.3-0",
42
- "@adonisjs/encryption": "^5.0.3-0",
43
- "@adonisjs/events": "^8.3.0-0",
44
+ "@adonisjs/encryption": "^5.1.0-0",
45
+ "@adonisjs/events": "^8.4.0-0",
44
46
  "@adonisjs/fold": "^9.9.0-0",
45
- "@adonisjs/logger": "^5.1.1-0",
46
- "@commitlint/cli": "^17.4.0",
47
+ "@adonisjs/logger": "^5.2.0-0",
48
+ "@commitlint/cli": "^17.4.1",
47
49
  "@commitlint/config-conventional": "^17.4.0",
48
50
  "@fastify/middie": "^8.1.0",
49
51
  "@japa/api-client": "^1.4.2",
@@ -52,7 +54,7 @@
52
54
  "@japa/run-failed-tests": "^1.1.0",
53
55
  "@japa/runner": "^2.2.2",
54
56
  "@japa/spec-reporter": "^1.3.2",
55
- "@swc/core": "^1.3.25",
57
+ "@swc/core": "^1.3.26",
56
58
  "@types/accepts": "^1.3.5",
57
59
  "@types/content-disposition": "^0.5.5",
58
60
  "@types/cookie": "^0.5.1",
@@ -60,7 +62,7 @@
60
62
  "@types/encodeurl": "^1.0.0",
61
63
  "@types/etag": "^1.8.1",
62
64
  "@types/fresh": "^0.5.0",
63
- "@types/fs-extra": "^9.0.13",
65
+ "@types/fs-extra": "^11.0.1",
64
66
  "@types/http-status-codes": "^1.2.0",
65
67
  "@types/mime-types": "^2.1.1",
66
68
  "@types/on-finished": "^2.3.1",
@@ -114,9 +116,9 @@
114
116
  "vary": "^1.1.2"
115
117
  },
116
118
  "peerDependencies": {
117
- "@adonisjs/application": "^6.5.1-0",
118
- "@adonisjs/events": "^8.3.0-0",
119
- "@adonisjs/encryption": "^5.0.3-0",
119
+ "@adonisjs/application": "^6.6.0-0",
120
+ "@adonisjs/encryption": "^5.1.0-0",
121
+ "@adonisjs/events": "^8.4.0-0",
120
122
  "@adonisjs/fold": "^9.9.0-0"
121
123
  },
122
124
  "repository": {
@@ -1,5 +0,0 @@
1
- import { HttpException } from './http_exception.js';
2
- import type { HttpContext } from '../http_context/main.js';
3
- export declare class AbortException extends HttpException {
4
- handle(error: HttpException, ctx: HttpContext): void;
5
- }
@@ -1,6 +0,0 @@
1
- import { HttpException } from './http_exception.js';
2
- export class AbortException extends HttpException {
3
- handle(error, ctx) {
4
- ctx.response.status(error.status).send(error.body);
5
- }
6
- }
@@ -1,5 +0,0 @@
1
- import { Exception } from '@poppinss/utils';
2
- export declare class CannotLookupRouteException extends Exception {
3
- static status: number;
4
- static code: string;
5
- }
@@ -1,5 +0,0 @@
1
- import { Exception } from '@poppinss/utils';
2
- export class CannotLookupRouteException extends Exception {
3
- static status = 500;
4
- static code = 'E_CANNOT_LOOKUP_ROUTE';
5
- }
@@ -1,6 +0,0 @@
1
- import { Exception } from '@poppinss/utils';
2
- export declare class HttpException extends Exception {
3
- body: any;
4
- static code: string;
5
- static invoke(body: any, status: number, code?: string): HttpException;
6
- }
@@ -1,5 +0,0 @@
1
- import { HttpException } from './http_exception.js';
2
- export declare class RouteNotFoundException extends HttpException {
3
- static status: number;
4
- static code: string;
5
- }
@@ -1,5 +0,0 @@
1
- import { HttpException } from './http_exception.js';
2
- export class RouteNotFoundException extends HttpException {
3
- static status = 404;
4
- static code = 'E_ROUTE_NOT_FOUND';
5
- }