open-index/open-npm huggingface dataset:
npm package: @kelmancelis/eslint-config
Description: shareable eslint
Author: kelmancelis
Latest version: 1.0.2

These are settings for ESLint and Prettier used by me.

## What it does

This setup lints your JavaScript code based on practices. Check the [.eslintrc.js](https://github.com/kelmancelis/eslint-config/blob/main/.eslintrc.js) file to see what is included. Feel free to override the rules that make sense for you.

## Installing

1. In your project folder, run:

```
npm i -D @kelmancelis/eslint-config # or yarn install --dev @kelmancelis/eslint-config
npx install-peerdeps --dev @kelmancelis/eslint-config
```

2. You will see several dependencies were installed. Now, create (or update) a `.eslintrc` file with the following content:

```js
{
  'extends': [
    '@kelmancelis'
  ]
}
```

3. Copy the [.prettierrc](https://github.com/kelmancelis/eslint-config/blob/main/.prettierrc) file from this repository into your project folder

---
npm package: @kelmscott/forme
Description: A configurable React factory component for generating a component tree from a JSON specification.
Author: Brett Gullan
Latest version: 0.1.1

# `@kelmscott/forme`

A configurable React factory component for generating a component tree from a JSON specification.

## Install

```shell
$ npm i @kelmscott/forme
```

## Usage

```javascript
import forme from '@kelmscott/forme'
```

### Configuration Map

**Forme** uses a simple configuration map to resolve any components referenced in the JSON specification.

```javascript
const Card = (props) => (
  <div className="card" {...props} />
)

const CardImg = (props) => (
  <img className="cardImg" {...props} />
)

const configMap = {
  card: Card,
  img: CardImg,
}
```

### Component Specification

The JSON specification would be:
```javascript
const spec = [
  {
    component: "card",
    children: [
      {
        component: "img",
        src:
          "https://images.pexels.com/photos/2877188.jpeg"
      }
    ]
  }
]
```

Using **Forme** to render a React component tree:
```javascript
const renderer = forme(configMap)

renderer(spec)

// returns ...
///
// <Fragment>
//   <Card>
//     <CardImg src="https://images.pexels.com/photos/2877188.jpeg" />
//   </CardImg>
// </Fragment>
```

The component specification is a simple JSON tree.  

#### Root element
The root of the specification must be an array, containing zero or more objects.

#### Component key
Each object must contain a `component` key with a value that corresponds to a component key specified in the configuration map.

#### Children key
Each object may optionally specify `children`.  
If `children` is an array, **Forme** assumes these are child components and recursively walks them, attempting to construct a Component from the configuration map for each.

#### Props
All other key/value pairs defined in the specification are treated as React `props` and passed as such, when **Forme** creates each Component.

---

## Typical Usage

The typical use-case for **Forme** is with a static site generator, such as Next.js, Gatsby, Nuxt or VuePress.

The following example assumes Next.js.

```javascript
// ./src/pages/index.js

import BodyContent from '../components/BodyContent'

const Page = ({ entry }) => {

  const { heroImage, bodyContent } = entry

  return (
    <Fragment>
      <div>
        <h1>{entry.title}</h1>
        <img src={heroImage.src} />
      </div>

      {/* Assume `bodyContent` is a JSON spec object 
        * generated via GraphQL from a headless CMS.*/}
      <BodyContent>{bodyContent}</BodyContent>
    </Fragment>
  )
}
```

`<BodyContent>` is a pre-configured instance of `forme`, wrapped as a reusable React component.

```javascript
// ./src/components/BodyContent.js

import forme from '@kelmscott/forme'
import { Heading, Subheading, Text, Image, PullQuote } from '.'

const componentMap = {
  heading: Heading,
  subhead: Subheading,
  text: Text,
  image: Image,
  pull-quote: PullQuote,
}

const renderer = forme(componentMap)

export default ({ children }) => renderer(children)
```
npm package: @keload/node-red-dxp
Description: Effortless Node Creation for Node-RED, really fast and easy.
Author: Clément BERARD
Latest version: 1.33.1

# Node-Red Developer eXPerience (node-red-dxp)

Effortless Node Creation for Node-RED, really fast and easy.

Build faster with modern tools and seamless workflows 🚀

Welcome to **node-red-dxp**, a comprehensive library designed to simplify and accelerate the development of custom nodes for Node-RED. 🚀

With **node-red-dxp**, you get everything you need to build, style, and document your nodes—all in one package!

[Explore the docs »](https://clement-berard.github.io/node-red-dxp/)

<br/>
<div style="margin-top: 2rem; display: flex; align-items: center; justify-content: center; gap:2rem; flex-wrap: wrap;">
  <img src="https://nodered.org/about/resources/media/node-red-icon-2.svg" alt="Node-RED logo" width="50"/>
  <img src="https://upload.wikimedia.org/wikipedia/commons/4/4c/Typescript_logo_2020.svg" alt="TypeScript logo" width="40"/>
  <img src="./docs/images/esbuild-logo.svg" alt="esbuild logo" width="50"/>
  <img src="https://upload.wikimedia.org/wikipedia/commons/d/d5/Tailwind_CSS_Logo.svg" alt="Tailwind CSS logo" width="50"/>
  <img src="https://upload.wikimedia.org/wikipedia/commons/9/96/Sass_Logo_Color.svg" alt="Sass logo" width="50"/>
</div>


## ✨ Key Features

- **⚡ Powerful and fast Builder**:
    - Leverages **esbuild** for lightning-fast JavaScript builds (controller & editor).
    - Supports SCSS styles for polished, modern editor UIs.
    - Automatically render Markdown documentation into Node-RED compatible HTML.


- **🎨 Effortless Styling**:
    - Built-in support for **Tailwind CSS**.
    - Includes clean, minimal CSS styles tailored for Node-RED.
    - Fully customizable SCSS for editor components.


- **🛠️ Development Helpers**:
    - Utility functions to streamline building custom node editors.
    - Hassle-free configuration for common Node-RED workflows.


## 🚀 Why Choose node-red-dxp?

- **Blazing Speed**: Thanks to **esbuild**, both builds and watches are ultra-fast, letting you focus on development, not waiting.
- **All-in-One Toolkit**: No need to juggle multiple tools—**node-red-dxp** handles everything from JavaScript bundling to CSS and Markdown processing.
- **Developer-Centric**: Designed with developer experience (DX) at its core, making custom node creation as seamless as possible.

## 💪 Who’s Building with Node-RED DXP?

- [node-red-contrib-ultimate-toolkit](https://www.npmjs.com/package/@keload/node-red-contrib-ultimate-toolkit)️
- [node-red-contrib-js-philips-tv-control](https://www.npmjs.com/package/@keload/node-red-contrib-js-philips-tv-control)
- [node-red-contrib-happy-http-client](https://www.npmjs.com/package/@keload/node-red-contrib-happy-http-client)
- [node-red-contrib-better-webdav](https://www.npmjs.com/package/@keload/node-red-contrib-better-webdav) 🏗️

## License

MIT
npm package: @kelp404/sequelize-auto-migrations
Description: Sequelize migrations generator && runner
Author: Michael Maslov
Latest version: 1.3.1

# sequelize-auto-migrations
Migration generator &amp;&amp; runner for sequelize

This package provide two tools:
* `makemigration` - tool for create new migrations
* `runmigration` - tool for apply created by first tool migrations

## Install
`npm install sequelize-auto-migrations-v2`

## Usage
* Init sequelize, with sequelize-cli, using `sequelize init`
* Create your models
* Create initial migration - run:

`makemigration --name <migration name>`
* Change models and run it again, model difference will be saved to the next migration

To preview new migration, without any changes, you can run:

`makemigration --preview`

`makemigration` tool creates `_current.json` file in `migrations` dir, that is used to calculate difference to the next migration. Do not remove it!

To create and then execute migration, use:
`makemigration --name <name> -x`

## Executing migrations
* There is simple command to perform all created migrations (from selected revision):

`runmigration`
* To select a revision, use `--rev <x>`
* If migration fails, you can continue, use `--pos <x>`
* To prevent execution next migrations, use `--one`


For more information, use `makemigration --help`, `runmigration --help`

## TODO:
* Migration action sorting procedure need some fixes. When many foreign keys in tables, there is a bug with action order. Now, please check it manually (`--preview` option)
* Need to check (and maybe fix) field types: `BLOB`, `RANGE`, `ARRAY`, `GEOMETRY`, `GEOGRAPHY`
* Downgrade is not supported, add it
* This module tested with postgresql (I use it with my projects). Test with mysql and sqlite.
npm package: @kelpjs/body
Description: parse request for kelp
Author: lsong
Latest version: 1.4.1

## kelp-body ![NPM version](https://img.shields.io/npm/v/kelp-body.svg?style=flat)

parse request for kelp

### Installation
```bash
$ npm install kelp-body --save
```

### Example
```js
const kelp = require('kelp');
const body = require('kelp-body');

const app = kelp();

app.use(body);

app.use(function(req, res, next){
  console.log(req.url);
  console.log(req.path);
  console.log(req.query);
  console.log(req.text);
  console.log(req.body);
  console.log(req.files);
  next();
});
```


### Contributing
- Fork this Repo first
- Clone your Repo
- Install dependencies by `$ npm install`
- Checkout a feature branch
- Feel free to add your features
- Make sure your features are fully tested
- Publish your local branch, Open a pull request
- Enjoy hacking <3

### MIT license
Copyright (c) 2016 lsong

Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the &quot;Software&quot;), 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 &quot;AS IS&quot;, 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: @kelpjs/build
Description: build tools for kelp
Author: Lsong
Latest version: 0.0.19

## kelp-build

### install

```bash
~$ npm i -g @kelpjs/build
```

### configurage

kbuild.config.js

```js
const externals = require('@kelpjs/build/plugins/externals');

module.exports = {
  input: "./src/index.ts",
  style: {
    extract: false
  },
  typescript: true,
  plugins: [
    externals([
      'react',
      'react-dom'
    ])
  ],
  output: "my-components.js"
}
```

### usage

```bash
~$ kbuild
> kbuild

Happy[1]: Version: 5.0.1. Threads: 8
Happy[1]: All set; signaling webpack to proceed.
[@kelpjs/build] Javascript compile success, cost 3351ms
```

### license

This Project is under [MIT License](https://opensource.org/licenses/MIT).
npm package: @kelpjs/gen
Description: Simple file generator
Author: Lsong
Latest version: 0.0.7

## @kelpjs/gen

> simple file generator

### Installation

```bash
$ npm install @kelpjs/gen
```

### Example

```js
const generate = require('@kelpjs/gen');

generate({
  source: './src',
  output: './build',
  plugins: {
    
  }
});

```

@kelpjs/gen/flow example

```js
const flow       = require('@kelpjs/gen/flow');
const read       = require('@kelpjs/gen/plugins/read');
const source     = require('@kelpjs/gen/plugins/source');
const output     = require('@kelpjs/gen/plugins/output');
const matter     = require('@kelpjs/gen/plugins/matter');
const layouts    = require('@kelpjs/gen/plugins/layouts');
const metadata   = require('@kelpjs/gen/plugins/metadata');
const markdown   = require('@kelpjs/gen/plugins/markdown');
const permalink  = require('@kelpjs/gen/plugins/permalink');
const collection = require('@kelpjs/gen/plugins/collection');

flow()
.use(source('./src'))
.use(read())
.use(metadata({
  sitename: 'My Blog'
}))
.use(matter())
.use(markdown())
.use(permalink('/:year/:month/:title.html'))
.use(collection({
  name: 'index.html',
  layout: 'index.ejs'
}))
.use(layouts({
  templates: './templates'
}))
.use(output('./build'))
.run();
```

### Contributing
- Fork this Repo first
- Clone your Repo
- Install dependencies by `$ npm install`
- Checkout a feature branch
- Feel free to add your features
- Make sure your features are fully tested
- Publish your local branch, Open a pull request
- Enjoy hacking <3

### MIT

This work is licensed under the [MIT license](./LICENSE).

---
npm package: @kelpjs/kelp
Description: dead simple nodejs http web framework
Author: lsong
Latest version: 2.0.0

## kelp ![npm](https://badge.fury.io/js/kelp.png) [![Build Status](https://travis-ci.org/song940/kelp.svg?branch=master)](https://travis-ci.org/song940/kelp)

dead simple nodejs http web framework :rocket:

### Installation
````
$ npm install kelp --save
````

### Example
````javascript
const http = require('http');
const kelp = require('kelp');

const app = kelp();

const sleep = (n = 1) =>
  new Promise(done => setTimeout(done, n * 1e3));

app.use(async (req, res, next) => {
  console.log(1);
  await next();
  console.log(2);
});

app.use(async (req, res, next) => {
  console.log(3);
  await sleep();
  res.end(`hello world`);
  await next();
  console.log(4);
});

http.createServer(app).listen(3000);
````

### API

+ use

### Benchmarks

```bash
~$ npm run benchmark
```

> 2 GHz Intel Core i7 / 8 GB 1600 MHz DDR3 / v4.1.2

```bash
  1 middleware
  17710.10

  5 middleware
  19057.27

  10 middleware
  17320.05

  15 middleware
  16792.36

  20 middleware
  20580.80

  30 middleware
  16053.46

  50 middleware
  19124.45

  100 middleware
  16800.39
```

### Test

```bash
~$ npm test
```

### Contributing
- Fork this repo
- Clone your repo
- Install dependencies
- Checkout a feature branch
- Feel free to add your features
- Make sure your features are fully tested
- Open a pull request, and enjoy <3

### MIT license
Copyright (c) 2016 lsong

Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the &quot;Software&quot;), 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 &quot;AS IS&quot;, 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: @kelpjs/next
Description: The next full-featured javascript frameworks.
Author: Lsong
Latest version: 2.2.1

## kelp-next

> The next full-featured javascript frameworks.

### Installation

```bash
$ npm install @kelpjs/next
```

### Example

```js
require('@kelpjs/next');
```

### Documents

[docs](./docs)

### Contributing
- Fork this Repo first
- Clone your Repo
- Install dependencies by `$ npm install`
- Checkout a feature branch
- Feel free to add your features
- Make sure your features are fully tested
- Publish your local branch, Open a pull request
- Enjoy hacking <3

### MIT

This work is licensed under the [MIT license](./LICENSE).

---
npm package: @kelsny/rstd
Description: Rust's standard library repurposed for TypeScript.
Author: kelsny
Latest version: 0.0.1

# rstd

This is for a future project, Rust2TS, that will transpile Rust into TypeScript.

As such, this project tries to mimic Rust's standard library as much as possible.

Currently planned to contain:

-   `iter`
-   `option`
-   `result`
npm package: @kelsny/synth
Description: A tool for synthesizing types into runtime validators.
Author: kelsny
Latest version: 0.0.1

# @kelsny/synth

> 🚧 This project is still under construction. There might be bugs or unexpected behavior I have not thoroughly tested and prevented. Please submit these so I can fix them :D

**⚡️ A tool for synthesizing types into runtime validators.**

Give it a schema, and it gives you a validator that you can use however you'd like.

For example, it can do all of the following quite nicely:

-   ✅ Generate type guards
-   ✅ Manipulate tree-like data
-   ✅ Handle overloading like Java and C++
-   ✅ Fluent matching of values like Rust

Like the sound of it already? Go ahead and add it now:

```sh
npm install @kelsny/synth
```

Please note that it cannot do the following (yet):

-   ❌ Make you a sandwich
-   ❌ Read you a bedtime story
-   ❌ Fix your relationships
-   ❌ Solve our global crisis

**Some quick links that you might find helpful:**

-   🏠 [Home page](https://kelsny.github.io/synth)
-   📚 [Getting started](https://kelsny.github.io/synth/getting-started)
-   📖 [Reference](https://kelsny.github.io/reference)
-   👓 [For contributors](https://kelsny.github.io/for-contributors)
-   🛠 [VSCode extension]()

Feelin' synthwavy after using this? Give my [Nebula](https://vscode.dev/theme/kelsny.nebsies) theme for VSCode a spin.
npm package: @keltharan/df
Description: Get free disk space info from `df -k` due to qnap arm
Author: keltharan
Latest version: 3.1.3

# df [![Build Status](https://travis-ci.org/sindresorhus/df.svg?branch=master)](https://travis-ci.org/sindresorhus/df)

> Get free disk space info from [`df -k`](https://en.wikipedia.org/wiki/Df_\(Unix\))
Convert blocksize defined in http://man7.org/linux/man-pages/man1/df.1.html

Works on any Unix-based system like macOS and Linux. (also entware compatible)

*Created because all the other `df` wrappers are terrible. This one uses simple and explicit parsing. Uses `execa` rather than `exec`. Returns sizes in bytes and the capacity as a float.*


## Install

```
$ npm install @keltharan/df
```


## Usage

```js
const df = require('@keltharan/df');

(async () => {
	console.log(await df());
	/*
	[
		{
			filesystem: '/dev/disk1',
			size: 499046809600,
			used: 443222245376,
			available: 55562420224,
			capacity: 0.89,
			mountpoint: '/'
		},
		…
	]
	*/

	console.log(await df.fs('/dev/disk1'));
	/*
	{
		filesystem: '/dev/disk1',
		…
	}
	*/

	console.log(await df.file(__dirname));
	/*
	{
		filesystem: '/dev/disk1',
		…
	}
	*/
})();
```


## API

### df(args?)
args: overrules -k. can be used to change blocksize
Returns a `Promise<Object[]>` with a list of space info objects for each filesystem.

### df.fs(path)

Returns a `Promise<Object>` with the space info for the given filesystem path.

- `filesystem` - Name of the filesystem.
- `size` - Total size in bytes.
- `used` - Used size in bytes.
- `available` - Available size in bytes.
- `capacity` - Capacity as a float from `0` to `1`.
- `mountpoint` - Disk mount location.

#### path

Type: `string`

Path to a [filesystem device file](https://en.wikipedia.org/wiki/Device_file). Example: `'/dev/disk1'`.

### df.file(path)

Returns a `Promise<Object>` with the space info for the filesystem the given file is part of.

#### path

Type: `string`

Path to a file on the filesystem to get the space info for.


## License(origin)
MIT © [Sindre Sorhus](https://sindresorhus.com)
npm package: @keltroth/config
Description: Configuration loader
Author: Django Janny
Latest version: 0.1.1

# @keltroth/config

Configuration loader

## How to use

Install

```bash
npm install --save @keltroth/config
```

Create a `config.json` file :

```json
{
  "application": {
    "port": 8080
  }
}
```


## Override value with env

To enable 12 factor app way of overriding config :

```dotenv
APPLICATION_PORT=9090
```

Use configuration value :

```javascript
import {config} from '@keltroth/config';
console.log(config.application.port);
```

Update configuration value :

```javascript
config.application.port=8080;
config.save();
```
npm package: @keltroth/kanban
Description: Kanban is an helper to build kanban boards
Author: Django Janny
Latest version: 1.1.0

# Kanban

Kanban is an helper to build kanban boards.

## Example

```html
<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="UTF-8" />
    <meta http-equiv="X-UA-Compatible" content="IE=edge" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <title>Kanban POC</title>
    <link rel="stylesheet" href="styles.css" />
    <script defer type="module">
      import {Kanban} from './kanban.js';
      const k = new Kanban({selector: '#kanban'});
      k.on('kanban:moved', console.log);
    </script>
  </head>
  <body>
    <section class="kanban" id="kanban">
      <article class="kanban_column" data-columnid="0">
        <header class="column--title">Backlog</header>
        <main class="column--tasks js-kanban-droppable" data-accepts="doing;done" data-status="backlog">
          <article class="kanban--task js-kanban-draggable" id="task-3">Task 3</article>
          <article class="kanban--task js-kanban-draggable" id="task-2">Task 2</article>
          <article class="kanban--task js-kanban-draggable" id="task-6">Task 6</article>
          <article class="kanban--task js-kanban-draggable" id="task-8">Task 8</article>
        </main>
      </article>
      <article class="kanban_column" data-columnid="1">
        <header class="column--title">Doing</header>
        <main class="column--tasks js-kanban-droppable" data-accepts="backlog;done" data-status="doing">
          <article class="kanban--task js-kanban-draggable" id="task-5">Task 5</article>
          <article class="kanban--task js-kanban-draggable" id="task-1">Task 1</article>
          <article class="kanban--task js-kanban-draggable" id="task-9">Task 9</article>
        </main>
      </article>
      <article class="kanban_column" data-columnid="2">
        <header class="column--title">Done</header>
        <main class="column--tasks js-kanban-droppable" data-accepts="doing" data-status="done">
          <article class="kanban--task js-kanban-draggable" id="task-15">Task 15</article>
          <article class="kanban--task js-kanban-draggable" id="task-11">Task 11</article>
          <article class="kanban--task js-kanban-draggable" id="task-19">Task 19</article>
        </main>
      </article>
    </section>  
  </body>
</html>
```
npm package: @kelv/hexa-to-rgba
Description: A simple package, written in Typescript, that allows you to convert hex(a) strings to rgba strings.
Author: Kelv
Latest version: 1.0.0

# Hexa-to-rgba

A simple package, written in Typescript, that allows you to convert hex(a) strings to rgba strings.


## Installation 

Npm
```bash
npm i -D hexa-to-rgba
```
Yarn
```bash
yarn add -D hexa-to-rgba
```
## Usage / Examples

```javascript
import { convertHexToRgba } from 'hexa-to-rgba';
// or
const convertHexToRgba = require('hexa-to-rgba').convertHexToRgba;

const white = convertHexToRgba('#fff');
const pink = convertHexToRgba('FFC0CB');
const halfOpaquePink = convertHexToRgba('#ffc0cb80');
const halfOpaquePink = convertHexToRgba('#ffc0cb', 0.5);
```

  
## Acknowledgements
 - Special thanks to Adrien Rault for helping me through this.
npm package: @kelvdra/scraper
Description: A simple scraper by kelvdra.
Author: kelvdra
Latest version: 1.0.43-rc.4

<h1 align="center">🚀 Simpel Scrape By Kelvdra</h1>

<p align="center">
  <strong>🔗 Powerful, Sleek, and Simple Media Downloader API by Kelvdra</strong><br>
  ✨ Auto-updating system on error fixes — stay tuned for the latest features!
</p>

<p align="center">
  <img src="https://files.catbox.moe/gxgtrz.jpg" alt="Banner" width="70%">
</p>

---

## ⚙️ Installation

Install via npm:

```bash
npm install @kelvdra/scraper
```

Import in your project:

```javascript
import { ytmp3, ytmp4, search, ttdl, playmp3, playmp4, pindl } from ('@kelvdra/scraper');
or 
import { list } from "@kelvdra/scraper"
to show all features
```

---

## 📦 Available Qualities

```javascript
const audio = [mp3, opus, m4a, webm];
const video = [360, 480 720, 1080];
```

---

## 📁 Features & Usage

### 🎧 YouTube Audio Downloader

```javascript
ytmp3('https://youtu.be/VIDEO_ID', 'mp3').then(console.log);
```

> Default quality: `mp3`

---

### 📹 YouTube Video Downloader

```javascript
ytmp4('https://youtu.be/VIDEO_ID', '360').then(console.log);
```

> Available quality: `360p` - `1080p`

---

### 🔍 YouTube Search

```javascript
search('lofi chill mix').then(console.log);
```

> Returns rich metadata and video suggestions.

---

### 🎵 PlayMP3 & PlayMP4

```javascript
playmp3('lagu galau').then(console.log);
playmp4('video lucu').then(console.log);
```

---

### 📲 TikTok Downloader

```javascript
ttdl('https://www.tiktok.com/@username/video/1234567890').then(console.log);
```

> Outputs video, audio, and thumbnail URLs.

---

### 📌 Pinterest Media Downloader

```javascript
pindl('https://pin.it/63p8EvKYl').then(console.log);
```

> Supports both images and videos.

---

## 🧠 Documentation

📚 Full docs: [kelvdra scraper docs](https://skyzoo92.github.io/Scraper/)

---

## 🤝 Stay Connected

- 📡 Channel: [Join Kelvdra System](https://whatsapp.com/channel/0029VadrgqYKbYMHyMERXt0e)  
- 📞 Contact: [Telegram](t.me/draa82)

---

## 🧑‍💻 Author & License

**Kelvdra**  
📜 License: [MIT](./LICENSE)

---

<p align="center">
  <em>Powered by <strong>Kelvdra System</strong> • Fast ⚡ Simple ⚙️ Efficient 🧠</em>
</p>
npm package: @kelvin.edosa/electron-drag
Description: Window dragging for electron applications
Author: Kelvin Edosa
Latest version: 2.0.0

# electron-drag

Improved window dragging for `Electron` applications.

Frameless windows can be dragged using the [-webkit-app-region][region] css property, but this disables all regular dom events and user interactions with the affected element, which makes it hard to emulate a native-like title bar in the application, as it's not possible to capture double clicks for maximizing the window.

A workaround is to use a pure javascript solution, but dragging only works well when moving the mouse in less than normal speed, else the mouse pointer will move outside the window area and no events will be received by the dom.

This module uses [osx-mouse][osx] or [win-mouse][win] modules for tracking the mouse position on the entire screen, and thereby enabling consistent window dragging, while the affected element is still able to receive dom events.

# Build

The module needs to be built with the correct `Electron` headers. See the [guide for using native Node modules with Electron][native] for more information.

Versions of this library above version 2.0.0 require `Electron` which support `Node.js` version 9 and above.

# Usage

	npm install electron-drag

Require the module in an `Electron` web page.

```javascript
var drag = require('electron-drag')

// Pass a query selector or a dom element to the function.
// Dragging the element will drag the whole window.
var clear = drag('#element')

// Call the returned function to make the element undraggable again.
clear()
```

The module only works on OS X and Windows, but doesn't fail when installed on a non-supported platform.

```javascript
// Fallback to using -webkit-app-region property.
if (!drag.supported) {
	document.querySelector('#element').style['-webkit-app-region'] = 'drag'
}
```

[region]: https://github.com/atom/electron/blob/master/docs/api/frameless-window.md#draggable-region
[osx]: https://github.com/kapetan/osx-mouse
[win]: https://github.com/kapetan/win-mouse
[native]: https://github.com/atom/electron/blob/master/docs/tutorial/using-native-node-modules.md
npm package: @kelvin.edosa/win-mouse
Description: Mouse tracking for Windows
Latest version: 2.0.3

# win-mouse

[![Build status](https://ci.appveyor.com/api/projects/status/wj9wy01q1ufhmfns?svg=true)](https://ci.appveyor.com/project/kapetan/win-mouse)

Mouse tracking for Windows. Receive the screen position of various mouse events. The events are also emitted while another application is in the foreground.

Versions of this library prior to version 2.0.0 also run with Node.js version 9 and below. Version 2.0.0 and above are context-aware.

	npm install win-mouse

# Usage

The module returns an event emitter instance.

```javascript
var mouse = require('win-mouse')()

mouse.on('move', function(x, y) {
	console.log(x, y)
})
```

The program will not terminate as long as a mouse listener is active. To allow the program to exit, either call `mouse.unref` (works as `unref`/`ref` on a TCP server) or `mouse.destroy()`.

The events emitted are: `move`, `left-down`, `left-up`, `left-drag`, `right-up`, `right-down` and `right-drag`. For each event the screen coordinates are passed to the handler function.
npm package: @kelvinbsbluesilo/react-filerobot-image-editor
Description: React component version of filerobot image editor (FIE).
Author: Scaleflex
Latest version: 4.8.19

# react-filerobot-image-editor

React component version of filerobot image editor (FIE).

Visit [main README.md](https://github.com/scaleflex/filerobot-image-editor#readme) for docs.
npm package: @kelvinjhu/lexiang-search
Description: 乐享知识库AI问答MCP服务器
Latest version: 1.0.4

# Lexiang Search MCP Server

[![npm version](https://img.shields.io/npm/v/@kelvinjhu/lexiang-search.svg)](https://www.npmjs.com/package/@kelvinjhu/lexiang-search)
[![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)

这是一个基于 [Model Context Protocol (MCP)](https://modelcontextprotocol.io/) 的服务器，允许 LLM (如 Claude) 直接访问腾讯乐享 (Lexiang) 知识库，进行智能问答和知识检索。

## ✨ 功能特性

*   **全站知识检索**: 支持对乐享全站、指定知识库 (Space) 或团队 (Team) 进行搜索。
*   **智能问答**: 基于乐享 AI 引擎，提供精准的问答服务。
*   **流式响应**: 支持流式 (Streaming) 输出，实时反馈思考过程和答案。
*   **多轮对话**: 支持 Session 管理，保持上下文连贯。
*   **灵活配置**: 支持通过环境变量配置默认模型 (QA Mode) 和超时时间。
*   **安全可靠**: App Key/Secret 通过环境变量配置，不暴露给 LLM。

## 📦 安装

```bash
npm install -g @kelvinjhu/lexiang-search
```

或者直接使用 `npx`:

```bash
npx -y @kelvinjhu/lexiang-search
```

## 🚀 配置 (Claude Desktop)

在您的 `claude_desktop_config.json` 文件中添加以下配置：

**macOS**: `~/Library/Application Support/Claude/claude_desktop_config.json`  
**Windows**: `%APPDATA%\Claude\claude_desktop_config.json`

```json
{
  "mcpServers": {
    "lexiang": {
      "command": "npx",
      "args": ["-y", "@kelvinjhu/lexiang-search"],
      "env": {
        "LEXIANG_APP_KEY": "您的乐享AppKey",
        "LEXIANG_APP_SECRET": "您的乐享AppSecret",
        "LEXIANG_TIMEOUT": "120000",
        "LEXIANG_QA_MODE": "reasoning",
        "LOG_LEVEL": "INFO"
      }
    }
  }
}
```

> **注意**: 请确保替换 `LEXIANG_APP_KEY` 和 `LEXIANG_APP_SECRET` 为您真实的凭证。

## 🛠️ 使用指南

配置完成后，重启 Claude Desktop。您可以在对话中直接使用自然语言调用工具：

*   **全站搜索**: "乐享里关于‘报销流程’的规定是什么？"
*   **指定范围搜索**: "在知识库 ID 为 123456 中搜索‘健康评估算法’。"
*   **多轮对话**: "接上一个问题，那具体的计算公式是怎样的？"

## 🔧 开发与调试

### 本地构建

```bash
# 安装依赖
npm install

# 构建
npm run build

# 运行
node dist/cli.js
```

### 环境变量

| 变量名 | 说明 | 必填 | 默认值 |
|Data | Description | Required | Default |
|---|---|---|---|
| `LEXIANG_APP_KEY` | 乐享应用 Key | 是 | - |
| `LEXIANG_APP_SECRET` | 乐享应用 Secret | 是 | - |
| `LEXIANG_TIMEOUT` | 请求超时时间 (毫秒) | 否 | 60000 (60秒) |
| `LEXIANG_QA_MODE` | 默认问答模式 (normal, reasoning, research 等) | 否 | normal |
| `LOG_LEVEL` | 日志级别 (DEBUG, INFO, WARN, ERROR) | 否 | INFO |

## 📄 License

MIT