open-index/open-npm huggingface dataset:
npm package: @futuredapp/eslint-config-nest
Description: Futured's linting style for Nest projects
Author: Futured
Latest version: 1.0.0

# ESLint Config for Nest projects

Futured's approach to styling Nest projects.

## Installation

```bash
$ npm install @futuredapp/eslint-config-nest --save-dev
```

or 

```bash
$ yarn add @futuredapp/eslint-config-nest -D
```

## Usage

Add the ESLint configuration to either your `eslint.config.mjs` or `eslint.config.js`:

### eslint.config.(m)js

```js
import eslintConfig from '@futuredapp/eslint-config-nest'

export default [
  {
    // Files to ignore must be listed first
    ignores: [], 
  },
  ...eslintConfig,
  {
    rules: {
      // your custom rules
    },
  },
]
```

## WebStorm

To update WebStorm to use the ESLint configuration on save, follow these steps:

1. Press **⌘ Сmd 0**, to open settings and then select **Languages & Frameworks | JavaScript | Code Quality Tools | ESLint**.

2. Select **Manual ESLint Configuration**.

3. In the Extra eslint options field, type `--flag unstable_ts_config`.

4. Click **Apply** to save the changes and close the dialog.
npm package: @futuredapp/eslint-config-nuxt
Description: Futured's linting style for Nuxt projects
Author: Futured
Latest version: 1.1.0

# ESLint Config for Nuxt projects

Futured's approach to styling Nuxt projects.

## Installation

```bash
$ npm install @futuredapp/eslint-config-nuxt --save-dev
```

or 

```bash
$ yarn add @futuredapp/eslint-config-nuxt -D
```

## Usage

Add the ESLint configuration to `eslint.config.js`:

### eslint.config.js

```js
import { createConfigForNuxt } from '@nuxt/eslint-config'
import eslintConfig from '@futuredapp/eslint-config-nuxt'

export default createConfigForNuxt().append(...eslintConfig)
```

## WebStorm

To update WebStorm to use the ESLint configuration on save, follow these steps:

1. Press **⌘ Сmd 0**, to open settings and then select **Languages & Frameworks | JavaScript | Code Quality Tools | ESLint**.

2. Select **Automatic ESLint Configuration**.

3. Check **Run `eslint --fix` on save**.

4. Click **Apply** to save the changes and close the dialog.
npm package: @futuredapp/eslint-config-quasar
Description: Futured's linting style for Quasar projects
Author: Futured
Latest version: 1.0.0

# ESLint Config for Quasar projects

Futured's approach to styling Quasar projects.

## Installation

```bash
$ npm install @futuredapp/eslint-config-quasar --save-dev
```

or 

```bash
$ yarn add @futuredapp/eslint-config-quasar -D
```

## Usage

Add the ESLint configuration to either your `eslint.config.mjs` or `eslint.config.js`:

### eslint.config.(m)js

```js
import eslintConfig from '@futuredapp/eslint-config-quasar'

export default [
  {
    // Files to ignore must be listed first
    ignores: [], 
  },
  ...eslintConfig,
  {
    rules: {
      // your custom rules
    },
  },
]
```

## WebStorm

To update WebStorm to use the ESLint configuration on save, follow these steps:

1. Press **⌘ Сmd 0**, to open settings and then select **Languages & Frameworks | JavaScript | Code Quality Tools | ESLint**.

2. Select **Manual ESLint Configuration**.

3. In the Extra eslint options field, type `--flag unstable_ts_config`.

4. Click **Apply** to save the changes and close the dialog.
npm package: @futurefabric/astro-imagetools
Description: Image Optimization tools for the Astro JS framework
Author: Rafid Muhymin
Latest version: 0.6.20

# **Astro ImageTools**

**Astro ImageTools** is a collection of tools for optimizing images, background images, and generating responsive images for the **Astro JS** framework.

## Features

Below is a short list of features that **Astro ImageTools** offers. For more information, please see component-specific or API-specific documentation.

- ✅ **Regular Image Optimization** (`<img>` and `<picture>`)
- ✅ **Background Image Optimization**
- ✅ **Responsive Images**
- ✅ **Simple and intuitive Art Direction API**
- ✅ **Lazy Loading**
- ✅ **Programmatic APIs**
- ✅ **Asynchronous Decoding**
- ✅ **Unique Breakpoints Calculation**
- ✅ **Preloading for urgent images**
- ✅ **SVG Tracing and Posterization**
- ✅ **100% Scoped CSS**
- ✅ **Four kind of Layouts: `constrained`, `fixed`, `fullWidth` & `fill`**
- ✅ **Three kind of Placeholder Images: `blurred`, `dominantColor` & `tracedSVG`**
- ✅ **Long list of supported Image Formats**
- ✅ **Long List of supported Configuration Options**
- ✅ **Supports Remote Images and Data URIs too**
- ✅ **Support for _`sharp`less_ Environments**
- ✅ **Both Memory-based and FS-based Caching for better Performance**
- ✅ **Respects to _Semantics of HTML_ as much as possible**

## Getting Started

