open-index/open-npm huggingface dataset:
npm package: @modulehub/expo-custom-strings
Description: **ModuleHub Expo Custom Strings Plugin** Internal Expo config plugin for injecting custom Android string resources into strings.xml during expo prebuild.
Author: Manoj and Raswanth
Latest version: 1.0.1

**ModuleHub Expo Custom Strings Plugin**
Internal Expo config plugin for injecting custom Android string resources into strings.xml during expo prebuild.

This allows native Android string values to be configured directly from app.json.

📦 Installation
1️⃣ Add the dependency in your app’s package.json
{
  "dependencies": {
    "@modulehub/expo-custom-strings":"1.0.0"
  }
}
2️⃣ Install dependencies

Using pnpm:

pnpm install
⚙️ Usage
1️⃣ Configure the plugin in app.json
{
  "expo": {
    "plugins": [
      [
        "@modulehub/expo-custom-strings",
        {
          "api_url": {
            "value": "https://example.com",
            "moduleConfig": true
          },
          "app_name_native": {
            "value": "value"
          }
        }
      ]
    ]
  }
}
2️⃣ Run prebuild
npx expo prebuild
🧠 What It Does

During prebuild, the plugin:

Reads Android strings.xml

Appends new <string> entries

Skips keys that already exist

Optionally adds moduleConfig="true" attribute

Example output:

<string name="api_url" moduleConfig="true">
  https://example.com
</string>

<string name="app_name_native">
  example_value
</string>
🛠 Configuration Format

Each string entry must follow:

{
  "string_key": {
    "value": "string value",
    "moduleConfig": true
  }
}
npm package: @modulehub/react-native-safe-touch
Description: Globally prevent rapid multiple taps on Pressable, TouchableOpacity, TouchableHighlight and Button without modifying screens
Author: Manoj and Raswanth
Latest version: 1.0.0

# react-native-safe-touch

Prevent rapid multiple taps on **Pressable**, **TouchableOpacity**, **TouchableHighlight**, and **Button** across your app. No more `if (loading) return` in every button.

Install from npm:

```bash
npm install react-native-safe-touch
```

## Quick start

**1. Add the Babel plugin** in your app’s `babel.config.js` (project root):

```js
module.exports = {
  presets: ['module:@react-native/babel-preset'],
  plugins: ['react-native-safe-touch/babel-plugin-react-native-safe-touch'],
};
```

If you use other plugins (e.g. reanimated), add safe-touch **before** them and keep **reanimated last**:

```js
plugins: [
  'react-native-safe-touch/babel-plugin-react-native-safe-touch',
  'react-native-reanimated/plugin',  // must be last
],
```

**2. Call `safeTouch()` once** at app entry (e.g. in `App.js` or `App.tsx`):

```tsx
import { safeTouch } from 'react-native-safe-touch';

safeTouch({ debounce: 600 }); // optional: default 500ms

export default function App() {
  return ( /* ... */ );
}
```

**3. Use touchables as usual.** Keep importing from `react-native`; the plugin rewrites the four touchables to the debounced versions:

```tsx
import { View, Text, TouchableOpacity } from 'react-native';

<TouchableOpacity onPress={handleSubmit}>
  <Text>Submit</Text>
</TouchableOpacity>
```

Rapid taps are debounced globally. After any Babel config change, run:

```bash
npx react-native start --reset-cache
```

## Without the Babel plugin (direct import)

If the plugin doesn’t run in your setup (e.g. Metro not loading `babel.config.js`), import the touchables from the package where you need debounce:

```tsx
import { View, Text, StyleSheet } from 'react-native';
import { TouchableOpacity } from 'react-native-safe-touch';

safeTouch({ debounce: 600 }); // still call once at app entry
```

Same for `Pressable`, `TouchableHighlight`, `Button`: import them from `'react-native-safe-touch'`.

## API

```ts
safeTouch(options?: {
  /** Minimum ms between allowed presses. Default: 500 */
  debounce?: number;
}): void
```

**Exports:** `safeTouch`, `Pressable`, `TouchableOpacity`, `TouchableHighlight`, `Button`, and `SafePressable`, `SafeTouchableOpacity`, `SafeTouchableHighlight`, `SafeButton`.

## Requirements

- React Native ≥ 0.60 (Pressable supported from 0.63+)
- React ≥ 16.8

## Troubleshooting

