open-index/open-npm huggingface dataset:
npm package: @lyhna/bind
Description: Safe Commit for Autonomous Systems
Latest version: 0.2.0

# @lyhna/bind

# 

# bind() is a commit gate for autonomous systems.

# If a license/receipt exists, execution proceeds. If it doesn’t, execution cannot occur.

# 

# Lyhna turns “an agent wants to do something irreversible” into a signed, offline-verifiable receipt.

# 

# Install

# 

# npm i @lyhna/bind

# 

# (For deterministic demos, you can also install from a local tarball you packed:)

# 

# npm i ./lyhna-bind-0.1.0.tgz

# 

# API

# 

# This package exports two functions:

# 

# bind(request) → returns a signed receipt (LYHNA\_RECEIPT\_V1)

# 

# verifyReceipt(receipt) → returns true/false (offline verification)

# 

# Request shape (required fields)

# 

# {

# action\_type: string,

# payload\_hash: string,

# authority\_tier: "TIER\_1" | "TIER\_2" | "TIER\_3" | "SOVEREIGN",

# intent: string

# }

# 

# Example: generate receipts + prove offline verification

# 

# Create demo.mjs with the following contents:

# 

# import fs from "node:fs";

# import { bind } from "@lyhna/bind";

# 

# function write(name, obj) {

# fs.writeFileSync(name, JSON.stringify(obj, null, 2), "utf8");

# console.log(WROTE ${name} outcome=${obj.outcome});

# }

# 

# async function main() {

# const base = {

# action\_type: "vendor\_payment",

# payload\_hash: "sha256:demo\_payload\_hash\_001",

# intent: "invoice\_payment\_v1",

# };

# 

# // APPROVED (TIER\_3)

# const approved = await bind({ ...base, authority\_tier: "TIER\_3" });

# write("receipt-approved.json", approved);

# 

# // ESCALATED (TIER\_1)

# const escalated = await bind({ ...base, authority\_tier: "TIER\_1" });

# write("receipt-escalated.json", escalated);

# 

# // TAMPERED COPY (modify one field after signing)

# const tampered = { ...approved, payload\_hash: "sha256:TAMPERED\_payload\_hash\_999" };

# fs.writeFileSync("receipt-tampered.json", JSON.stringify(tampered, null, 2), "utf8");

# console.log("WROTE receipt-tampered.json (tampered payload\_hash)");

# }

# 

# main().catch((e) => {

# console.error(e);

# process.exit(1);

# });

# 

# Create verify.mjs with the following contents:

# 

# import fs from "node:fs";

# import { verifyReceipt } from "@lyhna/bind";

# 

# const file = process.argv\[2];

# if (!file) {

# console.error("Usage: node verify.mjs <receipt.json>");

# process.exit(1);

# }

# 

# const receipt = JSON.parse(fs.readFileSync(file, "utf8"));

# const valid = await verifyReceipt(receipt);

# 

# console.log(JSON.stringify({ file, valid }, null, 2));

# 

# Run:

# 

# node demo.mjs

# node verify.mjs receipt-approved.json

# node verify.mjs receipt-escalated.json

# node verify.mjs receipt-tampered.json

# 

# Expected:

# 

# receipt-approved.json → valid: true

# 

# receipt-escalated.json → valid: true

# 

# receipt-tampered.json → valid: false

# 

# CLI (if enabled)

# 

# If your install exposes the lyhna binary:

# 

# lyhna verify receipt-approved.json

# 

# (If the CLI isn’t wired yet, the verify.mjs script above is the canonical offline verifier.)
npm package: @lyhue1991/bdsearch
Description: 通过百度 AI Search API 进行网页搜索的命令行工具
Latest version: 0.1.2

# bdsearch

这是一个提供百度搜索能力的 SKILL，基于 NodeJS

1，安装此SKILL

```
npx skills add lyhue1991/bdsearch
```

2，获取 百度AI搜索的apikey

https://console.bce.baidu.com/qianfan/ais/console/apiKey 

注：目前每天1000次免费搜索额度
npm package: @lyhue1991/email-cli
Description: NPX 命令行邮件工具，支持 IMAP 收取和 SMTP 发送邮件
Latest version: 0.1.0

# email-cli

NPX 命令行邮件工具，支持 IMAP 收取和 SMTP 发送邮件。

## 特性

- 支持多账户配置和管理
- IMAP 收取邮件（支持筛选未读、发件人、主题、日期）
- SMTP 发送邮件（支持附件、HTML、抄送/密送）
- 列出邮件文件夹
- 支持多种输出格式（表格、JSON、Markdown）
- 收取邮件时可选择是否获取正文（不获取正文时保持未读状态）

## 安装

```bash
# 使用 npx 直接运行
npx @lyhue1991/email-cli --help

# 或全局安装
npm install -g @lyhue1991/email-cli
email --help
```

GitHub 仓库：`lyhue1991/email-cli`

## 快速开始

### 1. 配置账户

```bash
# 交互式配置
email config

# 或命令行配置
email config --name work \
  --user me@company.com \
  --password "app-password" \
  --save-dir "~/Library/Application Support/email-cli/emails/work" \
  --imap-host imap.company.com \
  --smtp-host smtp.company.com
```

配置完成后，账户会带有默认保存目录；收取邮件时如果不传 `--save`，会自动使用该目录。

### 2. 发送邮件

```bash
# 简单发送
email send --to recipient@example.com --subject "Hello" --body "Hi there!"

# 带附件
email send --to recipient@example.com \
  --subject "Report" \
  --body "Please find attached." \
  --attach ./report.pdf

# 管道方式
echo "Email body" | email send --to recipient@example.com --subject "Hello" --stdin
```

### 3. 收取邮件

