@teambit/express 0.0.689 → 0.0.690

Sign up to get free protection for your applications and to get access to all the features.
@@ -4,23 +4,18 @@ Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
6
  exports.ExpressAspect = void 0;
7
-
8
7
  function _harmony() {
9
8
  const data = require("@teambit/harmony");
10
-
11
9
  _harmony = function () {
12
10
  return data;
13
11
  };
14
-
15
12
  return data;
16
13
  }
17
-
18
14
  const ExpressAspect = _harmony().Aspect.create({
19
15
  id: 'teambit.harmony/express',
20
16
  dependencies: [],
21
17
  defaultConfig: {}
22
18
  });
23
-
24
19
  exports.ExpressAspect = ExpressAspect;
25
20
 
26
21
  //# sourceMappingURL=express.aspect.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["ExpressAspect","Aspect","create","id","dependencies","defaultConfig"],"sources":["express.aspect.ts"],"sourcesContent":["import { Aspect } from '@teambit/harmony';\n\nexport const ExpressAspect = Aspect.create({\n id: 'teambit.harmony/express',\n dependencies: [],\n defaultConfig: {},\n});\n"],"mappings":";;;;;;;AAAA;EAAA;;EAAA;IAAA;EAAA;;EAAA;AAAA;;AAEO,MAAMA,aAAa,GAAGC,iBAAA,CAAOC,MAAP,CAAc;EACzCC,EAAE,EAAE,yBADqC;EAEzCC,YAAY,EAAE,EAF2B;EAGzCC,aAAa,EAAE;AAH0B,CAAd,CAAtB"}
1
+ {"version":3,"names":["ExpressAspect","Aspect","create","id","dependencies","defaultConfig"],"sources":["express.aspect.ts"],"sourcesContent":["import { Aspect } from '@teambit/harmony';\n\nexport const ExpressAspect = Aspect.create({\n id: 'teambit.harmony/express',\n dependencies: [],\n defaultConfig: {},\n});\n"],"mappings":";;;;;;AAAA;EAAA;EAAA;IAAA;EAAA;EAAA;AAAA;AAEO,MAAMA,aAAa,GAAGC,iBAAM,CAACC,MAAM,CAAC;EACzCC,EAAE,EAAE,yBAAyB;EAC7BC,YAAY,EAAE,EAAE;EAChBC,aAAa,EAAE,CAAC;AAClB,CAAC,CAAC;AAAC"}
@@ -1,22 +1,17 @@
1
1
  "use strict";
2
2
 
3
3
  var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
-
5
4
  Object.defineProperty(exports, "__esModule", {
6
5
  value: true
7
6
  });
8
7
  exports.Logo = void 0;
9
-
10
8
  function _react() {
11
9
  const data = _interopRequireDefault(require("react"));
12
-
13
10
  _react = function () {
14
11
  return data;
15
12
  };
16
-
17
13
  return data;
18
14
  }
