open-index/open-npm huggingface dataset:
npm package: @kkirbatski/parcel-resolver-require-resolve
Description: For parcel v2, this is a fallback resolver that uses require.resolve
Author: Kyle Kirbatski
Latest version: 2.0.2

# @kkirbatski/parcel-resolver-require-resolve

This is a fallback to use nodejs' `require.resolve`. I personally needed this so that I could use packages that relied on [package.json:exports](https://web.archive.org/web/20210906194319/https://nodejs.org/api/packages.html#packages_exports_sugar).

## Install

### Yarn

`yarn add @kkirbatski/parcel-resolver-require-resolve`

### Update .parcelrc

```json
{
	"extends": "@parcel/config-default",
	"resolvers": ["...", "@kkirbatski/parcel-resolver-require-resolve"]
}
```

# License

This is free and unencumbered software released into the public domain.

Anyone is free to copy, modify, publish, use, compile, sell, or
distribute this software, either in source code form or as a compiled
binary, for any purpose, commercial or non-commercial, and by any
means.

In jurisdictions that recognize copyright laws, the author or authors
of this software dedicate any and all copyright interest in the
software to the public domain. We make this dedication for the benefit
of the public at large and to the detriment of our heirs and
successors. We intend this dedication to be an overt act of
relinquishment in perpetuity of all present and future rights to this
software under copyright law.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
IN NO EVENT SHALL THE AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR
OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
OTHER DEALINGS IN THE SOFTWARE.

For more information, please refer to <https://unlicense.org>
npm package: @kkirbatski/pnpm-locksmith
Description: Sync package.json dependency versions to the exact versions in your pnpm lockfile (and optional resolutions via pnpm why)
Author: Kyle Kirbatski
Latest version: 1.0.5

# pnpm-locksmith

