open-index/open-npm huggingface dataset:
npm package: @feng3d/dingrtc-token-server
Description: Express server for generating DingRTC tokens
Latest version: 0.0.5

# @feng3d/dingrtc-token-server

Express server for generating DingRTC tokens.

## Installation

```bash
npm install @feng3d/dingrtc-token-server
```

## Usage

### As a module

```javascript
const server = require('@feng3d/dingrtc-token-server');

// Start server on default port 3001
server.start();

// Or with custom port
server.start(3002);
```

### As a CLI

```bash
npx @feng3d/dingrtc-token-server
```

### API Endpoint

**GET /login**

Generate a token for DingRTC.

**Query Parameters:**
- `appId` (required): Application ID
- `channelId` (required): Channel ID
- `userId` (required): User ID
- `appKey` (required): Application Key

**Example:**
```
GET http://localhost:3001/login?appId=your-app-id&channelId=your-channel-id&userId=your-user-id&appKey=your-app-key
```

**Response:**
```json
{
  "data": {
    "token": "generated-token-string"
  }
}
```

## Configuration

### Port Configuration

The server runs on port 3001 by default. You can change this by setting the `PORT` environment variable:

```bash
PORT=3002 node server.js
```

### HTTPS Configuration

To enable HTTPS, you need to provide SSL certificate and key files via environment variables:

```bash
SSL_KEY_PATH=/path/to/private.key SSL_CERT_PATH=/path/to/certificate.crt node server.js
```

Or on Windows:

```powershell
$env:SSL_KEY_PATH="C:\ssl\www.feng3d.com.key"
$env:SSL_CERT_PATH="C:\ssl\www.feng3d.com.pem"
dingrtc-token-server
```

**Example with HTTPS:**
```
GET https://localhost:3001/login?appId=your-app-id&channelId=your-channel-id&userId=your-user-id&appKey=your-app-key
```

### Using as Module with HTTPS

```javascript
const server = require('@feng3d/dingrtc-token-server');
const fs = require('fs');

// Start HTTPS server
const sslOptions = {
  key: fs.readFileSync('/path/to/private.key'),
  cert: fs.readFileSync('/path/to/certificate.crt')
};

server.start(3001, sslOptions);
```

## License

MIT
npm package: @feng3d/frpc
Description: frp 客户端部署工具 - 支持 Linux/Windows/macOS
Author: feng3d
Latest version: 0.68.4

# @feng3d/frpc

frp 客户端快速部署工具，支持 Linux/Windows/macOS。

## 安装

```bash
# 全局安装
npm install -g @feng3d/frpc

# 或使用 npx 无需安装
npx @feng3d/frpc
```

## 工作原理

