open-index/open-npm huggingface dataset:
npm package: @masa-finance/analytics-sdk
Description: yarn   `yarn add @masa-finance/analytics-sdk --save`
Latest version: 0.5.16

## Installation

yarn  
`yarn add @masa-finance/analytics-sdk --save`

npm  
`npm i @masa-finance/analytics-sdk --save`

## Usage

```typescript
import { BaseEventData, EventType } from "@masa-finance/analytics-sdk";

const logEvent = async ({
  type,
  user_address,
  client_id,
  event_data,
  endpoint,
}: {
  type: EventType;
  user_address?: string;
  event_data: BaseEventData;
  endpoint: string;
  client_id?: string;
}): Promise<Event | undefined> => {
  return logEvent({
    type,
    user_address,
    client_id,
    event_data,
    endpoint,
  });
};
```
npm package: @masa-finance/arcomia-contracts
Description: ## Contract Deployments
Author: Sebastian Gerske
Latest version: 1.4.2

# Arcomia OG Community SBT smart contracts

## Contract Deployments

### Deployment addresses

You can see the deployment address of the smart contracts in the [deployments/mumbai](deployments/mumbai) and [deployments/polygon](deployments/polygon) folders. For every deployed smart contract you will find a `<smart_contract>.json` JSON file with the address in the `"address"` field.

#### Configuration

