From 306bc89e28dac4dc35e06555077fb20b406ed3a9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Miroslav=20Bajto=C5=A1?= Date: Thu, 11 Jun 2020 14:47:50 +0200 Subject: [PATCH] docs: re-arrange the sidebar along four quadrants Regroup documentation page along the following quadrants: - Learning-oriented tutorials nested in "Tutorials" - Problem-oriented how-to guides nested in "Usage scenarios" - Understanding-oriented explanations nested in "Behind the scenes" - Information-oriented reference guides nested in "Reference guides" Remove "Key Concepts" from the sidebar, move the content of `Concepts.md` to `Behind-the-scene.md`. Move "Using components" entries to "Usage scenarios", remove "Using components" page altogether and move the relevant content to "Components" page in "Behind the scenes" section. Rename "Reference" to "Reference guides" Rearrange top sidebar entries, move tutorials higher up in the sidebar. --- docs/README.md | 18 + docs/site/Behind-the-scene.md | 65 ++- docs/site/Components.md | 30 +- docs/site/Concepts.md | 57 -- docs/site/Reference.md | 2 +- docs/site/Using-components.md | 75 --- docs/site/sidebars/lb4_sidebar.yml | 908 ++++++++++++++--------------- 7 files changed, 555 insertions(+), 600 deletions(-) delete mode 100644 docs/site/Concepts.md delete mode 100644 docs/site/Using-components.md diff --git a/docs/README.md b/docs/README.md index 2dcf381687ff..5d849641ed7e 100644 --- a/docs/README.md +++ b/docs/README.md @@ -11,6 +11,24 @@ http://loopback.io/doc/en/lb4/index.html. To contribute, please check out https://loopback.io/doc/en/contrib/doc-contrib.html. +We are using the documentation system based on four quadrants, as described at +https://documentation.divio.com + +- Learning-oriented [Tutorials](https://documentation.divio.com/tutorials/), + nested in [Tutorials](./site/Tutorials.md) section of the sidebar. + +- Problem-oriented + [How-to Guides](https://documentation.divio.com/how-to-guides/), nested in + [Usage scenarios](./site/Usage-scenarios.md) section of the sidebar. + +- Understanding-oriented + [Explanation](https://documentation.divio.com/explanation/), nested in + [Behind the scenes](./site/Behind-the-scene.md) section of the sidebar. + +- Information-oriented + [Reference guides](https://documentation.divio.com/reference/), nested in + [Reference guides](./site/Reference.md) section of the sidebar. + ## API references The API docs are generated by running `npm run tsdocs` at the root directory of diff --git a/docs/site/Behind-the-scene.md b/docs/site/Behind-the-scene.md index a2e804d61444..d84ccb03528f 100644 --- a/docs/site/Behind-the-scene.md +++ b/docs/site/Behind-the-scene.md @@ -1,22 +1,75 @@ --- lang: en -title: 'Components' -keywords: LoopBack 4.0, LoopBack 4, Node.js, TypeScript, OpenAPI +title: 'Behind the scenes' +keywords: LoopBack 4, Node.js, TypeScript, OpenAPI, Explanations, Concepts sidebar: lb4_sidebar permalink: /doc/en/lb4/Behind-the-scene.html --- +LoopBack 4 defines some key building blocks to represent different +responsibilities for typical API and/or Microservice applications. + +![Key concepts overview diagram](imgs/key-concepts-overview-diagram.png) + +- [**Application**](Application.md): The central class for setting up all of + your module’s components, controllers, servers and bindings. The Application + class extends [Context](Context.md) and provides the controls for starting and + stopping its associated servers. + +- [**Server**](Server.md): An implementation for inbound transports/protocols + such as REST (http, https), gRPC (http2) and graphQL (http, https). It + typically listens on a specific endpoint (protocol/host/port), handles + incoming requests, and then returns appropriate responses. + +- [**Controller**](Controllers.md): A class that implements operations defined + by the application’s REST API. It implements an application’s business logic + and acts as a bridge between the HTTP/REST API and domain/database models. A + Controller operates only on processed input and abstractions of backend + services / databases. + +- [**Interceptors**](Interceptors.md): A function that intercepts static or + instance method invocations on a class or object. + +- [**Route**](Routes.md): The mapping between your API specification and an + Operation. It tells LoopBack which Operation to `invoke()` when given an HTTP + request. + +- [**Sequence**](Sequence.md): A stateless grouping of + [Actions](Sequence.md#actions) that control how a Server responds to requests. + +- [**Model**](Model.md): The definition of an object in respect to the + datasource juggler. The `@loopback/repository` module provides special + decorators for adding metadata to TypeScript/JavaScript classes to use them + with the legacy implementation of DataSource Juggler. In addition, + `@loopback/repository-json-schema` module uses the decorators' metadata to + build a matching JSON Schema. + +- [**DataSources**](DataSources.md): A named configuration for a Connector + instance that represents data in an external system. + +- [**Repository**](Repositories.md): A type of service that represents a + collection of data within a DataSource. + +- [**Relation**](Relations.md): A mapping between two models which describes a + real world link between them and exposes CRUD APIs based on the configuration. + +- [**Decorator**](Decorators.md): The pattern used to annotate or modify your + class declarations and their members with metadata. + Here are the infrastructures that get all the artifacts working together: -- [Context](Context.md): An abstraction of states and dependencies in your +- [**Context**](Context.md): An abstraction of states and dependencies in your application that LoopBack uses to manage everything. It’s a global registry for everything in your app (configurations, state, dependencies, classes and so on). -- [Binding](Binding.md): An abstraction of items managed by a context. Each + +- [**Binding**](Binding.md): An abstraction of items managed by a context. Each binding has a unique key within the context and a value provider to resolve the key to a value. -- [Dependency Injection](Dependency-injection.md): The technique used to + +- [**Dependency Injection**](Dependency-injection.md): The technique used to separate the construction of dependencies of a class or function from its behavior to keep the code loosely coupled. -- [Component](Components.md): A package that bundles one or more LoopBack + +- [**Component**](Components.md): A package that bundles one or more LoopBack extensions. diff --git a/docs/site/Components.md b/docs/site/Components.md index 2b818bc570ff..6756c1760746 100644 --- a/docs/site/Components.md +++ b/docs/site/Components.md @@ -56,5 +56,31 @@ trouble of having to do so manually. Again it's best to check the documentation for the given Component/Mixin. " %} -See [Using components](Using-components.md) and -[Creating components](Creating-components.md) for more information. +## Using components + +Components can be added to your application using the `app.component()` method. + +The following is an example of installing and using a component. + +Install the following dependencies: + +```sh +npm install --save @loopback/authentication +``` + +To load the component in your application: + +```ts +import {RestApplication} from '@loopback/rest'; +import {AuthenticationComponent} from '@loopback/authentication'; + +const app = new RestApplication(); +// Add component to Application, which provides bindings used to resolve +// authenticated requests in a Sequence. +app.component(AuthenticationComponent); +``` + +## Creating components + +Please refer to [Creating components](Creating-components.md) for more +information. diff --git a/docs/site/Concepts.md b/docs/site/Concepts.md deleted file mode 100644 index a58ea98bd862..000000000000 --- a/docs/site/Concepts.md +++ /dev/null @@ -1,57 +0,0 @@ ---- -lang: en -title: 'Key concepts' -keywords: LoopBack 4.0, LoopBack 4, Node.js, TypeScript, OpenAPI, Concepts -sidebar: lb4_sidebar -permalink: /doc/en/lb4/Concepts.html ---- - -LoopBack 4 defines some key building blocks to represent different -responsibilities for typical API and/or Microservice applications. - -![Key concepts overview diagram](imgs/key-concepts-overview-diagram.png) - -- [**Application**](Application.md): The central class for setting up all of - your module’s components, controllers, servers and bindings. The Application - class extends [Context](Context.md) and provides the controls for starting and - stopping its associated servers. - -- [**Server**](Server.md): An implementation for inbound transports/protocols - such as REST (http, https), gRPC (http2) and graphQL (http, https). It - typically listens on a specific endpoint (protocol/host/port), handles - incoming requests, and then returns appropriate responses. - -- [**Controller**](Controllers.md): A class that implements operations defined - by the application’s REST API. It implements an application’s business logic - and acts as a bridge between the HTTP/REST API and domain/database models. A - Controller operates only on processed input and abstractions of backend - services / databases. - -- [**Interceptors**](Interceptors.md): A function that intercepts static or - instance method invocations on a class or object. - -- [**Route**](Routes.md): The mapping between your API specification and an - Operation. It tells LoopBack which Operation to `invoke()` when given an HTTP - request. - -- [**Sequence**](Sequence.md): A stateless grouping of - [Actions](Sequence.md#actions) that control how a Server responds to requests. - -- [**Model**](Model.md): The definition of an object in respect to the - datasource juggler. The `@loopback/repository` module provides special - decorators for adding metadata to TypeScript/JavaScript classes to use them - with the legacy implementation of DataSource Juggler. In addition, - `@loopback/repository-json-schema` module uses the decorators' metadata to - build a matching JSON Schema. - -- [**DataSources**](DataSources.md): A named configuration for a Connector - instance that represents data in an external system. - -- [**Repository**](Repositories.md): A type of service that represents a - collection of data within a DataSource. - -- [**Relation**](Relations.md): A mapping between two models which describes a - real world link between them and exposes CRUD APIs based on the configuration. - -- [**Decorator**](Decorators.md): The pattern used to annotate or modify your - class declarations and their members with metadata. diff --git a/docs/site/Reference.md b/docs/site/Reference.md index f360ac412b49..de5b12b028ec 100644 --- a/docs/site/Reference.md +++ b/docs/site/Reference.md @@ -1,6 +1,6 @@ --- lang: en -title: 'Reference' +title: 'Reference guides' keywords: LoopBack 4.0, LoopBack 4, Node.js, TypeScript, OpenAPI sidebar: lb4_sidebar permalink: /doc/en/lb4/Reference.html diff --git a/docs/site/Using-components.md b/docs/site/Using-components.md deleted file mode 100644 index 12a285398aef..000000000000 --- a/docs/site/Using-components.md +++ /dev/null @@ -1,75 +0,0 @@ ---- -lang: en -title: 'Using components' -keywords: LoopBack 4.0, LoopBack 4, Node.js, TypeScript, OpenAPI -sidebar: lb4_sidebar -permalink: /doc/en/lb4/Using-components.html ---- - -Components serve as a vehicle to group third-party contributions to allow easier -extensibility of your Application, see [Components](Components.md) for more -details. - -Components can be added to your application using the `app.component()` method. - -The following is an example of installing and using a component. - -Install the following dependencies: - -```sh -npm install --save @loopback/authentication -``` - -To load the component in your application: - -```ts -import {RestApplication} from '@loopback/rest'; -import {AuthenticationComponent} from '@loopback/authentication'; - -const app = new RestApplication(); -// Add component to Application, which provides bindings used to resolve -// authenticated requests in a Sequence. -app.component(AuthenticationComponent); -``` - -## Available components - -LoopBack ships the following components: - -### BootComponent - -- [@loopback/boot](Booting-an-Application.md) - -### RestComponent - -- [@loopback/rest](Server.md) - -### RestExplorerComponent - -- [@loopback/rest-explorer](Self-hosted-REST-API-Explorer.md) - -### CrudRestComponent - -- [@loopback/rest-crud](Creating-CRUD-REST-apis.md) - -### AuthenticationComponent - -- [@loopback/authentication](Loopback-component-authentication.md) - -### AuthorizationComponent - -- [@loopback/authorization](Loopback-component-authorization.md) - -### Lb3AppBooterComponent - -- [@loopback/booter-lb3app](Boot-and-Mount-a-LoopBack-3-application.md) - -### CronComponent - -- [@loopback/cron](Running-cron-jobs.md) - -### Cloud native extensions - -- Health check: [@loopback/extension-health](Health.md) (Experimental) -- Metrics for Prometheus: [@loopback/extension-metrics](Metrics.md) - (Experimental) diff --git a/docs/site/sidebars/lb4_sidebar.yml b/docs/site/sidebars/lb4_sidebar.yml index c04af7b5c493..a6089819c37f 100644 --- a/docs/site/sidebars/lb4_sidebar.yml +++ b/docs/site/sidebars/lb4_sidebar.yml @@ -23,126 +23,159 @@ children: url: Inside-LoopBack-Application.html output: 'web, pdf' -- title: 'Key concepts' - url: Concepts.html +- title: 'Tutorials' + url: Tutorials.html output: 'web, pdf' children: - - title: 'Application' - url: Application.html - output: 'web, pdf' - - - title: 'Server' - url: Server.html + - title: 'Todo Tutorial' + url: todo-tutorial.html output: 'web, pdf' + children: - - title: 'Controllers' - url: Controllers.html - output: 'web, pdf' + - title: 'Create your app scaffolding' + url: todo-tutorial-scaffolding.html + output: 'web, pdf' - - title: 'Models' - url: Model.html - output: 'web, pdf' + - title: 'Add the Todo model' + url: todo-tutorial-model.html + output: 'web, pdf' - - title: 'Relations' - url: Relations.html - output: 'web, pdf' - children: + - title: 'Add a Datasource' + url: todo-tutorial-datasource.html + output: 'web, pdf' - - title: 'HasMany Relation' - url: HasMany-relation.html + - title: 'Add a Repository' + url: todo-tutorial-repository.html output: 'web, pdf' - - title: 'BelongsTo Relation' - url: BelongsTo-relation.html + - title: 'Add a Controller' + url: todo-tutorial-controller.html output: 'web, pdf' - - title: 'HasOne Relation' - url: HasOne-relation.html + - title: 'Putting it all together' + url: todo-tutorial-putting-it-together.html output: 'web, pdf' - - title: 'DataSources' - url: DataSources.html - output: 'web, pdf' + - title: 'Bonus: Integrate with a geo-coding service' + url: todo-tutorial-geocoding-service.html + output: 'web, pdf' - - title: 'Repositories' - url: Repositories.html + - title: 'TodoList Tutorial' + url: todo-list-tutorial.html output: 'web, pdf' children: - - title: 'Database Transactions' - url: Using-database-transactions.html + - title: 'Add TodoList Model' + url: todo-list-tutorial-model.html output: 'web, pdf' - - title: 'Services' - url: Services.html - output: 'web, pdf' + - title: 'Add TodoList Repository' + url: todo-list-tutorial-repository.html + output: 'web, pdf' - - title: 'Interceptors' - url: Interceptors.html - output: 'web, pdf' + - title: 'Add Model Relations' + url: todo-list-tutorial-relations.html + output: 'web, pdf' + children: - - title: 'Life cycle events and observers' - url: Life-cycle.html - output: 'web, pdf' + - title: 'Add a HasOne Relation' + url: todo-list-tutorial-has-one-relation.html + output: 'web, pdf' - - title: 'Routes' - url: Routes.html - output: 'web, pdf' + - title: 'Add TodoList Controller' + url: todo-list-tutorial-controller.html + output: 'web, pdf' - - title: 'Sequence' - url: Sequence.html + - title: 'Running on relational databases' + url: todo-list-tutorial-sqldb.html + output: 'web, pdf' + + - title: 'SOAP Web Service Tutorial' + url: soap-calculator-tutorial.html output: 'web, pdf' children: - - title: 'Routing requests' - url: Routing-requests.html + - title: 'SOAP Web Service Overview' + url: soap-calculator-tutorial-web-service-overview.html output: 'web, pdf' - - title: 'Parsing requests' - url: Parsing-requests.html + - title: 'App scaffolding' + url: soap-calculator-tutorial-scaffolding.html output: 'web, pdf' - - title: 'Middleware' - url: Middleware.html + - title: 'Add a Datasource' + url: soap-calculator-tutorial-add-datasource.html + output: 'web, pdf' + + - title: 'Add a Service' + url: soap-calculator-tutorial-add-service.html + output: 'web, pdf' + + - title: 'Add a Controller' + url: soap-calculator-tutorial-add-controller.html + output: 'web, pdf' + + - title: 'Run and Test it' + url: soap-calculator-tutorial-run-and-test.html + output: 'web, pdf' + + - title: 'Creating an Express Application with LoopBack REST API' + url: express-with-lb4-rest-tutorial.html output: 'web, pdf' - - title: 'Using Express Middleware' - url: Express-middleware.html + - title: 'How to secure your LoopBack 4 application with JWT authentication' + url: Authentication-Tutorial.html output: 'web, pdf' - - title: 'Decorators' - url: Decorators.html + - title: 'Build large scale Node.js projects with LoopBack 4' + url: core-tutorial.html output: 'web, pdf' children: - - title: 'OpenAPI Decorators' - url: Decorators_openapi.html - output: 'web, pdf' + - title: 'Introduction of the application scenario' + url: core-tutorial-part1.html + output: 'web, pdf' - - title: 'Dependency Injection Decorator' - url: Decorators_inject.html - output: 'web, pdf' + - title: 'Architectural challenges' + url: core-tutorial-part2.html + output: 'web, pdf' - - title: 'Authentication Decorator' - url: Decorators_authenticate.html - output: 'web, pdf' + - title: 'Context in action' + url: core-tutorial-part3.html + output: 'web, pdf' - - title: 'Service Decorators' - url: Decorators_service.html - output: 'web, pdf' + - title: 'Dependency injection' + url: core-tutorial-part4.html + output: 'web, pdf' - - title: 'Repository Decorators' - url: Decorators_repository.html - output: 'web, pdf' + - title: 'Extension point and extensions' + url: core-tutorial-part5.html + output: 'web, pdf' - - title: 'Mixins' - url: Mixin.html - output: 'web, pdf' + - title: 'Interception' + url: core-tutorial-part6.html + output: 'web, pdf' - - title: 'Error handling' - url: Error-handling.html - output: 'web, pdf' + - title: 'Observation of life cycle events' + url: core-tutorial-part7.html + output: 'web, pdf' + + - title: 'Configuration' + url: core-tutorial-part8.html + output: 'web, pdf' + + - title: 'Discover and load artifacts by convention' + url: core-tutorial-part9.html + output: 'web, pdf' + + - title: 'Advanced Recipes' + url: core-tutorial-part10.html + output: 'web, pdf' + + - title: 'Summary' + url: core-tutorial-part11.html + output: 'web, pdf' - title: 'Usage Scenarios' url: Usage-scenarios.html @@ -286,6 +319,10 @@ children: url: Appsody-LoopBack.html output: 'web, pdf' + - title: 'Using Express Middleware' + url: Express-middleware.html + output: 'web, pdf' + - title: 'Serving Static Files' url: Serving-static-files.html output: 'web, pdf' @@ -314,45 +351,6 @@ children: url: Validation-ORM-layer.html output: 'web, pdf' -- title: 'Behind the Scenes' - url: Behind-the-scene.html - output: 'web, pdf' - children: - - - title: 'Context' - url: Context.html - output: 'web, pdf' - - - title: 'Binding' - url: Binding.html - output: 'web, pdf' - - - title: 'Dependency Injection' - url: Dependency-injection.html - output: 'web, pdf' - children: - - - title: 'Reserved binding keys' - url: Reserved-binding-keys.html - output: 'web, pdf' - - - title: 'Components' - url: Components.html - output: 'web, pdf' - - - title: 'Request/response cycle' - url: Request-response-cycle.html - output: 'web, pdf' - -- title: 'Booting an Application' - url: Booting-an-Application.html - output: 'web, pdf' - -- title: 'Using Components' - url: Using-components.html - output: 'web, pdf' - children: - - title: 'Self-hosted REST API Explorer' url: Self-hosted-rest-api-explorer.html output: 'web, pdf' @@ -381,455 +379,490 @@ children: url: Metrics.html output: 'web, pdf' -- title: 'Extending LoopBack 4' - url: Extending-LoopBack-4.html +- title: 'Behind the Scenes' + url: Behind-the-scene.html output: 'web, pdf' children: - - title: 'Creating components' - url: Creating-components.html + - title: 'Crafting LoopBack 4' + url: Crafting-LoopBack-4.html output: 'web, pdf' - - title: 'Creating decorators' - url: Creating-decorators.html + - title: 'Application' + url: Application.html output: 'web, pdf' - - title: 'Contributing REST API' - url: 'creating-components-rest-api.html' + - title: 'Server' + url: Server.html output: 'web, pdf' - - title: 'Creating services' - url: 'creating-components-services.html' + - title: 'Controllers' + url: Controllers.html output: 'web, pdf' - - title: 'Creating servers' - url: Creating-servers.html + - title: 'Models' + url: Model.html output: 'web, pdf' - - title: 'Extension point and extensions' - url: Extension-point-and-extensions.html + - title: 'Relations' + url: Relations.html output: 'web, pdf' + children: - - title: 'Extending request body parsing' - url: Extending-request-body-parsing.html - output: 'web, pdf' + - title: 'HasMany Relation' + url: HasMany-relation.html + output: 'web, pdf' - - title: 'Extension life cycle' - url: Extension-life-cycle.html - output: 'web, pdf' + - title: 'BelongsTo Relation' + url: BelongsTo-relation.html + output: 'web, pdf' - - title: 'Extending OpenAPI specification' - url: Extending-OpenAPI-specification.html - output: 'web, pdf' + - title: 'HasOne Relation' + url: HasOne-relation.html + output: 'web, pdf' - - title: 'Extending Model API builder' - url: Extending-Model-API-builder.html - output: 'web, pdf' - - - title: 'Testing your extension' - url: Testing-your-extension.html + - title: 'DataSources' + url: DataSources.html output: 'web, pdf' -- title: 'Crafting LoopBack 4' - url: Crafting-LoopBack-4.html - output: 'web, pdf' - -- title: 'Tutorials' - url: Tutorials.html - output: 'web, pdf' - children: - - - title: 'Todo Tutorial' - url: todo-tutorial.html + - title: 'Repositories' + url: Repositories.html output: 'web, pdf' children: - - title: 'Create your app scaffolding' - url: todo-tutorial-scaffolding.html - output: 'web, pdf' - - - title: 'Add the Todo model' - url: todo-tutorial-model.html - output: 'web, pdf' - - - title: 'Add a Datasource' - url: todo-tutorial-datasource.html + - title: 'Database Transactions' + url: Using-database-transactions.html output: 'web, pdf' - - title: 'Add a Repository' - url: todo-tutorial-repository.html - output: 'web, pdf' + - title: 'Services' + url: Services.html + output: 'web, pdf' - - title: 'Add a Controller' - url: todo-tutorial-controller.html - output: 'web, pdf' + - title: 'Interceptors' + url: Interceptors.html + output: 'web, pdf' - - title: 'Putting it all together' - url: todo-tutorial-putting-it-together.html - output: 'web, pdf' + - title: 'Life cycle events and observers' + url: Life-cycle.html + output: 'web, pdf' - - title: 'Bonus: Integrate with a geo-coding service' - url: todo-tutorial-geocoding-service.html - output: 'web, pdf' + - title: 'Routes' + url: Routes.html + output: 'web, pdf' - - title: 'TodoList Tutorial' - url: todo-list-tutorial.html + - title: 'Sequence' + url: Sequence.html output: 'web, pdf' children: - - title: 'Add TodoList Model' - url: todo-list-tutorial-model.html - output: 'web, pdf' - - - title: 'Add TodoList Repository' - url: todo-list-tutorial-repository.html - output: 'web, pdf' - - - title: 'Add Model Relations' - url: todo-list-tutorial-relations.html + - title: 'Routing requests' + url: Routing-requests.html output: 'web, pdf' - children: - - title: 'Add a HasOne Relation' - url: todo-list-tutorial-has-one-relation.html - output: 'web, pdf' - - - title: 'Add TodoList Controller' - url: todo-list-tutorial-controller.html + - title: 'Parsing requests' + url: Parsing-requests.html output: 'web, pdf' - - title: 'Running on relational databases' - url: todo-list-tutorial-sqldb.html - output: 'web, pdf' + - title: 'Middleware' + url: Middleware.html + output: 'web, pdf' - - title: 'SOAP Web Service Tutorial' - url: soap-calculator-tutorial.html + - title: 'Decorators' + url: Decorators.html output: 'web, pdf' children: - - title: 'SOAP Web Service Overview' - url: soap-calculator-tutorial-web-service-overview.html - output: 'web, pdf' - - - title: 'App scaffolding' - url: soap-calculator-tutorial-scaffolding.html + - title: 'OpenAPI Decorators' + url: Decorators_openapi.html output: 'web, pdf' - - title: 'Add a Datasource' - url: soap-calculator-tutorial-add-datasource.html + - title: 'Dependency Injection Decorator' + url: Decorators_inject.html output: 'web, pdf' - - title: 'Add a Service' - url: soap-calculator-tutorial-add-service.html + - title: 'Authentication Decorator' + url: Decorators_authenticate.html output: 'web, pdf' - - title: 'Add a Controller' - url: soap-calculator-tutorial-add-controller.html + - title: 'Service Decorators' + url: Decorators_service.html output: 'web, pdf' - - title: 'Run and Test it' - url: soap-calculator-tutorial-run-and-test.html + - title: 'Repository Decorators' + url: Decorators_repository.html output: 'web, pdf' - - title: 'Creating an Express Application with LoopBack REST API' - url: express-with-lb4-rest-tutorial.html + - title: 'Mixins' + url: Mixin.html output: 'web, pdf' - - title: 'How to secure your LoopBack 4 application with JWT authentication' - url: Authentication-Tutorial.html + - title: 'Error handling' + url: Error-handling.html output: 'web, pdf' - - title: 'Build large scale Node.js projects with LoopBack 4' - url: core-tutorial.html + - title: 'Context' + url: Context.html output: 'web, pdf' - children: - - - title: 'Introduction of the application scenario' - url: core-tutorial-part1.html - output: 'web, pdf' - - - title: 'Architectural challenges' - url: core-tutorial-part2.html - output: 'web, pdf' - - - title: 'Context in action' - url: core-tutorial-part3.html - output: 'web, pdf' - - - title: 'Dependency injection' - url: core-tutorial-part4.html - output: 'web, pdf' - - - title: 'Extension point and extensions' - url: core-tutorial-part5.html - output: 'web, pdf' - - - title: 'Interception' - url: core-tutorial-part6.html - output: 'web, pdf' - - - title: 'Observation of life cycle events' - url: core-tutorial-part7.html - output: 'web, pdf' - - title: 'Configuration' - url: core-tutorial-part8.html - output: 'web, pdf' + - title: 'Binding' + url: Binding.html + output: 'web, pdf' - - title: 'Discover and load artifacts by convention' - url: core-tutorial-part9.html - output: 'web, pdf' + - title: 'Dependency Injection' + url: Dependency-injection.html + output: 'web, pdf' + children: - - title: 'Advanced Recipes' - url: core-tutorial-part10.html + - title: 'Reserved binding keys' + url: Reserved-binding-keys.html output: 'web, pdf' - - title: 'Summary' - url: core-tutorial-part11.html - output: 'web, pdf' - -- title: 'Examples' - url: Examples.html - output: 'web, pdf' - -- title: 'CLI References' - url: Command-line-interface.html - output: 'web, pdf' - children: - - - title: 'Application generator' - url: Application-generator.html + - title: 'Components' + url: Components.html output: 'web, pdf' - - title: 'Controller generator' - url: Controller-generator.html + - title: 'Request/response cycle' + url: Request-response-cycle.html output: 'web, pdf' - - title: 'DataSource generator' - url: DataSource-generator.html + - title: 'Booting an Application' + url: Booting-an-Application.html output: 'web, pdf' - - title: 'Import models from LoopBack 3' - url: Importing-LB3-models.html - output: 'web, pdf' +- title: 'Best practices' + url: Best-practices.html + output: 'web, pdf' + children: - - title: 'Model generator' - url: Model-generator.html + - title: 'Defining the API using code-first approach' + url: Defining-the-API-using-code-first-approach.html output: 'web, pdf' - - title: 'Model discovery' - url: Discovering-models.html + - title: 'Defining your testing strategy' + url: Defining-your-testing-strategy.html output: 'web, pdf' - - title: 'Relation generator' - url: Relation-generator.html + - title: 'Testing your application' + url: Testing-your-application.html output: 'web, pdf' - - title: 'Repository generator' - url: Repository-generator.html - output: 'web, pdf' +- title: 'Reference guides' + url: Reference.html + output: 'web, pdf' + children: - - title: 'REST CRUD model endpoints generator' - url: Rest-Crud-generator.html + - title: 'Examples' + url: Examples.html output: 'web, pdf' - - title: 'Service generator' - url: Service-generator.html + - title: 'API docs' + url: apidocs.index.html output: 'web, pdf' - - title: 'OpenAPI generator' - url: OpenAPI-generator.html + - title: 'CLI References' + url: Command-line-interface.html output: 'web, pdf' + children: - - title: 'Life cycle observer generator' - url: Life-cycle-observer-generator.html - output: 'web, pdf' + - title: 'Application generator' + url: Application-generator.html + output: 'web, pdf' - - title: 'Interceptor generator' - url: Interceptor-generator.html - output: 'web, pdf' + - title: 'Controller generator' + url: Controller-generator.html + output: 'web, pdf' - - title: 'Extension generator' - url: Extension-generator.html - output: 'web, pdf' + - title: 'DataSource generator' + url: DataSource-generator.html + output: 'web, pdf' - - title: 'Download examples' - url: Download-examples.html - output: 'web, pdf' + - title: 'Import models from LoopBack 3' + url: Importing-LB3-models.html + output: 'web, pdf' - - title: 'Update project dependencies' - url: Update-generator.html - output: 'web, pdf' + - title: 'Model generator' + url: Model-generator.html + output: 'web, pdf' - - title: 'Generate copyright/license headers' - url: Copyright-generator.html - output: 'web, pdf' + - title: 'Model discovery' + url: Discovering-models.html + output: 'web, pdf' -- title: 'Connectors reference' - url: Connectors-reference.html - output: 'web' - children: + - title: 'Relation generator' + url: Relation-generator.html + output: 'web, pdf' - - title: 'Memory connector' - url: Memory-connector.html - output: 'web, pdf' + - title: 'Repository generator' + url: Repository-generator.html + output: 'web, pdf' - - title: 'Database connectors' - url: Database-connectors.html - output: 'web' - children: + - title: 'REST CRUD model endpoints generator' + url: Rest-Crud-generator.html + output: 'web, pdf' - - title: 'Cassandra connector' - url: Cassandra-connector.html + - title: 'Service generator' + url: Service-generator.html output: 'web, pdf' - - title: 'Cloudant connector' - url: Cloudant-connector.html + - title: 'OpenAPI generator' + url: OpenAPI-generator.html output: 'web, pdf' - - title: 'DashDB connector' - url: DashDB.html + - title: 'Life cycle observer generator' + url: Life-cycle-observer-generator.html output: 'web, pdf' - - title: 'IBM Db2 (for Linux, Unix, Windows) connector' - url: DB2-connector.html + - title: 'Interceptor generator' + url: Interceptor-generator.html output: 'web, pdf' - - title: 'IBM Db2 for i connector' - url: DB2-for-i-connector.html + - title: 'Extension generator' + url: Extension-generator.html output: 'web, pdf' - - title: 'IBM Db2 for z/OS connector' - url: DB2-for-z-OS-connector.html + - title: 'Download examples' + url: Download-examples.html output: 'web, pdf' - - title: Informix connector - url: Informix.html + - title: 'Update project dependencies' + url: Update-generator.html output: 'web, pdf' - - title: 'MongoDB connector' - url: MongoDB-connector.html + - title: 'Generate copyright/license headers' + url: Copyright-generator.html output: 'web, pdf' + + - title: 'Connectors reference' + url: Connectors-reference.html + output: 'web' + children: + + - title: 'Memory connector' + url: Memory-connector.html + output: 'web, pdf' + + - title: 'Database connectors' + url: Database-connectors.html + output: 'web' children: - - title: 'MongoDB Connector Tutorial' - url: Connecting-to-MongoDB.html + - title: 'Cassandra connector' + url: Cassandra-connector.html output: 'web, pdf' - - title: 'Using MongoLab' - url: Using-MongoLab.html + - title: 'Cloudant connector' + url: Cloudant-connector.html output: 'web, pdf' - - title: 'MySQL connector' - url: MySQL-connector.html - output: 'web, pdf' - children: + - title: 'DashDB connector' + url: DashDB.html + output: 'web, pdf' - - title: 'MySQL Connector Tutorial' - url: Connecting-to-MySQL.html + - title: 'IBM Db2 (for Linux, Unix, Windows) connector' + url: DB2-connector.html output: 'web, pdf' - - title: 'Oracle connector' - url: Oracle-connector.html - output: 'web, pdf' - children: + - title: 'IBM Db2 for i connector' + url: DB2-for-i-connector.html + output: 'web, pdf' - - title: 'Installing the Oracle connector' - url: Installing-the-Oracle-connector.html + - title: 'IBM Db2 for z/OS connector' + url: DB2-for-z-OS-connector.html output: 'web, pdf' - - title: 'Oracle connector tutorial' - url: Connecting-to-Oracle.html + - title: Informix connector + url: Informix.html output: 'web, pdf' - - title: 'PostgreSQL connector' - url: PostgreSQL-connector.html - output: 'web, pdf' - children: + - title: 'MongoDB connector' + url: MongoDB-connector.html + output: 'web, pdf' + children: - - title: 'PostgreSQL connector tutorial' - url: Connecting-to-PostgreSQL.html + - title: 'MongoDB Connector Tutorial' + url: Connecting-to-MongoDB.html + output: 'web, pdf' + + - title: 'Using MongoLab' + url: Using-MongoLab.html + output: 'web, pdf' + + - title: 'MySQL connector' + url: MySQL-connector.html output: 'web, pdf' + children: - - title: 'Redis connector' - url: Redis-connector.html - output: 'web, pdf' + - title: 'MySQL Connector Tutorial' + url: Connecting-to-MySQL.html + output: 'web, pdf' - - title: 'Redis key-value connector' - url: kv-redis-connector.html - output: 'web, pdf' - children: + - title: 'Oracle connector' + url: Oracle-connector.html + output: 'web, pdf' + children: - - title: 'KV connector example' - url: Example-kv-connector.html + - title: 'Installing the Oracle connector' + url: Installing-the-Oracle-connector.html + output: 'web, pdf' + + - title: 'Oracle connector tutorial' + url: Connecting-to-Oracle.html + output: 'web, pdf' + + - title: 'PostgreSQL connector' + url: PostgreSQL-connector.html output: 'web, pdf' + children: - - title: 'SQL Server connector' - url: SQL-Server-connector.html - output: 'web, pdf' - children: + - title: 'PostgreSQL connector tutorial' + url: Connecting-to-PostgreSQL.html + output: 'web, pdf' - - title: 'SQL Server connector tutorial' - url: Connecting-to-Microsoft-SQL-Server.html + - title: 'Redis connector' + url: Redis-connector.html output: 'web, pdf' - - title: 'SQLite3 connector' - url: SQLite3.html - output: 'web, pdf' + - title: 'Redis key-value connector' + url: kv-redis-connector.html + output: 'web, pdf' + children: - - title: 'z/OS Connect Enterprise Edition connector' - url: zOSconnectEE.html - output: 'web, pdf' + - title: 'KV connector example' + url: Example-kv-connector.html + output: 'web, pdf' - - title: 'Other connectors' - url: Other-connectors.html - output: 'web' - children: + - title: 'SQL Server connector' + url: SQL-Server-connector.html + output: 'web, pdf' + children: - - title: 'JSON RPC connector' - url: JSON-RPC-connector.html - output: 'web, pdf' + - title: 'SQL Server connector tutorial' + url: Connecting-to-Microsoft-SQL-Server.html + output: 'web, pdf' - - title: 'MQ Light connector' - url: MQLight-connector.html - output: 'web, pdf' + - title: 'SQLite3 connector' + url: SQLite3.html + output: 'web, pdf' - - title: 'REST connector' - url: REST-connector.html - output: 'web, pdf' + - title: 'z/OS Connect Enterprise Edition connector' + url: zOSconnectEE.html + output: 'web, pdf' + + - title: 'Other connectors' + url: Other-connectors.html + output: 'web' children: - - title: 'REST connector example' - url: REST-connector-example.html + - title: 'JSON RPC connector' + url: JSON-RPC-connector.html output: 'web, pdf' - - title: 'SOAP connector' - url: SOAP-connector.html - output: 'web, pdf' - children: + - title: 'MQ Light connector' + url: MQLight-connector.html + output: 'web, pdf' - - title: 'Strong-soap' - url: Strong-soap.html + - title: 'REST connector' + url: REST-connector.html output: 'web, pdf' + children: + + - title: 'REST connector example' + url: REST-connector-example.html + output: 'web, pdf' - - title: 'SOAP connector example' - url: SOAP-Connector-example.html + - title: 'SOAP connector' + url: SOAP-connector.html output: 'web, pdf' + children: + + - title: 'Strong-soap' + url: Strong-soap.html + output: 'web, pdf' - - title: 'Connecting to SOAP web services' - url: Connecting-to-SOAP.html + - title: 'SOAP connector example' + url: SOAP-Connector-example.html + output: 'web, pdf' + + - title: 'Connecting to SOAP web services' + url: Connecting-to-SOAP.html + output: 'web, pdf' + + - title: 'OpenAPI connector' + url: OpenAPI-connector.html output: 'web, pdf' - - title: 'OpenAPI connector' - url: OpenAPI-connector.html + - title: 'Community connectors' + url: Community-connectors.html output: 'web, pdf' - - title: 'Community connectors' - url: Community-connectors.html + - title: 'Change logs' + url: changelog.index.html + output: 'web, pdf' + + - title: 'Considerations for GDPR readiness' + url: Deploy-for-GDPR-readiness.html + output: 'web, pdf' + +- title: 'Extending LoopBack 4' + url: Extending-LoopBack-4.html + output: 'web, pdf' + children: + + - title: 'Creating components' + url: Creating-components.html + output: 'web, pdf' + + - title: 'Creating decorators' + url: Creating-decorators.html + output: 'web, pdf' + + - title: 'Contributing REST API' + url: 'creating-components-rest-api.html' + output: 'web, pdf' + + - title: 'Creating services' + url: 'creating-components-services.html' + output: 'web, pdf' + + - title: 'Creating servers' + url: Creating-servers.html + output: 'web, pdf' + + - title: 'Extension point and extensions' + url: Extension-point-and-extensions.html output: 'web, pdf' -- title: 'API docs' - url: apidocs.index.html + - title: 'Extending request body parsing' + url: Extending-request-body-parsing.html + output: 'web, pdf' + + - title: 'Extension life cycle' + url: Extension-life-cycle.html + output: 'web, pdf' + + - title: 'Extending OpenAPI specification' + url: Extending-OpenAPI-specification.html + output: 'web, pdf' + + - title: 'Extending Model API builder' + url: Extending-Model-API-builder.html + output: 'web, pdf' + + - title: 'Testing your extension' + url: Testing-your-extension.html + output: 'web, pdf' + +- title: 'Contribute to LoopBack 4' + url: code-contrib-lb4.html + output: 'web, pdf' + children: + + - title: 'Submitting a pull request to LoopBack 4' + url: submitting_a_pr.html + output: 'web, pdf' + +- title: 'FAQ' + url: FAQ.html output: 'web, pdf' - title: 'Migration guide' @@ -951,46 +984,3 @@ children: - title: 'Features not planned' url: migration-not-planned.html output: 'web, pdf' - -- title: 'Best practices' - url: Best-practices.html - output: 'web, pdf' - children: - - - title: 'Defining the API using code-first approach' - url: Defining-the-API-using-code-first-approach.html - output: 'web, pdf' - - - title: 'Defining your testing strategy' - url: Defining-your-testing-strategy.html - output: 'web, pdf' - - - title: 'Testing your application' - url: Testing-your-application.html - output: 'web, pdf' - -- title: 'Contribute to LoopBack 4' - url: code-contrib-lb4.html - output: 'web, pdf' - children: - - - title: 'Submitting a pull request to LoopBack 4' - url: submitting_a_pr.html - output: 'web, pdf' - -- title: 'Change logs' - url: changelog.index.html - output: 'web, pdf' - -- title: 'Reference' - url: Reference.html - output: 'web, pdf' - children: - - - title: 'Considerations for GDPR readiness' - url: Deploy-for-GDPR-readiness.html - output: 'web, pdf' - -- title: 'FAQ' - url: FAQ.html - output: 'web, pdf'