open-index/open-npm huggingface dataset:
npm package: @meadow/redux-api-middleware
Description: API middleware for redux
Latest version: 3.0.0

# Redux API Middleware

`redux-api-middleware` provides a middleware function to use as part of the `redux` dispatch chain. It is intended for use with the Meadow API promise library to provide a middleware to dispatch actions for `REQUEST`, `SUCCESS`, and `FAILURE`.

## Installation

`npm install @meadow/redux-api-middleware`

## Usage

Configure store:

```javascript
import apiMiddleware from '@meadow/redux-api-middleware';
import thunkMiddleware from 'redux-thunk';

const middleware = [thunkMiddleware, apiMiddleware];

const createStoreWithMiddleware = applyMiddleware(...middleware)(createStore);
```

Action:

```javascript
import {
  FETCH_ORGANIZATION_REQUEST,
  FETCH_ORGANIZATION_SUCCESS,
  FETCH_ORGANIZATION_FAILURE
} from './constants';
import { CALL_API } from '@meadow/redux-api-middleware';

export function fetchOrganization () {
  return (dispatch, getState) => {
    return dispatch({
      [CALL_API]: {
        types: [
          FETCH_ORGANIZATION_REQUEST,
          FETCH_ORGANIZATION_SUCCESS,
          FETCH_ORGANIZATION_FAILURE
        ],
        promise: Meadow.getOrganization()
      }
    });
  };
}
```
npm package: @meadow/redux-ensure-fsa
Description: Redux middleware to check for flux standard actions
Latest version: 2.0.0

# Redux Ensure Flux Standard Action Middleware

