@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 +2 -2
- package/dist/index.d.ts +61 -41
- 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.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("
|
|
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.
|
|
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 {
|
|
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
|
-
|
|
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.
|
|
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,
|
|
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.
|
|
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.
|
|
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": "^
|
|
45
|
-
"@rollup/plugin-terser": "^0.4.
|
|
46
|
-
"@rollup/plugin-typescript": "^11.
|
|
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.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.
|
|
62
|
+
"tslib": "^2.6.2"
|
|
59
63
|
}
|
|
60
64
|
}
|