```bash
# 列出最近 10 封邮件（只显示信封信息，不标记已读）
email receive

# 查看未读邮件
email receive --unseen --max 20

# 获取邮件正文并标记已读
email receive --body

# 以 Markdown 格式输出正文（自动获取正文并标记已读）
email receive --format markdown

# 下载附件（自动获取正文并标记已读）
email receive --attachments ./downloads

# 按条件筛选
email receive --from boss@company.com --since 2024-01-01

# JSON 输出
email receive --format json

# 或使用全局 JSON 开关
email --json receive --max 5
```

### 4. 列出文件夹

```bash
email folders
```

### 5. 管理账户

```bash
# 列出所有账户
email list
email config --list

# 显示账户配置
email config --show work

# 删除账户
email config --remove work

# 设置默认账户
email config --default work
```

## 命令帮助

```bash
email --help
email [command] --help
```

## 常见服务商配置

### Gmail
- IMAP: imap.gmail.com:993 (TLS)
- SMTP: smtp.gmail.com:587 (STARTTLS)
- 需要使用应用专用密码

### Outlook
- IMAP: outlook.office365.com:993 (TLS)
- SMTP: smtp.office365.com:587 (STARTTLS)

### QQ 邮箱
- IMAP: imap.qq.com:993 (TLS)
- SMTP: smtp.qq.com:587 (STARTTLS)
- 需要使用授权码

### 163 邮箱
- IMAP: imap.163.com:993 (TLS)
- SMTP: smtp.163.com:465 (SSL)
- 需要使用授权码

### 126 邮箱
- IMAP: imap.126.com:993 (TLS)
- SMTP: smtp.126.com:465 (SSL)
- 需要使用授权码

### 139 邮箱
- IMAP: imap.139.com:993 (TLS)
- SMTP: smtp.139.com:465 (SSL)

## 配置存储

配置文件位于 `~/.config/email-cli/email-cli.json`，密码当前以明文存储，文件写入权限为 `600`。

每个账户都会保存一个 `saveDir` 字段，默认值按平台生成：

- macOS: `~/Library/Application Support/email-cli/emails/<account>`
- Linux: `${XDG_DATA_HOME:-~/.local/share}/email-cli/emails/<account>`
- Windows: `%LOCALAPPDATA%/email-cli/emails/<account>`

默认优先使用 `defaultAccount`，如果没有设置默认账户，则回退到第一个已配置账户。

## 测试

```bash
npm test
```

## License

MIT
npm package: @lyhue1991/webfetch
Description: Fetch and convert web content to markdown, text, or html from the command line
Latest version: 0.1.0

# webfetch

网页内容抓取工具，支持将网页转换为 Markdown、文本或 HTML 格式。可作为 CLI 工具或 OpenCode SKILL 使用。

## 安装

### 方式一：作为 SKILL 安装（推荐）

```bash
npx skills add lyhue1991/webfetch
```

### 方式二：作为 CLI 工具安装

```bash
# 使用 npx 直接运行
npx @lyhue1991/webfetch https://example.com

# 或全局安装
npm install -g @lyhue1991/webfetch
webfetch https://example.com
```

## 使用方法

```bash
webfetch <url> [options]
```

### 参数说明

| 参数 | 简写 | 说明 | 默认值 |
|------|------|------|--------|
| `--format` | `-f` | 输出格式：markdown, text, html | markdown |
| `--timeout` | `-t` | 超时时间（秒），最大 120 | 30 |
| `--output` | `-o` | 保存到指定文件 | - |
| `--quiet` | `-q` | 静默模式，仅输出内容 | false |
| `--proxy` | | 代理服务器地址 | - |
| `--insecure` | | 跳过 TLS 证书验证 | false |
| `--help` | `-h` | 显示帮助 | - |
| `--version` | `-v` | 显示版本 | - |

### 示例

```bash
# 抓取并转换为 Markdown（默认）
webfetch https://example.com

# 输出纯文本
webfetch https://example.com -f text

# 保存到文件
webfetch https://example.com -o output.md

# 静默模式（适合管道）
webfetch https://example.com -q > content.md

# 自定义超时
webfetch https://example.com --timeout 60

# 使用代理
webfetch https://example.com --proxy http://proxy:8080

# 跳过证书验证（自签名证书场景）
webfetch https://example.com --insecure

# 抓取文章并保存
webfetch "https://example.com/article" -o article.md
```

## 代理支持

webfetch 自动读取环境变量代理配置：

- `HTTP_PROXY` / `http_proxy` - HTTP 请求代理
- `HTTPS_PROXY` / `https_proxy` - HTTPS 请求代理
- `NO_PROXY` / `no_proxy` - 跳过代理的主机列表

```bash
# 通过环境变量设置代理
export HTTPS_PROXY=http://proxy.example.com:8080
webfetch https://example.com

# 命令行覆盖代理
webfetch https://example.com --proxy http://custom-proxy:8080

# 禁用本次请求的代理
webfetch https://example.com --proxy ""

# 处理代理证书问题
webfetch https://example.com --insecure
```

## 功能特性

- **多格式输出** - 转换 HTML 为 Markdown（默认）、纯文本或保留原始 HTML
- **智能内容处理** - 自动检测 Content-Type，正确处理非 HTML 响应
- **反爬虫策略** - Chrome UA 伪装，Cloudflare 挑战自动重试
- **安全限制** - 最大 5MB 响应限制，可配置超时
- **清洁输出** - 移除 script、style 等非内容元素
- **代理支持** - 自动环境变量检测，支持手动覆盖

## 退出码

| 代码 | 说明 |
|------|------|
| 0 | 成功 |
| 1 | 用户错误（无效 URL、参数错误） |
| 2 | 网络错误（超时、DNS 解析失败） |
| 3 | 服务器错误（4xx、5xx 响应） |

