open-index/open-npm huggingface dataset:
npm package: @petr-ptacek/js-core
Description: JavaScript and TypeScript utilities.
Latest version: 1.1.0

# JS Core

A TypeScript utility library with full type safety and tree-shaking support. Contains a collection of commonly
used functions for working with arrays, objects, math, type guards, DOM manipulation, and more.

## ✨ Key Features

- 🎯 **Full Type Safety** - All functions are fully typed with TypeScript
- 🌳 **Tree-shaking Friendly** - Import only what you actually need
- 📦 **ESM Only** - Modern ES modules
- 🧪 **Fully Tested** - High test coverage
- 📚 **Documentation** - TSDoc comments for every function

## 📦 Installation

::: code-group

```shell [npm]
npm install @petr-ptacek/js-core
```

```shell [yarn]
yarn add @petr-ptacek/js-core
```

```shell [pnpm]
pnpm add @petr-ptacek/js-core
```

```shell [bun]
bun add @petr-ptacek/js-core
```

:::

## 🚀 Usage

```ts
import { sum, shuffle, isArray, createUUIDV4 } from "@petr-ptacek/js-core";

console.log(sum(1, 2)); // 3
console.log(shuffle([1, 2, 3, 4])); // [3, 1, 4, 2]
console.log(isArray([1, 2, 3])); // true
console.log(createUUIDV4()); // "550e8400-e29b-41d4-a716-446655440000"
```

## 📖 API Reference

For a complete list of available functions and their documentation, please refer to
the [API Reference](https://petr-ptacek.github.io/js-lab/js-core/api/).

## 📄 License

[MIT License](https://github.com/petr-ptacek/js-lab/blob/main/LICENSE) ©
2026-PRESENT [Petr Ptáček](https://github.com/petr-ptacek)
npm package: @petra-ui/icons
Description: Pixel Perfect Icons
Author: petraui.com
Latest version: 1.0.0

<div align="center">
  <h1>
    <a target="_blank" href="https://petraui.com/icons">PetraUI Icons </>
  </h1>
</div>

### Installation

**npm**

```sh
npm install @petra-ui/icons
```

**yarn**

```sh
yarn add @petra-ui/icons
```

### Usage

First Import your desired icon from the library

```js
import { Home } from '@petra-ui/icons';
```

Once Imported you can then use the icon inside your components like this:

```js
<Home size={20} variant="outlined" color="#000000" strokeWidth={2} />
```

### Icon Props

Each Icon takes the following props:

`variant` (string): Can be `"outlined"` or `"solid"`

`color` (string): Sets the icon color using a color code (e.g.,`"#FF5733"`).

`size` (number): Defines the icon size in pixels.

`strokeWidth` (number, only for `variant="outlined"`): Sets the stroke width for outlined icons.
npm package: @petranto/byok-crypto
Description: Zero-knowledge client-side cryptography for BYOK.cloud vault
Latest version: 0.1.0

# @petranto/byok-crypto

Zero-knowledge client-side cryptography for [BYOK.cloud](https://byok.cloud). All
encryption and key derivation happens entirely in the browser — the server never
sees plaintext keys.

## Installation

```bash
npm install @petranto/byok-crypto argon2-browser
```

`argon2-browser` is a **peer dependency** (WASM-based Argon2 implementation).

## Quick Start

```typescript
import { CryptoVault } from '@petranto/byok-crypto';

// 1. Generate a salt and derive an encryption key from a passphrase
const salt = CryptoVault.generateSalt();
const key  = await CryptoVault.deriveKey('my-passphrase', salt);

// 2. Encrypt an API key
const blob = await CryptoVault.encrypt(key, 'sk-live-abc123...');

// 3. Decrypt it later
const plaintext = await CryptoVault.decrypt(key, blob);

// 4. Verification blob — lets you check a passphrase without decrypting real data
const vBlob = await CryptoVault.createVerificationBlob(key);
const ok    = await CryptoVault.verifyPassphrase(key, vBlob); // true
```

## API

### `CryptoVault.generateSalt(): string`

Returns a random 16-byte salt encoded as Base64.

### `CryptoVault.deriveKey(passphrase, salt): Promise<CryptoKey>`

Derives an AES-256-GCM `CryptoKey` from a passphrase and Base64 salt using
**Argon2id** (64 MB memory, 3 iterations, parallelism 1, 32-byte hash).

### `CryptoVault.encrypt(key, plaintext): Promise<EncryptedBlob>`

Encrypts a string with AES-256-GCM using a fresh random 12-byte IV.

### `CryptoVault.decrypt(key, blob): Promise<string>`

Decrypts an `EncryptedBlob` back to the original plaintext string.

### `CryptoVault.createVerificationBlob(key): Promise<EncryptedBlob>`

Encrypts a known sentinel so the passphrase can be verified later without
exposing user data.

### `CryptoVault.verifyPassphrase(key, blob): Promise<boolean>`

Returns `true` if the key successfully decrypts the verification blob.

## Crypto Parameters

| Parameter | Value |
|---|---|
| KDF | Argon2id |
| Memory | 64 MB |
| Iterations | 3 |
| Parallelism | 1 |
| Hash length | 32 bytes |
| Cipher | AES-256-GCM |
| IV | 12 bytes (random per encryption) |
| Salt | 16 bytes (random per key derivation) |
| Blob version | 3 |

## Development

```bash
npm install
npm run build   # TypeScript → dist/
npm run test    # Vitest
```

## License

MIT