open-index/open-npm huggingface dataset:
npm package: @kurslog/metamask-snap
Description: Compare OTC exchange rates from 100+ exchangers — find the best rate for cash-out in your city
Latest version: 1.0.1

# Kurslog Rate Tracker

A MetaMask Snap that helps you find the best OTC exchange rates for cash-out in your city.

## Features

- **Transaction Insight** — When you swap tokens on Uniswap, SushiSwap, 1inch, or PancakeSwap, see the best OTC cash-out rates (Card UAH, Cash UAH, Cash USD) directly on the transaction confirmation screen
- **Home Page** — Browse popular exchange directions with real-time rates
- **Rate Check** — Compare rates from 100+ exchangers for any currency pair
- **Multi-country** — Supports 98 countries and 285 cities with localized names (Ukrainian, Russian, English)

## Supported DEXs

Uniswap V2/V3, Uniswap Universal Router, SushiSwap, 1inch v5/v6, PancakeSwap V2/V3, QuickSwap

## Supported Networks

Ethereum, Polygon, BSC

## Permissions

| Permission | Purpose |
|-----------|---------|
| `snap_dialog` | Display rate check results |
| `snap_getPreferences` | Auto-detect user language |
| `snap_manageState` | Save city, country, language preferences |
| `endowment:network-access` | Fetch rates from Kurslog API |
| `endowment:page-home` | Home page tab in MetaMask |
| `endowment:transaction-insight` | Show OTC rates during token swaps |

## Install

Install from npm in MetaMask Flask:

```
npm:@kurslog/metamask-snap
```

## Development

```bash
npm install
npx mm-snap watch
```

## Testing

```bash
npx jest
```

## License

MIT

## Links

