open-index/open-npm huggingface dataset:
npm package: @perry-rylance/watchful-autoload-generator
Description: This is a PHP autoloader generator designed to work with files local to your project. Available as a node plugin, this tool is designed to be installed via NPM and then utilised in your gulpfile.
Author: Perry Rylance
Latest version: 1.0.1
Deprecated: Package no longer supported. Contact Support at https://www.npmjs.com/support for more info.

# WatchfulAutoloadGenerator
This is a PHP autoloader generator designed to work with files local to your project. Available as a node plugin, this tool is designed to be installed via NPM and then utilised in your gulpfile.

This tool uses a precompiled version of [Autoload](https://github.com/theseer/Autoload), with thanks to [theseer](https://github.com/theseer).

## Requirements

- Node.js
- PHP

Both of which must be available on the command line.

## Installation

I recommend installing this tool via NPM:

`npm install @perry-rylance/watchful-autoload-generator`

## Usage

This tool exports a single function which will recursively watch PHP files in the specified directory.

The generated class autoloader file will be outputted to autoload.php in your project root.

```
generator = require("@perry-rylance/watchful-autoload-generator").default;

exports.default = function() {
	generator("includes");
}
```

Where `includes` is the folder containing your PHP classes. Please note, I recommend putting your projects PHP classes in a subfolder of the project root, in order to avoid this tool scanning the vendor directory where present.
npm package: @perryfinn/ai-commit-cli
Description: 一个利用 AI 服务（OpenAI、Dify 等）自动生成遵循指定标准的提交信息并处理提交过程的命令行工具。用 AI 消灭低价值 commit。🥳
Author: PerryFinn <perryfinn@163.com>
Latest version: 0.0.4
npm package: @perryrh0dan/2fa
Description: TOTP and HOTP package for nodejs
Author: Thomas Pöhlmann
Latest version: 1.0.2

<h1 align="center">
  2FA
</h1>

<h4 align="center">
  TOTP and HOTP package for nodejs
</h4>

<div align="center">
  <a href="https://travis-ci.org/perryrh0dan/2fa">
    <img alt="Build Status" src="https://travis-ci.org/perryrh0dan/2fa.svg?branch=master" />
  </a>
  <a href="https://codecov.io/gh/perryrh0dan/2fa">
    <img alt="Code Coverage" src="https://codecov.io/gh/perryrh0dan/2fa/branch/master/graph/badge.svg" />
  </a>
  <a href="https://codeclimate.com/github/perryrh0dan/2fa/maintainability">
    <img src="https://api.codeclimate.com/v1/badges/1597f83b289ebf3d68d3/maintainability" />
  </a>
  <a href="https://www.npmjs.com/package/@perryrh0dan/2fa">
    <img alt="NPM Downloads" src="https://img.shields.io/npm/dt/@perryrh0dan/2fa" />
  </a>
</div>

## Descriptions

2fa is a zero dependency node.js package for generating and verifying one-time passwords. It can be used to implement two-factor (2FA) or multi-factor(MFA) authentication methods in anywhere that requires users to log in.

Open MFA standards are defined in RFC [4226]([https://tools.ietf.org/html/rfc4226) (HOTP: An HMAC-Based One-Time Password Algorithm) and in RFC [6238](https://tools.ietf.org/html/rfc6238) (TOTP: Time-Based One-Time Password Algorithm). GOTP implements server-side support for both of these standards.

## Highlights

## Contents

- [Description](#description)
- [Highlights](#highlights)
- [Install](#install)
- [Usage](#usage)
- [Development](#development)
- [Team](#team)
- [License](#license)

## Install

```bash
npm install @perryrh0dan/2fa
```

## Usage

### Time-based OTPs

```ts
// Generate secret
secret = generateSecret({ label: "accountName", issuer: "issuerName" })

// Generate code
code = totpGenerate({ secret: secret.secret })

// Verify code
totpVerify({ secret: secret.secret, token: code) //true

// Generate a provisioning URI
secret.otpauthURL()
// otpauth://totp/issuerName:accountName?secret=4S62BZNFXXSZLCRO&issuer=issuerName
```

### Counter-based OTPs

```ts
// Generate secret
secret = generateSecret({ label: "accountName", issuer: "issuerName" })

// Generate code at counter
code = hotpGenerate(secret.secret, counter)

// Verify code
hotpVerify({ secret: secret.secret, token: code, counter: counter}) //true

// Generate a provisioning URI
secret.otpauthURL({ counter: counter })
// otpauth://hotp/issuerName:accountName?secret=4S62BZNFXXSZLCRO&issuer=issuerName&counter=counter
```

## Development

## Team

- Thomas Pöhlmann [(@perryrh0dan)](https://github.com/perryrh0dan)

## License

[MIT](https://github.com/perryrh0dan/2fa/blob/master/license.md)

This repository was generated by [tmpo](https://github.com/perryrh0dan/tmpo)
npm package: @pers0n4/cra-template-typescript
Description: TypeScript template for Create React App
Author: Dong-Young Kim
Latest version: 2.0.0

# @pers0n4/cra-template-typescript

[![npm version](https://img.shields.io/npm/v/@pers0n4/cra-template-typescript?color=cb3837&style=flat-square&logo=npm) ![npm downloads](https://img.shields.io/npm/dt/@pers0n4/cra-template-typescript?color=43853d&style=flat-square)](https://www.npmjs.com/package/@pers0n4/cra-template-typescript)
[![license](https://img.shields.io/npm/l/@pers0n4/cra-template-typescript?style=flat-square&color=5f4b8b)](https://github.com/pers0n4/cra-template-typescript/blob/main/LICENSE)

[![React](https://img.shields.io/badge/-React-61dafb?style=flat-square&logo=react&logoColor=000)](https://reactjs.org/)
[![TypeScript](https://img.shields.io/badge/-TypeScript-007acc?style=flat-square&logo=typescript&logoColor=fff)](https://www.typescriptlang.org/)
[![Prettier](https://img.shields.io/badge/-Prettier-f7b93e?style=flat-square&logo=prettier&logoColor=000)](https://prettier.io/)
[![ESLint](https://img.shields.io/badge/-ESLint-4b3ec3?style=flat-square&logo=eslint&logoColor=fff)](https://eslint.org/)
[![stylelint](https://img.shields.io/badge/-stylelint-263238?style=flat-square&logo=stylelint&logoColor=fff)](https://stylelint.io/)

```shell
npx create-react-app app --template @pers0n4/typescript

# or

yarn create react-app app --template @pers0n4/typescript

# or

pnpm create app react-app -- --template @pers0n4/typescript
```
npm package: @persagy2/build-config
Description: 博锐尚格 - 前端项目通用构建配置
Author: halo951
Latest version: 0.0.1-dev.5

<h2 style='text-align:center'>persagy project build config</h2>

<br />

> 博锐尚格前端通用构建配置

## About

-   **声明式配置** 针对 `vite` 原有配置进行二次封装, 保留原 API 的基础上, 增加常用配置限定.
-   **统一管理** 版本管理, 性能优化, 构建配置的统一处理
-   **版本锁定** 锁定常用依赖项版本, 避免版本差异(参考: umijs)
-   **必要的检查** 提供通用的 eslint 规范以及项目级别的必要性信息检查.

## Usage

-   install

```bash
npm install @persagy2/build-config -D
# or
yarn add @persagy2/build-config --dev
```

-   添加插件 (vite.config.ts)

```typescript
import { defineConfig } from 'vite'
import { persagyApp } from '@persagy/build-config'

export default defineConfig({
    plugins: [persagyApp({})]
})
```

-   配置 (persagy.config.json)

> TIPS:
>
> -   建议通过 `@persagy2/create-persagy-app` 或 `coding` 上的模板项目来创建项目
> -   `persagy.config.json` 预设了 Schema 协议, 遵循 ide 提示配置即可.

```json
{
    "$schema": "https://unpkg.com/@persagy2/build-config/persagy-config.schema.json"
}
```

## 配置项说明 (已脱敏)

## features (功能 & Todos 明细)

| tags | feature                                                          | todo |
| ---- | ---------------------------------------------------------------- | ---- |
| lint | package.json 应包含: `packageManager`, `engines`                 |      |
| lint | package.json 依赖项应移除 `^`, `~` 标识, 仅保留版本号 (支持 fix) |      |
npm package: @persagy2/create-persagy-app
Description: 博锐尚格 - 前端项目CLI工具
Author: halo951
Latest version: 0.0.1-dev.5

# @persagy2/build-config

前端通用构建配置

## 特性


- 

## 限定

- 工具
    - create-persagy-app > cpa
- 命令


- 项目必要信息

> engine
> report


- 依赖版本

- 集成插件

- 通用配置


## 开始使用

- 安装依赖
npm package: @persagy2/eslint-plugin
Description: 一个适用于 vue3.x、typescript 项目的通用eslint预设插件
Author: halo951
Latest version: 1.0.0-dev.6

<h2 style='text-align:center'>@persagy2/eslint-pluin</h2>

> Tips:
>
> -   当前版本仅适用于 esm `{ "type": "module" }` 项目, cjs项目需要使用老版本 `[@persagy2/eslint-plugin@legacy](https://www.npmjs.com/package/@persagy2/eslint-plugin/v/0.2.0)`
> -   安装前, 需要移除项目中存在的其他 `eslint` 依赖, 用来保证与 `@pesagy2/eslint-plugin` 不产生依赖冲突 (已内置了 eslint 相关的依赖项)~

# 简介

一个适用于 vue3.x, typescript 项目的通用 eslint 规则预设插件。相比于上一个版本, 这个版本对于规则的选用上做了大量减法 (不再进行大量的重复性校验), 所以请确保项目

# 开始使用

### 1. 安装依赖

```bash
npm install @persagy2/eslint-plugin -D
# or
yarn add @persagy2/eslint-plugin --dev
```

### 2. 配置规则

> Tips: 遵循 [eslint 插件配置](https://eslint.org/docs/latest/use/getting-started) 将这个库当作插件使用即可

在项目根目录下创建 `eslint.config.ts` 配置文件, 文件内容如下:

#### Plan.1 (推荐) 使用创建配置方法创建

```typescript
import { createEslintConfig } from '@persagy2/eslint-plugin'

/** eslint 配置 */
export default createEslintConfig({})
```

#### Plan.2 自行配置

```typescript
import type { Linter } from 'eslint'

/** eslint 配置 */
export default <Linter.Config>{
    root: true,
    /** 配置规则等级 */
    extends: ['plugin:@persagy2/<recommend>'],
    /** 全局变量配置 */
    globals: {},
    /** 自定义规则配置 */
    rules: {}
}
```

### 3. 修改 package.json, 添加 lint 命令

```json
{
    "scripts": {
        "lint": "eslint ./src/**/*.{ts,js,vue,md,json,less,svg}",
        "lint:fix": "eslint ./src/**/*.{ts,js,vue,md,json,less,svg} --fix"
    }
}
```

# 最佳实践

### 合适的 `lint` 时机

在一个版本结束后, 做收尾工作时, 建议执行一下 `lint:fix` 命令, 对已有代码做一下规范性修正. 日常开发中, 遵循 ts 严格模式的策略即可.

### 规则等级

| 等级      | 描述     | 说明                                                                                                     |
| --------- | -------- | -------------------------------------------------------------------------------------------------------- |
| basic     | 基础策略 | 强制性语义语法检查 (建议仅 js 项目使用)                                                                  |
| recommend | 推荐策略 | 编码范式检查, 提高 code 的工整性                                                                         |
| strict    | 严格策略 | 注释量、命名策略方面的检测, 提高代码可维护性                                                             |
| normal    | 标准策略 | 全量代码检查 (注意: 此等级包含了原定于 basic, recommend 等级的全量规则, 所以可能导致 lint 过慢, 慎用!!!) |
npm package: @persagy2/libs
Description: 博锐尚格 - 前端项目依赖项引用
Author: halo951
Latest version: 0.0.1-dev.5

<h2 style='text-align:center'>persagy project common dependencies</h2>

<br />

> 博锐尚格前端通用依赖库引用

## dependencies

| name | comment |
| ---- | ------- |
|      |         |
|      |         |
|      |         |
|      |         |
|      |         |
npm package: @persagy2/meri-design
Description: fork from meri-design and extend it.
Author: xiongshuang
Latest version: 1.4.9-extend.3

# @persagy/meri-design

> 适用范围: vue <=2.6.11, meri-design < 2
> Tips: 此仓库不做任何主动性变更, 仅用于修复或扩展 `meri-design` 组件功能. (注: 不存在任何破坏性变更)

# usage

-   install

```bash

npm install @persagy2/meri-design

# or

yarn add @persagy2/meri-design

```

-   按需引用 ( .babelrc 配置)

```json
[
    "component",
    {
        "libraryName": "@persagy2/meri-design",
        "camel2Dash": false,
        "libDir": "dist",
        "style": false
    }
]
```

## 使用

-   全量引入使用

```typescript
// main.(tj)s
import '@persagy2/meri-design/dist/index.css'

// 添加所有
import Vue from 'vue'
import * as meri from '@persagy2/meri-design'

Vue.use(meri)

// 组件内按需
import {} from '@persagy2/meri-design'
```

## 特定问题解决方案

1.  远端图片资源加载失败问题

    q: 问题原因

    a: 协议或网络问题导致图片加载失败

    p: 解决方法
    
        1. 打开 `node_modules/@persagy2/meri-design/` 目录, 将 `persagy_ui_kit` 文件夹复制到项目的`./public`文件夹下
        2. 测试运行后是否可以访问 `<host>/persagy_ui_kit/images/avatar/default.png` (不)
        3. 配置 Vue.prototype.meriDesignCustomImageServer = '<服务域名>'
npm package: @persea/laura
Description: Laura =====
Latest version: 0.1.1

Laura
=====

`laura` is an intentionally simple test runner framework.

Really there is very little "framework" with less than 100 LOC, but since there is a smidge of lock-in if you use it, we shall call it a framework.

`laura` runs every test in a new process to help guarantee there is no interaction between tests. Processes are not re-used once a test has completed.

To define a test:

```javascript
const assert = require('assert');

test('thing() returns "foo"', () => {
  assert(thing(), 'foo');
});
```

To run tests:

```bash
$ yarn laura **.test.js
Passed examples/bar.test.js :: one in 0ms
Passed examples/bar.test.js :: two in 0ms
Passed examples/bar.test.js :: three in 0ms
Passed examples/foo.test.js :: one in 0ms
Passed examples/foo.test.js :: three in 0ms
Failed examples/foo.test.js :: two in 13ms
AssertionError [ERR_ASSERTION]: The expression evaluated to a falsy value:

  assert(false)

    at /Users/lawrence/projects/laura/examples/foo.test.js:8:5
    at test (/Users/lawrence/projects/laura/worker.js:8:19)
    at Object.<anonymous> (/Users/lawrence/projects/laura/examples/foo.test.js:7:1)
    at Module._compile (internal/modules/cjs/loader.js:936:30)
    at Object.Module._extensions..js (internal/modules/cjs/loader.js:947:10)
    at Module.load (internal/modules/cjs/loader.js:790:32)
    at Function.Module._load (internal/modules/cjs/loader.js:703:12)
    at Module.require (internal/modules/cjs/loader.js:830:19)
    at require (internal/modules/cjs/helpers.js:68:18)
    at Object.<anonymous> (/Users/lawrence/projects/laura/worker.js:21:1) {
  generatedMessage: true,
  code: 'ERR_ASSERTION',
  actual: false,
  expected: true,
  operator: '=='
}
5 / 6 tests passed in 69ms

$ # laura returns an exit code 0 on success and 1 on failure
```
npm package: @persea/persea
Author: Lawrence Wakefield
Latest version: 0.1.16

<p align="center">
    <img width="532" alt="persea logo" src="https://user-images.githubusercontent.com/60553092/73610503-05a7eb80-45a6-11ea-8201-c45ab7c608c5.png">
</p>

An intentionally simple and quick http server.

---

Out of the box, you get:
- Automatic route discovery
- Hot-reloading
- Self-healing clustering

Getting started
===============

Getting started is as simple as:

```
$ mkdir my-project
$ yarn init
$ yarn add persea
$ PORT=8080 yarn persea dev

Master 70423 is running
Worker 70424 started
Worker 70425 started
Worker 70426 started
Worker 70427 started
Worker 70428 started
Worker 70429 started
Worker 70430 started
Worker 70431 started
```

A route file looks like this:

```javascript
// routes/v1/books.js

// GET /v1/books
module.exports.index = async function index () {
  response.send({ json: await getAllBooks() });
}
// POST /v1/books
module.exports.create = async function create () {
  response.send({ status: 201, json: await createBook(request.json) });
}
// GET /v1/books/$id
module.exports.show = async function show (id) {
  response.send({ json: await getBook(id) });
}
// PUT|PATCH /v1/books/$id
module.exports.update = async function update (id) {
  response.send({ json: await updateBook(id, request.json) });
}
// DELETE /v1/books/$id
module.exports.destroy = async function destroy (id) {
  await deleteBook(id);
  response.send({ status: 204 });
}
```

If you save the above file to `routes/v1/urls.js`, `persea` will detect the new file and restart the server:

```
Detected change: routes/v1/urls1.js
Reloading workers
Worker 32179 died
Worker 32180 died
Worker 32181 died
Worker 32182 died
Worker 32183 died
Worker 32184 died
Worker 32186 died
Worker 32187 died
Worker 32185 died
Worker 32188 died
Worker 32189 died
Worker 32190 died
Worker 32422 started
Worker 32425 started
Worker 32424 started
Worker 32427 started
Worker 32423 started
Worker 32426 started
Worker 32430 started
Worker 32431 started
Worker 32429 started
Worker 32434 started
Worker 32435 started
Worker 32436 started
```

Requirements
============

Persea depends on experimental feature of node - [async_hooks](https://nodejs.org/api/async_hooks.html). If you are unable to use experimental features for your project, persea is not for you.

Opinions Held
=============

Persea is opinionated in philosophy.

When building a web-application. Everything happens within the context of an http request, `persea` intentionally exposes the `request` and `response` objects globally, using some `async_hooks` magic to bind those objects to the current http request context. This abstracts away some magic, but makes for a pretty api.

`persea` intentionally does not support arbitrary route-definitions eg. `/v1/foo/:fooId/bar/:barId/baz`. This is intended to keep the api endpoints flat, and simple.

`persea` intentionally does not support nesting/chaining of middleware. `persea` supports a single global `before`, `after` and `error` middleware. Anything additional should be handled inside of the route files.
npm package: @perseid/client
Description: Dynamic, data model based UIs generator
Latest version: 2.1.4

# `@perseid/client`

Dynamic, model-based UIs generator.

[![Coverage Status](https://coveralls.io/repos/github/openizr/perseid/badge.svg?branch=main)](https://coveralls.io/github/openizr/perseid?branch=main)
[![License](https://img.shields.io/badge/License-MIT-green.svg)](https://github.com/openizr/perseid/blob/main/packages/client/LICENSE)
[![NPM](https://img.shields.io/npm/v/@perseid/client.svg)](https://www.npmjs.com/package/@perseid/client)
[![Node version](https://img.shields.io/node/v/@perseid/client.svg)](https://nodejs.org)
[![Downloads](https://img.shields.io/npm/dm/@perseid/client.svg?style=flat-square)](https://www.npmjs.com/package/@perseid/client)
[![Minzipped size](https://badgen.net/bundlephobia/minzip/@perseid/client)](https://bundlephobia.com/package/@perseid/client)
[![Discord badge](https://img.shields.io/discord/1279051839047729212?label=Discord&logo=Discord)](https://discord.gg/jsWCRMqM2K)


## Install

```bash
yarn add @perseid/client
```


## Documentation

Visit our [official documentation](https://perseid.dev).


## Support

Having trouble? Get help in the official [Perseid Discord](https://discord.gg/jsWCRMqM2K).


## Contributing

**New contributors welcome!** Check out our [Contributors](../../CONTRIBUTING.md) Guide for help getting started.

Join us on [Discord](https://discord.gg/jsWCRMqM2K) to meet other maintainers. We'll help you get your first contribution in no time!


## Sponsor

Love this project and want to support it?


[❤️ Sponsor Perseid](https://github.com/sponsors/openizr), or 🌟 star the project on GitHub


## License

[MIT](http://opensource.org/licenses/MIT)

Copyright (c) Openizr. All Rights Reserved.
npm package: @perseid/core
Description: Contains isomorphic core features, types definitions and helpers necessary to other perseid packages
Latest version: 2.0.2

# `@perseid/core`

Contains isomorphic core features, types definitions and helpers necessary to other `@perseid` packages.

[![Coverage Status](https://coveralls.io/repos/github/openizr/perseid/badge.svg?branch=main)](https://coveralls.io/github/openizr/perseid?branch=main)
[![License](https://img.shields.io/badge/License-MIT-green.svg)](https://github.com/openizr/perseid/blob/main/packages/core/LICENSE)
[![NPM](https://img.shields.io/npm/v/@perseid/core.svg)](https://www.npmjs.com/package/@perseid/core)
[![Node version](https://img.shields.io/node/v/@perseid/core.svg)](https://nodejs.org)
[![Downloads](https://img.shields.io/npm/dm/@perseid/core.svg?style=flat-square)](https://www.npmjs.com/package/@perseid/core)
[![Minzipped size](https://badgen.net/bundlephobia/minzip/@perseid/core)](https://bundlephobia.com/package/@perseid/core)
[![Discord badge](https://img.shields.io/discord/1279051839047729212?label=Discord&logo=Discord)](https://discord.gg/jsWCRMqM2K)


## Install

```bash
yarn add @perseid/core
```


## Documentation

Visit our [official documentation](https://perseid.dev).


## Support

Having trouble? Get help in the official [Perseid Discord](https://discord.gg/jsWCRMqM2K).


## Contributing

**New contributors welcome!** Check out our [Contributors](../../CONTRIBUTING.md) Guide for help getting started.

Join us on [Discord](https://discord.gg/jsWCRMqM2K) to meet other maintainers. We'll help you get your first contribution in no time!


## Sponsor

Love this project and want to support it?


[❤️ Sponsor Perseid](https://github.com/sponsors/openizr), or 🌟 star the project on GitHub


## License

[MIT](http://opensource.org/licenses/MIT)

Copyright (c) Openizr. All Rights Reserved.
npm package: @perseid/dev-kit
Description: Everything you need to develop JavaScript/TypeScript projects with maximum productivity.
Latest version: 10.0.0

# `@perseid/dev-kit`

Everything you need to develop front-end and back-end JavaScript/TypeScript projects with maximum productivity.

[![npm](https://img.shields.io/npm/v/@perseid/dev-kit.svg)](https://www.npmjs.com/package/@perseid/dev-kit)
[![node](https://img.shields.io/node/v/@perseid/dev-kit.svg)](https://nodejs.org)
[![downloads](https://img.shields.io/npm/dm/@perseid/dev-kit.svg?style=flat-square)](https://www.npmjs.com/package/@perseid/dev-kit)


## Installation

```bash
yarn add --dev @perseid/dev-kit
```


### Documentation

See https://perseid.dev/.


## License

[MIT](http://opensource.org/licenses/MIT)

Copyright (c) Openizr. All Rights Reserved.
npm package: @perseid/form
Description: Build complex, dynamic forms or inputs-based UIs in seconds
Latest version: 4.0.3

# `@perseid/form`

Build complex, dynamic forms or inputs-based UIs in seconds.

[![Coverage Status](https://coveralls.io/repos/github/openizr/perseid/badge.svg?branch=main)](https://coveralls.io/github/openizr/perseid?branch=main)
[![License](https://img.shields.io/badge/License-MIT-green.svg)](https://github.com/openizr/perseid/blob/main/packages/form/LICENSE)
[![NPM](https://img.shields.io/npm/v/@perseid/form.svg)](https://www.npmjs.com/package/@perseid/form)
[![Node version](https://img.shields.io/node/v/@perseid/form.svg)](https://nodejs.org)
[![Downloads](https://img.shields.io/npm/dm/@perseid/form.svg?style=flat-square)](https://www.npmjs.com/package/@perseid/form)
[![Minzipped size](https://badgen.net/bundlephobia/minzip/@perseid/form)](https://bundlephobia.com/package/@perseid/form)
[![Discord badge](https://img.shields.io/discord/1279051839047729212?label=Discord&logo=Discord)](https://discord.gg/jsWCRMqM2K)


## Install

```bash
yarn add @perseid/form
```


## Documentation

Visit our [official documentation](https://perseid.dev).


## Support

Having trouble? Get help in the official [Perseid Discord](https://discord.gg/jsWCRMqM2K).


## Contributing

**New contributors welcome!** Check out our [Contributors](../../CONTRIBUTING.md) Guide for help getting started.

Join us on [Discord](https://discord.gg/jsWCRMqM2K) to meet other maintainers. We'll help you get your first contribution in no time!


## Sponsor

Love this project and want to support it?


[❤️ Sponsor Perseid](https://github.com/sponsors/openizr), or 🌟 star the project on GitHub


## License

[MIT](http://opensource.org/licenses/MIT)

Copyright (c) Openizr. All Rights Reserved.
npm package: @perseid/jobs
Description: Fast, scalable job scheduler
Latest version: 2.0.0

# `@perseid/jobs`

Fast, scalable job scheduler.

[![npm](https://img.shields.io/npm/v/@perseid/jobs.svg)](https://www.npmjs.com/package/@perseid/jobs)
[![node](https://img.shields.io/node/v/@perseid/jobs.svg)](https://nodejs.org)
[![downloads](https://img.shields.io/npm/dm/@perseid/jobs.svg?style=flat-square)](https://www.npmjs.com/package/@perseid/jobs)


## Installation

```bash
yarn add @perseid/jobs
```


### Documentation

See https://perseid.dev/.


## License

[MIT](http://opensource.org/licenses/MIT)

Copyright (c) Openizr. All Rights Reserved.
npm package: @perseid/server
Description: Dynamic, data model-based REST APIs generator
Latest version: 2.0.6

# `@perseid/server`

Dynamic, model-based REST APIs generator.

[![Coverage Status](https://coveralls.io/repos/github/openizr/perseid/badge.svg?branch=main)](https://coveralls.io/github/openizr/perseid?branch=main)
[![License](https://img.shields.io/badge/License-MIT-green.svg)](https://github.com/openizr/perseid/blob/main/packages/server/LICENSE)
[![NPM](https://img.shields.io/npm/v/@perseid/server.svg)](https://www.npmjs.com/package/@perseid/server)
[![Node version](https://img.shields.io/node/v/@perseid/server.svg)](https://nodejs.org)
[![Downloads](https://img.shields.io/npm/dm/@perseid/server.svg?style=flat-square)](https://www.npmjs.com/package/@perseid/server)
[![Minzipped size](https://badgen.net/bundlephobia/minzip/@perseid/server)](https://bundlephobia.com/package/@perseid/server)
[![Discord badge](https://img.shields.io/discord/1279051839047729212?label=Discord&logo=Discord)](https://discord.gg/jsWCRMqM2K)


## Install

```bash
yarn add @perseid/server
```


## Documentation

Visit our [official documentation](https://perseid.dev).


## Support

Having trouble? Get help in the official [Perseid Discord](https://discord.gg/jsWCRMqM2K).


## Contributing

**New contributors welcome!** Check out our [Contributors](../../CONTRIBUTING.md) Guide for help getting started.

Join us on [Discord](https://discord.gg/jsWCRMqM2K) to meet other maintainers. We'll help you get your first contribution in no time!


## Sponsor

Love this project and want to support it?


[❤️ Sponsor Perseid](https://github.com/sponsors/openizr), or 🌟 star the project on GitHub


## License

[MIT](http://opensource.org/licenses/MIT)

Copyright (c) Openizr. All Rights Reserved.
npm package: @perseid/store
Description: Complete state management for both front and back ends
Latest version: 8.0.1

# `@perseid/store`

Complete state management for both front and back ends.

[![npm](https://img.shields.io/npm/v/@perseid/store.svg)](https://www.npmjs.com/package/@perseid/store)
[![node](https://img.shields.io/node/v/@perseid/store.svg)](https://nodejs.org)
[![downloads](https://img.shields.io/npm/dm/@perseid/store.svg?style=flat-square)](https://www.npmjs.com/package/@perseid/store)


## Installation

```bash
yarn add @perseid/store
```


### Documentation

See https://perseid.dev/.


## License

[MIT](http://opensource.org/licenses/MIT)

Copyright (c) Openizr. All Rights Reserved.
npm package: @perseid/ui
Description: TypeScript components and SASS library, without the superfluous
Latest version: 4.1.0

# `@perseid/ui`

SASS and TypeScript components library, without the superfluous.

[![Coverage Status](https://coveralls.io/repos/github/openizr/perseid/badge.svg?branch=main)](https://coveralls.io/github/openizr/perseid?branch=main)
[![License](https://img.shields.io/badge/License-MIT-green.svg)](https://github.com/openizr/perseid/blob/main/packages/ui/LICENSE)
[![NPM](https://img.shields.io/npm/v/@perseid/ui.svg)](https://www.npmjs.com/package/@perseid/ui)
[![Node version](https://img.shields.io/node/v/@perseid/ui.svg)](https://nodejs.org)
[![Downloads](https://img.shields.io/npm/dm/@perseid/ui.svg?style=flat-square)](https://www.npmjs.com/package/@perseid/ui)
[![Minzipped size](https://badgen.net/bundlephobia/minzip/@perseid/ui)](https://bundlephobia.com/package/@perseid/ui)
[![Discord badge](https://img.shields.io/discord/1279051839047729212?label=Discord&logo=Discord)](https://discord.gg/jsWCRMqM2K)


## Install

```bash
yarn add @perseid/ui
```


## Documentation

Visit our [official documentation](https://perseid.dev).


## Support

Having trouble? Get help in the official [Perseid Discord](https://discord.gg/jsWCRMqM2K).


## Contributing

**New contributors welcome!** Check out our [Contributors](../../CONTRIBUTING.md) Guide for help getting started.

Join us on [Discord](https://discord.gg/jsWCRMqM2K) to meet other maintainers. We'll help you get your first contribution in no time!


## Sponsor

Love this project and want to support it?


[❤️ Sponsor Perseid](https://github.com/sponsors/openizr), or 🌟 star the project on GitHub


## License

[MIT](http://opensource.org/licenses/MIT)

Copyright (c) Openizr. All Rights Reserved.
npm package: @perseidesjs/auth-otp
Description: An OTP Auth Provider for Medusa 2.x
Author: adevinwild
Latest version: 3.2.0

<p align="center">
  <a href="https://www.github.com/perseidesjs">
  <picture>
    <source media="(prefers-color-scheme: dark)" srcset="./.github/assets/dark_mode.png" width="128" height="128">
    <source media="(prefers-color-scheme: light)" srcset="./.github/assets/light_mode.png" width="128" height="128">
    <img alt="Perseides logo" src="./.github/assets/light_mode.png">
    </picture>
  </a>
</p>
<h1 align="center">
  @perseidesjs/auth-otp
</h1>

<p align="center">
  <a href="https://www.npmjs.com/package/@perseidesjs/auth-otp"><img src="https://img.shields.io/npm/v/@perseidesjs/auth-otp.svg" alt="npm version"></a>
  <a href="https://www.npmjs.com/package/@perseidesjs/auth-otp"><img src="https://img.shields.io/npm/dm/@perseidesjs/auth-otp.svg" alt="npm downloads"></a>
  <a href="https://github.com/perseidesjs/auth-otp/blob/develop/LICENSE.md"><img src="https://img.shields.io/npm/l/@perseidesjs/auth-otp.svg" alt="license"></a>
  <img src="https://img.shields.io/badge/node-%3E%3D20-brightgreen" alt="node version">
  <img src="https://img.shields.io/badge/TypeScript-5.x-blue" alt="typescript">
</p>

<h4 align="center">
  <a href="https://perseides.org">Website</a> |
  <a href="https://docs.perseides.org/plugins/auth-otp/getting-started">Documentation</a> |
  <a href="https://www.medusajs.com">Medusa</a>
</h4>

<p align="center">
  Implement seamlessly OTP-based authentication for Medusa 2.x
</p>

<p align="center">
  <img src="./.github/assets/preview.gif" alt="Preview of @perseidesjs/auth-otp in action">
</p>

## Installation

```bash
npm install @perseidesjs/auth-otp
# or
yarn add @perseidesjs/auth-otp
# or
pnpm add @perseidesjs/auth-otp
```

## Documentation

Access the full documentation at [https://docs.perseides.org/docs/plugins/auth-otp/getting-started](https://docs.perseides.org/docs/plugins/auth-otp/getting-started)

## License

MIT
npm package: @perseidesjs/medusa-plugin-rate-limit
Description: A simple rate-limit middleware for Medusa
Author: adevinwild
Latest version: 3.2.1

<p align="center">
  <a href="https://www.github.com/perseidesjs">
  <picture>
    <source media="(prefers-color-scheme: dark)" srcset="./.github/assets/dark_mode.png" width="128" height="128">
    <source media="(prefers-color-scheme: light)" srcset="./.github/assets/light_mode.png" width="128" height="128">
    <img alt="Perseides logo" src="./.github/assets/light_mode.png">
    </picture>
  </a>
</p>
<h1 align="center">
  @perseidesjs/medusa-plugin-rate-limit
</h1>

<p align="center">
  <a href="https://www.npmjs.com/package/@perseidesjs/medusa-plugin-rate-limit"><img src="https://img.shields.io/npm/v/@perseidesjs/medusa-plugin-rate-limit.svg" alt="npm version"></a>
  <a href="https://www.npmjs.com/package/@perseidesjs/medusa-plugin-rate-limit"><img src="https://img.shields.io/npm/dm/@perseidesjs/medusa-plugin-rate-limit.svg" alt="npm downloads"></a>
  <a href="https://github.com/perseidesjs/medusa-plugin-rate-limit/blob/develop/LICENSE.md"><img src="https://img.shields.io/npm/l/@perseidesjs/medusa-plugin-rate-limit.svg" alt="license"></a>
  <img src="https://img.shields.io/badge/node-%3E%3D20-brightgreen" alt="node version">
  <img src="https://img.shields.io/badge/TypeScript-5.x-blue" alt="typescript">
</p>

<h4 align="center">
  <a href="https://perseides.org">Website</a> |
  <a href="https://docs.perseides.org/plugins/rate-limit/getting-started">Documentation</a> |
  <a href="https://www.medusajs.com">Medusa</a>
</h4>

<p align="center">
  Implement application-wide rate limiting middleware for your Medusa store.
</p>

## Installation

```bash
npm install @perseidesjs/medusa-plugin-rate-limit
# or
yarn add @perseidesjs/medusa-plugin-rate-limit
# or
pnpm add @perseidesjs/medusa-plugin-rate-limit
```

## Documentation

Access the full documentation at [docs.perseides.org/plugins/rate-limit](https://docs.perseides.org/plugins/rate-limit/getting-started)

## License

MIT
npm package: @perseidesjs/notification-nodemailer
Description: A Medusa plugin for sending notifications via Nodemailer (SMTP)
Author: adevinwild
Latest version: 3.1.1

<p align="center">
  <a href="https://www.github.com/perseidesjs">
  <picture>
    <source media="(prefers-color-scheme: dark)" srcset="./.github/assets/dark_mode.png" width="128" height="128">
    <source media="(prefers-color-scheme: light)" srcset="./.github/assets/light_mode.png" width="128" height="128">
    <img alt="Perseides logo" src="./.github/assets/light_mode.png">
    </picture>
  </a>
</p>
<h1 align="center">
  @perseidesjs/notification-nodemailer
</h1>

<p align="center">
  <a href="https://www.npmjs.com/package/@perseidesjs/notification-nodemailer"><img src="https://img.shields.io/npm/v/@perseidesjs/notification-nodemailer.svg" alt="npm version"></a>
  <a href="https://www.npmjs.com/package/@perseidesjs/notification-nodemailer"><img src="https://img.shields.io/npm/dm/@perseidesjs/notification-nodemailer.svg" alt="npm downloads"></a>
  <a href="https://github.com/perseidesjs/notification-nodemailer/blob/develop/LICENSE.md"><img src="https://img.shields.io/npm/l/@perseidesjs/notification-nodemailer.svg" alt="license"></a>
  <img src="https://img.shields.io/badge/node-%3E%3D20-brightgreen" alt="node version">
  <img src="https://img.shields.io/badge/TypeScript-5.x-blue" alt="typescript">
</p>

<h4 align="center">
  <a href="https://perseides.org">Website</a> |
  <a href="https://docs.perseides.org/plugins/notification-nodemailer/getting-started">Documentation</a> |
  <a href="https://www.medusajs.com">Medusa</a>
</h4>

<p align="center">
  A Medusa plugin for sending notifications via Nodemailer (SMTP)
</p>

## Installation

```bash
npm install @perseidesjs/notification-nodemailer
# or
yarn add @perseidesjs/notification-nodemailer
# or
pnpm add @perseidesjs/notification-nodemailer
```

## Documentation

Access the full documentation at [docs.perseides.org/plugins/notification-nodemailer](https://docs.perseides.org/plugins/notification-nodemailer/getting-started)

## License

MIT
npm package: @persephony/sdk
Description: The SDK for the Persephony API
Latest version: 1.1.1

## Introduction
The Persephony Javascript SDK will allow you to easily use the Persephony API in a Javascript application.

[![Build Status](https://travis-ci.com/PersephonyAPI/javascript-sdk.svg?branch=master)](https://travis-ci.com/PersephonyAPI/javascript-sdk) 
[![npm version](https://badge.fury.io/js/%40persephony%2Fsdk.svg)](https://badge.fury.io/js/%40persephony%2Fsdk)
[![Maintainability](https://api.codeclimate.com/v1/badges/ce6d2d1f879c3139c1ed/maintainability)](https://codeclimate.com/github/PersephonyAPI/javascript-sdk/maintainability)
[![Test Coverage](https://api.codeclimate.com/v1/badges/ce6d2d1f879c3139c1ed/test_coverage)](https://codeclimate.com/github/PersephonyAPI/javascript-sdk/test_coverage)
[![Documentation Status](https://readthedocs.org/projects/persephony-js-sdk/badge/?version=latest)](https://persephony-js-sdk.readthedocs.io/en/latest/?badge=latest)


## Installation

`npm install @persephony/sdk --save`

`yarn add @persephony/sdk`

## Testing your Installation
Test the SDK is working by sending yourself a text message.

```javascript
var persephonySDK = require('@persephony/sdk')
var accountID = 'your_account_id'
var authToken = 'your_auth_token'
var persy = persephonySDK(accountID, authToken)
var to = 'your_phone_number'
var from = 'a_persephony_phone_number_in_your_account'

persy.api.messages.create(from, to, 'Welcome to Persephony!')
```

When you run this code you should get a text message. This indicates that you've successfully setup your SDK.

## Documentation
The [Persephony documentation ](https://www.persephony.com/docs) has guides on [getting started](https://www.persephony.com/docs/getting-started) with Persephony, as well as the [API reference](https://www.persephony.com/docs/api), [PerCL reference](https://www.persephony.com/docs/percl), and several useful [tutorials.](https://www.persephony.com/docs/tutorials)

The SDK documentation is not generated from source code comments, as at the time of writing no existing tool could be found that parsed the comments adequately. Instead the documentation is manually curated in the files at `docs/source`  in the .rst (ReStructuredText) format. Developers should ensure that changes to the SDK are reflected in the documentation.

It is built using the Python package Sphinx and a few other libraries. To install the dependencies in a python virtual environment, run setup.sh.

To generate the documentation, activate the virtual environment and run `make html`. For livereload, run `make watch`


## Getting Help
If you are experiencing difficulties, contact our support team at [support@persephony.com](mailto:support@persephony.com)
npm package: @persequor/psqr-rete-context-menu-plugin
Description: Fork of rete context menu plugin
Author: PSQR
Latest version: 0.6.7

Rete context menu plugin (for Vue.js v2)
====
#### Rete.js plugin
#### Check out [vue3 branch](https://github.com/retejs/context-menu-plugin/tree/vue3) if you need version for Vue.js v3


```js
import ContextMenuPlugin, { Menu, Item, Search } from 'rete-context-menu-plugin';

editor.use(ContextMenuPlugin, {
    searchBar: false, // true by default
    delay: 100,
    allocate(component) {
        return ['Submenu'];
    },
    rename(component) {
        return component.name;
    },
    items: {
        'Click me'(){ console.log('Works!') }
    },
    nodeItems: {
        'Click me'(){ console.log('Works for node!') },
        'Delete': false, // don't show Delete item
        'Clone': false // or Clone item
    },
    // OR
    nodeItems: node => {
        if (node.name === 'Add') {
            return {
                'Only for Add nodes'() => { console.log('Works for add node!') },
            };
        }
        return {
            'Click me'(){ console.log('Works for node!') }
        }
    },
    vueComponent: CustomVueComponent // extends Menu
});
```
| Options | Description | Default |
|-|-|-|
| `searchBar` | Showing search bar | `true`
| `delay` | Delay hide, ms | `1000`
| `allocate` | function for placing of components into submenu | `() => []`
| `rename` | function for renaming of items| `component => component.name`
| `items` | custom items (`Object` with nested objects and functions) | `{}`
| `nodeItems` | custom items for Node menu or a function that returns node items | `{}`


You can arbitrarily put a component in a submenu. Examples:

```js
allocate() { return ["Single submenu"] }
```

```js
allocate(component) { return component.path } // where path is a stack of menu for every component
```


```js
allocate(component) { return null } // exclude component from menu items
```

To change the items that create nodes, you may need to change the name.

```js
class MyComponent {
    constructor() {
        super("My comp");
        this.contextMenuName = "Add My comp";
    }
}
///
rename(component) { return component.contextMenuName || component.name }
```

Prevent showing context menu

```js
editor.on('showcontextmenu', ({ e, node }) => { // e - MouseEvent, node - Node instance or null
    return Boolean(node); // show context menu for nodes only
});
```
Prevent context menu for particular Node

```js
class AddComponent extends Rete.Component {
    constructor(){
        // ...
        this.data.noContextMenu = true;
    }
// ...

editor.on('showcontextmenu', ({ node }) => {
    return !node || !editor.components.get(node.name).data.noContextMenu;
});
```