connectbase-client 0.6.2 → 0.6.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.
Files changed (2) hide show
  1. package/dist/cli.js +57 -34
  2. package/package.json +1 -1
package/dist/cli.js CHANGED
@@ -444,43 +444,48 @@ function addDeployScript(deployDir) {
444
444
  warn("package.json \uC218\uC815\uC5D0 \uC2E4\uD328\uD588\uC2B5\uB2C8\uB2E4");
445
445
  }
446
446
  }
447
- async function setupClaudeCode(apiKey) {
447
+ async function downloadDocs(apiKey, templates) {
448
448
  const claudeDir = path.join(process.cwd(), ".claude");
449
+ const docsDir = path.join(claudeDir, "docs");
449
450
  const claudeMdPath = path.join(claudeDir, "CLAUDE.md");
450
- const mcpConfigPath = path.join(process.cwd(), ".mcp.json");
451
- if (!fs.existsSync(claudeDir)) {
452
- fs.mkdirSync(claudeDir, { recursive: true });
451
+ if (!fs.existsSync(docsDir)) {
452
+ fs.mkdirSync(docsDir, { recursive: true });
453
453
  }
454
- log(`
454
+ if (!templates) {
455
+ log(`
455
456
  ${colors.dim}SDK \uAC00\uC774\uB4DC \uD15C\uD50C\uB9BF:${colors.reset}`);
456
- log(` ${colors.cyan}1${colors.reset}) \uAE30\uBCF8 SDK (Database, Auth, Realtime, Storage, Payment, Push, Ads)`);
457
- log(` ${colors.cyan}2${colors.reset}) \uAE30\uBCF8 SDK + \uAC8C\uC784 \uC11C\uBC84 (\uBA40\uD2F0\uD50C\uB808\uC774\uC5B4)`);
458
- log(` ${colors.cyan}3${colors.reset}) \uAE30\uBCF8 SDK + \uBE44\uB514\uC624 \uC11C\uBC84 (\uB3D9\uC601\uC0C1 \uD50C\uB7AB\uD3FC)`);
459
- log(` ${colors.cyan}4${colors.reset}) \uAE30\uBCF8 SDK + \uAC8C\uC784 \uC11C\uBC84 + \uBE44\uB514\uC624 \uC11C\uBC84`);
460
- const templateChoice = await prompt(`
457
+ log(` ${colors.cyan}1${colors.reset}) \uAE30\uBCF8 SDK (Database, Auth, Realtime, Storage, Payment, Push, Ads)`);
458
+ log(` ${colors.cyan}2${colors.reset}) \uAE30\uBCF8 SDK + \uAC8C\uC784 \uC11C\uBC84 (\uBA40\uD2F0\uD50C\uB808\uC774\uC5B4)`);
459
+ log(` ${colors.cyan}3${colors.reset}) \uAE30\uBCF8 SDK + \uBE44\uB514\uC624 \uC11C\uBC84 (\uB3D9\uC601\uC0C1 \uD50C\uB7AB\uD3FC)`);
460
+ log(` ${colors.cyan}4${colors.reset}) \uAE30\uBCF8 SDK + \uAC8C\uC784 \uC11C\uBC84 + \uBE44\uB514\uC624 \uC11C\uBC84`);
461
+ const templateChoice = await prompt(`
461
462
  ${colors.blue}?${colors.reset} \uC120\uD0DD (1): `) || "1";
462
- const templates = ["fullstack"];
463
- if (templateChoice === "2" || templateChoice === "4") templates.push("game-server");
464
- if (templateChoice === "3" || templateChoice === "4") templates.push("video-server");
463
+ templates = ["fullstack"];
464
+ if (templateChoice === "2" || templateChoice === "4") templates.push("game-server");
465
+ if (templateChoice === "3" || templateChoice === "4") templates.push("video-server");
466
+ }
465
467
  info("SDK \uAC1C\uBC1C \uAC00\uC774\uB4DC \uB2E4\uC6B4\uB85C\uB4DC \uC911...");
