@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,11 +0,0 @@
|
|
|
1
|
-
/* Modernizr 2.6.2 (Custom Build) | MIT & BSD
|
|
2
|
-
* Build: http://modernizr.com/download/#-fontface-backgroundsize-borderimage-borderradius-boxshadow-flexbox-hsla-multiplebgs-opacity-rgba-textshadow-cssanimations-csscolumns-generatedcontent-cssgradients-cssreflections-csstransforms-csstransforms3d-csstransitions-applicationcache-canvas-canvastext-draganddrop-hashchange-history-audio-video-indexeddb-input-inputtypes-localstorage-postmessage-sessionstorage-websockets-websqldatabase-webworkers-geolocation-inlinesvg-smil-svg-svgclippaths-touch-webgl-shiv-mq-cssclasses-addtest-prefixed-teststyles-testprop-testallprops-hasevent-prefixes-domprefixes-load
|
|
3
|
-
*/
|
|
4
|
-
;window.Modernizr=function(a,b,c){function D(a){j.cssText=a}function E(a,b){return D(n.join(a+";")+(b||""))}function F(a,b){return typeof a===b}function G(a,b){return!!~(""+a).indexOf(b)}function H(a,b){for(var d in a){var e=a[d];if(!G(e,"-")&&j[e]!==c)return b=="pfx"?e:!0}return!1}function I(a,b,d){for(var e in a){var f=b[a[e]];if(f!==c)return d===!1?a[e]:F(f,"function")?f.bind(d||b):f}return!1}function J(a,b,c){var d=a.charAt(0).toUpperCase()+a.slice(1),e=(a+" "+p.join(d+" ")+d).split(" ");return F(b,"string")||F(b,"undefined")?H(e,b):(e=(a+" "+q.join(d+" ")+d).split(" "),I(e,b,c))}function K(){e.input=function(c){for(var d=0,e=c.length;d<e;d++)u[c[d]]=c[d]in k;return u.list&&(u.list=!!b.createElement("datalist")&&!!a.HTMLDataListElement),u}("autocomplete autofocus list placeholder max min multiple pattern required step".split(" ")),e.inputtypes=function(a){for(var d=0,e,f,h,i=a.length;d<i;d++)k.setAttribute("type",f=a[d]),e=k.type!=="text",e&&(k.value=l,k.style.cssText="position:absolute;visibility:hidden;",/^range$/.test(f)&&k.style.WebkitAppearance!==c?(g.appendChild(k),h=b.defaultView,e=h.getComputedStyle&&h.getComputedStyle(k,null).WebkitAppearance!=="textfield"&&k.offsetHeight!==0,g.removeChild(k)):/^(search|tel)$/.test(f)||(/^(url|email)$/.test(f)?e=k.checkValidity&&k.checkValidity()===!1:e=k.value!=l)),t[a[d]]=!!e;return t}("search tel url email datetime date month week time datetime-local number range color".split(" "))}var d="2.6.2",e={},f=!0,g=b.documentElement,h="modernizr",i=b.createElement(h),j=i.style,k=b.createElement("input"),l=":)",m={}.toString,n=" -webkit- -moz- -o- -ms- ".split(" "),o="Webkit Moz O ms",p=o.split(" "),q=o.toLowerCase().split(" "),r={svg:"http://www.w3.org/2000/svg"},s={},t={},u={},v=[],w=v.slice,x,y=function(a,c,d,e){var f,i,j,k,l=b.createElement("div"),m=b.body,n=m||b.createElement("body");if(parseInt(d,10))while(d--)j=b.createElement("div"),j.id=e?e[d]:h+(d+1),l.appendChild(j);return f=["­",'<style id="s',h,'">',a,"</style>"].join(""),l.id=h,(m?l:n).innerHTML+=f,n.appendChild(l),m||(n.style.background="",n.style.overflow="hidden",k=g.style.overflow,g.style.overflow="hidden",g.appendChild(n)),i=c(l,a),m?l.parentNode.removeChild(l):(n.parentNode.removeChild(n),g.style.overflow=k),!!i},z=function(b){var c=a.matchMedia||a.msMatchMedia;if(c)return c(b).matches;var d;return y("@media "+b+" { #"+h+" { position: absolute; } }",function(b){d=(a.getComputedStyle?getComputedStyle(b,null):b.currentStyle)["position"]=="absolute"}),d},A=function(){function d(d,e){e=e||b.createElement(a[d]||"div"),d="on"+d;var f=d in e;return f||(e.setAttribute||(e=b.createElement("div")),e.setAttribute&&e.removeAttribute&&(e.setAttribute(d,""),f=F(e[d],"function"),F(e[d],"undefined")||(e[d]=c),e.removeAttribute(d))),e=null,f}var a={select:"input",change:"input",submit:"form",reset:"form",error:"img",load:"img",abort:"img"};return d}(),B={}.hasOwnProperty,C;!F(B,"undefined")&&!F(B.call,"undefined")?C=function(a,b){return B.call(a,b)}:C=function(a,b){return b in a&&F(a.constructor.prototype[b],"undefined")},Function.prototype.bind||(Function.prototype.bind=function(b){var c=this;if(typeof c!="function")throw new TypeError;var d=w.call(arguments,1),e=function(){if(this instanceof e){var a=function(){};a.prototype=c.prototype;var f=new a,g=c.apply(f,d.concat(w.call(arguments)));return Object(g)===g?g:f}return c.apply(b,d.concat(w.call(arguments)))};return e}),s.flexbox=function(){return J("flexWrap")},s.canvas=function(){var a=b.createElement("canvas");return!!a.getContext&&!!a.getContext("2d")},s.canvastext=function(){return!!e.canvas&&!!F(b.createElement("canvas").getContext("2d").fillText,"function")},s.webgl=function(){return!!a.WebGLRenderingContext},s.touch=function(){var c;return"ontouchstart"in a||a.DocumentTouch&&b instanceof DocumentTouch?c=!0:y(["@media (",n.join("touch-enabled),("),h,")","{#modernizr{top:9px;position:absolute}}"].join(""),function(a){c=a.offsetTop===9}),c},s.geolocation=function(){return"geolocation"in navigator},s.postmessage=function(){return!!a.postMessage},s.websqldatabase=function(){return!!a.openDatabase},s.indexedDB=function(){return!!J("indexedDB",a)},s.hashchange=function(){return A("hashchange",a)&&(b.documentMode===c||b.documentMode>7)},s.history=function(){return!!a.history&&!!history.pushState},s.draganddrop=function(){var a=b.createElement("div");return"draggable"in a||"ondragstart"in a&&"ondrop"in a},s.websockets=function(){return"WebSocket"in a||"MozWebSocket"in a},s.rgba=function(){return D("background-color:rgba(150,255,150,.5)"),G(j.backgroundColor,"rgba")},s.hsla=function(){return D("background-color:hsla(120,40%,100%,.5)"),G(j.backgroundColor,"rgba")||G(j.backgroundColor,"hsla")},s.multiplebgs=function(){return D("background:url(https://),url(https://),red url(https://)"),/(url\s*\(.*?){3}/.test(j.background)},s.backgroundsize=function(){return J("backgroundSize")},s.borderimage=function(){return J("borderImage")},s.borderradius=function(){return J("borderRadius")},s.boxshadow=function(){return J("boxShadow")},s.textshadow=function(){return b.createElement("div").style.textShadow===""},s.opacity=function(){return E("opacity:.55"),/^0.55$/.test(j.opacity)},s.cssanimations=function(){return J("animationName")},s.csscolumns=function(){return J("columnCount")},s.cssgradients=function(){var a="background-image:",b="gradient(linear,left top,right bottom,from(#9f9),to(white));",c="linear-gradient(left top,#9f9, white);";return D((a+"-webkit- ".split(" ").join(b+a)+n.join(c+a)).slice(0,-a.length)),G(j.backgroundImage,"gradient")},s.cssreflections=function(){return J("boxReflect")},s.csstransforms=function(){return!!J("transform")},s.csstransforms3d=function(){var a=!!J("perspective");return a&&"webkitPerspective"in g.style&&y("@media (transform-3d),(-webkit-transform-3d){#modernizr{left:9px;position:absolute;height:3px;}}",function(b,c){a=b.offsetLeft===9&&b.offsetHeight===3}),a},s.csstransitions=function(){return J("transition")},s.fontface=function(){var a;return y('@font-face {font-family:"font";src:url("https://")}',function(c,d){var e=b.getElementById("smodernizr"),f=e.sheet||e.styleSheet,g=f?f.cssRules&&f.cssRules[0]?f.cssRules[0].cssText:f.cssText||"":"";a=/src/i.test(g)&&g.indexOf(d.split(" ")[0])===0}),a},s.generatedcontent=function(){var a;return y(["#",h,"{font:0/0 a}#",h,':after{content:"',l,'";visibility:hidden;font:3px/1 a}'].join(""),function(b){a=b.offsetHeight>=3}),a},s.video=function(){var a=b.createElement("video"),c=!1;try{if(c=!!a.canPlayType)c=new Boolean(c),c.ogg=a.canPlayType('video/ogg; codecs="theora"').replace(/^no$/,""),c.h264=a.canPlayType('video/mp4; codecs="avc1.42E01E"').replace(/^no$/,""),c.webm=a.canPlayType('video/webm; codecs="vp8, vorbis"').replace(/^no$/,"")}catch(d){}return c},s.audio=function(){var a=b.createElement("audio"),c=!1;try{if(c=!!a.canPlayType)c=new Boolean(c),c.ogg=a.canPlayType('audio/ogg; codecs="vorbis"').replace(/^no$/,""),c.mp3=a.canPlayType("audio/mpeg;").replace(/^no$/,""),c.wav=a.canPlayType('audio/wav; codecs="1"').replace(/^no$/,""),c.m4a=(a.canPlayType("audio/x-m4a;")||a.canPlayType("audio/aac;")).replace(/^no$/,"")}catch(d){}return c},s.localstorage=function(){try{return localStorage.setItem(h,h),localStorage.removeItem(h),!0}catch(a){return!1}},s.sessionstorage=function(){try{return sessionStorage.setItem(h,h),sessionStorage.removeItem(h),!0}catch(a){return!1}},s.webworkers=function(){return!!a.Worker},s.applicationcache=function(){return!!a.applicationCache},s.svg=function(){return!!b.createElementNS&&!!b.createElementNS(r.svg,"svg").createSVGRect},s.inlinesvg=function(){var a=b.createElement("div");return a.innerHTML="<svg/>",(a.firstChild&&a.firstChild.namespaceURI)==r.svg},s.smil=function(){return!!b.createElementNS&&/SVGAnimate/.test(m.call(b.createElementNS(r.svg,"animate")))},s.svgclippaths=function(){return!!b.createElementNS&&/SVGClipPath/.test(m.call(b.createElementNS(r.svg,"clipPath")))};for(var L in s)C(s,L)&&(x=L.toLowerCase(),e[x]=s[L](),v.push((e[x]?"":"no-")+x));return e.input||K(),e.addTest=function(a,b){if(typeof a=="object")for(var d in a)C(a,d)&&e.addTest(d,a[d]);else{a=a.toLowerCase();if(e[a]!==c)return e;b=typeof b=="function"?b():b,typeof f!="undefined"&&f&&(g.className+=" "+(b?"":"no-")+a),e[a]=b}return e},D(""),i=k=null,function(a,b){function k(a,b){var c=a.createElement("p"),d=a.getElementsByTagName("head")[0]||a.documentElement;return c.innerHTML="x<style>"+b+"</style>",d.insertBefore(c.lastChild,d.firstChild)}function l(){var a=r.elements;return typeof a=="string"?a.split(" "):a}function m(a){var b=i[a[g]];return b||(b={},h++,a[g]=h,i[h]=b),b}function n(a,c,f){c||(c=b);if(j)return c.createElement(a);f||(f=m(c));var g;return f.cache[a]?g=f.cache[a].cloneNode():e.test(a)?g=(f.cache[a]=f.createElem(a)).cloneNode():g=f.createElem(a),g.canHaveChildren&&!d.test(a)?f.frag.appendChild(g):g}function o(a,c){a||(a=b);if(j)return a.createDocumentFragment();c=c||m(a);var d=c.frag.cloneNode(),e=0,f=l(),g=f.length;for(;e<g;e++)d.createElement(f[e]);return d}function p(a,b){b.cache||(b.cache={},b.createElem=a.createElement,b.createFrag=a.createDocumentFragment,b.frag=b.createFrag()),a.createElement=function(c){return r.shivMethods?n(c,a,b):b.createElem(c)},a.createDocumentFragment=Function("h,f","return function(){var n=f.cloneNode(),c=n.createElement;h.shivMethods&&("+l().join().replace(/\w+/g,function(a){return b.createElem(a),b.frag.createElement(a),'c("'+a+'")'})+");return n}")(r,b.frag)}function q(a){a||(a=b);var c=m(a);return r.shivCSS&&!f&&!c.hasCSS&&(c.hasCSS=!!k(a,"article,aside,figcaption,figure,footer,header,hgroup,nav,section{display:block}mark{background:#FF0;color:#000}")),j||p(a,c),a}var c=a.html5||{},d=/^<|^(?:button|map|select|textarea|object|iframe|option|optgroup)$/i,e=/^(?:a|b|code|div|fieldset|h1|h2|h3|h4|h5|h6|i|label|li|ol|p|q|span|strong|style|table|tbody|td|th|tr|ul)$/i,f,g="_html5shiv",h=0,i={},j;(function(){try{var a=b.createElement("a");a.innerHTML="<xyz></xyz>",f="hidden"in a,j=a.childNodes.length==1||function(){b.createElement("a");var a=b.createDocumentFragment();return typeof a.cloneNode=="undefined"||typeof a.createDocumentFragment=="undefined"||typeof a.createElement=="undefined"}()}catch(c){f=!0,j=!0}})();var r={elements:c.elements||"abbr article aside audio bdi canvas data datalist details figcaption figure footer header hgroup mark meter nav output progress section summary time video",shivCSS:c.shivCSS!==!1,supportsUnknownElements:j,shivMethods:c.shivMethods!==!1,type:"default",shivDocument:q,createElement:n,createDocumentFragment:o};a.html5=r,q(b)}(this,b),e._version=d,e._prefixes=n,e._domPrefixes=q,e._cssomPrefixes=p,e.mq=z,e.hasEvent=A,e.testProp=function(a){return H([a])},e.testAllProps=J,e.testStyles=y,e.prefixed=function(a,b,c){return b?J(a,b,c):J(a,"pfx")},g.className=g.className.replace(/(^|\s)no-js(\s|$)/,"$1$2")+(f?" js "+v.join(" "):""),e}(this,this.document),function(a,b,c){function d(a){return"[object Function]"==o.call(a)}function e(a){return"string"==typeof a}function f(){}function g(a){return!a||"loaded"==a||"complete"==a||"uninitialized"==a}function h(){var a=p.shift();q=1,a?a.t?m(function(){("c"==a.t?B.injectCss:B.injectJs)(a.s,0,a.a,a.x,a.e,1)},0):(a(),h()):q=0}function i(a,c,d,e,f,i,j){function k(b){if(!o&&g(l.readyState)&&(u.r=o=1,!q&&h(),l.onload=l.onreadystatechange=null,b)){"img"!=a&&m(function(){t.removeChild(l)},50);for(var d in y[c])y[c].hasOwnProperty(d)&&y[c][d].onload()}}var j=j||B.errorTimeout,l=b.createElement(a),o=0,r=0,u={t:d,s:c,e:f,a:i,x:j};1===y[c]&&(r=1,y[c]=[]),"object"==a?l.data=c:(l.src=c,l.type=a),l.width=l.height="0",l.onerror=l.onload=l.onreadystatechange=function(){k.call(this,r)},p.splice(e,0,u),"img"!=a&&(r||2===y[c]?(t.insertBefore(l,s?null:n),m(k,j)):y[c].push(l))}function j(a,b,c,d,f){return q=0,b=b||"j",e(a)?i("c"==b?v:u,a,b,this.i++,c,d,f):(p.splice(this.i++,0,a),1==p.length&&h()),this}function k(){var a=B;return a.loader={load:j,i:0},a}var l=b.documentElement,m=a.setTimeout,n=b.getElementsByTagName("script")[0],o={}.toString,p=[],q=0,r="MozAppearance"in l.style,s=r&&!!b.createRange().compareNode,t=s?l:n.parentNode,l=a.opera&&"[object Opera]"==o.call(a.opera),l=!!b.attachEvent&&!l,u=r?"object":l?"script":"img",v=l?"script":u,w=Array.isArray||function(a){return"[object Array]"==o.call(a)},x=[],y={},z={timeout:function(a,b){return b.length&&(a.timeout=b[0]),a}},A,B;B=function(a){function b(a){var a=a.split("!"),b=x.length,c=a.pop(),d=a.length,c={url:c,origUrl:c,prefixes:a},e,f,g;for(f=0;f<d;f++)g=a[f].split("="),(e=z[g.shift()])&&(c=e(c,g));for(f=0;f<b;f++)c=x[f](c);return c}function g(a,e,f,g,h){var i=b(a),j=i.autoCallback;i.url.split(".").pop().split("?").shift(),i.bypass||(e&&(e=d(e)?e:e[a]||e[g]||e[a.split("/").pop().split("?")[0]]),i.instead?i.instead(a,e,f,g,h):(y[i.url]?i.noexec=!0:y[i.url]=1,f.load(i.url,i.forceCSS||!i.forceJS&&"css"==i.url.split(".").pop().split("?").shift()?"c":c,i.noexec,i.attrs,i.timeout),(d(e)||d(j))&&f.load(function(){k(),e&&e(i.origUrl,h,g),j&&j(i.origUrl,h,g),y[i.url]=2})))}function h(a,b){function c(a,c){if(a){if(e(a))c||(j=function(){var a=[].slice.call(arguments);k.apply(this,a),l()}),g(a,j,b,0,h);else if(Object(a)===a)for(n in m=function(){var b=0,c;for(c in a)a.hasOwnProperty(c)&&b++;return b}(),a)a.hasOwnProperty(n)&&(!c&&!--m&&(d(j)?j=function(){var a=[].slice.call(arguments);k.apply(this,a),l()}:j[n]=function(a){return function(){var b=[].slice.call(arguments);a&&a.apply(this,b),l()}}(k[n])),g(a[n],j,b,n,h))}else!c&&l()}var h=!!a.test,i=a.load||a.both,j=a.callback||f,k=j,l=a.complete||f,m,n;c(h?a.yep:a.nope,!!i),i&&c(i)}var i,j,l=this.yepnope.loader;if(e(a))g(a,0,l,0);else if(w(a))for(i=0;i<a.length;i++)j=a[i],e(j)?g(j,0,l,0):w(j)?B(j):Object(j)===j&&h(j,l);else Object(a)===a&&h(a,l)},B.addPrefix=function(a,b){z[a]=b},B.addFilter=function(a){x.push(a)},B.errorTimeout=1e4,null==b.readyState&&b.addEventListener&&(b.readyState="loading",b.addEventListener("DOMContentLoaded",A=function(){b.removeEventListener("DOMContentLoaded",A,0),b.readyState="complete"},0)),a.yepnope=k(),a.yepnope.executeStack=h,a.yepnope.injectJs=function(a,c,d,e,i,j){var k=b.createElement("script"),l,o,e=e||B.errorTimeout;k.src=a;for(o in d)k.setAttribute(o,d[o]);c=j?h:c||f,k.onreadystatechange=k.onload=function(){!l&&g(k.readyState)&&(l=1,c(),k.onload=k.onreadystatechange=null)},m(function(){l||(l=1,c(1))},e),i?k.onload():n.parentNode.insertBefore(k,n)},a.yepnope.injectCss=function(a,c,d,e,g,i){var e=b.createElement("link"),j,c=i?h:c||f;e.href=a,e.rel="stylesheet",e.type="text/css";for(j in d)e.setAttribute(j,d[j]);g||(n.parentNode.insertBefore(e,n),m(c,0))}}(this,document),Modernizr.load=function(){yepnope.apply(window,[].slice.call(arguments,0))};
|
|
5
|
-
|
|
6
|
-
/*! matchMedia() polyfill - Test a CSS media type/query in JS. Authors & copyright (c) 2012: Scott Jehl, Paul Irish, Nicholas Zakas. Dual MIT/BSD license */
|
|
7
|
-
/*! NOTE: If you're already including a window.matchMedia polyfill via Modernizr or otherwise, you don't need this part */
|
|
8
|
-
window.matchMedia=window.matchMedia||(function(e,f){var c,a=e.documentElement,b=a.firstElementChild||a.firstChild,d=e.createElement("body"),g=e.createElement("div");g.id="mq-test-1";g.style.cssText="position:absolute;top:-100em";d.style.background="none";d.appendChild(g);return function(h){g.innerHTML='­<style media="'+h+'"> #mq-test-1 { width: 42px; }</style>';a.insertBefore(d,b);c=g.offsetWidth==42;a.removeChild(d);return{matches:c,media:h}}})(document);
|
|
9
|
-
|
|
10
|
-
/*! Respond.js v1.1.0: min/max-width media query polyfill. (c) Scott Jehl. MIT/GPLv2 Lic. j.mp/respondjs */
|
|
11
|
-
(function(e){e.respond={};respond.update=function(){};respond.mediaQueriesSupported=e.matchMedia&&e.matchMedia("only all").matches;if(respond.mediaQueriesSupported){return}var w=e.document,s=w.documentElement,i=[],k=[],q=[],o={},h=30,f=w.getElementsByTagName("head")[0]||s,g=w.getElementsByTagName("base")[0],b=f.getElementsByTagName("link"),d=[],a=function(){var D=b,y=D.length,B=0,A,z,C,x;for(;B<y;B++){A=D[B],z=A.href,C=A.media,x=A.rel&&A.rel.toLowerCase()==="stylesheet";if(!!z&&x&&!o[z]){if(A.styleSheet&&A.styleSheet.rawCssText){m(A.styleSheet.rawCssText,z,C);o[z]=true}else{if((!/^([a-zA-Z:]*\/\/)/.test(z)&&!g)||z.replace(RegExp.$1,"").split("/")[0]===e.location.host){d.push({href:z,media:C})}}}}u()},u=function(){if(d.length){var x=d.shift();n(x.href,function(y){m(y,x.href,x.media);o[x.href]=true;u()})}},m=function(I,x,z){var G=I.match(/@media[^\{]+\{([^\{\}]*\{[^\}\{]*\})+/gi),J=G&&G.length||0,x=x.substring(0,x.lastIndexOf("/")),y=function(K){return K.replace(/(url\()['"]?([^\/\)'"][^:\)'"]+)['"]?(\))/g,"$1"+x+"$2$3")},A=!J&&z,D=0,C,E,F,B,H;if(x.length){x+="/"}if(A){J=1}for(;D<J;D++){C=0;if(A){E=z;k.push(y(I))}else{E=G[D].match(/@media *([^\{]+)\{([\S\s]+?)$/)&&RegExp.$1;k.push(RegExp.$2&&y(RegExp.$2))}B=E.split(",");H=B.length;for(;C<H;C++){F=B[C];i.push({media:F.split("(")[0].match(/(only\s+)?([a-zA-Z]+)\s?/)&&RegExp.$2||"all",rules:k.length-1,hasquery:F.indexOf("(")>-1,minw:F.match(/\(min\-width:[\s]*([\s]*[0-9\.]+)(px|em)[\s]*\)/)&&parseFloat(RegExp.$1)+(RegExp.$2||""),maxw:F.match(/\(max\-width:[\s]*([\s]*[0-9\.]+)(px|em)[\s]*\)/)&&parseFloat(RegExp.$1)+(RegExp.$2||"")})}}j()},l,r,v=function(){var z,A=w.createElement("div"),x=w.body,y=false;A.style.cssText="position:absolute;font-size:1em;width:1em";if(!x){x=y=w.createElement("body");x.style.background="none"}x.appendChild(A);s.insertBefore(x,s.firstChild);z=A.offsetWidth;if(y){s.removeChild(x)}else{x.removeChild(A)}z=p=parseFloat(z);return z},p,j=function(I){var x="clientWidth",B=s[x],H=w.compatMode==="CSS1Compat"&&B||w.body[x]||B,D={},G=b[b.length-1],z=(new Date()).getTime();if(I&&l&&z-l<h){clearTimeout(r);r=setTimeout(j,h);return}else{l=z}for(var E in i){var K=i[E],C=K.minw,J=K.maxw,A=C===null,L=J===null,y="em";if(!!C){C=parseFloat(C)*(C.indexOf(y)>-1?(p||v()):1)}if(!!J){J=parseFloat(J)*(J.indexOf(y)>-1?(p||v()):1)}if(!K.hasquery||(!A||!L)&&(A||H>=C)&&(L||H<=J)){if(!D[K.media]){D[K.media]=[]}D[K.media].push(k[K.rules])}}for(var E in q){if(q[E]&&q[E].parentNode===f){f.removeChild(q[E])}}for(var E in D){var M=w.createElement("style"),F=D[E].join("\n");M.type="text/css";M.media=E;f.insertBefore(M,G.nextSibling);if(M.styleSheet){M.styleSheet.cssText=F}else{M.appendChild(w.createTextNode(F))}q.push(M)}},n=function(x,z){var y=c();if(!y){return}y.open("GET",x,true);y.onreadystatechange=function(){if(y.readyState!=4||y.status!=200&&y.status!=304){return}z(y.responseText)};if(y.readyState==4){return}y.send(null)},c=(function(){var x=false;try{x=new XMLHttpRequest()}catch(y){x=new ActiveXObject("Microsoft.XMLHTTP")}return function(){return x}})();a();respond.update=a;function t(){j(true)}if(e.addEventListener){e.addEventListener("resize",t,false)}else{if(e.attachEvent){e.attachEvent("onresize",t)}}})(this);
|
|
@@ -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
|
-
}
|
package/dist/src/http-handler.js
DELETED
|
@@ -1,43 +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 routing_table_1 = require("./router/routing-table");
|
|
9
|
-
const keys_1 = require("./keys");
|
|
10
|
-
class HttpHandler {
|
|
11
|
-
constructor(_rootContext) {
|
|
12
|
-
this._rootContext = _rootContext;
|
|
13
|
-
this._routes = new routing_table_1.RoutingTable();
|
|
14
|
-
this.handleRequest = (req, res) => this._handleRequest(req, res);
|
|
15
|
-
}
|
|
16
|
-
registerController(name, spec) {
|
|
17
|
-
this._routes.registerController(name, spec);
|
|
18
|
-
}
|
|
19
|
-
registerRoute(route) {
|
|
20
|
-
this._routes.registerRoute(route);
|
|
21
|
-
}
|
|
22
|
-
describeApiPaths() {
|
|
23
|
-
return this._routes.describeApiPaths();
|
|
24
|
-
}
|
|
25
|
-
findRoute(request) {
|
|
26
|
-
return this._routes.find(request);
|
|
27
|
-
}
|
|
28
|
-
async _handleRequest(request, response) {
|
|
29
|
-
const parsedRequest = routing_table_1.parseRequestUrl(request);
|
|
30
|
-
const requestContext = this._createRequestContext(request, response);
|
|
31
|
-
const sequence = await requestContext.get(keys_1.RestBindings.SEQUENCE);
|
|
32
|
-
await sequence.handle(parsedRequest, response);
|
|
33
|
-
}
|
|
34
|
-
_createRequestContext(req, res) {
|
|
35
|
-
const requestContext = new context_1.Context(this._rootContext);
|
|
36
|
-
requestContext.bind(keys_1.RestBindings.Http.REQUEST).to(req);
|
|
37
|
-
requestContext.bind(keys_1.RestBindings.Http.RESPONSE).to(res);
|
|
38
|
-
requestContext.bind(keys_1.RestBindings.Http.CONTEXT).to(requestContext);
|
|
39
|
-
return requestContext;
|
|
40
|
-
}
|
|
41
|
-
}
|
|
42
|
-
exports.HttpHandler = HttpHandler;
|
|
43
|
-
//# 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;IAES,KAAK,CAAC,cAAc,CAC5B,OAAsB,EACtB,QAAwB;QAExB,MAAM,aAAa,GAAkB,+BAAe,CAAC,OAAO,CAAC,CAAC;QAC9D,MAAM,cAAc,GAAG,IAAI,CAAC,qBAAqB,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;QAErE,MAAM,QAAQ,GAAoB,MAAM,cAAc,CAAC,GAAG,CACxD,mBAAY,CAAC,QAAQ,CACtB,CAAC;QACF,MAAM,QAAQ,CAAC,MAAM,CAAC,aAAa,EAAE,QAAQ,CAAC,CAAC;IACjD,CAAC;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/dist/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';
|
package/dist/src/index.js
DELETED
|
@@ -1,33 +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
|
-
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
|
-
// external dependencies
|
|
11
|
-
var http_1 = require("http");
|
|
12
|
-
exports.ServerRequest = http_1.ServerRequest;
|
|
13
|
-
exports.ServerResponse = http_1.ServerResponse;
|
|
14
|
-
var routing_table_1 = require("./router/routing-table");
|
|
15
|
-
exports.RoutingTable = routing_table_1.RoutingTable;
|
|
16
|
-
exports.Route = routing_table_1.Route;
|
|
17
|
-
exports.ControllerRoute = routing_table_1.ControllerRoute;
|
|
18
|
-
exports.createResolvedRoute = routing_table_1.createResolvedRoute;
|
|
19
|
-
exports.parseRequestUrl = routing_table_1.parseRequestUrl;
|
|
20
|
-
__export(require("./router/metadata"));
|
|
21
|
-
__export(require("./providers"));
|
|
22
|
-
// import all errors from external http-errors package
|
|
23
|
-
const HttpErrors = require("http-errors");
|
|
24
|
-
exports.HttpErrors = HttpErrors;
|
|
25
|
-
__export(require("./parser"));
|
|
26
|
-
var writer_1 = require("./writer");
|
|
27
|
-
exports.writeResultToResponse = writer_1.writeResultToResponse;
|
|
28
|
-
__export(require("./http-handler"));
|
|
29
|
-
__export(require("./keys"));
|
|
30
|
-
__export(require("./rest-component"));
|
|
31
|
-
__export(require("./rest-server"));
|
|
32
|
-
__export(require("./sequence"));
|
|
33
|
-
//# sourceMappingURL=index.js.map
|
package/dist/src/index.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":";AAAA,iDAAiD;AACjD,8BAA8B;AAC9B,+CAA+C;AAC/C,gEAAgE;;;;;AAEhE,wBAAwB;AACxB,6BAAmD;AAA3C,+BAAA,aAAa,CAAA;AAAE,gCAAA,cAAc,CAAA;AAErC,wDAQgC;AAN9B,uCAAA,YAAY,CAAA;AACZ,gCAAA,KAAK,CAAA;AACL,0CAAA,eAAe,CAAA;AAEf,8CAAA,mBAAmB,CAAA;AACnB,0CAAA,eAAe,CAAA;AAGjB,uCAAkC;AAClC,iCAA4B;AAE5B,sDAAsD;AACtD,0CAA0C;AAOlC,gCAAU;AALlB,8BAAyB;AAEzB,mCAA+C;AAAvC,yCAAA,qBAAqB,CAAA;AAK7B,oCAA+B;AAE/B,4BAAuB;AACvB,sCAAiC;AACjC,mCAA8B;AAC9B,gCAA2B"}
|
|
@@ -1,67 +0,0 @@
|
|
|
1
|
-
/// <reference types="node" />
|
|
2
|
-
import { Binding, BoundValue } from '@loopback/context';
|
|
3
|
-
import { ServerRequest, ServerResponse } from 'http';
|
|
4
|
-
import { ResolvedRoute, RouteEntry } from './router/routing-table';
|
|
5
|
-
export interface ParsedRequest extends ServerRequest {
|
|
6
|
-
path: string;
|
|
7
|
-
query: {
|
|
8
|
-
[key: string]: string;
|
|
9
|
-
};
|
|
10
|
-
url: string;
|
|
11
|
-
pathname: string;
|
|
12
|
-
method: string;
|
|
13
|
-
}
|
|
14
|
-
/**
|
|
15
|
-
* Find a route matching the incoming request.
|
|
16
|
-
* Throw an error when no route was found.
|
|
17
|
-
*/
|
|
18
|
-
export declare type FindRoute = (request: ParsedRequest) => ResolvedRoute;
|
|
19
|
-
/**
|
|
20
|
-
*
|
|
21
|
-
*/
|
|
22
|
-
export declare type ParseParams = (request: ParsedRequest, route: ResolvedRoute) => Promise<OperationArgs>;
|
|
23
|
-
/**
|
|
24
|
-
* Invokes a method defined in the Application Controller
|
|
25
|
-
*
|
|
26
|
-
* @param controller Name of end-user's application controller
|
|
27
|
-
* class which defines the methods.
|
|
28
|
-
* @param method Method name in application controller class
|
|
29
|
-
* @param args Operation arguments for the method
|
|
30
|
-
* @returns OperationRetval Result from method invocation
|
|
31
|
-
*/
|
|
32
|
-
export declare type InvokeMethod = (route: RouteEntry, args: OperationArgs) => Promise<OperationRetval>;
|
|
33
|
-
/**
|
|
34
|
-
* Send the operation response back to the client.
|
|
35
|
-
*
|
|
36
|
-
* @param response The response the response to send to.
|
|
37
|
-
* @param result The operation result to send.
|
|
38
|
-
*/
|
|
39
|
-
export declare type Send = (response: ServerResponse, result: OperationRetval) => void;
|
|
40
|
-
/**
|
|
41
|
-
* Reject the request with an error.
|
|
42
|
-
*
|
|
43
|
-
* @param response The response the response to send to.
|
|
44
|
-
* @param request The request that triggered the error.
|
|
45
|
-
* @param err The error.
|
|
46
|
-
*/
|
|
47
|
-
export declare type Reject = (response: ServerResponse, request: ServerRequest, err: Error) => void;
|
|
48
|
-
/**
|
|
49
|
-
* Log information about a failed request.
|
|
50
|
-
*
|
|
51
|
-
* @param err The error reported by request handling code.
|
|
52
|
-
* @param statusCode Status code of the HTTP response
|
|
53
|
-
* @param request The request that failed.
|
|
54
|
-
*/
|
|
55
|
-
export declare type LogError = (err: Error, statusCode: number, request: ServerRequest) => void;
|
|
56
|
-
export declare type PathParameterValues = {
|
|
57
|
-
[key: string]: any;
|
|
58
|
-
};
|
|
59
|
-
export declare type OperationArgs = any[];
|
|
60
|
-
/**
|
|
61
|
-
* Return value of a controller method (a function implementing an operation).
|
|
62
|
-
* This is a type alias for "any", used to distinguish
|
|
63
|
-
* operation results from other "any" typed values.
|
|
64
|
-
*/
|
|
65
|
-
export declare type OperationRetval = any;
|
|
66
|
-
export declare type GetFromContext = (key: string) => Promise<BoundValue>;
|
|
67
|
-
export declare type BindElement = (key: string) => Binding;
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"internal-types.js","sourceRoot":"","sources":["../../src/internal-types.ts"],"names":[],"mappings":";AAAA,iDAAiD;AACjD,8BAA8B;AAC9B,+CAA+C;AAC/C,gEAAgE"}
|
package/dist/src/keys.d.ts
DELETED
|
@@ -1,22 +0,0 @@
|
|
|
1
|
-
export declare namespace RestBindings {
|
|
2
|
-
const CONFIG: string;
|
|
3
|
-
const PORT = "rest.port";
|
|
4
|
-
const HANDLER = "rest.handler";
|
|
5
|
-
const API_SPEC = "rest.apiSpec";
|
|
6
|
-
const SEQUENCE = "rest.sequence";
|
|
7
|
-
namespace SequenceActions {
|
|
8
|
-
const FIND_ROUTE = "rest.sequence.actions.findRoute";
|
|
9
|
-
const PARSE_PARAMS = "rest.sequence.actions.parseParams";
|
|
10
|
-
const INVOKE_METHOD = "rest.sequence.actions.invokeMethod";
|
|
11
|
-
const LOG_ERROR = "rest.sequence.actions.logError";
|
|
12
|
-
const SEND = "rest.sequence.actions.send";
|
|
13
|
-
const REJECT = "rest.sequence.actions.reject";
|
|
14
|
-
}
|
|
15
|
-
const GET_FROM_CONTEXT = "getFromContext";
|
|
16
|
-
const BIND_ELEMENT = "bindElement";
|
|
17
|
-
namespace Http {
|
|
18
|
-
const REQUEST = "rest.http.request";
|
|
19
|
-
const RESPONSE = "rest.http.response";
|
|
20
|
-
const CONTEXT = "rest.http.request.context";
|
|
21
|
-
}
|
|
22
|
-
}
|
package/dist/src/keys.js
DELETED
|
@@ -1,35 +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 core_1 = require("@loopback/core");
|
|
8
|
-
var RestBindings;
|
|
9
|
-
(function (RestBindings) {
|
|
10
|
-
// RestServer-specific bindings
|
|
11
|
-
RestBindings.CONFIG = `${core_1.CoreBindings.APPLICATION_CONFIG}#rest`;
|
|
12
|
-
RestBindings.PORT = 'rest.port';
|
|
13
|
-
RestBindings.HANDLER = 'rest.handler';
|
|
14
|
-
RestBindings.API_SPEC = 'rest.apiSpec';
|
|
15
|
-
RestBindings.SEQUENCE = 'rest.sequence';
|
|
16
|
-
let SequenceActions;
|
|
17
|
-
(function (SequenceActions) {
|
|
18
|
-
SequenceActions.FIND_ROUTE = 'rest.sequence.actions.findRoute';
|
|
19
|
-
SequenceActions.PARSE_PARAMS = 'rest.sequence.actions.parseParams';
|
|
20
|
-
SequenceActions.INVOKE_METHOD = 'rest.sequence.actions.invokeMethod';
|
|
21
|
-
SequenceActions.LOG_ERROR = 'rest.sequence.actions.logError';
|
|
22
|
-
SequenceActions.SEND = 'rest.sequence.actions.send';
|
|
23
|
-
SequenceActions.REJECT = 'rest.sequence.actions.reject';
|
|
24
|
-
})(SequenceActions = RestBindings.SequenceActions || (RestBindings.SequenceActions = {}));
|
|
25
|
-
RestBindings.GET_FROM_CONTEXT = 'getFromContext';
|
|
26
|
-
RestBindings.BIND_ELEMENT = 'bindElement';
|
|
27
|
-
// request-specific bindings
|
|
28
|
-
let Http;
|
|
29
|
-
(function (Http) {
|
|
30
|
-
Http.REQUEST = 'rest.http.request';
|
|
31
|
-
Http.RESPONSE = 'rest.http.response';
|
|
32
|
-
Http.CONTEXT = 'rest.http.request.context';
|
|
33
|
-
})(Http = RestBindings.Http || (RestBindings.Http = {}));
|
|
34
|
-
})(RestBindings = exports.RestBindings || (exports.RestBindings = {}));
|
|
35
|
-
//# sourceMappingURL=keys.js.map
|
package/dist/src/keys.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"keys.js","sourceRoot":"","sources":["../../src/keys.ts"],"names":[],"mappings":";AAAA,iDAAiD;AACjD,8BAA8B;AAC9B,+CAA+C;AAC/C,gEAAgE;;AAEhE,yCAA4C;AAE5C,IAAiB,YAAY,CA4B5B;AA5BD,WAAiB,YAAY;IAC3B,+BAA+B;IAClB,mBAAM,GAAG,GAAG,mBAAY,CAAC,kBAAkB,OAAO,CAAC;IACnD,iBAAI,GAAG,WAAW,CAAC;IACnB,oBAAO,GAAG,cAAc,CAAC;IAEzB,qBAAQ,GAAG,cAAc,CAAC;IAC1B,qBAAQ,GAAG,eAAe,CAAC;IAExC,IAAiB,eAAe,CAO/B;IAPD,WAAiB,eAAe;QACjB,0BAAU,GAAG,iCAAiC,CAAC;QAC/C,4BAAY,GAAG,mCAAmC,CAAC;QACnD,6BAAa,GAAG,oCAAoC,CAAC;QACrD,yBAAS,GAAG,gCAAgC,CAAC;QAC7C,oBAAI,GAAG,4BAA4B,CAAC;QACpC,sBAAM,GAAG,8BAA8B,CAAC;IACvD,CAAC,EAPgB,eAAe,GAAf,4BAAe,KAAf,4BAAe,QAO/B;IAEY,6BAAgB,GAAG,gBAAgB,CAAC;IACpC,yBAAY,GAAG,aAAa,CAAC;IAE1C,4BAA4B;IAE5B,IAAiB,IAAI,CAIpB;IAJD,WAAiB,IAAI;QACN,YAAO,GAAG,mBAAmB,CAAC;QAC9B,aAAQ,GAAG,oBAAoB,CAAC;QAChC,YAAO,GAAG,2BAA2B,CAAC;IACrD,CAAC,EAJgB,IAAI,GAAJ,iBAAI,KAAJ,iBAAI,QAIpB;AACH,CAAC,EA5BgB,YAAY,GAAZ,oBAAY,KAAZ,oBAAY,QA4B5B"}
|
package/dist/src/parser.d.ts
DELETED
|
@@ -1,11 +0,0 @@
|
|
|
1
|
-
import { OperationArgs, ParsedRequest } from './internal-types';
|
|
2
|
-
import { ResolvedRoute } from './router/routing-table';
|
|
3
|
-
/**
|
|
4
|
-
* Parses the request to derive arguments to be passed in for the Application
|
|
5
|
-
* controller method
|
|
6
|
-
*
|
|
7
|
-
* @param request Incoming HTTP request
|
|
8
|
-
* @param operationSpec Swagger spec defined in the controller
|
|
9
|
-
* @param pathParams Path parameters in incoming HTTP request
|
|
10
|
-
*/
|
|
11
|
-
export declare function parseOperationArgs(request: ParsedRequest, route: ResolvedRoute): Promise<OperationArgs>;
|
package/dist/src/parser.js
DELETED
|
@@ -1,98 +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 _1 = require("./");
|
|
8
|
-
const core_1 = require("@loopback/core");
|
|
9
|
-
const jsonBody = require('body/json');
|
|
10
|
-
// tslint:enable:no-any
|
|
11
|
-
const parseJsonBody = core_1.promisify(jsonBody);
|
|
12
|
-
/**
|
|
13
|
-
* Get the content-type header value from the request
|
|
14
|
-
* @param req Http request
|
|
15
|
-
*/
|
|
16
|
-
function getContentType(req) {
|
|
17
|
-
const val = req.headers['content-type'];
|
|
18
|
-
if (typeof val === 'string') {
|
|
19
|
-
return val;
|
|
20
|
-
}
|
|
21
|
-
else if (Array.isArray(val)) {
|
|
22
|
-
// Assume only one value is present
|
|
23
|
-
return val[0];
|
|
24
|
-
}
|
|
25
|
-
return undefined;
|
|
26
|
-
}
|
|
27
|
-
/**
|
|
28
|
-
* Parses the request to derive arguments to be passed in for the Application
|
|
29
|
-
* controller method
|
|
30
|
-
*
|
|
31
|
-
* @param request Incoming HTTP request
|
|
32
|
-
* @param operationSpec Swagger spec defined in the controller
|
|
33
|
-
* @param pathParams Path parameters in incoming HTTP request
|
|
34
|
-
*/
|
|
35
|
-
async function parseOperationArgs(request, route) {
|
|
36
|
-
const operationSpec = route.spec;
|
|
37
|
-
const pathParams = route.pathParams;
|
|
38
|
-
const body = await loadRequestBodyIfNeeded(operationSpec, request);
|
|
39
|
-
return buildOperationArguments(operationSpec, request, pathParams, body);
|
|
40
|
-
}
|
|
41
|
-
exports.parseOperationArgs = parseOperationArgs;
|
|
42
|
-
function loadRequestBodyIfNeeded(operationSpec, request) {
|
|
43
|
-
if (!hasArgumentsFromBody(operationSpec))
|
|
44
|
-
return Promise.resolve();
|
|
45
|
-
const contentType = getContentType(request);
|
|
46
|
-
if (contentType && !/json/.test(contentType)) {
|
|
47
|
-
const err = new _1.HttpErrors.UnsupportedMediaType(`Content-type ${contentType} is not supported.`);
|
|
48
|
-
return Promise.reject(err);
|
|
49
|
-
}
|
|
50
|
-
return parseJsonBody(request).catch((err) => {
|
|
51
|
-
err.statusCode = 400;
|
|
52
|
-
return Promise.reject(err);
|
|
53
|
-
});
|
|
54
|
-
}
|
|
55
|
-
function hasArgumentsFromBody(operationSpec) {
|
|
56
|
-
if (!operationSpec.parameters || !operationSpec.parameters.length)
|
|
57
|
-
return false;
|
|
58
|
-
for (const paramSpec of operationSpec.parameters) {
|
|
59
|
-
if ('$ref' in paramSpec)
|
|
60
|
-
continue;
|
|
61
|
-
const source = paramSpec.in;
|
|
62
|
-
if (source === 'formData' || source === 'body')
|
|
63
|
-
return true;
|
|
64
|
-
}
|
|
65
|
-
return false;
|
|
66
|
-
}
|
|
67
|
-
function buildOperationArguments(operationSpec, request, pathParams, body) {
|
|
68
|
-
const args = [];
|
|
69
|
-
for (const paramSpec of operationSpec.parameters || []) {
|
|
70
|
-
if ('$ref' in paramSpec) {
|
|
71
|
-
// TODO(bajtos) implement $ref parameters
|
|
72
|
-
// See https://github.com/strongloop/loopback-next/issues/435
|
|
73
|
-
throw new Error('$ref parameters are not supported yet.');
|
|
74
|
-
}
|
|
75
|
-
const spec = paramSpec;
|
|
76
|
-
switch (spec.in) {
|
|
77
|
-
case 'query':
|
|
78
|
-
args.push(request.query[spec.name]);
|
|
79
|
-
break;
|
|
80
|
-
case 'path':
|
|
81
|
-
args.push(pathParams[spec.name]);
|
|
82
|
-
break;
|
|
83
|
-
case 'header':
|
|
84
|
-
args.push(request.headers[spec.name.toLowerCase()]);
|
|
85
|
-
break;
|
|
86
|
-
case 'formData':
|
|
87
|
-
args.push(body ? body[spec.name] : undefined);
|
|
88
|
-
break;
|
|
89
|
-
case 'body':
|
|
90
|
-
args.push(body);
|
|
91
|
-
break;
|
|
92
|
-
default:
|
|
93
|
-
throw new _1.HttpErrors.NotImplemented('Parameters with "in: ' + spec.in + '" are not supported yet.');
|
|
94
|
-
}
|
|
95
|
-
}
|
|
96
|
-
return args;
|
|
97
|
-
}
|
|
98
|
-
//# sourceMappingURL=parser.js.map
|
package/dist/src/parser.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"parser.js","sourceRoot":"","sources":["../../src/parser.ts"],"names":[],"mappings":";AAAA,iDAAiD;AACjD,8BAA8B;AAC9B,+CAA+C;AAC/C,gEAAgE;;AAGhE,yBAA8B;AAE9B,yCAAyC;AAazC,MAAM,QAAQ,GAAe,OAAO,CAAC,WAAW,CAAC,CAAC;AAIlD,uBAAuB;AAEvB,MAAM,aAAa,GAA+C,gBAAS,CACzE,QAAQ,CACT,CAAC;AAEF;;;GAGG;AACH,wBAAwB,GAAkB;IACxC,MAAM,GAAG,GAAG,GAAG,CAAC,OAAO,CAAC,cAAc,CAAC,CAAC;IACxC,EAAE,CAAC,CAAC,OAAO,GAAG,KAAK,QAAQ,CAAC,CAAC,CAAC;QAC5B,MAAM,CAAC,GAAG,CAAC;IACb,CAAC;IAAC,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;QAC9B,mCAAmC;QACnC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;IAChB,CAAC;IACD,MAAM,CAAC,SAAS,CAAC;AACnB,CAAC;AAED;;;;;;;GAOG;AACI,KAAK,6BACV,OAAsB,EACtB,KAAoB;IAEpB,MAAM,aAAa,GAAG,KAAK,CAAC,IAAI,CAAC;IACjC,MAAM,UAAU,GAAG,KAAK,CAAC,UAAU,CAAC;IACpC,MAAM,IAAI,GAAG,MAAM,uBAAuB,CAAC,aAAa,EAAE,OAAO,CAAC,CAAC;IACnE,MAAM,CAAC,uBAAuB,CAAC,aAAa,EAAE,OAAO,EAAE,UAAU,EAAE,IAAI,CAAC,CAAC;AAC3E,CAAC;AARD,gDAQC;AAED,iCACE,aAA8B,EAC9B,OAAsB;IAEtB,EAAE,CAAC,CAAC,CAAC,oBAAoB,CAAC,aAAa,CAAC,CAAC;QAAC,MAAM,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC;IAEnE,MAAM,WAAW,GAAG,cAAc,CAAC,OAAO,CAAC,CAAC;IAC5C,EAAE,CAAC,CAAC,WAAW,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;QAC7C,MAAM,GAAG,GAAG,IAAI,aAAU,CAAC,oBAAoB,CAC7C,gBAAgB,WAAW,oBAAoB,CAChD,CAAC;QACF,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;IAC7B,CAAC;IAED,MAAM,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC,KAAK,CAAC,CAAC,GAAc,EAAE,EAAE;QACrD,GAAG,CAAC,UAAU,GAAG,GAAG,CAAC;QACrB,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;IAC7B,CAAC,CAAC,CAAC;AACL,CAAC;AAED,8BAA8B,aAA8B;IAC1D,EAAE,CAAC,CAAC,CAAC,aAAa,CAAC,UAAU,IAAI,CAAC,aAAa,CAAC,UAAU,CAAC,MAAM,CAAC;QAChE,MAAM,CAAC,KAAK,CAAC;IAEf,GAAG,CAAC,CAAC,MAAM,SAAS,IAAI,aAAa,CAAC,UAAU,CAAC,CAAC,CAAC;QACjD,EAAE,CAAC,CAAC,MAAM,IAAI,SAAS,CAAC;YAAC,QAAQ,CAAC;QAClC,MAAM,MAAM,GAAI,SAA6B,CAAC,EAAE,CAAC;QACjD,EAAE,CAAC,CAAC,MAAM,KAAK,UAAU,IAAI,MAAM,KAAK,MAAM,CAAC;YAAC,MAAM,CAAC,IAAI,CAAC;IAC9D,CAAC;IACD,MAAM,CAAC,KAAK,CAAC;AACf,CAAC;AAED,iCACE,aAA8B,EAC9B,OAAsB,EACtB,UAA+B,EAC/B,IAAgB;IAEhB,MAAM,IAAI,GAAkB,EAAE,CAAC;IAE/B,GAAG,CAAC,CAAC,MAAM,SAAS,IAAI,aAAa,CAAC,UAAU,IAAI,EAAE,CAAC,CAAC,CAAC;QACvD,EAAE,CAAC,CAAC,MAAM,IAAI,SAAS,CAAC,CAAC,CAAC;YACxB,yCAAyC;YACzC,6DAA6D;YAC7D,MAAM,IAAI,KAAK,CAAC,wCAAwC,CAAC,CAAC;QAC5D,CAAC;QACD,MAAM,IAAI,GAAG,SAA4B,CAAC;QAC1C,MAAM,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC;YAChB,KAAK,OAAO;gBACV,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;gBACpC,KAAK,CAAC;YACR,KAAK,MAAM;gBACT,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;gBACjC,KAAK,CAAC;YACR,KAAK,QAAQ;gBACX,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC;gBACpD,KAAK,CAAC;YACR,KAAK,UAAU;gBACb,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC;gBAC9C,KAAK,CAAC;YACR,KAAK,MAAM;gBACT,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;gBAChB,KAAK,CAAC;YACR;gBACE,MAAM,IAAI,aAAU,CAAC,cAAc,CACjC,uBAAuB,GAAG,IAAI,CAAC,EAAE,GAAG,0BAA0B,CAC/D,CAAC;QACN,CAAC;IACH,CAAC;IACD,MAAM,CAAC,IAAI,CAAC;AACd,CAAC"}
|
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
import { Context, Provider } from '@loopback/context';
|
|
2
|
-
import { BindElement } from '../internal-types';
|
|
3
|
-
export declare class BindElementProvider implements Provider<BindElement> {
|
|
4
|
-
protected context: Context;
|
|
5
|
-
constructor(context: Context);
|
|
6
|
-
value(): BindElement;
|
|
7
|
-
}
|
|
@@ -1,34 +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 context_1 = require("@loopback/context");
|
|
20
|
-
const keys_1 = require("../keys");
|
|
21
|
-
let BindElementProvider = class BindElementProvider {
|
|
22
|
-
constructor(context) {
|
|
23
|
-
this.context = context;
|
|
24
|
-
}
|
|
25
|
-
value() {
|
|
26
|
-
return (key) => this.context.bind(key);
|
|
27
|
-
}
|
|
28
|
-
};
|
|
29
|
-
BindElementProvider = __decorate([
|
|
30
|
-
__param(0, context_1.inject(keys_1.RestBindings.Http.CONTEXT)),
|
|
31
|
-
__metadata("design:paramtypes", [context_1.Context])
|
|
32
|
-
], BindElementProvider);
|
|
33
|
-
exports.BindElementProvider = BindElementProvider;
|
|
34
|
-
//# sourceMappingURL=bind-element.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"bind-element.js","sourceRoot":"","sources":["../../../src/providers/bind-element.ts"],"names":[],"mappings":";AAAA,iDAAiD;AACjD,8BAA8B;AAC9B,+CAA+C;AAC/C,gEAAgE;;;;;;;;;;;;;;AAEhE,+CAA4D;AAE5D,kCAAqC;AAErC,IAAa,mBAAmB,GAAhC;IACE,YAAyD,OAAgB;QAAhB,YAAO,GAAP,OAAO,CAAS;IAAG,CAAC;IAC7E,KAAK;QACH,MAAM,CAAC,CAAC,GAAW,EAAE,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IACjD,CAAC;CACF,CAAA;AALY,mBAAmB;IACjB,WAAA,gBAAM,CAAC,mBAAY,CAAC,IAAI,CAAC,OAAO,CAAC,CAAA;qCAAoB,iBAAO;GAD9D,mBAAmB,CAK/B;AALY,kDAAmB"}
|
|
@@ -1,9 +0,0 @@
|
|
|
1
|
-
import { Context, Provider } from '@loopback/context';
|
|
2
|
-
import { FindRoute } from '../internal-types';
|
|
3
|
-
import { HttpHandler } from '../http-handler';
|
|
4
|
-
export declare class FindRouteProvider implements Provider<FindRoute> {
|
|
5
|
-
protected context: Context;
|
|
6
|
-
protected handler: HttpHandler;
|
|
7
|
-
constructor(context: Context, handler: HttpHandler);
|
|
8
|
-
value(): FindRoute;
|
|
9
|
-
}
|
|
@@ -1,42 +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 context_1 = require("@loopback/context");
|
|
20
|
-
const http_handler_1 = require("../http-handler");
|
|
21
|
-
const keys_1 = require("../keys");
|
|
22
|
-
let FindRouteProvider = class FindRouteProvider {
|
|
23
|
-
constructor(context, handler) {
|
|
24
|
-
this.context = context;
|
|
25
|
-
this.handler = handler;
|
|
26
|
-
}
|
|
27
|
-
value() {
|
|
28
|
-
return request => {
|
|
29
|
-
const found = this.handler.findRoute(request);
|
|
30
|
-
found.updateBindings(this.context);
|
|
31
|
-
return found;
|
|
32
|
-
};
|
|
33
|
-
}
|
|
34
|
-
};
|
|
35
|
-
FindRouteProvider = __decorate([
|
|
36
|
-
__param(0, context_1.inject(keys_1.RestBindings.Http.CONTEXT)),
|
|
37
|
-
__param(1, context_1.inject(keys_1.RestBindings.HANDLER)),
|
|
38
|
-
__metadata("design:paramtypes", [context_1.Context,
|
|
39
|
-
http_handler_1.HttpHandler])
|
|
40
|
-
], FindRouteProvider);
|
|
41
|
-
exports.FindRouteProvider = FindRouteProvider;
|
|
42
|
-
//# sourceMappingURL=find-route.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"find-route.js","sourceRoot":"","sources":["../../../src/providers/find-route.ts"],"names":[],"mappings":";AAAA,iDAAiD;AACjD,8BAA8B;AAC9B,+CAA+C;AAC/C,gEAAgE;;;;;;;;;;;;;;AAEhE,+CAA4D;AAE5D,kDAA4C;AAC5C,kCAAqC;AAErC,IAAa,iBAAiB,GAA9B;IACE,YAC+C,OAAgB,EACrB,OAAoB;QADf,YAAO,GAAP,OAAO,CAAS;QACrB,YAAO,GAAP,OAAO,CAAa;IAC3D,CAAC;IAEJ,KAAK;QACH,MAAM,CAAC,OAAO,CAAC,EAAE;YACf,MAAM,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC;YAC9C,KAAK,CAAC,cAAc,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;YACnC,MAAM,CAAC,KAAK,CAAC;QACf,CAAC,CAAC;IACJ,CAAC;CACF,CAAA;AAbY,iBAAiB;IAEzB,WAAA,gBAAM,CAAC,mBAAY,CAAC,IAAI,CAAC,OAAO,CAAC,CAAA;IACjC,WAAA,gBAAM,CAAC,mBAAY,CAAC,OAAO,CAAC,CAAA;qCADyB,iBAAO;QACZ,0BAAW;GAHnD,iBAAiB,CAa7B;AAbY,8CAAiB"}
|
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
import { Context, Provider } from '@loopback/context';
|
|
2
|
-
import { GetFromContext } from '../internal-types';
|
|
3
|
-
export declare class GetFromContextProvider implements Provider<GetFromContext> {
|
|
4
|
-
protected context: Context;
|
|
5
|
-
constructor(context: Context);
|
|
6
|
-
value(): (key: string) => Promise<any>;
|
|
7
|
-
}
|
|
@@ -1,34 +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 context_1 = require("@loopback/context");
|
|
20
|
-
const keys_1 = require("../keys");
|
|
21
|
-
let GetFromContextProvider = class GetFromContextProvider {
|
|
22
|
-
constructor(context) {
|
|
23
|
-
this.context = context;
|
|
24
|
-
}
|
|
25
|
-
value() {
|
|
26
|
-
return (key) => this.context.get(key);
|
|
27
|
-
}
|
|
28
|
-
};
|
|
29
|
-
GetFromContextProvider = __decorate([
|
|
30
|
-
__param(0, context_1.inject(keys_1.RestBindings.Http.CONTEXT)),
|
|
31
|
-
__metadata("design:paramtypes", [context_1.Context])
|
|
32
|
-
], GetFromContextProvider);
|
|
33
|
-
exports.GetFromContextProvider = GetFromContextProvider;
|
|
34
|
-
//# sourceMappingURL=get-from-context.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"get-from-context.js","sourceRoot":"","sources":["../../../src/providers/get-from-context.ts"],"names":[],"mappings":";AAAA,iDAAiD;AACjD,8BAA8B;AAC9B,+CAA+C;AAC/C,gEAAgE;;;;;;;;;;;;;;AAEhE,+CAA4D;AAE5D,kCAAqC;AAErC,IAAa,sBAAsB,GAAnC;IACE,YAAyD,OAAgB;QAAhB,YAAO,GAAP,OAAO,CAAS;IAAG,CAAC;IAE7E,KAAK;QACH,MAAM,CAAC,CAAC,GAAW,EAAE,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IAChD,CAAC;CACF,CAAA;AANY,sBAAsB;IACpB,WAAA,gBAAM,CAAC,mBAAY,CAAC,IAAI,CAAC,OAAO,CAAC,CAAA;qCAAoB,iBAAO;GAD9D,sBAAsB,CAMlC;AANY,wDAAsB"}
|
|
@@ -1,18 +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
|
-
__export(require("./bind-element"));
|
|
11
|
-
__export(require("./find-route"));
|
|
12
|
-
__export(require("./get-from-context"));
|
|
13
|
-
__export(require("./invoke-method"));
|
|
14
|
-
__export(require("./log-error-provider"));
|
|
15
|
-
__export(require("./reject"));
|
|
16
|
-
__export(require("./parse-params"));
|
|
17
|
-
__export(require("./send"));
|
|
18
|
-
//# sourceMappingURL=index.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/providers/index.ts"],"names":[],"mappings":";AAAA,sDAAsD;AACtD,8BAA8B;AAC9B,+CAA+C;AAC/C,gEAAgE;;;;;AAEhE,oCAA+B;AAC/B,kCAA6B;AAC7B,wCAAmC;AACnC,qCAAgC;AAChC,0CAAqC;AACrC,8BAAyB;AACzB,oCAA+B;AAC/B,4BAAuB"}
|