@loopback/docs 3.26.1 → 4.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (248) hide show
  1. package/CHANGELOG.md +59 -0
  2. package/package.json +5 -5
  3. package/site/Authorization-component-authorizer.md +3 -0
  4. package/site/Community-extensions.md +4 -0
  5. package/site/DEVELOPING.md +2 -2
  6. package/site/Examples.md +4 -0
  7. package/site/Include-filter.md +5 -0
  8. package/site/LoopBack-types.md +1 -1
  9. package/site/apidocs/authentication.authenticateactionprovider.md +0 -1
  10. package/site/apidocs/authentication.authenticationbindings.auth_action.md +0 -1
  11. package/site/apidocs/authentication.authenticationbindings.metadata.md +0 -1
  12. package/site/apidocs/authentication.authenticationbindings.strategy.md +0 -1
  13. package/site/apidocs/authentication.authenticationbindings.user_profile_factory.md +0 -1
  14. package/site/apidocs/authentication.userservice.verifycredentials.md +0 -2
  15. package/site/apidocs/authorization.authorizationoptions.md +2 -2
  16. package/site/apidocs/boot.bootmixin.md +2 -2
  17. package/site/apidocs/context.aliasbindingsource.md +1 -1
  18. package/site/apidocs/context.any_tag_value.md +0 -1
  19. package/site/apidocs/context.asyncproxy.md +0 -2
  20. package/site/apidocs/context.binding.apply.md +0 -1
  21. package/site/apidocs/context.binding.configure.md +0 -1
  22. package/site/apidocs/context.binding.getvalue.md +0 -1
  23. package/site/apidocs/context.binding.tag.md +0 -1
  24. package/site/apidocs/context.binding.to.md +0 -1
  25. package/site/apidocs/context.binding.todynamicvalue.md +0 -1
  26. package/site/apidocs/context.binding.toinjectable.md +0 -1
  27. package/site/apidocs/context.binding.toprovider.md +0 -1
  28. package/site/apidocs/context.bindingcomparator.md +0 -1
  29. package/site/apidocs/context.bindingfilter.md +0 -1
  30. package/site/apidocs/context.bindingkey.create.md +0 -1
  31. package/site/apidocs/context.classbindingsource.md +1 -1
  32. package/site/apidocs/context.constantbindingsource.md +1 -1
  33. package/site/apidocs/context.context._constructor_.md +0 -1
  34. package/site/apidocs/context.context._debug.md +0 -1
  35. package/site/apidocs/context.context.createview.md +2 -1
  36. package/site/apidocs/context.context.get.md +0 -1
  37. package/site/apidocs/context.context.get_1.md +0 -1
  38. package/site/apidocs/context.context.getdebugnamespace.md +0 -1
  39. package/site/apidocs/context.context.getscopedcontext.md +1 -1
  40. package/site/apidocs/context.context.getsync.md +0 -1
  41. package/site/apidocs/context.context.getsync_1.md +0 -1
  42. package/site/apidocs/context.context.md +1 -1
  43. package/site/apidocs/context.context.unbind.md +0 -1
  44. package/site/apidocs/context.contextview._constructor_.md +2 -1
  45. package/site/apidocs/context.contextview.asgetter.md +2 -2
  46. package/site/apidocs/context.contextview.md +1 -1
  47. package/site/apidocs/context.contextview.resolve.md +2 -2
  48. package/site/apidocs/context.contextview.singlevalue.md +2 -2
  49. package/site/apidocs/context.contextview.values.md +2 -2
  50. package/site/apidocs/context.createviewgetter_1.md +2 -2
  51. package/site/apidocs/context.dynamicvaluebindingsource.md +1 -1
  52. package/site/apidocs/context.dynamicvalueproviderclass.md +0 -1
  53. package/site/apidocs/context.genericinterceptor.md +0 -1
  54. package/site/apidocs/context.inject.binding.md +0 -1
  55. package/site/apidocs/context.inject.context.md +0 -1
  56. package/site/apidocs/context.inject.tag.md +0 -1
  57. package/site/apidocs/context.inject.view.md +0 -1
  58. package/site/apidocs/context.injectionmetadata.md +2 -2
  59. package/site/apidocs/context.intercept.md +0 -1
  60. package/site/apidocs/context.provider.md +0 -1
  61. package/site/apidocs/context.providerbindingsource.md +1 -1
  62. package/site/apidocs/context.resolvelist.md +0 -2
  63. package/site/apidocs/context.resolvemap.md +0 -2
  64. package/site/apidocs/context.resolverfunction.md +0 -1
  65. package/site/apidocs/context.setter.md +0 -1
  66. package/site/apidocs/context.typenamespacemapping.md +0 -1
  67. package/site/apidocs/core.application.component.md +0 -1
  68. package/site/apidocs/core.application.controller.md +0 -1
  69. package/site/apidocs/core.application.md +1 -1
  70. package/site/apidocs/core.application.server.md +0 -1
  71. package/site/apidocs/core.application.servers.md +0 -1
  72. package/site/apidocs/core.application.service.md +0 -1
  73. package/site/apidocs/core.application.state.md +1 -1
  74. package/site/apidocs/core.component.bindings.md +0 -1
  75. package/site/apidocs/core.component.classes.md +0 -1
  76. package/site/apidocs/core.component.providers.md +0 -1
  77. package/site/apidocs/core.extensionpoint.md +0 -1
  78. package/site/apidocs/core.extensions.list.md +2 -2
  79. package/site/apidocs/core.extensions.md +2 -2
  80. package/site/apidocs/core.extensions.view.md +2 -2
  81. package/site/apidocs/core.lifecycleobserveroptions.md +1 -0
  82. package/site/apidocs/core.md +1 -1
  83. package/site/apidocs/core.mixintarget.md +0 -3
  84. package/site/apidocs/core.service.md +0 -1
  85. package/site/apidocs/cron.cronjob.md +0 -1
  86. package/site/apidocs/express.expressmiddlewareinterceptorprovider.md +0 -2
  87. package/site/apidocs/express.invokeexpressmiddleware.md +0 -1
  88. package/site/apidocs/express.middleware.md +0 -1
  89. package/site/apidocs/express.middlewaremixin.md +2 -2
  90. package/site/apidocs/express.middlewareregistry.expressmiddleware.md +0 -1
  91. package/site/apidocs/express.middlewareregistry.expressmiddleware_1.md +0 -1
  92. package/site/apidocs/express.middlewareregistry.middleware.md +0 -1
  93. package/site/apidocs/express.tointerceptor.md +0 -1
  94. package/site/apidocs/express.tomiddleware.md +0 -1
  95. package/site/apidocs/filter.andclause.md +0 -1
  96. package/site/apidocs/filter.condition.md +0 -1
  97. package/site/apidocs/filter.filterbuilder.md +0 -1
  98. package/site/apidocs/filter.inclusion.md +1 -1
  99. package/site/apidocs/filter.inclusion.scope.md +3 -1
  100. package/site/apidocs/filter.orclause.md +0 -1
  101. package/site/apidocs/filter.where.md +0 -1
  102. package/site/apidocs/filter.wherebuilder.md +0 -1
  103. package/site/apidocs/graphql.graphqlserver.exportgraphqlschema.md +33 -0
  104. package/site/apidocs/graphql.graphqlserver.md +1 -0
  105. package/site/apidocs/logging.loginvocation.md +0 -1
  106. package/site/apidocs/metadata.decoratorfactory.md +0 -3
  107. package/site/apidocs/metadata.designtimemethodmetadata.md +0 -2
  108. package/site/apidocs/metadata.methodmultidecoratorfactory.md +0 -1
  109. package/site/apidocs/metadata.methodparameterdecoratorfactory.md +0 -1
  110. package/site/apidocs/openapi-v3.api.md +0 -1
  111. package/site/apidocs/openapi-v3.deprecated.md +0 -1
  112. package/site/apidocs/openapi-v3.getmodelschemaref.md +0 -1
  113. package/site/apidocs/openapi-v3.param.array.md +0 -1
  114. package/site/apidocs/openapi-v3.param.filter.md +0 -1
  115. package/site/apidocs/openapi-v3.param.where.md +0 -1
  116. package/site/apidocs/openapi-v3.requestbody.array.md +0 -1
  117. package/site/apidocs/openapi-v3.requestbody.file.md +0 -1
  118. package/site/apidocs/openapi-v3.response.file.md +0 -1
  119. package/site/apidocs/openapi-v3.schemaref.md +0 -1
  120. package/site/apidocs/openapi-v3.tags.md +0 -2
  121. package/site/apidocs/openapi-v3.visibility.md +0 -1
  122. package/site/apidocs/repository-json-schema.getjsonschemaref.md +0 -1
  123. package/site/apidocs/repository-json-schema.jsonschemaoptions.partial.md +0 -1
  124. package/site/apidocs/repository-json-schema.optional.md +0 -1
  125. package/site/apidocs/repository.belongstodefinition.md +1 -1
  126. package/site/apidocs/repository.constructorfunction.md +0 -1
  127. package/site/apidocs/repository.crudrepositoryimpl.md +0 -1
  128. package/site/apidocs/repository.defaultcrudrepository.createhasmanyrepositoryfactoryfor.md +0 -1
  129. package/site/apidocs/repository.defaultcrudrepository.createhasmanythroughrepositoryfactoryfor.md +0 -1
  130. package/site/apidocs/repository.defaultcrudrepository.execute.md +0 -1
  131. package/site/apidocs/repository.defaultcrudrepository.execute_1.md +0 -1
  132. package/site/apidocs/repository.definecrudrepositoryclass.md +0 -1
  133. package/site/apidocs/repository.definekeyvaluerepositoryclass.md +0 -1
  134. package/site/apidocs/repository.definemodelclass.md +0 -3
  135. package/site/apidocs/repository.definerepositoryclass.md +0 -1
  136. package/site/apidocs/repository.findbyforeignkeys.md +4 -2
  137. package/site/apidocs/repository.hasmanydefinition.md +1 -1
  138. package/site/apidocs/repository.hasonedefinition.md +1 -1
  139. package/site/apidocs/repository.modeldefinition.idproperties.md +0 -1
  140. package/site/apidocs/repository.repository_1.md +0 -1
  141. package/site/apidocs/repository.repositorymixin.md +2 -3
  142. package/site/apidocs/repository.repositorymixindoc.component.md +0 -1
  143. package/site/apidocs/repository.repositorymixindoc.datasource.md +0 -1
  144. package/site/apidocs/repository.repositorymixindoc.repository.md +0 -1
  145. package/site/apidocs/rest-crud.definecrudrestcontroller.md +0 -1
  146. package/site/apidocs/rest.defaultsequence.md +0 -1
  147. package/site/apidocs/rest.restapplication.exportopenapispec.md +2 -5
  148. package/site/apidocs/rest.restapplication.expressmiddleware.md +0 -1
  149. package/site/apidocs/rest.restapplication.expressmiddleware_1.md +0 -1
  150. package/site/apidocs/rest.restapplication.middleware.md +0 -1
  151. package/site/apidocs/rest.restapplication.redirect.md +0 -1
  152. package/site/apidocs/rest.restapplication.requesthandler.md +0 -1
  153. package/site/apidocs/rest.restapplication.route.md +0 -1
  154. package/site/apidocs/rest.restapplication.route_1.md +0 -1
  155. package/site/apidocs/rest.restapplication.route_2.md +0 -1
  156. package/site/apidocs/rest.restapplication.route_3.md +0 -1
  157. package/site/apidocs/rest.restserver.controller.md +0 -1
  158. package/site/apidocs/rest.restserver.exportopenapispec.md +2 -5
  159. package/site/apidocs/rest.restserver.handler.md +0 -1
  160. package/site/apidocs/rest.restserver.md +0 -3
  161. package/site/apidocs/rest.restserver.oasenhancerservice.md +0 -1
  162. package/site/apidocs/rest.restserver.redirect.md +0 -1
  163. package/site/apidocs/rest.restserver.route.md +0 -1
  164. package/site/apidocs/rest.restserver.route_1.md +0 -1
  165. package/site/apidocs/rest.restserver.route_2.md +0 -1
  166. package/site/apidocs/rest.restserver.sequence.md +0 -1
  167. package/site/apidocs/service-proxy.servicemixin.md +2 -3
  168. package/site/apidocs/service-proxy.servicemixindoc.component.md +0 -1
  169. package/site/apidocs/service-proxy.servicemixindoc.serviceprovider.md +0 -1
  170. package/site/apidocs/socketio.socketio.md +0 -1
  171. package/site/apidocs/socketio.socketio.subscribe.md +0 -1
  172. package/site/apidocs/socketio.socketiobindings.io.md +1 -1
  173. package/site/apidocs/socketio.socketiobindings.socket.md +1 -1
  174. package/site/apidocs/socketio.socketioserver.route.md +2 -2
  175. package/site/apidocs/socketio.socketioserver.use.md +2 -2
  176. package/site/apidocs/testlab.skipif.md +0 -1
  177. package/site/apidocs/testlab.skipontravis.md +0 -1
  178. package/site/apidocs/testlab.testsandbox._constructor_.md +0 -1
  179. package/site/apidocs/typeorm.typeormmixin.md +2 -2
  180. package/site/changelogs/bodyparsers/rest-msgpack/CHANGELOG.md +45 -0
  181. package/site/changelogs/examples/access-control-migration/CHANGELOG.md +56 -0
  182. package/site/changelogs/examples/binding-resolution/CHANGELOG.md +56 -0
  183. package/site/changelogs/examples/context/CHANGELOG.md +56 -0
  184. package/site/changelogs/examples/express-composition/CHANGELOG.md +56 -0
  185. package/site/changelogs/examples/file-transfer/CHANGELOG.md +56 -0
  186. package/site/changelogs/examples/graphql/CHANGELOG.md +56 -0
  187. package/site/changelogs/examples/greeter-extension/CHANGELOG.md +56 -0
  188. package/site/changelogs/examples/greeting-app/CHANGELOG.md +56 -0
  189. package/site/changelogs/examples/hello-world/CHANGELOG.md +56 -0
  190. package/site/changelogs/examples/lb3-application/CHANGELOG.md +56 -0
  191. package/site/changelogs/examples/log-extension/CHANGELOG.md +56 -0
  192. package/site/changelogs/examples/metrics-prometheus/CHANGELOG.md +56 -0
  193. package/site/changelogs/examples/multi-tenancy/CHANGELOG.md +59 -0
  194. package/site/changelogs/examples/passport-login/CHANGELOG.md +56 -0
  195. package/site/changelogs/examples/rest-crud/CHANGELOG.md +56 -0
  196. package/site/changelogs/examples/rpc-server/CHANGELOG.md +56 -0
  197. package/site/changelogs/examples/soap-calculator/CHANGELOG.md +56 -0
  198. package/site/changelogs/examples/socketio/CHANGELOG.md +49 -0
  199. package/site/changelogs/examples/todo/CHANGELOG.md +56 -0
  200. package/site/changelogs/examples/todo-jwt/CHANGELOG.md +56 -0
  201. package/site/changelogs/examples/todo-list/CHANGELOG.md +56 -0
  202. package/site/changelogs/examples/validation-app/CHANGELOG.md +56 -0
  203. package/site/changelogs/examples/webpack/CHANGELOG.md +59 -0
  204. package/site/changelogs/extensions/apiconnect/CHANGELOG.md +45 -0
  205. package/site/changelogs/extensions/authentication-jwt/CHANGELOG.md +54 -0
  206. package/site/changelogs/extensions/authentication-passport/CHANGELOG.md +45 -0
  207. package/site/changelogs/extensions/context-explorer/CHANGELOG.md +45 -0
  208. package/site/changelogs/extensions/cron/CHANGELOG.md +48 -0
  209. package/site/changelogs/extensions/graphql/CHANGELOG.md +48 -0
  210. package/site/changelogs/extensions/health/CHANGELOG.md +45 -0
  211. package/site/changelogs/extensions/logging/CHANGELOG.md +45 -0
  212. package/site/changelogs/extensions/metrics/CHANGELOG.md +50 -0
  213. package/site/changelogs/extensions/pooling/CHANGELOG.md +48 -0
  214. package/site/changelogs/extensions/socketio/CHANGELOG.md +48 -0
  215. package/site/changelogs/extensions/typeorm/CHANGELOG.md +48 -0
  216. package/site/changelogs/fixtures/mock-oauth2-provider/CHANGELOG.md +45 -0
  217. package/site/changelogs/packages/authentication/CHANGELOG.md +45 -0
  218. package/site/changelogs/packages/authorization/CHANGELOG.md +45 -0
  219. package/site/changelogs/packages/boot/CHANGELOG.md +45 -0
  220. package/site/changelogs/packages/booter-lb3app/CHANGELOG.md +45 -0
  221. package/site/changelogs/packages/build/CHANGELOG.md +45 -0
  222. package/site/changelogs/packages/cli/CHANGELOG.md +53 -0
  223. package/site/changelogs/packages/context/CHANGELOG.md +48 -0
  224. package/site/changelogs/packages/core/CHANGELOG.md +56 -0
  225. package/site/changelogs/packages/eslint-config/CHANGELOG.md +45 -0
  226. package/site/changelogs/packages/express/CHANGELOG.md +45 -0
  227. package/site/changelogs/packages/filter/CHANGELOG.md +56 -0
  228. package/site/changelogs/packages/http-caching-proxy/CHANGELOG.md +50 -0
  229. package/site/changelogs/packages/http-server/CHANGELOG.md +45 -0
  230. package/site/changelogs/packages/metadata/CHANGELOG.md +45 -0
  231. package/site/changelogs/packages/model-api-builder/CHANGELOG.md +50 -0
  232. package/site/changelogs/packages/monorepo/CHANGELOG.md +45 -0
  233. package/site/changelogs/packages/openapi-spec-builder/CHANGELOG.md +45 -0
  234. package/site/changelogs/packages/openapi-v3/CHANGELOG.md +59 -0
  235. package/site/changelogs/packages/repository/CHANGELOG.md +48 -0
  236. package/site/changelogs/packages/repository-json-schema/CHANGELOG.md +62 -0
  237. package/site/changelogs/packages/repository-tests/CHANGELOG.md +45 -0
  238. package/site/changelogs/packages/rest/CHANGELOG.md +59 -0
  239. package/site/changelogs/packages/rest-crud/CHANGELOG.md +56 -0
  240. package/site/changelogs/packages/rest-explorer/CHANGELOG.md +45 -0
  241. package/site/changelogs/packages/security/CHANGELOG.md +45 -0
  242. package/site/changelogs/packages/service-proxy/CHANGELOG.md +45 -0
  243. package/site/changelogs/packages/testlab/CHANGELOG.md +45 -0
  244. package/site/changelogs/packages/tsdocs/CHANGELOG.md +51 -0
  245. package/site/index.md +1 -1
  246. package/site/readmes/loopback-next/extensions/authentication-jwt/README.md +3 -2
  247. package/site/readmes/loopback-next/extensions/graphql/README.md +48 -1
  248. package/site/readmes/loopback-next/packages/build/README.md +9 -0
