open-index/open-npm huggingface dataset:
npm package: @leia-org/luke-client
Description: React client for realtime AI voice communication
Latest version: 0.1.10

# @leia-org/luke-client

React client library for the Luke realtime AI voice communication platform.

## Features

- **LukeProvider**: Context provider that manages the WebSocket connection and audio state.
- **AudioControls**: Ready-made component for microphone and speaker control.
- **TranscriptionDisplay**: Component to show real-time transcripts from the conversation.
- **Hooks**: Custom hooks like `useLukeContext` for building custom UI.

## Installation

```bash
pnpm add @leia-org/luke-client
```

## Usage

Wrap your application (or the part that needs voice features) with `LukeProvider`.

```tsx
import { LukeProvider, useLukeContext, AudioControls, TranscriptionDisplay } from '@leia-org/luke-client';

function App() {
  const token = "your_auth_token_here";
  const serverUrl = "ws://localhost:3001";

  return (
    <LukeProvider serverUrl={serverUrl} authToken={token}>
      <VoiceChat />
    </LukeProvider>
  );
}

function VoiceChat() {
  const { providers, selectProvider, transcription } = useLukeContext();

  return (
    <div>
      <h3>Conversation</h3>
      <AudioControls />
      <TranscriptionDisplay messages={transcription} />
    </div>
  );
}
```

## API

### LukeProvider Props

- `serverUrl` (string): The WebSocket URL of your Luke server.
- `authToken` (string): JWT or auth token for connection.
- `onError` (function): Callback for connection errors.

### useLukeContext

Returns an object with:

- `isConnected` (boolean)
- `isRecording` (boolean)
- `transcription` (array): List of transcription messages.
- `providers` (array): List of available AI providers from the server.
- `selectProvider` (function): Function to switch providers.

## License

MIT
npm package: @leia-org/luke-server
Description: Unified realtime AI server for OpenAI and Gemini
Latest version: 0.1.3

# @leia-org/luke-server

The server-side component of the Luke library, responsible for managing WebSocket connections, authentication, and orchestrating communication with AI providers (OpenAI Realtime, Gemini Live).

## Features

- **Unified Interface**: Abstract away differences between OpenAI and Gemini.
- **WebSocket Server**: Handles real-time audio and text streaming.
- **Authentication**: Built-in support for JWT and custom validation.
- **Session Management**: persistent sessions and database integration hooks.
- **Hybrid Recording**: Records sessions in MP3 (if ffmpeg available) or WAV, with automatic silence trimming.

## Installation

```bash
pnpm add @leia-org/luke-server
```

## Usage

```typescript
import { createLukeServer, openai, gemini } from '@leia-org/luke-server';

const server = createLukeServer({
  providers: [
    openai({ apiKey: process.env.OPENAI_API_KEY }),
    gemini({ apiKey: process.env.GEMINI_API_KEY }),
  ],
  // ... configuration
});

  console.log('Luke server running on port 3001');
});
```

## Recording Configuration

Luke can automatically record sessions. It prioritizes **MP3** (via `ffmpeg`) for storage efficiency but falls back to **WAV** if `ffmpeg` is not found.

```typescript
const server = createLukeServer({
  // ...
  recording: {
    enabled: true,
    directory: './recordings',
    // Supported variables: {id}, {timestamp}, X (random char), N (random number)
    filenameTemplate: 'session_{id}_{timestamp}', 
  }
});
```
*Note: MP3 recording requires `ffmpeg` to be installed and available in the system PATH. It automatically applies filters to remove long periods of silence (>1s) and normalizes audio rate to 24kHz.*

## Configuration

The `createLukeServer` function accepts a configuration object with the following properties:

