open-index/open-npm huggingface dataset:
npm package: @skipsetup/generate
Description: AI-powered codebase scanner that generates .kiro AI context directories
Author: SkipSetup Team
Latest version: 1.0.1

# @skipsetup/kiro - Smart Discovery Engine

>   Make any project AI-agent ready with intelligent code analysis

[![npm version](https://badge.fury.io/js/@skipsetup%2Fkiro.svg)](https://www.npmjs.com/package/@skipsetup/kiro)
[![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)

##   What is Kiro?

Kiro is a **framework-agnostic discovery engine** that deeply analyzes your codebase and generates comprehensive, AI-ready context. It's designed for the **agentic AI era** where AI agents need to understand your entire project structure, patterns, and architecture.

### Why Kiro?

- 🚀 **Fast**: Scans 200+ files in ~1 second
-   **Accurate**: Parses actual code, not just file names
-   **Zero Config**: Works out of the box
-   **Framework Agnostic**: Supports Next.js, Expo, Vite, Remix, and more
-   **Multiple Formats**: JSON, Markdown, HTML exports
-   **AI-Ready**: Generates context for MCP (Model Context Protocol)

## 🚀 Quick Start

### Installation

```bash
# Use directly with npx (recommended)
npx @skipsetup/kiro scan

# Or install globally
npm install -g @skipsetup/kiro
pnpm add -g @skipsetup/kiro


# Kiro Discovery Engine - Phase 1 Complete  

## Core Features
-   Framework detection (Next.js, Expo, Vite, Remix, etc.)
-   File structure analysis (routes, components, API, etc.)
-   Dependency categorization (auth, database, UI, state, API)
-   Code parsing (imports, exports, functions, components)
-   Pattern detection (auth, database, API, state)
-   Statistics calculation (files, lines, complexity)

## Commands
-   `kiro scan` - Full project scan
-   `kiro analyze` - Detailed analysis by type
-   `kiro insights` - AI-powered insights
-   `kiro export` - Export to multiple formats

## Export Formats
-   JSON - Machine-readable format
-   Markdown - Documentation format
-   HTML - Beautiful interactive reports

## Output Quality
-   Fast scanning (~1 second for 200+ files)
-   Accurate detection (parses actual code)
-   Beautiful CLI output with colors and emojis
-   Comprehensive reports with recommendations

## Next Steps (Phase 2)
- 🚧 AI-enhanced context generation
- 🚧 MCP server integration
- 🚧 Real-time code understanding
- 🚧 Specialized AI agents
npm package: @skireal/form-builder
Description: Form builder for Angular apps
Latest version: 0.0.34

# FormBuilder

This library was generated with [Angular CLI](https://github.com/angular/angular-cli) version 9.0.7.

## Code scaffolding

Run `ng generate component component-name --project form-builder` to generate a new component. You can also use `ng generate directive|pipe|service|class|guard|interface|enum|module --project form-builder`.
> Note: Don't forget to add `--project form-builder` or else it will be added to the default project in your `angular.json` file. 

## Build

Run `ng build form-builder` to build the project. The build artifacts will be stored in the `dist/` directory.

## Publishing

After building your library with `ng build form-builder`, go to the dist folder `cd dist/form-builder` and run `npm publish`.

## Running unit tests

Run `ng test form-builder` to execute the unit tests via [Karma](https://karma-runner.github.io).

## Further help

To get more help on the Angular CLI use `ng help` or go check out the [Angular CLI README](https://github.com/angular/angular-cli/blob/master/README.md).
npm package: @skirtle/create-vue-lib
Description: Create a library using Vue and Vite
Author: skirtle
Latest version: 0.1.1

# @skirtle/create-vue-lib

A command-line utility for scaffolding a Vite project to build a Vue-based library.

Documentation: <https://skirtles-code.github.io/create-vue-lib/>

## Thanks

This project is inspired by the official [create-vue](https://github.com/vuejs/create-vue) scaffolding tool and wouldn't be possible without it. Many thanks to [Haoqun Jiang](https://github.com/haoqunjiang) for all the hard work he puts in to maintaining that project.

## License

MIT

Copyright &copy; 2025-2026, skirtle
npm package: @skirtle/example-vue-lib
Description: Example library created with @skirtle/create-vue-lib
Author: skirtle
Latest version: 0.0.4

# @skirtle/example-vue-lib

This is an example library, created with [`@skirtle/create-vue-lib`](https://github.com/skirtles-code/create-vue-lib/).

This library only exists to help test and document that tool, it is not intended to be used in real applications.

## Demos

- [Vue Playground](https://play.vuejs.org/#eNqlU01v2zAM/SuEL9lHbHfYTplXdBsCbAXWDduOvmg24yiRJUGiUxdB/vsofy0LmrZADwIkvqfHR0rcRx+tTXYNRoso84WTlsAjNRaU0NWHPCKfR5e5lrU1jmAPy1bUVuFnwwGNmubw7e6H0KjgACtnaphd+a10pDDFnhqzeqzkn1mus7RPwYJ8IGRYEPIJIKuF1N2O96dJIB2RMRlJzsD2jk55BCtjCN0U7o+d/3AZ4AuKEh0IXY5Yr5oOsk/KMqldN55AwLoTfUTpMWeD1lNcTXduzJAbjHvgZpYOrc3So45Hc37awuiVrJKNN5rffx/YeVRw16VC992SNJqffwEdEjChlLm97mLkGpyP8WKNxfae+Ma3IcZlO/Todty+CSPhKqQeXv66wZb3E1ibsgnNfgD8id6oJnjsaZ8aXbLtI17n9mv3c6WufvtlS6j9WFQwGpiHjp9H/E3DhztX+j+7b5N33b1cH7iL/WTEtbAnfeyB/0XOzUZfwZrI+kWaNtpuq4TfIT3HT0vp6TSYoK+TEndJveGsRxY93Sn0SeE9u7saRrlx6sXsuRlZcvbyfZjm8Mf6OmvRxreypDV36uLCtgyzj4FxCa/gNa+B6SqpYzJ2AW8mZnT4C74KhmM=) - ESM browser, development builds
- [Vue Playground](https://play.vuejs.org/#__PROD__eNqlU8tu2zAQ/JUFL+7DklK0J9cN0hYG2gBNi7ZHXRhpLTOmSIJcxQoM/3uXkqw6RpwEyEGAuDOcnR2SW/HZufS2QTET81B45QgCUuNAS1N9ygWFXJznRtXOeoItLFpZO41fLRcMGprCj7tf0qCGHSy9rWFyEdbKk8YMe2rC6olW15PczLO+BQvygpBhScgrgHktlen++P+4CWR7ZN+MFHdgewerXMDSWkI/lvtl5z9uBviGskQP0pR7rFfNBtlndRnVLptAIGHViT6h9JSzQes5rsY9V3boDdY/snOeDdHOs4PExZSPtrBmqar0JljD57+N7FwUnLrS6H86Utbw8c+gQyImtbaby65GvsHpvl6ssFg/UL8Jbazx2B4D+luOb8RI+gqphxd/rrDl/xGsbdnEsB8Bf2Owuokee9qXxpRs+4DXuf3e3Vxlqr9h0RKasB8qGo3MXcfPBV/TeOFOjf7f7vv0Q7cvNztOsX8ZSS3dUY49cF/k1NvoJ1gRuTDLssa4dZXyOWSn+FmpAh0XUwx1cu3thpNOnbclG8rFgdVAdxpDWoTALi+GJ914/Wry0s5dN9advP4Yn3a8cP3QtWyTjSppxbGdnbmWYTYzMM7hDbzlb2D6SpmErJvBu5Epdv8AJsOLgA==) - ESM browser, production builds
- [JSFiddle](https://jsfiddle.net/skirtle/jep2ws9a/) - global/IIFE, development builds
- [JSFiddle](https://jsfiddle.net/skirtle/ckfb7vxw/) - global/IIFE, production builds

## Installation

Using `npm` or an equivalent package manager:

```sh
npm add @skirtle/example-vue-lib
```

## License

MIT

Copyright &copy; 2025-2026, skirtle
npm package: @skirtle/vue-register-children
Description: Utilities for registering child components
Author: skirtle
Latest version: 0.0.2

# @skirtle/vue-register-children

Utilities for managing parent/child relationships between coupled Vue 3 components.

⚠️This is currently work-in-progress and should not be used in production applications.

## License

MIT

Copyright &copy; 2023, skirtle
npm package: @skirtle/vue-router-perf
Description: Fork of vue-router with improved performance
Author: Eduardo San Martin Morote
Latest version: 0.2.0

# @skirtle/vue-router-perf

This is a fork of [Vue Router](https://github.com/vuejs/router) with improved performance.

See <https://github.com/skirtles-code/vue-router/tree/perf-releases#readme> for details.
npm package: @skirtle/vue-vnode-utils
Description: Utilities for manipulating Vue 3 VNodes
Author: skirtle
Latest version: 0.2.0

# @skirtle/vue-vnode-utils

Utilities for manipulating Vue 3 VNodes.

* Docs: <https://skirtles-code.github.io/vue-vnode-utils/>
* GitHub: <https://github.com/skirtles-code/vue-vnode-utils/>
* Example: [SFC Playground](https://play.vuejs.org/#eNqNVE1vm0AQ/SsjegBLGEirXqidNM2ph0o9VOqhVA0247AN7K52F4fI4r93dmEdmyRVkA+78/XeG545BNdSJvsOgzxY6a1i0oBG08nLgrNWCmXgAAp3MWxFKzuDFQywU6KFkJrCY9FNzZrqhkoER26miiQ9D1scain4VnBtaGJHpWs7Pvqw8FFmsNUU9XhRtID1JXwrTZ20ZR9l8XRmPHITkn3ZdBjDRbZY0JRVOsogAXShYbIpDdINYMU4jYT9shUVNusicP1FAOZRIl15125Q0Z1m0zWzp7Kn0wUdxwnnglwM4AvuhMLxvKrYnhAoYAcCo58VNPXb53AADsMwladUP6Wud4bQLcpsb5RfpUclQRyMS1+2pUz+asHp3R1sXzElCC0HF7Gxz/qeKdNgSttf7jlJX3aGNa6oCGpjpM7TtOPy/i6hpaev1RNTbebBBHW73CjxoFElFe6JTxFYZNI3ENPnBngy2qnF6pdtdYCyqr4rIXUMGzQPiNxNVMhjYPoH9iYm/9BitugTx0mvCXEWxN4BVLgru4aALGdn/OhPTLC6EUbDsPBrVJRSHEYvTjGABsnFHnY9NtEW3MirhIqvruDXbws31qcp/FSlBEO8wRLS1iAl3FrXXN76spORM22RT8UQOUXnfADYDqJxL1P+qGB8Jh11FBJiGMNY9FQx2ZIOx+AJ+euqAlMjhO3j0jEJYduUWoMRUDbNkfgLQvx7PFUwJz+ROyPs5ucniG/l+pWTJY2j69Yd0omH3kX/ozoz2jPG4yTC9L3zpfqGidbgmdn/xPwDpc1jY79OiRc4yt8IVaHK4UL2oEXDKniXZdknm2pLdcd4Dh8p5SP98oFVps7hfZbJ3gUlbZzxO1dHgRHYgQXDPzta8GY=)

## Installation

### npm

Installation with `npm`/`yarn`/`pnpm`:

```sh
npm add @skirtle/vue-vnode-utils
```

ES module usage:

```js
import { addProps } from '@skirtle/vue-vnode-utils'
```

### CDN - global build

```html
<script src="https://unpkg.com/@skirtle/vue-vnode-utils/dist/vue-vnode-utils.global.dev.js"></script>
```

This should be placed after the `<script>` tag for Vue itself, as it needs the global `Vue` to be available.

The functions are then exposed via the global `VueVNodeUtils`:

```js
const { addProps } = VueVNodeUtils
```

The URL above will include the development build, which is not minified and includes some warning messages. In production the exact version should be pinned and `.prod` should be used instead of `.dev`.

### CDN - ES module build

`@skirtle/vue-vnode-utils` imports from `vue`, so it needs an import map to be configured to use ES modules directly in the browser.

```html
<script type="importmap">
{
  "imports": {
    "vue": "https://unpkg.com/vue@3/dist/vue.esm-browser.js",
    "@skirtle/vue-vnode-utils": "https://unpkg.com/@skirtle/vue-vnode-utils/dist/vue-vnode-utils.esm-browser.dev.js"
  }
}
</script>
<script type="module">
import { addProps } from '@skirtle/vue-vnode-utils'
// ...
</script>
```

As with the global build, this should be changed to an exact version and switched to `.prod` in production.

Some browsers do not yet have full support for import maps.

## License

MIT

Copyright &copy; 2022-2024, skirtle
npm package: @skit/doctitle
Description: An easy way to dynamically change the document title, compatible with SPA in iOS/Safari, and support fixed prefixes and suffixes. 一种动态修改文档标题的简便方式，兼容 iOS/Safari 中的 SPA，支持固定前缀、后缀。
Author: Fu Diwei
Latest version: 1.0.0-rc

### @skit/doctitle

---

## 特性

-   动态设置 `document.title`；

-   可配置固定的前缀、后缀；

-   兼容 iOS/MacOS 系统下的 SPA 应用，解决 SPA 动态设置文档标题无效的问题；

-   支持 TypeScript。

---

## 用法

安装：

```shell
npm install @skit/doctitle
```

导入：

```javascript
// require 方式
const $$title = require('@skit/doctitle');

// import 方式
import $$title from '@skit/doctitle';
```

基本用法：

```javascript
// 设置标题，设置后文档标题为 'This is a Title'。
$$title.setTitle('This is a Title');

// 设置前缀，设置后文档标题为 'PREFIX - This is a Title'。
$$title.setPrefix('PREFIX - ');

// 设置后缀，设置后文档标题为 'PREFIX - This is a Title | SUFFIX'。
$$title.setSuffix(' | SUFFIX');
```

高级技巧：

```javascript
// 兼容 iOS/MacOS 的原理是在页面中创建一个隐藏的 iframe，并设置其 src 属性。
// 默认的加载路径是 ‘/favicon.ico’。
// 如果你的网站不支持这个路径，那么可以指定为其他的路径。
$$title.withHackSource('http://example.com/hack.txt');

// 还可以清空前缀和后缀，直接修改文档标题。
$$title.setTitle('This is a Title', { flush: true });
```
npm package: @skit/wepy-com-dialog
Description: A component for displaying a dialog based on wepy.js 1.x.
Author: Fu Diwei
Latest version: 1.0.0

# wepy-com-dialog

一个对话框组件。

此组件依赖 [wepy](https://github.com/Tencent/wepy) 1.7.0+。

如果你正在使用 wepy 2.x，请移步 [wepy2-com-dialog](https://github.com/fudiwei/wepy2-com-dialog)。

---

## 用法

安装：

``` shell
npm install @skit/wepy-com-dialog --save
```

导入：

``` html
<template>
    <ui-dialog />
</template>
<script>
    import Wepy from 'wepy';
    import UIDialog from '@skit/wepy-com-dialog';

    export default class DemoPage extends Wepy.page {
        components = {
            'ui-dialog': UIDialog
        };
    }
</script>
```

### 可配置项

#### 属性

参数项 | 说明 | 类型 | 是否必填 | 默认值
:---: | :--: | :--: | :---: | :---:
primaryTextColor | 确认按钮文字颜色<br>（支持 16 进制色或 RGB/RGBA 色） | String | 否 | #90241a |

#### 方法

``` javascript
/**
 * 显示提示对话框。
 * @param {Object} options 配置项。
 * @param {String} options.title 提示标题。
 * @param {String} options.content 提示文本。
 * @param {String} options.confirmText 确定按钮的文字，默认为"好的"。
 * @param {String} options.confirmTextColor 确定按钮的文字颜色（会覆盖 primaryTextColor 属性）。
 * @param {String} options.textAlign 提示文本的对齐方式，支持“left”、“center”、“right”，默认值为“center”。
 * @param {Function} options.success 点击按钮后的回调方法。
 */
this.$invoke('ui-dialog', 'alert', {
    title: '这是标题',
    content: '这是内容',
    confirmText: '确认',
    confirmTextColor: '#1fb8ca',
    textAlign: 'left',
    success: (res) => {
        // 点击确定按钮后执行操作
    }
});

/**
 * 显示提示对话框。
 * @param {String} content 提示文本。
 */
this.$invoke('ui-dialog', 'alert', '这是内容');

/**
 * 显示确认对话框。
 * @param {Object} options 配置项。
 * @param {String} options.title 提示标题。
 * @param {String} options.content 提示文本。
 * @param {String} options.confirmText 确定按钮的文字，默认为"好的"。
 * @param {String} options.confirmTextColor 确定按钮的文字颜色（会覆盖 primaryTextColor 属性）。
 * @param {String} options.cancelText 取消按钮的文字，默认为"取消"。
 * @param {String} options.textAlign 提示文本的对齐方式，支持“left”、“center”、“right”，默认值为“center”。
 * @param {Function} options.success 点击按钮后的回调方法，该方法将接收一个表示被点击按钮索引的参数。
 */
this.$invoke('ui-dialog', 'confirm', {
    title: '这是标题',
    content: '这是内容',
    confirmText: '确认',
    confirmTextColor: '#1fb8ca',
    cancelText: '取消',
    textAlign: 'left',
    success: (res) => {
        switch (res.index) {
            case 0:
                // 点击取消按钮后执行操作
                break;
            case 1:
                // 点击确定按钮后执行操作
                break;
        }
    }
});

/**
 * 显示确认对话框。
 * @param {String} content 提示文本。
 */
this.$invoke('ui-dialog', 'confirm', '这是内容');
```
npm package: @skit/wepy-com-loading
Description: A component for displaying a blocked loading animation based on wepy.js 1.x.
Author: Fu Diwei
Latest version: 1.0.0

# wepy-com-loading

一个阻塞页面的加载动画组件。

此组件依赖 [wepy](https://github.com/Tencent/wepy) 1.7.0+。

如果你正在使用 wepy 2.x，请移步 [wepy2-com-loading](https://github.com/fudiwei/wepy2-com-loading)。

---

## 用法

安装：

``` shell
npm install @skit/wepy-com-loading --save
```

导入：

``` html
<template>
    <ui-loading />
</template>
<script>
    import Wepy from 'wepy';
    import UILoading from '@skit/wepy-com-loading';

    export default class DemoPage extends Wepy.page {
        components = {
            'ui-loading': UILoading
        };
    }
</script>
```

### 可配置项

#### 属性：

*无*

#### 方法：

``` javascript
/**
 * 显示加载对话框。
 * @param {Object} options 配置项。
 * @param {String} options.content 提示文本。
 */
this.$invoke('ui-loading', 'show', {
    content: '加载中'
});

/**
 * 显示加载对话框。
 * @param {String} content 提示文本。
 */
this.$invoke('ui-loading', 'show', '加载中');

/**
 * 隐藏加载对话框。
 */
this.$invoke('ui-loading', 'hide');
```
npm package: @skit/wepy-com-richtext
Description: A component for displaying HTML richtext based on wepy.js 1.x.
Author: Fu Diwei
Latest version: 1.0.0

# wepy-com-richtext

为官方提供的 *&lt;rich-text&gt;&lt;/rich-text&gt;* 组件提供渐进式支持，并支持官方本身不支持的下划线 HTML 标签（即 *&lt;u&gt;&lt;/u&gt;*）和符合 ISO 8859 的实体符号。

此组件依赖 [wepy](https://github.com/Tencent/wepy) 1.7.0+。

---

## 用法

安装：

``` shell
npm install @skit/wepy-com-richtext --save
```

引入组件：

``` html
<template>
    <ui-richtext :content.sync="html" :decode.sync="true" />
</template>
<script>
    import wepy from 'wepy';
    import UIRichText from '@skit/wepy-com-richtext';

    export default class DemoPage extends wepy.page {
        components = {
            'ui-richtext': UIRichText
        };
    }
</script>
```

### 可配置项

#### 属性

| 参数项 | 说明 | 类型 | 是否必填 | 默认值 |
| :---: | :---: | :---: | :---: | :---: |
| content | HTML 源代码片段 | String | 是 | |
| decode | 是否按照富文本方式显示 | Boolean | 否 | false |

#### 方法

*无*
npm package: @skit/wepy-com-toast
Description: A component for displaying a toast based on wepy.js 1.x.
Author: Fu Diwei
Latest version: 1.0.0

# wepy-com-toast

一个 toast 消息框组件。

此组件依赖 [wepy](https://github.com/Tencent/wepy) 1.7.0+。

如果你正在使用 wepy 2.x，请移步 [wepy2-com-toast](https://github.com/fudiwei/wepy2-com-toast)。

---

## 用法

安装：

``` shell
npm install @skit/wepy-com-toast --save
```

导入：

``` html
<template>
    <ui-toast />
</template>
<script>
    import wepy from 'wepy';
    import UIToast from '@skit/wepy-com-toast';

    export default class DemoPage extends wepy.page {
        components = {
            'ui-toast': UIToast
        };
    }
</script>
```

### 可配置项

#### 属性：

*无*

#### 方法：

``` javascript
/**
 * 显示消息对话框。
 * @param {Object} options 配置项。
 * @param {String} options.content 提示文本。
 * @param {String} options.position 对话框出现在屏幕的位置，支持“top”、“center”、“bottom”，默认值为“bottom”。
 * @param {String} options.duration 指定对话框若干毫秒后自动消失，默认值为“2000”。
 */
this.$invoke('ui-toast', 'show', {
    content: '这是一条消息',
    position: 'center',
    duration: 3000
});

/**
 * 显示消息对话框。
 * @param {String} content 消息文本。
 */
this.$invoke('ui-toast', 'show', '这是一条消息');

/**
 * 隐藏消息对话框。
 */
this.$invoke('ui-toast', 'hide');
```
npm package: @skit/wepy2-com-dialog
Description: A component for displaying a dialog based on wepy.js 2.x.
Author: Fu Diwei
Latest version: 1.0.0

# wepy2-com-dialog

一个对话框组件。

此组件依赖 [wepy](https://github.com/Tencent/wepy) 2.0.0+。

如果你正在使用 wepy 1.x，请移步 [wepy-com-dialog](https://github.com/fudiwei/wepy-com-dialog)。

---

## 用法

安装：

``` shell
npm install @skit/wepy2-com-dialog --save
```

导入：

``` html
<template>
    <ui-dialog ref="dialog" />
</template>
<config>
{
    usingComponents: {
        'ui-dialog': 'module:@skit/wepy2-com-dialog'
    }
}
</config>
<script>
    import Wepy from 'wepy';
    
    Wepy.page({
        onShow() {
            this.$refs['dialog'].alert('hello world');
        }
    });
</script>
```

> 注意：当前版本的 wepy-cli 存在 Bug，无法打包通过 `node_modules` 引入的 wpy 组件，解决方案请参考 [Issue#2554](https://github.com/Tencent/wepy/issues/2554)。

### 可配置项

#### 属性

参数项 | 说明 | 类型 | 是否必填 | 默认值
:---: | :--: | :--: | :---: | :---:
primaryTextColor | 确认按钮文字颜色<br>（支持 16 进制色或 RGB/RGBA 色） | String | 否 | #90241a |

#### 方法

``` javascript
/**
 * 显示提示对话框。
 * @param {Object} options 配置项。
 * @param {String} options.title 提示标题。
 * @param {String} options.content 提示文本。
 * @param {String} options.confirmText 确定按钮的文字，默认为"好的"。
 * @param {String} options.confirmTextColor 确定按钮的文字颜色（会覆盖 primaryTextColor 属性）。
 * @param {String} options.textAlign 提示文本的对齐方式，支持“left”、“center”、“right”，默认值为“center”。
 * @param {Function} options.success 点击按钮后的回调方法。
 */
this.$refs['dialog'].alert({
    title: '这是标题',
    content: '这是内容',
    confirmText: '确认',
    confirmTextColor: '#1fb8ca',
    textAlign: 'left',
    success: (res) => {
        // 点击确定按钮后执行操作
    }
});

/**
 * 显示提示对话框。
 * @param {String} content 提示文本。
 */
this.$refs['dialog'].alert('这是内容');

/**
 * 显示确认对话框。
 * @param {Object} options 配置项。
 * @param {String} options.title 提示标题。
 * @param {String} options.content 提示文本。
 * @param {String} options.confirmText 确定按钮的文字，默认为"好的"。
 * @param {String} options.confirmTextColor 确定按钮的文字颜色（会覆盖 primaryTextColor 属性）。
 * @param {String} options.cancelText 取消按钮的文字，默认为"取消"。
 * @param {String} options.textAlign 提示文本的对齐方式，支持“left”、“center”、“right”，默认值为“center”。
 * @param {Function} options.success 点击按钮后的回调方法，该方法将接收一个表示被点击按钮索引的参数。
 */
this.$refs['dialog'].confirm({
    title: '这是标题',
    content: '这是内容',
    confirmText: '确认',
    confirmTextColor: '#1fb8ca',
    cancelText: '取消',
    textAlign: 'left',
    success: (res) => {
        switch (res.index) {
            case 0:
                // 点击取消按钮后执行操作
                break;
            case 1:
                // 点击确定按钮后执行操作
                break;
        }
    }
});

/**
 * 显示确认对话框。
 * @param {String} content 提示文本。
 */
this.$refs['dialog'].confirm('这是内容');
```
npm package: @skit/wepy2-com-loading
Description: A component for displaying a blocked loading animation based on wepy.js 2.x.
Author: Fu Diwei
Latest version: 1.0.0

# wepy2-com-loading

一个阻塞页面的加载动画组件。

此组件依赖 [wepy](https://github.com/Tencent/wepy) 2.0.0+。

如果你正在使用 wepy 1.x，请移步 [wepy-com-loading](https://github.com/fudiwei/wepy-com-loading)。

---

## 用法

安装：

``` shell
npm install @skit/wepy2-com-loading --save
```

导入：

``` html
<template>
    <ui-loading ref="loading" />
</template>
<config>
{
    usingComponents: {
        'ui-loading': 'module:@skit/wepy2-com-loading'
    }
}
</config>
<script>
    import Wepy from 'wepy';

    Wepy.page({
        onShow() {
            this.$refs['loading'].show('loading ...');
        }
    });
</script>
```

> 注意：当前版本的 wepy-cli 存在 Bug，无法打包通过 `node_modules` 引入的 wpy 组件，解决方案请参考 [Issue#2554](https://github.com/Tencent/wepy/issues/2554)。

### 可配置项

#### 属性：

*无*

#### 方法：

``` javascript
/**
 * 显示加载对话框。
 * @param {Object} options 配置项。
 * @param {String} options.content 提示文本。
 */
this.$refs['loading'].show({
    content: '加载中'
});

/**
 * 显示加载对话框。
 * @param {String} content 提示文本。
 */
this.$refs['loading'].show('加载中');

/**
 * 隐藏加载对话框。
 */
this.$refs['loading'].hide();
```
npm package: @skit/wepy2-com-toast
Description: A component for displaying a toast based on wepy.js 2.x.
Author: Fu Diwei
Latest version: 1.0.0

# wepy2-com-toast

一个 toast 消息框组件。

此组件依赖 [wepy](https://github.com/Tencent/wepy) 2.0.0+。

如果你正在使用 wepy 1.x，请移步 [wepy-com-toast](https://github.com/fudiwei/wepy-com-toast)。

---

## 用法

安装：

``` shell
npm install @skit/wepy2-com-toast --save
```

导入：

``` html
<template>
    <ui-toast ref="toast" />
</template>
<config>
{
    usingComponents: {
        'ui-toast': 'module:@skit/wepy2-com-toast'
    }
}
</config>
<script>
    import Wepy from 'wepy';

    Wepy.page({
        onShow() {
            this.$refs['toast'].show('hello world');
        }
    });
</script>
```

> 注意：当前版本的 wepy-cli 存在 Bug，无法打包通过 `node_modules` 引入的 wpy 组件，解决方案请参考 [Issue#2554](https://github.com/Tencent/wepy/issues/2554)。

### 可配置项

#### 属性：

*无*

#### 方法：

``` javascript
/**
 * 显示消息对话框。
 * @param {Object} options 配置项。
 * @param {String} options.content 提示文本。
 * @param {String} options.position 对话框出现在屏幕的位置，支持“top”、“center”、“bottom”，默认值为“bottom”。
 * @param {String} options.duration 指定对话框若干毫秒后自动消失，默认值为“2000”。
 */
this.$refs['toast'].show({
    content: '这是一条消息',
    position: 'center',
    duration: 3000
});

/**
 * 显示消息对话框。
 * @param {String} content 消息文本。
 */
this.$refs['toast'].show('这是一条消息');

/**
 * 隐藏消息对话框。
 */
this.$refs['toast'].hide();
```
npm package: @skit/wxjssdk-promisify
Description: 为微信 JS-SDK 提供 TypeScript 支持，同时将其基于回调函数的异步 API 转化为 Promise 形式。
Author: Fu Diwei
Latest version: 1.6.0-2

# @skit/wxjssdk-promisify

[![NPM Version](https://img.shields.io/npm/v/@skit/wxjssdk-promisify.svg?sanitize=true)](https://www.npmjs.com/package/@skit/wxjssdk-promisify)
[![NPM Download](https://img.shields.io/npm/dm/@skit/wxjssdk-promisify.svg?sanitize=true)](https://www.npmjs.com/package/@skit/wxjssdk-promisify)
[![Dependency Status](https://david-dm.org/fudiwei/wxjssdk-promisify.svg)](https://david-dm.org/fudiwei/wxjssdk-promisify)
[![License](https://img.shields.io/github/license/fudiwei/wxjssdk-promisify)](https://mit-license.org/)

---

## 特性

-   将微信 JS-SDK 中提供的基于回调函数的 API，转化为 Promise 形式（_wx.func_ 将转换成同名的 _wx.funcAsync_ 形式）；
-   可单独拷贝到项目中使用；
-   支持 TypeScript；
-   与微信 JS-SDK（当前版本：1.6.0）同步更新。

---

## 用法

### 安装：

```shell
npm install @skit/wxjssdk-promisify
```

### 导入：

```javascript
const $ = require('@skit/wxjssdk-promisify');

$.promisifyAll({
    root: wx, // （可选）指定异步方法挂载到某个对象的属性上。默认挂载到 wx。
    extends: ['checkJsApi'] // （可选）若 JS-SDK 新增了某些 API 而本库尚未更新，可由此传入相应的方法名数组以转换成异步方法。
});
```

### 使用异步方法：

```javascript
wx.checkJsApiAsync({ jsApiList: ['chooseWXPay'] })
    .then((res) => {
        console.info('success', res.checkResult);
    })
    .catch((err) => {
        console.error('fail', err);
    })
    .finally(() => {
        console.log('complete');
    });

/**
 * @example 以上示例代码等同于下方原生实现：
 */
wx.checkJsApi({
    jsApiList: ['chooseWXPay'],
    success: (res) => {
        console.info('success', res.checkResult);
    },
    fail: (err) => {
        console.error('fail', err);
    },
    complete: () => {
        console.log('complete');
    }
});
```
npm package: @skit/wxmini-canvas2d
Description: 为微信小程序、小游戏的 Canvas2D 画布提供链式调用语法
Author: Fu Diwei
Latest version: 0.0.3

# wxmini-canvas2d

[![NPM Version](https://img.shields.io/npm/v/@skit/wxmini-canvas2d.svg?sanitize=true)](https://www.npmjs.com/package/@skit/wxmini-canvas2d)
[![NPM Download](https://img.shields.io/npm/dm/@skit/wxmini-canvas2d.svg?sanitize=true)](https://www.npmjs.com/package/@skit/wxmini-canvas2d)
[![License](https://img.shields.io/github/license/fudiwei/wxmini-canvas2d)](https://mit-license.org/)

---

## 特性

-   将微信小程序或小游戏中提供的 Canvas 2D API，转化为链式调用形式；
-   除了完整封装原生 API，还提供了以下几个便捷方法；
    1.  `rectWithRadius`：类似 `rect`，但支持绘制指定半径的圆角。
    2.  `fillRectWithRadius`：类似 `rect` + `fill`，但支持绘制指定半径的圆角。
    3.  `strokeRectWithRadius`：类似 `rect` + `stroke`，但支持绘制指定半径的圆角。
    4.  `drawImageWithRadius`：类似 `drawImage`，但支持绘制指定半径的圆角。
    5.  `fillTextWithWrap`：类似 `fillText`，但支持指定最大高度的自动换行。
    6.  `strokeTextWithWrap`：类似 `strokeText`，但支持指定最大高度的自动换行。
-   可单独拷贝到项目中使用；
-   支持离屏画布（OffscreenCanvas）；
-   支持 TypeScript。

---

## 用法

### 安装：

```shell
npm install @skit/wxmini-promisify
```

### 导入：

```javascript
import { FluentCanvas2D } from '@skit/wxmini-canvas2d';
```

### 使用链式方法：

```javascript
FluentCanvas2D.select({
    selector: '#myCanvasId',
    autoScaleWithDPR: true
}).then((fcanvas) => {
    fcanvas
        .beginPath()
        .arc(20, 20, 2, 0, 2 * Math.PI)
        .setFillStyle('red')
        .fill()
        .closePath();
});

/**
 * @example 以上示例代码等同于下方原生实现：
 */
wx.createSelectorQuery()
    .select('#myCanvasId')
    .fields({
        node: true,
        size: true
    })
    .exec((res) => {
        const canvas = res[0].node;
        const dpr = wx.getSystemInfoSync().pixelRatio;
        canvas.width = res[0].width * dpr;
        canvas.height = res[0].height * dpr;

        const context = canvas.getContext('2d');
        context.beginPath();
        context.arc(20, 20, 2, 0, 2 * Math.PI);
        context.fillStyle = 'red';
        context.fill();
        context.closePath();
    });
```

更多用法请参考示例项目和 TypeScript 声明文件。

---

## 迭代计划

-   [ ] 异步链式方法。

-   [ ] 配置式海报工具。

-   [ ] rpx 单位自动转换。

-   [ ] `fillTextWithWrap`、`strokeTextWithWrap` 支持指定单词截断方式。
npm package: @skit/x.surely-vue-table
Description: 破解 @surely-vue/table 的授权限制，完美去除水印、去除控制台警告。
Author: Fu Diwei
Latest version: 0.2.0

﻿<h1 align="center">X Surely-Vue-Table</h1>

<div align="center">

[![NPM Version](https://img.shields.io/npm/v/@skit/x.surely-vue-table.svg?sanitize=true)](https://www.npmjs.com/package/@skit/x.surely-vue-table)
[![NPM Download](https://img.shields.io/npm/dm/@skit/x.surely-vue-table.svg?sanitize=true)](https://www.npmjs.com/package/@skit/x.surely-vue-table)
[![License](https://img.shields.io/github/license/fudiwei/x.surely-vue-table)](http://unlicense.org/)

</div>

---

## 简介

破解 [@surely-vue/table](https://github.com/surely-vue/surely-table) 的授权限制，完美去除水印、去除控制台警告。

支持 @surely-vue/table v2.x~v4.x 全版本（如果它的授权算法不改的话后续版本理论也同样支持），破解后等同于旗舰版。

> [!CAUTION]
> 🤫 仅供个人非盈利项目使用，商业用途请[支持正版](https://www.surely.cool/pricing)。

---

## 用法

### 1. 安装依赖：

```shell
> npm install @surely-vue/table # 需要你自行安装 @surely-vue/table
> npm install @skit/x.surely-vue-table
```

### 2. 破解授权：

```js
import { hackLicenseKey } from '@skit/x.surely-vue-table';

// SSR 模式下必须显式指定 `domain` 配置项参数；
// 否则可以不传，默认使用 `location.hostname`
hackLicenseKey({ domain: 'your-domain.com' });
```