treesap 0.2.1 → 0.2.2
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 +4 -0
- package/dist/app.d.ts.map +1 -1
- package/dist/app.js +58 -12
- package/dist/app.js.map +1 -1
- package/dist/path.d.ts +3 -0
- package/dist/path.d.ts.map +1 -1
- package/dist/path.js +6 -2
- package/dist/path.js.map +1 -1
- package/package.json +2 -1
package/dist/app.d.ts
CHANGED
|
@@ -10,9 +10,12 @@ export declare class ServerApp {
|
|
|
10
10
|
private readonly frameworkMiddlewares;
|
|
11
11
|
private readonly middlewares;
|
|
12
12
|
private readonly routes;
|
|
13
|
+
private readonly methodRoutes;
|
|
14
|
+
private readonly exactRoutes;
|
|
13
15
|
private notFoundHandler;
|
|
14
16
|
constructor(options?: CreateAppOptions);
|
|
15
17
|
use(pathOrHandler: string | Handler, ...handlers: Handler[]): this;
|
|
18
|
+
private registerRoute;
|
|
16
19
|
on(methods: string[] | readonly string[], path: string, ...handlers: Handler[]): this;
|
|
17
20
|
get(path: string, ...handlers: Handler[]): this;
|
|
18
21
|
post(path: string, ...handlers: Handler[]): this;
|
|
@@ -21,6 +24,7 @@ export declare class ServerApp {
|
|
|
21
24
|
route(prefix: string, child: ServerApp): this;
|
|
22
25
|
mount(prefix: string, child: ServerApp): this;
|
|
23
26
|
notFound(handler: Handler): this;
|
|
27
|
+
private findRoute;
|
|
24
28
|
fetch(request: Request | string | URL, init?: RequestInit): Promise<Response>;
|
|
25
29
|
}
|
|
26
30
|
export declare function createApp(options?: CreateAppOptions): ServerApp;
|
package/dist/app.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"app.d.ts","sourceRoot":"","sources":["../src/app.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;
|
|
1
|
+
{"version":3,"file":"app.d.ts","sourceRoot":"","sources":["../src/app.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AAUvC,MAAM,MAAM,IAAI,GAAG,MAAM,OAAO,CAAC,QAAQ,CAAC,CAAC;AAC3C,MAAM,MAAM,aAAa,GAAG,QAAQ,GAAG,IAAI,GAAG,OAAO,CAAC,QAAQ,GAAG,IAAI,CAAC,CAAC;AACvE,MAAM,MAAM,OAAO,GAAG,CAAC,GAAG,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,KAAK,aAAa,CAAC;AAElE,MAAM,WAAW,gBAAgB;IAC/B,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,SAAS,CAAC,EAAE,MAAM,GAAG,KAAK,CAAC;CAC5B;AAmHD,qBAAa,SAAS;IACpB,OAAO,CAAC,QAAQ,CAAC,oBAAoB,CAA0B;IAC/D,OAAO,CAAC,QAAQ,CAAC,WAAW,CAA0B;IACtD,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAqB;IAC5C,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAoC;IACjE,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAiD;IAC7E,OAAO,CAAC,eAAe,CACkB;gBAE7B,OAAO,GAAE,gBAAqB;IAsB1C,GAAG,CAAC,aAAa,EAAE,MAAM,GAAG,OAAO,EAAE,GAAG,QAAQ,EAAE,OAAO,EAAE;IAkB3D,OAAO,CAAC,aAAa;IAcrB,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,SAAS,MAAM,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,QAAQ,EAAE,OAAO,EAAE;IAc9E,GAAG,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,QAAQ,EAAE,OAAO,EAAE;IAIxC,IAAI,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,QAAQ,EAAE,OAAO,EAAE;IAIzC,KAAK,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,QAAQ,EAAE,OAAO,EAAE;IAI1C,MAAM,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,QAAQ,EAAE,OAAO,EAAE;IAI3C,KAAK,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,SAAS;IAqBtC,KAAK,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,SAAS;IAItC,QAAQ,CAAC,OAAO,EAAE,OAAO;IAKzB,OAAO,CAAC,SAAS;IAoCX,KAAK,CAAC,OAAO,EAAE,OAAO,GAAG,MAAM,GAAG,GAAG,EAAE,IAAI,CAAC,EAAE,WAAW;CAwChE;AAED,wBAAgB,SAAS,CAAC,OAAO,CAAC,EAAE,gBAAgB,aAEnD;AAED,wBAAgB,YAAY,cAE3B"}
|
package/dist/app.js
CHANGED
|
@@ -2,7 +2,7 @@ import { existsSync } from "node:fs";
|
|
|
2
2
|
import path from "node:path";
|
|
3
3
|
import { Context } from "./context.js";
|
|
4
4
|
import { serveStatic } from "./middleware/serve-static.js";
|
|
5
|
-
import { compilePath, joinPaths } from "./path.js";
|
|
5
|
+
import { compilePath, isExactPathPattern, joinPaths, normalizePathname, } from "./path.js";
|
|
6
6
|
function isProductionRuntime() {
|
|
7
7
|
const viteEnv = import.meta.env;
|
|
8
8
|
return viteEnv?.PROD === true || process.env.NODE_ENV === "production";
|
|
@@ -21,6 +21,11 @@ function resolveDefaultPublicRoot(rootDir) {
|
|
|
21
21
|
}
|
|
22
22
|
return null;
|
|
23
23
|
}
|
|
24
|
+
function appendRouteRecord(index, key, record) {
|
|
25
|
+
const records = index.get(key) ?? [];
|
|
26
|
+
records.push(record);
|
|
27
|
+
index.set(key, records);
|
|
28
|
+
}
|
|
24
29
|
function applyResponseDefaults(response) {
|
|
25
30
|
const contentType = response.headers.get("Content-Type")?.toLowerCase() ?? "";
|
|
26
31
|
if (!contentType.startsWith("text/html") ||
|
|
@@ -65,6 +70,8 @@ export class ServerApp {
|
|
|
65
70
|
frameworkMiddlewares = [];
|
|
66
71
|
middlewares = [];
|
|
67
72
|
routes = [];
|
|
73
|
+
methodRoutes = new Map();
|
|
74
|
+
exactRoutes = new Map();
|
|
68
75
|
notFoundHandler = (ctx) => ctx.text("Not Found", { status: 404 });
|
|
69
76
|
constructor(options = {}) {
|
|
70
77
|
if (options.publicDir === false) {
|
|
@@ -97,13 +104,26 @@ export class ServerApp {
|
|
|
97
104
|
}
|
|
98
105
|
return this;
|
|
99
106
|
}
|
|
107
|
+
registerRoute(record) {
|
|
108
|
+
this.routes.push(record);
|
|
109
|
+
for (const method of record.methods) {
|
|
110
|
+
appendRouteRecord(this.methodRoutes, method, record);
|
|
111
|
+
if (isExactPathPattern(record.matcher.pattern)) {
|
|
112
|
+
const exactRoutesForMethod = this.exactRoutes.get(method) ?? new Map();
|
|
113
|
+
appendRouteRecord(exactRoutesForMethod, record.matcher.pattern, record);
|
|
114
|
+
this.exactRoutes.set(method, exactRoutesForMethod);
|
|
115
|
+
}
|
|
116
|
+
}
|
|
117
|
+
}
|
|
100
118
|
on(methods, path, ...handlers) {
|
|
101
|
-
|
|
119
|
+
const matcher = compilePath(path);
|
|
120
|
+
const record = {
|
|
102
121
|
path,
|
|
103
122
|
methods: [...methods].map((method) => method.toUpperCase()),
|
|
104
|
-
matcher
|
|
123
|
+
matcher,
|
|
105
124
|
handlers,
|
|
106
|
-
}
|
|
125
|
+
};
|
|
126
|
+
this.registerRoute(record);
|
|
107
127
|
return this;
|
|
108
128
|
}
|
|
109
129
|
get(path, ...handlers) {
|
|
@@ -127,7 +147,7 @@ export class ServerApp {
|
|
|
127
147
|
});
|
|
128
148
|
});
|
|
129
149
|
child.routes.forEach((record) => {
|
|
130
|
-
this.
|
|
150
|
+
this.registerRoute({
|
|
131
151
|
path: joinPaths(prefix, record.path),
|
|
132
152
|
methods: [...record.methods],
|
|
133
153
|
matcher: compilePath(joinPaths(prefix, record.path)),
|
|
@@ -143,6 +163,36 @@ export class ServerApp {
|
|
|
143
163
|
this.notFoundHandler = handler;
|
|
144
164
|
return this;
|
|
145
165
|
}
|
|
166
|
+
findRoute(method, pathname) {
|
|
167
|
+
const normalizedPathname = normalizePathname(pathname);
|
|
168
|
+
const exactRouteCandidates = [
|
|
169
|
+
...(this.exactRoutes.get(method)?.get(normalizedPathname) ?? []),
|
|
170
|
+
...(this.exactRoutes.get("ALL")?.get(normalizedPathname) ?? []),
|
|
171
|
+
];
|
|
172
|
+
for (const record of exactRouteCandidates) {
|
|
173
|
+
return {
|
|
174
|
+
record,
|
|
175
|
+
params: {},
|
|
176
|
+
};
|
|
177
|
+
}
|
|
178
|
+
const routeCandidates = [
|
|
179
|
+
...(this.methodRoutes.get(method) ?? []),
|
|
180
|
+
...(this.methodRoutes.get("ALL") ?? []),
|
|
181
|
+
];
|
|
182
|
+
for (const record of routeCandidates) {
|
|
183
|
+
if (isExactPathPattern(record.matcher.pattern)) {
|
|
184
|
+
continue;
|
|
185
|
+
}
|
|
186
|
+
const match = record.matcher.test(normalizedPathname);
|
|
187
|
+
if (match) {
|
|
188
|
+
return {
|
|
189
|
+
record,
|
|
190
|
+
params: match.params,
|
|
191
|
+
};
|
|
192
|
+
}
|
|
193
|
+
}
|
|
194
|
+
return null;
|
|
195
|
+
}
|
|
146
196
|
async fetch(request, init) {
|
|
147
197
|
const normalizedRequest = request instanceof Request ? request : new Request(request, init);
|
|
148
198
|
const url = new URL(normalizedRequest.url);
|
|
@@ -151,13 +201,9 @@ export class ServerApp {
|
|
|
151
201
|
.filter((record) => record.matcher.test(url.pathname))
|
|
152
202
|
.concat(this.frameworkMiddlewares.filter((record) => record.matcher.test(url.pathname)))
|
|
153
203
|
.map((record) => record.handler);
|
|
154
|
-
const
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
}
|
|
158
|
-
return Boolean(record.matcher.test(url.pathname));
|
|
159
|
-
});
|
|
160
|
-
const params = route?.matcher.test(url.pathname)?.params ?? {};
|
|
204
|
+
const routeMatch = this.findRoute(method, url.pathname);
|
|
205
|
+
const route = routeMatch?.record;
|
|
206
|
+
const params = routeMatch?.params ?? {};
|
|
161
207
|
const ctx = new Context(normalizedRequest, params);
|
|
162
208
|
const notFound = async () => {
|
|
163
209
|
const response = await this.notFoundHandler(ctx, async () => new Response(null, { status: 404 }));
|
package/dist/app.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"app.js","sourceRoot":"","sources":["../src/app.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AACrC,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AACvC,OAAO,EAAE,WAAW,EAAE,MAAM,8BAA8B,CAAC;AAC3D,OAAO,
|
|
1
|
+
{"version":3,"file":"app.js","sourceRoot":"","sources":["../src/app.ts"],"names":[],"mappings":"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"}
|
package/dist/path.d.ts
CHANGED
|
@@ -5,6 +5,9 @@ export interface CompiledPath {
|
|
|
5
5
|
pattern: string;
|
|
6
6
|
test(pathname: string): PathMatchResult | null;
|
|
7
7
|
}
|
|
8
|
+
export declare function normalizePattern(pattern: string): string;
|
|
9
|
+
export declare function normalizePathname(pathname: string): string;
|
|
10
|
+
export declare function isExactPathPattern(pattern: string): boolean;
|
|
8
11
|
export declare function compilePath(pattern: string): CompiledPath;
|
|
9
12
|
export declare function joinPaths(prefix: string, pathName: string): string;
|
|
10
13
|
//# sourceMappingURL=path.d.ts.map
|
package/dist/path.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"path.d.ts","sourceRoot":"","sources":["../src/path.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,eAAe;IAC9B,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CAChC;AAED,MAAM,WAAW,YAAY;IAC3B,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,CAAC,QAAQ,EAAE,MAAM,GAAG,eAAe,GAAG,IAAI,CAAC;CAChD;
|
|
1
|
+
{"version":3,"file":"path.d.ts","sourceRoot":"","sources":["../src/path.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,eAAe;IAC9B,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CAChC;AAED,MAAM,WAAW,YAAY;IAC3B,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,CAAC,QAAQ,EAAE,MAAM,GAAG,eAAe,GAAG,IAAI,CAAC;CAChD;AAED,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,MAAM,UAU/C;AAED,wBAAgB,iBAAiB,CAAC,QAAQ,EAAE,MAAM,UAMjD;AAED,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,MAAM,WAIjD;AAED,wBAAgB,WAAW,CAAC,OAAO,EAAE,MAAM,GAAG,YAAY,CAsBzD;AAED,wBAAgB,SAAS,CAAC,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,UAazD"}
|
package/dist/path.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
function normalizePattern(pattern) {
|
|
1
|
+
export function normalizePattern(pattern) {
|
|
2
2
|
if (!pattern || pattern === "*") {
|
|
3
3
|
return "/*";
|
|
4
4
|
}
|
|
@@ -7,12 +7,16 @@ function normalizePattern(pattern) {
|
|
|
7
7
|
}
|
|
8
8
|
return pattern;
|
|
9
9
|
}
|
|
10
|
-
function normalizePathname(pathname) {
|
|
10
|
+
export function normalizePathname(pathname) {
|
|
11
11
|
if (!pathname || pathname === "/") {
|
|
12
12
|
return "/";
|
|
13
13
|
}
|
|
14
14
|
return pathname.endsWith("/") ? pathname.slice(0, -1) : pathname;
|
|
15
15
|
}
|
|
16
|
+
export function isExactPathPattern(pattern) {
|
|
17
|
+
const normalizedPattern = normalizePattern(pattern);
|
|
18
|
+
return !normalizedPattern.includes("*") && !normalizedPattern.includes(":");
|
|
19
|
+
}
|
|
16
20
|
export function compilePath(pattern) {
|
|
17
21
|
const normalizedPattern = normalizePattern(pattern);
|
|
18
22
|
const matcher = new URLPattern({ pathname: normalizedPattern });
|
package/dist/path.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"path.js","sourceRoot":"","sources":["../src/path.ts"],"names":[],"mappings":"AASA,
|
|
1
|
+
{"version":3,"file":"path.js","sourceRoot":"","sources":["../src/path.ts"],"names":[],"mappings":"AASA,MAAM,UAAU,gBAAgB,CAAC,OAAe;IAC9C,IAAI,CAAC,OAAO,IAAI,OAAO,KAAK,GAAG,EAAE,CAAC;QAChC,OAAO,IAAI,CAAC;IACd,CAAC;IAED,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;QAC7B,OAAO,IAAI,OAAO,EAAE,CAAC;IACvB,CAAC;IAED,OAAO,OAAO,CAAC;AACjB,CAAC;AAED,MAAM,UAAU,iBAAiB,CAAC,QAAgB;IAChD,IAAI,CAAC,QAAQ,IAAI,QAAQ,KAAK,GAAG,EAAE,CAAC;QAClC,OAAO,GAAG,CAAC;IACb,CAAC;IAED,OAAO,QAAQ,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC;AACnE,CAAC;AAED,MAAM,UAAU,kBAAkB,CAAC,OAAe;IAChD,MAAM,iBAAiB,GAAG,gBAAgB,CAAC,OAAO,CAAC,CAAC;IAEpD,OAAO,CAAC,iBAAiB,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,iBAAiB,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;AAC9E,CAAC;AAED,MAAM,UAAU,WAAW,CAAC,OAAe;IACzC,MAAM,iBAAiB,GAAG,gBAAgB,CAAC,OAAO,CAAC,CAAC;IACpD,MAAM,OAAO,GAAG,IAAI,UAAU,CAAC,EAAE,QAAQ,EAAE,iBAAiB,EAAE,CAAC,CAAC;IAEhE,OAAO;QACL,OAAO,EAAE,iBAAiB;QAC1B,IAAI,CAAC,QAAgB;YACnB,MAAM,kBAAkB,GAAG,iBAAiB,CAAC,QAAQ,CAAC,CAAC;YACvD,MAAM,KAAK,GAAG,OAAO,CAAC,IAAI,CAAC,EAAE,QAAQ,EAAE,kBAAkB,EAAE,CAAC,CAAC;YAC7D,IAAI,CAAC,KAAK,EAAE,CAAC;gBACX,OAAO,IAAI,CAAC;YACd,CAAC;YAED,MAAM,MAAM,GAAG,MAAM,CAAC,WAAW,CAC/B,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,EAAE,KAAK,CAAC,EAAE,EAAE;gBAC7D,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,OAAO,KAAK,KAAK,QAAQ,CAAC;YAC1D,CAAC,CAAC,CACH,CAAC;YAEF,OAAO,EAAE,MAAM,EAAE,CAAC;QACpB,CAAC;KACF,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,SAAS,CAAC,MAAc,EAAE,QAAgB;IACxD,IAAI,CAAC,MAAM,IAAI,MAAM,KAAK,GAAG,EAAE,CAAC;QAC9B,OAAO,QAAQ,IAAI,GAAG,CAAC;IACzB,CAAC;IAED,IAAI,CAAC,QAAQ,IAAI,QAAQ,KAAK,GAAG,EAAE,CAAC;QAClC,OAAO,MAAM,CAAC;IAChB,CAAC;IAED,MAAM,gBAAgB,GAAG,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC;IAC7E,MAAM,cAAc,GAAG,QAAQ,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,QAAQ,EAAE,CAAC;IAE5E,OAAO,GAAG,gBAAgB,GAAG,cAAc,EAAE,CAAC;AAChD,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "treesap",
|
|
3
|
-
"version": "0.2.
|
|
3
|
+
"version": "0.2.2",
|
|
4
4
|
"description": "Opinionated Vite-first Node SSR framework.",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "./dist/index.js",
|
|
@@ -22,6 +22,7 @@
|
|
|
22
22
|
"scripts": {
|
|
23
23
|
"clean": "rm -rf dist",
|
|
24
24
|
"build": "tsc -p tsconfig.build.json",
|
|
25
|
+
"prepare": "npm run build",
|
|
25
26
|
"test": "vitest run -c vitest.config.ts",
|
|
26
27
|
"prepublishOnly": "npm run build && npm test"
|
|
27
28
|
},
|