open-index/open-npm huggingface dataset:
npm package: @mykeels/browser-features
Description: Browser features
Author: mykeels
Latest version: 1.1.6

# browser-features
Browser features

# Usage
```sh
npm install browser-features
```

```javascript
import browserFeatures from 'browser-features';
browserFeatures(features => console.log(features));
```

And you should get a report similar to the following:
```json
{
    "userAgent": {
        "userAgent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.13; rv:62.0) Gecko/20100101 Firefox/62.0",
        "productComponents": {
            "Mozilla": "5.0",
            "Gecko": "20100101",
            "Firefox": "62.0"
        },
        "platformInfo": [
            "Macintosh",
            "Intel Mac OS X 10.13",
            "rv:62.0"
        ],
        "bitness": 64,
        "arch": "Intel",
        "platform": "Mac",
        "os": "Mac OS",
        "osVersion": "10.13",
        "browserVendor": "Mozilla",
        "browserProduct": "Firefox",
        "browserVersion": "62.0",
        "formFactor": "Desktop"
    },
    "navigator": {
        "buildID": "20180830143136",
        "appVersion": "5.0 (Macintosh)",
        "oscpu": "Intel Mac OS X 10.13",
        "platform": "MacIntel",
        "product": "Gecko",
        "productSub": "20100101",
        "language": "en-US",
        "appCodeName": "Mozilla",
        "appName": "Netscape"
    },
    "display": {
        "windowDevicePixelRatio": 2,
        "screenWidth": 1680,
        "screenHeight": 1050,
        "physicalScreenWidth": 3360,
        "physicalScreenHeight": 2100
    },
    "hardwareConcurrency": 8,
    "apiSupport": {
        "Math.imul()": true,
        "Math.fround()": true,
        "ArrayBuffer.transfer()": false,
        "Web Audio": true,
        "Pointer Lock": true,
        "Fullscreen API": true,
        "Blob": true,
        "SharedArrayBuffer": false,
        "navigator.hardwareConcurrency": true,
        "SIMD.js": false,
        "Web Workers": true,
        "WebAssembly": true,
        "Gamepad API": true,
        "IndexedDB": true,
        "Visibility API": true,
        "requestAnimationFrame()": true,
        "performance.now()": true,
        "WebSockets": true,
        "WebRTC": true,
        "Vibration API": true,
        "Screen Orientation API": true,
        "Geolocation API": true,
        "Battery Status API": false,
        "WebVR": false,
        "WebXR": false,
        "OffscreenCanvas": false,
        "WebComponents": false,
        "WebGL1": true,
        "WebGL2": true
    },
    "typedArrayEndianness": "little endian"
}
```
npm package: @mykeels/gpg
Description: GPG encryption and decryption in node.js by way of the gpg command-line tool
Author: Nicholas Penree
Latest version: 0.7.18

# GPG Encryption/Decryption in Node.js
[![travis][travis-image]][travis-url]
[![npm][npm-image]][npm-url]
[![downloads][downloads-image]][downloads-url]

[travis-image]: https://travis-ci.org/drudge/node-gpg.svg?branch=master
[travis-url]: https://travis-ci.org/drudge/node-gpg

[npm-image]: https://img.shields.io/npm/v/gpg.svg?style=flat
[npm-url]: https://npmjs.org/package/gpg

[downloads-image]: https://img.shields.io/npm/dm/gpg.svg?style=flat
[downloads-url]: https://npmjs.org/package/gpg

This module is a wrapper around `gpg` for use within Node. Node-GPG takes care of spawning `gpg`, passing it
the correct arguments, and piping input to stdin. It can also pipe input in from files and output out to files.

Use Node-GPG if you are considering calling `gpg` directly from your application.

## Requirements

In order to use Node-GPG, you'll need to have the `gpg` binary in your $PATH.

## Installation

```
npm install @mykeels/gpg
```

## Usage

Node-GPG supports both direct calls to GPG with string arguments, and streaming calls for piping input and output
from/to files.

See [the examples](./EXAMPLES.md) for more details.

If a function you need is not implemented, you can call gpg directly with arguments of your choice by
calling `gpg.call(stdinStr, argsArray, cb)`, or `gpg.callStreaming(inputFileName, outputFileName, argsArray, cb)`.

## Notes

