@superdangerous/app-framework 4.9.0
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/LICENSE +21 -0
- package/README.md +652 -0
- package/dist/api/logsRouter.d.ts +20 -0
- package/dist/api/logsRouter.d.ts.map +1 -0
- package/dist/api/logsRouter.js +515 -0
- package/dist/api/logsRouter.js.map +1 -0
- package/dist/cli/dev-server.d.ts +7 -0
- package/dist/cli/dev-server.d.ts.map +1 -0
- package/dist/cli/dev-server.js +640 -0
- package/dist/cli/dev-server.js.map +1 -0
- package/dist/cli/index.d.ts +7 -0
- package/dist/cli/index.d.ts.map +1 -0
- package/dist/cli/index.js +26 -0
- package/dist/cli/index.js.map +1 -0
- package/dist/core/StandardServer.d.ts +129 -0
- package/dist/core/StandardServer.d.ts.map +1 -0
- package/dist/core/StandardServer.js +453 -0
- package/dist/core/StandardServer.js.map +1 -0
- package/dist/core/apiResponse.d.ts +69 -0
- package/dist/core/apiResponse.d.ts.map +1 -0
- package/dist/core/apiResponse.js +127 -0
- package/dist/core/apiResponse.js.map +1 -0
- package/dist/core/healthCheck.d.ts +160 -0
- package/dist/core/healthCheck.d.ts.map +1 -0
- package/dist/core/healthCheck.js +398 -0
- package/dist/core/healthCheck.js.map +1 -0
- package/dist/core/index.d.ts +40 -0
- package/dist/core/index.d.ts.map +1 -0
- package/dist/core/index.js +40 -0
- package/dist/core/index.js.map +1 -0
- package/dist/core/logger.d.ts +117 -0
- package/dist/core/logger.d.ts.map +1 -0
- package/dist/core/logger.js +826 -0
- package/dist/core/logger.js.map +1 -0
- package/dist/core/portUtils.d.ts +71 -0
- package/dist/core/portUtils.d.ts.map +1 -0
- package/dist/core/portUtils.js +240 -0
- package/dist/core/portUtils.js.map +1 -0
- package/dist/core/storageService.d.ts +119 -0
- package/dist/core/storageService.d.ts.map +1 -0
- package/dist/core/storageService.js +405 -0
- package/dist/core/storageService.js.map +1 -0
- package/dist/desktop/bundler.d.ts +40 -0
- package/dist/desktop/bundler.d.ts.map +1 -0
- package/dist/desktop/bundler.js +176 -0
- package/dist/desktop/bundler.js.map +1 -0
- package/dist/desktop/index.d.ts +25 -0
- package/dist/desktop/index.d.ts.map +1 -0
- package/dist/desktop/index.js +15 -0
- package/dist/desktop/index.js.map +1 -0
- package/dist/desktop/native-modules.d.ts +66 -0
- package/dist/desktop/native-modules.d.ts.map +1 -0
- package/dist/desktop/native-modules.js +200 -0
- package/dist/desktop/native-modules.js.map +1 -0
- package/dist/index.d.ts +29 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +39 -0
- package/dist/index.js.map +1 -0
- package/dist/logging/LogCategories.d.ts +87 -0
- package/dist/logging/LogCategories.d.ts.map +1 -0
- package/dist/logging/LogCategories.js +205 -0
- package/dist/logging/LogCategories.js.map +1 -0
- package/dist/middleware/aiErrorHandler.d.ts +31 -0
- package/dist/middleware/aiErrorHandler.d.ts.map +1 -0
- package/dist/middleware/aiErrorHandler.js +181 -0
- package/dist/middleware/aiErrorHandler.js.map +1 -0
- package/dist/middleware/auth.d.ts +101 -0
- package/dist/middleware/auth.d.ts.map +1 -0
- package/dist/middleware/auth.js +230 -0
- package/dist/middleware/auth.js.map +1 -0
- package/dist/middleware/cors.d.ts +56 -0
- package/dist/middleware/cors.d.ts.map +1 -0
- package/dist/middleware/cors.js +123 -0
- package/dist/middleware/cors.js.map +1 -0
- package/dist/middleware/errorHandler.d.ts +13 -0
- package/dist/middleware/errorHandler.d.ts.map +1 -0
- package/dist/middleware/errorHandler.js +85 -0
- package/dist/middleware/errorHandler.js.map +1 -0
- package/dist/middleware/fileUpload.d.ts +62 -0
- package/dist/middleware/fileUpload.d.ts.map +1 -0
- package/dist/middleware/fileUpload.js +175 -0
- package/dist/middleware/fileUpload.js.map +1 -0
- package/dist/middleware/health.d.ts +48 -0
- package/dist/middleware/health.d.ts.map +1 -0
- package/dist/middleware/health.js +143 -0
- package/dist/middleware/health.js.map +1 -0
- package/dist/middleware/index.d.ts +20 -0
- package/dist/middleware/index.d.ts.map +1 -0
- package/dist/middleware/index.js +18 -0
- package/dist/middleware/index.js.map +1 -0
- package/dist/middleware/openapi.d.ts +64 -0
- package/dist/middleware/openapi.d.ts.map +1 -0
- package/dist/middleware/openapi.js +258 -0
- package/dist/middleware/openapi.js.map +1 -0
- package/dist/middleware/requestLogging.d.ts +22 -0
- package/dist/middleware/requestLogging.d.ts.map +1 -0
- package/dist/middleware/requestLogging.js +61 -0
- package/dist/middleware/requestLogging.js.map +1 -0
- package/dist/middleware/session.d.ts +84 -0
- package/dist/middleware/session.d.ts.map +1 -0
- package/dist/middleware/session.js +189 -0
- package/dist/middleware/session.js.map +1 -0
- package/dist/middleware/validation.d.ts +1337 -0
- package/dist/middleware/validation.d.ts.map +1 -0
- package/dist/middleware/validation.js +483 -0
- package/dist/middleware/validation.js.map +1 -0
- package/dist/services/aiService.d.ts +180 -0
- package/dist/services/aiService.d.ts.map +1 -0
- package/dist/services/aiService.js +547 -0
- package/dist/services/aiService.js.map +1 -0
- package/dist/services/conversationStorage.d.ts +38 -0
- package/dist/services/conversationStorage.d.ts.map +1 -0
- package/dist/services/conversationStorage.js +158 -0
- package/dist/services/conversationStorage.js.map +1 -0
- package/dist/services/crossPlatformBuffer.d.ts +84 -0
- package/dist/services/crossPlatformBuffer.d.ts.map +1 -0
- package/dist/services/crossPlatformBuffer.js +246 -0
- package/dist/services/crossPlatformBuffer.js.map +1 -0
- package/dist/services/index.d.ts +17 -0
- package/dist/services/index.d.ts.map +1 -0
- package/dist/services/index.js +18 -0
- package/dist/services/index.js.map +1 -0
- package/dist/services/networkService.d.ts +81 -0
- package/dist/services/networkService.d.ts.map +1 -0
- package/dist/services/networkService.js +268 -0
- package/dist/services/networkService.js.map +1 -0
- package/dist/services/queueService.d.ts +112 -0
- package/dist/services/queueService.d.ts.map +1 -0
- package/dist/services/queueService.js +338 -0
- package/dist/services/queueService.js.map +1 -0
- package/dist/services/settingsService.d.ts +135 -0
- package/dist/services/settingsService.d.ts.map +1 -0
- package/dist/services/settingsService.js +425 -0
- package/dist/services/settingsService.js.map +1 -0
- package/dist/services/systemMonitor.d.ts +208 -0
- package/dist/services/systemMonitor.d.ts.map +1 -0
- package/dist/services/systemMonitor.js +693 -0
- package/dist/services/systemMonitor.js.map +1 -0
- package/dist/services/updateService.d.ts +78 -0
- package/dist/services/updateService.d.ts.map +1 -0
- package/dist/services/updateService.js +252 -0
- package/dist/services/updateService.js.map +1 -0
- package/dist/services/websocketEvents.d.ts +372 -0
- package/dist/services/websocketEvents.d.ts.map +1 -0
- package/dist/services/websocketEvents.js +338 -0
- package/dist/services/websocketEvents.js.map +1 -0
- package/dist/services/websocketServer.d.ts +80 -0
- package/dist/services/websocketServer.d.ts.map +1 -0
- package/dist/services/websocketServer.js +299 -0
- package/dist/services/websocketServer.js.map +1 -0
- package/dist/settings/SettingsSchema.d.ts +151 -0
- package/dist/settings/SettingsSchema.d.ts.map +1 -0
- package/dist/settings/SettingsSchema.js +424 -0
- package/dist/settings/SettingsSchema.js.map +1 -0
- package/dist/testing/TestServer.d.ts +69 -0
- package/dist/testing/TestServer.d.ts.map +1 -0
- package/dist/testing/TestServer.js +250 -0
- package/dist/testing/TestServer.js.map +1 -0
- package/dist/types/index.d.ts +137 -0
- package/dist/types/index.d.ts.map +1 -0
- package/dist/types/index.js +5 -0
- package/dist/types/index.js.map +1 -0
- package/dist/utils/appPaths.d.ts +74 -0
- package/dist/utils/appPaths.d.ts.map +1 -0
- package/dist/utils/appPaths.js +162 -0
- package/dist/utils/appPaths.js.map +1 -0
- package/dist/utils/fs-utils.d.ts +50 -0
- package/dist/utils/fs-utils.d.ts.map +1 -0
- package/dist/utils/fs-utils.js +114 -0
- package/dist/utils/fs-utils.js.map +1 -0
- package/dist/utils/index.d.ts +12 -0
- package/dist/utils/index.d.ts.map +1 -0
- package/dist/utils/index.js +10 -0
- package/dist/utils/index.js.map +1 -0
- package/dist/utils/standardConfig.d.ts +61 -0
- package/dist/utils/standardConfig.d.ts.map +1 -0
- package/dist/utils/standardConfig.js +109 -0
- package/dist/utils/standardConfig.js.map +1 -0
- package/dist/utils/startupBanner.d.ts +34 -0
- package/dist/utils/startupBanner.d.ts.map +1 -0
- package/dist/utils/startupBanner.js +169 -0
- package/dist/utils/startupBanner.js.map +1 -0
- package/dist/utils/startupLogger.d.ts +45 -0
- package/dist/utils/startupLogger.d.ts.map +1 -0
- package/dist/utils/startupLogger.js +200 -0
- package/dist/utils/startupLogger.js.map +1 -0
- package/package.json +151 -0
- package/src/api/logsRouter.ts +600 -0
- package/src/cli/dev-server.ts +803 -0
- package/src/cli/index.ts +31 -0
- package/src/core/StandardServer.ts +587 -0
- package/src/core/apiResponse.ts +202 -0
- package/src/core/healthCheck.ts +565 -0
- package/src/core/index.ts +80 -0
- package/src/core/logger.ts +1092 -0
- package/src/core/portUtils.ts +319 -0
- package/src/core/storageService.ts +595 -0
- package/src/desktop/bundler.ts +271 -0
- package/src/desktop/index.ts +18 -0
- package/src/desktop/native-modules.ts +289 -0
- package/src/index.ts +142 -0
- package/src/logging/LogCategories.ts +302 -0
- package/src/middleware/aiErrorHandler.ts +278 -0
- package/src/middleware/auth.ts +329 -0
- package/src/middleware/cors.ts +187 -0
- package/src/middleware/errorHandler.ts +103 -0
- package/src/middleware/fileUpload.ts +252 -0
- package/src/middleware/health.ts +206 -0
- package/src/middleware/index.ts +71 -0
- package/src/middleware/openapi.ts +305 -0
- package/src/middleware/requestLogging.ts +92 -0
- package/src/middleware/session.ts +238 -0
- package/src/middleware/validation.ts +603 -0
- package/src/services/aiService.ts +789 -0
- package/src/services/conversationStorage.ts +232 -0
- package/src/services/crossPlatformBuffer.ts +341 -0
- package/src/services/index.ts +47 -0
- package/src/services/networkService.ts +351 -0
- package/src/services/queueService.ts +446 -0
- package/src/services/settingsService.ts +549 -0
- package/src/services/systemMonitor.ts +936 -0
- package/src/services/updateService.ts +334 -0
- package/src/services/websocketEvents.ts +409 -0
- package/src/services/websocketServer.ts +394 -0
- package/src/settings/SettingsSchema.ts +664 -0
- package/src/testing/TestServer.ts +312 -0
- package/src/types/index.ts +154 -0
- package/src/utils/appPaths.ts +196 -0
- package/src/utils/fs-utils.ts +130 -0
- package/src/utils/index.ts +15 -0
- package/src/utils/standardConfig.ts +178 -0
- package/src/utils/startupBanner.ts +287 -0
- package/src/utils/startupLogger.ts +268 -0
- package/ui/dist/index.d.mts +1221 -0
- package/ui/dist/index.d.ts +1221 -0
- package/ui/dist/index.js +73 -0
- package/ui/dist/index.js.map +1 -0
- package/ui/dist/index.mjs +73 -0
- package/ui/dist/index.mjs.map +1 -0
|
@@ -0,0 +1,202 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Standardized API Response Utilities
|
|
3
|
+
* Provides consistent response format across all applications
|
|
4
|
+
*/
|
|
5
|
+
|
|
6
|
+
import { Response } from "express";
|
|
7
|
+
import { ZodError } from "zod";
|
|
8
|
+
import { createLogger } from "../core/logger.js";
|
|
9
|
+
|
|
10
|
+
const logger = createLogger("api-error");
|
|
11
|
+
|
|
12
|
+
export interface ApiResponse<T = any> {
|
|
13
|
+
success: boolean;
|
|
14
|
+
data?: T;
|
|
15
|
+
error?: string;
|
|
16
|
+
message?: string;
|
|
17
|
+
timestamp?: string;
|
|
18
|
+
metadata?: Record<string, any>;
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
export interface ApiErrorResponse extends ApiResponse {
|
|
22
|
+
success: false;
|
|
23
|
+
error: string;
|
|
24
|
+
code?: string;
|
|
25
|
+
details?: any;
|
|
26
|
+
stack?: string;
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
export interface ApiSuccessResponse<T = any> extends ApiResponse<T> {
|
|
30
|
+
success: true;
|
|
31
|
+
data: T;
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
/**
|
|
35
|
+
* Send a successful response
|
|
36
|
+
*/
|
|
37
|
+
export function sendSuccess<T = any>(
|
|
38
|
+
res: Response,
|
|
39
|
+
data: T,
|
|
40
|
+
message?: string,
|
|
41
|
+
statusCode = 200,
|
|
42
|
+
): Response<ApiSuccessResponse<T>> {
|
|
43
|
+
const requestId = res.locals?.requestId;
|
|
44
|
+
return res.status(statusCode).json({
|
|
45
|
+
success: true,
|
|
46
|
+
data,
|
|
47
|
+
message,
|
|
48
|
+
timestamp: new Date().toISOString(),
|
|
49
|
+
metadata: requestId ? { requestId } : undefined,
|
|
50
|
+
});
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
/**
|
|
54
|
+
* Send an error response
|
|
55
|
+
*/
|
|
56
|
+
export function sendError(
|
|
57
|
+
res: Response,
|
|
58
|
+
error: string | Error,
|
|
59
|
+
statusCode = 500,
|
|
60
|
+
details?: any,
|
|
61
|
+
): Response<ApiErrorResponse> {
|
|
62
|
+
const requestId = res.locals?.requestId;
|
|
63
|
+
const errorMessage = typeof error === "string" ? error : error.message;
|
|
64
|
+
const response: ApiErrorResponse = {
|
|
65
|
+
success: false,
|
|
66
|
+
error: errorMessage,
|
|
67
|
+
timestamp: new Date().toISOString(),
|
|
68
|
+
metadata: requestId ? { requestId } : undefined,
|
|
69
|
+
};
|
|
70
|
+
|
|
71
|
+
if (details) {
|
|
72
|
+
response.details = details;
|
|
73
|
+
}
|
|
74
|
+
|
|
75
|
+
// Include stack trace in development
|
|
76
|
+
if (process.env.NODE_ENV === "development" && error instanceof Error) {
|
|
77
|
+
response.stack = error.stack;
|
|
78
|
+
}
|
|
79
|
+
|
|
80
|
+
return res.status(statusCode).json(response);
|
|
81
|
+
}
|
|
82
|
+
|
|
83
|
+
/**
|
|
84
|
+
* Send a validation error response
|
|
85
|
+
*/
|
|
86
|
+
export function sendValidationError(
|
|
87
|
+
res: Response,
|
|
88
|
+
errors: any,
|
|
89
|
+
message = "Validation failed",
|
|
90
|
+
): Response<ApiErrorResponse> {
|
|
91
|
+
return sendError(res, message, 400, errors);
|
|
92
|
+
}
|
|
93
|
+
|
|
94
|
+
/**
|
|
95
|
+
* Send a not found response
|
|
96
|
+
*/
|
|
97
|
+
export function sendNotFound(
|
|
98
|
+
res: Response,
|
|
99
|
+
resource = "Resource",
|
|
100
|
+
): Response<ApiErrorResponse> {
|
|
101
|
+
return sendError(res, `${resource} not found`, 404);
|
|
102
|
+
}
|
|
103
|
+
|
|
104
|
+
/**
|
|
105
|
+
* Send an unauthorized response
|
|
106
|
+
*/
|
|
107
|
+
export function sendUnauthorized(
|
|
108
|
+
res: Response,
|
|
109
|
+
message = "Unauthorized",
|
|
110
|
+
): Response<ApiErrorResponse> {
|
|
111
|
+
return sendError(res, message, 401);
|
|
112
|
+
}
|
|
113
|
+
|
|
114
|
+
/**
|
|
115
|
+
* Send a forbidden response
|
|
116
|
+
*/
|
|
117
|
+
export function sendForbidden(
|
|
118
|
+
res: Response,
|
|
119
|
+
message = "Forbidden",
|
|
120
|
+
): Response<ApiErrorResponse> {
|
|
121
|
+
return sendError(res, message, 403);
|
|
122
|
+
}
|
|
123
|
+
|
|
124
|
+
/**
|
|
125
|
+
* Send a bad request response
|
|
126
|
+
*/
|
|
127
|
+
export function sendBadRequest(
|
|
128
|
+
res: Response,
|
|
129
|
+
message = "Bad request",
|
|
130
|
+
): Response<ApiErrorResponse> {
|
|
131
|
+
return sendError(res, message, 400);
|
|
132
|
+
}
|
|
133
|
+
|
|
134
|
+
/**
|
|
135
|
+
* Send a created response
|
|
136
|
+
*/
|
|
137
|
+
export function sendCreated<T = any>(
|
|
138
|
+
res: Response,
|
|
139
|
+
data: T,
|
|
140
|
+
message = "Resource created successfully",
|
|
141
|
+
): Response<ApiSuccessResponse<T>> {
|
|
142
|
+
return sendSuccess(res, data, message, 201);
|
|
143
|
+
}
|
|
144
|
+
|
|
145
|
+
/**
|
|
146
|
+
* Send a no content response
|
|
147
|
+
*/
|
|
148
|
+
export function sendNoContent(res: Response): Response {
|
|
149
|
+
return res.status(204).send();
|
|
150
|
+
}
|
|
151
|
+
|
|
152
|
+
/**
|
|
153
|
+
* Wrap async route handlers to catch errors
|
|
154
|
+
*/
|
|
155
|
+
export function asyncHandler(fn: (req: any, res: any, next: any) => any) {
|
|
156
|
+
return (req: any, res: any, next: any) => {
|
|
157
|
+
Promise.resolve(fn(req, res, next)).catch(next);
|
|
158
|
+
};
|
|
159
|
+
}
|
|
160
|
+
|
|
161
|
+
/**
|
|
162
|
+
* Standard error handler middleware
|
|
163
|
+
*/
|
|
164
|
+
export function apiErrorHandler(err: any, _req: any, res: any, next: any) {
|
|
165
|
+
// If response was already sent, delegate to default Express error handler
|
|
166
|
+
if (res.headersSent) {
|
|
167
|
+
return next(err);
|
|
168
|
+
}
|
|
169
|
+
|
|
170
|
+
// Log the error using the framework's enhanced logger
|
|
171
|
+
logger.error("API Error:", {
|
|
172
|
+
error: err.message,
|
|
173
|
+
stack: err.stack,
|
|
174
|
+
name: err.name,
|
|
175
|
+
statusCode: err.statusCode || err.status || 500,
|
|
176
|
+
});
|
|
177
|
+
|
|
178
|
+
// Handle different error types
|
|
179
|
+
if (err instanceof ZodError || err?.name === "ZodError") {
|
|
180
|
+
const issues = err instanceof ZodError ? err.issues : err?.issues;
|
|
181
|
+
return sendValidationError(res, issues || err.message);
|
|
182
|
+
}
|
|
183
|
+
|
|
184
|
+
if (err.name === "ValidationError") {
|
|
185
|
+
return sendValidationError(res, err.errors || err.message);
|
|
186
|
+
}
|
|
187
|
+
|
|
188
|
+
if (err.name === "UnauthorizedError") {
|
|
189
|
+
return sendUnauthorized(res, err.message);
|
|
190
|
+
}
|
|
191
|
+
|
|
192
|
+
if (err.name === "CastError" || err.name === "TypeError") {
|
|
193
|
+
return sendBadRequest(res, "Invalid request parameters");
|
|
194
|
+
}
|
|
195
|
+
|
|
196
|
+
if (err.statusCode || err.status) {
|
|
197
|
+
return sendError(res, err.message, err.statusCode || err.status);
|
|
198
|
+
}
|
|
199
|
+
|
|
200
|
+
// Default to internal server error
|
|
201
|
+
return sendError(res, err.message || "Internal server error");
|
|
202
|
+
}
|