open-index/open-npm huggingface dataset:
npm package: @lorado/nuxtjs_apollo
Description: ![Nuxt Apollo](./docs/public/cover.jpg)
Latest version: 5.0.0-alpha.3.upload.5

![Nuxt Apollo](./docs/public/cover.jpg)

<h1 align="center">Nuxt Apollo</h1>

<p align="center">Effortlessly integrate GraphQL into your Nuxt 3 projects.</p>

<p align="center">
  <!-- <a href="https://github.com/nuxt-community/apollo-module/actions?query=branch%3Amain+event%3Apush">
    <img alt="CI" src="https://github.com/nuxt-community/apollo-module/actions/workflows/ci.yml/badge.svg?branch=main"/>
  </a> -->
  
  <a href="https://npmjs.com/package/@nuxtjs/apollo/v/next">
      <img alt="Version" src="https://img.shields.io/npm/v/@nuxtjs/apollo/next?color=blue&style=flat-square"/>
  </a>
  
  <a href="https://npmjs.com/package/@nuxtjs/apollo/v/next">
      <img alt="Downloads" src="https://img.shields.io/npm/dt/@nuxtjs/apollo/next?color=blue&style=flat-square"/>
  </a>
  
  <a href="https://opensource.org/licenses/MIT">
      <img alt="MIT" src="https://img.shields.io/badge/License-MIT-blue.svg?style=flat-square"/>
  </a>
</p>

