@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,1337 @@
1
+ /**
2
+ * Validation Middleware
3
+ * Request validation using Zod schemas with TypeScript support
4
+ *
5
+ * Features:
6
+ * - Request body, params, and query validation
7
+ * - Detailed field-level error reporting
8
+ * - Custom error messages
9
+ * - Async validation support
10
+ * - Schema composition and reuse
11
+ * - Full TypeScript type inference
12
+ */
13
+ import { z, ZodSchema } from "zod";
14
+ import { Request, Response, NextFunction } from "express";
15
+ import { ApiResponse } from "../types/index.js";
16
+ /**
17
+ * Validation options for middleware
18
+ */
19
+ export interface ValidationOptions {
20
+ abortEarly?: boolean;
21
+ stripUnknown?: boolean;
22
+ convert?: boolean;
23
+ presence?: "optional" | "required" | "forbidden";
24
+ context?: Record<string, any>;
25
+ allowUnknown?: boolean;
26
+ }
27
+ /**
28
+ * Validation schemas for different endpoints
29
+ */
30
+ export declare const schemas: {
31
+ template: z.ZodObject<{
32
+ id: z.ZodString;
33
+ name: z.ZodString;
34
+ description: z.ZodOptional<z.ZodString>;
35
+ manufacturer: z.ZodString;
36
+ model: z.ZodOptional<z.ZodString>;
37
+ protocol: z.ZodDefault<z.ZodEnum<["modbus", "bacnet"]>>;
38
+ metadata: z.ZodOptional<z.ZodObject<{
39
+ manufacturer: z.ZodOptional<z.ZodString>;
40
+ models: z.ZodOptional<z.ZodArray<z.ZodObject<{
41
+ name: z.ZodString;
42
+ variants: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
43
+ }, "strip", z.ZodTypeAny, {
44
+ name: string;
45
+ variants?: string[] | undefined;
46
+ }, {
47
+ name: string;
48
+ variants?: string[] | undefined;
49
+ }>, "many">>;
50
+ category: z.ZodOptional<z.ZodString>;
51
+ tags: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
52
+ source: z.ZodOptional<z.ZodString>;
53
+ lastUpdated: z.ZodOptional<z.ZodString>;
54
+ version: z.ZodOptional<z.ZodString>;
55
+ author: z.ZodOptional<z.ZodString>;
56
+ }, "strip", z.ZodTypeAny, {
57
+ source?: string | undefined;
58
+ category?: string | undefined;
59
+ manufacturer?: string | undefined;
60
+ version?: string | undefined;
61
+ models?: {
62
+ name: string;
63
+ variants?: string[] | undefined;
64
+ }[] | undefined;
65
+ tags?: string[] | undefined;
66
+ lastUpdated?: string | undefined;
67
+ author?: string | undefined;
68
+ }, {
69
+ source?: string | undefined;
70
+ category?: string | undefined;
71
+ manufacturer?: string | undefined;
72
+ version?: string | undefined;
73
+ models?: {
74
+ name: string;
75
+ variants?: string[] | undefined;
76
+ }[] | undefined;
77
+ tags?: string[] | undefined;
78
+ lastUpdated?: string | undefined;
79
+ author?: string | undefined;
80
+ }>>;
81
+ data_points: z.ZodArray<z.ZodObject<{
82
+ name: z.ZodString;
83
+ address: z.ZodNumber;
84
+ type: z.ZodEnum<["coil", "discrete", "holding", "input"]>;
85
+ dataType: z.ZodEnum<["uint16", "int16", "uint32", "int32", "float32", "string", "bool", "bits"]>;
86
+ writable: z.ZodDefault<z.ZodBoolean>;
87
+ unit: z.ZodOptional<z.ZodString>;
88
+ min: z.ZodOptional<z.ZodNumber>;
89
+ max: z.ZodOptional<z.ZodNumber>;
90
+ scaling_factor: z.ZodDefault<z.ZodNumber>;
91
+ description: z.ZodOptional<z.ZodString>;
92
+ simulation_type: z.ZodOptional<z.ZodEnum<["static", "random", "csv", "function"]>>;
93
+ initial_value: z.ZodOptional<z.ZodAny>;
94
+ csv_file: z.ZodOptional<z.ZodString>;
95
+ function_code: z.ZodOptional<z.ZodString>;
96
+ update_interval: z.ZodOptional<z.ZodNumber>;
97
+ }, "strip", z.ZodTypeAny, {
98
+ name: string;
99
+ address: number;
100
+ writable: boolean;
101
+ type: "coil" | "discrete" | "holding" | "input";
102
+ dataType: "string" | "uint16" | "int16" | "uint32" | "int32" | "float32" | "bool" | "bits";
103
+ scaling_factor: number;
104
+ description?: string | undefined;
105
+ unit?: string | undefined;
106
+ min?: number | undefined;
107
+ max?: number | undefined;
108
+ simulation_type?: "function" | "csv" | "static" | "random" | undefined;
109
+ initial_value?: any;
110
+ csv_file?: string | undefined;
111
+ function_code?: string | undefined;
112
+ update_interval?: number | undefined;
113
+ }, {
114
+ name: string;
115
+ address: number;
116
+ type: "coil" | "discrete" | "holding" | "input";
117
+ dataType: "string" | "uint16" | "int16" | "uint32" | "int32" | "float32" | "bool" | "bits";
118
+ description?: string | undefined;
119
+ writable?: boolean | undefined;
120
+ unit?: string | undefined;
121
+ min?: number | undefined;
122
+ max?: number | undefined;
123
+ scaling_factor?: number | undefined;
124
+ simulation_type?: "function" | "csv" | "static" | "random" | undefined;
125
+ initial_value?: any;
126
+ csv_file?: string | undefined;
127
+ function_code?: string | undefined;
128
+ update_interval?: number | undefined;
129
+ }>, "many">;
130
+ devices: z.ZodOptional<z.ZodArray<z.ZodObject<{
131
+ name: z.ZodString;
132
+ device_type: z.ZodString;
133
+ description: z.ZodOptional<z.ZodString>;
134
+ unit_id: z.ZodOptional<z.ZodNumber>;
135
+ data_points: z.ZodOptional<z.ZodArray<z.ZodAny, "many">>;
136
+ }, "strip", z.ZodTypeAny, {
137
+ name: string;
138
+ device_type: string;
139
+ description?: string | undefined;
140
+ data_points?: any[] | undefined;
141
+ unit_id?: number | undefined;
142
+ }, {
143
+ name: string;
144
+ device_type: string;
145
+ description?: string | undefined;
146
+ data_points?: any[] | undefined;
147
+ unit_id?: number | undefined;
148
+ }>, "many">>;
149
+ attachments: z.ZodOptional<z.ZodArray<z.ZodObject<{
150
+ id: z.ZodString;
151
+ name: z.ZodString;
152
+ size: z.ZodNumber;
153
+ mimeType: z.ZodString;
154
+ uploadedAt: z.ZodString;
155
+ }, "strip", z.ZodTypeAny, {
156
+ id: string;
157
+ name: string;
158
+ size: number;
159
+ mimeType: string;
160
+ uploadedAt: string;
161
+ }, {
162
+ id: string;
163
+ name: string;
164
+ size: number;
165
+ mimeType: string;
166
+ uploadedAt: string;
167
+ }>, "many">>;
168
+ intelligent: z.ZodOptional<z.ZodBoolean>;
169
+ state_machine: z.ZodOptional<z.ZodObject<{
170
+ states: z.ZodArray<z.ZodObject<{
171
+ name: z.ZodString;
172
+ values: z.ZodRecord<z.ZodString, z.ZodAny>;
173
+ transitions: z.ZodArray<z.ZodAny, "many">;
174
+ }, "strip", z.ZodTypeAny, {
175
+ name: string;
176
+ values: Record<string, any>;
177
+ transitions: any[];
178
+ }, {
179
+ name: string;
180
+ values: Record<string, any>;
181
+ transitions: any[];
182
+ }>, "many">;
183
+ initial_state: z.ZodString;
184
+ current_state: z.ZodOptional<z.ZodString>;
185
+ }, "strip", z.ZodTypeAny, {
186
+ states: {
187
+ name: string;
188
+ values: Record<string, any>;
189
+ transitions: any[];
190
+ }[];
191
+ initial_state: string;
192
+ current_state?: string | undefined;
193
+ }, {
194
+ states: {
195
+ name: string;
196
+ values: Record<string, any>;
197
+ transitions: any[];
198
+ }[];
199
+ initial_state: string;
200
+ current_state?: string | undefined;
201
+ }>>;
202
+ data_links: z.ZodOptional<z.ZodArray<z.ZodObject<{
203
+ source: z.ZodString;
204
+ targets: z.ZodArray<z.ZodString, "many">;
205
+ transform: z.ZodOptional<z.ZodString>;
206
+ }, "strip", z.ZodTypeAny, {
207
+ source: string;
208
+ targets: string[];
209
+ transform?: string | undefined;
210
+ }, {
211
+ source: string;
212
+ targets: string[];
213
+ transform?: string | undefined;
214
+ }>, "many">>;
215
+ }, "strip", z.ZodTypeAny, {
216
+ id: string;
217
+ name: string;
218
+ manufacturer: string;
219
+ protocol: "modbus" | "bacnet";
220
+ data_points: {
221
+ name: string;
222
+ address: number;
223
+ writable: boolean;
224
+ type: "coil" | "discrete" | "holding" | "input";
225
+ dataType: "string" | "uint16" | "int16" | "uint32" | "int32" | "float32" | "bool" | "bits";
226
+ scaling_factor: number;
227
+ description?: string | undefined;
228
+ unit?: string | undefined;
229
+ min?: number | undefined;
230
+ max?: number | undefined;
231
+ simulation_type?: "function" | "csv" | "static" | "random" | undefined;
232
+ initial_value?: any;
233
+ csv_file?: string | undefined;
234
+ function_code?: string | undefined;
235
+ update_interval?: number | undefined;
236
+ }[];
237
+ description?: string | undefined;
238
+ attachments?: {
239
+ id: string;
240
+ name: string;
241
+ size: number;
242
+ mimeType: string;
243
+ uploadedAt: string;
244
+ }[] | undefined;
245
+ model?: string | undefined;
246
+ metadata?: {
247
+ source?: string | undefined;
248
+ category?: string | undefined;
249
+ manufacturer?: string | undefined;
250
+ version?: string | undefined;
251
+ models?: {
252
+ name: string;
253
+ variants?: string[] | undefined;
254
+ }[] | undefined;
255
+ tags?: string[] | undefined;
256
+ lastUpdated?: string | undefined;
257
+ author?: string | undefined;
258
+ } | undefined;
259
+ devices?: {
260
+ name: string;
261
+ device_type: string;
262
+ description?: string | undefined;
263
+ data_points?: any[] | undefined;
264
+ unit_id?: number | undefined;
265
+ }[] | undefined;
266
+ intelligent?: boolean | undefined;
267
+ state_machine?: {
268
+ states: {
269
+ name: string;
270
+ values: Record<string, any>;
271
+ transitions: any[];
272
+ }[];
273
+ initial_state: string;
274
+ current_state?: string | undefined;
275
+ } | undefined;
276
+ data_links?: {
277
+ source: string;
278
+ targets: string[];
279
+ transform?: string | undefined;
280
+ }[] | undefined;
281
+ }, {
282
+ id: string;
283
+ name: string;
284
+ manufacturer: string;
285
+ data_points: {
286
+ name: string;
287
+ address: number;
288
+ type: "coil" | "discrete" | "holding" | "input";
289
+ dataType: "string" | "uint16" | "int16" | "uint32" | "int32" | "float32" | "bool" | "bits";
290
+ description?: string | undefined;
291
+ writable?: boolean | undefined;
292
+ unit?: string | undefined;
293
+ min?: number | undefined;
294
+ max?: number | undefined;
295
+ scaling_factor?: number | undefined;
296
+ simulation_type?: "function" | "csv" | "static" | "random" | undefined;
297
+ initial_value?: any;
298
+ csv_file?: string | undefined;
299
+ function_code?: string | undefined;
300
+ update_interval?: number | undefined;
301
+ }[];
302
+ description?: string | undefined;
303
+ attachments?: {
304
+ id: string;
305
+ name: string;
306
+ size: number;
307
+ mimeType: string;
308
+ uploadedAt: string;
309
+ }[] | undefined;
310
+ model?: string | undefined;
311
+ metadata?: {
312
+ source?: string | undefined;
313
+ category?: string | undefined;
314
+ manufacturer?: string | undefined;
315
+ version?: string | undefined;
316
+ models?: {
317
+ name: string;
318
+ variants?: string[] | undefined;
319
+ }[] | undefined;
320
+ tags?: string[] | undefined;
321
+ lastUpdated?: string | undefined;
322
+ author?: string | undefined;
323
+ } | undefined;
324
+ protocol?: "modbus" | "bacnet" | undefined;
325
+ devices?: {
326
+ name: string;
327
+ device_type: string;
328
+ description?: string | undefined;
329
+ data_points?: any[] | undefined;
330
+ unit_id?: number | undefined;
331
+ }[] | undefined;
332
+ intelligent?: boolean | undefined;
333
+ state_machine?: {
334
+ states: {
335
+ name: string;
336
+ values: Record<string, any>;
337
+ transitions: any[];
338
+ }[];
339
+ initial_state: string;
340
+ current_state?: string | undefined;
341
+ } | undefined;
342
+ data_links?: {
343
+ source: string;
344
+ targets: string[];
345
+ transform?: string | undefined;
346
+ }[] | undefined;
347
+ }>;
348
+ templateUpdate: z.ZodEffects<z.ZodObject<{
349
+ name: z.ZodOptional<z.ZodString>;
350
+ description: z.ZodOptional<z.ZodString>;
351
+ manufacturer: z.ZodOptional<z.ZodString>;
352
+ model: z.ZodOptional<z.ZodString>;
353
+ metadata: z.ZodOptional<z.ZodAny>;
354
+ data_points: z.ZodOptional<z.ZodArray<z.ZodAny, "many">>;
355
+ devices: z.ZodOptional<z.ZodArray<z.ZodAny, "many">>;
356
+ attachments: z.ZodOptional<z.ZodArray<z.ZodAny, "many">>;
357
+ intelligent: z.ZodOptional<z.ZodBoolean>;
358
+ state_machine: z.ZodOptional<z.ZodAny>;
359
+ data_links: z.ZodOptional<z.ZodArray<z.ZodAny, "many">>;
360
+ }, "strip", z.ZodTypeAny, {
361
+ name?: string | undefined;
362
+ description?: string | undefined;
363
+ attachments?: any[] | undefined;
364
+ model?: string | undefined;
365
+ manufacturer?: string | undefined;
366
+ metadata?: any;
367
+ data_points?: any[] | undefined;
368
+ devices?: any[] | undefined;
369
+ intelligent?: boolean | undefined;
370
+ state_machine?: any;
371
+ data_links?: any[] | undefined;
372
+ }, {
373
+ name?: string | undefined;
374
+ description?: string | undefined;
375
+ attachments?: any[] | undefined;
376
+ model?: string | undefined;
377
+ manufacturer?: string | undefined;
378
+ metadata?: any;
379
+ data_points?: any[] | undefined;
380
+ devices?: any[] | undefined;
381
+ intelligent?: boolean | undefined;
382
+ state_machine?: any;
383
+ data_links?: any[] | undefined;
384
+ }>, {
385
+ name?: string | undefined;
386
+ description?: string | undefined;
387
+ attachments?: any[] | undefined;
388
+ model?: string | undefined;
389
+ manufacturer?: string | undefined;
390
+ metadata?: any;
391
+ data_points?: any[] | undefined;
392
+ devices?: any[] | undefined;
393
+ intelligent?: boolean | undefined;
394
+ state_machine?: any;
395
+ data_links?: any[] | undefined;
396
+ }, {
397
+ name?: string | undefined;
398
+ description?: string | undefined;
399
+ attachments?: any[] | undefined;
400
+ model?: string | undefined;
401
+ manufacturer?: string | undefined;
402
+ metadata?: any;
403
+ data_points?: any[] | undefined;
404
+ devices?: any[] | undefined;
405
+ intelligent?: boolean | undefined;
406
+ state_machine?: any;
407
+ data_links?: any[] | undefined;
408
+ }>;
409
+ simulator: z.ZodObject<{
410
+ id: z.ZodString;
411
+ name: z.ZodString;
412
+ templateId: z.ZodString;
413
+ config: z.ZodObject<{
414
+ port: z.ZodNumber;
415
+ host: z.ZodDefault<z.ZodString>;
416
+ unitId: z.ZodDefault<z.ZodNumber>;
417
+ protocol: z.ZodEnum<["modbus", "bacnet"]>;
418
+ }, "strip", z.ZodTypeAny, {
419
+ port: number;
420
+ host: string;
421
+ protocol: "modbus" | "bacnet";
422
+ unitId: number;
423
+ }, {
424
+ port: number;
425
+ protocol: "modbus" | "bacnet";
426
+ host?: string | undefined;
427
+ unitId?: number | undefined;
428
+ }>;
429
+ autoStart: z.ZodDefault<z.ZodBoolean>;
430
+ }, "strip", z.ZodTypeAny, {
431
+ id: string;
432
+ name: string;
433
+ templateId: string;
434
+ config: {
435
+ port: number;
436
+ host: string;
437
+ protocol: "modbus" | "bacnet";
438
+ unitId: number;
439
+ };
440
+ autoStart: boolean;
441
+ }, {
442
+ id: string;
443
+ name: string;
444
+ templateId: string;
445
+ config: {
446
+ port: number;
447
+ protocol: "modbus" | "bacnet";
448
+ host?: string | undefined;
449
+ unitId?: number | undefined;
450
+ };
451
+ autoStart?: boolean | undefined;
452
+ }>;
453
+ settings: z.ZodObject<{
454
+ api: z.ZodOptional<z.ZodObject<{
455
+ port: z.ZodNumber;
456
+ host: z.ZodString;
457
+ cors: z.ZodObject<{
458
+ enabled: z.ZodBoolean;
459
+ origins: z.ZodArray<z.ZodString, "many">;
460
+ }, "strip", z.ZodTypeAny, {
461
+ enabled: boolean;
462
+ origins: string[];
463
+ }, {
464
+ enabled: boolean;
465
+ origins: string[];
466
+ }>;
467
+ }, "strip", z.ZodTypeAny, {
468
+ cors: {
469
+ enabled: boolean;
470
+ origins: string[];
471
+ };
472
+ port: number;
473
+ host: string;
474
+ }, {
475
+ cors: {
476
+ enabled: boolean;
477
+ origins: string[];
478
+ };
479
+ port: number;
480
+ host: string;
481
+ }>>;
482
+ simulator: z.ZodOptional<z.ZodObject<{
483
+ defaultPort: z.ZodNumber;
484
+ autoRestart: z.ZodBoolean;
485
+ maxInstances: z.ZodNumber;
486
+ }, "strip", z.ZodTypeAny, {
487
+ defaultPort: number;
488
+ autoRestart: boolean;
489
+ maxInstances: number;
490
+ }, {
491
+ defaultPort: number;
492
+ autoRestart: boolean;
493
+ maxInstances: number;
494
+ }>>;
495
+ logging: z.ZodOptional<z.ZodObject<{
496
+ level: z.ZodEnum<["error", "warn", "info", "debug"]>;
497
+ file: z.ZodBoolean;
498
+ console: z.ZodBoolean;
499
+ maxSize: z.ZodString;
500
+ maxFiles: z.ZodString;
501
+ }, "strip", z.ZodTypeAny, {
502
+ level: "error" | "debug" | "warn" | "info";
503
+ maxSize: string;
504
+ maxFiles: string;
505
+ file: boolean;
506
+ console: boolean;
507
+ }, {
508
+ level: "error" | "debug" | "warn" | "info";
509
+ maxSize: string;
510
+ maxFiles: string;
511
+ file: boolean;
512
+ console: boolean;
513
+ }>>;
514
+ ui: z.ZodOptional<z.ZodObject<{
515
+ theme: z.ZodEnum<["light", "dark", "auto"]>;
516
+ language: z.ZodEnum<["en", "es", "fr", "de"]>;
517
+ dateFormat: z.ZodString;
518
+ }, "strip", z.ZodTypeAny, {
519
+ theme: "light" | "dark" | "auto";
520
+ language: "en" | "es" | "fr" | "de";
521
+ dateFormat: string;
522
+ }, {
523
+ theme: "light" | "dark" | "auto";
524
+ language: "en" | "es" | "fr" | "de";
525
+ dateFormat: string;
526
+ }>>;
527
+ }, "strip", z.ZodTypeAny, {
528
+ logging?: {
529
+ level: "error" | "debug" | "warn" | "info";
530
+ maxSize: string;
531
+ maxFiles: string;
532
+ file: boolean;
533
+ console: boolean;
534
+ } | undefined;
535
+ api?: {
536
+ cors: {
537
+ enabled: boolean;
538
+ origins: string[];
539
+ };
540
+ port: number;
541
+ host: string;
542
+ } | undefined;
543
+ simulator?: {
544
+ defaultPort: number;
545
+ autoRestart: boolean;
546
+ maxInstances: number;
547
+ } | undefined;
548
+ ui?: {
549
+ theme: "light" | "dark" | "auto";
550
+ language: "en" | "es" | "fr" | "de";
551
+ dateFormat: string;
552
+ } | undefined;
553
+ }, {
554
+ logging?: {
555
+ level: "error" | "debug" | "warn" | "info";
556
+ maxSize: string;
557
+ maxFiles: string;
558
+ file: boolean;
559
+ console: boolean;
560
+ } | undefined;
561
+ api?: {
562
+ cors: {
563
+ enabled: boolean;
564
+ origins: string[];
565
+ };
566
+ port: number;
567
+ host: string;
568
+ } | undefined;
569
+ simulator?: {
570
+ defaultPort: number;
571
+ autoRestart: boolean;
572
+ maxInstances: number;
573
+ } | undefined;
574
+ ui?: {
575
+ theme: "light" | "dark" | "auto";
576
+ language: "en" | "es" | "fr" | "de";
577
+ dateFormat: string;
578
+ } | undefined;
579
+ }>;
580
+ id: z.ZodObject<{
581
+ id: z.ZodString;
582
+ }, "strip", z.ZodTypeAny, {
583
+ id: string;
584
+ }, {
585
+ id: string;
586
+ }>;
587
+ pagination: z.ZodObject<{
588
+ page: z.ZodDefault<z.ZodNumber>;
589
+ limit: z.ZodDefault<z.ZodNumber>;
590
+ sort: z.ZodOptional<z.ZodString>;
591
+ order: z.ZodDefault<z.ZodEnum<["asc", "desc"]>>;
592
+ }, "strip", z.ZodTypeAny, {
593
+ page: number;
594
+ limit: number;
595
+ order: "asc" | "desc";
596
+ sort?: string | undefined;
597
+ }, {
598
+ sort?: string | undefined;
599
+ page?: number | undefined;
600
+ limit?: number | undefined;
601
+ order?: "asc" | "desc" | undefined;
602
+ }>;
603
+ filter: z.ZodObject<{
604
+ search: z.ZodOptional<z.ZodString>;
605
+ tags: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
606
+ category: z.ZodOptional<z.ZodString>;
607
+ protocol: z.ZodOptional<z.ZodEnum<["modbus", "bacnet"]>>;
608
+ status: z.ZodOptional<z.ZodEnum<["active", "inactive", "error"]>>;
609
+ }, "strip", z.ZodTypeAny, {
610
+ status?: "error" | "active" | "inactive" | undefined;
611
+ search?: string | undefined;
612
+ category?: string | undefined;
613
+ protocol?: "modbus" | "bacnet" | undefined;
614
+ tags?: string[] | undefined;
615
+ }, {
616
+ status?: "error" | "active" | "inactive" | undefined;
617
+ search?: string | undefined;
618
+ category?: string | undefined;
619
+ protocol?: "modbus" | "bacnet" | undefined;
620
+ tags?: string[] | undefined;
621
+ }>;
622
+ };
623
+ /**
624
+ * Create a validation middleware for request body
625
+ */
626
+ export declare function validate<T extends ZodSchema>(schema: T, options?: ValidationOptions): (req: Request, res: Response<ApiResponse<any>>, next: NextFunction) => any;
627
+ /**
628
+ * Validate request parameters
629
+ */
630
+ export declare function validateParams<T extends ZodSchema>(schema: T, options?: ValidationOptions): (req: Request, res: Response<ApiResponse<any>>, next: NextFunction) => any;
631
+ /**
632
+ * Validate query parameters
633
+ */
634
+ export declare function validateQuery<T extends ZodSchema>(schema: T, options?: ValidationOptions): (req: Request, res: Response<ApiResponse<any>>, next: NextFunction) => any;
635
+ /**
636
+ * Combined validation for body, params, and query
637
+ */
638
+ export declare function validateRequest<T extends {
639
+ body?: ZodSchema;
640
+ params?: ZodSchema;
641
+ query?: ZodSchema;
642
+ }>(schemas: T, options?: ValidationOptions): (req: Request, res: Response<ApiResponse<any>>, next: NextFunction) => any;
643
+ /**
644
+ * Async validation wrapper for custom validation logic
645
+ */
646
+ export declare function validateAsync(validationFn: (req: Request) => Promise<any>): (req: Request, res: Response<ApiResponse<any>>, next: NextFunction) => Promise<void>;
647
+ /**
648
+ * Create a conditional validation middleware
649
+ */
650
+ export declare function validateIf<T extends ZodSchema>(condition: (req: Request) => boolean, schema: T, options?: ValidationOptions): (req: Request, res: Response<ApiResponse<any>>, next: NextFunction) => any;
651
+ /**
652
+ * Schema composition helpers using Zod's built-in methods
653
+ */
654
+ export declare const compose: {
655
+ /**
656
+ * Merge multiple schemas
657
+ */
658
+ merge: <T extends ZodSchema, U extends ZodSchema>(schema1: T, schema2: U) => z.ZodObject<z.objectUtil.extendShape<any, (U & z.ZodObject<any, any, any, any, any>)["shape"]>, (U & z.ZodObject<any, any, any, any, any>)["_def"]["unknownKeys"], (U & z.ZodObject<any, any, any, any, any>)["_def"]["catchall"], z.objectOutputType<z.objectUtil.extendShape<any, (U & z.ZodObject<any, any, any, any, any>)["shape"]>, (U & z.ZodObject<any, any, any, any, any>)["_def"]["catchall"], (U & z.ZodObject<any, any, any, any, any>)["_def"]["unknownKeys"]>, z.objectInputType<z.objectUtil.extendShape<any, (U & z.ZodObject<any, any, any, any, any>)["shape"]>, (U & z.ZodObject<any, any, any, any, any>)["_def"]["catchall"], (U & z.ZodObject<any, any, any, any, any>)["_def"]["unknownKeys"]>> | z.ZodIntersection<T, U>;
659
+ /**
660
+ * Make all fields optional
661
+ */
662
+ partial: <T extends z.ZodObject<any>>(schema: T) => z.ZodObject<{
663
+ [x: string]: z.ZodOptional<any>;
664
+ }, z.UnknownKeysParam, z.ZodTypeAny, {
665
+ [x: string]: any;
666
+ }, {
667
+ [x: string]: any;
668
+ }>;
669
+ /**
670
+ * Make specific fields required
671
+ */
672
+ require: <T extends z.ZodObject<any>>(schema: T, fields: Array<keyof T["shape"]>) => z.ZodObject<{} & {
673
+ [x: string]: any;
674
+ }, z.UnknownKeysParam, z.ZodTypeAny, {
675
+ [x: string]: any;
676
+ }, {
677
+ [x: string]: any;
678
+ }>;
679
+ /**
680
+ * Pick specific fields from a schema
681
+ */
682
+ pick: <T extends z.ZodObject<any>>(schema: T, fields: Array<keyof T["shape"]>) => z.ZodObject<any, "strip", z.ZodTypeAny, {
683
+ [x: string]: any;
684
+ }, {
685
+ [x: string]: any;
686
+ }>;
687
+ /**
688
+ * Omit specific fields from a schema
689
+ */
690
+ omit: <T extends z.ZodObject<any>>(schema: T, fields: Array<keyof T["shape"]>) => z.ZodObject<Omit<any, string | number | symbol>, z.UnknownKeysParam, z.ZodTypeAny, {}, {}>;
691
+ };
692
+ /**
693
+ * Export Zod for direct use
694
+ */
695
+ export { z, z as zod };
696
+ declare const _default: {
697
+ validate: typeof validate;
698
+ validateParams: typeof validateParams;
699
+ validateQuery: typeof validateQuery;
700
+ validateRequest: typeof validateRequest;
701
+ validateAsync: typeof validateAsync;
702
+ validateIf: typeof validateIf;
703
+ schemas: {
704
+ template: z.ZodObject<{
705
+ id: z.ZodString;
706
+ name: z.ZodString;
707
+ description: z.ZodOptional<z.ZodString>;
708
+ manufacturer: z.ZodString;
709
+ model: z.ZodOptional<z.ZodString>;
710
+ protocol: z.ZodDefault<z.ZodEnum<["modbus", "bacnet"]>>;
711
+ metadata: z.ZodOptional<z.ZodObject<{
712
+ manufacturer: z.ZodOptional<z.ZodString>;
713
+ models: z.ZodOptional<z.ZodArray<z.ZodObject<{
714
+ name: z.ZodString;
715
+ variants: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
716
+ }, "strip", z.ZodTypeAny, {
717
+ name: string;
718
+ variants?: string[] | undefined;
719
+ }, {
720
+ name: string;
721
+ variants?: string[] | undefined;
722
+ }>, "many">>;
723
+ category: z.ZodOptional<z.ZodString>;
724
+ tags: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
725
+ source: z.ZodOptional<z.ZodString>;
726
+ lastUpdated: z.ZodOptional<z.ZodString>;
727
+ version: z.ZodOptional<z.ZodString>;
728
+ author: z.ZodOptional<z.ZodString>;
729
+ }, "strip", z.ZodTypeAny, {
730
+ source?: string | undefined;
731
+ category?: string | undefined;
732
+ manufacturer?: string | undefined;
733
+ version?: string | undefined;
734
+ models?: {
735
+ name: string;
736
+ variants?: string[] | undefined;
737
+ }[] | undefined;
738
+ tags?: string[] | undefined;
739
+ lastUpdated?: string | undefined;
740
+ author?: string | undefined;
741
+ }, {
742
+ source?: string | undefined;
743
+ category?: string | undefined;
744
+ manufacturer?: string | undefined;
745
+ version?: string | undefined;
746
+ models?: {
747
+ name: string;
748
+ variants?: string[] | undefined;
749
+ }[] | undefined;
750
+ tags?: string[] | undefined;
751
+ lastUpdated?: string | undefined;
752
+ author?: string | undefined;
753
+ }>>;
754
+ data_points: z.ZodArray<z.ZodObject<{
755
+ name: z.ZodString;
756
+ address: z.ZodNumber;
757
+ type: z.ZodEnum<["coil", "discrete", "holding", "input"]>;
758
+ dataType: z.ZodEnum<["uint16", "int16", "uint32", "int32", "float32", "string", "bool", "bits"]>;
759
+ writable: z.ZodDefault<z.ZodBoolean>;
760
+ unit: z.ZodOptional<z.ZodString>;
761
+ min: z.ZodOptional<z.ZodNumber>;
762
+ max: z.ZodOptional<z.ZodNumber>;
763
+ scaling_factor: z.ZodDefault<z.ZodNumber>;
764
+ description: z.ZodOptional<z.ZodString>;
765
+ simulation_type: z.ZodOptional<z.ZodEnum<["static", "random", "csv", "function"]>>;
766
+ initial_value: z.ZodOptional<z.ZodAny>;
767
+ csv_file: z.ZodOptional<z.ZodString>;
768
+ function_code: z.ZodOptional<z.ZodString>;
769
+ update_interval: z.ZodOptional<z.ZodNumber>;
770
+ }, "strip", z.ZodTypeAny, {
771
+ name: string;
772
+ address: number;
773
+ writable: boolean;
774
+ type: "coil" | "discrete" | "holding" | "input";
775
+ dataType: "string" | "uint16" | "int16" | "uint32" | "int32" | "float32" | "bool" | "bits";
776
+ scaling_factor: number;
777
+ description?: string | undefined;
778
+ unit?: string | undefined;
779
+ min?: number | undefined;
780
+ max?: number | undefined;
781
+ simulation_type?: "function" | "csv" | "static" | "random" | undefined;
782
+ initial_value?: any;
783
+ csv_file?: string | undefined;
784
+ function_code?: string | undefined;
785
+ update_interval?: number | undefined;
786
+ }, {
787
+ name: string;
788
+ address: number;
789
+ type: "coil" | "discrete" | "holding" | "input";
790
+ dataType: "string" | "uint16" | "int16" | "uint32" | "int32" | "float32" | "bool" | "bits";
791
+ description?: string | undefined;
792
+ writable?: boolean | undefined;
793
+ unit?: string | undefined;
794
+ min?: number | undefined;
795
+ max?: number | undefined;
796
+ scaling_factor?: number | undefined;
797
+ simulation_type?: "function" | "csv" | "static" | "random" | undefined;
798
+ initial_value?: any;
799
+ csv_file?: string | undefined;
800
+ function_code?: string | undefined;
801
+ update_interval?: number | undefined;
802
+ }>, "many">;
803
+ devices: z.ZodOptional<z.ZodArray<z.ZodObject<{
804
+ name: z.ZodString;
805
+ device_type: z.ZodString;
806
+ description: z.ZodOptional<z.ZodString>;
807
+ unit_id: z.ZodOptional<z.ZodNumber>;
808
+ data_points: z.ZodOptional<z.ZodArray<z.ZodAny, "many">>;
809
+ }, "strip", z.ZodTypeAny, {
810
+ name: string;
811
+ device_type: string;
812
+ description?: string | undefined;
813
+ data_points?: any[] | undefined;
814
+ unit_id?: number | undefined;
815
+ }, {
816
+ name: string;
817
+ device_type: string;
818
+ description?: string | undefined;
819
+ data_points?: any[] | undefined;
820
+ unit_id?: number | undefined;
821
+ }>, "many">>;
822
+ attachments: z.ZodOptional<z.ZodArray<z.ZodObject<{
823
+ id: z.ZodString;
824
+ name: z.ZodString;
825
+ size: z.ZodNumber;
826
+ mimeType: z.ZodString;
827
+ uploadedAt: z.ZodString;
828
+ }, "strip", z.ZodTypeAny, {
829
+ id: string;
830
+ name: string;
831
+ size: number;
832
+ mimeType: string;
833
+ uploadedAt: string;
834
+ }, {
835
+ id: string;
836
+ name: string;
837
+ size: number;
838
+ mimeType: string;
839
+ uploadedAt: string;
840
+ }>, "many">>;
841
+ intelligent: z.ZodOptional<z.ZodBoolean>;
842
+ state_machine: z.ZodOptional<z.ZodObject<{
843
+ states: z.ZodArray<z.ZodObject<{
844
+ name: z.ZodString;
845
+ values: z.ZodRecord<z.ZodString, z.ZodAny>;
846
+ transitions: z.ZodArray<z.ZodAny, "many">;
847
+ }, "strip", z.ZodTypeAny, {
848
+ name: string;
849
+ values: Record<string, any>;
850
+ transitions: any[];
851
+ }, {
852
+ name: string;
853
+ values: Record<string, any>;
854
+ transitions: any[];
855
+ }>, "many">;
856
+ initial_state: z.ZodString;
857
+ current_state: z.ZodOptional<z.ZodString>;
858
+ }, "strip", z.ZodTypeAny, {
859
+ states: {
860
+ name: string;
861
+ values: Record<string, any>;
862
+ transitions: any[];
863
+ }[];
864
+ initial_state: string;
865
+ current_state?: string | undefined;
866
+ }, {
867
+ states: {
868
+ name: string;
869
+ values: Record<string, any>;
870
+ transitions: any[];
871
+ }[];
872
+ initial_state: string;
873
+ current_state?: string | undefined;
874
+ }>>;
875
+ data_links: z.ZodOptional<z.ZodArray<z.ZodObject<{
876
+ source: z.ZodString;
877
+ targets: z.ZodArray<z.ZodString, "many">;
878
+ transform: z.ZodOptional<z.ZodString>;
879
+ }, "strip", z.ZodTypeAny, {
880
+ source: string;
881
+ targets: string[];
882
+ transform?: string | undefined;
883
+ }, {
884
+ source: string;
885
+ targets: string[];
886
+ transform?: string | undefined;
887
+ }>, "many">>;
888
+ }, "strip", z.ZodTypeAny, {
889
+ id: string;
890
+ name: string;
891
+ manufacturer: string;
892
+ protocol: "modbus" | "bacnet";
893
+ data_points: {
894
+ name: string;
895
+ address: number;
896
+ writable: boolean;
897
+ type: "coil" | "discrete" | "holding" | "input";
898
+ dataType: "string" | "uint16" | "int16" | "uint32" | "int32" | "float32" | "bool" | "bits";
899
+ scaling_factor: number;
900
+ description?: string | undefined;
901
+ unit?: string | undefined;
902
+ min?: number | undefined;
903
+ max?: number | undefined;
904
+ simulation_type?: "function" | "csv" | "static" | "random" | undefined;
905
+ initial_value?: any;
906
+ csv_file?: string | undefined;
907
+ function_code?: string | undefined;
908
+ update_interval?: number | undefined;
909
+ }[];
910
+ description?: string | undefined;
911
+ attachments?: {
912
+ id: string;
913
+ name: string;
914
+ size: number;
915
+ mimeType: string;
916
+ uploadedAt: string;
917
+ }[] | undefined;
918
+ model?: string | undefined;
919
+ metadata?: {
920
+ source?: string | undefined;
921
+ category?: string | undefined;
922
+ manufacturer?: string | undefined;
923
+ version?: string | undefined;
924
+ models?: {
925
+ name: string;
926
+ variants?: string[] | undefined;
927
+ }[] | undefined;
928
+ tags?: string[] | undefined;
929
+ lastUpdated?: string | undefined;
930
+ author?: string | undefined;
931
+ } | undefined;
932
+ devices?: {
933
+ name: string;
934
+ device_type: string;
935
+ description?: string | undefined;
936
+ data_points?: any[] | undefined;
937
+ unit_id?: number | undefined;
938
+ }[] | undefined;
939
+ intelligent?: boolean | undefined;
940
+ state_machine?: {
941
+ states: {
942
+ name: string;
943
+ values: Record<string, any>;
944
+ transitions: any[];
945
+ }[];
946
+ initial_state: string;
947
+ current_state?: string | undefined;
948
+ } | undefined;
949
+ data_links?: {
950
+ source: string;
951
+ targets: string[];
952
+ transform?: string | undefined;
953
+ }[] | undefined;
954
+ }, {
955
+ id: string;
956
+ name: string;
957
+ manufacturer: string;
958
+ data_points: {
959
+ name: string;
960
+ address: number;
961
+ type: "coil" | "discrete" | "holding" | "input";
962
+ dataType: "string" | "uint16" | "int16" | "uint32" | "int32" | "float32" | "bool" | "bits";
963
+ description?: string | undefined;
964
+ writable?: boolean | undefined;
965
+ unit?: string | undefined;
966
+ min?: number | undefined;
967
+ max?: number | undefined;
968
+ scaling_factor?: number | undefined;
969
+ simulation_type?: "function" | "csv" | "static" | "random" | undefined;
970
+ initial_value?: any;
971
+ csv_file?: string | undefined;
972
+ function_code?: string | undefined;
973
+ update_interval?: number | undefined;
974
+ }[];
975
+ description?: string | undefined;
976
+ attachments?: {
977
+ id: string;
978
+ name: string;
979
+ size: number;
980
+ mimeType: string;
981
+ uploadedAt: string;
982
+ }[] | undefined;
983
+ model?: string | undefined;
984
+ metadata?: {
985
+ source?: string | undefined;
986
+ category?: string | undefined;
987
+ manufacturer?: string | undefined;
988
+ version?: string | undefined;
989
+ models?: {
990
+ name: string;
991
+ variants?: string[] | undefined;
992
+ }[] | undefined;
993
+ tags?: string[] | undefined;
994
+ lastUpdated?: string | undefined;
995
+ author?: string | undefined;
996
+ } | undefined;
997
+ protocol?: "modbus" | "bacnet" | undefined;
998
+ devices?: {
999
+ name: string;
1000
+ device_type: string;
1001
+ description?: string | undefined;
1002
+ data_points?: any[] | undefined;
1003
+ unit_id?: number | undefined;
1004
+ }[] | undefined;
1005
+ intelligent?: boolean | undefined;
1006
+ state_machine?: {
1007
+ states: {
1008
+ name: string;
1009
+ values: Record<string, any>;
1010
+ transitions: any[];
1011
+ }[];
1012
+ initial_state: string;
1013
+ current_state?: string | undefined;
1014
+ } | undefined;
1015
+ data_links?: {
1016
+ source: string;
1017
+ targets: string[];
1018
+ transform?: string | undefined;
1019
+ }[] | undefined;
1020
+ }>;
1021
+ templateUpdate: z.ZodEffects<z.ZodObject<{
1022
+ name: z.ZodOptional<z.ZodString>;
1023
+ description: z.ZodOptional<z.ZodString>;
1024
+ manufacturer: z.ZodOptional<z.ZodString>;
1025
+ model: z.ZodOptional<z.ZodString>;
1026
+ metadata: z.ZodOptional<z.ZodAny>;
1027
+ data_points: z.ZodOptional<z.ZodArray<z.ZodAny, "many">>;
1028
+ devices: z.ZodOptional<z.ZodArray<z.ZodAny, "many">>;
1029
+ attachments: z.ZodOptional<z.ZodArray<z.ZodAny, "many">>;
1030
+ intelligent: z.ZodOptional<z.ZodBoolean>;
1031
+ state_machine: z.ZodOptional<z.ZodAny>;
1032
+ data_links: z.ZodOptional<z.ZodArray<z.ZodAny, "many">>;
1033
+ }, "strip", z.ZodTypeAny, {
1034
+ name?: string | undefined;
1035
+ description?: string | undefined;
1036
+ attachments?: any[] | undefined;
1037
+ model?: string | undefined;
1038
+ manufacturer?: string | undefined;
1039
+ metadata?: any;
1040
+ data_points?: any[] | undefined;
1041
+ devices?: any[] | undefined;
1042
+ intelligent?: boolean | undefined;
1043
+ state_machine?: any;
1044
+ data_links?: any[] | undefined;
1045
+ }, {
1046
+ name?: string | undefined;
1047
+ description?: string | undefined;
1048
+ attachments?: any[] | undefined;
1049
+ model?: string | undefined;
1050
+ manufacturer?: string | undefined;
1051
+ metadata?: any;
1052
+ data_points?: any[] | undefined;
1053
+ devices?: any[] | undefined;
1054
+ intelligent?: boolean | undefined;
1055
+ state_machine?: any;
1056
+ data_links?: any[] | undefined;
1057
+ }>, {
1058
+ name?: string | undefined;
1059
+ description?: string | undefined;
1060
+ attachments?: any[] | undefined;
1061
+ model?: string | undefined;
1062
+ manufacturer?: string | undefined;
1063
+ metadata?: any;
1064
+ data_points?: any[] | undefined;
1065
+ devices?: any[] | undefined;
1066
+ intelligent?: boolean | undefined;
1067
+ state_machine?: any;
1068
+ data_links?: any[] | undefined;
1069
+ }, {
1070
+ name?: string | undefined;
1071
+ description?: string | undefined;
1072
+ attachments?: any[] | undefined;
1073
+ model?: string | undefined;
1074
+ manufacturer?: string | undefined;
1075
+ metadata?: any;
1076
+ data_points?: any[] | undefined;
1077
+ devices?: any[] | undefined;
1078
+ intelligent?: boolean | undefined;
1079
+ state_machine?: any;
1080
+ data_links?: any[] | undefined;
1081
+ }>;
1082
+ simulator: z.ZodObject<{
1083
+ id: z.ZodString;
1084
+ name: z.ZodString;
1085
+ templateId: z.ZodString;
1086
+ config: z.ZodObject<{
1087
+ port: z.ZodNumber;
1088
+ host: z.ZodDefault<z.ZodString>;
1089
+ unitId: z.ZodDefault<z.ZodNumber>;
1090
+ protocol: z.ZodEnum<["modbus", "bacnet"]>;
1091
+ }, "strip", z.ZodTypeAny, {
1092
+ port: number;
1093
+ host: string;
1094
+ protocol: "modbus" | "bacnet";
1095
+ unitId: number;
1096
+ }, {
1097
+ port: number;
1098
+ protocol: "modbus" | "bacnet";
1099
+ host?: string | undefined;
1100
+ unitId?: number | undefined;
1101
+ }>;
1102
+ autoStart: z.ZodDefault<z.ZodBoolean>;
1103
+ }, "strip", z.ZodTypeAny, {
1104
+ id: string;
1105
+ name: string;
1106
+ templateId: string;
1107
+ config: {
1108
+ port: number;
1109
+ host: string;
1110
+ protocol: "modbus" | "bacnet";
1111
+ unitId: number;
1112
+ };
1113
+ autoStart: boolean;
1114
+ }, {
1115
+ id: string;
1116
+ name: string;
1117
+ templateId: string;
1118
+ config: {
1119
+ port: number;
1120
+ protocol: "modbus" | "bacnet";
1121
+ host?: string | undefined;
1122
+ unitId?: number | undefined;
1123
+ };
1124
+ autoStart?: boolean | undefined;
1125
+ }>;
1126
+ settings: z.ZodObject<{
1127
+ api: z.ZodOptional<z.ZodObject<{
1128
+ port: z.ZodNumber;
1129
+ host: z.ZodString;
1130
+ cors: z.ZodObject<{
1131
+ enabled: z.ZodBoolean;
1132
+ origins: z.ZodArray<z.ZodString, "many">;
1133
+ }, "strip", z.ZodTypeAny, {
1134
+ enabled: boolean;
1135
+ origins: string[];
1136
+ }, {
1137
+ enabled: boolean;
1138
+ origins: string[];
1139
+ }>;
1140
+ }, "strip", z.ZodTypeAny, {
1141
+ cors: {
1142
+ enabled: boolean;
1143
+ origins: string[];
1144
+ };
1145
+ port: number;
1146
+ host: string;
1147
+ }, {
1148
+ cors: {
1149
+ enabled: boolean;
1150
+ origins: string[];
1151
+ };
1152
+ port: number;
1153
+ host: string;
1154
+ }>>;
1155
+ simulator: z.ZodOptional<z.ZodObject<{
1156
+ defaultPort: z.ZodNumber;
1157
+ autoRestart: z.ZodBoolean;
1158
+ maxInstances: z.ZodNumber;
1159
+ }, "strip", z.ZodTypeAny, {
1160
+ defaultPort: number;
1161
+ autoRestart: boolean;
1162
+ maxInstances: number;
1163
+ }, {
1164
+ defaultPort: number;
1165
+ autoRestart: boolean;
1166
+ maxInstances: number;
1167
+ }>>;
1168
+ logging: z.ZodOptional<z.ZodObject<{
1169
+ level: z.ZodEnum<["error", "warn", "info", "debug"]>;
1170
+ file: z.ZodBoolean;
1171
+ console: z.ZodBoolean;
1172
+ maxSize: z.ZodString;
1173
+ maxFiles: z.ZodString;
1174
+ }, "strip", z.ZodTypeAny, {
1175
+ level: "error" | "debug" | "warn" | "info";
1176
+ maxSize: string;
1177
+ maxFiles: string;
1178
+ file: boolean;
1179
+ console: boolean;
1180
+ }, {
1181
+ level: "error" | "debug" | "warn" | "info";
1182
+ maxSize: string;
1183
+ maxFiles: string;
1184
+ file: boolean;
1185
+ console: boolean;
1186
+ }>>;
1187
+ ui: z.ZodOptional<z.ZodObject<{
1188
+ theme: z.ZodEnum<["light", "dark", "auto"]>;
1189
+ language: z.ZodEnum<["en", "es", "fr", "de"]>;
1190
+ dateFormat: z.ZodString;
1191
+ }, "strip", z.ZodTypeAny, {
1192
+ theme: "light" | "dark" | "auto";
1193
+ language: "en" | "es" | "fr" | "de";
1194
+ dateFormat: string;
1195
+ }, {
1196
+ theme: "light" | "dark" | "auto";
1197
+ language: "en" | "es" | "fr" | "de";
1198
+ dateFormat: string;
1199
+ }>>;
1200
+ }, "strip", z.ZodTypeAny, {
1201
+ logging?: {
1202
+ level: "error" | "debug" | "warn" | "info";
1203
+ maxSize: string;
1204
+ maxFiles: string;
1205
+ file: boolean;
1206
+ console: boolean;
1207
+ } | undefined;
1208
+ api?: {
1209
+ cors: {
1210
+ enabled: boolean;
1211
+ origins: string[];
1212
+ };
1213
+ port: number;
1214
+ host: string;
1215
+ } | undefined;
1216
+ simulator?: {
1217
+ defaultPort: number;
1218
+ autoRestart: boolean;
1219
+ maxInstances: number;
1220
+ } | undefined;
1221
+ ui?: {
1222
+ theme: "light" | "dark" | "auto";
1223
+ language: "en" | "es" | "fr" | "de";
1224
+ dateFormat: string;
1225
+ } | undefined;
1226
+ }, {
1227
+ logging?: {
1228
+ level: "error" | "debug" | "warn" | "info";
1229
+ maxSize: string;
1230
+ maxFiles: string;
1231
+ file: boolean;
1232
+ console: boolean;
1233
+ } | undefined;
1234
+ api?: {
1235
+ cors: {
1236
+ enabled: boolean;
1237
+ origins: string[];
1238
+ };
1239
+ port: number;
1240
+ host: string;
1241
+ } | undefined;
1242
+ simulator?: {
1243
+ defaultPort: number;
1244
+ autoRestart: boolean;
1245
+ maxInstances: number;
1246
+ } | undefined;
1247
+ ui?: {
1248
+ theme: "light" | "dark" | "auto";
1249
+ language: "en" | "es" | "fr" | "de";
1250
+ dateFormat: string;
1251
+ } | undefined;
1252
+ }>;
1253
+ id: z.ZodObject<{
1254
+ id: z.ZodString;
1255
+ }, "strip", z.ZodTypeAny, {
1256
+ id: string;
1257
+ }, {
1258
+ id: string;
1259
+ }>;
1260
+ pagination: z.ZodObject<{
1261
+ page: z.ZodDefault<z.ZodNumber>;
1262
+ limit: z.ZodDefault<z.ZodNumber>;
1263
+ sort: z.ZodOptional<z.ZodString>;
1264
+ order: z.ZodDefault<z.ZodEnum<["asc", "desc"]>>;
1265
+ }, "strip", z.ZodTypeAny, {
1266
+ page: number;
1267
+ limit: number;
1268
+ order: "asc" | "desc";
1269
+ sort?: string | undefined;
1270
+ }, {
1271
+ sort?: string | undefined;
1272
+ page?: number | undefined;
1273
+ limit?: number | undefined;
1274
+ order?: "asc" | "desc" | undefined;
1275
+ }>;
1276
+ filter: z.ZodObject<{
1277
+ search: z.ZodOptional<z.ZodString>;
1278
+ tags: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
1279
+ category: z.ZodOptional<z.ZodString>;
1280
+ protocol: z.ZodOptional<z.ZodEnum<["modbus", "bacnet"]>>;
1281
+ status: z.ZodOptional<z.ZodEnum<["active", "inactive", "error"]>>;
1282
+ }, "strip", z.ZodTypeAny, {
1283
+ status?: "error" | "active" | "inactive" | undefined;
1284
+ search?: string | undefined;
1285
+ category?: string | undefined;
1286
+ protocol?: "modbus" | "bacnet" | undefined;
1287
+ tags?: string[] | undefined;
1288
+ }, {
1289
+ status?: "error" | "active" | "inactive" | undefined;
1290
+ search?: string | undefined;
1291
+ category?: string | undefined;
1292
+ protocol?: "modbus" | "bacnet" | undefined;
1293
+ tags?: string[] | undefined;
1294
+ }>;
1295
+ };
1296
+ compose: {
1297
+ /**
1298
+ * Merge multiple schemas
1299
+ */
1300
+ merge: <T extends ZodSchema, U extends ZodSchema>(schema1: T, schema2: U) => z.ZodObject<z.objectUtil.extendShape<any, (U & z.ZodObject<any, any, any, any, any>)["shape"]>, (U & z.ZodObject<any, any, any, any, any>)["_def"]["unknownKeys"], (U & z.ZodObject<any, any, any, any, any>)["_def"]["catchall"], z.objectOutputType<z.objectUtil.extendShape<any, (U & z.ZodObject<any, any, any, any, any>)["shape"]>, (U & z.ZodObject<any, any, any, any, any>)["_def"]["catchall"], (U & z.ZodObject<any, any, any, any, any>)["_def"]["unknownKeys"]>, z.objectInputType<z.objectUtil.extendShape<any, (U & z.ZodObject<any, any, any, any, any>)["shape"]>, (U & z.ZodObject<any, any, any, any, any>)["_def"]["catchall"], (U & z.ZodObject<any, any, any, any, any>)["_def"]["unknownKeys"]>> | z.ZodIntersection<T, U>;
1301
+ /**
1302
+ * Make all fields optional
1303
+ */
1304
+ partial: <T extends z.ZodObject<any>>(schema: T) => z.ZodObject<{
1305
+ [x: string]: z.ZodOptional<any>;
1306
+ }, z.UnknownKeysParam, z.ZodTypeAny, {
1307
+ [x: string]: any;
1308
+ }, {
1309
+ [x: string]: any;
1310
+ }>;
1311
+ /**
1312
+ * Make specific fields required
1313
+ */
1314
+ require: <T extends z.ZodObject<any>>(schema: T, fields: Array<keyof T["shape"]>) => z.ZodObject<{} & {
1315
+ [x: string]: any;
1316
+ }, z.UnknownKeysParam, z.ZodTypeAny, {
1317
+ [x: string]: any;
1318
+ }, {
1319
+ [x: string]: any;
1320
+ }>;
1321
+ /**
1322
+ * Pick specific fields from a schema
1323
+ */
1324
+ pick: <T extends z.ZodObject<any>>(schema: T, fields: Array<keyof T["shape"]>) => z.ZodObject<any, "strip", z.ZodTypeAny, {
1325
+ [x: string]: any;
1326
+ }, {
1327
+ [x: string]: any;
1328
+ }>;
1329
+ /**
1330
+ * Omit specific fields from a schema
1331
+ */
1332
+ omit: <T extends z.ZodObject<any>>(schema: T, fields: Array<keyof T["shape"]>) => z.ZodObject<Omit<any, string | number | symbol>, z.UnknownKeysParam, z.ZodTypeAny, {}, {}>;
1333
+ };
1334
+ z: typeof z;
1335
+ };
1336
+ export default _default;
1337
+ //# sourceMappingURL=validation.d.ts.map