connectbase-client 6.3.1 → 6.3.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/CHANGELOG.md +27 -0
- package/dist/cli.js +71 -16
- package/package.json +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -3,6 +3,33 @@
|
|
|
3
3
|
본 SDK 의 모든 주요 변경사항을 [Keep a Changelog](https://keepachangelog.com/ko/1.1.0/) 형식으로 기록합니다.
|
|
4
4
|
버전은 [Semantic Versioning](https://semver.org/lang/ko/) 을 따릅니다.
|
|
5
5
|
|
|
6
|
+
## [6.3.3] - 2026-09-08
|
|
7
|
+
|
|
8
|
+
### Fixed — `deploy` 가 방금 빌드한 직후에도 "배포 전 빌드를 먼저 실행하세요" 를 찍던 문제
|
|
9
|
+
|
|
10
|
+
package.json 에 build 스크립트만 있으면 무조건 경고했습니다. `pnpm run deploy`(= `vite build &&
|
|
11
|
+
connectbase deploy`) 처럼 빌드를 끝낸 직후 실행돼도 "먼저 빌드하라" 가 찍혀, 방금 올린 배포가
|
|
12
|
+
낡은 것처럼 보였습니다. 명령도 `npm run build` 로 고정돼 있었습니다.
|
|
13
|
+
|
|
14
|
+
이제 npm / pnpm / yarn / bun 이 스크립트 실행 시 넣어 주는 `npm_lifecycle_event` 가 package.json
|
|
15
|
+
scripts 의 이름이면(=그 스크립트 안에서 실행 중) 안내를 생략합니다. 빌드가 포함된 deploy
|
|
16
|
+
스크립트가 있는데 직접 `connectbase deploy` 를 친 경우엔 그 스크립트를 쓰라고만 안내하고,
|
|
17
|
+
그 외에는 감지된 패키지 매니저의 `run build` 명령으로 안내합니다.
|
|
18
|
+
|
|
19
|
+
## [6.3.2] - 2026-09-08
|
|
20
|
+
|
|
21
|
+
### Fixed — `init` 이 pnpm / yarn / bun 프로젝트에도 npm 명령을 안내하던 문제
|
|
22
|
+
|
|
23
|
+
`init` 의 마지막 안내(`npm install`, `npm run deploy`)와 package.json 에 넣는 deploy
|
|
24
|
+
스크립트(`npm run build && …`)가 npm 으로 고정돼 있었습니다. pnpm 프로젝트에서 안내대로
|
|
25
|
+
`npm install` 을 치면 package-lock.json 이 새로 생기고 node_modules 가 pnpm 것과 갈립니다.
|
|
26
|
+
|
|
27
|
+
이제 package.json 의 `packageManager` 필드, 없으면 잠금 파일(pnpm-lock.yaml / yarn.lock /
|
|
28
|
+
bun.lock / package-lock.json — 모노레포는 git 루트까지 올라가며 탐색)로 패키지 매니저를 알아내
|
|
29
|
+
그 매니저의 명령을 안내하고 스크립트에도 씁니다. pnpm 은 `pnpm deploy` 가 워크스페이스
|
|
30
|
+
배포 내장 명령이라 반드시 `pnpm run deploy` 로 안내합니다. `update` 의 새 버전 안내도
|
|
31
|
+
npm 과 pnpm 을 나란히 찍던 것을 감지된 매니저 하나로 바꿨습니다.
|
|
32
|
+
|
|
6
33
|
## [6.3.1] - 2026-09-08
|
|
7
34
|
|
|
8
35
|
### Fixed — `init` 의 웹 스토리지 생성 실패가 `[object Object]` 로만 찍히던 문제
|
package/dist/cli.js
CHANGED
|
@@ -33,13 +33,16 @@ var cli_exports = {};
|
|
|
33
33
|
__export(cli_exports, {
|
|
34
34
|
TunnelConnectSelector: () => TunnelConnectSelector,
|
|
35
35
|
apiErrorMessage: () => apiErrorMessage,
|
|
36
|
+
buildFirstHint: () => buildFirstHint,
|
|
36
37
|
computeDeployDiff: () => computeDeployDiff,
|
|
38
|
+
detectPackageManager: () => detectPackageManager,
|
|
37
39
|
getTunnelConnectCandidates: () => getTunnelConnectCandidates,
|
|
38
40
|
guessMimeType: () => guessMimeType,
|
|
39
41
|
isAllowedDeployExt: () => isAllowedDeployExt,
|
|
40
42
|
isBinaryDeployExt: () => isBinaryDeployExt,
|
|
41
43
|
makeRequest: () => makeRequest,
|
|
42
44
|
normalizeRelativePath: () => normalizeRelativePath,
|
|
45
|
+
packageManagerCommands: () => packageManagerCommands,
|
|
43
46
|
parseArgs: () => parseArgs,
|
|
44
47
|
registerEndpointBinding: () => registerEndpointBinding,
|
|
45
48
|
sha256Hex: () => sha256Hex,
|
|
@@ -148,7 +151,7 @@ function handleTunnelError(msg, appId, localPort) {
|
|
|
148
151
|
}
|
|
149
152
|
|
|
150
153
|
// src/cli.ts
|
|
151
|
-
var VERSION = "6.3.
|
|
154
|
+
var VERSION = "6.3.3" ? "6.3.3" : getPackageVersion();
|
|
152
155
|
var DEFAULT_BASE_URL = "https://api.connectbase.world";
|
|
153
156
|
var colors = {
|
|
154
157
|
reset: "\x1B[0m",
|
|
@@ -676,14 +679,8 @@ async function deploy(directory, config, isDev = false, deployOpts = {}) {
|
|
|
676
679
|
if (fs2.existsSync(pkgPath)) {
|
|
677
680
|
try {
|
|
678
681
|
const pkg = JSON.parse(fs2.readFileSync(pkgPath, "utf-8"));
|
|
679
|
-
|
|
680
|
-
|
|
681
|
-
`\uBC30\uD3EC \uC804 \uBE4C\uB4DC\uB97C \uBA3C\uC800 \uC2E4\uD589\uD558\uC138\uC694: ${colors.cyan}npm run build && npx connectbase-client deploy${colors.reset}`
|
|
682
|
-
);
|
|
683
|
-
warn(
|
|
684
|
-
`\uB610\uB294 package.json\uC5D0 deploy \uC2A4\uD06C\uB9BD\uD2B8\uB97C \uB4F1\uB85D\uD558\uC138\uC694: ${colors.cyan}npx connectbase-client init${colors.reset}`
|
|
685
|
-
);
|
|
686
|
-
}
|
|
682
|
+
const pm = packageManagerCommands(detectPackageManager(process.cwd()));
|
|
683
|
+
for (const line of buildFirstHint(pkg, pm)) warn(line);
|
|
687
684
|
} catch {
|
|
688
685
|
}
|
|
689
686
|
}
|
|
@@ -1583,7 +1580,8 @@ ${colors.blue}?${colors.reset} \uC120\uD0DD (\uBC88\uD638): `
|
|
|
1583
1580
|
`);
|
|
1584
1581
|
success(".connectbaserc \uC0DD\uC131 \uC644\uB8CC");
|
|
1585
1582
|
addToGitignore(".connectbaserc");
|
|
1586
|
-
const
|
|
1583
|
+
const pm = packageManagerCommands(detectPackageManager(cwd));
|
|
1584
|
+
const { needsInstall } = addDeployScript(deployDir, pm);
|
|
1587
1585
|
await setupClaudeCode(secretKey, projectRoot, baseUrl);
|
|
1588
1586
|
log(`
|
|
1589
1587
|
${colors.green}\uCD08\uAE30\uD654 \uC644\uB8CC!${colors.reset}
|
|
@@ -1591,10 +1589,10 @@ ${colors.green}\uCD08\uAE30\uD654 \uC644\uB8CC!${colors.reset}
|
|
|
1591
1589
|
log(`${colors.dim}\uBC30\uD3EC\uD558\uB824\uBA74:${colors.reset}`);
|
|
1592
1590
|
if (needsInstall) {
|
|
1593
1591
|
log(
|
|
1594
|
-
` ${colors.cyan}
|
|
1592
|
+
` ${colors.cyan}${pm.install}${colors.reset} ${colors.dim}# connectbase-client (CLI \uD3EC\uD568) \uC124\uCE58${colors.reset}`
|
|
1595
1593
|
);
|
|
1596
1594
|
}
|
|
1597
|
-
log(` ${colors.cyan}
|
|
1595
|
+
log(` ${colors.cyan}${pm.run("deploy")}${colors.reset}`);
|
|
1598
1596
|
log(`
|
|
1599
1597
|
${colors.dim}Claude Code\uC5D0\uC11C MCP\uAC00 \uC790\uB3D9 \uC5F0\uACB0\uB429\uB2C8\uB2E4${colors.reset}
|
|
1600
1598
|
`);
|
|
@@ -1644,7 +1642,61 @@ ${entry}
|
|
|
1644
1642
|
success(".gitignore \uC0DD\uC131 \uC644\uB8CC");
|
|
1645
1643
|
}
|
|
1646
1644
|
}
|
|
1647
|
-
function
|
|
1645
|
+
function buildFirstHint(pkg, pm, lifecycleEvent = process.env.npm_lifecycle_event) {
|
|
1646
|
+
const scripts = pkg?.scripts ?? {};
|
|
1647
|
+
if (!scripts.build) return [];
|
|
1648
|
+
if (lifecycleEvent && Object.keys(scripts).includes(lifecycleEvent)) {
|
|
1649
|
+
return [];
|
|
1650
|
+
}
|
|
1651
|
+
if (typeof scripts.deploy === "string" && scripts.deploy.includes("build")) {
|
|
1652
|
+
return [
|
|
1653
|
+
`\uBE4C\uB4DC\uAE4C\uC9C0 \uD55C \uBC88\uC5D0 \uD558\uB824\uBA74 deploy \uC2A4\uD06C\uB9BD\uD2B8\uB97C \uC4F0\uC138\uC694: ${pm.run("deploy")}`
|
|
1654
|
+
];
|
|
1655
|
+
}
|
|
1656
|
+
return [
|
|
1657
|
+
`\uBC30\uD3EC \uC804 \uBE4C\uB4DC\uB97C \uBA3C\uC800 \uC2E4\uD589\uD558\uC138\uC694: ${pm.run("build")} && npx connectbase-client deploy`,
|
|
1658
|
+
"\uB610\uB294 package.json\uC5D0 deploy \uC2A4\uD06C\uB9BD\uD2B8\uB97C \uB4F1\uB85D\uD558\uC138\uC694: npx connectbase-client init"
|
|
1659
|
+
];
|
|
1660
|
+
}
|
|
1661
|
+
function detectPackageManager(startDir = process.cwd()) {
|
|
1662
|
+
try {
|
|
1663
|
+
const pkg = JSON.parse(
|
|
1664
|
+
fs2.readFileSync(path2.join(startDir, "package.json"), "utf-8")
|
|
1665
|
+
);
|
|
1666
|
+
const declared = typeof pkg.packageManager === "string" ? pkg.packageManager.split("@")[0] : "";
|
|
1667
|
+
if (declared === "npm" || declared === "pnpm" || declared === "yarn" || declared === "bun") {
|
|
1668
|
+
return declared;
|
|
1669
|
+
}
|
|
1670
|
+
} catch {
|
|
1671
|
+
}
|
|
1672
|
+
const lockfiles = [
|
|
1673
|
+
["pnpm-lock.yaml", "pnpm"],
|
|
1674
|
+
["yarn.lock", "yarn"],
|
|
1675
|
+
["bun.lockb", "bun"],
|
|
1676
|
+
["bun.lock", "bun"],
|
|
1677
|
+
["package-lock.json", "npm"],
|
|
1678
|
+
["npm-shrinkwrap.json", "npm"]
|
|
1679
|
+
];
|
|
1680
|
+
let dir = path2.resolve(startDir);
|
|
1681
|
+
for (; ; ) {
|
|
1682
|
+
for (const [file, pm] of lockfiles) {
|
|
1683
|
+
if (fs2.existsSync(path2.join(dir, file))) return pm;
|
|
1684
|
+
}
|
|
1685
|
+
if (fs2.existsSync(path2.join(dir, ".git"))) break;
|
|
1686
|
+
const parent = path2.dirname(dir);
|
|
1687
|
+
if (parent === dir) break;
|
|
1688
|
+
dir = parent;
|
|
1689
|
+
}
|
|
1690
|
+
return "npm";
|
|
1691
|
+
}
|
|
1692
|
+
function packageManagerCommands(pm) {
|
|
1693
|
+
return {
|
|
1694
|
+
install: `${pm} install`,
|
|
1695
|
+
run: (script) => `${pm} run ${script}`,
|
|
1696
|
+
addLatest: (name) => pm === "npm" ? `npm install ${name}@latest` : `${pm} add ${name}@latest`
|
|
1697
|
+
};
|
|
1698
|
+
}
|
|
1699
|
+
function addDeployScript(deployDir, pm) {
|
|
1648
1700
|
const pkgPath = path2.join(process.cwd(), "package.json");
|
|
1649
1701
|
if (!fs2.existsSync(pkgPath)) {
|
|
1650
1702
|
warn("package.json\uC744 \uCC3E\uC744 \uC218 \uC5C6\uC5B4 deploy \uC2A4\uD06C\uB9BD\uD2B8\uB97C \uCD94\uAC00\uD558\uC9C0 \uC54A\uC558\uC2B5\uB2C8\uB2E4");
|
|
@@ -1666,7 +1718,7 @@ function addDeployScript(deployDir) {
|
|
|
1666
1718
|
);
|
|
1667
1719
|
} else {
|
|
1668
1720
|
const deployCmd = `connectbase deploy ${deployDir}`;
|
|
1669
|
-
pkg.scripts.deploy = pkg.scripts.build ?
|
|
1721
|
+
pkg.scripts.deploy = pkg.scripts.build ? `${pm.run("build")} && ${deployCmd}` : deployCmd;
|
|
1670
1722
|
success("package.json\uC5D0 deploy \uC2A4\uD06C\uB9BD\uD2B8 \uCD94\uAC00 \uC644\uB8CC");
|
|
1671
1723
|
}
|
|
1672
1724
|
fs2.writeFileSync(pkgPath, `${JSON.stringify(pkg, null, 2)}
|
|
@@ -2146,10 +2198,10 @@ ${colors.cyan}ConnectBase Update${colors.reset}
|
|
|
2146
2198
|
warn(
|
|
2147
2199
|
`\uC0C8 \uBC84\uC804\uC774 \uC788\uC2B5\uB2C8\uB2E4: v${VERSION} \u2192 v${colors.green}${latestVersion}${colors.reset}`
|
|
2148
2200
|
);
|
|
2201
|
+
const pm = packageManagerCommands(detectPackageManager(projectRoot));
|
|
2149
2202
|
log(
|
|
2150
|
-
` ${colors.cyan}
|
|
2203
|
+
` ${colors.cyan}${pm.addLatest("connectbase-client")}${colors.reset}`
|
|
2151
2204
|
);
|
|
2152
|
-
log(` ${colors.cyan}pnpm add connectbase-client@latest${colors.reset}`);
|
|
2153
2205
|
log("");
|
|
2154
2206
|
}
|
|
2155
2207
|
} else {
|
|
@@ -3771,13 +3823,16 @@ main().catch((err) => {
|
|
|
3771
3823
|
0 && (module.exports = {
|
|
3772
3824
|
TunnelConnectSelector,
|
|
3773
3825
|
apiErrorMessage,
|
|
3826
|
+
buildFirstHint,
|
|
3774
3827
|
computeDeployDiff,
|
|
3828
|
+
detectPackageManager,
|
|
3775
3829
|
getTunnelConnectCandidates,
|
|
3776
3830
|
guessMimeType,
|
|
3777
3831
|
isAllowedDeployExt,
|
|
3778
3832
|
isBinaryDeployExt,
|
|
3779
3833
|
makeRequest,
|
|
3780
3834
|
normalizeRelativePath,
|
|
3835
|
+
packageManagerCommands,
|
|
3781
3836
|
parseArgs,
|
|
3782
3837
|
registerEndpointBinding,
|
|
3783
3838
|
sha256Hex,
|