@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.
Files changed (239) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +652 -0
  3. package/dist/api/logsRouter.d.ts +20 -0
  4. package/dist/api/logsRouter.d.ts.map +1 -0
  5. package/dist/api/logsRouter.js +515 -0
  6. package/dist/api/logsRouter.js.map +1 -0
  7. package/dist/cli/dev-server.d.ts +7 -0
  8. package/dist/cli/dev-server.d.ts.map +1 -0
  9. package/dist/cli/dev-server.js +640 -0
  10. package/dist/cli/dev-server.js.map +1 -0
  11. package/dist/cli/index.d.ts +7 -0
  12. package/dist/cli/index.d.ts.map +1 -0
  13. package/dist/cli/index.js +26 -0
  14. package/dist/cli/index.js.map +1 -0
  15. package/dist/core/StandardServer.d.ts +129 -0
  16. package/dist/core/StandardServer.d.ts.map +1 -0
  17. package/dist/core/StandardServer.js +453 -0
  18. package/dist/core/StandardServer.js.map +1 -0
  19. package/dist/core/apiResponse.d.ts +69 -0
  20. package/dist/core/apiResponse.d.ts.map +1 -0
  21. package/dist/core/apiResponse.js +127 -0
  22. package/dist/core/apiResponse.js.map +1 -0
  23. package/dist/core/healthCheck.d.ts +160 -0
  24. package/dist/core/healthCheck.d.ts.map +1 -0
  25. package/dist/core/healthCheck.js +398 -0
  26. package/dist/core/healthCheck.js.map +1 -0
  27. package/dist/core/index.d.ts +40 -0
  28. package/dist/core/index.d.ts.map +1 -0
  29. package/dist/core/index.js +40 -0
  30. package/dist/core/index.js.map +1 -0
  31. package/dist/core/logger.d.ts +117 -0
  32. package/dist/core/logger.d.ts.map +1 -0
  33. package/dist/core/logger.js +826 -0
  34. package/dist/core/logger.js.map +1 -0
  35. package/dist/core/portUtils.d.ts +71 -0
  36. package/dist/core/portUtils.d.ts.map +1 -0
  37. package/dist/core/portUtils.js +240 -0
  38. package/dist/core/portUtils.js.map +1 -0
  39. package/dist/core/storageService.d.ts +119 -0
  40. package/dist/core/storageService.d.ts.map +1 -0
  41. package/dist/core/storageService.js +405 -0
  42. package/dist/core/storageService.js.map +1 -0
  43. package/dist/desktop/bundler.d.ts +40 -0
  44. package/dist/desktop/bundler.d.ts.map +1 -0
  45. package/dist/desktop/bundler.js +176 -0
  46. package/dist/desktop/bundler.js.map +1 -0
  47. package/dist/desktop/index.d.ts +25 -0
  48. package/dist/desktop/index.d.ts.map +1 -0
  49. package/dist/desktop/index.js +15 -0
  50. package/dist/desktop/index.js.map +1 -0
  51. package/dist/desktop/native-modules.d.ts +66 -0
  52. package/dist/desktop/native-modules.d.ts.map +1 -0
  53. package/dist/desktop/native-modules.js +200 -0
  54. package/dist/desktop/native-modules.js.map +1 -0
  55. package/dist/index.d.ts +29 -0
  56. package/dist/index.d.ts.map +1 -0
  57. package/dist/index.js +39 -0
  58. package/dist/index.js.map +1 -0
  59. package/dist/logging/LogCategories.d.ts +87 -0
  60. package/dist/logging/LogCategories.d.ts.map +1 -0
  61. package/dist/logging/LogCategories.js +205 -0
  62. package/dist/logging/LogCategories.js.map +1 -0
  63. package/dist/middleware/aiErrorHandler.d.ts +31 -0
  64. package/dist/middleware/aiErrorHandler.d.ts.map +1 -0
  65. package/dist/middleware/aiErrorHandler.js +181 -0
  66. package/dist/middleware/aiErrorHandler.js.map +1 -0
  67. package/dist/middleware/auth.d.ts +101 -0
  68. package/dist/middleware/auth.d.ts.map +1 -0
  69. package/dist/middleware/auth.js +230 -0
  70. package/dist/middleware/auth.js.map +1 -0
  71. package/dist/middleware/cors.d.ts +56 -0
  72. package/dist/middleware/cors.d.ts.map +1 -0
  73. package/dist/middleware/cors.js +123 -0
  74. package/dist/middleware/cors.js.map +1 -0
  75. package/dist/middleware/errorHandler.d.ts +13 -0
  76. package/dist/middleware/errorHandler.d.ts.map +1 -0
  77. package/dist/middleware/errorHandler.js +85 -0
  78. package/dist/middleware/errorHandler.js.map +1 -0
  79. package/dist/middleware/fileUpload.d.ts +62 -0
  80. package/dist/middleware/fileUpload.d.ts.map +1 -0
  81. package/dist/middleware/fileUpload.js +175 -0
  82. package/dist/middleware/fileUpload.js.map +1 -0
  83. package/dist/middleware/health.d.ts +48 -0
  84. package/dist/middleware/health.d.ts.map +1 -0
  85. package/dist/middleware/health.js +143 -0
  86. package/dist/middleware/health.js.map +1 -0
  87. package/dist/middleware/index.d.ts +20 -0
  88. package/dist/middleware/index.d.ts.map +1 -0
  89. package/dist/middleware/index.js +18 -0
  90. package/dist/middleware/index.js.map +1 -0
  91. package/dist/middleware/openapi.d.ts +64 -0
  92. package/dist/middleware/openapi.d.ts.map +1 -0
  93. package/dist/middleware/openapi.js +258 -0
  94. package/dist/middleware/openapi.js.map +1 -0
  95. package/dist/middleware/requestLogging.d.ts +22 -0
  96. package/dist/middleware/requestLogging.d.ts.map +1 -0
  97. package/dist/middleware/requestLogging.js +61 -0
  98. package/dist/middleware/requestLogging.js.map +1 -0
  99. package/dist/middleware/session.d.ts +84 -0
  100. package/dist/middleware/session.d.ts.map +1 -0
  101. package/dist/middleware/session.js +189 -0
  102. package/dist/middleware/session.js.map +1 -0
  103. package/dist/middleware/validation.d.ts +1337 -0
  104. package/dist/middleware/validation.d.ts.map +1 -0
  105. package/dist/middleware/validation.js +483 -0
  106. package/dist/middleware/validation.js.map +1 -0
  107. package/dist/services/aiService.d.ts +180 -0
  108. package/dist/services/aiService.d.ts.map +1 -0
  109. package/dist/services/aiService.js +547 -0
  110. package/dist/services/aiService.js.map +1 -0
  111. package/dist/services/conversationStorage.d.ts +38 -0
  112. package/dist/services/conversationStorage.d.ts.map +1 -0
  113. package/dist/services/conversationStorage.js +158 -0
  114. package/dist/services/conversationStorage.js.map +1 -0
  115. package/dist/services/crossPlatformBuffer.d.ts +84 -0
  116. package/dist/services/crossPlatformBuffer.d.ts.map +1 -0
  117. package/dist/services/crossPlatformBuffer.js +246 -0
  118. package/dist/services/crossPlatformBuffer.js.map +1 -0
  119. package/dist/services/index.d.ts +17 -0
  120. package/dist/services/index.d.ts.map +1 -0
  121. package/dist/services/index.js +18 -0
  122. package/dist/services/index.js.map +1 -0
  123. package/dist/services/networkService.d.ts +81 -0
  124. package/dist/services/networkService.d.ts.map +1 -0
  125. package/dist/services/networkService.js +268 -0
  126. package/dist/services/networkService.js.map +1 -0
  127. package/dist/services/queueService.d.ts +112 -0
  128. package/dist/services/queueService.d.ts.map +1 -0
  129. package/dist/services/queueService.js +338 -0
  130. package/dist/services/queueService.js.map +1 -0
  131. package/dist/services/settingsService.d.ts +135 -0
  132. package/dist/services/settingsService.d.ts.map +1 -0
  133. package/dist/services/settingsService.js +425 -0
  134. package/dist/services/settingsService.js.map +1 -0
  135. package/dist/services/systemMonitor.d.ts +208 -0
  136. package/dist/services/systemMonitor.d.ts.map +1 -0
  137. package/dist/services/systemMonitor.js +693 -0
  138. package/dist/services/systemMonitor.js.map +1 -0
  139. package/dist/services/updateService.d.ts +78 -0
  140. package/dist/services/updateService.d.ts.map +1 -0
  141. package/dist/services/updateService.js +252 -0
  142. package/dist/services/updateService.js.map +1 -0
  143. package/dist/services/websocketEvents.d.ts +372 -0
  144. package/dist/services/websocketEvents.d.ts.map +1 -0
  145. package/dist/services/websocketEvents.js +338 -0
  146. package/dist/services/websocketEvents.js.map +1 -0
  147. package/dist/services/websocketServer.d.ts +80 -0
  148. package/dist/services/websocketServer.d.ts.map +1 -0
  149. package/dist/services/websocketServer.js +299 -0
  150. package/dist/services/websocketServer.js.map +1 -0
  151. package/dist/settings/SettingsSchema.d.ts +151 -0
  152. package/dist/settings/SettingsSchema.d.ts.map +1 -0
  153. package/dist/settings/SettingsSchema.js +424 -0
  154. package/dist/settings/SettingsSchema.js.map +1 -0
  155. package/dist/testing/TestServer.d.ts +69 -0
  156. package/dist/testing/TestServer.d.ts.map +1 -0
  157. package/dist/testing/TestServer.js +250 -0
  158. package/dist/testing/TestServer.js.map +1 -0
  159. package/dist/types/index.d.ts +137 -0
  160. package/dist/types/index.d.ts.map +1 -0
  161. package/dist/types/index.js +5 -0
  162. package/dist/types/index.js.map +1 -0
  163. package/dist/utils/appPaths.d.ts +74 -0
  164. package/dist/utils/appPaths.d.ts.map +1 -0
  165. package/dist/utils/appPaths.js +162 -0
  166. package/dist/utils/appPaths.js.map +1 -0
  167. package/dist/utils/fs-utils.d.ts +50 -0
  168. package/dist/utils/fs-utils.d.ts.map +1 -0
  169. package/dist/utils/fs-utils.js +114 -0
  170. package/dist/utils/fs-utils.js.map +1 -0
  171. package/dist/utils/index.d.ts +12 -0
  172. package/dist/utils/index.d.ts.map +1 -0
  173. package/dist/utils/index.js +10 -0
  174. package/dist/utils/index.js.map +1 -0
  175. package/dist/utils/standardConfig.d.ts +61 -0
  176. package/dist/utils/standardConfig.d.ts.map +1 -0
  177. package/dist/utils/standardConfig.js +109 -0
  178. package/dist/utils/standardConfig.js.map +1 -0
  179. package/dist/utils/startupBanner.d.ts +34 -0
  180. package/dist/utils/startupBanner.d.ts.map +1 -0
  181. package/dist/utils/startupBanner.js +169 -0
  182. package/dist/utils/startupBanner.js.map +1 -0
  183. package/dist/utils/startupLogger.d.ts +45 -0
  184. package/dist/utils/startupLogger.d.ts.map +1 -0
  185. package/dist/utils/startupLogger.js +200 -0
  186. package/dist/utils/startupLogger.js.map +1 -0
  187. package/package.json +151 -0
  188. package/src/api/logsRouter.ts +600 -0
  189. package/src/cli/dev-server.ts +803 -0
  190. package/src/cli/index.ts +31 -0
  191. package/src/core/StandardServer.ts +587 -0
  192. package/src/core/apiResponse.ts +202 -0
  193. package/src/core/healthCheck.ts +565 -0
  194. package/src/core/index.ts +80 -0
  195. package/src/core/logger.ts +1092 -0
  196. package/src/core/portUtils.ts +319 -0
  197. package/src/core/storageService.ts +595 -0
  198. package/src/desktop/bundler.ts +271 -0
  199. package/src/desktop/index.ts +18 -0
  200. package/src/desktop/native-modules.ts +289 -0
  201. package/src/index.ts +142 -0
  202. package/src/logging/LogCategories.ts +302 -0
  203. package/src/middleware/aiErrorHandler.ts +278 -0
  204. package/src/middleware/auth.ts +329 -0
  205. package/src/middleware/cors.ts +187 -0
  206. package/src/middleware/errorHandler.ts +103 -0
  207. package/src/middleware/fileUpload.ts +252 -0
  208. package/src/middleware/health.ts +206 -0
  209. package/src/middleware/index.ts +71 -0
  210. package/src/middleware/openapi.ts +305 -0
  211. package/src/middleware/requestLogging.ts +92 -0
  212. package/src/middleware/session.ts +238 -0
  213. package/src/middleware/validation.ts +603 -0
  214. package/src/services/aiService.ts +789 -0
  215. package/src/services/conversationStorage.ts +232 -0
  216. package/src/services/crossPlatformBuffer.ts +341 -0
  217. package/src/services/index.ts +47 -0
  218. package/src/services/networkService.ts +351 -0
  219. package/src/services/queueService.ts +446 -0
  220. package/src/services/settingsService.ts +549 -0
  221. package/src/services/systemMonitor.ts +936 -0
  222. package/src/services/updateService.ts +334 -0
  223. package/src/services/websocketEvents.ts +409 -0
  224. package/src/services/websocketServer.ts +394 -0
  225. package/src/settings/SettingsSchema.ts +664 -0
  226. package/src/testing/TestServer.ts +312 -0
  227. package/src/types/index.ts +154 -0
  228. package/src/utils/appPaths.ts +196 -0
  229. package/src/utils/fs-utils.ts +130 -0
  230. package/src/utils/index.ts +15 -0
  231. package/src/utils/standardConfig.ts +178 -0
  232. package/src/utils/startupBanner.ts +287 -0
  233. package/src/utils/startupLogger.ts +268 -0
  234. package/ui/dist/index.d.mts +1221 -0
  235. package/ui/dist/index.d.ts +1221 -0
  236. package/ui/dist/index.js +73 -0
  237. package/ui/dist/index.js.map +1 -0
  238. package/ui/dist/index.mjs +73 -0
  239. package/ui/dist/index.mjs.map +1 -0
