@bolta-io/cli 0.0.16 → 0.0.18
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 +25 -0
- package/CLAUDE.md +3 -1
- package/README.md +3 -0
- package/dist/bin/bolta.js +18 -30
- package/dist/bin/bolta.js.map +1 -1
- package/dist/src/client/bolta-client.d.ts +3 -0
- package/dist/src/client/bolta-client.d.ts.map +1 -1
- package/dist/src/client/bolta-client.js +24 -6
- package/dist/src/client/bolta-client.js.map +1 -1
- package/dist/src/commands/config/index.d.ts.map +1 -1
- package/dist/src/commands/config/index.js +73 -33
- package/dist/src/commands/config/index.js.map +1 -1
- package/dist/src/commands/examples/index.d.ts.map +1 -1
- package/dist/src/commands/examples/index.js +4 -0
- package/dist/src/commands/examples/index.js.map +1 -1
- package/dist/src/commands/invoice/amend.d.ts.map +1 -1
- package/dist/src/commands/invoice/amend.js +9 -18
- package/dist/src/commands/invoice/amend.js.map +1 -1
- package/dist/src/commands/invoice/index.d.ts.map +1 -1
- package/dist/src/commands/invoice/index.js +3 -0
- package/dist/src/commands/invoice/index.js.map +1 -1
- package/dist/src/commands/invoice/issue-request.d.ts.map +1 -1
- package/dist/src/commands/invoice/issue-request.js +3 -8
- package/dist/src/commands/invoice/issue-request.js.map +1 -1
- package/dist/src/commands/invoice/issue.d.ts.map +1 -1
- package/dist/src/commands/invoice/issue.js +3 -8
- package/dist/src/commands/invoice/issue.js.map +1 -1
- package/dist/src/commands/update/nudge.d.ts +12 -0
- package/dist/src/commands/update/nudge.d.ts.map +1 -0
- package/dist/src/commands/update/nudge.js +104 -0
- package/dist/src/commands/update/nudge.js.map +1 -0
- package/dist/src/commands/update/updater.d.ts.map +1 -1
- package/dist/src/commands/update/updater.js +15 -28
- package/dist/src/commands/update/updater.js.map +1 -1
- package/dist/src/config/config-manager.d.ts +13 -0
- package/dist/src/config/config-manager.d.ts.map +1 -1
- package/dist/src/config/config-manager.js +57 -21
- package/dist/src/config/config-manager.js.map +1 -1
- package/dist/src/config/update-check-cache.d.ts +12 -0
- package/dist/src/config/update-check-cache.d.ts.map +1 -0
- package/dist/src/config/update-check-cache.js +45 -0
- package/dist/src/config/update-check-cache.js.map +1 -0
- package/dist/src/types/api.d.ts +6 -2
- package/dist/src/types/api.d.ts.map +1 -1
- package/dist/src/types/api.js +4 -1
- package/dist/src/types/api.js.map +1 -1
- package/dist/src/utils/client.d.ts +17 -0
- package/dist/src/utils/client.d.ts.map +1 -0
- package/dist/src/utils/client.js +17 -0
- package/dist/src/utils/client.js.map +1 -0
- package/dist/src/utils/output.d.ts +10 -2
- package/dist/src/utils/output.d.ts.map +1 -1
- package/dist/src/utils/output.js +17 -3
- package/dist/src/utils/output.js.map +1 -1
- package/dist/src/utils/platform.d.ts +1 -0
- package/dist/src/utils/platform.d.ts.map +1 -1
- package/dist/src/utils/platform.js +36 -9
- package/dist/src/utils/platform.js.map +1 -1
- package/dist/src/utils/version.d.ts +3 -0
- package/dist/src/utils/version.d.ts.map +1 -1
- package/dist/src/utils/version.js +24 -0
- package/dist/src/utils/version.js.map +1 -1
- package/dist/src/validators/schemas.d.ts +41 -1
- package/dist/src/validators/schemas.d.ts.map +1 -1
- package/dist/src/validators/schemas.js +68 -6
- package/dist/src/validators/schemas.js.map +1 -1
- package/llms.txt +4 -2
- package/package.json +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,30 @@
|
|
|
1
1
|
# @bolta-io/cli
|
|
2
2
|
|
|
3
|
+
## 0.0.18
|
|
4
|
+
|
|
5
|
+
### Patch Changes
|
|
6
|
+
|
|
7
|
+
- cbf83c3: 세금계산서 발행과 가액변동 수정발행 입력에 `taxType` 필수값과 과세유형별 세액 검증을 추가합니다.
|
|
8
|
+
|
|
9
|
+
## 0.0.17
|
|
10
|
+
|
|
11
|
+
### Patch Changes
|
|
12
|
+
|
|
13
|
+
- 215ec16: supplierKey 관련 진단성을 개선했습니다.
|
|
14
|
+
|
|
15
|
+
- `config test`가 서버의 403(존재하지 않는 supplierKey) 응답을 인증 실패로 오판하던 버그를 고쳤습니다. 이제 401만 인증 실패로 보고, 설정된 supplierKey가 이 API 키로 유효한지까지 함께 점검합니다.
|
|
16
|
+
- apiKey/supplierKey/baseUrl 저장·조회 시 앞뒤 공백·개행을 제거해 헤더 오염을 방지합니다.
|
|
17
|
+
- supplierKey를 실은 요청이 403을 받으면, 원인(키 불일치·환경변수 덮어쓰기)과 해결법(`bolta supplier get`, `env | grep BOLTA`, `bolta config test`)을 안내하고 마스킹된 supplierKey와 그 소스(env/config)를 에러에 노출합니다.
|
|
18
|
+
- `bolta --verbose` 실행 시 어떤 supplierKey가 어느 소스에서 전송되는지 로깅합니다.
|
|
19
|
+
- `config set supplier-key`에 공백·비정상 형식 경고를 추가했습니다.
|
|
20
|
+
|
|
21
|
+
업데이트 알림의 버전 기준과 캐시 처리를 개선했습니다.
|
|
22
|
+
|
|
23
|
+
- Homebrew 설치 환경에서는 실제 formula 버전을 기준으로 업데이트 알림과 `bolta update check` 결과를 계산해, 아직 `brew upgrade bolta`로 설치할 수 없는 버전을 안내하지 않습니다.
|
|
24
|
+
- 업데이트 확인 결과를 별도 캐시 파일에 저장하고, 일반 명령 실행 중에는 네트워크 요청 없이 캐시된 정보만으로 새 버전 알림을 표시합니다.
|
|
25
|
+
- 캐시 저장이나 백그라운드 갱신 실행에 실패해도 원래 명령 실행을 막지 않도록 했습니다.
|
|
26
|
+
- 설치 방식별 업데이트 명령 안내를 한곳에서 계산해 `bolta update`, `brew upgrade bolta`, `npm update -g @bolta-io/cli` 안내가 일관되게 표시됩니다.
|
|
27
|
+
|
|
3
28
|
## 0.0.16
|
|
4
29
|
|
|
5
30
|
### Patch Changes
|
package/CLAUDE.md
CHANGED
|
@@ -53,6 +53,7 @@ bolta certificate status SupplierKey_abc123
|
|
|
53
53
|
bolta invoice issue --data '{
|
|
54
54
|
"date": "2026-03-25",
|
|
55
55
|
"purpose": "CLAIM",
|
|
56
|
+
"taxType": "TAXABLE",
|
|
56
57
|
"supplier": {
|
|
57
58
|
"identificationNumber": "1234567890",
|
|
58
59
|
"organizationName": "공급자",
|
|
@@ -143,12 +144,13 @@ npm test # 테스트 실행
|
|
|
143
144
|
## 주의사항
|
|
144
145
|
|
|
145
146
|
- `purpose`: CLAIM(청구용) 또는 RECEIPT(영수용)
|
|
147
|
+
- `taxType`: TAXABLE(과세), ZERO_RATE(영세율), TAX_FREE(면세) 중 하나
|
|
146
148
|
- `items`: 최소 1개, 최대 16개
|
|
147
149
|
- `items[].specification`: 최대 60자
|
|
148
150
|
- 상호명은 최대 70자, 대표자명과 담당자 이름은 최대 30자
|
|
149
151
|
- 업태, 종목, 담당자 이메일은 최대 40자
|
|
150
152
|
- 주소와 세금계산서 비고는 최대 150자
|
|
151
|
-
- `tax`를 null로
|
|
153
|
+
- `taxType`이 TAX_FREE이면 모든 품목의 `tax`를 null로 설정하고, ZERO_RATE이면 0으로 설정
|
|
152
154
|
- 사업자등록번호는 하이픈 있어도 되고 없어도 됨 (자동 변환)
|
|
153
155
|
- 계약 해제(`amend termination`)는 원본 세금계산서의 품목 공급가액이 음수인 경우 사용 불가
|
|
154
156
|
- `--dry-run` 옵션으로 실제 API 호출 없이 요청 데이터 확인 가능
|
package/README.md
CHANGED
|
@@ -87,6 +87,7 @@ bolta certificate deregister <supplierKey>
|
|
|
87
87
|
bolta invoice issue --data '{
|
|
88
88
|
"date": "2026-03-25",
|
|
89
89
|
"purpose": "CLAIM",
|
|
90
|
+
"taxType": "TAXABLE",
|
|
90
91
|
"supplier": {
|
|
91
92
|
"identificationNumber": "1234567890",
|
|
92
93
|
"organizationName": "공급자 주식회사",
|
|
@@ -131,6 +132,7 @@ bolta invoice amend termination <issuanceKey> --date 2026-03-25
|
|
|
131
132
|
# 수정발행: 공급가액 변동
|
|
132
133
|
bolta invoice amend change-supply-cost <issuanceKey> --data '{
|
|
133
134
|
"date": "2026-03-25",
|
|
135
|
+
"taxType": "TAXABLE",
|
|
134
136
|
"items": [{
|
|
135
137
|
"date": "2026-03-25",
|
|
136
138
|
"name": "가격 조정",
|
|
@@ -165,6 +167,7 @@ bolta schema [command]
|
|
|
165
167
|
```
|
|
166
168
|
|
|
167
169
|
`invoice issue`, `invoice issue-request`, `amend change-supply-cost` 입력은 국세청 XML 전송 제한에 맞춰 로컬에서 먼저 검증됩니다. 필드별 길이 제한은 `bolta schema invoice-issue`로 확인할 수 있습니다.
|
|
170
|
+
`taxType`은 `TAXABLE`(과세), `ZERO_RATE`(영세율), `TAX_FREE`(면세) 중 하나이며 필수입니다. `ZERO_RATE`은 모든 품목의 `tax`를 `0`으로, `TAX_FREE`는 모든 품목의 `tax`를 `null`로 전달합니다.
|
|
168
171
|
|
|
169
172
|
#### 업데이트
|
|
170
173
|
|
package/dist/bin/bolta.js
CHANGED
|
@@ -7,9 +7,10 @@ import { registerConfigCommands } from '../src/commands/config/index.js';
|
|
|
7
7
|
import { registerExamplesCommand } from '../src/commands/examples/index.js';
|
|
8
8
|
import { registerSchemaCommand } from '../src/commands/schema/index.js';
|
|
9
9
|
import { registerUpdateCommands } from '../src/commands/update/index.js';
|
|
10
|
+
import { maybeNudgeUpdate, refreshUpdateCache, UPDATE_CACHE_COMMAND, } from '../src/commands/update/nudge.js';
|
|
10
11
|
import { registerGuideCommand } from '../src/commands/guide/index.js';
|
|
11
12
|
import { outputError, deprecationWarning } from '../src/utils/output.js';
|
|
12
|
-
import { getCurrentVersion
|
|
13
|
+
import { getCurrentVersion } from '../src/utils/version.js';
|
|
13
14
|
import { loadConfig, saveConfig } from '../src/config/config-manager.js';
|
|
14
15
|
const program = new Command();
|
|
15
16
|
program
|
|
@@ -26,9 +27,13 @@ program
|
|
|
26
27
|
if (opts.verbose) {
|
|
27
28
|
process.env.BOLTA_VERBOSE = '1';
|
|
28
29
|
}
|
|
30
|
+
// 백그라운드 캐시 갱신 자식 프로세스: 힌트/넛지 없이 본연의 작업만 (재귀 spawn 방지)
|
|
31
|
+
if (actionCommand.name() === UPDATE_CACHE_COMMAND)
|
|
32
|
+
return;
|
|
29
33
|
warnDeprecatedUsage();
|
|
30
|
-
|
|
31
|
-
|
|
34
|
+
const config = loadConfig();
|
|
35
|
+
checkFirstRun(actionCommand, config);
|
|
36
|
+
checkForUpdate(actionCommand, config);
|
|
32
37
|
});
|
|
33
38
|
registerSupplierCommands(program);
|
|
34
39
|
registerCertificateCommands(program);
|
|
@@ -60,7 +65,7 @@ function warnDeprecatedUsage() {
|
|
|
60
65
|
break;
|
|
61
66
|
}
|
|
62
67
|
}
|
|
63
|
-
function checkFirstRun(actionCommand) {
|
|
68
|
+
function checkFirstRun(actionCommand, config) {
|
|
64
69
|
const commandName = actionCommand.name();
|
|
65
70
|
const parentName = actionCommand.parent?.name();
|
|
66
71
|
// guide, config, update 커맨드에서는 힌트 미표시
|
|
@@ -70,42 +75,25 @@ function checkFirstRun(actionCommand) {
|
|
|
70
75
|
return;
|
|
71
76
|
if (commandName === 'update' || parentName === 'update')
|
|
72
77
|
return;
|
|
73
|
-
const config = loadConfig();
|
|
74
78
|
if (config.guideShown)
|
|
75
79
|
return;
|
|
76
80
|
console.error("[bolta] 처음 사용하시나요? 'bolta guide'로 주요 개념과 사용법을 확인하세요.\n");
|
|
77
81
|
config.guideShown = true;
|
|
78
82
|
saveConfig(config);
|
|
79
83
|
}
|
|
80
|
-
|
|
81
|
-
function checkForUpdateInBackground(actionCommand) {
|
|
84
|
+
function checkForUpdate(actionCommand, config) {
|
|
82
85
|
// update 커맨드 자체에서는 중복 확인 안 함
|
|
83
86
|
if (actionCommand.name() === 'update' || actionCommand.parent?.name() === 'update')
|
|
84
87
|
return;
|
|
85
|
-
|
|
86
|
-
const now = Date.now();
|
|
87
|
-
const lastCheck = config.lastUpdateCheck || 0;
|
|
88
|
-
// 캐시된 결과가 있고 24시간 이내이면 캐시 사용
|
|
89
|
-
if (now - lastCheck < ONE_DAY_MS) {
|
|
90
|
-
if (config.latestKnownVersion && isUpdateAvailable(getCurrentVersion(), config.latestKnownVersion)) {
|
|
91
|
-
console.error(`\n[bolta] 새 버전 v${config.latestKnownVersion}이 있습니다. 'bolta update'로 업데이트하세요.\n`);
|
|
92
|
-
}
|
|
93
|
-
return;
|
|
94
|
-
}
|
|
95
|
-
// 비동기로 최신 버전 확인 (fire-and-forget)
|
|
96
|
-
fetchLatestVersion()
|
|
97
|
-
.then((latest) => {
|
|
98
|
-
config.lastUpdateCheck = now;
|
|
99
|
-
config.latestKnownVersion = latest.version;
|
|
100
|
-
saveConfig(config);
|
|
101
|
-
if (isUpdateAvailable(getCurrentVersion(), latest.version)) {
|
|
102
|
-
console.error(`\n[bolta] 새 버전 v${latest.version}이 있습니다. 'bolta update'로 업데이트하세요.\n`);
|
|
103
|
-
}
|
|
104
|
-
})
|
|
105
|
-
.catch(() => {
|
|
106
|
-
// 네트워크 실패는 무시
|
|
107
|
-
});
|
|
88
|
+
maybeNudgeUpdate(config);
|
|
108
89
|
}
|
|
90
|
+
// 내부용 숨김 커맨드: 백그라운드에서 최신 버전을 확인해 캐시 파일에 기록
|
|
91
|
+
program
|
|
92
|
+
.command(UPDATE_CACHE_COMMAND, { hidden: true })
|
|
93
|
+
.description('내부용: 업데이트 캐시 갱신')
|
|
94
|
+
.action(async () => {
|
|
95
|
+
await refreshUpdateCache();
|
|
96
|
+
});
|
|
109
97
|
program.parseAsync(process.argv).catch((err) => {
|
|
110
98
|
outputError(err);
|
|
111
99
|
});
|
package/dist/bin/bolta.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"bolta.js","sourceRoot":"","sources":["../../bin/bolta.ts"],"names":[],"mappings":";AAEA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,wBAAwB,EAAE,MAAM,mCAAmC,CAAC;AAC7E,OAAO,EAAE,2BAA2B,EAAE,MAAM,sCAAsC,CAAC;AACnF,OAAO,EAAE,uBAAuB,EAAE,MAAM,kCAAkC,CAAC;AAC3E,OAAO,EAAE,sBAAsB,EAAE,MAAM,iCAAiC,CAAC;AACzE,OAAO,EAAE,uBAAuB,EAAE,MAAM,mCAAmC,CAAC;AAC5E,OAAO,EAAE,qBAAqB,EAAE,MAAM,iCAAiC,CAAC;AACxE,OAAO,EAAE,sBAAsB,EAAE,MAAM,iCAAiC,CAAC;AACzE,OAAO,EAAE,oBAAoB,EAAE,MAAM,gCAAgC,CAAC;AACtE,OAAO,EAAE,WAAW,EAAE,kBAAkB,EAAE,MAAM,wBAAwB,CAAC;AACzE,OAAO,EAAE,iBAAiB,EAAE,
|
|
1
|
+
{"version":3,"file":"bolta.js","sourceRoot":"","sources":["../../bin/bolta.ts"],"names":[],"mappings":"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"}
|
|
@@ -3,6 +3,8 @@ interface ClientConfig {
|
|
|
3
3
|
apiKey: string;
|
|
4
4
|
baseUrl: string;
|
|
5
5
|
supplierKey?: string;
|
|
6
|
+
/** supplierKey를 어느 소스에서 가져왔는지(env/config 등). 진단 로그·에러에 노출된다. */
|
|
7
|
+
supplierKeySource?: string;
|
|
6
8
|
timeout?: number;
|
|
7
9
|
maxRetries?: number;
|
|
8
10
|
}
|
|
@@ -10,6 +12,7 @@ export declare class BoltaClient {
|
|
|
10
12
|
private readonly baseUrl;
|
|
11
13
|
private readonly encodedApiKey;
|
|
12
14
|
private readonly supplierKey?;
|
|
15
|
+
private readonly supplierKeySource;
|
|
13
16
|
private readonly timeout;
|
|
14
17
|
private readonly maxRetries;
|
|
15
18
|
constructor(config: ClientConfig);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"bolta-client.d.ts","sourceRoot":"","sources":["../../../src/client/bolta-client.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EACV,uBAAuB,EACvB,gBAAgB,EAChB,gBAAgB,EAChB,cAAc,EACd,uBAAuB,EACvB,4BAA4B,EAC5B,qBAAqB,EACrB,gBAAgB,EAChB,qBAAqB,EACrB,sBAAsB,EACtB,sBAAsB,EACvB,MAAM,iBAAiB,CAAC;AAOzB,UAAU,YAAY;IACpB,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,MAAM,CAAC;IAChB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAUD,qBAAa,WAAW;IACtB,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAS;IACjC,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAS;IACvC,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAS;IACtC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAS;IACjC,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAS;gBAExB,MAAM,EAAE,YAAY;
|
|
1
|
+
{"version":3,"file":"bolta-client.d.ts","sourceRoot":"","sources":["../../../src/client/bolta-client.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EACV,uBAAuB,EACvB,gBAAgB,EAChB,gBAAgB,EAChB,cAAc,EACd,uBAAuB,EACvB,4BAA4B,EAC5B,qBAAqB,EACrB,gBAAgB,EAChB,qBAAqB,EACrB,sBAAsB,EACtB,sBAAsB,EACvB,MAAM,iBAAiB,CAAC;AAOzB,UAAU,YAAY;IACpB,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,MAAM,CAAC;IAChB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,gEAAgE;IAChE,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAUD,qBAAa,WAAW;IACtB,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAS;IACjC,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAS;IACvC,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAS;IACtC,OAAO,CAAC,QAAQ,CAAC,iBAAiB,CAAS;IAC3C,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAS;IACjC,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAS;gBAExB,MAAM,EAAE,YAAY;IAiB1B,cAAc,CAAC,IAAI,EAAE,qBAAqB,GAAG,OAAO,CAAC,gBAAgB,CAAC;IAItE,WAAW,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,gBAAgB,CAAC;IAQjE,kDAAkD;IAC5C,cAAc,CAAC,IAAI,EAAE,qBAAqB,GAAG,OAAO,CAAC,sBAAsB,CAAC;IAIlF,+CAA+C;IACzC,WAAW,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,sBAAsB,CAAC;IAWjE,iBAAiB,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,sBAAsB,CAAC;IAOvE,oBAAoB,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAO3D,qBAAqB,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAW5D,eAAe,CACnB,IAAI,EAAE,uBAAuB,EAC7B,OAAO,CAAC,EAAE;QAAE,WAAW,CAAC,EAAE,MAAM,CAAC;QAAC,WAAW,CAAC,EAAE,MAAM,CAAA;KAAE,GACvD,OAAO,CAAC,gBAAgB,CAAC;IAUtB,sBAAsB,CAC1B,IAAI,EAAE,uBAAuB,EAC7B,OAAO,CAAC,EAAE;QAAE,WAAW,CAAC,EAAE,MAAM,CAAC;QAAC,WAAW,CAAC,EAAE,MAAM,CAAA;KAAE,GACvD,OAAO,CAAC,gBAAgB,CAAC;IAUtB,aAAa,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,gBAAgB,CAAC;IAO7D,mBAAmB,CAAC,iBAAiB,EAAE,MAAM,GAAG,OAAO,CAAC,cAAc,CAAC;IAOvE,gBAAgB,CACpB,WAAW,EAAE,MAAM,EACnB,IAAI,EAAE,uBAAuB,EAC7B,WAAW,CAAC,EAAE,MAAM,GACnB,OAAO,CAAC,gBAAgB,CAAC;IAStB,qBAAqB,CACzB,WAAW,EAAE,MAAM,EACnB,IAAI,EAAE,4BAA4B,EAClC,WAAW,CAAC,EAAE,MAAM,GACnB,OAAO,CAAC,gBAAgB,CAAC;IAStB,mBAAmB,CACvB,WAAW,EAAE,MAAM,EACnB,WAAW,CAAC,EAAE,MAAM,GACnB,OAAO,CAAC,gBAAgB,CAAC;IAY5B,OAAO,CAAC,eAAe;YAQT,OAAO;CA6HtB"}
|
|
@@ -1,11 +1,12 @@
|
|
|
1
1
|
import { BoltaApiError, BoltaAuthError, BoltaNetworkError } from '../utils/errors.js';
|
|
2
|
-
import { deprecationWarning, verbose } from '../utils/output.js';
|
|
2
|
+
import { deprecationWarning, verbose, maskSecret } from '../utils/output.js';
|
|
3
3
|
import { getCurrentVersion } from '../utils/version.js';
|
|
4
4
|
const DEPRECATED_CUSTOMER_KEY_PREFIX = 'CustomerKey_';
|
|
5
5
|
export class BoltaClient {
|
|
6
6
|
baseUrl;
|
|
7
7
|
encodedApiKey;
|
|
8
8
|
supplierKey;
|
|
9
|
+
supplierKeySource;
|
|
9
10
|
timeout;
|
|
10
11
|
maxRetries;
|
|
11
12
|
constructor(config) {
|
|
@@ -15,6 +16,7 @@ export class BoltaClient {
|
|
|
15
16
|
this.baseUrl = config.baseUrl.replace(/\/+$/, '');
|
|
16
17
|
this.encodedApiKey = Buffer.from(`${config.apiKey}:`).toString('base64');
|
|
17
18
|
this.supplierKey = config.supplierKey;
|
|
19
|
+
this.supplierKeySource = config.supplierKeySource ?? 'unknown';
|
|
18
20
|
this.timeout = config.timeout ?? 30_000;
|
|
19
21
|
this.maxRetries = config.maxRetries ?? 3;
|
|
20
22
|
}
|
|
@@ -135,11 +137,22 @@ export class BoltaClient {
|
|
|
135
137
|
'User-Agent': `bolta-cli/${getCurrentVersion()}`,
|
|
136
138
|
};
|
|
137
139
|
const sk = options.supplierKey || this.supplierKey;
|
|
138
|
-
|
|
140
|
+
const supplierKeySource = options.supplierKey && options.supplierKey !== this.supplierKey
|
|
141
|
+
? 'argument'
|
|
142
|
+
: this.supplierKeySource;
|
|
143
|
+
const maskedSupplierKey = sk ? maskSecret(sk, 8, 4) : undefined;
|
|
144
|
+
if (sk) {
|
|
139
145
|
headers['Supplier-Key'] = sk;
|
|
146
|
+
verbose('Supplier-Key 사용', { supplierKey: maskedSupplierKey, source: supplierKeySource });
|
|
147
|
+
}
|
|
140
148
|
if (options.referenceId) {
|
|
141
149
|
headers['Bolta-Client-Reference-Id'] = options.referenceId;
|
|
142
150
|
}
|
|
151
|
+
// supplierKey 관련 4xx(특히 403)일 때 "무엇을·어디서 보냈는지"를 에러에 노출한다.
|
|
152
|
+
const supplierKeyDetails = sk
|
|
153
|
+
? { supplierKey: maskedSupplierKey, supplierKeySource }
|
|
154
|
+
: undefined;
|
|
155
|
+
const makeApiError = (status, code, message) => new BoltaApiError(message, code, status, getSuggestion(status, code, { hasSupplierKey: Boolean(sk) }), status === 403 ? supplierKeyDetails : undefined);
|
|
143
156
|
let lastError = null;
|
|
144
157
|
for (let attempt = 1; attempt <= this.maxRetries; attempt++) {
|
|
145
158
|
try {
|
|
@@ -176,7 +189,7 @@ export class BoltaClient {
|
|
|
176
189
|
const message = errBody.message || response.statusText || '알 수 없는 오류';
|
|
177
190
|
// Don't retry 4xx (except 429)
|
|
178
191
|
if (response.status >= 400 && response.status < 500 && response.status !== 429) {
|
|
179
|
-
throw
|
|
192
|
+
throw makeApiError(response.status, code, message);
|
|
180
193
|
}
|
|
181
194
|
// 429: respect Retry-After
|
|
182
195
|
if (response.status === 429) {
|
|
@@ -196,7 +209,7 @@ export class BoltaClient {
|
|
|
196
209
|
await sleep(delay);
|
|
197
210
|
continue;
|
|
198
211
|
}
|
|
199
|
-
throw
|
|
212
|
+
throw makeApiError(response.status, code, message);
|
|
200
213
|
}
|
|
201
214
|
catch (error) {
|
|
202
215
|
if (error instanceof BoltaApiError)
|
|
@@ -226,13 +239,18 @@ function backoff(attempt) {
|
|
|
226
239
|
function sleep(ms) {
|
|
227
240
|
return new Promise((resolve) => setTimeout(resolve, ms));
|
|
228
241
|
}
|
|
229
|
-
function getSuggestion(status, code) {
|
|
242
|
+
function getSuggestion(status, code, ctx) {
|
|
230
243
|
if (status === 401)
|
|
231
244
|
return "API 키가 올바른지 확인하세요. 'bolta config test'로 인증을 테스트할 수 있습니다.";
|
|
232
245
|
if (status === 402)
|
|
233
246
|
return "포인트 잔액이 부족합니다. Bolta API는 사전 충전 포인트 차감 방식입니다. https://developers.bolta.io 개발자센터에서 포인트를 충전하세요. 'bolta guide payment'로 요금 정보를 확인할 수 있습니다.";
|
|
234
|
-
if (status === 403)
|
|
247
|
+
if (status === 403) {
|
|
248
|
+
// 요청에 Supplier-Key가 실렸다면 supplierKey ↔ apiKey 불일치가 가장 흔한 원인이다.
|
|
249
|
+
if (ctx?.hasSupplierKey) {
|
|
250
|
+
return "이 API 키에 유효한 supplierKey인지 확인하세요. ① supplierKey는 test_/live_ 및 API 키마다 다릅니다(상호 호환 안 됨) ② 'bolta supplier get <supplierKey>'로 조회 ③ 환경변수 BOLTA_SUPPLIER_KEY/BOLTA_CUSTOMER_KEY가 config를 덮고 있지 않은지 'env | grep BOLTA'로 확인 ④ 'bolta config test'로 일괄 점검하세요.";
|
|
251
|
+
}
|
|
235
252
|
return '해당 작업에 대한 권한이 없습니다. API 키의 권한을 확인하세요.';
|
|
253
|
+
}
|
|
236
254
|
if (status === 404)
|
|
237
255
|
return '요청한 리소스를 찾을 수 없습니다. ID/키를 확인하세요.';
|
|
238
256
|
if (status === 429)
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"bolta-client.js","sourceRoot":"","sources":["../../../src/client/bolta-client.ts"],"names":[],"mappings":"AAcA,OAAO,EAAE,aAAa,EAAE,cAAc,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AACtF,OAAO,EAAE,kBAAkB,EAAE,OAAO,EAAE,MAAM,oBAAoB,CAAC;
|
|
1
|
+
{"version":3,"file":"bolta-client.js","sourceRoot":"","sources":["../../../src/client/bolta-client.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/commands/config/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/commands/config/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAyBpC,wBAAgB,sBAAsB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CA4I7D"}
|
|
@@ -1,52 +1,61 @@
|
|
|
1
|
-
import { loadConfig, saveConfig, resolveApiKey, resolveBaseUrl, maskApiKey,
|
|
2
|
-
import { outputSuccess, outputError, deprecationWarning } from '../../utils/output.js';
|
|
1
|
+
import { loadConfig, saveConfig, resolveApiKey, resolveBaseUrl, maskApiKey, resolveSupplierKeyWithSource, supplierKeySourceLabel, } from '../../config/config-manager.js';
|
|
2
|
+
import { outputSuccess, outputError, deprecationWarning, warning } from '../../utils/output.js';
|
|
3
3
|
import { BoltaClient } from '../../client/bolta-client.js';
|
|
4
4
|
import { BoltaError, BoltaApiError } from '../../utils/errors.js';
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
if (
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
return 'config';
|
|
16
|
-
return 'none';
|
|
5
|
+
/** config set 시 supplierKey 값이 의심스러우면 stderr로 경고한다(하드 차단 아님). */
|
|
6
|
+
function warnIfSuspiciousSupplierKey(value) {
|
|
7
|
+
if (!value)
|
|
8
|
+
return;
|
|
9
|
+
if (/\s/.test(value)) {
|
|
10
|
+
warning('supplierKey에 공백이 포함되어 있습니다. 복사 과정에서 섞이지 않았는지 확인하세요.');
|
|
11
|
+
}
|
|
12
|
+
if (!value.startsWith('SupplierKey_') && !value.startsWith('CustomerKey_')) {
|
|
13
|
+
warning("supplierKey는 보통 'SupplierKey_'로 시작합니다. 올바른 값인지 확인하세요.");
|
|
14
|
+
}
|
|
17
15
|
}
|
|
18
16
|
export function registerConfigCommands(program) {
|
|
19
17
|
const config = program.command('config').description('CLI 설정 관리');
|
|
20
18
|
config
|
|
21
19
|
.command('set <key> <value>')
|
|
22
|
-
.description('설정값 저장 (api-key, supplier-key, base-url)')
|
|
20
|
+
.description('설정값 저장 (api-key, supplier-key, base-url, update-check)')
|
|
23
21
|
.addHelpText('after', `
|
|
24
22
|
Examples:
|
|
25
23
|
bolta config set api-key test_your_key_here
|
|
26
24
|
bolta config set supplier-key SupplierKey_abc123
|
|
27
|
-
bolta config set base-url https://xapi.bolta.io/v1
|
|
25
|
+
bolta config set base-url https://xapi.bolta.io/v1
|
|
26
|
+
bolta config set update-check false`)
|
|
28
27
|
.action(async (key, value) => {
|
|
29
28
|
try {
|
|
29
|
+
// 헤더 오염(후행 개행/공백)을 원천 차단하기 위해 저장 전 정규화한다.
|
|
30
|
+
const trimmedValue = value.trim();
|
|
30
31
|
const current = loadConfig();
|
|
31
32
|
switch (key) {
|
|
32
33
|
case 'api-key':
|
|
33
|
-
current.apiKey =
|
|
34
|
+
current.apiKey = trimmedValue;
|
|
34
35
|
break;
|
|
35
36
|
case 'supplier-key':
|
|
36
|
-
|
|
37
|
+
warnIfSuspiciousSupplierKey(trimmedValue);
|
|
38
|
+
current.supplierKey = trimmedValue;
|
|
37
39
|
// 구 필드가 남아있으면 정리
|
|
38
40
|
delete current.customerKey;
|
|
39
41
|
break;
|
|
40
42
|
case 'customer-key':
|
|
41
43
|
deprecationWarning("config의 'customer-key'는 'supplier-key'로 변경되었습니다.");
|
|
42
|
-
|
|
44
|
+
warnIfSuspiciousSupplierKey(trimmedValue);
|
|
45
|
+
current.supplierKey = trimmedValue;
|
|
43
46
|
delete current.customerKey;
|
|
44
47
|
break;
|
|
45
48
|
case 'base-url':
|
|
46
|
-
current.baseUrl =
|
|
49
|
+
current.baseUrl = trimmedValue;
|
|
50
|
+
break;
|
|
51
|
+
case 'update-check':
|
|
52
|
+
if (value !== 'true' && value !== 'false') {
|
|
53
|
+
throw new BoltaError(`update-check 값이 올바르지 않습니다: ${value}`, 'CONFIG_ERROR', 'true 또는 false를 사용하세요.');
|
|
54
|
+
}
|
|
55
|
+
current.updateCheck = value === 'true';
|
|
47
56
|
break;
|
|
48
57
|
default:
|
|
49
|
-
throw new BoltaError(`알 수 없는 설정 키: ${key}`, 'CONFIG_ERROR', 'api-key, supplier-key, base-url 중 하나를 사용하세요.');
|
|
58
|
+
throw new BoltaError(`알 수 없는 설정 키: ${key}`, 'CONFIG_ERROR', 'api-key, supplier-key, base-url, update-check 중 하나를 사용하세요.');
|
|
50
59
|
}
|
|
51
60
|
saveConfig(current);
|
|
52
61
|
outputSuccess({ key, message: '설정이 저장되었습니다.' });
|
|
@@ -61,16 +70,17 @@ Examples:
|
|
|
61
70
|
.action(() => {
|
|
62
71
|
try {
|
|
63
72
|
const apiKey = resolveApiKey();
|
|
64
|
-
const
|
|
73
|
+
const supplier = resolveSupplierKeyWithSource();
|
|
65
74
|
const baseUrl = resolveBaseUrl();
|
|
66
75
|
const savedConfig = loadConfig();
|
|
67
76
|
outputSuccess({
|
|
68
77
|
apiKey: apiKey ? maskApiKey(apiKey) : '(미설정)',
|
|
69
|
-
supplierKey:
|
|
78
|
+
supplierKey: supplier.value ? maskApiKey(supplier.value) : '(미설정)',
|
|
70
79
|
baseUrl,
|
|
80
|
+
updateCheck: savedConfig.updateCheck !== false,
|
|
71
81
|
source: {
|
|
72
82
|
apiKey: apiKey ? (process.env.BOLTA_API_KEY ? 'env' : 'config') : 'none',
|
|
73
|
-
supplierKey:
|
|
83
|
+
supplierKey: supplierKeySourceLabel(supplier.source),
|
|
74
84
|
},
|
|
75
85
|
});
|
|
76
86
|
}
|
|
@@ -88,23 +98,53 @@ Examples:
|
|
|
88
98
|
throw new BoltaError('API 키가 설정되지 않았습니다.', 'AUTH_ERROR', "BOLTA_API_KEY 환경변수를 설정하거나 'bolta config set api-key <key>'를 실행하세요.");
|
|
89
99
|
}
|
|
90
100
|
const client = new BoltaClient({ apiKey, baseUrl: resolveBaseUrl() });
|
|
91
|
-
//
|
|
92
|
-
//
|
|
101
|
+
// 1) apiKey 인증 점검: 더미 supplierKey를 조회한다.
|
|
102
|
+
// 서버는 존재하지 않는 supplierKey에 404 또는 403(유효하지 않은 supplierKey)을 반환하므로,
|
|
103
|
+
// 인증 실패를 뜻하는 401은 AUTH_ERROR로, 403/404는 "인증됨"으로 판정한다.
|
|
93
104
|
try {
|
|
94
|
-
await client.getSupplier('
|
|
95
|
-
outputSuccess({ authenticated: true, message: 'API 연결이 정상입니다.' });
|
|
105
|
+
await client.getSupplier('__auth_probe__');
|
|
96
106
|
}
|
|
97
107
|
catch (err) {
|
|
98
|
-
if (err instanceof BoltaApiError && err.statusCode ===
|
|
99
|
-
outputSuccess({ authenticated: true, message: 'API 인증이 정상입니다.' });
|
|
100
|
-
}
|
|
101
|
-
else if (err instanceof BoltaApiError && err.statusCode === 401) {
|
|
108
|
+
if (err instanceof BoltaApiError && err.statusCode === 401) {
|
|
102
109
|
throw new BoltaError('API 키가 유효하지 않습니다.', 'AUTH_ERROR', 'API 키를 확인하세요. test_ 또는 live_ 접두사가 있어야 합니다.');
|
|
103
110
|
}
|
|
104
|
-
|
|
111
|
+
// 403/404만 인증 통과로 간주하고, 429/5xx 등은 그대로 전파한다.
|
|
112
|
+
if (!(err instanceof BoltaApiError) || (err.statusCode !== 403 && err.statusCode !== 404)) {
|
|
105
113
|
throw err;
|
|
106
114
|
}
|
|
107
115
|
}
|
|
116
|
+
// 2) supplierKey가 설정돼 있으면 이 API 키로 유효한지 실제 조회한다.
|
|
117
|
+
const supplier = resolveSupplierKeyWithSource();
|
|
118
|
+
let supplierKeyResult;
|
|
119
|
+
if (!supplier.value) {
|
|
120
|
+
supplierKeyResult = { configured: false };
|
|
121
|
+
}
|
|
122
|
+
else {
|
|
123
|
+
const source = supplierKeySourceLabel(supplier.source);
|
|
124
|
+
try {
|
|
125
|
+
await client.getSupplier(supplier.value);
|
|
126
|
+
supplierKeyResult = { configured: true, source, valid: true, message: 'supplierKey가 유효합니다.' };
|
|
127
|
+
}
|
|
128
|
+
catch (err) {
|
|
129
|
+
if (err instanceof BoltaApiError && (err.statusCode === 403 || err.statusCode === 404)) {
|
|
130
|
+
supplierKeyResult = {
|
|
131
|
+
configured: true,
|
|
132
|
+
source,
|
|
133
|
+
valid: false,
|
|
134
|
+
message: '이 API 키로는 존재하지 않거나 사용할 수 없는 supplierKey입니다. supplierKey는 test_/live_ 및 API 키마다 다릅니다. ' +
|
|
135
|
+
'환경변수 BOLTA_SUPPLIER_KEY/BOLTA_CUSTOMER_KEY가 config를 덮고 있지 않은지 확인하세요.',
|
|
136
|
+
};
|
|
137
|
+
}
|
|
138
|
+
else {
|
|
139
|
+
throw err;
|
|
140
|
+
}
|
|
141
|
+
}
|
|
142
|
+
}
|
|
143
|
+
outputSuccess({
|
|
144
|
+
authenticated: true,
|
|
145
|
+
message: 'API 인증이 정상입니다.',
|
|
146
|
+
supplierKey: supplierKeyResult,
|
|
147
|
+
});
|
|
108
148
|
}
|
|
109
149
|
catch (err) {
|
|
110
150
|
outputError(err);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/commands/config/index.ts"],"names":[],"mappings":"AACA,OAAO,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/commands/config/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/commands/examples/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/commands/examples/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAiLpC,wBAAgB,uBAAuB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAqD9D"}
|
|
@@ -21,6 +21,7 @@ function buildExamples() {
|
|
|
21
21
|
data: {
|
|
22
22
|
date: d,
|
|
23
23
|
purpose: 'CLAIM',
|
|
24
|
+
taxType: 'TAXABLE',
|
|
24
25
|
supplier: {
|
|
25
26
|
identificationNumber: '1234567890',
|
|
26
27
|
organizationName: '공급자 주식회사',
|
|
@@ -69,6 +70,7 @@ function buildExamples() {
|
|
|
69
70
|
data: {
|
|
70
71
|
date: d,
|
|
71
72
|
purpose: 'CLAIM',
|
|
73
|
+
taxType: 'TAXABLE',
|
|
72
74
|
supplier: {
|
|
73
75
|
identificationNumber: '1234567890',
|
|
74
76
|
taxRegistrationId: null,
|
|
@@ -119,6 +121,7 @@ function buildExamples() {
|
|
|
119
121
|
data: {
|
|
120
122
|
date: d,
|
|
121
123
|
purpose: 'CLAIM',
|
|
124
|
+
taxType: 'TAXABLE',
|
|
122
125
|
supplier: {
|
|
123
126
|
identificationNumber: '1234567890',
|
|
124
127
|
organizationName: '공급자 주식회사',
|
|
@@ -151,6 +154,7 @@ function buildExamples() {
|
|
|
151
154
|
description: '수정발행: 공급가액 변동',
|
|
152
155
|
data: {
|
|
153
156
|
date: d,
|
|
157
|
+
taxType: 'TAXABLE',
|
|
154
158
|
items: [
|
|
155
159
|
{
|
|
156
160
|
date: d,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/commands/examples/index.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/commands/examples/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"amend.d.ts","sourceRoot":"","sources":["../../../../src/commands/invoice/amend.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;
|
|
1
|
+
{"version":3,"file":"amend.d.ts","sourceRoot":"","sources":["../../../../src/commands/invoice/amend.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AASpC,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAoI5D"}
|