@zze/mock-server 0.2.4

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 (177) hide show
  1. package/README.md +643 -0
  2. package/dist/__tests__/mock-server.test.d.ts +5 -0
  3. package/dist/__tests__/mock-server.test.d.ts.map +1 -0
  4. package/dist/__tests__/mock-server.test.js +599 -0
  5. package/dist/__tests__/mock-server.test.js.map +1 -0
  6. package/dist/admin/__tests__/admin-router.test.d.ts +2 -0
  7. package/dist/admin/__tests__/admin-router.test.d.ts.map +1 -0
  8. package/dist/admin/__tests__/admin-router.test.js +621 -0
  9. package/dist/admin/__tests__/admin-router.test.js.map +1 -0
  10. package/dist/admin/admin-router.d.ts +27 -0
  11. package/dist/admin/admin-router.d.ts.map +1 -0
  12. package/dist/admin/admin-router.js +616 -0
  13. package/dist/admin/admin-router.js.map +1 -0
  14. package/dist/admin/index.d.ts +4 -0
  15. package/dist/admin/index.d.ts.map +1 -0
  16. package/dist/admin/index.js +10 -0
  17. package/dist/admin/index.js.map +1 -0
  18. package/dist/admin/types.d.ts +185 -0
  19. package/dist/admin/types.d.ts.map +1 -0
  20. package/dist/admin/types.js +33 -0
  21. package/dist/admin/types.js.map +1 -0
  22. package/dist/config/__tests__/config-discovery.test.d.ts +2 -0
  23. package/dist/config/__tests__/config-discovery.test.d.ts.map +1 -0
  24. package/dist/config/__tests__/config-discovery.test.js +52 -0
  25. package/dist/config/__tests__/config-discovery.test.js.map +1 -0
  26. package/dist/config/__tests__/config-loader.test.d.ts +2 -0
  27. package/dist/config/__tests__/config-loader.test.d.ts.map +1 -0
  28. package/dist/config/__tests__/config-loader.test.js +124 -0
  29. package/dist/config/__tests__/config-loader.test.js.map +1 -0
  30. package/dist/config/__tests__/file-loader.test.d.ts +2 -0
  31. package/dist/config/__tests__/file-loader.test.d.ts.map +1 -0
  32. package/dist/config/__tests__/file-loader.test.js +63 -0
  33. package/dist/config/__tests__/file-loader.test.js.map +1 -0
  34. package/dist/config/__tests__/fixtures/mock-config/endpoints/products.d.ts +25 -0
  35. package/dist/config/__tests__/fixtures/mock-config/endpoints/products.d.ts.map +1 -0
  36. package/dist/config/__tests__/fixtures/mock-config/endpoints/products.js +25 -0
  37. package/dist/config/__tests__/fixtures/mock-config/endpoints/products.js.map +1 -0
  38. package/dist/config/__tests__/fixtures/mock-config/flows/error-flow.d.ts +11 -0
  39. package/dist/config/__tests__/fixtures/mock-config/flows/error-flow.d.ts.map +1 -0
  40. package/dist/config/__tests__/fixtures/mock-config/flows/error-flow.js +11 -0
  41. package/dist/config/__tests__/fixtures/mock-config/flows/error-flow.js.map +1 -0
  42. package/dist/config/config-discovery.d.ts +23 -0
  43. package/dist/config/config-discovery.d.ts.map +1 -0
  44. package/dist/config/config-discovery.js +60 -0
  45. package/dist/config/config-discovery.js.map +1 -0
  46. package/dist/config/config-loader.d.ts +56 -0
  47. package/dist/config/config-loader.d.ts.map +1 -0
  48. package/dist/config/config-loader.js +162 -0
  49. package/dist/config/config-loader.js.map +1 -0
  50. package/dist/config/config-writer.d.ts +96 -0
  51. package/dist/config/config-writer.d.ts.map +1 -0
  52. package/dist/config/config-writer.js +248 -0
  53. package/dist/config/config-writer.js.map +1 -0
  54. package/dist/config/file-loader.d.ts +16 -0
  55. package/dist/config/file-loader.d.ts.map +1 -0
  56. package/dist/config/file-loader.js +90 -0
  57. package/dist/config/file-loader.js.map +1 -0
  58. package/dist/config/index.d.ts +7 -0
  59. package/dist/config/index.d.ts.map +1 -0
  60. package/dist/config/index.js +23 -0
  61. package/dist/config/index.js.map +1 -0
  62. package/dist/config/types.d.ts +47 -0
  63. package/dist/config/types.d.ts.map +1 -0
  64. package/dist/config/types.js +7 -0
  65. package/dist/config/types.js.map +1 -0
  66. package/dist/index.d.ts +28 -0
  67. package/dist/index.d.ts.map +1 -0
  68. package/dist/index.js +31 -0
  69. package/dist/index.js.map +1 -0
  70. package/dist/mock-server.d.ts +243 -0
  71. package/dist/mock-server.d.ts.map +1 -0
  72. package/dist/mock-server.js +387 -0
  73. package/dist/mock-server.js.map +1 -0
  74. package/dist/resolver/__tests__/response-resolver.test.d.ts +2 -0
  75. package/dist/resolver/__tests__/response-resolver.test.d.ts.map +1 -0
  76. package/dist/resolver/__tests__/response-resolver.test.js +358 -0
  77. package/dist/resolver/__tests__/response-resolver.test.js.map +1 -0
  78. package/dist/resolver/index.d.ts +4 -0
  79. package/dist/resolver/index.d.ts.map +1 -0
  80. package/dist/resolver/index.js +9 -0
  81. package/dist/resolver/index.js.map +1 -0
  82. package/dist/resolver/response-resolver.d.ts +73 -0
  83. package/dist/resolver/response-resolver.d.ts.map +1 -0
  84. package/dist/resolver/response-resolver.js +167 -0
  85. package/dist/resolver/response-resolver.js.map +1 -0
  86. package/dist/resolver/types.d.ts +47 -0
  87. package/dist/resolver/types.d.ts.map +1 -0
  88. package/dist/resolver/types.js +9 -0
  89. package/dist/resolver/types.js.map +1 -0
  90. package/dist/schemas/__tests__/config.validator.test.d.ts +2 -0
  91. package/dist/schemas/__tests__/config.validator.test.d.ts.map +1 -0
  92. package/dist/schemas/__tests__/config.validator.test.js +66 -0
  93. package/dist/schemas/__tests__/config.validator.test.js.map +1 -0
  94. package/dist/schemas/__tests__/endpoint.schema.test.d.ts +2 -0
  95. package/dist/schemas/__tests__/endpoint.schema.test.d.ts.map +1 -0
  96. package/dist/schemas/__tests__/endpoint.schema.test.js +103 -0
  97. package/dist/schemas/__tests__/endpoint.schema.test.js.map +1 -0
  98. package/dist/schemas/__tests__/flow.schema.test.d.ts +2 -0
  99. package/dist/schemas/__tests__/flow.schema.test.d.ts.map +1 -0
  100. package/dist/schemas/__tests__/flow.schema.test.js +92 -0
  101. package/dist/schemas/__tests__/flow.schema.test.js.map +1 -0
  102. package/dist/schemas/config.validator.d.ts +39 -0
  103. package/dist/schemas/config.validator.d.ts.map +1 -0
  104. package/dist/schemas/config.validator.js +117 -0
  105. package/dist/schemas/config.validator.js.map +1 -0
  106. package/dist/schemas/endpoint.schema.d.ts +108 -0
  107. package/dist/schemas/endpoint.schema.d.ts.map +1 -0
  108. package/dist/schemas/endpoint.schema.js +87 -0
  109. package/dist/schemas/endpoint.schema.js.map +1 -0
  110. package/dist/schemas/flow.schema.d.ts +46 -0
  111. package/dist/schemas/flow.schema.d.ts.map +1 -0
  112. package/dist/schemas/flow.schema.js +73 -0
  113. package/dist/schemas/flow.schema.js.map +1 -0
  114. package/dist/schemas/http.schema.d.ts +15 -0
  115. package/dist/schemas/http.schema.d.ts.map +1 -0
  116. package/dist/schemas/http.schema.js +32 -0
  117. package/dist/schemas/http.schema.js.map +1 -0
  118. package/dist/schemas/index.d.ts +6 -0
  119. package/dist/schemas/index.d.ts.map +1 -0
  120. package/dist/schemas/index.js +33 -0
  121. package/dist/schemas/index.js.map +1 -0
  122. package/dist/schemas/scenario.schema.d.ts +54 -0
  123. package/dist/schemas/scenario.schema.d.ts.map +1 -0
  124. package/dist/schemas/scenario.schema.js +75 -0
  125. package/dist/schemas/scenario.schema.js.map +1 -0
  126. package/dist/server/__tests__/mock-server-app.test.d.ts +2 -0
  127. package/dist/server/__tests__/mock-server-app.test.d.ts.map +1 -0
  128. package/dist/server/__tests__/mock-server-app.test.js +296 -0
  129. package/dist/server/__tests__/mock-server-app.test.js.map +1 -0
  130. package/dist/server/index.d.ts +4 -0
  131. package/dist/server/index.d.ts.map +1 -0
  132. package/dist/server/index.js +10 -0
  133. package/dist/server/index.js.map +1 -0
  134. package/dist/server/mock-server-app.d.ts +119 -0
  135. package/dist/server/mock-server-app.d.ts.map +1 -0
  136. package/dist/server/mock-server-app.js +304 -0
  137. package/dist/server/mock-server-app.js.map +1 -0
  138. package/dist/server/types.d.ts +38 -0
  139. package/dist/server/types.d.ts.map +1 -0
  140. package/dist/server/types.js +11 -0
  141. package/dist/server/types.js.map +1 -0
  142. package/dist/state/__tests__/state-manager.test.d.ts +2 -0
  143. package/dist/state/__tests__/state-manager.test.d.ts.map +1 -0
  144. package/dist/state/__tests__/state-manager.test.js +275 -0
  145. package/dist/state/__tests__/state-manager.test.js.map +1 -0
  146. package/dist/state/index.d.ts +3 -0
  147. package/dist/state/index.d.ts.map +1 -0
  148. package/dist/state/index.js +7 -0
  149. package/dist/state/index.js.map +1 -0
  150. package/dist/state/state-manager.d.ts +92 -0
  151. package/dist/state/state-manager.d.ts.map +1 -0
  152. package/dist/state/state-manager.js +198 -0
  153. package/dist/state/state-manager.js.map +1 -0
  154. package/dist/state/types.d.ts +30 -0
  155. package/dist/state/types.d.ts.map +1 -0
  156. package/dist/state/types.js +2 -0
  157. package/dist/state/types.js.map +1 -0
  158. package/dist/ui/assets/index-SADMOgPE.js +10 -0
  159. package/dist/ui/assets/index-rj7m-XdG.css +1 -0
  160. package/dist/ui/index.html +29 -0
  161. package/dist/watcher/__tests__/config-watcher.test.d.ts +2 -0
  162. package/dist/watcher/__tests__/config-watcher.test.d.ts.map +1 -0
  163. package/dist/watcher/__tests__/config-watcher.test.js +372 -0
  164. package/dist/watcher/__tests__/config-watcher.test.js.map +1 -0
  165. package/dist/watcher/config-watcher.d.ts +100 -0
  166. package/dist/watcher/config-watcher.d.ts.map +1 -0
  167. package/dist/watcher/config-watcher.js +358 -0
  168. package/dist/watcher/config-watcher.js.map +1 -0
  169. package/dist/watcher/index.d.ts +7 -0
  170. package/dist/watcher/index.d.ts.map +1 -0
  171. package/dist/watcher/index.js +8 -0
  172. package/dist/watcher/index.js.map +1 -0
  173. package/dist/watcher/types.d.ts +64 -0
  174. package/dist/watcher/types.d.ts.map +1 -0
  175. package/dist/watcher/types.js +15 -0
  176. package/dist/watcher/types.js.map +1 -0
  177. package/package.json +58 -0