@@ -18,14 +18,14 @@ As a `Getter` function
18
18
  <b>Signature:</b>
19
19
 
20
20
  ```typescript
21
- asGetter(session?: ResolutionSession): Getter<T[]>;
21
+ asGetter(session?: ResolutionOptionsOrSession): Getter<T[]>;
22
22
  ```
23
23
 
24
24
  ## Parameters
25
25
 
26
26
  | Parameter | Type | Description |
27
27
  | --- | --- | --- |
28
- | session | [ResolutionSession](./context.resolutionsession.md) | |
28
+ | session | [ResolutionOptionsOrSession](./context.resolutionoptionsorsession.md) | |
29
29
 
30
30
  <b>Returns:</b>
31
31
 
@@ -32,7 +32,7 @@ export declare class ContextView<T = unknown> extends EventEmitter implements Co
32
32
 
33
33
  | Constructor | Modifiers | Description |
34
34
  | --- | --- | --- |
35
- | [(constructor)(context, filter, comparator)](./context.contextview._constructor_.md) | | Create a context view |
35
+ | [(constructor)(context, filter, comparator, resolutionOptions)](./context.contextview._constructor_.md) | | Create a context view |
36
36
 
37
37
  ## Properties
38
38
 
@@ -18,14 +18,14 @@ Resolve values for the matching bindings
18
18
  <b>Signature:</b>
