@tinyhttp/app 2.3.0 → 2.4.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/dist/app.d.ts +13 -12
- package/dist/app.d.ts.map +1 -1
- package/dist/app.js +377 -0
- package/dist/app.js.map +1 -0
- package/dist/extend.d.ts +4 -7
- package/dist/extend.d.ts.map +1 -1
- package/dist/extend.js +63 -0
- package/dist/extend.js.map +1 -0
- package/dist/index.d.ts +3 -3
- package/dist/index.js +7 -449
- package/dist/index.js.map +1 -1
- package/dist/onError.d.ts +4 -5
- package/dist/onError.js +15 -0
- package/dist/onError.js.map +1 -0
- package/dist/request.d.ts +17 -12
- package/dist/request.d.ts.map +1 -1
- package/dist/request.js +85 -0
- package/dist/request.js.map +1 -0
- package/dist/response.d.ts +7 -8
- package/dist/response.d.ts.map +1 -1
- package/dist/response.js +9 -0
- package/dist/response.js.map +1 -0
- package/dist/types.d.ts +8 -8
- package/dist/types.d.ts.map +1 -1
- package/dist/types.js +3 -0
- package/dist/types.js.map +1 -0
- package/dist/view.d.ts +11 -4
- package/dist/view.d.ts.map +1 -1
- package/dist/view.js +94 -0
- package/dist/view.js.map +1 -0
- package/package.json +6 -7
package/dist/app.d.ts
CHANGED
|
@@ -1,11 +1,11 @@
|
|
|
1
|
-
import { Server } from 'node:http';
|
|
2
|
-
import { Handler, Middleware, NextFunction, UseMethodParams
|
|
3
|
-
import {
|
|
4
|
-
import {
|
|
5
|
-
import {
|
|
6
|
-
import {
|
|
7
|
-
import {
|
|
8
|
-
|
|
1
|
+
import { type Server } from 'node:http';
|
|
2
|
+
import type { Handler, Middleware, NextFunction, UseMethodParams } from '@tinyhttp/router';
|
|
3
|
+
import { Router } from '@tinyhttp/router';
|
|
4
|
+
import type { TemplateEngineOptions } from './index.js';
|
|
5
|
+
import type { ErrorHandler } from './onError.js';
|
|
6
|
+
import type { Request } from './request.js';
|
|
7
|
+
import type { Response } from './response.js';
|
|
8
|
+
import type { AppConstructor, AppRenderOptions, AppSettings, TemplateEngine } from './types.js';
|
|
9
9
|
/**
|
|
10
10
|
* `App` class - the starting point of tinyhttp app.
|
|
11
11
|
*
|
|
@@ -36,8 +36,8 @@ export declare class App<Req extends Request = Request, Res extends Response = R
|
|
|
36
36
|
onError: ErrorHandler;
|
|
37
37
|
settings: AppSettings;
|
|
38
38
|
engines: Record<string, TemplateEngine>;
|
|
39
|
-
applyExtensions
|
|
40
|
-
attach: (req: Req, res: Res) => void;
|
|
39
|
+
applyExtensions?: Handler;
|
|
40
|
+
attach: (req: Req, res: Res, next?: NextFunction) => void;
|
|
41
41
|
cache: Record<string, unknown>;
|
|
42
42
|
constructor(options?: AppConstructor<Req, Res>);
|
|
43
43
|
/**
|
|
@@ -80,7 +80,7 @@ export declare class App<Req extends Request = Request, Res extends Response = R
|
|
|
80
80
|
engine<RenderOptions extends TemplateEngineOptions = TemplateEngineOptions>(ext: string, fn: TemplateEngine<RenderOptions>): this;
|
|
81
81
|
/**
|
|
82
82
|
* Render a template
|
|
83
|
-
* @param
|
|
83
|
+
* @param name What to render
|
|
84
84
|
* @param data data that is passed to a template
|
|
85
85
|
* @param options Template engine options
|
|
86
86
|
* @param cb Callback that consumes error and html
|
|
@@ -92,12 +92,13 @@ export declare class App<Req extends Request = Request, Res extends Response = R
|
|
|
92
92
|
* Extends Req / Res objects, pushes 404 and 500 handlers, dispatches middleware
|
|
93
93
|
* @param req Req object
|
|
94
94
|
* @param res Res object
|
|
95
|
+
* @param next 'Next' function
|
|
95
96
|
*/
|
|
96
97
|
handler<RenderOptions extends TemplateEngineOptions = TemplateEngineOptions>(req: Req, res: Res, next?: NextFunction): void;
|
|
97
98
|
/**
|
|
98
99
|
* Creates HTTP server and dispatches middleware
|
|
99
100
|
* @param port server listening port
|
|
100
|
-
* @param
|
|
101
|
+
* @param cb callback to be invoked after server starts listening
|
|
101
102
|
* @param host server listening host
|
|
102
103
|
*/
|
|
103
104
|
listen(port?: number, cb?: () => void, host?: string): Server;
|
package/dist/app.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"app.d.ts","sourceRoot":"","sources":["../src/app.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,MAAM,EAAgB,MAAM,WAAW,CAAA;AAErD,OAAO,KAAK,EAAE,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAA;AAC1F,OAAO,EAAE,MAAM,EAAkB,MAAM,kBAAkB,CAAA;AAGzD,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,YAAY,CAAA;AACvD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,cAAc,CAAA;AAGhD,OAAO,KAAK,EAAE,OAAO,EAAa,MAAM,cAAc,CAAA;AACtD,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAA;AAC7C,OAAO,KAAK,EAAE,cAAc,EAAE,gBAAgB,EAAE,WAAW,EAAE,cAAc,EAAE,MAAM,YAAY,CAAA;
|
|
1
|
+
{"version":3,"file":"app.d.ts","sourceRoot":"","sources":["../src/app.ts"],"names":[],"mappings":"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"}
|
package/dist/app.js
ADDED
|
@@ -0,0 +1,377 @@
|
|
|
1
|
+
var __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) {
|
|
2
|
+
if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a getter");
|
|
3
|
+
if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot read private member from an object whose class did not declare it");
|
|
4
|
+
return kind === "m" ? f : kind === "a" ? f.call(receiver) : f ? f.value : state.get(receiver);
|
|
5
|
+
};
|
|
6
|
+
var _App_instances, _App_find;
|
|
7
|
+
import { createServer } from 'node:http';
|
|
8
|
+
import { getPathname } from '@tinyhttp/req';
|
|
9
|
+
import { Router, pushMiddleware } from '@tinyhttp/router';
|
|
10
|
+
import { parse as rg } from 'regexparam';
|
|
11
|
+
import { extendMiddleware } from './extend.js';
|
|
12
|
+
import { onErrorHandler } from './onError.js';
|
|
13
|
+
import { getURLParams } from './request.js';
|
|
14
|
+
import { View } from './view.js';
|
|
15
|
+
/**
|
|
16
|
+
* Add leading slash if not present (e.g. path -> /path, /path -> /path)
|
|
17
|
+
* @param x
|
|
18
|
+
*/
|
|
19
|
+
const lead = (x) => (x.charCodeAt(0) === 47 ? x : `/${x}`);
|
|
20
|
+
const trail = (x) => (x.charCodeAt(x.length - 1) === 47 ? x.substring(0, x.length - 1) : x);
|
|
21
|
+
const mount = (fn) => (fn instanceof App ? fn.attach : fn);
|
|
22
|
+
const applyHandler = (h) => async (req, res, next) => {
|
|
23
|
+
try {
|
|
24
|
+
if (h[Symbol.toStringTag] === 'AsyncFunction') {
|
|
25
|
+
await h(req, res, next);
|
|
26
|
+
}
|
|
27
|
+
else
|
|
28
|
+
h(req, res, next);
|
|
29
|
+
}
|
|
30
|
+
catch (e) {
|
|
31
|
+
next(e);
|
|
32
|
+
}
|
|
33
|
+
};
|
|
34
|
+
/**
|
|
35
|
+
* `App` class - the starting point of tinyhttp app.
|
|
36
|
+
*
|
|
37
|
+
* With the `App` you can:
|
|
38
|
+
* * use routing methods and `.use(...)`
|
|
39
|
+
* * set no match (404) and error (500) handlers
|
|
40
|
+
* * configure template engines
|
|
41
|
+
* * store data in locals
|
|
42
|
+
* * listen the http server on a specified port
|
|
43
|
+
*
|
|
44
|
+
* In case you use TypeScript, you can pass custom types to this class because it is also a generic class.
|
|
45
|
+
*
|
|
46
|
+
* Example:
|
|
47
|
+
*
|
|
48
|
+
* ```ts
|
|
49
|
+
* interface CoolReq extends Request {
|
|
50
|
+
* genericsAreDope: boolean
|
|
51
|
+
* }
|
|
52
|
+
*
|
|
53
|
+
* const app = App<any, CoolReq, Response>()
|
|
54
|
+
* ```
|
|
55
|
+
*/
|
|
56
|
+
export class App extends Router {
|
|
57
|
+
constructor(options = {}) {
|
|
58
|
+
super();
|
|
59
|
+
_App_instances.add(this);
|
|
60
|
+
this.middleware = [];
|
|
61
|
+
this.locals = {};
|
|
62
|
+
this.engines = {};
|
|
63
|
+
this.onError = (options === null || options === void 0 ? void 0 : options.onError) || onErrorHandler;
|
|
64
|
+
// @ts-expect-error typescript is not smart enough to understand "this" ts(2345)
|
|
65
|
+
this.noMatchHandler = (options === null || options === void 0 ? void 0 : options.noMatchHandler) || this.onError.bind(this, { code: 404 });
|
|
66
|
+
this.settings = {
|
|
67
|
+
view: View,
|
|
68
|
+
xPoweredBy: true,
|
|
69
|
+
views: `${process.cwd()}/views`,
|
|
70
|
+
'view cache': process.env.NODE_ENV === 'production',
|
|
71
|
+
'trust proxy': 0,
|
|
72
|
+
...options.settings
|
|
73
|
+
};
|
|
74
|
+
if (options.applyExtensions)
|
|
75
|
+
this.applyExtensions = options === null || options === void 0 ? void 0 : options.applyExtensions;
|
|
76
|
+
const boundHandler = this.handler.bind(this);
|
|
77
|
+
this.attach = (req, res, next) => setImmediate(boundHandler, req, res, next);
|
|
78
|
+
this.cache = {};
|
|
79
|
+
}
|
|
80
|
+
/**
|
|
81
|
+
* Set app setting
|
|
82
|
+
* @param setting setting name
|
|
83
|
+
* @param value setting value
|
|
84
|
+
*/
|
|
85
|
+
set(setting, value) {
|
|
86
|
+
this.settings[setting] = value;
|
|
87
|
+
return this;
|
|
88
|
+
}
|
|
89
|
+
/**
|
|
90
|
+
* Enable app setting
|
|
91
|
+
* @param setting Setting name
|
|
92
|
+
*/
|
|
93
|
+
enable(setting) {
|
|
94
|
+
this.settings[setting] = true;
|
|
95
|
+
return this;
|
|
96
|
+
}
|
|
97
|
+
/**
|
|
98
|
+
* Check if setting is enabled
|
|
99
|
+
* @param setting Setting name
|
|
100
|
+
* @returns
|
|
101
|
+
*/
|
|
102
|
+
enabled(setting) {
|
|
103
|
+
return Boolean(this.settings[setting]);
|
|
104
|
+
}
|
|
105
|
+
/**
|
|
106
|
+
* Disable app setting
|
|
107
|
+
* @param setting Setting name
|
|
108
|
+
*/
|
|
109
|
+
disable(setting) {
|
|
110
|
+
this.settings[setting] = false;
|
|
111
|
+
return this;
|
|
112
|
+
}
|
|
113
|
+
/**
|
|
114
|
+
* Return the app's absolute pathname
|
|
115
|
+
* based on the parent(s) that have
|
|
116
|
+
* mounted it.
|
|
117
|
+
*
|
|
118
|
+
* For example if the application was
|
|
119
|
+
* mounted as `"/admin"`, which itself
|
|
120
|
+
* was mounted as `"/blog"` then the
|
|
121
|
+
* return value would be `"/blog/admin"`.
|
|
122
|
+
*
|
|
123
|
+
*/
|
|
124
|
+
path() {
|
|
125
|
+
return this.parent ? this.parent.path() + this.mountpath : '';
|
|
126
|
+
}
|
|
127
|
+
/**
|
|
128
|
+
* Register a template engine with extension
|
|
129
|
+
*/
|
|
130
|
+
engine(ext, fn) {
|
|
131
|
+
this.engines[ext[0] === '.' ? ext : `.${ext}`] = fn;
|
|
132
|
+
return this;
|
|
133
|
+
}
|
|
134
|
+
/**
|
|
135
|
+
* Render a template
|
|
136
|
+
* @param name What to render
|
|
137
|
+
* @param data data that is passed to a template
|
|
138
|
+
* @param options Template engine options
|
|
139
|
+
* @param cb Callback that consumes error and html
|
|
140
|
+
*/
|
|
141
|
+
render(name, data = {}, options = {}, cb = () => { }) {
|
|
142
|
+
let view;
|
|
143
|
+
const { _locals, ...opts } = options;
|
|
144
|
+
let locals = this.locals;
|
|
145
|
+
if (_locals)
|
|
146
|
+
locals = { ...locals, ..._locals };
|
|
147
|
+
locals = { ...locals, ...data };
|
|
148
|
+
if (opts.cache == null)
|
|
149
|
+
opts.cache = this.enabled('view cache');
|
|
150
|
+
if (opts.cache) {
|
|
151
|
+
view = this.cache[name];
|
|
152
|
+
}
|
|
153
|
+
if (!view) {
|
|
154
|
+
const View = this.settings.view;
|
|
155
|
+
view = new View(name, {
|
|
156
|
+
defaultEngine: this.settings['view engine'],
|
|
157
|
+
root: this.settings.views,
|
|
158
|
+
engines: this.engines
|
|
159
|
+
});
|
|
160
|
+
if (!view.path) {
|
|
161
|
+
const dirs = Array.isArray(view.root) && view.root.length > 1
|
|
162
|
+
? `directories "${view.root.slice(0, -1).join('", "')}" or "${view.root[view.root.length - 1]}"`
|
|
163
|
+
: `directory "${view.root}"`;
|
|
164
|
+
const err = new Error(`Failed to lookup view "${name}" in views ${dirs}`);
|
|
165
|
+
return cb(err);
|
|
166
|
+
}
|
|
167
|
+
if (opts.cache) {
|
|
168
|
+
this.cache[name] = view;
|
|
169
|
+
}
|
|
170
|
+
}
|
|
171
|
+
try {
|
|
172
|
+
view.render(opts, locals, cb);
|
|
173
|
+
}
|
|
174
|
+
catch (err) {
|
|
175
|
+
cb(err);
|
|
176
|
+
}
|
|
177
|
+
}
|
|
178
|
+
use(...args) {
|
|
179
|
+
var _a;
|
|
180
|
+
const base = args[0];
|
|
181
|
+
const fns = args.slice(1).flat();
|
|
182
|
+
let pathArray = [];
|
|
183
|
+
if (typeof base === 'function' || base instanceof App) {
|
|
184
|
+
fns.unshift(base);
|
|
185
|
+
}
|
|
186
|
+
else {
|
|
187
|
+
// if base is not an array of paths, then convert it to an array.
|
|
188
|
+
let basePaths = [];
|
|
189
|
+
if (Array.isArray(base))
|
|
190
|
+
basePaths = base;
|
|
191
|
+
else if (typeof base === 'string')
|
|
192
|
+
basePaths = [base];
|
|
193
|
+
basePaths = basePaths.filter((element) => {
|
|
194
|
+
if (typeof element === 'string') {
|
|
195
|
+
pathArray.push(element);
|
|
196
|
+
return false;
|
|
197
|
+
}
|
|
198
|
+
return true;
|
|
199
|
+
});
|
|
200
|
+
fns.unshift(...basePaths);
|
|
201
|
+
}
|
|
202
|
+
pathArray = pathArray.length ? pathArray.map((path) => lead(path)) : ['/'];
|
|
203
|
+
const mountpath = pathArray.join(', ');
|
|
204
|
+
let regex;
|
|
205
|
+
for (const fn of fns) {
|
|
206
|
+
if (fn instanceof App) {
|
|
207
|
+
for (const path of pathArray) {
|
|
208
|
+
regex = rg(path, true);
|
|
209
|
+
fn.mountpath = mountpath;
|
|
210
|
+
this.apps[path] = fn;
|
|
211
|
+
// @ts-expect-error typescript is not smart enough to understand "this" ts(2345)
|
|
212
|
+
fn.parent = this;
|
|
213
|
+
}
|
|
214
|
+
}
|
|
215
|
+
}
|
|
216
|
+
for (const path of pathArray) {
|
|
217
|
+
const handlerPaths = [];
|
|
218
|
+
const handlerFunctions = [];
|
|
219
|
+
const handlerPathBase = path === '/' ? '' : lead(path);
|
|
220
|
+
for (const fn of fns) {
|
|
221
|
+
if (fn instanceof App && ((_a = fn.middleware) === null || _a === void 0 ? void 0 : _a.length)) {
|
|
222
|
+
for (const mw of fn.middleware) {
|
|
223
|
+
handlerPaths.push(handlerPathBase + lead(mw.path));
|
|
224
|
+
handlerFunctions.push(fn);
|
|
225
|
+
}
|
|
226
|
+
}
|
|
227
|
+
else {
|
|
228
|
+
handlerPaths.push('');
|
|
229
|
+
handlerFunctions.push(fn);
|
|
230
|
+
}
|
|
231
|
+
}
|
|
232
|
+
pushMiddleware(this.middleware)({
|
|
233
|
+
path,
|
|
234
|
+
regex,
|
|
235
|
+
type: 'mw',
|
|
236
|
+
handler: mount(handlerFunctions[0]),
|
|
237
|
+
handlers: handlerFunctions.slice(1).map(mount),
|
|
238
|
+
fullPaths: handlerPaths
|
|
239
|
+
});
|
|
240
|
+
}
|
|
241
|
+
return this;
|
|
242
|
+
}
|
|
243
|
+
route(path) {
|
|
244
|
+
const app = new App({ settings: this.settings });
|
|
245
|
+
this.use(path, app);
|
|
246
|
+
return app;
|
|
247
|
+
}
|
|
248
|
+
/**
|
|
249
|
+
* Extends Req / Res objects, pushes 404 and 500 handlers, dispatches middleware
|
|
250
|
+
* @param req Req object
|
|
251
|
+
* @param res Res object
|
|
252
|
+
* @param next 'Next' function
|
|
253
|
+
*/
|
|
254
|
+
handler(req, res, next) {
|
|
255
|
+
/* Set X-Powered-By header */
|
|
256
|
+
const { xPoweredBy } = this.settings;
|
|
257
|
+
if (xPoweredBy)
|
|
258
|
+
res.setHeader('X-Powered-By', typeof xPoweredBy === 'string' ? xPoweredBy : 'tinyhttp');
|
|
259
|
+
// @ts-expect-error typescript is not smart enough to understand "this" ts(2345)
|
|
260
|
+
const exts = this.applyExtensions || extendMiddleware(this);
|
|
261
|
+
let mw = [
|
|
262
|
+
{
|
|
263
|
+
handler: exts,
|
|
264
|
+
type: 'mw',
|
|
265
|
+
path: '/'
|
|
266
|
+
}
|
|
267
|
+
];
|
|
268
|
+
req.baseUrl = '';
|
|
269
|
+
const handle = (mw, pathname) => async (req, res, next) => {
|
|
270
|
+
var _a;
|
|
271
|
+
const { path, handler, regex } = mw;
|
|
272
|
+
let params;
|
|
273
|
+
try {
|
|
274
|
+
params = regex ? getURLParams(regex, pathname) : {};
|
|
275
|
+
}
|
|
276
|
+
catch (e) {
|
|
277
|
+
console.error(e);
|
|
278
|
+
if (e instanceof URIError)
|
|
279
|
+
return res.sendStatus(400);
|
|
280
|
+
throw e;
|
|
281
|
+
}
|
|
282
|
+
// Warning: users should not use :wild as a pattern
|
|
283
|
+
let prefix = path;
|
|
284
|
+
if (regex) {
|
|
285
|
+
for (const key of regex.keys) {
|
|
286
|
+
if (key === 'wild') {
|
|
287
|
+
prefix = prefix.replace('*', params.wild);
|
|
288
|
+
}
|
|
289
|
+
else {
|
|
290
|
+
prefix = prefix.replace(`:${key}`, params[key]);
|
|
291
|
+
}
|
|
292
|
+
}
|
|
293
|
+
}
|
|
294
|
+
req.params = { ...req.params, ...params };
|
|
295
|
+
if (mw.type === 'mw') {
|
|
296
|
+
req.url = lead(req.originalUrl.substring(prefix.length));
|
|
297
|
+
req.baseUrl = trail(req.originalUrl.substring(0, prefix.length));
|
|
298
|
+
}
|
|
299
|
+
if (!req.path)
|
|
300
|
+
req.path = pathname;
|
|
301
|
+
if ((_a = this.settings) === null || _a === void 0 ? void 0 : _a.enableReqRoute)
|
|
302
|
+
req.route = mw;
|
|
303
|
+
await applyHandler(handler)(req, res, next);
|
|
304
|
+
};
|
|
305
|
+
let idx = 0;
|
|
306
|
+
const loop = () => {
|
|
307
|
+
req.originalUrl = req.baseUrl + req.url;
|
|
308
|
+
const pathname = getPathname(req.url);
|
|
309
|
+
const matched = __classPrivateFieldGet(this, _App_instances, "m", _App_find).call(this, pathname).filter((x) => (req.method === 'HEAD' || (x.method ? x.method === req.method : true)) && !mw.includes(x));
|
|
310
|
+
if (matched.length && matched[0] !== null) {
|
|
311
|
+
if (idx !== 0) {
|
|
312
|
+
idx = mw.length;
|
|
313
|
+
req.params = {};
|
|
314
|
+
}
|
|
315
|
+
mw = [
|
|
316
|
+
...mw,
|
|
317
|
+
...matched,
|
|
318
|
+
{
|
|
319
|
+
type: 'mw',
|
|
320
|
+
handler: (req, res, next) => {
|
|
321
|
+
if (req.method === 'HEAD') {
|
|
322
|
+
res.statusCode = 204;
|
|
323
|
+
return res.end('');
|
|
324
|
+
}
|
|
325
|
+
next();
|
|
326
|
+
},
|
|
327
|
+
path: '/'
|
|
328
|
+
}
|
|
329
|
+
];
|
|
330
|
+
}
|
|
331
|
+
else if (this.parent == null) {
|
|
332
|
+
mw.push({
|
|
333
|
+
handler: this.noMatchHandler,
|
|
334
|
+
type: 'route',
|
|
335
|
+
path: '/'
|
|
336
|
+
});
|
|
337
|
+
}
|
|
338
|
+
void handle(mw[idx++], pathname)(req, res, next);
|
|
339
|
+
};
|
|
340
|
+
const parentNext = next;
|
|
341
|
+
next = (err) => {
|
|
342
|
+
if (err != null) {
|
|
343
|
+
// @ts-expect-error The 'this' context of type 'this' is not assignable to method's 'this' of type 'App<Request, Response<unknown>>' ts(2345)
|
|
344
|
+
return this.onError(err, req, res);
|
|
345
|
+
}
|
|
346
|
+
if (res.writableEnded)
|
|
347
|
+
return;
|
|
348
|
+
if (idx >= mw.length) {
|
|
349
|
+
if (parentNext != null)
|
|
350
|
+
parentNext();
|
|
351
|
+
return;
|
|
352
|
+
}
|
|
353
|
+
loop();
|
|
354
|
+
};
|
|
355
|
+
loop();
|
|
356
|
+
}
|
|
357
|
+
/**
|
|
358
|
+
* Creates HTTP server and dispatches middleware
|
|
359
|
+
* @param port server listening port
|
|
360
|
+
* @param cb callback to be invoked after server starts listening
|
|
361
|
+
* @param host server listening host
|
|
362
|
+
*/
|
|
363
|
+
listen(port, cb, host) {
|
|
364
|
+
return createServer().on('request', this.attach).listen(port, host, cb);
|
|
365
|
+
}
|
|
366
|
+
}
|
|
367
|
+
_App_instances = new WeakSet(), _App_find = function _App_find(url) {
|
|
368
|
+
return this.middleware.filter((m) => {
|
|
369
|
+
m.regex = m.regex || rg(m.path, m.type === 'mw');
|
|
370
|
+
let fullPathRegex;
|
|
371
|
+
m.fullPath && typeof m.fullPath === 'string'
|
|
372
|
+
? (fullPathRegex = rg(m.fullPath, m.type === 'mw'))
|
|
373
|
+
: (fullPathRegex = null);
|
|
374
|
+
return m.regex.pattern.test(url) && (m.type === 'mw' && fullPathRegex ? fullPathRegex.pattern.test(url) : true);
|
|
375
|
+
});
|
|
376
|
+
};
|
|
377
|
+
//# sourceMappingURL=app.js.map
|
package/dist/app.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"app.js","sourceRoot":"","sources":["../src/app.ts"],"names":[],"mappings":"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"}
|
package/dist/extend.d.ts
CHANGED
|
@@ -1,11 +1,8 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import {
|
|
3
|
-
import {
|
|
4
|
-
import { Response } from './response.js';
|
|
5
|
-
import { TemplateEngineOptions } from './types.js';
|
|
6
|
-
|
|
1
|
+
import type { App } from './app.js';
|
|
2
|
+
import type { Handler } from './index.js';
|
|
3
|
+
import type { TemplateEngineOptions } from './types.js';
|
|
7
4
|
/**
|
|
8
5
|
* Extends Request and Response objects with custom properties and methods
|
|
9
6
|
*/
|
|
10
|
-
export declare const extendMiddleware: <EngineOptions extends TemplateEngineOptions = TemplateEngineOptions>(app: App) =>
|
|
7
|
+
export declare const extendMiddleware: <EngineOptions extends TemplateEngineOptions = TemplateEngineOptions>(app: App) => Handler;
|
|
11
8
|
//# sourceMappingURL=extend.d.ts.map
|
package/dist/extend.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"extend.d.ts","sourceRoot":"","sources":["../src/extend.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"extend.d.ts","sourceRoot":"","sources":["../src/extend.ts"],"names":[],"mappings":"AAiCA,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,UAAU,CAAA;AACnC,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,YAAY,CAAA;AAKzC,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,YAAY,CAAA;AAEvD;;GAEG;AACH,eAAO,MAAM,gBAAgB,GAAI,aAAa,SAAS,qBAAqB,+BAA+B,GAAG,KA8DtG,OAAO,CAAA"}
|
package/dist/extend.js
ADDED
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
import { compile } from '@tinyhttp/proxy-addr';
|
|
2
|
+
import { checkIfXMLHttpRequest, getAccepts, getAcceptsCharsets, getAcceptsEncodings, getAcceptsLanguages, getFreshOrStale, getQueryParams, getRangeFromHeader, getRequestHeader } from '@tinyhttp/req';
|
|
3
|
+
import { append, attachment, clearCookie, download, formatResponse, getResponseHeader, json, redirect, send, sendFile, sendStatus, setContentType, setCookie, setHeader, setLinksHeader, setLocationHeader, setVaryHeader, status } from '@tinyhttp/res';
|
|
4
|
+
import { getSubdomains } from './request.js';
|
|
5
|
+
import { getHost, getIP, getIPs, getProtocol } from './request.js';
|
|
6
|
+
import { renderTemplate } from './response.js';
|
|
7
|
+
/**
|
|
8
|
+
* Extends Request and Response objects with custom properties and methods
|
|
9
|
+
*/
|
|
10
|
+
export const extendMiddleware = (app) => ((req, res, next) => {
|
|
11
|
+
const { settings } = app;
|
|
12
|
+
res.get = getResponseHeader(res);
|
|
13
|
+
req.get = getRequestHeader(req);
|
|
14
|
+
if (settings === null || settings === void 0 ? void 0 : settings.bindAppToReqRes) {
|
|
15
|
+
req.app = app;
|
|
16
|
+
res.app = app;
|
|
17
|
+
}
|
|
18
|
+
if (settings === null || settings === void 0 ? void 0 : settings.networkExtensions) {
|
|
19
|
+
let trust = settings === null || settings === void 0 ? void 0 : settings['trust proxy'];
|
|
20
|
+
if (typeof trust !== 'function') {
|
|
21
|
+
trust = compile(trust);
|
|
22
|
+
settings['trust proxy'] = trust;
|
|
23
|
+
}
|
|
24
|
+
req.protocol = getProtocol(req, trust);
|
|
25
|
+
req.secure = req.protocol === 'https';
|
|
26
|
+
const host = getHost(req, trust);
|
|
27
|
+
req.hostname = host === null || host === void 0 ? void 0 : host.hostname;
|
|
28
|
+
req.port = host === null || host === void 0 ? void 0 : host.port;
|
|
29
|
+
req.subdomains = getSubdomains(req, trust, settings.subdomainOffset);
|
|
30
|
+
req.ip = getIP(req, trust);
|
|
31
|
+
req.ips = getIPs(req, trust);
|
|
32
|
+
}
|
|
33
|
+
req.query = getQueryParams(req.url);
|
|
34
|
+
req.range = getRangeFromHeader(req);
|
|
35
|
+
req.accepts = getAccepts(req);
|
|
36
|
+
req.acceptsCharsets = getAcceptsCharsets(req);
|
|
37
|
+
req.acceptsEncodings = getAcceptsEncodings(req);
|
|
38
|
+
req.acceptsLanguages = getAcceptsLanguages(req);
|
|
39
|
+
req.xhr = checkIfXMLHttpRequest(req);
|
|
40
|
+
res.header = res.set = setHeader(res);
|
|
41
|
+
res.send = send(req, res);
|
|
42
|
+
res.json = json(res);
|
|
43
|
+
res.status = status(res);
|
|
44
|
+
res.sendStatus = sendStatus(req, res);
|
|
45
|
+
res.sendFile = sendFile(req, res);
|
|
46
|
+
res.type = setContentType(res);
|
|
47
|
+
res.location = setLocationHeader(req, res);
|
|
48
|
+
res.links = setLinksHeader(res);
|
|
49
|
+
res.vary = setVaryHeader(res);
|
|
50
|
+
res.cookie = setCookie(req, res);
|
|
51
|
+
res.clearCookie = clearCookie(req, res);
|
|
52
|
+
res.render = renderTemplate(req, res, app);
|
|
53
|
+
res.format = formatResponse(req, res, next);
|
|
54
|
+
res.redirect = redirect(req, res, next);
|
|
55
|
+
res.attachment = attachment(res);
|
|
56
|
+
res.download = download(req, res);
|
|
57
|
+
res.append = append(res);
|
|
58
|
+
res.locals = res.locals || Object.create(null);
|
|
59
|
+
Object.defineProperty(req, 'fresh', { get: getFreshOrStale.bind(null, req, res), configurable: true });
|
|
60
|
+
req.stale = !req.fresh;
|
|
61
|
+
next();
|
|
62
|
+
});
|
|
63
|
+
//# sourceMappingURL=extend.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"extend.js","sourceRoot":"","sources":["../src/extend.ts"],"names":[],"mappings":"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"}
|
package/dist/index.d.ts
CHANGED
|
@@ -1,6 +1,3 @@
|
|
|
1
|
-
import { Middleware, NextFunction, AsyncHandler as RAsyncHandler, Handler as RHandler, SyncHandler as RSyncHandler } from '@tinyhttp/router';
|
|
2
|
-
import { Request } from './request.js';
|
|
3
|
-
import { Response } from './response.js';
|
|
4
1
|
export { App } from './app.js';
|
|
5
2
|
export * from './request.js';
|
|
6
3
|
export * from './response.js';
|
|
@@ -8,6 +5,9 @@ export { extendMiddleware } from './extend.js';
|
|
|
8
5
|
export { onErrorHandler, type ErrorHandler } from './onError.js';
|
|
9
6
|
export { View } from './view.js';
|
|
10
7
|
export type { AppSettings, TemplateEngineOptions, TemplateEngine, AppConstructor } from './types.js';
|
|
8
|
+
import type { Middleware, NextFunction, AsyncHandler as RAsyncHandler, Handler as RHandler, SyncHandler as RSyncHandler } from '@tinyhttp/router';
|
|
9
|
+
import type { Request } from './request.js';
|
|
10
|
+
import type { Response } from './response.js';
|
|
11
11
|
export type Handler = RHandler<Request, Response>;
|
|
12
12
|
export type AsyncHandler = RAsyncHandler<Request, Response>;
|
|
13
13
|
export type SyncHandler = RSyncHandler<Request, Response>;
|