open-index/open-npm huggingface dataset:
npm package: @longform/longform
Description: A markup and templating language for creating HTML fragments and full documents.
Author: Matthew Quinn
Latest version: 0.0.6

# Longform

<b class=keyword>Longform</b> is an easy to read markup and templating
language that outputs to <b class=keyword>HTML</b>.
A longform document can be parsed to a complete document in the output format
or as fragments to be used by a application as a source of markup when generating a
document, or when manipulating DOM in a browser environment.


This repo contains the Longform language specification and a light weight Longform
parser implemented for server rendering of HTML documents and client side
templating if required. Both the Longform language and parser are a work in progress.


Read more about the Longform language in the <a href="https://occultist-dev.github.io/longform">Longform Markup Language document</a>.


## Install

```
npm install @longform/longform
```

## Usage

```
const markup = `
@doctype:: html
html::
  head::
    title:: Example Longform
  body::
    h1:: Example Longform
    #[fragment2]

#fragment1
div::
  p::
    This is a Longform fragment referencable by it's identifier.

#fragment2
div::
  p::
    This fragment will be embedded in the fragment that references it.
`;

const result = longform(markup);

// outputs the root fragment as HTML
console.log(result.root);

// outputs fragment1 as HTML
console.log(result.fragments.fragment1.html);
```
npm package: @longhongguo/component-antdv-upload
Description: @form-create/ant-design-vue 内置组件
Author: xaboy
Latest version: 3.2.42

# @longhongguo/component-antdv-upload

@form-create/ant-design-vue 内置组件

