open-index/open-npm huggingface dataset:
npm package: @kinkajou/kinkajou
Description: A component-based web library
Author: Fabio Contigiani
Latest version: 0.0.1-alpha.3

# @kinkajou/kinkajou

In 2008 I was working on a web project with a server side rendering technology.
I didn't like Java Server Pages (it was a Java project), so I used XML pages,
with custom tags inside (X)HTML markup.

Every custom tag was a graphical component, capable of displaying itself on the browser as HTML.

![Alt Custom component tag](https://github.com/lino79/kinkajou-kinkajou/blob/master/component.png?raw=true)

Nowadays there are a lot of cool client-side libraries which do the same thing.
But I wanted a technology for pure standalone client applications, without any
server support...

...Kinkajou is a component-based web library which performs this task (it's based
on Javascript/JSX syntax and AMD modules support).

### Hello World

``` JSX
import { Kinkajou } from '@kinkajou/kinkajou/Kinkajou';

class App extends Kinkajou.Component {

  get message() {
    // Returns the JSX 'message' attribute's value
    return this.getAsString('message');
  }

  render() {
    return <div>{this.message}</div>;
  }

}

Kinkajou.render(<App message="Hello World!" />, document.querySelector('body'));
```

### Demo applications

* [hello-world-app](https://github.com/lino79/kinkajou-hello-world-app)
* [photo-app](https://github.com/lino79/kinkajou-photo-app)
npm package: @kinkajou/linear-progress
Description: A linear progress indicator component based on Google Material Component
Author: Fabio Contigiani
Latest version: 0.0.1-alpha.1

# @kinkajou/linear-progress

A linear progress indicator component based on Google Material Component
[mdc-linear-progress](https://github.com/material-components/material-components-web/tree/master/packages/mdc-linear-progress).
npm package: @kinky-ui/ui
Description: Kinky UI component library – reusable Angular standalone components, pipes, services, enums, and interfaces
Author: Kinky Team
Latest version: 2.0.2

# @exterior/ui

Reusable Angular UI component library for the Kinky platform. 

## Installation

```bash
npm install @kinky/ui
```

### Peer dependencies

```bash
npm install @angular/common @angular/core @angular/forms @angular/router @ngx-translate/core rxjs
```

## Components

| Component | Selector | Description |
|---|---|---|
| `KinkyIconButton` | `kinky-icon-button` | Icon-only button with optional outline/background |
| `KinkyButton` | `kinky-button` | Primary/secondary/tertiary button |
| `KinkyDropdown` | `kinky-dropdown` | Native select dropdown with `ControlValueAccessor` |
| `KinkyInput` | `kinky-input` | Text/number input with `ControlValueAccessor` |
| `KinkyRadio` | `kinky-radio` | Radio button with `ControlValueAccessor` |
| `KinkyCheckbox` | `kinky-checkbox` | Accessible checkbox with `ControlValueAccessor` |
| `KinkySwitch` | `kinky-switch` | Toggle switch |
| `KinkyAccordionItem` | `kinky-accordion-item` | Expandable accordion item |
| `KinkyRange` | `kinky-range` | Dual min/max text-input range display |
| `KinkySlider` | `kinky-slider` | Low-level draggable range thumb |
| `KinkyNavigationDots` | `kinky-navigation-dots` | Adaptive carousel pagination dots |
| `KinkyPopup` | `kinky-popup` | Configurable modal dialog |
| `KinkyQuickLinkItem` | `kinky-quick-link-item` | Router-linked quick-filter chip |
| `KinkyRangeSlider` | `kinky-range-slider` | Full range slider with `ControlValueAccessor` |
| `KinkyStatusIndicator` | `kinky-status-indicator` | Online/offline presence dot |
| `KinkyTabs` | `kinky-tabs` | Horizontally scrollable tab bar |

## Usage example

```typescript
import { KinkyButtonComponent, MyButtonTypeEnum } from '@kinky/ui';

@Component({
  imports: [KinkyButtonComponent],
  template: `
    <kinky-button [config]="btn" />
  `
})
export class DemoComponent {
  btn = { type: MyButtonTypeEnum.Primary, buttonText: 'Click me' };
}
```

## Exported API

| Category | Exports |
|---|---|
| **Components** | See table above |
| **Enums** | `MyButtonTypeEnum`, `MyButtonTranslationTypeEnum`, `MyButtonAlignmentEnum`, `IndicatorStatusEnum`, `QuickLinkTypeEnum`, `TransferStateEnum` |
| **Interfaces** | `IRangeSliderConfig`, `IPopupConfig`, `IPopupButton`, `IPopupState`, `IQuickLinkItem` |
| **Pipes** | `TranslatePipe` |
| **Services** | `PlatformService` |
| **Mixins** | `WithDestroy` |

## Building locally

```bash
ng build exterior-ui
```

Output is placed in `dist/exterior-ui/`.

## Publishing

```bash
cd dist/exterior-ui
npm publish --access public
```
npm package: @kinna/wx-mini
Description: @kinna/wx-mini为简易版微信小程序快速构建脚手架，可实现以下功能： - 快速创建微信小程序项目 - 快速创建页面目录以及子文件，并添加对应的分包配置 - 快速删除文件目录，并删除对应的分包配置 - 快速创建组件以及子文件 - 监测文件变化实时变更小程序代码 - 快速分环境打包不同AppID下的项目程序
Author: 5kinna
Latest version: 1.1.1

# @kinna/wx-mini
## 简介
@kinna/wx-mini为简易版微信小程序快速构建脚手架，可实现以下功能：
- 快速创建微信小程序项目
- 快速创建页面目录以及子文件，并添加对应的分包配置
- 快速删除文件目录，并删除对应的分包配置
- 快速创建组件以及子文件
- 监测文件变化实时变更小程序代码
- 快速分环境打包不同AppID下的项目程序

## 特别说明
- 脚手架下的css预处理器默认选用scss
- 脚手架默认选用js，而不使用ts（后续会考虑）
- 初始化项目后会默认在项目目录下建立mini.config.json文件，用作后续的自定义配置
## 安装
```bash
npm i @kinna/wx-mini -g
```

## 用法
```bash
mini <command> [options]
```
**Commands:**
| 命令 | 说明 |
| --- | --- |
|init [projectName] | 初始化微信小程序项目 |
|page | 创建页面目录以及子文件并添加对应配置 |
|com | 创建组件目录以及子文件 |
|rm | 删除页面目录以及对应的配置 |
|help | 获取使用说明 |

## 说明
-  创建项目

运行以下命令创建微信小程序项目
```bash
mini init [projectName]
```
[projectName]为选填项，如若不带参数，则会询问对应的项目名称。
> 项目名称必须为不存在的才可创建
---
- 创建页面目录

运行以下命令创建微信小程序页面目录
```bash
mini page <页面相对路径>
```
> 页面路径是相对于src目录而言，例如：/test/test，则会在src下创建test/test/index.wxml,test/test/index.scss,test/test/index.json,test/test/index.js,并且如若是分包加载，则会在app.json中添加对应的分包配置
---
- 创建组件目录

运行以下命令创建微信小程序组件目录
```bash
mini con <组件名称>
```
> 组件会被添加到component目录下
---
- 删除页面目录

运行以下命令删除微信小程序页面目录
```bash
mini rm <页面相对路径>
```
> 页面路径是相对于src目录而言，例如：/test/test，则会删除src下的test/test下的全部文件,并且如若是分包加载，则会将app.json中对应的分包配置删除
---
- 构建热加载

运行以下命令构建热加载
```bash
npm run dev
```
> 该环境下会监测文件的变化，并将构建后的文件放置到example目录下
---
- 构建测试环境项目

运行以下命令构建测试环境项目
```bash
npm t
```
> 该环境下会重构项目文件放置到example目录下
---
- 构建正式环境项目

运行以下命令构建正式环境项目
```bash
npm run build
```
> 该环境下会重构项目文件放置到dist目录下

## 配置文件
可在项目目录下建立mini.config.json文件用作自定义配置文件。

**参数:**
| 参数 | 说明 | 默认值 |
| --- | --- | --- |
|css | 小程序使用的css预处理器|scss|
|pageSrc | 创建页面时相对于项目的路径 |/src|
|comSrc | 创建组件时相对于项目的路径 |/src/component|
npm package: @kinngyo/miniprogram-request
Description: 基于小程序二次封装request
Author: kinngyo
Latest version: 0.0.5

# miniprogram-request

-   miniprogram-request 支持微信、抖音多平台小程序请求封装

## 安装

```sh
npm i @kinngyo/miniprogram-request
# 或
npm add @kinngyo/miniprogram-request
```

## 基本使用

### 微信小程序

```ts
import MiniprogramRequest from '@kinngyo/miniprogram-request'

// 微信实例化
const wxRequest = new MiniprogramRequest<
    {},
    WechatMiniprogram.RequestOption,
    WechatMiniprogram.RequestTask
>(wx.request, {
    baseURL: 'https://example.com',
})

// 发送请求
wxRequest.request({ url: '/login' })
```

### 抖音小程序

```ts
import MiniprogramRequest from '@kinngyo/miniprogram-request'

// 抖音
const ttRequest = new MiniprogramRequest<{}, Parameters<typeof tt.request>[0]>(
    tt.request,
    {
        baseURL: 'https://example.com',
    },
)

// 发送请求
ttRequest.request({ url: '/login' })
```

### 添加节流

```ts
import MiniprogramRequest from '@kinngyo/miniprogram-request'

const wxRequest = new MiniprogramRequest(wx.request, {
    baseURL: 'https://example.com',
    throttle: new MiniprogramRequest.ThrottleController({ time: 1000 }),
})

// 发送请求
ttRequest.request({ url: '/login' })
```

## 高级用法

### 自定义参数

```ts
// 微信实例化
const wxRequest = new MiniprogramRequest<
    { format: boolean; toast: boolean },
    WechatMiniprogram.RequestOption
>(wx.request, {
    baseURL: 'https://example.com',
    format: true, // 可在拦截器中用于返回格式化
    toast: true, // 可在拦截器中用于弹窗提示
})
```

### 添加拦截器

```ts
import MiniprogramRequest, {
    type RequestConfig,
} from '@kinngyo/miniprogram-request'

const wxRequest = new MiniprogramRequest(wx.request)

// 请求拦截器
const requestInterceptorManager = new MiniprogramRequest.InterceptorManager()
requestInterceptorManager.add<RequestConfig>({
    fulfilled(config) {
        return config
    },
})

// 响应拦截器
const responseInterceptorManager = new MiniprogramRequest.InterceptorManager()
requestInterceptorManager.add<RequestConfig, RequestConfig>(() => {
    return {
        fulfilled(config) {
            return config
        },
        rejected(config) {
            return config
        },
    }
})

// 使用拦截器
wxRequest.use(requestInterceptorManager, responseInterceptorManager)

// 发送请求
wxRequest.request({ url: '/login' })
```

### 自定义节流

```ts
import MiniprogramRequest from '@kinngyo/miniprogram-request'

const throttle = MiniprogramRequest.ThrottleController({ time: 600 })

// 自定义回调
throttle.promise((resolve, reject) => { reject(new Error("频繁操作"))) })

// 使用节流
const wxRequest = new MiniprogramRequest(wx.request, { throttle })
```
npm package: @kinngyo/nb
Description: 小程序快速删除、安装、构建npm依赖包
Author: kinngyo
Latest version: 0.0.7

# @kinngyo/nb

小程序快速删除、安装、构建npm依赖包

## 使用

Usage: @kinngyo/nb [options] [command]

```bash
# 查看帮助
npx @kinngyo/nb -h

# 基本使用
npx @kinngyo/nb
```

## 参数(options)

| 参数              | 类型   | 必填 | 可选 | 说明                                  | 默认值        |
| ----------------- | ------ | ---- | ---- | ------------------------------------- | ------------- |
| -h, --help        | string | 否   | --   | 查看帮助                              | --            |
| -v,--version      | string | 否   | --   | 版本                                  | --            |
| -r,--root         | string | 否   | --   | 运行根目录                            | process.cwd() |
| -s, --select-type | string | 否   | -    | 手动选择依赖包 'single' 、 'multiple' | single        |

## 子命令(command)

| 参数    | 别名 | 说明                |
| ------- | ---- | ------------------- |
| remove  | rm   | 删除小程序npm依赖包 |
| install | i    | 安装小程序npm依赖包 |
| build   | -    | 构建小程序npm依赖包 |
npm package: @kinngyo/package-publish
Description: 基于npm命令开发的快速发布npm流程
Author: kinngyo
Latest version: 0.0.3

# Deprecated!

该包已弃用,不再更新维护。请使用[@kinngyo/np](https://www.npmjs.com/package/@kinngyo/np)替代

# package-publish

基于 npm 命令快速生成发布版本

# 使用

## 安装

```sh
yarn add @kinngyo/package-publish -D
# 或者
npm i @kinngyo/package-publish -D
```

## 使用

### 命令

```sh
# 查看使用
package-publish -h
```

### API

```ts
import PackagePublish from '@kinngyo/package-publish'

const pp = new PackagePublish()

pp.publish()
```

## cmd 参数

| 属性         | 类型    | 必填 | 可选                  | 说明                 | 默认值        |
| ------------ | ------- | ---- | --------------------- | -------------------- | ------------- |
| -R,--root    | string  | 否   | --                    | 运行目录             | process.cwd() |
| --remote     | boolean | 否   | ---                   | 是否远程查询该包版本 | --            |
| ---no-remote | boolean | 否   | --                    | 禁止远程查询该包版本 | --            |
| --tag        | string  | 否   | --                    | 发布时候的 tag 标签  | --            |
| --access     | string  | 否   | 'restricted'/'public' | 私有包访问权限       | --            |
| --registry   | string  | 否   | --                    | 发布源               | --            |

## options

| 属性     | 类型    | 必填 | 可选                  | 说明                 | 默认值        |
| -------- | ------- | ---- | --------------------- | -------------------- | ------------- |
| root     | string  | 否   | -                     | 运行目录             | process.cwd() |
| remote   | boolean | 否   | true/false            | 是否远程查询该包版本 | true          |
| tag      | string  | 否   | -                     | 发布时候的 tag 标签  | 'latest'      |
| access   | string  | 否   | 'restricted'/'public' | 私有包访问权限       | 'restricted'  |
| registry | string  | 否   | -                     | 发布源               | --            |
npm package: @kinngyo/tt-request
Description: 基于@kinngyo/miniprogram-request封装抖音小程序快速网络API
Author: kinngyo
Latest version: 0.0.3

# tt-request

-   `@kinngyo/tt-request` 是基于 `@kinngyo/miniprogram-request` 支持微信小程序请求封装,默认支持 get、post、request 方法

## 安装

```sh
npm i @kinngyo/tt-request
# 或
yarn add @kinngyo/tt-request
```

## 基本使用

```ts
import Request from '@kinngyo/tt-request'

// 微信实例化
const request = new Request({
    baseURL: 'https://example.com',
})

// 发送请求
request.get({ url: '/login' })
```

### 添加节流

```ts
import Request from '@kinngyo/tt-request'

const request = new Request({
    baseURL: 'https://example.com',
    throttle: new Request.ThrottleController({ time: 1000 }),
})

// 发送请求
request.get({ url: '/login' })
```

## 高级用法

### 自定义参数

```ts
// 微信实例化
const request = new Request<{ format: boolean; toast: boolean }>({
    baseURL: 'https://example.com',
    format: true, // 可在拦截器中用于返回格式化
    toast: true, // 可在拦截器中用于弹窗提示
})
```

### 添加拦截器

```ts
import Request, { type RequestConfig } from '@kinngyo/tt-request'

const request = new Request()

// 请求拦截器
const requestInterceptorManager = new Request.InterceptorManager()
requestInterceptorManager.add<RequestConfig>({
    fulfilled(config) {
        return config
    },
})

// 响应拦截器
const responseInterceptorManager = new Request.InterceptorManager()
requestInterceptorManager.add<RequestConfig, RequestConfig>(() => {
    return {
        fulfilled(config) {
            return config
        },
        rejected(config) {
            return config
        },
    }
})

// 使用拦截器
request.use(requestInterceptorManager, responseInterceptorManager)

// 发送请求
request.get({ url: '/login' })
```

### 自定义节流

```ts
import Request from '@kinngyo/tt-request'

const throttle = Request.ThrottleController({ time: 600 })

// 自定义回调
throttle.promise((resolve, reject) => { reject(new Error("频繁操作"))) })

// 使用节流
const request = new Request({ throttle })
```
npm package: @kinngyo/wx-navigate
Description: -   基于小程序路由二次封装、不用考虑 tabBar 页面跳转的烦恼
Author: kinvirgo
Latest version: 0.0.1

# @kinngyo/wx-navigate

-   基于小程序路由二次封装、不用考虑 tabBar 页面跳转的烦恼

## 安装

```sh
npm i @kinngyo/wx-navigate
# 或者
yarn add @kinngyo/wx-navigate
```

## 使用

```ts
import Navigate from '@kinngyo/wx-navigate'

const navigate = new Navigate()

navigate.to('/pages/index/index')
```

## API

| 方法名    | 参数                                                | 默认值 | 返回值  | 介绍                                             |
| --------- | --------------------------------------------------- | ------ | ------- | ------------------------------------------------ |
| to        | option: NavigateToOption \| NavigateSwitchTabOption | --     | Promise | 跳转某个页面                                     |
| replace   | option: NavigateReplaceToOption                     | --     | Promise | 关闭当前页面，跳转到应用内的某个页面             |
| back      | option: NavigateBackOption                          | 1      | Promise | 关闭当前页面，返回上一页面或多级页面             |
| reLaunch  | option: NavigateReLaunchOption                      | --     | Promise | 关闭所有页面，打开到应用内的某个页面             |
| switchTab | option: NavigateSwitchTabOption                     | --     | Promise | 跳转到 tabBar 页面，并关闭其他所有非 tabBar 页面 |
| isTabbar  | url: string                                         | --     | Boolean | 是否是 tabBar 页面                               |

## 类型

```ts
type NavigateToOption = WechatMiniprogram.NavigateToOption | string

type NavigateSwitchTabOption = WechatMiniprogram.SwitchTabOption | string

type NavigateBackOption = WechatMiniprogram.NavigateBackOption | string | number

type NavigateReplaceToOption = WechatMiniprogram.RedirectToOption | string

type NavigateReLaunchOption = WechatMiniprogram.ReLaunchOption | string
```
npm package: @kinngyo/wx-request
Description: 基于@kinngyo/miniprogram-request封装微信小程序快速网络API
Author: kinngyo
Latest version: 0.0.5

# wx-request

-   `@kinngyo/wx-request` 是基于 `@kinngyo/miniprogram-request` 支持微信小程序请求封装,默认支持 get、post、request 方法

## 安装

```sh
npm i @kinngyo/wx-request
# 或
npm add @kinngyo/wx-request
```

## 基本使用

```ts
import Request from '@kinngyo/wx-request'

// 微信实例化
const request = new Request({
    baseURL: 'https://example.com',
})

// 发送请求
request.get({ url: '/login' })
```

### 添加节流

```ts
import Request from '@kinngyo/wx-request'

const request = new Request({
    baseURL: 'https://example.com',
    throttle: new Request.ThrottleController({ time: 1000 }),
})

// 发送请求
request.get({ url: '/login' })
```

## 高级用法

### 自定义参数

```ts
// 微信实例化
const request = new Request<{ format: boolean; toast: boolean }>({
    baseURL: 'https://example.com',
    format: true, // 可在拦截器中用于返回格式化
    toast: true, // 可在拦截器中用于弹窗提示
})
```

### 添加拦截器

```ts
import Request, { type RequestConfig } from '@kinngyo/wx-request'

const request = new Request()

// 请求拦截器
const requestInterceptorManager = new Request.InterceptorManager()
requestInterceptorManager.add<RequestConfig>({
    fulfilled(config) {
        return config
    },
})

// 响应拦截器
const responseInterceptorManager = new Request.InterceptorManager()
requestInterceptorManager.add<RequestConfig, RequestConfig>(() => {
    return {
        fulfilled(config) {
            return config
        },
        rejected(config) {
            return config
        },
    }
})

// 使用拦截器
request.use(requestInterceptorManager, responseInterceptorManager)

// 发送请求
request.get({ url: '/login' })
```

### 自定义节流

```ts
import Request from '@kinngyo/wx-request'

const throttle = Request.ThrottleController({ time: 600 })

// 自定义回调
throttle.promise((resolve, reject) => { reject(new Error("频繁操作"))) })

// 使用节流
const request = new Request({ throttle })
```
npm package: @kinny/kinetic-keypair
Description: Kinetic is an open-source suite of tools that make it easy to build apps that integrate Solana.
Latest version: 1.0.0-rc.18-6

# @kinny/kinetic-keypair

Kinetic is an open-source suite of tools that make it easy to build apps that integrate Solana.

It provides a consistent and clean abstraction over the Solana SDKs and enhances it with some commonly requested features like paying Solana fees on behalf of the user, tracking and timing the users transactions and sending out webhooks.

Kinetic is aimed at developers that want to build crypto-experiences for the users of their app, hiding a lot of the details about the blockchain out of sight for both the developer and the end user.

## Kinetic TypeScript SDK

See how to use Kinetic in your TypeScript app [here](https://developer.kin.org/docs/developers/typescript).

Or use one of our other SDKs:

- [Kinetic Android SDK](https://developer.kin.org/docs/developers/android-kotlin)
- [Kinetic Dart/Flutter SDK](https://developer.kin.org/docs/developers/flutter-dart)
- [Kinetic iOS SDK](https://developer.kin.org/docs/developers/ios-swift)
- [Kinetic Python SDK](https://developer.kin.org/docs/developers/python)
- [Kinetic Unity SDK](https://developer.kin.org/docs/developers/unity)

Learn more about Kinetic [here](https://developer.kin.org/docs/kinetic).

## Kin

Simply put, Kin is money for the digital world, and it provides a way for developers (like you) to monetize their apps and websites in a fundamentally new way. Kin exists as a token on Solana, a consumer-grade blockchain built for scale. Solana is fast, decentralized and secure, making it the perfect home for Kin.

Learn more about Kin [here](https://www.kin.org/).

## What If I Get Stuck?

Pop into the [#kinetic-general](https://discord.com/channels/808859554997469244/973322547854733362) channel on our [Discord](https://kin.org/developerdiscord), and we'll give you a hand!
npm package: @kinny/kinetic-sdk
Description: Kinetic is an open-source suite of tools that make it easy to build apps that integrate Solana.
Latest version: 1.0.0-rc.18-9

# @kinny/kinetic-sdk

Kinetic is an open-source suite of tools that make it easy to build apps that integrate Solana.

It provides a consistent and clean abstraction over the Solana SDKs and enhances it with some commonly requested features like paying Solana fees on behalf of the user, tracking and timing the users transactions and sending out webhooks.

Kinetic is aimed at developers that want to build crypto-experiences for the users of their app, hiding a lot of the details about the blockchain out of sight for both the developer and the end user.

## Kinetic TypeScript SDK

See how to use Kinetic in your TypeScript app [here](https://developer.kin.org/docs/developers/typescript).

Or use one of our other SDKs:

- [Kinetic Android SDK](https://developer.kin.org/docs/developers/android-kotlin)
- [Kinetic Dart/Flutter SDK](https://developer.kin.org/docs/developers/flutter-dart)
- [Kinetic iOS SDK](https://developer.kin.org/docs/developers/ios-swift)
- [Kinetic Python SDK](https://developer.kin.org/docs/developers/python)
- [Kinetic Unity SDK](https://developer.kin.org/docs/developers/unity)

Learn more about Kinetic [here](https://developer.kin.org/docs/kinetic).

## Kin

Simply put, Kin is money for the digital world, and it provides a way for developers (like you) to monetize their apps and websites in a fundamentally new way. Kin exists as a token on Solana, a consumer-grade blockchain built for scale. Solana is fast, decentralized and secure, making it the perfect home for Kin.

Learn more about Kin [here](https://www.kin.org/).

## What If I Get Stuck?

Pop into the [#kinetic-general](https://discord.com/channels/808859554997469244/973322547854733362) channel on our [Discord](https://kin.org/developerdiscord), and we'll give you a hand!
npm package: @kinny/kinetic-solana
Description: Kinetic is an open-source suite of tools that make it easy to build apps that integrate Solana.
Latest version: 1.0.0-rc.18-5

# @kinny/kinetic-solana

Kinetic is an open-source suite of tools that make it easy to build apps that integrate Solana.

It provides a consistent and clean abstraction over the Solana SDKs and enhances it with some commonly requested features like paying Solana fees on behalf of the user, tracking and timing the users transactions and sending out webhooks.

Kinetic is aimed at developers that want to build crypto-experiences for the users of their app, hiding a lot of the details about the blockchain out of sight for both the developer and the end user.

## Kinetic TypeScript SDK

See how to use Kinetic in your TypeScript app [here](https://developer.kin.org/docs/developers/typescript).

Or use one of our other SDKs:

- [Kinetic Android SDK](https://developer.kin.org/docs/developers/android-kotlin)
- [Kinetic Dart/Flutter SDK](https://developer.kin.org/docs/developers/flutter-dart)
- [Kinetic iOS SDK](https://developer.kin.org/docs/developers/ios-swift)
- [Kinetic Python SDK](https://developer.kin.org/docs/developers/python)
- [Kinetic Unity SDK](https://developer.kin.org/docs/developers/unity)

Learn more about Kinetic [here](https://developer.kin.org/docs/kinetic).

## Kin

Simply put, Kin is money for the digital world, and it provides a way for developers (like you) to monetize their apps and websites in a fundamentally new way. Kin exists as a token on Solana, a consumer-grade blockchain built for scale. Solana is fast, decentralized and secure, making it the perfect home for Kin.

Learn more about Kin [here](https://www.kin.org/).

## What If I Get Stuck?

Pop into the [#kinetic-general](https://discord.com/channels/808859554997469244/973322547854733362) channel on our [Discord](https://kin.org/developerdiscord), and we'll give you a hand!
npm package: @kinobi-so/node-types
Description: Node specifications for the Kinobi standard
Latest version: 0.22.0

# Kinobi ➤ Node Types

[![npm][npm-image]][npm-url]
[![npm-downloads][npm-downloads-image]][npm-url]

[npm-downloads-image]: https://img.shields.io/npm/dm/@kinobi-so/node-types.svg?style=flat
[npm-image]: https://img.shields.io/npm/v/@kinobi-so/node-types.svg?style=flat&label=%40kinobi-so%2Fnode-types
[npm-url]: https://www.npmjs.com/package/@kinobi-so/node-types

This package is the type-only version of the `@kinobi-so/nodes` package. Check out the [nodes documentation](../nodes) for more information.

## Installation

```sh
pnpm install @kinobi-so/node-types
```

> [!NOTE]
> This package is included in the [`@kinobi-so/nodes`](../nodes) package and in the main [`kinobi`](../library) library. Meaning, you already have access to its content if you are installing Kinobi in one of these ways.
>
> ```sh
> pnpm install @kinobi-so/nodes
> pnpm install kinobi
> ```
npm package: @kinobi-so/nodes-from-anchor
Description: Node specifications and helpers for the Kinobi standard
Latest version: 0.22.0

# Kinobi ➤ Nodes From Anchor

[![npm][npm-image]][npm-url]
[![npm-downloads][npm-downloads-image]][npm-url]

[npm-downloads-image]: https://img.shields.io/npm/dm/@kinobi-so/nodes-from-anchor.svg?style=flat
[npm-image]: https://img.shields.io/npm/v/@kinobi-so/nodes-from-anchor.svg?style=flat&label=%40kinobi-so%2Fnodes-from-anchor
[npm-url]: https://www.npmjs.com/package/@kinobi-so/nodes-from-anchor

This package converts Anchor IDLs from various versions into Kinobi IDLs.

## Installation

```sh
pnpm install @kinobi-so/nodes-from-anchor
```

> [!NOTE]
> This package is **not** included in the main [`kinobi`](../library) package.

## Functions

### `rootNodeFromAnchor(anchorIdl)`

This function takes a valid Anchor IDL and returns a `RootNode`.

```js
// node ./kinobi.mjs
import { rootNodeFromAnchor } from '@kinobi-so/nodes-from-anchor';
import { createFromRoot } from 'kinobi';
import { readFileSync } from 'node:fs';
import path from 'path';

// Read the content of your IDL file.
const anchorIdlPath = path.join(__dirname, 'target', 'idl', 'anchor_program.json');
const anchorIdl = JSON.parse(readFileSync(anchorIdlPath, 'utf-8'));

// Parse it into a Kinobi IDL.
const kinobi = createFromRoot(rootNodeFromAnchor(anchorIdl));
```
npm package: @kinobi-so/renderers
Description: Exports all Kinobi renderers
Latest version: 0.22.0

# Kinobi ➤ Renderers

[![npm][npm-image]][npm-url]
[![npm-downloads][npm-downloads-image]][npm-url]

[npm-downloads-image]: https://img.shields.io/npm/dm/@kinobi-so/renderers.svg?style=flat
[npm-image]: https://img.shields.io/npm/v/@kinobi-so/renderers.svg?style=flat&label=%40kinobi-so%2Frenderers
[npm-url]: https://www.npmjs.com/package/@kinobi-so/renderers

This package re-exports all available renderers for Kinobi IDLs.

## Installation

```sh
pnpm install @kinobi-so/renderers
```

> [!NOTE]
> This package is **not** included in the main [`kinobi`](../library) package.

## Available renderers

The following renderer packages are included in this package:

-   [`@kinobi-so/renderers-js`](../renderers-js) as `renderJavaScriptVisitor`
-   [`@kinobi-so/renderers-js-umi`](../renderers-js-umi) as `renderJavaScriptUmiVisitor`
-   [`@kinobi-so/renderers-rust`](../renderers-rust) as `renderRustVisitor`

```ts
// node ./kinobi.mjs
import { renderJavaScriptVisitor, renderJavaScriptUmiVisitor, renderRustVisitor } from '@kinobi-so/renderers';

kinobi.accept(renderJavaScriptVisitor('clients/js/src/generated'));
kinobi.accept(renderJavaScriptUmiVisitor('clients/js-umi/src/generated'));
kinobi.accept(renderRustVisitor('clients/rust/src/generated'));
```
npm package: @kinobi-so/validators
Description: Validator visitors for the Kinobi framework
Latest version: 0.22.0

# Kinobi ➤ Validators

[![npm][npm-image]][npm-url]
[![npm-downloads][npm-downloads-image]][npm-url]

[npm-downloads-image]: https://img.shields.io/npm/dm/@kinobi-so/validators.svg?style=flat
[npm-image]: https://img.shields.io/npm/v/@kinobi-so/validators.svg?style=flat&label=%40kinobi-so%2Fvalidators
[npm-url]: https://www.npmjs.com/package/@kinobi-so/validators

This package offers a set of validation rules for Kinobi IDLs to ensure that they are correctly formatted.

## Installation

```sh
pnpm install @kinobi-so/validators
```

> [!NOTE]
> This package is included in the main [`kinobi`](../library) package. Meaning, you already have access to its content if you are installing Kinobi this way.
>
> ```sh
> pnpm install kinobi
> ```

## Types

### `ValidationItem`

A validation item describes a single piece of information — typically a warning or an error — about a node in the Kinobi IDL.

```ts
type ValidationItem = {
    // The level of importance of a validation item.
    level: 'debug' | 'trace' | 'info' | 'warn' | 'error';
    // A human-readable message describing the issue or information.
    message: string;
    // The node that the validation item is related to.
    node: Node;
    // The stack of nodes that led to the node above.
    stack: readonly Node[];
};
```

## Functions

### `getValidationItemsVisitor(visitor)`

The `getValidationItemsVisitor` function returns a visitor that collects all validation items from a Kinobi IDL. Note that this visitor is still a work in progress and does not cover all validation rules.

```ts
import { getValidationItemsVisitor } from '@kinobi-so/validators';

const validationItems = kinobi.accept(getValidationItemsVisitor());
```

### `throwValidatorItemsVisitor(visitor)`

The `throwValidatorItemsVisitor` function accepts a `Visitor<ValidationItemp[]>` and throws an error if any validation items above a certain level are found. By default, the level is set to `'error'` but a second argument can be passed to change it.

```ts
import { throwValidatorItemsVisitor, getValidationItemsVisitor } from '@kinobi-so/validators';

// Throw if any "error" items are found.
kinobi.accept(throwValidatorItemsVisitor(getValidationItemsVisitor()));

// Throw if any "warn" or "error" items are found.
kinobi.accept(throwValidatorItemsVisitor(getValidationItemsVisitor(), 'warn'));
```
npm package: @kinolanka/check-my-deps
Description: Easily manage and monitor project dependencies.
Author: Volodymyr Mashkin
Latest version: 1.0.0

# check-my-deps

A Node.js CLI tool to analyze npm dependencies and generate comprehensive reports of installed versions versus latest available versions. The tool also provides the ability to update dependencies according to specified semver rules.

## Features

- Analyzes all dependencies in your project
- Detects outdated packages (patch, minor, major updates)
- Identifies deprecated packages
- Exports detailed reports in Excel or JSON format
- Provides summary statistics by dependency type
- Updates dependencies to their latest versions based on semver rules

## Installation & Usage

```sh
# Run directly with npx
npx @kinolanka/check-my-deps@latest
```

## Commands

### Export Command

Analyze dependencies in package.json and export a detailed report with version information.

```sh
# Export dependencies report (default command)
npx @kinolanka/check-my-deps@latest export

# Export with specific options
npx @kinolanka/check-my-deps@latest export --format json --output-dir ./reports
```

#### Export Options

- `-c, --cwd <cwd>` - The working directory where package.json is located. Defaults to the current directory.
- `-o, --output-dir <outputDir>` - The directory where the export file will be saved. Defaults to the current directory.
- `-s, --silent` - Prevent any output to the terminal.
- `-f, --force-overwrite` - Overwrite existing export files instead of creating unique filenames.
- `--format <format>` - The format of the export file (excel or json). Defaults to excel.

### Update Command

Update package.json dependencies according to specified semver rules.

```sh
# Check for updates without making changes
npx @kinolanka/check-my-deps@latest update --dry-run

# Update all dependencies to their latest versions
npx @kinolanka/check-my-deps@latest update

# Update dependencies to latest patch versions only
npx @kinolanka/check-my-deps@latest update --level patch
```

#### Update Options

- `-c, --cwd <cwd>` - The working directory where package.json is located. Defaults to the current directory.
- `-s, --silent` - Prevent any output to the terminal.
- `-l, --level <level>` - Specify the semver update level (latest, minor, patch). Controls how aggressive updates will be. Defaults to latest.
- `-d, --dry-run` - Show what would be updated without making actual changes to package.json.

### General Options

```sh
# Get help
npx @kinolanka/check-my-deps@latest -h

# Check version
npx @kinolanka/check-my-deps@latest -v
```

## License

MIT

---

For more information, visit [https://checkmydeps.com](https://checkmydeps.com)
npm package: @kinolanka/eslint-config
Description: Eslint config profiles for different types of projects.
Author: kinolanka
Latest version: 0.0.1
Deprecated: Package no longer supported. Contact Support at https://www.npmjs.com/support for more info.

# `@kinolanka/eslint-config`

> [ESLint](https://eslint.org/) config profiles for different types of projects.

## Usage

**Install**:

```bash
$ npm i -D @kinolanka/eslint-config
```

**Edit `.eslintrc.json`**:

```json
{
  "extends": "@kinolanka/eslint-config/profile/<profile-name>"
}
```

Available profiles:

- @kinolanka/eslint-config/profile/next
npm package: @kinolanka/eslint-config-next
Description: Eslint config for nextjs
Author: Volodymyr Mashkin
Latest version: 1.0.1

# `@kinolanka/eslint-config-next`

> [ESLint](https://eslint.org/) config for Nextjs projects.

## Usage

**Install**:

```bash
$ npm i -D @kinolanka/eslint-config-next
```

**Edit `.eslintrc.json`**:

```json
{
  "extends": "@kinolanka/eslint-config-next"
}
```
npm package: @kinolanka/mcp-notify
Description: MCP notification server with bundled audio notifications and custom audio support for WSL.
Author: Volodymyr Mashkin
Latest version: 0.0.3

# MCP Notify

A lightweight Model Context Protocol (MCP) server that provides audio notifications and desktop alerts for MCP-compatible AI clients.

> **⚠️ WSL Only**: Currently supports Windows Subsystem for Linux (WSL) only. Support for other operating systems will be added in future versions.

## Quick Start

Add to your MCP client configuration:

```json
{
  "mcpServers": {
    "notifications": {
      "command": "npx",
      "args": ["-y", "@kinolanka/mcp-notify@latest"]
    }
  }
}
```

## Usage

### Setting Up Notification Rules

Your AI client needs rules to know when to use notifications. Add these to your client's rules file:

```markdown
# Notification Rules

## When to notify:
- Use `notify` tool for important status updates
- Use `task_completed` tool when finishing long-running tasks (builds, tests, deployments)
- Always notify on critical errors or failures
- Notify when waiting for user input or manual intervention

## Examples:
- After running tests: "Task completed - All tests passed ✅"
- On build completion: "Build finished successfully 🚀"
- On errors: "Error occurred in deployment ❌"
```

### Available Tools

- `notify` - Show notification with title and message
- `task_completed` - Show task completion notification

### Options

| Option               | Description                      |
| -------------------- | -------------------------------- |
| `--audio, -a <path>` | Use custom audio file            |
| `--no-audio`         | Silent mode (notifications only) |
| `--no-notification`  | Disable desktop notifications    |

### Examples

**Custom audio:**

```json
{
  "command": "npx",
  "args": ["-y", "@kinolanka/mcp-notify@latest", "--audio", "/path/to/sound.wav"]
}
```

**Silent mode:**

```json
{
  "command": "npx",
  "args": ["-y", "@kinolanka/mcp-notify@latest", "--no-audio"]
}
```

## Audio System

1. **Custom audio** (if specified) - plays via `paplay`
2. **Bundled audio** (default) - included notification sound

## Troubleshooting

**No sound in IDE terminals?** This is expected - IDE terminals often have limited audio access. Desktop notifications will still work.

**Test audio manually:**

```bash
paplay /usr/share/sounds/alsa/Front_Left.wav
```

## License

MIT License
npm package: @kinolanka/prettier-config
Description: Prettier config
Author: Volodymyr Mashkin
Latest version: 1.1.0

# `@kinolanka/prettier-config`

> [Prettier](https://prettier.io) config.

## Usage

**Install**:

```bash
$ npm i -D @kinolanka/prettier-config
```

**Edit `.prettierrc.json`**:

```jsonc
"@kinolanka/prettier-config"
```
npm package: @kinolanka/stylelint-config
Description: Stylelint config profiles for different types of projects.
Author: kinolanka
Latest version: 0.0.1
Deprecated: Package no longer supported. Contact Support at https://www.npmjs.com/support for more info.

# `@kinolanka/stylelint-config`

> [Stylelint](https://stylelint.io/) config profiles for different types of projects.

## Usage

**Install**:

```bash
$ npm i -D @kinolanka/stylelint-config
```

**Edit `.stylelintrc.json`**:

```json
{
  "extends": "@kinolanka/stylelint-config/profile/<profile-name>"
}
```

Available profiles:

- @kinolanka/stylelint-config/profile/tailwind
npm package: @kinosuke01/playwright-md-reporter
Description: A Playwright test reporter that generates Markdown reports
Latest version: 0.0.2

# playwright-md-reporter

A Playwright test reporter that generates beautiful Markdown reports with test summaries, detailed results, and error information.

[![npm version](https://badge.fury.io/js/@kinosuke01%2Fplaywright-md-reporter.svg)](https://badge.fury.io/js/@kinosuke01%2Fplaywright-md-reporter)
[![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)

## Features

- 📊 **Comprehensive Test Summary** - Overview of passed, failed, skipped, and flaky tests
- ⏱️ **Duration Tracking** - Test execution time and success rates
- 📝 **Detailed Results** - Organized by test file with individual test outcomes
- 🔍 **Error Details** - Stack traces and error messages for failed tests
- 🎨 **Clean Markdown Output** - Easy to read and integrate with documentation
- ⚙️ **Customizable Options** - Configure output file, title, and included information

## Installation

```bash
npm install --save-dev @kinosuke01/playwright-md-reporter
```

## Usage

Add the reporter to your `playwright.config.js` or `playwright.config.ts`:

```javascript
import { defineConfig } from '@playwright/test';

export default defineConfig({
  reporter: [
    ['@kinosuke01/playwright-md-reporter', {
      outputDir: 'test-results',
      filename: 'report.md'
    }]
  ],
  // ... other configuration
});
```

Run your tests:

```bash
npx playwright test
```

## Configuration Options

| Option | Type | Default | Description |
|--------|------|---------|-------------|
| `outputDir` | `string` | `'playwright-md-report'` | Directory where the report will be generated |
| `filename` | `string` | `'index.md'` | Name of the output Markdown file |

## Example Output

The generated report includes:

- **Summary Section**: Total tests, pass/fail counts, success rate, and duration
- **Test Results**: Organized by file with individual test status and timing
- **Error Details**: Stack traces for failed tests (when enabled)
- **Metadata**: Generation timestamp

## Development

```bash
# Install dependencies
npm install

# Build the project
npm run build

# Lint and format
npm run lint:fix
npm run format

# Clean build artifacts
npm run clean
```

## Contributing

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

## License

MIT