| Option | Type | Required | Description |
|--------|------|----------|-------------|
| `providers` | `LukeProvider[]` | Yes | Array of initialized provider instances (e.g., `openai({...})`, `gemini({...})`). |
| `auth` | `AuthConfig` | Yes | Configuration for authentication. |
| `auth.jwt` | `JwtConfig` | No | JWT verification settings (`secret`, `algorithms`). |
| `auth.validate` | `Function` | Yes | Callback to validate decoded token and return user object. |
| `session` | `SessionConfig` | No | Hooks for session lifecycle management. |
| `session.create` | `Function` | No | Called when a new session is established. |
| `session.onEnd` | `Function` | No | Called when a session ends (disconnect, error, timeout). |
| `config` | `ProviderSessionConfig` | No | Default configuration for provider sessions. |
| `config.systemInstruction` | `string` | No | System prompt for the AI model. |
| `config.tools` | `ToolDefinition[]` | No | Tools available to the model. |
| `onConnect` | `Function` | No | Callback when a client successfully connects. |
| `onDisconnect` | `Function` | No | Callback when a client disconnects. |
| `onTranscription` | `Function` | No | Callback for real-time transcription events. |
npm package: @leibatt/pyxis
Description: A language for specifying visual analysis insights, objectives and tasks.
Author: Leilani Battle, Alvitta Ottley
Latest version: 0.2.7

# Pyxis
Pyxis is a specification language for defining visual analysis objectives, insights, and tasks in a programmatic way that is consistent with the academic literature.

