@andrewcaires/express 1.0.5 → 1.0.7

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