# nuxt-am-common-library

`nuxt-am-common-library` is a Nuxt 3 layer for nuxt applications, includes a set of authentication, socket, play games and other modules and tools that allow you to build rich, reliable, and performant betting applications without reinventing core business logic.

Learn more about `nuxt-am-common-library`’s architecture and modules in the Docs.

- [Architecture Overview Diagram Docs](/dataflows/architecture.md)
- [Architecture Specification Diagram Docs](/dataflows/auth.md)
- [Composables Docs](https://github.com/nevel-group/nuxt-am-common-library/blob/dev/apps/lib/docs/composables/index.md 'guides')
- [API Docs](https://github.com/nevel-group/nuxt-am-common-library/apps/lib/docs/index.html)

## Table of Contents

- [nuxt-am-common-library](#nuxt-am-common-library)
  - [Prerequisites](#prerequisites)
  - [Installation](#installation)
    - [Step 1: Create `.npmrc` file](#step-1-create-npmrc-file)
    - [Step 2: Install the Library](#step-2-install-the-library)
    - [Step 3: Install Pina \& other libraries](#step-3-install-pina--other-libraries)
  - [Usage](#usage)
  - [Contributing](#contributing)
  - [License](#license)


## Prerequisites

- `node`
- `pnpm` or `yarn`

## Installation

### Step 1: Create `.npmrc` file

Create a `.npmrc` file in the root directory of your project and add the following line of code:

```plaintext
//registry.npmjs.org/:_authToken=${NPM_TOKEN}
registry=https://registry.npmjs.org/
```

### Step 2: Install the Library

Before installing the library, you need to set the `GITHUB_TOKEN` environment variable. You can do this by running the
following command in your terminal:

```sh
export NPM_TOKEN=${YOUR_NPM_TOKEN}
```

```sh
yarn add @nevel-group/nuxt-am-common-library @kira-dancer/nadal
```

You can use either pnpm or yarn to install.

### Step 3: Install Pina & other libraries

You can do this by running the following command in your terminal:

```sh
yarn add dayjs lodash @nuxtjs/device @vueuse/core @vueuse/nuxt @gtm-support/vue-gtm pinia @pinia/nuxt @pinia-plugin-persistedstate/nuxt
```

You can use either pnpm or yarn to install.

## Usage

Copy the code below to your nuxt.config.ts

```typescript
const isProd = process.env.NODE_ENV === 'production'
const transpile = ['@nevel-group/nuxt-am-common-library', '@kira-dancer/nadal'] // add transpile

if (isProd) {
  transpile.push('property-expr')
}

export default defineNuxtConfig({
  devtools: { enabled: !isProd },
  extends: ['@nevel-group/nuxt-am-common-library'], // Extends layer
  modules: [
    '@vueuse/nuxt',
    '@nuxt/devtools',
    '@nuxtjs/device',
    '@pinia/nuxt',
    '@pinia-plugin-persistedstate/nuxt',
  ],
  imports: {
    autoImport: true, // Auto import must be true
    dirs: ['@nevel-group/nuxt-am-common-library/types'],
  },
  build: {
    transpile, // Add transpile
  },
  alias: {
    'dayjs/plugin': '/node_modules/dayjs/plugin',
    dayjs: '/node_modules/dayjs/esm/index.js',
    lodash: '/node_modules/lodash',
    yup: '/node_modules/yup/index.esm.js', // Add alias
    'socket.io-client': '/node_modules/socket.io-client/lib/index.js', // Add alias
    '#lib': '/node_modules/@nevel-group/nuxt-am-common-library', // Add alias
  },
  runtimeConfig: {
    public: {
      // your public env
    },
  },
})
```

Add .env file

[More detail of ENV variables](https://github.com/nevel-group/nuxt-am-common-library/blob/dev/apps/lib/.env.example 'environment variables')

## Contributing

Pull requests are welcome. For major changes, please open an issue first
to discuss what you would like to change.

Please make sure to update tests as appropriate.

## License

Licensed under the [Nevel Group](#).
