open-index/open-npm huggingface dataset:
npm package: @rojo2/create-random-function
Description: ![Travis CI](https://travis-ci.org/rojo2/create-random-function.svg?branch=master)
Author: ROJO 2
Latest version: 1.0.3

# Create Random Function
![Travis CI](https://travis-ci.org/rojo2/create-random-function.svg?branch=master)

```javascript
import createRandomFunction from "@rojo2/create-random-function";

const random = createRandomFunction();
random() // returns a random value

const initialValue = 2;
const random2 = createRandomFunction(initialValue);
random() !== random2()
```

NOTE: You should never use this random values for cryptography.

Made with :heart: by ROJO 2 (http://rojo2.com)
npm package: @rojo2/downloader
Description: Downloads Blob or File
Author: rojo2
Latest version: 1.0.0

# `@rojo2/download`

Allow the user to download a Blob/File.

```javascript
import { download } from '@rojo2/download'

download(blob, fileName)
```

Made with :heart: by [rojo2](https://rojo2.com)
npm package: @rojo2/human-readable-id
Description: Creates a random human-readable identifier
Author: ROJO 2
Latest version: 1.0.0

# `@rojo2/human-readable-id`

```javascript
import createId from '@rojo2/human-readable-id'

// This generates a human readable identifier of lenght 6.
console.log(createId())
```

Made with :heart: by [rojo2](https://rojo2.com)
npm package: @rojo2/interpolation
Description: Utility functions to use `linear`, `quadratic` and `cubic` interpolation.
Author: rojo2
Latest version: 1.0.0

# `@rojo2/interpolation`

Utility functions to use `linear`, `quadratic` and `cubic` interpolation.

```javascript
import { linear, quadratic, cubic } from '@rojo2/interpolation'

linear(0.5, -100, 100)
quadratic(0.5, -100, 0, 100)
cubic(0.5, -100, 0, 0, 100)
```

Made with :heart: by [rojo2](https://rojo2.com)
npm package: @rojo2/is-empty-string
Description: Returns if a value is a string
Author: ROJO 2
Latest version: 1.0.4

# Is empty string
![Travis CI](https://travis-ci.org/rojo2/is-empty-string.svg?branch=master)

```javascript
import isEmptyString from "@rojo2/is-empty-string"

isEmptyString(""); // true
isEmptyString(" "); // true
isEmptyString(new String("")); // true
isEmptyString(null); // false
isEmptyString(undefined); // false
isEmptyString(1); // false
isEmptyString({}); // false
isEmptyString([]); // false
```

Made with :heart: by ROJO 2 (http://rojo2.com)
npm package: @rojo2/is-string
Description: Returns if a value is a string
Author: ROJO 2
Latest version: 1.0.2

# Is string
![Travis CI](https://travis-ci.org/rojo2/is-string.svg?branch=master)

```javascript
import isString from "@rojo2/is-string"

isString("Hello, World!"); // true
isString(new String("Hola")); // true
isString(null); // false
isString(undefined); // false
isString(1); // false
isString({}); // false
isString([]); // false
```

Made with :heart: by ROJO 2 (http://rojo2.com)
npm package: @rojo2/linear-congruential-generator
Description: ![Travis CI](https://travis-ci.org/rojo2/linear-congruential-generator.svg?branch=master)
Author: ROJO 2
Latest version: 1.0.2

# Linear Congruential Generator
![Travis CI](https://travis-ci.org/rojo2/linear-congruential-generator.svg?branch=master)

```javascript
import linearCongruentialGenerator, { MODULUS } from "@rojo2/linear-congruential-generator";

function createRandomFunction(initialValue = 0) {
  let value = initialValue;
  return function() {
    value = linearCongruentialGenerator(value);
    return value / MODULUS;
  }
}
```

Made with :heart: by ROJO 2 (http://rojo2.com)
npm package: @rojo2/linear-interpolation
Description: ![Travis CI](https://travis-ci.org/rojo2/linear-interpolation.svg?branch=master)
Author: ROJO 2
Latest version: 1.1.0

# Linear Interpolation 
![Travis CI](https://travis-ci.org/rojo2/linear-interpolation.svg?branch=master)

```javascript
import linear from "@rojo2/linear-interpolation";

linear(0.5, 1, 3); // 2
linear(0.25, 0, 100); // 25
```


Made with :heart: by ROJO 2 (http://rojo2.com)
npm package: @rojo2/metadata
Description: Extract metadata (open graph, linked data and metadata) easily from web pages
Author: ROJO 2
Latest version: 1.0.2

# Metadata

[![Build Status](https://travis-ci.org/rojo2/metadata.svg?branch=master)](https://travis-ci.org/rojo2/metadata)
[![Coverage Status](https://coveralls.io/repos/github/rojo2/metadata/badge.svg?branch=master)](https://coveralls.io/github/rojo2/metadata?branch=master)

Extracts OpenGraph data, linked data and metadata from web pages in a very easy way.

## Using it as a module

```javascript
import metadata from '@rojo2/metadata';

const pageMetadata = await metadata.get('https://<product url>')
console.log(pageMetadata)
```

## Using it as a CLI

```sh
$ npm i -g @rojo2/metadata
$ metadata <url>
```

## Using it as a serverless API

If you use [now](https://zeit.co/now) you can simply run `now` and you'll have a useful 
serverless service for extracting web page metadata.

```sh
$ now
```

## How to test it

```sh
$ npm install
$ npm test
```

## TODO 

- [ ] Add more tests/better code coverage
- [ ] Add better open graph parsing (right now it only extracts type, image, title, description and url)
- [ ] Add more user agents (or make an optional parameter to pass your own user agent)
- [ ] Add more serverless services?
- [ ] Add dockerized version?

## Contributors

- [AzazelN28](https://github.com/azazeln28)

## License

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

## Donate

[![Donate](https://img.shields.io/badge/Donate-PayPal-green.svg)](https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&hosted_button_id=VL264WAE64MLQ&source=url)

Made with :heart: by ROJO 2 <http://rojo2.com>
npm package: @rojo2/mongoose-date
Description: Mongoose Plugin that saves creation and modification dates
Author: ROJO 2
Latest version: 1.1.2

# Mongoose Date plugin
![Travis CI](https://travis-ci.org/rojo2/mongoose-date.svg?branch=master)

This small plugin adds two new properties (`modified` and `created`) to the schema.

## How to use it

```javascript
import date from "@rojo2/mongoose-date";
import password from "@rojo2/mongoose-password";
import { Schema } from "mongoose";

const UserSchema = new Schema({
  email: {
    type: String,
    unique: true
  }
});

UserSchema.plugin(date);
UserSchema.plugin(password);
```

If you don't like `created` and `modified` names, you can change how this plugin deals
with that properties just by setting a new name on the plugin options parameter as follows:

```javascript
import date from "@rojo2/mongoose-date";
import password from "@rojo2/mongoose-password";
import { Schema } from "mongoose";

const UserSchema = new Schema({
  email: {
    type: String,
    unique: true
  }
});

UserSchema.plugin(date, {
  created: "creationDate",
  modified: "modificationDate"
});
UserSchema.plugin(password);
```

What if you already had those properties on your schema? Well, no problem, if you already
had those properties in your schema this plugin will throw an `Error` notifying you that
you already had those properties defined.

Made with :heart: by ROJO 2 (http://rojo2.com)
npm package: @rojo2/mongoose-password
Description: Mongoose Plugin for saving secure passwords (using PBKDF2)
Author: ROJO 2
Latest version: 1.1.1

# Mongoose Password plugin
![Travis CI](https://travis-ci.org/rojo2/mongoose-password.svg?branch=master)

Mongoose password plugin using [@rojo2/password](https://github.com/rojo2/password)

```javascript
import password from "@rojo2/mongoose-password";
import { Schema } from "mongoose";

const UserSchema = new Schema({
  email: {
    type: String,
    unique: true
  }
});

UserSchema.plugin(password);
```

Made with :heart: by ROJO 2 (http://rojo2.com)
npm package: @rojo2/mongoose-status
Description: This plugin adds a property called `status` to the schema and a method called `transitionTo`
Author: ROJO 2
Latest version: 1.0.1

# Mongoose Status plugin
![Travis CI](https://travis-ci.org/rojo2/mongoose-status.svg?branch=master)

This plugin has a very simple interface:

```javascript

const User = new mongoose.Schema({

});

User.plugin(status, {
  default: "not-enabled",
  enum: ["not-enabled", "enabled", "disabled"],
  transitions: {
    "not-enabled": ["enabled"],
    "enabled": ["disabled"],
    "disabled": ["enabled"]
  }
});

// And then when you need to transition from an state A
// to a state B, you should do:
const result = user.transitionTo("disabled");
if (!result) {
  // The transition couldn't be done
}
// The transition went well

```

Made with ❤ by ROJO 2 (http://rojo2.com)
npm package: @rojo2/mongoose-user
Description: Adds four properties to the schema: `username`, `email`, `password` and `status`.
Author: ROJO 2
Latest version: 1.0.2

# Mongoose User plugin
![Travis CI](https://travis-ci.org/rojo2/mongoose-user.svg?branch=master)

This mongoose plugin adds four properties to the schema: `username`, `email`,
`password` and `status`.

`status` represents the three main possible statuses of a user `not-enabled`,
`enabled` and `disabled`.

```javascript
const user = require("mongoose-user");
const {Schema} = require("mongoose");

const UserSchema = new Schema({
  type: {
    type: String,
    default: "regular",
    enum: ["premium","regular"]
  }
});

UserSchema.plugin(user);
```

Made with ❤ by ROJO 2 (http://rojo2.com)
npm package: @rojo2/password
Description: Library to do safe password hashing using PBKDF2
Author: ROJO 2
Latest version: 1.1.1

# Password
![Travis CI](https://travis-ci.org/rojo2/password.svg?branch=master)

Password hash library using PBKDF2.

```javascript
import password from "@rojo2/password";

// Hash password
const hashedPassword = await password.hash("plainPassword")

// Verify password
const result = await password.verify("plainPassword", "hashedPassword");
if (result === true) {
  // Password is ok.
} else {
  // Passwords doesn't match.
}
```

Or if you prefer promises:

```javascript
import password from "@rojo2/password";

// Hash password
password.hash("plainPassword").then((hashedPassword) => {
  // ... do something with the hashed password (like saving it in a mongodb object) ...
}).catch((error) => {
  // ...
});

// Verify password
password.verify("plainPassword", "hashedPassword").then((result) => {
	if (result === true) {
		// Password is ok.
	} else {
		// Passwords doesn't match.
	}
}).catch((error) => {
  // ...
});
```

Made with ❤ by ROJO 2 (http://rojo2.com)
npm package: @rojo2/password-cli
Description: CLI to use @rojo2/password easily
Author: ROJO 2
Latest version: 1.0.0

# Password CLI

A CLI for [@rojo2/password](https://www.npmjs.com/package/@rojo2/password)

```sh
$ password hash 'my secret password'
```

Made with :heart: by ROJO 2 (http://rojo2.com)
npm package: @rojo2/promise-map
Description: PromiseMap
Author: rojo2
Latest version: 1.0.0

# PromiseMap

## What is a PromiseMap

A `PromiseMap` simplifies **a lot** working with asynchronous code with message oriented APIs like `WebWorker`s, `WebSocket`s, `ChildProcess`s, etc.

Basically, it keeps track of promises asigning it an identifier. This identifier can be anything: an object, a number, a string, etc. So we can send the identifier as part of a request message and then return that identifier in the response message.

Here is an example using a `WebWorker` with two files `index.js` and `worker.js`.

```javascript
// index.js
import { v4 as uuid } from 'uuid'
import PromiseMap from '@rojo2/promise-map'

function createPromisifiedWorker() {
  const promiseMap = new PromiseMap()
  const worker = new WebWorker('worker.js')
  worker.onmessage = (e) => {
    if (e.data.type === 'failure') {
      promiseMap.resolve(e.data.id, e.data.payload)
    } else if (e.data.type === 'success') {
      promiseMap.reject(e.data.id, new Error(e.data.payload))
    }
  }

  function request(type, payload) {
    const id = uuid()
    worker.postMessage({ id, type, payload })
    return promiseMap.create(id, 60000)
  }

  return {
    request
  }
}

const worker = createPromisifiedWorker()
// Now we can have a more async/await friendly API
// around WebWorkers.
await worker.request('dosomething', {
  ...payload...
})
```

```javascript
// worker.js
self.addEventListener('message', (e) => {
  self.postMessage({
    id: e.data.id,
    type: (Math.random() < 0.5) ? 'success' : 'failure',
    payload: 'Hey! Ho! Let\'s go'
  })
})
```

Made with :heart: by [rojo 2](https://github.com/rojo2)
npm package: @rojo2/random
Description: Pseudo-Random Number Generator functions
Author: ROJO 2
Latest version: 1.0.1

# Random
![Travis CI](https://travis-ci.org/rojo2/random.svg?branch=master)

```javascript
const random = require("rojo2-random");

// reset random seed
random.reset(0);

// get random value between 0 and 1
random.value();

// get random value between min and max
random.between(min, max);

// get random index between 0 and list.length - 1
random.index(list);

// get a random value from [1,2,3]
random.pickOne([1,2,3]);

// take a random value from [1,2,3]
// after calling this function
// if the returned value is 2
// the array is going to be [1,3]
random.takeOne([1,2,3]);

random.fudgeDice();
random.fudgeDices();

random.regularDice();
random.regularDices();

random.dice();
random.dices();

random.roll(["2d6","4d12","1d2"]);
random.roll("2d6,4d12,1d2");
```

**NOTE**: This library uses an [LCG](https://en.wikipedia.org/wiki/Linear_congruential_generator),
probably the most simple and basic pseudo-random number generator. **DON'T USE
THIS TO GENERATE CRYPTOGRAPHIC RANDOM NUMBERS!**

Made with ❤ by ROJO 2 (http://rojo2.com)
npm package: @rojo2/random-index
Description: ![Travis CI](https://travis-ci.org/rojo2/random-index.svg?branch=master)
Author: ROJO 2
Latest version: 1.0.2

# Random Index 
![Travis CI](https://travis-ci.org/rojo2/random-index.svg?branch=master)

```javascript
import randomIndex from "@rojo2/random-index";

const index = randomIndex([1,2,3,4]) // index will be between 0 and 3
```

Made with :heart: by ROJO 2 (http://rojo2.com)
npm package: @rojo2/random-pick
Description: ![Travis CI](https://travis-ci.org/rojo2/random-pick.svg?branch=master)
Author: ROJO 2
Latest version: 1.0.1

# Random Pick 
![Travis CI](https://travis-ci.org/rojo2/random-pick.svg?branch=master)

```javascript
import randomPick from "@rojo2/random-pick";

const listOfNumbers = [1,2,3,4];
const number = randomPick(listOfNumbers); // random value from listOfNumbers 
```

Made with :heart: by ROJO 2 (http://rojo2.com)
npm package: @rojo2/random-within
Description: ![Travis CI](https://travis-ci.org/rojo2/random-within.svg?branch=master)
Author: ROJO 2
Latest version: 1.0.1

# Random Within 
![Travis CI](https://travis-ci.org/rojo2/random-within.svg?branch=master)

```javascript
import randomBetween from "@rojo2/random-within";

const randomValue = randomBetween(Math.random, 2, 3); // random value between 2 and 3
```

Made with :heart: by ROJO 2 (http://rojo2.com)
npm package: @rojo2/range
Description: Functions to manage ranges
Author: ROJO 2
Latest version: 1.1.0

# Range

```
const range = require("range");
range.from(5, 0, 10); // 0.5
range.to(0.5, 0, 10); // 5
```

Made with :heart: by [ROJO 2](http://rojo2.com)
npm package: @rojo2/token
Description: Token creation
Author: ROJO 2
Latest version: 1.0.0

# Token
![Travis CI](https://travis-ci.org/rojo2/token.svg?branch=master)

```javascript
const token = require("token");

token.create(token.LONG).then((createdToken) => {
  // ... do something
});
```

Made with :heart: by [ROJO 2](http://rojo2.com)
npm package: @rojo2/turn-credentials
Description: TURN Credentials creator
Author: ROJO 2
Latest version: 1.0.1

# `@rojo2/turn-credentials`

A library to create TURN credentials [RFC](https://tools.ietf.org/html/draft-uberti-rtcweb-turn-rest-00).

```javascript
import turnCredentials from '@rojo2/turn-credentials'

const credentials = turnCredentials('username', {
  secret: process.env.TURN_SECRET
})
```

## How to test it against a running TURN server

Installing it as a global dependency

```sh
npm i -g @rojo2/turn-credentials
turn-credentials <userName> <secret>
```

This small CLI program returns a JSON with two properties `username` and `credential`, this
can be piped into a program like `jq` and the finally use it with testing utilities like `turnutils_uclient` (you can
find it in [coTURN](https://github.com/coturn/coturn/wiki/turnutils_uclient)).

```sh
for s in $(turn-credentials <userName> <secret> | jq -r "to_entries|map(\"turn_\(.key|tostring)=\(.value|tostring)\")|.[]" ); do
  export $s
done
turnutils_uclient -t -v -y -X -M -p 443 -u $turn_username -w $turn_credential -W <secret> <TURN server>
```

Made with :heart: by [rojo2](https://rojo2.com)
npm package: @rojo2/wad-parser
Description: WAD parser and extractor
Author: ROJO 2
Latest version: 1.0.1

# WAD Parser

## How to install it

You can install it using npm globally:

```sh
$ npm install @rojo2/wad-parser -g
$ wad-parser <wadfile> list [regular-expression]
```

or locally and using npx to execute it:

```sh
$ npm install @rojo2/wad-parser
$ npx wad-parser <wadfile>
```

## How to use it

List WAD entries

```sh
$ wad-parser <wadfile> list [regular-expression]
```

Extract WAD entries (right now it is capable of extract only textures and
sprites as TGA files, sounds as WAV and maps as JSONs)

```sh
$ wad-parser <wadfile> extract [regular-expression]
```

## Examples

Extracts all the DOOM2 sounds into .wav files
```sh
$ wad-parser DOOM2.WAD extract '^DS'
```

Extracts all the DOOM2 CyberDemon sprites into .tga files
```sh
$ wad-parser DOOM2.wad extract '^CYB'
```

Made with :heart: by [ROJO 2](http://rojo2.com)
npm package: @rojoca/html-inline-css-webpack-plugin
Description: A webpack plugin for convert external style sheet to internal style sheet
Author: Runjuu
Latest version: 1.2.1

# html-inline-css-webpack-plugin
[![MIT Licence](https://badges.frapsoft.com/os/mit/mit.svg?v=103)](https://opensource.org/licenses/mit-license.php)
[![PRs Welcome](https://img.shields.io/badge/PRs-welcome-brightgreen.svg)](https://github.com/Runjuu/html-inline-css-webpack-plugin/pulls)
[![npm version](https://badge.fury.io/js/html-inline-css-webpack-plugin.svg)](https://badge.fury.io/js/html-inline-css-webpack-plugin)

Convert external style sheet(`<link rel="stylesheet"/>`) to internal style sheet(`<style>...<style/>`).

Require [mini-css-extract-plugin](https://github.com/webpack-contrib/mini-css-extract-plugin) and [html-webpack-plugin](https://github.com/jantimon/html-webpack-plugin)

## Install
#### NPM
```bash
npm install html-inline-css-webpack-plugin -D
```
#### Yarn
```bash
yarn add html-inline-css-webpack-plugin -D
```

## Minimal example
```js
const MiniCssExtractPlugin = require("mini-css-extract-plugin");
const HtmlWebpackPlugin = require('html-webpack-plugin');
const HTMLInlineCSSWebpackPlugin = require("html-inline-css-webpack-plugin").default;

module.exports = {
  plugins: [
    new MiniCssExtractPlugin({
      filename: "[name].css",
      chunkFilename: "[id].css"
    }),
    new HtmlWebpackPlugin(),
    new HTMLInlineCSSWebpackPlugin(),
  ],
  module: {
    rules: [
      {
        test: /\.css$/,
        use: [
          MiniCssExtractPlugin.loader,
          "css-loader"
        ]
      }
    ]
  }
}
```

## Config
```typescript
interface Config {
  filter?(fileName: string): boolean
}
```

### filter(optional)
Return `true` to make current file internal, otherwise ignore current file.
##### example
```typescript
...
    new HTMLInlineCSSWebpackPlugin({
      filter(fileName) {
        return fileName.includes('main');
      },
    }),
...
```
npm package: @rojs/ro-js
Description: An Roblox package for Node.JS
Author: zlures
Latest version: 0.5.5

# <img src="https://doy2mn9upadnk.cloudfront.net/uploads/default/original/4X/0/e/e/0eeeb19633422b1241f4306419a0f15f39d58de9.png" alt="ROBLOX" width="30"/> ro-js
An [ROBLOX](https://roblox.com) package devileried for you to make your hard work a little bit easier.

<br><img src="https://img.shields.io/bundlephobia/min/@rojs/ro-js?label=size"> <img src="https://img.shields.io/npm/dw/@rojs/ro-js"> <img src="https://img.shields.io/npm/l/@rojs/ro-js">
## Installion and Usage
Installing with NPM:
```bash
$ npm install @rojs/ro-js
```
Using:
```js
const rojs = require('@rojs/ro-js')
```
### Example
```js
const rojs = require('@rojs/ro-js')
rojs.GetUsernameByID(1, console.log) /* 
Description:
Returns 'ROBLOX' in console

Structure:
rojs.GetUsernameByID(id, callback)
*/
```
## Questions or issues?
Ask them right here: https://github.com/ro-js/rojs/issues

------------------
<div align="center">
  <h1>made w/ love 4u</h1>
  <img height="50" src="https://avatars.githubusercontent.com/u/81084648?s=48&v=4"> <img height="50" src="https://avatars.githubusercontent.com/u/71515418?v=4">
</div>
npm package: @rokamon1997/react-native-maps
Description: React Native Mapview component for iOS + Android
Author: Leland Richardson
Latest version: 1.2.1

# react-native-maps-fork

**Forked from [react-native-maps](https://github.com/react-native-maps/react-native-maps#readme)**. Contains the
following changes/fixes:

- added `zIndex` to `Overlay` component (works for Android and IOS Google Maps)

---

_Informations about keeping in sync with original library:_

- _01.08.2023 [1.0.0]: forked from version 1.7.0_
- _20.12.2023 [1.1.0]: merged/synced changes from original library (version 1.8.4) (check [original changelog](https://github.com/react-native-maps/react-native-maps/blob/master/CHANGELOG.md))_
- _1.02.2024 [1.2.0]: merged/synced changes from original library (version 1.10.0) (check [original changelog](https://github.com/react-native-maps/react-native-maps/blob/master/CHANGELOG.md))_
- _14.02.2024 [1.2.1]: merged/synced changes from original library (version 1.10.2) (check [original changelog](https://github.com/react-native-maps/react-native-maps/blob/master/CHANGELOG.md))_
npm package: @rokealvo/jira-mcp
Description: JIRA MCP Server
Author: Dimosthenis Kaponis
Latest version: 1.4.0

# jira-mcp

MCP-сервер для работы с Jira из Claude Code, Cline и других MCP-клиентов.

## Быстрый старт

### Через npx (без установки)

```json
{
  "mcpServers": {
    "jira": {
      "command": "npx",
      "args": ["-y", "@rokealvo/jira-mcp"],
      "env": {
        "JIRA_BASE_URL": "https://your-domain.atlassian.net",
        "JIRA_USER_EMAIL": "your@email.com",
        "JIRA_API_TOKEN": "your_token"
      }
    }
  }
}
```

### Из исходников

```bash
git clone https://github.com/cosmix/jira-mcp.git
cd jira-mcp
npm install && npm run build
```

```json
{
  "mcpServers": {
    "jira": {
      "command": "node",
      "args": ["/path/to/jira-mcp/build/index.js"],
      "env": {
        "JIRA_BASE_URL": "https://your-domain.atlassian.net",
        "JIRA_USER_EMAIL": "your@email.com",
        "JIRA_API_TOKEN": "your_token"
      }
    }
  }
}
```

## Переменные окружения

| Переменная | Описание | По умолчанию |
|------------|----------|--------------|
| `JIRA_BASE_URL` | URL вашего Jira | — |
| `JIRA_USER_EMAIL` | Email пользователя | — |
| `JIRA_API_TOKEN` | API токен или PAT | — |
| `JIRA_TYPE` | `cloud` или `server` | `cloud` |
| `JIRA_AUTH_TYPE` | `basic` или `bearer` | `basic` |

### Получение токена

**Jira Cloud:**
- [Создать API токен](https://id.atlassian.com/manage-profile/security/api-tokens)
- Использовать `JIRA_AUTH_TYPE=basic`

**Jira Server/Data Center:**
- Basic auth: логин/пароль или токен
- Bearer auth (DC 8.14+): Personal Access Token в настройках профиля, `JIRA_AUTH_TYPE=bearer`

## Инструменты

| Инструмент | Описание |
|------------|----------|
| `search_issues` | Поиск задач по JQL |
| `get_issue` | Детали задачи с комментариями |
| `create_issue` | Создание задачи |
| `update_issue` | Обновление полей задачи |
| `add_comment` | Добавление комментария |
| `get_transitions` | Доступные переходы статуса |
| `transition_issue` | Смена статуса задачи |
| `get_epic_children` | Задачи в эпике |
| `add_attachment` | Прикрепление файла |
| `get_create_meta` | Схема полей для создания задачи |
| `get_field_options` | Варианты значений поля |
| `get_projects` | Список проектов |
| `get_users` | Поиск пользователей |
| `get_server_info` | Информация о сервере |
| `delete_issue` | Удаление задачи |

## Разработка

```bash
npm install      # установка зависимостей
npm run build    # сборка
npm test         # тесты
npm run test:watch  # тесты в watch-режиме
```

## Требования

- Node.js 18+

## Лицензия

MIT
npm package: @rokebrand/react-native-key-commands
Description: iOS [UIKeyCommand](https://developer.apple.com/documentation/uikit/uikeycommand) native component for React Native
Author: Brendan Rokebrand
Latest version: 0.0.5

# react-native-key-commands
iOS [UIKeyCommand](https://developer.apple.com/documentation/uikit/uikeycommand) native component for React Native

## Install

```
npm install @rokebrand/react-native-key-commands
```

or 

```
yarn add @rokebrand/react-native-key-commands
```

then

```
react-native link
```

## Usage

```JSX
import React from 'react'
import { NativeSyntheticEvent } from 'react-native'
import KeyCommands, {
  KeyCommand,
  constants,
} from '@rokebrand/react-native-key-commands'


export default class MyComponent: React.Component {
  render () {
    return (
      <KeyCommands
        style={styles.myStyle}
        keyCommands={[
          {
            input: keyCommandConstants.keyInputDownArrow,
          },
          {
            input: "1",
            keyModifier: constants.keyModifierCommand,
            discoverabilityTitle: "Do something cool",
          },
          {
            input: "c",
            keyModifier: constants.keyModifierCommand
          }
        ]}
        onKeyCommand={this.onKeyCommand}>
        <View>
          {/* .. other views.. */}
        </View>
      </KeyCommands>
    )
  }
  
  private onKeyCommand = (event: NativeSyntheticEvent<KeyCommand>) => {
    if (event.nativeEvent.input === '1' && event.keyModifiers === constants.keyModifierCommand) {
      // do something here
    }
  }
}
```

To combine key modifiers, you can use `|` (bit-wise OR) operator, for example, you can define a shortcut `CMD + ALT + C` like this

```js
{
  input: "c",
  keyModifier: constants.keyModifierCommand | constants.,keyModifierAlternate
  discoverabilityTitle: "Do something cool"
}
```

## Constants

Constants are exposed as `constatns` under the package. You can import it via

```
import { constants } from '@rokebrand/react-native-key-commands'
```

Here's the value mapping from `constants` to iOS constant values

 - keyModifierShift: UIKeyModifierShift
 - keyModifierControl: UIKeyModifierControl
 - keyModifierAlternate: UIKeyModifierAlternate
 - keyModifierCommand: UIKeyModifierCommand
 - keyModifierNumericPad: UIKeyModifierNumericPad
 - keyInputUpArrow: UIKeyInputUpArrow
 - keyInputDownArrow: UIKeyInputDownArrow
 - keyInputLeftArrow: UIKeyInputLeftArrow
 - keyInputRightArrow: UIKeyInputRightArrow
 - keyInputEscape: UIKeyInputEscape
npm package: @rokebrand/react-native-twig
Description: Twig templating for use in React Native for print templates
Author: Brendan Rokebrand
Latest version: 1.1.1

# react-native-twig

Twig templating for use in React Native for generating HTML from twig templates

Use together with the following packages to create dynamic PDF documents generated from html twig templates for printing and sharing.

- react-native-html-to-pdf
- react-native-print
- react-native-share
- react-native-fs

## React-native-twig Usage

### Import react-native-twig into your file

```

  import Twig from '@rokebrand/react-native-twig';

```

### An example js object that will get passed to the template builder along with the template

```

  const printTitle = 'React-native TWIG Template'

  const properties = {
    pageHeading: printTitle,
    date: '30 March 2023',
    time: '15:30',
    items: [
      {
        id: 1,
        name: 'Test Product 1',
        price: '$10.00',
        quantity: 100
      },
      {
        id: 2,
        name: 'Test Product 2',
        price: '$20.00',
        quantity: 200
      },
      {
        id: 3,
        name: 'Test Product 3',
        price: '$30.00',
        quantity: 300
      }
    ]
  }

```

### An example of a TWIG template that will generate HTML

```

const rawTemplate = `
  <div style="padding: 50px;">
    <h1>{{pageHeading}}</h1>
    <table>
      <tbody>
        <tr>
          <td><strong>Date:</strong></td>
          <td>{{date}}</td>
        </tr>
        <tr>
          <td>
            <span><strong>Time:</strong></span>
          </td>
          <td>{{time}}</td>
        </tr>
      </tbody>
    </table>
    <table>
      <tr>
        <th>Product Id</th>
        <th>Product Name</th>
        <th>Price</th>
        <th>Quantity</th>
      </tr>
      {% for item in items %}
      <tr>
        <td>{{item.id}}</td>
        <td>{{item.name}}</td>
        <td>{{item.price}}</td>
        <td>{{item.quantity}}</td>
      </tr>
      {% endfor %}
    </table>
  </div>`;

```

### Generating the compiled HTML

```

  const template = Twig.twig({
    data: rawTemplate,
  });

  const compiled = template.render(properties);

  // This will log out the compiled HTML
  console.log(compiled)

```

### Generating and printing the PDF

```

  // Prepare print options
  const options = {
    html: compiled,
    fileName: printTitle.replace(' ', '-').toLowerCase(),
    directory: 'Documents',
    width: 210,
    height: 297,
    bgColor: 'white',
  };

  // Convert compiled HTML to PDF
  RNHTMLtoPDF.convert(options).then((value: {filePath: string}) => {
    const pdfPath = Platform.OS === 'android' ? `file://${value.filePath}` : `${value.filePath}`;

```

### Print the PDF with react-native-print

```

  RNPrint.print({ filePath: pdfPath });

```

### Share the PDF with react-native-share

```

  Share.open({
    title: printTitle,
    message: 'custom message',
    url: pdfPath,
  })

```
npm package: @rokelamen/md2html
Description: A simple tool to convert Markdown content to HTML
Author: rokelamen
Latest version: 0.2.1

# md2html

A simple markdown-html converter written in Typescript.

The style relies on browser pure style, inspired by [`txti`](https://txti.es/).

## Goal

> I create this project for learning TS and node dev, not for the purpose of building another better markdown parse engine.

Markdown syntax was first promoted with the release of `markdown.pl` by John Gruber. This leads to Markdown has no explicit definition, which means how markdown is parsed to HTML highly depends on the implementation of the tool. *And I choose a simplest way(line-by-line parsing)*

To stay as close as possible to the 'Standard Markdown', [CommonMark](https://commonmark.org/) is a great reference.

## Requirement

[Node](https://nodejs.org/) environment(>= v12.0.0) is necessary.

## Installation

Using npm:

```sh
npm i -g @rokelamen/md2html
```

## Usage

### As a command-line

```sh
md2html [options] [input]
```

1. Parse from/to stdio

```sh
md2html "# Markdown content" > index.html
```

2. Parse from/to file

```sh
md2html -f input.md -o index.html
```

### As a library

```javascript
import { parse } from '@rokelamen/md2html';
```

## Development

For development logs, please refer to the [Development Log](docs/development.md).