@loopback/rest 4.0.0-alpha.8 → 5.0.1

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.
Files changed (388) hide show
  1. package/CHANGELOG.md +1822 -0
  2. package/LICENSE +1 -1
  3. package/README.md +30 -58
  4. package/dist/body-parsers/body-parser.d.ts +25 -0
  5. package/dist/body-parsers/body-parser.helpers.d.ts +44 -0
  6. package/dist/body-parsers/body-parser.helpers.js +102 -0
  7. package/dist/body-parsers/body-parser.helpers.js.map +1 -0
  8. package/dist/body-parsers/body-parser.js +159 -0
  9. package/dist/body-parsers/body-parser.js.map +1 -0
  10. package/dist/body-parsers/body-parser.json.d.ts +9 -0
  11. package/dist/body-parsers/body-parser.json.js +43 -0
  12. package/dist/body-parsers/body-parser.json.js.map +1 -0
  13. package/dist/body-parsers/body-parser.raw.d.ts +12 -0
  14. package/dist/body-parsers/body-parser.raw.js +39 -0
  15. package/dist/body-parsers/body-parser.raw.js.map +1 -0
  16. package/dist/body-parsers/body-parser.stream.d.ts +12 -0
  17. package/dist/body-parsers/body-parser.stream.js +28 -0
  18. package/dist/body-parsers/body-parser.stream.js.map +1 -0
  19. package/dist/body-parsers/body-parser.text.d.ts +9 -0
  20. package/dist/body-parsers/body-parser.text.js +38 -0
  21. package/dist/body-parsers/body-parser.text.js.map +1 -0
  22. package/dist/body-parsers/body-parser.urlencoded.d.ts +9 -0
  23. package/dist/body-parsers/body-parser.urlencoded.js +36 -0
  24. package/dist/body-parsers/body-parser.urlencoded.js.map +1 -0
  25. package/dist/body-parsers/index.d.ts +8 -0
  26. package/dist/body-parsers/index.js +16 -0
  27. package/dist/body-parsers/index.js.map +1 -0
  28. package/dist/body-parsers/types.d.ts +51 -0
  29. package/dist/body-parsers/types.js +12 -0
  30. package/dist/body-parsers/types.js.map +1 -0
  31. package/dist/coercion/coerce-parameter.d.ts +9 -0
  32. package/dist/coercion/coerce-parameter.js +166 -0
  33. package/dist/coercion/coerce-parameter.js.map +1 -0
  34. package/dist/coercion/utils.d.ts +43 -0
  35. package/dist/coercion/utils.js +96 -0
  36. package/dist/coercion/utils.js.map +1 -0
  37. package/dist/coercion/validator.d.ts +49 -0
  38. package/dist/coercion/validator.js +85 -0
  39. package/dist/coercion/validator.js.map +1 -0
  40. package/dist/http-handler.d.ts +38 -0
  41. package/dist/http-handler.js +68 -0
  42. package/dist/http-handler.js.map +1 -0
  43. package/dist/index.d.ts +36 -1
  44. package/dist/index.js +40 -6
  45. package/dist/index.js.map +1 -0
  46. package/dist/keys.d.ts +198 -0
  47. package/dist/keys.js +202 -0
  48. package/dist/keys.js.map +1 -0
  49. package/dist/parse-json.d.ts +11 -0
  50. package/dist/parse-json.js +42 -0
  51. package/dist/parse-json.js.map +1 -0
  52. package/dist/parser.d.ts +11 -0
  53. package/dist/parser.js +76 -0
  54. package/dist/parser.js.map +1 -0
  55. package/{dist6/src/providers/find-route.d.ts → dist/providers/find-route.provider.d.ts} +3 -1
  56. package/dist/providers/find-route.provider.js +36 -0
  57. package/dist/providers/find-route.provider.js.map +1 -0
  58. package/dist/providers/index.d.ts +6 -0
  59. package/dist/providers/index.js +14 -0
  60. package/dist/providers/index.js.map +1 -0
  61. package/dist/{src/providers/invoke-method.d.ts → providers/invoke-method.provider.d.ts} +3 -1
  62. package/dist/providers/invoke-method.provider.js +30 -0
  63. package/dist/providers/invoke-method.provider.js.map +1 -0
  64. package/dist/providers/log-error.provider.d.ts +6 -0
  65. package/dist/providers/log-error.provider.js +21 -0
  66. package/dist/providers/log-error.provider.js.map +1 -0
  67. package/dist/providers/parse-params.provider.d.ts +15 -0
  68. package/dist/providers/parse-params.provider.js +41 -0
  69. package/dist/providers/parse-params.provider.js.map +1 -0
  70. package/dist/providers/reject.provider.d.ts +10 -0
  71. package/dist/providers/reject.provider.js +47 -0
  72. package/dist/providers/reject.provider.js.map +1 -0
  73. package/dist/{src/providers/send.d.ts → providers/send.provider.d.ts} +1 -4
  74. package/dist/{src/providers/send.js → providers/send.provider.js} +4 -6
  75. package/dist/providers/send.provider.js.map +1 -0
  76. package/dist/request-context.d.ts +36 -0
  77. package/dist/request-context.js +104 -0
  78. package/dist/request-context.js.map +1 -0
  79. package/dist/rest-http-error.d.ts +37 -0
  80. package/dist/rest-http-error.js +51 -0
  81. package/dist/rest-http-error.js.map +1 -0
  82. package/dist/rest.application.d.ts +232 -0
  83. package/dist/rest.application.js +174 -0
  84. package/dist/rest.application.js.map +1 -0
  85. package/dist/rest.component.d.ts +15 -0
  86. package/dist/rest.component.js +72 -0
  87. package/dist/rest.component.js.map +1 -0
  88. package/dist/rest.server.d.ts +443 -0
  89. package/dist/rest.server.js +748 -0
  90. package/dist/rest.server.js.map +1 -0
  91. package/dist/router/base-route.d.ts +29 -0
  92. package/dist/router/base-route.js +41 -0
  93. package/dist/router/base-route.js.map +1 -0
  94. package/dist/router/controller-route.d.ts +61 -0
  95. package/dist/router/controller-route.js +160 -0
  96. package/dist/router/controller-route.js.map +1 -0
  97. package/dist/router/external-express-routes.d.ts +24 -0
  98. package/dist/router/external-express-routes.js +90 -0
  99. package/dist/router/external-express-routes.js.map +1 -0
  100. package/dist/router/handler-route.d.ts +12 -0
  101. package/dist/router/handler-route.js +30 -0
  102. package/dist/router/handler-route.js.map +1 -0
  103. package/dist/router/index.d.ts +14 -0
  104. package/dist/router/index.js +25 -0
  105. package/dist/router/index.js.map +1 -0
  106. package/dist/router/openapi-path.d.ts +14 -0
  107. package/dist/router/openapi-path.js +64 -0
  108. package/dist/router/openapi-path.js.map +1 -0
  109. package/dist/router/redirect-route.d.ts +23 -0
  110. package/dist/router/redirect-route.js +50 -0
  111. package/dist/router/redirect-route.js.map +1 -0
  112. package/dist/router/regexp-router.d.ts +25 -0
  113. package/dist/router/regexp-router.js +84 -0
  114. package/dist/router/regexp-router.js.map +1 -0
  115. package/dist/router/rest-router.d.ts +35 -0
  116. package/dist/{src/internal-types.js → router/rest-router.js} +2 -2
  117. package/dist/router/rest-router.js.map +1 -0
  118. package/dist/router/route-entry.d.ts +46 -0
  119. package/dist/router/route-entry.js +20 -0
  120. package/dist/router/route-entry.js.map +1 -0
  121. package/dist/router/route-sort.d.ts +7 -0
  122. package/dist/router/route-sort.js +75 -0
  123. package/dist/router/route-sort.js.map +1 -0
  124. package/dist/router/router-base.d.ts +42 -0
  125. package/dist/router/router-base.js +101 -0
  126. package/dist/router/router-base.js.map +1 -0
  127. package/dist/router/router-spec.d.ts +3 -0
  128. package/dist/router/router-spec.js +40 -0
  129. package/dist/router/router-spec.js.map +1 -0
  130. package/dist/router/routing-table.d.ts +32 -0
  131. package/dist/router/routing-table.js +86 -0
  132. package/dist/router/routing-table.js.map +1 -0
  133. package/dist/router/trie-router.d.ts +13 -0
  134. package/dist/router/trie-router.js +55 -0
  135. package/dist/router/trie-router.js.map +1 -0
  136. package/dist/router/trie.d.ts +59 -0
  137. package/dist/router/trie.js +180 -0
  138. package/dist/router/trie.js.map +1 -0
  139. package/{dist6/src → dist}/sequence.d.ts +28 -23
  140. package/dist/sequence.js +112 -0
  141. package/dist/sequence.js.map +1 -0
  142. package/dist/spec-enhancers/consolidate.spec-enhancer.d.ts +68 -0
  143. package/dist/spec-enhancers/consolidate.spec-enhancer.js +145 -0
  144. package/dist/spec-enhancers/consolidate.spec-enhancer.js.map +1 -0
  145. package/dist/spec-enhancers/info.spec-enhancer.d.ts +19 -0
  146. package/dist/spec-enhancers/info.spec-enhancer.js +89 -0
  147. package/dist/spec-enhancers/info.spec-enhancer.js.map +1 -0
  148. package/dist/types.d.ts +178 -0
  149. package/dist/types.js +12 -0
  150. package/dist/types.js.map +1 -0
  151. package/dist/validation/ajv-factory.provider.d.ts +12 -0
  152. package/dist/validation/ajv-factory.provider.js +87 -0
  153. package/dist/validation/ajv-factory.provider.js.map +1 -0
  154. package/dist/validation/request-body.validator.d.ts +14 -0
  155. package/dist/validation/request-body.validator.js +161 -0
  156. package/dist/validation/request-body.validator.js.map +1 -0
  157. package/dist/writer.d.ts +9 -0
  158. package/dist/writer.js +62 -0
  159. package/dist/writer.js.map +1 -0
  160. package/package.json +66 -38
  161. package/src/body-parsers/body-parser.helpers.ts +148 -0
  162. package/src/body-parsers/body-parser.json.ts +46 -0
  163. package/src/body-parsers/body-parser.raw.ts +42 -0
  164. package/src/body-parsers/body-parser.stream.ts +27 -0
  165. package/src/body-parsers/body-parser.text.ts +44 -0
  166. package/src/body-parsers/body-parser.ts +208 -0
  167. package/src/body-parsers/body-parser.urlencoded.ts +42 -0
  168. package/src/body-parsers/index.ts +13 -0
  169. package/src/body-parsers/types.ts +60 -0
  170. package/src/coercion/coerce-parameter.ts +207 -0
  171. package/src/coercion/utils.ts +103 -0
  172. package/src/coercion/validator.ts +98 -0
  173. package/src/http-handler.ts +84 -41
  174. package/src/index.ts +37 -30
  175. package/src/keys.ts +273 -20
  176. package/src/parse-json.ts +42 -0
  177. package/src/parser.ts +89 -104
  178. package/src/providers/{find-route.ts → find-route.provider.ts} +10 -7
  179. package/src/providers/index.ts +7 -9
  180. package/src/providers/{invoke-method.ts → invoke-method.provider.ts} +8 -5
  181. package/src/providers/log-error.provider.ts +27 -0
  182. package/src/providers/parse-params.provider.ts +42 -0
  183. package/src/providers/reject.provider.ts +44 -0
  184. package/src/providers/{send.ts → send.provider.ts} +2 -5
  185. package/src/request-context.ts +123 -0
  186. package/src/rest-http-error.ts +87 -0
  187. package/src/rest.application.ts +390 -0
  188. package/src/rest.component.ts +111 -0
  189. package/src/rest.server.ts +1192 -0
  190. package/src/router/base-route.ts +53 -0
  191. package/src/router/controller-route.ts +241 -0
  192. package/src/router/external-express-routes.ts +139 -0
  193. package/src/router/handler-route.ts +44 -0
  194. package/src/router/index.ts +24 -0
  195. package/src/router/openapi-path.ts +67 -0
  196. package/src/router/redirect-route.ts +64 -0
  197. package/src/router/regexp-router.ts +104 -0
  198. package/src/router/rest-router.ts +48 -0
  199. package/src/router/route-entry.ts +74 -0
  200. package/src/router/route-sort.ts +74 -0
  201. package/src/router/router-base.ts +124 -0
  202. package/src/router/router-spec.ts +36 -0
  203. package/src/router/routing-table.ts +83 -279
  204. package/src/router/trie-router.ts +57 -0
  205. package/src/router/trie.ts +233 -0
  206. package/src/sequence.ts +44 -37
  207. package/src/spec-enhancers/consolidate.spec-enhancer.ts +182 -0
  208. package/src/spec-enhancers/info.spec-enhancer.ts +92 -0
  209. package/src/types.ts +216 -0
  210. package/src/validation/ajv-factory.provider.ts +94 -0
  211. package/src/validation/request-body.validator.ts +208 -0
  212. package/src/writer.ts +41 -68
  213. package/api-docs/.DS_Store +0 -0
  214. package/api-docs/apple-touch-icon-114x114-precomposed.png +0 -0
  215. package/api-docs/apple-touch-icon-144x144-precomposed.png +0 -0
  216. package/api-docs/apple-touch-icon-57x57-precomposed.png +0 -0
  217. package/api-docs/apple-touch-icon-72x72-precomposed.png +0 -0
  218. package/api-docs/apple-touch-icon-precomposed.png +0 -0
  219. package/api-docs/apple-touch-icon.png +0 -0
  220. package/api-docs/css/bootstrap.min.css +0 -9
  221. package/api-docs/css/code-themes/arta.css +0 -158
  222. package/api-docs/css/code-themes/ascetic.css +0 -50
  223. package/api-docs/css/code-themes/brown_paper.css +0 -104
  224. package/api-docs/css/code-themes/brown_papersq.png +0 -0
  225. package/api-docs/css/code-themes/dark.css +0 -103
  226. package/api-docs/css/code-themes/default.css +0 -135
  227. package/api-docs/css/code-themes/far.css +0 -111
  228. package/api-docs/css/code-themes/github.css +0 -127
  229. package/api-docs/css/code-themes/googlecode.css +0 -144
  230. package/api-docs/css/code-themes/idea.css +0 -121
  231. package/api-docs/css/code-themes/ir_black.css +0 -104
  232. package/api-docs/css/code-themes/magula.css +0 -121
  233. package/api-docs/css/code-themes/monokai.css +0 -114
  234. package/api-docs/css/code-themes/pojoaque.css +0 -104
  235. package/api-docs/css/code-themes/pojoaque.jpg +0 -0
  236. package/api-docs/css/code-themes/rainbow.css +0 -114
  237. package/api-docs/css/code-themes/school_book.css +0 -111
  238. package/api-docs/css/code-themes/school_book.png +0 -0
  239. package/api-docs/css/code-themes/sl-theme.css +0 -45
  240. package/api-docs/css/code-themes/solarized_dark.css +0 -88
  241. package/api-docs/css/code-themes/solarized_light.css +0 -88
  242. package/api-docs/css/code-themes/sunburst.css +0 -158
  243. package/api-docs/css/code-themes/tomorrow-night-blue.css +0 -52
  244. package/api-docs/css/code-themes/tomorrow-night-bright.css +0 -51
  245. package/api-docs/css/code-themes/tomorrow-night-eighties.css +0 -51
  246. package/api-docs/css/code-themes/tomorrow-night.css +0 -52
  247. package/api-docs/css/code-themes/tomorrow.css +0 -49
  248. package/api-docs/css/code-themes/vs.css +0 -86
  249. package/api-docs/css/code-themes/xcode.css +0 -154
  250. package/api-docs/css/code-themes/zenburn.css +0 -115
  251. package/api-docs/css/main.css +0 -139
  252. package/api-docs/favicon.ico +0 -0
  253. package/api-docs/fonts/0ihfXUL2emPh0ROJezvraLO3LdcAZYWl9Si6vvxL-qU.woff +0 -0
  254. package/api-docs/fonts/OsJ2DjdpjqFRVUSto6IffLO3LdcAZYWl9Si6vvxL-qU.woff +0 -0
  255. package/api-docs/fonts/_aijTyevf54tkVDLy-dlnLO3LdcAZYWl9Si6vvxL-qU.woff +0 -0
  256. package/api-docs/index.html +0 -7082
  257. package/api-docs/js/main.js +0 -19
  258. package/api-docs/js/vendor/bootstrap.min.js +0 -6
  259. package/api-docs/js/vendor/jquery-1.10.1.min.js +0 -6
  260. package/api-docs/js/vendor/jquery.scrollTo-1.4.3.1.js +0 -218
  261. package/api-docs/js/vendor/modernizr-2.6.2-respond-1.1.0.min.js +0 -11
  262. package/dist/src/http-handler.d.ts +0 -19
  263. package/dist/src/http-handler.js +0 -43
  264. package/dist/src/http-handler.js.map +0 -1
  265. package/dist/src/index.d.ts +0 -14
  266. package/dist/src/index.js +0 -33
  267. package/dist/src/index.js.map +0 -1
  268. package/dist/src/internal-types.d.ts +0 -67
  269. package/dist/src/internal-types.js.map +0 -1
  270. package/dist/src/keys.d.ts +0 -22
  271. package/dist/src/keys.js +0 -35
  272. package/dist/src/keys.js.map +0 -1
  273. package/dist/src/parser.d.ts +0 -11
  274. package/dist/src/parser.js +0 -98
  275. package/dist/src/parser.js.map +0 -1
  276. package/dist/src/providers/bind-element.d.ts +0 -7
  277. package/dist/src/providers/bind-element.js +0 -34
  278. package/dist/src/providers/bind-element.js.map +0 -1
  279. package/dist/src/providers/find-route.d.ts +0 -9
  280. package/dist/src/providers/find-route.js +0 -42
  281. package/dist/src/providers/find-route.js.map +0 -1
  282. package/dist/src/providers/get-from-context.d.ts +0 -7
  283. package/dist/src/providers/get-from-context.js +0 -34
  284. package/dist/src/providers/get-from-context.js.map +0 -1
  285. package/dist/src/providers/index.d.ts +0 -8
  286. package/dist/src/providers/index.js +0 -18
  287. package/dist/src/providers/index.js.map +0 -1
  288. package/dist/src/providers/invoke-method.js +0 -36
  289. package/dist/src/providers/invoke-method.js.map +0 -1
  290. package/dist/src/providers/log-error-provider.d.ts +0 -6
  291. package/dist/src/providers/log-error-provider.js +0 -17
  292. package/dist/src/providers/log-error-provider.js.map +0 -1
  293. package/dist/src/providers/parse-params.d.ts +0 -13
  294. package/dist/src/providers/parse-params.js +0 -22
  295. package/dist/src/providers/parse-params.js.map +0 -1
  296. package/dist/src/providers/reject.d.ts +0 -6
  297. package/dist/src/providers/reject.js +0 -40
  298. package/dist/src/providers/reject.js.map +0 -1
  299. package/dist/src/providers/send.js.map +0 -1
  300. package/dist/src/rest-component.d.ts +0 -12
  301. package/dist/src/rest-component.js +0 -50
  302. package/dist/src/rest-component.js.map +0 -1
  303. package/dist/src/rest-server.d.ts +0 -211
  304. package/dist/src/rest-server.js +0 -426
  305. package/dist/src/rest-server.js.map +0 -1
  306. package/dist/src/router/metadata.d.ts +0 -150
  307. package/dist/src/router/metadata.js +0 -410
  308. package/dist/src/router/metadata.js.map +0 -1
  309. package/dist/src/router/routing-table.d.ts +0 -68
  310. package/dist/src/router/routing-table.js +0 -204
  311. package/dist/src/router/routing-table.js.map +0 -1
  312. package/dist/src/sequence.d.ts +0 -81
  313. package/dist/src/sequence.js +0 -104
  314. package/dist/src/sequence.js.map +0 -1
  315. package/dist/src/writer.d.ts +0 -17
  316. package/dist/src/writer.js +0 -87
  317. package/dist/src/writer.js.map +0 -1
  318. package/dist6/index.d.ts +0 -1
  319. package/dist6/index.js +0 -12
  320. package/dist6/src/http-handler.d.ts +0 -19
  321. package/dist6/src/http-handler.js +0 -53
  322. package/dist6/src/http-handler.js.map +0 -1
  323. package/dist6/src/index.d.ts +0 -14
  324. package/dist6/src/index.js +0 -33
  325. package/dist6/src/index.js.map +0 -1
  326. package/dist6/src/internal-types.d.ts +0 -67
  327. package/dist6/src/internal-types.js +0 -7
  328. package/dist6/src/internal-types.js.map +0 -1
  329. package/dist6/src/keys.d.ts +0 -22
  330. package/dist6/src/keys.js +0 -35
  331. package/dist6/src/keys.js.map +0 -1
  332. package/dist6/src/parser.d.ts +0 -11
  333. package/dist6/src/parser.js +0 -108
  334. package/dist6/src/parser.js.map +0 -1
  335. package/dist6/src/providers/bind-element.d.ts +0 -7
  336. package/dist6/src/providers/bind-element.js +0 -34
  337. package/dist6/src/providers/bind-element.js.map +0 -1
  338. package/dist6/src/providers/find-route.js +0 -42
  339. package/dist6/src/providers/find-route.js.map +0 -1
  340. package/dist6/src/providers/get-from-context.d.ts +0 -7
  341. package/dist6/src/providers/get-from-context.js +0 -34
  342. package/dist6/src/providers/get-from-context.js.map +0 -1
  343. package/dist6/src/providers/index.d.ts +0 -8
  344. package/dist6/src/providers/index.js +0 -18
  345. package/dist6/src/providers/index.js.map +0 -1
  346. package/dist6/src/providers/invoke-method.d.ts +0 -7
  347. package/dist6/src/providers/invoke-method.js +0 -44
  348. package/dist6/src/providers/invoke-method.js.map +0 -1
  349. package/dist6/src/providers/log-error-provider.d.ts +0 -6
  350. package/dist6/src/providers/log-error-provider.js +0 -17
  351. package/dist6/src/providers/log-error-provider.js.map +0 -1
  352. package/dist6/src/providers/parse-params.d.ts +0 -13
  353. package/dist6/src/providers/parse-params.js +0 -22
  354. package/dist6/src/providers/parse-params.js.map +0 -1
  355. package/dist6/src/providers/reject.d.ts +0 -6
  356. package/dist6/src/providers/reject.js +0 -40
  357. package/dist6/src/providers/reject.js.map +0 -1
  358. package/dist6/src/providers/send.d.ts +0 -15
  359. package/dist6/src/providers/send.js +0 -24
  360. package/dist6/src/providers/send.js.map +0 -1
  361. package/dist6/src/rest-component.d.ts +0 -12
  362. package/dist6/src/rest-component.js +0 -50
  363. package/dist6/src/rest-component.js.map +0 -1
  364. package/dist6/src/rest-server.d.ts +0 -211
  365. package/dist6/src/rest-server.js +0 -444
  366. package/dist6/src/rest-server.js.map +0 -1
  367. package/dist6/src/router/metadata.d.ts +0 -150
  368. package/dist6/src/router/metadata.js +0 -410
  369. package/dist6/src/router/metadata.js.map +0 -1
  370. package/dist6/src/router/routing-table.d.ts +0 -68
  371. package/dist6/src/router/routing-table.js +0 -218
  372. package/dist6/src/router/routing-table.js.map +0 -1
  373. package/dist6/src/sequence.js +0 -114
  374. package/dist6/src/sequence.js.map +0 -1
  375. package/dist6/src/writer.d.ts +0 -17
  376. package/dist6/src/writer.js +0 -87
  377. package/dist6/src/writer.js.map +0 -1
  378. package/index.d.ts +0 -6
  379. package/index.js +0 -9
  380. package/src/internal-types.ts +0 -96
  381. package/src/providers/bind-element.ts +0 -15
  382. package/src/providers/get-from-context.ts +0 -16
  383. package/src/providers/log-error-provider.ts +0 -23
  384. package/src/providers/parse-params.ts +0 -20
  385. package/src/providers/reject.ts +0 -27
  386. package/src/rest-component.ts +0 -54
  387. package/src/rest-server.ts +0 -584
  388. package/src/router/metadata.ts +0 -517