首次运行时自动从 [GitHub Releases](https://github.com/fatedier/frp/releases) 下载对应平台的 frp 二进制文件，并缓存到系统临时目录，后续使用无需重复下载。

## 使用

### 快速连接

```bash
# 交互式配置向导
frpc

# 直接指定参数
frpc --server example.com --local-port 8080 --remote-port 8080

# 指定端口范围映射
frpc --server example.com --local-port 3000 --remote-port 3000-3005
```

### 命令选项

| 选项 | 别名 | 默认值 | 说明 |
|------|------|--------|------|
| `--server` | `-s` | | 服务端地址 |
| `--server-port` | | `7000` | 服务端端口 |
| `--local-port` | `-l` | | 本地端口 |
| `--remote-port` | `-r` | | 远程端口 |
| `--proxy-name` | `-n` | | 代理名称 |
| `--token` | `-t` | | 认证令牌 |
| `--type` | | `tcp` | 代理类型 (tcp/http/https) |

### 子命令

```bash
# 启动服务
frpc start

# 停止服务
frpc stop

# 重启服务
frpc restart

# 查看状态
frpc status

# 配置向导
frpc config
```

## 功能特性

- 自动下载对应平台的 frp 二进制文件
- 交互式配置向导
- Windows 下自动处理 Defender 拦截
- Linux/macOS 下自动配置系统服务
- 支持多种代理类型 (tcp/http/https)
- 支持端口范围映射

## 平台支持

- Linux x64/arm64
- Windows x64
- macOS x64/arm64

## 示例

### TCP 端口转发

```bash
# 将本地 8080 转发到远程 8080
npx @feng3d/frpc -s example.com -l 8080 -r 8080

# 带认证
npx @feng3d/frpc -s example.com -l 8080 -r 8080 -t my-token
```

### HTTP 虚拟主机

```bash
# HTTP 类型代理
npx @feng3d/frpc -s example.com --type http -l 3000 -n myapp
```

### 端口范围

```bash
# 映射端口范围
npx @feng3d/frpc -s example.com -l 3000 -r 3000-3005
```

## 配置文件

默认配置文件位置：
- Linux/macOS: `~/.frp/frpc.toml`
- Windows: `%USERPROFILE%\frp\frpc.toml`

## 许可证

MIT
npm package: @feng3d/frps
Description: frp 服务端部署工具 - 支持 Linux/Windows/macOS
Author: feng3d
Latest version: 0.68.4

# @feng3d/frps

frp 服务端快速部署工具，支持 Linux/Windows/macOS。

## 安装

```bash
# 全局安装
npm install -g @feng3d/frps

# 或使用 npx 无需安装
npx @feng3d/frps
```

## 工作原理

首次运行时自动从 [GitHub Releases](https://github.com/fatedier/frp/releases) 下载对应平台的 frp 二进制文件，并缓存到系统临时目录，后续使用无需重复下载。

## 使用

### 快速启动

```bash
# 使用默认端口 7000 启动
frps

# 指定端口启动
frps -p 8080
```

### 命令选项

| 选项 | 别名 | 默认值 | 说明 |
|------|------|--------|------|
| `--port` | `-p` | `7000` | 绑定端口 |
| `--no-service` | | `false` | 不注册为系统服务 |
| `--token` | `-t` | | 认证令牌 |

### 子命令

```bash
# 启动服务
frps start

# 停止服务
frps stop

# 重启服务
frps restart

# 查看状态
frps status
```

## 功能特性

- 自动下载对应平台的 frp 二进制文件
- Linux 下自动配置 systemd 服务
- Linux 下自动配置防火墙 (firewalld/ufw)
- 支持 token 认证
- 支持自定义配置文件

## 平台支持

- Linux x64/arm64
- Windows x64
- macOS x64/arm64

## 示例

```bash
# 启动带 token 认证的服务端
npx @feng3d/frps -p 7000 -t my-secret-token

# 临时测试不注册服务
npx @feng3d/frps -p 7000 --no-service
```

## 配置文件

默认配置文件位置：
- Linux/macOS: `~/.frp/frps.toml`
- Windows: `%USERPROFILE%\frp\frps.toml`

## 许可证

MIT
npm package: @feng3d/glsl2wgsl
Description: 着色器GLSL到WGSL语言的转换
Author: feng
Latest version: 0.0.3

# 着色器GLSL到WGSL语言的转换

把着色器从 GLSL100/GLSL300/GLSL450 升级到 WebGPU 着色器语言 WGSL。

当前库主要处理了 `GLSL100 -> GLSL300 -> GLSL450 -> WGSL` 中 `GLSL450 -> WGSL` 过程。

`GLSL100 -> GLSL300 -> GLSL450`这部分升级的内容由依赖的 @feng3d/glslup 库处理。

## 示例

[@feng3d/glsl2wgsl示例](https://feng3d.com/glsl2wgsl)

这里已经完整的把 [webgl2](https://github.com/WebGLSamples/WebGL2Samples.git) 中使用到的着色器都转换为了 WebGPU 着色器。

## 功能

1. `initGlsl2wgsl` 初始化 glslang 与 tint，需要在使用前调用。
2. `glsl2wgslProgram` 把 GLSL100/GLSL300/GLSL450 着色器转换为 WGSL 着色器。

从 @feng3d/glslup 中继承。
1. `glslup300` 把 GLSL100 升级到 GLSL300。
2. `glslup450` 把 GLSL100/GLSL300 升级到 GLSL450。
3. `glslup300Program` 把 GLSL100 着色器程序转换为 GLSL300 着色器程序（包含顶点与片段着色器）。
4. `glslup450Program` 把 GLSL100/GLSL300 着色器程序转换为 GLSL450 着色器程序（包含顶点与片段着色器）。


## 安装

```
npm install @feng3d/glsl2wgsl
```

## 使用

```
import { glsl2wgslProgram, initGlsl2wgsl } from '@feng3d/glsl2wgsl';

main();

async function main() {
    // 初始化
    await initGlsl2wgsl(); // 初始化 glslang 与 tint

    const result = glsl2wgslProgram({
        vertex: `
        attribute vec4 aVertexPosition;
        attribute vec4 aVertexColor;
    
        uniform mat4 uModelViewMatrix;
        uniform mat4 uProjectionMatrix;
    
        varying lowp vec4 vColor;
    
        void main(void) {
          gl_Position = uProjectionMatrix * uModelViewMatrix * aVertexPosition;
          vColor = aVertexColor;
        }
        `,
        fragment: `
        varying lowp vec4 vColor;
    
        void main(void) {
          gl_FragColor = vColor;
        }
        `,
    });

    console.log(`WebGPU顶点着色器:`);
    console.log(result.vertex)
    console.log(`WebGPU片段着色器:`);
    console.log(result.fragment);
    console.log(`layoutInfo:`);
    console.log(result.layoutInfo);
}

```

## 参考

1. https://github.com/BabylonJS/Babylon.js
npm package: @feng3d/objectview
Description: ObjectView是feng3d中实现由数据对象自动生成界面的一套框架。
Author: feng
Latest version: 0.8.2

# ObjectView

## 什么是ObjectView

ObjectView是feng3d中实现由数据对象自动生成界面的一套框架。

## 解决的问题

减少了绝大多数的界面逻辑代码编写，解决了数据对象与界面同步问题，极大的提升了UI开发效率。

## 实现原理

1. （核心）针对对象的每一条需要显示的属性自动生成一个OAV（ObjectAttributeView也称为对象属性界面），实现对象属性与界面的对应关系，需要提供属性值与OAV双向同步功能（数据发生变化后界面实时刷新，用户在界面上操作是实时更改数据）。
1. （可选）支持多个属性进行分组自动生成一个OBV（ObjectBlockView也称为对象属性块界面），实现对象属性组与界面的对应关系。
1. （可选）支持数据对象自动生成生成一个OV（ObjectView也称为对象界面），实现对象与界面的对应关系。

## 提供API

```
/**
 * 获取对象界面
 * @param object 用于生成界面的对象
 * @param param 参数
 */
feng3d.ObjectView.getObjectView(object: Object, param?: GetObjectViewParam): IObjectView
```

ObjectView框架初始化后仅仅需要调用一下代码便可以实现从数据对象到界面的转换。
```
var view = feng3d.ObjectView.getObjectView(object);
```

## ObjectView初始化

```
    // 对默认界面进行配置
    feng3d.objectview.defaultBaseObjectViewClass = "OVBaseDefault";
    feng3d.objectview.defaultObjectViewClass = "OVDefault";
    feng3d.objectview.defaultObjectAttributeViewClass = "OAVDefault";
    feng3d.objectview.defaultObjectAttributeBlockView = "OBVDefault";
    // 对自定义属性进行指定显示OAV组件
    feng3d.objectview.setDefaultTypeAttributeView("Boolean", { component: "OAVBoolean" });
    feng3d.objectview.setDefaultTypeAttributeView("String", { component: "OAVString" });
    feng3d.objectview.setDefaultTypeAttributeView("number", { component: "OAVNumber" });
```

## 实现技巧

1. 通过 feng3d.Watcher.watch 实现数据属性的变化监听，从而更新OAV实现数据到UI的同步。
1. 通过装饰器 @oav 来标记数据对象指定属性对应哪个OAV在UI中显示，以及如何分组，显示参数等信息。

## 框架边界

只处理数据对象与界面的对应关系，并不会实际去处理具体的OAV、OBV、OV的实现与数据绑定逻辑，更是与具体的UI框架无关。也就意味着可以运用到HTMLElement、egret、layabox等任意的UI框架中去，甚至可以轻松翻译为其他语言以及其他语言UI框架中去。

## 源码

https://gitee.com/feng3d/feng3d/blob/master/modules/objectview/src/ObjectView.ts

### 历史版本
https://github.com/wardenfeng/ObjectView-as

https://github.com/wardenfeng/ObjectView-ts

### 实现OAV数据绑定依赖模块

https://gitee.com/feng3d/feng3d/blob/master/modules/watcher/src/Watcher.ts

## 参考示例

https://gitee.com/feng3d_admin/objectview-jqueryui

## 项目使用案例
下图中feng3d编辑器的右侧红框部分Inspector模块所有显示均使用ObjectView进行构建。
![](objectview_usecase.png)