open-index/open-npm huggingface dataset:
npm package: @gypsy-js/options
Description: Parse process.argv as a structured object.
Author: qivmvip AT gmail DOT com
Latest version: 1.0.0-beta.9

# @gypsy-js/options

Parse process.argv as a structrured object.

```javascript
import * as options from '@gypsy-js/options'

console.log(JSON.stringify(options.parse(process.argv), null, 2));
```
npm package: @gyraff/connector
Description: Gyraff - Storage connector
Author: Weyoss
Latest version: 1.0.18

# Gyraff

This package is part of the [Gyraff framework](https://github.com/gyraff/gyraff).

Usage information and reference details can be found in [Gyraff documentation](https://github.com/gyraff/gyraff/wiki).

License: MIT
npm package: @gyraff/core
Description: Gyraff - The core framework
Author: Weyoss
Latest version: 1.0.51

# Gyraff

This package is part of the [Gyraff framework](https://github.com/gyraff/gyraff).

Usage information and reference details can be found in [Gyraff documentation](https://github.com/gyraff/gyraff/wiki).

License: MIT
npm package: @gyraff/error
Description: Gyraff - HTTP/Application error
Author: Weyoss
Latest version: 1.0.16

# Gyraff

This package is part of the [Gyraff framework](https://github.com/gyraff/gyraff).

Usage information and reference details can be found in [Gyraff documentation](https://github.com/gyraff/gyraff/wiki).

License: MIT
npm package: @gyraff/generator
Description: Gyraff - Application and module generator
Author: Weyoss
Latest version: 1.0.55

# Gyraff

This package is part of the [Gyraff framework](https://github.com/gyraff/gyraff).

Usage information and reference details can be found in [Gyraff documentation](https://github.com/gyraff/gyraff/wiki).

License: MIT
npm package: @gyraff/injector
Description: Gyraff - Service container implementation
Author: Weyoss
Latest version: 1.0.21

# Gyraff

This package is part of the [Gyraff framework](https://github.com/gyraff/gyraff).

Usage information and reference details can be found in [Gyraff documentation](https://github.com/gyraff/gyraff/wiki).

License: MIT
npm package: @gyraff/logger
Description: Gyraff - The default application logger
Author: Weyoss
Latest version: 1.0.16

# Gyraff

This package is part of the [Gyraff framework](https://github.com/gyraff/gyraff).

Usage information and reference details can be found in [Gyraff documentation](https://github.com/gyraff/gyraff/wiki).

License: MIT
npm package: @gyraff/migration
Description: Gyraff - Automated migrations and seeding
Author: Weyoss
Latest version: 1.0.19

# Gyraff

This package is part of the [Gyraff framework](https://github.com/gyraff/gyraff).

Usage information and reference details can be found in [Gyraff documentation](https://github.com/gyraff/gyraff/wiki).

License: MIT
npm package: @gyraff/model
Description: Gyraff - The base model
Author: Weyoss
Latest version: 1.0.19

# Gyraff

This package is part of the [Gyraff framework](https://github.com/gyraff/gyraff).

Usage information and reference details can be found in [Gyraff documentation](https://github.com/gyraff/gyraff/wiki).

License: MIT
npm package: @gyraff/validator
Description: Gyraff - A simple JSON Schema validator based on ZSchema
Author: Weyoss
Latest version: 1.0.19

# Gyraff

This package is part of the [Gyraff framework](https://github.com/gyraff/gyraff).

Usage information and reference details can be found in [Gyraff documentation](https://github.com/gyraff/gyraff/wiki).

License: MIT
npm package: @gyro-defi/pancakeswap-sdk
Description: 🛠 An SDK for building applications on top of Pancakeswap.
Latest version: 2.3.2-bsctest

# Pancakeswap 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://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/pancakeswap/pancakeswap-sdk.git
```

Move into the pancakeswap-sdk working directory

```sh
cd pancakeswap-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: @gyron/gdoc
Description: ```bash # 初始化项目 gdoc init [options] ```
Latest version: 0.2.1

# GD

```bash
# 初始化项目
gdoc init [options]
```

```bash
# 启动项目
gdoc start [options]
```

```bash
# 构建项目
gdoc build [options]
```

```bash
# 预览项目
gdoc serve [options]
```

### pm2

使用 `gdoc init` 将项目初始化完成之后，可以使用 `pm2` 保护项目让项目后台运行。

使用 pm2 将 gdoc 工具保护起来，避免意外关闭，可以使用以下命令启动 pm2 :

- SSR 模式可以这样

```bash
pm2 start npx -- gdoc start
```

- SSG 模式可以这样

```bash
# 构建项目，生成静态文件
gdoc build
# 启动一个静态资源服务器，将静态文件托管到 http://localhost:8080
pm2 start npx -- gdoc serve
```

### options

```ts
import type { RequestHandler } from 'express'

interface Options {
  port: number
  basePath: string // base path
  sourcePath: string // source path
  middleware: (output: object) => RequestHandler
}

function defineConfig(): Options {
  return {
    port: 3000,
    basePath: '/',
    sourcePath: 'docs',
    middleware: (output) => (req, res, next) => {
      res.json(output)
    },
  }
}
```

### Feature

- server自定义plugin
- ✅client自定义别名
- ✅界面显示路由列表
npm package: @gyrostable/core
Description: The Gyroscope Dollar core contracts
Latest version: 0.1.22

# Gyroscope core

This repository contains the core contracts and logic for Gyro reserves: https://gyro.finance

The documentation here is intended for contributors to this repository.
For the general Gyro documentation, please visit https://docs.gyro.finance


## Initial setup

First, install the dependencies and compile using

```
yarn install
yarn build
```

and for development purposes, link the package using

```
yarn link
```

## Running a node

Start a node

```
yarn run-node
```

This will print the accounts, including their private keys.
The first account holds many different tokens so we recommend importing
this account to MetaMask using its private key.

Then, in another terminal, deploy the contracts, export information and compile everything using

```
yarn build:full
```

At this stage, the SDK should work properly, try running the tests following the instructions at: https://github.com/stablecoin-labs/gyro-sdk


## Deploying to Kovan

```
yarn hardhat --network kovan deploy
yarn hardhat --network kovan run scripts/bind-pools.ts # bind balancer pools
yarn hardhat --network kovan run scripts/sync-prices.ts # set oracle prices
yarn hardhat --network kovan run scripts/setup-fund.ts # setup Gyro Fund
```

## Running tests

The tests are written using [Brownie](https://eth-brownie.readthedocs.io/).

Brownie needs to be installed first, using `pip install eth-brownie`

Tests can then be ran using

```
brownie test
```

## Verifying source code

Run the following command

```
npx hardhat --network kovan etherscan-verify --api-key API_KEY --force-license --license MIT
```

The API_KEY can be generated from Etherscan: https://etherscan.io/myapikey
npm package: @gyrostable/sdk
Description: TypeScript/JavaScript SDK to interact with Gyro.
Latest version: 0.1.28

# Gyro SDK

TypeScript/JavaScript SDK to interact with Gyro.

## Development

Follow the installation instructions of `https://github.com/stablecoin-labs/core`
including starting the node and linking the package.
Then run the following

```
yarn install
yarn link @gyrostable/core
yarn link
yarn build
```

To make sure everything is working, try running the tests using `yarn test`.

To compile automatically when changing something, run `yarn build --watch` instead of `yarn build`.

## Usage

The SDK is based around the `Gyro` class, which can be instantiated as follows:


```typescript
import { Gyro } from "@gyrostable/sdk";
import { ethers } from "ethers";

const provider = new ethers.providers.Web3Provider(window.ethereum);
const gyro = await Gyro.create(provider);

const tokens = await gyro.getSupportedTokens();

const usdt = tokens.find((t) => t.symbol === "USDT");
const weth = tokens.find((t) => t.symbol === "WETH");

const inputs = [
  { token: usdt.address, amount: MonetaryAmount.fromNormalized(2500, usdc.decimals) }
  { token: weth.address, amount: MonetaryAmount.fromNormalized(2, weth.decimals) }
];
const mintResult = await gyro.mint(inputs);
console.log(`Minted ${mintResult} tokens`);
const currentBalance = await gyro.balance();
console.log(`Gyro balance: ${currentBalance.toNormalizedString()}`);
```
npm package: @gyrus/ngx-ui-output-bus
Description: Helper functions and types to merge Angular Component @Outputs into a bus to reduce template footprint
Author: Tom White
Latest version: 0.2.0

# ngx-ui-output-bus

Helper functions to merge Angular Component @Outputs into a bus to reduce template footprint.

## Background

When creating components that get used in many places, (i.e. apps that use common features), having many @Inputs and @Outputs makes the container templates bloated and hard to read. On top of that, repeated revisions of the UI component might include changes or additions to @Inputs and @Outputs that need to be updated in every template (and underlying local state) where the component is used. Some of these can easily be missed by the compiler (e.g. if the UI component doesn't throw an error for missing @Inputs or unused @Outputs), meaning that all implementations have to be updated manually.

## About

This library provides helper functions to create Output Events of different types that emit on a single bussed @Output. It has the extra benefits of optional logging, and optional error throw if an unexpected event type comes through the bus - helping you to develop and debug your bus.

Whilst this is a published library, my intention is not necessarily that you consume this in it's published form only. Please feel welcome to clone the Github repo and migrate the lib into your code (just leave me a Github star to make me happy), and then you can tweak the Output Event Bus interface object to suit your needs. It's simple enough to not require changes against future Angular versions.

## Usage

Emitting Output Bus Events inside the child UI component:

```javascript
  @Output() outBus: EventEmitter<AddBookFormSubmitEvent> = new EventEmitter();

  submit() {
    outBusEmit<AddBookFormSubmitEvent>(
      this.outBus,
      OutputEventNames.AddBookFormSubmit,
      this.formGroup.getValue()
    );
  }
```

Listening for Output Bus Events in the container template:

```html
<app-add-book-form
  [data]="vm.addBookFormData"
  (outBus)="outHandler($event)"
></app-add-book-form>
```

Handling Output Bus Events in the container component class:

```javascript
  outHandler(event: OutputEvents) {
    environment.production || this.outLog.logOutputEvent(event);

    outputEventHandler(event, {
      [OutputEventNames.AddBookFormSubmit]: this.upsertBook,
      [OutputEventNames.BookListSelectBook]: this.selectBook,
      [OutputEventNames.BookListClearSelectedBook]: this.clearSelectedBook,
      [OutputEventNames.ShowFormCheckboxChange]: this.toggleShowForm,
      [OutputEventNames.TabsSelectTab]: this.selectTab,
    });
  }

  // assign property to arrow function expression to bind this into outputEventHandler()
  private upsertBook = (book: BooksEntity) => {
    this.state.upsertBook(book);
  };
```
npm package: @gyrus/ngx-with-next-from
Description: RxJS operator returning an array of the next available values of each parameter observable
Author: Tom White
Latest version: 1.1.3

# WithNextFrom custom RxJs operator

The `withNextFrom` RxJs operator is designed to behave in a similar way to the standard RxJs operator, `withLatestFrom`, but without the problem described below. It can be treated as a drop in replacement for the original operator that particularly benefits [Angular](https://angular.io/) developers using scaffolded unit tests that follow accepted Angular best practices.

**Note:** `withNextFrom` does not complete immediately when the source stream completes if it's already waiting for the parameter stream's next values. It will wait until all of the parameter streams fire their next value before completing. So operators like `first()` or `take()` can be applied to the source stream without impacting the resulting output.

![]()

<img src="https://angular2bes.firebaseapp.com/assets/images/withNextFrom-diagram.png"
     alt="withNextFrom marbles diagram"
     style="max-width: 800px;" />

## Usage

```Typescript
  stream1$.pipe(
      withNextFrom(
        () => stream2$,
        () => stream3$,
        () => stream4$,
        // ...more stream args...
      )
    ).subscribe(result => {
      console.log(result); // [s1,s2,s3,s4]
    });
```

## Parameters

Unlike `withLatestFrom`, this new operator `withNextFrom` requires each parameter to be a _function_ that returns an Observable, as opposed to a pure Observable. This is to allow the closure function in the RxJs operator to not block the unit test run-time 'mockability'.

## A patch for withLatestFrom's Angular Unit Test mocking problem

There is an unexpected behaviour from the `RxJs` pipe operator, `withLatestFrom`, when its results are mocked within a test _after_ the TestBed module has been loaded.

`withLatestFrom` mocking _on initialisation_ inside the `beforeEach()` of a .spec file works fine. But this is really considered bad practice because it separates the test case mocked values from the unit test.

This alternative operator, `withNextFrom` serves a similar purpose as `withLatestFrom`, but doesn't need to be aware of the observable stream's history because it's only interested in the next value (or current one, in the case of Behaviour Subject).

## Why did I create this?

I think the power and simplicity of `withLatestFrom` is awesome. But the non-standard way of mocking it for Angular tests was a deal breaker for me. So after spending too much time researching the issue, I fixed it.
npm package: @gyselroth/balloon-node-fuse
Description: balloon FUSE bindings for node.js
Author: Raffael Sahli
Latest version: 1.0.0-alpha10

# balloon FUSE bindings for node.js
 
[![Build Status](https://travis-ci.org/gyselroth/balloon-sdk-node.svg?branch=master)](https://travis-ci.org/gyselroth/balloon-node-fuse)
[![GitHub release](https://img.shields.io/github/release/gyselroth/balloon-sdk-node.svg)](https://github.com/gyselroth/balloon-node-fuse/releases)
[![npm](https://img.shields.io/npm/v/@gyselroth/balloon-sdk-node.svg)](https://www.npmjs.com/package/@gyselroth/balloon-sdk-node)
[![GitHub license](https://img.shields.io/badge/license-MIT-blue.svg)](https://raw.githubusercontent.com/gyselroth/balloon-node-fuse/master/LICENSE) 

## Install
```
npm install --save @gyselroth/balloon-node-fuse
npm install --save @gyselroth/balloon-sdk-node
```

## Requirements

balloon-node-fuse requires an instance of @gyselroth/balloon-sdk-node.

>**Note**: balloon-node-fuse requires fuse-bindings internally which itself requires a native fuse dependency.
if balloon-node-fuse is somewhat packaged into a binary (For example via electron, nexe, ...) this dependency must be included.
On Linux you may install the fuse package from your distribution. On Windows Dokany is required and on OS X osxfuse.

## Usage

```js
import { CoreV2Api, HttpBasicAuth } from '@gyselroth/balloon-sdk-node';
import { mount } from '@gyselroth/balloon-node-fuse';

var client = new CoreV2Api(args.server);

var basic = new HttpBasicAuth();
basic.username = 'admin';
basic.password = 'admin';
client.setDefaultAuthentication(basic);
process.env.NODE_TLS_REJECT_UNAUTHORIZED = '0';

var config = {
  mountPoint: '/media/balloon',
};

mount(client, config).then(result => {
  console.log('balloon mounted');
}).catch(error => {
  console.log('mount error %s', error);
});
```

## Install fuse
balloon-node-fuse requires fuse. This is usually installed on Linux based systems. On windows, dokany provides the necessary fuse bindings.
dokany may be installed automatically using balloon-node-fuse. The same applies to OS X, there is no fuse by default but can be installed using the provided options.

```js
import { install } from '@gyselroth/balloon-node-fuse';

install().then(result => {
  console.log("fuse installed");
}).catch(error => {
  console.log('install %s', error);
});
```

## Options
| Option | Type | Default | Description |
| ---------- | -------| ------------------ | --- |
| mountPoint | <string> | `null` (Required) | Path where balloon should be mounted. |
| cacheDir | <string>| `null` | Path to directory where an offline cache is located. |
| cacheTTL | <int> | `5` | Cache time in seconds for node response TTL. |
| on | <callback> | `null` | Event binder to handle fuse events. |


## Events
You may bind a callback to handle each fuse event individually:

```
var config = {
  mountPoint: '/media/balloon',
  on: function(e) {
    console.log('fuse event', e);
  }
};

mount(client, config);
```
npm package: @gyselroth/balloon-node-sync
Description: Sync client for balloon
Author: gyselroth GmbH
Latest version: 0.6.7

# balloon Node.js Sync
[![Build Status](https://travis-ci.org/gyselroth/balloon-node-sync.svg?branch=master)](https://travis-ci.org/gyselroth/balloon-node-sync)
[![npm](https://img.shields.io/npm/v/@gyselroth/balloon-node-sync.svg)](https://www.npmjs.com/package/@gyselroth/balloon-node-sync)
[![GitHub release](https://img.shields.io/github/release/gyselroth/balloon-node-sync.svg)](https://github.com/gyselroth/balloon-node-sync/releases)
[![GitHub license](https://img.shields.io/badge/license-MIT-blue.svg)](https://raw.githubusercontent.com/gyselroth/balloon-node-sync/master/LICENSE)

This is a Node.js synchonization library for the [balloon](https://github.com/gyselroth/balloon) cloud server.

## Download
You can get the package via npm registry:\
https://www.npmjs.com/package/@gyselroth/balloon-node-sync

To install the package via dependencies add @gyselroth/balloon-node-sync to your package.json: 
```
npm install --save @gyselroth/balloon-node-sync
```
npm package: @gyselroth/balloon-sdk-node
Description: The official balloon sdk for node with typescript support
Author: Raffael Sahli
Latest version: 1.0.0-alpha4

# balloon node.js SDK with typescript support

[![Build Status](https://travis-ci.org/gyselroth/balloon-sdk-node.svg?branch=master)](https://travis-ci.org/gyselroth/balloon-sdk-typescript-node)
[![GitHub release](https://img.shields.io/github/release/gyselroth/balloon-sdk-node.svg)](https://github.com/gyselroth/balloon-sdk-typescript-node/releases)
[![npm](https://img.shields.io/npm/v/@gyselroth/balloon-sdk-node.svg)](https://www.npmjs.com/package/@gyselroth/balloon-sdk-node)
[![GitHub license](https://img.shields.io/badge/license-MIT-blue.svg)](https://raw.githubusercontent.com/gyselroth/balloon-sdk-typescript-node/master/LICENSE) 

Provides a node.js SDK for balloon. Including typescript definition.
>**Note** This SDK is mostly generated from the balloon [OpenAPI](https://github.com/OAI/OpenAPI-Specification) specs.

## Install
```
npm install --save @gyselroth/balloon-sdk-node
```

## Usage

### Example request

```javascript
const { CoreV2Api, HttpBasicAuth } = require('@gyselroth/balloon-sdk-node');

var server = 'https://localhost';
var client = new CoreV2Api(server);
var basic = new HttpBasicAuth('admin', 'admin');
client.setDefaultAuthentication(basic);

client.getUsers().then((response) => {
  console.log(response.body);
}).catch((error) => {
  console.log(error);
});
```
npm package: @gyselroth/icon-collection
Description: SVG icon collection (including css definitions)
Author: gyselroth GmbH
Latest version: 1.0.13

# SVG icon collection
[![npm](https://img.shields.io/npm/v/@gyselroth/icon-collection.svg)](https://www.npmjs.com/package/@gyselroth/icon-collection)
[![GitHub release](https://img.shields.io/github/release/gyselroth/icon-collection.svg)](https://github.com/gyselroth/icon-collection/releases)
[![GitHub license](https://img.shields.io/badge/license-MIT-blue.svg)](https://raw.githubusercontent.com/gyselroth/icon-collection/master/LICENSE)

This library provides an icon collection based on svg.

## Installation
```
npm --save install @gyselroth/icon-collection
```

## Documentation & Overview

Please visit the [docs](https://gyselroth.github.io/icon-collection/).

## Usage example
```html
<div class="gr-icon gr-i-file"></div>
```

## Colorize your icons

You can use an icon with any color you like. If you do you have to switch from the css class `gr-icon` to `gr-mask-icon`.
An icon with gr-mask-icon takes the color from `background-color`.

```html
<div style="background-color: #F01;" class="gr-mask-icon gr-i-file"></div>
```

### Browser Support
If you want to use color masks, please see browser support for [css masks](http://caniuse.com/#feat=css-masks).
npm package: @gyselroth/node-advanced-desktop
Description: Manage sidebar bookmarks (folder favourites) and folder icons compatible on Linux, Windows and OS X
Author: Raffael Sahli
Latest version: 1.0.5

# Advanced desktop operations on node.js

[![Build status](https://ci.appveyor.com/api/projects/status/ym07006bvsrjo698?svg=true)](https://ci.appveyor.com/project/raffis/node-advanced-desktop)
[![Build Status](https://travis-ci.org/gyselroth/node-advanced-desktop.svg?branch=master)](https://travis-ci.org/gyselroth/node-advanced-desktop)
[![GitHub release](https://img.shields.io/github/release/gyselroth/node-advanced-desktop.svg)](https://github.com/gyselroth/node-advanced-desktop/releases)
[![npm](https://img.shields.io/npm/v/@gyselroth/node-advanced-desktop.svg)](https://www.npmjs.com/package/@gyselroth/node-advanced-desktop)
[![GitHub license](https://img.shields.io/badge/license-MIT-blue.svg)](https://raw.githubusercontent.com/gyselroth/node-advanced-desktop/master/LICENSE) 

Provides more desktop functionalities (Including bookmarks/sidebar elements and folder icons) and offers cross os support for Linux, Windows and OS X.

## Install
```
npm install --save @gyselroth/node-advanced-desktop
```

## Usage

### Set folder icon `nodeIcon.setFolderIcon: Promise()`

Set an icon for a given folder path.
**Note**: On win32 an icon of type ico is required.

```javascript
const { nodeIcon } = require('@gyselroth/node-advanced-desktop');
var icon = process.platform === 'win32' ? 'icon.ico' : 'icon.png';

nodeIcon.setFolderIcon('/my/path/to/folder', icon).then(() => {
  console.log('folder icon set');
}).catch((error) => {
  console.log('failure');
});
```

### Add item to sidebar `sidebar.addItem: Promise()`

Adds an item, typically a folder, to the sidebar (folder bookmarks). 
`sidebar.addItem(path, context)` accepts a context as seccond argument whereas you may specify additional configuration.
**Note**: On win32 you are required to specify a [clsId](https://docs.microsoft.com/en-us/windows/desktop/com/clsid-key-hklm). You may also change the name of the sidebar entry on win32 using context.name (The default is the base folder name). 

Additional notes for linux, if the linux distribution is supported depends what file manager is in use. Currently support for the followin file managers is implemented:

* nautilus
* nemo

```javascript
const { sidebar } = require('@gyselroth/node-advanced-desktop');
var icon = process.platform === 'win32' ? 'icon.ico' : 'icon.png';

sidebar.ensureItem('/my/path/to/folder', {
  clsId: "61736CCB-50DB-4095-BF4C-186BB668432C",
  name: "foobar",
  icon: icon
}).then(() => {
  console.log('sidebar entry added');
}).catch((error) => {
  console.log('failure');
});
```

This method will only add the element if it does not already exists.

### List sidebar items `sidebar.getItems(): Promise(list)`

List current sidebar items:

```javascript
const { sidebar } = require('@gyselroth/node-advanced-desktop');

sidebar.getItems().then((list) => {
  for(let item of list) {
    console.log(item.path);
  }
});
npm package: @gyselroth/tubee-sdk-node
Description: The official tubee sdk for node with typescript support
Author: gyselroth
Latest version: 1.2.5

# tubee node.js SDK with typescript support

[![Build Status](https://travis-ci.com/gyselroth/tubee-sdk-typescript-node.svg?branch=master)](https://travis-ci.com/gyselroth/tubee-sdk-typescript-node)
[![GitHub release](https://img.shields.io/github/release/gyselroth/tubee-sdk-node.svg)](https://github.com/gyselroth/tubee-sdk-typescript-node/releases)
[![npm](https://img.shields.io/npm/v/@gyselroth/tubee-sdk-node.svg)](https://www.npmjs.com/package/@gyselroth/tubee-sdk-node)
[![GitHub license](https://img.shields.io/badge/license-MIT-blue.svg)](https://raw.githubusercontent.com/gyselroth/tubee-sdk-typescript-node/master/LICENSE) 

Provides a node.js SDK for tubee. Including typescript definition.
>**Note** This SDK is mostly generated from the tubee [OpenAPI](https://github.com/OAI/OpenAPI-Specification) specs.

## Install
```
npm install --save @gyselroth/tubee-sdk-node
```

## Usage

### Example request

```javascript
const { CoreV1Api, HttpBasicAuth} = require('@gyselroth/tubee-sdk-node');

var server = 'https://localhost:8090';
var sdk = new CoreV1Api(server);
var basic = new HttpBasicAuth();
basic.username = 'admin';
basic.password = 'admin';
sdk.setDefaultAuthentication(basic);

sdk.getNamespaces().then((response) => {
  console.log(response.body);
}).catch((error) => {
  console.log(error);
});
```
npm package: @gyselroth/windows-fsstat
Description: fstat module for Windows (unique inode fix)
Author: Raffael Sahli
Latest version: 0.0.7

# node-windows-fsstat

[![Build status](https://ci.appveyor.com/api/projects/status/iikdg1nngoc1272j?svg=true)](https://ci.appveyor.com/project/raffis/node-windows-fsstat)
[![npm](https://img.shields.io/npm/v/@gyselroth/windows-fsstat.svg)](https://www.npmjs.com/package/@gyselroth/windows-fsstat)
[![GitHub release](https://img.shields.io/github/release/gyselroth/node-windows-fsstat.svg)](https://github.com/gyselroth/node-windows-fsstat/releases)
[![GitHub license](https://img.shields.io/badge/license-MIT-blue.svg)](https://raw.githubusercontent.com/gyselroth/windows-fsstat/master/LICENSE)

Alternative fs.lstatSync(path) for windows based systems. Since Windows does not have inodes and the node fs module
provides only an inode property which is a converted integer from the 64bit fileId (Windows equal to posix inode) integer.
But commonly known javascript can not handle 64bit integer, therefore the conversion into an integer can cause inode collisions
which can be fatal.
There is absolutely no reason that inode must be an integer. An inode or fileId is just an identifier and can be anything. Therefore
this module provides besides the attribute "ino" an attribute called "fileid" which is a HEX representation (string) of the windows fileId.

See node issue [#12115](https://github.com/nodejs/node/issues/12115) for further information.

This issue has been fixed by PR [#20220](https://github.com/nodejs/node/pull/20220) (BigInt support) but has only been merged into node.js release >= v10.5.0. If you need to stick with a lower node version for any reason and still need unique inode numbers on Windows go with this package instead.

## Install
```
npm install --save @gyselroth/windows-fsstat
```

## Usage

```javascript
var windowsFs = require('@gyselroth/windows-fsstat');
console.log(windowsFs.lstatSync('C:\\windows'));

{ fileid: '0x00020000000070FD',
  ino: 562949953450237,
  size: 0,
  atime: 2017-08-07T06:58:53.000Z,
  mtime: 2017-08-07T06:58:53.000Z,
  ctime: 2017-03-18T11:40:20.000Z,
  directory: true,
  symbolicLink: false }
````
npm package: @gysr/core
Description: GYSR core protocol contracts, interfaces, libraries, and ABIs
Author: gysr.io
Latest version: 3.0.0

# GYSR core

This repository contains the Solidity contracts for the GYSR core procotol, including modular pools, factory system, and token.

For more information on the project, whitepapers, audits, and other resources,
see [gysr.io](https://www.gysr.io/)


## Install

To use the core contracts, interfaces, libraries, or ABIs in your own project

```
npm install @gysr/core
```

See the [documentation](https://docs.gysr.io/developers) to learn more about interacting with the GYSR protocol.

*Note: the package is published with solidity `^0.8.18` compatibility, but core contracts have only been tested and audited with solidity `0.8.18` exact.*


## Development

Both **Node.js** and **npm** are required for package management and testing. See instructions
for installation [here](https://docs.npmjs.com/downloading-and-installing-node-js-and-npm).

This project uses [Hardhat](https://hardhat.org/docs) for development, testing, and deployment.

To install these packages along with other dependencies:
```
npm install
```


## Test

To run all unit tests
```
npm test
```

To run some subset of tests
```
npx hardhat compile && npx hardhat test --grep ERC20CompetitiveRewardModule
```


## Deploy

Copy `.env.template` to `.env` and define the `INFURA_KEY`, `DEPLOYER_INDEX`,
and `ETHERSCAN_KEY` variables.


To deploy GYSR token to Goerli
```
npx hardhat run --network goerli scripts/i_deploy_token.js
```

Once GYSR token is deployed, define the `GYSR_ADDRESS` variable in your `.env` file.


To deploy the configuration contract to Goerli
```
npx hardhat run --network goerli scripts/i_deploy_config.js
```

Once the configuration contract is deployed, define the `CONFIG_ADDRESS` variable in your `.env` file.


To deploy the factory contract to Goerli
```
npx hardhat run --network goerli scripts/ii_deploy_factory.js
```

Once the factory is deployed, define the `FACTORY_ADDRESS` variable in your `.env` file.


To deploy the ERC20 staking module factory to Goerli
```
npx hardhat run --network goerli scripts/iii_deploy_module_factory_staking.js
```


To deploy the ERC20 competitive reward module factory to Goerli
```
npx hardhat run --network goerli scripts/iii_deploy_module_factory_competitive.js
```

Follow the remaining migration steps to deploy all contracts and libraries.


To verify a contract on Goerli
```
npx hardhat verify --network goerli --contract contracts/PoolFactory.sol:PoolFactory 0xpoolfactory 0xgysrtoken 0xconfig
```