create-fluxstack 1.10.1 → 1.12.1

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 (257) hide show
  1. package/.dockerignore +1 -2
  2. package/Dockerfile +8 -8
  3. package/LLMD/INDEX.md +64 -0
  4. package/LLMD/MAINTENANCE.md +197 -0
  5. package/LLMD/MIGRATION.md +156 -0
  6. package/LLMD/config/.gitkeep +1 -0
  7. package/LLMD/config/declarative-system.md +268 -0
  8. package/LLMD/config/environment-vars.md +327 -0
  9. package/LLMD/config/runtime-reload.md +401 -0
  10. package/LLMD/core/.gitkeep +1 -0
  11. package/LLMD/core/build-system.md +599 -0
  12. package/LLMD/core/framework-lifecycle.md +229 -0
  13. package/LLMD/core/plugin-system.md +451 -0
  14. package/LLMD/patterns/.gitkeep +1 -0
  15. package/LLMD/patterns/anti-patterns.md +297 -0
  16. package/LLMD/patterns/project-structure.md +264 -0
  17. package/LLMD/patterns/type-safety.md +440 -0
  18. package/LLMD/reference/.gitkeep +1 -0
  19. package/LLMD/reference/cli-commands.md +250 -0
  20. package/LLMD/reference/plugin-hooks.md +357 -0
  21. package/LLMD/reference/routing.md +39 -0
  22. package/LLMD/reference/troubleshooting.md +364 -0
  23. package/LLMD/resources/.gitkeep +1 -0
  24. package/LLMD/resources/controllers.md +465 -0
  25. package/LLMD/resources/live-components.md +703 -0
  26. package/LLMD/resources/live-rooms.md +482 -0
  27. package/LLMD/resources/live-upload.md +130 -0
  28. package/LLMD/resources/plugins-external.md +617 -0
  29. package/LLMD/resources/routes-eden.md +254 -0
  30. package/README.md +37 -17
  31. package/app/client/index.html +0 -1
  32. package/app/client/src/App.tsx +107 -150
  33. package/app/client/src/components/AppLayout.tsx +68 -0
  34. package/app/client/src/components/BackButton.tsx +13 -0
  35. package/app/client/src/components/DemoPage.tsx +20 -0
  36. package/app/client/src/components/LiveUploadWidget.tsx +204 -0
  37. package/app/client/src/lib/eden-api.ts +85 -60
  38. package/app/client/src/live/ChatDemo.tsx +107 -0
  39. package/app/client/src/live/CounterDemo.tsx +206 -0
  40. package/app/client/src/live/FormDemo.tsx +119 -0
  41. package/app/client/src/live/RoomChatDemo.tsx +161 -0
  42. package/app/client/src/live/UploadDemo.tsx +21 -0
  43. package/app/client/src/main.tsx +4 -1
  44. package/app/client/src/pages/ApiTestPage.tsx +108 -0
  45. package/app/client/src/pages/HomePage.tsx +76 -0
  46. package/app/server/app.ts +1 -4
  47. package/app/server/controllers/users.controller.ts +36 -44
  48. package/app/server/index.ts +25 -35
  49. package/app/server/live/LiveChat.ts +77 -0
  50. package/app/server/live/LiveCounter.ts +67 -0
  51. package/app/server/live/LiveForm.ts +63 -0
  52. package/app/server/live/LiveLocalCounter.ts +32 -0
  53. package/app/server/live/LiveRoomChat.ts +127 -0
  54. package/app/server/live/LiveUpload.ts +81 -0
  55. package/app/server/routes/index.ts +3 -1
  56. package/app/server/routes/room.routes.ts +117 -0
  57. package/app/server/routes/users.routes.ts +35 -27
  58. package/app/shared/types/index.ts +14 -2
  59. package/config/app.config.ts +2 -62
  60. package/config/client.config.ts +2 -95
  61. package/config/database.config.ts +2 -99
  62. package/config/fluxstack.config.ts +25 -45
  63. package/config/index.ts +57 -38
  64. package/config/monitoring.config.ts +2 -114
  65. package/config/plugins.config.ts +2 -80
  66. package/config/server.config.ts +2 -68
  67. package/config/services.config.ts +2 -130
  68. package/config/system/app.config.ts +29 -0
  69. package/config/system/build.config.ts +49 -0
  70. package/config/system/client.config.ts +68 -0
  71. package/config/system/database.config.ts +17 -0
  72. package/config/system/fluxstack.config.ts +114 -0
  73. package/config/{logger.config.ts → system/logger.config.ts} +3 -1
  74. package/config/system/monitoring.config.ts +114 -0
  75. package/config/system/plugins.config.ts +84 -0
  76. package/config/{runtime.config.ts → system/runtime.config.ts} +1 -1
  77. package/config/system/server.config.ts +68 -0
  78. package/config/system/services.config.ts +46 -0
  79. package/config/{system.config.ts → system/system.config.ts} +1 -1
  80. package/core/build/flux-plugins-generator.ts +325 -325
  81. package/core/build/index.ts +39 -27
  82. package/core/build/live-components-generator.ts +3 -3
  83. package/core/build/optimizer.ts +235 -235
  84. package/core/cli/command-registry.ts +6 -4
  85. package/core/cli/commands/build.ts +79 -0
  86. package/core/cli/commands/create.ts +54 -0
  87. package/core/cli/commands/dev.ts +101 -0
  88. package/core/cli/commands/help.ts +34 -0
  89. package/core/cli/commands/index.ts +34 -0
  90. package/core/cli/commands/make-plugin.ts +90 -0
  91. package/core/cli/commands/plugin-add.ts +197 -0
  92. package/core/cli/commands/plugin-deps.ts +2 -2
  93. package/core/cli/commands/plugin-list.ts +208 -0
  94. package/core/cli/commands/plugin-remove.ts +170 -0
  95. package/core/cli/generators/component.ts +769 -769
  96. package/core/cli/generators/controller.ts +1 -1
  97. package/core/cli/generators/index.ts +146 -146
  98. package/core/cli/generators/interactive.ts +227 -227
  99. package/core/cli/generators/plugin.ts +2 -2
  100. package/core/cli/generators/prompts.ts +82 -82
  101. package/core/cli/generators/route.ts +6 -6
  102. package/core/cli/generators/service.ts +2 -2
  103. package/core/cli/generators/template-engine.ts +4 -3
  104. package/core/cli/generators/types.ts +2 -2
  105. package/core/cli/generators/utils.ts +191 -191
  106. package/core/cli/index.ts +115 -686
  107. package/core/cli/plugin-discovery.ts +2 -2
  108. package/core/client/LiveComponentsProvider.tsx +60 -8
  109. package/core/client/api/eden.ts +183 -0
  110. package/core/client/api/index.ts +11 -0
  111. package/core/client/components/Live.tsx +104 -0
  112. package/core/client/fluxstack.ts +1 -9
  113. package/core/client/hooks/AdaptiveChunkSizer.ts +215 -215
  114. package/core/client/hooks/state-validator.ts +1 -1
  115. package/core/client/hooks/useAuth.ts +48 -48
  116. package/core/client/hooks/useChunkedUpload.ts +85 -35
  117. package/core/client/hooks/useLiveChunkedUpload.ts +87 -0
  118. package/core/client/hooks/useLiveComponent.ts +800 -0
  119. package/core/client/hooks/useLiveUpload.ts +71 -0
  120. package/core/client/hooks/useRoom.ts +409 -0
  121. package/core/client/hooks/useRoomProxy.ts +382 -0
  122. package/core/client/index.ts +17 -68
  123. package/core/client/standalone-entry.ts +8 -0
  124. package/core/client/standalone.ts +74 -53
  125. package/core/client/state/createStore.ts +192 -192
  126. package/core/client/state/index.ts +14 -14
  127. package/core/config/index.ts +70 -291
  128. package/core/config/schema.ts +42 -723
  129. package/core/framework/client.ts +131 -131
  130. package/core/framework/index.ts +7 -7
  131. package/core/framework/server.ts +47 -40
  132. package/core/framework/types.ts +2 -2
  133. package/core/index.ts +23 -4
  134. package/core/live/ComponentRegistry.ts +3 -3
  135. package/core/live/types.ts +77 -0
  136. package/core/plugins/built-in/index.ts +134 -134
  137. package/core/plugins/built-in/live-components/commands/create-live-component.ts +242 -1066
  138. package/core/plugins/built-in/live-components/index.ts +1 -1
  139. package/core/plugins/built-in/monitoring/index.ts +111 -47
  140. package/core/plugins/built-in/static/index.ts +1 -1
  141. package/core/plugins/built-in/swagger/index.ts +68 -265
  142. package/core/plugins/built-in/vite/index.ts +85 -185
  143. package/core/plugins/built-in/vite/vite-dev.ts +10 -16
  144. package/core/plugins/config.ts +9 -7
  145. package/core/plugins/dependency-manager.ts +31 -1
  146. package/core/plugins/discovery.ts +19 -7
  147. package/core/plugins/executor.ts +2 -2
  148. package/core/plugins/index.ts +203 -203
  149. package/core/plugins/manager.ts +27 -39
  150. package/core/plugins/module-resolver.ts +19 -8
  151. package/core/plugins/registry.ts +255 -19
  152. package/core/plugins/types.ts +20 -53
  153. package/core/server/framework.ts +66 -43
  154. package/core/server/index.ts +15 -15
  155. package/core/server/live/ComponentRegistry.ts +78 -71
  156. package/core/server/live/FileUploadManager.ts +23 -10
  157. package/core/server/live/LiveComponentPerformanceMonitor.ts +1 -1
  158. package/core/server/live/LiveRoomManager.ts +261 -0
  159. package/core/server/live/RoomEventBus.ts +234 -0
  160. package/core/server/live/RoomStateManager.ts +172 -0
  161. package/core/server/live/StateSignature.ts +643 -643
  162. package/core/server/live/WebSocketConnectionManager.ts +30 -19
  163. package/core/server/live/auto-generated-components.ts +21 -9
  164. package/core/server/live/index.ts +14 -0
  165. package/core/server/live/websocket-plugin.ts +214 -67
  166. package/core/server/middleware/elysia-helpers.ts +7 -2
  167. package/core/server/middleware/errorHandling.ts +1 -1
  168. package/core/server/middleware/index.ts +31 -31
  169. package/core/server/plugins/database.ts +180 -180
  170. package/core/server/plugins/static-files-plugin.ts +69 -69
  171. package/core/server/plugins/swagger.ts +1 -1
  172. package/core/server/rooms/RoomBroadcaster.ts +357 -0
  173. package/core/server/rooms/RoomSystem.ts +463 -0
  174. package/core/server/rooms/index.ts +13 -0
  175. package/core/server/services/BaseService.ts +1 -1
  176. package/core/server/services/ServiceContainer.ts +1 -1
  177. package/core/server/services/index.ts +8 -8
  178. package/core/templates/create-project.ts +12 -12
  179. package/core/testing/index.ts +9 -9
  180. package/core/testing/setup.ts +73 -73
  181. package/core/types/api.ts +168 -168
  182. package/core/types/build.ts +219 -219
  183. package/core/types/config.ts +56 -26
  184. package/core/types/index.ts +4 -4
  185. package/core/types/plugin.ts +107 -107
  186. package/core/types/types.ts +353 -14
  187. package/core/utils/build-logger.ts +324 -324
  188. package/core/utils/config-schema.ts +480 -480
  189. package/core/utils/env.ts +2 -8
  190. package/core/utils/errors/codes.ts +114 -114
  191. package/core/utils/errors/handlers.ts +36 -1
  192. package/core/utils/errors/index.ts +49 -5
  193. package/core/utils/errors/middleware.ts +113 -113
  194. package/core/utils/helpers.ts +6 -16
  195. package/core/utils/index.ts +17 -17
  196. package/core/utils/logger/colors.ts +114 -114
  197. package/core/utils/logger/config.ts +13 -9
  198. package/core/utils/logger/formatter.ts +82 -82
  199. package/core/utils/logger/group-logger.ts +101 -101
  200. package/core/utils/logger/index.ts +6 -1
  201. package/core/utils/logger/stack-trace.ts +3 -1
  202. package/core/utils/logger/startup-banner.ts +82 -82
  203. package/core/utils/logger/winston-logger.ts +152 -152
  204. package/core/utils/monitoring/index.ts +211 -211
  205. package/core/utils/sync-version.ts +66 -66
  206. package/core/utils/version.ts +1 -1
  207. package/create-fluxstack.ts +8 -7
  208. package/package.json +12 -13
  209. package/plugins/crypto-auth/cli/make-protected-route.command.ts +1 -1
  210. package/plugins/crypto-auth/client/CryptoAuthClient.ts +302 -302
  211. package/plugins/crypto-auth/client/components/index.ts +11 -11
  212. package/plugins/crypto-auth/client/index.ts +11 -11
  213. package/plugins/crypto-auth/config/index.ts +1 -1
  214. package/plugins/crypto-auth/index.ts +4 -4
  215. package/plugins/crypto-auth/package.json +65 -65
  216. package/plugins/crypto-auth/server/AuthMiddleware.ts +1 -1
  217. package/plugins/crypto-auth/server/CryptoAuthService.ts +185 -185
  218. package/plugins/crypto-auth/server/index.ts +21 -21
  219. package/plugins/crypto-auth/server/middlewares/cryptoAuthAdmin.ts +3 -3
  220. package/plugins/crypto-auth/server/middlewares/cryptoAuthOptional.ts +1 -1
  221. package/plugins/crypto-auth/server/middlewares/cryptoAuthPermissions.ts +2 -2
  222. package/plugins/crypto-auth/server/middlewares/cryptoAuthRequired.ts +2 -2
  223. package/plugins/crypto-auth/server/middlewares/helpers.ts +1 -1
  224. package/plugins/crypto-auth/server/middlewares/index.ts +22 -22
  225. package/tsconfig.api-strict.json +16 -0
  226. package/tsconfig.json +48 -52
  227. package/{app/client/tsconfig.node.json → tsconfig.node.json} +25 -25
  228. package/types/global.d.ts +29 -29
  229. package/types/vitest.d.ts +8 -8
  230. package/vite.config.ts +38 -62
  231. package/vitest.config.live.ts +10 -9
  232. package/vitest.config.ts +29 -17
  233. package/app/client/README.md +0 -69
  234. package/app/client/SIMPLIFICATION.md +0 -140
  235. package/app/client/frontend-only.ts +0 -12
  236. package/app/client/src/live/FileUploadExample.tsx +0 -359
  237. package/app/client/src/live/MinimalLiveClock.tsx +0 -47
  238. package/app/client/src/live/QuickUploadTest.tsx +0 -193
  239. package/app/client/tsconfig.app.json +0 -45
  240. package/app/client/tsconfig.json +0 -7
  241. package/app/client/zustand-setup.md +0 -65
  242. package/app/server/backend-only.ts +0 -18
  243. package/app/server/live/LiveClockComponent.ts +0 -215
  244. package/app/server/live/LiveFileUploadComponent.ts +0 -77
  245. package/app/server/routes/env-test.ts +0 -110
  246. package/core/client/hooks/index.ts +0 -7
  247. package/core/client/hooks/useHybridLiveComponent.ts +0 -685
  248. package/core/client/hooks/useTypedLiveComponent.ts +0 -133
  249. package/core/client/hooks/useWebSocket.ts +0 -361
  250. package/core/config/env.ts +0 -546
  251. package/core/config/loader.ts +0 -522
  252. package/core/config/runtime-config.ts +0 -327
  253. package/core/config/validator.ts +0 -540
  254. package/core/server/backend-entry.ts +0 -51
  255. package/core/server/standalone.ts +0 -106
  256. package/core/utils/regenerate-files.ts +0 -69
  257. package/fluxstack.config.ts +0 -354
