open-index/open-npm huggingface dataset:
npm package: @qntnt/dissonance
Description: Plugin system for discord.js
Author: Quentin Topper
Latest version: 1.0.11


## Overview

To build bots with this framework, here's the basic process.

1. Initialize and configure `Dissonance` 
2. Define some `CommandPlugins`
3. Register your `CommandPlugins` with `Dissonance`

## CommandPlugins

`CommandPlugins` are abstract classes that you can extend that provide you with lifecycle methods to simplify command handling. By default, a `CommandPlugin` can handle either message commands or application commands (slash commands).

### Plugin Lifecycle

1. attach
2. start
3. validateCommand
4. **parseArgs (required)**
5. validateArgs
6. **handle (required)**
7. cleanup

## Run the example

Create a new Discord application, set up the bot, and invite it to your testing server. Set the following environment variables.

| Variable | Description |
| - | - |
| `DISCORD_TOKEN` | The bot token |
| `DISCORD_APPLICATION_ID` | The bot application's application id |

```bash
yarn
yarn example
```
npm package: @qnvip/core
Description: [中文文档](./README.zh-CN.md)
Author: qnvip
Latest version: 2.2.12

# @qnvip/core

[中文文档](./README.zh-CN.md)

A modern JavaScript/TypeScript utility library providing commonly used utility functions and practical methods.

## ✨ Features

- 📦 Ready-to-use utility function collection
- 🎯 Full TypeScript support
- 🌲 Tree-shaking friendly
- 📚 Complete type definitions
- 🚀 Lightweight and high-performance

## 📦 Installation

### Using npm

```bash
npm install @qnvip/core
```

### Using pnpm

```bash
pnpm add @qnvip/core
```

### Using yarn

```bash
yarn add @qnvip/core
```

## 🔨 Usage

### ES Module

```javascript
import {} from /* utility functions */ '@qnvip/core'
```

### CommonJS

```javascript
const {
  /* utility functions */
} = require('@qnvip/core')
```

### Import Styles (if needed)

```javascript
import '@qnvip/core/dist/style/index.css'
```

## 📖 Documentation

