@spfn/core 0.1.0-alpha.7 → 0.1.0-alpha.74
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/README.md +168 -195
- package/dist/auto-loader-JFaZ9gON.d.ts +80 -0
- package/dist/cache/index.d.ts +211 -0
- package/dist/cache/index.js +992 -0
- package/dist/cache/index.js.map +1 -0
- package/dist/client/index.d.ts +92 -92
- package/dist/client/index.js +80 -85
- package/dist/client/index.js.map +1 -1
- package/dist/codegen/generators/index.d.ts +19 -0
- package/dist/codegen/generators/index.js +1500 -0
- package/dist/codegen/generators/index.js.map +1 -0
- package/dist/codegen/index.d.ts +76 -60
- package/dist/codegen/index.js +1486 -736
- package/dist/codegen/index.js.map +1 -1
- package/dist/database-errors-BNNmLTJE.d.ts +86 -0
- package/dist/db/index.d.ts +844 -44
- package/dist/db/index.js +1262 -1309
- package/dist/db/index.js.map +1 -1
- package/dist/env/index.d.ts +508 -0
- package/dist/env/index.js +1106 -0
- package/dist/env/index.js.map +1 -0
- package/dist/error-handler-wjLL3v-a.d.ts +44 -0
- package/dist/errors/index.d.ts +136 -0
- package/dist/errors/index.js +172 -0
- package/dist/errors/index.js.map +1 -0
- package/dist/index-DHiAqhKv.d.ts +101 -0
- package/dist/index.d.ts +3 -374
- package/dist/index.js +2394 -2176
- package/dist/index.js.map +1 -1
- package/dist/logger/index.d.ts +94 -0
- package/dist/logger/index.js +774 -0
- package/dist/logger/index.js.map +1 -0
- package/dist/middleware/index.d.ts +33 -0
- package/dist/middleware/index.js +890 -0
- package/dist/middleware/index.js.map +1 -0
- package/dist/route/index.d.ts +21 -53
- package/dist/route/index.js +1234 -219
- package/dist/route/index.js.map +1 -1
- package/dist/server/index.d.ts +18 -0
- package/dist/server/index.js +2390 -2058
- package/dist/server/index.js.map +1 -1
- package/dist/types-Dzggq1Yb.d.ts +170 -0
- package/package.json +59 -15
- package/dist/auto-loader-C44TcLmM.d.ts +0 -125
- package/dist/bind-pssq1NRT.d.ts +0 -34
- package/dist/postgres-errors-CY_Es8EJ.d.ts +0 -1703
- package/dist/scripts/index.d.ts +0 -24
- package/dist/scripts/index.js +0 -1201
- package/dist/scripts/index.js.map +0 -1
- package/dist/scripts/templates/api-index.template.txt +0 -10
- package/dist/scripts/templates/api-tag.template.txt +0 -11
- package/dist/scripts/templates/contract.template.txt +0 -87
- package/dist/scripts/templates/entity-type.template.txt +0 -31
- package/dist/scripts/templates/entity.template.txt +0 -19
- package/dist/scripts/templates/index.template.txt +0 -10
- package/dist/scripts/templates/repository.template.txt +0 -37
- package/dist/scripts/templates/routes-id.template.txt +0 -59
- package/dist/scripts/templates/routes-index.template.txt +0 -44
- package/dist/types-SlzTr8ZO.d.ts +0 -143
package/dist/types-SlzTr8ZO.d.ts
DELETED
|
@@ -1,143 +0,0 @@
|
|
|
1
|
-
import { Context } from 'hono';
|
|
2
|
-
import { ContentfulStatusCode } from 'hono/utils/http-status';
|
|
3
|
-
import { TSchema, Static } from '@sinclair/typebox';
|
|
4
|
-
|
|
5
|
-
/**
|
|
6
|
-
* Header record type compatible with Hono's c.json headers parameter
|
|
7
|
-
*/
|
|
8
|
-
type HeaderRecord = Record<string, string | string[]>;
|
|
9
|
-
/**
|
|
10
|
-
* File-based Routing System Type Definitions
|
|
11
|
-
*
|
|
12
|
-
* ## Type Flow
|
|
13
|
-
* ```
|
|
14
|
-
* RouteFile (scan)
|
|
15
|
-
* ↓
|
|
16
|
-
* RouteModule (dynamic import + contracts)
|
|
17
|
-
* ↓
|
|
18
|
-
* RouteDefinition (transformation + validation)
|
|
19
|
-
* ↓
|
|
20
|
-
* Hono App (registration)
|
|
21
|
-
* ```
|
|
22
|
-
*
|
|
23
|
-
* ## Core Types
|
|
24
|
-
* 1. **RouteContract**: TypeBox-based contract definition for type safety and validation
|
|
25
|
-
* 2. **RouteContext**: Extended Context for route handlers (params, query, data)
|
|
26
|
-
* 3. **RouteHandler**: Next.js App Router style handler function type
|
|
27
|
-
* 4. **RouteFile**: File system scan result (Scanner output)
|
|
28
|
-
* 5. **RouteModule**: Dynamic import result (Mapper input)
|
|
29
|
-
* 6. **RouteDefinition**: Transformed route definition (Mapper output, Registry storage)
|
|
30
|
-
* 7. **RouteMeta**: Route metadata (auth, tags, description, etc.)
|
|
31
|
-
* 8. **RoutePriority**: Priority enum (STATIC, DYNAMIC, CATCH_ALL)
|
|
32
|
-
* 9. **ScanOptions**: Scanner configuration options
|
|
33
|
-
*
|
|
34
|
-
* ## Applied Improvements
|
|
35
|
-
* ✅ **HTTP Method Types**: Added HttpMethod union type
|
|
36
|
-
* ✅ **Route Grouping**: Added RouteGroup, RouteStats types
|
|
37
|
-
* ✅ **Type Guards**: isRouteFile, isRouteDefinition, isHttpMethod, hasHttpMethodHandlers
|
|
38
|
-
* ✅ **Contract-based Types**: RouteContract, InferContract for end-to-end type safety
|
|
39
|
-
* ✅ **Generic RouteContext**: RouteContext<TContract> for typed params, query, body, response
|
|
40
|
-
*/
|
|
41
|
-
/**
|
|
42
|
-
* Route metadata for additional configuration
|
|
43
|
-
*/
|
|
44
|
-
type RouteMeta = {
|
|
45
|
-
/** Public route (skip authentication) - default: false */
|
|
46
|
-
public?: boolean;
|
|
47
|
-
/** Skip specific global middlewares by name */
|
|
48
|
-
skipMiddlewares?: string[];
|
|
49
|
-
/** OpenAPI tags for grouping */
|
|
50
|
-
tags?: string[];
|
|
51
|
-
/** Route description for documentation */
|
|
52
|
-
description?: string;
|
|
53
|
-
/** Deprecated flag */
|
|
54
|
-
deprecated?: boolean;
|
|
55
|
-
};
|
|
56
|
-
/**
|
|
57
|
-
* Route Contract: TypeBox-based type-safe route definition
|
|
58
|
-
*
|
|
59
|
-
* Defines the shape of request/response for a route endpoint
|
|
60
|
-
*
|
|
61
|
-
* Note: params and query are always Record<string, string> from URL,
|
|
62
|
-
* but can be validated and transformed via TypeBox schemas
|
|
63
|
-
*/
|
|
64
|
-
type RouteContract = {
|
|
65
|
-
/** HTTP method (GET, POST, PUT, etc.) */
|
|
66
|
-
method: HttpMethod;
|
|
67
|
-
/** Route path (e.g., /users/:id) */
|
|
68
|
-
path: string;
|
|
69
|
-
/** Path parameters schema (optional) - input is always Record<string, string> */
|
|
70
|
-
params?: TSchema;
|
|
71
|
-
/** Query parameters schema (optional) - input is always Record<string, string | string[]> */
|
|
72
|
-
query?: TSchema;
|
|
73
|
-
/** Request body schema (optional) */
|
|
74
|
-
body?: TSchema;
|
|
75
|
-
/** Response schema (required) */
|
|
76
|
-
response: TSchema;
|
|
77
|
-
/** Route metadata (optional) */
|
|
78
|
-
meta?: RouteMeta;
|
|
79
|
-
};
|
|
80
|
-
/**
|
|
81
|
-
* Infer types from RouteContract
|
|
82
|
-
*
|
|
83
|
-
* Extracts TypeScript types from TypeBox schemas
|
|
84
|
-
*/
|
|
85
|
-
type InferContract<TContract extends RouteContract> = {
|
|
86
|
-
params: TContract['params'] extends TSchema ? Static<TContract['params']> : Record<string, never>;
|
|
87
|
-
query: TContract['query'] extends TSchema ? Static<TContract['query']> : Record<string, never>;
|
|
88
|
-
body: TContract['body'] extends TSchema ? Static<TContract['body']> : Record<string, never>;
|
|
89
|
-
response: TContract['response'] extends TSchema ? Static<TContract['response']> : unknown;
|
|
90
|
-
};
|
|
91
|
-
/**
|
|
92
|
-
* RouteContext: Route Handler Dedicated Context
|
|
93
|
-
*
|
|
94
|
-
* Generic version with contract-based type inference
|
|
95
|
-
*
|
|
96
|
-
* Convenience methods provided:
|
|
97
|
-
* - params: Path parameters (typed via contract)
|
|
98
|
-
* - query: Query parameters (typed via contract)
|
|
99
|
-
* - data(): Request Body parsing helper (typed via contract)
|
|
100
|
-
* - json(): JSON response helper (typed via contract)
|
|
101
|
-
* - raw: Original Hono Context (advanced features: raw.req, raw.get(), raw.set(), etc.)
|
|
102
|
-
*/
|
|
103
|
-
type RouteContext<TContract extends RouteContract = any> = {
|
|
104
|
-
/**
|
|
105
|
-
* Path parameters (typed via contract)
|
|
106
|
-
*/
|
|
107
|
-
params: InferContract<TContract>['params'];
|
|
108
|
-
/**
|
|
109
|
-
* Query parameters (typed via contract)
|
|
110
|
-
*/
|
|
111
|
-
query: InferContract<TContract>['query'];
|
|
112
|
-
/**
|
|
113
|
-
* Request Body parsing helper (typed via contract)
|
|
114
|
-
*/
|
|
115
|
-
data(): Promise<InferContract<TContract>['body']>;
|
|
116
|
-
/**
|
|
117
|
-
* JSON response helper (typed via contract)
|
|
118
|
-
*/
|
|
119
|
-
json(data: InferContract<TContract>['response'], status?: ContentfulStatusCode, headers?: HeaderRecord): Response;
|
|
120
|
-
/**
|
|
121
|
-
* Original Hono Context (for advanced features when needed)
|
|
122
|
-
* - raw.req: Request object (headers, cookies, etc.)
|
|
123
|
-
* - raw.get(): Read context variables (middleware data)
|
|
124
|
-
* - raw.set(): Set context variables
|
|
125
|
-
*/
|
|
126
|
-
raw: Context;
|
|
127
|
-
};
|
|
128
|
-
/**
|
|
129
|
-
* HTTP method type (common REST API methods)
|
|
130
|
-
*/
|
|
131
|
-
type HttpMethod = 'GET' | 'POST' | 'PUT' | 'PATCH' | 'DELETE';
|
|
132
|
-
/**
|
|
133
|
-
* Next.js App Router Style Route Handler
|
|
134
|
-
*
|
|
135
|
-
* Function that receives RouteContext and returns Response
|
|
136
|
-
*/
|
|
137
|
-
type RouteHandler = (c: RouteContext) => Response | Promise<Response>;
|
|
138
|
-
/**
|
|
139
|
-
* HttpMethod type guard
|
|
140
|
-
*/
|
|
141
|
-
declare function isHttpMethod(value: unknown): value is HttpMethod;
|
|
142
|
-
|
|
143
|
-
export { type HeaderRecord as H, type InferContract as I, type RouteContract as R, type RouteHandler as a, type RouteMeta as b, type RouteContext as c, type HttpMethod as d, isHttpMethod as i };
|