open-index/open-npm huggingface dataset:
npm package: @igor.dvlpr/adblock-filter-counter
Description: 🐲  A dead simple npm module that counts Adblock filter rules.🦘
Author: Igor Dimitrijević
Latest version: 1.0.0
Deprecated: ⚠️ This package has been deprecated due to technical difficulties. Please install @igorskyflyer/adblock-filter-counter instead.

# adblock-filter-counter

🐲 A dead simple npm module that counts Adblock filter rules.🦘

<br>

<div align="center">
<h3>💖 Support further development</h3>
<a href="https://ko-fi.com/igorskyflyer" target="_blank"><img src="https://raw.githubusercontent.com/igorskyflyer/igorskyflyer/main/assets/ko-fi.png" alt="Donate to igorskyflyer" width="108"></a>
</div>

<br>
<br>
<br>

## 🕵🏼‍♂️ Usage

Install it by executing:

```shell
npm i "@igor.dvlpr/adblock-filter-counter"
```

<br>

## 🤹🏼‍♂️ API

```ts
countRules(rules: string): number
```

Counts Adblock filter rules found in the provided string.

<br>

`rules` - The Adblock filter string to count rules in.

<br>

Returns the number of filter rules.
Throws a `TypeError` if no input is passed or if it's not a string.

<br>
<br>

```ts
countFileRules(path: PathLike): number
```

Counts Adblock filter rules found in the provided file.

<br>

`path` - The path to the file that contains the filter rules to count.

<br>

Returns the number of filter rules.
Throws an `Error` if the given path cannot be found.
npm package: @igor.dvlpr/chars-in-string
Description: 🪐 Provides ways of testing whether an array of chars is present inside a given String. ☄
Author: Igor Dimitrijević
Latest version: 2.1.2
Deprecated: ⚠️ This package has been deprecated due to technical difficulties. Please install @igorskyflyer/chars-in-string instead.

## ['C', 'h', 'a', 'r', 's'] in 'String'

🪐 Provides ways of testing whether an array of chars is present inside a given String. ☄

<br>
<br>

<div align="center">
<h3>💖 Support further development</h3>
<a href="https://ko-fi.com/igorskyflyer" target="_blank"><img src="https://raw.githubusercontent.com/igorskyflyer/igorskyflyer/main/assets/ko-fi.png" alt="Donate to igorskyflyer" width="164"></a>
</div>

<br>
<br>

