open-index/open-npm huggingface dataset:
npm package: @o3r/analytics
Description: This module provides a framework to capture, store and report multiple events (ui, performance etc.) emitted by an Otter Application.
Latest version: 14.1.6

<h1 align="center">Otter Analytics</h1>
<p align="center">
  <img src="https://raw.githubusercontent.com/AmadeusITGroup/otter/main/assets/logo/otter.png" alt="Super cute Otter!" width="40%"/>
</p>

This package is an [Otter Framework Module](https://github.com/AmadeusITGroup/otter/tree/main/docs/core/MODULE.md).

<br />
<br />

## Description

[![Stable Version](https://img.shields.io/npm/v/@o3r/analytics?style=for-the-badge)](https://www.npmjs.com/package/@o3r/analytics)
[![Bundle Size](https://img.shields.io/bundlephobia/min/@o3r/analytics?color=green&style=for-the-badge)](https://www.npmjs.com/package/@o3r/analytics)

This module provides a framework to capture, store and report multiple events (ui, performance etc.) emitted by an [Otter Application](https://github.com/AmadeusITGroup/otter).

## How to install

```shell
ng add @o3r/analytics
```

> [!WARNING]
> This module requires [@o3r/core](https://www.npmjs.com/package/@o3r/core) to be installed.

## Generators

Otter framework provides a set of code generators based on [Angular schematics](https://angular.io/guide/schematics).

| Schematics                 | Description                                                    | How to use                        |
| -------------------------- | -------------------------------------------------------------- | --------------------------------- |
| add                        | Include Otter analytics module in a library / application.     | `ng add @o3r/analytics`           |
| analytics-to-component     | Add analytics to an Otter component                            | `ng g analytics-to-component`     |

## More information

Find more information in the [documentation](https://github.com/AmadeusITGroup/otter/tree/main/docs/analytics/ANALYTICS.md).
npm package: @o3r/application
Description: This module provides development help to monitor your Otter Application
Latest version: 14.1.6

<h1 align="center">Otter application</h1>
<p align="center">
  <img src="https://raw.githubusercontent.com/AmadeusITGroup/otter/main/assets/logo/otter.png" alt="Super cute Otter!" width="40%"/>
</p>

This package is an [Otter Framework Module](https://github.com/AmadeusITGroup/otter/tree/main/docs/core/MODULE.md).
<br />
<br />

## Description

[![Stable Version](https://img.shields.io/npm/v/@o3r/application?style=for-the-badge)](https://www.npmjs.com/package/@o3r/application)
[![Bundle Size](https://img.shields.io/bundlephobia/min/@o3r/application?color=green&style=for-the-badge)](https://www.npmjs.com/package/@o3r/application)

This module provides development tools for your [Otter Application](https://github.com/AmadeusITGroup/otter).

## How to install

```shell
ng add @o3r/application
```

> [!WARNING]
> This module requires [@o3r/core](https://www.npmjs.com/package/@o3r/core) to be installed.
npm package: @o3r/components
Description: This module contains component-related features (Component replacement, CMS compatibility, helpers, pipes, debugging developer tools...)
It comes with an integrated ng builder to help you generate components compatible with Otter features (CMS integration
Latest version: 14.1.6

<h1 align="center">Otter components</h1>
<p align="center">
  <img src="https://raw.githubusercontent.com/AmadeusITGroup/otter/main/assets/logo/otter.png" alt="Super cute Otter!" width="40%"/>
</p>

This package is an [Otter Framework Module](https://github.com/AmadeusITGroup/otter/tree/main/docs/core/MODULE.md).
<br />
<br />

## Description

[![Stable Version](https://img.shields.io/npm/v/@o3r/components?style=for-the-badge)](https://www.npmjs.com/package/@o3r/components)
[![Bundle Size](https://img.shields.io/bundlephobia/min/@o3r/components?color=green&style=for-the-badge)](https://www.npmjs.com/package/@o3r/components)

This module contains component related features (Component replacement, CMS compatibility, helpers, pipes, debugging developer tools...)
It comes with an integrated ng builder to help you generate components compatible with Otter features (CMS integration, localization, etc.).

## How to install

```shell
ng add @o3r/components
```

> [!WARNING]
> This module requires [@o3r/core](https://www.npmjs.com/package/@o3r/core) to be installed.

## Description

Find more information in the [documentation](https://github.com/AmadeusITGroup/otter/tree/main/docs/components/).
npm package: @o3r/configuration
Description: This module contains configuration-related features such as CMS compatibility, Configuration override, store and debugging.
It enables your application runtime configuration and comes with an integrated ng builder to help you generate configurations suppo
Latest version: 14.1.6

<h1 align="center">Otter configuration</h1>
<p align="center">
  <img src="https://raw.githubusercontent.com/AmadeusITGroup/otter/main/assets/logo/otter.png" alt="Super cute Otter!" width="40%"/>
</p>

This package is an [Otter Framework Module](https://github.com/AmadeusITGroup/otter/tree/main/docs/core/MODULE.md).
<br />
<br />

## Description

[![Stable Version](https://img.shields.io/npm/v/@o3r/configuration?style=for-the-badge)](https://www.npmjs.com/package/@o3r/configuration)
[![Bundle Size](https://img.shields.io/bundlephobia/min/@o3r/configuration?color=green&style=for-the-badge)](https://www.npmjs.com/package/@o3r/configuration)

This module contains configuration-related features (compatibility with the generic configuration UI -- also known as CMS -- being used, configuration override, store, and debugging).
It comes with an integrated ng builder to help you generate configurations supporting the Otter CMS integration.

The aim of implementing `Configuration` inside components is to extract metadata from the application that will be used to override the application's configuration (such as the interface of a CMS).

## How to install

```shell
ng add @o3r/configuration
```

> [!WARNING]
> This module requires [@o3r/core](https://www.npmjs.com/package/@o3r/core) to be installed.

## Generators

The Otter framework provides a set of code generators based on [Angular schematics](https://angular.io/guide/schematics).

| Schematics                 | Description                                                       | How to use                        |
| -------------------------- |-------------------------------------------------------------------| --------------------------------- |
| add                        | Include the Otter configuration module in a library / application | `ng add @o3r/configuration`       |
| configuration-to-component | Add configuration to an Otter component                           | `ng g configuration-to-component` |


## More details

Find more information in the [documentation](https://github.com/AmadeusITGroup/otter/tree/main/docs/configuration/OVERVIEW.md).
npm package: @o3r/create
Description: Create a new Otter based application
Latest version: 14.1.6

<h1 align="center">Otter project initializer</h1>
<p align="center">
  <img src="https://raw.githubusercontent.com/AmadeusITGroup/otter/main/assets/logo/otter.png" alt="Super cute Otter!" width="40%"/>
</p>

## Description

[![Stable Version](https://img.shields.io/npm/v/@o3r/create?style=for-the-badge)](https://www.npmjs.com/package/@o3r/create)
[![Bundle Size](https://img.shields.io/bundlephobia/min/@o3r/create?color=green&style=for-the-badge)](https://www.npmjs.com/package/@o3r/create)

This package is an [NPM initializer](https://docs.npmjs.com/cli/v8/commands/npm-init) to generate a web application based on the [Otter Framework](https://github.com/AmadeusITGroup/otter).

## Create an Otter application

This package is simplifying the start of an [Otter Framework](https://github.com/AmadeusITGroup/otter) based application.

## Usage

```shell
npm create @o3r <project-name> -- [...options]
```

> [!WARNING]
> `yarn create` is not supported.

> [!WARNING]
> On Windows OS, [Git Bash terminal](https://gitforwindows.org/#bash) is not fully supported by different CLI used behind Otter project and can lead to execution error.
> We recommend to minimize its usage.

### Custom package manager

By default, the `npm` package manager will be used to generate the project, but you can generate an environment with a specific package manager using the `--package-manager` option:

```shell
npm create @o3r <project-name> -- --package-manager=yarn [...options]
```

> [!TIP]
> The option `--package-manager=yarn` can be simplified to `--yarn`.

> [!NOTE]
> At the moment, the `package-manager` option only supports `yarn` and `npm`.

### Custom registry

You can specify the npm's package registry to use.

```shell
npm create @o3r <project-name> --registry=<registry-url> -- [...options]
```

It will create a project with a `.npmrc` file configured to target the specified registry.
If the specified package manager is `yarn`, it will also configure the `.yarnrc.yml` file.

### Others available options

The generator accepts all the configurations from the Angular `ng new` command, see the [options list](https://angular.dev/cli/new#options).
On top of them, the following options can be provided to the initializer:

- `--yarn`: Enforce `yarn` package manager. This option will be ignored if `--package-manager` is already specified.
- `--yarn-version`: specify the version of yarn to use (default: `latest`)
- `--exact-o3r-version`: use a pinned version for [Otter packages](https://github.com/AmadeusITGroup/otter/blob/main/docs/README.md).
- `--preset <preset_name>`: the collection of Otter modules to install. If not provided, it defaults to `recommended`. The full list of presets is available in [@o3r/core](https://www.npmjs.com/package/@o3r/core#presets)
npm package: @o3r/eslint-config
Description: Recommended eslint v9+ configuration for Otter project
Latest version: 14.1.6

<h1 align="center">Otter ESLint config</h1>
<p align="center">
  <img src="https://raw.githubusercontent.com/AmadeusITGroup/otter/main/assets/logo/otter.png" alt="Super cute Otter!" width="40%"/>
</p>

This package is an [Otter Framework Module](https://github.com/AmadeusITGroup/otter/tree/main/docs/core/MODULE.md).
<br />
<br />

## Description

[![Stable Version](https://img.shields.io/npm/v/@o3r/eslint-config?style=for-the-badge)](https://www.npmjs.com/package/@o3r/eslint-config)
[![Bundle Size](https://img.shields.io/bundlephobia/min/@o3r/eslint-config?color=green&style=for-the-badge)](https://www.npmjs.com/package/@o3r/eslint-config)

Recommended ESLint configuration for an Otter project with [ESLint FlatConfig](https://eslint.org/blog/2022/08/new-config-system-part-2/).

## How to install

```shell
ng add @o3r/eslint-config
```

## How to use

Example of configuration:
```javascript
import o3rConfig from '@o3r/eslint-config';

export default [
  ...o3rConfig,
  {
    name: 'my-project-rules',
    rules: {
      // ...
    }
  }
];
```
npm package: @o3r/eslint-plugin
Description: The module provides in-house eslint plugins to use in your own eslint configuration.
Latest version: 14.1.6

<h1 align="center">Otter eslint plugin</h1>
<p align="center">
  <img src="https://raw.githubusercontent.com/AmadeusITGroup/otter/main/assets/logo/otter.png" alt="Super cute Otter!" width="40%"/>
</p>

This package is an [Otter Framework Module](https://github.com/AmadeusITGroup/otter/tree/main/docs/core/MODULE.md).
<br />
<br />

## Description

[![Stable Version](https://img.shields.io/npm/v/@o3r/eslint-plugin?style=for-the-badge)](https://www.npmjs.com/package/@o3r/eslint-plugin)
[![Bundle Size](https://img.shields.io/bundlephobia/min/@o3r/eslint-plugin?color=green&style=for-the-badge)](https://www.npmjs.com/package/@o3r/eslint-plugin)

The module provides in-house eslint plugins to use in your own eslint configuration.

## How to install

```shell
ng add @o3r/eslint-plugin
```

> [!WARNING]
> This module requires [@o3r/core](https://www.npmjs.com/package/@o3r/core) to be installed.

## Rules

The list of rules is available in the [documentation](https://github.com/AmadeusITGroup/otter/tree/main/docs/linter/eslint-plugin/rules).
npm package: @o3r/extractors
Description: Extractors module of the Otter framework
Latest version: 14.1.6

<h1 align="center">Otter extractor</h1>
<p align="center">
  <img src="https://raw.githubusercontent.com/AmadeusITGroup/otter/main/assets/logo/otter.png" alt="Super cute Otter!" width="40%"/>
</p>

This package is an [Otter Framework Module](https://github.com/AmadeusITGroup/otter/tree/main/docs/core/MODULE.md).
<br />
<br />

## Description

[![Stable Version](https://img.shields.io/npm/v/@o3r/extractors?style=for-the-badge)](https://www.npmjs.com/package/@o3r/extractors)
[![Bundle Size](https://img.shields.io/bundlephobia/min/@o3r/extractors?color=green&style=for-the-badge)](https://www.npmjs.com/package/@o3r/extractors)

This module exposes utilities to extract your application metadata to interact with your CMS.

## How to install

```shell
ng add @o3r/extractors
```

> [!WARNING]
> This module requires [@o3r/core](https://www.npmjs.com/package/@o3r/core) to be installed.

## Description

This is a technical package used as dependency by [Otter modules](https://github.com/AmadeusITGroup/otter/tree/main/docs/core/MODULE.md) providing helpers to be used in [Angular Builders](https://angular.io/guide/cli-builder) development.
npm package: @o3r/forms
Description: This module provides utilities to enhance angular form (asynchronous decorator, additional validator, error store...).
Latest version: 14.1.6

<h1 align="center">Otter forms</h1>
<p align="center">
  <img src="https://raw.githubusercontent.com/AmadeusITGroup/otter/main/assets/logo/otter.png" alt="Super cute Otter!" width="40%"/>
</p>

This package is an [Otter Framework Module](https://github.com/AmadeusITGroup/otter/tree/main/docs/core/MODULE.md).
<br />
<br />

## Description

[![Stable Version](https://img.shields.io/npm/v/@o3r/forms?style=for-the-badge)](https://www.npmjs.com/package/@o3r/forms)
[![Bundle Size](https://img.shields.io/bundlephobia/min/@o3r/forms?color=green&style=for-the-badge)](https://www.npmjs.com/package/@o3r/forms)

One of the approaches for writing forms that Angular provides is called [model-driven or reactive forms](https://angular.io/guide/reactive-forms),
which _"provide a model-driven approach to handling form inputs whose values change over time"_. This type of form is applicable in many use cases,
but there are a couple of exceptions where additional utilities may be useful.

These use cases include:
* A container/presenter structure for components
* Handling form submission at page level
* Displaying the error message outside the form

To handle these, this module provides utilities to enhance the build of Angular reactive forms, including:
* An asynchronous decorator (`@AsyncInput`) to ensure subscriptions are handled if the references of the input observables change.
* Basic and custom validators to validate user input for accuracy and completeness.
* A dedicated NgRX store for form errors to have the possibility of displaying error messages outside the form component.
* Helper functions to handle the interactions with the forms.

## How to install

```shell
ng add @o3r/forms
```

> [!WARNING]
> This module requires [@o3r/core](https://www.npmjs.com/package/@o3r/core) to be installed.

## Details

Find more information in the [documentation](https://github.com/AmadeusITGroup/otter/tree/main/docs/forms).
npm package: @o3r/localization
Description: This module provides a runtime dynamic language/translation support and debug tools.
Latest version: 14.1.6

<h1 align="center">Otter localization</h1>
<p align="center">
  <img src="https://raw.githubusercontent.com/AmadeusITGroup/otter/main/assets/logo/otter.png" alt="Super cute Otter!" width="40%"/>
</p>

This package is an [Otter Framework Module](https://github.com/AmadeusITGroup/otter/tree/main/docs/core/MODULE.md).
<br />
<br />

## Description

[![Stable Version](https://img.shields.io/npm/v/@o3r/localization?style=for-the-badge)](https://www.npmjs.com/package/@o3r/localization)
[![Bundle Size](https://img.shields.io/bundlephobia/min/@o3r/localization?color=green&style=for-the-badge)](https://www.npmjs.com/package/@o3r/localization)

The localization module is built on top of an open source [ngx-translate](https://github.com/ngx-translate/core) library.
It provides the following features:

* Multiple [locales](https://github.com/angular/angular/tree/master/packages/common/locales) support, switchable at runtime.
* RTL (right-to-left) text direction support
* Translations loader using a specific endpoint or defaulting to local translation bundles 
* Fallback language and intelligent fallback support
* Translation of resource keys from templates (`*.html`) and from typescript (`*.ts`)
* Support for resource keys with parameters
* Custom `LocalizationConfiguration`
* Ability to toggle translations on and off for debugging (and additional debug tools)

## How to install

```shell
ng add @o3r/localization
```

> [!WARNING]
> This module requires [@o3r/core](https://www.npmjs.com/package/@o3r/core) to be installed.

## Generators

Otter framework provides a set of code generators based on [Angular schematics](https://angular.io/guide/schematics).

| Schematics                    | Description                                                 | How to use                           |
|-------------------------------|-------------------------------------------------------------|--------------------------------------|
| add                           | Include Otter localization module in a library/application. | `ng add @o3r/localization`           |
| localization-to-component     | Add localization architecture to an Otter component         | `ng g localization-to-component`     |
| localization-key-to-component | Add a localization key to an Otter component                | `ng g localization-key-to-component` |

## More details

Find more information in the [documentation](https://github.com/AmadeusITGroup/otter/blob/main/docs/localization/LOCALIZATION.md).
npm package: @o3r/mcp
Description: Experimental package — This module provides a MCP Server
Latest version: 14.1.6

<h1 align="center">Otter MCP</h1>
<p align="center">
  <img src="https://raw.githubusercontent.com/AmadeusITGroup/otter/main/assets/logo/otter.png" alt="Super cute Otter!" width="40%"/>
</p>

<br />
<br />

> [!WARNING]
> [Experimental](https://github.com/AmadeusITGroup/otter/blob/main/README.md#experimental)

## Description

A small example of an MCP server.

## How to use with VSCode

To add the Otter MCP server, you should first activate mcp with `"chat.mcp.enabled": true`.

> [!WARNING]
> If you are logged into VSCode with your company account,
> this setting may be grayed out. This may be due to your company's setting.

Then, in your `.vscode/mcp.json` add

```json5
{
  "Otter": {
    "type": "stdio",
    "command": "npx",
    "args": ["-y", "-p", "@o3r/mcp", "o3r-mcp-start"],
    "env": {
      // Help us improve Otter by setting this to true.
      // More details on our privacy policy: https://github.com/AmadeusITGroup/otter/blob/main/PRIVACY.md
      "O3R_METRICS": true
    }
  }
}
```

> [!NOTE]
> If you want to test the MCP server locally while you are working on it,
> you need to build it first with the command:
> - `yarn nx build mcp`
npm package: @o3r/mobile
Description: This package contains tooling useful for mobile applications.
Latest version: 14.1.6

<h1 align="center">Otter Mobile</h1>
<p align="center">
  <img src="https://raw.githubusercontent.com/AmadeusITGroup/otter/main/assets/logo/otter.png" alt="Super cute Otter!" width="40%"/>
</p>

This package is an [Otter Framework Module](https://github.com/AmadeusITGroup/otter/tree/main/docs/core/MODULE.md).
<br />
<br />

## Description

[![Stable Version](https://img.shields.io/npm/v/@o3r/mobile?style=for-the-badge)](https://www.npmjs.com/package/@o3r/mobile)
[![Bundle Size](https://img.shields.io/bundlephobia/min/@o3r/mobile?color=green&style=for-the-badge)](https://www.npmjs.com/package/@o3r/mobile)

This package contains tooling useful for mobile applications.

## How to install

```shell
ng add @o3r/mobile
```

> [!WARNING]
> This module requires [@o3r/core](https://www.npmjs.com/package/@o3r/core) to be installed.
npm package: @o3r/new-version
Description: Helpers to compute new version
Latest version: 14.1.6

<h1 align="center">Otter new version</h1>
<p align="center">
  <img src="https://raw.githubusercontent.com/AmadeusITGroup/otter/main/assets/logo/otter.png" alt="Super cute Otter!" width="40%"/>
</p>

## Description

[![Stable Version](https://img.shields.io/npm/v/@o3r/new-version?style=for-the-badge)](https://www.npmjs.com/package/@o3r/new-version)
[![Bundle Size](https://img.shields.io/bundlephobia/min/@o3r/new-version?color=green&style=for-the-badge)](https://www.npmjs.com/package/@o3r/new-version)

This module provides a tool to compute the next version number based on the branch names and tags.
npm package: @o3r/pipeline
Description: A package that provides toolchain related helpers.
Latest version: 14.1.6

<h1 align="center">Otter Pipeline</h1>
<p align="center">
  <img src="https://raw.githubusercontent.com/AmadeusITGroup/otter/main/assets/logo/otter.png" alt="Super cute Otter!" width="40%"/>
</p>

This package is an [Otter Framework Module](https://github.com/AmadeusITGroup/otter/tree/main/docs/core/MODULE.md).
<br />
<br />

## Description

[![Stable Version](https://img.shields.io/npm/v/@o3r/pipeline?style=for-the-badge)](https://www.npmjs.com/package/@o3r/pipeline)
[![Bundle Size](https://img.shields.io/bundlephobia/min/@o3r/pipeline?color=green&style=for-the-badge)](https://www.npmjs.com/package/@o3r/pipeline)

This module contains tooling around DevOps toolchains.

## How to install

```shell
ng add @o3r/pipeline
```

## Description

The `ng add` schematic for Otter Pipeline helps you set up a DevOps pipeline for your frontend project. This schematic configures the necessary CI runner and npm registry settings to streamline your development workflow.

### Properties

- `toolchain`: The DevOps toolchain to create. For now, only `GitHub` is supported.
- `runner`: The CI runner. Default is `ubuntu-latest`.
- `npmRegistry`: A custom npm registry. By default, the public one (https://registry.npmjs.org) will be used.

### Usage

Here is an example of how to use the `ng add` schematics with parameters:

```shell
ng add @o3r/pipeline --runner=windows-latest --npmRegistry=https://custom-registry.example.com
```

### Private NPM Registry

When a custom npm registry is provided, the schematic will automatically create a `.npmrc` (or a `.yarnrc`) file with the specified registry.
Additionally, it will set the necessary environment variables for the install task.

```yaml
- name: Install
  env:
    COREPACK_NPM_REGISTRY: https://custom-registry.example.com
    COREPACK_INTEGRITY_KEYS: ""
  shell: bash
  run: npm ci
```

If you choose to run the schematic without specifying an `npmRegistry`, you may need to manually apply these changes afterwards.

### GitHub workflow

The generated pipeline ensures that your code is built, tested and linted on every push or pull request to the main and release branches.

It also automates the versioning thanks to the [Otter - New Version GitHub Action](https://github.com/AmadeusITGroup/otter/tree/main/tools/github-actions/new-version#readme) and release process by creating a new release on GitHub and generating release notes.
npm package: @o3r/routing
Description: This module helps you to configure an Otter application's routing (POST parameter management, preloading strategy, guard recommendation).
Latest version: 14.1.6

<h1 align="center">Otter routing</h1>
<p align="center">
  <img src="https://raw.githubusercontent.com/AmadeusITGroup/otter/main/assets/logo/otter.png" alt="Super cute Otter!" width="40%"/>
</p>

This package is an [Otter Framework Module](https://github.com/AmadeusITGroup/otter/tree/main/docs/core/MODULE.md).
<br />
<br />

## Description

[![Stable Version](https://img.shields.io/npm/v/@o3r/routing?style=for-the-badge)](https://www.npmjs.com/package/@o3r/routing)
[![Bundle Size](https://img.shields.io/bundlephobia/min/@o3r/routing?color=green&style=for-the-badge)](https://www.npmjs.com/package/@o3r/routing)

This module helps you to configure an Otter application's routing
(POST parameter management, preloading strategy, guard recommendation).

## How to install

```shell
ng add @o3r/routing
```

> [!WARNING]
> This module requires [@o3r/core](https://www.npmjs.com/package/@o3r/core) to be installed.

## Description

Find more information in the [documentation](https://github.com/AmadeusITGroup/otter/tree/main/docs/routing/).
npm package: @o3r/schematics
Description: Schematics module of the Otter framework
Latest version: 14.1.6

<h1 align="center">Otter schematics</h1>
<p align="center">
  <img src="https://raw.githubusercontent.com/AmadeusITGroup/otter/main/assets/logo/otter.png" alt="Super cute Otter!" width="40%"/>
</p>

This package is an [Otter Framework Module](https://github.com/AmadeusITGroup/otter/tree/main/docs/core/MODULE.md).
<br />
<br />

## Description

[![Stable Version](https://img.shields.io/npm/v/@o3r/schematics?style=for-the-badge)](https://www.npmjs.com/package/@o3r/schematics)
[![Bundle Size](https://img.shields.io/bundlephobia/min/@o3r/schematics?color=green&style=for-the-badge)](https://www.npmjs.com/package/@o3r/schematics)

This module provides basic utilities and generic rules (install, lint) reused in other package schematics.

## How to install

```shell
ng add @o3r/schematics
```

> [!WARNING]
> This module requires [@o3r/core](https://www.npmjs.com/package/@o3r/core) to be installed.

## Description

This is a technical package to be used as dependency by [Otter modules](https://github.com/AmadeusITGroup/otter/tree/main/docs/core/MODULE.md) providing helpers to used in [Schematics](https://angular.io/guide/schematics) development.
npm package: @o3r/store-sync
Description: This module is exposing an NgRx store synchronization solution (synchronous and asynchronous) via the class StorageSync.
Latest version: 14.1.6

<h1 align="center">Otter Store Sync</h1>
<p align="center">
  <img src="https://raw.githubusercontent.com/AmadeusITGroup/otter/main/assets/logo/otter.png" alt="Super cute Otter!" width="40%"/>
</p>

This package is an [Otter Framework Module](https://github.com/AmadeusITGroup/otter/tree/main/docs/core/MODULE.md).
<br />
<br />

## Description

[![Stable Version](https://img.shields.io/npm/v/@o3r/store-sync?style=for-the-badge)](https://www.npmjs.com/package/@o3r/store-sync)
[![Bundle Size](https://img.shields.io/bundlephobia/min/@o3r/store-sync?color=green&style=for-the-badge)](https://www.npmjs.com/package/@o3r/store-sync)

This module exposes an NgRx store synchronization solution (synchronous and asynchronous) via the class `StorageSync`.

To facilitate the synchronization, the `StorageSync` class is based on a fork of [ngrx-store-localstorage](https://github.com/btroncone/ngrx-store-localstorage), an exposed package used to sync an NgRx store and the local or session storage.
Compared to the original version of the fork, the **@o3r/store-sync** module includes changes that improve overall synchronization performance.

The features to highlight are:
* The addition of `smartSync`: by default, **@o3r/store-sync** synchronizes a state only if its value changed and no longer matches that of the storage. This feature improves performance, but it can be disabled if wanted.
* The possibility of **asynchronous synchronization**: in our asynchronous storage interface, we have overridden the return type of the `getItem` function to handle promises (the return type is `Promise<string | null>`).

You can read about the changes in the module's [documentation](https://github.com/AmadeusITGroup/otter/blob/main/docs/store-sync/STORE_SYNC.md).

## How to install

```shell
ng add @o3r/store-sync
```

> [!WARNING]
> This module requires [@o3r/core](https://www.npmjs.com/package/@o3r/core) to be installed.

## More details

Find more information in the [documentation](https://github.com/AmadeusITGroup/otter/blob/main/docs/store-sync/STORE_SYNC.md).
npm package: @o3r/styling
Description: A styling framework to apply a theme on an Otter application at build time and runtime to support CMS customization.
Latest version: 14.1.6
Deprecated: This package will be removed in Otter v15. Please use @ama-styling/devkit instead.

<h1 align="center">Otter styling</h1>
<p align="center">
  <img src="https://raw.githubusercontent.com/AmadeusITGroup/otter/main/assets/logo/otter.png" alt="Super cute Otter!" width="40%"/>
</p>

This package is an [Otter Framework Module](https://github.com/AmadeusITGroup/otter/tree/main/docs/core/MODULE.md).
<br />
<br />

## Description

[![Stable Version](https://img.shields.io/npm/v/@o3r/styling?style=for-the-badge)](https://www.npmjs.com/package/@o3r/styling)
[![Bundle Size](https://img.shields.io/bundlephobia/min/@o3r/styling?color=green&style=for-the-badge)](https://www.npmjs.com/package/@o3r/styling)

A styling framework to apply a theme on an Otter application at build time and runtime to support CMS customization.

## How to install

```shell
ng add @o3r/styling
```

> [!WARNING]
> This module requires [@o3r/core](https://www.npmjs.com/package/@o3r/core) to be installed.

## Description

Find more information in the [documentation](https://github.com/AmadeusITGroup/otter/tree/main/docs/styling).

## Generators

Otter framework provides a set of code generators based on [Angular schematics](https://angular.io/guide/schematics).

| Schematics                 | Description                                                    | How to use                        |
| -------------------------- | -------------------------------------------------------------- | --------------------------------- |
| add                        | Include Otter styling module in a library / application.       | `ng add @o3r/styling`             |
| theming-to-component       | Add theming to an Otter component                              | `ng g theming-to-component`       |
npm package: @o3r/telemetry
Description: A set of helpers to retrieve tool usage metrics.
Latest version: 14.1.6

<h1 align="center">Otter telemetry</h1>
<p align="center">
  <img src="https://raw.githubusercontent.com/AmadeusITGroup/otter/main/assets/logo/otter.png" alt="Super cute Otter!" width="40%"/>
</p>

This package is an [Otter Framework Module](https://github.com/AmadeusITGroup/otter/tree/main/docs/core/MODULE.md).
<br />
<br />

## Description

[![Stable Version](https://img.shields.io/npm/v/@o3r/telemetry?style=for-the-badge)](https://www.npmjs.com/package/@o3r/telemetry)
[![Bundle Size](https://img.shields.io/bundlephobia/min/@o3r/telemetry?color=green&style=for-the-badge)](https://www.npmjs.com/package/@o3r/telemetry)

A set of helpers to retrieve tool usage metrics.

## Privacy notice

https://github.com/AmadeusITGroup/otter/blob/main/docs/telemetry/PRIVACY_NOTICE.md

## Additional information

By default, the project name sent will be the `name` of the `package.json`. It can be overridden by providing `config.o3r.telemetry.projectName`.

Example:
```json5
{
  "name": "app-name",
  ...
  "config": {
    "o3r": {
      "telemetry": {
        "projectName": "app-name-override"
      }
    }
  }
}
npm package: @o3r/testing
Description: The module provides testing (e2e, unit test) utilities to help you build your own E2E pipeline integrating visual testing.
Latest version: 14.1.6

<h1 align="center">Otter testing</h1>
<p align="center">
  <img src="https://raw.githubusercontent.com/AmadeusITGroup/otter/main/assets/logo/otter.png" alt="Super cute Otter!" width="40%"/>
</p>

This package is an [Otter Framework Module](https://github.com/AmadeusITGroup/otter/tree/main/docs/core/MODULE.md).
<br />
<br />

## Description

[![Stable Version](https://img.shields.io/npm/v/@o3r/testing?style=for-the-badge)](https://www.npmjs.com/package/@o3r/testing)
[![Bundle Size](https://img.shields.io/bundlephobia/min/@o3r/testing?color=green&style=for-the-badge)](https://www.npmjs.com/package/@o3r/testing)

The module provides testing (e2e, unit test) utilities to help you build your own E2E pipeline integrating visual testing.

## How to install

```shell
ng add @o3r/testing
```

> [!WARNING]
> This module requires [@o3r/core](https://www.npmjs.com/package/@o3r/core) to be installed.

## Description

Find more information in the [documentation](https://github.com/AmadeusITGroup/otter/tree/main/docs/testing/).

## Generators

Otter framework provides a set of code generators based on [Angular schematics](https://angular.io/guide/schematics).

| Schematics                 | Description                                                                   | How to use                        |
| -------------------------- | ----------------------------------------------------------------------------- | --------------------------------- |
| add                        | Include Otter testing module in a library / application.                      | `ng add @o3r/testing`             |
| fixture-to-component       | Add fixture to an Otter component                                             | `ng g fixture-to-component`       |
| add-functions-to-fixture   | Adding functions to an Otter fixture based on a selector and default methods. | `ng g add-functions-to-fixture`   |
npm package: @o3r/third-party
Description: This module provides a bridge to communicate with third parties via an iFrame solution.
Latest version: 14.1.6

<h1 align="center">Otter third-party</h1>
<p align="center">
  <img src="https://raw.githubusercontent.com/AmadeusITGroup/otter/main/assets/logo/otter.png" alt="Super cute Otter!" width="40%"/>
</p>

This package is an [Otter Framework Module](https://github.com/AmadeusITGroup/otter/tree/main/docs/core/MODULE.md).
<br />
<br />

## Description

[![Stable Version](https://img.shields.io/npm/v/@o3r/third-party?style=for-the-badge)](https://www.npmjs.com/package/@o3r/third-party)
[![Bundle Size](https://img.shields.io/bundlephobia/min/@o3r/third-party?color=green&style=for-the-badge)](https://www.npmjs.com/package/@o3r/third-party)

This module aims at improving the communication with third parties.
It exposes bridges to integrate third parties iFrame via an established communication protocol.
It also provides support of an A/B Testing solution via shared windows properties
(more info on the [A/B testing dedicated documentation](https://github.com/AmadeusITGroup/otter/tree/main/docs/ab-testing/AB_TESTING.md))

## How to install

```shell
ng add @o3r/third-party
```

> [!WARNING]
> This module requires [@o3r/core](https://www.npmjs.com/package/@o3r/core) to be installed.

## Generators

Otter framework provides a set of code generators based on [Angular schematics](https://angular.io/guide/schematics).

| Schematics            | Description                                                  | How to use                  |
| --------------------- | ------------------------------------------------------------ | --------------------------- |
| add                   | Include Otter third party module in a library / application. | `ng add @o3r/third-party`   |
| iframe-to-component  | Add iframe to an Otter component                             | `ng g iframe-to-component` |
npm package: @o3r/workspace
Description: Workspace tooling of the Otter Framework
Latest version: 14.1.6

<h1 align="center">Otter Workspace</h1>
<p align="center">
  <img src="https://raw.githubusercontent.com/AmadeusITGroup/otter/main/assets/logo/otter.png" alt="Super cute Otter!" width="40%"/>
</p>

## Description

[![Stable Version](https://img.shields.io/npm/v/@o3r/workspace?style=for-the-badge)](https://www.npmjs.com/package/@o3r/workspace)
[![Bundle Size](https://img.shields.io/bundlephobia/min/@o3r/workspace?color=green&style=for-the-badge)](https://www.npmjs.com/package/@o3r/workspace)

This package is an [Otter Framework](https://github.com/AmadeusITGroup/otter) Module providing tools at workspace level.

This packages provides several [Schematics](#schematics) and [CLIs](#scripts) used to accelerate the development and support maintenance of workspace's packages.

## Schematics

Otter framework provides a set of code generators based on [Angular schematics](https://angular.io/guide/schematics).

| Schematics                 | Description                                                                   | How to use                        |
| -------------------------- | ----------------------------------------------------------------------------- | --------------------------------- |
| add                        | Include Otter in a project workspace.                                         | `ng add @o3r/workspace`           |
| library                    | Add a new Library to the current Otter project                                | `ng g library`                    |
| sdk                        | Add a new SDK to the current Otter project                                    | `ng g sdk`                        |
| application                | Add a new Application to the current Otter project                            | `ng g application`                |

## Scripts

This packages exposes the following Command Line Interfaces:

### Set Version

Replaces the value of the `version` field of the `JSON` files matched by the pattern provided to the `--include` options.

```shell
Usage: o3r-set-version [options] <version>

Replace the packages version in a monorepos

Options:

  -p, --placeholder <placeholder>  Pattern of the version placeholder (default: 0.0.0)
  --include <file>                 Add files pattern to apply the verison replacement (default: '**/package.json', '**/lerna.json', '!**/templates', '!**/node_modules')
  --set-public                     Enforce the package to be public
  -V, --verbose                    Display debug logs
  -h, --help                       output usage information
```