open-index/open-npm huggingface dataset:
npm package: @nasmcps/bark-mcp
Description: MCP Server for Bark push notifications
Latest version: 1.0.1

# @nasmcps/bark-mcp

MCP Server for sending push notifications to iOS devices via [Bark](https://github.com/Finb/Bark).

## Installation

```bash
npm install -g @nasmcps/bark-mcp
```

Or use directly with npx:

```bash
npx @nasmcps/bark-mcp
```

## Configuration

Before using this MCP server, you need to:

1. Install the [Bark app](https://apps.apple.com/app/bark-customed-notifications/id1403753865) on your iOS device
2. Get your device key from the app
3. Optionally, set environment variables:

```bash
# Set default device key (recommended, so you don't need to provide it every time)
export BARK_DEVICE_KEY="your_device_key_here"

# Optional: set a custom Bark server URL
export BARK_BASE_URL="https://api.day.app"  # Default
# Or your self-hosted server
export BARK_BASE_URL="https://your-bark-server.com"
```

## MCP Server Configuration

Add to your MCP client configuration (usually in `~/.config/claude/claude_desktop_config.json`):

```json
{
  "mcpServers": {
    "bark": {
      "command": "npx",
      "args": ["@nasmcps/bark-mcp"],
      "env": {
        "BARK_DEVICE_KEY": "your_device_key_here",
        "BARK_BASE_URL": "https://api.day.app"
      }
    }
  }
}
```

## Available Tools

### push

Send a push notification to your iOS device.

**Required parameters:**
- `title` - Notification title
- `body` - Notification message

**Optional parameters:**
- `deviceKey` - Your Bark device key (can be omitted if `BARK_DEVICE_KEY` env var is set)

**Optional parameters:**
- `sound` - Notification sound (see `list_sounds` for available options)
- `badge` - Badge number to display on app icon
- `icon` - URL of icon image for the notification
- `group` - Notification group name
- `group` - Notification group name
- `url` - URL to open when notification is tapped
- `copy` - Content to copy when notification is tapped
- `level` - Notification interruption level: "passive", "active", or "timeSensitive"

### list_sounds

List all available Bark notification sounds.

## Usage Example

Once configured, you can use the tools through Claude:

> "Send me a push notification with title 'Hello' and body 'This is a test'"

> "Show me all available notification sounds"

> "Send a push with title 'Alert' and body 'Important message', use the 'bell' sound and set the URL to https://example.com"

If you haven't set `BARK_DEVICE_KEY` environment variable, you'll need to provide the device key:

> "Send a push notification with title 'Hello', body 'This is a test', and device key 'your_key_here'"

## License

MIT
npm package: @nasmcps/qbit-mcp
Description: qBittorrent MCP Server - Model Context Protocol server for qBittorrent
Author: nasmcps
Latest version: 1.0.0

# @nasmcps/qbit-mcp

qBittorrent MCP Server - Model Context Protocol server for qBittorrent.

## Features

- Add torrents (magnet links, torrent files, URLs)
- List and filter torrents
- Get detailed torrent information
- Pause/Resume torrents
- Delete torrents (with optional file deletion)
- Get global transfer information

## Prerequisites

- Node.js 18 or higher
- qBittorrent with Web UI enabled

## Quick Start (npx)

No installation required! Use npx to run directly:

```bash
npx @nasmcps/qbit-mcp
```

## Installation (optional)

If you prefer to install globally:

```bash
npm install -g @nasmcps/qbit-mcp
```

Then run with:

```bash
qbit-mcp
```

## Configuration

Set the following environment variables:

```bash
export QBT_URL=http://localhost:8080
export QBT_USERNAME=admin
export QBT_PASSWORD=your_password
```

## Usage

### Claude Desktop Configuration (npx)

Add to your Claude Desktop MCP configuration (`claude_desktop_config.json`):

**macOS / Linux:**
```json
{
  "mcpServers": {
    "qbit": {
      "command": "npx",
      "args": ["@nasmcps/qbit-mcp"],
      "env": {
        "QBT_URL": "http://localhost:8080",
        "QBT_USERNAME": "admin",
        "QBT_PASSWORD": "your_password"
      }
    }
  }
}
```

**Windows:**
```json
{
  "mcpServers": {
    "qbit": {
      "command": "npx",
      "args": ["@nasmcps/qbit-mcp"],
      "env": {
        "QBT_URL": "http://localhost:8080",
        "QBT_USERNAME": "admin",
        "QBT_PASSWORD": "your_password"
      }
    }
  }
}
```

### Alternative: Using global install

If you installed globally:

```json
{
  "mcpServers": {
    "qbit": {
      "command": "qbit-mcp",
      "env": {
        "QBT_URL": "http://localhost:8080",
        "QBT_USERNAME": "admin",
        "QBT_PASSWORD": "your_password"
      }
    }
  }
}
```

### Available Tools

- `qbit_add_torrent` - Add a torrent to qBittorrent
- `qbit_get_torrents` - Get list of torrents
- `qbit_get_torrent_info` - Get detailed torrent information
- `qbit_pause_torrent` - Pause torrents
- `qbit_resume_torrent` - Resume torrents
- `qbit_delete_torrent` - Delete torrents
- `qbit_get_global_transfer_info` - Get global transfer info

## Development

```bash
# Clone repository
git clone https://github.com/nasmcps/qbit-mcp.git
cd qbit-mcp

# Install dependencies
npm install

# Build
npm run build

# Development mode
npm run dev

# Test locally
npm start
```

## License

MIT
npm package: @nasontech/nuxt-app-version
Description: Get your app version
Latest version: 0.0.1

# Update Available

[![npm version][npm-version-src]][npm-version-href]
[![npm downloads][npm-downloads-src]][npm-downloads-href]
[![License][license-src]][license-href]
[![Nuxt][nuxt-src]][nuxt-href]

Get app version.

- [✨ &nbsp;Release Notes](/CHANGELOG.md)
- [🏀 Online playground](https://stackblitz.com/github/@nasontech/nuxt-app-version?file=playground%2Fapp.vue)

## Features

Get your Nuxt app version.

## Quick Setup

Install the module to your Nuxt application with one command:

```bash
npx nuxi module add @nasontech/nuxt-app-version
```

That's it! You can now use `useAppVersion()` in your Nitro server app ✨

Create an api route to return the app version.

```typescript
export default defineEventHandler(() => {
    return useAppVersion()
})
```

Get the app version in your frontend.

```vue
<script setup lang="ts">
const { data: version } = await useFetch('/api/version')
</script>

<template>
    <div>
        <pre>Version: {{ version }}</pre>
    </div>
</template>
```

## Contribution

<details>
  <summary>Local development</summary>
  
  ```bash
  # Install dependencies
  npm install
  
  # Generate type stubs
  npm run dev:prepare
  
  # Develop with the playground
  npm run dev
  
  # Build the playground
  npm run dev:build
  
  # Run ESLint
  npm run lint
  
  # Run Vitest
  npm run test
  npm run test:watch
  
  # Release new version
  npm run release
  ```

</details>

<!-- Badges -->

[npm-version-src]: https://img.shields.io/npm/v/@nasontech/nuxt-app-version/latest.svg?style=flat&colorA=020420&colorB=00DC82
[npm-version-href]: https://npmjs.com/package/@nasontech/nuxt-app-version
[npm-downloads-src]: https://img.shields.io/npm/dm/@nasontech/nuxt-app-version.svg?style=flat&colorA=020420&colorB=00DC82
[npm-downloads-href]: https://npm.chart.dev/@nasontech/nuxt-app-version
[license-src]: https://img.shields.io/npm/l/@nasontech/nuxt-app-version.svg?style=flat&colorA=020420&colorB=00DC82
[license-href]: https://npmjs.com/package/@nasontech/nuxt-app-version
[nuxt-src]: https://img.shields.io/badge/Nuxt-020420?logo=nuxt.js
[nuxt-href]: https://nuxt.com
npm package: @nasontech/nuxt-cors
Description: Rule based CORS configuration
Latest version: 0.0.1

# Nuxt CORS

[![npm version][npm-version-src]][npm-version-href]
[![npm downloads][npm-downloads-src]][npm-downloads-href]
[![License][license-src]][license-href]
[![Nuxt][nuxt-src]][nuxt-href]

React to app updates.

-   [✨ &nbsp;Release Notes](/CHANGELOG.md)
<!-- - [🏀 Online playground](https://stackblitz.com/github/@nasontech/nuxt-cors?file=playground%2Fapp.vue) -->

## Features

Respond to new versions of your application.

## Quick Setup

Install the module to your Nuxt application with one command:

```bash
npx nuxi module add @nasontech/nuxt-cors
```

That's it! You can now configure CORS rules in your Nuxt app ✨

```typescript
type CORSModuleOptions = {
	rules?: CORSRouteRule[]
	options?: H3CorsOptions
}

type CORSRouteRule = {
	path: string | RegExp | RegExp[]
	options: H3CorsOptions
}
```

Example:

```typescript
    cors: [
        {
            path: /^\/api/,
            options: {
                origin: ['https://example.com', 'https://corp.org']
            }
        }
    ]
```

## Contribution

<details>
  <summary>Local development</summary>
  
  ```bash
  # Install dependencies
  npm install
  
  # Generate type stubs
  npm run dev:prepare
  
  # Develop with the playground
  npm run dev
  
  # Build the playground
  npm run dev:build
  
  # Run ESLint
  npm run lint
  
  # Run Vitest
  npm run test
  npm run test:watch
  
  # Release new version
  npm run release
  ```

</details>

<!-- Badges -->

[npm-version-src]: https://img.shields.io/npm/v/@nasontech/nuxt-cors/latest.svg?style=flat&colorA=020420&colorB=00DC82
[npm-version-href]: https://npmjs.com/package/@nasontech/nuxt-cors
[npm-downloads-src]: https://img.shields.io/npm/dm/@nasontech/nuxt-cors.svg?style=flat&colorA=020420&colorB=00DC82
[npm-downloads-href]: https://npm.chart.dev/@nasontech/nuxt-cors
[license-src]: https://img.shields.io/npm/l/@nasontech/nuxt-cors.svg?style=flat&colorA=020420&colorB=00DC82
[license-href]: https://npmjs.com/package/@nasontech/nuxt-cors
[nuxt-src]: https://img.shields.io/badge/Nuxt-020420?logo=nuxt.js
[nuxt-href]: https://nuxt.com
npm package: @nasontech/nuxt-fetch-transforms
Description: Generate fetch transforms for Nuxt
Latest version: 0.0.2

# Nuxt Fetch Transforms

[![npm version][npm-version-src]][npm-version-href]
[![npm downloads][npm-downloads-src]][npm-downloads-href]
[![License][license-src]][license-href]
[![Nuxt][nuxt-src]][nuxt-href]

Automatically generate fetch transforms for your Nuxt application.

- [✨ &nbsp;Release Notes](/CHANGELOG.md)
- [🏀 Online playground](https://stackblitz.com/github/@nasontech/nuxt-fetch-transforms?file=playground%2Fapp.vue)

## Features

Automatically generate fetch transforms for your Nuxt application.

## Quick Setup

Install the module to your Nuxt application with one command:

```bash
npx nuxi module add @nasontech/nuxt-fetch-transforms
```

That's it! You can now use `useFetchTransform` in your Nuxt app ✨

```vue
<script setup>
const { data: user, refresh } = await useFetch('/api/user', { transform: useFetchTransform('/api/user', 'get') })
</script>

<template>
  <div>
    <pre>{{ user }}</pre>
    <div>Typeof user.createdAt: {{ typeof user.createdAt }} {{ user.createdAt.constructor.name }}</div>
    <div>Typeof user.updatedAt: {{ typeof user.updatedAt }} {{ user.updatedAt.constructor.name }}</div>
    <div>
      <button @click="refresh">Refresh</button>
    </div>
  </div>
</template>
```

```typescript
export default defineEventHandler(async (event) => {
  const user = {
    id: '1',
    name: 'John Doe',
    email: 'john.doe@example.com',
    createdAt: new Date(),
    updatedAt: new Date(),
  }

  return user
})
```

## Contribution

<details>
  <summary>Local development</summary>
  
  ```bash
  # Install dependencies
  npm install
  
  # Generate type stubs
  npm run dev:prepare
  
  # Develop with the playground
  npm run dev
  
  # Build the playground
  npm run dev:build
  
  # Run ESLint
  npm run lint
  
  # Run Vitest
  npm run test
  npm run test:watch
  
  # Release new version
  npm run release
  ```

</details>

<!-- Badges -->

[npm-version-src]: https://img.shields.io/npm/v/@nasontech/nuxt-fetch-transforms/latest.svg?style=flat&colorA=020420&colorB=00DC82
[npm-version-href]: https://npmjs.com/package/@nasontech/nuxt-fetch-transforms
[npm-downloads-src]: https://img.shields.io/npm/dm/@nasontech/nuxt-fetch-transforms.svg?style=flat&colorA=020420&colorB=00DC82
[npm-downloads-href]: https://npm.chart.dev/@nasontech/nuxt-fetch-transforms
[license-src]: https://img.shields.io/npm/l/@nasontech/nuxt-fetch-transforms.svg?style=flat&colorA=020420&colorB=00DC82
[license-href]: https://npmjs.com/package/@nasontech/nuxt-fetch-transforms
[nuxt-src]: https://img.shields.io/badge/Nuxt-020420?logo=nuxt.js
[nuxt-href]: https://nuxt.com
npm package: @nasontech/nuxt-healthcheck
Description: Nuxt healthcheck module
Latest version: 0.0.2

# Nuxt Healthcheck

[![npm version][npm-version-src]][npm-version-href]
[![npm downloads][npm-downloads-src]][npm-downloads-href]
[![License][license-src]][license-href]
[![Nuxt][nuxt-src]][nuxt-href]
Healthcheck
Nuxt logger for doing amazing things.

-   [✨ &nbsp;Release Notes](/CHANGELOG.md)
-   [🏀 Online playground](https://stackblitz.com/github/nasontech/nuxt-healthcheck?file=playground%2Fapp.vue)

## Features

Simply application healthcheck endpoints.

## Quick Setup

Install the module to your Nuxt application with one command:

```bash
npx nuxi module add @nasontech/nuxt-healthcheck
```

That's it! You can now use `defineHealthcheck` in your Nuxt app ✨

Files placed in `server/healthchecks` will be registered automatically using the filename as the healthcheck name.

Example `server/healthchecks/database.ts`

```typescript
export default defineHealthcheck((_event) => {
	const data = {
		usedConnections: 0,
		maxConnections: 10,
		unusedConnections: 5,
	}

	const isHealthy = data.usedConnections < data.maxConnections

	return {
		data,
		isHealthy,
	}
})
```

Querying `/readyz?verbose` will return

```json
{
	"database": {
		"isHealthy": true,
		"data": {
			"usedConnections": 0,
			"maxConnections": 10,
			"unusedConnections": 5
		}
	}
}
```

## Contribution

<details>
  <summary>Local development</summary>
  
  ```bash
  # Install dependencies
  npm install
  
  # Generate type stubs
  npm run dev:prepare
  
  # Develop with the playground
  npm run dev
  
  # Build the playground
  npm run dev:build
  
  # Run ESLint
  npm run lint
  
  # Run Vitest
  npm run test
  npm run test:watch
  
  # Release new version
  npm run release
  ```

</details>

<!-- Badges -->

[npm-version-src]: https://img.shields.io/npm/v/@nasontech/nuxt-healthcheck/latest.svg?style=flat&colorA=020420&colorB=00DC82
[npm-version-href]: https://npmjs.com/package/@nasontech/nuxt-healthcheck
[npm-downloads-src]: https://img.shields.io/npm/dm/@nasontech/nuxt-healthcheck.svg?style=flat&colorA=020420&colorB=00DC82
[npm-downloads-href]: https://npm.chart.dev/@nasontech/nuxt-healthcheck
[license-src]: https://img.shields.io/npm/l/@nasontech/nuxt-healthcheck.svg?style=flat&colorA=020420&colorB=00DC82
[license-href]: https://npmjs.com/package/@nasontech/nuxt-healthcheck
[nuxt-src]: https://img.shields.io/badge/Nuxt-020420?logo=nuxt.js
[nuxt-href]: https://nuxt.com
npm package: @nasontech/nuxt-logger
Description: Nuxt logger
Latest version: 0.0.2

# Nuxt Logger

[![npm version][npm-version-src]][npm-version-href]
[![npm downloads][npm-downloads-src]][npm-downloads-href]
[![License][license-src]][license-href]
[![Nuxt][nuxt-src]][nuxt-href]

Nuxt logger for doing amazing things.

- [✨ &nbsp;Release Notes](/CHANGELOG.md)
- [🏀 Online playground](https://stackblitz.com/github/nasontech/nuxt-logger?file=playground%2Fapp.vue)

## Features

Pretty logging.

## Quick Setup

Install the module to your Nuxt application with one command:

```bash
npx nuxi module add @nasontech/nuxt-logger
```

That's it! You can now use `useLogger` in your Nuxt app in both client and server ✨

```typescript
const logger = useLogger()
logger.info('Hello world!')
```

## Contribution

<details>
  <summary>Local development</summary>
  
  ```bash
  # Install dependencies
  npm install
  
  # Generate type stubs
  npm run dev:prepare
  
  # Develop with the playground
  npm run dev
  
  # Build the playground
  npm run dev:build
  
  # Run ESLint
  npm run lint
  
  # Run Vitest
  npm run test
  npm run test:watch
  
  # Release new version
  npm run release
  ```

</details>

<!-- Badges -->

[npm-version-src]: https://img.shields.io/npm/v/@nasontech/nuxt-logger/latest.svg?style=flat&colorA=020420&colorB=00DC82
[npm-version-href]: https://npmjs.com/package/@nasontech/nuxt-logger
[npm-downloads-src]: https://img.shields.io/npm/dm/@nasontech/nuxt-logger.svg?style=flat&colorA=020420&colorB=00DC82
[npm-downloads-href]: https://npm.chart.dev/@nasontech/nuxt-logger
[license-src]: https://img.shields.io/npm/l/@nasontech/nuxt-logger.svg?style=flat&colorA=020420&colorB=00DC82
[license-href]: https://npmjs.com/package/@nasontech/nuxt-logger
[nuxt-src]: https://img.shields.io/badge/Nuxt-020420?logo=nuxt.js
[nuxt-href]: https://nuxt.com
npm package: @nasontech/nuxt-update-available
Description: React to app updates
Latest version: 0.0.2

# Update Available

[![npm version][npm-version-src]][npm-version-href]
[![npm downloads][npm-downloads-src]][npm-downloads-href]
[![License][license-src]][license-href]
[![Nuxt][nuxt-src]][nuxt-href]

React to app updates.

- [✨ &nbsp;Release Notes](/CHANGELOG.md)
- [🏀 Online playground](https://stackblitz.com/github/@nasontech/nuxt-update-available?file=playground%2Fapp.vue)

## Features

Respond to new versions of your application.

## Quick Setup

Install the module to your Nuxt application with one command:

```bash
npx nuxi module add @nasontech/nuxt-update-available
```

That's it! You can now use `useUpdateAvailable()` in your Nuxt app ✨

```vue
<script setup lang="ts">
const { updateAvailable } = useUpdateAvailable()
</script>

<template>
	<div>
		<NuxtRouteAnnouncer />

		<NuxtLayout>
			<NuxtPage />
		</NuxtLayout>

		<ClientOnly>
			<UpdateDialog :open="updateAvailable" />
		</ClientOnly>
	</div>
</template>
```

## Contribution

<details>
  <summary>Local development</summary>
  
  ```bash
  # Install dependencies
  npm install
  
  # Generate type stubs
  npm run dev:prepare
  
  # Develop with the playground
  npm run dev
  
  # Build the playground
  npm run dev:build
  
  # Run ESLint
  npm run lint
  
  # Run Vitest
  npm run test
  npm run test:watch
  
  # Release new version
  npm run release
  ```

</details>

<!-- Badges -->

[npm-version-src]: https://img.shields.io/npm/v/@nasontech/nuxt-update-available/latest.svg?style=flat&colorA=020420&colorB=00DC82
[npm-version-href]: https://npmjs.com/package/@nasontech/nuxt-update-available
[npm-downloads-src]: https://img.shields.io/npm/dm/@nasontech/nuxt-update-available.svg?style=flat&colorA=020420&colorB=00DC82
[npm-downloads-href]: https://npm.chart.dev/@nasontech/nuxt-update-available
[license-src]: https://img.shields.io/npm/l/@nasontech/nuxt-update-available.svg?style=flat&colorA=020420&colorB=00DC82
[license-href]: https://npmjs.com/package/@nasontech/nuxt-update-available
[nuxt-src]: https://img.shields.io/badge/Nuxt-020420?logo=nuxt.js
[nuxt-href]: https://nuxt.com
npm package: @nassir_gouomba/seqpulse
Description: SeqPulse SDK for metrics endpoint instrumentation and HMAC validation
Author: Nassir
Latest version: 0.5.0
Deprecated: Published by mistake. Use
  seqpulse instead.

# seqpulse (Node.js SDK)

SeqPulse Node SDK couvre deux usages:

- Runtime application: instrumentation HTTP + endpoint metrics + validation HMAC v2
- CI/CD integration: client `trigger/finish` + CLI `seqpulse ci ...`

## Install

```bash
npm install seqpulse
# or
pnpm add seqpulse
```

## Runtime (Express)

```js
const express = require("express");
const seqpulse = require("seqpulse");

const app = express();

seqpulse.init({
  endpoint: "/seqpulse-metrics",
  hmacEnabled: process.env.SEQPULSE_HMAC_ENABLED === "true",
  hmacSecret: process.env.SEQPULSE_HMAC_SECRET,
});

app.use(seqpulse.metrics());

app.get("/", (_req, res) => res.send("ok"));

app.listen(3000, () => {
  console.log("Running on :3000");
});
```

`GET /seqpulse-metrics` returns:

```json
{
  "metrics": {
    "requests_per_sec": 0.25,
    "latency_p95": 31.221,
    "error_rate": 0,
    "cpu_usage": 0.42,
    "memory_usage": 0.18
  }
}
```

## CI/CD client (trigger/finish)

```js
const seqpulse = require("seqpulse");

const client = seqpulse.createCIClient({
  baseUrl: process.env.SEQPULSE_BASE_URL,
  apiKey: process.env.SEQPULSE_API_KEY,
  metricsEndpoint: process.env.SEQPULSE_METRICS_ENDPOINT,
  env: "prod",
  nonBlocking: true,
});

async function runDeployment() {
  const trigger = await client.trigger({
    branch: process.env.GITHUB_REF_NAME,
    idempotencyKey: seqpulse.buildCiIdempotencyKey(),
  });

  // Deploy your app here...
  const deploySucceeded = true;

  if (trigger.ok && trigger.deploymentId) {
    await client.finish({
      deploymentId: trigger.deploymentId,
      result: deploySucceeded ? "success" : "failed",
    });
  }
}
```

## CI/CD CLI (short YAML)

```bash
# Trigger
DEPLOYMENT_ID="$(npx -y seqpulse@0.4.0 ci trigger \
  --env prod \
  --output deploymentId)"

# Finish
npx -y seqpulse@0.4.0 ci finish \
  --deployment-id "$DEPLOYMENT_ID" \
  --job-status "$JOB_STATUS"
```

Notes:

- `--output deploymentId` permet de capturer directement l'identifiant de deployment.
- `--github-output` ecrit `deployment_id`, `status`, `http_status`.
- mode par defaut: non-bloquant (`--non-blocking true`).
- pour mode strict: `--blocking`.

## Compatibility note

Cette evolution **n'ecrase pas** le SDK runtime actuel:

- l'endpoint `/seqpulse-metrics` reste le meme
- la logique HMAC runtime reste la meme
- la CLI CI est une surcouche du client SDK existant

## Local smoke test

```bash
npm run smoke
```
npm package: @nassro190/nlog
Description: Simple Node.js Logging Library
Author: nassro
Latest version: 1.0.0

<h1>nlog</h1>

<h2>Simple Node.js Logging Library</h2>

<h3>Installation</h3>

<p>Install <code>nlog</code> using npm:</p>

```bash

npm install nlog

```

```js
const { Logger, LogLevel, nlog } = require("nlog");

const log = new Logger({ production: true, prefix: "MyLibrary" });
log(LogLevel.Info, "Hello, World!");

// or

const newLog = nlog({ production: true, prefix: "MyLibrary" });
newLog(LogLevel.Info, "Hello, World!");
```
npm package: @nast/nast-fetch-images
Description: Fetches images from NAST (unified-like Notion Abstract Syntax Tree)
Author: Mapaor
Latest version: 0.2.1

## About thi package

This package fetches the URLs from a NAST JSON file (as input) and fetches all the images and returns them as bytes.

NOTE: The NAST must have been obtained recently otherwise image links may have expired
npm package: @nast/nast2mdast
Description: Convert NAST (Notion AST) to mdast (Markdown AST)
Author: Mapaor
Latest version: 0.2.0

# nast2mdast

It is a very simple and minimal transformation which can be summed up into 2 main things:

1. Notion block types (like Callout, File, Embed and similar) that are not present in mdast get transformed to simpler types (like Paragraph, Link, BlockQoute or similar), and a `originalType` property gets added (along other rellevant information of the original block) to the `data` object of the new simple block.
2. The root node `data` which is the page title, page icon and so on, gets converted to YAML values and added as a first (head block) with type "yaml" (remark frontmatter mdast spec).

## Usage
It's main use is in the package [`mdast2md`](../mdast2md/README.md), this package is sort of an intermediate step between `nast` and markdown.
npm package: @nast/nast2typst
Description: Converts NAST (unified-like Notion Abstract Syntax Tree) to Typst markup language.
Author: Mapaor
Latest version: 0.3.4

# NAST to Typst (nast2typst)
This package transforms a unified-like Notion Abstract Sintax Tree (NAST) in JSON format into a string of Typst code (Typst is an alternative to LaTeX).

## Approach

### Preamble

```typ
// #import "@preview/notionly:0.1.0":  * // When published
#show: notionly
```


### Notion page information 
The Notion page information gets simply converted into:
```typ
#set document(title: [Here it goes the title of the Notion page])

#align(center)[
  #scale(160%)[✴️] \ // Emoji or icon of the Notion page
  #title() \
]
```

### Math
For math we internally use the package `tex2typst` for converting the expressions into Typst math language Sometimes tex2typst fails and then we provide the LaTeX code commented out. Due to the content sometimes being in KaTeX (instead of LaTeX) some things do not work out directly and need to be fixed on our side.

### Callout, toggles, bookmarks, checklists...


The Notionly Typst package (made by the same author of this npm package) internally changes some styles (for example of quotes or code blocks) and also exposes some custom functions (like `#callout`) or defines some custom markup (like [X] for checklists) and some custom variables (like the notion palette colors).

## Mapping (Notion → Typst)

### Rich Text (Inline)

| Format | Typst |
|--------|-------|
| Bold | `*text*` |
| Italic | `_text_` |
| Underline | `#underline[text]` |
| Strikethrough | `#strike[text]` |
| Inline code | `` `code` `` |
| Inline math | `$expression$`|
| Text color | `#text(fill: text_color)` |
| Background color | `#highlight(fill: bg_color)` |

### Blocks

| Block Type | Typst |
|------------|-------|
| Headings | `=`, `==`, `===` |
| Divider | `#line(length: 100%, stroke: 0.1pt)` |
| Quote | `#quote[...]` |
| Code block | \`\`\`py `print("Works like in markdown...")`  \`\`\` |
| Callouts | `#callout(icon: "📌", bg: notion.blue_bg)[...]` |
| Lists (unordered and ordered) | `-` and `+`|
| Checklists |  `[ ]` and `[X]`
| Tables | `#table( columns: (1fr, 1fr), align: (left, left),  table.header([*Col1*], [*Col2*]), [cell], [cell])` |
| Images | `#figure(image("images/image-1.png"), caption: [...])` |
| Media | Links to original Notion page
| Bookmarks and Embeds | `#link("url")[...]` |
| Toggles | `#toggle[title][body]` or `#toggle(heading: 2)[title][body]` |
| Columns | `#columns(n, gutter: 2em)[... #colbreak() ...]` |
| Math | `$ [...] $` but converted to Typst math using `text2typst`|

# License
[MIT](../LICENSE)
npm package: @nast/nbt2nast
Description: Converts NBT (Notion Block Tree) to NAST (unified-like Notion Abstract Syntax Tree)
Author: Mapaor
Latest version: 0.4.0

# NBT to NAST Converter

Converts NBT (Notion Block Tree) to NAST (Notion Abstract Syntax Tree).

## Overview

This package provides a converter that transforms the Notion API-based NBT structure into a unified-like NAST structure that's easier to work with and convert to other formats like MDAST, HAST, etc.

## Installation

```bash
npm install
```

## Usage

### As a Module

```typescript
import { nbt2nast } from "./nbt2nast.js";
import type { NBTDocument } from "./types.js";

// Load your NBT document
const nbt: NBTDocument = /* [...] */;

// Convert to NAST
const nast = nbt2nast(nbt);

console.log(nast);
```

### Running the Example

The example script reads the NBT input file (you will need to manually set it's name) from `input/` directory and outputs the NAST to `output/` directory with same file name. Run it with:

```bash
npm run example
```

### Using the CLI Tool

Convert any NBT JSON file to NAST:

```bash
npm run convert -- path/to/input.json [path/to/output.json]
```

If you don't put any output path it will create a file with a `.nast.json` extension on the directory as the same input file.



## Mapping (NBT → NAST)

### Blocks

| NBT Type | NAST Type | Notes |
|-----------|------------|-------|
| `heading_1/2/3` | `heading` | With `depth: 1/2/3` |
| `bulleted_list_item` | `list` (ordered: false) | Groups consecutive items |
| `numbered_list_item` | `list` (ordered: true) | Groups consecutive items |
| `quote` | `blockquote` | With children |
| `toggle` | `toggle` | With first children being `paragraph` or `heading` |
| `equation` | `math` | Block equation with meta: "block" |
| `divider` | `thematicBreak` | Horizontal rule |
| Rest of blocks | Same type as NBT| But some properties may be different

### Inline

| NBT Annotation | NAST Type |
|----------------|------------|
| `bold: true` | `strong` |
| `italic: true` | `emphasis` |
| `underline: true` | `underline` |
| `strikethrough: true` | `delete` |
| `code: true` | `inlineCode` |
| `url: "..."` | `link` |
| Equation inline | `inlineMath` |
| Mention | `mention` |

## License

[MIT](../LICENSE)
npm package: @nast/notion2nbt
Description: Transform Notion pages into Notion Block Trees (NBT) for any rendering target using the official Notion API. A rendering-agnostic TypeScript library with full type safety.
Author: Mapaor
Latest version: 0.7.0

# Notion to Notion Block Tree (notion2nbt)

This package is a wrapper over the Notion oficial API and it produces a Notion Block Tree (NBT) in JSON format. This removes the tedious need for recursively fetching the corresponding children blocks.

Given a pageId (or blockId) and a Notion token (sometimes also called integration secret) one can get a tree of ALL the children blocks of that block (or page) and their respective children.

Note: Your Notion integration (internal or public) must be connected to the Notion page you want to fetch for the package to work.

## Install

```bash
npm install notion2nbt
```

## Usage

```typescript
import { Notion2NBT, type PageNode, traverseNBT } from 'notion2nbt'

const client = new Notion2NBT({ auth: process.env.NOTION_TOKEN! })

// Get page or block as a structure
const page = await client.getPageV2('your-page-id')
// const rootBlock = await client.getBlock('your-block-id')

// Ensure everything works ok
console.log(page.type)            
console.log(page.properties.title)   
console.log(page.properties.icon)  
console.log(page.children)           

// Access children directly
for (const block of page.children || []) {
  console.log(block.type, block.properties)
}
```

## Transform Example
See `scripts/fetch-page.ts` for an example.

You can also use the wrappers `notion2md` and `notion2typst` to transform your Notion content to Markdown or to Typst.

## Features
All 27+ Notion block types supported :)


## Typical Notion API Response

For comparison with the official Notion API you can use:

```typescript
const rawBlocks = await client.APIgetChildrenBlocks('block-id')
// Returns raw Notion API response (array of children blocks)
```

## License

[MIT](../LICENSE)
npm package: @nast/notion2typst
Description: A wrapper around nbt2nast and nast2typst to convert Notion content directly to Typst
Author: Mapaor
Latest version: 0.2.5

# Notion to Typst
This package is simply a wrapper over the following packages:

1. [notion2nbt](../notion2nbt)
2. [nbt2nast](../nbt2nast)
3. [nast2typst](../nast2typst)
4. [nast-fetch-images](../nast-fetch-images)

It uses the other packages to provide a more direct conversion: given a notion page id and notion token, you get the typst code and the images (the content of the Notion page).
npm package: @nast/types
Description: Shared type definitions for NAST packages
Author: Mapaor
Latest version: 0.1.1

# @nast/types

Shared type definitions for NAST packages.

## Installation

```bash
pnpm add @nast/types
```

## Usage

```typescript
// Import all types from the main entry
import { NASTRoot, NASTNode, NBTBlock, RichText } from '@nast/types';

// Or import from specific modules for better tree-shaking
import { NASTRoot, NASTNode } from '@nast/types/nast';
import { NBTBlock, NBTPageNode } from '@nast/types/nbt';
import { RichText, FileInfo, IconInfo } from '@nast/types/common';
```

## Type Categories

### NAST Types (`@nast/types/nast`)

NAST (Notion Abstract Syntax Tree) is a unified-like AST format for representing Notion content:

- `NASTRoot` - Root document node
- `NASTNode` - Union of all node types
- Block types: `NASTParagraph`, `NASTHeading`, `NASTCode`, `NASTBlockquote`, etc.
- Inline types: `NASTText`, `NASTStrong`, `NASTEmphasis`, `NASTLink`, etc.
- Media types: `NASTImage`, `NASTVideo`, `NASTFile`, `NASTPDF`
- Layout types: `NASTColumnList`, `NASTColumn`, `NASTTable`, etc.

### NBT Types (`@nast/types/nbt`)

NBT (Notion Block Tree) is the intermediate format closer to the Notion API:

- `NBTBlock` - Base block interface
- `NBTPageNode` - Page document node
- `NBTDocument` - Alias for NBTPageNode
- `NBTNodeMetadata` - Block metadata

### Common Types (`@nast/types/common`)

Shared utility types:

- `RichText` - Rich text with annotations
- `TextAnnotations` - Text formatting (bold, italic, etc.)
- `NotionColor` - Notion color values
- `FileInfo` - File/external URL info
- `IconInfo` - Emoji/file/external icon
- `MentionData` - Mention types (user, page, date, database)
- `DownloadedImage` - Downloaded image data
- `FetchImagesResult` - Image fetch statistics

## License

MIT
npm package: @nasti-toolchain/nasti
Description: 娜斯提-基于Rolldown的统一Web打包工具（没错，明日方舟干员命名）
Author: amiya167
Latest version: 1.3.10

<div align="center">

# Nasti

**基于 [Rolldown](https://rolldown.rs) + [OXC](https://oxc.rs) 的高性能 Web 打包器**

*兼容 Vite 插件生态，内置 React & Vue 支持*

[![CI](https://github.com/zixiao-labs/Nasti/actions/workflows/ci.yml/badge.svg)](https://github.com/zixiao-labs/Nasti/actions/workflows/ci.yml)
[![npm](https://img.shields.io/npm/v/nasti-build)](https://www.npmjs.com/package/nasti-build)
[![License: MIT](https://img.shields.io/badge/License-MIT-blue.svg)](./LICENSE)

[English](#features) | [文档](https://nasti.zixiaolabs.com) | [快速开始](#quick-start)

</div>

---

## Features

- **Rolldown 驱动** - Rust 编写的打包内核，生产构建速度比 Rollup 快 10-30x
- **OXC 转译** - Rust 编写的 TS/JSX/TSX 转译器，比 Babel 快 20-50x
- **Vite 插件兼容** - 直接使用现有 Vite/Rollup 插件（resolveId / load / transform）
- **内置 React 支持** - JSX 自动转换 + React Fast Refresh HMR
- **内置 Vue 支持** - SFC 编译 + Vue HMR（可选依赖 `@vue/compiler-sfc`）
- **Dev Server + HMR** - 开发服务器 + WebSocket 热模块替换
- **TypeScript 优先** - 原生 TS 支持，零配置

## Quick Start

```bash
# 安装
npm install -D @nasti-toolchain/nasti

# 启动开发服务器
npx nasti dev

# 生产构建
npx nasti build
```

## 项目结构

Nasti 期望的项目结构与 Vite 一致：

```
my-project/
├── index.html          # 入口 HTML
├── src/
│   ├── main.tsx        # JS 入口（在 index.html 中引用）
│   └── App.tsx
├── public/             # 静态资源（原样复制）
└── nasti.config.ts     # 配置文件（可选）
```

## Configuration

```ts
// nasti.config.ts
import { defineConfig } from 'nasti-build'

export default defineConfig({
  // 框架: 'react' | 'vue' | 'auto'（自动检测）
  framework: 'react',

  server: {
    port: 3000,
    host: true,       // 监听所有地址
    open: true,        // 自动打开浏览器
  },

  build: {
    outDir: 'dist',
    sourcemap: true,
    minify: true,
  },

  resolve: {
    alias: {
      '@': '/src',
    },
  },

  // 直接使用 Vite 插件
  plugins: [],
})
```

## CLI

```bash
# 开发服务器
nasti dev [root] [--port 3000] [--host] [--open]

# 生产构建
nasti build [root] [--outDir dist] [--sourcemap] [--minify]

# 预览构建产物
nasti preview [root] [--port 4173]
```

## Programmatic API

```ts
import { build, createServer, defineConfig } from 'nasti-build'

// 开发服务器
const server = await createServer({
  root: '.',
  server: { port: 3000 },
})
await server.listen()

// 生产构建
await build({
  root: '.',
  build: { outDir: 'dist' },
})
```

## Plugin API

Nasti 的插件接口与 Vite 完全兼容：

```ts
import type { NastiPlugin } from 'nasti-build'

function myPlugin(): NastiPlugin {
  return {
    name: 'my-plugin',
    enforce: 'pre',  // 'pre' | 'post'（可选）
    apply: 'build',  // 'build' | 'serve'（可选）

    resolveId(source, importer) {
      // 解析模块 ID
    },

    load(id) {
      // 加载模块内容
    },

    transform(code, id) {
      // 转换模块代码
      return { code: transformedCode }
    },
  }
}
```

## Vue 支持

Vue 支持需要安装可选依赖：

```bash
npm install -D @vue/compiler-sfc
```

```ts
// nasti.config.ts
export default defineConfig({
  framework: 'vue',
})
```

## License

[MIT](./LICENSE) - Made by [zixiao-labs](https://github.com/zixiao-labs)

> Nasti - 明日方舟干员命名 :