@aomex/web
Advanced tools
Comparing version 1.0.3 to 1.0.4
# @aomex/web | ||
## 1.0.4 | ||
### Patch Changes | ||
- [`a1a1787`](https://github.com/aomex/aomex/commit/a1a1787c791bf113c7e87e4435ea364eb8ce8eb8) Thanks [@geekact](https://github.com/geekact)! - refactor: 使用node内置的 util.styleText 替换 chalk 包 | ||
- [`42447fb`](https://github.com/aomex/aomex/commit/42447fb9d3916c4d6242841d1fa3eab67e48be70) Thanks [@geekact](https://github.com/geekact)! - refactor(core): 重命名I18nFormat为I18nMessage | ||
- [`170cb21`](https://github.com/aomex/aomex/commit/170cb214c9e4eb9de6ec388ba97fe06996c7f268) Thanks [@geekact](https://github.com/geekact)! - feat(web): 允许监听https服务 | ||
- Updated dependencies [[`a1a1787`](https://github.com/aomex/aomex/commit/a1a1787c791bf113c7e87e4435ea364eb8ce8eb8)]: | ||
- @aomex/internal-tools@1.0.4 | ||
## 1.0.3 | ||
@@ -4,0 +17,0 @@ |
@@ -1,3 +0,5 @@ | ||
import { I18nFormat, Next, Middleware, OpenAPI, MiddlewareChain, MixinMiddlewareToken, Validator, TransformedValidator, magistrate, MixinMiddlewareChain, I18n, ValidatorToken } from '@aomex/core'; | ||
import { IncomingMessage, ServerResponse, OutgoingHttpHeaders, RequestListener, Server } from 'node:http'; | ||
import { I18nMessage, Next, Middleware, OpenAPI, MiddlewareChain, MixinMiddlewareToken, Validator, TransformedValidator, magistrate, MixinMiddlewareChain, I18n, ValidatorToken } from '@aomex/core'; | ||
import * as net from 'net'; | ||
import http, { IncomingMessage, ServerResponse, OutgoingHttpHeaders } from 'node:http'; | ||
import https from 'node:https'; | ||
import stream, { Stream } from 'node:stream'; | ||
@@ -19,9 +21,9 @@ import { Accepts } from 'accepts'; | ||
file: { | ||
must_be_file: I18nFormat<{ | ||
must_be_file: I18nMessage<{ | ||
label: string; | ||
}>; | ||
too_large: I18nFormat<{ | ||
too_large: I18nMessage<{ | ||
label: string; | ||
}>; | ||
unsupported_mimetype: I18nFormat<{ | ||
unsupported_mimetype: I18nMessage<{ | ||
label: string; | ||
@@ -320,4 +322,48 @@ }>; | ||
get debug(): boolean; | ||
callback(): RequestListener<any, any>; | ||
listen: Server['listen']; | ||
callback(): http.RequestListener<any, any>; | ||
/** | ||
* 监听http服务 | ||
* ```typescript | ||
* app.listen(3000); | ||
* ``` | ||
*/ | ||
listen: http.Server['listen']; | ||
/** | ||
* 监听http服务,可定制参数 | ||
* ```typescript | ||
* app.http({...}).listen(3000); | ||
* ``` | ||
*/ | ||
http(options: Omit<http.ServerOptions, 'IncomingMessage' | 'ServerResponse'>): { | ||
listen: { | ||
(port?: number | undefined, hostname?: string | undefined, backlog?: number | undefined, listeningListener?: (() => void) | undefined): http.Server<any, any>; | ||
(port?: number | undefined, hostname?: string | undefined, listeningListener?: (() => void) | undefined): http.Server<any, any>; | ||
(port?: number | undefined, backlog?: number | undefined, listeningListener?: (() => void) | undefined): http.Server<any, any>; | ||
(port?: number | undefined, listeningListener?: (() => void) | undefined): http.Server<any, any>; | ||
(path: string, backlog?: number | undefined, listeningListener?: (() => void) | undefined): http.Server<any, any>; | ||
(path: string, listeningListener?: (() => void) | undefined): http.Server<any, any>; | ||
(options: net.ListenOptions, listeningListener?: (() => void) | undefined): http.Server<any, any>; | ||
(handle: any, backlog?: number | undefined, listeningListener?: (() => void) | undefined): http.Server<any, any>; | ||
(handle: any, listeningListener?: (() => void) | undefined): http.Server<any, any>; | ||
}; | ||
}; | ||
/** | ||
* 监听https服务,需提供证书 | ||
* ```typescript | ||
* app.https({...}).listen(3000); | ||
* ``` | ||
*/ | ||
https(options: Omit<https.ServerOptions, 'IncomingMessage' | 'ServerResponse'>): { | ||
listen: { | ||
(port?: number | undefined, hostname?: string | undefined, backlog?: number | undefined, listeningListener?: (() => void) | undefined): https.Server<any, any>; | ||
(port?: number | undefined, hostname?: string | undefined, listeningListener?: (() => void) | undefined): https.Server<any, any>; | ||
(port?: number | undefined, backlog?: number | undefined, listeningListener?: (() => void) | undefined): https.Server<any, any>; | ||
(port?: number | undefined, listeningListener?: (() => void) | undefined): https.Server<any, any>; | ||
(path: string, backlog?: number | undefined, listeningListener?: (() => void) | undefined): https.Server<any, any>; | ||
(path: string, listeningListener?: (() => void) | undefined): https.Server<any, any>; | ||
(options: net.ListenOptions, listeningListener?: (() => void) | undefined): https.Server<any, any>; | ||
(handle: any, backlog?: number | undefined, listeningListener?: (() => void) | undefined): https.Server<any, any>; | ||
(handle: any, listeningListener?: (() => void) | undefined): https.Server<any, any>; | ||
}; | ||
}; | ||
log(err: HttpError, ctx: WebContext): void; | ||
@@ -324,0 +370,0 @@ } |
@@ -26,3 +26,4 @@ // src/i18n/locales/zh-cn.ts | ||
// src/http/app.ts | ||
import { createServer } from "node:http"; | ||
import http from "node:http"; | ||
import https from "node:https"; | ||
import stream2 from "node:stream"; | ||
@@ -451,3 +452,3 @@ | ||
import { EOL } from "node:os"; | ||
import { chalk } from "@aomex/internal-tools"; | ||
import { styleText } from "node:util"; | ||
var WebApp = class extends stream2.EventEmitter { | ||
@@ -477,9 +478,24 @@ constructor(options = {}) { | ||
return (req, res) => { | ||
const ctx = new WebContext(this, req, res); | ||
return fn(ctx).then(res.flush).catch(res.onError); | ||
return fn(new WebContext(this, req, res)).then(res.flush).catch(res.onError); | ||
}; | ||
} | ||
/** | ||
* 监听http服务 | ||
* ```typescript | ||
* app.listen(3000); | ||
* ``` | ||
*/ | ||
listen = (...args) => { | ||
const server = createServer( | ||
return this.http({}).listen(...args); | ||
}; | ||
/** | ||
* 监听http服务,可定制参数 | ||
* ```typescript | ||
* app.http({...}).listen(3000); | ||
* ``` | ||
*/ | ||
http(options) { | ||
const server = http.createServer( | ||
{ | ||
...options, | ||
IncomingMessage: WebRequest, | ||
@@ -490,8 +506,25 @@ ServerResponse: WebResponse | ||
); | ||
return server.listen(...args); | ||
}; | ||
return { listen: server.listen.bind(server) }; | ||
} | ||
/** | ||
* 监听https服务,需提供证书 | ||
* ```typescript | ||
* app.https({...}).listen(3000); | ||
* ``` | ||
*/ | ||
https(options) { | ||
const server = https.createServer( | ||
{ | ||
...options, | ||
IncomingMessage: WebRequest, | ||
ServerResponse: WebResponse | ||
}, | ||
this.callback() | ||
); | ||
return { listen: server.listen.bind(server) }; | ||
} | ||
log(err, ctx) { | ||
if (ctx.response.statusCode === 404 || err.expose) return; | ||
const msgs = (err.stack || err.toString()).split(EOL, 2); | ||
console.error(["", chalk.bgRed(msgs.shift()), msgs.join(EOL), ""].join(EOL)); | ||
console.error(["", styleText("bgRed", msgs.shift()), msgs.join(EOL), ""].join(EOL)); | ||
} | ||
@@ -498,0 +531,0 @@ }; |
{ | ||
"name": "@aomex/web", | ||
"version": "1.0.3", | ||
"version": "1.0.4", | ||
"description": "aomex web层应用", | ||
@@ -57,3 +57,3 @@ "type": "module", | ||
"vary": "^1.1.2", | ||
"@aomex/internal-tools": "^1.0.3" | ||
"@aomex/internal-tools": "^1.0.4" | ||
}, | ||
@@ -71,5 +71,5 @@ "devDependencies": { | ||
"@types/vary": "^1.1.3", | ||
"@aomex/core": "^1.0.3" | ||
"@aomex/core": "^1.0.4" | ||
}, | ||
"scripts": {} | ||
} |
Sorry, the diff of this file is not supported yet
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
100800
1271
Updated@aomex/internal-tools@^1.0.4