open-index/open-npm huggingface dataset:
npm package: @kaapi/kaapi
Description: TypeScript-based framework
Author: demingongo
Latest version: 0.0.42

# @kaapi/kaapi

[![npm version](https://img.shields.io/npm/v/@kaapi/kaapi.svg?color=blue&style=flat-square)](https://www.npmjs.com/package/@kaapi/kaapi)
[![Docs](https://img.shields.io/badge/Docs-Wiki-brightgreen.svg?style=flat-square)](https://github.com/demingongo/kaapi/wiki)
[![TypeScript](https://img.shields.io/badge/Built%20With-TypeScript-blue.svg?style=flat-square)](https://www.typescriptlang.org/)


Kaapi is a **modern, extensible backend framework** built on [Hapi](https://hapi.dev/), offering a **TypeScript-first design**, **plugin-based** architecture with **messaging**, **authentication**, and **automatic API documentation** baked in.

---

## 🚀 Features

- ⚡ **Simple Setup** — Minimal boilerplate, Hapi-compatible routing  
- 🔐 **Auth Designs** — Built-in Basic, Bearer, and API Key authentication  
- 🧱 **Plugins System** — Extend Kaapi easily with `app.extend()`  
- 📘 **API Docs** — Swagger & Postman generation out of the box  
- 📡 **Messaging Abstraction** — Kafka, MQTT, AMQP, or custom  
- 🪵 **Powerful Logging** — Winston-based or custom logger support  
- 🧩 **Type Safe** — Fully typed with first-class TypeScript support  

---

## 🧰 Quick Start

```bash
npm install @kaapi/kaapi
```

```ts
import { Kaapi } from '@kaapi/kaapi';

const app = new Kaapi({ port: 3000, host: 'localhost' });

app.route({ method: 'GET', path: '/' }, () => 'Hello Kaapi!');
await app.listen();

app.log.info(`🚀 Server running at http://localhost:3000`);
```
🧭 Visit: [`http://localhost:3000`](http://localhost:3000)

---

## 📚 Documentation

👉 **Full documentation available here:**
🔗 [Kaapi Wiki →](https://github.com/demingongo/kaapi/wiki)

---

## 💡 Example Features

* **Auth:** `BearerAuthDesign`, `BasicAuthDesign`, `APIKeyAuthDesign`
* **Docs:** `/docs/api` (Swagger UI), `/docs/api/schema?format=postman`
* **Messaging:** Abstract interface for Kafka, MQTT, etc.
* **Extend:** Custom plugins via `KaapiPlugin` interface
* **Logger:** Built-in Winston logger or bring your own

---

## 🧠 Why Kaapi?

Kaapi focuses on **clarity**, **composability**, and **developer productivity**:

> One framework, many patterns — REST, messaging, auth, docs — all in TypeScript.

---
npm package: @kaapp/debug-graph
Description: A lightweight, performant debug graph renderer
Author: Kaapp
Latest version: 0.0.3

# debug-graph

## TODO: 
- Add section support


### TODO Minimal version: 
- Proper collapse support
- Prefix/suffix support
- Feature parity with DebugGraph
- Dynamic y-axis which follows the value by decaying min/max towards the current value but not exceeding some minimum distance
- Initial min/max values on first update configurable
- Support fill-to-zero so the graph is inverted if drawing a negative value
npm package: @kaareal/config
Description: Configurations for node
Author: Kaare Larsen
Latest version: 1.0.1

# @kaareal/config

[![CircleCI](https://circleci.com/gh/kaareal/config/tree/master.svg?style=svg)](https://circleci.com/gh/kaareal/config/tree/master)

## Install

```bash
# with npm
npm install @kaareal/config

# or with Yarn
yarn add @kaareal/config
```

## Usage

Create a `env.conf` file in the root directory of your project. Add
environment-specific variables on new lines in the form of `NAME=VALUE`.
For example:

```dosini
DB_HOST=localhost
DB_PORT=2000
SENTRY_API=
START_DATE=2019-01-30T10:00:48.185Z
```

Its recommended to define all variables in the env.conf file, even if empty.

```javascript
const config = require('@kaareal/config');
db.connect({
  host: config.get('DB_HOST'),
  port: config.get('DB_PORT', 'integer')
});

// check if START_DATE is bigger than current time and SENTRY_API has value
if (config.get('START_DATE', 'date') < Date.now() && config.has('SENTRY_API')) {
  sentry.init({
    dsn: config.get('SENTRY_API')
  });
}
```

### Methods

#### get

Default: `config.get('DB_HOST', "string"): string`

Return the value of the variable or warn if the variable is not defined in the env.conf or available via `process.env`.

```
config.get(
  variable,
  as: "string" | "boolean" | "json" | "integer" | "float" | "date"
): string | number | boolean | Date | any
```

#### has

Default: `config.has('DB_HOST'): boolean`

Returns true if the variable got value

#### getAll

Default: `config.getAll(onlyParsed=false): {[key: string]: string}`

Return all defined (both from process.env and env.conf merged) keys and values as a key value object, or only from env.conf if onlyParsed is set to true.

#### Environment variable ENV_CONF_PATH

This variable allows you set a different location for your env.conf file.
npm package: @kaartiksingh23/tiny
Description: String utility functions.
Latest version: 2.4.1

# @kaartiksingh23/tiny

[![npm (scoped)](https://img.shields.io/npm/v/@kaartiksingh23/tiny.svg)](https://www.npmjs.com/package/@kaartiksingh23/tiny)


String Utility Functions

## Install

```
$ npm install @kaartiksingh23/tiny
```

## Usage

```js
const tiny = require("@kaartiksingh23/tiny");

tiny.replace("So much much space!","much","little");
//=> "So little little space!"

tiny.replace(1337);
//=> Uncaught TypeError: Tiny wants a string!
//    at tiny (<anonymous>:2:41)
//    at <anonymous>:1:1

tiny.concat(['ABC'+'DEF'+'GHI']);
//=> "ABCDEFGHI"

tiny.concat('ABC'+'DEF'+'GHI');
//=> Uncaught TypeError: Tiny wants a array!
//    at tiny (<anonymous>:2:41)
//    at <anonymous>:1:1

tiny.capitalize(1234);
//=> Uncaught TypeError: Tiny wants a array!
//    at tiny (<anonymous>:2:41)
//    at <anonymous>:1:1

tiny.capitalize("kAArtik");
//=>"Kaartik"

```
npm package: @kaas-devteam/ts-requester
Description: Requester to Transfer sequencer service over websocket
Latest version: 1.0.1

# ts-requester

Request Transfer Sequencer over websocket

## Install

```
$ npm install @kaas-devteam/ts-requester
$ yarn add @kaas-devteam/ts-requester
```

## Usage

```
import Requester from "@kaas-devteam/ts-requester"

const requeter = new Requester("ws://<YOUR_ENDPOINT>")

async function start() {
    // Asynchronously send message through Websocket and asynchronously retrieve the result
    // The library internally establishes the correspondence between requests and responses
    const data = await requester.send({req: "tx.detail", arg: {txId: "<TX_ID>"}})
    return data
}

start()
```
npm package: @kaave/vue-disortion-carousel
Description: Vue Image distortion carousel component. Not dependencies any WebGL libraries like three.js, pixi.js.
Latest version: 0.1.1

# vue-disortion-carousel

Vue Image distortion carousel component. Not dependencies any WebGL libraries like three.js, pixi.js.

## Sample code

```vue
<template>
  <distortion-carousel
    :index="index"
    :image-urls="imageUrls"
    distortion-texture-url="/texture.jpg"
    :max-width="1000"
    :ratio="{ width: 16, height: 10 }"
    :move-threshold="0.2"
    :duration-sec="2.5"
    :easing="easing"
  >
    It's Readable Content!
  </distortion-carousel>
</template>

<script>
import Vue from 'vue';
import { Ease, Power3 as Quart } from 'gsap';
import DistortionCarousel from '@kaave/vue-distortion-carousel.vue';

export default {
  component: { DistortionCarousel },
  data() {
    return { index: 0 },
  },
  computed: {
    imageUrls() { return ['/d1.jpg', '/d2.jpg', '/d3.jpg'] },
    easing() { return Quart.easeInOut; },
  },
  mounted: {
    setInterval(() => this.index = (this.index + 1) % this.imageUrls.length, 3000);
  },
};
</script>
```

## Inspiration

- [robin-dela/hover-effect](https://github.com/robin-dela/hover-effect)
npm package: @kabacorp/dat-serve-resolve-path
Description: Kaba's method to find the file to serve in dat:// requests
Latest version: 1.0.1

# dat-serve-resolve-path

Kaba's method to find the file to serve in dat:// requests

```js
const datServeResolvePath = require('@kaba/dat-serve-resolve-path')

var entry = await datServeResolvePath(archive, manifest, url, acceptHeader)
console.log(entry) /* => {
  path: '...',
  isDirectory(),
  isFile(),
  ...
}
```

Pass in:

 - `archive` The DatArchive to read from.
 - `manifest` The dat archive's dat.json manifest (optional)
 - `url` The request URL (can be pre-parsed by `parse-dat-url`). If passing the URL, include the FULL url (hostname too).
 - `acceptHeader` The request Accept header.

Returns a `Stat` object with the `.path` string added. Will return `null` if no matching file is found.

### In the browser

Run `npm run build` to output `dist.js`. This bundle will set `window.datServeResolvePath()` when included.
npm package: @kabalpt/eslint-react
Description: Flavored eslint config for React projects
Author: kabalpt
Latest version: 1.0.2

# eslint-react

Flavored React ESLint config

## Installation

```sh
$ yarn add -D eslint @kabalpt/eslint-react
```

## Usage

Create an `.eslintrc.yml` file like:

```yaml
extends: kabalpt-eslint-react
```
npm package: @kabbi/aes-ccm
Description: AES CCM support using OpenSSL
Author: Samuel Erdtman
Latest version: 1.0.3

[![Build Status](https://travis-ci.org/erdtman/aes-ccm.svg?branch=master)](https://travis-ci.org/erdtman/aes-ccm)

# aes-ccm

AES CCM module using OpenSSL

## Installation

`npm install aes-ccm --save`

## encrypt
```js
const ccm = require('aes-ccm');

const key = Buffer.from('404142434445464748494a4b4c4d4e4f', 'hex');
const iv = Buffer.from('101112131415161718191a1b', 'hex');
const plain = Buffer.from('Secret message!', 'utf8');
const aad = Buffer.from('000102030405060708090a0b0c0d0e0f10111213', 'hex');
const tagLength = 16;

const res = ccm.encrypt(key, iv, plain, aad, tagLength);

console.log('ciphertext: ' + res.ciphertext.toString('hex'));
console.log('tag: ' + res.auth_tag.toString('hex'));
```

## decrypt
``` js
const ccm = require('aes-ccm');

const key = Buffer.from('404142434445464748494a4b4c4d4e4f', 'hex');
const iv = Buffer.from('101112131415161718191a1b', 'hex');
const aad = Buffer.from('000102030405060708090a0b0c0d0e0f10111213', 'hex');
const ciphertext = Buffer.from('90f640f8b4e61c30d646b3a686dfe8', 'hex');
const tag = Buffer.from('d159ba0b957a1adc9b798cd9cb0d45c1', 'hex');

const dres = ccm.decrypt(key, iv, ciphertext, aad, tag);

console.log('ok: ' + dres.auth_ok);
console.log('plaintext: ' + dres.plaintext.toString('utf8'));
```

## References
Copied from [node-aes-ccm](https://github.com/particle-iot/node-aes-ccm).
npm package: @kabbi/ble-mesh
Description: This is **VERY EXPERIMENTAL**, **WORK IN PROGRESS** implementation of BLE Mesh v1.0 specification on top of `noble` library, allowing it to work on PCs, Macs and Raspberry PIs.
Latest version: 1.0.7

# ble-mesh

This is **VERY EXPERIMENTAL**, **WORK IN PROGRESS** implementation of BLE Mesh v1.0 specification on top of `noble` library, allowing it to work on PCs, Macs and Raspberry PIs.

Try it now (if you have provisioned mesh network):

```bash
cp ./keychain.json.example ./keychain.json
vi ./keychain.json # Add your mesh keys here
DEBUG=app:* npm run blink 0x0001 # Specify the target device with Generic OnOff model here
# Voila, the blink should commence
```

### Working features:

- basic mesh crypto
- handling segmented incoming messages
- sending and receiving generic on-off messages

### TODO:

- node provisioning (it's easier to do that with mobile app anyway)
- handling segmented outgoing messages
- figure out seq numbers saving and restoring
- better api for high-level mesh operations
- web bluetooth support and demo app
- node and element discovery

### Development

This project is using `flow` for static type checking and `jest` to ensure everything works as expected. Run `npm test -- --watch` anytime you want to change something.

I was mostly using [Nordic nRF Mesh app](https://github.com/NordicSemiconductor/Android-nRF-Mesh-Library) to provision and test my devices, and to capture network packet dump to test my implementation. Thank you, Nordic team!

Interesting code places:

- `src/layers/*.js` - low-level mesh network layers implementation, handling binary parsing, security, etc.
- `src/layers-e2e.test.js` - example of end-to-end usage: message sending and receiving
- `src/models/*.js` - model message definitions, add your vendor and sig models here
- `src/utils/mesh-crypto.js` - main crypto implementation
- `src/packets.js` - base packet structure definitions
- `decrypt.js` - simple tool to decrypt received messages, useful for debugging

ToDo:

- move some things between layers
- network discovery
- proxy control
npm package: @kabbi/discover-yourself
Description: Simple and hopefully secure broadcast udp service discovery
Author: kabbi
Latest version: 1.0.1

Discover Yourself
=================

Have you ever wondered, how could your react-native app find out about your dev server, without re-entering your dynamic IP every time? Or how can your self-balancing deadly robot fetch firmware updates over local network from your development machine? Or maybe you want to discover your raspberry pi in every network you connect to?

Well, you should just `discover-yourself`. It's using simple broadcast udp with ssh public key crypto, to make sure it's really you (via `sshpk`).

Somewhere:

```js
const { createListener } = require('@kabbi/discover-yourself');

const listener = createListener({
  publicKeyPath: 'key.pub',
});

listener.on('announcement', ({ tag, port, address }) => {
  console.log('dev server is', `${tag}://${address}:${port}`);
});
```

Somewhere else:

```js
const { createAnnouncer } = require('@kabbi/discover-yourself');

const announcer = createAnnouncer({
  privateKeyPath: 'example.key',
});

announcer.start('http', 8081);
```

Voilà.
npm package: @kabbouchi/vue-web3
Description: Vue web3 composition api
Latest version: 0.2.16
Deprecated: Transferred to @instadapp/vue-web3 - https://github.com/Instadapp/vue-web3

# @kabbouchi/vue-web3 - experimental

Vue 2/3 wrapper for web3 built on top of [react-web3](https://github.com/NoahZinsmeister/web3-react).

## 🚀 Quick Start

Install:

```bash
# npm
npm i @kabbouchi/vue-web3

# yarn
yarn add @kabbouchi/vue-web3
```

Usage:

```js
import { useWeb3, setWeb3LibraryCallback } from '@kabbouchi/vue-web3'
import { InjectedConnector } from '@web3-react/injected-connector'
import { WalletConnectConnector } from '@web3-react/walletconnect-connector'

import Web3 from 'web3'

const injected = new InjectedConnector({
  supportedChainIds: [1, 137],
})

const walletconnect = new WalletConnectConnector({
  rpc: { 1: 'https://mainnet.infura.io/v3/YOUR_API_KEY' },
  qrcode: true,
})

setWeb3LibraryCallback((provider) => new Web3(provider))

defineComponent({
  setup() {
    const { active, activate, account, library } = useWeb3()

    const connectUsingMetamask = async () => {
      await activate(injected)
    }

    const connectUsingWalletConnect = async () => {
      await activate(walletconnect)
    }

    return {
      active,
      connect,
      connectUsingMetamask,
      connectUsingWalletConnect,
    }
  },
})
```
npm package: @kabeep/lunar-date-fns
Description: A JavaScript lunar date utility library
Author: Zhang Zixin
Latest version: 1.1.0

<div align="center">

<h1>lunar-date-fns</h1>

一个 JavaScript 农历日期的实用程序库

[![NodeJS][node-image]][node-url]
[![License][license-image]][license-url]
[![NPM][npm-image]][npm-url]
[![Codecov][codecov-image]][codecov-url]
[![Codacy Badge][codacy-image]][codacy-url]
[![CircleCI][circleci-image]][circleci-url]

[English][en-us-url] | 简体中文

![Insights][insights-url]

</div>

## 📖 简介

> 创建这个仓库是因为我的家族习俗使用农历生日，很多人能轻易记住它们，除了我，我更倾向于公历生日。
>
> 因此这个包目前主要用于公历和农历的互相转换，它不会输出国际化和生肖、24节气、天干地支之类的内容。

一个轻量、精确且零依赖的实用程序库，使用基姆拉尔逊算法。

查看[文档][docs-url]。

## ⚙️ 安装

```bash
npm install @kabeep/lunar-date-fns --save
```

```bash
yarn add @kabeep/lunar-date-fns
```

```bash
pnpm add @kabeep/lunar-date-fns
```

## 🚀 使用

CommonJS

```javascript
const { toLunar, toSolar } = require('@kabeep/lunar-date-fns');
```

ESModule

```javascript
import { toLunar, toSolar } from '@kabeep/lunar-date-fns';
```

## 🤝 贡献

欢迎通过 Pull Requests 或 [Issues](https://github.com/kabeep/lunar-date-fns/issues) 来贡献你的想法和代码。

## 📄 许可

本项目采用 MIT 许可证。详情请见 [LICENSE](LICENSE) 文件。

[node-image]: https://img.shields.io/node/v/%40kabeep%2Flunar-date-fns?color=lightseagreen
[node-url]: https://nodejs.org/docs/latest/api/
[npm-image]: https://img.shields.io/npm/d18m/%40kabeep%2Flunar-date-fns?color=cornflowerblue
[npm-url]: https://www.npmjs.com/package/@kabeep/lunar-date-fns
[codecov-image]: https://img.shields.io/codecov/c/github/kabeep/lunar-date-fns?logo=codecov&color=mediumvioletred
[codecov-url]: https://codecov.io/gh/kabeep/lunar-date-fns
[codacy-image]: https://app.codacy.com/project/badge/Grade/2004f81266e04420ba10c8bc0f966e18
[codacy-url]: https://app.codacy.com/gh/kabeep/lunar-date-fns/dashboard?utm_source=gh&utm_medium=referral&utm_content=&utm_campaign=Badge_grade
[circleci-image]: https://dl.circleci.com/status-badge/img/gh/kabeep/lunar-date-fns/tree/master.svg?style=shield
[circleci-url]: https://dl.circleci.com/status-badge/redirect/gh/kabeep/lunar-date-fns/tree/master
[insights-url]: https://repobeats.axiom.co/api/embed/a875f66209182f0a6b3ddf99ebd1bffa7b604162.svg
[docs-url]: https://kabeep.github.io/lunar-date-fns
[issues-url]: https://github.com/kabeep/lunar-date-fns/issues
[license-image]: https://img.shields.io/github/license/kabeep/lunar-date-fns?color=slateblue
[license-url]: LICENSE
[en-us-url]: README.md
[zh-cn-url]: README.zh-CN.md
npm package: @kabeersnetwork/appstore-buffer-crc32
Description: A pure javascript CRC32 algorithm that plays nice with binary data
Author: Kabeer Jaffri
Latest version: 0.2.13

# @kabeersnetwork/appstore-buffer-crc32 (forked from buffer-crc32)

[![Build Status](https://secure.travis-ci.org/brianloveswords/buffer-crc32.png?branch=master)](http://travis-ci.org/brianloveswords/buffer-crc32)

crc32 that works with binary data and fancy character sets, outputs
buffer, signed or unsigned data and has tests.

Derived from the sample CRC implementation in the PNG specification: http://www.w3.org/TR/PNG/#D-CRCAppendix

# install
```
npm install @kabeersnetwork/appstore-buffer-crc32
```

# example
```js
var crc32 = require('@kabeersnetwork/appstore-buffer-crc32');
// works with buffers
var buf = Buffer([0x00, 0x73, 0x75, 0x70, 0x20, 0x62, 0x72, 0x6f, 0x00])
crc32(buf) // -> <Buffer 94 5a ab 4a>

// has convenience methods for getting signed or unsigned ints
crc32.signed(buf) // -> -1805997238
crc32.unsigned(buf) // -> 2488970058

// will cast to buffer if given a string, so you can
// directly use foreign characters safely
crc32('自動販売機') // -> <Buffer cb 03 1a c5>

// and works in append mode too
var partialCrc = crc32('hey');
var partialCrc = crc32(' ', partialCrc);
var partialCrc = crc32('sup', partialCrc);
var partialCrc = crc32(' ', partialCrc);
var finalCrc = crc32('bros', partialCrc); // -> <Buffer 47 fa 55 70>
```

# tests
This was tested against the output of zlib's crc32 method. You can run
the tests with`npm test` (requires tap)

# see also
https://github.com/alexgorbatchev/node-crc, `crc.buffer.crc32` also
supports buffer inputs and return unsigned ints (thanks @tjholowaychuk).

# license
MIT/X11
npm package: @kabeersnetwork/appstore-pend
Description: dead-simple optimistic async helper
Author: Kabeer Jaffri
Latest version: 1.2.0

# @kabeersnetwork/appstore-pend (forked from Pend)

Dead-simple optimistic async helper.

## Usage

```js
var Pend = require('@kabeersnetwork/appstore-pend');
var pend = new Pend();
pend.max = 10; // defaults to Infinity
setTimeout(pend.hold(), 1000); // pend.wait will have to wait for this hold to finish
pend.go(function(cb) {
  console.log("this function is immediately executed");
  setTimeout(function() {
    console.log("calling cb 1");
    cb();
  }, 500);
});
pend.go(function(cb) {
  console.log("this function is also immediately executed");
  setTimeout(function() {
    console.log("calling cb 2");
    cb();
  }, 1000);
});
pend.wait(function(err) {
  console.log("this is excuted when the first 2 have returned.");
  console.log("err is a possible error in the standard callback style.");
});
```

Output:

```
this function is immediately executed
this function is also immediately executed
calling cb 1
calling cb 2
this is excuted when the first 2 have returned.
err is a possible error in the standard callback style.
```
npm package: @kabeersnetwork/cookie-sync-client
Description: Cookie Sync Client - Documentation developers.kabeersnetwork.tk/#/docs/cookie-sync
Author: Kabeer's Network Authors
Latest version: 1.0.1

## Unblocked Cross Domain Cookies
Cross Domain cookies bypassing third party cookies

#### Architecture 
SSO domain embeds an iframe from other domain
e.g. ``accounts.google.com`` embeds an iframe from ``accounts.youtube.com``

Then iframe exposes internal methods for setting cookies
when called sends an api request to its same origin server which sets a cookie.

Whenever a SSO cookie is created it is automatically synced to all other domains
iframes from multiple domains can also be embedded and cookies can also be set
npm package: @kabeersnetwork/material-ui-linkify
Description: Converts links in text to Material-UI Links using the Markdown Linkify library
Latest version: 3.0.0

# material-ui-linkify
Converts links in text to Material-UI Links using the Markdown-it Linkify-it library
Uses https://github.com/markdown-it/linkify-it
Inspired by https://github.com/tasti/react-linkify/

## Installation

```shell-script
npm install material-ui-linkify --save
```

## Usage
### To use Material-UI-Linkify, add it ahead of any component you think might contain links
```
<MuiLinkify>
  <Typography variant="body1">
    See source code at https://github.com/alexplumb/material-ui-linkify
  </Typography>
</MuiLinkify>
```

### Properties
**schema** - A linkify-it schema for adding linkify processors. Example for adding Twitter:
```
{
  '@': {
    validate (text, pos, self) {
      const tail = text.slice(pos);

      if (!self.re.twitter) {
        self.re.twitter =  new RegExp(
          `^([a-zA-Z0-9_]){1,15}(?!_)(?=$|${self.re.src_ZPCc})`,
        );
      }
      if (self.re.twitter.test(tail)) {
        // Linkifier allows punctuation chars before prefix,
        // but we additionally disable `@` ("@@mention" is invalid)
        if (pos >= 2 && tail[pos - 2] === '@') {
          return false;
        }
        return tail.match(self.re.twitter)[0].length;
      }
      return 0;
    },
    normalize: (match) => {
      match.url = `https://twitter.com/${match.url.replace(/^@/, '')}`;
    },
  },
}
```

**options**: See https://github.com/markdown-it/linkify-it#new-linkifyitschemas-options for options

**LinkProps**: Properties that you want to pass along to the Link component. See https://material-ui.com/api/link/ for the full API

**hostnameOnly**: Forces certain schemas to only display the hostnames for matched links (boolean, default: false)

**hostnameSchemas**: When `hostnameOnly` is set to `true`, pass an array of schemas that determines which types of URLs to be truncated. (default: `https:, http:, ftp:, //`)

## Notes
This library requires the [URL interface](https://developer.mozilla.org/en-US/docs/Web/API/URL). If you need to support IE, make sure to install a polyfill.

## License
Uses the [MIT License](https://opensource.org/licenses/MIT)
npm package: @kabeersnetwork/react-native-android-installed-apps
Description: API to retrieve installed  apps information  using native built-ins
Author: Ayman Alaiwah
Latest version: 1.0.0


# react-native-android-installed-apps

## Getting started

`$ npm install react-native-android-installed-apps --save`

### Mostly automatic installation

`$ react-native link react-native-android-installed-apps`

### Manual installation



#### Android

1. Open up `android/app/src/main/java/[...]/MainActivity.java`
  - Add `import com.androidinstalledapps.RNAndroidInstalledAppsPackage;` to the imports at the top of the file
  - Add `new RNAndroidInstalledAppsPackage()` to the list returned by the `getPackages()` method
2. Append the following lines to `android/settings.gradle`:
  	```
  	include ':react-native-android-installed-apps'
  	project(':react-native-android-installed-apps').projectDir = new File(rootProject.projectDir, 	'../node_modules/react-native-android-installed-apps/android')
  	```
3. Insert the following lines inside the dependencies block in `android/app/build.gradle`:
  	```
      compile project(':react-native-android-installed-apps')
  	```


## Methods

#### 1 - getApps()
#### 2 - getNonSystemApps()
#### 3 - getSystemApps()

## Return Result 

- packageName
- versionName
- versionCode
- firstInstallTime
- lastUpdateTime
- appName
- icon // Base64
- apkDir
- size // Bytes


## Usage
```javascript
import RNAndroidInstalledApps from 'react-native-android-installed-apps';


RNAndroidInstalledApps.getApps()
      .then(apps => {
        this.setState({apps})
      })
      .catch(error => {
        alert(error);
      });

```
npm package: @kabeersnetwork/react-native-installed-application
Description: API to retrieve installed  apps information  using native built-ins, compileVersion: 30
Author: M Danil Rafiqi
Latest version: 1.0.6


# react-native-installed-application

[![Platform](https://img.shields.io/badge/platform-react--native-lightgrey.svg)](http://facebook.github.io/react-native/)
[![Version](http://img.shields.io/npm/v/react-native-installed-application.svg)](https://www.npmjs.com/package/react-native-installed-application)
[![Download](http://img.shields.io/npm/dm/react-native-installed-application.svg)](https://www.npmjs.com/package/react-native-installed-application)
[![License](https://img.shields.io/badge/license-MIT-blue.svg)](https://raw.github.com/danilrafiqi/react-native-installed-application/master/LICENSE)

This package is support by [daridasar.com](https://daridasar.com)

React Native module which provides list of installed Android applications.

- Work for android
- Support typescript

## Table of contents

1. [Installation](#installation)
2. [Usage](#usage)
3. [result](#result)
4. [method](#method)

## Installation

If using yarn:

```
yarn add react-native-installed-application
```

If using npm:

```
npm i react-native-installed-application
```

## Usage

```javascript
import React, { useState } from "react";
import { View, Text } from "react-native";
import RNInstalledApplication from 'react-native-installed-application';

const App = () => {
  const [data, setData] = useState([]);

  const getApplication = ()=>{
    RNInstalledApplication.getApps()
    .then(apps => {
      setData(apps)
    })
    .catch(error => {
      console.log(error);
    });
  }

  return (
    <View style={{ marginVertical: 80, marginHorizontal: 20 }}>
      <TouchableOpacity onPress={()=> getApplication()}>
        <Text>Hello World</Text>
      </TouchableOpacity>
    </View>
  );
};

export default App;
```


## Getting started

`$ npm install react-native-installed-application --save`

## Method

#### 1 - getApps()
#### 2 - getNonSystemApps()
#### 3 - getSystemApps()
#### 4 - isPackageInstalled(packageName)

## Result 

- packageName
- versionName
- versionCode
- firstInstallTime
- lastUpdateTime
- appName
- icon // Base64
- apkDir
- size // Bytes
npm package: @kabeersnetwork/rgba-by
Description: RGBA based color filtering library
Author: Kabeer's Network Authors
Latest version: 1.0.0

# RGBA-by
Video and Image filter and color editing with Instagram-Inspired image filters
# Install

```bash
yarn add @kabeersnetwork/rgba-by
# or
npm install @kabeersnetwork/rgba-by
```

# Example

## On existing canvas

```js
import { clarendon, applyPresetOnCanvas } from '@kabeersnetwork/rgba-by';

const canvas = document.querySelector('#myCanvas');
applyPresetOnCanvas(canvas, clarendon());
```

## On existing image

```js
import { clarendon, applyPresetOnImage } from '@kabeersnetwork/rgba-by';

const image = document.querySelector('#myImage');
// Function `applyPresetOnImage` is returning a Blob
const blob = applyPresetOnImage(image, clarendon());

image.src = window.URL.createObjectURL(blob);
```

## From URL

```js
import { clarendon, applyPresetOnImageURL } from '@kabeersnetwork/rgba-by';
import myImage from './image.jpg';

// Function `applyPresetOnImage` is returning a Blob
const blob = applyPresetOnImage(myImage, clarendon());

const image = document.querySelector('#myImage');
image.src = window.URL.createObjectURL(blob);
```

## Using preset of filters manually

```js
import { clarendon } from '@kabeersnetwork/rgba-by';

const canvas = document.querySelector('#myCanvas');
const context = canvas.getContext('2d');
// Retrieve canvas pixels
const pixels = context.getImageData(0, 0, canvas.width, canvas.height);
// Transform canvas pixels with the "clarendon" filter
const filteredPixels = clarendon()(pixels);

// Replace pixels on the canvas
context.putImageData(filteredPixels, 0, 0);
```

# Available presets

- Clarendon
- Gingham
- Moon
- Lark
- Reyes
- Juno
- Slumber
- Crema
- Ludwig
- Aden
- Perpetua
- Amaro
- Mayfair
- Rise
- Hudson
- Valencia
- X-Pro II
- Sierra
- Willow
- Lo-Fi
- Inkwell
- Hefe
- Nashville
- Stinson
- Vesper
- Earlybird
- Brannan
- Sutro
- Toaster
- Walden
- 1977
- Kelvin
- Maven
- Ginza
- Skyline
- Dogpatch
- Brooklyn
- Helena
- Ashby
- Charmes

## Mapping

A mapping of `filter name` -> `filter function` is exported as `presetsMapping`:

```js
import { presetsMapping } from '@kabeersnetwork/rgba-by';
```

# Raw filters

You can also use the raw filters directly like this:

```js
import { sepia } from '@kabeersnetwork/rgba-by/lib/filters';

...

// Apply only sepia filter with a value of 0.5
const filteredPixels = sepia(0.5)(pixels);

...
```

## Available filters

- grayscale
- sepia
- brightness
- saturation
- contrast
- rgbAdjust
- colorFilter

# More Documentation
For more docs and articles about this and much more stuff head on to
https://developers.kabeersnetwork.tk

# Credits

Filters data are coming from [filterous-2](https://github.com/girliemac/filterous-2).

Special Thanks to Noe Lebrun https://gitlab.com/lebrun.noe


Copyright (c) Kabeer's Network LLC
npm package: @kabeleced/webext-i18n
Description: Encapsulates the access to i18n localised text resources for WebExtensions.
Author: Kabeleced
Latest version: 1.0.3

[![Build Status](https://travis-ci.org/kabeleced77/webext-i18n.svg?branch=master)](https://travis-ci.org/kabeleced77/webext-i18n)

# webext-i18n
Encapsulates the access to i18n localised text resources for WebExtensions.

## Installation 
```sh
npm install @kabeleced/webext-i18n
```

## Usage

Assume you have following `message.json`file in your WebExtension folder `_locales/en/messages.json`:

```json
{
  "text": {
    "message": "Hello!"
  },
  "text_substitution": {
    "message": "Hello $substitution$!",
    "placeholders": {
      "substitution": { "content": "$1" }
    }
  }
}
```

### Javascript
```javascript
const I18Text = require('@kabeleced/webext-i18n').I18nText;

const text = new I18nText('text').value();
const textWithSubstitution = new I18nText('text_substitution').value("World");

console.log('Text: ' + text);
console.log('Text with substituion: ' + textWithSubstitution);
```

The output should be
```sh
Text: Hello!
Text with substitution: Hello World!
```

### TypeScript

With TypeScript the usage of the interface `II18nText` is possible:

```typescript
import { II18nText, I18nText } from '@kabeleced/webext-i18n';

function printText(text: II18nText, textWithSubstitution: II18nText) {
  console.log('Text: ' + text.value());
  console.log('Text with substituion: ' + textWithSubstitution.value("World"));    
}

printText(new I18nText('text'), new I18nText('text_substitution'));
```
Output should be
```sh
Text: Hello!
Text with substitution: Hello World!
```

## Test 
```sh
npm run test
```
npm package: @kabisa/ui-components
Description: Component set to easily build settings screens.
Author: Sander Camp
Latest version: 0.1.9-0

# Dashboard UI Components

Component set to easily build settings screens.

# Running storybook

```sh
yarn storybook
```

# Using components from this package

In your project:

```sh
yarn add @dashboard-platform/ui-components
```

In your Widget Settings Renderer:

```ts
import { SlideToggle } from "@dashboard-platform/ui-components";
```

# Components / Elements list:

## Done

_Nothing yet_

## Usable, no styling

- Slide Toggle

## Missing

- Label
- Orderable list
- List card
- Select

# How to build components

Most of the components could be simple wrappers around standard HTML components, mainly adding a consistent styling or more easy to use technical interface.

For more complex components please check out if there is a suitable 'headless' component available, that we can style to our needs.

Sites to check out for nice components:

- https://reactjsexample.com/

Some components I really liked and would recommend when needed:

- Tree component: https://github.com/brimdata/react-arborist
- Menu system: https://szhsin.github.io/react-menu/
npm package: @kablamo/eslint-plugin
Description: `yarn add -D @kablamo/eslint-plugin`
Latest version: 2.0.2

# Kablamo eslint plugin

`yarn add -D @kablamo/eslint-plugin`

Add the following to your `.eslintrc.js`.

```js
module.exports = {
  plugins: ["@kablamo"],
  extends: ["plugin:@kablamo/recommended"],
};
```

## Rules

### `test-id-prefix-match-path`

This rule fixes the first argument of `createTestIds(prefix, [ ...ids])` to be a prefix derived from the files
current directory. This ensures consistent unique prefixes per component.

You can still suffix variables to the end of your test id for example `data-testid={\`${testId.myId}-${uuid}\`}`.

### `test-id-consistent-naming`

This rule ensures common misspellings always get fixed to the kebab-case `data-testid` by default.

This can be configured to `data-test-id`.

```js
module.exports = {
  plugins: ["@kablamo"],
  extends: ["plugin:@kablamo/recommended"],
  rules: {
    "@kablamo/test-id-consistent-naming": ["error", "data-test-id"],
  },
};
```

## Configurations

This plugin contains a reccomended elsint ruleset to enable the included rules.

### Developing

Run `yarn test` from the root of the project.
npm package: @kablamo/kerosene-feature-flags
Description: A simple assertion style feature flag for use in CI/CD deployment pipelines, especially well suited to monorepos and Trunk Based Development.
Latest version: 1.0.1

# Kerosene Feature Flags

A simple assertion style feature flag for use in CI/CD deployment pipelines, especially well suited to monorepos and Trunk Based Development.

Feature Flags give you the ability to safely enable features in different environments, and for specific cohorts of people.

```
yarn add @kablamo/kerosene-feature-flags
```

## Getting Started

With a Kerosene Feature Flag you define a flag as an assertion of conditions, and their expected values.

```typescript
import { flag } from "@kablamo/kerosene-feature-flags";

const flags = {
    FEATURE123: flag(c => [
        c.condition("environment").must.be.any.of(["development", "staging"]),
        c.condition("group").must.be.exactly("users"),
    ]),
    FEATURE42: flag(c => [
        c.condition("environment").must.be.exactly("production"),
        c.condition("group").must.be.exactly("beta"),
    ]),
};

export { flags };
```

When you want to use the flags in your application, you import them, and execute them as a function, passing in an object with runtime information.

```typescript
import { flags } from "./features";

const runtime = {
    environment: "production",
    group: "users",
    browser: "Firefox",
};

if (flags.FEATURE123(runtime)) {
    console.log("New feature");
} else {
    console.log("Old feature");
}
// output:
// New feature

if (flags.FEATURE42(runtime)) {
    console.log("New feature");
} else {
    console.log("Old feature");
}
// output:
// Old feature
```
npm package: @kablamo/kerosene-styles
Description: ``` yarn add @kablamo/kerosene-styles
Latest version: 0.0.2

# 🔥 Kerosene-styles

```
yarn add @kablamo/kerosene-styles

npm install @kablamo/kerosene-styles
```

## Available SCSS

---

### [media.scss](scss/mixins/media.scss)

```scss
@import '~@kablamo/kablamo-styles/scss/mixins/media.scss';
```

#### Available Functions

#### `mq(width, type)`



Returns a media query based on a width, defined by a breakpoint, as well as the min or max type.

###### Example Usage

```scss
@include mq('desktop', max) {
    display: none;
}
```

###### Associated breakpoints

```scss
$breakpoints: (
    "phone":        400px,
    "phone-wide":   480px,
    "phablet":      560px,
    "tablet-small": 640px,
    "tablet":       768px,
    "tablet-wide":  1024px,
    "desktop":      1248px,
    "desktop-wide": 1440px
);
```

#### `aspect-ratio(width, height)`

Maintains the given ratio for the element it is included in.

###### Example Usage

```scss
@include aspect-ratio(16,9)
```

---

kablamo.com.au
npm package: @kablamo/kerosene-test
Description: ``` yarn add --dev @kablamo/kerosene-test
Latest version: 0.0.25

# 🔥 Kerosene-test

```
yarn add --dev @kablamo/kerosene-test

npm install --save-dev @kablamo/kerosene-test
```

## Available Functions

### React

#### `createStubComponent(displayName, functional?, getRenderProps?, transformRenderProps?)`

Creates a StubComponent for unit testing.

#### `createStubContext(displayName, getter?)`

Creates a stub React Context for unit testing.

### `createQueryObserverBaseResult(queryKey?)`

Creates a fake query observer result useful for mocking React Query.

### `createQueryObserverSuccessResult(data, queryKey?)`

Creates a fake query observer success result useful for mocking React Query.

### `createQueryObserverRefetchErrorResult(data, error, queryKey?)`

Creates a fake query observer refetch error result useful for mocking React Query.

### `createQueryObserverLoadingErrorResult(error, queryKey?)`

Creates a fake query observer loading error result useful for mocking React Query.

### `createQueryObserverLoadingResult(queryKey?)`

Creates a fake query observer loading result useful for mocking React Query.

### Stubs

#### `createStubStyles(classNames, values?)`

Returns an object mapping local classNames to faked global equivalents along with any exported values.

#### `stubProperties(target, properties)`

Stubs `properties` on the `target` object, and returns a function which restores them to their original values.

## Available TypeScript Types

### Jest

#### `JestMock<T>`

Shorthand for `jest.Mock<OverloadedReturnType<T>, OverloadedParameters<T>> & T;`.

#### `JestSpied<T>`

Shorthand for `jest.SpyInstance<OverloadedReturnType<T>, OverloadedParameters<T>> & T;`.

### Sinon

#### `SinonSpied<T>`

Shorthand for `sinon.SinonSpy<OverloadedParameters<T>, OverloadedReturnType<T>> & T;`.

#### `SinonStubbed<T>`

Shorthand for `sinon.SinonStub<OverloadedParameters<T>, OverloadedReturnType<T>> & T;`.

---

kablamo.com.au
npm package: @kablamo/rollup-plugin-resolve-externals
Description: ``` npm install --save-dev @kablamo/rollup-plugin-resolve-externals ```
Latest version: 0.0.4

# @kablamo/rollup-plugin-resolve-externals

```
npm install --save-dev @kablamo/rollup-plugin-resolve-externals
```

This rollup plugin forces subpath imports from packages without [package `exports`](https://nodejs.org/api/packages.html#subpath-exports) to resolve to a filename. This allows such imports to occur in `.mjs` files which would otherwise complain.