To get started with **Astro ImageTools**, first check out the [Installation](https://astro-imagetools-docs.vercel.app/en/installation) documentation for instructions on how to install the `astro-imagetools` package.

If you are looking for the available components and APIs, please check out the [Components and APIs](https://astro-imagetools-docs.vercel.app/en/components-and-apis) documentation.

If you want to view live examples of the components, APIs, layouts, and placeholder images, check out the [Astro ImageTools Demo](https://astro-imagetools-demo.vercel.app/) website.

If you want to report any issues or have found a missing feature, please report it on [GitHub](https://github.com/RafidMuhymin/astro-imagetools/)!

Good luck out there, Astronaut. 🧑‍🚀
npm package: @futureforms/ngx-butter-icons
Description: **ngx-butter-icons** is a set of icons for easy scalable vector graphics on websites and in web application created with the Angular framework, created and maintained by [Future Forms](https://futureforms.studio).
Author: Future Forms GmbH
Latest version: 1.1.2

# ngx-butter-icons

**ngx-butter-icons** is a set of icons for easy scalable vector graphics on websites and in web application created with the Angular framework, created and maintained by [Future Forms](https://futureforms.studio).

## Demo

Visit our demo page and get an overview of over 250+ icons in two different sizes [icons.futureforms.studio](https://icons.futureforms.studio)

## Installation

You can install it through **npm**:

```bash
npm install @futureforms/ngx-butter-icons
```

In `angular.json` you have to add the following asset config to include the icons in your build:

```json
{
  "glob": "**/*",
  "input": "./node_modules/@futureforms/ngx-butter-icons/icons/",
  "output": "./ngx-butter-icons/"
}
```

The `angular.json` structure would then look like this:

```json
"projects": {
  "<YOUR_PROJECT>": {
    "architect": {
      "build": {
        "options": {
          "assets": [
            {
              "glob": "**/*",
              "input": "./node_modules/@futureforms/ngx-butter-icons/icons/",
              "output": "./ngx-butter-icons/"
            }
          ]
        }
      }
    }
  }
}
```

As final step you will also need to import `NgxButterIconsModule` in your module:

```typescript
import { NgxButterIconsModule } from '@futureforms/<TITLE>';

@NgModule({
  imports: [NgxButterIconsModule]
})
class AppModule {}
```

## Basic Usage

Use the `NgxButterIconComponent` in your templates like this:

```html
<ngx-butter-icon [icon]="briefcase--outlined-a" [size]="24"></ngx-butter-icon>
```
npm package: @futureimage/vite-plugin-mpa
Description: MPA for vite
Author: yyl_love_you@126.com
Latest version: 1.0.2

# vite-plugin-mpa

> Out-of-the-box multi-page-application (MPA) support for Vite - supports Vue2/3, React and others

<p align="center">
  <img alt="wakatime" src="https://wakatime.com/badge/github/IndexXuan/vite-plugin-mpa.svg" />
  <a href="https://github.com/IndexXuan/vite-plugin-mpa/actions/workflows/npm-publish.yml">
   <img alt="NPM Publish" src="https://github.com/IndexXuan/vite-plugin-mpa/actions/workflows/npm-publish.yml/badge.svg" style="max-width:100%;">
  </a>
  <a href="https://www.npmjs.com/package/vite-plugin-mpa" rel="nofollow">
    <img alt="downloads" src="https://img.shields.io/npm/dt/vite-plugin-mpa.svg">
  </a>
  <a href="https://www.npmjs.com/package/vite-plugin-mpa" rel="nofollow">
    <img alt="npm version" src="https://img.shields.io/npm/v/vite-plugin-mpa.svg" style="max-width:100%;">
  </a>
  <a href="https://github.com/IndexXuan/vite-plugin-mpa/blob/main/LICENSE">
    <img alt="License: MIT" src="https://img.shields.io/badge/License-MIT-yellow.svg" style="max-width:100%;">
  </a>
</p>

## Motivation

- Vite [natively supports multi-page apps](https://vitejs.dev/guide/build.html#multi-page-app), but you must configure `rollupOptions.input` manually
- When running vite dev, you must open `localhost:3000/src/pages/index/xxx.html` for `$projectRoot/src/pages/index/xxx.html`
- Similar to vue-cli, this plugin helps rewrite urls for MPA and auto open the first page for you
- Experimental: when building, organize the folder for you (like vue-cli) - e.g `dist/src/pages/subpage/index.html` will move to `dist/subpage/index.html`

## Usage

```sh
yarn add vite-plugin-mpa
```

```ts
// vite.config.ts
import mpa from 'vite-plugin-mpa'

// @see https://vitejs.dev/config/
export default defineConfig({
  plugins: [
    // ...other plugins
    mpa(/* options */),
  ],
})
```

## Options

```ts
{
  /**
   * open url path when server starts (customizable)
   * @default path of first-page
   */
  open: string
  /**
   * where to locate pages
   * @default 'src/pages', e.g. src/views
   */
  scanDir: string
  /**
   * how to locate page files (passed to fast-glob), e.g. index.{js,jsx}
   * @default 'main.{js,ts,jsx,tsx}'
   */
  scanFile: string
  /**
   * what is your html file name, e.g. index.html / main.html / entry.html / template.html
   * @default 'index.html'
   */
  filename: string
}
```

- [see more](https://github.com/IndexXuan/vite-plugin-mpa/blob/main/src/lib/options.ts)

## Examples

- see [src/examples](https://github.com/IndexXuan/vite-plugin-mpa/blob/main/examples)

- use shelljs after-build to organize dist folder (may be a better approach - help wanted)

## How It Works

- Uses fast-glob to collect all pages, e.g. src/pages/\*/main.{js,ts}, and calc MPA entries
- The result is passed into vite#rollupOptions#input


## Further Info
- [vue-cli-plugin-vite](https://github.com/IndexXuan/vue-cli-plugin-vite)
- [vite-plugin-html-template](https://github.com/IndexXuan/vite-plugin-html-template)
npm package: @futurekode/stablepay-react
Description: Headless React wrapper for USDC payments on Solana
Latest version: 0.8.3

# @futurekode/stablepay-react

Headless React components and helpers for accepting USDC on Solana with built-in verification.

This package is the reusable payment component layer. It does not depend on the hosted Payflow dashboard or request-page product.

## Install

```bash
npm install @futurekode/stablepay-react
```

## Usage

```tsx
import {
  StablePayProvider,
  StablePay,
  usePaymentVerification,
} from "@futurekode/stablepay-react";

export function Checkout() {
  const { status, verify } = usePaymentVerification();

  return (
    <StablePayProvider to="YOUR_WALLET">
      <StablePay
        amount={0.1}
        reference="order-123"
        metadata={{ requestId: "req_123", customerEmail: "alice@example.com" }}
        onSuccess={async (payload) => {
          console.log(payload.metadata?.requestId);
          await verify(payload);
        }}
      >
        <button>
          {status === "verifying"
            ? "Verifying..."
            : status === "pending"
              ? "Confirming..."
              : status === "confirmed"
                ? "Paid"
                : "Pay 0.1 USDC"}
        </button>
      </StablePay>
    </StablePayProvider>
  );
}
```

## API

- verifyPayment — verify a transaction against expected payment details
- waitForPaymentConfirmation — wait until a payment is confirmed
- usePaymentVerification — React hook for simplest integration

### `metadata`

`StablePay` accepts an optional `metadata` prop for app-side context.

```tsx
<StablePay
  amount={0.1}
  reference="order-123"
  metadata={{ requestId: "req_123", customerEmail: "alice@example.com" }}
  onSuccess={(payload) => {
    console.log(payload.metadata?.requestId);
  }}
>
  <button>Pay 0.1 USDC</button>
</StablePay>
```

`metadata` is:

- returned in the `onSuccess` payload
- useful for request IDs, customer context, or analytics source data
- not sent on-chain
- not persisted anywhere by the package itself
npm package: @futurelucas4502/light-electron-renderer
Description: A lightweight electron template renderer
Author: futurelucas4502
Latest version: 1.0.3

# light-electron-renderer
A lightweight template view renderer for electron

The goal of this project is to create a fully functional view renderer similair to that of express that can support: ejs, pug, haml, squirrelly and many other templating libraries

The idea here is that you use this and parse the `require('some-templating-language')` into this as well as the name of the render function e.g. if it was ejs it would be `renderFile` hopefully that makes sense if not take a look at the examples in the examples folder

You wil be able to install it using:

`npm i @futurelucas4502/light-electron-renderer`

Note: You **MUST** npm install whatever templating language your using

![Examples image](https://raw.githubusercontent.com/futurelucas4502/light-electron-renderer/master/assets/screenshot.png)

# Docs
[Documentation](https://futurelucas4502.github.io/docs/index.html?docs=light-electron-renderer)

# Confirmed working with:

* Windows 10 x64 & ejs
* Windows 10 x64 & haml
* Windows 10 x64 & pug
* Windows 10 x64 & squirrelly
* Windows 10 x64 & eta
* Windows 10 x64 & handlebars

# Libraries that can work with this but still have problems:
* Twig (see [here](https://github.com/futurelucas4502/light-electron-renderer/issues/3) for more info)

# Libraries that will have support added in the future:
https://github.com/futurelucas4502/light-electron-renderer/projects/2
npm package: @futurepay/checkout-sdk
Description: futurepay checkout SDK for integration
Author: futurepay
Latest version: 2.1.6

# FuturePay Checkout SDK

FuturePay 支付收银台 SDK，支持弹窗模式、嵌入式模式和表单模式，提供完整的 TypeScript 支持。

## 安装

```bash
npm install @futurepay/checkout-sdk
# 或
yarn add @futurepay/checkout-sdk
# 或
pnpm add @futurepay/checkout-sdk
```

## 快速开始

```javascript
import {
  openCheckoutModal,
  embedCheckout,
  createElementsCheckout,
} from "@futurepay/checkout-sdk";

// 获取session 需要商户自己的后端调用All-In-One Checkout (V2)生成sessionToken
// 获取session文档地址:https://doc.futurepay.global/docs/all-in-one-checkout-v2
const session = await fetch("your/api/session").then((res) => res.json());
const checkoutOptions = {
  sessionToken: session,
  env: "test", // 'test' | 'prod'
};
// 打开弹窗
await openCheckoutModal(checkoutOptions);

// 嵌入
await embedCheckout("#container", checkoutOptions);

// 表单嵌入
const submit = await createElementsCheckout("#container", checkoutOptions);
```

## 完整文档

查看完整的 API 文档、使用示例和集成指南：

**📖 [https://doc.futurepay.global/docs/futurepay-checkout-sdk](https://doc.futurepay.global/docs/futurepay-checkout-sdk)**

## 支持

如需技术支持，请访问我们的文档网站或联系技术支持团队。
npm package: @futureportal/parcel-transformer-package-version
Description: A transformer plugin for Parcel that replaces PACKAGE_VERSION with version from your package.json
Author: Rick van der Staaij
Latest version: 1.0.0

# Parcel v2 transformer: package version

If you need to use the package version of your package.json in your project, you can add this transformer to your
project. `PACKAGE_VERSION` will be replaced with the version in your `package.json`.

## Setup

In your `.pracelrc`, add the `@cimonitor/parcel-transformer-package-version` transformer for the files you want use the
package version in. In the example below we would like to use the package version in a `.tsx` file:

```pracelrc
{
    "extends": "@parcel/config-default",
    "transformers": {
        "*.{ts,tsx}": ["@cimonitor/parcel-transformer-package-version", "@parcel/transformer-typescript-tsc"],
    }
}
```

Add the `@cimonitor/parcel-transformer-package-version` package to your package.json with either yarn or npm.

Now, `PACKAGE_VERSION` will be replaced in the compiled code for the given file transformers.

**Note:** If you don't see any changes, remove your `.parcel-cache` folder and rebuild.

## Example

`About.tsx`:

```tsx
import { ReactElement } from 'react';

const About = (): ReactElement => <h1>About version PACKAGE_VERSION</h1>;

export default About;
```

`package.json`:

```json
{
    "version": "1.2.3"
}
```

Will output:

```html
About version 1.2.3
```
npm package: @futurert/rescript-koa
Description: koa.js bindings for rescript.
Author: Jinwei Peng
Latest version: 0.0.1-beta.5

# Rescript-Koa
![NPM](https://img.shields.io/npm/l/@futurert/rescript-koa) ![npm](https://img.shields.io/npm/v/@futurert/rescript-koa)
## example

### install

```shell
npm install @futurert/rescript-koa --save-dev
```

### bsconfig

You should add "@futurert/rescript-koa" in bs-dependencies, just like this:
```json
{
  "name": "rescript-project-template",
  "version": "0.0.1",
  "sources": {
    "dir" : "src",
    "subdirs" : true
  },
  "package-specs": {
    "module": "commonjs",
    "in-source": true
  },
  "bs-dependencies": [
    "@futurert/rescript-koa",
  ],
  "warnings": {
    "error" : "+101"
  }
}
```

### Get First Koa App

Koa is great for its middleware design, we just can use sync function as `app->use()` function params, just like here:

```rescript
open KoaJs.Koa
// init koa app
let app = koa(koaOptions())

// Just for instance.
// app.env = "development"

// you can use middleware like this
app->App.use(async (context, next) => {
  Js.log("1")
  context.body = "hello"
  await next();
  Js.log("2")
})

app->App.use(async (_, next) => {
  Js.log("3")
  await next()
  Js.log("4")
})

app->App.env("哈哈哈")

app->App.listen(~port = 3000, ~host= "127.0.0.1", ~callback= _ => Js.log("哈哈哈"))
// Js.log(app->App.env) 

// app.listen()
app->App.on("error", (err, ctx) => Js.log(err))
```

There is a [full example](./examples//index.res) to help you start, Let's try it!
npm package: @futurert/rescript-koa-router
Description: koa.js bindings for rescript.
Author: Jinwei Peng
Latest version: 0.0.1-beta.1

# Rescript-Koa-Router

## install

```shell
npm install @futurert/rescript-koa-router @koa/router @futurert/rescript-koa koa
```

This command will install all koa requirements.

+ @koa/router
[Router](https://github.com/koajs/router) middleware for Koa.

+ @futurert/rescript-koa-router
rescript bindings for @koa/router

+ koa
lightweight web framework for node.js, [find more...](https://github.com/koajs/koa)

+ @futurert/rescript-koa
rescript bindings for koa

## How to use this?

```Rescript
open Router
open! Koa

let app = Koa.koa()

let router = Router.router(None)

router->get("/login", (context, next) => {
    context.body = "hello"
})

app->use(router->routes())

let _ = app->listen(8080, _ => {Js.Console.log("server is start success!")})
```

Just like this, you should using this router with [rescript-koa](https://github.com/FutureRuntime/rescript-koa), try it for fun!
npm package: @futurert/theme
Description: BeingThink official site support component that fork from @vue/theme.
Author: Evan You
Latest version: 1.1.7

# Vue Theme

This is the [VitePress](https://vitepress.vuejs.org/) theme for the official Vue documentation at `vuejs.org`.

Please note this theme is solely dedicated for `vuejs.org` and isn't meant to be used as a content-neutral theme. It does **not** follow semver and may contain hard-coded logic specific to the Vue documentation.

## Development Setup

This repo can be developed on its own since it is a self-contained VitePress theme. Make sure to use [pnpm](https://pnpm.io/) as the package manager when installing deps. A demo app is available in `/demo` and can be run with `npm run dev`:

```bash
$ pnpm install
$ npm run dev
```

## Developing with Real Content

To work on this theme in the context of the `vuejs.org` website requires cloning both repos and linking the theme into the docs repo:

1. Clone repositories:

   ```bash
   git clone git@github.com:vuejs/docs.git
   git clone git@github.com:vuejs/theme.git
   ```

2. Link theme into docs repo:

   ```bash
   # In ./theme
   pnpm install
   # Make @vue/theme available for global linking
   pnpm link --global

   # in ./docs
   pnpm install
   # Link theme
   pnpm link --global @vue/theme
   ```

3. Start VitePress server:

   ```bash
   # in ./docs
   pnpm run dev
   ```

### Available Scripts

Here is the list of available scripts that can be used during the development.

```bash
# Boot local dev server.
$ npm run dev

# Build demo, then serve locally. This is for testing
# production build in the local environment.
$ npm run serve

# Run lint via Prettier.
$ npm run lint

# Run type check via tsc.
$ npm run type
```

## License

[MIT](http://opensource.org/licenses/MIT)

Copyright (c) 2021-present Evan You
npm package: @futurestudio/hercules
Description: Hercules is a Vagrant box that provides a great development environment.
Author: Marcus Pöhls
Latest version: 1.5.1

<div align="center">
  <img src="https://github.com/futurestudio/hercules/blob/master/media/hercules.png?raw=true" alt="hercules logo" width="471" style="max-width:100%;">
  <br/>
  <br/>
  <p>
    The single development box that provides commonly used databases and tools.
  </p>
  <br/>
  <br/>
  <p>
    <a href="https://travis-ci.org/futurestudio/hercules"><img src="https://travis-ci.org/futurestudio/hercules.svg?branch=master" alt="Build Status" data-canonical-src="https://travis-ci.org/futurestudio/hercules.svg?branch=master" style="max-width:100%;"></a>
    <a href="https://snyk.io/test/github/futurestudio/hercules?targetFile=package.json"><img src="https://snyk.io/test/github/futurestudio/hercules/badge.svg?targetFile=package.json" alt="Known Vulnerabilities" data-canonical-src="https://snyk.io/test/github/futurestudio/hercules?targetFile=package.json" style="max-width:100%;"></a>
    <a href="https://www.npmjs.com/package/@futurestudio/hercules"><img src="https://img.shields.io/npm/v/@futurestudio/hercules.svg" alt="hercules Version" data-canonical-src="https://img.shields.io/npm/v/@futurestudio/hercules.svg" style="max-width:100%;"></a>
    <a href="https://greenkeeper.io/" rel="nofollow" class="rich-diff-level-one"><img src="https://badges.greenkeeper.io/futurestudio/hercules.svg" alt="Greenkeeper badge" data-canonical-src="https://badges.greenkeeper.io/futurestudio/hercules.svg" style="max-width:100%;"></a>

  </p>
  <p>
    <em>Follow <a href="http://twitter.com/marcuspoehls">@marcuspoehls</a> for updates!</em>
  </p>
</div>

------

Future Studio Hercules provisions a global Vagrant box that gives you a great development setup. No need to create an individual Vagrant box for each of your project.

```bash
npm i -g @futurestudio/hercules
```

Hercules is the single development box you can use for all your projects. It ships with commonly used databases and tools. It also comes with a CLI called **`hercules`**.

Hercules is disposable. If things are messed up, just throw out the old one and create a new box.


Find the [extensive documentation here](https://boost.futurestud.io/docs/master/hercules).


## License

MIT © [Future Studio](https://futurestud.io)

---

> [futurestud.io](https://futurestud.io) &nbsp;&middot;&nbsp;
> GitHub [@futurestudio](https://github.com/futurestudio/) &nbsp;&middot;&nbsp;
> Twitter [@futurestud_io](https://twitter.com/futurestud_io)
npm package: @futureswap/sdk
Description: 🛠 An SDK for building applications on top of FutureSwap.
Latest version: 1.0.40

# Uniswap SDK

[![code style: prettier](https://img.shields.io/badge/code_style-prettier-ff69b4.svg?style=flat-square)](https://github.com/prettier/prettier)
[![Actions Status](https://github.com/Uniswap/uniswap-sdk/workflows/CI/badge.svg)](https://github.com/Uniswap/uniswap-sdk)
[![npm version](https://img.shields.io/npm/v/@uniswap/sdk/latest.svg)](https://www.npmjs.com/package/@uniswap/sdk/v/latest)
[![npm bundle size (scoped version)](https://img.shields.io/bundlephobia/minzip/@uniswap/sdk/latest.svg)](https://bundlephobia.com/result?p=@uniswap/sdk@latest)

In-depth documentation on this SDK is available at [uniswap.org](https://uniswap.org/docs/v2/SDK/getting-started/).

## Running tests

To run the tests, follow these steps. You must have at least node v10 and [yarn](https://yarnpkg.com/) installed.

First clone the repository:

```sh
git clone https://github.com/Uniswap/uniswap-sdk.git
```

Move into the uniswap-sdk working directory

```sh
cd uniswap-sdk/
```

Install dependencies

```sh
yarn install
```

Run tests

```sh
yarn test
```

You should see output like the following:

```sh
yarn run v1.22.4
$ tsdx test
 PASS  test/constants.test.ts
 PASS  test/pair.test.ts
 PASS  test/fraction.test.ts
 PASS  test/miscellaneous.test.ts
 PASS  test/entities.test.ts
 PASS  test/trade.test.ts

Test Suites: 1 skipped, 6 passed, 6 of 7 total
Tests:       3 skipped, 82 passed, 85 total
Snapshots:   0 total
Time:        5.091s
Ran all test suites.
✨  Done in 6.61s.
```
npm package: @futuretense/0chain-sdk
Description: js client library to interact with the 0Chain blockchain
Author: Johan Stén
Latest version: 0.0.4


# @futuretense/0chain-sdk

An unofficial javascript SDK for the 0chain blockchain

## Installation

    $ npm install @futuretense/0chain-sdk



```
import * as sdk from '@futuretense/0chain-sdk';

```


Create a network

```
const config = {
    'miners' : [
        'http://virb.devb.testnet-0chain.net:7071/',
        'http://vira.devb.testnet-0chain.net:7071/',
        'http://cala.devb.testnet-0chain.net:7071/',
        'http://calb.devb.testnet-0chain.net:7071/'  
    ],
    'sharders' : [
        'http://cala.devb.testnet-0chain.net:7171/',
        'http://vira.devb.testnet-0chain.net:7171/'  
    ],   
    'chain_id' :   '0afc093ffb509f059c55478bc1a60351cef7b4e9c008a53a6cc8241ca8617dfe',
    'clusterName' : 'devb',
    'transaction_timeout' : 20,
    'state ' : true
}

const network = new sdk.Network(config)
```


Copyright &copy; 2019 Future Tense, LLC
npm package: @futuretense/blake2xb
Description: BLAKE2xb cryptographic extended output function (XOF)
Latest version: 1.0.1

# @futuretense/blake2xb

BLAKE2xb cryptographic extended output function (XOF)

Based on the `@stablelib/blake2xs` package, modified to work for blake2b.

Copyright &copy; 2017 Dmitry Chestnykh

Copyright &copy; 2020 Future Tense, LLC
npm package: @futuretense/dalek-crypto
Description: Javascript bindings to *some* of the functionality in the brilliant `dalek cryptography`<sup>[1](#note1)</sup> set of Rust libraries
Author: Johan Stén
Latest version: 0.1.0

# dalek-crypto

Javascript bindings to *some* of the functionality in the brilliant `dalek cryptography`<sup>[1](#note1)</sup> set of Rust libraries

### Requirements

* Rust (https://www.rust-lang.org/tools/install)
* a target CPU with AVX2 extensions

### Installing and compiling

```
npm install @futuretense/dalek-crypto
```

### Benchmarks

||ed25519<sup>[2](#note2)</sup>|sodium-native<sup>[3](#note3)</sup>|dalek|dalek w/ AVX2|
|:--|--:|--:|--:|--:|
|Generate|41,565|23,172|25,099|23,861|
|Sign|43,173|24,548|26,873|25,565|
|Verify|121,710|75,394|73,841|46,266|
*Time in ms; 1,000,000 calls, on a 3GHz MBP*


Notes:<br>

<br><a name="note1"> 1) https://github.com/dalek-cryptography/
</a><br>
<br><a name="note2"> 2) https://www.npmjs.com/package/ed25519</a><br>
<br><a name="note3"> 3) https://www.npmjs.com/package/sodium-native</a><br>
npm package: @futuretense/ed25519-box
Description: Simple public-key encryption for nodejs and browsers
Author: Johan Stén
Latest version: 1.0.1

# @futuretense/ed25519-box

Simple public-key encryption for nodejs and browsers

Draws inspiration from `box` of NaCl, but works with ed25519 keys right away.

### ed25519-box vs nacl-box

* ed25519-box uses ed25519 key-pairs directly, whereas w/ nacl-box you have to transform ed25519 keys to curve25519 keys.
* ed25519-box gives you the choice of not using authentication, whereas nacl-box always adds a Poly1305 authentication tag.
* ed25519-box uses standard crypto APIs, already included in node.js, or in your browser -- no extra dependencies

## Installation

    npm install @futuretense/ed25519-box

## Usage

    import { encrypt, decrypt } from '@futuretense/ed25519-box';

## Functions

### Encrypt

``` javascript
async encrypt(privKey, pubKey, input, nonce, authenticate = true);
```

|Parameter|Type|Description|
|:--|:--|:--|
|privKey|Uint8Array|The private key of the sender|
|pubKey|Uint8Array|The public key of the recipient|
|input|Uint8Array|The data to be encrypted|
|nonce|Uint8Array|The message nonce|
|authenticate|Boolean|Should it be authenticated?|

|Return value|Description|
|:--|:--|
|Promise\<Uint8Array\>|The encrypted data|

### Decrypt

``` javascript
async decrypt(privKey, pubKey, input, nonce, authenticate = true);
```

|Parameter|Type|Description|
|:--|:--|:--|
|privKey|Uint8Array|The private key of the recipient|
|pubKey|Uint8Array|The public key of the sender|
|input|Uint8Array|The encrypted data|
|nonce|Uint8Array|The message nonce|
|authenticate|Boolean|Should it be authenticated?|

|Return value|Description|
|:--|:--|
|Promise\<Uint8Array\>|The decrypted data|

## Authentication

_Authenticated mode_ (which is the default) uses AES-256-GCM to add integrity control to the pot, to make it possible to verify that the provided cipher output has been encrypted by someone with access to the encryption key.

Authentication adds sixteen bytes of data to the output.

_Un-authenticated mode_ uses AES in counter mode (AES-256-CTR), and doesn't add any extra data.

## Nonce

Authenticated mode has a twelve byte nonce, and un-authenticated mode has a sixteen byte nonce.

In both modes, the nonces provided are used as initial values for the counters.


#### Nonce re-use

> The idea is that, for a given key, you should consider each counter value as "burnt" whenever you use it. -- Thomas Pornin

Both modes use stream ciphers that divide the input data into 128-bit blocks, which are then _exclusive-or:ed_
with the result of a function based on the encryption key and the counter value for a block.

If a _(key, counter)_-combination is ever used twice, this can be exploited to arrive at a block that's the _exclusive-or_ of the two unencrypted input blocks.

Copyright &copy; 2020 Future Tense, LLC
npm package: @futuretense/ed25519-dalek
Description: Javascript bindings to *some* of the functionality in the brilliant Rust library `ed25519-dalek`<sup>[1](#note1)</sup>
Author: Johan Stén
Latest version: 0.1.0
Deprecated: this package has been deprecated

# ed25519-dalek

Javascript bindings to *some* of the functionality in the brilliant Rust library `ed25519-dalek`<sup>[1](#note1)</sup>

### Requirements

* Rust (https://www.rust-lang.org/tools/install)
* a target CPU with AVX2 extensions

### Installing and compiling

```
npm install @futuretense/ed25519-dalek
```

### Benchmarks

||ed25519<sup>[2](#note2)</sup>|sodium-native<sup>[3](#note3)</sup>|dalek|dalek w/ AVX2|
|:--|--:|--:|--:|--:|
|Generate|41,565|23,172|25,099|23,861|
|Sign|43,173|24,548|26,873|25,565|
|Verify|121,710|75,394|73,841|46,266|
*Time in ms; 1,000,000 calls, on a 3GHz MBP*


Notes:<br>

<br><a name="note1"> 1) https://github.com/dalek-cryptography/ed25519-dalek</a><br>
<br><a name="note2"> 2) https://www.npmjs.com/package/ed25519</a><br>
<br><a name="note3"> 3) https://www.npmjs.com/package/sodium-native</a><br>
npm package: @futuretense/herumi-bls
Description: BLS signatures using the BN-254 curve of Herumi/BLS
Author: Johan Stén
Latest version: 0.0.1

# @futuretense/herumi-bls

A Javascript implementation of BLS signatures using the BN-254 curve of Herumi/BLS.

This repository sits as a layer on top of Apache Software Foundation's
`milagro-crypto-js` project, making it compatible with the specifics of MITSUNARI Shigeo's
`herumi/bls` implementation.

Copyright &copy; 2019 Future Tense, LLC
npm package: @futuretense/ot
Description: Oblivious Transfers
Author: Johan Stén
Latest version: 1.0.0

# @futuretense/ot

A TypeScript library for Oblivious Transfer (OT) primitives, featuring Random OT (ROT) as a base and KOS15 as an efficient OT extension. Built for cryptographic developers, this package provides flexible OT implementations for secure protocols like multi-party computation (MPC), private set intersection (PSI), and more.

## Features
- **Base OT (ROT)**: Random Oblivious Transfer with elliptic curve cryptography for small-scale OT generation.
- **OT Extension (KOS15)**: Scales base OTs to large \(n\).
- **Class-Based**: Sender/receiver classes for clean, stateful OT workflows.

## Installation
```bash
npm install @futuretense/ot
```

## Usage

### Random OT (ROT)

Generate and process (n) random OT pairs:

```typescript
import { ROTSender, ROTReceiver } from '@futuretense/ot';

// Sender
const sender = new ROTSender(128); // 128 OTs
const A = sender.send1(); // Initial message

// Receiver
const receiver = new ROTReceiver(128);
const B = receiver.recv(A); // Receiver's response
sender.send2(B); // Finalize OT

console.log(sender.e); // Sender's OT outputs (Uint8Array[][])
console.log(receiver.ec); // Receiver's OT outputs (Uint8Array[])
console.log(receiver.choice); // Receiver's choice bits (Uint8Array)
```

### OT Extension (KOS15)

Extend base OTs to (n) correlated OTs:

```typescript
import { ROTSender, ROTReceiver, OTESender, OTEReceiver } from '@futuretense/ot';

// Base OT
const rotSender = new ROTSender(128);
const rotReceiver = new ROTReceiver(128);
const A = rotSender.send1();
const B = rotReceiver.recv(A);
rotSender.send2(B);

// Extend
const oteSender = new OTESender(rotSender, 256); // 256 OTs
const oteReceiver = new OTEReceiver(rotReceiver, 256);
const m = oteSender.send();
oteReceiver.recv(m);

console.log(oteSender.ec); // Sender's extended outputs (Uint8Array[])
console.log(oteReceiver.e); // Receiver's extended outputs (Uint8Array[][])
console.log(oteReceiver.choice); // Receiver's extended choice bits (Uint8Array)
```

## Notes

ROT is a Simplest OT, with collision resistant hashing.
OTE implements the 2022 update of the KOS15 protocol, making it actively secure.

Copyright © 2025 Future Tense, LLC
npm package: @futuretense/proxy-reencryption
Description: Self-Encryption/Proxy Re-encryption
Author: Johan Stén
Latest version: 2.0.0

# @futuretense/proxy-reencryption

Self-Encryption/Proxy Re-encryption

This is an implementation of the SE-PRE scheme of
"Sharing of Encrypted files in Blockchain Made Simpler" (https://eprint.iacr.org/2019/418.pdf),
compatible with the implementation in `https://github.com/0chain/gosdk`

> Proxy re–encryption schemes are cryptosystems which allow third parties (proxies) to alter a ciphertext which has been encrypted for one party, so that it may be decrypted by another.

Copyright &copy; 2020 Future Tense, LLC
npm package: @futuretense/secret-box
Description: Simple symmetric encryption for nodejs and browsers
Author: Johan Stén
Latest version: 1.0.0

# @futuretense/secret-box

Simple symmetric-key encryption for nodejs and browsers

Draws inspiration from `secret box` of NaCl, but uses AES 
instead of ChaCha20-Poly1305. The benefit is less code, and faster code,
since AES is implemented natively by the `crypto` module in nodejs, and by the Web Cryptography API in browsers.

## Usage

```
import { encrypt, decrypt } from '@futuretense/secret-box'

const cipherText = await encrypt(data, key, nonce, useAuthentication);
const plainText  = await decrypt(cipherText, key, nonce, useAuthentication);
```

## Authentication

_Authenticated mode_ (which is the default) uses AES-256-GCM to add integrity control to the pot, to make it possible to verify that the provided cipher output has been encrypted by someone with access to the encryption key.

Authentication adds sixteen bytes of data to the output.

_Un-authenticated mode_ uses AES in counter mode (AES-256-CTR), and doesn't add any extra data.

## Nonces

Authenticated mode has a twelve byte nonce, and un-authenticated mode has a sixteen byte nonce.

In both modes, the nonces provided are used as initial values for the counters.

#### Nonce re-use

Don't.

Both modes use stream ciphers that divide the input data into 128-bit blocks, which are then _exclusive-or:ed_
with the result of a function based on the encryption key and the counter value for a block.

If a _(key, counter)_-combination is ever used twice, this can be exploited to arrive at a block that's the _exclusive-or_ of the two unencrypted input blocks.

---
Copyright &copy; 2020 Future Tense, LLC
npm package: @futuretense/secret-memo
Description: Create secret transaction memos using public-key encryption.
Author: Johan Stén
Latest version: 1.0.0

# @futuretense/secret-memo

Create secret transaction memos using public-key encryption.

Uses `@futuretense/stellar-box` in un-authenticated mode (since the transaction is signed anyway),
with the sequence number of the transaction source account ("the sender") as the nonce.

All memo types are supported.


## Installation

    npm install @futuretense/secret-memo

## Usage

### Creating an encrypted memo
``` typescript
import { encodeMemo } from '@futuretense/secret-memo';

...

const memo = Memo.id('1543624365');

const account = await server.loadAccount(user1);
const secret = await encodeMemo(account.sequenceNumber(), keys1, user2, memo);
const builder = new TransactionBuilder(account, {
    networkPassphrase: Networks.PUBLIC,
    fee: 1000,
});

...

builder.setTimeout(0);
builder.addMemo(secret);
const tx = builder.build();

const xdr = tx.toXDR();
```

### Decoding a memo from a transaction
``` typescript
import { decodeTransactionMemo } from '@futuretense/secret-memo';

const tx = new Transaction(xdr, Networks.PUBLIC);
const memo = await decodeTransactionMemo(tx, keys2);
```

Copyright &copy; 2020 Future Tense, LLC
npm package: @futuretense/stellar-box
Description: Simple public-key encryption using Stellar keys
Author: Johan Stén
Latest version: 1.0.1

# @futuretense/stellar-box

Simple public-key encryption using your Stellar keys

Draws inspiration from `box` of NaCl, but works with Stellar keys right away.

### stellar-box vs nacl-box

* stellar-box uses ed25519 key-pairs directly, whereas w/ nacl-box you have to transform ed25519 keys to curve25519 keys.
* stellar-box gives you the choice of not using authentication, whereas nacl-box always adds a Poly1305 authentication tag.
* stellar-box uses standard crypto APIs, already included in node.js, or in your browser -- no extra dependencies

## Installation

    npm install @futuretense/stellar-box

## Usage

    import { encrypt, decrypt } from '@futuretense/stellar-box';

## Functions

### Encrypt

``` javascript
async encrypt(keys, to, input, nonce, authenticate = true);
```

|Parameter|Type|Description|
|:--|:--|:--|
|keys|Keypair|The keypair of the sender|
| to |string|The public key of the recipient|
| input |Uint8Array|The data to be encrypted|
| nonce |Uint8Array|The message nonce|
| authenticate |Boolean|Should it be authenticated?|

|Return value|
|:--|
|Promise\<Uint8Array\>|

### Decrypt

``` javascript
async decrypt(keys, from, input, nonce, authenticate = true);
```

|Parameter|Type|Description|
|:--|:--|:--|
|keys|Keypair| The keypair of the recipient|
| from |string| The public key of the sender |
| input |Uint8Array| The encrypted data|
| nonce |Uint8Array|The message nonce|
| authenticate |Boolean|Should it be authenticated?|

|Return value|
|:--|
|Promise\<Uint8Array\>|

## Authentication

_Authenticated mode_ (which is the default) uses AES-256-GCM to add integrity control to the pot, to make it possible to verify that the provided cipher output has been encrypted by someone with access to the encryption key.

Authentication adds sixteen bytes of data to the output.

_Un-authenticated mode_ uses AES in counter mode (AES-256-CTR), and doesn't add any extra data.

## Nonce

Authenticated mode has a twelve byte nonce, and un-authenticated mode has a sixteen byte nonce.

In both modes, the nonces provided are used as initial values for the counters.


#### Nonce re-use

> The idea is that, for a given key, you should consider each counter value as "burnt" whenever you use it. -- Thomas Pornin

Both modes use stream ciphers that divide the input data into 128-bit blocks, which are then _exclusive-or:ed_
with the result of a function based on the encryption key and the counter value for a block.

If a _(key, counter)_-combination is ever used twice, this can be exploited to arrive at a block that's the _exclusive-or_ of the two unencrypted input blocks.

Copyright &copy; 2020 Future Tense, LLC
npm package: @futuretense/stellar-multisig
Description: [![Build Status](https://travis-ci.com/future-tense/stellar-multisig.svg?branch=master)](https://travis-ci.com/future-tense/stellar-multisig)
Author: Johan Stén
Latest version: 0.1.2

# @futuretense/stellar-multisig

[![Build Status](https://travis-ci.com/future-tense/stellar-multisig.svg?branch=master)](https://travis-ci.com/future-tense/stellar-multisig)


# Install

Using npm:

`npm install --save @futuretense/stellar-multisig`

or, using yarn:

`yarn add @futuretense/stellar-multisig`


# Usage

```
import StellarSdk from 'stellar-sdk';
import multisig from '@futuretense/stellar-multisig';

const server = StellarSdk.Server('...');
const networkId = StellarSdk.hash(StellarSdk.Networks.PUBLIC);

const tx = StellarSdk.TransactionBuilder('...').build();

...

const sources = multisig.getTransactionSourceAccounts(tx);
const accounts = await multisig.fetchSourceAccounts(server, sources);

const signatures = ['...', '...', ...];
const res = multisig.isApproved(tx, networkId, accounts, signatures);
```

Copyright &copy; 2018-2019 Future Tense, LLC
npm package: @futuretense/stellar-musig
Description: Three round m-of-m key aggregation for Stellar using the MuSig signature scheme
Author: Johan Stén
Latest version: 0.0.3

# @futuretense/stellar-musig

Three round m-of-m key aggregation for Stellar using the MuSig signature scheme

## Installation

`npm install @futuretense/stellar-musig`

## Usage

#### Import the library
```javascript
import * as musig from '@futuretense/stellar-musig';
```

#### Set up a configuration object
```javascript
const keys1 = StellarSdk.Keypair.random();
const keys2 = StellarSdk.Keypair.random();

const config = new musig.Config([
    keys1.publicKey(),
    keys2.publicKey()
]);

const publicKey = config.publicKey;
```

#### Create user sessions
```javascript
const transaction = new StellarSdk.TransactionBuilder(...)
                    ...
                    .build();

const session1 = new musig.Session(config, keys1, {tx: transaction});
const session2 = new musig.Session(config, keys2, {tx: transaction});
```

#### Round #1
```javascript
const c1 = session1.getLocalCommitment();
const c2 = session2.getLocalCommitment();
session1.setRemoteCommitment(...c2);
session2.setRemoteCommitment(...c1);
```

#### Round #2
```javascript
const n1 = session1.getLocalNonce();
const n2 = session2.getLocalNonce();
session1.setRemoteNonce(...n2);
session2.setRemoteNonce(...n1);
```

#### Round #3
```javascript
const s1 = session1.getLocalSignature();
const s2 = session2.getLocalSignature();
session1.setRemoteSignature(...s2);
session2.setRemoteSignature(...s1);
```

#### Verify the signature
```javascript
const signature = session1.aggregateSignature;
const vk = StellarSdk.Keypair.fromPublicKey(publicKey);
console.log(vk.verify(message, signature));
```

Copyright &copy; 2019 Future Tense, LLC
npm package: @futurethemes/galaxy
Description: Galaxy Theme from FutureThemes
Author: Jacob Jenkins
Latest version: 1.0.6


# Galaxy Theme 🚀🌌

## From FutureThemes

[Documentation](https://docs.futurethemes.io)

Galaxy is the very first theme from FutureThemes!

Galaxy is a beautiful, hand-crafted deep space experience! Galaxy is designed to be futuristic, with nice gradients and soft fade animations.

Galaxy is made using using only Vanilla JS, CSS, TailwindCSS and a tiny pinch of ThreeJS to transport you to the depths of the universe!

Galaxy is built to be fast and get you going as quickly as possible. It's fully installable from NPM, so no awkward updating using new files or relying on any 3rd party services!

Galaxy includes Astro-Blog as standard, which means you
can get creating blog content immediately! Find out more at [Astro-Blog](https://github.com/futurethemes/astro-blog/blob/main/package/README.md)

It also contains a pre-built Contact Form which can be configured to use SendGrid or EmailJS so it's super easy to plug-and-play.

Also every single page is built for amazing SEO using the Astro-SEO package as standard so you can get your site ranking ASAP.

### Features

- **Rapid** - Galaxy is Q U I C K.
- **Easy to use** - Get up and running in minutes, not hours.
- **Blog as standard** - Easily set up a beautiful, scalable and paginated blog with a single flag.
- **Animations** - Ultra quick, buttery smooth animations using nothing more than vanilla JS and CSS
- **Only one prod dependency** - Galaxy only requires ThreeJS to run, everything else is vanilla baby.
- **Nav links as config** - Easily set up links in both your nav and your footer through the plugin config, no messing around with tags, json or manually entering anchor tags!
- **Your brand images** - Easily configure your logo, or both a light and dark logo using just the config.
- **SEO Powerhouse** - Galaxy is powered by [Astro-SEO](https://github.com/jonasmerlin/astro-seo) which means each page is fully ready to get ranking by search engines.
- **SendGrid and EmailJS integration out the box** - Just provide your API keys in your env and the contact form will JustWork™️!

### Getting Started

Install using the Astro Create Template!

`pnpm create astro@latest --template futurethemes/galaxy`

[Documentation](https://docs.futurethemes.io)

---

Thank you so much for checking out Galaxy from FutureThemes!

#### From FutureThemes, made in York UK 👋💖