open-index/open-npm huggingface dataset:
npm package: @fresh.codes/strapi-plugin-link-field
Description: A custom field that provides link details to a resource, a file, or a plain text url.
Author: Fresh Codes
Latest version: 1.0.0

# Strapi Plugin Link Field

A custom field for Strapi that provides link functionality, supporting URLs, file uploads, and content relations.

![Link Field Screenshot](screenshot.png)

## Installation

```bash
npm install @fresh.codes/strapi-plugin-link-field
```

## Configuration

Configure content relations and URL templates:

```javascript
// config/plugins.js
module.exports = {
  'link-field': {
    enabled: true,
    config: {
      relations: {
        'api::article.article': {
          urlTemplate: '/articles/{slug}',
        },
        'api::page.page': {
          urlTemplate: '/pages/{slug}',
        },
        'api::product.product': {
          urlTemplate: '/products/{id}',
        },
      },
    },
  },
}
```

Template variables are replaced with actual values from the related content:

- `{id}` → Content ID
- `{slug}` → Content slug
- `{title}` → Content title
- Any other field name from the content

## Data Structure

The link field stores data in the following format:

```typescript
type LinkFieldData = {
  text?: string // Display text for the link
  linkType: 'url' | 'file' | UID.ContentType // Type of link (url, file, or relation key)
  relatedData?: {
    // Related content data or file
    id: number
    url?: string
    title?: string
    name?: string
    slug?: string
    [key: string]: unknown
  }
  openInNewTab?: boolean // Whether to open in new tab
  url?: string
}
```

## License

[MIT License](LICENSE)

