express-ext 0.1.10 → 0.1.11

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.
@@ -0,0 +1,51 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ var LogController = (function () {
4
+ function LogController(logger, mp) {
5
+ this.logger = logger;
6
+ this.map = mp;
7
+ this.config = this.config.bind(this);
8
+ }
9
+ LogController.prototype.config = function (req, res) {
10
+ var obj = req.body;
11
+ if (!obj || obj === '') {
12
+ return res.status(400).end('The request body cannot be empty');
13
+ }
14
+ if (!this.logger || !this.map) {
15
+ return res.status(503).end('Logger is not available');
16
+ }
17
+ if (!this.map) {
18
+ return res.status(503).end('Map is not available');
19
+ }
20
+ var changed = false;
21
+ if (obj.level && typeof obj.level === 'string' && obj.level.length > 0) {
22
+ var lv = this.map[obj.level.toUpperCase()];
23
+ if (lv !== undefined) {
24
+ this.logger.level = lv;
25
+ changed = true;
26
+ }
27
+ }
28
+ if (obj.map) {
29
+ if (obj.map.level && typeof obj.map.level === 'string' && obj.map.level.length > 0) {
30
+ this.logger.map.level = obj.map.level;
31
+ changed = true;
32
+ }
33
+ if (obj.map.time && typeof obj.map.time === 'string' && obj.map.time.length > 0) {
34
+ this.logger.map.time = obj.map.time;
35
+ changed = true;
36
+ }
37
+ if (obj.map.msg && typeof obj.map.msg === 'string' && obj.map.msg.length > 0) {
38
+ this.logger.map.msg = obj.map.msg;
39
+ changed = true;
40
+ }
41
+ }
42
+ if (changed) {
43
+ return res.status(200).end('true');
44
+ }
45
+ else {
46
+ return res.status(204).end('false');
47
+ }
48
+ };
49
+ return LogController;
50
+ }());
51
+ exports.LogController = LogController;
package/lib/index.js CHANGED
@@ -1,2 +1,2 @@
1
1
  "use strict";function __export(m){for(var p in m)if(!exports.hasOwnProperty(p))exports[p]=m[p]}
2
- Object.defineProperty(exports,"__esModule",{value:!0});var GenericController_1=require("./GenericController");exports.GenericHandler=GenericController_1.GenericController;var GenericSearchController_1=require("./GenericSearchController");exports.GenericSearchHandler=GenericSearchController_1.GenericSearchController;var HealthController_1=require("./HealthController");exports.HealthHandler=HealthController_1.HealthController;var LoadController_1=require("./LoadController");exports.LoadHandler=LoadController_1.LoadController;exports.ViewHandler=LoadController_1.LoadController;exports.ViewController=LoadController_1.LoadController;var LoadSearchController_1=require("./LoadSearchController");exports.LoadSearchHandler=LoadSearchController_1.LoadSearchController;var LowCodeController_1=require("./LowCodeController");exports.LowCodeHandler=LowCodeController_1.LowCodeController;exports.Handler=LowCodeController_1.LowCodeController;exports.Controller=LowCodeController_1.LowCodeController;var SearchController_1=require("./SearchController");exports.SearchHandler=SearchController_1.SearchController;__export(require("./health"));__export(require("./HealthController"));__export(require("./http"));__export(require("./view"));__export(require("./LoadController"));__export(require("./search_func"));__export(require("./search"));__export(require("./SearchController"));__export(require("./LoadSearchController"));__export(require("./resources"));__export(require("./edit"));__export(require("./GenericController"));__export(require("./GenericSearchController"));__export(require("./LowCodeController"))
2
+ Object.defineProperty(exports,"__esModule",{value:!0});var GenericController_1=require("./GenericController");exports.GenericHandler=GenericController_1.GenericController;var GenericSearchController_1=require("./GenericSearchController");exports.GenericSearchHandler=GenericSearchController_1.GenericSearchController;var HealthController_1=require("./HealthController");exports.HealthHandler=HealthController_1.HealthController;var LoadController_1=require("./LoadController");exports.LoadHandler=LoadController_1.LoadController;exports.ViewHandler=LoadController_1.LoadController;exports.ViewController=LoadController_1.LoadController;var LoadSearchController_1=require("./LoadSearchController");exports.LoadSearchHandler=LoadSearchController_1.LoadSearchController;var LowCodeController_1=require("./LowCodeController");exports.LowCodeHandler=LowCodeController_1.LowCodeController;exports.Handler=LowCodeController_1.LowCodeController;exports.Controller=LowCodeController_1.LowCodeController;var SearchController_1=require("./SearchController");exports.SearchHandler=SearchController_1.SearchController;var LogController_1=require("./LogController");exports.LogHandler=LogController_1.LogController;__export(require("./health"));__export(require("./HealthController"));__export(require("./LogController"));__export(require("./http"));__export(require("./view"));__export(require("./LoadController"));__export(require("./search_func"));__export(require("./search"));__export(require("./SearchController"));__export(require("./LoadSearchController"));__export(require("./resources"));__export(require("./edit"));__export(require("./GenericController"));__export(require("./GenericSearchController"));__export(require("./LowCodeController"))
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "express-ext",
3
- "version": "0.1.10",
3
+ "version": "0.1.11",
4
4
  "description": "express-ext",