## 系统要求

- Node.js >= 18.0.0

## 许可证

MIT
npm package: @lyhue1991/websearch
Description: 基于 Exa AI 的网页搜索命令行工具，无需 API Key
Latest version: 0.1.0

# @lyhue1991/websearch

基于 Exa AI MCP 端点的网页搜索命令行工具，无需 API Key，开箱即用。

## 安装

```bash
npm install -g @lyhue1991/websearch
```

或使用 npx：

```bash
npx @lyhue1991/websearch "search query"
```

## 使用

```bash
websearch <query> [options]
```

### 参数

| 参数 | 短参数 | 类型 | 默认值 | 说明 |
|------|--------|------|--------|------|
| `--count` | `-c` | number | 8 | 结果数量 (1-20) |
| `--format` | `-f` | string | json | 输出格式: json / markdown / table |
| `--type` | `-t` | string | auto | 搜索类型: auto / fast / deep |
| `--insecure` | `-k` | boolean | false | 跳过 SSL 证书验证 |
| `--help` | `-h` | - | - | 显示帮助 |
| `--version` | `-v` | - | - | 显示版本 |

### 示例

```bash
# 基础搜索
websearch "AI news 2025"

# 指定结果数量
websearch "TypeScript tutorial" -c 5

# Markdown 格式输出
websearch "React best practices" -f markdown

# 深度搜索
websearch "machine learning" -c 10 -f table --type deep

# 跳过 SSL 证书验证（适用于代理环境）
websearch "test query" --insecure
```

### 输出格式

#### JSON（默认）

```json
[
  {
    "title": "结果标题",
    "url": "https://example.com",
    "snippet": "内容摘要..."
  }
]
```

#### Markdown

```markdown
## 1. 结果标题
[https://example.com](https://example.com)
内容摘要...
```

#### Table

```
┌────────────────────────────┬──────────────────┬─────────────────────────────┐
│ 标题                       │ URL              │ 摘要                        │
├────────────────────────────┼──────────────────┼─────────────────────────────┤
│ 结果标题                   │ https://...      │ 内容摘要...                 │
└────────────────────────────┴──────────────────┴─────────────────────────────┘
```

## License

MIT
npm package: @lyjclaw/extensions-netease-yunxin
Description: OpenClaw NetEase Yunxin IM channel plugin
Latest version: 0.1.1

# @lyjclaw/extensions-netease-yunxin

NetEase Yunxin IM (NIM) plugin for OpenClaw.

## Build

```bash
npm install
npm run build
```

## Publish

```bash
# dry run
npm run publish:dry

# latest
npm run publish:latest

# beta
npm run publish:beta
```

## Verify

```bash
npm view @lyjclaw/extensions-netease-yunxin version
```

## Install In OpenClaw

```bash
openclaw plugins install @lyjclaw/extensions-netease-yunxin
```

Then run:

```bash
openclaw plugins list
```

## One-Page Install Manual

1. Install/upgrade OpenClaw first.
2. Install plugin from npm: `openclaw plugins install @lyjclaw/extensions-netease-yunxin`.
3. Configure channel account fields (`appKey`, `accountId`, `token`).
4. Restart gateway or run onboarding again.

### Troubleshooting

- `unsafe plugin manifest path`: do not use `Use local plugin path` pointing to pnpm global store directories.
- network timeout: check access to npm registry and GitHub codeload endpoints.
- `node-nim load failed: Cannot find module '../build/Release/node-nim.node'`:
  OpenClaw installs plugin dependencies with scripts disabled, so `node-nim` native binaries may be missing on first install. Run:

```bash
cd ~/.openclaw/extensions/netease-yunxin
npm rebuild node-nim
```

On Windows PowerShell:

```powershell
cd $env:USERPROFILE\.openclaw\extensions\netease-yunxin
npm rebuild node-nim
```
npm package: @lyjclaw/leliao
Description: OpenClaw NetEase Yunxin IM channel plugin
Author: lyjclaw@leliao
Latest version: 0.1.2

# @lyjclaw/leliao

NetEase Yunxin IM (NIM) plugin for OpenClaw.

## Build

```bash
npm install
npm run build
```

## Publish

```bash
# dry run
npm run publish:dry

# latest
npm run publish:latest

# beta
npm run publish:beta
```

## Verify

```bash
npm view @lyjclaw/leliao version
```

## Install In OpenClaw

```bash
openclaw plugins install @lyjclaw/leliao
```

Then run:

```bash
openclaw plugins list
```

## One-Page Install Manual

1. Install/upgrade OpenClaw first.
2. Install plugin from npm: `openclaw plugins install @lyjclaw/leliao`.
3. Configure channel account fields (`appKey`, `accountId`, `token`).
4. Restart gateway or run onboarding again.

### Troubleshooting

- `unsafe plugin manifest path`: do not use `Use local plugin path` pointing to pnpm global store directories.
- network timeout: check access to npm registry and GitHub codeload endpoints.
- `node-nim load failed: Cannot find module '../build/Release/node-nim.node'`:
  OpenClaw installs plugin dependencies with scripts disabled, so `node-nim` native binaries may be missing on first install. Run:

```bash
cd ~/.openclaw/extensions/netease-yunxin
npm rebuild node-nim
```

On Windows PowerShell:

```powershell
cd $env:USERPROFILE\.openclaw\extensions\netease-yunxin
npm rebuild node-nim
```
npm package: @lyjw0625/leave-package
Description: A leave Package
Latest version: 1.0.2

