open-index/open-npm huggingface dataset:
npm package: @limecloud/lime-cli
Description: Lime 官方任务 CLI
Latest version: 1.1.0

# `@limecloud/lime-cli`

Lime 的官方命令行入口，面向统一任务编排。

当前 npm 首发策略：

- 优先尝试下载预编译二进制
- 如果预编译资产暂未发布，npm 安装不会失败
- 运行时会优先查找：
  - `LIME_CLI_BINARY_PATH`
  - 包内已存在的预编译二进制
  - 当前源码仓库中的本地构建产物
  - 当前源码仓库中的 `cargo run -p lime-cli`

当前主线提供：

- `lime task create image`
- `lime task create cover`
- `lime task create video`
- `lime task create broadcast`
- `lime task create url-parse`
- `lime task create typesetting`
- `lime task create resource-search`
- `lime task status`
- `lime task list`
- `lime task retry`
- `lime task cancel`
- `lime task result`
- `lime skill list`
- `lime skill show`
- `lime doctor`

安装方式：

```bash
npm install -g @limecloud/lime-cli
```

说明：

- npm wrapper 在 `postinstall` 阶段会从 `https://github.com/limecloud/lime/releases` 下载同版本预编译二进制。
- 当前预编译 release asset 覆盖：`darwin/arm64`、`darwin/amd64`、`windows/amd64`、`linux/amd64`。
- 若对应版本的 release asset 尚未发布，安装会失败，此时请先发布 GitHub release asset，或在本地直接编译 Rust 二进制使用。

示例：

```bash
lime task create image \
  --prompt "未来城市插图，蓝色电影感" \
  --size "1024x1024" \
  --workspace "." \
  --idempotency-key "image-future-city"
```

成功时标准输出为 JSON，包含：

- `task_id`
- `task_type`
- `status`
- `normalized_status`
- `artifact_path`
- `absolute_artifact_path`
- `reused_existing`

失败时标准错误同样输出结构化 JSON，包含：

- `error_code`
- `error_message`
- `retryable`
- `hint`

常用命令：

```bash
lime task list --status failed
lime task status <task-id>
lime task retry <task-id>
lime task cancel <task-id>
lime skill list
lime skill show broadcast_generate
lime doctor
```

说明：

- `lime media image|cover|video generate` 仍保留为兼容别名。
- 新主线统一收敛到 `lime task create ...`。
- 如果你现在只发布 npm、不发布 GitHub Release，请至少准备一种运行方式：
  - 设置 `LIME_CLI_BINARY_PATH`
  - 或在 Lime 源码仓库内使用该 wrapper，让它自动回退到 `cargo run`

## 维护者发布流程

1. 先构建对应目标平台的 `lime-cli`：

```bash
cargo build --manifest-path "../../src-tauri/Cargo.toml" -p lime-cli --release
```

2. 生成和 npm wrapper 约定一致的 release asset：

```bash
npm run build:release -- \
  --binary "../../src-tauri/target/release/lime" \
  --out-dir "./dist"
```

也可以在 CI 中直接传 target triple：

```bash
npm run build:release -- \
  --target-triple "aarch64-apple-darwin" \
  --version "1.1.0" \
  --out-dir "./dist"
```

3. 将生成的归档上传到 GitHub Release，对应命名形如：

- `lime-<version>-darwin-arm64.tar.gz`
- `lime-<version>-darwin-amd64.tar.gz`
- `lime-<version>-windows-amd64.zip`
- `lime-<version>-linux-amd64.tar.gz`

4. 确认 release asset 已上传后，再执行 npm 发布：

```bash
npm publish --access public
```
npm package: @limedocs/starter-default
Description: Default starter for limedocs
Author: Matthias ETIENNE
Latest version: 1.0.0-beta.18

# Default starter for Limedocs

