open-index/open-npm huggingface dataset:
npm package: @hugmanrique/esbuild-http-server
Description: Serves the output of esbuild, refreshing the browser on rebuilds
Author: Hugo Manrique
Latest version: 0.0.4

# esbuild-http-server

Serves the output of esbuild, refreshing the browser on rebuilds.

## License

[MIT](LICENSE) &copy; [Hugo Manrique](https://hugmanrique.me)
npm package: @hugmanrique/eslint-config
Description: Personal ESLint configuration
Author: Hugo Manrique
Latest version: 2.0.6

# @hugmanrique/eslint-config

[![npm][npm]][npm-url]

My personal ESLint configuration based on [`eslint:recommended`](https://eslint.org/docs/rules/).
It includes [Prettier](https://prettier.io/) and is compatible with [React](https://reactjs.org/) and [webpack](https://webpack.js.org/).

Includes a TypeScript override based on the [`@typescript-eslint`](https://github.com/typescript-eslint/typescript-eslint/) parser.

## Install

```bash
$ npm install --save-dev eslint @hugmanrique/eslint-config
```

## Usage

Create an `.eslintrc` file in your project's root directory:

```json
{
  "extends": ["@hugmanrique/eslint-config"]
}
```

You can further [customize your config](https://eslint.org/docs/user-guide/configuring).

## License

[MIT](LICENSE) &copy; [Hugo Manrique](https://hugmanrique.me)

[npm]: https://img.shields.io/npm/v/@hugmanrique/eslint-config.svg
[npm-url]: https://npmjs.com/package/@hugmanrique/eslint-config
npm package: @hugmanrique/ws-extensions
Description: Sec-WebSocket-Extensions header parser and serializer
Author: Hugo Manrique
Latest version: 0.0.2

# :cyclone: ws-extensions

[![npm][npm]][npm-url]
[![node][node]][node-url]
[![deps][deps]][deps-url]
[![tests][tests]][tests-url]
[![coverage][cover]][cover-url]
[![license][license]][license-url]

`Sec-WebSocket-Extensions` header parser and serializer utils. This library aims to allow any WebSocket server implementation to parse the extensions supplied by the client decoupling the logic of parsing and checking the header value conforms to the ABNF specified in [Section 9.1](https://tools.ietf.org/html/rfc6455#section-9.1) of the [WebSocket Protocol RFC](https://tools.ietf.org/html/rfc6455).

## Getting Started

Install ws-extensions using [`npm`](https://www.npmjs.com/):

```bash
npm install --save @hugmanrique/ws-extensions
```

Or via [`yarn`](https://yarnpkg.com/en/package/@hugmanrique/ws-extensions):

```bash
yarn add @hugmanrique/ws-extensions
```

The minimum supported Node version is `v8.10.0`.

Let's get started by parsing a header:

```javascript
import { parse } from '@hugmanrique/ws-extensions';
const header = 'a; b=1';

// [ { name: 'a', params: { b: 1 } } ]
parse(header);
```

## Multiple complex offers support

`ws-extensions` supports duplicate offers or params:

```javascript
const header = 'a; b=1, c, b; d, c; e="hey, you"; e, a; b';

/*
[ { name: 'a', params: { b: 1 } },
  { name: 'c', params: {} },
  { name: 'b', params: { d: true } },
  { name: 'c', params: { e: ['hey, you', true] } },
  { name: 'a', params: { b: true } } ]
*/
parse(header);
```

## Methods

#### `parse(header)`

Parses the `Sec-WebSocket-Extensions` header into a JavaScript object.

* Returns an empty object if the header is empty.
* Throws a `SyntaxError` if the header is invalid.
* Unescapes data (numbers and flags get converted to JS primitives)
* Supports duplicate offers
* Supports duplicate params (converts the param value to an Array)

#### `serialize(name, params)`

Serializes the params of an offer.

## License

[MIT](LICENSE) &copy; [Hugo Manrique](https://hugmanrique.me)

[npm]: https://img.shields.io/npm/v/@hugmanrique/ws-extensions.svg
[npm-url]: https://npmjs.com/package/@hugmanrique/ws-extensions
[node]: https://img.shields.io/node/v/@hugmanrique/ws-extensions.svg
[node-url]: https://nodejs.org
[deps]: https://img.shields.io/david/hugmanrique/ws-extensions.svg
[deps-url]: https://david-dm.org/hugmanrique/ws-extensions
[tests]: https://img.shields.io/travis/hugmanrique/ws-extensions/master.svg
[tests-url]: https://travis-ci.org/hugmanrique/ws-extensions
[license-url]: LICENSE
[license]: https://img.shields.io/github/license/hugmanrique/ws-extensions.svg
[cover]: https://img.shields.io/coveralls/hugmanrique/ws-extensions.svg
[cover-url]: https://coveralls.io/r/hugmanrique/ws-extensions/
npm package: @hugo-fixit/fixit-releaser
Description: Versioning, change-log and release tool.
Author: Lruihao
Latest version: 1.6.0
Deprecated: Superseded by https://github.com/Lruihao/auto-changelog-plus

# FixIt Releaser

[![NPM version](https://img.shields.io/npm/v/@hugo-fixit/fixit-releaser.svg)](https://www.npmjs.com/package/@hugo-fixit/fixit-releaser)

中文 | [English](/README.en.md)

版本控制、变更日志和发布工具。

> [!CAUTION]
> 该工具已停止维护！建议使用 [auto-changelog](https://github.com/Lruihao/auto-changelog)。

## ✨ 功能

- 📝 自动生成变更日志（Conventional Commits 规范）
- 🔖 更新 FixIt 内部版本号 `*`

## 📦 安装

| 包管理器 | 命令                                      |
| -------- | ----------------------------------------- |
| pnpm     | `pnpm add -D @hugo-fixit/fixit-releaser`  |
| yarn     | `yarn add -D @hugo-fixit/fixit-releaser`  |
| npm      | `npm i -D @hugo-fixit/fixit-releaser`     |

在 `package.json` 中添加命令：

```json
{
  "scripts": {
    "version": "fixit-releaser changelog -p && git add CHANGELOG.md"
  }
}
```

## 🚀 用法

### 变更日志

基于 [Conventional Commits](https://www.conventionalcommits.org/zh-hans/v1.0.0/) 规范，支持以下类型的提交：

- `feat:` 新功能
- `fix:` 修复问题
- `perf:` 性能优化
- `refactor:` 代码重构
- `docs:` 文档变更
- `test:` 测试相关
- `style:` 代码格式调整
- `chore:` 构建过程或辅助工具的变动
- `build:` 构建系统变动
- `ci:` 持续集成配置变动
- `revert:` 代码回滚
- 支持 scope：`feat(api):`, `fix(ui):` 等
- 支持 emoji：`:sparkles: feat:`, `✨ feat:` 等
- 支持 Breaking Changes：`feat!:`, `feat(scope)!:`, `BREAKING CHANGE:` 等格式
- 自动忽略 WIP 提交：`wip:`, `Wip:` 等临时提交不会包含在变更日志中

例如：

```bash
# 生成全部版本的变更日志
npx fixit-releaser changelog
# 从指定版本开始生成变更日志
npx fixit-releaser changelog --starting-version v0.3.10
```

> 执行 `fixit-releaser changelog -h` 获取帮助或者参考 [auto-changelog](https://github.com/cookpete/auto-changelog) 文档。

### 版本 `*`

> [!WARNING]
> 已经集成到 [FixIt](https://github.com/hugo-fixit/FixIt) monorepo，见 [FixIt#629](https://github.com/hugo-fixit/FixIt/pull/629)

FixIt 内部开发版本格式如下：

```plaintext
v{major}.{minor}.{patch+1}-{timestamp}-{shortHash}
```

例如：

```bash
# 更新 FixIt 正式版本
npx fixit-releaser version prod
# 更新 FixIt 开发版本
npx fixit-releaser version dev
```

## ⚙️ 配置

`fixit-releaser changelog` 配置与 auto-changelog 兼容。

## 🙏 致谢

- [auto-changelog](https://github.com/cookpete/auto-changelog)
npm package: @hugo-t-b/eslint-config
Description: My ESLint configuration for JS, TS, and Vue
Author: Hugo Brosnahan
Latest version: 1.5.3

# My ESLint Config

This is my ESLint configuration for [JavaScript](#usage), [TypeScript](#typescript), [Vitest unit tests](#vitest), and [Vue SFCs](#vue).

## Installation

### As a dev-dependency

```shell
npm install --save-dev @hugo-t-b/eslint-config
```

### Globally

```shell
npm install --global @hugo-t-b/eslint-config
```

## Usage

Modify the `extends` property in your `.eslintrc`:

```yaml
# .eslintrc.yaml
extends: "@hugo-t-b"
# ...
```

All rules can be modified or turned off with the `rules` property in your `.eslintrc`.

### TypeScript

```yaml
extends: "@hugo-t-b/eslint-config/typescript"
# ...
```

You will need a `tsconfig.json` file and to have installed `@typescript-eslint/eslint-plugin`, `@typescript-eslint/parser`, and `eslint-import-resolver-typescript`.

### Vitest

```yaml
extends: "@hugo-t-b/eslint-config/vitest"
# ...
```

This config builds on the TypeScript one, so you will need to follow the steps needed for that to work.

### Vue

You will need to add the JavaScript config before the Vue one in the `extends` property of your `.eslintrc`:

```yaml
extends: 
  - "@hugo-t-b"
  - "@hugo-t-b/eslint-config/vue"
# ...
```

You will need to have installed `eslint-plugin-vue` and `vue-eslint-parser`.

#### With the TypeScript config

The Vue config works with the TypeScript config automatically. Once you have followed the steps needed for both to work, add the TypeScript config before the Vue one in the `extends` property of your `.eslintrc`:

```yaml
extends:
  - "@hugo-t-b/eslint-config/typescript"
  - "@hugo-t-b/eslint-config/vue"
# ...
```

Note: you will need a `script` or `<script setup>` with the `lang` set to `ts` in every SFC. To remove this requirement, set `parserOptions.parser` to `@typescript-eslint/parser` in your `.eslintrc`.
npm package: @hugo-team/react-joyride
Description: Create guided tours for your apps
Author: Gil Barbara
Latest version: 2.4.8

# React Joyride

[![](https://badge.fury.io/js/react-joyride.svg)](https://www.npmjs.com/package/react-joyride) [![](https://travis-ci.org/gilbarbara/react-joyride.svg)](https://travis-ci.org/gilbarbara/react-joyride) [![](https://api.codeclimate.com/v1/badges/43ecb5536910133429bd/maintainability)](https://codeclimate.com/github/gilbarbara/react-joyride/maintainability) [![](https://api.codeclimate.com/v1/badges/43ecb5536910133429bd/test_coverage)](https://codeclimate.com/github/gilbarbara/react-joyride/test_coverage)

[![Joyride example image](http://gilbarbara.com/files/react-joyride.png)](https://react-joyride.com/)

#### Create awesome tours for your app!

Showcase your app to new users or explain functionality of new features.

It uses [react-floater](https://github.com/gilbarbara/react-floater) for positioning and styling.  
And you can use your own components too!

**View the demo [here](https://react-joyride.com/)** (or the codesandbox [examples](https://codesandbox.io/s/github/gilbarbara/react-joyride-demo))

**Read the [docs](https://docs.react-joyride.com/)**

Chat about it in our [Spectrum community](https://spectrum.chat/react-joyride)

## Setup

```bash
npm i react-joyride
```

## Getting Started

```jsx
import Joyride from 'react-joyride';

export class App extends React.Component {
  state = {
    steps: [
      {
        target: '.my-first-step',
        content: 'This is my awesome feature!',
      },
      {
        target: '.my-other-step',
        content: 'This another awesome feature!',
      },
      ...
    ]
  };

  render () {
    const { steps } = this.state;

    return (
      <div className="app">
        <Joyride
          steps={steps}
          ...
        />
        ...
      </div>
    );
  }
}
```

> If you need to support legacy browsers you need to include the [scrollingelement](https://github.com/mathiasbynens/document.scrollingElement) polyfill.

## Development

Setting up a local development environment is easy!

Clone (or fork) this repo on your machine, navigate to its location in the terminal and run:

```bash
npm install
npm link # link your local repo to your global packages
npm run watch # build the files and watch for changes
```

Now clone https://github.com/gilbarbara/react-joyride-demo and run:

```bash
npm install
npm link react-joyride # just link your local copy into this project's node_modules
npm start
```

**Start coding!** 🎉
npm package: @hugo-team/slate
Description: A completely customizable framework for building rich text editors.
Latest version: 0.41.6

This package contains the core logic of Slate. It's separated further into a series of directories:

* [**Changes**](./src/changes) — containing the changes that are used to alter a Slate document.
* [**Constants**](./src/constants) — containing constants that are used in Slate's codebase.
* [**Models**](./src/models) — containing the models that define Slate's data structure.
* [**Operations**](./src/operations) — containing the low-level operations that create Slate changes.
* [**Schemas**](./src/schemas) - containing the core schema that ships with Slate by default.
* [**Utils**](./src/utils) — containing a few private convenience modules.

Feel free to poke around in each of them to learn more!
npm package: @hugo-team/slate-react
Description: A set of React components for building completely customizable rich-text editors.
Latest version: 0.19.5

This package contains the React-specific logic for Slate. It's separated further into a series of directories:

* [**Components**](./src/components) — containing the React components for rendering Slate editors.
* [**Constants**](./src/constants) — containing a few private constants modules.
* [**Plugins**](./src/plugins) — containing the React-specific plugins for Slate editors.
* [**Utils**](./src/utils) — containing a few private convenience modules.

Feel free to poke around in each of them to learn more!
npm package: @hugoalh/is-empty
Description: A module to determine whether the item is empty.
Author: hugoalh
Latest version: 1.0.6

# Is Empty (ES)

[**⚖️** MIT](./LICENSE.md)

[![GitHub: hugoalh/is-empty-es](https://img.shields.io/github/v/release/hugoalh/is-empty-es?label=hugoalh/is-empty-es&labelColor=181717&logo=github&logoColor=ffffff&sort=semver&style=flat "GitHub: hugoalh/is-empty-es")](https://github.com/hugoalh/is-empty-es)
[![JSR: @hugoalh/is-empty](https://img.shields.io/jsr/v/@hugoalh/is-empty?label=@hugoalh/is-empty&labelColor=F7DF1E&logo=jsr&logoColor=000000&style=flat "JSR: @hugoalh/is-empty")](https://jsr.io/@hugoalh/is-empty)
[![NPM: @hugoalh/is-empty](https://img.shields.io/npm/v/@hugoalh/is-empty?label=@hugoalh/is-empty&labelColor=CB3837&logo=npm&logoColor=ffffff&style=flat "NPM: @hugoalh/is-empty")](https://www.npmjs.com/package/@hugoalh/is-empty)

An ECMAScript (JavaScript & TypeScript) module to determine whether the item is empty.

## 🔰 Begin

### 🎯 Targets

| **Targets** | **Remote** | **JSR** | **NPM** |
|:--|:-:|:-:|:-:|
| **[Bun](https://bun.sh/)** >= v1.1.0 | ❌ | ✔️ | ✔️ |
| **[Deno](https://deno.land/)** >= v2.1.0 | ✔️ | ✔️ | ✔️ |
| **[NodeJS](https://nodejs.org/)** >= v20.9.0 | ❌ | ✔️ | ✔️ |

> [!NOTE]
> - It is possible to use this module in other methods/ways which not listed in here, however those methods/ways are not officially supported, and should beware maybe cause security issues.

### #️⃣ Resources Identifier

- **Remote - GitHub Raw:**
  ```
  https://raw.githubusercontent.com/hugoalh/is-empty-es/{Tag}/mod.ts
  ```
- **JSR:**
  ```
  [jsr:]@hugoalh/is-empty[@{Tag}]
  ```
- **NPM:**
  ```
  [npm:]@hugoalh/is-empty[@{Tag}]
  ```

> [!NOTE]
> - For usage of remote resources, it is recommended to import the entire module with the main path `mod.ts`, however it is also able to import part of the module with sub path if available, but do not import if:
>
>   - it's path has an underscore prefix (e.g.: `_foo.ts`, `_util/bar.ts`), or
>   - it is a benchmark or test file (e.g.: `foo.bench.ts`, `foo.test.ts`), or
>   - it's symbol has an underscore prefix (e.g.: `_bar`, `_foo`).
>
>   These elements are not considered part of the public API, thus no stability is guaranteed for them.
> - For usage of JSR or NPM resources, it is recommended to import the entire module with the main entrypoint, however it is also able to import part of the module with sub entrypoint if available, please visit the [file `jsr.jsonc`](./jsr.jsonc) property `exports` for available sub entrypoints.
> - It is recommended to use this module with tag for immutability.

### 🛡️ Runtime Permissions

*This module does not request any runtime permission.*

## 🧩 APIs

- ```ts
  function isEmpty(item: unknown): boolean;
  ```

> [!NOTE]
> - For the full or prettier documentation, can visit via:
>   - [Deno CLI `deno doc`](https://docs.deno.com/runtime/reference/cli/documentation_generator/)
>   - [JSR](https://jsr.io/@hugoalh/is-empty)

## ✍️ Examples

- ```ts
  isEmpty(true);
  //=> false
  ```
- ```ts
  isEmpty([{}]);
  //=> false
  ```
- ```ts
  isEmpty([]);
  //=> true
  ```
- ```ts
  isEmpty({});
  //=> true
  ```
npm package: @hugodf/reading-time
Description: Calculate the amount of time a string would take to read.
Author: Hugo Di Francesco
Latest version: 0.0.2

# reading-time

Calculate the amount of time a string would take to read.

# Installation

```sh
npm i --save @hugodf/reading-time
```

# Usage

```js
const { readingTime } = require("reading-time");
// or
import { readingTime } from "reading-time";

const time = readingTime("My text...");
// 1, time to read in minutes
```

# Advanced Usage

## Pass a custom wordCount -> readingTime function

```js
const readingTimeFunction = wordCount => {
  return wordCount / 100;
  // default divides by 200 and rounds to nearest integer > 0
};
const time = readingTime("My text...", readingTimeFunction);
// 0.02
```

## Accessing the average reading time function

There is a built-in `averageReadingTime` function which uses 200 words per minute
(average reading time).

This can be used to create a function to format the output without using a custom
readingTime function eg. if the formatting in whole minutes is not acceptable

```js
const { readingTime, averageReadingTime } = require("reading-time");
// or
import { readingTime, averageReadingTime } from "reading-time";

const roundedDownAverageReadingTimeFn = wordCount => {
  // Always round down the minutes.
  return Math.floor(averageReadingTime(wordCount));
};
const time = readingTime("My text...", roundedDownAverageReadingTimeFn);
// 0
```
npm package: @hugodf/sequelize-cli
Description: Hugo's fork of the Sequelize CLI
Latest version: 5.4.0

# sequelize/cli [![npm version](https://badge.fury.io/js/%40hugodf%2Fsequelize-cli.svg)](https://badge.fury.io/js/%40hugodf%2Fsequelize-cli)

The Sequelize Command Line Interface (CLI)

## Table of Contents
- [Installation](#installation)
- [Contributing](#contributing)
- [Documentation](#documentation)

## Installation

### Globally
Install CLI globally with

```bash
$ npm install -g sequelize-cli
```

Now you can run CLI using following command anywhere

```bash
$ sequelize
```

### Locally
Install CLI locally to your `node_modules` folder with

```bash
$ npm install --save sequelize-cli
```

You should be able to run CLI with

```bash
$ node_modules/.bin/sequelize
```

### Usage
```
Sequelize CLI [Node: 6.11.2, CLI: 3.0.0, ORM: 4.8.0]

Commands:
  db:migrate                        Run pending migrations
  db:migrate:schema:timestamps:add  Update migration table to have timestamps
  db:migrate:status                 List the status of all migrations
  db:migrate:undo                   Reverts a migration
  db:migrate:undo:all               Revert all migrations ran
  db:seed                           Run specified seeder
  db:seed:undo                      Deletes data from the database
  db:seed:all                       Run every seeder
  db:seed:undo:all                  Deletes data from the database
  db:create                         Create database specified by configuration
  db:drop                           Drop database specified by configuration
  init                              Initializes project
  init:config                       Initializes configuration
  init:migrations                   Initializes migrations
  init:models                       Initializes models
  init:seeders                      Initializes seeders
  migration:generate                Generates a new migration file       [aliases: migration:create]
  model:generate                    Generates a model and its migration  [aliases: model:create]
  seed:generate                     Generates a new seed file            [aliases: seed:create]

Options:
  --version  Show version number                                         [boolean]
  --help     Show help                                                   [boolean]
```

## Contributing

Sequelize CLI is always looking for contributions. You can help us with fixing bugs, reporting bugs or improving documentation.

Please read [contributing documentation](CONTRIBUTING.md)

## Documentation

- [Migrations Documentation](http://docs.sequelizejs.com/manual/tutorial/migrations.html)
- [CLI Options](docs/README.md)
- [Frequently Asked Questions](docs/FAQ.md)
npm package: @hugofnm/expo-dynamic-app-icon
Description: Programmatically change the app icon in Expo.
Author: Junseo Oh
Latest version: 1.2.1

# expo-dynamic-app-icon

Programmatically change the app icon in Expo.

## Install

```
npx expo install expo-dynamic-app-icon
```

## Set icon file

add plugins in `app.json`

```typescript
 "plugins": [
      [
        "expo-dynamic-app-icon",
        {
          "red": { // icon name
            "image": "./assets/icon1.png", // icon path
            "prerendered": true, // for ios UIPrerenderedIcon option
            "platforms":  ["ios", "android"]  // optional platforms array. defaults to both platforms if emitted
          },
          "gray": {
            "image": "./assets/icon2.png",
            "prerendered": true,
            "platforms":  ["ios"]
          }
        }
      ]
    ]
```

## Check AndroidManifest (for android)

```
expo prebuild
```

check added line
[AndroidManifest.xml](./example/android/app/src/main/AndroidManifest.xml#L33-L44)

```xml
  ...
    <activity-alias android:name="expo.modules.dynamicappicon.example.MainActivityred" android:enabled="false" android:exported="true" android:icon="@mipmap/red" android:targetActivity=".MainActivity">
      <intent-filter>
        <action android:name="android.intent.action.MAIN"/>
        <category android:name="android.intent.category.LAUNCHER"/>
      </intent-filter>
    </activity-alias>
    <activity-alias android:name="expo.modules.dynamicappicon.example.MainActivitygray" android:enabled="false" android:exported="true" android:icon="@mipmap/gray" android:targetActivity=".MainActivity">
      <intent-filter>
        <action android:name="android.intent.action.MAIN"/>
        <category android:name="android.intent.category.LAUNCHER"/>
      </intent-filter>
    </activity-alias>
  ...
```

## Create new `expo-dev-client`

create a new `expo-dev-client` and begin using `expo-dynamic-app-icon`

## Use `setAppIcon`

- if error, return **false**
- else, return **changed app icon name**

```typescript
import { setAppIcon } from "expo-dynamic-app-icon";

...

setAppIcon("red") // set icon 'assets/icon1.png'
```

## Use `getAppIcon`

get current app icon name

- default return is `DEFAULT`

```typescript
import { getAppIcon } from "expo-dynamic-app-icon";

...

getAppIcon() // get current icon name 'red'
```

<a href="https://www.buymeacoffee.com/outsung" target="_blank"><img src="https://www.buymeacoffee.com/assets/img/custom_images/orange_img.png" alt="Buy Me A Coffee" style="height: 41px !important;width: 174px !important;box-shadow: 0px 3px 2px 0px rgba(190, 190, 190, 0.5) !important;-webkit-box-shadow: 0px 3px 2px 0px rgba(190, 190, 190, 0.5) !important;" ></a>
npm package: @hugofusinato/agentlens
Description: Scan local and public repos for AI agent context cost — detect CLAUDE.md, AGENTS.md, .cursorrules and calculate token costs across all major LLM providers
Latest version: 1.0.5

# AgentLens

Scan de repositórios para custos de contexto de agentes de IA. Detecta `CLAUDE.md`, `AGENTS.md`, `.cursorrules`, `copilot-instructions.md` e calcula custos de tokens para os principais LLMs.

Funciona de três formas — escolha a que se encaixa no seu fluxo.

---

## App (HTML)

Zero instalação. Baixe `agentlens.html`, abra no browser.

- Analisa repositórios públicos do GitHub via API
- Carrega relatórios `.json` gerados pelo CLI
- Toggle de idioma PT/EN
- Aba Compare para comparar múltiplos repos

```
1. Baixe agentlens.html
2. Abra no Chrome, Firefox, Safari ou Edge
3. Cole: https://github.com/owner/repo → Analisar
```

All processing happens in your browser via the GitHub public API.

---

## CLI

Analisa repositórios locais e gera relatório HTML + JSON.

```bash
# Com npx (sem instalação)
npx @hugofusinato/agentlens
npx @hugofusinato/agentlens /caminho/do/repo
npx @hugofusinato/agentlens --path . --path ../outro-repo

# Ou instale globalmente
npm install -g @hugofusinato/agentlens
agentlens /caminho/do/repo

# Opções úteis
agentlens --stdout          # JSON no stdout
agentlens --no-open         # não abre browser automaticamente
agentlens --out meu-repo    # nome do arquivo de saída
```

Gera `agentlens-report.html` e `agentlens-report.json` no diretório atual.

---

## Servidor com histórico

API REST HTTP que analisa repositórios e persiste os resultados em banco de dados SQLite local.

```bash
npm install
node server.js              # porta 3000 (padrão)
PORT=8080 node server.js    # porta customizada
```

### Endpoints

| Método | Rota | Descrição |
|--------|------|-----------|
| `POST` | `/analyze` | `{ "path": "/caminho/repo" }` — analisa e salva |
| `GET` | `/history` | Lista todas as análises salvas |
| `GET` | `/history/:id` | Análise completa por ID |
| `DELETE` | `/history/:id` | Remove uma análise |

O app HTML pode ser apontado para `GET /history` para exibir o histórico de análises salvas.

O banco de dados fica em `agentlens-history.db` no diretório de trabalho. Cada análise salva a versão do CLI (`cliVersion`) para rastrear compatibilidade entre versões.

---

## Testes

```bash
npm test
```

Roda testes unitários do core e testes de integração da API com `node:test` nativo (Node.js ≥ 18, sem dependências extras).

---

## Config (opcional)

Crie `.agentlens.json` para definir múltiplos repos de uma vez:

```json
{
  "repos": [
    { "path": ".", "name": "meu-repo" },
    { "path": "../outro-repo" }
  ],
  "output": "relatorio.html"
}
```

Veja `.agentlens.example.json` para referência completa.
npm package: @hugoheml/node-steam-openid
Description: A wrapper package around Steam's Authentication API. Supports promises :)
Author: Leevi Halme
Latest version: 2.0.1

# @hugoheml/node-steam-openid

[![npm version](https://badge.fury.io/js/@hugoheml/node-steam-openid.svg)](https://badge.fury.io/js/@hugoheml/node-steam-openid)
![npm ci](https://github.com/hugoheml/node-steam-openid/actions/workflows/npm-publish.yml/badge.svg)

A lightweight wrapper package around Steam's Authentication API, which supports promises :)

## Requirements

- Express @ 4.x

## Usage

Install the package by typing `npm i @hugoheml/node-steam-openid` in your project folder.

### Setup

```javascript
const SteamAuth = require("@hugoheml/node-steam-openid");

const steam = new SteamAuth({
  realm: "http://localhost:5000", // Site name displayed to users on logon
  returnUrl: "http://localhost:5000/auth/steam/authenticate", // Your return route
  apiKey: "XXXXXXXXXXXXXXXXXXXXXXXXXX", // Steam API key
});
```

### Routes

```javascript
app.get("/auth/steam", async (req, res) => {
  const redirectUrl = await steam.getRedirectUrl();
  return res.redirect(redirectUrl);
});

app.get("/auth/steam/authenticate", async (req, res) => {
  try {
    const user = await steam.authenticate(req);

    //...do something with the data
  } catch (error) {
    console.error(error);
  }
});
```

## Methods

### getRedirectUrl

Gets the redirect URL to Steam.

#### Parameters

None

#### Returns

- Promise (String)

#### Example

```javascript
steam.getRedirectUrl().then(url => {
  //...do something with the url
});
```

### authenticate

Authenticates the user with oAuth.

#### Parameters

- request (ExpressJsRequest, Object)

#### Returns

- Promise (UserObject)

#### Example

```javascript
steam.authenticate(req).then(user => {
  //...do something with the user
});
```

## Objects

### UserObject

Object which holds all the authenticated user's data. The key `_json` holds the raw response from Steam API.

#### Example

```javascript
{
  _json: { ... },
  steamid: "12345678912345678",
  username: "Example Username",
  name: "Example Name",
  profile: {
    url: "https://steamcommunity.com/id/Example",
    background: {
      static: "....jpg" | null,
      movie: "....webm" | null,
    },
    background_mini: {
      static: "....jpg" | null,
      movie: "....webm" | null,
    },
  },
  avatar: {
    small: "...",
    medium: "...",
    large: "...",
    animated: {
      static: "....png" | null,
      movie: "....webm" | null,
    },
    frame: {
      static: "....png" | null,
      movie: "....webm" | null,
    },
  }
}
```

## Contributing

See [CONTRIBUTING.md](/.github/CONTRIBUTING.md) for contributing guidelines.

## Security

See [SECURITY.md](/.github/SECURITY.md) for security practices.

## Development Roadmap

- [ ] Add the ability to pass custom variables to Steam (query parameters)
- [ ] Add support for Node.js native HTTP [<http.IncomingMessage>](https://nodejs.org/dist/latest-v14.x/docs/api/http.html#http_class_http_incomingmessage) class.
- [ ] Add unit tests

## License

MIT <3
npm package: @hugojosefson/getsandbox-express
Description: getsandbox-express adapter and cli
Author: xbtsw
Latest version: 1.1.1

# @hugojosefson/getsandbox-express
A getsandbox.com to express adapter

## Usage

### as command-line tool, without installing

```bash
npx @hugojosefson/getsandbox-express <main.js> [<port>]
```

Alternatively, if you want to install it globally:

```bash
npm install -g @hugojosefson/getsandbox-express
sandbox <main.js> [<port>]
```

Default port is `8080`.

### as Node.js module

```js
const sandbox = require('@hugojosefson/getsandbox-express')
const express = require('express')

const app = express()
sandbox.loadSandbox(app, __dirname + '/mysandbox/main.js')

const port = 8080
app.listen(port, () => {
  console.log(`Sandbox listening on port ${port}.`)
})
```