@gonzui/csheet-cli 1.0.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.ja.md +126 -0
- package/README.md +126 -0
- package/bin/cs.js +2 -0
- package/dist/commands/add.d.ts +3 -0
- package/dist/commands/add.d.ts.map +1 -0
- package/dist/commands/add.js +148 -0
- package/dist/commands/add.js.map +1 -0
- package/dist/commands/edit.d.ts +3 -0
- package/dist/commands/edit.d.ts.map +1 -0
- package/dist/commands/edit.js +58 -0
- package/dist/commands/edit.js.map +1 -0
- package/dist/commands/export.d.ts +3 -0
- package/dist/commands/export.d.ts.map +1 -0
- package/dist/commands/export.js +36 -0
- package/dist/commands/export.js.map +1 -0
- package/dist/commands/list.d.ts +3 -0
- package/dist/commands/list.d.ts.map +1 -0
- package/dist/commands/list.js +42 -0
- package/dist/commands/list.js.map +1 -0
- package/dist/commands/remove.d.ts +3 -0
- package/dist/commands/remove.d.ts.map +1 -0
- package/dist/commands/remove.js +50 -0
- package/dist/commands/remove.js.map +1 -0
- package/dist/commands/search.d.ts +3 -0
- package/dist/commands/search.d.ts.map +1 -0
- package/dist/commands/search.js +54 -0
- package/dist/commands/search.js.map +1 -0
- package/dist/commands/show.d.ts +3 -0
- package/dist/commands/show.d.ts.map +1 -0
- package/dist/commands/show.js +50 -0
- package/dist/commands/show.js.map +1 -0
- package/dist/index.d.ts +2 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +36 -0
- package/dist/index.js.map +1 -0
- package/dist/lib/config.d.ts +6 -0
- package/dist/lib/config.d.ts.map +1 -0
- package/dist/lib/config.js +20 -0
- package/dist/lib/config.js.map +1 -0
- package/dist/lib/markdown.d.ts +6 -0
- package/dist/lib/markdown.d.ts.map +1 -0
- package/dist/lib/markdown.js +154 -0
- package/dist/lib/markdown.js.map +1 -0
- package/dist/lib/search.d.ts +11 -0
- package/dist/lib/search.d.ts.map +1 -0
- package/dist/lib/search.js +30 -0
- package/dist/lib/search.js.map +1 -0
- package/dist/lib/storage.d.ts +15 -0
- package/dist/lib/storage.d.ts.map +1 -0
- package/dist/lib/storage.js +112 -0
- package/dist/lib/storage.js.map +1 -0
- package/dist/types.d.ts +14 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +8 -0
- package/dist/types.js.map +1 -0
- package/package.json +55 -0
package/README.ja.md
ADDED
|
@@ -0,0 +1,126 @@
|
|
|
1
|
+
# cheatsheet-cli (cs)
|
|
2
|
+
|
|
3
|
+
コマンドやツールのチートシートをローカルに保存・管理できるCLIツール。
|
|
4
|
+
|
|
5
|
+
[English README](./README.md)
|
|
6
|
+
|
|
7
|
+
## インストール
|
|
8
|
+
|
|
9
|
+
```bash
|
|
10
|
+
npm install -g cheatsheet-cli
|
|
11
|
+
```
|
|
12
|
+
|
|
13
|
+
## コマンド一覧
|
|
14
|
+
|
|
15
|
+
| コマンド | 説明 |
|
|
16
|
+
|---------|------|
|
|
17
|
+
| `cs add <name>` | チートシートを追加($EDITORでエディタ起動、未設定ならvim) |
|
|
18
|
+
| `cs add <name> --file <path>` | 既存ファイルから追加 |
|
|
19
|
+
| `cs list` | 一覧表示 |
|
|
20
|
+
| `cs show <name>` | 内容を表示(Markdownレンダリング付き) |
|
|
21
|
+
| `cs show <name> --raw` | 生のMarkdownを表示 |
|
|
22
|
+
| `cs search <keyword>` | ファイル名と内容からキーワード検索 |
|
|
23
|
+
| `cs edit <name>` | エディタで編集 |
|
|
24
|
+
| `cs rm <name>` | 削除(確認プロンプトあり) |
|
|
25
|
+
| `cs rm <name> --force` | 確認なしで削除 |
|
|
26
|
+
| `cs export <name>` | カレントディレクトリにエクスポート |
|
|
27
|
+
| `cs export <name> --out <path>` | 指定パスにエクスポート |
|
|
28
|
+
|
|
29
|
+
## 使用例
|
|
30
|
+
|
|
31
|
+
### チートシートの追加
|
|
32
|
+
|
|
33
|
+
```bash
|
|
34
|
+
# エディタで新規作成
|
|
35
|
+
cs add git-commands
|
|
36
|
+
|
|
37
|
+
# 既存ファイルから追加
|
|
38
|
+
cs add docker-tips --file ~/notes/docker.md
|
|
39
|
+
```
|
|
40
|
+
|
|
41
|
+
### 表示
|
|
42
|
+
|
|
43
|
+
```bash
|
|
44
|
+
# 一覧表示
|
|
45
|
+
cs list
|
|
46
|
+
|
|
47
|
+
# 内容表示(Markdownレンダリング)
|
|
48
|
+
cs show git-commands
|
|
49
|
+
|
|
50
|
+
# 生のMarkdownを表示
|
|
51
|
+
cs show git-commands --raw
|
|
52
|
+
```
|
|
53
|
+
|
|
54
|
+
### 検索
|
|
55
|
+
|
|
56
|
+
```bash
|
|
57
|
+
# 名前と内容から検索
|
|
58
|
+
cs search commit
|
|
59
|
+
```
|
|
60
|
+
|
|
61
|
+
### 編集・削除
|
|
62
|
+
|
|
63
|
+
```bash
|
|
64
|
+
# エディタで編集
|
|
65
|
+
cs edit git-commands
|
|
66
|
+
|
|
67
|
+
# 確認付きで削除
|
|
68
|
+
cs rm old-cheatsheet
|
|
69
|
+
|
|
70
|
+
# 確認なしで削除
|
|
71
|
+
cs rm old-cheatsheet --force
|
|
72
|
+
```
|
|
73
|
+
|
|
74
|
+
### エクスポート
|
|
75
|
+
|
|
76
|
+
```bash
|
|
77
|
+
# カレントディレクトリに出力
|
|
78
|
+
cs export git-commands
|
|
79
|
+
|
|
80
|
+
# 指定パスに出力
|
|
81
|
+
cs export git-commands --out ~/backup/
|
|
82
|
+
```
|
|
83
|
+
|
|
84
|
+
## 機能
|
|
85
|
+
|
|
86
|
+
- **Markdownレンダリング**: コードブロックのシンタックスハイライト、テーブルの整形、見出しの色分け
|
|
87
|
+
- **全文検索**: チートシート名と内容からキーワード検索
|
|
88
|
+
- **エディタ連携**: 環境変数 `$EDITOR` を使用(未設定時はvim)
|
|
89
|
+
|
|
90
|
+
## データ保存場所
|
|
91
|
+
|
|
92
|
+
チートシートは `~/.config/cheatsheet-cli/` に保存されます:
|
|
93
|
+
|
|
94
|
+
```
|
|
95
|
+
~/.config/cheatsheet-cli/
|
|
96
|
+
├── data.json # メタデータ
|
|
97
|
+
└── sheets/ # Markdownファイル
|
|
98
|
+
└── {name}.md
|
|
99
|
+
```
|
|
100
|
+
|
|
101
|
+
## 命名規則
|
|
102
|
+
|
|
103
|
+
チートシート名に使用できる文字:
|
|
104
|
+
- 英数字(a-z, A-Z, 0-9)
|
|
105
|
+
- ハイフン(-)
|
|
106
|
+
- アンダースコア(_)
|
|
107
|
+
|
|
108
|
+
## 開発
|
|
109
|
+
|
|
110
|
+
```bash
|
|
111
|
+
# 依存関係のインストール
|
|
112
|
+
npm install
|
|
113
|
+
|
|
114
|
+
# ビルド
|
|
115
|
+
npm run build
|
|
116
|
+
|
|
117
|
+
# テスト実行
|
|
118
|
+
npm test
|
|
119
|
+
|
|
120
|
+
# ウォッチモード
|
|
121
|
+
npm run test:watch
|
|
122
|
+
```
|
|
123
|
+
|
|
124
|
+
## ライセンス
|
|
125
|
+
|
|
126
|
+
MIT
|
package/README.md
ADDED
|
@@ -0,0 +1,126 @@
|
|
|
1
|
+
# cheatsheet-cli (cs)
|
|
2
|
+
|
|
3
|
+
A CLI tool for managing command and tool cheatsheets locally.
|
|
4
|
+
|
|
5
|
+
[日本語版 README](./README.ja.md)
|
|
6
|
+
|
|
7
|
+
## Installation
|
|
8
|
+
|
|
9
|
+
```bash
|
|
10
|
+
npm install -g cheatsheet-cli
|
|
11
|
+
```
|
|
12
|
+
|
|
13
|
+
## Commands
|
|
14
|
+
|
|
15
|
+
| Command | Description |
|
|
16
|
+
|---------|-------------|
|
|
17
|
+
| `cs add <name>` | Add a cheatsheet (opens $EDITOR, defaults to vim) |
|
|
18
|
+
| `cs add <name> --file <path>` | Add from an existing file |
|
|
19
|
+
| `cs list` | List all cheatsheets |
|
|
20
|
+
| `cs show <name>` | Display cheatsheet content (with Markdown rendering) |
|
|
21
|
+
| `cs show <name> --raw` | Display raw Markdown |
|
|
22
|
+
| `cs search <keyword>` | Search by filename and content |
|
|
23
|
+
| `cs edit <name>` | Edit a cheatsheet |
|
|
24
|
+
| `cs rm <name>` | Delete a cheatsheet (with confirmation) |
|
|
25
|
+
| `cs rm <name> --force` | Delete without confirmation |
|
|
26
|
+
| `cs export <name>` | Export to current directory |
|
|
27
|
+
| `cs export <name> --out <path>` | Export to specified path |
|
|
28
|
+
|
|
29
|
+
## Usage Examples
|
|
30
|
+
|
|
31
|
+
### Add a new cheatsheet
|
|
32
|
+
|
|
33
|
+
```bash
|
|
34
|
+
# Open editor to create new cheatsheet
|
|
35
|
+
cs add git-commands
|
|
36
|
+
|
|
37
|
+
# Add from existing file
|
|
38
|
+
cs add docker-tips --file ~/notes/docker.md
|
|
39
|
+
```
|
|
40
|
+
|
|
41
|
+
### View cheatsheets
|
|
42
|
+
|
|
43
|
+
```bash
|
|
44
|
+
# List all cheatsheets
|
|
45
|
+
cs list
|
|
46
|
+
|
|
47
|
+
# Show with Markdown rendering
|
|
48
|
+
cs show git-commands
|
|
49
|
+
|
|
50
|
+
# Show raw Markdown
|
|
51
|
+
cs show git-commands --raw
|
|
52
|
+
```
|
|
53
|
+
|
|
54
|
+
### Search
|
|
55
|
+
|
|
56
|
+
```bash
|
|
57
|
+
# Search by name or content
|
|
58
|
+
cs search commit
|
|
59
|
+
```
|
|
60
|
+
|
|
61
|
+
### Edit and delete
|
|
62
|
+
|
|
63
|
+
```bash
|
|
64
|
+
# Edit in $EDITOR
|
|
65
|
+
cs edit git-commands
|
|
66
|
+
|
|
67
|
+
# Delete with confirmation
|
|
68
|
+
cs rm old-cheatsheet
|
|
69
|
+
|
|
70
|
+
# Delete without confirmation
|
|
71
|
+
cs rm old-cheatsheet --force
|
|
72
|
+
```
|
|
73
|
+
|
|
74
|
+
### Export
|
|
75
|
+
|
|
76
|
+
```bash
|
|
77
|
+
# Export to current directory
|
|
78
|
+
cs export git-commands
|
|
79
|
+
|
|
80
|
+
# Export to specific path
|
|
81
|
+
cs export git-commands --out ~/backup/
|
|
82
|
+
```
|
|
83
|
+
|
|
84
|
+
## Features
|
|
85
|
+
|
|
86
|
+
- **Markdown Rendering**: Syntax highlighting for code blocks, formatted tables, colored headings
|
|
87
|
+
- **Full-text Search**: Search by cheatsheet name and content
|
|
88
|
+
- **Editor Integration**: Uses `$EDITOR` environment variable (defaults to vim)
|
|
89
|
+
|
|
90
|
+
## Data Storage
|
|
91
|
+
|
|
92
|
+
Cheatsheets are stored in `~/.config/cheatsheet-cli/`:
|
|
93
|
+
|
|
94
|
+
```
|
|
95
|
+
~/.config/cheatsheet-cli/
|
|
96
|
+
├── data.json # Metadata
|
|
97
|
+
└── sheets/ # Markdown files
|
|
98
|
+
└── {name}.md
|
|
99
|
+
```
|
|
100
|
+
|
|
101
|
+
## Naming Rules
|
|
102
|
+
|
|
103
|
+
Cheatsheet names can only contain:
|
|
104
|
+
- Alphanumeric characters (a-z, A-Z, 0-9)
|
|
105
|
+
- Hyphens (-)
|
|
106
|
+
- Underscores (_)
|
|
107
|
+
|
|
108
|
+
## Development
|
|
109
|
+
|
|
110
|
+
```bash
|
|
111
|
+
# Install dependencies
|
|
112
|
+
npm install
|
|
113
|
+
|
|
114
|
+
# Build
|
|
115
|
+
npm run build
|
|
116
|
+
|
|
117
|
+
# Run tests
|
|
118
|
+
npm test
|
|
119
|
+
|
|
120
|
+
# Watch mode
|
|
121
|
+
npm run test:watch
|
|
122
|
+
```
|
|
123
|
+
|
|
124
|
+
## License
|
|
125
|
+
|
|
126
|
+
MIT
|
package/bin/cs.js
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"add.d.ts","sourceRoot":"","sources":["../../src/commands/add.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAU,MAAM,WAAW,CAAC;AAwD5C,eAAO,MAAM,UAAU,SAuHnB,CAAC"}
|
|
@@ -0,0 +1,148 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.addCommand = void 0;
|
|
7
|
+
const commander_1 = require("commander");
|
|
8
|
+
const chalk_1 = __importDefault(require("chalk"));
|
|
9
|
+
const path_1 = __importDefault(require("path"));
|
|
10
|
+
const fs_extra_1 = __importDefault(require("fs-extra"));
|
|
11
|
+
const child_process_1 = require("child_process");
|
|
12
|
+
const readline_1 = __importDefault(require("readline"));
|
|
13
|
+
const storage_1 = require("../lib/storage");
|
|
14
|
+
const config_1 = require("../lib/config");
|
|
15
|
+
// 上書き確認プロンプト
|
|
16
|
+
const confirmOverwrite = async (name) => {
|
|
17
|
+
const rl = readline_1.default.createInterface({
|
|
18
|
+
input: process.stdin,
|
|
19
|
+
output: process.stdout,
|
|
20
|
+
});
|
|
21
|
+
return new Promise((resolve) => {
|
|
22
|
+
rl.question(chalk_1.default.yellow(`シート "${name}" は既に存在します。上書きしますか? (y/N): `), (answer) => {
|
|
23
|
+
rl.close();
|
|
24
|
+
resolve(answer.toLowerCase() === 'y');
|
|
25
|
+
});
|
|
26
|
+
});
|
|
27
|
+
};
|
|
28
|
+
// エディタを起動してテキストを編集
|
|
29
|
+
const openEditor = (filePath) => {
|
|
30
|
+
return new Promise((resolve, reject) => {
|
|
31
|
+
const editor = (0, config_1.getEditor)();
|
|
32
|
+
const child = (0, child_process_1.spawn)(editor, [filePath], {
|
|
33
|
+
stdio: 'inherit',
|
|
34
|
+
});
|
|
35
|
+
child.on('exit', (code) => {
|
|
36
|
+
if (code === 0) {
|
|
37
|
+
resolve();
|
|
38
|
+
}
|
|
39
|
+
else {
|
|
40
|
+
reject(new Error(`エディタが終了コード ${code} で終了しました`));
|
|
41
|
+
}
|
|
42
|
+
});
|
|
43
|
+
child.on('error', (err) => {
|
|
44
|
+
reject(err);
|
|
45
|
+
});
|
|
46
|
+
});
|
|
47
|
+
};
|
|
48
|
+
exports.addCommand = new commander_1.Command('add')
|
|
49
|
+
.description('チートシートを追加')
|
|
50
|
+
.argument('<name>', 'チートシートの名前')
|
|
51
|
+
.option('-f, --file <path>', '既存ファイルから追加')
|
|
52
|
+
.addOption(new commander_1.Option('-i, --image <path>', '画像ファイルを追加').hideHelp())
|
|
53
|
+
.action(async (name, options) => {
|
|
54
|
+
// 名前のバリデーション
|
|
55
|
+
if (!(0, storage_1.validateName)(name)) {
|
|
56
|
+
console.error(chalk_1.default.red('エラー: 名前には英数字、ハイフン、アンダースコアのみ使用できます'));
|
|
57
|
+
process.exit(1);
|
|
58
|
+
}
|
|
59
|
+
// 既存シートのチェック
|
|
60
|
+
const existingSheet = await (0, storage_1.getSheet)(name);
|
|
61
|
+
if (existingSheet) {
|
|
62
|
+
const shouldOverwrite = await confirmOverwrite(name);
|
|
63
|
+
if (!shouldOverwrite) {
|
|
64
|
+
console.log(chalk_1.default.yellow('キャンセルしました'));
|
|
65
|
+
return;
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
const now = new Date().toISOString();
|
|
69
|
+
try {
|
|
70
|
+
if (options.image) {
|
|
71
|
+
// 画像ファイルから追加
|
|
72
|
+
const imagePath = path_1.default.resolve(options.image);
|
|
73
|
+
if (!(await fs_extra_1.default.pathExists(imagePath))) {
|
|
74
|
+
console.error(chalk_1.default.red(`エラー: ファイルが見つかりません: ${imagePath}`));
|
|
75
|
+
process.exit(1);
|
|
76
|
+
}
|
|
77
|
+
if (!(0, storage_1.isValidImageExtension)(imagePath)) {
|
|
78
|
+
console.error(chalk_1.default.red('エラー: サポートされていない画像形式です (png, jpg, jpeg, gif, webp, svg)'));
|
|
79
|
+
process.exit(1);
|
|
80
|
+
}
|
|
81
|
+
const ext = path_1.default.extname(imagePath);
|
|
82
|
+
const filename = `${name}${ext}`;
|
|
83
|
+
const destPath = path_1.default.join(config_1.IMAGES_DIR, filename);
|
|
84
|
+
await (0, storage_1.copyFile)(imagePath, destPath);
|
|
85
|
+
const sheet = {
|
|
86
|
+
name,
|
|
87
|
+
type: 'image',
|
|
88
|
+
filename,
|
|
89
|
+
createdAt: existingSheet?.createdAt || now,
|
|
90
|
+
updatedAt: now,
|
|
91
|
+
};
|
|
92
|
+
await (0, storage_1.addOrUpdateSheet)(sheet);
|
|
93
|
+
console.log(chalk_1.default.green(`画像シート "${name}" を追加しました`));
|
|
94
|
+
}
|
|
95
|
+
else if (options.file) {
|
|
96
|
+
// 既存テキストファイルから追加
|
|
97
|
+
const filePath = path_1.default.resolve(options.file);
|
|
98
|
+
if (!(await fs_extra_1.default.pathExists(filePath))) {
|
|
99
|
+
console.error(chalk_1.default.red(`エラー: ファイルが見つかりません: ${filePath}`));
|
|
100
|
+
process.exit(1);
|
|
101
|
+
}
|
|
102
|
+
const content = await fs_extra_1.default.readFile(filePath, 'utf-8');
|
|
103
|
+
const filename = `${name}.md`;
|
|
104
|
+
const destPath = path_1.default.join(config_1.SHEETS_DIR, filename);
|
|
105
|
+
await fs_extra_1.default.writeFile(destPath, content, 'utf-8');
|
|
106
|
+
const sheet = {
|
|
107
|
+
name,
|
|
108
|
+
type: 'text',
|
|
109
|
+
filename,
|
|
110
|
+
createdAt: existingSheet?.createdAt || now,
|
|
111
|
+
updatedAt: now,
|
|
112
|
+
};
|
|
113
|
+
await (0, storage_1.addOrUpdateSheet)(sheet);
|
|
114
|
+
console.log(chalk_1.default.green(`テキストシート "${name}" を追加しました`));
|
|
115
|
+
}
|
|
116
|
+
else {
|
|
117
|
+
// エディタで新規作成
|
|
118
|
+
const filename = `${name}.md`;
|
|
119
|
+
const filePath = path_1.default.join(config_1.SHEETS_DIR, filename);
|
|
120
|
+
// 既存のファイルがない場合は空ファイルを作成
|
|
121
|
+
if (!(await fs_extra_1.default.pathExists(filePath))) {
|
|
122
|
+
await fs_extra_1.default.writeFile(filePath, '', 'utf-8');
|
|
123
|
+
}
|
|
124
|
+
await openEditor(filePath);
|
|
125
|
+
// エディタ終了後、ファイルが空でないかチェック
|
|
126
|
+
const content = await fs_extra_1.default.readFile(filePath, 'utf-8');
|
|
127
|
+
if (content.trim() === '') {
|
|
128
|
+
await fs_extra_1.default.remove(filePath);
|
|
129
|
+
console.log(chalk_1.default.yellow('内容が空のためキャンセルしました'));
|
|
130
|
+
return;
|
|
131
|
+
}
|
|
132
|
+
const sheet = {
|
|
133
|
+
name,
|
|
134
|
+
type: 'text',
|
|
135
|
+
filename,
|
|
136
|
+
createdAt: existingSheet?.createdAt || now,
|
|
137
|
+
updatedAt: now,
|
|
138
|
+
};
|
|
139
|
+
await (0, storage_1.addOrUpdateSheet)(sheet);
|
|
140
|
+
console.log(chalk_1.default.green(`テキストシート "${name}" を追加しました`));
|
|
141
|
+
}
|
|
142
|
+
}
|
|
143
|
+
catch (error) {
|
|
144
|
+
console.error(chalk_1.default.red(`エラー: ${error.message}`));
|
|
145
|
+
process.exit(1);
|
|
146
|
+
}
|
|
147
|
+
});
|
|
148
|
+
//# sourceMappingURL=add.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"add.js","sourceRoot":"","sources":["../../src/commands/add.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"edit.d.ts","sourceRoot":"","sources":["../../src/commands/edit.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AA4BpC,eAAO,MAAM,WAAW,SA6BpB,CAAC"}
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.editCommand = void 0;
|
|
7
|
+
const commander_1 = require("commander");
|
|
8
|
+
const chalk_1 = __importDefault(require("chalk"));
|
|
9
|
+
const child_process_1 = require("child_process");
|
|
10
|
+
const storage_1 = require("../lib/storage");
|
|
11
|
+
const config_1 = require("../lib/config");
|
|
12
|
+
// エディタを起動してテキストを編集
|
|
13
|
+
const openEditor = (filePath) => {
|
|
14
|
+
return new Promise((resolve, reject) => {
|
|
15
|
+
const editor = (0, config_1.getEditor)();
|
|
16
|
+
const child = (0, child_process_1.spawn)(editor, [filePath], {
|
|
17
|
+
stdio: 'inherit',
|
|
18
|
+
});
|
|
19
|
+
child.on('exit', (code) => {
|
|
20
|
+
if (code === 0) {
|
|
21
|
+
resolve();
|
|
22
|
+
}
|
|
23
|
+
else {
|
|
24
|
+
reject(new Error(`エディタが終了コード ${code} で終了しました`));
|
|
25
|
+
}
|
|
26
|
+
});
|
|
27
|
+
child.on('error', (err) => {
|
|
28
|
+
reject(err);
|
|
29
|
+
});
|
|
30
|
+
});
|
|
31
|
+
};
|
|
32
|
+
exports.editCommand = new commander_1.Command('edit')
|
|
33
|
+
.description('チートシートを編集(テキストのみ)')
|
|
34
|
+
.argument('<name>', 'チートシートの名前')
|
|
35
|
+
.action(async (name) => {
|
|
36
|
+
try {
|
|
37
|
+
const sheet = await (0, storage_1.getSheet)(name);
|
|
38
|
+
if (!sheet) {
|
|
39
|
+
console.error(chalk_1.default.red(`エラー: シート "${name}" が見つかりません`));
|
|
40
|
+
process.exit(1);
|
|
41
|
+
}
|
|
42
|
+
if (sheet.type !== 'text') {
|
|
43
|
+
console.error(chalk_1.default.red('エラー: 画像シートは編集できません'));
|
|
44
|
+
process.exit(1);
|
|
45
|
+
}
|
|
46
|
+
const filePath = (0, storage_1.getSheetFilePath)(sheet);
|
|
47
|
+
await openEditor(filePath);
|
|
48
|
+
// 更新日時を更新
|
|
49
|
+
sheet.updatedAt = new Date().toISOString();
|
|
50
|
+
await (0, storage_1.addOrUpdateSheet)(sheet);
|
|
51
|
+
console.log(chalk_1.default.green(`シート "${name}" を更新しました`));
|
|
52
|
+
}
|
|
53
|
+
catch (error) {
|
|
54
|
+
console.error(chalk_1.default.red(`エラー: ${error.message}`));
|
|
55
|
+
process.exit(1);
|
|
56
|
+
}
|
|
57
|
+
});
|
|
58
|
+
//# sourceMappingURL=edit.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"edit.js","sourceRoot":"","sources":["../../src/commands/edit.ts"],"names":[],"mappings":";;;;;;AAAA,yCAAoC;AACpC,kDAA0B;AAC1B,iDAAsC;AACtC,4CAA8E;AAC9E,0CAA0C;AAE1C,mBAAmB;AACnB,MAAM,UAAU,GAAG,CAAC,QAAgB,EAAiB,EAAE;IACrD,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;QACrC,MAAM,MAAM,GAAG,IAAA,kBAAS,GAAE,CAAC;QAC3B,MAAM,KAAK,GAAG,IAAA,qBAAK,EAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,EAAE;YACtC,KAAK,EAAE,SAAS;SACjB,CAAC,CAAC;QAEH,KAAK,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE,EAAE;YACxB,IAAI,IAAI,KAAK,CAAC,EAAE,CAAC;gBACf,OAAO,EAAE,CAAC;YACZ,CAAC;iBAAM,CAAC;gBACN,MAAM,CAAC,IAAI,KAAK,CAAC,cAAc,IAAI,UAAU,CAAC,CAAC,CAAC;YAClD,CAAC;QACH,CAAC,CAAC,CAAC;QAEH,KAAK,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,GAAG,EAAE,EAAE;YACxB,MAAM,CAAC,GAAG,CAAC,CAAC;QACd,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC,CAAC;AAEW,QAAA,WAAW,GAAG,IAAI,mBAAO,CAAC,MAAM,CAAC;KAC3C,WAAW,CAAC,mBAAmB,CAAC;KAChC,QAAQ,CAAC,QAAQ,EAAE,WAAW,CAAC;KAC/B,MAAM,CAAC,KAAK,EAAE,IAAY,EAAE,EAAE;IAC7B,IAAI,CAAC;QACH,MAAM,KAAK,GAAG,MAAM,IAAA,kBAAQ,EAAC,IAAI,CAAC,CAAC;QAEnC,IAAI,CAAC,KAAK,EAAE,CAAC;YACX,OAAO,CAAC,KAAK,CAAC,eAAK,CAAC,GAAG,CAAC,aAAa,IAAI,YAAY,CAAC,CAAC,CAAC;YACxD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;QAED,IAAI,KAAK,CAAC,IAAI,KAAK,MAAM,EAAE,CAAC;YAC1B,OAAO,CAAC,KAAK,CAAC,eAAK,CAAC,GAAG,CAAC,oBAAoB,CAAC,CAAC,CAAC;YAC/C,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;QAED,MAAM,QAAQ,GAAG,IAAA,0BAAgB,EAAC,KAAK,CAAC,CAAC;QACzC,MAAM,UAAU,CAAC,QAAQ,CAAC,CAAC;QAE3B,UAAU;QACV,KAAK,CAAC,SAAS,GAAG,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;QAC3C,MAAM,IAAA,0BAAgB,EAAC,KAAK,CAAC,CAAC;QAE9B,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,KAAK,CAAC,QAAQ,IAAI,WAAW,CAAC,CAAC,CAAC;IACpD,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,CAAC,KAAK,CAAC,eAAK,CAAC,GAAG,CAAC,QAAS,KAAe,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;QAC7D,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;AACH,CAAC,CAAC,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"export.d.ts","sourceRoot":"","sources":["../../src/commands/export.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAMpC,eAAO,MAAM,aAAa,SA0BtB,CAAC"}
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.exportCommand = void 0;
|
|
7
|
+
const commander_1 = require("commander");
|
|
8
|
+
const chalk_1 = __importDefault(require("chalk"));
|
|
9
|
+
const path_1 = __importDefault(require("path"));
|
|
10
|
+
const fs_extra_1 = __importDefault(require("fs-extra"));
|
|
11
|
+
const storage_1 = require("../lib/storage");
|
|
12
|
+
exports.exportCommand = new commander_1.Command('export')
|
|
13
|
+
.description('チートシートをエクスポート')
|
|
14
|
+
.argument('<name>', 'チートシートの名前')
|
|
15
|
+
.option('-o, --out <path>', '出力先パス')
|
|
16
|
+
.action(async (name, options) => {
|
|
17
|
+
try {
|
|
18
|
+
const sheet = await (0, storage_1.getSheet)(name);
|
|
19
|
+
if (!sheet) {
|
|
20
|
+
console.error(chalk_1.default.red(`エラー: シート "${name}" が見つかりません`));
|
|
21
|
+
process.exit(1);
|
|
22
|
+
}
|
|
23
|
+
const srcPath = (0, storage_1.getSheetFilePath)(sheet);
|
|
24
|
+
const destDir = options.out ? path_1.default.resolve(options.out) : process.cwd();
|
|
25
|
+
const destPath = path_1.default.join(destDir, sheet.filename);
|
|
26
|
+
// 出力先ディレクトリが存在することを確認
|
|
27
|
+
await fs_extra_1.default.ensureDir(destDir);
|
|
28
|
+
await fs_extra_1.default.copy(srcPath, destPath);
|
|
29
|
+
console.log(chalk_1.default.green(`エクスポートしました: ${destPath}`));
|
|
30
|
+
}
|
|
31
|
+
catch (error) {
|
|
32
|
+
console.error(chalk_1.default.red(`エラー: ${error.message}`));
|
|
33
|
+
process.exit(1);
|
|
34
|
+
}
|
|
35
|
+
});
|
|
36
|
+
//# sourceMappingURL=export.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"export.js","sourceRoot":"","sources":["../../src/commands/export.ts"],"names":[],"mappings":";;;;;;AAAA,yCAAoC;AACpC,kDAA0B;AAC1B,gDAAwB;AACxB,wDAA0B;AAC1B,4CAA4D;AAE/C,QAAA,aAAa,GAAG,IAAI,mBAAO,CAAC,QAAQ,CAAC;KAC/C,WAAW,CAAC,eAAe,CAAC;KAC5B,QAAQ,CAAC,QAAQ,EAAE,WAAW,CAAC;KAC/B,MAAM,CAAC,kBAAkB,EAAE,OAAO,CAAC;KACnC,MAAM,CAAC,KAAK,EAAE,IAAY,EAAE,OAAyB,EAAE,EAAE;IACxD,IAAI,CAAC;QACH,MAAM,KAAK,GAAG,MAAM,IAAA,kBAAQ,EAAC,IAAI,CAAC,CAAC;QAEnC,IAAI,CAAC,KAAK,EAAE,CAAC;YACX,OAAO,CAAC,KAAK,CAAC,eAAK,CAAC,GAAG,CAAC,aAAa,IAAI,YAAY,CAAC,CAAC,CAAC;YACxD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;QAED,MAAM,OAAO,GAAG,IAAA,0BAAgB,EAAC,KAAK,CAAC,CAAC;QACxC,MAAM,OAAO,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,cAAI,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC;QACxE,MAAM,QAAQ,GAAG,cAAI,CAAC,IAAI,CAAC,OAAO,EAAE,KAAK,CAAC,QAAQ,CAAC,CAAC;QAEpD,sBAAsB;QACtB,MAAM,kBAAE,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC;QAE5B,MAAM,kBAAE,CAAC,IAAI,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;QACjC,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,KAAK,CAAC,eAAe,QAAQ,EAAE,CAAC,CAAC,CAAC;IACtD,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,CAAC,KAAK,CAAC,eAAK,CAAC,GAAG,CAAC,QAAS,KAAe,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;QAC7D,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;AACH,CAAC,CAAC,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"list.d.ts","sourceRoot":"","sources":["../../src/commands/list.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAKpC,eAAO,MAAM,WAAW,SAkCpB,CAAC"}
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.listCommand = void 0;
|
|
7
|
+
const commander_1 = require("commander");
|
|
8
|
+
const chalk_1 = __importDefault(require("chalk"));
|
|
9
|
+
const cli_table3_1 = __importDefault(require("cli-table3"));
|
|
10
|
+
const storage_1 = require("../lib/storage");
|
|
11
|
+
exports.listCommand = new commander_1.Command('list')
|
|
12
|
+
.description('チートシート一覧を表示')
|
|
13
|
+
.action(async () => {
|
|
14
|
+
try {
|
|
15
|
+
const sheets = await (0, storage_1.getAllSheets)();
|
|
16
|
+
if (sheets.length === 0) {
|
|
17
|
+
console.log(chalk_1.default.yellow('チートシートがありません'));
|
|
18
|
+
return;
|
|
19
|
+
}
|
|
20
|
+
// 更新日時でソート(新しい順)
|
|
21
|
+
sheets.sort((a, b) => new Date(b.updatedAt).getTime() - new Date(a.updatedAt).getTime());
|
|
22
|
+
const table = new cli_table3_1.default({
|
|
23
|
+
head: [
|
|
24
|
+
chalk_1.default.cyan('名前'),
|
|
25
|
+
chalk_1.default.cyan('種類'),
|
|
26
|
+
chalk_1.default.cyan('更新日時'),
|
|
27
|
+
],
|
|
28
|
+
colWidths: [30, 10, 25],
|
|
29
|
+
});
|
|
30
|
+
for (const sheet of sheets) {
|
|
31
|
+
const typeLabel = sheet.type === 'text' ? 'テキスト' : '画像';
|
|
32
|
+
const updatedAt = new Date(sheet.updatedAt).toLocaleString('ja-JP');
|
|
33
|
+
table.push([sheet.name, typeLabel, updatedAt]);
|
|
34
|
+
}
|
|
35
|
+
console.log(table.toString());
|
|
36
|
+
}
|
|
37
|
+
catch (error) {
|
|
38
|
+
console.error(chalk_1.default.red(`エラー: ${error.message}`));
|
|
39
|
+
process.exit(1);
|
|
40
|
+
}
|
|
41
|
+
});
|
|
42
|
+
//# sourceMappingURL=list.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"list.js","sourceRoot":"","sources":["../../src/commands/list.ts"],"names":[],"mappings":";;;;;;AAAA,yCAAoC;AACpC,kDAA0B;AAC1B,4DAA+B;AAC/B,4CAA8C;AAEjC,QAAA,WAAW,GAAG,IAAI,mBAAO,CAAC,MAAM,CAAC;KAC3C,WAAW,CAAC,aAAa,CAAC;KAC1B,MAAM,CAAC,KAAK,IAAI,EAAE;IACjB,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,MAAM,IAAA,sBAAY,GAAE,CAAC;QAEpC,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACxB,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,MAAM,CAAC,cAAc,CAAC,CAAC,CAAC;YAC1C,OAAO;QACT,CAAC;QAED,iBAAiB;QACjB,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,OAAO,EAAE,GAAG,IAAI,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC;QAEzF,MAAM,KAAK,GAAG,IAAI,oBAAK,CAAC;YACtB,IAAI,EAAE;gBACJ,eAAK,CAAC,IAAI,CAAC,IAAI,CAAC;gBAChB,eAAK,CAAC,IAAI,CAAC,IAAI,CAAC;gBAChB,eAAK,CAAC,IAAI,CAAC,MAAM,CAAC;aACnB;YACD,SAAS,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC;SACxB,CAAC,CAAC;QAEH,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;YAC3B,MAAM,SAAS,GAAG,KAAK,CAAC,IAAI,KAAK,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC;YACxD,MAAM,SAAS,GAAG,IAAI,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC;YACpE,KAAK,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,IAAI,EAAE,SAAS,EAAE,SAAS,CAAC,CAAC,CAAC;QACjD,CAAC;QAED,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC,CAAC;IAChC,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,CAAC,KAAK,CAAC,eAAK,CAAC,GAAG,CAAC,QAAS,KAAe,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;QAC7D,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;AACH,CAAC,CAAC,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"remove.d.ts","sourceRoot":"","sources":["../../src/commands/remove.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAuBpC,eAAO,MAAM,aAAa,SA2BtB,CAAC"}
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.removeCommand = void 0;
|
|
7
|
+
const commander_1 = require("commander");
|
|
8
|
+
const chalk_1 = __importDefault(require("chalk"));
|
|
9
|
+
const readline_1 = __importDefault(require("readline"));
|
|
10
|
+
const storage_1 = require("../lib/storage");
|
|
11
|
+
// 削除確認プロンプト
|
|
12
|
+
const confirmDelete = async (name) => {
|
|
13
|
+
const rl = readline_1.default.createInterface({
|
|
14
|
+
input: process.stdin,
|
|
15
|
+
output: process.stdout,
|
|
16
|
+
});
|
|
17
|
+
return new Promise((resolve) => {
|
|
18
|
+
rl.question(chalk_1.default.yellow(`シート "${name}" を削除しますか? (y/N): `), (answer) => {
|
|
19
|
+
rl.close();
|
|
20
|
+
resolve(answer.toLowerCase() === 'y');
|
|
21
|
+
});
|
|
22
|
+
});
|
|
23
|
+
};
|
|
24
|
+
exports.removeCommand = new commander_1.Command('rm')
|
|
25
|
+
.description('チートシートを削除')
|
|
26
|
+
.argument('<name>', 'チートシートの名前')
|
|
27
|
+
.option('-f, --force', '確認をスキップ')
|
|
28
|
+
.action(async (name, options) => {
|
|
29
|
+
try {
|
|
30
|
+
const sheet = await (0, storage_1.getSheet)(name);
|
|
31
|
+
if (!sheet) {
|
|
32
|
+
console.error(chalk_1.default.red(`エラー: シート "${name}" が見つかりません`));
|
|
33
|
+
process.exit(1);
|
|
34
|
+
}
|
|
35
|
+
if (!options.force) {
|
|
36
|
+
const shouldDelete = await confirmDelete(name);
|
|
37
|
+
if (!shouldDelete) {
|
|
38
|
+
console.log(chalk_1.default.yellow('キャンセルしました'));
|
|
39
|
+
return;
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
await (0, storage_1.removeSheet)(name);
|
|
43
|
+
console.log(chalk_1.default.green(`シート "${name}" を削除しました`));
|
|
44
|
+
}
|
|
45
|
+
catch (error) {
|
|
46
|
+
console.error(chalk_1.default.red(`エラー: ${error.message}`));
|
|
47
|
+
process.exit(1);
|
|
48
|
+
}
|
|
49
|
+
});
|
|
50
|
+
//# sourceMappingURL=remove.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"remove.js","sourceRoot":"","sources":["../../src/commands/remove.ts"],"names":[],"mappings":";;;;;;AAAA,yCAAoC;AACpC,kDAA0B;AAC1B,wDAAgC;AAChC,4CAAuD;AAEvD,YAAY;AACZ,MAAM,aAAa,GAAG,KAAK,EAAE,IAAY,EAAoB,EAAE;IAC7D,MAAM,EAAE,GAAG,kBAAQ,CAAC,eAAe,CAAC;QAClC,KAAK,EAAE,OAAO,CAAC,KAAK;QACpB,MAAM,EAAE,OAAO,CAAC,MAAM;KACvB,CAAC,CAAC;IAEH,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE;QAC7B,EAAE,CAAC,QAAQ,CACT,eAAK,CAAC,MAAM,CAAC,QAAQ,IAAI,oBAAoB,CAAC,EAC9C,CAAC,MAAM,EAAE,EAAE;YACT,EAAE,CAAC,KAAK,EAAE,CAAC;YACX,OAAO,CAAC,MAAM,CAAC,WAAW,EAAE,KAAK,GAAG,CAAC,CAAC;QACxC,CAAC,CACF,CAAC;IACJ,CAAC,CAAC,CAAC;AACL,CAAC,CAAC;AAEW,QAAA,aAAa,GAAG,IAAI,mBAAO,CAAC,IAAI,CAAC;KAC3C,WAAW,CAAC,WAAW,CAAC;KACxB,QAAQ,CAAC,QAAQ,EAAE,WAAW,CAAC;KAC/B,MAAM,CAAC,aAAa,EAAE,SAAS,CAAC;KAChC,MAAM,CAAC,KAAK,EAAE,IAAY,EAAE,OAA4B,EAAE,EAAE;IAC3D,IAAI,CAAC;QACH,MAAM,KAAK,GAAG,MAAM,IAAA,kBAAQ,EAAC,IAAI,CAAC,CAAC;QAEnC,IAAI,CAAC,KAAK,EAAE,CAAC;YACX,OAAO,CAAC,KAAK,CAAC,eAAK,CAAC,GAAG,CAAC,aAAa,IAAI,YAAY,CAAC,CAAC,CAAC;YACxD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;QAED,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC;YACnB,MAAM,YAAY,GAAG,MAAM,aAAa,CAAC,IAAI,CAAC,CAAC;YAC/C,IAAI,CAAC,YAAY,EAAE,CAAC;gBAClB,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC,CAAC;gBACvC,OAAO;YACT,CAAC;QACH,CAAC;QAED,MAAM,IAAA,qBAAW,EAAC,IAAI,CAAC,CAAC;QACxB,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,KAAK,CAAC,QAAQ,IAAI,WAAW,CAAC,CAAC,CAAC;IACpD,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,CAAC,KAAK,CAAC,eAAK,CAAC,GAAG,CAAC,QAAS,KAAe,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;QAC7D,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;AACH,CAAC,CAAC,CAAC"}
|