19
19
 
20
20
  ```typescript
21
- resolve(session?: ResolutionSession): ValueOrPromise<T[]>;
21
+ resolve(session?: ResolutionOptionsOrSession): ValueOrPromise<T[]>;
22
22
  ```
23
23
 
24
24
  ## Parameters
25
25
 
26
26
  | Parameter | Type | Description |
27
27
  | --- | --- | --- |
28
- | session | [ResolutionSession](./context.resolutionsession.md) | Resolution session |
28
+ | session | [ResolutionOptionsOrSession](./context.resolutionoptionsorsession.md) | Resolution session |
29
29
 
30
30
  <b>Returns:</b>
31
31
 
@@ -18,14 +18,14 @@ Get the single value
18
18
  <b>Signature:</b>
19
19
 
20
20
  ```typescript
21
- singleValue(session?: ResolutionSession): Promise<T | undefined>;
21
+ singleValue(session?: ResolutionOptionsOrSession): Promise<T | undefined>;
22
22
  ```
23
23
 
24
24
  ## Parameters
25
25
 
26
26
  | Parameter | Type | Description |
27
27
  | --- | --- | --- |
28
- | session | [ResolutionSession](./context.resolutionsession.md) | |
28
+ | session | [ResolutionOptionsOrSession](./context.resolutionoptionsorsession.md) | |
29
29
 
30
30
  <b>Returns:</b>
31
31
 
@@ -18,14 +18,14 @@ Get the list of resolved values. If they are not cached, it tries to find and re
18
18
  <b>Signature:</b>
19
19
 
20
20
  ```typescript
21
- values(session?: ResolutionSession): Promise<T[]>;
21
+ values(session?: ResolutionOptionsOrSession): Promise<T[]>;
22
22
  ```
23
23
 
24
24
  ## Parameters
25
25
 
26
26
  | Parameter | Type | Description |
27
27
  | --- | --- | --- |
28
- | session | [ResolutionSession](./context.resolutionsession.md) | |
28
+ | session | [ResolutionOptionsOrSession](./context.resolutionoptionsorsession.md) | |
29
29
 
30
30
  <b>Returns:</b>
31
31
 
@@ -18,7 +18,7 @@ Create a context view as a getter with the given filter and sort matched binding
18
18
  <b>Signature:</b>
19
19
 
20
20
  ```typescript
21
- export declare function createViewGetter<T = unknown>(ctx: Context, bindingFilter: BindingFilter, bindingComparator?: BindingComparator, session?: ResolutionSession): Getter<T[]>;
21
+ export declare function createViewGetter<T = unknown>(ctx: Context, bindingFilter: BindingFilter, bindingComparator?: BindingComparator, session?: ResolutionOptionsOrSession): Getter<T[]>;
22
22
  ```
23
23
 
24
24
  ## Parameters
