@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.
- package/CHANGELOG.md +1822 -0
- package/LICENSE +1 -1
- package/README.md +30 -58
- package/dist/body-parsers/body-parser.d.ts +25 -0
- package/dist/body-parsers/body-parser.helpers.d.ts +44 -0
- package/dist/body-parsers/body-parser.helpers.js +102 -0
- package/dist/body-parsers/body-parser.helpers.js.map +1 -0
- package/dist/body-parsers/body-parser.js +159 -0
- package/dist/body-parsers/body-parser.js.map +1 -0
- package/dist/body-parsers/body-parser.json.d.ts +9 -0
- package/dist/body-parsers/body-parser.json.js +43 -0
- package/dist/body-parsers/body-parser.json.js.map +1 -0
- package/dist/body-parsers/body-parser.raw.d.ts +12 -0
- package/dist/body-parsers/body-parser.raw.js +39 -0
- package/dist/body-parsers/body-parser.raw.js.map +1 -0
- package/dist/body-parsers/body-parser.stream.d.ts +12 -0
- package/dist/body-parsers/body-parser.stream.js +28 -0
- package/dist/body-parsers/body-parser.stream.js.map +1 -0
- package/dist/body-parsers/body-parser.text.d.ts +9 -0
- package/dist/body-parsers/body-parser.text.js +38 -0
- package/dist/body-parsers/body-parser.text.js.map +1 -0
- package/dist/body-parsers/body-parser.urlencoded.d.ts +9 -0
- package/dist/body-parsers/body-parser.urlencoded.js +36 -0
- package/dist/body-parsers/body-parser.urlencoded.js.map +1 -0
- package/dist/body-parsers/index.d.ts +8 -0
- package/dist/body-parsers/index.js +16 -0
- package/dist/body-parsers/index.js.map +1 -0
- package/dist/body-parsers/types.d.ts +51 -0
- package/dist/body-parsers/types.js +12 -0
- package/dist/body-parsers/types.js.map +1 -0
- package/dist/coercion/coerce-parameter.d.ts +9 -0
- package/dist/coercion/coerce-parameter.js +166 -0
- package/dist/coercion/coerce-parameter.js.map +1 -0
- package/dist/coercion/utils.d.ts +43 -0
- package/dist/coercion/utils.js +96 -0
- package/dist/coercion/utils.js.map +1 -0
- package/dist/coercion/validator.d.ts +49 -0
- package/dist/coercion/validator.js +85 -0
- package/dist/coercion/validator.js.map +1 -0
- package/dist/http-handler.d.ts +38 -0
- package/dist/http-handler.js +68 -0
- package/dist/http-handler.js.map +1 -0
- package/dist/index.d.ts +36 -1
- package/dist/index.js +40 -6
- package/dist/index.js.map +1 -0
- package/dist/keys.d.ts +198 -0
- package/dist/keys.js +202 -0
- package/dist/keys.js.map +1 -0
- package/dist/parse-json.d.ts +11 -0
- package/dist/parse-json.js +42 -0
- package/dist/parse-json.js.map +1 -0
- package/dist/parser.d.ts +11 -0
- package/dist/parser.js +76 -0
- package/dist/parser.js.map +1 -0
- package/{dist6/src/providers/find-route.d.ts → dist/providers/find-route.provider.d.ts} +3 -1
- package/dist/providers/find-route.provider.js +36 -0
- package/dist/providers/find-route.provider.js.map +1 -0
- package/dist/providers/index.d.ts +6 -0
- package/dist/providers/index.js +14 -0
- package/dist/providers/index.js.map +1 -0
- package/dist/{src/providers/invoke-method.d.ts → providers/invoke-method.provider.d.ts} +3 -1
- package/dist/providers/invoke-method.provider.js +30 -0
- package/dist/providers/invoke-method.provider.js.map +1 -0
- package/dist/providers/log-error.provider.d.ts +6 -0
- package/dist/providers/log-error.provider.js +21 -0
- package/dist/providers/log-error.provider.js.map +1 -0
- package/dist/providers/parse-params.provider.d.ts +15 -0
- package/dist/providers/parse-params.provider.js +41 -0
- package/dist/providers/parse-params.provider.js.map +1 -0
- package/dist/providers/reject.provider.d.ts +10 -0
- package/dist/providers/reject.provider.js +47 -0
- package/dist/providers/reject.provider.js.map +1 -0
- package/dist/{src/providers/send.d.ts → providers/send.provider.d.ts} +1 -4
- package/dist/{src/providers/send.js → providers/send.provider.js} +4 -6
- package/dist/providers/send.provider.js.map +1 -0
- package/dist/request-context.d.ts +36 -0
- package/dist/request-context.js +104 -0
- package/dist/request-context.js.map +1 -0
- package/dist/rest-http-error.d.ts +37 -0
- package/dist/rest-http-error.js +51 -0
- package/dist/rest-http-error.js.map +1 -0
- package/dist/rest.application.d.ts +232 -0
- package/dist/rest.application.js +174 -0
- package/dist/rest.application.js.map +1 -0
- package/dist/rest.component.d.ts +15 -0
- package/dist/rest.component.js +72 -0
- package/dist/rest.component.js.map +1 -0
- package/dist/rest.server.d.ts +443 -0
- package/dist/rest.server.js +748 -0
- package/dist/rest.server.js.map +1 -0
- package/dist/router/base-route.d.ts +29 -0
- package/dist/router/base-route.js +41 -0
- package/dist/router/base-route.js.map +1 -0
- package/dist/router/controller-route.d.ts +61 -0
- package/dist/router/controller-route.js +160 -0
- package/dist/router/controller-route.js.map +1 -0
- package/dist/router/external-express-routes.d.ts +24 -0
- package/dist/router/external-express-routes.js +90 -0
- package/dist/router/external-express-routes.js.map +1 -0
- package/dist/router/handler-route.d.ts +12 -0
- package/dist/router/handler-route.js +30 -0
- package/dist/router/handler-route.js.map +1 -0
- package/dist/router/index.d.ts +14 -0
- package/dist/router/index.js +25 -0
- package/dist/router/index.js.map +1 -0
- package/dist/router/openapi-path.d.ts +14 -0
- package/dist/router/openapi-path.js +64 -0
- package/dist/router/openapi-path.js.map +1 -0
- package/dist/router/redirect-route.d.ts +23 -0
- package/dist/router/redirect-route.js +50 -0
- package/dist/router/redirect-route.js.map +1 -0
- package/dist/router/regexp-router.d.ts +25 -0
- package/dist/router/regexp-router.js +84 -0
- package/dist/router/regexp-router.js.map +1 -0
- package/dist/router/rest-router.d.ts +35 -0
- package/dist/{src/internal-types.js → router/rest-router.js} +2 -2
- package/dist/router/rest-router.js.map +1 -0
- package/dist/router/route-entry.d.ts +46 -0
- package/dist/router/route-entry.js +20 -0
- package/dist/router/route-entry.js.map +1 -0
- package/dist/router/route-sort.d.ts +7 -0
- package/dist/router/route-sort.js +75 -0
- package/dist/router/route-sort.js.map +1 -0
- package/dist/router/router-base.d.ts +42 -0
- package/dist/router/router-base.js +101 -0
- package/dist/router/router-base.js.map +1 -0
- package/dist/router/router-spec.d.ts +3 -0
- package/dist/router/router-spec.js +40 -0
- package/dist/router/router-spec.js.map +1 -0
- package/dist/router/routing-table.d.ts +32 -0
- package/dist/router/routing-table.js +86 -0
- package/dist/router/routing-table.js.map +1 -0
- package/dist/router/trie-router.d.ts +13 -0
- package/dist/router/trie-router.js +55 -0
- package/dist/router/trie-router.js.map +1 -0
- package/dist/router/trie.d.ts +59 -0
- package/dist/router/trie.js +180 -0
- package/dist/router/trie.js.map +1 -0
- package/{dist6/src → dist}/sequence.d.ts +28 -23
- package/dist/sequence.js +112 -0
- package/dist/sequence.js.map +1 -0
- package/dist/spec-enhancers/consolidate.spec-enhancer.d.ts +68 -0
- package/dist/spec-enhancers/consolidate.spec-enhancer.js +145 -0
- package/dist/spec-enhancers/consolidate.spec-enhancer.js.map +1 -0
- package/dist/spec-enhancers/info.spec-enhancer.d.ts +19 -0
- package/dist/spec-enhancers/info.spec-enhancer.js +89 -0
- package/dist/spec-enhancers/info.spec-enhancer.js.map +1 -0
- package/dist/types.d.ts +178 -0
- package/dist/types.js +12 -0
- package/dist/types.js.map +1 -0
- package/dist/validation/ajv-factory.provider.d.ts +12 -0
- package/dist/validation/ajv-factory.provider.js +87 -0
- package/dist/validation/ajv-factory.provider.js.map +1 -0
- package/dist/validation/request-body.validator.d.ts +14 -0
- package/dist/validation/request-body.validator.js +161 -0
- package/dist/validation/request-body.validator.js.map +1 -0
- package/dist/writer.d.ts +9 -0
- package/dist/writer.js +62 -0
- package/dist/writer.js.map +1 -0
- package/package.json +66 -38
- package/src/body-parsers/body-parser.helpers.ts +148 -0
- package/src/body-parsers/body-parser.json.ts +46 -0
- package/src/body-parsers/body-parser.raw.ts +42 -0
- package/src/body-parsers/body-parser.stream.ts +27 -0
- package/src/body-parsers/body-parser.text.ts +44 -0
- package/src/body-parsers/body-parser.ts +208 -0
- package/src/body-parsers/body-parser.urlencoded.ts +42 -0
- package/src/body-parsers/index.ts +13 -0
- package/src/body-parsers/types.ts +60 -0
- package/src/coercion/coerce-parameter.ts +207 -0
- package/src/coercion/utils.ts +103 -0
- package/src/coercion/validator.ts +98 -0
- package/src/http-handler.ts +84 -41
- package/src/index.ts +37 -30
- package/src/keys.ts +273 -20
- package/src/parse-json.ts +42 -0
- package/src/parser.ts +89 -104
- package/src/providers/{find-route.ts → find-route.provider.ts} +10 -7
- package/src/providers/index.ts +7 -9
- package/src/providers/{invoke-method.ts → invoke-method.provider.ts} +8 -5
- package/src/providers/log-error.provider.ts +27 -0
- package/src/providers/parse-params.provider.ts +42 -0
- package/src/providers/reject.provider.ts +44 -0
- package/src/providers/{send.ts → send.provider.ts} +2 -5
- package/src/request-context.ts +123 -0
- package/src/rest-http-error.ts +87 -0
- package/src/rest.application.ts +390 -0
- package/src/rest.component.ts +111 -0
- package/src/rest.server.ts +1192 -0
- package/src/router/base-route.ts +53 -0
- package/src/router/controller-route.ts +241 -0
- package/src/router/external-express-routes.ts +139 -0
- package/src/router/handler-route.ts +44 -0
- package/src/router/index.ts +24 -0
- package/src/router/openapi-path.ts +67 -0
- package/src/router/redirect-route.ts +64 -0
- package/src/router/regexp-router.ts +104 -0
- package/src/router/rest-router.ts +48 -0
- package/src/router/route-entry.ts +74 -0
- package/src/router/route-sort.ts +74 -0
- package/src/router/router-base.ts +124 -0
- package/src/router/router-spec.ts +36 -0
- package/src/router/routing-table.ts +83 -279
- package/src/router/trie-router.ts +57 -0
- package/src/router/trie.ts +233 -0
- package/src/sequence.ts +44 -37
- package/src/spec-enhancers/consolidate.spec-enhancer.ts +182 -0
- package/src/spec-enhancers/info.spec-enhancer.ts +92 -0
- package/src/types.ts +216 -0
- package/src/validation/ajv-factory.provider.ts +94 -0
- package/src/validation/request-body.validator.ts +208 -0
- package/src/writer.ts +41 -68
- package/api-docs/.DS_Store +0 -0
- package/api-docs/apple-touch-icon-114x114-precomposed.png +0 -0
- package/api-docs/apple-touch-icon-144x144-precomposed.png +0 -0
- package/api-docs/apple-touch-icon-57x57-precomposed.png +0 -0
- package/api-docs/apple-touch-icon-72x72-precomposed.png +0 -0
- package/api-docs/apple-touch-icon-precomposed.png +0 -0
- package/api-docs/apple-touch-icon.png +0 -0
- package/api-docs/css/bootstrap.min.css +0 -9
- package/api-docs/css/code-themes/arta.css +0 -158
- package/api-docs/css/code-themes/ascetic.css +0 -50
- package/api-docs/css/code-themes/brown_paper.css +0 -104
- package/api-docs/css/code-themes/brown_papersq.png +0 -0
- package/api-docs/css/code-themes/dark.css +0 -103
- package/api-docs/css/code-themes/default.css +0 -135
- package/api-docs/css/code-themes/far.css +0 -111
- package/api-docs/css/code-themes/github.css +0 -127
- package/api-docs/css/code-themes/googlecode.css +0 -144
- package/api-docs/css/code-themes/idea.css +0 -121
- package/api-docs/css/code-themes/ir_black.css +0 -104
- package/api-docs/css/code-themes/magula.css +0 -121
- package/api-docs/css/code-themes/monokai.css +0 -114
- package/api-docs/css/code-themes/pojoaque.css +0 -104
- package/api-docs/css/code-themes/pojoaque.jpg +0 -0
- package/api-docs/css/code-themes/rainbow.css +0 -114
- package/api-docs/css/code-themes/school_book.css +0 -111
- package/api-docs/css/code-themes/school_book.png +0 -0
- package/api-docs/css/code-themes/sl-theme.css +0 -45
- package/api-docs/css/code-themes/solarized_dark.css +0 -88
- package/api-docs/css/code-themes/solarized_light.css +0 -88
- package/api-docs/css/code-themes/sunburst.css +0 -158
- package/api-docs/css/code-themes/tomorrow-night-blue.css +0 -52
- package/api-docs/css/code-themes/tomorrow-night-bright.css +0 -51
- package/api-docs/css/code-themes/tomorrow-night-eighties.css +0 -51
- package/api-docs/css/code-themes/tomorrow-night.css +0 -52
- package/api-docs/css/code-themes/tomorrow.css +0 -49
- package/api-docs/css/code-themes/vs.css +0 -86
- package/api-docs/css/code-themes/xcode.css +0 -154
- package/api-docs/css/code-themes/zenburn.css +0 -115
- package/api-docs/css/main.css +0 -139
- package/api-docs/favicon.ico +0 -0
- package/api-docs/fonts/0ihfXUL2emPh0ROJezvraLO3LdcAZYWl9Si6vvxL-qU.woff +0 -0
- package/api-docs/fonts/OsJ2DjdpjqFRVUSto6IffLO3LdcAZYWl9Si6vvxL-qU.woff +0 -0
- package/api-docs/fonts/_aijTyevf54tkVDLy-dlnLO3LdcAZYWl9Si6vvxL-qU.woff +0 -0
- package/api-docs/index.html +0 -7082
- package/api-docs/js/main.js +0 -19
- package/api-docs/js/vendor/bootstrap.min.js +0 -6
- package/api-docs/js/vendor/jquery-1.10.1.min.js +0 -6
- package/api-docs/js/vendor/jquery.scrollTo-1.4.3.1.js +0 -218
- package/api-docs/js/vendor/modernizr-2.6.2-respond-1.1.0.min.js +0 -11
- package/dist/src/http-handler.d.ts +0 -19
- package/dist/src/http-handler.js +0 -43
- package/dist/src/http-handler.js.map +0 -1
- package/dist/src/index.d.ts +0 -14
- package/dist/src/index.js +0 -33
- package/dist/src/index.js.map +0 -1
- package/dist/src/internal-types.d.ts +0 -67
- package/dist/src/internal-types.js.map +0 -1
- package/dist/src/keys.d.ts +0 -22
- package/dist/src/keys.js +0 -35
- package/dist/src/keys.js.map +0 -1
- package/dist/src/parser.d.ts +0 -11
- package/dist/src/parser.js +0 -98
- package/dist/src/parser.js.map +0 -1
- package/dist/src/providers/bind-element.d.ts +0 -7
- package/dist/src/providers/bind-element.js +0 -34
- package/dist/src/providers/bind-element.js.map +0 -1
- package/dist/src/providers/find-route.d.ts +0 -9
- package/dist/src/providers/find-route.js +0 -42
- package/dist/src/providers/find-route.js.map +0 -1
- package/dist/src/providers/get-from-context.d.ts +0 -7
- package/dist/src/providers/get-from-context.js +0 -34
- package/dist/src/providers/get-from-context.js.map +0 -1
- package/dist/src/providers/index.d.ts +0 -8
- package/dist/src/providers/index.js +0 -18
- package/dist/src/providers/index.js.map +0 -1
- package/dist/src/providers/invoke-method.js +0 -36
- package/dist/src/providers/invoke-method.js.map +0 -1
- package/dist/src/providers/log-error-provider.d.ts +0 -6
- package/dist/src/providers/log-error-provider.js +0 -17
- package/dist/src/providers/log-error-provider.js.map +0 -1
- package/dist/src/providers/parse-params.d.ts +0 -13
- package/dist/src/providers/parse-params.js +0 -22
- package/dist/src/providers/parse-params.js.map +0 -1
- package/dist/src/providers/reject.d.ts +0 -6
- package/dist/src/providers/reject.js +0 -40
- package/dist/src/providers/reject.js.map +0 -1
- package/dist/src/providers/send.js.map +0 -1
- package/dist/src/rest-component.d.ts +0 -12
- package/dist/src/rest-component.js +0 -50
- package/dist/src/rest-component.js.map +0 -1
- package/dist/src/rest-server.d.ts +0 -211
- package/dist/src/rest-server.js +0 -426
- package/dist/src/rest-server.js.map +0 -1
- package/dist/src/router/metadata.d.ts +0 -150
- package/dist/src/router/metadata.js +0 -410
- package/dist/src/router/metadata.js.map +0 -1
- package/dist/src/router/routing-table.d.ts +0 -68
- package/dist/src/router/routing-table.js +0 -204
- package/dist/src/router/routing-table.js.map +0 -1
- package/dist/src/sequence.d.ts +0 -81
- package/dist/src/sequence.js +0 -104
- package/dist/src/sequence.js.map +0 -1
- package/dist/src/writer.d.ts +0 -17
- package/dist/src/writer.js +0 -87
- package/dist/src/writer.js.map +0 -1
- package/dist6/index.d.ts +0 -1
- package/dist6/index.js +0 -12
- package/dist6/src/http-handler.d.ts +0 -19
- package/dist6/src/http-handler.js +0 -53
- package/dist6/src/http-handler.js.map +0 -1
- package/dist6/src/index.d.ts +0 -14
- package/dist6/src/index.js +0 -33
- package/dist6/src/index.js.map +0 -1
- package/dist6/src/internal-types.d.ts +0 -67
- package/dist6/src/internal-types.js +0 -7
- package/dist6/src/internal-types.js.map +0 -1
- package/dist6/src/keys.d.ts +0 -22
- package/dist6/src/keys.js +0 -35
- package/dist6/src/keys.js.map +0 -1
- package/dist6/src/parser.d.ts +0 -11
- package/dist6/src/parser.js +0 -108
- package/dist6/src/parser.js.map +0 -1
- package/dist6/src/providers/bind-element.d.ts +0 -7
- package/dist6/src/providers/bind-element.js +0 -34
- package/dist6/src/providers/bind-element.js.map +0 -1
- package/dist6/src/providers/find-route.js +0 -42
- package/dist6/src/providers/find-route.js.map +0 -1
- package/dist6/src/providers/get-from-context.d.ts +0 -7
- package/dist6/src/providers/get-from-context.js +0 -34
- package/dist6/src/providers/get-from-context.js.map +0 -1
- package/dist6/src/providers/index.d.ts +0 -8
- package/dist6/src/providers/index.js +0 -18
- package/dist6/src/providers/index.js.map +0 -1
- package/dist6/src/providers/invoke-method.d.ts +0 -7
- package/dist6/src/providers/invoke-method.js +0 -44
- package/dist6/src/providers/invoke-method.js.map +0 -1
- package/dist6/src/providers/log-error-provider.d.ts +0 -6
- package/dist6/src/providers/log-error-provider.js +0 -17
- package/dist6/src/providers/log-error-provider.js.map +0 -1
- package/dist6/src/providers/parse-params.d.ts +0 -13
- package/dist6/src/providers/parse-params.js +0 -22
- package/dist6/src/providers/parse-params.js.map +0 -1
- package/dist6/src/providers/reject.d.ts +0 -6
- package/dist6/src/providers/reject.js +0 -40
- package/dist6/src/providers/reject.js.map +0 -1
- package/dist6/src/providers/send.d.ts +0 -15
- package/dist6/src/providers/send.js +0 -24
- package/dist6/src/providers/send.js.map +0 -1
- package/dist6/src/rest-component.d.ts +0 -12
- package/dist6/src/rest-component.js +0 -50
- package/dist6/src/rest-component.js.map +0 -1
- package/dist6/src/rest-server.d.ts +0 -211
- package/dist6/src/rest-server.js +0 -444
- package/dist6/src/rest-server.js.map +0 -1
- package/dist6/src/router/metadata.d.ts +0 -150
- package/dist6/src/router/metadata.js +0 -410
- package/dist6/src/router/metadata.js.map +0 -1
- package/dist6/src/router/routing-table.d.ts +0 -68
- package/dist6/src/router/routing-table.js +0 -218
- package/dist6/src/router/routing-table.js.map +0 -1
- package/dist6/src/sequence.js +0 -114
- package/dist6/src/sequence.js.map +0 -1
- package/dist6/src/writer.d.ts +0 -17
- package/dist6/src/writer.js +0 -87
- package/dist6/src/writer.js.map +0 -1
- package/index.d.ts +0 -6
- package/index.js +0 -9
- package/src/internal-types.ts +0 -96
- package/src/providers/bind-element.ts +0 -15
- package/src/providers/get-from-context.ts +0 -16
- package/src/providers/log-error-provider.ts +0 -23
- package/src/providers/parse-params.ts +0 -20
- package/src/providers/reject.ts +0 -27
- package/src/rest-component.ts +0 -54
- package/src/rest-server.ts +0 -584
- 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
|
-
}
|