[GitHub](https://github.com/xaboy/form-create) | [文档](http://form-create.com/v3/) | [Document](http://form-create.com/v3/)

## 安装

```bash
npm install @longhongguo/component-antdv-upload
```

## 使用

### 直接从源码导入（需要配置 webpack）

如果你从 `src/index` 导入，需要在 webpack 配置中处理 JSX 文件：

**Vue CLI (vue.config.js):**

```javascript
module.exports = {
  transpileDependencies: ['@longhongguo/component-antdv-upload']
}
```

**Webpack 配置:**

```javascript
module.exports = {
  module: {
    rules: [
      {
        test: /\.jsx$/,
        include: /node_modules\/@longhongguo\/component-antdv-upload/,
        use: {
          loader: 'babel-loader',
          options: {
            presets: ['@vue/cli-plugin-babel/preset'],
            plugins: ['@vue/babel-plugin-jsx']
          }
        }
      }
    ]
  }
}
```

### 使用构建后的文件（推荐）

使用构建后的文件，无需额外配置：

```javascript
import upload from '@longhongguo/component-antdv-upload/dist/index.esm.js'
// 引入样式文件（必需）
import '@longhongguo/component-antdv-upload/dist/index.esm.css'
// 或
import upload from '@longhongguo/component-antdv-upload'
import '@longhongguo/component-antdv-upload/dist/index.css'
```

## 样式引入

**重要：使用构建后的文件时需要手动引入样式文件**

样式用于禁用上传组件的动画效果，必须引入才能正常工作：

```javascript
// ESM 格式
import '@longhongguo/component-antdv-upload/dist/index.esm.css'
// 或 UMD 格式
import '@longhongguo/component-antdv-upload/dist/index.css'
```

如果从 `src` 导入，样式会被 webpack 自动处理（如果配置了 CSS loader）。

## 注意事项

- 该包包含 `src` 目录（源文件）和 `dist` 目录（构建文件）
- 如果从 `src` 导入，需要配置 webpack/babel 处理 JSX 和 CSS
- 建议使用构建后的文件（`dist/index.esm.js`）以避免配置问题
- **使用构建后的文件时，记得引入对应的 CSS 文件**
npm package: @longjiang666/change-impact-analyzer
Description: Git branch change impact analyzer — AI-powered regression test scope generation for Claude Code
Author: longjiang
Latest version: 1.2.4

# @longjiang666/change-impact-analyzer

Git 分支变更影响分析工具，自动识别功能模块，AI 生成回归测试范围文档。

## 功能特性

- **变更范围分析**：提取分支所有 commits，统计变更文件与代码量
- **模块自动识别**：优先读取 `.change-analyzer.yml` 配置映射，无配置时按目录结构自动推断
- **AI 驱动分析**：调用 Claude API 理解变更语义，生成精准的测试点
- **风险等级评估**：自动判断每个模块的回归风险（高/中/低）
- **Markdown 报告**：输出标准化回归测试文档，含可勾选 checklist

## 安装（Claude Code）

在终端执行一条命令注册为全局 MCP 工具：

```bash
claude mcp add change-impact --scope user -- npx -y @longjiang666/change-impact-analyzer
```

注册后重启 Claude Code 会话，通过 `/mcp` 确认出现 `change-impact` 即为成功。

## 使用方式

### 在 Claude Code 中调用

注册成功后，直接在对话中说：

> 请调用 analyze_branch_changes 工具，分析 feature/payment 分支的变更，仓库路径是 /path/to/repo

### 作为 CLI 工具

```bash
# 基本用法
change-impact --branch feature/payment

# 指定基准分支和输出文件
change-impact --branch feature/payment --base develop --output report.md

# 指定仓库路径
change-impact --branch feature/payment --repo /path/to/repo
```

## 配置文件

在仓库根目录创建 `.change-analyzer.yml` 自定义模块映射（可选）：

```yaml
baseBranch: main

modules:
  - name: 用户中心
    description: 用户注册、登录、个人信息管理
    patterns:
      - src/user/**
      - src/auth/**

  - name: 支付流程
    patterns:
      - src/payment/**
      - api/payment/**
```

> 未命中任何规则的文件将按目录结构自动推断模块名。

完整示例见 [example.change-analyzer.yml](./example.change-analyzer.yml)。

## 环境变量

| 变量 | 说明 | 默认值 |
|------|------|--------|
| `ANTHROPIC_API_KEY` | Anthropic API 密钥 | — |
| `ANTHROPIC_MODEL` | 使用的模型 | `claude-sonnet-4-6` |
| `ANTHROPIC_PLATFORM` | 设为 `bedrock` 使用 AWS Bedrock | — |

## 报告示例

```markdown
# 回归测试范围报告

> 分支: `feature/payment` ← `main`
> 生成时间: 2026/3/13 10:00:00

## 概览

| 项目 | 数据 |
|------|------|
| 提交数量 | 12 个 |
| 变更文件 | 23 个 |
| 代码行数 | +456 / -123 |
| 影响模块 | 支付流程、用户中心、订单管理 |

## 🔴 支付流程

**风险等级:** 🔴 高

**测试点:**

- [ ] 正常支付流程（微信/支付宝/银行卡）
- [ ] 支付超时处理
- [ ] 重复支付拦截
- [ ] 退款申请与到账
```

## License

MIT
npm package: @longjs/body-parser
Description: [![npm (scoped)](https://img.shields.io/npm/v/@longjs/body-parser.svg)](https://www.npmjs.com/package/@longjs/body-parser)
Author: ranyunlong
Latest version: 1.0.2

# @longjs/body-parser

[![npm (scoped)](https://img.shields.io/npm/v/@longjs/body-parser.svg)](https://www.npmjs.com/package/@longjs/body-parser)

### Introduction

The module based on @longjs/core, used for HTTP parser body.

### Use

```shell
> yarn add @longjs/body-parser
```
or

```shell
> npm install @longjs/body-parser
```

### Examples

```ts
import Server from '@longjs/core'
import BodyParser from '@longjs/body-parser'
new Server({
    port: 3000,
    plugins: [
        new BodyParser({
            multipart: true,
            jsonLimit: 1,
            formLimit: 56, 
            textLimit: 56,
            text: true,
            json: true,
            encoding: 'utf-8', 
            urlencoded: true,
            jsonStrict: true, 
            strict: true, 
            formidable: {
                maxFields: 1000, 
                maxFieldsSize: 2,
                keepExtensions: false, 
                multiples: true
            }
        })
    ]
})
```

### Api

### Options

- `jsonLimit` **{String|Integer}** The byte (if integer) limit of the JSON body, default `1mb`
- `formLimit` **{String|Integer}** The byte (if integer) limit of the form body, default `56kb`
- `textLimit` **{String|Integer}** The byte (if integer) limit of the text body, default `56kb`
- `encoding` **{String}** Sets encoding for incoming form fields, default `utf-8`
- `multipart` **{Boolean}** Parse multipart bodies, default `false`
- `urlencoded` **{Boolean}** Parse urlencoded bodies, default `true`
- `text` **{Boolean}** Parse text bodies, default `true`
- `json` **{Boolean}** Parse json bodies, default `true`
- `jsonStrict` **{Boolean}** Toggles co-body strict mode; if set to true - only parses arrays or objects, default `true`
- `formidable` **{Object}** Options to pass to the formidable multipart parser
- `onError` **{Function}** Custom error handle, if throw an error, you can customize the response - onError(error, context), default will throw
- `strict` **{Boolean}** If enabled, don't parse GET, HEAD, DELETE requests, default `true`

### Issues

- [create issues](https://github.com/ranyunlong/longjs/issues)

### Contribution

 <a href="https://github.com/ranyunlong"><img width="50px" src="https://avatars0.githubusercontent.com/u/19652564?s=460&v=4"></a>

### License MIT
npm package: @longjs/database
Description: [![npm (scoped)](https://img.shields.io/npm/v/@longjs/database.svg)](https://www.npmjs.com/package/@longjs/database)
Author: ranyunlong
Latest version: 1.0.0-beta.0.3

# @longjs/database

[![npm (scoped)](https://img.shields.io/npm/v/@longjs/database.svg)](https://www.npmjs.com/package/@longjs/database)

### Introduction

The module based on @longjs/core database library.


### Use

```shell
> yarn add @longjs/database
```
or 

```shell
> npm install @longjs/database
```

 ### Issues

 - [create issues](https://github.com/ranyunlong/longjs/issues)

 ### Contribution

 <a href="https://github.com/ranyunlong"><img width="50px" src="https://avatars0.githubusercontent.com/u/19652564?s=460&v=4"></a>

 ### License MIT
npm package: @longjs/redis-storage
Description: [![npm (scoped)](https://img.shields.io/npm/v/@longjs/redis-storage.svg)](https://www.npmjs.com/package/@longjs/redis-storage)
Author: ranyunlong
Latest version: 1.0.0-beta.0.4

# @longjs/redis-storage 1.0.0

[![npm (scoped)](https://img.shields.io/npm/v/@longjs/redis-storage.svg)](https://www.npmjs.com/package/@longjs/redis-storage)

### 介绍

Longjs是一个使用Typescript 为语法基础的可扩展的nodejs 服务端应用程序框架，使用面向对象的方式编程（OOP);
npm package: @longjs/server
Description: [![npm (scoped)](https://img.shields.io/npm/v/@longjs/core.svg)](https://www.npmjs.com/package/@longjs/core)
Author: ranyunlong
Latest version: 1.0.0-beta.1.7

# @longjs/server 1.0.0

[![npm (scoped)](https://img.shields.io/npm/v/@longjs/core.svg)](https://www.npmjs.com/package/@longjs/core)

### 介绍

Longjs是一个使用Typescript 为语法基础的可扩展的nodejs 服务端应用程序框架，使用面向对象的方式编程（OOP);
npm package: @longjs/session
Description: [![npm (scoped)](https://img.shields.io/npm/v/@longjs/session.svg)](https://www.npmjs.com/package/@longjs/session)
Author: ranyunlong
Latest version: 1.0.1

# @longjs/session

[![npm (scoped)](https://img.shields.io/npm/v/@longjs/session.svg)](https://www.npmjs.com/package/@longjs/session)


### Introduction

The module based on @longjs/core, used for HTTP session.


### Use

```shell
> yarn add @longjs/session
```
or 

```shell
> npm install @longjs/session
```

### Examples

```ts
import Server from '@longjs/core'
import Session, { SessionRedisStorage } from '@longjs/session'
// If your want to use redis.
new Server({
    port: 3000,
    plugins: [
        new Session({
            store: new SessionRedisStorage(),
            key: 'sess:id',
            maxAge: 86400000,
            overwrite: true,
            httpOnly: true,
            signed: true
        })
    ]
})

// Default is stored in memory.
new Server({
    port: 3000,
    plugins: [
        new Session({
            key: 'sess:id',
            maxAge: 86400000,
            overwrite: true,
            httpOnly: true,
            signed: true
        })
    ]
})

```

### Api

#### Options

Most options based on [cookies](https://github.com/pillarjs/cookies#cookiesset-name--value---options--)

- `key`: a string for store session id in cookie
- `store`: a class for custom store (extend {Store}, func: #get(sid), #set(session, opts), #destory(sid))

- `maxAge`: a number representing the milliseconds from `Date.now()` for expiry
- `expires`: a `Date` object indicating the cookie's expiration date (expires at the end of session by default).
- `path`: a string indicating the path of the cookie (`/` by default).
- `domain`: a string indicating the domain of the cookie (no default).
- `secure`: a boolean indicating whether the cookie is only to be sent over HTTPS (`false` by default for HTTP, `true` by default for HTTPS).
- `httpOnly`: a boolean indicating whether the cookie is only to be sent over HTTP(S), and not made available to client JavaScript (`true` by default).
- `signed`: a boolean indicating whether the cookie is to be signed (`false` by default). If this is true, another cookie of the same name with the `.sig` suffix appended will also be sent, with a 27-byte url-safe base64 SHA1 value representing the hash of _cookie-name_=_cookie-value_ against the first [Keygrip](https://www.npmjs.com/package/keygrip) key. This signature key is used to detect tampering the next time a cookie is received.
- `overwrite`: a boolean indicating whether to overwrite previously set cookies of the same name (`false` by default). If this is true, all cookies set during the same request with the same name (regardless of path or domain) are filtered out of the Set-Cookie header when setting this cookie.

### Issues

 - [create issues](https://github.com/ranyunlong/longjs/issues)

### Contribution

 <a href="https://github.com/ranyunlong"><img width="50px" src="https://avatars0.githubusercontent.com/u/19652564?s=460&v=4"></a>

### License MIT
npm package: @longjs/static
Description: [![npm (scoped)](https://img.shields.io/npm/v/@longjs/static.svg)](https://www.npmjs.com/package/@longjs/static)
Author: ranyunlong
Latest version: 1.0.3

# @longjs/static

[![npm (scoped)](https://img.shields.io/npm/v/@longjs/static.svg)](https://www.npmjs.com/package/@longjs/static)

### Introduction

The module based on @longjs/core, used for HTTP static file output.

### Use

```shell
> yarn add @longjs/static
```
or

```shell
> npm install @longjs/static
```

### Examples

```ts
import Server from '@longjs/core'
import StaticServer from '@longjs/static'
// If your want to use redis.
new Server({
    port: 3000,
    plugins: [
        new StaticServer({
            root: resolve('public'),
            maxage: 60000,
            defer: true
        })
    ]
})
```

### Api

### Options

- `maxage` Browser cache max-age in milliseconds. defaults to 0
- `hidden` Allow transfer of hidden files. defaults to false
- `index` Default file name, defaults to 'index.html'
- `defer` If true, serves is responding after controllers
- `gzip`  Try to serve the gzipped version of a file automatically when gzip is supported by a client and if the requested file with .gz extension exists. defaults to true.
- `br`  Try to serve the brotli version of a file automatically when brotli is supported by a client and if the requested file with .br extension exists (note, that brotli is only accepted over https). defaults to true.
- `setHeaders` Function to set custom headers on response.
- `extensions` Try to match extensions from passed array to search for file when no extension is sufficed in URL. First found is served. (defaults to `false`)

### setHeaders

The function is called as `fn(res, path, stats)`, where the arguments are:
* `res`: the response object
* `path`: the resolved file path that is being sent
* `stats`: the stats object of the file that is being sent.

You should only use the `setHeaders` option when you wish to edit the `Cache-Control` or `Last-Modified` headers, because doing it before is useless (it's overwritten by `send`), and doing it after is too late because the headers are already sent.

If you want to edit any other header, simply set them before calling `send`.

### Issues

- [create issues](https://github.com/ranyunlong/longjs/issues)

### Contribution

 <a href="https://github.com/ranyunlong"><img width="50px" src="https://avatars0.githubusercontent.com/u/19652564?s=460&v=4"></a>

### License MIT
npm package: @longlast/any-function
Description: A type representing any function, for use in type argument constraints
Author: Ben Christel
Latest version: 0.0.1

# `@longlast/any-function`

A type representing any function, for use in type argument constraints.

## Install

Choose your favorite package manager:

```bash
npm  add @longlast/any-function
pnpm add @longlast/any-function
yarn add @longlast/any-function
```

## Use

```ts
import type {AnyFunction} from "@longlast/any-function"

function clearName<F extends AnyFunction>(f: F): F {
    Object.defineProperty(f, "name", {value: ""});
    return f;
}
```

## Documentation

[Browse the docs on longlast.js.org][docs].

[docs]: https://longlast.js.org/reference/any-function/
npm package: @longlast/curry
Description: Curries functions
Author: Ben Christel
Latest version: 0.7.2

# `@longlast/curry`

Creates curried functions.

## Install

Choose your favorite package manager:

```bash
npm  add @longlast/curry
pnpm add @longlast/curry
yarn add @longlast/curry
```

## Use

```ts
import {curry} from "@longlast/curry";

const multiply = curry((a: number, b: number) => a * b);

[1, 2, 3].map(multiply(2)); // => [2, 4, 6]

multiply(3, 4); // => 12
```

## Documentation

[Browse the docs on longlast.js.org][docs].

[docs]: https://longlast.js.org/reference/curry/

## Performance

`@longlast/curry` is the fastest `curry` implementation on the market. Here are
some benchmark results (incrementing 100 numbers with
`array.map(curriedAdd(1))`):

```
inline function | #################################### . 7,110,624 ops/sec ±0.43%
@longlast/curry | ################################# . 6,628,769 ops/sec ±0.57%
ramda           | # . 204,623 ops/sec ±0.49%
lodash          | # . 170,245 ops/sec ±0.26%
```
npm package: @longlast/dub
Description: Gives a function a durable name
Author: Ben Christel
Latest version: 0.0.1

# `@longlast/dub`

Gives a function a durable name, immune to minification.

## Install

Choose your favorite package manager:

```bash
npm  add @longlast/dub
pnpm add @longlast/dub
yarn add @longlast/dub
```

## Use

```ts
import {dub} from "@longlast/dub";
import {curry} from "@longlast/curry";
import {getFunctionName} from "@longlast/function-name";

const add = dub(
    "add",
    curry((a: number, b: number) => a + b),
);

getFunctionName(add); // => "add"

// `dub` can also be partially applied.
const multiply = dub("multiply")(
    curry((a: number, b: number) => a * b),
);

getFunctionName(multiply); // => "multiply"
```

## Documentation

[Browse the docs on longlast.js.org][docs].

[docs]: https://longlast.js.org/reference/dub/
npm package: @longlast/equals
Description: Deeply compares objects
Author: Ben Christel
Latest version: 0.5.11

# `@longlast/equals`

Deeply compares objects.

## Install

Choose your favorite package manager:

```bash
npm  add @longlast/equals
pnpm add @longlast/equals
yarn add @longlast/equals
```

## Use

```ts
import {equals} from "@longlast/equals";

equals(
    [1, 2, {buckleMy: "shoe"}],
    [1, 2, {buckleMy: "shoe"}],
); // => true

equals(
    [1, 2, {buckleMy: "shoe"}],
    [3, 4, {openThe: "door"}],
); // => false
```

## Documentation

[Browse the docs on longlast.js.org][docs].

[docs]: https://longlast.js.org/reference/equals/
npm package: @longlast/function-name
Description: Gets and sets the names of functions
Author: Ben Christel
Latest version: 0.0.1

# `@longlast/function-name`

Gets and sets the names of functions.

## Install

Choose your favorite package manager:

```bash
npm  add @longlast/function-name
pnpm add @longlast/function-name
yarn add @longlast/function-name
```

## Use

```ts
import {getFunctionName} from "@longlast/function-name";

getFunctionName(getFunctionName); // => "getFunctionName"
```

## Documentation

[Browse the docs on longlast.js.org][docs].

[docs]: https://longlast.js.org/reference/function-name/
npm package: @longlast/function-provenance
Description: Imbues partially-applied functions with knowledge of their origins
Author: Ben Christel
Latest version: 0.1.2

# `@longlast/function-provenance`

Imbues partially-applied functions with knowledge of their origins.

Specifically, partially-applied functions get a reference to their original,
unapplied function, and a method that returns their bound arguments.

## Install

Choose your favorite package manager:

```bash
npm  add @longlast/function-provenance
pnpm add @longlast/function-provenance
yarn add @longlast/function-provenance
```

## Documentation

[Browse the docs on longlast.js.org][docs].

[docs]: https://longlast.js.org/reference/function-provenance/
npm package: @longlast/partial-apply
Description: Binds arguments to functions
Author: Ben Christel
Latest version: 0.0.1

# `@longlast/partial-apply`

Binds arguments to functions.

## Install

Choose your favorite package manager:

```bash
npm  add @longlast/partial-apply
pnpm add @longlast/partial-apply
yarn add @longlast/partial-apply
```

## Documentation

[Browse the docs on longlast.js.org][docs].

[docs]: https://longlast.js.org/reference/partial-apply/
npm package: @longlast/pipe
Description: Composes functions left-to-right
Author: Ben Christel
Latest version: 0.0.4

# `@longlast/pipe`

Composes functions left-to-right.

## Install

Choose your favorite package manager:

```bash
npm  add @longlast/pipe
pnpm add @longlast/pipe
yarn add @longlast/pipe
```

## Use

```ts
import {pipe} from "@longlast/pipe";

const split = (pattern) => (str) => str.split(pattern);
const map = (f) => (array) => array.map((elem) => f(elem));
const mapAt = (idx, f) => (array) => array.map((e, i) => i === idx ? f(e) : e);
const join = (delim) => (strs) => strs.join(delim);
const toUpperCase = (s) => s.toUpperCase();

const capitalize = pipe(
    split(""),
    mapAt(0, toUpperCase),
    join(""),
)

const pascalCase = pipe(
    split(/\W+/),
    map(capitalize),
    join(""),
);

pascalCase("chunky-bacon") // => "ChunkyBacon"
```

## Documentation

[Browse the docs on longlast.js.org][docs].

[docs]: https://longlast.js.org/reference/pipe/
npm package: @longlast/symbols
Description: Defines unique symbols for use in ubiquitous interfaces
Author: Ben Christel
Latest version: 1.1.2

# `@longlast/symbols`

This package exports unique symbols, for use e.g. as the method names of
ubiquitous interfaces.

## Install

Choose your favorite package manager:

```bash
npm  add @longlast/symbols
pnpm add @longlast/symbols
yarn add @longlast/symbols
```

## Documentation

[Browse the docs on longlast.js.org][docs].

[docs]: https://longlast.js.org/reference/symbols/

## Development

This package _only_ exports symbols. It does _not_ export anything else,
including types. The purpose of this restriction is to minimize the chance of
breaking changes. **There can be only one** instance of `@longlast/symbols` in
any app bundle; if two packages import different versions of
`@longlast/symbols`, then they will not be able to call each others' methods.
Packages that depend on `@longlast/symbols` should _always_ write their version
specifiers to get the latest 1.x version, e.g. `^1.0.0`.