open-index/open-npm huggingface dataset:
npm package: @react-mini/redux
Description: Implements the most basic functionality of react-redux with a bundle size of 6.1 kB.
Author: Manel Castro
Latest version: 1.0.30

Implements the most basic functionality of react-redux with a bundle size of 5.24kB.

Components to use:

Example:

```JSX
import React, { useState } from "react";
import { onStoreChanged,updateState  } from "@react-mini/redux";

export const Home = () => {
  const propertyName = "buttonClick";
  const [buttonState, setButtonState] = useState(false);

  onStoreChanged({
    propertyName,
    callback: (data) => setButtonState(data),
  });

  return (
    <div>
      <input
        type="button"
        onClick={() =>
          updateState({
            value: !buttonState,
            propertyName,
          })
        }
        value={`${buttonState}`}
      ></input>
    </div>
  );
};
```
npm package: @react-mini/router
Description: Implements the most basic functionality of react-router with a bundle size of 7.8kB.
Author: Manel Castro
Latest version: 1.0.47

Implements the most basic functionality of react-router with a bundle size of 7.8kB.

It allows to configure nested routing.

Components to use:

```JSX
- <Link>
- <Menu>
- <Route>
```

Menu + Route Example:

```JSX
<Menu nestLevel={0}>
  <Route path="" component={Home}></Route>
  <Route path="catalog" component={CatalogApp}></Route>
  <Route path="about" component={About}></Route>
</Menu>
```

Link Example:

```JSX
<Link path={link.path}>{link.label}</Link>
```

PROPS:

Link component

- Props: navLevel (the routing nested level)

Route component

- Props: path, component

Menu component

- Props: nestLevel (the routing nested level)
npm package: @react-mock/fetch
Description: Mock Fetch requests declaratively
Author: Ovidiu Cherecheș
Latest version: 0.3.0

## Fetch requests

