open-index/open-npm huggingface dataset:
npm package: @idio/preact-fixture
Description: The Fixture To Test Loading Node_Modules From Front-End.
Author: Anton
Latest version: 1.0.0

# @idio/preact-fixture

[![npm version](https://badge.fury.io/js/@idio/preact-fixture.svg)](https://npmjs.org/package/@idio/preact-fixture)

`@idio/preact-fixture` is The Fixture To Test Loading Node_Modules From Front-End.

```sh
yarn add -E @idio/preact-fixture
```

## Table Of Contents

- [Table Of Contents](#table-of-contents)
- [API](#api)
- [`preactFixture(arg1: string, arg2?: boolean)`](#mynewpackagearg1-stringarg2-boolean-void)
  * [`Config`](#type-config)
- [Copyright](#copyright)

<p align="center"><a href="#table-of-contents"><img src=".documentary/section-breaks/0.svg?sanitize=true"></a></p>

## API

The package is available by importing its default function:

```js
import preactFixture from '@idio/preact-fixture'
```

<p align="center"><a href="#table-of-contents"><img src=".documentary/section-breaks/1.svg?sanitize=true"></a></p>

## `preactFixture(`<br/>&nbsp;&nbsp;`arg1: string,`<br/>&nbsp;&nbsp;`arg2?: boolean,`<br/>`): void`

Call this function to get the result you want.

__<a name="type-config">`Config`</a>__: Options for the program.

|   Name    |   Type    |    Description    | Default |
| --------- | --------- | ----------------- | ------- |
| shouldRun | _boolean_ | A boolean option. | `true`  |
| __text*__ | _string_  | A text to return. | -       |

```js
/* yarn example/ */
import preactFixture from '@idio/preact-fixture'

(async () => {
  const res = await preactFixture({
    text: 'example',
  })
  console.log(res)
})()
```
```
example
```

<p align="center"><a href="#table-of-contents"><img src=".documentary/section-breaks/2.svg?sanitize=true"></a></p>

## Copyright

(c) [Idio][1] 2019

[1]: https://idio.cc

<p align="center"><a href="#table-of-contents"><img src=".documentary/section-breaks/-1.svg?sanitize=true"></a></p>
npm package: @idiosync/horizontal-flatlist
Description: Provides the ability to specify number of rows to a horizontal React Native FlatList
Author: James Trickey
Latest version: 1.0.18

[![NPM Version][npm-image]][npm-url]

# React Native Horizontal FlatList 

<h3>Improved horizontal FlatList for React Native - by  <a href="https://www.npmjs.com/~idiosync"><img width="100px" height="31px" valign="middle" src="https://storage.googleapis.com/idiosync-web-images/telescope/idiosync_very_small_white_bg.png"></a></h3>

Provides the ability to specify number of rows to a horizontal React Native FlatList

## Installation

yarn:

```bash
$ yarn add @idiosync/horizontal-flatlist
```

npm:

```bash
$ npm i @idiosync/horizontal-flatlist
```
 
## Usage

```js
import { HorizontalFlatList } from '@idiosync/horizontal-flatlist'

const SomeComponent = () => {
  const data = [
    'one',
    'two',
    'three',
    'four',
    'five',
    'six'
  ]

  const renderItem = ({item, row, col}) => {
    <Text>{item}</Text>
  }

  const keyExtractor = (item, row, col) => item 
 
  return (
    <HorizontalFlatList
      data={data}
      numRows={2}
      keyExtractor={keyExtractor}
      renderItem={renderItem}
    />
  )
}
```

## Props

Props are inherited form FlatListProps, but with the following changes:
- **renderItem** - Overidden to include the column number
``` ts
({ item: ItemT, row: number, col: number}) => JSX.Element
```

- **keyExtractor** - Overidden to include the column number
``` ts
(item: ItemT, row: number, col: number) => string
```
   
- **numRows** - Number of items in each column
- **columnStyle** - ViewStyle  for the column view
 
- **horizontal** - Removed
- **numColumns** - Removed
 
[npm-image]: https://img.shields.io/npm/v/@idiosync/horizontal-flatlist
[npm-url]: https://www.npmjs.com/package/@idiosync/horizontal-flatlist
npm package: @idiotstudios/piko
Description: A lightweight Express alternative by IdiotStudios
Author: IdiotStudios
Latest version: 0.1.0

# 🧠 Piko

A lightweight, modern **Express alternative** made by **IdiotStudios**.
Designed to be simple, fast, and fully compatible with the familiar Express API.

```js
import piko from "piko";

const app = piko();

app.get("/", (req, res) => res.send("Hello from Piko!"));
app.listen(3000);
```

## 🚀 Features

* Express-like API (`req`, `res`, `next`)
* Middleware, Routers, Params
* Built-in JSON + Static middleware
* Zero dependencies
* ESM-first design

## 💡 Contributing

Open issues and PRs are welcome!
Let's make **Piko** a great Express alternative together!

👉 [IdiotStudios on GitHub](https://github.com/IdiotStudios)
npm package: @idirdev/codecount
Description: Count lines of code, comments, and blanks by language.
Author: idirdev
Latest version: 1.0.0

# codecount

> **[EN]** Count lines of code by language with detailed statistics.
> **[FR]** Compter les lignes de code par langage avec des statistiques detaillees.

---

## Features / Fonctionnalites

**[EN]**
- Count lines of code, comments, and blanks
- Language detection by file extension
- Support 30+ programming languages
- Ignore patterns (node_modules, .git, dist)
- Table or JSON output
- Sort by lines, files, or language

**[FR]**
- Compter les lignes de code, commentaires et blancs
- Detection du langage par extension de fichier
- Support de 30+ langages de programmation
- Motifs d'exclusion (node_modules, .git, dist)
- Sortie tableau ou JSON
- Tri par lignes, fichiers ou langage

---

## Installation

```bash
npm install -g @idirdev/codecount
```

---

## CLI Usage / Utilisation CLI

```bash
# Count in current directory
codecount

# Specific directory
codecount ./src

# JSON output
codecount --json

# Sort by lines
codecount --sort lines
```

### Example Output / Exemple de sortie

```
$ codecount ./my-project

Language        Files    Code    Comment    Blank    Total
------------------------------------------------------------
JavaScript        24    2,847       312       287    3,446
TypeScript         8    1,205       145        98    1,448
CSS                5      423        12        45      480
JSON               3      156         0         2      158
Markdown           2       89         0        34      123
------------------------------------------------------------
Total             42    4,720       469       466    5,655
```

---

## API (Programmatic) / API (Programmation)

```js
const { countLines, detectLanguage } = require('codecount');

const stats = countLines('./src');
// => { javascript: { files: 24, code: 2847, comment: 312, blank: 287 }, ... }

const lang = detectLanguage('app.tsx');
// => 'TypeScript'
```

---

## License

MIT - idirdev
npm package: @idirdev/dotdiff
Description: Side-by-side diff of .env files with color-coded output
Author: idirdev
Latest version: 1.0.0

# dotdiff

> **[EN]** Compare and diff .env files side by side.
> **[FR]** Comparer et visualiser les differences entre fichiers .env cote a cote.

---

## Features / Fonctionnalites

**[EN]**
- Side-by-side diff of two .env files
- Color-coded output (added, removed, changed, unchanged)
- Detect value changes for same keys
- Mask sensitive values (passwords, tokens)
- JSON output option
- Exit code for CI: 0 = identical, 1 = different

**[FR]**
- Diff cote a cote de deux fichiers .env
- Sortie coloree (ajoute, supprime, modifie, inchange)
- Detection des changements de valeur pour les memes cles
- Masquage des valeurs sensibles (mots de passe, tokens)
- Option de sortie JSON
- Code de sortie CI : 0 = identique, 1 = different

---

## Installation

```bash
npm install -g @idirdev/dotdiff
```

---

## CLI Usage / Utilisation CLI

```bash
# Compare two .env files
dotdiff .env.production .env.staging

# Mask sensitive values
dotdiff .env.prod .env.dev --mask

# JSON output
dotdiff .env.prod .env.dev --json
```

### Example Output / Exemple de sortie

```
$ dotdiff .env.production .env.staging

  KEY           | .env.production   | .env.staging
  --------------|-------------------|------------------
  DB_HOST       | prod.db.com       | staging.db.com    [CHANGED]
  DB_PORT       | 5432              | 5432
+ REDIS_URL     |                   | redis://localhost  [ADDED]
- SENTRY_DSN    | https://sentry... |                    [REMOVED]
  NODE_ENV      | production        | staging            [CHANGED]

  Summary: 2 changed, 1 added, 1 removed, 1 identical
```

---

## API (Programmatic) / API (Programmation)

```js
const { diffEnvFiles, formatDiff } = require('dotdiff');

const diff = diffEnvFiles('.env.prod', '.env.dev');
// => { added: [...], removed: [...], changed: [...], unchanged: [...] }

console.log(formatDiff(diff));
```

---

## License

MIT - idirdev
npm package: @idirdev/envgen
Description: Generate .env files from templates with random secure values
Author: idirdev
Latest version: 1.0.0

# envgen

> **[EN]** Generate .env files from templates with random secure values.
> **[FR]** Generer des fichiers .env a partir de templates avec des valeurs securisees aleatoires.

---

## Features / Fonctionnalites

**[EN]**
- Generate .env from a template with placeholders
- Auto-generate secure random values (secrets, passwords, UUIDs)
- Interactive and non-interactive modes
- Default values support
- Multiple output formats (.env, JSON, YAML)

**[FR]**
- Generer un .env a partir d'un template avec placeholders
- Auto-generation de valeurs aleatoires securisees (secrets, mots de passe, UUIDs)
- Modes interactif et non-interactif
- Support des valeurs par defaut
- Formats de sortie multiples (.env, JSON, YAML)

---

## Installation

```bash
npm install -g @idirdev/envgen
```

---

## CLI Usage / Utilisation CLI

```bash
# Generate from template
envgen --template .env.template --output .env

# Generate with auto-fill for secrets
envgen --auto

# Help
envgen --help
```

### Example Output / Exemple de sortie

```
$ envgen --template .env.template --output .env
[envgen] Reading template: .env.template
[envgen] Generated:
  DB_HOST=localhost
  DB_PORT=5432
  SECRET_KEY=a4f8c2e1b7d93f6a... (auto-generated)
  JWT_SECRET=e7b1d4f8a2c6e9... (auto-generated)
  SESSION_ID=550e8400-e29b-41d4... (UUID)
[envgen] Written to .env (5 variables)
```

---

## API (Programmatic) / API (Programmation)

```js
const { generateEnv, generateSecret } = require('envgen');

// Generate from template
const result = generateEnv('.env.template', {
  overrides: { DB_HOST: 'prod.db.com' }
});

// Generate a random secret
const secret = generateSecret(32); // 32-byte hex string
```

---

## License

MIT - idirdev
npm package: @idirdev/envsync
Description: Compare and sync .env files to find missing variables
Author: idirdev
Latest version: 1.0.0

# envsync

> **[EN]** Sync and validate environment variables across .env files.
> **[FR]** Synchroniser et valider les variables d'environnement entre fichiers .env.

---

## Features / Fonctionnalites

**[EN]**
- Compare .env files to find missing variables
- Sync variables between .env.example and .env
- Validate required variables are set
- Detect duplicate keys
- Type validation (string, number, boolean, url, email)
- CI-friendly exit codes

**[FR]**
- Comparer les fichiers .env pour trouver les variables manquantes
- Synchroniser les variables entre .env.example et .env
- Valider que les variables requises sont definies
- Detecter les cles en double
- Validation de type (string, number, boolean, url, email)
- Codes de sortie compatibles CI

---

## Installation

```bash
npm install -g @idirdev/envsync
```

---

## CLI Usage / Utilisation CLI

```bash
# Compare .env.example with .env
envsync diff .env.example .env

# Validate .env has all required vars
envsync validate .env --required DB_HOST,DB_PORT,SECRET

# Sync missing vars from example
envsync sync .env.example .env

# Help
envsync --help
```

### Example Output / Exemple de sortie

```
$ envsync diff .env.example .env

Comparing .env.example -> .env

  Missing in .env:
    - DB_HOST (defined in .env.example)
    - REDIS_URL (defined in .env.example)

  Extra in .env:
    + DEBUG (not in .env.example)

  Summary: 2 missing, 1 extra, 8 synced
```

---

## API (Programmatic) / API (Programmation)

```js
const { parseEnv, diffEnv, validateEnv } = require('envsync');

// Parse a .env file
const vars = parseEnv('.env');
// => { DB_HOST: 'localhost', DB_PORT: '5432' }

// Diff two env files
const diff = diffEnv('.env.example', '.env');
// => { missing: ['SECRET'], extra: ['DEBUG'], common: ['DB_HOST'] }

// Validate
const result = validateEnv('.env', { required: ['DB_HOST', 'SECRET'] });
// => { valid: false, missing: ['SECRET'] }
```

---

## License

MIT - idirdev
npm package: @idirdev/git-clean-branches
Description: Clean up merged and stale git branches
Author: idirdev
Latest version: 1.0.0

# git-clean-branches

> **[EN]** Clean up merged and stale git branches locally and remotely.
> **[FR]** Nettoyer les branches git fusionnees et obsoletes en local et a distance.

---

## Features / Fonctionnalites

**[EN]**
- List merged branches that can be safely deleted
- Detect stale branches (no commits for N days)
- Interactive or auto mode
- Protect main/master/develop branches
- Clean local and remote branches
- Dry-run mode to preview deletions

**[FR]**
- Lister les branches fusionnees pouvant etre supprimees
- Detecter les branches obsoletes (pas de commit depuis N jours)
- Mode interactif ou automatique
- Protection des branches main/master/develop
- Nettoyer les branches locales et distantes
- Mode dry-run pour previsualiser les suppressions

---

## Installation

```bash
npm install -g @idirdev/git-clean-branches
```

---

## CLI Usage / Utilisation CLI

```bash
# List merged branches
git-clean-branches --merged

# Clean stale branches (>30 days)
git-clean-branches --stale 30

# Dry run
git-clean-branches --merged --dry-run

# Include remote branches
git-clean-branches --merged --remote
```

### Example Output / Exemple de sortie

```
$ git-clean-branches --merged --dry-run

Merged branches (safe to delete):
  feature/auth-refactor     (merged 12 days ago)
  fix/login-bug             (merged 45 days ago)
  chore/update-deps         (merged 3 days ago)

Protected (skipped):
  main, develop

3 branches would be deleted (dry-run mode)
```

---

## API (Programmatic) / API (Programmation)

```js
const { findMergedBranches, findStaleBranches, deleteBranch } = require('git-clean-branches');

const merged = findMergedBranches({ remote: false });
// => ['feature/auth-refactor', 'fix/login-bug']

const stale = findStaleBranches({ days: 30 });
// => [{ name: 'old-feature', lastCommit: '2025-01-15', daysAgo: 60 }]
```

---

## License

MIT - idirdev
npm package: @idirdev/git-standup
Description: Show what you worked on recently for standups
Author: idirdev
Latest version: 1.0.0

# git-standup

> **[EN]** See what you worked on yesterday / last working day for standups.
> **[FR]** Voir ce que vous avez fait hier / dernier jour ouvre pour les standups.

---

## Features / Fonctionnalites

**[EN]**
- Show commits from the last working day
- Multi-repo support (scan subdirectories)
- Filter by author
- Customizable date range
- Markdown output for pasting in Slack/Teams

**[FR]**
- Afficher les commits du dernier jour ouvre
- Support multi-repo (scan des sous-repertoires)
- Filtrer par auteur
- Plage de dates personnalisable
- Sortie Markdown pour coller dans Slack/Teams

---

## Installation

```bash
npm install -g @idirdev/git-standup
```

---

## CLI Usage / Utilisation CLI

```bash
# What did I do yesterday?
git-standup

# Last 3 days
git-standup --days 3

# Specific author
git-standup --author "idirdev"

# Scan all repos in ~/projects
git-standup --dir ~/projects --recursive
```

### Example Output / Exemple de sortie

```
$ git-standup --days 2

my-api/ (2 commits)
  a1b2c3d  fix: resolve auth middleware race condition
  d4e5f6a  feat: add rate limiting to /api/users

my-frontend/ (1 commit)
  b7c8d9e  style: update dashboard layout for mobile

Total: 3 commits across 2 repos
```

---

## API (Programmatic) / API (Programmation)

```js
const { getStandup, scanRepos } = require('git-standup');

const standup = getStandup({ days: 1, author: 'idirdev' });
// => [{ repo: 'my-api', commits: [...] }]

const repos = scanRepos('~/projects');
// => ['~/projects/api', '~/projects/frontend']
```

---

## License

MIT - idirdev
npm package: @idirdev/killport
Description: Find and kill processes on a TCP port
Author: idirdev
Latest version: 1.0.0

# killport

> **[EN]** Find and kill processes occupying a given port.
> **[FR]** Trouver et terminer les processus occupant un port donne.

---

## Features / Fonctionnalites

**[EN]**
- Detect which PID is listening on a TCP port
- Kill processes gracefully (SIGTERM) or forcefully (SIGKILL / taskkill /F)
- Dry-run mode to preview without killing
- Cross-platform: Linux, macOS, Windows

**[FR]**
- Detecter quel PID ecoute sur un port TCP
- Terminer les processus en douceur (SIGTERM) ou de force (SIGKILL / taskkill /F)
- Mode dry-run pour previsualiser sans tuer
- Multi-plateforme : Linux, macOS, Windows

---

## Installation

```bash
npm install -g @idirdev/killport
```

---

## CLI Usage / Utilisation CLI

```bash
# Kill process on port 3000
killport 3000

# Force kill
killport 3000 --force

# Dry run (show PID only)
killport 3000 --dry-run

# Help
killport --help
```

### Example Output / Exemple de sortie

```
$ killport 3000
PID 12345: killed

$ killport 8080 --dry-run
PID 54321

$ killport 9999
No process on port 9999
```

---

## API (Programmatic) / API (Programmation)

```js
const { findProcessOnPort, killPort } = require('killport');

// Find processes on port 3000
const procs = findProcessOnPort(3000);
// => [{ pid: 12345, port: 3000 }]

// Kill all processes on port 3000
const result = killPort(3000, { force: true });
// => { port: 3000, killed: [{ pid: 12345, killed: true }], notFound: false }
```

### API Reference

| Function | Description EN | Description FR |
|---|---|---|
| `findProcessOnPort(port)` | Returns array of PIDs on a port | Retourne les PIDs sur un port |
| `killProcess(pid, force)` | Kill a process by PID | Termine un processus par PID |
| `killPort(port, opts)` | Kill all processes on a port | Termine tous les processus sur un port |

---

## License

MIT - idirdev
npm package: @idist/ckeditor-nuxt
Description: CKEditor 5 editor for nuxt apps. The component includes all free available plugins (except CKFinder, instead simple upload adapter used)
Author: Idist-hn
Latest version: 1.0.1

# ckeditor-nuxt
CKEditor 5 editor for nuxt apps. The component includes all free available plugins (except CKFinder, instead simple upload adapter used)

## Requirements
```
yarn add nuxt
npm i nuxt
```

## Component integration
```
yarn add @idist/ckeditor-nuxt
npm install --save @idist/ckeditor-nuxt
```

## List of included plugins
* Alignment,
* AutoImage,
* Autoformat,
* Autolink,
* BlockQuote,
* Bold,
* CloudServices,
* Code,
* CodeBlock,
* Essentials,
* FontBackgroundColor,
* FontColor,
* FontFamily,
* FontSize,
* Heading,
* Highlight,
* HorizontalLine,
* Image,
* ImageCaption,
* ImageInsert,
* ImageResize,
* ImageStyle,
* ImageToolbar,
* ImageUpload,
* Indent,
* IndentBlock,
* Italic,
* Link,
* LinkImage,
* List,
* ListStyle,
* MathType,
* MediaEmbed,
* MediaEmbedToolbar,
* PageBreak,
* Paragraph,
* PasteFromOffice,
* RemoveFormat,
* SimpleUploadAdapter,
* SpecialCharacters,
* SpecialCharactersArrows,
* SpecialCharactersCurrency,
* SpecialCharactersEssentials,
* SpecialCharactersLatin,
* SpecialCharactersMathematical,
* SpecialCharactersText,
* Strikethrough,
* Subscript,
* Superscript,
* Table,
* TableCellProperties,
* TableProperties,
* TableToolbar,
* TextTransformation,
* Title,
* TodoList,
* Underline,
* WordCount

## Usage
```
<template>
  <client-only placeholder="loading...">
    <ckeditor-nuxt v-model="contentHolder" :config="editorConfig"  />
  </client-only>
</template>

<script>
export default {
  components: {
    'ckeditor-nuxt': () => { if (process.client) { return import('@blowstack/ckeditor-nuxt') } },
  },
  data() {
    return {
      editorConfig: {
        simpleUpload: {
          uploadUrl: 'path_to_image_controller',
          headers: {
            'Authorization': 'optional_token'
          }
        }
      },
      contentHolder: ""
    }
  }
}
</script>
```
## Customization

To make customization use editorConfig object.
It works the same way as the default ckeditor 5.
More info at https://ckeditor.com/docs/ckeditor5/latest/api/module_core_editor_editorconfig-EditorConfig.html

For example if you want to disable Title plugin:

```

editorConfig: {
    removePlugins: ['Title'],
}
```

You can also change the behaviour of any plugin. For the Title plugin you can change for example the placeholder:

```

editorConfig: {
    title: {
        placeholder: 'h1'
    }
}
```
npm package: @idkfelix/compass.js
Description: API Client for Compass Edu written in JavaScript and typed with JSDoc
Author: idkfelix
Latest version: 1.0.16

<h1 align='center'>Compass.JS</h1>
<p align='center'>API Client for Compass Education written in JavaScript and typed with JSDoc</p>

<div align='center'>
<img src="https://img.shields.io/badge/JavaScript-F7DF1E?logo=javascript&logoColor=000&style=flat-square" alt="JavaScript Badge">
<img src="https://img.shields.io/badge/npm-CB3837?logo=npm&logoColor=fff&style=flat-square" alt="npm Badge">
<img src="https://img.shields.io/badge/Singapore%20Airlines-F99F1C?logo=singaporeairlines&logoColor=fff&style=flat-square" alt="Singapore Airlines Badge">
</div>
</br>

## Resources
NPM Package: https://www.npmjs.com/package/@idkfelix/compass.js \
GitHub Repo: https://github.com/idkfelix/compass.js \
Compass Website: https://www.compass.education/

## Installation

Install the latest version from npm locally and save it in your project's `package.json` file:
```bash
$ npm install --save @idkfelix/compass.js
```

## Example Usage

Initialise a new Compass client and console log the returned user info:

> index.js
```javascript
import CompassClient from '@idkfelix/compass.js';
import 'dotenv/config';

(async()=>{
  let cookie = process.env.COOKIE
  if(!token) throw new Error('Error: No cookie')
  const client = await CompassClient('example.compass.education',cookie);
  console.log(client.userInfo);
})();
```
> .env
```bash
COOKIE='ASP.NET_SessionId=...'
```

## Services and Locations

#### Accounts.svc
- /GetAccount
#### Activity.svc
- /GetLessonsByActivityId
- /GetLessonsByActivityIdQuick
- /GetLessonsByInstanceId
- /GetLessonsByInstanceIdQuick
#### Calendar.svc
- /GetCalendarEventsByUser
#### LearningTasks.svc
- /GetAllLearningTasksByUserId
- /GetAllLearningTasksByActivityId
#### TaskService.svc
- /GetTaskItems
- /GetAllTaskItems
- /SaveTaskItem
- /DeleteTaskItem
- /UpdateTaskItem
#### Users.svc
- /GetAllStaff
npm package: @idkjs/cra-template-reason-tailwind-ppx
Description: A ReasonML template for Create React App with Tailwind PPX.
Author: Alain Armand
Latest version: 1.0.5

# cra-template-reason-tailwind-ppx

This is a [ReasonML](https://reasonml.github.io/) + [ReasonReact](https://reasonml.github.io/reason-react/en/) template for [Create React App](https://github.com/facebook/create-react-app) featuring [TailwindCSS](https://tailwindcss.com) and [dylanirlbeck/tailwind-ppx](https://github.com/dylanirlbeck/tailwind-ppx) for type-safe `css`.

## Install

To use this template, add `--template @idkjs/reason-tailwind-ppx` when creating a new app.

For example:

```sh
npx create-react-app my-app --template @idkjs/reason-tailwind-ppx
# or
yarn create react-app my-app --template @idkjs/reason-tailwind-ppx
```

## Highlights

**Silences ESLint's Bucklescript Errors**

Available since [react-scripts@0.5.0](https://create-react-app.dev/docs/adding-custom-environment-variables#adding-development-environment-variables-in-env),
this template adds an `.eslintignore` file in the root directory with `*.bs.js` so that `react-scripts` ignores javascript errors which have already been handled by `bucklescript`. The `javascript` is 100% safe with [ReasonML](https://reasonml.github.io/) so we don't have to worry about these `eslint` warnings. To disable, remove `*.bs.js` from `.eslintignore` or remove `.eslintignore`. Remove `EXTEND_ESLINT=true` from you `.env` file.

**TailWind PPX**

See [bsconfig.json](template/bsconfig.json) for the default set up. Styles are set in [src/styles/tailwind.css](template/src/styles/tailwind.css) and [src/styles/index.css](template/src/styles/index.css) and compiled with the `build:styles` script in `package.json`.

## For more information, please refer to:

- [Getting Started](https://create-react-app.dev/docs/getting-started) – How to create a new app.
- [User Guide](https://create-react-app.dev) – How to develop apps bootstrapped with Create React App.
- [Building A Template](https://create-react-app.dev/docs/custom-templates/#building-a-template) – How to build a custom Create React App Template.
- [EXTEND_ESLINT=true](https://create-react-app.dev/docs/advanced-configuration) - Define permanent environment variables in a creat-react-app project.
- [Tailwind-PPX](https://github.com/dylanirlbeck/tailwind-ppx) - Reason/OCaml PPX for writing compile-time validated Tailwind CSS classes.
- [TailwindCSS](https://tailwindcss.com) - A utility-first CSS framework for
rapidly building custom designs.
npm package: @idkjs/reason-expo-vector-icons
Description: Bucklescript bindings for @expo/vector-icons, the standard way to use icons with Expo.
Author: Alain Armand
Latest version: 31.0.1

# Reason @expo/vector-icons

This library is the bindings for @expo/vector-icons which is a compatibility layer around @oblador/react-native-vector-icons to work with the Expo asset system. If you're using Javascript/Typescript, you have no need for this library -- carry on! (or maybe check out [@expo/vector-icons](https://github.com/expo/vector-icons)).

If you're not using Expo, then check out [Astrocoders/bs-react-native-vector-icons](https://github.com/Astrocoders/bs-react-native-vector-icons) instead.

The main difference is that the icons have been updated to current version, `reason` syntax has been updated to latest, this project uses the the latest `reason-react-native` and the `api` has slightly changed in the you can now call any of the icon templates with:

```reason
open ReasonExpoVectorIcons;

// or
<ReasonExpoVectorIcons.Ionicons>

```

## Resources

- [@expo/vector-icons directory](https://expo.github.io/vector-icons/) - a searchable list of all included icons.
  ![Screenshot of website](https://raw.githubusercontent.com/expo/vector-icons/master/website-screenshot.png)
- [Expo documentation](https://docs.expo.io/)

## Live App

Run the example on your phone or simulator with `yarn example` from the root directory.

Run it on web with `cd example && yarn install && yarn build`. Then in the terminal run `expo start --web`. Running `web` with `expo` is in active development and it doesn't seem to work from `npm scripts`.

See the demo on [snack.io](www.snack.io) at <https://expo.io/@idkjs/ReasonExpoVectorIconsTestApp>

## Installation

With yarn

`yarn add @idkjs/reason-expo-vector-icons`

With npm

`npm i @idkjs/reason-expo-vector-icons`

Then add it to your `bsconfig.json`

```json
  ...
  "bs-dependencies": [
    "reason-react",
    "reason-react-native",
    "reason-expo-vector-icons"
  ],
  ...
```

## Usage

```reason
open ReasonExpoVectorIcons;
[@react.component]
let make = () => {
  <Ionicons name=`iosAddCircle size=32 color="magenta" />
};
```

## Credits

Thanks to [Astrocoders/bs-react-native-vector-icons](https://github.com/Astrocoders/bs-react-native-vector-icons) for
providing an example of how to generate this from glyphmap files.

Thanks to [oblador/react-native-vector-icons](https://github.com/oblador/react-native-vector-icons) for the icons.

Thanks to [@expo/vector-icons](https://github.com/expo/vector-icons) for expo.
Thanks to [lewisf/reason-expo-vector-icons](https://github.com/lewisf/reason-expo-vector-icons) for original version of this program.

![ios-screenshot](./ios-screenshot.png)
npm package: @idkjs/reason-react-native-apollo-template
Description: [![Version](https://img.shields.io/npm/v/@idkjs/reason-react-native-apollo-template.svg)](https://www.npmjs.com/@idkjs/reason-react-native-apollo-template) [![Chat](https://img.shields.io/discord/235176658175262720.svg?logo=discord&colorb=blue)](https://r
Latest version: 0.63.3

# `@idkjs/reason-react-native-apollo-template`

[![Version](https://img.shields.io/npm/v/@idkjs/reason-react-native-apollo-template.svg)](https://www.npmjs.com/@idkjs/reason-react-native-apollo-template)
[![Chat](https://img.shields.io/discord/235176658175262720.svg?logo=discord&colorb=blue)](https://reason-react-native.github.io/discord/)

> Reason React Native Apollo Graphql template for application developed in Reason.

Please carefully read instructions below in order to enjoy ReasonML development
experience.

## Setup

## Start a Reason React Native project with this template

```console
npx @react-native-community/cli init MyApp --template @idkjs/reason-react-native-apollo-template
cd MyApp
```

Now that you are ready to go, you can check our documentation on
[how to use Reason React Native](https://reason-react-native.github.io/en/docs/usage/).
npm package: @idkjs/reason-remote-data
Description: Tools for fetching data from remote sources (incl. HTTP)
Author: Alain Armand
Latest version: 1.0.0

# Reason Remote Data

This is project is based on the great gist [https://gist.github.com/idkjs/8e723a86f09843c4038123c45c846f75](remotedata) module.
It's just trying to go through the steps of releasing a library.

Use this if you actual need `remotedata`: [remotedata-re](https://github.com/lrosa007/remotedata-re)

## Setup

Install the module:

```bash
yarn add @aa/reason-remote-data
```

Then add it to your `bsconfig.json`:

```json
{
  "bs-dependencies": ["reason-react", "@aa/reason-remote-data"]
}
```

## Publishing


## Usage
npm package: @idkmsb/blankt-prettier-config
Description: Blankt's Prettier config
Author: blankt
Latest version: 1.0.1

# `@idkmsb/blankt-prettier-config`

> Blankt's [Prettier](https://prettier.io) config.

## Usage

**Install**:

```bash
$ yarn add --dev @idkmsb/blankt-prettier-config
```

**Edit `package.json`**:

```jsonc
{
  // ...
  "prettier": "@idkmsb/blankt-prettier-config"
}
```
npm package: @idkncc/discordjs-decorators
Description: Useful decorators for DiscordJS
Author: idkncc
Latest version: 1.0.6

# DiscordJS Decorators

DiscordJS decorators for better structure

![NPM](https://badgen.net/npm/v/@idkncc/discordjs-decorators)
![NPM](https://badgen.net/npm/dt/@idkncc/discordjs-decorators)

## Installation

1. Install DiscordJS **(not next version!)**
   ```shell
   yarn add discord.js
   ```
2. Install DiscordJS-Decorators
   ```shell
   yarn add @idkncc/discordjs-decorators
   ```
3. Add to `tsconfig.json`
   ```json
   "experimentalDecorators": true
   ```
4. Ready to use

## Simplest Example

```ts
// index.ts
import {EventLoader, importGlob} from "@idkncc/discordjs-decorators";
import {Client, Events} from "discord.js";

require("dotenv").config()

const client = new Client({intents: ["Guilds"]})

client.once(Events.ClientReady, c => {
	console.log(`Bot is ready! Logged in as ${c.user.tag}`)

	new EventLoader()
		// import whole folder
		.add(importGlob("./events/**/*.ts"))

		// constants for command registering
		.env(process.env.NODE_ENV !== "production", process.env.CLIENT_ID, process.env.GUILD_ID)

		// and finally load everything
		.load(client)
})


client.login(process.env.TOKEN)
```

```ts
// /events/event.ts
import {Events} from "discord.js"
import {Event} from "@idkncc/discordjs-decorators"

export class ExampleEventImportedOne {
	// regular event
	@Event(Events.MessageCreate)
	messageCreate(d) {
		console.log("Someone said")
	}

	// register slashcommand
	@SlashCommand.Name("warn")
	@SlashCommand.Description("Warns user")
	@SlashCommand.UserOption((opt) => opt
		.setName("user")
		.setDescription("User, who will get warned")
		.setRequired(true)
	)
	@SlashCommand.StringOption((opt) => opt
		.setName("reason")
		.setDescription("Reason to warn")
	)
	testCommand(test: ChatInputCommandInteraction) {
		// do smth
	}
}
```

Other example you can find in [`example/`](example/) folder

## TODO
- [ ] Validators **(very useful but not now :(  )**
- [ ] More decorators for `@SlashCommand`
- [ ] Middlewares
npm package: @idkncc/forward-port
Description: Your local port forwarding
Author: idkncc
Latest version: 1.0.4
Deprecated: Package no longer supported. Contact Support at https://www.npmjs.com/support for more info.

# Forward Port
Your local port forwarding

## Installation
- Install from NPM
  ```shell
  npm i -g @idkncc/forward-port
  forward-port server <preshared-key>
  ```
- Build
  ```shell
  #1. Install deps
  yarn
  
  #2. Build
  yarn dev
    
  #3. Run
  yarn start server <preshared-key>
  # or
  # node ./bin server <preshared-key>
  ```

## Usage
> **Note:** Pre-Shared key needs to be random and identical on server and client
```shell
# Generate unique pre-shared key
forward-port gen-key [length]

# Create ForwardPort (FP) Server
forward-port server <preshared-key> [-p <other-port>]

# Create ForwardPort Client
forward-port client <local-port> <fp-server> <preshared-key> [-p <other-port>] [--debug]
```

## Example (Minecraft Server)
- On your server (with white IP, **f.e. VDS**)
  ```shell
  npx @idkncc/forward-port server SUPER_SECRET_KEY
  # f.e. Server runs on IP 5.5.5.5
  ```
- On your PC
  ```shell
  #                      minecraft port   vds
  #                                v       v
  npx @idkncc/forward-port client 25565 5.5.5.5 SUPER_SECRET_KEY
  ```
- Your friend: Uses **5.5.5.5:1337** to connect