@andrewcaires/express 1.1.8 → 1.1.10
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 +1 -3
- package/dist/index.cjs.js +2 -2
- package/dist/index.d.ts +41 -14
- package/dist/index.esm.js +2 -2
- package/package.json +4 -4
package/README.md
CHANGED
|
@@ -16,9 +16,7 @@ The module is now available on npm! `npm i @andrewcaires/express`
|
|
|
16
16
|
```js
|
|
17
17
|
// index.ts
|
|
18
18
|
|
|
19
|
-
import {
|
|
20
|
-
|
|
21
|
-
import { Application, Argument, Body, Context, Controller, Ctx, Delete, Extends, Get, Middleware, Next, Params, Post, Put } from ".";
|
|
19
|
+
import { Application, Argument, Body, Context, Controller, Ctx, Delete, Extends, Get, Middleware, Params, Post, Put } from ".";
|
|
22
20
|
|
|
23
21
|
@Controller("/test")
|
|
24
22
|
class TestController {
|
package/dist/index.cjs.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
/*!
|
|
2
|
-
* @andrewcaires/express v1.1.
|
|
2
|
+
* @andrewcaires/express v1.1.10
|
|
3
3
|
* Decorators for express
|
|
4
4
|
* (c) 2024 Andrew Caires
|
|
5
5
|
* @license: MIT
|
|
6
6
|
*/
|
|
7
|
-
"use strict";var e=require("@andrewcaires/node"),t=require("@andrewcaires/utils.js"),s=require("cookie-parser"),r=require("cors"),o=require("express"),i=require("express-session"),n=require("fs"),p=require("http"),a=require("https"),E=require("net"),h=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 d=_(p),u=_(a);function c(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;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 O{constructor(e,t,s,r){this.req=e,this.res=t,this.next=s,this.controller=r}close(e){this.res.headersSent||this.res.json(e||(this.dispatch||{}))}destroy(e){var t;e&&this.error(e.message),null===(t=this.res.socket)||void 0===t||t.destroy(e)}error(e){this.prepare(T.INTERNAL_SERVER_ERROR,{message:e})}file(e){this.res.headersSent||(this.status(T.OK),this.res.sendFile(h.resolve(e)))}json(e){this.prepare(T.OK,e)}notFound(e){this.prepare(T.NOT_FOUND,{message:e})}prepare(e,t){this.res.headersSent||(this.status(e),this.dispatch=t)}status(e){return e&&this.res.status(e),this.res.statusCode}success(e){this.prepare(T.OK,{message:e})}unauthorized(e){this.prepare(T.UNAUTHORIZED,{message:e})}validation(e){this.prepare(T.BAD_REQUEST,{message:e})}}const R=t.cache(),l=(e,s,r)=>{t.isObject(s)&&(s=s.constructor);const o=R(s);return o[e]||(o[e]=r),o[e]};var N,x;exports.MetadataKeys=void 0,(N=exports.MetadataKeys||(exports.MetadataKeys={})).EXTENDS="__extends__",N.MIDDLEWARE="__middleware__",N.PARAMETERS="__parameters__",N.PATH="__path__",N.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 A extends t.EventEmitter{get instance(){return this._app}get router(){return this._router}get server(){return this._server}constructor(e,p){var a;super(),this._app=o(),this._options={},this._default={cross:!1,hybrid:!1,path:"/",port:3e3,session:{secret:"yoursecret",resave:!0,saveUninitialized:!1,cookie:{maxAge:864e5}}},this._router=o.Router(),this._controllers=o.Router(),this._options=t.merge(Object.assign({},this._default),Object.assign({},p)),this._app.use(o.json(this._options.json)),this._app.disable("x-powered-by"),this._app.use(o.urlencoded({extended:!0})),this._options.cross&&this._app.use(r(t.isObject(this._options.cross)?this._options.cross:{}));const E=this._options.cookie;this._app.use(s(null==E?void 0:E.secret,null==E?void 0:E.options)),this._app.use(i(this._options.session)),this.init(),this._app.use(this._router);const _=(null===(a=this._options.path)||void 0===a?void 0:a.length)?this._options.path:"/";if(this._app.use(_,this._controllers),this._app.all(_+"/*",((e,t)=>{this._options.redirect?t.redirect(this._options.redirect):(t.status(T.NOT_FOUND),t.json({message:"Invalid API"}))})),this._options.public){const e=h.resolve(this._options.public);n.existsSync(e)&&this._app.use(o.static(e)),this._app.get("*",((t,s)=>{n.existsSync(e)?s.sendFile(e+"/index.html"):this._options.notfound?s.redirect(this._options.notfound):(s.status(T.NOT_FOUND),s.json({message:'File "index.html" not found'}))}))}e.forEach((e=>{const s=o.Router(),r=this._middlewares(e),i=this._parameters(e);this._extends(e).forEach((e=>{r.push(...this._middlewares(e)),i.push(...this._parameters(e))})),this._routers(e).forEach((o=>{const n=o.propertyKey.toString();if(t.isFunction(e[n])){if(!t.isFunction(s[o.method]))return this.error(new Error('Method "'+o.method+'" Not Found'),"express");const p=this._handles(e,n,r,i);return s[o.method](o.path,...p,((s,r,o)=>c(this,void 0,void 0,(function*(){const p=new O(s,r,o,e),a=this._args(p,s,r,o,this._indexes(n,i)),E=yield e[n](...a);return p.close(t.isArray(E)||t.isObject(E)?E:void 0),E}))))}return this.error(new Error('Router "'+e.name+"."+n+'" Not Found'),"express")})),this._extends(e).forEach((o=>{this._routers(o).forEach((o=>{const n=o.propertyKey.toString();if(t.isFunction(e[n])){if(!t.isFunction(s[o.method]))return this.error(new Error('Method "'+o.method+'" Not Found'),"express");const p=this._handles(e,n,r,i);return s[o.method](o.path,...p,((s,r,o)=>c(this,void 0,void 0,(function*(){const p=new O(s,r,o,e),a=this._args(p,s,r,o,this._indexes(n,i)),E=yield e[n](...a);return p.close(t.isArray(E)||t.isObject(E)?E:void 0),E}))))}return this.error(new Error('Router "'+e.constructor.name+"."+n+'" Not Found'),"express")}))})),this._controllers.use(this._path(e),s)}))}init(){}error(s,r){e.Log.error(t.isUndefined(r)?s:r+":",s)}log(s,r){e.Log.info(t.isUndefined(r)?s:r+":",s)}_args(e,t,s,r,o,i){const n=[],p={ctx:e,req:t,res:s,next:r,key:"",app:this,argument:i};return o.forEach((e=>{n[e.parameterIndex]=e.callback(Object.assign(Object.assign({},p),{key:e.key}))})),n}_handles(e,s,r,o){return r.filter((e=>e.propertyKey==s)).map((s=>{if(t.isFunction(e[s.method])){const r=this._indexes(s.method,o);return(o,i,n)=>{const p=new O(o,i,n,e),a=t.isFunction(s.argument)?s.argument(p):s.argument;return e[s.method](...this._args(p,o,i,n,r,a))}}this.error(new Error('Middleware "'+s.method+'" Not Found'),"express")})).filter(t.isFunction)}_extends(e){return l(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[...l(exports.MetadataKeys.MIDDLEWARE,e,[])].reverse()}_parameters(e){return l(exports.MetadataKeys.PARAMETERS,e,[])}_path(e){return l(exports.MetadataKeys.PATH,e,"/")}_routers(e){return l(exports.MetadataKeys.ROUTERS,e,[])}listen(){return c(this,void 0,void 0,(function*(){if(this._options.cert&&this._options.key||(this._server=d.createServer(this._app),this._server.listen(this._options.port,(()=>this.log("Server started on port "+this._options.port,"express")))),!this._server){const e=d.createServer(((e,t)=>{const s=80==this._options.port?":80":"";t.writeHead(T.MOVED_PERMANENTLY,{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 E.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 I=e=>t=>(s,r)=>{l(exports.MetadataKeys.ROUTERS,s,[]).push({method:e,path:(null==t?void 0:t.length)?t:"/",propertyKey:r})},S=I(exports.Methods.ALL),D=I(exports.Methods.GET),y=I(exports.Methods.POST),M=I(exports.Methods.PUT),U=I(exports.Methods.DELETE),m=I(exports.Methods.PATCH),P=I(exports.Methods.HEAD),f=I(exports.Methods.OPTIONS),v=e=>t=>(s,r,o)=>{l(exports.MetadataKeys.PARAMETERS,s,[]).push({callback:e,key:t,propertyKey:r,parameterIndex:o})},L=(e,s)=>t.isUndefined(s)?e:e[s],g=v((({app:e})=>e)),C=v((({argument:e})=>e)),F=v((({req:e,key:t})=>L(e.body,t))),K=v((({req:e,key:t})=>L(e.cookies,t))),b=v((({ctx:e})=>e)),w=v((({req:e,key:t})=>L(e.headers,t))),H=v((({req:e,key:t})=>L(e.params,t))),k=v((({req:e,key:t})=>L(e.query,t))),j=v((({req:e})=>e.session));exports.All=S,exports.App=g,exports.Application=A,exports.Argument=C,exports.Body=F,exports.Context=O,exports.Controller=e=>t=>{l(exports.MetadataKeys.PATH,t,(null==e?void 0:e.length)?e:"/")},exports.Cookies=K,exports.Ctx=b,exports.Delete=U,exports.Extends=e=>t=>{l(exports.MetadataKeys.EXTENDS,t,[]).push(e)},exports.Get=D,exports.Head=P,exports.Headers=w,exports.Metadata=l,exports.Middleware=(e,t)=>(s,r)=>{l(exports.MetadataKeys.MIDDLEWARE,s,[]).push({method:e,argument:t,propertyKey:r})},exports.Options=f,exports.Params=H,exports.Patch=m,exports.Post=y,exports.Put=M,exports.Query=k,exports.Session=j,exports.Status=T,exports.methodFactory=I,exports.parameterFactory=v;
|
|
7
|
+
"use strict";var e=require("@andrewcaires/node"),t=require("@andrewcaires/utils.js"),s=require("cookie-parser"),r=require("cors"),o=require("express"),i=require("express-session"),n=require("fs"),a=require("http"),p=require("https"),h=require("net"),_=require("path"),E=require("multer");function d(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 u=d(a),c=d(p);function l(e,t,s,r){return new(s||(s=Promise))((function(o,i){function n(e){try{p(r.next(e))}catch(e){i(e)}}function a(e){try{p(r.throw(e))}catch(e){i(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(n,a)}p((r=r.apply(e,t||[])).next())}))}"function"==typeof SuppressedError&&SuppressedError;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 O{constructor(e,t,s,r){this.req=e,this.res=t,this.next=s,this.controller=r}close(e){this.res.headersSent||this.res.json(e||this.storage)}destroy(e){var t;e&&this.error(e.message),null===(t=this.res.socket)||void 0===t||t.destroy(e)}error(e){this.send(T.INTERNAL_SERVER_ERROR,{message:e})}file(e){this.res.headersSent||(this.status(T.OK),this.res.sendFile(_.resolve(e)))}json(e){this.send(T.OK,e)}notFound(e){this.send(T.NOT_FOUND,{message:e})}prepare(e,t){this.res.headersSent||(this.status(e),this.storage=t)}send(e,t){this.res.headersSent||(this.status(e),this.res.json(t))}status(e){return e&&this.res.status(e),this.res.statusCode}success(e){this.send(T.OK,{message:e})}unauthorized(e){this.send(T.UNAUTHORIZED,{message:e})}validation(e){this.send(T.BAD_REQUEST,{message:e})}}const R=t.cache(),x=(e,s,r)=>{t.isObject(s)&&(s=s.constructor);const o=R(s);return o[e]||(o[e]=r),o[e]};var A,N;exports.MetadataKeys=void 0,(A=exports.MetadataKeys||(exports.MetadataKeys={})).EXTENDS="__extends__",A.MIDDLEWARE="__middleware__",A.PARAMETERS="__parameters__",A.PATH="__path__",A.ROUTERS="__routers__",exports.Methods=void 0,(N=exports.Methods||(exports.Methods={})).ALL="all",N.GET="get",N.POST="post",N.PUT="put",N.HEAD="head",N.DELETE="delete",N.OPTIONS="options",N.PATCH="patch";class I extends t.EventEmitter{get instance(){return this._app}get router(){return this._router}get server(){return this._server}constructor(e,a){var p;super(),this._app=o(),this._options={},this._default={cross:!1,hybrid:!1,path:"/",port:3e3,session:{secret:"yoursecret",resave:!0,saveUninitialized:!1,cookie:{maxAge:864e5}}},this._router=o.Router(),this._controllers=o.Router(),this._options=t.merge(Object.assign({},this._default),Object.assign({},a)),this._app.use(o.json(this._options.json)),this._app.disable("x-powered-by"),this._app.use(o.urlencoded({extended:!0})),this._options.cross&&this._app.use(r(t.isObject(this._options.cross)?this._options.cross:{}));const h=this._options.cookie;this._app.use(s(null==h?void 0:h.secret,null==h?void 0:h.options)),this._app.use(i(this._options.session)),this.init(),this._app.use(this._router);const E=(null===(p=this._options.path)||void 0===p?void 0:p.length)?this._options.path:"/";if(this._app.use(E,this._controllers),this._app.all(E+"/*",((e,t)=>{this._options.redirect?t.redirect(this._options.redirect):(t.status(T.NOT_FOUND),t.json({message:"Invalid API"}))})),this._options.public){const e=_.resolve(this._options.public);n.existsSync(e)&&this._app.use(o.static(e)),this._app.get("*",((t,s)=>{n.existsSync(e)?s.sendFile(e+"/index.html"):this._options.notfound?s.redirect(this._options.notfound):(s.status(T.NOT_FOUND),s.json({message:'File "index.html" not found'}))}))}e.forEach((e=>{const s=o.Router(),r=this._middlewares(e),i=this._parameters(e);this._extends(e).forEach((e=>{r.push(...this._middlewares(e)),i.push(...this._parameters(e))})),this._routers(e).forEach((o=>{const n=o.propertyKey.toString();if(t.isFunction(e[n])){if(!t.isFunction(s[o.method]))return this._notFound(o.method);const a=this._handles(e,n,r,i);return s[o.method](o.path,...a,((s,r,o)=>l(this,void 0,void 0,(function*(){const a=new O(s,r,o,e),p=this._args(a,this._indexes(n,i)),h=yield e[n](...p);a.close(t.isArray(h)||t.isObject(h)?h:void 0)}))))}this._notFound(`${e.name}.${n}`)})),this._extends(e).forEach((o=>{this._routers(o).forEach((o=>{const n=o.propertyKey.toString();if(t.isFunction(e[n])){if(!t.isFunction(s[o.method]))return this._notFound(o.method);const a=this._handles(e,n,r,i);return s[o.method](o.path,...a,((s,r,o)=>l(this,void 0,void 0,(function*(){const a=new O(s,r,o,e),p=this._args(a,this._indexes(n,i)),h=yield e[n](...p);a.close(t.isArray(h)||t.isObject(h)?h:void 0)}))))}this._notFound(`${e.constructor.name}.${n}`)}))})),this._controllers.use(this._path(e),s)}))}init(){}error(t,s){e.Log.error(t)}log(t,s){e.Log.info(t)}_args(e,t,s){const r=[],o={ctx:e,key:"",app:this,argument:s};return t.forEach((e=>{r[e.parameterIndex]=e.callback(Object.assign(Object.assign({},o),{key:e.key}))})),r}_handles(e,s,r,o){return r.filter((e=>e.propertyKey==s)).map((s=>{if(t.isFunction(e[s.method])){const r=this._indexes(s.method,o);return(o,i,n)=>l(this,void 0,void 0,(function*(){const a=new O(o,i,n,e),p=t.isFunction(s.argument)?s.argument(a):s.argument,h=yield e[s.method](...this._args(a,r,p));(t.isArray(h)||t.isObject(h))&&a.close(h)}))}this._notFound(s.method)})).filter(t.isFunction)}_extends(e){return x(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[...x(exports.MetadataKeys.MIDDLEWARE,e,[])].reverse()}_notFound(e){this.error(new Error(`Router "${e}" not found`),"express")}_parameters(e){return x(exports.MetadataKeys.PARAMETERS,e,[])}_path(e){return x(exports.MetadataKeys.PATH,e,"/")}_port(e){return`Server listening on port ${e}`}_routers(e){return x(exports.MetadataKeys.ROUTERS,e,[])}listen(){return l(this,void 0,void 0,(function*(){if(this._options.cert&&this._options.key||(this._server=u.createServer(this._app),this._server.listen(this._options.port,(()=>this.log(this._port(this._options.port),"express")))),!this._server){const e=u.createServer(((e,t)=>{const s=80==this._options.port?":80":"";t.writeHead(T.MOVED_PERMANENTLY,{Location:`https://${e.headers.host}${s}${e.url}`}),t.end()})),t=c.createServer({key:this._options.key,cert:this._options.cert},this._app);if(this._options.hybrid){new h.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(this._port(this._options.port),"express"))),this._server=t}this._server||(443==this._options.port&&e.listen(80,(()=>this.log(this._port(80),"express"))),t.listen(this._options.port,(()=>this.log(this._port(this._options.port),"express"))),this._server=t)}}))}}const S=e=>t=>(s,r)=>{x(exports.MetadataKeys.ROUTERS,s,[]).push({method:e,path:(null==t?void 0:t.length)?t:"/",propertyKey:r})},y=S(exports.Methods.ALL),D=S(exports.Methods.GET),f=S(exports.Methods.POST),m=S(exports.Methods.PUT),v=S(exports.Methods.DELETE),M=S(exports.Methods.PATCH),U=S(exports.Methods.HEAD),g=S(exports.Methods.OPTIONS),P=e=>t=>(s,r,o)=>{x(exports.MetadataKeys.PARAMETERS,s,[]).push({callback:e,key:t,propertyKey:r,parameterIndex:o})},L=(e,s)=>t.isUndefined(s)?e:e[s],C=P((({app:e})=>e)),F=P((({argument:e})=>e)),K=P((({ctx:e,key:t})=>L(e.req.body,t))),b=P((({ctx:e,key:t})=>L(e.req.cookies,t))),j=P((({ctx:e})=>e)),k=P((({ctx:e})=>t.toArray(e.req.files))),H=P((({ctx:e,key:t})=>L(e.req.headers,t))),q=P((({ctx:e,key:t})=>L(e.req.params,t))),w=P((({ctx:e,key:t})=>L(e.req.query,t))),G=P((({ctx:e})=>e.req.session));class Q{static file(e,s){const r=t.uuidv4()+"."+s;return n.existsSync(_.join(e,r))?Q.file(e,s):r}static middleware(e,t){const s=Q._cache(t);s.upload||(s.upload=Q.multer(t)),s.upload(e.req,e.res,(t=>{if(t)return e.destroy(t);e.next()}))}static multer(e){const t=(null==e?void 0:e.path)||"./",s=E.diskStorage({destination:(e,s,r)=>r(null,t),filename:(e,s,r)=>l(this,void 0,void 0,(function*(){return r(null,Q.file(t,s.originalname.split(".").pop()||"bin"))}))}),r=(null==e?void 0:e.types)||[];return E({storage:s,fileFilter(e,t,s){return l(this,void 0,void 0,(function*(){if(r.length){const e=t.originalname.split(".").pop()||"bin";return-1!=r.indexOf(t.mimetype)||-1!=r.indexOf(e)?s(null,!0):s(new Error("File not allowed"))}return s(null,!0)}))},limits:{fileSize:1e6*((null==e?void 0:e.size)||5)}}).array((null==e?void 0:e.field)||"field",(null==e?void 0:e.count)||1)}}Q._cache=t.cache(),exports.All=y,exports.App=C,exports.Application=I,exports.Argument=F,exports.Body=K,exports.Context=O,exports.Controller=e=>t=>{x(exports.MetadataKeys.PATH,t,(null==e?void 0:e.length)?e:"/")},exports.Cookies=b,exports.Ctx=j,exports.Delete=v,exports.Extends=e=>t=>{x(exports.MetadataKeys.EXTENDS,t,[]).push(e)},exports.Files=k,exports.Get=D,exports.Head=U,exports.Headers=H,exports.Metadata=x,exports.Middleware=(e,t)=>(s,r)=>{x(exports.MetadataKeys.MIDDLEWARE,s,[]).push({method:e,argument:t,propertyKey:r})},exports.Options=g,exports.Params=q,exports.Patch=M,exports.Post=f,exports.Put=m,exports.Query=w,exports.Session=G,exports.Status=T,exports.Upload=Q,exports.methodFactory=S,exports.parameterFactory=P;
|
package/dist/index.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/*!
|
|
2
|
-
* @andrewcaires/express v1.1.
|
|
2
|
+
* @andrewcaires/express v1.1.10
|
|
3
3
|
* Decorators for express
|
|
4
4
|
* (c) 2024 Andrew Caires
|
|
5
5
|
* @license: MIT
|
|
@@ -18,15 +18,16 @@ declare class Context<T = any> {
|
|
|
18
18
|
readonly res: Response;
|
|
19
19
|
readonly next: NextFunction;
|
|
20
20
|
readonly controller: T;
|
|
21
|
-
private
|
|
21
|
+
private storage?;
|
|
22
22
|
constructor(req: Request, res: Response, next: NextFunction, controller: T);
|
|
23
23
|
close(value?: TypeObjectAny): void;
|
|
24
24
|
destroy(error?: Error): void;
|
|
25
25
|
error(message: string): void;
|
|
26
26
|
file(path: string): void;
|
|
27
|
-
json(value
|
|
27
|
+
json(value?: TypeObjectAny | Array<TypeObjectAny>): void;
|
|
28
28
|
notFound(message: string): void;
|
|
29
|
-
|
|
29
|
+
prepare(status: number, value: TypeObjectAny | Array<TypeObjectAny>): void;
|
|
30
|
+
send(status: number, value?: TypeObjectAny | Array<TypeObjectAny>): void;
|
|
30
31
|
status(value?: number): number;
|
|
31
32
|
success(message: string): void;
|
|
32
33
|
unauthorized(message: string): void;
|
|
@@ -35,25 +36,33 @@ declare class Context<T = any> {
|
|
|
35
36
|
|
|
36
37
|
interface IArgs {
|
|
37
38
|
ctx: Context;
|
|
38
|
-
req: Request;
|
|
39
|
-
res: Response;
|
|
40
|
-
next: NextFunction;
|
|
41
39
|
key: string;
|
|
42
40
|
app: Application;
|
|
43
41
|
argument: any;
|
|
44
42
|
}
|
|
45
43
|
|
|
44
|
+
interface ICookie {
|
|
45
|
+
secret?: string | Array<string>;
|
|
46
|
+
options?: CookieParseOptions;
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
interface IFile {
|
|
50
|
+
fieldname: string;
|
|
51
|
+
originalname: string;
|
|
52
|
+
encoding: string;
|
|
53
|
+
mimetype: string;
|
|
54
|
+
destination: string;
|
|
55
|
+
filename: string;
|
|
56
|
+
path: string;
|
|
57
|
+
size: number;
|
|
58
|
+
}
|
|
59
|
+
|
|
46
60
|
interface IMiddlewares {
|
|
47
61
|
method: string;
|
|
48
62
|
argument: any;
|
|
49
63
|
propertyKey: string | symbol;
|
|
50
64
|
}
|
|
51
65
|
|
|
52
|
-
interface ICookie {
|
|
53
|
-
secret?: string | Array<string>;
|
|
54
|
-
options?: CookieParseOptions;
|
|
55
|
-
}
|
|
56
|
-
|
|
57
66
|
interface IOptions {
|
|
58
67
|
cert?: Buffer;
|
|
59
68
|
cookie?: ICookie;
|
|
@@ -103,6 +112,14 @@ interface IStore extends TypeObjectAny {
|
|
|
103
112
|
touch(): this;
|
|
104
113
|
}
|
|
105
114
|
|
|
115
|
+
interface IUpload {
|
|
116
|
+
count?: number;
|
|
117
|
+
field?: string;
|
|
118
|
+
path?: string;
|
|
119
|
+
size?: number;
|
|
120
|
+
types?: Array<string>;
|
|
121
|
+
}
|
|
122
|
+
|
|
106
123
|
declare enum MetadataKeys {
|
|
107
124
|
EXTENDS = "__extends__",
|
|
108
125
|
MIDDLEWARE = "__middleware__",
|
|
@@ -123,15 +140,17 @@ declare class Application extends EventEmitter {
|
|
|
123
140
|
get server(): http.Server | https.Server | undefined;
|
|
124
141
|
constructor(controllers: Array<object>, options?: IOptions);
|
|
125
142
|
init(): void;
|
|
126
|
-
error(
|
|
143
|
+
error(message: any, source?: string): void;
|
|
127
144
|
log(message: string, source?: string): void;
|
|
128
145
|
private _args;
|
|
129
146
|
private _handles;
|
|
130
147
|
private _extends;
|
|
131
148
|
private _indexes;
|
|
132
149
|
private _middlewares;
|
|
150
|
+
private _notFound;
|
|
133
151
|
private _parameters;
|
|
134
152
|
private _path;
|
|
153
|
+
private _port;
|
|
135
154
|
private _routers;
|
|
136
155
|
listen(): Promise<void>;
|
|
137
156
|
}
|
|
@@ -158,6 +177,7 @@ declare const Argument: (key?: string) => ParameterDecorator;
|
|
|
158
177
|
declare const Body: (key?: string) => ParameterDecorator;
|
|
159
178
|
declare const Cookies: (key?: string) => ParameterDecorator;
|
|
160
179
|
declare const Ctx: (key?: string) => ParameterDecorator;
|
|
180
|
+
declare const Files: (key?: string) => ParameterDecorator;
|
|
161
181
|
declare const Headers: (key?: string) => ParameterDecorator;
|
|
162
182
|
declare const Params: (key?: string) => ParameterDecorator;
|
|
163
183
|
declare const Query: (key?: string) => ParameterDecorator;
|
|
@@ -231,4 +251,11 @@ declare class Status {
|
|
|
231
251
|
static readonly NETWORK_CONNECTION_TIMEOUT_ERROR = 599;
|
|
232
252
|
}
|
|
233
253
|
|
|
234
|
-
|
|
254
|
+
declare class Upload {
|
|
255
|
+
private static _cache;
|
|
256
|
+
private static file;
|
|
257
|
+
static middleware(ctx: Context, options: IUpload): void;
|
|
258
|
+
private static multer;
|
|
259
|
+
}
|
|
260
|
+
|
|
261
|
+
export { All, App, Application, Argument, Body, Context, Controller, Cookies, Ctx, Delete, Extends, Files, Get, Head, Headers, type IArgs, type ICookie, type IFile, type IMiddlewares, type IOptions, type IParameter, type IRouter, type IStore, type IUpload, Metadata, MetadataKeys, Methods, Middleware, Options, Params, Patch, Post, Put, Query, Session, Status, Upload, methodFactory, parameterFactory };
|
package/dist/index.esm.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
/*!
|
|
2
|
-
* @andrewcaires/express v1.1.
|
|
2
|
+
* @andrewcaires/express v1.1.10
|
|
3
3
|
* Decorators for express
|
|
4
4
|
* (c) 2024 Andrew Caires
|
|
5
5
|
* @license: MIT
|
|
6
6
|
*/
|
|
7
|
-
import{Log as t}from"@andrewcaires/node";import{cache as e,isObject as s,EventEmitter as r,merge as
|
|
7
|
+
import{Log as t}from"@andrewcaires/node";import{cache as e,isObject as s,EventEmitter as r,merge as i,isFunction as o,isArray as n,toArray as _,isUndefined as h,uuidv4 as E}from"@andrewcaires/utils.js";import p from"cookie-parser";import a from"cors";import u,{Router as d,json as c,urlencoded as T}from"express";import l from"express-session";import{existsSync as O}from"fs";import*as R from"http";import*as N from"https";import{Server as A}from"net";import{resolve as m,join as I}from"path";import f from"multer";function S(t,e,s,r){return new(s||(s=Promise))((function(i,o){function n(t){try{h(r.next(t))}catch(t){o(t)}}function _(t){try{h(r.throw(t))}catch(t){o(t)}}function h(t){var e;t.done?i(t.value):(e=t.value,e instanceof s?e:new s((function(t){t(e)}))).then(n,_)}h((r=r.apply(t,e||[])).next())}))}"function"==typeof SuppressedError&&SuppressedError;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 U{constructor(t,e,s,r){this.req=t,this.res=e,this.next=s,this.controller=r}close(t){this.res.headersSent||this.res.json(t||this.storage)}destroy(t){var e;t&&this.error(t.message),null===(e=this.res.socket)||void 0===e||e.destroy(t)}error(t){this.send(D.INTERNAL_SERVER_ERROR,{message:t})}file(t){this.res.headersSent||(this.status(D.OK),this.res.sendFile(m(t)))}json(t){this.send(D.OK,t)}notFound(t){this.send(D.NOT_FOUND,{message:t})}prepare(t,e){this.res.headersSent||(this.status(t),this.storage=e)}send(t,e){this.res.headersSent||(this.status(t),this.res.json(e))}status(t){return t&&this.res.status(t),this.res.statusCode}success(t){this.send(D.OK,{message:t})}unauthorized(t){this.send(D.UNAUTHORIZED,{message:t})}validation(t){this.send(D.BAD_REQUEST,{message:t})}}const v=e(),L=(t,e,r)=>{s(e)&&(e=e.constructor);const i=v(e);return i[t]||(i[t]=r),i[t]};var P,g;!function(t){t.EXTENDS="__extends__",t.MIDDLEWARE="__middleware__",t.PARAMETERS="__parameters__",t.PATH="__path__",t.ROUTERS="__routers__"}(P||(P={})),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"}(g||(g={}));class y 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=u(),this._options={},this._default={cross:!1,hybrid:!1,path:"/",port:3e3,session:{secret:"yoursecret",resave:!0,saveUninitialized:!1,cookie:{maxAge:864e5}}},this._router=d(),this._controllers=d(),this._options=i(Object.assign({},this._default),Object.assign({},e)),this._app.use(c(this._options.json)),this._app.disable("x-powered-by"),this._app.use(T({extended:!0})),this._options.cross&&this._app.use(a(s(this._options.cross)?this._options.cross:{}));const _=this._options.cookie;this._app.use(p(null==_?void 0:_.secret,null==_?void 0:_.options)),this._app.use(l(this._options.session)),this.init(),this._app.use(this._router);const h=(null===(r=this._options.path)||void 0===r?void 0:r.length)?this._options.path:"/";if(this._app.use(h,this._controllers),this._app.all(h+"/*",((t,e)=>{this._options.redirect?e.redirect(this._options.redirect):(e.status(D.NOT_FOUND),e.json({message:"Invalid API"}))})),this._options.public){const t=m(this._options.public);O(t)&&this._app.use(u.static(t)),this._app.get("*",((e,s)=>{O(t)?s.sendFile(t+"/index.html"):this._options.notfound?s.redirect(this._options.notfound):(s.status(D.NOT_FOUND),s.json({message:'File "index.html" not found'}))}))}t.forEach((t=>{const e=d(),r=this._middlewares(t),i=this._parameters(t);this._extends(t).forEach((t=>{r.push(...this._middlewares(t)),i.push(...this._parameters(t))})),this._routers(t).forEach((_=>{const h=_.propertyKey.toString();if(o(t[h])){if(!o(e[_.method]))return this._notFound(_.method);const E=this._handles(t,h,r,i);return e[_.method](_.path,...E,((e,r,o)=>S(this,void 0,void 0,(function*(){const _=new U(e,r,o,t),E=this._args(_,this._indexes(h,i)),p=yield t[h](...E);_.close(n(p)||s(p)?p:void 0)}))))}this._notFound(`${t.name}.${h}`)})),this._extends(t).forEach((_=>{this._routers(_).forEach((_=>{const h=_.propertyKey.toString();if(o(t[h])){if(!o(e[_.method]))return this._notFound(_.method);const E=this._handles(t,h,r,i);return e[_.method](_.path,...E,((e,r,o)=>S(this,void 0,void 0,(function*(){const _=new U(e,r,o,t),E=this._args(_,this._indexes(h,i)),p=yield t[h](...E);_.close(n(p)||s(p)?p:void 0)}))))}this._notFound(`${t.constructor.name}.${h}`)}))})),this._controllers.use(this._path(t),e)}))}init(){}error(e,s){t.error(e)}log(e,s){t.info(e)}_args(t,e,s){const r=[],i={ctx:t,key:"",app:this,argument:s};return e.forEach((t=>{r[t.parameterIndex]=t.callback(Object.assign(Object.assign({},i),{key:t.key}))})),r}_handles(t,e,r,i){return r.filter((t=>t.propertyKey==e)).map((e=>{if(o(t[e.method])){const r=this._indexes(e.method,i);return(i,_,h)=>S(this,void 0,void 0,(function*(){const E=new U(i,_,h,t),p=o(e.argument)?e.argument(E):e.argument,a=yield t[e.method](...this._args(E,r,p));(n(a)||s(a))&&E.close(a)}))}this._notFound(e.method)})).filter(o)}_extends(t){return L(P.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(P.MIDDLEWARE,t,[])].reverse()}_notFound(t){this.error(new Error(`Router "${t}" not found`),"express")}_parameters(t){return L(P.PARAMETERS,t,[])}_path(t){return L(P.PATH,t,"/")}_port(t){return`Server listening on port ${t}`}_routers(t){return L(P.ROUTERS,t,[])}listen(){return S(this,void 0,void 0,(function*(){if(this._options.cert&&this._options.key||(this._server=R.createServer(this._app),this._server.listen(this._options.port,(()=>this.log(this._port(this._options.port),"express")))),!this._server){const t=R.createServer(((t,e)=>{const s=80==this._options.port?":80":"";e.writeHead(D.MOVED_PERMANENTLY,{Location:`https://${t.headers.host}${s}${t.url}`}),e.end()})),e=N.createServer({key:this._options.key,cert:this._options.cert},this._app);if(this._options.hybrid){new A((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(this._port(this._options.port),"express"))),this._server=e}this._server||(443==this._options.port&&t.listen(80,(()=>this.log(this._port(80),"express"))),e.listen(this._options.port,(()=>this.log(this._port(this._options.port),"express"))),this._server=e)}}))}}const x=t=>e=>{L(P.PATH,e,(null==t?void 0:t.length)?t:"/")},C=t=>e=>{L(P.EXTENDS,e,[]).push(t)},F=t=>e=>(s,r)=>{L(P.ROUTERS,s,[]).push({method:t,path:(null==e?void 0:e.length)?e:"/",propertyKey:r})},M=F(g.ALL),k=F(g.GET),H=F(g.POST),w=F(g.PUT),G=F(g.DELETE),b=F(g.PATCH),Q=F(g.HEAD),K=F(g.OPTIONS),Y=(t,e)=>(s,r)=>{L(P.MIDDLEWARE,s,[]).push({method:t,argument:e,propertyKey:r})},j=t=>e=>(s,r,i)=>{L(P.PARAMETERS,s,[]).push({callback:t,key:e,propertyKey:r,parameterIndex:i})},q=(t,e)=>h(e)?t:t[e],V=j((({app:t})=>t)),W=j((({argument:t})=>t)),B=j((({ctx:t,key:e})=>q(t.req.body,e))),$=j((({ctx:t,key:e})=>q(t.req.cookies,e))),X=j((({ctx:t})=>t)),z=j((({ctx:t})=>_(t.req.files))),Z=j((({ctx:t,key:e})=>q(t.req.headers,e))),J=j((({ctx:t,key:e})=>q(t.req.params,e))),tt=j((({ctx:t,key:e})=>q(t.req.query,e))),et=j((({ctx:t})=>t.req.session));class st{static file(t,e){const s=E()+"."+e;return O(I(t,s))?st.file(t,e):s}static middleware(t,e){const s=st._cache(e);s.upload||(s.upload=st.multer(e)),s.upload(t.req,t.res,(e=>{if(e)return t.destroy(e);t.next()}))}static multer(t){const e=(null==t?void 0:t.path)||"./",s=f.diskStorage({destination:(t,s,r)=>r(null,e),filename:(t,s,r)=>S(this,void 0,void 0,(function*(){return r(null,st.file(e,s.originalname.split(".").pop()||"bin"))}))}),r=(null==t?void 0:t.types)||[];return f({storage:s,fileFilter(t,e,s){return S(this,void 0,void 0,(function*(){if(r.length){const t=e.originalname.split(".").pop()||"bin";return-1!=r.indexOf(e.mimetype)||-1!=r.indexOf(t)?s(null,!0):s(new Error("File not allowed"))}return s(null,!0)}))},limits:{fileSize:1e6*((null==t?void 0:t.size)||5)}}).array((null==t?void 0:t.field)||"field",(null==t?void 0:t.count)||1)}}st._cache=e();export{M as All,V as App,y as Application,W as Argument,B as Body,U as Context,x as Controller,$ as Cookies,X as Ctx,G as Delete,C as Extends,z as Files,k as Get,Q as Head,Z as Headers,L as Metadata,P as MetadataKeys,g as Methods,Y as Middleware,K as Options,J as Params,b as Patch,H as Post,w as Put,tt as Query,et as Session,D as Status,st as Upload,F as methodFactory,j as parameterFactory};
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@andrewcaires/express",
|
|
3
|
-
"version": "1.1.
|
|
3
|
+
"version": "1.1.10",
|
|
4
4
|
"description": "Decorators for express",
|
|
5
5
|
"main": "./dist/index.cjs.js",
|
|
6
6
|
"types": "./dist/index.d.ts",
|
|
@@ -35,8 +35,8 @@
|
|
|
35
35
|
},
|
|
36
36
|
"homepage": "https://github.com/andrewcaires/npm/tree/main/api#readme",
|
|
37
37
|
"dependencies": {
|
|
38
|
-
"@andrewcaires/node": "^1.1.
|
|
39
|
-
"@andrewcaires/utils.js": "^0.3.
|
|
38
|
+
"@andrewcaires/node": "^1.1.1",
|
|
39
|
+
"@andrewcaires/utils.js": "^0.3.1",
|
|
40
40
|
"cookie-parser": "^1.4.6",
|
|
41
41
|
"cors": "^2.8.5",
|
|
42
42
|
"express": "^4.19.2",
|
|
@@ -52,7 +52,7 @@
|
|
|
52
52
|
"@types/express": "^4.17.21",
|
|
53
53
|
"@types/express-session": "^1.18.0",
|
|
54
54
|
"@types/multer": "^1.4.11",
|
|
55
|
-
"@types/node": "^20.14.
|
|
55
|
+
"@types/node": "^20.14.5",
|
|
56
56
|
"eslint": "^9.5.0",
|
|
57
57
|
"rollup-plugin-dts": "^6.1.1",
|
|
58
58
|
"tslib": "^2.6.3",
|