open-index/open-npm huggingface dataset:
npm package: @ringo380/innodb-utils
Description: InnoDB file analysis toolkit - WebAssembly module
Latest version: 5.0.0

# @ringo380/innodb-utils

InnoDB file analysis toolkit compiled to WebAssembly.

## Installation

```bash
npm install @ringo380/innodb-utils
```

## Usage

With a bundler (Webpack 5+, Vite, Rollup with WASM plugin):

```javascript
import { get_tablespace_info, validate_checksums } from '@ringo380/innodb-utils';

const fileBuffer = await fetch('table.ibd').then(r => r.arrayBuffer());
const data = new Uint8Array(fileBuffer);

const info = JSON.parse(get_tablespace_info(data));
console.log(`Page size: ${info.page_size}, Pages: ${info.page_count}`);

const checksums = JSON.parse(validate_checksums(data));
console.log(`Valid: ${checksums.valid_pages}/${checksums.total_pages}`);
```

The WASM module is automatically initialized by the bundler — no `init()` call needed.

## Available Functions

All functions accept a `Uint8Array` of the file contents and return a JSON string.

- `get_tablespace_info(data)` - Basic tablespace metadata
- `parse_tablespace(data)` - Page-by-page header details
- `analyze_pages(data, page_number)` - Detailed page analysis (pass `-1n` for all pages)
- `validate_checksums(data)` - Checksum validation for all pages
- `extract_sdi(data)` - Extract SDI metadata from MySQL 8.0+ tablespaces
- `hex_dump_page(data, page_number, offset, length)` - Hex dump of page bytes
- `assess_recovery(data)` - Recovery assessment
- `diff_tablespaces(data1, data2)` - Compare two tablespace files
- `parse_redo_log(data)` - Parse InnoDB redo log files
- `inspect_index_records(data, page_number)` - Inspect records on INDEX pages
- `decrypt_tablespace(data, keyring)` - Decrypt encrypted tablespace
- `get_encryption_info(data)` - Get encryption metadata

## BigInt Parameters

Some functions accept `i64` or `u64` parameters that map to JavaScript `BigInt` values.
For example, `analyze_pages` expects a `BigInt` page number:

```javascript
// Analyze all pages
const all = JSON.parse(analyze_pages(data, -1n));

// Analyze a specific page
const page3 = JSON.parse(analyze_pages(data, 3n));
```

## License

MIT
npm package: @ringoc/batch-archive
Description: 大量小文本文件本地存储解决方案
Latest version: 0.0.1-2

#### 大量小文本文件本地存储解决方案

通过批量打zip包的方式存储文件

```
let { BatchArchive } = require("@ringoc/batch-archive"); 

(async()=>{
    function rndData() {
        let str = "";
        for (let i = 0; i < 1000; i++) {
            str += "test_test_test";
        }
        return str;
    }
    let batchArchive = new BatchArchive({ saveDirPath: "./test_data/batch_archive_test" }); 
    await batchArchive.init(); 
    for (let i = 0; i < 1001; i++) {
        await batchArchive.writeFile(`G-${i}.txt`, rndData());
    }
    await batchArchive.finalize();
    await batchArchive.close();
})();

```
npm package: @ringods/sanity-plugin-github
Description: Sanity.io plugin to include content from Github repositories & gists
Author: Ringo De Smet
Latest version: 0.0.5

# Sanity + Github

## Installation

`sanity install github`

## Usage

Declare a field to be `github.gist` in your schema

```javascript
    {
      type: "github.gist",
      name: "gist",
      description: "Reference to a Github Gist",
    }
```

## Content
Here is an example of which data is stored on your document after selecting an asset.

```json
{
    "public_id": "29b4a88182b4cb50330011d23a29bcb371bd5886-2400x1344_lzcx7x",
    "resource_type": "github.gist",
    "type": "gist",
    "id": "f97ef303ba04cee4975e6fdfc672ac12",
    "file": "kops-cluster.yaml",
    "_version": 1,
    "_type": "github.gist"
  }
```