Existing implementations of PGP in Javascript are blocking and unfeasibly slow for server use.
In casual testing, encrypting a simple 400-character email to an El-Gamal key took upwards of 11 seconds using
[openpgpjs](https://github.com/openpgpjs/openpgpjs) and 14 seconds with [kbpgp](https://github.com/keybase/kbpgp),
but takes less than 0.1 seconds with `gpg` directly.

## Contributors

The following are the major contributors of `node-gpg` (in no specific order).

  * Nicholas Penree ([drudge](http://github.com/drudge))
  * [freewil](http://github.com/freewil)
  * Samuel Reed [strml](http://github.com/strml)
  * Michael Ikechi [mykeels](http://github.com/mykeels)
npm package: @mykeels/propelauth-react
Description: A React library for managing authentication, backed by PropelAuth
Latest version: 2.0.1

<p align="center">
  <a href="https://www.propelauth.com?ref=github" target="_blank" align="center">
    <img src="https://propelauth-logos.s3.us-west-2.amazonaws.com/logo-only.png" width="100">
  </a>
</p>

# PropelAuth React Library

A React library for managing authentication in the browser, backed by [PropelAuth](https://www.propelauth.com?ref=github). 

[PropelAuth](https://www.propelauth.com?ref=github) is a prebuilt, hosted authentication solution focused on a great developer experience. 

## Documentation

- Full reference this library is [here](https://docs.propelauth.com/reference/frontend-apis/react.html)
- Getting started guides for PropelAuth are [here](https://docs.propelauth.com/)

## Questions?

Feel free to reach out at support@propelauth.com
npm package: @mykeels/steganography
Description: A tool for embedding and extracting text data to/from images
Author: mykeels
Latest version: 1.0.1

# @mykeels/steganography

Inspired by [rodrigouroz/steganography](https://github.com/rodrigouroz/steganography).

This tool lets you hide and retrieve text data to/from an image. It's useful when you want to send information between parties and do not want it scrutinized by external parties.

## Installation

Run `npm i @mykeels/steganography` or `yarn add @mykeels/steganography` to install.

## Usage

To embed data, you'll need an image to embed the data in.

```js
const path = require('path');
const fs = require('fs');
const { embed } = require('@mykeels/steganography');

(async () => {
    const buffer = await embed(
        path.join(__dirname, './path/to/input.png'), 
        `This is my message to the world. Love, Joy and Happiness!`,
        'YOUR_PASSWORD_HERE'
    );

    fs.writeFileSync(
        path.join(__dirname, './path/to/output.png'),
        buffer
    );
})();
```

To retrieve data, you'll need an image that has data embeded in it.

```js
const path = require('path');
const { digUp } = require('@mykeels/steganography');

(async () => {
    const text = await digUp(
        path.join(__dirname, './path/to/output.png'),
        'YOUR_PASSWORD_HERE'
    );

    console.log(text);
})();
```

### NB

- The password argument is optional.
npm package: @mykelcodes/container-number-validation
Description: A tiny package to validate container numbers according to ISO 6346 standard
Author: Michael Olawale
Latest version: 1.0.2

# Container Number Validation

A lightweight TypeScript package to validate shipping container numbers according to the **ISO 6346 standard**.

## Features

- ✅ Validates container numbers using the ISO 6346 check digit algorithm
- 🪶 Lightweight with zero dependencies
- 📦 Supports both CommonJS and ES Modules
- 🔷 Full TypeScript support with type definitions
- ✨ Simple and intuitive API

## Installation

```bash
npm install @mykelcodes/container-number-validation
# or
pnpm add @mykelcodes/container-number-validation
# or
yarn add @mykelcodes/container-number-validation
```

## Usage

### ES Modules
```typescript
import { isValidContainer } from '@mykelcodes/container-number-validation';

console.log(isValidContainer('CCLU4843216')); // true
console.log(isValidContainer('CSQU3054390')); // false
```

### CommonJS
```javascript
const { isValidContainer } = require('@mykelcodes/container-number-validation');

console.log(isValidContainer('CCLU4843216')); // true
console.log(isValidContainer('CSQU3054390')); // false
```

## API

### `isValidContainer(containerNumber: string): boolean`

Validates a container number according to ISO 6346 standard.

**Parameters:**
- `containerNumber` (string): The container number to validate (must be 11 characters)

**Returns:**
- `boolean`: `true` if the container number is valid, `false` otherwise

**Example:**
```typescript
isValidContainer('CCLU4843216'); // returns true
isValidContainer('INVALID1234'); // returns false
isValidContainer('SHORT');       // returns false (wrong length)
```

## Container Number Format

A valid container number consists of:
1. **4 letters**: Owner code (3 letters) + Equipment category identifier (1 letter)
2. **6 digits**: Serial number
3. **1 digit**: Check digit (calculated using ISO 6346 algorithm)

Example: `CCLU4843216`
- `CCL`: Owner code
- `U`: Equipment category identifier
- `484321`: Serial number
- `6`: Check digit

## Development

```bash
# Install dependencies
pnpm install

# Run tests
pnpm test

# Build the package
pnpm build

# Format code
pnpm format
```

## License

MIT © [Michael Olawale](https://github.com/mykelcodes)

## Contributing

Contributions are welcome! Please feel free to submit a Pull Request.

## Links

- [Repository](https://github.com/mykelcodes/container-number-validation)
- [Issues](https://github.com/mykelcodes/container-number-validation/issues)
- [ISO 6346 Standard](https://en.wikipedia.org/wiki/ISO_6346)