mulink 1.0.0 → 1.0.3

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/dist/lib/cli.cjs CHANGED
@@ -1,22 +1,22 @@
1
1
  #!/usr/bin/env node
2
2
  'use strict';
3
3
 
4
- var chunkF6QVO6NR_cjs = require('./chunk-F6QVO6NR.cjs');
4
+ var chunkRGLCJDOY_cjs = require('./chunk-RGLCJDOY.cjs');
5
5
  var commander = require('commander');
6
6
 
7
- var BANNER = /* @__PURE__ */ chunkF6QVO6NR_cjs.__name((version) => `
8
- \u2588\u2588\u2588\u2588\u2588\u2588\u2557 \u2588\u2588\u2588\u2588\u2588\u2588\u2557 \u2588\u2588\u2557\u2588\u2588\u2588\u2588\u2588\u2588\u2557 \u2588\u2588\u2588\u2588\u2588\u2588\u2557 \u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2557
9
- \u2588\u2588\u2554\u2550\u2550\u2588\u2588\u2557\u2588\u2588\u2554\u2550\u2550\u2588\u2588\u2557\u2588\u2588\u2551\u2588\u2588\u2554\u2550\u2550\u2588\u2588\u2557\u2588\u2588\u2554\u2550\u2550\u2550\u2550\u255D \u2588\u2588\u2554\u2550\u2550\u2550\u2550\u255D
10
- \u2588\u2588\u2588\u2588\u2588\u2588\u2554\u255D\u2588\u2588\u2551 \u2588\u2588\u2551\u2588\u2588\u2551\u2588\u2588\u2551 \u2588\u2588\u2551\u2588\u2588\u2551 \u2588\u2588\u2588\u2557\u2588\u2588\u2588\u2588\u2588\u2557
11
- \u2588\u2588\u2554\u2550\u2550\u2588\u2588\u2557\u2588\u2588\u2551 \u2588\u2588\u2551\u2588\u2588\u2551\u2588\u2588\u2551 \u2588\u2588\u2551\u2588\u2588\u2551 \u2588\u2588\u2551\u2588\u2588\u2554\u2550\u2550\u255D
12
- \u2588\u2588\u2588\u2588\u2588\u2588\u2554\u255D\u2588\u2588\u2588\u2588\u2588\u2588\u2554\u255D\u2588\u2588\u2551\u2588\u2588\u2588\u2588\u2588\u2588\u2554\u255D\u255A\u2588\u2588\u2588\u2588\u2588\u2588\u2554\u255D\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2557
13
- \u255A\u2550\u2550\u2550\u2550\u2550\u255D \u255A\u2550\u2550\u2550\u2550\u2550\u255D \u255A\u2550\u255D\u255A\u2550\u2550\u2550\u2550\u2550\u255D \u255A\u2550\u2550\u2550\u2550\u2550\u255D \u255A\u2550\u2550\u2550\u2550\u2550\u2550\u255D
7
+ var BANNER = /* @__PURE__ */ chunkRGLCJDOY_cjs.__name((version) => `
8
+ \u2588\u2588\u2588\u2557 \u2588\u2588\u2588\u2557\u2588\u2588\u2557 \u2588\u2588\u2557\u2588\u2588\u2557 \u2588\u2588\u2557\u2588\u2588\u2588\u2557 \u2588\u2588\u2557\u2588\u2588\u2557 \u2588\u2588\u2557
9
+ \u2588\u2588\u2588\u2588\u2557 \u2588\u2588\u2588\u2588\u2551\u2588\u2588\u2551 \u2588\u2588\u2551\u2588\u2588\u2551 \u2588\u2588\u2551\u2588\u2588\u2588\u2588\u2557 \u2588\u2588\u2551\u2588\u2588\u2551 \u2588\u2588\u2554\u255D
10
+ \u2588\u2588\u2554\u2588\u2588\u2588\u2588\u2554\u2588\u2588\u2551\u2588\u2588\u2551 \u2588\u2588\u2551\u2588\u2588\u2551 \u2588\u2588\u2551\u2588\u2588\u2554\u2588\u2588\u2557 \u2588\u2588\u2551\u2588\u2588\u2588\u2588\u2588\u2554\u255D
11
+ \u2588\u2588\u2551\u255A\u2588\u2588\u2554\u255D\u2588\u2588\u2551\u2588\u2588\u2551 \u2588\u2588\u2551\u2588\u2588\u2551 \u2588\u2588\u2551\u2588\u2588\u2551\u255A\u2588\u2588\u2557\u2588\u2588\u2551\u2588\u2588\u2554\u2550\u2588\u2588\u2557
12
+ \u2588\u2588\u2551 \u255A\u2550\u255D \u2588\u2588\u2551\u255A\u2588\u2588\u2588\u2588\u2588\u2588\u2554\u255D\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2557\u2588\u2588\u2551\u2588\u2588\u2551 \u255A\u2588\u2588\u2588\u2588\u2551\u2588\u2588\u2551 \u2588\u2588\u2557
13
+ \u255A\u2550\u255D \u255A\u2550\u255D \u255A\u2550\u2550\u2550\u2550\u2550\u255D \u255A\u2550\u2550\u2550\u2550\u2550\u2550\u255D\u255A\u2550\u255D\u255A\u2550\u255D \u255A\u2550\u2550\u2550\u255D\u255A\u2550\u255D \u255A\u2550\u255D
14
14
 
15
15
  \u{1F517} Mulink - Universal Type-Safe API Integration
16
16
  \u{1F517} Connect APIs \u2022 Generate Clients \u2022 Type Safety
17
17
  \u{1F4E6} Version: ${version} \u2022 \u{1F680} Next.js 16+ \u2022 \u26A1 OpenAPI 3.x
18
18
  `, "BANNER");
19
- var logger = new chunkF6QVO6NR_cjs.BridgeLogger({ prefix: "\u{1F517} Mulink CLI" });
19
+ var logger = new chunkRGLCJDOY_cjs.BridgeLogger({ prefix: "\u{1F517} Mulink CLI" });
20
20
  function displayBanner(version, updateInfo) {
21
21
  let banner = BANNER(version);
22
22
  if (updateInfo && updateInfo.updateAvailable) {
@@ -38,7 +38,7 @@ function displayBanner(version, updateInfo) {
38
38
  }
39
39
  console.log(banner);
40
40
  }
41
- chunkF6QVO6NR_cjs.__name(displayBanner, "displayBanner");
41
+ chunkRGLCJDOY_cjs.__name(displayBanner, "displayBanner");
42
42
  function displayColoredBanner(version, updateInfo) {
43
43
  const colors = {
44
44
  reset: "\x1B[0m",
@@ -66,9 +66,9 @@ function displayColoredBanner(version, updateInfo) {
66
66
  }
67
67
  console.log(banner);
68
68
  }
69
- chunkF6QVO6NR_cjs.__name(displayColoredBanner, "displayColoredBanner");
69
+ chunkRGLCJDOY_cjs.__name(displayColoredBanner, "displayColoredBanner");
70
70
  var program = new commander.Command();
71
- var versionChecker = chunkF6QVO6NR_cjs.createBridgeVersionChecker(logger);
71
+ var versionChecker = chunkRGLCJDOY_cjs.createBridgeVersionChecker(logger);
72
72
  program.name("mulink").description("Universal type-safe API integration library for modern web applications").version(versionChecker.getCurrentVersion()).option("-v, --verbose", "Enable verbose logging").option("-q, --quiet", "Suppress non-error output").option("--no-color", "Disable colored output").option("--no-banner", "Disable banner display").hook("preAction", async (thisCommand) => {
73
73
  const opts = thisCommand.opts();
74
74
  if (opts.verbose) {
@@ -82,7 +82,7 @@ program.name("mulink").description("Universal type-safe API integration library
82
82
  let updateInfo = null;
83
83
  if (!opts.quiet) {
84
84
  try {
85
- const versionChecker2 = chunkF6QVO6NR_cjs.createBridgeVersionChecker(logger);
85
+ const versionChecker2 = chunkRGLCJDOY_cjs.createBridgeVersionChecker(logger);
86
86
  const versionInfo = await versionChecker2.checkForUpdates();
87
87
  if (versionInfo && versionInfo.updateAvailable) {
88
88
  const upgradeCommand = versionChecker2.getUpgradeCommand(versionInfo);
@@ -109,10 +109,10 @@ program.name("mulink").description("Universal type-safe API integration library
109
109
  program.command("generate").alias("gen").description("Generate API client code from OpenAPI schema").option("-c, --config <path>", "Path to config file", "link.config.json").option("-w, --watch", "Watch for schema changes and regenerate automatically").option("--dry-run", "Show what would be generated without writing files").action(async (options) => {
110
110
  const spinner = logger.spinner("Initializing generation...");
111
111
  try {
112
- const configLoader = new chunkF6QVO6NR_cjs.ConfigurationLoader();
112
+ const configLoader = new chunkRGLCJDOY_cjs.ConfigurationLoader();
113
113
  const config = await configLoader.load(options.config);
114
114
  spinner.succeed("Configuration loaded");
115
- const bridge = new chunkF6QVO6NR_cjs.BridgeCore();
115
+ const bridge = new chunkRGLCJDOY_cjs.BridgeCore();
116
116
  if (options.dryRun) {
117
117
  logger.info("\u{1F50D} Dry run mode - validation only");
118
118
  const validationSpinner = logger.spinner("Validating schema...");
@@ -164,7 +164,7 @@ program.command("generate").alias("gen").description("Generate API client code f
164
164
  program.command("init").description("Initialize a new Mulink project").option("-f, --framework <type>", "Framework type", "nextjs").option("--router <type>", "Next.js router type", "app").option("-s, --schema <url>", "OpenAPI schema URL").option("-o, --output <dir>", "Output directory", "src/generated").action(async (options) => {
165
165
  const spinner = logger.spinner("Initializing Mulink project...");
166
166
  try {
167
- const configLoader = new chunkF6QVO6NR_cjs.ConfigurationLoader();
167
+ const configLoader = new chunkRGLCJDOY_cjs.ConfigurationLoader();
168
168
  const config = await configLoader.createDefault(options.framework);
169
169
  if (options.schema) config.schema = options.schema;
170
170
  if (options.output) config.outputDir = options.output;
@@ -195,9 +195,9 @@ program.command("init").description("Initialize a new Mulink project").option("-
195
195
  });
196
196
  program.command("validate").description("Validate OpenAPI schema and configuration").option("-c, --config <path>", "Path to config file", "link.config.json").option("--schema-only", "Only validate the OpenAPI schema").action(async (options) => {
197
197
  try {
198
- const configLoader = new chunkF6QVO6NR_cjs.ConfigurationLoader();
198
+ const configLoader = new chunkRGLCJDOY_cjs.ConfigurationLoader();
199
199
  const config = await configLoader.load(options.config);
200
- const bridge = new chunkF6QVO6NR_cjs.BridgeCore();
200
+ const bridge = new chunkRGLCJDOY_cjs.BridgeCore();
201
201
  if (options.schemaOnly) {
202
202
  const isValid = await bridge.validateSchema(config.schema);
203
203
  if (isValid) {
@@ -228,9 +228,9 @@ program.command("validate").description("Validate OpenAPI schema and configurati
228
228
  program.command("clean").description("Clean generated files and cache").option("-c, --config <path>", "Path to config file", "link.config.json").option("--force", "Force clean without confirmation").action(async (options) => {
229
229
  const spinner = logger.spinner("Cleaning cache and generated files...");
230
230
  try {
231
- const configLoader = new chunkF6QVO6NR_cjs.ConfigurationLoader();
231
+ const configLoader = new chunkRGLCJDOY_cjs.ConfigurationLoader();
232
232
  const config = await configLoader.load(options.config);
233
- const bridge = new chunkF6QVO6NR_cjs.BridgeCore();
233
+ const bridge = new chunkRGLCJDOY_cjs.BridgeCore();
234
234
  bridge.clearCache();
235
235
  spinner.succeed("Cache and generated files cleared successfully");
236
236
  logger.info("\u{1F9F9} Cleaned:");
@@ -252,7 +252,7 @@ program.command("clean").description("Clean generated files and cache").option("
252
252
  });
253
253
  program.command("info").description("Show project information and status").option("-c, --config <path>", "Path to config file", "link.config.json").action(async (options) => {
254
254
  try {
255
- const configLoader = new chunkF6QVO6NR_cjs.ConfigurationLoader();
255
+ const configLoader = new chunkRGLCJDOY_cjs.ConfigurationLoader();
256
256
  const config = await configLoader.load(options.config);
257
257
  logger.info("\u{1F4CA} Mulink Project Information");
258
258
  logger.info("=".repeat(40));
@@ -279,7 +279,7 @@ program.command("info").description("Show project information and status").optio
279
279
  program.command("check-updates").alias("update-check").description("Check for available updates").option("--force", "Force check even if recently checked").option("--show-current", "Show current version information").action(async (options) => {
280
280
  const spinner = logger.spinner("Checking for updates...");
281
281
  try {
282
- const versionChecker2 = chunkF6QVO6NR_cjs.createBridgeVersionChecker(logger);
282
+ const versionChecker2 = chunkRGLCJDOY_cjs.createBridgeVersionChecker(logger);
283
283
  const versionInfo = await versionChecker2.checkForUpdates();
284
284
  const currentVersion = versionChecker2.getCurrentVersion();
285
285
  if (versionInfo) {
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/cli/index.ts"],"names":["BridgeLogger","__name","Command","createBridgeVersionChecker","versionChecker","ConfigurationLoader","BridgeCore"],"mappings":"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","file":"cli.cjs","sourcesContent":["#!/usr/bin/env node\r\nimport { Command } from 'commander';\r\nimport { BridgeCore } from '@/core/bridge-core';\r\nimport { ConfigurationLoader } from '@/config/configuration-loader';\r\nimport { BridgeLogger, LogLevel } from '@/utils/logger';\r\nimport { checkAndNotifyUpdates, createBridgeVersionChecker } from '@/utils/version-checker';\r\n\r\n// ASCII Art Banner\r\nconst BANNER = (version: string) => `\r\n ██████╗ ██████╗ ██╗██████╗ ██████╗ ███████╗\r\n ██╔══██╗██╔══██╗██║██╔══██╗██╔════╝ ██╔════╝\r\n ██████╔╝██║ ██║██║██║ ██║██║ ███╗█████╗ \r\n ██╔══██╗██║ ██║██║██║ ██║██║ ██║██╔══╝ \r\n ██████╔╝██████╔╝██║██████╔╝╚██████╔╝███████╗\r\n ╚═════╝ ╚═════╝ ╚═╝╚═════╝ ╚═════╝ ╚══════╝\r\n\r\n 🔗 Mulink - Universal Type-Safe API Integration\r\n 🔗 Connect APIs • Generate Clients • Type Safety\r\n 📦 Version: ${version} • 🚀 Next.js 16+ • ⚡ OpenAPI 3.x\r\n`;\r\n\r\nconst logger = new BridgeLogger({ prefix: '🔗 Mulink CLI' });\r\n\r\n// Enhanced banner display with update notification integration\r\nfunction displayBanner(version: string, updateInfo?: { current: string; latest: string; updateAvailable: boolean; upgradeCommand?: string }) {\r\n let banner = BANNER(version);\r\n \r\n if (updateInfo && updateInfo.updateAvailable) {\r\n const upgradeCommand = updateInfo.upgradeCommand || 'npm update mulink';\r\n \r\n banner += `\r\n\r\n─────────────────── 🔄 UPDATE AVAILABLE ──────────────────\r\n\r\n Current Version: ${updateInfo.current}\r\n Latest Version: ${updateInfo.latest}\r\n\r\n Upgrade Command:\r\n ${upgradeCommand}\r\n\r\n Run 'mulink check-updates' for more information\r\n\r\n──────────────────────────────────────────────────────────\r\n`;\r\n }\r\n \r\n console.log(banner);\r\n}\r\n\r\n// Enhanced colored banner display with update notification integration\r\nfunction displayColoredBanner(version: string, updateInfo?: { current: string; latest: string; updateAvailable: boolean; upgradeCommand?: string }) {\r\n const colors = {\r\n reset: '\\x1b[0m',\r\n bright: '\\x1b[1m',\r\n red: '\\x1b[31m',\r\n green: '\\x1b[32m',\r\n yellow: '\\x1b[33m',\r\n blue: '\\x1b[34m',\r\n cyan: '\\x1b[36m',\r\n magenta: '\\x1b[35m',\r\n orange: '\\x1b[38;5;208m',\r\n };\r\n\r\n let banner = BANNER(version)\r\n .replace(/█/g, `${colors.cyan}█${colors.reset}`)\r\n .replace(/🌉/g, `${colors.yellow}🌉${colors.reset}`)\r\n .replace(/🔗/g, `${colors.cyan}🔗${colors.reset}`)\r\n .replace(/📦/g, `${colors.green}📦${colors.reset}`)\r\n .replace(/🚀/g, `${colors.magenta}🚀${colors.reset}`)\r\n .replace(/⚡/g, `${colors.yellow}⚡${colors.reset}`);\r\n\r\n if (updateInfo && updateInfo.updateAvailable) {\r\n const upgradeCommand = updateInfo.upgradeCommand || 'npm update mulink';\r\n \r\n const updateBox = `\r\n─────────────────── 🔄 UPDATE AVAILABLE ──────────────────\r\n\r\n Current Version: ${updateInfo.current}\r\n Latest Version: ${updateInfo.latest}\r\n\r\n Upgrade Command:\r\n ${upgradeCommand}\r\n\r\n Run 'mulink check-updates' for more information\r\n\r\n──────────────────────────────────────────────────────────\r\n`;\r\n\r\n banner += updateBox;\r\n }\r\n\r\n console.log(banner);\r\n}\r\n\r\nconst program = new Command();\r\nconst versionChecker = createBridgeVersionChecker(logger);\r\nprogram\r\n .name('mulink')\r\n .description('Universal type-safe API integration library for modern web applications')\r\n .version(versionChecker.getCurrentVersion())\r\n .option('-v, --verbose', 'Enable verbose logging')\r\n .option('-q, --quiet', 'Suppress non-error output')\r\n .option('--no-color', 'Disable colored output')\r\n .option('--no-banner', 'Disable banner display')\r\n .hook('preAction', async (thisCommand) => {\r\n const opts = thisCommand.opts();\r\n if (opts.verbose) {\r\n logger.options.level = LogLevel.DEBUG;\r\n } else if (opts.quiet) {\r\n logger.options.level = LogLevel.ERROR;\r\n }\r\n if (opts.noColor) {\r\n logger.options.colors = false;\r\n }\r\n\r\n // Check for updates first (synchronously for banner integration)\r\n let updateInfo = null;\r\n if (!opts.quiet) {\r\n try {\r\n const versionChecker = createBridgeVersionChecker(logger);\r\n const versionInfo = await versionChecker.checkForUpdates();\r\n \r\n if (versionInfo && versionInfo.updateAvailable) {\r\n const upgradeCommand = versionChecker.getUpgradeCommand(versionInfo);\r\n updateInfo = {\r\n current: versionInfo.current,\r\n latest: versionInfo.latest,\r\n updateAvailable: versionInfo.updateAvailable,\r\n upgradeCommand\r\n };\r\n }\r\n } catch (error) {\r\n // Silently fail - version check should not interrupt user workflow\r\n logger.debug('Version check failed:', error);\r\n }\r\n }\r\n\r\n // Display banner with integrated update notification\r\n if (!opts.noBanner && !opts.quiet) {\r\n const currentVersion = versionChecker.getCurrentVersion();\r\n if (opts.noColor) {\r\n displayBanner(currentVersion, updateInfo || undefined);\r\n } else {\r\n displayColoredBanner(currentVersion, updateInfo || undefined);\r\n }\r\n }\r\n });\r\n\r\nprogram\r\n .command('generate')\r\n .alias('gen')\r\n .description('Generate API client code from OpenAPI schema')\r\n .option('-c, --config <path>', 'Path to config file', 'link.config.json')\r\n .option('-w, --watch', 'Watch for schema changes and regenerate automatically')\r\n .option('--dry-run', 'Show what would be generated without writing files')\r\n .action(async options => {\r\n const spinner = logger.spinner('Initializing generation...');\r\n\r\n try {\r\n const configLoader = new ConfigurationLoader();\r\n const config = await configLoader.load(options.config);\r\n spinner.succeed('Configuration loaded');\r\n\r\n const bridge = new BridgeCore();\r\n\r\n if (options.dryRun) {\r\n logger.info('🔍 Dry run mode - validation only');\r\n const validationSpinner = logger.spinner('Validating schema...');\r\n\r\n try {\r\n const isValid = await bridge.validateSchema(config.schema);\r\n if (isValid) {\r\n validationSpinner.succeed('Schema is valid');\r\n const info = await bridge.getSchemaInfo(config.schema);\r\n logger.info(`Schema: ${info.title} v${info.version}`);\r\n if (info.description) {\r\n logger.info(`Description: ${info.description}`);\r\n }\r\n } else {\r\n validationSpinner.fail('Schema validation failed');\r\n process.exit(1);\r\n }\r\n } catch (error) {\r\n validationSpinner.fail('Schema validation failed');\r\n logger.error('Schema validation error:', error);\r\n process.exit(1);\r\n }\r\n } else if (options.watch) {\r\n logger.warn('👀 Watch mode is not yet implemented');\r\n logger.info('Falling back to single generation...');\r\n await bridge.generate(config);\r\n } else {\r\n const generationSpinner = logger.spinner('Generating API client...');\r\n try {\r\n await bridge.generate(config);\r\n generationSpinner.succeed('API client generated successfully');\r\n } catch (error) {\r\n generationSpinner.fail('Generation failed');\r\n throw error;\r\n }\r\n }\r\n } catch (error) {\r\n spinner.fail('Generation failed');\r\n if (error instanceof Error) {\r\n logger.error('Error:', error.message);\r\n if (logger.options.level === LogLevel.DEBUG) {\r\n logger.error('Stack trace:', error.stack);\r\n }\r\n } else {\r\n logger.error('Unknown error:', error);\r\n }\r\n process.exit(1);\r\n }\r\n });\r\n\r\nprogram\r\n .command('init')\r\n .description('Initialize a new Mulink project')\r\n .option('-f, --framework <type>', 'Framework type', 'nextjs')\r\n .option('--router <type>', 'Next.js router type', 'app')\r\n .option('-s, --schema <url>', 'OpenAPI schema URL')\r\n .option('-o, --output <dir>', 'Output directory', 'src/generated')\r\n .action(async options => {\r\n const spinner = logger.spinner('Initializing Mulink project...');\r\n\r\n try {\r\n const configLoader = new ConfigurationLoader();\r\n const config = await configLoader.createDefault(options.framework);\r\n\r\n // Override defaults with provided options\r\n if (options.schema) config.schema = options.schema;\r\n if (options.output) config.outputDir = options.output;\r\n if (options.router) config.framework.router = options.router;\r\n\r\n await configLoader.save(config);\r\n spinner.succeed('Mulink configuration created successfully!');\r\n\r\n logger.info('📋 Configuration Summary:');\r\n logger.info(` Framework: ${config.framework.type}`);\r\n logger.info(` Router: ${config.framework.router}`);\r\n logger.info(` Schema: ${config.schema}`);\r\n logger.info(` Output: ${config.outputDir}`);\r\n\r\n logger.info('\\n🚀 Next steps:');\r\n logger.info('1. Edit link.config.json to configure your API');\r\n logger.info('2. Run \"mulink generate\" to create your API client');\r\n logger.info('3. Run \"mulink validate\" to check your configuration');\r\n } catch (error) {\r\n spinner.fail('Initialization failed');\r\n if (error instanceof Error) {\r\n logger.error('Error:', error.message);\r\n if (logger.options.level === LogLevel.DEBUG) {\r\n logger.error('Stack trace:', error.stack);\r\n }\r\n } else {\r\n logger.error('Unknown error:', error);\r\n }\r\n process.exit(1);\r\n }\r\n });\r\n\r\nprogram\r\n .command('validate')\r\n .description('Validate OpenAPI schema and configuration')\r\n .option('-c, --config <path>', 'Path to config file', 'link.config.json')\r\n .option('--schema-only', 'Only validate the OpenAPI schema')\r\n .action(async options => {\r\n try {\r\n const configLoader = new ConfigurationLoader();\r\n const config = await configLoader.load(options.config);\r\n\r\n const bridge = new BridgeCore();\r\n\r\n if (options.schemaOnly) {\r\n const isValid = await bridge.validateSchema(config.schema);\r\n if (isValid) {\r\n logger.success('✅ Schema is valid');\r\n const info = await bridge.getSchemaInfo(config.schema);\r\n logger.info(`Title: ${info.title}`);\r\n logger.info(`Version: ${info.version}`);\r\n if (info.description) logger.info(`Description: ${info.description}`);\r\n } else {\r\n logger.error('❌ Schema validation failed');\r\n process.exit(1);\r\n }\r\n } else {\r\n logger.success('✅ Configuration is valid');\r\n const isValid = await bridge.validateSchema(config.schema);\r\n if (isValid) {\r\n logger.success('✅ Schema is valid');\r\n } else {\r\n logger.error('❌ Schema validation failed');\r\n process.exit(1);\r\n }\r\n }\r\n } catch (error) {\r\n logger.error('Validation failed:', error);\r\n process.exit(1);\r\n }\r\n });\r\n\r\nprogram\r\n .command('clean')\r\n .description('Clean generated files and cache')\r\n .option('-c, --config <path>', 'Path to config file', 'link.config.json')\r\n .option('--force', 'Force clean without confirmation')\r\n .action(async options => {\r\n const spinner = logger.spinner('Cleaning cache and generated files...');\r\n\r\n try {\r\n const configLoader = new ConfigurationLoader();\r\n const config = await configLoader.load(options.config);\r\n\r\n const bridge = new BridgeCore();\r\n bridge.clearCache();\r\n\r\n // TODO: Implement file cleanup\r\n spinner.succeed('Cache and generated files cleared successfully');\r\n\r\n logger.info('🧹 Cleaned:');\r\n logger.info(' - Schema cache');\r\n logger.info(' - Generated files');\r\n logger.info(' - Build artifacts');\r\n } catch (error) {\r\n spinner.fail('Clean failed');\r\n if (error instanceof Error) {\r\n logger.error('Error:', error.message);\r\n if (logger.options.level === LogLevel.DEBUG) {\r\n logger.error('Stack trace:', error.stack);\r\n }\r\n } else {\r\n logger.error('Unknown error:', error);\r\n }\r\n process.exit(1);\r\n }\r\n });\r\n\r\nprogram\r\n .command('info')\r\n .description('Show project information and status')\r\n .option('-c, --config <path>', 'Path to config file', 'link.config.json')\r\n .action(async options => {\r\n try {\r\n const configLoader = new ConfigurationLoader();\r\n const config = await configLoader.load(options.config);\r\n\r\n logger.info('📊 Mulink Project Information');\r\n logger.info('='.repeat(40));\r\n logger.info(`Framework: ${config.framework.type}`);\r\n logger.info(`Router: ${config.framework.router}`);\r\n logger.info(`Schema: ${config.schema}`);\r\n logger.info(`Output: ${config.outputDir}`);\r\n logger.info(`Features:`);\r\n logger.info(` - Server Actions: ${config.framework.features.serverActions ? '✅' : '❌'}`);\r\n logger.info(` - Middleware: ${config.framework.features.middleware ? '✅' : '❌'}`);\r\n logger.info(` - Streaming: ${config.framework.features.streaming ? '✅' : '❌'}`);\r\n logger.info(` - Revalidation: ${config.framework.features.revalidation ? '✅' : '❌'}`);\r\n\r\n if (config.auth?.enabled) {\r\n logger.info(`Auth: ${config.auth.provider}`);\r\n }\r\n\r\n if (config.cache) {\r\n logger.info(`Cache: ${config.cache.strategy} (TTL: ${config.cache.ttl}s)`);\r\n }\r\n } catch (error) {\r\n logger.error('Failed to load project info:', error);\r\n process.exit(1);\r\n }\r\n });\r\n\r\nprogram\r\n .command('check-updates')\r\n .alias('update-check')\r\n .description('Check for available updates')\r\n .option('--force', 'Force check even if recently checked')\r\n .option('--show-current', 'Show current version information')\r\n .action(async options => {\r\n const spinner = logger.spinner('Checking for updates...');\r\n \r\n try {\r\n const versionChecker = createBridgeVersionChecker(logger);\r\n const versionInfo = await versionChecker.checkForUpdates();\r\n const currentVersion = versionChecker.getCurrentVersion();\r\n \r\n if (versionInfo) {\r\n spinner.succeed('Version check completed');\r\n \r\n // Display the enhanced banner with update info\r\n if (versionInfo.updateAvailable) {\r\n const upgradeCommand = versionChecker.getUpgradeCommand(versionInfo);\r\n const updateInfo = {\r\n current: versionInfo.current,\r\n latest: versionInfo.latest,\r\n updateAvailable: versionInfo.updateAvailable,\r\n upgradeCommand\r\n };\r\n \r\n if (logger.options.colors) {\r\n displayColoredBanner(currentVersion,updateInfo);\r\n } else {\r\n displayBanner(currentVersion,updateInfo);\r\n }\r\n } else if (options.showCurrent) {\r\n logger.info(`Current version: ${versionInfo.current}`);\r\n logger.info(`Latest version: ${versionInfo.latest}`);\r\n logger.info('✅ You are using the latest version');\r\n }\r\n } else {\r\n spinner.fail('Could not check for updates');\r\n logger.warn('Unable to fetch version information. Please check your internet connection.');\r\n }\r\n } catch (error) {\r\n spinner.fail('Update check failed');\r\n logger.error('Failed to check for updates:', error);\r\n process.exit(1);\r\n }\r\n });\r\n\r\n// Handle unknown commands\r\nprogram.on('command:*', () => {\r\n logger.error(`Unknown command: ${program.args.join(' ')}`);\r\n logger.info(\"Run 'mulink --help' for available commands\");\r\n process.exit(1);\r\n});\r\n\r\n// Handle errors gracefully\r\nprocess.on('uncaughtException', error => {\r\n logger.error('Uncaught exception:', error);\r\n process.exit(1);\r\n});\r\n\r\nprocess.on('unhandledRejection', reason => {\r\n logger.error('Unhandled rejection:', reason);\r\n process.exit(1);\r\n});\r\n\r\n// Show help if no command provided\r\nif (process.argv.length === 2) {\r\n // Check if colors are disabled\r\n const hasNoColor = process.argv.includes('--no-color');\r\n const currentVersion = versionChecker.getCurrentVersion();\r\n if (hasNoColor) {\r\n displayBanner(currentVersion);\r\n } else {\r\n displayColoredBanner(currentVersion);\r\n }\r\n program.help();\r\n}\r\n\r\nprogram.parse();\r\n"]}
1
+ {"version":3,"sources":["../../src/cli/index.ts"],"names":["BridgeLogger","__name","Command","createBridgeVersionChecker","versionChecker","ConfigurationLoader","BridgeCore"],"mappings":"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","file":"cli.cjs","sourcesContent":["#!/usr/bin/env node\r\nimport { Command } from 'commander';\r\nimport { BridgeCore } from '@/core/bridge-core';\r\nimport { ConfigurationLoader } from '@/config/configuration-loader';\r\nimport { BridgeLogger, LogLevel } from '@/utils/logger';\r\nimport { createBridgeVersionChecker } from '@/utils/version-checker';\r\n\r\n// ASCII Art Banner\r\nconst BANNER = (version: string) => `\r\n ███╗ ███╗██╗ ██╗██╗ ██╗███╗ ██╗██╗ ██╗\r\n ████╗ ████║██║ ██║██║ ██║████╗ ██║██║ ██╔╝\r\n ██╔████╔██║██║ ██║██║ ██║██╔██╗ ██║█████╔╝ \r\n ██║╚██╔╝██║██║ ██║██║ ██║██║╚██╗██║██╔═██╗ \r\n ██║ ╚═╝ ██║╚██████╔╝███████╗██║██║ ╚████║██║ ██╗\r\n ╚═╝ ╚═╝ ╚═════╝ ╚══════╝╚═╝╚═╝ ╚═══╝╚═╝ ╚═╝\r\n\r\n 🔗 Mulink - Universal Type-Safe API Integration\r\n 🔗 Connect APIs • Generate Clients • Type Safety\r\n 📦 Version: ${version} • 🚀 Next.js 16+ • ⚡ OpenAPI 3.x\r\n`;\r\n\r\nconst logger = new BridgeLogger({ prefix: '🔗 Mulink CLI' });\r\n\r\n// Enhanced banner display with update notification integration\r\nfunction displayBanner(version: string, updateInfo?: { current: string; latest: string; updateAvailable: boolean; upgradeCommand?: string }) {\r\n let banner = BANNER(version);\r\n \r\n if (updateInfo && updateInfo.updateAvailable) {\r\n const upgradeCommand = updateInfo.upgradeCommand || 'npm update mulink';\r\n \r\n banner += `\r\n\r\n─────────────────── 🔄 UPDATE AVAILABLE ──────────────────\r\n\r\n Current Version: ${updateInfo.current}\r\n Latest Version: ${updateInfo.latest}\r\n\r\n Upgrade Command:\r\n ${upgradeCommand}\r\n\r\n Run 'mulink check-updates' for more information\r\n\r\n──────────────────────────────────────────────────────────\r\n`;\r\n }\r\n \r\n console.log(banner);\r\n}\r\n\r\n// Enhanced colored banner display with update notification integration\r\nfunction displayColoredBanner(version: string, updateInfo?: { current: string; latest: string; updateAvailable: boolean; upgradeCommand?: string }) {\r\n const colors = {\r\n reset: '\\x1b[0m',\r\n bright: '\\x1b[1m',\r\n red: '\\x1b[31m',\r\n green: '\\x1b[32m',\r\n yellow: '\\x1b[33m',\r\n blue: '\\x1b[34m',\r\n cyan: '\\x1b[36m',\r\n magenta: '\\x1b[35m',\r\n orange: '\\x1b[38;5;208m',\r\n };\r\n\r\n let banner = BANNER(version)\r\n .replace(/█/g, `${colors.cyan}█${colors.reset}`)\r\n .replace(/🌉/g, `${colors.yellow}🌉${colors.reset}`)\r\n .replace(/🔗/g, `${colors.cyan}🔗${colors.reset}`)\r\n .replace(/📦/g, `${colors.green}📦${colors.reset}`)\r\n .replace(/🚀/g, `${colors.magenta}🚀${colors.reset}`)\r\n .replace(/⚡/g, `${colors.yellow}⚡${colors.reset}`);\r\n\r\n if (updateInfo && updateInfo.updateAvailable) {\r\n const upgradeCommand = updateInfo.upgradeCommand || 'npm update mulink';\r\n \r\n const updateBox = `\r\n─────────────────── 🔄 UPDATE AVAILABLE ──────────────────\r\n\r\n Current Version: ${updateInfo.current}\r\n Latest Version: ${updateInfo.latest}\r\n\r\n Upgrade Command:\r\n ${upgradeCommand}\r\n\r\n Run 'mulink check-updates' for more information\r\n\r\n──────────────────────────────────────────────────────────\r\n`;\r\n\r\n banner += updateBox;\r\n }\r\n\r\n console.log(banner);\r\n}\r\n\r\nconst program = new Command();\r\nconst versionChecker = createBridgeVersionChecker(logger);\r\nprogram\r\n .name('mulink')\r\n .description('Universal type-safe API integration library for modern web applications')\r\n .version(versionChecker.getCurrentVersion())\r\n .option('-v, --verbose', 'Enable verbose logging')\r\n .option('-q, --quiet', 'Suppress non-error output')\r\n .option('--no-color', 'Disable colored output')\r\n .option('--no-banner', 'Disable banner display')\r\n .hook('preAction', async (thisCommand) => {\r\n const opts = thisCommand.opts();\r\n if (opts.verbose) {\r\n logger.options.level = LogLevel.DEBUG;\r\n } else if (opts.quiet) {\r\n logger.options.level = LogLevel.ERROR;\r\n }\r\n if (opts.noColor) {\r\n logger.options.colors = false;\r\n }\r\n\r\n // Check for updates first (synchronously for banner integration)\r\n let updateInfo = null;\r\n if (!opts.quiet) {\r\n try {\r\n const versionChecker = createBridgeVersionChecker(logger);\r\n const versionInfo = await versionChecker.checkForUpdates();\r\n \r\n if (versionInfo && versionInfo.updateAvailable) {\r\n const upgradeCommand = versionChecker.getUpgradeCommand(versionInfo);\r\n updateInfo = {\r\n current: versionInfo.current,\r\n latest: versionInfo.latest,\r\n updateAvailable: versionInfo.updateAvailable,\r\n upgradeCommand\r\n };\r\n }\r\n } catch (error) {\r\n // Silently fail - version check should not interrupt user workflow\r\n logger.debug('Version check failed:', error);\r\n }\r\n }\r\n\r\n // Display banner with integrated update notification\r\n if (!opts.noBanner && !opts.quiet) {\r\n const currentVersion = versionChecker.getCurrentVersion();\r\n if (opts.noColor) {\r\n displayBanner(currentVersion, updateInfo || undefined);\r\n } else {\r\n displayColoredBanner(currentVersion, updateInfo || undefined);\r\n }\r\n }\r\n });\r\n\r\nprogram\r\n .command('generate')\r\n .alias('gen')\r\n .description('Generate API client code from OpenAPI schema')\r\n .option('-c, --config <path>', 'Path to config file', 'link.config.json')\r\n .option('-w, --watch', 'Watch for schema changes and regenerate automatically')\r\n .option('--dry-run', 'Show what would be generated without writing files')\r\n .action(async options => {\r\n const spinner = logger.spinner('Initializing generation...');\r\n\r\n try {\r\n const configLoader = new ConfigurationLoader();\r\n const config = await configLoader.load(options.config);\r\n spinner.succeed('Configuration loaded');\r\n\r\n const bridge = new BridgeCore();\r\n\r\n if (options.dryRun) {\r\n logger.info('🔍 Dry run mode - validation only');\r\n const validationSpinner = logger.spinner('Validating schema...');\r\n\r\n try {\r\n const isValid = await bridge.validateSchema(config.schema);\r\n if (isValid) {\r\n validationSpinner.succeed('Schema is valid');\r\n const info = await bridge.getSchemaInfo(config.schema);\r\n logger.info(`Schema: ${info.title} v${info.version}`);\r\n if (info.description) {\r\n logger.info(`Description: ${info.description}`);\r\n }\r\n } else {\r\n validationSpinner.fail('Schema validation failed');\r\n process.exit(1);\r\n }\r\n } catch (error) {\r\n validationSpinner.fail('Schema validation failed');\r\n logger.error('Schema validation error:', error);\r\n process.exit(1);\r\n }\r\n } else if (options.watch) {\r\n logger.warn('👀 Watch mode is not yet implemented');\r\n logger.info('Falling back to single generation...');\r\n await bridge.generate(config);\r\n } else {\r\n const generationSpinner = logger.spinner('Generating API client...');\r\n try {\r\n await bridge.generate(config);\r\n generationSpinner.succeed('API client generated successfully');\r\n } catch (error) {\r\n generationSpinner.fail('Generation failed');\r\n throw error;\r\n }\r\n }\r\n } catch (error) {\r\n spinner.fail('Generation failed');\r\n if (error instanceof Error) {\r\n logger.error('Error:', error.message);\r\n if (logger.options.level === LogLevel.DEBUG) {\r\n logger.error('Stack trace:', error.stack);\r\n }\r\n } else {\r\n logger.error('Unknown error:', error);\r\n }\r\n process.exit(1);\r\n }\r\n });\r\n\r\nprogram\r\n .command('init')\r\n .description('Initialize a new Mulink project')\r\n .option('-f, --framework <type>', 'Framework type', 'nextjs')\r\n .option('--router <type>', 'Next.js router type', 'app')\r\n .option('-s, --schema <url>', 'OpenAPI schema URL')\r\n .option('-o, --output <dir>', 'Output directory', 'src/generated')\r\n .action(async options => {\r\n const spinner = logger.spinner('Initializing Mulink project...');\r\n\r\n try {\r\n const configLoader = new ConfigurationLoader();\r\n const config = await configLoader.createDefault(options.framework);\r\n\r\n // Override defaults with provided options\r\n if (options.schema) config.schema = options.schema;\r\n if (options.output) config.outputDir = options.output;\r\n if (options.router) config.framework.router = options.router;\r\n\r\n await configLoader.save(config);\r\n spinner.succeed('Mulink configuration created successfully!');\r\n\r\n logger.info('📋 Configuration Summary:');\r\n logger.info(` Framework: ${config.framework.type}`);\r\n logger.info(` Router: ${config.framework.router}`);\r\n logger.info(` Schema: ${config.schema}`);\r\n logger.info(` Output: ${config.outputDir}`);\r\n\r\n logger.info('\\n🚀 Next steps:');\r\n logger.info('1. Edit link.config.json to configure your API');\r\n logger.info('2. Run \"mulink generate\" to create your API client');\r\n logger.info('3. Run \"mulink validate\" to check your configuration');\r\n } catch (error) {\r\n spinner.fail('Initialization failed');\r\n if (error instanceof Error) {\r\n logger.error('Error:', error.message);\r\n if (logger.options.level === LogLevel.DEBUG) {\r\n logger.error('Stack trace:', error.stack);\r\n }\r\n } else {\r\n logger.error('Unknown error:', error);\r\n }\r\n process.exit(1);\r\n }\r\n });\r\n\r\nprogram\r\n .command('validate')\r\n .description('Validate OpenAPI schema and configuration')\r\n .option('-c, --config <path>', 'Path to config file', 'link.config.json')\r\n .option('--schema-only', 'Only validate the OpenAPI schema')\r\n .action(async options => {\r\n try {\r\n const configLoader = new ConfigurationLoader();\r\n const config = await configLoader.load(options.config);\r\n\r\n const bridge = new BridgeCore();\r\n\r\n if (options.schemaOnly) {\r\n const isValid = await bridge.validateSchema(config.schema);\r\n if (isValid) {\r\n logger.success('✅ Schema is valid');\r\n const info = await bridge.getSchemaInfo(config.schema);\r\n logger.info(`Title: ${info.title}`);\r\n logger.info(`Version: ${info.version}`);\r\n if (info.description) logger.info(`Description: ${info.description}`);\r\n } else {\r\n logger.error('❌ Schema validation failed');\r\n process.exit(1);\r\n }\r\n } else {\r\n logger.success('✅ Configuration is valid');\r\n const isValid = await bridge.validateSchema(config.schema);\r\n if (isValid) {\r\n logger.success('✅ Schema is valid');\r\n } else {\r\n logger.error('❌ Schema validation failed');\r\n process.exit(1);\r\n }\r\n }\r\n } catch (error) {\r\n logger.error('Validation failed:', error);\r\n process.exit(1);\r\n }\r\n });\r\n\r\nprogram\r\n .command('clean')\r\n .description('Clean generated files and cache')\r\n .option('-c, --config <path>', 'Path to config file', 'link.config.json')\r\n .option('--force', 'Force clean without confirmation')\r\n .action(async options => {\r\n const spinner = logger.spinner('Cleaning cache and generated files...');\r\n\r\n try {\r\n const configLoader = new ConfigurationLoader();\r\n const config = await configLoader.load(options.config);\r\n\r\n const bridge = new BridgeCore();\r\n bridge.clearCache();\r\n\r\n // TODO: Implement file cleanup\r\n spinner.succeed('Cache and generated files cleared successfully');\r\n\r\n logger.info('🧹 Cleaned:');\r\n logger.info(' - Schema cache');\r\n logger.info(' - Generated files');\r\n logger.info(' - Build artifacts');\r\n } catch (error) {\r\n spinner.fail('Clean failed');\r\n if (error instanceof Error) {\r\n logger.error('Error:', error.message);\r\n if (logger.options.level === LogLevel.DEBUG) {\r\n logger.error('Stack trace:', error.stack);\r\n }\r\n } else {\r\n logger.error('Unknown error:', error);\r\n }\r\n process.exit(1);\r\n }\r\n });\r\n\r\nprogram\r\n .command('info')\r\n .description('Show project information and status')\r\n .option('-c, --config <path>', 'Path to config file', 'link.config.json')\r\n .action(async options => {\r\n try {\r\n const configLoader = new ConfigurationLoader();\r\n const config = await configLoader.load(options.config);\r\n\r\n logger.info('📊 Mulink Project Information');\r\n logger.info('='.repeat(40));\r\n logger.info(`Framework: ${config.framework.type}`);\r\n logger.info(`Router: ${config.framework.router}`);\r\n logger.info(`Schema: ${config.schema}`);\r\n logger.info(`Output: ${config.outputDir}`);\r\n logger.info(`Features:`);\r\n logger.info(` - Server Actions: ${config.framework.features.serverActions ? '✅' : '❌'}`);\r\n logger.info(` - Middleware: ${config.framework.features.middleware ? '✅' : '❌'}`);\r\n logger.info(` - Streaming: ${config.framework.features.streaming ? '✅' : '❌'}`);\r\n logger.info(` - Revalidation: ${config.framework.features.revalidation ? '✅' : '❌'}`);\r\n\r\n if (config.auth?.enabled) {\r\n logger.info(`Auth: ${config.auth.provider}`);\r\n }\r\n\r\n if (config.cache) {\r\n logger.info(`Cache: ${config.cache.strategy} (TTL: ${config.cache.ttl}s)`);\r\n }\r\n } catch (error) {\r\n logger.error('Failed to load project info:', error);\r\n process.exit(1);\r\n }\r\n });\r\n\r\nprogram\r\n .command('check-updates')\r\n .alias('update-check')\r\n .description('Check for available updates')\r\n .option('--force', 'Force check even if recently checked')\r\n .option('--show-current', 'Show current version information')\r\n .action(async options => {\r\n const spinner = logger.spinner('Checking for updates...');\r\n \r\n try {\r\n const versionChecker = createBridgeVersionChecker(logger);\r\n const versionInfo = await versionChecker.checkForUpdates();\r\n const currentVersion = versionChecker.getCurrentVersion();\r\n \r\n if (versionInfo) {\r\n spinner.succeed('Version check completed');\r\n \r\n // Display the enhanced banner with update info\r\n if (versionInfo.updateAvailable) {\r\n const upgradeCommand = versionChecker.getUpgradeCommand(versionInfo);\r\n const updateInfo = {\r\n current: versionInfo.current,\r\n latest: versionInfo.latest,\r\n updateAvailable: versionInfo.updateAvailable,\r\n upgradeCommand\r\n };\r\n \r\n if (logger.options.colors) {\r\n displayColoredBanner(currentVersion,updateInfo);\r\n } else {\r\n displayBanner(currentVersion,updateInfo);\r\n }\r\n } else if (options.showCurrent) {\r\n logger.info(`Current version: ${versionInfo.current}`);\r\n logger.info(`Latest version: ${versionInfo.latest}`);\r\n logger.info('✅ You are using the latest version');\r\n }\r\n } else {\r\n spinner.fail('Could not check for updates');\r\n logger.warn('Unable to fetch version information. Please check your internet connection.');\r\n }\r\n } catch (error) {\r\n spinner.fail('Update check failed');\r\n logger.error('Failed to check for updates:', error);\r\n process.exit(1);\r\n }\r\n });\r\n\r\n// Handle unknown commands\r\nprogram.on('command:*', () => {\r\n logger.error(`Unknown command: ${program.args.join(' ')}`);\r\n logger.info(\"Run 'mulink --help' for available commands\");\r\n process.exit(1);\r\n});\r\n\r\n// Handle errors gracefully\r\nprocess.on('uncaughtException', error => {\r\n logger.error('Uncaught exception:', error);\r\n process.exit(1);\r\n});\r\n\r\nprocess.on('unhandledRejection', reason => {\r\n logger.error('Unhandled rejection:', reason);\r\n process.exit(1);\r\n});\r\n\r\n// Show help if no command provided\r\nif (process.argv.length === 2) {\r\n // Check if colors are disabled\r\n const hasNoColor = process.argv.includes('--no-color');\r\n const currentVersion = versionChecker.getCurrentVersion();\r\n if (hasNoColor) {\r\n displayBanner(currentVersion);\r\n } else {\r\n displayColoredBanner(currentVersion);\r\n }\r\n program.help();\r\n}\r\n\r\nprogram.parse();\r\n"]}
package/dist/lib/cli.js CHANGED
@@ -1,14 +1,14 @@
1
1
  #!/usr/bin/env node
2
- import { BridgeLogger, __name, createBridgeVersionChecker, ConfigurationLoader, BridgeCore } from './chunk-SMOCRKWL.js';
2
+ import { BridgeLogger, __name, createBridgeVersionChecker, ConfigurationLoader, BridgeCore } from './chunk-IVMVPQUK.js';
3
3
  import { Command } from 'commander';
4
4
 
5
5
  var BANNER = /* @__PURE__ */ __name((version) => `
6
- \u2588\u2588\u2588\u2588\u2588\u2588\u2557 \u2588\u2588\u2588\u2588\u2588\u2588\u2557 \u2588\u2588\u2557\u2588\u2588\u2588\u2588\u2588\u2588\u2557 \u2588\u2588\u2588\u2588\u2588\u2588\u2557 \u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2557
7
- \u2588\u2588\u2554\u2550\u2550\u2588\u2588\u2557\u2588\u2588\u2554\u2550\u2550\u2588\u2588\u2557\u2588\u2588\u2551\u2588\u2588\u2554\u2550\u2550\u2588\u2588\u2557\u2588\u2588\u2554\u2550\u2550\u2550\u2550\u255D \u2588\u2588\u2554\u2550\u2550\u2550\u2550\u255D
8
- \u2588\u2588\u2588\u2588\u2588\u2588\u2554\u255D\u2588\u2588\u2551 \u2588\u2588\u2551\u2588\u2588\u2551\u2588\u2588\u2551 \u2588\u2588\u2551\u2588\u2588\u2551 \u2588\u2588\u2588\u2557\u2588\u2588\u2588\u2588\u2588\u2557
9
- \u2588\u2588\u2554\u2550\u2550\u2588\u2588\u2557\u2588\u2588\u2551 \u2588\u2588\u2551\u2588\u2588\u2551\u2588\u2588\u2551 \u2588\u2588\u2551\u2588\u2588\u2551 \u2588\u2588\u2551\u2588\u2588\u2554\u2550\u2550\u255D
10
- \u2588\u2588\u2588\u2588\u2588\u2588\u2554\u255D\u2588\u2588\u2588\u2588\u2588\u2588\u2554\u255D\u2588\u2588\u2551\u2588\u2588\u2588\u2588\u2588\u2588\u2554\u255D\u255A\u2588\u2588\u2588\u2588\u2588\u2588\u2554\u255D\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2557
11
- \u255A\u2550\u2550\u2550\u2550\u2550\u255D \u255A\u2550\u2550\u2550\u2550\u2550\u255D \u255A\u2550\u255D\u255A\u2550\u2550\u2550\u2550\u2550\u255D \u255A\u2550\u2550\u2550\u2550\u2550\u255D \u255A\u2550\u2550\u2550\u2550\u2550\u2550\u255D
6
+ \u2588\u2588\u2588\u2557 \u2588\u2588\u2588\u2557\u2588\u2588\u2557 \u2588\u2588\u2557\u2588\u2588\u2557 \u2588\u2588\u2557\u2588\u2588\u2588\u2557 \u2588\u2588\u2557\u2588\u2588\u2557 \u2588\u2588\u2557
7
+ \u2588\u2588\u2588\u2588\u2557 \u2588\u2588\u2588\u2588\u2551\u2588\u2588\u2551 \u2588\u2588\u2551\u2588\u2588\u2551 \u2588\u2588\u2551\u2588\u2588\u2588\u2588\u2557 \u2588\u2588\u2551\u2588\u2588\u2551 \u2588\u2588\u2554\u255D
8
+ \u2588\u2588\u2554\u2588\u2588\u2588\u2588\u2554\u2588\u2588\u2551\u2588\u2588\u2551 \u2588\u2588\u2551\u2588\u2588\u2551 \u2588\u2588\u2551\u2588\u2588\u2554\u2588\u2588\u2557 \u2588\u2588\u2551\u2588\u2588\u2588\u2588\u2588\u2554\u255D
9
+ \u2588\u2588\u2551\u255A\u2588\u2588\u2554\u255D\u2588\u2588\u2551\u2588\u2588\u2551 \u2588\u2588\u2551\u2588\u2588\u2551 \u2588\u2588\u2551\u2588\u2588\u2551\u255A\u2588\u2588\u2557\u2588\u2588\u2551\u2588\u2588\u2554\u2550\u2588\u2588\u2557
10
+ \u2588\u2588\u2551 \u255A\u2550\u255D \u2588\u2588\u2551\u255A\u2588\u2588\u2588\u2588\u2588\u2588\u2554\u255D\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2557\u2588\u2588\u2551\u2588\u2588\u2551 \u255A\u2588\u2588\u2588\u2588\u2551\u2588\u2588\u2551 \u2588\u2588\u2557
11
+ \u255A\u2550\u255D \u255A\u2550\u255D \u255A\u2550\u2550\u2550\u2550\u2550\u255D \u255A\u2550\u2550\u2550\u2550\u2550\u2550\u255D\u255A\u2550\u255D\u255A\u2550\u255D \u255A\u2550\u2550\u2550\u255D\u255A\u2550\u255D \u255A\u2550\u255D
12
12
 
13
13
  \u{1F517} Mulink - Universal Type-Safe API Integration
14
14
  \u{1F517} Connect APIs \u2022 Generate Clients \u2022 Type Safety
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/cli/index.ts"],"names":["versionChecker"],"mappings":"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","file":"cli.js","sourcesContent":["#!/usr/bin/env node\r\nimport { Command } from 'commander';\r\nimport { BridgeCore } from '@/core/bridge-core';\r\nimport { ConfigurationLoader } from '@/config/configuration-loader';\r\nimport { BridgeLogger, LogLevel } from '@/utils/logger';\r\nimport { checkAndNotifyUpdates, createBridgeVersionChecker } from '@/utils/version-checker';\r\n\r\n// ASCII Art Banner\r\nconst BANNER = (version: string) => `\r\n ██████╗ ██████╗ ██╗██████╗ ██████╗ ███████╗\r\n ██╔══██╗██╔══██╗██║██╔══██╗██╔════╝ ██╔════╝\r\n ██████╔╝██║ ██║██║██║ ██║██║ ███╗█████╗ \r\n ██╔══██╗██║ ██║██║██║ ██║██║ ██║██╔══╝ \r\n ██████╔╝██████╔╝██║██████╔╝╚██████╔╝███████╗\r\n ╚═════╝ ╚═════╝ ╚═╝╚═════╝ ╚═════╝ ╚══════╝\r\n\r\n 🔗 Mulink - Universal Type-Safe API Integration\r\n 🔗 Connect APIs • Generate Clients • Type Safety\r\n 📦 Version: ${version} • 🚀 Next.js 16+ • ⚡ OpenAPI 3.x\r\n`;\r\n\r\nconst logger = new BridgeLogger({ prefix: '🔗 Mulink CLI' });\r\n\r\n// Enhanced banner display with update notification integration\r\nfunction displayBanner(version: string, updateInfo?: { current: string; latest: string; updateAvailable: boolean; upgradeCommand?: string }) {\r\n let banner = BANNER(version);\r\n \r\n if (updateInfo && updateInfo.updateAvailable) {\r\n const upgradeCommand = updateInfo.upgradeCommand || 'npm update mulink';\r\n \r\n banner += `\r\n\r\n─────────────────── 🔄 UPDATE AVAILABLE ──────────────────\r\n\r\n Current Version: ${updateInfo.current}\r\n Latest Version: ${updateInfo.latest}\r\n\r\n Upgrade Command:\r\n ${upgradeCommand}\r\n\r\n Run 'mulink check-updates' for more information\r\n\r\n──────────────────────────────────────────────────────────\r\n`;\r\n }\r\n \r\n console.log(banner);\r\n}\r\n\r\n// Enhanced colored banner display with update notification integration\r\nfunction displayColoredBanner(version: string, updateInfo?: { current: string; latest: string; updateAvailable: boolean; upgradeCommand?: string }) {\r\n const colors = {\r\n reset: '\\x1b[0m',\r\n bright: '\\x1b[1m',\r\n red: '\\x1b[31m',\r\n green: '\\x1b[32m',\r\n yellow: '\\x1b[33m',\r\n blue: '\\x1b[34m',\r\n cyan: '\\x1b[36m',\r\n magenta: '\\x1b[35m',\r\n orange: '\\x1b[38;5;208m',\r\n };\r\n\r\n let banner = BANNER(version)\r\n .replace(/█/g, `${colors.cyan}█${colors.reset}`)\r\n .replace(/🌉/g, `${colors.yellow}🌉${colors.reset}`)\r\n .replace(/🔗/g, `${colors.cyan}🔗${colors.reset}`)\r\n .replace(/📦/g, `${colors.green}📦${colors.reset}`)\r\n .replace(/🚀/g, `${colors.magenta}🚀${colors.reset}`)\r\n .replace(/⚡/g, `${colors.yellow}⚡${colors.reset}`);\r\n\r\n if (updateInfo && updateInfo.updateAvailable) {\r\n const upgradeCommand = updateInfo.upgradeCommand || 'npm update mulink';\r\n \r\n const updateBox = `\r\n─────────────────── 🔄 UPDATE AVAILABLE ──────────────────\r\n\r\n Current Version: ${updateInfo.current}\r\n Latest Version: ${updateInfo.latest}\r\n\r\n Upgrade Command:\r\n ${upgradeCommand}\r\n\r\n Run 'mulink check-updates' for more information\r\n\r\n──────────────────────────────────────────────────────────\r\n`;\r\n\r\n banner += updateBox;\r\n }\r\n\r\n console.log(banner);\r\n}\r\n\r\nconst program = new Command();\r\nconst versionChecker = createBridgeVersionChecker(logger);\r\nprogram\r\n .name('mulink')\r\n .description('Universal type-safe API integration library for modern web applications')\r\n .version(versionChecker.getCurrentVersion())\r\n .option('-v, --verbose', 'Enable verbose logging')\r\n .option('-q, --quiet', 'Suppress non-error output')\r\n .option('--no-color', 'Disable colored output')\r\n .option('--no-banner', 'Disable banner display')\r\n .hook('preAction', async (thisCommand) => {\r\n const opts = thisCommand.opts();\r\n if (opts.verbose) {\r\n logger.options.level = LogLevel.DEBUG;\r\n } else if (opts.quiet) {\r\n logger.options.level = LogLevel.ERROR;\r\n }\r\n if (opts.noColor) {\r\n logger.options.colors = false;\r\n }\r\n\r\n // Check for updates first (synchronously for banner integration)\r\n let updateInfo = null;\r\n if (!opts.quiet) {\r\n try {\r\n const versionChecker = createBridgeVersionChecker(logger);\r\n const versionInfo = await versionChecker.checkForUpdates();\r\n \r\n if (versionInfo && versionInfo.updateAvailable) {\r\n const upgradeCommand = versionChecker.getUpgradeCommand(versionInfo);\r\n updateInfo = {\r\n current: versionInfo.current,\r\n latest: versionInfo.latest,\r\n updateAvailable: versionInfo.updateAvailable,\r\n upgradeCommand\r\n };\r\n }\r\n } catch (error) {\r\n // Silently fail - version check should not interrupt user workflow\r\n logger.debug('Version check failed:', error);\r\n }\r\n }\r\n\r\n // Display banner with integrated update notification\r\n if (!opts.noBanner && !opts.quiet) {\r\n const currentVersion = versionChecker.getCurrentVersion();\r\n if (opts.noColor) {\r\n displayBanner(currentVersion, updateInfo || undefined);\r\n } else {\r\n displayColoredBanner(currentVersion, updateInfo || undefined);\r\n }\r\n }\r\n });\r\n\r\nprogram\r\n .command('generate')\r\n .alias('gen')\r\n .description('Generate API client code from OpenAPI schema')\r\n .option('-c, --config <path>', 'Path to config file', 'link.config.json')\r\n .option('-w, --watch', 'Watch for schema changes and regenerate automatically')\r\n .option('--dry-run', 'Show what would be generated without writing files')\r\n .action(async options => {\r\n const spinner = logger.spinner('Initializing generation...');\r\n\r\n try {\r\n const configLoader = new ConfigurationLoader();\r\n const config = await configLoader.load(options.config);\r\n spinner.succeed('Configuration loaded');\r\n\r\n const bridge = new BridgeCore();\r\n\r\n if (options.dryRun) {\r\n logger.info('🔍 Dry run mode - validation only');\r\n const validationSpinner = logger.spinner('Validating schema...');\r\n\r\n try {\r\n const isValid = await bridge.validateSchema(config.schema);\r\n if (isValid) {\r\n validationSpinner.succeed('Schema is valid');\r\n const info = await bridge.getSchemaInfo(config.schema);\r\n logger.info(`Schema: ${info.title} v${info.version}`);\r\n if (info.description) {\r\n logger.info(`Description: ${info.description}`);\r\n }\r\n } else {\r\n validationSpinner.fail('Schema validation failed');\r\n process.exit(1);\r\n }\r\n } catch (error) {\r\n validationSpinner.fail('Schema validation failed');\r\n logger.error('Schema validation error:', error);\r\n process.exit(1);\r\n }\r\n } else if (options.watch) {\r\n logger.warn('👀 Watch mode is not yet implemented');\r\n logger.info('Falling back to single generation...');\r\n await bridge.generate(config);\r\n } else {\r\n const generationSpinner = logger.spinner('Generating API client...');\r\n try {\r\n await bridge.generate(config);\r\n generationSpinner.succeed('API client generated successfully');\r\n } catch (error) {\r\n generationSpinner.fail('Generation failed');\r\n throw error;\r\n }\r\n }\r\n } catch (error) {\r\n spinner.fail('Generation failed');\r\n if (error instanceof Error) {\r\n logger.error('Error:', error.message);\r\n if (logger.options.level === LogLevel.DEBUG) {\r\n logger.error('Stack trace:', error.stack);\r\n }\r\n } else {\r\n logger.error('Unknown error:', error);\r\n }\r\n process.exit(1);\r\n }\r\n });\r\n\r\nprogram\r\n .command('init')\r\n .description('Initialize a new Mulink project')\r\n .option('-f, --framework <type>', 'Framework type', 'nextjs')\r\n .option('--router <type>', 'Next.js router type', 'app')\r\n .option('-s, --schema <url>', 'OpenAPI schema URL')\r\n .option('-o, --output <dir>', 'Output directory', 'src/generated')\r\n .action(async options => {\r\n const spinner = logger.spinner('Initializing Mulink project...');\r\n\r\n try {\r\n const configLoader = new ConfigurationLoader();\r\n const config = await configLoader.createDefault(options.framework);\r\n\r\n // Override defaults with provided options\r\n if (options.schema) config.schema = options.schema;\r\n if (options.output) config.outputDir = options.output;\r\n if (options.router) config.framework.router = options.router;\r\n\r\n await configLoader.save(config);\r\n spinner.succeed('Mulink configuration created successfully!');\r\n\r\n logger.info('📋 Configuration Summary:');\r\n logger.info(` Framework: ${config.framework.type}`);\r\n logger.info(` Router: ${config.framework.router}`);\r\n logger.info(` Schema: ${config.schema}`);\r\n logger.info(` Output: ${config.outputDir}`);\r\n\r\n logger.info('\\n🚀 Next steps:');\r\n logger.info('1. Edit link.config.json to configure your API');\r\n logger.info('2. Run \"mulink generate\" to create your API client');\r\n logger.info('3. Run \"mulink validate\" to check your configuration');\r\n } catch (error) {\r\n spinner.fail('Initialization failed');\r\n if (error instanceof Error) {\r\n logger.error('Error:', error.message);\r\n if (logger.options.level === LogLevel.DEBUG) {\r\n logger.error('Stack trace:', error.stack);\r\n }\r\n } else {\r\n logger.error('Unknown error:', error);\r\n }\r\n process.exit(1);\r\n }\r\n });\r\n\r\nprogram\r\n .command('validate')\r\n .description('Validate OpenAPI schema and configuration')\r\n .option('-c, --config <path>', 'Path to config file', 'link.config.json')\r\n .option('--schema-only', 'Only validate the OpenAPI schema')\r\n .action(async options => {\r\n try {\r\n const configLoader = new ConfigurationLoader();\r\n const config = await configLoader.load(options.config);\r\n\r\n const bridge = new BridgeCore();\r\n\r\n if (options.schemaOnly) {\r\n const isValid = await bridge.validateSchema(config.schema);\r\n if (isValid) {\r\n logger.success('✅ Schema is valid');\r\n const info = await bridge.getSchemaInfo(config.schema);\r\n logger.info(`Title: ${info.title}`);\r\n logger.info(`Version: ${info.version}`);\r\n if (info.description) logger.info(`Description: ${info.description}`);\r\n } else {\r\n logger.error('❌ Schema validation failed');\r\n process.exit(1);\r\n }\r\n } else {\r\n logger.success('✅ Configuration is valid');\r\n const isValid = await bridge.validateSchema(config.schema);\r\n if (isValid) {\r\n logger.success('✅ Schema is valid');\r\n } else {\r\n logger.error('❌ Schema validation failed');\r\n process.exit(1);\r\n }\r\n }\r\n } catch (error) {\r\n logger.error('Validation failed:', error);\r\n process.exit(1);\r\n }\r\n });\r\n\r\nprogram\r\n .command('clean')\r\n .description('Clean generated files and cache')\r\n .option('-c, --config <path>', 'Path to config file', 'link.config.json')\r\n .option('--force', 'Force clean without confirmation')\r\n .action(async options => {\r\n const spinner = logger.spinner('Cleaning cache and generated files...');\r\n\r\n try {\r\n const configLoader = new ConfigurationLoader();\r\n const config = await configLoader.load(options.config);\r\n\r\n const bridge = new BridgeCore();\r\n bridge.clearCache();\r\n\r\n // TODO: Implement file cleanup\r\n spinner.succeed('Cache and generated files cleared successfully');\r\n\r\n logger.info('🧹 Cleaned:');\r\n logger.info(' - Schema cache');\r\n logger.info(' - Generated files');\r\n logger.info(' - Build artifacts');\r\n } catch (error) {\r\n spinner.fail('Clean failed');\r\n if (error instanceof Error) {\r\n logger.error('Error:', error.message);\r\n if (logger.options.level === LogLevel.DEBUG) {\r\n logger.error('Stack trace:', error.stack);\r\n }\r\n } else {\r\n logger.error('Unknown error:', error);\r\n }\r\n process.exit(1);\r\n }\r\n });\r\n\r\nprogram\r\n .command('info')\r\n .description('Show project information and status')\r\n .option('-c, --config <path>', 'Path to config file', 'link.config.json')\r\n .action(async options => {\r\n try {\r\n const configLoader = new ConfigurationLoader();\r\n const config = await configLoader.load(options.config);\r\n\r\n logger.info('📊 Mulink Project Information');\r\n logger.info('='.repeat(40));\r\n logger.info(`Framework: ${config.framework.type}`);\r\n logger.info(`Router: ${config.framework.router}`);\r\n logger.info(`Schema: ${config.schema}`);\r\n logger.info(`Output: ${config.outputDir}`);\r\n logger.info(`Features:`);\r\n logger.info(` - Server Actions: ${config.framework.features.serverActions ? '✅' : '❌'}`);\r\n logger.info(` - Middleware: ${config.framework.features.middleware ? '✅' : '❌'}`);\r\n logger.info(` - Streaming: ${config.framework.features.streaming ? '✅' : '❌'}`);\r\n logger.info(` - Revalidation: ${config.framework.features.revalidation ? '✅' : '❌'}`);\r\n\r\n if (config.auth?.enabled) {\r\n logger.info(`Auth: ${config.auth.provider}`);\r\n }\r\n\r\n if (config.cache) {\r\n logger.info(`Cache: ${config.cache.strategy} (TTL: ${config.cache.ttl}s)`);\r\n }\r\n } catch (error) {\r\n logger.error('Failed to load project info:', error);\r\n process.exit(1);\r\n }\r\n });\r\n\r\nprogram\r\n .command('check-updates')\r\n .alias('update-check')\r\n .description('Check for available updates')\r\n .option('--force', 'Force check even if recently checked')\r\n .option('--show-current', 'Show current version information')\r\n .action(async options => {\r\n const spinner = logger.spinner('Checking for updates...');\r\n \r\n try {\r\n const versionChecker = createBridgeVersionChecker(logger);\r\n const versionInfo = await versionChecker.checkForUpdates();\r\n const currentVersion = versionChecker.getCurrentVersion();\r\n \r\n if (versionInfo) {\r\n spinner.succeed('Version check completed');\r\n \r\n // Display the enhanced banner with update info\r\n if (versionInfo.updateAvailable) {\r\n const upgradeCommand = versionChecker.getUpgradeCommand(versionInfo);\r\n const updateInfo = {\r\n current: versionInfo.current,\r\n latest: versionInfo.latest,\r\n updateAvailable: versionInfo.updateAvailable,\r\n upgradeCommand\r\n };\r\n \r\n if (logger.options.colors) {\r\n displayColoredBanner(currentVersion,updateInfo);\r\n } else {\r\n displayBanner(currentVersion,updateInfo);\r\n }\r\n } else if (options.showCurrent) {\r\n logger.info(`Current version: ${versionInfo.current}`);\r\n logger.info(`Latest version: ${versionInfo.latest}`);\r\n logger.info('✅ You are using the latest version');\r\n }\r\n } else {\r\n spinner.fail('Could not check for updates');\r\n logger.warn('Unable to fetch version information. Please check your internet connection.');\r\n }\r\n } catch (error) {\r\n spinner.fail('Update check failed');\r\n logger.error('Failed to check for updates:', error);\r\n process.exit(1);\r\n }\r\n });\r\n\r\n// Handle unknown commands\r\nprogram.on('command:*', () => {\r\n logger.error(`Unknown command: ${program.args.join(' ')}`);\r\n logger.info(\"Run 'mulink --help' for available commands\");\r\n process.exit(1);\r\n});\r\n\r\n// Handle errors gracefully\r\nprocess.on('uncaughtException', error => {\r\n logger.error('Uncaught exception:', error);\r\n process.exit(1);\r\n});\r\n\r\nprocess.on('unhandledRejection', reason => {\r\n logger.error('Unhandled rejection:', reason);\r\n process.exit(1);\r\n});\r\n\r\n// Show help if no command provided\r\nif (process.argv.length === 2) {\r\n // Check if colors are disabled\r\n const hasNoColor = process.argv.includes('--no-color');\r\n const currentVersion = versionChecker.getCurrentVersion();\r\n if (hasNoColor) {\r\n displayBanner(currentVersion);\r\n } else {\r\n displayColoredBanner(currentVersion);\r\n }\r\n program.help();\r\n}\r\n\r\nprogram.parse();\r\n"]}
1
+ {"version":3,"sources":["../../src/cli/index.ts"],"names":["versionChecker"],"mappings":"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","file":"cli.js","sourcesContent":["#!/usr/bin/env node\r\nimport { Command } from 'commander';\r\nimport { BridgeCore } from '@/core/bridge-core';\r\nimport { ConfigurationLoader } from '@/config/configuration-loader';\r\nimport { BridgeLogger, LogLevel } from '@/utils/logger';\r\nimport { createBridgeVersionChecker } from '@/utils/version-checker';\r\n\r\n// ASCII Art Banner\r\nconst BANNER = (version: string) => `\r\n ███╗ ███╗██╗ ██╗██╗ ██╗███╗ ██╗██╗ ██╗\r\n ████╗ ████║██║ ██║██║ ██║████╗ ██║██║ ██╔╝\r\n ██╔████╔██║██║ ██║██║ ██║██╔██╗ ██║█████╔╝ \r\n ██║╚██╔╝██║██║ ██║██║ ██║██║╚██╗██║██╔═██╗ \r\n ██║ ╚═╝ ██║╚██████╔╝███████╗██║██║ ╚████║██║ ██╗\r\n ╚═╝ ╚═╝ ╚═════╝ ╚══════╝╚═╝╚═╝ ╚═══╝╚═╝ ╚═╝\r\n\r\n 🔗 Mulink - Universal Type-Safe API Integration\r\n 🔗 Connect APIs • Generate Clients • Type Safety\r\n 📦 Version: ${version} • 🚀 Next.js 16+ • ⚡ OpenAPI 3.x\r\n`;\r\n\r\nconst logger = new BridgeLogger({ prefix: '🔗 Mulink CLI' });\r\n\r\n// Enhanced banner display with update notification integration\r\nfunction displayBanner(version: string, updateInfo?: { current: string; latest: string; updateAvailable: boolean; upgradeCommand?: string }) {\r\n let banner = BANNER(version);\r\n \r\n if (updateInfo && updateInfo.updateAvailable) {\r\n const upgradeCommand = updateInfo.upgradeCommand || 'npm update mulink';\r\n \r\n banner += `\r\n\r\n─────────────────── 🔄 UPDATE AVAILABLE ──────────────────\r\n\r\n Current Version: ${updateInfo.current}\r\n Latest Version: ${updateInfo.latest}\r\n\r\n Upgrade Command:\r\n ${upgradeCommand}\r\n\r\n Run 'mulink check-updates' for more information\r\n\r\n──────────────────────────────────────────────────────────\r\n`;\r\n }\r\n \r\n console.log(banner);\r\n}\r\n\r\n// Enhanced colored banner display with update notification integration\r\nfunction displayColoredBanner(version: string, updateInfo?: { current: string; latest: string; updateAvailable: boolean; upgradeCommand?: string }) {\r\n const colors = {\r\n reset: '\\x1b[0m',\r\n bright: '\\x1b[1m',\r\n red: '\\x1b[31m',\r\n green: '\\x1b[32m',\r\n yellow: '\\x1b[33m',\r\n blue: '\\x1b[34m',\r\n cyan: '\\x1b[36m',\r\n magenta: '\\x1b[35m',\r\n orange: '\\x1b[38;5;208m',\r\n };\r\n\r\n let banner = BANNER(version)\r\n .replace(/█/g, `${colors.cyan}█${colors.reset}`)\r\n .replace(/🌉/g, `${colors.yellow}🌉${colors.reset}`)\r\n .replace(/🔗/g, `${colors.cyan}🔗${colors.reset}`)\r\n .replace(/📦/g, `${colors.green}📦${colors.reset}`)\r\n .replace(/🚀/g, `${colors.magenta}🚀${colors.reset}`)\r\n .replace(/⚡/g, `${colors.yellow}⚡${colors.reset}`);\r\n\r\n if (updateInfo && updateInfo.updateAvailable) {\r\n const upgradeCommand = updateInfo.upgradeCommand || 'npm update mulink';\r\n \r\n const updateBox = `\r\n─────────────────── 🔄 UPDATE AVAILABLE ──────────────────\r\n\r\n Current Version: ${updateInfo.current}\r\n Latest Version: ${updateInfo.latest}\r\n\r\n Upgrade Command:\r\n ${upgradeCommand}\r\n\r\n Run 'mulink check-updates' for more information\r\n\r\n──────────────────────────────────────────────────────────\r\n`;\r\n\r\n banner += updateBox;\r\n }\r\n\r\n console.log(banner);\r\n}\r\n\r\nconst program = new Command();\r\nconst versionChecker = createBridgeVersionChecker(logger);\r\nprogram\r\n .name('mulink')\r\n .description('Universal type-safe API integration library for modern web applications')\r\n .version(versionChecker.getCurrentVersion())\r\n .option('-v, --verbose', 'Enable verbose logging')\r\n .option('-q, --quiet', 'Suppress non-error output')\r\n .option('--no-color', 'Disable colored output')\r\n .option('--no-banner', 'Disable banner display')\r\n .hook('preAction', async (thisCommand) => {\r\n const opts = thisCommand.opts();\r\n if (opts.verbose) {\r\n logger.options.level = LogLevel.DEBUG;\r\n } else if (opts.quiet) {\r\n logger.options.level = LogLevel.ERROR;\r\n }\r\n if (opts.noColor) {\r\n logger.options.colors = false;\r\n }\r\n\r\n // Check for updates first (synchronously for banner integration)\r\n let updateInfo = null;\r\n if (!opts.quiet) {\r\n try {\r\n const versionChecker = createBridgeVersionChecker(logger);\r\n const versionInfo = await versionChecker.checkForUpdates();\r\n \r\n if (versionInfo && versionInfo.updateAvailable) {\r\n const upgradeCommand = versionChecker.getUpgradeCommand(versionInfo);\r\n updateInfo = {\r\n current: versionInfo.current,\r\n latest: versionInfo.latest,\r\n updateAvailable: versionInfo.updateAvailable,\r\n upgradeCommand\r\n };\r\n }\r\n } catch (error) {\r\n // Silently fail - version check should not interrupt user workflow\r\n logger.debug('Version check failed:', error);\r\n }\r\n }\r\n\r\n // Display banner with integrated update notification\r\n if (!opts.noBanner && !opts.quiet) {\r\n const currentVersion = versionChecker.getCurrentVersion();\r\n if (opts.noColor) {\r\n displayBanner(currentVersion, updateInfo || undefined);\r\n } else {\r\n displayColoredBanner(currentVersion, updateInfo || undefined);\r\n }\r\n }\r\n });\r\n\r\nprogram\r\n .command('generate')\r\n .alias('gen')\r\n .description('Generate API client code from OpenAPI schema')\r\n .option('-c, --config <path>', 'Path to config file', 'link.config.json')\r\n .option('-w, --watch', 'Watch for schema changes and regenerate automatically')\r\n .option('--dry-run', 'Show what would be generated without writing files')\r\n .action(async options => {\r\n const spinner = logger.spinner('Initializing generation...');\r\n\r\n try {\r\n const configLoader = new ConfigurationLoader();\r\n const config = await configLoader.load(options.config);\r\n spinner.succeed('Configuration loaded');\r\n\r\n const bridge = new BridgeCore();\r\n\r\n if (options.dryRun) {\r\n logger.info('🔍 Dry run mode - validation only');\r\n const validationSpinner = logger.spinner('Validating schema...');\r\n\r\n try {\r\n const isValid = await bridge.validateSchema(config.schema);\r\n if (isValid) {\r\n validationSpinner.succeed('Schema is valid');\r\n const info = await bridge.getSchemaInfo(config.schema);\r\n logger.info(`Schema: ${info.title} v${info.version}`);\r\n if (info.description) {\r\n logger.info(`Description: ${info.description}`);\r\n }\r\n } else {\r\n validationSpinner.fail('Schema validation failed');\r\n process.exit(1);\r\n }\r\n } catch (error) {\r\n validationSpinner.fail('Schema validation failed');\r\n logger.error('Schema validation error:', error);\r\n process.exit(1);\r\n }\r\n } else if (options.watch) {\r\n logger.warn('👀 Watch mode is not yet implemented');\r\n logger.info('Falling back to single generation...');\r\n await bridge.generate(config);\r\n } else {\r\n const generationSpinner = logger.spinner('Generating API client...');\r\n try {\r\n await bridge.generate(config);\r\n generationSpinner.succeed('API client generated successfully');\r\n } catch (error) {\r\n generationSpinner.fail('Generation failed');\r\n throw error;\r\n }\r\n }\r\n } catch (error) {\r\n spinner.fail('Generation failed');\r\n if (error instanceof Error) {\r\n logger.error('Error:', error.message);\r\n if (logger.options.level === LogLevel.DEBUG) {\r\n logger.error('Stack trace:', error.stack);\r\n }\r\n } else {\r\n logger.error('Unknown error:', error);\r\n }\r\n process.exit(1);\r\n }\r\n });\r\n\r\nprogram\r\n .command('init')\r\n .description('Initialize a new Mulink project')\r\n .option('-f, --framework <type>', 'Framework type', 'nextjs')\r\n .option('--router <type>', 'Next.js router type', 'app')\r\n .option('-s, --schema <url>', 'OpenAPI schema URL')\r\n .option('-o, --output <dir>', 'Output directory', 'src/generated')\r\n .action(async options => {\r\n const spinner = logger.spinner('Initializing Mulink project...');\r\n\r\n try {\r\n const configLoader = new ConfigurationLoader();\r\n const config = await configLoader.createDefault(options.framework);\r\n\r\n // Override defaults with provided options\r\n if (options.schema) config.schema = options.schema;\r\n if (options.output) config.outputDir = options.output;\r\n if (options.router) config.framework.router = options.router;\r\n\r\n await configLoader.save(config);\r\n spinner.succeed('Mulink configuration created successfully!');\r\n\r\n logger.info('📋 Configuration Summary:');\r\n logger.info(` Framework: ${config.framework.type}`);\r\n logger.info(` Router: ${config.framework.router}`);\r\n logger.info(` Schema: ${config.schema}`);\r\n logger.info(` Output: ${config.outputDir}`);\r\n\r\n logger.info('\\n🚀 Next steps:');\r\n logger.info('1. Edit link.config.json to configure your API');\r\n logger.info('2. Run \"mulink generate\" to create your API client');\r\n logger.info('3. Run \"mulink validate\" to check your configuration');\r\n } catch (error) {\r\n spinner.fail('Initialization failed');\r\n if (error instanceof Error) {\r\n logger.error('Error:', error.message);\r\n if (logger.options.level === LogLevel.DEBUG) {\r\n logger.error('Stack trace:', error.stack);\r\n }\r\n } else {\r\n logger.error('Unknown error:', error);\r\n }\r\n process.exit(1);\r\n }\r\n });\r\n\r\nprogram\r\n .command('validate')\r\n .description('Validate OpenAPI schema and configuration')\r\n .option('-c, --config <path>', 'Path to config file', 'link.config.json')\r\n .option('--schema-only', 'Only validate the OpenAPI schema')\r\n .action(async options => {\r\n try {\r\n const configLoader = new ConfigurationLoader();\r\n const config = await configLoader.load(options.config);\r\n\r\n const bridge = new BridgeCore();\r\n\r\n if (options.schemaOnly) {\r\n const isValid = await bridge.validateSchema(config.schema);\r\n if (isValid) {\r\n logger.success('✅ Schema is valid');\r\n const info = await bridge.getSchemaInfo(config.schema);\r\n logger.info(`Title: ${info.title}`);\r\n logger.info(`Version: ${info.version}`);\r\n if (info.description) logger.info(`Description: ${info.description}`);\r\n } else {\r\n logger.error('❌ Schema validation failed');\r\n process.exit(1);\r\n }\r\n } else {\r\n logger.success('✅ Configuration is valid');\r\n const isValid = await bridge.validateSchema(config.schema);\r\n if (isValid) {\r\n logger.success('✅ Schema is valid');\r\n } else {\r\n logger.error('❌ Schema validation failed');\r\n process.exit(1);\r\n }\r\n }\r\n } catch (error) {\r\n logger.error('Validation failed:', error);\r\n process.exit(1);\r\n }\r\n });\r\n\r\nprogram\r\n .command('clean')\r\n .description('Clean generated files and cache')\r\n .option('-c, --config <path>', 'Path to config file', 'link.config.json')\r\n .option('--force', 'Force clean without confirmation')\r\n .action(async options => {\r\n const spinner = logger.spinner('Cleaning cache and generated files...');\r\n\r\n try {\r\n const configLoader = new ConfigurationLoader();\r\n const config = await configLoader.load(options.config);\r\n\r\n const bridge = new BridgeCore();\r\n bridge.clearCache();\r\n\r\n // TODO: Implement file cleanup\r\n spinner.succeed('Cache and generated files cleared successfully');\r\n\r\n logger.info('🧹 Cleaned:');\r\n logger.info(' - Schema cache');\r\n logger.info(' - Generated files');\r\n logger.info(' - Build artifacts');\r\n } catch (error) {\r\n spinner.fail('Clean failed');\r\n if (error instanceof Error) {\r\n logger.error('Error:', error.message);\r\n if (logger.options.level === LogLevel.DEBUG) {\r\n logger.error('Stack trace:', error.stack);\r\n }\r\n } else {\r\n logger.error('Unknown error:', error);\r\n }\r\n process.exit(1);\r\n }\r\n });\r\n\r\nprogram\r\n .command('info')\r\n .description('Show project information and status')\r\n .option('-c, --config <path>', 'Path to config file', 'link.config.json')\r\n .action(async options => {\r\n try {\r\n const configLoader = new ConfigurationLoader();\r\n const config = await configLoader.load(options.config);\r\n\r\n logger.info('📊 Mulink Project Information');\r\n logger.info('='.repeat(40));\r\n logger.info(`Framework: ${config.framework.type}`);\r\n logger.info(`Router: ${config.framework.router}`);\r\n logger.info(`Schema: ${config.schema}`);\r\n logger.info(`Output: ${config.outputDir}`);\r\n logger.info(`Features:`);\r\n logger.info(` - Server Actions: ${config.framework.features.serverActions ? '✅' : '❌'}`);\r\n logger.info(` - Middleware: ${config.framework.features.middleware ? '✅' : '❌'}`);\r\n logger.info(` - Streaming: ${config.framework.features.streaming ? '✅' : '❌'}`);\r\n logger.info(` - Revalidation: ${config.framework.features.revalidation ? '✅' : '❌'}`);\r\n\r\n if (config.auth?.enabled) {\r\n logger.info(`Auth: ${config.auth.provider}`);\r\n }\r\n\r\n if (config.cache) {\r\n logger.info(`Cache: ${config.cache.strategy} (TTL: ${config.cache.ttl}s)`);\r\n }\r\n } catch (error) {\r\n logger.error('Failed to load project info:', error);\r\n process.exit(1);\r\n }\r\n });\r\n\r\nprogram\r\n .command('check-updates')\r\n .alias('update-check')\r\n .description('Check for available updates')\r\n .option('--force', 'Force check even if recently checked')\r\n .option('--show-current', 'Show current version information')\r\n .action(async options => {\r\n const spinner = logger.spinner('Checking for updates...');\r\n \r\n try {\r\n const versionChecker = createBridgeVersionChecker(logger);\r\n const versionInfo = await versionChecker.checkForUpdates();\r\n const currentVersion = versionChecker.getCurrentVersion();\r\n \r\n if (versionInfo) {\r\n spinner.succeed('Version check completed');\r\n \r\n // Display the enhanced banner with update info\r\n if (versionInfo.updateAvailable) {\r\n const upgradeCommand = versionChecker.getUpgradeCommand(versionInfo);\r\n const updateInfo = {\r\n current: versionInfo.current,\r\n latest: versionInfo.latest,\r\n updateAvailable: versionInfo.updateAvailable,\r\n upgradeCommand\r\n };\r\n \r\n if (logger.options.colors) {\r\n displayColoredBanner(currentVersion,updateInfo);\r\n } else {\r\n displayBanner(currentVersion,updateInfo);\r\n }\r\n } else if (options.showCurrent) {\r\n logger.info(`Current version: ${versionInfo.current}`);\r\n logger.info(`Latest version: ${versionInfo.latest}`);\r\n logger.info('✅ You are using the latest version');\r\n }\r\n } else {\r\n spinner.fail('Could not check for updates');\r\n logger.warn('Unable to fetch version information. Please check your internet connection.');\r\n }\r\n } catch (error) {\r\n spinner.fail('Update check failed');\r\n logger.error('Failed to check for updates:', error);\r\n process.exit(1);\r\n }\r\n });\r\n\r\n// Handle unknown commands\r\nprogram.on('command:*', () => {\r\n logger.error(`Unknown command: ${program.args.join(' ')}`);\r\n logger.info(\"Run 'mulink --help' for available commands\");\r\n process.exit(1);\r\n});\r\n\r\n// Handle errors gracefully\r\nprocess.on('uncaughtException', error => {\r\n logger.error('Uncaught exception:', error);\r\n process.exit(1);\r\n});\r\n\r\nprocess.on('unhandledRejection', reason => {\r\n logger.error('Unhandled rejection:', reason);\r\n process.exit(1);\r\n});\r\n\r\n// Show help if no command provided\r\nif (process.argv.length === 2) {\r\n // Check if colors are disabled\r\n const hasNoColor = process.argv.includes('--no-color');\r\n const currentVersion = versionChecker.getCurrentVersion();\r\n if (hasNoColor) {\r\n displayBanner(currentVersion);\r\n } else {\r\n displayColoredBanner(currentVersion);\r\n }\r\n program.help();\r\n}\r\n\r\nprogram.parse();\r\n"]}
@@ -1,68 +1,68 @@
1
1
  'use strict';
2
2
 
3
- var chunkF6QVO6NR_cjs = require('./chunk-F6QVO6NR.cjs');
3
+ var chunkRGLCJDOY_cjs = require('./chunk-RGLCJDOY.cjs');
4
4
 
5
5
  // src/client/index.ts
6
6
  function createBridgeClient(config) {
7
- return new chunkF6QVO6NR_cjs.BridgeCore();
7
+ return new chunkRGLCJDOY_cjs.BridgeCore();
8
8
  }
9
- chunkF6QVO6NR_cjs.__name(createBridgeClient, "createBridgeClient");
9
+ chunkRGLCJDOY_cjs.__name(createBridgeClient, "createBridgeClient");
10
10
  function createTypedClient(config) {
11
- return new chunkF6QVO6NR_cjs.BridgeCore();
11
+ return new chunkRGLCJDOY_cjs.BridgeCore();
12
12
  }
13
- chunkF6QVO6NR_cjs.__name(createTypedClient, "createTypedClient");
13
+ chunkRGLCJDOY_cjs.__name(createTypedClient, "createTypedClient");
14
14
 
15
15
  Object.defineProperty(exports, "BridgeCore", {
16
16
  enumerable: true,
17
- get: function () { return chunkF6QVO6NR_cjs.BridgeCore; }
17
+ get: function () { return chunkRGLCJDOY_cjs.BridgeCore; }
18
18
  });
19
19
  Object.defineProperty(exports, "BridgeError", {
20
20
  enumerable: true,
21
- get: function () { return chunkF6QVO6NR_cjs.BridgeError; }
21
+ get: function () { return chunkRGLCJDOY_cjs.BridgeError; }
22
22
  });
23
23
  Object.defineProperty(exports, "BridgeLogger", {
24
24
  enumerable: true,
25
- get: function () { return chunkF6QVO6NR_cjs.BridgeLogger; }
25
+ get: function () { return chunkRGLCJDOY_cjs.BridgeLogger; }
26
26
  });
27
27
  Object.defineProperty(exports, "ConfigurationLoader", {
28
28
  enumerable: true,
29
- get: function () { return chunkF6QVO6NR_cjs.ConfigurationLoader; }
29
+ get: function () { return chunkRGLCJDOY_cjs.ConfigurationLoader; }
30
30
  });
31
31
  Object.defineProperty(exports, "FileSystemManager", {
32
32
  enumerable: true,
33
- get: function () { return chunkF6QVO6NR_cjs.FileSystemManager; }
33
+ get: function () { return chunkRGLCJDOY_cjs.FileSystemManager; }
34
34
  });
35
35
  Object.defineProperty(exports, "GenerationError", {
36
36
  enumerable: true,
37
- get: function () { return chunkF6QVO6NR_cjs.GenerationError; }
37
+ get: function () { return chunkRGLCJDOY_cjs.GenerationError; }
38
38
  });
39
39
  Object.defineProperty(exports, "LogLevel", {
40
40
  enumerable: true,
41
- get: function () { return chunkF6QVO6NR_cjs.LogLevel; }
41
+ get: function () { return chunkRGLCJDOY_cjs.LogLevel; }
42
42
  });
43
43
  Object.defineProperty(exports, "OpenApiSchemaParser", {
44
44
  enumerable: true,
45
- get: function () { return chunkF6QVO6NR_cjs.OpenApiSchemaParser; }
45
+ get: function () { return chunkRGLCJDOY_cjs.OpenApiSchemaParser; }
46
46
  });
47
47
  Object.defineProperty(exports, "SchemaParseError", {
48
48
  enumerable: true,
49
- get: function () { return chunkF6QVO6NR_cjs.SchemaParseError; }
49
+ get: function () { return chunkRGLCJDOY_cjs.SchemaParseError; }
50
50
  });
51
51
  Object.defineProperty(exports, "ValidationError", {
52
52
  enumerable: true,
53
- get: function () { return chunkF6QVO6NR_cjs.ValidationError; }
53
+ get: function () { return chunkRGLCJDOY_cjs.ValidationError; }
54
54
  });
55
55
  Object.defineProperty(exports, "VersionChecker", {
56
56
  enumerable: true,
57
- get: function () { return chunkF6QVO6NR_cjs.VersionChecker; }
57
+ get: function () { return chunkRGLCJDOY_cjs.VersionChecker; }
58
58
  });
59
59
  Object.defineProperty(exports, "checkAndNotifyUpdates", {
60
60
  enumerable: true,
61
- get: function () { return chunkF6QVO6NR_cjs.checkAndNotifyUpdates; }
61
+ get: function () { return chunkRGLCJDOY_cjs.checkAndNotifyUpdates; }
62
62
  });
63
63
  Object.defineProperty(exports, "createBridgeVersionChecker", {
64
64
  enumerable: true,
65
- get: function () { return chunkF6QVO6NR_cjs.createBridgeVersionChecker; }
65
+ get: function () { return chunkRGLCJDOY_cjs.createBridgeVersionChecker; }
66
66
  });
67
67
  exports.createBridgeClient = createBridgeClient;
68
68
  exports.createTypedClient = createTypedClient;
@@ -1,5 +1,5 @@
1
- import { __name, BridgeCore } from './chunk-SMOCRKWL.js';
2
- export { BridgeCore, BridgeError, BridgeLogger, ConfigurationLoader, FileSystemManager, GenerationError, LogLevel, OpenApiSchemaParser, SchemaParseError, ValidationError, VersionChecker, checkAndNotifyUpdates, createBridgeVersionChecker } from './chunk-SMOCRKWL.js';
1
+ import { __name, BridgeCore } from './chunk-IVMVPQUK.js';
2
+ export { BridgeCore, BridgeError, BridgeLogger, ConfigurationLoader, FileSystemManager, GenerationError, LogLevel, OpenApiSchemaParser, SchemaParseError, ValidationError, VersionChecker, checkAndNotifyUpdates, createBridgeVersionChecker } from './chunk-IVMVPQUK.js';
3
3
 
4
4
  // src/client/index.ts
5
5
  function createBridgeClient(config) {