@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
package/dist/src/rest-server.js
DELETED
|
@@ -1,426 +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
|
-
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
|
7
|
-
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
8
|
-
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
9
|
-
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
10
|
-
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
11
|
-
};
|
|
12
|
-
var __metadata = (this && this.__metadata) || function (k, v) {
|
|
13
|
-
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
|
|
14
|
-
};
|
|
15
|
-
var __param = (this && this.__param) || function (paramIndex, decorator) {
|
|
16
|
-
return function (target, key) { decorator(target, key, paramIndex); }
|
|
17
|
-
};
|
|
18
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
19
|
-
const assert_1 = require("assert");
|
|
20
|
-
const swagger2openapi = require('swagger2openapi');
|
|
21
|
-
const js_yaml_1 = require("js-yaml");
|
|
22
|
-
const context_1 = require("@loopback/context");
|
|
23
|
-
const _1 = require(".");
|
|
24
|
-
const openapi_spec_1 = require("@loopback/openapi-spec");
|
|
25
|
-
const http_1 = require("http");
|
|
26
|
-
const core_1 = require("@loopback/core");
|
|
27
|
-
const metadata_1 = require("./router/metadata");
|
|
28
|
-
const http_handler_1 = require("./http-handler");
|
|
29
|
-
const sequence_1 = require("./sequence");
|
|
30
|
-
const keys_1 = require("./keys");
|
|
31
|
-
const SequenceActions = keys_1.RestBindings.SequenceActions;
|
|
32
|
-
// NOTE(bajtos) we cannot use `import * as cloneDeep from 'lodash/cloneDeep'
|
|
33
|
-
// because it produces the following TypeScript error:
|
|
34
|
-
// Module '"(...)/node_modules/@types/lodash/cloneDeep/index"' resolves to
|
|
35
|
-
// a non-module entity and cannot be imported using this construct.
|
|
36
|
-
const cloneDeep = require('lodash/cloneDeep');
|
|
37
|
-
const OPENAPI_SPEC_MAPPING = {
|
|
38
|
-
'/openapi.json': { version: '3.0.0', format: 'json' },
|
|
39
|
-
'/openapi.yaml': { version: '3.0.0', format: 'yaml' },
|
|
40
|
-
'/swagger.json': { version: '2.0', format: 'json' },
|
|
41
|
-
'/swagger.yaml': { version: '2.0', format: 'yaml' },
|
|
42
|
-
};
|
|
43
|
-
/**
|
|
44
|
-
* A REST API server for use with Loopback.
|
|
45
|
-
* Add this server to your application by importing the RestComponent.
|
|
46
|
-
* ```ts
|
|
47
|
-
* const app = new MyApplication({
|
|
48
|
-
* components: [RestComponent]
|
|
49
|
-
* });
|
|
50
|
-
* // OR
|
|
51
|
-
* app.component(RestComponent);
|
|
52
|
-
* ```
|
|
53
|
-
*
|
|
54
|
-
* To add additional instances of RestServer to your application, use the
|
|
55
|
-
* `.server` function:
|
|
56
|
-
* ```ts
|
|
57
|
-
* app.server(RestServer, 'nameOfYourServer');
|
|
58
|
-
* ```
|
|
59
|
-
*
|
|
60
|
-
* By default, one instance of RestServer will be created when the RestComponent
|
|
61
|
-
* is bootstrapped. This instance can be retrieved with
|
|
62
|
-
* `app.getServer(RestServer)`, or by calling `app.get('servers.RestServer')`
|
|
63
|
-
* Note that retrieving other instances of RestServer must be done using the
|
|
64
|
-
* server's name:
|
|
65
|
-
* ```ts
|
|
66
|
-
* const server = await app.getServer('foo')
|
|
67
|
-
* // OR
|
|
68
|
-
* const server = await app.get('servers.foo');
|
|
69
|
-
* ```
|
|
70
|
-
*
|
|
71
|
-
* @export
|
|
72
|
-
* @class RestServer
|
|
73
|
-
* @extends {Context}
|
|
74
|
-
* @implements {Server}
|
|
75
|
-
*/
|
|
76
|
-
let RestServer = class RestServer extends context_1.Context {
|
|
77
|
-
/**
|
|
78
|
-
* @memberof RestServer
|
|
79
|
-
* Creates an instance of RestServer.
|
|
80
|
-
*
|
|
81
|
-
* @param {Application} app The application instance (injected via
|
|
82
|
-
* CoreBindings.APPLICATION_INSTANCE).
|
|
83
|
-
* @param {RestServerConfig=} options The configuration options (injected via
|
|
84
|
-
* RestBindings.CONFIG).
|
|
85
|
-
*
|
|
86
|
-
*/
|
|
87
|
-
constructor(app, options) {
|
|
88
|
-
super(app);
|
|
89
|
-
if (!options)
|
|
90
|
-
options = {};
|
|
91
|
-
// Can't check falsiness, 0 is a valid port.
|
|
92
|
-
if (options.port === null || options.port === undefined) {
|
|
93
|
-
options.port = 3000;
|
|
94
|
-
}
|
|
95
|
-
this.bind(keys_1.RestBindings.PORT).to(options.port);
|
|
96
|
-
this.api(openapi_spec_1.createEmptyApiSpec());
|
|
97
|
-
this.sequence(options.sequence ? options.sequence : sequence_1.DefaultSequence);
|
|
98
|
-
this.handleHttp = (req, res) => {
|
|
99
|
-
try {
|
|
100
|
-
this._handleHttpRequest(req, res).catch(err => this._onUnhandledError(req, res, err));
|
|
101
|
-
}
|
|
102
|
-
catch (err) {
|
|
103
|
-
this._onUnhandledError(req, res, err);
|
|
104
|
-
}
|
|
105
|
-
};
|
|
106
|
-
this.bind(keys_1.RestBindings.HANDLER).toDynamicValue(() => this.httpHandler);
|
|
107
|
-
}
|
|
108
|
-
get httpHandler() {
|
|
109
|
-
this._setupHandlerIfNeeded();
|
|
110
|
-
return this._httpHandler;
|
|
111
|
-
}
|
|
112
|
-
_handleHttpRequest(request, response) {
|
|
113
|
-
// allow CORS support for all endpoints so that users
|
|
114
|
-
// can test with online SwaggerUI instance
|
|
115
|
-
response.setHeader('Access-Control-Allow-Origin', '*');
|
|
116
|
-
response.setHeader('Access-Control-Allow-Credentials', 'true');
|
|
117
|
-
response.setHeader('Access-Control-Allow-Max-Age', '86400');
|
|
118
|
-
if (request.method === 'GET' &&
|
|
119
|
-
request.url &&
|
|
120
|
-
request.url in OPENAPI_SPEC_MAPPING) {
|
|
121
|
-
// NOTE(bajtos) Regular routes are handled through Sequence.
|
|
122
|
-
// IMO, this built-in endpoint should not run through a Sequence,
|
|
123
|
-
// because it's not part of the application API itself.
|
|
124
|
-
// E.g. if the app implements access/audit logs, I don't want
|
|
125
|
-
// this endpoint to trigger a log entry. If the server implements
|
|
126
|
-
// content-negotiation to support XML clients, I don't want the OpenAPI
|
|
127
|
-
// spec to be converted into an XML response.
|
|
128
|
-
const options = OPENAPI_SPEC_MAPPING[request.url];
|
|
129
|
-
return this._serveOpenApiSpec(request, response, options);
|
|
130
|
-
}
|
|
131
|
-
if (request.method === 'GET' &&
|
|
132
|
-
request.url &&
|
|
133
|
-
request.url === '/swagger-ui') {
|
|
134
|
-
return this._redirectToSwaggerUI(request, response);
|
|
135
|
-
}
|
|
136
|
-
return this.httpHandler.handleRequest(request, response);
|
|
137
|
-
}
|
|
138
|
-
_setupHandlerIfNeeded() {
|
|
139
|
-
// TODO(bajtos) support hot-reloading of controllers
|
|
140
|
-
// after the app started. The idea is to rebuild the HttpHandler
|
|
141
|
-
// instance whenever a controller was added/deleted.
|
|
142
|
-
// See https://github.com/strongloop/loopback-next/issues/433
|
|
143
|
-
if (this._httpHandler)
|
|
144
|
-
return;
|
|
145
|
-
this._httpHandler = new http_handler_1.HttpHandler(this);
|
|
146
|
-
for (const b of this.find('controllers.*')) {
|
|
147
|
-
const controllerName = b.key.replace(/^controllers\./, '');
|
|
148
|
-
const ctor = b.valueConstructor;
|
|
149
|
-
if (!ctor) {
|
|
150
|
-
throw new Error(`The controller ${controllerName} was not bound via .toClass()`);
|
|
151
|
-
}
|
|
152
|
-
const apiSpec = metadata_1.getControllerSpec(ctor);
|
|
153
|
-
if (!apiSpec) {
|
|
154
|
-
// controller methods are specified through app.api() spec
|
|
155
|
-
continue;
|
|
156
|
-
}
|
|
157
|
-
this._httpHandler.registerController(ctor, apiSpec);
|
|
158
|
-
}
|
|
159
|
-
for (const b of this.find('routes.*')) {
|
|
160
|
-
// TODO(bajtos) should we support routes defined asynchronously?
|
|
161
|
-
const route = this.getSync(b.key);
|
|
162
|
-
this._httpHandler.registerRoute(route);
|
|
163
|
-
}
|
|
164
|
-
// TODO(bajtos) should we support API spec defined asynchronously?
|
|
165
|
-
const spec = this.getSync(keys_1.RestBindings.API_SPEC);
|
|
166
|
-
for (const path in spec.paths) {
|
|
167
|
-
for (const verb in spec.paths[path]) {
|
|
168
|
-
const routeSpec = spec.paths[path][verb];
|
|
169
|
-
this._setupOperation(verb, path, routeSpec);
|
|
170
|
-
}
|
|
171
|
-
}
|
|
172
|
-
}
|
|
173
|
-
_setupOperation(verb, path, spec) {
|
|
174
|
-
const handler = spec['x-operation'];
|
|
175
|
-
if (typeof handler === 'function') {
|
|
176
|
-
// Remove a field value that cannot be represented in JSON.
|
|
177
|
-
// Start by creating a shallow-copy of the spec, so that we don't
|
|
178
|
-
// modify the original spec object provided by user.
|
|
179
|
-
spec = Object.assign({}, spec);
|
|
180
|
-
delete spec['x-operation'];
|
|
181
|
-
const route = new _1.Route(verb, path, spec, handler);
|
|
182
|
-
this._httpHandler.registerRoute(route);
|
|
183
|
-
return;
|
|
184
|
-
}
|
|
185
|
-
const controllerName = spec['x-controller-name'];
|
|
186
|
-
if (typeof controllerName === 'string') {
|
|
187
|
-
const b = this.find(`controllers.${controllerName}`)[0];
|
|
188
|
-
if (!b) {
|
|
189
|
-
throw new Error(`Unknown controller ${controllerName} used by "${verb} ${path}"`);
|
|
190
|
-
}
|
|
191
|
-
const ctor = b.valueConstructor;
|
|
192
|
-
if (!ctor) {
|
|
193
|
-
throw new Error(`The controller ${controllerName} was not bound via .toClass()`);
|
|
194
|
-
}
|
|
195
|
-
const route = new _1.ControllerRoute(verb, path, spec, ctor);
|
|
196
|
-
this._httpHandler.registerRoute(route);
|
|
197
|
-
return;
|
|
198
|
-
}
|
|
199
|
-
throw new Error(`There is no handler configured for operation "${verb} ${path}`);
|
|
200
|
-
}
|
|
201
|
-
async _serveOpenApiSpec(request, response, options) {
|
|
202
|
-
options = options || { version: '2.0', format: 'json' };
|
|
203
|
-
let specObj = this.getApiSpec();
|
|
204
|
-
if (options.version === '3.0.0') {
|
|
205
|
-
specObj = await swagger2openapi.convertObj(specObj, { direct: true });
|
|
206
|
-
}
|
|
207
|
-
if (options.format === 'json') {
|
|
208
|
-
const spec = JSON.stringify(specObj, null, 2);
|
|
209
|
-
response.setHeader('content-type', 'application/json; charset=utf-8');
|
|
210
|
-
response.end(spec, 'utf-8');
|
|
211
|
-
}
|
|
212
|
-
else {
|
|
213
|
-
const yaml = js_yaml_1.safeDump(specObj, {});
|
|
214
|
-
response.setHeader('content-type', 'text/yaml; charset=utf-8');
|
|
215
|
-
response.end(yaml, 'utf-8');
|
|
216
|
-
}
|
|
217
|
-
}
|
|
218
|
-
async _redirectToSwaggerUI(request, response) {
|
|
219
|
-
response.statusCode = 308;
|
|
220
|
-
response.setHeader('Location', 'http://petstore.swagger.io/?url=' +
|
|
221
|
-
'http://' +
|
|
222
|
-
request.headers.host +
|
|
223
|
-
'/swagger.json');
|
|
224
|
-
response.end();
|
|
225
|
-
}
|
|
226
|
-
/**
|
|
227
|
-
* Register a controller class with this server.
|
|
228
|
-
*
|
|
229
|
-
* @param {Constructor} controllerCtor The controller class
|
|
230
|
-
* (constructor function).
|
|
231
|
-
* @returns {Binding} The newly created binding, you can use the reference to
|
|
232
|
-
* further modify the binding, e.g. lock the value to prevent further
|
|
233
|
-
* modifications.
|
|
234
|
-
*
|
|
235
|
-
* ```ts
|
|
236
|
-
* class MyController {
|
|
237
|
-
* }
|
|
238
|
-
* app.controller(MyController).lock();
|
|
239
|
-
* ```
|
|
240
|
-
*
|
|
241
|
-
*/
|
|
242
|
-
controller(controllerCtor) {
|
|
243
|
-
return this.bind('controllers.' + controllerCtor.name).toClass(controllerCtor);
|
|
244
|
-
}
|
|
245
|
-
route(routeOrVerb, path, spec, controller, methodName) {
|
|
246
|
-
if (typeof routeOrVerb === 'object') {
|
|
247
|
-
const r = routeOrVerb;
|
|
248
|
-
return this.bind(`routes.${r.verb} ${r.path}`).to(r);
|
|
249
|
-
}
|
|
250
|
-
if (!path) {
|
|
251
|
-
throw new assert_1.AssertionError({
|
|
252
|
-
message: 'path is required for a controller-based route',
|
|
253
|
-
});
|
|
254
|
-
}
|
|
255
|
-
if (!spec) {
|
|
256
|
-
throw new assert_1.AssertionError({
|
|
257
|
-
message: 'spec is required for a controller-based route',
|
|
258
|
-
});
|
|
259
|
-
}
|
|
260
|
-
if (!controller) {
|
|
261
|
-
throw new assert_1.AssertionError({
|
|
262
|
-
message: 'controller is required for a controller-based route',
|
|
263
|
-
});
|
|
264
|
-
}
|
|
265
|
-
if (!methodName) {
|
|
266
|
-
throw new assert_1.AssertionError({
|
|
267
|
-
message: 'methodName is required for a controller-based route',
|
|
268
|
-
});
|
|
269
|
-
}
|
|
270
|
-
return this.route(new _1.ControllerRoute(routeOrVerb, path, spec, controller, methodName));
|
|
271
|
-
}
|
|
272
|
-
/**
|
|
273
|
-
* Set the OpenAPI specification that defines the REST API schema for this
|
|
274
|
-
* server. All routes, parameter definitions and return types will be defined
|
|
275
|
-
* in this way.
|
|
276
|
-
*
|
|
277
|
-
* Note that this will override any routes defined via decorators at the
|
|
278
|
-
* controller level (this function takes precedent).
|
|
279
|
-
*
|
|
280
|
-
* @param {OpenApiSpec} spec The OpenAPI specification, as an object.
|
|
281
|
-
* @returns {Binding}
|
|
282
|
-
* @memberof RestServer
|
|
283
|
-
*/
|
|
284
|
-
api(spec) {
|
|
285
|
-
return this.bind(keys_1.RestBindings.API_SPEC).to(spec);
|
|
286
|
-
}
|
|
287
|
-
/**
|
|
288
|
-
* Get the OpenAPI specification describing the REST API provided by
|
|
289
|
-
* this application.
|
|
290
|
-
*
|
|
291
|
-
* This method merges operations (HTTP endpoints) from the following sources:
|
|
292
|
-
* - `app.api(spec)`
|
|
293
|
-
* - `app.controller(MyController)`
|
|
294
|
-
* - `app.route(route)`
|
|
295
|
-
* - `app.route('get', '/greet', operationSpec, MyController, 'greet')`
|
|
296
|
-
*/
|
|
297
|
-
getApiSpec() {
|
|
298
|
-
const spec = this.getSync(keys_1.RestBindings.API_SPEC);
|
|
299
|
-
// Apply deep clone to prevent getApiSpec() callers from
|
|
300
|
-
// accidentally modifying our internal routing data
|
|
301
|
-
spec.paths = cloneDeep(this.httpHandler.describeApiPaths());
|
|
302
|
-
return spec;
|
|
303
|
-
}
|
|
304
|
-
/**
|
|
305
|
-
* Configure a custom sequence class for handling incoming requests.
|
|
306
|
-
*
|
|
307
|
-
* ```ts
|
|
308
|
-
* class MySequence implements SequenceHandler {
|
|
309
|
-
* constructor(
|
|
310
|
-
* @inject('send) public send: Send)) {
|
|
311
|
-
* }
|
|
312
|
-
*
|
|
313
|
-
* public async handle(request: ParsedRequest, response: ServerResponse) {
|
|
314
|
-
* send(response, 'hello world');
|
|
315
|
-
* }
|
|
316
|
-
* }
|
|
317
|
-
* ```
|
|
318
|
-
*
|
|
319
|
-
* @param value The sequence to invoke for each incoming request.
|
|
320
|
-
*/
|
|
321
|
-
sequence(value) {
|
|
322
|
-
this.bind(keys_1.RestBindings.SEQUENCE).toClass(value);
|
|
323
|
-
}
|
|
324
|
-
/**
|
|
325
|
-
* Configure a custom sequence function for handling incoming requests.
|
|
326
|
-
*
|
|
327
|
-
* ```ts
|
|
328
|
-
* app.handler((sequence, request, response) => {
|
|
329
|
-
* sequence.send(response, 'hello world');
|
|
330
|
-
* });
|
|
331
|
-
* ```
|
|
332
|
-
*
|
|
333
|
-
* @param handlerFn The handler to invoke for each incoming request.
|
|
334
|
-
*/
|
|
335
|
-
handler(handlerFn) {
|
|
336
|
-
let SequenceFromFunction = class SequenceFromFunction extends sequence_1.DefaultSequence {
|
|
337
|
-
// NOTE(bajtos) Unfortunately, we have to duplicate the constructor
|
|
338
|
-
// in order for our DI/IoC framework to inject constructor arguments
|
|
339
|
-
constructor(ctx, findRoute, parseParams, invoke, send, reject) {
|
|
340
|
-
super(ctx, findRoute, parseParams, invoke, send, reject);
|
|
341
|
-
this.ctx = ctx;
|
|
342
|
-
this.findRoute = findRoute;
|
|
343
|
-
this.parseParams = parseParams;
|
|
344
|
-
this.invoke = invoke;
|
|
345
|
-
this.send = send;
|
|
346
|
-
this.reject = reject;
|
|
347
|
-
}
|
|
348
|
-
async handle(request, response) {
|
|
349
|
-
await Promise.resolve(handlerFn(this, request, response));
|
|
350
|
-
}
|
|
351
|
-
};
|
|
352
|
-
SequenceFromFunction = __decorate([
|
|
353
|
-
__param(0, context_1.inject(keys_1.RestBindings.Http.CONTEXT)),
|
|
354
|
-
__param(1, context_1.inject(SequenceActions.FIND_ROUTE)),
|
|
355
|
-
__param(2, context_1.inject(SequenceActions.PARSE_PARAMS)),
|
|
356
|
-
__param(3, context_1.inject(SequenceActions.INVOKE_METHOD)),
|
|
357
|
-
__param(4, context_1.inject(SequenceActions.SEND)),
|
|
358
|
-
__param(5, context_1.inject(SequenceActions.REJECT)),
|
|
359
|
-
__metadata("design:paramtypes", [context_1.Context, Function, Function, Function, Function, Function])
|
|
360
|
-
], SequenceFromFunction);
|
|
361
|
-
this.sequence(SequenceFromFunction);
|
|
362
|
-
}
|
|
363
|
-
/**
|
|
364
|
-
* Start this REST API's HTTP/HTTPS server.
|
|
365
|
-
*
|
|
366
|
-
* @returns {Promise<void>}
|
|
367
|
-
* @memberof RestServer
|
|
368
|
-
*/
|
|
369
|
-
async start() {
|
|
370
|
-
// Setup the HTTP handler so that we can verify the configuration
|
|
371
|
-
// of API spec, controllers and routes at startup time.
|
|
372
|
-
this._setupHandlerIfNeeded();
|
|
373
|
-
const httpPort = await this.get(keys_1.RestBindings.PORT);
|
|
374
|
-
this._httpServer = http_1.createServer(this.handleHttp);
|
|
375
|
-
const httpServer = this._httpServer;
|
|
376
|
-
// TODO(bajtos) support httpHostname too
|
|
377
|
-
// See https://github.com/strongloop/loopback-next/issues/434
|
|
378
|
-
httpServer.listen(httpPort);
|
|
379
|
-
return new Promise((resolve, reject) => {
|
|
380
|
-
httpServer.once('listening', () => {
|
|
381
|
-
this.bind(keys_1.RestBindings.PORT).to(httpServer.address().port);
|
|
382
|
-
resolve();
|
|
383
|
-
});
|
|
384
|
-
httpServer.once('error', reject);
|
|
385
|
-
});
|
|
386
|
-
}
|
|
387
|
-
/**
|
|
388
|
-
* Stop this REST API's HTTP/HTTPS server.
|
|
389
|
-
*
|
|
390
|
-
* @returns {Promise<void>}
|
|
391
|
-
* @memberof RestServer
|
|
392
|
-
*/
|
|
393
|
-
async stop() {
|
|
394
|
-
// Kill the server instance.
|
|
395
|
-
const server = this._httpServer;
|
|
396
|
-
return new Promise((resolve, reject) => {
|
|
397
|
-
server.close((err) => {
|
|
398
|
-
if (err) {
|
|
399
|
-
reject(err);
|
|
400
|
-
}
|
|
401
|
-
else {
|
|
402
|
-
resolve();
|
|
403
|
-
}
|
|
404
|
-
});
|
|
405
|
-
});
|
|
406
|
-
}
|
|
407
|
-
_onUnhandledError(req, res, err) {
|
|
408
|
-
if (!res.headersSent) {
|
|
409
|
-
res.statusCode = 500;
|
|
410
|
-
res.end();
|
|
411
|
-
}
|
|
412
|
-
// It's the responsibility of the Sequence to handle any errors.
|
|
413
|
-
// If an unhandled error escaped, then something very wrong happened
|
|
414
|
-
// and it's best to crash the process immediately.
|
|
415
|
-
process.nextTick(() => {
|
|
416
|
-
throw err;
|
|
417
|
-
});
|
|
418
|
-
}
|
|
419
|
-
};
|
|
420
|
-
RestServer = __decorate([
|
|
421
|
-
__param(0, context_1.inject(core_1.CoreBindings.APPLICATION_INSTANCE)),
|
|
422
|
-
__param(1, context_1.inject(keys_1.RestBindings.CONFIG)),
|
|
423
|
-
__metadata("design:paramtypes", [core_1.Application, Object])
|
|
424
|
-
], RestServer);
|
|
425
|
-
exports.RestServer = RestServer;
|
|
426
|
-
//# sourceMappingURL=rest-server.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"rest-server.js","sourceRoot":"","sources":["../../src/rest-server.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,150 +0,0 @@
|
|
|
1
|
-
import { OperationObject, ParameterObject, SchemaObject, PathsObject } from '@loopback/openapi-spec';
|
|
2
|
-
export interface ControllerSpec {
|
|
3
|
-
/**
|
|
4
|
-
* The base path on which the Controller API is served.
|
|
5
|
-
* If it is not included, the API is served directly under the host.
|
|
6
|
-
* The value MUST start with a leading slash (/).
|
|
7
|
-
*/
|
|
8
|
-
basePath?: string;
|
|
9
|
-
/**
|
|
10
|
-
* The available paths and operations for the API.
|
|
11
|
-
*/
|
|
12
|
-
paths: PathsObject;
|
|
13
|
-
}
|
|
14
|
-
/**
|
|
15
|
-
* Decorate the given Controller constructor with metadata describing
|
|
16
|
-
* the HTTP/REST API the Controller implements/provides.
|
|
17
|
-
*
|
|
18
|
-
* `@api` can be applied to controller classes. For example,
|
|
19
|
-
* ```
|
|
20
|
-
* @api({basePath: '/my'})
|
|
21
|
-
* class MyController {
|
|
22
|
-
* // ...
|
|
23
|
-
* }
|
|
24
|
-
* ```
|
|
25
|
-
*
|
|
26
|
-
* @param spec OpenAPI specification describing the endpoints
|
|
27
|
-
* handled by this controller
|
|
28
|
-
*
|
|
29
|
-
* @decorator
|
|
30
|
-
*/
|
|
31
|
-
export declare function api(spec: ControllerSpec): (constructor: Function) => void;
|
|
32
|
-
/**
|
|
33
|
-
* Get the controller spec for the given class
|
|
34
|
-
* @param constructor Controller class
|
|
35
|
-
*/
|
|
36
|
-
export declare function getControllerSpec(constructor: Function): ControllerSpec;
|
|
37
|
-
/**
|
|
38
|
-
* Expose a Controller method as a REST API operation
|
|
39
|
-
* mapped to `GET` request method.
|
|
40
|
-
*
|
|
41
|
-
* @param path The URL path of this operation, e.g. `/product/{id}`
|
|
42
|
-
* @param spec The OpenAPI specification describing parameters and responses
|
|
43
|
-
* of this operation.
|
|
44
|
-
*/
|
|
45
|
-
export declare function get(path: string, spec?: OperationObject): (target: any, propertyKey: string, descriptor: PropertyDescriptor) => void;
|
|
46
|
-
/**
|
|
47
|
-
* Expose a Controller method as a REST API operation
|
|
48
|
-
* mapped to `POST` request method.
|
|
49
|
-
*
|
|
50
|
-
* @param path The URL path of this operation, e.g. `/product/{id}`
|
|
51
|
-
* @param spec The OpenAPI specification describing parameters and responses
|
|
52
|
-
* of this operation.
|
|
53
|
-
*/
|
|
54
|
-
export declare function post(path: string, spec?: OperationObject): (target: any, propertyKey: string, descriptor: PropertyDescriptor) => void;
|
|
55
|
-
/**
|
|
56
|
-
* Expose a Controller method as a REST API operation
|
|
57
|
-
* mapped to `PUT` request method.
|
|
58
|
-
*
|
|
59
|
-
* @param path The URL path of this operation, e.g. `/product/{id}`
|
|
60
|
-
* @param spec The OpenAPI specification describing parameters and responses
|
|
61
|
-
* of this operation.
|
|
62
|
-
*/
|
|
63
|
-
export declare function put(path: string, spec?: OperationObject): (target: any, propertyKey: string, descriptor: PropertyDescriptor) => void;
|
|
64
|
-
/**
|
|
65
|
-
* Expose a Controller method as a REST API operation
|
|
66
|
-
* mapped to `PATCH` request method.
|
|
67
|
-
*
|
|
68
|
-
* @param path The URL path of this operation, e.g. `/product/{id}`
|
|
69
|
-
* @param spec The OpenAPI specification describing parameters and responses
|
|
70
|
-
* of this operation.
|
|
71
|
-
*/
|
|
72
|
-
export declare function patch(path: string, spec?: OperationObject): (target: any, propertyKey: string, descriptor: PropertyDescriptor) => void;
|
|
73
|
-
/**
|
|
74
|
-
* Expose a Controller method as a REST API operation
|
|
75
|
-
* mapped to `DELETE` request method.
|
|
76
|
-
*
|
|
77
|
-
* @param path The URL path of this operation, e.g. `/product/{id}`
|
|
78
|
-
* @param spec The OpenAPI specification describing parameters and responses
|
|
79
|
-
* of this operation.
|
|
80
|
-
*/
|
|
81
|
-
export declare function del(path: string, spec?: OperationObject): (target: any, propertyKey: string, descriptor: PropertyDescriptor) => void;
|
|
82
|
-
/**
|
|
83
|
-
* Expose a Controller method as a REST API operation.
|
|
84
|
-
*
|
|
85
|
-
* @param verb HTTP verb, e.g. `GET` or `POST`.
|
|
86
|
-
* @param path The URL path of this operation, e.g. `/product/{id}`
|
|
87
|
-
* @param spec The OpenAPI specification describing parameters and responses
|
|
88
|
-
* of this operation.
|
|
89
|
-
*/
|
|
90
|
-
export declare function operation(verb: string, path: string, spec?: OperationObject): (target: any, propertyKey: string, descriptor: PropertyDescriptor) => void;
|
|
91
|
-
/**
|
|
92
|
-
* Describe an input parameter of a Controller method.
|
|
93
|
-
*
|
|
94
|
-
* `@param` can be applied to method itself or specific parameters. For example,
|
|
95
|
-
* ```
|
|
96
|
-
* class MyController {
|
|
97
|
-
* @get('/')
|
|
98
|
-
* @param(offsetSpec)
|
|
99
|
-
* @param(pageSizeSpec)
|
|
100
|
-
* list(offset?: number, pageSize?: number) {}
|
|
101
|
-
* }
|
|
102
|
-
* ```
|
|
103
|
-
* or
|
|
104
|
-
* ```
|
|
105
|
-
* class MyController {
|
|
106
|
-
* @get('/')
|
|
107
|
-
* list(
|
|
108
|
-
* @param(offsetSpec) offset?: number,
|
|
109
|
-
* @param(pageSizeSpec) pageSize?: number,
|
|
110
|
-
* ) {}
|
|
111
|
-
* }
|
|
112
|
-
* ```
|
|
113
|
-
* Please note mixed usage of `@param` at method/parameter level is not allowed.
|
|
114
|
-
*
|
|
115
|
-
* @param paramSpec Parameter specification.
|
|
116
|
-
*/
|
|
117
|
-
export declare function param(paramSpec: ParameterObject): (target: any, propertyKey: string, descriptorOrParameterIndex: number | PropertyDescriptor) => void;
|
|
118
|
-
export declare namespace param {
|
|
119
|
-
const query: {
|
|
120
|
-
string: (name: string) => (target: any, propertyKey: string, descriptorOrParameterIndex: number | PropertyDescriptor) => void;
|
|
121
|
-
number: (name: string) => (target: any, propertyKey: string, descriptorOrParameterIndex: number | PropertyDescriptor) => void;
|
|
122
|
-
integer: (name: string) => (target: any, propertyKey: string, descriptorOrParameterIndex: number | PropertyDescriptor) => void;
|
|
123
|
-
boolean: (name: string) => (target: any, propertyKey: string, descriptorOrParameterIndex: number | PropertyDescriptor) => void;
|
|
124
|
-
};
|
|
125
|
-
const header: {
|
|
126
|
-
string: (name: string) => (target: any, propertyKey: string, descriptorOrParameterIndex: number | PropertyDescriptor) => void;
|
|
127
|
-
number: (name: string) => (target: any, propertyKey: string, descriptorOrParameterIndex: number | PropertyDescriptor) => void;
|
|
128
|
-
integer: (name: string) => (target: any, propertyKey: string, descriptorOrParameterIndex: number | PropertyDescriptor) => void;
|
|
129
|
-
boolean: (name: string) => (target: any, propertyKey: string, descriptorOrParameterIndex: number | PropertyDescriptor) => void;
|
|
130
|
-
};
|
|
131
|
-
const path: {
|
|
132
|
-
string: (name: string) => (target: any, propertyKey: string, descriptorOrParameterIndex: number | PropertyDescriptor) => void;
|
|
133
|
-
number: (name: string) => (target: any, propertyKey: string, descriptorOrParameterIndex: number | PropertyDescriptor) => void;
|
|
134
|
-
integer: (name: string) => (target: any, propertyKey: string, descriptorOrParameterIndex: number | PropertyDescriptor) => void;
|
|
135
|
-
boolean: (name: string) => (target: any, propertyKey: string, descriptorOrParameterIndex: number | PropertyDescriptor) => void;
|
|
136
|
-
};
|
|
137
|
-
const formData: {
|
|
138
|
-
string: (name: string) => (target: any, propertyKey: string, descriptorOrParameterIndex: number | PropertyDescriptor) => void;
|
|
139
|
-
number: (name: string) => (target: any, propertyKey: string, descriptorOrParameterIndex: number | PropertyDescriptor) => void;
|
|
140
|
-
integer: (name: string) => (target: any, propertyKey: string, descriptorOrParameterIndex: number | PropertyDescriptor) => void;
|
|
141
|
-
boolean: (name: string) => (target: any, propertyKey: string, descriptorOrParameterIndex: number | PropertyDescriptor) => void;
|
|
142
|
-
};
|
|
143
|
-
/**
|
|
144
|
-
* Define a parameter that's set to the full request body.
|
|
145
|
-
*
|
|
146
|
-
* @param name Parameter name
|
|
147
|
-
* @param schema The schema defining the type used for the body parameter.
|
|
148
|
-
*/
|
|
149
|
-
const body: (name: string, schema: SchemaObject) => (target: any, propertyKey: string, descriptorOrParameterIndex: number | PropertyDescriptor) => void;
|
|
150
|
-
}
|