@andrewcaires/express 1.0.6 → 1.0.8
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 +30 -6
- package/dist/index.esm.js +2 -2
- package/package.json +19 -15
package/dist/index.cjs.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
/*!
|
|
2
|
-
* @andrewcaires/express v1.0.
|
|
2
|
+
* @andrewcaires/express v1.0.8
|
|
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("
|
|
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 x,l;exports.MetadataKeys=void 0,(x=exports.MetadataKeys||(exports.MetadataKeys={})).EXTENDS="__extends__",x.MIDDLEWARE="__middleware__",x.PARAMETERS="__parameters__",x.PATH="__path__",x.ROUTERS="__routers__",exports.Methods=void 0,(l=exports.Methods||(exports.Methods={})).ALL="all",l.GET="get",l.POST="post",l.PUT="put",l.HEAD="head",l.DELETE="delete",l.OPTIONS="options",l.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,Q=m((({req:e})=>e.session));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.Session=Q,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.
|
|
2
|
+
* @andrewcaires/express v1.0.8
|
|
3
3
|
* Decorators for express
|
|
4
4
|
* (c) 2023 Andrew Caires
|
|
5
5
|
* @license: MIT
|
|
6
6
|
*/
|
|
7
|
-
import { TypeCallbackFunction, EventEmitter } from '@andrewcaires/utils.js';
|
|
7
|
+
import { TypeCallbackFunction, TypeObjectAny, 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;
|
|
@@ -24,14 +28,22 @@ interface IMiddlewares {
|
|
|
24
28
|
propertyKey: string | symbol;
|
|
25
29
|
}
|
|
26
30
|
|
|
31
|
+
interface ICookie {
|
|
32
|
+
secret?: string | Array<string>;
|
|
33
|
+
options?: CookieParseOptions;
|
|
34
|
+
}
|
|
35
|
+
|
|
27
36
|
interface IOptions {
|
|
28
37
|
cert?: Buffer;
|
|
29
|
-
|
|
38
|
+
cookie?: ICookie;
|
|
39
|
+
cross?: boolean | CorsOptions;
|
|
30
40
|
hybrid?: boolean;
|
|
41
|
+
json?: OptionsJson;
|
|
31
42
|
key?: Buffer;
|
|
32
43
|
path?: string;
|
|
33
44
|
port?: number;
|
|
34
45
|
public?: string;
|
|
46
|
+
session?: SessionOptions;
|
|
35
47
|
}
|
|
36
48
|
|
|
37
49
|
interface IParameter {
|
|
@@ -58,6 +70,16 @@ interface IRouter {
|
|
|
58
70
|
propertyKey: string | symbol;
|
|
59
71
|
}
|
|
60
72
|
|
|
73
|
+
interface IStore extends TypeObjectAny {
|
|
74
|
+
readonly id: string;
|
|
75
|
+
destroy(callback: TypeCallbackFunction): this;
|
|
76
|
+
regenerate(callback: TypeCallbackFunction): this;
|
|
77
|
+
reload(callback: TypeCallbackFunction): this;
|
|
78
|
+
resetMaxAge(): this;
|
|
79
|
+
save(callback?: TypeCallbackFunction): this;
|
|
80
|
+
touch(): this;
|
|
81
|
+
}
|
|
82
|
+
|
|
61
83
|
declare enum MetadataKeys {
|
|
62
84
|
EXTENDS = "__extends__",
|
|
63
85
|
MIDDLEWARE = "__middleware__",
|
|
@@ -69,14 +91,15 @@ declare enum MetadataKeys {
|
|
|
69
91
|
declare class Application extends EventEmitter {
|
|
70
92
|
private readonly _app;
|
|
71
93
|
private _server?;
|
|
72
|
-
private _options;
|
|
73
|
-
private _default;
|
|
94
|
+
private readonly _options;
|
|
95
|
+
private readonly _default;
|
|
74
96
|
private readonly _router;
|
|
75
97
|
private readonly _controllers;
|
|
76
98
|
get instance(): Express;
|
|
77
99
|
get router(): Router;
|
|
78
100
|
get server(): http.Server | https.Server | undefined;
|
|
79
101
|
constructor(controllers: Array<object>, options?: IOptions);
|
|
102
|
+
init(): void;
|
|
80
103
|
error(error: any, source?: string): void;
|
|
81
104
|
log(message: string, source?: string): void;
|
|
82
105
|
private _args;
|
|
@@ -119,6 +142,7 @@ declare const Request: (key?: string) => ParameterDecorator;
|
|
|
119
142
|
declare const Req: (key?: string) => ParameterDecorator;
|
|
120
143
|
declare const Response: (key?: string) => ParameterDecorator;
|
|
121
144
|
declare const Res: (key?: string) => ParameterDecorator;
|
|
145
|
+
declare const Session: (key?: string) => ParameterDecorator;
|
|
122
146
|
|
|
123
147
|
declare const Metadata: <T = any>(metadataKey: MetadataKeys, target: any, metadataValue: T) => T;
|
|
124
148
|
|
|
@@ -199,4 +223,4 @@ declare class Status {
|
|
|
199
223
|
static readonly NETWORK_CONNECTION_TIMEOUT_ERROR = 599;
|
|
200
224
|
}
|
|
201
225
|
|
|
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 };
|
|
226
|
+
export { All, App, Application, Argument, Body, Controller, Cookies, Delete, Extends, Get, Head, Headers, type IArgs, type IMiddlewares, type IOptions, type IParameter, type IRouter, type IStore, Metadata, MetadataKeys, Methods, Middleware, Next, Options, Params, Patch, Post, Put, Query, Req, Request, Res, Response, type ResponseJson, Responses, Session, 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.8
|
|
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 r,isFunction as
|
|
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)),q=w((({req:t,key:e})=>G(t.params,e))),B=w((({req:t,key:e})=>G(t.query,e))),V=w((({req:t,key:e})=>G(t,e))),X=V,z=w((({res:t})=>t)),Z=z,J=w((({req:t})=>t.session));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,q as Params,M as Patch,g as Post,x as Put,B as Query,X as Req,V as Request,Z as Res,z as Response,S as Responses,J as Session,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.
|
|
3
|
+
"version": "1.0.8",
|
|
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.
|
|
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": "^25.0.
|
|
45
|
-
"@rollup/plugin-terser": "^0.4.
|
|
46
|
-
"@rollup/plugin-typescript": "^11.1.
|
|
47
|
-
"@types/
|
|
48
|
-
"@types/
|
|
49
|
-
"@types/
|
|
50
|
-
"@types/
|
|
51
|
-
"@types/
|
|
52
|
-
"@
|
|
53
|
-
"@
|
|
54
|
-
"eslint": "^
|
|
55
|
-
"
|
|
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.10",
|
|
56
|
+
"@typescript-eslint/eslint-plugin": "^6.9.1",
|
|
57
|
+
"@typescript-eslint/parser": "^6.9.1",
|
|
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
62
|
"tslib": "^2.6.2"
|
|
59
63
|
}
|
|
60
|
-
}
|
|
64
|
+
}
|