19
-
20
15
  const Logo = () => /*#__PURE__*/_react().default.createElement("div", {
21
16
  style: {
22
17
  height: '100%',
@@ -29,7 +24,6 @@ const Logo = () => /*#__PURE__*/_react().default.createElement("div", {
29
24
  },
30
25
  src: "https://static.bit.dev/extensions-icons/express.svg"
31
26
  }));
32
-
33
27
  exports.Logo = Logo;
34
28
 
35
29
  //# sourceMappingURL=express.composition.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["Logo","height","display","justifyContent","width"],"sources":["express.composition.tsx"],"sourcesContent":["import React from 'react';\n\nexport const Logo = () => (\n <div style={{ height: '100%', display: 'flex', justifyContent: 'center' }}>\n <img style={{ width: 70 }} src=\"https://static.bit.dev/extensions-icons/express.svg\" />\n </div>\n);\n"],"mappings":";;;;;;;;;AAAA;EAAA;;EAAA;IAAA;EAAA;;EAAA;AAAA;;AAEO,MAAMA,IAAI,GAAG,mBAClB;EAAK,KAAK,EAAE;IAAEC,MAAM,EAAE,MAAV;IAAkBC,OAAO,EAAE,MAA3B;IAAmCC,cAAc,EAAE;EAAnD;AAAZ,gBACE;EAAK,KAAK,EAAE;IAAEC,KAAK,EAAE;EAAT,CAAZ;EAA2B,GAAG,EAAC;AAA/B,EADF,CADK"}
1
+ {"version":3,"names":["Logo","height","display","justifyContent","width"],"sources":["express.composition.tsx"],"sourcesContent":["import React from 'react';\n\nexport const Logo = () => (\n <div style={{ height: '100%', display: 'flex', justifyContent: 'center' }}>\n <img style={{ width: 70 }} src=\"https://static.bit.dev/extensions-icons/express.svg\" />\n </div>\n);\n"],"mappings":";;;;;;;AAAA;EAAA;EAAA;IAAA;EAAA;EAAA;AAAA;AAEO,MAAMA,IAAI,GAAG,mBAClB;EAAK,KAAK,EAAE;IAAEC,MAAM,EAAE,MAAM;IAAEC,OAAO,EAAE,MAAM;IAAEC,cAAc,EAAE;EAAS;AAAE,gBACxE;EAAK,KAAK,EAAE;IAAEC,KAAK,EAAE;EAAG,CAAE;EAAC,GAAG,EAAC;AAAqD,EAAG,CAE1F;AAAC"}
@@ -1,120 +1,84 @@
1
1
  "use strict";
2
2
 
3
3
  var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
-
5
4
  require("core-js/modules/es.array.flat-map.js");
6
-
7
5
  require("core-js/modules/es.array.iterator.js");
8
-
9
6
  require("core-js/modules/es.array.unscopables.flat-map.js");
10
-
11
7
  require("core-js/modules/es.promise.js");
12
-
13
8
  Object.defineProperty(exports, "__esModule", {
14
9
  value: true
15
10
  });
16
11
  exports.ExpressMain = void 0;
17
-
18
12
  function _defineProperty2() {
19
13
  const data = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
20
-
21
14
  _defineProperty2 = function () {
22
15
  return data;
23
16
  };
24
-
25
17
  return data;
26
18
  }
27
-
28
19
  function _cli() {
29
20
  const data = require("@teambit/cli");
30
-
31
21
  _cli = function () {
32
22
  return data;
33
23
  };
34
-
35
24
  return data;
36
25
  }
37
-
38
26
  function _harmony() {
39
27
  const data = require("@teambit/harmony");
40
-
41
28
  _harmony = function () {
42
29
  return data;
43
30
  };
44
-
45
31
  return data;
46
32
  }
47
-
48
33
  function _logger() {
49
34
  const data = require("@teambit/logger");
50
-
51
35
  _logger = function () {
52
36
  return data;
53
37
  };
54
-
55
38
  return data;
56
39
  }
57
-
58
40
  function _express() {
59
41
  const data = _interopRequireDefault(require("express"));
60
-
61
42
  _express = function () {
62
43
  return data;
63
44
  };
64
-
65
45
  return data;
66
46
  }
67
-
68
47
  function _lodash() {
69
48
  const data = require("lodash");
70
-
71
49
  _lodash = function () {
72
50
  return data;
73
51
  };
74
-
75
52
  return data;
76
53
  }
77
-
78
54
  function _bodyParser() {
79
55
  const data = _interopRequireDefault(require("body-parser"));
80
-
81
56
  _bodyParser = function () {
82
57
  return data;
83
58
  };
84
-
85
59
  return data;
86
60
  }
87
-
88
61
  function _express2() {
89
62
  const data = require("./express.aspect");
90
-
91
63
  _express2 = function () {
92
64
  return data;
93
65
  };
94
-
95
66
  return data;
96
67
  }
97
-
98
68
  function _middlewares() {
99
69
  const data = require("./middlewares");
100
-
101
70
  _middlewares = function () {
102
71
  return data;
103
72
  };
104
-
105
73
  return data;
106
74
  }
107
-
108
75
  function _types() {
109
76
  const data = require("./types");
110
-
111
77
  _types = function () {
112
78
  return data;
113
79
  };
114
-
115
80
  return data;
116
81
  }
117
-
118
82
  class ExpressMain {
119
83
  constructor(
120
84
  /**
@@ -134,36 +98,32 @@ class ExpressMain {
134
98
  this.logger = logger;
135
99
  this.middlewareSlot = middlewareSlot;
136
100
  }
101
+
137
102
  /**
138
103
  * start a express server.
139
104
  */
140
-
141
-
142
105
  async listen(port) {
143
106
  const serverPort = port || this.config.port;
144
107
  const app = this.createApp();
145
108
  app.listen(serverPort);
146
109
  }
110
+
147
111
  /**
148
112
  * register a new express routes.
149
113
  * route will be added as `/api/${route}`
150
114
  */
151
-
152
-
153
115
  register(routes) {
154
116
  this.moduleSlot.register(routes);
155
117
  return this;
156
118
  }
119
+
157
120
  /**
158
121
  * register a new middleware into express.
159
122
  */
160
-
161
-
162
123
  registerMiddleware(middlewares) {
163
124
  this.middlewareSlot.register(middlewares);
164
125
  return this;
165
126
  }
166
-
167
127
  createRootRoutes() {
168
128
  // TODO: @guy refactor health to service aspect.
169
129
  return [{
@@ -174,7 +134,6 @@ class ExpressMain {
174
134
  middlewares: [async (req, res) => res.send('ok')]
175
135
  }];
176
136
  }
177
-
178
137
  createApp(expressApp, options) {
179
138
  const internalRoutes = this.createRootRoutes();
180
139
  const routes = this.createRoutes();
@@ -193,14 +152,13 @@ class ExpressMain {
193
152
  path,
194
153
  middlewares,
195
154
  disableNamespace
196
- } = routeInfo; // TODO: @guy make sure to support single middleware here.
197
-
155
+ } = routeInfo;
156
+ // TODO: @guy make sure to support single middleware here.
198
157
  const namespace = disableNamespace ? '' : `/${this.config.namespace}`;
199
158
  app[method](`${namespace}${path}`, this.catchErrorsMiddlewares(middlewares));
200
159
  });
201
160
  return app;
202
161
  }
203
-
204
162
  createRoutes() {
205
163
  const routesSlots = this.moduleSlot.toArray();
206
164
  const routeEntries = routesSlots.map(([, routes]) => {
@@ -216,13 +174,10 @@ class ExpressMain {
216
174
  });
217
175
  return (0, _lodash().flatten)(routeEntries);
218
176
  }
219
-
220
177
  verbValidation(route) {
221
178
  return async (req, res, next) => {
222
179
  if (!route.verb) return next();
223
-
224
180
  const verb = req.headers['x-verb'] || _types().Verb.READ;
225
-
226
181
  if (verb !== route.verb) {
227
182
  res.status(403);
228
183
  return res.jsonp({
@@ -230,15 +185,12 @@ class ExpressMain {
230
185
  error: 'forbidden'
231
186
  });
232
187
  }
233
-
234
188
  return next();
235
189
  };
236
190
  }
237
-
238
191
  catchErrorsMiddlewares(middlewares) {
239
192
  return middlewares.map(middleware => (0, _middlewares().catchErrors)(middleware));
240
193
  }
241
-
242
194
  bodyParser(app) {
243
195
  app.use(_bodyParser().default.json({
244
196
  limit: '5000mb'
@@ -248,14 +200,11 @@ class ExpressMain {
248
200
  limit: '5000mb'
249
201
  }));
250
202
  }
251
-
252
203
  static async provider([loggerFactory], config, [routeSlot, middlewareSlot]) {
253
204
  const logger = loggerFactory.createLogger(_express2().ExpressAspect.id);
254
205
  return new ExpressMain(config, routeSlot, logger, middlewareSlot);
255
206
  }
256
-
257
207
  }
258
-
259
208
  exports.ExpressMain = ExpressMain;
260
209
  (0, _defineProperty2().default)(ExpressMain, "runtime", _cli().MainRuntime);
261
210
  (0, _defineProperty2().default)(ExpressMain, "slots", [_harmony().Slot.withType(), _harmony().Slot.withType()]);
@@ -265,7 +214,6 @@ exports.ExpressMain = ExpressMain;
265
214
  namespace: 'api',
266
215
  loggerIgnorePath: ['/api/_health']
267
216
  });
268
-
269
217
  _express2().ExpressAspect.addRuntime(ExpressMain);
270
218
 
271
219
  //# sourceMappingURL=express.main.runtime.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["ExpressMain","constructor","config","moduleSlot","logger","middlewareSlot","listen","port","serverPort","app","createApp","register","routes","registerMiddleware","middlewares","createRootRoutes","namespace","ExpressAspect","id","method","path","disableNamespace","req","res","send","expressApp","options","internalRoutes","createRoutes","allRoutes","concat","express","use","next","loggerIgnorePath","includes","url","debug","headers","disableBodyParser","bodyParser","toArray","flatMap","middlewareManifest","middleware","forEach","routeInfo","catchErrorsMiddlewares","routesSlots","routeEntries","map","route","flatten","verbValidation","lowerCase","verb","Verb","READ","status","jsonp","message","error","catchErrors","json","limit","raw","type","provider","loggerFactory","routeSlot","createLogger","MainRuntime","Slot","withType","LoggerAspect","addRuntime"],"sources":["express.main.runtime.ts"],"sourcesContent":["import { MainRuntime } from '@teambit/cli';\nimport { Slot, SlotRegistry } from '@teambit/harmony';\nimport { Logger, LoggerAspect, LoggerMain } from '@teambit/logger';\nimport express, { Express } from 'express';\nimport { concat, flatten, lowerCase } from 'lodash';\nimport bodyParser from 'body-parser';\nimport { ExpressAspect } from './express.aspect';\nimport { catchErrors } from './middlewares';\nimport { Middleware, Request, Response, Route, Verb } from './types';\nimport { MiddlewareManifest } from './middleware-manifest';\n\nexport type ExpressConfig = {\n port: number;\n namespace: string;\n loggerIgnorePath: string[];\n};\n\nexport type MiddlewareSlot = SlotRegistry<MiddlewareManifest[]>;\n\nexport type RouteSlot = SlotRegistry<Route[]>;\n\nexport class ExpressMain {\n static runtime = MainRuntime;\n\n constructor(\n /**\n * extension config\n */\n readonly config: ExpressConfig,\n\n /**\n * slot for registering graphql modules\n */\n private moduleSlot: RouteSlot,\n\n /**\n * logger extension.\n */\n readonly logger: Logger,\n\n readonly middlewareSlot: MiddlewareSlot\n ) {}\n\n /**\n * start a express server.\n */\n async listen(port?: number) {\n const serverPort = port || this.config.port;\n const app = this.createApp();\n app.listen(serverPort);\n }\n\n /**\n * register a new express routes.\n * route will be added as `/api/${route}`\n */\n register(routes: Route[]) {\n this.moduleSlot.register(routes);\n return this;\n }\n\n /**\n * register a new middleware into express.\n */\n registerMiddleware(middlewares: MiddlewareManifest[]) {\n this.middlewareSlot.register(middlewares);\n return this;\n }\n\n private createRootRoutes() {\n // TODO: @guy refactor health to service aspect.\n return [\n {\n namespace: ExpressAspect.id,\n method: 'get',\n path: '/_health',\n disableNamespace: false,\n middlewares: [async (req: Request, res: Response) => res.send('ok')],\n },\n ];\n }\n\n createApp(expressApp?: Express, options?: { disableBodyParser: true }): Express {\n const internalRoutes = this.createRootRoutes();\n const routes = this.createRoutes();\n const allRoutes = concat(routes, internalRoutes);\n const app = expressApp || express();\n app.use((req, res, next) => {\n if (this.config.loggerIgnorePath.includes(req.url)) return next();\n this.logger.debug(`express got a request to a URL: ${req.url}', headers:`, req.headers);\n return next();\n });\n if (!options?.disableBodyParser) this.bodyParser(app);\n\n this.middlewareSlot\n .toArray()\n .flatMap(([, middlewares]) =>\n middlewares.flatMap((middlewareManifest) => app.use(middlewareManifest.middleware))\n );\n allRoutes.forEach((routeInfo) => {\n const { method, path, middlewares, disableNamespace } = routeInfo;\n // TODO: @guy make sure to support single middleware here.\n const namespace = disableNamespace ? '' : `/${this.config.namespace}`;\n app[method](`${namespace}${path}`, this.catchErrorsMiddlewares(middlewares));\n });\n\n return app;\n }\n\n private createRoutes() {\n const routesSlots = this.moduleSlot.toArray();\n const routeEntries = routesSlots.map(([, routes]) => {\n return routes.map((route) => {\n const middlewares = flatten([this.verbValidation(route), route.middlewares]);\n return {\n method: lowerCase(route.method),\n path: route.route,\n disableNamespace: route.disableNamespace,\n middlewares,\n };\n });\n });\n\n return flatten(routeEntries);\n }\n\n private verbValidation(route: Route): Middleware {\n return async (req: express.Request, res: express.Response, next: express.NextFunction) => {\n if (!route.verb) return next();\n const verb = req.headers['x-verb'] || Verb.READ;\n if (verb !== route.verb) {\n res.status(403);\n return res.jsonp({ message: 'You are not authorized', error: 'forbidden' });\n }\n return next();\n };\n }\n\n private catchErrorsMiddlewares(middlewares: Middleware[]) {\n return middlewares.map((middleware) => catchErrors(middleware));\n }\n\n private bodyParser(app: Express) {\n app.use(bodyParser.json({ limit: '5000mb' }));\n app.use(bodyParser.raw({ type: 'application/octet-stream', limit: '5000mb' }));\n }\n\n static slots = [Slot.withType<Route[]>(), Slot.withType<MiddlewareManifest[]>()];\n static dependencies = [LoggerAspect];\n\n static defaultConfig = {\n port: 4001,\n namespace: 'api',\n loggerIgnorePath: ['/api/_health'],\n };\n\n static async provider(\n [loggerFactory]: [LoggerMain],\n config: ExpressConfig,\n [routeSlot, middlewareSlot]: [RouteSlot, MiddlewareSlot]\n ) {\n const logger = loggerFactory.createLogger(ExpressAspect.id);\n return new ExpressMain(config, routeSlot, logger, middlewareSlot);\n }\n}\n\nExpressAspect.addRuntime(ExpressMain);\n"],"mappings":"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"}
1
+ {"version":3,"names":["ExpressMain","constructor","config","moduleSlot","logger","middlewareSlot","listen","port","serverPort","app","createApp","register","routes","registerMiddleware","middlewares","createRootRoutes","namespace","ExpressAspect","id","method","path","disableNamespace","req","res","send","expressApp","options","internalRoutes","createRoutes","allRoutes","concat","express","use","next","loggerIgnorePath","includes","url","debug","headers","disableBodyParser","bodyParser","toArray","flatMap","middlewareManifest","middleware","forEach","routeInfo","catchErrorsMiddlewares","routesSlots","routeEntries","map","route","flatten","verbValidation","lowerCase","verb","Verb","READ","status","jsonp","message","error","catchErrors","json","limit","raw","type","provider","loggerFactory","routeSlot","createLogger","MainRuntime","Slot","withType","LoggerAspect","addRuntime"],"sources":["express.main.runtime.ts"],"sourcesContent":["import { MainRuntime } from '@teambit/cli';\nimport { Slot, SlotRegistry } from '@teambit/harmony';\nimport { Logger, LoggerAspect, LoggerMain } from '@teambit/logger';\nimport express, { Express } from 'express';\nimport { concat, flatten, lowerCase } from 'lodash';\nimport bodyParser from 'body-parser';\nimport { ExpressAspect } from './express.aspect';\nimport { catchErrors } from './middlewares';\nimport { Middleware, Request, Response, Route, Verb } from './types';\nimport { MiddlewareManifest } from './middleware-manifest';\n\nexport type ExpressConfig = {\n port: number;\n namespace: string;\n loggerIgnorePath: string[];\n};\n\nexport type MiddlewareSlot = SlotRegistry<MiddlewareManifest[]>;\n\nexport type RouteSlot = SlotRegistry<Route[]>;\n\nexport class ExpressMain {\n static runtime = MainRuntime;\n\n constructor(\n /**\n * extension config\n */\n readonly config: ExpressConfig,\n\n /**\n * slot for registering graphql modules\n */\n private moduleSlot: RouteSlot,\n\n /**\n * logger extension.\n */\n readonly logger: Logger,\n\n readonly middlewareSlot: MiddlewareSlot\n ) {}\n\n /**\n * start a express server.\n */\n async listen(port?: number) {\n const serverPort = port || this.config.port;\n const app = this.createApp();\n app.listen(serverPort);\n }\n\n /**\n * register a new express routes.\n * route will be added as `/api/${route}`\n */\n register(routes: Route[]) {\n this.moduleSlot.register(routes);\n return this;\n }\n\n /**\n * register a new middleware into express.\n */\n registerMiddleware(middlewares: MiddlewareManifest[]) {\n this.middlewareSlot.register(middlewares);\n return this;\n }\n\n private createRootRoutes() {\n // TODO: @guy refactor health to service aspect.\n return [\n {\n namespace: ExpressAspect.id,\n method: 'get',\n path: '/_health',\n disableNamespace: false,\n middlewares: [async (req: Request, res: Response) => res.send('ok')],\n },\n ];\n }\n\n createApp(expressApp?: Express, options?: { disableBodyParser: true }): Express {\n const internalRoutes = this.createRootRoutes();\n const routes = this.createRoutes();\n const allRoutes = concat(routes, internalRoutes);\n const app = expressApp || express();\n app.use((req, res, next) => {\n if (this.config.loggerIgnorePath.includes(req.url)) return next();\n this.logger.debug(`express got a request to a URL: ${req.url}', headers:`, req.headers);\n return next();\n });\n if (!options?.disableBodyParser) this.bodyParser(app);\n\n this.middlewareSlot\n .toArray()\n .flatMap(([, middlewares]) =>\n middlewares.flatMap((middlewareManifest) => app.use(middlewareManifest.middleware))\n );\n allRoutes.forEach((routeInfo) => {\n const { method, path, middlewares, disableNamespace } = routeInfo;\n // TODO: @guy make sure to support single middleware here.\n const namespace = disableNamespace ? '' : `/${this.config.namespace}`;\n app[method](`${namespace}${path}`, this.catchErrorsMiddlewares(middlewares));\n });\n\n return app;\n }\n\n private createRoutes() {\n const routesSlots = this.moduleSlot.toArray();\n const routeEntries = routesSlots.map(([, routes]) => {\n return routes.map((route) => {\n const middlewares = flatten([this.verbValidation(route), route.middlewares]);\n return {\n method: lowerCase(route.method),\n path: route.route,\n disableNamespace: route.disableNamespace,\n middlewares,\n };\n });\n });\n\n return flatten(routeEntries);\n }\n\n private verbValidation(route: Route): Middleware {\n return async (req: express.Request, res: express.Response, next: express.NextFunction) => {\n if (!route.verb) return next();\n const verb = req.headers['x-verb'] || Verb.READ;\n if (verb !== route.verb) {\n res.status(403);\n return res.jsonp({ message: 'You are not authorized', error: 'forbidden' });\n }\n return next();\n };\n }\n\n private catchErrorsMiddlewares(middlewares: Middleware[]) {\n return middlewares.map((middleware) => catchErrors(middleware));\n }\n\n private bodyParser(app: Express) {\n app.use(bodyParser.json({ limit: '5000mb' }));\n app.use(bodyParser.raw({ type: 'application/octet-stream', limit: '5000mb' }));\n }\n\n static slots = [Slot.withType<Route[]>(), Slot.withType<MiddlewareManifest[]>()];\n static dependencies = [LoggerAspect];\n\n static defaultConfig = {\n port: 4001,\n namespace: 'api',\n loggerIgnorePath: ['/api/_health'],\n };\n\n static async provider(\n [loggerFactory]: [LoggerMain],\n config: ExpressConfig,\n [routeSlot, middlewareSlot]: [RouteSlot, MiddlewareSlot]\n ) {\n const logger = loggerFactory.createLogger(ExpressAspect.id);\n return new ExpressMain(config, routeSlot, logger, middlewareSlot);\n }\n}\n\nExpressAspect.addRuntime(ExpressMain);\n"],"mappings":"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"}
package/dist/index.js CHANGED
@@ -45,34 +45,25 @@ Object.defineProperty(exports, "Verb", {
45
45
  return _types().Verb;
46
46
  }
47
47
  });
