Skip to content

Commit d110d4f

Browse files
committed
feat: 0.0.11 add form log config middleware
1 parent 7b42634 commit d110d4f

File tree

18 files changed

+226
-90
lines changed

18 files changed

+226
-90
lines changed

README.md

Lines changed: 198 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -3,13 +3,13 @@
33
* @Date: 2023-02-13 17:02:26
44
* @Description: Coding something
55
-->
6-
## Sener
6+
# [Sener](https://github.com/theajack/sener)
77

88
Easy-to-use And Powerful nodejs http server
99

1010
Documentation will continue to be improved
1111

12-
### Basic Use
12+
## 1. Basic Use
1313

1414
```
1515
npm i sener
@@ -22,7 +22,33 @@ import {Sener} from 'sener';
2222
new Sener();
2323
```
2424

25-
use router:
25+
options:
26+
27+
```js
28+
new Sener({
29+
port: 9000, // port: default value is 9000
30+
middlewares: [], // Sener middlewares
31+
});
32+
```
33+
34+
Sener stores all files in the sener-data folder
35+
36+
In the development environment, the root directory is the directory where the current cmd is executed, and in the production environment, the root directory is homedir
37+
38+
39+
```js
40+
const BASE_SENER_DIR = path.resolve(
41+
`${IS_DEV ? process.cwd() : homedir()}`,
42+
`./sener-data`
43+
);
44+
```
45+
46+
47+
## 3. Middlewares
48+
49+
### 3.1 router
50+
51+
Router middleware
2652

2753
```js
2854
import {Sener, Router} from 'sener';
@@ -41,7 +67,9 @@ new Sener({
4167
});
4268
```
4369

44-
### Use Json middleware
70+
### 3.2 json
71+
72+
Use a JSON file as a database
4573

4674
```
4775
npm i sener sener-json
@@ -64,11 +92,22 @@ const router = new Router({
6492
},
6593
});
6694
new Sener({
67-
middlewares: [router, new Json({dir: 'you_app_name'})], // you_app_name is optional, default to sener dir root as ~/sener-json-db/
95+
middlewares: [router, new Json()], // you_app_name is optional, default to sener dir root as ~/sener-json-db/
6896
});
6997
```
7098

71-
### Use Cors middleware
99+
options
100+
101+
```js
102+
new Json({
103+
dir: '', // directory for save json files. default value is ''
104+
format: false, // Whether to format the JSON file. Default value: The development environment is false and the production environment is true
105+
})
106+
```
107+
108+
### 3.3 cors
109+
110+
Middleware that handles cross-origin requests
72111

73112
```js
74113
import {Sener, Cors} from 'sener';
@@ -78,7 +117,17 @@ new Sener({
78117
});
79118
```
80119

81-
### Use Static middleware
120+
options
121+
122+
```js
123+
new Cors({
124+
// headers: Set your custom headers
125+
})
126+
```
127+
128+
### 3.4 static
129+
130+
Middleware that handles static resources
82131

83132
```js
84133
import {Sener} from 'sener';
@@ -89,10 +138,151 @@ new Sener({
89138
});
90139
```
91140