- Website: [kurslog.com](https://kurslog.com)
- npm: [@kurslog/metamask-snap](https://www.npmjs.com/package/@kurslog/metamask-snap)
npm package: @kurtaking/backstage-plugin-announcements
Description: The Announcements plugin is a frontend, backend, and common plugin that manages and displays announcements within Backstage.
Latest version: 0.2.0
Deprecated: Package no longer supported. Contact Support at https://www.npmjs.com/support for more info.

# Announcements plugin for Backstage

The Announcements plugin is a frontend, backend, and common plugin that manages and displays announcements within Backstage.

This plugin provides:

- a component to display the latest announcements, for example on a homepage
- a component to display the latest announcements, for example on a homepage
- pages to list, view, create, edit and delete announcements
- integration with the [`@backstage/plugin-search`](https://github.com/backstage/backstage/tree/master/plugins/search) plugin
- integration with the [`@backstage/plugin-permission-backend`](https://github.com/backstage/backstage/tree/master/plugins/permission-backend) plugin

## Setup

See [the project's README](../../README.md).
npm package: @kurtaking/backstage-plugin-announcements-backend
Description: The Announcements plugin is both a frontend and a backend plugin that manages and displays announcements within Backstage.
Latest version: 0.3.0
Deprecated: Package no longer supported. Contact Support at https://www.npmjs.com/support for more info.

# Announcements plugin for Backstage

The Announcements plugin is both a frontend and a backend plugin that manages and displays announcements within Backstage.

This plugin provides:

- a component to display the latest announcement as a banner, if there is one
- a component to display the latest announcements, for example on a homepage
- pages to list, view, create, edit and delete announcements
- integration with the [`@backstage/plugin-search`](https://github.com/backstage/backstage/tree/master/plugins/search) plugin
- integration with the [`@backstage/plugin-permission-backend`](https://github.com/backstage/backstage/tree/master/plugins/permission-backend) plugin

## Setup

See [the project's README](../../README.md).
npm package: @kurtaking/backstage-plugin-announcements-common
Description: Common functionalities for the announcements plugin
Latest version: 0.1.0
Deprecated: Package no longer supported. Contact Support at https://www.npmjs.com/support for more info.

# Announcements plugin for Backstage

The Announcements plugin is a frontend, backend, and common plugin that manages and displays announcements within Backstage.

This plugin provides:

- a component to display the latest announcements, for example on a homepage
- a component to display the latest announcements, for example on a homepage
- pages to list, view, create, edit and delete announcements
- integration with the [`@backstage/plugin-search`](https://github.com/backstage/backstage/tree/master/plugins/search) plugin
- integration with the [`@backstage/plugin-permission-backend`](https://github.com/backstage/backstage/tree/master/plugins/permission-backend) plugin

## Setup

See [the project's README](../../README.md).

## Permissions

This plugin provides the following permissions:

- `announcementCreatePermission`: creating new announcement
- `announcementDeletePermission`: deleting announcements
- `announcementUpdatePermission`: updating announcements

View [Backstage docs](https://backstage.io/docs/permissions/getting-started) to learn how to set up your instance of Backstage to use these permissions.
npm package: @kurtb/canvas
Description: Fluid ink canvas
Author: Microsoft
Latest version: 0.1.0

# @fluid-example/canvas

Forked from https://github.com/microsoft/FluidFramework/tree/main/examples/data-objects/canvas

**Canvas** is a Fluid Component that displays a collaborative canvas you can draw on.

## Getting Started

If you want to run this example follow the following steps:

1. Run `npm install` from the `FluidFramework` root directory
2. Navigate to this directory
3. Run `npm run start`

## Data model

Canvas uses the following distributed data structures:

- SharedDirectory - root
- Ink - Append only stream designed for ink scenarios
npm package: @kurtb/fluid-prosemirror
Description: ProseMirror
Author: Microsoft
Latest version: 0.1.0

# @fluid-example/prosemirror

An experimental implementation of how to take the open source [ProseMirror](https://prosemirror.net/) rich text editor and
enable real-time coauthoring using the Fluid Framework.

## Getting Started

If you want to run this example follow the following steps:

1. Run `npm install` from the `FluidFramework` root directory
2. Navigate to this directory
3. Run `npm run start`

## Data model

ProseMirror uses the following distributed data structures:

- SharedDirectory - root
- SharedString - storing ProseMirror text

## Known Issues

This implementation stores the HTML output of the ProseMirror editor onto the SharedString. While this enables
collaboration it does not provide for a complete editor. Because rich editing features (ex. bold/italic) are stored
as HTML tags along with the text this can cause conflicts with multiple users applying conflicting styles resulting
in lost opening/closure tags.

A more complete solution would use the SharedString property bag to apply styles across text ranges. This allows for
styles to be merged in a more deterministic way.
npm package: @kurtb/shared-text
Description: Shared text
Author: Microsoft
Latest version: 0.1.0

# Originally forked from https://github.com/microsoft/FluidFramework/tree/main/examples/data-objects/shared-text

# @fluid-example/shared-text

An experimental implementation of writing a Rich Text Editor.

## History

**Shared Text** was the first editor written on the Fluid Framework and has evolved along with the framework.

## Getting Started

If you want to run this example follow the following steps:

1. Run `npm install` from the `FluidFramework` root directory
2. Navigate to this directory
3. Run `npm run start`
npm package: @kurtbruns/vector
Description: A library for creating vector graphics for the browser.
Author: Kurt Bruns
Latest version: 0.9.5

# Vector

Vector is a library for creating interactive math graphics on the web.

## Getting Started

See [the sandbox](https://github.com/kurtbruns/vector-sandbox) for an environment that uses the library.

## Development Workflow 

1.	Create a Feature Branch:
    
    Start development on a new feature or bug fix in a separate branch.

    ```sh
    git checkout -b feature/your-feature
    ```
    
2.	Commit Changes in the Feature Branch:

    Commit your changes regularly.
    
    ```sh
    git add . and git commit -m "Your commit message"
    ```

3.	Open a Pull Request (PR):

    Once your changes are ready, open a PR to merge your feature branch into the main branch.

    Ensure the PR undergoes code review and passes all tests.

4.	Merge the PR:

    Once approved, merge the PR into the main branch and follow the steps for publishing a new version.

    ```sh
    git checkout main
    git merge feature/your-feature
    ```

## Publishing a New Version

1. Commit changes in GIT: Committing changes to your codebase in Git should always come first. It provides a reference point for the changes you made.

2. Update the version number of the library: You should update the version number of your library after committing changes to your codebase. This will ensure the new version number corresponds to the committed changes. This command also creates a new Git tag for the new version.

    - `npm version patch` - This will increment the PATCH version (e.g., from 1.0.0 to 1.0.1). Use this when you make backward-compatible bug fixes.
    - `npm version minor` - This will increment the MINOR version (e.g., from 1.0.0 to 1.1.0). Use this when you add functionality in a backward-compatible manner.
    - `npm version major` - This will increment the MAJOR version (e.g., from 1.0.0 to 2.0.0). Use this when you make incompatible API changes.

3. Publish the changes to the repo.

```sh
git push origin main --follow-tags
```

4. Publish the library to the npm registry: This should be the last step. After committing your changes and updating your version number, you're now ready to publish those changes to the npm registry.

```sh
npm publish
```