@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.
Files changed (59) hide show
  1. package/README.md +168 -195
  2. package/dist/auto-loader-JFaZ9gON.d.ts +80 -0
  3. package/dist/cache/index.d.ts +211 -0
  4. package/dist/cache/index.js +992 -0
  5. package/dist/cache/index.js.map +1 -0
  6. package/dist/client/index.d.ts +92 -92
  7. package/dist/client/index.js +80 -85
  8. package/dist/client/index.js.map +1 -1
  9. package/dist/codegen/generators/index.d.ts +19 -0
  10. package/dist/codegen/generators/index.js +1500 -0
  11. package/dist/codegen/generators/index.js.map +1 -0
  12. package/dist/codegen/index.d.ts +76 -60
  13. package/dist/codegen/index.js +1486 -736
  14. package/dist/codegen/index.js.map +1 -1
  15. package/dist/database-errors-BNNmLTJE.d.ts +86 -0
  16. package/dist/db/index.d.ts +844 -44
  17. package/dist/db/index.js +1262 -1309
  18. package/dist/db/index.js.map +1 -1
  19. package/dist/env/index.d.ts +508 -0
  20. package/dist/env/index.js +1106 -0
  21. package/dist/env/index.js.map +1 -0
  22. package/dist/error-handler-wjLL3v-a.d.ts +44 -0
  23. package/dist/errors/index.d.ts +136 -0
  24. package/dist/errors/index.js +172 -0
  25. package/dist/errors/index.js.map +1 -0
  26. package/dist/index-DHiAqhKv.d.ts +101 -0
  27. package/dist/index.d.ts +3 -374
  28. package/dist/index.js +2394 -2176
  29. package/dist/index.js.map +1 -1
  30. package/dist/logger/index.d.ts +94 -0
  31. package/dist/logger/index.js +774 -0
  32. package/dist/logger/index.js.map +1 -0
  33. package/dist/middleware/index.d.ts +33 -0
  34. package/dist/middleware/index.js +890 -0
  35. package/dist/middleware/index.js.map +1 -0
  36. package/dist/route/index.d.ts +21 -53
  37. package/dist/route/index.js +1234 -219
  38. package/dist/route/index.js.map +1 -1
  39. package/dist/server/index.d.ts +18 -0
  40. package/dist/server/index.js +2390 -2058
  41. package/dist/server/index.js.map +1 -1
  42. package/dist/types-Dzggq1Yb.d.ts +170 -0
  43. package/package.json +59 -15
  44. package/dist/auto-loader-C44TcLmM.d.ts +0 -125
  45. package/dist/bind-pssq1NRT.d.ts +0 -34
  46. package/dist/postgres-errors-CY_Es8EJ.d.ts +0 -1703
  47. package/dist/scripts/index.d.ts +0 -24
  48. package/dist/scripts/index.js +0 -1201
  49. package/dist/scripts/index.js.map +0 -1
  50. package/dist/scripts/templates/api-index.template.txt +0 -10
  51. package/dist/scripts/templates/api-tag.template.txt +0 -11
  52. package/dist/scripts/templates/contract.template.txt +0 -87
  53. package/dist/scripts/templates/entity-type.template.txt +0 -31
  54. package/dist/scripts/templates/entity.template.txt +0 -19
  55. package/dist/scripts/templates/index.template.txt +0 -10
  56. package/dist/scripts/templates/repository.template.txt +0 -37
  57. package/dist/scripts/templates/routes-id.template.txt +0 -59
  58. package/dist/scripts/templates/routes-index.template.txt +0 -44
  59. package/dist/types-SlzTr8ZO.d.ts +0 -143
@@ -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 };