vector-framework 0.9.8 → 1.0.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.
package/README.md CHANGED
@@ -67,7 +67,8 @@ const config: VectorConfigSchema = {
67
67
  ],
68
68
  after: [
69
69
  async (response, request) => {
70
- response.headers.set("X-Response-Time", `${Date.now() - request.startTime}ms`);
70
+ const duration = Date.now() - (request.startTime || Date.now());
71
+ response.headers.set("X-Response-Time", `${duration}ms`);
71
72
  return response;
72
73
  }
73
74
  ],
@@ -302,6 +303,7 @@ interface VectorConfigSchema {
302
303
  reusePort?: boolean; // Reuse port (default: true)
303
304
  development?: boolean; // Development mode
304
305
  routesDir?: string; // Routes directory (default: ./routes)
306
+ routeExcludePatterns?: string[]; // Patterns to exclude from route scanning
305
307
  idleTimeout?: number; // Idle timeout in seconds
306
308
 
307
309
  // CORS
@@ -330,6 +332,7 @@ const config: VectorConfigSchema = {
330
332
  hostname: "0.0.0.0",
331
333
  development: process.env.NODE_ENV !== "production",
332
334
  routesDir: "./api/routes",
335
+ routeExcludePatterns: ["*.test.ts", "*.spec.ts"], // Optional: custom exclusions
333
336
  idleTimeout: 60,
334
337
 
335
338
  cors: {
@@ -377,7 +380,7 @@ const config: VectorConfigSchema = {
377
380
  after: [
378
381
  // Response time header
379
382
  async (response, request) => {
380
- const duration = Date.now() - request.startTime;
383
+ const duration = Date.now() - (request.startTime || Date.now());
381
384
  response.headers.set("X-Response-Time", `${duration}ms`);
382
385
  return response;
383
386
  },
@@ -421,6 +424,7 @@ my-app/
421
424
  ├── routes/ # Auto-discovered routes
422
425
  │ ├── users.ts # /users endpoints
423
426
  │ ├── posts.ts # /posts endpoints
427
+ │ ├── users.test.ts # Test file (automatically excluded)
424
428
  │ └── admin/ # Nested routes
425
429
  │ └── stats.ts # /admin/stats endpoints
426
430
  ├── lib/ # Your libraries
@@ -430,6 +434,33 @@ my-app/
430
434
  └── package.json
431
435
  ```
432
436
 
437
+ ## Route Discovery
438
+
439
+ Vector automatically discovers and loads route files from your `routesDir` (default: `./routes`). By default, the following file patterns are excluded from route scanning:
440
+
441
+ - `*.test.ts`, `*.test.js`, `*.test.tsx`, `*.test.jsx` - Test files
442
+ - `*.spec.ts`, `*.spec.js`, `*.spec.tsx`, `*.spec.jsx` - Spec files
443
+ - `*.tests.ts`, `*.tests.js` - Test suite files
444
+ - `**/__tests__/**` - Test directories
445
+ - `*.interface.ts`, `*.type.ts` - Type definition files
446
+ - `*.d.ts` - TypeScript declaration files
447
+
448
+ You can customize the exclusion patterns using the `routeExcludePatterns` configuration option:
449
+
450
+ ```typescript
451
+ // vector.config.ts
452
+ const config: VectorConfigSchema = {
453
+ routesDir: "./routes",
454
+ // Custom exclusion patterns (overrides defaults)
455
+ routeExcludePatterns: [
456
+ "*.test.ts",
457
+ "*.spec.ts",
458
+ "*.mock.ts",
459
+ "_*.ts", // Exclude files starting with underscore
460
+ ],
461
+ };
462
+ ```
463
+
433
464
  ## Performance
434
465
 
435
466
  Vector achieves exceptional performance through:
package/dist/cli/index.js CHANGED
@@ -43,7 +43,6 @@ const { values, positionals } = parseArgs({
43
43
  const command = positionals[0] || "dev";
44
44
  async function runDev() {
45
45
  const isDev = command === "dev";
46
- console.log(`\n→ Starting Vector ${isDev ? "development" : "production"} server\n`);
47
46
  let server = null;
48
47
  let vector = null;
49
48
  async function startServer() {
@@ -55,64 +54,50 @@ async function runDev() {
55
54
  });
56
55
  // Create the actual server start promise
57
56
  const serverStartPromise = (async () => {
58
- try {
59
- // Load configuration using ConfigLoader
60
- const configLoader = new ConfigLoader(values.config);
61
- const config = await configLoader.load();
62
- const configSource = configLoader.getConfigSource();
63
- // Merge CLI options with loaded config
64
- // Only use CLI values if config doesn't have them
65
- config.port = config.port ?? Number.parseInt(values.port);
66
- config.hostname = config.hostname ?? values.host;
67
- config.routesDir = config.routesDir ?? values.routes;
68
- config.development = config.development ?? isDev;
69
- config.autoDiscover = true; // Always auto-discover routes
70
- // Apply CLI CORS option if not set in config
71
- if (!config.cors && values.cors) {
72
- config.cors = {
73
- origin: "*",
74
- credentials: true,
75
- allowHeaders: "Content-Type, Authorization",
76
- allowMethods: "GET, POST, PUT, PATCH, DELETE, OPTIONS",
77
- exposeHeaders: "Authorization",
78
- maxAge: 86400,
79
- };
80
- }
81
- // Get Vector instance and configure handlers
82
- vector = getVectorInstance();
83
- // Load and set auth handler if configured
84
- const authHandler = await configLoader.loadAuthHandler();
85
- if (authHandler) {
86
- vector.setProtectedHandler(authHandler);
87
- }
88
- // Load and set cache handler if configured
89
- const cacheHandler = await configLoader.loadCacheHandler();
90
- if (cacheHandler) {
91
- vector.setCacheHandler(cacheHandler);
92
- }
93
- // Start the server
94
- server = await vector.startServer(config);
95
- // Verify the server is actually running
96
- if (!server || !server.port) {
97
- throw new Error("Server started but is not responding correctly");
98
- }
99
- const gray = "\x1b[90m";
100
- const reset = "\x1b[0m";
101
- const cyan = "\x1b[36m";
102
- const green = "\x1b[32m";
103
- console.log(` ${gray}Config${reset} ${configSource === "user" ? "User config loaded" : "Using defaults"}`);
104
- console.log(` ${gray}Routes${reset} ${config.routesDir}`);
105
- if (isDev && values.watch) {
106
- console.log(` ${gray}Watching${reset} All project files`);
107
- }
108
- console.log(` ${gray}CORS${reset} ${config.cors ? "Enabled" : "Disabled"}`);
109
- console.log(` ${gray}Mode${reset} ${config.development ? "Development" : "Production"}\n`);
110
- console.log(` ${green}Ready${reset} → ${cyan}http://${config.hostname}:${config.port}${reset}\n`);
111
- return { server, vector, config };
57
+ // Load configuration using ConfigLoader
58
+ const configLoader = new ConfigLoader(values.config);
59
+ const config = await configLoader.load();
60
+ // Merge CLI options with loaded config
61
+ // Only use CLI values if config doesn't have them
62
+ config.port = config.port ?? Number.parseInt(values.port);
63
+ config.hostname = config.hostname ?? values.host;
64
+ config.routesDir = config.routesDir ?? values.routes;
65
+ config.development = config.development ?? isDev;
66
+ config.autoDiscover = true; // Always auto-discover routes
67
+ // Apply CLI CORS option if not explicitly set in config
68
+ // Only apply default CORS if config.cors is undefined (not set)
69
+ if (config.cors === undefined && values.cors) {
70
+ config.cors = {
71
+ origin: "*",
72
+ credentials: true,
73
+ allowHeaders: "Content-Type, Authorization",
74
+ allowMethods: "GET, POST, PUT, PATCH, DELETE, OPTIONS",
75
+ exposeHeaders: "Authorization",
76
+ maxAge: 86400,
77
+ };
78
+ }
79
+ // Get Vector instance and configure handlers
80
+ vector = getVectorInstance();
81
+ // Load and set auth handler if configured
82
+ const authHandler = await configLoader.loadAuthHandler();
83
+ if (authHandler) {
84
+ vector.setProtectedHandler(authHandler);
85
+ }
86
+ // Load and set cache handler if configured
87
+ const cacheHandler = await configLoader.loadCacheHandler();
88
+ if (cacheHandler) {
89
+ vector.setCacheHandler(cacheHandler);
112
90
  }
113
- catch (error) {
114
- throw error;
91
+ // Start the server
92
+ server = await vector.startServer(config);
93
+ // Verify the server is actually running
94
+ if (!server || !server.port) {
95
+ throw new Error("Server started but is not responding correctly");
115
96
  }
97
+ const cyan = "\x1b[36m";
98
+ const reset = "\x1b[0m";
99
+ console.log(`\nListening on ${cyan}http://${config.hostname}:${config.port}${reset}\n`);
100
+ return { server, vector, config };
116
101
  })();
117
102
  // Race between server startup and timeout
118
103
  return await Promise.race([serverStartPromise, timeoutPromise]);
@@ -165,9 +150,13 @@ async function runDev() {
165
150
  // Small delay to ensure file system operations complete
166
151
  await new Promise((resolve) => setTimeout(resolve, 100));
167
152
  // Clear module cache to ensure fresh imports
168
- for (const key in require.cache) {
169
- if (!key.includes("node_modules")) {
170
- delete require.cache[key];
153
+ // Note: Bun uses ESM and doesn't have require.cache
154
+ // The Loader API will handle module reloading automatically
155
+ if (typeof require !== 'undefined' && require.cache) {
156
+ for (const key in require.cache) {
157
+ if (!key.includes("node_modules")) {
158
+ delete require.cache[key];
159
+ }
171
160
  }
172
161
  }
173
162
  // Restart the server
@@ -181,74 +170,83 @@ async function runDev() {
181
170
  // Don't exit the process on reload failures, just continue watching
182
171
  }
183
172
  finally {
184
- // Reset flag after a delay
185
- setTimeout(() => {
186
- isReloading = false;
187
- }, 2000); // 2 second cooldown
173
+ // Reset flag immediately after reload completes
174
+ // The lastReloadTime check provides additional protection
175
+ isReloading = false;
188
176
  }
189
177
  }, 500); // Increased debounce to 500ms
190
178
  }
191
179
  });
192
180
  }
193
- catch (err) {
194
- console.warn(" ⚠️ File watching not available");
181
+ catch {
182
+ const yellow = "\x1b[33m";
183
+ const reset = "\x1b[0m";
184
+ console.warn(`${yellow}Warning: File watching not available${reset}`);
195
185
  }
196
186
  }
197
187
  }
198
188
  catch (error) {
199
189
  const red = "\x1b[31m";
200
190
  const reset = "\x1b[0m";
201
- console.error(`\n${red}[ERROR] Failed to start server${reset}\n`);
202
- // Always show the error message and stack trace
203
- if (error.message) {
204
- console.error(`Message: ${error.message}`);
205
- }
206
- if (error.stack) {
207
- console.error(`\nStack trace:`);
191
+ console.error(`\n${red}Error: ${error.message || error}${reset}\n`);
192
+ if (error.stack && process.env.NODE_ENV === "development") {
208
193
  console.error(error.stack);
209
194
  }
210
- else if (!error.message) {
211
- // If no message or stack, show the raw error
212
- console.error(`Raw error:`, error);
213
- }
214
- // Ensure we exit with error code
215
195
  process.exit(1);
216
196
  }
217
197
  }
218
198
  async function runBuild() {
219
- console.log("\n→ Building Vector application\n");
220
199
  try {
221
200
  const { RouteScanner } = await import("../dev/route-scanner");
222
201
  const { RouteGenerator } = await import("../dev/route-generator");
202
+ // Step 1: Scan and generate routes
223
203
  const scanner = new RouteScanner(values.routes);
224
204
  const generator = new RouteGenerator();
225
205
  const routes = await scanner.scan();
226
206
  await generator.generate(routes);
227
- console.log(` Generated ${routes.length} routes`);
228
- // Use spawn based on runtime
207
+ // Step 2: Build the application with Bun
229
208
  if (typeof Bun !== "undefined") {
209
+ // Build the CLI as an executable
230
210
  const buildProcess = Bun.spawn([
231
211
  "bun",
232
212
  "build",
233
- "src/index.ts",
234
- "--outdir",
235
- "dist",
213
+ "src/cli/index.ts",
214
+ "--target",
215
+ "bun",
216
+ "--outfile",
217
+ "dist/server.js",
236
218
  "--minify",
237
219
  ]);
238
- await buildProcess.exited;
220
+ const exitCode = await buildProcess.exited;
221
+ if (exitCode !== 0) {
222
+ throw new Error(`Build failed with exit code ${exitCode}`);
223
+ }
239
224
  }
240
225
  else {
241
226
  // For Node.js, use child_process
242
227
  const { spawnSync } = await import("child_process");
243
- spawnSync("bun", ["build", "src/index.ts", "--outdir", "dist", "--minify"], {
228
+ const result = spawnSync("bun", [
229
+ "build",
230
+ "src/cli/index.ts",
231
+ "--target",
232
+ "bun",
233
+ "--outfile",
234
+ "dist/server.js",
235
+ "--minify",
236
+ ], {
244
237
  stdio: "inherit",
245
238
  shell: true,
246
239
  });
240
+ if (result.status !== 0) {
241
+ throw new Error(`Build failed with exit code ${result.status}`);
242
+ }
247
243
  }
248
- console.log("\n ✓ Build complete\n");
244
+ console.log("\nBuild complete: dist/server.js\n");
249
245
  }
250
246
  catch (error) {
251
- console.error("[ERROR] Build failed:", error);
247
+ const red = "\x1b[31m";
248
+ const reset = "\x1b[0m";
249
+ console.error(`\n${red}Error: ${error.message || error}${reset}\n`);
252
250
  process.exit(1);
253
251
  }
254
252
  }
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/cli/index.ts"],"names":[],"mappings":";AAEA,OAAO,EAAE,KAAK,EAAE,MAAM,SAAS,CAAC;AAChC,OAAO,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AACtC,OAAO,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAC;AACnD,OAAO,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AAErD,4CAA4C;AAC5C,MAAM,IAAI,GACR,OAAO,GAAG,KAAK,WAAW,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;AAEzE,MAAM,EAAE,MAAM,EAAE,WAAW,EAAE,GAAG,SAAS,CAAC;IACxC,IAAI;IACJ,OAAO,EAAE;QACP,IAAI,EAAE;YACJ,IAAI,EAAE,QAAQ;YACd,KAAK,EAAE,GAAG;YACV,OAAO,EAAE,MAAM;SAChB;QACD,IAAI,EAAE;YACJ,IAAI,EAAE,QAAQ;YACd,KAAK,EAAE,GAAG;YACV,OAAO,EAAE,WAAW;SACrB;QACD,MAAM,EAAE;YACN,IAAI,EAAE,QAAQ;YACd,KAAK,EAAE,GAAG;YACV,OAAO,EAAE,UAAU;SACpB;QACD,KAAK,EAAE;YACL,IAAI,EAAE,SAAS;YACf,KAAK,EAAE,GAAG;YACV,OAAO,EAAE,IAAI;SACd;QACD,IAAI,EAAE;YACJ,IAAI,EAAE,SAAS;YACf,OAAO,EAAE,IAAI;SACd;QACD,MAAM,EAAE;YACN,IAAI,EAAE,QAAQ;YACd,KAAK,EAAE,GAAG;SACX;KACF;IACD,MAAM,EAAE,IAAI;IACZ,gBAAgB,EAAE,IAAI;CACvB,CAAC,CAAC;AAEH,MAAM,OAAO,GAAG,WAAW,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC;AAExC,KAAK,UAAU,MAAM;IACnB,MAAM,KAAK,GAAG,OAAO,KAAK,KAAK,CAAC;IAChC,OAAO,CAAC,GAAG,CACT,uBAAuB,KAAK,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,YAAY,WAAW,CACvE,CAAC;IAEF,IAAI,MAAM,GAAQ,IAAI,CAAC;IACvB,IAAI,MAAM,GAAQ,IAAI,CAAC;IAEvB,KAAK,UAAU,WAAW;QACxB,yDAAyD;QACzD,MAAM,cAAc,GAAG,IAAI,OAAO,CAAQ,CAAC,CAAC,EAAE,MAAM,EAAE,EAAE;YACtD,UAAU,CAAC,GAAG,EAAE;gBACd,MAAM,CAAC,IAAI,KAAK,CAAC,gCAAgC,CAAC,CAAC,CAAC;YACtD,CAAC,EAAE,KAAK,CAAC,CAAC;QACZ,CAAC,CAAC,CAAC;QAEH,yCAAyC;QACzC,MAAM,kBAAkB,GAAG,CAAC,KAAK,IAAwD,EAAE;YACzF,IAAI,CAAC;gBACH,wCAAwC;gBACxC,MAAM,YAAY,GAAG,IAAI,YAAY,CAAC,MAAM,CAAC,MAA4B,CAAC,CAAC;gBAC3E,MAAM,MAAM,GAAG,MAAM,YAAY,CAAC,IAAI,EAAE,CAAC;gBACzC,MAAM,YAAY,GAAG,YAAY,CAAC,eAAe,EAAE,CAAC;gBAEpD,uCAAuC;gBACvC,kDAAkD;gBAClD,MAAM,CAAC,IAAI,GAAG,MAAM,CAAC,IAAI,IAAI,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAc,CAAC,CAAC;gBACpE,MAAM,CAAC,QAAQ,GAAG,MAAM,CAAC,QAAQ,IAAK,MAAM,CAAC,IAAe,CAAC;gBAC7D,MAAM,CAAC,SAAS,GAAG,MAAM,CAAC,SAAS,IAAK,MAAM,CAAC,MAAiB,CAAC;gBACjE,MAAM,CAAC,WAAW,GAAG,MAAM,CAAC,WAAW,IAAI,KAAK,CAAC;gBACjD,MAAM,CAAC,YAAY,GAAG,IAAI,CAAC,CAAC,8BAA8B;gBAE1D,6CAA6C;gBAC7C,IAAI,CAAC,MAAM,CAAC,IAAI,IAAI,MAAM,CAAC,IAAI,EAAE,CAAC;oBAChC,MAAM,CAAC,IAAI,GAAG;wBACZ,MAAM,EAAE,GAAG;wBACX,WAAW,EAAE,IAAI;wBACjB,YAAY,EAAE,6BAA6B;wBAC3C,YAAY,EAAE,wCAAwC;wBACtD,aAAa,EAAE,eAAe;wBAC9B,MAAM,EAAE,KAAK;qBACd,CAAC;gBACJ,CAAC;gBAED,6CAA6C;gBAC7C,MAAM,GAAG,iBAAiB,EAAE,CAAC;gBAE7B,0CAA0C;gBAC1C,MAAM,WAAW,GAAG,MAAM,YAAY,CAAC,eAAe,EAAE,CAAC;gBACzD,IAAI,WAAW,EAAE,CAAC;oBAChB,MAAM,CAAC,mBAAmB,CAAC,WAAW,CAAC,CAAC;gBAC1C,CAAC;gBAED,2CAA2C;gBAC3C,MAAM,YAAY,GAAG,MAAM,YAAY,CAAC,gBAAgB,EAAE,CAAC;gBAC3D,IAAI,YAAY,EAAE,CAAC;oBACjB,MAAM,CAAC,eAAe,CAAC,YAAY,CAAC,CAAC;gBACvC,CAAC;gBAED,mBAAmB;gBACnB,MAAM,GAAG,MAAM,MAAM,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;gBAE1C,wCAAwC;gBACxC,IAAI,CAAC,MAAM,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC;oBAC5B,MAAM,IAAI,KAAK,CAAC,gDAAgD,CAAC,CAAC;gBACpE,CAAC;gBAED,MAAM,IAAI,GAAG,UAAU,CAAC;gBACxB,MAAM,KAAK,GAAG,SAAS,CAAC;gBACxB,MAAM,IAAI,GAAG,UAAU,CAAC;gBACxB,MAAM,KAAK,GAAG,UAAU,CAAC;gBAEzB,OAAO,CAAC,GAAG,CACT,KAAK,IAAI,SAAS,KAAK,QACrB,YAAY,KAAK,MAAM,CAAC,CAAC,CAAC,oBAAoB,CAAC,CAAC,CAAC,gBACnD,EAAE,CACH,CAAC;gBACF,OAAO,CAAC,GAAG,CAAC,KAAK,IAAI,SAAS,KAAK,QAAQ,MAAM,CAAC,SAAS,EAAE,CAAC,CAAC;gBAC/D,IAAI,KAAK,IAAI,MAAM,CAAC,KAAK,EAAE,CAAC;oBAC1B,OAAO,CAAC,GAAG,CAAC,KAAK,IAAI,WAAW,KAAK,sBAAsB,CAAC,CAAC;gBAC/D,CAAC;gBACD,OAAO,CAAC,GAAG,CACT,KAAK,IAAI,OAAO,KAAK,UAAU,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,UAAU,EAAE,CACtE,CAAC;gBACF,OAAO,CAAC,GAAG,CACT,KAAK,IAAI,OAAO,KAAK,UAAU,MAAM,CAAC,WAAW,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,YAAY,IAAI,CACrF,CAAC;gBACF,OAAO,CAAC,GAAG,CACT,KAAK,KAAK,QAAQ,KAAK,MAAM,IAAI,UAAU,MAAM,CAAC,QAAQ,IAAI,MAAM,CAAC,IAAI,GAAG,KAAK,IAAI,CACtF,CAAC;gBAEF,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC;YACpC,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,MAAM,KAAK,CAAC;YACd,CAAC;QACH,CAAC,CAAC,EAAE,CAAC;QAEL,0CAA0C;QAC1C,OAAO,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC,kBAAkB,EAAE,cAAc,CAAC,CAAC,CAAC;IAClE,CAAC;IAED,IAAI,CAAC;QACH,6BAA6B;QAC7B,MAAM,MAAM,GAAG,MAAM,WAAW,EAAE,CAAC;QACnC,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC;QAEvB,qCAAqC;QACrC,IAAI,KAAK,IAAI,MAAM,CAAC,KAAK,EAAE,CAAC;YAC1B,IAAI,CAAC;gBACH,IAAI,aAAa,GAAQ,IAAI,CAAC;gBAC9B,IAAI,WAAW,GAAG,KAAK,CAAC;gBACxB,MAAM,YAAY,GAAG,IAAI,GAAG,EAAU,CAAC;gBACvC,IAAI,cAAc,GAAG,CAAC,CAAC;gBAEvB,6CAA6C;gBAC7C,KAAK,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,EAAE,KAAK,EAAE,CAAC,EAAE,QAAQ,EAAE,EAAE;oBAC9D,kEAAkE;oBAClE,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;oBACvB,IAAI,WAAW,IAAI,GAAG,GAAG,cAAc,GAAG,IAAI;wBAAE,OAAO;oBAEvD,IACE,QAAQ;wBACR,CAAC,QAAQ,CAAC,QAAQ,CAAC,KAAK,CAAC;4BACvB,QAAQ,CAAC,QAAQ,CAAC,KAAK,CAAC;4BACxB,QAAQ,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;wBAC7B,CAAC,QAAQ,CAAC,QAAQ,CAAC,cAAc,CAAC;wBAClC,CAAC,QAAQ,CAAC,QAAQ,CAAC,MAAM,CAAC;wBAC1B,CAAC,QAAQ,CAAC,QAAQ,CAAC,SAAS,CAAC,IAAI,yBAAyB;wBAC1D,CAAC,QAAQ,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,qBAAqB;wBACnD,CAAC,QAAQ,CAAC,QAAQ,CAAC,WAAW,CAAC,IAAI,oBAAoB;wBACvD,CAAC,QAAQ,CAAC,QAAQ,CAAC,eAAe,CAAC,CAAC,yBAAyB;sBAC7D,CAAC;wBACD,sBAAsB;wBACtB,YAAY,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;wBAE3B,6CAA6C;wBAC7C,IAAI,aAAa,EAAE,CAAC;4BAClB,YAAY,CAAC,aAAa,CAAC,CAAC;wBAC9B,CAAC;wBAED,aAAa,GAAG,UAAU,CAAC,KAAK,IAAI,EAAE;4BACpC,IAAI,WAAW,IAAI,YAAY,CAAC,IAAI,KAAK,CAAC;gCAAE,OAAO;4BAEnD,WAAW,GAAG,IAAI,CAAC;4BACnB,cAAc,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;4BAE5B,sBAAsB;4BACtB,YAAY,CAAC,KAAK,EAAE,CAAC;4BAErB,0BAA0B;4BAC1B,IAAI,MAAM,EAAE,CAAC;gCACX,MAAM,CAAC,IAAI,EAAE,CAAC;4BAChB,CAAC;4BAED,wDAAwD;4BACxD,MAAM,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC,CAAC;4BAEzD,6CAA6C;4BAC7C,KAAK,MAAM,GAAG,IAAI,OAAO,CAAC,KAAK,EAAE,CAAC;gCAChC,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,cAAc,CAAC,EAAE,CAAC;oCAClC,OAAO,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;gCAC5B,CAAC;4BACH,CAAC;4BAED,qBAAqB;4BACrB,IAAI,CAAC;gCACH,MAAM,MAAM,GAAG,MAAM,WAAW,EAAE,CAAC;gCACnC,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC;gCACvB,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC;4BACzB,CAAC;4BAAC,OAAO,KAAU,EAAE,CAAC;gCACpB,OAAO,CAAC,KAAK,CAAC,kBAAkB,EAAE,KAAK,CAAC,OAAO,IAAI,KAAK,CAAC,CAAC;gCAC1D,oEAAoE;4BACtE,CAAC;oCAAS,CAAC;gCACT,2BAA2B;gCAC3B,UAAU,CAAC,GAAG,EAAE;oCACd,WAAW,GAAG,KAAK,CAAC;gCACtB,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,oBAAoB;4BAChC,CAAC;wBACH,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,8BAA8B;oBACzC,CAAC;gBACH,CAAC,CAAC,CAAC;YACL,CAAC;YAAC,OAAO,GAAG,EAAE,CAAC;gBACb,OAAO,CAAC,IAAI,CAAC,mCAAmC,CAAC,CAAC;YACpD,CAAC;QACH,CAAC;IACH,CAAC;IAAC,OAAO,KAAU,EAAE,CAAC;QACpB,MAAM,GAAG,GAAG,UAAU,CAAC;QACvB,MAAM,KAAK,GAAG,SAAS,CAAC;QAExB,OAAO,CAAC,KAAK,CAAC,KAAK,GAAG,iCAAiC,KAAK,IAAI,CAAC,CAAC;QAElE,gDAAgD;QAChD,IAAI,KAAK,CAAC,OAAO,EAAE,CAAC;YAClB,OAAO,CAAC,KAAK,CAAC,YAAY,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC;QAC7C,CAAC;QAED,IAAI,KAAK,CAAC,KAAK,EAAE,CAAC;YAChB,OAAO,CAAC,KAAK,CAAC,gBAAgB,CAAC,CAAC;YAChC,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;QAC7B,CAAC;aAAM,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC;YAC1B,6CAA6C;YAC7C,OAAO,CAAC,KAAK,CAAC,YAAY,EAAE,KAAK,CAAC,CAAC;QACrC,CAAC;QAED,iCAAiC;QACjC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;AACH,CAAC;AAED,KAAK,UAAU,QAAQ;IACrB,OAAO,CAAC,GAAG,CAAC,mCAAmC,CAAC,CAAC;IAEjD,IAAI,CAAC;QACH,MAAM,EAAE,YAAY,EAAE,GAAG,MAAM,MAAM,CAAC,sBAAsB,CAAC,CAAC;QAC9D,MAAM,EAAE,cAAc,EAAE,GAAG,MAAM,MAAM,CAAC,wBAAwB,CAAC,CAAC;QAElE,MAAM,OAAO,GAAG,IAAI,YAAY,CAAC,MAAM,CAAC,MAAgB,CAAC,CAAC;QAC1D,MAAM,SAAS,GAAG,IAAI,cAAc,EAAE,CAAC;QAEvC,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC,IAAI,EAAE,CAAC;QACpC,MAAM,SAAS,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;QAEjC,OAAO,CAAC,GAAG,CAAC,eAAe,MAAM,CAAC,MAAM,SAAS,CAAC,CAAC;QAEnD,6BAA6B;QAC7B,IAAI,OAAO,GAAG,KAAK,WAAW,EAAE,CAAC;YAC/B,MAAM,YAAY,GAAG,GAAG,CAAC,KAAK,CAAC;gBAC7B,KAAK;gBACL,OAAO;gBACP,cAAc;gBACd,UAAU;gBACV,MAAM;gBACN,UAAU;aACX,CAAC,CAAC;YACH,MAAM,YAAY,CAAC,MAAM,CAAC;QAC5B,CAAC;aAAM,CAAC;YACN,iCAAiC;YACjC,MAAM,EAAE,SAAS,EAAE,GAAG,MAAM,MAAM,CAAC,eAAe,CAAC,CAAC;YACpD,SAAS,CACP,KAAK,EACL,CAAC,OAAO,EAAE,cAAc,EAAE,UAAU,EAAE,MAAM,EAAE,UAAU,CAAC,EACzD;gBACE,KAAK,EAAE,SAAS;gBAChB,KAAK,EAAE,IAAI;aACZ,CACF,CAAC;QACJ,CAAC;QAED,OAAO,CAAC,GAAG,CAAC,wBAAwB,CAAC,CAAC;IACxC,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,CAAC,KAAK,CAAC,uBAAuB,EAAE,KAAK,CAAC,CAAC;QAC9C,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;AACH,CAAC;AAED,QAAQ,OAAO,EAAE,CAAC;IAChB,KAAK,KAAK;QACR,MAAM,MAAM,EAAE,CAAC;QACf,MAAM;IACR,KAAK,OAAO;QACV,MAAM,QAAQ,EAAE,CAAC;QACjB,MAAM;IACR,KAAK,OAAO;QACV,OAAO,CAAC,GAAG,CAAC,QAAQ,GAAG,YAAY,CAAC;QACpC,MAAM,MAAM,EAAE,CAAC;QACf,MAAM;IACR;QACE,OAAO,CAAC,KAAK,CAAC,oBAAoB,OAAO,EAAE,CAAC,CAAC;QAC7C,OAAO,CAAC,GAAG,CAAC;;;;;;;;;;;;;;;CAef,CAAC,CAAC;QACC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AACpB,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/cli/index.ts"],"names":[],"mappings":"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"}