## Research Team
This project is the work of [Prof. Leilani Battle](https://homes.cs.washington.edu/~leibatt/bio.html), Co-Director of the [UW Interactive Data Lab](http://idl.cs.washington.edu/), and Alvitta Ottley, Director of the [Visual Data Analysis Group](http://visualdata.wustl.edu/) at WashU.

## Citing Pyxis

This project was published as a full paper in the TVCG journal (presented at VIS 2024). Preliminary work was published as a short paper at VIS 2023. If you would like to cite this work, please use the following:
```
@article{battle2024what,
  author={Battle, Leilani and Ottley, Alvitta},
  journal={IEEE Transactions on Visualization and Computer Graphics}, 
  title={What Do We Mean When We Say "Insight"? A Formal Synthesis of Existing Theory}, 
  year={2024},
  volume={30},
  number={9},
  pages={6075-6088},
  doi={10.1109/TVCG.2023.3326698}
}
```

## Setting Pyxis Up Locally

You will need to have both [TypeScript](https://www.typescriptlang.org/download) and [Yarn](https://classic.yarnpkg.com/lang/en/docs/install/#mac-stable) installed prior to setting up Pyxis. The following instructions assume you have already installed TypeScript and Yarn, and are currently in the Pyxis root folder.

To install all package dependencies for Pyxis run:
```
yarn
```

Assuming the installation was successful, to build everything and copy the datasets to the build folder run:
```
yarn build
``` 
To build the source code only run:
``` 
yarn build-src
``` 
To build the examples only run:
``` 
yarn build-examples
``` 
To copy the datasets to the build folder run:
``` 
yarn build-datasets
``` 

## Testing Pyxis
Make sure the code builds and the tests run properly before trying the examples. To run tests and do linting run:
```
yarn test
```
All tests should pass. You may see a few warnings from eslint, but this is fine.

## Running the Examples

The codebase contains examples of how to specify all of the major components of Pyxis, including concepts, instances, domain knowledge nodes, data transformations, data relationships, analytic knowledge nodes, insights, and tasks.

To run any of our existing examples, you can do the following (assuming you are currently in the root folder for Pyxis):
```
node build-test/examples/[path to example].js
```

Here is an example of running the Amar et al. usage scenario from the paper:
```
node build-test/examples/use_cases/amar.js
```
npm package: @leibialreadytaken/tronwallet-adapter-binancewallet
Description: Wallet adapter for Binance Wallet.
Author: tronweb3
Latest version: 1.0.14

# `@leibialreadytaken/tronwallet-adapter-binancewallet`

This package provides an adapter to enable TRON DApps to connect to the [Binance Wallet](https://www.binance.com/en/binancewallet).

## Demo

```typescript
import { BinanceWalletAdapter } from '@leibialreadytaken/tronwallet-adapter-binancewallet';

const adapter = new BinanceWalletAdapter();
// connect to BinanceWallet
await adapter.connect();

// then you can get address
console.log(adapter.address);

const tronWeb = new TronWeb({
    fullHost: 'https://api.trongrid.io',
});

// create a send TRX transaction
const unSignedTransaction = await tronWeb.transactionBuilder.sendTrx(
    targetAddress,
    100,
    adapter.address
);
// using adapter to sign the transaction
const signedTransaction = await adapter.signTransaction(unSignedTransaction);
// broadcast the transaction
await tronWeb.trx.sendRawTransaction(signedTransaction);
```

## Documentation

### API

-   `Constructor(config: BinanceWalletAdapterConfig)`

```typescript
interface BinanceWalletAdapterConfig {
    /**
     * Set if open Wallet's website when wallet is not installed.
     * Default is true.
     */
    openUrlWhenWalletNotFound?: boolean;
    /**
     * Timeout in millisecond for checking if TokenPocket wallet is supported.
     * Default is 2 * 1000ms
     */
    checkTimeout?: number;
    /**
     * Set if open TokenPocket app using DeepLink on mobile device.
     * Default is true.
     */
    openAppWithDeeplink?: boolean;
}
```

-   `network()` method is supported to get current network information. The type of returned value is `Network` as follows:

    ```typescript
    export enum NetworkType {
        Mainnet = 'Mainnet',
        Shasta = 'Shasta',
        Nile = 'Nile',
        /**
         * When use custom node
         */
        Unknown = 'Unknown',
    }

    export type Network = {
        networkType: NetworkType;
        chainId: string;
        fullNode: string;
        solidityNode: string;
        eventServer: string;
    };
    ```

### Caveats

-   Binance Wallet doesn't implement `multiSign()` and `switchChain()`.
-   Binance Wallet only support these: `accountsChanged`,`connect`,`disconnect`.
-   Binance Wallet App does not support any events.

For more information about tronwallet adapters, please refer to [`@tronweb3/tronwallet-adapters`](https://github.com/tronweb3/tronwallet-adapter/tree/main/packages/adapters/adapters)
npm package: @leibniz/extractor
Description: Web content extraction library for Playwright - extracts content from web pages and converts to Markdown
Latest version: 0.0.3

# @leibniz/extractor

Web 内容提取库，将网页内容智能转换为 Markdown。

## 安装

```bash
npm install @leibniz/extractor
```

## 快速开始

```typescript
import { ClipperService } from '@leibniz/extractor';

const clipper = new ClipperService({ cwd: './output' });

// 从 HTML 提取并保存
const result = await clipper.clip(html, 'https://example.com/article');

console.log(result.markdownPath);  // ./output/example.com/文章标题.md
console.log(result.imagesSaved);   // 5
```

## API

### ClipperService

主要服务类，提供完整的网页内容提取和保存功能。

```typescript
import { ClipperService } from '@leibniz/extractor';

const clipper = new ClipperService({ cwd: '/path/to/output' });
```

#### `clip(html, url)` - 提取并保存

```typescript
const result = await clipper.clip(html, url);

// result: {
//   success: boolean,
//   markdownPath: string,  // Markdown 文件路径
//   assetsDir: string,     // 图片资源目录
//   imagesSaved: number    // 保存的图片数量
// }
```

#### `clipToMarkdown(html, url)` - 仅提取不保存

```typescript
const result = clipper.clipToMarkdown(html, url);

// result: {
//   success: boolean,
//   markdown: string,      // Markdown 内容
//   title: string,         // 页面标题
//   images: ExtractedImage[]  // 图片列表（未下载）
// }
```

#### `clipWithPlaywright(url, options?)` - 使用 Playwright 抓取

```typescript
const result = await clipper.clipWithPlaywright(url, {
  waitFor: 'networkidle',           // 等待策略
  waitForSelector: '[data-ready]',  // 等待特定元素
  cookies: [...],                   // 登录态 cookies
  headers: { ... },                 // 自定义请求头
  headless: true                    // 无头模式
});
```

### 直接使用提取函数

```typescript
import { clipFromHtml, extractContent } from '@leibniz/extractor';

// 从 HTML 字符串提取
const result = clipFromHtml(html, url);

// 从 Document 对象提取（适用于 Playwright）
const result = extractContent(document, url);
```

### Slate 编辑器检测

```typescript
import { hasSlateEditor, SlateWikiExtractor } from '@leibniz/extractor';

// 检测页面是否包含 Slate 编辑器
if (hasSlateEditor(document)) {
  const result = SlateWikiExtractor.extract(document);
}
```

## 与 Playwright 集成

```typescript
import { chromium } from 'playwright';
import { ClipperService } from '@leibniz/extractor';

const clipper = new ClipperService({ cwd: './content' });

const browser = await chromium.launch();
const page = await browser.newPage();

await page.goto('https://example.com/article');
const html = await page.content();

const result = await clipper.clip(html, page.url());
console.log(`✓ ${result.markdownPath}`);

await browser.close();
```

## 内置提取器

| 提取器 | 检测方式 | 适用场景 |
|--------|----------|----------|
| SlateWiki | CSS `[data-slate-editor]` | Slate 编辑器页面 |
| GeminiDeepResearch | CSS `.deep-research-panel` | Gemini 深度研究报告 |
| Default | 自动 | 通用网页 (Readability) |

## 输出结构

```
${cwd}/
├── example.com/
│   ├── 文章标题.md
│   └── assets/
│       └── 2026_01_23_10_50_23/
│           └── image_0.png
```

## License

MIT
npm package: @leibnizhu/codex-web-local
Description: A lightweight web interface for Codex that runs on top of the Codex app-server, allowing remote access from any browser
Author: Leibniz Hu
Latest version: 0.0.4

语言：简体中文 | [English](./README.md)

# `npx @leibnizhu/codex-web-local`

一个轻量的 [Codex](https://github.com/openai/codex) Web 界面，复刻桌面端交互体验，并运行在 Codex `app-server` 之上。它把本地 Codex 通过 Web 应用暴露出来，让你可以在任意浏览器里远程访问本地 Codex 实例。

## 前置要求

- 已安装 [Codex CLI](https://github.com/openai/codex)，并且可在 `PATH` 中访问

## 安装

```bash
# 直接用 npx 运行（无需安装）
npx @leibnizhu/codex-web-local

# 或全局安装
npm install -g @leibnizhu/codex-web-local
```

## 用法

```
Usage: codex-web-local [options]

Web interface for Codex app-server

Options:
  -p, --port <port>    监听端口（默认: "3000"）
  --host <host>        监听地址（例如: 127.0.0.1 / 0.0.0.0 / 100.x.x.x）
  -d, --daemon         后台运行（守护进程模式）
  --password <pass>    设置固定访问密码
  --no-password        关闭密码保护
  -h, --help           显示帮助
```

## 示例

### 正式命令（生产/日常使用）

```bash
# 默认 3000 端口启动，并自动生成访问密码
codex-web-local

# 指定端口启动
codex-web-local --port 8080

# 指定访问密码启动
codex-web-local --password my-secret

# 关闭密码保护（仅建议在可信网络中使用）
codex-web-local --no-password

# 后台启动（守护进程模式）
codex-web-local --daemon

# 指定监听地址（例如监听所有网卡）
codex-web-local --host 0.0.0.0

# Tailscale 场景 + 后台运行
codex-web-local --host "$(tailscale ip -4)" --port 3000 --daemon
```

### 开发命令（Vite）

```bash
# 开发模式，监听局域网
npm run dev -- --host 0.0.0.0

# 开发模式，绑定到当前机器的 Tailscale IPv4
npm run dev -- --host "$(tailscale ip -4)"

# 开发模式后台运行
npm run dev -- --host 0.0.0.0 --daemon
```

默认开启密码保护时，服务会在控制台打印密码。浏览器打开 URL 后输入密码即可访问。

## 界面与交互更新

- 输入框底部状态区新增：
  - 当前 git 分支
  - context window 用量圆环（hover 显示详细信息）
  - 剩余额度悬浮卡片
- context 悬浮卡片支持手动“立即压缩”（调用 `thread/compact/start`）。
- 左侧线程列表以 `name` 作为主标题，`preview` 通过 tooltip 展示，不再在 hover 时行内展开。
- AI 响应期间仍可继续输入；点击发送后会进入等待队列，当前轮结束后自动发送。

## 守护进程说明

- `codex-web-local --daemon` 会让 CLI 服务在后台运行，并打印 `PID`。
- `npm run dev -- --daemon` 会让 Vite 开发服务在后台运行，并打印 `PID`。
- 停止后台进程：

```bash
kill <PID>
```

## 文档导航

- 文档总入口：[docs/README.md](./docs/README.md)
- 契约说明：[docs/contracts/README.md](./docs/contracts/README.md)
- app-server 中文文档：[docs/contracts/APP_SERVER_DOCUMENTATION.zh-CN.md](./docs/contracts/APP_SERVER_DOCUMENTATION.zh-CN.md)

## 贡献

欢迎提交 issue 和 PR。如果你有想法、建议或发现了 bug，欢迎在 [GitHub 仓库](https://github.com/Leibnizhu/codex-web-local/issues) 提交反馈。

## 许可证

[MIT](./LICENSE)
npm package: @leibo/console_js
Description: console.js is a small javascript library, fix console is undefined
Author: yanhaijing
Latest version: 0.5.0-1

# [console.js](https://github.com/yanhaijing/console.js) [![](https://img.shields.io/badge/Powered%20by-jslib%20base-brightgreen.svg)](https://github.com/yanhaijing/jslib-base) [![npm](https://img.shields.io/badge/npm-0.5.0-orange.svg)](https://www.npmjs.com/package/@yanhaijing/console_js) [![Build Status](https://travis-ci.org/yanhaijing/console.js.svg?branch=master)](https://travis-ci.org/yanhaijing/console.js) [![license](https://img.shields.io/badge/license-MIT-blue.svg)](https://github.com/yanhaijing/console.js/blob/master/LICENSE)

console.js is a small javascript library, fix console is undefined, like html5shim and reset.css.

In ie6 ie7,console is undefined. In ie8 ie9, first open the developer tools before, console is undefined.

## Migration to https://github.com/jsmini/console

## Guides
Download and install through the npm

```bash
$ npm install --save @yanhaijing/console_js
```

If you are use webpack

```js
import { polyfill } from '@yanhaijing/console_js';

polyfill(); // polyfill console undefined
```

If you are use requirejs

```js
requirejs(['node_modules/@yanhaijing/console_js/dist/index.aio.js'], function (console_js) {
    var polyfill = console_js.polyfill;

    polyfill(); // polyfill console undefined
})
```

If you are use browser

```html
<script src="node_modules/@yanhaijing/console_js/dist/index.aio.js"></script>

<script>
    var polyfill = console_js.polyfill;
    
    polyfill(); // polyfill console undefined
</script>
```

## Document
[API](https://github.com/yanhaijing/console.js/blob/master/doc/api.md)

## Principle & Blog
[use console.js](http://yanhaijing.com/js/2014/11/03/use-console.js/)

## Contribution
The first run requires installation of dependencies

```bash
$ npm install
```

Build code

```bash
$ npm run build
```

Run unit test, the browser environment requires manual test, in `test/browser`

```bash
$ npm test
```

Update package.json version，update README.md version，update CHANGELOG.md，then release

```bash
$ npm run release
```

Push to npm

```bash
$ npm publish --access=public
```

You may need to modify it as follows：

- README.md
- package.json
- config/rollup.js
- test/browser/index.html

## CHANGELOG
[CHANGELOG.md](https://github.com/yanhaijing/console.js/blob/master/CHANGELOG.md)

## TODO
[TODO.md](https://github.com/yanhaijing/console.js/blob/master/TODO.md)

## Who use

## Refrence
- [MSDN](http://msdn.microsoft.com/en-us/library/ie/gg589530.aspx)
- [MDN](https://developer.mozilla.org/en-US/docs/Web/API/Console)
- [Firebug](http://getfirebug.com/wiki/index.php/Console_API)

## Related projects
- [browser-shim](https://github.com/ishmaelthedestroyer/browser-shim)
- [console-shim(liamnewmarch)](https://github.com/liamnewmarch/console-shim)
- [console-shim(kayahr)](https://github.com/kayahr/console-shim)
- [console-polyfill](https://github.com/paulmillr/console-polyfill)
- [consolex.js](https://github.com/deadlyicon/consolex.js/blob/master/src/consolex.js)
npm package: @leicht.io/primeval-ui
Description: Primeval UI is a small and minimalistic UI framework with minimal dependencies.
Author: Christian Leicht
Latest version: 2.2.2

# Primeval UI

Primeval UI is a small and minimalistic UI framework with minimal dependencies. The framework doesn't care about browser support since it is meant to work only in evergreen browsers.
It is meant to be lightweight and lightning fast without hundreds of components but only what's necessary. The CSS and JS is 20 KB in total when gzipped.

For now and in the nearest future this framework is solely in beta state.

## Installation

Use the package manager [npm](https://npm.com/) to install UI.

```bash
npm install @leicht.io/primeval-ui
```

## Running the demo application
Execute the following command to run the demo application: 
```bash
npm run development
```

## Usage

For now the library consists of the following components:
- Header Menu
- Photo Gallery
- Notifications
- Modals
- Loader 
- Inputs 
- Grids with Skeleton like Facebook e.g.
- Cards
- ReadingPositionIndicator
- Footer


## Contributing
Pull requests are welcome. For major changes, please open an issue first to discuss what you would like to change.

Please make sure to update tests as appropriate.

## License
[MIT](https://choosealicense.com/licenses/mit/)
npm package: @leicht.io/ui
Description: UI is a small and minimalistic UI framework without any dependencies. The framework doesn't care about browser support since it is meant to work only in evergreen browsers. It is meant to be lightweight and lightning fast without hundreds of components bu
Author: Christian Leicht
Latest version: 1.1.25
Deprecated: Package no longer supported. Contact Support at https://www.npmjs.com/support for more info.

# UI

UI is a small and minimalistic UI framework without any dependencies. The framework doesn't care about browser support since it is meant to work only in evergreen browsers.
It is meant to be lightweight and lightning fast without hundreds of components but only what's necessary. The CSS and JS is 20 KB in total when gzipped.

For now and in the nearest future this framework is solely in beta state. I developed it for my own website: https://leicht.io

## Installation

Use the package manager [npm](https://npm.com/) to install UI.

```bash
npm install @leicht.io/ui
```

## Usage

For now the library consists of the following components:
- Header Menu
- Photo Gallery
- Notifications
- Modals
- Loader 
- Inputs 
- Grids with Skeleton like Facebook e.g.
- Cards
- ReadingPositionIndicator


## Contributing
Pull requests are welcome. For major changes, please open an issue first to discuss what you would like to change.

Please make sure to update tests as appropriate.

## License
[MIT](https://choosealicense.com/licenses/mit/)
npm package: @leichtgewicht/async-cache
Description: Simple, fast, no-dependency cache for async calls.
Author: Martin Heidegger
Latest version: 1.1.0

Simple, fast, no-dependency cache for async calls.

```js
import { createCache } from '@leichtgewicht/async-cache'
const cache = createCache({
  resolver: async (key) => {
    // load data or do something else to get the value for the key
    return value
  },
  maxSize: 1000, // max amount of keys cached at the same time
  maxAgeMs: 1000 // (optional) maxAge for a result before refetching
})

const result = await cache.get('key') // load the key, if present in cache and not expired, will return previous value
result // result as provided by the async resolver
```

Note: Based on, but not depending on, [HashLRU](https://github.com/dominictarr/hashlru/)
npm package: @leichtgewicht/base64-codec
Description: base64 to/from bytes codec (esm/cjs)
Author: Martin Heidegger
Latest version: 1.0.0

# @leichtgewicht/base64-codec

A javascript-only (esm/cjs) base64 codec that is [abstract-encoding][] compatible,
well-tested and pretty efficient. Bonus: It doesn't use Nodejs' Buffer object
and comes with typescript types.

[abstract-encoding]: https://github.com/mafintosh/abstract-encoding

## Usage

```js
import { base64 } from '@leichtgewicht/base64-codec' // require works too!

const str = 'AA=='
const bytes = base64.encode(
  str,
  new Uint8Array(base64.encodingLength(str)), // own buffer supplied, optional
  0 // offset, at which to write the str, optional
)
str === base64.decode(bytes, 0, bytes.length)
```

## URL Support

Use `base64URL` for de-/encoding for the URL variant of base64.

```js
import { base64URL } from '@leichtgewicht/base64-codec'
```

## Concatenated Buffer

For performance reasons, this codec **does not** support [concatenated
base64 strings](https://en.wikipedia.org/wiki/Base64#Output_padding).

If you need to encode concatenated strings, split them before passing them to this codec.

## Why?

There are plenty of base64 implementations on NPM, but when looking into
them there was none with cjs/esm support that offered positional encoding
and bringing one owns buffer.

## License

[MIT](./LICENSE)
npm package: @leichtgewicht/chrome-ext-downloader
Description: Allows you to easily download a Chrome extension's source code.
Author: Jiri Pospisil
Latest version: 1.1.0

# chrome-ext-downloader

Allows you to download the extension's source code without installing it.

## Installation

```
$ npm install -g chrome-ext-downloader
```

## Usage

```
Usage: ced <extension-id>
```

## Example

Say you want to download the source code of [Google Mail
Checker](https://chrome.google.com/webstore/detail/google-mail-checker/mihcahmgecmbnbcchbopgniflfhgnkff).
Grab the ID of the extension from the URL, in this case it's `mihcahmgecmbnbcchbopgniflfhgnkff`. Then simply run the following and you will have the source code in the current directory.

```
$ ced mihcahmgecmbnbcchbopgniflfhgnkff
```

## License

MIT
npm package: @leichtgewicht/dnsstamp
Description: DNS Stamp de/encoder
Author: Olivier Poitrey
Latest version: 1.1.4

## @leichtgewicht/dnsstamp

`@leichtgewicht/dnsstamp` is a fork of [dnsstamp](https://github.com/rs/node-dnsstamp) with the PR

- https://github.com/rs/node-dnsstamp/pull/1

merged in.

# DNS Stamp

This node module provides a simple API to parse and generate [DNS Stamp](https://dnscrypt.info/stamps-specifications/) as defined by [Frank Denis](https://twitter.com/jedisct1).

## Installation

    npm install dnsstamp

## Usage

Parse a stamp URL:

```js
const DNSStamp = require('dnsstamp');

let stamp = DNSStamp.parse(sdns);
```

Create a stamp URL:

```js
const DNSStamp = require('dnsstamp');

let stamp = new DNSStamp.DNSCrypt(addr, {
    pk: pk,
    providerName: providerName,
});
let sdns = stamp.toString();
```

Supported stamps:

* `DNSStamp.DNSCrypt`: constructor(`addr`, {`props`, `pk`, `providerName`})
* `DNSStamp.DOH`: constructor(`addr`, {`props`, `hostName`, `hash`, `path`})
* `DNSStamp.DOT`: constructor(`addr`, {`props`, `hostName`, `hash`})
* `DNSStamp.Plain`: constructor(`addr`, {`props`})

## Licenses

All source code is licensed under the [MIT License](https://raw.github.com/rs/node-dnsstamp/master/LICENSE).