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.
- package/.dockerignore +1 -2
- package/Dockerfile +8 -8
- package/LLMD/INDEX.md +64 -0
- package/LLMD/MAINTENANCE.md +197 -0
- package/LLMD/MIGRATION.md +156 -0
- package/LLMD/config/.gitkeep +1 -0
- package/LLMD/config/declarative-system.md +268 -0
- package/LLMD/config/environment-vars.md +327 -0
- package/LLMD/config/runtime-reload.md +401 -0
- package/LLMD/core/.gitkeep +1 -0
- package/LLMD/core/build-system.md +599 -0
- package/LLMD/core/framework-lifecycle.md +229 -0
- package/LLMD/core/plugin-system.md +451 -0
- package/LLMD/patterns/.gitkeep +1 -0
- package/LLMD/patterns/anti-patterns.md +297 -0
- package/LLMD/patterns/project-structure.md +264 -0
- package/LLMD/patterns/type-safety.md +440 -0
- package/LLMD/reference/.gitkeep +1 -0
- package/LLMD/reference/cli-commands.md +250 -0
- package/LLMD/reference/plugin-hooks.md +357 -0
- package/LLMD/reference/routing.md +39 -0
- package/LLMD/reference/troubleshooting.md +364 -0
- package/LLMD/resources/.gitkeep +1 -0
- package/LLMD/resources/controllers.md +465 -0
- package/LLMD/resources/live-components.md +703 -0
- package/LLMD/resources/live-rooms.md +482 -0
- package/LLMD/resources/live-upload.md +130 -0
- package/LLMD/resources/plugins-external.md +617 -0
- package/LLMD/resources/routes-eden.md +254 -0
- package/README.md +37 -17
- package/app/client/index.html +0 -1
- package/app/client/src/App.tsx +107 -150
- package/app/client/src/components/AppLayout.tsx +68 -0
- package/app/client/src/components/BackButton.tsx +13 -0
- package/app/client/src/components/DemoPage.tsx +20 -0
- package/app/client/src/components/LiveUploadWidget.tsx +204 -0
- package/app/client/src/lib/eden-api.ts +85 -60
- package/app/client/src/live/ChatDemo.tsx +107 -0
- package/app/client/src/live/CounterDemo.tsx +206 -0
- package/app/client/src/live/FormDemo.tsx +119 -0
- package/app/client/src/live/RoomChatDemo.tsx +161 -0
- package/app/client/src/live/UploadDemo.tsx +21 -0
- package/app/client/src/main.tsx +4 -1
- package/app/client/src/pages/ApiTestPage.tsx +108 -0
- package/app/client/src/pages/HomePage.tsx +76 -0
- package/app/server/app.ts +1 -4
- package/app/server/controllers/users.controller.ts +36 -44
- package/app/server/index.ts +25 -35
- package/app/server/live/LiveChat.ts +77 -0
- package/app/server/live/LiveCounter.ts +67 -0
- package/app/server/live/LiveForm.ts +63 -0
- package/app/server/live/LiveLocalCounter.ts +32 -0
- package/app/server/live/LiveRoomChat.ts +127 -0
- package/app/server/live/LiveUpload.ts +81 -0
- package/app/server/routes/index.ts +3 -1
- package/app/server/routes/room.routes.ts +117 -0
- package/app/server/routes/users.routes.ts +35 -27
- package/app/shared/types/index.ts +14 -2
- package/config/app.config.ts +2 -62
- package/config/client.config.ts +2 -95
- package/config/database.config.ts +2 -99
- package/config/fluxstack.config.ts +25 -45
- package/config/index.ts +57 -38
- package/config/monitoring.config.ts +2 -114
- package/config/plugins.config.ts +2 -80
- package/config/server.config.ts +2 -68
- package/config/services.config.ts +2 -130
- package/config/system/app.config.ts +29 -0
- package/config/system/build.config.ts +49 -0
- package/config/system/client.config.ts +68 -0
- package/config/system/database.config.ts +17 -0
- package/config/system/fluxstack.config.ts +114 -0
- package/config/{logger.config.ts → system/logger.config.ts} +3 -1
- package/config/system/monitoring.config.ts +114 -0
- package/config/system/plugins.config.ts +84 -0
- package/config/{runtime.config.ts → system/runtime.config.ts} +1 -1
- package/config/system/server.config.ts +68 -0
- package/config/system/services.config.ts +46 -0
- package/config/{system.config.ts → system/system.config.ts} +1 -1
- package/core/build/flux-plugins-generator.ts +325 -325
- package/core/build/index.ts +39 -27
- package/core/build/live-components-generator.ts +3 -3
- package/core/build/optimizer.ts +235 -235
- package/core/cli/command-registry.ts +6 -4
- package/core/cli/commands/build.ts +79 -0
- package/core/cli/commands/create.ts +54 -0
- package/core/cli/commands/dev.ts +101 -0
- package/core/cli/commands/help.ts +34 -0
- package/core/cli/commands/index.ts +34 -0
- package/core/cli/commands/make-plugin.ts +90 -0
- package/core/cli/commands/plugin-add.ts +197 -0
- package/core/cli/commands/plugin-deps.ts +2 -2
- package/core/cli/commands/plugin-list.ts +208 -0
- package/core/cli/commands/plugin-remove.ts +170 -0
- package/core/cli/generators/component.ts +769 -769
- package/core/cli/generators/controller.ts +1 -1
- package/core/cli/generators/index.ts +146 -146
- package/core/cli/generators/interactive.ts +227 -227
- package/core/cli/generators/plugin.ts +2 -2
- package/core/cli/generators/prompts.ts +82 -82
- package/core/cli/generators/route.ts +6 -6
- package/core/cli/generators/service.ts +2 -2
- package/core/cli/generators/template-engine.ts +4 -3
- package/core/cli/generators/types.ts +2 -2
- package/core/cli/generators/utils.ts +191 -191
- package/core/cli/index.ts +115 -686
- package/core/cli/plugin-discovery.ts +2 -2
- package/core/client/LiveComponentsProvider.tsx +60 -8
- package/core/client/api/eden.ts +183 -0
- package/core/client/api/index.ts +11 -0
- package/core/client/components/Live.tsx +104 -0
- package/core/client/fluxstack.ts +1 -9
- package/core/client/hooks/AdaptiveChunkSizer.ts +215 -215
- package/core/client/hooks/state-validator.ts +1 -1
- package/core/client/hooks/useAuth.ts +48 -48
- package/core/client/hooks/useChunkedUpload.ts +85 -35
- package/core/client/hooks/useLiveChunkedUpload.ts +87 -0
- package/core/client/hooks/useLiveComponent.ts +800 -0
- package/core/client/hooks/useLiveUpload.ts +71 -0
- package/core/client/hooks/useRoom.ts +409 -0
- package/core/client/hooks/useRoomProxy.ts +382 -0
- package/core/client/index.ts +17 -68
- package/core/client/standalone-entry.ts +8 -0
- package/core/client/standalone.ts +74 -53
- package/core/client/state/createStore.ts +192 -192
- package/core/client/state/index.ts +14 -14
- package/core/config/index.ts +70 -291
- package/core/config/schema.ts +42 -723
- package/core/framework/client.ts +131 -131
- package/core/framework/index.ts +7 -7
- package/core/framework/server.ts +47 -40
- package/core/framework/types.ts +2 -2
- package/core/index.ts +23 -4
- package/core/live/ComponentRegistry.ts +3 -3
- package/core/live/types.ts +77 -0
- package/core/plugins/built-in/index.ts +134 -134
- package/core/plugins/built-in/live-components/commands/create-live-component.ts +242 -1066
- package/core/plugins/built-in/live-components/index.ts +1 -1
- package/core/plugins/built-in/monitoring/index.ts +111 -47
- package/core/plugins/built-in/static/index.ts +1 -1
- package/core/plugins/built-in/swagger/index.ts +68 -265
- package/core/plugins/built-in/vite/index.ts +85 -185
- package/core/plugins/built-in/vite/vite-dev.ts +10 -16
- package/core/plugins/config.ts +9 -7
- package/core/plugins/dependency-manager.ts +31 -1
- package/core/plugins/discovery.ts +19 -7
- package/core/plugins/executor.ts +2 -2
- package/core/plugins/index.ts +203 -203
- package/core/plugins/manager.ts +27 -39
- package/core/plugins/module-resolver.ts +19 -8
- package/core/plugins/registry.ts +255 -19
- package/core/plugins/types.ts +20 -53
- package/core/server/framework.ts +66 -43
- package/core/server/index.ts +15 -15
- package/core/server/live/ComponentRegistry.ts +78 -71
- package/core/server/live/FileUploadManager.ts +23 -10
- package/core/server/live/LiveComponentPerformanceMonitor.ts +1 -1
- package/core/server/live/LiveRoomManager.ts +261 -0
- package/core/server/live/RoomEventBus.ts +234 -0
- package/core/server/live/RoomStateManager.ts +172 -0
- package/core/server/live/StateSignature.ts +643 -643
- package/core/server/live/WebSocketConnectionManager.ts +30 -19
- package/core/server/live/auto-generated-components.ts +21 -9
- package/core/server/live/index.ts +14 -0
- package/core/server/live/websocket-plugin.ts +214 -67
- package/core/server/middleware/elysia-helpers.ts +7 -2
- package/core/server/middleware/errorHandling.ts +1 -1
- package/core/server/middleware/index.ts +31 -31
- package/core/server/plugins/database.ts +180 -180
- package/core/server/plugins/static-files-plugin.ts +69 -69
- package/core/server/plugins/swagger.ts +1 -1
- package/core/server/rooms/RoomBroadcaster.ts +357 -0
- package/core/server/rooms/RoomSystem.ts +463 -0
- package/core/server/rooms/index.ts +13 -0
- package/core/server/services/BaseService.ts +1 -1
- package/core/server/services/ServiceContainer.ts +1 -1
- package/core/server/services/index.ts +8 -8
- package/core/templates/create-project.ts +12 -12
- package/core/testing/index.ts +9 -9
- package/core/testing/setup.ts +73 -73
- package/core/types/api.ts +168 -168
- package/core/types/build.ts +219 -219
- package/core/types/config.ts +56 -26
- package/core/types/index.ts +4 -4
- package/core/types/plugin.ts +107 -107
- package/core/types/types.ts +353 -14
- package/core/utils/build-logger.ts +324 -324
- package/core/utils/config-schema.ts +480 -480
- package/core/utils/env.ts +2 -8
- package/core/utils/errors/codes.ts +114 -114
- package/core/utils/errors/handlers.ts +36 -1
- package/core/utils/errors/index.ts +49 -5
- package/core/utils/errors/middleware.ts +113 -113
- package/core/utils/helpers.ts +6 -16
- package/core/utils/index.ts +17 -17
- package/core/utils/logger/colors.ts +114 -114
- package/core/utils/logger/config.ts +13 -9
- package/core/utils/logger/formatter.ts +82 -82
- package/core/utils/logger/group-logger.ts +101 -101
- package/core/utils/logger/index.ts +6 -1
- package/core/utils/logger/stack-trace.ts +3 -1
- package/core/utils/logger/startup-banner.ts +82 -82
- package/core/utils/logger/winston-logger.ts +152 -152
- package/core/utils/monitoring/index.ts +211 -211
- package/core/utils/sync-version.ts +66 -66
- package/core/utils/version.ts +1 -1
- package/create-fluxstack.ts +8 -7
- package/package.json +12 -13
- package/plugins/crypto-auth/cli/make-protected-route.command.ts +1 -1
- package/plugins/crypto-auth/client/CryptoAuthClient.ts +302 -302
- package/plugins/crypto-auth/client/components/index.ts +11 -11
- package/plugins/crypto-auth/client/index.ts +11 -11
- package/plugins/crypto-auth/config/index.ts +1 -1
- package/plugins/crypto-auth/index.ts +4 -4
- package/plugins/crypto-auth/package.json +65 -65
- package/plugins/crypto-auth/server/AuthMiddleware.ts +1 -1
- package/plugins/crypto-auth/server/CryptoAuthService.ts +185 -185
- package/plugins/crypto-auth/server/index.ts +21 -21
- package/plugins/crypto-auth/server/middlewares/cryptoAuthAdmin.ts +3 -3
- package/plugins/crypto-auth/server/middlewares/cryptoAuthOptional.ts +1 -1
- package/plugins/crypto-auth/server/middlewares/cryptoAuthPermissions.ts +2 -2
- package/plugins/crypto-auth/server/middlewares/cryptoAuthRequired.ts +2 -2
- package/plugins/crypto-auth/server/middlewares/helpers.ts +1 -1
- package/plugins/crypto-auth/server/middlewares/index.ts +22 -22
- package/tsconfig.api-strict.json +16 -0
- package/tsconfig.json +48 -52
- package/{app/client/tsconfig.node.json → tsconfig.node.json} +25 -25
- package/types/global.d.ts +29 -29
- package/types/vitest.d.ts +8 -8
- package/vite.config.ts +38 -62
- package/vitest.config.live.ts +10 -9
- package/vitest.config.ts +29 -17
- package/app/client/README.md +0 -69
- package/app/client/SIMPLIFICATION.md +0 -140
- package/app/client/frontend-only.ts +0 -12
- package/app/client/src/live/FileUploadExample.tsx +0 -359
- package/app/client/src/live/MinimalLiveClock.tsx +0 -47
- package/app/client/src/live/QuickUploadTest.tsx +0 -193
- package/app/client/tsconfig.app.json +0 -45
- package/app/client/tsconfig.json +0 -7
- package/app/client/zustand-setup.md +0 -65
- package/app/server/backend-only.ts +0 -18
- package/app/server/live/LiveClockComponent.ts +0 -215
- package/app/server/live/LiveFileUploadComponent.ts +0 -77
- package/app/server/routes/env-test.ts +0 -110
- package/core/client/hooks/index.ts +0 -7
- package/core/client/hooks/useHybridLiveComponent.ts +0 -685
- package/core/client/hooks/useTypedLiveComponent.ts +0 -133
- package/core/client/hooks/useWebSocket.ts +0 -361
- package/core/config/env.ts +0 -546
- package/core/config/loader.ts +0 -522
- package/core/config/runtime-config.ts +0 -327
- package/core/config/validator.ts +0 -540
- package/core/server/backend-entry.ts +0 -51
- package/core/server/standalone.ts +0 -106
- package/core/utils/regenerate-files.ts +0 -69
- package/fluxstack.config.ts +0 -354
package/core/testing/setup.ts
CHANGED
|
@@ -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
|
}
|