open-index/open-npm huggingface dataset:
npm package: @sliksafe/mint
Description: Slik offers you the ability to protect files with end-to-end encryption as a simple drop in NPM package.
Author: Slik
Latest version: 1.0.3

# Mint NFTs

Slik offers you the ability to deploy an ERC-721 contract and MINT an NFT in a single API call and as a drop in NPM package.

<hr/>

Using the @sliksafe/mint package, you can enable NFT minting for users within your app, while storing their NFT across decentralized storage networks like Arweave or Filecoin.


## API Keys

Before getting started you would need an API key. Create an API key via the console: [https://console.developers.sliksafe.com](https://console.developers.sliksafe.com)

## Demo

You can play around with the demo app that uses the mint SDK at: [https://slikmintdemo.web.app/](https://slikmintdemo.web.app/)

## Docs

Please see a few samples below, but you can find the detailed docs here: [https://slik.gitbook.io/docs/packages/upload-and-download-files](https://slik.gitbook.io/docs/packages/upload-and-download-files)
## Install via yarn

```bash
yarn add @sliksafe/protect
```


## Deploy NFT Contract

All NFTs minted on Ethereum or Polygon need to have a contract address. This contract address helps in grouping a collection of NFTs, like the Azuki NFTs or the [BAYC NFTs](https://etherscan.io/address/0xbc4ca0eda7647a8ab7c2061c2e118a18a936f13d). 

```javascript
// Import SlikMint
import { SlikMint } from '@sliksafe/mint'

// Initialize 
const initParams = { apiKey: "api_key_string" }
const mintHandler = await SlikMint.initialize(initParams)

// Contract options
const contractOptions = { 
    tokenName: "BoredApeYachtClub",
    tokenSymbol: "BAYC",
    chain: "polygon",
    protocol: "ERC721",
}

mintHandler.deployContract(contractOptions, (response, err) => {
    console.log("The contract was deployed with id: ", response.contractAddress);
});

```


## Mint a File as NFT

Using the contract address obtained after deploying a contract , you can mint NFTs corresponding to the deployed contract. 

```javascript
// Specify the metadata that is associated with the NFT. 
// Note: the metadataJSON is not editable once the NFT is minted.

const metadataJSON = { 
    name: "My Awesome NFT #1",
    description: "This is the description of my awesome NFT!"
}

const file: File = // The file object selected by the user

const mintOptions = {
    walletAddress: "0x5c14E7A5e9D4568Bb8B1ebEE2ceB2E32Faee1311",
    contractAddress: "0x468DF3FfC8D87EF3ee0e71AB8Ec0afd0E79e57A0",
    file: file,
    storageNetwork: "filecoin", // or "arweave"
    chain: "polygon",
    metadata: metadataJSON,
}

mintHandler.mintNFT(mintOptions, (response, err) => {
    if (!!err) {
        console.error("Failed to mint NFTs");
        return
    }
    const txId = response.txId;
    console.log("NFT minting completed. Transaction id: ", txId);
});
```


## Scalability
The Slik infrastructure has been designed to scale with the needs of the developer. It is currently used by thousands of users worldwide to backup terabytes of data.
npm package: @slikts/deepproxy
Description: Recursive ES2015 Proxy
Author: slikts
Latest version: 1.0.2

# Deep `Proxy`

[![Travis](https://img.shields.io/travis/slikts/deepproxy.svg)](https://travis-ci.org/slikts/deepproxy)
[![Coveralls](https://img.shields.io/coveralls/slikts/deepproxy.svg)](https://coveralls.io/github/slikts/deepproxy)

A tiny library to recursively wrap an object and all its sub-objects with [ES2015 `Proxy`][Proxy].

## Installation

```
npm install --save @slikts/deepproxy
```

## Usage

```js
import { deepProxy } from "@slikts/deepproxy"

const a = deepProxy({ b: { c: 1 } }, {
  get(target, key) {
    return target[key] ? target[key] : 123;
  }
});

a.b; // -> { c: 1 }
a.foo; // -> 123
a.b.c; // -> 1
a.b.foo; // -> 123
```

## How it Works

The target object is wrapped with an additional `Proxy` that traps property access and also wraps any values of object type. The created proxies are memoized to avoid re-creating them for the same target and handler.

## License

MIT

## Author

slikts <dabas@untu.ms>

[Proxy]: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Proxy
npm package: @slikts/eslint-config-prettier
Description: 👾💪
Author: slikts
Latest version: 6.0.3

# @slikts/eslint-config-prettier

[![Build Status](https://dev.azure.com/slikts/eslint-config-prettier/_apis/build/status/slikts.eslint-config-prettier?branchName=master)](https://dev.azure.com/slikts/eslint-config-prettier/_build/latest?definitionId=1&branchName=master) 
[![npm](https://img.shields.io/npm/v/@slikts/eslint-config-prettier)](https://www.npmjs.com/package/@slikts/eslint-config-prettier)
[![GitHub version](https://badge.fury.io/gh/slikts%2Feslint-config-prettier.svg)](https://github.com/slikts/eslint-config-prettier)
[![Dependency Status](https://david-dm.org/slikts/eslint-config-prettier.svg)](https://david-dm.org/slikts/eslint-config-prettier)
[![Open Source Love](https://badges.frapsoft.com/os/mit/mit.svg?v=102)](https://github.com/ellerbrock/open-source-badge/)

Reusable, self-validated eslint and Prettier config.

## Install
```sh
npm i -D @slikts/eslint-config-prettier
npx install-peerdeps --dev @slikts/eslint-config-prettier
test -f .eslintrc.json || echo '{ "extends": "@slikts/prettier" }' > .eslintrc.json
```
npm package: @slikts/rollup-plugin-rename-extensions
Description: Plugin to rename file extensions before they're emitted in rollup
Author: Thomas Caserta
Latest version: 0.0.4

# Rename Extensions Plugin

Rollup plugin to take modules from RollUp and rename their file extensions. Useful for when using `preserveModules`. The plugin will also parse
all modules code and rewrite imports/exports to match the new file name.

## Installation

```bash
npm i --save-dev @betit/rollup-plugin-rename-extensions
```

## Usage

As an example, heres how we can convert `.ts` `.vue` to `.js` and `.vue.js` respectively.

```js
import renameExtensions from '@betit/rollup-plugin-rename-extensions';

// Rollup Configuration
export default {
    input: './src/index.js',
    preserveModules: true,
    /* ... */
    plugins: [
        // ...
        renameExtensions({
            include: ['**/*.ts', '**/*.vue'],
            mappings: {
                '.vue': '.vue.js',
                '.ts': '.js',
            },
        })
    ],
},
```

## Options

```typescript
export interface IRenameExtensionsOptions {
    /**
     * Files to include for potential renames.
     * Also denotes files of which may import a renamed module in
     * order to update their imports.
     */
    include?: Array<string | RegExp> | string | RegExp | null;

    /**
     * Files to explicitly exclude
     */
    exclude?: Array<string | RegExp> | string | RegExp | null;

    /**
     * Generate source maps for the transformations.
     */
    sourceMap?: boolean;

    /**
     * Object describing the transformations to use.
     * IE. Input Extension => Output Extensions.
     * Extensions should include the dot for both input and output.
     */
    mappings: Record<string, string>;
}
```
npm package: @slim-css/core
Description: Beautiful and SlimCSS Framework based on Flexbox and Grid
Author: SOCGNA KOUYEM Childéric
Latest version: 1.0.0-alpha2

<p align="center">
    <a>
        <img src="./logo.svg" alt="Slim-CSS logo" width="200" height="165" />
    </a>
</p>

<h1 align="center"> Slim CSS </h1>

<p align="center">
  Beautiful and SlimCSS Framework based on Flexbox and Grid
  <br>
  <a href="./examples/index.html"><strong>Explore Slim-CSS docs »</strong></a>
  <br>
   <br>
  <a href="https://gitlab.com/exytech/community/slim-css/slim-core/-/issues/new">Report bug</a>
  ·
  <a href="https://gitlab.com/exytech/community/slim-css/slim-core/-/issues/new">Request feature</a>
</p>

## Slim-CSS v1.0.0
Our default branch is for development of our Slim-CSS v1.0.0 release.


## Table of contents

- [Quick install](#quick-install)
- [Copyright and license](#copyright-and-license)


## Quick install

Several quick install options are available:


### Repo

```sh
git clone https://gitlab.com/exytech/community/slim-css/slim-core.git
```


### NPM

```sh
npm install @slim-css/core
```

**or**

### Yarn

```sh
yarn add @slim-css/core
```

### Import
After installation, you can import the CSS file into your project using this snippet:

```sh
@import '@slim-css/core/css/slim-core.css'
@import '@slim-css/core/css/slim-core-components.css'
```

**or**

```sh
@import '@slim-css/core/css/slim-core-full.css'
```

### CDN
https://cdn.jsdelivr.net/npm/@slim-css/core@1.0.0-alpha/

- slim-core compact file
  - [slim-core](https://cdn.jsdelivr.net/npm/@slim-css/core@1.0.0-alpha/css/slim-core.css)
  - [slim-core-components](https://cdn.jsdelivr.net/npm/@slim-css/core@1.0.0-alpha/css/slim-core-components.css)
  - [slim-core-full](https://cdn.jsdelivr.net/npm/@slim-css/core@1.0.0-alpha/css/slim-core-full.css)

- slim-core minified files
  - [slim-core](https://cdn.jsdelivr.net/npm/@slim-css/core@1.0.0-alpha/css/slim-core.min.css)
  - [slim-core-components](https://cdn.jsdelivr.net/npm/@slim-css/core@1.0.0-alpha/css/slim-core-components.min.css)
  - [slim-core-full](https://cdn.jsdelivr.net/npm/@slim-css/core@1.0.0-alpha/css/slim-core-full.min.css)


## Copyright and license
Code copyright 2021 SOCGNA KOUYEM Childéric. Code released under [the MIT license](https://gitlab.com/exytech/community/slim-css/slim-core/-/blob/develop/LICENSE).
npm package: @slim-css/scss-tools
Description: SCSS tools for slim-css and their plugins
Author: SOCGNA KOUYEM Childéric
Latest version: 1.0.2

# Slim-scss-tools

slim-scss-tools is a great tool that provides you with a set of scss files (containing scss/css variables, mixins, functions, and extensions used by the components and elements that make up the slim-css core) and a command line tool to easily build and develop plugins and graphic designs for the slim-css framework.

## Table of contents
-  [Quick install](#quick-install)
-  [Import slim-scss-tools](#import-slim-scss-tools)
-  [Use slim-scss-cli](#use-slim-scss-cli)
-  [Copyright and license](#copyright-and-license)

## Quick install
### NPM
```bash
npm i -D @slim-css/scss-tools
```

***or***

### Yarn
```bash
yarn add -D @slim-css/scss-tools
```

## Import slim-scss-tools
In your own scss file (example.scss) you can include the scss tools from slim-core as follows

```scss
// ./scss/example.scss

@import  "../node_modules/@slim-css/scss-tools/src/tools_components/all";
```

## Use slim-scss-cli
### Create .slimrc.js
To use slim-scss-cli, you must first create a configuration file named .slimrc.js whose content will look like the following
```js
// .slimrc.js

module.exports = {
    pluginName: 'plugin_name', // A plugin name
    source: './scss', // the source directory path that contains the scss files
    output: './css', // the output directory path that will contain the css files
    entryFilename: 'plugin_name', // name of the scss input file that will be compiled
}
```

### Set package
Add to your package.json the following lines of code
```json
"scripts": {
	"build": "slim-cli sass && slim-cli group && slim-cli prefix && slim-cli cleancss",
	"dev": "npm run sass -- --watch",
	"prod": "slim-cli clean && npm run build"
}
```

> - **dev**: compile at each modification your scss entrypoint in compact css with map file 
> - **build**: compile at each modification your scss entrypoint in minified css
> - **prod**: clean up the css output folder before building the scss entry point (very useful for the plugin production)

### Command line reference
|Commands        |Functions                          	 |
|----------------|---------------------------------------|
|clean			 |`Clean css folder`            		 |
|sass          	 |`Run sass compiler`            		 |
|cleancss        |`Remove css files in css folder`		 |
|group           |`Group css media querie`            	 |
|prefix          |`Auto prefix css attribute`            |


## Copyright and license

Code copyright 2021 SOCGNA KOUYEM Childéric. Code released under [the MIT license](https://gitlab.com/exytech/community/slim-css/slim-tools/-/blob/main/LICENSE).
npm package: @slim-select/vue
Description: Vue integration
Author: Brian Voelker
Latest version: 1.6.0
Deprecated: Package no longer supported. Contact Support at https://www.npmjs.com/support for more info.

# Slim Select Vue

## slimselectjs.com

Vue integration for the SlimSelect

See the website for the best details on how to use the vue integration

[![NPM Downloads](https://img.shields.io/npm/dt/@slim-select/vue)](https://www.npmjs.com/package/@slim-select/vue)

## Support

[![](https://img.shields.io/static/v1?label=Sponsor&message=%E2%9D%A4&logo=GitHub&color=%23fe8e86)](https://github.com/sponsors/brianvoe)

<a href="https://www.buymeacoffee.com/brianvoe" target="_blank"><img src="https://www.buymeacoffee.com/assets/img/custom_images/orange_img.png" alt="Buy Me A Coffee" style="height: auto !important;width: auto !important;" ></a>

## Installation

```bash
npm install @slim-select/vue
```

## Usage

```javascript
import { defineComponent } from 'vue'
import SlimSelect from '@slim-select/vue'

export default defineComponent({
  components: {
    SlimSelect,
  },
})
```

```html
<SlimSelect>
  <option value="1">Option 1</option>
  <option value="2">Option 2</option>
  <option value="3">Option 3</option>
</SlimSelect>

<SlimSelect multiple>
  <option value="1">Option 1</option>
  <option value="2">Option 2</option>
  <option value="3">Option 3</option>
</SlimSelect>
```
npm package: @slimfish/vanity-wallet-generator
Description: Small utility to create a vanity wallet address
Author: Slim Fish
Latest version: 1.0.1

# Vanity Wallet Generator for Bep39 compatible wallets (EVM)

This application is a simple prototype that tries to find a wallet that matches a given pattern using brute force.

If a wallet is found, the mnemonic words will be shown at the console.

## Prerequisites

Nodejs 8 or higher is required. [Download Page](https://nodejs.org/en/download/)

## Installation (From NPM Repository)

Open a terminal and execute the following command

```bash
npm i -g @slimfish/vanity-wallet-generator@latest
```

## Usage (Npm repository)

Open a new terminal and execute the following command and follow the instructions

```bash
npx vanity-wallet-generator
```

## Usage (From Source code)

1. Download the source code into a folder (Using git or downloading the folder as a ZIP)

    git:

    ```bash
    git clone https://github.com/SlimFish32/vanity-wallet-generator.git
    ```

2. Open a terminal in the downloaded folder
3. Execute a package installation

    ```bash
    npm i
    ```

4. Run the application

    ```bash
    npm run start
    ```

## Functionality

The application will ask for the pattern to search.

Once you press enter, the application will start to generate bep39 mnemonics, and once a match is found, the mnemonics will be shown at the console.

To cancel the process press `Control+C` until the application stops.

## Disclaimer

The application is provided as is, without any warranty.

This application doesn't require any connection to internet. Also, the speed won't be stored anywhere, once you close the window, the seed is lost. it is your duty to write it down

Also, the time it takes to find a wallet depends on the number of characters to be found.
npm package: @slimfish/wallet-creator
Description: Small utility to create multiple wallets with ease
Author: Slim Fish
Latest version: 1.1.2

# Wallet Creator

This application is a simple tool to seed many wallets from a single source wallet.

## Prerequisites

Nodejs 8 or higher is required. [Download Page](https://nodejs.org/en/download/)

The seed phrase of an wallet with founds to use the application.

## Installation

Open a terminal and execute the following command

```bash
npm i -g @slimfish/wallet-creator@latest
```

## Usage

Open a new terminal and execute the following command and follow the instructions

```bash
npx wallet-creator
```

## Options available

The following options are available on the application

- **Seed founds from a wallet into multiple new accounts**

    This procedure takes care of the creation of a set of new wallets.

    It will require the user to provide the seed phrase of the wallet to use as source. the amount of founds to be used.

    From there the application will compute the number of wallets that can be seeded and proceed to send the founds to those wallets

    The information about those wallets will be stored on a file named accounts.csv. that will be located on the same directory that the application was executed.

    If you want to stop the process press `Control+C` anytime. the founds that are already seeded will remain on the target wallets

- **Recover seeded founds from the wallets**

    There is an option to recover the founds seeded. To do this, the application requires that the log file stays untouched.

    This process will require the user to provide the seed phrase of the wallet that will receive the founds.

    There's also an option to convert the StableCoin `BUSD` to `BNB` Prior to the recovery of the founds. (The approval on PancakeSwap is handled by the application)

- **List the logged accounts**

    There's also an option to list the accounts that the application has created

## Disclaimer

The application is provided as is, without any warranty.

Be aware that the application uses the founds present at the wallet provided by the user and the network fees will be applied on every transaction.

An special warning has to be mentioned. If for any reason you delete the Accounts.csv, all the accounts / founds present there will be lost with no way to recover them. There's no backup method for that data.
npm package: @slimio/alert
Description: Alert for SlimIO
Author: SlimIO
Latest version: 0.2.0

# Alert
![V1.0](https://img.shields.io/badge/version-0.1.0-blue.svg)
[![Maintenance](https://img.shields.io/badge/Maintained%3F-yes-green.svg)](https://github.com/SlimIO/is/commit-activity)
![MIT](https://img.shields.io/github/license/mashape/apistatus.svg)

## Requirements
- Node.js v10 or higher

## Getting Started

This package is available in the Node Package Repository and can be easily installed with [npm](https://docs.npmjs.com/getting-started/what-is-npm) or [yarn](https://yarnpkg.com).

```bash
$ npm i @slimio/alert
# or
$ yarn add @slimio/alert
```

## Usage example
A simple addon that will throw an alarm every second...

```js
// Require Dependencies
const Addon = require("@slimio/addon");
const alert = require("@slimio/alert");
const metrics = require("@slimio/metrics");

// Declare addons
const test = new Addon("test");
const { Entity } = metrics(test);
const { Alarm } = alert(test);

let intervalId;
const MyEntity = new Entity("MyEntity", {
    description: "Hello world!"
});

test.on("awake", () => {
    intervalId = setInterval(() => {
        new Alarm("hello world!", {
            correlateKey: "test_alarm",
            entity: MyEntity
        });
    }, 1000);

    test.ready();
});

test.on("close", () => {
    clearInterval(intervalId);
});

module.exports = test;
```

## API
The alert package return a function described by the following interface:
```ts
declare function Alert(addon: Addon): {
    Alarm: typeof Alarm;
};
```

Each instance of Alarm are unique to the local Addon.

### Alarm
This section describe the methods and properties of Alarm Object.

<details><summary>constructor(message: string, options: Alert.ConstructorOptions)</summary>
<br />

Create a new Alarm Object.
```js
new Alarm("hello world alarm", {
    correlateKey: "test_alarm"
});
```

Available options are described the following interface:
```ts
interface ConstructorOptions {
    severity?: SlimIO.AlarmSeverity;
    entity?: Metrics.Entity | string | number;
    correlateKey: string;
}
```
</details>

<details><summary>toJSON(): SlimIO.RawAlarm</summary>
<br />

Return a raw alarm. Refer to `@slimio/tsd` for more information.
</details>

#### Properties

```ts
declare class Alarm extends events {
    public cid: SlimIO.CID;
    public severity: number;
    public entity: Metrics.Entity | number;
    public message: string;
    public correlateKey: string;

    static DefaultSeverity: number;
    static Severity: SlimIO.AlarmSeverity;
}
```

Severity is defined in `@slimio/tsd` as follow:
```ts
enum AlarmSeverity {
    Critical,
    Major,
    Minor
}
```

The default severity is defined as **1** for **Major**.

## License
MIT
npm package: @slimio/arg-checker
Description: SlimIO Argument Checker
Author: SlimIO
Latest version: 0.2.1

# arg-checker
![version](https://img.shields.io/badge/version-0.1.0-blue.svg)
[![Maintenance](https://img.shields.io/badge/Maintained%3F-yes-green.svg)](https://github.com/SlimIO/is/commit-activity)
![MIT](https://img.shields.io/github/license/mashape/apistatus.svg)

SlimIO Argument Checker. This package is inspired by [ow](https://github.com/sindresorhus/ow#readme) to retrieve the callsites but doesn't include any built-in predicates.

## Requirements
- [Node.js](https://nodejs.org/en/) v10 or higher

## Why ?
- No built-in predicates/validation
- No browser support (only Node.js).

## Getting Started

This package is available in the Node Package Repository and can be easily installed with [npm](https://docs.npmjs.com/getting-started/what-is-npm) or [yarn](https://yarnpkg.com).

```bash
$ npm i @slimio/arg-checker
# or
$ yarn add @slimio/arg-checker
```

## Usage example
```js
const argc = require("@slimio/arg-checker");
const is = require("@slimio/is");

function sayHello(name, age) {
    argc(name, [is.string, is.symbol]); // <-- Array stand for "OR" condition
    argc(age, is.number);
}

sayHello("fraxken", 24);
// => No error
sayHello(true);
// => ArgumentError: 'name' doesn't match his predicate(s)
```

## API

<details><summary>argc(arg: any, ...predicates: (argc.predicate | argc.predicate[])[]): void</summary>
<br />

Check if **arg** match his predicates.

```js
const logValidInput = (input) => {
    argc(input, is.number, (num) => num > 10 && num < 20);
    // ...predicates are executing as && condition.
    console.log(input);
}

logValidInput(15);
// => No Error

logValidInput(50);
// => ArgumentError: 'input' doesn't match his predicate(s)
```
</details>

## Roadmap
- Custom Error message ?
- Improve predicates detection ?

## Dependencies

|Name|Refactoring|Security Risk|Usage|
|---|---|---|---|
|[callsites](https://github.com/sindresorhus/callsites#readme)|⚠️Major|Low|Get V8 call stack traces|
|[clean-stack](https://github.com/sindresorhus/clean-stack#readme)|Minor|Low|Clean the stack trace generated by Errors|

## License
MIT
npm package: @slimio/bundler
Description: SlimIO Archive (Addon & Core) Bundler
Author: SlimIO
Latest version: 0.4.2

# bundler
![version](https://img.shields.io/badge/dynamic/json.svg?url=https://raw.githubusercontent.com/SlimIO/bundler/master/package.json?token=AOgWw3vrgQuu-U4fz1c7yYZyc7XJPNtrks5catjdwA%3D%3D&query=$.version&label=Version)
[![Maintenance](https://img.shields.io/badge/Maintained%3F-yes-green.svg)](https://github.com/SlimIO/bundler/commit-activity)
![MIT](https://img.shields.io/github/license/mashape/apistatus.svg)
![dep](https://img.shields.io/david/SlimIO/bundler)
![size](https://img.shields.io/github/languages/code-size/SlimIO/bundler)
[![Known Vulnerabilities](https://snyk.io//test/github/SlimIO/bundler/badge.svg?targetFile=package.json)](https://snyk.io//test/github/SlimIO/bundler?targetFile=package.json)
[![Build Status](https://travis-ci.com/SlimIO/bundler.svg?branch=master)](https://travis-ci.com/SlimIO/bundler)

SlimIO Archive bundler & Core compiler.

## Requirements
- [Node.js](https://nodejs.org/en/) v12 or higher

## Getting Started

This package is available in the Node Package Repository and can be easily installed with [npm](https://docs.npmjs.com/getting-started/what-is-npm) or [yarn](https://yarnpkg.com).

```bash
$ npm i @slimio/bundler
# or
$ yarn add @slimio/bundler
```

## Usage example
TBC

## API

<details><summary>generateAddonArchive(location: string, options?: ArchiveOptions): Promise< string ></summary>
<br />

Create Addon archive.

```js
const { generateAddonArchive } = require("@slimio/bundler");

generateAddonArchive("F:\\Code\\Agent\\addons\\alerting", {
    debug: true
}).catch(console.error);
```

</details>

<details><summary>generateCoreExecutable(location: string, options?: CoreOptions): Promise< string ></summary>
<br />

Compile the core. Options is described by the following interface
```ts
interface CoreOptions {
    debug?: boolean;
    cwd?: string;
}
```

```js
const { generateCoreExecutable } = require("@slimio/bundler");
const { join } = require("path");

generateCoreExecutable("F:\\Code\\AgentTest", {
        debug: true,
        cwd: join(__dirname, "build")
    });
}).then(() => console.log("core compiled")).catch(console.error);
```

</details>

## Dependencies

|Name|Refactoring|Security Risk|Usage|
|---|---|---|---|
|[@slimio/arg-checker](https://github.com/SlimIO/bundler)|Minor|Low|Argument Checker|
|[@slimio/is](https://github.com/SlimIO/is#readme)|Minor|Low|Type checker|
|[@slimio/manifest](https://github.com/SlimIO/Manifester#readme)|Minor|Low|SlimIO manifest|
|[@slimio/tarball](https://github.com/SlimIO/Tarball)|⚠️Major|High|SlimIO Addon & module archive tarball packer/extractor|
|[get-dir-size](https://github.com/fraxken/dir-size#readme)|Minor|Low|Get a directory size|
|[nexe](https://github.com/nexe/nexe#readme)|⚠️Major|High|Create Node.js executable|
|[pretty-bytes](https://github.com/sindresorhus/pretty-bytes#readme)|Minor|Low|Displaying file sizes for humans|

## License
MIT
npm package: @slimio/config-migration
Description: SlimIO Configuration Migration
Latest version: 0.1.0

# ConfigMigration
[![Maintenance](https://img.shields.io/badge/Maintained%3F-yes-green.svg)](https://github.com/SlimIO/is/commit-activity)
![MIT](https://img.shields.io/github/license/mashape/apistatus.svg)
![V1.0](https://img.shields.io/badge/version-0.1.0-blue.svg)

SlimIO Configuration Migration

## Getting Started

This package is available in the Node Package Repository and can be easily installed with [npm](https://docs.npmjs.com/getting-started/what-is-npm) or [yarn](https://yarnpkg.com).

```bash
$ npm i @slimio/config-migration
# or
$ yarn add @slimio/config-migration
```

## Usage example
> Comming soon!

## LICENCE
MIT
npm package: @slimio/error
Description: Slim.IO - Opinionated Error(s) handle/generator
Author: SlimIO
Latest version: 0.2.0

# Error
SlimIO Errors.

## Requirements
- Node.js v10 or higher

## Getting Started

```bash
$ npm i @slimio/error
# or
$ yarn add @slimio/error
```

## Usage example
TBC

## API
TBC

## Dependencies
This project have no dependencies.

## License
MIT
npm package: @slimio/eslint-config
Description: Slimio ESLint configuration
Author: SlimIO
Latest version: 5.0.0

# ESLint Configuration
![version](https://img.shields.io/badge/dynamic/json.svg?url=https://raw.githubusercontent.com/SlimIO/eslint-config/master/package.json&query=$.version&label=Version)
[![Maintenance](https://img.shields.io/badge/Maintained%3F-yes-green.svg)](https://github.com/SlimIO/Eslint-config/commit-activity)
[![mit](https://img.shields.io/github/license/Naereen/StrapDown.js.svg)](https://github.com/SlimIO/Eslint-config/blob/master/LICENSE)
![size](https://img.shields.io/bundlephobia/min/@slimio/eslint-config.svg?style=flat)
![dep](https://img.shields.io/david/SlimIO/eslint-config.svg)
[![Known Vulnerabilities](https://snyk.io//test/github/SlimIO/Eslint-config/badge.svg?targetFile=package.json)](https://snyk.io//test/github/SlimIO/Eslint-config?targetFile=package.json)
[![Build Status](https://travis-ci.com/SlimIO/Eslint-config.svg?branch=master)](https://travis-ci.com/SlimIO/Eslint-config)

SlimIO [ESLint](https://eslint.org/) configuration

## Requirements
- [Node.js](https://nodejs.org/en/) v12 or higher

## Getting Started

This package is available in the Node Package Repository and can be easily installed with [npm](https://docs.npmjs.com/getting-started/what-is-npm) or [yarn](https://yarnpkg.com).

```bash
$ npm i @slimio/eslint-config -D
# or
$ yarn add @slimio/eslint-config -D
```

## Usage example

Create an `.eslintrc` file at the root of your project with the following (JSON) content:
```json
{
    "extends": "@slimio/eslint-config"
}
```

Edit the file as you want by adding [custom rules](https://eslint.org/docs/rules/) if required !

## Why ?

| rule name | value | why we choose this configuration |
| --- | --- | --- |
| indent | 4 | We are considering indent `2` not enougth for code visibility/readability |
| semi | always | We are following the official TC39 ASI recommandation |

## Dependencies

|Name|Refactoring|Security Risk|Usage|
|---|---|---|---|
|[@iarna/toml](https://github.com/iarna/iarna-toml#readme)|Minor|Low|TBC|
|[babel-eslint](https://github.com/babel/babel-eslint)|Minor|High|TBC|
|[eslint](https://eslint.org)|Minor|High|TBC|
|[eslint-plugin-jsdoc](https://github.com/gajus/eslint-plugin-jsdoc#readme)|Minor|High|TBC|

## License
MIT
npm package: @slimio/generator
Description: SlimIO Project Generator
Author: SlimIO
Latest version: 0.11.0

# Generator
![version](https://img.shields.io/badge/dynamic/json.svg?url=https://raw.githubusercontent.com/SlimIO/Generator/master/package.json&query=$.version&label=Version)
[![Maintenance](https://img.shields.io/badge/Maintained%3F-yes-green.svg)](https://github.com/SlimIO/Generator/commit-activity)
[![MIT](https://img.shields.io/github/license/Naereen/StrapDown.js.svg)](https://github.com/SlimIO/Generator/blob/master/LICENSE)
![dep](https://img.shields.io/david/SlimIO/Generator.svg)
![size](https://img.shields.io/github/languages/code-size/SlimIO/Generator.svg)
[![Known Vulnerabilities](https://snyk.io//test/github/SlimIO/Generator/badge.svg?targetFile=package.json)](https://snyk.io//test/github/SlimIO/Generator?targetFile=package.json)
[![Build Status](https://travis-ci.com/SlimIO/Generator.svg?branch=master)](https://travis-ci.com/SlimIO/Generator)

SlimIO Project Generator. This project has been created to help SlimIO contributors **to generate new project without to have to worry** about required files and configuration (as required by the Governance and psp policies).

<p align="center">
    <img src="https://i.imgur.com/kGzMr74.png">
</p>

## Requirements
- [Node.js](https://nodejs.org/en/) v12 or higher

## Getting Started

```bash
$ git clone https://github.com/SlimIO/Generator.git
$ cd Generator
$ npm ci
$ npm link
```

## Usage example
The package will install globally the command `generator`. Just run this command with no arguments and it will generate a new SlimIO project on the current working dir.

```bash
$ mkdir project
$ cd project
$ generator
```

## Dependencies

|Name|Refactoring|Security Risk|Usage|
|---|---|---|---|
|[@slimio/async-cli-spinner](https://github.com/SlimIO/Async-cli-spinner)|Minor|Low|Multi async cli spinner|
|[@slimio/manifest](https://github.com/SlimIO/Manifester#readme)|Minor|Low|Manifest config file|
|[@slimio/nodejs-downloader](https://github.com/SlimIO/nodejs-downloader#readme)|Minor|High|Download Node.js|
|[@slimio/npm-registry](https://github.com/SlimIO/npm-registry#readme)|Minor|Low|NPM registry API|
|[@slimio/utils](https://github.com/SlimIO/Utils#readme)|Minor|High|Bunch of useful functions|
|[cross-spawn](https://github.com/moxystudio/node-cross-spawn)|Minor|High|TBC|
|[kleur](https://github.com/lukeed/kleur)|Minor|Low|TTY color|
|[qoa](https://github.com/klaussinani/qoa#readme)|Minor|Low|Minimal interactive command-line prompts|

## License
MIT
npm package: @slimio/github
Description: Download repository from github
Author: SlimIO
Latest version: 1.0.0

# Github API

![version](https://img.shields.io/badge/dynamic/json.svg?url=https://raw.githubusercontent.com/SlimIO/github/master/package.json&query=$.version&label=Version)
[![Maintenance](https://img.shields.io/badge/Maintained%3F-yes-green.svg)](https://github.com/SlimIO/github/commit-activity)
![MIT](https://img.shields.io/github/license/mashape/apistatus.svg)
![dep](https://img.shields.io/david/SlimIO/github.svg)
![size](https://img.shields.io/bundlephobia/min/@slimio/github.svg)
[![Known Vulnerabilities](https://snyk.io/test/github/SlimIO/github/badge.svg?targetFile=package.json)](https://snyk.io/test/github/SlimIO/github?targetFile=package.json)
[![Build Status](https://travis-ci.com/SlimIO/github.svg?branch=master)](https://travis-ci.com/SlimIO/github)

Download and (optionaly) extract github repository archive.

## Requirements
- [Node.js](https://nodejs.org/en/) v12 or higher

## Getting Started

This package is available in the Node Package Repository and can be easily installed with [npm](https://docs.npmjs.com/getting-started/what-is-npm) or [yarn](https://yarnpkg.com).

```bash
$ npm i @slimio/github
# or
$ yarn add @slimio/github
```

## Usage example
```js
const download = require("@slimio/github");

async function main() {
    const tarGZPath = await download("SlimIO.is");
    console.log(tarGZPath);
}
main().catch(console.error);
```

## API

### download(repo: String, options?): Promise< String >
Download a given "public" repository ! Return the name of the .tar.gz file (or the name of the extracted directory).

Repository should be formatted like that:
```
(org|username).repository_fullname
```

Available options are:

| name | type | default | description |
| --- | --- | --- | --- |
| branch | string | master | Git branch to download |
| dest | string | `process.cwd()` | Tar/Directory destination |
| extract | boolean | `false` | Extract .tar.gz file |
| unlink | boolean | `true` | Remove .tar.gz file on extraction |
| auth | string | `undefined` | Basic Authentication for private repository |

## Env
To be able to work on the project, please create a root `.env` file with these:
```
GIT_TOKEN=token_here
```

## Dependencies

|Name|Refactoring|Security Risk|Usage|
|---|---|---|---|
|[@slimio/is](https://github.com/SlimIO/is#readme)|Minor|Low|Type Checker|
|[follow-redirects](https://github.com/follow-redirects/follow-redirects)|Minor|Low|HTTP Request with URL redirection support|
|[tar-fs](https://github.com/mafintosh/tar-fs)|⚠️Major|High|Extract tar archive|

## License
MIT
npm package: @slimio/gitlab
Description: Download and extract gitlab repository
Author: SlimIO
Latest version: 1.0.0

# Gitlab
![version](https://img.shields.io/badge/dynamic/json.svg?url=https://raw.githubusercontent.com/SlimIO/gitlab/master/package.json&query=$.version&label=Version)
[![Maintenance](https://img.shields.io/badge/Maintained%3F-yes-green.svg)](https://github.com/SlimIO/gitlab/commit-activity)
![MIT](https://img.shields.io/github/license/mashape/apistatus.svg)
![dep](https://img.shields.io/david/SlimIO/gitlab)
![size](https://img.shields.io/github/repo-size/SlimIO/gitlab)
![known vulnerabilities](https://img.shields.io/snyk/vulnerabilities/github/SlimIO/gitlab)
[![Build Status](https://travis-ci.com/SlimIO/gitlab.svg?branch=master)](https://travis-ci.com/SlimIO/gitlab)

Download and (optionaly) extract gitlab repository archive.

## Requirements
- [Node.js](https://nodejs.org/en/) v12 or higher

## Getting Started

This package is available in the Node Package Repository and can be easily installed with [npm](https://docs.npmjs.com/getting-started/what-is-npm) or [yarn](https://yarnpkg.com).

```bash
$ npm i @slimio/gitlab
# or
$ yarn add @slimio/gitlab
```

## Usage example
```js
const download = require("@slimio/gitlab");

async function main() {
    const tarGZPath = await download("SlimIO.is");
    console.log(tarGZPath);
}
main().catch(console.error);
```

## API

### download(repo: String, options?): Promise< String >
Download a given "public" repository ! Return the name of the .tar.gz file (or the name of the extracted directory).

Repository should be formatted like that:
```
(org|username).repository_fullname
```

Available options are:

| name | type | default | description |
| --- | --- | --- | --- |
| branch | string | master | Git branch to download |
| dest | string | `process.cwd()` | Tar/Directory destination |
| extract | boolean | `false` | Extract .tar.gz file |
| unlink | boolean | `true` | Remove .tar.gz file on extraction |
| auth | string | `undefined` | Basic Authentication for private repository |

## Env
To be able to work on the project, please create a root `.env` file with these:
```
GIT_TOKEN=token_here
```

## Dependencies

|Name|Refactoring|Security Risk|Usage|
|---|---|---|---|
|[@slimio/is](https://github.com/SlimIO/is#readme)|Minor|Low|Type Checker|
|[follow-redirects](https://github.com/follow-redirects/follow-redirects)|Minor|Low|HTTP Request with URL redirection support|
|[tar-fs](https://github.com/mafintosh/tar-fs)|⚠️Major|High|Extract tar archive|

## License
MIT
npm package: @slimio/immutable
Description: Immutable Objects and Values
Author: SlimIO
Latest version: 0.1.0

# Immutable
![V0.1.0](https://img.shields.io/badge/version-0.1.0-blue.svg)
[![Maintenance](https://img.shields.io/badge/Maintained%3F-yes-green.svg)](https://github.com/SlimIO/is/commit-activity)
![MIT](https://img.shields.io/github/license/mashape/apistatus.svg)

Immutable Objects properties.

> ⚠️ this project is experimental

## Getting Started

This package is available in the Node Package Repository and can be easily installed with [npm](https://docs.npmjs.com/getting-started/what-is-npm) or [yarn](https://yarnpkg.com).

```bash
$ npm i @slimio/immutable
# or
$ yarn add @slimio/immutable
```

## API

<details><summary>seal< T extends object >(target: T): T</summary>
<br />

Same as [Object.seal()](https://developer.mozilla.org/fr/docs/Web/JavaScript/Reference/Objets_globaux/Object/seal) but doesn't allow to cast the original property type:
```js
const obj = Immutable.seal({
    foo: "bar"
});
obj.foo = "world"; // ok
obj.foo = 10; // Error: Unable to cast string to number for propertyKey foo
```
</details>

<details><summary>freezedProperty(target: object, propertyKey: symbol | string, value?: any): void</summary>
<br />

Setup a freezed property on a given target (Same behavior as Object.freeze but for all kind of values).
```js
const obj = {};
Immutable.freezedProperty(obj, "foo", "bar");
console.log(obj.foo); // stdout bar
delete obj.foo; // Error
```
</details>

## License
MIT
npm package: @slimio/iterator
Description: Iterators utils
Author: SlimIO
Latest version: 1.0.0

# iterator
![version](https://img.shields.io/badge/version-1.0.0-blue.svg)
[![Maintenance](https://img.shields.io/badge/Maintained%3F-yes-green.svg)](https://github.com/SlimIO/is/commit-activity)
![MIT](https://img.shields.io/github/license/mashape/apistatus.svg)

SlimIO Iterator utilities designed to manage and help developer to interact with iterators to release **lazy** code.

## Requirements
- Node.js v10 or higher

## Getting Started

This package is available in the Node Package Repository and can be easily installed with [npm](https://docs.npmjs.com/getting-started/what-is-npm) or [yarn](https://yarnpkg.com).

```bash
$ npm i @slimio/iterator
# or
$ yarn add @slimio/iterator
```

## Usage example
```js
const { fromStream, tryOn, whileOn, compose } = require("@slimio/iterator");
const { createReadStream } = require("fs");

function* splitLines(target) {
    let previous = "";
    try {
        while (true) {
            previous += yield;
            let eolIndex;
            while ((eolIndex = previous.indexOf("\n")) >= 0) {
                target.next(previous.slice(0, eolIndex));
                previous = previous.slice(eolIndex + 1);
            }
        }
    }
    finally {
        if (previous.length > 0) {
            target.next(previous);
        }
        target.return();
    }
}

function* numberLines(next) {
    for (let lineCount = 0; ;lineCount++) {
        next(`${lineCount}: ${yield}`);
    }
}

const fileToRead = process.argv[2];
fromStream(
    createReadStream(fileToRead), compose(splitLines, tryOn(numberLines), whileOn(console.log))
).then(() => console.log("done")).catch(console.error);
```

## API

<details><summary>compose(...generatorFuncs: GeneratorFunction[]): Generator</summary>
<br />

</details>

<details><summary>tryOn(generatorFunc: GeneratorFunction): GeneratorFunction</summary>
<br />

</details>


<details><summary>whileOn(fn: Function): GeneratorFunction</summary>
<br />

</details>


<details><summary>fromStream(stream: Stream.Readable, target: Generator): Promise< void ></summary>
<br />

</details>


<details><summary>mergeAsyncIterator< T >(iterator: AsyncIterator< T >): T[];</summary>
<br />

</details>

## License
MIT
npm package: @slimio/json-diff
Description: Stdout difference from two JS Objects in the TTY
Author: SlimIO
Latest version: 0.1.1

# Json-diff
![version](https://img.shields.io/badge/dynamic/json.svg?url=https://raw.githubusercontent.com/SlimIO/json-diff/master/package.json&query=$.version&label=Version)
[![Maintenance](https://img.shields.io/badge/Maintained%3F-yes-green.svg)](https://github.com/SlimIO/json-diff/commit-activity)
![MIT](https://img.shields.io/github/license/mashape/apistatus.svg)

Differentiates JSON in you terminal with color.

## Requirements
- [Node.js](https://nodejs.org/en/) v12 or higher

## Getting Started

This package is available in the Node Package Repository and can be easily installed with [npm](https://docs.npmjs.com/getting-started/what-is-npm) or [yarn](https://yarnpkg.com).

```bash
$ npm i @slimio/json-diff
# or
$ yarn add @slimio/json-diff
```


## Usage example
```js
const jsonDiff = require("@slimio/json-diff");
const json1 = {
    number: 10,
    array: ["x", "y", "z"]
}

const json2 = {
    number: 20,
    array: ["x", "y", "w"]
}

jsonDiff(json1, json2);
```
It will produce the following stdout:

![stdout](https://i.imgur.com/uVqCnqE.png)

## API

### jsonDiff(original: object, diff: object, options?: Options): void
Stdout the difference between two JSON Object. Available options is described by the following TypeScript interface
```ts
interface Options {
    color?: boolean;
}
```

## Dependencies

|Name|Refactoring|Security Risk|Usage|
|---|---|---|---|
|[kleur](https://github.com/lukeed/kleur)|Minor|Low|TTY color|

## License
MIT
npm package: @slimio/json-schema-prompt
Description: Tool to verify and create some json schema
Author: SlimIO
Latest version: 1.0.1

# Json-schema-prompt
![version](https://img.shields.io/badge/version-1.0.0-blue.svg)
[![Maintenance](https://img.shields.io/badge/Maintained%3F-yes-green.svg)](https://github.com/SlimIO/is/commit-activity)
![MIT](https://img.shields.io/github/license/mashape/apistatus.svg)
![dep](https://img.shields.io/david/SlimIO/json-schema-prompt)
![size](https://img.shields.io/github/languages/code-size/SlimIO/json-schema-prompt)
![Known Vulnerabilities](https://img.shields.io/snyk/vulnerabilities/npm/@slimio/json-schema-prompt)

Fill a JavaScript plainObject by asking one or many question(s) by fetching recursively possible keys and values in a [JSON Schema](https://json-schema.org/).

## Requirements
- [Node.js](https://nodejs.org/en/) v12 or higher

## Getting Started

This package is available in the Node Package Repository and can be easily installed with [npm](https://docs.npmjs.com/getting-started/what-is-npm) or [yarn](https://yarnpkg.com).

```bash
$ npm i @slimio/json-schema-prompt
# or
$ yarn add @slimio/json-schema-prompt
```


## Usage example
```js
const { readFile } = require("fs").promises;
const { join } = require("path");

const { fillWithSchema } = require("@slimio/json-schema-prompt");

async function main() {
    const buf = await readFile(join(__dirname, "config.json"));
    const json = JSON.parse(buf.toString());
    const object = await fillWithSchema(json);

    console.log(JSON.stringify(object, null, 4));
}
main().catch(console.error);
```

## API

### fillWithSchema(schema?: object): Promise< object >
Take a JSON Schema as input and will ask the user to fill the stdin with answer for each fetched key of the schema (if the key have a default value it's possible to skip it). At the end you will get a Javascript Object that match your JSON Schema.

```js
const schema = {
    additionalProperties: false,
    properties: {
        foo: {
            type: "string",
            description: "foo value",
            default: "bar"
        }
    }
};

// ... fill stdin in your terminal
const payload = await fillWithSchema(schema);

console.log(payload); // { foo: "your answer|bar" }

```

## Dependencies

|Name|Refactoring|Security Risk|Usage|
|---|---|---|---|
|[kleur](https://github.com/lukeed/kleur)|Minor|Low|The fastest Node.js library for formatting terminal text with ANSI colors|
|[lodash.set](https://github.com/lodash/lodash)|Minor|Low|Set deep a value in a JavaScript object|
|[qoa](https://github.com/klaussinani/qoa#readme)|Minor|Low|Minimal interactive command-line prompts|

## License
MIT
npm package: @slimio/lazy
Description: SlimIO Lazy Properties lib
Author: SlimIO
Latest version: 1.2.0

# Lazy
[![Maintenance](https://img.shields.io/badge/Maintained%3F-yes-green.svg)](https://github.com/SlimIO/is/commit-activity)
![MIT](https://img.shields.io/github/license/mashape/apistatus.svg)
![V1.0](https://img.shields.io/badge/version-1.2.0-blue.svg)

SlimIO Little lib to set Lazy Properties on JavaScript Objects!

> **Warning** Lazy Property are set to writable: false

## Getting Started

This package is available in the Node Package Repository and can be easily installed with [npm](https://docs.npmjs.com/getting-started/what-is-npm) or [yarn](https://yarnpkg.com).

```bash
$ npm i @slimio/lazy
# or
$ yarn add @slimio/lazy
```

## Usage example

```js
// lp stand for Lazy Proxy
const lp = Lazy.of({});

lp.set("foo", () => "bar");
lp.set("hello", () => {
    // Do job here
});

module.exports = lp.value;
```

Under the hood the lib use the ECMAScript Reflection API to ensure that the property is set (else it will throw an Error).

```js
const obj = Object.freeze({});
Lazy.defineProperty(obj, "foo", () => "bar"); // throw Error
```

## Licence
MIT