@einja/dev-cli 0.1.23 → 0.1.24
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 +54 -30
- package/dist/cli.js +3 -0
- package/dist/cli.js.map +1 -1
- package/dist/commands/init.d.ts.map +1 -1
- package/dist/commands/init.js +10 -46
- package/dist/commands/init.js.map +1 -1
- package/dist/commands/sync.d.ts.map +1 -1
- package/dist/commands/sync.js +21 -0
- package/dist/commands/sync.js.map +1 -1
- package/dist/commands/task-loop/index.js +15 -15
- package/dist/commands/task-loop/index.js.map +1 -1
- package/dist/commands/task-loop/lib/types.d.ts +2 -2
- package/dist/commands/task-loop/lib/types.d.ts.map +1 -1
- package/dist/commands/task-loop/lib/vibe-kanban-client.d.ts +15 -11
- package/dist/commands/task-loop/lib/vibe-kanban-client.d.ts.map +1 -1
- package/dist/commands/task-loop/lib/vibe-kanban-client.js +42 -29
- package/dist/commands/task-loop/lib/vibe-kanban-client.js.map +1 -1
- package/dist/lib/dependency-checker.d.ts +31 -0
- package/dist/lib/dependency-checker.d.ts.map +1 -0
- package/dist/lib/dependency-checker.js +259 -0
- package/dist/lib/dependency-checker.js.map +1 -0
- package/dist/lib/package-manager.d.ts +15 -0
- package/dist/lib/package-manager.d.ts.map +1 -0
- package/dist/lib/package-manager.js +71 -0
- package/dist/lib/package-manager.js.map +1 -0
- package/dist/types/index.d.ts +20 -0
- package/dist/types/index.d.ts.map +1 -1
- package/package.json +1 -1
- package/presets/default/.claude/agents/einja/design-engineer.md +252 -434
- package/presets/default/.claude/agents/einja/frontend-architect.md +11 -11
- package/presets/default/.claude/agents/einja/frontend-coder.md +33 -21
- package/presets/default/.claude/skills/einja-coding-standards/SKILL.md +27 -16
- package/presets/default/.claude/skills/einja-component-design/SKILL.md +4 -4
- package/presets/default/.claude/skills/einja-component-design/reference/styling-guide.md +53 -131
- package/presets/default/preset.yaml +27 -0
- package/scaffolds/cli/preset.yaml +27 -0
- package/scaffolds/instructions/deployment-setup.md +40 -41
- package/scaffolds/steering/infrastructure/deployment.md +459 -66
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"vibe-kanban-client.d.ts","sourceRoot":"","sources":["../../../../src/commands/task-loop/lib/vibe-kanban-client.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAQH,OAAO,KAAK,EACV,iBAAiB,EACjB,iBAAiB,EACjB,cAAc,EACd,cAAc,EACf,MAAM,YAAY,CAAC;AAEpB;;GAEG;AACH,qBAAa,gBAAgB;IAC3B,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,SAAS,CAAqC;IACtD,OAAO,CAAC,SAAS,CAAS;;IAS1B;;OAEG;IACG,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;IA0B9B;;;;OAIG;IACH,OAAO,CAAC,YAAY;IAqBpB;;OAEG;IACH,OAAO,CAAC,eAAe;IAavB;;OAEG;IACH,OAAO,CAAC,kBAAkB;IAa1B;;OAEG;IACG,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;IAajC;;OAEG;IACG,YAAY,IAAI,OAAO,CAAC,iBAAiB,EAAE,CAAC;IAclD;;OAEG;IACG,
|
|
1
|
+
{"version":3,"file":"vibe-kanban-client.d.ts","sourceRoot":"","sources":["../../../../src/commands/task-loop/lib/vibe-kanban-client.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAQH,OAAO,KAAK,EACV,iBAAiB,EACjB,iBAAiB,EACjB,cAAc,EACd,cAAc,EACf,MAAM,YAAY,CAAC;AAEpB;;GAEG;AACH,qBAAa,gBAAgB;IAC3B,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,SAAS,CAAqC;IACtD,OAAO,CAAC,SAAS,CAAS;;IAS1B;;OAEG;IACG,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;IA0B9B;;;;OAIG;IACH,OAAO,CAAC,YAAY;IAqBpB;;OAEG;IACH,OAAO,CAAC,eAAe;IAavB;;OAEG;IACH,OAAO,CAAC,kBAAkB;IAa1B;;OAEG;IACG,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;IAajC;;OAEG;IACG,YAAY,IAAI,OAAO,CAAC,iBAAiB,EAAE,CAAC;IAclD;;OAEG;IACG,UAAU,CAAC,SAAS,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,cAAc,EAAE,CAAC;IAa/D;;OAEG;IACG,SAAS,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,cAAc,EAAE,CAAC;IAY7D;;OAEG;IACG,QAAQ,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,cAAc,GAAG,IAAI,CAAC;IAW/D;;;OAGG;IACG,WAAW,CAAC,SAAS,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAqBzF;;OAEG;IACG,WAAW,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAYjE;;;;;;OAMG;IACG,qBAAqB,CACzB,OAAO,EAAE,MAAM,GAAG,SAAS,EAC3B,KAAK,EAAE,MAAM,EACb,QAAQ,EAAE,aAAa,EACvB,KAAK,EAAE,KAAK,CAAC;QAAE,OAAO,EAAE,MAAM,CAAC;QAAC,WAAW,EAAE,MAAM,CAAA;KAAE,CAAC,GACrD,OAAO,CAAC,iBAAiB,CAAC;IA0B7B;;OAEG;IACH,OAAO,CAAC,eAAe;IAQvB;;OAEG;IACH,OAAO,CAAC,eAAe;IAiDvB;;OAEG;IACH,OAAO,CAAC,mBAAmB;CAgB5B"}
|
|
@@ -120,16 +120,17 @@ export class VibeKanbanClient {
|
|
|
120
120
|
return parsed.projects;
|
|
121
121
|
}
|
|
122
122
|
/**
|
|
123
|
-
*
|
|
123
|
+
* イシュー一覧を取得
|
|
124
124
|
*/
|
|
125
|
-
async
|
|
125
|
+
async listIssues(projectId) {
|
|
126
126
|
this.ensureConnected();
|
|
127
127
|
const result = await this.client.callTool({
|
|
128
|
-
name: "
|
|
129
|
-
arguments: { project_id: projectId },
|
|
128
|
+
name: "list_issues",
|
|
129
|
+
arguments: projectId ? { project_id: projectId } : {},
|
|
130
130
|
});
|
|
131
|
-
|
|
132
|
-
|
|
131
|
+
// レスポンスは issues 配列として返る
|
|
132
|
+
const parsed = this.parseToolResult(result, []);
|
|
133
|
+
return parsed;
|
|
133
134
|
}
|
|
134
135
|
/**
|
|
135
136
|
* リポジトリ一覧を取得
|
|
@@ -144,65 +145,77 @@ export class VibeKanbanClient {
|
|
|
144
145
|
return parsed.repos;
|
|
145
146
|
}
|
|
146
147
|
/**
|
|
147
|
-
*
|
|
148
|
+
* イシューを取得
|
|
148
149
|
*/
|
|
149
|
-
async
|
|
150
|
+
async getIssue(issueId) {
|
|
150
151
|
this.ensureConnected();
|
|
151
152
|
const result = await this.client.callTool({
|
|
152
|
-
name: "
|
|
153
|
-
arguments: {
|
|
153
|
+
name: "get_issue",
|
|
154
|
+
arguments: { issue_id: issueId },
|
|
154
155
|
});
|
|
155
156
|
return this.parseToolResult(result, null);
|
|
156
157
|
}
|
|
157
158
|
/**
|
|
158
|
-
*
|
|
159
|
-
* @returns
|
|
159
|
+
* イシューを作成
|
|
160
|
+
* @returns イシューID
|
|
160
161
|
*/
|
|
161
|
-
async
|
|
162
|
+
async createIssue(projectId, title, description) {
|
|
163
|
+
var _a;
|
|
162
164
|
this.ensureConnected();
|
|
163
165
|
const result = await this.client.callTool({
|
|
164
|
-
name: "
|
|
166
|
+
name: "create_issue",
|
|
165
167
|
arguments: {
|
|
166
168
|
project_id: projectId,
|
|
167
169
|
title,
|
|
168
170
|
description,
|
|
169
171
|
},
|
|
170
172
|
});
|
|
173
|
+
// レスポンスから issue_id を取得(直接オブジェクトとして返る場合と、id プロパティの場合がある)
|
|
171
174
|
const parsed = this.parseToolResult(result, null);
|
|
172
|
-
|
|
173
|
-
|
|
175
|
+
const issueId = (_a = parsed === null || parsed === void 0 ? void 0 : parsed.id) !== null && _a !== void 0 ? _a : parsed === null || parsed === void 0 ? void 0 : parsed.issue_id;
|
|
176
|
+
if (!issueId) {
|
|
177
|
+
throw new Error("イシューの作成に失敗しました");
|
|
174
178
|
}
|
|
175
|
-
return
|
|
179
|
+
return issueId;
|
|
176
180
|
}
|
|
177
181
|
/**
|
|
178
|
-
*
|
|
182
|
+
* イシューを更新
|
|
179
183
|
*/
|
|
180
|
-
async
|
|
184
|
+
async updateIssue(issueId, status) {
|
|
181
185
|
this.ensureConnected();
|
|
182
186
|
await this.client.callTool({
|
|
183
|
-
name: "
|
|
187
|
+
name: "update_issue",
|
|
184
188
|
arguments: {
|
|
185
|
-
|
|
189
|
+
issue_id: issueId,
|
|
186
190
|
status,
|
|
187
191
|
},
|
|
188
192
|
});
|
|
189
193
|
}
|
|
190
194
|
/**
|
|
191
|
-
*
|
|
195
|
+
* ワークスペースセッションを開始
|
|
196
|
+
* @param issueId イシューID(オプショナル - ワークスペースをイシューに紐付ける場合に指定)
|
|
197
|
+
* @param title ワークスペースのタイトル(必須)
|
|
198
|
+
* @param executor 実行エージェント
|
|
199
|
+
* @param repos リポジトリ情報
|
|
192
200
|
*/
|
|
193
|
-
async
|
|
201
|
+
async startWorkspaceSession(issueId, title, executor, repos) {
|
|
194
202
|
this.ensureConnected();
|
|
203
|
+
const args = {
|
|
204
|
+
title,
|
|
205
|
+
executor,
|
|
206
|
+
repos,
|
|
207
|
+
};
|
|
208
|
+
// issue_id がある場合のみ追加(オプショナル)
|
|
209
|
+
if (issueId) {
|
|
210
|
+
args.issue_id = issueId;
|
|
211
|
+
}
|
|
195
212
|
const result = await this.client.callTool({
|
|
196
213
|
name: "start_workspace_session",
|
|
197
|
-
arguments:
|
|
198
|
-
task_id: taskId,
|
|
199
|
-
executor,
|
|
200
|
-
repos,
|
|
201
|
-
},
|
|
214
|
+
arguments: args,
|
|
202
215
|
});
|
|
203
216
|
const attempt = this.parseToolResult(result, null);
|
|
204
217
|
if (!attempt) {
|
|
205
|
-
throw new Error("
|
|
218
|
+
throw new Error("ワークスペースセッションの開始に失敗しました");
|
|
206
219
|
}
|
|
207
220
|
return attempt;
|
|
208
221
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"vibe-kanban-client.js","sourceRoot":"","sources":["../../../../src/commands/task-loop/lib/vibe-kanban-client.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"vibe-kanban-client.js","sourceRoot":"","sources":["../../../../src/commands/task-loop/lib/vibe-kanban-client.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
import type { RequirementsConfig, SystemCommandRequirement } from "../types/index.js";
|
|
2
|
+
import { type PackageManager } from "./package-manager.js";
|
|
3
|
+
export interface DependencyCheckResult {
|
|
4
|
+
missingDevDeps: string[];
|
|
5
|
+
missingScripts: Record<string, string>;
|
|
6
|
+
missingSystemCommands: SystemCommandRequirement[];
|
|
7
|
+
allSatisfied: boolean;
|
|
8
|
+
}
|
|
9
|
+
export interface InstallResult {
|
|
10
|
+
devDepsInstalled: boolean;
|
|
11
|
+
scriptsAdded: string[];
|
|
12
|
+
systemCommandsWarned: string[];
|
|
13
|
+
}
|
|
14
|
+
/**
|
|
15
|
+
* 依存関係をチェック
|
|
16
|
+
*/
|
|
17
|
+
export declare function checkDependencies(cwd: string, requirements: RequirementsConfig): Promise<DependencyCheckResult>;
|
|
18
|
+
/**
|
|
19
|
+
* 依存関係チェック+インストールを実行
|
|
20
|
+
*
|
|
21
|
+
* @param cwd - プロジェクトルートディレクトリ
|
|
22
|
+
* @param requirements - preset.yaml の requirements セクション
|
|
23
|
+
* @param pm - 検出されたパッケージマネージャ
|
|
24
|
+
* @param options - オプション(yes, dryRun)
|
|
25
|
+
* @param silent - 全て満たされている場合にメッセージを表示しない(sync用)
|
|
26
|
+
*/
|
|
27
|
+
export declare function checkAndInstallDependencies(cwd: string, requirements: RequirementsConfig, pm: PackageManager, options: {
|
|
28
|
+
yes?: boolean;
|
|
29
|
+
dryRun?: boolean;
|
|
30
|
+
}, silent?: boolean): Promise<InstallResult>;
|
|
31
|
+
//# sourceMappingURL=dependency-checker.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"dependency-checker.d.ts","sourceRoot":"","sources":["../../src/lib/dependency-checker.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,kBAAkB,EAAE,wBAAwB,EAAE,MAAM,mBAAmB,CAAC;AACtF,OAAO,EACL,KAAK,cAAc,EAGpB,MAAM,sBAAsB,CAAC;AAE9B,MAAM,WAAW,qBAAqB;IACpC,cAAc,EAAE,MAAM,EAAE,CAAC;IACzB,cAAc,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACvC,qBAAqB,EAAE,wBAAwB,EAAE,CAAC;IAClD,YAAY,EAAE,OAAO,CAAC;CACvB;AAED,MAAM,WAAW,aAAa;IAC5B,gBAAgB,EAAE,OAAO,CAAC;IAC1B,YAAY,EAAE,MAAM,EAAE,CAAC;IACvB,oBAAoB,EAAE,MAAM,EAAE,CAAC;CAChC;AA0DD;;GAEG;AACH,wBAAsB,iBAAiB,CACrC,GAAG,EAAE,MAAM,EACX,YAAY,EAAE,kBAAkB,GAC/B,OAAO,CAAC,qBAAqB,CAAC,CAgDhC;AASD;;;;;;;;GAQG;AACH,wBAAsB,2BAA2B,CAC/C,GAAG,EAAE,MAAM,EACX,YAAY,EAAE,kBAAkB,EAChC,EAAE,EAAE,cAAc,EAClB,OAAO,EAAE;IAAE,GAAG,CAAC,EAAE,OAAO,CAAC;IAAC,MAAM,CAAC,EAAE,OAAO,CAAA;CAAE,EAC5C,MAAM,UAAQ,GACb,OAAO,CAAC,aAAa,CAAC,CAqJxB"}
|
|
@@ -0,0 +1,259 @@
|
|
|
1
|
+
import { execSync } from "node:child_process";
|
|
2
|
+
import path from "node:path";
|
|
3
|
+
import chalk from "chalk";
|
|
4
|
+
import fs from "fs-extra";
|
|
5
|
+
import inquirer from "inquirer";
|
|
6
|
+
import ora from "ora";
|
|
7
|
+
import { getAddDevCommand, resolveScriptPlaceholders, } from "./package-manager.js";
|
|
8
|
+
/**
|
|
9
|
+
* npm パッケージがコマンドとして利用可能かチェック(モノレポ + Yarn PnP 対応)
|
|
10
|
+
*/
|
|
11
|
+
async function isPackageAvailable(packageName, cwd) {
|
|
12
|
+
var _a, _b;
|
|
13
|
+
// パッケージ名からコマンド名を推定
|
|
14
|
+
const commandMap = {
|
|
15
|
+
"@biomejs/biome": ["biome --version"],
|
|
16
|
+
typescript: ["tsc --version"],
|
|
17
|
+
};
|
|
18
|
+
const commands = commandMap[packageName];
|
|
19
|
+
if (!commands) {
|
|
20
|
+
// マッピングがない場合は package.json の devDependencies をチェック
|
|
21
|
+
try {
|
|
22
|
+
const packageJsonPath = path.join(cwd, "package.json");
|
|
23
|
+
if (await fs.pathExists(packageJsonPath)) {
|
|
24
|
+
const packageJson = await fs.readJson(packageJsonPath);
|
|
25
|
+
return !!(((_a = packageJson.devDependencies) === null || _a === void 0 ? void 0 : _a[packageName]) ||
|
|
26
|
+
((_b = packageJson.dependencies) === null || _b === void 0 ? void 0 : _b[packageName]));
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
catch (_c) {
|
|
30
|
+
// ignore
|
|
31
|
+
}
|
|
32
|
+
return false;
|
|
33
|
+
}
|
|
34
|
+
for (const cmd of commands) {
|
|
35
|
+
try {
|
|
36
|
+
execSync(`npx --yes ${cmd}`, {
|
|
37
|
+
cwd,
|
|
38
|
+
stdio: "pipe",
|
|
39
|
+
timeout: 30000,
|
|
40
|
+
});
|
|
41
|
+
return true;
|
|
42
|
+
}
|
|
43
|
+
catch (_d) {
|
|
44
|
+
// コマンド実行失敗 = パッケージが利用不可
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
return false;
|
|
48
|
+
}
|
|
49
|
+
/**
|
|
50
|
+
* システムコマンドが利用可能かチェック
|
|
51
|
+
*/
|
|
52
|
+
function isSystemCommandAvailable(command) {
|
|
53
|
+
try {
|
|
54
|
+
const checkCmd = process.platform === "win32" ? `where ${command}` : `command -v ${command}`;
|
|
55
|
+
execSync(checkCmd, { stdio: "pipe" });
|
|
56
|
+
return true;
|
|
57
|
+
}
|
|
58
|
+
catch (_a) {
|
|
59
|
+
return false;
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
/**
|
|
63
|
+
* 依存関係をチェック
|
|
64
|
+
*/
|
|
65
|
+
export async function checkDependencies(cwd, requirements) {
|
|
66
|
+
const missingDevDeps = [];
|
|
67
|
+
const missingScripts = {};
|
|
68
|
+
const missingSystemCommands = [];
|
|
69
|
+
// 1. devDependencies チェック(コマンド実行ベース)
|
|
70
|
+
if (requirements.devDependencies) {
|
|
71
|
+
for (const packageName of Object.keys(requirements.devDependencies)) {
|
|
72
|
+
const available = await isPackageAvailable(packageName, cwd);
|
|
73
|
+
if (!available) {
|
|
74
|
+
missingDevDeps.push(packageName);
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
// 2. scripts チェック(キー存在のみ)
|
|
79
|
+
if (requirements.scripts) {
|
|
80
|
+
try {
|
|
81
|
+
const packageJsonPath = path.join(cwd, "package.json");
|
|
82
|
+
if (await fs.pathExists(packageJsonPath)) {
|
|
83
|
+
const packageJson = await fs.readJson(packageJsonPath);
|
|
84
|
+
const existingScripts = packageJson.scripts || {};
|
|
85
|
+
for (const [key, value] of Object.entries(requirements.scripts)) {
|
|
86
|
+
if (!existingScripts[key]) {
|
|
87
|
+
missingScripts[key] = value;
|
|
88
|
+
}
|
|
89
|
+
}
|
|
90
|
+
}
|
|
91
|
+
}
|
|
92
|
+
catch (_a) {
|
|
93
|
+
// パース失敗時はスキップ
|
|
94
|
+
}
|
|
95
|
+
}
|
|
96
|
+
// 3. systemCommands チェック
|
|
97
|
+
if (requirements.systemCommands) {
|
|
98
|
+
for (const req of requirements.systemCommands) {
|
|
99
|
+
if (!isSystemCommandAvailable(req.command)) {
|
|
100
|
+
missingSystemCommands.push(req);
|
|
101
|
+
}
|
|
102
|
+
}
|
|
103
|
+
}
|
|
104
|
+
const allSatisfied = missingDevDeps.length === 0 &&
|
|
105
|
+
Object.keys(missingScripts).length === 0 &&
|
|
106
|
+
missingSystemCommands.length === 0;
|
|
107
|
+
return { missingDevDeps, missingScripts, missingSystemCommands, allSatisfied };
|
|
108
|
+
}
|
|
109
|
+
/**
|
|
110
|
+
* 非対話モードかどうかを判定
|
|
111
|
+
*/
|
|
112
|
+
function isNonInteractive(options) {
|
|
113
|
+
return !!(options.yes || process.env.CI || !process.stdout.isTTY);
|
|
114
|
+
}
|
|
115
|
+
/**
|
|
116
|
+
* 依存関係チェック+インストールを実行
|
|
117
|
+
*
|
|
118
|
+
* @param cwd - プロジェクトルートディレクトリ
|
|
119
|
+
* @param requirements - preset.yaml の requirements セクション
|
|
120
|
+
* @param pm - 検出されたパッケージマネージャ
|
|
121
|
+
* @param options - オプション(yes, dryRun)
|
|
122
|
+
* @param silent - 全て満たされている場合にメッセージを表示しない(sync用)
|
|
123
|
+
*/
|
|
124
|
+
export async function checkAndInstallDependencies(cwd, requirements, pm, options, silent = false) {
|
|
125
|
+
const spinner = ora();
|
|
126
|
+
const result = {
|
|
127
|
+
devDepsInstalled: false,
|
|
128
|
+
scriptsAdded: [],
|
|
129
|
+
systemCommandsWarned: [],
|
|
130
|
+
};
|
|
131
|
+
// 依存関係チェック
|
|
132
|
+
spinner.start("依存関係をチェック中...");
|
|
133
|
+
const checkResult = await checkDependencies(cwd, requirements);
|
|
134
|
+
if (checkResult.allSatisfied) {
|
|
135
|
+
if (!silent) {
|
|
136
|
+
spinner.succeed("依存関係: すべて満たされています");
|
|
137
|
+
}
|
|
138
|
+
else {
|
|
139
|
+
spinner.stop();
|
|
140
|
+
}
|
|
141
|
+
return result;
|
|
142
|
+
}
|
|
143
|
+
spinner.succeed("依存関係: 不足項目があります");
|
|
144
|
+
// dry-run モード
|
|
145
|
+
if (options.dryRun) {
|
|
146
|
+
if (checkResult.missingDevDeps.length > 0) {
|
|
147
|
+
console.log(chalk.yellow("\n [Dry Run] 不足 devDependencies:"));
|
|
148
|
+
for (const dep of checkResult.missingDevDeps) {
|
|
149
|
+
console.log(chalk.yellow(` - ${dep}`));
|
|
150
|
+
}
|
|
151
|
+
}
|
|
152
|
+
if (Object.keys(checkResult.missingScripts).length > 0) {
|
|
153
|
+
console.log(chalk.yellow("\n [Dry Run] 不足 scripts:"));
|
|
154
|
+
for (const [key, value] of Object.entries(checkResult.missingScripts)) {
|
|
155
|
+
console.log(chalk.yellow(` - ${key}: ${value}`));
|
|
156
|
+
}
|
|
157
|
+
}
|
|
158
|
+
if (checkResult.missingSystemCommands.length > 0) {
|
|
159
|
+
console.log(chalk.yellow("\n [Dry Run] 不足システムコマンド:"));
|
|
160
|
+
for (const cmd of checkResult.missingSystemCommands) {
|
|
161
|
+
console.log(chalk.yellow(` - ${cmd.command}: ${cmd.description}`));
|
|
162
|
+
}
|
|
163
|
+
}
|
|
164
|
+
return result;
|
|
165
|
+
}
|
|
166
|
+
// devDependencies インストール
|
|
167
|
+
if (checkResult.missingDevDeps.length > 0) {
|
|
168
|
+
const addCmd = getAddDevCommand(pm, checkResult.missingDevDeps);
|
|
169
|
+
console.log(chalk.cyan("\n 不足している devDependencies:"));
|
|
170
|
+
for (const dep of checkResult.missingDevDeps) {
|
|
171
|
+
console.log(chalk.cyan(` - ${dep}`));
|
|
172
|
+
}
|
|
173
|
+
let proceed = true;
|
|
174
|
+
if (!isNonInteractive(options)) {
|
|
175
|
+
const answer = await inquirer.prompt([
|
|
176
|
+
{
|
|
177
|
+
type: "confirm",
|
|
178
|
+
name: "proceed",
|
|
179
|
+
message: `devDependencies をインストールしますか? (${addCmd})`,
|
|
180
|
+
default: true,
|
|
181
|
+
},
|
|
182
|
+
]);
|
|
183
|
+
proceed = answer.proceed;
|
|
184
|
+
}
|
|
185
|
+
if (proceed) {
|
|
186
|
+
spinner.start(`devDependencies をインストール中... (${addCmd})`);
|
|
187
|
+
try {
|
|
188
|
+
execSync(addCmd, { cwd, stdio: "pipe", timeout: 120000 });
|
|
189
|
+
spinner.succeed(`devDependencies インストール完了: ${checkResult.missingDevDeps.join(", ")}`);
|
|
190
|
+
result.devDepsInstalled = true;
|
|
191
|
+
}
|
|
192
|
+
catch (error) {
|
|
193
|
+
spinner.fail("devDependencies のインストールに失敗しました");
|
|
194
|
+
console.error(chalk.red(` ${error instanceof Error ? error.message : String(error)}`));
|
|
195
|
+
}
|
|
196
|
+
}
|
|
197
|
+
else {
|
|
198
|
+
console.log(chalk.yellow(" devDependencies のインストールをスキップしました"));
|
|
199
|
+
}
|
|
200
|
+
}
|
|
201
|
+
// scripts 追加
|
|
202
|
+
if (Object.keys(checkResult.missingScripts).length > 0) {
|
|
203
|
+
const resolvedScripts = resolveScriptPlaceholders(checkResult.missingScripts, pm);
|
|
204
|
+
console.log(chalk.cyan("\n 不足している scripts:"));
|
|
205
|
+
for (const [key, value] of Object.entries(resolvedScripts)) {
|
|
206
|
+
console.log(chalk.cyan(` - ${key}: "${value}"`));
|
|
207
|
+
}
|
|
208
|
+
let proceed = true;
|
|
209
|
+
if (!isNonInteractive(options)) {
|
|
210
|
+
const answer = await inquirer.prompt([
|
|
211
|
+
{
|
|
212
|
+
type: "confirm",
|
|
213
|
+
name: "proceed",
|
|
214
|
+
message: "不足している scripts を package.json に追加しますか?",
|
|
215
|
+
default: true,
|
|
216
|
+
},
|
|
217
|
+
]);
|
|
218
|
+
proceed = answer.proceed;
|
|
219
|
+
}
|
|
220
|
+
if (proceed) {
|
|
221
|
+
try {
|
|
222
|
+
const packageJsonPath = path.join(cwd, "package.json");
|
|
223
|
+
const packageJson = await fs.readJson(packageJsonPath);
|
|
224
|
+
if (!packageJson.scripts) {
|
|
225
|
+
packageJson.scripts = {};
|
|
226
|
+
}
|
|
227
|
+
for (const [key, value] of Object.entries(resolvedScripts)) {
|
|
228
|
+
if (!packageJson.scripts[key]) {
|
|
229
|
+
packageJson.scripts[key] = value;
|
|
230
|
+
result.scriptsAdded.push(key);
|
|
231
|
+
}
|
|
232
|
+
}
|
|
233
|
+
await fs.writeJson(packageJsonPath, packageJson, { spaces: 2 });
|
|
234
|
+
console.log(chalk.green(` ✓ scripts を追加しました: ${result.scriptsAdded.join(", ")}`));
|
|
235
|
+
}
|
|
236
|
+
catch (error) {
|
|
237
|
+
console.error(chalk.red(` scripts の追加に失敗: ${error instanceof Error ? error.message : String(error)}`));
|
|
238
|
+
}
|
|
239
|
+
}
|
|
240
|
+
else {
|
|
241
|
+
console.log(chalk.yellow(" scripts の追加をスキップしました"));
|
|
242
|
+
}
|
|
243
|
+
}
|
|
244
|
+
// システムコマンド(手順表示のみ)
|
|
245
|
+
if (checkResult.missingSystemCommands.length > 0) {
|
|
246
|
+
console.log(chalk.yellow("\n ⚠️ 不足しているシステムコマンド(手動インストールが必要):"));
|
|
247
|
+
for (const cmd of checkResult.missingSystemCommands) {
|
|
248
|
+
console.log(chalk.yellow(` ${cmd.command}: ${cmd.description}`));
|
|
249
|
+
const platform = process.platform;
|
|
250
|
+
const installCmd = cmd.install[platform];
|
|
251
|
+
if (installCmd) {
|
|
252
|
+
console.log(chalk.gray(` インストール: ${installCmd}`));
|
|
253
|
+
}
|
|
254
|
+
result.systemCommandsWarned.push(cmd.command);
|
|
255
|
+
}
|
|
256
|
+
}
|
|
257
|
+
return result;
|
|
258
|
+
}
|
|
259
|
+
//# sourceMappingURL=dependency-checker.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"dependency-checker.js","sourceRoot":"","sources":["../../src/lib/dependency-checker.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
export type PackageManager = "npm" | "yarn" | "pnpm" | "bun";
|
|
2
|
+
/**
|
|
3
|
+
* パッケージマネージャを検出する
|
|
4
|
+
* 検出順: packageManager フィールド → lockfile → npm fallback
|
|
5
|
+
*/
|
|
6
|
+
export declare function detectPackageManager(cwd: string): Promise<PackageManager>;
|
|
7
|
+
/**
|
|
8
|
+
* devDependencies 追加コマンドを生成
|
|
9
|
+
*/
|
|
10
|
+
export declare function getAddDevCommand(pm: PackageManager, packages: string[]): string;
|
|
11
|
+
/**
|
|
12
|
+
* scripts 内の {pm} プレースホルダーを検出したパッケージマネージャで置換
|
|
13
|
+
*/
|
|
14
|
+
export declare function resolveScriptPlaceholders(scripts: Record<string, string>, pm: PackageManager): Record<string, string>;
|
|
15
|
+
//# sourceMappingURL=package-manager.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"package-manager.d.ts","sourceRoot":"","sources":["../../src/lib/package-manager.ts"],"names":[],"mappings":"AAIA,MAAM,MAAM,cAAc,GAAG,KAAK,GAAG,MAAM,GAAG,MAAM,GAAG,KAAK,CAAC;AAE7D;;;GAGG;AACH,wBAAsB,oBAAoB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,cAAc,CAAC,CAmC/E;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,EAAE,EAAE,cAAc,EAAE,QAAQ,EAAE,MAAM,EAAE,GAAG,MAAM,CAY/E;AAED;;GAEG;AACH,wBAAgB,yBAAyB,CACvC,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,EAC/B,EAAE,EAAE,cAAc,GACjB,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAMxB"}
|
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
import path from "node:path";
|
|
2
|
+
import fs from "fs-extra";
|
|
3
|
+
/**
|
|
4
|
+
* パッケージマネージャを検出する
|
|
5
|
+
* 検出順: packageManager フィールド → lockfile → npm fallback
|
|
6
|
+
*/
|
|
7
|
+
export async function detectPackageManager(cwd) {
|
|
8
|
+
// 1. package.json の packageManager フィールドをチェック
|
|
9
|
+
const packageJsonPath = path.join(cwd, "package.json");
|
|
10
|
+
if (await fs.pathExists(packageJsonPath)) {
|
|
11
|
+
try {
|
|
12
|
+
const packageJson = await fs.readJson(packageJsonPath);
|
|
13
|
+
if (packageJson.packageManager) {
|
|
14
|
+
const pm = packageJson.packageManager;
|
|
15
|
+
if (pm.startsWith("pnpm"))
|
|
16
|
+
return "pnpm";
|
|
17
|
+
if (pm.startsWith("yarn"))
|
|
18
|
+
return "yarn";
|
|
19
|
+
if (pm.startsWith("bun"))
|
|
20
|
+
return "bun";
|
|
21
|
+
if (pm.startsWith("npm"))
|
|
22
|
+
return "npm";
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
catch (_a) {
|
|
26
|
+
// パース失敗時はlockfileチェックに進む
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
// 2. lockfile の存在をチェック
|
|
30
|
+
const lockfiles = [
|
|
31
|
+
["pnpm-lock.yaml", "pnpm"],
|
|
32
|
+
["yarn.lock", "yarn"],
|
|
33
|
+
["bun.lockb", "bun"],
|
|
34
|
+
["bun.lock", "bun"],
|
|
35
|
+
["package-lock.json", "npm"],
|
|
36
|
+
];
|
|
37
|
+
for (const [lockfile, pm] of lockfiles) {
|
|
38
|
+
if (await fs.pathExists(path.join(cwd, lockfile))) {
|
|
39
|
+
return pm;
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
// 3. fallback
|
|
43
|
+
return "npm";
|
|
44
|
+
}
|
|
45
|
+
/**
|
|
46
|
+
* devDependencies 追加コマンドを生成
|
|
47
|
+
*/
|
|
48
|
+
export function getAddDevCommand(pm, packages) {
|
|
49
|
+
const pkgStr = packages.join(" ");
|
|
50
|
+
switch (pm) {
|
|
51
|
+
case "pnpm":
|
|
52
|
+
return `pnpm add -D ${pkgStr}`;
|
|
53
|
+
case "yarn":
|
|
54
|
+
return `yarn add -D ${pkgStr}`;
|
|
55
|
+
case "bun":
|
|
56
|
+
return `bun add -D ${pkgStr}`;
|
|
57
|
+
case "npm":
|
|
58
|
+
return `npm install -D ${pkgStr}`;
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
/**
|
|
62
|
+
* scripts 内の {pm} プレースホルダーを検出したパッケージマネージャで置換
|
|
63
|
+
*/
|
|
64
|
+
export function resolveScriptPlaceholders(scripts, pm) {
|
|
65
|
+
const resolved = {};
|
|
66
|
+
for (const [key, value] of Object.entries(scripts)) {
|
|
67
|
+
resolved[key] = value.replace(/\{pm\}/g, pm);
|
|
68
|
+
}
|
|
69
|
+
return resolved;
|
|
70
|
+
}
|
|
71
|
+
//# sourceMappingURL=package-manager.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"package-manager.js","sourceRoot":"","sources":["../../src/lib/package-manager.ts"],"names":[],"mappings":"AAAA,OAAO,IAAI,MAAM,WAAW,CAAC;AAE7B,OAAO,EAAE,MAAM,UAAU,CAAC;AAI1B;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,oBAAoB,CAAC,GAAW;IACpD,8CAA8C;IAC9C,MAAM,eAAe,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,cAAc,CAAC,CAAC;IACvD,IAAI,MAAM,EAAE,CAAC,UAAU,CAAC,eAAe,CAAC,EAAE,CAAC;QACzC,IAAI,CAAC;YACH,MAAM,WAAW,GAAG,MAAM,EAAE,CAAC,QAAQ,CAAC,eAAe,CAAC,CAAC;YACvD,IAAI,WAAW,CAAC,cAAc,EAAE,CAAC;gBAC/B,MAAM,EAAE,GAAG,WAAW,CAAC,cAAwB,CAAC;gBAChD,IAAI,EAAE,CAAC,UAAU,CAAC,MAAM,CAAC;oBAAE,OAAO,MAAM,CAAC;gBACzC,IAAI,EAAE,CAAC,UAAU,CAAC,MAAM,CAAC;oBAAE,OAAO,MAAM,CAAC;gBACzC,IAAI,EAAE,CAAC,UAAU,CAAC,KAAK,CAAC;oBAAE,OAAO,KAAK,CAAC;gBACvC,IAAI,EAAE,CAAC,UAAU,CAAC,KAAK,CAAC;oBAAE,OAAO,KAAK,CAAC;YACzC,CAAC;QACH,CAAC;QAAC,WAAM,CAAC;YACP,yBAAyB;QAC3B,CAAC;IACH,CAAC;IAED,uBAAuB;IACvB,MAAM,SAAS,GAA+B;QAC5C,CAAC,gBAAgB,EAAE,MAAM,CAAC;QAC1B,CAAC,WAAW,EAAE,MAAM,CAAC;QACrB,CAAC,WAAW,EAAE,KAAK,CAAC;QACpB,CAAC,UAAU,EAAE,KAAK,CAAC;QACnB,CAAC,mBAAmB,EAAE,KAAK,CAAC;KAC7B,CAAC;IAEF,KAAK,MAAM,CAAC,QAAQ,EAAE,EAAE,CAAC,IAAI,SAAS,EAAE,CAAC;QACvC,IAAI,MAAM,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAC,EAAE,CAAC;YAClD,OAAO,EAAE,CAAC;QACZ,CAAC;IACH,CAAC;IAED,cAAc;IACd,OAAO,KAAK,CAAC;AACf,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,gBAAgB,CAAC,EAAkB,EAAE,QAAkB;IACrE,MAAM,MAAM,GAAG,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IAClC,QAAQ,EAAE,EAAE,CAAC;QACX,KAAK,MAAM;YACT,OAAO,eAAe,MAAM,EAAE,CAAC;QACjC,KAAK,MAAM;YACT,OAAO,eAAe,MAAM,EAAE,CAAC;QACjC,KAAK,KAAK;YACR,OAAO,cAAc,MAAM,EAAE,CAAC;QAChC,KAAK,KAAK;YACR,OAAO,kBAAkB,MAAM,EAAE,CAAC;IACtC,CAAC;AACH,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,yBAAyB,CACvC,OAA+B,EAC/B,EAAkB;IAElB,MAAM,QAAQ,GAA2B,EAAE,CAAC;IAC5C,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC;QACnD,QAAQ,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,OAAO,CAAC,SAAS,EAAE,EAAE,CAAC,CAAC;IAC/C,CAAC;IACD,OAAO,QAAQ,CAAC;AAClB,CAAC"}
|
package/dist/types/index.d.ts
CHANGED
|
@@ -8,6 +8,7 @@ export interface PresetConfig {
|
|
|
8
8
|
additionalPermissions: string[];
|
|
9
9
|
additionalAgents: string[];
|
|
10
10
|
additionalCommands: string[];
|
|
11
|
+
requirements?: RequirementsConfig;
|
|
11
12
|
}
|
|
12
13
|
export interface Preset {
|
|
13
14
|
name: string;
|
|
@@ -20,6 +21,8 @@ export interface InitOptions {
|
|
|
20
21
|
force?: boolean;
|
|
21
22
|
backup?: boolean;
|
|
22
23
|
dryRun?: boolean;
|
|
24
|
+
skipDeps?: boolean;
|
|
25
|
+
yes?: boolean;
|
|
23
26
|
}
|
|
24
27
|
export interface CoreSettings {
|
|
25
28
|
includeCoAuthoredBy: boolean;
|
|
@@ -37,6 +40,7 @@ export interface SyncOptions {
|
|
|
37
40
|
yes?: boolean;
|
|
38
41
|
json?: boolean;
|
|
39
42
|
backup?: boolean;
|
|
43
|
+
skipDeps?: boolean;
|
|
40
44
|
}
|
|
41
45
|
/**
|
|
42
46
|
* シンボリックリンクエントリ
|
|
@@ -56,4 +60,20 @@ export interface SymlinksConfig {
|
|
|
56
60
|
/** シンボリックリンクの配列 */
|
|
57
61
|
symlinks: SymlinkEntry[];
|
|
58
62
|
}
|
|
63
|
+
/**
|
|
64
|
+
* 依存関係の要件定義
|
|
65
|
+
*/
|
|
66
|
+
export interface RequirementsConfig {
|
|
67
|
+
devDependencies?: Record<string, string>;
|
|
68
|
+
scripts?: Record<string, string>;
|
|
69
|
+
systemCommands?: SystemCommandRequirement[];
|
|
70
|
+
}
|
|
71
|
+
/**
|
|
72
|
+
* システムコマンドの要件
|
|
73
|
+
*/
|
|
74
|
+
export interface SystemCommandRequirement {
|
|
75
|
+
command: string;
|
|
76
|
+
description: string;
|
|
77
|
+
install: Partial<Record<"darwin" | "linux" | "win32", string>>;
|
|
78
|
+
}
|
|
59
79
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/types/index.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,YAAY;IAC3B,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,MAAM,CAAC;IACpB,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAClC,UAAU,EAAE,MAAM,EAAE,CAAC;IACrB,qBAAqB,EAAE,MAAM,EAAE,CAAC;IAChC,gBAAgB,EAAE,MAAM,EAAE,CAAC;IAC3B,kBAAkB,EAAE,MAAM,EAAE,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/types/index.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,YAAY;IAC3B,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,MAAM,CAAC;IACpB,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAClC,UAAU,EAAE,MAAM,EAAE,CAAC;IACrB,qBAAqB,EAAE,MAAM,EAAE,CAAC;IAChC,gBAAgB,EAAE,MAAM,EAAE,CAAC;IAC3B,kBAAkB,EAAE,MAAM,EAAE,CAAC;IAC7B,YAAY,CAAC,EAAE,kBAAkB,CAAC;CACnC;AAED,MAAM,WAAW,MAAM;IACrB,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,MAAM,CAAC;IACpB,MAAM,EAAE,YAAY,CAAC;CACtB;AAED,MAAM,WAAW,WAAW;IAC1B,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,GAAG,CAAC,EAAE,OAAO,CAAC;CACf;AAED,MAAM,WAAW,YAAY;IAC3B,mBAAmB,EAAE,OAAO,CAAC;IAC7B,WAAW,EAAE;QACX,KAAK,EAAE,MAAM,EAAE,CAAC;QAChB,GAAG,EAAE,MAAM,EAAE,CAAC;KACf,CAAC;IACF,0BAA0B,EAAE,OAAO,CAAC;IACpC,qBAAqB,EAAE,MAAM,EAAE,CAAC;CACjC;AAED,MAAM,WAAW,WAAW;IAC1B,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,GAAG,CAAC,EAAE,OAAO,CAAC;IACd,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB;AAED;;GAEG;AACH,MAAM,WAAW,YAAY;IAC3B,qCAAqC;IACrC,IAAI,EAAE,MAAM,CAAC;IACb,6BAA6B;IAC7B,MAAM,EAAE,MAAM,CAAC;CAChB;AAED;;GAEG;AACH,MAAM,WAAW,cAAc;IAC7B,6BAA6B;IAC7B,OAAO,EAAE,MAAM,CAAC;IAChB,mBAAmB;IACnB,QAAQ,EAAE,YAAY,EAAE,CAAC;CAC1B;AAED;;GAEG;AACH,MAAM,WAAW,kBAAkB;IACjC,eAAe,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACzC,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACjC,cAAc,CAAC,EAAE,wBAAwB,EAAE,CAAC;CAC7C;AAED;;GAEG;AACH,MAAM,WAAW,wBAAwB;IACvC,OAAO,EAAE,MAAM,CAAC;IAChB,WAAW,EAAE,MAAM,CAAC;IACpB,OAAO,EAAE,OAAO,CAAC,MAAM,CAAC,QAAQ,GAAG,OAAO,GAAG,OAAO,EAAE,MAAM,CAAC,CAAC,CAAC;CAChE"}
|