@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,204 +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 context_1 = require("@loopback/context");
|
|
8
|
-
const HttpErrors = require("http-errors");
|
|
9
|
-
const assert = require("assert");
|
|
10
|
-
const url = require("url");
|
|
11
|
-
const debug = require('debug')('loopback:core:routing-table');
|
|
12
|
-
// TODO(bajtos) Refactor this code to use Trie-based lookup,
|
|
13
|
-
// e.g. via wayfarer/trie or find-my-way
|
|
14
|
-
// See https://github.com/strongloop/loopback-next/issues/98
|
|
15
|
-
const pathToRegexp = require("path-to-regexp");
|
|
16
|
-
/**
|
|
17
|
-
* Parse the URL of the incoming request and set additional properties
|
|
18
|
-
* on this request object:
|
|
19
|
-
* - `path`
|
|
20
|
-
* - `query`
|
|
21
|
-
*
|
|
22
|
-
* @private
|
|
23
|
-
* @param request
|
|
24
|
-
*/
|
|
25
|
-
function parseRequestUrl(request) {
|
|
26
|
-
// TODO(bajtos) The following parsing can be skipped when the router
|
|
27
|
-
// is mounted on an express app
|
|
28
|
-
const parsedRequest = request;
|
|
29
|
-
const parsedUrl = url.parse(parsedRequest.url, true);
|
|
30
|
-
parsedRequest.path = parsedUrl.pathname || '/';
|
|
31
|
-
parsedRequest.query = parsedUrl.query;
|
|
32
|
-
return parsedRequest;
|
|
33
|
-
}
|
|
34
|
-
exports.parseRequestUrl = parseRequestUrl;
|
|
35
|
-
class RoutingTable {
|
|
36
|
-
constructor() {
|
|
37
|
-
this._routes = [];
|
|
38
|
-
}
|
|
39
|
-
registerController(controller, spec) {
|
|
40
|
-
assert(typeof spec === 'object' && !!spec, 'API specification must be a non-null object');
|
|
41
|
-
if (!spec.paths || !Object.keys(spec.paths).length) {
|
|
42
|
-
return;
|
|
43
|
-
}
|
|
44
|
-
debug('Registering Controller with API', spec);
|
|
45
|
-
const basePath = spec.basePath || '/';
|
|
46
|
-
for (const p in spec.paths) {
|
|
47
|
-
for (const verb in spec.paths[p]) {
|
|
48
|
-
const opSpec = spec.paths[p][verb];
|
|
49
|
-
const fullPath = RoutingTable.joinPath(basePath, p);
|
|
50
|
-
const route = new ControllerRoute(verb, fullPath, opSpec, controller);
|
|
51
|
-
this.registerRoute(route);
|
|
52
|
-
}
|
|
53
|
-
}
|
|
54
|
-
}
|
|
55
|
-
static joinPath(basePath, path) {
|
|
56
|
-
const fullPath = [basePath, path]
|
|
57
|
-
.join('/') // Join by /
|
|
58
|
-
.replace(/(\/){2,}/g, '/') // Remove extra /
|
|
59
|
-
.replace(/\/$/, '') // Remove trailing /
|
|
60
|
-
.replace(/^(\/)?/, '/'); // Add leading /
|
|
61
|
-
return fullPath;
|
|
62
|
-
}
|
|
63
|
-
registerRoute(route) {
|
|
64
|
-
// TODO(bajtos) handle the case where opSpec.parameters contains $ref
|
|
65
|
-
// See https://github.com/strongloop/loopback-next/issues/435
|
|
66
|
-
debug('Registering route %s %s -> %s(%s)', route.verb, route.path, route.describe(), describeOperationParameters(route.spec));
|
|
67
|
-
this._routes.push(route);
|
|
68
|
-
}
|
|
69
|
-
describeApiPaths() {
|
|
70
|
-
const paths = {};
|
|
71
|
-
for (const route of this._routes) {
|
|
72
|
-
if (!paths[route.path]) {
|
|
73
|
-
paths[route.path] = {};
|
|
74
|
-
}
|
|
75
|
-
paths[route.path][route.verb] = route.spec;
|
|
76
|
-
}
|
|
77
|
-
return paths;
|
|
78
|
-
}
|
|
79
|
-
find(request) {
|
|
80
|
-
for (const entry of this._routes) {
|
|
81
|
-
const match = entry.match(request);
|
|
82
|
-
if (match)
|
|
83
|
-
return match;
|
|
84
|
-
}
|
|
85
|
-
throw new HttpErrors.NotFound(`Endpoint "${request.method} ${request.path}" not found.`);
|
|
86
|
-
}
|
|
87
|
-
}
|
|
88
|
-
exports.RoutingTable = RoutingTable;
|
|
89
|
-
class BaseRoute {
|
|
90
|
-
constructor(verb, path, spec) {
|
|
91
|
-
this.path = path;
|
|
92
|
-
this.spec = spec;
|
|
93
|
-
this._keys = [];
|
|
94
|
-
this.verb = verb.toLowerCase();
|
|
95
|
-
// In Swagger, path parameters are wrapped in `{}`.
|
|
96
|
-
// In Express.js, path parameters are prefixed with `:`
|
|
97
|
-
path = path.replace(/{([^}]*)}(\/|$)/g, ':$1$2');
|
|
98
|
-
this._pathRegexp = pathToRegexp(path, this._keys, {
|
|
99
|
-
strict: false,
|
|
100
|
-
end: true,
|
|
101
|
-
});
|
|
102
|
-
}
|
|
103
|
-
match(request) {
|
|
104
|
-
debug('trying endpoint', this);
|
|
105
|
-
if (this.verb !== request.method.toLowerCase()) {
|
|
106
|
-
debug(' -> verb mismatch');
|
|
107
|
-
return undefined;
|
|
108
|
-
}
|
|
109
|
-
const match = this._pathRegexp.exec(request.path);
|
|
110
|
-
if (!match) {
|
|
111
|
-
debug(' -> path mismatch');
|
|
112
|
-
return undefined;
|
|
113
|
-
}
|
|
114
|
-
const pathParams = this._buildPathParams(match);
|
|
115
|
-
debug(' -> found with params: %j', pathParams);
|
|
116
|
-
return createResolvedRoute(this, pathParams);
|
|
117
|
-
}
|
|
118
|
-
describe() {
|
|
119
|
-
return `"${this.verb} ${this.path}"`;
|
|
120
|
-
}
|
|
121
|
-
_buildPathParams(pathMatch) {
|
|
122
|
-
const pathParams = Object.create(null);
|
|
123
|
-
for (const ix in this._keys) {
|
|
124
|
-
const key = this._keys[ix];
|
|
125
|
-
const matchIndex = +ix + 1;
|
|
126
|
-
pathParams[key.name] = pathMatch[matchIndex];
|
|
127
|
-
}
|
|
128
|
-
return pathParams;
|
|
129
|
-
}
|
|
130
|
-
}
|
|
131
|
-
exports.BaseRoute = BaseRoute;
|
|
132
|
-
function createResolvedRoute(route, pathParams) {
|
|
133
|
-
return Object.create(route, {
|
|
134
|
-
pathParams: {
|
|
135
|
-
writable: false,
|
|
136
|
-
value: pathParams,
|
|
137
|
-
},
|
|
138
|
-
});
|
|
139
|
-
}
|
|
140
|
-
exports.createResolvedRoute = createResolvedRoute;
|
|
141
|
-
class Route extends BaseRoute {
|
|
142
|
-
constructor(verb, path, spec, _handler) {
|
|
143
|
-
super(verb, path, spec);
|
|
144
|
-
this.spec = spec;
|
|
145
|
-
this._handler = _handler;
|
|
146
|
-
}
|
|
147
|
-
describe() {
|
|
148
|
-
return this._handler.name || super.describe();
|
|
149
|
-
}
|
|
150
|
-
updateBindings(requestContext) {
|
|
151
|
-
// no-op
|
|
152
|
-
}
|
|
153
|
-
async invokeHandler(requestContext, args) {
|
|
154
|
-
return await this._handler(...args);
|
|
155
|
-
}
|
|
156
|
-
}
|
|
157
|
-
exports.Route = Route;
|
|
158
|
-
class ControllerRoute extends BaseRoute {
|
|
159
|
-
constructor(verb, path, spec, _controllerCtor, methodName) {
|
|
160
|
-
super(verb, path,
|
|
161
|
-
// Add x-controller-name and x-operation-name if not present
|
|
162
|
-
Object.assign({
|
|
163
|
-
'x-controller-name': _controllerCtor.name,
|
|
164
|
-
'x-operation-name': methodName,
|
|
165
|
-
}, spec));
|
|
166
|
-
this._controllerCtor = _controllerCtor;
|
|
167
|
-
if (!methodName) {
|
|
168
|
-
methodName = this.spec['x-operation-name'];
|
|
169
|
-
}
|
|
170
|
-
if (!methodName) {
|
|
171
|
-
throw new Error('methodName must be provided either via the ControllerRoute argument ' +
|
|
172
|
-
'or via "x-operation-name" extension field in OpenAPI spec. ' +
|
|
173
|
-
`Operation: "${verb} ${path}" ` +
|
|
174
|
-
`Controller: ${this._controllerCtor.name}.`);
|
|
175
|
-
}
|
|
176
|
-
this._methodName = methodName;
|
|
177
|
-
}
|
|
178
|
-
describe() {
|
|
179
|
-
return `${this._controllerCtor.name}.${this._methodName}`;
|
|
180
|
-
}
|
|
181
|
-
updateBindings(requestContext) {
|
|
182
|
-
const ctor = this._controllerCtor;
|
|
183
|
-
requestContext.bind('controller.current.ctor').to(ctor);
|
|
184
|
-
requestContext.bind('controller.current.operation').to(this._methodName);
|
|
185
|
-
}
|
|
186
|
-
async invokeHandler(requestContext, args) {
|
|
187
|
-
const controller = await this._createControllerInstance(requestContext);
|
|
188
|
-
if (typeof controller[this._methodName] !== 'function') {
|
|
189
|
-
throw new HttpErrors.NotFound(`Controller method not found: ${this.describe()}`);
|
|
190
|
-
}
|
|
191
|
-
return await controller[this._methodName](...args);
|
|
192
|
-
}
|
|
193
|
-
async _createControllerInstance(requestContext) {
|
|
194
|
-
const valueOrPromise = context_1.instantiateClass(this._controllerCtor, requestContext);
|
|
195
|
-
return (await Promise.resolve(valueOrPromise));
|
|
196
|
-
}
|
|
197
|
-
}
|
|
198
|
-
exports.ControllerRoute = ControllerRoute;
|
|
199
|
-
function describeOperationParameters(opSpec) {
|
|
200
|
-
return (opSpec.parameters || [])
|
|
201
|
-
.map(p => p.name)
|
|
202
|
-
.join(', ');
|
|
203
|
-
}
|
|
204
|
-
//# sourceMappingURL=routing-table.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"routing-table.js","sourceRoot":"","sources":["../../../src/router/routing-table.ts"],"names":[],"mappings":"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"}
|
package/dist/src/sequence.d.ts
DELETED
|
@@ -1,81 +0,0 @@
|
|
|
1
|
-
/// <reference types="node" />
|
|
2
|
-
import { ServerResponse } from 'http';
|
|
3
|
-
import { Context } from '@loopback/context';
|
|
4
|
-
import { FindRoute, InvokeMethod, ParsedRequest, Send, Reject, ParseParams } from './internal-types';
|
|
5
|
-
/**
|
|
6
|
-
* A sequence function is a function implementing a custom
|
|
7
|
-
* sequence of actions to handle an incoming request.
|
|
8
|
-
*/
|
|
9
|
-
export declare type SequenceFunction = (sequence: DefaultSequence, request: ParsedRequest, response: ServerResponse) => Promise<void> | void;
|
|
10
|
-
/**
|
|
11
|
-
* A sequence handler is a class implementing sequence of actions
|
|
12
|
-
* required to handle an incoming request.
|
|
13
|
-
*/
|
|
14
|
-
export interface SequenceHandler {
|
|
15
|
-
/**
|
|
16
|
-
* Handle the request by running the configured sequence of actions.
|
|
17
|
-
*
|
|
18
|
-
* @param request The incoming HTTP request
|
|
19
|
-
* @param response The HTTP server response where to write the result
|
|
20
|
-
*/
|
|
21
|
-
handle(request: ParsedRequest, response: ServerResponse): Promise<void>;
|
|
22
|
-
}
|
|
23
|
-
/**
|
|
24
|
-
* The default implementation of SequenceHandler.
|
|
25
|
-
*
|
|
26
|
-
* This class implements default Sequence for the LoopBack framework.
|
|
27
|
-
* Default sequence is used if user hasn't defined their own Sequence
|
|
28
|
-
* for their application.
|
|
29
|
-
*
|
|
30
|
-
* Sequence constructor() and run() methods are invoked from [[http-handler]]
|
|
31
|
-
* when the API request comes in. User defines APIs in their Application
|
|
32
|
-
* Controller class.
|
|
33
|
-
*
|
|
34
|
-
* User can bind their own Sequence to app as shown below
|
|
35
|
-
* ```ts
|
|
36
|
-
* app.bind(CoreBindings.SEQUENCE).toClass(MySequence);
|
|
37
|
-
* ```
|
|
38
|
-
*/
|
|
39
|
-
export declare class DefaultSequence implements SequenceHandler {
|
|
40
|
-
ctx: Context;
|
|
41
|
-
protected findRoute: FindRoute;
|
|
42
|
-
protected parseParams: ParseParams;
|
|
43
|
-
protected invoke: InvokeMethod;
|
|
44
|
-
send: Send;
|
|
45
|
-
reject: Reject;
|
|
46
|
-
/**
|
|
47
|
-
* Constructor: Injects findRoute, invokeMethod & logError
|
|
48
|
-
* methods as promises.
|
|
49
|
-
*
|
|
50
|
-
* @param {Context} ctx The context for the sequence (injected via
|
|
51
|
-
* RestBindings.Http.CONTEXT).
|
|
52
|
-
* @param {FindRoute} findRoute Finds the appropriate controller method,
|
|
53
|
-
* spec and args for invocation (injected via SequenceActions.FIND_ROUTE).
|
|
54
|
-
* @param {ParseParams} parseParams The parameter parsing function (injected
|
|
55
|
-
* via SequenceActions.PARSE_PARAMS).
|
|
56
|
-
* @param {InvokeMethod} invoke Invokes the method specified by the route
|
|
57
|
-
* (injected via SequenceActions.INVOKE_METHOD).
|
|
58
|
-
* @param {Send} send The action to merge the invoke result with the response
|
|
59
|
-
* (injected via SequenceActions.SEND)
|
|
60
|
-
* @param {Reject} reject The action to take if the invoke returns a rejected
|
|
61
|
-
* promise result (injected via SequenceActions.REJECT).
|
|
62
|
-
*/
|
|
63
|
-
constructor(ctx: Context, findRoute: FindRoute, parseParams: ParseParams, invoke: InvokeMethod, send: Send, reject: Reject);
|
|
64
|
-
/**
|
|
65
|
-
* Runs the default sequence. Given a request and response, running the
|
|
66
|
-
* sequence will produce a response or an error.
|
|
67
|
-
*
|
|
68
|
-
* Default sequence executes these steps
|
|
69
|
-
* - Finds the appropriate controller method, swagger spec
|
|
70
|
-
* and args for invocation
|
|
71
|
-
* - Parses HTTP request to get API argument list
|
|
72
|
-
* - Invokes the API which is defined in the Application Controller
|
|
73
|
-
* - Writes the result from API into the HTTP response
|
|
74
|
-
* - Error is caught and logged using 'logError' if any of the above steps
|
|
75
|
-
* in the sequence fails with an error.
|
|
76
|
-
* @param req Parsed incoming HTTP request
|
|
77
|
-
* @param res HTTP server response with result from Application controller
|
|
78
|
-
* method invocation
|
|
79
|
-
*/
|
|
80
|
-
handle(req: ParsedRequest, res: ServerResponse): Promise<void>;
|
|
81
|
-
}
|
package/dist/src/sequence.js
DELETED
|
@@ -1,104 +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 debug = require('debug')('loopback:core:sequence');
|
|
20
|
-
const context_1 = require("@loopback/context");
|
|
21
|
-
const keys_1 = require("./keys");
|
|
22
|
-
const SequenceActions = keys_1.RestBindings.SequenceActions;
|
|
23
|
-
/**
|
|
24
|
-
* The default implementation of SequenceHandler.
|
|
25
|
-
*
|
|
26
|
-
* This class implements default Sequence for the LoopBack framework.
|
|
27
|
-
* Default sequence is used if user hasn't defined their own Sequence
|
|
28
|
-
* for their application.
|
|
29
|
-
*
|
|
30
|
-
* Sequence constructor() and run() methods are invoked from [[http-handler]]
|
|
31
|
-
* when the API request comes in. User defines APIs in their Application
|
|
32
|
-
* Controller class.
|
|
33
|
-
*
|
|
34
|
-
* User can bind their own Sequence to app as shown below
|
|
35
|
-
* ```ts
|
|
36
|
-
* app.bind(CoreBindings.SEQUENCE).toClass(MySequence);
|
|
37
|
-
* ```
|
|
38
|
-
*/
|
|
39
|
-
let DefaultSequence = class DefaultSequence {
|
|
40
|
-
/**
|
|
41
|
-
* Constructor: Injects findRoute, invokeMethod & logError
|
|
42
|
-
* methods as promises.
|
|
43
|
-
*
|
|
44
|
-
* @param {Context} ctx The context for the sequence (injected via
|
|
45
|
-
* RestBindings.Http.CONTEXT).
|
|
46
|
-
* @param {FindRoute} findRoute Finds the appropriate controller method,
|
|
47
|
-
* spec and args for invocation (injected via SequenceActions.FIND_ROUTE).
|
|
48
|
-
* @param {ParseParams} parseParams The parameter parsing function (injected
|
|
49
|
-
* via SequenceActions.PARSE_PARAMS).
|
|
50
|
-
* @param {InvokeMethod} invoke Invokes the method specified by the route
|
|
51
|
-
* (injected via SequenceActions.INVOKE_METHOD).
|
|
52
|
-
* @param {Send} send The action to merge the invoke result with the response
|
|
53
|
-
* (injected via SequenceActions.SEND)
|
|
54
|
-
* @param {Reject} reject The action to take if the invoke returns a rejected
|
|
55
|
-
* promise result (injected via SequenceActions.REJECT).
|
|
56
|
-
*/
|
|
57
|
-
constructor(ctx, findRoute, parseParams, invoke, send, reject) {
|
|
58
|
-
this.ctx = ctx;
|
|
59
|
-
this.findRoute = findRoute;
|
|
60
|
-
this.parseParams = parseParams;
|
|
61
|
-
this.invoke = invoke;
|
|
62
|
-
this.send = send;
|
|
63
|
-
this.reject = reject;
|
|
64
|
-
}
|
|
65
|
-
/**
|
|
66
|
-
* Runs the default sequence. Given a request and response, running the
|
|
67
|
-
* sequence will produce a response or an error.
|
|
68
|
-
*
|
|
69
|
-
* Default sequence executes these steps
|
|
70
|
-
* - Finds the appropriate controller method, swagger spec
|
|
71
|
-
* and args for invocation
|
|
72
|
-
* - Parses HTTP request to get API argument list
|
|
73
|
-
* - Invokes the API which is defined in the Application Controller
|
|
74
|
-
* - Writes the result from API into the HTTP response
|
|
75
|
-
* - Error is caught and logged using 'logError' if any of the above steps
|
|
76
|
-
* in the sequence fails with an error.
|
|
77
|
-
* @param req Parsed incoming HTTP request
|
|
78
|
-
* @param res HTTP server response with result from Application controller
|
|
79
|
-
* method invocation
|
|
80
|
-
*/
|
|
81
|
-
async handle(req, res) {
|
|
82
|
-
try {
|
|
83
|
-
const route = this.findRoute(req);
|
|
84
|
-
const args = await this.parseParams(req, route);
|
|
85
|
-
const result = await this.invoke(route, args);
|
|
86
|
-
debug('%s result -', route.describe(), result);
|
|
87
|
-
this.send(res, result);
|
|
88
|
-
}
|
|
89
|
-
catch (err) {
|
|
90
|
-
this.reject(res, req, err);
|
|
91
|
-
}
|
|
92
|
-
}
|
|
93
|
-
};
|
|
94
|
-
DefaultSequence = __decorate([
|
|
95
|
-
__param(0, context_1.inject(keys_1.RestBindings.Http.CONTEXT)),
|
|
96
|
-
__param(1, context_1.inject(SequenceActions.FIND_ROUTE)),
|
|
97
|
-
__param(2, context_1.inject(SequenceActions.PARSE_PARAMS)),
|
|
98
|
-
__param(3, context_1.inject(SequenceActions.INVOKE_METHOD)),
|
|
99
|
-
__param(4, context_1.inject(SequenceActions.SEND)),
|
|
100
|
-
__param(5, context_1.inject(SequenceActions.REJECT)),
|
|
101
|
-
__metadata("design:paramtypes", [context_1.Context, Function, Function, Function, Function, Function])
|
|
102
|
-
], DefaultSequence);
|
|
103
|
-
exports.DefaultSequence = DefaultSequence;
|
|
104
|
-
//# sourceMappingURL=sequence.js.map
|
package/dist/src/sequence.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"sequence.js","sourceRoot":"","sources":["../../src/sequence.ts"],"names":[],"mappings":";AAAA,iDAAiD;AACjD,8BAA8B;AAC9B,+CAA+C;AAC/C,gEAAgE;;;;;;;;;;;;;;AAEhE,MAAM,KAAK,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC,wBAAwB,CAAC,CAAC;AAEzD,+CAAkD;AASlD,iCAAoC;AAEpC,MAAM,eAAe,GAAG,mBAAY,CAAC,eAAe,CAAC;AA0BrD;;;;;;;;;;;;;;;GAeG;AACH,IAAa,eAAe,GAA5B;IACE;;;;;;;;;;;;;;;;OAgBG;IACH,YAC4C,GAAY,EACR,SAAoB,EAClB,WAAwB,EACvB,MAAoB,EAChC,IAAU,EACR,MAAc;QALX,QAAG,GAAH,GAAG,CAAS;QACR,cAAS,GAAT,SAAS,CAAW;QAClB,gBAAW,GAAX,WAAW,CAAa;QACvB,WAAM,GAAN,MAAM,CAAc;QAChC,SAAI,GAAJ,IAAI,CAAM;QACR,WAAM,GAAN,MAAM,CAAQ;IACpD,CAAC;IAEJ;;;;;;;;;;;;;;;OAeG;IACH,KAAK,CAAC,MAAM,CAAC,GAAkB,EAAE,GAAmB;QAClD,IAAI,CAAC;YACH,MAAM,KAAK,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;YAClC,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,WAAW,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;YAChD,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;YAE9C,KAAK,CAAC,aAAa,EAAE,KAAK,CAAC,QAAQ,EAAE,EAAE,MAAM,CAAC,CAAC;YAC/C,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC;QACzB,CAAC;QAAC,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;YACb,IAAI,CAAC,MAAM,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC;QAC7B,CAAC;IACH,CAAC;CACF,CAAA;AAvDY,eAAe;IAmBvB,WAAA,gBAAM,CAAC,mBAAY,CAAC,IAAI,CAAC,OAAO,CAAC,CAAA;IACjC,WAAA,gBAAM,CAAC,eAAe,CAAC,UAAU,CAAC,CAAA;IAClC,WAAA,gBAAM,CAAC,eAAe,CAAC,YAAY,CAAC,CAAA;IACpC,WAAA,gBAAM,CAAC,eAAe,CAAC,aAAa,CAAC,CAAA;IACrC,WAAA,gBAAM,CAAC,eAAe,CAAC,IAAI,CAAC,CAAA;IAC5B,WAAA,gBAAM,CAAC,eAAe,CAAC,MAAM,CAAC,CAAA;qCALgB,iBAAO;GAnB7C,eAAe,CAuD3B;AAvDY,0CAAe"}
|
package/dist/src/writer.d.ts
DELETED
|
@@ -1,17 +0,0 @@
|
|
|
1
|
-
/// <reference types="node" />
|
|
2
|
-
import { ServerResponse as Response } from 'http';
|
|
3
|
-
import { OperationRetval } from './internal-types';
|
|
4
|
-
/**
|
|
5
|
-
* Writes the result from Application controller method
|
|
6
|
-
* into the HTTP response
|
|
7
|
-
*
|
|
8
|
-
* @param response HTTP Response
|
|
9
|
-
* @param result Result from the API to write into HTTP Response
|
|
10
|
-
*/
|
|
11
|
-
export declare function writeResultToResponse(response: Response, result: OperationRetval): void;
|
|
12
|
-
/**
|
|
13
|
-
* Write an error into the HTTP response
|
|
14
|
-
* @param response HTTP response
|
|
15
|
-
* @param error Error
|
|
16
|
-
*/
|
|
17
|
-
export declare function writeErrorToResponse(response: Response, error: Error): void;
|
package/dist/src/writer.js
DELETED
|
@@ -1,87 +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 stream_1 = require("stream");
|
|
8
|
-
/**
|
|
9
|
-
* Writes the result from Application controller method
|
|
10
|
-
* into the HTTP response
|
|
11
|
-
*
|
|
12
|
-
* @param response HTTP Response
|
|
13
|
-
* @param result Result from the API to write into HTTP Response
|
|
14
|
-
*/
|
|
15
|
-
function writeResultToResponse(
|
|
16
|
-
// not needed and responsibility should be in the sequence.send
|
|
17
|
-
response,
|
|
18
|
-
// result returned back from invoking controller method
|
|
19
|
-
result) {
|
|
20
|
-
if (result) {
|
|
21
|
-
if (result instanceof stream_1.Readable || typeof result.pipe === 'function') {
|
|
22
|
-
response.setHeader('Content-Type', 'application/octet-stream');
|
|
23
|
-
// Stream
|
|
24
|
-
result.pipe(response);
|
|
25
|
-
return;
|
|
26
|
-
}
|
|
27
|
-
switch (typeof result) {
|
|
28
|
-
case 'object':
|
|
29
|
-
case 'boolean':
|
|
30
|
-
case 'number':
|
|
31
|
-
if (Buffer.isBuffer(result)) {
|
|
32
|
-
// Buffer for binary data
|
|
33
|
-
response.setHeader('Content-Type', 'application/octet-stream');
|
|
34
|
-
}
|
|
35
|
-
else {
|
|
36
|
-
// TODO(ritch) remove this, should be configurable
|
|
37
|
-
// See https://github.com/strongloop/loopback-next/issues/436
|
|
38
|
-
response.setHeader('Content-Type', 'application/json');
|
|
39
|
-
// TODO(bajtos) handle errors - JSON.stringify can throw
|
|
40
|
-
result = JSON.stringify(result);
|
|
41
|
-
}
|
|
42
|
-
break;
|
|
43
|
-
default:
|
|
44
|
-
response.setHeader('Content-Type', 'text/plain');
|
|
45
|
-
result = result.toString();
|
|
46
|
-
break;
|
|
47
|
-
}
|
|
48
|
-
response.write(result);
|
|
49
|
-
}
|
|
50
|
-
response.end();
|
|
51
|
-
}
|
|
52
|
-
exports.writeResultToResponse = writeResultToResponse;
|
|
53
|
-
/**
|
|
54
|
-
* Write an error into the HTTP response
|
|
55
|
-
* @param response HTTP response
|
|
56
|
-
* @param error Error
|
|
57
|
-
*/
|
|
58
|
-
function writeErrorToResponse(response, error) {
|
|
59
|
-
const e = error;
|
|
60
|
-
const statusCode = (response.statusCode = e.statusCode || e.status || 500);
|
|
61
|
-
if (e.headers) {
|
|
62
|
-
// Set response headers for the error
|
|
63
|
-
for (const h in e.headers) {
|
|
64
|
-
response.setHeader(h, e.headers[h]);
|
|
65
|
-
}
|
|
66
|
-
}
|
|
67
|
-
// Build an error object
|
|
68
|
-
const errObj = {
|
|
69
|
-
statusCode,
|
|
70
|
-
};
|
|
71
|
-
if (e.expose) {
|
|
72
|
-
// Expose other properties if the `expose` flag is set to `true`
|
|
73
|
-
for (const p in e) {
|
|
74
|
-
if (p === 'headers' ||
|
|
75
|
-
p === 'expose' ||
|
|
76
|
-
p === 'status' ||
|
|
77
|
-
p === 'statusCode')
|
|
78
|
-
continue;
|
|
79
|
-
errObj[p] = e[p];
|
|
80
|
-
}
|
|
81
|
-
}
|
|
82
|
-
response.setHeader('Content-Type', 'application/json');
|
|
83
|
-
response.write(JSON.stringify(errObj));
|
|
84
|
-
response.end();
|
|
85
|
-
}
|
|
86
|
-
exports.writeErrorToResponse = writeErrorToResponse;
|
|
87
|
-
//# sourceMappingURL=writer.js.map
|
package/dist/src/writer.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"writer.js","sourceRoot":"","sources":["../../src/writer.ts"],"names":[],"mappings":"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"}
|
package/dist6/index.d.ts
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export * from './src';
|
package/dist6/index.js
DELETED
|
@@ -1,12 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
// Copyright IBM Corp. 2013,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
|
-
function __export(m) {
|
|
7
|
-
for (var p in m) if (!exports.hasOwnProperty(p)) exports[p] = m[p];
|
|
8
|
-
}
|
|
9
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
10
|
-
// NOTE(bajtos) This file is used by VSCode/TypeScriptServer at dev time only
|
|
11
|
-
__export(require("./src"));
|
|
12
|
-
//# sourceMappingURL=index.js.map
|
|
@@ -1,19 +0,0 @@
|
|
|
1
|
-
/// <reference types="node" />
|
|
2
|
-
import { Context } from '@loopback/context';
|
|
3
|
-
import { PathsObject } from '@loopback/openapi-spec';
|
|
4
|
-
import { ServerRequest, ServerResponse } from 'http';
|
|
5
|
-
import { ControllerSpec } from './router/metadata';
|
|
6
|
-
import { RoutingTable, ResolvedRoute, RouteEntry, ControllerClass } from './router/routing-table';
|
|
7
|
-
import { ParsedRequest } from './internal-types';
|
|
8
|
-
export declare class HttpHandler {
|
|
9
|
-
protected _rootContext: Context;
|
|
10
|
-
protected _routes: RoutingTable;
|
|
11
|
-
handleRequest: (request: ServerRequest, response: ServerResponse) => Promise<void>;
|
|
12
|
-
constructor(_rootContext: Context);
|
|
13
|
-
registerController(name: ControllerClass, spec: ControllerSpec): void;
|
|
14
|
-
registerRoute(route: RouteEntry): void;
|
|
15
|
-
describeApiPaths(): PathsObject;
|
|
16
|
-
findRoute(request: ParsedRequest): ResolvedRoute;
|
|
17
|
-
protected _handleRequest(request: ServerRequest, response: ServerResponse): Promise<void>;
|
|
18
|
-
protected _createRequestContext(req: ServerRequest, res: ServerResponse): Context;
|
|
19
|
-
}
|
|
@@ -1,53 +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 __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
7
|
-
return new (P || (P = Promise))(function (resolve, reject) {
|
|
8
|
-
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
9
|
-
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
10
|
-
function step(result) { result.done ? resolve(result.value) : new P(function (resolve) { resolve(result.value); }).then(fulfilled, rejected); }
|
|
11
|
-
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
12
|
-
});
|
|
13
|
-
};
|
|
14
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
15
|
-
const context_1 = require("@loopback/context");
|
|
16
|
-
const routing_table_1 = require("./router/routing-table");
|
|
17
|
-
const keys_1 = require("./keys");
|
|
18
|
-
class HttpHandler {
|
|
19
|
-
constructor(_rootContext) {
|
|
20
|
-
this._rootContext = _rootContext;
|
|
21
|
-
this._routes = new routing_table_1.RoutingTable();
|
|
22
|
-
this.handleRequest = (req, res) => this._handleRequest(req, res);
|
|
23
|
-
}
|
|
24
|
-
registerController(name, spec) {
|
|
25
|
-
this._routes.registerController(name, spec);
|
|
26
|
-
}
|
|
27
|
-
registerRoute(route) {
|
|
28
|
-
this._routes.registerRoute(route);
|
|
29
|
-
}
|
|
30
|
-
describeApiPaths() {
|
|
31
|
-
return this._routes.describeApiPaths();
|
|
32
|
-
}
|
|
33
|
-
findRoute(request) {
|
|
34
|
-
return this._routes.find(request);
|
|
35
|
-
}
|
|
36
|
-
_handleRequest(request, response) {
|
|
37
|
-
return __awaiter(this, void 0, void 0, function* () {
|
|
38
|
-
const parsedRequest = routing_table_1.parseRequestUrl(request);
|
|
39
|
-
const requestContext = this._createRequestContext(request, response);
|
|
40
|
-
const sequence = yield requestContext.get(keys_1.RestBindings.SEQUENCE);
|
|
41
|
-
yield sequence.handle(parsedRequest, response);
|
|
42
|
-
});
|
|
43
|
-
}
|
|
44
|
-
_createRequestContext(req, res) {
|
|
45
|
-
const requestContext = new context_1.Context(this._rootContext);
|
|
46
|
-
requestContext.bind(keys_1.RestBindings.Http.REQUEST).to(req);
|
|
47
|
-
requestContext.bind(keys_1.RestBindings.Http.RESPONSE).to(res);
|
|
48
|
-
requestContext.bind(keys_1.RestBindings.Http.CONTEXT).to(requestContext);
|
|
49
|
-
return requestContext;
|
|
50
|
-
}
|
|
51
|
-
}
|
|
52
|
-
exports.HttpHandler = HttpHandler;
|
|
53
|
-
//# sourceMappingURL=http-handler.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"http-handler.js","sourceRoot":"","sources":["../../src/http-handler.ts"],"names":[],"mappings":";AAAA,iDAAiD;AACjD,8BAA8B;AAC9B,+CAA+C;AAC/C,gEAAgE;;;;;;;;;;AAEhE,+CAA0C;AAM1C,0DAMgC;AAGhC,iCAAoC;AAEpC;IAQE,YAAsB,YAAqB;QAArB,iBAAY,GAAZ,YAAY,CAAS;QAPjC,YAAO,GAAiB,IAAI,4BAAY,EAAE,CAAC;QAQnD,IAAI,CAAC,aAAa,GAAG,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,CAAC,IAAI,CAAC,cAAc,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;IACnE,CAAC;IAED,kBAAkB,CAAC,IAAqB,EAAE,IAAoB;QAC5D,IAAI,CAAC,OAAO,CAAC,kBAAkB,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;IAC9C,CAAC;IAED,aAAa,CAAC,KAAiB;QAC7B,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;IACpC,CAAC;IAED,gBAAgB;QACd,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,gBAAgB,EAAE,CAAC;IACzC,CAAC;IAED,SAAS,CAAC,OAAsB;QAC9B,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IACpC,CAAC;IAEe,cAAc,CAC5B,OAAsB,EACtB,QAAwB;;YAExB,MAAM,aAAa,GAAkB,+BAAe,CAAC,OAAO,CAAC,CAAC;YAC9D,MAAM,cAAc,GAAG,IAAI,CAAC,qBAAqB,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;YAErE,MAAM,QAAQ,GAAoB,MAAM,cAAc,CAAC,GAAG,CACxD,mBAAY,CAAC,QAAQ,CACtB,CAAC;YACF,MAAM,QAAQ,CAAC,MAAM,CAAC,aAAa,EAAE,QAAQ,CAAC,CAAC;QACjD,CAAC;KAAA;IAES,qBAAqB,CAC7B,GAAkB,EAClB,GAAmB;QAEnB,MAAM,cAAc,GAAG,IAAI,iBAAO,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;QACtD,cAAc,CAAC,IAAI,CAAC,mBAAY,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC;QACvD,cAAc,CAAC,IAAI,CAAC,mBAAY,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC;QACxD,cAAc,CAAC,IAAI,CAAC,mBAAY,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC,cAAc,CAAC,CAAC;QAClE,MAAM,CAAC,cAAc,CAAC;IACxB,CAAC;CACF;AAnDD,kCAmDC"}
|
package/dist6/src/index.d.ts
DELETED
|
@@ -1,14 +0,0 @@
|
|
|
1
|
-
export { ServerRequest, ServerResponse } from 'http';
|
|
2
|
-
export { RouteEntry, RoutingTable, Route, ControllerRoute, ResolvedRoute, createResolvedRoute, parseRequestUrl } from './router/routing-table';
|
|
3
|
-
export * from './router/metadata';
|
|
4
|
-
export * from './providers';
|
|
5
|
-
import * as HttpErrors from 'http-errors';
|
|
6
|
-
export * from './parser';
|
|
7
|
-
export { writeResultToResponse } from './writer';
|
|
8
|
-
export { HttpErrors };
|
|
9
|
-
export * from './http-handler';
|
|
10
|
-
export * from './internal-types';
|
|
11
|
-
export * from './keys';
|
|
12
|
-
export * from './rest-component';
|
|
13
|
-
export * from './rest-server';
|
|
14
|
-
export * from './sequence';
|