@@ -28,7 +28,7 @@ export declare function createViewGetter<T = unknown>(ctx: Context, bindingFilte
28
28
  | ctx | [Context](./context.context.md) | Context object |
29
29
  | bindingFilter | [BindingFilter](./context.bindingfilter.md) | A function to match bindings |
30
30
  | bindingComparator | [BindingComparator](./context.bindingcomparator.md) | A function to compare two bindings |
31
- | session | [ResolutionSession](./context.resolutionsession.md) | Resolution session |
31
+ | session | [ResolutionOptionsOrSession](./context.resolutionoptionsorsession.md) | Resolution session |
32
32
 
33
33
  <b>Returns:</b>
34
34
 
@@ -23,6 +23,6 @@ export declare type DynamicValueBindingSource<T> = {
23
23
  value: ValueFactory<T> | DynamicValueProviderClass<T>;
24
24
  };
25
25
  ```
26
- <b>References:</b> [BindingType.DYNAMIC\_VALUE](./context.bindingtype.dynamic_value.md)<!-- -->, [ValueFactory](./context.valuefactory.md)<!-- -->, [DynamicValueProviderClass](./context.dynamicvalueproviderclass.md)
26
+ <b>References:</b> [BindingType.DYNAMIC\_VALUE](./context.bindingtype.md)<!-- -->, [ValueFactory](./context.valuefactory.md)<!-- -->, [DynamicValueProviderClass](./context.dynamicvalueproviderclass.md)
27
27
 
28
28
 
@@ -33,7 +33,6 @@ export class DynamicGreetingProvider {
33
33
  return `Hello, ${user}`;
34
34
  }
35
35
  }
36
-
37
36
  ```
38
37
 
39
38
  ## Properties
@@ -41,7 +41,6 @@ const myInterceptor: Interceptor = async (ctx, next) {
41
41
  // either return `result` or another value if the interceptor decides to
42
42
  // have its own response
43
43
  }
44
-
45
44
  ```
46
45
 
47
46
 
@@ -35,7 +35,6 @@ class MyAuthAction {
35
35
  this.userBinding.toDynamicValue(() => {...});
36
36
  }
37
37
  }
38
-
39
38
  ```
40
39
 
41
40
 
@@ -28,7 +28,6 @@ context: () => (target: Object, member: string | undefined, methodDescriptorOrPa
28
28
  class MyProvider {
29
29
  constructor(@inject.context() private ctx: Context) {}
30
30
  }
31
-
32
31
  ```
33
32
 
34
33
 
@@ -30,7 +30,6 @@ class AuthenticationManager {
30
30
  @inject.tag('authentication.strategy') public strategies: Strategy[],
31
31
  ) {}
32
32
  }
33
-
34
33
  ```
35
34
 
36
35
 
@@ -29,7 +29,6 @@ class MyControllerWithView {
29
29
  @inject.view(filterByTag('foo'))
30
30
  view: ContextView<string[]>;
31
31
  }
32
-
33
32
  ```
34
33
 
35
34
 
@@ -18,9 +18,9 @@ An object to provide metadata for `@inject`
18
18
  <b>Signature:</b>
19
19
 
20
20
  ```typescript
21
- export interface InjectionMetadata extends ResolutionOptions
21
+ export interface InjectionMetadata extends Omit<ResolutionOptions, 'session'>
22
22
  ```
23
- <b>Extends:</b> [ResolutionOptions](./context.resolutionoptions.md)
23
+ <b>Extends:</b> Omit&lt;[ResolutionOptions](./context.resolutionoptions.md)<!-- -->, 'session'&gt;
24
24
 
25
25
  ## Properties
26
26
 
@@ -43,7 +43,6 @@ class MyController {
43
43
  return `Hello, ${name}`;
44
44
  }
45
45
  }
46
-
47
46
  ```
48
47
 
49
48
 
@@ -37,7 +37,6 @@ ctx.bind('provider_key').toProvider(DateProvider);
37
37
 
38
38
  const value = ctx.getAsync('provider_key');
39
39
  // value is a Date instance
40
-
41
40
  ```
42
41
 
43
42
  ## Methods
@@ -23,6 +23,6 @@ export declare type ProviderBindingSource<T> = {
23
23
  value: Constructor<Provider<T>>;
24
24
  };
25
25
  ```
26
- <b>References:</b> [BindingType.PROVIDER](./context.bindingtype.provider.md)<!-- -->, [Constructor](./context.constructor.md)<!-- -->, [Provider](./context.provider.md)
26
+ <b>References:</b> [BindingType.PROVIDER](./context.bindingtype.md)<!-- -->, [Constructor](./context.constructor.md)<!-- -->, [Provider](./context.provider.md)
27
27
 
28
28
 
@@ -38,7 +38,6 @@ export declare function resolveList<T, V>(list: T[], resolver: (val: T, index: n
38
38
 
39
39
  ```ts
40
40
  const result = resolveList(['a', 'b'], v => v.toUpperCase());
41
-
42
41
  ```
43
42
  The `result` will be `['A', 'B']`<!-- -->.
44
43
 
@@ -48,7 +47,6 @@ The `result` will be `['A', 'B']`<!-- -->.
48
47
  const result = resolveList(['a', 'b'], v =>
49
48
  Promise.resolve(v.toUpperCase()),
50
49
  );
51
-
52
50
  ```
53
51
  The `result` will be a promise of `['A', 'B']`<!-- -->.
54
52
 
@@ -38,7 +38,6 @@ export declare function resolveMap<T, V>(map: MapObject<T>, resolver: (val: T, k
38
38
 
39
39
  ```ts
40
40
  const result = resolveMap({a: 'x', b: 'y'}, v => v.toUpperCase());
41
-
42
41
  ```
43
42
  The `result` will be `{a: 'X', b: 'Y'}`<!-- -->.
44
43
 
@@ -48,7 +47,6 @@ The `result` will be `{a: 'X', b: 'Y'}`<!-- -->.
48
47
  const result = resolveMap({a: 'x', b: 'y'}, v =>
49
48
  Promise.resolve(v.toUpperCase()),
50
49
  );
51
-
52
50
  ```
53
51
  The `result` will be a promise of `{a: 'X', b: 'Y'}`<!-- -->.
54
52
 
@@ -28,7 +28,6 @@ export interface ResolverFunction
28
28
  const resolver: ResolverFunction = (ctx, injection, session) {
29
29
  return session.currentBinding?.key;
30
30
  }
31
-
32
31
  ```
33
32
 
34
33
 
@@ -26,7 +26,6 @@ export declare type Setter<T> = (value: T) => void;
26
26
 
27
27
  ```ts
28
28
  setterFn('my-value');
29
-
30
29
  ```
31
30
 
32
31
 
@@ -30,7 +30,6 @@ export declare type TypeNamespaceMapping = {
30
30
  {
31
31
  repository: 'repositories'
32
32
  }
33
-
34
33
  ```
35
34
 
36
35
 
@@ -47,7 +47,6 @@ export class ProductComponent {
47
47
  };
48
48
 
49
49
  app.component(ProductComponent);
50
-
51
50
  ```
52
51
 
53
52
 
@@ -41,7 +41,6 @@ The newly created binding, you can use the reference to further modify the bindi
41
41
  class MyController {
42
42
  }
43
43
  app.controller(MyController).lock();
44
-
45
44
  ```
46
45
 
47
46
 
@@ -36,7 +36,7 @@ export declare class Application extends Context implements LifeCycleObserver
36
36
  | Property | Modifiers | Type | Description |
37
37
  | --- | --- | --- | --- |
38
38
  | [options](./core.application.options.md) | | [ApplicationConfig](./core.applicationconfig.md) | |
39
- | [state](./core.application.state.md) | | string | Get the state of the application. The initial state is <code>created</code> and it can transition as follows by <code>start</code> and <code>stop</code>:<!-- -->1. start - !started -<!-- -->&gt; starting -<!-- -->&gt; started - started -<!-- -->&gt; started (no-op) 2. stop - started -<!-- -->&gt; stopping -<!-- -->&gt; stopped - !started -<!-- -->&gt; stopped (no-op)<!-- -->Two types of states are expected: - stable, such as <code>started</code> and <code>stopped</code> - in process, such as <code>booting</code> and <code>starting</code>Operations such as <code>start</code> and <code>stop</code> can only be called at a stable state. The logic should immediately set the state to a new one indicating work in process, such as <code>starting</code> and <code>stopping</code>. |
39
+ | [state](./core.application.state.md) | | string | Get the state of the application. The initial state is <code>created</code> and it can transition as follows by <code>start</code> and <code>stop</code>:<!-- -->1. start - !started -<!-- -->&gt; starting -<!-- -->&gt; started - started -<!-- -->&gt; started (no-op) 2. stop - (started \| initialized) -<!-- -->&gt; stopping -<!-- -->&gt; stopped - ! (started \|\| initialized) -<!-- -->&gt; stopped (no-op)<!-- -->Two types of states are expected: - stable, such as <code>started</code> and <code>stopped</code> - in process, such as <code>booting</code> and <code>starting</code>Operations such as <code>start</code> and <code>stop</code> can only be called at a stable state. The logic should immediately set the state to a new one indicating work in process, such as <code>starting</code> and <code>stopping</code>. |
40
40
 
41
41
  ## Methods
42
42
 
@@ -42,7 +42,6 @@ app.server(RestServer);
42
42
  // This server constructor will be bound under "servers.RestServer".
43
43
  app.server(RestServer, "v1API");
44
44
  // This server instance will be bound under "servers.v1API".
45
-
46
45
  ```
47
46
 
48
47
 
@@ -44,7 +44,6 @@ app.servers([
44
44
  ]);
45
45
  // Creates a binding for "servers.RestServer" and a binding for
46
46
  // "servers.GRPCServer";
47
-
48
47
  ```
49
48
 
50
49
 
@@ -68,7 +68,6 @@ export class MyController {
68
68
  return `${this.uuid}: ${name}`;
69
69
  }
70
70
  }
71
-
72
71
  ```
73
72
 
74
73
 
@@ -15,7 +15,7 @@ permalink: /doc/en/lb4/apidocs.core.application.state.html
15
15
 
16
16
  Get the state of the application. The initial state is `created` and it can transition as follows by `start` and `stop`<!-- -->:
17
17
 
18
- 1. start - !started -<!-- -->&gt; starting -<!-- -->&gt; started - started -<!-- -->&gt; started (no-op) 2. stop - started -<!-- -->&gt; stopping -<!-- -->&gt; stopped - !started -<!-- -->&gt; stopped (no-op)
18
+ 1. start - !started -<!-- -->&gt; starting -<!-- -->&gt; started - started -<!-- -->&gt; started (no-op) 2. stop - (started \| initialized) -<!-- -->&gt; stopping -<!-- -->&gt; stopped - ! (started \|\| initialized) -<!-- -->&gt; stopped (no-op)
19
19
 
20
20
  Two types of states are expected: - stable, such as `started` and `stopped` - in process, such as `booting` and `starting`
21
21
 
@@ -27,7 +27,6 @@ bindings?: Binding[];
27
27
  ```ts
28
28
  const bindingX = Binding.bind('x').to('Value X');
29
29
  this.bindings = [bindingX]
30
-
31
30
  ```
32
31
 
33
32
 
@@ -28,7 +28,6 @@ classes?: ClassMap;
28
28
  {
29
29
  'rest.body-parsers.xml': XmlBodyParser
30
30
  }
31
-
32
31
  ```
33
32
 
34
33
 
@@ -28,7 +28,6 @@ providers?: ProviderMap;
28
28
  {
29
29
  'authentication.strategies.ldap': LdapStrategyProvider
30
30
  }
31
-
32
31
  ```
33
32
 
34
33
 
@@ -42,7 +42,6 @@ import {extensionPoint} from '@loopback/core';
42
42
  export class GreetingService {
43
43
  // ...
44
44
  }
45
-
46
45
  ```
47
46
 
48
47
 
@@ -18,7 +18,7 @@ Inject an array of resolved extension instances for the extension point. The lis
18
18
  <b>Signature:</b>
19
19
 
20
20
  ```typescript
21
- function list(extensionPointName?: string): (target: Object, member: string | undefined, methodDescriptorOrParameterIndex?: number | TypedPropertyDescriptor<any> | undefined) => void;
21
+ function list(extensionPointName?: string, metadata?: InjectionMetadata): (target: Object, member: string | undefined, methodDescriptorOrParameterIndex?: number | TypedPropertyDescriptor<any> | undefined) => void;
22
22
  ```
23
23
 
24
24
  ## Parameters
@@ -26,6 +26,7 @@ function list(extensionPointName?: string): (target: Object, member: string | un
26
26
  | Parameter | Type | Description |
27
27
  | --- | --- | --- |
28
28
  | extensionPointName | string | Name of the extension point. If not supplied, we use the <code>name</code> tag from the extension point binding or the class name of the extension point class. If a class needs to inject extensions from multiple extension points, use different <code>extensionPointName</code> for different types of extensions. |
29
+ | metadata | [InjectionMetadata](./context.injectionmetadata.md) | Optional injection metadata |
29
30
 
30
31
  <b>Returns:</b>
31
32
 
@@ -46,7 +47,6 @@ export class GreetingService {
46
47
  ) {
47
48
  // ...
48
49
  }
49
-
50
50
  ```
51
51
 
52
52
 
@@ -23,7 +23,7 @@ export declare namespace extensions
23
23
 
24
24
  | Function | Description |
25
25
  | --- | --- |
26
- | [list(extensionPointName)](./core.extensions.list.md) | Inject an array of resolved extension instances for the extension point. The list is a snapshot of registered extensions when the injection is fulfilled. Extensions added or removed afterward won't impact the list. |
27
- | [view(extensionPointName)](./core.extensions.view.md) | Inject a <code>ContextView</code> for extensions of the extension point. The view can then be listened on events such as <code>bind</code>, <code>unbind</code>, or <code>refresh</code> to react on changes of extensions. |
26
+ | [list(extensionPointName, metadata)](./core.extensions.list.md) | Inject an array of resolved extension instances for the extension point. The list is a snapshot of registered extensions when the injection is fulfilled. Extensions added or removed afterward won't impact the list. |
27
+ | [view(extensionPointName, metadata)](./core.extensions.view.md) | Inject a <code>ContextView</code> for extensions of the extension point. The view can then be listened on events such as <code>bind</code>, <code>unbind</code>, or <code>refresh</code> to react on changes of extensions. |
28
28
 
29
29
 
@@ -18,7 +18,7 @@ Inject a `ContextView` for extensions of the extension point. The view can then
18
18
  <b>Signature:</b>
19
19
 
20
20
  ```typescript
21
- function view(extensionPointName?: string): (target: Object, member: string | undefined, methodDescriptorOrParameterIndex?: number | TypedPropertyDescriptor<any> | undefined) => void;
21
+ function view(extensionPointName?: string, metadata?: InjectionMetadata): (target: Object, member: string | undefined, methodDescriptorOrParameterIndex?: number | TypedPropertyDescriptor<any> | undefined) => void;
22
22
  ```
23
23
 
24
24
  ## Parameters
@@ -26,6 +26,7 @@ function view(extensionPointName?: string): (target: Object, member: string | un
26
26
  | Parameter | Type | Description |
27
27
  | --- | --- | --- |
28
28
  | extensionPointName | string | Name of the extension point. If not supplied, we use the <code>name</code> tag from the extension point binding or the class name of the extension point class. If a class needs to inject extensions from multiple extension points, use different <code>extensionPointName</code> for different types of extensions. |
29
+ | metadata | [InjectionMetadata](./context.injectionmetadata.md) | Optional injection metadata |
29
30
 
30
31
  <b>Returns:</b>
31
32
 
@@ -46,7 +47,6 @@ export class GreetingService {
46
47
  ) {
47
48
  // ...
48
49
  }
49
-
50
50
  ```
51
51
 
52
52
 
@@ -18,6 +18,7 @@ permalink: /doc/en/lb4/apidocs.core.lifecycleobserveroptions.html
18
18
  ```typescript
19
19
  export declare type LifeCycleObserverOptions = {
20
20
  orderedGroups: string[];
21
+ disabledGroups?: string[];
21
22
  parallel?: boolean;
22
23
  };
23
24
  ```
@@ -37,7 +37,7 @@ For examples of how to leverage `@loopback/core` to build composable and extensi
37
37
  | [extensionFilter(extensionPointNames)](./core.extensionfilter.md) | A factory function to create binding filter for extensions of a named extension point |
38
38
  | [extensionFor(extensionPointNames)](./core.extensionfor.md) | A factory function to create binding template for extensions of the given extension point |
39
39
  | [extensionPoint(name, specs)](./core.extensionpoint.md) | Decorate a class as a named extension point. If the decoration is not present, the name of the class will be used. |
40
- | [extensions(extensionPointName)](./core.extensions.md) | Shortcut to inject extensions for the given extension point. |
40
+ | [extensions(extensionPointName, metadata)](./core.extensions.md) | Shortcut to inject extensions for the given extension point. |
41
41
  | [filterByServiceInterface(serviceInterface)](./core.filterbyserviceinterface.md) | Create a binding filter by service class |
42
42
  | [isLifeCycleObserver(obj)](./core.islifecycleobserver.md) | Test if an object implements LifeCycleObserver |
43
43
  | [isLifeCycleObserverClass(ctor)](./core.islifecycleobserverclass.md) | Test if a class implements LifeCycleObserver |
@@ -33,7 +33,6 @@ export function MyMixin<T extends MixinTarget<Application>>(superClass: T) {
33
33
  // contribute new class members
34
34
  }
35
35
  };
36
-
37
36
  ```
38
37
  TypeScript does not allow class mixins to access protected members from the base class. You can use the following approach as a workaround:
39
38
 
@@ -41,7 +40,6 @@ TypeScript does not allow class mixins to access protected members from the base
41
40
  // eslint-disable-next-line @typescript-eslint/ban-ts-comment
42
41
  // @ts-ignore
43
42
  (this as unknown as {YourBaseClass}).protectedMember
44
-
45
43
  ```
46
44
  The directive `@ts-ignore` suppresses compiler error about accessing a protected member from outside. Unfortunately, it also disables other compile-time checks (e.g. to verify that a protected method was invoked with correct arguments, and so on). This is the same behavior you would get by using `Constructor<any>` instead of `MixinTarget<Application>`<!-- -->. The major improvement is that TypeScript can still infer the return type of the protected member, therefore `any` is NOT introduced to subsequent code.
47
45
 
@@ -62,7 +60,6 @@ superClass: T,
62
60
  return binding;
63
61
  }
64
62
  }
65
-
66
63
  ```
67
64
 
68
65
 
@@ -50,7 +50,6 @@ export class MyController {
50
50
 
51
51
  ctx.bind('my-controller').toClass(MyController);
52
52
  await myController = ctx.get<MyController>('my-controller');
53
-
54
53
  ```
55
54
 
56
55
 
@@ -42,7 +42,6 @@ class CronJobProvider implements Provider<CronJob> {
42
42
  // ...
43
43
  }
44
44
  }
