open-index/open-npm huggingface dataset:
npm package: @nillion/create-nillion-app
Description: Quickstart a new Nillion app
Author: nillion
Latest version: 0.3.0-rc.1

# Create Nillion App

A CLI tool to create a new Nillion app with Next.js integration.

## Usage

This will create a new Nillion app in the your desired directory.

`npx @nillion/create-nillion-app`

## What it does

1. Installs `nilup`, the Nillion SDK tool installer and version manager
2. Clones an example Next.js project with App Router Settings
   a. Installs `@nillion/client-react-hooks` \* `@nillion/client-vms` which has all your needs to use Nillion and Nada.
3. Installs an Nada projects with a pyenv
4. Then follow along the QuickStart [guide](https://docs.nillion.com/quickstart-install) to do the following:
   - Create a simple Nada App
   - Connect a Nextjs <> Nada Program

Directory tree should look like:

```
.
├── README.md
├── app
│   ├── components
│   ├── home
│   ├── layout.tsx
│   ├── lib
│   └── page.tsx
├── nada
│   ├── .venv
│   ├── nada-project.toml
│   ├── requirements.txt
│   ├── src
│   └── tests
├── next.config.mjs
├── node_modules
├── package-lock.json
├── package.json
└── tsconfig.json

```

## Requirements

- Node.js 18.0.0 or later
- npm 6.0.0 or later

## License

MIT
npm package: @nillion/nilauth-client
Description: [![CI](https://github.com/NillionNetwork/nilauth-client-ts/actions/workflows/ci.yaml/badge.svg)](https://github.com/NillionNetwork/nilauth-client-ts/actions/workflows/ci.yaml) [![CD](https://github.com/NillionNetwork/nilauth-client-ts/actions/workflows/cd
Latest version: 2.0.0

# @nillion/nilauth-client

[![CI](https://github.com/NillionNetwork/nilauth-client-ts/actions/workflows/ci.yaml/badge.svg)](https://github.com/NillionNetwork/nilauth-client-ts/actions/workflows/ci.yaml)
[![CD](https://github.com/NillionNetwork/nilauth-client-ts/actions/workflows/cd.yaml/badge.svg)](https://github.com/NillionNetwork/nilauth-client-ts/actions/workflows/cd.yaml)
![GitHub package.json version](https://img.shields.io/github/package-json/v/NillionNetwork/nilauth-client-ts)
[![npm](https://img.shields.io/npm/v/@nillion/nilauth-client)](https://www.npmjs.com/package/@nillion/nilauth-client)

A TypeScript client library for interacting with Nillion's authentication service (Nilauth).

## Getting Started

If you're unsure where to start, head over to [docs.nillion.com](https://docs.nillion.com).

- [Usage Guide](./DOCUMENTATION.md)
- [Help build nilauth-client-ts](./CONTRIBUTING.md)

## Getting Help

- [Create an Issue](https://github.com/NillionNetwork/nilauth-client-ts/issues/new/choose)
- [Join our Discord](https://discord.com/invite/nillionnetwork)

## License

This project is licensed under the [MIT License](./LICENSE).
npm package: @nillion/nuc
Description: [![CI](https://github.com/NillionNetwork/nuc-ts/actions/workflows/ci.yaml/badge.svg)](https://github.com/NillionNetwork/nuc-ts/actions/workflows/ci.yaml) [![CD](https://github.com/NillionNetwork/nuc-ts/actions/workflows/cd.yaml/badge.svg)](https://github.
Latest version: 2.0.1

# @nillion/nuc

[![CI](https://github.com/NillionNetwork/nuc-ts/actions/workflows/ci.yaml/badge.svg)](https://github.com/NillionNetwork/nuc-ts/actions/workflows/ci.yaml)
[![CD](https://github.com/NillionNetwork/nuc-ts/actions/workflows/cd.yaml/badge.svg)](https://github.com/NillionNetwork/nuc-ts/actions/workflows/cd.yaml)
![GitHub package.json version](https://img.shields.io/github/package-json/v/NillionNetwork/nuc-ts)
[![npm](https://img.shields.io/npm/v/@nillion/nuc)](https://www.npmjs.com/package/@nillion/nuc)

A TypeScript library for working with Nillion's authentication system.

## Getting Started

If you're unsure where to start, head over to [docs.nillion.com](https://docs.nillion.com).

- [Usage Guide](./DOCUMENTATION.md)
- [Help build nuc-ts](./CONTRIBUTING.md)

## Getting Help

- [Create an Issue](https://github.com/NillionNetwork/nuc-ts/issues/new/choose)
- [Join our Discord](https://discord.com/invite/nillionnetwork)

## License

This project is licensed under the [MIT License](./LICENSE).
npm package: @nillion/secretvaults
Description: A client for interacting with nillion's nildb blind module
Latest version: 3.0.0

# secretvaults-ts

![GitHub Actions Workflow Status](https://img.shields.io/github/actions/workflow/status/NillionNetwork/secretvaults-ts/.github%2Fworkflows%2Fci.yaml)
![GitHub package.json version](https://img.shields.io/github/package-json/v/NillionNetwork/secretvaults-ts)

A TypeScript client for interacting with Nillion's NilDB blind database module.

## Getting Started

If you're new to the library, the best place to start is the **[Usage Guide](./DOCUMENTATION.md)**, which provides a complete guide to client instantiation and advanced usage patterns.

## Getting Help

- [Create an Issue](https://github.com/NillionNetwork/secretvaults-ts/issues/new/choose)
- [Join our Discord](https://discord.com/invite/nillionnetwork)

## Contributing

We welcome contributions to the project! Please see the **[Contributing Guide](./CONTRIBUTING.md)** for details on how to get started.

## License

This project is licensed under the [MIT License](./LICENSE).
npm package: @nilngn/nilcode
Description: NilCode Master Suite - Professional AI CLI
Author: Nivaldo-Nilngn
Latest version: 1.0.5

# 🌌 NilCode Master Suite
> O elo de elite entre você e os melhores modelos de IA do mundo.

**NilCode Engine** é uma CLI profissional de alto desempenho concebida para desenvolvedores que exigem controle total. Ele integra nativamente o motor **Claude Code** com o ecossistema **Antigravity Kit**, permitindo orquestrar squads de agentes em qualquer LLM via **OpenRouter**, **OpenAI** ou **Ollama**.

---

## 💎 Destaques do Sistema
*   **Zero-Config Bundle**: Executável único de alta velocidade em JavaScript.
*   **Injeção de Squads**: Stacks prontos para Web, Mobile, Games e muito mais.
*   **Agentes de Elite**: Acesso direto a 20+ especialistas do Antigravity Kit.
*   **Motor Flexível**: Troque de modelo (Mistral, GPT-4, Llama 3) em segundos sem sair da CLI.

---

## 📥 Instalação Global (Rápida)

Para ter o NilCode disponível em qualquer lugar do seu terminal:

```bash
npm install -g @nilngn/nilcode
```

---

## 🚀 Primeiro Acesso (Guia de Configuração)

O NilCode foi desenhado para ser intuitivo. No primeiro acesso, ele cuidará da configuração para você:

1.  **Comando Mestre:** Digite `nilcode` no terminal.
2.  **Configuração Guiada:** Se você não tiver uma chave API, a própria CLI abrirá uma tela de boas-vindas.
3.  **Chave OpenRouter:** Cole sua chave API obtida em [openrouter.ai/keys](https://openrouter.ai/keys).
4.  **Pronto para Decolar:** O NilCode salvará suas preferências globalmente!

---

## 🧠 Operação: Squads vs. Especialistas

A arquitetura do NilCode é dividida em dois níveis de inteligência:

### 1. 🚀 Squads Pré-Configurados
Equipes prontas para resolver problemas de arquitetura inteira.
*   **Web Fullstack:** Especialistas em RTK, Next.js e Cloud.
*   **Mobile Master:** Prontos para React Native e Flutter.
*   **Game Dev:** Focados em lógica de jogos e shaders.

### 2. 🧠 Biblioteca de Especialistas
Acesso direto aos agentes individuais do **Antigravity Kit**:
*   **Debugger Agent:** Focado em Root Cause Analysis.
*   **UI/UX Pro:** Especialista em interfaces premium e animações.
*   **Security Auditor:** Auditoria de vulnerabilidades e segurança.

---

## ⚡ Variáveis de Ambiente (Opcional)

Para setups automatizados ou uso de modelos locais (Ollama):

| Variável | Descrição | Exemplo |
| :--- | :--- | :--- |
| `OPENROUTER_API_KEY` | Chave Mestra do NilCode | `sk-or-v1-...` |
| `OPENAI_API_KEY` | Chave direta da OpenAI | `sk-proj-...` |
| `OPENAI_MODEL` | Forçar um modelo específico | `gpt-4o` |

---

## 🛠️ Desenvolvimento e Contribuição

Para rodar este projeto a partir do código fonte:

```bash
git clone https://github.com/Nilngn/NilCode.git
cd NilCode
npm install
npm start # Inicia em modo desenvolvimento
```

---

*Oferecido por **NilCode & Antigravity Kit**. 2026.*
[Official NPM Package](https://www.npmjs.com/package/@nilngn/nilcode)
npm package: @niloferr/first-package
Description: Removes all spaces from a string
Latest version: 1.0.16

# first-package

![npm (scoped)](https://img.shields.io/npm/v/@niloferr/first-package)
![npm bundle size (scoped)](https://img.shields.io/bundlephobia/min/@niloferr/first-package?label=minified%20size)

My first package thanks to this [tutorial](freecodecamp.org/news/how-to-make-a-beautiful-tiny-npm-package-and-publish-it-2881d4307f78/)
npm package: @niloofarf/react-slick
Description:  React port of slick carousel
Author: Kiran Abburi
Latest version: 0.27.10

### react-slick

[![Backers on Open Collective](https://opencollective.com/react-slick/backers/badge.svg)](#backers) [![Sponsors on Open Collective](https://opencollective.com/react-slick/sponsors/badge.svg)](#sponsors) [![Join the chat at https://gitter.im/akiran/react-slick](https://badges.gitter.im/Join%20Chat.svg)](https://gitter.im/akiran/react-slick?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge)

##### Carousel component built with React. It is a react port of [slick carousel](http://kenwheeler.github.io/slick/)

## [Documentation](http://react-slick.neostack.com)

### :warning: Alert

:construction: react-slick@0.27.* releases are experimental.  
:white_check_mark: **Use react-slick@0.26 in production** until we make our next stable release (react-slick@0.28)  
:pray: We invite you to test react-slick@0.27.* in dev environment and report any breaking changes.

### Installation

**npm**

```bash
npm install react-slick --save
```

**yarn**

```bash
yarn add react-slick
```

**Also install slick-carousel for css and font**

```bash
npm install slick-carousel

// Import css files
import "slick-carousel/slick/slick.css";
import "slick-carousel/slick/slick-theme.css";
```

or add cdn link in your html

```html
<link
  rel="stylesheet"
  type="text/css"
  charset="UTF-8"
  href="https://cdnjs.cloudflare.com/ajax/libs/slick-carousel/1.6.0/slick.min.css"
/>
<link
  rel="stylesheet"
  type="text/css"
  href="https://cdnjs.cloudflare.com/ajax/libs/slick-carousel/1.6.0/slick-theme.min.css"
/>
```

### [PlayGround](https://codesandbox.io/s/ppwkk5l6xx)

### Example

```js
import React from "react";
import Slider from "react-slick";

class SimpleSlider extends React.Component {
  render() {
    var settings = {
      dots: true,
      infinite: true,
      speed: 500,
      slidesToShow: 1,
      slidesToScroll: 1
    };
    return (
      <Slider {...settings}>
        <div>
          <h3>1</h3>
        </div>
        <div>
          <h3>2</h3>
        </div>
        <div>
          <h3>3</h3>
        </div>
        <div>
          <h3>4</h3>
        </div>
        <div>
          <h3>5</h3>
        </div>
        <div>
          <h3>6</h3>
        </div>
      </Slider>
    );
  }
}
```

### Props

For all available props, go [here](https://react-slick.neostack.com/docs/api/).

### Methods

For all available methods, go [here](https://react-slick.neostack.com/docs/api#methods)

### Development

Want to run demos locally

```bash
git clone https://github.com/akiran/react-slick
cd react-slick
npm install
npm start
open http://localhost:8080
```

## Contributing

Please see the [contributing guidelines](./CONTRIBUTING.md)
npm package: @nilotaviano/pangolindex-sdk
Description: 🛠 An SDK for building applications on top of Pangolin.
Latest version: 1.1.0

# Pangolin SDK
This repo contains tools for developing with [Pangolin](pangolin.exchange).

## Running
This project uses standard npm and yarn workflows.

Install dependencies

```sh
yarn
```

Compile
```sh
yarn build
```

Yarn is available to install [here](https://classic.yarnpkg.com/en/docs/install/#debian-stable) if you need it.

## Installation
This project is available as an npm package. Add to your project with `npm install @pangolindex/sdk`

## Attribution
This code was adapted from this Uniswap repo: [uniswap-sdk](https://github.com/Uniswap/sdk).
npm package: @nilotaviano/uniswap-v2-clones-sdk
Description: 🛠 An SDK for building applications on top of any Uniswap-V2 clone.
Latest version: 1.0.7

# Uniswap SDK

[![code style: prettier](https://img.shields.io/badge/code_style-prettier-ff69b4.svg?style=flat-square)](https://github.com/prettier/prettier)
[![Actions Status](https://github.com/Uniswap/uniswap-sdk/workflows/CI/badge.svg)](https://github.com/Uniswap/uniswap-sdk)
[![npm version](https://img.shields.io/npm/v/@uniswap/sdk/latest.svg)](https://www.npmjs.com/package/@uniswap/sdk/v/latest)
[![npm bundle size (scoped version)](https://img.shields.io/bundlephobia/minzip/@uniswap/sdk/latest.svg)](https://bundlephobia.com/result?p=@uniswap/sdk@latest)

In-depth documentation on this SDK is available at [uniswap.org](https://uniswap.org/docs/v2/SDK/getting-started/).

## Running tests

To run the tests, follow these steps. You must have at least node v10 and [yarn](https://yarnpkg.com/) installed.

First clone the repository:

```sh
git clone https://github.com/Uniswap/uniswap-sdk.git
```

Move into the uniswap-sdk working directory

```sh
cd uniswap-sdk/
```

Install dependencies

```sh
yarn install
```

Run tests

```sh
yarn test
```

You should see output like the following:

```sh
yarn run v1.22.4
$ tsdx test
 PASS  test/constants.test.ts
 PASS  test/pair.test.ts
 PASS  test/fraction.test.ts
 PASS  test/miscellaneous.test.ts
 PASS  test/entities.test.ts
 PASS  test/trade.test.ts

Test Suites: 1 skipped, 6 passed, 6 of 7 total
Tests:       3 skipped, 82 passed, 85 total
Snapshots:   0 total
Time:        5.091s
Ran all test suites.
✨  Done in 6.61s.
```
npm package: @nilsabdi/r-aws-temp
Description: AWS adapter for Remix
Latest version: 0.1.0

<div align="center">
  <h1>Remix AWS</h1>
  <p align="left">
    <a href="https://www.npmjs.com/package/remix-aws?activeTab=versions">
      <img src="https://badge.fury.io/js/remix-aws.svg" alt="npm version" style="max-width:100%;">
    </a>
    <a href="https://packagephobia.com/result?p=remix-aws">
      <img src="https://packagephobia.com/badge?p=remix-aws" alt="npm install size" style="max-width:100%;">
    </a>
    <a href="https://snyk.io/test/github/wingleung/remix-aws">
      <img src="https://snyk.io/test/github/wingleung/remix-aws/badge.svg" alt="Known Vulnerabilities" data-canonical-src="https://snyk.io/test/github/wingleung/remix-aws" style="max-width:100%;">
    </a>
  </p>
  <img alt="Remix logo" src="https://raw.githubusercontent.com/wingleung/remix-aws/main/docs/img/remix-logo.png"/>
  <p><strong>AWS adapters for Remix</strong></p>
</div>

## 🚀 support

- API gateway v1
- API gateway v2
- Application load balancer

## Getting started

```shell
npm install --save remix-aws
```

```javascript
// server.js
import * as build from '@remix-run/dev/server-build'
import {AWSProxy, createRequestHandler} from 'remix-aws'

// Required in Remix v2
import { installGlobals } from '@remix-run/node'
installGlobals()

export const handler = createRequestHandler({
    build,
    mode: process.env.NODE_ENV,
    awsProxy: AWSProxy.APIGatewayV1
})
```

### `awsProxy`

By default the `awsProxy` is set to `AWSProxy.APIGatewayV2`.

#### Options

- `AWSProxy.APIGatewayV1`
- `AWSProxy.APIGatewayV2`
- `AWSProxy.ALB`
- `AWSProxy.FunctionURL`

## Notes

### split from @remix/architect

As mentioned in [#3173](https://github.com/remix-run/remix/pull/3173) the goal would be to provide an AWS adapter for
the community by the community.
In doing so the focus will be on AWS integrations and less on Architect. I do think it's added value to provide examples
for Architect, AWS SAM, AWS CDK, Serverless,...

**info:** [ALB types](https://github.com/DefinitelyTyped/DefinitelyTyped/blob/master/types/aws-lambda/trigger/alb.d.ts#L29-L48)
vs [API gateway v1 types](https://github.com/DefinitelyTyped/DefinitelyTyped/blob/master/types/aws-lambda/trigger/api-gateway-proxy.d.ts#L116-L145)

### To do

- add tests
- add examples
- add more documentation
npm package: @nilsboy/bookshelf-manager
Description: Easily wire up models to APIs with supported for complex, nested saving.
Author: Eric Clemmons
Latest version: 0.3.1

# [Bookshelf Manager][0]

[![Build Status](https://travis-ci.org/ericclemmons/bookshelf-manager.png)](https://travis-ci.org/ericclemmons/bookshelf-manager)
[![Dependencies](https://david-dm.org/ericclemmons/bookshelf-manager.png)](https://david-dm.org/ericclemmons/bookshelf-manager)
[![devDependencies](https://david-dm.org/ericclemmons/bookshelf-manager/dev-status.png)](https://david-dm.org/ericclemmons/bookshelf-manager#info=devDependencies&view=table)

> Model & Collection manager for [Bookshelf.js][1] to make it easy to create &
> save deep, nested JSON structures from API requests.

## Installation

    npm install bookshelf-manager --save

## Usage

  1. Register as a plugin in Bookshelf:

     ```javascript
     bookshelf.plugin('bookshelf-manager');
     ```

      - Optionally, you can pass in an object with a `root` property to read models from a specified directory:

         ```javascript
         bookshelf.plugin('bookshelf-manager', { root: 'path/to/models' });
         ```

  2. Register individual models (not required if you passed in a `root` model directory as above):

     ```javascript
     bookshelf.manager.register(model, modelName);
     ```

     - Note: Also compatible with models registered with the [Bookshelf Registry](https://github.com/tgriesser/bookshelf/wiki/Plugin:-Model-Registry) plugin.

  3. Use the methods on `bookshelf.manager` to create, fetch, and save models or collections with support for deeply-nested attributes. E.g.:

     ```javascript
     return bookshelf.manager.create('car', {
       features: [
         { name: 'ABS', cost: '1250' },
         { name: 'GPS', cost: '500' }
       ],
       quantity: 1
     }).then(function(car) {
       // created car should now have the associated features
     });
     ```


## API

*In progress...*


## Changelog

- v0.3.0 - Add `setHasOne` functionality (#12)
- v0.2.1 - Several breaking changes occurred with this version due to updating `devDependencies` and `peerDependencies`:
  - Knex and Bookshelf updated their `bluebird` and `lodash` dependencies
  - Knex changed how undefined values are inserted
- v0.1.0 - Reimplement as a plugin for Bookshelf/Knex 0.8.x
- v0.0.10 - Enforce `belongsToMany` IDs
- v0.0.9 - Destroy removed `hasMany` models
- v0.0.8 - Fetch empty collections
- v0.0.7 - Attempt to use existing, eager-loaded models rather than re-fetch
- v0.0.6 - Ignore `_pivot_` keys
- v0.0.5 - Improve error handling for unintialized instances & missing files
- v0.0.4 - Improve `.attach` and `.detach`
- v0.0.3 - Add support for lazy-managed models.
- v0.0.2 - If instanceof Bookshelf is not provided, instance from `Bookshelf.initialize` is used.
- v0.0.1 - Initial Release.


## [License][2]

Copyright (c) 2013 Eric Clemmons
Licensed under the MIT license.

[0]: https://github.com/ericclemmons/bookshelf-manager
[1]: http://bookshelfjs.org/
[2]: https://raw.github.com/ericclemmons/bookshelf-manager/master/LICENSE
npm package: @nilsboy/errorformatregex
Description: Find error locations in text and prefix them for use with vim's quickfix.
Author: Nils Boysen
Latest version: 3.0.0

Add vim's errorformat as prefix to lines matching a regex.

See `errorformatregex --help` for details.

# Todo

Allow a comment to remove found errors from the error list - i.e.:
```text
# errorformatregex ignore next 6 lines
```
npm package: @nilscox/felte-validator-zod
Description: A package to use Zod validation with Felte
Author: Pablo Berganza
Latest version: 1.0.17

# @felte/validator-zod

[![Tests](https://github.com/pablo-abc/felte/workflows/Tests/badge.svg)](https://github.com/pablo-abc/felte/actions/workflows/test.yml)
[![Bundle size](https://img.shields.io/bundlephobia/min/@felte/validator-zod)](https://bundlephobia.com/result?p=@felte/validator-zod)
[![NPM Version](https://img.shields.io/npm/v/@felte/validator-zod)](https://www.npmjs.com/package/@felte/validator-zod)
[![codecov](https://codecov.io/gh/pablo-abc/felte/branch/main/graph/badge.svg?token=T73OJZ50LC)](https://codecov.io/gh/pablo-abc/felte)

A package to help you handle validation with Zod in Felte.

## Installation

```sh
npm install --save @felte/validator-zod zod

# Or, if you use yarn

yarn add @felte/validator-zod zod
```

## Usage

Call `validator` with an object containing your Zod schema in the `schema` property. The result of the call can be passed as an extender to Felte:

```javascript
import { validator } from '@felte/validator-zod';
import { z } from 'zod';

const schema = z.object({
  email: z.string().email().nonempty(),
  password: z.string().nonempty(),
});

const { form } = createForm({
  // ...
  extend: validator({ schema }), // or `extend: [validator({ schema })],`
  // ...
});
```

OR use the `validateSchema` function directly in the `validate` option of `createForm`. (No need to extend Felte).

```javascript
import { validateSchema } from '@felte/validator-zod';
import { z } from 'zod';

const schema = z.object({
  email: z.string().email().nonempty(),
  password: z.string().nonempty(),
});

const { form } = createForm({
  // ...
  validate: validateSchema(schema),
  // ...
});
```

## Warnings

Optionally, you can tell this package to assign the results of your validations to your `warnings` store by setting the `level` property of the validator function to `warning`. It's `error` by default:

```javascript
import { validator } from '@felte/validator-zod';
import { z } from 'zod';

const schema = z.object({
  email: z.string().email().nonempty(),
  password: z.string().nonempty(),
});

// We only warn if the user has started typing a value
const warnSchema = zod.object({
  password: zod
    .string()
    .refine((value) => (value ? value.length > 8 : true), {
      message: 'Password is not secure',
    }),
});

const { form } = createForm({
  // ...
  extend: [
    validator({ schema }),
    validator({ schema: warnSchema, level: 'warning' }),
  ],
  // ...
});
```

## Typescript

Zod allows you to infer the type of your schema using `z.infer`. This can be used so you don't need to create a type for your form's data:

```typescript
import { z } from 'zod';

const schema = z.object({
  email: z.string().email().nonempty(),
  password: z.string().nonempty(),
});

const { form } = createForm<z.infer<typeof schema>>(/* ... */);
```
npm package: @nilsfischer/pdf2text
Description: Extract text and diagrams from PDFs and images using Gemini AI
Latest version: 1.0.0

# pdf2text

Extract text and diagrams from PDFs and images using Gemini AI.

## Install

Executable (global):

```bash
npm install -g @nilsfischer/pdf2text
```

Library (project dependency):

```bash
npm install @nilsfischer/pdf2text
```

## CLI Usage

Authenticate once (stores key encrypted in system keychain):

```bash
pdf2text auth set --api-key YOUR_GEMINI_API_KEY
```

Run extraction:

```bash
pdf2text input.pdf
pdf2text input.pdf --format latex --output ./results --split
```

Runtime key resolution order:

1. `--api-key`
2. `GEMINI_API_KEY`
3. Stored keychain key (`pdf2text auth set`)

If keychain support is unavailable, use `GEMINI_API_KEY` or `--api-key`.

## Node Library API

Use full pipeline and filesystem APIs from the Node subpath:

```ts
import { runPipeline, parsePageRanges } from "@nilsfischer/pdf2text/node";

await runPipeline({
  input: "./slides.pdf",
  apiKey: process.env.GEMINI_API_KEY!,
  format: "markdown",
  outputDir: "./output",
  split: false,
  noDiagrams: false,
  pages: parsePageRanges("1-3"),
  scale: 2,
  concurrency: 5,
  verbose: false,
});
```

## Web Library API

Use browser-safe extraction APIs from the web subpath:

```ts
import { extractFromImageBytes } from "@nilsfischer/pdf2text/web";

const imageBytes = new Uint8Array(await file.arrayBuffer());
const result = await extractFromImageBytes(imageBytes, {
  apiKey: "YOUR_GEMINI_API_KEY",
  format: "markdown",
  noDiagrams: false,
});

console.log(result.text);
console.log(result.diagrams);
```

## Shared API

Shared helpers available from `@nilsfischer/pdf2text`:

- `parsePageRanges`
- `getFormatInstructions`
- `getFormatExample`
- `replacePlaceholders`
- `buildGeminiPrompt`

## Options

| Flag | Alias | Default | Description |
|------|-------|---------|-------------|
| `-f, --format` | | `markdown` | Output format: `markdown`, `latex`, or `text` |
| `-o, --output` | | `./output` | Output directory |
| `-s, --split` | | `false` | Split output into per-page files |
| `--diagrams` | | `true` | Enable diagram detection (use `--no-diagrams` to disable) |
| `-p, --pages` | | all | Pages to process, e.g. `1-5,8,12-14` |
| `--scale` | | `2` | PDF render scale factor (2 ≈ 144 DPI) |
| `-c, --concurrency` | | `5` | Max parallel Gemini API calls |
| `--api-key` | | keychain/env | Gemini API key (flag overrides keychain/env) |
| `-v, --verbose` | | `false` | Verbose logging output |

## Local Development

```bash
bun install
npm run build
node dist/cli.js --help
```

## Publish

```bash
npm publish
```