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'