- `Admin`: [`0x46c9cdA3F83C5c13C767A07b6E80aEd302E40B28`](https://mumbai.polygonscan.com/address/0x46c9cdA3F83C5c13C767A07b6E80aEd302E40B28)

The `admin` is allowed to set configuration variables in the smart contracts.

- `BASE_URI`: https://www.arcomia.io/assets/images/logo/arcomia-logo.png

The base url for the Metadata url that is beeing generated from the contract

## Roles

- `deployer`: Deploys the contract, has no rights after everything has properlty handed over to other roles
- `admin`: Delegated to the Masa Service account inside the Masa API. It has the rights to administrate the smart
  contracts
- `minter`: Minter role. It has the rights to mint tokens to customers wallets.

## Deployment

### Preparations

* Set `DEPLOYER_PRIVATE_KEY` to the deployers private key in `.env.{network}.secret`
* Set `COINMARKETCAP_API_KEY` to the CoinMarketCap API key in `.env`, if needed
* Set `INFURA_API_KEY` to the Infura API key in `.env`, if needed
* Set `POLYGONSCAN_API_KEY` to the Etherscan API key in `.env`, if needed

### Deploy

Run: `yarn deploy --network {network}` to deploy.

## Installation and usage

Installing via `npm` package:

```bash
npm i @masa-finance/arcomia-contracts
```

Import in your project:

```typescript
import { ArcomiaOGCommunitySBT, ArcomiaOGCommunitySBT__factory } from "@masa-finance/arcomia-contracts";

const arcomiaOGCommunitySBT: ArcomiaOGCommunitySBT = ArcomiaOGCommunitySBT__factory.connect(
  <address>, // address of the deployed contract
  <provider> // web3 provider
);
console.log(await arcomiaOGCommunitySBT.symbol());
```

## Generation of a new release

From a clean `main` branch you can run the release task bumping the version accordingly based on semantic versioning:

```bash
yarn release
```

The task does the following:

* Bumps the project version in `package.json`
* Creates a Git tag
* Commits and pushes everything
* Creates a GitHub release with commit messages as description
* Git tag push will trigger a GitHub Action workflow to do a `npm` release

For the GitHub releases steps a GitHub personal access token, exported as `GITHUB_TOKEN` is required. You can add this
environment variable to the `.env` file. [Setup](https://github.com/release-it/release-it#github-releases)
npm package: @masa-finance/masa-contracts-staking
Description: ## Contract Deployments
Author: Masa Finance
Latest version: 0.6.0

# Masa Staking smart contract

## Contract Deployments

### Preparations

- Set `LEDGER_DEPLOYER_ACCOUNT` to the deployers address in `.env`
- Set `COINMARKETCAP_API_KEY` to the CoinMarketCap API key in `.env`, if needed
- Set `ANKR_API_KEY` to the Ankr API key in `.env`, if needed
- Set `ETHERSCAN_API_KEY` to the Etherscan API key in `.env`, if needed
- Set `BSCSCAN_API_KEY` to the BscScan API key in `.env`, if needed
- Set `POLYGONSCAN_API_KEY` to the PolygonScan API key in `.env`, if needed
- Set `BASESCAN_API_KEY` to the BaseScan API key in `.env`, if needed

### Deploy

Run: `yarn deploy --network {network}` to deploy.

### Deployment address

You can see the deployment address of the smart contracts in the [deployments](deployments) folder. For every deployed smart contract you will find a `<smart_contract>.json` JSON file with the address in the `"address"`
field.

## Generation of a new release

From a clean `main` branch you can run the release task bumping the version accordingly based on semantic versioning:

```bash
yarn release
```

The task does the following:

- Bumps the project version in `package.json`
- Creates a Git tag
- Commits and pushes everything
- Creates a GitHub release with commit messages as description
- Git tag push will trigger a GitHub Action workflow to do a `npm` release

For the GitHub releases steps a GitHub personal access token, exported as `GITHUB_TOKEN` is required. You can add this environment variable to the `.env` file. [Setup](https://github.com/release-it/release-it#github-releases)
npm package: @masa-finance/masa-express
Description: <!-- TOC -->   * [Installation](#installation)   * [Usage](#usage) <!-- TOC -->
Author: Sebastian Gerske
Latest version: 2.1.0

<!-- TOC -->
  * [Installation](#installation)
  * [Usage](#usage)
<!-- TOC -->

## Installation

yarn  
`yarn add @masa-finance/masa-express --save`

npm  
`npm i @masa-finance/masa-express --save`

## Usage

A full example can be found in the [Masa Express Boilerplate](https://github.com/masa-finance/masa-express-boilerplate) repo.

```typescript
import express, {
  Express,
  RequestHandler,
  Router,
} from "express";
import {
  MasaSessionMiddleware,
  MasaSessionRouter,
  sessionCheckHandler,
} from "@masa-finance/masa-express";
import {
  CreateSoulNameResult,
  SoulNameErrorCodes,
} from "@masa-finance/masa-sdk";
import cors
  from "cors";

const app: Express = express();

app.use(express.json());

// your session name
const sessionName = "my_fancy_session_name";
// never give this to someone!
const secret = "top_secret_1337";
// 30 days session expiration time
const ttl = 30 * 24 * 60 * 60;
// production, dev or undefined (will fall back to dev then)
const environment = "dev";
// the domain your session should be valid on
const domain = ".vitalik.org";
// custom namespace generated using: https://www.uuidtools.com/generate/v4
const sessionNamespace = "01bbc88d-3cd2-465f-8687-e0ea5e8b1231";

const sessionMiddleware: RequestHandler = MasaSessionMiddleware({
  sessionName,
  secret,
  domain,
  ttl,
  environment,
});

app.use(
  cors({
    origin: domain,
    credentials: true,
  })
);

// session related
app.use(
  "/session",
  MasaSessionRouter({
    sessionMiddleware,
    sessionName,
    sessionNamespace,
  })
);

export const soulNameRouter: Router = express.Router();

soulNameRouter.use(sessionMiddleware);
soulNameRouter.use(sessionCheckHandler as never);

soulNameRouter.post(
  "/soul-name/store",
  (request: Request, response: Response) => {
    const result: CreateSoulNameResult = {
      success: false,
      message: "Hello world!",
      errorCode: SoulNameErrorCodes.UnknownError,
    };
    console.log(result);
    response.json(result);
  }
);

app.use(soulNameRouter);

const port: number = 4000; // use whatever port you need

app.listen(port, () => {
  console.log(`Express app listening at 'http://localhost:${port}'`);
});
```
npm package: @masa-finance/masa-token
Description: ## Contract Deployments
Author: Masa Finance
Latest version: 3.0.1

# 🌽 Masa Token smart contract

## Contract Deployments

### Preparations

- Set `COINMARKETCAP_API_KEY` to the CoinMarketCap API key in `.env`, if needed
- Set `ANKR_API_KEY` to the Ankr API key in `.env`, if needed
- Set `ETHERSCAN_API_KEY` to the Etherscan API key in `.env`, if needed
- Set `BSCSCAN_API_KEY=XXX` to the BscScan API key in `.env`, if needed
- Set `POLYGONSCAN_API_KEY=XXX` to the PolygonScan API key in `.env`, if needed
- Set `BASESCAN_API_KEY=XXX` to the BaseScan API key in `.env`, if needed

### Deploy

Run: `yarn deploy --network {network}` to deploy.

### Deployment address

You can see the deployment address of the smart contracts in the [deployments](deployments) folder. For every deployed smart contract you will find a `<smart_contract>.json` JSON file with the address in the `"address"`
field.

## Generation of a new release

From a clean `main` branch you can run the release task bumping the version accordingly based on semantic versioning:

```bash
yarn release
```

The task does the following:

- Bumps the project version in `package.json`
- Creates a Git tag
- Commits and pushes everything
- Creates a GitHub release with commit messages as description
- Git tag push will trigger a GitHub Action workflow to do a `npm` release

For the GitHub releases steps a GitHub personal access token, exported as `GITHUB_TOKEN` is required. You can add this environment variable to the `.env` file. [Setup](https://github.com/release-it/release-it#github-releases)
npm package: @masa-finance/masa-token-solana
Description: The Omnichain Fungible Token (OFT) Standard allows fungible tokens to be transferred across multiple blockchains without asset wrapping or middlechains.
Author: Masa Finance
Latest version: 1.0.4

# 🌽 Masa Token smart contract for Solana

The Omnichain Fungible Token (OFT) Standard allows fungible tokens to be transferred across multiple blockchains without asset wrapping or middlechains.

This standard works by burning tokens on the source chain whenever an omnichain transfer is initiated, sending a message via the protocol, and delivering a function call to the destination contract to mint the same number of tokens burned. This creates a unified supply across all networks LayerZero supports that the OFT is deployed on.

[Reference LayerZero OFT example](https://github.com/LayerZero-Labs/example-oft)

## Prerequisites

* [Node.js](https://nodejs.org/en/download/)
* [Rust](https://www.rust-lang.org/tools/install)
* [Yarn](https://yarnpkg.com/getting-started/install)
* [Solana CLI](https://docs.solanalabs.com/cli/install)
* [Anchor](https://www.anchor-lang.com/docs/installation)

## Prepare ProgramId

create programId keypair files if not existed

```
solana-keygen new -o target/deploy/endpoint-keypair.json
solana-keygen new -o target/deploy/masatoken-keypair.json

anchor keys sync
```

## Build & Test

```bash
yarn && yarn build && yarn test
```

## Deploy

1. with anchor

   ```bash
   anchor build -v
   solana program deploy --program-id target/deploy/masatoken-keypair.json target/verifiable/masatoken.so -u mainnet-beta
   ```

   or

2. with solana-verify
   ```bash
   solana-verify build
   solana program deploy --program-id target/deploy/masatoken-keypair.json target/deploy/masatoken.so -u mainnet-beta
   ```

please visit [Solana Verify CLI](https://github.com/Ellipsis-Labs/solana-verifiable-build) and [Deploy a Solana Program with the CLI](https://docs.solanalabs.com/cli/examples/deploy-a-program) for more detail.

## Generation of a new release

From a clean `main` branch you can run the release task bumping the version accordingly based on semantic versioning:

```bash
yarn release
```

The task does the following:

* Bumps the project version in `package.json`
* Creates a Git tag
* Commits and pushes everything
* Creates a GitHub release with commit messages as description
* Git tag push will trigger a GitHub Action workflow to do a `npm` release

For the GitHub releases steps a GitHub personal access token, exported as `GITHUB_TOKEN` is required. You can add this
environment variable to the `.env` file. [Setup](https://github.com/release-it/release-it#github-releases)

#### Notice

If you encounter issues during compilation and testing, it might be due to the versions of Solana and Anchor. You can switch to Solana version `1.17.31` and Anchor version `0.29.0`, as these are the versions we have tested and verified to be working.
npm package: @masa-finance/tools
Description: ``` git clone https://github.com/masa-finance/masa-tools.git
Author: matintosh
Latest version: 0.9.1
Deprecated: Package no longer supported. Use @masa-finance/masa-react instead.

# Setup
```
git clone https://github.com/masa-finance/masa-tools.git

sudo nano /etc/hosts
// add 127.0.0.1 masatools.finance

brew install mkcert

cd masa-tools
mkcert masatools.finance

yarn 
yarn storybook
```
npm package: @masa-shin/run
Description: Interactive CLI tool to search and execute npm scripts with fuzzy search
Author: Masa-Shin
Latest version: 0.0.1

# @masa-shin/run

An interactive CLI tool that allows you to search and execute npm scripts from package.json with fuzzy search functionality and keyboard navigation.

<img width="1570" height="374" alt="スクリーンショット 2025-08-16 23 34 30" src="https://github.com/user-attachments/assets/aaaf963f-9fda-4bc7-af80-374ba494854e" />

## Features

- **Interactive Interface**: Built with Ink (React for CLI) for a smooth experience
- **Fuzzy Search**: Quickly find scripts by typing partial names
- **Smart Hook Script Filtering**: Hides npm lifecycle hooks by default
  - Automatically hides scripts you rarely run manually (`preinstall`, `postinstall`, `prepare`, `version`, etc.)
  - Press `Tab` to toggle visibility of hook scripts

<img width="1570" height="508" alt="スクリーンショット 2025-08-16 23 35 20" src="https://github.com/user-attachments/assets/2425a61a-b298-40f4-aa65-d70801924c9f" />

## Installation

### Global installation

```bash
npm install --global @masa-shin/run
```

### Using npx (no installation required)

```bash
npx @masa-shin/run
```

## Usage

### Interactive Mode (TTY environments)

Simply run the command in any directory with a package.json:

```bash
# If installed globally
run

# Or using npx
npx @masa-shin/run
```

### Show Hook Scripts by Default

To show hook scripts from startup:

```bash
# Show hook scripts by default
run --show-hooks
# or short form
run -s
```

## Development

```bash
# Install dependencies
npm install

# Build the project
npm run build

# Development with watch mode
npm run dev

# Run tests
npm run test

# Lint code
npm run lint
npm run lint:fix

# Format code
npm run format
```

## Requirements

- Node.js >= 16
- A package.json file with scripts in the current directory

## License

MIT
npm package: @masa0615/x-api-mcp-server
Description: MCP server for X (Twitter) API v2 — trends, search, user tweets, and posting
Latest version: 1.0.0

# x-api-mcp-server

X (Twitter) API v2 を使った MCP サーバー。トレンド検索・キーワード検索・アカウント投稿取得・投稿作成に対応。

## ツール一覧

| ツール名 | 機能 | 読み取り専用 |
|---|---|---|
| `x_get_trends` | 地域別トレンド検索 | ✅ |
| `x_search_recent` | キーワード検索（直近7日間） | ✅ |
| `x_get_user_tweets` | 特定アカウントの投稿取得 | ✅ |
| `x_create_post` | ポスト投稿（dry-run対応） | ❌ |

## セットアップ

### Claude Desktop

`claude_desktop_config.json` に以下を追加：

```json
{
  "mcpServers": {
    "x-api": {
      "command": "npx",
      "args": ["-y", "x-api-mcp-server"],
      "env": {
        "X_API_BEARER_TOKEN": "your-bearer-token",
        "X_API_KEY": "your-api-key",
        "X_API_KEY_SECRET": "your-api-key-secret",
        "X_API_ACCESS_TOKEN": "your-access-token",
        "X_API_ACCESS_TOKEN_SECRET": "your-access-token-secret"
      }
    }
  }
}
```

設定ファイルの場所：
- **Mac**: `~/Library/Application Support/Claude/claude_desktop_config.json`
- **Windows**: `%APPDATA%\Claude\claude_desktop_config.json`

### Claude Code

```bash
claude mcp add x-api -- npx -y x-api-mcp-server

# 環境変数は .env ファイルまたはシェルで設定
export X_API_BEARER_TOKEN="your-bearer-token"
export X_API_KEY="your-api-key"
export X_API_KEY_SECRET="your-api-key-secret"
export X_API_ACCESS_TOKEN="your-access-token"
export X_API_ACCESS_TOKEN_SECRET="your-access-token-secret"
```

## 環境変数

| 変数名 | 用途 | 必須 |
|---|---|---|
| `X_API_BEARER_TOKEN` | Bearer Token（読み取り系API） | ✅ 読み取り時 |
| `X_API_KEY` | OAuth 1.0a Consumer Key | ✅ 投稿時 |
| `X_API_KEY_SECRET` | OAuth 1.0a Consumer Secret | ✅ 投稿時 |
| `X_API_ACCESS_TOKEN` | OAuth 1.0a Access Token | ✅ 投稿時 |
| `X_API_ACCESS_TOKEN_SECRET` | OAuth 1.0a Access Token Secret | ✅ 投稿時 |

APIキーは [console.x.com](https://console.x.com) で取得してください。

## 使い方の例

Claude で以下のように話しかけてください：

- 「日本のXトレンドを見せて」
- 「Xで "内視鏡AI" を検索して」
- 「@elonmusk の最新投稿を10件見せて」
- 「"新しいブログ記事を公開しました！" とXに投稿して」

## API コスト目安（Pay-Per-Use）

| 操作 | 単価 | $5で可能な回数 |
|---|---|---|
| 読み取り (GET) | $0.005/件 | 1,000回 |
| 投稿 (POST) | $0.01/件 | 500回 |

## 注意事項

- `x_create_post` はデフォルトで `dry_run=true`（プレビューのみ）です
- トレンドAPI（v2）が利用できない場合、自動的にv1.1にフォールバックします
- Pay-Per-Useプランでは月間200万ポスト読み取りの上限があります

## License

MIT
npm package: @masaeedu/adt
Description: ## Summary
Author: Asad Saeeduddin
Latest version: 1.1.1

# `@masaeedu/adt`

## Summary

A simple library for defining ADTs.

## Usage

```js
import { adt } from "@masaeedu/adt"

const Either = adt({ Left: ["a"], Right: ["b"] })
const { Left, Right } = Either

const map = f => Either.match({ Left, Right: x => Right(f(x)) })

const double = x => x * 2
map(double)(Left("Whoops!")) // => Left("Whoops!")
map(double)(Right(21)) // => Right(42)
```

The type list is only used to inform arity of the constructor. Additional features like type checking or generic serialization can transparently be built on top by abstracting over the input definition (exposed as `adt(D).def == D`).

## Properties

`X.match(X)(x) == x` for any ADT `X` and any value of that ADT `x`.

`adt(D).def == D` for any definition `D`.
npm package: @masaeedu/do
Description: ## Summary
Author: Asad Saeeduddin
Latest version: 0.2.2

# `@masaeedu/do`

## Summary

General purpose do notation for monads

## Usage

```js
const { mdo } = require("@masaeedu/do")

// :: type Monad m = { of: a -> m a, chain: (a -> m b) -> m a -> m b }

// :: Monad []
const Arr = (() => {
  // :: a -> [a]
  const of = x => [x]

  // :: (a -> [b]) -> [a] -> [b]
  const chain = amb => ma => ma.reduce((p, a) => [...p, ...amb(a)], [])

  return { of, chain }
})()

const computation = mdo(Arr)(({ x, y }) => [
  [x, () => [1, 2]],
  [y, () => [3, 4]],
  () => Arr.of(x * y)
])

console.log(computation) // => [3, 4, 6, 8]
```
npm package: @masaeedu/infix
Description: ## Summary A simple trick for applying a bag of static functions where the data goes last as infix functions.
Author: Asad Saeeduddin
Latest version: 1.2.1

# Infix

## Summary
A simple trick for applying a bag of static functions where the data goes last as infix functions.

## Usage

```js
const { infix, uncurry } = require("@masaeedu/infix");

const Int = {
  "+": x => y => y + x,
  "-": x => y => y - x,
  "*": x => y => y * x,
  "/": x => y => y / x
};

const result = infix(Int) (1) ["+"] (2) ["+"] (5) ["*"] (5) ["+"] (2) .unwrap;
// => 42
```

## Properties

The expression:

```js
infix(F)(a)
  .f(b)
  .g(c).unwrap
```

desugars to:

```js
F.g(c)(F.f(b)(a))
```

Note that this only works when `F.f`, `F.g` etc. are binary functions with the data as the second argument.

Some functions may not fit this mould. Functions of arbitrary arity are supported using uncurrying. The expression:

```js
infix(F)(a)
  .f(b)
  [uncurry](g)([c, d])
  .h(e).unwrap
```

desugars to:

```js
F.h(e)(
  F.g(c)(d)(
    F.f(b)(
      a)))
```

## Disclaimer

Use of this library may result in you being instantly fired. I accept no responsibility.
npm package: @masaeedu/pmatch
Description: ## Summary
Author: Asad Saeeduddin
Latest version: 0.0.10

# `@masaeedu/pmatch`

## Summary

A more convenient pattern matching syntax for ADTs constructed using [`@masaeedu/adt`](https://github.com/masaeedu/adt)

## Usage

```js
const { adt, match } = require("@masaeedu/adt");
const { pmatch } = require("@masaeedu/pmatch");

const Either = adt({ Left: ["e"], Right: ["a"] });
const { Left, Right } = Either;

// Can be used to match over multiple arguments
// :: Equatable e -> Equatable a -> Either e a -> Either e a -> Boolean
Either.equals = E => A =>
  pmatch({
    "(Left  x) (Left  y)": ({ x, y }) => E.equals(x)(y),
    "(Right x) (Right y)": ({ x, y }) => A.equals(x)(y)
    "_         _        ": _ => false
  });

// Also handy when matching over nested ADTs
// :: Either e (Either e a) -> Either e a
Either.join = pmatch({
  "(Left  e        )": ({ e }) => Left(e),
  "(Right (Right a))": ({ a }) => Right(a),
  "(Right l        )": ({ l }) => l
});
```

## Properties

TODO: Provide simple conceptual desugaring in terms of `match` from `@masaeedu/adt`

## Disclaimer

Library has no tests and will perform poorly, this is basically a toy project to understand different algorithms for implementing pattern matching
npm package: @masaischool/lotus
Description: Masai UI component library designed to work seamlessly with Chakra UI
Author: Masai Developers
Latest version: 1.0.30

# lotus

## npm i @masaischool/lotus

## Access chromatic storybook deployed permalink:

https://main--623063b3e637ea003aa05f20.chromatic.com/

## Demo Repo:

Github Link: https://github.com/nitansh11/lotus-demo
Deployed Link: https://lotus-demo.netlify.app/

## How to use lotus ui library:

### Step 1: Install the package:

npm i @masaischool/lotus

### Step 2: Add Lotus Theme wrapper in index.tsx file

`import { LotusTheme, ChakraProvider } from "@masaischool/lotus";`

`<ChakraProvider theme={LotusTheme}> <App /> </ChakraProvider>`

### Step 3: Import component as per the storybook documentation, eg:

`<Button variant="primary" size="sm"> Hello </Button>`

## Customize theme as per your own design requirement:

### Step 1: Import default LotusTheme from lotus library, LotusTheme already has some default customized styling done using extendTheme component provided by Chakra UI. For reference: https://chakra-ui.com/docs/styled-system/theming/customize-theme

`import { LotusTheme } from "@masaischool/lotus";`

### Step 2: Make styles object which you want to override by following syntax provided by Chakra UI, for example we want to override "styles" object of the theme, we need to create our styles object like this.

Note: Below syntax is defined in chakra documentation for all objects like styles, layerStyles,textStyles,components etc. (Reference Link:  https://chakra-ui.com/docs/styled-system/theming/customize-theme)
<pre>
const styles = {
  global: {
    body: {
      m: "0px",
    },
    h1: {
      fontWeight: "800!important",
      fontSize: "48px!important",
      lineHeight: "62px!important",
      bgColor: "red",
    },
    h2: {
      fontWeight: "700!important",
      fontSize: "34px!important",
      lineHeight: "40px!important",
    },
    h3: {
      fontWeight: "700!important",
      fontSize: "24px!important",
      lineHeight: "32px!important",
    },
    h4: {
      fontWeight: "700!important",
      fontSize: "20px!important",
      lineHeight: "28px!important",
    },
    h5: {
      fontWeight: "700!important",
      fontSize: "18px!important",
      lineHeight: "24px!important",
    },
    h6: {
      fontWeight: "700!important",
      fontSize: "16px!important",
      lineHeight: "20px!important",
    },
  },
};
</pre>
### Step 3: Override "styles" object with existing "styles" object:

`const customTheme = extendTheme({ ...LotusTheme, styles });`

### Step 4: Now we can use our customTheme in ChakraProvider:

` <ChakraProvider theme={customTheme}>
      <App />
   </ChakraProvider>`
npm package: @masajo/ava-buscador
Description: Librería de ejemplo para curso de Angular Avanzado
Author: masajo
Latest version: 1.0.2

# AvaBuscador

This library was generated with [Angular CLI](https://github.com/angular/angular-cli) version 12.2.0.

## Code scaffolding

Run `ng generate component component-name --project ava-buscador` to generate a new component. You can also use `ng generate directive|pipe|service|class|guard|interface|enum|module --project ava-buscador`.
> Note: Don't forget to add `--project ava-buscador` or else it will be added to the default project in your `angular.json` file. 

## Build

Run `ng build ava-buscador` to build the project. The build artifacts will be stored in the `dist/` directory.

## Publishing

After building your library with `ng build ava-buscador`, go to the dist folder `cd dist/ava-buscador` and run `npm publish`.

## Running unit tests

Run `ng test ava-buscador` to execute the unit tests via [Karma](https://karma-runner.github.io).

## Further help

To get more help on the Angular CLI use `ng help` or go check out the [Angular CLI Overview and Command Reference](https://angular.io/cli) page.
npm package: @masajo/my-corp-library
Description: Librería de ejemplo para curso de Angular Avanzado
Author: masajo
Latest version: 1.0.0

# MyCorpLibrary

This library was generated with [Angular CLI](https://github.com/angular/angular-cli) version 12.2.0.

## Code scaffolding

Run `ng generate component component-name --project my-corp-library` to generate a new component. You can also use `ng generate directive|pipe|service|class|guard|interface|enum|module --project my-corp-library`.
> Note: Don't forget to add `--project my-corp-library` or else it will be added to the default project in your `angular.json` file. 

## Build

Run `ng build my-corp-library` to build the project. The build artifacts will be stored in the `dist/` directory.

## Publishing

After building your library with `ng build my-corp-library`, go to the dist folder `cd dist/my-corp-library` and run `npm publish`.

## Running unit tests

Run `ng test my-corp-library` to execute the unit tests via [Karma](https://karma-runner.github.io).

## Further help

To get more help on the Angular CLI use `ng help` or go check out the [Angular CLI Overview and Command Reference](https://angular.io/cli) page.
npm package: @masaki39/obsidian-mcp
Description: MCP server exposing the active Obsidian file (path and content) via Local REST API
Author: masaki
Latest version: 0.0.3

# obsidian-mcp

Simple MCP server that provides the active Obsidian file (path and content) to your LLM via the Obsidian Local REST API.

## Prerequisites
- [Obsidian Local REST API plugin](https://github.com/coddingtonbear/obsidian-local-rest-api)
- [Node.js 20+](https://nodejs.org/)

## Configuration

- Install the community plugin [Obsidian Local REST API plugin](https://github.com/coddingtonbear/obsidian-local-rest-api) in Obsidian.
- Open the plugin settings, enable HTTP, and copy the API key.

## MCP client configuration
```json
{
  "mcpServers": {
    "obsidian-mcp": {
      "command": "npx",
      "args": ["-y", "@masaki39/obsidian-mcp@latest"],
      "env": {
        "OBSIDIAN_API_KEY": "your_api_key_here",
        "OBSIDIAN_VAULT_PATH": "/absolute/path/to/your/vault"
      }
    }
  }
}
```
`OBSIDIAN_VAULT_PATH` is optional; omit it if you prefer the relative paths returned by the plugin.
npm package: @masaki39/prompts-mcp
Description: Model Context Protocol server that registers Markdown prompts as callable tools or slash commands.
Author: masaki39
Latest version: 2.0.0

# prompts-mcp

![NPM Downloads](https://img.shields.io/npm/dt/%40masaki39%2Fprompts-mcp)

Simple MCP server that turns Markdown files into MCP tools or prompts (slash commands).

## Features

- **Path-based naming**: File structure determines the tool/prompt name (e.g., `project/feature.md` → `project/feature`)
- **Multiple registration modes**: Register as tools, prompts (slash commands), or both

## Prompt format

Each Markdown file is parsed **once at startup**. The file path becomes the tool/prompt name:

- **Root level**: `file.md` → `file`
- **Nested**: `project/feature.md` → `project/feature`

YAML frontmatter controls metadata:

```markdown
---
description: Produce a concise project brief.
enabled: true
---
Prompt body goes here...
```

- `description` – optional tool/prompt description (defaults to "Prompt defined in …")
- `enabled` – defaults to `true`; set to `false` to disable

## MCP config examples

### As prompts (slash commands)

```json
{
  "mcpServers": {
    "prompts-mcp": {
      "command": "npx",
      "args": [
        "-y",
        "@masaki39/prompts-mcp@latest",
        "--register-as=prompt"
      ],
      "env": {
        "PROMPTS_DIR": "/absolute/path/to/prompts"
      }
    }
  }
}
```

### As tools (backward compatible)

```json
{
  "mcpServers": {
    "prompts-mcp": {
      "command": "npx",
      "args": ["-y", "@masaki39/prompts-mcp@latest"],
      "env": {
        "PROMPTS_DIR": "/absolute/path/to/prompts"
      }
    }
  }
}
```

### As both tools and prompts

```json
{
  "mcpServers": {
    "prompts-mcp": {
      "command": "npx",
      "args": [
        "-y",
        "@masaki39/prompts-mcp@latest",
        "--register-as=both"
      ],
      "env": {
        "PROMPTS_DIR": "/absolute/path/to/prompts"
      }
    }
  }
}
```

## Command-line options

- `--register-as=MODE` - Registration mode: `tool`, `prompt`, or `both` (default: `tool`)
  - `tool`: Register as MCP tools (backward compatible with v1.x)
  - `prompt`: Register as MCP prompts (for slash commands like `/project/feature`)
  - `both`: Register as both tools and prompts
- `--help`, `-h` - Show help message

## Environment variables

- `PROMPTS_DIR` (required) - Directory containing `.md` prompt files
- `REGISTER_AS` - Same as `--register-as` option (CLI argument takes precedence)

## Examples

**File structure:**

```
prompts/
├── brief.md           → brief
├── review.md          → review
└── project/
    ├── init.md        → project/init
    └── deploy.md      → project/deploy
```

**Using as slash commands:**

```
/brief
/review
/project/init
/project/deploy
```
npm package: @masaminh/lighten_stack
Description: lighten_stack - a CLI tool for creating a single image by performing lighten blend compositing on multiple input images
Author: masaminh
Latest version: 0.1.1

# lighten_stack

`lighten_stack` is a CLI tool for creating a single image by performing lighten blend compositing on multiple input images.

## Features

- Compare multiple input images and generate a single output image using lighten blend compositing.
- Supports TIFF format for both input and output.

## Installation

Install via npm:

```bash
npm install -g lighten_stack
```

## Usage

```bash
lighten_stack [options] <input...>
```

### Arguments

- `input`: Input files (must be in TIFF format).

### Options

- `-o, --output <output>`: Specify the output file (must be in TIFF format).
- `-d, --debug`: Enable debug mode.
- `-h, --help`: Display help for the command.

### Example

```bash
lighten_stack -o output.tiff input1.tiff input2.tiff input3.tiff
```

This command will take `input1.tiff`, `input2.tiff`, and `input3.tiff` as input, perform lighten blend compositing, and save the result to `output.tiff`.

## License

MIT
npm package: @masaraxui/react
Description: 🚀 Beautiful and modern React UI library
Author: MasaraxUI
Latest version: 1.1.2

<p align="center">
  <a href="https://masarax.com">
      <img 
        alt="MasaraxUI v1 logo" 
        width="100%" 
        src=""
      />
  </a>
</p>
<p align="center">
  <a href="https://github.com/masarax/masaraxui/blob/main/LICENSE">
    <img src="https://img.shields.io/npm/l/@masaraxui/react?style=flat" alt="License">
  </a>
  <a href="https://www.npmjs.com/package/@masaraxui/react">
    <img src="https://img.shields.io/npm/dm/@masaraxui/react.svg?style=flat-round" alt="npm downloads">
  </a>
</p>

MasaraxUI is the modern UI library built to help you move fast, stay consistent, and deliver delightful user experiences.

## Getting Started

Visit <a aria-label="masaraxui learn" href="https://github.com/masarax/masaraxui/blob/main/apps/docs/content/docs/react/getting-started/index.mdx">https://github.com/masarax/masaraxui/blob/main/apps/docs/content/docs/react/getting-started/index.mdx</a> to get started with MasaraxUI.

## Documentation

Visit [https://masarax.com](https://masarax.com) for the full MasaraxUI documentation.

## Community

We're excited to see the community adopt MasaraxUI, raise issues, and provide feedback.
Whether it's a feature request, bug report, or a project to showcase, please get involved!

- [GitHub Discussions](https://github.com/masarax/masaraxui/discussions)

## Contributing

Contributions are always welcome!

See [CONTRIBUTING.md](https://github.com/masarax/masaraxui/blob/main/CONTRIBUTING.md) for ways to get started.

Please adhere to this project's [CODE_OF_CONDUCT](https://github.com/masarax/masaraxui/blob/main/CODE_OF_CONDUCT.md).

## License

[MIT](https://choosealicense.com/licenses/mit/)
npm package: @masatomakino/aws-secrets
Description: AWS Secret Key Checker
Author: MasatoMakino
Latest version: 0.4.0
Deprecated: This package is deprecated. Use GitHub Secret Scanning instead. See https://github.com/MasatoMakino/node-secrets/issues/175

# node-secrets

> [!CAUTION]
> This package has been deprecated. Use GitHub's [Secret scanning](https://docs.github.com/en/code-security/secret-scanning/introduction/about-secret-scanning) instead. See [Issue #175](https://github.com/MasatoMakino/node-secrets/issues/175) for details.

[![MIT License](http://img.shields.io/badge/license-MIT-blue.svg?style=flat)](LICENSE)

## How to use

```shell
npx @masatomakino/aws-secrets
```

This command scans files staged in the git repository for AWS key information.
npm package: @masatomakino/canvas-particle-waypoint
Description: Particle waypoint module for canvas 2d
Author: MasatoMakino
Latest version: 0.7.4

# canvas-particle-waypoint

> Particle waypoint module for canvas 2d

[![MIT License](http://img.shields.io/badge/license-MIT-blue.svg?style=flat)](LICENSE)
[![npm version](https://badge.fury.io/js/@masatomakino%2Fcanvas-particle-waypoint.svg)](https://badge.fury.io/js/@masatomakino%2Fcanvas-particle-waypoint)
[![build](https://github.com/MasatoMakino/canvas-particle-waypoint/actions/workflows/ci_main.yml/badge.svg)](https://github.com/MasatoMakino/canvas-particle-waypoint/actions/workflows/ci_main.yml)
[![Test Coverage](https://api.codeclimate.com/v1/badges/c29de14e16c38bff2628/test_coverage)](https://codeclimate.com/github/MasatoMakino/canvas-particle-waypoint/test_coverage)
[![Maintainability](https://api.codeclimate.com/v1/badges/c29de14e16c38bff2628/maintainability)](https://codeclimate.com/github/MasatoMakino/canvas-particle-waypoint/maintainability)


[![ReadMe Card](https://github-readme-stats.vercel.app/api/pin/?username=MasatoMakino&repo=canvas-particle-waypoint)](https://github.com/MasatoMakino/canvas-particle-waypoint)

## Demo

[Demo page](https://masatomakino.github.io/canvas-particle-waypoint/demo/)

https://user-images.githubusercontent.com/2356805/221790554-e596880f-c18c-43d0-b11f-cdefcab786fe.mov

## License

[MIT licensed](LICENSE).
npm package: @masatomakino/demo-showcase
Description: Generate demo HTML pages from JS/TS source files using Vite
Author: MasatoMakino
Latest version: 0.1.2

# @masatomakino/demo-showcase

[![MIT License](https://img.shields.io/badge/license-MIT-blue.svg?style=flat)](LICENSE)
[![npm version](https://img.shields.io/npm/v/@masatomakino/demo-showcase.svg?style=flat)](https://www.npmjs.com/package/@masatomakino/demo-showcase)
[![CI](https://github.com/MasatoMakino/demo-showcase/actions/workflows/ci.yml/badge.svg)](https://github.com/MasatoMakino/demo-showcase/actions/workflows/ci.yml)
[![GitHub](https://img.shields.io/badge/GitHub-Repository-blue?logo=github&style=flat)](https://github.com/MasatoMakino/demo-showcase)

A CLI tool that generates demo HTML pages from JavaScript/TypeScript source files using Vite.

Place demo source files (e.g. `demo_*.ts`) in a directory, and this tool generates a browsable demo site with sidebar navigation — both as a dev server with HMR and as a static build.

## Install

```bash
npm install --save-dev @masatomakino/demo-showcase
```

Requires Node.js >= 22.

## Usage

### Dev server (live preview with HMR)

```bash
npx demo-showcase dev --srcDir ./demoSrc
```

### Static build

```bash
npx demo-showcase build --srcDir ./demoSrc
```

Output goes to `./docs/demo/` by default.

## Options

| Option | Default | Description |
|--------|---------|-------------|
| `--prefix <string>` | `"demo"` | Filename prefix for demo pages |
| `--srcDir <path>` | `"./demoSrc"` | Demo source directory |
| `--distDir <path>` | `"./docs/demo"` | Output directory (build only) |
| `--body <string>` | `""` | HTML body content |
| `--style <string>` | `""` | Custom CSS styles |
| `--port <number>` | `3456` | Dev server port (dev only) |
| `--open` | `false` | Open browser on start (dev only) |
| `--host <string>` | `"localhost"` | Dev server host (dev only) |

## How it works

1. Scans `srcDir` for files matching `{prefix}_*.ts` or `{prefix}_*.js`
2. Generates an HTML entry point for each demo file
3. Builds with Vite (static) or serves via Vite dev server (dev mode)
4. Produces an index page with sidebar navigation linking all demos

Assets referenced via `import` in demo files are bundled by Vite automatically.

## License

[MIT](LICENSE)
npm package: @masatomakino/fake-mouse-event
Description: Fake mouse event generator with x/y properties for jsdom.
Author: MasatoMakino
Latest version: 0.2.1

# fake-mouse-event

> Fake mouse event generator with x/y properties for jsdom.

[![MIT License](https://img.shields.io/badge/license-MIT-blue.svg?style=flat)](LICENSE)
[![npm version](https://img.shields.io/npm/v/@masatomakino/fake-mouse-event.svg?style=flat)](https://www.npmjs.com/package/@masatomakino/fake-mouse-event)
[![test](https://github.com/MasatoMakino/fake-mouse-event/actions/workflows/ci_main.yml/badge.svg?branch=main)](https://github.com/MasatoMakino/fake-mouse-event/actions/workflows/ci_main.yml)

## Why

jsdom's `MouseEvent` constructor does not properly set coordinate properties such as `x`, `y`, `offsetX`, and `offsetY`. This library provides synthetic `MouseEvent` and `PointerEvent` instances with correct coordinate values for testing event-driven code in jsdom environments.

## Installation

```shell
npm i @masatomakino/fake-mouse-event -D
```

## Usage

### Factory Functions

Use `getMouseEvent` and `getPointerEvent` to create events with sensible defaults.

```ts
import { getMouseEvent, getPointerEvent } from "@masatomakino/fake-mouse-event";

// Basic mouse event (all coordinates default to 0)
const click = getMouseEvent("click");

// Mouse event with custom coordinates
const clickAt = getMouseEvent("click", {
  x: 100,
  y: 100,
  offsetX: 150,
  offsetY: 150,
});

// Pointer event
const pointerDown = getPointerEvent("pointerdown", {
  x: 100,
  y: 100,
  pointerId: 1,
});
```

### Dispatching Events

Created events can be dispatched to DOM elements as usual.

```ts
const canvas = document.createElement("canvas");
canvas.addEventListener("click", (e) => {
  console.log(e.x, e.y); // 100, 100
});

const event = getMouseEvent("click", { x: 100, y: 100 });
canvas.dispatchEvent(event);
```

## API

### `getMouseEvent(type, options?)`

Returns a `FakeMouseEvent` instance (extends `UIEvent`, implements `MouseEvent`).

Defaults: `bubbles: true`, `cancelable: true`, all coordinates: `0`.

### `getPointerEvent(type, options?)`

Returns a `FakePointerEvent` instance (extends `FakeMouseEvent`).

Additional defaults: `pointerId: 0`, `pointerType: "mouse"`, `isPrimary: true`.

### `FakeMouseEventInit`

Extends [`UIEventInit`](https://developer.mozilla.org/en-US/docs/Web/API/UIEvent/UIEvent#options). Key properties:

| Category | Properties |
| --- | --- |
| Coordinates | `x`, `y`, `clientX`, `clientY`, `screenX`, `screenY`, `offsetX`, `offsetY`, `pageX`, `pageY` |
| Modifiers | `altKey`, `ctrlKey`, `shiftKey`, `metaKey` |
| Button | `button`, `buttons` |
| Movement | `movementX`, `movementY` |

### `FakePointerEventInit`

Extends `FakeMouseEventInit`. Additional properties:

`pointerId`, `width`, `height`, `pressure`, `tangentialPressure`, `tiltX`, `tiltY`, `twist`, `pointerType`, `isPrimary`

## License

[MIT](LICENSE)
npm package: @masatomakino/gulptask-deploy-ftp
Description: Thin ftp-deploy wrapper for gulp.js
Author: MasatoMakino
Latest version: 0.1.1

# gulptask-deploy-ftp

> Thin ftp-deploy wrapper for gulp.js

[![MIT License](http://img.shields.io/badge/license-MIT-blue.svg?style=flat)](LICENSE)
[![Build](https://github.com/MasatoMakino/gulptask-deploy-ftp/actions/workflows/buildJS.yml/badge.svg)](https://github.com/MasatoMakino/gulptask-deploy-ftp/actions/workflows/buildJS.yml)

## Getting Started

### Install

```bash
npm install --save-dev gulp
```

and

```bash
npm install --save-dev https://github.com/MasatoMakino/gulptask-deploy-ftp.git
```

### Run in gulpfile.js

The first step is to create an `auth.json` file.

```json
{
  "user": "user_name",
  "password": "password",
  "host": "host.name.example",
  "remoteRoot": "/dir/to/public_html",
  "port": 21
}
```

This file contains the FTP authentication information. In this example, this file is stored in `~/.ftp_auth/auth.json`.

The next step is to write `gulpfile.js`.

```js
const os = require("os");
const path = require("path");

const { deploy } = require("gulptask-deploy-ftp").generateTasks({
  authFilePath: path.resolve(os.homedir(), ".ftp_auth", "auth.json"),
});

exports.deploy = deploy;
```

`path.resolve(os.homedir(), ".ftp_auth", "auth.json")` points to `~/.ftp_auth/auth.json`

## License

[MIT licensed](LICENSE).
npm package: @masatomakino/gulptask-deploy-ssh
Description: Web page deployment tasks for SSH and rsync.
Author: MasatoMakino
Latest version: 0.0.7

# gulptask-deploy-ssh

> Web page deployment tasks for SSH and rsync.

[![MIT License](http://img.shields.io/badge/license-MIT-blue.svg?style=flat)](LICENSE)

## Getting Started

### Install

```bash
npm install --save-dev gulp
```

and

```bash
npm install --save-dev @masatomakino/gulptask-deploy-ssh
```

### Run in gulpfile.js

#### ssh config

Set up your [`~/.ssh/config`](https://linux.die.net/man/5/ssh_config)

```
Host <Host section name>
 HostName <example.com>
 IdentityFile  <e.g. ~/.ssh/id_rsa>
 User <user name>
 Port <port number>
```

#### gulpfile.js

```js
const { deploy } = require("@masatomakino/gulptask-deploy-ssh").get({
  host: "Host section name", //<Host section name> in `~/.ssh/config`
  destination: "path/to/public_html",
});

exports.deploy = deploy;
```

## License

[MIT licensed](LICENSE).
npm package: @masatomakino/gulptask-dev-server
Description: browser-sync wrapper for gulp.
Author: MasatoMakino
Latest version: 0.6.0
Deprecated: This package is archived and no longer maintained. Use bundlers with built-in dev servers instead.

# gulptask-dev-server

> [!CAUTION]
> This package is archived and no longer maintained. Use bundlers with built-in dev servers instead.

> browser-sync wrapper for gulp.

[![MIT License](http://img.shields.io/badge/license-MIT-blue.svg?style=flat)](LICENSE)

## CLI options

```shell
npx @masatomakino/gulptask-dev-server --help
Usage: gulptask-dev-server [options]

Options:
-b, --base <path>     base directory of web contents
--ignore [files...]   ignore contents, not reload.
-p,--usePhpDevServer  use PHP Development Server, ex. wordpress  (default: false)
-h, --help            display help for command
```

## License

[MIT licensed](LICENSE).
npm package: @masatomakino/gulptask-ejs
Description: ejs compiler task for gulp.js
Author: MasatoMakino
Latest version: 0.4.3
Deprecated: This package is deprecated. Use EJS directly via its own API and CLI. See https://github.com/MasatoMakino/gulptask-ejs/issues/310

# gulptask-ejs

> [!CAUTION]
>
> **This repository has been archived.**
>
> This package is deprecated. Use EJS directly via its own API and CLI.
>
> See [#310](https://github.com/MasatoMakino/gulptask-ejs/issues/310) for details.

[![MIT License](http://img.shields.io/badge/license-MIT-blue.svg?style=flat)](LICENSE)
[![npm version](https://badge.fury.io/js/@masatomakino%2Fgulptask-ejs.svg)](https://badge.fury.io/js/@masatomakino%2Fgulptask-ejs)
npm package: @masatomakino/gulptask-imagemin
Description: imagemin task for gulp.js
Author: MasatoMakino
Latest version: 0.6.0
Deprecated: This package is deprecated. Use your bundler's built-in image optimization instead. See https://github.com/MasatoMakino/gulptask-imagemin/issues/274

> [!CAUTION]
>
> **This repository has been archived.**
>
> This package is deprecated. Use your bundler's built-in image optimization instead.
>
> See [#274](https://github.com/MasatoMakino/gulptask-imagemin/issues/274) for details.

# gulptask-imagemin

> imagemin task for gulp.js

[GitHub リポジトリ](https://github.com/MasatoMakino/gulptask-imagemin.git)

[gulp4](https://gulpjs.com/) 用のタスクをモジュール化したものです。
[Sharp](https://sharp.pixelplumbing.com/)を利用して、画像ファイルの最適化を行います。

## Getting Started

### Install

モジュールは

```bash
$ npm install @masatomakino/gulptask-imagemin -D
```

でインストールします

## CLI

このモジュールは、コマンドラインから実行できます。

```bash
$ npx @masatomakino/gulptask-imagemin --src 画像ソースのディレクトリ --dest 出力先ディレクトリ
```

拡大率はオプションで指定します。

```bash
--scales 'postfix1',1.0/'postfix2',0.5
```

オプションは文字列と数値を組み合わせた配列です。1つのスケールオプションが`'postfix',1.0`のように`,`で区切られています。各オプションは`/`で区切られています。

## Option

第三引数のオプションは省略可能です。デフォルトでは以下のように指定されています。

```js
{
  scaleOptions: [
    {
      postfix: "",
      scale: 1.0,
    },
    {
      postfix: "_xs",
      scale: 0.5,
    },
  ];
}
```

- `option.scaleOptions` スケーリングに関する設定が格納された配列です。
- `ScaleOption.postfix` 拡大縮小された画像を格納するディレクトリ名の接尾名です。たとえばオリジナルの画像ディレクトリが`img`、postfixが`_xs`なら、出力ディレクトリは`img_xs`になります。
- `ScaleOption.scale` 拡大縮小率です。1.0ならオリジナルと同じサイズが、0.5なら一辺が半分のサイズの画像が出力されます。

## License

[MIT licensed](LICENSE).
npm package: @masatomakino/newer-files
Description: Compare two directories and list updated files.
Author: MasatoMakino
Latest version: 0.4.0
Deprecated: This package is deprecated. Use Node.js 22+ built-in globSync instead. See https://github.com/MasatoMakino/node-newer-files/issues/182

# node-newer-files

> [!CAUTION]
>
> **This repository has been archived.**
>
> This package is deprecated. The functionality can be replaced with ~20 lines of code using Node.js 22+ built-in `globSync` from `node:fs`. See [#182](https://github.com/MasatoMakino/node-newer-files/issues/182) for replacement examples.

> Compare two directories and list updated files.

[![MIT License](http://img.shields.io/badge/license-MIT-blue.svg?style=flat)](LICENSE)

## Getting Started

### Install

```bash
npm install @masatomakino/newer-files --save-dev
```

### API

[API documents](https://masatomakino.github.io/node-newer-files/api/)

##### getFiles(extensions, srcDir, targetDir) → {Array}

Compare two directories and list updated files.

##### sync(extensions, srcDir, targetDir) → {Array}

Compare two directories and sync files.

## License

[MIT licensed](LICENSE).
npm package: @masatomakino/particle-waypoint
Description: Path module for calculating waypoints.
Author: MasatoMakino
Latest version: 0.8.3

# particle-waypoint

> Path module for calculating waypoints.

[![MIT License](http://img.shields.io/badge/license-MIT-blue.svg?style=flat)](LICENSE)
[![npm version](https://badge.fury.io/js/@masatomakino%2Fparticle-waypoint.svg)](https://badge.fury.io/js/@masatomakino%2Fparticle-waypoint)
[![CI](https://github.com/MasatoMakino/particle-waypoint/actions/workflows/ci_main.yml/badge.svg)](https://github.com/MasatoMakino/particle-waypoint/actions/workflows/ci_main.yml)
[![Maintainability](https://api.codeclimate.com/v1/badges/8f61441c3c7b97b4bed8/maintainability)](https://codeclimate.com/github/MasatoMakino/particle-waypoint/maintainability)
[![Test Coverage](https://api.codeclimate.com/v1/badges/8f61441c3c7b97b4bed8/test_coverage)](https://codeclimate.com/github/MasatoMakino/particle-waypoint/test_coverage)

## API Documents

[API documents](https://masatomakino.github.io/particle-waypoint/api/)

## Getting Started

### Install

```shell
npm install @masatomakino/particle-waypoint --save-dev
```

### Import

particle-waypoint is composed of ES6 modules and TypeScript d.ts files.

At first, import classes.

```js
import {
  ParticleWay,
  Particle,
  ParticleGenerator,
} from "@masatomakino/particle-waypoint";
```

### Create particle way

```js
const points = [
  [100, 100],
  [100, 200],
  [200, 200],
  [200, 300],
];
const wayPoint = new ParticleWay(points);
```

### Create generator

```js
const generator = new ParticleGenerator(wayPoint, {
  generationMode: "loop",
});
generator.animator.setSpeed(600, 20);
generator.play();
```

Particles animate on `wayPoint`.

## Uninstall

```shell script
npm uninstall @masatomakino/particle-waypoint --save-dev
```

## License

particle-waypoint is [MIT licensed](LICENSE).