A declarative wrapper for the wonderful [fetch-mock](http://www.wheresrhys.co.uk/fetch-mock/).

> **Note:** FetchMock mocks the global Fetch API, so only one FetchMock instance should be rendered at once.

```js
import { FetchMock } from '@react-mock/fetch';

// Passing fetch-mock options
render(
  <FetchMock options={{ matcher: '/login', response: 401, method: 'POST' }}>
    <MyComponent />
  </FetchMock>
);

// Passing fetch-mock config
render(
  <FetchMock
    matcher="/posts"
    response={200}
    config={{ fallbackToNetwork: true }}
  >
    <MyComponent />
  </FetchMock>
);
```

### Multiple mocks

```js
render(
  <FetchMock
    mocks={[
      { matcher: '/users', response: [{ id: 123 }] },
      { matcher: '/user/123', response: { name: 'Jessica' } }
    ]}
  >
    <MyComponent />
  </FetchMock>
);
```

### Inspection

See fetch-mock's [inspection methods](http://www.wheresrhys.co.uk/fetch-mock/#api-inspectionfiltering) to check how fetch was called.

> **Note:** Import `fetchMock` from @react-mock/fetch to ensure you're inspecting on the right fetch-mock instance.

```js
import { fetchMock } from '@react-mock/fetch';

const [, { body }] = fetchMock.lastCall('/login', 'POST');
expect(JSON.parse(body)).toEqual({ user: 'harry' });
```
npm package: @react-mock/localstorage
Description: Mock LocalStorage data declaratively
Author: Ovidiu Cherecheș
Latest version: 0.1.2

## LocalStorage

Mock LocalStorage data declaratively.

> **Note:** LocalStorageMock mocks the global localStorage API, so only one LocalStorageMock instance should be rendered at once.

```js
import { LocalStorageMock } from '@react-mock/localstorage';

render(
  <LocalStorageMock items={{ sessionId: 're4lt0k3n' }}>
    <MyComponent />
  </LocalStorageMock>
);
```
npm package: @react-mock/state
Description: Inject React component state declaratively
Author: Ovidiu Cherecheș
Latest version: 0.1.8

## Component state

Inject React component state declaratively.

> `StateMock` must be the direct parent of the stateful component for the state injection to work.

```js
import { StateMock } from '@react-mock/state';

render(
  <StateMock state={{ count: 5 }}>
    <Counter />
  </StateMock>
);
```

> **Warning:** StateMock delays ref calls. This means refs can get called _after_ componentDidMount, instead of before as you [might expect](https://stackoverflow.com/questions/44074747/componentdidmount-called-before-ref-callback).
npm package: @react-mock/xhr
Description: Mock XHR requests declaratively
Author: Ovidiu Cherecheș
Latest version: 0.2.0

## XHR requests

A declarative wrapper for the great [xhr-mock](https://github.com/jameslnewell/xhr-mock).

> **Note:** XhrMock mocks the global XMLHttpRequest API, so only one XhrMock instance should be rendered at once.

```js
import { XhrMock } from '@react-mock/xhr';

// GET
render(
  <XhrMock
    url="/users"
    response={(req, res) => res.body(JSON.stringify(users))}
  >
    <MyComponent />
  </XhrMock>
);

// POST
render(
  <XhrMock url="/login" method="POST" response={(req, res) => res.status(401)}>
    <MyComponent />
  </XhrMock>
);
```

### Multiple mocks

```js
const res = body => (req, res) => res.body(JSON.stringify(body));

render(
  <XhrMock
    mocks={[
      { url: '/users', response: res([{ id: 123 }]) },
      { url: '/user/123', response: res({ name: 'Jessica' }) }
    ]}
  >
    <MyComponent />
  </XhrMock>
);
```
npm package: @react-modular/sandbox
Description: react-modular sandbox package
Author: react-modular
Latest version: 1.0.0

# @react-modular/sandbox

## Usage

```tsx
import { Code } from '@react-modular/sandbox'

export const Example = () => {
  return <Code>yarn add @react-modular/sandbox</Code>
}
```

## Props

```ts
export interface Props {
  block?: boolean
  className?: string
  width?: string | number
}
```

## Size

```sh
dist/browser.esm.js
Size:         474 B with all dependencies, minified and gzipped
Loading time: 10 ms on slow 3G

dist/browser.umd.js
Size:         654 B with all dependencies, minified and gzipped
Loading time: 13 ms on slow 3G
```
npm package: @react-modular/types
Description: react-modular ui types
Author: react-modular
Latest version: 1.0.0

# @react-modular/types

### Features

- Simple API
- Comprehensive [documentation](https://react-modular.com/ui/packages/types) and test sets
- Fully customizable
- Includes TypeScript `d.ts` files

## Install

NPM

```sh
npm install @react-modular/types
```

Yarn

```sh
yarn add @react-modular/types
```

## Bundles

`esm`

```js
import { SystemProps } from '@react-modular/types'
```

`cjs`

```js
const { SystemProps } = require('@react-modular/types')
```

`umd`

```html
<script src="dist/umd/react-modular-types.min.js"></script>
```

## Tests

`jest --coverage`

```sh
Test Suites: 0 passed, 0 total
Tests:       0 skipped, 0 passed, 0 total
Snapshots:   0 total
Time:        0.000 s
Ran all test suites.
✨  Done in 0.00s.
```

## TypeScript

Using TypeScript? We've got you [covered](https://github.com/react-modular/react). Check out our `d.ts` declaration files.

<sub>`< >` with ☕️ by [**Moa Torres**](https://github.com/moatorres)</sub>
npm package: @react-modules/chat-list
Description: Chat list test
Author: Richard
Latest version: 1.1.4

# [TypeScript Example](https://www.typescriptlang.org/)

<p>
  <!-- iOS -->
  <img alt="Supports Expo iOS" longdesc="Supports Expo iOS" src="https://img.shields.io/badge/iOS-4630EB.svg?style=flat-square&logo=APPLE&labelColor=999999&logoColor=fff" />
  <!-- Android -->
  <img alt="Supports Expo Android" longdesc="Supports Expo Android" src="https://img.shields.io/badge/Android-4630EB.svg?style=flat-square&logo=ANDROID&labelColor=A4C639&logoColor=fff" />
  <!-- Web -->
  <img alt="Supports Expo Web" longdesc="Supports Expo Web" src="https://img.shields.io/badge/web-4630EB.svg?style=flat-square&logo=GOOGLE-CHROME&labelColor=4285F4&logoColor=fff" />
</p>

```sh
npx create-react-native-app -t with-typescript
```


TypeScript is a superset of JavaScript which gives you static types and powerful tooling in Visual Studio Code including autocompletion and useful inline warnings for type errors.

## 🚀 How to use

#### Creating a new project

- Install the CLI: `npm i -g expo-cli`
- Create a project: `expo init --template expo-template-blank-typescript`
- `cd` into the project

### Adding TypeScript to existing projects

- Copy the `tsconfig.json` from this repo, or new typescript template
- Add typescript dependencies: `yarn add --dev @types/react @types/react-native @types/react-dom typescript`
- Rename files to TypeScript, `.tsx` for React components and `.ts` for plain typescript files

## 📝 Notes

- [Expo TypeScript guide](https://docs.expo.io/versions/latest/guides/typescript/)
npm package: @react-modules/chat-messages
Description: Chat Messages test
Author: Paulo
Latest version: 1.0.2

# [TypeScript Example](https://www.typescriptlang.org/)

<p>
  <!-- iOS -->
  <img alt="Supports Expo iOS" longdesc="Supports Expo iOS" src="https://img.shields.io/badge/iOS-4630EB.svg?style=flat-square&logo=APPLE&labelColor=999999&logoColor=fff" />
  <!-- Android -->
  <img alt="Supports Expo Android" longdesc="Supports Expo Android" src="https://img.shields.io/badge/Android-4630EB.svg?style=flat-square&logo=ANDROID&labelColor=A4C639&logoColor=fff" />
  <!-- Web -->
  <img alt="Supports Expo Web" longdesc="Supports Expo Web" src="https://img.shields.io/badge/web-4630EB.svg?style=flat-square&logo=GOOGLE-CHROME&labelColor=4285F4&logoColor=fff" />
</p>

```sh
npx create-react-native-app -t with-typescript
```


TypeScript is a superset of JavaScript which gives you static types and powerful tooling in Visual Studio Code including autocompletion and useful inline warnings for type errors.

## 🚀 How to use

#### Creating a new project

- Install the CLI: `npm i -g expo-cli`
- Create a project: `expo init --template expo-template-blank-typescript`
- `cd` into the project

### Adding TypeScript to existing projects

- Copy the `tsconfig.json` from this repo, or new typescript template
- Add typescript dependencies: `yarn add --dev @types/react @types/react-native @types/react-dom typescript`
- Rename files to TypeScript, `.tsx` for React components and `.ts` for plain typescript files

## 📝 Notes

- [Expo TypeScript guide](https://docs.expo.io/versions/latest/guides/typescript/)
npm package: @react-mutate/core
Description: Easily add user-defined extensions into your react application
Latest version: 0.6.0

# mutate-core

`@react-mutate/core` lets you swap out nodes in React's virtual DOM and contains `mutate` and `MutationsProvider`.


## Using `mutate` 

`react-mutate` asks you to create a JSON map with `displayNames` or function names as keys and React [Higher Order Components](https://reactjs.org/docs/higher-order-components.html) as values. 
If you haven't seen HOC's before, they're basically just functions that take a React component and then return a different or modified React component.

So for example, we might make something like this:

``` js 
// A function that takes a React component and returns a modified version.
const insideHeader = Component => {
    return props => <h1> <Component {...props}/> </h1>;
};

// The mutations we got from our users
const userMutations = {
    "Text" : insideHeader
}
```

Now, we'll wrap our React component in `mutate` and then any item with the `displayName` or `name` `Text` will render with `<h1>`'s.  

``` js 
// ... other imports
import { mutate } from "react-mutate";

const Text = ({children}) => <p> {children} </p>;

class MyComponent extends React.Component {
    render() {
        return <Text> Hello World! </Text>;
    }
}

export default mutate(MyComponent, userMutations); // Wrapping at the end
```

## Using `MutationsProvider`

If you maintain a single list of all the mutations (or extensions) that your users have created, it can get tedious to pass that around everywhere, especially if you're not using something like redux. 

So instead, you can use `MutationProvider` which lets you define your mutations at the root of your app and then lets you [magically](https://reactjs.org/docs/context.html) ignore the second argument to `mutate`.

For example:

``` js
// MyComponent.js
const Text = ({children}) => <p> {children} </p>;

class MyComponent extends React.Component {
    render() {
        return <Text> Hello World! </Text>;
    }
}

export default mutate(MyComponent) // userMutations are taken care of by the MutationsProvider
```

``` js 
// index.js
import { MutationsProvider } from 'react-mutate';
import MyComponent from "./MyComponent.js";

class App extends React.Component {
    render() {
        <MutationsProvider mutations={userMutations}>
            <MyComponent />
        </MutationsProvider>
    }
}
```
npm package: @react-mutate/loader
Description: Easily add user-defined extensions into your react application
Latest version: 0.6.0

# Mutations Loader

The loader in `@react-mutate/loader` is a series of tools to help load in mutations as npm-modules.

You give the loader a path where you want to store user mutations and it will create a mini-node project like this:
```
MyEnclosingFolder
    - mutations
        - package.json
        - node_modules
```

## `installMutations`

You can use `installMutations` to add some extensions to your app. If you don't have a `mutations` folder, it will create one for you. 

### Examples

``` js 
import { installMutations } from "@react-mutate/loader";

installMutations(["some-npm-module-name", "another-one", "another-other-one"], "path/to/save/folder");
```

## `loadMutations`

You can use `loadMutations` to pull from your save folder and get a list of mutations that you can pass into `<MutationsProvider />`.

### Examples

``` js
import { loadMutations } from "@react-mutate/loader";

const mutations = await loadMutations("path/to/save/folder");
const toRender = (
  <MutationsProvider mutations={mutations}>
    <App />
  </MutationsProvider>
);
```
npm package: @react-mvc/builder
Description: > TODO: description
Author: xiaohua
Latest version: 0.1.6

# @react-mvc/builder

> @react-mvc/builder是企业级前端应用框架`react-mvc`的打包工具，通过该工具可以快速启动项目及打包

## Installation

    $ npm install @react-mvc/builder -D

## Usage

### dev

开发环境启动项目.

    $ react-mvc-builder dev

### build

生产环境打包项目.

    $ react-mvc-builder build
npm package: @react-mvc/cli
Description: > TODO: description
Author: xiaohua
Latest version: 0.1.3

# @react-mvc/cli

> @react-mvc/cli是企业级前端应用框架`react-mvc`的脚手架工具，通过该脚手架可以快速创建前端应用

## Installation

    $ npm install -g @react-mvc/cli

## Usage

### 创建项目

快速创建一个项目.

    $ react-mvc-cli create <project-name>

### options

react-mvc-cli create 命令有一些可选项，你可以运行以下命令进行探索.

```
  react-mvc-cli create --help
```
```
  用法：create [options] <project-name>

  选项：
    -f, --force                     覆写目标目录可能存在的配置
```
npm package: @react-mvc/model-controller
Description: > TODO: description
Author: xiaohua
Latest version: 0.2.0

# @react-mvc/model-controller

> model-controller 集成了`react-mvc`框架中的model层和controller层，该包提供了一个体验更好的
状态管理

## Installation

    $ npm install @react-mvc/model-controller

## Usage

### controller

controller是一个提供控制器功能的函数，接收一个配置对象，其返回值是一个高阶函数，该函数需要传入`react`组件

```
import controller from '@react-mvc/model-controller'

controller(config)(<ReactComponent />)
```

### config

config对象拥有强大的配置项.

| key | Description | Type | Default |
| -------- | ----------- | ---- | ------- |
| namespace | 命名空间用于区分不同的容器组件，必须为唯一值 | string | - |
| publishers | 需要订阅的其他命名空间，通过订阅，可以拿到其他命名空间的状态 | string[] | - |
| initState | 初始状态 | any | - |
| reducer | 用户自定义函数，其返回值作为命名空间的状态 | (oldState: any, newState: any) => any | - |
| cacheOpts |  缓存选项 | CacheOpts | - |
| reset | 重置命名空间状态为初始状态，用于开发调试 | boolean | false |

```
interface CacheOpts {
  cache: 'sessionStorage' | 'localStorage'
  expired?: number
}

cache：缓存类型
expired：缓存过期时间
```
npm package: @react-mvi/cli
Description: Commadline tools for react-mvi.
Author: brn
Latest version: 1.0.10

# @react-mvi/cli

## What's this?

`@react-mvi/cli` is command line tools for `@react-mvi`.

Now we support below commands.

- init
- update
- dev
- test
- build
- install


## install

```
npm install @react-mvi/cli -g
```

## Usage

```
rmvi init
```


### init

Create new Project on current directory.

```
rmvi init
```


### update

Update `@react-mvi` namespace packages.

```
rmvi build
```


### dev

Launch webpack-dev-server.

```
rmvi dev
```

### test

Test current project with webpack.

```
rmvi test
```


### build

Build current project with webpack.

```
rmvi build
```

### install

Install new dependencies by use npm or yarn which decided when init.

```
rmvi install react-router
rmvi i react-router -D
rmvi i react-router --dev
rmvi i react-router --peer
```
npm package: @react-mvi/core
Description: React MVI micro framework.
Author: Taketoshi Aono
Latest version: 1.1.1

# @react-mvi/core

react-mvi is Model-View-Intent based minimal framework with Reactjs and RxJS.

- We remove all `shouldComponentUpdate` from React by create each props as RxJS.Observable.
- We built more redux user friendly Model-View-Intent framework than [cyclejs](http://cycle.js.org/).
- Asynchronous process is no more problem, StateHandler make it easy and clean.
- Command line tool has been prepared! as `@react-mvi/cli`

Inspired by  
[cyclejs](http://cycle.js.org/)  
[redux](https://github.com/reactjs/redux)  
[react-combinators](https://github.com/milankinen/react-combinators)  
[react-reactive-toolkit](https://github.com/milankinen/react-reactive-toolkit)

## First look !

```javascript

import * as React from 'react';
import { Observable } from 'rxjs/Rx';
import { Tags as T, store, intent, connect } from '@react-mvi/core';

/**
 * Intent is converter that convert dispatched event to Observable.
 */
@intent
class Intent {
  plus() { return this.intent.for('counter::plus').share();}

  minus() { return this.intent.for('counter::minus').share(); }
}

/**
 * Store is Observable state factory.
 */
@store
class Store {
  initialize() {
    return {
      view: {
        counter: this.intent.plus().mapTo(1)
          .merge(this.intent.minus().mapTo(-1))
          .scan((acc, e) => {
            return acc + e;
          }, 0)
      }
    };
  }
}

/**
 * Root component must decorated by connect like redux.
 */
@connect({
  mapIntentToProps(intent) {
    return {
      onPlus: intent.callback('counter::plus'),
      onMinus: intent.callback('counter::minus'),
    }
  }
})
class View extends React.Component {
  render() {
    return (
      <div>
        <button onClick={this.props.onPlus}>Plus</button>
        <button onClick={this.props.onMinus}>Minus</button>
        /* We can treat Observable value directly. */
        <T.Div>conter value is {this.props.counter}</T.Div>
      </div>
    );
  }
}

render(
  <Provider intent={Intent} store={Store}><View /></Provider>,
  document.querySelector('#app')
);

```

## Guide

- Examples
    - [Simple Counter Programe](./docs/basic_guide.md)
    - [Single Page Application with react-router](./docs/spa.md)
- Basics
    - [Setup](./docs/setup.md)
    - [Create connected component](./docs/basics/create_connected_component.md)
    - [Create component with context](./docs/basics/create_component.md)
    - [Create store](./docs/basics/create_store.md)
    - [Create intent](./docs/basics/create_intent.md)
    - [StaeHandler](./docs/basics/state_handler.md)
- Advanced Usage
    - [Create your own StateHandler](./docs/au/create_yow_state_handler.md)

## Architecture

![architecture](../../images/react-mvi.png)

## Requirements

- react >= 15.0.0 <= 15.6.1
- react-dom >= 15.0.0 <= 15.6.1
- rxjs >= 5.0.0 <= 5.4.2
npm package: @react-mvi/event
Description: Event IO module for React MVI.
Author: Taketoshi Aono
Latest version: 0.5.0

# react-mvi
Minimal framework for react + rxjs mvi architecture

inspired by
[cyclejs](http://cycle.js.org/)
[react-combinators](https://github.com/milankinen/react-combinators)  
[react-reactive-toolkit](https://github.com/milankinen/react-reactive-toolkit)

## Guide

- Examples
    - [Simple Counter Programe](./docs/basic_guide.md)
    - [Single Page Application with react-router](./docs/spa.md)
- Basics
    - [Setup](./docs/setup.md)
    - [Create component with context](./docs/basics/create_component.md)
    - [Create service](./docs/basics/create_service.md)
    - [IO modules](./docs/basics/io_modules.md)
    - [DI Container](./docs/basics/di_container.md)
- Advanced Usage
    - [Create your own IO modules.](./docs/au/create_yowim.md)
    - [Share injector](./docs/au/share_injector.md)

## Architecture

![architecture](./images/mvi_clean_arc.png)

## Requirements

- jspm > 0.17.0-beta.16

## Modules

- [@react-mvi/core](modules/core)
- [@react-mvi/http](modules/http)
- [@react-mvi/event](modules/event)
npm package: @react-mvi/http
Description: Http IO module for React MVI.
Author: Taketoshi Aono
Latest version: 1.1.2

# @react-mvi/http

react-mvi StateHandler for http request.

## Requirements

- @react-mvi/core >= 1.0.0

## Installation

```nps install @react-mvi/http```

## Usage

First, register HttpHandler to @react-mvi/core handlers by __registerHandlers__.

```typescript
import {
  registerHandlers
} from '@react-mvi/core';
import {
  HttpHandler
} from '@react-mvi/http';


registerHandlers({
  http: new HttpHandler()
})
```

`@react-mvi/http` use http property of Store returned object.

See example below.

Create request stream.

```typescript
// Send request.
class AStore extends Store<{http: {[key: string]: HttpConfig}}> {
  public render() {
    return {
      http: {
        'app::requestSubmit': this.intent.onSubmit().mapTo({...})
      }
    }
  }
}
```

Receive response with stream.

```typescript
@intent
class Intent {
  private intent: HandlerResponse;
  private http: HandlerResponse;
  
  public onSubmit() {
    return this.intent.for('app::onSubmit');
  }

  public onSubmitResponse() {
    return this.http.for('app::requestSubmit');
  }
}

// In Store.
this.intent.onSubmitResponse().map(...)
```

## Request Specification

```typescript
interface HttpConfig {
  url: string;
  method?: HttpMethod;
  headers?: any;
  mode?: 'cors'|'same-origin'|'no-cors';
  json?: boolean;
  data?: string|Blob|FormData,
  form?: boolean;
  responseType?: ResponseType
}
```

### url

Request url.

### method

Request method type. It defined in HttpMethods enum.

```typescript
enum HttpMethod {
  GET = 1,
  POST,
  PUT,
  DELETE
}
```

### headers

Request headers.

### mode

Fetch api mode.

### json

Send json or not.

### data

Request body.

### form

Using www-form-urlencoded.

### responseType

Response body type. It defined in ResponseType enum.

```typescript
enum ResponseType {
  JSON = 1,
  BLOB,
  ARRAY_BUFFER,
  FORM_DATA,
  TEXT
}
```

## Response Specification

```typescript
interface HttpResponse<T, E> {
  ok: boolean;
  headers: {[key: string]: string};
  status: number;
  response: T;
  error: E;
}
```

### ok

Flag that show response was 30X or 20X.

### headers

Response headers.

### status

Response status number.

### response

Response body.

### error

Error message if error occured.
npm package: @react-mvi/testing
Description: Test module for React MVI.
Author: Taketoshi Aono
Latest version: 2.1.1

# @react-mvi/testing

## What's this?

`@react-mvi/testing` is test utility for `@react-mvi`.

## Installation

```
npm i @react-mvi/testing -D
```

## Usage

```typescript
import {
  Prepared,
  prepareTest
} from '@react-mvi/testing';
import {
  Observable
} from 'rxjs/Rx';
import {
  AppStore
} from '../store';
import {
  AppIntent
} from '../../intents/intent';
import {
  expect
} from 'chai';


describe('AppStore', () => {
  let prepared: Prepared<{view: {greeting: Observable<string>}}>;
  beforeEach(() => {
    prepared = prepareTest(AppIntent, AppStore);
  });

  describe('initialize().view.greeting', () => {
    it('should send greet to stream.', done => {
      const { store, mock } = prepared;
      const { greeting } = store.initialize().view;
      greeting.skip(1).subscribe(v => {
        expect(v).to.be.eq('Hello World!');
        done();
      });
      mock.send('onMounted', {});
    });
  });
});

```

We support easy Store construction.


## API

#### Prepared

```typescript
// Response type of `prepareTest`.
type Prepared<V> = {
  stores: Store<V>[];
  store: Store<V>;
  mock: MockManipulator;
};
```

#### PrepareOptions

```typescript
// Options type of `prepareTest`.
type PrepareOptions = {
  services?: { [key: string]: any };
  handlers?: { [key: string]: StateHandler };
  state?: any;
};
```

#### prepareTest


```typescript
/**
 * Prepare Intent and Store.
 * @param IntentClass User defined Intent class that want to mocking.
 * @param StoreClass User deinfed Store class that wnat to testing.
 * @return Return mocked Intent and associated Store.
 */
function prepareTest<T extends IntentConstructor, U extends StoreConstructor<T, V>, V>(
  IntentClass: T,
  StoreClass: StoreConstructor<T, V> | StoreConstructor<T, V>[],
  opt: PrepareOptions = { state: {} }): Prepared<V>
```


#### Mocker

Mocking Intent class by replace all method with simple function that return Rx.Subject that controlled by MockManipulator.

### MockManipulator

```typescript
class MockManipulator {
 /**
  * Send value to Rx.Subject that is assosiated with Intent by Mocker.
  * @param name Method name of Intent.
  * @param data Parameter of Intent.
  */
  public send(name: string, data: any = {}): void

 /**
  * Static version of above `send`.
  */
  public static send(mock: Mocker, name: string, data: any = {})
}
```
npm package: @react-native-admob/admob
Description: Admob for React Native with powerful hooks and components
Author: Jay Kim
Latest version: 2.0.1
Deprecated: This library is deprecated and replaced with https://github.com/invertase/react-native-google-mobile-ads

<p align="center">
  <img alt="cover with mockup" src="./docs/static/img/logo_admob.png" width="192px">
  <h1 align="center">
    React Native AdMob
  </h1>
</p>
<p align="center">
  <a href="https://www.npmjs.org/package/@react-native-admob/admob">
    <img alt="npm version" src="https://img.shields.io/npm/v/@react-native-admob/admob.svg?style=for-the-badge" />
  </a>
  <a href="https://www.npmjs.org/package/@react-native-admob/admob">
    <img alt="weekly downloads" src="https://img.shields.io/npm/dw/@react-native-admob/admob.svg?style=for-the-badge" />
  </a>
  <a href="https://www.npmjs.org/package/@react-native-admob/admob">
    <img alt="npm bundle size" src="https://img.shields.io/bundlephobia/minzip/@react-native-admob/admob.svg?style=for-the-badge" />
  </a>
  <a href="./LICENSE">
    <img alt="license" src="https://img.shields.io/badge/license-MIT-blue.svg?style=for-the-badge" />
  </a>
  <br />
</p>

> Admob for React Native with powerful hooks and components

## 📦 Installation

See [Installation Guide](https://react-native-admob.github.io/admob/docs/installation)

## 📃 Documentation

Head over [Documentation Page](https://react-native-admob.github.io/admob/docs/usage/banner)

## License

MIT
npm package: @react-native-advance/alert
Description: React Native Core alert
Author: Bhawani Shankar Bharti
Latest version: 0.1.0

# @react-native-advance/alert

React Native Core alert

## Installation

```sh
npm install @react-native-advance/alert
```

## Usage

```js
import Alert from "@react-native-advance/alert";

// ...

const result = await Alert.multiply(3, 7);
```

## Contributing

See the [contributing guide](CONTRIBUTING.md) to learn how to contribute to the repository and the development workflow.

## License

MIT