141+
options
142+
143+
```js
144+
new Static({
145+
dir: './public', // Static directory, default value is ./public
146+
})
147+
```
148+
149+
### 3.5 form
150+
151+
Middleware that handles formdata and file uploads
152+
153+
```js
154+
import {Sener, Router} from 'sener';
155+
import {Form} from 'sener-form';
156+
157+
const router = new Router({
158+
'post:/upload': ({ formData, files }) => {
159+
return { formData, files }
160+
},
161+
});
162+
163+
new Sener({
164+
middlewares: [new Form(), router],
165+
// new Form({dir}); dir default value is ./public
166+
});
167+
```
168+
169+
options
170+
171+
```js
172+
new Form({
173+
dir: './public/upload', // File upload directory, default value is ./public/upload
174+
})
175+
```
176+
177+
### 3.6 log
178+
179+
Middleware that supports logging systems
180+
181+
```js
182+
import {Sener, Router} from 'sener';
183+
import {Log} from 'sener-log';
184+
185+
const router = new Router({
186+
'post:/test': ({ query, logger }) => {
187+
logger.log('msg', 'payload')
188+
return { query }
189+
},
190+
});
191+
192+
new Sener({
193+
middlewares: [new Log(), router],
194+
});
195+
```
196+
197+
typings
198+
199+
```ts
200+
class Logger {
201+
log(msg: string | IMessageData, payload?: any, type?: TLogType): void;
202+
get traceid (): string;
203+
refreshDurationStart(): void;
204+
refreshTraceId(): void;
205+
}
206+
207+
interface IMessageData {
208+
msg?: string;
209+
payload?: any;
210+
type?: 'error' | 'log' | 'warn' | 'info';
211+
level?: number;
212+
extend?: object;
213+
}
214+
215+
```
216+
217+
options
218+
219+
```js
220+
new Log({
221+
dir: '', // The directory where the log file is stored. default value is '', use root directory
222+
useConsole: false, // Whether to enable console.log Print logs when the service is running. It is not recommended to turn on the production environment. default value is false
223+
maxRecords: 10000, // The maximum number of stored records for a single log file , default value is 10000
224+
level: -1, // The level of log printing, logs with a level less than this number will not be printed
225+
// level?: (()=>number) Level can also be a method for dynamically obtaining level values, typically used in conjunction with config middleware
226+
})
227+
```
228+
229+
### 3.7 config
230+
231+
Middleware that supports flexible use of JSON configuration files
232+
233+
234+
```js
235+
import {Sener, Router} from 'sener';
236+
import {Config} from 'sener-config';
237+
238+
const router = new Router({
239+
'post:/test': ({ query, config, writeConfig, onConfigChange }) => {
240+
const level = config.level;
241+
level(); // read config
242+
level(5); // write config
243+
writeConfig('level', 5) // write config with writeConfig
244+
onConfigChange(({key, value, prev}) => { // on config change
245+
console.log(key, value, prev);
246+
})
247+
return { query }
248+
},
249+
});
250+
251+
const config = new Config();
252+
253+
// Use config instance
254+
255+
config.onConfigChange(({key, value, prev}) => { // on config change
256+
console.log(key, value, prev);
257+
});
258+
259+
config.data.level(); // read config
260+
261+
config.data.level(5); // write config
262+
263+
config.writeConfig('level', 2); // write config with writeConfig
264+
265+
new Sener({
266+
middlewares: [config, router],
267+
});
268+
```
269+
270+
options
271+
272+
```ts
273+
new Config({
274+
dir: '', // directory for save config files. default value is ''
275+
file: 'default', // file name of your config file. default value is 'default'
276+
// file: ['c1', 'c2'], // Passing in an array indicates that multiple profiles are used
277+
format: false, // Whether to format the JSON file. Default value: The development environment is false and the production environment is true
278+
})
279+
```
280+
281+
92282
## Custom Middleware
93283

94284
Documentation will continue to be improved
95285

96-
For now please refer to [json-middleware](https://github.com/theajack/sener/blob/master/packages/json/src/json-middleware.ts) and [Router](https://github.com/theajack/sener/blob/master/packages/sener/src/middleware/inner-middlewares/router/router.ts)
286+
For now please refer to [middleware packages](https://github.com/theajack/sener/blob/master/packages)
97287

98288

packages/.DS_Store

-6 KB
Binary file not shown.

packages/config/src/config.ts

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -73,7 +73,6 @@ export class ConfigBase {
7373
if (typeof v === 'undefined') {
7474
return this.data[key];
7575
}
76-
this.data[key] = v;
7776
this.writeConfig(key, v);
7877
};
7978
}

packages/form/package.json

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,8 +5,7 @@
55
"build": "node ../../scripts/build/build.js form"
66
},
77
"dependencies": {
8-
"@types/formidable": "^2.0.5",
9-
"formidable": "^2.1.1",
8+
"formidable-fix": "^2.1.4",
109
"sener-types": "^0.0.10"
1110
},
1211
"main": "src/index.ts",

packages/form/pnpm-lock.yaml

Lines changed: 6 additions & 22 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

packages/form/src/extend.d.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
* @Date: 2023-02-21 22:08:31
44
* @Description: Coding something
55
*/
6-
import { Files } from 'formidable';
6+
import { Files } from 'formidable-fix';
77
import { IJson } from 'sener-types';
88

99
declare module 'sener-types-extend' {

packages/form/src/middleware.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66
import {
77
MiddleWare, ICommonReturn, IMiddleWareRequestData, IPromiseMayBe, makedir, MiddleWareReturn,
88
} from 'sener-types';
9-
import formidable, { errors as formidableErrors } from 'formidable';
9+
import formidable, { errors as formidableErrors } from 'formidable-fix';
1010
import path from 'path';
1111

1212
export class Form extends MiddleWare {

packages/log/src/type.d.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,9 +21,9 @@ export interface ILogDBData {
2121
msg: string; //
2222
payload: any;
2323
type: TLogType;
24-
duration: number;
2524
level: number;
2625

26+
duration: number;
2727
time: string;
2828
timestamp: number;
2929
logid: string;

packages/sener/package.json

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -11,8 +11,7 @@
1111
},
1212
"license": "MIT",
1313
"dependencies": {
14-
"sener-types": "^0.0.10",
15-
"undefined": "^0.1.0"
14+
"sener-types": "^0.0.10"
1615
},
1716
"publishConfig": {
1817
"registry": "https://registry.npmjs.org/"

packages/sener/pnpm-lock.yaml

Lines changed: 0 additions & 16 deletions
This file was deleted.

0 commit comments

Comments
 (0)