@typokit/server-native 0.1.4

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.
@@ -0,0 +1,35 @@
1
+ import type { SerializerMap, TypoKitResponse, ValidatorMap, ValidationFieldError } from "@typokit/types";
2
+ import type { ServerAdapter } from "@typokit/core";
3
+ /** Build a 400 validation error response matching ErrorResponse schema */
4
+ declare function validationErrorResponse(message: string, fields: ValidationFieldError[]): TypoKitResponse;
5
+ /**
6
+ * Run the request validation pipeline for params, query, and body.
7
+ * Returns a 400 TypoKitResponse on validation failure, or undefined if all pass.
8
+ */
9
+ declare function runValidators(routeHandler: {
10
+ validators?: {
11
+ params?: string;
12
+ query?: string;
13
+ body?: string;
14
+ };
15
+ }, validatorMap: ValidatorMap | null, params: Record<string, string>, query: Record<string, string | string[] | undefined>, body: unknown): TypoKitResponse | undefined;
16
+ /**
17
+ * Serialize the response body using a compiled fast-json-stringify schema
18
+ * if available, otherwise fall back to the default (JSON.stringify via writeResponse).
19
+ * Automatically sets Content-Type to application/json for JSON bodies.
20
+ */
21
+ declare function serializeResponse(response: TypoKitResponse, serializerRef: string | undefined, serializerMap: SerializerMap | null): TypoKitResponse;
22
+ /**
23
+ * Create the native server adapter — TypoKit's built-in HTTP server.
24
+ *
25
+ * ```ts
26
+ * import { nativeServer } from "@typokit/server-native";
27
+ * const adapter = nativeServer();
28
+ * adapter.registerRoutes(routeTable, handlerMap, middlewareChain, validatorMap);
29
+ * const handle = await adapter.listen(3000);
30
+ * ```
31
+ */
32
+ export declare function nativeServer(): ServerAdapter;
33
+ export { serializeResponse, runValidators, validationErrorResponse };
34
+ export { type ServerAdapter } from "@typokit/core";
35
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAOV,aAAa,EAGb,eAAe,EACf,YAAY,EACZ,oBAAoB,EACrB,MAAM,gBAAgB,CAAC;AACxB,OAAO,KAAK,EAAE,aAAa,EAAmB,MAAM,eAAe,CAAC;AA4EpE,0EAA0E;AAC1E,iBAAS,uBAAuB,CAC9B,OAAO,EAAE,MAAM,EACf,MAAM,EAAE,oBAAoB,EAAE,GAC7B,eAAe,CAajB;AAED;;;GAGG;AACH,iBAAS,aAAa,CACpB,YAAY,EAAE;IACZ,UAAU,CAAC,EAAE;QAAE,MAAM,CAAC,EAAE,MAAM,CAAC;QAAC,KAAK,CAAC,EAAE,MAAM,CAAC;QAAC,IAAI,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;CACjE,EACD,YAAY,EAAE,YAAY,GAAG,IAAI,EACjC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,EAC9B,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,EAAE,GAAG,SAAS,CAAC,EACpD,IAAI,EAAE,OAAO,GACZ,eAAe,GAAG,SAAS,CA+D7B;AAID;;;;GAIG;AACH,iBAAS,iBAAiB,CACxB,QAAQ,EAAE,eAAe,EACzB,aAAa,EAAE,MAAM,GAAG,SAAS,EACjC,aAAa,EAAE,aAAa,GAAG,IAAI,GAClC,eAAe,CAkCjB;AAYD;;;;;;;;;GASG;AACH,wBAAgB,YAAY,IAAI,aAAa,CA0L5C;AAGD,OAAO,EAAE,iBAAiB,EAAE,aAAa,EAAE,uBAAuB,EAAE,CAAC;AACrE,OAAO,EAAE,KAAK,aAAa,EAAE,MAAM,eAAe,CAAC"}
package/dist/index.js ADDED
@@ -0,0 +1,327 @@
1
+ // @typokit/server-native — Built-In Server Adapter
2
+ //
3
+ // Zero-dependency native HTTP server that uses the compiled radix tree
4
+ // for O(k) route lookup (k = number of path segments).
5
+ import { createRequestContext, executeMiddlewareChain } from "@typokit/core";
6
+ import { writeResponse as nodeWriteResponse, createServer, } from "@typokit/platform-node";
7
+ /** Normalize path: strip trailing slash (keep "/" as-is) */
8
+ function normalizePath(path) {
9
+ if (path.length > 1 && path.endsWith("/")) {
10
+ return path.slice(0, -1);
11
+ }
12
+ return path;
13
+ }
14
+ /**
15
+ * Traverse the compiled radix tree to find the route node matching the
16
+ * given path segments. Returns the matching node and extracted params,
17
+ * or undefined if no route matches.
18
+ */
19
+ function lookupRoute(root, segments) {
20
+ let current = root;
21
+ const params = {};
22
+ for (let i = 0; i < segments.length; i++) {
23
+ const seg = segments[i];
24
+ // 1. Try static child match first (O(1) hash lookup)
25
+ if (current.children?.[seg]) {
26
+ current = current.children[seg];
27
+ continue;
28
+ }
29
+ // 2. Try parameterized child (:id)
30
+ if (current.paramChild) {
31
+ const paramNode = current.paramChild;
32
+ params[paramNode.paramName] = decodeURIComponent(seg);
33
+ current = paramNode;
34
+ continue;
35
+ }
36
+ // 3. Try wildcard child (*path) — captures remaining segments
37
+ if (current.wildcardChild) {
38
+ const wildcardNode = current.wildcardChild;
39
+ params[wildcardNode.paramName] = segments
40
+ .slice(i)
41
+ .map(decodeURIComponent)
42
+ .join("/");
43
+ return { node: wildcardNode, params };
44
+ }
45
+ // No match
46
+ return undefined;
47
+ }
48
+ return { node: current, params };
49
+ }
50
+ /** Collect all HTTP methods registered at a given route node */
51
+ function collectMethods(node) {
52
+ if (!node.handlers)
53
+ return [];
54
+ return Object.keys(node.handlers);
55
+ }
56
+ // ─── Request Validation Pipeline ─────────────────────────────
57
+ /** Build a 400 validation error response matching ErrorResponse schema */
58
+ function validationErrorResponse(message, fields) {
59
+ const body = {
60
+ error: {
61
+ code: "VALIDATION_ERROR",
62
+ message,
63
+ details: { fields },
64
+ },
65
+ };
66
+ return {
67
+ status: 400,
68
+ headers: { "content-type": "application/json" },
69
+ body,
70
+ };
71
+ }
72
+ /**
73
+ * Run the request validation pipeline for params, query, and body.
74
+ * Returns a 400 TypoKitResponse on validation failure, or undefined if all pass.
75
+ */
76
+ function runValidators(routeHandler, validatorMap, params, query, body) {
77
+ if (!validatorMap || !routeHandler.validators) {
78
+ return undefined;
79
+ }
80
+ const allErrors = [];
81
+ // Validate params
82
+ if (routeHandler.validators.params) {
83
+ const validator = validatorMap[routeHandler.validators.params];
84
+ if (validator) {
85
+ const result = validator(params);
86
+ if (!result.success && result.errors) {
87
+ for (const e of result.errors) {
88
+ allErrors.push({
89
+ path: `params.${e.path}`,
90
+ expected: e.expected,
91
+ actual: e.actual,
92
+ });
93
+ }
94
+ }
95
+ }
96
+ }
97
+ // Validate query
98
+ if (routeHandler.validators.query) {
99
+ const validator = validatorMap[routeHandler.validators.query];
100
+ if (validator) {
101
+ const result = validator(query);
102
+ if (!result.success && result.errors) {
103
+ for (const e of result.errors) {
104
+ allErrors.push({
105
+ path: `query.${e.path}`,
106
+ expected: e.expected,
107
+ actual: e.actual,
108
+ });
109
+ }
110
+ }
111
+ }
112
+ }
113
+ // Validate body
114
+ if (routeHandler.validators.body) {
115
+ const validator = validatorMap[routeHandler.validators.body];
116
+ if (validator) {
117
+ const result = validator(body);
118
+ if (!result.success && result.errors) {
119
+ for (const e of result.errors) {
120
+ allErrors.push({
121
+ path: `body.${e.path}`,
122
+ expected: e.expected,
123
+ actual: e.actual,
124
+ });
125
+ }
126
+ }
127
+ }
128
+ }
129
+ if (allErrors.length > 0) {
130
+ return validationErrorResponse("Request validation failed", allErrors);
131
+ }
132
+ return undefined;
133
+ }
134
+ // ─── Response Serialization Pipeline ──────────────────────────
135
+ /**
136
+ * Serialize the response body using a compiled fast-json-stringify schema
137
+ * if available, otherwise fall back to the default (JSON.stringify via writeResponse).
138
+ * Automatically sets Content-Type to application/json for JSON bodies.
139
+ */
140
+ function serializeResponse(response, serializerRef, serializerMap) {
141
+ // Nothing to serialize for null/undefined/string/Buffer bodies
142
+ if (response.body === null ||
143
+ response.body === undefined ||
144
+ typeof response.body === "string") {
145
+ return response;
146
+ }
147
+ // Ensure content-type is set for JSON bodies
148
+ const headers = { ...response.headers };
149
+ if (!headers["content-type"]) {
150
+ headers["content-type"] = "application/json";
151
+ }
152
+ // Try compiled serializer first
153
+ if (serializerRef && serializerMap) {
154
+ const serializer = serializerMap[serializerRef];
155
+ if (serializer) {
156
+ return {
157
+ ...response,
158
+ headers,
159
+ body: serializer(response.body),
160
+ };
161
+ }
162
+ }
163
+ // Fall back to JSON.stringify
164
+ return {
165
+ ...response,
166
+ headers,
167
+ body: JSON.stringify(response.body),
168
+ };
169
+ }
170
+ /**
171
+ * Create the native server adapter — TypoKit's built-in HTTP server.
172
+ *
173
+ * ```ts
174
+ * import { nativeServer } from "@typokit/server-native";
175
+ * const adapter = nativeServer();
176
+ * adapter.registerRoutes(routeTable, handlerMap, middlewareChain, validatorMap);
177
+ * const handle = await adapter.listen(3000);
178
+ * ```
179
+ */
180
+ export function nativeServer() {
181
+ const state = {
182
+ routeTable: null,
183
+ handlerMap: null,
184
+ middlewareChain: null,
185
+ validatorMap: null,
186
+ serializerMap: null,
187
+ };
188
+ let nativeServerInstance = null;
189
+ /** Handle a single incoming request */
190
+ async function handleRequest(req) {
191
+ if (!state.routeTable || !state.handlerMap) {
192
+ return {
193
+ status: 500,
194
+ headers: { "content-type": "application/json" },
195
+ body: { error: "Server not configured" },
196
+ };
197
+ }
198
+ // Normalize trailing slashes
199
+ const path = normalizePath(req.path);
200
+ const segments = path === "/" ? [] : path.slice(1).split("/");
201
+ const result = lookupRoute(state.routeTable, segments);
202
+ // 404 — no route matches
203
+ if (!result) {
204
+ return {
205
+ status: 404,
206
+ headers: { "content-type": "application/json" },
207
+ body: {
208
+ error: "Not Found",
209
+ message: `No route matches ${req.method} ${req.path}`,
210
+ },
211
+ };
212
+ }
213
+ const { node, params } = result;
214
+ const method = req.method;
215
+ // 405 — route exists but method not allowed
216
+ if (!node.handlers?.[method]) {
217
+ const allowed = collectMethods(node);
218
+ if (allowed.length === 0) {
219
+ return {
220
+ status: 404,
221
+ headers: { "content-type": "application/json" },
222
+ body: {
223
+ error: "Not Found",
224
+ message: `No route matches ${req.method} ${req.path}`,
225
+ },
226
+ };
227
+ }
228
+ return {
229
+ status: 405,
230
+ headers: {
231
+ "content-type": "application/json",
232
+ allow: allowed.join(", "),
233
+ },
234
+ body: {
235
+ error: "Method Not Allowed",
236
+ message: `${method} not allowed. Use: ${allowed.join(", ")}`,
237
+ },
238
+ };
239
+ }
240
+ const routeHandler = node.handlers[method];
241
+ // ── Request Validation Pipeline ──
242
+ const validationError = runValidators(routeHandler, state.validatorMap, params, req.query, req.body);
243
+ if (validationError) {
244
+ return validationError;
245
+ }
246
+ const handlerFn = state.handlerMap[routeHandler.ref];
247
+ if (!handlerFn) {
248
+ return {
249
+ status: 500,
250
+ headers: { "content-type": "application/json" },
251
+ body: {
252
+ error: "Internal Server Error",
253
+ message: `Handler not found: ${routeHandler.ref}`,
254
+ },
255
+ };
256
+ }
257
+ // Inject extracted params into the request
258
+ const enrichedReq = { ...req, params, path };
259
+ // Create request context
260
+ let ctx = createRequestContext();
261
+ // Execute middleware chain if present
262
+ if (state.middlewareChain && state.middlewareChain.entries.length > 0) {
263
+ const entries = state.middlewareChain.entries.map((e) => ({
264
+ name: e.name,
265
+ middleware: {
266
+ handler: async (input) => {
267
+ const mwReq = {
268
+ method: enrichedReq.method,
269
+ path: enrichedReq.path,
270
+ headers: input.headers,
271
+ body: input.body,
272
+ query: input.query,
273
+ params: input.params,
274
+ };
275
+ const response = await e.handler(mwReq, input.ctx, async () => {
276
+ return { status: 200, headers: {}, body: null };
277
+ });
278
+ return response;
279
+ },
280
+ },
281
+ }));
282
+ ctx = await executeMiddlewareChain(enrichedReq, ctx, entries);
283
+ }
284
+ // Call the handler
285
+ const response = await handlerFn(enrichedReq, ctx);
286
+ // ── Response Serialization Pipeline ──
287
+ return serializeResponse(response, routeHandler.serializer, state.serializerMap);
288
+ }
289
+ const adapter = {
290
+ name: "native",
291
+ registerRoutes(routeTable, handlerMap, middlewareChain, validatorMap, serializerMap) {
292
+ state.routeTable = routeTable;
293
+ state.handlerMap = handlerMap;
294
+ state.middlewareChain = middlewareChain;
295
+ state.validatorMap = validatorMap ?? null;
296
+ state.serializerMap = serializerMap ?? null;
297
+ },
298
+ async listen(port) {
299
+ nativeServerInstance = createServer(handleRequest);
300
+ return nativeServerInstance.listen(port);
301
+ },
302
+ normalizeRequest(raw) {
303
+ // Synchronous normalization from an already-parsed request object.
304
+ // For internal use; the actual async normalization from IncomingMessage
305
+ // happens inside the server's request handler via platform-node.
306
+ const r = raw;
307
+ return {
308
+ method: r.method,
309
+ path: r.path,
310
+ headers: r.headers ?? {},
311
+ body: r.body,
312
+ query: r.query ?? {},
313
+ params: r.params ?? {},
314
+ };
315
+ },
316
+ writeResponse(raw, response) {
317
+ nodeWriteResponse(raw, response);
318
+ },
319
+ getNativeServer() {
320
+ return nativeServerInstance?.server ?? null;
321
+ },
322
+ };
323
+ return adapter;
324
+ }
325
+ // Re-export for convenience
326
+ export { serializeResponse, runValidators, validationErrorResponse };
327
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
package/package.json ADDED
@@ -0,0 +1,33 @@
1
+ {
2
+ "name": "@typokit/server-native",
3
+ "exports": {
4
+ ".": {
5
+ "import": "./dist/index.js",
6
+ "types": "./dist/index.d.ts"
7
+ }
8
+ },
9
+ "version": "0.1.4",
10
+ "type": "module",
11
+ "files": [
12
+ "dist",
13
+ "src"
14
+ ],
15
+ "main": "./dist/index.js",
16
+ "types": "./dist/index.d.ts",
17
+ "dependencies": {
18
+ "@typokit/types": "0.1.4",
19
+ "@typokit/platform-node": "0.1.4",
20
+ "@typokit/core": "0.1.4"
21
+ },
22
+ "devDependencies": {
23
+ "@types/node": "^22.0.0"
24
+ },
25
+ "repository": {
26
+ "type": "git",
27
+ "url": "https://github.com/KyleBastien/typokit",
28
+ "directory": "packages/server-native"
29
+ },
30
+ "scripts": {
31
+ "test": "rstest run --passWithNoTests"
32
+ }
33
+ }