connectbase-client 0.6.2 → 0.6.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (2) hide show
  1. package/dist/cli.js +59 -35
  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,9 +496,14 @@ ${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
- connectbase: {
505
+ "connect-base": {
506
+ type: "http",
497
507
  url: "https://mcp.connectbase.world/mcp",
498
508
  headers: {
499
509
  Authorization: "Bearer YOUR_SECRET_KEY_HERE"
@@ -858,6 +868,7 @@ ${colors.yellow}\uC0AC\uC6A9\uBC95:${colors.reset}
858
868
 
859
869
  ${colors.yellow}\uBA85\uB839\uC5B4:${colors.reset}
860
870
  init \uD504\uB85C\uC81D\uD2B8 \uCD08\uAE30\uD654 (\uC124\uC815 \uD30C\uC77C \uC0DD\uC131)
871
+ docs SDK \uBB38\uC11C \uB2E4\uC6B4\uB85C\uB4DC/\uC5C5\uB370\uC774\uD2B8
861
872
  deploy <directory> \uC6F9 \uC2A4\uD1A0\uB9AC\uC9C0\uC5D0 \uD30C\uC77C \uBC30\uD3EC
862
873
  tunnel <port> \uB85C\uCEEC \uC11C\uBE44\uC2A4\uB97C \uC778\uD130\uB137\uC5D0 \uB178\uCD9C
863
874
 
@@ -874,14 +885,17 @@ ${colors.yellow}\uBE60\uB978 \uC2DC\uC791:${colors.reset}
874
885
  ${colors.dim}# 1. \uCD08\uAE30\uD654 (\uCD5C\uCD08 1\uD68C)${colors.reset}
875
886
  npx connectbase-client init
876
887
 
877
- ${colors.dim}# 2. \uBC30\uD3EC${colors.reset}
888
+ ${colors.dim}# 2. SDK \uBB38\uC11C \uC5C5\uB370\uC774\uD2B8${colors.reset}
889
+ npx connectbase docs
890
+
891
+ ${colors.dim}# 3. \uBC30\uD3EC${colors.reset}
878
892
  npm run deploy
879
893
 
880
- ${colors.dim}# 3. \uD130\uB110 (\uAE30\uBCF8)${colors.reset}
881
- npx connectbase-client tunnel 3000
894
+ ${colors.dim}# 4. \uD130\uB110 (\uAE30\uBCF8)${colors.reset}
895
+ npx connectbase tunnel 3000
882
896
 
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
897
+ ${colors.dim}# 5. \uD130\uB110 (GPU \uC11C\uBC84 \uB4F1 \uAE34 \uC751\uB2F5 \uC2DC)${colors.reset}
898
+ npx connectbase tunnel 7860 --timeout 300 --max-body 50
885
899
 
886
900
  ${colors.yellow}\uD658\uACBD\uBCC0\uC218:${colors.reset}
887
901
  CONNECTBASE_API_KEY API Key
@@ -947,6 +961,16 @@ async function main() {
947
961
  };
948
962
  if (parsed.command === "init") {
949
963
  await init();
964
+ } else if (parsed.command === "docs") {
965
+ let docsApiKey = config.apiKey;
966
+ if (!docsApiKey) {
967
+ docsApiKey = await prompt(`${colors.blue}?${colors.reset} API Key: `);
968
+ if (!docsApiKey) {
969
+ error("API Key\uB294 \uD544\uC218\uC785\uB2C8\uB2E4");
970
+ process.exit(1);
971
+ }
972
+ }
973
+ await downloadDocs(docsApiKey);
950
974
  } else if (parsed.command === "deploy") {
951
975
  const directory = parsed.args[0] || fileConfig.deployDir || ".";
952
976
  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.4",
4
4
  "description": "Connect Base JavaScript/TypeScript SDK for browser and Node.js",
5
5
  "repository": {
6
6
  "type": "git",