@teambit/express 0.0.957 → 0.0.959
Sign up to get free protection for your applications and to get access to all the features.
- package/artifacts/__bit_junit.xml +1 -1
- package/artifacts/preview/teambit_harmony_express-preview.js +1 -1
- package/artifacts/schema.json +17 -60
- package/dist/express.main.runtime.js +1 -1
- package/dist/express.main.runtime.js.map +1 -1
- package/dist/{preview-1710991124101.js → preview-1712719054377.js} +2 -2
- package/package.json +5 -5
- package/tsconfig.json +10 -1
- package/dist/express.aspect.d.ts +0 -2
- package/dist/express.composition.d.ts +0 -1
- package/dist/express.main.runtime.d.ts +0 -72
- package/dist/index.d.ts +0 -7
- package/dist/middleware-manifest.d.ts +0 -5
- package/dist/middlewares/error.d.ts +0 -8
- package/dist/middlewares/index.d.ts +0 -1
- package/dist/types/index.d.ts +0 -4
- package/dist/types/next.d.ts +0 -2
- package/dist/types/request.d.ts +0 -1
- package/dist/types/response.d.ts +0 -2
- package/dist/types/route.d.ts +0 -24
@@ -1,4 +1,4 @@
|
|
1
1
|
<?xml version="1.0" encoding="UTF-8"?>
|
2
2
|
<testsuites tests="0" failures="0" errors="0" skipped="0">
|
3
|
-
<testsuite name="teambit.harmony/express@0.0.
|
3
|
+
<testsuite name="teambit.harmony/express@0.0.959" tests="0" failures="0" errors="0" skipped="0"/>
|
4
4
|
</testsuites>
|
@@ -1 +1 @@
|
|
1
|
-
!function(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t():"function"==typeof define&&define.amd?define([],t):"object"==typeof exports?exports["teambit.harmony/express-preview"]=t():e["teambit.harmony/express-preview"]=t()}(self,(()=>(()=>{"use strict";var e={
|
1
|
+
!function(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t():"function"==typeof define&&define.amd?define([],t):"object"==typeof exports?exports["teambit.harmony/express-preview"]=t():e["teambit.harmony/express-preview"]=t()}(self,(()=>(()=>{"use strict";var e={3915:(e,t,o)=>{var r={id:"teambit.harmony/express@0.0.959",homepage:"https://bit.cloud/teambit/harmony/express",exported:!0};function n(){const e=i(o(41594));return n=function(){return e},e}function i(e){return e&&e.__esModule?e:{default:e}}Object.defineProperty(t,"__esModule",{value:!0}),t.Logo=void 0,n.__bit_component=r,i.__bit_component=r;const s=()=>n().default.createElement("div",{style:{height:"100%",display:"flex",justifyContent:"center"}},n().default.createElement("img",{style:{width:70},src:"https://static.bit.dev/extensions-icons/express.svg"}));s.__bit_component=r,t.Logo=s},41594:e=>{e.exports=React}},t={};function o(r){var n=t[r];if(void 0!==n)return n.exports;var i=t[r]={exports:{}};return e[r](i,i.exports,o),i.exports}o.d=(e,t)=>{for(var r in t)o.o(t,r)&&!o.o(e,r)&&Object.defineProperty(e,r,{enumerable:!0,get:t[r]})},o.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),o.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})};var r={};return(()=>{o.r(r),o.d(r,{compositions:()=>u,compositions_metadata:()=>l,overview:()=>f});var e={};o.r(e),o.d(e,{default:()=>d});var t=o(3915);o(41594);const n=MdxJsReact,i=TeambitMdxUiMdxScopeContext;var s=["components"];function p(){return p=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var o=arguments[t];for(var r in o)Object.prototype.hasOwnProperty.call(o,r)&&(e[r]=o[r])}return e},p.apply(this,arguments)}var a={},c="wrapper";function d(e){var t=e.components,o=function(e,t){if(null==e)return{};var o,r,n=function(e,t){if(null==e)return{};var o,r,n={},i=Object.keys(e);for(r=0;r<i.length;r++)o=i[r],t.indexOf(o)>=0||(n[o]=e[o]);return n}(e,t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(r=0;r<i.length;r++)o=i[r],t.indexOf(o)>=0||Object.prototype.propertyIsEnumerable.call(e,o)&&(n[o]=e[o])}return n}(e,s);return(0,n.mdx)(c,p({},a,o,{components:t,mdxType:"MDXLayout"}),(0,n.mdx)(i.MDXScopeProvider,{components:{},mdxType:"MDXScopeProvider"}))}d.isMDXComponent=!0;const u=[t],f=[e],l={compositions:[{displayName:"Logo",identifier:"Logo"}]}})(),r})()));
|
package/artifacts/schema.json
CHANGED
@@ -30,11 +30,6 @@
|
|
30
30
|
"character": 25
|
31
31
|
},
|
32
32
|
"name": "SlotRegistry",
|
33
|
-
"componentId": {
|
34
|
-
"scope": "teambit.harmony",
|
35
|
-
"name": "harmony",
|
36
|
-
"version": "0.4.6"
|
37
|
-
},
|
38
33
|
"typeArgs": [
|
39
34
|
{
|
40
35
|
"__schema": "TypeArraySchema",
|
@@ -577,8 +572,7 @@
|
|
577
572
|
"line": 30,
|
578
573
|
"character": 22
|
579
574
|
},
|
580
|
-
"name": "ExpressConfig"
|
581
|
-
"internalFilePath": "express.main.runtime.ts"
|
575
|
+
"name": "ExpressConfig"
|
582
576
|
},
|
583
577
|
"isOptional": false,
|
584
578
|
"isSpread": false
|
@@ -618,11 +612,7 @@
|
|
618
612
|
"line": 40,
|
619
613
|
"character": 22
|
620
614
|
},
|
621
|
-
"name": "Logger"
|
622
|
-
"componentId": {
|
623
|
-
"scope": "teambit.harmony",
|
624
|
-
"name": "logger"
|
625
|
-
}
|
615
|
+
"name": "Logger"
|
626
616
|
},
|
627
617
|
"isOptional": false,
|
628
618
|
"isSpread": false
|
@@ -642,8 +632,7 @@
|
|
642
632
|
"line": 42,
|
643
633
|
"character": 30
|
644
634
|
},
|
645
|
-
"name": "MiddlewareSlot"
|
646
|
-
"internalFilePath": "express.main.runtime.ts"
|
635
|
+
"name": "MiddlewareSlot"
|
647
636
|
},
|
648
637
|
"isOptional": false,
|
649
638
|
"isSpread": false
|
@@ -717,8 +706,7 @@
|
|
717
706
|
"line": 48,
|
718
707
|
"character": 40
|
719
708
|
},
|
720
|
-
"name": "Server"
|
721
|
-
"packageName": "http"
|
709
|
+
"name": "Server"
|
722
710
|
}
|
723
711
|
]
|
724
712
|
},
|
@@ -871,8 +859,7 @@
|
|
871
859
|
"line": 85,
|
872
860
|
"character": 26
|
873
861
|
},
|
874
|
-
"name": "Express"
|
875
|
-
"packageName": "express"
|
862
|
+
"name": "Express"
|
876
863
|
},
|
877
864
|
"isOptional": true,
|
878
865
|
"isSpread": false
|
@@ -1027,11 +1014,7 @@
|
|
1027
1014
|
"line": 165,
|
1028
1015
|
"character": 23
|
1029
1016
|
},
|
1030
|
-
"name": "LoggerMain"
|
1031
|
-
"componentId": {
|
1032
|
-
"scope": "teambit.harmony",
|
1033
|
-
"name": "logger"
|
1034
|
-
}
|
1017
|
+
"name": "LoggerMain"
|
1035
1018
|
}
|
1036
1019
|
]
|
1037
1020
|
},
|
@@ -1053,8 +1036,7 @@
|
|
1053
1036
|
"line": 166,
|
1054
1037
|
"character": 13
|
1055
1038
|
},
|
1056
|
-
"name": "ExpressConfig"
|
1057
|
-
"internalFilePath": "express.main.runtime.ts"
|
1039
|
+
"name": "ExpressConfig"
|
1058
1040
|
},
|
1059
1041
|
"isOptional": false,
|
1060
1042
|
"isSpread": false
|
@@ -1091,8 +1073,7 @@
|
|
1091
1073
|
"line": 167,
|
1092
1074
|
"character": 46
|
1093
1075
|
},
|
1094
|
-
"name": "MiddlewareSlot"
|
1095
|
-
"internalFilePath": "express.main.runtime.ts"
|
1076
|
+
"name": "MiddlewareSlot"
|
1096
1077
|
}
|
1097
1078
|
]
|
1098
1079
|
},
|
@@ -1261,11 +1242,6 @@
|
|
1261
1242
|
"character": 30
|
1262
1243
|
},
|
1263
1244
|
"name": "SlotRegistry",
|
1264
|
-
"componentId": {
|
1265
|
-
"scope": "teambit.harmony",
|
1266
|
-
"name": "harmony",
|
1267
|
-
"version": "0.4.6"
|
1268
|
-
},
|
1269
1245
|
"typeArgs": [
|
1270
1246
|
{
|
1271
1247
|
"__schema": "TypeArraySchema",
|
@@ -1304,11 +1280,6 @@
|
|
1304
1280
|
"character": 25
|
1305
1281
|
},
|
1306
1282
|
"name": "SlotRegistry",
|
1307
|
-
"componentId": {
|
1308
|
-
"scope": "teambit.harmony",
|
1309
|
-
"name": "harmony",
|
1310
|
-
"version": "0.4.6"
|
1311
|
-
},
|
1312
1283
|
"typeArgs": [
|
1313
1284
|
{
|
1314
1285
|
"__schema": "TypeArraySchema",
|
@@ -1386,8 +1357,7 @@
|
|
1386
1357
|
"line": 30,
|
1387
1358
|
"character": 22
|
1388
1359
|
},
|
1389
|
-
"name": "ExpressConfig"
|
1390
|
-
"internalFilePath": "express.main.runtime.ts"
|
1360
|
+
"name": "ExpressConfig"
|
1391
1361
|
},
|
1392
1362
|
"isOptional": false,
|
1393
1363
|
"isSpread": false
|
@@ -1427,11 +1397,7 @@
|
|
1427
1397
|
"line": 40,
|
1428
1398
|
"character": 22
|
1429
1399
|
},
|
1430
|
-
"name": "Logger"
|
1431
|
-
"componentId": {
|
1432
|
-
"scope": "teambit.harmony",
|
1433
|
-
"name": "logger"
|
1434
|
-
}
|
1400
|
+
"name": "Logger"
|
1435
1401
|
},
|
1436
1402
|
"isOptional": false,
|
1437
1403
|
"isSpread": false
|
@@ -1451,8 +1417,7 @@
|
|
1451
1417
|
"line": 42,
|
1452
1418
|
"character": 30
|
1453
1419
|
},
|
1454
|
-
"name": "MiddlewareSlot"
|
1455
|
-
"internalFilePath": "express.main.runtime.ts"
|
1420
|
+
"name": "MiddlewareSlot"
|
1456
1421
|
},
|
1457
1422
|
"isOptional": false,
|
1458
1423
|
"isSpread": false
|
@@ -1526,8 +1491,7 @@
|
|
1526
1491
|
"line": 48,
|
1527
1492
|
"character": 40
|
1528
1493
|
},
|
1529
|
-
"name": "Server"
|
1530
|
-
"packageName": "http"
|
1494
|
+
"name": "Server"
|
1531
1495
|
}
|
1532
1496
|
]
|
1533
1497
|
},
|
@@ -1680,8 +1644,7 @@
|
|
1680
1644
|
"line": 85,
|
1681
1645
|
"character": 26
|
1682
1646
|
},
|
1683
|
-
"name": "Express"
|
1684
|
-
"packageName": "express"
|
1647
|
+
"name": "Express"
|
1685
1648
|
},
|
1686
1649
|
"isOptional": true,
|
1687
1650
|
"isSpread": false
|
@@ -1836,11 +1799,7 @@
|
|
1836
1799
|
"line": 165,
|
1837
1800
|
"character": 23
|
1838
1801
|
},
|
1839
|
-
"name": "LoggerMain"
|
1840
|
-
"componentId": {
|
1841
|
-
"scope": "teambit.harmony",
|
1842
|
-
"name": "logger"
|
1843
|
-
}
|
1802
|
+
"name": "LoggerMain"
|
1844
1803
|
}
|
1845
1804
|
]
|
1846
1805
|
},
|
@@ -1862,8 +1821,7 @@
|
|
1862
1821
|
"line": 166,
|
1863
1822
|
"character": 13
|
1864
1823
|
},
|
1865
|
-
"name": "ExpressConfig"
|
1866
|
-
"internalFilePath": "express.main.runtime.ts"
|
1824
|
+
"name": "ExpressConfig"
|
1867
1825
|
},
|
1868
1826
|
"isOptional": false,
|
1869
1827
|
"isSpread": false
|
@@ -1900,8 +1858,7 @@
|
|
1900
1858
|
"line": 167,
|
1901
1859
|
"character": 46
|
1902
1860
|
},
|
1903
|
-
"name": "MiddlewareSlot"
|
1904
|
-
"internalFilePath": "express.main.runtime.ts"
|
1861
|
+
"name": "MiddlewareSlot"
|
1905
1862
|
}
|
1906
1863
|
]
|
1907
1864
|
},
|
@@ -1982,7 +1939,7 @@
|
|
1982
1939
|
"componentId": {
|
1983
1940
|
"scope": "teambit.harmony",
|
1984
1941
|
"name": "express",
|
1985
|
-
"version": "0.0.
|
1942
|
+
"version": "0.0.959"
|
1986
1943
|
},
|
1987
1944
|
"taggedModuleExports": []
|
1988
1945
|
}
|
@@ -69,7 +69,7 @@ function _types() {
|
|
69
69
|
}
|
70
70
|
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
71
71
|
function _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
|
72
|
-
function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == typeof i ? i :
|
72
|
+
function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == typeof i ? i : i + ""; }
|
73
73
|
function _toPrimitive(t, r) { if ("object" != typeof t || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != typeof i) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); }
|
74
74
|
class ExpressMain {
|
75
75
|
constructor(
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"names":["_cli","data","require","_harmony","_logger","_express","_interopRequireDefault","_lodash","_bodyParser","_express2","_middlewares","_types","obj","__esModule","default","_defineProperty","key","value","_toPropertyKey","Object","defineProperty","enumerable","configurable","writable","t","i","_toPrimitive","String","r","e","Symbol","toPrimitive","call","TypeError","Number","ExpressMain","constructor","config","moduleSlot","logger","middlewareSlot","listen","port","serverPort","app","createApp","register","routes","registerMiddleware","middlewares","createRootRoutes","namespace","ExpressAspect","id","method","path","disableNamespace","priority","req","res","send","expressApp","options","internalRoutes","createRoutes","allRoutes","concat","sortedRoutes","sortBy","reverse","express","use","next","loggerIgnorePath","includes","url","debug","headers","disableBodyParser","bodyParser","middlewaresSlot","values","flat","forEach","route","middleware","routeInfo","catchErrorsMiddlewares","routesSlots","toArray","routeEntries","map","flatten","verbValidation","lowerCase","verb","Verb","READ","status","jsonp","message","error","catchErrors","json","limit","raw","type","provider","loggerFactory","routeSlot","createLogger","exports","MainRuntime","Slot","withType","LoggerAspect","addRuntime"],"sources":["express.main.runtime.ts"],"sourcesContent":["import { MainRuntime } from '@teambit/cli';\nimport { Server } from 'http';\nimport { Slot, SlotRegistry } from '@teambit/harmony';\nimport { Logger, LoggerAspect, LoggerMain } from '@teambit/logger';\nimport express, { Express } from 'express';\nimport { concat, flatten, lowerCase, sortBy } 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 an express server.\n */\n async listen(port?: number): Promise<Server> {\n const serverPort = port || this.config.port;\n const app = this.createApp();\n return 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 priority: 0,\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 sortedRoutes = sortBy(allRoutes, (r) => r.priority).reverse();\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 const middlewaresSlot = this.middlewareSlot.values().flat();\n middlewaresSlot.forEach(({ route, middleware }) => {\n // eslint-disable-next-line @typescript-eslint/no-misused-promises\n if (!route) app.use(middleware);\n // eslint-disable-next-line @typescript-eslint/no-misused-promises\n if (route) app.use(route, middleware);\n });\n\n sortedRoutes.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 priority: route.priority || 0,\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":";;;;;;AAAA,SAAAA,KAAA;EAAA,MAAAC,IAAA,GAAAC,OAAA;EAAAF,IAAA,YAAAA,CAAA;IAAA,OAAAC,IAAA;EAAA;EAAA,OAAAA,IAAA;AAAA;AAEA,SAAAE,SAAA;EAAA,MAAAF,IAAA,GAAAC,OAAA;EAAAC,QAAA,YAAAA,CAAA;IAAA,OAAAF,IAAA;EAAA;EAAA,OAAAA,IAAA;AAAA;AACA,SAAAG,QAAA;EAAA,MAAAH,IAAA,GAAAC,OAAA;EAAAE,OAAA,YAAAA,CAAA;IAAA,OAAAH,IAAA;EAAA;EAAA,OAAAA,IAAA;AAAA;AACA,SAAAI,SAAA;EAAA,MAAAJ,IAAA,GAAAK,sBAAA,CAAAJ,OAAA;EAAAG,QAAA,YAAAA,CAAA;IAAA,OAAAJ,IAAA;EAAA;EAAA,OAAAA,IAAA;AAAA;AACA,SAAAM,QAAA;EAAA,MAAAN,IAAA,GAAAC,OAAA;EAAAK,OAAA,YAAAA,CAAA;IAAA,OAAAN,IAAA;EAAA;EAAA,OAAAA,IAAA;AAAA;AACA,SAAAO,YAAA;EAAA,MAAAP,IAAA,GAAAK,sBAAA,CAAAJ,OAAA;EAAAM,WAAA,YAAAA,CAAA;IAAA,OAAAP,IAAA;EAAA;EAAA,OAAAA,IAAA;AAAA;AACA,SAAAQ,UAAA;EAAA,MAAAR,IAAA,GAAAC,OAAA;EAAAO,SAAA,YAAAA,CAAA;IAAA,OAAAR,IAAA;EAAA;EAAA,OAAAA,IAAA;AAAA;AACA,SAAAS,aAAA;EAAA,MAAAT,IAAA,GAAAC,OAAA;EAAAQ,YAAA,YAAAA,CAAA;IAAA,OAAAT,IAAA;EAAA;EAAA,OAAAA,IAAA;AAAA;AACA,SAAAU,OAAA;EAAA,MAAAV,IAAA,GAAAC,OAAA;EAAAS,MAAA,YAAAA,CAAA;IAAA,OAAAV,IAAA;EAAA;EAAA,OAAAA,IAAA;AAAA;AAAqE,SAAAK,uBAAAM,GAAA,WAAAA,GAAA,IAAAA,GAAA,CAAAC,UAAA,GAAAD,GAAA,KAAAE,OAAA,EAAAF,GAAA;AAAA,SAAAG,gBAAAH,GAAA,EAAAI,GAAA,EAAAC,KAAA,IAAAD,GAAA,GAAAE,cAAA,CAAAF,GAAA,OAAAA,GAAA,IAAAJ,GAAA,IAAAO,MAAA,CAAAC,cAAA,CAAAR,GAAA,EAAAI,GAAA,IAAAC,KAAA,EAAAA,KAAA,EAAAI,UAAA,QAAAC,YAAA,QAAAC,QAAA,oBAAAX,GAAA,CAAAI,GAAA,IAAAC,KAAA,WAAAL,GAAA;AAAA,SAAAM,eAAAM,CAAA,QAAAC,CAAA,GAAAC,YAAA,CAAAF,CAAA,uCAAAC,CAAA,GAAAA,CAAA,GAAAE,MAAA,CAAAF,CAAA;AAAA,SAAAC,aAAAF,CAAA,EAAAI,CAAA,2BAAAJ,CAAA,KAAAA,CAAA,SAAAA,CAAA,MAAAK,CAAA,GAAAL,CAAA,CAAAM,MAAA,CAAAC,WAAA,kBAAAF,CAAA,QAAAJ,CAAA,GAAAI,CAAA,CAAAG,IAAA,CAAAR,CAAA,EAAAI,CAAA,uCAAAH,CAAA,SAAAA,CAAA,YAAAQ,SAAA,yEAAAL,CAAA,GAAAD,MAAA,GAAAO,MAAA,EAAAV,CAAA;AAa9D,MAAMW,WAAW,CAAC;EAGvBC,WAAWA;EACT;AACJ;AACA;EACaC,MAAqB;EAE9B;AACJ;AACA;EACYC,UAAqB;EAE7B;AACJ;AACA;EACaC,MAAc,EAEdC,cAA8B,EACvC;IAAA,KAbSH,MAAqB,GAArBA,MAAqB;IAAA,KAKtBC,UAAqB,GAArBA,UAAqB;IAAA,KAKpBC,MAAc,GAAdA,MAAc;IAAA,KAEdC,cAA8B,GAA9BA,cAA8B;EACtC;;EAEH;AACF;AACA;EACE,MAAMC,MAAMA,CAACC,IAAa,EAAmB;IAC3C,MAAMC,UAAU,GAAGD,IAAI,IAAI,IAAI,CAACL,MAAM,CAACK,IAAI;IAC3C,MAAME,GAAG,GAAG,IAAI,CAACC,SAAS,CAAC,CAAC;IAC5B,OAAOD,GAAG,CAACH,MAAM,CAACE,UAAU,CAAC;EAC/B;;EAEA;AACF;AACA;AACA;EACEG,QAAQA,CAACC,MAAe,EAAE;IACxB,IAAI,CAACT,UAAU,CAACQ,QAAQ,CAACC,MAAM,CAAC;IAChC,OAAO,IAAI;EACb;;EAEA;AACF;AACA;EACEC,kBAAkBA,CAACC,WAAiC,EAAE;IACpD,IAAI,CAACT,cAAc,CAACM,QAAQ,CAACG,WAAW,CAAC;IACzC,OAAO,IAAI;EACb;EAEQC,gBAAgBA,CAAA,EAAG;IACzB;IACA,OAAO,CACL;MACEC,SAAS,EAAEC,yBAAa,CAACC,EAAE;MAC3BC,MAAM,EAAE,KAAK;MACbC,IAAI,EAAE,UAAU;MAChBC,gBAAgB,EAAE,KAAK;MACvBC,QAAQ,EAAE,CAAC;MACXR,WAAW,EAAE,CAAC,OAAOS,GAAY,EAAEC,GAAa,KAAKA,GAAG,CAACC,IAAI,CAAC,IAAI,CAAC;IACrE,CAAC,CACF;EACH;EAEAf,SAASA,CAACgB,UAAoB,EAAEC,OAAqC,EAAW;IAC9E,MAAMC,cAAc,GAAG,IAAI,CAACb,gBAAgB,CAAC,CAAC;IAC9C,MAAMH,MAAM,GAAG,IAAI,CAACiB,YAAY,CAAC,CAAC;IAClC,MAAMC,SAAS,GAAG,IAAAC,gBAAM,EAACnB,MAAM,EAAEgB,cAAc,CAAC;IAChD,MAAMI,YAAY,GAAG,IAAAC,gBAAM,EAACH,SAAS,EAAGrC,CAAC,IAAKA,CAAC,CAAC6B,QAAQ,CAAC,CAACY,OAAO,CAAC,CAAC;IACnE,MAAMzB,GAAG,GAAGiB,UAAU,IAAI,IAAAS,kBAAO,EAAC,CAAC;IACnC1B,GAAG,CAAC2B,GAAG,CAAC,CAACb,GAAG,EAAEC,GAAG,EAAEa,IAAI,KAAK;MAC1B,IAAI,IAAI,CAACnC,MAAM,CAACoC,gBAAgB,CAACC,QAAQ,CAAChB,GAAG,CAACiB,GAAG,CAAC,EAAE,OAAOH,IAAI,CAAC,CAAC;MACjE,IAAI,CAACjC,MAAM,CAACqC,KAAK,CAAE,mCAAkClB,GAAG,CAACiB,GAAI,aAAY,EAAEjB,GAAG,CAACmB,OAAO,CAAC;MACvF,OAAOL,IAAI,CAAC,CAAC;IACf,CAAC,CAAC;IACF,IAAI,CAACV,OAAO,EAAEgB,iBAAiB,EAAE,IAAI,CAACC,UAAU,CAACnC,GAAG,CAAC;IAErD,MAAMoC,eAAe,GAAG,IAAI,CAACxC,cAAc,CAACyC,MAAM,CAAC,CAAC,CAACC,IAAI,CAAC,CAAC;IAC3DF,eAAe,CAACG,OAAO,CAAC,CAAC;MAAEC,KAAK;MAAEC;IAAW,CAAC,KAAK;MACjD;MACA,IAAI,CAACD,KAAK,EAAExC,GAAG,CAAC2B,GAAG,CAACc,UAAU,CAAC;MAC/B;MACA,IAAID,KAAK,EAAExC,GAAG,CAAC2B,GAAG,CAACa,KAAK,EAAEC,UAAU,CAAC;IACvC,CAAC,CAAC;IAEFlB,YAAY,CAACgB,OAAO,CAAEG,SAAS,IAAK;MAClC,MAAM;QAAEhC,MAAM;QAAEC,IAAI;QAAEN,WAAW;QAAEO;MAAiB,CAAC,GAAG8B,SAAS;MACjE;MACA,MAAMnC,SAAS,GAAGK,gBAAgB,GAAG,EAAE,GAAI,IAAG,IAAI,CAACnB,MAAM,CAACc,SAAU,EAAC;MACrEP,GAAG,CAACU,MAAM,CAAC,CAAE,GAAEH,SAAU,GAAEI,IAAK,EAAC,EAAE,IAAI,CAACgC,sBAAsB,CAACtC,WAAW,CAAC,CAAC;IAC9E,CAAC,CAAC;IAEF,OAAOL,GAAG;EACZ;EAEQoB,YAAYA,CAAA,EAAG;IACrB,MAAMwB,WAAW,GAAG,IAAI,CAAClD,UAAU,CAACmD,OAAO,CAAC,CAAC;IAC7C,MAAMC,YAAY,GAAGF,WAAW,CAACG,GAAG,CAAC,CAAC,GAAG5C,MAAM,CAAC,KAAK;MACnD,OAAOA,MAAM,CAAC4C,GAAG,CAAEP,KAAK,IAAK;QAC3B,MAAMnC,WAAW,GAAG,IAAA2C,iBAAO,EAAC,CAAC,IAAI,CAACC,cAAc,CAACT,KAAK,CAAC,EAAEA,KAAK,CAACnC,WAAW,CAAC,CAAC;QAC5E,OAAO;UACLK,MAAM,EAAE,IAAAwC,mBAAS,EAACV,KAAK,CAAC9B,MAAM,CAAC;UAC/BC,IAAI,EAAE6B,KAAK,CAACA,KAAK;UACjB5B,gBAAgB,EAAE4B,KAAK,CAAC5B,gBAAgB;UACxCP,WAAW;UACXQ,QAAQ,EAAE2B,KAAK,CAAC3B,QAAQ,IAAI;QAC9B,CAAC;MACH,CAAC,CAAC;IACJ,CAAC,CAAC;IAEF,OAAO,IAAAmC,iBAAO,EAACF,YAAY,CAAC;EAC9B;EAEQG,cAAcA,CAACT,KAAY,EAAc;IAC/C,OAAO,OAAO1B,GAAoB,EAAEC,GAAqB,EAAEa,IAA0B,KAAK;MACxF,IAAI,CAACY,KAAK,CAACW,IAAI,EAAE,OAAOvB,IAAI,CAAC,CAAC;MAC9B,MAAMuB,IAAI,GAAGrC,GAAG,CAACmB,OAAO,CAAC,QAAQ,CAAC,IAAImB,aAAI,CAACC,IAAI;MAC/C,IAAIF,IAAI,KAAKX,KAAK,CAACW,IAAI,EAAE;QACvBpC,GAAG,CAACuC,MAAM,CAAC,GAAG,CAAC;QACf,OAAOvC,GAAG,CAACwC,KAAK,CAAC;UAAEC,OAAO,EAAE,wBAAwB;UAAEC,KAAK,EAAE;QAAY,CAAC,CAAC;MAC7E;MACA,OAAO7B,IAAI,CAAC,CAAC;IACf,CAAC;EACH;EAEQe,sBAAsBA,CAACtC,WAAyB,EAAE;IACxD,OAAOA,WAAW,CAAC0C,GAAG,CAAEN,UAAU,IAAK,IAAAiB,0BAAW,EAACjB,UAAU,CAAC,CAAC;EACjE;EAEQN,UAAUA,CAACnC,GAAY,EAAE;IAC/BA,GAAG,CAAC2B,GAAG,CAACQ,qBAAU,CAACwB,IAAI,CAAC;MAAEC,KAAK,EAAE;IAAS,CAAC,CAAC,CAAC;IAC7C5D,GAAG,CAAC2B,GAAG,CAACQ,qBAAU,CAAC0B,GAAG,CAAC;MAAEC,IAAI,EAAE,0BAA0B;MAAEF,KAAK,EAAE;IAAS,CAAC,CAAC,CAAC;EAChF;EAWA,aAAaG,QAAQA,CACnB,CAACC,aAAa,CAAe,EAC7BvE,MAAqB,EACrB,CAACwE,SAAS,EAAErE,cAAc,CAA8B,EACxD;IACA,MAAMD,MAAM,GAAGqE,aAAa,CAACE,YAAY,CAAC1D,yBAAa,CAACC,EAAE,CAAC;IAC3D,OAAO,IAAIlB,WAAW,CAACE,MAAM,EAAEwE,SAAS,EAAEtE,MAAM,EAAEC,cAAc,CAAC;EACnE;AACF;AAACuE,OAAA,CAAA5E,WAAA,GAAAA,WAAA;AAAApB,eAAA,CArJYoB,WAAW,aACL6E,kBAAW;AAAAjG,eAAA,CADjBoB,WAAW,WAoIP,CAAC8E,eAAI,CAACC,QAAQ,CAAU,CAAC,EAAED,eAAI,CAACC,QAAQ,CAAuB,CAAC,CAAC;AAAAnG,eAAA,CApIrEoB,WAAW,kBAqIA,CAACgF,sBAAY,CAAC;AAAApG,eAAA,CArIzBoB,WAAW,mBAuIC;EACrBO,IAAI,EAAE,IAAI;EACVS,SAAS,EAAE,KAAK;EAChBsB,gBAAgB,EAAE,CAAC,cAAc;AACnC,CAAC;AAYHrB,yBAAa,CAACgE,UAAU,CAACjF,WAAW,CAAC","ignoreList":[]}
|
1
|
+
{"version":3,"names":["_cli","data","require","_harmony","_logger","_express","_interopRequireDefault","_lodash","_bodyParser","_express2","_middlewares","_types","obj","__esModule","default","_defineProperty","key","value","_toPropertyKey","Object","defineProperty","enumerable","configurable","writable","t","i","_toPrimitive","r","e","Symbol","toPrimitive","call","TypeError","String","Number","ExpressMain","constructor","config","moduleSlot","logger","middlewareSlot","listen","port","serverPort","app","createApp","register","routes","registerMiddleware","middlewares","createRootRoutes","namespace","ExpressAspect","id","method","path","disableNamespace","priority","req","res","send","expressApp","options","internalRoutes","createRoutes","allRoutes","concat","sortedRoutes","sortBy","reverse","express","use","next","loggerIgnorePath","includes","url","debug","headers","disableBodyParser","bodyParser","middlewaresSlot","values","flat","forEach","route","middleware","routeInfo","catchErrorsMiddlewares","routesSlots","toArray","routeEntries","map","flatten","verbValidation","lowerCase","verb","Verb","READ","status","jsonp","message","error","catchErrors","json","limit","raw","type","provider","loggerFactory","routeSlot","createLogger","exports","MainRuntime","Slot","withType","LoggerAspect","addRuntime"],"sources":["express.main.runtime.ts"],"sourcesContent":["import { MainRuntime } from '@teambit/cli';\nimport { Server } from 'http';\nimport { Slot, SlotRegistry } from '@teambit/harmony';\nimport { Logger, LoggerAspect, LoggerMain } from '@teambit/logger';\nimport express, { Express } from 'express';\nimport { concat, flatten, lowerCase, sortBy } 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 an express server.\n */\n async listen(port?: number): Promise<Server> {\n const serverPort = port || this.config.port;\n const app = this.createApp();\n return 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 priority: 0,\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 sortedRoutes = sortBy(allRoutes, (r) => r.priority).reverse();\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 const middlewaresSlot = this.middlewareSlot.values().flat();\n middlewaresSlot.forEach(({ route, middleware }) => {\n // eslint-disable-next-line @typescript-eslint/no-misused-promises\n if (!route) app.use(middleware);\n // eslint-disable-next-line @typescript-eslint/no-misused-promises\n if (route) app.use(route, middleware);\n });\n\n sortedRoutes.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 priority: route.priority || 0,\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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","ignoreList":[]}
|
@@ -1,5 +1,5 @@
|
|
1
|
-
import * as compositions_0 from '/home/circleci/Library/Caches/Bit/capsules/8891be5ad3d35bfc38b9cd90c0e05b598a5a55af/teambit.harmony_express@0.0.
|
2
|
-
import * as overview_0 from '/home/circleci/Library/Caches/Bit/capsules/8891be5ad3d35bfc38b9cd90c0e05b598a5a55af/teambit.harmony_express@0.0.
|
1
|
+
import * as compositions_0 from '/home/circleci/Library/Caches/Bit/capsules/8891be5ad3d35bfc38b9cd90c0e05b598a5a55af/teambit.harmony_express@0.0.959/dist/express.composition.js';
|
2
|
+
import * as overview_0 from '/home/circleci/Library/Caches/Bit/capsules/8891be5ad3d35bfc38b9cd90c0e05b598a5a55af/teambit.harmony_express@0.0.959/dist/express.docs.mdx';
|
3
3
|
|
4
4
|
export const compositions = [compositions_0];
|
5
5
|
export const overview = [overview_0];
|
package/package.json
CHANGED
@@ -1,27 +1,27 @@
|
|
1
1
|
{
|
2
2
|
"name": "@teambit/express",
|
3
|
-
"version": "0.0.
|
3
|
+
"version": "0.0.959",
|
4
4
|
"homepage": "https://bit.cloud/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.
|
9
|
+
"version": "0.0.959"
|
10
10
|
},
|
11
11
|
"dependencies": {
|
12
12
|
"body-parser": "1.19.0",
|
13
13
|
"express": "4.17.1",
|
14
14
|
"lodash": "4.17.21",
|
15
15
|
"@teambit/harmony": "0.4.6",
|
16
|
-
"@teambit/cli": "0.0.
|
17
|
-
"@teambit/logger": "0.0.
|
16
|
+
"@teambit/cli": "0.0.860",
|
17
|
+
"@teambit/logger": "0.0.953"
|
18
18
|
},
|
19
19
|
"devDependencies": {
|
20
20
|
"@types/express": "4.17.13",
|
21
21
|
"@types/lodash": "4.14.165",
|
22
22
|
"@types/mocha": "9.1.0",
|
23
23
|
"chai": "4.3.0",
|
24
|
-
"@teambit/harmony.envs.core-aspect-env": "0.0.
|
24
|
+
"@teambit/harmony.envs.core-aspect-env": "0.0.30"
|
25
25
|
},
|
26
26
|
"peerDependencies": {
|
27
27
|
"react": "^17.0.0 || ^18.0.0",
|
package/tsconfig.json
CHANGED
@@ -20,7 +20,8 @@
|
|
20
20
|
"emitDeclarationOnly": true,
|
21
21
|
"strict": true,
|
22
22
|
"strictPropertyInitialization": false,
|
23
|
-
"noImplicitAny": false
|
23
|
+
"noImplicitAny": false,
|
24
|
+
"composite": true
|
24
25
|
},
|
25
26
|
"exclude": [
|
26
27
|
"artifacts",
|
@@ -35,5 +36,13 @@
|
|
35
36
|
"include": [
|
36
37
|
"**/*",
|
37
38
|
"**/*.json"
|
39
|
+
],
|
40
|
+
"references": [
|
41
|
+
{
|
42
|
+
"path": "/home/circleci/Library/Caches/Bit/capsules/8891be5ad3d35bfc38b9cd90c0e05b598a5a55af/teambit.harmony_cli@0.0.860"
|
43
|
+
},
|
44
|
+
{
|
45
|
+
"path": "/home/circleci/Library/Caches/Bit/capsules/8891be5ad3d35bfc38b9cd90c0e05b598a5a55af/teambit.harmony_logger@0.0.953"
|
46
|
+
}
|
38
47
|
]
|
39
48
|
}
|
package/dist/express.aspect.d.ts
DELETED
@@ -1 +0,0 @@
|
|
1
|
-
export declare const Logo: () => import("react/jsx-runtime").JSX.Element;
|
@@ -1,72 +0,0 @@
|
|
1
|
-
/// <reference types="node" />
|
2
|
-
import { Server } from 'http';
|
3
|
-
import { SlotRegistry } from '@teambit/harmony';
|
4
|
-
import { Logger, LoggerMain } from '@teambit/logger';
|
5
|
-
import { Express } from 'express';
|
6
|
-
import { Route } from './types';
|
7
|
-
import { MiddlewareManifest } from './middleware-manifest';
|
8
|
-
export type ExpressConfig = {
|
9
|
-
port: number;
|
10
|
-
namespace: string;
|
11
|
-
loggerIgnorePath: string[];
|
12
|
-
};
|
13
|
-
export type MiddlewareSlot = SlotRegistry<MiddlewareManifest[]>;
|
14
|
-
export type RouteSlot = SlotRegistry<Route[]>;
|
15
|
-
export declare class ExpressMain {
|
16
|
-
/**
|
17
|
-
* extension config
|
18
|
-
*/
|
19
|
-
readonly config: ExpressConfig;
|
20
|
-
/**
|
21
|
-
* slot for registering graphql modules
|
22
|
-
*/
|
23
|
-
private moduleSlot;
|
24
|
-
/**
|
25
|
-
* logger extension.
|
26
|
-
*/
|
27
|
-
readonly logger: Logger;
|
28
|
-
readonly middlewareSlot: MiddlewareSlot;
|
29
|
-
static runtime: import("@teambit/harmony").RuntimeDefinition;
|
30
|
-
constructor(
|
31
|
-
/**
|
32
|
-
* extension config
|
33
|
-
*/
|
34
|
-
config: ExpressConfig,
|
35
|
-
/**
|
36
|
-
* slot for registering graphql modules
|
37
|
-
*/
|
38
|
-
moduleSlot: RouteSlot,
|
39
|
-
/**
|
40
|
-
* logger extension.
|
41
|
-
*/
|
42
|
-
logger: Logger, middlewareSlot: MiddlewareSlot);
|
43
|
-
/**
|
44
|
-
* start an express server.
|
45
|
-
*/
|
46
|
-
listen(port?: number): Promise<Server>;
|
47
|
-
/**
|
48
|
-
* register a new express routes.
|
49
|
-
* route will be added as `/api/${route}`
|
50
|
-
*/
|
51
|
-
register(routes: Route[]): this;
|
52
|
-
/**
|
53
|
-
* register a new middleware into express.
|
54
|
-
*/
|
55
|
-
registerMiddleware(middlewares: MiddlewareManifest[]): this;
|
56
|
-
private createRootRoutes;
|
57
|
-
createApp(expressApp?: Express, options?: {
|
58
|
-
disableBodyParser: true;
|
59
|
-
}): Express;
|
60
|
-
private createRoutes;
|
61
|
-
private verbValidation;
|
62
|
-
private catchErrorsMiddlewares;
|
63
|
-
private bodyParser;
|
64
|
-
static slots: (((registerFn: () => string) => SlotRegistry<Route[]>) | ((registerFn: () => string) => SlotRegistry<MiddlewareManifest[]>))[];
|
65
|
-
static dependencies: import("@teambit/harmony").Aspect[];
|
66
|
-
static defaultConfig: {
|
67
|
-
port: number;
|
68
|
-
namespace: string;
|
69
|
-
loggerIgnorePath: string[];
|
70
|
-
};
|
71
|
-
static provider([loggerFactory]: [LoggerMain], config: ExpressConfig, [routeSlot, middlewareSlot]: [RouteSlot, MiddlewareSlot]): Promise<ExpressMain>;
|
72
|
-
}
|
package/dist/index.d.ts
DELETED
@@ -1,7 +0,0 @@
|
|
1
|
-
export type { RouteSlot } from './express.main.runtime';
|
2
|
-
export type { Route } from './types';
|
3
|
-
export { Verb } from './types';
|
4
|
-
export type { Request, Response, NextFunction, Middleware } from './types';
|
5
|
-
export type { MiddlewareManifest } from './middleware-manifest';
|
6
|
-
export type { ExpressMain } from './express.main.runtime';
|
7
|
-
export { ExpressAspect } from './express.aspect';
|
@@ -1,8 +0,0 @@
|
|
1
|
-
import * as express from 'express';
|
2
|
-
interface ResponseError {
|
3
|
-
status?: number;
|
4
|
-
message?: string;
|
5
|
-
}
|
6
|
-
export declare const catchErrors: (action: any) => (req: express.Request, res: express.Response, next: express.NextFunction) => any;
|
7
|
-
export declare function errorHandle(err: ResponseError, req: express.Request, res: express.Response, next: express.NextFunction): express.Response<any, Record<string, any>>;
|
8
|
-
export {};
|
@@ -1 +0,0 @@
|
|
1
|
-
export { catchErrors, errorHandle } from './error';
|
package/dist/types/index.d.ts
DELETED
package/dist/types/next.d.ts
DELETED
package/dist/types/request.d.ts
DELETED
@@ -1 +0,0 @@
|
|
1
|
-
export type { Request } from 'express';
|
package/dist/types/response.d.ts
DELETED
package/dist/types/route.d.ts
DELETED
@@ -1,24 +0,0 @@
|
|
1
|
-
/// <reference types="express" />
|
2
|
-
import { NextFunction } from './next';
|
3
|
-
import { Request } from './request';
|
4
|
-
import { Response } from './response';
|
5
|
-
/**
|
6
|
-
* define express Middleware
|
7
|
-
*/
|
8
|
-
export type Middleware = (req: Request, res: Response, next: NextFunction) => void | Promise<any>;
|
9
|
-
export declare enum Verb {
|
10
|
-
WRITE = "write",
|
11
|
-
READ = "read"
|
12
|
-
}
|
13
|
-
/**
|
14
|
-
* express new Route
|
15
|
-
*/
|
16
|
-
export interface Route {
|
17
|
-
method: string;
|
18
|
-
route: string | RegExp;
|
19
|
-
disableNamespace?: boolean;
|
20
|
-
verb?: Verb;
|
21
|
-
middlewares: Middleware[];
|
22
|
-
/** route priority if 2 route with the same name default is 0 */
|
23
|
-
priority?: number;
|
24
|
-
}
|