@guanghechen/middleware 1.0.5 → 2.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +120 -0
- package/lib/cjs/index.cjs +0 -1
- package/lib/esm/index.mjs +0 -1
- package/lib/types/index.d.ts +2 -2
- package/package.json +8 -4
package/README.md
ADDED
|
@@ -0,0 +1,120 @@
|
|
|
1
|
+
<header>
|
|
2
|
+
<h1 align="center">
|
|
3
|
+
<a href="https://github.com/guanghechen/sora/tree/@guanghechen/middleware@2.0.0/packages/middleware#readme">@guanghechen/middleware</a>
|
|
4
|
+
</h1>
|
|
5
|
+
<div align="center">
|
|
6
|
+
<a href="https://www.npmjs.com/package/@guanghechen/middleware">
|
|
7
|
+
<img
|
|
8
|
+
alt="Npm Version"
|
|
9
|
+
src="https://img.shields.io/npm/v/@guanghechen/middleware.svg"
|
|
10
|
+
/>
|
|
11
|
+
</a>
|
|
12
|
+
<a href="https://www.npmjs.com/package/@guanghechen/middleware">
|
|
13
|
+
<img
|
|
14
|
+
alt="Npm Download"
|
|
15
|
+
src="https://img.shields.io/npm/dm/@guanghechen/middleware.svg"
|
|
16
|
+
/>
|
|
17
|
+
</a>
|
|
18
|
+
<a href="https://www.npmjs.com/package/@guanghechen/middleware">
|
|
19
|
+
<img
|
|
20
|
+
alt="Npm License"
|
|
21
|
+
src="https://img.shields.io/npm/l/@guanghechen/middleware.svg"
|
|
22
|
+
/>
|
|
23
|
+
</a>
|
|
24
|
+
<a href="#install">
|
|
25
|
+
<img
|
|
26
|
+
alt="Module Formats: cjs, esm"
|
|
27
|
+
src="https://img.shields.io/badge/module_formats-cjs%2C%20esm-green.svg"
|
|
28
|
+
/>
|
|
29
|
+
</a>
|
|
30
|
+
<a href="https://github.com/nodejs/node">
|
|
31
|
+
<img
|
|
32
|
+
alt="Node.js Version"
|
|
33
|
+
src="https://img.shields.io/node/v/@guanghechen/middleware"
|
|
34
|
+
/>
|
|
35
|
+
</a>
|
|
36
|
+
<a href="https://github.com/facebook/jest">
|
|
37
|
+
<img
|
|
38
|
+
alt="Tested with Jest"
|
|
39
|
+
src="https://img.shields.io/badge/tested_with-jest-9c465e.svg"
|
|
40
|
+
/>
|
|
41
|
+
</a>
|
|
42
|
+
<a href="https://github.com/prettier/prettier">
|
|
43
|
+
<img
|
|
44
|
+
alt="Code Style: prettier"
|
|
45
|
+
src="https://img.shields.io/badge/code_style-prettier-ff69b4.svg?style=flat-square"
|
|
46
|
+
/>
|
|
47
|
+
</a>
|
|
48
|
+
</div>
|
|
49
|
+
</header>
|
|
50
|
+
<br/>
|
|
51
|
+
|
|
52
|
+
Middleware pattern implementation for both synchronous and asynchronous processing pipelines.
|
|
53
|
+
|
|
54
|
+
## Install
|
|
55
|
+
|
|
56
|
+
- npm
|
|
57
|
+
|
|
58
|
+
```bash
|
|
59
|
+
npm install --save @guanghechen/middleware
|
|
60
|
+
```
|
|
61
|
+
|
|
62
|
+
- yarn
|
|
63
|
+
|
|
64
|
+
```bash
|
|
65
|
+
yarn add @guanghechen/middleware
|
|
66
|
+
```
|
|
67
|
+
|
|
68
|
+
## Usage
|
|
69
|
+
|
|
70
|
+
| Name | Description |
|
|
71
|
+
| :-----------------: | :-------------------------------------------------------: |
|
|
72
|
+
| `AsyncMiddlewares` | Asynchronous middleware chain for processing data |
|
|
73
|
+
| `Middlewares` | Synchronous middleware chain for processing data |
|
|
74
|
+
|
|
75
|
+
## Example
|
|
76
|
+
|
|
77
|
+
- Async middleware:
|
|
78
|
+
|
|
79
|
+
```typescript
|
|
80
|
+
import { AsyncMiddlewares } from '@guanghechen/middleware'
|
|
81
|
+
|
|
82
|
+
const middlewares = new AsyncMiddlewares<string, string, any>()
|
|
83
|
+
|
|
84
|
+
// Add middlewares
|
|
85
|
+
middlewares.use(async (input, embryo, api, next) => {
|
|
86
|
+
const result = await next(input.toUpperCase())
|
|
87
|
+
return result
|
|
88
|
+
})
|
|
89
|
+
|
|
90
|
+
middlewares.use(async (input, embryo, api, next) => {
|
|
91
|
+
const result = await next(`[${input}]`)
|
|
92
|
+
return result
|
|
93
|
+
})
|
|
94
|
+
|
|
95
|
+
// Execute middleware chain
|
|
96
|
+
const reducer = middlewares.reducer('hello', {})
|
|
97
|
+
const result = await reducer(null) // Result: "[HELLO]"
|
|
98
|
+
```
|
|
99
|
+
|
|
100
|
+
- Sync middleware:
|
|
101
|
+
|
|
102
|
+
```typescript
|
|
103
|
+
import { Middlewares } from '@guanghechen/middleware'
|
|
104
|
+
|
|
105
|
+
const middlewares = new Middlewares<number, number, any>()
|
|
106
|
+
|
|
107
|
+
middlewares.use((input, embryo, api, next) => {
|
|
108
|
+
return next(input * 2)
|
|
109
|
+
})
|
|
110
|
+
|
|
111
|
+
middlewares.use((input, embryo, api, next) => {
|
|
112
|
+
return next(input + 1)
|
|
113
|
+
})
|
|
114
|
+
|
|
115
|
+
const reducer = middlewares.reducer(5, {})
|
|
116
|
+
const result = reducer(null) // Result: 11 (5 * 2 + 1)
|
|
117
|
+
```
|
|
118
|
+
|
|
119
|
+
[homepage]:
|
|
120
|
+
https://github.com/guanghechen/sora/tree/@guanghechen/middleware@2.0.0/packages/middleware#readme
|
package/lib/cjs/index.cjs
CHANGED
package/lib/esm/index.mjs
CHANGED
package/lib/types/index.d.ts
CHANGED
|
@@ -50,5 +50,5 @@ declare class Middlewares<Input, Output, Api> implements IMiddlewares<Input, Out
|
|
|
50
50
|
reducer(input: Readonly<Input>, api: Readonly<Api>): IMiddlewareNext<Output>;
|
|
51
51
|
}
|
|
52
52
|
|
|
53
|
-
export { AsyncMiddlewares,
|
|
54
|
-
|
|
53
|
+
export { AsyncMiddlewares, Middlewares };
|
|
54
|
+
export type { IAsyncMiddleware, IAsyncMiddlewareNext, IAsyncMiddlewares, IMiddleware, IMiddlewareNext, IMiddlewares };
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@guanghechen/middleware",
|
|
3
|
-
"version": "
|
|
3
|
+
"version": "2.0.0",
|
|
4
4
|
"description": "types of @guanghechen/middleware",
|
|
5
5
|
"author": {
|
|
6
6
|
"name": "guanghechen",
|
|
@@ -8,10 +8,10 @@
|
|
|
8
8
|
},
|
|
9
9
|
"repository": {
|
|
10
10
|
"type": "git",
|
|
11
|
-
"url": "https://github.com/guanghechen/sora/tree/@guanghechen/middleware@1.0.
|
|
11
|
+
"url": "https://github.com/guanghechen/sora/tree/@guanghechen/middleware@1.0.6",
|
|
12
12
|
"directory": "packages/middleware"
|
|
13
13
|
},
|
|
14
|
-
"homepage": "https://github.com/guanghechen/sora/tree/@guanghechen/middleware@1.0.
|
|
14
|
+
"homepage": "https://github.com/guanghechen/sora/tree/@guanghechen/middleware@1.0.6/packages/middleware#readme",
|
|
15
15
|
"type": "module",
|
|
16
16
|
"exports": {
|
|
17
17
|
".": {
|
|
@@ -26,6 +26,10 @@
|
|
|
26
26
|
"module": "./lib/esm/index.mjs",
|
|
27
27
|
"types": "./lib/types/index.d.ts",
|
|
28
28
|
"license": "MIT",
|
|
29
|
+
"scripts": {
|
|
30
|
+
"build": "rollup -c ../../rollup.config.mjs",
|
|
31
|
+
"clean": "rimraf lib"
|
|
32
|
+
},
|
|
29
33
|
"files": [
|
|
30
34
|
"lib/",
|
|
31
35
|
"!lib/**/*.map",
|
|
@@ -34,5 +38,5 @@
|
|
|
34
38
|
"LICENSE",
|
|
35
39
|
"README.md"
|
|
36
40
|
],
|
|
37
|
-
"gitHead": "
|
|
41
|
+
"gitHead": "12990a720b31d50d217e2e17a6191256dc94eda6"
|
|
38
42
|
}
|