@andrewcaires/express 1.0.4 → 1.0.6
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/index.cjs.js +2 -2
- package/dist/index.d.ts +50 -37
- package/dist/index.esm.js +2 -2
- package/package.json +13 -14
package/dist/index.cjs.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
/*!
|
|
2
|
-
* @andrewcaires/express v1.0.
|
|
2
|
+
* @andrewcaires/express v1.0.6
|
|
3
3
|
* Decorators for express
|
|
4
4
|
* (c) 2023 Andrew Caires
|
|
5
5
|
* @license: MIT
|
|
6
6
|
*/
|
|
7
|
-
"use strict";
|
|
7
|
+
"use strict";var e=require("@andrewcaires/utils.js"),t=require("cors"),s=require("express"),r=require("fs"),o=require("http"),n=require("https"),i=require("net"),a=require("path");function p(e){var t=Object.create(null);return e&&Object.keys(e).forEach((function(s){if("default"!==s){var r=Object.getOwnPropertyDescriptor(e,s);Object.defineProperty(t,s,r.get?r:{enumerable:!0,get:function(){return e[s]}})}})),t.default=e,Object.freeze(t)}var E=p(o),_=p(n);function h(e,t,s,r){return new(s||(s=Promise))((function(o,n){function i(e){try{p(r.next(e))}catch(e){n(e)}}function a(e){try{p(r.throw(e))}catch(e){n(e)}}function p(e){var t;e.done?o(e.value):(t=e.value,t instanceof s?t:new s((function(e){e(t)}))).then(i,a)}p((r=r.apply(e,t||[])).next())}))}"function"==typeof SuppressedError&&SuppressedError;const u=e.cache(),d=(t,s,r)=>{e.isObject(s)&&(s=s.constructor);const o=u(s);return o[t]||(o[t]=r),o[t]};class T{}T.CONTINUE=100,T.SWITCHING_PROTOCOLS=101,T.PROCESSING=102,T.OK=200,T.CREATED=201,T.ACCEPTED=202,T.NON_AUTHORITATIVE_INFORMATION=203,T.NO_CONTENT=204,T.RESET_CONTENT=205,T.PARTIAL_CONTENT=206,T.MULTI_STATUS=207,T.ALREADY_REPORTED=208,T.IM_USED=226,T.MULTIPLE_CHOICES=300,T.MOVED_PERMANENTLY=301,T.FOUND=302,T.SEE_OTHER=303,T.NOT_MODIFIED=304,T.USE_PROXY=305,T.TEMPORARY_REDIRECT=307,T.PERMANENT_REDIRECT=308,T.BAD_REQUEST=400,T.UNAUTHORIZED=401,T.PAYMENT_REQUIRED=402,T.FORBIDDEN=403,T.NOT_FOUND=404,T.METHOD_NOT_ALLOWED=405,T.NOT_ACCEPTABLE=406,T.PROXY_AUTHENTICATION_REQUIRED=407,T.REQUEST_TIMEOUT=408,T.CONFLICT=409,T.GONE=410,T.LENGTH_REQUIRED=411,T.PRECONDITION_FAILED=412,T.PAYLOAD_TOO_LARGE=413,T.REQUEST_URI_TOO_LONG=414,T.UNSUPPORTED_MEDIA_TYPE=415,T.REQUESTED_RANGE_NOT_SATISFIABLE=416,T.EXPECTATION_FAILED=417,T.IM_A_TEAPOT=418,T.MISDIRECTED_REQUEST=421,T.UNPROCESSABLE_ENTITY=422,T.LOCKED=423,T.FAILED_DEPENDENCY=424,T.UPGRADE_REQUIRED=426,T.PRECONDITION_REQUIRED=428,T.TOO_MANY_REQUESTS=429,T.REQUEST_HEADER_FIELDS_TOO_LARGE=431,T.CONNECTION_CLOSED_WITHOUT_RESPONSE=444,T.UNAVAILABLE_FOR_LEGAL_REASONS=451,T.CLIENT_CLOSED_REQUEST=499,T.INTERNAL_SERVER_ERROR=500,T.NOT_IMPLEMENTED=501,T.BAD_GATEWAY=502,T.SERVICE_UNAVAILABLE=503,T.GATEWAY_TIMEOUT=504,T.HTTP_VERSION_NOT_SUPPORTED=505,T.VARIANT_ALSO_NEGOCIATES=506,T.INSUFFICIENT_STORAGE=507,T.LOOP_DETECTED=508,T.NOT_EXTENDED=510,T.NETWORK_AUTHENTICATION_REQUIRED=511,T.NETWORK_CONNECTION_TIMEOUT_ERROR=599;class c{static success(e,t){return e.status(T.OK).json({message:t})}static data(e,t){return e.status(T.OK).json(Object.assign({},t))}static error(e,t){return e.status(T.INTERNAL_SERVER_ERROR).json({message:t})}static list(e,t){return e.status(T.OK).json([...t])}static notfound(e,t){return e.status(T.NOT_FOUND).json({message:t})}static validation(e,t){return e.status(T.BAD_REQUEST).json({message:t})}static unauthorized(e,t){return e.status(T.UNAUTHORIZED).json({message:t})}}var O,R;exports.MetadataKeys=void 0,(O=exports.MetadataKeys||(exports.MetadataKeys={})).EXTENDS="__extends__",O.MIDDLEWARE="__middleware__",O.PARAMETERS="__parameters__",O.PATH="__path__",O.ROUTERS="__routers__",exports.Methods=void 0,(R=exports.Methods||(exports.Methods={})).ALL="all",R.GET="get",R.POST="post",R.PUT="put",R.HEAD="head",R.DELETE="delete",R.OPTIONS="options",R.PATCH="patch";class N extends e.EventEmitter{get instance(){return this._app}get router(){return this._router}get server(){return this._server}constructor(o,n){var i;super(),this._app=s(),this._options={},this._default={cross:!1,hybrid:!1,path:"/",port:3e3},this._router=s.Router(),this._controllers=s.Router(),this._options=Object.assign(Object.assign({},this._default),n),this._app.use(s.json()),this._app.disable("x-powered-by"),this._app.use(s.urlencoded({extended:!0})),this._options.cross&&this._app.use(t()),this._app.use(this._router);const p=(null===(i=this._options.path)||void 0===i?void 0:i.length)?this._options.path:"/";if(this._app.use(p,this._controllers),this._app.all(p+"/*",((e,t)=>c.notfound(t,"Invalid API"))),this._options.public){const e=a.resolve(this._options.public);r.existsSync(e)&&this._app.use(s.static(e)),this._app.get("*",((t,s)=>{if(!r.existsSync(e))return c.notfound(s,'File "index.html" not found');s.sendFile(e+"/index.html")}))}o.forEach((t=>{const r=s.Router(),o=this._middlewares(t),n=this._parameters(t);this._extends(t).forEach((e=>{o.push(...this._middlewares(e)),n.push(...this._parameters(e))})),this._routers(t).forEach((s=>{const i=s.propertyKey.toString();if(e.isFunction(t[i])){if(!e.isFunction(r[s.method]))return this.error(new Error('Method "'+s.method+'" Not Found.'),"express");const a=this._handles(t,i,o,n);return r[s.method](s.path,...a,((e,s,r)=>t[i](...this._args(e,s,r,this._indexes(i,n)))))}return this.error(new Error('Router "'+t.name+"."+i+'" Not Found.'),"express")})),this._extends(t).forEach((s=>{this._routers(s).forEach((s=>{const i=s.propertyKey.toString();if(e.isFunction(t[i])){if(!e.isFunction(r[s.method]))return this.error(new Error('Method "'+s.method+'" Not Found.'),"express");const a=this._handles(t,i,o,n);return r[s.method](s.path,...a,((e,s,r)=>t[i](...this._args(e,s,r,this._indexes(i,n)))))}return this.error(new Error('Router "'+t.constructor.name+"."+i+'" Not Found.'),"express")}))})),this._controllers.use(this._path(t),r)}))}error(t,s){e.isUndefined(s)?console.error(t):console.error(s+":",t)}log(t,s){e.isUndefined(s)?console.error(t):console.error(s+":",t)}_args(e,t,s,r,o){const n=[],i={req:e,res:t,next:s,key:"",app:this,argument:o};return r.forEach((e=>{n[e.parameterIndex]=e.callback(Object.assign(Object.assign({},i),{key:e.key}))})),n}_handles(t,s,r,o){return r.filter((e=>e.propertyKey==s)).map((s=>{if(e.isFunction(t[s.method])){const e=this._indexes(s.method,o);return(r,o,n)=>t[s.method](...this._args(r,o,n,e,s.argument))}this.error(new Error('Middleware "'+s.method+'" Not Found.'),"express")})).filter(e.isFunction)}_extends(e){return d(exports.MetadataKeys.EXTENDS,e,[]).reduce(((e,t)=>(e.push(t,...this._extends(t)),e)),[]).filter(((e,t,s)=>s.indexOf(e)===t))}_indexes(e,t){return t.filter((t=>t.propertyKey==e))}_middlewares(e){return[...d(exports.MetadataKeys.MIDDLEWARE,e,[])].reverse()}_parameters(e){return d(exports.MetadataKeys.PARAMETERS,e,[])}_path(e){return d(exports.MetadataKeys.PATH,e,"/")}_routers(e){return d(exports.MetadataKeys.ROUTERS,e,[])}listen(){return h(this,void 0,void 0,(function*(){if(this._options.cert&&this._options.key||(this._server=E.createServer(this._app),this._server.listen(this._options.port,(()=>this.log("Server started on port "+this._options.port+".","express")))),!this._server){const e=E.createServer(((e,t)=>{const s=80==this._options.port?":80":"";t.writeHead(301,{Location:"https://"+e.headers.host+s+e.url}),t.end()})),t=_.createServer({key:this._options.key,cert:this._options.cert},this._app);if(this._options.hybrid){new i.Server((s=>{s.once("data",(r=>{s.pause(),s.unshift(r),(22===r[0]?t:e).emit("connection",s),process.nextTick((()=>s.resume()))}))})).listen(this._options.port,(()=>this.log("Server started on port "+this._options.port+".","express"))),this._server=t}this._server||(443==this._options.port&&e.listen(80,(()=>this.log("Server started on port 80.","express"))),t.listen(this._options.port,(()=>this.log("Server started on port "+this._options.port+".","express"))),this._server=t)}}))}}const x=e=>t=>(s,r)=>{d(exports.MetadataKeys.ROUTERS,s,[]).push({method:e,path:(null==t?void 0:t.length)?t:"/",propertyKey:r})},A=x(exports.Methods.ALL),l=x(exports.Methods.GET),I=x(exports.Methods.POST),S=x(exports.Methods.PUT),D=x(exports.Methods.DELETE),y=x(exports.Methods.PATCH),M=x(exports.Methods.HEAD),P=x(exports.Methods.OPTIONS),U=e=>t=>(s,r,o)=>{d(exports.MetadataKeys.PARAMETERS,s,[]).push({callback:e,key:t,propertyKey:r,parameterIndex:o})},f=(t,s)=>e.isUndefined(s)?t:t[s],L=U((({app:e})=>e)),m=U((({argument:e})=>e)),C=U((({req:e,key:t})=>f(e.body,t))),v=U((({req:e,key:t})=>f(e.cookies,t))),g=U((({req:e,key:t})=>f(e.headers,t))),F=U((({next:e})=>e)),K=U((({req:e,key:t})=>f(e.params,t))),H=U((({req:e,key:t})=>f(e.query,t))),b=U((({req:e,key:t})=>f(e,t))),j=b,k=U((({res:e})=>e)),w=k;exports.All=A,exports.App=L,exports.Application=N,exports.Argument=m,exports.Body=C,exports.Controller=e=>t=>{d(exports.MetadataKeys.PATH,t,(null==e?void 0:e.length)?e:"/")},exports.Cookies=v,exports.Delete=D,exports.Extends=e=>t=>{d(exports.MetadataKeys.EXTENDS,t,[]).push(e)},exports.Get=l,exports.Head=M,exports.Headers=g,exports.Metadata=d,exports.Middleware=(e,t)=>(s,r)=>{d(exports.MetadataKeys.MIDDLEWARE,s,[]).push({method:e,argument:t,propertyKey:r})},exports.Next=F,exports.Options=P,exports.Params=K,exports.Patch=y,exports.Post=I,exports.Put=S,exports.Query=H,exports.Req=j,exports.Request=b,exports.Res=w,exports.Response=k,exports.Responses=c,exports.Status=T,exports.methodFactory=x,exports.parameterFactory=U;
|
package/dist/index.d.ts
CHANGED
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
/*!
|
|
2
|
-
* @andrewcaires/express v1.0.
|
|
2
|
+
* @andrewcaires/express v1.0.6
|
|
3
3
|
* Decorators for express
|
|
4
4
|
* (c) 2023 Andrew Caires
|
|
5
5
|
* @license: MIT
|
|
6
6
|
*/
|
|
7
|
-
import {
|
|
7
|
+
import { TypeCallbackFunction, EventEmitter } from '@andrewcaires/utils.js';
|
|
8
8
|
import { Request as Request$1, Response as Response$1, NextFunction, Express, Router } from 'express';
|
|
9
9
|
import * as http from 'http';
|
|
10
10
|
import * as https from 'https';
|
|
@@ -17,6 +17,13 @@ interface IArgs {
|
|
|
17
17
|
app: Application;
|
|
18
18
|
argument: any;
|
|
19
19
|
}
|
|
20
|
+
|
|
21
|
+
interface IMiddlewares {
|
|
22
|
+
method: string;
|
|
23
|
+
argument: any;
|
|
24
|
+
propertyKey: string | symbol;
|
|
25
|
+
}
|
|
26
|
+
|
|
20
27
|
interface IOptions {
|
|
21
28
|
cert?: Buffer;
|
|
22
29
|
cross?: boolean;
|
|
@@ -26,21 +33,55 @@ interface IOptions {
|
|
|
26
33
|
port?: number;
|
|
27
34
|
public?: string;
|
|
28
35
|
}
|
|
36
|
+
|
|
37
|
+
interface IParameter {
|
|
38
|
+
callback: TypeCallbackFunction;
|
|
39
|
+
key?: string;
|
|
40
|
+
propertyKey: string | symbol | undefined;
|
|
41
|
+
parameterIndex: number;
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
declare enum Methods {
|
|
45
|
+
ALL = "all",
|
|
46
|
+
GET = "get",
|
|
47
|
+
POST = "post",
|
|
48
|
+
PUT = "put",
|
|
49
|
+
HEAD = "head",
|
|
50
|
+
DELETE = "delete",
|
|
51
|
+
OPTIONS = "options",
|
|
52
|
+
PATCH = "patch"
|
|
53
|
+
}
|
|
54
|
+
|
|
55
|
+
interface IRouter {
|
|
56
|
+
method: Methods;
|
|
57
|
+
path: string;
|
|
58
|
+
propertyKey: string | symbol;
|
|
59
|
+
}
|
|
60
|
+
|
|
61
|
+
declare enum MetadataKeys {
|
|
62
|
+
EXTENDS = "__extends__",
|
|
63
|
+
MIDDLEWARE = "__middleware__",
|
|
64
|
+
PARAMETERS = "__parameters__",
|
|
65
|
+
PATH = "__path__",
|
|
66
|
+
ROUTERS = "__routers__"
|
|
67
|
+
}
|
|
68
|
+
|
|
29
69
|
declare class Application extends EventEmitter {
|
|
30
70
|
private readonly _app;
|
|
31
71
|
private _server?;
|
|
32
72
|
private _options;
|
|
33
73
|
private _default;
|
|
34
74
|
private readonly _router;
|
|
35
|
-
private readonly
|
|
75
|
+
private readonly _controllers;
|
|
36
76
|
get instance(): Express;
|
|
37
77
|
get router(): Router;
|
|
38
78
|
get server(): http.Server | https.Server | undefined;
|
|
39
|
-
constructor(
|
|
79
|
+
constructor(controllers: Array<object>, options?: IOptions);
|
|
40
80
|
error(error: any, source?: string): void;
|
|
41
81
|
log(message: string, source?: string): void;
|
|
42
82
|
private _args;
|
|
43
83
|
private _handles;
|
|
84
|
+
private _extends;
|
|
44
85
|
private _indexes;
|
|
45
86
|
private _middlewares;
|
|
46
87
|
private _parameters;
|
|
@@ -51,29 +92,10 @@ declare class Application extends EventEmitter {
|
|
|
51
92
|
|
|
52
93
|
declare const Controller: (path?: string) => ClassDecorator;
|
|
53
94
|
|
|
54
|
-
declare
|
|
55
|
-
MIDDLEWARE = "@express_middleware",
|
|
56
|
-
PATH = "@express_path",
|
|
57
|
-
ROUTERS = "@express_routers",
|
|
58
|
-
PARAMETERS = "@express_parameters"
|
|
59
|
-
}
|
|
60
|
-
declare const Metadata: (metadataKey: MetadataKeys, target: any, test: any) => any;
|
|
95
|
+
declare const Extends: (type: any) => ClassDecorator;
|
|
61
96
|
|
|
62
|
-
interface IRouter {
|
|
63
|
-
path: string;
|
|
64
|
-
method: Methods;
|
|
65
|
-
name: string | symbol;
|
|
66
|
-
}
|
|
67
|
-
declare enum Methods {
|
|
68
|
-
GET = "get",
|
|
69
|
-
POST = "post",
|
|
70
|
-
PUT = "put",
|
|
71
|
-
HEAD = "head",
|
|
72
|
-
DELETE = "delete",
|
|
73
|
-
OPTIONS = "options",
|
|
74
|
-
PATCH = "patch"
|
|
75
|
-
}
|
|
76
97
|
declare const methodFactory: (method: Methods) => (path?: string) => MethodDecorator;
|
|
98
|
+
declare const All: (path?: string) => MethodDecorator;
|
|
77
99
|
declare const Get: (path?: string) => MethodDecorator;
|
|
78
100
|
declare const Post: (path?: string) => MethodDecorator;
|
|
79
101
|
declare const Put: (path?: string) => MethodDecorator;
|
|
@@ -82,19 +104,8 @@ declare const Patch: (path?: string) => MethodDecorator;
|
|
|
82
104
|
declare const Head: (path?: string) => MethodDecorator;
|
|
83
105
|
declare const Options: (path?: string) => MethodDecorator;
|
|
84
106
|
|
|
85
|
-
interface IMiddlewares {
|
|
86
|
-
name: string | symbol;
|
|
87
|
-
method: string;
|
|
88
|
-
argument: any;
|
|
89
|
-
}
|
|
90
107
|
declare const Middleware: (method: string, argument?: any) => MethodDecorator;
|
|
91
108
|
|
|
92
|
-
interface IParameter {
|
|
93
|
-
callback: TypeCallbackFunction;
|
|
94
|
-
index: number;
|
|
95
|
-
key: string;
|
|
96
|
-
name: string | symbol;
|
|
97
|
-
}
|
|
98
109
|
declare const parameterFactory: (callback: TypeCallbackFunction) => (key?: string) => ParameterDecorator;
|
|
99
110
|
declare const App: (key?: string) => ParameterDecorator;
|
|
100
111
|
declare const Argument: (key?: string) => ParameterDecorator;
|
|
@@ -109,6 +120,8 @@ declare const Req: (key?: string) => ParameterDecorator;
|
|
|
109
120
|
declare const Response: (key?: string) => ParameterDecorator;
|
|
110
121
|
declare const Res: (key?: string) => ParameterDecorator;
|
|
111
122
|
|
|
123
|
+
declare const Metadata: <T = any>(metadataKey: MetadataKeys, target: any, metadataValue: T) => T;
|
|
124
|
+
|
|
112
125
|
type ResponseJson = Response$1<any, Record<string, any>>;
|
|
113
126
|
declare class Responses {
|
|
114
127
|
static success(res: Response$1, message: string): ResponseJson;
|
|
@@ -186,4 +199,4 @@ declare class Status {
|
|
|
186
199
|
static readonly NETWORK_CONNECTION_TIMEOUT_ERROR = 599;
|
|
187
200
|
}
|
|
188
201
|
|
|
189
|
-
export { App, Application, Argument, Body, Controller, Cookies, Delete, Get, Head, Headers, IArgs, IMiddlewares, IOptions, IParameter, IRouter, Metadata, MetadataKeys, Methods, Middleware, Next, Options, Params, Patch, Post, Put, Query, Req, Request, Res, Response, ResponseJson, Responses, Status, methodFactory, parameterFactory };
|
|
202
|
+
export { All, App, Application, Argument, Body, Controller, Cookies, Delete, Extends, Get, Head, Headers, type IArgs, type IMiddlewares, type IOptions, type IParameter, type IRouter, Metadata, MetadataKeys, Methods, Middleware, Next, Options, Params, Patch, Post, Put, Query, Req, Request, Res, Response, type ResponseJson, Responses, Status, methodFactory, parameterFactory };
|
package/dist/index.esm.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
/*!
|
|
2
|
-
* @andrewcaires/express v1.0.
|
|
2
|
+
* @andrewcaires/express v1.0.6
|
|
3
3
|
* Decorators for express
|
|
4
4
|
* (c) 2023 Andrew Caires
|
|
5
5
|
* @license: MIT
|
|
6
6
|
*/
|
|
7
|
-
import
|
|
7
|
+
import{cache as t,isObject as e,EventEmitter as r,isFunction as s,isUndefined as o}from"@andrewcaires/utils.js";import n from"cors";import E,{Router as i,json as _,urlencoded as p}from"express";import{existsSync as h}from"fs";import*as a from"http";import*as T from"https";import{Server as u}from"net";import{resolve as O}from"path";function R(t,e,r,s){return new(r||(r=Promise))((function(o,n){function E(t){try{_(s.next(t))}catch(t){n(t)}}function i(t){try{_(s.throw(t))}catch(t){n(t)}}function _(t){var e;t.done?o(t.value):(e=t.value,e instanceof r?e:new r((function(t){t(e)}))).then(E,i)}_((s=s.apply(t,e||[])).next())}))}"function"==typeof SuppressedError&&SuppressedError;const c=t(),N=(t,r,s)=>{e(r)&&(r=r.constructor);const o=c(r);return o[t]||(o[t]=s),o[t]};class d{}d.CONTINUE=100,d.SWITCHING_PROTOCOLS=101,d.PROCESSING=102,d.OK=200,d.CREATED=201,d.ACCEPTED=202,d.NON_AUTHORITATIVE_INFORMATION=203,d.NO_CONTENT=204,d.RESET_CONTENT=205,d.PARTIAL_CONTENT=206,d.MULTI_STATUS=207,d.ALREADY_REPORTED=208,d.IM_USED=226,d.MULTIPLE_CHOICES=300,d.MOVED_PERMANENTLY=301,d.FOUND=302,d.SEE_OTHER=303,d.NOT_MODIFIED=304,d.USE_PROXY=305,d.TEMPORARY_REDIRECT=307,d.PERMANENT_REDIRECT=308,d.BAD_REQUEST=400,d.UNAUTHORIZED=401,d.PAYMENT_REQUIRED=402,d.FORBIDDEN=403,d.NOT_FOUND=404,d.METHOD_NOT_ALLOWED=405,d.NOT_ACCEPTABLE=406,d.PROXY_AUTHENTICATION_REQUIRED=407,d.REQUEST_TIMEOUT=408,d.CONFLICT=409,d.GONE=410,d.LENGTH_REQUIRED=411,d.PRECONDITION_FAILED=412,d.PAYLOAD_TOO_LARGE=413,d.REQUEST_URI_TOO_LONG=414,d.UNSUPPORTED_MEDIA_TYPE=415,d.REQUESTED_RANGE_NOT_SATISFIABLE=416,d.EXPECTATION_FAILED=417,d.IM_A_TEAPOT=418,d.MISDIRECTED_REQUEST=421,d.UNPROCESSABLE_ENTITY=422,d.LOCKED=423,d.FAILED_DEPENDENCY=424,d.UPGRADE_REQUIRED=426,d.PRECONDITION_REQUIRED=428,d.TOO_MANY_REQUESTS=429,d.REQUEST_HEADER_FIELDS_TOO_LARGE=431,d.CONNECTION_CLOSED_WITHOUT_RESPONSE=444,d.UNAVAILABLE_FOR_LEGAL_REASONS=451,d.CLIENT_CLOSED_REQUEST=499,d.INTERNAL_SERVER_ERROR=500,d.NOT_IMPLEMENTED=501,d.BAD_GATEWAY=502,d.SERVICE_UNAVAILABLE=503,d.GATEWAY_TIMEOUT=504,d.HTTP_VERSION_NOT_SUPPORTED=505,d.VARIANT_ALSO_NEGOCIATES=506,d.INSUFFICIENT_STORAGE=507,d.LOOP_DETECTED=508,d.NOT_EXTENDED=510,d.NETWORK_AUTHENTICATION_REQUIRED=511,d.NETWORK_CONNECTION_TIMEOUT_ERROR=599;class A{static success(t,e){return t.status(d.OK).json({message:e})}static data(t,e){return t.status(d.OK).json(Object.assign({},e))}static error(t,e){return t.status(d.INTERNAL_SERVER_ERROR).json({message:e})}static list(t,e){return t.status(d.OK).json([...e])}static notfound(t,e){return t.status(d.NOT_FOUND).json({message:e})}static validation(t,e){return t.status(d.BAD_REQUEST).json({message:e})}static unauthorized(t,e){return t.status(d.UNAUTHORIZED).json({message:e})}}var I,l;!function(t){t.EXTENDS="__extends__",t.MIDDLEWARE="__middleware__",t.PARAMETERS="__parameters__",t.PATH="__path__",t.ROUTERS="__routers__"}(I||(I={})),function(t){t.ALL="all",t.GET="get",t.POST="post",t.PUT="put",t.HEAD="head",t.DELETE="delete",t.OPTIONS="options",t.PATCH="patch"}(l||(l={}));class S extends r{get instance(){return this._app}get router(){return this._router}get server(){return this._server}constructor(t,e){var r;super(),this._app=E(),this._options={},this._default={cross:!1,hybrid:!1,path:"/",port:3e3},this._router=i(),this._controllers=i(),this._options=Object.assign(Object.assign({},this._default),e),this._app.use(_()),this._app.disable("x-powered-by"),this._app.use(p({extended:!0})),this._options.cross&&this._app.use(n()),this._app.use(this._router);const o=(null===(r=this._options.path)||void 0===r?void 0:r.length)?this._options.path:"/";if(this._app.use(o,this._controllers),this._app.all(o+"/*",((t,e)=>A.notfound(e,"Invalid API"))),this._options.public){const t=O(this._options.public);h(t)&&this._app.use(E.static(t)),this._app.get("*",((e,r)=>{if(!h(t))return A.notfound(r,'File "index.html" not found');r.sendFile(t+"/index.html")}))}t.forEach((t=>{const e=i(),r=this._middlewares(t),o=this._parameters(t);this._extends(t).forEach((t=>{r.push(...this._middlewares(t)),o.push(...this._parameters(t))})),this._routers(t).forEach((n=>{const E=n.propertyKey.toString();if(s(t[E])){if(!s(e[n.method]))return this.error(new Error('Method "'+n.method+'" Not Found.'),"express");const i=this._handles(t,E,r,o);return e[n.method](n.path,...i,((e,r,s)=>t[E](...this._args(e,r,s,this._indexes(E,o)))))}return this.error(new Error('Router "'+t.name+"."+E+'" Not Found.'),"express")})),this._extends(t).forEach((n=>{this._routers(n).forEach((n=>{const E=n.propertyKey.toString();if(s(t[E])){if(!s(e[n.method]))return this.error(new Error('Method "'+n.method+'" Not Found.'),"express");const i=this._handles(t,E,r,o);return e[n.method](n.path,...i,((e,r,s)=>t[E](...this._args(e,r,s,this._indexes(E,o)))))}return this.error(new Error('Router "'+t.constructor.name+"."+E+'" Not Found.'),"express")}))})),this._controllers.use(this._path(t),e)}))}error(t,e){o(e)?console.error(t):console.error(e+":",t)}log(t,e){o(e)?console.error(t):console.error(e+":",t)}_args(t,e,r,s,o){const n=[],E={req:t,res:e,next:r,key:"",app:this,argument:o};return s.forEach((t=>{n[t.parameterIndex]=t.callback(Object.assign(Object.assign({},E),{key:t.key}))})),n}_handles(t,e,r,o){return r.filter((t=>t.propertyKey==e)).map((e=>{if(s(t[e.method])){const r=this._indexes(e.method,o);return(s,o,n)=>t[e.method](...this._args(s,o,n,r,e.argument))}this.error(new Error('Middleware "'+e.method+'" Not Found.'),"express")})).filter(s)}_extends(t){return N(I.EXTENDS,t,[]).reduce(((t,e)=>(t.push(e,...this._extends(e)),t)),[]).filter(((t,e,r)=>r.indexOf(t)===e))}_indexes(t,e){return e.filter((e=>e.propertyKey==t))}_middlewares(t){return[...N(I.MIDDLEWARE,t,[])].reverse()}_parameters(t){return N(I.PARAMETERS,t,[])}_path(t){return N(I.PATH,t,"/")}_routers(t){return N(I.ROUTERS,t,[])}listen(){return R(this,void 0,void 0,(function*(){if(this._options.cert&&this._options.key||(this._server=a.createServer(this._app),this._server.listen(this._options.port,(()=>this.log("Server started on port "+this._options.port+".","express")))),!this._server){const t=a.createServer(((t,e)=>{const r=80==this._options.port?":80":"";e.writeHead(301,{Location:"https://"+t.headers.host+r+t.url}),e.end()})),e=T.createServer({key:this._options.key,cert:this._options.cert},this._app);if(this._options.hybrid){new u((r=>{r.once("data",(s=>{r.pause(),r.unshift(s),(22===s[0]?e:t).emit("connection",r),process.nextTick((()=>r.resume()))}))})).listen(this._options.port,(()=>this.log("Server started on port "+this._options.port+".","express"))),this._server=e}this._server||(443==this._options.port&&t.listen(80,(()=>this.log("Server started on port 80.","express"))),e.listen(this._options.port,(()=>this.log("Server started on port "+this._options.port+".","express"))),this._server=e)}}))}}const D=t=>e=>{N(I.PATH,e,(null==t?void 0:t.length)?t:"/")},m=t=>e=>{N(I.EXTENDS,e,[]).push(t)},U=t=>e=>(r,s)=>{N(I.ROUTERS,r,[]).push({method:t,path:(null==e?void 0:e.length)?e:"/",propertyKey:s})},f=U(l.ALL),L=U(l.GET),P=U(l.POST),C=U(l.PUT),y=U(l.DELETE),g=U(l.PATCH),x=U(l.HEAD),v=U(l.OPTIONS),M=(t,e)=>(r,s)=>{N(I.MIDDLEWARE,r,[]).push({method:t,argument:e,propertyKey:s})},F=t=>e=>(r,s,o)=>{N(I.PARAMETERS,r,[]).push({callback:t,key:e,propertyKey:s,parameterIndex:o})},H=(t,e)=>o(e)?t:t[e],k=F((({app:t})=>t)),w=F((({argument:t})=>t)),G=F((({req:t,key:e})=>H(t.body,e))),Q=F((({req:t,key:e})=>H(t.cookies,e))),b=F((({req:t,key:e})=>H(t.headers,e))),K=F((({next:t})=>t)),j=F((({req:t,key:e})=>H(t.params,e))),Y=F((({req:t,key:e})=>H(t.query,e))),W=F((({req:t,key:e})=>H(t,e))),B=W,V=F((({res:t})=>t)),q=V;export{f as All,k as App,S as Application,w as Argument,G as Body,D as Controller,Q as Cookies,y as Delete,m as Extends,L as Get,x as Head,b as Headers,N as Metadata,I as MetadataKeys,l as Methods,M as Middleware,K as Next,v as Options,j as Params,g as Patch,P as Post,C as Put,Y as Query,B as Req,W as Request,q as Res,V as Response,A as Responses,d as Status,U as methodFactory,F as parameterFactory};
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@andrewcaires/express",
|
|
3
|
-
"version": "1.0.
|
|
3
|
+
"version": "1.0.6",
|
|
4
4
|
"description": "Decorators for express",
|
|
5
5
|
"main": "./dist/index.cjs.js",
|
|
6
6
|
"types": "./dist/index.d.ts",
|
|
@@ -35,27 +35,26 @@
|
|
|
35
35
|
},
|
|
36
36
|
"homepage": "https://github.com/andrewcaires/npm/tree/main/api#readme",
|
|
37
37
|
"dependencies": {
|
|
38
|
-
"@andrewcaires/utils.js": "^0.2.
|
|
38
|
+
"@andrewcaires/utils.js": "^0.2.20",
|
|
39
39
|
"cors": "^2.8.5",
|
|
40
40
|
"express": "^4.18.2",
|
|
41
|
-
"multer": "^1.4.5-lts.1"
|
|
42
|
-
"reflect-metadata": "^0.1.13"
|
|
41
|
+
"multer": "^1.4.5-lts.1"
|
|
43
42
|
},
|
|
44
43
|
"devDependencies": {
|
|
45
|
-
"@rollup/plugin-commonjs": "^
|
|
46
|
-
"@rollup/plugin-terser": "^0.4.
|
|
47
|
-
"@rollup/plugin-typescript": "^11.
|
|
44
|
+
"@rollup/plugin-commonjs": "^25.0.4",
|
|
45
|
+
"@rollup/plugin-terser": "^0.4.3",
|
|
46
|
+
"@rollup/plugin-typescript": "^11.1.2",
|
|
48
47
|
"@types/cors": "^2.8.13",
|
|
49
48
|
"@types/express": "^4.17.17",
|
|
50
49
|
"@types/mime-types": "^2.1.1",
|
|
51
50
|
"@types/multer": "^1.4.7",
|
|
52
|
-
"@types/node": "^
|
|
53
|
-
"@typescript-eslint/eslint-plugin": "^
|
|
54
|
-
"@typescript-eslint/parser": "^
|
|
55
|
-
"eslint": "^8.
|
|
56
|
-
"rollup-plugin-dts": "^
|
|
51
|
+
"@types/node": "^20.5.3",
|
|
52
|
+
"@typescript-eslint/eslint-plugin": "^6.4.1",
|
|
53
|
+
"@typescript-eslint/parser": "^6.4.1",
|
|
54
|
+
"eslint": "^8.47.0",
|
|
55
|
+
"rollup-plugin-dts": "^6.0.0",
|
|
57
56
|
"ts-node": "^10.9.1",
|
|
58
57
|
"ts-node-dev": "^2.0.0",
|
|
59
|
-
"tslib": "^2.
|
|
58
|
+
"tslib": "^2.6.2"
|
|
60
59
|
}
|
|
61
|
-
}
|
|
60
|
+
}
|