@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,250 @@
1
+ /**
2
+ * Test Server Utility
3
+ * Provides standardized test server management for all SuperDangerous applications
4
+ */
5
+ import { spawn } from "child_process";
6
+ import { execSync } from "child_process";
7
+ import { createLogger } from "../core/index.js";
8
+ let logger; // Will be initialized when needed
9
+ function ensureLogger() {
10
+ if (!logger) {
11
+ logger = createLogger("TestServer");
12
+ }
13
+ return logger;
14
+ }
15
+ export class TestServer {
16
+ process = null;
17
+ config;
18
+ startPromise = null;
19
+ port;
20
+ constructor(config) {
21
+ this.port = config.port;
22
+ this.config = {
23
+ apiBase: `http://localhost:${config.port}`,
24
+ env: {},
25
+ startupTimeout: 30000,
26
+ healthEndpoint: "/api/health",
27
+ silent: true,
28
+ ...config,
29
+ };
30
+ }
31
+ /**
32
+ * Clean up any existing processes on the port
33
+ */
34
+ cleanupPort() {
35
+ try {
36
+ if (process.platform === "win32") {
37
+ // Windows: Find and kill process using the port
38
+ execSync(`netstat -ano | findstr :${this.config.port} | findstr LISTENING`, { stdio: "ignore" });
39
+ const result = execSync(`netstat -ano | findstr :${this.config.port} | findstr LISTENING`).toString();
40
+ const lines = result.split("\n");
41
+ for (const line of lines) {
42
+ const parts = line.trim().split(/\s+/);
43
+ const pid = parts[parts.length - 1];
44
+ if (pid && pid !== "0") {
45
+ execSync(`taskkill /F /PID ${pid}`, { stdio: "ignore" });
46
+ }
47
+ }
48
+ }
49
+ else {
50
+ // Unix-like: Use lsof to find and kill process
51
+ execSync(`lsof -ti:${this.config.port} | xargs kill -9 2>/dev/null || true`, { stdio: "ignore" });
52
+ }
53
+ }
54
+ catch (_error) {
55
+ // Port might already be free, ignore errors
56
+ }
57
+ }
58
+ /**
59
+ * Wait for the server to be ready
60
+ */
61
+ async waitForServer() {
62
+ const startTime = Date.now();
63
+ const { apiBase, healthEndpoint, startupTimeout } = this.config;
64
+ const healthUrl = `${apiBase}${healthEndpoint}`;
65
+ if (!this.config.silent) {
66
+ console.log(`Waiting for server at ${healthUrl}...`);
67
+ }
68
+ while (Date.now() - startTime < startupTimeout) {
69
+ try {
70
+ const controller = new AbortController();
71
+ const timeoutId = setTimeout(() => controller.abort(), 1000);
72
+ const response = await fetch(healthUrl, {
73
+ signal: controller.signal,
74
+ });
75
+ clearTimeout(timeoutId);
76
+ if (response.ok) {
77
+ if (!this.config.silent) {
78
+ console.log(`Server is ready at ${healthUrl}`);
79
+ }
80
+ return; // Server is ready
81
+ }
82
+ }
83
+ catch (_error) {
84
+ // Server not ready yet
85
+ }
86
+ // Check if process has exited
87
+ if (this.process && this.process.exitCode !== null) {
88
+ throw new Error(`Server process exited with code ${this.process.exitCode}`);
89
+ }
90
+ await new Promise((resolve) => setTimeout(resolve, 500));
91
+ }
92
+ throw new Error(`Server failed to start within ${startupTimeout}ms`);
93
+ }
94
+ /**
95
+ * Start the test server
96
+ */
97
+ async start() {
98
+ // Return existing promise if already starting
99
+ if (this.startPromise) {
100
+ return this.startPromise;
101
+ }
102
+ // Already running
103
+ if (this.process) {
104
+ return;
105
+ }
106
+ this.startPromise = this._start();
107
+ return this.startPromise;
108
+ }
109
+ async _start() {
110
+ // Clean up any existing processes
111
+ this.cleanupPort();
112
+ // Determine command based on entry point extension
113
+ const { entryPoint } = this.config;
114
+ const isTypeScript = entryPoint.endsWith(".ts");
115
+ const command = isTypeScript ? "npx" : "node";
116
+ const args = isTypeScript ? ["tsx", entryPoint] : [entryPoint];
117
+ // Start the server process
118
+ this.process = spawn(command, args, {
119
+ env: {
120
+ ...process.env,
121
+ ...this.config.env,
122
+ NODE_ENV: "test",
123
+ PORT: String(this.config.port),
124
+ API_PORT: String(this.config.port),
125
+ SILENT_STARTUP: "1",
126
+ },
127
+ stdio: this.config.silent ? ["ignore", "pipe", "pipe"] : "inherit",
128
+ });
129
+ // Handle process output if not silent
130
+ if (this.config.silent && this.process.stdout && this.process.stderr) {
131
+ this.process.stdout.on("data", (data) => {
132
+ const output = data.toString();
133
+ // Only log errors or important messages
134
+ if (output.includes("ERROR") || output.includes("WARN")) {
135
+ ensureLogger().debug(`Server output: ${output}`);
136
+ }
137
+ });
138
+ this.process.stderr.on("data", (data) => {
139
+ ensureLogger().error(`Server error: ${data}`);
140
+ });
141
+ }
142
+ // Handle process exit
143
+ this.process.on("exit", (code) => {
144
+ if (code !== 0 && code !== null) {
145
+ ensureLogger().error(`Server process exited with code ${code}`);
146
+ }
147
+ });
148
+ // Wait for server to be ready
149
+ await this.waitForServer();
150
+ ensureLogger().debug(`Test server started on port ${this.config.port}`);
151
+ }
152
+ /**
153
+ * Stop the test server
154
+ */
155
+ async stop() {
156
+ if (!this.process) {
157
+ return;
158
+ }
159
+ return new Promise((resolve) => {
160
+ if (!this.process) {
161
+ resolve();
162
+ return;
163
+ }
164
+ const cleanup = () => {
165
+ this.process = null;
166
+ this.startPromise = null;
167
+ resolve();
168
+ };
169
+ // Set a timeout for graceful shutdown
170
+ const killTimeout = setTimeout(() => {
171
+ if (this.process) {
172
+ this.process.kill("SIGKILL");
173
+ }
174
+ cleanup();
175
+ }, 5000);
176
+ this.process.on("exit", () => {
177
+ clearTimeout(killTimeout);
178
+ cleanup();
179
+ });
180
+ // Try graceful shutdown first
181
+ this.process.kill("SIGTERM");
182
+ });
183
+ }
184
+ /**
185
+ * Get the API base URL
186
+ */
187
+ getApiBase() {
188
+ return this.config.apiBase;
189
+ }
190
+ /**
191
+ * Make a request to the test server
192
+ */
193
+ async request(endpoint, options = {}) {
194
+ const url = `${this.config.apiBase}${endpoint}`;
195
+ const response = await fetch(url, {
196
+ ...options,
197
+ headers: {
198
+ "Content-Type": "application/json",
199
+ ...options.headers,
200
+ },
201
+ });
202
+ const text = await response.text();
203
+ let data;
204
+ try {
205
+ data = JSON.parse(text);
206
+ }
207
+ catch {
208
+ data = text;
209
+ }
210
+ return {
211
+ status: response.status,
212
+ ok: response.ok,
213
+ data,
214
+ response,
215
+ };
216
+ }
217
+ }
218
+ /**
219
+ * Create a test server instance
220
+ */
221
+ export function createTestServer(config) {
222
+ return new TestServer(config);
223
+ }
224
+ /**
225
+ * Global test server instance for Jest
226
+ */
227
+ let globalTestServer = null;
228
+ /**
229
+ * Setup function for Jest beforeAll
230
+ */
231
+ export async function setupTestServer(config) {
232
+ globalTestServer = new TestServer(config);
233
+ await globalTestServer.start();
234
+ }
235
+ /**
236
+ * Teardown function for Jest afterAll
237
+ */
238
+ export async function teardownTestServer() {
239
+ if (globalTestServer) {
240
+ await globalTestServer.stop();
241
+ globalTestServer = null;
242
+ }
243
+ }
244
+ /**
245
+ * Get the global test server instance
246
+ */
247
+ export function getTestServer() {
248
+ return globalTestServer;
249
+ }
250
+ //# sourceMappingURL=TestServer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TestServer.js","sourceRoot":"","sources":["../../src/testing/TestServer.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,137 @@
1
+ /**
2
+ * Shared TypeScript Type Definitions
3
+ */
4
+ /**
5
+ * Field validation error detail
6
+ */
7
+ export interface FieldValidationError {
8
+ field: string;
9
+ message: string;
10
+ }
11
+ /**
12
+ * Standardized API response structure for all applications
13
+ * Supports both legacy string errors and new structured errors
14
+ * @template T - The type of the data payload
15
+ */
16
+ export interface ApiResponse<T = any> {
17
+ success: boolean;
18
+ data?: T;
19
+ error?: string | {
20
+ code: string;
21
+ message: string;
22
+ details?: any;
23
+ stack?: string;
24
+ };
25
+ message?: string;
26
+ errors?: FieldValidationError[];
27
+ metadata?: {
28
+ timestamp: string;
29
+ version?: string;
30
+ requestId?: string;
31
+ pagination?: {
32
+ page: number;
33
+ limit: number;
34
+ total: number;
35
+ hasMore: boolean;
36
+ };
37
+ };
38
+ timestamp?: string;
39
+ }
40
+ /**
41
+ * Legacy simple error format (deprecated - for backward compatibility)
42
+ * @deprecated Use structured error object instead
43
+ */
44
+ export interface ApiResponseLegacy<T = any> {
45
+ success: boolean;
46
+ data?: T;
47
+ error?: string;
48
+ message?: string;
49
+ timestamp?: string;
50
+ }
51
+ /**
52
+ * Configuration options
53
+ */
54
+ export interface ConfigOptions {
55
+ configPath?: string;
56
+ defaultConfig?: any;
57
+ watchChanges?: boolean;
58
+ }
59
+ /**
60
+ * Network interface information
61
+ */
62
+ export interface NetworkInterface {
63
+ name: string;
64
+ address: string;
65
+ family: "IPv4" | "IPv6";
66
+ internal: boolean;
67
+ mac?: string;
68
+ }
69
+ /**
70
+ * Update check result
71
+ */
72
+ export interface UpdateCheckResult {
73
+ hasUpdate: boolean;
74
+ currentVersion: string;
75
+ latestVersion?: string;
76
+ releaseUrl?: string;
77
+ releaseNotes?: string;
78
+ publishedAt?: string;
79
+ }
80
+ /**
81
+ * WebSocket client information
82
+ */
83
+ export interface ClientInfo {
84
+ id: string;
85
+ connectedAt: Date;
86
+ lastActivity: Date;
87
+ subscriptions: Set<string>;
88
+ }
89
+ /**
90
+ * Logger interface
91
+ */
92
+ export interface Logger {
93
+ info: (...args: any[]) => void;
94
+ error: (...args: any[]) => void;
95
+ warn: (...args: any[]) => void;
96
+ debug: (...args: any[]) => void;
97
+ }
98
+ /**
99
+ * WebSocket message types
100
+ */
101
+ export interface WebSocketMessage {
102
+ type: string;
103
+ data: any;
104
+ }
105
+ export interface SimulatorUpdateMessage extends WebSocketMessage {
106
+ type: "simulator:started" | "simulator:stopped" | "simulator:data";
107
+ data: Simulator;
108
+ }
109
+ export interface TemplateUpdateMessage extends WebSocketMessage {
110
+ type: "template:created" | "template:updated" | "template:deleted";
111
+ data: Template;
112
+ }
113
+ export interface DataUpdateMessage extends WebSocketMessage {
114
+ type: "data:update";
115
+ data: {
116
+ simulatorId: string;
117
+ values: Record<string, any>;
118
+ };
119
+ }
120
+ export interface Simulator {
121
+ id: string;
122
+ name: string;
123
+ status: string;
124
+ [key: string]: any;
125
+ }
126
+ export interface Template {
127
+ id: string;
128
+ name: string;
129
+ [key: string]: any;
130
+ }
131
+ export interface AppConfig {
132
+ [key: string]: any;
133
+ }
134
+ export interface ValidationError extends Error {
135
+ details?: any[];
136
+ }
137
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/types/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,5 @@
1
+ /**
2
+ * Shared TypeScript Type Definitions
3
+ */
4
+ export {};
5
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/types/index.ts"],"names":[],"mappings":"AAAA;;GAEG"}
@@ -0,0 +1,74 @@
1
+ /**
2
+ * Get the appropriate data directory for the application.
3
+ *
4
+ * In desktop app mode (Electron):
5
+ * - macOS: ~/Library/Application Support/{appId}
6
+ * - Windows: %APPDATA%/{appName}
7
+ * - Linux: ~/.local/share/{appName}
8
+ *
9
+ * In development or web mode:
10
+ * - Uses project root ./data directory
11
+ *
12
+ * @param appId - The application identifier (e.g., 'com.superdangerous.app-name')
13
+ * @param appName - The application name (e.g., 'app-name')
14
+ * @returns The absolute path to the application data directory
15
+ */
16
+ export declare function getAppDataPath(appId: string, appName: string): string;
17
+ /**
18
+ * Get the full path for a data file within the application data directory.
19
+ *
20
+ * @param filename - The name of the file
21
+ * @param appId - The application identifier
22
+ * @param appName - The application name
23
+ * @returns The absolute path to the file
24
+ */
25
+ export declare function getDataFilePath(filename: string, appId: string, appName: string): string;
26
+ /**
27
+ * Get the logs directory path for the application.
28
+ *
29
+ * @param appId - The application identifier
30
+ * @param appName - The application name
31
+ * @returns The absolute path to the logs directory
32
+ */
33
+ export declare function getLogsPath(appId: string, appName: string): string;
34
+ /**
35
+ * Get the configuration directory path for the application.
36
+ *
37
+ * @param appId - The application identifier
38
+ * @param appName - The application name
39
+ * @returns The absolute path to the config directory
40
+ */
41
+ export declare function getConfigPath(appId: string, appName: string): string;
42
+ /**
43
+ * Get the cache directory path for the application.
44
+ *
45
+ * @param appId - The application identifier
46
+ * @param appName - The application name
47
+ * @returns The absolute path to the cache directory
48
+ */
49
+ export declare function getCachePath(appId: string, appName: string): string;
50
+ /**
51
+ * Check if the application is running in desktop mode (Electron).
52
+ *
53
+ * @returns True if running as a desktop app, false otherwise
54
+ */
55
+ export declare function isDesktopApp(): boolean;
56
+ /**
57
+ * Get platform-specific user documents directory.
58
+ *
59
+ * @returns The path to the user's documents directory
60
+ */
61
+ export declare function getDocumentsPath(): string;
62
+ /**
63
+ * Get platform-specific user desktop directory.
64
+ *
65
+ * @returns The path to the user's desktop directory
66
+ */
67
+ export declare function getDesktopPath(): string;
68
+ /**
69
+ * Get platform-specific user downloads directory.
70
+ *
71
+ * @returns The path to the user's downloads directory
72
+ */
73
+ export declare function getDownloadsPath(): string;
74
+ //# sourceMappingURL=appPaths.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"appPaths.d.ts","sourceRoot":"","sources":["../../src/utils/appPaths.ts"],"names":[],"mappings":"AAIA;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,cAAc,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,MAAM,CA+CrE;AAED;;;;;;;GAOG;AACH,wBAAgB,eAAe,CAC7B,QAAQ,EAAE,MAAM,EAChB,KAAK,EAAE,MAAM,EACb,OAAO,EAAE,MAAM,GACd,MAAM,CAER;AAED;;;;;;GAMG;AACH,wBAAgB,WAAW,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,MAAM,CAIlE;AAED;;;;;;GAMG;AACH,wBAAgB,aAAa,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,MAAM,CAIpE;AAED;;;;;;GAMG;AACH,wBAAgB,YAAY,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,MAAM,CAInE;AAED;;;;GAIG;AACH,wBAAgB,YAAY,IAAI,OAAO,CAOtC;AAED;;;;GAIG;AACH,wBAAgB,gBAAgB,IAAI,MAAM,CAazC;AAED;;;;GAIG;AACH,wBAAgB,cAAc,IAAI,MAAM,CAavC;AAED;;;;GAIG;AACH,wBAAgB,gBAAgB,IAAI,MAAM,CAazC"}
@@ -0,0 +1,162 @@
1
+ import os from "os";
2
+ import path from "path";
3
+ import { mkdirSync } from "fs";
4
+ /**
5
+ * Get the appropriate data directory for the application.
6
+ *
7
+ * In desktop app mode (Electron):
8
+ * - macOS: ~/Library/Application Support/{appId}
9
+ * - Windows: %APPDATA%/{appName}
10
+ * - Linux: ~/.local/share/{appName}
11
+ *
12
+ * In development or web mode:
13
+ * - Uses project root ./data directory
14
+ *
15
+ * @param appId - The application identifier (e.g., 'com.superdangerous.app-name')
16
+ * @param appName - The application name (e.g., 'app-name')
17
+ * @returns The absolute path to the application data directory
18
+ */
19
+ export function getAppDataPath(appId, appName) {
20
+ // Check if running in a desktop app environment
21
+ const isElectron = process.versions?.electron || process.env.ELECTRON_RUNNING === "true";
22
+ const isDevelopment = process.env.NODE_ENV === "development";
23
+ // In development mode, always use local paths unless explicitly forced
24
+ const isDesktopApp = !isDevelopment && isElectron;
25
+ if (isDesktopApp) {
26
+ // Use platform-specific app data directories
27
+ const platform = process.platform;
28
+ const homeDir = os.homedir();
29
+ let appDataDir;
30
+ switch (platform) {
31
+ case "darwin": // macOS
32
+ appDataDir = path.join(homeDir, "Library", "Application Support", appId);
33
+ break;
34
+ case "win32": // Windows
35
+ appDataDir = path.join(process.env.APPDATA || path.join(homeDir, "AppData", "Roaming"), appName);
36
+ break;
37
+ default: // Linux and others
38
+ appDataDir = path.join(process.env.XDG_DATA_HOME || path.join(homeDir, ".local", "share"), appName);
39
+ break;
40
+ }
41
+ // Ensure the directory exists
42
+ mkdirSync(appDataDir, { recursive: true });
43
+ return appDataDir;
44
+ }
45
+ // In development or web mode, use the project root ./data directory
46
+ const dataDir = path.join(process.cwd(), "data");
47
+ mkdirSync(dataDir, { recursive: true });
48
+ return dataDir;
49
+ }
50
+ /**
51
+ * Get the full path for a data file within the application data directory.
52
+ *
53
+ * @param filename - The name of the file
54
+ * @param appId - The application identifier
55
+ * @param appName - The application name
56
+ * @returns The absolute path to the file
57
+ */
58
+ export function getDataFilePath(filename, appId, appName) {
59
+ return path.join(getAppDataPath(appId, appName), filename);
60
+ }
61
+ /**
62
+ * Get the logs directory path for the application.
63
+ *
64
+ * @param appId - The application identifier
65
+ * @param appName - The application name
66
+ * @returns The absolute path to the logs directory
67
+ */
68
+ export function getLogsPath(appId, appName) {
69
+ const logsDir = path.join(getAppDataPath(appId, appName), "logs");
70
+ mkdirSync(logsDir, { recursive: true });
71
+ return logsDir;
72
+ }
73
+ /**
74
+ * Get the configuration directory path for the application.
75
+ *
76
+ * @param appId - The application identifier
77
+ * @param appName - The application name
78
+ * @returns The absolute path to the config directory
79
+ */
80
+ export function getConfigPath(appId, appName) {
81
+ const configDir = path.join(getAppDataPath(appId, appName), "config");
82
+ mkdirSync(configDir, { recursive: true });
83
+ return configDir;
84
+ }
85
+ /**
86
+ * Get the cache directory path for the application.
87
+ *
88
+ * @param appId - The application identifier
89
+ * @param appName - The application name
90
+ * @returns The absolute path to the cache directory
91
+ */
92
+ export function getCachePath(appId, appName) {
93
+ const cacheDir = path.join(getAppDataPath(appId, appName), "cache");
94
+ mkdirSync(cacheDir, { recursive: true });
95
+ return cacheDir;
96
+ }
97
+ /**
98
+ * Check if the application is running in desktop mode (Electron).
99
+ *
100
+ * @returns True if running as a desktop app, false otherwise
101
+ */
102
+ export function isDesktopApp() {
103
+ const isDevelopment = process.env.NODE_ENV === "development";
104
+ const isElectron = !!process.versions?.electron || process.env.ELECTRON_RUNNING === "true";
105
+ // In development mode, consider it a desktop app only if explicitly set
106
+ return !isDevelopment && isElectron;
107
+ }
108
+ /**
109
+ * Get platform-specific user documents directory.
110
+ *
111
+ * @returns The path to the user's documents directory
112
+ */
113
+ export function getDocumentsPath() {
114
+ const platform = process.platform;
115
+ const homeDir = os.homedir();
116
+ switch (platform) {
117
+ case "darwin": // macOS
118
+ case "linux":
119
+ return path.join(homeDir, "Documents");
120
+ case "win32": // Windows
121
+ return path.join(homeDir, "Documents");
122
+ default:
123
+ return homeDir;
124
+ }
125
+ }
126
+ /**
127
+ * Get platform-specific user desktop directory.
128
+ *
129
+ * @returns The path to the user's desktop directory
130
+ */
131
+ export function getDesktopPath() {
132
+ const platform = process.platform;
133
+ const homeDir = os.homedir();
134
+ switch (platform) {
135
+ case "darwin": // macOS
136
+ case "linux":
137
+ return path.join(homeDir, "Desktop");
138
+ case "win32": // Windows
139
+ return path.join(homeDir, "Desktop");
140
+ default:
141
+ return homeDir;
142
+ }
143
+ }
144
+ /**
145
+ * Get platform-specific user downloads directory.
146
+ *
147
+ * @returns The path to the user's downloads directory
148
+ */
149
+ export function getDownloadsPath() {
150
+ const platform = process.platform;
151
+ const homeDir = os.homedir();
152
+ switch (platform) {
153
+ case "darwin": // macOS
154
+ case "linux":
155
+ return path.join(homeDir, "Downloads");
156
+ case "win32": // Windows
157
+ return path.join(homeDir, "Downloads");
158
+ default:
159
+ return homeDir;
160
+ }
161
+ }
162
+ //# sourceMappingURL=appPaths.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"appPaths.js","sourceRoot":"","sources":["../../src/utils/appPaths.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,IAAI,CAAC;AACpB,OAAO,IAAI,MAAM,MAAM,CAAC;AACxB,OAAO,EAAE,SAAS,EAAE,MAAM,IAAI,CAAC;AAE/B;;;;;;;;;;;;;;GAcG;AACH,MAAM,UAAU,cAAc,CAAC,KAAa,EAAE,OAAe;IAC3D,gDAAgD;IAChD,MAAM,UAAU,GACd,OAAO,CAAC,QAAQ,EAAE,QAAQ,IAAI,OAAO,CAAC,GAAG,CAAC,gBAAgB,KAAK,MAAM,CAAC;IACxE,MAAM,aAAa,GAAG,OAAO,CAAC,GAAG,CAAC,QAAQ,KAAK,aAAa,CAAC;IAE7D,uEAAuE;IACvE,MAAM,YAAY,GAAG,CAAC,aAAa,IAAI,UAAU,CAAC;IAElD,IAAI,YAAY,EAAE,CAAC;QACjB,6CAA6C;QAC7C,MAAM,QAAQ,GAAG,OAAO,CAAC,QAAQ,CAAC;QAClC,MAAM,OAAO,GAAG,EAAE,CAAC,OAAO,EAAE,CAAC;QAC7B,IAAI,UAAkB,CAAC;QAEvB,QAAQ,QAAQ,EAAE,CAAC;YACjB,KAAK,QAAQ,EAAE,QAAQ;gBACrB,UAAU,GAAG,IAAI,CAAC,IAAI,CACpB,OAAO,EACP,SAAS,EACT,qBAAqB,EACrB,KAAK,CACN,CAAC;gBACF,MAAM;YACR,KAAK,OAAO,EAAE,UAAU;gBACtB,UAAU,GAAG,IAAI,CAAC,IAAI,CACpB,OAAO,CAAC,GAAG,CAAC,OAAO,IAAI,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,SAAS,EAAE,SAAS,CAAC,EAC/D,OAAO,CACR,CAAC;gBACF,MAAM;YACR,SAAS,mBAAmB;gBAC1B,UAAU,GAAG,IAAI,CAAC,IAAI,CACpB,OAAO,CAAC,GAAG,CAAC,aAAa,IAAI,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,QAAQ,EAAE,OAAO,CAAC,EAClE,OAAO,CACR,CAAC;gBACF,MAAM;QACV,CAAC;QAED,8BAA8B;QAC9B,SAAS,CAAC,UAAU,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QAC3C,OAAO,UAAU,CAAC;IACpB,CAAC;IAED,oEAAoE;IACpE,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,MAAM,CAAC,CAAC;IACjD,SAAS,CAAC,OAAO,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IACxC,OAAO,OAAO,CAAC;AACjB,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,UAAU,eAAe,CAC7B,QAAgB,EAChB,KAAa,EACb,OAAe;IAEf,OAAO,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,KAAK,EAAE,OAAO,CAAC,EAAE,QAAQ,CAAC,CAAC;AAC7D,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,WAAW,CAAC,KAAa,EAAE,OAAe;IACxD,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,KAAK,EAAE,OAAO,CAAC,EAAE,MAAM,CAAC,CAAC;IAClE,SAAS,CAAC,OAAO,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IACxC,OAAO,OAAO,CAAC;AACjB,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,aAAa,CAAC,KAAa,EAAE,OAAe;IAC1D,MAAM,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,KAAK,EAAE,OAAO,CAAC,EAAE,QAAQ,CAAC,CAAC;IACtE,SAAS,CAAC,SAAS,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAC1C,OAAO,SAAS,CAAC;AACnB,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,YAAY,CAAC,KAAa,EAAE,OAAe;IACzD,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,KAAK,EAAE,OAAO,CAAC,EAAE,OAAO,CAAC,CAAC;IACpE,SAAS,CAAC,QAAQ,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IACzC,OAAO,QAAQ,CAAC;AAClB,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,YAAY;IAC1B,MAAM,aAAa,GAAG,OAAO,CAAC,GAAG,CAAC,QAAQ,KAAK,aAAa,CAAC;IAC7D,MAAM,UAAU,GACd,CAAC,CAAC,OAAO,CAAC,QAAQ,EAAE,QAAQ,IAAI,OAAO,CAAC,GAAG,CAAC,gBAAgB,KAAK,MAAM,CAAC;IAE1E,wEAAwE;IACxE,OAAO,CAAC,aAAa,IAAI,UAAU,CAAC;AACtC,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,gBAAgB;IAC9B,MAAM,QAAQ,GAAG,OAAO,CAAC,QAAQ,CAAC;IAClC,MAAM,OAAO,GAAG,EAAE,CAAC,OAAO,EAAE,CAAC;IAE7B,QAAQ,QAAQ,EAAE,CAAC;QACjB,KAAK,QAAQ,CAAC,CAAC,QAAQ;QACvB,KAAK,OAAO;YACV,OAAO,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,WAAW,CAAC,CAAC;QACzC,KAAK,OAAO,EAAE,UAAU;YACtB,OAAO,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,WAAW,CAAC,CAAC;QACzC;YACE,OAAO,OAAO,CAAC;IACnB,CAAC;AACH,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,cAAc;IAC5B,MAAM,QAAQ,GAAG,OAAO,CAAC,QAAQ,CAAC;IAClC,MAAM,OAAO,GAAG,EAAE,CAAC,OAAO,EAAE,CAAC;IAE7B,QAAQ,QAAQ,EAAE,CAAC;QACjB,KAAK,QAAQ,CAAC,CAAC,QAAQ;QACvB,KAAK,OAAO;YACV,OAAO,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,SAAS,CAAC,CAAC;QACvC,KAAK,OAAO,EAAE,UAAU;YACtB,OAAO,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,SAAS,CAAC,CAAC;QACvC;YACE,OAAO,OAAO,CAAC;IACnB,CAAC;AACH,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,gBAAgB;IAC9B,MAAM,QAAQ,GAAG,OAAO,CAAC,QAAQ,CAAC;IAClC,MAAM,OAAO,GAAG,EAAE,CAAC,OAAO,EAAE,CAAC;IAE7B,QAAQ,QAAQ,EAAE,CAAC;QACjB,KAAK,QAAQ,CAAC,CAAC,QAAQ;QACvB,KAAK,OAAO;YACV,OAAO,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,WAAW,CAAC,CAAC;QACzC,KAAK,OAAO,EAAE,UAAU;YACtB,OAAO,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,WAAW,CAAC,CAAC;QACzC;YACE,OAAO,OAAO,CAAC;IACnB,CAAC;AACH,CAAC"}