`redux-ensure-fsa` provides a middleware function to use as part of the `redux` dispatch chain. It is intended for use in development only to check that all actions at the end of the chain follow the [Flux Standard Action](https://github.com/acdlite/flux-standard-action) protocol.

## Installation

`npm install @meadow/redux-ensure-fsa`

## Usage

```javascript
import { createStore, applyMiddleware } from 'redux';
import ensureFSAMiddleware from '@meadow/redux-ensure-fsa';
import thunkMiddleware from 'redux-thunk';

let middleware = [thunkMiddleware];

if (process.env.NODE_ENV !== 'production') {
  const fsaMiddleware = ensureFSAMiddleware({
    ignore: function (action) {
      return false;
    }
  })

  middleware = [...middleware, fsaMiddleware];
}

const createStoreWithMiddleware = applyMiddleware(...middleware)(createStore);
```

- - - 

[![ghit.me](https://ghit.me/badge.svg?repo=meadow/redux-ensure-fsa)](https://ghit.me/repo/meadow/redux-ensure-fsa)
npm package: @meadowsjared/qhotkeys
Description: Electron global shortcut registrar that doesn't override pre-existing shortcuts
Author: meadowsjared
Latest version: 1.1.18

# qHotkeys
Global shotcut replacement for [Electron's implementation](https://www.electronjs.org/docs/latest/api/global-shortcut) without preventing native OS shortcuts.

This project utilizes [uiohook-napi](https://npmjs.org/uiohook-napi). It depends on them and might not work on every system nor node/electron version.

My purpose in creating qHotkeys was to be a replacement for Electron's global shortcut. With qHotkeys you can create a shortcut such as ``CommandOrControl + X`` and your app will still recognize the input AND your os will perform the 'cut' action

This project is early in development. Report any bugs or issues on the [GitHub](https://github.com/meadowsjared/qhotkeys/issues/) issue tracker.

## Installation

Install qHotkeys using npm:

```
npm i @meadowsjared/qhotkeys
```

## Example Implementation

```JavaScript

import { qKeys, qHotkeys } from '@meadowsjared/qhotkeys'

// Create instance
var hotkeys = new qHotkeys()

// ... 
app.whenReady().then(() => {

    // ...

    // Your custom actions
    const hotkeyAction = () => {
        console.log("I pressed my hotkeys!")
    }

    const scrollUpAction = () => {
        console.log("I scrolled up!")
    }

    const scrollDownAction = () => {
        console.log("I scrolled down!")
    }

    // Registers your hotkey actions
    // Command or Control + X = hotkeyAction called
    hotkeys.register([qKeys.CmdOrCtrl, qKeys.X], hotkeyAction)
    
    // Registers your scroll actions
    // Command or Control + ScrollUp = scrollUpAction called
    // Command or Control + ScrollDown = scrollDownAction called
    hotkeys.registerScroll([qKeys.CmdOrCtrl], scrollUpAction, scrollDownAction)
    
    // For scroll register, the hotkey list can be empty
    hotkeys.registerScroll([], scrollUpAction, scrollDownAction)

    // Starts
    hotkeys.run()
    
    // ...
})
```

## To-Do List
This project is early in development and I have lots of ideas to expand the capabilities. Here's a roadmap of planned additions to qHotkeys.

- Add event info to the action callbacks
- Individual scroll registers
- Add mouse buttons
- Add mouse move
- Horizontal Scroll

Anymore ideas? Create an issue on the github page!

## License

[MIT](https://github.com/meadowsjared/qHotkeys/blob/main/LICENSE)

Maintained by [meadowsjared](https://github.com/meadowsjared).

## Credits
Based on the original work by [QarthO](https://github.com/QarthO).
npm package: @meaganewaller/config
Description: Shared configs for meaganewaller's projects
Author: Meagan Waller
Latest version: 0.0.1

# config

A monorepo containing the shared config files for meaganewaller's projects,
including ESLint configuration, Prettier configurations, and TypeScript
configurations.

## Packages

This monorepo includes the following packages:

- [@meaganewaller/eslint-config](./packages/eslint-config): ESLint configuration for meaganewaller projects
- [@meaganewaller/prettier-config](./packages/prettier-config): Prettier configuration for meaganewaller projects
- [@meaganewaller/tsconfig](./packages/tsconfig): TypeScript configuration for meaganewaller projects

## Usage

Each package in this monorepo includes its own README file with instructions on how to use it. To use a package, install it using npm or yarn, and then follow the instructions in its README.

## License

This project is licensed under the [MIT License](LICENSE).
npm package: @meaganewaller/eslint-config
Description: The ESLint config for meaganewaller projects
Author: Meagan Waller
Latest version: 1.0.0

# @meaganewaller/eslint-config

The ESLint configuration for TypeScript projects by meeaganealler.

## Installation

Install the package via pnpm:

```bash
pnpm install --D @meaganewaller/eslint-config
npm install --save-dev @meaganewaller/eslint-config
yarn add --dev  @meaganewaller/eslint-config
```

## Usage

Extend the configuration in your ESLint config file:

```js
module.exports = {
  extends: ['@meaganewaller/eslint-config'],
}
```

## Configuration

The configuration includes the following plugins and extends:

- eslint:recommended
- plugin:react/recommended
- plugin:@typescript-eslint/recommended
- plugin:@typescript-eslint/eslint-recommended
- plugin:react-hooks/recommended
- plugin:jsx-a11y/recommended
- plugin:prettier/recommended
- simple-import-sort
- unused-imports

## License

This project is licensed under the [MIT License](LICENSE).
npm package: @meaganewaller/prettier-config
Description: The prettier config for meaganewaller projects
Author: Meagan Waller
Latest version: 1.0.8

# @meaganewaller/prettier-config

The prettier config for meaganewaller projects

## Installation

Install the package via your package manager:

```bash
pnpm add -D @meaganewaller/prettier-config
npm install --save-dev @meaganewaller/prettier-config
yarn add --dev @meaganewaller/prettier-config
```

## Usage

To use this prettier config, just reference it in your `package.json` file:

```json
{
  "name": "my-project",
  "prettier": "@meaganewaller/prettier-config",
  "version": "1.0.0"
}
```

You can also reference it in your `.prettierrc.js` file:

```js
module.exports = "@meaganewaller/prettier-config";
```

## Configuration

This prettier config includes the following settings:

- `arrowParens`: Always include parentheses around a sole arrow function parameter.
- `singleQuote`: Use single quotes instead of double quotes.
- `jsxSingleQuote`: Use single quotes in JSX.
- `tabWidth`: Set the width of tabs to 2 spaces.
- `semi`: Do not include semicolons at the end of statements.
- `plugins`: Include the following plugins:
  - `prettier-plugin-prisma`: Format Prisma schema files.
  - `prettier-plugin-sort-json`: Sort keys in JSON files.
  - `prettier-plugin-tailwindcss`: Format Tailwind CSS files.

You can modify these settings by creating your own `prettier.config.js` file and extending this config:

```js
module.exports = {
  ...require("@meaganewaller/prettier-config"),
  semi: true,
};
```

## License

This project is licensed under the [MIT License](LICENSE).
npm package: @meaganewaller/tsconfig
Description: The typescript config for meaganewaller projects
Author: Meagan Waller
Latest version: 1.0.1

# @meaganewaller/tsconfig

The TypeScript config for meaganewaller projects

## Installation

Install the package via your package manager:

```bash
pnpm add -D @meaganewaller/tsconfig
yarn add --dev @meaganewaller/tsconfig
npm install --save-dev @meaganewaller/tsconfig
```

## Usage

To use `@meaganewaller/tsconfig`, create a `tsconfig.json` file in the root
directory of your TypeScript project and extend `@meaganewaller/tsconfig`:

```json
{
  "extends": "@meaganewaller/tsconfig"
}
```

This will extend the `tsconfig.json` file with all of the options and settings defined in `@meaganewaller/tsconfig`.

## License

This project is licensed under the [MIT License](LICENSE).
npm package: @mealection/react-native-boring-avatars
Description: React Native implementation of boring avatars
Author: Luke Hartman
Latest version: 1.1.2

# react-native-boring-avatars

React Native implementation of [boring avatars](https://boringavatars.com/)

Forked from [https://github.com/luhart/react-native-boring-avatars](https://github.com/luhart/react-native-boring-avatars).

## Why Fork?

In the original library, there is heavy use of magic strings and hardcoded values. This caused heavy pixellation when trying to make avatars larger than their default values.

For an understanding of how this all works please see this blog post:
[https://mealection.com/blog/forking-react-native-boring-avatars](https://mealection.com/blog/forking-react-native-boring-avatars)

Couldn't we have made a Pull Request? Yes, but the original library seems to have stagnated a bit with no recent changes and serveral hanging Issues. We also wanted to impose our own code style and TypeScipt preferences.

## Installation

```sh
yarn add @mealection/react-native-boring-avatars
```

## Usage

```js
// ...
import Avatar from 'react-native-boring-avatars';

<Avatar
  size={40}
  name="Sacagawea"
  variant="pixel"
  colors={['#92A1C6', '#146A7C', '#F0AB3D', '#C271B4', '#C20D90']}
/>;
```

## Caveat

The marble variant is not suppported. This is because `react-native-svg` does not support the SVG `filter` attribute which the marble variant depends on. 🙁 Check [here](https://github.com/react-native-svg/react-native-svg/issues/150) for more details on react-native-svg on this issue.

## License

MIT
npm package: @mealprime/recipe-ingredient-parser
Description: Natural language parser for recipes and ingredient lists, incl. combining ingredients
Author: Nicolai Safai
Latest version: 1.2.0

# recipe-ingredient-parser
Natural language parser for recipes and lists of ingredients. Can parse a string into an object and also combine an array of these ingredient objects.

## About
This project was built on top of code written by [mackenziefernandez](https://github.com/mackenziefernandez/recipe-parser). 

What's different from the original? 
- contains some extra units (including units like `large`, `pinch`, etc.).
- can parse and combine ingredients that have a quatity range (for example '1-2 eggs')
- assumes that any clarifications in an ingredient (in parentheses), should be placed at the end of the ingredient, not at the beginning. For example "1-2 eggs (brown eggs preferrably)" instead of "1-2 (brown eggs preferrably) eggs"
- will *eventually* handle combining  with different units (for example, combining `45 mL milk` and `6 cups milk`)

## To install
`npm install @mealprime/recipe-ingredient-parser` or `yarn add @mealprime/recipe-ingredient-parser-v2`

## To use
`import { parse } from 'recipe-ingredient-parser-v2';`

And then use on a string, for example:
`parse('1 teaspoon basil');`

Will return an object:
```
{
  quantity: 1,
  unit: 'teaspoon',
  ingredient: 'basil',
  minQty: 1,
  maxQty: 1
};
```

### Combine ingredient objects
```
combine([{
  quantity: 1,
  unit: 'teaspoon',
  ingredient: 'basil',
  minQty: 1,
  maxQty: 2,
},
{
  quantity: 2,
  unit: 'teaspoon',
  ingredient: 'basil',
  minQty: 2,
  maxQty: 2
}]);
```

Will return
```
[{
  quantity: 3,
  unit: 'teaspoon',
  ingredient: 'basil',
  minQty: 3,
  maxQty: 4
}]
```


### Unicode Fractions
Will also correctly parse unicode fractions into the proper amount

### Development	
Clone the repo and `yarn` to install packages. If `yarn test` comes back good after your code changes, give yourself a pat on the back.	
	
## Natural Language Parsing	
This project uses Natural, for more information, see https://dzone.com/articles/using-natural-nlp-module	
	
### Publishing	
Checkout https://docs.npmjs.com/getting-started/publishing-npm-packages for more info