open-index/open-npm huggingface dataset:
npm package: @shdwcat/markdown-it-regexp
Description: plugin that makes regexp replacement simple
Author: shdwcat
Latest version: 0.4.0


Fork of https://github.com/rlidwka/markdown-it-regexp

Make simple [markdown-it](https://github.com/markdown-it/markdown-it) plugins easier.

## Usage:

```js
var md     = require('markdown-it')
var Plugin = require('markdown-it-regexp')

var plugin = Plugin(
  // regexp to match
  /@(\w+)/,

  // this function will be called when something matches
  function(match, utils, currentDocument) {
    var url = 'http://example.org/u/' + match[1]

    return '<a href="' + utils.escape(url) + '">'
         + utils.escape(match[1])
         + '</a>'
  }
)

md()
  .use(plugin)
  .render("hello @user")

// prints out:
// <p>hello <a href="http://example.org/u/user">user</a></p>
```

[Live demo as jsfiddle](https://jsfiddle.net/arve0/nz0Lb6ox/).

## Fair warning:

1. it could be slower than you expect
2. it is a draft, breaking changes might happen
npm package: @shed/cli
Description: mini-shed 命令行工具
Author: nshen
Latest version: 0.2.1

# @shed/cli

:hammer: `mini-shed` 主要的命令行工具，用来创建，编译小游戏，还提供一些辅助功能。

## 安装

由于是命令行工具，需要全局安装

```bash
npm install -g @shed/cli
```
或使用 `yarn`

```bash
yarn global add @shed/cli
```

安装完成后，在命令行中调用 `shed` 命令，如果有提示则表示安装成功。

```bash
shed -h  # -h显示所有命令的 help 信息
```

## 用法

安装成功之后即可在命令行中调用`shed`命令，`shed -h` 查看帮助。

通常为 `shed` + `命令` + `--参数` 的方式使用命令行

## 所有命令

- `shed create <name>` [创建一个新的小游戏](###创建一个新的小游戏)
- `shed build <platform>` [编译到小游戏平台](###编译到小游戏平台)
- `shed spritesheet <folder>`   [创建一个`spritesheet`](###创建一个`spritesheet`)
- `shed fnt <file>` [fnt 格式转 json](###fnt-格式转-json)                   
### 创建一个新的小游戏

```bash
> shed create myGame  # 在当前目录下创建一个新游戏叫做 `myGame`
```
进入 `myGame` 目录，安装依赖

```bash
> cd myGame
> npm install # 或者 yarn install
```

进入开发模式，实时编译，web预览

```bash
> shed build h5 --watch
```

`--watch` 参数可以实时监视代码修改，实时编译。

还可以加 `--debug` 参数，会生成 `sourcemap` ，并且不会压缩代码， 方便调试。

### 编译到小游戏平台

```bash
> shed build wx   # 微信小游戏
> shed build qq   # 手Q小游戏
> shed build tt   # 头条小游戏
> shed build oppo # oppo小游戏
> shed build h5   # web网页版本
```

通常调用后会发布到一个独立**文件夹**下，打开对应的**开发者工具**导入该**文件夹**，根据需要修改对应平台的参数。

各平台不同，且在发展之中，但大同小异，具体参数还需参看各[小游戏平台参考文档](###小游戏平台参考文档)，做相应的修改。

### 创建一个`spritesheet`



命令为 `shed + spritesheet + 文件夹`

>此命令需要提前安装 [`ImageMagick 6.X`](https://imagemagick.org/download/releases/)

```bash
> shed spritesheet ./images   #将./images目录下所有图片打包成一个 spritesheet
```

### fnt 格式转 json

命令 `shed + fnt + 文件名`  可将fnt格式转换成 `mini-shed` 支持的 `json` 格式

```bash
shed fnt ./myfont.fnt  # 将./myfont.fnt 转换成 ./myfont.json
```
### 显示帮助信息

```bash
shed -h
```

## 小游戏平台参考文档

- OPPO https://open.oppomobile.com/wiki/doc#id=10516
- 快应用 https://doc.quickapp.cn/framework/manifest.html

## Contributors

* [nshen](https://github.com/nshen)

## License

[The MIT License](http://opensource.org/licenses/MIT)
npm package: @shed/ecs
Description: mini entity component system framework
Author: nshen
Latest version: 0.2.0

# @shed/ecs

:hammer: 精简高效的 [Entity-Component-System](https://en.wikipedia.org/wiki/Entity–component–syste) 实现，为小游戏设计。

## 安装

```bash
npm install @shed/ecs
```
或使用 `yarn`

```bash
yarn add @shed/ecs
```

## 用法

`ECS` 类是整个系统核心，添加删除 `Entity`，添加`System`，取得过滤 `Entity`的 `Group` 等方法都在这里。

### ECS

创建 `ECS`

```typescript
import { ECS } from "@shed/ecs";

this._ecs = new ECS();
```

ECS 3个字母分别代表

- Entity
- Component
- System

### Entity

创建 Entity使用 

```typescript
let e: Entity = ecs.newEntity();
```

添加进系统 

```typescript
ecs.addEntity(e);
``` 

或使用 `ecs.addNewEntity()`方法 一步达成

Entity 包含一系列的 Components

### Component

Component **只包含数据， 没有方法**，因此非常简单，它只是包含 `type` 属性的普通 `JS Object`。

例如 transform 组件：

``` typescript
{ type: 'transform', x: 0, y: 0, width: 80, height: 80, rotation: 0 }
```

因此创建一个 Entity 并且添加3个 Components 只需

```typescript
this._ecs.addNewEntity('redQuad',
    { type: 'myQuad' },
    { type: 'render2d', visible: true, color: { r: 1, g: 0, b: 0, a: 1 },
    { type: 'transform', x: 0, y: 0, width: 100, height: 100, rotation: 0 },
);
```

### System

通常一个 System 就是继承 `System`，并实现 `init()` ，`update()` 等方法的类。


```typescript
import { System } from "@shed/ecs";

export class MySystem extends System {

    init() {

    }

    update() {

    }
}
```

当`ecs.update()`时，会依照 `system` 的添加顺序调用 `update()`方法。

### Group

Group是高效的关键，通常不必在 `System` 里遍历 `ECS`系统中所有的 `Entity`，只需要创建需要关注Group, 然后遍历该组即可。

```typescript

export class RenderSystem extends System {

    protected _group:Group;

    constructor(ecs: ECS) {
        super(ecs);
        this._group = ecs.getGroup('render', 'transform'); 
        // _group 中所有 Entity 都含有 render 与 transform 组件
    }

}
```

ECS 内部会使`Group` 内成员实时更新，保持最新。


```typescript

// 关注同时包含type为 enemy，render，transform 3个 Component 的所有 Entity
this._enemies = ecs.getGroup('enemy', 'render', 'transform');

```

保持最新也就是说，如果组内某个Entity删除了一个component, 他将不再属于这个组。

或者某个Entity直接被ECS删除掉，他同时也会从这个组中被删掉。

并且创建过的组会被ECS内部缓存，多次取也不会造成效率问题。
npm package: @shed/gl
Description: a webgl wrapper
Author: nshen
Latest version: 0.2.0

# @shed/gl

:hammer: WebGL 的包装与抽象，用以简化 `WebGL API` 使用

## 安装

```bash
npm install @shed/gl
```
或使用 `yarn`

```bash
yarn add @shed/gl
```

## 用法

```typescript
import { Context, Color } from '@shed/gl';

let canvas = document.getElementById('myCanvas');
let gl = canvas.getContext('webgl');
if (gl) {
    // 用 Context 包装原始的 WebGLRenderingContext 对象后
    // 就可以调用Context上的方法了
    let ctx = new Context(gl);
    // 随机背景色
    ctx.clearColor = Color.random();
    ctx.clear();
} else {
    console.log('no webgl support');
}
```

## API


- [Context](#context)
- [Attributes and Uniforms](#attributes-and-uniforms)
- [Program](#program)
- [VertexBuffer](#vertexbuffer)
- [IndexBuffer](#indexbuffer)
- [Texture](#texture)
- [Color](#color)


### Context

>有待完善

### Attributes and Uniforms 

`Uniforms` 和 `Attributes` 都是输入到 `Shader` 中的数据。

- Uniforms 在所有顶点中都相同
- Attributes 通常在每个顶点中都不同

由于 Uniforms 在所有顶点上都相同，所以应该直接设置在Program上

```
program.uXXX(...)
```

Attributes 则应该设置在 `VertexBuffer` 上，让其每个顶点都不同

### Program

Vertex Shader

```glsl
let vs = `
attribute vec3 aVertexPosition;
void main(void) {
    gl_Position = vec4(aVertexPosition, 1.0); 
    gl_PointSize = 4.0;
}`;
```

Fragment Shader

```glsl
let fs = `
precision highp float;
void main(void) {
    gl_FragColor = vec4(0.2,0.5,0.5, 1.0);
}`;
```

创建一个 `Program` 并绑定到当前上下文

```typescript
program = new Program(ctx, vs, fs).bind();
```

>有待完善

### VertexBuffer

向显存中上传 `Buffer` 是非常慢的，所以最好是一次上传一个大的`buffer`，而不应该上传很多小 `buffer`。

多个buffer

```
buffer1 -> | x , y |

buffer2 -> | size |

buffer3 -> | r , g , b|
```

不如一次上传

```
| x , y , size , r , g , b |
```

这种叫做 `Interleaved Buffer`, 在 `VertexBuffer` 类中很容易实现上述优化

>有待完善

### IndexBuffer

>有待完善

### Texture

>有待完善

### Color

>有待完善

## Contributors

* [nshen](https://github.com/nshen)

## License

[The MIT License](http://opensource.org/licenses/MIT)
npm package: @shed/math
Description: math library for webgl
Author: nshen
Latest version: 0.2.1

# @shed/math

`@shed/math`  尝试兼顾效率与 API 易用性数学库

## 安装

```bash
npm install @shed/math
```
或使用 `yarn`

```bash
yarn add @shed/math
```
## 文档

- 2D相关

    - [Vector2D](./docs/vector2d.md)
    - [Matrix2D](./docs/matrix2d.md)

- 3D相关

    - [Vector3D]   施工中
    - [Matrix3D]   施工中
    - [Quaternion] 施工中

- 其他
 
    - [ProjectMatirx](./docs/projectMatrix.md)
    - [MathUtils](./docs/mathUtils.md)

- 通用方法

    以上类通过实现 `ICommonMethod<T>` 接口，都实现了以下通用方法。

    - `reset()`    重新赋值
    - `equal()`    判断是否相等
    - `copyFrom()` 从目标复制
    - `clone()`    克隆一个新对象
    - `toString()` 返回字符串表示
npm package: @shed/new-package
Description: a new mini-shed package
Author: nshen
Latest version: 0.2.0

# @shed/new-package

:hammer: 创建一个新包的模板

## 安装

```bash
npm install @shed/new-package
```
或使用 `yarn`

```bash
yarn add @shed/new-package
```

## 用法


## 实例

```typescript
console.log('hello');
```

## Credits


## Contributors

* [nshen](https://github.com/nshen)

## License

[The MIT License](http://opensource.org/licenses/MIT)
npm package: @shed/platform
Description: 小游戏跨平台API
Author: nshen
Latest version: 0.2.0

# @shed/platform

:hammer: 以微信小游戏为基准，统一各小游戏平台提供的`API`，并 `Promise` 化

各个小游戏平台均实现了 `IPlatform` 接口

当使用 `@shed/cli` 编译到某个平台时，会利用 `rollup` 的 `tree shaking` 自动将其他无关平台的代码删掉。

## 安装

```bash
npm install @shed/platform
```
或使用 `yarn`

```bash
yarn add @shed/platform
```

## 用法

```typescript
let api:IPlatform = Platform.get();
api.xxx();
```
如果在微信平台，上边的代码经过 `@shed/cli` 编译后相当于

```typescript
wx.xxx();
```

### 环境判断

```typescript
let platform = Platform.get();

if(platform.isWX){ 
    console.log('是微信平台'); 
}

if(platform.isH5){
    console.log('是Web平台');
}
```

## Contributors

* [nshen](https://github.com/nshen)

## License

[The MIT License](http://opensource.org/licenses/MIT)
npm package: @shed/render-system
Description: mini-shed 2d render system
Author: nshen
Latest version: 0.1.3

```typescript
this._ecs.addNewEntity('entity',
    { type: 'transform', x: 100, y: 100, width: 100, height: 100 },
    { type: 'render', image: { src: '80x80.png' } }
)
```

依赖于 `state.assets[]` 下的图片

```typescript
ecs.state.assets['80x80.png'] = img
```

依赖 Camera 矩阵，如果没有，默认用topleft

```typescript
ecs.state.vpMatrix
```
npm package: @shed/utils
Description: mini-shed utils classes
Author: nshen
Latest version: 0.2.0

# @shed/utils

:hammer: 一些辅助类，或还不足以放在独立包中的类

## 安装

```bash
npm install @shed/utils
```
或使用 `yarn`

```bash
yarn add @shed/utils
```

## 包含的类

- Gameloop
- EventDispatcher
- Keyboard

## 实例

```typescript
console.log('todo');
```

## Contributors

* [nshen](https://github.com/nshen)

## License

[The MIT License](http://opensource.org/licenses/MIT)
npm package: @shedali/markdown-preprocess
Description: This project was bootstrapped with [TSDX](https://github.com/jaredpalmer/tsdx).
Author: Franz
Latest version: 0.1.1

# TSDX Bootstrap

This project was bootstrapped with [TSDX](https://github.com/jaredpalmer/tsdx).

## Local Development

Below is a list of commands you will probably find useful.

### `npm start` or `yarn start`

Runs the project in development/watch mode. Your project will be rebuilt upon changes. TSDX has a special logger for you convenience. Error messages are pretty printed and formatted for compatibility VS Code's Problems tab.

<img src="https://user-images.githubusercontent.com/4060187/52168303-574d3a00-26f6-11e9-9f3b-71dbec9ebfcb.gif" width="600" />

Your library will be rebuilt if you make edits.

### `npm run build` or `yarn build`

Bundles the package to the `dist` folder.
The package is optimized and bundled with Rollup into multiple formats (CommonJS, UMD, and ES Module).

<img src="https://user-images.githubusercontent.com/4060187/52168322-a98e5b00-26f6-11e9-8cf6-222d716b75ef.gif" width="600" />

### `npm test` or `yarn test`

Runs the test watcher (Jest) in an interactive mode.
By default, runs tests related to files changed since the last commit.
npm package: @shedali/mdgen
Description: ![travis build status](https://travis-ci.com/shedali/gendocs.svg?token=AUbZEknbQyZqD2rGYybU&branch=master) ![package size](https://img.shields.io/bundlephobia/min/@shedali/mdgen.svg?style=flat-square) [![Coverage Status](https://coveralls.io/repos/github/
Author: Franz
Latest version: 0.4.10

# Markdown Post Generator

![travis build status](https://travis-ci.com/shedali/gendocs.svg?token=AUbZEknbQyZqD2rGYybU&branch=master)
![package size](https://img.shields.io/bundlephobia/min/@shedali/mdgen.svg?style=flat-square)
[![Coverage Status](https://coveralls.io/repos/github/shedali/mdgen/badge.svg?branch=master)](https://coveralls.io/github/shedali/mdgen?branch=master)
[![Known Vulnerabilities](https://snyk.io/test/github/shedali/mdgen/badge.svg)](https://snyk.io/test/github/shedali/mdgen)
![commit activity](https://img.shields.io/github/commit-activity/m/shedali/mdgen.svg)
![Code Size](https://img.shields.io/github/repo-size/shedali/mdgen.svg?style=plastic)
[![Commitizen friendly](https://img.shields.io/badge/commitizen-friendly-brightgreen.svg)](http://commitizen.github.io/cz-cli/)


Simple utility for converting a markdown file into a static html post for use with documentation or blogging.

Includes support for dot, mermaid, state-chart-cat