@@ -0,0 +1,616 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.ADMIN_API_PATH = void 0;
4
+ exports.createAdminRouter = createAdminRouter;
5
+ const express_1 = require("express");
6
+ const types_js_1 = require("./types.js");
7
+ function createAdminRouter(optionsOrGetEndpoints, getFlowsArg, stateManagerArg) {
8
+ // Handle both signatures
9
+ let getEndpoints;
10
+ let getFlows;
11
+ let stateManager;
12
+ let getConfigWriter;
13
+ let getOnConfigChange;
14
+ if (typeof optionsOrGetEndpoints === 'function') {
15
+ // Legacy signature
16
+ getEndpoints = optionsOrGetEndpoints;
17
+ getFlows = getFlowsArg;
18
+ stateManager = stateManagerArg;
19
+ }
20
+ else {
21
+ // New options object
22
+ getEndpoints = optionsOrGetEndpoints.getEndpoints;
23
+ getFlows = optionsOrGetEndpoints.getFlows;
24
+ stateManager = optionsOrGetEndpoints.stateManager;
25
+ getConfigWriter = optionsOrGetEndpoints.getConfigWriter;
26
+ getOnConfigChange = optionsOrGetEndpoints.getOnConfigChange;
27
+ }
28
+ const router = (0, express_1.Router)();
29
+ // Parse JSON bodies
30
+ router.use((req, res, next) => {
31
+ if (req.headers['content-type']?.includes('application/json')) {
32
+ // Body already parsed by parent app
33
+ }
34
+ next();
35
+ });
36
+ /**
37
+ * GET /config
38
+ * Returns all configured endpoints and flows
39
+ */
40
+ router.get('/config', (req, res) => {
41
+ const endpoints = getEndpoints();
42
+ const flows = getFlows();
43
+ const response = {
44
+ endpoints: endpoints.map((endpoint) => ({
45
+ id: endpoint.id,
46
+ path: endpoint.path,
47
+ method: endpoint.method,
48
+ scenarios: endpoint.scenarios.map((scenario) => ({
49
+ id: scenario.id,
50
+ name: scenario.name,
51
+ status: scenario.status,
52
+ })),
53
+ defaultScenarioId: endpoint.defaultScenarioId,
54
+ })),
55
+ flows: flows.map((flow) => ({
56
+ id: flow.id,
57
+ name: flow.name,
58
+ description: flow.description,
59
+ category: flow.category,
60
+ endpointScenarios: flow.endpointScenarios,
61
+ })),
62
+ };
63
+ res.json(response);
64
+ });
65
+ /**
66
+ * GET /state
67
+ * Returns current runtime state
68
+ */
69
+ router.get('/state', (req, res) => {
70
+ const state = stateManager.getState();
71
+ const response = {
72
+ activeFlowId: state.activeFlowId,
73
+ activeScenarios: state.activeScenarios,
74
+ };
75
+ res.json(response);
76
+ });
77
+ /**
78
+ * POST /scenarios/activate
79
+ * Activate a specific scenario for an endpoint
80
+ */
81
+ router.post('/scenarios/activate', (req, res) => {
82
+ const parseResult = types_js_1.ActivateScenarioRequestSchema.safeParse(req.body);
83
+ if (!parseResult.success) {
84
+ const errorResponse = {
85
+ error: 'Invalid request body',
86
+ details: parseResult.error.issues,
87
+ };
88
+ res.status(400).json(errorResponse);
89
+ return;
90
+ }
91
+ const { endpointId, scenarioId } = parseResult.data;
92
+ try {
93
+ stateManager.activateScenario(endpointId, scenarioId);
94
+ res.status(204).end();
95
+ }
96
+ catch (error) {
97
+ const errorResponse = {
98
+ error: error instanceof Error ? error.message : 'Unknown error',
99
+ };
100
+ res.status(400).json(errorResponse);
101
+ }
102
+ });
103
+ /**
104
+ * POST /flows/activate
105
+ * Activate or deactivate a flow
106
+ */
107
+ router.post('/flows/activate', (req, res) => {
108
+ const parseResult = types_js_1.ActivateFlowRequestSchema.safeParse(req.body);
109
+ if (!parseResult.success) {
110
+ const errorResponse = {
111
+ error: 'Invalid request body',
112
+ details: parseResult.error.issues,
113
+ };
114
+ res.status(400).json(errorResponse);
115
+ return;
116
+ }
117
+ const { flowId } = parseResult.data;
118
+ try {
119
+ if (flowId === null) {
120
+ stateManager.deactivateFlow();
121
+ }
122
+ else {
123
+ stateManager.activateFlow(flowId);
124
+ }
125
+ res.status(204).end();
126
+ }
127
+ catch (error) {
128
+ const errorResponse = {
129
+ error: error instanceof Error ? error.message : 'Unknown error',
130
+ };
131
+ res.status(400).json(errorResponse);
132
+ }
133
+ });
134
+ /**
135
+ * POST /reset
136
+ * Reset all state to defaults
137
+ */
138
+ router.post('/reset', (req, res) => {
139
+ stateManager.reset();
140
+ res.status(204).end();
141
+ });
142
+ // ============================================
143
+ // Endpoint CRUD Operations
144
+ // ============================================
145
+ /**
146
+ * GET /endpoints/:id
147
+ * Get a single endpoint's full configuration (including scenario bodies)
148
+ */
149
+ router.get('/endpoints/:id', (req, res) => {
150
+ const { id } = req.params;
151
+ const endpoints = getEndpoints();
152
+ const endpoint = endpoints.find((e) => e.id === id);
153
+ if (!endpoint) {
154
+ const errorResponse = {
155
+ error: 'Endpoint not found',
156
+ details: `No endpoint with id "${id}"`,
157
+ };
158
+ res.status(404).json(errorResponse);
159
+ return;
160
+ }
161
+ res.json({
162
+ id: endpoint.id,
163
+ path: endpoint.path,
164
+ method: endpoint.method,
165
+ defaultScenarioId: endpoint.defaultScenarioId,
166
+ scenarios: endpoint.scenarios.map((s) => ({
167
+ id: s.id,
168
+ name: s.name,
169
+ status: s.status,
170
+ body: s.body,
171
+ headers: s.headers,
172
+ delay: s.delay,
173
+ })),
174
+ });
175
+ });
176
+ /**
177
+ * POST /endpoints
178
+ * Create a new endpoint
179
+ */
180
+ router.post('/endpoints', async (req, res) => {
181
+ const configWriter = getConfigWriter?.();
182
+ if (!configWriter) {
183
+ const errorResponse = {
184
+ error: 'Endpoint management not available',
185
+ details: 'ConfigWriter not configured',
186
+ };
187
+ res.status(501).json(errorResponse);
188
+ return;
189
+ }
190
+ const parseResult = types_js_1.EndpointRequestSchema.safeParse(req.body);
191
+ if (!parseResult.success) {
192
+ const errorResponse = {
193
+ error: 'Invalid request body',
194
+ details: parseResult.error.issues,
195
+ };
196
+ res.status(400).json(errorResponse);
197
+ return;
198
+ }
199
+ const endpoint = parseResult.data;
200
+ // Check if endpoint with this ID already exists
201
+ const existingEndpoint = getEndpoints().find((e) => e.id === endpoint.id);
202
+ if (existingEndpoint) {
203
+ const errorResponse = {
204
+ error: `Endpoint with id '${endpoint.id}' already exists`,
205
+ };
206
+ res.status(409).json(errorResponse);
207
+ return;
208
+ }
209
+ try {
210
+ const result = await configWriter.writeEndpoint(endpoint);
211
+ if (!result.success) {
212
+ const errorResponse = {
213
+ error: 'Failed to create endpoint',
214
+ details: result.error,
215
+ };
216
+ res.status(500).json(errorResponse);
217
+ return;
218
+ }
219
+ // Trigger config reload if available
220
+ const onConfigChange = getOnConfigChange?.();
221
+ if (onConfigChange) {
222
+ await onConfigChange();
223
+ }
224
+ res.status(201).json({ id: endpoint.id, filePath: result.filePath });
225
+ }
226
+ catch (error) {
227
+ const errorResponse = {
228
+ error: error instanceof Error ? error.message : 'Unknown error',
229
+ };
230
+ res.status(500).json(errorResponse);
231
+ }
232
+ });
233
+ /**
234
+ * PUT /endpoints/:id
235
+ * Update an existing endpoint
236
+ */
237
+ router.put('/endpoints/:id', async (req, res) => {
238
+ const configWriter = getConfigWriter?.();
239
+ if (!configWriter) {
240
+ const errorResponse = {
241
+ error: 'Endpoint management not available',
242
+ details: 'ConfigWriter not configured',
243
+ };
244
+ res.status(501).json(errorResponse);
245
+ return;
246
+ }
247
+ const { id } = req.params;
248
+ const parseResult = types_js_1.EndpointRequestSchema.safeParse(req.body);
249
+ if (!parseResult.success) {
250
+ const errorResponse = {
251
+ error: 'Invalid request body',
252
+ details: parseResult.error.issues,
253
+ };
254
+ res.status(400).json(errorResponse);
255
+ return;
256
+ }
257
+ const endpoint = parseResult.data;
258
+ // Ensure the ID in the body matches the URL parameter
259
+ if (endpoint.id !== id) {
260
+ const errorResponse = {
261
+ error: 'Endpoint ID in body must match URL parameter',
262
+ };
263
+ res.status(400).json(errorResponse);
264
+ return;
265
+ }
266
+ // Check if endpoint exists
267
+ const existingEndpoint = getEndpoints().find((e) => e.id === id);
268
+ if (!existingEndpoint) {
269
+ const errorResponse = {
270
+ error: `Endpoint with id '${id}' not found`,
271
+ };
272
+ res.status(404).json(errorResponse);
273
+ return;
274
+ }
275
+ try {
276
+ const result = await configWriter.writeEndpoint(endpoint);
277
+ if (!result.success) {
278
+ const errorResponse = {
279
+ error: 'Failed to update endpoint',
280
+ details: result.error,
281
+ };
282
+ res.status(500).json(errorResponse);
283
+ return;
284
+ }
285
+ // Trigger config reload if available
286
+ const onConfigChange = getOnConfigChange?.();
287
+ if (onConfigChange) {
288
+ await onConfigChange();
289
+ }
290
+ res.status(200).json({ id: endpoint.id, filePath: result.filePath });
291
+ }
292
+ catch (error) {
293
+ const errorResponse = {
294
+ error: error instanceof Error ? error.message : 'Unknown error',
295
+ };
296
+ res.status(500).json(errorResponse);
297
+ }
298
+ });
299
+ /**
300
+ * DELETE /endpoints/:id
301
+ * Delete an endpoint
302
+ */
303
+ router.delete('/endpoints/:id', async (req, res) => {
304
+ const configWriter = getConfigWriter?.();
305
+ if (!configWriter) {
306
+ const errorResponse = {
307
+ error: 'Endpoint management not available',
308
+ details: 'ConfigWriter not configured',
309
+ };
310
+ res.status(501).json(errorResponse);
311
+ return;
312
+ }
313
+ const { id } = req.params;
314
+ // Check if endpoint exists
315
+ const existingEndpoint = getEndpoints().find((e) => e.id === id);
316
+ if (!existingEndpoint) {
317
+ const errorResponse = {
318
+ error: `Endpoint with id '${id}' not found`,
319
+ };
320
+ res.status(404).json(errorResponse);
321
+ return;
322
+ }
323
+ try {
324
+ const result = await configWriter.deleteEndpoint(id);
325
+ if (!result.success) {
326
+ const errorResponse = {
327
+ error: 'Failed to delete endpoint',
328
+ details: result.error,
329
+ };
330
+ res.status(500).json(errorResponse);
331
+ return;
332
+ }
333
+ // Trigger config reload if available
334
+ const onConfigChange = getOnConfigChange?.();
335
+ if (onConfigChange) {
336
+ await onConfigChange();
337
+ }
338
+ res.status(204).end();
339
+ }
340
+ catch (error) {
341
+ const errorResponse = {
342
+ error: error instanceof Error ? error.message : 'Unknown error',
343
+ };
344
+ res.status(500).json(errorResponse);
345
+ }
346
+ });
347
+ // ============================================
348
+ // Flow CRUD Operations
349
+ // ============================================
350
+ /**
351
+ * POST /flows
352
+ * Create a new flow
353
+ */
354
+ router.post('/flows', async (req, res) => {
355
+ const configWriter = getConfigWriter?.();
356
+ if (!configWriter) {
357
+ const errorResponse = {
358
+ error: 'Flow management not available',
359
+ details: 'ConfigWriter not configured',
360
+ };
361
+ res.status(501).json(errorResponse);
362
+ return;
363
+ }
364
+ const parseResult = types_js_1.FlowRequestSchema.safeParse(req.body);
365
+ if (!parseResult.success) {
366
+ const errorResponse = {
367
+ error: 'Invalid request body',
368
+ details: parseResult.error.issues,
369
+ };
370
+ res.status(400).json(errorResponse);
371
+ return;
372
+ }
373
+ const flow = parseResult.data;
374
+ // Check if flow with this ID already exists
375
+ const existingFlow = getFlows().find((f) => f.id === flow.id);
376
+ if (existingFlow) {
377
+ const errorResponse = {
378
+ error: `Flow with id '${flow.id}' already exists`,
379
+ };
380
+ res.status(409).json(errorResponse);
381
+ return;
382
+ }
383
+ try {
384
+ const result = await configWriter.writeFlow(flow);
385
+ if (!result.success) {
386
+ const errorResponse = {
387
+ error: 'Failed to create flow',
388
+ details: result.error,
389
+ };
390
+ res.status(500).json(errorResponse);
391
+ return;
392
+ }
393
+ // Trigger config reload if available
394
+ const onConfigChange = getOnConfigChange?.();
395
+ if (onConfigChange) {
396
+ await onConfigChange();
397
+ }
398
+ res.status(201).json({ id: flow.id, filePath: result.filePath });
399
+ }
400
+ catch (error) {
401
+ const errorResponse = {
402
+ error: error instanceof Error ? error.message : 'Unknown error',
403
+ };
404
+ res.status(500).json(errorResponse);
405
+ }
406
+ });
407
+ /**
408
+ * PUT /flows/:id
409
+ * Update an existing flow
410
+ */
411
+ router.put('/flows/:id', async (req, res) => {
412
+ const configWriter = getConfigWriter?.();
413
+ if (!configWriter) {
414
+ const errorResponse = {
415
+ error: 'Flow management not available',
416
+ details: 'ConfigWriter not configured',
417
+ };
418
+ res.status(501).json(errorResponse);
419
+ return;
420
+ }
421
+ const { id } = req.params;
422
+ const parseResult = types_js_1.FlowRequestSchema.safeParse(req.body);
423
+ if (!parseResult.success) {
424
+ const errorResponse = {
425
+ error: 'Invalid request body',
426
+ details: parseResult.error.issues,
427
+ };
428
+ res.status(400).json(errorResponse);
429
+ return;
430
+ }
431
+ const flow = parseResult.data;
432
+ // Ensure the ID in the body matches the URL parameter
433
+ if (flow.id !== id) {
434
+ const errorResponse = {
435
+ error: 'Flow ID in body must match URL parameter',
436
+ };
437
+ res.status(400).json(errorResponse);
438
+ return;
439
+ }
440
+ // Check if flow exists
441
+ const existingFlow = getFlows().find((f) => f.id === id);
442
+ if (!existingFlow) {
443
+ const errorResponse = {
444
+ error: `Flow with id '${id}' not found`,
445
+ };
446
+ res.status(404).json(errorResponse);
447
+ return;
448
+ }
449
+ try {
450
+ const result = await configWriter.writeFlow(flow);
451
+ if (!result.success) {
452
+ const errorResponse = {
453
+ error: 'Failed to update flow',
454
+ details: result.error,
455
+ };
456
+ res.status(500).json(errorResponse);
457
+ return;
458
+ }
459
+ // Trigger config reload if available
460
+ const onConfigChange = getOnConfigChange?.();
461
+ if (onConfigChange) {
462
+ await onConfigChange();
463
+ }
464
+ res.status(200).json({ id: flow.id, filePath: result.filePath });
465
+ }
466
+ catch (error) {
467
+ const errorResponse = {
468
+ error: error instanceof Error ? error.message : 'Unknown error',
469
+ };
470
+ res.status(500).json(errorResponse);
471
+ }
472
+ });
473
+ /**
474
+ * DELETE /flows/:id
475
+ * Delete a flow
476
+ */
477
+ router.delete('/flows/:id', async (req, res) => {
478
+ const configWriter = getConfigWriter?.();
479
+ if (!configWriter) {
480
+ const errorResponse = {
481
+ error: 'Flow management not available',
482
+ details: 'ConfigWriter not configured',
483
+ };
484
+ res.status(501).json(errorResponse);
485
+ return;
486
+ }
487
+ const { id } = req.params;
488
+ // Check if flow exists
489
+ const existingFlow = getFlows().find((f) => f.id === id);
490
+ if (!existingFlow) {
491
+ const errorResponse = {
492
+ error: `Flow with id '${id}' not found`,
493
+ };
494
+ res.status(404).json(errorResponse);
495
+ return;
496
+ }
497
+ try {
498
+ const result = await configWriter.deleteFlow(id);
499
+ if (!result.success) {
500
+ const errorResponse = {
501
+ error: 'Failed to delete flow',
502
+ details: result.error,
503
+ };
504
+ res.status(500).json(errorResponse);
505
+ return;
506
+ }
507
+ // Deactivate flow if it was active
508
+ const state = stateManager.getState();
509
+ if (state.activeFlowId === id) {
510
+ stateManager.deactivateFlow();
511
+ }
512
+ // Trigger config reload if available
513
+ const onConfigChange = getOnConfigChange?.();
514
+ if (onConfigChange) {
515
+ await onConfigChange();
516
+ }
517
+ res.status(204).end();
518
+ }
519
+ catch (error) {
520
+ const errorResponse = {
521
+ error: error instanceof Error ? error.message : 'Unknown error',
522
+ };
523
+ res.status(500).json(errorResponse);
524
+ }
525
+ });
526
+ /**
527
+ * POST /flows/:id/duplicate
528
+ * Duplicate an existing flow with a new ID
529
+ */
530
+ router.post('/flows/:id/duplicate', async (req, res) => {
531
+ const configWriter = getConfigWriter?.();
532
+ if (!configWriter) {
533
+ const errorResponse = {
534
+ error: 'Flow management not available',
535
+ details: 'ConfigWriter not configured',
536
+ };
537
+ res.status(501).json(errorResponse);
538
+ return;
539
+ }
540
+ const { id } = req.params;
541
+ const parseResult = types_js_1.DuplicateFlowRequestSchema.safeParse(req.body);
542
+ if (!parseResult.success) {
543
+ const errorResponse = {
544
+ error: 'Invalid request body',
545
+ details: parseResult.error.issues,
546
+ };
547
+ res.status(400).json(errorResponse);
548
+ return;
549
+ }
550
+ const { newId, newName } = parseResult.data;
551
+ // Check if source flow exists
552
+ const sourceFlow = getFlows().find((f) => f.id === id);
553
+ if (!sourceFlow) {
554
+ const errorResponse = {
555
+ error: `Flow with id '${id}' not found`,
556
+ };
557
+ res.status(404).json(errorResponse);
558
+ return;
559
+ }
560
+ // Check if new ID already exists
561
+ const existingFlow = getFlows().find((f) => f.id === newId);
562
+ if (existingFlow) {
563
+ const errorResponse = {
564
+ error: `Flow with id '${newId}' already exists`,
565
+ };
566
+ res.status(409).json(errorResponse);
567
+ return;
568
+ }
569
+ try {
570
+ // Create new flow with copied data
571
+ const newFlow = {
572
+ ...sourceFlow,
573
+ id: newId,
574
+ name: newName || `${sourceFlow.name} (Copy)`,
575
+ endpointScenarios: { ...sourceFlow.endpointScenarios },
576
+ };
577
+ const result = await configWriter.writeFlow(newFlow);
578
+ if (!result.success) {
579
+ const errorResponse = {
580
+ error: 'Failed to duplicate flow',
581
+ details: result.error,
582
+ };
583
+ res.status(500).json(errorResponse);
584
+ return;
585
+ }
586
+ // Trigger config reload if available
587
+ const onConfigChange = getOnConfigChange?.();
588
+ if (onConfigChange) {
589
+ await onConfigChange();
590
+ }
591
+ res.status(201).json({ id: newId, filePath: result.filePath });
592
+ }
593
+ catch (error) {
594
+ const errorResponse = {
595
+ error: error instanceof Error ? error.message : 'Unknown error',
596
+ };
597
+ res.status(500).json(errorResponse);
598
+ }
599
+ });
600
+ /**
601
+ * Error handling middleware
602
+ */
603
+ router.use((err, req, res, next) => {
604
+ console.error('Admin API error:', err);
605
+ const errorResponse = {
606
+ error: 'Internal server error',
607
+ details: err.message,
608
+ };
609
+ res.status(500).json(errorResponse);
610
+ });
611
+ return router;
612
+ }
613
+ /**
614
+ * Admin API path constant
615
+ */
616
+ exports.ADMIN_API_PATH = '/mock-admin/api';
@@ -0,0 +1 @@
1
+ {"version":3,"file":"admin-router.js","sourceRoot":"","sources":["../../src/admin/admin-router.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,4 @@
1
+ export type { ActivateScenarioRequest, ActivateFlowRequest, ConfigResponse, StateResponse, ErrorResponse, } from './types.js';
2
+ export { ActivateScenarioRequestSchema, ActivateFlowRequestSchema, } from './types.js';
3
+ export { createAdminRouter, ADMIN_API_PATH } from './admin-router.js';
4
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/admin/index.ts"],"names":[],"mappings":"AACA,YAAY,EACV,uBAAuB,EACvB,mBAAmB,EACnB,cAAc,EACd,aAAa,EACb,aAAa,GACd,MAAM,YAAY,CAAC;AAEpB,OAAO,EACL,6BAA6B,EAC7B,yBAAyB,GAC1B,MAAM,YAAY,CAAC;AAGpB,OAAO,EAAE,iBAAiB,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC"}
@@ -0,0 +1,10 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.ADMIN_API_PATH = exports.createAdminRouter = exports.ActivateFlowRequestSchema = exports.ActivateScenarioRequestSchema = void 0;
4
+ var types_js_1 = require("./types.js");
5
+ Object.defineProperty(exports, "ActivateScenarioRequestSchema", { enumerable: true, get: function () { return types_js_1.ActivateScenarioRequestSchema; } });
6
+ Object.defineProperty(exports, "ActivateFlowRequestSchema", { enumerable: true, get: function () { return types_js_1.ActivateFlowRequestSchema; } });
7
+ // Admin router
8
+ var admin_router_js_1 = require("./admin-router.js");
9
+ Object.defineProperty(exports, "createAdminRouter", { enumerable: true, get: function () { return admin_router_js_1.createAdminRouter; } });
10
+ Object.defineProperty(exports, "ADMIN_API_PATH", { enumerable: true, get: function () { return admin_router_js_1.ADMIN_API_PATH; } });
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/admin/index.ts"],"names":[],"mappings":";;;AASA,uCAGoB;AAFlB,yHAAA,6BAA6B,OAAA;AAC7B,qHAAA,yBAAyB,OAAA;AAG3B,eAAe;AACf,qDAAsE;AAA7D,oHAAA,iBAAiB,OAAA;AAAE,iHAAA,cAAc,OAAA"}