@@ -0,0 +1 @@
1
+ {"version":3,"file":"rest.server.js","sourceRoot":"","sources":["../src/rest.server.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,29 @@
1
+ import { Context, InvocationSource } from '@loopback/context';
2
+ import { OperationObject } from '@loopback/openapi-v3';
3
+ import { OperationArgs, OperationRetval } from '../types';
4
+ import { RouteEntry } from './route-entry';
5
+ /**
6
+ * Base implementation of RouteEntry
7
+ */
8
+ export declare abstract class BaseRoute implements RouteEntry {
9
+ readonly path: string;
10
+ readonly spec: OperationObject;
11
+ readonly verb: string;
12
+ /**
13
+ * Construct a new route
14
+ * @param verb - http verb
15
+ * @param path - http request path pattern
16
+ * @param spec - OpenAPI operation spec
17
+ */
18
+ constructor(verb: string, path: string, spec: OperationObject);
19
+ abstract updateBindings(requestContext: Context): void;
20
+ abstract invokeHandler(requestContext: Context, args: OperationArgs): Promise<OperationRetval>;
21
+ describe(): string;
22
+ toString(): string;
23
+ }
24
+ export declare class RouteSource implements InvocationSource<RouteEntry> {
25
+ readonly value: RouteEntry;
26
+ type: string;
27
+ constructor(value: RouteEntry);
28
+ toString(): string;
29
+ }
@@ -0,0 +1,41 @@
1
+ "use strict";
2
+ // Copyright IBM Corp. 2018,2020. All Rights Reserved.
3
+ // Node module: @loopback/rest
4
+ // This file is licensed under the MIT License.
5
+ // License text available at https://opensource.org/licenses/MIT
6
+ Object.defineProperty(exports, "__esModule", { value: true });
7
+ exports.RouteSource = exports.BaseRoute = void 0;
8
+ /**
9
+ * Base implementation of RouteEntry
10
+ */
11
+ class BaseRoute {
12
+ /**
13
+ * Construct a new route
14
+ * @param verb - http verb
15
+ * @param path - http request path pattern
16
+ * @param spec - OpenAPI operation spec
17
+ */
18
+ constructor(verb, path, spec) {
19
+ this.path = path;
20
+ this.spec = spec;
21
+ this.verb = verb.toLowerCase();
22
+ }
23
+ describe() {
24
+ return `"${this.verb} ${this.path}"`;
25
+ }
26
+ toString() {
27
+ return `${this.constructor.name} - ${this.verb} ${this.path}`;
28
+ }
29
+ }
30
+ exports.BaseRoute = BaseRoute;
31
+ class RouteSource {
32
+ constructor(value) {
33
+ this.value = value;
34
+ this.type = 'route';
35
+ }
36
+ toString() {
37
+ return `${this.value.verb} ${this.value.path}`;
38
+ }
39
+ }
40
+ exports.RouteSource = RouteSource;
41
+ //# sourceMappingURL=base-route.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"base-route.js","sourceRoot":"","sources":["../../src/router/base-route.ts"],"names":[],"mappings":";AAAA,sDAAsD;AACtD,8BAA8B;AAC9B,+CAA+C;AAC/C,gEAAgE;;;AAOhE;;GAEG;AACH,MAAsB,SAAS;IAG7B;;;;;OAKG;IACH,YACE,IAAY,EACI,IAAY,EACZ,IAAqB;QADrB,SAAI,GAAJ,IAAI,CAAQ;QACZ,SAAI,GAAJ,IAAI,CAAiB;QAErC,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC;IACjC,CAAC;IASD,QAAQ;QACN,OAAO,IAAI,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,IAAI,GAAG,CAAC;IACvC,CAAC;IAED,QAAQ;QACN,OAAO,GAAG,IAAI,CAAC,WAAW,CAAC,IAAI,MAAM,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC;IAChE,CAAC;CACF;AA/BD,8BA+BC;AAED,MAAa,WAAW;IAEtB,YAAqB,KAAiB;QAAjB,UAAK,GAAL,KAAK,CAAY;QADtC,SAAI,GAAG,OAAO,CAAC;IAC0B,CAAC;IAC1C,QAAQ;QACN,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,IAAI,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC;IACjD,CAAC;CACF;AAND,kCAMC"}
@@ -0,0 +1,61 @@
1
+ import { Constructor, Context, ValueOrPromise } from '@loopback/context';
2
+ import { ControllerSpec, OperationObject } from '@loopback/openapi-v3';
3
+ import { OperationArgs, OperationRetval } from '../types';
4
+ import { BaseRoute } from './base-route';
5
+ export declare type ControllerInstance = {
6
+ [name: string]: any;
7
+ } & object;
8
+ /**
9
+ * A factory function to create controller instances synchronously or
10
+ * asynchronously
11
+ */
12
+ export declare type ControllerFactory<T extends ControllerInstance> = (ctx: Context) => ValueOrPromise<T>;
13
+ /**
14
+ * Controller class
15
+ */
16
+ export declare type ControllerClass<T extends ControllerInstance> = Constructor<T>;
17
+ /**
18
+ * A route backed by a controller
19
+ */
20
+ export declare class ControllerRoute<T> extends BaseRoute {
21
+ protected readonly _controllerCtor: ControllerClass<T>;
22
+ protected readonly _controllerName: string;
23
+ protected readonly _methodName: string;
24
+ protected readonly _controllerFactory: ControllerFactory<T>;
25
+ /**
26
+ * Construct a controller based route
27
+ * @param verb - http verb
28
+ * @param path - http request path
29
+ * @param spec - OpenAPI operation spec
30
+ * @param controllerCtor - Controller class
31
+ * @param controllerFactory - A factory function to create a controller instance
32
+ * @param methodName - Controller method name, default to `x-operation-name`
33
+ */
34
+ constructor(verb: string, path: string, spec: OperationObject, controllerCtor: ControllerClass<T>, controllerFactory?: ControllerFactory<T>, methodName?: string);
35
+ describe(): string;
36
+ updateBindings(requestContext: Context): void;
37
+ invokeHandler(requestContext: Context, args: OperationArgs): Promise<OperationRetval>;
38
+ }
39
+ /**
40
+ * Create a controller factory function for a given binding key
41
+ * @param key - Binding key
42
+ */
43
+ export declare function createControllerFactoryForBinding<T>(key: string): ControllerFactory<T>;
44
+ /**
45
+ * Create a controller factory function for a given class
46
+ * @param controllerCtor - Controller class
47
+ */
48
+ export declare function createControllerFactoryForClass<T>(controllerCtor: ControllerClass<T>): ControllerFactory<T>;
49
+ /**
50
+ * Create a controller factory function for a given instance
51
+ * @param controllerCtor - Controller instance
52
+ */
53
+ export declare function createControllerFactoryForInstance<T>(controllerInst: T): ControllerFactory<T>;
54
+ /**
55
+ * Create routes for a controller with the given spec
56
+ * @param spec - Controller spec
57
+ * @param controllerCtor - Controller class
58
+ * @param controllerFactory - Controller factory
59
+ */
60
+ export declare function createRoutesForController<T>(spec: ControllerSpec, controllerCtor: ControllerClass<T>, controllerFactory?: ControllerFactory<T>): ControllerRoute<T>[];
61
+ export declare function joinPath(basePath: string, path: string): string;
@@ -0,0 +1,160 @@
1
+ "use strict";
2
+ // Copyright IBM Corp. 2018,2020. All Rights Reserved.
3
+ // Node module: @loopback/rest
4
+ // This file is licensed under the MIT License.
5
+ // License text available at https://opensource.org/licenses/MIT
6
+ Object.defineProperty(exports, "__esModule", { value: true });
7
+ exports.joinPath = exports.createRoutesForController = exports.createControllerFactoryForInstance = exports.createControllerFactoryForClass = exports.createControllerFactoryForBinding = exports.ControllerRoute = void 0;
8
+ const tslib_1 = require("tslib");
9
+ const context_1 = require("@loopback/context");
10
+ const core_1 = require("@loopback/core");
11
+ const assert_1 = tslib_1.__importDefault(require("assert"));
12
+ const debug_1 = tslib_1.__importDefault(require("debug"));
13
+ const http_errors_1 = tslib_1.__importDefault(require("http-errors"));
14
+ const util_1 = require("util");
15
+ const keys_1 = require("../keys");
16
+ const base_route_1 = require("./base-route");
17
+ const debug = debug_1.default('loopback:rest:controller-route');
18
+ /**
19
+ * A route backed by a controller
20
+ */
21
+ class ControllerRoute extends base_route_1.BaseRoute {
22
+ /**
23
+ * Construct a controller based route
24
+ * @param verb - http verb
25
+ * @param path - http request path
26
+ * @param spec - OpenAPI operation spec
27
+ * @param controllerCtor - Controller class
28
+ * @param controllerFactory - A factory function to create a controller instance
29
+ * @param methodName - Controller method name, default to `x-operation-name`
30
+ */
31
+ constructor(verb, path, spec, controllerCtor, controllerFactory, methodName) {
32
+ const controllerName = spec['x-controller-name'] || controllerCtor.name;
33
+ methodName = methodName !== null && methodName !== void 0 ? methodName : spec['x-operation-name'];
34
+ if (!methodName) {
35
+ throw new Error('methodName must be provided either via the ControllerRoute argument ' +
36
+ 'or via "x-operation-name" extension field in OpenAPI spec. ' +
37
+ `Operation: "${verb} ${path}" ` +
38
+ `Controller: ${controllerName}.`);
39
+ }
40
+ super(verb, path,
41
+ // Add x-controller-name and x-operation-name if not present
42
+ Object.assign({
43
+ 'x-controller-name': controllerName,
44
+ 'x-operation-name': methodName,
45
+ tags: [controllerName],
46
+ }, spec));
47
+ this._controllerFactory = controllerFactory !== null && controllerFactory !== void 0 ? controllerFactory : createControllerFactoryForClass(controllerCtor);
48
+ this._controllerCtor = controllerCtor;
49
+ this._controllerName = controllerName || controllerCtor.name;
50
+ this._methodName = methodName;
51
+ }
52
+ describe() {
53
+ return `${this._controllerName}.${this._methodName}`;
54
+ }
55
+ updateBindings(requestContext) {
56
+ /*
57
+ * Bind current controller to the request context in `SINGLETON` scope.
58
+ * Within the same request, we always get the same instance of the
59
+ * current controller when `requestContext.get(CoreBindings.CONTROLLER_CURRENT)`
60
+ * is invoked.
61
+ *
62
+ * Please note the controller class itself can be bound to other scopes,
63
+ * such as SINGLETON or TRANSIENT (default) in the application or server
64
+ * context.
65
+ *
66
+ * - SINGLETON: all requests share the same instance of a given controller
67
+ * - TRANSIENT: each request has its own instance of a given controller
68
+ */
69
+ requestContext
70
+ .bind(core_1.CoreBindings.CONTROLLER_CURRENT)
71
+ .toDynamicValue(() => this._controllerFactory(requestContext))
72
+ .inScope(context_1.BindingScope.SINGLETON);
73
+ requestContext.bind(core_1.CoreBindings.CONTROLLER_CLASS).to(this._controllerCtor);
74
+ requestContext
75
+ .bind(core_1.CoreBindings.CONTROLLER_METHOD_NAME)
76
+ .to(this._methodName);
77
+ requestContext.bind(keys_1.RestBindings.OPERATION_SPEC_CURRENT).to(this.spec);
78
+ }
79
+ async invokeHandler(requestContext, args) {
80
+ const controller = await requestContext.get('controller.current');
81
+ if (typeof controller[this._methodName] !== 'function') {
82
+ throw new http_errors_1.default.NotFound(`Controller method not found: ${this.describe()}`);
83
+ }
84
+ // Invoke the method with dependency injection
85
+ return context_1.invokeMethod(controller, this._methodName, requestContext, args, {
86
+ source: new base_route_1.RouteSource(this),
87
+ });
88
+ }
89
+ }
90
+ exports.ControllerRoute = ControllerRoute;
91
+ /**
92
+ * Create a controller factory function for a given binding key
93
+ * @param key - Binding key
94
+ */
95
+ function createControllerFactoryForBinding(key) {
96
+ return ctx => ctx.get(key);
97
+ }
98
+ exports.createControllerFactoryForBinding = createControllerFactoryForBinding;
99
+ /**
100
+ * Create a controller factory function for a given class
101
+ * @param controllerCtor - Controller class
102
+ */
103
+ function createControllerFactoryForClass(controllerCtor) {
104
+ return async (ctx) => {
105
+ // By default, we get an instance of the controller from the context
106
+ // using `controllers.<controllerName>` as the key
107
+ let inst = await ctx.get(`controllers.${controllerCtor.name}`, {
108
+ optional: true,
109
+ });
110
+ if (inst === undefined) {
111
+ inst = await context_1.instantiateClass(controllerCtor, ctx);
112
+ }
113
+ return inst;
114
+ };
115
+ }
116
+ exports.createControllerFactoryForClass = createControllerFactoryForClass;
117
+ /**
118
+ * Create a controller factory function for a given instance
119
+ * @param controllerCtor - Controller instance
120
+ */
121
+ function createControllerFactoryForInstance(controllerInst) {
122
+ return ctx => controllerInst;
123
+ }
124
+ exports.createControllerFactoryForInstance = createControllerFactoryForInstance;
125
+ /**
126
+ * Create routes for a controller with the given spec
127
+ * @param spec - Controller spec
128
+ * @param controllerCtor - Controller class
129
+ * @param controllerFactory - Controller factory
130
+ */
131
+ function createRoutesForController(spec, controllerCtor, controllerFactory) {
132
+ var _a;
133
+ const routes = [];
134
+ assert_1.default(typeof spec === 'object' && !!spec, 'API specification must be a non-null object');
135
+ if (!spec.paths || !Object.keys(spec.paths).length) {
136
+ return routes;
137
+ }
138
+ debug('Creating route for controller with API %s', util_1.inspect(spec, { depth: null }));
139
+ const basePath = (_a = spec.basePath) !== null && _a !== void 0 ? _a : '/';
140
+ for (const p in spec.paths) {
141
+ for (const verb in spec.paths[p]) {
142
+ const opSpec = spec.paths[p][verb];
143
+ const fullPath = joinPath(basePath, p);
144
+ const route = new ControllerRoute(verb, fullPath, opSpec, controllerCtor, controllerFactory);
145
+ routes.push(route);
146
+ }
147
+ }
148
+ return routes;
149
+ }
150
+ exports.createRoutesForController = createRoutesForController;
151
+ function joinPath(basePath, path) {
152
+ const fullPath = [basePath, path]
153
+ .join('/') // Join by /
154
+ .replace(/(\/){2,}/g, '/') // Remove extra /
155
+ .replace(/\/$/, '') // Remove trailing /
156
+ .replace(/^(\/)?/, '/'); // Add leading /
157
+ return fullPath;
158
+ }
159
+ exports.joinPath = joinPath;
160
+ //# sourceMappingURL=controller-route.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"controller-route.js","sourceRoot":"","sources":["../../src/router/controller-route.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,24 @@
1
+ import { ExpressRequestHandler, Request } from '@loopback/express';
2
+ import { OpenApiSpec } from '@loopback/openapi-v3';
3
+ import express from 'express';
4
+ import { PathParams } from 'express-serve-static-core';
5
+ import { ServeStaticOptions } from 'serve-static';
6
+ import { ResolvedRoute } from './route-entry';
7
+ import { RouterSpec } from './router-spec';
8
+ /**
9
+ * A registry of external, Express-style routes. These routes are invoked
10
+ * _after_ no LB4 route (controller or handler based) matched the incoming
11
+ * request.
12
+ *
13
+ * @internal
14
+ */
15
+ export declare class ExternalExpressRoutes {
16
+ protected _externalRoutes: express.Router;
17
+ protected _staticRoutes: express.Router;
18
+ protected _specForExternalRoutes: RouterSpec;
19
+ get routerSpec(): RouterSpec;
20
+ registerAssets(path: PathParams, rootDir: string, options?: ServeStaticOptions): void;
21
+ mountRouter(basePath: string, router: ExpressRequestHandler, spec?: RouterSpec): void;
22
+ find(request: Request): ResolvedRoute;
23
+ }
24
+ export declare function rebaseOpenApiSpec<T extends Partial<OpenApiSpec>>(spec: T, basePath: string): T;
@@ -0,0 +1,90 @@
1
+ "use strict";
2
+ // Copyright IBM Corp. 2019. All Rights Reserved.
3
+ // Node module: @loopback/rest
4
+ // This file is licensed under the MIT License.
5
+ // License text available at https://opensource.org/licenses/MIT
6
+ Object.defineProperty(exports, "__esModule", { value: true });
7
+ exports.rebaseOpenApiSpec = exports.ExternalExpressRoutes = void 0;
8
+ const tslib_1 = require("tslib");
9
+ const express_1 = require("@loopback/express");
10
+ const express_2 = tslib_1.__importDefault(require("express"));
11
+ const http_errors_1 = tslib_1.__importDefault(require("http-errors"));
12
+ const router_spec_1 = require("./router-spec");
13
+ /**
14
+ * A registry of external, Express-style routes. These routes are invoked
15
+ * _after_ no LB4 route (controller or handler based) matched the incoming
16
+ * request.
17
+ *
18
+ * @internal
19
+ */
20
+ class ExternalExpressRoutes {
21
+ constructor() {
22
+ this._externalRoutes = express_2.default.Router();
23
+ this._staticRoutes = express_2.default.Router();
24
+ this._specForExternalRoutes = { paths: {} };
25
+ }
26
+ get routerSpec() {
27
+ return this._specForExternalRoutes;
28
+ }
29
+ registerAssets(path, rootDir, options) {
30
+ this._staticRoutes.use(path, express_2.default.static(rootDir, options));
31
+ }
32
+ mountRouter(basePath, router, spec = { paths: {} }) {
33
+ this._externalRoutes.use(basePath, router);
34
+ spec = rebaseOpenApiSpec(spec, basePath);
35
+ router_spec_1.assignRouterSpec(this._specForExternalRoutes, spec);
36
+ }
37
+ find(request) {
38
+ return new ExternalRoute(this._externalRoutes, this._staticRoutes, request.method, request.url, {
39
+ description: 'External route or a static asset',
40
+ 'x-visibility': 'undocumented',
41
+ responses: {},
42
+ });
43
+ }
44
+ }
45
+ exports.ExternalExpressRoutes = ExternalExpressRoutes;
46
+ class ExternalRoute {
47
+ constructor(_externalRouter, _staticAssets, verb, path, spec) {
48
+ this._externalRouter = _externalRouter;
49
+ this._staticAssets = _staticAssets;
50
+ this.verb = verb;
51
+ this.path = path;
52
+ this.spec = spec;
53
+ // ResolvedRoute API
54
+ this.pathParams = [];
55
+ this.schemas = {};
56
+ }
57
+ updateBindings(requestContext) {
58
+ // no-op
59
+ }
60
+ async invokeHandler({ request, response }, args) {
61
+ let handled = await express_1.executeExpressRequestHandler(this._externalRouter, request, response);
62
+ if (handled)
63
+ return;
64
+ handled = await express_1.executeExpressRequestHandler(this._staticAssets, request, response);
65
+ if (handled)
66
+ return;
67
+ // Express router called next, which means no route was matched
68
+ throw new http_errors_1.default.NotFound(`Endpoint "${request.method} ${request.path}" not found.`);
69
+ }
70
+ describe() {
71
+ // TODO(bajtos) provide better description for Express routes with spec
72
+ return `External Express route "${this.verb} ${this.path}"`;
73
+ }
74
+ }
75
+ function rebaseOpenApiSpec(spec, basePath) {
76
+ if (!spec.paths)
77
+ return spec;
78
+ if (!basePath || basePath === '/')
79
+ return spec;
80
+ const localPaths = spec.paths;
81
+ // Don't modify the spec object provided to us.
82
+ spec = Object.assign({}, spec);
83
+ spec.paths = {};
84
+ for (const url in localPaths) {
85
+ spec.paths[`${basePath}${url}`] = localPaths[url];
86
+ }
87
+ return spec;
88
+ }
89
+ exports.rebaseOpenApiSpec = rebaseOpenApiSpec;
90
+ //# sourceMappingURL=external-express-routes.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"external-express-routes.js","sourceRoot":"","sources":["../../src/router/external-express-routes.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,12 @@
1
+ import { Context } from '@loopback/context';
2
+ import { OperationObject } from '@loopback/openapi-v3';
3
+ import { OperationArgs, OperationRetval } from '../types';
4
+ import { BaseRoute } from './base-route';
5
+ export declare class Route extends BaseRoute {
6
+ readonly spec: OperationObject;
7
+ protected readonly _handler: Function;
8
+ constructor(verb: string, path: string, spec: OperationObject, _handler: Function);
9
+ describe(): string;
10
+ updateBindings(requestContext: Context): void;
11
+ invokeHandler(requestContext: Context, args: OperationArgs): Promise<OperationRetval>;
12
+ }
@@ -0,0 +1,30 @@
1
+ "use strict";
2
+ // Copyright IBM Corp. 2018,2020. All Rights Reserved.
3
+ // Node module: @loopback/rest
4
+ // This file is licensed under the MIT License.
5
+ // License text available at https://opensource.org/licenses/MIT
6
+ Object.defineProperty(exports, "__esModule", { value: true });
7
+ exports.Route = void 0;
8
+ const context_1 = require("@loopback/context");
9
+ const keys_1 = require("../keys");
10
+ const base_route_1 = require("./base-route");
11
+ class Route extends base_route_1.BaseRoute {
12
+ constructor(verb, path, spec, _handler) {
13
+ super(verb, path, spec);
14
+ this.spec = spec;
15
+ this._handler = _handler;
16
+ }
17
+ describe() {
18
+ return this._handler.name || super.describe();
19
+ }
20
+ updateBindings(requestContext) {
21
+ requestContext.bind(keys_1.RestBindings.OPERATION_SPEC_CURRENT).to(this.spec);
22
+ }
23
+ async invokeHandler(requestContext, args) {
24
+ // Use `invokeMethodWithInterceptors` to invoke the handler function so
25
+ // that global interceptors are applied
26
+ return context_1.invokeMethodWithInterceptors(requestContext, this, '_handler', args, { source: new base_route_1.RouteSource(this) });
27
+ }
28
+ }
29
+ exports.Route = Route;
30
+ //# sourceMappingURL=handler-route.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"handler-route.js","sourceRoot":"","sources":["../../src/router/handler-route.ts"],"names":[],"mappings":";AAAA,sDAAsD;AACtD,8BAA8B;AAC9B,+CAA+C;AAC/C,gEAAgE;;;AAEhE,+CAAwE;AAExE,kCAAqC;AAErC,6CAAoD;AAEpD,MAAa,KAAM,SAAQ,sBAAS;IAClC,YACE,IAAY,EACZ,IAAY,EACI,IAAqB,EAClB,QAAkB;QAErC,KAAK,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;QAHR,SAAI,GAAJ,IAAI,CAAiB;QAClB,aAAQ,GAAR,QAAQ,CAAU;IAGvC,CAAC;IAED,QAAQ;QACN,OAAO,IAAI,CAAC,QAAQ,CAAC,IAAI,IAAI,KAAK,CAAC,QAAQ,EAAE,CAAC;IAChD,CAAC;IAED,cAAc,CAAC,cAAuB;QACpC,cAAc,CAAC,IAAI,CAAC,mBAAY,CAAC,sBAAsB,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACzE,CAAC;IAED,KAAK,CAAC,aAAa,CACjB,cAAuB,EACvB,IAAmB;QAEnB,uEAAuE;QACvE,uCAAuC;QACvC,OAAO,sCAA4B,CACjC,cAAc,EACd,IAAI,EACJ,UAAU,EACV,IAAI,EACJ,EAAC,MAAM,EAAE,IAAI,wBAAW,CAAC,IAAI,CAAC,EAAC,CAChC,CAAC;IACJ,CAAC;CACF;AAhCD,sBAgCC"}
@@ -0,0 +1,14 @@
1
+ export * from './route-entry';
2
+ export * from './base-route';
3
+ export * from './controller-route';
4
+ export * from './handler-route';
5
+ export * from './external-express-routes';
6
+ export * from './redirect-route';
7
+ export * from './rest-router';
8
+ export * from './trie-router';
9
+ export * from './regexp-router';
10
+ export * from './routing-table';
11
+ export * from './route-sort';
12
+ export * from './openapi-path';
13
+ export * from './trie';
14
+ export * from './router-spec';
@@ -0,0 +1,25 @@
1
+ "use strict";
2
+ // Copyright IBM Corp. 2018,2019. All Rights Reserved.
3
+ // Node module: @loopback/rest
4
+ // This file is licensed under the MIT License.
5
+ // License text available at https://opensource.org/licenses/MIT
6
+ Object.defineProperty(exports, "__esModule", { value: true });
7
+ const tslib_1 = require("tslib");
8
+ // routes
9
+ tslib_1.__exportStar(require("./route-entry"), exports);
10
+ tslib_1.__exportStar(require("./base-route"), exports);
11
+ tslib_1.__exportStar(require("./controller-route"), exports);
12
+ tslib_1.__exportStar(require("./handler-route"), exports);
13
+ tslib_1.__exportStar(require("./external-express-routes"), exports);
14
+ tslib_1.__exportStar(require("./redirect-route"), exports);
15
+ // routers
16
+ tslib_1.__exportStar(require("./rest-router"), exports);
17
+ tslib_1.__exportStar(require("./trie-router"), exports);
18
+ tslib_1.__exportStar(require("./regexp-router"), exports);
19
+ // helpers
20
+ tslib_1.__exportStar(require("./routing-table"), exports);
21
+ tslib_1.__exportStar(require("./route-sort"), exports);
22
+ tslib_1.__exportStar(require("./openapi-path"), exports);
23
+ tslib_1.__exportStar(require("./trie"), exports);
24
+ tslib_1.__exportStar(require("./router-spec"), exports);
25
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/router/index.ts"],"names":[],"mappings":";AAAA,sDAAsD;AACtD,8BAA8B;AAC9B,+CAA+C;AAC/C,gEAAgE;;;AAEhE,SAAS;AACT,wDAA8B;AAC9B,uDAA6B;AAC7B,6DAAmC;AACnC,0DAAgC;AAChC,oEAA0C;AAC1C,2DAAiC;AAEjC,UAAU;AACV,wDAA8B;AAC9B,wDAA8B;AAC9B,0DAAgC;AAEhC,UAAU;AACV,0DAAgC;AAChC,uDAA6B;AAC7B,yDAA+B;AAC/B,iDAAuB;AACvB,wDAA8B"}
@@ -0,0 +1,14 @@
1
+ /**
2
+ * Validate the path to be compatible with OpenAPI path template. No parameter
3
+ * modifier, custom pattern, or unnamed parameter is allowed.
4
+ */
5
+ export declare function validateApiPath(path?: string): string;
6
+ /**
7
+ * Get all path variables. For example, `/root/{foo}/bar` => `['foo']`
8
+ */
9
+ export declare function getPathVariables(path: string): RegExpMatchArray | null;
10
+ /**
11
+ * Convert an OpenAPI path to Express (path-to-regexp) style
12
+ * @param path - OpenAPI path with optional variables as `{var}`
13
+ */
14
+ export declare function toExpressPath(path: string): string;
@@ -0,0 +1,64 @@
1
+ "use strict";
2
+ // Copyright IBM Corp. 2018,2019. All Rights Reserved.
3
+ // Node module: @loopback/rest
4
+ // This file is licensed under the MIT License.
5
+ // License text available at https://opensource.org/licenses/MIT
6
+ Object.defineProperty(exports, "__esModule", { value: true });
7
+ exports.toExpressPath = exports.getPathVariables = exports.validateApiPath = void 0;
8
+ const path_to_regexp_1 = require("path-to-regexp");
9
+ /**
10
+ * OpenAPI spec 3.x does not specify the valid forms of path templates.
11
+ *
12
+ * Other ones such as [URI Template](https://tools.ietf.org/html/rfc6570#section-2.3)
13
+ * or [path-to-regexp](https://github.com/pillarjs/path-to-regexp#named-parameters)
14
+ * allows `[A-Za-z0-9_]`
15
+ */
16
+ const POSSIBLE_VARNAME_PATTERN = /\{([^\}]+)\}/g;
17
+ const VALID_VARNAME_PATTERN = /^[A-Za-z0-9_]+$/;
18
+ /**
19
+ * Validate the path to be compatible with OpenAPI path template. No parameter
20
+ * modifier, custom pattern, or unnamed parameter is allowed.
21
+ */
22
+ function validateApiPath(path = '/') {
23
+ const tokens = path_to_regexp_1.parse(path);
24
+ for (const token of tokens) {
25
+ if (typeof token === 'string')
26
+ continue;
27
+ if (typeof token === 'object') {
28
+ const name = token.name;
29
+ if (typeof name === 'string' && name !== '') {
30
+ throw new Error(`Invalid path template: '${path}'. Please use {${name}} instead of ':${name}'`);
31
+ }
32
+ if (typeof name === 'number') {
33
+ throw new Error(`Unnamed parameter is not allowed in path '${path}'`);
34
+ }
35
+ const valid = token.prefix.match(VALID_VARNAME_PATTERN);
36
+ if (!valid) {
37
+ throw new Error(`Invalid parameter name '${token.prefix}' found in path '${path}'`);
38
+ }
39
+ if (['?', '+', '*'].includes(token.modifier)) {
40
+ throw new Error(`Parameter modifier '{${token.prefix}}${token.modifier}' is not allowed in path '${path}`);
41
+ }
42
+ }
43
+ }
44
+ return path;
45
+ }
46
+ exports.validateApiPath = validateApiPath;
47
+ /**
48
+ * Get all path variables. For example, `/root/{foo}/bar` => `['foo']`
49
+ */
50
+ function getPathVariables(path) {
51
+ return path.match(POSSIBLE_VARNAME_PATTERN);
52
+ }
53
+ exports.getPathVariables = getPathVariables;
54
+ /**
55
+ * Convert an OpenAPI path to Express (path-to-regexp) style
56
+ * @param path - OpenAPI path with optional variables as `{var}`
57
+ */
58
+ function toExpressPath(path) {
59
+ // Convert `.` to `\\.` so that path-to-regexp will treat it as the plain
60
+ // `.` character
61
+ return path.replace(POSSIBLE_VARNAME_PATTERN, '{:$1}').replace('.', '\\.');
62
+ }
63
+ exports.toExpressPath = toExpressPath;
64
+ //# sourceMappingURL=openapi-path.js.map