For detailed API documentation, please visit: **[https://tech.qnvip.com/core/](https://tech.qnvip.com/core/)**

## 🛠️ Development

### Clone the repository

```bash
git clone https://github.com/qnvip-frontend/qnvip-core.git
cd qnvip-core
```

### Install dependencies

```bash
pnpm install
```

### Development mode

```bash
pnpm run serve
```

### Run tests

```bash
pnpm run test
```

### Build

```bash
pnpm run build
```

## 📄 License

[MIT License](./LICENSE)

## 🤝 Contributing

Issues and Pull Requests are welcome!

Before submitting a PR, please ensure:

1. All tests pass
2. Code follows the style guide
3. Appropriate test cases are added
4. Relevant documentation is updated

## 💬 Support

If you have any questions or suggestions, please:

- Submit an [Issue](https://github.com/qnvip-frontend/qnvip-core/issues)
- Visit our [GitHub repository](https://github.com/qnvip-frontend/qnvip-core)

## 📝 Changelog

See [CHANGELOG.md](./CHANGELOG.md) for details.
npm package: @qnx/core-helpers
Description: Collection of core functions
Author: Yatendra Kushwaha
Latest version: 0.8.0

# @qnx/core-helpers

The starter is built on top of Vite 3.x and prepared for writing libraries in TypeScript. It generates a hybrid package - both support for CommonJS and ESM modules.

## Features

- Hybrid support - CommonJS and ESM modules
- IIFE bundle for direct browser support without bundler
- Typings bundle
- ESLint - scripts linter
- Stylelint - styles linter
- Prettier - formatter
- Jest - test framework
npm package: @qnx/interfaces
Description: Collection of core functions
Author: Yatendra Kushwaha
Latest version: 0.8.0

# @qnx/core-helpers

The starter is built on top of Vite 3.x and prepared for writing libraries in TypeScript. It generates a hybrid package - both support for CommonJS and ESM modules.

## Features

- Hybrid support - CommonJS and ESM modules
- IIFE bundle for direct browser support without bundler
- Typings bundle
- ESLint - scripts linter
- Stylelint - styles linter
- Prettier - formatter
- Jest - test framework
npm package: @qnx/log
Description: Collection of utilities of console log
Author: Yatendra Kushwaha
Latest version: 0.8.0

# @qnx/log

@qnx/log provides a console logger using the Chalk library for colorful output. It supports different types of messages such as 'info', 'error', 'success', and 'warning', each associated with a specific color.

## Installation

Use the package manager [npm](https://www.npmjs.com/) to install @qnx/log.

```bash
npm install -D @qnx/log
```

You can also use [yarn](https://yarnpkg.com/) & [pnpm](https://pnpm.io/)

```bash
yarn add -D @qnx/log
```

```bash
pnpm install -D @qnx/log
```

#### Peer-Dependencies

@qnx/response is using error instances of @qnx/errors.

```bash
npm install -D chalk
```

## Usage

Import the module and use the consoleLog function to log messages with different types and corresponding colors.

```javascript
import { consoleLog } from '@qnx/log'

// Example usage
consoleLog('This is an informational message', { type: 'info' })
consoleLog('An error occurred!', { type: 'error' })
consoleLog('Operation successful', { type: 'success' })
consoleLog('Warning: Proceed with caution', { type: 'warning' })
```

The consoleLog function takes a string message and an optional configuration object, allowing you to specify the message type. The default type is 'info'.

```javascript
import { consoleLog } from '@qnx/log'

consoleLog('This is an informational message')
```

## Contributing

Pull requests are welcome. For major changes, please open an issue first
to discuss what you would like to change.

Please make sure to update tests as appropriate.

## License

[MIT License](https://github.com/yatendra121/log/blob/main/LICENSE.md) © 2023-PRESENT [Yatendra Kushwaha](https://github.com/yatendra121)
npm package: @qnx/message
Description: Collection of utilities of message
Author: Yatendra Kushwaha
Latest version: 0.8.0

# message

This library was generated with [Nx](https://nx.dev).

## Building

Run `nx build message` to build the library.

## Running unit tests

Run `nx test message` to execute the unit tests via [Jest](https://jestjs.io).
npm package: @qnx/messages
Description: Collection of messages & message functions 
Author: Yatendra Kushwaha
Latest version: 0.6.0

# messages

This library was generated with [Nx](https://nx.dev).

## Building

Run `nx build messages` to build the library.

## Running unit tests

Run `nx test messages` to execute the unit tests via [Jest](https://jestjs.io).
npm package: @qnx/winston
Description: Logger instance for express error response
Author: Yatendra Kushwaha
Latest version: 0.8.0

# @qnx/winston

`@qnx/winston` provides a pre-configured logger instance using the popular [winston](https://www.npmjs.com/package/winston) logging library. It simplifies logging setup by offering a ready-to-use logger with support for console and daily rotated file logs out of the box.

## ✨ Features

- ✅ Pre-configured `winston` logger instance
- 📁 Supports daily rotated log files
- 🧾 Console and file logging formats
- 🛠️ Easy plug-and-play with minimal setup

## 📦 Installation

Install using your preferred package manager:

```bash
# npm
npm install @qnx/winston

# yarn
yarn add @qnx/winston

# pnpm
pnpm install @qnx/winston
```

### Peer Dependencies

This package requires [`winston-daily-rotate-file`](https://www.npmjs.com/package/winston-daily-rotate-file) as a peer dependency for daily file rotation:

```bash
npm install winston winston-daily-rotate-file
```

## 🚀 Usage

### Importing the Logger

```ts
import { logger } from '@qnx/winston'
```

You can now use `logger` throughout your application for consistent logging:

```ts
logger.info('Server started on port 3000')
logger.error('Something went wrong!', { error: err })
logger.debug('User data:', { user })
```

## 📂 Log Output Structure

Logs are output in two formats:

- **Console** – Pretty-printed, colorized output with timestamps
- **File** – JSON format, rotated daily

Example file structure:

```
logs/
├── app-2025-07-28.log
├── app-2025-07-29.log
└── error.log
```

## 🔧 Configuration Details

The `@qnx/winston` logger comes pre-configured with the following transports:

- **Console Transport**: For development visibility
- **Daily Rotate File Transport**: For persistent log storage

Log files are saved in a `logs` directory by default.

You can fork or wrap this library if you want to customize formats, paths, or levels.

## 🧪 Example

```ts
import { logger } from '@qnx/winston'

app.use((req, res, next) => {
  logger.info(`Incoming request: ${req.method} ${req.url}`)
  next()
})

try {
  // Some risky operation
} catch (error) {
  logger.error('Unexpected error', { error })
}
```

## 🤝 Contributing

Pull requests are welcome. For major changes, please open an issue first
to discuss what you would like to change.
Please make sure to update tests as appropriate.

## 📄 License

[MIT License](https://github.com/yatendra121/qnx/blob/main/LICENSE.md) © 2023–PRESENT [Yatendra Kushwaha](https://github.com/yatendra121)
npm package: @qnxg/request
Description: 对小程序Request与Upload的统一封装，并支持洋葱圈中间件模型
Author: wangjq4214
Latest version: 0.0.12
Deprecated: Package no longer supported. Contact Support at https://www.npmjs.com/support for more info.

---
title: request
group:
  title: Request
  path: /request
  order: 1000
---

## @qnxg/request

网络请求库，基于 `@tarojs/taro` 进行封装，api 的封装上，具有 fetch 的与 axios 的特点。为大家提供一个在小程序中统一的 api 调用方式，简化使用；并且提供缓存（待做）、超时（因小程序 api 经常出现问题，所以自己实现了一个方法）、错误处理等常用功能。

![Deploy Doc Site](https://github.com/qnxg/taro-hooks/workflows/Deploy%20Doc%20Site/badge.svg)![Node.js CI](https://github.com/qnxg/taro-hooks/workflows/Node.js%20CI/badge.svg)[![npm version](https://badge.fury.io/js/%40qnxg%2Frequest.svg)](https://badge.fury.io/js/%40qnxg%2Frequest)

---

### 支持的功能

- url 参数自动序列化
- post 数据提交方式简化
- form 提交方式统一封装为 post 请求
- response 返回处理简化
- api 超时支持
- 类 axios 的 request 和 response 拦截器(interceptors)支持
- 统一的错误处理方式
- 类 koa 洋葱机制的 use 中间件机制支持
- 类 axios 的取消请求

### TODO 欢迎 PR

- api 请求缓存支持
- api 支持GBK编码
- 完善测试文件
- 编写demo项目

### 安装

``` shell
# npm
$ npm install @qnxg/request

# or yarn
$ yarn add @qnxg/request
```

### 快速上手

### request APIs

### 代码贡献者

- [@ Derek Wang](https://github.com/wangjq4214)
- [@ qkuns](https://github.com/qkuns)

### 致谢

- [umi-request](https://github.com/umijs/umi-request)
npm package: @qnzl/auth
Description: Authenticate JWT claims with dot-seperated claims, scoping to subject and issuer
Author: Madeline
Latest version: 2.0.1

## @qnzl/auth

Drop-in JWT authentication against specific claims (`todoist.read.all`) for a specific project / subject and issuer, to limit scope of keys

### Installation

```
npm install --save @qnzl/auth
```

### Usage

```javascript
const Auth = require(`@qnzl/auth`)

const jwtPublicKey = `<public key>`

const auth = new Auth(jwtPublicKey)

// JWT has claim of `*`
const jwtToCheck = `eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiaWF0IjoxNTE2MjM5MDIyLCJjbGFpbXMiOlsiKiJdfQ.N9BGQcYOrjGnWXGWQlH9Gi-O_SL6kQrVd5n1QnlMOz0`

const hasClaim = auth.check(jwtToCheck, `todoist:read.*`, {
  issuer: `https://google.com`,
  subject: `watchers`,
})

console.log(`has 'todoist.read' claim: ${hasClaim}`)
```
npm package: @qnzl/lockbox
Description: Local-only version of Vault
Author: Madeline Cameron
Latest version: 0.0.5

## Lockbox

Super, super simple version of [Vault](https://www.hashicorp.com/products/vault/) that doesn't require any setup.

Basically the idea is to make static .profile files pointless and hide things slightly better.

### Installation

`npm install -g @qnzl/lockbox`

### Usage

Keys can be folders (eg: `<top>/<lower>/<more>.../<key>`).

To save:
```bash
lockbox <key> <value>
```

To load:
```bash
lockbox <key>
```

### Config

Unless `lockbox --config` is used to change config file location, `lockbox.conf` will be in $HOME

The available config options are:

- `location` - Absolute path of where you want your Lockbox files stored
- `key` - Absolute path of your RSA key
- `gitRemote` - git-compatiable remote location
npm package: @qobo/banner
Description: Shared Qobo banner component for all generated projects
Author: Qobo
Latest version: 1.0.12

# @qobo/banner

Shared banner component for all Qobo-generated projects. Displays "Made with ❤️ by qobo.dev" with visibility controlled by the backend.

## Installation

```bash
npm install @qobo/banner
```

## Usage

```jsx
import { QoboBanner } from '@qobo/banner';

export default function App() {
  return (
    <>
      <QoboBanner />
      {/* Rest of your app */}
    </>
  );
}
```

## Features

- **Consistent UI**: Same banner styling across all Qobo projects
- **Backend controlled**: Visibility managed via `/api/show-banner` endpoint
- **API Key integrated**: Automatically uses `VITE_API_KEY` from environment
- **Error resilient**: Defaults to visible if API fails
- **Layout shift prevention**: Initializes as visible before API response
- **Responsive**: Works on all screen sizes
- **Navbar positioning**: Sets CSS variable `--qobo-banner-height` (0px when hidden, 50px when visible) for sticky navbar positioning
- **Sticky banner**: Uses sticky positioning so navbar can stick below it

## Navbar Positioning

The banner automatically sets a CSS variable `--qobo-banner-height` on the document root that you can use for sticky navbar positioning:

- When banner is visible: `--qobo-banner-height` is `50px`
- When banner is hidden: `--qobo-banner-height` is `0px`

### Using with Tailwind CSS

For your navbar component, use the CSS variable in your sticky positioning:

```jsx
<nav className="sticky z-[60] bg-white border-b" style={{ top: 'var(--qobo-banner-height, 0px)' }}>
  {/* Navbar content */}
</nav>
```

Or using Tailwind's arbitrary values (requires Tailwind 3.1+):

```jsx
<nav className="sticky z-[60] bg-white border-b" style={{ top: 'var(--qobo-banner-height)' }}>
  {/* Navbar content */}
</nav>
```

This ensures:
- When `showBanner` is `true`: Navbar sticks below the banner (at 50px from top)
- When `showBanner` is `false`: Navbar sticks to the top (at 0px from top)

**Important**: The banner uses `z-index: 50` and sticky positioning. Your navbar should use a higher z-index (e.g., `z-60` or `z-[60]`) to stay visible when scrolling.

## Environment Variables

Required in your `.env` file:

```
VITE_API_BASE_URL=https://api.qobo.dev
VITE_API_KEY=your_api_key_here
```

## License

MIT
npm package: @qobo/deploy
Description: Deploy React/Vite projects to qobo-deployments (S3 + CDN)
Author: QOBO
Latest version: 1.0.5

# @qobo/deploy

Deploy React/Vite projects to qobo-deployments (S3 + CloudFront/Cloudflare).  
Works for both **new projects** (first deploy) and **updates** (redeploying existing projects).

## Requirements

- Node.js 18+
- qobo-deployments service running (S3 + CDN configured)
- API key for qobo-deployments

## Installation

### As a dev dependency (recommended)

```bash
npm install -D @qobo/deploy
```

Add to `package.json` scripts:

```json
{
  "scripts": {
    "deploy": "qobo-deploy"
  }
}
```

### Or use with npx (no install)

```bash
npx @qobo/deploy
```

## Usage

From the project root (where `package.json` is):

```bash
npm run deploy
# or
npx qobo-deploy
```

### Options

| Option       | Description                         |
|--------------|-------------------------------------|
| `--name app` | Override project name (S3 subdomain)|
| `--dry-run`  | Show what would be deployed (no API call) |
| `--help`     | Show help                           |

### Examples

```bash
# Deploy current project (name from package.json)
npm run deploy

# Deploy with custom project name
npx qobo-deploy --name my-app

# Dry run (no API call)
npx qobo-deploy --dry-run
```

## Configuration

### Environment variables

| Variable               | Description                     | Example                       |
|------------------------|---------------------------------|-------------------------------|
| `QOBO_DEPLOY_API_URL`  | qobo-deployments API base URL   | `https://api.qobo.dev`        |
| `QOBO_DEPLOY_API_KEY`  | API key (required)              | `your-secure-api-key`         |
| `API_URL`, `API_KEY`   | Aliases for above               |                               |

### Optional config file

Create `qobo.deploy.json` in the project root:

```json
{
  "projectName": "my-app",
  "apiUrl": "https://api.qobo.dev",
  "apiKey": "your-api-key",
  "framework": "vite",
  "buildCommand": "npm run build",
  "outputDirectory": "dist"
}
```

Or add to `package.json`:

```json
{
  "name": "my-app",
  "qobo": {
    "projectName": "my-app",
    "framework": "vite",
    "outputDirectory": "dist"
  }
}
```

### Project name

- Must be lowercase, numbers, hyphens only
- Default: `package.json` `name` (sanitized)
- Override: `--name` flag or `projectName` in config
- Used as S3 prefix and subdomain: `{projectName}.qobo.dev`

## What happens

1. Collects source files (excludes `node_modules`, `dist`, `.git`, etc.)
2. Sends them to qobo-deployments API
3. qobo-deployments builds and uploads to S3 + invalidates CDN
4. Live URL: `https://{projectName}.qobo.dev`

## Local development

If you're developing this package locally (e.g. from the qobo repo):

```bash
cd qobo-deploy
npm link
cd /path/to/your/project
npm link @qobo/deploy
npm run deploy
```

Or run directly:

```bash
node /path/to/qobo-deploy/src/cli.js
```

## License

MIT
npm package: @qodalis/cli-server-plugin-filesystem
Description: Pluggable file storage plugin for Qodalis CLI server — provides in-memory and OS filesystem providers
Author: Nicolae Lupei
Latest version: 1.0.0-beta.5

# @qodalis/cli-server-plugin-filesystem

Pluggable file storage plugin for [Qodalis CLI Server (Node.js)](https://github.com/qodalis-solutions/cli-server-node). Defines the `IFileStorageProvider` interface and ships two built-in providers: in-memory and OS filesystem.

## Install

```bash
npm install @qodalis/cli-server-plugin-filesystem
```

## Quick Start

```typescript
import { createCliServer } from '@qodalis/cli-server-node';
import {
    FileSystemModule,
    InMemoryFileStorageProvider,
    OsFileStorageProvider,
} from '@qodalis/cli-server-plugin-filesystem';

const { app } = createCliServer({
    configure: (builder) => {
        builder.addModule(new FileSystemModule());

        // Use the in-memory provider (volatile, data lost on restart)
        builder.setFileStorageProvider(new InMemoryFileStorageProvider());

        // Or use the OS filesystem provider with path whitelisting
        builder.setFileStorageProvider(
            new OsFileStorageProvider({
                allowedPaths: ['/home/user/data'],
            }),
        );
    },
});
```

## Providers

| Provider | Name | Persistence | Description |
|---|---|---|---|
| `InMemoryFileStorageProvider` | `in-memory` | None (volatile) | Tree structure held in memory; fast but lost on restart |
| `OsFileStorageProvider` | `os` | Disk | Delegates to the host OS filesystem with path-traversal protection |

### OS Provider Options

| Option | Type | Description |
|---|---|---|
| `allowedPaths` | `string[]` | Absolute directory paths the provider is allowed to access |

The OS provider validates every path against the allowlist using `realpath` resolution, preventing symlink-based path traversal attacks.

## IFileStorageProvider Interface

All providers implement the `IFileStorageProvider` interface:

| Method | Description |
|---|---|
| `list(path)` | List entries in a directory |
| `readFile(path)` | Read file contents as UTF-8 |
| `writeFile(path, content)` | Create or overwrite a file |
| `stat(path)` | Get file or directory metadata |
| `mkdir(path, recursive?)` | Create a directory |
| `remove(path, recursive?)` | Remove a file or directory |
| `copy(src, dest)` | Copy a file or directory tree |
| `move(src, dest)` | Move (rename) a file or directory |
| `exists(path)` | Check whether a path exists |
| `getDownloadStream(path)` | Get a readable stream for file download |
| `uploadFile(path, content)` | Upload raw bytes to a file path |

## Custom Providers

Implement `IFileStorageProvider` to create your own storage backend. See the companion packages for examples:

- `@qodalis/cli-server-plugin-filesystem-json` -- JSON file persistence
- `@qodalis/cli-server-plugin-filesystem-s3` -- Amazon S3 storage
- `@qodalis/cli-server-plugin-filesystem-sqlite` -- SQLite database storage

## License

MIT
npm package: @qodalis/cli-server-plugin-filesystem-json
Description: JSON file-backed storage provider for Qodalis CLI server filesystem plugin
Author: Nicolae Lupei
Latest version: 1.0.0-beta.5

# @qodalis/cli-server-plugin-filesystem-json

JSON file-backed storage provider for [Qodalis CLI Server (Node.js)](https://github.com/qodalis-solutions/cli-server-node). Persists a virtual filesystem tree to a single JSON file on disk, providing simple file-based persistence without external dependencies.

## Install

```bash
npm install @qodalis/cli-server-plugin-filesystem-json
```

## Quick Start

```typescript
import { createCliServer } from '@qodalis/cli-server-node';
import { FileSystemModule } from '@qodalis/cli-server-plugin-filesystem';
import { JsonFileStorageProvider } from '@qodalis/cli-server-plugin-filesystem-json';

const { app } = createCliServer({
    configure: (builder) => {
        builder.addModule(new FileSystemModule());
        builder.setFileStorageProvider(
            new JsonFileStorageProvider({
                filePath: './data/filesystem.json',
            }),
        );
    },
});
```

## Configuration

| Option | Type | Description |
|---|---|---|
| `filePath` | `string` | Path to the JSON file that persists the virtual filesystem tree |

The entire tree is loaded into memory on construction and flushed to disk after every mutation (write, mkdir, remove, copy, move). The parent directory is created automatically if it does not exist.

## How It Works

The provider stores the complete directory tree as a nested JSON structure in a single file. This makes it easy to inspect, back up, and version-control the stored data. It is best suited for small to medium datasets where simplicity is preferred over performance.

## License

MIT
npm package: @qodalis/cli-server-plugin-filesystem-s3
Description: Amazon S3 storage provider for Qodalis CLI server filesystem plugin
Author: Nicolae Lupei
Latest version: 1.0.0-beta.5

# @qodalis/cli-server-plugin-filesystem-s3

Amazon S3 storage provider for [Qodalis CLI Server (Node.js)](https://github.com/qodalis-solutions/cli-server-node). Implements the `IFileStorageProvider` interface using S3 (or any S3-compatible service such as MinIO) as the storage backend.

## Install

```bash
npm install @qodalis/cli-server-plugin-filesystem-s3
```

## Quick Start

```typescript
import { createCliServer } from '@qodalis/cli-server-node';
import { FileSystemModule } from '@qodalis/cli-server-plugin-filesystem';
import { S3FileStorageProvider } from '@qodalis/cli-server-plugin-filesystem-s3';

const { app } = createCliServer({
    configure: (builder) => {
        builder.addModule(new FileSystemModule());
        builder.setFileStorageProvider(
            new S3FileStorageProvider({
                bucket: 'my-bucket',
                region: 'us-east-1',
            }),
        );
    },
});
```

## Configuration

| Option | Type | Default | Description |
|---|---|---|---|
| `bucket` | `string` | Required | S3 bucket name |
| `region` | `string` | `us-east-1` | AWS region |
| `prefix` | `string` | `''` | Key prefix prepended to all virtual paths |
| `endpoint` | `string` | -- | Custom S3-compatible endpoint URL (e.g. MinIO) |
| `credentials` | `object` | -- | Explicit `{ accessKeyId, secretAccessKey }`; omit to use the default AWS credential chain |

## How It Works

- Directories are represented by zero-byte S3 objects with a trailing `/`.
- Listing uses the S3 `Delimiter: '/'` convention to separate files and directories.
- Recursive delete and copy iterate over all objects matching the directory prefix.
- When no explicit credentials are provided, the provider uses the standard AWS credential chain (environment variables, IAM roles, etc.).

## Dependencies

- `@aws-sdk/client-s3`

## License

MIT
npm package: @qodalis/cli-server-plugin-filesystem-sqlite
Description: SQLite-backed storage provider for Qodalis CLI server filesystem plugin
Author: Nicolae Lupei
Latest version: 1.0.0-beta.5

# @qodalis/cli-server-plugin-filesystem-sqlite

SQLite-backed storage provider for [Qodalis CLI Server (Node.js)](https://github.com/qodalis-solutions/cli-server-node). Implements the `IFileStorageProvider` interface using a SQLite database for persistent virtual filesystem storage.

## Install

```bash
npm install @qodalis/cli-server-plugin-filesystem-sqlite
```

## Quick Start

```typescript
import { createCliServer } from '@qodalis/cli-server-node';
import { FileSystemModule } from '@qodalis/cli-server-plugin-filesystem';
import { SqliteFileStorageProvider } from '@qodalis/cli-server-plugin-filesystem-sqlite';

const { app } = createCliServer({
    configure: (builder) => {
        builder.addModule(new FileSystemModule());
        builder.setFileStorageProvider(
            new SqliteFileStorageProvider({
                dbPath: './data/filesystem.db',
            }),
        );
    },
});
```

## Configuration

| Option | Type | Description |
|---|---|---|
| `dbPath` | `string` | Path to the SQLite database file, or `':memory:'` for in-memory operation |

The parent directory is created automatically if it does not exist. The database uses WAL journaling mode for concurrent read performance.

## Schema

The provider creates and manages a single `files` table:

| Column | Type | Description |
|---|---|---|
| `id` | `INTEGER` | Auto-incrementing primary key |
| `path` | `TEXT` | Unique virtual path |
| `name` | `TEXT` | Entry name (basename) |
| `type` | `TEXT` | `file` or `directory` |
| `content` | `TEXT` | File content (null for directories) |
| `size` | `INTEGER` | Size in bytes |
| `permissions` | `TEXT` | Unix-style permission string |
| `created_at` | `TEXT` | ISO 8601 creation timestamp |
| `modified_at` | `TEXT` | ISO 8601 modification timestamp |
| `parent_path` | `TEXT` | Path of the parent directory |

## Dependencies

- `better-sqlite3`

## License

MIT
npm package: @qodalis/cli-server-plugin-weather
Description: Weather information plugin for Qodalis CLI server — provides current weather and forecast commands
Author: Nicolae Lupei
Latest version: 1.0.0-beta.5

# @qodalis/cli-server-plugin-weather

Weather information plugin for [Qodalis CLI Server (Node.js)](https://github.com/qodalis-solutions/cli-server-node). Provides current weather conditions and 3-day forecast commands using the wttr.in API.

## Install

```bash
npm install @qodalis/cli-server-plugin-weather
```

## Quick Start

```typescript
import { createCliServer } from '@qodalis/cli-server-node';
import { WeatherModule } from '@qodalis/cli-server-plugin-weather';

const { app } = createCliServer({
    configure: (builder) => {
        builder.addModule(new WeatherModule());
    },
});
```

## Commands

| Command | Description |
|---------|-------------|
| `weather [location]` | Show current weather conditions (defaults to London) |
| `weather current [location]` | Show current weather conditions |
| `weather forecast [location]` | Show a 3-day weather forecast |

## Parameters

| Parameter | Alias | Type | Default | Description |
|-----------|-------|------|---------|-------------|
| `--location` | `-l` | `string` | `London` | City name to get weather for |

The location can also be passed as the command value (e.g. `weather Paris`).

## Example Output

```
Weather for Paris, France
  Condition:   Partly cloudy
  Temperature: 18°C (feels like 17°C)
  Humidity:    65%
  Wind:        15 km/h SW
  Visibility:  10 km
  Pressure:    1015 hPa
```

## License

MIT
npm package: @qodestack/prettier-config
Description: A thorough prettier config you can use for new projects
Author: Qodesmith
Latest version: 1.0.3

# How to use

Install this package:

```
bun add -D @qodestack/prettier-config
```

### Option 1 - your project's `package.json` (no plugin support)

Add this line to your `package.json` file:

```json
"prettier": "@qodestack/prettier-config"
```

### Option 2 - plugin support

Use a `prettier.config.js` file with the following content (the plugin used here is just an example):

```javascript
import qodeStackConfig from '@qodestack/prettier-config'

export default {
  ...qodeStackConfig,
  plugins: ['prettier-plugin-tailwindcss'],
}
```

## From the Prettier docs:

https://prettier.io/docs/en/configuration

You can configure Prettier via (in order of precedence):

- A `"prettier"` key in your package.json, or package.yaml file.
- A `.prettierrc` file written in JSON or YAML.
- A `.prettierrc.json`, `.prettierrc.yml`, `.prettierrc.yaml`, or `.prettierrc.json5` file.
- A `.prettierrc.js`, or `prettier.config.js` file that exports an object using `export default` or `module.exports` (depends on - the [type](https://nodejs.org/api/packages.html#type) value in your package.json).
- A `.prettierrc.mjs`, or `prettier.config.mjs` file that exports an object using `export default`.
- A `.prettierrc.cjs`, or `prettier.config.cjs` file that exports an object using `module.exports`.
- A `.prettierrc.toml` file.