@guanghechen/middleware 1.0.6 → 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 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
@@ -50,4 +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, type IAsyncMiddleware, type IAsyncMiddlewareNext, type IAsyncMiddlewares, type IMiddleware, type IMiddlewareNext, type IMiddlewares, Middlewares };
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": "1.0.6",
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.5",
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.5/packages/middleware#readme",
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": "c46c7cc64c02c61047fbc7dff2ce8f6b21d4da2c"
41
+ "gitHead": "12990a720b31d50d217e2e17a6191256dc94eda6"
38
42
  }