azurajs 3.0.2 → 3.0.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/README.md +32 -0
- package/dist/IpResolver-BVgnGnpf.d.mts +5 -0
- package/dist/IpResolver-BVgnGnpf.d.ts +5 -0
- package/dist/SwaggerPlugin-C0UZTjaZ.d.ts +6 -0
- package/dist/SwaggerPlugin-wr9S4SRG.d.mts +6 -0
- package/dist/cookies/index.d.mts +7 -0
- package/dist/cookies/index.d.ts +7 -0
- package/dist/cookies/index.js +38 -0
- package/dist/cookies/index.js.map +1 -0
- package/dist/cookies/index.mjs +35 -0
- package/dist/cookies/index.mjs.map +1 -0
- package/dist/core/index.d.mts +18 -27
- package/dist/core/index.d.ts +18 -27
- package/dist/core/index.js +214 -14
- package/dist/core/index.js.map +1 -1
- package/dist/core/index.mjs +214 -14
- package/dist/core/index.mjs.map +1 -1
- package/dist/cors/index.d.mts +7 -0
- package/dist/cors/index.d.ts +7 -0
- package/dist/cors/index.js +52 -0
- package/dist/cors/index.js.map +1 -0
- package/dist/cors/index.mjs +50 -0
- package/dist/cors/index.mjs.map +1 -0
- package/dist/decorators/index.d.mts +2 -0
- package/dist/decorators/index.d.ts +2 -0
- package/dist/decorators/index.js +25 -0
- package/dist/decorators/index.js.map +1 -1
- package/dist/decorators/index.mjs +24 -1
- package/dist/decorators/index.mjs.map +1 -1
- package/dist/decorators-B6l3CbxC.d.ts +13 -0
- package/dist/decorators-D5nY109r.d.mts +13 -0
- package/dist/http-error/index.d.mts +18 -0
- package/dist/http-error/index.d.ts +18 -0
- package/dist/http-error/index.js +81 -0
- package/dist/http-error/index.js.map +1 -0
- package/dist/http-error/index.mjs +79 -0
- package/dist/http-error/index.mjs.map +1 -0
- package/dist/index-j6QGMhZU.d.mts +30 -0
- package/dist/index-tpPZS_UK.d.ts +30 -0
- package/dist/index.d.mts +16 -5
- package/dist/index.d.ts +16 -5
- package/dist/index.js +1178 -14
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +1176 -15
- package/dist/index.mjs.map +1 -1
- package/dist/infra/index.d.mts +6 -0
- package/dist/infra/index.d.ts +6 -0
- package/dist/infra/index.js +162 -0
- package/dist/infra/index.js.map +1 -0
- package/dist/infra/index.mjs +159 -0
- package/dist/infra/index.mjs.map +1 -0
- package/dist/{Logger-iEQNVVSc.d.mts → logger/index.d.mts} +2 -1
- package/dist/{Logger-iEQNVVSc.d.ts → logger/index.d.ts} +2 -1
- package/dist/logger/index.js +123 -0
- package/dist/logger/index.js.map +1 -0
- package/dist/logger/index.mjs +120 -0
- package/dist/logger/index.mjs.map +1 -0
- package/dist/plugins/index.d.mts +8 -6
- package/dist/plugins/index.d.ts +8 -6
- package/dist/plugins/index.js +1101 -0
- package/dist/plugins/index.js.map +1 -1
- package/dist/plugins/index.mjs +1101 -1
- package/dist/plugins/index.mjs.map +1 -1
- package/dist/rate-limit/index.d.mts +7 -0
- package/dist/rate-limit/index.d.ts +7 -0
- package/dist/rate-limit/index.js +81 -0
- package/dist/rate-limit/index.js.map +1 -0
- package/dist/rate-limit/index.mjs +79 -0
- package/dist/rate-limit/index.mjs.map +1 -0
- package/dist/router/index.d.mts +4 -0
- package/dist/router/index.d.ts +4 -0
- package/dist/router/index.js +218 -0
- package/dist/router/index.js.map +1 -0
- package/dist/router/index.mjs +216 -0
- package/dist/router/index.mjs.map +1 -0
- package/dist/routes.type-DZO5VBW2.d.mts +58 -0
- package/dist/routes.type-DzHNkCag.d.ts +58 -0
- package/dist/swagger/index.d.mts +30 -0
- package/dist/swagger/index.d.ts +30 -0
- package/dist/swagger/index.js +1136 -0
- package/dist/swagger/index.js.map +1 -0
- package/dist/swagger/index.mjs +1126 -0
- package/dist/swagger/index.mjs.map +1 -0
- package/dist/swagger/swagger-ui-modern.html +894 -0
- package/dist/swagger.type-Bfn5nGR8.d.mts +42 -0
- package/dist/swagger.type-CfDbFCZC.d.ts +42 -0
- package/dist/types/index.d.mts +5 -58
- package/dist/types/index.d.ts +5 -58
- package/dist/utils/index.d.mts +7 -72
- package/dist/utils/index.d.ts +7 -72
- package/dist/validators/index.d.mts +48 -0
- package/dist/validators/index.d.ts +48 -0
- package/dist/validators/index.js +144 -0
- package/dist/validators/index.js.map +1 -0
- package/dist/validators/index.mjs +141 -0
- package/dist/validators/index.mjs.map +1 -0
- package/package.json +86 -2
- package/src/cookies/index.ts +1 -0
- package/src/core/index.ts +1 -0
- package/src/core/router.ts +26 -15
- package/src/core/server.ts +64 -14
- package/src/cors/index.ts +2 -0
- package/src/decorators/index.ts +2 -0
- package/src/http-error/index.ts +1 -0
- package/src/infra/index.ts +3 -0
- package/src/logger/index.ts +1 -0
- package/src/plugins/SwaggerPlugin.ts +45 -0
- package/src/plugins/index.ts +1 -0
- package/src/rate-limit/index.ts +2 -0
- package/src/router/index.ts +1 -0
- package/src/swagger/constants.ts +8 -0
- package/src/swagger/decorators.ts +35 -0
- package/src/swagger/index.ts +10 -0
- package/src/swagger/openapi-builder.ts +199 -0
- package/src/swagger/swagger-ui-html.ts +24 -0
- package/src/swagger/swagger-ui-modern.html +894 -0
- package/src/swagger/swagger-ui-template.ts +5 -0
- package/src/types/index.ts +7 -0
- package/src/types/swagger.type.ts +36 -0
- package/src/validators/index.ts +4 -0
|
@@ -1,5 +1,7 @@
|
|
|
1
1
|
import { M as MiddlewareHandler } from '../common.type-BhGCNyEm.js';
|
|
2
|
+
export { A as ApiOperation, a as ApiTags } from '../decorators-B6l3CbxC.js';
|
|
2
3
|
import 'node:http';
|
|
4
|
+
import '../routes.type-DzHNkCag.js';
|
|
3
5
|
|
|
4
6
|
declare function Controller(prefix?: string): ClassDecorator;
|
|
5
7
|
declare const Get: (path?: string) => MethodDecorator;
|
package/dist/decorators/index.js
CHANGED
|
@@ -97,6 +97,31 @@ function Meta(key, value) {
|
|
|
97
97
|
};
|
|
98
98
|
}
|
|
99
99
|
|
|
100
|
+
// src/swagger/constants.ts
|
|
101
|
+
var API_TAGS_KEY = "azura:api-tags";
|
|
102
|
+
var METHOD_TAGS_KEY = "azura:swagger-method-tags";
|
|
103
|
+
var API_OPERATION_KEY = "azura:swagger-operation";
|
|
104
|
+
|
|
105
|
+
// src/swagger/decorators.ts
|
|
106
|
+
function ApiTags(...tags) {
|
|
107
|
+
return function(target, propertyKey, _descriptor) {
|
|
108
|
+
if (propertyKey === void 0) {
|
|
109
|
+
Reflect.defineMetadata(API_TAGS_KEY, tags, target);
|
|
110
|
+
} else {
|
|
111
|
+
Reflect.defineMetadata(METHOD_TAGS_KEY, tags, target, String(propertyKey));
|
|
112
|
+
}
|
|
113
|
+
};
|
|
114
|
+
}
|
|
115
|
+
function ApiOperation(meta) {
|
|
116
|
+
return function(target, propertyKey, _descriptor) {
|
|
117
|
+
const key = String(propertyKey);
|
|
118
|
+
const cur = Reflect.getMetadata?.(API_OPERATION_KEY, target, key) ?? {};
|
|
119
|
+
Reflect.defineMetadata(API_OPERATION_KEY, { ...cur, ...meta }, target, key);
|
|
120
|
+
};
|
|
121
|
+
}
|
|
122
|
+
|
|
123
|
+
exports.ApiOperation = ApiOperation;
|
|
124
|
+
exports.ApiTags = ApiTags;
|
|
100
125
|
exports.Body = Body;
|
|
101
126
|
exports.Controller = Controller;
|
|
102
127
|
exports.Cookies = Cookies;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/decorators/Route.ts"],"names":[],"mappings":"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","file":"index.js","sourcesContent":["import type { HttpMethod, MiddlewareHandler } from \"../types/common.type.js\";\r\nimport type { ParamMetadata, RouteMeta } from \"../types/routes.type.js\";\r\n\r\nconst CONTROLLER_META_KEY = \"azura:controller\";\r\nconst ROUTES_META_KEY = \"azura:routes\";\r\nconst PARAMS_META_KEY = \"azura:params\";\r\nconst MIDDLEWARES_META_KEY = \"azura:middlewares\";\r\n\r\nfunction ensureReflect(): void {\r\n if (typeof Reflect === \"undefined\" || !Reflect.getMetadata) {\r\n const store = new Map<string, Map<any, any>>();\r\n (Reflect as any).defineMetadata = (key: string, value: any, target: any, prop?: string) => {\r\n const k = prop ? `${key}::${prop}` : key;\r\n if (!store.has(k)) store.set(k, new Map());\r\n store.get(k)!.set(target, value);\r\n };\r\n (Reflect as any).getMetadata = (key: string, target: any, prop?: string) => {\r\n const k = prop ? `${key}::${prop}` : key;\r\n return store.get(k)?.get(target);\r\n };\r\n }\r\n}\r\n\r\nensureReflect();\r\n\r\nexport function Controller(prefix: string = \"\"): ClassDecorator {\r\n return (target) => {\r\n Reflect.defineMetadata(CONTROLLER_META_KEY, prefix, target);\r\n };\r\n}\r\n\r\nfunction createMethodDecorator(method: HttpMethod) {\r\n return (path: string = \"\"): MethodDecorator => {\r\n return (target, propertyKey, _descriptor) => {\r\n Reflect.defineMetadata(\r\n ROUTES_META_KEY,\r\n { method, path, propertyKey: String(propertyKey), middlewares: [], params: [], meta: undefined },\r\n target,\r\n String(propertyKey),\r\n );\r\n };\r\n };\r\n}\r\n\r\nexport const Get = createMethodDecorator(\"GET\");\r\nexport const Post = createMethodDecorator(\"POST\");\r\nexport const Put = createMethodDecorator(\"PUT\");\r\nexport const Delete = createMethodDecorator(\"DELETE\");\r\nexport const Patch = createMethodDecorator(\"PATCH\");\r\nexport const Head = createMethodDecorator(\"HEAD\");\r\nexport const Options = createMethodDecorator(\"OPTIONS\");\r\n\r\nfunction createParamDecorator(type: ParamMetadata[\"type\"]) {\r\n return (name?: string): ParameterDecorator => {\r\n return (target, propertyKey, parameterIndex) => {\r\n const key = String(propertyKey);\r\n const existing: ParamMetadata[] = Reflect.getMetadata(PARAMS_META_KEY, target, key) ?? [];\r\n existing.push({ index: parameterIndex, type, name });\r\n Reflect.defineMetadata(PARAMS_META_KEY, existing, target, key);\r\n };\r\n };\r\n}\r\n\r\nexport const Body = createParamDecorator(\"body\");\r\nexport const Query = createParamDecorator(\"query\");\r\nexport const Param = createParamDecorator(\"param\");\r\nexport const Headers = createParamDecorator(\"header\");\r\nexport const Cookies = createParamDecorator(\"cookie\");\r\nexport const Req = createParamDecorator(\"req\");\r\nexport const Res = createParamDecorator(\"res\");\r\nexport const NextFunc = createParamDecorator(\"next\");\r\nexport const Ip = createParamDecorator(\"ip\");\r\nexport const Session = createParamDecorator(\"session\");\r\n\r\nexport function UseMiddleware(...middlewares: MiddlewareHandler[]): MethodDecorator & ClassDecorator {\r\n return (target: any, propertyKey?: string | symbol, _descriptor?: PropertyDescriptor) => {\r\n if (propertyKey) {\r\n const existing: MiddlewareHandler[] =\r\n Reflect.getMetadata(MIDDLEWARES_META_KEY, target, String(propertyKey)) ?? [];\r\n Reflect.defineMetadata(MIDDLEWARES_META_KEY, [...existing, ...middlewares], target, String(propertyKey));\r\n } else {\r\n const existing: MiddlewareHandler[] =\r\n Reflect.getMetadata(MIDDLEWARES_META_KEY, target) ?? [];\r\n Reflect.defineMetadata(MIDDLEWARES_META_KEY, [...existing, ...middlewares], target);\r\n }\r\n };\r\n}\r\n\r\nexport function applyDecorators(...decorators: (MethodDecorator | ClassDecorator)[]): MethodDecorator & ClassDecorator {\r\n return (target: any, propertyKey?: string | symbol, descriptor?: PropertyDescriptor) => {\r\n for (const decorator of decorators) {\r\n if (propertyKey !== undefined) {\r\n (decorator as MethodDecorator)(target, propertyKey, descriptor!);\r\n } else {\r\n (decorator as ClassDecorator)(target);\r\n }\r\n }\r\n };\r\n}\r\n\r\nexport function Meta(key: string, value: any): MethodDecorator {\r\n return (target, propertyKey, _descriptor) => {\r\n const routeMeta = Reflect.getMetadata(ROUTES_META_KEY, target, String(propertyKey));\r\n if (routeMeta) {\r\n if (!routeMeta.meta) routeMeta.meta = {};\r\n routeMeta.meta[key] = value;\r\n Reflect.defineMetadata(ROUTES_META_KEY, routeMeta, target, String(propertyKey));\r\n }\r\n };\r\n}\r\n"]}
|
|
1
|
+
{"version":3,"sources":["../../src/decorators/Route.ts","../../src/swagger/constants.ts","../../src/swagger/decorators.ts"],"names":[],"mappings":"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","file":"index.js","sourcesContent":["import type { HttpMethod, MiddlewareHandler } from \"../types/common.type.js\";\r\nimport type { ParamMetadata, RouteMeta } from \"../types/routes.type.js\";\r\n\r\nconst CONTROLLER_META_KEY = \"azura:controller\";\r\nconst ROUTES_META_KEY = \"azura:routes\";\r\nconst PARAMS_META_KEY = \"azura:params\";\r\nconst MIDDLEWARES_META_KEY = \"azura:middlewares\";\r\n\r\nfunction ensureReflect(): void {\r\n if (typeof Reflect === \"undefined\" || !Reflect.getMetadata) {\r\n const store = new Map<string, Map<any, any>>();\r\n (Reflect as any).defineMetadata = (key: string, value: any, target: any, prop?: string) => {\r\n const k = prop ? `${key}::${prop}` : key;\r\n if (!store.has(k)) store.set(k, new Map());\r\n store.get(k)!.set(target, value);\r\n };\r\n (Reflect as any).getMetadata = (key: string, target: any, prop?: string) => {\r\n const k = prop ? `${key}::${prop}` : key;\r\n return store.get(k)?.get(target);\r\n };\r\n }\r\n}\r\n\r\nensureReflect();\r\n\r\nexport function Controller(prefix: string = \"\"): ClassDecorator {\r\n return (target) => {\r\n Reflect.defineMetadata(CONTROLLER_META_KEY, prefix, target);\r\n };\r\n}\r\n\r\nfunction createMethodDecorator(method: HttpMethod) {\r\n return (path: string = \"\"): MethodDecorator => {\r\n return (target, propertyKey, _descriptor) => {\r\n Reflect.defineMetadata(\r\n ROUTES_META_KEY,\r\n { method, path, propertyKey: String(propertyKey), middlewares: [], params: [], meta: undefined },\r\n target,\r\n String(propertyKey),\r\n );\r\n };\r\n };\r\n}\r\n\r\nexport const Get = createMethodDecorator(\"GET\");\r\nexport const Post = createMethodDecorator(\"POST\");\r\nexport const Put = createMethodDecorator(\"PUT\");\r\nexport const Delete = createMethodDecorator(\"DELETE\");\r\nexport const Patch = createMethodDecorator(\"PATCH\");\r\nexport const Head = createMethodDecorator(\"HEAD\");\r\nexport const Options = createMethodDecorator(\"OPTIONS\");\r\n\r\nfunction createParamDecorator(type: ParamMetadata[\"type\"]) {\r\n return (name?: string): ParameterDecorator => {\r\n return (target, propertyKey, parameterIndex) => {\r\n const key = String(propertyKey);\r\n const existing: ParamMetadata[] = Reflect.getMetadata(PARAMS_META_KEY, target, key) ?? [];\r\n existing.push({ index: parameterIndex, type, name });\r\n Reflect.defineMetadata(PARAMS_META_KEY, existing, target, key);\r\n };\r\n };\r\n}\r\n\r\nexport const Body = createParamDecorator(\"body\");\r\nexport const Query = createParamDecorator(\"query\");\r\nexport const Param = createParamDecorator(\"param\");\r\nexport const Headers = createParamDecorator(\"header\");\r\nexport const Cookies = createParamDecorator(\"cookie\");\r\nexport const Req = createParamDecorator(\"req\");\r\nexport const Res = createParamDecorator(\"res\");\r\nexport const NextFunc = createParamDecorator(\"next\");\r\nexport const Ip = createParamDecorator(\"ip\");\r\nexport const Session = createParamDecorator(\"session\");\r\n\r\nexport function UseMiddleware(...middlewares: MiddlewareHandler[]): MethodDecorator & ClassDecorator {\r\n return (target: any, propertyKey?: string | symbol, _descriptor?: PropertyDescriptor) => {\r\n if (propertyKey) {\r\n const existing: MiddlewareHandler[] =\r\n Reflect.getMetadata(MIDDLEWARES_META_KEY, target, String(propertyKey)) ?? [];\r\n Reflect.defineMetadata(MIDDLEWARES_META_KEY, [...existing, ...middlewares], target, String(propertyKey));\r\n } else {\r\n const existing: MiddlewareHandler[] =\r\n Reflect.getMetadata(MIDDLEWARES_META_KEY, target) ?? [];\r\n Reflect.defineMetadata(MIDDLEWARES_META_KEY, [...existing, ...middlewares], target);\r\n }\r\n };\r\n}\r\n\r\nexport function applyDecorators(...decorators: (MethodDecorator | ClassDecorator)[]): MethodDecorator & ClassDecorator {\r\n return (target: any, propertyKey?: string | symbol, descriptor?: PropertyDescriptor) => {\r\n for (const decorator of decorators) {\r\n if (propertyKey !== undefined) {\r\n (decorator as MethodDecorator)(target, propertyKey, descriptor!);\r\n } else {\r\n (decorator as ClassDecorator)(target);\r\n }\r\n }\r\n };\r\n}\r\n\r\nexport function Meta(key: string, value: any): MethodDecorator {\r\n return (target, propertyKey, _descriptor) => {\r\n const routeMeta = Reflect.getMetadata(ROUTES_META_KEY, target, String(propertyKey));\r\n if (routeMeta) {\r\n if (!routeMeta.meta) routeMeta.meta = {};\r\n routeMeta.meta[key] = value;\r\n Reflect.defineMetadata(ROUTES_META_KEY, routeMeta, target, String(propertyKey));\r\n }\r\n };\r\n}\r\n","/** Tags OpenAPI a nível de controller (todas as rotas do class) */\r\nexport const API_TAGS_KEY = \"azura:api-tags\";\r\n\r\n/** Tags por método (independente da ordem em relação a @Get/@Post) */\r\nexport const METHOD_TAGS_KEY = \"azura:swagger-method-tags\";\r\n\r\n/** Metadados OpenAPI por método (summary, responses, etc.) */\r\nexport const API_OPERATION_KEY = \"azura:swagger-operation\";\r\n","import type { RouteMeta } from \"../types/routes.type.js\";\r\nimport { API_OPERATION_KEY, API_TAGS_KEY, METHOD_TAGS_KEY } from \"./constants.js\";\r\n\r\n/**\r\n * Tags OpenAPI no controller (todas as rotas) ou num método específico.\r\n * Compatível com `experimentalDecorators` (assinatura legacy de 3 argumentos em métodos).\r\n */\r\nexport function ApiTags(...tags: string[]): ClassDecorator & MethodDecorator {\r\n return function (\r\n target: object,\r\n propertyKey?: string | symbol,\r\n _descriptor?: PropertyDescriptor,\r\n ): void {\r\n if (propertyKey === undefined) {\r\n Reflect.defineMetadata(API_TAGS_KEY, tags, target);\r\n } else {\r\n Reflect.defineMetadata(METHOD_TAGS_KEY, tags, target, String(propertyKey));\r\n }\r\n } as ClassDecorator & MethodDecorator;\r\n}\r\n\r\n/**\r\n * Metadados OpenAPI (summary, description, responses, parameters, etc.).\r\n */\r\nexport function ApiOperation(meta: Partial<RouteMeta>): MethodDecorator {\r\n return function (\r\n target: object,\r\n propertyKey: string | symbol,\r\n _descriptor: PropertyDescriptor,\r\n ): void {\r\n const key = String(propertyKey);\r\n const cur = (Reflect.getMetadata?.(API_OPERATION_KEY, target, key) ?? {}) as Partial<RouteMeta>;\r\n Reflect.defineMetadata(API_OPERATION_KEY, { ...cur, ...meta }, target, key);\r\n };\r\n}\r\n"]}
|
|
@@ -95,6 +95,29 @@ function Meta(key, value) {
|
|
|
95
95
|
};
|
|
96
96
|
}
|
|
97
97
|
|
|
98
|
-
|
|
98
|
+
// src/swagger/constants.ts
|
|
99
|
+
var API_TAGS_KEY = "azura:api-tags";
|
|
100
|
+
var METHOD_TAGS_KEY = "azura:swagger-method-tags";
|
|
101
|
+
var API_OPERATION_KEY = "azura:swagger-operation";
|
|
102
|
+
|
|
103
|
+
// src/swagger/decorators.ts
|
|
104
|
+
function ApiTags(...tags) {
|
|
105
|
+
return function(target, propertyKey, _descriptor) {
|
|
106
|
+
if (propertyKey === void 0) {
|
|
107
|
+
Reflect.defineMetadata(API_TAGS_KEY, tags, target);
|
|
108
|
+
} else {
|
|
109
|
+
Reflect.defineMetadata(METHOD_TAGS_KEY, tags, target, String(propertyKey));
|
|
110
|
+
}
|
|
111
|
+
};
|
|
112
|
+
}
|
|
113
|
+
function ApiOperation(meta) {
|
|
114
|
+
return function(target, propertyKey, _descriptor) {
|
|
115
|
+
const key = String(propertyKey);
|
|
116
|
+
const cur = Reflect.getMetadata?.(API_OPERATION_KEY, target, key) ?? {};
|
|
117
|
+
Reflect.defineMetadata(API_OPERATION_KEY, { ...cur, ...meta }, target, key);
|
|
118
|
+
};
|
|
119
|
+
}
|
|
120
|
+
|
|
121
|
+
export { ApiOperation, ApiTags, Body, Controller, Cookies, Delete, Get, Head, Headers, Ip, Meta, NextFunc, Options, Param, Patch, Post, Put, Query, Req, Res, Session, UseMiddleware, applyDecorators };
|
|
99
122
|
//# sourceMappingURL=index.mjs.map
|
|
100
123
|
//# sourceMappingURL=index.mjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/decorators/Route.ts"],"names":[],"mappings":";AAGA,IAAM,mBAAA,GAAsB,kBAAA;AAC5B,IAAM,eAAA,GAAkB,cAAA;AACxB,IAAM,eAAA,GAAkB,cAAA;AACxB,IAAM,oBAAA,GAAuB,mBAAA;AAE7B,SAAS,aAAA,GAAsB;AAC7B,EAAA,IAAI,OAAO,OAAA,KAAY,WAAA,IAAe,CAAC,QAAQ,WAAA,EAAa;AAC1D,IAAA,MAAM,KAAA,uBAAY,GAAA,EAA2B;AAC7C,IAAC,QAAgB,cAAA,GAAiB,CAAC,GAAA,EAAa,KAAA,EAAY,QAAa,IAAA,KAAkB;AACzF,MAAA,MAAM,IAAI,IAAA,GAAO,CAAA,EAAG,GAAG,CAAA,EAAA,EAAK,IAAI,CAAA,CAAA,GAAK,GAAA;AACrC,MAAA,IAAI,CAAC,KAAA,CAAM,GAAA,CAAI,CAAC,CAAA,QAAS,GAAA,CAAI,CAAA,kBAAG,IAAI,GAAA,EAAK,CAAA;AACzC,MAAA,KAAA,CAAM,GAAA,CAAI,CAAC,CAAA,CAAG,GAAA,CAAI,QAAQ,KAAK,CAAA;AAAA,IACjC,CAAA;AACA,IAAC,OAAA,CAAgB,WAAA,GAAc,CAAC,GAAA,EAAa,QAAa,IAAA,KAAkB;AAC1E,MAAA,MAAM,IAAI,IAAA,GAAO,CAAA,EAAG,GAAG,CAAA,EAAA,EAAK,IAAI,CAAA,CAAA,GAAK,GAAA;AACrC,MAAA,OAAO,KAAA,CAAM,GAAA,CAAI,CAAC,CAAA,EAAG,IAAI,MAAM,CAAA;AAAA,IACjC,CAAA;AAAA,EACF;AACF;AAEA,aAAA,EAAc;AAEP,SAAS,UAAA,CAAW,SAAiB,EAAA,EAAoB;AAC9D,EAAA,OAAO,CAAC,MAAA,KAAW;AACjB,IAAA,OAAA,CAAQ,cAAA,CAAe,mBAAA,EAAqB,MAAA,EAAQ,MAAM,CAAA;AAAA,EAC5D,CAAA;AACF;AAEA,SAAS,sBAAsB,MAAA,EAAoB;AACjD,EAAA,OAAO,CAAC,OAAe,EAAA,KAAwB;AAC7C,IAAA,OAAO,CAAC,MAAA,EAAQ,WAAA,EAAa,WAAA,KAAgB;AAC3C,MAAA,OAAA,CAAQ,cAAA;AAAA,QACN,eAAA;AAAA,QACA,EAAE,MAAA,EAAQ,IAAA,EAAM,WAAA,EAAa,OAAO,WAAW,CAAA,EAAG,WAAA,EAAa,EAAC,EAAG,MAAA,EAAQ,EAAC,EAAG,MAAM,MAAA,EAAU;AAAA,QAC/F,MAAA;AAAA,QACA,OAAO,WAAW;AAAA,OACpB;AAAA,IACF,CAAA;AAAA,EACF,CAAA;AACF;AAEO,IAAM,GAAA,GAAM,sBAAsB,KAAK;AACvC,IAAM,IAAA,GAAO,sBAAsB,MAAM;AACzC,IAAM,GAAA,GAAM,sBAAsB,KAAK;AACvC,IAAM,MAAA,GAAS,sBAAsB,QAAQ;AAC7C,IAAM,KAAA,GAAQ,sBAAsB,OAAO;AAC3C,IAAM,IAAA,GAAO,sBAAsB,MAAM;AACzC,IAAM,OAAA,GAAU,sBAAsB,SAAS;AAEtD,SAAS,qBAAqB,IAAA,EAA6B;AACzD,EAAA,OAAO,CAAC,IAAA,KAAsC;AAC5C,IAAA,OAAO,CAAC,MAAA,EAAQ,WAAA,EAAa,cAAA,KAAmB;AAC9C,MAAA,MAAM,GAAA,GAAM,OAAO,WAAW,CAAA;AAC9B,MAAA,MAAM,WAA4B,OAAA,CAAQ,WAAA,CAAY,iBAAiB,MAAA,EAAQ,GAAG,KAAK,EAAC;AACxF,MAAA,QAAA,CAAS,KAAK,EAAE,KAAA,EAAO,cAAA,EAAgB,IAAA,EAAM,MAAM,CAAA;AACnD,MAAA,OAAA,CAAQ,cAAA,CAAe,eAAA,EAAiB,QAAA,EAAU,MAAA,EAAQ,GAAG,CAAA;AAAA,IAC/D,CAAA;AAAA,EACF,CAAA;AACF;AAEO,IAAM,IAAA,GAAO,qBAAqB,MAAM;AACxC,IAAM,KAAA,GAAQ,qBAAqB,OAAO;AAC1C,IAAM,KAAA,GAAQ,qBAAqB,OAAO;AAC1C,IAAM,OAAA,GAAU,qBAAqB,QAAQ;AAC7C,IAAM,OAAA,GAAU,qBAAqB,QAAQ;AAC7C,IAAM,GAAA,GAAM,qBAAqB,KAAK;AACtC,IAAM,GAAA,GAAM,qBAAqB,KAAK;AACtC,IAAM,QAAA,GAAW,qBAAqB,MAAM;AAC5C,IAAM,EAAA,GAAK,qBAAqB,IAAI;AACpC,IAAM,OAAA,GAAU,qBAAqB,SAAS;AAE9C,SAAS,iBAAiB,WAAA,EAAoE;AACnG,EAAA,OAAO,CAAC,MAAA,EAAa,WAAA,EAA+B,WAAA,KAAqC;AACvF,IAAA,IAAI,WAAA,EAAa;AACf,MAAA,MAAM,QAAA,GACJ,QAAQ,WAAA,CAAY,oBAAA,EAAsB,QAAQ,MAAA,CAAO,WAAW,CAAC,CAAA,IAAK,EAAC;AAC7E,MAAA,OAAA,CAAQ,cAAA,CAAe,oBAAA,EAAsB,CAAC,GAAG,QAAA,EAAU,GAAG,WAAW,CAAA,EAAG,MAAA,EAAQ,MAAA,CAAO,WAAW,CAAC,CAAA;AAAA,IACzG,CAAA,MAAO;AACL,MAAA,MAAM,WACJ,OAAA,CAAQ,WAAA,CAAY,oBAAA,EAAsB,MAAM,KAAK,EAAC;AACxD,MAAA,OAAA,CAAQ,cAAA,CAAe,sBAAsB,CAAC,GAAG,UAAU,GAAG,WAAW,GAAG,MAAM,CAAA;AAAA,IACpF;AAAA,EACF,CAAA;AACF;AAEO,SAAS,mBAAmB,UAAA,EAAoF;AACrH,EAAA,OAAO,CAAC,MAAA,EAAa,WAAA,EAA+B,UAAA,KAAoC;AACtF,IAAA,KAAA,MAAW,aAAa,UAAA,EAAY;AAClC,MAAA,IAAI,gBAAgB,MAAA,EAAW;AAC7B,QAAC,SAAA,CAA8B,MAAA,EAAQ,WAAA,EAAa,UAAW,CAAA;AAAA,MACjE,CAAA,MAAO;AACL,QAAC,UAA6B,MAAM,CAAA;AAAA,MACtC;AAAA,IACF;AAAA,EACF,CAAA;AACF;AAEO,SAAS,IAAA,CAAK,KAAa,KAAA,EAA6B;AAC7D,EAAA,OAAO,CAAC,MAAA,EAAQ,WAAA,EAAa,WAAA,KAAgB;AAC3C,IAAA,MAAM,YAAY,OAAA,CAAQ,WAAA,CAAY,iBAAiB,MAAA,EAAQ,MAAA,CAAO,WAAW,CAAC,CAAA;AAClF,IAAA,IAAI,SAAA,EAAW;AACb,MAAA,IAAI,CAAC,SAAA,CAAU,IAAA,EAAM,SAAA,CAAU,OAAO,EAAC;AACvC,MAAA,SAAA,CAAU,IAAA,CAAK,GAAG,CAAA,GAAI,KAAA;AACtB,MAAA,OAAA,CAAQ,eAAe,eAAA,EAAiB,SAAA,EAAW,MAAA,EAAQ,MAAA,CAAO,WAAW,CAAC,CAAA;AAAA,IAChF;AAAA,EACF,CAAA;AACF","file":"index.mjs","sourcesContent":["import type { HttpMethod, MiddlewareHandler } from \"../types/common.type.js\";\r\nimport type { ParamMetadata, RouteMeta } from \"../types/routes.type.js\";\r\n\r\nconst CONTROLLER_META_KEY = \"azura:controller\";\r\nconst ROUTES_META_KEY = \"azura:routes\";\r\nconst PARAMS_META_KEY = \"azura:params\";\r\nconst MIDDLEWARES_META_KEY = \"azura:middlewares\";\r\n\r\nfunction ensureReflect(): void {\r\n if (typeof Reflect === \"undefined\" || !Reflect.getMetadata) {\r\n const store = new Map<string, Map<any, any>>();\r\n (Reflect as any).defineMetadata = (key: string, value: any, target: any, prop?: string) => {\r\n const k = prop ? `${key}::${prop}` : key;\r\n if (!store.has(k)) store.set(k, new Map());\r\n store.get(k)!.set(target, value);\r\n };\r\n (Reflect as any).getMetadata = (key: string, target: any, prop?: string) => {\r\n const k = prop ? `${key}::${prop}` : key;\r\n return store.get(k)?.get(target);\r\n };\r\n }\r\n}\r\n\r\nensureReflect();\r\n\r\nexport function Controller(prefix: string = \"\"): ClassDecorator {\r\n return (target) => {\r\n Reflect.defineMetadata(CONTROLLER_META_KEY, prefix, target);\r\n };\r\n}\r\n\r\nfunction createMethodDecorator(method: HttpMethod) {\r\n return (path: string = \"\"): MethodDecorator => {\r\n return (target, propertyKey, _descriptor) => {\r\n Reflect.defineMetadata(\r\n ROUTES_META_KEY,\r\n { method, path, propertyKey: String(propertyKey), middlewares: [], params: [], meta: undefined },\r\n target,\r\n String(propertyKey),\r\n );\r\n };\r\n };\r\n}\r\n\r\nexport const Get = createMethodDecorator(\"GET\");\r\nexport const Post = createMethodDecorator(\"POST\");\r\nexport const Put = createMethodDecorator(\"PUT\");\r\nexport const Delete = createMethodDecorator(\"DELETE\");\r\nexport const Patch = createMethodDecorator(\"PATCH\");\r\nexport const Head = createMethodDecorator(\"HEAD\");\r\nexport const Options = createMethodDecorator(\"OPTIONS\");\r\n\r\nfunction createParamDecorator(type: ParamMetadata[\"type\"]) {\r\n return (name?: string): ParameterDecorator => {\r\n return (target, propertyKey, parameterIndex) => {\r\n const key = String(propertyKey);\r\n const existing: ParamMetadata[] = Reflect.getMetadata(PARAMS_META_KEY, target, key) ?? [];\r\n existing.push({ index: parameterIndex, type, name });\r\n Reflect.defineMetadata(PARAMS_META_KEY, existing, target, key);\r\n };\r\n };\r\n}\r\n\r\nexport const Body = createParamDecorator(\"body\");\r\nexport const Query = createParamDecorator(\"query\");\r\nexport const Param = createParamDecorator(\"param\");\r\nexport const Headers = createParamDecorator(\"header\");\r\nexport const Cookies = createParamDecorator(\"cookie\");\r\nexport const Req = createParamDecorator(\"req\");\r\nexport const Res = createParamDecorator(\"res\");\r\nexport const NextFunc = createParamDecorator(\"next\");\r\nexport const Ip = createParamDecorator(\"ip\");\r\nexport const Session = createParamDecorator(\"session\");\r\n\r\nexport function UseMiddleware(...middlewares: MiddlewareHandler[]): MethodDecorator & ClassDecorator {\r\n return (target: any, propertyKey?: string | symbol, _descriptor?: PropertyDescriptor) => {\r\n if (propertyKey) {\r\n const existing: MiddlewareHandler[] =\r\n Reflect.getMetadata(MIDDLEWARES_META_KEY, target, String(propertyKey)) ?? [];\r\n Reflect.defineMetadata(MIDDLEWARES_META_KEY, [...existing, ...middlewares], target, String(propertyKey));\r\n } else {\r\n const existing: MiddlewareHandler[] =\r\n Reflect.getMetadata(MIDDLEWARES_META_KEY, target) ?? [];\r\n Reflect.defineMetadata(MIDDLEWARES_META_KEY, [...existing, ...middlewares], target);\r\n }\r\n };\r\n}\r\n\r\nexport function applyDecorators(...decorators: (MethodDecorator | ClassDecorator)[]): MethodDecorator & ClassDecorator {\r\n return (target: any, propertyKey?: string | symbol, descriptor?: PropertyDescriptor) => {\r\n for (const decorator of decorators) {\r\n if (propertyKey !== undefined) {\r\n (decorator as MethodDecorator)(target, propertyKey, descriptor!);\r\n } else {\r\n (decorator as ClassDecorator)(target);\r\n }\r\n }\r\n };\r\n}\r\n\r\nexport function Meta(key: string, value: any): MethodDecorator {\r\n return (target, propertyKey, _descriptor) => {\r\n const routeMeta = Reflect.getMetadata(ROUTES_META_KEY, target, String(propertyKey));\r\n if (routeMeta) {\r\n if (!routeMeta.meta) routeMeta.meta = {};\r\n routeMeta.meta[key] = value;\r\n Reflect.defineMetadata(ROUTES_META_KEY, routeMeta, target, String(propertyKey));\r\n }\r\n };\r\n}\r\n"]}
|
|
1
|
+
{"version":3,"sources":["../../src/decorators/Route.ts","../../src/swagger/constants.ts","../../src/swagger/decorators.ts"],"names":[],"mappings":"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","file":"index.mjs","sourcesContent":["import type { HttpMethod, MiddlewareHandler } from \"../types/common.type.js\";\r\nimport type { ParamMetadata, RouteMeta } from \"../types/routes.type.js\";\r\n\r\nconst CONTROLLER_META_KEY = \"azura:controller\";\r\nconst ROUTES_META_KEY = \"azura:routes\";\r\nconst PARAMS_META_KEY = \"azura:params\";\r\nconst MIDDLEWARES_META_KEY = \"azura:middlewares\";\r\n\r\nfunction ensureReflect(): void {\r\n if (typeof Reflect === \"undefined\" || !Reflect.getMetadata) {\r\n const store = new Map<string, Map<any, any>>();\r\n (Reflect as any).defineMetadata = (key: string, value: any, target: any, prop?: string) => {\r\n const k = prop ? `${key}::${prop}` : key;\r\n if (!store.has(k)) store.set(k, new Map());\r\n store.get(k)!.set(target, value);\r\n };\r\n (Reflect as any).getMetadata = (key: string, target: any, prop?: string) => {\r\n const k = prop ? `${key}::${prop}` : key;\r\n return store.get(k)?.get(target);\r\n };\r\n }\r\n}\r\n\r\nensureReflect();\r\n\r\nexport function Controller(prefix: string = \"\"): ClassDecorator {\r\n return (target) => {\r\n Reflect.defineMetadata(CONTROLLER_META_KEY, prefix, target);\r\n };\r\n}\r\n\r\nfunction createMethodDecorator(method: HttpMethod) {\r\n return (path: string = \"\"): MethodDecorator => {\r\n return (target, propertyKey, _descriptor) => {\r\n Reflect.defineMetadata(\r\n ROUTES_META_KEY,\r\n { method, path, propertyKey: String(propertyKey), middlewares: [], params: [], meta: undefined },\r\n target,\r\n String(propertyKey),\r\n );\r\n };\r\n };\r\n}\r\n\r\nexport const Get = createMethodDecorator(\"GET\");\r\nexport const Post = createMethodDecorator(\"POST\");\r\nexport const Put = createMethodDecorator(\"PUT\");\r\nexport const Delete = createMethodDecorator(\"DELETE\");\r\nexport const Patch = createMethodDecorator(\"PATCH\");\r\nexport const Head = createMethodDecorator(\"HEAD\");\r\nexport const Options = createMethodDecorator(\"OPTIONS\");\r\n\r\nfunction createParamDecorator(type: ParamMetadata[\"type\"]) {\r\n return (name?: string): ParameterDecorator => {\r\n return (target, propertyKey, parameterIndex) => {\r\n const key = String(propertyKey);\r\n const existing: ParamMetadata[] = Reflect.getMetadata(PARAMS_META_KEY, target, key) ?? [];\r\n existing.push({ index: parameterIndex, type, name });\r\n Reflect.defineMetadata(PARAMS_META_KEY, existing, target, key);\r\n };\r\n };\r\n}\r\n\r\nexport const Body = createParamDecorator(\"body\");\r\nexport const Query = createParamDecorator(\"query\");\r\nexport const Param = createParamDecorator(\"param\");\r\nexport const Headers = createParamDecorator(\"header\");\r\nexport const Cookies = createParamDecorator(\"cookie\");\r\nexport const Req = createParamDecorator(\"req\");\r\nexport const Res = createParamDecorator(\"res\");\r\nexport const NextFunc = createParamDecorator(\"next\");\r\nexport const Ip = createParamDecorator(\"ip\");\r\nexport const Session = createParamDecorator(\"session\");\r\n\r\nexport function UseMiddleware(...middlewares: MiddlewareHandler[]): MethodDecorator & ClassDecorator {\r\n return (target: any, propertyKey?: string | symbol, _descriptor?: PropertyDescriptor) => {\r\n if (propertyKey) {\r\n const existing: MiddlewareHandler[] =\r\n Reflect.getMetadata(MIDDLEWARES_META_KEY, target, String(propertyKey)) ?? [];\r\n Reflect.defineMetadata(MIDDLEWARES_META_KEY, [...existing, ...middlewares], target, String(propertyKey));\r\n } else {\r\n const existing: MiddlewareHandler[] =\r\n Reflect.getMetadata(MIDDLEWARES_META_KEY, target) ?? [];\r\n Reflect.defineMetadata(MIDDLEWARES_META_KEY, [...existing, ...middlewares], target);\r\n }\r\n };\r\n}\r\n\r\nexport function applyDecorators(...decorators: (MethodDecorator | ClassDecorator)[]): MethodDecorator & ClassDecorator {\r\n return (target: any, propertyKey?: string | symbol, descriptor?: PropertyDescriptor) => {\r\n for (const decorator of decorators) {\r\n if (propertyKey !== undefined) {\r\n (decorator as MethodDecorator)(target, propertyKey, descriptor!);\r\n } else {\r\n (decorator as ClassDecorator)(target);\r\n }\r\n }\r\n };\r\n}\r\n\r\nexport function Meta(key: string, value: any): MethodDecorator {\r\n return (target, propertyKey, _descriptor) => {\r\n const routeMeta = Reflect.getMetadata(ROUTES_META_KEY, target, String(propertyKey));\r\n if (routeMeta) {\r\n if (!routeMeta.meta) routeMeta.meta = {};\r\n routeMeta.meta[key] = value;\r\n Reflect.defineMetadata(ROUTES_META_KEY, routeMeta, target, String(propertyKey));\r\n }\r\n };\r\n}\r\n","/** Tags OpenAPI a nível de controller (todas as rotas do class) */\r\nexport const API_TAGS_KEY = \"azura:api-tags\";\r\n\r\n/** Tags por método (independente da ordem em relação a @Get/@Post) */\r\nexport const METHOD_TAGS_KEY = \"azura:swagger-method-tags\";\r\n\r\n/** Metadados OpenAPI por método (summary, responses, etc.) */\r\nexport const API_OPERATION_KEY = \"azura:swagger-operation\";\r\n","import type { RouteMeta } from \"../types/routes.type.js\";\r\nimport { API_OPERATION_KEY, API_TAGS_KEY, METHOD_TAGS_KEY } from \"./constants.js\";\r\n\r\n/**\r\n * Tags OpenAPI no controller (todas as rotas) ou num método específico.\r\n * Compatível com `experimentalDecorators` (assinatura legacy de 3 argumentos em métodos).\r\n */\r\nexport function ApiTags(...tags: string[]): ClassDecorator & MethodDecorator {\r\n return function (\r\n target: object,\r\n propertyKey?: string | symbol,\r\n _descriptor?: PropertyDescriptor,\r\n ): void {\r\n if (propertyKey === undefined) {\r\n Reflect.defineMetadata(API_TAGS_KEY, tags, target);\r\n } else {\r\n Reflect.defineMetadata(METHOD_TAGS_KEY, tags, target, String(propertyKey));\r\n }\r\n } as ClassDecorator & MethodDecorator;\r\n}\r\n\r\n/**\r\n * Metadados OpenAPI (summary, description, responses, parameters, etc.).\r\n */\r\nexport function ApiOperation(meta: Partial<RouteMeta>): MethodDecorator {\r\n return function (\r\n target: object,\r\n propertyKey: string | symbol,\r\n _descriptor: PropertyDescriptor,\r\n ): void {\r\n const key = String(propertyKey);\r\n const cur = (Reflect.getMetadata?.(API_OPERATION_KEY, target, key) ?? {}) as Partial<RouteMeta>;\r\n Reflect.defineMetadata(API_OPERATION_KEY, { ...cur, ...meta }, target, key);\r\n };\r\n}\r\n"]}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { d as RouteMeta } from './routes.type-DzHNkCag.js';
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* Tags OpenAPI no controller (todas as rotas) ou num método específico.
|
|
5
|
+
* Compatível com `experimentalDecorators` (assinatura legacy de 3 argumentos em métodos).
|
|
6
|
+
*/
|
|
7
|
+
declare function ApiTags(...tags: string[]): ClassDecorator & MethodDecorator;
|
|
8
|
+
/**
|
|
9
|
+
* Metadados OpenAPI (summary, description, responses, parameters, etc.).
|
|
10
|
+
*/
|
|
11
|
+
declare function ApiOperation(meta: Partial<RouteMeta>): MethodDecorator;
|
|
12
|
+
|
|
13
|
+
export { ApiOperation as A, ApiTags as a };
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { d as RouteMeta } from './routes.type-DZO5VBW2.mjs';
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* Tags OpenAPI no controller (todas as rotas) ou num método específico.
|
|
5
|
+
* Compatível com `experimentalDecorators` (assinatura legacy de 3 argumentos em métodos).
|
|
6
|
+
*/
|
|
7
|
+
declare function ApiTags(...tags: string[]): ClassDecorator & MethodDecorator;
|
|
8
|
+
/**
|
|
9
|
+
* Metadados OpenAPI (summary, description, responses, parameters, etc.).
|
|
10
|
+
*/
|
|
11
|
+
declare function ApiOperation(meta: Partial<RouteMeta>): MethodDecorator;
|
|
12
|
+
|
|
13
|
+
export { ApiOperation as A, ApiTags as a };
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
declare class HttpError extends Error {
|
|
2
|
+
readonly statusCode: number;
|
|
3
|
+
readonly details?: any;
|
|
4
|
+
readonly isOperational: boolean;
|
|
5
|
+
constructor(statusCode: number, message?: string, details?: any);
|
|
6
|
+
toJSON(): Record<string, any>;
|
|
7
|
+
static badRequest(message?: string, details?: any): HttpError;
|
|
8
|
+
static unauthorized(message?: string): HttpError;
|
|
9
|
+
static forbidden(message?: string): HttpError;
|
|
10
|
+
static notFound(message?: string): HttpError;
|
|
11
|
+
static methodNotAllowed(message?: string): HttpError;
|
|
12
|
+
static conflict(message?: string, details?: any): HttpError;
|
|
13
|
+
static unprocessableEntity(message?: string, details?: any): HttpError;
|
|
14
|
+
static tooManyRequests(message?: string): HttpError;
|
|
15
|
+
static internal(message?: string): HttpError;
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
export { HttpError };
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
declare class HttpError extends Error {
|
|
2
|
+
readonly statusCode: number;
|
|
3
|
+
readonly details?: any;
|
|
4
|
+
readonly isOperational: boolean;
|
|
5
|
+
constructor(statusCode: number, message?: string, details?: any);
|
|
6
|
+
toJSON(): Record<string, any>;
|
|
7
|
+
static badRequest(message?: string, details?: any): HttpError;
|
|
8
|
+
static unauthorized(message?: string): HttpError;
|
|
9
|
+
static forbidden(message?: string): HttpError;
|
|
10
|
+
static notFound(message?: string): HttpError;
|
|
11
|
+
static methodNotAllowed(message?: string): HttpError;
|
|
12
|
+
static conflict(message?: string, details?: any): HttpError;
|
|
13
|
+
static unprocessableEntity(message?: string, details?: any): HttpError;
|
|
14
|
+
static tooManyRequests(message?: string): HttpError;
|
|
15
|
+
static internal(message?: string): HttpError;
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
export { HttpError };
|
|
@@ -0,0 +1,81 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
// src/types/http/status.ts
|
|
4
|
+
var HttpStatusText = {
|
|
5
|
+
200: "OK",
|
|
6
|
+
201: "Created",
|
|
7
|
+
202: "Accepted",
|
|
8
|
+
204: "No Content",
|
|
9
|
+
301: "Moved Permanently",
|
|
10
|
+
302: "Found",
|
|
11
|
+
304: "Not Modified",
|
|
12
|
+
400: "Bad Request",
|
|
13
|
+
401: "Unauthorized",
|
|
14
|
+
403: "Forbidden",
|
|
15
|
+
404: "Not Found",
|
|
16
|
+
405: "Method Not Allowed",
|
|
17
|
+
409: "Conflict",
|
|
18
|
+
410: "Gone",
|
|
19
|
+
422: "Unprocessable Entity",
|
|
20
|
+
429: "Too Many Requests",
|
|
21
|
+
500: "Internal Server Error",
|
|
22
|
+
501: "Not Implemented",
|
|
23
|
+
502: "Bad Gateway",
|
|
24
|
+
503: "Service Unavailable",
|
|
25
|
+
504: "Gateway Timeout"
|
|
26
|
+
};
|
|
27
|
+
|
|
28
|
+
// src/utils/HttpError.ts
|
|
29
|
+
var HttpError = class _HttpError extends Error {
|
|
30
|
+
statusCode;
|
|
31
|
+
details;
|
|
32
|
+
isOperational;
|
|
33
|
+
constructor(statusCode, message, details) {
|
|
34
|
+
super(message ?? HttpStatusText[statusCode] ?? "Unknown Error");
|
|
35
|
+
this.statusCode = statusCode;
|
|
36
|
+
this.details = details;
|
|
37
|
+
this.isOperational = true;
|
|
38
|
+
Object.setPrototypeOf(this, _HttpError.prototype);
|
|
39
|
+
}
|
|
40
|
+
toJSON() {
|
|
41
|
+
const obj = {
|
|
42
|
+
error: {
|
|
43
|
+
statusCode: this.statusCode,
|
|
44
|
+
message: this.message
|
|
45
|
+
}
|
|
46
|
+
};
|
|
47
|
+
if (this.details) obj.error.details = this.details;
|
|
48
|
+
return obj;
|
|
49
|
+
}
|
|
50
|
+
static badRequest(message, details) {
|
|
51
|
+
return new _HttpError(400, message ?? "Bad Request", details);
|
|
52
|
+
}
|
|
53
|
+
static unauthorized(message) {
|
|
54
|
+
return new _HttpError(401, message ?? "Unauthorized");
|
|
55
|
+
}
|
|
56
|
+
static forbidden(message) {
|
|
57
|
+
return new _HttpError(403, message ?? "Forbidden");
|
|
58
|
+
}
|
|
59
|
+
static notFound(message) {
|
|
60
|
+
return new _HttpError(404, message ?? "Not Found");
|
|
61
|
+
}
|
|
62
|
+
static methodNotAllowed(message) {
|
|
63
|
+
return new _HttpError(405, message ?? "Method Not Allowed");
|
|
64
|
+
}
|
|
65
|
+
static conflict(message, details) {
|
|
66
|
+
return new _HttpError(409, message ?? "Conflict", details);
|
|
67
|
+
}
|
|
68
|
+
static unprocessableEntity(message, details) {
|
|
69
|
+
return new _HttpError(422, message ?? "Unprocessable Entity", details);
|
|
70
|
+
}
|
|
71
|
+
static tooManyRequests(message) {
|
|
72
|
+
return new _HttpError(429, message ?? "Too Many Requests");
|
|
73
|
+
}
|
|
74
|
+
static internal(message) {
|
|
75
|
+
return new _HttpError(500, message ?? "Internal Server Error");
|
|
76
|
+
}
|
|
77
|
+
};
|
|
78
|
+
|
|
79
|
+
exports.HttpError = HttpError;
|
|
80
|
+
//# sourceMappingURL=index.js.map
|
|
81
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../src/types/http/status.ts","../../src/utils/HttpError.ts"],"names":[],"mappings":"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","file":"index.js","sourcesContent":["export const HttpStatus = {\r\n OK: 200,\r\n CREATED: 201,\r\n ACCEPTED: 202,\r\n NO_CONTENT: 204,\r\n MOVED_PERMANENTLY: 301,\r\n FOUND: 302,\r\n NOT_MODIFIED: 304,\r\n BAD_REQUEST: 400,\r\n UNAUTHORIZED: 401,\r\n FORBIDDEN: 403,\r\n NOT_FOUND: 404,\r\n METHOD_NOT_ALLOWED: 405,\r\n CONFLICT: 409,\r\n GONE: 410,\r\n UNPROCESSABLE_ENTITY: 422,\r\n TOO_MANY_REQUESTS: 429,\r\n INTERNAL_SERVER_ERROR: 500,\r\n NOT_IMPLEMENTED: 501,\r\n BAD_GATEWAY: 502,\r\n SERVICE_UNAVAILABLE: 503,\r\n GATEWAY_TIMEOUT: 504,\r\n} as const;\r\n\r\nexport type HttpStatusCode = (typeof HttpStatus)[keyof typeof HttpStatus];\r\n\r\nexport const HttpStatusText: Record<number, string> = {\r\n 200: \"OK\",\r\n 201: \"Created\",\r\n 202: \"Accepted\",\r\n 204: \"No Content\",\r\n 301: \"Moved Permanently\",\r\n 302: \"Found\",\r\n 304: \"Not Modified\",\r\n 400: \"Bad Request\",\r\n 401: \"Unauthorized\",\r\n 403: \"Forbidden\",\r\n 404: \"Not Found\",\r\n 405: \"Method Not Allowed\",\r\n 409: \"Conflict\",\r\n 410: \"Gone\",\r\n 422: \"Unprocessable Entity\",\r\n 429: \"Too Many Requests\",\r\n 500: \"Internal Server Error\",\r\n 501: \"Not Implemented\",\r\n 502: \"Bad Gateway\",\r\n 503: \"Service Unavailable\",\r\n 504: \"Gateway Timeout\",\r\n};\r\n","import { HttpStatusText } from \"../types/http/status.js\";\r\n\r\nexport class HttpError extends Error {\r\n public readonly statusCode: number;\r\n public readonly details?: any;\r\n public readonly isOperational: boolean;\r\n\r\n constructor(statusCode: number, message?: string, details?: any) {\r\n super(message ?? HttpStatusText[statusCode] ?? \"Unknown Error\");\r\n this.statusCode = statusCode;\r\n this.details = details;\r\n this.isOperational = true;\r\n Object.setPrototypeOf(this, HttpError.prototype);\r\n }\r\n\r\n toJSON(): Record<string, any> {\r\n const obj: Record<string, any> = {\r\n error: {\r\n statusCode: this.statusCode,\r\n message: this.message,\r\n },\r\n };\r\n if (this.details) obj.error.details = this.details;\r\n return obj;\r\n }\r\n\r\n static badRequest(message?: string, details?: any): HttpError {\r\n return new HttpError(400, message ?? \"Bad Request\", details);\r\n }\r\n\r\n static unauthorized(message?: string): HttpError {\r\n return new HttpError(401, message ?? \"Unauthorized\");\r\n }\r\n\r\n static forbidden(message?: string): HttpError {\r\n return new HttpError(403, message ?? \"Forbidden\");\r\n }\r\n\r\n static notFound(message?: string): HttpError {\r\n return new HttpError(404, message ?? \"Not Found\");\r\n }\r\n\r\n static methodNotAllowed(message?: string): HttpError {\r\n return new HttpError(405, message ?? \"Method Not Allowed\");\r\n }\r\n\r\n static conflict(message?: string, details?: any): HttpError {\r\n return new HttpError(409, message ?? \"Conflict\", details);\r\n }\r\n\r\n static unprocessableEntity(message?: string, details?: any): HttpError {\r\n return new HttpError(422, message ?? \"Unprocessable Entity\", details);\r\n }\r\n\r\n static tooManyRequests(message?: string): HttpError {\r\n return new HttpError(429, message ?? \"Too Many Requests\");\r\n }\r\n\r\n static internal(message?: string): HttpError {\r\n return new HttpError(500, message ?? \"Internal Server Error\");\r\n }\r\n}\r\n"]}
|
|
@@ -0,0 +1,79 @@
|
|
|
1
|
+
// src/types/http/status.ts
|
|
2
|
+
var HttpStatusText = {
|
|
3
|
+
200: "OK",
|
|
4
|
+
201: "Created",
|
|
5
|
+
202: "Accepted",
|
|
6
|
+
204: "No Content",
|
|
7
|
+
301: "Moved Permanently",
|
|
8
|
+
302: "Found",
|
|
9
|
+
304: "Not Modified",
|
|
10
|
+
400: "Bad Request",
|
|
11
|
+
401: "Unauthorized",
|
|
12
|
+
403: "Forbidden",
|
|
13
|
+
404: "Not Found",
|
|
14
|
+
405: "Method Not Allowed",
|
|
15
|
+
409: "Conflict",
|
|
16
|
+
410: "Gone",
|
|
17
|
+
422: "Unprocessable Entity",
|
|
18
|
+
429: "Too Many Requests",
|
|
19
|
+
500: "Internal Server Error",
|
|
20
|
+
501: "Not Implemented",
|
|
21
|
+
502: "Bad Gateway",
|
|
22
|
+
503: "Service Unavailable",
|
|
23
|
+
504: "Gateway Timeout"
|
|
24
|
+
};
|
|
25
|
+
|
|
26
|
+
// src/utils/HttpError.ts
|
|
27
|
+
var HttpError = class _HttpError extends Error {
|
|
28
|
+
statusCode;
|
|
29
|
+
details;
|
|
30
|
+
isOperational;
|
|
31
|
+
constructor(statusCode, message, details) {
|
|
32
|
+
super(message ?? HttpStatusText[statusCode] ?? "Unknown Error");
|
|
33
|
+
this.statusCode = statusCode;
|
|
34
|
+
this.details = details;
|
|
35
|
+
this.isOperational = true;
|
|
36
|
+
Object.setPrototypeOf(this, _HttpError.prototype);
|
|
37
|
+
}
|
|
38
|
+
toJSON() {
|
|
39
|
+
const obj = {
|
|
40
|
+
error: {
|
|
41
|
+
statusCode: this.statusCode,
|
|
42
|
+
message: this.message
|
|
43
|
+
}
|
|
44
|
+
};
|
|
45
|
+
if (this.details) obj.error.details = this.details;
|
|
46
|
+
return obj;
|
|
47
|
+
}
|
|
48
|
+
static badRequest(message, details) {
|
|
49
|
+
return new _HttpError(400, message ?? "Bad Request", details);
|
|
50
|
+
}
|
|
51
|
+
static unauthorized(message) {
|
|
52
|
+
return new _HttpError(401, message ?? "Unauthorized");
|
|
53
|
+
}
|
|
54
|
+
static forbidden(message) {
|
|
55
|
+
return new _HttpError(403, message ?? "Forbidden");
|
|
56
|
+
}
|
|
57
|
+
static notFound(message) {
|
|
58
|
+
return new _HttpError(404, message ?? "Not Found");
|
|
59
|
+
}
|
|
60
|
+
static methodNotAllowed(message) {
|
|
61
|
+
return new _HttpError(405, message ?? "Method Not Allowed");
|
|
62
|
+
}
|
|
63
|
+
static conflict(message, details) {
|
|
64
|
+
return new _HttpError(409, message ?? "Conflict", details);
|
|
65
|
+
}
|
|
66
|
+
static unprocessableEntity(message, details) {
|
|
67
|
+
return new _HttpError(422, message ?? "Unprocessable Entity", details);
|
|
68
|
+
}
|
|
69
|
+
static tooManyRequests(message) {
|
|
70
|
+
return new _HttpError(429, message ?? "Too Many Requests");
|
|
71
|
+
}
|
|
72
|
+
static internal(message) {
|
|
73
|
+
return new _HttpError(500, message ?? "Internal Server Error");
|
|
74
|
+
}
|
|
75
|
+
};
|
|
76
|
+
|
|
77
|
+
export { HttpError };
|
|
78
|
+
//# sourceMappingURL=index.mjs.map
|
|
79
|
+
//# sourceMappingURL=index.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../src/types/http/status.ts","../../src/utils/HttpError.ts"],"names":[],"mappings":"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","file":"index.mjs","sourcesContent":["export const HttpStatus = {\r\n OK: 200,\r\n CREATED: 201,\r\n ACCEPTED: 202,\r\n NO_CONTENT: 204,\r\n MOVED_PERMANENTLY: 301,\r\n FOUND: 302,\r\n NOT_MODIFIED: 304,\r\n BAD_REQUEST: 400,\r\n UNAUTHORIZED: 401,\r\n FORBIDDEN: 403,\r\n NOT_FOUND: 404,\r\n METHOD_NOT_ALLOWED: 405,\r\n CONFLICT: 409,\r\n GONE: 410,\r\n UNPROCESSABLE_ENTITY: 422,\r\n TOO_MANY_REQUESTS: 429,\r\n INTERNAL_SERVER_ERROR: 500,\r\n NOT_IMPLEMENTED: 501,\r\n BAD_GATEWAY: 502,\r\n SERVICE_UNAVAILABLE: 503,\r\n GATEWAY_TIMEOUT: 504,\r\n} as const;\r\n\r\nexport type HttpStatusCode = (typeof HttpStatus)[keyof typeof HttpStatus];\r\n\r\nexport const HttpStatusText: Record<number, string> = {\r\n 200: \"OK\",\r\n 201: \"Created\",\r\n 202: \"Accepted\",\r\n 204: \"No Content\",\r\n 301: \"Moved Permanently\",\r\n 302: \"Found\",\r\n 304: \"Not Modified\",\r\n 400: \"Bad Request\",\r\n 401: \"Unauthorized\",\r\n 403: \"Forbidden\",\r\n 404: \"Not Found\",\r\n 405: \"Method Not Allowed\",\r\n 409: \"Conflict\",\r\n 410: \"Gone\",\r\n 422: \"Unprocessable Entity\",\r\n 429: \"Too Many Requests\",\r\n 500: \"Internal Server Error\",\r\n 501: \"Not Implemented\",\r\n 502: \"Bad Gateway\",\r\n 503: \"Service Unavailable\",\r\n 504: \"Gateway Timeout\",\r\n};\r\n","import { HttpStatusText } from \"../types/http/status.js\";\r\n\r\nexport class HttpError extends Error {\r\n public readonly statusCode: number;\r\n public readonly details?: any;\r\n public readonly isOperational: boolean;\r\n\r\n constructor(statusCode: number, message?: string, details?: any) {\r\n super(message ?? HttpStatusText[statusCode] ?? \"Unknown Error\");\r\n this.statusCode = statusCode;\r\n this.details = details;\r\n this.isOperational = true;\r\n Object.setPrototypeOf(this, HttpError.prototype);\r\n }\r\n\r\n toJSON(): Record<string, any> {\r\n const obj: Record<string, any> = {\r\n error: {\r\n statusCode: this.statusCode,\r\n message: this.message,\r\n },\r\n };\r\n if (this.details) obj.error.details = this.details;\r\n return obj;\r\n }\r\n\r\n static badRequest(message?: string, details?: any): HttpError {\r\n return new HttpError(400, message ?? \"Bad Request\", details);\r\n }\r\n\r\n static unauthorized(message?: string): HttpError {\r\n return new HttpError(401, message ?? \"Unauthorized\");\r\n }\r\n\r\n static forbidden(message?: string): HttpError {\r\n return new HttpError(403, message ?? \"Forbidden\");\r\n }\r\n\r\n static notFound(message?: string): HttpError {\r\n return new HttpError(404, message ?? \"Not Found\");\r\n }\r\n\r\n static methodNotAllowed(message?: string): HttpError {\r\n return new HttpError(405, message ?? \"Method Not Allowed\");\r\n }\r\n\r\n static conflict(message?: string, details?: any): HttpError {\r\n return new HttpError(409, message ?? \"Conflict\", details);\r\n }\r\n\r\n static unprocessableEntity(message?: string, details?: any): HttpError {\r\n return new HttpError(422, message ?? \"Unprocessable Entity\", details);\r\n }\r\n\r\n static tooManyRequests(message?: string): HttpError {\r\n return new HttpError(429, message ?? \"Too Many Requests\");\r\n }\r\n\r\n static internal(message?: string): HttpError {\r\n return new HttpError(500, message ?? \"Internal Server Error\");\r\n }\r\n}\r\n"]}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import { H as HttpMethod, R as RouteHandler, M as MiddlewareHandler, b as RouteMatch } from './common.type-BhGCNyEm.mjs';
|
|
2
|
+
import { d as RouteMeta } from './routes.type-DZO5VBW2.mjs';
|
|
3
|
+
|
|
4
|
+
/** Rota registada com metadados opcionais (OpenAPI / documentação). */
|
|
5
|
+
interface RouteDocument {
|
|
6
|
+
method: HttpMethod;
|
|
7
|
+
path: string;
|
|
8
|
+
meta?: RouteMeta;
|
|
9
|
+
}
|
|
10
|
+
declare class Router {
|
|
11
|
+
private root;
|
|
12
|
+
private cache;
|
|
13
|
+
private staticRoutes;
|
|
14
|
+
constructor(cacheSize?: number);
|
|
15
|
+
add(method: HttpMethod, path: string, handler: RouteHandler, middlewares?: MiddlewareHandler[], meta?: Record<string, any>): void;
|
|
16
|
+
find(method: HttpMethod, path: string): RouteMatch | null;
|
|
17
|
+
private matchNode;
|
|
18
|
+
private normalizePath;
|
|
19
|
+
getAllRoutes(): Array<{
|
|
20
|
+
method: HttpMethod;
|
|
21
|
+
path: string;
|
|
22
|
+
}>;
|
|
23
|
+
/**
|
|
24
|
+
* Todas as rotas com metadados (ex.: OpenAPI) associados ao handler.
|
|
25
|
+
*/
|
|
26
|
+
getRouteDocuments(): RouteDocument[];
|
|
27
|
+
private collectRoutesWithMeta;
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
export { Router as R, type RouteDocument as a };
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import { H as HttpMethod, R as RouteHandler, M as MiddlewareHandler, b as RouteMatch } from './common.type-BhGCNyEm.js';
|
|
2
|
+
import { d as RouteMeta } from './routes.type-DzHNkCag.js';
|
|
3
|
+
|
|
4
|
+
/** Rota registada com metadados opcionais (OpenAPI / documentação). */
|
|
5
|
+
interface RouteDocument {
|
|
6
|
+
method: HttpMethod;
|
|
7
|
+
path: string;
|
|
8
|
+
meta?: RouteMeta;
|
|
9
|
+
}
|
|
10
|
+
declare class Router {
|
|
11
|
+
private root;
|
|
12
|
+
private cache;
|
|
13
|
+
private staticRoutes;
|
|
14
|
+
constructor(cacheSize?: number);
|
|
15
|
+
add(method: HttpMethod, path: string, handler: RouteHandler, middlewares?: MiddlewareHandler[], meta?: Record<string, any>): void;
|
|
16
|
+
find(method: HttpMethod, path: string): RouteMatch | null;
|
|
17
|
+
private matchNode;
|
|
18
|
+
private normalizePath;
|
|
19
|
+
getAllRoutes(): Array<{
|
|
20
|
+
method: HttpMethod;
|
|
21
|
+
path: string;
|
|
22
|
+
}>;
|
|
23
|
+
/**
|
|
24
|
+
* Todas as rotas com metadados (ex.: OpenAPI) associados ao handler.
|
|
25
|
+
*/
|
|
26
|
+
getRouteDocuments(): RouteDocument[];
|
|
27
|
+
private collectRoutesWithMeta;
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
export { Router as R, type RouteDocument as a };
|
package/dist/index.d.mts
CHANGED
|
@@ -1,12 +1,23 @@
|
|
|
1
|
-
export { AzuraServer
|
|
1
|
+
export { AzuraServer } from './core/index.mjs';
|
|
2
|
+
export { R as Router } from './index-j6QGMhZU.mjs';
|
|
2
3
|
export { Body, Controller, Cookies, Delete, Get, Head, Headers, Ip, Meta, NextFunc, Options, Param, Patch, Post, Put, Query, Req, Res, Session, UseMiddleware, applyDecorators } from './decorators/index.mjs';
|
|
3
|
-
export {
|
|
4
|
-
export {
|
|
5
|
-
export {
|
|
4
|
+
export { A as ApiOperation, a as ApiTags } from './decorators-D5nY109r.mjs';
|
|
5
|
+
export { CORSPlugin } from './cors/index.mjs';
|
|
6
|
+
export { RateLimitPlugin } from './rate-limit/index.mjs';
|
|
7
|
+
export { CircuitBreakerPlugin, CompressionPlugin, ETagPlugin, HealthCheckPlugin, HelmetPlugin, JWTPayload, JWTPlugin, MultipartPlugin, ProxyPlugin, RequestIdPlugin, SSEClient, SSEManager, SSEPlugin, SessionPlugin, StaticPlugin, TimeoutPlugin, UploadedFile, signJWT, verifyJWT } from './plugins/index.mjs';
|
|
8
|
+
export { S as SwaggerPlugin } from './SwaggerPlugin-wr9S4SRG.mjs';
|
|
9
|
+
export { Logger } from './logger/index.mjs';
|
|
10
|
+
export { HttpError } from './http-error/index.mjs';
|
|
11
|
+
export { r as resolveIp } from './IpResolver-BVgnGnpf.mjs';
|
|
12
|
+
export { parseBody, parseCookies, parseQueryString, parseUrl } from './utils/index.mjs';
|
|
13
|
+
export { clearCookieHeader, serializeCookie } from './cookies/index.mjs';
|
|
14
|
+
export { DTOValidator, ExternalSchema, Schema, SchemaValidationResult, SchemaValidator, ValidationError, ValidationResult } from './validators/index.mjs';
|
|
6
15
|
export { ConfigModule } from './config/index.mjs';
|
|
7
16
|
export { LoggingMiddleware } from './middleware/index.mjs';
|
|
8
17
|
export { A as AzuraRequest, a as AzuraResponse, C as CookieOptions, E as ErrorHandler, H as HttpMethod, M as MiddlewareHandler, N as NextFunction, R as RouteHandler, b as RouteMatch } from './common.type-BhGCNyEm.mjs';
|
|
9
|
-
export { ControllerMetadata,
|
|
18
|
+
export { C as ControllerMetadata, P as ParamMetadata, a as ParamType, b as ParameterMeta, R as ResponseMeta, c as RouteDefinition, d as RouteMeta, e as RouteMetadata } from './routes.type-DZO5VBW2.mjs';
|
|
10
19
|
export { A as AzuraConfig, L as LoggingConfig, P as PluginsConfig, S as ServerConfig } from './config.type-4K-xcMSy.mjs';
|
|
20
|
+
export { HttpStatus, HttpStatusCode, HttpStatusText } from './types/index.mjs';
|
|
11
21
|
export { C as CORSOptions, a as CircuitBreakerOptions, b as CircuitBreakerState, c as CompressionOptions, E as ETagOptions, H as HealthCheckOptions, d as HelmetOptions, J as JWTOptions, M as MultipartOptions, P as PluginContext, e as PluginDefinition, f as PluginFactory, g as PluginHandler, h as ProxyOptions, R as RateLimitOptions, i as RequestIdOptions, S as SSEOptions, j as SessionOptions, k as StaticOptions, T as TimeoutOptions } from './plugin.type-BNooWhKa.mjs';
|
|
22
|
+
export { B as BuildOpenApiOptions, O as OpenApiInfo, a as OpenApiServer, S as SwaggerPluginOptions } from './swagger.type-Bfn5nGR8.mjs';
|
|
12
23
|
import 'node:http';
|
package/dist/index.d.ts
CHANGED
|
@@ -1,12 +1,23 @@
|
|
|
1
|
-
export { AzuraServer
|
|
1
|
+
export { AzuraServer } from './core/index.js';
|
|
2
|
+
export { R as Router } from './index-tpPZS_UK.js';
|
|
2
3
|
export { Body, Controller, Cookies, Delete, Get, Head, Headers, Ip, Meta, NextFunc, Options, Param, Patch, Post, Put, Query, Req, Res, Session, UseMiddleware, applyDecorators } from './decorators/index.js';
|
|
3
|
-
export {
|
|
4
|
-
export {
|
|
5
|
-
export {
|
|
4
|
+
export { A as ApiOperation, a as ApiTags } from './decorators-B6l3CbxC.js';
|
|
5
|
+
export { CORSPlugin } from './cors/index.js';
|
|
6
|
+
export { RateLimitPlugin } from './rate-limit/index.js';
|
|
7
|
+
export { CircuitBreakerPlugin, CompressionPlugin, ETagPlugin, HealthCheckPlugin, HelmetPlugin, JWTPayload, JWTPlugin, MultipartPlugin, ProxyPlugin, RequestIdPlugin, SSEClient, SSEManager, SSEPlugin, SessionPlugin, StaticPlugin, TimeoutPlugin, UploadedFile, signJWT, verifyJWT } from './plugins/index.js';
|
|
8
|
+
export { S as SwaggerPlugin } from './SwaggerPlugin-C0UZTjaZ.js';
|
|
9
|
+
export { Logger } from './logger/index.js';
|
|
10
|
+
export { HttpError } from './http-error/index.js';
|
|
11
|
+
export { r as resolveIp } from './IpResolver-BVgnGnpf.js';
|
|
12
|
+
export { parseBody, parseCookies, parseQueryString, parseUrl } from './utils/index.js';
|
|
13
|
+
export { clearCookieHeader, serializeCookie } from './cookies/index.js';
|
|
14
|
+
export { DTOValidator, ExternalSchema, Schema, SchemaValidationResult, SchemaValidator, ValidationError, ValidationResult } from './validators/index.js';
|
|
6
15
|
export { ConfigModule } from './config/index.js';
|
|
7
16
|
export { LoggingMiddleware } from './middleware/index.js';
|
|
8
17
|
export { A as AzuraRequest, a as AzuraResponse, C as CookieOptions, E as ErrorHandler, H as HttpMethod, M as MiddlewareHandler, N as NextFunction, R as RouteHandler, b as RouteMatch } from './common.type-BhGCNyEm.js';
|
|
9
|
-
export { ControllerMetadata,
|
|
18
|
+
export { C as ControllerMetadata, P as ParamMetadata, a as ParamType, b as ParameterMeta, R as ResponseMeta, c as RouteDefinition, d as RouteMeta, e as RouteMetadata } from './routes.type-DzHNkCag.js';
|
|
10
19
|
export { A as AzuraConfig, L as LoggingConfig, P as PluginsConfig, S as ServerConfig } from './config.type-s3ImgfM_.js';
|
|
20
|
+
export { HttpStatus, HttpStatusCode, HttpStatusText } from './types/index.js';
|
|
11
21
|
export { C as CORSOptions, a as CircuitBreakerOptions, b as CircuitBreakerState, c as CompressionOptions, E as ETagOptions, H as HealthCheckOptions, d as HelmetOptions, J as JWTOptions, M as MultipartOptions, P as PluginContext, e as PluginDefinition, f as PluginFactory, g as PluginHandler, h as ProxyOptions, R as RateLimitOptions, i as RequestIdOptions, S as SSEOptions, j as SessionOptions, k as StaticOptions, T as TimeoutOptions } from './plugin.type-D4HHceYz.js';
|
|
22
|
+
export { B as BuildOpenApiOptions, O as OpenApiInfo, a as OpenApiServer, S as SwaggerPluginOptions } from './swagger.type-CfDbFCZC.js';
|
|
12
23
|
import 'node:http';
|