open-index/open-npm huggingface dataset:
npm package: @nix6839/prettier-config
Description: Han Yeong-woo's extensible shared Prettier config
Author: Han Yeong-woo
Latest version: 2.2.0

# @nix6839/prettier-config

[![CI](https://github.com/nix6839/prettier-config/actions/workflows/ci.yml/badge.svg)](https://github.com/nix6839/prettier-config/actions/workflows/ci.yml)
[![NPM Version](https://img.shields.io/npm/v/@nix6839/prettier-config)](https://www.npmjs.com/package/@nix6839/prettier-config)

Han Yeong-woo's extensible shared Prettier config

## Usage

### 1. Install prettier and this package

```sh
npm i -D @nix6839/prettier-config prettier
```

### 2. Add `"@nix6839/prettier-config"` to your `.prettierrc`

## What is overridden

```js
{
	singleQuote: true, // You don't have to press Shift.
	useTabs: true, // Accessibility first
	experimentalTernaries: true, // See: https://prettier.io/blog/2023/11/13/curious-ternaries
}
```

For accessibility of `useTabs`, see the following [Reddit post](https://www.reddit.com/r/javascript/comments/c8drjo/nobody_talks_about_the_real_reason_to_use_tabs/).
npm package: @nixat/abacus
Description: Lightweight, type-safe number manipulation library for modern JavaScript
Author: Your Name
Latest version: 0.1.0

# @nixat/abacus

A lightweight utility library for number operations in JavaScript and TypeScript.

## Installation

```bash
npm install @nixat/abacus
# or
yarn add @nixat/abacus
# or
pnpm add @nixat/abacus
```

## Usage

```typescript
import { abacus } from '@nixat/abacus';

// Format a number with 2 decimal places
const formattedNumber = abacus.format(1234.5678, { decimals: 2 }); // "1,234.57"

// Calculate the average of an array of numbers
const avg = abacus.average([1, 2, 3, 4, 5]); // 3

// Check if a number is prime
const isPrime = abacus.isPrime(17); // true
```

## API

### Basic Operations

- `isNumber(value: unknown): boolean` - Checks if the provided value is a number
- `clamp(num: number, min: number, max: number): number` - Clamps a number between min and max values
- `round(num: number, decimals?: number): number` - Rounds a number to the specified number of decimal places
- `format(num: number, options?: object): string` - Formats a number with specified decimal and thousand separators

### Statistical Functions

- `sum(numbers: number[]): number` - Calculates the sum of an array of numbers
- `average(numbers: number[]): number` - Calculates the average of an array of numbers
- `median(numbers: number[]): number` - Calculates the median of an array of numbers
- `min(numbers: number[]): number` - Finds the minimum value in an array of numbers
- `max(numbers: number[]): number` - Finds the maximum value in an array of numbers

### Utility Functions

- `random(min: number, max: number, options?: object): number` - Generates a random number between min and max
- `convert(value: number, fromUnit: string, toUnit: string, conversionRates: object): number` - Converts a value from one unit to another
- `percentage(value: number, total: number): number` - Calculates the percentage of a value relative to a total
- `factorial(num: number): number` - Calculates the factorial of a number
- `isPrime(num: number): boolean` - Checks if a number is prime
- `gcd(a: number, b: number): number` - Calculates the greatest common divisor of two numbers
- `lcm(a: number, b: number): number` - Calculates the least common multiple of two numbers

## License

MIT
npm package: @nixat/chronos
Description: Lightweight, type-safe date manipulation library for modern JavaScript
Latest version: 0.1.2

# @nixat/chronos

[![npm version](https://img.shields.io/npm/v/@nixat/chronos.svg)](https://www.npmjs.com/package/@nixat/chronos)
[![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)

A lightweight, type-safe date manipulation library for modern JavaScript and TypeScript projects.

## Features

- 🚀 **Lightweight** - Zero dependencies, small bundle size
- 🔒 **Type-safe** - Written in TypeScript with comprehensive type definitions
- 📚 **Well documented** - Clear examples and API documentation
- ✅ **Well tested** - Comprehensive test suite with high coverage
- 🔧 **Tree-shakable** - Import only what you need
- 🌐 **Universal** - Works in Node.js and browsers

## Installation

```bash
# Using npm
npm install @nixat/chronos

# Using yarn
yarn add @nixat/chronos

# Using pnpm
pnpm add @nixat/chronos
```

## Usage

```typescript
import { parse, format, add, subtract, relative } from '@nixat/chronos';

// Parse dates from various formats
const date = parse('2023-04-15');
const timestamp = parse(1681516800000);

// Format dates
const formatted = format(date, 'YYYY-MM-DD'); // '2023-04-15'
const readable = format(date, 'MMMM D, YYYY'); // 'April 15, 2023'

// Add time to dates
const nextWeek = add(date, { days: 7 });
const nextYear = add(date, { years: 1 });

// Subtract time from dates
const lastWeek = subtract(date, { days: 7 });
const lastYear = subtract(date, { years: 1 });

// Get relative time
const relativeTime = relative(date); // e.g., '2 months ago'
```

## API

### Date Parsing and Validation

- **parse(input)** - Parses a date from various input formats
- **isValid(date)** - Checks if a date is valid
- **isBefore(date1, date2)** - Checks if date1 is before date2
- **isAfter(date1, date2)** - Checks if date1 is after date2

### Date Formatting

- **format(date, formatString, options)** - Formats a date according to the format string
- **relative(date, baseDate, options)** - Returns a string representing the relative time

### Date Manipulation

- **add(date, duration)** - Adds time to a date
- **subtract(date, duration)** - Subtracts time from a date
- **diff(date1, date2, unit)** - Gets the difference between two dates in the specified unit

## Format Tokens

| Token | Output |
|-------|--------|
| YYYY | 2023 |
| YY | 23 |
| MMMM | January |
| MMM | Jan |
| MM | 01 |
| M | 1 |
| DD | 01 |
| D | 1 |
| HH | 13 |
| H | 13 |
| hh | 01 |
| h | 1 |
| mm | 05 |
| m | 5 |
| ss | 09 |
| s | 9 |
| A | AM/PM |
| a | am/pm |

## Namespace

All functions are also available through the `chronos` namespace:

```typescript
import { chronos } from '@nixat/chronos';

const date = chronos.parse('2023-04-15');
const formatted = chronos.format(date, 'YYYY-MM-DD');
```

## License

MIT
npm package: @nixat/cipher
Description: String manipulation and encryption utilities
Latest version: 0.1.0

# @nixat/cipher

A lightweight utility library for string manipulation and encryption in JavaScript and TypeScript.

## Installation

```bash
npm install @nixat/cipher
# or
yarn add @nixat/cipher
# or
pnpm add @nixat/cipher
```

## Usage

```typescript
import { cipher } from '@nixat/cipher';

// Capitalize a string
const capitalized = cipher.capitalize('hello world'); // "Hello world"

// Convert to camelCase
const camelCased = cipher.camelCase('hello world'); // "helloWorld"

// Encrypt using Caesar cipher
const encrypted = cipher.caesarEncrypt('Hello', 3); // "Khoor"
const decrypted = cipher.caesarDecrypt('Khoor', 3); // "Hello"
```

## API

### String Validation

- `isString(value: unknown): boolean` - Checks if the provided value is a string

### String Manipulation

- `reverse(str: string): string` - Reverses a string
- `capitalize(str: string): string` - Capitalizes the first letter of a string
- `camelCase(str: string): string` - Converts a string to camelCase
- `snakeCase(str: string): string` - Converts a string to snake_case
- `truncate(str: string, length: number, ellipsis?: string): string` - Truncates a string to a specified length
- `pad(str: string, length: number, char?: string, padEnd?: boolean): string` - Pads a string to a specified length
- `countOccurrences(str: string, substring: string): number` - Counts the occurrences of a substring in a string

### Encryption

- `caesarEncrypt(str: string, shift: number): string` - Encrypts a string using a Caesar cipher
- `caesarDecrypt(str: string, shift: number): string` - Decrypts a string encrypted with a Caesar cipher
- `vigenereEncrypt(str: string, key: string): string` - Encrypts a string using a Vigenère cipher
- `vigenereDecrypt(str: string, key: string): string` - Decrypts a string encrypted with a Vigenère cipher
- `hashCode(str: string): number` - Generates a hash code for a string

### HTML Utilities

- `escapeHtml(str: string): string` - Escapes HTML special characters in a string
- `unescapeHtml(str: string): string` - Unescapes HTML special characters in a string

## License

MIT
npm package: @nixat/debounce
Description: A utility function to limit the rate at which a function can fire
Latest version: 1.0.1

# @nixat/debounce

A utility function to limit the rate at which a function can fire.

## Installation

```bash
# Using npm
npm install @nixat/debounce

# Using yarn
yarn add @nixat/debounce

# Using pnpm
pnpm add @nixat/debounce
```

## Usage

```typescript
import { debounce, throttle } from '@nixat/debounce';

// Basic debounce
function saveToDatabase(data) {
  // Expensive operation
  console.log('Saving data:', data);
}

// Create a debounced version that only executes after 300ms of inactivity
const debouncedSave = debounce(saveToDatabase, 300);

// Call it multiple times
debouncedSave({ id: 1 });
debouncedSave({ id: 2 });
debouncedSave({ id: 3 });
// Only the last call with { id: 3 } will be executed after 300ms

// With options
const debouncedSearch = debounce(searchFunction, 300, { 
  leading: true,  // Execute on the leading edge of the timeout
  trailing: true, // Execute on the trailing edge of the timeout
  maxWait: 1000   // Maximum time to wait before forced execution
});

// Cancel a pending invocation
debouncedSearch.cancel();

// Immediately invoke a pending function call
debouncedSearch.flush();

// Throttle - limit execution to at most once per 100ms
function handleScroll(event) {
  console.log('Scroll position:', window.scrollY);
}

const throttledScroll = throttle(handleScroll, 100);

// Attach to scroll event
window.addEventListener('scroll', throttledScroll);
```

## API

### debounce(func, wait, options)

Creates a debounced function that delays invoking the provided function until after `wait` milliseconds have elapsed since the last time it was invoked.

#### Parameters

- `func` - The function to debounce
- `wait` - The number of milliseconds to delay (default: 0)
- `options` - The options object
  - `leading` - If `true`, the function will be called on the leading edge of the timeout
  - `trailing` - If `true`, the function will be called on the trailing edge of the timeout (default: true)
  - `maxWait` - Maximum time the function is allowed to be delayed before it's invoked

#### Returns

A debounced function that can be canceled or flushed.

### throttle(func, wait, options)

Creates a throttled function that only invokes the provided function at most once per every `wait` milliseconds.

#### Parameters

- `func` - The function to throttle
- `wait` - The number of milliseconds to throttle invocations to (default: 0)
- `options` - The options object
  - `leading` - If `true`, the function will be called on the leading edge of the timeout (default: true)
  - `trailing` - If `true`, the function will be called on the trailing edge of the timeout (default: true)

#### Returns

A throttled function that can be canceled or flushed.

## License

MIT
npm package: @nixat/filter
Description: A utility function to filter collections with enhanced predicate support
Latest version: 0.1.1

# @nixat/filter

A utility function to filter collections with enhanced predicate support.

## Installation

```bash
# Using npm
npm install @nixat/filter

# Using yarn
yarn add @nixat/filter

# Using pnpm
pnpm add @nixat/filter
```

## Usage

```typescript
import { filter, filterDeep } from '@nixat/filter';

const users = [
  { id: 1, name: 'John', active: true, age: 30 },
  { id: 2, name: 'Jane', active: false, age: 25 },
  { id: 3, name: 'Bob', active: true, age: 40 }
];

// Using a predicate function
filter(users, user => user.age > 25);
// => [{ id: 1, name: 'John', active: true, age: 30 }, { id: 3, name: 'Bob', active: true, age: 40 }]

// Using a property matcher object
filter(users, { active: true });
// => [{ id: 1, name: 'John', active: true, age: 30 }, { id: 3, name: 'Bob', active: true, age: 40 }]

// Using a property path and value
filter(users, 'active', true);
// => [{ id: 1, name: 'John', active: true, age: 30 }, { id: 3, name: 'Bob', active: true, age: 40 }]

// Working with nested objects
const nestedUsers = [
  { id: 1, profile: { name: 'John', active: true } },
  { id: 2, profile: { name: 'Jane', active: false } },
  { id: 3, profile: { name: 'Bob', active: true } }
];

// Using dot notation
filterDeep(nestedUsers, 'profile.active', true);
// => [{ id: 1, profile: { name: 'John', active: true } }, { id: 3, profile: { name: 'Bob', active: true } }]

// Using array path
filterDeep(nestedUsers, ['profile', 'name'], 'Jane');
// => [{ id: 2, profile: { name: 'Jane', active: false } }]
```

## API

### filter(collection, predicate)

Filters a collection based on a predicate function, property matcher, or property-value pairs.

#### Parameters

- `collection` - The array to filter
- `predicate` - A function, property matcher object, or property path
- `value` - Optional value to compare against if predicate is a property path

#### Returns

A new filtered array.

### filterDeep(collection, path, value)

Filters a collection based on a deep property path and value.

#### Parameters

- `collection` - The array to filter
- `path` - The property path (dot notation or array)
- `value` - The value to compare against

#### Returns

A new filtered array.

## License

MIT
npm package: @nixat/get
Description: A utility function to safely get nested object properties
Latest version: 0.1.1

# @nixat/get

A utility function to safely get nested object properties.

## Installation

```bash
# Using npm
npm install @nixat/get

# Using yarn
yarn add @nixat/get

# Using pnpm
pnpm add @nixat/get
```

## Usage

```typescript
import { get } from '@nixat/get';

// Basic usage
const obj = { a: { b: { c: 42 } } };
get(obj, 'a.b.c'); // => 42

// With default value
get(obj, 'a.b.d', 'default'); // => 'default'

// Using array path
get(obj, ['a', 'b', 'c']); // => 42

// Handling null/undefined
get(null, 'a.b.c', 'default'); // => 'default'
get(undefined, 'a.b.c', 'default'); // => 'default'

// Handling arrays
const arr = { users: [{ name: 'John' }, { name: 'Jane' }] };
get(arr, 'users.0.name'); // => 'John'
get(arr, ['users', 1, 'name']); // => 'Jane'
```

## API

### get(obj, path, defaultValue?)

Safely gets a value from a nested object using a path string or array.

#### Parameters

- `obj` - The object to query
- `path` - The path to get the property from, can be a dot-notation string or array of keys
- `defaultValue` - The value to return if the path doesn't exist

#### Returns

The value at the path or the default value.

## License

MIT
npm package: @nixat/nexus
Description: Lightweight, type-safe object manipulation library for modern JavaScript
Latest version: 0.1.1

# @nixat/nexus

[![npm version](https://img.shields.io/npm/v/@nixat/nexus.svg)](https://www.npmjs.com/package/@nixat/nexus)
[![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)

A lightweight, type-safe object manipulation library for modern JavaScript and TypeScript projects.

## Features

- 🚀 **Lightweight** - Zero dependencies, small bundle size
- 🔒 **Type-safe** - Written in TypeScript with comprehensive type definitions
- 📚 **Well documented** - Clear examples and API documentation
- ✅ **Well tested** - Comprehensive test suite with high coverage
- 🔧 **Tree-shakable** - Import only what you need
- 🌐 **Universal** - Works in Node.js and browsers

## Installation

```bash
# Using npm
npm install @nixat/nexus

# Using yarn
yarn add @nixat/nexus

# Using pnpm
pnpm add @nixat/nexus
```

## Usage

```typescript
import { get, set, has, clone, merge } from '@nixat/nexus';

// Get a nested property safely
const user = { profile: { name: 'John', address: { city: 'New York' } } };
const city = get(user, 'profile.address.city'); // 'New York'
const country = get(user, 'profile.address.country', 'USA'); // 'USA' (default value)

// Set a nested property safely
set(user, 'profile.address.zipCode', '10001');
// user is now { profile: { name: 'John', address: { city: 'New York', zipCode: '10001' } } }

// Check if a property exists
const hasCity = has(user, 'profile.address.city'); // true
const hasCountry = has(user, 'profile.address.country'); // false

// Clone an object
const userCopy = clone(user);

// Merge objects
const defaults = { theme: 'light', notifications: true };
const userSettings = { theme: 'dark' };
const settings = merge(defaults, userSettings);
// settings is { theme: 'dark', notifications: true }
```

## API

### Object Access

- **get(obj, path, defaultValue)** - Gets the value at path of object
- **set(obj, path, value)** - Sets the value at path of object
- **has(obj, path)** - Checks if path is a direct property of object

### Object Manipulation

- **clone(value)** - Creates a deep clone of value
- **merge(...objects)** - Recursively merges objects
- **pick(obj, paths)** - Creates an object with picked object properties
- **omit(obj, paths)** - Creates an object without specified properties

### Object Transformation

- **mapKeys(obj, mapper)** - Creates an object with the same values and mapped keys
- **mapValues(obj, mapper)** - Creates an object with the same keys and mapped values

## Namespace

All functions are also available through the `nexus` namespace:

```typescript
import { nexus } from '@nixat/nexus';

const value = nexus.get(obj, 'path.to.prop');
nexus.set(obj, 'path.to.prop', 'value');
```

## License

MIT
npm package: @nixat/pluck
Description: A utility function to extract a property from each item in a collection
Latest version: 0.1.1

# @nixat/pluck

A utility function to extract a property from each item in a collection.

## Installation

```bash
# Using npm
npm install @nixat/pluck

# Using yarn
yarn add @nixat/pluck

# Using pnpm
pnpm add @nixat/pluck
```

## Usage

```typescript
import { pluck, pluckDeep } from '@nixat/pluck';

// Basic usage
const users = [
  { id: 1, name: 'John' },
  { id: 2, name: 'Jane' },
  { id: 3, name: 'Bob' }
];

pluck(users, 'name'); // => ['John', 'Jane', 'Bob']
pluck(users, 'id'); // => [1, 2, 3]

// Working with nested objects
const nestedUsers = [
  { id: 1, profile: { name: 'John', age: 30 } },
  { id: 2, profile: { name: 'Jane', age: 25 } },
  { id: 3, profile: { name: 'Bob', age: 40 } }
];

// Using dot notation
pluckDeep(nestedUsers, 'profile.name'); // => ['John', 'Jane', 'Bob']
pluckDeep(nestedUsers, 'profile.age'); // => [30, 25, 40]

// Using array path
pluckDeep(nestedUsers, ['profile', 'name']); // => ['John', 'Jane', 'Bob']
```

## API

### pluck(collection, key)

Extracts a property value from each item in a collection.

#### Parameters

- `collection` - The array of objects to extract from
- `key` - The property key to extract

#### Returns

An array of the extracted values.

### pluckDeep(collection, path)

Extracts a nested property value from each item in a collection using a path.

#### Parameters

- `collection` - The array of objects to extract from
- `path` - The property path to extract (dot notation or array)

#### Returns

An array of the extracted values.

## License

MIT
npm package: @nixat/set
Description: A utility function to safely set nested object properties
Latest version: 0.1.1

# @nixat/set

A utility function to safely set nested object properties.

## Installation

```bash
# Using npm
npm install @nixat/set

# Using yarn
yarn add @nixat/set

# Using pnpm
pnpm add @nixat/set
```

## Usage

```typescript
import { set } from '@nixat/set';

// Basic usage
const obj = { a: { b: { c: 1 } } };
set(obj, 'a.b.c', 2); // => { a: { b: { c: 2 } } }

// Setting new properties
set(obj, 'a.b.d', 3); // => { a: { b: { c: 2, d: 3 } } }

// Using array path
set(obj, ['a', 'b', 'e'], 4); // => { a: { b: { c: 2, d: 3, e: 4 } } }

// Creating nested objects
set({}, 'a.b.c', 42); // => { a: { b: { c: 42 } } }

// Working with arrays
const users = { users: [] };
set(users, 'users.0', { name: 'John' }); // => { users: [{ name: 'John' }] }
set(users, 'users.1.name', 'Jane'); // => { users: [{ name: 'John' }, { name: 'Jane' }] }
```

## API

### set(obj, path, value)

Sets a value at a given path in an object.

#### Parameters

- `obj` - The object to modify
- `path` - The path to set the property at, can be a dot-notation string or array of keys
- `value` - The value to set

#### Returns

The modified object.

## License

MIT
npm package: @nixat/vector
Description: Lightweight, type-safe array manipulation library for modern JavaScript
Author: Your Name
Latest version: 0.1.0

# @nixat/vector

[![npm version](https://img.shields.io/npm/v/@nixat/vector.svg)](https://www.npmjs.com/package/@nixat/vector)
[![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)

A lightweight, type-safe array manipulation library for modern JavaScript and TypeScript projects.

## Features

- 🚀 **Lightweight** - Zero dependencies, small bundle size
- 🔒 **Type-safe** - Written in TypeScript with comprehensive type definitions
- 📚 **Well documented** - Clear examples and API documentation
- ✅ **Well tested** - Comprehensive test suite with high coverage
- 🔧 **Tree-shakable** - Import only what you need
- 🌐 **Universal** - Works in Node.js and browsers

## Installation

```bash
# Using npm
npm install @nixat/vector

# Using yarn
yarn add @nixat/vector

# Using pnpm
pnpm add @nixat/vector
```

## Usage

```typescript
import { unique, flatten, chunk } from '@nixat/vector';

// Remove duplicates from an array
const uniqueArray = unique([1, 2, 2, 3, 3, 3]);
// => [1, 2, 3]

// Flatten nested arrays
const flatArray = flatten([1, [2, [3, 4]]]);
// => [1, 2, 3, 4]

// Split array into chunks
const chunks = chunk([1, 2, 3, 4, 5, 6, 7], 3);
// => [[1, 2, 3], [4, 5, 6], [7]]
```

## API

### Array Checking

- **isArray(value)** - Checks if the provided value is an array

### Array Transformation

- **flatten(arr, depth)** - Flattens nested arrays up to the specified depth
- **unique(arr)** - Removes duplicate elements from an array
- **filter(arr, predicate)** - Filters elements based on a predicate function
- **map(arr, mapper)** - Transforms elements using a mapper function
- **reduce(arr, reducer, initialValue)** - Reduces array to a single value
- **concat(...arrays)** - Joins multiple arrays into a single array
- **sort(arr, compareFn)** - Sorts elements according to a compare function
- **slice(arr, start, end)** - Extracts a section of an array
- **chunk(arr, size)** - Splits array into chunks of specified size
- **without(arr, ...values)** - Creates array excluding specified values
- **shuffle(arr)** - Randomizes the order of elements

### Array Comparison

- **every(arr, predicate)** - Checks if all elements pass a test
- **some(arr, predicate)** - Checks if any element passes a test
- **intersection(arr1, arr2)** - Finds elements common to both arrays
- **difference(arr1, arr2)** - Finds elements in first array not in second
- **symmetricDifference(arr1, arr2)** - Finds elements in either array but not both

### Array Organization

- **groupBy(arr, grouper)** - Groups elements by a key function

## Namespace

All functions are also available through the `vector` namespace:

```typescript
import { vector } from '@nixat/vector';

const uniqueArray = vector.unique([1, 2, 2, 3]);
const chunks = vector.chunk([1, 2, 3, 4, 5], 2);
```

## License

MIT
npm package: @nixdev/login-module
Description: # NPM: @nixdev/login-module
Latest version: 0.0.0

# LoginAngularModule

# NPM: @nixdev/login-module

This project was generated with [Angular CLI](https://github.com/angular/angular-cli) version 1.6.6.

## Development server

Run `ng serve` for a dev server. Navigate to `http://localhost:4200/`. The app will automatically reload if you change any of the source files.

## Code scaffolding

Run `ng generate component component-name` to generate a new component. You can also use `ng generate directive|pipe|service|class|guard|interface|enum|module`.

## Build

Run `ng build` to build the project. The build artifacts will be stored in the `dist/` directory. Use the `-prod` flag for a production build.
Or user `npm run build`

## Pack to library

Run `ng-packagr -p ng-package.json` to build the project. The build artifacts will be stored in the `dist/` directory
Or use `npm run pack`

## Running unit tests

Run `ng test` to execute the unit tests via [Karma](https://karma-runner.github.io).

## Running end-to-end tests

Run `ng e2e` to execute the end-to-end tests via [Protractor](http://www.protractortest.org/).

## Further help

To get more help on the Angular CLI use `ng help` or go check out the [Angular CLI README](https://github.com/angular/angular-cli/blob/master/README.md).
npm package: @nixdev/user-management
Description: This project was generated with [Angular CLI](https://github.com/angular/angular-cli) version 1.6.7.
Latest version: 0.0.2

# Nixdev User-management

This project was generated with [Angular CLI](https://github.com/angular/angular-cli) version 1.6.7.

## Development server

Run `ng serve` for a dev server. Navigate to `http://localhost:4200/`. The app will automatically reload if you change any of the source files.

## Code scaffolding

Run `ng generate component component-name` to generate a new component. You can also use `ng generate directive|pipe|service|class|guard|interface|enum|module`.

## Build

Run `ng build` to build the project. The build artifacts will be stored in the `dist/` directory. Use the `-prod` flag for a production build.

## Running unit tests

Run `ng test` to execute the unit tests via [Karma](https://karma-runner.github.io).

## Running end-to-end tests

Run `ng e2e` to execute the end-to-end tests via [Protractor](http://www.protractortest.org/).

## Further help

To get more help on the Angular CLI use `ng help` or go check out the [Angular CLI README](https://github.com/angular/angular-cli/blob/master/README.md).
npm package: @nixiangyu/router-sdk
Description: An sdk for routing swaps using Uniswap v2 and Uniswap v3.
Latest version: 1.0.6

# Alpha software

The latest version of the SDK is used in production in the Uniswap Interface,
but it is considered Alpha software and may contain bugs or change significantly between patch versions.
If you have questions about how to use the SDK, please reach out in the `#dev-chat` channel of the Discord.
Pull requests welcome!

# Uniswap Swap Router SDK

This SDK is meant to facilitate interactions with the contracts in [swap-router-contracts](https://github.com/Uniswap/swap-router-contracts).
npm package: @nixiangyu/sdk-core
Description: ⚒️ An SDK for building applications on top of Uniswap V3
Latest version: 3.0.4

# Uniswap SDK Core

[![Unit Tests](https://github.com/Uniswap/uniswap-sdk-core/workflows/Unit%20Tests/badge.svg)](https://github.com/Uniswap/uniswap-sdk-core/actions?query=workflow%3A%22Unit+Tests%22)
[![Lint](https://github.com/Uniswap/uniswap-sdk-core/workflows/Lint/badge.svg)](https://github.com/Uniswap/uniswap-sdk-core/actions?query=workflow%3ALint)
[![npm version](https://img.shields.io/npm/v/@uniswap/sdk-core/latest.svg)](https://www.npmjs.com/package/@uniswap/sdk-core/v/latest)
[![npm bundle size (scoped version)](https://img.shields.io/bundlephobia/minzip/@uniswap/sdk-core/latest.svg)](https://bundlephobia.com/result?p=@uniswap/sdk-core@latest)

This code is shared across Uniswap TypeScript SDKs.
npm package: @nixiangyu/v2-sdk
Description: 🛠 An SDK for building applications on top of Uniswap V2
Latest version: 3.0.2

# Uniswap V2 SDK

[![Unit Tests](https://github.com/Uniswap/uniswap-v2-sdk/workflows/Unit%20Tests/badge.svg)](https://github.com/Uniswap/uniswap-v2-sdk/actions?query=workflow%3A%22Unit+Tests%22)
[![Lint](https://github.com/Uniswap/uniswap-v2-sdk/workflows/Lint/badge.svg)](https://github.com/Uniswap/uniswap-v2-sdk/actions?query=workflow%3ALint)
[![code style: prettier](https://img.shields.io/badge/code_style-prettier-ff69b4.svg?style=flat-square)](https://github.com/prettier/prettier)
[![npm version](https://img.shields.io/npm/v/@uniswap/v2-sdk/latest.svg)](https://www.npmjs.com/package/@uniswap/v2-sdk/v/latest)
[![npm bundle size (scoped version)](https://img.shields.io/bundlephobia/minzip/@uniswap/v2-sdk/latest.svg)](https://bundlephobia.com/result?p=@uniswap/v2-sdk@latest)

In-depth documentation on this SDK is available at [uniswap.org](https://uniswap.org/docs/v2/SDK/getting-started/).
npm package: @nixiangyu/v3-sdk
Description: ⚒️ An SDK for building applications on top of Uniswap V3
Latest version: 4.0.7

# Alpha software

The latest version of the SDK is used in production in the Uniswap Interface,
but it is considered Alpha software and may contain bugs or change significantly between patch versions.
If you have questions about how to use the SDK, please reach out in the `#dev-chat` channel of the Discord.
Pull requests welcome!

# Uniswap V3 SDK

[![Unit Tests](https://github.com/Uniswap/uniswap-v3-sdk/workflows/Unit%20Tests/badge.svg)](https://github.com/Uniswap/uniswap-v3-sdk/actions?query=workflow%3A%22Unit+Tests%22)
[![Lint](https://github.com/Uniswap/uniswap-v3-sdk/workflows/Lint/badge.svg)](https://github.com/Uniswap/uniswap-v3-sdk/actions?query=workflow%3ALint)
[![npm version](https://img.shields.io/npm/v/@uniswap/v3-sdk/latest.svg)](https://www.npmjs.com/package/@uniswap/v3-sdk/v/latest)
[![npm bundle size (scoped version)](https://img.shields.io/bundlephobia/minzip/@uniswap/v3-sdk/latest.svg)](https://bundlephobia.com/result?p=@uniswap/v3-sdk@latest)

In-depth documentation on this SDK is available at [uniswap.org](https://docs.uniswap.org/).
npm package: @nixiangyu/v3-sdk-1
Description: ⚒️ An SDK for building applications on top of Uniswap V3
Latest version: 4.0.4

# Alpha software

The latest version of the SDK is used in production in the Uniswap Interface,
but it is considered Alpha software and may contain bugs or change significantly between patch versions.
If you have questions about how to use the SDK, please reach out in the `#dev-chat` channel of the Discord.
Pull requests welcome!

# Uniswap V3 SDK

[![Unit Tests](https://github.com/Uniswap/uniswap-v3-sdk/workflows/Unit%20Tests/badge.svg)](https://github.com/Uniswap/uniswap-v3-sdk/actions?query=workflow%3A%22Unit+Tests%22)
[![Lint](https://github.com/Uniswap/uniswap-v3-sdk/workflows/Lint/badge.svg)](https://github.com/Uniswap/uniswap-v3-sdk/actions?query=workflow%3ALint)
[![npm version](https://img.shields.io/npm/v/@uniswap/v3-sdk/latest.svg)](https://www.npmjs.com/package/@uniswap/v3-sdk/v/latest)
[![npm bundle size (scoped version)](https://img.shields.io/bundlephobia/minzip/@uniswap/v3-sdk/latest.svg)](https://bundlephobia.com/result?p=@uniswap/v3-sdk@latest)

In-depth documentation on this SDK is available at [uniswap.org](https://docs.uniswap.org/).
npm package: @nixilla/ngx-cookie-plugin
Description: Angular plugin which provides basic cookie bar and cookie policy page for projects.
Latest version: 1.0.1

# Cookie Plugin for Angular projects

Angular plugin which provides basic cookie bar and cookie policy page for projects.

Provides:
* Cookie bar to display the notification about cookies being used
* Cookie consent form which saves the choice to `cookie-consent` cookie
* Optional cookie `PolicyPageComponent` which can be used to hook up to angular routing.

# Installation

`npm i -S @nixilla/ngx-cookie-plugin`

Then in your `app.component.html` above `<router-outlet></router-outlet>` add:

```xml
<ngx-cookie-bar></ngx-cookie-bar>
<router-outlet></router-outlet>
```

# Configuration

Configure in `app.module.ts` with:

```ts
imports: [
  NgxCookiePluginModule.forRoot({
    cookiePolicyRoute: '/cookie-policy',
    showAcceptBtn: true,
    showRejectBtn: false,
    showLearnMoreBtn: true
  })
]
```

and make sure the `/cookie-policy` page is available in `app-routing.module.ts`: 

```ts
import { PolicyPageComponent } from "ngx-cookie-plugin"; // you don't have to use this component

const routes: Routes = [
  { path: 'cookie-policy', component: PolicyPageComponent }
];
```
npm package: @nixjs23n6/aptos-block-tracker
Description: A JS module for keeping track of the latest Aptos block
Author: nghinv
Latest version: 1.2.0
Deprecated: Package no longer supported. Contact Support at https://www.npmjs.com/support for more info.

# @nixjs23n6/aptos-block-tracker

Assets

## Install

`yarn add @nixjs23n6/aptos-block-tracker`

## Usage

```typescript
import { PollingBlockTracker } from '@nixjs23n6/aptos-block-tracker';

const blockTracker = new PollingBlockTracker({
    address: '0xb1ab189ee69f9c4f7e99d3b3595aed20670098367c18d5a65234ce97596feb4e',
    nodeURL: 'https://indexer-testnet.staging.gcp.aptosdev.com/v1/graphql',
})

blockTracker.on('sync', ({ newBlock, oldBlock }) => {
    if (oldBlock) {
        console.log(`sync #${Number(oldBlock)} -> #${Number(newBlock)}`)
    } else {
        console.log(`first sync #${Number(newBlock)}`)
    }
})
```
npm package: @nixjs23n6/aptos-wallet-icon
Description: A tiny object utility
Author: nghinv
Latest version: 0.0.2

# @nixjs23n6/objectify

A tiny object utility.

## Quick Setup

### Install

`yarn add @nixjs23n6/objectify`

### Usage

#### Rename keys

```typescript
const obj = { id: 'toto_id', name: 'toto', age: 35 }
const keys = { id: 'value', name: 'label' }

renameKeys(keys, obj)
// { "value": "toto_id", "label": "toto", "age": 35 } 
```

#### Merge

```typescript
const obj1 = {
  a: null,
  b: false,
  c: true
};
const obj2 = {
  k: "demo"
};

merge(obj1, obj2);
// { a:null, b: false, c: true, k: "demo" }
```

#### Omit

```typescript
const obj = {
  a: null,
  b: false,
  c: true
};

omit(obj, ['a','b']);
// { c: true }
```

#### Pick

```typescript
const obj = {
  a: null,
  b: false,
  c: true
};

pick(obj, ['a','b']);
// { a: null, b: false }
```

#### Compact

```typescript
const obj = {
  a: null,
  b: false,
  c: true,
  d: 0,
  e: 1,
  f: '',
  g: 'a',
  h: [null, false, '', true, 1, 'a'],
  i: { j: 0, k: false, l: 'a' }
};

compact(obj);
// { c: true, e: 1, g: 'a', h: [ true, 1, 'a' ], i: { l: 'a' } }
```
npm package: @nixjs23n6/axios-client
Description: A small wrapper for integrating Axios to Typescript.
Author: nghinv
Latest version: 1.0.7

# @nixjs23n6/axios-client

A small wrapper for integrating Axios to Typescript

## Quick Setup

### Install

Install these dependencies:

`yarn add @nixjs23n6/axios-client`

### Setup & Usage

```javascript
import { HttpClient, Types } from '@nixjs23n6/axios-client'

class Client extends HttpClient {
    /**
    * The Singleton's constructor should always be private to prevent direct
    * construction calls with the `new` operator.
    */
    private constructor(args: Types.HttpClientArgs) {
        super(args)
    }

    /**
    * The static method that controls the access to the singleton instance.
    *
    * This implementation let you subclass the Singleton class while keeping
    * just one instance of each subclass around.
    */
    public static get instance(): HttpClient {
        if (HttpClient._instance) {
            return this._instance
        }
        this._instance = new HttpClient({
            baseURL: "https://api.example.nixjs"
        })
        if (this._instance && this._instance.client) {
            // Config interceptors
            this._instance.client.interceptors.request.use(
                (config) => config,
                (error) => {
                    return Promise.resolve(error)
                }
            )
            this._instance.client.interceptors.response.use(
                (response) => {
                    // Return a successful response back to the calling service
                    return response
                },
                (error) => {
                    const { response } = error

                    return Promise.resolve(response)
                }
            )
        }
        return this._instance
    }

}


const client = Client.instance;

client.fetch<any>('/login', 'POST', { username: "nghinv", password: 'Abc1@34' }).then(console.log)

```
npm package: @nixjs23n6/backoff-typescript
Description: A small library which handles decaying constant/linear/exponential backOff.
Author: nghinv
Latest version: 0.0.1

# @nixjs23n6/backoff-typescript

A small library which handles decaying constant/linear/exponential backOff

## Quick Setup

### ConstantBackoff

The ConstantBackoff will make the websocket wait a constant time between each connection retry. To use the Constant Backoff with a wait-time of 1 second:

```typescript
const backoff  = new ConstantBackoff(1000)
setTimeout(() => {
    // todo something
}, backoff)
```

### LinearBackoff

The LinearBackoff linearly increases the wait-time between connection-retries until an optional maximum is reached. To use the LinearBackoff to initially wait 0 seconds and increase the wait-time by 2 second with every retry until a maximum of 12 seconds is reached:

```typescript
const backoff  = new LinearBackoff(0, 2000, 12000)
setTimeout(() => {
    // todo something
}, backoff)
```

### ExponentialBackoff

The ExponentialBackoff doubles the backoff with every retry until a maximum is reached. This is modelled after the binary exponential-backoff algorithm used in computer-networking. To use the ExponentialBackoff that will produce the series [100, 200, 400, 800, 1600, 3200, 6400]:

```typescript
const backoff  = new ExponentialBackoff(100, 7)
setTimeout(() => {
    // todo something
}, backoff)
```

## Examples

### Redux-saga

```typescript
import { LinearBackOff, BaseBackOff } from '@nixjs23n6/backoff-typescript'

function* pollPriceSaga(backOff: BaseBackOff) {
    while (true) {
        try {
            const time = backOff.next()
            if (time === 15000) {
                backOff.reset()
            }

            const result = yield call(FETCH_PRICE)
            yield put(onFetchPriceSuccess(result))
            if (time > 0) yield delay(time)
            yield delay(time)
        } catch (err) {
            yield put(onFetchPriceFailure(err))
        }
    }
}

function* watchPriceSaga() {
    while (true) {
        yield take(coingeckoSlice.onStartFetchPrice)

        const backOff = new LinearBackOff(0, 10000, 15000)
        yield race({
            task: call(pollPriceSaga, backOff),
            cancel: take(coingeckoSlice.onStopFetchPrice)
        })
    }
}
```
npm package: @nixjs23n6/block-tracker
Description: A JS module for keeping track of the latest Aptos/SUI/EVM Base block
Author: nghinv
Latest version: 2.2.14-alpha.0

# @nixjs23n6/aptos-block-tracker

Assets

## Install

`yarn add @nixjs23n6/aptos-block-tracker`

## Usage

### Aptos

```typescript
import { PollingAptosTracker } from '@nixjs23n6/aptos-block-tracker'

const blockTracker = new PollingAptosTracker({
    address: '0xb1ab189ee69f9c4f7e99d3b3595aed20670098367c18d5a65234ce97596feb4e',
    nodeURL: 'https://indexer-testnet.staging.gcp.aptosdev.com/v1/graphql',
})

blockTracker.on('sync', ({ newBlock, oldBlock }) => {
    if (oldBlock) {
        console.log(`sync #${Number(oldBlock)} -> #${Number(newBlock)}`)
    } else {
        console.log(`first sync #${Number(newBlock)}`)
    }
})
```

### SUI

```typescript
import { PollingSUITracker } from '@nixjs23n6/aptos-block-tracker'

const blockTracker = new PollingSUITracker({
    address: '0x1058a41ebe92ff069b65b692e20e51874a431e8b',
    nodeURL: 'https://fullnode.devnet.sui.io/',
})

blockTracker.on('sync', ({ newBlock, oldBlock }) => {
    if (oldBlock) {
        console.log(`sync`, oldBlock, newBlock)
    } else {
        console.log(`first sync`, newBlock)
    }
})
```
npm package: @nixjs23n6/date-picker
Description: A modern React Datepicker
Author: nghinv
Latest version: 1.0.0

# @nixjs23n6/date-picker

A modern React Datepicker.

## Install

```shell [npm]
npm install @nixjs23n6/date-picker 
```

```shell [pnpm]
pnpm add @nixjs23n6/date-picker 
```

```shell [yarn]
yarn add @nixjs23n6/date-picker 
```

```shell [bun]
bun add --dev husky
```
npm package: @nixjs23n6/error-message
Description: A simple component to control the error message.
Author: nghinv
Latest version: 0.0.1

# @nixjs23n6/error-message

A simple component to control the error message.

## Quick Setup

### Install

Install these dependencies:

`yarn add @nixjs23n6/error-message`

### Setup & Usage

```typescript
import { BaseErrorConsts, BaseErrorTypes } from '@nixjs23n6/error-message'

export const AuthCode = 20

const enumify = BaseErrorConsts.enumifyError(['WRONG_OTP', 'TOKEN_INVALID_OR_NOT_FOUND'], 0, AuthCode)

export const ourErrors = BaseErrorConsts.enumify({ ...enumify })

export type ErrorType = keyof typeof ourErrors

export const AuthErrors: Record<string, BaseErrorTypes.Error<ErrorType>> = {
    [ourErrors.WRONG_OTP]: {
        type: 'WRONG_OTP',
        code: Number(ourErrors.WRONG_OTP),
        stringify: (otp: string) => `Wrong OTP ${otp}`,
        format: (otp: string) => ({
            code: AuthErrors[ourErrors.WRONG_OTP as ErrorType].code,
            message: AuthErrors[ourErrors.WRONG_OTP as ErrorType].stringify(otp),
        }),
    },
    [ourErrors.TOKEN_INVALID_OR_NOT_FOUND]: {
        type: 'TOKEN_INVALID_OR_NOT_FOUND',
        code: Number(ourErrors.TOKEN_INVALID_OR_NOT_FOUND),
        stringify: (params: { accessToken: string; refreshToken: string }) =>
            `Token invalid or not found ${JSON.stringify(params.accessToken)}`,
        format: (params: { accessToken: string; refreshToken: string }) => ({
            code: AuthErrors[ourErrors.TOKEN_INVALID_OR_NOT_FOUND as ErrorType].code,
            message: AuthErrors[ourErrors.TOKEN_INVALID_OR_NOT_FOUND as ErrorType].stringify(params),
        }),
    },
}

console.log(AuthErrors[ourErrors.WRONG_OTP].format())
console.log(AuthErrors[ourErrors.TOKEN_INVALID_OR_NOT_FOUND].format())
```
npm package: @nixjs23n6/facebook-login
Description: Facebook signin for React using the official Facebook JS SDK.
Author: nghinv
Latest version: 1.0.2

# @nixjs23n6/facebook-login

A Component React for Facebook Login

## Quick Setup

### Install

Install these dependencies:

`yarn add @nixjs23n6/facebook-login`

### Setup & Usage

```typescript
import { Sdk, useInitFacebook } from '@nixjs23n6/facebook-login'

interface LoginPropArg {}

export const Login: React.FC<LoginPropArg> = () => {
    useInitFacebook({
        version: 'v11.0',
        appId: __FACEBOOK_APP_ID__
    })

    const onLogin = () => {
        Sdk.login({
            scope: 'public_profile,email'
        })
        .then(console.log)
        .catch(console.log)
    }

    return (<button onClick={() => onLogin()}>Login with facebook</button>)
}
```
npm package: @nixjs23n6/grpc-core
Description: gRPC for Web Clients.
Author: nghinv
Latest version: 1.0.16

# @nixjs23n6/grpc-core

Core for gRPC Web Client.

## Install

Install these dependencies:

`yarn add @nixjs23n6/grpc-core`

## Reference & Example

Visit: <https://grpc-client-toolkit.vercel.app/>
npm package: @nixjs23n6/grpc-react
Description: A react context which helps you to deal with gRPC web.
Author: nghinv
Latest version: 1.0.16

# @nixjs23n6/grpc-react

A react context which helps you to deal with gRPC web

## Install

Install these dependencies:

`yarn add @nixjs23n6/grpc-react`

## Reference & Example

Visit: <https://grpc-client-toolkit.vercel.app/>
npm package: @nixjs23n6/grpc-socket-react
Description: A react context which helps you to deal with gRPC websocket.
Author: nghinv
Latest version: 0.0.18

# @nixjs23n6/react

A react context which helps you to deal with gRPC websocket

## Install

Install these dependencies:

`yarn add @nixjs23n6/grpc-socket-react`
npm package: @nixjs23n6/hd-wallet-adapter
Description: Small package that can convert a seed phrase to a master private key and a public address. Can be used to generate those as well.
Author: nghinv
Latest version: 2.2.14-alpha.0

# @nixjs23n6/hd-wallet-adapter

A tiny object utility.

## Quick Setup

### Install

`yarn add @nixjs23n6/hd-wallet-adapter`

### Usage

```typescript
import { Aptos, SUI, Vault, BaseEnums } from '@nixjs23n6/hd-wallet-adapter'

// generate hd wallet by provider: APTOS/SUI...
const vault = new Vault([Aptos.AptosVault, SUI.SUIVault])
vault.connect(BaseEnums.Provider.APTOS)

vault.instance.getAccountFromMnemonic(0, 'embody axis few green amateur seek weekend city manage clap flip utility').then(console.log)
vault.instance.getAccountFromMnemonic(1, 'embody axis few green amateur seek weekend city manage clap flip utility').then(console.log)
vault.instance.getAccountFromMnemonic(2, 'embody axis few green amateur seek weekend city manage clap flip utility').then(console.log)

// generate all hd wallets
const vault = new Vault([SUIVault, AptosVault], undefined, 'embody axis few green amateur seek weekend city manage clap flip utility'')
vault.generateHDWallets().then(console.log)
```
npm package: @nixjs23n6/objectify
Description: A tiny object utility
Author: nghinv
Latest version: 0.0.1

# @nixjs23n6/objectify

A tiny object utility.

## Quick Setup

### Install

`yarn add @nixjs23n6/objectify`

### Usage

#### Rename keys

```typescript
const obj = { id: 'toto_id', name: 'toto', age: 35 }
const keys = { id: 'value', name: 'label' }

renameKeys(keys, obj)
// { "value": "toto_id", "label": "toto", "age": 35 } 
```

#### Merge

```typescript
const obj1 = {
  a: null,
  b: false,
  c: true
};
const obj2 = {
  k: "demo"
};

merge(obj1, obj2);
// { a:null, b: false, c: true, k: "demo" }
```

#### Omit

```typescript
const obj = {
  a: null,
  b: false,
  c: true
};

omit(obj, ['a','b']);
// { c: true }
```

#### Pick

```typescript
const obj = {
  a: null,
  b: false,
  c: true
};

pick(obj, ['a','b']);
// { a: null, b: false }
```

#### Compact

```typescript
const obj = {
  a: null,
  b: false,
  c: true,
  d: 0,
  e: 1,
  f: '',
  g: 'a',
  h: [null, false, '', true, 1, 'a'],
  i: { j: 0, k: false, l: 'a' }
};

compact(obj);
// { c: true, e: 1, g: 'a', h: [ true, 1, 'a' ], i: { l: 'a' } }
```