@tinyhttp/app 2.3.1 → 2.5.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 +14 -65
- package/dist/app.d.ts.map +1 -1
- package/dist/app.js +326 -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 -464
- 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 +74 -8
- package/dist/types.d.ts.map +1 -1
- package/dist/types.js +2 -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 +5 -6
package/dist/request.js
ADDED
|
@@ -0,0 +1,85 @@
|
|
|
1
|
+
import { all, compile, proxyaddr as proxyAddr } from '@tinyhttp/proxy-addr';
|
|
2
|
+
import { isIP } from 'node:net';
|
|
3
|
+
export { getURLParams } from '@tinyhttp/req';
|
|
4
|
+
const trustRemoteAddress = ({ socket }, trust) => {
|
|
5
|
+
const val = socket.remoteAddress;
|
|
6
|
+
if (typeof trust !== 'function')
|
|
7
|
+
trust = compile(trust);
|
|
8
|
+
return trust(val, 0);
|
|
9
|
+
};
|
|
10
|
+
export const getProtocol = (req, trust) => {
|
|
11
|
+
const proto = `http${req.secure ? 's' : ''}`;
|
|
12
|
+
if (!trustRemoteAddress(req, trust))
|
|
13
|
+
return proto;
|
|
14
|
+
const header = req.headers['X-Forwarded-Proto'] || proto;
|
|
15
|
+
const index = header.indexOf(',');
|
|
16
|
+
return index !== -1 ? header.substring(0, index).trim() : header.trim();
|
|
17
|
+
};
|
|
18
|
+
const normalizeHostString = (host) => decodeURIComponent(host).toLowerCase().normalize();
|
|
19
|
+
const getAuthorityHeaderHostString = (req) => {
|
|
20
|
+
const authority = req.get(':authority');
|
|
21
|
+
if (Array.isArray(authority))
|
|
22
|
+
return undefined;
|
|
23
|
+
if (Array.isArray(authority) || !authority)
|
|
24
|
+
return undefined;
|
|
25
|
+
const index = authority.indexOf('@');
|
|
26
|
+
if (index === -1)
|
|
27
|
+
return normalizeHostString(authority);
|
|
28
|
+
return normalizeHostString(authority.substring(index + 1));
|
|
29
|
+
};
|
|
30
|
+
const getForwardedHeaderHostString = (req) => {
|
|
31
|
+
const forwardedHost = req.get('x-forwarded-host');
|
|
32
|
+
if (Array.isArray(forwardedHost))
|
|
33
|
+
return undefined;
|
|
34
|
+
if (!forwardedHost)
|
|
35
|
+
return undefined;
|
|
36
|
+
return normalizeHostString(forwardedHost);
|
|
37
|
+
};
|
|
38
|
+
const getDefaultHeaderHostString = (req) => {
|
|
39
|
+
const host = req.get('host');
|
|
40
|
+
if (!host || host.indexOf(',') !== -1)
|
|
41
|
+
return undefined;
|
|
42
|
+
if (host.indexOf(',') !== -1)
|
|
43
|
+
return undefined;
|
|
44
|
+
return normalizeHostString(host);
|
|
45
|
+
};
|
|
46
|
+
const getHostString = (req, trust) => {
|
|
47
|
+
var _a;
|
|
48
|
+
if (trustRemoteAddress(req, trust)) {
|
|
49
|
+
const forwardedHost = getForwardedHeaderHostString(req);
|
|
50
|
+
if (forwardedHost)
|
|
51
|
+
return forwardedHost;
|
|
52
|
+
}
|
|
53
|
+
const authorityHost = getAuthorityHeaderHostString(req);
|
|
54
|
+
const defaultHost = getDefaultHeaderHostString(req);
|
|
55
|
+
if (authorityHost && defaultHost) {
|
|
56
|
+
if (authorityHost !== defaultHost)
|
|
57
|
+
throw new Error('Request `:authority` pseudo-header does not agree with `Host` header');
|
|
58
|
+
return authorityHost;
|
|
59
|
+
}
|
|
60
|
+
return (_a = authorityHost !== null && authorityHost !== void 0 ? authorityHost : defaultHost) !== null && _a !== void 0 ? _a : undefined;
|
|
61
|
+
};
|
|
62
|
+
export const getHost = (req, trust) => {
|
|
63
|
+
const host = getHostString(req, trust);
|
|
64
|
+
if (!host)
|
|
65
|
+
return undefined;
|
|
66
|
+
// IPv6 literal support
|
|
67
|
+
const index = host.indexOf(':', host[0] === '[' ? host.indexOf(']') + 1 : 0);
|
|
68
|
+
if (index === -1)
|
|
69
|
+
return { hostname: host };
|
|
70
|
+
const hostname = host.substring(0, index);
|
|
71
|
+
const port = Number(host.substring(index + 1));
|
|
72
|
+
if (Number.isNaN(port))
|
|
73
|
+
throw new TypeError('Port number is NaN, therefore Host is malformed');
|
|
74
|
+
return { hostname, port };
|
|
75
|
+
};
|
|
76
|
+
export const getIP = (req, trust) => proxyAddr(req, trust).replace(/^.*:/, ''); // striping the redundant prefix addeded by OS to IPv4 address
|
|
77
|
+
export const getIPs = (req, trust) => all(req, trust);
|
|
78
|
+
export const getSubdomains = (req, trust, subdomainOffset = 2) => {
|
|
79
|
+
const host = getHost(req, trust);
|
|
80
|
+
if (!(host === null || host === void 0 ? void 0 : host.hostname))
|
|
81
|
+
return [];
|
|
82
|
+
const subdomains = isIP(host.hostname) ? [host.hostname] : host.hostname.split('.').reverse();
|
|
83
|
+
return subdomains.slice(subdomainOffset);
|
|
84
|
+
};
|
|
85
|
+
//# sourceMappingURL=request.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"request.js","sourceRoot":"","sources":["../src/request.ts"],"names":[],"mappings":"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"}
|
package/dist/response.d.ts
CHANGED
|
@@ -1,15 +1,14 @@
|
|
|
1
|
-
import { ServerResponse } from 'node:http';
|
|
2
|
-
import { SerializeOptions } from '@tinyhttp/cookie';
|
|
3
|
-
import { DownloadOptions, FormatProps, ReadStreamOptions } from '@tinyhttp/res';
|
|
4
|
-
import { App } from './app.js';
|
|
5
|
-
import { Request } from './request.js';
|
|
6
|
-
import { AppRenderOptions, TemplateEngineOptions } from './types.js';
|
|
7
|
-
|
|
1
|
+
import type { OutgoingHttpHeaders, ServerResponse } from 'node:http';
|
|
2
|
+
import type { SerializeOptions } from '@tinyhttp/cookie';
|
|
3
|
+
import type { DownloadOptions, FormatProps, ReadStreamOptions } from '@tinyhttp/res';
|
|
4
|
+
import type { App } from './app.js';
|
|
5
|
+
import type { Request } from './request.js';
|
|
6
|
+
import type { AppRenderOptions, TemplateEngineOptions } from './types.js';
|
|
8
7
|
export declare const renderTemplate: <O extends TemplateEngineOptions = TemplateEngineOptions>(_req: Request, res: Response, app: App) => (file: string, data?: Record<string, unknown>, options?: AppRenderOptions<O>) => Response;
|
|
9
8
|
export interface Response<B = unknown> extends ServerResponse {
|
|
10
9
|
header(field: string | Record<string, unknown>, val?: string | any[]): Response<B>;
|
|
11
10
|
set(field: string | Record<string, unknown>, val?: string | any[]): Response<B>;
|
|
12
|
-
get(field:
|
|
11
|
+
get<HeaderName extends string>(field: HeaderName): OutgoingHttpHeaders[HeaderName];
|
|
13
12
|
send(body: B): Response<B>;
|
|
14
13
|
sendFile(path: string, options?: ReadStreamOptions, cb?: (err?: unknown) => void): Response<B>;
|
|
15
14
|
json(body: B): Response<B>;
|
package/dist/response.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"response.d.ts","sourceRoot":"","sources":["../src/response.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,WAAW,CAAA;
|
|
1
|
+
{"version":3,"file":"response.d.ts","sourceRoot":"","sources":["../src/response.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,mBAAmB,EAAE,cAAc,EAAE,MAAM,WAAW,CAAA;AACpE,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAA;AACxD,OAAO,KAAK,EAAE,eAAe,EAAE,WAAW,EAAE,iBAAiB,EAAE,MAAM,eAAe,CAAA;AACpF,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,UAAU,CAAA;AACnC,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,cAAc,CAAA;AAC3C,OAAO,KAAK,EAAE,gBAAgB,EAAE,qBAAqB,EAAE,MAAM,YAAY,CAAA;AAEzE,eAAO,MAAM,cAAc,GACxB,CAAC,SAAS,qBAAqB,gCAAgC,OAAO,OAAO,QAAQ,OAAO,GAAG,YACzF,MAAM,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,YAAY,gBAAgB,CAAC,CAAC,CAAC,KAAG,QAM9E,CAAA;AAEH,MAAM,WAAW,QAAQ,CAAC,CAAC,GAAG,OAAO,CAAE,SAAQ,cAAc;IAC3D,MAAM,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,GAAG,CAAC,EAAE,MAAM,GAAG,GAAG,EAAE,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAA;IAClF,GAAG,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,GAAG,CAAC,EAAE,MAAM,GAAG,GAAG,EAAE,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAA;IAC/E,GAAG,CAAC,UAAU,SAAS,MAAM,EAAE,KAAK,EAAE,UAAU,GAAG,mBAAmB,CAAC,UAAU,CAAC,CAAA;IAClF,IAAI,CAAC,IAAI,EAAE,CAAC,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAA;IAC1B,QAAQ,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,iBAAiB,EAAE,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,OAAO,KAAK,IAAI,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAA;IAC9F,IAAI,CAAC,IAAI,EAAE,CAAC,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAA;IAC1B,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAA;IACnC,UAAU,CAAC,UAAU,EAAE,MAAM,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAA;IAC3C,MAAM,CACJ,IAAI,EAAE,MAAM,EACZ,KAAK,EAAE,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EACvC,OAAO,CAAC,EAAE,gBAAgB,GAAG,OAAO,CAAC;QAAE,MAAM,EAAE,OAAO,CAAA;KAAE,CAAC,GACxD,QAAQ,CAAC,CAAC,CAAC,CAAA;IACd,WAAW,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,gBAAgB,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAA;IAClE,QAAQ,CAAC,GAAG,EAAE,MAAM,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAA;IAClC,KAAK,CAAC,KAAK,EAAE;QAAE,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAAA;KAAE,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAA;IACpD,MAAM,CAAC,CAAC,SAAS,qBAAqB,GAAG,qBAAqB,EAC5D,IAAI,EAAE,MAAM,EACZ,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EAC1B,OAAO,CAAC,EAAE,gBAAgB,CAAC,CAAC,CAAC,GAC5B,QAAQ,CAAC,CAAC,CAAC,CAAA;IACd,IAAI,CAAC,KAAK,EAAE,MAAM,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAA;IAChC,MAAM,CAAC,GAAG,EAAE,WAAW,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAA;IACrC,QAAQ,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAA;IACnD,IAAI,CAAC,IAAI,EAAE,MAAM,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAA;IAC/B,QAAQ,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,eAAe,EAAE,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,OAAO,KAAK,IAAI,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAA;IAC9G,UAAU,CAAC,QAAQ,CAAC,EAAE,MAAM,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAA;IAC1C,GAAG,CAAC,EAAE,GAAG,CAAA;IACT,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAA;IAC3B;;;;;;OAMG;IACH,KAAK,CAAC,GAAG,EAAE,GAAG,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAA;IAE5B,MAAM,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,GAAG,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAA;CAC/C"}
|
package/dist/response.js
ADDED
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
export const renderTemplate = (_req, res, app) => (file, data, options) => {
|
|
2
|
+
app.render(file, data ? { ...res.locals, ...data } : res.locals, options, (err, html) => {
|
|
3
|
+
if (err)
|
|
4
|
+
throw err;
|
|
5
|
+
res.send(html);
|
|
6
|
+
});
|
|
7
|
+
return res;
|
|
8
|
+
};
|
|
9
|
+
//# sourceMappingURL=response.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"response.js","sourceRoot":"","sources":["../src/response.ts"],"names":[],"mappings":"AAOA,MAAM,CAAC,MAAM,cAAc,GACzB,CAA0D,IAAa,EAAE,GAAa,EAAE,GAAQ,EAAE,EAAE,CACpG,CAAC,IAAY,EAAE,IAA8B,EAAE,OAA6B,EAAY,EAAE;IACxF,GAAG,CAAC,MAAM,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC,EAAE,GAAG,GAAG,CAAC,MAAM,EAAE,GAAG,IAAI,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,MAAM,EAAE,OAAO,EAAE,CAAC,GAAY,EAAE,IAAa,EAAE,EAAE;QACxG,IAAI,GAAG;YAAE,MAAM,GAAG,CAAA;QAClB,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;IAChB,CAAC,CAAC,CAAA;IACF,OAAO,GAAG,CAAA;AACZ,CAAC,CAAA"}
|
package/dist/types.d.ts
CHANGED
|
@@ -1,10 +1,10 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import {
|
|
3
|
-
import {
|
|
4
|
-
import {
|
|
5
|
-
import {
|
|
6
|
-
import {
|
|
7
|
-
|
|
1
|
+
import type { Server } from 'node:http';
|
|
2
|
+
import type { Trust } from '@tinyhttp/proxy-addr';
|
|
3
|
+
import type { Handler, NextFunction, RouterInterface, UseMethodParams } from '@tinyhttp/router';
|
|
4
|
+
import type { ErrorHandler } from './onError.js';
|
|
5
|
+
import type { Request } from './request.js';
|
|
6
|
+
import type { Response } from './response.js';
|
|
7
|
+
import type { View } from './view.js';
|
|
8
8
|
/**
|
|
9
9
|
* tinyhttp App has a few settings for toggling features
|
|
10
10
|
*/
|
|
@@ -22,6 +22,7 @@ export type AppSettings = Partial<{
|
|
|
22
22
|
}>;
|
|
23
23
|
export type TemplateEngineOptions = {
|
|
24
24
|
[key: string]: unknown;
|
|
25
|
+
cache: boolean;
|
|
25
26
|
};
|
|
26
27
|
/**
|
|
27
28
|
* Function that processes the template
|
|
@@ -37,6 +38,71 @@ export type AppConstructor<Req extends Request = Request, Res extends Response =
|
|
|
37
38
|
noMatchHandler: Handler<Req, Res>;
|
|
38
39
|
onError: ErrorHandler;
|
|
39
40
|
settings: AppSettings;
|
|
40
|
-
applyExtensions:
|
|
41
|
+
applyExtensions: Handler<Req, Res>;
|
|
42
|
+
new (options: AppConstructor<Req, Res>): AppInterface<Req, Res>;
|
|
41
43
|
}>;
|
|
44
|
+
export interface AppInterface<Req extends Request, Res extends Response> extends RouterInterface<AppInterface<Req, Res>, Req, Res> {
|
|
45
|
+
/**
|
|
46
|
+
* Set app setting
|
|
47
|
+
* @param setting setting name
|
|
48
|
+
* @param value setting value
|
|
49
|
+
*/
|
|
50
|
+
set<K extends keyof AppSettings>(setting: K, value: AppSettings[K]): AppInterface<Req, Res>;
|
|
51
|
+
/**
|
|
52
|
+
* Enable app setting
|
|
53
|
+
* @param setting Setting name
|
|
54
|
+
*/
|
|
55
|
+
enable<K extends keyof AppSettings>(setting: K): AppInterface<Req, Res>;
|
|
56
|
+
/**
|
|
57
|
+
* Check if setting is enabled
|
|
58
|
+
* @param setting Setting name
|
|
59
|
+
* @returns
|
|
60
|
+
*/
|
|
61
|
+
enabled<K extends keyof AppSettings>(setting: K): boolean;
|
|
62
|
+
/**
|
|
63
|
+
* Disable app setting
|
|
64
|
+
* @param setting Setting name
|
|
65
|
+
*/
|
|
66
|
+
disable<K extends keyof AppSettings>(setting: K): AppInterface<Req, Res>;
|
|
67
|
+
/**
|
|
68
|
+
* Return the app's absolute pathname
|
|
69
|
+
* based on the parent(s) that have
|
|
70
|
+
* mounted it.
|
|
71
|
+
*
|
|
72
|
+
* For example if the application was
|
|
73
|
+
* mounted as `"/admin"`, which itself
|
|
74
|
+
* was mounted as `"/blog"` then the
|
|
75
|
+
* return value would be `"/blog/admin"`.
|
|
76
|
+
*
|
|
77
|
+
*/
|
|
78
|
+
path(): string;
|
|
79
|
+
/**
|
|
80
|
+
* Register a template engine with extension
|
|
81
|
+
*/
|
|
82
|
+
engine<RenderOptions extends TemplateEngineOptions = TemplateEngineOptions>(ext: string, fn: TemplateEngine<RenderOptions>): AppInterface<Req, Res>;
|
|
83
|
+
/**
|
|
84
|
+
* Render a template
|
|
85
|
+
* @param name What to render
|
|
86
|
+
* @param data data that is passed to a template
|
|
87
|
+
* @param options Template engine options
|
|
88
|
+
* @param cb Callback that consumes error and html
|
|
89
|
+
*/
|
|
90
|
+
render<RenderOptions extends TemplateEngineOptions = TemplateEngineOptions>(name: string, data: Record<string, unknown>, options: AppRenderOptions<RenderOptions>, cb: (err: unknown, html?: unknown) => void): void;
|
|
91
|
+
use(...args: UseMethodParams<Req, Res, AppInterface<any, any>>): AppInterface<Req, Res>;
|
|
92
|
+
route(path: string): AppInterface<Req, Res>;
|
|
93
|
+
/**
|
|
94
|
+
* Extends Req / Res objects, pushes 404 and 500 handlers, dispatches middleware
|
|
95
|
+
* @param req Req object
|
|
96
|
+
* @param res Res object
|
|
97
|
+
* @param next 'Next' function
|
|
98
|
+
*/
|
|
99
|
+
handler(req: Req, res: Res, next?: NextFunction): void;
|
|
100
|
+
/**
|
|
101
|
+
* Creates HTTP server and dispatches middleware
|
|
102
|
+
* @param port server listening port
|
|
103
|
+
* @param cb callback to be invoked after server starts listening
|
|
104
|
+
* @param host server listening host
|
|
105
|
+
*/
|
|
106
|
+
listen(port?: number, cb?: () => void, host?: string): Server;
|
|
107
|
+
}
|
|
42
108
|
//# sourceMappingURL=types.d.ts.map
|
package/dist/types.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
|
package/dist/types.js
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":""}
|
package/dist/view.d.ts
CHANGED
|
@@ -1,5 +1,12 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
1
|
+
/*!
|
|
2
|
+
* Ported from https://github.com/expressjs/express/blob/master/lib/view.js
|
|
3
|
+
* express
|
|
4
|
+
* Copyright(c) 2009-2013 TJ Holowaychuk
|
|
5
|
+
* Copyright(c) 2013 Roman Shtylman
|
|
6
|
+
* Copyright(c) 2014-2015 Douglas Christopher Wilson
|
|
7
|
+
* MIT Licensed
|
|
8
|
+
*/
|
|
9
|
+
import type { TemplateEngine, TemplateEngineOptions } from './types.js';
|
|
3
10
|
/**
|
|
4
11
|
* Initialize a new `View` with the given `name`.
|
|
5
12
|
*
|
|
@@ -15,8 +22,8 @@ import { TemplateEngine, TemplateEngineOptions } from './types.js';
|
|
|
15
22
|
*/
|
|
16
23
|
export declare class View<RenderOptions extends TemplateEngineOptions = TemplateEngineOptions> {
|
|
17
24
|
#private;
|
|
18
|
-
ext
|
|
19
|
-
defaultEngine
|
|
25
|
+
ext?: string;
|
|
26
|
+
defaultEngine?: string;
|
|
20
27
|
name: string;
|
|
21
28
|
engine: TemplateEngine<RenderOptions>;
|
|
22
29
|
path: string;
|
package/dist/view.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"view.d.ts","sourceRoot":"","sources":["../src/view.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAIH,OAAO,KAAK,EAAE,cAAc,EAAE,qBAAqB,EAAE,MAAM,YAAY,CAAA;AAUvE;;;;;;;;;;;;GAYG;AAEH,qBAAa,IAAI,CAAC,aAAa,SAAS,qBAAqB,GAAG,qBAAqB;;IACnF,GAAG,EAAE,MAAM,CAAA;
|
|
1
|
+
{"version":3,"file":"view.d.ts","sourceRoot":"","sources":["../src/view.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAIH,OAAO,KAAK,EAAE,cAAc,EAAE,qBAAqB,EAAE,MAAM,YAAY,CAAA;AAUvE;;;;;;;;;;;;GAYG;AAEH,qBAAa,IAAI,CAAC,aAAa,SAAS,qBAAqB,GAAG,qBAAqB;;IACnF,GAAG,CAAC,EAAE,MAAM,CAAA;IACZ,aAAa,CAAC,EAAE,MAAM,CAAA;IACtB,IAAI,EAAE,MAAM,CAAA;IACZ,MAAM,EAAE,cAAc,CAAC,aAAa,CAAC,CAAA;IACrC,IAAI,EAAE,MAAM,CAAA;IACZ,IAAI,EAAE,MAAM,GAAG,MAAM,EAAE,CAAK;gBAE1B,IAAI,EAAE,MAAM,EACZ,IAAI,GAAE,OAAO,CAAC;QACZ,aAAa,EAAE,MAAM,CAAA;QACrB,IAAI,EAAE,MAAM,GAAG,MAAM,EAAE,CAAA;QACvB,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,cAAc,CAAC,aAAa,CAAC,CAAC,CAAA;KACvD,CAAM;IA4DT,MAAM,CAAC,OAAO,EAAE,aAAa,EAAE,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,EAAE,EAAE,CAAC,GAAG,EAAE,KAAK,GAAG,IAAI,EAAE,IAAI,EAAE,OAAO,KAAK,IAAI;CAG7G"}
|
package/dist/view.js
ADDED
|
@@ -0,0 +1,94 @@
|
|
|
1
|
+
/*!
|
|
2
|
+
* Ported from https://github.com/expressjs/express/blob/master/lib/view.js
|
|
3
|
+
* express
|
|
4
|
+
* Copyright(c) 2009-2013 TJ Holowaychuk
|
|
5
|
+
* Copyright(c) 2013 Roman Shtylman
|
|
6
|
+
* Copyright(c) 2014-2015 Douglas Christopher Wilson
|
|
7
|
+
* MIT Licensed
|
|
8
|
+
*/
|
|
9
|
+
var __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) {
|
|
10
|
+
if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a getter");
|
|
11
|
+
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");
|
|
12
|
+
return kind === "m" ? f : kind === "a" ? f.call(receiver) : f ? f.value : state.get(receiver);
|
|
13
|
+
};
|
|
14
|
+
var _View_instances, _View_lookup, _View_resolve;
|
|
15
|
+
import { statSync } from 'node:fs';
|
|
16
|
+
import { basename, dirname, extname, join, resolve } from 'node:path';
|
|
17
|
+
function tryStat(path) {
|
|
18
|
+
try {
|
|
19
|
+
return statSync(path);
|
|
20
|
+
}
|
|
21
|
+
catch (e) {
|
|
22
|
+
return undefined;
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
/**
|
|
26
|
+
* Initialize a new `View` with the given `name`.
|
|
27
|
+
*
|
|
28
|
+
* Options:
|
|
29
|
+
*
|
|
30
|
+
* - `defaultEngine` the default template engine name
|
|
31
|
+
* - `engines` template engine require() cache
|
|
32
|
+
* - `root` root path for view lookup
|
|
33
|
+
*
|
|
34
|
+
* @param name
|
|
35
|
+
* @param options
|
|
36
|
+
* @public
|
|
37
|
+
*/
|
|
38
|
+
export class View {
|
|
39
|
+
constructor(name, opts = {}) {
|
|
40
|
+
var _a;
|
|
41
|
+
_View_instances.add(this);
|
|
42
|
+
this.root = [];
|
|
43
|
+
this.ext = extname(name);
|
|
44
|
+
this.name = name;
|
|
45
|
+
if (opts.root)
|
|
46
|
+
this.root = opts.root;
|
|
47
|
+
if (opts.defaultEngine)
|
|
48
|
+
this.defaultEngine = opts.defaultEngine;
|
|
49
|
+
if (!this.ext && !this.defaultEngine)
|
|
50
|
+
throw new Error('No default engine was specified and no extension was provided.');
|
|
51
|
+
let fileName = name;
|
|
52
|
+
if (!this.ext) {
|
|
53
|
+
// get extension from default engine name
|
|
54
|
+
this.ext = this.defaultEngine[0] !== '.' ? `.${this.defaultEngine}` : this.defaultEngine;
|
|
55
|
+
fileName += this.ext;
|
|
56
|
+
}
|
|
57
|
+
if (!((_a = opts.engines) === null || _a === void 0 ? void 0 : _a[this.ext]))
|
|
58
|
+
throw new Error(`No engine was found for ${this.ext}`);
|
|
59
|
+
this.engine = opts.engines[this.ext];
|
|
60
|
+
this.path = __classPrivateFieldGet(this, _View_instances, "m", _View_lookup).call(this, fileName);
|
|
61
|
+
}
|
|
62
|
+
render(options, data, cb) {
|
|
63
|
+
this.engine(this.path, data, options, cb);
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
_View_instances = new WeakSet(), _View_lookup = function _View_lookup(name) {
|
|
67
|
+
let path;
|
|
68
|
+
const roots = [].concat(this.root);
|
|
69
|
+
for (let i = 0; i < roots.length && !path; i++) {
|
|
70
|
+
const root = roots[i];
|
|
71
|
+
// resolve the path
|
|
72
|
+
const loc = resolve(root, name);
|
|
73
|
+
const dir = dirname(loc);
|
|
74
|
+
const file = basename(loc);
|
|
75
|
+
// resolve the file
|
|
76
|
+
path = __classPrivateFieldGet(this, _View_instances, "m", _View_resolve).call(this, dir, file);
|
|
77
|
+
}
|
|
78
|
+
return path;
|
|
79
|
+
}, _View_resolve = function _View_resolve(dir, file) {
|
|
80
|
+
const ext = this.ext;
|
|
81
|
+
// <path>.<ext>
|
|
82
|
+
let path = join(dir, file);
|
|
83
|
+
let stat = tryStat(path);
|
|
84
|
+
if (stat === null || stat === void 0 ? void 0 : stat.isFile()) {
|
|
85
|
+
return path;
|
|
86
|
+
}
|
|
87
|
+
// <path>/index.<ext>
|
|
88
|
+
path = join(dir, basename(file, ext), `index${ext}`);
|
|
89
|
+
stat = tryStat(path);
|
|
90
|
+
if (stat === null || stat === void 0 ? void 0 : stat.isFile()) {
|
|
91
|
+
return path;
|
|
92
|
+
}
|
|
93
|
+
};
|
|
94
|
+
//# sourceMappingURL=view.js.map
|
package/dist/view.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"view.js","sourceRoot":"","sources":["../src/view.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@tinyhttp/app",
|
|
3
|
-
"version": "2.
|
|
3
|
+
"version": "2.5.0",
|
|
4
4
|
"description": "0-legacy, tiny & fast web framework as a replacement of Express",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"homepage": "https://tinyhttp.v1rtl.site",
|
|
@@ -36,12 +36,11 @@
|
|
|
36
36
|
"regexparam": "^2.0.2",
|
|
37
37
|
"@tinyhttp/cookie": "2.1.1",
|
|
38
38
|
"@tinyhttp/proxy-addr": "2.2.0",
|
|
39
|
-
"@tinyhttp/req": "2.2.
|
|
40
|
-
"@tinyhttp/res": "2.2.
|
|
41
|
-
"@tinyhttp/router": "2.2.
|
|
39
|
+
"@tinyhttp/req": "2.2.4",
|
|
40
|
+
"@tinyhttp/res": "2.2.4",
|
|
41
|
+
"@tinyhttp/router": "2.2.3"
|
|
42
42
|
},
|
|
43
43
|
"scripts": {
|
|
44
|
-
"
|
|
45
|
-
"build": "vite build"
|
|
44
|
+
"build": "tsc"
|
|
46
45
|
}
|
|
47
46
|
}
|