open-index/open-npm huggingface dataset:
npm package: @lettopia/querymen
Description: Querystring parser middleware for MongoDB, Express and Nodejs
Author: Diego Haz
Latest version: 2.1.3-1

# Querymen

> Querystring parser middleware for MongoDB, Express and Nodejs

## Install

```sh
npm install --save https://github.com/wesias7/querymen.git#master
```

## Advanced Examples

```
const querySchema = new QuerymenSchema({
  keywords: { search: true },
  joinedPlatform: { type: String, paths: ['joined'], elementMatch: 'platform' },
  joinedGroup: { type: String, paths: ['joined'], elementMatch: 'group' },
  joinedGrade: { type: String, paths: ['joined'], elementMatch: 'grade' },
  createdAtDate: { type: Date, paths: ['createdAt'], duration: 'date' },
  status: status.type,
  isAdult: isAdult.type,
  activatedToEmail: activatedToEmail.type,
  activatedToMobile: activatedToMobile.type,
  activatedToIdentify: activatedToIdentify.type,
  activatedToBankAccount: activatedToBankAccount.type,
  allowMailing: allowMailing.type,
  allowSms: allowSms.type,
  page: { max: 100000 },
  limit: { max: 100000 }
})
querySchema.parser('search', (search, value, path, operator) => {
  if (!value) { return value }
  const regValue = new RegExp(value, 'ig')
  if (search) {
    if (value * 1 >= 0) {
      value = { $or: [{ mobile: regValue }, { accountNo: value * 1 }] }
    } else {
      value = { $or: [{ email: regValue }, { name: regValue }, { realName: regValue }, { mobile: regValue }, { accountId: regValue }] }
    }
  }
  return value
})
querySchema.parser('elementMatch', (elementMatch, value, path, operator) => {
  if (!value) { return value }
  if (elementMatch) {
    value = { [path]: { $elemMatch: { [elementMatch]: value } } }
  }
  return value
})
querySchema.parser('duration', (duration, value, path, operator) => {
  if (!value) { return value }
  if (duration === 'date') {
    value = { [path]: { $gte: new Date(value).setHours(0, 0, 0, 0), $lte: new Date(value).setHours(23, 59, 59, 999) } }
  }
  return value
})
router.get('/',
  // token({ required: true, roles: ['admin'] }),
  query(querySchema),
  index)
  
 ```