@@ -0,0 +1,175 @@
1
+ /**
2
+ * File Upload Middleware
3
+ * Simple file upload handling for Express
4
+ */
5
+ import multer from "multer";
6
+ import path from "path";
7
+ import { getStorageService } from "../core/storageService.js";
8
+ import { createLogger } from "../core/index.js";
9
+ let logger; // Will be initialized when needed
10
+ function ensureLogger() {
11
+ if (!logger) {
12
+ logger = createLogger("FileUpload");
13
+ }
14
+ return logger;
15
+ }
16
+ /**
17
+ * Create file upload middleware
18
+ */
19
+ export function createFileUpload(config = {}) {
20
+ const { destination = "uploads", maxSize = 10 * 1024 * 1024, // 10MB default
21
+ allowedTypes = [], fieldName = "file", multiple = false, maxCount = 10, } = config;
22
+ // Configure multer storage
23
+ const storage = multer.memoryStorage();
24
+ // Configure multer
25
+ const upload = multer({
26
+ storage,
27
+ limits: {
28
+ fileSize: maxSize,
29
+ files: maxCount,
30
+ },
31
+ fileFilter: (_req, file, cb) => {
32
+ // Check file type if restrictions are set
33
+ if (allowedTypes.length > 0) {
34
+ const ext = path.extname(file.originalname).toLowerCase();
35
+ if (!allowedTypes.includes(ext)) {
36
+ return cb(new Error(`File type ${ext} not allowed`));
37
+ }
38
+ }
39
+ cb(null, true);
40
+ },
41
+ });
42
+ // Return appropriate middleware
43
+ const multerMiddleware = multiple
44
+ ? upload.array(fieldName, maxCount)
45
+ : upload.single(fieldName);
46
+ return async (req, res, next) => {
47
+ multerMiddleware(req, res, async (err) => {
48
+ if (err) {
49
+ ensureLogger().error("Upload error:", err);
50
+ if (err instanceof multer.MulterError) {
51
+ if (err.code === "LIMIT_FILE_SIZE") {
52
+ res.status(400).json({
53
+ success: false,
54
+ error: "File too large",
55
+ message: `File size exceeds maximum of ${maxSize} bytes`,
56
+ });
57
+ return;
58
+ }
59
+ if (err.code === "LIMIT_FILE_COUNT") {
60
+ res.status(400).json({
61
+ success: false,
62
+ error: "Too many files",
63
+ message: `Maximum ${maxCount} files allowed`,
64
+ });
65
+ return;
66
+ }
67
+ }
68
+ res.status(400).json({
69
+ success: false,
70
+ error: "Upload failed",
71
+ message: err.message,
72
+ });
73
+ return;
74
+ }
75
+ // Process uploaded files via StorageService to keep a single path for uploads
76
+ try {
77
+ const storage = getStorageService();
78
+ if (multiple && req.files && Array.isArray(req.files)) {
79
+ // Multiple files
80
+ const uploadedFiles = [];
81
+ for (const file of req.files) {
82
+ const uploaded = await storage.saveUserUpload(file.buffer, file.originalname, {
83
+ allowedTypes,
84
+ maxSize,
85
+ destination,
86
+ });
87
+ uploadedFiles.push({
88
+ ...uploaded,
89
+ mimetype: file.mimetype,
90
+ });
91
+ }
92
+ req.uploadedFiles = uploadedFiles;
93
+ ensureLogger().info(`Uploaded ${uploadedFiles.length} files`);
94
+ }
95
+ else if (req.file) {
96
+ // Single file
97
+ const uploaded = await storage.saveUserUpload(req.file.buffer, req.file.originalname, {
98
+ allowedTypes,
99
+ maxSize,
100
+ destination,
101
+ });
102
+ req.uploadedFile = {
103
+ ...uploaded,
104
+ mimetype: req.file.mimetype,
105
+ };
106
+ ensureLogger().info(`Uploaded file: ${uploaded.filename}`);
107
+ }
108
+ next();
109
+ }
110
+ catch (_error) {
111
+ ensureLogger().error("File processing error:", _error);
112
+ res.status(500).json({
113
+ success: false,
114
+ error: "File processing failed",
115
+ message: _error.message,
116
+ });
117
+ }
118
+ });
119
+ };
120
+ }
121
+ /**
122
+ * Parse form data middleware (for mixed file/data uploads)
123
+ */
124
+ export function parseFormData(fields = []) {
125
+ const upload = multer();
126
+ return upload.fields(fields.map((field) => ({ name: field })));
127
+ }
128
+ /**
129
+ * Download file helper
130
+ */
131
+ export function sendFile(filePath, filename) {
132
+ return (_req, res) => {
133
+ const resolvedPath = path.resolve(filePath);
134
+ const downloadName = filename || path.basename(filePath);
135
+ res.download(resolvedPath, downloadName, (err) => {
136
+ if (err) {
137
+ ensureLogger().error("Download error:", err);
138
+ if (!res.headersSent) {
139
+ res.status(404).json({
140
+ success: false,
141
+ error: "File not found",
142
+ });
143
+ }
144
+ }
145
+ });
146
+ };
147
+ }
148
+ /**
149
+ * Express middleware to clean old temp files periodically
150
+ */
151
+ export function createTempCleaner(tempDir = "./temp", maxAge = 24 * 60 * 60 * 1000, // 24 hours
152
+ interval = 60 * 60 * 1000) {
153
+ const storage = getStorageService();
154
+ // Start periodic cleaning
155
+ setInterval(async () => {
156
+ try {
157
+ const deleted = await storage.cleanTempFiles(maxAge, tempDir);
158
+ if (deleted > 0) {
159
+ ensureLogger().info(`Cleaned ${deleted} old temporary files`);
160
+ }
161
+ }
162
+ catch (_error) {
163
+ ensureLogger().error("Temp file cleanup error:", _error);
164
+ }
165
+ }, interval);
166
+ // Return middleware that does nothing (just starts the cleaner)
167
+ return (_req, _res, next) => next();
168
+ }
169
+ export default {
170
+ createFileUpload,
171
+ parseFormData,
172
+ sendFile,
173
+ createTempCleaner,
174
+ };
175
+ //# sourceMappingURL=fileUpload.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"fileUpload.js","sourceRoot":"","sources":["../../src/middleware/fileUpload.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAGH,OAAO,MAAM,MAAM,QAAQ,CAAC;AAC5B,OAAO,IAAI,MAAM,MAAM,CAAC;AACxB,OAAO,EAAE,iBAAiB,EAAE,MAAM,2BAA2B,CAAC;AAC9D,OAAO,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAEhD,IAAI,MAAW,CAAC,CAAC,kCAAkC;AAEnD,SAAS,YAAY;IACnB,IAAI,CAAC,MAAM,EAAE,CAAC;QACZ,MAAM,GAAG,YAAY,CAAC,YAAY,CAAC,CAAC;IACtC,CAAC;IACD,OAAO,MAAM,CAAC;AAChB,CAAC;AAWD;;GAEG;AACH,MAAM,UAAU,gBAAgB,CAAC,SAA2B,EAAE;IAC5D,MAAM,EACJ,WAAW,GAAG,SAAS,EACvB,OAAO,GAAG,EAAE,GAAG,IAAI,GAAG,IAAI,EAAE,eAAe;IAC3C,YAAY,GAAG,EAAE,EACjB,SAAS,GAAG,MAAM,EAClB,QAAQ,GAAG,KAAK,EAChB,QAAQ,GAAG,EAAE,GACd,GAAG,MAAM,CAAC;IAEX,2BAA2B;IAC3B,MAAM,OAAO,GAAG,MAAM,CAAC,aAAa,EAAE,CAAC;IAEvC,mBAAmB;IACnB,MAAM,MAAM,GAAG,MAAM,CAAC;QACpB,OAAO;QACP,MAAM,EAAE;YACN,QAAQ,EAAE,OAAO;YACjB,KAAK,EAAE,QAAQ;SAChB;QACD,UAAU,EAAE,CAAC,IAAI,EAAE,IAAI,EAAE,EAAE,EAAE,EAAE;YAC7B,0CAA0C;YAC1C,IAAI,YAAY,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBAC5B,MAAM,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,WAAW,EAAE,CAAC;gBAC1D,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC;oBAChC,OAAO,EAAE,CAAC,IAAI,KAAK,CAAC,aAAa,GAAG,cAAc,CAAC,CAAC,CAAC;gBACvD,CAAC;YACH,CAAC;YACD,EAAE,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;QACjB,CAAC;KACF,CAAC,CAAC;IAEH,gCAAgC;IAChC,MAAM,gBAAgB,GAAG,QAAQ;QAC/B,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,SAAS,EAAE,QAAQ,CAAC;QACnC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;IAE7B,OAAO,KAAK,EACV,GAAY,EACZ,GAAa,EACb,IAAkB,EACH,EAAE;QACjB,gBAAgB,CAAC,GAAG,EAAE,GAAG,EAAE,KAAK,EAAE,GAAG,EAAE,EAAE;YACvC,IAAI,GAAG,EAAE,CAAC;gBACR,YAAY,EAAE,CAAC,KAAK,CAAC,eAAe,EAAE,GAAG,CAAC,CAAC;gBAE3C,IAAI,GAAG,YAAY,MAAM,CAAC,WAAW,EAAE,CAAC;oBACtC,IAAI,GAAG,CAAC,IAAI,KAAK,iBAAiB,EAAE,CAAC;wBACnC,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC;4BACnB,OAAO,EAAE,KAAK;4BACd,KAAK,EAAE,gBAAgB;4BACvB,OAAO,EAAE,gCAAgC,OAAO,QAAQ;yBACzD,CAAC,CAAC;wBACH,OAAO;oBACT,CAAC;oBACD,IAAI,GAAG,CAAC,IAAI,KAAK,kBAAkB,EAAE,CAAC;wBACpC,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC;4BACnB,OAAO,EAAE,KAAK;4BACd,KAAK,EAAE,gBAAgB;4BACvB,OAAO,EAAE,WAAW,QAAQ,gBAAgB;yBAC7C,CAAC,CAAC;wBACH,OAAO;oBACT,CAAC;gBACH,CAAC;gBAED,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC;oBACnB,OAAO,EAAE,KAAK;oBACd,KAAK,EAAE,eAAe;oBACtB,OAAO,EAAE,GAAG,CAAC,OAAO;iBACrB,CAAC,CAAC;gBACH,OAAO;YACT,CAAC;YAED,8EAA8E;YAC9E,IAAI,CAAC;gBACH,MAAM,OAAO,GAAG,iBAAiB,EAAE,CAAC;gBAEpC,IAAI,QAAQ,IAAI,GAAG,CAAC,KAAK,IAAI,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC;oBACtD,iBAAiB;oBACjB,MAAM,aAAa,GAAG,EAAE,CAAC;oBAEzB,KAAK,MAAM,IAAI,IAAI,GAAG,CAAC,KAAK,EAAE,CAAC;wBAC7B,MAAM,QAAQ,GAAG,MAAM,OAAO,CAAC,cAAc,CAC3C,IAAI,CAAC,MAAM,EACX,IAAI,CAAC,YAAY,EACjB;4BACE,YAAY;4BACZ,OAAO;4BACP,WAAW;yBACZ,CACF,CAAC;wBACF,aAAa,CAAC,IAAI,CAAC;4BACjB,GAAG,QAAQ;4BACX,QAAQ,EAAE,IAAI,CAAC,QAAQ;yBACxB,CAAC,CAAC;oBACL,CAAC;oBAED,GAAG,CAAC,aAAa,GAAG,aAAa,CAAC;oBAClC,YAAY,EAAE,CAAC,IAAI,CAAC,YAAY,aAAa,CAAC,MAAM,QAAQ,CAAC,CAAC;gBAChE,CAAC;qBAAM,IAAI,GAAG,CAAC,IAAI,EAAE,CAAC;oBACpB,cAAc;oBACd,MAAM,QAAQ,GAAG,MAAM,OAAO,CAAC,cAAc,CAC3C,GAAG,CAAC,IAAI,CAAC,MAAM,EACf,GAAG,CAAC,IAAI,CAAC,YAAY,EACrB;wBACE,YAAY;wBACZ,OAAO;wBACP,WAAW;qBACZ,CACF,CAAC;oBAEF,GAAG,CAAC,YAAY,GAAG;wBACjB,GAAG,QAAQ;wBACX,QAAQ,EAAE,GAAG,CAAC,IAAI,CAAC,QAAQ;qBAC5B,CAAC;oBACF,YAAY,EAAE,CAAC,IAAI,CAAC,kBAAkB,QAAQ,CAAC,QAAQ,EAAE,CAAC,CAAC;gBAC7D,CAAC;gBAED,IAAI,EAAE,CAAC;YACT,CAAC;YAAC,OAAO,MAAW,EAAE,CAAC;gBACrB,YAAY,EAAE,CAAC,KAAK,CAAC,wBAAwB,EAAE,MAAM,CAAC,CAAC;gBACvD,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC;oBACnB,OAAO,EAAE,KAAK;oBACd,KAAK,EAAE,wBAAwB;oBAC/B,OAAO,EAAE,MAAM,CAAC,OAAO;iBACxB,CAAC,CAAC;YACL,CAAC;QACH,CAAC,CAAC,CAAC;IACL,CAAC,CAAC;AACJ,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,aAAa,CAAC,SAAmB,EAAE;IACjD,MAAM,MAAM,GAAG,MAAM,EAAE,CAAC;IACxB,OAAO,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,CAAC;AACjE,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,QAAQ,CAAC,QAAgB,EAAE,QAAiB;IAC1D,OAAO,CAAC,IAAa,EAAE,GAAa,EAAE,EAAE;QACtC,MAAM,YAAY,GAAG,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;QAC5C,MAAM,YAAY,GAAG,QAAQ,IAAI,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;QAEzD,GAAG,CAAC,QAAQ,CAAC,YAAY,EAAE,YAAY,EAAE,CAAC,GAAG,EAAE,EAAE;YAC/C,IAAI,GAAG,EAAE,CAAC;gBACR,YAAY,EAAE,CAAC,KAAK,CAAC,iBAAiB,EAAE,GAAG,CAAC,CAAC;gBAC7C,IAAI,CAAC,GAAG,CAAC,WAAW,EAAE,CAAC;oBACrB,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC;wBACnB,OAAO,EAAE,KAAK;wBACd,KAAK,EAAE,gBAAgB;qBACxB,CAAC,CAAC;gBACL,CAAC;YACH,CAAC;QACH,CAAC,CAAC,CAAC;IACL,CAAC,CAAC;AACJ,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,iBAAiB,CAC/B,UAAkB,QAAQ,EAC1B,SAAiB,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI,EAAE,WAAW;AACjD,WAAmB,EAAE,GAAG,EAAE,GAAG,IAAI;IAEjC,MAAM,OAAO,GAAG,iBAAiB,EAAE,CAAC;IAEpC,0BAA0B;IAC1B,WAAW,CAAC,KAAK,IAAI,EAAE;QACrB,IAAI,CAAC;YACH,MAAM,OAAO,GAAG,MAAM,OAAO,CAAC,cAAc,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;YAC9D,IAAI,OAAO,GAAG,CAAC,EAAE,CAAC;gBAChB,YAAY,EAAE,CAAC,IAAI,CAAC,WAAW,OAAO,sBAAsB,CAAC,CAAC;YAChE,CAAC;QACH,CAAC;QAAC,OAAO,MAAW,EAAE,CAAC;YACrB,YAAY,EAAE,CAAC,KAAK,CAAC,0BAA0B,EAAE,MAAM,CAAC,CAAC;QAC3D,CAAC;IACH,CAAC,EAAE,QAAQ,CAAC,CAAC;IAEb,gEAAgE;IAChE,OAAO,CAAC,IAAa,EAAE,IAAc,EAAE,IAAkB,EAAE,EAAE,CAAC,IAAI,EAAE,CAAC;AACvE,CAAC;AA6BD,eAAe;IACb,gBAAgB;IAChB,aAAa;IACb,QAAQ;IACR,iBAAiB;CAClB,CAAC"}
@@ -0,0 +1,48 @@
1
+ /**
2
+ * Standardized Health Check Middleware
3
+ * Provides consistent health monitoring across all applications
4
+ */
5
+ import { Request, Response, Router } from "express";
6
+ export interface HealthCheckOptions {
7
+ includeDetails?: boolean;
8
+ checkComponents?: () => Promise<ComponentHealth>;
9
+ version?: string;
10
+ serviceName?: string;
11
+ }
12
+ export interface ComponentHealth {
13
+ [key: string]: {
14
+ status: "healthy" | "degraded" | "unhealthy";
15
+ message?: string;
16
+ latency?: number;
17
+ };
18
+ }
19
+ export interface HealthResponse {
20
+ status: "healthy" | "degraded" | "unhealthy";
21
+ timestamp: string;
22
+ version: string;
23
+ uptime: number;
24
+ service?: string;
25
+ components?: ComponentHealth;
26
+ resources?: {
27
+ memory: {
28
+ used: number;
29
+ total: number;
30
+ percentage: number;
31
+ };
32
+ cpu: {
33
+ usage: number;
34
+ cores: number;
35
+ };
36
+ };
37
+ }
38
+ /**
39
+ * Create standardized health check endpoint
40
+ * @param {HealthCheckOptions} options - Health check configuration
41
+ * @returns {Router} Express router with health endpoint
42
+ */
43
+ export declare function createHealthCheck(options?: HealthCheckOptions): Router;
44
+ /**
45
+ * Simple health check middleware for basic use
46
+ */
47
+ export declare function healthCheck(_req: Request, res: Response): void;
48
+ //# sourceMappingURL=health.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"health.d.ts","sourceRoot":"","sources":["../../src/middleware/health.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,SAAS,CAAC;AAGpD,MAAM,WAAW,kBAAkB;IACjC,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,eAAe,CAAC,EAAE,MAAM,OAAO,CAAC,eAAe,CAAC,CAAC;IACjD,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,MAAM,WAAW,eAAe;IAC9B,CAAC,GAAG,EAAE,MAAM,GAAG;QACb,MAAM,EAAE,SAAS,GAAG,UAAU,GAAG,WAAW,CAAC;QAC7C,OAAO,CAAC,EAAE,MAAM,CAAC;QACjB,OAAO,CAAC,EAAE,MAAM,CAAC;KAClB,CAAC;CACH;AAED,MAAM,WAAW,cAAc;IAC7B,MAAM,EAAE,SAAS,GAAG,UAAU,GAAG,WAAW,CAAC;IAC7C,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,UAAU,CAAC,EAAE,eAAe,CAAC;IAC7B,SAAS,CAAC,EAAE;QACV,MAAM,EAAE;YACN,IAAI,EAAE,MAAM,CAAC;YACb,KAAK,EAAE,MAAM,CAAC;YACd,UAAU,EAAE,MAAM,CAAC;SACpB,CAAC;QACF,GAAG,EAAE;YACH,KAAK,EAAE,MAAM,CAAC;YACd,KAAK,EAAE,MAAM,CAAC;SACf,CAAC;KACH,CAAC;CACH;AA4DD;;;;GAIG;AACH,wBAAgB,iBAAiB,CAAC,OAAO,GAAE,kBAAuB,GAAG,MAAM,CAqF1E;AAED;;GAEG;AACH,wBAAgB,WAAW,CAAC,IAAI,EAAE,OAAO,EAAE,GAAG,EAAE,QAAQ,QASvD"}
@@ -0,0 +1,143 @@
1
+ /**
2
+ * Standardized Health Check Middleware
3
+ * Provides consistent health monitoring across all applications
4
+ */
5
+ import { Router } from "express";
6
+ import os from "os";
7
+ /**
8
+ * Get system resource usage
9
+ */
10
+ function getSystemResources() {
11
+ const totalMem = os.totalmem();
12
+ const freeMem = os.freemem();
13
+ const usedMem = totalMem - freeMem;
14
+ // Simplified CPU usage calculation
15
+ const cpus = os.cpus();
16
+ let totalIdle = 0;
17
+ let totalTick = 0;
18
+ cpus.forEach((cpu) => {
19
+ for (const type in cpu.times) {
20
+ totalTick += cpu.times[type];
21
+ }
22
+ totalIdle += cpu.times.idle;
23
+ });
24
+ const idle = totalIdle / cpus.length;
25
+ const total = totalTick / cpus.length;
26
+ const usage = Math.round(100 - (100 * idle) / total);
27
+ return {
28
+ memory: {
29
+ used: usedMem,
30
+ total: totalMem,
31
+ percentage: Math.round((usedMem / totalMem) * 100),
32
+ },
33
+ cpu: {
34
+ usage,
35
+ cores: cpus.length,
36
+ },
37
+ };
38
+ }
39
+ /**
40
+ * Determine overall health status based on components
41
+ */
42
+ function determineOverallHealth(components) {
43
+ if (!components)
44
+ return "healthy";
45
+ const statuses = Object.values(components).map((c) => c.status);
46
+ if (statuses.some((s) => s === "unhealthy")) {
47
+ return "unhealthy";
48
+ }
49
+ if (statuses.some((s) => s === "degraded")) {
50
+ return "degraded";
51
+ }
52
+ return "healthy";
53
+ }
54
+ /**
55
+ * Create standardized health check endpoint
56
+ * @param {HealthCheckOptions} options - Health check configuration
57
+ * @returns {Router} Express router with health endpoint
58
+ */
59
+ export function createHealthCheck(options = {}) {
60
+ const router = Router();
61
+ const { includeDetails = true, checkComponents, version = process.env.npm_package_version || "1.0.0", serviceName, } = options;
62
+ /**
63
+ * GET /health
64
+ * Standard health check endpoint
65
+ */
66
+ router.get("/health", async (_req, res) => {
67
+ try {
68
+ // Check component health if provided
69
+ const components = checkComponents ? await checkComponents() : undefined;
70
+ // Build health response
71
+ const health = {
72
+ status: determineOverallHealth(components),
73
+ timestamp: new Date().toISOString(),
74
+ version,
75
+ uptime: process.uptime(),
76
+ };
77
+ if (serviceName) {
78
+ health.service = serviceName;
79
+ }
80
+ if (includeDetails) {
81
+ health.resources = getSystemResources();
82
+ }
83
+ if (components) {
84
+ health.components = components;
85
+ }
86
+ // Set appropriate status code
87
+ const statusCode = health.status === "healthy"
88
+ ? 200
89
+ : health.status === "degraded"
90
+ ? 200
91
+ : 503;
92
+ res.status(statusCode).json(health);
93
+ }
94
+ catch (_error) {
95
+ res.status(503).json({
96
+ status: "unhealthy",
97
+ timestamp: new Date().toISOString(),
98
+ version,
99
+ error: _error.message,
100
+ });
101
+ }
102
+ });
103
+ /**
104
+ * GET /health/ready
105
+ * Readiness check (for k8s)
106
+ */
107
+ router.get("/health/ready", async (_req, res) => {
108
+ try {
109
+ const components = checkComponents ? await checkComponents() : undefined;
110
+ const status = determineOverallHealth(components);
111
+ if (status === "healthy") {
112
+ res.status(200).json({ ready: true });
113
+ }
114
+ else {
115
+ res.status(503).json({ ready: false, status });
116
+ }
117
+ }
118
+ catch (_error) {
119
+ res.status(503).json({ ready: false });
120
+ }
121
+ });
122
+ /**
123
+ * GET /health/live
124
+ * Liveness check (for k8s)
125
+ */
126
+ router.get("/health/live", (_req, res) => {
127
+ res.status(200).json({ alive: true });
128
+ });
129
+ return router;
130
+ }
131
+ /**
132
+ * Simple health check middleware for basic use
133
+ */
134
+ export function healthCheck(_req, res) {
135
+ const health = {
136
+ status: "healthy",
137
+ timestamp: new Date().toISOString(),
138
+ version: process.env.npm_package_version || "1.0.0",
139
+ uptime: process.uptime(),
140
+ };
141
+ res.json(health);
142
+ }
143
+ //# sourceMappingURL=health.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"health.js","sourceRoot":"","sources":["../../src/middleware/health.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,20 @@
1
+ /**
2
+ * Middleware Module Exports
3
+ */
4
+ export { schemas, validate, validateParams, validateQuery, validateAsync, validateRequest, validateIf, compose, z, zod, } from "./validation.js";
5
+ export { aiErrorHandler } from "./aiErrorHandler.js";
6
+ export { errorHandler, notFoundHandler, asyncHandler, AppError, } from "./errorHandler.js";
7
+ export { createFileUpload, parseFormData, sendFile, createTempCleaner, } from "./fileUpload.js";
8
+ export type { FileUploadConfig } from "./fileUpload.js";
9
+ export { createHealthCheck, healthCheck } from "./health.js";
10
+ export type { HealthCheckOptions, ComponentHealth, HealthResponse, } from "./health.js";
11
+ export { setupOpenAPIDocumentation, generateOpenAPISpec, ApiOperation, } from "./openapi.js";
12
+ export type { OpenAPIConfig } from "./openapi.js";
13
+ export { createAuthMiddleware, createLoginHandler, createLogoutHandler, createAuthCheckHandler, SimpleAuthService, } from "./auth.js";
14
+ export type { AuthConfig } from "./auth.js";
15
+ export { configureSession } from "./session.js";
16
+ export type { SessionConfig as SessionMiddlewareConfig } from "./session.js";
17
+ export { createDynamicCors, createProductionCors, createDevCors, } from "./cors.js";
18
+ export type { DynamicCorsOptions } from "./cors.js";
19
+ export { createRequestLoggingMiddleware, type RequestLoggingOptions, } from "./requestLogging.js";
20
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/middleware/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EACL,OAAO,EACP,QAAQ,EACR,cAAc,EACd,aAAa,EACb,aAAa,EACb,eAAe,EACf,UAAU,EACV,OAAO,EACP,CAAC,EACD,GAAG,GACJ,MAAM,iBAAiB,CAAC;AAEzB,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AACrD,OAAO,EACL,YAAY,EACZ,eAAe,EACf,YAAY,EACZ,QAAQ,GACT,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EACL,gBAAgB,EAChB,aAAa,EACb,QAAQ,EACR,iBAAiB,GAClB,MAAM,iBAAiB,CAAC;AACzB,YAAY,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AACxD,OAAO,EAAE,iBAAiB,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAC7D,YAAY,EACV,kBAAkB,EAClB,eAAe,EACf,cAAc,GACf,MAAM,aAAa,CAAC;AACrB,OAAO,EACL,yBAAyB,EACzB,mBAAmB,EACnB,YAAY,GACb,MAAM,cAAc,CAAC;AACtB,YAAY,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAGlD,OAAO,EACL,oBAAoB,EACpB,kBAAkB,EAClB,mBAAmB,EACnB,sBAAsB,EACtB,iBAAiB,GAClB,MAAM,WAAW,CAAC;AACnB,YAAY,EAAE,UAAU,EAAE,MAAM,WAAW,CAAC;AAG5C,OAAO,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAC;AAChD,YAAY,EAAE,aAAa,IAAI,uBAAuB,EAAE,MAAM,cAAc,CAAC;AAG7E,OAAO,EACL,iBAAiB,EACjB,oBAAoB,EACpB,aAAa,GACd,MAAM,WAAW,CAAC;AACnB,YAAY,EAAE,kBAAkB,EAAE,MAAM,WAAW,CAAC;AAGpD,OAAO,EACL,8BAA8B,EAC9B,KAAK,qBAAqB,GAC3B,MAAM,qBAAqB,CAAC"}
@@ -0,0 +1,18 @@
1
+ /**
2
+ * Middleware Module Exports
3
+ */
4
+ export { schemas, validate, validateParams, validateQuery, validateAsync, validateRequest, validateIf, compose, z, zod, } from "./validation.js";
5
+ export { aiErrorHandler } from "./aiErrorHandler.js";
6
+ export { errorHandler, notFoundHandler, asyncHandler, AppError, } from "./errorHandler.js";
7
+ export { createFileUpload, parseFormData, sendFile, createTempCleaner, } from "./fileUpload.js";
8
+ export { createHealthCheck, healthCheck } from "./health.js";
9
+ export { setupOpenAPIDocumentation, generateOpenAPISpec, ApiOperation, } from "./openapi.js";
10
+ // Auth middleware exports
11
+ export { createAuthMiddleware, createLoginHandler, createLogoutHandler, createAuthCheckHandler, SimpleAuthService, } from "./auth.js";
12
+ // Session middleware exports
13
+ export { configureSession } from "./session.js";
14
+ // CORS middleware exports
15
+ export { createDynamicCors, createProductionCors, createDevCors, } from "./cors.js";
16
+ // Request logging / context
17
+ export { createRequestLoggingMiddleware, } from "./requestLogging.js";
18
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/middleware/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EACL,OAAO,EACP,QAAQ,EACR,cAAc,EACd,aAAa,EACb,aAAa,EACb,eAAe,EACf,UAAU,EACV,OAAO,EACP,CAAC,EACD,GAAG,GACJ,MAAM,iBAAiB,CAAC;AAEzB,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AACrD,OAAO,EACL,YAAY,EACZ,eAAe,EACf,YAAY,EACZ,QAAQ,GACT,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EACL,gBAAgB,EAChB,aAAa,EACb,QAAQ,EACR,iBAAiB,GAClB,MAAM,iBAAiB,CAAC;AAEzB,OAAO,EAAE,iBAAiB,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAM7D,OAAO,EACL,yBAAyB,EACzB,mBAAmB,EACnB,YAAY,GACb,MAAM,cAAc,CAAC;AAGtB,0BAA0B;AAC1B,OAAO,EACL,oBAAoB,EACpB,kBAAkB,EAClB,mBAAmB,EACnB,sBAAsB,EACtB,iBAAiB,GAClB,MAAM,WAAW,CAAC;AAGnB,6BAA6B;AAC7B,OAAO,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAC;AAGhD,0BAA0B;AAC1B,OAAO,EACL,iBAAiB,EACjB,oBAAoB,EACpB,aAAa,GACd,MAAM,WAAW,CAAC;AAGnB,4BAA4B;AAC5B,OAAO,EACL,8BAA8B,GAE/B,MAAM,qBAAqB,CAAC"}
@@ -0,0 +1,64 @@
1
+ /**
2
+ * OpenAPI Documentation Middleware
3
+ * Provides automatic API documentation generation
4
+ */
5
+ import { Express } from "express";
6
+ export interface OpenAPIConfig {
7
+ title: string;
8
+ version: string;
9
+ description?: string;
10
+ servers?: Array<{
11
+ url: string;
12
+ description?: string;
13
+ }>;
14
+ contact?: {
15
+ name?: string;
16
+ email?: string;
17
+ url?: string;
18
+ };
19
+ license?: {
20
+ name: string;
21
+ url?: string;
22
+ };
23
+ tags?: Array<{
24
+ name: string;
25
+ description?: string;
26
+ }>;
27
+ }
28
+ /**
29
+ * Generate OpenAPI specification
30
+ * @param config OpenAPI configuration
31
+ * @param apis Array of file patterns for API routes
32
+ */
33
+ export declare function generateOpenAPISpec(config: OpenAPIConfig, apis: string[]): object;
34
+ /**
35
+ * Setup OpenAPI documentation UI
36
+ * @param app Express application
37
+ * @param config OpenAPI configuration
38
+ * @param apis Array of file patterns for API routes
39
+ * @param path Path to serve documentation (default: /api-docs)
40
+ */
41
+ export declare function setupOpenAPIDocumentation(app: Express, config: OpenAPIConfig, apis: string[], path?: string): void;
42
+ /**
43
+ * Example JSDoc annotation for OpenAPI
44
+ *
45
+ * @swagger
46
+ * /api/resource:
47
+ * get:
48
+ * summary: Get all resources
49
+ * tags: [Resources]
50
+ * responses:
51
+ * 200:
52
+ * description: Successful response
53
+ * content:
54
+ * application/json:
55
+ * schema:
56
+ * $ref: '#/components/schemas/ApiResponse'
57
+ * 500:
58
+ * $ref: '#/components/responses/InternalError'
59
+ */
60
+ /**
61
+ * OpenAPI operation decorator (for future TypeScript decorator support)
62
+ */
63
+ export declare function ApiOperation(operation: any): (target: any, propertyKey: string, descriptor: PropertyDescriptor) => PropertyDescriptor;
64
+ //# sourceMappingURL=openapi.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"openapi.d.ts","sourceRoot":"","sources":["../../src/middleware/openapi.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAIH,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAElC,MAAM,WAAW,aAAa;IAC5B,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;IAChB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,OAAO,CAAC,EAAE,KAAK,CAAC;QACd,GAAG,EAAE,MAAM,CAAC;QACZ,WAAW,CAAC,EAAE,MAAM,CAAC;KACtB,CAAC,CAAC;IACH,OAAO,CAAC,EAAE;QACR,IAAI,CAAC,EAAE,MAAM,CAAC;QACd,KAAK,CAAC,EAAE,MAAM,CAAC;QACf,GAAG,CAAC,EAAE,MAAM,CAAC;KACd,CAAC;IACF,OAAO,CAAC,EAAE;QACR,IAAI,EAAE,MAAM,CAAC;QACb,GAAG,CAAC,EAAE,MAAM,CAAC;KACd,CAAC;IACF,IAAI,CAAC,EAAE,KAAK,CAAC;QACX,IAAI,EAAE,MAAM,CAAC;QACb,WAAW,CAAC,EAAE,MAAM,CAAC;KACtB,CAAC,CAAC;CACJ;AAED;;;;GAIG;AACH,wBAAgB,mBAAmB,CACjC,MAAM,EAAE,aAAa,EACrB,IAAI,EAAE,MAAM,EAAE,GACb,MAAM,CAsLR;AAED;;;;;;GAMG;AACH,wBAAgB,yBAAyB,CACvC,GAAG,EAAE,OAAO,EACZ,MAAM,EAAE,aAAa,EACrB,IAAI,EAAE,MAAM,EAAE,EACd,IAAI,GAAE,MAAoB,GACzB,IAAI,CA+BN;AAED;;;;;;;;;;;;;;;;;GAiBG;AAEH;;GAEG;AACH,wBAAgB,YAAY,CAAC,SAAS,EAAE,GAAG,IAEvC,QAAQ,GAAG,EACX,aAAa,MAAM,EACnB,YAAY,kBAAkB,wBASjC"}