Note: The `_version` in the data here refers to the schema version of this plugin, should the way it stores the data from Github change in the future.
npm package: @ringods/starterkit-building-blocks
Description: Patternlab Starterkit - Basic Building Blocks
Author: Ringo De Smet
Latest version: 0.0.3
Deprecated: Package is renamed to @ringods/starterkit-building-blocks-handlebars

# Patternlab Starterkit - Basic Building Blocks

Parts borrowed from https://github.com/pattern-lab/starterkit-mustache-demo

This Patternlab starterkit contains the following elements:

* color scheme previews
* font previews
* standard HTML tag previews

## Requirements

This Patternlab starterkit requires the following components:

Node:

* `@pattern-lab/engine-handlebars`: [npm](https://www.npmjs.com/package/@pattern-lab/engine-handlebars), [Github](https://github.com/pattern-lab/patternlab-node/tree/master/packages/engine-handlebars)

## Install

```
$ npm install --save-dev @ringods/starterkit-building-blocks
$ npx @pattern-lab/cli install --starterkits @ringods/starterkit-building-blocks
```

## Edit Files

After installation the files of this Starterkit can be found in `source/`.

## Example

You can see this Patternlab starterkit in action in these projects:

* [zoho-sites-elate-template](https://gitlab.com/ringods/zoho-sites-elate-template)

Submit a merge request and add your project to the list if you want to offer it as a demo project.
npm package: @ringods/starterkit-building-blocks-handlebars
Description: Patternlab Starterkit - Basic Building Blocks with Handlebars templates
Author: Ringo De Smet
Latest version: 0.0.3

# Patternlab Starterkit - Basic Building Blocks with Handlbars templates

Parts borrowed from https://github.com/pattern-lab/starterkit-mustache-demo

This Patternlab starterkit contains the following elements:

* color scheme previews
* font previews
* standard HTML tag previews

## Requirements

This Patternlab starterkit requires the following components:

Node:

* `@pattern-lab/engine-handlebars`: [npm](https://www.npmjs.com/package/@pattern-lab/engine-handlebars), [Github](https://github.com/pattern-lab/patternlab-node/tree/master/packages/engine-handlebars)

## Install

```
$ npm install --save-dev @ringods/starterkit-building-blocks-handlebars
$ npx @pattern-lab/cli install --starterkits @ringods/starterkit-building-blocks-handlebars
```

## Edit Files

After installation the files of this Starterkit can be found in `source/`.

## Example

You can see this Patternlab starterkit in action in these projects:

* [zoho-sites-elate-template](https://gitlab.com/ringods/zoho-sites-elate-template)

Submit a merge request and add your project to the list if you want to offer it as a demo project.
npm package: @ringods/starterkit-building-blocks-twig
Description: Patternlab Starterkit - Basic Building Blocks with Twig templates
Author: Ringo De Smet
Latest version: 0.0.3

# Patternlab Starterkit - Basic Building Blocks with Handlbars templates

Parts borrowed from https://github.com/pattern-lab/starterkit-mustache-demo

This Patternlab starterkit contains the following elements:

* color scheme previews
* font previews
* standard HTML tag previews

## Requirements

This Patternlab starterkit requires the following components:

Node:

* `@pattern-lab/engine-handlebars`: [npm](https://www.npmjs.com/package/@pattern-lab/engine-handlebars), [Github](https://github.com/pattern-lab/patternlab-node/tree/master/packages/engine-handlebars)

## Install

```
$ npm install --save-dev @ringods/starterkit-building-blocks-handlebars
$ npx @pattern-lab/cli install --starterkits @ringods/starterkit-building-blocks-handlebars
```

## Edit Files

After installation the files of this Starterkit can be found in `source/`.

## Example

You can see this Patternlab starterkit in action in these projects:

* [zoho-sites-elate-template](https://gitlab.com/ringods/zoho-sites-elate-template)

Submit a merge request and add your project to the list if you want to offer it as a demo project.
npm package: @ringotangs/jenv
Description: A cross-platform JDK version management tool
Author: RingoTangs
Latest version: 0.1.3

[English](https://github.com/RingoTangs/jenv#readme)

[简体中文](https://github.com/RingoTangs/jenv/blob/master/README_zh.md)

# jenv

A cross-platform JDK version management tool that allows you to easily switch between different JDK versions.



## Features

- 🚀 Easy JDK version switching
- 💻 Cross-platform support (Windows, Linux, MacOS)
- ⚡️ Simple CLI interface
- 🔧 Easy configuration
- 🎯 Symbolic link based version switching



>**Please note:** 
>
>**jenv does not automatically download JDKs for you. You need to manually download multiple versions of the JDK and place them in the specified directory.**



## Installation

```bash
npm install -g @ringotangs/jenv
```



## Requirements

- Node.js >= 16.20.2
- Administrator privileges (Windows) or sudo (Linux/MacOS) for creating symbolic links



## Usage

### Initialize jenv

First time setup:

```bash
jenv init
```



### Configure JDK Paths

Add your JDK installations:

```bash
jenv config
```


This will guide you through:
1. Adding new JDK paths
2. Removing existing configurations 
3. Listing current configurations



### List Available JDKs

View all configured JDK versions:

```bash
jenv ls
```



### Switch JDK Version

Change the active JDK:

```bash
jenv use
```


After switching versions, you'll need to configure your environment:



#### Windows

```bash
Set environment variables:

JAVA_HOME=<jenv_path>\jdk
Add %JAVA_HOME%\bin to your PATH
```



#### Linux/MacOS

```bash
Add to ~/.bashrc or ~/.zshrc:
bash
export JAVA_HOME="<jenv_path>/jdk"
export PATH="$JAVA_HOME/bin:$PATH"
```


> Note: Restart your terminal after changing versions to apply the changes.



## Windows Users Note

On Windows, you'll need either:
1. Run the command prompt as Administrator, or
2. Enable Developer Mode in Windows Settings

This is required for creating symbolic links.



## License

MIT



## Author

RingoTangs



## Contributing

1. Fork it
2. Create your feature branch (`git checkout -b feature/amazing-feature`)
3. Commit your changes (`git commit -m 'feat: add amazing feature'`)
4. Push to the branch (`git push origin feature/amazing-feature`)
5. Open a Pull Request
npm package: @ringotangs/vue-dialog
Description: imperative dialog for vue3.x
Author: RingoTangs
Latest version: 0.1.3

# vue-dialog

Imperative dialog component for Vue 3.x.

## Features

- Easy to use and integrate.
- Custom your dialogs.
- Support Imperative dialog component.

## Installation

```bash
npm install @ringotangs/vue-dialog
```

```typescript
// main.ts
import '@ringotangs/vue-dialog/style.css'
```

## Basic Example

```vue
<script setup lang="ts">
import { VueDialog } from '@ringotangs/vue-dialog'
import { ref } from 'vue'

const open = ref(false)
</script>

<template>
  <div>
    <button type="button" @click="open = !open">
      按钮
    </button>
    <VueDialog :open="open">
      <div @click="open = false">
        Inner
      </div>
    </VueDialog>
  </div>
</template>
```

## Imperative Dialog

1. Custom Dialog

```vue
<script setup lang="ts">
// HelloModal
import { VueDialog } from '@ringotangs/vue-dialog'
import { Input } from 'ant-design-vue'

// Note: use custom dialog, must has open prop
const props = defineProps<{ open: boolean, inputText: string }>()
const emits = defineEmits<{
  (e: 'close'): void
  (e: 'update:inputText', value: string): void
}>()
</script>

<template>
  <VueDialog :open="props.open" cache-child>
    <div class="w-full h-full flex items-center justify-around">
      <div class="w-200px h-200px bg-red">
        <Input
          placeholder="请输入文本内容"
          :value="props.inputText"
          @change="(e) => emits('update:inputText', (e.target as HTMLInputElement).value)"
        />
        <button type="button" @click="() => emits('close')">
          关闭
        </button>
      </div>
    </div>
  </VueDialog>
</template>
```

2. import useDialog hook

```tsx
// useHelloModal
import { useDialog } from '@ringotangs/vue-dialog'
import { ref } from 'vue'
import HelloModal from './HelloModal.vue'

export function useHelloModal() {
  const [dialog, holder] = useDialog()
  const inputText = ref('')

  const show = () => {
    dialog.show(
      HelloModal,
      {
        'onClose': () => {
          dialog.close()
        },
        'inputText': inputText.value,
        'onUpdate:inputText': val => inputText.value = val,
      }
    )
  }

  return [{ show }, holder] as const
}
```

3. use custom hook

```vue
<script setup lang="ts">
import { useHelloModal } from './components/useHelloModal'
const [helloModal, ModalHolder] = useHelloModal()
</script>

<template>
  <div class="h-2000px">
    <button type="button" @click="() => helloModal.show()">
      按钮
    </button>
    <ModalHolder />
  </div>
</template>
```

## Note

1. When using imperative dialogs, custom components must include the `open` attribute.
2. In VueDialog, setting `cache-child` prop means that child nodes will not be re-rendered.

## Demo

![demo](./demo.gif)
npm package: @ringozhang/skilled-feishu-mcp
Description: A Model Context Protocol (MCP) server that integrates with Feishu's Open Platform APIs
Author: ringozhang
Latest version: 1.0.4

# Skilled Feishu MCP

一个用于与飞书文档系统集成的 Model Context Protocol (MCP) 服务器。它允许 AI 代理（如 Cherry Studio、Cursor 等）通过 MCP 接口与飞书文档交互。

## 功能

- 创建飞书文档
- 获取文档信息和内容
- 管理文档区块（文本、代码、标题、列表等）
- 在开发模式下使用模拟数据进行测试

## 快速开始

### 使用 npx 运行

无需安装，直接使用 npx 运行：

```bash
npx -y @ringozhang/skilled-feishu-mcp --stdio --feishu-app-id=<你的飞书应用ID> --feishu-app-secret=<你的飞书应用密钥>
```

### 在 Cherry Studio 中配置

在 Cherry Studio 的 MCP 服务器配置中添加以下内容：

```json
"skilled-feishu-mcp": {
  "isActive": true,
  "command": "npx",
  "args": [
    "-y",
    "@ringozhang/skilled-feishu-mcp",
    "--stdio"
  ],
  "env": {
    "FEISHU_APP_ID": "<你的飞书应用ID>",
    "FEISHU_APP_SECRET": "<你的飞书应用密钥>"
  },
  "name": "skilled-feishu-mcp"
}
```

## 开发模式

通过设置 `NODE_ENV=development` 或使用测试凭据（以 `cli_test_` 开头的 App ID），服务器将运行在开发模式。在开发模式下：

- 不会实际调用飞书 API
- 使用模拟数据进行响应
- 提供详细的日志输出

示例：

```bash
NODE_ENV=development npx -y @ringozhang/skilled-feishu-mcp --stdio --feishu-app-id=cli_test_9e11c52b0e1c500e --feishu-app-secret=test_app_secret_for_development
```

## 可用工具

| 工具名 | 描述 |
|--------|------|
| `mcp__get_feishu_doc_info` | 获取飞书文档的基本信息 |
| `mcp__get_feishu_doc_content` | 获取飞书文档的纯文本内容 |
| `mcp__get_feishu_doc_blocks` | 获取飞书文档的区块结构 |
| `mcp__get_feishu_block_content` | 获取特定区块的详细内容 |
| `mcp__update_feishu_block_text` | 更新文本区块的内容和样式 |
| `mcp__create_feishu_document` | 创建新的飞书文档 |
| `mcp__create_feishu_multiple_blocks` | 一次创建多个不同类型的区块 |
| `mcp__create_feishu_single_text_block` | 创建文本区块 |
| `mcp__create_feishu_single_code_block` | 创建代码区块 |
| `mcp__create_feishu_single_heading_block` | 创建标题区块 |
| `mcp__create_feishu_single_list_block` | 创建列表项区块 |
| `mcp__get_feishu_wiki_document_id` | 将 Wiki 链接转换为文档 ID |

## 命令行参数

- `--feishu-app-id`: 飞书应用 ID
- `--feishu-app-secret`: 飞书应用密钥
- `--stdio`: 使用标准输入/输出进行通信（用于 Cherry Studio 等 MCP 客户端）
- `--verbose`: 启用详细日志记录
- `--help`: 显示帮助信息

## 飞书应用设置

1. 在[飞书开放平台](https://open.feishu.cn/)创建一个应用
2. 开启以下权限：
   - `docx:doc:read` - 读取文档
   - `docx:doc:write` - 创建和更新文档
3. 获取应用的 App ID 和 App Secret

## 许可证

MIT
npm package: @rings-webgpu/physics
Description: rings Physics Plugin, Powerd by Ammo.js
Author: rings
Latest version: 0.0.2

## 安装

```bash
npm install @rings-webgpu/core --save
npm install @rings-webgpu/ammo --save
npm install @rings-webgpu/physics --save
```

`@rings-webgpu/physics` 依赖 **`@rings-webgpu/ammo`**，并声明 peer **`@rings-webgpu/core`**（需与主工程核心包版本匹配）。

在本仓库内：根目录 **`package.json`** 使用 **`overrides`** 将任意对 `@rings-webgpu/ammo` 的依赖固定为 **`file:./packages/ammo`**，避免未发布到 npm 时误解析成 `github:packages/ammo` 并走 SSH。请在**仓库根目录**执行 `npm install`（建议 npm 8.3+，以支持 `overrides`）。使用 **pnpm** 时已提供 **`pnpm-workspace.yaml`**，会在安装时优先使用工作区内的 `packages/ammo`。

## 使用

```ts
import { Scene3D } from "@rings-webgpu/core";
import { Physics, Rigidbody } from "@rings-webgpu/physics";
```

## 从本仓库单独发布到 npm

在仓库根目录：

```bash
npm run build:physics
npm run publish:physics
```

首次或 bump 了 ammo 时，可先发布 ammo：

```bash
npm run publish:ammo
```

`packages/physics` 在发布前会通过 **`prepublishOnly`** 自动执行 `npm run build`。
npm package: @ringuniversus/contracts
Description: This package contains deployed contract addresses, ABIs, and Typechain types for the Ring Universus game.
Author: Conight
Latest version: 0.2.4-alpha.0

# @ringuniversus/contracts

This package contains deployed contract addresses, ABIs, and Typechain types
for the Ring Universus game.

## Installation

You can install this package using [`npm`](https://www.npmjs.com) or
[`yarn`](https://classic.yarnpkg.com/lang/en/) by running:

```bash
npm install --save @ringuniversus/contracts
```

```bash
yarn add @ringuniversus/contracts
```

When using this in a plugin, you might want to load it with [skypack](https://www.skypack.dev)

```js
import * as contracts from "http://cdn.skypack.dev/@ringuniversus/contracts";
```

## Typechain

The Typechain types can be found in the `typechain` directory.

## ABIs

The contract ABIs can be found in the `abis` directory.

## Table of contents

### Namespaces

- [bounty](modules/bounty.md)
- [coin](modules/coin.md)
- [equipment](modules/equipment.md)
- [player](modules/player.md)
- [ring](modules/ring.md)
- [town](modules/town.md)
npm package: @ringuniversus/types
Description: This package contains commonly-used data types in the Ring Universus webclient, also accessible in node.js server environments.
Author: Conight
Latest version: 0.2.4-alpha.0

# @ringuniversus/types

This package contains commonly-used data types in the Ring Universus webclient,
also accessible in node.js server environments.

## Installation

You can install this package using [`npm`](https://www.npmjs.com) or
[`yarn`](https://classic.yarnpkg.com/lang/en/) by running:

```bash
npm install --save @ringuniversus/types
```

```bash
yarn add @ringuniversus/types
```

When using this in a plugin, you might want to load it with [skypack](https://www.skypack.dev)

```js
import * as types from "http://cdn.skypack.dev/@ringuniversus/types";
```

## Table of contents

### Type Aliases

- [EthAddress](README.md#ethaddress)

## Type Aliases

### EthAddress

Ƭ **EthAddress**: `Abstract`<`string`, `"EthAddress"`\>

This is expected to be a 40-character, lowercase hex string, prefixed with 0x
(so 42 characters in total). EthAddress should only ever be instantiated
through the `address` function in `serde`.