Made by [Fresh Codes](https://fresh.codes).
npm package: @fresh.codes/strapi-plugin-pirsch
Description: A Strapi plugin to display an embedded Pirsch dashboard.
Author: Fresh Codes
Latest version: 1.0.5

# Strapi Plugin for Pirsch

A Strapi v5 plugin that provides an embedded Pirsch analytics dashboard within the Strapi admin interface.

<img src="screenshots/dashboard.png" alt="Strapi Pirsch Dashboard" style="margin: 1rem; width: calc(100% - 2rem); max-width: 800px">

## Installation

```bash
npm install @fresh.codes/strapi-plugin-pirsch
```

## Configuration

### Configure Dashboard URL

1. Navigate to **Settings** → **Pirsch Analytics** in your Strapi admin
2. Enter your [Pirsch Access Link](https://docs.pirsch.io/advanced/access#public-access) (e.g., `https://your-dashboard.pirsch.io`)
3. Click **Save Settings**

Note: There are [additional query params](https://docs.pirsch.io/advanced/embedding#ui-options) you can add to your access link (like `&ui=hide`).

### Content Security Policy (Optional)

If you have the `strapi::security` middleware enabled, update your `config/middlewares.ts`:

```typescript
export default [
  {
    name: 'strapi::security',
    config: {
      contentSecurityPolicy: {
        directives: {
          'frame-src': ["'self'", 'https://*.pirsch.io'],
        },
      },
    },
  },
]
```

If you're using a custom domain like `stats.example.com` then you'll need to tweak the CSP policy a bit more to allow for the pirsch api calls to work:

```typescript
export default [
  {
    name: 'strapi::security',
    config: {
      contentSecurityPolicy: {
        directives: {
          'frame-src': ["'self'", 'https://stats.example.com'],
          'connect-src': ["'self'", 'https://api.pirsch.io'],
        },
      },
    },
  },
]
```

## Permissions

The plugin registers two permissions that can be managed in **Settings → Roles & Permissions**:

- **Access the Pirsch Analytics Dashboard**: Controls who can view the main analytics dashboard
- **Update Pirsch Analytics Settings**: Controls who can configure the dashboard URL

By default, only Super Admins have access. You can grant permissions to other roles as needed.

## License

[MIT License](LICENSE)

Made by [Fresh Codes](https://fresh.codes).

Don't have Pirsch yet? [Sign up here](https://pirsch.io/ref/5kgY5GGg4m) (affiliate link).
npm package: @fresh8/prom-client-timer-unit
Description: A helper function to help record time in other units than seconds.
Author: Fresh8
Latest version: 1.0.1

# prom-client-timer-unit

[![CircleCI](https://circleci.com/gh/fresh8/prom-client-timer-unit.svg?style=svg)](https://circleci.com/gh/fresh8/prom-client-timer-unit)
[![Coverage Status](https://coveralls.io/repos/github/fresh8/prom-client-timer-unit/badge.svg?branch=master)](https://coveralls.io/github/fresh8/prom-client-timer-unit?branch=master)
[![styled with prettier](https://img.shields.io/badge/styled_with-prettier-ff69b4.svg)](https://github.com/prettier/prettier)

A helper function to help record time in other units than seconds. 
It really just divides the time measurment (in seconds) by whatever number you give it.

## Usage

### At a glance
#### Javascript
```js
const myMetric = require('prom-client').Histogram()
const startTimer = require('@fresh8/prom-client-timer-unit')

const stopTimer = startTimer(myMetric, 1e-3)
// [...] your code doing things
stopTimer() // will calculate the time elapsed and register it in `myMetric`
```

#### Typescript
```ts
import * as promClient from 'prom-client'
import * as startTimer from '@fresh8/prom-client-timer-unit'

const myMetric = promClient.Histogram()
const stopTimer = startTimer(myMetric, 1e-3)
// [...] your code doing things
stopTimer() // will calculate the time elapsed and register it in `myMetric`
```

### API
#### startTimer(metric, factor, labels)
* **metric** : The `prom-client` metric, e.g: `new promClient.Histogram(opts)`
* **factor** (optional): The factor to be applied to the observed number of seconds. Examples: `1e-3` for milliseconds, `60` for minutes. Defaults to `1`
* **labels** (optional): Labels to apply to the observation. This is to follow the same signature as the original `startTimer` function in `prom-client`. Defaults to `{}`
* returns: stopTimer

Starts counting time using `process.hrtime`.

#### stopTimer(labels)
* **labels** : Labels to apply to the observation. They will be merged with the labels given to `startTimer` (if any). Defaults to `{}`
* returns: { labels, elapsed }. This is in case you want to re-use those values in something else than prometheus itself.
** labels: the result of combining labels given to `startTimer` and `stopTimer`
** elapsed: the time measured by the timer, in the correct unit.

Stops the timer and record the elapsed time in seconds divided by `factor`.

## Credits
Implementation very heavily inspired from the [original in prom-client](https://github.com/siimon/prom-client/blob/4c5b6c73ca5bea6889e77f61ef4b99b5e0250d7a/lib/summary.js#L180)
npm package: @fresha/api-tools-core
Description: Core project functionality
Author: Fresha Engineering
Latest version: 0.7.0

# @fresha/api-tools-core

This package contains shared type definitions, functions and classes used in
other `api-tools` packages.

## Installation

```bash
$ npm install @fresha/api-tools-core
```

## Usage example

```ts
import type { JSONRef } from '@fresha/api-tools-core';

const ref: JSONRef = { $ref: '#/components' };
```

## Types

Below is a list of types. For their descriptions, please consult `src/types.ts`.

- `Nullable<T>`
- `CommonMarkString`
- `URLString`
- `ParametrisedURLString`
- `EmailString`
- `VersionString`
- `DateTimeString`
- `MIMETypeString`
- `HTTPMethod`
- `HTTPStatusCode`

- `JSONPrimitive`
- `JSONValue`
- `JSONArray`
- `JSONObject`
- `JSONObjectRecord`
- `JSONObjectArray`
- `JSONPointerString`

- `JSONRef`
- `ObjectOrRef<T>`

- `JSONAPIMeta`
- `JSONAPILink`
- `JSONAPIResourceID`
- `JSONAPIResourceRelationship`
- `JSONAPIServerResource`
- `JSONAPIClientResource`
- `JSONAPIResource`
- `JSONAPIImplementationInfo`
- `JSONAPITopLevelLinks`
- `JSONAPIDataDocument`
- `JSONAPIError`
- `JSONAPIErrorDocument`
- `JSONAPIDocument`

- `Disposable`

## Type guards

Below is a list of guard names. For more information, please read `src/typeGuards.ts`.

- `isJSONObject`
- `isJSONValueArray`
- `isJSONRef`
- `isJSONAPIDataDocument`
- `isJSONAPIErrorDocument`

## Miscellaneous functions

- `transformKeysDeep`
- `camelCase`
- `camelCaseDeep`
- `kebabCase`
- `kebabCaseDeep`
npm package: @fresha/asyncapi-codegen-server-elixir
Description: AsyncAPI code generation for Elixir/Phoenix servers
Author: Fresha Engineering
Latest version: 0.3.1

# @fresha/asyncapi-codegen-server-elixir

This is a skeleton of a package. The package will contain the AsyncAPI code
generator for Elixir servers.

## Installation

```bash
$ npm install @fresha/asyncapi-codegen-server-elixir
```
npm package: @fresha/code-morph-ts
Description: Code parsers and builders for TypeScript
Author: Fresha Engineering
Latest version: 0.3.1

# @fresha/code-morph-ts

This package simplifies programmatic generation and modification of TypeScript
code. It bases itself on `ts-morph`, providing additional functionality.

## Installation

```bash
$ npm install @fresha/code-morph-ts
```

## Usage

- `addImportDeclaration`, `addImportDeclarations` - add one or more import
  declarations. Prevents duplicate imports.
- `addConstant`, `addVariable` - define a constant or a variable
- `addFunction` - add a function declaration
- `addObjectLiteralProperty`, `addObjectLiteralProperties`,
  `addObjectLiteralObjectProperty`, `addObjectLiteralArrayProperty` - add one
  or more properties to an object literal
- `addDecorator` - add a decorator
- `addTypeAlias`, `addTypeLiteralAlias` - add type aliases
- `addTypeLiteralProperty`, `addFunctionTypeProperty`, `addTypeLiteralCall` -
  add one or more properties to type literals
npm package: @fresha/designer-app
Description: WYSIWIG OpenAPI / AsyncAPI design tool, packaged as Electron application
Author: Fresha Engineering
Latest version: 0.3.1

# @fresha/designer-app

This is a skeleton of a package. The package will contain the code of the
desktop version of the designer application.

## Installation

```bash
$ npm install @fresha/designer-app
```
npm package: @fresha/openapi-codegen
Description: OpenAPI code generation
Author: Fresha Engineering
Latest version: 0.1.2

# @fresha/openapi-codegen

The code generator CLI for RESTful APIs.

## Installation

```bash
$ npm install @fresha/openapi-codegen
```

## Usage

### Listing available generators

```bash
$ npx fresha-openapi-codegen --help
```

Typical output of the command above. Each generator is implemented as a separate command:

```text
Usage

Commands:
  fresha-openapi-codegen server-nestjs  generates code for NestJS

Options:
  --help     Show help                                                 [boolean]
  --version  Show version number                                       [boolean]
```

### Generating source code

As an example, we'll use NestJS generator. For more details, please see its documentation.

```bash
$ npx fresha-openapi-codegen \
  --input ~/Developer/openapi/schema.yaml \
  --output ~/Developer/nestjs-project
  --nest-app web
  --json-api
```
npm package: @fresha/openapi-codegen-cli
Description: CLI for OpenAPI code generators
Author: Fresha Engineering
Latest version: 0.7.1

# @fresha/openapi-codegen-cli

The code generator CLI for RESTful APIs.

## Installation

```bash
$ npm install @fresha/openapi-codegen-cli
```

## Usage

### Listing available generators

```bash
$ npx fresha-openapi-codegen --help
```

Typical output of the command above. Each generator is implemented as a separate command:

```text
Usage

Commands:
  fresha-openapi-codegen server-nestjs  generates code for NestJS

Options:
  --help     Show help                                                 [boolean]
  --version  Show version number                                       [boolean]
```

### Generating source code

As an example, we'll use NestJS generator. For more details, please see its documentation.

```bash
$ npx fresha-openapi-codegen server-nestjs \
  --input ~/Developer/openapi/schema.yaml \
  --output ~/Developer/nestjs-project
  --nest-app web
  --json-api
```
npm package: @fresha/openapi-codegen-client-fetch
Description: OpenAPI code generation for Fetch API clients
Author: Fresha Engineering
Latest version: 0.6.1

# @fresha/openapi-codegen-client-fetch

OpenAPI code generator for TypeScript clients using Fetch API.

## Installation

This generator is installed along with `@fresha/openapi-codegen`.

```bash
$ npm install @fresha/openapi-codegen
```

## Usage

### Listing available options

```bash
npx fresha-openapi-codegen client-fetch --help
```

### Generating source code

```bash
npx fresha-openapi-codegen client-fetch \
  --input PATH_TO_OPENAPI_SCHEMA_FILE
  --output ROOT_DIR_NPM_PROJECT
  --json-api
```

where:

`--json-api` is used to make generator generate the code according to JSON:API specification
npm package: @fresha/openapi-codegen-client-fresha
Description: OpenAPI code generation for Fresha clients
Author: Fresha Engineering
Latest version: 0.2.9

# @fresha/openapi-codegen-client-fresha

OpenAPI code generator for Fresha clients.

## Installation

This generator is installed along with `@fresha/openapi-codegen`.

```bash
$ npm install @fresha/openapi-codegen
```

## Usage

### Listing available options

```bash
npx fresha-openapi-codegen client-fresha --help
```

### Generating source code

```bash
npx fresha-openapi-codegen client-fresha \
  --input PATH_TO_OPENAPI_SCHEMA_FILE
  --output PACKAGE_DIR
  --json-api
```

where:

`--json-api` is used to make generator generate the code according to JSON:API specification
npm package: @fresha/openapi-codegen-client-typescript
Description: OpenAPI code generation for TypeScript clients
Author: Fresha Engineering
Latest version: 0.1.0

# @fresha/openapi-codegen-client-typescript

OpenAPI code generator for TypeScript clients.

## Installation

This generator is installed along with `@fresha/openapi-codegen`.

```bash
$ npm install @fresha/openapi-codegen
```

## Usage

### Listing available options

```bash
npx fresha-openapi-codegen client-typescript --help
```

### Generating source code

```bash
npx fresha-openapi-codegen client-typescript \
  --input PATH_TO_OPENAPI_SCHEMA_FILE
  --output ROOT_DIR_OF_NESTJS_PROJECT
  --nest-app NAME_OF_NESTJS_SUBAPP
  --json-api
```

where:

`--json-api` is used to make generator generate the code according to JSON:API specification
npm package: @fresha/openapi-codegen-docs-json-api
Description: Better OpenAPI documentation generator for JSON:API
Author: Fresha Engineering
Latest version: 0.4.0

# @fresha/openapi-codegen-docs-json-api

Documentation generator for OpenAPI schemas.

## Installation

This generator is installed along with `@fresha/openapi-codegen`.

```bash
$ npm install @fresha/openapi-codegen
```

## Usage

### Listing available options

```bash
npx fresha-openapi-codegen docs-json-api --help
```

### Generating source code

```bash
npx fresha-openapi-codegen docs-json-api \
  --input PATH_TO_OPENAPI_SCHEMA_FILE
  --output ROOT_DIR_NPM_PROJECT
  --json-api
```

where:

`--json-api` is used to make generator generate the code according to JSON:API specification
npm package: @fresha/openapi-codegen-server-elixir
Description: OpenAPI code generation for Elixir/Phoenix servers
Author: Fresha Engineering
Latest version: 0.5.0

# @fresha/openapi-codegen-server-elixir

**Experimental** OpenAPI code generator for Elixir (Phoenix) projects.

## Prerequisites

In order to use this generator, you need to have Node >= 16.x installed on your machine.

## Installation

This generator is installed along with `@fresha/openapi-codegen-cli`.

```bash
$ npm install @fresha/openapi-codegen-cli
```

## Usage

### Listing available options

```bash
npx fresha-openapi-codegen server-elixir --help
```

### Generating source code

```bash
npx fresha-openapi-elixir \
  --input PATH_TO_OPENAPI_SCHEMA_FILE
  --output ROOT_DIR_OF_ELIXIR_PROJECT
  --phoenix-app NAME_OF_PHOENIX_APP
  --test-factory-module EX_MACHINA_FACTORY_MODULE
  --json-api
```

where:

`--phoenix-app` is used to identify Phoenix sub-app where new code should be generated.
  If omitted, generator assume that your Phoenix project is not an umbrella project.

`--test-factory-module` should be a module name where ExMachina factory is located

`--json-api` is used to make generator generate the code according to JSON:API specification

Code generator tries to generate code compliant with Phoenix best practices. This includes:

- controllers
- controller actions
- controller test stubs
- views
- view test stubs
- JSON:API resources
- resource tests
- routing entries (printed on console)
npm package: @fresha/openapi-codegen-server-mock
Description: OpenAPI code generation for mock API servers
Author: Fresha Engineering
Latest version: 0.4.0

# @fresha/openapi-codegen-server-mock

OpenAPI code generator for [Mirage.js](https://miragejs.com) mock servers.

## Installation

This generator is installed along with `@fresha/openapi-codegen`.

```bash
$ npm install @fresha/openapi-codegen
```

## Usage

### Listing available options

```bash
npx fresha-openapi-codegen server-mock --help
```

### Generating source code

```bash
npx fresha-openapi-codegen server-mock \
  --input PATH_TO_OPENAPI_SCHEMA_FILE
  --output ROOT_DIR_OF_NPM_PROJECT
  --json-api
```

where:

`--json-api` is used to make generator generate the code according to JSON:API specification
npm package: @fresha/openapi-codegen-server-nestjs
Description: OpenAPI code generation for NestJS servers
Author: Fresha Engineering
Latest version: 0.5.0

# @fresha/openapi-codegen-server-nestjs

OpenAPI code generator for NestJS projects.

## Installation

If you need to generate source code using CLI tools, it's enough to install
`@fresha/openapi-codegen`.

```bash
$ npm install @fresha/openapi-codegen
```

## Usage

This generator is available as `server-nestjs` command of the `fresha-openapi-codegen` CLI.

```bash
npx fresha-openapi-codegen \
  server-nestjs \
  --input PATH_TO_OPENAPI_SCHEMA_FILE
  --output ROOT_DIR_OF_NESTJS_PROJECT
  --nest-app NAME_OF_NESTJS_SUBAPP
  --json-api
```

where:

`--nest-app` is used if your NestJS project uses [workspaces](https://docs.nestjs.com/cli/monorepo)
  This option's value should be one of NestJS applications from your project. If omitted, generator
  assumes that your NestJS project is in standard mode

`--json-api` is used to make generator generate the code according to JSON:API specification,
  including several optimisations

Other options include:

`--dry-run` which will make the generator to only print what it's being doing, but don't do actual
  modification

`--verbose` which will make the generator print more information on the console

## Code generation

Code generator tries to generate code compliant with NestJS best practices. This includes:

- module
- controllers
- actions
- DTO objects, implemented using `class-transformer` library

## Limitations

- generator may not fully work on update mode, when you have existing controllers and want
  to modify only parts of them
- after generating code, you may need to format it using project's settings. Usually it's done
  by invoking `npm run format` command
npm package: @fresha/openapi-model
Description: OpenAPI object model
Author: Fresha Engineering
Latest version: 0.9.0

# @fresha/openapi-model

This package provides:

- type definitions for OpenAPI v3.x specifications objects
- high-level model classes for OpenAPI v3.0.3

Model classes serve as a foundation for other `api-tools`, like code generators, validators, etc.

## Installation

```bash
$ npm install @fresha/openapi-model
```

## Usage example

```ts
import { SchemaFactory, OpenAPIReader, OpenAPIWriter } from '@fresha/openapi-model/build/v3.0.3';

// 1. build schema programmatically

const openapiModel = SchemaFactory.create('My schema', '0.1.0');

const findUserOperationModel = openapiModel
  .setPathItem('/users')
  .addOperation('get');

const errorSchemaModel = openapiModel.components.setSchema('ErrorObject', 'object');
errorSchemaModel.setProperties({
  code: { type: 'number', required: true },
  title: { type: 'string', required: true },
  detail: 'string',
  href: 'string',
});

// 2. read schema from file

const openapiReader = new OpenAPIReader();
const loadedOpenapiModel = openapiReader.readFromFile('pathToSchemaFile.yaml');

// 3. serialise schema object to file

const openapiWriter = new OpenAPIWriter();
openapiWriter.writeToFile(openapiModel, 'pathToSchemaFile.yaml');
```
npm package: @freshbooks/app
Description: ExpressJS app for FreshBooks API
Author: FreshBooks
Latest version: 3.0.7

# FreshBooks NodeJS SDK

![](https://github.com/freshbooks/api-sdk/workflows/Node%20CI/badge.svg)

The FreshBooks NodeJS SDK is a collection of single-purpose packages designed to easily build FreshBooks apps. Each package delivers part of the FreshBooks [REST API](https://www.freshbooks.com/api), so that you can choose the packages that fit your needs.

| Package                             | What it's for                                                                                                                 |
| ----------------------------------- | ----------------------------------------------------------------------------------------------------------------------------- |
| [`@freshbooks/api`](https://www.npmjs.com/package/@freshbooks/api) | Get/set data from FreshBooks using the REST API.                                                                              |
| [`@freshbooks/app`](https://www.npmjs.com/package/@freshbooks/api) | Pre-configured [ExpressJS](https://expressjs.com/) app. Includes authentication via [PassportJS](http://www.passportjs.org/). |

## Installation

Use your favorite package manager to install any of the packages and save to your `package.json`:

```shell
$ npm install @freshbooks/api @freshbooks/app

# Or, if you prefer yarn
$ yarn add @freshbooks/api @freshbooks/app
```

## Usage

### `@freshbooks/app`

The FreshBooks SDK provides a pre-configured `ExpressJS` app. This app provides OAuth2 authentication flow, a `PassportJS` middleware for authenticating requests, and session middleware to retrieve tokens for a session.

#### Using the ExpressJS app

Setting up the ExpressJS app requires a FreshBooks `client__id` and `client_secret`, as well as a callback URL to receive user authentication and refresh tokens. Once configured, routes can be configured as in any other `ExpressJS` app.

```typescript
import { Client } from '@freshbooks/api'
import createApp from '@freshbooks/app'

const CLIENT_ID = process.env.CLIENT_ID
const CLIENT_SECRET = process.env.CLIENT_SECRET
const CALLBACK_URL = process.env.CALLBACK_URL

const app = createApp(CLIENT_ID, CLIENT_SECRET, CALLBACK)

// set up callback route
app.get('/auth/freshbooks/redirect', passport.authorize('freshbooks')

// set up an authenticated route
app.get('/settings', passport.authorize('freshbooks'), async (req, res) => {
  // get an API client
  const { token } = req.user
  const client = new Client(CLIENT_ID, token)

  // fetch the current user
  try {
    const { data } = await client.users.me()
    res.send(data.id)
  } catch ({ code, message }) {
    res.status(500, `Error - ${code}: ${message}`)
  }
})
```
npm package: @freshbox-medusa/auth-github
Description: Github OAuth authentication provider for Medusa
Author: Medusa
Latest version: 1.0.3

## Testing

In order to manually test the flow, you can do the following:

1. Register a Github App - https://docs.github.com/en/apps/creating-github-apps/registering-a-github-app/registering-a-github-app
2. Go to the app, fetch the clientId and create a new clientSecret
3. Replace the values in the test with your credentials
4. Remove the `server.listen()` call
5. Run the tests, get the `location` value from the `authenticate` test, open the browser
6. Once redirected, copy the `code` param from the URL, and add it in one of the `callback` success tests
7. Once you run the tests, you should get back an access token and so on.
npm package: @freshbox-medusa/auth-google
Description: Google OAuth authentication provider for Medusa
Author: Medusa
Latest version: 1.0.3

## Testing

In order to manually test the flow, you can do the following:

1. Register an app in `https://console.cloud.google.com/apis/credentials/consent`
2. Generate clientId and clientSecret credentials in the console
3. Replace the values in the test with your credentials
4. Remove the `server.listen()` call
5. Run the tests, get the `location` value from the `authenticate` test, open the browser
6. Once redirected, copy the `code` param from the URL, and add it in one of the `callback` success tests
7. Once you run the tests, you should get back an access token, id token, and so on.
npm package: @freshbox-medusa/cache-inmemory
Description: In-memory Cache Module for Medusa
Author: Medusa
Latest version: 1.0.3

# Medusa Cache In-memory

Medusa in-memory cache module. Use plain JS Map as a cache store.

## Installation

```
yarn add @medusajs/cache-inmemory
```

## Options

```
{
  ttl?: number // Time to keep data in cache (in seconds)
}
```

### Note

Recommended for testing and development. For production, use Redis cache module.

### Other caching modules

- [Medusa Cache Redis](../cache-redis/README.md)
npm package: @freshbox-medusa/cache-redis
Description: Redis Cache Module for Medusa
Author: Medusa
Latest version: 1.0.3

# Medusa Cache Redis

Use Redis as a Medusa cache store.

## Installation

```
yarn add @medusajs/cache-redis
```

## Options

```
   {
      ttl?: number                // Time to keep data in cache (in seconds)

      redisUrl?: string           // Redis instance connection string

      redisOptions?: RedisOptions // Redis client options

      namespace?: string          // Prefix for event keys (the default is `medusa:`)
  }
```

### Other caching modules

- [Medusa Cache In-Memory](../cache-inmemory/README.md)
npm package: @freshbox-medusa/draft-order
Description: A draft order plugin for Medusa.
Author: Medusa
Latest version: 1.0.3

<p align="center">
  <a href="https://www.medusajs.com">
  <picture>
    <source media="(prefers-color-scheme: dark)" srcset="https://user-images.githubusercontent.com/59018053/229103275-b5e482bb-4601-46e6-8142-244f531cebdb.svg">
    <source media="(prefers-color-scheme: light)" srcset="https://user-images.githubusercontent.com/59018053/229103726-e5b529a3-9b3f-4970-8a1f-c6af37f087bf.svg">
    <img alt="Medusa logo" src="https://user-images.githubusercontent.com/59018053/229103726-e5b529a3-9b3f-4970-8a1f-c6af37f087bf.svg">
    </picture>
  </a>
</p>
<h1 align="center">
  Draft Order Plugin
</h1>

<h4 align="center">
  <a href="https://docs.medusajs.com">Documentation</a> |
  <a href="https://www.medusajs.com">Website</a>
</h4>

<p align="center">
  Create and manage draft orders on behalf of customers in Medusa
</p>
<p align="center">
  <a href="https://github.com/medusajs/medusa/blob/master/CONTRIBUTING.md">
    <img src="https://img.shields.io/badge/PRs-welcome-brightgreen.svg?style=flat" alt="PRs welcome!" />
  </a>
    <a href="https://www.producthunt.com/posts/medusa"><img src="https://img.shields.io/badge/Product%20Hunt-%231%20Product%20of%20the%20Day-%23DA552E" alt="Product Hunt"></a>
  <a href="https://discord.gg/xpCwq3Kfn8">
    <img src="https://img.shields.io/badge/chat-on%20discord-7289DA.svg" alt="Discord Chat" />
  </a>
  <a href="https://twitter.com/intent/follow?screen_name=medusajs">
    <img src="https://img.shields.io/twitter/follow/medusajs.svg?label=Follow%20@medusajs" alt="Follow @medusajs" />
  </a>
</p>

## Overview

The Draft Order Plugin enables admin users to create and manage orders on behalf of customers. This is particularly useful for customer support scenarios or when customers place orders offline.

## Features

- **Create draft orders** from the Medusa Admin dashboard
- **Manage items** in draft orders (add, update, remove)
- **Add shipping methods** to draft orders
- **Associate customers** with draft orders
- **Convert draft orders** to regular orders for purchase completion


## Installation

1. Install the Draft Order plugin
```
yarn add @medusajs/draft-order
```
2. Configure the plugin in your medusa-config.ts
```
module.exports = defineConfig({
  projectConfig: {
    ...
  },
  plugins: [
    {
      resolve: "@medusajs/draft-order",
      options: {},
    },
  ],
})
```
3. Start your server
   
## Requirements
- Medusa application version >= 2.4.0

## Support

## Community & Contributions

The community and core team are available in [GitHub Discussions](https://github.com/medusajs/medusa/discussions), where you can ask for support, discuss roadmap, and share ideas.

Join our [Discord server](https://discord.com/invite/medusajs) to meet other community members.

## Other channels

- [GitHub Issues](https://github.com/medusajs/medusa/issues)
- [Twitter](https://twitter.com/medusajs)
- [LinkedIn](https://www.linkedin.com/company/medusajs)
- [Medusa Blog](https://medusajs.com/blog/)
npm package: @freshbox-medusa/event-bus-local
Description: Local Event Bus Module for Medusa
Author: Medusa
Latest version: 1.0.3

<p align="center">
  <a href="https://www.medusajs.com">
    <img alt="Medusa" src="https://user-images.githubusercontent.com/7554214/153162406-bf8fd16f-aa98-4604-b87b-e13ab4baf604.png" width="100" />
  </a>
</p>
<h1 align="center">
  @medusajs/event-bus-local
</h1>

<h4 align="center">
  <a href="https://docs.medusajs.com">Documentation</a> |
  <a href="https://www.medusajs.com">Website</a>
</h4>

<p align="center">
An open source composable commerce engine built for developers.
</p>
<p align="center">
  <a href="https://github.com/medusajs/medusa/blob/master/LICENSE">
    <img src="https://img.shields.io/badge/license-MIT-blue.svg" alt="Medusa is released under the MIT license." />
  </a>
  <a href="https://circleci.com/gh/medusajs/medusa">
    <img src="https://circleci.com/gh/medusajs/medusa.svg?style=shield" alt="Current CircleCI build status." />
  </a>
  <a href="https://github.com/medusajs/medusa/blob/master/CONTRIBUTING.md">
    <img src="https://img.shields.io/badge/PRs-welcome-brightgreen.svg?style=flat" alt="PRs welcome!" />
  </a>
    <a href="https://www.producthunt.com/posts/medusa"><img src="https://img.shields.io/badge/Product%20Hunt-%231%20Product%20of%20the%20Day-%23DA552E" alt="Product Hunt"></a>
  <a href="https://discord.gg/xpCwq3Kfn8">
    <img src="https://img.shields.io/badge/chat-on%20discord-7289DA.svg" alt="Discord Chat" />
  </a>
  <a href="https://twitter.com/intent/follow?screen_name=medusajs">
    <img src="https://img.shields.io/twitter/follow/medusajs.svg?label=Follow%20@medusajs" alt="Follow @medusajs" />
  </a>
</p>

## Overview

Local Event Bus module for Medusa. When installed, the events system of Medusa is powered by the Node EventEmitter. This module installed by default in new (> v1.8.0) Medusa projects.

The Node EventEmitter is limited to a single process environment. We generally recommend using the `@medusajs/event-bus-redis` module in a production environment.

## Getting started

Install the module:

```bash
yarn add @medusajs/event-bus-local
```

You don't need to add the module to your project configuration as it is the default one. Medusa will try to use it, if no other event buses are installed.

```js
module.exports = {
  // ...
  modules: [ ... ],
  // ...
}
```

## Configuration

The module comes with no configuration options.
npm package: @freshbox-medusa/icons
Description: Medusa UI React icon library
Author: Kasper Kristensen
Latest version: 1.0.3

<p align="center">
  <a href="https://www.medusajs.com">
  <picture>
    <source media="(prefers-color-scheme: dark)" srcset="https://user-images.githubusercontent.com/59018053/229103275-b5e482bb-4601-46e6-8142-244f531cebdb.svg">
    <source media="(prefers-color-scheme: light)" srcset="https://user-images.githubusercontent.com/59018053/229103726-e5b529a3-9b3f-4970-8a1f-c6af37f087bf.svg">
    <img alt="Medusa logo" src="https://user-images.githubusercontent.com/59018053/229103726-e5b529a3-9b3f-4970-8a1f-c6af37f087bf.svg">
    </picture>
  </a>
</p>
<h1 align="center">
  Medusa Icons
</h1>

<h4 align="center">
  <a href="https://docs.medusajs.com/ui">Documentation</a> |
  <a href="https://www.medusajs.com">Website</a>
</h4>

<p align="center">
  Icons used in Medusa's design system.
</p>
<p align="center">
  <a href="https://github.com/medusajs/medusa/blob/develop/LICENSE">
    <img src="https://img.shields.io/badge/license-MIT-blue.svg" alt="Medusa is released under the MIT license." />
  </a>
  <a href="https://discord.gg/xpCwq3Kfn8">
    <img src="https://img.shields.io/badge/chat-on%20discord-7289DA.svg" alt="Discord Chat" />
  </a>
  <a href="https://twitter.com/intent/follow?screen_name=medusajs">
    <img src="https://img.shields.io/twitter/follow/medusajs.svg?label=Follow%20@medusajs" alt="Follow @medusajs" />
  </a>
</p>

## Note

This package is auto-generated, and requires a Figma token associated with the Medusa Figma organization. If you are a not a Medusa team member, you will not be able to make changes to this package. If you discover any issues please open an issue instead of a PR.

## Installation

```sh
yarn add @medusajs/icons
```

## Usage

```jsx
import { Star } from "@medusajs/icons"
```
npm package: @freshbox-medusa/payment
Description: Medusa Payment module
Author: Medusa
Latest version: 1.0.3

# Payment Module

A Payment is the result of a series of financial transactions performed as part of collecting a payment of a purchase. The Payment holds information about the payment provider as well as the state of it. You can associate a Payment with a Cart, an Order, an OrderEdit, or any other resource you’d like to have your customers pay for.
npm package: @freshbox-medusa/ui
Description: <p align="center">   <a href="https://www.medusajs.com">   <picture>     <source media="(prefers-color-scheme: dark)" srcset="https://user-images.githubusercontent.com/59018053/229103275-b5e482bb-4601-46e6-8142-244f531cebdb.svg">     <source media="(prefe
Author: Kasper Kristensen
Latest version: 1.0.3

<p align="center">
  <a href="https://www.medusajs.com">
  <picture>
    <source media="(prefers-color-scheme: dark)" srcset="https://user-images.githubusercontent.com/59018053/229103275-b5e482bb-4601-46e6-8142-244f531cebdb.svg">
    <source media="(prefers-color-scheme: light)" srcset="https://user-images.githubusercontent.com/59018053/229103726-e5b529a3-9b3f-4970-8a1f-c6af37f087bf.svg">
    <img alt="Medusa logo" src="https://user-images.githubusercontent.com/59018053/229103726-e5b529a3-9b3f-4970-8a1f-c6af37f087bf.svg">
    </picture>
  </a>
</p>
<h1 align="center">
  Medusa UI
</h1>

<h4 align="center">
  <a href="https://docs.medusajs.com/ui">Documentation</a> |
  <a href="https://www.medusajs.com">Website</a>
</h4>

<p align="center">
  Medusa's admin component library.
</p>
<p align="center">
  <a href="https://github.com/medusajs/medusa/blob/develop/LICENSE">
    <img src="https://img.shields.io/badge/license-MIT-blue.svg" alt="Medusa is released under the MIT license." />
  </a>
  <a href="https://discord.gg/xpCwq3Kfn8">
    <img src="https://img.shields.io/badge/chat-on%20discord-7289DA.svg" alt="Discord Chat" />
  </a>
  <a href="https://twitter.com/intent/follow?screen_name=medusajs">
    <img src="https://img.shields.io/twitter/follow/medusajs.svg?label=Follow%20@medusajs" alt="Follow @medusajs" />
  </a>
</p>

## Getting Started

### Installation

```sh
yarn add @medusajs/ui
```

### Usage

```jsx
import { Button } from "@medusajs/ui"

const App = () => <Button variant="primary">Hello World</Button>
```

## Documentation

You can find the documentation for Medusa UI [on the documentation site](https://docs.medusajs.com/ui).
npm package: @freshbox-medusa/ui-preset
Description: Medusa UI preset
Author: Kasper Kristensen
Latest version: 1.0.3

<p align="center">
  <a href="https://www.medusajs.com">
  <picture>
    <source media="(prefers-color-scheme: dark)" srcset="https://user-images.githubusercontent.com/59018053/229103275-b5e482bb-4601-46e6-8142-244f531cebdb.svg">
    <source media="(prefers-color-scheme: light)" srcset="https://user-images.githubusercontent.com/59018053/229103726-e5b529a3-9b3f-4970-8a1f-c6af37f087bf.svg">
    <img alt="Medusa logo" src="https://user-images.githubusercontent.com/59018053/229103726-e5b529a3-9b3f-4970-8a1f-c6af37f087bf.svg">
    </picture>
  </a>
</p>
<h1 align="center">
  Medusa UI
</h1>

<h4 align="center">
  <a href="https://docs.medusajs.com/ui">Documentation</a> |
  <a href="https://www.medusajs.com">Website</a>
</h4>

<p align="center">
  Medusa's design system tokens.
</p>
<p align="center">
  <a href="https://github.com/medusajs/medusa/blob/develop/LICENSE">
    <img src="https://img.shields.io/badge/license-MIT-blue.svg" alt="Medusa is released under the MIT license." />
  </a>
  <a href="https://discord.gg/xpCwq3Kfn8">
    <img src="https://img.shields.io/badge/chat-on%20discord-7289DA.svg" alt="Discord Chat" />
  </a>
  <a href="https://twitter.com/intent/follow?screen_name=medusajs">
    <img src="https://img.shields.io/twitter/follow/medusajs.svg?label=Follow%20@medusajs" alt="Follow @medusajs" />
  </a>
</p>

## Note

This package is auto-generated, and requires a Figma token associated with the Medusa Figma organization. If you are a not a Medusa team member, you will not be able to make changes to this package. If you discover any issues please open an issue instead of a PR.