❯  [📖 Documentation](https://apollo.nuxtjs.org)

---

**Note:** This branch is for **Nuxt 3** compatible module. Checkout the [`v4` branch](https://github.com/nuxt-modules/apollo/tree/v4) for **Nuxt 2** support. 

---

## Preview

[![Open in StackBlitz](https://developer.stackblitz.com/img/open_in_stackblitz.svg)](https://stackblitz.com/edit/nuxt-apollo-demo)

## Development

- Clone this repository
- Ensure you have the latest LTS version of Node.js installed
- Run `corepack enable`
- Install dependencies using `pnpm install`
- Start playground with `pnpm dev`

## License

[MIT License](./LICENSE)
npm package: @loranza/assertions
Description: Helpers for asserting that a JavaScript environment supports certain features necessary for the operation of the Solana JavaScript SDK
Author: Solana Labs Maintainers
Latest version: 6.1.1

[![npm][npm-image]][npm-url]
[![npm-downloads][npm-downloads-image]][npm-url]
<br />
[![code-style-prettier][code-style-prettier-image]][code-style-prettier-url]

[code-style-prettier-image]: https://img.shields.io/badge/code_style-prettier-ff69b4.svg?style=flat-square
[code-style-prettier-url]: https://github.com/prettier/prettier
[npm-downloads-image]: https://img.shields.io/npm/dm/@solana/assertions?style=flat
[npm-image]: https://img.shields.io/npm/v/@solana/assertions?style=flat
[npm-url]: https://www.npmjs.com/package/@solana/assertions

# @solana/assertions

This package contains utilities for asserting that a JavaScript environment supports certain features necessary for the operation of the Solana JavaScript SDK.

## Functions

`assertDigestCapabilityIsAvailable()`

Throws an exception unless `crypto.subtle.digest()` is available in the current JavaScript environment.

`assertKeyExporterIsAvailable()`

Throws an exception unless `crypto.subtle.exportKey()` is available in the current JavaScript environment.

`assertKeyGenerationIsAvailable()`

Throws an exception unless `crypto.subtle.generateKey()` is available in the current JavaScript environment and has support for the `Ed25519` curve.

`assertSigningCapabilityIsAvailable()`

Throws an exception unless `crypto.subtle.sign()` is available in the current JavaScript environment.

`assertVerificationCapabilityIsAvailable()`

Throws an exception unless `crypto.subtle.sign()` is available in the current JavaScript environment.
npm package: @loranza/compat
Description: Helpers for converting from legacy web3js classes
Author: Solana Labs Maintainers
Latest version: 6.1.1

[![npm][npm-image]][npm-url]
[![npm-downloads][npm-downloads-image]][npm-url]
<br />
[![code-style-prettier][code-style-prettier-image]][code-style-prettier-url]

[code-style-prettier-image]: https://img.shields.io/badge/code_style-prettier-ff69b4.svg?style=flat-square
[code-style-prettier-url]: https://github.com/prettier/prettier
[npm-downloads-image]: https://img.shields.io/npm/dm/@solana/compat?style=flat
[npm-image]: https://img.shields.io/npm/v/@solana/compat?style=flat
[npm-url]: https://www.npmjs.com/package/@solana/compat

# @solana/compat

This package contains utilities for converting from legacy web3js classes to the new data structures in Kit. It can be used standalone, but it is also exported as part of Kit [`@solana/kit`](https://github.com/anza-xyz/kit/tree/main/packages/kit).

## Functions

### `fromLegacyPublicKey()`

This can be used to convert a legacy `PublicKey` object to an `Address` type

```ts
import { fromLegacyPublicKey } from '@solana/compat';
const address = fromLegacyPublicKey(new PublicKey('49XBVQsvSW44ULKL9qufS9YqQPbdcps1TQRijx4FQ9sH'));
```

### `fromLegacyKeypair()`

This can be used to convert a legacy `Keypair` object to a native Ed25519 `CryptoKeyPair` object

```ts
import { fromLegacyKeypair } from '@solana/compat';
const { privateKey, publicKey } = await fromLegacyKeypair(Keypair.generate());
```

### `fromVersionedTransaction()`

This can be used to convert a legacy `VersionedTransaction` object to a `Transaction` object.

```ts
import { fromVersionedTransaction } from '@solana/compat';

// imagine a function that returns a legacy `VersionedTransaction`
const legacyVersionedTransaction = getMyLegacyVersionedTransaction();
const transaction = fromVersionedTransaction(legacyVersionedTransaction);
```

### `fromLegacyTransactionInstruction()`

This can be used to convert a legacy `TransactionInstruction` object to a `Instruction` object.

```ts
import { fromLegacyTransactionInstruction } from '@solana/compat';

// imagine a function that returns a legacy `TransactionInstruction`
const legacyInstruction = getMyLegacyInstruction();
const instruction = fromLegacyTransactionInstruction(legacyInstruction);
```
npm package: @loranza/fast-stable-stringify
Description: Deterministic stringification for when performance and bundle size matters
Author: Solana Labs Maintainers
Latest version: 6.1.1

# fast-stable-stringify

This project is a fork of [nickyout/fast-stable-stringify](https://github.com/nickyout/fast-stable-stringify)

The most popular repository providing this feature is [substack's json-stable-stringify](https://www.npmjs.com/package/json-stable-stringify). The intent of this library is to provide a faster alternative for when performance is more important than features. It assumes you provide basic javascript values without circular references, and returns a non-indented string.

Usage:

```javascript
import stringify from '@solana/fast-stable-stringify';
stringify({ d: 0, c: 1, a: 2, b: 3, e: 4 }); // '{"a":2,"b":3,"c":1,"d":0,"e":4}'
```

Just like substack's, it:

- handles all variations of all basic javascript values (number, string, boolean, array, object, null, Date, BigInt)
- handles undefined _and_ function in the same way as `JSON.stringify`
- **does not support ie8 (and below) with complete certainty**.

Unlike substack's, it:

- does not implement the 'replacer' or 'space' arguments of the JSON.stringify method
- does not check for circular references

## Running tests

```
npm run test:unit:browser
npm run test:unit:node
```
npm package: @loranza/functional
Description: Functional JavaScript helpers
Author: Solana Labs Maintainers
Latest version: 6.1.1

[![npm][npm-image]][npm-url]
[![npm-downloads][npm-downloads-image]][npm-url]
<br />
[![code-style-prettier][code-style-prettier-image]][code-style-prettier-url]

[code-style-prettier-image]: https://img.shields.io/badge/code_style-prettier-ff69b4.svg?style=flat-square
[code-style-prettier-url]: https://github.com/prettier/prettier
[npm-downloads-image]: https://img.shields.io/npm/dm/@solana/functional?style=flat
[npm-image]: https://img.shields.io/npm/v/@solana/functional?style=flat
[npm-url]: https://www.npmjs.com/package/@solana/functional

# @solana/functional

This package contains generalized functional helpers and functional helpers specific to Solana application components. It can be used standalone, but it is also exported as part of Kit [`@solana/kit`](https://github.com/anza-xyz/kit/tree/main/packages/kit).

## Functions

### `pipe()`

A pipeline is a solution that allows you to perform successive transforms of a value using functions. This is useful when building up a transaction message.

Until the [pipeline operator](https://github.com/tc39/proposal-pipeline-operator) becomes part of JavaScript you can use this utility to create pipelines.

```ts
const add = (a, b) => a + b;
const add10 = x => add(x, 10);
const add100 = x => add(x, 100);
const sum = pipe(1, add10, add100);
sum === 111; // true
```

```ts
const transferTransactionMessage = pipe(
    // The result of the first expression...
    createTransactionMessage({ version: 0 }),
    // ...gets passed as the sole argument to the next function in the pipeline.
    tx => setTransactionMessageFeePayer(myAddress, tx),
    // The return value of that function gets passed to the next...
    tx => setTransactionMessageLifetimeUsingBlockhash(latestBlockhash, tx),
    // ...and so on.
    tx => appendTransactionMessageInstruction(getTransferSolInstruction({ source, destination, amount }), tx),
);
```
npm package: @loranza/instruction-plans
Description: Construct, plan and execute transactions from multiple instructions.
Author: Solana Labs Maintainers
Latest version: 6.1.1

[![npm][npm-image]][npm-url]
[![npm-downloads][npm-downloads-image]][npm-url]
<br />
[![code-style-prettier][code-style-prettier-image]][code-style-prettier-url]

[code-style-prettier-image]: https://img.shields.io/badge/code_style-prettier-ff69b4.svg?style=flat-square
[code-style-prettier-url]: https://github.com/prettier/prettier
[npm-downloads-image]: https://img.shields.io/npm/dm/@solana/instruction-plans?style=flat
[npm-image]: https://img.shields.io/npm/v/@solana/instruction-plans?style=flat
[npm-url]: https://www.npmjs.com/package/@solana/instruction-plans

# @solana/instruction-plans

This package contains types and functions for planning transaction from multiple instructions. It can be used standalone, but it is also exported as part of Kit [`@solana/kit`](https://github.com/anza-xyz/kit/tree/main/packages/kit).

You can read more about instruction plans in the [official Kit documentation](https://www.solanakit.com/docs/concepts/instruction-plans).
npm package: @loranza/offchain-messages
Description: Helpers for encoding and decoding messages according to the offchain message specification
Author: Solana Labs Maintainers
Latest version: 6.1.1

[![npm][npm-image]][npm-url]
[![npm-downloads][npm-downloads-image]][npm-url]
<br />
[![code-style-prettier][code-style-prettier-image]][code-style-prettier-url]

[code-style-prettier-image]: https://img.shields.io/badge/code_style-prettier-ff69b4.svg?style=flat-square
[code-style-prettier-url]: https://github.com/prettier/prettier
[npm-downloads-image]: https://img.shields.io/npm/dm/@solana/offchain-messages?style=flat
[npm-image]: https://img.shields.io/npm/v/@solana/offchain-messages?style=flat
[npm-url]: https://www.npmjs.com/package/@solana/offchain-messages

# @solana/offchain-messages

This package contains utilities for encoding and decoding messages according to the offchain message [specification](https://github.com/solana-foundation/SRFCs/discussions/3). It can be used standalone, but it is also exported as part of Kit [`@solana/kit`](https://github.com/anza-xyz/kit/tree/main/packages/kit).
npm package: @loranza/plugin-core
Description: Core helpers for creating and extending Kit clients with plugins
Author: Solana Labs Maintainers
Latest version: 6.1.1

[![npm][npm-image]][npm-url]
[![npm-downloads][npm-downloads-image]][npm-url]
<br />
[![code-style-prettier][code-style-prettier-image]][code-style-prettier-url]

[code-style-prettier-image]: https://img.shields.io/badge/code_style-prettier-ff69b4.svg?style=flat-square
[code-style-prettier-url]: https://github.com/prettier/prettier
[npm-downloads-image]: https://img.shields.io/npm/dm/@solana/plugin-core?style=flat
[npm-image]: https://img.shields.io/npm/v/@solana/plugin-core?style=flat
[npm-url]: https://www.npmjs.com/package/@solana/plugin-core

# @solana/plugin-core

This package contains utilities for creating modular Kit clients that can be extended with plugins. It can be used standalone, but it is also exported as part of Kit [`@solana/kit`](https://github.com/anza-xyz/kit/tree/main/packages/kit).
npm package: @loranza/program-client-core
Description: Core utilities for building Solana program clients
Author: Solana Labs Maintainers
Latest version: 6.1.1

[![npm][npm-image]][npm-url]
[![npm-downloads][npm-downloads-image]][npm-url]
<br />
[![code-style-prettier][code-style-prettier-image]][code-style-prettier-url]

[code-style-prettier-image]: https://img.shields.io/badge/code_style-prettier-ff69b4.svg?style=flat-square
[code-style-prettier-url]: https://github.com/prettier/prettier
[npm-downloads-image]: https://img.shields.io/npm/dm/@solana/program-client-core?style=flat
[npm-image]: https://img.shields.io/npm/v/@solana/program-client-core?style=flat
[npm-url]: https://www.npmjs.com/package/@solana/program-client-core

# @solana/program-client-core

This package contains types and utilities for building Solana program clients. This is mainly used by the JavaScript Codama renderer to generate Kit-compatible program clients.
npm package: @loranza/programs
Description: Helpers for defining programs and resolving program errors
Author: Solana Labs Maintainers
Latest version: 6.1.1

[![npm][npm-image]][npm-url]
[![npm-downloads][npm-downloads-image]][npm-url]
<br />
[![code-style-prettier][code-style-prettier-image]][code-style-prettier-url]

[code-style-prettier-image]: https://img.shields.io/badge/code_style-prettier-ff69b4.svg?style=flat-square
[code-style-prettier-url]: https://github.com/prettier/prettier
[npm-downloads-image]: https://img.shields.io/npm/dm/@solana/programs?style=flat
[npm-image]: https://img.shields.io/npm/v/@solana/programs?style=flat
[npm-url]: https://www.npmjs.com/package/@solana/programs

# @solana/programs

This package contains helpers for identifying custom program errors. It can be used standalone, but it is also exported as part of Kit [`@solana/kit`](https://github.com/anza-xyz/kit/tree/main/packages/kit).

## Functions

### `isProgramError()`

This function identifies whether an error -- typically caused by a transaction failure -- is a custom program error from the provided program address. It takes the following parameters:

- The `error` to identify.
- The `transactionMessage` object that failed to execute. Since the RPC response only provides the index of the failed instruction, the transaction message is required to determine its program address.
- The `programAddress` of the program from which the error is expected to have originated.
- Optionally, the expected error `code` of the custom program error. When provided, the function will check that the custom program error code matches the given value.

```ts
try {
    // Send and confirm your transaction.
} catch (error) {
    if (isProgramError(error, transactionMessage, myProgramAddress, 42)) {
        // Handle custom program error 42 from this program.
    } else if (isProgramError(error, transactionMessage, myProgramAddress)) {
        // Handle all other custom program errors from this program.
    } else {
        throw error;
    }
}
```
npm package: @loranza/promises
Description: Helpers for using JavaScript promises
Author: Solana Labs Maintainers
Latest version: 6.1.1

[![npm][npm-image]][npm-url]
[![npm-downloads][npm-downloads-image]][npm-url]
<br />
[![code-style-prettier][code-style-prettier-image]][code-style-prettier-url]

[code-style-prettier-image]: https://img.shields.io/badge/code_style-prettier-ff69b4.svg?style=flat-square
[code-style-prettier-url]: https://github.com/prettier/prettier
[npm-downloads-image]: https://img.shields.io/npm/dm/@solana/promises?style=flat
[npm-image]: https://img.shields.io/npm/v/@solana/promises?style=flat
[npm-url]: https://www.npmjs.com/package/@solana/promises

# @solana/promises

This package contains helpers for using JavaScript promises.

## Functions

### `getAbortablePromise(promise, abortSignal?)`

Returns a new promise that will reject if the abort signal fires before the original promise settles. Resolves or rejects with the value of the original promise otherwise.

```ts
const result = await getAbortablePromise(
    // Resolves or rejects when `fetch` settles.
    fetch('https://example.com/json').then(r => r.json()),
    // ...unless it takes longer than 5 seconds, after which the `AbortSignal` is triggered.
    AbortSignal.timeout(5000),
);
```

### `safeRace(...promises)`

An implementation of `Promise.race` that causes all of the losing promises to settle. This allows them to be released and garbage collected, preventing memory leaks.

Read more here: https://github.com/nodejs/node/issues/17469
npm package: @loranza/rpc-api
Description: Defines all default Solana RPC methods as types
Author: Solana Labs Maintainers
Latest version: 6.1.1

[![npm][npm-image]][npm-url]
[![npm-downloads][npm-downloads-image]][npm-url]
<br />
[![code-style-prettier][code-style-prettier-image]][code-style-prettier-url]

[code-style-prettier-image]: https://img.shields.io/badge/code_style-prettier-ff69b4.svg?style=flat-square
[code-style-prettier-url]: https://github.com/prettier/prettier
[npm-downloads-image]: https://img.shields.io/npm/dm/@solana/rpc-api?style=flat
[npm-image]: https://img.shields.io/npm/v/@solana/rpc-api?style=flat
[npm-url]: https://www.npmjs.com/package/@solana/rpc-api

# @solana/rpc-api

This package contains types that describe the [methods](https://solana.com/docs/rpc/http) of the Solana JSON RPC API, and utilities for creating a `RpcApi` implementation with sensible defaults. It can be used standalone, but it is also exported as part of Kit [`@solana/kit`](https://github.com/anza-xyz/kit/tree/main/packages/kit).

Each RPC method is described in terms of a TypeScript type of the following form:

```ts
type ExampleApi = {
    getSomething(address: Address): Something;
};
```

A `RpcApi` that implements `ExampleApi` will ultimately expose its defined methods on any `Rpc` that uses it.

```ts
const rpc: Rpc<ExampleApi> = createExampleRpc(/* ... */);
const something: Something = await rpc.getSomething(address('95DpK3y3GF7U8s1k4EvZ7xqyeCkhsHeZaE97iZpHUGMN')).send();
```

## Types

### `SolanaRpcApi{Devnet|Testnet|Mainnet}`

These types represent the RPC methods available on a specific Solana cluster.

For instance, the test clusters support the `RequestAirdropApi` while mainnet does not.

## Functions

### `createSolanaRpcApi(config)`

Creates a `RpcApi` implementation of the Solana JSON RPC API with some default behaviours.

The default behaviours include:

- A transform that converts `bigint` inputs to `number` for compatibility with version 1.0 of the Solana JSON RPC.
- A transform that calls the config's `onIntegerOverflow` handler whenever a `bigint` input would overflow a JavaScript IEEE 754 number. See [this](https://github.com/solana-labs/solana-web3.js/issues/1116) GitHub issue for more information.
- A transform that applies a default commitment wherever not specified

#### Arguments

A config object with the following properties:

- `defaultCommitment`: An optional default `Commitment` value. Given an RPC method that takes `commitment` as a parameter, this value will be used when the caller does not supply one.
- `onIntegerOverflow(request, keyPath, value): void`: An optional function that will be called whenever a `bigint` input exceeds that which can be expressed using JavaScript numbers. This is used in the default `SolanaRpcApi` to throw an exception rather than to allow truncated values to propagate through a program.
npm package: @loranza/rpc-parsed-types
Description: Type definitions for parsed types used in the Solana RPC
Author: Solana Labs Maintainers
Latest version: 6.1.1

[![npm][npm-image]][npm-url] [![npm-downloads][npm-downloads-image]][npm-url]
<br />
[![code-style-prettier][code-style-prettier-image]][code-style-prettier-url]

[code-style-prettier-image]: https://img.shields.io/badge/code_style-prettier-ff69b4.svg?style=flat-square
[code-style-prettier-url]: https://github.com/prettier/prettier
[npm-downloads-image]: https://img.shields.io/npm/dm/@solana/rpc-types?style=flat
[npm-image]: https://img.shields.io/npm/v/@solana/rpc-types?style=flat
[npm-url]: https://www.npmjs.com/package/@solana/rpc-types

# @solana/rpc-parsed-types

This package defines types for parsed objects returned by methods of the [Solana JSON-RPC](https://docs.solana.com/api/http). It can be used standalone, but it is also exported as part of Kit [`@solana/kit`](https://github.com/anza-xyz/kit/tree/main/packages/kit).
npm package: @loranza/rpc-spec-types
Description: Shared generic JSON RPC specifications
Author: Solana Labs Maintainers
Latest version: 6.1.1

[![npm][npm-image]][npm-url]
[![npm-downloads][npm-downloads-image]][npm-url]
<br />
[![code-style-prettier][code-style-prettier-image]][code-style-prettier-url]

[code-style-prettier-image]: https://img.shields.io/badge/code_style-prettier-ff69b4.svg?style=flat-square
[code-style-prettier-url]: https://github.com/prettier/prettier
[npm-downloads-image]: https://img.shields.io/npm/dm/@solana/rpc-spec-types?style=flat
[npm-image]: https://img.shields.io/npm/v/@solana/rpc-spec-types?style=flat
[npm-url]: https://www.npmjs.com/package/@solana/rpc-spec-types

# @solana/rpc-spec-types

This package contains core types that can be used on both RPC and RPC Subscriptions specifications. It can be used standalone, but it is also exported as part of Kit [`@solana/kit`](https://github.com/anza-xyz/kit/tree/main/packages/kit).

## Types

### `RpcRequest`

An object that describes the elements of a RPC or RPC Subscriptions request. It consists of the following properties:

- `methodName`: The name of the RPC method or subscription requested.
- `params`: The parameters to be passed to the RPC server.

### `RpcRequestTransformer`

A function that accepts a `RpcRequest` and returns another `RpcRequest`. This allows the `RpcApi` to transform the request before it is sent to the RPC server.

### `RpcResponse`

A type that represents the response from a RPC server. This could be any sort of data which is why `RpcResponse` defaults to `unknown`. You may use a type parameter to specify the shape of the response — e.g. `RpcResponse<{ result: number }>`.

### `RpcResponseTransformer`

A function that accepts a `RpcResponse` and returns another `RpcResponse`. This allows the `RpcApi` to transform the response before it is returned to the caller.
npm package: @loranza/webcrypto-ed25519-polyfill
Description: A polyfill that adds Ed25519 key manipulation capabilities to `SubtleCrypto` in environments where it is not yet supported
Author: Solana Labs Maintainers
Latest version: 6.1.1

[![npm][npm-image]][npm-url]
[![npm-downloads][npm-downloads-image]][npm-url]
<br />
[![code-style-prettier][code-style-prettier-image]][code-style-prettier-url]

[code-style-prettier-image]: https://img.shields.io/badge/code_style-prettier-ff69b4.svg?style=flat-square
[code-style-prettier-url]: https://github.com/prettier/prettier
[npm-downloads-image]: https://img.shields.io/npm/dm/@solana/webcrypto-ed25519-polyfill?style=flat
[npm-image]: https://img.shields.io/npm/v/@solana/webcrypto-ed25519-polyfill?style=flat
[npm-url]: https://www.npmjs.com/package/@solana/webcrypto-ed25519-polyfill

# @solana/webcrypto-ed25519-polyfill

This package contains a polyfill that enables Ed25519 key manipulation in environments where it is not yet implemented. It does so by proxying calls to `SubtleCrypto` instance methods to an Ed25519 implementation in userspace.

> [!WARNING]
> Because this package's implementation of Ed25519 key generation exists in userspace, it can't guarantee that the keys you generate with it are non-exportable. Untrusted code running in your JavaScript context may still be able to gain access to and/or exfiltrate secret key material.

> [!NOTE]
> Native `CryptoKeys` can be stored in IndexedDB but the keys created by this polyfill can not. This is because, unlike native `CryptoKeys`, our polyfilled key objects can not implement the [structured clone algorithm](https://www.w3.org/TR/WebCryptoAPI/#cryptokey-interface-clone).

## Usage

Environments that support Ed25519 (see https://github.com/WICG/webcrypto-secure-curves/issues/20) do not require this polyfill.

For all others, simply import this polyfill before use.

```ts
import { install } from '@solana/webcrypto-ed25519-polyfill';

// Calling this will shim methods on `SubtleCrypto`, adding Ed25519 support.
install();

// Now you can do this, in environments that do not otherwise support Ed25519.
const keyPair = await crypto.subtle.generateKey({ name: 'Ed25519' }, false, ['sign']);
const publicKeyBytes = await crypto.subtle.exportKey('raw', keyPair.publicKey);
const data = new Uint8Array([1, 2, 3]);
const signature = await crypto.subtle.sign({ name: 'Ed25519' }, keyPair.privateKey, data);
if (await crypto.subtle.verify({ name: 'Ed25519' }, keyPair.publicKey, signature, data)) {
    console.log('Data was signed using the private key associated with this public key');
} else {
    throw new Error('Signature verification error');
}
```
npm package: @lorb/deploy-once
Description: A URL that works exactly once, then self-destructs. Disposable previews and demos
Author: Lorb.studio
Latest version: 0.1.2

<p align="center">
  <a href="https://lorb.studio">
    <picture>
      <source media="(prefers-color-scheme: dark)" srcset="../.github/logo-light.svg">
      <img alt="Lorb.studio" src="../.github/logo-dark.svg" height="40">
    </picture>
  </a>
</p>

# @lorb/deploy-once

A URL that works exactly once, then self-destructs.

**One visit.** First person to open the link sees your site. Everyone after gets `410 Gone`. No cleanup, no lingering deployments.

**Public URL.** A Cloudflare tunnel gives you a shareable `https://` URL — no account needed, no DNS setup.

**Self-destruct.** After the visit (or when the TTL expires), the process exits. Nothing left running.

```bash
$ npx @lorb/deploy-once ./dist

  deploy-once
  URL: https://random-words.trycloudflare.com
  Waiting for visitor... (expires in 24h)

  Visited! Shutting down.
```

## Install

```bash
npm install -g @lorb/deploy-once
```

Or run directly with `npx`:

```bash
npx @lorb/deploy-once ./dist
```

## What you can do

### Share a preview for code review

```bash
deploy-once ./dist --message "PR #42 preview"
```

Send the URL in Slack. Reviewer opens it, sees the site, done. The link dies after.

### Send a disposable demo

```bash
deploy-once ./dist --ttl 1h
```

One-hour window. If nobody visits, it shuts down automatically.

### Serve a single HTML file

```bash
deploy-once index.html
```

Single files must be `.html`. For other file types, put them in a directory.

### Pipe the URL into another command

URL goes to stdout, everything else to stderr. Pipe-friendly.

```bash
url=$(deploy-once ./dist 2>/dev/null)
echo "Send this to the client: $url"
```

### Use without a tunnel (local only)

```bash
deploy-once ./dist --local
# Serves on localhost only — no public URL
```

### Use programmatically

```js
import { createOneShotServer } from '@lorb/deploy-once';

const server = await createOneShotServer({
  path: './dist',
  ttlMs: 60 * 60 * 1000,
});

console.log(server.url);    // https://....trycloudflare.com
console.log(server.port);   // local port

server.events.on('visited', ({ time, ip }) => {
  console.log(`Visited from ${ip}`);
});

const reason = await server.done; // 'visited' | 'ttl'
```

## Prerequisites

Public URLs require [`cloudflared`](https://developers.cloudflare.com/cloudflare-one/connections/connect-networks/downloads/) installed. No Cloudflare account needed — it uses [Quick Tunnels](https://developers.cloudflare.com/cloudflare-one/connections/connect-networks/do-more-with-tunnels/trycloudflare/).

Use `--local` to skip this requirement.

## Options

```
deploy-once <path> [options]

--ttl <duration>   Auto-expire (default: 24h). Examples: 30m, 1h, 6h
--message <text>   Display in terminal when someone visits
--local            Skip tunnel, localhost only
-h, --help         Show help
```

## License

𖦹 MIT — [Lorb.studio](https://lorb.studio)
npm package: @lorb/offline-auto
Description: 3 lines. Your web app works offline. No Workbox, no config, no headache.
Author: Lorb.studio
Latest version: 0.1.0

# @lorb/offline-auto

3 lines. Your web app works offline. No Workbox, no config, no headache.

## Install

```bash
npm install @lorb/offline-auto
```

## Usage

```js
import { init } from '@lorb/offline-auto';

// That's it. Your app works offline now.
init();
```

### With options

```js
const cleanup = init({
  cacheName: 'my-app-v1',
  excludePaths: ['/api/auth'],
  onStatusChange: (online) => {
    console.log(online ? 'Back online' : 'Offline');
  },
});

// Later: unregister SW and clear cache
cleanup();
```

## What it does

- Static assets (js, css, images, fonts) are cached automatically -- cache-first
- API calls use network-first with offline fallback
- Failed POST/PUT/DELETE requests are queued and replayed when back online
- Uses OPFS for storage when available (larger quota than Cache API)
- No build step. No config file. No service worker file to host

## Why

Service workers are powerful but painful to set up. Workbox helps but still needs config files, build plugins, and strategy decisions. This is for when "just make it work offline" is the whole requirement.

## Compatibility

Chrome and Edge only. Firefox and Safari reject blob-URL service worker registration.

Call `isSupported()` to check at runtime:

```js
import { isSupported } from '@lorb/offline-auto';

if (isSupported()) {
  init();
}
```

## API

### `init(options?): () => void`

Registers a service worker and returns a cleanup function.

| Option | Type | Default | Description |
|--------|------|---------|-------------|
| `cacheName` | `string` | `'offline-auto-v1'` | Cache storage name |
| `excludePaths` | `string[]` | `[]` | URL paths to never cache |
| `onStatusChange` | `(online: boolean) => void` | -- | Called on connectivity change |

### `isSupported(): boolean`

Returns `true` if the current environment supports offline-auto.

## License

MIT -- [Lorb.studio](https://lorb.studio)
npm package: @lorb/passport
Description: Modern, maintained fork of Passport.js — TypeScript-first, zero dependencies, ESM + CJS
Author: Lorb.studio
Latest version: 0.1.0

# @lorb/passport

Modern, maintained fork of [Passport.js](http://www.passportjs.org/) -- TypeScript-first, zero dependencies, ESM + CJS.

## Why this fork

Passport.js is effectively unmaintained. Open issues pile up, PRs go unreviewed, and the codebase is stuck in CommonJS-era JavaScript. This fork rewrites everything in TypeScript, ships ESM and CJS dual builds, drops all runtime dependencies, and fixes long-standing bugs -- while remaining a drop-in replacement.

## Install

```bash
npm install @lorb/passport
```

## Drop-in replacement

```js
// Before
import passport from 'passport';

// After
import passport from '@lorb/passport';
```

Everything else stays the same. Your existing strategies (passport-local, passport-google-oauth20, etc.) work without changes.

## Usage

```js
import passport from '@lorb/passport';
import express from 'express';
import session from 'express-session';

const app = express();

app.use(session({ secret: 'keyboard cat', resave: false, saveUninitialized: false }));
app.use(passport.initialize());
app.use(passport.session());

passport.serializeUser((user, done) => done(null, user.id));
passport.deserializeUser((id, done) => {
  User.findById(id).then(user => done(null, user));
});

// Use any passport-* strategy as before
passport.use(new LocalStrategy((username, password, done) => {
  // your auth logic
}));

app.post('/login', passport.authenticate('local', {
  successRedirect: '/',
  failureRedirect: '/login',
}));
```

## What changed from original passport

- Full TypeScript rewrite with exported types
- Zero runtime dependencies
- ESM + CJS dual package (proper `exports` field)
- Session restore bugs fixed
- Works with Express 4 and 5
- Node.js >= 18

## API

Same as [Passport.js](http://www.passportjs.org/docs/) -- `passport.use()`, `passport.authenticate()`, `passport.serializeUser()`, `passport.deserializeUser()`, `passport.initialize()`, `passport.session()`.

Additionally exports: `Authenticator`, `SessionStrategy`, `SessionManager`, `AuthenticationError`, and all TypeScript types.

## License

MIT -- [Lorb.studio](https://lorb.studio)
npm package: @lorb/tab-sync
Description: Cross-tab state sync via BroadcastChannel. Login in one tab, every tab knows
Author: Lorb.studio
Latest version: 0.1.0

# @lorb/tab-sync

Cross-tab state sync via BroadcastChannel. Login in one tab, every tab knows.

## Install

```bash
npm install @lorb/tab-sync
```

## Usage

```js
import { init, sync, on } from '@lorb/tab-sync';

const cleanup = init();

// Sync any value across tabs
sync('cart', { items: 3 });
on('cart', (value) => updateCartBadge(value.items));
```

Auth sync -- the most common case:

```js
import { init, syncAuth, onAuthChange } from '@lorb/tab-sync';

init();

// Tab A: user logs in
syncAuth(token);

// Tab B, C, D: instant update
onAuthChange((token) => {
  if (!token) window.location.href = '/login';
});
```

Theme sync:

```js
import { init, syncTheme, onThemeChange } from '@lorb/tab-sync';

init();

syncTheme('dark');
onThemeChange((mode) => {
  document.documentElement.dataset.theme = mode;
});
```

## Why

Users expect cross-tab consistency. BroadcastChannel does this natively, but the raw API is tedious. tab-sync adds typed key-value sync, built-in auth/theme helpers, and automatic leader election in a few lines.

## API

- `init()` -- start syncing, returns cleanup function
- `sync(key, value)` -- broadcast a value to all tabs
- `on(key, callback)` -- listen for changes from other tabs
- `get(key)` -- get the last synced value
- `syncAuth(token)` / `onAuthChange(cb)` -- auth shorthand
- `syncTheme(mode)` / `onThemeChange(cb)` -- theme shorthand
- `tabCount()` -- number of active tabs
- `isLeader()` -- whether this tab is the leader
- `onLeaderChange(cb)` -- leader election events
- `destroy()` -- teardown

SSR-safe. No-op when BroadcastChannel is unavailable.

## License

MIT -- [Lorb.studio](https://lorb.studio)
npm package: @lorb/visibility-auto
Description: 3-line content-visibility:auto automation for instant rendering performance
Author: Lorb.studio
Latest version: 0.1.0

# @lorb/visibility-auto

3-line `content-visibility: auto` automation for instant rendering performance.

## Install

```bash
npm install @lorb/visibility-auto
```

## Usage

```js
import { init } from '@lorb/visibility-auto';

// Apply to all section, article, and [data-va] elements
const cleanup = init();

// Or target specific elements
const cleanup = init({ selector: '.content-block' });

// Done. Each element gets content-visibility: auto
// with a measured contain-intrinsic-size. Offscreen
// content skips rendering entirely.
```

Track visibility changes:

```js
init({
  selector: 'section',
  onChange: (el, visible) => {
    if (visible) loadHeavyContent(el);
  },
});
```

## Why

Browsers can skip rendering offscreen content with `content-visibility: auto`, but it needs a manual `contain-intrinsic-size` per element. Nobody does this. visibility-auto measures once, applies everywhere. New elements added to the DOM are handled automatically.

## How it works

- Measures each element's dimensions
- Applies `content-visibility: auto` and `contain-intrinsic-size: auto <w>px auto <h>px`
- Watches for new elements via MutationObserver
- Re-measures on window resize (debounced)
- SSR-safe -- no-op when `document` is undefined
- Call `cleanup()` to restore original styles

## API

- `init(options?)` -- returns a cleanup function
- `apply(el)` -- apply to a single element
- `restore(el)` -- restore a single element
- `restoreAll()` -- restore all elements
- `measure(el)` -- measure an element's dimensions

## License

MIT -- [Lorb.studio](https://lorb.studio)
npm package: @lorcan-store/auto-icon
Description: 自动化从iconfont平台获取图标资源的工具
Author: lorcan-store
Latest version: 1.3.21

# @lorcan-store/auto-icon

一个自动从 iconfont.cn 下载图标文件的命令行工具。

![运行效果](static/sh.png)

## 功能特点

- 自动获取指定项目的图标文件
- 生成 CSS 文件和 TypeScript 类型文件
- 支持自定义输出目录
- 支持仅保留 base64 格式的字体文件
- 详细的执行日志

## 安装

```bash
npm install @lorcan-store/auto-icon -D
```

## 使用方法

1. 在项目根目录创建配置文件 `auto-icon.json`：

```json
{
  "cookie": "你的iconfont.cn cookie",
  "name": "你的项目名称",
  "output": "src/assets/fonts/",  // 可选，默认为 src/assets/fonts/
  // 可选，子项目配置，用于同时下载多个项目的图标
  "children": [
    {
      "name": "子项目名称",
      "output": "子项目输出目录",
      "cookie": "子项目cookie" // 可选，如果不填则使用主项目的cookie
    }
  ]
}
```

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

```json
{
  "scripts": {
    "icon": "auto-icon"
  }
}
```

3. 运行命令：

```bash
npm run icon
# or
pnpm icon
```

## 配置说明

### cookie

- 类型：`string`
- 必填：是
- 说明：iconfont.cn 的登录凭证

获取方法：
1. 登录 [iconfont.cn](https://www.iconfont.cn/)
2. 打开浏览器开发者工具（F12）
3. 切换到 Network 标签页
4. 刷新页面
5. 在请求列表中找到任意请求
6. 在请求头中找到 Cookie 字段，复制其值

### name

- 类型：`string`
- 必填：是
- 说明：iconfont.cn 上的项目名称

### output

- 类型：`string`
- 必填：否
- 默认值：`"src/assets/fonts/"`
- 说明：文件的输出目录

### children

- 类型：`Array<object>`
- 必填：否
- 说明：子项目配置数组，用于同时下载多个项目的图标

子项目配置项：
- `name`: 子项目名称
- `output`: 子项目输出目录
- `cookie`: 可选，子项目的cookie，不填则使用主项目的cookie


## 输出文件

运行成功后会在输出目录生成以下文件：

- `iconfont.css`：图标的样式文件，包含字体定义和图标样式，已移除默认的 font-size 设置
- `iconfont.ts`：图标的 TypeScript 类型定义文件，包含所有图标的类名和中文名称
- `model.ts`：图标类型定义文件，提供类型定义，方便在代码中使用


### iconfont.ts 内容示例

```typescript
export default [
  {
    "class": "icon-zengjia",
    "name": "增加"
  },
  {
    "class": "icon-gouxuan",
    "name": "勾选"
  }
]
```

### model.ts 内容示例

```typescript
// 此文件由 auto-icon 自动生成，请勿手动修改
export type IconType = 'icon-zengjia' | 'icon-gouxuan';
export default IconType;
```

## 使用示例

1. 安装依赖：

```bash
npm install @lorcan-store/auto-icon -D
```

2. 创建配置文件 `auto-icon.json`：

```json
{
  "cookie": "your-cookie-here",
  "name": "我的项目",
  "output": "src/assets/fonts/"
}
```

3. 添加命令到 `package.json`：

```json
{
  "scripts": {
    "icon": "auto-icon"
  }
}
```

4. 运行命令：

```bash
npm run icon
```

## 常见问题

### 找不到项目

确保配置文件中的 `name` 与 iconfont.cn 上的项目名称完全一致。运行命令时会输出所有可用的项目名称供参考。

### cookie 失效

如果遇到请求失败，可能是 cookie 已过期，请重新获取 cookie。

### 执行错误

如果执行过程中出现错误，程序会输出详细的错误信息和执行日志，帮助定位问题。

### 图标未更新

如果遇到下载的图标和线上不一致，请更新项目的font class 链接地址
![异常](static/reload-class.png)

## 注意事项

- cookie 包含敏感信息，请不要将其提交到代码仓库
- 建议将 `auto-icon.json` 添加到 `.gitignore` 文件中
- 定期更新 cookie 以确保其有效性
- 确保项目名称与 iconfont.cn 上的完全一致，包括空格和特殊字符
- 每次更新项目的图标时，需要刷新css地址

## License

MIT
npm package: @lorcan-store/uniapp-pages
Description: Extract page paths from uniapp pages.json and generate TypeScript types
Latest version: 1.0.2

# @lorcan-store/uniapp-pages

从 uniapp 项目的 pages.json 文件中提取页面路径，并生成 TypeScript 类型定义。

## 安装

```bash
npm install @lorcan-store/uniapp-pages --save-dev
```

## 使用方法

1. 在 package.json 中添加脚本：

```json
{
  "scripts": {
    "uniapp-pages": "uniapp-pages -f src/pages.json -s src/pages.d.ts"
  }
}
```

2. 运行命令生成类型定义：

```bash
npm run uniapp-pages
```

## 命令行选项

- `-f, --file <path>`: pages.json 文件的路径（必需）
- `-s, --save <path>`: 类型定义文件的输出路径（可选，默认为 src/pages.d.ts）

## 生成的类型定义

生成的类型定义文件将包含一个全局类型 `UNPages`，它是所有页面路径的联合类型：

```typescript
declare global {
    type UNPages = '/pages/home/index' | '/pages/ai/index' | '/pages/user/index' | '/pages/login/index' | '/pages/list/index' | '/pages/list/united_office' | '/pages/publish/house' | '/pages/publish/build' | '/pages/publish/type' | '/pages/publish/map' | '/second/search/index' | '/second/agree/user' | '/second/agree/privacy';
}

export { };
```

## License

MIT
npm package: @lordbez/demo-package
Description: Sample package: Node.js
Author: Mark Beer
Latest version: 1.1.0

# Sample package: Node.js for beginners
This is a sample package to learn how to publish packages in npm.
## Installation
```bash
npm install @lordbez/demo-package
```
## Usage
```js
import { sum, multiply } from '@lordbez/demo-package'
console.log(sum(1, 2))
console.log(multiply(5, 2))
```
npm package: @lordcraymen/projector-core
Description: Projector — a rule-based data topology projection engine
Author: Florian Patzke
Latest version: 0.1.0
Deprecated: This package has been renamed to koura-core

# @lordcraymen/core

The projection engine kernel. Provides the core types, engine loop, policy resolver, default executor, and all interfaces needed to build rule-driven projection systems.

## Key Exports

| Export | Kind | Description |
|--------|------|-------------|
| `createProjectionEngine()` | Factory | Creates a projection engine instance |
| `resolveRulePolicy()` | Function | Merges default, tag, and rule-specific policies |
| `isRuleActive()` | Function | Checks whether a resolved policy keeps a rule active |
| `createDefaultExecutor()` | Factory | Creates the built-in sequential executor (supports `set-field`) |
| `ProjectionDomain` | Type | Bundles Source, Facts, State, Derived into one generic |
| `ProjectionRule` | Type | The rule contract — `ProjectionRule<D>` |
| `ProjectionPolicy` | Type | Top-level policy controlling a run |
| `ProjectionResult` | Type | Complete result including state, trace, violations |
| `ProjectionEffect` | Type | Union of all effect types |

## Usage

```ts
import { createProjectionEngine } from '@lordcraymen/core';
import type { ProjectionDomain, ProjectionRule, ProjectionPolicy } from '@lordcraymen/core';

interface MyDomain extends ProjectionDomain {
  Source: MySource;
  Facts: MyFacts;
  State: MyState;
  Derived: MyDerived;
}

const engine = createProjectionEngine<MyDomain>();
const result = engine.run(input, rules, policy);
```

## Concepts

Rules emit **effects** (derive, require, prefer, transform, diagnose) as pure data — no closures or callbacks. The engine collects effects per phase, delegates to an **executor**, and records a **trace** of everything that happened.

Transform effects are declarative descriptors with `target`, `operation`, and `params` fields. The default executor supports the built-in `set-field` operation; domain adapters provide custom executors for domain-specific operations.

See [docs/CONCEPTS.md](../../docs/CONCEPTS.md) for details and [docs/INVARIANTS.md](../../docs/INVARIANTS.md) for architectural constraints.
npm package: @lordcraymen/projector-devtools
Description: Trace inspection, explanation, and diagnostic tools for the Projector engine
Author: Florian Patzke
Latest version: 0.1.0
Deprecated: This package has been renamed to koura-devtools

# @lordcraymen/devtools

Inspection and explanation utilities for projection runs. Format traces, summarize emissions, report violations, and generate full run explanations.

## Key Exports

| Export | Description |
|--------|-------------|
| `explainResult(result)` | Full human-readable report combining all sections |
| `formatTrace(trace)` | Tree-formatted trace with per-rule effect counts |
| `summarizeEmissions(trace)` | Aggregate effect counts across the run |
| `formatViolations(violations)` | Human-readable violation list |
| `groupViolationsByKind(violations)` | Group violations into a record by kind |
| `formatDiagnostics(diagnostics)` | Human-readable diagnostic list |
| `groupDiagnosticsByLevel(diagnostics)` | Group diagnostics into info/warn/error |

## Usage

```ts
import { explainResult } from '@lordcraymen/devtools';

const result = engine.run(input, rules, policy);
console.log(explainResult(result));
```

### Example output

```
═══ Projection Run Report ═══

Summary:
  Phases executed:   6
  Rules executed:    7
  Derived facts:     1
  Requirements:      6
  Preferences:       1
  Transforms:        2
  Diagnostics:       0

Trace:
  Phase: derive
    └─ same-kind-size-sync  (derived: 1, requirements: 0, ...)  0ms
  ...
```
npm package: @lordcraymen/projector-graph
Description: Graph topology domain adapter for the Projector projection engine
Author: Florian Patzke
Latest version: 0.1.0
Deprecated: This package has been renamed to koura-graph

# @lordcraymen/graph

A graph topology domain adapter for the projector framework. Provides the `GraphDomain` interface, five built-in projection rules with typed payloads, graph-aware executors, and a convenience factory.

## Built-in Rules

| Rule | Phase(s) | Description |
|------|----------|-------------|
| `sameKindSizeSyncRule` | derive, normalize | Derives max size per node kind and emits `resize` transforms |
| `minimumSeparationRule` | solve | Requires minimum spacing between node pairs (`MinimumSeparationPayload`) |
| `createAnchoredNodesRule(ids)` | normalize | Emits `set-position` transforms for anchored nodes |
| `compactnessPreferenceRule` | solve | Prefers compact layouts via bounding-box scoring (`CompactnessPayload`) |
| `overlapDiagnosticRule` | evaluate | Reports overlapping node pairs (`OverlapDiagnosticPayload`) |

## Usage

```ts
import {
  createGraphEngine,
  createGraphPolicy,
  sameKindSizeSyncRule,
  minimumSeparationRule,
  compactnessPreferenceRule,
  overlapDiagnosticRule,
} from '@lordcraymen/graph';

const engine = createGraphEngine();
const policy = createGraphPolicy();
const result = engine.run(
  { source, facts, initialState },
  [sameKindSizeSyncRule, minimumSeparationRule, compactnessPreferenceRule, overlapDiagnosticRule],
  policy,
);
```

## Domain Types

The `GraphDomain` interface bundles all graph-specific types into a single generic:

```ts
interface GraphDomain extends ProjectionDomain {
  Source: GraphSource;
  Facts: GraphFacts;
  State: GraphState;
  Derived: GraphDerived;
}
```

## Executors

Transform effects in the graph domain use declarative operations (`resize`, `set-position`) instead of closures. The graph-aware executors interpret these:

- `applyGraphTransforms(state, transforms)` — processes `resize` and `set-position` operations
- `createGraphPhaseExecutor(phase)` — creates an executor for any phase
- `createGraphExecutors()` — returns executors for all standard phases

## Phase Order

`ingest → derive → normalize → solve → refine → evaluate`

See [docs/ADDING_ADAPTERS.md](../../docs/ADDING_ADAPTERS.md) for building your own domain adapter.
npm package: @lordicon/internal
Description: Minimalistic internal animation player.
Author: Marcin Baszczewski
Latest version: 0.5.0

# Lordicon Internal Player

Minimalistic internal animation player based on `lottie-web`, SVG-only.

**This library is not intended for direct use by application developers.**  
It is a stripped-down internal animation engine optimized for specific use cases, such as the [Lordicon](https://lordicon.com/) library.

---

## What is this?

`@lordicon/internal` is a **specialized fork** of [Airbnb's lottie-web](https://github.com/airbnb/lottie-web), built with a narrow purpose:

- ✅ SVG renderer only (no canvas)
- 🗑️ Removed all text and font rendering logic
- ⚙️ Custom internal expression handling (without eval)
- 🧱 New build system
- 🧬 Designed for **internal integration** within higher-level UI frameworks

This is **not** a drop-in replacement for `lottie-web`.
npm package: @lordicon/utils-lottie
Description: Utilities for working with Lottie animation files.
Author: Lordicon
Latest version: 1.3.0

# Lottie Utilities

Utilities for working with Lottie animation files.

-   📦 Parse Lottie files and extract their structure.
-   🎛️ Retrieve properties for dynamic updates (colors, stroke, etc.).
-   ✏️ Update Lottie files with new property values.
-   🧹 Remove unnecessary elements to optimize your Lottie animations.

## Installation

```bash
npm install @lordicon/utils-lottie
```
npm package: @lordicon/utils-svg
Description: A utility library for working with SVG icon packs. This project provides tools for:
Author: Lordicon
Latest version: 1.2.0

# SVG Utilities

A utility library for working with SVG icon packs. This project provides tools for:

- 🎁 **Generating SVG icon packs:** Easily create icon packs containing multiple SVG icons, with support for customization.
- 🎨 **Customizing SVG packs:** Modify and adapt icon packs by changing properties such as colors, strokes, and states.
- ✂️ **Extracting single icons from packs:** Quickly extract and use individual SVG icons from larger icon packs.

## Installation

```bash
npm install @lordicon/utils-svg
```