5
5
  "main": "./lib/index.js",
6
6
  "types": "./src/index.ts",
@@ -17,7 +17,7 @@ export interface GenericService<T, ID, R> {
17
17
  export class GenericController<T, ID> extends LoadController<T, ID> {
18
18
  status: StatusConfig;
19
19
  metadata?: Attributes;
20
- constructor(log: (msg: any, ctx?: any) => void, public service: GenericService<T, ID, number|ResultInfo<T>>, status?: StatusConfig, public validate?: (obj: T, patch?: boolean) => Promise<ErrorMessage[]>) {
20
+ constructor(log: (msg: string) => void, public service: GenericService<T, ID, number|ResultInfo<T>>, status?: StatusConfig, public validate?: (obj: T, patch?: boolean) => Promise<ErrorMessage[]>) {
21
21
  super(log, service);
22
22
  this.status = initializeStatus(status);
23
23
  if (service.metadata) {
@@ -67,7 +67,7 @@ export class GenericController<T, ID> extends LoadController<T, ID> {
67
67
  }
68
68
  }
69
69
  }
70
- export function validateAndCreate<T>(req: Request, res: Response, status: StatusConfig, save: (obj: T, ctx?: any) => Promise<number|ResultInfo<T>>, log: (msg: any, ctx?: any) => void, validate?: (obj: T, patch?: boolean) => Promise<ErrorMessage[]>): void {
70
+ export function validateAndCreate<T>(req: Request, res: Response, status: StatusConfig, save: (obj: T, ctx?: any) => Promise<number|ResultInfo<T>>, log: (msg: string) => void, validate?: (obj: T, patch?: boolean) => Promise<ErrorMessage[]>): void {
71
71
  const obj = req.body;
72
72
  if (!obj || obj === '') {
73
73
  return res.status(400).end('The request body cannot be empty.');
@@ -85,7 +85,7 @@ export function validateAndCreate<T>(req: Request, res: Response, status: Status
85
85
  create(res, status, obj, save, log);
86
86
  }
87
87
  }
88
- export function validateAndUpdate<T>(res: Response, status: StatusConfig, obj: T, isPatch: boolean, save: (obj: T, ctx?: any) => Promise<number|ResultInfo<T>>, log: (msg: any, ctx?: any) => void, validate?: (obj: T, patch?: boolean) => Promise<ErrorMessage[]>): void {
88
+ export function validateAndUpdate<T>(res: Response, status: StatusConfig, obj: T, isPatch: boolean, save: (obj: T, ctx?: any) => Promise<number|ResultInfo<T>>, log: (msg: string) => void, validate?: (obj: T, patch?: boolean) => Promise<ErrorMessage[]>): void {
89
89
  if (validate) {
90
90
  validate(obj, isPatch).then(errors => {
91
91
  if (errors && errors.length > 0) {
@@ -15,7 +15,7 @@ export class GenericSearchController<T, ID, S extends Filter> extends GenericCon
15
15
  numbers?: string[];
16
16
  fields?: string;
17
17
  excluding?: string;
18
- constructor(log: (msg: any, ctx?: any) => void, public find: (s: S, limit?: number, skip?: number|string, fields?: string[]) => Promise<SearchResult<T>>, service: GenericService<T, ID, number|ResultInfo<T>>, config?: Config, validate?: (obj: T, patch?: boolean) => Promise<ErrorMessage[]>, dates?: string[], numbers?: string[]) {
18
+ constructor(log: (msg: string) => void, public find: (s: S, limit?: number, skip?: number|string, fields?: string[]) => Promise<SearchResult<T>>, service: GenericService<T, ID, number|ResultInfo<T>>, config?: Config, validate?: (obj: T, patch?: boolean) => Promise<ErrorMessage[]>, dates?: string[], numbers?: string[]) {
19
19
  super(log, service, config, validate);
20
20
  this.search = this.search.bind(this);
21
21
  this.config = initializeConfig(config);
@@ -39,7 +39,7 @@ function getKeysFunc<T, ID>(viewService: ViewService<T, ID> | ((id: ID, ctx?: an
39
39
  export class LoadController<T, ID> {
40
40
  protected keys?: Attribute[];
41
41
  protected view: (id: ID, ctx?: any) => Promise<T|null>;
42
- constructor(protected log: (msg: any, ctx?: any) => void, viewService: ViewService<T, ID> | ((id: ID, ctx?: any) => Promise<T|null>), keys?: Attributes|Attribute[]|string[]) {
42
+ constructor(protected log: (msg: string) => void, viewService: ViewService<T, ID> | ((id: ID, ctx?: any) => Promise<T|null>), keys?: Attributes|Attribute[]|string[]) {
43
43
  this.load = this.load.bind(this);
44
44
  this.view = getViewFunc(viewService);
45
45
  this.keys = getKeysFunc(viewService, keys);
@@ -12,7 +12,7 @@ export class LoadSearchController<T, ID, S extends Filter> extends LoadControlle
12
12
  numbers?: string[];
13
13
  fields?: string;
14
14
  excluding?: string;
15
- constructor(log: (msg: any, ctx?: any) => void, public find: (s: S, limit?: number, skip?: number|string, fields?: string[]) => Promise<SearchResult<T>>, viewService: ViewService<T, ID> | ((id: ID, ctx?: any) => Promise<T>), keys?: Attributes|Attribute[]|string[], config?: SearchConfig|boolean, dates?: string[], numbers?: string[]) {
15
+ constructor(log: (msg: string) => void, public find: (s: S, limit?: number, skip?: number|string, fields?: string[]) => Promise<SearchResult<T>>, viewService: ViewService<T, ID> | ((id: ID, ctx?: any) => Promise<T>), keys?: Attributes|Attribute[]|string[], config?: SearchConfig|boolean, dates?: string[], numbers?: string[]) {
16
16
  super(log, viewService, keys);
17
17
  this.search = this.search.bind(this);
18
18
  if (config) {
@@ -0,0 +1,70 @@
1
+ import {Request, Response} from 'express';
2
+
3
+ export interface NumberMap {
4
+ [key: string]: number;
5
+ }
6
+ export interface LogConfig {
7
+ level?: string;
8
+ map?: LogMapConfig;
9
+ }
10
+ export interface LogMapConfig {
11
+ time?: string;
12
+ level?: string;
13
+ msg?: string;
14
+ }
15
+ export interface LogMap {
16
+ time: string;
17
+ level: string;
18
+ msg: string;
19
+ }
20
+ export interface Logger {
21
+ level: number;
22
+ map: LogMap;
23
+ }
24
+
25
+ export class LogController {
26
+ map?: NumberMap;
27
+ constructor(public logger: Logger, mp?: NumberMap) {
28
+ this.map = mp;
29
+ this.config = this.config.bind(this);
30
+ }
31
+ config(req: Request, res: Response) {
32
+ const obj: LogConfig = req.body;
33
+ if (!obj || obj === '') {
34
+ return res.status(400).end('The request body cannot be empty');
35
+ }
36
+ if (!this.logger || !this.map) {
37
+ return res.status(503).end('Logger is not available');
38
+ }
39
+ if (!this.map) {
40
+ return res.status(503).end('Map is not available');
41
+ }
42
+ let changed = false;
43
+ if (obj.level && typeof obj.level === 'string' && obj.level.length > 0) {
44
+ const lv = this.map[obj.level.toUpperCase()];
45
+ if (lv !== undefined) {
46
+ this.logger.level = lv;
47
+ changed = true;
48
+ }
49
+ }
50
+ if (obj.map) {
51
+ if (obj.map.level && typeof obj.map.level === 'string' && obj.map.level.length > 0) {
52
+ this.logger.map.level = obj.map.level;
53
+ changed = true;
54
+ }
55
+ if (obj.map.time && typeof obj.map.time === 'string' && obj.map.time.length > 0) {
56
+ this.logger.map.time = obj.map.time;
57
+ changed = true;
58
+ }
59
+ if (obj.map.msg && typeof obj.map.msg === 'string' && obj.map.msg.length > 0) {
60
+ this.logger.map.msg = obj.map.msg;
61
+ changed = true;
62
+ }
63
+ }
64
+ if (changed) {
65
+ return res.status(200).end('true');
66
+ } else {
67
+ return res.status(204).end('false');
68
+ }
69
+ }
70
+ }
@@ -18,7 +18,7 @@ export class LowCodeController<T, ID, S extends Filter> extends GenericControlle
18
18
  numbers?: string[];
19
19
  fields?: string;
20
20
  excluding?: string;
21
- constructor(log: (msg: any, ctx?: any) => void, public lowCodeService: Service<T, ID, number|ResultInfo<T>, S>, config?: LowCodeConfig, validate?: (obj: T, patch?: boolean) => Promise<ErrorMessage[]>, dates?: string[], numbers?: string[]) {
21
+ constructor(log: (msg: string) => void, public lowCodeService: Service<T, ID, number|ResultInfo<T>, S>, config?: LowCodeConfig, validate?: (obj: T, patch?: boolean) => Promise<ErrorMessage[]>, dates?: string[], numbers?: string[]) {
22
22
  super(log, lowCodeService, config, validate);
23
23
  this.search = this.search.bind(this);
24
24
  this.config = initializeConfig(config);
@@ -7,7 +7,7 @@ export class SearchController<T, S extends Filter> {
7
7
  csv?: boolean;
8
8
  fields?: string;
9
9
  excluding?: string;
10
- constructor(protected log: (msg: any, ctx?: any) => void, public find: (s: S, limit?: number, skip?: number|string, fields?: string[]) => Promise<SearchResult<T>>, config?: SearchConfig|boolean, public dates?: string[], public numbers?: string[]) {
10
+ constructor(protected log: (msg: string) => void, public find: (s: S, limit?: number, skip?: number|string, fields?: string[]) => Promise<SearchResult<T>>, config?: SearchConfig|boolean, public dates?: string[], public numbers?: string[]) {
11
11
  this.search = this.search.bind(this);
12
12
  if (config) {
13
13
  if (typeof config === 'boolean') {
package/src/http.ts CHANGED
@@ -1,7 +1,7 @@
1
1
  import {Request, Response} from 'express';
2
2
  import {Attribute} from './metadata';
3
3
 
4
- export function handleError(err: any, res: Response, log?: (msg: any, ctx?: any) => void) {
4
+ export function handleError(err: any, res: Response, log?: (msg: string) => void) {
5
5
  if (log) {
6
6
  log(toString(err));
7
7
  res.status(500).end('Internal Server Error');
package/src/index.ts CHANGED
@@ -6,8 +6,10 @@ import {LoadSearchController} from './LoadSearchController';
6
6
  import {LowCodeController} from './LowCodeController';
7
7
  import {Service} from './LowCodeController';
8
8
  import {SearchController} from './SearchController';
9
+ import {LogController} from './LogController';
9
10
 
10
11
  export {HealthController as HealthHandler};
12
+ export {LogController as LogHandler};
11
13
  export {LoadController as LoadHandler};
12
14
  export {LoadController as ViewHandler};
13
15
  export {LoadController as ViewController};
@@ -23,6 +25,7 @@ export {Service as LowCodeService};
23
25
 
24
26
  export * from './health';
25
27
  export * from './HealthController';
28
+ export * from './LogController';
26
29
  export * from './http';
27
30
  export * from './metadata';
28
31
  export * from './view';