open-index/open-npm huggingface dataset:
npm package: @momsfriendlydevco/sift-sieve
Description: Wrapper around Sift which provides other ReST functionality
Author: Matt Carter
Latest version: 2.0.0

@MomsFriendlyDevCo/Sift-Sieve
=============================
Wrapper around [Sift](https://github.com/crcn/sift.js) which provides other ReST functionality.

This project extends the existing Sift syntax to include support for `limit`, `skip`, `sort` and `select`, which are common meta keys in most ReST endpoints.

```javascript
var sieve = require('@momsfriendlydevco/sift-sieve');

var data = [
	{name: 'Joe Random', age: 22, email: 'joe@mfdc.biz'},
	{name: 'Jane Random', age: 25, email: 'jane@mfdc.biz'},
	{name: 'Nora Clarke', age: 35, email: 'norah@gmail.com'},
	{name: 'Michael Chaos', age: 35, email: 'michael@gmail.com'},
];

sieve(data, {name: 'Joe Random'}); //= Just the "Joe Random" person as an array, exactly like sift
sieve(data, {age: {$gt: 25}}); //= Everyone over the age of 25
sieve(data, {age: {$gt: 25}, limit: 1}); //= Only the first person over 25
sieve(data, {age: {$gt: 25}, sort: 'age'}); //= Everyone over the age of 25 sorted by youngest to oldest
sieve(data, {age: {$gt: 25}, sort: '-age,name'}); //= Everyone over the age of 25 sorted by oldtest to youngest and name
sieve(data, {age: {$gt: 25}, skip: 1, limit: 1}); //= The second person over 25
sieve(data, {age: {$gt: 25}, skip: 1, limit: 1, select: 'name'}); //= ...Just their name
```

See the [testkits](./test) for more complex examples.


API
===
This module returns a single function which takes the data to filter, the query criteria and settings.


sieve(data, query, options)
---------------------------
Data is always an array. Query is an (optional) object in Sift / Mongo query format, options is an optional object of options.

Options are passed directly to Sift with the following exceptions:

| Option       | Type      | Default | Description                                                                            |
|--------------|-----------|---------|----------------------------------------------------------------------------------------|
| `remapArray` | `boolean` | `true`  | Whether to transform simple `{key: Array}` keys into `{key: {$in: Array}}`             |
| `count`      | `boolean` | `false` | Whether to return a single Number of the matching elements rather than the found items |
npm package: @momsfriendlydevco/spreadsheet-handlebars
Description: Handlebars based templates for spreadsheets
Author: Matt Carter
Latest version: 0.0.0
Deprecated: Please use @momsfriendlydevco/spreadsheet-templater

Spreadsheet-Handlebars
======================
[Handlebars](http://handlebarsjs.com) integration for spreadhssets (via [XLSX](https://docs.sheetjs.com)).

This plugin allows a spreadsheet to use handlebars notation to replace cell contents which enables an input spreadsheet to act as a template for incomming data.


```javascript
var SpreadsheetHandlebars = require('@momsfriendlydevco/spreadsheet-handlebars');

new SpreadsheetHandlebars('input.xlsx')
	.data({...})
	.apply()
	.write('output.xlsx')
```


API
===
The module exposes a single object.


Constructor(options | filename)
-------------------------------
Setup the object either with an options object or a template filename to use.


set(key, [val])
---------------
Set a single or multiple options (if key is an object).
Lodash array and dotted notation is supported for the key.


readTemplate()
--------------
Parse the input template file.
This function is automatically called if constructor is given a filename when initialized.


apply([data])
-------------
Apply the given data (or the data specified in `options.data`) to the loaded template.


json()
------
Convenience function to return the workbook as a JSON object
This will return an object with each key as the sheet ID and a 2D array of cells
npm package: @momsfriendlydevco/spreadsheet-templater-cli
Description: CLI for @momsfriendlydevco/spreadsheet-templater
Author: Matt Carter
Latest version: 1.0.2

Spreadsheet-Templater-CLI
=========================
Command line interface for [@MomsFriendlyDevCo/Spreadsheet-Templater](https://github.com/MomsFriendlyDevCo/spreadsheet-templater)

This command takes an input + output file path and allows setting of data within the spreadsheet.

```
Usage: spreadsheet-templator [arguments] <input.xlsx> <output.xlsx>

Options:
  -V, --version         output the version number
  -d, --data [key=val]  Set a data value - use multiple times if needed
                        (default: {})
  --repeat [key=size]   Create an empty data array of a given size (useful when
                        using faker) - can be specified multiple times
                        (default: {})
  -i, --input [file]    Specify an input XLSX file (alternative method)
  -o, --output [file]   Specify an output XLSX file (alternative method)
  -v, --verbose         Be verbose - use multiple to increase verbosity
  -h, --help            display help for command

Notes:
  * @faker-js/faker is available as `faker` within a template
  * lodash is available as `_` within a template

Examples:

  # Create output.xlsx (from input.xlsx) setting `people` to an empty array of 100 items
  spreadsheet-templator --repeat=people=100 input.xlsx output.xlsx
```
npm package: @momsfriendlydevco/undo-buffer
Description: Undo-Buffer ==================
Author: MFDC
Latest version: 0.0.1

Undo-Buffer
==================



```javascript
const undoBuffer = new UndoBuffer({
    objectHash: function(d, i) {
        // Allow matching for arrays of objects by object key rather than array index.
        if (d && Object.prototype.hasOwnProperty.call(d, '_id')) {
            return d._id;
        } else if (d && Object.prototype.hasOwnProperty.call(d, 'id')) {
            return d.id;
        } else {
            return '$$index:' + i;
        }
    },
});

undoBuffer.update({ a: 'baz' }, { a: 'foo', b: 'bar' });
undoBuffer.undo(observe);
undoBuffer.undo(observe);
undoBuffer.redo(observe);
```


API
===
npm package: @momsfriendlydevco/undo-buffer-angular
Description: Undo-Buffer-Angular ==================
Author: MFDC
Latest version: 0.0.2

Undo-Buffer-Angular
==================



```javascript
app.factory('angular-factory', function($undoBuffer) {
    const obj = {};

    const undoBuffer = $undoBuffer.watch(_.omit(obj, [
        'excluded',
        'fields',
    ]));

    obj.doUndo = function() {
        console.time('apply-undo');
        const orig = undoBuffer.enabled;
        undoBuffer.enabled = false;
        undoBuffer.undo(obj).then(doc => {
            Object.assign(obj, doc);
            $timeout(() => {
                undoBuffer.enabled = orig;
                console.timeEnd('apply-undo');
            });
        });
    };

    obj.doRedo = function() {
        console.time('apply-redo');
        const orig = undoBuffer.enabled;
        undoBuffer.enabled = false;
        undoBuffer.redo(obj).then(doc => {
            Object.assign(obj, doc);
            $timeout(() => {
                undoBuffer.enabled = orig;
                console.timeEnd('apply-redo');
            });
        });
    };
});
```


API
===
npm package: @momsfriendlydevco/vue-file-browser
Description: Feature complete file browser for Vite/Vue + Express
Author: Matt Carter
Latest version: 0.0.0

@MomsFriendlyDevCo/Vue-File-Browser
===================================
Pluggable fully-featured file-management module for Vue + Express.


Integration
===========

Backend
-------
Import the Express injectable into your ExpressJS project:

See [src/files.js](./src/files.js) for a full list of.

```javascript
import FileBrowser from '@momsfriendlydevco/vue-file-browser/backend';

// Initalize `app` somehow - `const app = express()` usually

// Inject the FileBrowser backend
FileBrowser({
    app, // Pass on the Express style app for decoration

    // Read in config from .env / Vite env or specify defaults
    rootPath: app.config.FILES_ROOT,
    thumbsPath: app.config.FILES_THUMBS_ROOT,
    glob: (app.config.FILES_GLOB ?? '**/*.{gif,jpg,jpeg,png,webp} | **/.gander.json').split(/\s*\|\s*/),
    meta: app.config.FILES_META ?? '.gander.json',

    // ...see ./src/files.js for full options list
});
```


Frontend
--------
Include the Vue component in your frontend wrapper code:

See [src/files.vue](./src/files.vue) for a full list of.

```vue
<script>
import FileBrowser from '@momsfriendlydevco/vue-file-browser/frontend';

export default {
	components: {
		// Injectable FileBrowser frontend component
		FileBrowser,
	},
}
</script>

<template>
	<FileBrowser
		:endpoints="{
			list: '/api/files',
		}"
	/>
</template>
```
npm package: @momsfriendlydevco/vue-setpath
Description: Sets a dotted notation path via Vue's `$set` function.
Author: Matt Carter
Latest version: 0.0.2

Vue setPath
========
Sets a dotted notation path via Vue's `$set` function.

Install
-------
```javascript
import VueSetpath from '@momsfriendlydevco/vue-setpath';
Vue.use(VueSetpath);
```

API
------------

| Property           | Type                   | Default                     | Description                                                                                |
|--------------------|------------------------|-----------------------------|--------------------------------------------------------------------------------------------|
| `target`             | `object`               | `vm`                        | Meta information object - used by the form editor to configure the widget                  |
| `options.arrayNumeric`          | `boolean`               | `true`          | Process numeric path segments as arrays |
| `options.removeUndefined`       | `boolean`               | `true`  | The human friendly title of the widget                                                     |
| `options.debug`        | `boolean`               | `false` | Also print out debugging information when setting the value |


Returns the set value, like Vue's underlying `$set()`.
npm package: @momuhoka/koishi-plugin-jrrp
Description: 自用今日人品插件，AI生成仅供参考：主要负责协助AI大人完成功能完善和BUG修复
Latest version: 1.0.8

# @momuhoka/koishi-plugin-jrrp

[![npm](https://img.shields.io/npm/v/@momuhoka/koishi-plugin-jrrp?style=flat-square)](https://www.npmjs.com/package/@momuhoka/koishi-plugin-jrrp)

自用今日人品插件，AI生成仅供参考：主要负责协助AI大人完成功能完善和BUG修复
npm package: @mon-studios/collectfun-ui
Description: CollectFun UI Kit by Liquidx Studios
Author: mon-studios
Latest version: 1.0.2

# CollectFUN UI

CollectFUN UI is the design system and library in use at Mon Protocol to build our collectFun app.

## Introduction

CollectFUN UI is built as a [React](https://react.dev/) library, using [Shadcn](https://ui.shadcn.com/) as the base components.

We use [Storybook](https://storybook.js.org) for documenting and displaying our components.
A cloud hosted version of storybook is available at [https://collectfun-ui.vercel.app/](https://collectfun-ui.vercel.app/)

Under the hood, we use Typescript + Vite for builds and TailwindCSS for styling.

## Getting Started as a Contributor

### Installation

- Before installing, please ensure you have [PNPM](https://pnpm.io) installed locally.

1. Install the relevant packages

   ```
   pnpm install
   ```

2. Start your local storybook instance
   ```
   pnpm run storybook
   ```

### Publishing to NPM

- Our package is hosted on NPM: https://www.npmjs.com/package/@mon-studios/collectfun-ui
- While our CI/CD is being configured, all publishing will be done manually.
  - You will require write access from one of our package maintainers
- If you have access, you may publish via:

  ```
  # if necessary
  npm version <major|minor|patch>

  npm publish --access public
  ```

### Sync Library with Other Projects Locally

This library can be run locally with other local projects to avoid re-publishing the NPM package to review changes on the other project.

- In this library:

```bash
pnpm reload-dev:collectfun-ui
```

- In other projects using this library:
  - use `file:` protocol to link packages

```bash
pnpm add file:../collectfun-ui
```

- reload package dependencies
npm package: @mon-studios/mon-ui
Description: MON Protocol UI Kit by Liquidx Studios
Author: mon-studios
Latest version: 0.2.1

# MON UI

MON UI is the design system and library in use at Mon Protocol to build our internal and external products.

## Introduction

MON UI is built as a [React](https://react.dev/) library, using [Shadcn](https://ui.shadcn.com/) as the base components.

We use [Storybook](https://storybook.js.org) for documenting and displaying our components.
A cloud hosted version of storybook is available at [https://design.monprotocol.ai](https://design.monprotocol.ai)

Under the hood, we use Typescript + Vite for builds, TailwindCSS for styling and [Plop](https://github.com/plopjs/plop) for CLI.

## Getting Started as a Contributor

### Installation

- Before installing, please ensure you have [PNPM](https://pnpm.io) installed locally.

1. Install the relevant packages

   ```
   pnpm install
   ```

2. Start your local storybook instance
   ```
   pnpm run storybook
   ```

### Generating a New Component

- This command will start a CLI to help you compose a new component using Shadcn (or not) as a base.
  ```
  pnpm run generate
  ```

### Publishing to NPM

- Our package is hosted on NPM: https://www.npmjs.com/package/@mon-studios/mon-ui
- While our CI/CD is being configured, all publishing will be done manually.
  - You will require write access from one of our package maintainers
- If you have access, you may publish via:

  ```
  # if necessary
  npm version <major|minor|patch>

  npm publish --access public
  ```

### Sync Library with Other Projects Locally

This library can be run locally with other local projects to avoid re-publishing the NPM package to review changes on the other project.

- In this library:

```bash
pnpm reload-dev:mon-ui
```

- In other projects using this library:
  - use `file:` protocol to link packages

```bash
pnpm add file:../mon-ui
```

- reload package dependencies
npm package: @mon-studios/viem-kms-signer
Description: A Viem compatible signer that connects to AWS KMS
Latest version: 1.0.2

# viem-kms-signer

This is a wallet or signer that can be used together with [Viem](https://viem.sh/) applications backed by an AWS KMS private key.

## Getting Started

Install the package

```sh
npm i viem-kms-signer
```

## Usage

### General Connection

```ts
import { KmsSigner } from 'viem-kms-signer';

const kmsCredentials = {
  accessKeyId: 'AKIAxxxxxxxxxxxxxxxx', // credentials for your IAM user with KMS access
  secretAccessKey: 'xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx', // credentials for your IAM user with KMS access
  region: 'us-east-1',
  keyId:
    'arn:aws:kms:us-east-1:123456789012:key/123a1234-1234-4111-a1ab-a1abc1a12b12',
};
const signer = new KmsSigner(kmsCredentials);

// Returns a custom viem account instance
const account = await signer.getAccount();
```

### Writing to Contract

```js
import fs from 'node:fs';
import { KmsSigner } from 'viem-kms-signer';
import { createWalletClient, http } from 'viem';
import { sepolia } from 'viem/chains';

const CONTRACT_ADDRESS = '0xd73fd3e0e32b8ca95096af1e73b0b0337dec20a3'; // E3 Serum Contract
const fileContent = fs.readFileSync('E3SerumABI.json', 'utf8');
const ABI = JSON.parse(fileContent);
const signer = new KmsSigner({
  region: 'ap-southeast-1',
  accessKeyId: process.env.AWS_ACCESS_KEY_ID,
  secretAccessKey: process.env.AWS_SECRET_ACCESS_KEY,
  sessionToken: process.env.AWS_SESSION_TOKEN,
  keyId: process.env.AWS_KMS_KEY_ID,
});

const receiver = '0xCe324a520eD45F88E7E1d09D69c0ac7eA2b4AB08';

const walletClient = createWalletClient({
  chain: sepolia,
  transport: http(
    `https://eth-sepolia.g.alchemy.com/v2/${process.env.ALCHEMY_API_KEY}`,
  ),
});

await walletClient.writeContract({
  account: await signer.getAccount(),
  address: CONTRACT_ADDRESS,
  abi: ABI,
  functionName: 'safeTransferFrom',
  args: [(await signer.getAccount()).address, receiver, 1n, 1n, '0x'],
});
```

## License

MIT

## Credits

- The original repository was written by Jack Chuma, and has since then been forked for our internal usage in Mon-Studios.
- A significant portion of code was inspired by RJ Chow's work published at <https://github.com/rjchow/ethers-aws-kms-signer>.
- Utmost credit goes to Lucas Henning for doing the legwork on parsing the AWS KMS signature and public key asn formats: <https://luhenning.medium.com/the-dark-side-of-the-elliptic-curve-signing-ethereum-transactions-with-aws-kms-in-javascript-83610d9a6f81>