✨ Since `v.2.0.0` `chars-in-string` is a hybrid module that supports both CommonJS (legacy) and ES modules, thanks to [Modern Module](https://github.com/igorskyflyer/npm-modern-module).

<br>

### API

An `enum` is available publicly, used for setting the position of the search, see more below. 👇

```ts
enum Position = {
  Any,
  Start,
  End
}
```

It allows you define where the matching should occur, at the **beggining** of the `String`, at the **end** or **anywhere** (default).

<br>
<br>

```ts
function charsInString(characters: string[], string: String, position = Position.Any, caseSensitive = true): boolean
```

`characters: string[]` - the characters to search for, expects a single character per entry, if multiple are found it will take the first one,

`string: String` - the String which needs to be checked,

`[position: Position=Position.Any]` - controls where the matching should occur, at the **beggining** of the `String`, at the **end** or **anywhere** (default),

`[caseSensitive: boolean=true]` - controls whether the search is case-sensitive, defalts to true.

<br>
<br>

```ts
function stringsInString(strings, string, position = Position.Any, caseSensitive = true
```

`strings[]: string[]` - the strings to search for,

`string: String` - the String which needs to be checked,

`[position: Position=Position.Any]` - controls where the matching should occur, at the **beggining** of the `String`, at the **end** or **anywhere** (default),

`[caseSensitive: boolean=true]` - controls whether the search is case-sensitive, defalts to true.

<br>

### Usage

Install it by:

```shell
npm i "@igor.dvlpr/chars-in-string"
```

and then use it like:

```js
const { charsInString, stringsInString, Position } = require('@igor.dvlpr/chars-in-string')

console.log(charsInString([], '')) // prints false

console.log(charsInString([], 'test')) // prints false

console.log(charsInString([':', ','], '')) // prints false

console.log(charsInString([':', ','], 'hello:world')) // prints true

console.log(charsInString([':', ',', '^'], 'helloworld^')) // prints true

console.log(charsInString([':', ',', '^'], 'helloworld')) // prints false

console.log(stringsInString(['abc', 'owom', 'wqp', 'world', 'hel'], 'helloworld', Position.Start)) // prints true
```
npm package: @igor.dvlpr/hybridize
Description: 🧬 Hybridize is a simple CLI that I use internally as a part of my Modern Module repository and Robby - another CLI tool. ⚡
Author: Igor Dimitrijević
Latest version: 1.0.1
Deprecated: There is no longer a need for this package in modern ESM development. Farewell.

# 🧬 Hybridize ⚡

🧬 `Hybridize` is a simple CLI that I use internally as a part of my [🤖 Modern Module 🌠](https://github.com/igorskyflyer/npm-modern-module) project and [🌈 Robby ☄️](https://github.com/igorskyflyer/robby) - another CLI tool, both are used for providing support for hybrid modules (CommonJS + ES modules) until ES modules become a standard. ⚡

<br>

<div align="center">
<h3>💖 Support further development</h3>
<a href="https://ko-fi.com/igorskyflyer" target="_blank"><img src="https://raw.githubusercontent.com/igorskyflyer/igorskyflyer/main/assets/ko-fi.png" alt="Donate to igorskyflyer" width="164"></a>
</div>

<br>
<br>

If you find any use for it as a standalone module, feel free to use it. 😄☝

<br>

## Usage

```shell
npm i -D "@igor.dvlpr/hybridize"
```

<br>

Use it in your scripts, as e.g.

```bash
 hybridize --out "./dist/module" --module esm --overwrite
```

<br>

Use

```bash
hybridize --help
```

to get all available options and flags.
npm package: @igor.dvlpr/is-rootdir
Description: 🔼 Provides a way to check if the given path is the root drive/directory. ⛔ 
Author: Igor Dimitrijević
Latest version: 2.1.3
Deprecated: ⚠️ This package has been deprecated due to technical difficulties. Please install @igorskyflyer/is-rootdir instead.

## is-rootdir

🔼 Provides a way to check if the given path is the root/drive directory. ⛔

Uses `String` manipulation techniques and it doesn't actually check if the path exists.

<br>

<div align="center">
	<h3>💖 Support further development</h3>
	<a href="https://ko-fi.com/igorskyflyer" target="_blank"><img src="https://raw.githubusercontent.com/igorskyflyer/igorskyflyer/main/assets/ko-fi.png" alt="Donate to igorskyflyer" width="108"></a>
</div>

<br>
<br>
<br>

✨ Since version `2.0.0` `is-rootdir` is a hybrid module that supports both CommonJS (legacy) and ES modules, thanks to [Modern Module](https://github.com/igorskyflyer/npm-modern-module).

<br>

### Usage

Install it first by issuing,

```shell
npm i "@igor.dvlpr/is-rootdir"
```

<br>

Three functions are exposed,

- `isRootDirectory(path: string): boolean`,
- `isRootDirectoryUnix(path: string): boolean`,
- `isRootDirectoryWin(path: string): boolean`.

> ℹ `isDirectoryRoot()` internally uses `isRootDirectoryUnix()` and `isRootDirectoryWin()` functions while taking into accont the host OS and uses the appropriate function for it _\[OS\]_, useful for cross-platform calls without having to worry about the path separators and related issues.

<br>

Use it as follows:

```js
import { isRootDirectoryUnix, isRootDirectoryWin } from '@igor.dvlpr/is-rootdir'

// no examples and tests for isRootDirectory, read more above

console.log(isRootDirectoryUnix('')) // prints false

console.log(isRootDirectoryUnix('/')) // prints true

console.log(isRootDirectoryUnix('/////////')) // prints true - thanks to uPath, paths are normalized first 🤗

console.log(isRootDirectoryUnix('home')) // prints false

console.log(isRootDirectoryUnix('/home')) // prints false

console.log(isRootDirectoryUnix('/home/user')) // prints false

console.log(isRootDirectoryWin('')) // prints false

console.log(isRootDirectoryWin('D:')) // prints true

console.log(isRootDirectoryWin('D:\\\\\\\\\\')) // prints true - thanks to uPath, paths are normalized first 🤗

console.log(isRootDirectoryWin('D:\\')) // prints false

console.log(isRootDirectoryWin('D:\\Dev')) // prints false

console.log(isRootDirectoryWin('D:\\Dev\\Projects')) // prints false
```
npm package: @igor.dvlpr/jmap
Description: 🕶️ Reads a JSON file into a Map. 🌻
Author: Igor Dimitrijević
Latest version: 1.0.0
Deprecated: ⚠️ This package has been deprecated due to technical difficulties. Please install @igorskyflyer/jmap instead.

# jMap
🕶️ Reads a JSON file into a Map. 🌻


<br>
<br>

<div align="center">
	<blockquote>
		<h4>💖 Support further development</h4>
		<span>I work hard for every project, including this one and your support means a lot to me!
		<br>
		Consider buying me a coffee. ☕
		<br>
		<strong>Thank you for supporting my efforts! 🙏😊</strong></span>
		<br>
		<br>
		<a href="https://ko-fi.com/igorskyflyer" target="_blank"><img src="https://raw.githubusercontent.com/igorskyflyer/igorskyflyer/main/assets/ko-fi.png" alt="Donate to igorskyflyer" width="150"></a>
		<br>
		<br>
		<a href="https://github.com/igorskyflyer"><em>@igorskyflyer</em></a>
		<br>
		<br>
	</blockquote>
</div>

<br>

## 🕵🏼 Usage

Install it by executing:

```shell
npm i "@igor.dvlpr/jmap"
```

<br>

## 🤹🏼 API

```jMap(path: string): Map<string, any>```

Reads a JSON file into a Map.

<br>

```path: string``` - path to the JSON file, **required**.  

<br>

***Throws*** an exception if the file cannot be read or there is an error while parsing the JSON file.  

 Returns `Map` with all JSON properties and values.

<br>

`demo.ts`

```ts
import { jMap } from '@igor.dvlpr/jmap'

const sample: Map<string, any> = jMap('./test/data/sample.json')

console.log(sample.get('glossary').title) // 'example glossary'

```

> The used sample JSON file is located here, [JSON sample](https://github.com/igorskyflyer/npm-jmap/blob/main/test/data/sample.json).

---

## 🪪 License

Licensed under the MIT license which is available here, [MIT license](https://github.com/igorskyflyer/npm-jmap/blob/main/LICENSE).

---

## 🧬 Related

[@igor.dvlpr/zep](https://www.npmjs.com/package/@igor.dvlpr/zep)

> _🧠 Zep is a zero-dependency, efficient debounce module. ⏰_

[@igor.dvlpr/pathexists](https://www.npmjs.com/package/@igor.dvlpr/pathexists)

> _🧲 Provides ways of properly checking if a path exists inside a given array of files/directories both on Windows and UNIX-like operating systems. 🗺_

[@igor.dvlpr/adblock-filter-counter](https://www.npmjs.com/package/@igor.dvlpr/adblock-filter-counter) 

> _🐲 A dead simple npm module that counts Adblock filter rules.🦘_

[@igor.dvlpr/mp3size](https://www.npmjs.com/package/@igor.dvlpr/mp3size)

> _🧮 Calculates an estimated file size of Mp3 files. 🎶_

[@igor.dvlpr/odin](https://www.npmjs.com/package/@igor.dvlpr/odin)

> _🔱 Odin is an Object wrapper that allows you to create objects and set their attributes - all at once! 🔺_

<br>
<br>

>
> Provided by **Igor Dimitrijević** ([*@igorskyflyer*](https://github.com/igorskyflyer/)).
>
npm package: @igor.dvlpr/normalized-string
Description: 💊 NormalizedString provides you with a String type with consistent line-endings, guaranteed. 📮
Author: Igor Dimitrijević
Latest version: 1.0.1
Deprecated: ⚠️ This package has been deprecated due to technical difficulties. Please install @igorskyflyer/normalized-string instead.

# normalized-string

💊 NormalizedString provides you with a String type with consistent line-endings, guaranteed. 📮

<br>

<div align="center">
<h3>💖 Support further development</h3>
<a href="https://ko-fi.com/igorskyflyer" target="_blank"><img src="https://raw.githubusercontent.com/igorskyflyer/igorskyflyer/main/assets/ko-fi.png" alt="Donate to igorskyflyer" width="108"></a>
</div>

<br>
<br>
<br>

## 🕵🏼‍♂️ Usage

Install it by executing:

```shell
npm i "@igor.dvlpr/normalized-string"
```

<br>

## 🤹🏼‍♂️ API

```ts
constructor(value: string, endings: LineEndings = LineEnding.lf)
```

`value` - A string to work with.

`endings` - The line endings to use:

- `LineEnding.lf` - UNIX-like line endings (line feed),

- `LineEnding.crlf` - Windows line endings (carriage return + line feed).

<br>
<br>

You can also set the property `value` directly and the line endings will be correct.

<br>

```ts
import { NormalizedString, LineEnding } from '@igor.dvlpr/normalized-string'

const loremIpsum: string =
  'Lorem ipsum dolor sit amet, consectetur adipiscing elit.\r\n\r\nPellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas.\n\nDuis in nulla ut leo lobortis venenatis.'

const lfEndings: NormalizedString = new NormalizedString(loremIpsum)

lfEndings.value = 'Hello\r\nworld!'

console.log(JSON.stringify(lfEndings.value)) // returns 'Hello\nworld'
```

<br>
<br>

## 🤔 Examples

```ts
import { NormalizedString, LineEnding } from '@igor.dvlpr/normalized-string'

const loremIpsum: string =
  'Lorem ipsum dolor sit amet, consectetur adipiscing elit.\r\n\r\nPellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas.\n\nDuis in nulla ut leo lobortis venenatis.'

const lfEndings: NormalizedString = new NormalizedString(loremIpsum) // LF are the default endings
const crlfEndings: NormalizedString = new NormalizedString(loremIpsum, LineEnding.crlf)

console.log(JSON.stringify(lfEndings.value)) // returns 'Lorem ipsum dolor sit amet, consectetur adipiscing elit.\n\nPellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas.\n\nDuis in nulla ut leo lobortis venenatis.'
console.log(JSON.stringify(crlfEndings.value)) // returns 'Lorem ipsum dolor sit amet, consectetur adipiscing elit.\r\n\r\nPellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas.\r\n\r\nDuis in nulla ut leo lobortis venenatis.'
```
npm package: @igor.dvlpr/odin
Description: 🔱 Odin is an Object wrapper that allows you to create objects and set their attributes - all at once! 🔺
Author: Igor Dimitrijević
Latest version: 1.0.0
Deprecated: ⚠️ This package has been deprecated due to technical difficulties. Please install @igorskyflyer/odin instead.

# 🔱 Odin 🔺

🔱 Odin is an Object wrapper that allows you to create objects and set their attributes - all at once! 🔺

<br>

## Usage 🎡

Install it by executing

```shell
npm i "@igor.dvlpr/odin"
```

then, import it into your project, i.e.:

```js
const { odin } = require('@igor.dvlpr/odin')

const cloned = odin({ a: 1, b: 2 }, { c: 3 }) // returns { a: 1, b: 2, c: 3 }
```

<br>

## API 📚

```ts
odin(target: object, source: object): object
```

Assigns all properties of the source object to the target object.

 <br>

`target: object` - the target object to copy properties to,

`source: object` - the source object to copy properties from.

<br>

Returns the target object.

If the **_target_** object is not provided and empty object is returned.

If the **_source_** object is not provided the **_target_** object is returned unchanged.

<br>
 
 NOTE: this function uses the method of shallow copying of the source object, for deep/true copied objects consider using [clone.js](https://github.com/igorskyflyer/npm-clone-js).

For more info, see, [shallow copy](https://developer.mozilla.org/en-US/docs/Glossary/Shallow_copy) vs [deep copy](https://developer.mozilla.org/en-US/docs/Glossary/Deep_copy).
npm package: @igor.dvlpr/pathexists
Description: 🧲 Provides ways of properly checking if a path exists inside a given array of files/directories both on Windows and UNIX-like operating systems. 🗺
Author: Igor Dimitrijević
Latest version: 2.1.2
Deprecated: ⚠️ This package has been deprecated due to technical difficulties. Please install @igorskyflyer/pathexists instead.

## PathExists

🧲 Provides ways of properly checking if a path exists inside a given array of files/directories both on Windows and UNIX-like operating systems, using `String` manipulation techniques, read more below. 🗺

<br>

> ⚠ It does **NOT** actually check if the file/directory exists **on the disk**, it only checks if the given path exists in the list of paths. Useful when you have already obtained a list of files/directories and you want to check if a given path is eligible/available to, for example, create a new file at it.

<br>
<br>

✨ Since `v.2.0.0` `pathexists` is a hybrid module that supports both CommonJS (legacy) and ES modules, thanks to [Modern Module](https://github.com/igorskyflyer/npm-modern-module).

<br>

### Usage

Install it first, by doing:

```shell
npm i "@igor.dvlpr/pathexists"
```

and then...

```js
const { pathExists, pathExistsWindows, pathExistsUnix } = require('@igor.dvlpr/pathexists')

const allPaths = ['abc.js', 'etc.bak']
const winPaths = ['D:\\', 'D:\\Temp\\a.js']
const unixPaths = ['/home/user', '/home/user/a.js']

// #1 - host OS dependent mode - uses the appropriate function for each host OS
console.log(pathExists('abc.js', allPaths)) // prints true

// #1 - force Windows mode
console.log(pathExistsWindows('abc.js', allPaths)) // prints true

// #1 - force UNIX-like mode
console.log(pathExistsUnix('abc.js', allPaths)) // prints true

// #2 - force Windows mode
console.log(pathExistsWindows('abC.js', allPaths)) // prints true

// #2 - force UNIX-like mode
console.log(pathExistsUnix('abC.js', allPaths)) // prints false

// #3 - force Windows mode
console.log(pathExistsWindows('D:\\Temp\\A.js', winPaths)) // prints true

// #3 - force UNIX-like mode
console.log(pathExistsUnix('D:\\Temp\\A.js', unixPaths)) // prints false

// #4 - force Windows mode, custom Comparator
console.log(pathExistsWindows('Temp', winPaths, (entry, value) => entry.indexOf(value) > -1)) // prints true

// #4 - force UNIX-like mode, custom Comparator
console.log(pathExistsUnix('Temp', unixPaths, (entry, value) => entry.indexOf(value) > -1)) // prints true
```
npm package: @igor.dvlpr/strip-headings
Description: ⛸ Strips Markdown headings!🏹
Author: Igor Dimitrijević
Latest version: 1.0.1
Deprecated: ⚠️ This package has been deprecated due to technical difficulties. Please install @igorskyflyer/strip-md-headings instead.

# StripHeadings

⛸ Strips Markdown headings! 🏹

<br>

### ✨ Install

<br>

Install it by running:

```shell
npm i "@igor.dvlpr/strip-headings"
```

<br>
<br>

### 🕵🏼‍♂️ Usage

<br>

```ts
function stripHeadings(value: string): string
```

_Strips Markdown headings completely._

`value: string` - the Markdown string to process.

`returns` - the processed string.

<br>

```ts
function stripHeadingsCode(value: string): string
```

_Strips only the Markdown code while keeping the heading text._

`value: string` - the Markdown string to process.

`returns` - the processed string.
npm package: @igor.dvlpr/strip-html-headings
Description: 🍛 Strips HTML headings! 🍤
Author: Igor Dimitrijević
Latest version: 1.0.0
Deprecated: ⚠️ This package has been deprecated due to technical difficulties. Please install @igorskyflyer/strip-html-headings instead.

# StripHTMLHeadings

🍛 Strips HTML headings! 🍤

<br>

### ✨ Install

<br>

Install it by running:

```shell
npm i "@igor.dvlpr/strip-html-headings"
```

<br>
<br>

### 🕵🏼‍♂️ Usage

<br>

```ts
function stripHeadings(value: string): string
```

_Strips HTML headings completely._

`value: string` - the HTML string to process.

`returns` - the processed string.

<br>

```ts
function stripHeadingsCode(value: string): string
```

_Strips only the HTML code while keeping the heading text._

`value: string` - the HTML string to process.

`returns` - the processed string.
npm package: @igor.dvlpr/uarray
Description: 🎉 Provides UArray, an Array type that supports negative indices/indexes, just wrap your regular JavaScript array with UArray() and you are all set! 🙌
Author: Igor Dimitrijević
Latest version: 1.2.2
Deprecated: ⚠️ This package has been deprecated due to technical difficulties. Please install @igorskyflyer/uarray instead.

## 🎉 UArray 🙌

<p align="center">
	<img src="https://raw.githubusercontent.com/igorskyflyer/npm-uarray/main/assets/uArray.png" width="140" height="140">
</p>

<br>

Provides `UArray`, an `Array` type that supports negative indices/indexes, just wrap your _regular_ JavaScript array with `UArray()` or pass the elements directly to `UArray()` and you are all set! 🎉🙌

<br>

<blockquote align="center"> ⚠ Uses the built-in <code>Proxy</code> object, check browser compatibility on the <a href="https://caniuse.com/proxy"><strong>Can I Use</strong></a> website.
</blockquote>

<br>

<p align="center">
📢 This is the npm version of this project, if you are looking for the vanilla JavaScript version, check <a href="https://github.com/igorskyflyer/uarray"><strong>this</strong></a>.
</p>

<br>

### Usage

<br>

ℹ Works like negative indices in other languages, e.g. **-1** picks that **last** element, **-2,** the **second to last**, etc.

<br>

✨ Since `v.1.1.0` the function signature has been changed and now it supports 2 different ways of action. You can now pass a single parameter of type `Array` or multiple parameters of any primitive type.

<br>

Install it first by doing,

```shell
npm i "@igor.dvlpr/uarray"
```

<br>

and then use it,

<br>

```js
const UArray = require('@igor.dvlpr/uarray')
const food = UArray(['🍟', '🌭', '🍿', '🥙', '🥓']) // array passed
const objects = UArray('🎈', '🎩', '⚽', '🥇', '🎯') // no array passed, just direct values

console.log(food[-1]) // prints '🥓'
console.log(food[-3]) // prints '🍿'

console.log(objects[-1]) // prints '🎯'
console.log(objects[-3]) // prints '⚽'
```

<br>

<blockquote align="center">
🎉 Happy coding! 🙌
</blockquote>
npm package: @igor.dvlpr/valid-path
Description: 🧰 Provides ways of testing whether a given value can be a valid file/directory name. 🏜
Author: Igor Dimitrijević
Latest version: 2.2.1
Deprecated: ⚠️ This package has been deprecated due to technical difficulties. Please install @igorskyflyer/valid-path instead.

## Valid Path

🧰 Provides ways of testing whether a given value can be a valid file/directory name. 🏜

<br>

> 💃 Since `v.1.1.0` this package provides both a CommonJS module and an ES module, thanks to [`Modern Module`](https://github.com/igorskyflyer/npm-modern-module).
>
> What do you need to do to use one or the other?
>
> Nothing. If you need a CommonJS module `require` it, if you need an ES module `import` it instead. Simple, right?

<br>

### Usage

Install it by running,

```shell
npm i "@igor.dvlpr/valid-path"
```

<br>

### API

```ts
function isValidPath(path: string, isFile = true): boolean
```

Returns whether the given path can be a valid file/directory name on the host machine.

<br>

```ts
function isValidPathUnix(path: string, isFile = true): boolean
```

Returns whether the given path can be a valid file/directory name on Unix and Unix-like OS'.

<br>

```ts
function isValidPathWin(path: string, isFile = true): boolean
```

Returns whether the given path can be a valid file/directory name on Windows OS.

<br>

### Examples

```js
const { isValidPathUnix, isValidPathWin, isValidPath } = require('@igor.dvlpr/valid-path')

console.log(isValidPathUnix('hello&world.js', true)) // prints true
console.log(isValidPathUnix('hello/world.js', true)) // prints false
console.log(isValidPathUnix('hello/world')) // prints false

console.log(isValidPathWin('hello/world.js', true)) // prints false
console.log(isValidPathWin('hello/world', false)) // prints false
console.log(isValidPathWin('CON7')) // prints true
console.log(isValidPathWin('COM7.txt')) // prints false
console.log(isValidPathWin('CONnection')) // prints true
console.log(isValidPathWin('lpt1')) // prints false
console.log(isValidPathWin('hello&world.js', true)) // prints true

// isValidPath() internally uses the appropriate method for supported OS' (Unix-like and Windows)
```
npm package: @igor.dvlpr/windev
Description: 🍃 Provides ways of checking whether a path is a legacy Windows device. 💾
Author: Igor Dimitrijević
Latest version: 1.2.2
Deprecated: ⚠️ This package has been deprecated due to technical difficulties. Please install @igorskyflyer/windev instead.

# \\\\.\\WinDev

🍃 Provides ways of checking whether a path is a legacy Windows device. 💾

<br>

> 💃 Since `v.1.1.0` this package provides both a CommonJS module and an ES module, thanks to [`Modern Module`](https://github.com/igorskyflyer/npm-modern-module).
>
> What do you need to do to use one or the other?
>
> Nothing. If you need a CommonJS module `require` it, if you need an ES module `import` it instead. Simple, right?

<br>

When creating files or folders on Windows there are some rules about naming them, one of which is that te usage of legacy Windows devices' names as the folder/file name is prohibited, i.e.:

> “Do not use the following reserved names for the name of a file:
>
> `CON`, `PRN`, `AUX`, `NUL`, `COM1`, `COM2`, `COM3`, `COM4`, `COM5`, `COM6`, `COM7`, `COM8`, `COM9`, `LPT1`, `LPT2`, `LPT3`, `LPT4`, `LPT5`, `LPT6`, `LPT7`, `LPT8`, and `LPT9`. Also avoid these names followed immediately by an extension; for example, `NUL.txt` is not recommended.”

<p align="right"><sub>source: <a href="https://docs.microsoft.com/en-us/windows/win32/fileio/naming-a-file?redirectedfrom=MSDN#Naming_Conventions">Microsot Docs</a></sub></p>

<br>

Be aware that there are some edge-cases that this module also handles, examples #4 and #7 illustrate that. Technically the provided strings in those two examples are not legacy devices but you are still not allowed to create files/directories with those names.

<br>

### Usage

Install it by running

```shell
npm i "@igor.dvlpr/windev"
```

<br>

### API

```ts
function isWindowsDevice(name: string) => boolean
```

Checks whether the given directory or file name is a legacy Windows device.

<br>

### Examples

<br>

```js
const { isWindowsDevice } = require('@igor.dvlpr/windev')

console.log(isWindowsDevice()) // prints false
console.log(isWindowsDevice('')) // prints false
console.log(isWindowsDevice('con')) // prints true
console.log(isWindowsDevice('con.txt')) // prints true
console.log(isWindowsDevice('cOm3')) // prints true
console.log(isWindowsDevice('COM7 ')) // prints true
console.log(isWindowsDevice(' COM2 .txt.al')) // prints true
console.log(isWindowsDevice('CONnection')) // prints false
```
npm package: @igor.sudijovski/http-proxy
Description: CLI reverse proxy: forwards HTTP(S) and WebSocket traffic to a target URL
Author: Igor Sudijovski
Latest version: 1.0.0
Deprecated: Use forward-http-proxy instead: npm install forward-http-proxy

# @igor.sudijovski/http-proxy

Small CLI reverse proxy built on [`http-proxy`](https://www.npmjs.com/package/http-proxy). Forwards HTTP(S) and WebSocket traffic to a single upstream URL.

**Repository:** [github.com/igorsudijovski/http-proxy](https://github.com/igorsudijovski/http-proxy)  
**npm:** [@igor.sudijovski/http-proxy](https://www.npmjs.com/package/@igor.sudijovski/http-proxy)

## Install

```bash
npm install -g @igor.sudijovski/http-proxy
# or
pnpm add -g @igor.sudijovski/http-proxy
```

Run via `npx` without installing:

```bash
npx @igor.sudijovski/http-proxy -- --target http://localhost:8080 --port 3000
```

The binary name is **`http-forward-proxy`**:

```bash
http-forward-proxy --target http://localhost:8080 --port 3000
```

## Usage

```bash
pnpm exec http-forward-proxy -- --target http://localhost:8080 --port 3000
```

Or with environment variables:

```bash
PROXY_TARGET=http://localhost:8080 PROXY_PORT=3000 pnpm exec http-forward-proxy
```

### Options

| Flag | Description |
|------|-------------|
| `-t`, `--target <url>` | Upstream URL (required unless `PROXY_TARGET` is set) |
| `-p`, `--port <n>` | Listen port (default: `3000`) |
| `--host <addr>` | Listen address (default: `127.0.0.1`) |
| `--no-change-origin` | Disable `changeOrigin` |
| `--insecure` | For `https` targets: skip TLS verification (local dev only) |
| `--cors` | Add permissive CORS headers for cross-origin browser requests (local dev only) |
| `-h`, `--help` | Help |

## Example (`example/`)

Minimal project that installs the published package and runs the proxy:

```bash
cd example
pnpm install
pnpm start
```

Edit `example/package.json` → `scripts.start` to change `--target` / `--port`. See [example/README.md](example/README.md) for env-based usage and local `file:..` installs.

## Development

Clone and install:

```bash
git clone https://github.com/igorsudijovski/http-proxy.git
cd http-proxy
pnpm install
pnpm proxy-server -- --target http://localhost:8080
```

## Publish to npm

Scoped package is configured as **public** (`publishConfig.access`).

1. Log in: `npm login` (user [igor.sudijovski](https://www.npmjs.com/~igor.sudijovski))
2. From the repo root: `npm publish` or `pnpm publish`

## License

[MIT](LICENSE)
npm package: @igor2017/node-latex
Description: A small wrapper for LaTeX.
Author: Saad Quadri
Latest version: 3.1.0

# node-latex
A small wrapper for generating PDFs with LaTeX in Node.

## Requirements

LaTeX must be installed on your machine.  You can download it [here](https://www.latex-project.org/get/).

## Install

```
npm install node-latex
```

## Usage

```js
const latex = require('node-latex')
const fs = require('fs')

const input = fs.createReadStream('input.tex')
const output = fs.createWriteStream('output.pdf')
const pdf = latex(input)

pdf.pipe(output)
pdf.on('error', err => console.error(err))
pdf.on('finish', () => console.log('PDF generated!'))
```

View more examples [here](https://github.com/saadq/node-latex/tree/master/examples).

## API

### latex(doc[, options])

**doc** \[ReadableStream|String\] *Required* - The (La)TeX document you want to use.

**options.inputs** \[String|Array<String>\] - The path (or an array of paths) to the directory which contains the assets necessary for the doc.

**options.precompiled** \[String|Array<String>\] - The path  (or an array of paths) to the directory which contains the precompiled files necessary for the doc.

**options.fonts** \[String|Array<String>\] - The path (or an array of paths) to the directory which contains the fonts necessary for the doc (you will most likely want to use this option if you're working with `fontspec`).

**options.cmd** \[String\] - The command to run for your document (`pdflatex`, `xetex`, etc). `pdflatex` is the default.

**options.args** \[Array<String>\] - Arguments passed to `cmd`. Defaults to `['-halt-on-error']`.

**options.passes** \[Number\] - The number of times to run `options.cmd`. Some documents require multiple passes. Only works when `doc` is a String. Defaults to `1`.

**options.errorLogs** \[String] - The path to the file where you want to save the contents of the error log to.

## License
MIT
npm package: @igor2017/tree-angular-component
Description: Declarative Charting Framework for Angular
Author: York Yao
Latest version: 6.0.3

# TreeAngularComponent

## What is this component for?

Allows you to use [tree-component](https://github.com/plantain-00/tree-component) in Angular apps.
I consider this component the best tree for Angular at the moment.

## :clapper: Usage

Installation:

`npm i @igor2017/tree-angular-component`

the "tree-component" package will be installed automatically

```typescript
import { NgModule } from '@angular/core';
import { BrowserModule } from '@angular/platform-browser';
import { TreeModule } from 'tree-angular-component';

import { AppComponent } from './app.component';

@NgModule({
  declarations: [
    AppComponent
  ],
  imports: [
    BrowserModule,
    TreeModule,
  ],
  providers: [],
  bootstrap: [AppComponent]
})
export class AppModule { }
```

```html
<tree [data]="data"
    (toggle)="toggle($event)"
    (change)="change($event)">
</tree>
```

Documentation and usage examples here: https://github.com/plantain-00/tree-component.
npm package: @igoradamenko/body-scroll
Description: Enables and disables scroll on HTML body node.
Author: Igor Adamenko
Latest version: 1.0.0

# @igoradamenko/body-scroll

[![npm](https://img.shields.io/npm/v/@igoradamenko/body-scroll.svg)](https://www.npmjs.com/package/@igoradamenko/body-scroll)

## Installation

```sh
npm i --save @igoradamenko/body-scroll
```

## Usage

Package exports two functions: `enableBodyScroll` and `disableBodyScroll`.
npm package: @igoradamenko/capitalize-first
Description: Capitalizes first letter of passed string
Author: Igor Adamenko
Latest version: 1.0.1

# @igoradamenko/capitalize-first

[![npm](https://img.shields.io/npm/v/@igoradamenko/capitalize-first.svg)](https://www.npmjs.com/package/@igoradamenko/capitalize-first)

## Installation

```sh
npm i --save @igoradamenko/capitalize-first
```

## Usage

```js
import capitalizeFirst from '@igoradamenko/capitalize-first';

console.log(capitalizeFirst('test string')); // Test string
```
npm package: @igoradamenko/eslint-config
Description: ESLint configuration for my projects
Author: Igor Adamenko
Latest version: 1.0.0

# @igoradamenko/eslint-config

[![npm](https://img.shields.io/npm/v/@igoradamenko/eslint-config.svg)](https://www.npmjs.com/package/@igoradamenko/eslint-config)

## Installation

```sh
npx install-peerdeps --dev @igoradamenko/eslint-config
```

## Usage

By CLI:

```sh
eslint --cache -c node_modules/@igoradamenko/eslint-config/.eslintrc.js src/app
```

By config file (`.eslintrc.js`):

```js
module.exports = {
  extends: '@igoradamenko',
  env: {
    browser: true,
  },
  settings: {
    'import/resolver': {
      webpack: {
        config: 'config/webpack.config.dev.js',
      },
    },
  },
};
```
npm package: @igoradamenko/format-number
Description: Format passed number
Author: Igor Adamenko
Latest version: 1.0.1

# @igoradamenko/format-number

[![npm](https://img.shields.io/npm/v/@igoradamenko/format-number.svg)](https://www.npmjs.com/package/@igoradamenko/format-number)

## Installation

```sh
npm i --save @igoradamenko/format-number
```

## Usage

```js
const formatNumber = require('@igoradamenko/format-number');

console.log(formatNumber(12345.67))
// > '12 345,67'

console.log(formatNumber(-12345.67, {
  space: '•',
  delimiter: '.',
  minus: '~',
}))
// > '~12•345.67'
```
npm package: @igoradamenko/get-object-path
Description: Returns value from object by key-chain, or undefined
Author: Igor Adamenko
Latest version: 1.0.0

# @igoradamenko/get-object-path

[![npm](https://img.shields.io/npm/v/@igoradamenko/get-object-path.svg)](https://www.npmjs.com/package/@igoradamenko/get-object-path)

## Installation

```sh
npm i --save @igoradamenko/get-object-path
```

## Usage

```js
import getObjectPath from '@igoradamenko/get-object-path';

const obj = {
  a: 1,
  b: 2,
  c: {
    d: 1,
    e: 2,
    f: {
      g: 1,
      h: 2,
      i: 3,
    },
  },
};

console.log(getObjectPath(obj, 'c.f.i')); // 3
```
npm package: @igoradamenko/get-plural
Description: Choose correct plural form for passed number from passed form of a word.
Author: Igor Adamenko
Latest version: 1.0.0

# @igoradamenko/get-plural

[![npm](https://img.shields.io/npm/v/@igoradamenko/get-plural.svg)](https://www.npmjs.com/package/@igoradamenko/get-plural)

## Installation

```sh
npm i --save @igoradamenko/get-plural
```

## Usage

```js
import getPlural from '@igoradamenko/get-plural';

const n = 5;
console.log(`${n} ${getPlural(n, 'пакет', 'пакета', 'пакетов')}`); // 5 пакетов
```
npm package: @igoradamenko/get-unique-id
Description: Returns unique ID.
Author: Igor Adamenko
Latest version: 1.0.0

# @igoradamenko/get-unique-id

[![npm](https://img.shields.io/npm/v/@igoradamenko/get-unique-id.svg)](https://www.npmjs.com/package/@igoradamenko/get-unique-id)

## Installation

```sh
npm i --save @igoradamenko/get-unique-id
```

## Usage

```js
import getUniqueId from '@igoradamenko/getUniqueId';

console.log(getUniqueId()); // 'id-0'
console.log(getUniqueId('some-prefix')); // 'some-prefix-1'
```
npm package: @igoradamenko/is-email
Description: Checks whether passed string is a valid email or not
Author: Igor Adamenko
Latest version: 1.0.0

# @igoradamenko/is-email

[![npm](https://img.shields.io/npm/v/@igoradamenko/is-email.svg)](https://www.npmjs.com/package/@igoradamenko/is-email)

## Installation

```sh
npm i --save @igoradamenko/is-email
```

## Usage

```js
import isEmail from '@igoradamenko/is-email';

console.log(isEmail('test@example.com')); // true
console.log(isEmail('test')); // false
```
npm package: @igoradamenko/local-storage
Description: [![npm](https://img.shields.io/npm/v/@igoradamenko/local-storage.svg)](https://www.npmjs.com/package/@igoradamenko/local-storage)
Author: Igor Adamenko
Latest version: 1.0.0

# @igoradamenko/local-storage

[![npm](https://img.shields.io/npm/v/@igoradamenko/local-storage.svg)](https://www.npmjs.com/package/@igoradamenko/local-storage)

Fallback for Local Storage which makes it possible to read/write to a plain 
object instead of localStorage when it's not available (e.g. in Safari Private 
Browsing Mode).

## Installation

```sh
npm i --save @igoradamenko/local-storage
```

## Usage

```js
import LS from '@igoradameko/local-storage';

const key = LS.getItem('key'); // do everything you wanna do with Local Storage
```

## Browsers Support

It uses [`Object.keys`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/keys) 
and [`Object.defineProperty`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/defineProperty), 
so works only in IE9+.
npm package: @igoradamenko/omit
Description: Returns passed object without passed keys.
Author: Igor Adamenko
Latest version: 1.0.0

# @igoradamenko/omit

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

## Installation

```sh
npm i --save @igoradamenko/omit
```

## Usage

```js
import omit from '@igoradamenko/omit';

console.log(omit({ a: 1, b: 2, c: 3 }, 'a', 'b')); // { c: 3 }
```
npm package: @igoradamenko/scss-loader
Description: Webpack SCSS loader for BEM environment
Author: Igor Adamenko
Latest version: 2.0.0

# @igoradamenko/scss-loader

[![npm](https://img.shields.io/npm/v/@igoradamenko/scss-loader.svg)](https://www.npmjs.com/package/@igoradamenko/scss-loader)

It uses [sass-loader](https://github.com/webpack-contrib/sass-loader) inside, and two “preloaders” for it.

The first preloader adds `$b` variable with a current BEM block name as a value.
It tries to find it using recursive file system tree search from current file to `/`.

The second preloader adds `@imports` of all paths listed in `pathsToImports` option.

Everything else is just a regular sass-loader. 

**Works with SCSS only.**

## Installation

```sh
npm i --save @igoradamenko/scss-loader
```

## Usage

```js
// webpack.config.js
module.exports = {
  // ...
  module: {
    rules: [
      // ...
      {
        test: /\.scss$/,
        use: [
          // ...
          {
            loader: '@igoradamenko/scss-loader',
            options: {
              implementation: require('sass'),
              
              sassOptions: {
                fiber: require('fibers'),
                sourceMap: true,
                includePaths: ['absolute/path/to/files'],
              },
              // ↑ optional things here; 
              // just to clarify that you can pass them through this loader to sass-loader
              
              pathsToImport: [
                'path/to/some/scss/file'
              ],
              // ↑ option for second “preloader” 
            },
          },
          // ...
        ],
      },
      // ...
    ],
  },
  // ...
};
```

## Example

Let's say you have a file tree kind of this:

```text

common
└── variables.scss
components
└── block
    └── __elem
        └── block__elem.scss
```

`block__elem.scss`:

```scss
#{$b}__elem {
  color: $mainColor;
}
```

`variables.scss`:

```scss
$mainColor: red;
```

And you also have the loader configured in this way:

```js
// ...
{
  loader: '@igoradamenko/scss-loader',
  options: {
    // ...
    pathsToImport: [
      'path/to/common/variables.scss'
    ],
  },
},
// ...
```

On build stage your `block__elem.scss` will be changed step-by-step:

1. `$b` will be prepended:

    ```scss
    $b: 'block';   
 
    #{$b}__elem {
      color: $mainColor;
    }
    ``` 
    
2. Then `@import` to `variables.scss` will be prepended:

    ```scss
    @import 'path/to/common/variables.scss';   
 
    $b: 'block';   
 
    #{$b}__elem {
      color: $mainColor;
    }
    ``` 
    
3. Finally, sass-loader will compile your file using Sass renderer, and you will get this:

    ```css
    .block__elem {
      color: red;
    }
    ```
npm package: @igoradamenko/stylelint-config
Description: Stylelint configuration for my projects
Author: Igor Adamenko
Latest version: 1.0.0

# @igoradamenko/stylelint-config

[![npm](https://img.shields.io/npm/v/@igoradamenko/stylelint-config.svg)](https://www.npmjs.com/package/@igoradamenko/stylelint-config)

## Installation

```sh
npx install-peerdeps --dev @igoradamenko/stylelint-config
```

## Usage

By CLI:

```sh
stylelint "src/**/*.scss" --syntax scss --cache --config node_modules/@igoradamenko/stylelint-config/.stylelintrc
```

By config file (`.stylelintrc`):

```json
{
  "extends": "@igoradamenko/stylelint-config"
}
```