open-index/open-npm huggingface dataset:
npm package: @shafiqrathore/logeld-tenantbackend-common-future
Description: shared services
Latest version: 1.0.66

<h1 align="center"></h1>

<div align="center">
  <a href="http://nestjs.com/" target="_blank">
    <img src="https://nestjs.com/img/logo_text.svg" width="150" alt="Nest Logo" />
  </a>
</div>

<h3 align="center">NestJS npm Package Starter</h3>

<div align="center">
  <a href="https://nestjs.com" target="_blank">
    <img src="https://img.shields.io/badge/built%20with-NestJs-red.svg" alt="Built with NestJS">
  </a>
</div>

### Installation

1. Clone the repo
2. Run npm/yarn install

```bash
cd nestjs-package-starter
npm install
```

## Change Log

See [Changelog](CHANGELOG.md) for more information.

## Contributing

Contributions welcome! See [Contributing](CONTRIBUTING.md).

## Author

**John Biundo (Y Prospect on [Discord](https://discord.gg/G7Qnnhy))**

## License

Licensed under the MIT License - see the [LICENSE](LICENSE) file for details.
npm package: @shafkat/vue3-select
Description: A select2 component for vue3
Author: Md Shafkat Hussain Tanvir
Latest version: 1.0.0

# vue3-select

> A vue3 component to create a searchable select menu
## Getting Started

These instructions will help you to install the package on your local machine and create a server side pagination system in a minute.

## Installation

installation process is very simple:

```sh
$ cd VUE3PROJECT
$ npm i @shafkat/vue3-select
```

## Usage

### Import the component

```sh
$ import { Select } from "@shafkat/vue3-select";
$ import "@shafkat/vue3-select/style.css"
```

### Use the component

```sh
$ <Select :options="options" v-model="value"></Select>
```

## API

#### Props

| Name       | Type   | Default | Details                                                 |
|------------|--------|---------|---------------------------------------------------------|
| options    | Array  | []      | Required - A list of data to generate the options       |
| class-name | String | NULL    | Optional - Change the css design according to your need |

Example:

```tsx
<script setup>
    import { ref } from "vue";
    import { Select } from "@shafkat/vue3-select";
    import "@shafkat/vue3-select/style.css"
    let options = ref([
        {name: "Atlantic", value: "A"},
        {name: "Atlantica", value: "B"},
        {name: "Cat", value: "C"},
        {name: "Catarpillar", value: "D"},
        {name: "Elephant", value: "E"},
        {name: "Elephant nose", value: "F"}
    ]);
    let value = ref("C");
</script>
<template>
    <div class="col-md-6 offset-md-3">
        <form>
            <fieldset>
                <legend>Disabled fieldset example</legend>
                <div class="mb-3">
                    <label for="textInput" class="form-label">Input</label>
                    <input type="text" id="textInput" class="form-control" placeholder="Input">
                </div>
                <div class="mb-3">
                    <label for="select" class="form-label">Select menu</label>
                    <Select :options="options" v-model="value"></Select>
                </div>
                <button type="submit" class="btn btn-primary">Submit</button>
            </fieldset>
        </form>
    </div>
</template>
<style scoped>
</style>

```

> include bootstrap >= 5.0 for styling


## Contributing

Please read [CONTRIBUTING.md](CONTRIBUTING.md) for details on our code of conduct, and the process for submitting pull requests to us.

1.  Fork it!
2.  Create your feature branch: `git checkout -b my-new-feature`
3.  Add your changes: `git add .`
4.  Commit your changes: `git commit -am 'Add some feature'`
5.  Push to the branch: `git push origin my-new-feature`
6.  Submit a pull request :sunglasses:

## Versioning

We use [SemVer](http://semver.org/) for versioning. For the versions available, see the [tags on this repository](https://github.com/tanvir0604/vue3-select/tags).

## Authors

* **Md Shafkat Hussain Tanvir** - *Initial work* - [tanvir](https://github.com/tanvir0604)

See also the list of [contributors](https://github.com/tanvir0604/vue3-select/contributors) who participated in this project.
npm package: @shafnas/auth-security-lib
Description: A Node.js/TypeScript library for password security and account lockout policies.
Author: Mohamed Shafnas
Latest version: 1.0.1

# auth-security-lib

A lightweight Node.js/TypeScript library for **password security and account lockout management**.

It helps enforce:

- Password expiration policies
- Password history / reuse prevention
- Failed login attempt lockouts

---

## Installation

```bash
npm install @shafnas/auth-security-lib
```

or with Yarn:

```bash
yarn add @shafnas/auth-security-lib
```

# Features

Password Security

- Enforce password expiration (default: 90 days)

- Prevent reuse of last N passwords (default: 3)

- Stateless: library only checks/reports, consuming app handles DB updates

# Lockout Security

- Tracks failed login attempts

- Automatically locks account after configurable failures

- Supports automatic unlock after configurable duration

- Admin can manually unlock accounts

# Usage

# Importing

```
import { PasswordSecurity, LockoutSecurity, AuthUser } from "auth-security-lib";
```

# Sample User Data

```
const user: AuthUser = {
  password: "$2a$10$Gb/ueYzFSBTdHETGfqNcRez5Ao5bnL9QwXv94h.Gop.oLg6.gZ7a2",
  passwordChangedAt: new Date("2026-01-27T00:00:00.000Z"),
  passwordHistory: [
    "$2b$10$WkP9qEo6hR4uKfQzT2y7ve1LPbJ0rK6j4vXg8KRv2sS9Q8U2n6y8f",
    "$2b$10$hT7eL4pZr9G3eQwzK2y5ve1XsJ1LrD2j5vXf6KPv1rT7R9V1n4y7g"
  ],
  failedLoginAttempts: 0,
  lockUntil: null,
  email: "test@example.com", // additional fields are allowed
  role: "admin"
};
```

# Password Security Example

```
const newPassword = "admin123";

if (PasswordSecurity.isPasswordExpired(user)) {
  console.log("Password expired. User must reset password.");
}

const reused = await PasswordSecurity.isPasswordReused(newPassword, user.passwordHistory);

if (reused) {
  console.log("Cannot reuse previous passwords");
} else {
  console.log("Password is valid for use");
}
```

# Lockout Security Example

```
// Check if account is locked
if (LockoutSecurity.isAccountLocked(user)) {
  console.log("Account is currently locked");
}

// Register failed login attempt
LockoutSecurity.registerFailedAttempt(user);
console.log("Failed attempts:", user.failedLoginAttempts);

// Successful login
LockoutSecurity.registerSuccessfulLogin(user);

// Admin can unlock manually
LockoutSecurity.adminUnlock(user);
```

# Configuration

Default values:

```
{
  passwordExpiryDays: 90,
  passwordHistoryLimit: 3,
  maxFailedAttempts: 3,
  lockoutDurationMinutes: 30
}
```

# Override per instance:

```
import { SecurityConfig, LockoutSecurity, PasswordSecurity } from "auth-security-lib";

const config: SecurityConfig = {
  passwordExpiryDays: 60,
  passwordHistoryLimit: 5,
  maxFailedAttempts: 5,
  lockoutDurationMinutes: 15
};

const passwordSec = new PasswordSecurity(config);
const lockoutSec = new LockoutSecurity(config);
```
npm package: @shafnas/react-password-validator
Description: A reusable React password validator component with Tailwind and Lucide icons
Author: Your Name
Latest version: 1.0.9

# React Password Validator

A reusable **React password validator component** with **Tailwind CSS** and **Lucide icons**. Shows password validation rules and a strength indicator.

![npm](https://img.shields.io/npm/v/react-password-validator?color=blue)

---

## Features

- Validates passwords against:
  - 8–14 characters
  - At least one lowercase letter
  - At least one uppercase letter
  - At least one number
  - At least one symbol
- Password strength indicator: weak / medium / strong
- Customizable styling via Tailwind CSS className props
- Fully written in **TypeScript**
- Peer dependency: `react >=18`

---

## Installation

```bash
npm install @shafnas/react-password-validator lucide-react
```

or

```bash
yarn add @shafnas/react-password-validator lucide-react
```

```
import { useState } from "react";
import { PasswordValidator, usePasswordValidation } from "react-password-validator";

export default function App() {
  const [password, setPassword] = useState("");

  const validation = usePasswordValidation(password);

  const handleSubmit = () => {
    if (validation.valid) {
      alert("Password is valid!");
    } else {
      alert("Password is invalid!");
    }
  };

  return (
    <div className="max-w-md mx-auto p-4 space-y-4">
      <input
        type="password"
        placeholder="Enter password"
        className="border p-2 rounded w-full"
        onChange={(e) => setPassword(e.target.value)}
      />

      <PasswordValidator password={password} />

      <button
        className="px-4 py-2 bg-blue-600 text-white rounded"
        onClick={handleSubmit}
      >
        Submit
      </button>
    </div>
  );
}
```

| Prop                   | Type     | Default | Description                                |
| ---------------------- | -------- | ------- | ------------------------------------------ |
| `password`             | `string` | —       | The password to validate                   |
| `className`            | `string` | `""`    | Custom class for the container             |
| `itemClassName`        | `string` | `""`    | Custom class for each validation item      |
| `strengthBarClassName` | `string` | `""`    | Custom class for the password strength bar |

```
const validation = usePasswordValidation(password);

{
  length: boolean;
  lowercase: boolean;
  uppercase: boolean;
  number: boolean;
  symbol: boolean;
  valid: boolean; // true if all rules pass
}

```
npm package: @shaggytools/template-typescript-jest-jsdoc
Description: A starter template for getting started with Node, Typescript, Jest, and jsdoc. Includes prettier and eslintA package to verify and decode Vehicle Indentification Numbers (VIN), using the NHTSA.dot.gov public API.
Author: Brandon Eichler
Latest version: 1.0.1

# @shaggytools/template-typescript-jest-jsdoc

A starter template for getting started with Node, Typescript, Jest, and jsdoc. Includes prettier and eslint.
npm package: @shaggytools/vin-decoder
Description: A package to verify and decode Vehicle Indentification Numbers (VIN), using the NHTSA.dot.gov public API.
Author: Brandon Eichler
Latest version: 0.3.99

# @shaggytools/vin-decoder

A package to verify and decode Vehicle Indentification Numbers (VIN), using the NHTSA.dot.gov public API.
npm package: @shagital/adonisjs-acl
Description: Role & Permission support for Adonisjs
Author: Zacchaeus Bolaji
Latest version: 1.0.1

# AdonisJS ACL
![npm](https://img.shields.io/npm/dt/@shagital/adonisjs-acl?style=plastic)
![npm (scoped)](https://img.shields.io/npm/v/@shagital/adonisjs-acl)
![NPM](https://img.shields.io/npm/l/@shagital/adonisjs-acl)

Version [for **Adonis v5**]

This package allows you easily add role/permission based access to your [AdonisJS](https://adonisjs.com/) applications routes:

## Available Features
- Role based route authentication
- Permission based route authentication

## Requirements
- Adonisjs v5
- Node >=8
- Mysql >=5
- PostgreSQL >=10


## Dependencies
- Adonisjs5 [lucid(`@adonisjs/lucid`)](https://docs.adonisjs.com/guides/database/introduction)
- Adonisjs5 [auth(`@adonisjs/auth`)](https://docs.adonisjs.com/guides/auth/introduction)

## Installation

You can install the package via NPM:
``` bash
npm install @shagital/adonisjs-acl
```
Or with yarn
``` bash
yarn add @shagital/adonisjs-acl
```

## Setup
- Configure package with `node ace configure @shagital/adonisjs-acl`
- In `start/kernel.ts`, add the following to `Server.middleware.registerNamed`:
```
is: () => import('App/Middleware/Is'),
can: () => import('App/Middleware/Can'),
```
- Update `config/rolePermission.ts` to customize table names
- Run migration to create role and permission tables: `node ace migration:run`
## Usage
### Role Based Access
```
Route.get('/something-important', 'ImportantController.show').middleware('is:administrator')
```
#### Multiple Roles
```
Route.get('/something-important', 'ImportantController.show').middleware('is:administrator,superadmin')
```
### Permission Based Access
```
Route.get('/important', 'SomeController.show').middleware('can:view-important')
```
#### Multiple Roles
```
Route.get('/important', 'SomeController.show').middleware('can:view-important,read-important')
```
><span style="color:red">NB: User is granted access if they have one or more role/permission specified</span>

## Todo
- Add properties to models e.g `User.hasRole`, `User.hasPermission`, `role.hasPermission`, etc

## Contributing
If you have a feature you'd like to add, kindly send a Pull Request (PR)

## Security
If you discover any security related issues, please email [zacchaeus@shagital.com](mailto:zacchaeus@shagital.com) instead of using the issue tracker.

## Credits
- [Zacchaeus Bolaji](https://github.com/djunehor)
- [All Contributors](../../contributors)

## License
The MIT License (MIT). Please see [License File](LICENSE.md) for more information.
npm package: @shagital/adonisjs-card-validator
Description: Credit/Debit Card validator for Adonisjs
Author: Zacchaeus Bolaji
Latest version: 1.0.1

# Adonisjs Card Validator ▲
![npm](https://img.shields.io/npm/dt/@shagital/adonisjs-card-validator?style=plastic)
![npm (scoped)](https://img.shields.io/npm/v/@shagital/adonisjs-card-validator)
![NPM](https://img.shields.io/npm/l/@shagital/adonisjs-card-validator)

## Introduction
Adds credit/debit card validation functionality to [Adonisjs](https://github.com/adonisjs/core) using [Luhn algorithm](https://en.wikipedia.org/wiki/Luhn_algorithm)

### Step One - Install
#### Via Adonis CLI
`adonis install @shagital/adonisjs-card-validator`

#### Via npm/yarn
- Install package
```shell
// via npm
npm require @shagital/adonisjs-card-validator

// via yarn
yarn add @shagital/adonisjs-card-validator
```


### Step Two - Register Provider
Open `start/app.js` and add `@shagital/adonisjs-card-validator/providers/CreditCardValidationProvider` to the `providers` array

## Usage
You use the `card`, `cvv` and `cardExp` validation syntax just like you'd normally do validation in Adonisjs. Examples below:
NOTE: The specified card type need to be supported. Currency supported card types are:
- visaelectron
- maestro
- forbrugsforeningen
- dankort
- visa
- mastercard
- amex
- dinersclub
- discover
- unionpay
- jcb

### controller method
```js
//app/Controllers/Http/UserController

const { validate } = use('Validator')

class UserController {

  async store ({ request, session, response }) {
    const rules = {
      card: 'required|card', // validate card number
      cvv: 'required|cvv', // validate cvv2
      expiry_date: 'required|cardExp', // validate card expiry date in the format YYYY-MM
    }

    const validation = await validate(request.all(), rules)

    if (validation.fails()) {
      session
        .withErrors(validation.messages())
     
      return response.redirect('back')
    }

    return 'Validation passed'
  }
}
```

### Validator
```js
//app/Validators/StoreUser.js

'use strict'

class StoreUser {
  get rules () {
    return {
       card: 'required|card:mastercard', // validate mastercard card number
       cvv: 'required|cvv:mastercard', // validate mastercard cvv2
       expiry_date: 'required|cardExp', // validate card expiry date in the format YYYY-MM
    }
  }
}
```


## Contribution

Free for all, if you find an issue with the package or think of an improvement, please send in a PR.
npm package: @shagital/adonisjs-location
Description: Adonisjs (Nodejs) package that provides simple way to get Countries, Cities and States that you may need for your Application, most especially for dropdown menus.
Author: Zacchaeus Bolaji
Latest version: 1.0.4

# Adonisjs Location ▲
![npm](https://img.shields.io/npm/dt/@shagital/adonisjs-location?style=plastic)
![npm (scoped)](https://img.shields.io/npm/v/@shagital/adonisjs-location)
![NPM](https://img.shields.io/npm/l/@shagital/adonisjs-location)

## Introduction
This Package offers a simple way to get Countries, Cities and States that you may need for your Application, most especially for dropdown menus.

### Step One - Install  🎼
#### Via Adonis CLI
`adonis install @shagital/adonisjs-location`

#### Via npm/yarn
- Install package
```shell
// via npm
npm require @shagital/adonisjs-location

// via yarn
yarn add @shagital/adonisjs-location
```
- Run instructions
```
adonis run:instructions node_modules/@shagital/adonisjs-location
```


### Step Two - Update Configurations
`adonisjs-location` provides you with an easy way of customizing the tables used for storing Countries, States and Cities. Also, you can customise the route prefix. To customize these you need to update the 
configuration file `config/location.js` available for you to edit. The default configurations are:

```js

module.exports = {
    countries_table : 'countries',
    cities_table : 'cities',
    states_table : 'states',
    routes : {
        prefix : 'location'
    }
};
```

You can go ahead and customize the `table names`, and `route prefix` as you need before running the Migration.

### Step Three - Running Migrations

> before you do this make sure your correct Database credentials are set in the `.env` file

```shell
// if adonis CLI is installed globally
adonis migration:run

// using ace
node ace migration:run
```

Finally, run the Package seeders

```shell
adonis seed --files=database/seeds/1_CountrySeeder.js,database/seeds/2_StateSeeder.js,database/seeds/3_CitySeeder.js

// using ace
node ace seed --files=database/seeds/1_CountrySeeder.js,database/seeds/2_StateSeeder.js,database/seeds/3_CitySeeder.js
```

## Usage

>**NOTE**<br>
>The routes below are prefixed with `location` which is the default configuration set in the `config/location.js`
>file. If modified, replace the prefix in your route with the correct prefix. 

|Route|Description|
|:------------- | :----------: |
|`/location/countries`|return all countries|
|`/location/countries/{id}`|return a single country by its ID, with states|
|`/location/countries/{id}/states`|return all states by country ID|
|`/location/countries/{id}/cities`|return all cities by country ID|
|`/location/states/{id}/cities`|return all cities by state ID|

## Test
```shell
// via npm
npm run test

// via yarn
yarn test
```

## Contribution

Free for all, if you find an issue with the package or notice a missing country, state or city, please send in a PR.


## Credits
This package was influenced by [laravel-location](https://github.com/ichtrojan/laravel-location) package
npm package: @shagital/adonisjs-logger-papertrail
Description: Papertrail driver for Adonis Logger
Author: Zacchaeus Bolaji
Latest version: 1.0.2

# Adonis Logger Papertrail <img src="https://papertrailapp.com/favicon.ico" alt="Papertrail icon" width="25px" height="25px">
Version [for **Adonis v4**]

This service provider adds Papertrail as a driver to [Adonis Logger](https://adonisjs.com/docs/4.1/logger).

This repo is based from https://github.com/pirmax/adonis-logger-rollbar


## Usage
## Installation
- You can install the package via NPM:
`npm install @shagital/adonisjs-logger-papertrail`
- Or with yarn:
`yarn add @shagital/adonisjs-logger-papertrail`
- Or with adonis:
`adonis install @shagital/adonisjs-logger-papertrail`

### Registering provider

Make sure to register the provider inside `start/app.js` file.

```js
const providers = [
  '@shagital/adonisjs-logger-papertrail/providers/PapertrailProvider'
]
```

Add new configuration inside `logger` module in `config/app.js`:
```js
transport: 'papertrail'

papertrail: {
    name: Env.get('APP_NAME', 'adonis-app'),
    driver: 'papertrail',_
    host: Env.get('PAPERTRAIL_HOST'),
    port : Env.get('PAPERTRAIL_PORT'),
    level: 'info',
    appStart : false, // whether to create log when app is starting
    logEnv : false // should send env variables when logging
}
```

That's it! Now you can use Logger that will send data to Rollbar.

```js
const Logger = use('Logger')

Logger.info('Test message')
Logger.info('Test message', {user}) // to log extra details
Logger.transport('papertrail').info('this will log using the papertrail transport') // to specify the transport manually

```

### Env variables
- Papertrail details can be gotten from https://papertrailapp.com/account/destinations
`Papertrail` driver relies on the following Env variables:
- `PAPERTRAIL_HOST`
- `PAPERTRAIL_PORT`
npm package: @shagital/adonisjs-logger-quill
Description: Quill driver for Adonis Logger
Author: Zacchaeus Bolaji
Latest version: 1.0.1

# Adonis Logger Quill <img src="https://pbs.twimg.com/profile_images/1364222827201581059/_MwGJ_wl_400x400.png" alt="Quill icon" width="25px" height="25px">
![npm](https://img.shields.io/npm/dt/@shagital/adonisjs-logger-quill?style=plastic)
![npm (scoped)](https://img.shields.io/npm/v/@shagital/adonisjs-logger-quill)
![NPM](https://img.shields.io/npm/l/@shagital/adonisjs-logger-quill)

Version [for **Adonis v4**]

This service provider adds [Quill](https://docs.quill.chat/docs/specification) as a driver to [Adonis Logger](https://adonisjs.com/docs/4.1/logger).

This repo is based from https://github.com/pirmax/adonis-logger-rollbar


## Usage
## Installation
- You can install the package via NPM:
`npm install @shagital/adonisjs-logger-quill`
- Or with yarn:
`yarn add @shagital/adonisjs-logger-quill`
- Or with adonis:
`adonis install @shagital/adonisjs-logger-quill`

### Registering provider

Make sure to register the provider inside `start/app.js` file.

```js
const providers = [
  '@shagital/adonisjs-logger-quill/providers/QuillProvider'
]
```

Add new configuration inside `logger` module in `config/app.js`:
```js
transport: 'quill'

/*
      |--------------------------------------------------------------------------
     | Quill Transport
     |--------------------------------------------------------------------------
     |
     | Quill transport uses axios to send log data to quill channel
     |
     |
     |
     */
    quill: {
      name: Env.get('APP_NAME', 'adonis-app'),
      driver: 'quill',
      webhookUrl: Env.get('QUILL_WEBHOOK_URL'),
      level: 'info',
      appStart: false, // whether to create log when app is starting,
      logEnv: false // should send env variables
    }
```

That's it! Now you can use Logger that will send data to Rollbar.

```js
const Logger = use('Logger')

Logger.info('Test message')
Logger.info('Test message', {user}) // to log extra details
Logger.transport('quill').info('this will log using the quill transport') // to specify the transport manually

```

### Env variables

`Quill` driver relies on single Env variable: `QUILL_WEBHOOK_URL=`.
npm package: @shagital/adonisjs-logger-slack
Description: Slack driver for Adonis Logger
Author: Zacchaeus Bolaji
Latest version: 1.3.3

# Adonis Logger Slack <img src="https://cdn.iconscout.com/icon/free/png-256/slack-1425878-1205069.png" alt="Slack icon" width="25px" height="25px">
![npm](https://img.shields.io/npm/dt/@shagital/adonisjs-logger-slack?style=plastic)
![npm (scoped)](https://img.shields.io/npm/v/@shagital/adonisjs-logger-slack)
![NPM](https://img.shields.io/npm/l/@shagital/adonisjs-logger-slack)

Version [for **Adonis v4**]

This service provider adds [Slack](https://slack.com/integrations) as a driver to [Adonis Logger](https://adonisjs.com/docs/4.1/logger).

This repo is based from https://github.com/pirmax/adonis-logger-rollbar


## Usage
## Installation
- You can install the package via NPM:
`npm install @shagital/adonisjs-logger-slack`
- Or with yarn:
`yarn add @shagital/adonisjs-logger-slack`
- Or with adonis:
`adonis install @shagital/adonisjs-logger-slack`

### Registering provider

Make sure to register the provider inside `start/app.js` file.

```js
const providers = [
  '@shagital/adonisjs-logger-slack/providers/SlackProvider'
]
```

Add new configuration inside `logger` module in `config/app.js`:
```js
transport: 'slack'

slack: {
    name: Env.get('APP_NAME', 'adonis-app'),
    driver: 'slack',
    webhookUrl: Env.get('SLACK_WEBHOOK_URL'),
    level: 'info',
    appStart : false, // whether to create log when app is starting
    logEnv : false // should send env variables when logging
}
```

That's it! Now you can use Logger that will send data to Slack.

```js
const Logger = use('Logger')

Logger.info('Test message')
Logger.info('Test message', {user}) // to log extra details
Logger.transport('slack').info('this will log using the slack transport') // to specify the transport manually

```

### Env variables

`Slack` driver relies on single Env variable: `SLACK_WEBHOOK_URL=`.
npm package: @shagital/adonisjs-phone-validator
Description: Phone number validator for Adonisjs
Author: Zacchaeus Bolaji
Latest version: 1.0.2

# Adonisjs Phone Validator ▲
![npm](https://img.shields.io/npm/dt/@shagital/adonisjs-phone-validator?style=plastic)
![npm (scoped)](https://img.shields.io/npm/v/@shagital/adonisjs-phone-validator)
![NPM](https://img.shields.io/npm/l/@shagital/adonisjs-phone-validator)

## Introduction
Adds phone number validation functionality to [Adonisjs](https://github.com/adonisjs/core) on the [JS port](https://github.com/catamphetamine/libphonenumber-js) of Google's [libphonenumber](https://github.com/google/libphonenumber) API by [catamphetamine](https://github.com/catamphetamine)

### Step One - Install
#### Via Adonis CLI
`adonis install @shagital/adonisjs-phone-validator`

#### Via npm/yarn
- Install package
```shell
// via npm
npm require @shagital/adonisjs-phone-validator

// via yarn
yarn add @shagital/adonisjs-phone-validator
```


### Step Two - Register Provider
Open `start/app.js` and add `@shagital/adonisjs-phone-validator/providers/PhoneValidatorProvider` to the `providers` array

## Usage
You use the `phone` validation syntax just like you'd normally do validation in Adonisjs. Examples below:
NOTE: The country 2-character ISO code is required. You can find all supported codes [here](https://www.iban.com/country-codes)

### controller method
```js
//app/Controllers/Http/UserController

const { validate } = use('Validator')

class UserController {

  async store ({ request, session, response }) {
    const rules = {
      phone: 'required|phone:NG', // validate Nigerian phone number
    }

    const validation = await validate(request.all(), rules)

    if (validation.fails()) {
      session
        .withErrors(validation.messages())
     
      return response.redirect('back')
    }

    return 'Validation passed'
  }
}
```

### Validator
```js
//app/Validators/StoreUser.js

'use strict'

class StoreUser {
  get rules () {
    return {
      phone: 'required|phone:US', // validate a US phone number
    }
  }
}
```


## Contribution

Free for all, if you find an issue with the package or think of an improvement, please send in a PR.
npm package: @shagstrom/split-pane
Description: jQuery Split Pane plugin
Author: Simon Hagström
Latest version: 1.0.0

split-pane
==========

jQuery Split Pane plugin

The plugin should work in IE8 and above as well as in Chrome, Safari and Firefox.

You can download split-pane.js and split-pane.css manually to you project or you can install with npm:

    npm install split-pane

Split panes are initiated with

    $(selector).splitPane();

Split pane component min-height and min-width are supported, and the component size
can be set programmatically with

    $(selector).splitPane('firstComponentSize', 0);"

or

    $(selector).splitPane('lastComponentSize', 100);"

Only pixel values are supported.

Below is a basic example on how to use the plugin. Check out my [blog post](http://www.dreamchain.com/split-pane/) for some prettier examples.

You need to set up component widths and divider position using css, not as options to the JS splitPane function. The reason for this is that I like things to look good even **before** the JavaScript kicks in.

    <!DOCTYPE html>
    <html>
      <head>
    		<title>Basic Example</title>
    		<link rel="stylesheet" href="split-pane.css" />
    		<script src="http://code.jquery.com/jquery-1.9.1.js"></script>
    		<script src="split-pane.js"></script>
    		<style type="text/css">
    			html, body {
    				height: 100%;
    				min-height: 100%;
    				margin: 0;
    				padding: 0;
    			}
    			.split-pane-divider {
    				background: #aaa;
    			}
    			#left-component {
    				width: 20em;
    			}
    			#my-divider {
    				left: 20em; /* Same as left component width */
    				width: 5px;
    			}
    			#right-component {
    				left: 20em;  /* Same as left component width */
    				margin-left: 5px;  /* Same as divider width */
    			}
    		</style>
    		<script>
    			$(function() {
    				$('div.split-pane').splitPane();
    			});
    		</script>
    	</head>
    	<body>
    		<div class="split-pane fixed-left">
    			<div class="split-pane-component" id="left-component">
    				This is the left component
    			</div>
    			<div class="split-pane-divider" id="my-divider"></div>
    			<div class="split-pane-component" id="right-component">
    				This is the right component
                    <button onclick="$('div.split-pane').splitPane('firstComponentSize', 0);">Collapse first component</button>
    			</div>
    		</div>
    	</body>
    </html>
npm package: @shahab.rishehri/jalali-react-big-calendar
Description: Calendar! with events
Author: Mojtaba Zarei
Latest version: 1.0.21

# jalali-react-big-calendar

An jalali events calendar component built for React and made for modern browsers (read: IE10+) and uses flexbox over the classic tables-ception approach.

This only makes [react-big-calendar](http://intljusticemission.github.io/react-big-calendar/) use jalali calendar system by [jalali-moment](https://github.com/fingerpich/jalali-moment)

## Use and Setup

`npm install jalali-react-big-calendar --save`

Include `react-big-calendar/lib/css/react-big-calendar.css` for styles, and make sure your calendar's container
element has a height, or the calendar won't be visible.

### example

```
import BigCalendar from 'jalali-react-big-calendar'
<BigCalendar events={[]} />
```
npm package: @shahadpichen/docpush
Description: Self-hosted, Git-backed collaborative documentation platform
Author: DocPush Team
Latest version: 1.0.25

# DocPush

Self-hosted, Git-backed collaborative documentation platform.

## Features

- 📝 **Git-backed** - All docs stored in your GitHub repo
- 🔐 **Flexible Auth** - Public or OAuth with domain restriction
- ✏️ **Draft System** - Branch-based editing with approval workflow
- 💬 **Comments** - Collaborative review process
- ⚛️ **React Components** - Headless UI components for your app

## Quick Start

```bash
# Install
npm install @shahadpichen/docpush

# Initialize
npx @shahadpichen/docpush init

# Configure docs.config.js and .env

# Start
npx @shahadpichen/docpush start
```

## Configuration

Create `docs.config.js`:

```javascript
module.exports = {
  github: {
    owner: "your-username",
    repo: "your-repo",
    branch: "main",
    docsPath: "docs",
  },
  auth: {
    mode: "public",
    adminPassword: "your-admin-password",
  },
  admins: {
    emails: ["admin@example.com"],
  },
};
```

Create `.env`:

```
GITHUB_TOKEN=ghp_your_token
APP_URL=http://localhost:3000
SESSION_SECRET=your-secret
```

## Auth Modes

### Public Mode

Anyone can submit drafts, admin approves.

```javascript
auth: {
  mode: 'public',
  adminPassword: 'admin123',
}
```

### Domain-Restricted Mode

OAuth login (Google/GitHub) with email domain verification.

```javascript
auth: {
  mode: 'domain-restricted',
  providers: ['google'], // or ['github']
  allowedDomains: ['yourcompany.com'],
}
```

**Required env vars for domain-restricted:**

```
GOOGLE_CLIENT_ID=your_client_id
GOOGLE_CLIENT_SECRET=your_client_secret
```

## React Components

Import components for your own UI:

```tsx
import {
  DocPushProvider,
  DocsSidebar,
  MarkdownViewer,
  MarkdownEditor,
  useDocs,
  useDrafts,
} from "@shahadpichen/docpush/react";

function App() {
  return (
    <DocPushProvider config={{ apiUrl: "http://localhost:3000" }}>
      <DocsPage />
    </DocPushProvider>
  );
}
```

## Add Components (shadcn-style)

Copy components to your project for customization:

```bash
npx @shahadpichen/docpush add button input textarea
npx @shahadpichen/docpush add all
```

## API Endpoints

| Endpoint                       | Description        |
| ------------------------------ | ------------------ |
| `GET /api/docs/tree`           | Get docs file tree |
| `GET /api/docs/:path`          | Get doc content    |
| `GET /api/drafts`              | List drafts        |
| `POST /api/drafts`             | Create draft       |
| `POST /api/drafts/:id/approve` | Approve draft      |

## License

MIT
npm package: @shahanahmed86/create-server
Description: A CLI to bootstrap a server
Author: Shahan
Latest version: 1.0.22

# @shahanahmed86/create-server

## Prerequisites

- ### Resources
  - [Docker Engine](https://get.docker.com/ 'https://get.docker.com/')
  - [Docker Compose](https://docs.docker.com/engine/install/ubuntu/ 'https://docs.docker.com/engine/install/ubuntu/')
  - [NODE](https://nodejs.org/en/ 'https://nodejs.org/en/') or [NVM](https://gist.github.com/shahanahmed86/77616c67e0397a7ed2db89a4a71801d0#node-version-managers-using-nvm 'https://gist.github.com/shahanahmed86/77616c67e0397a7ed2db89a4a71801d0#node-version-managers-using-nvm')
- ### Knowledge
  - Restful
  - GraphQL with custom directives
  - Docker architecture
  - Container orchestration with docker-compose **_(at-least)_**
  - node/npm

## Implemented Feature

- User authentication APIs
- ESM (import/export)
- File Upload with express-fileupload
- API documentation with Swagger
- Pre-commit hook to check linting and coding format
- Chai & Mocha used to cover test cases for Unit-testing/APIs.

## Installation

```sh
# supported databases is mysql
@shahanahmed86/create-server
```

```sh

# flags
(--yes || -y) # to skip question and go with default options
(--install || -i) # to setup the server
```

```sh
# Logs: running docker logs
docker logs <container_name> (--follow || -f)
```
npm package: @shahanahmed86/my-stories
Description: The Storybook design system tutorial is a subset of the full Storybook design system, created as a learning resource for those interested in learning how to write and publish a design system using best in practice techniques.
Author: Shahan
Latest version: 0.1.0

# Storybook design system tutorial

The Storybook design system tutorial is a subset of the full [Storybook design system](https://github.com/storybookjs/design-system/), created as a learning resource for those interested in learning how to write and publish a design system using best in practice techniques.

Learn more in [Storybook tutorials](https://storybook.js.org/tutorials/).
npm package: @shahanahmed86/tiny
Description: Removes all spaces from a string
Latest version: 3.0.2

# @shahanahmed86/tiny

[![npm (scoped)](https://img.shields.io/npm/v/@shahanahmed86/tiny.svg)](https://www.npmjs.com/package/@shahanahmed86/tiny)
[![npm bundle size (minified)](https://img.shields.io/bundlephobia/min/@shahanahmed86/tiny.svg)](https://www.npmjs.com/package/@shahanahmed86/tiny)

Removes all spaces from a string.

## Install

```
$ npm install @shahanahmed86/tiny
```

## Usage

```js
const tiny = require("@shahanahmed86/tiny");
tiny("So much space!");
//=> "Somuchspace!"
tiny(1337);
//=> Uncaught TypeError: Tiny wants a string!
//    at tiny (<anonymous>:2:41)
//    at <anonymous>:1:1
```