open-index/open-npm huggingface dataset:
npm package: @mediahubmx/cassandra-cache
Description: MediaHubMX Cassandra cache wrapper
Latest version: 1.0.4

# MediaHubMX Cassandra caching engine

[Cassandra](https://cassandra.apache.org/) caching engine for MeduaURL addons.

You can find the caching documentation [here](https://github.com/MediaHubMX/mediahubmx-js/blob/main/docs/caching.md).

## Usage with your addon

```bash
# Build your addon
npm run build

# Install the caching engine
npm i @mediahubmx/cassandra-cache

# Setup environment
export LOAD_MEDIAHUBMX_CACHE_MODULE=@mediahubmx/cassandra-cache
export CASSANDRA_CONFIG=address-of-your-server.com

# Start the addon server
npm start
```

## Testing

```bash
# Start a local cassandra database server
docker run --rm -ti -p 9042:9042 cassandra

# Run the tests
CASSANDRA_CONFIG=localhost npm run test
```
npm package: @mediahubmx/i18n
Description: MediaHubMX tools for translations
Latest version: 1.3.1

# MediaHubMX i18n module

Helper module to quickly set up translations for addons.

By default the [i18next-node-fs-backend](https://github.com/i18next/i18next-node-fs-backend) backend for `i18next` is used.

If you set the environment variables `LOCIZE_PROJECTID` and `LOCIZE_API_KEY`, the [i18next-node-locize-backend](https://github.com/locize/i18next-node-locize-backend) backend will be used.

## Installation

```shell
npm i --save @mediahubmx/i18n
```

## Configuration

Run the `init` function somewhere at the beginning of your script. There are some default options set (see `src/index.ts`) which can be overwritten.

## Usage of the `t` function

Sometimes you may need direct access to the `t` function of i18next. This is how it's done with this module:

```javascript
import { changeLanguage } from "@mediahubmx/i18n";

i18n.init({
  ["en", "fr", "tr"],
  { debug: true }
});

const someFunction = async () => {
  const t = await changeLanguage("en");
  console.log(t("some.key", "Some translated text"));
};
```

## Usage for addons

Mainly translations are needed for the addon metadata defined at the createAddon funcitons. There are two recommended ways to translate this data.

### 1. With the `addon` action handler

```javascript
import { createAddon, translateDeep } from "@mediahubmx/sdk";
import * as i18n from "@mediahubmx/i18n";

i18n.init({
  ["en", "fr", "tr"],
  { debug: true }
});

export const myAddon = createAddon({
  id: "i18n-example",
  name: "i18n:Name of this addon"
});

myAddon.registerActionHandler("addon", async (input, ctx, addon) => {
  const t = await changeLanguage(input.language);
  return translateDeep(addon.getProps(), t);
});
```

### 2. With an exported promise

The addon server supports resolving exported promises. This promises can return an addon or an array of addons.

Also we can benefit from the `TranslatedText` system. The `tAll` function will get all available translations for a key.

```javascript
import { createAddon, translateDeep } from "@mediahubmx/sdk";
import { tAll } from "@mediahubmx/i18n";

export default (async () => {
  await i18n.init({
    ["en", "fr", "tr"],
    { debug: true }
  });

  const myAddon = createAddon(translateDeep(
    {
      id: "i18n-example",
      name: "i18n:Name of this addon"
    },
    tAll
  ));

  return myAddon;
});
```

## Download translations from locize

If you choose to use locize, you should add your translations to your prjecct root, especially when you are using a serverless environment.

First install the `locize-cli`:

```shell
npm i --save-dev locize-cli
```

Then modify your `package.json`:

```json
{
  "scripts": {
    "update-locize": "node -r dotenv/config node_modules/.bin/locize download --path locales --clean=true -n tmdb"
  }
}
```
npm package: @mediahubmx/sql-cache
Description: MediaHubMX SQL cache wrapper
Latest version: 1.0.4

# MediaHubMX MongoDB caching engine

You can find the caching documentation [here](https://github.com/MediaHubMX/mediahubmx-js/blob/main/docs/caching.md).

## Testing

```bash
# Start postgres and mysql
docker run -d --name sql-cache-test-postgres -p 5432:5432 -e POSTGRES_HOST_AUTH_METHOD=trust postgres:alpine
docker run -d --name sql-cache-test-mysql -p 3306:3306 -e MYSQL_ROOT_PASSWORD=pass mysql:5

# Test
TEST_URL_1=postgres://postgres@localhost/postgres TEST_URL_2=mysql://root:pass@localhost/mysql npm run test

# Cleanup
docker rm -f sql-cache-test-{postgres,mysql}
```