48
-
49
48
  function _expressMain() {
50
49
  const data = require("./express.main.runtime");
51
-
52
50
  _expressMain = function () {
53
51
  return data;
54
52
  };
55
-
56
53
  return data;
57
54
  }
58
-
59
55
  function _types() {
60
56
  const data = require("./types");
61
-
62
57
  _types = function () {
63
58
  return data;
64
59
  };
65
-
66
60
  return data;
67
61
  }
68
-
69
62
  function _express() {
70
63
  const data = require("./express.aspect");
71
-
72
64
  _express = function () {
73
65
  return data;
74
66
  };
75
-
76
67
  return data;
77
68
  }
78
69
 
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"names":[],"sources":["index.ts"],"sourcesContent":["export { RouteSlot } from './express.main.runtime';\nexport { Route, Verb } from './types';\nexport { Request, Response, NextFunction } from './types';\nexport type { ExpressMain } from './express.main.runtime';\nexport { ExpressAspect } from './express.aspect';\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;EAAA;;EAAA;IAAA;EAAA;;EAAA;AAAA;;AACA;EAAA;;EAAA;IAAA;EAAA;;EAAA;AAAA;;AAGA;EAAA;;EAAA;IAAA;EAAA;;EAAA;AAAA"}
1
+ {"version":3,"names":[],"sources":["index.ts"],"sourcesContent":["export { RouteSlot } from './express.main.runtime';\nexport { Route, Verb } from './types';\nexport { Request, Response, NextFunction } from './types';\nexport type { ExpressMain } from './express.main.runtime';\nexport { ExpressAspect } from './express.aspect';\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;EAAA;EAAA;IAAA;EAAA;EAAA;AAAA;AACA;EAAA;EAAA;IAAA;EAAA;EAAA;AAAA;AAGA;EAAA;EAAA;IAAA;EAAA;EAAA;AAAA"}
@@ -1,34 +1,28 @@
1
1
  "use strict";
2
2
 
3
3
  var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
-
5
4
  Object.defineProperty(exports, "__esModule", {
6
5
  value: true
7
6
  });
8
7
  exports.catchErrors = void 0;
9
8
  exports.errorHandle = errorHandle;
10
-
11
9
  function _logger() {
12
10
  const data = _interopRequireDefault(require("@teambit/legacy/dist/logger/logger"));
13
-
14
11
  _logger = function () {
15
12
  return data;
16
13
  };
17
-
18
14
  return data;
19
15
  }
20
-
21
- const catchErrors = action => (req, res, next) => // TODO: @guy please take care of it
16
+ const catchErrors = action => (req, res, next) =>
17
+ // TODO: @guy please take care of it
22
18
  // eslint-disable-next-line promise/no-callback-in-promise
23
19
  action(req, res, next).catch(error => errorHandle(error, req, res, next));
24
-
25
20
  exports.catchErrors = catchErrors;
26
-
27
- function errorHandle(err, req, res, // TODO: Do not remove unused next, it's needed for express to catch errors!
21
+ function errorHandle(err, req, res,
22
+ // TODO: Do not remove unused next, it's needed for express to catch errors!
28
23
  // eslint-disable-next-line @typescript-eslint/no-unused-vars
29
24
  next) {
30
25
  _logger().default.error(`express.errorHandle, url ${req.url}, error:`, err);
31
-
32
26
  err.status = err.status || 500;
33
27
  res.status(err.status);
34
28
  return res.jsonp({
@@ -1 +1 @@
1
- {"version":3,"names":["catchErrors","action","req","res","next","catch","error","errorHandle","err","logger","url","status","jsonp","message"],"sources":["error.ts"],"sourcesContent":["import * as express from 'express';\nimport logger from '@teambit/legacy/dist/logger/logger';\n\ninterface ResponseError {\n status?: number;\n message?: string;\n}\n\nexport const catchErrors = (action: any) => (req: express.Request, res: express.Response, next: express.NextFunction) =>\n // TODO: @guy please take care of it\n // eslint-disable-next-line promise/no-callback-in-promise\n action(req, res, next).catch((error: ResponseError) => errorHandle(error, req, res, next));\n\nexport function errorHandle(\n err: ResponseError,\n req: express.Request,\n res: express.Response,\n // TODO: Do not remove unused next, it's needed for express to catch errors!\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n next: express.NextFunction\n) {\n logger.error(`express.errorHandle, url ${req.url}, error:`, err);\n err.status = err.status || 500;\n res.status(err.status);\n return res.jsonp({\n message: err.message,\n error: err,\n });\n}\n"],"mappings":";;;;;;;;;;AACA;EAAA;;EAAA;IAAA;EAAA;;EAAA;AAAA;;AAOO,MAAMA,WAAW,GAAIC,MAAD,IAAiB,CAACC,GAAD,EAAuBC,GAAvB,EAA8CC,IAA9C,KAC1C;AACA;AACAH,MAAM,CAACC,GAAD,EAAMC,GAAN,EAAWC,IAAX,CAAN,CAAuBC,KAAvB,CAA8BC,KAAD,IAA0BC,WAAW,CAACD,KAAD,EAAQJ,GAAR,EAAaC,GAAb,EAAkBC,IAAlB,CAAlE,CAHK;;;;AAKA,SAASG,WAAT,CACLC,GADK,EAELN,GAFK,EAGLC,GAHK,EAIL;AACA;AACAC,IANK,EAOL;EACAK,iBAAA,CAAOH,KAAP,CAAc,4BAA2BJ,GAAG,CAACQ,GAAI,UAAjD,EAA4DF,GAA5D;;EACAA,GAAG,CAACG,MAAJ,GAAaH,GAAG,CAACG,MAAJ,IAAc,GAA3B;EACAR,GAAG,CAACQ,MAAJ,CAAWH,GAAG,CAACG,MAAf;EACA,OAAOR,GAAG,CAACS,KAAJ,CAAU;IACfC,OAAO,EAAEL,GAAG,CAACK,OADE;IAEfP,KAAK,EAAEE;EAFQ,CAAV,CAAP;AAID"}
1
+ {"version":3,"names":["catchErrors","action","req","res","next","catch","error","errorHandle","err","logger","url","status","jsonp","message"],"sources":["error.ts"],"sourcesContent":["import * as express from 'express';\nimport logger from '@teambit/legacy/dist/logger/logger';\n\ninterface ResponseError {\n status?: number;\n message?: string;\n}\n\nexport const catchErrors = (action: any) => (req: express.Request, res: express.Response, next: express.NextFunction) =>\n // TODO: @guy please take care of it\n // eslint-disable-next-line promise/no-callback-in-promise\n action(req, res, next).catch((error: ResponseError) => errorHandle(error, req, res, next));\n\nexport function errorHandle(\n err: ResponseError,\n req: express.Request,\n res: express.Response,\n // TODO: Do not remove unused next, it's needed for express to catch errors!\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n next: express.NextFunction\n) {\n logger.error(`express.errorHandle, url ${req.url}, error:`, err);\n err.status = err.status || 500;\n res.status(err.status);\n return res.jsonp({\n message: err.message,\n error: err,\n });\n}\n"],"mappings":";;;;;;;;AACA;EAAA;EAAA;IAAA;EAAA;EAAA;AAAA;AAOO,MAAMA,WAAW,GAAIC,MAAW,IAAK,CAACC,GAAoB,EAAEC,GAAqB,EAAEC,IAA0B;AAClH;AACA;AACAH,MAAM,CAACC,GAAG,EAAEC,GAAG,EAAEC,IAAI,CAAC,CAACC,KAAK,CAAEC,KAAoB,IAAKC,WAAW,CAACD,KAAK,EAAEJ,GAAG,EAAEC,GAAG,EAAEC,IAAI,CAAC,CAAC;AAAC;AAEtF,SAASG,WAAW,CACzBC,GAAkB,EAClBN,GAAoB,EACpBC,GAAqB;AACrB;AACA;AACAC,IAA0B,EAC1B;EACAK,iBAAM,CAACH,KAAK,CAAE,4BAA2BJ,GAAG,CAACQ,GAAI,UAAS,EAAEF,GAAG,CAAC;EAChEA,GAAG,CAACG,MAAM,GAAGH,GAAG,CAACG,MAAM,IAAI,GAAG;EAC9BR,GAAG,CAACQ,MAAM,CAACH,GAAG,CAACG,MAAM,CAAC;EACtB,OAAOR,GAAG,CAACS,KAAK,CAAC;IACfC,OAAO,EAAEL,GAAG,CAACK,OAAO;IACpBP,KAAK,EAAEE;EACT,CAAC,CAAC;AACJ"}
@@ -15,14 +15,11 @@ Object.defineProperty(exports, "errorHandle", {
15
15
  return _error().errorHandle;
16
16
  }
17
17
  });
18
-
19
18
  function _error() {
20
19
  const data = require("./error");
21
-
22
20
  _error = function () {
23
21
  return data;
24
22
  };
25
-
26
23
  return data;
27
24
  }
28
25
 
@@ -1 +1 @@
1
- {"version":3,"names":[],"sources":["index.ts"],"sourcesContent":["export { catchErrors, errorHandle } from './error';\n"],"mappings":";;;;;;;;;;;;;;;;;;AAAA;EAAA;;EAAA;IAAA;EAAA;;EAAA;AAAA"}
1
+ {"version":3,"names":[],"sources":["index.ts"],"sourcesContent":["export { catchErrors, errorHandle } from './error';\n"],"mappings":";;;;;;;;;;;;;;;;;AAAA;EAAA;EAAA;IAAA;EAAA;EAAA;AAAA"}
@@ -39,44 +39,32 @@ Object.defineProperty(exports, "Verb", {
39
39
  return _route().Verb;
40
40
  }
41
41
  });
42
-
43
42
  function _request() {
44
43
  const data = require("./request");
45
-
46
44
  _request = function () {
47
45
  return data;
48
46
  };
49
-
50
47
  return data;
51
48
  }
52
-
53
49
  function _response() {
54
50
  const data = require("./response");
55
-
56
51
  _response = function () {
57
52
  return data;
58
53
  };
59
-
60
54
  return data;
61
55
  }
62
-
63
56
  function _next() {
64
57
  const data = require("./next");
65
-
66
58
  _next = function () {
67
59
  return data;
68
60
  };
69
-
70
61
  return data;
71
62
  }
72
-
73
63
  function _route() {
74
64
  const data = require("./route");
75
-
76
65
  _route = function () {
77
66
  return data;
78
67
  };
79
-
80
68
  return data;
81
69
  }
82
70
 
@@ -1 +1 @@
1
- {"version":3,"names":[],"sources":["index.ts"],"sourcesContent":["export { Request } from './request';\nexport { Response } from './response';\nexport { NextFunction } from './next';\nexport { Route, Middleware, Verb } from './route';\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;EAAA;;EAAA;IAAA;EAAA;;EAAA;AAAA;;AACA;EAAA;;EAAA;IAAA;EAAA;;EAAA;AAAA;;AACA;EAAA;;EAAA;IAAA;EAAA;;EAAA;AAAA;;AACA;EAAA;;EAAA;IAAA;EAAA;;EAAA;AAAA"}
1
+ {"version":3,"names":[],"sources":["index.ts"],"sourcesContent":["export { Request } from './request';\nexport { Response } from './response';\nexport { NextFunction } from './next';\nexport { Route, Middleware, Verb } from './route';\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;EAAA;EAAA;IAAA;EAAA;EAAA;AAAA;AACA;EAAA;EAAA;IAAA;EAAA;EAAA;AAAA;AACA;EAAA;EAAA;IAAA;EAAA;EAAA;AAAA;AACA;EAAA;EAAA;IAAA;EAAA;EAAA;AAAA"}
@@ -4,7 +4,6 @@ Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
6
  exports.Verb = void 0;
7
-
8
7
  /**
9
8
  * define express Middleware
10
9
  */
@@ -12,9 +11,7 @@ let Verb;
12
11
  /**
13
12
  * express new Route
14
13
  */
15
-
16
14
  exports.Verb = Verb;
17
-
18
15
  (function (Verb) {
19
16
  Verb["WRITE"] = "write";
20
17
  Verb["READ"] = "read";
@@ -1 +1 @@
1
- {"version":3,"names":["Verb"],"sources":["route.ts"],"sourcesContent":["import { NextFunction } from './next';\nimport { Request } from './request';\nimport { Response } from './response';\n\n/**\n * define express Middleware\n */\nexport type Middleware = (req: Request, res: Response, next: NextFunction) => Promise<any>;\n\nexport enum Verb {\n WRITE = 'write',\n READ = 'read',\n}\n\n/**\n * express new Route\n */\n\nexport interface Route {\n method: string;\n route: string | RegExp;\n disableNamespace?: boolean;\n verb?: Verb;\n middlewares: Middleware[];\n}\n"],"mappings":";;;;;;;AAIA;AACA;AACA;IAGYA,I;AAKZ;AACA;AACA;;;;WAPYA,I;EAAAA,I;EAAAA,I;GAAAA,I,oBAAAA,I"}
1
+ {"version":3,"names":["Verb"],"sources":["route.ts"],"sourcesContent":["import { NextFunction } from './next';\nimport { Request } from './request';\nimport { Response } from './response';\n\n/**\n * define express Middleware\n */\nexport type Middleware = (req: Request, res: Response, next: NextFunction) => Promise<any>;\n\nexport enum Verb {\n WRITE = 'write',\n READ = 'read',\n}\n\n/**\n * express new Route\n */\n\nexport interface Route {\n method: string;\n route: string | RegExp;\n disableNamespace?: boolean;\n verb?: Verb;\n middlewares: Middleware[];\n}\n"],"mappings":";;;;;;AAIA;AACA;AACA;AAFA,IAKYA,IAAI;AAKhB;AACA;AACA;AAFA;AAAA,WALYA,IAAI;EAAJA,IAAI;EAAJA,IAAI;AAAA,GAAJA,IAAI,oBAAJA,IAAI"}
package/package.json CHANGED
@@ -1,12 +1,12 @@
1
1
  {
2
2
  "name": "@teambit/express",
3
- "version": "0.0.689",
3
+ "version": "0.0.690",
4
4
  "homepage": "https://bit.dev/teambit/harmony/express",
5
5
  "main": "dist/index.js",
6
6
  "componentId": {
7
7
  "scope": "teambit.harmony",
8
8
  "name": "express",
9
- "version": "0.0.689"
9
+ "version": "0.0.690"
10
10
  },
11
11
  "dependencies": {
12
12
  "body-parser": "1.19.0",
@@ -15,8 +15,8 @@
15
15
  "@babel/runtime": "7.12.18",
16
16
  "core-js": "^3.0.0",
17
17
  "@teambit/harmony": "0.3.3",
18
- "@teambit/cli": "0.0.591",
19
- "@teambit/logger": "0.0.684"
18
+ "@teambit/cli": "0.0.592",
19
+ "@teambit/logger": "0.0.685"
20
20
  },
21
21
  "devDependencies": {
22
22
  "@types/react": "^17.0.8",
@@ -29,7 +29,7 @@
29
29
  "@types/node": "12.20.4"
30
30
  },
31
31
  "peerDependencies": {
32
- "@teambit/legacy": "1.0.374",
32
+ "@teambit/legacy": "1.0.375",
33
33
  "react-dom": "^16.8.0 || ^17.0.0",
34
34
  "react": "^16.8.0 || ^17.0.0"
35
35
  },
@@ -1,5 +1,5 @@
1
- import * as compositions_0 from '/home/circleci/Library/Caches/Bit/capsules/8891be5ad3d35bfc38b9cd90c0e05b598a5a55af/teambit.harmony_express@0.0.689/dist/express.composition.js';
2
- import * as overview_0 from '/home/circleci/Library/Caches/Bit/capsules/8891be5ad3d35bfc38b9cd90c0e05b598a5a55af/teambit.harmony_express@0.0.689/dist/express.docs.mdx';
1
+ import * as compositions_0 from '/home/circleci/Library/Caches/Bit/capsules/8891be5ad3d35bfc38b9cd90c0e05b598a5a55af/teambit.harmony_express@0.0.690/dist/express.composition.js';
2
+ import * as overview_0 from '/home/circleci/Library/Caches/Bit/capsules/8891be5ad3d35bfc38b9cd90c0e05b598a5a55af/teambit.harmony_express@0.0.690/dist/express.docs.mdx';
3
3
 
4
4
  export const compositions = [compositions_0];
5
5
  export const overview = [overview_0];