[![License: Unlicense](https://img.shields.io/badge/license-Unlicense-blue.svg)](LICENSE)

Synchronize your package.json to match the exact versions in your pnpm lockfile.

This CLI updates:

- `dependencies` and `devDependencies`: pins each entry to the version currently installed (from pnpm ls --json)
- `resolutions` and `pnpm.overrides`: sets each entry to the version reported by `pnpm why PACKAGE_NAME`

It writes changes back to package.json.

## Why

Keeping package.json versions aligned with the lockfile helps you:

- Make diffs clearer (no “^/~” ranges when you really want the locked version)
- Improve reproducibility (what’s installed is exactly what’s declared)
- Reduce accidental upgrades when teammates or CI install

## Requirements

- Node.js 18+ (recommended)
- pnpm installed and on your PATH
- An existing pnpm-lock.yaml (i.e., you’ve already run pnpm install)

## Usage

Run the tool in the root of the package/workspace you want to update.

- One-off (no install):

```sh
pnpm dlx @kkirbatski/pnpm-locksmith
```

- As a dev dependency:

```sh
pnpm add -D @kkirbatski/pnpm-locksmith
pnpm exec pnpm-locksmith
```

What to expect:

- The command updates package.json in place.
- If a dependency in package.json cannot be found in the current pnpm dependency graph, the tool will error (ensure you’ve installed first).

Tip: run under version control so you can quickly review or revert changes.

```sh
git diff package.json
# If needed
git checkout -- package.json
```

## How it works

- Reads the current `package.json`
- Reads your dependency graph via `pnpm ls --json`
- For each key in `dependencies` and `devDependencies`, finds the installed version, and writes that exact version back to `package.json`
- If a `resolutions` or `pnpm.overrides` field exists, runs `pnpm why PACKAGE_NAME --json` and uses the reported version
- Writes the updated `package.json` to disk

## Notes and limitations

- The tool expects dependencies in `package.json` to already be installed. Run `pnpm install` first.
- Monorepos: Should work.
- This tool does not add or remove dependencies; it only updates existing version strings.

## Development

- Build:

```sh
pnpm install
pnpm build
```

- Run from source:

```sh
node build/pnpm-locksmith.js
```

## License

This project is dedicated to the public domain under The Unlicense. See the `LICENSE` file for details.
npm package: @kkirbatski/react-native-infinite-scroller
Description: An infinite scroller for react-native.
Author: Kyle Kirbatski
Latest version: 1.0.17

# @kkirbatski/react-native-infinite-scroller

## Intro

This library was created because I was unable to find a good infinite scrolling
component for react-native. The code in this library is heavily inspired by [cubiq](https://github.com/cubiq)'s [iScroll](https://github.com/cubiq/iscroll). A lot of the infinite logic has been ported from iScroll. See [src/InfiniteCalculator.ts](./src/InfiniteCalculator.ts).


## Installation

```
npm install @kkirbatski/react-native-infinite-scroller --save
```

## Usage

Take a look at the [example](./src/example/index.tsx).

Basically you can set wether or not the scroller is infinite, (if it's not
infinite you will need to pass a `totalItemCount` property). If you don't want
it to be infinite, it's your job to prevent rendering of the item in your render
function. If you are rendering an empty item, be sure that the layout of the
item matches that of other items. This library will infer the layout to calculate
item offsets, so if your non-rendered item has no layout, we can't figure out property
width/heights and item offsets.

### Config

```javascript
interface InfiniteScrollerProps<T> {
  dataset(start: number, count: number): Promise<T[]>;
  renderItem: (data: T | null) => React.ReactElement;
  style?: StyleProp<ViewStyle>;
  totalItemCount?: number | null;
  centerInWrapper?: boolean | null;
  startingPosition?: number | null;
  onScrollEnd?: (
  	scrollPosition: number,
  	scroller: InfiniteScroller<T>,
  ) => void | null;
  infiniteElementCount?: number | null;
}
```

## Caveats

This library currently only works on the X-axis as that's all I needed.

## License

This is free and unencumbered software released into the public domain.

Anyone is free to copy, modify, publish, use, compile, sell, or
distribute this software, either in source code form or as a compiled
binary, for any purpose, commercial or non-commercial, and by any
means.
npm package: @kkirbatski/rectangle
Description: A port of OpenFrameworks Rectangle class.
Author: Kyle Kirbatski
Latest version: 2.0.0

# Rectangle

This is a rectangle class for JavaScript that I ported from
[OpenFrameworks](https://github.com/openframeworks/openFrameworks/blob/master/libs/openFrameworks/types/ofRectangle.cpp).

Most of the API is the same.

## Installation

`yarn add @kkirbatski/rectangle`

# License

This is free and unencumbered software released into the public domain.

Anyone is free to copy, modify, publish, use, compile, sell, or
distribute this software, either in source code form or as a compiled
binary, for any purpose, commercial or non-commercial, and by any
means.

In jurisdictions that recognize copyright laws, the author or authors
of this software dedicate any and all copyright interest in the
software to the public domain. We make this dedication for the benefit
of the public at large and to the detriment of our heirs and
successors. We intend this dedication to be an overt act of
relinquishment in perpetuity of all present and future rights to this
software under copyright law.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
IN NO EVENT SHALL THE AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR
OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
OTHER DEALINGS IN THE SOFTWARE.

For more information, please refer to <http://unlicense.org/>
npm package: @kkirbatski/regexp-escape
Description: Escape a string for use in a regular expression.
Author: Kyle Kirbatski
Latest version: 1.1.2

# @kkirbatski/regexp-escape

A super simple, zero dependency library to escape regular expressions.

## Install

```shell
npm install @kkirbatski/regexp-escape --save-dev
```

## Usage

```javascript
const escapeRegExp = require('@kkirbatski/regexp-escape');

console.log(escapeRegExp('q[ O_O ]p'))
```

## Source

```javascript
const specialChars = [
	'^',
	'$',
	'\\',
	'.',
	'*',
	'+',
	'?',
	'(',
	')',
	'[',
	']',
	'{',
	'}',
	'|'
].map(specialChar => '\\' + specialChar);

const specialCharsRegExp = new RegExp(`[${specialChars.join('')}]`,'g');

module.exports = function escapeRegExpString(subject){
	return subject.replace(specialCharsRegExp,'\\$&');
}
```