open-index/open-npm huggingface dataset:
npm package: @metalist/webpack-plugin-blob-storage
Description: Webpack plugin for uploading files to Azure Blob Storage.
Author: Neo Chang
Latest version: 1.1.0

# Webpack Plugin Blob Storage

> Package file uploader Plugin for Webpack [Azure Blob Storage](https://azure.microsoft.com/en-us/products/storage/blobs)

## Features

- Supports Account Key or SAS Token.
- Supports modifying the base URL.

## Install

```Bash
pnpm add @metalist/webpack-plugin-blob-storage -D
```

## Usage

```Javascript
import { BlobStorageWebpackPlugin } from "@metalist/webpack-plugin-blob-storage";

const useCDN = process.env.USE_CDN === 'true'

const config = {
  publicPath: useCDN ? process.env.BLOB_CDN_PATH + '/' : '/',
  plugins: [
    new BlobStorageWebpackPlugin(useCDN, {
        accountName: process.env.BLOB_ACCOUNT_NAME!,
        sasToken: process.env.BLOB_SAS_TOKEN,
        containerName: process.env.BLOB_CONTAINER_NAME!,
        subPath: process.env.BLOB_SUB_PATH,
        excludes: ['*.html'],
      }
    ),
  ]
}

```

**Options**

|           Name           |       Type        |        Default         | Required | Description                                    |
| :----------------------: | :---------------: | :--------------------: | :------: | :--------------------------------------------- |
|  **[`accountName`](#)**  |    `{String}`     |                        |   true   | The name of the Azure Storage account.         |
|  **[`accountKey`](#)**   |    `{String}`     |                        |  false   | The account key for the Azure Storage account. |
|   **[`sasToken`](#)**    |    `{String}`     |                        |  false   | The SAS token for the Azure Storage account.   |
| **[`containerName`](#)** |    `{String}`     |                        |   true   | The name of the container.                     |
|    **[`subPath`](#)**    |    `{String}`     |                        |  false   | The subPath of the container.                  |
|   **[`excludes`](#)**    | `{Array[string]}` | ['.DS_Store', '*.map'] |  false   | excluded content 型                            |

- `containerName`

  - The length of a container name can be from 3 to 63 characters.
  - The container name must start with a letter or number and can only contain lowercase letters, numbers, and hyphens (-).
  - Consecutive hyphens are not allowed in the container name.

- `excludes` Matching related files or folders. For detailed usage, please refer to: [micromatch](https://github.com/micromatch/micromatch)

  - `*.map` do not upload files with the `map` file extension.

- `accountKey` and `sasToken`

  - The priority of `accountKey` is higher than `sasToken`.
  - `accountKey` and sasToken cannot be empty at the same time

- `subPath`

  - The subPath suggestion use the project name.
  - The subPath can be used to distinguish different projects in the same container.
  - The subPath container name must start with a letter or number and can only contain lowercase letters, numbers, and hyphens (-).
  - The length of a container name can be from 3 to 63 characters.

## License

Released under the [MIT License](LICENSE).
npm package: @metalnethq/baremetal-ui
Description: A collection of simple React components built with TailwindCSS
Author: ByteMeBaby
Latest version: 0.4.0

# BareMetal

A collection of simple React components built with TailwindCSS.

## Installation

```bash
pnpm i @metalnethq/baremetal-ui // PNPM
npm i @metalnethq/baremetal-ui // NPM
yarn add @metalnethq/baremetal-ui // Yarn
```

## [Demo](https://metalnethq.github.io/baremetal-ui)

### Peer Dependencies

This library has the following peer dependencies:

- react
- react-dom
- tailwindcss

### Setting up

1. In your `tailwind.config.js` file, add the following:

```js
module.exports = {
  // ...
  content: [
    // ...
    "./node_modules/@metalnethq/baremetal-ui/**/*.{js,jsx}",
  ],
};
```

2. Create `theme.js/.ts` file and add the theme object to it. Right now there are only have few customization. You can find them [here.](https://github.com/metalnethq/baremetal-ui/blob/main/src/lib/theme.ts) Then add following code to the `tailwind config` file:

```js
import theme from "./theme";

export default {
  // ...
  content: [
    // ...
    "./node_modules/@metalnethq/baremetal-ui/**/*.{js,jsx}",
  ],
  theme: {
    // ...
    extend: {
      // ...
      colors: {
        // ...
        bm_primary: theme.bm_primary,
        bm_secondary: theme.bm_secondary,
        bm_warning: theme.bm_warning,
        bm_success: theme.bm_success,
        bm_danger: theme.bm_danger,
        bm_info: theme.bm_info,
        bm_gray: theme.bm_gray,
        bm_light: theme.bm_light,
        bm_dark: theme.bm_dark,
        bm_border: theme.bm_border,
        bm_primary_text: theme.bm_primary_text,
      },
    },
  },
  // ...
};
```

<h2
  style="
    color: #f56565;
    font-size: 1.5rem;
    font-weight: 600;
    text-align: center;
  "
>
  Warning: This library is still in development and subject to change. Use it
  with caution.
</h2>
npm package: @metalpay/react-native-zendesk-support
Description: react-native-zendesk-support
Author: MetalPay
Latest version: 0.1.1

# react-native-zendesk-support

react-native-zendesk-support

## Overview

Limited React Native wrapper around the [classic Zendesk Support SDK](https://developer.zendesk.com/documentation/classic-web-widget-sdks/#support-sdk).

- Minimum iOS version: 11
- Minimum Android version: API level 21 (Lollipop/5.0)

## Installation

```sh
npm install @metalpay/react-native-zendesk-support
```

## Usage

```js
import {
  identifyAnonymous,
  initialize,
  showHelpCenter,
} from 'react-native-zendesk-support';

// ...

// 1 - initialize the Zendesk client
await initialize({
  appId: 'appId',
  clientId: 'clientId',
  zendeskUrl: 'zendeskUrl',
});

// 2 - identify the user
await identifyAnonymous(
  'name', // optional
  'email' // optional
);

// ...

// 3 - show the help center
const result = await showHelpCenter(
  {
    subject: 'subject',
    tags: ['tag1', 'tag2', 'tag3'],
    hideContactSupport: false,
    groupType: 2, // 0: DEFAULT, 1: SECTION, 2: CATEGORY
    groupIds: [123, 456], // array of section/category IDs
  } // optional
);
```

## Contributing

See the [contributing guide](CONTRIBUTING.md) to learn how to contribute to the repository and the development workflow.

## License

MIT

---

Made with [create-react-native-library](https://github.com/callstack/react-native-builder-bob)
npm package: @metalshub/angular-datetime-picker-moment-adapter
Description: Angular Date Time Picker (MomentJs Adapter)
Author: Previously maintained and updated by Daniel Moncada, original implementation by Daniel Pan
Latest version: 8.0.0

# Angular Date Time Picker (MomentJs Adapter)

[![npm](https://img.shields.io/npm/v/@metalshub/angular-datetime-picker-moment-adapter.svg?maxAge=2592000?style=flat-square)](https://www.npmjs.com/package/@metalshub/angular-datetime-picker-moment-adapter)
[![npm](https://img.shields.io/npm/dm/@metalshub/angular-datetime-picker-moment-adapter.svg)](https://www.npmjs.com/package/@metalshub/angular-datetime-picker-moment-adapter)

**Angular date time picker - MomentJs Adapter**

** This package supports Angular 21 **

Breaking Changes
-------
- Version 8.x.x >= no longer supports ng 20. If you need ng 20 support, stick with version 7.x.x.
- Version 7.x.x >= no longer supports ng 19. If you need ng 19 support, stick with version 6.x.x.
- Version 6.x.x >= no longer supports ng 18. If you need ng 18 support, stick with version 5.x.x.
- Version 5.x.x >= no longer supports ng 17. If you need ng 17 support, stick with version 4.x.x.
- Version 4.x.x >= no longer supports ng 16 - 13. If you need ng 16-13 support, stick with version 3.x.x.
- Version 2.x.x no longer supports <= ng 13. If you need View Engine support, stick with version 1.x.x.

## Description

This is a MomentJs adapter to be used with the following date time picker control:

https://github.com/danielmoncada/date-time-picker
https://github.com/metalshub/date-time-picker

## How to Use

 1. Install with [npm](https://www.npmjs.com):`npm install @metalshub/angular-datetime-picker-moment-adapter --save`
 2.
```typescript
import { NgModule } from '@angular/core';
import { OwlDateTimeModule, OWL_DATE_TIME_FORMATS } from '@metalshub/angular-datetime-picker';
import { OwlMomentDateTimeModule } from '@metalshub/angular-datetime-picker-moment-adapter';

// See the Moment.js docs for the meaning of these formats:
// https://momentjs.com/docs/#/displaying/format/
export const MY_MOMENT_FORMATS = {
  parseInput: 'l LT',
  fullPickerInput: 'l LT',
  datePickerInput: 'l',
  timePickerInput: 'LT',
  monthYearLabel: 'MMM YYYY',
  dateA11yLabel: 'LL',
  monthYearA11yLabel: 'MMMM YYYY',
};

@NgModule({
  imports: [OwlDateTimeModule, OwlMomentDateTimeModule],
  providers: [{ provide: OWL_DATE_TIME_FORMATS, useValue: MY_MOMENT_FORMATS }],
})
export class AppExampleModule {
}
```

## Dependencies

- moment
- @metalshub/angular-datetime-picker
- tslib

## Demo

- Online doc is [here](https://daniel-projects.firebaseapp.com/owlng/date-time-picker) and [here](https://danielykpan.github.io/date-time-picker/)
- Online demos (StackBlitz) are [here](https://stackblitz.com/edit/angular-vvp849) and [here](https://stackblitz.com/edit/angular-i7ykf5)

## License

- License: MIT

## Author

Author
-------
**Previously maintained and updated by Daniel Moncada, original implementation by Daniel Pan**
npm package: @metalsmith/drafts
Description: A metalsmith plugin to hide drafts.
Author: Ian Storm Taylor
Latest version: 1.3.0

# @metalsmith/drafts

A metalsmith plugin to hide drafts. Metalsmith will not build a page that is marked as draft.

[![metalsmith: core plugin][metalsmith-badge]][metalsmith-url]
[![npm: version][npm-badge]][npm-url]
[![ci: build][ci-badge]][ci-url]
[![code coverage][codecov-badge]][codecov-url]
[![license: MIT][license-badge]][license-url]

## Installation

NPM:

```bash
npm install @metalsmith/drafts
```

Yarn:

```bash
yarn add @metalsmith/drafts
```

## Usage

Pass the plugin with any options to `metalsmith.use`.

```js
import drafts from '@metalsmith/drafts'

metalsmith.use(drafts()) // same as { include: false }
metalsmith.use(drafts(true)) // same as { include: true }
metalsmith.use(drafts({ default: false, include: false })) // same as default
```

Add `draft: true` to your files' YAML front-matter to mark them as drafts:

```yaml
---
title: My post
draft: true
---
```

To build pages that are marked as draft during development, you can use the Node environment and include the draft page in the build accordingly.

```js
const inDevelopment = process.env.NODE_ENV === 'development'

metalsmith.use(drafts(inDevelopment))
```

### Default value for `draft`

You can instruct `@metalsmith/drafts` to mark files as `draft` by default if they don't have a `draft` property in their front-matter:

```js
import drafts from '@metalsmith/drafts'

metalsmith.use(
  drafts({
    default: true
  })
)
```

### Debug

To enable debug logs, set the `DEBUG` environment variable to `@metalsmith/drafts*`:

```js
metalsmith.env('DEBUG', '@metalsmith/drafts*')
```

Alternatively you can set `DEBUG` to `@metalsmith/*` to debug all Metalsmith core plugins.

### CLI Usage

To use this plugin with the Metalsmith CLI, add `@metalsmith/drafts` to the `plugins` key in your `metalsmith.json` file:

```json
{
  "plugins": [
    {
      "@metalsmith/drafts": {
        "default": false
      }
    }
  ]
}
```

## License

[MIT](LICENSE)

[npm-badge]: https://img.shields.io/npm/v/@metalsmith/drafts.svg
[npm-url]: https://www.npmjs.com/package/@metalsmith/drafts
[ci-badge]: https://github.com/metalsmith/drafts/actions/workflows/test.yml/badge.svg
[ci-url]: https://github.com/metalsmith/drafts/actions/workflows/test.yml
[metalsmith-badge]: https://img.shields.io/badge/metalsmith-core_plugin-green.svg?longCache=true
[metalsmith-url]: http://metalsmith.io
[codecov-badge]: https://img.shields.io/coveralls/github/metalsmith/drafts
[codecov-url]: https://coveralls.io/github/metalsmith/drafts
[license-badge]: https://img.shields.io/github/license/metalsmith/drafts
[license-url]: LICENSE
npm package: @metalsmith/excerpts
Description: A Metalsmith plugin to extract an excerpt from HTML files.
Latest version: 1.5.1

# @metalsmith/excerpts

A Metalsmith plugin to extract an excerpt from HTML files.

[![metalsmith: core plugin][metalsmith-badge]][metalsmith-url]
[![npm: version][npm-badge]][npm-url]
[![ci: build][ci-badge]][ci-url]
[![code coverage][codecov-badge]][codecov-url]
[![license: MIT][license-badge]][license-url]

## Installation

NPM:

```
npm install @metalsmith/excerpts
```

Yarn:

```
yarn add @metalsmith/excerpts
```

## Usage

The excerpt is scraped from the first paragraph (`<p>` tag) of the rendered HTML `contents` of a file and added to its metadata `excerpt` key.

```js
const excerpts = require('@metalsmith/excerpts')

metalsmith.use(excerpts()) // default -> file.excerpt
metalsmith.use(excerpts({ multipleFormats: true })) // -> file.excerpt.html & file.excerpt.text
```

### Custom excerpts

You can define a custom `excerpt` in the front-matter of specific files:

```md
---
excerpt: This will be the excerpt
---

This would be the excerpt if none was specified in the front-matter
```

### Excerpts with tags stripped

Sometimes you may need access to the text content of the excerpt without HTML tags.
Pass the `multipleFormats: true` option to store an excerpt object with both HTML and text excerpts `{ html: '...', text: '...' }`:

```js
metalsmith.use(excerpts({ multipleFormats: true }))
```

### CLI usage

Add the `@metalsmith/excerpts` key to your `metalsmith.json` plugins key:

```json
{
  "plugins": [{ "@metalsmith/excerpts": { "multipleFormats": false } }]
}
```

## License

[MIT](LICENSE)

[npm-badge]: https://img.shields.io/npm/v/@metalsmith/excerpts.svg
[npm-url]: https://www.npmjs.com/package/@metalsmith/excerpts
[ci-badge]: https://app.travis-ci.com/metalsmith/excerpts.svg?branch=master
[ci-url]: https://app.travis-ci.com/github/metalsmith/excerpts
[metalsmith-badge]: https://img.shields.io/badge/metalsmith-core_plugin-green.svg?longCache=true
[metalsmith-url]: https://metalsmith.io
[codecov-badge]: https://img.shields.io/coveralls/github/metalsmith/excerpts
[codecov-url]: https://coveralls.io/github/metalsmith/excerpts
[license-badge]: https://img.shields.io/github/license/metalsmith/excerpts
[license-url]: LICENSE
npm package: @metalsmith/remove
Description: A Metalsmith plugin to remove files from the build
Latest version: 1.4.0

# @metalsmith/remove

A Metalsmith plugin to remove files from the build

[![metalsmith: core plugin][metalsmith-badge]][metalsmith-url]
[![npm: version][npm-badge]][npm-url]
[![ci: build][ci-badge]][ci-url]
[![code coverage][codecov-badge]][codecov-url]
[![license: MIT][license-badge]][license-url]

Use `@metalsmith/remove` to discard files from the build output after their metadata and contents have been read and used by plugins. While `Metalsmith#ignore` ignores the matched files completely, `@metalsmith/remove` _only_ removes them at the point the plugin is `use`'d.

## Installation

NPM:

```bash
npm install @metalsmith/remove
```

Yarn:

```bash
yarn add @metalsmith/remove
```

## Usage

Pass the plugin with options to `Metalsmith#use`:

```js
import remove from '@metalsmith/remove'

metalsmith.use(remove('drafts/*')) // single pattern
metalsmith.use(remove(['drafts/*', 'unfinished/*'])) // multiple patterns
```

### Debug

To enable debug logs, set the `DEBUG` environment variable to `@metalsmith/remove*`:

```js
metalsmith.env('DEBUG', '@metalsmith/remove*')
```

Alternatively you can set `DEBUG` to `@metalsmith/*` to debug all Metalsmith core plugins.

### CLI Usage

To use this plugin with the Metalsmith CLI, add `@metalsmith/remove` to the `plugins` key in your `metalsmith.json` file:

```json
{
  "plugins": [{ "@metalsmith/remove": "drafts/*" }]
}
```

But you can also pass an array of patterns to ignore:

```json
{
  "plugins": [{ "@metalsmith/remove": ["drafts/*", "unfinished/*"] }]
}
```

## License

[MIT](LICENSE)

[npm-badge]: https://img.shields.io/npm/v/@metalsmith/remove.svg
[npm-url]: https://www.npmjs.com/package/@metalsmith/remove
[ci-badge]: https://github.com/metalsmith/remove/actions/workflows/test.yml/badge.svg
[ci-url]: https://github.com/metalsmith/remove/actions/workflows/test.yml
[metalsmith-badge]: https://img.shields.io/badge/metalsmith-plugin-green.svg?longCache=true
[metalsmith-url]: https://metalsmith.io
[codecov-badge]: https://img.shields.io/coveralls/github/metalsmith/remove
[codecov-url]: https://coveralls.io/github/metalsmith/remove
[license-badge]: https://img.shields.io/github/license/metalsmith/remove
[license-url]: LICENSE
npm package: @metalsmith/rss
Description: Metalsmith plugin to generate rss feed
Author: Maxime Thirouin
Latest version: 1.0.1

# @metalsmith/rss

[![npm version][npm-badge]][npm-url]
[![metalsmith: plugin][metalsmith-badge]][metalsmith-url]

[![Travis Build Status](https://travis-ci.org/metalsmith/metalsmith-rss.svg)](https://travis-ci.org/metalsmith/metalsmith-rss)

> Metalsmith plugin to generate rss feed

## Installation

```console
$ npm install @metalsmith/rss
```

## Usage

```js
import Metalsmith from "metalsmith"
import collections from "metalsmith-collections"
import rss from "@metalsmith/rss"

new Metalsmith("./")
  .use(
    collections({
      //...
    })
  )
  .use(
    rss({
      feedOptions: {
        title: "test",
        site_url: "http://test.test",
      },
    })
  )
  .build(err => {
    if (err) {
      throw err
    }
  })
```

### Options

#### `feedOptions`

[RSS options](https://github.com/dylang/node-rss)

`site_url` is mandatory.

#### `collection` (default: `"posts"`)

Collection to use

#### `limit` (default: `20`)

Limit of items to put in the rss feed

#### `encoding` (default: `"utf8"`)

RSS encoding

### `destination` (default: `"rss.xml"`)

Destination of the rss feed

## [Changelog](CHANGELOG.md)

## [License](LICENSE)

[npm-badge]: https://img.shields.io/npm/v/@metalsmith/rss.svg
[npm-url]: https://www.npmjs.com/package/@metalsmith/rss
[metalsmith-badge]: https://img.shields.io/badge/metalsmith-plugin-green.svg?longCache=true
[metalsmith-url]: http://metalsmith.io
npm package: @metalstate/core
Description: MetalState is extra-ordinarily minimal and extendible, global state store for React and compatible with NextJS 13+
Author: Kerem Noras
Latest version: 0.0.2

# MetalState

![npm](https://img.shields.io/npm/v/@metalstate/core)
![Downloads](https://img.shields.io/npm/dm/@metalstate/core)
![GitHub Repo stars](https://img.shields.io/github/stars/K-NRS/metalstate)

<div align='center'>
🪨 MetalState is extra-ordinarily minimal and extendible, global state store for React and compatible with NextJS 13+.

<br />

> The philosophy of `🪨 MetalState` is to make data access as easy as using `useState`. Therefore, it provides the smallest and most minimal form for storing and managing states globally!

<hr />

Check the [docs](/docs/getting-started.md) and [examples](/examples).

<hr />

</div>

## 🙌 Contributing

I welcome contributions to the MetalState project! Before you start, please read our [Contribution Guidelines](CONTRIBUTING.md).

Whether you're fixing a bug, adding a new feature, improving documentation, or just giving feedback, your contributions are much appreciated.
npm package: @metaluna/bowyer
Description: Node.js API to access your local network Archer VR600v router.
Author: Simon Hardijanto
Latest version: 0.1.1

# @metaluna/bowyer

[![npm (scoped)](https://img.shields.io/npm/v/@metaluna/bowyer.svg)](https://www.npmjs.com/package/@metaluna/bowyer)
[![npm bundle size (minified)](https://img.shields.io/bundlephobia/min/@metaluna/bowyer.svg)](https://www.npmjs.com/package/@metaluna/bowyer)

Node.js API to access your local network Archer VR600v router.

## Install

```
$ npm install @metaluna/bowyer
```

## Usage

```js
const Bowyer = require("@metaluna/bowyer");

const bowyer = new Bowyer('secret_webui_password');
bowyer.getWifiDevices().then(devices => {
    console.log(devices);
});
// => [{
//        "IPAddress": "10.0.0.100",
//        "addressSource": "DHCP",
//        "leaseTimeRemaining": "-1",
//        "MACAddress": "AA:BB:CC:DD:EE:FF",
//        "hostName": "Unknown",
//        "X_TP_ConnType": "3",
//        "active": "1"
//    }, {
//        "IPAddress": "10.0.0.101",
//        "addressSource": "DHCP",
//        "leaseTimeRemaining": "82349",
//        "MACAddress": "11:22:33:44:55:66",
//        "hostName": "device1",
//        "X_TP_ConnType": "0",
//        "active": "0"
//    }]
```
npm package: @metalyth/storage-manager
Description: This package contains the smart contracts for the Storage System, built using Foundry and MUD (Mutable Universe Design).
Author: blurpesec
Latest version: 0.0.4

# Contracts Package

This package contains the smart contracts for the Storage System, built using Foundry and MUD (Mutable Universe Design).

## Features

-   **Foundry:** A fast, portable and modular toolkit for Ethereum application development.
-   **MUD:** A framework for building decentralized, autonomous worlds.
-   **Solidity:** The primary language for writing smart contracts on Ethereum.

## Getting Started

### Prerequisites

-   [Foundry](https://book.getfoundry.sh/)
-   [pnpm](https://pnpm.io/)

### Installation

```bash
pnpm install
```

### Running Tests

```bash
forge test
```

## Project Structure

```
src/
├── codegen/        # Autogenerated code from MUD
├── systems/
│  ├── StorageSystem/
│  │  └── Constants.sol         # Constants for the Storage System
│  │  └── StorageSystem.sol     # Main system contract governing the usage of storage in the game
│  │  └── Errors.sol            # Outlines errors for the Storage System
│  ├── StoreProxySystem/        
│  │   └── StoreProxySystem.sol # System contract acting as an immutable proxy on top of item inventory
│  └── StringPacker/
│     └── StringPacker.sol      # System contract that packs and unpacks strings for use in creating buckets.
script/             # Deployment scripts
test/               # Test contracts
mud.config.ts       # MUD configuration file
foundry.toml        # Foundry configuration file
```

## Configuration

### Environment Variables

The following environment variables are used to configure the contracts:

-   `WORLD_ADDRESS`: The address of the MUD World contract.
-   `CHAIN_ID`: The ID of the Ethereum chain.
-   `PRIVATE_KEY`: The private key of the deployer account.
-   `RPC_URL`: The URL of the Ethereum RPC endpoint.

These variables can be set in the `.env`, `.env.local`, and `.env.pyrope` files.

## Scripts

The following scripts are defined in `package.json`:

-   `build`: Builds the contracts using `mud build`.
-   `clean`: Cleans the build artifacts and autogenerated code.
-   `deploy:local`: Deploys the contracts to a local development network.
-   `deploy:pyrope`: Deploys the contracts to the Pyrope testnet.
-   `lint`: Runs the code linters.
-   `prettier`: Formats the Solidity code.
-   `solhint`: Lints the Solidity code.
-   `test`: Runs the tests using Forge.
-   `coverage`: Generates code coverage reports.
npm package: @metamarket/uikit
Description: Set of UI components for NFT Market
Latest version: 0.0.14

# MetaMarket UIkit

## Install

`yarn add @metamarket/uikit`

## Setup

### Theme

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

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

### Reset

A reset CSS is available as a global styled component.

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

### Types

This project is built with Typescript and export all the relevant types.
npm package: @metamarkets/env-doctor
Description: CLI tool to validate environment variables via .env.schema file
Latest version: 1.0.2

# @metamarkets/env-doctor

[![CI](https://github.com/emoubarak/env-doctor/actions/workflows/ci.yml/badge.svg)](https://github.com/emoubarak/env-doctor/actions/workflows/ci.yml)

A CLI tool to validate environment variables via a `.env.schema` file.

## Overview

`env-doctor` helps you ensure your environment variables are correctly set according to a schema definition. It validates types, formats, and constraints for your environment variables.

## Installation

```bash
npm install -g @metamarkets/env-doctor
```

## Usage

### Initialize a schema

Scan your existing `.env` file and generate a `.env.schema.yaml`:

```bash
env-doctor init
```

Or specify custom paths:

```bash
env-doctor init -f ./config/my.env -o ./config/my.env.schema.yaml
```

### Check environment variables

Validate your `.env` file against the schema:

```bash
env-doctor check
```

Or specify custom paths:

```bash
env-doctor check -f ./config/my.env -s ./config/my.env.schema.yaml
```

## Schema Format

The schema file (`.env.schema.yaml`) defines validation rules for your environment variables:

```yaml
SESSION_ID:
  required: true
  format: uuid
DATABASE_URL:
  required: true
  format: url
PORT:
  required: false
  default: "3000"
  format: number
  min: 1
  max: 65535
API_KEY:
  required: true
  format: string
  min_length: 32
API_VERSION:
  required: false
  format: semver
  default: "1.0.0"
DEBUG:
  required: false
  format: boolean
CONFIG_JSON:
  required: false
  format: json
SECRET_KEY:
  required: true
  format: regex
  pattern: "^[a-zA-Z0-9]{32}$"
SERVER_HOST:
  required: true
  format: host
ADMIN_COLOR:
  required: true
  format: hex
ENCODED_DATA:
  required: true
  format: base64
CREATION_DATE:
  required: true
  format: date
TIMESTAMP:
  required: true
  format: datetime
```

### Supported Formats

- `string` (default)
- `number`
- `url`
- `email`
- `boolean`
- `json`
- `uuid` - Validates UUID v1, v4, and v5 formats
- `regex` - Validates against a custom regular expression pattern (requires `pattern` property)
- `date` - Validates ISO 8601 date format (YYYY-MM-DD)
- `datetime` - Validates ISO 8601 datetime format (YYYY-MM-DDTHH:mm:ss.sssZ)
- `port` - Validates network port numbers (1-65535)
- `host` - Validates hostnames or IP addresses
- `semver` - Validates semantic versioning format (X.Y.Z)
- `hex` - Validates hexadecimal color codes (#RGB or #RRGGBB)
- `base64` - Validates Base64 encoded strings

### Validation Options

- `required`: Whether the variable is required (default: false)
- `default`: Default value if the variable is not present
- `format`: Format to validate against
- `min` / `max`: For numbers, minimum and maximum values
- `min_length` / `max_length`: For strings, minimum and maximum lengths
- `pattern`: For regex format, specifies the regular expression pattern

## License

MIT
npm package: @metamask-checker/core
Description: Core part of the react-metamask-checker and vue-metamask-checker components
Author: Oleg Levshin
Latest version: 1.0.0

# Metamask Checker &mdash; Core

[![License](https://img.shields.io/badge/License-MIT-000000.svg)](https://opensource.org/licenses/MIT)
[![Build Status](https://travis-ci.org/LordotU/metamask-checker.svg?branch=master)](https://travis-ci.org/LordotU/metamask-checker)
[![Coverage Status](https://coveralls.io/repos/github/LordotU/metamask-checker/badge.svg)](https://coveralls.io/github/LordotU/metamask-checker)

## Description

Core part of the [react-metamask-checker](https://github.com/LordotU/react-metamask-checker) and [vue-metamask-checker](https://github.com/LordotU/vue-metamask-checker) components.

**Note**: only new version of Metamask API is supported. Related links:
  * https://medium.com/metamask/breaking-changes-to-the-metamask-inpage-provider-b4dde069dd0a
  * https://metamask.github.io/metamask-docs/API_Reference/Ethereum_Provider#new-api

## Installation

```bash
yarn add @metamask-checker/core

# or

npm install --save @metamask-checker/core
```

## Testing

```bash
yarn test:jest # Runs Jest with coverage collection
yarn test:coverage # Sends coverage to .coveralls.io
yarn test # yarn test:jest && yarn test:coverage

# or

npm run test:jest
npm run test:coverage
npm test
```

## Usage

```javascript
import checkMetamask from '@metamask-checker/core'

(async () => {
  try {

    const { selectedNetwork, selectedAccount } = await checkMetamask(
      window.ethereum,
      // networkId or chainId decimal number value,
      // account address string value,
    )

    // ...code

  } catch (error) {
    console.error(error)
  }
})()
```
npm package: @metamask-checker/react
Description: React component which uses Render Props approach for checking Metamask inpage provider object
Author: Oleg Levshin
Latest version: 2.1.1

# React Metamask Checker

[![License](https://img.shields.io/badge/License-MIT-000000.svg)](https://opensource.org/licenses/MIT)
[![Build Status](https://travis-ci.org/LordotU/react-metamask-checker.svg?branch=master)](https://travis-ci.org/LordotU/react-metamask-checker)
[![Coverage Status](https://coveralls.io/repos/github/LordotU/react-metamask-checker/badge.svg)](https://coveralls.io/github/LordotU/react-metamask-checker)

## [Live demo](https://react-metamask-checker-demo-with-parcel.lordotu.now.sh)

## Description

React component which uses [Render Props](https://reactjs.org/docs/render-props.html) approach for checking [Metamask](https://metamask.io/) inpage provider object.

**Note**: since v2.0.0 only new version of Metamask API is supported. Related links:
  * https://medium.com/metamask/breaking-changes-to-the-metamask-inpage-provider-b4dde069dd0a
  * https://metamask.github.io/metamask-docs/API_Reference/Ethereum_Provider#new-api

## Installation

```bash
yarn add @metamask-checker/react

# or

npm install --save @metamask-checker/react
```

## Testing

```bash
yarn test:jest # Runs Jest with coverage collection
yarn test:coverage # Sends coverage to .coveralls.io
yarn test # yarn test:jest && yarn test:coverage

# or

npm run test:jest
npm run test:coverage
npm test
```

## Usage

```javascript
// ./containers/App.js

import React, { Component } from 'react'
import MetamaskChecker from '@metamask-checker/react'

import Loader from './components/Loader'
import Err from './components/Error'
import Content from './components/Content'

class App extends Component {

  async initialize (provider, account, network) {
    console.log(provider, account, network)
  }

  render () {

    const props = {
      /* Ethereum network_id (numeric) which should be selected in Metamask */
      // network : null,

      /* Ethereum account (address) which should be selected in Metamask */
      // account : null,

      /* Function which executes on checking error */
      // onCheckError   : async (error) => null,

      /* Function which executes on checking success */
      onCheckSuccess : async (provider, account, network) => await this.initialize(provider, account, network),

      renderDefault : () => <Loader />,

      renderErrored : error => <Err message={error.message || 'Unexpected error'} />,

      renderChecked : (provider, account, network) => <Content />
    }

    return <MetamaskChecker {...props} />
  }
}
```
npm package: @metamask-checker/vue
Description: Vue component for checking Metamask inpage provider object
Author: Oleg Levshin
Latest version: 1.1.0

# Metamask Checker &mdash; Vue

[![License](https://img.shields.io/badge/License-MIT-000000.svg)](https://opensource.org/licenses/MIT)
[![Build Status](https://travis-ci.org/LordotU/vue-metamask-checker.svg?branch=master)](https://travis-ci.org/LordotU/vue-metamask-checker)
[![Coverage Status](https://coveralls.io/repos/github/LordotU/vue-metamask-checker/badge.svg)](https://coveralls.io/github/LordotU/vue-metamask-checker)

## [Live demo](https://vue-metamask-checker-demo-with-parcel.lordotu.now.sh)

## Description

Vue component which uses [Scoped Slots](https://vuejs.org/v2/guide/components-slots.html#Scoped-Slots) for checking [Metamask](https://metamask.io/) inpage provider object.

**Note**: only new version of Metamask API is supported. Related links:
  * https://medium.com/metamask/breaking-changes-to-the-metamask-inpage-provider-b4dde069dd0a
  * https://metamask.github.io/metamask-docs/API_Reference/Ethereum_Provider#new-api

## Installation

```bash
yarn add @metamask-checker/vue

# or

npm install --save @metamask-checker/vue
```

## Testing

```bash
yarn test:jest # Runs Jest with coverage collection
yarn test:coverage # Sends coverage to .coveralls.io
yarn test # yarn test:jest && yarn test:coverage

# or

npm run test:jest
npm run test:coverage
npm test
```

## Usage

```vue
<!-- ./src/App.vue -->

<template>
  <MetamaskChecker
    <!-- -->
    <!--:account="null"-->
    <!--:network="null"-->
    <!--:onCheckError="(error) => null"-->
    <!--:onCheckSuccess="(provider, account, network) => null"-->
  >
    <div id="err" slot="errored" slot-scope="{ error }">
      {{ error.message || 'Unexpected error' }}
    </div>

    <div id="app" slot="checked" slot-scope="{ provider, selectedAccount, selectedNetwork }">
      Selected account {{ selectedAccount }} in selected network {{ selectedNetwork }}
    </div>

    <div id="loader">
      Loader...
    </div>
  </MetamaskChecker>
</template>

<script>
  import MetamaskChecker from '@metamask-checker/vue'

  export default {
    components: {
      MetamaskChecker,
    },
  }
</script>
```
npm package: @metamask-private/adapters-api
Description: Defi adapters API
Author: MMI Team
Latest version: 0.15.0

# Package Description
This package serves as the entry point for an API that uses the logic inside the adapters library and is supported by the database maintained by the workers.

# Architecture Overview

A single process running a Hono API that exposes the following endpoints:

## `/positions/:userAddress`
Based on the value of `userAddress` (and optionally a set of query string parameters), returns all the supported DeFi positions for that address.

## `/support`
Returns a list of supported protocols

## `/user-pools/:userAddress`
Returns a list of supported pools that the address has interacted with.

## `/health`
Returns a simple message to signal that the service is healthy.

## `/metrics`
Returns the output of the prometheus client.

## Database

This service only reads from the `logs` table defined in the workers package.
npm package: @metamask/action-utils
Description: Utilities for MetaMask's GitHub Actions.
Latest version: 1.1.1

# @metamask/action-utils

Utilities for MetaMask's GitHub Actions.

## Installation

`yarn add @metamask/action-utils`

or

`npm install @metamask/action-utils`

## Usage

For example:

```typescript
import {
  getPackageManifest,
  validatePackageManifestVersion,
} from '@metamask/action-utils';

// Partial<PackageManifest>
const rawManifest = await getPackageManifest('directory/package.json');

// Partial<PackageManifest> & { version: string }
// The version must be valid SemVer, or the function will throw.
// The manifest is returned unmodified.
const manifestWithVersion = await validatePackageManifestVersion(
  rawManifest,
  'directory',
);
```

For more examples of how these utilities are used, see:

- [MetaMask/action-publish-release](https://github.com/MetaMask/action-publish-release)
- [MetaMask/action-create-release-pr](https://github.com/MetaMask/action-create-release-pr)

## Testing

Run `yarn test` to run the tests once.

To run tests on file changes, run `yarn test:watch`.

## Release & Publishing

The project follows the same release process as the other libraries in the MetaMask organization:

1. Create a release branch
   - For a typical release, this would be based on `main`
   - To update an older maintained major version, base the release branch on the major version branch (e.g. `1.x`)
2. Update the changelog
3. Update version in package.json file (e.g. `yarn version --minor --no-git-tag-version`)
4. Create a pull request targeting the base branch (e.g. master or 1.x)
5. Code review and QA
6. Once approved, the PR is squashed & merged
7. The commit on the base branch is tagged
8. The tag can be published as needed