45
-
46
45
  ```
47
46
 
48
47
 
@@ -34,7 +34,6 @@ class SpyInterceptorProvider extends ExpressMiddlewareInterceptorProvider<
34
34
  super(spy, spyConfig);
35
35
  }
36
36
  }
37
-
38
37
  ```
39
38
  To inject the configuration without automatic reloading:
40
39
 
@@ -46,7 +45,6 @@ class SpyInterceptorProvider extends ExpressMiddlewareInterceptorProvider<
46
45
  super(spy, configView);
47
46
  }
48
47
  }
49
-
50
48
  ```
51
49
 
52
50
  ## Constructors
@@ -56,7 +56,6 @@ if (finished) {
56
56
  } else {
57
57
  // Http response is yet to be produced
58
58
  }
59
-
60
59
  ```
61
60
 
62
61
 
@@ -50,7 +50,6 @@ const log: Middleware = async (requestCtx, next) => {
50
50
  throw err;
51
51
  }
52
52
  }
53
-
54
53
  ```
55
54
 
56
55
 
@@ -39,7 +39,7 @@ export declare function MiddlewareMixin<T extends MixinTarget<Context>>(superCla
39
39
  unsubscribe: (observer: loopbackContext.ContextEventObserver) => boolean;
40
40
  close: () => void;
41
41
  isSubscribed: (observer: loopbackContext.ContextObserver) => boolean;
42
- createView: <T_2 = unknown>(filter: loopbackContext.BindingFilter, comparator?: loopbackContext.BindingComparator | undefined) => loopbackContext.ContextView<T_2>;
42
+ createView: <T_2 = unknown>(filter: loopbackContext.BindingFilter, comparator?: loopbackContext.BindingComparator | undefined, options?: Omit<loopbackContext.ResolutionOptions, "session"> | undefined) => loopbackContext.ContextView<T_2>;
43
43
  contains: (key: BindingAddress<unknown>) => boolean;
44
44
  isBound: (key: BindingAddress<unknown>) => boolean;
45
45
  getOwnerContext: (keyOrBinding: BindingAddress<unknown> | Readonly<Binding<unknown>>) => Context | undefined;
@@ -99,6 +99,6 @@ export declare function MiddlewareMixin<T extends MixinTarget<Context>>(superCla
99
99
 
100
100
  <b>Returns:</b>
101
101
 
102
- { new (...args: any\[\]): { expressMiddleware(key: [BindingAddress](./context.bindingaddress.md)<!-- -->, middleware: [ExpressRequestHandler](./express.expressrequesthandler.md) \| [ExpressRequestHandler](./express.expressrequesthandler.md)<!-- -->\[\], options?: [MiddlewareBindingOptions](./express.middlewarebindingoptions.md) \| undefined): [Binding](./context.binding.md)<!-- -->&lt;[Middleware](./express.middleware.md)<!-- -->&gt;; expressMiddleware&lt;CFG&gt;(middlewareFactory: [ExpressMiddlewareFactory](./express.expressmiddlewarefactory.md)<!-- -->&lt;CFG&gt;, middlewareConfig?: CFG \| undefined, options?: [MiddlewareBindingOptions](./express.middlewarebindingoptions.md) \| undefined): [Binding](./context.binding.md)<!-- -->&lt;[Middleware](./express.middleware.md)<!-- -->&gt;; expressMiddleware&lt;CFG\_1&gt;(factoryOrKey: [BindingAddress](./context.bindingaddress.md)<!-- -->&lt;[Middleware](./express.middleware.md)<!-- -->&gt; \| [ExpressMiddlewareFactory](./express.expressmiddlewarefactory.md)<!-- -->&lt;CFG\_1&gt;, configOrHandler: [ExpressRequestHandler](./express.expressrequesthandler.md) \| [ExpressRequestHandler](./express.expressrequesthandler.md)<!-- -->\[\] \| CFG\_1, options?: [MiddlewareBindingOptions](./express.middlewarebindingoptions.md) \| undefined): [Binding](./context.binding.md)<!-- -->&lt;[Middleware](./express.middleware.md)<!-- -->&gt;; middleware(middleware: [Middleware](./express.middleware.md) \| [Constructor](./context.constructor.md)<!-- -->&lt;[Provider](./context.provider.md)<!-- -->&lt;[Middleware](./express.middleware.md)<!-- -->&gt;&gt;, options?: [MiddlewareBindingOptions](./express.middlewarebindingoptions.md)<!-- -->): [Binding](./context.binding.md)<!-- -->&lt;[Middleware](./express.middleware.md)<!-- -->&gt;; readonly name: string; readonly subscriptionManager: loopbackContext.[ContextSubscriptionManager](./context.contextsubscriptionmanager.md)<!-- -->; scope: loopbackContext.[BindingScope](./context.bindingscope.md)<!-- -->; readonly parent: [Context](./context.context.md) \| undefined; emitEvent: &lt;T\_1 extends loopbackContext.[ContextEvent](./context.contextevent.md)<!-- -->&gt;(type: string, event: T\_1) =&gt; void; emitError: (err: unknown) =&gt; void; bind: &lt;ValueType = any&gt;(key: [BindingAddress](./context.bindingaddress.md)<!-- -->&lt;ValueType&gt;) =&gt; [Binding](./context.binding.md)<!-- -->&lt;ValueType&gt;; add: (binding: [Binding](./context.binding.md)<!-- -->&lt;unknown&gt;) =&gt; [Context](./context.context.md)<!-- -->; configure: &lt;ConfigValueType = any&gt;(key?: [BindingAddress](./context.bindingaddress.md)<!-- -->&lt;unknown&gt; \| undefined) =&gt; [Binding](./context.binding.md)<!-- -->&lt;ConfigValueType&gt;; getConfigAsValueOrPromise: &lt;ConfigValueType\_1&gt;(key: [BindingAddress](./context.bindingaddress.md)<!-- -->&lt;unknown&gt;, propertyPath?: string \| undefined, resolutionOptions?: loopbackContext.[ResolutionOptions](./context.resolutionoptions.md) \| undefined) =&gt; loopbackContext.[ValueOrPromise](./context.valueorpromise.md)<!-- -->&lt;ConfigValueType\_1 \| undefined&gt;; getConfig: &lt;ConfigValueType\_2&gt;(key: [BindingAddress](./context.bindingaddress.md)<!-- -->&lt;unknown&gt;, propertyPath?: string \| undefined, resolutionOptions?: loopbackContext.[ResolutionOptions](./context.resolutionoptions.md) \| undefined) =&gt; Promise&lt;ConfigValueType\_2 \| undefined&gt;; getConfigSync: &lt;ConfigValueType\_3&gt;(key: [BindingAddress](./context.bindingaddress.md)<!-- -->&lt;unknown&gt;, propertyPath?: string \| undefined, resolutionOptions?: loopbackContext.[ResolutionOptions](./context.resolutionoptions.md) \| undefined) =&gt; ConfigValueType\_3 \| undefined; unbind: (key: [BindingAddress](./context.bindingaddress.md)<!-- -->&lt;unknown&gt;) =&gt; boolean; subscribe: (observer: loopbackContext.[ContextEventObserver](./context.contexteventobserver.md)<!-- -->) =&gt; loopbackContext.[Subscription](./context.subscription.md)<!-- -->; unsubscribe: (observer: loopbackContext.[ContextEventObserver](./context.contexteventobserver.md)<!-- -->) =&gt; boolean; close: () =&gt; void; isSubscribed: (observer: loopbackContext.[ContextObserver](./context.contextobserver.md)<!-- -->) =&gt; boolean; createView: &lt;T\_2 = unknown&gt;(filter: loopbackContext.[BindingFilter](./context.bindingfilter.md)<!-- -->, comparator?: loopbackContext.[BindingComparator](./context.bindingcomparator.md) \| undefined) =&gt; loopbackContext.[ContextView](./context.contextview.md)<!-- -->&lt;T\_2&gt;; contains: (key: [BindingAddress](./context.bindingaddress.md)<!-- -->&lt;unknown&gt;) =&gt; boolean; isBound: (key: [BindingAddress](./context.bindingaddress.md)<!-- -->&lt;unknown&gt;) =&gt; boolean; getOwnerContext: (keyOrBinding: [BindingAddress](./context.bindingaddress.md)<!-- -->&lt;unknown&gt; \| Readonly&lt;[Binding](./context.binding.md)<!-- -->&lt;unknown&gt;&gt;) =&gt; [Context](./context.context.md) \| undefined; getScopedContext: (scope: loopbackContext.[BindingScope.APPLICATION](./context.bindingscope.application.md) \| loopbackContext.[BindingScope.SERVER](./context.bindingscope.server.md) \| loopbackContext.[BindingScope.REQUEST](./context.bindingscope.request.md)<!-- -->) =&gt; [Context](./context.context.md) \| undefined; getResolutionContext: (binding: Readonly&lt;[Binding](./context.binding.md)<!-- -->&lt;unknown&gt;&gt;) =&gt; [Context](./context.context.md) \| undefined; isVisibleTo: (ctx: [Context](./context.context.md)<!-- -->) =&gt; boolean; find: &lt;ValueType\_1 = any&gt;(pattern?: string \| RegExp \| loopbackContext.[BindingFilter](./context.bindingfilter.md) \| undefined) =&gt; Readonly&lt;[Binding](./context.binding.md)<!-- -->&lt;ValueType\_1&gt;&gt;\[\]; findByTag: &lt;ValueType\_2 = any&gt;(tagFilter: RegExp \| loopbackContext.[BindingTag](./context.bindingtag.md)<!-- -->) =&gt; Readonly&lt;[Binding](./context.binding.md)<!-- -->&lt;ValueType\_2&gt;&gt;\[\]; get: { &lt;ValueType\_3&gt;(keyWithPath: [BindingAddress](./context.bindingaddress.md)<!-- -->&lt;ValueType\_3&gt;, session?: loopbackContext.[ResolutionSession](./context.resolutionsession.md) \| undefined): Promise&lt;ValueType\_3&gt;; &lt;ValueType\_4&gt;(keyWithPath: [BindingAddress](./context.bindingaddress.md)<!-- -->&lt;ValueType\_4&gt;, options: loopbackContext.[ResolutionOptions](./context.resolutionoptions.md)<!-- -->): Promise&lt;ValueType\_4 \| undefined&gt;; }; getSync: { &lt;ValueType\_5&gt;(keyWithPath: [BindingAddress](./context.bindingaddress.md)<!-- -->&lt;ValueType\_5&gt;, session?: loopbackContext.[ResolutionSession](./context.resolutionsession.md) \| undefined): ValueType\_5; &lt;ValueType\_6&gt;(keyWithPath: [BindingAddress](./context.bindingaddress.md)<!-- -->&lt;ValueType\_6&gt;, options?: loopbackContext.[ResolutionOptions](./context.resolutionoptions.md) \| undefined): ValueType\_6 \| undefined; }; getBinding: { &lt;ValueType\_7 = any&gt;(key: [BindingAddress](./context.bindingaddress.md)<!-- -->&lt;ValueType\_7&gt;): [Binding](./context.binding.md)<!-- -->&lt;ValueType\_7&gt;; &lt;ValueType\_8&gt;(key: [BindingAddress](./context.bindingaddress.md)<!-- -->&lt;ValueType\_8&gt;, options?: { optional?: boolean \| undefined; } \| undefined): [Binding](./context.binding.md)<!-- -->&lt;ValueType\_8&gt; \| undefined; }; findOrCreateBinding: &lt;T\_3&gt;(key: [BindingAddress](./context.bindingaddress.md)<!-- -->&lt;T\_3&gt;, policy?: loopbackContext.[BindingCreationPolicy](./context.bindingcreationpolicy.md) \| undefined) =&gt; [Binding](./context.binding.md)<!-- -->&lt;T\_3&gt;; getValueOrPromise: &lt;ValueType\_9&gt;(keyWithPath: [BindingAddress](./context.bindingaddress.md)<!-- -->&lt;ValueType\_9&gt;, optionsOrSession?: loopbackContext.[ResolutionOptionsOrSession](./context.resolutionoptionsorsession.md) \| undefined) =&gt; loopbackContext.[ValueOrPromise](./context.valueorpromise.md)<!-- -->&lt;ValueType\_9 \| undefined&gt;; toJSON: () =&gt; loopbackContext.[JSONObject](./context.jsonobject.md)<!-- -->; inspect: (options?: loopbackContext.[ContextInspectOptions](./context.contextinspectoptions.md) \| undefined) =&gt; loopbackContext.[JSONObject](./context.jsonobject.md)<!-- -->; on: { (eventName: "bind" \| "unbind", listener: loopbackContext.[ContextEventListener](./context.contexteventlistener.md)<!-- -->): [Context](./context.context.md)<!-- -->; (event: string \| symbol, listener: (...args: any\[\]) =&gt; void): [Context](./context.context.md)<!-- -->; }; once: { (eventName: "bind" \| "unbind", listener: loopbackContext.[ContextEventListener](./context.contexteventlistener.md)<!-- -->): [Context](./context.context.md)<!-- -->; (event: string \| symbol, listener: (...args: any\[\]) =&gt; void): [Context](./context.context.md)<!-- -->; }; addListener: (event: string \| symbol, listener: (...args: any\[\]) =&gt; void) =&gt; [Context](./context.context.md)<!-- -->; removeListener: (event: string \| symbol, listener: (...args: any\[\]) =&gt; void) =&gt; [Context](./context.context.md)<!-- -->; off: (event: string \| symbol, listener: (...args: any\[\]) =&gt; void) =&gt; [Context](./context.context.md)<!-- -->; removeAllListeners: (event?: string \| symbol \| undefined) =&gt; [Context](./context.context.md)<!-- -->; setMaxListeners: (n: number) =&gt; [Context](./context.context.md)<!-- -->; getMaxListeners: () =&gt; number; listeners: (event: string \| symbol) =&gt; Function\[\]; rawListeners: (event: string \| symbol) =&gt; Function\[\]; emit: (event: string \| symbol, ...args: any\[\]) =&gt; boolean; listenerCount: (type: string \| symbol) =&gt; number; prependListener: (event: string \| symbol, listener: (...args: any\[\]) =&gt; void) =&gt; [Context](./context.context.md)<!-- -->; prependOnceListener: (event: string \| symbol, listener: (...args: any\[\]) =&gt; void) =&gt; [Context](./context.context.md)<!-- -->; eventNames: () =&gt; (string \| symbol)\[\]; }; } &amp; T
102
+ { new (...args: any\[\]): { expressMiddleware(key: [BindingAddress](./context.bindingaddress.md)<!-- -->, middleware: [ExpressRequestHandler](./express.expressrequesthandler.md) \| [ExpressRequestHandler](./express.expressrequesthandler.md)<!-- -->\[\], options?: [MiddlewareBindingOptions](./express.middlewarebindingoptions.md) \| undefined): [Binding](./context.binding.md)<!-- -->&lt;[Middleware](./express.middleware.md)<!-- -->&gt;; expressMiddleware&lt;CFG&gt;(middlewareFactory: [ExpressMiddlewareFactory](./express.expressmiddlewarefactory.md)<!-- -->&lt;CFG&gt;, middlewareConfig?: CFG \| undefined, options?: [MiddlewareBindingOptions](./express.middlewarebindingoptions.md) \| undefined): [Binding](./context.binding.md)<!-- -->&lt;[Middleware](./express.middleware.md)<!-- -->&gt;; expressMiddleware&lt;CFG\_1&gt;(factoryOrKey: [BindingAddress](./context.bindingaddress.md)<!-- -->&lt;[Middleware](./express.middleware.md)<!-- -->&gt; \| [ExpressMiddlewareFactory](./express.expressmiddlewarefactory.md)<!-- -->&lt;CFG\_1&gt;, configOrHandler: [ExpressRequestHandler](./express.expressrequesthandler.md) \| [ExpressRequestHandler](./express.expressrequesthandler.md)<!-- -->\[\] \| CFG\_1, options?: [MiddlewareBindingOptions](./express.middlewarebindingoptions.md) \| undefined): [Binding](./context.binding.md)<!-- -->&lt;[Middleware](./express.middleware.md)<!-- -->&gt;; middleware(middleware: [Middleware](./express.middleware.md) \| [Constructor](./context.constructor.md)<!-- -->&lt;[Provider](./context.provider.md)<!-- -->&lt;[Middleware](./express.middleware.md)<!-- -->&gt;&gt;, options?: [MiddlewareBindingOptions](./express.middlewarebindingoptions.md)<!-- -->): [Binding](./context.binding.md)<!-- -->&lt;[Middleware](./express.middleware.md)<!-- -->&gt;; readonly name: string; readonly subscriptionManager: loopbackContext.[ContextSubscriptionManager](./context.contextsubscriptionmanager.md)<!-- -->; scope: loopbackContext.[BindingScope](./context.bindingscope.md)<!-- -->; readonly parent: [Context](./context.context.md) \| undefined; emitEvent: &lt;T\_1 extends loopbackContext.[ContextEvent](./context.contextevent.md)<!-- -->&gt;(type: string, event: T\_1) =&gt; void; emitError: (err: unknown) =&gt; void; bind: &lt;ValueType = any&gt;(key: [BindingAddress](./context.bindingaddress.md)<!-- -->&lt;ValueType&gt;) =&gt; [Binding](./context.binding.md)<!-- -->&lt;ValueType&gt;; add: (binding: [Binding](./context.binding.md)<!-- -->&lt;unknown&gt;) =&gt; [Context](./context.context.md)<!-- -->; configure: &lt;ConfigValueType = any&gt;(key?: [BindingAddress](./context.bindingaddress.md)<!-- -->&lt;unknown&gt; \| undefined) =&gt; [Binding](./context.binding.md)<!-- -->&lt;ConfigValueType&gt;; getConfigAsValueOrPromise: &lt;ConfigValueType\_1&gt;(key: [BindingAddress](./context.bindingaddress.md)<!-- -->&lt;unknown&gt;, propertyPath?: string \| undefined, resolutionOptions?: loopbackContext.[ResolutionOptions](./context.resolutionoptions.md) \| undefined) =&gt; loopbackContext.[ValueOrPromise](./context.valueorpromise.md)<!-- -->&lt;ConfigValueType\_1 \| undefined&gt;; getConfig: &lt;ConfigValueType\_2&gt;(key: [BindingAddress](./context.bindingaddress.md)<!-- -->&lt;unknown&gt;, propertyPath?: string \| undefined, resolutionOptions?: loopbackContext.[ResolutionOptions](./context.resolutionoptions.md) \| undefined) =&gt; Promise&lt;ConfigValueType\_2 \| undefined&gt;; getConfigSync: &lt;ConfigValueType\_3&gt;(key: [BindingAddress](./context.bindingaddress.md)<!-- -->&lt;unknown&gt;, propertyPath?: string \| undefined, resolutionOptions?: loopbackContext.[ResolutionOptions](./context.resolutionoptions.md) \| undefined) =&gt; ConfigValueType\_3 \| undefined; unbind: (key: [BindingAddress](./context.bindingaddress.md)<!-- -->&lt;unknown&gt;) =&gt; boolean; subscribe: (observer: loopbackContext.[ContextEventObserver](./context.contexteventobserver.md)<!-- -->) =&gt; loopbackContext.[Subscription](./context.subscription.md)<!-- -->; unsubscribe: (observer: loopbackContext.[ContextEventObserver](./context.contexteventobserver.md)<!-- -->) =&gt; boolean; close: () =&gt; void; isSubscribed: (observer: loopbackContext.[ContextObserver](./context.contextobserver.md)<!-- -->) =&gt; boolean; createView: &lt;T\_2 = unknown&gt;(filter: loopbackContext.[BindingFilter](./context.bindingfilter.md)<!-- -->, comparator?: loopbackContext.[BindingComparator](./context.bindingcomparator.md) \| undefined, options?: Omit&lt;loopbackContext.[ResolutionOptions](./context.resolutionoptions.md)<!-- -->, "session"&gt; \| undefined) =&gt; loopbackContext.[ContextView](./context.contextview.md)<!-- -->&lt;T\_2&gt;; contains: (key: [BindingAddress](./context.bindingaddress.md)<!-- -->&lt;unknown&gt;) =&gt; boolean; isBound: (key: [BindingAddress](./context.bindingaddress.md)<!-- -->&lt;unknown&gt;) =&gt; boolean; getOwnerContext: (keyOrBinding: [BindingAddress](./context.bindingaddress.md)<!-- -->&lt;unknown&gt; \| Readonly&lt;[Binding](./context.binding.md)<!-- -->&lt;unknown&gt;&gt;) =&gt; [Context](./context.context.md) \| undefined; getScopedContext: (scope: loopbackContext.[BindingScope.APPLICATION](./context.bindingscope.md) \| loopbackContext.[BindingScope.SERVER](./context.bindingscope.md) \| loopbackContext.[BindingScope.REQUEST](./context.bindingscope.md)<!-- -->) =&gt; [Context](./context.context.md) \| undefined; getResolutionContext: (binding: Readonly&lt;[Binding](./context.binding.md)<!-- -->&lt;unknown&gt;&gt;) =&gt; [Context](./context.context.md) \| undefined; isVisibleTo: (ctx: [Context](./context.context.md)<!-- -->) =&gt; boolean; find: &lt;ValueType\_1 = any&gt;(pattern?: string \| RegExp \| loopbackContext.[BindingFilter](./context.bindingfilter.md) \| undefined) =&gt; Readonly&lt;[Binding](./context.binding.md)<!-- -->&lt;ValueType\_1&gt;&gt;\[\]; findByTag: &lt;ValueType\_2 = any&gt;(tagFilter: RegExp \| loopbackContext.[BindingTag](./context.bindingtag.md)<!-- -->) =&gt; Readonly&lt;[Binding](./context.binding.md)<!-- -->&lt;ValueType\_2&gt;&gt;\[\]; get: { &lt;ValueType\_3&gt;(keyWithPath: [BindingAddress](./context.bindingaddress.md)<!-- -->&lt;ValueType\_3&gt;, session?: loopbackContext.[ResolutionSession](./context.resolutionsession.md) \| undefined): Promise&lt;ValueType\_3&gt;; &lt;ValueType\_4&gt;(keyWithPath: [BindingAddress](./context.bindingaddress.md)<!-- -->&lt;ValueType\_4&gt;, options: loopbackContext.[ResolutionOptions](./context.resolutionoptions.md)<!-- -->): Promise&lt;ValueType\_4 \| undefined&gt;; }; getSync: { &lt;ValueType\_5&gt;(keyWithPath: [BindingAddress](./context.bindingaddress.md)<!-- -->&lt;ValueType\_5&gt;, session?: loopbackContext.[ResolutionSession](./context.resolutionsession.md) \| undefined): ValueType\_5; &lt;ValueType\_6&gt;(keyWithPath: [BindingAddress](./context.bindingaddress.md)<!-- -->&lt;ValueType\_6&gt;, options?: loopbackContext.[ResolutionOptions](./context.resolutionoptions.md) \| undefined): ValueType\_6 \| undefined; }; getBinding: { &lt;ValueType\_7 = any&gt;(key: [BindingAddress](./context.bindingaddress.md)<!-- -->&lt;ValueType\_7&gt;): [Binding](./context.binding.md)<!-- -->&lt;ValueType\_7&gt;; &lt;ValueType\_8&gt;(key: [BindingAddress](./context.bindingaddress.md)<!-- -->&lt;ValueType\_8&gt;, options?: { optional?: boolean \| undefined; } \| undefined): [Binding](./context.binding.md)<!-- -->&lt;ValueType\_8&gt; \| undefined; }; findOrCreateBinding: &lt;T\_3&gt;(key: [BindingAddress](./context.bindingaddress.md)<!-- -->&lt;T\_3&gt;, policy?: loopbackContext.[BindingCreationPolicy](./context.bindingcreationpolicy.md) \| undefined) =&gt; [Binding](./context.binding.md)<!-- -->&lt;T\_3&gt;; getValueOrPromise: &lt;ValueType\_9&gt;(keyWithPath: [BindingAddress](./context.bindingaddress.md)<!-- -->&lt;ValueType\_9&gt;, optionsOrSession?: loopbackContext.[ResolutionOptionsOrSession](./context.resolutionoptionsorsession.md) \| undefined) =&gt; loopbackContext.[ValueOrPromise](./context.valueorpromise.md)<!-- -->&lt;ValueType\_9 \| undefined&gt;; toJSON: () =&gt; loopbackContext.[JSONObject](./context.jsonobject.md)<!-- -->; inspect: (options?: loopbackContext.[ContextInspectOptions](./context.contextinspectoptions.md) \| undefined) =&gt; loopbackContext.[JSONObject](./context.jsonobject.md)<!-- -->; on: { (eventName: "bind" \| "unbind", listener: loopbackContext.[ContextEventListener](./context.contexteventlistener.md)<!-- -->): [Context](./context.context.md)<!-- -->; (event: string \| symbol, listener: (...args: any\[\]) =&gt; void): [Context](./context.context.md)<!-- -->; }; once: { (eventName: "bind" \| "unbind", listener: loopbackContext.[ContextEventListener](./context.contexteventlistener.md)<!-- -->): [Context](./context.context.md)<!-- -->; (event: string \| symbol, listener: (...args: any\[\]) =&gt; void): [Context](./context.context.md)<!-- -->; }; addListener: (event: string \| symbol, listener: (...args: any\[\]) =&gt; void) =&gt; [Context](./context.context.md)<!-- -->; removeListener: (event: string \| symbol, listener: (...args: any\[\]) =&gt; void) =&gt; [Context](./context.context.md)<!-- -->; off: (event: string \| symbol, listener: (...args: any\[\]) =&gt; void) =&gt; [Context](./context.context.md)<!-- -->; removeAllListeners: (event?: string \| symbol \| undefined) =&gt; [Context](./context.context.md)<!-- -->; setMaxListeners: (n: number) =&gt; [Context](./context.context.md)<!-- -->; getMaxListeners: () =&gt; number; listeners: (event: string \| symbol) =&gt; Function\[\]; rawListeners: (event: string \| symbol) =&gt; Function\[\]; emit: (event: string \| symbol, ...args: any\[\]) =&gt; boolean; listenerCount: (type: string \| symbol) =&gt; number; prependListener: (event: string \| symbol, listener: (...args: any\[\]) =&gt; void) =&gt; [Context](./context.context.md)<!-- -->; prependOnceListener: (event: string \| symbol, listener: (...args: any\[\]) =&gt; void) =&gt; [Context](./context.context.md)<!-- -->; eventNames: () =&gt; (string \| symbol)\[\]; }; } &amp; T
103
103
 
104
104
 
@@ -43,7 +43,6 @@ const myExpressMiddleware = myExpressMiddlewareFactory(myExpressMiddlewareConfig
43
43
  server.expressMiddleware('middleware.express.my', myExpressMiddleware);
44
44
  // Or
45
45
  server.expressMiddleware('middleware.express.my', [myExpressMiddleware]);
46
-
47
46
  ```
48
47
 
49
48
 
@@ -40,7 +40,6 @@ expressMiddleware<CFG>(middlewareFactory: ExpressMiddlewareFactory<CFG>, middlew
40
40
  import myExpressMiddlewareFactory from 'my-express-middleware';
41
41
  const myExpressMiddlewareConfig= {};
42
42
  server.expressMiddleware(myExpressMiddlewareFactory, myExpressMiddlewareConfig);
43
-
44
43
  ```
45
44
 
46
45
 
@@ -40,7 +40,6 @@ const log: Middleware = async (requestCtx, next) {
40
40
  // ...
41
41
  }
42
42
  server.middleware(log);
43
-
44
43
  ```
45
44
 
46
45