@@ -1,74 +1,74 @@
1
- /**
2
- * FluxStack Testing Setup
3
- * Core testing utilities and configuration
4
- */
5
-
6
- import { beforeEach, vi } from 'vitest'
7
-
8
- /**
9
- * Setup global test environment
10
- */
11
- export function setupFluxStackTests() {
12
- // Mock fetch globally
13
- global.fetch = vi.fn() as any
14
-
15
- // Mock localStorage
16
- const localStorageMock = {
17
- getItem: vi.fn(),
18
- setItem: vi.fn(),
19
- removeItem: vi.fn(),
20
- clear: vi.fn(),
21
- length: 0,
22
- key: vi.fn()
23
- }
24
-
25
- Object.defineProperty(window, 'localStorage', {
26
- value: localStorageMock
27
- })
28
-
29
- // Mock sessionStorage
30
- Object.defineProperty(window, 'sessionStorage', {
31
- value: localStorageMock
32
- })
33
-
34
- // Reset all mocks before each test
35
- beforeEach(() => {
36
- vi.clearAllMocks()
37
- })
38
- }
39
-
40
- /**
41
- * Create mock logger for testing
42
- */
43
- export function createMockLogger() {
44
- return {
45
- debug: vi.fn(),
46
- info: vi.fn(),
47
- warn: vi.fn(),
48
- error: vi.fn(),
49
- child: vi.fn().mockReturnValue({
50
- debug: vi.fn(),
51
- info: vi.fn(),
52
- warn: vi.fn(),
53
- error: vi.fn(),
54
- child: vi.fn()
55
- })
56
- }
57
- }
58
-
59
- /**
60
- * Create mock service context for testing
61
- */
62
- export function createMockServiceContext(overrides: any = {}) {
63
- return {
64
- config: {},
65
- logger: createMockLogger(),
66
- services: {
67
- get: vi.fn(),
68
- register: vi.fn(),
69
- has: vi.fn(),
70
- remove: vi.fn()
71
- },
72
- ...overrides
73
- }
1
+ /**
2
+ * FluxStack Testing Setup
3
+ * Core testing utilities and configuration
4
+ */
5
+
6
+ import { beforeEach, vi } from 'vitest'
7
+
8
+ /**
9
+ * Setup global test environment
10
+ */
11
+ export function setupFluxStackTests() {
12
+ // Mock fetch globally
13
+ global.fetch = vi.fn() as any
14
+
15
+ // Mock localStorage
16
+ const localStorageMock = {
17
+ getItem: vi.fn(),
18
+ setItem: vi.fn(),
19
+ removeItem: vi.fn(),
20
+ clear: vi.fn(),
21
+ length: 0,
22
+ key: vi.fn()
23
+ }
24
+
25
+ Object.defineProperty(window, 'localStorage', {
26
+ value: localStorageMock
27
+ })
28
+
29
+ // Mock sessionStorage
30
+ Object.defineProperty(window, 'sessionStorage', {
31
+ value: localStorageMock
32
+ })
33
+
34
+ // Reset all mocks before each test
35
+ beforeEach(() => {
36
+ vi.clearAllMocks()
37
+ })
38
+ }
39
+
40
+ /**
41
+ * Create mock logger for testing
42
+ */
43
+ export function createMockLogger() {
44
+ return {
45
+ debug: vi.fn(),
46
+ info: vi.fn(),
47
+ warn: vi.fn(),
48
+ error: vi.fn(),
49
+ child: vi.fn().mockReturnValue({
50
+ debug: vi.fn(),
51
+ info: vi.fn(),
52
+ warn: vi.fn(),
53
+ error: vi.fn(),
54
+ child: vi.fn()
55
+ })
56
+ }
57
+ }
58
+
59
+ /**
60
+ * Create mock service context for testing
61
+ */
62
+ export function createMockServiceContext(overrides: any = {}) {
63
+ return {
64
+ config: {},
65
+ logger: createMockLogger(),
66
+ services: {
67
+ get: vi.fn(),
68
+ register: vi.fn(),
69
+ has: vi.fn(),
70
+ remove: vi.fn()
71
+ },
72
+ ...overrides
73
+ }
74
74
  }
package/core/types/api.ts CHANGED
@@ -1,169 +1,169 @@
1
- /**
2
- * API and HTTP-related types
3
- * Type definitions for API endpoints, requests, responses, and HTTP utilities
4
- */
5
-
6
- export type HttpMethod = 'GET' | 'POST' | 'PUT' | 'DELETE' | 'PATCH' | 'OPTIONS' | 'HEAD'
7
-
8
- export interface ApiEndpoint {
9
- method: HttpMethod
10
- path: string
11
- handler: Function
12
- schema?: ApiSchema
13
- middleware?: Function[]
14
- description?: string
15
- tags?: string[]
16
- deprecated?: boolean
17
- version?: string
18
- }
19
-
20
- export interface ApiSchema {
21
- params?: any
22
- query?: any
23
- body?: any
24
- response?: any
25
- headers?: any
26
- }
27
-
28
- export interface ApiResponse<T = any> {
29
- data?: T
30
- error?: ApiError
31
- meta?: ApiMeta
32
- }
33
-
34
- export interface ApiError {
35
- code: string
36
- message: string
37
- details?: any
38
- statusCode: number
39
- timestamp: string
40
- }
41
-
42
- export interface ApiMeta {
43
- pagination?: PaginationMeta
44
- timing?: TimingMeta
45
- version?: string
46
- }
47
-
48
- export interface PaginationMeta {
49
- page: number
50
- limit: number
51
- total: number
52
- totalPages: number
53
- hasNext: boolean
54
- hasPrev: boolean
55
- }
56
-
57
- export interface TimingMeta {
58
- requestId: string
59
- duration: number
60
- timestamp: string
61
- }
62
-
63
- export interface RequestContext {
64
- id: string
65
- method: HttpMethod
66
- path: string
67
- url: string
68
- headers: Record<string, string>
69
- query: Record<string, any>
70
- params: Record<string, any>
71
- body?: any
72
- user?: any
73
- startTime: number
74
- }
75
-
76
- export interface ResponseContext extends RequestContext {
77
- statusCode: number
78
- headers: Record<string, string>
79
- body?: any
80
- duration: number
81
- size: number
82
- }
83
-
84
- export interface MiddlewareContext {
85
- request: RequestContext
86
- response?: ResponseContext
87
- next: () => Promise<void>
88
- state: Record<string, any>
89
- }
90
-
91
- export interface RouteHandler {
92
- (context: RequestContext): Promise<any> | any
93
- }
94
-
95
- export interface MiddlewareHandler {
96
- (context: MiddlewareContext): Promise<void> | void
97
- }
98
-
99
- export interface ApiDocumentation {
100
- title: string
101
- version: string
102
- description?: string
103
- servers: ApiServer[]
104
- paths: Record<string, ApiPath>
105
- components?: ApiComponents
106
- }
107
-
108
- export interface ApiServer {
109
- url: string
110
- description?: string
111
- variables?: Record<string, ApiServerVariable>
112
- }
113
-
114
- export interface ApiServerVariable {
115
- default: string
116
- description?: string
117
- enum?: string[]
118
- }
119
-
120
- export interface ApiPath {
121
- [method: string]: ApiOperation
122
- }
123
-
124
- export interface ApiOperation {
125
- summary?: string
126
- description?: string
127
- operationId?: string
128
- tags?: string[]
129
- parameters?: ApiParameter[]
130
- requestBody?: ApiRequestBody
131
- responses: Record<string, ApiResponse>
132
- deprecated?: boolean
133
- }
134
-
135
- export interface ApiParameter {
136
- name: string
137
- in: 'query' | 'header' | 'path' | 'cookie'
138
- description?: string
139
- required?: boolean
140
- schema: any
141
- }
142
-
143
- export interface ApiRequestBody {
144
- description?: string
145
- content: Record<string, ApiMediaType>
146
- required?: boolean
147
- }
148
-
149
- export interface ApiMediaType {
150
- schema: any
151
- example?: any
152
- examples?: Record<string, ApiExample>
153
- }
154
-
155
- export interface ApiExample {
156
- summary?: string
157
- description?: string
158
- value: any
159
- }
160
-
161
- export interface ApiComponents {
162
- schemas?: Record<string, any>
163
- responses?: Record<string, ApiResponse>
164
- parameters?: Record<string, ApiParameter>
165
- examples?: Record<string, ApiExample>
166
- requestBodies?: Record<string, ApiRequestBody>
167
- headers?: Record<string, any>
168
- securitySchemes?: Record<string, any>
1
+ /**
2
+ * API and HTTP-related types
3
+ * Type definitions for API endpoints, requests, responses, and HTTP utilities
4
+ */
5
+
6
+ export type HttpMethod = 'GET' | 'POST' | 'PUT' | 'DELETE' | 'PATCH' | 'OPTIONS' | 'HEAD'
7
+
8
+ export interface ApiEndpoint {
9
+ method: HttpMethod
10
+ path: string
11
+ handler: Function
12
+ schema?: ApiSchema
13
+ middleware?: Function[]
14
+ description?: string
15
+ tags?: string[]
16
+ deprecated?: boolean
17
+ version?: string
18
+ }
19
+
20
+ export interface ApiSchema {
21
+ params?: any
22
+ query?: any
23
+ body?: any
24
+ response?: any
25
+ headers?: any
26
+ }
27
+
28
+ export interface ApiResponse<T = any> {
29
+ data?: T
30
+ error?: ApiError
31
+ meta?: ApiMeta
32
+ }
33
+
34
+ export interface ApiError {
35
+ code: string
36
+ message: string
37
+ details?: any
38
+ statusCode: number
39
+ timestamp: string
40
+ }
41
+
42
+ export interface ApiMeta {
43
+ pagination?: PaginationMeta
44
+ timing?: TimingMeta
45
+ version?: string
46
+ }
47
+
48
+ export interface PaginationMeta {
49
+ page: number
50
+ limit: number
51
+ total: number
52
+ totalPages: number
53
+ hasNext: boolean
54
+ hasPrev: boolean
55
+ }
56
+
57
+ export interface TimingMeta {
58
+ requestId: string
59
+ duration: number
60
+ timestamp: string
61
+ }
62
+
63
+ export interface RequestContext {
64
+ id: string
65
+ method: HttpMethod
66
+ path: string
67
+ url: string
68
+ headers: Record<string, string>
69
+ query: Record<string, any>
70
+ params: Record<string, any>
71
+ body?: any
72
+ user?: any
73
+ startTime: number
74
+ }
75
+
76
+ export interface ResponseContext extends RequestContext {
77
+ statusCode: number
78
+ headers: Record<string, string>
79
+ body?: any
80
+ duration: number
81
+ size: number
82
+ }
83
+
84
+ export interface MiddlewareContext {
85
+ request: RequestContext
86
+ response?: ResponseContext
87
+ next: () => Promise<void>
88
+ state: Record<string, any>
89
+ }
90
+
91
+ export interface RouteHandler {
92
+ (context: RequestContext): Promise<any> | any
93
+ }
94
+
95
+ export interface MiddlewareHandler {
96
+ (context: MiddlewareContext): Promise<void> | void
97
+ }
98
+
99
+ export interface ApiDocumentation {
100
+ title: string
101
+ version: string
102
+ description?: string
103
+ servers: ApiServer[]
104
+ paths: Record<string, ApiPath>
105
+ components?: ApiComponents
106
+ }
107
+
108
+ export interface ApiServer {
109
+ url: string
110
+ description?: string
111
+ variables?: Record<string, ApiServerVariable>
112
+ }
113
+
114
+ export interface ApiServerVariable {
115
+ default: string
116
+ description?: string
117
+ enum?: string[]
118
+ }
119
+
120
+ export interface ApiPath {
121
+ [method: string]: ApiOperation
122
+ }
123
+
124
+ export interface ApiOperation {
125
+ summary?: string
126
+ description?: string
127
+ operationId?: string
128
+ tags?: string[]
129
+ parameters?: ApiParameter[]
130
+ requestBody?: ApiRequestBody
131
+ responses: Record<string, ApiResponse>
132
+ deprecated?: boolean
133
+ }
134
+
135
+ export interface ApiParameter {
136
+ name: string
137
+ in: 'query' | 'header' | 'path' | 'cookie'
138
+ description?: string
139
+ required?: boolean
140
+ schema: any
141
+ }
142
+
143
+ export interface ApiRequestBody {
144
+ description?: string
145
+ content: Record<string, ApiMediaType>
146
+ required?: boolean
147
+ }
148
+
149
+ export interface ApiMediaType {
150
+ schema: any
151
+ example?: any
152
+ examples?: Record<string, ApiExample>
153
+ }
154
+
155
+ export interface ApiExample {
156
+ summary?: string
157
+ description?: string
158
+ value: any
159
+ }
160
+
161
+ export interface ApiComponents {
162
+ schemas?: Record<string, any>
163
+ responses?: Record<string, ApiResponse>
164
+ parameters?: Record<string, ApiParameter>
165
+ examples?: Record<string, ApiExample>
166
+ requestBodies?: Record<string, ApiRequestBody>
167
+ headers?: Record<string, any>
168
+ securitySchemes?: Record<string, any>
169
169
  }