## 关于 .gitkeep
git无法提交一个空的文件夹，当用户需要提交一个空的文件夹的时候，按照惯例，会把一个称为.gitkeep的文件放在这些文件夹里。
如果空文件夹中有其他文件时，可以删除.gitkeep文件
npm package: @lyket/react
Description: Instantly add clap/like/vote buttons to your website
Author: Irene Oppo
Latest version: 2.1.0

## Lyket React

Lyket is a tool to quickly implement GDPR-compliant applause, like, like/dislike and rating buttons on a webpage. To create a new button you need to choose a type (Like, Clap, Updown, Rate) and a unique identifier. From that moment on, Lyket's server will keep track of every visitor interaction on that button without storing personal data.

Visit [Lyket website](https://lyket.dev/docs/react) to get started with Lyket.

## How it works

To create a button you just need to provide a React component that has an ID, namespace and type.

Once you added this element a GET request is made to retrieve info about the button with that certain ID and namespace. If no button is found, a new resource is created with the ID/namespace identifier.

Notice that the server will create a new resource for every different and unique identifier, so if you change ID or namespace the new button won’t inherit the votes.

Every time a visitor clicks on a button, Lyket will update the likes counter and flag that the visitor has already voted, with no need to signup to any third party service.

Lyket does not store sensible data and is GDPR compliant.
npm package: @lykkex/react-components
Description: React Components for Lykke projects
Latest version: 0.9.9

## Lykke React Components

Docs: [Storybook](https://lykkecity.github.io/LykkeReactComponents)

This project is a library of React Components for Lykke projects.

- [Getting started](#getting-started)
  - [yarn](#yarn)
  - [yarn build](#yarn-build)
  - [yarn publish](#yarn-publish)

### Getting started

This project uses `yarn` as a package manager.

#### `yarn`

Installs dependencies.

#### `yarn build`

Builds the library for production to the `dist` folder.

Now library is ready to be published!

#### `yarn publish`

Publishes the library.

#### `yarn run storybook`

Starts docs server on port 6006

#### `yarn run build-storybook`

Builds docs
npm package: @lykmapipo/constants
Description: Common constants for day to day development
Author: lykmapipo
Latest version: 0.4.46

# constants

[![Build Status](https://travis-ci.com/lykmapipo/constants.svg?branch=master)](https://travis-ci.com/lykmapipo/constants)
[![Dependencies Status](https://david-dm.org/lykmapipo/constants.svg)](https://david-dm.org/lykmapipo/constants)
[![Coverage Status](https://coveralls.io/repos/github/lykmapipo/constants/badge.svg?branch=master)](https://coveralls.io/github/lykmapipo/constants?branch=master)
[![GitHub License](https://img.shields.io/github/license/lykmapipo/constants)](https://github.com/lykmapipo/constants/blob/master/LICENSE)

[![Commitizen Friendly](https://img.shields.io/badge/commitizen-friendly-brightgreen.svg)](http://commitizen.github.io/cz-cli/)
[![code style: prettier](https://img.shields.io/badge/code_style-prettier-ff69b4.svg)](https://github.com/prettier/prettier)
[![Code Style](https://badgen.net/badge/code%20style/airbnb/ff5a5f?icon=airbnb)](https://github.com/airbnb/javascript)
[![npm version](https://img.shields.io/npm/v/@lykmapipo/constants)](https://www.npmjs.com/package/@lykmapipo/constants)

Common constants for day to day development.

## Requirements

- [NodeJS v8.11.1+](https://nodejs.org)
- [npm v5.6.0+](https://www.npmjs.com/)

## Installation

```sh
npm install --save @lykmapipo/constants
```

## Usage

- With Node.js:

```js
const {
  DEFAULT_LOCALE,
  LOCALES
} = require('@lykmapipo/constants');
```

- With ES Module:

```js
import {
  DEFAULT_LOCALE,
  LOCALES
} from '@lykmapipo/constants';
```

## Test

- Clone this repository

- Install all dependencies

```sh
npm install
```

- Then run test

```sh
npm test
```

## Contribute

It will be nice, if you open an issue first so that we can know what is going on, then, fork this repo and push in your ideas. Do not forget to add a bit of test(s) of what value you adding.

## Licence

The MIT License (MIT)

Copyright (c) lykmapipo & Contributors

Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the “Software”), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED “AS IS”, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
npm package: @lykmapipo/include
Description: Require module from a given path
Latest version: 0.2.10

# include

[![Build Status](https://travis-ci.org/lykmapipo/include.svg?branch=master)](https://travis-ci.org/lykmapipo/include)
[![Dependencies Status](https://david-dm.org/lykmapipo/include.svg?style=flat-square)](https://david-dm.org/lykmapipo/include)

Require module from a given path

## Requirements

- [NodeJS v8.3.0+](https://nodejs.org)

## Installation

```sh
npm install --save @lykmapipo/include
```

## Usage

```js
const {
  include,
  includeFrom,
  includeFromDirname,
  includeFromParent,
  includeFromCwd
} = require('@lykmapipo/include');


const User = include('models', 'user');
const utils = include('..', 'utils');

const User = includeFrom('models')('user');
const utils = includeFrom('..')('utils');

const includeModel = includeFrom('models');
const User = includeModel('user');

const User = includeFromDirname('user');
const User = include('@dirname/user');

const User = includeFromParent('user');
const User = include('@parent/user');

const User = includeFromCwd('user');
const User = include('@cwd/user');

...

```

## Test

- Clone this repository

- Install all dependencies

```sh
npm install
```

- Then run test

```sh
npm test
```

## Contribute

It will be nice, if you open an issue first so that we can know what is going on, then, fork this repo and push in your ideas. Do not forget to add a bit of test(s) of what value you adding.

## Licence

The MIT License (MIT)

Copyright (c) 2018 lykmapipo & Contributors

Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the “Software”), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED “AS IS”, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
npm package: @lykmapipo/logger
Description: Naive logging helpers
Author: lykmapipo
Latest version: 0.5.40

# logger

[![Build Status](https://travis-ci.com/lykmapipo/logger.svg?branch=master)](https://travis-ci.com/lykmapipo/logger)
[![Dependencies Status](https://david-dm.org/lykmapipo/logger.svg)](https://david-dm.org/lykmapipo/logger)
[![Coverage Status](https://coveralls.io/repos/github/lykmapipo/logger/badge.svg?branch=master)](https://coveralls.io/github/lykmapipo/logger?branch=master)
[![GitHub License](https://img.shields.io/github/license/lykmapipo/logger)](https://github.com/lykmapipo/logger/blob/master/LICENSE)

[![Commitizen Friendly](https://img.shields.io/badge/commitizen-friendly-brightgreen.svg)](http://commitizen.github.io/cz-cli/)
[![code style: prettier](https://img.shields.io/badge/code_style-prettier-ff69b4.svg)](https://github.com/prettier/prettier)
[![Code Style](https://badgen.net/badge/code%20style/airbnb/ff5a5f?icon=airbnb)](https://github.com/airbnb/javascript)
[![npm version](https://img.shields.io/npm/v/@lykmapipo/logger)](https://www.npmjs.com/package/@lykmapipo/logger)

Naive logging helpers


## Requirements

- [NodeJS v8.11.1+](https://nodejs.org)
- [npm v5.6.0+](https://www.npmjs.com/)

## Installation

```sh
npm install --save @lykmapipo/logger
```

## Usage

```js
const { error, warn, info, verbose, debug, silly } = require('@lykmapipo/logger');

info({ message: 'Server Starting', port: 4000 });

error(new Error('Invalid Arguments'));
```

## Environment
```js
LOGGER_LOG_ENABLED=true
LOGGER_LOG_LEVEL=silly
LOGGER_USE_CONSOLE=true
LOGGER_USE_FILE=true
LOGGER_LOG_PATH=./logs/app-%DATE%.log
LOGGER_LOG_IGNORE=password,apiKey,secret,client_secret
```


## Test

- Clone this repository

- Install all dependencies

```sh
npm install
```

- Then run test

```sh
npm test
```

## How to contribute

It will be nice, if you open an issue first so that we can know what is going on, then, fork this repo and push in your ideas. Do not forget to add a bit of test(s) of what value you adding.

## LICENSE

MIT License

Copyright (c) lykmapipo & Contributors

Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
npm package: @lykmapipo/rate-limit-mongoose
Description: A rate limiting store for express-rate-limit with mongoose
Author: lykmapipo
Latest version: 0.1.34

# rate-limit-mongoose

[![Build Status](https://travis-ci.org/lykmapipo/rate-limit-mongoose.svg?branch=master)](https://travis-ci.org/lykmapipo/rate-limit-mongoose)
[![Dependencies Status](https://david-dm.org/lykmapipo/rate-limit-mongoose/status.svg)](https://david-dm.org/lykmapipo/rate-limit-mongoose)

A rate limiting store for [express-rate-limit](https://github.com/nfriedly/express-rate-limit) with [mongoose](https://github.com/Automattic/mongoose) 

## Requirements

- NodeJS v9.3+

## Install
```sh
$ npm install --save @lykmapipo/rate-limit-mongoose
```

## Usage

```javascript
const mongoose = require('mongoose');
const rateLimit = require('express-rate-limit');
const rateLimitStore = require('@lykmapipo/rate-limit-mongoose');

// setup rate limiter
const windowMs = 15 * 60 * 1000;
const store = rateLimitStore({ windowMs });
const limiter = rateLimit({ store, windowMs });

//  apply to all requests
app.use(limiter);

// only apply to requests that begin with /api/
app.use("/api/", limiter);

```

## Testing
* Clone this repository

* Install all development dependencies
```sh
$ npm install
```
* Then run test
```sh
$ npm test
```

## Contribute
It will be nice, if you open an issue first so that we can know what is going on, then, fork this repo and push in your ideas. Do not forget to add a bit of test(s) of what value you adding.


## Licence
The MIT License (MIT)

Copyright (c) 2018 lykmapipo & Contributors

Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the “Software”), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED “AS IS”, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
npm package: @lykmapipo/test-helpers
Description: Sensible test helpers
Author: lykmapipo
Latest version: 0.6.23

# test-helpers

[![Build Status](https://travis-ci.com/lykmapipo/test-helpers.svg?branch=master)](https://travis-ci.com/lykmapipo/test-helpers)
[![Dependencies Status](https://david-dm.org/lykmapipo/test-helpers.svg)](https://david-dm.org/lykmapipo/test-helpers)
[![Coverage Status](https://coveralls.io/repos/github/lykmapipo/test-helpers/badge.svg?branch=master)](https://coveralls.io/github/lykmapipo/test-helpers?branch=master)
[![GitHub License](https://img.shields.io/github/license/lykmapipo/test-helpers)](https://github.com/lykmapipo/test-helpers/blob/master/LICENSE)

[![Commitizen Friendly](https://img.shields.io/badge/commitizen-friendly-brightgreen.svg)](http://commitizen.github.io/cz-cli/)
[![code style: prettier](https://img.shields.io/badge/code_style-prettier-ff69b4.svg)](https://github.com/prettier/prettier)
[![Code Style](https://badgen.net/badge/code%20style/airbnb/ff5a5f?icon=airbnb)](https://github.com/airbnb/javascript)
[![npm version](https://img.shields.io/npm/v/@lykmapipo/test-helpers)](https://www.npmjs.com/package/@lykmapipo/test-helpers)

Sensible test helpers

## Installation

```sh
$ npm install --save @lykmapipo/test-helpers
```

## Usage
```js
import { mock, spy, expect, faker } from '@lykmapipo/test-helpers';

const spied = spy(faker.internet, 'email');

const email = faker.internet.email();
expect(email).to.exist;

expect(spied).to.have.been.calledOnce;
spied.restore();
```

## Testing

- Clone this repository

- Install all development dependencies

```sh
$ npm install
```

- Then run test

```sh
$ npm test
```

## How to contribute

It will be nice, if you open an issue first so that we can know what is going on, then, fork this repo and push in your ideas. Do not forget to add a bit of test(s) of what value you adding.

## LICENSE

MIT License

Copyright (c) lykmapipo & Contributors

Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
npm package: @lykmapipo/tz-ega-sms
Description: Send SMS over Tanzania EGA API
Author: lykmapipo
Latest version: 0.5.37

# tz-ega-sms

[![Build Status](https://travis-ci.org/lykmapipo/tz-ega-sms.svg?branch=master)](https://travis-ci.org/lykmapipo/tz-ega-sms)
[![Dependencies Status](https://david-dm.org/lykmapipo/tz-ega-sms/status.svg)](https://david-dm.org/lykmapipo/tz-ega-sms)

Send SMS over Tanzania EGA API

## Requirements

- [nodejs v8.11.1+](https://nodejs.org)
- [npm v5.6.0+](https://www.npmjs.com/)

## Installation

```sh
npm install --save @lykmapipo/tz-ega-sms
```

## Usage

```js
const transport = require('@lykmapipo/tz-ega-sms')({
  apiKey: process.env.SMS_EGA_TZ_API_KEY,
  apiUser: process.env.SMS_EGA_TZ_API_USER,
  apiUrl: process.env.SMS_EGA_TZ_API_URL,
  apiSender: process.env.SMS_EGA_TZ_DEFAULT_SENDER_ID
  apiServiceId: process.env.SMS_EGA_TZ_DEFAULT_SERVICE_ID
});

const sms = ({
  message: 'Hello Juma, Your water bill is TZS 17,439/=',
  datetime: '2018-08-06 13:43:15',
  'sender_id': 'BILLING',
  'mobile_service_id': '400',
  recipients: '255714565656'
});

transport.send(sms, function (error, response) {
  expect(error).to.not.exist;
  expect(response).to.exist;
});
```

## Test

- Clone this repository

- Install all dependencies

```sh
npm install
```

- Then run test

```sh
npm test
```

## Contribute

It will be nice, if you open an issue first so that we can know what is going on, then, fork this repo and push in your ideas. Do not forget to add a bit of test(s) of what value you adding.

## Licence

The MIT License (MIT)

Copyright (c) 2018 lykmapipo & Contributors

Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the “Software”), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED “AS IS”, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
npm package: @lyl-radio/react-native-audio
Description: React Native audio library
Author: Maxime Epain
Latest version: 0.8.2

# react-native-audio

React Native audio library with background capabilities on both iOS and Android.

## Installation

Install from the command line:
```
$ npm install @lyl-radio/react-native-audio@0.8.2
```

Install via package.json:
```
"@lyl-radio/react-native-audio": "0.8.2"
```

## Usage

The `Audio` takes a [`Source`](src/index.ts#L67) object as input.

```js
import Audio from "@lyl-radio/react-native-audio"

Audio.play({ uri: 'https://your/content.mp3' })
```

The [`Source`](src/index.ts#L67) includes metadata to setup the [Now Playing Info](https://developer.apple.com/documentation/mediaplayer/mpnowplayinginfocenter) on iOS' Control Center and the [Media Controls](https://developer.android.com/guide/topics/media/media-controls) on Android.

```js
type Source = {
  uri: string
  title: string
  artwork?: string
  album?: string
  artist?: string
  albumArtist?: string
}
```

> See [example](example) for more details.

### Hooks
 
A simple set of hooks allows you to respond to player events.

### `usePlaybackState`

The player state hook will return [PlaybackState](src/index.ts#L53) on change events allowing you to update your stateful function component when the player starts `playing`, `buffering` or on `paused` or `ended`.

### `usePlayerDuration`

The player duration hook will update your function component when the player has updated the playing track duration in seconds.

### `usePlayerProgress`

Updates your function component as the player progress. The progress value is expressed in seconds.

## Contributing

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

## License

[MIT](LICENSE)
npm package: @lyl19754/react-scripts
Description: Configuration and scripts for Create React App.
Latest version: 4.0.4

# react-scripts

This package includes scripts and configuration used by [Create React App](https://github.com/facebook/create-react-app).<br>
Please refer to its documentation:

- [Getting Started](https://facebook.github.io/create-react-app/docs/getting-started) – How to create a new app.
- [User Guide](https://facebook.github.io/create-react-app/) – How to develop apps bootstrapped with Create React App.
npm package: @lylb/bzo-core
Description: web端工具方法库
Author: wangchunhai818@vip.qq.com
Latest version: 1.0.7

## 支持端
网页端

## 安装
`npm install @lylb/bzo-core`

## 引用
`import * as zo from '@lylb/bzo-core'`
- 支持按需引用

## 用法
```javascript
// 合成图片
await zo.comform(options:Options): Promise<Out>
// 水印
zo.watermark(options: Options): watermark.iWatermark
// 红包雨
zo.redrain(options: Options): redrain.iRedrain
```
npm package: @lylb/tzo-ui
Description: 基于Taro2开发的组件库
Latest version: 0.0.19

# Tzo-ui 

## 项目说明

基于`Taro2`的框架搭建的 ui 组件库  
前端工程：`ts` + `eslint` + `stylelint` + `prettier` + `husky`
npm package: @lylb/zo-util
Description: 工具方法库
Author: wangchunhai818@vip.qq.com
Latest version: 1.0.11

## 支持端

网页端 & 小程序端

## 安装

`npm install @lylb/zo-util`

## 引用

`import * as zo from '@lylb/zo-util'`

-   支持按需引用

## 方法

-   判断变量类型或者判断是否指定类型
-   循环 Array 或者 Object,并根据 callback 返回 false 时中断循环
-   去除指定字符串中的前后空格
-   查找传递的 path 中 query 参数
-   拷贝对象或数组
-   多个数组合并成一个数组
-   数组内容去重，支持多个数组合并后去重
-   数组随机打乱
-   字符串保密，替换其余字符串
-   判断任何类型参数是否为空
-   截取数值中小数位为指定位数
-   精度处理，加减、乘积、两数相除
-   删除字符串中的标签，一般用于富文本特殊处理
-   数值加权、验证、加权加密、加权解密
-   时间格式化日期、时间戳格式化日期、字符串格式化日期
-   判断是否银行卡号，仅银行卡号规则验证，不进行银行校对
-   获取字符串真实长度，返回字节长度
-   自动生成不重复的 id 值，例如：AC97QA-NLOWEK-FFLTNH-ZOEQE7RA
-   防抖（支持前防抖以及后防抖）
-   伪协议字符串拆分
-   格式化任何时间格式数据以及插件(比大小、时间段等)
-   数组切割
-   查询两数组中重复的值
-   整数范围段
-   是否数组
-   是否对象
-   是否布尔
-   是否数字
-   是否字符串
-   是否正则
-   是否 FormData
-   是否 Function
-   是否 Date
-   是否 Error
-   是否 Symbol
-   是否 Promise
-   是否 Null
-   是否 Undefined
-   判断数字或字符串是否为数字
-   是否移动设备
-   是否爬虫
-   是否微信
-   是否 QQ 浏览器
-   是否手机号
-   是否座机号码
-   是否 http 地址
-   是否邮箱地址
-   判断是否对象或者数组
-   是否银行卡(只校验卡号真伪，不校验是否真实存在)
-   是否偶数(仅验证整数)
-   解析时间格式转为 Date
-   格式替换(时间)
-   时间格式化(Date)
-   身份证号码校验(只校验卡号真伪，不校验是否真实存在)
-   获取多位数值中小数位长度
-   去除数值中的小数点，用于处理乘法中的精度问题
-   在对象中查找 key
-   在对象中查找 value
-   提取对象中指定 keys 的值
-   查找数组或对象指定 path 的值
-   字符串去空格[增加 type 参数，类型(1:前后空格,2:前空格,3:后空格,4:所有空格),默认: 1]
-   参数内容字符串化
-   替换字符串中匹配的内容
-   把字符串转化为属性路径
-   简易字符串模板
npm package: @lymonapp/fortune-sheet-core
Description: FortuneSheet is a drop-in javascript spreadsheet library that provides rich features like Excel and Google Sheets
Latest version: 0.19.307

# @fortune-sheet/core

FortuneSheet is a drop-in javascript spreadsheet library that provides rich features like Excel and Google Sheets

See our repo [fortune-sheet](https://github.com/ruilisi/fortune-sheet) for more information.

## Install

Using npm:

```bash
$ npm install --save  @fortune-sheet/core
```

or using yarn:

```bash
$ yarn add @fortune-sheet/core
```
npm package: @lymonapp/fortune-sheet-react
Description: FortuneSheet is a drop-in javascript spreadsheet library that provides rich features like Excel and Google Sheets
Latest version: 0.19.307

# @fortune-sheet/react

FortuneSheet is a drop-in javascript spreadsheet library that provides rich features like Excel and Google Sheets

See our repo [fortune-sheet](https://github.com/ruilisi/fortune-sheet) for more information.

## Install

Using npm:

```bash
$ npm install --save  @fortune-sheet/react
```

or using yarn:

```bash
$ yarn add @fortune-sheet/react
```
npm package: @lympid/eslint-config-lympid
Description: Lympid ESLint config
Author: Lympid
Latest version: 1.0.2

# lympid-config-lympid

Lympid ESLint config.

## Installation

```sh
$ npm install eslint @lympid/eslint-config-lympid --save-dev
```

## Usage

Create an `.eslintrc.yml` file with the following:

```yaml
extends: "@lympid/eslint-config-lympid"
```

Add the following `script` to your `package.json`:

```json
{
  "scripts": {
    "lint": "eslint ."
  }
}
```

and run the linter with:

```sh
$ npm run lint
```
npm package: @lympid/stylelint-config-lympid
Description: Lympid stylelint config
Author: Lympid
Latest version: 1.0.1

# stylelint-config-lympid

Lympid stylelint config.

This configuration was created for react environment using [styled-components](https://www.styled-components.com/),
however it can be applied in other contexts.

## Installation

```sh
npm install "stylelint^13.10.0" @lympid/stylelint-config-lympid --save-dev
```

## Usage

Create an `.stylelintrc` file with the following:

```json
{
  "extends": ["@lympid/stylelint-config-lympid"]
}
```

Add the following `script` to your `package.json`:

```json
{
  "scripts": {
    "lint-styles": "stylelint './src/**/*.js'",
  }
}
```

and run the linter with:

```sh
npm run lint-styles
```

## Extending the config

Simply add a `"rules"` key to your config, then add your overrides and additions there.

```json
{
  "extends": "@lympid/stylelint-config-lympid",
  "rules": {
    "your-rules-here"
  }
}
```
npm package: @lymtic/version-watcher
Description: 当一些频繁使用的网站发布新版本时，已经打开网页的用户可能无法即时了解到更新。尤其是对于某些后台应用，用户一旦打开页面，通常在相当长的时间内不会刷新。由于新版本在短时间内难以覆盖到平台上 80%及以上的用户，我们建议引导用户主动进行页面刷新，以确保他们获得最新的用户体验
Author: HamsterCat-W
Latest version: 1.0.13

### 使用场景

当一些频繁使用的网站发布新版本时，已经打开网页的用户可能无法即时了解到更新。尤其是对于某些后台应用，用户一旦打开页面，通常在相当长的时间内不会刷新。由于新版本在短时间内难以覆盖到平台上 80%及以上的用户，我们建议引导用户主动进行页面刷新，以确保他们获得最新的用户体验

### 弹窗触发条件

本地版本 vs 云版本 不一致时触发

### 触发时机

`document.visibilityState === 'visible'` 或者 路由发生变化

### 使用

在使用这个库时需要引入两个部分：`vite` 插件 和 弹窗组件

`vite` 插件: 主要功能是在构建时在生成云端版本 `version.js` 和 在 `index.html` 注入本地版本号，通常是标签 `id` 为 `domId` 的标签

🌰

```html
<div id="version" style="display: none">1705302316059</div>
```

弹窗组件: 主要功能是在屏幕右下角生成弹窗,并在 `localStorage` 生成并存储过期时间：`versionInfoExpireTime`

#### 安装

```bash
npm i @lymtic/version-watcher
```

#### 插件引入

在 vite.config.ts 引入

```ts
import { publishVersion } from '@lymtic/version-watcher/vite'

// https://vitejs.dev/config/
export default defineConfig({
  plugins: [
    publishVersion({
      domId: 'lymtic-version-watcher' // 可选参数，可以不传
    })
  ]
})
```

插件需要配合组件使用，在传递 domId 时，需要保持一致

#### 样式引入

```ts
// main.ts
import '@lymtic/version-watcher/style.css'
```

#### 组件引入

在根组件 App.vue 引入组件

```vue
<script setup lang="ts">
import { FeVersionWatcher } from '@lymtic/version-watcher'
</script>

<template>
  <div>
    <FeVersionWatcher
      modelDomId="version-modal"
      desc="检测到页面内容有更新，是否刷新页面加载最新版本?"
      expiration="1d"
      :showModal="true"
      domId="lymtic-version-watcher"
    ></FeVersionWatcher>
  </div>
</template>
```

FeVersionWatcher 组件接收 props

props 都是可选属性，不传递时使用默认属性

```ts
type expirationType = '1d' | '30min'

interface PropsType {
  modelDomId?: string // 渲染的弹窗的id
  desc?: string // 弹窗内容
  expiration?: expirationType // 缓存时间，默认一天只显示一次
  showModal?: boolean //是否显示弹出案，false时直接触发刷新，不显示弹窗
  domId?: string // 页面上存储的版本号元素的id ,需要与 vite 插件传递的参数保持一致，也可以都不传递，使用默认值
}
```

#### demo 地址

```bash
https://github.com/HamsterCat-W/fe-version-watcher-demo
```
npm package: @lynbarry/mvg-api
Description: Node API for MVG departures.
Author: Christian Brosche
Latest version: 3.2.0

mvg-api
=======

[![Build Status](https://img.shields.io/travis/Lynbarry/mvg-api/master.svg)](https://travis-ci.org/Lynbarry/mvg-api)


Node API for MVG departures.

## Installation

    npm install @lynbarry/mvg-api


## Usage

The "getDepartures" function takes up to three parameters:
* __station__: A String containing the name of the desired station.
* __transportTypes__: A list of strings containing the types of transport that are supposed to be shown. (u = ubahn, s = sbahn, b = bus, t = tram)
* __apiRedirectUrl (Optional)__: A String containing the URL of a redirect endpoint. If given, the requests will be sent to `apiRedirectUrl/mvgEndpoint`. You may need this to get around CORS problems when making requests in the frontend. Defaults to the mvg-URL.

### Example


    const mvgApi = require('@lynbarry/mvg-api');

    mvgApi.getDepartures('Harras', ['u', 's', 'b', 't']).then(lines => {
        console.log(lines);
    });


Output is a list of departures:

```
[ { [Number: 0]
    lineNumber: '6',
    lineDestination: 'Klinikum Großhadern',
    lineDepartureIn: 0,
    lineType: 'u' },
  { [Number: 4]
    lineNumber: '6',
    lineDestination: 'Garching-Forschungszentrum',
    lineDepartureIn: 4,
    lineType: 'u' },
  { [Number: 11]
    lineNumber: '6',
    lineDestination: 'Klinikum Großhadern',
    lineDepartureIn: 11,
    lineType: 'u' },
    ...
```

You can also use the `toString` method to get a list in human readable form:

```
2	U6:	Garching-Forschungszentrum,
8	U6:	Klinikum Großhadern,
9	U6:	Fröttmaning,
13	U6:	Garching-Forschungszentrum,
15	U6:	Klinikum Großhadern,
```

## Tests

    npm test

## Contributing

    In lieu of a formal style guide, take care to maintain the existing coding style.
    Add unit tests for any new or changed functionality. Lint and test your code.
npm package: @lync.world/web3-auth
Description: web3-auth for biconomy sdk
Author: livingrockrises
Latest version: 2.0.0

# `@biconomy/web3-auth`

> A library to import the torus web3 social auth directly from [Biconomy SDK](https://github.com/bcnmy/biconomy-client-sdk)

## Usage

```ts
import SocialLogin from "@biconomy/web3-auth";
// init wallet
const socialLoginSDK = new SocialLogin();
await socialLoginSDK.init();
// show connect modal
socialLoginSDK.showWallet();
```