open-index/open-npm huggingface dataset:
npm package: @mr.tonio/tiny
Description: Removes all spaces from a string
Latest version: 5.0.0

# @mr.tonio/tiny

[![npm (scoped)](https://img.shields.io/npm/v/@mr.tonio/tiny.svg)](https://www.npmjs.com/package/@mr.tonio/tiny)

Removes all spaces from a string.

## Install

```
$ npm install @mr.tonio/tiny
```

## Usage

```js
const tiny = require("@mr.tonio/tiny");

tiny("So much space!");
//=> "Somuchspace!"

tiny(1337);
//=> Uncaught TypeError: Tiny wants a string!
//    at tiny (<anonymous>:2:41)
//    at <anonymous>:1:1
```
npm package: @mr.yuto/connectfour.js
Description: A simple game logic for connect four
Author: MrYuto
Latest version: 1.0.2

# ConnectFour.js

A simple Connect four game logic

- Easy to use
- Object-oriented
- Multiple players
- Custom board

## Install

``` js
npm install @mr.yuto/connectfour.js
```

OR

```js
yarn add @mr.yuto/connectfour.js
```

## Usage

Creating a game with two players:

```js
const { ConnectFour } = require('@mr.yuto/connectfour.js');

const game = new ConnectFour({ boardWidth: 7, boardHeight: 6 });

//Add players to game before starting
const playerA = game.addPlayer('A', '🔵');
const playerB = game.addPlayer('B', '🔴');

// start the game
game.start();
```

After starting the game, the player can drop a bead to a specific column (`0 to boardWidth - 1`):

```js
playerA.dropBead(0);
playerB.dropBead(1);
```

Print the game board:

```js
const printedBoard = game.print()
console.log(printedBoard);
```

Console:

``` js
⚪⚪⚪⚪⚪⚪⚪
⚪⚪⚪⚪⚪⚪⚪
⚪⚪⚪⚪⚪⚪⚪
⚪⚪⚪⚪⚪⚪⚪
⚪⚪⚪⚪⚪⚪⚪
🔵🔴⚪⚪⚪⚪⚪
```
npm package: @mr3umar/hello-world
Description: a try
Author: Umar Alyahya
Latest version: 0.0.1

Hello World
=========

A silly library that return a hello-world message

## Installation

  `npm install @mr3umar/hello-world`

## Usage

    var greeter = require('@mr3umar/hello-world');

    var msg = greeter();
  
  
  Output should be `Hello World`


## Tests

  `npm test`

## Contributing

In lieu of a formal style guide, take care to maintain the existing coding style. Add unit tests for any new or changed functionality. Lint and test your code.
npm package: @mr42/version-comparator
Description: A package providing utility functions to compare different version strings.
Author: Michael Rudolph
Latest version: 1.2.2

# Version Comparator

With the version comparator you can compare [semver](https://semver.org/) valid version strings.
Additionally, the version comparator can compare version strings like 5.04, 5.06.

## Install
```bash
npm install @mr42/version-comparator
```

## Usage
### Compare
Compare two version strings
```typescript
import { compare } from '@mr42/version-comparator/dist/version.comparator';
// left < right
compare('4.04', '4.06') // -1
compare('4.4.1', '4.4.2') // -1
compare('4.04', '4.4.0') // -1, since left.length < right.length
// left > right
compare('4.06', '4.04') // 1
compare('4.4.2', '4.4.1') // 1
compare('4.4.0', '4.04') // 1, since left.length > right.length
// left == right
compare('4.06', '4.06') // 0
compare('4.4.1', '4.4.1') // 0
compare('4.04', '4.4') // 0
```
### Less than equal
Checks if version1 <= version2
```typescript
import { lte } from '@mr42/version-comparator/dist/version.comparator';
// check returns true
lte('4.04', '4.06') // true
lte('4.4.1', '4.4.2') // true
lte('4.04', '4.4.0') // true, since left.length < right.length
lte('4.06', '4.06') // true
lte('4.4.1', '4.4.1') // true
lte('4.04', '4.4') // true
// check returns false
lte('4.06', '4.04') // false
lte('4.4.2', '4.4.1') // false
lte('4.4.0', '4.04') // false, since left.length > right.length
```
### Greater than equal
Checks if version1 >= version2
```typescript
import { gte } from '@mr42/version-comparator/dist/version.comparator';
// check returns true
gte('4.06', '4.04') // true
gte('4.4.2', '4.4.1') // true
gte('4.4.0', '4.04') // true, since left.length > right.length
gte('4.06', '4.06') // true
gte('4.4.1', '4.4.1') // true
gte('4.04', '4.4') // true
// check returns false
gte('4.04', '4.06') // false
gte('4.4.1', '4.4.2') // false
gte('4.04', '4.4.0') // false, since left.length < right.length
```
### Equal
Checks if version1 == version2
```typescript
import { eq } from '@mr42/version-comparator/dist/version.comparator';
// check returns true
eq('4.06', '4.06') // true
eq('4.4.1', '4.4.1') // true
eq('4.04', '4.4') // true
// check returns false
eq('4.06', '4.04') // false
eq('4.4.2', '4.4.1') // false
eq('4.4.0', '4.04') // false, since left.length > right.length
eq('4.04', '4.06') // false
eq('4.4.1', '4.4.2') // false
eq('4.04', '4.4.0') // false, since left.length < right.length
```
npm package: @mr687/nest-file-fastify
Description: fastify-multipart decorators for Nest.js
Author: Blazity
Latest version: 1.1.1

<div align="left">
  <h1> fastify-multipart for Nest.js</h1>

[![Github Actions](https://img.shields.io/github/actions/workflow/status/mr687/nest-file-fastify/build.yaml?style=flat-square)](https://github.com/mr687/nest-file-fastify)
[![NPM](https://img.shields.io/npm/v/@mr687/nest-file-fastify.svg?style=flat-square)](https://www.npmjs.com/package/@mr687/nest-file-fastify)
[![NPM](https://img.shields.io/npm/dm/@mr687/nest-file-fastify?style=flat-square)](https://www.npmjs.com/package/@mr687/nest-file-fastify)

</div>

This library adds decorators for [Nest.js](https://github.com/nestjs/nest) to support [@fastify/multipart](https://github.com/fastify/fastify-multipart). The API is very similar to the official Nest.js Express file decorators.

## Installation

NPM

```bash
$ npm install @mr687/nest-file-fastify @fastify/multipart
```

Yarn

```bash
$ yarn add @mr687/nest-file-fastify @fastify/multipart
```

and register multpart plugin in your Nest.js application

```typescript
import fastyfyMultipart from '@fastify/multipart';

...

app.register(fastyfyMultipart);
```

## Docs

### Single file

```ts
import { FileInterceptor, UploadedFile, MemoryStorageFile } from '@mr687/nest-file-fastify';

@Post('upload')
@UseInterceptors(FileInterceptor('file'))
uploadFile(@UploadedFile() file: MemoryStorageFile) {
  console.log(file);
}
```

`FileInterceptor` arguments:

- `fieldname`: string - name of the field that holds a file

- `options`: optional object of type [`UploadOptions`](src/multipart/options.ts#L4)

### Array of files

```ts
import { FilesInterceptor, UploadedFiles, MemoryStorageFile } from '@mr687/nest-file-fastify';

@Post('upload')
@UseInterceptors(FilesInterceptor('files'))
uploadFile(@UploadedFiles() files: MemoryStorageFile[]) {
  console.log(files);
}
```

`FilesInterceptor` arguments:

- `fieldname`: string - name of the field that holds files

- `maxCount`: optional number - maximum number of files to accept

- `options`: optional object of type [`UploadOptions`](src/multipart/options.ts#L4)

### Multiple files

```ts
import { FileFieldsInterceptor, UploadedFiles, MemoryStorageFile } from '@mr687/nest-file-fastify';

@Post('upload')
@UseInterceptors(FileFieldsInterceptor([
  { name: 'avatar', maxCount: 1 },
  { name: 'background', maxCount: 1 },
]))
uploadFile(@UploadedFiles() files: { avatar?: MemoryStorageFile[], background?: MemoryStorageFile[] }) {
  console.log(files);
}
```

`FileFieldsInterceptor` arguments:

- `uploadFields`: object of type [`UploadField`](src/multipart/handlers/file-fields.ts#L10)

- `options`: optional object of type [`UploadOptions`](src/multipart/options.ts#L4)

### Any files

```ts
import { AnyFilesInterceptor, UploadedFiles, MemoryStorageFile } from '@mr687/nest-file-fastify';

@Post('upload')
@UseInterceptors(AnyFilesInterceptor()
uploadFile(@UploadedFiles() files: MemoryStorageFile[]) {
  console.log(files);
}
```

`AnyFilesInterceptor` arguments:

- `options`: optional object of type [`UploadOptions`](src/multipart/options.ts#L4)
npm package: @mr8eight/ga-tracker
Description: Google Analytics 4 埋点 SDK，支持自动性能采集、错误监控、用户追踪
Latest version: 1.1.1

# @mr8eight/ga-tracker

企业级前端埋点监控 SDK。基于 Google Analytics 4 (`gtag.js`) 封装，提供事件上报、性能监控、错误捕获、网络监控、交互追踪、用户身份关联和离线缓存能力。

## 特性

- 自动采集页面性能与 Web Vitals
- 自动捕获 JS 错误、Promise 异常和资源加载错误
- 自动监控 `fetch` / `XMLHttpRequest`
- 支持点击、滚动深度、元素曝光追踪
- 支持用户 ID 与用户属性绑定
- 支持断网缓存与恢复后重试
- 兼容 SSR，SDK 内部异常不会影响业务代码

## 安装

```bash
pnpm add @mr8eight/ga-tracker
```

在 monorepo 中也可以直接依赖工作区包：

```json
{
  "dependencies": {
    "@mr8eight/ga-tracker": "workspace:*"
  }
}
```

## 快速开始

```ts
import { SmartTracker } from '@mr8eight/ga-tracker';

SmartTracker.init({
  measurementId: 'G-XXXXXXXXXX',
  enablePerformance: true,
  enableError: true,
  enableNetwork: true,
  enableInteraction: true,
  enableOffline: true,
  debug: process.env.NODE_ENV === 'development'
});
```

初始化后会按开关自动启动对应采集器。

## 常见用法

```ts
const tracker = SmartTracker.getInstance();

tracker?.setUser('user-123', {
  role: 'admin',
  plan: 'pro'
});

tracker?.trackEvent('purchase', {
  category: 'ecommerce',
  transaction_id: 'T-1001',
  value: 99,
  currency: 'CNY'
});

tracker?.trackPageView('/products/123', '产品详情');

tracker?.clearUser();
```

## HTML 自动追踪

```html
<button data-track-name="submit_order">提交订单</button>
<div data-track-exposure data-track-name="promo_banner">促销横幅</div>
<button data-track-ignore>不需要追踪</button>
```

启用 `enableInteraction: true` 后，SDK 会自动采集：

- 带 `data-track-name` 的元素点击
- 常见可交互元素的点击
- 页面滚动深度
- 带 `data-track-exposure` 的元素曝光

## 配置项

| 选项 | 类型 | 默认值 | 说明 |
|------|------|--------|------|
| `measurementId` | `string` | 必填 | GA4 Measurement ID |
| `enablePerformance` | `boolean` | `true` | 启用性能采集 |
| `enableError` | `boolean` | `true` | 启用错误采集 |
| `enableNetwork` | `boolean` | `true` | 启用网络采集 |
| `enableInteraction` | `boolean` | `false` | 启用交互采集 |
| `enableOffline` | `boolean` | `false` | 启用离线缓存 |
| `debug` | `boolean` | `false` | 输出调试日志 |

## 构建输出

```text
dist/
  index.js      CommonJS
  index.mjs     ESM
  index.d.ts    类型声明
```

## 注意事项

- 自定义事件参数会直接透传给 GA4，推荐使用 GA4 规范字段名
- 自定义维度需要在 GA 后台注册后才能在报表中查看
- 不要上报手机号、邮箱等 PII 敏感信息
npm package: @mr96/use-timeline
Description: An enchanced useState hook which keeps track of the states history, allowing you to undo and redo states.
Author: marcoripa96
Latest version: 1.4.0

# useTimeline

An enchanced useState hook which keeps track of the states history, allowing you to undo and redo states.

---

**useTimeline** is a simple hook based on the **useState** hook which abstracts operations of undo and redo.

A full example is avaiable on [here](https://stackblitz.com/edit/react-ts-qi1zgm?file=ExampleUseTimeline.tsx).

## Install

With npm:

```
npm install @mr96/use-timeline
```

With yarn:

```
yarn add @mr96/use-timeline
```

## Quick Start

```tsx
import { useTimeline } from '@mr96/useTimeline';

export default function App() {
  const {
    // current state
    state,
    // set a new state (same API as setState)
    setState,
    // undo by 1 step
    undo,
    // redo by 1 step
    redo,
    // true if there is an undoable state
    canUndo,
    // true if there is a redoable state
    canRedo,
    ...additionalProps
  } = useTimeline('');

  const onChange = (event: ChangeEvent<HTMLInputElement>) => {
    setState(event.target.value);
  };

  return (
    <button disabled={!canUndo} onClick={() => undo()}>
      Undo
    </button>
    <input type="text" onChange={onChange} value={state} />
    <button disabled={!canRedo} onClick={() => redo()}>
      Redo
    </button>
  )
}
```
npm package: @mr_chick/vue_axios
Description: A wrapper for axios calls. It helps you set up your API structure
Author: Puiu Cristian
Latest version: 1.1.7
Deprecated: false

# Info

This is a wrapper for the **axios**, with some helpers to make your REST API easier to manage.

This is still *work in progress*, but the basic works.

### Install

#### Install the package

```js
npm i @mr_chick/vue_axios
```

#### with the package installed, you have to import it in your vue project

```js
import VueAxios from '@mr_chick/vue_axios'

```

### you can set some options directly on initialization

you can set:
* base - the default base for the api calls. If you have an endpoint `user/details` it will append the default base before making the request, resulting in `api_url_base/user/details`

* endpoints - a json with your endpoints. There will be more details about this below.

* default_headers - an object with headers that will be added to all request calls. Can be overriden from the endpoint.
```js
Vue.use(VueAxios, {
  'base': api_url_base,
  'endpoints': endpoints,
  'default_headers': {
    'Content-Type': 'application/json',
    'Accept': 'application/json',
    'Your-Custom-Header': 'custom'
  }
});
```

### Endpoints

#### You can define your endpoins in a json file, so you can call them by the name

##### endpoints.js

```js
let endpoints = {
  'auth.token': {
    'url': '/oauth/token',
    'method': 'post'
  },
  'auth.login': {
    'url': '/user/auth',
    'method': 'get'
  },
  'user.details': {
    'url': '/user/{user_id}',
    'method': 'get'
  }

}

export default endpoints
```

### Requesting

#### You can make a request by calling `this.$api.request`

```js
this.$api.request({
  'endpoint': {
    'name': 'user.details',
    'params': 'user_id': 234 // will replace user_id in endpoint url
  },
  'payload': {}, // data to be sent in body request
  'headers': {}, // will overwritten the default headers
  'params': {}, // get params, that will be added to link (ex) {foo: bar} will result in /user/234/?foo=bar
})
```

### Axios instance

If you need the axios object, you can access it via `this.$api.getAxios()`
npm package: @mr_chick/vue_guard
Description: A helper plugin to deal with simple permissions
Latest version: 1.2.3
Deprecated: false

# Info

This is a basic "guard" that you can use with simple permissions

This is still *work in progress*, but the basic works.

There will be a vue directive guard too in the near future.

### Install

#### Install the package 

```js
npm i @mr_chick/vue_guard
```

#### with the package installed, you have to import it in your vue project

```js
import guard from '@mr_chick/vue_guard'
```

#### then, you have to initialize the plugin
#### the plugin uses vuex to store the permissions, so you *must* provide the store object to the plugin

`Vue.use(guard, {'store': store});
`

### Usage

#### You have access to the guard via `this.$guard` (or a directive, soon)


#### To allow a permission

`this.$guard.allow('i-can-do-this');`

You can add an `Instance` and an `ID` to the allow / disallow, and it will be a more specific way of setting permission

`this.$guard.allow('i-can-do-this','User','12')`

That means, only the `can('i-can-do-this', 'User', '12')` will return true, anything else, will allow false.

#### To disallow a permission

`this.$guard.disallow('i-can-do-this')`

Same as allow, you can pass the optional `Instance` and `ID` if you need more granual permissions

You use disallow when you use a specific permission, for a specific Instance / ID, but you still want a global permission

For ex

```
this.$guard.allow('i-can-do-this')
this.$guard.disallow('i-can-do-this', 'User', 12)
```

will return false only for `this.$guard.can('i-can-do-this', 'User', 12)`
`this.$guard.can('i-can-do-this', 'User', {any_other_id})` or `this.$guard.can('i-can-do-this', { Any other instance })` or `this.$guard.can('i-can-do-this')` will return true


### getters

#### To check if you can do something, you can use 

`this.$guard.can('i-can-do-this')` returns true if permission exists, false if not

You can pass the optional parameters Instance and ID for more granual check

`this.$guard.can('permission')`

`this.$guard.can('permission', 'Instance')`

`this.$guard.can('permission', 'Instance', 'ID')`


#### The inverse is `cannot` or `cant` with the same parameters

`this.$guard.cannot('permission', 'Instance', 'ID')`

`this.$guard.cant('permission', 'Instance', 'ID')` (alias for cannot)


#### you can get the list object via `this.$guard.listPermissions()` 


#### the permissions are so the getters will update if you use `allow` / `disallow`
npm package: @mr_chick/vue_laravel_echo
Description: A wrapper (and more)  for the laravel-echo package
Author: Puiu Cristian
Latest version: 1.0.11
Deprecated: false

# Info


This project is based on the [official laravel-echo package](https://laravel.com/docs/5.6/broadcasting)

I tried to implement as much as I could from the docomentation

This plugin works using `socket.io` as broadcaster

TODO:
* Vuex support
* Handle socket connections
* Sugar sintax

--- 

Settings laravel echo is not part of this readme.

### Install

#### Install the package 

```js
npm i @mr_chick/vue_laravel_echo
```

#### with the package installed, you have to import it

```js
import echo from '@mr_chick/vue_laravel_echo'
```
### Attach `socket.io` to window

```js 
npm install --save socket.io-client
```

```js
window.io = require('socket.io-client');
```

#### Attach the plugin to Vue

```js
Vue.use(echo, {
  'broadcaster': {
    'name': 'socket.io'
   },
  'host': window.location.hostname + ':6001',
  'auth' :{
    'headers': {
      'Authorization': 'Bearer ' + process.env.BEARER
    }
  }
})
```

The auth member is needed to authenticate private channels.


If you don't have the token in initialize, you can add it sometime after, but before joining the channels

```js
this.$echo.addAuthToken(`token`);
```

If you use public channels, auth is not needed

### Usage

After installation, you will be able to access echo via `this.$echo`

#### Joining a private channel

You use the `.private(channel)` method to join a private channel
Then, you can chain the listener on the returned instance
```js
this.$echo.private(`user.${process.env.USER_ID_TEST}`).notification((notification) => {
  console.log(notification);
});
```

It will join the private channel `user.${process.env.USER_ID_TEST}` and it will listen for notifications sent from that channel


You can also listen to `events`, the same as notifications, you chain the listener on the returned instance

```js
this.$echo.private(`user.${process.env.USER_ID_TEST}`).listen('TestEvent', (e) => {
  console.log(e);
});
```

#### Joining a public channel

You join a public channel using `.channel(channel)` or `.public(channel)` metod

```js
this.$echo.channel(`user.${process.env.USER_ID_TEST}`).notification((notification) => {
  console.log(notification);
});
```

```js
this.$echo.channel(`user.${process.env.USER_ID_TEST}`).listen('TestEvent', (e) => {
  console.log(e);
});
```

#### Leaving a channel

You leave a channel using `.leave(channel)` method

```js
this.$echo.leave(`user.${process.env.USER_ID_TEST}`);
```
npm package: @mr_dreek/el-table-wrapper
Description: A Vue2 table component based on el-table of Element UI with pagination support and column filtering, sorting, searching features
Author: Nikita Klyosow
Latest version: 3.2.0

# el-table-wrapper

### Compiles and hot-reloads for development
```
yarn serve
```

### Compiles and minifies for production
```
yarn build
```

### Run your unit tests
```
yarn test:unit
```

### Run your end-to-end tests
```
yarn test:e2e
```

### Lints and fixes files
```
yarn lint
```

### Customize configuration
See [Configuration Reference](https://cli.vuejs.org/config/).
npm package: @mr_ezo/aicommits
Description: Generate Conventional Commit messages from staged git changes.
Latest version: 1.0.6

# aicommits

Generate Conventional Commit messages from staged git changes.

`aicommits` is a CLI that:
- reads your staged changes
- filters noisy files before sending context to the model
- validates commit-message format
- supports regenerate / confirm flow
- can commit, copy, or dry-run

---

## Quick start

Run without installing globally:

```bash
npx @mr_ezo/aicommits
```

---

## Requirements

- Node.js 18+
- Git repository
- Groq API key (BYOK)

---

## Setup (API key)

You must provide a Groq API key before running.

### Option 1: environment variable

```bash
export GROQ_API_KEY="sk_..."
```

Then run:

```bash
aicommits
```

### Option 2: project `.env` file

Create a `.env` file in your repository:

```env
GROQ_API_KEY=sk_...
```

---

## Installation

### Global install (optional)

```bash
npm i -g @mr_ezo/aicommits
```

Then run:

```bash
aicommits
```

### Local install (project dependency)

```bash
npm i -D @mr_ezo/aicommits
```

Then run:

```bash
npx aicommits
```

---

## Usage

```bash
aicommits [options]
```

### Options

- `--custom "<text>"`
  - Add extra style preferences (additive only, does not override safety or format rules).
- `--include-lockfiles`
  - Include lockfile diff content in model input.
- `--exclude <glob>`
  - Exclude staged files from model input. Repeatable.
  - Example: `--exclude "dist/**" --exclude "*.map"`
- `--debug-payload`
  - Print the exact payload sent to the provider.
- `--copy`
  - Copy the final validated message to clipboard and exit (no commit).
- `--dry-run`
  - Print the final validated message and exit (no prompt, no commit).
- `--help`, `-h`
  - Show CLI help.

---

## Typical workflow

```bash
git add .
aicommits
```

Interactive prompt:
- `y` / `yes` → commit with validated message
- `r` → regenerate message (bounded retries)
- `n` / empty / Ctrl-C / EOF → exit without commit

---

## Safety and validation

- Guardrails run before any provider call.
- Messages must pass Conventional Commit validation:
  - single line
  - `type(scope?): subject`
  - lowercase allowed types
  - max 72 characters
  - no trailing period
- Invalid model output is retried and can fall back to a safe deterministic message.

---

## Transparency features

- Prints an AI input summary (included vs excluded files).
- Exact payload inspection via `--debug-payload`.
- `--copy` and `--dry-run` ensure non-destructive workflows.

---

## Development

```bash
npm run build
npm run dev
```

---

## License

MIT
npm package: @mr_fozan/utils.js
Description: Utils.js
Author: Mr_Fozan
Latest version: 1.1.0

<h1 align="center">⚙️ Utils.js</h1>

<div align="center">

[![npm package](https://img.shields.io/npm/v/@mr_fozan/utils.js?logo=npm&style=flat-square)](https://www.npmjs.org/package/@mr_fozan/utils.js)

**Utils.js is a feature-rich [Node.js](https://npmjs.com) module that lets you easily interact with text, numbers, and symbols.**

</div>

## 📦 Install

**NPM**
```sh
npm instal @mr_fozan/utils.js
```
**YARN**

```sh
$ yarn add @mr_fozan/utils.js
```

## 🚀 Usage

```js
const utils = require('@mr_fozan/utils.js');
```

## 📖  Documentation

**You can find a complete guide on our [website](https://github.com/Fozan-Developer/utils.js/blob/main/doc/documentation.md)**

## 👥 Contributors

<p align="center">
  <a href="https://github.com/Fozan-Developer/utils.js/graphs/contributors">
    <img src="https://contrib.rocks/image?repo=Fozan-Developer/utils.js" />
  </a>
</p>

## License

**The MIT License (MIT)**
npm package: @mr_igne/ng2-tel-input
Description: An Angular 2 wrapper for intl-tel-input library
Author: nerozya.igor@gmail.com
Latest version: 2.4.1

<h1 align="center"> This repository is no longer maintained.</h1>

# Angular 2+ wrapper for intl-tel-input

# Installation

Run following command to install ng2-tel-input

```sh
npm install ng2-tel-input intl-tel-input --save
```

After install, you need to add **intlTelInput.css**, **intlTelInput.min.js**, **utils.js**.

In case of @angular/cli, add 2 files in your `angular.json`. 

For example,

- Include **intlTelInput.css** in "styles" at your `angular.json` file  :
```
  "styles": [
    ...
    "node_modules/intl-tel-input/build/css/intlTelInput.css",
    ...
  ]
```

- Include **intlTelInput.min.js**, **utils.js** in "scripts" at your `angular.json` file  :
```
  "scripts": [
    ...
    "node_modules/intl-tel-input/build/js/intlTelInput.min.js"
    ...
  ]
```


Now add Ng2TelInputModule into your AppModule. For example,

```js
import {Ng2TelInputModule} from 'ng2-tel-input';
```

Once done, we are ready to use this library.

# How to use?

In order to use this directive, you need to add "ng2TelInput" directive with "[ng2TelInputOptions]" options to your text field. For example,

```html
<input type="text"
  ng2TelInput
  [ng2TelInputOptions]="{initialCountry: 'in'}"
  (hasError)="hasError($event)"
  (ng2TelOutput)="getNumber($event)"
  (intlTelInputObject)="telInputObject($event)"
  (countryChange)="onCountryChange($event)" />
```

# Note
**(intlTelInputObject)** returns **intl-tel-input** instance.
By default this package get **utils.js** from below link:-
https://cdnjs.cloudflare.com/ajax/libs/intl-tel-input/16.0.1/js/utils.js
But you can also provide your utilsScript file by using below options:-

[ng2TelInputOptions]="{initialCountry: 'in', utilsScript: 'node_modules/intl-tel-input/build/js/utils.js'}"

# How to use this instance?
You can use it perform any functionality that is available on intl-tel-input plugin. **For example**, in your component,
```
telInputObject(obj) {
    console.log(obj);
    obj.setCountry('in');
  }
```
npm package: @mr_kaakyire/autogit
Description: CLI tool to generate Git commit messages using Gemini API
Latest version: 1.0.2

# autogit

Generate smart Git commit messages using the Gemini API (now using the `gemini-2.0-flash` model).

## Features
- Reads your staged Git diff
- Sends it to Gemini (Google AI) for a commit message (using the `gemini-2.0-flash` model)
- Outputs a Markdown bullet list
- Optional: Auto-commit with generated message
- Shows a loading spinner during message generation
- Displays a success message when commit message is generated
- Displays a failure message if generation fails

## Installation

1. **Clone this repo**
2. **Install dependencies:**
   ```sh
   npm install
   ```
3. **Set up your API key:**
   - Copy `.env.example` to `.env`
   - Add your Gemini API key to `.env`

## Usage

Stage your changes with `git add` as usual, then run:

```sh
npx autogit
```

Or, to auto-commit with the generated message:

```sh
npx autogit --commit
```

You can also install globally:

```sh
npm install -g .
```

Then use:

```sh
autogit [--commit]
```

## Environment Variables

- `GEMINI_API_KEY` — Your Gemini API key (see `.env.example`)

## Dependencies
- [`ora`](https://www.npmjs.com/package/ora) — for the loading spinner

## Notes
- Only staged changes are used (like `git commit`)
- Handles API and Git errors gracefully
- Requires Node.js 16+

---

MIT License
npm package: @mr_ozin/hello-world
Description: ## usage
Author: mr_ozin
Latest version: 1.0.1

# @mr_ozin/hello-world

## usage

### install

```bash
// or yarn add @mr_ozin/hello-world
$ npm install @mr_ozin/hello-world
```

### run

`touch index.ts` , write this code, run with `tsc && node index.js` or `ts-node index.ts`

```typescript
import sayHello, { sayMessage } from "@mr_ozin/hello-world";

sayHello();

sayMessage();

sayMessage("Hello World");
```

## LICENSE

MIT
npm package: @mr_stainless/dnd-grid
Description: A vuejs grid with draggable and resizable boxes
Author: Daniel Duton
Latest version: 0.0.14

# dnd-grid

> A vuejs grid with draggable and resizable boxes

[Demo page](https://dnd-grid.duton.lu/)

The **demo** requires **Vue >= 2.3.0** because of the ":layout.sync" feature

The **components** require **Vue >= 2.0.0**

# Usage

## Example

```html
<dnd-grid-container :layout.sync="layoutJson">
    <dnd-grid-box :boxId="box1Id">
        <h1>Box 1</h1>
    </dnd-grid-box>
    <dnd-grid-box :boxId="box2Id">
        <h1>Box 2</h1>
    </dnd-grid-box>
    ...
</dnd-grid-container>
```

## Layout JSON

```javascript
[
    {
        id: 'box-a',
        hidden: false,
        pinned: false,
        position: {
            x: 0,
            y: 0,
            w: 4, // Multiplier for virtual grid width
            h: 2 // Multiplier for virtual grid height
       }
    },
    {
        id: 'box-b',
        hidden: false,
        pinned: false,
        position: {
            x: 4,
            y: 0,
            w: 2,
            h: 1
        }
    },
    ...
]
```

| Property        | Description                                                             |
| --------------- | ----------------------------------------------------------------------- |
| id              | The id of the box linked with this box layout (must be unique)          |
| hidden          | hide or show the box                                                    |
| pinned          | If pinned, the box can not be dragged/resized and always stays in place |
| position        | The position/size in the grid                                           |

## Installation

### Using npm

`npm i --save @dattn/dnd-grid`

### How to import (using ES6 import)

```javascript
// import Container and Box components
import { Container, Box } from '@dattn/dnd-grid'
// minimal css for the components to work properly
import '@dattn/dnd-grid/dist/index.css'
```

### Setup component

```javascript
<script>
export default {
    components: {
        DndGridContainer: Container,
        DndGridBox: Box
    }
}
</script>
```

## License

This project is licensed under [MIT License](http://en.wikipedia.org/wiki/MIT_License)
npm package: @mrabetr/streak-counter
Description: This is a basic streak counter - inspired by Duolingo - written in TypeScript and meant for the browser (uses `localStorage`)
Latest version: 0.0.2

# `@mrabetr/streak-counter` - a basic streak counter

This is a basic streak counter - inspired by Duolingo - written in TypeScript and meant for the browser (uses `localStorage`)

## Install

```shell
yarn add @mrabetr/streak-counter
```

or

```shell
npm install @mrabetr/streak-counter
```
## Usage

[![Edit streak-counter (ts-course) (forked)](https://codesandbox.io/static/img/play-codesandbox.svg)](https://codesandbox.io/s/streak-counter-ts-course-forked-8xf2qs?fontsize=14&hidenavigation=1&theme=dark)

```typescript
import {streakCounter} from '@mrabetr/streak-counter'

const today = new Date()
const streak = streakCounter(localStorage, today)
// streak returns an object:
// {
//    currentCount: 1,
//    lastLoginDate: "11/11/2021",
//    startDate: "11/11/2021",
// }
```
npm package: @mracette/eslint-config
Description: A personalized ESLint config with Typescript support
Author: Mark Racette
Latest version: 1.0.0

# @mracette/eslint-config

A personalized ESLint config with Typescript support

## Usage

1. Initialize your project with `package.json` if you haven't already

1. Install `@mracette/eslint-config` and its peer dependencies into your project:

    If using npm: `npx install-peerdeps --dev @mracette/eslint-config`

    If using yarn: same as above, but pass `--yarn`

2. Create a file `.eslintrc` at the root of your project's directory and add the following:

```
{
    "extends": [
        "@mracette"
    ],
    "parserOptions": {
        "project": "./tsconfig.json"
    }
}
```

Alternatively, you can put this object in your `package.json` under the property `"eslintConfig"`. This makes one less file in your projects.

### Extra Configuration

There are a few more optional steps which could help you get the most out of your eslint configuration.

1. Add `.eslintignore`. At a very minimum, you should ignore node_modules. Here are some more to get you started:

```
**/.git/**
**/node_modules/**
```

1. You can override rules in the config or extend it by adding a `rules` section to your project's `.eslintrc`:

```
"rules": {
    "no-alert": "warn"
}

## Understanding ESlint plugins vs. configs

In short:

- a plugin provides new rules
- a plugin may also contain 0, 1, or multiple configs
- a config applies a set of rules when added to the extends array

Here is a good Stack Overflow answer with more detail on this: https://stackoverflow.com/a/54522973/3064334

## mracette/eslint-config rules hierarchy:

- `@mracette` (the config provided by this package)
    - `plugin:@typescript-eslint` (provides lint rules for TS)
        - `plugin:@typescript-eslint/recommended` (the set of rules which are recommended for all projects by the ESLint team and _do not require_ type-checking to run)
        - `plugin:@typescript-eslint/recommended-requiring-type-checking` (recommended rules which _do require_ type-checking in order to be implemented correctly)
    - `prettier:/@typescript-eslint` (turns _off_ all rules that are unnecessary or might conflict with Prettier)
npm package: @mrackoa/backstage-plugin-opsgenie
Description: The Opsgenie plugin is a frontend plugin that displays Opsgenie alerts, incidents and on-call information in Backstage. The plugin includes two components that can be integrated into Backstage:
Latest version: 0.6.39

# Opsgenie plugin for Backstage

The Opsgenie plugin is a frontend plugin that displays Opsgenie alerts, incidents and on-call information in Backstage. The plugin includes two components that can be integrated into Backstage:

*  The `OpsGeniePage` routable extension component which produces a standalone page with the following capabilities:
    * view a summary of who is currently on call
    * view and search a list of active alerts with the option of acknowledging or closing alerts directly from Backstage
    * view and search a list of incidents
    * view incident-related analytics
* The `EntityOpsgenieAlertsCard` component which can display recent alerts for a specific component.

## Setup

Find [installation instructions](./docs/index.md#installation) in our documentation.

## How does it look?

"Who is on call?" page:

![Opsgenie on-call page](./docs/opsgenie-on-call-page.png)

Alerts page:

![Opsgenie alerts page](./docs/opsgenie-alerts-page.png)

Incidents page:

![Opsgenie incidents page](./docs/opsgenie-incidents-page.png)

Incidents analytics page:

![Opsgenie incidents analytics page](./docs/opsgenie-analytics-page.png)

Alerts card:

![Opsgenie alerts card](./docs/entity-overview.png)

## License

This library is under the [MIT](LICENSE) license.