open-index/open-npm huggingface dataset:
npm package: @inikolaev/homebridge-openvpn-switch
Description: OpenVPN Switch for Homebridge
Latest version: 0.0.2

Accessory configuration example:

```json
"accessories": [{
    "accessory": "VPN Switch",
    "name": "VPN",
    "configs": [{
        "name": "VPN 1",
        "config": "/etc/openvpn/vpn1.ovpn"
    }, {
        "name": "VPN 2",
        "config": "/etc/openvpn/vpn2.ovpn"
    }]
}]
```
npm package: @inim/comfig
Description: Easily get configuration / inputs to the app.
Author: Brian C Sparks
Latest version: 1.0.1

# Comfig

Super easy development-time config management for apps/mods.

## How To

Just ask for a config item, and `comfig` will look high and low for it, following
consistent rules.

```javascript
const Comfig = require('@inim:comfig');

const cfg = Comfig('FOOBAR', 'FOO');                // The name of your app/lib

let wooden = cfg.getItem('USE_WOODEN_BAT');         // Reads env.FOOBAR_USE_WOODEN_BAT, or --use-wooden-bat; gets the string "true"
wooden = cfg.getItem('USE_WOODEN_BAT', false);      // Reads env.FOOBAR_USE_WOODEN_BAT, or --use-wooden-bat; gets the boolean true

wooden = cfg.smartGetItem('USE_WOODEN_BAT');        // Auto-parses into Number, Boolean, Date, JSON (so an Object), or String

let aluminum = cfg.getItem('USE_AL_BAT');           // Not found anywhere: aluminum is undefined
```

Remember that all of the places that Comfig could look at when fetching the configuration items
will return a string: CLI args are all strings until parsed, same for env.XYZ. But when you
pass in a default value, the function knows the type and will parse it into that type. This works
only with non-compound (builtin) types: Number, String, Boolean.

## Future

TBD: Will follow 12 principles when not `ACTIVE_DEVELOPMENT`.
npm package: @inimaz/keepon
Description: Track your tasks and improve your time management with a simple cli.
Author: inimaz
Latest version: 0.1.3

