open-index/open-npm huggingface dataset:
npm package: @iambrennanwalsh/design-system
Description: My personal design system.
Author: Brennan Walsh
Latest version: 0.1.2

# @iambrennanwalsh/design-system

My personal design system.

## Overview

1. **Type Checking, Linting, and Formatting**

The components are implemented in TypeScript, ESLint provides linting capabilities, and Prettier is used for formatting.

For development, I recommend using [Visual Studio Code](https://visualstudio.microsoft.com/). The included `/.vscode` directory contains an `extensions.json` file that provides a list of recommended extensions. These include extensions for EditorConfig, ESLint, Prettier, and NPM Scripts. The minimal configuration is also included to get everything working as intended.

2. **Storybook**

All design system components are documented via a storybook. To start up the storybook run..

```bash
npm run serve
```

This command launches a development server on localhost:8000 via @web/dev-server.

## Installation

Use the [NPM](https://npmjs.com) or [Yarn](https://yarnpkg.com/) package manager to install @iambrennanwalsh/design-system.

```bash
npm install @iambrennanwalsh/design-system
// or
yarn add @iambrennanwalsh/design-system
```

## Contributing
Pull requests are welcome. For major changes, please open an issue first to discuss what you would like to change.

Please make sure to update tests as appropriate.

## License
[MIT](https://choosealicense.com/licenses/mit/)
npm package: @iambrennanwalsh/eslint-config
Description: Personal ESLint config of @iambrennanwalsh.
Author: Brennan Walsh
Latest version: 0.1.5

# eslint-config

Personal ESLint configuration of @iambrennanwalsh.

## Usage

1. Install the `@iambrennanwalsh/eslint-config` package using `npm` or `yarn`.

**Note**: Until [this ongoing issue with ESLint](https://github.com/eslint/eslint/issues/3458") is fixed, you must also install `@rushstack/eslint-patch`.

```sh
npm install @iambrennanwalsh/eslint-config @rushstack/eslint-patch
// or
yarn add @iambrennanwalsh/eslint-config @rushstack/eslint-patch
```

2. Create an ESLint config file (`.eslintrc`) with the root of your project.

```js
require('@rushstack/eslint-patch/modern-module-resolution')

module.exports = {
  "root": true,
  "extends": [
    `@iambrennanwalsh`
  ]
}
```

3. Extend additional config files. If extending the Prettier config, be sure it comes very last within your `extends` array.

- TypeScript: `@iambrennanwalsh/eslint-config/src/typescript`
- React: `@iambrennanwalsh/eslint-config/src/react`
- Jest: `@iambrennanwalsh/eslint-config/src/jest`
- Webpack: `@iambrennanwalsh/eslint-config/src/webpack`
- Prettier: `@iambrennanwalsh/eslint-config/src/prettier`
npm package: @iambrennanwalsh/prettier-config
Description: Personal Prettier config of @iambrennanwalsh.
Author: Brennan Walsh
Latest version: 0.0.4

# @iambrennanwalsh/prettier-config

Personal Prettier configuration of @iambrennanwalsh.

## Usage

1. Install the `prettier` and `@iambrennanwalsh/prettier-config` packages using
   `npm`, `pnpm`, or `yarn`.

```sh
npm install prettier @iambrennanwalsh/prettier-config
```

2. Add `prettier: @iambrennanwalsh/prettier-config` to your package.json.

```diff
+  "prettier": "@iambrennanwalsh/prettier-config",
```

## Learn More

Visit the [Prettier Documentation](https://www.prettier.io) for a complete
reference on integrating your project with Prettier.
npm package: @iamcal/autolink-js
Description: JS link formatting library
Author: Cal Henderson
Latest version: 0.1.1

# autolink-js - JS link formatting library

<span class="badge-npmversion"><a href="https://npmjs.org/package/@iamcal/autolink-js" title="View this project on NPM"><img src="https://img.shields.io/npm/v/@iamcal/autolink-js.svg" alt="NPM version" /></a></span>
<span class="badge-npmdownloads"><a href="https://npmjs.org/package/@iamcal/autolink-js" title="View this project on NPM"><img src="https://img.shields.io/npm/dm/@iamcal/autolink-js.svg" alt="NPM downloads" /></a></span>
[![Build Status](https://github.com/iamcal/autolink-js/actions/workflows/build.yml/badge.svg)](https://github.com/iamcal/autolink-js/actions)
[![Coverage Status](https://coveralls.io/repos/iamcal/autolink-js/badge.svg)](https://coveralls.io/r/iamcal/autolink-js)

This library helps to detect URLs (and email addresses) in text, and turn them into links.
It is based on the original PHP version here: https://github.com/iamcal/lib_autolink


## Installation

Either clone the git repo, or `npm install @iamcal/autolink-js`


## Usage


```html
<script src="autolink.min.js" type="text/javascript"></script>
<script type="text/javascript">

var a = new AutoLink();

// turn some text into linkified HTML
var html = a.link(text);

// also link up email addresses
html = a.linkEmail(text);


// TODO: document options

</script>
```


## Version History

See [CHANGES.md](CHANGES.md)
npm package: @iamcalegari/mongoat
Description: A ligthweight ODM library for MongoDB
Author: iamcalegari
Latest version: 1.0.34-alpha

<p align="center">
  <img src="https://github.com/iamcalegari/mongoat/blob/main/graphics/mongoat-cover-4_1.png" alt="Mongoat Logo" width="600"/>
</p>

<h1 align="center">MONGOAT</h1>
<p align="center"><b>Fast MongoDB ODM</b></p>

<p align="center">
  <a href="https://www.npmjs.com/package/@iamcalegari/mongoat">
    <img src="https://img.shields.io/npm/v/@iamcalegari/mongoat.svg" alt="NPM Version"/>
  </a>
</p>

### _🚧 This documentation is a work in progress so it may be incomplete or incorrect. If you find any errors or have suggestions, please [open an issue](https://github.com/iamcalegari/mongoat/issues/new)._

---

Mongoat is a fast, extensible, and type-safe ODM (Object Document Mapper) for MongoDB, designed for Node.js environments. It focuses on high performance and flexibility, providing a modern API and advanced extensibility compared to existing solutions.

## Table of Contents

- [Features](#features)
- [Installation](#installation)
- [Quick Start](#quick-start)
  - [Connecting to MongoDB](#connecting-to-mongodb)
  - [Defining a Model](#defining-a-model)
  - [Basic CRUD Usage](#basic-crud-usage)
- [Advanced Usage](#advanced-usage)
- [Contributing](#contributing)
- [License](#license)

---

## Features

- Blazing fast performance
- Simple, intuitive API
- Schema validation and hooks
- TypeScript support
- Easy extensibility

## Installation

```bash
npm install @iamcalegari/mongoat

yarn add @iamcalegari/mongoat

pnpm add @iamcalegari/mongoat
```

## Quick Start

### Connecting to MongoDB

```js
import { Database } from '@iamcalegari/mongoat';

const database = new Database({
  /**
   *
   * If you want to connect to a database with a custom name,
   * you can set the following property:
   *
   * dbName: '<MY_DB_NAME>',
   *
   * Or just set the environment variable:
   *
   * MONGODB_DB_NAME -> for the database name
   */
  dbName: 'mongoat-example',
});

const dbConnection = async () => {
  await database.connect();

  const info = await database.info();

  console.log('Database info: ', info);

  await database.disconnect();
};

dbConnection();
```

### Defining a Model
npm package: @iamcloud/eslint-config-iamcloud
Description: Eslint configuration used for IAM Cloud TypeScript React apps
Author: Charles Oliver
Latest version: 1.0.3

# IAM Cloud Eslint Config

Eslint configuration for React + TypeScript applications built at [IAM Cloud](https://www.iamcloud.com/)

## Installation

1. Install all peer dependencies

```sh
npx install-peerdeps --dev @iamcloud/eslint-config-iamcloud
```

2. Install [@iamcloud/eslint-config-iamcloud](https://github.com/iam-cloud/eslint-config-iamcloud) as a development dependency of your project:

```sh
yarn add --dev @iamcloud/eslint-config-iamcloud --save-dev
```

## TypeScript Support

If you are using this in a repo that is not based on `create-react-app` and want TypeScript support, make sure to install `@typescript-eslint/eslint-plugin` and `@typescript-eslint/parser`

```sh
npm install --save-dev @typescript-eslint/eslint-plugin @typescript-eslint/parser
```

change the eslint parser to `@typescript-eslint/parser` and add the typescript plugin

```js
// eslintrc.js
module.exports = {
  parser: '@typescript-eslint/parser',
  extends: ['@10up/eslint-config/react'],
  plugins: ['@typescript-eslint'],
} 
```

## VSCode integration

We recommend turning on VSCode settings to automatically run `eslint --fix` on save.

```json
"editor.codeActionsOnSave": {
  "source.fixAll.eslint": true,
}
```

This will automagically format your code once you save. You don't need VSCode prettier extension enabled or running on save as eslint will automatically run `prettier` for you.
npm package: @iamcosta/url-params-hook
Description: Map object props to url search parameters
Author: Iam Barroso
Latest version: 2.1.0

# `url-params-hook`

> What about map an object to url search parameters? :)

## Installation

```bash
npm install @iamcosta/url-params-hook
# or
yarn add @iamcosta/url-params-hook
```

## Usage

```ts
import { useUrlParams } from  "@iamcosta/url-params-hook";

// ...
type YourType = {
    someProp: string;
    anotherProp: number;
}
const { values, onChange } = useUrlParams<YourType>({
  ignoreKeys: ["keys", "of", "YourType", "to", "be", "ignored"]
});
// ignoreKeys is optional...

// ...

// This change url parameters...
onChange({
    someProp: "some text",
    // ...
});

// ... while this obtains the new value provided by url state in any place
const { someProp } = values;
```

## License

MIT @ Iam Barroso da Costa
npm package: @iamdew/deep-link
Description: Redirecting native iOS/Android App from your Website using app scheme.
Author: Hyungjoo Kwon
Latest version: 1.1.1

# deep-link.js

[![NPM Version][npm-image]][npm-url]
[![NPM Downloads][downloads-image]][downloads-url]
[![Build Status][travis-image]][travis-url]
[![Test Coverage][coveralls-image]][coveralls-url]

🌈 Redirecting native iOS/Android App from your Website using app scheme.

## Usage
### 1. Include deep-link.js on your site.

#### Using CDN
```
<script src="https://cdn.jsdelivr.net/npm/@iamdew/deep-link@latest/dist/deep-link.min.js"></script>
```

#### Using Bower
> bower install --save deep-link
```
<script src="./bower_components/deep-link/dist/deep-link.min.js"></script>
```

#### Using NPM
> npm install --save @iamdew/deep-link
```
import DeepLink from '@iamdew/deep-link';
```

### 2. Initialize deep-link.js related by your app infomation.
```javascript
var deepLink = new DeepLink({
  appStore: 'https://itunes.apple.com/kr/app/id123456789',
  playStore: 'https://play.google.com/store/apps/details?id=com.example.myApp',
});
```

#### 2-1. Register click event
```javascript
deepLink.register(document.getElementById('test'), {
  appScheme: 'myApp://example/51', // Required (Optional that if openOnlyStore is true)
  webUrl: 'http://www.naver.com', // Optional
  openOnlyStore: true, // Optional (Default: false)
  alsoUseWebUrlOnMobile: false, // Optional (Default: true)
  openStoreWhenNoInstalledTheApp: false, // Optional (Default: true)
});
```

#### 2-2. Manual Open the Application
```javascript
deepLink.openApp({
  appScheme: 'myApp://example/51', // Required
  webUrl: 'http://www.naver.com', // Optional
  alsoUseWebUrlOnMobile: false, // Optional (Default: true)
  openStoreWhenNoInstalledTheApp: false, // Optional (Default: true)
});
```

#### 2-3. Just Open the Store
```javascript
deepLink.openStore();
```

## Issues
Feel free to submit issues and enhancement requests.

## Contributing
Bug reports and pull requests are welcome on GitHub at https://github.com/flosdor/deep-link

 1. **Fork** the repo on GitHub
 2. **Clone** the project to your own machine
 3. **Commit** changes to your own branch
 4. **Push** your work back up to your fork
 5. Submit a **Pull request** so that we can review your changes

NOTE: Be sure to merge the latest from "upstream" before making a pull request!

## License

[MIT LICENSE](LICENSE)

[npm-image]: https://img.shields.io/npm/v/@iamdew/deep-link.svg
[npm-url]: https://npmjs.org/package/@iamdew/deep-link
[travis-image]: https://img.shields.io/travis/flosdor/deep-link/master.svg
[travis-url]: https://travis-ci.org/flosdor/deep-link
[coveralls-image]: https://coveralls.io/repos/github/flosdor/deep-link/badge.svg
[coveralls-url]: https://coveralls.io/github/flosdor/deep-link
[downloads-image]: https://img.shields.io/npm/dm/@iamdew/deep-link.svg
[downloads-url]: https://npmjs.org/package/@iamdew/deep-link
npm package: @iameax/builder-plugin-select
Description: See [here](src/plugin.tsx) for the React component that powers this plugin
Author: Shakh I.
Latest version: 0.0.1

# Builder.io example plugin

See [here](src/plugin.tsx) for the React component that powers this plugin

## Status

Builder plugins are in beta. If you run into any issues or have questions please
contact help@builder.io for help

## Creating a new plugin from this example

### Install

```bash
git clone https://github.com/BuilderIO/builder.git
cp -r plugins/rich-text plugins/your-plugin-name
cd plugins/your-plugin-name
npm install
```

### Develop

```bash
npm start
```

### Add the plugin in Builder.io

From [Builder.io](https://builder.io) open the javascript console in your browser's dev tools and run.

```js
// Adds the plugin
builder.plugins.replace(['http://localhost:1268/plugin.system.js']);
// Saves for all in your organization and reloads the browser
builder.savePlugins().then(() => location.reload());
```

**NOTE:** Loading http:// content on an https:// website will give you a warning. Be sure to click the shield in the top right of your browser and choose "load unsafe scripts" to allow the http content on Builder's https site when devloping locally

<img alt="Load unsafe script example" src="https://i.stack.imgur.com/uSaLL.png">

Now as you develop you can restart Builder to see the latest version of your plugin.

To uninstall your plugin run

```js
// Removes all plugins
builder.plugins.replace([]);
// Saves for all in your organization and reloads the browser
builder.savePlugins().then(() => location.reload());
```

### Seeing your plugin in action

In this plugin we replace the default "file" type editor with our Cloudinary file picker. So, to preview in Builder, just add a component with a file input (e.g. the built-in Image component), and open it's options to see your custom editor!

<img src="https://i.imgur.com/uVOLn7A.gif" alt="Seeing your plugin in the editor example gif">

### Frameworks

Builder.io uses [React](https://github.com/facebook/react) and [Material UI](https://github.com/mui-org/material-ui) for the UI, and [Emotion](https://github.com/emotion-js/emotion) for styling.

Using these frameworks in Builder plugins ensures best possible experience and performance.

### Publishing

We recommend sending us a pull request with your plugin so we can publish it on your behalf.

If required, you can also publish to your own NPM or a hosting service.

To load a plugin from NPM

```js
builder.plugins.replace(['@builder.io/plugin-example']);
```

#### Advanced

You can load a plugin from a specific version

```js
builder.plugins.replace(['@builder.io/plugin-example@1.0.0']);
```

Or from a URL

```js
builder.plugins.replace(['https://something.com/foo']);
```
npm package: @iameli/bsky
Description: Reference implementation of app.bsky App View (Bluesky API)
Latest version: 0.0.33

# @iameli/bsky: Bluesky AppView Service

TypeScript implementation of the `app.bsky` Lexicons backing the https://bsky.app microblogging application.

[![NPM](https://img.shields.io/npm/v/@iameli/bsky)](https://www.npmjs.com/package/@iameli/bsky)
[![Github CI Status](https://github.com/bluesky-social/atproto/actions/workflows/repo.yaml/badge.svg)](https://github.com/bluesky-social/atproto/actions/workflows/repo.yaml)

## License

This project is dual-licensed under MIT and Apache 2.0 terms:

- MIT license ([LICENSE-MIT.txt](https://github.com/bluesky-social/atproto/blob/main/LICENSE-MIT.txt) or http://opensource.org/licenses/MIT)
- Apache License, Version 2.0, ([LICENSE-APACHE.txt](https://github.com/bluesky-social/atproto/blob/main/LICENSE-APACHE.txt) or http://www.apache.org/licenses/LICENSE-2.0)

Downstream projects and end users may chose either license individually, or both together, at their discretion. The motivation for this dual-licensing is the additional software patent assurance provided by Apache 2.0.
npm package: @iameli/bsync
Description: Sychronizing service for app.bsky App View (Bluesky API)
Latest version: 0.0.0

# @iameli/bsync: Synchronizing Service for the Bluesky AppView

This is an optional service that may be used to synchronize certain state between otherwise independent AppViews.

[![NPM](https://img.shields.io/npm/v/@iameli/bsync)](https://www.npmjs.com/package/@iameli/bsync)
[![Github CI Status](https://github.com/bluesky-social/atproto/actions/workflows/repo.yaml/badge.svg)](https://github.com/bluesky-social/atproto/actions/workflows/repo.yaml)

## License

This project is dual-licensed under MIT and Apache 2.0 terms:

- MIT license ([LICENSE-MIT.txt](https://github.com/bluesky-social/atproto/blob/main/LICENSE-MIT.txt) or http://opensource.org/licenses/MIT)
- Apache License, Version 2.0, ([LICENSE-APACHE.txt](https://github.com/bluesky-social/atproto/blob/main/LICENSE-APACHE.txt) or http://www.apache.org/licenses/LICENSE-2.0)

Downstream projects and end users may chose either license individually, or both together, at their discretion. The motivation for this dual-licensing is the additional software patent assurance provided by Apache 2.0.
npm package: @iameli/common
Description: Shared web-platform-friendly code for atproto libraries
Latest version: 0.3.3

# @iameli/common

Shared TypeScript code for other `@iameli/*` packages. This package is oriented towards writing servers, and is not designed to be browser-compatible.

[![NPM](https://img.shields.io/npm/v/@iameli/common)](https://www.npmjs.com/package/@iameli/common)
[![Github CI Status](https://github.com/bluesky-social/atproto/actions/workflows/repo.yaml/badge.svg)](https://github.com/bluesky-social/atproto/actions/workflows/repo.yaml)

## License

This project is dual-licensed under MIT and Apache 2.0 terms:

- MIT license ([LICENSE-MIT.txt](https://github.com/bluesky-social/atproto/blob/main/LICENSE-MIT.txt) or http://opensource.org/licenses/MIT)
- Apache License, Version 2.0, ([LICENSE-APACHE.txt](https://github.com/bluesky-social/atproto/blob/main/LICENSE-APACHE.txt) or http://www.apache.org/licenses/LICENSE-2.0)

Downstream projects and end users may chose either license individually, or both together, at their discretion. The motivation for this dual-licensing is the additional software patent assurance provided by Apache 2.0.
npm package: @iameli/common-web
Description: Shared web-platform-friendly code for atproto libraries
Latest version: 0.2.3

# @iameli/common-web

Shared TypeScript code for other `@iameli/*` packages, which is web-friendly (runs in-browser).

[![NPM](https://img.shields.io/npm/v/@iameli/common)](https://www.npmjs.com/package/@iameli/common-web)
[![Github CI Status](https://github.com/bluesky-social/atproto/actions/workflows/repo.yaml/badge.svg)](https://github.com/bluesky-social/atproto/actions/workflows/repo.yaml)

## License

This project is dual-licensed under MIT and Apache 2.0 terms:

- MIT license ([LICENSE-MIT.txt](https://github.com/bluesky-social/atproto/blob/main/LICENSE-MIT.txt) or http://opensource.org/licenses/MIT)
- Apache License, Version 2.0, ([LICENSE-APACHE.txt](https://github.com/bluesky-social/atproto/blob/main/LICENSE-APACHE.txt) or http://www.apache.org/licenses/LICENSE-2.0)

Downstream projects and end users may chose either license individually, or both together, at their discretion. The motivation for this dual-licensing is the additional software patent assurance provided by Apache 2.0.
npm package: @iameli/crypto
Description: Library for cryptographic keys and signing in atproto
Latest version: 0.3.0

# @iameli/crypto

TypeScript library providing basic cryptographic helpers as needed in [atproto](https://atproto.com).

[![NPM](https://img.shields.io/npm/v/@iameli/crypto)](https://www.npmjs.com/package/@iameli/crypto)
[![Github CI Status](https://github.com/bluesky-social/atproto/actions/workflows/repo.yaml/badge.svg)](https://github.com/bluesky-social/atproto/actions/workflows/repo.yaml)

This package implements the two currently supported cryptographic systems:

- P-256 elliptic curve: aka "NIST P-256", aka secp256r1 (note the r), aka prime256v1
- K-256 elliptic curve: aka "NIST K-256", aka secp256k1 (note the k)

The details of cryptography in atproto are described in [the specification](https://atproto.com/specs/cryptography). This includes string encodings, validity of "low-S" signatures, byte representation "compression", hashing, and more.

## Usage

```typescript
import { verifySignature, Secp256k1Keypair, P256Keypair } from '@iameli/crypto'

// generate a new random K-256 private key
const keypair = await Secp256k1Keypair.create({ exportable: true })

// sign binary data, resulting signature bytes.
// SHA-256 hash of data is what actually gets signed.
// signature output is often base64-encoded.
const data = new Uint8Array([1, 2, 3, 4, 5, 6, 7, 8])
const sig = await keypair.sign(data)

// serialize the public key as a did:key string, which includes key type metadata
const pubDidKey = keypair.did()
console.log(pubDidKey)

// output would look something like: 'did:key:zQ3shVRtgqTRHC7Lj4DYScoDgReNpsDp3HBnuKBKt1FSXKQ38'

// verify signature using public key
const ok = verifySignature(pubDidKey, data, sig)
if (!ok) {
  throw new Error('Uh oh, something is fishy')
} else {
  console.log('Success')
}
```

## License

This project is dual-licensed under MIT and Apache 2.0 terms:

- MIT license ([LICENSE-MIT.txt](https://github.com/bluesky-social/atproto/blob/main/LICENSE-MIT.txt) or http://opensource.org/licenses/MIT)
- Apache License, Version 2.0, ([LICENSE-APACHE.txt](https://github.com/bluesky-social/atproto/blob/main/LICENSE-APACHE.txt) or http://www.apache.org/licenses/LICENSE-2.0)

Downstream projects and end users may chose either license individually, or both together, at their discretion. The motivation for this dual-licensing is the additional software patent assurance provided by Apache 2.0.
npm package: @iameli/dev-env
Description: Local development environment helper for atproto development
Latest version: 0.2.33

# @iameli/dev-env: Local Developer Environment

A command-line application for developers to construct and manage development environments.

[![NPM](https://img.shields.io/npm/v/@iameli/dev-env)](https://www.npmjs.com/package/@iameli/dev-env)
[![Github CI Status](https://github.com/bluesky-social/atproto/actions/workflows/repo.yaml/badge.svg)](https://github.com/bluesky-social/atproto/actions/workflows/repo.yaml)

## REPL API

The following methods are available in the REPL.

### `status()`

List the currently active servers.

### `startPds(port?: number)`

Create a new PDS instance. Data is stored in memory.

### `stop(port: number)`

Stop the server at the given port.

### `mkuser(handle: string, pdsPort?: number)`

Create a new user.

### `user(handle: string): ServiceClient`

Get the `ServiceClient` for the given user.

## License

This project is dual-licensed under MIT and Apache 2.0 terms:

- MIT license ([LICENSE-MIT.txt](https://github.com/bluesky-social/atproto/blob/main/LICENSE-MIT.txt) or http://opensource.org/licenses/MIT)
- Apache License, Version 2.0, ([LICENSE-APACHE.txt](https://github.com/bluesky-social/atproto/blob/main/LICENSE-APACHE.txt) or http://www.apache.org/licenses/LICENSE-2.0)

Downstream projects and end users may chose either license individually, or both together, at their discretion. The motivation for this dual-licensing is the additional software patent assurance provided by Apache 2.0.
npm package: @iameli/identity
Description: Library for decentralized identities in atproto using DIDs and handles
Latest version: 0.3.2

# @iameli/identity

TypeScript library for decentralized identities in [atproto](https://atproto.com) using DIDs and handles

[![NPM](https://img.shields.io/npm/v/@iameli/identity)](https://www.npmjs.com/package/@iameli/identity)
[![Github CI Status](https://github.com/bluesky-social/atproto/actions/workflows/repo.yaml/badge.svg)](https://github.com/bluesky-social/atproto/actions/workflows/repo.yaml)

## Example

Resolving a Handle and verifying against DID document:

```typescript
const didres = new DidResolver({})
const hdlres = new HandleResolver({})

const handle = 'atproto.com'
const did = await hdlres.resolve(handle)

if (did == undefined) {
  throw new Error('expected handle to resolve')
}
console.log(did) // did:plc:ewvi7nxzyoun6zhxrhs64oiz

const doc = await didres.resolve(did)
console.log(doc)

// additional resolutions of same DID will be cached for some time, unless forceRefresh flag is used
const doc2 = await didres.resolve(did, true)

// helper methods use the same cache
const data = await didres.resolveAtprotoData(did)

if (data.handle != handle) {
  throw new Error('invalid handle (did not match DID document)')
}
```

## License

This project is dual-licensed under MIT and Apache 2.0 terms:

- MIT license ([LICENSE-MIT.txt](https://github.com/bluesky-social/atproto/blob/main/LICENSE-MIT.txt) or http://opensource.org/licenses/MIT)
- Apache License, Version 2.0, ([LICENSE-APACHE.txt](https://github.com/bluesky-social/atproto/blob/main/LICENSE-APACHE.txt) or http://www.apache.org/licenses/LICENSE-2.0)

Downstream projects and end users may chose either license individually, or both together, at their discretion. The motivation for this dual-licensing is the additional software patent assurance provided by Apache 2.0.
npm package: @iameli/lex-cli
Description: TypeScript codegen tool for atproto Lexicon schemas
Latest version: 0.3.0

# Lexicon CLI Tool

Command-line tool to generate Lexicon schemas and APIs.

## Usage

```
Usage: lex [options] [command]

Lexicon CLI

Options:
  -V, --version                     output the version number
  -h, --help                        display help for command

Commands:
  new [options] <nsid> [outfile]    Create a new schema json file
  gen-md <schemas...>               Generate markdown documentation
  gen-ts-obj <schemas...>           Generate a TS file that exports an array of schemas
  gen-api <outdir> <schemas...>     Generate a TS client API
  gen-server <outdir> <schemas...>  Generate a TS server API
  help [command]                    display help for command
```

**Example 1:** Generate an api

```
$ lex gen-api ./api/src ./schemas/com/service/*.json ./schemas/com/another/*.json
```

**Example 2:** Generate a server

```
$ lex gen-server ./server/src/xrpc ./schemas/com/service/*.json ./schemas/com/another/*.json
```

## License

This project is dual-licensed under MIT and Apache 2.0 terms:

- MIT license ([LICENSE-MIT.txt](https://github.com/bluesky-social/atproto/blob/main/LICENSE-MIT.txt) or http://opensource.org/licenses/MIT)
- Apache License, Version 2.0, ([LICENSE-APACHE.txt](https://github.com/bluesky-social/atproto/blob/main/LICENSE-APACHE.txt) or http://www.apache.org/licenses/LICENSE-2.0)

Downstream projects and end users may chose either license individually, or both together, at their discretion. The motivation for this dual-licensing is the additional software patent assurance provided by Apache 2.0.
npm package: @iameli/lexicon
Description: atproto Lexicon schema language library
Latest version: 0.3.1

# @iameli/lexicon: schema validation library

TypeScript implementation of the Lexicon data and API schema description language, which is part of [atproto](https://atproto.com).

[![NPM](https://img.shields.io/npm/v/@iameli/lexicon)](https://www.npmjs.com/package/@iameli/lexicon)
[![Github CI Status](https://github.com/bluesky-social/atproto/actions/workflows/repo.yaml/badge.svg)](https://github.com/bluesky-social/atproto/actions/workflows/repo.yaml)

## Usage

```typescript
import { Lexicons } from '@iameli/lexicon'

// create your lexicons collection
const lex = new Lexicons()

// add lexicon documents
lex.add({
  lex: 1,
  id: 'com.example.post',
  defs: {
    // ...
  }
})

// validate
lex.assertValidRecord('com.example.record', {$type: 'com.example.record', ...})
lex.assertValidXrpcParams('com.example.query', {...})
lex.assertValidXrpcInput('com.example.procedure', {...})
lex.assertValidXrpcOutput('com.example.query', {...})
```

## License

This project is dual-licensed under MIT and Apache 2.0 terms:

- MIT license ([LICENSE-MIT.txt](https://github.com/bluesky-social/atproto/blob/main/LICENSE-MIT.txt) or http://opensource.org/licenses/MIT)
- Apache License, Version 2.0, ([LICENSE-APACHE.txt](https://github.com/bluesky-social/atproto/blob/main/LICENSE-APACHE.txt) or http://www.apache.org/licenses/LICENSE-2.0)

Downstream projects and end users may chose either license individually, or both together, at their discretion. The motivation for this dual-licensing is the additional software patent assurance provided by Apache 2.0.
npm package: @iameli/ozone
Description: Backend service for moderating the Bluesky network.
Latest version: 0.0.12

# @iameli/ozone: Bluesky Moderation Service

Backend service for moderating the Bluesky network.

[![NPM](https://img.shields.io/npm/v/@iameli/ozone)](https://www.npmjs.com/package/@iameli/ozone)
[![Github CI Status](https://github.com/bluesky-social/atproto/actions/workflows/repo.yaml/badge.svg)](https://github.com/bluesky-social/atproto/actions/workflows/repo.yaml)

## License

This project is dual-licensed under MIT and Apache 2.0 terms:

- MIT license ([LICENSE-MIT.txt](https://github.com/bluesky-social/atproto/blob/main/LICENSE-MIT.txt) or http://opensource.org/licenses/MIT)
- Apache License, Version 2.0, ([LICENSE-APACHE.txt](https://github.com/bluesky-social/atproto/blob/main/LICENSE-APACHE.txt) or http://www.apache.org/licenses/LICENSE-2.0)

Downstream projects and end users may chose either license individually, or both together, at their discretion. The motivation for this dual-licensing is the additional software patent assurance provided by Apache 2.0.
npm package: @iameli/pds
Description: Reference implementation of atproto Personal Data Server (PDS)
Latest version: 0.4.1

# @iameli/pds: Personal Data Server (PDS)

TypeScript reference implementation of an atproto PDS.

[![NPM](https://img.shields.io/npm/v/@iameli/pds)](https://www.npmjs.com/package/@iameli/pds)
[![Github CI Status](https://github.com/bluesky-social/atproto/actions/workflows/repo.yaml/badge.svg)](https://github.com/bluesky-social/atproto/actions/workflows/repo.yaml)

If you are interested in self-hosting a PDS, you probably want this repository instead, which has a thin service wrapper, documentation, a Dockerfile, etc: https://github.com/bluesky-social/pds

## License

This project is dual-licensed under MIT and Apache 2.0 terms:

- MIT license ([LICENSE-MIT.txt](https://github.com/bluesky-social/atproto/blob/main/LICENSE-MIT.txt) or http://opensource.org/licenses/MIT)
- Apache License, Version 2.0, ([LICENSE-APACHE.txt](https://github.com/bluesky-social/atproto/blob/main/LICENSE-APACHE.txt) or http://www.apache.org/licenses/LICENSE-2.0)

Downstream projects and end users may chose either license individually, or both together, at their discretion. The motivation for this dual-licensing is the additional software patent assurance provided by Apache 2.0.
npm package: @iameli/repo
Description: atproto repo and MST implementation
Latest version: 0.3.7

# @iameli/repo: Repository and MST

TypeScript library for atproto repositories, and in particular the Merkle Search Tree (MST) data structure.

[![NPM](https://img.shields.io/npm/v/@iameli/repo)](https://www.npmjs.com/package/@iameli/repo)
[![Github CI Status](https://github.com/bluesky-social/atproto/actions/workflows/repo.yaml/badge.svg)](https://github.com/bluesky-social/atproto/actions/workflows/repo.yaml)

Repositories in atproto are signed key/value stores containing CBOR-encoded data records. The structure and implementation details are described in [the specification](https://atproto.com/specs/repository). This includes MST node format, serialization, structural constraints, and more.

## License

This project is dual-licensed under MIT and Apache 2.0 terms:

- MIT license ([LICENSE-MIT.txt](https://github.com/bluesky-social/atproto/blob/main/LICENSE-MIT.txt) or http://opensource.org/licenses/MIT)
- Apache License, Version 2.0, ([LICENSE-APACHE.txt](https://github.com/bluesky-social/atproto/blob/main/LICENSE-APACHE.txt) or http://www.apache.org/licenses/LICENSE-2.0)

Downstream projects and end users may chose either license individually, or both together, at their discretion. The motivation for this dual-licensing is the additional software patent assurance provided by Apache 2.0.
npm package: @iameli/syntax
Description: Validation for atproto identifiers and formats: DID, handle, NSID, AT URI, etc
Latest version: 0.1.5

# @iameli/syntax: validation helpers for identifier strings

Validation logic for [atproto](https://atproto.com) identifiers - DIDs, Handles, NSIDs, and AT URIs.

[![NPM](https://img.shields.io/npm/v/@iameli/crypto)](https://www.npmjs.com/package/@iameli/syntax)
[![Github CI Status](https://github.com/bluesky-social/atproto/actions/workflows/repo.yaml/badge.svg)](https://github.com/bluesky-social/atproto/actions/workflows/repo.yaml)

## Usage

### Handles

Syntax specification: <https://atproto.com/specs/handle>

```typescript
import { isValidHandle, ensureValidHandle, isValidDid } from '@iameli/syntax'

isValidHandle('alice.test') // returns true
ensureValidHandle('alice.test') // returns void

isValidHandle('al!ce.test') // returns false
ensureValidHandle('al!ce.test') // throws

ensureValidDid('did:method:val') // returns void
ensureValidDid(':did:method:val') // throws
```

### NameSpaced IDs (NSID)

Syntax specification: <https://atproto.com/specs/nsid>

```typescript
import { NSID } from '@iameli/syntax'

const id1 = NSID.parse('com.example.foo')
id1.authority // => 'example.com'
id1.name // => 'foo'
id1.toString() // => 'com.example.foo'

const id2 = NSID.create('example.com', 'foo')
id2.authority // => 'example.com'
id2.name // => 'foo'
id2.toString() // => 'com.example.foo'

const id3 = NSID.create('example.com', 'someRecord')
id3.authority // => 'example.com'
id3.name // => 'someRecord'
id3.toString() // => 'com.example.someRecord'

NSID.isValid('com.example.foo') // => true
NSID.isValid('com.example.someRecord') // => true
NSID.isValid('example.com/foo') // => false
NSID.isValid('foo') // => false
```

### AT URI

Syntax specification: <https://atproto.com/specs/at-uri-scheme>

```typescript
import { AtUri } from '@iameli/syntax'

const uri = new AtUri('at://bob.com/com.example.post/1234')
uri.protocol // => 'at:'
uri.origin // => 'at://bob.com'
uri.hostname // => 'bob.com'
uri.collection // => 'com.example.post'
uri.rkey // => '1234'
```

## License

This project is dual-licensed under MIT and Apache 2.0 terms:

- MIT license ([LICENSE-MIT.txt](https://github.com/bluesky-social/atproto/blob/main/LICENSE-MIT.txt) or http://opensource.org/licenses/MIT)
- Apache License, Version 2.0, ([LICENSE-APACHE.txt](https://github.com/bluesky-social/atproto/blob/main/LICENSE-APACHE.txt) or http://www.apache.org/licenses/LICENSE-2.0)

Downstream projects and end users may chose either license individually, or both together, at their discretion. The motivation for this dual-licensing is the additional software patent assurance provided by Apache 2.0.
npm package: @iameli/xrpc
Description: atproto HTTP API (XRPC) client library
Latest version: 0.4.1

# @iameli/xrpc: atproto HTTP API Client

TypeScript client library for talking to [atproto](https://atproto.com) services, with Lexicon schema validation.

[![NPM](https://img.shields.io/npm/v/@iameli/xrpc)](https://www.npmjs.com/package/@iameli/xrpc)
[![Github CI Status](https://github.com/bluesky-social/atproto/actions/workflows/repo.yaml/badge.svg)](https://github.com/bluesky-social/atproto/actions/workflows/repo.yaml)

## Usage

```typescript
import { LexiconDoc } from '@iameli/lexicon'
import xrpc from '@iameli/xrpc'

const pingLexicon: LexiconDoc = {
  lexicon: 1,
  id: 'io.example.ping',
  defs: {
    main: {
      type: 'query',
      description: 'Ping the server',
      parameters: {
        type: 'params',
        properties: { message: { type: 'string' } },
      },
      output: {
        encoding: 'application/json',
        schema: {
          type: 'object',
          required: ['message'],
          properties: { message: { type: 'string' } },
        },
      },
    },
  },
}
xrpc.addLexicon(pingLexicon)

const res1 = await xrpc.call('https://example.com', 'io.example.ping', {
  message: 'hello world',
})
res1.encoding // => 'application/json'
res1.body // => {message: 'hello world'}
const res2 = await xrpc
  .service('https://example.com')
  .call('io.example.ping', { message: 'hello world' })
res2.encoding // => 'application/json'
res2.body // => {message: 'hello world'}

const writeJsonLexicon: LexiconDoc = {
  lexicon: 1,
  id: 'io.example.writeJsonFile',
  defs: {
    main: {
      type: 'procedure',
      description: 'Write a JSON file',
      parameters: {
        type: 'params',
        properties: { fileName: { type: 'string' } },
      },
      input: {
        encoding: 'application/json',
      },
    },
  },
}
xrpc.addLexicon(writeJsonLexicon)

const res3 = await xrpc.service('https://example.com').call(
  'io.example.writeJsonFile',
  { fileName: 'foo.json' }, // query parameters
  { hello: 'world', thisIs: 'the file to write' }, // input body
)
```

## License

This project is dual-licensed under MIT and Apache 2.0 terms:

- MIT license ([LICENSE-MIT.txt](https://github.com/bluesky-social/atproto/blob/main/LICENSE-MIT.txt) or http://opensource.org/licenses/MIT)
- Apache License, Version 2.0, ([LICENSE-APACHE.txt](https://github.com/bluesky-social/atproto/blob/main/LICENSE-APACHE.txt) or http://www.apache.org/licenses/LICENSE-2.0)

Downstream projects and end users may chose either license individually, or both together, at their discretion. The motivation for this dual-licensing is the additional software patent assurance provided by Apache 2.0.
npm package: @iameli/xrpc-server
Description: atproto HTTP API (XRPC) server library
Latest version: 0.4.2

# @iameli/xrpc-server: atproto HTTP API server library

TypeScript library for implementing [atproto](https://atproto.com) HTTP API services, with Lexicon schema validation.

[![NPM](https://img.shields.io/npm/v/@iameli/xrpc-server)](https://www.npmjs.com/package/@iameli/xrpc-server)
[![Github CI Status](https://github.com/bluesky-social/atproto/actions/workflows/repo.yaml/badge.svg)](https://github.com/bluesky-social/atproto/actions/workflows/repo.yaml)

## Usage

```typescript
import { LexiconDoc } from '@iameli/lexicon'
import * as xrpc from '@iameli/xrpc-server'
import express from 'express'

const lexicons: LexiconDoc[] = [
  {
    lexicon: 1,
    id: 'io.example.ping',
    defs: {
      main: {
        type: 'query',
        parameters: {
          type: 'params',
          properties: { message: { type: 'string' } },
        },
        output: {
          encoding: 'application/json',
        },
      },
    },
  },
]

// create xrpc server
const server = xrpc.createServer(lexicons)

function ping(ctx: {
  auth: xrpc.HandlerAuth | undefined
  params: xrpc.Params
  input: xrpc.HandlerInput | undefined
  req: express.Request
  res: express.Response
}) {
  return { encoding: 'application/json', body: { message: ctx.params.message } }
}

server.method('io.example.ping', ping)

// mount in express
const app = express()
app.use(server.router)
app.listen(8080)
```

## License

This project is dual-licensed under MIT and Apache 2.0 terms:

- MIT license ([LICENSE-MIT.txt](https://github.com/bluesky-social/atproto/blob/main/LICENSE-MIT.txt) or http://opensource.org/licenses/MIT)
- Apache License, Version 2.0, ([LICENSE-APACHE.txt](https://github.com/bluesky-social/atproto/blob/main/LICENSE-APACHE.txt) or http://www.apache.org/licenses/LICENSE-2.0)

Downstream projects and end users may chose either license individually, or both together, at their discretion. The motivation for this dual-licensing is the additional software patent assurance provided by Apache 2.0.
npm package: @iamevan/electron-builder-squirrel-windows
Description: Plugin for [electron-builder](https://github.com/electron-userland/electron-builder) to build Squirrel.Windows installer.
Author: Vladimir Krivosheev
Latest version: 26.1.0

# electron-builder-squirrel-windows

Plugin for [electron-builder](https://github.com/electron-userland/electron-builder) to build Squirrel.Windows installer.
npm package: @iamevan/electron-forge-maker-appimage
Description: [electron-builder](https://github.com/electron-userland/electron-builder) [appimage](http://appimage.org) target for electron-forge.
Author: Vladimir Krivosheev
Latest version: 26.1.0

# electron-installer-appimage

[electron-builder](https://github.com/electron-userland/electron-builder) [appimage](http://appimage.org) target for electron-forge.

Recommended to build electron-forge project using electron-builder directly.
[Publishing](https://www.electron.build/publish),
[Auto Update](https://electron.build/auto-update)
and [Code Signing](https://electron.build/code-signing) supported only in this case
(including all other useful [packaging options](https://electron.build/configuration) like [files](https://electron.build./configuration.md#Config-files)).
npm package: @iamevan/electron-forge-maker-nsis
Description: [electron-builder](https://github.com/electron-userland/electron-builder) [nsis](https://electron.build/nsis) target for electron-forge.
Author: Vladimir Krivosheev
Latest version: 26.1.0

# electron-forge-maker-nsis

[electron-builder](https://github.com/electron-userland/electron-builder) [nsis](https://electron.build/nsis) target for electron-forge.

Recommended to build electron-forge project using electron-builder directly.
[Publishing](https://www.electron.build/publish),
[Auto Update](https://electron.build/auto-update)
and [Code Signing](https://electron.build/code-signing) supported only in this case
(including all other useful [packaging options](https://electron.build/configuration) like [files](https://electron.build./configuration.md#Config-files)).
npm package: @iamevan/electron-forge-maker-nsis-web
Description: [electron-builder](https://github.com/electron-userland/electron-builder) [nsis-web](https://electron.build/nsis) target for electron-forge.
Author: Vladimir Krivosheev
Latest version: 26.1.0

# electron-forge-maker-nsis-web

[electron-builder](https://github.com/electron-userland/electron-builder) [nsis-web](https://electron.build/nsis) target for electron-forge.

Recommended to build electron-forge project using electron-builder directly.
[Publishing](https://www.electron.build/publish),
[Auto Update](https://electron.build/auto-update)
and [Code Signing](https://electron.build/code-signing) supported only in this case
(including all other useful [packaging options](https://electron.build/configuration) like [files](https://electron.build./configuration.md#Config-files)).
npm package: @iamevan/electron-forge-maker-snap
Description: [electron-builder](https://github.com/electron-userland/electron-builder) [snap](https://snapcraft.io) target for electron-forge.
Author: Vladimir Krivosheev
Latest version: 26.1.0

# electron-installer-snap

[electron-builder](https://github.com/electron-userland/electron-builder) [snap](https://snapcraft.io) target for electron-forge.

Recommended to build electron-forge project using electron-builder directly.
[Publishing](https://www.electron.build/publish),
[Auto Update](https://electron.build/auto-update)
and [Code Signing](https://electron.build/code-signing) supported only in this case
(including all other useful [packaging options](https://electron.build/configuration) like [files](https://electron.build./configuration.md#Config-files)).
npm package: @iamevan/electron-publish
Description: Part of [electron-builder](https://github.com/electron-userland/electron-builder).
Author: Vladimir Krivosheev
Latest version: 26.1.0

# electron-publish

Part of [electron-builder](https://github.com/electron-userland/electron-builder).

See the [Publishing Artifacts](https://www.electron.build/publish) for more information.

Can be used standalone.
npm package: @iamevan/electron-updater
Description: Cross platform updater for electron applications
Author: Vladimir Krivosheev
Latest version: 6.7.0

# electron-updater

This module allows you to automatically update your application. You only need to install this module and write two lines of code!
To publish your updates you just need simple file hosting, it does not require a dedicated server.

See [Auto Update](https://electron.build/auto-update) for more information.

Supported OS:
 - macOS ([Squirrel.Mac](https://github.com/Squirrel/Squirrel.Mac)).
 - Windows (NSIS).
 - Linux (AppImage, rpm, deb).

## Credits

Thanks to [Evolve Labs](https://www.evolvehq.com) for donating the npm package name.
npm package: @iamfuture/sdk
Description: 🛠 An SDK for building applications on top of iamfuture.
Latest version: 0.0.5

# Arborswap SDK

Forked from the [Uniswap SDK](https://github.com/Uniswap/uniswap-v2-sdk/commit/a88048e9c4198a5bdaea00883ca00c8c8e582605).

You can refer to the Uniswap SDK documentation [uniswap.org](https://docs.uniswap.org/sdk/2.0.0/).
npm package: @iamfuture/uikit
Description: Set of UI components for iamfuture projects
Latest version: 0.2.7

# 🥞 Pancake UIkit

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

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

## Install

`yarn add @pancakeswap-libs/uikit`

## Setup

### Theme

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

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

### Reset

A reset CSS is available as a global styled component.

```
import { ResetCSS } from '@pancakeswap-libs/uikit'
...
<ResetCSS />
```

### Types

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

## How to use the UIkit

If you want to use components from the UIkit, check the [Storybook documentation](https://pancakeswap.github.io/pancake-uikit/)