npm package: @letumfalx/bun-serve-socketio
Description: `@letumfalx/bun-serve-socketio` is a lightweight wrapper that adds [Socket.IO](https://socket.io/) server functionality to your existing [`Bun.serve`](https://bun.sh/docs/runtime/http/server) options. It leverages [`@socket.io/bun-engine`](https://www.npm
Author: letum
Latest version: 0.0.1

# @letumfalx/bun-serve-socketio

`@letumfalx/bun-serve-socketio` is a lightweight wrapper that adds [Socket.IO](https://socket.io/) server functionality to your existing [`Bun.serve`](https://bun.sh/docs/runtime/http/server) options. It leverages [`@socket.io/bun-engine`](https://www.npmjs.com/package/@socket.io/bun-engine) to provide real-time, bidirectional communication capabilities in Bun-powered HTTP servers.

## Features

- Seamlessly integrates Socket.IO with Bun's native HTTP server.
- Simple API: wrap your existing `bun.serve` options to enable WebSocket support.
- Powered by the official `@socket.io/bun-engine`.

## Installation

```sh
bun add socket.io @socket.io/bun-engine @letumfalx/bun-serve-socketio
```

## Usage

```js
import { withSocketIO } from "@letumfalx/bun-serve-socketio";

// Single namespace example
Bun.serve(
  withSocketIO({
    register: (socket, io) => {
      socket.on("message", (data) => socket.emit("response", data));
    },
    socketIO: {
      maxHttpBufferSize: 1024,
    }
  })({
    fetch: () => new Response(null, { status: 404 }),
  })
);

// Multiple namespaces example
Bun.serve(
  withSocketIO({
    register: {
      '/chat': (socket, io) => { ... },
      '/notifications': (socket, io) => { ... }
    },
    socketIO: {
      maxHttpBufferSize: 1024,
    }
  })({
    fetch: () => new Response(null, { status: 404 }),
  })
);
```

## License

MIT
npm package: @letumfalx/bun-serve-static
Description: A middleware for Bun.serve() that adds static file serving capabilities to your server configuration.
Author: letum
Latest version: 0.0.1

# @letumfalx/bun-serve-static

A middleware for Bun.serve() that adds static file serving capabilities to your server configuration.

## Features

- 🚀 Middleware for Bun.serve() to add static file serving
- 📁 Serves files from a configurable local directory
- ⚡ Minimal dependencies and easy integration
- 🔧 Simple, flexible configuration options

## Installation

```bash
bun add @letumfalx/bun-serve-static
```

## Usage

```ts
import withServeStatic from "@letumfalx/bun-serve-static";

Bun.serve(
  withServeStatic({ pathPrefix: "/static/", publicDirectory: './dist' })({
    fetch: () => new Response(null, { status: 404 });
  })
);
```

## Options

### `publicDirectory` (_Optional_)

> **Type:** `string`
>
> **Default:** `${process.cwd()}/public`

The local path where static files are served from. Can be absolute or relative to the current working directory.

### `pathPrefix` (_Optional_)

> **Type:** `string`
>
> **Default:** `""`

The path prefix for static file serving. Use this if you need to separate the static part of your app using a path prefix. For example, `/static` or `/assets/`. Automatically normalized to start and end with `/`.

## License

MIT
npm package: @letumfalx/phaser-plugin-debug
Description: A phaser plugin that adds a debug function to your game instance.
Author: letum
Latest version: 1.0.0

# @letumfalx/phaser-plugin-debug

A [Phaser](https://phaser.io/) plugin that integrates the [debug](https://www.npmjs.com/package/debug) utility into your game instance.

## Installation

```sh
# npm
npm install phaser debug @letumfalx/phaser-plugin-debug

# yarn
yarn add phaser debug @letumfalx/phaser-plugin-debug

# bun
bun add phaser debug @letumfalx/phaser-plugin-debug
```

## Usage

### Global Level

Use `DebugPlugin` to create a global `debug.Debugger` instance:

```ts
import { DebugPlugin } from "@letumfalx/phaser-plugin-debug";
import debug from "debug";
import Phaser from "phaser";

new Phaser.Game({
  plugins: {
    global: [
      {
        key: "DebugPlugin",
        plugin: DebugPlugin,
        data: {
          // Pass a namespace string to create a debug.Debugger instance
          namespace: "namespace",
          // Or pass an existing debug.Debugger instance
          namespace: debug("namespace"),
        },
        mapping: "debug",
      },
    ],
  },
  scene: [MainScene],
});
```

In your scene:

```ts
class MainScene extends Phaser.Scene {
  constructor() {
    super("MainScene");
  }

  create() {
    this.debug.log("this is the main scene");
    const sceneLogger = this.debug.log.extend(this.scene.key);
  }
}
```

To enable TypeScript support, add this declaration:

```ts
// global.d.ts
import { DebugPlugin } from "@letumfalx/phaser-plugin-debug";

declare module "phaser" {
  interface Scene {
    debug: DebugPlugin;
  }
}
```

### Scene Level

Use `SceneDebugPlugin` for scene-specific instances. It automatically extends the global `DebugPlugin` with the namespace `scene:${sceneKey}`, or creates a new one if unavailable:

```ts
import { SceneDebugPlugin } from "@letumfalx/phaser-plugin-debug";
import Phaser from "phaser";

new Phaser.Game({
  plugins: {
    scene: [
      {
        key: "SceneDebugPlugin",
        plugin: SceneDebugPlugin,
        mapping: "debug",
      },
    ],
  },
  scene: [MainScene],
});
```

**Note:** When using both plugins with `mapping`, map them to different keys to avoid conflicts.

## License

MIT
npm package: @letx.be/react
Description: Letx.be plugin for ReactJS
Author: letxbe-react
Latest version: 0.0.5

# Letx.be React

Letx.be provides simple CMS for all modern websites. This repository helps ReactJS developers to embed Letx.be in their web apps.

## Getting Started

Follow the same instructions for development and production environment.

### Prerequisites

Install the @letx.be/react package 

```
npm install @letx.be/react --save
```

### Installing

A step by step series of examples that tell you how to Letx.be running. First, signup to Letx.be ( https://app.letx.be/onboard )

Initialize the Letx.be scripts using the below code

```
import LetXBe from '@letx.be/react';
let LxB = LetXBe("YOUR_API_KEY", { live: true }); //use {live:true} if you want to update your content in real-time 
```

You can get "YOUR_API_KEY" from https://app.letx.be/setup after signing in

Now create a variable using "Create Variable" button after login in. Then copy the shortcode. Example below 
```
<LxB id="1adxslXBi9GP1oPv2pGB" xname="Your Sample Content" />
```

Finally paste the shortcode inside your your code. The final code should look like the one below.

```
import React, { Component } from 'react';
import LetXBe from '@letx.be/react';
let LxB = LetXBe("YOUR_API_KEY", { live: true });

class App extends Component {
  render() {
    return (
      <div className="App">

        <h1>Your example Heading</h1>

        <LxB id="1adxslXBi9GP1oPv2pGB" xname="Your Sample Content" />

      </div>
    );
  }
}

export default App;

```

## License

This project is licensed under the MIT License - see the [LICENSE.md](LICENSE.md) file for details
npm package: @letzai/n8n-nodes-letzai
Description: A collection of custom n8n nodes for integrating with LetzAI, enabling image creation and retrieval using LetzAI's API.
Author: LetzAI
Latest version: 0.1.0

# n8n-nodes-letzai

This is an n8n community node. It lets you use LetzAI in your n8n workflows.

[LetzAI](https://letz.ai) is an image generation platform that allows users to create images using AI. With this integration, you can generate images by providing prompts and also retrieve previously generated images using your API key.

[n8n](https://n8n.io/) is a [fair-code licensed](https://docs.n8n.io/reference/license/) workflow automation platform.

[Installation](#installation)  
[Operations](#operations)  
[Credentials](#credentials) <!-- delete if no auth needed -->  
[Compatibility](#compatibility)  
[Usage](#usage) <!-- delete if not using this section -->  
[Resources](#resources)

## Installation

Follow the [installation guide](https://docs.n8n.io/integrations/community-nodes/installation/) in the n8n community nodes documentation.

## Operations

Operations Supported by LetzAI Node:

1. **Get Image** – Retrieve previously generated images from the LetzAI platform using the image ID.
2. **Create Image** – Generate a new image using a custom prompt through the LetzAI API.

## Credentials

To use the LetzAI service, you will need to authenticate yourself with an API key.

1. **Create an Account**: Sign up on [LetzAI](https://letz.ai/).
2. **Subscription**: After signing up, go to [LetzAI Subscription](https://letz.ai/subscription) and choose a subscription plan.
3. **Get Your API Key**: Once subscribed, you'll find your API key on the [LetzAI Subscription page](https://letz.ai/subscription).

You will authenticate by passing the API key in the credentials apiKey input.

## Compatibility

- **Minimum n8n version**: Unknown
- **Tested against**: 1.84.1
- **Known issues**: No known incompatibility issues with version 1.84.1.

## Usage

- To use this node, search for "Create Image LetzAI" in the n8n nodes and add it to your workflow. This node will generate an image based on the provided prompt.
  ![prompt Image](promptImage.png)
- After generating the image, use a **Wait node** in your workflow:
  - **Turbo Mode**: Wait for **1 minute**.
  - **Other Modes**: Wait for **2-4 minutes**.  
    This step ensures that LetzAI has enough time to process the image generation.
- Once the wait time is over, add the **Get Image LetzAI** node to your workflow. In the "Image ID" field, use the ID from the "Create Image LetzAI" node’s output. This will fetch the generated image based on the ID.
  ![get image id](getImage.png)

![example of a workflow](workflowExample.png)

For a step-by-step guide, refer to the [Try it out](https://docs.n8n.io/try-it-out/) documentation to help you get started with n8n workflows.

## Resources

- [n8n community nodes documentation](https://docs.n8n.io/integrations/community-nodes/)
- [LetzAI API Documentation](https://letz.ai/docs/api)
npm package: @letznav/unique-names-generator
Description: Generate unique and memorable names
Author: info@letznav.com
Latest version: 1.0.16

# Unique Names Generator

> More than 28,000,000 name combinations

[![](https://img.shields.io/npm/v/unique-names-generator.svg)](https://npmjs.org/package/unique-names-generator)
[![](https://img.shields.io/npm/l/unique-names-generator.svg)](https://github.com/andreasonny83/unique-names-generator/blob/master/LICENSE)
[![](https://img.shields.io/npm/dt/unique-names-generator.svg)](https://npmjs.org/package/unique-names-generator)

[![NPM](https://nodei.co/npm/unique-names-generator.png)](https://npmjs.org/package/unique-names-generator)

```sh
$ npm i @letznav/unique-names-generator
```

```js
const uniqueNamesGenerator = require('@letznav/unique-names-generator');

const randomName = uniqueNamesGenerator.generate(); // big_red_donkey

const randomName2 = uniqueNamesGenerator.generate('-'); // big-red-donkey
```
npm package: @leukeleu/eslint-config
Description: Reusable Eslint config for Leukeleu projects
Latest version: 4.0.5

# Leukeleu ESLint configuration

ESLint configuration for Leukeleu projects. To be used in tandem with Prettier.

## Installing this package

If you already had ESLint installed in your project you can delete this first with `npm uninstall eslint`.
There may also be other ESLint packages (plugins and configs) you want to remove.

Then install this package as a development dependency `npm i -D @leukeleu/eslint-config`.

## Adding the config

In the configs folder you can find all the ESLint config files to choose from.
Select the config you need and add it to your `eslint.config.mjs`.

### Javascript

```js
import eslintConfig from '@leukeleu/eslint-config/configs/javascript'

export default eslintConfig
```

### Typescript

```js
import eslintConfig from '@leukeleu/eslint-config/configs/typescript'

export default eslintConfig
```

### Vue 2

```js
import eslintConfig from '@leukeleu/eslint-config/configs/vue2'

export default eslintConfig
```

### Vue 3

```js
import eslintConfig from '@leukeleu/eslint-config/configs/vue3'

export default eslintConfig
```

### Nuxt 3

Nuxt has its own ESLint module that configures ESLint based on the Nuxt project configuration. This generates a config
file that knows about the Nuxt project structure, layers, auto-imports, etc.

Refer to the [Nuxt ESLint module documentation](https://eslint.nuxt.com/packages/module) for instructions on how to
add and configure this Nuxt module.

After adding the Nuxt module, you can augment the generated ESLint config with the Leukeleu config:

```js
import withNuxt from './.nuxt/eslint.config.mjs'

import eslintConfig from '@leukeleu/eslint-config/configs/nuxt3'

export default withNuxt(...eslintConfig)
```

## Add script commands to package.json

To run ESLint on your code, add the following script to your `package.json`:

```json
{
  "scripts": {
    "lint:js": "eslint --cache",
    "lintfix:js": "npm run lint:js -- --fix"
  }
}
```

## Running the check

Now you can run the ESLint check using `npm run lint:js` or `npm run lintfix:js` to auto fix.

## Extending config and ignoring files

Even though the goal is to standardize the ESLint config across all projects, it is possible to extend or change the
config if needed. This is especially useful if you want to ignore certain files or enable additional rules.

```js
import eslintConfig from '@leukeleu/eslint-config/configs/javascript'

export default [
  ...eslintConfig,
  {
    rules: {
      'for-direction': 'warn',
    },
  },
  {
    ignores: ['dist'],
  },
]
```

## Contributing

To learn how to local test and publish this package, please refer to the instructions in the `CONTRIBUTORS.md` file.
npm package: @leukeleu/prettier-config
Description: Reusable Prettier config for Leukeleu projects
Latest version: 3.3.0

# Leukeleu Prettier configuration

## Installing this package

If you already had Prettier installed in your project you can delete this first with `npm uninstall prettier`.

Then install this package as a development dependency `npm i -D @leukeleu/prettier-config`.

## Adding the config

In your `.prettierrc.js` add:

```js
module.exports = require('@leukeleu/prettier-config')
```

## Add script commands to package.json

To run Prettier on your code, add the following script to your package.json:

```js
"scripts": {
  "prettier": "prettier . --cache",
  "lint:prettier": "npm run prettier -- --check",
  "lintfix:prettier": "npm run prettier -- --write",
}
```

## Adding an ignore file

By default prettier will lint [specific filetypes](https://prettier.io/docs/en/index.html). If you want to ignore files you can [create a file named `.prettierignore`](https://prettier.io/docs/en/ignore.html) in the root and add ignored file(types) to it.

## Running the check

Now you can run the Prettier check using `npm run lint:prettier` or `npm run lintfix:prettier` to auto fix.

## Extending/ changing config

This is not recommended as the goal is have similar settings in all projects, but if for some reason you need to add or change the config it's possible. The config is in JavaScript, so you can make use of the spread operator to extend the config.

```js
module.exports = {
  ...require('@leukeleu/prettier-config'),
  semi: true,
}
```

## Contributing

To learn how to local test and publish this package, please refer to the instructions in the `CONTRIBUTORS.md` file.
npm package: @leukeleu/stylelint-config
Description: Reusable Stylelint config for Leukeleu projects
Latest version: 3.4.0

# Leukeleu Stylelint configuration

## Installing this package

If you already had Stylelint installed in your project you can delete this first with `npm uninstall stylelint`. Also look for plugins to uninstall like `stylelint-config-standard` or `stylelint-config-prettier`

Then install this package as a development dependency `npm i -D @leukeleu/stylelint-config`.

## Adding the config

In your `stylelint.config.js` add:

```js
module.exports = {
  extends: '@leukeleu/stylelint-config',
}
```

## Add script commands to package.json

For example, to lint all .pcss files inside the /pages/styles/ directory:

```
"scripts": {
  "lint:stylelint": "stylelint './pages/styles/*.pcss'",
  "lintfix:stylelint": "npm run lint:stylelint -- --fix"
}
```

## Adding an ignore file

If you don't want to lint certain files you can create a file named .stylelintignore in the root and add ignored file(types) to it.

## Running the check

You can now run stylelint check by calling `npm run lint:stylelint` or auto-fix by calling `npm run lintfix:stylelint`

## Extending/ changing config

This is not recommended as the goal is have similar settings in all projects, but if for some reason you need to add or change the config it's possible. The config is in JavaScript, so you can make use of the spread operator to extend the config.

```js
module.exports = {
  extends: '@leukeleu/stylelint-config',
  rules: {
    'selector-class-pattern': null,
  },
}
```

## Contributing

To learn how to local test and publish this package, please refer to the instructions in the `CONTRIBUTORS.md` file.
npm package: @leulsege/mcp-server
Description: MCP Server for TellMySocials - Post to social media from any AI client
Latest version: 1.0.1

# TellMySocials MCP Server

This MCP (Model Context Protocol) server allows any AI client (like Claude Desktop, Cline, or other MCP-compatible clients) to post and schedule social media content through TellMySocials.

## Features

- **create_post** - Create and schedule posts to 13+ social media platforms
- **list_connected_accounts** - View all connected social media accounts
- **list_scheduled_posts** - View upcoming scheduled posts
- **delete_post** - Delete a scheduled post

## Supported Platforms

- Facebook
- Instagram
- Twitter/X
- LinkedIn
- TikTok
- YouTube
- Pinterest
- Threads
- Bluesky
- Mastodon
- Reddit
- Tumblr
- Substack

## Installation

### Prerequisites

1. A TellMySocials account with connected social media accounts
2. An API token from TellMySocials (get it from Settings > API)

### For Claude Desktop

Add this to your Claude Desktop config file:

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

```json
{
  "mcpServers": {
    "leulsege": {
      "command": "npx",
      "args": ["tsx", "/path/to/mcp-server/src/index.ts"],
      "env": {
        "TELLMYSOCIALS_API_TOKEN": "your-api-token-here",
        "TELLMYSOCIALS_API_URL": "https://04d297d6-d08c-4ba7-a131-762b84ddbad1-00-3r12ccpri0pk2.picard.replit.dev"
      }
    }
  }
}
```

### For other MCP clients

Set these environment variables:

```bash
export TELLMYSOCIALS_API_TOKEN="your-api-token-here"
export TELLMYSOCIALS_API_URL="https://04d297d6-d08c-4ba7-a131-762b84ddbad1-00-3r12ccpri0pk2.picard.replit.dev"
```

Then run:

```bash
npx tsx /path/to/mcp-server/src/index.ts
```

## Usage Examples

Once configured, you can ask your AI assistant things like:

- "Post 'Hello world!' to my Twitter and LinkedIn accounts"
- "Schedule a post for tomorrow at 10am saying 'Check out our new product launch!'"
- "Show me my connected social media accounts"
- "List my upcoming scheduled posts"
- "Delete post number 123"

## API Token

Get your API token from TellMySocials:

1. Log in to https://tellmysocials.com
2. Go to Settings > API
3. Create a new API token
4. Copy the token and add it to your MCP config

## Development

```bash
# Install dependencies
npm install

# Run in development mode
npm run dev

# Build for production
npm run build

# Run production build
npm start
```
npm package: @leulsege/mcp-setup
Description: One-command setup for TellMySocials MCP server across all AI clients
Author: TellMySocials
Latest version: 1.0.1

# @leulsege/mcp-setup

One-command setup to connect TellMySocials to any AI assistant.

## Quick Start

```bash
npx @leulsege/mcp-setup
```

That's it! The setup wizard will:

1. Detect which AI clients you have installed
2. Ask for your TellMySocials API token
3. Automatically configure each client
4. Tell you to restart the apps

## Supported AI Clients

| Client             | Status       |
| ------------------ | ------------ |
| Claude Desktop     | ✅ Supported |
| Cursor             | ✅ Supported |
| Windsurf (Codeium) | ✅ Supported |
| VS Code + Cline    | ✅ Supported |
| VS Code + Continue | ✅ Supported |

## Getting Your API Token

1. Go to [TellMySocials](https://tellmysocials.com)
2. Navigate to **Settings** → **API Tokens**
3. Click **Create Token**
4. Copy the token (starts with `tms_`)

## What Gets Configured

The setup adds this to your AI client's config:

```json
{
  "mcpServers": {
    "leulsege": {
      "command": "npx",
      "args": ["-y", "@leulsege/mcp-server"],
      "env": {
        "TELLMYSOCIALS_API_TOKEN": "tms_your_token_here"
      }
    }
  }
}
```

## After Setup

Restart your AI client, then try these commands:

- "Post to Twitter: Hello world!"
- "Show my connected social accounts"
- "Schedule a post for tomorrow at 9am"
- "Check my inbox for new comments"

## Manual Configuration

If your AI client isn't detected, add the config manually:

**Claude Desktop:**

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

**Cursor:**

- `~/.cursor/mcp.json`

**Windsurf:**

- `~/.codeium/windsurf/mcp_config.json`

## Troubleshooting

### "No AI clients detected"

Make sure you've opened the AI client at least once before running setup.

### "Permission denied"

Run with elevated permissions or configure manually.

### Token not working

Verify your token at TellMySocials Settings → API Tokens.

## Support

- Website: https://tellmysocials.com
- Support: https://tellmysocials.com/support

## License

MIT
npm package: @leungkcofficial/weatherapi-mcp
Description: WeatherAPI MCP server forked from @swonixs
Author: swonixs
Latest version: 1.1.1

# WeatherAPI MCP Server

An MCP server that provides current weather and air quality data using WeatherAPI.

## Features

- Get current weather data for any city
- Air quality information (optional)
- Dynamic URI support for weather resources
- Easy integration with n8n, Claude Desktop App, Windsurf IDE,Cursor IDE, and other MCP clients

## Getting Started

### Get WeatherAPI Key

1. Go to [WeatherAPI.com](https://www.weatherapi.com)
2. Sign up for a free account
3. After signing in, go to your dashboard
4. Copy your API key from the "API Keys" section

### MCP Configuration

Add the following configuration to your Windsurf MCP config file:

```json
{
  "mcpServers": {
    "weather": {
      "command": "npx",
      "args": ["-y", "@swonixs/weatherapi-mcp"],
      "env": {
        "WEATHER_API_KEY": "YOUR_API_KEY_HERE"
      }
    }
  }
}
```

Replace `YOUR_API_KEY_HERE` with the API key you obtained from WeatherAPI.com.

### Tools

#### get_weather

Get current weather data for a specified city.

Parameters:
- `location` (string): City name

Example response:
```json
{
  "location": "London",
  "country": "United Kingdom",
  "temp_c": 15.0,
  "condition": "Partly cloudy",
  "humidity": 71,
  "wind_kph": 14.4,
  "air_quality": {
    "co": 230.3,
    "no2": 13.5,
    "o3": 52.9,
    "pm2_5": 8.5,
    "pm10": 12.1,
    "us-epa-index": 1
  }
}
```

### Repository

[WeatherAPI MCP Server](https://github.com/swonixs/weatherapi-mcp)

## License

MIT
npm package: @leva-ui/plugin-bezier
Description: ### Installation
Latest version: 0.10.0

## Leva Bezier

### Installation

```bash
npm i @leva-ui/plugin-bezier
```

### Quick start

```jsx
import { useControls } from 'leva'
import { bezier } from '@leva-ui/plugin-bezier'

function MyComponent() {
  const { curve } = useControls({ curve: bezier() })
  // or
  const { curve } = useControls({ curve: bezier([0.54, 0.05, 0.6, 0.98]) })
  // or
  const { curve } = useControls({ curve: bezier('in-out-quadratic') })
  // or
  const { curve } = useControls({ curve: bezier({ handles: [0.54, 0.05, 0.6, 0.98], graph: false }) })

  // built-in function evaluation
  console.log(curve.evaluate(0.3))

  // inside a css like animation-timing-function
  return <div style={{ animationTimingFunction: value.cssEasing }} />
}
```
npm package: @leva-ui/plugin-dates
Description: ### Installation
Latest version: 0.10.1

## Leva Plot

### Installation

```bash
npm i @leva-ui/plugin-plot
```

### Quick start

```jsx
import { useControls } from 'leva'
import { plot } from '@leva-ui/plugin-plot'

function MyComponent() {
  const { y } = useControls({ y: plot({ expression: 'cos(x)', graph: true, boundsX: [-10, 10], boundsY: [0, 100] }) })
  return y(Math.PI)
}
```
npm package: @leva-ui/plugin-plot
Description: ### Installation
Latest version: 0.10.0

## Leva Plot

### Installation

```bash
npm i @leva-ui/plugin-plot
```

### Quick start

```jsx
import { useControls } from 'leva'
import { plot } from '@leva-ui/plugin-plot'

function MyComponent() {
  const { y } = useControls({ y: plot({ expression: 'cos(x)', graph: true, boundsX: [-10, 10], boundsY: [0, 100] }) })
  return y(Math.PI)
}
```
npm package: @leva-ui/plugin-spring
Description: ### Installation
Latest version: 0.10.0

## Leva Spring

### Installation

```bash
npm i @leva-ui/plugin-spring
```

### Quick start

```jsx
import { useControls } from 'leva'
import { spring } from '@leva-ui/plugin-spring'

function MyComponent() {
  const { mySpring } = useControls({ mySpring: spring({ tension: 100, friction: 30, mass: 1 }) })
  return mySpring.toString()
}
```