![KeepOn](https://raw.githubusercontent.com/inimaz/keepon/main/docs/media/keepOn-logo.png)

# keepOn

_Track your tasks and improve your time management with a simple cli._

![alt text](https://raw.githubusercontent.com/inimaz/keepon/main/docs/media/image.png)

# How it works

1. Add your tasks with the urgency, importance and estimated time in minutes
1. `keepOn` will prioritize those tasks base on your inputs and tell you which task to do next

   ![alt text](https://raw.githubusercontent.com/inimaz/keepon/main/docs/media/keepOn-createTask.gif)

# Install

```
npm install -g @inimaz/keepon
```

# Usage

See all commands with `k -h`

```sh
$ k -h
Usage: index [options] [command]

Options:
  -h, --help                                                           display help for command

Commands:
  show [options]                                                       Show all tasks
  block <id>                                                           Set the status of a task to blocked
  check <id>                                                           Check/uncheck task
  clear                                                                Clear all completed tasks
  create <title> [description] [urgency] [importance] [estimatedTime]  Create a new task
  get <id>                                                             Get all info of a task
  start <id>                                                           Start a task
  update [options] <id>                                                Update a task
  delete <id>                                                          Delete a task
  agenda|a                                                             Show the agenda of today as if you had to do all the tasks today
  reindex                                                              Reindex tasks so that their IDs go from 1 to N
  help [command]                                                       display help for command
```

If no command is passed, by default it will show the dashboard (`k show` command).
![alt text](https://raw.githubusercontent.com/inimaz/keepon/main/docs/media/keepOn-show.gif)

# How the priority is calculated

The priority gives the order in the dashboard. It is calculated based on the urgency, the estimated time and importance of the task. The formula is:

```
priority = urgency * importance / estimatedTime
```

# Inspired by

- [Taskbook](https://github.com/klaudiosinani/taskbook)
npm package: @ininderprint/nestjs-filestream-interceptor
Description: Parse request form-data to file streams
Author: ZhangRGK
Latest version: 0.0.8

# NestJS Stream Interceptor

Parse request form-data to file streams

## Instruction

Currently, we are unable to catch the stream while file(s) uploading, so we write the interceptor.

## Usage

```typescript
import {
  FileStreamInterceptor,
  FileStreams,
  FileStream,
} from '@ininderprint/nestjs-filestream-interceptor';

@Controller()
export class AppController {
  @Post('/')
  @UseInterceptors(FileStreamInterceptor())
  upload(@FileStreams() fileStreams: FileStream[]) {
    console.log(fileStreams);
    return;
  }
}
```
npm package: @inip/static-server
Description: Simple Static Server useful for developing
Latest version: 1.0.1

# INIP Static Server

## Super simple static server to use for development. Works for SPAs

## Quick Start

```bash
npm install @inip/static-server
```

add a script in your package.json

`"serve:build": "./node_modules/.bin/static-server dist/my-app"`

can also specify the port:

`"serve:build": "./node_modules/.bin/static-server dist/my-app 4202"`
npm package: @inip/vue-feather-icons
Description: Simply beautiful open source icons as Vue functional components.
Author: egoist
Latest version: 4.24.1

# vue-feather-icons

[![NPM version](https://img.shields.io/npm/v/vue-feather-icons.svg?style=flat)](https://npmjs.com/package/vue-feather-icons) [![NPM downloads](https://img.shields.io/npm/dm/vue-feather-icons.svg?style=flat)](https://npmjs.com/package/vue-feather-icons) [![CircleCI](https://circleci.com/gh/egoist/vue-feather-icons/tree/master.svg?style=shield)](https://circleci.com/gh/egoist/vue-feather-icons/tree/master)  [![donate](https://img.shields.io/badge/$-donate-ff69b4.svg?maxAge=2592000&style=flat)](https://github.com/egoist/donate)

## Install

```bash
yarn add vue-feather-icons
```

## Usage

```js
// Only import what you need!
import { AirplayIcon, AtSignIcon, ... } from 'vue-feather-icons'
```

See all icons and usage here: https://vue-feather-icons.netlify.com

### Sizing

By default, icons will be sized based on the font size of the parent element.

You can set a custom size using the `size` attribute. 
For multiple based sizing, pass the desired multiple followed by an `x`.

```html
<activity-icon size="1.5x" class="custom-class"></activity-icon> 
```

You can also set a `px` size directly by just passing an integer

```html
<activity-icon size="25" class="custom-class"></activity-icon> 
```

## Tree shaking

By using ES imports like `import { AirplayIcon } from 'vue-feather-icons'` with [webpack + minifier](https://webpack.js.org/guides/tree-shaking/#minify-the-output) or Rollup, unused exports in this module will be automatically eliminated.

To make webpack tree shaking work without using any minifier, you can use the per-file icons from [`icons`](https://unpkg.com/vue-feather-icons/icons/) directory, e.g. `import AirplayIcon from 'vue-feather-icons/icons/AirplayIcon'`.

## Related

- [vue-bytesize-icons](https://github.com/egoist/vue-bytesize-icons)

## Contributing

1. Fork it!
2. Create your feature branch: `git checkout -b my-new-feature`
3. Commit your changes: `git commit -am 'Add some feature'`
4. Push to the branch: `git push origin my-new-feature`
5. Submit a pull request :D


## Author

**vue-feather-icons** © [egoist](https://github.com/egoist), Released under the [MIT](./LICENSE) License.<br>
Authored and maintained by egoist with help from contributors ([list](https://github.com/egoist/vue-feather-icons/contributors)).

> [egoist.moe](https://egoist.moe) · GitHub [@egoist](https://github.com/egoist) · Twitter [@_egoistlily](https://twitter.com/_egoistlily)
npm package: @iniquitybbs/archive
Description: Where all the old Iniquity stuff lives. Maybe we can use some of it?
Author: ispyhumanfly
Latest version: 3.0.84

# Iniquity Archive

This is where we can put all the old Iniquity stuff. Literally anything we can find about older versions of Iniquity, or even other BBS software.

![Alt text](https://github.com/iniquitybbs/iniquity/raw/master/packages/core/src/assets/5m-iniquity3a.png?raw=true "Iniquity 3")

## Synposis

I'm thinking this is like, Iniquity's built in backpack.

-   Filled with all kinds of random ansi, ascii, whatever _textmode_ files.
-   Maybe eventually it could also do some processing on these files by way of some of Synchronet's lower level text file utils. Hmm...

## Install

### NPM

    npm install -g @iniquitybbs/archive
npm package: @iniquitybbs/desktop
Description: IQ term Desktop — Electron app for Iniquity BBS.
Author: ispyhumanfly
Latest version: 3.0.86

# IQ Desktop

**IQ Desktop** is the desktop companion for [Iniquity BBS](https://iniquitybbs.com). Think GitHub Desktop, but for Iniquity: one app to administer your boards and to connect as a terminal client.

Today it focuses on the **terminal client**: a window that connects to an Iniquity BBS over WebSocket (same experience as the web term page). The plan is to add **board administration**—managing boards, users, and settings from the desktop—so sysops and users can do everything from one place. Terminal client and admin features will coexist in IQ Desktop.

---

## Current: Terminal client

Run IQ Desktop to get a window that loads the BBS term page. If the server isn’t running, the app can start it for you, then open the term.

### Prerequisites

- Node 18+
- Iniquity CLI and server (same repo). From repo root: `npx lerna run build`.

### Run from repo root

```bash
npm run desktop
```

Or from the desktop package:

```bash
cd packages/desktop && npm install && npm run build && npm run start
```

Or via the CLI (after building the CLI):

```bash
iq desktop
```

The app checks `http://localhost:8383/api/v1/health`. If the server isn’t running, it can spawn `iq server start`, wait for it to be healthy, then open the term at `http://localhost:8383/term`.

### Environment

- **`IQ_TERM_BASE_URL`** — Base URL for the API and term page (default `http://localhost:8383`). Set to e.g. `https://mybbs.example.com` to connect to a remote BBS.

### Packaging

Use Electron Builder or similar to produce a standalone app for macOS/Windows/Linux. This package currently supports development and `npm run desktop` / `iq desktop` only.
npm package: @iniquitybbs/templates
Description: Various templates showing how a sysop can create a bbs with iniquity.
Author: ispyhumanfly
Latest version: 3.0.86

# Iniquity Templates

Various templates and examples of how to create a bbs or terminal application using iniquity 3.

```text
-$a. ------------------ .a$ ---------------------------- %$!, ----------------%
 `$¸   .%$$^¸$$aa.     .¸$`        .        .a$a$$.      `¸$%  $a$.        .
-.aaa$ $$$$'- $$$$$.- $aaa. -.a%$^"$$aa -- .$$$$$'- $$a. $aaa. `$,$ ----------%
;$$$$',a$a$  d$%$$$$$,'$$$$;$$$$$  $$$$$., $$%$$"  d$a$$ '$$$$; $$$   .a%$  $$a
:$$$$;$$$$%; Z$$$$$$$$;$$$$:$$$$$. $$$$^$,;$$&$$   Z$$$$,;$$$$.a$$$a..$$$   $$$
.$$$$ `$$$$.  $$$%$$$' $$$$.`$$$$  $$%$$$$ `$$$$.   $%$$$ $$$$""$$$" $$$$:  a$$
 `$$$a.$$%$   $$$$$$';a$$$`  `¸$$aa$$$$&$': `$$$$a. $$$$'a$$$`.$$'$  $$$$;  $$$
%-----.------ $$$$'--------------- $$%$$' -- `¸$$$$$%$¸' ---- $$¸$a. `"$&$$//$%$
dz      .   .:'¸'     .        .   $$$$'     .        .       `¸$$$$y.     `$$&
%--------- a`-----------.--------- $$¸' -----.------------.---------------- $$$
   .      !a    . .    .      .   .:'   .  .                  .        .:.a$$$¸
.      .  '$a,          .        a` .   'a          .   .             s` .  . .
      .    ¸$Aa         .       !a       a!      .    .         ..   %s      .s
   .         ¸¸'     . .        '$$Aa.aA$$'        . .               `!$%a.a%//$
==============================================================================
   t h e    i n i q u i t y    b u l l e t i n   b o a r d   s y s t e m
==============================================================================
```

## The idea

Exposes an sbbs compatible interface, a cli interface, and some examples of how to do all that.
npm package: @iniswap/eslint-config-ini
Description: Eslint config for PancakeSwap
Author: ebundala
Latest version: 0.0.2

# eslint-config-pancake

Pancake Eslint config with:

- Airbnb config
- Typescript
- Prettier

## Usage

```
npx install-peerdeps --dev @pancakeswap/eslint-config-pancake
```

Add `"extends": "@pancakeswap/eslint-config-pancake"` to your eslint config file.
npm package: @iniswap/sdk
Description: 🛠 An SDK for building applications on top of iniswap.
Latest version: 1.0.2

<!-- # Pancakeswap SDK

Forked from the [Uniswap SDK](https://github.com/Uniswap/uniswap-v2-sdk/commit/a88048e9c4198a5bdaea00883ca00c8c8e582605).

You can refer to the Uniswap SDK documentation [uniswap.org](https://uniswap.org/docs/v2/SDK/getting-started/).

## Running tests

To run the tests, follow these steps. You must have at least node v10 and [yarn](https://yarnpkg.com/) installed.

First clone the repository:

```sh
git clone https://github.com/pancakeswap/pancake-swap-sdk.git
```

Move into the pancakeswap-sdk working directory

```sh
cd pancakeswap-sdk/
```

Install dependencies

```sh
yarn install
```

Run tests

```sh
yarn test
```

You should see output like the following:

```sh
yarn run v1.22.4
$ tsdx test
 PASS  test/constants.test.ts
 PASS  test/pair.test.ts
 PASS  test/fraction.test.ts
 PASS  test/miscellaneous.test.ts
 PASS  test/entities.test.ts
 PASS  test/trade.test.ts

Test Suites: 1 skipped, 6 passed, 6 of 7 total
Tests:       3 skipped, 82 passed, 85 total
Snapshots:   0 total
Time:        5.091s
Ran all test suites.
✨  Done in 6.61s.
``` -->
npm package: @iniswap/uikit
Description: Set of UI components for iniswap projects
Latest version: 1.0.1

# 🥞 Pancake UIkit

[![Version](https://img.shields.io/npm/v/@pancakeswap-libs/uikit)](https://www.npmjs.com/package/@pancakeswap-libs/uikit) [![Size](https://img.shields.io/bundlephobia/min/@pancakeswap-libs/uikit)](https://www.npmjs.com/package/@pancakeswap-libs/uikit)

Pancake UIkit is a set of React components and hooks used to build pages on Pancake's apps. It also contains a theme file for dark and light mode.

## Install

`yarn add @pancakeswap-libs/uikit`

## Setup

### Theme

Before using Pancake UIkit, you need to provide the theme file to styled-component.

```
import { ThemeProvider } from 'styled-components'
import { light, dark } from '@pancakeswap-libs/uikit'
...
<ThemeProvider theme={isDark}>...</ThemeProvider>
```

### Reset

A reset CSS is available as a global styled component.

```
import { ResetCSS } from '@pancakeswap-libs/uikit'
...
<ResetCSS />
```

### Types

This project is built with Typescript and export all the relevant types.

## How to use the UIkit

If you want to use components from the UIkit, check the [Storybook documentation](https://pancakeswap.github.io/pancake-uikit/)
npm package: @init-actions/action-config
Description: <h1 align="center">Welcome to @init-actions/action-config 👋</h1> <p>   <img alt="Version" src="https://img.shields.io/badge/version-0.0.0-blue.svg?cacheSeconds=2592000" />   <a href="https://github.com/init-actions/action-config#readme" target="_blank"> 
Author: Rik Hoffbauer
Latest version: 0.1.2

<h1 align="center">Welcome to @init-actions/action-config 👋</h1>
<p>
  <img alt="Version" src="https://img.shields.io/badge/version-0.0.0-blue.svg?cacheSeconds=2592000" />
  <a href="https://github.com/init-actions/action-config#readme" target="_blank">
    <img alt="Documentation" src="https://img.shields.io/badge/documentation-yes-brightgreen.svg" />
  </a>
  <a href="https://github.com/init-actions/action-config/graphs/commit-activity" target="_blank">
    <img alt="Maintenance" src="https://img.shields.io/badge/Maintained%3F-yes-green.svg" />
  </a>
  <a href="https://github.com/init-actions/action-config/blob/master/LICENSE" target="_blank">
    <img alt="License: MIT" src="https://img.shields.io/github/license/init-actions/@init-actions/action-config" />
  </a>
</p>

> Config files for init-actions GitHub Actions

### 🏠 [Homepage](https://github.com/init-actions/action-config#readme)

## Install

```sh
npm install @init-actions/action-config
```

## Run tests

```sh
npm run test
```

## Author

👤 **Rik Hoffbauer <62353999+rikhoffbauer@users.noreply.github.com> (https://github.com/rikhoffbauer)**

* Github: [@init-actions](https://github.com/init-actions)

## 🤝 Contributing

Contributions, issues and feature requests are welcome!<br />Feel free to check [issues page](https://github.com/init-actions/action-config/issues). You can also take a look at the [contributing guide](https://github.com/init-actions/action-config/blob/master/CONTRIBUTING.md).

## Show your support

Give a ⭐️ if this project helped you!

## 📝 License

Copyright © 2020 [Rik Hoffbauer <62353999+rikhoffbauer@users.noreply.github.com> (https://github.com/rikhoffbauer)](https://github.com/init-actions).<br />
This project is [MIT](https://github.com/init-actions/action-config/blob/master/LICENSE) licensed.

***
_This README was generated with ❤️ by [readme-md-generator](https://github.com/kefranabg/readme-md-generator)_
npm package: @init-kz/editorjs-code-highlight
Description: A micro code-editor for awesome web pages
Author: INIT.KZ
Latest version: 1.0.1


# EditorJs - init-code-highlight-ts


<p align="center">
  <a href="https://init.kz/en">
    <img src="assets/favicon.svg" width="100"   height="100" alt="Logo">
  </a>
</p>

### NPM
    npm i @init-kz/editorjs-code-highlight

## About

This is an EditorJs wrapper for [init-code-highlight-ts](https://github.com/init-pkg/init-code-highlight-ts) - A lovely lightweight zero-dep code formatter

It was built to be an improvement on :

* https://github.com/editor-js/code - Too Basic
* https://github.com/dev-juju/codebox - Agressive styling, and exports more data than markdown can handle


## Built with:

* [init-code-highlight-ts](https://github.com/init-pkg/init-code-highlight-ts)
* [Prism](https://www.npmjs.com/package/prismjs)


---

## Installation / use

```javascript
import EditorJS from '@editorjs/editorjs';
import editorjsCode from '@init-kz/editorjs-code-highlight';

var editor = EditorJS({
  // ...
  tools: {
    ...
    code : editorjsCode
  },
});
```


## Data Format
The data imported/exported from the block is as follows:

| Name                       | Description                                                |
| -------------------------- | ---------------------------------------------------------- |
| code                       | The code that is displayed in the editor, with line breaks |
| language (optional)        | The programming language                                   |
| showlinenumbers (optional) | Will show/hide the line numbers (Default true)             |
| showCopyButton (optional)  | will show/hide the copy button (Defauly true)              |
|                            |                                                            |


Since language and linenumbers are optional, existing ```code``` blocks can safley use this plugin



<!-- ---

## Markdown Compatability

> TODO!

This plugin *will be* compatible with

    npm i editorjs-markdown-parser

It will import/export using the code fence markdown style, with the language printed imediatly after the first fence, as described in [GFM #117](https://github.github.com/gfm/#example-112)

Line-numbers cant be expressed in markdown, so will be ommited

Example :

    ```javascript
    \\ Hello World
    ``` -->
npm package: @init-kz/jsonparse-ts
Description: Library for parsing partial jsons inspired by original jsonparse written on js
Author: INIT.KZ
Latest version: 1.0.5

# JSON Stream Parser (TypeScript Edition)

<p align="center">
  <img src="assets/favicon.svg" width="100" height="100" alt="Logo">
</p>

This is a fully rewritten **TypeScript** version of the `jsonparse` library.
Originally created by Tim Caswell in 2012, this version modernizes the approach by following **OOP principles** and introducing additional functionality.

Unlike the original, this version fully supports **browser environments** and provides enhanced features for better control over JSON parsing.

## Features

- **Streaming JSON parsing**: Handles JSON data in chunks.
- **Full browser support**: Works both in Node.js and browser environments.
- **Improved API**: Additional methods for better parsing control.
- **Event-driven architecture**: Supports event emitters for handling tokens and values.
- **Better error handling**: Capture parsing errors more efficiently.

## Installation

```sh
npm install @init-kz/jsonparse-ts
```

## Usage

```ts
import { Parser } from '@init-kz/jsonparse-ts';

const parser = new Parser();
parser.write('[{"name": "A');
console.log(parser.getLastIncompleteValue()); // { name: "A" }

parser.write('"}, {"na');
console.log(parser.getLastIncompleteValue()); // { name: "A" }, { }

parser.write('me": "Occaecat aliq');
console.log(parser.getLastIncompleteValue()); // { name: "A" }, { name: "Occaecat aliq" }

parser.write('uip id officia ipsum deserunt ea id labore magna qui elit dolore consectetur dolore.');
console.log(parser.getLastValue()); // Full JSON structure
```

## API

### `getEmitter(): EventEmitter`
Returns the event emitter used internally by the parser.

### `onToken(callback: (token: number, value: any) => void): void`
Registers a callback for when a token is parsed.

### `onValue(callback: (value: any) => void): void`
Registers a callback for when a complete value is parsed.

### `onError(callback: (err: Error) => void): void`
Registers a callback for handling errors.

### `getLastValue(): any`
Retrieves the last fully parsed value.

### `getLastIncompleteValue(omitEmpty?: boolean): any`
Retrieves the last partially parsed value, except numbers.

### `getCurrentKey(): string | number | undefined`
Gets the current key being parsed in an object.

### `getStack(): { value: any; key?: string | number; mode?: number; }[]`
Returns the internal parsing stack.

### `getOffset(): number`
Returns the current byte offset in the stream.

### `write(chunk: string | Uint8Array): void`
Processes a chunk of JSON data.

### Contributing

Contributions are welcome! Feel free to submit issues or open pull requests to improve the project.

## License

```
The MIT License

Copyright (c) 2012 Tim Caswell
Copyright (c) 2025 INIT.KZ
```
npm package: @init-kz/ui
Description: Library from init.kz
Author: INIT.KZ
Latest version: 1.1.10

# Template

<p align="center">
 <a href="https://init.kz/en">
  <img src="assets/favicon.svg" width="100" height="100" alt="Logo">
 </a>
</p>

Template description

## Features

- **Template feature**: Template feature description.

## Installation

```sh
npm install @init-kz/template
```

## Usage

```ts
import { Template } from "@init-kz/template";
// Template usage

const template = new Template();
template.templateFn();
```

## API

### `templateFn(): TemplateRes`

Template functions description

Optional

### Contributing

Contributions are welcome! Feel free to submit issues or open pull requests to improve the project.

## License

```
The MIT License

Copyright (c) 2025 INIT.KZ
```
npm package: @init-scripts/npm-init
Description: initialize a new npm package using npm init
Author: Rik Hoffbauer
Latest version: 1.0.0

<h1 align="center">Welcome to @init-actions/npm-init 👋</h1>
<p>
  <a href="https://www.npmjs.com/package/@init-actions/npm-init" target="_blank">
    <img alt="Version" src="https://img.shields.io/npm/v/@init-actions/npm-init.svg">
  </a>
  <a href="https://github.com/init-actions/npm-init#readme" target="_blank">
    <img alt="Documentation" src="https://img.shields.io/badge/documentation-yes-brightgreen.svg" />
  </a>
  <a href="https://github.com/init-actions/npm-init/graphs/commit-activity" target="_blank">
    <img alt="Maintenance" src="https://img.shields.io/badge/Maintained%3F-yes-green.svg" />
  </a>
  <a href="https://github.com/init-actions/npm-init/blob/master/LICENSE" target="_blank">
    <img alt="License: MIT" src="https://img.shields.io/github/license/rikhoffbauer/npm-init" />
  </a>
</p>

> initialize a new npm package using npm init

### 🏠 [Homepage](https://github.com/init-actions/npm-init#readme)

## Install

```sh
npm install @init-actions/npm-init
```

## Run tests

```sh
npm run test
```

## Author

👤 **Rik Hoffbauer <62353999+rikhoffbauer@users.noreply.github.com> (https://github.com/rikhoffbauer)**

-   Website: https://rikhoffbauer.github.io
-   Github: [@rikhoffbauer](https://github.com/rikhoffbauer)
-   LinkedIn: [@rikhoffbauer](https://linkedin.com/in/rikhoffbauer)

## 🤝 Contributing

Contributions, issues and feature requests are welcome!<br />Feel free to check [issues page](https://github.com/init-actions/npm-init/issues). You can also take a look at the [contributing guide](https://github.com/init-actions/npm-init/blob/master/CONTRIBUTING.md).

## Show your support

Give a ⭐️ if this project helped you!

<a href="https://www.patreon.com/rikhoffbauer">
  <img src="https://c5.patreon.com/external/logo/become_a_patron_button@2x.png" width="160">
</a>

## 📝 License

Copyright © 2020 [Rik Hoffbauer <62353999+rikhoffbauer@users.noreply.github.com> (https://github.com/rikhoffbauer)](https://github.com/rikhoffbauer).<br /> This project is [MIT](https://github.com/init-actions/npm-init/blob/master/LICENSE) licensed.
npm package: @initd.sg/await-promise
Description: Async React component for awaiting a promise.
Author: tky-thomas
Latest version: 1.0.0

# await-promise ⌛
Async React component for awaiting a promise and passing its result to other
components.

## Why?
This library helps in fetching data from server component and pass it down to children components. Normally you would await the promise in the server component but this is bad since you have to wait every promises in order to paint something on the website. With this library, it will make the server component display immediately. This library also make use of [Suspense](https://react.dev/reference/react/Suspense) where the component will show a fallback component while waiting for the component to resolve.

## 1. Install
`yarn add @initd.sg/await-promise`

## 2. Usage
To use just pass the promise to the `fn` props. `<AwaitPromise />` children
accepts a function with the argument being the result of the promise. With this
method we can put a client component inside the `<AwaitPromise />` and show a
loading fallback while waiting for that promise to resolve.
```tsx
import { AwaitPromise } from "await-promise";

export default function Page() {
    const fn = new Promise<{ name: string }>((resolve) =>
        setTimeout(() => resolve({ name: "user" }), 1000)
    );

    return (
        <>
            <AwaitPromise fallback={"loading..."} fn={fn}>
                {(user) => <div>{user.name}</div>}
            </AwaitPromise>
        </>
    );
}
```

## 3. Error Handling
A promise passed to `fn` argument may throw an error due to network error or incorrect http parameters when trying to call an external API. By default, `<AwaitPromise />` handles this error by showing the error message. In case we want to customize the error message, we can just create another component and pass to the `errorFallback` props.
```tsx
import { AwaitPromise } from "await-promise";

export default function Page() {
    const fn = new Promise<string>((resolve, reject) =>
        setTimeout(() => reject("Network Error Occured"), 1000)
    );

    return (
        <>
            <AwaitPromise 
                fallback={"loading..."}
                errorFallback={(err) => <ErrorText err={err} />} 
                fn={fn}
            >
                {(user) => <div>{user.name}</div>}
            </AwaitPromise>
        </>
    );
}

function ErrorText(err: Error) {
    console.error(err); // error logging
    return <p className="text-red-500">{err.message}</p>
}
```
npm package: @initd.sg/winston-cloudwatch
Description: Winston transport for AWS Cloudwatch
Author: Raziman Mahathir
Latest version: 1.0.0

# Winston Cloudwatch Transport (@initd.sg/winston-cloudwatch)

A Winston transport for AWS CloudWatch Logs that provides buffered logging capabilities.

## Why use this transport?

This library is meant to replace the existing transport
https://github.com/lazywithclass/winston-cloudwatch. The existing
winston-cloudwatch library, while functional, has several limitations and
challenges that our new implementation addresses:

- Built with modern TypeScript, providing better type safety and developer experience
- Uses AWS SDK v3
- Optimized batching algorithm that reduces AWS API calls
- Better handling of high-throughput logging scenarios

## Installation
```bash
yarn add @initd.sg/winston-cloudwatch
```

## Prerequisites

- AWS credentials properly configured (either through environment variables, AWS CLI, or IAM roles)
- AWS SDK v3
- Winston 3.x

## Usage

```typescript
import winston from 'winston';
import { WinstonCloudwatch } from '@initd.sg/winston-cloudwatch';

const logger = winston.createLogger({
  transports: [
    new WinstonCloudwatch({
      logGroupName: 'your-log-group-name',
      logStreamName: 'your-log-stream-name',
      logBufferSize: 500,  // optional
      timeout: 1000        // optional
    })
  ]
});

// Use the logger
logger.info('Hello CloudWatch!');
```

## Options

| Option | Type | Required | Default | Description |
|--------|------|----------|---------|-------------|
| logGroupName | string | Yes | - | The name of the CloudWatch log group |
| logStreamName | string | Yes | - | The name of the CloudWatch log stream |
| logBufferSize | number | No | 500 | Maximum number of logs to buffer before sending to CloudWatch |
| timeout | number | No | 1000 | Time in milliseconds to wait before flushing the buffer |

## Features

- Buffered logging to reduce API calls to CloudWatch
- Automatic handling of sequence tokens
- Non-blocking logging operations
- Configurable buffer size and timeout
- Compatible with Winston 3.x

## Buffer Behavior

The transport implements a buffering mechanism that:
1. Collects logs until the buffer size is reached
2. Automatically flushes the buffer when the timeout is reached
3. Maintains the sequence token for proper log ordering

## Error Handling

Errors during log upload are caught and logged to console, ensuring your application continues to run even if CloudWatch is temporarily unavailable.

## AWS Configuration

Make sure you have the necessary AWS permissions to:
- Describe log streams
- Put log events
- Create log streams (if they don't exist)

## Contributing

Contributions are welcome! Please feel free to submit a Pull Request.

## License

[MIT License](LICENSE)

## Dependencies

- @aws-sdk/client-cloudwatch-logs
- winston-transport

## Note

This transport is designed for use in Node.js environments and requires proper AWS credentials configuration.
npm package: @initencounter/jimp
Description: jimp abstract for koishi service
Latest version: 0.0.5

# jimp抽象

[![npm](https://img.shields.io/npm/v/@initencounter/jimp?style=flat-square)](https://www.npmjs.com/package/@initencounter/jimp)

jimp abstract for koishi service

## 实现了该服务的插件有：
 - [@initencounter/koishi-plugin-jimp](https://www.npmjs.com/package/@initencounter/koishi-plugin-jimp)
npm package: @initencounter/koishi-plugin-jimp
Description: jimp service
Latest version: 0.0.7

# jimp

[![npm](https://img.shields.io/npm/v/@initencounter/koishi-plugin-jimp?style=flat-square)](https://www.npmjs.com/package/@initencounter/koishi-plugin-jimp)

jimp service

## 使用方法

### 1. 导入类型

```typescript
import Jimp from "@initencounter/jimp";
```

### 2. 使用 Jimp 贴图

```typescript
// 实例化 Jimp
let img1 = ctx.jimp.newJimp(x, y);

// 加载本地图片
let img2 = ctx.jimp.read("img2.png");

// 在 img 的（x, y）位置处贴上图片
img1.blit(img2, px, py);

// 获取 img1 的 PNG 格式的 Buffer 字符串
let img1_buffer = bigImage.getBufferAsync(ctx.jimp.MIME_PNG);

// 发送图片
session.send(h.image(img1_buffer, "image/png"));
```

## 使用了此服务的插件:

- [koishi-plugin-minesweeper-ending](https://github.com/initialencounter/2022-12-24/tree/master/Plugins/Recreation/minesweeper-ending#readme)
- [koishi-plugin-puzzle](https://github.com/initialencounter/2022-12-24/tree/master/Plugins/Recreation/puzzle#readme.md)