open-index/open-npm huggingface dataset:
npm package: @masol/llmgraph
Description: 将rxjs按照fbp概念，包装为节点库--并在节点库基础上允许执行flowchart.
Author: masol
Latest version: 0.0.2

# pkg-placeholder

[![npm version][npm-version-src]][npm-version-href]
[![npm downloads][npm-downloads-src]][npm-downloads-href]
[![bundle][bundle-src]][bundle-href]
[![JSDocs][jsdocs-src]][jsdocs-href]
[![License][license-src]][license-href]

_description_

## Note for Developers

This starter recommands using [npm Trusted Publisher](https://github.com/e18e/ecosystem-issues/issues/201), where the release is done on CI to ensure the security of the packages.

To do so, you need to run `pnpm publish` manually for the very first time to create the package on npm, and then go to `https://www.npmjs.com/package/<your-package-name>/access` to set the connection to your GitHub repo.

Then for the future releases, you can run `pnpm run release` to do the release and the GitHub Actions will take care of the release process.

## Sponsors

<p align="center">
  <a href="https://cdn.jsdelivr.net/gh/antfu/static/sponsors.svg">
    <img src='https://cdn.jsdelivr.net/gh/antfu/static/sponsors.svg'/>
  </a>
</p>

## License

[MIT](./LICENSE) License © [Anthony Fu](https://github.com/antfu)

<!-- Badges -->

[npm-version-src]: https://img.shields.io/npm/v/pkg-placeholder?style=flat&colorA=080f12&colorB=1fa669
[npm-version-href]: https://npmjs.com/package/pkg-placeholder
[npm-downloads-src]: https://img.shields.io/npm/dm/pkg-placeholder?style=flat&colorA=080f12&colorB=1fa669
[npm-downloads-href]: https://npmjs.com/package/pkg-placeholder
[bundle-src]: https://img.shields.io/bundlephobia/minzip/pkg-placeholder?style=flat&colorA=080f12&colorB=1fa669&label=minzip
[bundle-href]: https://bundlephobia.com/result?p=pkg-placeholder
[license-src]: https://img.shields.io/github/license/antfu/pkg-placeholder.svg?style=flat&colorA=080f12&colorB=1fa669
[license-href]: https://github.com/antfu/pkg-placeholder/blob/main/LICENSE
[jsdocs-src]: https://img.shields.io/badge/jsdocs-reference-080f12?style=flat&colorA=080f12&colorB=1fa669
[jsdocs-href]: https://www.jsdocs.io/package/pkg-placeholder
npm package: @mason-cli/core
Description: Mason is a lightweight and modular command line toolkit.
Author: Andrew Ewing
Latest version: 2.1.1

# About Mason
Mason is a modular command line toolkit written in ES6 with promises.

## Installation
For command line usage, install Mason globally:
`npm i -g mason.cli`

## Configuration
You can load additional plugins with Mason by creating a `mason.config.js` file in your project directory.

### Example Configuration:
`mason.config.js`
```js
module.exports = function(Mason) {
	Mason.registerCommand('test', function(input, config, Mason, resolve, reject) {
        Mason.spawn(`${__dirname}/node_modules/.bin/jest`);
	});

	return {
  		plugins: ['mason.plugin.scaffold', './path/to/LocalPlugin']
	};
};
```
## Now with support for Babel!
`mason.babel.js`
```js
export default (Mason) => {
    Mason.registerCommand('test', (input, config, Mason, resolve, reject) => {
        Mason.spawn(`${__dirname}/node_modules/.bin/jest`);
    });
};
```

In this example, mason.plugin.scaffold is a package installed from NPM and './path/to/LocalPlugin' is the path of a local js module.

## Usage
By default, Mason currently comes with only two commands: `version` and `help`.
As we learned above, Mason does support plugins. Plugins can extend Mason and introduce additional commands.

# Authoring a Plugin
An example of plugin support can be found in [the mason-scaffold repository](https://github.com/aewing/mason-scaffold)

## Building Mason
To build Mason, run the following:
`npm run build`

## Example Local Application
To build the Mason example application, run the following:
`npm run build-example`

To run the application, from the example directory, run the following:
`../bin/mason.js test`

Or, with Mason installed globally:
`mason test`
npm package: @mason-cli/plugin-knex
Description: Mason CLI support for managing Knex installations
Author: Andrew Ewing
Latest version: 2.1.1

# mason-plugin-knex
Mason CLI support for managing Knex installations

## Commands
* migrate:up
    - Runs all pending migrations
* migrate:down
    - Rolls back most recent migrations
* migrate:reset
    - Truncates or deletes all data, or optionally drops all tables
    - Options:
        + --exclude=table_a,table_b

        `Provide a list of tables to exclude from the reset`

        + --delete

        `Delete table contents instead of truncating`

        + --drop

        `Drop tables instead of deleting or truncating`
npm package: @mason-cli/plugin-lerna
Description: Mason CLI support for managing Lerna installations
Author: Andrew Ewing
Latest version: 2.1.1

# mason-plugin-lerna
Mason CLI support for managing Lerna installations

## Commands
* add
    - Add one or more packages to the local scope
* bootstrap
    - Bootstrap local packages(s)
* run
    - Run an npm script on all packages in parallel
npm package: @mason-cli/plugin-scaffold
Description: Scaffolding plugin for Mason CLI
Author: Andrew Ewing
Latest version: 2.1.1

# Mason Scaffold
Easily scaffold project templates via the command line

## Installation
To add scaffolding to your project, install the plugin:
`npm i -g mason.plugin.scaffold`

## Configuration
To register your custom templates, edit your project's Mason configuration using the following example:
```
module.exports = {
	scaffold: {
		templates: {
			'controller': './templates/controller.js',
			'model': './templates/model.js',
			'admin-panel': './templates/admin-panel.html'
		},
		definitions: {
			foo: 'ConfigForFoo'
		}
	}
};
```
### Definitions
As you can see in the configuration example above, you can also define "Definitions" that serve as default template bindings.
Any variable defined in the config will use the config value if none is provided for the template.

## Usage
Scaffold is used as follows:
`mason scaffold [template-name] [destination-filename] --foo=bar --baz=bang`
Where `[template-name]` is the registered name of the template you want to use, `[destination-filename]` is the full path to the new file you wish to create, `foo` is a template variable that will be replaced with `baz`, and so on.

## Template Syntax
By default, template replacements are prefixed with `@@{` and suffixed with `}@@`.
A template containing `function @@{foo}@@() {}` in the above usage example would result in a file containing `function bar() {}`

# Mason Plugin Support
Scaffold makes it easy to regiter additional templates from within a Mason plugin.
To do so, make use of the 'addScaffoldTemplate' event:
```
Mason.emit('addScaffoldTemplate', { name: 'my-template-name', location: __dirname + '/templates/my-template.js' });
```

## Building Mason Scaffold
To build this plugin, run the following from the project directory:
`npm run build`

## Contributions
Thanks to @jaimemasson for the idea and the name.
npm package: @masonator/get-mcp-keys
Description: A lightweight utility that securely loads API keys for Cursor MCP servers from your home directory, preventing accidental exposure of secrets in repositories. Keep your credentials safe while maintaining seamless integration with AI coding assistants.
Author: Stu Mason
Latest version: 1.0.1

# 🔐 get-mcp-keys

**Stop accidentally committing API keys to your repos!**

## The Problem

When using Cursor AI (and other AI coding assistants) with MCP servers, you need API keys in your `./cursor/mcp.json` file:

```json
{
  "mcpServers": {
    "firecrawl": {
      "command": "npx",
      "args": [
        "-y",
        "firecrawl-mcp"
      ],
      "env": {
        "FIRECRAWL_API_KEY": "sk_live_ohno-this-should-NOT-be-in-git" // 💀
      }
    }
  }
}
```

**This is a security nightmare waiting to happen.** One accidental commit and your keys are exposed in your Git history.

## 💯 The Solution

`get-mcp-keys` loads your API keys from a secure file in your home directory, keeping them out of your repositories entirely.

## ⚡ Quick Start

### 1. Create a `.mcprc` file in your home directory

```bash
touch ~/.mcprc
chmod 600 ~/.mcprc  # Make it readable only by you
```

### 3. Add your API keys to the file

```bash
# ~/.mcprc
FIRECRAWL_API_KEY="your_actual_api_key_here"
BRAVE_API_KEY="another_secret_key_here"
# Add any other MCP server keys you use
```

### 4. Update your MCP configuration to use get-mcp-keys

```json
{
  "mcpServers": {
    "firecrawl": {
      "command": "npx",
      "args": [
        "@masonator/get-mcp-keys", // 🔐
        "npx",
        "-y",
        "firecrawl-mcp"
      ]
    }
  }
}
```

**That's it!** The `get-mcp-keys` utility will:

- Load your API keys from `~/.mcprc`
- Inject them as environment variables
- Run your MCP server command with the keys available

## 🛡️ Security

- Your API keys stay in your home directory
- Keys are never committed to repositories
- Keys are loaded only when needed
- Debug output shows only first/last few characters of keys

## 🧰 Supported MCP Servers

Works with any MCP server that needs environment variables, including:

- FireCrawl
- Brave Search
- Supabase
- And any other MCP servers you configure!

## 🔍 How It Works

`get-mcp-keys` reads your `.mcprc` file, adds those environment variables to the current environment, and then executes whatever command you specify after it in the args list. It's simple yet effective!

## 📋 License

MIT

---

⭐ If this saved you from committing your keys, star the repo!
npm package: @masonfawks/cloudexis
Description: A official bots.cloudexis.us api
Author: Mason
Latest version: 1.0.2

﻿**NPM:** [npmjs.com/package/bots-cloudexis-us](https://www.npmjs.com/package/bots-cloudexis.us/)<br>

## Installation
- `npm i bots-cloudexis-us`

#### 1. Where can I get bots.cloudexis.us api?
  Ans: [JavaScript](https://www.npmjs.com/package/bots-cloudexis-us)


#### 2. How do I install it?
  Ans: JavaSciprt: npm i bots-cloudexis-us or npm install bots-cloudexis-us


#### 3. Does it have any GitHub Repository?
  Ans: Yes It Is [Here](https://github.com/cloudexis)

#### 4. What is it's uses?
  Ans: To get the daily vote count, server count and information about your bot.
Examples:  avatar, botID, discriminator, shortDescription, prefix, votes, serverCount, ownerID, owner, co-owners, tags, longDescription, certificate etc.

#### 5. How can I get my bot's server count?
  `Ans: JavaScript:`
```js
const cloudexis = require("bots-cloudexis-us");
const dbl = new cloudexis("TOKEN-HERE", client);

client.on("ready", async () => {
  dbl.serverCount();
  console.log("Server count posted")

```

#### 6. How can I get my bot's vote count?
  `Ans:`
```js
let hasVote = await dbl.hasVoted("Your-bot-id");
  if(hasVote === true) {
    console.log("Voted")
  } else {
    console.log("Vote please.")
  }
  
  
  let search = await dbl.search("Your-bot-id")
  console.log(search)

```

#### 7. Full Example?
  `Ans:`
```js
const cloudexis = require("bots-cloudexis-us");
const dbl = new cloudexis("TOKEN-HERE", client);

client.on("ready", async () => {
  dbl.serverCount();
  console.log("Server count posted")
  
  let hasVote = await dbl.hasVoted("your-bot-id");
  if(hasVote === true) {
    console.log("Voted")
  } else {
    console.log("Vote please.")
  }
  
  
  let search = await dbl.search("Your-bot-id")
  console.log(search)

  /* SearchResults
  {
    avatar: '',
    botID: '',
    username: '',
    discrim: '',
    shortDesc: '',
    prefix: '? [changable]',
    votes: 25,
    ownerID: '',
    owner: '',
    coowners: [ '' ],
    tags: [ 'Moderation', 'NSFW', 'Music' ],
    longDesc: longDesc,
    certificate: 'Certified'
  }
  */
});

```
npm package: @masongzhi/api-queue
Description: 用于应对vue或react开发时，A组件使用a接口，B组件使用b接口，同时b接口需要a接口先执行，然后把数据储存到store。
Author: masongzhi
Latest version: 1.0.0

# api-queue
用于应对vue或react开发时，A组件使用a接口，B组件使用b接口，同时b接口需要a接口先执行，然后把数据储存到store。

![image](https://user-images.githubusercontent.com/19945145/124723857-0af92a80-df3e-11eb-9e4e-3295875cae6d.png)

这样的好处在于，俩个组件间有依赖需求的接口不需要重复调用，也不需要做复杂的数据交互，只需要在执行前加上`await apiQueue('xxx')`即可。


## USAGE
> npm install api-queue


### 以vue做示范
```javascript
// A组件
import api from '@/services';
import { mapActions } from 'vuex';

export default {
    methods: {
        ...mapActions(['setAData']),
        async getData() {
            const data = await api.a();
            this.setAData(data);
        }
    },
    created() {
        this.getData();
    }
}
```

```javascript
// B组件
import api from '@/services';
import { mapState } from 'vuex';
import apiQueue from 'apiQueue';

export default {
    computed: mapState(['aData']),
    methods: {
        ...mapActions(['setAData']),
        async getData() {
            await apiQueue.wait('a');
            await api.b({
                data: this.aData
            });
        }
    },
    created() {
        this.getData();
    }
}
```

```javascript
// store
import Vue from 'vue';
import Vuex from 'vuex';
import api from '@services';

Vue.use(Vuex);

const state = {
    aData: {}
}

const actions = {
    async setAData({ commit }, data) {
        commit('SET_A_DATA', data);
    },
}

const mutations = {
  SET_A_DATA(s, val) {
    s.aData = val;
  }
}

export default new Vuex.Store({
  state,
  actions,
  mutations
});

```

```javascript
// services
import xhr, { get, post } from 'XHR-AXIOS';
import apiQueue from 'apiQueue';

const delayPost = (url, data) => {
    const apiName = url.split('/').pop();
    apiQueue.push(apiName);
    return post(url, data).then(d => d, (e) => {
        queue.finish(apiName);
        return Promise.reject(e);
    });
};

const delayGet = (url, data) => {
  const apiName = url.split('/').pop();
  apiQueue.push(apiName);
  return get(url, data).then(d => d, (e) => {
    queue.finish(apiName);
    return Promise.reject(e);
  });
};

export default {
  a: data => delayGet('/a', data),
  b: data => delayPost('/b', data)
};
```