@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
@@ -1,410 +0,0 @@
1
- "use strict";
2
- // Copyright IBM Corp. 2017. 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 assert = require("assert");
8
- const context_1 = require("@loopback/context");
9
- const debug = require('debug')('loopback:core:router:metadata');
10
- const ENDPOINTS_KEY = 'rest:endpoints';
11
- const API_SPEC_KEY = 'rest:api-spec';
12
- /**
13
- * Decorate the given Controller constructor with metadata describing
14
- * the HTTP/REST API the Controller implements/provides.
15
- *
16
- * `@api` can be applied to controller classes. For example,
17
- * ```
18
- * @api({basePath: '/my'})
19
- * class MyController {
20
- * // ...
21
- * }
22
- * ```
23
- *
24
- * @param spec OpenAPI specification describing the endpoints
25
- * handled by this controller
26
- *
27
- * @decorator
28
- */
29
- function api(spec) {
30
- return function (constructor) {
31
- assert(typeof constructor === 'function', 'The @api decorator can be applied to constructors only.');
32
- const apiSpec = resolveControllerSpec(constructor, spec);
33
- context_1.Reflector.defineMetadata(API_SPEC_KEY, apiSpec, constructor);
34
- };
35
- }
36
- exports.api = api;
37
- /**
38
- * Build the api spec from class and method level decorations
39
- * @param constructor Controller class
40
- * @param spec API spec
41
- */
42
- function resolveControllerSpec(constructor, spec) {
43
- debug(`Retrieving OpenAPI specification for controller ${constructor.name}`);
44
- if (spec) {
45
- debug(' using class-level spec defined via @api()', spec);
46
- spec = Object.assign({}, spec);
47
- }
48
- else {
49
- spec = { paths: {} };
50
- }
51
- const endpoints = context_1.Reflector.getMetadata(ENDPOINTS_KEY, constructor.prototype) || {};
52
- for (const op in endpoints) {
53
- const endpoint = endpoints[op];
54
- const className = endpoint.target.constructor.name ||
55
- constructor.name ||
56
- '<AnonymousClass>';
57
- const fullMethodName = `${className}.${op}`;
58
- const { verb, path } = endpoint;
59
- const endpointName = `${fullMethodName} (${verb} ${path})`;
60
- let operationSpec = endpoint.spec;
61
- if (!operationSpec) {
62
- // The operation was defined via @operation(verb, path) with no spec
63
- operationSpec = {
64
- responses: {},
65
- };
66
- }
67
- if (!spec.paths[path]) {
68
- spec.paths[path] = {};
69
- }
70
- if (spec.paths[path][verb]) {
71
- // Operations from subclasses override those from the base
72
- debug(` Overriding ${endpointName} - endpoint was already defined`);
73
- }
74
- debug(` adding ${endpointName}`, operationSpec);
75
- spec.paths[path][verb] = Object.assign({}, operationSpec, {
76
- 'x-operation-name': op,
77
- });
78
- }
79
- return spec;
80
- }
81
- /**
82
- * Get the controller spec for the given class
83
- * @param constructor Controller class
84
- */
85
- function getControllerSpec(constructor) {
86
- let spec = context_1.Reflector.getMetadata(API_SPEC_KEY, constructor);
87
- if (!spec) {
88
- spec = resolveControllerSpec(constructor, spec);
89
- context_1.Reflector.defineMetadata(API_SPEC_KEY, spec, constructor);
90
- }
91
- return spec;
92
- }
93
- exports.getControllerSpec = getControllerSpec;
94
- /**
95
- * Expose a Controller method as a REST API operation
96
- * mapped to `GET` request method.
97
- *
98
- * @param path The URL path of this operation, e.g. `/product/{id}`
99
- * @param spec The OpenAPI specification describing parameters and responses
100
- * of this operation.
101
- */
102
- function get(path, spec) {
103
- return operation('get', path, spec);
104
- }
105
- exports.get = get;
106
- /**
107
- * Expose a Controller method as a REST API operation
108
- * mapped to `POST` request method.
109
- *
110
- * @param path The URL path of this operation, e.g. `/product/{id}`
111
- * @param spec The OpenAPI specification describing parameters and responses
112
- * of this operation.
113
- */
114
- function post(path, spec) {
115
- return operation('post', path, spec);
116
- }
117
- exports.post = post;
118
- /**
119
- * Expose a Controller method as a REST API operation
120
- * mapped to `PUT` request method.
121
- *
122
- * @param path The URL path of this operation, e.g. `/product/{id}`
123
- * @param spec The OpenAPI specification describing parameters and responses
124
- * of this operation.
125
- */
126
- function put(path, spec) {
127
- return operation('put', path, spec);
128
- }
129
- exports.put = put;
130
- /**
131
- * Expose a Controller method as a REST API operation
132
- * mapped to `PATCH` request method.
133
- *
134
- * @param path The URL path of this operation, e.g. `/product/{id}`
135
- * @param spec The OpenAPI specification describing parameters and responses
136
- * of this operation.
137
- */
138
- function patch(path, spec) {
139
- return operation('patch', path, spec);
140
- }
141
- exports.patch = patch;
142
- /**
143
- * Expose a Controller method as a REST API operation
144
- * mapped to `DELETE` request method.
145
- *
146
- * @param path The URL path of this operation, e.g. `/product/{id}`
147
- * @param spec The OpenAPI specification describing parameters and responses
148
- * of this operation.
149
- */
150
- function del(path, spec) {
151
- return operation('delete', path, spec);
152
- }
153
- exports.del = del;
154
- /**
155
- * Expose a Controller method as a REST API operation.
156
- *
157
- * @param verb HTTP verb, e.g. `GET` or `POST`.
158
- * @param path The URL path of this operation, e.g. `/product/{id}`
159
- * @param spec The OpenAPI specification describing parameters and responses
160
- * of this operation.
161
- */
162
- function operation(verb, path, spec) {
163
- return function (target, propertyKey, descriptor) {
164
- assert(typeof target[propertyKey] === 'function', '@operation decorator can be applied to methods only');
165
- let endpoints = Object.assign({}, context_1.Reflector.getMetadata(ENDPOINTS_KEY, target));
166
- context_1.Reflector.defineMetadata(ENDPOINTS_KEY, endpoints, target);
167
- let endpoint = endpoints[propertyKey];
168
- if (!endpoint) {
169
- // Add the new endpoint metadata for the method
170
- endpoint = { verb, path, spec, target };
171
- endpoints[propertyKey] = endpoint;
172
- }
173
- else {
174
- // Update the endpoint metadata
175
- // It can be created by @param
176
- endpoint.verb = verb;
177
- endpoint.path = path;
178
- endpoint.target = target;
179
- }
180
- if (!spec) {
181
- // Users can define parameters and responses using decorators
182
- return;
183
- }
184
- // Decorator are invoked in reverse order of their definition.
185
- // For example, a method decorated with @operation() @param()
186
- // will invoke param() decorator first and operation() second.
187
- // As a result, we need to preserve any partial definitions
188
- // already provided by other decorators.
189
- editOperationSpec(endpoint, overrides => {
190
- const mergedSpec = Object.assign({}, spec, overrides);
191
- // Merge "responses" definitions
192
- mergedSpec.responses = Object.assign({}, spec.responses, overrides.responses);
193
- return mergedSpec;
194
- });
195
- };
196
- }
197
- exports.operation = operation;
198
- const paramDecoratorStyle = Symbol('ParamDecoratorStyle');
199
- /**
200
- * Describe an input parameter of a Controller method.
201
- *
202
- * `@param` can be applied to method itself or specific parameters. For example,
203
- * ```
204
- * class MyController {
205
- * @get('/')
206
- * @param(offsetSpec)
207
- * @param(pageSizeSpec)
208
- * list(offset?: number, pageSize?: number) {}
209
- * }
210
- * ```
211
- * or
212
- * ```
213
- * class MyController {
214
- * @get('/')
215
- * list(
216
- * @param(offsetSpec) offset?: number,
217
- * @param(pageSizeSpec) pageSize?: number,
218
- * ) {}
219
- * }
220
- * ```
221
- * Please note mixed usage of `@param` at method/parameter level is not allowed.
222
- *
223
- * @param paramSpec Parameter specification.
224
- */
225
- function param(paramSpec) {
226
- return function (target, propertyKey, descriptorOrParameterIndex) {
227
- assert(typeof target[propertyKey] === 'function', '@param decorator can be applied to methods only');
228
- let endpoints = Object.assign({}, context_1.Reflector.getMetadata(ENDPOINTS_KEY, target));
229
- context_1.Reflector.defineMetadata(ENDPOINTS_KEY, endpoints, target);
230
- let endpoint = endpoints[propertyKey];
231
- if (!endpoint) {
232
- // Add the new endpoint metadata for the method
233
- endpoint = { target };
234
- endpoints[propertyKey] = endpoint;
235
- }
236
- editOperationSpec(endpoint, operationSpec => {
237
- let decoratorStyle;
238
- if (typeof descriptorOrParameterIndex === 'number') {
239
- decoratorStyle = 'parameter';
240
- }
241
- else {
242
- decoratorStyle = 'method';
243
- }
244
- if (!operationSpec.parameters) {
245
- operationSpec.parameters = [];
246
- // Record the @param decorator style to ensure consistency
247
- operationSpec[paramDecoratorStyle] = decoratorStyle;
248
- }
249
- else {
250
- // Mixed usage of @param at method/parameter level is not allowed
251
- if (operationSpec[paramDecoratorStyle] !== decoratorStyle) {
252
- throw new Error('Mixed usage of @param at method/parameter level' +
253
- ' is not allowed.');
254
- }
255
- }
256
- if (typeof descriptorOrParameterIndex === 'number') {
257
- operationSpec.parameters[descriptorOrParameterIndex] = paramSpec;
258
- }
259
- else {
260
- operationSpec.parameters.unshift(paramSpec);
261
- }
262
- return operationSpec;
263
- });
264
- };
265
- }
266
- exports.param = param;
267
- function editOperationSpec(endpoint, updateFn) {
268
- let spec = endpoint.spec;
269
- if (!spec) {
270
- spec = {
271
- responses: {},
272
- };
273
- }
274
- spec = updateFn(spec);
275
- endpoint.spec = spec;
276
- }
277
- (function (param) {
278
- param.query = {
279
- /**
280
- * Define a parameter of "string" type that's read from the query string.
281
- *
282
- * @param name Parameter name.
283
- */
284
- string: createParamShortcut('query', 'string'),
285
- /**
286
- * Define a parameter of "number" type that's read from the query string.
287
- *
288
- * @param name Parameter name.
289
- */
290
- number: createParamShortcut('query', 'number'),
291
- /**
292
- * Define a parameter of "integer" type that's read from the query string.
293
- *
294
- * @param name Parameter name.
295
- */
296
- integer: createParamShortcut('query', 'integer'),
297
- /**
298
- * Define a parameter of "boolean" type that's read from the query string.
299
- *
300
- * @param name Parameter name.
301
- */
302
- boolean: createParamShortcut('query', 'boolean'),
303
- };
304
- param.header = {
305
- /**
306
- * Define a parameter of "string" type that's read from a request header.
307
- *
308
- * @param name Parameter name, it must match the header name
309
- * (e.g. `Content-Type`).
310
- */
311
- string: createParamShortcut('header', 'string'),
312
- /**
313
- * Define a parameter of "number" type that's read from a request header.
314
- *
315
- * @param name Parameter name, it must match the header name
316
- * (e.g. `Content-Length`).
317
- */
318
- number: createParamShortcut('header', 'number'),
319
- /**
320
- * Define a parameter of "integer" type that's read from a request header.
321
- *
322
- * @param name Parameter name, it must match the header name
323
- * (e.g. `Content-Length`).
324
- */
325
- integer: createParamShortcut('header', 'integer'),
326
- /**
327
- * Define a parameter of "boolean" type that's read from a request header.
328
- *
329
- * @param name Parameter name, it must match the header name,
330
- * (e.g. `DNT` or `X-Do-Not-Track`).
331
- */
332
- boolean: createParamShortcut('header', 'boolean'),
333
- };
334
- param.path = {
335
- /**
336
- * Define a parameter of "string" type that's read from request path.
337
- *
338
- * @param name Parameter name matching one of the placeholders in the path
339
- * string.
340
- */
341
- string: createParamShortcut('path', 'string'),
342
- /**
343
- * Define a parameter of "number" type that's read from request path.
344
- *
345
- * @param name Parameter name matching one of the placeholders in the path
346
- * string.
347
- */
348
- number: createParamShortcut('path', 'number'),
349
- /**
350
- * Define a parameter of "integer" type that's read from request path.
351
- *
352
- * @param name Parameter name matching one of the placeholders in the path
353
- * string.
354
- */
355
- integer: createParamShortcut('path', 'integer'),
356
- /**
357
- * Define a parameter of "boolean" type that's read from request path.
358
- *
359
- * @param name Parameter name matching one of the placeholders in the path
360
- * string.
361
- */
362
- boolean: createParamShortcut('path', 'boolean'),
363
- };
364
- param.formData = {
365
- /**
366
- * Define a parameter of "string" type that's read
367
- * from a field in the request body.
368
- *
369
- * @param name Parameter name.
370
- */
371
- string: createParamShortcut('formData', 'string'),
372
- /**
373
- * Define a parameter of "number" type that's read
374
- * from a field in the request body.
375
- *
376
- * @param name Parameter name.
377
- */
378
- number: createParamShortcut('formData', 'number'),
379
- /**
380
- * Define a parameter of "integer" type that's read
381
- * from a field in the request body.
382
- *
383
- * @param name Parameter name.
384
- */
385
- integer: createParamShortcut('formData', 'integer'),
386
- /**
387
- * Define a parameter of "boolean" type that's read
388
- * from a field in the request body.
389
- *
390
- * @param name Parameter name.
391
- */
392
- boolean: createParamShortcut('formData', 'boolean'),
393
- };
394
- /**
395
- * Define a parameter that's set to the full request body.
396
- *
397
- * @param name Parameter name
398
- * @param schema The schema defining the type used for the body parameter.
399
- */
400
- param.body = function (name, schema) {
401
- return param({ name, in: 'body', schema });
402
- };
403
- })(param = exports.param || (exports.param = {}));
404
- function createParamShortcut(source, type) {
405
- // TODO(bajtos) @param.IN.TYPE('foo', {required: true})
406
- return (name) => {
407
- return param({ name, in: source, type });
408
- };
409
- }
410
- //# sourceMappingURL=metadata.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"metadata.js","sourceRoot":"","sources":["../../../src/router/metadata.ts"],"names":[],"mappings":"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"}
@@ -1,68 +0,0 @@
1
- /// <reference types="node" />
2
- import { OperationObject, PathsObject } from '@loopback/openapi-spec';
3
- import { Context, Constructor } from '@loopback/context';
4
- import { ServerRequest } from 'http';
5
- import { ParsedRequest, PathParameterValues, OperationArgs, OperationRetval } from '../internal-types';
6
- import { ControllerSpec } from './metadata';
7
- /**
8
- * Parse the URL of the incoming request and set additional properties
9
- * on this request object:
10
- * - `path`
11
- * - `query`
12
- *
13
- * @private
14
- * @param request
15
- */
16
- export declare function parseRequestUrl(request: ServerRequest): ParsedRequest;
17
- export declare type ControllerClass = Constructor<any>;
18
- export declare class RoutingTable {
19
- private readonly _routes;
20
- registerController(controller: ControllerClass, spec: ControllerSpec): void;
21
- static joinPath(basePath: string, path: string): string;
22
- registerRoute(route: RouteEntry): void;
23
- describeApiPaths(): PathsObject;
24
- find(request: ParsedRequest): ResolvedRoute;
25
- }
26
- export interface RouteEntry {
27
- readonly verb: string;
28
- readonly path: string;
29
- readonly spec: OperationObject;
30
- match(request: ParsedRequest): ResolvedRoute | undefined;
31
- updateBindings(requestContext: Context): void;
32
- invokeHandler(requestContext: Context, args: OperationArgs): Promise<OperationRetval>;
33
- describe(): string;
34
- }
35
- export interface ResolvedRoute extends RouteEntry {
36
- readonly pathParams: PathParameterValues;
37
- }
38
- export declare abstract class BaseRoute implements RouteEntry {
39
- readonly path: string;
40
- readonly spec: OperationObject;
41
- readonly verb: string;
42
- private readonly _keys;
43
- private readonly _pathRegexp;
44
- constructor(verb: string, path: string, spec: OperationObject);
45
- match(request: ParsedRequest): ResolvedRoute | undefined;
46
- abstract updateBindings(requestContext: Context): void;
47
- abstract invokeHandler(requestContext: Context, args: OperationArgs): Promise<OperationRetval>;
48
- describe(): string;
49
- private _buildPathParams(pathMatch);
50
- }
51
- export declare function createResolvedRoute(route: RouteEntry, pathParams: PathParameterValues): ResolvedRoute;
52
- export declare class Route extends BaseRoute {
53
- readonly spec: OperationObject;
54
- protected readonly _handler: Function;
55
- constructor(verb: string, path: string, spec: OperationObject, _handler: Function);
56
- describe(): string;
57
- updateBindings(requestContext: Context): void;
58
- invokeHandler(requestContext: Context, args: OperationArgs): Promise<OperationRetval>;
59
- }
60
- export declare class ControllerRoute extends BaseRoute {
61
- protected readonly _controllerCtor: ControllerClass;
62
- protected readonly _methodName: string;
63
- constructor(verb: string, path: string, spec: OperationObject, _controllerCtor: ControllerClass, methodName?: string);
64
- describe(): string;
65
- updateBindings(requestContext: Context): void;
66
- invokeHandler(requestContext: Context, args: OperationArgs): Promise<OperationRetval>;
67
- private _createControllerInstance(requestContext);
68
- }