See [Online documentation](https://limedocs.io).

## Directory Structure

### /archetypes/

This is where you put your archetypes, if any.

### /content/

Where your pages resides


### /theme/

If you want to customize or override your theme, put your files here.
npm package: @limedocs/transformer-cacheable-assets
Description: Make assets cache-friendly by appending a hash to their filename
Author: Matthias Etienne
Latest version: 1.0.0-beta.18

# `@limedocs/transformer-cacheable-assets`

> TODO: description

## Usage

```
const transformerCacheableAssets = require('@limedocs/transformer-cacheable-assets');

// TODO: DEMONSTRATE API
```
npm package: @limedocs/transformer-js-minifier
Description: Javascript minifier for Limedocs using UglifyJS
Author: Matthias ETIENNE
Latest version: 1.0.0-beta.18

# Javascript minifier for Limedocs using UglifyJS

## Install

Install the plugin within your `siteDir` using npm:

```bash
$ npm install @limedocs/transformer-js-minifier
```


## Configuration

Reference the plugin in `limedocs.config.js`:

```js title="limedocs.config.js"
// ...
module.exports = {
  transformers: [
    {
      resolve: "@limedocs/transformer-js-minifier",
      options: {
        // plugin options, see 
      }
    }
    
  ]
}

// ...
```
npm package: @limeeng/semaphore
Description: Semaphores, with promises. Limit access to resources in a safe and easy manner
Author: Emil Englesson
Latest version: 0.7.2

![](https://github.com/LimeEng/NodeSemaphore/workflows/Node%20CI/badge.svg)
[![npm (scoped)](https://img.shields.io/npm/v/@limeeng/semaphore.svg)](https://www.npmjs.com/package/@limeeng/semaphore)

# Node Semaphore

What is a semaphore? A great explanation is available at [Wikipedia](https://en.wikipedia.org/wiki/Semaphore_(programming)).
It is basically a simple way to control access to resources in concurrent systems. One might think that there is no need for semaphores in JavaScript since it is single-threaded by nature, but in some cases it is absolutely necessary. Race conditions can still manifest and there are several legitimate reasons for wanting to throttle concurrency when working with asynchronous systems.

- [Installation](#install)
- [API](#api)
- [Examples](#examples)

# Install

```
npm install --save @limeeng/semaphore
```

# API

## new Semaphore(count)

**count:** `number`
  - Must be an integer > 0

Creates a new Semaphore with the given integer count.

```js
const Semaphore = require('@limeeng/semaphore')

const sem = new Semaphore(4)
```

## semaphore.lock(thunk)

**thunk:** `Function`

Accepts a thunk and returns a promise. The promise will resolve with the return value of the thunk if no errors were thrown, otherwise the promise will reject. Since there is a limited amount of resources (specified by count in the constructor) this thunk might not execute immediately. If maximum concurrency is reached (within the context of the semaphore) the thunk will be placed in a queue and wait until it can execute.

```js
const Semaphore = require('@limeeng/semaphore')

const sem = new Semaphore(2)

sem.lock(() => sharedResource())

function sharedResource() {
  // ...
  return promise
}
```

## semaphore.onIdle()

Returns a promise that resolves when all tasks submitted to the semaphore has completed. Can be called multiple times and it is possible to add more tasks after a call to this function.

```js
const Semaphore = require('@limeeng/semaphore')

const sem = new Semaphore(2)

sem.lock(() => console.log('#1'))
sem.lock(() => console.log('#2'))

sem.onIdle().then(() => console.log('Done! #5'))

sem.lock(() => console.log('#3'))
sem.lock(() => console.log('#4'))
```

# Examples

This will create a version of `got` with concurrency set to 4. That is, no more than 4 requests will be in flight at any given time.

```js
const Semaphore = require('@limeeng/semaphore')
const got = require('got')

const sem = new Semaphore(4)

function politeGot(url) {
  return sem.lock(() => got(url))
}
```
npm package: @limegrass/eslint-plugin-import-alias
Description: Rewrite imports to TSConfig aliases
Author: Limegrass
Latest version: 1.6.1

# @limegrass/eslint-plugin-import-alias

Enforce use of defined aliases in TSConfig/JSConfig through ESLint.

## Why

- Automatic imports by tsserver resolve to relative paths that can be normalized.
- It's easier to refactor by finding and replacing an absolute module path
  without worrying about crafting the regex for `../` and `./`

## Requirements

- Node 14+

## Install

```shell
npm install --save-dev @limegrass/eslint-plugin-import-alias eslint
```

This plugin relies on an alias configuration in `tsconfig.json`, `jsconfig.json`,
or a config with the same schema and a path given as `aliasConfigPath` in its rules
settings. See the [rules documentation][docs-import-alias] for more detail.

## Configuration

This plugin supports multiple configuration parameters which can affect how it handles
relative paths, base URLs, and more. Check the [rules documentation][docs-import-alias]
and [example configurations](./examples) for more detailed configurations.

```jsonc
// .eslintrc
{
    "plugins": ["@limegrass/import-alias"],
    "rules": {
        "@limegrass/import-alias/import-alias": "error",
    },
}
```

The configuration above is also equivalent to

```jsonc
// .eslintrc
{
    "extends": [
        // ... - your other extends, such as `"eslint:recommended"`
        "plugin:@limegrass/import-alias/recommended",
    ],
}
```

Note that while the above is for the deprecated `.eslintrc` format,
this package does support ESLint@^9 and its flat config format.

See [the flat-config example](./examples/flat-config/) for details.

[docs-import-alias]: docs/rules/import-alias.md
npm package: @limekex/bugreport-widget-sdk
Description: Browser SDK for embedding the Stage Bug Reporter widget into staging/UAT applications
Author: limekex
Latest version: 0.2.2

# @limekex/bugreport-widget-sdk

Reusable browser SDK for embedding the Stage Bug Reporter widget into staging/UAT applications.

## Installation

```bash
npm install @limekex/bugreport-widget-sdk
# or
pnpm add @limekex/bugreport-widget-sdk
# or
yarn add @limekex/bugreport-widget-sdk
```

## Usage

```ts
import { initBugReporter } from '@limekex/bugreport-widget-sdk';

initBugReporter({
  apiBaseUrl: 'https://bugreport.betait.no',
  environment: 'staging',
  enabled: true,
  appVersion: '1.2.3',
  commitSha: process.env.VITE_COMMIT_SHA,
  currentUser: { id: 'tester-001', email: 'tester@example.com', role: 'qa' },
  requireAuth: true,  // Optional: require testers to log in
});
```

This injects a floating **🐛 Report bug** button into the page. Clicking it opens the bug report modal.

## Config

See `BugReporterConfig` in `@bugreport/shared-types` for full config options.

## React example

```bash
cd examples/react-example
pnpm dev
```

## Scripts

```bash
pnpm build        # compile TypeScript
pnpm typecheck    # type-check without emit
pnpm dev          # watch mode
```

## Architecture notes

- The `init.ts` entry point is framework-agnostic.
- The floating button is a plain DOM element — no React required for the trigger.
- The modal (`modal.ts`) is a **TODO** placeholder — replace with a real React component or Headless UI modal.
- `payloadBuilder.ts` auto-collects browser context (URL, viewport, locale, user-agent).
- `apiClient.ts` handles the multipart POST to the backend.