- **Debounce not working (log on every tap)**  
  The Babel plugin is not running. Ensure `babel.config.js` is in the project root. If your `package.json` has `"type": "module"`, rename the config to `babel.config.cjs`. Then run `npx react-native start --reset-cache`. Or use the [direct import](#without-the-babel-plugin-direct-import) from `react-native-safe-touch`.

- **Web build**  
  If you use Webpack for web, pass the **full** Babel config (presets + plugins) to `babel-loader`, not only presets and `plugins: ['react-native-web']`, so the safe-touch plugin runs.

## License

MIT
npm package: @moduler-prompt/core
Description: Core module for modular prompt framework
Latest version: 0.1.9
Deprecated: Package no longer supported. Contact Support at https://www.npmjs.com/support for more info.

# @moduler-prompt/core

プロンプトモジュールフレームワークのコアパッケージ。

## 📚 ドキュメント

詳細は[ドキュメント](https://github.com/otolab/moduler-prompt/tree/main/docs)を参照してください。

## インストール

```bash
npm install @moduler-prompt/core
```

## 基本的な使用方法

```typescript
import { compile, merge, createContext } from '@moduler-prompt/core';
import type { PromptModule } from '@moduler-prompt/core';

// Context型定義
interface MyContext {
  inputs?: string;
}

// プロセスモジュール（処理方法を定義）
const processModule: PromptModule<MyContext> = {
  methodology: ['データを処理する'],
  inputs: [(ctx) => ctx.inputs || '']
};

// ユーザーモジュール（タスクを定義）
const userModule = {
  objective: ['タスクの目的'],
  instructions: ['具体的な指示']
};

// マージしてContextを取得
const merged = merge(processModule, userModule);
const context = createContext(merged);
context.inputs = 'データ';

// コンパイル
const compiled = compile(merged, context);
// compiled: CompiledPrompt
// {
//   instructions: SectionElement[]  // 指示セクション群
//   data: SectionElement[]          // データセクション群
//   output: SectionElement[]        // 出力セクション群
//   metadata?: { outputSchema }     // メタデータ
// }
```

## 主要な機能

- **PromptModule**: 再利用可能なプロンプトテンプレート
- **compile**: モジュールを実行可能な形式に変換
- **merge**: 複数のモジュールを合成
- **createContext**: マージ済みモジュールから型安全なContextを取得

## ライセンス

MIT
npm package: @moduler-prompt/simple-chat
Description: Sample implementation: Simple chat application using Moduler Prompt with MLX models
Latest version: 0.1.12
Deprecated: Package no longer supported. Contact Support at https://www.npmjs.com/support for more info.

# Simple Chat - サンプル実装

Moduler Promptフレームワークを使用したチャットアプリケーションのサンプル実装です。実際のアプリケーションでフレームワークをどのように使用するかを示すリファレンス実装として提供されています。

## 概要

このパッケージは以下を実演します：
- PromptModuleの静的定義とコンテキストバインディング
- `merge`を使用したモジュール合成（`withMaterials`の活用）
- MLXドライバーを使用したAIモデルとの対話
- チャットログの管理とリソースファイルの処理

## インストール

```bash
npm install @moduler-prompt/simple-chat
```

## 使用方法

### CLIとして使用

```bash
# 直接メッセージを送信
simple-chat "こんにちは"

# プロファイルを指定
simple-chat -p profile.yaml "質問があります"

# チャットログを保存・継続
simple-chat -l chat.json "会話を続けます"

# 標準入力から読み込み
echo "長い質問文..." | simple-chat --stdin

# オプションの組み合わせ
simple-chat -p custom.yaml -l session.json --temperature 0.8 "創造的な回答をお願いします"
```

### ライブラリとして使用

```typescript
import { chatPromptModule, performAIChat } from '@moduler-prompt/simple-chat';
```

## 対話プロファイル

対話プロファイルは、チャットの動作を制御するYAML形式の設定ファイルです。

### プロファイルの構造

```yaml
# 使用するAIモデル
model: "mlx-community/gemma-3-270m-it-qat-4bit"

# ドライバータイプ（現在はmlxのみサポート）
driver: "mlx"

# システムプロンプト - AIの基本的な振る舞いを定義
systemPrompt: |
  あなたは親切で知識豊富なAIアシスタントです。
  ユーザーの質問に対して、正確で分かりやすい回答を提供してください。
  日本語で応答してください。

# 初回メッセージ（オプション）- 新規セッション開始時の挨拶
preMessage: "こんにちは！何かお手伝いできることはありますか？"

# 参照ファイル（オプション）- プロンプトに含める追加資料
resourceFiles:
  - "./docs/guide.md"
  - "./data/reference.txt"

# 生成オプション
options:
  temperature: 0.7      # 生成の創造性（0.0-2.0）
  maxTokens: 4000      # 最大トークン数
  topP: 0.9            # トップP サンプリング
```

### デフォルトプロファイル

プロファイルを指定しない場合、以下のデフォルト設定が使用されます：

- **model**: mlx-community/gemma-3-270m-it-qat-4bit
- **systemPrompt**: 親切で知識豊富なAIアシスタントとしての基本設定
- **temperature**: 0.7
- **maxTokens**: 4000

### プロファイルの活用例

#### 1. 技術サポート用プロファイル

```yaml
model: "mlx-community/gemma-3-270m-it-qat-4bit"
systemPrompt: |
  あなたはソフトウェア開発の専門家です。
  技術的な質問に対して、具体的なコード例を交えて回答してください。
  エラーの解決方法を段階的に説明してください。
options:
  temperature: 0.3  # より正確な回答のため低めに設定
```

#### 2. 創作支援用プロファイル

```yaml
model: "mlx-community/gemma-3-270m-it-qat-4bit"  
systemPrompt: |
  あなたは創造的な文章作成を支援するアシスタントです。
  ユーザーのアイデアを発展させ、独創的な提案を行ってください。
options:
  temperature: 1.2  # 創造性を高めるため高めに設定
  maxTokens: 8000  # 長い文章生成に対応
```

## 実装のポイント

このサンプル実装では、Moduler Promptフレームワークの主要な機能を実際のアプリケーションで活用する方法を示しています：

1. **静的なモジュール定義**: `chatPromptModule`は静的に定義されたテンプレート
2. **モジュールの合成**: `@moduler-prompt/process`の`withMaterials`モジュールとの合成
3. **型安全なコンテキスト**: `ChatContext`による型定義
4. **段階的なデータバインディング**: createContext → データ設定 → compile

詳細は[プロンプトモジュール仕様書](../../docs/PROMPT_MODULE_SPECIFICATION.md)の実装例セクションを参照してください。
npm package: @modulespress/vite-plugin
Description: Vite plugin for ModulesPress framework.
Author: Saad Nadeem
Latest version: 1.0.2

# @modulespress/vite-plugin

<p align="center">
  <img src="https://modulespress.devsroutes.co/logo.png" alt="ModulesPress Logo" width="200"/>
</p>

<p align="center">
  A Vite plugin for ModulesPress framework that enables modern frontend development in WordPress plugins.
</p>

## Features

- TypeScript and React support out of the box
- SCSS processing with modern API
- Hot Module Replacement (HMR) for PHP files
- Asset manifest generation
- Optimized build output structure

## Installation

```bash
npm install @modulespress/vite-plugin --save-dev
```

## Usage

```typescript
// vite.config.ts
import { defineConfig } from 'vite'
import { ModulesPressVitePlugin } from '@modulespress/vite-plugin'

export default defineConfig({
  plugins: [
    ModulesPressVitePlugin({
      // options
    })
  ]
})
```

## Options

| Option | Type | Default | Description |
|--------|------|---------|-------------|
| `inputPatterns` | `string[]` | `['./**/*.(script.ts\|script.tsx)', './**/*.style.scss']` | Glob patterns for entry files |
| `pluginRootDir` | `string` | `'./'` | Root directory of your plugin |
| `scssOptions` | `Record<string, any>` | `{ api: 'modern-compiler' }` | SCSS compiler options |
| `refreshExtensions` | `string[] \| false` | `['.php']` | File extensions that trigger full page reload |

## Requirements

- Node.js 14.x or higher
- Vite 5.x
- TypeScript (for TypeScript usage)

## License

MIT License - see [LICENSE](LICENSE) file for details

## Contributing

We welcome contributions! Here's how you can help:

1. Fork the repository
2. Create your feature branch (`git checkout -b feature/amazing-feature`)
3. Commit your changes (`git commit -m 'Add some amazing feature'`)
4. Push to the branch (`git push origin feature/amazing-feature`)
5. Open a Pull Request

### Development Setup

1. Clone the repository
2. Install dependencies: `npm install`
3. Make your changes
4. Build the plugin: `npm run build`
5. Test your changes

### Guidelines

- Follow the existing code style
- Write clear commit messages
- Add tests if applicable
- Update documentation as needed

For major changes, please open an issue first to discuss what you would like to change.
npm package: @modulist/css
Description: The Modulist is a CSS design system
Author: SimplyStack
Latest version: 1.0.0-alpha.39

# Modulist CSS

The Modulist is a CSS design system. See [documentation](https://simplystack.github.io/modulist-css/).


## Install
```sh
$ npm install --save @modulist/css
```

## Usage
import in your js:
```js
import "@modulist/css/dist/modulist.css";
```

## In browser
```html
<link rel="stylesheet" href="https://unpkg.com/@modulist/css">
```

## Development
The included source files are written in CSS but needed to be compiled using postcss.

Create **postcss.config.js** in root folder:
```javascript
module.exports = {
  plugins: [
    require('autoprefixer'),
    require('postcss-import'),
    require('postcss-nested'),
    require('postcss-preset-env')({
      features: {
        'custom-media-queries': true,
        'custom-properties': false,
      },
    }),
    require('cssnano')({ preset: 'default' }),
  ]
};
```

import in your js:
```js
import "@modulist/css/main.css";
```

## License
MIT
npm package: @modulist/icons
Description: SVG icons and illustrations for Modulist design system
Author: SimplyStack
Latest version: 1.0.0-alpha.0

# Modulist Icons

SVG icons and illustrations for Modulist design system. See [documentation](https://simplystack.github.io/modulist-css/icons/).


## Install
```sh
$ npm install --save @modulist/icons
```
npm package: @modulist/vue
Description: Vue components for the Modulist Design System
Author: SimplyStack
Latest version: 1.0.0-alpha.39

# Modulist Vue

Vue components for the Modulist Design System

## Install

If you are using module bundlers such as Webpack, you can directly include package into your project via:

**Note**

Please note that this library is not contains any CSS, it only provides javascript functionality for components. You can write your own or install [Modulist CSS design system](https://github.com/simplystack/modulist-css/).

**NPM**
``` bash
$ npm install @modulist/vue --save
```

Then register `modulist-vue` components and directives all at once in your app's entry:

``` js
// main.js
import Vue from 'vue';
import ModulistVue from '@modulist/vue';

Vue.use(ModulistVue);
```

**Browser**

Alternatively, you can include script directly on your html page. See [example here](https://github.com/simplystack/modulist-vue/blob/master/examples/browser/index.html).

```html
<div id="app">
  <!-- Components here ...-->
  <v-button appearance="primary">My button</v-button>
</div>

<!-- First, include Vue library -->
<script src="https://unpkg.com/vue"></script>
<!-- Then library itself -->
<script src="https://unpkg.com/@modulist/vue"></script>
<script>
  new Vue({
    el: '#app',
  });
</script>
```
npm package: @modullo/cli
Description: Modullo CLI
Latest version: 1.1.10

## Welcome to the Modullo CLI Guide

Modullo is a modern developer application platform and CLI "Swiss Army Knife" tool to facilite rapid application prototyping with multiple software frameworks, CI/CD, containerized packaging and deployment across multiple IaaS and PaaS providers.

To learn more about the Modullo Framework, [read the documentation](https://github.com/modullo)

### Whats New?

- Provision remote Linux VMs
- Create one or multiple Github repositories with a single CLI command

### Support or Contact

Have any queries? Send an email to **support@modullo.io** or [visit the website](https://modullo.io).

---
npm package: @modulo-p/cardano-serialization-lib-browser
Description: (De)serialization functions for the Cardano blockchain along with related utility functions
Author: EMURGO
Latest version: 12.0.0-alpha.23

# Cardano Serialization Lib

This is a library, written in Rust, for serialization & deserialization of data structures used in Cardano's Haskell implementation of Alonzo along with useful utility functions.

##### NPM packages

- [NodeJS WASM package](https://www.npmjs.com/package/@emurgo/cardano-serialization-lib-nodejs)
- [Browser (chrome/firefox) WASM package](https://www.npmjs.com/package/@emurgo/cardano-serialization-lib-browser)
- [Browser (pure JS - no WASM) ASM.js package](https://www.npmjs.com/package/@emurgo/cardano-serialization-lib-asmjs)

##### Rust crates

- [cardano-serialization-lib](https://crates.io/crates/cardano-serialization-lib)

##### Mobile bindings

- [React-Native mobile bindings](https://github.com/Emurgo/react-native-haskell-shelley)

## Documentation

You can find documentation [here](https://developers.cardano.org/docs/get-started/cardano-serialization-lib/overview)
npm package: @modulo-p/cardano-serialization-lib-nodejs
Description: (De)serialization functions for the Cardano blockchain along with related utility functions
Author: EMURGO
Latest version: 12.0.0-alpha.23

# Cardano Serialization Lib

This is a library, written in Rust, for serialization & deserialization of data structures used in Cardano's Haskell implementation of Alonzo along with useful utility functions.

##### NPM packages

- [NodeJS WASM package](https://www.npmjs.com/package/@emurgo/cardano-serialization-lib-nodejs)
- [Browser (chrome/firefox) WASM package](https://www.npmjs.com/package/@emurgo/cardano-serialization-lib-browser)
- [Browser (pure JS - no WASM) ASM.js package](https://www.npmjs.com/package/@emurgo/cardano-serialization-lib-asmjs)

##### Rust crates

- [cardano-serialization-lib](https://crates.io/crates/cardano-serialization-lib)

##### Mobile bindings

- [React-Native mobile bindings](https://github.com/Emurgo/react-native-haskell-shelley)

## Documentation

You can find documentation [here](https://developers.cardano.org/docs/get-started/cardano-serialization-lib/overview)
npm package: @modulon/application
Description: somethings
Latest version: 1.0.1

```ts
import { Context, Component } from "@typon/injection";
import { Application, Terminater } from './index';

const ctx = new Context();

@Component.Injectable
class X extends Component {
  public readonly time = Date.now();
}

@Application.Injectable
class ABC extends Application {

  @Application.Inject(X)
  private readonly x: X;

  @Application.State
  public a1 = 1;

  @Application.State
  public a2 = 2;

  public initialize(): Terminater {
    console.log('initialized')
    this.emit('test', 1);
    this.a1 = 3 + this.x.time;
    setTimeout(() => {
      this.a2 = 10;
      this.a1 = 5
    }, 3000)
    return () => console.log('terminated');
  }

  @Application.Event
  test(val: number) {
    console.log('event:test', val + 1);
  }

  @Application.Watch('a1')
  ta1(newValue: number, oldValue: number) {
    console.log('newValue', newValue, 'oldValue', oldValue, this.a1)
  }
}

ctx.use(ABC).then(() => Application.Terminate());
```
npm package: @modulon/injection
Description: somethings
Latest version: 1.0.1

```ts
import { Component, Context, inject, injectable } from './index';

const ctx = new Context();

abstract class Service extends Component {
  abstract main(): Promise<void>;
}

const Injectable = injectable();
const ServiceInjectable = injectable(async (ctx: Service) => {
  if (ctx.main) {
    await ctx.main();
  }
});

@Injectable
class X extends Component {
  public readonly time = Date.now();
}

@ServiceInjectable
class A extends Service {
  async main(): Promise<void> {
    console.log('a main')
  }
}

@Injectable
class B extends A {
  @inject(X)
  public readonly x1: X;
}

@Injectable
class C extends B {
  @inject(X)
  public readonly x2: X;
}

@Injectable
class D extends C {
  @inject(X)
  public readonly x3: X;
}

@Injectable
class E extends B {
  @inject(X)
  public readonly x4: X;
}

@Injectable
class F extends A {
  @inject(X)
  public readonly x5: X;
}

@Injectable
class G extends E {
  @inject(F)
  public readonly f: F;
}

ctx.use(D).then(res => console.log('d', res))
// ctx.use(E).then(res => console.log('e', res))
// ctx.use(F).then(res => console.log('f', res))
// ctx.use(G).then(res => console.log('g', res))
// console.log(container)
```
npm package: @modulus/logger
Description: Winston wrapper with simplified interface
Author: Jack Boberg
Latest version: 1.2.0

# Modulus logger

[![version](https://img.shields.io/npm/v/@modulus/logger.svg?style=flat-square)][version]
[![build](https://img.shields.io/travis/onmodulus/logger.svg?style=flat-square)][build]
[![coverage](https://img.shields.io/codeclimate/coverage/github/onmodulus/logger.svg?style=flat-square)][coverage]
[![code climate](https://img.shields.io/codeclimate/github/onmodulus/logger.svg?style=flat-square)][climate]
[![license](https://img.shields.io/badge/license-MIT-blue.svg?style=flat-square)][license]

A Winston wrapper with a simplified interface.

## Install

`npm install @modulus/logger`

## Usage

The returned object is a [winston] logger instance, so all behavior is
documented on that project. The addition of a namespace prefix mimics behavior
of our other favorite logger: [debug].

```
const Logger = require('@modulus/logger')('namespace');

Logger.info('message', { example: true });

// writes to process.stdout
// 2015-11-28T01:38:45.979Z INFO namespace message {"example":true}
```

### Log level

The default log level is `info`, but can be configured using the environment
variable `LOG_LEVEL`.

### Exceptions

All uncaught exceptions are automatically logged to `stderr` and the process is
exited. There is no need to add an additional handler. If you would like to
enable the additional behavior of writing all exceptions to a file, you can!

```
const Logger = require('@modulus/logger');

Logger.writeExceptions(PATH);

// you can still use the factory to get a logger instance for this file
var logger = Logger('namespace');
logger.info('message', { example: true });
```

Note, you must use the required module directly, and create a logger instance
separately. You typically only need to do this in your main file, so the
additional overhead is minimal.

#### Pre-exit procedure

You can also provide an synchronous function to call before exiting the process
as a second parameter to `writeExceptions`, which should return a `Boolean`.

```
const Logger = require('@modulus/logger');

function exitOnError(exception) {
  // perform pre-exit process
  return true; // you could choose to not exit, based on the exception
}

Logger.writeExceptions(PATH, exitOnError);
```

[winston]: https://www.npmjs.com/package/winston
[debug]: https://www.npmjs.com/package/debug

[version]: https://www.npmjs.com/package/@modulus/logger
[build]: https://travis-ci.org/onmodulus/logger
[coverage]: https://codeclimate.com/github/onmodulus/logger/coverage
[climate]: https://codeclimate.com/github/onmodulus/logger/code
[license]: https://raw.githubusercontent.com/onmodulus/logger/master/LICENSE
npm package: @modulus/rabbit-channel
Description: wrapper for creating a rabbitMQ connection and opening a channel
Author: Modulus
Latest version: 1.0.0

# @modulus&#x2F;rabbit-channel

[![npm][npm-image]][npm-url]
[![travis][travis-image]][travis-url]
[![standard][standard-image]][standard-url]

[npm-image]: https://img.shields.io/npm/v/@modulus&#x2F;rabbit-channel.svg?style=flat-square
[npm-url]: https://www.npmjs.com/package/@modulus&#x2F;rabbit-channel
[travis-image]: https://img.shields.io/travis/jackboberg/@modulus&#x2F;rabbit-channel.svg?style=flat-square
[travis-url]: https://travis-ci.org/jackboberg/@modulus&#x2F;rabbit-channel
[standard-image]: https://img.shields.io/badge/code%20style-standard-brightgreen.svg?style=flat-square
[standard-url]: http://npm.im/standard

> wrapper for creating a rabbitMQ connection and opening a channel

It gets tedious to start every rabbit interaction with the same two function
calls:

```js
const Amqp = require('amqplib/callback_api')

Amqp.connect(url, options, (err, connection) => {
  if (err) throw err

  connection.createChannel((err, channel) => {
    if (err) throw err

    // ready to start actually scripting
  })
})
```

Additionally, using this module abstracts the dependency on `amqplib` (a little).

## Install

```
npm install @modulus/rabbit-channel
```

## Usage

The exported function takes the same parameters as [`amqplib.connect`][amqplib],
and yields `channel` and `connection` objects.

```js
const RabbitChannel = require('@modulus/rabbit-channel')

RabbitChannel(url, options, (err, channel, connection) {
  if (err) throw err

  // have 
})
```

## Contributing

Contributions welcome! Please read the [contributing guidelines](CONTRIBUTING.md) first.

## License

[MIT](LICENSE.md)

[amqplib]: http://www.squaremobius.net/amqp.node/channel_api.html#connect
npm package: @modulus/rabbit-pubsub
Description: amqplib wrapper for easier rabbitmq scripting of pub/sub model
Author: John Musgrave
Latest version: 0.2.1

## Rabbit-PubSub

[![version](https://img.shields.io/npm/v/@modulus/rabbit-pubsub.svg?style=flat-square)][version]
[![build](https://img.shields.io/travis/onmodulus/rabbit-pubsub/master.svg?style=flat-square)][build]
[![license](https://img.shields.io/badge/license-MIT-blue.svg?style=flat-square)][license]

amqplib wrapper for easier rabbitmq scripting of pub/sub model

### Install

`npm install @modulus/rabbit-pubsub`

### Usage

#### `RabbitPubSub(url, [options])`

The exported function takes the same parameters as [`amqplib.connect`][amqplib],
and returns a object with two exported functions, `publish` and `subscribe`.


#### `Publish(exchange, message, done)`

Sends data to subscribers and yields.

```
const PubSub = require('@modulus/rabbit-rpc')(url)

PubSub.publish('tasks', { message: true }, (err, result) => {
  if (err) throw err // unable to publish

  console.log('message delivered')
})
```


#### `Subscribe(exchange, worker)`

Consumes messages on subscribed topics and passes them to worker. When worker calls
done acknowledges the message and sends the result to the client.

```
const PubSub = require('@modulus/rabbit-rpc')(url)

PubSub.subscribe('tasks', (msg, done) => {
  // do work
  done(null, { result: true })
})
```

## Contribute

Contributions welcome! Please read the [contributing guidelines](CONTRIBUTING.md) first.

[amqplib]: http://www.squaremobius.net/amqp.node/channel_api.html#connect

[version]: https://www.npmjs.com/package/@modulus/rabbit-pubsub
[build]: https://travis-ci.org/onmodulus/rabbit-pubsub
[license]: https://raw.githubusercontent.com/onmodulus/rabbit-pubsub/master/LICENSE
npm package: @modulus/rabbit-rpc
Description: amqplib wrapper for easier rabbitmq scripting of RPC interface
Author: Jack Boberg
Latest version: 0.3.0

## Rabbit-RPC

[![version](https://img.shields.io/npm/v/@modulus/rabbit-rpc.svg?style=flat-square)][version]
[![build](https://img.shields.io/travis/onmodulus/rabbit-rpc/master.svg?style=flat-square)][build]
[![license](https://img.shields.io/badge/license-MIT-blue.svg?style=flat-square)][license]

amqplib wrapper for easier rabbitmq scripting of RPC interface

### Install

`npm install @modulus/rabbit-rpc`

### Usage

#### `RabbitRPC(url, [options])`

The exported function takes the same parameters as [`amqplib.connect`][amqplib],
and returns a object with two exported functions, `client` and `server`.

#### `Client(queueName, data, done)`

Sends data to queue and yields reply.

```
const RPC = require('@modulus/rabbit-rpc')(url)

RPC.client('rpc-queue', { message: true }, (err, result) => {
  if (err) throw err

  console.log(`worker returned ${result}`)
})
```

#### `Server(queueName, worker, [capacity])`

Consumes messages on given queue and passes them to worker. When worker calls
done acknowledges the message and sends the result to the client.

```
const RPC = require('@modulus/rabbit-rpc')(url)

RPC.server('rpc-queue', (msg, done) => {
  // do work
  done(null, { result: true })
})
```

[amqplib]: http://www.squaremobius.net/amqp.node/channel_api.html#connect

[version]: https://www.npmjs.com/package/@modulus/rabbit-rpc
[build]: https://travis-ci.org/onmodulus/rabbit-rpc
[license]: https://raw.githubusercontent.com/onmodulus/rabbit-rpc/master/LICENSE
npm package: @modulus/rabbit-topics
Description: amqplib wrapper for easier rabbitmq scripting of topics queue
Author: Jack Boberg
Latest version: 0.2.0

# Rabbit-Topics

[![npm][npm-image]][npm-url]
[![travis][travis-image]][travis-url]
[![standard][standard-image]][standard-url]
[![standard-readme compliant][standard-readme-image]][standard-readme-url]

[npm-image]: https://img.shields.io/npm/v/@modulus/rabbit-topics.svg?style=flat-square
[npm-url]: https://www.npmjs.com/package/@modulus/rabbit-topics
[travis-image]: https://img.shields.io/travis/onmodulus/rabbit-topics.svg?style=flat-square
[travis-url]: https://travis-ci.org/onmodulu/rabbit-topics
[standard-image]: https://img.shields.io/badge/code%20style-mod--standard-green.svg?style=flat-square
[standard-url]: http://npm.im/@modulus/standard
[standard-readme-image]: https://img.shields.io/badge/standard--readme-OK-green.svg?style=flat-square
[standard-readme-url]: https://github.com/RichardLitt/standard-readme

> amqplib wrapper for easier rabbitmq scripting of topics queue

## Table of Contents

- [Installation](#installation)
- [Usage](#usage)
- [Contribute](#contribute)
- [License](#license)

## Installation

```sh
npm install @modulus/rabbit-topics
```

## Usage

#### `RabbitTopics(url, [options])`

The exported function takes the same parameters as [`amqplib.connect`][amqplib],
and returns a object with two exported functions, `publish` and `subscribe`.

#### `Publish(exchange, topic, message, done)`

Sends data to the topic exchange and yeilds

```js
const Topics = require('@modulus/rabbit-topics')(url)

Topics.publish('tasks', 'servo.provision', { message: true }, (err) => {
  if (err) throw err // unable to publish

  console.log('message delivered')
})
```

#### `Subscribe(exchange, topic, worker)`

Consumes matching topic messages on the exchange

```js
const Topics = require('@modulus/rabbit-topics')(url)

Topics.subscribe('tasks', 'servo.#', (message, done) => {
  // do work
  done(null, { result: true })
})
```

## Contribute

Contributions welcome! Please read the [contributing guidelines](CONTRIBUTING.md) first.

## License

[MIT](LICENSE.md)

[amqplib]: http://www.squaremobius.net/amqp.node/channel_api.html#connect
npm package: @modulus/rpc-worker
Description: installs a package and starts rpc-server using exported function
Author: Jack Boberg
Latest version: 0.1.0

## RPC Worker

> installs a package and starts rpc-server using exported function


### Usage

```
> rpc-worker --help
Usage: rpc-worker [options] <pkg>

    -v, --version         output current version
    -h, --host            RabbitMQ host (default: "amqp://localhost")
    -q, --queue           RabbitMQ queue name (default: "rpc-queue")
    -c, --capacity        Number of jobs to process in parallel
    -t, --tls             Directory with TLS keys: /keys/ca.pem, /keys/cert.pem, /keys/key.pem
    --opts                Set net|tls options (eg: --opts.passphrase secret)
```

#### Examples

Start a worker connecting to a local RabbitMQ instance and using `request` to
answer three RPC calls in parallel:

`rpc-worker -c 3 request`

Process one request at a time from a secure RabbitMQ to get the gravatar
profile of a given email:

```
rpc-worker -h amqps://admin:pencil@rabbit.example.com \
  --tls /path/to/ssl/keys \
  --opts.passphrase mySecret1 \
  gravatar-profile
```

##### Using the docker iamge

```
docker pull onmodulus/rpc-worker
docker run -it onmodulus/rpc-worker # prints help

docker run -d -v ~/.npmrc:/mnt/app/.npmrc \
  onmodulus/rpc-worker @modulus/private-module
```
npm package: @modulus/standard
Description: JavaScript Standard Modulus Style
Author: Jack Boberg
Latest version: 2.0.0

# JavaScript Standard Modulus Style

[![version](https://img.shields.io/npm/v/@modulus/standard.svg?style=flat-square)][version]
[![build](https://img.shields.io/travis/onmodulus/standard/master.svg?style=flat-square)][build]
[![license](https://img.shields.io/badge/license-MIT-blue.svg?style=flat-square)][license]

A [standard-engine][engine] implementation wrapping the
[eslint-config-modulus][eslint] shared config.

## Install

```bash
npm install @modulus/standard --save-dev
```

## Usage

```bash
$ mod-standard
Error: Use JavaScript Standard Modulus Style
  lib/torrent.js:950:11: Expected '===' and instead saw '=='.
```

## Lint before testing

```json
// package.json
{
  "scripts": {
    "pretest": "mod-standard",
    "test": "lab -c"
  }
}
```

[engine]: https://github.com/Flet/standard-engine
[eslint]: https://github.com/onmodulus/eslint-config

[version]: https://www.npmjs.com/package/@modulus/standard
[build]: https://travis-ci.org/onmodulus/standard
[license]: https://raw.githubusercontent.com/onmodulus/standard/master/LICENSE
npm package: @modulusv/core
Description: Core definitions for ModulusV framework
Author: Andrey Vyalkov
Latest version: 1.0.5

# ModulusV Core

Core definitions for the ModulusV framework.

## Installation

```bash
npm install @modulusv/core
```

## Usage

```typescript
import { getModulusVCore } from "@modulusv/core";

const core = getModulusVCore();
```
npm package: @modulusv/interface
Description: TypeScript interfaces for ModulusV framework
Author: Andrey Vyalkov
Latest version: 1.0.4

# @modulusv/interface

TypeScript interfaces for ModulusV framework.

## Installation

```bash
npm install @modulusv/interface
```

## Available Types

This package contains TypeScript interfaces for:

- **ApplicationInfo** - Application metadata and configuration
- **AuthorityModel** - Authorization and permissions
- **CommonTypes** - Common utility types
- **DeployInfo** - Deployment configuration
- **LocalesModel** - Localization support
- **ManifestPWAType** - PWA manifest types
- **MenuTypes** - Menu and navigation structures
- **NavigationModel** - Navigation configuration
- **NotificationModel** - Notification system
- **ServicesModel** - Service layer definitions
- **SettingsModel** - Application settings
- **ThemeModel** - Theme configuration
- **ViewTypes** - View and component types

## License

MIT
npm package: @modulusv/react
Description: React components and hooks for ModulusV framework
Author: Andrey Vyalkov
Latest version: 1.0.4

# @modulusv/react

React components and hooks for ModulusV framework.

## Installation

```bash
npm install @modulusv/react @modulusv/core
```

## Usage

### Using the Hook

```typescript
import { useModulusVCore } from "@modulusv/react";

function MyComponent() {
  const modulusVCore = useModulusVCore();

  // Use ModulusV core state and functionality
  return <div>{/* Your component */}</div>;
}
```

## License

MIT
npm package: @modulz/radix
Description: Radix Design System
Author: Pedro Duarte
Latest version: 0.0.1-beta.44

> WIP

# Radix

Radix is a Design System built on top of Radix System.

### Develop

#### Install dependencies

```sh
yarn
```

#### Run Storybook

```sh
yarn storybook
```

#### Watch compiled lib

```sh
yarn watch
```

> Useful when developing in `link` mode

### Build

#### Run build

```sh
yarn build
```

---

### License

MIT © [Modulz](https://modulz.app)
npm package: @modulz/radix-icons
Description: Radix Icon Set
Author: Lochlan Bunn
Latest version: 4.0.0

# Radix Icons

A crisp set of 15×15 icons designed by the [Modulz](https://modulz.app) team.

Visit [icons.modulz.app](https://icons.modulz.app) to browse the icons.

---

## Documentation

All icons are available as individual React components.

Install Radix Icons from npm:

```bash
npm install @modulz/radix-icons
```

Import the icons into your React project:

```js
import { FaceIcon, ImageIcon, SunIcon } from '@modulz/radix-icons'

function MyComponent () {
  return (
    <div>
      <FaceIcon />
      <SunIcon />
      <ImageIcon />
    </div>
  )
}
```

## Contributing

Please follow our [contributing guidelines](./CONTRIBUTING.md).

## Authors

- Vlad Moroz ([@vladyslavmoroz](https://twitter.com/vladyslavmoroz)) - [Modulz](https://modulz.app)
- Colm Tuite ([@colmtuite](https://twitter.com/colmtuite)) - [Modulz](https://modulz.app)
- Pedro Duarte ([@peduarte](https://twitter.com/peduarte)) - [Modulz](https://modulz.app)
- Lochlan Bunn ([@loklaan](https://twitter.com/loklaan))

## License

Licensed under the MIT License, Copyright © 2020-present Modulz.

See [LICENSE](./LICENSE.md) for more information.
npm package: @modulz/radix-system
Description: Radix System Library
Author: Pedro Duarte
Latest version: 0.0.1-alpha.13

> WIP

# Radix System

```sh
yarn add @modulz/radix-system
```

#### Theme-aware responsive style props for building design systems

Built on top of [@styled-system/core](https://github.com/styled-system/styled-system/tree/master/packages/core) by [Brent Jackson](https://github.com/jxnblk).

### Install it

Radix System is currently under development, but if you'd like to use it anyway:

```js
# npm
npm install @modulz/radix-system
```

```js
# yarn
yarn add @modulz/radix-system
```

### Features

Radix System is an alternative to Styled System, built on the same [Core package](https://github.com/styled-system/styled-system/tree/master/packages/core) but with a few tweaks:

- Typescript support
- style functions are independent
- `color` style function has been renamed to `textColor`
- `space` has been split into `margin` and `space`
- Theme-aware `variant` API

### Use it

Import style functions:

```js
import styled from 'styled-components';
import { margin, backgroundColor, compose } from '@modulz/radix-system';

const styleProps = compose(
  margin,
  backgroundColor
);
const Box = styled('div')(styleProps);

const App = () => (
  <Box my={4} bg="blue">
    Hey there 👋
  </Box>
);
```

With Typescript:

```js
import styled from 'styled-components';
import {
  margin,
  MarginProps,
  backgroundColor,
  BackgroundColorProps,
  compose,
} from '@modulz/radix-system';

const styleProps = compose(
  margin,
  backgroundColor
);
type BoxProps = MarginProps & BackgroundColorProps;
const Box = styled('div') < BoxProps > styleProps;

const App = () => (
  <Box my={4} bg="blue">
    Hey there 👋
  </Box>
);
```

### Docs

Proper docs coming soon.

---

### License

MIT © [Modulz](https://modulz.app)
npm package: @modus/cli
Description: Expandable CLI tool for Modus Create projects
Latest version: 1.0.0

[![Modus CLI Tools](./images/modus.logo.svg)](https://moduscreate.com)

# Modus CLI Tools

[![MIT Licensed](https://img.shields.io/badge/license-MIT-blue.svg?style=flat-square)](https://github.com/your/your-project/blob/master/LICENSE)

Useful utility functions for working with high-profile applications and open source software.

## Installing

Download `modus` CLI from npm or yarn.

```shell
npm -g install modus
```

### Setting up Dev

This project is written in Node.js. It's recommended that you use it with Node 8.x+.

```shell
git clone git@github.com:ModusCreateOrg/modus-cli.git
cd modus-cli/
npm install
```

## Api Reference

### Guidelines
Add Modus guidlines repo files to current directory

```shell
modus guidelines
```

Usage: guidelines [options]

Add Modus guidlines repo files to current directory

Options:
* `-r, --repo <path>`  Set remote repo (org/repo/branch), defaults to ModusCrteateOrg/guidelines/master (default:ModusCreateOrg/guidelines/master)
* ` -d, --dest <dir>`   Set destination directory for files.  Defaults to . (default: .)
* `-s, --samples `     Include *.sample.* files from repo
* `-o, --overwrite`    Overwrite existing files from remote repository.  Otherwise, downloaded files that would overwrite are saved as filename._modus_.
* `-h, --help`        output usage information

## Modus Create

[Modus Create](https://moduscreate.com) is a digital product consultancy. We use a distributed team of the best talent in the world to offer a full suite of digital product design-build services; ranging from consumer facing apps, to digital migration, to agile development training, and business transformation.

[![Modus Create](./images/modus.logo.svg)](https://moduscreate.com)

## Licensing

State what the license is and how to find the text version of the license.

e.g. This project is [MIT licensed](./LICENSE).
npm package: @modus/gimbal-core
Description: Core utilities for Modus Gimbal
Author: Mitchell Simoens
Latest version: 1.2.6

# Gimbal Core

[![npm (scoped)](https://img.shields.io/npm/v/@modus/gimbal-core.svg)](https://www.npmjs.com/package/@modus/gimbal-core)
[![npm](https://img.shields.io/npm/dm/@modus/gimbal-core.svg)](https://www.npmjs.com/package/@modus/gimbal-core)
[![CircleCI](https://circleci.com/gh/ModusCreateOrg/gimbal.svg?style=svg&circle-token=070b2e28332dfe71ad3b6b8ab9ee5d472a1d7f76)](https://circleci.com/gh/ModusCreateOrg/gimbal)
[![PRs Welcome](https://img.shields.io/badge/PRs-welcome-brightgreen.svg?style=flat-square)](http://makeapullrequest.com)
[![MIT Licensed](https://img.shields.io/badge/license-MIT-blue.svg?style=flat-square)](./LICENSE)
[![Powered by Modus_Create](https://img.shields.io/badge/powered_by-Modus_Create-blue.svg?longCache=true&style=flat&logo=data:image/svg+xml;base64,PHN2ZyB2aWV3Qm94PSIwIDAgMzIwIDMwMSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KICA8cGF0aCBkPSJNOTguODI0IDE0OS40OThjMCAxMi41Ny0yLjM1NiAyNC41ODItNi42MzcgMzUuNjM3LTQ5LjEtMjQuODEtODIuNzc1LTc1LjY5Mi04Mi43NzUtMTM0LjQ2IDAtMTcuNzgyIDMuMDkxLTM0LjgzOCA4Ljc0OS01MC42NzVhMTQ5LjUzNSAxNDkuNTM1IDAgMCAxIDQxLjEyNCAxMS4wNDYgMTA3Ljg3NyAxMDcuODc3IDAgMCAwLTcuNTIgMzkuNjI4YzAgMzYuODQyIDE4LjQyMyA2OS4zNiA0Ni41NDQgODguOTAzLjMyNiAzLjI2NS41MTUgNi41Ny41MTUgOS45MjF6TTY3LjgyIDE1LjAxOGM0OS4xIDI0LjgxMSA4Mi43NjggNzUuNzExIDgyLjc2OCAxMzQuNDggMCA4My4xNjgtNjcuNDIgMTUwLjU4OC0xNTAuNTg4IDE1MC41ODh2LTQyLjM1M2M1OS43NzggMCAxMDguMjM1LTQ4LjQ1OSAxMDguMjM1LTEwOC4yMzUgMC0zNi44NS0xOC40My02OS4zOC00Ni41NjItODguOTI3YTk5Ljk0OSA5OS45NDkgMCAwIDEtLjQ5Ny05Ljg5NyA5OC41MTIgOTguNTEyIDAgMCAxIDYuNjQ0LTM1LjY1NnptMTU1LjI5MiAxODIuNzE4YzE3LjczNyAzNS41NTggNTQuNDUgNTkuOTk3IDk2Ljg4OCA1OS45OTd2NDIuMzUzYy02MS45NTUgMC0xMTUuMTYyLTM3LjQyLTEzOC4yOC05MC44ODZhMTU4LjgxMSAxNTguODExIDAgMCAwIDQxLjM5Mi0xMS40NjR6bS0xMC4yNi02My41ODlhOTguMjMyIDk4LjIzMiAwIDAgMS00My40MjggMTQuODg5QzE2OS42NTQgNzIuMjI0IDIyNy4zOSA4Ljk1IDMwMS44NDUuMDAzYzQuNzAxIDEzLjE1MiA3LjU5MyAyNy4xNiA4LjQ1IDQxLjcxNC01MC4xMzMgNC40Ni05MC40MzMgNDMuMDgtOTcuNDQzIDkyLjQzem01NC4yNzgtNjguMTA1YzEyLjc5NC04LjEyNyAyNy41NjctMTMuNDA3IDQzLjQ1Mi0xNC45MTEtLjI0NyA4Mi45NTctNjcuNTY3IDE1MC4xMzItMTUwLjU4MiAxNTAuMTMyLTIuODQ2IDAtNS42NzMtLjA4OC04LjQ4LS4yNDNhMTU5LjM3OCAxNTkuMzc4IDAgMCAwIDguMTk4LTQyLjExOGMuMDk0IDAgLjE4Ny4wMDguMjgyLjAwOCA1NC41NTcgMCA5OS42NjUtNDAuMzczIDEwNy4xMy05Mi44Njh6IiBmaWxsPSIjRkZGIiBmaWxsLXJ1bGU9ImV2ZW5vZGQiLz4KPC9zdmc+)](https://moduscreate.com)

Core utilities for [Modus Gimbal](https://www.npmjs.com/package/@modus/gimbal).
npm package: @modus/react-idle
Description: Render components when browser is idle
Author: Grgur Grisogono
Latest version: 1.1.1

# React Idle
[![CircleCI](https://circleci.com/gh/ModusCreateOrg/react-idle/tree/master.svg?style=svg)](https://circleci.com/gh/ModusCreateOrg/react-idle/tree/master)
[![Maintainability](https://api.codeclimate.com/v1/badges/326d2ade32726ead6067/maintainability)](https://codeclimate.com/github/ModusCreateOrg/react-idle/maintainability)
[![MIT Licensed](https://img.shields.io/badge/license-MIT-blue.svg?style=flat-square)](https://github.com/ModusCreateOrg/react-idle/blob/master/LICENSE)
[![Enterprise Web Development](https://img.shields.io/badge/powered_by-Modus_Create-blue.svg)](https://moduscreate.com)

Render components when browser is idle.

The idea is to allow Above The Fold content to render as soon as possible, letting the rest of the app render and update when the browser is idle.

This component uses [`requestAnimationFrame`](https://developer.mozilla.org/en-US/docs/Web/API/Window/requestAnimationFrame) which is also used in [React](https://reactjs.org/blog/2017/09/26/react-v16.0.html#javascript-environment-requirements).

## Demo
See a working [react-idle demo](https://react-idle.modus.app/) and compare rendering performance between syncronous rendering and rendering on idle.

## Getting started
Install `react-idle` using npm.

```bash
npm install @modus/react-idle --save
```

### Usage
```jsx
import * as React from 'react';
import OnIdle from '@modus/react-idle';

export default class MyView extends React.Component {
  render() {
    <section>
      <article>This is above the fold content that must render ASAP</article>
      <OnIdle>
        <aside>This heavy component can be rendered when the browser is idle</aside>
      </OnIdle>
    </section>
  }
}
```

### Dependencies
React Idle has only one direct dependency: [idlize](https://www.npmjs.com/package/idlize). Since it's meant to be used with React, it expects that your project already depends on [`react`](https://www.npmjs.com/package/react) and [`react-dom`](https://www.npmjs.com/package/react-dom).

NPM will not automatically install these dependencies for you, but it will show a friendly warning message with instructions.

## Configuration
| Property | Type | Required? | Description |
|:---|:---|:---:|:---|
| children | React Node | ✓ | Children you want to render on idle |
| placeholder | React Node |  | Placeholder component that shows before the render takes place |
| onRender | Function |  | Callback executed after render completes. No arguments provided. |
| skipSSR | Boolean |  | Use this property to prevent the children from being rendered in Server Side Rendering. Defaults to false. |
| syncUpdate | Boolean |  | Use this property to render updates immediately instead of triggering another `onIdle` process. Defaults to false. |

## Contributing

### Testing
This project uses Jest for unit testing. To execute tests run this command:

```sh
npm test
```

It's useful to run tests in watch mode when developing for incremental updates.

```sh
npm run test:watch
```

## License

This project is [MIT](./LICENSE) licensed.
npm package: @modusbox/microfrontend-utils
Description: A collection of Typescript utilities for the frontend apps.
Author: Ivan Annovazzi
Latest version: 0.0.3

# @modusbox/microfrontend-utils

A collection of Typescript utilities for the frontend apps.

To install the module run `yarn add @modusbox/microfrontend-utils`.

Documentation is available at [https://modusintegration.github.io/microfrontend-utils](https://modusintegration.github.io/microfrontend-utils)

### Development

First install the dependencies with `yarn install`.

It is suggested to configure your editor/IDE to use ESLint plugins so that you'll be able to see warnings and errors while coding.

### Testing

The library uses Jest for testing. Tests should be written in .ts files, post with _.spec_ eg `html.spec.ts`.

Use `yarn test` to launch the test runner.

### Coding standards

The project uses ESLint extending Airbnb, Prettier, Typescript recommended rules.

Use `yarn lint` to run ESLint across the source files.


### Building the library

You can use the command `yarn compile` to launch `tsc` locally. 

While this is not a necessary step while developing, it can be useful when you want to test the library locally with `yarn link`.

### Documentation

The project uses Typedoc to generate documentation. 

Use `yarn docs` to run Typedoc on the codebase.