@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,358 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || (function () {
19
+ var ownKeys = function(o) {
20
+ ownKeys = Object.getOwnPropertyNames || function (o) {
21
+ var ar = [];
22
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
+ return ar;
24
+ };
25
+ return ownKeys(o);
26
+ };
27
+ return function (mod) {
28
+ if (mod && mod.__esModule) return mod;
29
+ var result = {};
30
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
+ __setModuleDefault(result, mod);
32
+ return result;
33
+ };
34
+ })();
35
+ var __importDefault = (this && this.__importDefault) || function (mod) {
36
+ return (mod && mod.__esModule) ? mod : { "default": mod };
37
+ };
38
+ Object.defineProperty(exports, "__esModule", { value: true });
39
+ exports.ConfigWatcher = void 0;
40
+ exports.createConfigWatcher = createConfigWatcher;
41
+ /**
42
+ * Configuration file watcher for hot reload
43
+ * Watches endpoints/ and flows/ directories for changes
44
+ */
45
+ const chokidar_1 = __importDefault(require("chokidar"));
46
+ const path_1 = __importDefault(require("path"));
47
+ const types_js_1 = require("./types.js");
48
+ /**
49
+ * Watches configuration directories and triggers hot reload on changes
50
+ */
51
+ class ConfigWatcher {
52
+ constructor(configLoader, options = {}) {
53
+ this.serverApp = null;
54
+ this.watcher = null;
55
+ this.pendingEvents = [];
56
+ this.debounceTimer = null;
57
+ this.reloadCallbacks = new Set();
58
+ this.errorCallbacks = new Set();
59
+ this.isReloading = false;
60
+ this.watchedFiles = new Set();
61
+ this.configLoader = configLoader;
62
+ this.options = { ...types_js_1.DEFAULT_WATCHER_OPTIONS, ...options };
63
+ }
64
+ /**
65
+ * Attach a MockServerApp to receive config updates
66
+ */
67
+ attachServer(serverApp) {
68
+ this.serverApp = serverApp;
69
+ }
70
+ /**
71
+ * Detach the MockServerApp
72
+ */
73
+ detachServer() {
74
+ this.serverApp = null;
75
+ }
76
+ /**
77
+ * Start watching configuration directories
78
+ */
79
+ async start() {
80
+ if (this.watcher) {
81
+ return; // Already watching
82
+ }
83
+ const endpointsDir = this.configLoader.getEndpointsDir();
84
+ const flowsDir = this.configLoader.getFlowsDir();
85
+ const watchPaths = [];
86
+ // Check which directories exist
87
+ if (await this.directoryExists(endpointsDir)) {
88
+ watchPaths.push(endpointsDir);
89
+ }
90
+ if (await this.directoryExists(flowsDir)) {
91
+ watchPaths.push(flowsDir);
92
+ }
93
+ if (watchPaths.length === 0) {
94
+ throw new Error('No configuration directories found to watch');
95
+ }
96
+ // Build ignore patterns for chokidar
97
+ const ignored = this.buildIgnorePatterns();
98
+ // Create chokidar watcher
99
+ this.watcher = chokidar_1.default.watch(watchPaths, {
100
+ persistent: true,
101
+ ignoreInitial: true,
102
+ depth: this.options.recursive ? undefined : 0,
103
+ ignored,
104
+ awaitWriteFinish: {
105
+ stabilityThreshold: 100,
106
+ pollInterval: 50,
107
+ },
108
+ });
109
+ // Set up event handlers
110
+ this.watcher
111
+ .on('add', (filePath) => this.handleFileEvent('add', filePath))
112
+ .on('change', (filePath) => this.handleFileEvent('change', filePath))
113
+ .on('unlink', (filePath) => this.handleFileEvent('unlink', filePath))
114
+ .on('error', (error) => this.handleError(error instanceof Error ? error : new Error(String(error))))
115
+ .on('ready', () => {
116
+ // Track initial watched files
117
+ const watched = this.watcher?.getWatched() ?? {};
118
+ for (const dir of Object.keys(watched)) {
119
+ for (const file of watched[dir]) {
120
+ const fullPath = path_1.default.join(dir, file);
121
+ if (this.isWatchableFile(fullPath)) {
122
+ this.watchedFiles.add(fullPath);
123
+ }
124
+ }
125
+ }
126
+ });
127
+ // Wait for watcher to be ready
128
+ await new Promise((resolve) => {
129
+ this.watcher?.once('ready', resolve);
130
+ });
131
+ }
132
+ /**
133
+ * Stop watching configuration directories
134
+ */
135
+ async stop() {
136
+ if (this.debounceTimer) {
137
+ clearTimeout(this.debounceTimer);
138
+ this.debounceTimer = null;
139
+ }
140
+ this.pendingEvents = [];
141
+ this.watchedFiles.clear();
142
+ if (this.watcher) {
143
+ await this.watcher.close();
144
+ this.watcher = null;
145
+ }
146
+ }
147
+ /**
148
+ * Add a callback for reload events
149
+ */
150
+ onReload(callback) {
151
+ this.reloadCallbacks.add(callback);
152
+ return () => this.reloadCallbacks.delete(callback);
153
+ }
154
+ /**
155
+ * Add a callback for error events
156
+ */
157
+ onError(callback) {
158
+ this.errorCallbacks.add(callback);
159
+ return () => this.errorCallbacks.delete(callback);
160
+ }
161
+ /**
162
+ * Get current watcher state
163
+ */
164
+ getState() {
165
+ const watchedDirectories = [];
166
+ if (this.watcher) {
167
+ const watched = this.watcher.getWatched();
168
+ watchedDirectories.push(...Object.keys(watched));
169
+ }
170
+ return {
171
+ watching: this.watcher !== null,
172
+ watchedDirectories,
173
+ fileCount: this.watchedFiles.size,
174
+ };
175
+ }
176
+ /**
177
+ * Check if watcher is active
178
+ */
179
+ isWatching() {
180
+ return this.watcher !== null;
181
+ }
182
+ /**
183
+ * Manually trigger a reload (useful for testing or forced refresh)
184
+ */
185
+ async triggerReload() {
186
+ await this.performReload([]);
187
+ }
188
+ /**
189
+ * Handle a file system event
190
+ */
191
+ handleFileEvent(type, filePath) {
192
+ // Only handle supported config file extensions
193
+ if (!this.isWatchableFile(filePath)) {
194
+ return;
195
+ }
196
+ // Determine which directory the file belongs to
197
+ const directory = this.getFileDirectory(filePath);
198
+ if (!directory) {
199
+ return;
200
+ }
201
+ // Track file count changes
202
+ if (type === 'add') {
203
+ this.watchedFiles.add(filePath);
204
+ }
205
+ else if (type === 'unlink') {
206
+ this.watchedFiles.delete(filePath);
207
+ }
208
+ // Add to pending events
209
+ this.pendingEvents.push({ type, path: filePath, directory });
210
+ // Reset debounce timer
211
+ if (this.debounceTimer) {
212
+ clearTimeout(this.debounceTimer);
213
+ }
214
+ this.debounceTimer = setTimeout(() => {
215
+ this.processEvents();
216
+ }, this.options.debounceMs);
217
+ }
218
+ /**
219
+ * Process pending events after debounce
220
+ */
221
+ async processEvents() {
222
+ if (this.pendingEvents.length === 0 || this.isReloading) {
223
+ return;
224
+ }
225
+ const events = [...this.pendingEvents];
226
+ this.pendingEvents = [];
227
+ this.debounceTimer = null;
228
+ await this.performReload(events);
229
+ }
230
+ /**
231
+ * Perform the actual reload
232
+ */
233
+ async performReload(events) {
234
+ if (this.isReloading) {
235
+ return;
236
+ }
237
+ this.isReloading = true;
238
+ try {
239
+ // Reload configuration
240
+ const result = await this.configLoader.reload();
241
+ if (result.errors.length > 0) {
242
+ // Report validation errors but don't prevent reload if we have config
243
+ const errorMessages = result.errors.map(e => `${e.filePath}: ${e.error}`).join('\n');
244
+ const error = new Error(`Configuration reload completed with errors:\n${errorMessages}`);
245
+ this.emitError(error);
246
+ }
247
+ // Update server if attached and we have valid config
248
+ if (this.serverApp && result.config) {
249
+ this.serverApp.reloadConfig(result.config.endpoints, result.config.flows);
250
+ }
251
+ // Emit reload event
252
+ const reloadEvent = {
253
+ changedFiles: events,
254
+ timestamp: new Date(),
255
+ };
256
+ await this.emitReload(reloadEvent);
257
+ }
258
+ catch (error) {
259
+ this.handleError(error instanceof Error ? error : new Error(String(error)));
260
+ }
261
+ finally {
262
+ this.isReloading = false;
263
+ }
264
+ }
265
+ /**
266
+ * Handle errors
267
+ */
268
+ handleError(error) {
269
+ this.emitError(error);
270
+ }
271
+ /**
272
+ * Emit reload event to all callbacks
273
+ */
274
+ async emitReload(event) {
275
+ for (const callback of this.reloadCallbacks) {
276
+ try {
277
+ await callback(event);
278
+ }
279
+ catch (error) {
280
+ console.error('Reload callback error:', error);
281
+ }
282
+ }
283
+ }
284
+ /**
285
+ * Emit error to all callbacks
286
+ */
287
+ emitError(error) {
288
+ for (const callback of this.errorCallbacks) {
289
+ try {
290
+ callback(error);
291
+ }
292
+ catch (err) {
293
+ console.error('Error callback error:', err);
294
+ }
295
+ }
296
+ }
297
+ /**
298
+ * Check if a file should be watched based on extension
299
+ */
300
+ isWatchableFile(filePath) {
301
+ const ext = path_1.default.extname(filePath).toLowerCase();
302
+ return this.options.extensions.includes(ext);
303
+ }
304
+ /**
305
+ * Determine which config directory a file belongs to
306
+ */
307
+ getFileDirectory(filePath) {
308
+ const normalized = path_1.default.normalize(filePath);
309
+ const endpointsDir = path_1.default.normalize(this.configLoader.getEndpointsDir());
310
+ const flowsDir = path_1.default.normalize(this.configLoader.getFlowsDir());
311
+ if (normalized.startsWith(endpointsDir)) {
312
+ return 'endpoints';
313
+ }
314
+ if (normalized.startsWith(flowsDir)) {
315
+ return 'flows';
316
+ }
317
+ return null;
318
+ }
319
+ /**
320
+ * Build ignore patterns for chokidar
321
+ */
322
+ buildIgnorePatterns() {
323
+ const patterns = [];
324
+ for (const pattern of this.options.ignorePatterns) {
325
+ if (pattern.includes('*')) {
326
+ // Convert glob-like patterns to regex
327
+ const regexPattern = pattern
328
+ .replace(/\./g, '\\.')
329
+ .replace(/\*/g, '.*');
330
+ patterns.push(new RegExp(regexPattern));
331
+ }
332
+ else {
333
+ patterns.push(pattern);
334
+ }
335
+ }
336
+ return patterns;
337
+ }
338
+ /**
339
+ * Check if a directory exists
340
+ */
341
+ async directoryExists(dirPath) {
342
+ try {
343
+ const fs = await Promise.resolve().then(() => __importStar(require('fs/promises')));
344
+ const stat = await fs.stat(dirPath);
345
+ return stat.isDirectory();
346
+ }
347
+ catch {
348
+ return false;
349
+ }
350
+ }
351
+ }
352
+ exports.ConfigWatcher = ConfigWatcher;
353
+ /**
354
+ * Factory function to create a ConfigWatcher
355
+ */
356
+ function createConfigWatcher(configLoader, options) {
357
+ return new ConfigWatcher(configLoader, options);
358
+ }
@@ -0,0 +1 @@
1
+ {"version":3,"file":"config-watcher.js","sourceRoot":"","sources":["../../src/watcher/config-watcher.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,7 @@
1
+ /**
2
+ * Watcher module - Configuration file watching for hot reload
3
+ */
4
+ export type { WatcherOptions, WatcherEvent, WatcherEventType, ReloadEvent, ReloadCallback, ErrorCallback, WatcherState, } from './types.js';
5
+ export { DEFAULT_WATCHER_OPTIONS } from './types.js';
6
+ export { ConfigWatcher, createConfigWatcher } from './config-watcher.js';
7
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/watcher/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,YAAY,EACV,cAAc,EACd,YAAY,EACZ,gBAAgB,EAChB,WAAW,EACX,cAAc,EACd,aAAa,EACb,YAAY,GACb,MAAM,YAAY,CAAC;AAEpB,OAAO,EAAE,uBAAuB,EAAE,MAAM,YAAY,CAAC;AAErD,OAAO,EAAE,aAAa,EAAE,mBAAmB,EAAE,MAAM,qBAAqB,CAAC"}
@@ -0,0 +1,8 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.createConfigWatcher = exports.ConfigWatcher = exports.DEFAULT_WATCHER_OPTIONS = void 0;
4
+ var types_js_1 = require("./types.js");
5
+ Object.defineProperty(exports, "DEFAULT_WATCHER_OPTIONS", { enumerable: true, get: function () { return types_js_1.DEFAULT_WATCHER_OPTIONS; } });
6
+ var config_watcher_js_1 = require("./config-watcher.js");
7
+ Object.defineProperty(exports, "ConfigWatcher", { enumerable: true, get: function () { return config_watcher_js_1.ConfigWatcher; } });
8
+ Object.defineProperty(exports, "createConfigWatcher", { enumerable: true, get: function () { return config_watcher_js_1.createConfigWatcher; } });
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/watcher/index.ts"],"names":[],"mappings":";;;AAaA,uCAAqD;AAA5C,mHAAA,uBAAuB,OAAA;AAEhC,yDAAyE;AAAhE,kHAAA,aAAa,OAAA;AAAE,wHAAA,mBAAmB,OAAA"}
@@ -0,0 +1,64 @@
1
+ /**
2
+ * Types for the configuration file watcher module
3
+ */
4
+ /**
5
+ * Configuration options for the file watcher
6
+ */
7
+ export interface WatcherOptions {
8
+ /** Debounce delay in milliseconds (default: 300) */
9
+ debounceMs?: number;
10
+ /** Whether to watch recursively in subdirectories (default: true) */
11
+ recursive?: boolean;
12
+ /** File extensions to watch (default: all supported config extensions) */
13
+ extensions?: string[];
14
+ /** Ignore patterns for files/directories */
15
+ ignorePatterns?: string[];
16
+ }
17
+ /**
18
+ * Default watcher options
19
+ */
20
+ export declare const DEFAULT_WATCHER_OPTIONS: Required<WatcherOptions>;
21
+ /**
22
+ * Event types emitted by the watcher
23
+ */
24
+ export type WatcherEventType = 'add' | 'change' | 'unlink';
25
+ /**
26
+ * Event data for file change events
27
+ */
28
+ export interface WatcherEvent {
29
+ /** Type of file system event */
30
+ type: WatcherEventType;
31
+ /** Absolute path to the changed file */
32
+ path: string;
33
+ /** Directory being watched (endpoints or flows) */
34
+ directory: 'endpoints' | 'flows';
35
+ }
36
+ /**
37
+ * Reload event data emitted after debounce
38
+ */
39
+ export interface ReloadEvent {
40
+ /** Files that triggered the reload */
41
+ changedFiles: WatcherEvent[];
42
+ /** Timestamp of the reload */
43
+ timestamp: Date;
44
+ }
45
+ /**
46
+ * Callback for reload events
47
+ */
48
+ export type ReloadCallback = (event: ReloadEvent) => void | Promise<void>;
49
+ /**
50
+ * Callback for error events
51
+ */
52
+ export type ErrorCallback = (error: Error) => void;
53
+ /**
54
+ * Watcher state
55
+ */
56
+ export interface WatcherState {
57
+ /** Whether the watcher is currently active */
58
+ watching: boolean;
59
+ /** Directories being watched */
60
+ watchedDirectories: string[];
61
+ /** Number of files being watched */
62
+ fileCount: number;
63
+ }
64
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/watcher/types.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH;;GAEG;AACH,MAAM,WAAW,cAAc;IAC7B,oDAAoD;IACpD,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,qEAAqE;IACrE,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,0EAA0E;IAC1E,UAAU,CAAC,EAAE,MAAM,EAAE,CAAC;IACtB,4CAA4C;IAC5C,cAAc,CAAC,EAAE,MAAM,EAAE,CAAC;CAC3B;AAED;;GAEG;AACH,eAAO,MAAM,uBAAuB,EAAE,QAAQ,CAAC,cAAc,CAK5D,CAAC;AAEF;;GAEG;AACH,MAAM,MAAM,gBAAgB,GAAG,KAAK,GAAG,QAAQ,GAAG,QAAQ,CAAC;AAE3D;;GAEG;AACH,MAAM,WAAW,YAAY;IAC3B,gCAAgC;IAChC,IAAI,EAAE,gBAAgB,CAAC;IACvB,wCAAwC;IACxC,IAAI,EAAE,MAAM,CAAC;IACb,mDAAmD;IACnD,SAAS,EAAE,WAAW,GAAG,OAAO,CAAC;CAClC;AAED;;GAEG;AACH,MAAM,WAAW,WAAW;IAC1B,sCAAsC;IACtC,YAAY,EAAE,YAAY,EAAE,CAAC;IAC7B,8BAA8B;IAC9B,SAAS,EAAE,IAAI,CAAC;CACjB;AAED;;GAEG;AACH,MAAM,MAAM,cAAc,GAAG,CAAC,KAAK,EAAE,WAAW,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;AAE1E;;GAEG;AACH,MAAM,MAAM,aAAa,GAAG,CAAC,KAAK,EAAE,KAAK,KAAK,IAAI,CAAC;AAEnD;;GAEG;AACH,MAAM,WAAW,YAAY;IAC3B,8CAA8C;IAC9C,QAAQ,EAAE,OAAO,CAAC;IAClB,gCAAgC;IAChC,kBAAkB,EAAE,MAAM,EAAE,CAAC;IAC7B,oCAAoC;IACpC,SAAS,EAAE,MAAM,CAAC;CACnB"}
@@ -0,0 +1,15 @@
1
+ "use strict";
2
+ /**
3
+ * Types for the configuration file watcher module
4
+ */
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.DEFAULT_WATCHER_OPTIONS = void 0;
7
+ /**
8
+ * Default watcher options
9
+ */
10
+ exports.DEFAULT_WATCHER_OPTIONS = {
11
+ debounceMs: 300,
12
+ recursive: true,
13
+ extensions: ['.json', '.js', '.ts', '.mjs', '.mts'],
14
+ ignorePatterns: ['node_modules', '.git', '*.d.ts', '*.test.*', '__tests__'],
15
+ };
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/watcher/types.ts"],"names":[],"mappings":";AAAA;;GAEG;;;AAgBH;;GAEG;AACU,QAAA,uBAAuB,GAA6B;IAC/D,UAAU,EAAE,GAAG;IACf,SAAS,EAAE,IAAI;IACf,UAAU,EAAE,CAAC,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,CAAC;IACnD,cAAc,EAAE,CAAC,cAAc,EAAE,MAAM,EAAE,QAAQ,EAAE,UAAU,EAAE,WAAW,CAAC;CAC5E,CAAC"}
package/package.json ADDED
@@ -0,0 +1,58 @@
1
+ {
2
+ "name": "@zze/mock-server",
3
+ "version": "0.2.4",
4
+ "description": "A reusable Node.js mock server for microfrontend development",
5
+ "type": "commonjs",
6
+ "main": "dist/index.js",
7
+ "types": "dist/index.d.ts",
8
+ "exports": {
9
+ ".": {
10
+ "types": "./dist/index.d.ts",
11
+ "require": "./dist/index.js"
12
+ }
13
+ },
14
+ "files": [
15
+ "dist"
16
+ ],
17
+ "scripts": {
18
+ "build": "tsc && npm run build:ui",
19
+ "build:lib": "tsc",
20
+ "build:ui": "vite build",
21
+ "dev": "tsc --watch",
22
+ "dev:ui": "vite",
23
+ "test": "vitest",
24
+ "test:run": "vitest run",
25
+ "prepublishOnly": "npm run build"
26
+ },
27
+ "engines": {
28
+ "node": ">=18.0.0"
29
+ },
30
+ "keywords": [
31
+ "mock-server",
32
+ "api",
33
+ "testing",
34
+ "development",
35
+ "microfrontend"
36
+ ],
37
+ "license": "MIT",
38
+ "dependencies": {
39
+ "chokidar": "^5.0.0",
40
+ "express": "^4.18.2",
41
+ "jiti": "^2.6.1",
42
+ "zod": "^3.22.4"
43
+ },
44
+ "devDependencies": {
45
+ "@types/express": "^4.17.21",
46
+ "@types/node": "^20.10.0",
47
+ "@types/react": "^19.2.14",
48
+ "@types/react-dom": "^19.2.3",
49
+ "react": "^19.2.4",
50
+ "react-dom": "^19.2.4",
51
+ "@types/supertest": "^6.0.3",
52
+ "@vitejs/plugin-react": "^5.1.4",
53
+ "supertest": "^7.2.2",
54
+ "typescript": "^5.3.2",
55
+ "vite": "^7.3.1",
56
+ "vitest": "^1.0.0"
57
+ }
58
+ }