466
468
  try {
467
- let claudeMdContent = "";
468
- for (const tmpl of templates) {
469
- const claudeMdRes = await makeRequest(
470
- `${DEFAULT_BASE_URL}/v1/storages/webs/claude-md?api_key=${encodeURIComponent(apiKey)}&template=${tmpl}`,
471
- "GET",
472
- {}
473
- );
474
- if (claudeMdRes.status === 200 && typeof claudeMdRes.data === "string") {
475
- if (claudeMdContent) claudeMdContent += "\n\n---\n\n";
476
- claudeMdContent += claudeMdRes.data;
477
- } else {
478
- throw new Error(`HTTP ${claudeMdRes.status} for template ${tmpl}`);
479
- }
469
+ const templateParam = templates.join(",");
470
+ const res = await makeRequest(
471
+ `${DEFAULT_BASE_URL}/v1/storages/webs/claude-md?api_key=${encodeURIComponent(apiKey)}&template=${encodeURIComponent(templateParam)}&format=sections`,
472
+ "GET",
473
+ {}
474
+ );
475
+ if (res.status !== 200) {
476
+ throw new Error(`HTTP ${res.status}`);
480
477
  }
481
- fs.writeFileSync(claudeMdPath, claudeMdContent);
482
- const tmplNames = templates.join(" + ");
483
- success(`.claude/CLAUDE.md \uC0DD\uC131 \uC644\uB8CC (${tmplNames})`);
478
+ const data = res.data;
479
+ let savedCount = 0;
480
+ for (const section of data.sections) {
481
+ const filePath = path.join(docsDir, section.filename);
482
+ fs.writeFileSync(filePath, section.content);
483
+ savedCount++;
484
+ }
485
+ fs.writeFileSync(claudeMdPath, data.index);
486
+ success(`.claude/CLAUDE.md \uC778\uB371\uC2A4 \uC0DD\uC131 \uC644\uB8CC`);
487
+ success(`.claude/docs/ \uC5D0 ${savedCount}\uAC1C \uC139\uC158 \uD30C\uC77C \uC800\uC7A5 \uC644\uB8CC`);
488
+ log(`${colors.dim}AI\uAC00 \uD544\uC694\uD55C \uC139\uC158\uB9CC \uC77D\uC5B4 \uD1A0\uD070\uC744 \uC808\uC57D\uD569\uB2C8\uB2E4${colors.reset}`);
484
489
  } catch {
485
490
  warn("SDK \uAC00\uC774\uB4DC \uB2E4\uC6B4\uB85C\uB4DC \uC2E4\uD328, \uAE30\uBCF8 CLAUDE.md\uB97C \uC0DD\uC131\uD569\uB2C8\uB2E4");
486
491
  fs.writeFileSync(claudeMdPath, `# Connect Base SDK
@@ -491,6 +496,10 @@ ${colors.blue}?${colors.reset} \uC120\uD0DD (1): `) || "1";
491
496
  `);
492
497
  success(".claude/CLAUDE.md \uC0DD\uC131 \uC644\uB8CC (\uAE30\uBCF8)");
493
498
  }
499
+ }
500
+ async function setupClaudeCode(apiKey) {
501
+ const mcpConfigPath = path.join(process.cwd(), ".mcp.json");
502
+ await downloadDocs(apiKey);
494
503
  const mcpConfig = {
495
504
  mcpServers: {
496
505
  connectbase: {
@@ -858,6 +867,7 @@ ${colors.yellow}\uC0AC\uC6A9\uBC95:${colors.reset}
858
867
 
859
868
  ${colors.yellow}\uBA85\uB839\uC5B4:${colors.reset}
860
869
  init \uD504\uB85C\uC81D\uD2B8 \uCD08\uAE30\uD654 (\uC124\uC815 \uD30C\uC77C \uC0DD\uC131)
870
+ docs SDK \uBB38\uC11C \uB2E4\uC6B4\uB85C\uB4DC/\uC5C5\uB370\uC774\uD2B8
861
871
  deploy <directory> \uC6F9 \uC2A4\uD1A0\uB9AC\uC9C0\uC5D0 \uD30C\uC77C \uBC30\uD3EC
862
872
  tunnel <port> \uB85C\uCEEC \uC11C\uBE44\uC2A4\uB97C \uC778\uD130\uB137\uC5D0 \uB178\uCD9C
863
873
 
@@ -874,14 +884,17 @@ ${colors.yellow}\uBE60\uB978 \uC2DC\uC791:${colors.reset}
874
884
  ${colors.dim}# 1. \uCD08\uAE30\uD654 (\uCD5C\uCD08 1\uD68C)${colors.reset}
875
885
  npx connectbase-client init
876
886
 
877
- ${colors.dim}# 2. \uBC30\uD3EC${colors.reset}
887
+ ${colors.dim}# 2. SDK \uBB38\uC11C \uC5C5\uB370\uC774\uD2B8${colors.reset}
888
+ npx connectbase docs
889
+
890
+ ${colors.dim}# 3. \uBC30\uD3EC${colors.reset}
878
891
  npm run deploy
879
892
 
880
- ${colors.dim}# 3. \uD130\uB110 (\uAE30\uBCF8)${colors.reset}
881
- npx connectbase-client tunnel 3000
893
+ ${colors.dim}# 4. \uD130\uB110 (\uAE30\uBCF8)${colors.reset}
894
+ npx connectbase tunnel 3000
882
895
 
883
- ${colors.dim}# 4. \uD130\uB110 (GPU \uC11C\uBC84 \uB4F1 \uAE34 \uC751\uB2F5 \uC2DC)${colors.reset}
884
- npx connectbase-client tunnel 7860 --timeout 300 --max-body 50
896
+ ${colors.dim}# 5. \uD130\uB110 (GPU \uC11C\uBC84 \uB4F1 \uAE34 \uC751\uB2F5 \uC2DC)${colors.reset}
897
+ npx connectbase tunnel 7860 --timeout 300 --max-body 50
885
898
 
886
899
  ${colors.yellow}\uD658\uACBD\uBCC0\uC218:${colors.reset}
887
900
  CONNECTBASE_API_KEY API Key
@@ -947,6 +960,16 @@ async function main() {
947
960
  };
948
961
  if (parsed.command === "init") {
949
962
  await init();
963
+ } else if (parsed.command === "docs") {
964
+ let docsApiKey = config.apiKey;
965
+ if (!docsApiKey) {
966
+ docsApiKey = await prompt(`${colors.blue}?${colors.reset} API Key: `);
967
+ if (!docsApiKey) {
968
+ error("API Key\uB294 \uD544\uC218\uC785\uB2C8\uB2E4");
969
+ process.exit(1);
970
+ }
971
+ }
972
+ await downloadDocs(docsApiKey);
950
973
  } else if (parsed.command === "deploy") {
951
974
  const directory = parsed.args[0] || fileConfig.deployDir || ".";
952
975
  if (!config.apiKey) {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "connectbase-client",
3
- "version": "0.6.2",
3
+ "version": "0.6.3",
4
4
  "description": "Connect Base JavaScript/TypeScript SDK for browser and Node.js",
5
5
  "repository": {
6
6
  "type": "git",