open-index/open-npm huggingface dataset:
npm package: @metaplex/js
Description: Metaplex JavaScript API
Author: Metaplex Maintainers
Latest version: 4.12.0
Deprecated: Package no longer supported. Contact Support at https://www.npmjs.com/support for more info.

# @metaplex/js &middot; [![GitHub license](https://img.shields.io/badge/license-MIT-blue.svg)](https://github.com/metaplex/js/blob/main/LICENSE) [![npm version](https://img.shields.io/npm/v/@metaplex/js.svg?style=flat)](https://www.npmjs.com/package/@metaplex/js)

Metaplex JavaScript SDK

## Stability

[Stability: 1 - Experimental](https://docs.metaplex.com/stability)

> **In Development** - All interfaces are very likely to change very frequently.
Please use caution when making use of this library. Bugs or behavior changes may
surprise users when Experimental API modifications occur.

## Documentation

- [API Docs](https://metaplex-foundation.github.io/js)
- [Guides](https://docs.metaplex.com/sdk/js/getting-started)

## Community

_COMING SOON_

## Contributing
Visit [Contributing](CONTRIBUTING.md)

## Good First Issues

See the list of starter issues [here](https://github.com/metaplex-foundation/js/issues?q=is%3Aissue+is%3Aopen+label%3A%22good+first+issue%22)
npm package: @metaplex/react
Description: Metaplex React SDK
Author: Metaplex Maintainers
Latest version: 1.0.2

# @metaplex/react

Metaplex React SDK

> **In Development** - All interfaces are very likely to change very frequently. Please be aware.

- [x] Metaplex hook
- [x] Wallets
- [ ] More hooks
- [ ] GraphQL client
- [ ] GraphQL caching
npm package: @metapouch/uikit
Description: Set of UI components for MetaPouch projects
Author: Ajay Srinivas
Latest version: 0.1.0

# A pancakeswap UI Kit fork for MetaPouch.

[![Version](https://img.shields.io/npm/v/@metapouch/uikit)](https://www.npmjs.com/package/@metapouch/uikit) [![Size](https://img.shields.io/bundlephobia/min/@metapouch/uikit)](https://www.npmjs.com/package/@metapouch/uikit)

MetaPouch UI Kit is a set of React components and hooks used to build pages on MetaPouch's apps. It also contains a theme file for dark and light mode.

## Install

`yarn add @metapouch/uikit`

## Setup

### Theme

Before using MetaPouch UIkit, you need to provide the theme file to styled-component.

```
import { ThemeProvider } from 'styled-components'
import { light, dark } from '@metapouch/uikit'
...
<ThemeProvider theme={isDark}>...</ThemeProvider>
```

### Reset

A reset CSS is available as a global styled component.

```
import { ResetCSS } from '@metapouch/uikit'
...
<ResetCSS />
```

### Types

This project is built with Typescript and export all the relevant types.

## How to use the UIkit

If you want to use components from the UIkit, check the [Storybook documentation](https://metapouch.github.io/uikit/)
npm package: @metaproprotocol/microservice-utils
Description: NestJS Microservice Utils
Author: Metapro
Latest version: 0.4.72

# Microservice Utils

This repository contains utility functions shared across various microservices on metapro environment.

## How to Publish a New Package Version

Follow these steps to publish updates:

1. **Install Dependencies**

   ```bash
   npm i
   ```

2. **Make Changes**

   - Update the code as needed
   - Test your changes thoroughly

3. **Update Version**

   - Increment the version in `package.json` (e.g., `1.0.0` -> `1.0.1`)

4. **Build the Package**

   ```bash
   npm run build
   ```

5. **Prepare for Publishing**

   ```bash
   npm run prepublish
   ```

6. **Publish the Package**

   ```bash
   npm publish
   ```

7. **Add an tag to the gitgraph!**
   ```bash
   git tag v<version>
   git push origin v<version>
   ```
npm package: @metarebalance/git-wrapped
Description: Spotify Wrapped for your git history
Author: romimur
Latest version: 2.0.5

# git-wrapped

> Spotify Wrapped for your git history — beautiful year-in-code stats right in your terminal

![git-wrapped demo](demo.gif)

## Quick Start

```bash
npx git-wrapped
```

No installation. No internet. Works in any git repository.

---

## Examples

```bash
# Current year, auto-detect author
npx git-wrapped

# Different year and theme
npx git-wrapped --year 2023 --theme purple

# All-time history
npx git-wrapped --all-time

# Compare two years
npx git-wrapped --compare 2023

# Specific branch
npx git-wrapped --branch main

# Save card to file
npx git-wrapped --save wrapped-2025.txt

# JSON output for scripting
npx git-wrapped --json > stats.json

# Analyze another repo
npx git-wrapped --repo ~/projects/my-app
```

---

## Options

| Flag | Description | Default |
|------|-------------|---------|
| `-y, --year <year>` | Year to analyze | Current year |
| `-a, --author <pattern>` | Filter by author name/email (passed to git `--author`, supports partial match) | Auto-detected |
| `--all-authors` | Show all contributors combined | — |
| `-b, --branch <branch>` | Branch to analyze | HEAD |
| `-r, --repo <path>` | Path to repository | Current dir |
| `--since <date>` | Start date `YYYY-MM-DD` | — |
| `--until <date>` | End date `YYYY-MM-DD` | — |
| `--all-time` | Analyze entire git history | — |
| `--full` | Remove 3K commit limit (slower) | — |
| `--top <n>` | Number of languages to show | 7 |
| `--ignore-ext <list>` | Comma-separated extensions to skip | — |
| `--compare <year>` | Compare with another year | — |
| `--theme <name>` | `green` / `blue` / `purple` / `orange` / `mono` | `green` |
| `--no-animation` | Disable animations | — |
| `--json` | Output JSON (ISO 8601 dates) | — |
| `--save <file>` | Save summary card to text file | — |

---

## Navigation

| Key | Action |
|-----|--------|
| `→` or `Space` | Next screen |
| `←` | Previous screen |
| `Q` or `Esc` | Quit |
| `S` | Share on Twitter (Final screen) |
| `B` | Share on Bluesky (Final screen) |
| `C` | Copy card to clipboard (Final screen) |

---

## Requirements

- Node.js >= 18
- git

---

## Add to your profile README

```markdown
[![Git Wrapped](https://img.shields.io/badge/git--wrapped-2025-39d353?style=flat-square&logo=git&logoColor=white)](https://github.com/romimur/git-wrapped)
```

---

## License

MIT
npm package: @metarhia/config
Description: Metarhia Configuration Loader
Author: Timur Shemsedinov
Latest version: 2.1.3
Deprecated: Package renamed to metaconfiguration

# Metarhia Configuration Loader

[![ci status](https://github.com/metarhia/config/workflows/Testing%20CI/badge.svg)](https://github.com/metarhia/config/actions?query=workflow%3A%22Testing+CI%22+branch%3Amaster)
[![snyk](https://snyk.io/test/github/metarhia/config/badge.svg)](https://snyk.io/test/github/metarhia/config)
[![npm version](https://badge.fury.io/js/%40metarhia%2Fconfig.svg)](https://badge.fury.io/js/%40metarhia%2Fconfig)
[![npm downloads/month](https://img.shields.io/npm/dm/@metarhia/config.svg)](https://www.npmjs.com/package/@metarhia/config)
[![npm downloads](https://img.shields.io/npm/dt/@metarhia/config.svg)](https://www.npmjs.com/package/@metarhia/config)
[![license](https://img.shields.io/badge/license-MIT-blue.svg)](https://github.com/metarhia/config/blob/master/LICENSE)

## Installation

- `npm install @metarhia/config --save`
- `const { Config } = require('@metarhia/config');`

## Usage

Load configuration with asynchronous constructor:
```js
const { Config } = require('@metarhia/config');
const config = await new Config('./configDirectory');
console.log(config);
// Output example:
// {
//   logger: {
//     enabled: true,
//     keepDays: 100,
//     writeInterval: 3000,
//     writeBuffer: 65536,
//     toStdout: [ 'system', 'fatal', 'error' ]
//   },
//   server: {
//     transport: 'http',
//     address: '127.0.0.1',
//     ports: 80
//   }
// }
```
or factory:
```js
const { readConfig } = require('@metarhia/config');
const config = await readConfig('./configDirectory');
```
Specify certain configuration sections to load:
```js
const { Config } = require('@metarhia/config');
const options = { names: ['application', 'gateway'] };
const config = await new Config('./configDirectory', options);
```
Loag configuration in specified mode:
```js
const { Config } = require('@metarhia/config');
const options = { mode: 'test' };
const config = await new Config('./configDirectory', options);
```
Specify sections and mode:
```js
const { Config } = require('@metarhia/config');
const options = { mode: 'test', names: ['application', 'gateway'] };
const config = await new Config('./configDirectory', options);
```
Use custom context (sandbox) to execute configuration js file in it:
```js
const vm = require('vm');
const common = require('@metarhia/common');
const { Config } = require('@metarhia/config');
const sandbox = { Duration: common.duration };
vm.createContext(sandbox);
const options = { sandbox };
const config = await new Config('./configDirectory', options);
```
npm package: @metarichrad/sdk
Description: 🛠 An SDK for building applications on top of Uniswap.
Latest version: 1.0.0

# Uniswap SDK

[Source](https://github.com/Uniswap/v2-sdk/tree/00a1eca9456d37c3d467f56e57a0496d1bf28e40)

[![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: @metarobert/workbench
Description: Initialize a .workbench directory in the current working directory
Author: Robert Arles
Latest version: 0.5.3

# @metarobert/workbench

A CLI tool to initialize a `.workbench` directory in your current working directory. The `.workbench` directory contains development tools, templates, and productivity enhancements.

## Installation

```bash
npx @metarobert/workbench --init
```

## Usage

### Initialize .workbench directory

```bash
npx @metarobert/workbench --init
```

This will create a `.workbench` directory in your current working directory with all the necessary files and templates.

### Force overwrite existing directory

```bash
npx @metarobert/workbench --init --force
```

Use this if you want to overwrite an existing `.workbench` directory.

### Show help

```bash
npx @metarobert/workbench --help
```

## What's included

The `.workbench` directory contains:

- **Documentation templates** - Standard documentation formats
- **Development scripts** - Useful automation scripts
- **Git workflows** - Git-related instructions and templates
- **Testing guidelines** - Testing best practices and templates
- **Journaling tools** - Development journaling standards
- **Custom instructions** - Project-specific guidance

## Development

This package is designed to be simple and focused. It copies the `.workbench` directory from the package to your current working directory, making it easy to bootstrap new projects with consistent development tooling.

## License

MIT
npm package: @metarouter/analytics.js-integrations
Description: Metarouter analytics.js-integrations
Author: Metarouter
Latest version: 1.0.7

# Analytics.js Integrations

[![CircleCI](https://ci.segment.com/gh/segmentio/analytics.js-integrations.svg?style=svg&circle-token=3902c34188b9a248fb3cf745442f626e8bbc89a5)](https://ci.segment.com/gh/segmentio/analytics.js-integrations)

## Introduction
This repo stores the majority of the `analytics.js` integrations that Segment currently supports. It is organized as a monorepo with each individual integration packaged and deployed as their own npm modules.

## Getting Started
To start contributing, please ensure you have the following installed on your local machine:

- [yarn](https://yarnpkg.com/en/)
- [node](https://nodejs.org/en/)

Once these pre-requisites are met, feel free to clone the repo locally and install the required dependencies:

```bash
git clone https://github.com/segmentio/analytics.js-integrations && cd analytics.js-integrations
yarn
```

## Contributing
All individual integrations are stored in the `integrations/` directory. We recommend navigating into the individual integration you are contributing to in your terminal rather than working from the root directory:

```bash
cd integrations/<INTEGRATION_NAME>
```

### Breaking Changes
Please note, there is currently no way for user's of these integrations to choose specific versions. **Therefore, all changes must always be fully backwards compatible**. If a change is breaking it will not be considered.

### Adding Dependencies
If you need to add an external dependency to an integration, **please ensure you add it within the integration directory, not the root directory**. That being said, please keep in mind that these integrations are run client side. Please only add external dependencies if it is critical to your code changes.

### Running Tests
Each integration directory has an npm script called `test` that you can use to easily run the unit tests with via `yarn test`.

### Test Locally
You can test changes to integrations locally with the [a.js compiler](https://github.com/segmentio/analytics.js-integrations/tree/master/compiler).

### Code Formatting
This project uses eslint to ensure uniform code formatting standards are maintained. You can see the specific eslint config in the root `.eslintrc` file. A pre-commit hook is used to help automate this process for you.

### Pull Requests
Please make sure your PR includes the new version in `package.json` as well as an update to the integration's HISTORY.md file describing the change.

### Releasing
All releases are handled by Segment engineers. Releases will be managed after a change has been approved and merged.
npm package: @metarouter/cryptobject
Description: Traverse a given object and encrypt/decrypt the strings with AES.
Author: MetaRouter
Latest version: 2.0.1

# cryptobject
[![CircleCI](https://circleci.com/gh/astronomerio/cryptobject.svg?style=svg)](https://circleci.com/gh/astronomerio/cryptobject)

cryptobject provides AES256 encryption to every string value in an object.

# Installation
`npm install --save cryptobject`

# Usage
To use cryptobject, simply import the package and call one of `encrypt`
or `decrypt` to create encrypt or decrypt an object.

### Usage
```javascript
const { encrypt, decrypt } = require('cryptobject')('passphrase');

const obj = { 'key': 'value' };

const encryptedObject = encrypt(obj);
const decrytpedObject = decrypt(encryptedObject);
```

# License
MIT
npm package: @metarouter/emitter-s3
Description: Emits an array of JSON object to an Amazon S3 file.
Author: Alois Barreras
Latest version: 3.0.0

# emitter-s3

Wrapper for the AWS.S3 client that will emit an array or stream of JSON object to an s3 file.

## Creating an Emitter

Import the S3Emitter from 'emitter-s3' and pass in an options object to the constructor.

```javascript
const S3Emitter = require('emitter-s3');

const options = {
    filePath: 'my/file/path',
    bucketName: 'my_bucket',
    region: 'us-east-1',
    awsAccessKeyId: 'accessKeyId',
    awsSecretAccessKey: 'secretAccessKey'
};

const emitter = new S3Emitter(options);
```

## Options

### filePath (optional)

The file path at which your s3 files will be stored.

### appendTimestampToFilename

Default: true

By default, this will make the filename an ISO formatted date string. You can use filePath to create a path prefix with the filename as the timestamp.

### bucketName

The name of your S3 bucket.

### region

The region in which your S3 bucket is.

### serverSideEncryption (optional)

AWS S3 supports [server side encryption](http://docs.aws.amazon.com/AmazonS3/latest/dev/UsingServerSideEncryption.html). If your bucket policy requires the server side encryption header to be set, you can specify that here.

Possible values are 'AES256' or 'aws:kms'.

## API

### .emit(records)

Emits the data to an s3 file. Returns a promise.

```javascript
await emitter.emit(data);

// or with promises
emitter.emit(data).then(function () {
    // do something after uploading file
});
```

## License

Released under the MIT License.
npm package: @metarouter/mr-metarouter
Description: The MetaRouter analytics.js integration.
Author: MetaRouter
Latest version: 3.0.5

# analytics.js-integration-segmentio [![Build Status][ci-badge]][ci-link]

Segmentio integration for [Analytics.js][].

## License

Released under the [MIT license](License.md).


[Analytics.js]: https://segment.com/docs/libraries/analytics.js/
[ci-link]: https://circleci.com/gh/segment-integrations/analytics.js-integration-segmentio
[ci-badge]: https://circleci.com/gh/segment-integrations/analytics.js-integration-segmentio.svg?style=svg
npm package: @metarouter/partitioned-buffer
Description: A class that encapsulates several sub-buffers that are partitioned by a specified key
Author: Alois Barreras
Latest version: 3.0.0

[![CircleCI](https://circleci.com/gh/astronomerio/partitioned-buffer.svg?style=svg)](https://circleci.com/gh/astronomerio/partitioned-buffer)

# partitioned-buffer

### Description
Partitioned buffer is an object that maintains an internal list of sub buffers partitioned by a key you specify. Each sub buffer can store its own separate data and emit the data according to criteria you specify.

### Installation

```javascript
npm install astronomerio/partitioned-buffer#1.0.0
```

### Usage

#### Creating a partitioned buffer

Import the main class from 'partitioned-buffer' and instantiate it with a "flush" callback that will be invoked any time an internal buffer emits its data.
The callback function is fit to handle returning a Promise or be marked as 'async'.

```javascript
import PartitionedBuffer from '@astronomerio/partitioned-buffer';

const partitionedBuffer = new PartitionedBuffer(function (data, key) {
  // do something with data, such as put to s3
  // data is the array of all the records you pushed onto the buffer
  // key is the key by which this buffer was partitioned
});
```

You can optionally pass in an options object as the second parameter in the constructor. The options specify the criteria for when an internal buffer will emit its data.

```javascript
const options = {
  maxBytesPerFlush: 500000,
  maxRecordsPerFlush: 500,
  maxMillisPerFlush = 300000 // 5 minutes
};
```

#### Pushing data onto the buffer

Simply call ```partitionedBuffer.push(key, data)``` and supply a key that will reference the internal buffer which stores the data. The partitioned buffer does not perform any transormations on the data, it will emit the exact data you passed in.

```javascript
partitionedBuffer.push('h2jkl345hl', { event_name: 'track', timestamp: '09/22/2016' });
```

### License

&copy; Copyright Astronomer, Inc 2016

You may use, copy and redistribute this library under the [MIT license](http://www.opensource.org/licenses/MIT).
npm package: @metarr/nfo-parser
Description: A simple NFO parser (cloned from hqwuzhaoyi/gpt-subtitle packages)
Author: hqwuzhaoyi
Latest version: 0.3.1

# @metarr/nfo-parser
A clone of nfo-parser package from hqwuzhaoyi/gpt-subtitle. The original npm module had project dependencies from gpt-subtitle, and i wanted an isolated version for this project.

## Introduction

`@metarr/nfo-parser` is a simple command-line tool for parsing NFO files and converting their content into JSON format. It is built on Node.js and can be used to handle NFO files containing information about TV series or movies.

## Installation

Install `@metarr/nfo-parser` globally via npm:

```bash
npm install -g @metarr/nfo-parser
```

## Usage

To convert an NFO file to JSON format using nfo-parser, run the following command

```bash
nfo-parser --input <path-to-nfo-file> [--output <path-to-json-file>]

```

- `--input` - Required, specifies the path to the NFO file to be converted.
- `--output` - Optional, specifies the path to output the JSON file. If not specified, the output is printed to the console.

## Using the parser function

To use the parser function in your project, follow these steps：

```typescript
import { parser } from "@metarr/nfo-parser";

(async () => {
  try {
    const nfoData = await parser("path/to/yourfile.nfo");
    console.log(nfoData); // 输出解析后的 JSON 数据
  } catch (error) {
    console.error("Error:", error);
  }
})();
```
npm package: @metasaver/react-template
Description: Config based react application template
Author: Jim Nightingale
Latest version: 0.0.20

# React Template

Config based React template

## !!! WARNING !!!

![WARNING](http://www.animatedimages.org/data/media/703/animated-warning-image-0011.gif)

React Template is currently in pre-release mode and should not be used in production systems
npm package: @metascraper/helpers
Description: Collection of helper functions used by metascraper
Author: microlink.io
Latest version: 5.50.0

<div align="center">
  <br>
  <img style="width: 500px; margin:3rem 0 1.5rem;" src="https://metascraper.js.org/static/logo-banner.png" alt="metascraper">
  <br>
  <br>
  <p align="center"><strong>metascraper-helpers</strong>: Collection of helper functions used by metascraper.</p>
  <p align="center">See our <a href="https://metascraper.js.org" target='_blank' rel='noopener noreferrer'>website</a> for more information.</p>
  <br>
</div>

## Install

```bash
$ npm install @metascraper/helpers --save
```

## License

**metascraper-helpers** © [Microlink](https://microlink.io), released under the [MIT](https://github.com/microlinkhq/metascraper/blob/master/LICENSE.md) License.<br>
Authored and maintained by [Microlink](https://microlink.io) with help from [contributors](https://github.com/microlinkhq/metascraper/contributors).

> [microlink.io](https://microlink.io) · GitHub [microlinkhq](https://github.com/microlinkhq) · X [@microlinkhq](https://x.com/microlinkhq)
npm package: @metaship/map
Description: Robots Map
Author: machengda
Latest version: 0.0.2

# TODO List

## 2023

优先级：
P0：

- 授权
  - 用户使用一段时间之后新增设备如何处理？
  - 取消 MAC 地址
- `机器人完美跟随`
  - 多机器人选中，计算中心点，区域范围
  - 设置缩放比例
  - 鼠标粘性拖动
  - 报警聚焦
- `机器人区分楼层`
- `机器人配置工具`
- 测试数据流
- 通用的设置界面
- 机器人车体库位状态展示
- 平面库位展示（有无状态，定制化显示获取图片）
- 组件定制开发
- `机器人图片缩放问题`
- 显示机器人执行的任务
- 自动跟随模式

TODO Fix:

- 机器人楼层适配
- 报警模式跟随优化
- `机器人地图实时更新`
  - 区域一致性问题，是否可以有唯一 id ？
- 机器人地图区域改名适配

P1：

- 主题工具
- `充电，电量特效`
- 机器人任务时间，即将到达时间
- 更精细化的报警策略（区域报警）

P2：

- 机器人详情（3D，维保信息）
- 更多设备显示以及多状态显示
- 更多的图元信息（植被绿化，道路等基础设施）

基础设施搭建：

- Meta-Map SSO 案例演示

  0.7
  0.7
  1.2
  0.8
  0.8
  1
  0.84
  0.84
npm package: @metaship/meta-assets
Description: ## install
Author: 马成达
Latest version: 1.0.7

# Meta-Assets

## install

[界面截图]: # ![snapshot.jpg](snapshot.jpg)

```

yarn add @metaship/meta-assets

```

## usage

```ts
import { AssetsEditor, THEME_TYPES } from '@metaship/meta-assets'
import '@metaship/meta-assets/dist/style.css'

const editor = new AssetsEditor({
  theme: THEME_TYPES.light
})

editor.onSave = (info) => console.log(info)

document.body.append(editor)

```
npm package: @metaship/pdf-to-png
Description: 📃📸 Converts PDFs to images in nodejs
Author: machengda
Latest version: 0.0.2

# meta-pdf-to-png

[![Build Status](https://github.com/k-yle/pdf-to-img/workflows/Build%20and%20Test/badge.svg)](https://github.com/k-yle/pdf-to-img/actions)
[![Coverage Status](https://coveralls.io/repos/github/k-yle/pdf-to-img/badge.svg?branch=main&t=LQmPNl)](https://coveralls.io/github/k-yle/pdf-to-img?branch=main)
[![npm version](https://badge.fury.io/js/pdf-to-img.svg)](https://badge.fury.io/js/pdf-to-img)
[![npm](https://img.shields.io/npm/dt/pdf-to-img.svg)](https://www.npmjs.com/package/pdf-to-img)
![npm bundle size](https://img.shields.io/bundlephobia/minzip/pdf-to-img)

📃📸 Converts PDFs to images in nodejs.

Useful for unit tests of PDFs

Supports nodejs v18+, and comes with a CLI.

## Install

```sh
npm install -S @metaship/pdf-to-png
```

> [!IMPORTANT]
> You should use v4 by default. v4 requires nodejs v18 or later, and ESM modules.
>
> If you can't upgrade to v4 yet, you can still use v3. If you use v3, you can safely ignore `npm audit`'s [warning about pdfjs-dist](https://github.com/advisories/GHSA-wgrm-67xf-hhpq), since this library [disables `eval` by default](https://github.com/k-yle/pdf-to-img/commit/bdac3a1dcc2004c3f1fe7380bbb860086ec2746f).

## Example

NodeJS (using ESM Modules):

```js
import { promises as fs } from "node:fs";
import { pdf } from "@metaship/pdf-to-png";

async function main() {
  let counter = 1;
  const document = await pdf("example.pdf", { scale: 3, background: 'transparent' });
  for await (const image of document) {
    await fs.writeFile(`page${counter}.png`, image);
    counter++;
  }


  // you can also read a specific page number:
  const page12buffer = await document.getPage(12)
}
main();
```

If your app does not support ESM modules, you can use v3 (see the warning above), or just change the import:

```diff
+ const { promises: fs } = require("node:fs");
- import { promises as fs } from "node:fs";
- import { pdf } from "@metaship/pdf-to-png";

  async function main() {
+   const { pdf } = await import("@metaship/pdf-to-png");
    let counter = 1;
    const document = await pdf("example.pdf", { scale: 3 });
    for await (const image of document) {
      await fs.writeFile(`page${counter}.png`, image);
      counter++;
    }
  }
  main();
```

The `pdf` function accepts either a path to the file on disk, or a data URL (e.g. `data:application/pdf;base64,...`)

### Options

You can supply a second argument which is an object of options:

```js
const doc = await pdf("example.pdf", {
  password: "...", // if the PDF is encrypted

  scale: 2.0, // use this for PDFs with high resolution images if the generated image is low quality
});
```

## CLI

```sh
npm i -g @metaship/pdf-to-png@latest

# example:
pdf2png inputFile.pdf

# options:
# -s / --scale: set the scale (defaults to 3)
# -p / --password: the password to unlock the PDF
# -o / --output: the output folder, relative to the current working directory.
# -b / --background: the background value.
```
npm package: @metaspa/meta-spa-webpack-plugin
Description: webpack plugin that helps export MetaSPA format JSONP
Author: hlhr202
Latest version: 0.0.6

# Meta SPA Webpack Plugin (WIP)

This plugin helps webpack emit Meta SPA compatible bundle files.

## Usage

- Installation
```bash
npm install -D @metaspa/meta-spa-webpack-plugin
```

- Add to your webpack config (commonjs style)
- Be careful this plugin will modified your output target and externals config. The original webpack config about output target and externals will not affect the final build result
```js
const MetaSPAPlugin = require('@metaspa/meta-spa-webpack-plugin').default

module.export = {
    ...
    plugins: [
        new MetaSPAPlugin({
            namespace: 'AppName',
            provide: [
                {module: 'react', symbol: 'React'}
            ]
        })
    ]
}
```
npm package: @metastable/cppzst
Description: ZSTD streaming wrapper for node.js 18+
Author: zwb-ict
Latest version: 2.2.2

# cppzst [![version](https://img.shields.io/npm/v/@metastable/cppzst.svg)](https://www.npmjs.com/package/@metastable/cppzst)

Zstd wrapper for node.js (fork)

Changes:

- Added support for running inside V8 sandbox.
- Updated zstd to latest.
- Added proper support for ES modules and CJS.

## Installation

```bash
$ npm install @metastable/cppzst --save
```

## Usage

### Async

#### compress(buffer[, zstdCompressParams], callback)

```javascript
import { compress } from "cppzst";

await compress(input);
```

#### decompress(buffer[, zstdDecompressParams], callback)

```javascript
import { decompress } from "cppzst";

await decompress(input);
```

### Sync

#### compressSync(buffer[, zstdCompressParams])

```javascript
const compressSync = require("cppzst").compressSync;

try {
  var output = compressSync(input);
} catch (err) {
  // ...
}
```

#### decompressSync(buffer[, zstdCompressParams])

```javascript
const decompressSync = require("cppzst").decompressSync;

try {
  var output = decompressSync(input);
} catch (err) {
  // ...
}
```

### Stream

#### compressStream([zstdCompressParams])

```javascript
const compressStream = require("cppzst").compressStream;
const fs = require("fs");

fs.createReadStream("path/to/input")
  .pipe(compressStream())
  .pipe(fs.createWriteStream("path/to/output"));
```

#### decompressStream([zstdCompressParams])

```javascript
const decompressStream = require("cppzst").decompressStream;
const fs = require("fs");

fs.createReadStream("path/to/input")
  .pipe(decompressStream())
  .pipe(fs.createWriteStream("path/to/output"));
```

### ZSTD Params

The `compress`, `compressSync` and `compressStream` methods may accept an optional `zstdCompressParams` object to define compress level and/or dict.

```javascript
const zstdCompressParams = {
  level: 5, // default 1
  dict: new Buffer("hello zstd"), // if dict null, left level only.
  dictSize: dict.length, // if dict null, left level only.
};
```

The `decompress`, `decompressSync` and `decompressStream` methods may accept an optional `zstdDecompressParams` object to define dict.

```javascript
const zdtdDecompressParams = {
  dict: new Buffer("hello zstd"),
  dictSize: dict.length,
};
```

## Tests

```sh
$ npm test
```

## License

MIT
npm package: @metastack/ldapjs
Description: LDAP client and server APIs
Author: Mark Cavage
Latest version: 1.2.0

# LDAPjs

[!['Build status'][travis_image_url]][travis_page_url]

[travis_image_url]: https://api.travis-ci.org/joyent/node-ldapjs.svg
[travis_page_url]: https://travis-ci.org/joyent/node-ldapjs

LDAPjs makes the LDAP protocol a first class citizen in Node.js.

## Usage

For full docs, head on over to <http://ldapjs.org>.

```javascript
var ldap = require('ldapjs');

var server = ldap.createServer();

server.search('dc=example', function(req, res, next) {
  var obj = {
    dn: req.dn.toString(),
    attributes: {
      objectclass: ['organization', 'top'],
      o: 'example'
    }
  };

  if (req.filter.matches(obj.attributes))
  res.send(obj);

  res.end();
});

server.listen(1389, function() {
  console.log('ldapjs listening at ' + server.url);
});
```

To run that, assuming you've got the [OpenLDAP](http://www.openldap.org/)
client on your system:

    ldapsearch -H ldap://localhost:1389 -x -b dc=example objectclass=*

## Installation

    npm install ldapjs

## License

MIT.

## Bugs

See <https://github.com/mcavage/node-ldapjs/issues>.