kibela-api-client 0.1.9 → 0.2.0
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/README.md +66 -78
- package/dist/cli/_error-handler.d.ts.map +1 -1
- package/dist/cli/_error-handler.js +5 -8
- package/dist/cli/_error-handler.js.map +1 -1
- package/dist/cli/_validators.d.ts +15 -38
- package/dist/cli/_validators.d.ts.map +1 -1
- package/dist/cli/_validators.js +148 -49
- package/dist/cli/_validators.js.map +1 -1
- package/dist/cli/commands/all.d.ts +3 -0
- package/dist/cli/commands/all.d.ts.map +1 -0
- package/dist/cli/commands/all.js +59 -0
- package/dist/cli/commands/all.js.map +1 -0
- package/dist/cli/commands/config.d.ts +6 -2
- package/dist/cli/commands/config.d.ts.map +1 -1
- package/dist/cli/commands/config.js +67 -62
- package/dist/cli/commands/config.js.map +1 -1
- package/dist/cli/commands/get.d.ts +3 -0
- package/dist/cli/commands/get.d.ts.map +1 -0
- package/dist/cli/commands/get.js +152 -0
- package/dist/cli/commands/get.js.map +1 -0
- package/dist/cli/commands/groups-simple.d.ts +3 -0
- package/dist/cli/commands/groups-simple.d.ts.map +1 -0
- package/dist/cli/commands/groups-simple.js +39 -0
- package/dist/cli/commands/groups-simple.js.map +1 -0
- package/dist/cli/commands/new.d.ts +3 -0
- package/dist/cli/commands/new.d.ts.map +1 -0
- package/dist/cli/commands/new.js +168 -0
- package/dist/cli/commands/new.js.map +1 -0
- package/dist/cli/commands/set.d.ts +3 -0
- package/dist/cli/commands/set.d.ts.map +1 -0
- package/dist/cli/commands/set.js +96 -0
- package/dist/cli/commands/set.js.map +1 -0
- package/dist/cli/commands/sync.d.ts +3 -0
- package/dist/cli/commands/sync.d.ts.map +1 -0
- package/dist/cli/commands/sync.js +143 -0
- package/dist/cli/commands/sync.js.map +1 -0
- package/dist/cli/commands/users-simple.d.ts +3 -0
- package/dist/cli/commands/users-simple.d.ts.map +1 -0
- package/dist/cli/commands/users-simple.js +61 -0
- package/dist/cli/commands/users-simple.js.map +1 -0
- package/dist/cli/commands/users.d.ts +2 -2
- package/dist/cli/commands/users.d.ts.map +1 -1
- package/dist/cli/commands/users.js +50 -65
- package/dist/cli/commands/users.js.map +1 -1
- package/dist/cli/config.js +7 -7
- package/dist/cli/config.js.map +1 -1
- package/dist/cli/index.js +29 -13
- package/dist/cli/index.js.map +1 -1
- package/dist/cli/utils/frontmatter.d.ts +3 -0
- package/dist/cli/utils/frontmatter.d.ts.map +1 -0
- package/dist/cli/utils/frontmatter.js +89 -0
- package/dist/cli/utils/frontmatter.js.map +1 -0
- package/dist/cli/utils.d.ts +2 -2
- package/dist/cli/utils.d.ts.map +1 -1
- package/dist/cli/utils.js +7 -13
- package/dist/cli/utils.js.map +1 -1
- package/dist/client/index.js +2 -2
- package/dist/client/index.js.map +1 -1
- package/dist/core/cli/command.d.ts +45 -0
- package/dist/core/cli/command.d.ts.map +1 -0
- package/dist/core/cli/command.js +237 -0
- package/dist/core/cli/command.js.map +1 -0
- package/dist/core/env.d.ts +9 -0
- package/dist/core/env.d.ts.map +1 -0
- package/dist/core/env.js +96 -0
- package/dist/core/env.js.map +1 -0
- package/dist/core/graphql/client.d.ts +29 -0
- package/dist/core/graphql/client.d.ts.map +1 -0
- package/dist/core/graphql/client.js +41 -0
- package/dist/core/graphql/client.js.map +1 -0
- package/dist/core/http/client.d.ts +16 -0
- package/dist/core/http/client.d.ts.map +1 -0
- package/dist/core/http/client.js +87 -0
- package/dist/core/http/client.js.map +1 -0
- package/dist/core/index.d.ts +9 -0
- package/dist/core/index.d.ts.map +1 -0
- package/dist/core/index.js +25 -0
- package/dist/core/index.js.map +1 -0
- package/dist/core/terminal/colors.d.ts +29 -0
- package/dist/core/terminal/colors.d.ts.map +1 -0
- package/dist/core/terminal/colors.js +66 -0
- package/dist/core/terminal/colors.js.map +1 -0
- package/dist/core/terminal/prompt.d.ts +22 -0
- package/dist/core/terminal/prompt.d.ts.map +1 -0
- package/dist/core/terminal/prompt.js +189 -0
- package/dist/core/terminal/prompt.js.map +1 -0
- package/dist/core/terminal/spinner.d.ts +17 -0
- package/dist/core/terminal/spinner.d.ts.map +1 -0
- package/dist/core/terminal/spinner.js +79 -0
- package/dist/core/terminal/spinner.js.map +1 -0
- package/dist/core/validation/validator.d.ts +26 -0
- package/dist/core/validation/validator.d.ts.map +1 -0
- package/dist/core/validation/validator.js +100 -0
- package/dist/core/validation/validator.js.map +1 -0
- package/dist/queries/notes.d.ts +10 -1
- package/dist/queries/notes.d.ts.map +1 -1
- package/dist/queries/notes.js +13 -13
- package/dist/queries/notes.js.map +1 -1
- package/dist/sync/frontmatter.d.ts +30 -0
- package/dist/sync/frontmatter.d.ts.map +1 -0
- package/dist/sync/frontmatter.js +123 -0
- package/dist/sync/frontmatter.js.map +1 -0
- package/dist/sync/index.d.ts +3 -0
- package/dist/sync/index.d.ts.map +1 -0
- package/dist/sync/index.js +19 -0
- package/dist/sync/index.js.map +1 -0
- package/dist/sync/sync-client.d.ts +17 -0
- package/dist/sync/sync-client.d.ts.map +1 -0
- package/dist/sync/sync-client.js +158 -0
- package/dist/sync/sync-client.js.map +1 -0
- package/package.json +2 -12
package/README.md
CHANGED
@@ -3,14 +3,14 @@
|
|
3
3
|
[](https://www.npmjs.com/package/kibela-api-client)
|
4
4
|
[](https://www.npmjs.com/package/kibela-api-client)
|
5
5
|
[](https://www.npmjs.com/package/kibela-api-client)
|
6
|
-
[](https://www.npmjs.com/package/kibela-api-client?activeTab=dependencies)
|
7
7
|
[](https://opensource.org/licenses/MIT)
|
8
8
|
[](https://www.typescriptlang.org/)
|
9
9
|
[](https://nodejs.org)
|
10
10
|
|
11
|
-
Kibela API用の非公式TypeScript
|
11
|
+
Kibela API用の非公式TypeScriptクライアントライブラリ - ゼロ依存、フル機能CLI付き
|
12
12
|
|
13
|
-
**注意**: これはKibelaの非公式クライアントライブラリです。Kibela
|
13
|
+
**注意**: これはKibelaの非公式クライアントライブラリです。Kibelaのサービス提供者による公式サポートはありません。
|
14
14
|
|
15
15
|
[English Version](./README_EN.md)
|
16
16
|
|
@@ -20,23 +20,25 @@ Kibela API用の非公式TypeScriptクライアントライブラリ(CLI対応
|
|
20
20
|
- 🔧 **CLIツール**: 一般的な操作のための強力なコマンドラインインターフェース
|
21
21
|
- 🔐 **セキュア**: 環境変数対応のAPIキー管理
|
22
22
|
- 📝 **完全なAPIカバレッジ**: ノート、ユーザー、グループなど
|
23
|
-
- ⚡
|
23
|
+
- ⚡ **外部依存ゼロ**: Node.js標準モジュールのみを使用
|
24
24
|
- 🌐 **GraphQL**: 直接的なGraphQL API統合
|
25
|
+
- 🔄 **ローカル管理**: ローカルファイルとKibelaの効率的な同期
|
26
|
+
- 📄 **Frontmatter対応**: YAMLメタデータ付きMarkdownファイルの完全サポート
|
25
27
|
|
26
28
|
## インストール
|
27
29
|
|
28
30
|
```bash
|
29
31
|
# npm
|
30
|
-
npm install kibela-api-client
|
32
|
+
npm install -g kibela-api-client
|
31
33
|
|
32
34
|
# yarn
|
33
|
-
yarn add kibela-api-client
|
35
|
+
yarn global add kibela-api-client
|
34
36
|
|
35
37
|
# pnpm
|
36
|
-
pnpm add kibela-api-client
|
38
|
+
pnpm add -g kibela-api-client
|
37
39
|
|
38
|
-
#
|
39
|
-
npm install
|
40
|
+
# ローカルプロジェクト
|
41
|
+
npm install kibela-api-client
|
40
42
|
```
|
41
43
|
|
42
44
|
## クイックスタート
|
@@ -49,7 +51,7 @@ import { createClient } from 'kibela-api-client';
|
|
49
51
|
// クライアントインスタンスの作成
|
50
52
|
const kibela = createClient({
|
51
53
|
team: 'your-team-name',
|
52
|
-
token: process.env.
|
54
|
+
token: process.env.KIBELA_TOKEN
|
53
55
|
});
|
54
56
|
|
55
57
|
// ノートの作成
|
@@ -71,90 +73,46 @@ const user = await kibela.users.getCurrentUser();
|
|
71
73
|
|
72
74
|
#### 設定
|
73
75
|
|
74
|
-
CLIは以下の優先順位で複数の設定方法をサポートしています:
|
75
|
-
|
76
|
-
1. 設定ファイル(`~/.kibela/config.json`)
|
77
|
-
2. 環境変数
|
78
|
-
3. 現在のディレクトリの`.env`ファイル
|
79
|
-
|
80
76
|
```bash
|
81
77
|
# 対話的セットアップ
|
82
78
|
kibela config
|
83
79
|
|
84
|
-
#
|
80
|
+
# 直接設定
|
85
81
|
kibela config --team your-team --token your-api-token
|
86
82
|
|
87
|
-
#
|
83
|
+
# 環境変数で設定
|
88
84
|
export KIBELA_TEAM=your-team
|
89
|
-
export
|
90
|
-
|
91
|
-
# または.envファイルを使用
|
92
|
-
echo "KIBELA_TEAM=your-team" >> .env
|
93
|
-
echo "KIBELA_API_KEY=your-api-token" >> .env
|
85
|
+
export KIBELA_TOKEN=your-api-token
|
94
86
|
```
|
95
87
|
|
96
|
-
####
|
97
|
-
|
98
|
-
##### ノート管理
|
88
|
+
#### 基本コマンド
|
99
89
|
|
100
90
|
```bash
|
101
|
-
#
|
102
|
-
kibela
|
103
|
-
|
104
|
-
#
|
105
|
-
kibela notes list --group <グループID>
|
106
|
-
|
107
|
-
# グループ内の特定のフォルダのノート一覧
|
108
|
-
kibela notes list --group <グループID> --folder "<フォルダ名>"
|
109
|
-
|
110
|
-
# ノートの検索
|
111
|
-
kibela notes list --search "キーワード" --limit 20
|
112
|
-
|
113
|
-
# グループ内の全フォルダ一覧
|
114
|
-
kibela notes folders --group <グループID>
|
115
|
-
|
116
|
-
# 新規ノートの作成
|
117
|
-
kibela notes create --title "タイトル" --content "内容" --groups <グループID>
|
118
|
-
|
119
|
-
# Markdownファイルからノートを作成
|
120
|
-
kibela notes create --markdown note.md --groups <グループID>
|
121
|
-
|
122
|
-
# 特定のフォルダにノートを作成
|
123
|
-
kibela notes create --markdown note.md --groups <グループID> --folder "<フォルダ名>"
|
124
|
-
|
125
|
-
# 特定のノートを取得
|
126
|
-
kibela notes get <ノートID>
|
127
|
-
|
128
|
-
# ノートの内容をファイルに保存
|
129
|
-
kibela notes get <ノートID> --output output.md
|
91
|
+
# 全ノートの取得
|
92
|
+
kibela all # ローカルにダウンロード
|
93
|
+
kibela all --list # 一覧表示のみ
|
94
|
+
kibela all -l 20 # 20件のみ
|
130
95
|
|
131
|
-
#
|
132
|
-
kibela
|
96
|
+
# 特定ノートの取得
|
97
|
+
kibela get <ノートID> # ID指定(タイトルがファイル名に)
|
98
|
+
kibela get <ID> --frontmatter # フロントマター付きで保存
|
99
|
+
kibela get --group <ID> # グループ指定
|
133
100
|
|
134
101
|
# ノートの更新
|
135
|
-
kibela notes
|
102
|
+
kibela set notes/123.md # ファイルから更新
|
103
|
+
kibela set --id <ID> --title "新タイトル"
|
136
104
|
|
137
|
-
#
|
138
|
-
kibela
|
139
|
-
|
140
|
-
|
141
|
-
kibela notes delete <ノートID>
|
105
|
+
# ノートの新規作成
|
106
|
+
kibela new # 対話的に作成
|
107
|
+
kibela new --file note.md # ファイルから作成
|
108
|
+
kibela new --title "タイトル" --content "内容"
|
142
109
|
```
|
143
110
|
|
144
|
-
|
145
|
-
|
146
|
-
|
147
|
-
#
|
148
|
-
kibela
|
149
|
-
kibela groups --all # ページネーションなしで全グループを表示
|
150
|
-
|
151
|
-
# ユーザー一覧
|
152
|
-
kibela users list
|
153
|
-
kibela users list --all # 全ユーザーを表示
|
154
|
-
|
155
|
-
# 現在のユーザー情報を取得
|
156
|
-
kibela users me
|
157
|
-
```
|
111
|
+
# シンプルなコマンド体系
|
112
|
+
kibela all # 全ノートをローカルにダウンロード
|
113
|
+
kibela get --search "検索" # ノートを検索・取得
|
114
|
+
kibela set notes/123.md # 既存ノートを更新
|
115
|
+
kibela new --file note.md # 新規ノートを作成
|
158
116
|
|
159
117
|
## APIリファレンス
|
160
118
|
|
@@ -250,7 +208,7 @@ kibela.users.getAll()
|
|
250
208
|
## 環境変数
|
251
209
|
|
252
210
|
- `KIBELA_TEAM`: あなたのKibelaチーム名
|
253
|
-
- `
|
211
|
+
- `KIBELA_TOKEN`: あなたのAPIトークン
|
254
212
|
|
255
213
|
## セキュリティ
|
256
214
|
|
@@ -291,6 +249,36 @@ npm run dev
|
|
291
249
|
npm test
|
292
250
|
```
|
293
251
|
|
252
|
+
## 制限事項
|
253
|
+
|
254
|
+
- **検索機能**: Kibela APIの制限により、検索機能(`--search`)は現在利用できません
|
255
|
+
- 代替方法: `kibela all --list | grep "検索語"` または グループ指定での取得
|
256
|
+
|
257
|
+
## 外部依存ゼロの実装
|
258
|
+
|
259
|
+
このライブラリは外部依存を一切使用せず、Node.js標準モジュールのみで実装されています:
|
260
|
+
|
261
|
+
- HTTPクライアント: Node.js標準の`https`モジュール
|
262
|
+
- CLIフレームワーク: 自前実装
|
263
|
+
- ターミナル装飾: ANSIエスケープコード直接使用
|
264
|
+
- バリデーション: 軽量な自前実装
|
265
|
+
- 環境変数: `process.env`直接使用
|
266
|
+
|
267
|
+
これにより、セキュリティリスクを最小化し、バンドルサイズを削減しています。
|
268
|
+
|
269
|
+
## シンプルなコマンド体系
|
270
|
+
|
271
|
+
直感的な4つのコマンドでKibelaを操作:
|
272
|
+
|
273
|
+
- **all**: 全ノートの一括取得・ダウンロード
|
274
|
+
- **get**: 特定ノートの取得・検索
|
275
|
+
- **set**: 既存ノートの更新
|
276
|
+
- **new**: 新規ノートの作成
|
277
|
+
|
278
|
+
各コマンドは`--dir`オプションでローカルファイル管理もサポートします。
|
279
|
+
|
280
|
+
詳細な使用方法は[USAGE.md](./USAGE.md)をご覧ください。
|
281
|
+
|
294
282
|
## コントリビュート
|
295
283
|
|
296
284
|
コントリビューションを歓迎します!お気軽にプルリクエストを送信してください。
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"_error-handler.d.ts","sourceRoot":"","sources":["../../src/cli/_error-handler.ts"],"names":[],"mappings":"
|
1
|
+
{"version":3,"file":"_error-handler.d.ts","sourceRoot":"","sources":["../../src/cli/_error-handler.ts"],"names":[],"mappings":"AAYA,qBAAa,WAAY,SAAQ,KAAK;IAG3B,IAAI,CAAC,EAAE,MAAM;IACb,OAAO,CAAC,EAAE,GAAG;gBAFpB,OAAO,EAAE,MAAM,EACR,IAAI,CAAC,EAAE,MAAM,YAAA,EACb,OAAO,CAAC,EAAE,GAAG,YAAA;CAKvB;AAED,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,GAAG,GAAG,KAAK,CAsDpD;AAED,wBAAgB,YAAY,CAAC,KAAK,EAAE,KAAK,GAAG,WAAW,GAAG,IAAI,CAiB7D;AAED,wBAAgB,gBAAgB,CAAC,EAAE,EAAE,QAAQ,IAC7B,GAAG,MAAM,GAAG,EAAE,mBAW7B"}
|
@@ -1,13 +1,10 @@
|
|
1
1
|
"use strict";
|
2
|
-
var __importDefault = (this && this.__importDefault) || function (mod) {
|
3
|
-
return (mod && mod.__esModule) ? mod : { "default": mod };
|
4
|
-
};
|
5
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
6
3
|
exports.KibelaError = void 0;
|
7
4
|
exports.handleGraphQLError = handleGraphQLError;
|
8
5
|
exports.displayError = displayError;
|
9
6
|
exports.wrapAsyncCommand = wrapAsyncCommand;
|
10
|
-
const
|
7
|
+
const colors_1 = require("../core/terminal/colors");
|
11
8
|
class KibelaError extends Error {
|
12
9
|
constructor(message, code, details) {
|
13
10
|
super(message);
|
@@ -44,16 +41,16 @@ function handleGraphQLError(error) {
|
|
44
41
|
throw new KibelaError(error.message || 'An unexpected error occurred', 'UNKNOWN_ERROR', error);
|
45
42
|
}
|
46
43
|
function displayError(error) {
|
47
|
-
console.error(
|
44
|
+
console.error(colors_1.colors.red('✖'), colors_1.colors.bold('Error:'), error.message);
|
48
45
|
if (error instanceof KibelaError) {
|
49
46
|
if (error.code === 'AUTH_ERROR') {
|
50
|
-
console.error(
|
47
|
+
console.error(colors_1.colors.dim('\nPlease run "kibela config" to update your credentials.'));
|
51
48
|
}
|
52
49
|
else if (error.code === 'NETWORK_ERROR') {
|
53
|
-
console.error(
|
50
|
+
console.error(colors_1.colors.dim('\nCheck your internet connection and team name.'));
|
54
51
|
}
|
55
52
|
if (process.env.DEBUG && error.details) {
|
56
|
-
console.error(
|
53
|
+
console.error(colors_1.colors.dim('\nDebug details:'));
|
57
54
|
console.error(error.details);
|
58
55
|
}
|
59
56
|
}
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"_error-handler.js","sourceRoot":"","sources":["../../src/cli/_error-handler.ts"],"names":[],"mappings":"
|
1
|
+
{"version":3,"file":"_error-handler.js","sourceRoot":"","sources":["../../src/cli/_error-handler.ts"],"names":[],"mappings":"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"}
|
@@ -1,44 +1,21 @@
|
|
1
|
-
import {
|
2
|
-
export declare const ConfigSchema:
|
3
|
-
|
4
|
-
|
5
|
-
|
6
|
-
export declare const
|
7
|
-
|
8
|
-
content: z.ZodString;
|
9
|
-
coediting: z.ZodOptional<z.ZodBoolean>;
|
10
|
-
groupIds: z.ZodOptional<z.ZodArray<z.ZodString>>;
|
11
|
-
draft: z.ZodOptional<z.ZodBoolean>;
|
12
|
-
}, z.core.$strip>;
|
13
|
-
export declare const UpdateNoteInputSchema: z.ZodObject<{
|
14
|
-
title: z.ZodOptional<z.ZodString>;
|
15
|
-
content: z.ZodOptional<z.ZodString>;
|
16
|
-
coediting: z.ZodOptional<z.ZodBoolean>;
|
17
|
-
groupIds: z.ZodOptional<z.ZodArray<z.ZodString>>;
|
18
|
-
draft: z.ZodOptional<z.ZodBoolean>;
|
19
|
-
}, z.core.$strip>;
|
20
|
-
export declare const EnvSchema: z.ZodObject<{
|
21
|
-
KIBELA_TEAM: z.ZodOptional<z.ZodString>;
|
22
|
-
KIBELA_TOKEN: z.ZodOptional<z.ZodString>;
|
23
|
-
KIBELA_API_KEY: z.ZodOptional<z.ZodString>;
|
24
|
-
}, z.core.$strip>;
|
25
|
-
export declare const NoteResponseSchema: z.ZodObject<{
|
26
|
-
id: z.ZodString;
|
27
|
-
title: z.ZodString;
|
28
|
-
content: z.ZodString;
|
29
|
-
url: z.ZodString;
|
30
|
-
}, z.core.$strip>;
|
31
|
-
export declare const ErrorResponseSchema: z.ZodObject<{
|
32
|
-
errors: z.ZodArray<z.ZodObject<{
|
33
|
-
message: z.ZodString;
|
34
|
-
extensions: z.ZodOptional<z.ZodObject<{
|
35
|
-
code: z.ZodOptional<z.ZodString>;
|
36
|
-
}, z.core.$strip>>;
|
37
|
-
}, z.core.$strip>>;
|
38
|
-
}, z.core.$strip>;
|
1
|
+
import { Schema } from '../core/validation/validator';
|
2
|
+
export declare const ConfigSchema: Schema;
|
3
|
+
export declare const CreateNoteInputSchema: Schema;
|
4
|
+
export declare const UpdateNoteInputSchema: Schema;
|
5
|
+
export declare const EnvSchema: Schema;
|
6
|
+
export declare const NoteResponseSchema: Schema;
|
7
|
+
export declare const ErrorResponseSchema: Schema;
|
39
8
|
export declare function validateConfig(team?: string, token?: string): {
|
40
9
|
isValid: boolean;
|
41
10
|
error?: string;
|
42
11
|
};
|
12
|
+
export declare function validateUpdateNoteInput(data: any): {
|
13
|
+
isValid: boolean;
|
14
|
+
error?: string;
|
15
|
+
};
|
16
|
+
export declare function validateEnv(env: any): {
|
17
|
+
isValid: boolean;
|
18
|
+
error?: string;
|
19
|
+
};
|
43
20
|
export declare function sanitizeToken(token: string): string;
|
44
21
|
//# sourceMappingURL=_validators.d.ts.map
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"_validators.d.ts","sourceRoot":"","sources":["../../src/cli/_validators.ts"],"names":[],"mappings":"AAAA,OAAO,
|
1
|
+
{"version":3,"file":"_validators.d.ts","sourceRoot":"","sources":["../../src/cli/_validators.ts"],"names":[],"mappings":"AAAA,OAAO,EAAa,MAAM,EAAE,MAAM,8BAA8B,CAAC;AAGjE,eAAO,MAAM,YAAY,EAAE,MAa1B,CAAC;AAGF,eAAO,MAAM,qBAAqB,EAAE,MA0BnC,CAAC;AAEF,eAAO,MAAM,qBAAqB,EAAE,MAwBnC,CAAC;AAGF,eAAO,MAAM,SAAS,EAAE,MASvB,CAAC;AAGF,eAAO,MAAM,kBAAkB,EAAE,MAiBhC,CAAC;AAEF,eAAO,MAAM,mBAAmB,EAAE,MAwBjC,CAAC;AAGF,wBAAgB,cAAc,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,MAAM,GAAG;IAAE,OAAO,EAAE,OAAO,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAA;CAAE,CAYlG;AAED,wBAAgB,uBAAuB,CAAC,IAAI,EAAE,GAAG,GAAG;IAAE,OAAO,EAAE,OAAO,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAA;CAAE,CAevF;AAED,wBAAgB,WAAW,CAAC,GAAG,EAAE,GAAG,GAAG;IAAE,OAAO,EAAE,OAAO,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAA;CAAE,CAW1E;AAED,wBAAgB,aAAa,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAKnD"}
|
package/dist/cli/_validators.js
CHANGED
@@ -2,62 +2,161 @@
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
3
3
|
exports.ErrorResponseSchema = exports.NoteResponseSchema = exports.EnvSchema = exports.UpdateNoteInputSchema = exports.CreateNoteInputSchema = exports.ConfigSchema = void 0;
|
4
4
|
exports.validateConfig = validateConfig;
|
5
|
+
exports.validateUpdateNoteInput = validateUpdateNoteInput;
|
6
|
+
exports.validateEnv = validateEnv;
|
5
7
|
exports.sanitizeToken = sanitizeToken;
|
6
|
-
const
|
8
|
+
const validator_1 = require("../core/validation/validator");
|
7
9
|
// Configuration validation
|
8
|
-
exports.ConfigSchema =
|
9
|
-
team:
|
10
|
-
|
11
|
-
|
10
|
+
exports.ConfigSchema = {
|
11
|
+
team: {
|
12
|
+
type: 'string',
|
13
|
+
required: true,
|
14
|
+
min: 1,
|
15
|
+
validate: (value) => value.trim() === '' ? 'Team name is required' : null,
|
16
|
+
},
|
17
|
+
token: {
|
18
|
+
type: 'string',
|
19
|
+
required: true,
|
20
|
+
min: 1,
|
21
|
+
validate: (value) => value.trim() === '' ? 'API token is required' : null,
|
22
|
+
},
|
23
|
+
};
|
12
24
|
// Note input validation
|
13
|
-
exports.CreateNoteInputSchema =
|
14
|
-
title:
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
}
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
25
|
+
exports.CreateNoteInputSchema = {
|
26
|
+
title: {
|
27
|
+
type: 'string',
|
28
|
+
required: true,
|
29
|
+
min: 1,
|
30
|
+
validate: (value) => value.trim() === '' ? 'Title is required' : null,
|
31
|
+
},
|
32
|
+
content: {
|
33
|
+
type: 'string',
|
34
|
+
required: true,
|
35
|
+
min: 1,
|
36
|
+
validate: (value) => value.trim() === '' ? 'Content is required' : null,
|
37
|
+
},
|
38
|
+
coediting: {
|
39
|
+
type: 'boolean',
|
40
|
+
required: false,
|
41
|
+
},
|
42
|
+
groupIds: {
|
43
|
+
type: 'array',
|
44
|
+
required: false,
|
45
|
+
items: { type: 'string' },
|
46
|
+
},
|
47
|
+
draft: {
|
48
|
+
type: 'boolean',
|
49
|
+
required: false,
|
50
|
+
},
|
51
|
+
};
|
52
|
+
exports.UpdateNoteInputSchema = {
|
53
|
+
title: {
|
54
|
+
type: 'string',
|
55
|
+
required: false,
|
56
|
+
min: 1,
|
57
|
+
},
|
58
|
+
content: {
|
59
|
+
type: 'string',
|
60
|
+
required: false,
|
61
|
+
min: 1,
|
62
|
+
},
|
63
|
+
coediting: {
|
64
|
+
type: 'boolean',
|
65
|
+
required: false,
|
66
|
+
},
|
67
|
+
groupIds: {
|
68
|
+
type: 'array',
|
69
|
+
required: false,
|
70
|
+
items: { type: 'string' },
|
71
|
+
},
|
72
|
+
draft: {
|
73
|
+
type: 'boolean',
|
74
|
+
required: false,
|
75
|
+
},
|
76
|
+
};
|
29
77
|
// Environment variable validation
|
30
|
-
exports.EnvSchema =
|
31
|
-
KIBELA_TEAM:
|
32
|
-
|
33
|
-
|
34
|
-
}
|
35
|
-
|
36
|
-
|
78
|
+
exports.EnvSchema = {
|
79
|
+
KIBELA_TEAM: {
|
80
|
+
type: 'string',
|
81
|
+
required: false,
|
82
|
+
},
|
83
|
+
KIBELA_TOKEN: {
|
84
|
+
type: 'string',
|
85
|
+
required: false,
|
86
|
+
},
|
87
|
+
};
|
37
88
|
// API response validation
|
38
|
-
exports.NoteResponseSchema =
|
39
|
-
id:
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
|
44
|
-
|
45
|
-
|
46
|
-
|
47
|
-
|
48
|
-
|
49
|
-
|
50
|
-
}
|
51
|
-
|
89
|
+
exports.NoteResponseSchema = {
|
90
|
+
id: {
|
91
|
+
type: 'string',
|
92
|
+
required: true,
|
93
|
+
},
|
94
|
+
title: {
|
95
|
+
type: 'string',
|
96
|
+
required: true,
|
97
|
+
},
|
98
|
+
content: {
|
99
|
+
type: 'string',
|
100
|
+
required: true,
|
101
|
+
},
|
102
|
+
url: {
|
103
|
+
type: 'string',
|
104
|
+
required: true,
|
105
|
+
},
|
106
|
+
};
|
107
|
+
exports.ErrorResponseSchema = {
|
108
|
+
errors: {
|
109
|
+
type: 'array',
|
110
|
+
required: true,
|
111
|
+
items: {
|
112
|
+
type: 'object',
|
113
|
+
properties: {
|
114
|
+
message: {
|
115
|
+
type: 'string',
|
116
|
+
required: true,
|
117
|
+
},
|
118
|
+
extensions: {
|
119
|
+
type: 'object',
|
120
|
+
required: false,
|
121
|
+
properties: {
|
122
|
+
code: {
|
123
|
+
type: 'string',
|
124
|
+
required: false,
|
125
|
+
},
|
126
|
+
},
|
127
|
+
},
|
128
|
+
},
|
129
|
+
},
|
130
|
+
},
|
131
|
+
};
|
52
132
|
// Validation helpers
|
53
133
|
function validateConfig(team, token) {
|
54
|
-
const
|
55
|
-
|
56
|
-
|
57
|
-
|
58
|
-
|
59
|
-
|
60
|
-
|
134
|
+
const errors = validator_1.Validator.validate({ team: team || '', token: token || '' }, exports.ConfigSchema);
|
135
|
+
if (errors.length > 0) {
|
136
|
+
const errorMessages = errors.map(e => e.message).join(', ');
|
137
|
+
return { isValid: false, error: errorMessages };
|
138
|
+
}
|
139
|
+
return { isValid: true };
|
140
|
+
}
|
141
|
+
function validateUpdateNoteInput(data) {
|
142
|
+
const errors = validator_1.Validator.validate(data, exports.UpdateNoteInputSchema);
|
143
|
+
// Additional validation: at least one field must be provided
|
144
|
+
if (!data.title && !data.content && data.coediting === undefined &&
|
145
|
+
!data.groupIds && data.draft === undefined) {
|
146
|
+
return { isValid: false, error: 'At least one field must be provided' };
|
147
|
+
}
|
148
|
+
if (errors.length > 0) {
|
149
|
+
const errorMessages = errors.map(e => e.message).join(', ');
|
150
|
+
return { isValid: false, error: errorMessages };
|
151
|
+
}
|
152
|
+
return { isValid: true };
|
153
|
+
}
|
154
|
+
function validateEnv(env) {
|
155
|
+
const errors = validator_1.Validator.validate(env, exports.EnvSchema);
|
156
|
+
// No additional validation needed for single token
|
157
|
+
if (errors.length > 0) {
|
158
|
+
const errorMessages = errors.map(e => e.message).join(', ');
|
159
|
+
return { isValid: false, error: errorMessages };
|
61
160
|
}
|
62
161
|
return { isValid: true };
|
63
162
|
}
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"_validators.js","sourceRoot":"","sources":["../../src/cli/_validators.ts"],"names":[],"mappings":";;;
|
1
|
+
{"version":3,"file":"_validators.js","sourceRoot":"","sources":["../../src/cli/_validators.ts"],"names":[],"mappings":"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"}
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"all.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/all.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,wBAAwB,CAAC;AAOjD,wBAAgB,UAAU,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAoDjD"}
|
@@ -0,0 +1,59 @@
|
|
1
|
+
"use strict";
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
3
|
+
exports.allCommand = allCommand;
|
4
|
+
const config_1 = require("./config");
|
5
|
+
const sync_client_1 = require("../../sync/sync-client");
|
6
|
+
const spinner_1 = require("../../core/terminal/spinner");
|
7
|
+
const colors_1 = require("../../core/terminal/colors");
|
8
|
+
const utils_1 = require("../utils");
|
9
|
+
function allCommand(program) {
|
10
|
+
program
|
11
|
+
.option('-d, --dir <dir>', 'Directory to save notes', './notes')
|
12
|
+
.option('-l, --limit <number>', 'Limit number of notes')
|
13
|
+
.option('--list', 'List only without downloading')
|
14
|
+
.option('--group <groupId>', 'Filter by group ID')
|
15
|
+
.action(async ({ options }) => {
|
16
|
+
const spinner = new spinner_1.Spinner('Fetching all notes from Kibela...');
|
17
|
+
try {
|
18
|
+
spinner.start();
|
19
|
+
if (options.list) {
|
20
|
+
// List mode
|
21
|
+
const client = (0, utils_1.getClient)();
|
22
|
+
const limit = options.limit ? parseInt(options.limit, 10) : 20;
|
23
|
+
let notes;
|
24
|
+
if (options.group) {
|
25
|
+
const result = await client.notes.listByGroup(options.group, { first: limit });
|
26
|
+
notes = result.notes.nodes;
|
27
|
+
}
|
28
|
+
else {
|
29
|
+
const result = await client.notes.list({ first: limit });
|
30
|
+
notes = result.nodes;
|
31
|
+
}
|
32
|
+
spinner.stop();
|
33
|
+
console.log(`\nFound ${notes.length} notes:\n`);
|
34
|
+
notes.forEach((note) => {
|
35
|
+
const updatedAt = new Date(note.contentUpdatedAt).toLocaleDateString();
|
36
|
+
console.log(`${colors_1.colors.cyan(note.id)} - ${colors_1.colors.bold(note.title)}`);
|
37
|
+
console.log(` Author: ${note.author?.account || 'Unknown'}, Updated: ${updatedAt}`);
|
38
|
+
console.log(` URL: ${colors_1.colors.blue(note.url)}\n`);
|
39
|
+
});
|
40
|
+
}
|
41
|
+
else {
|
42
|
+
// Download mode
|
43
|
+
const config = await (0, config_1.getConfig)();
|
44
|
+
const client = new sync_client_1.SyncClient({
|
45
|
+
team: config.team,
|
46
|
+
token: config.token,
|
47
|
+
dir: options.dir,
|
48
|
+
});
|
49
|
+
await client.pull();
|
50
|
+
spinner.succeed(`All notes downloaded to ${options.dir}`);
|
51
|
+
}
|
52
|
+
}
|
53
|
+
catch (error) {
|
54
|
+
spinner.fail(`Failed: ${error instanceof Error ? error.message : error}`);
|
55
|
+
process.exit(1);
|
56
|
+
}
|
57
|
+
});
|
58
|
+
}
|
59
|
+
//# sourceMappingURL=all.js.map
|