@einja/dev-cli 0.1.40 → 0.1.41
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 +89 -1
- package/dist/cli.js +1 -0
- package/dist/cli.js.map +1 -1
- package/dist/commands/init.d.ts.map +1 -1
- package/dist/commands/init.js +71 -1
- package/dist/commands/init.js.map +1 -1
- package/dist/commands/list.js.map +1 -1
- package/dist/commands/sync.d.ts.map +1 -1
- package/dist/commands/sync.js +187 -13
- package/dist/commands/sync.js.map +1 -1
- package/dist/lib/dependency-checker.d.ts.map +1 -1
- package/dist/lib/merger.d.ts +12 -0
- package/dist/lib/merger.d.ts.map +1 -1
- package/dist/lib/merger.js +28 -0
- package/dist/lib/merger.js.map +1 -1
- package/dist/lib/preset-update/cli-repo-detector.d.ts.map +1 -1
- package/dist/lib/preset-update/file-copier.d.ts.map +1 -1
- package/dist/lib/preset-update/preset-finder.d.ts.map +1 -1
- package/dist/lib/preset.d.ts.map +1 -1
- package/dist/lib/sync/category-validator.d.ts +1 -1
- package/dist/lib/sync/category-validator.d.ts.map +1 -1
- package/dist/lib/sync/category-validator.js +2 -1
- package/dist/lib/sync/category-validator.js.map +1 -1
- package/dist/lib/sync/category-validator.test.js +3 -1
- package/dist/lib/sync/category-validator.test.js.map +1 -1
- package/dist/lib/sync/conflict-reporter.d.ts.map +1 -1
- package/dist/lib/sync/diff-engine.d.ts.map +1 -1
- package/dist/lib/sync/file-filter.d.ts.map +1 -1
- package/dist/lib/sync/file-filter.js +1 -0
- package/dist/lib/sync/file-filter.js.map +1 -1
- package/dist/lib/sync/integration.test.js +255 -69
- package/dist/lib/sync/integration.test.js.map +1 -1
- package/dist/lib/sync/json-processor.d.ts +4 -4
- package/dist/lib/sync/json-processor.d.ts.map +1 -1
- package/dist/lib/sync/json-processor.js +11 -11
- package/dist/lib/sync/json-processor.js.map +1 -1
- package/dist/lib/sync/marker-processor.d.ts +60 -8
- package/dist/lib/sync/marker-processor.d.ts.map +1 -1
- package/dist/lib/sync/marker-processor.js +117 -26
- package/dist/lib/sync/marker-processor.js.map +1 -1
- package/dist/lib/sync/marker-processor.test.js +261 -40
- package/dist/lib/sync/marker-processor.test.js.map +1 -1
- package/dist/lib/sync/metadata-manager.d.ts +4 -0
- package/dist/lib/sync/metadata-manager.d.ts.map +1 -1
- package/dist/lib/sync/metadata-manager.js +15 -0
- package/dist/lib/sync/metadata-manager.js.map +1 -1
- package/dist/lib/sync/metadata-manager.test.js +68 -0
- package/dist/lib/sync/metadata-manager.test.js.map +1 -1
- package/dist/lib/sync/orphan-cleaner.d.ts +29 -0
- package/dist/lib/sync/orphan-cleaner.d.ts.map +1 -0
- package/dist/lib/sync/orphan-cleaner.js +80 -0
- package/dist/lib/sync/orphan-cleaner.js.map +1 -0
- package/dist/lib/sync/orphan-cleaner.test.d.ts +2 -0
- package/dist/lib/sync/orphan-cleaner.test.d.ts.map +1 -0
- package/dist/lib/sync/orphan-cleaner.test.js +169 -0
- package/dist/lib/sync/orphan-cleaner.test.js.map +1 -0
- package/dist/lib/sync/project-private-synchronizer.d.ts +52 -0
- package/dist/lib/sync/project-private-synchronizer.d.ts.map +1 -0
- package/dist/lib/sync/project-private-synchronizer.js +106 -0
- package/dist/lib/sync/project-private-synchronizer.js.map +1 -0
- package/dist/lib/sync/project-private-synchronizer.test.d.ts +2 -0
- package/dist/lib/sync/project-private-synchronizer.test.d.ts.map +1 -0
- package/dist/lib/sync/project-private-synchronizer.test.js +348 -0
- package/dist/lib/sync/project-private-synchronizer.test.js.map +1 -0
- package/dist/types/index.d.ts +1 -0
- package/dist/types/index.d.ts.map +1 -1
- package/dist/types/sync.d.ts +36 -6
- package/dist/types/sync.d.ts.map +1 -1
- package/dist/types/sync.js +2 -2
- package/dist/types/sync.js.map +1 -1
- package/package.json +5 -4
- package/presets/default/.claude/agents/einja/Explore.md +140 -0
- package/presets/default/.claude/agents/einja/backend-architect.md +4 -0
- package/presets/default/.claude/agents/einja/codex-agent.md +4 -0
- package/presets/default/.claude/agents/einja/design-engineer.md +4 -0
- package/presets/default/.claude/agents/einja/docs/docs-updater.md +4 -0
- package/presets/default/.claude/agents/einja/frontend-architect.md +4 -0
- package/presets/default/.claude/agents/einja/frontend-coder.md +4 -0
- package/presets/default/.claude/agents/einja/git/conflict-resolver.md +4 -0
- package/presets/default/.claude/agents/einja/specs/spec-design-generator.md +4 -1
- package/presets/default/.claude/agents/einja/specs/spec-qa-generator.md +4 -0
- package/presets/default/.claude/agents/einja/specs/spec-requirements-generator.md +4 -1
- package/presets/default/.claude/agents/einja/specs/spec-tasks-generator.md +6 -2
- package/presets/default/.claude/agents/einja/specs/spec-tasks-validator.md +4 -0
- package/presets/default/.claude/agents/einja/task/task-executer.md +57 -115
- package/presets/default/.claude/agents/einja/task/task-modification-analyzer.md +4 -0
- package/presets/default/.claude/agents/einja/task/task-qa.md +4 -0
- package/presets/default/.claude/agents/einja/task/task-reviewer.md +4 -0
- package/presets/default/.claude/commands/einja/einja-sync.md +5 -1
- package/presets/default/.claude/commands/einja/frontend-implement.md +3 -1
- package/presets/default/.claude/commands/einja/issue-exec.md +403 -0
- package/presets/default/.claude/commands/einja/spec-create.md +15 -1
- package/presets/default/.claude/commands/einja/start-dev.md +4 -0
- package/presets/default/.claude/commands/einja/sync-cursor-commands.md +4 -0
- package/presets/default/.claude/commands/einja/task-exec.md +106 -14
- package/presets/default/.claude/commands/einja/update-docs-by-task-specs.md +4 -0
- package/presets/default/.claude/hooks/einja/plan-mode-skill-loader.sh +23 -0
- package/presets/default/.claude/settings.json +15 -1
- package/presets/default/.claude/skills/einja-conflict-resolver/SKILL.md +4 -0
- package/presets/default/.claude/skills/einja-general-context-loader/SKILL.md +4 -0
- package/presets/default/.claude/skills/einja-output-format/SKILL.md +4 -0
- package/presets/default/.claude/skills/einja-project-overview/SKILL.md +7 -3
- package/presets/default/.claude/skills/einja-skill-creator/SKILL.md +266 -274
- package/presets/default/.claude/skills/einja-skill-creator/agents/analyzer.md +274 -0
- package/presets/default/.claude/skills/einja-skill-creator/agents/comparator.md +202 -0
- package/presets/default/.claude/skills/einja-skill-creator/agents/grader.md +195 -0
- package/presets/default/.claude/skills/einja-skill-creator/assets/eval_review.html +146 -0
- package/presets/default/.claude/skills/einja-skill-creator/eval-viewer/generate_review.py +471 -0
- package/presets/default/.claude/skills/einja-skill-creator/eval-viewer/viewer.html +1325 -0
- package/presets/default/.claude/skills/einja-skill-creator/references/schemas.md +430 -0
- package/presets/default/.claude/skills/einja-skill-creator/scripts/aggregate_benchmark.py +154 -0
- package/presets/default/.claude/skills/einja-skill-creator/scripts/generate_report.py +265 -0
- package/presets/default/.claude/skills/einja-skill-creator/scripts/improve_description.py +252 -0
- package/presets/default/.claude/skills/einja-skill-creator/scripts/init_skill.py +13 -19
- package/presets/default/.claude/skills/einja-skill-creator/scripts/package_skill.py +36 -7
- package/presets/default/.claude/skills/einja-skill-creator/scripts/run_eval.py +310 -0
- package/presets/default/.claude/skills/einja-skill-creator/scripts/run_loop.py +295 -0
- package/presets/default/.claude/skills/einja-skill-creator/scripts/utils.py +48 -0
- package/presets/default/.claude/skills/einja-spec-context-loader/SKILL.md +4 -0
- package/presets/default/.claude/skills/einja-task-commit/SKILL.md +4 -0
- package/presets/default/.claude/skills/einja-task-qa/SKILL.md +4 -0
- package/presets/default/.envrc +5 -0
- package/presets/default/.mcp.json +2 -12
- package/presets/default/CLAUDE.md.template +26 -4
- package/presets/default/docs/einja/example/specs/issues/issue999-example-task/tasks.md +1 -1
- package/presets/default/docs/einja/instructions/deployment-setup.md +3 -8
- package/presets/default/docs/einja/instructions/environment-setup.md +3 -8
- package/presets/default/docs/einja/instructions/issue-exec-workflow.md +276 -0
- package/presets/default/docs/einja/instructions/local-server-environment-and-worktree.md +70 -8
- package/presets/default/docs/einja/instructions/neon-cli-reference.md +3 -8
- package/presets/default/docs/einja/instructions/task-execute.md +23 -28
- package/presets/default/docs/einja/instructions/vercel-cli-reference.md +17 -10
- package/presets/default/docs/einja/steering/README.md +11 -11
- package/presets/default/docs/einja/steering/acceptance-criteria-and-qa-guide.md +3 -8
- package/presets/default/docs/einja/steering/architecture.md +3 -8
- package/presets/default/docs/einja/steering/branch-strategy.md +63 -70
- package/presets/default/docs/einja/steering/commit-rules.md +3 -8
- package/presets/default/docs/einja/steering/db-schema-design.md +3 -8
- package/presets/default/docs/einja/steering/development/api-development.md +3 -8
- package/presets/default/docs/einja/steering/development/backend-architecture.md +3 -8
- package/presets/default/docs/einja/steering/development/coding-standards.md +723 -0
- package/presets/default/docs/einja/steering/development/component-design.md +502 -0
- package/presets/default/docs/einja/steering/development/database-guidelines.md +2 -2
- package/presets/default/docs/einja/steering/development/frontend-development.md +3 -8
- package/presets/default/docs/einja/steering/development/playwright-guidelines.md +59 -0
- package/presets/default/docs/einja/steering/development/review-guidelines.md +3 -8
- package/presets/default/docs/einja/steering/development/testing-strategy.md +3 -8
- package/presets/default/docs/einja/steering/development-workflow.md +71 -124
- package/presets/default/docs/einja/steering/infrastructure/deployment.md +49 -55
- package/presets/default/docs/einja/steering/infrastructure/environment-variables.md +4 -8
- package/presets/default/docs/einja/steering/product.md +3 -8
- package/presets/default/docs/einja/steering/task-management.md +14 -98
- package/presets/default/scripts/ensure-serena.sh +75 -0
- package/presets/default/scripts/env-rotate-secrets.ts +336 -0
- package/presets/default/scripts/env-show.ts +130 -0
- package/presets/default/scripts/env.ts +479 -0
- package/presets/default/scripts/init.sh +92 -0
- package/presets/default/scripts/lib/env-common.ts +108 -0
- package/presets/default/scripts/lib/worktree-config.ts +64 -0
- package/presets/default/scripts/setup-dev.ts +640 -0
- package/presets/default/scripts/stop-serena.sh +25 -0
- package/presets/default/scripts/worktree/dev.ts +872 -0
- package/dist/lib/sync/seed-synchronizer.d.ts +0 -27
- package/dist/lib/sync/seed-synchronizer.d.ts.map +0 -1
- package/dist/lib/sync/seed-synchronizer.js +0 -72
- package/dist/lib/sync/seed-synchronizer.js.map +0 -1
- package/dist/lib/sync/seed-synchronizer.test.d.ts +0 -2
- package/dist/lib/sync/seed-synchronizer.test.d.ts.map +0 -1
- package/dist/lib/sync/seed-synchronizer.test.js +0 -147
- package/dist/lib/sync/seed-synchronizer.test.js.map +0 -1
- package/presets/default/.claude/skills/einja-api-development/SKILL.md +0 -14
- package/presets/default/.claude/skills/einja-backend-architecture/SKILL.md +0 -18
- package/presets/default/.claude/skills/einja-coding-standards/SKILL.md +0 -132
- package/presets/default/.claude/skills/einja-coding-standards/references/import-conventions.md +0 -69
- package/presets/default/.claude/skills/einja-coding-standards/references/naming-conventions.md +0 -107
- package/presets/default/.claude/skills/einja-coding-standards/references/prohibited-patterns.md +0 -169
- package/presets/default/.claude/skills/einja-coding-standards/references/typescript-rules.md +0 -247
- package/presets/default/.claude/skills/einja-component-design/SKILL.md +0 -109
- package/presets/default/.claude/skills/einja-component-design/references/directory-structure.md +0 -117
- package/presets/default/.claude/skills/einja-component-design/references/props-patterns.md +0 -159
- package/presets/default/.claude/skills/einja-component-design/references/styling-guide.md +0 -122
- package/presets/default/.claude/skills/einja-frontend-development/SKILL.md +0 -14
- package/presets/default/docs/einja/instructions/task-vibe-kanban-loop.md +0 -565
|
@@ -0,0 +1,348 @@
|
|
|
1
|
+
import { describe, expect, it } from "vitest";
|
|
2
|
+
import { ProjectPrivateSynchronizer } from "./project-private-synchronizer.js";
|
|
3
|
+
describe("ProjectPrivateSynchronizer", () => {
|
|
4
|
+
const synchronizer = new ProjectPrivateSynchronizer();
|
|
5
|
+
describe("syncProjectPrivateSections", () => {
|
|
6
|
+
it("ローカルに存在しないproject-privateセクションがテンプレートに存在する場合、ローカルに追加されること", () => {
|
|
7
|
+
// Given: ローカルにproject-privateがない
|
|
8
|
+
const localContent = `ローカル行1
|
|
9
|
+
ローカル行2`;
|
|
10
|
+
// Given: テンプレートにproject-privateがある
|
|
11
|
+
const templateContent = `テンプレート行1
|
|
12
|
+
<!-- @einja:project-private:start id="pp-1" -->
|
|
13
|
+
プロジェクト固有セクション1
|
|
14
|
+
<!-- @einja:project-private:end -->
|
|
15
|
+
テンプレート行2`;
|
|
16
|
+
// When: project-privateを同期
|
|
17
|
+
const result = synchronizer.syncProjectPrivateSections(localContent, templateContent);
|
|
18
|
+
// Then: ローカルの末尾にproject-privateが追加される
|
|
19
|
+
expect(result).toContain("ローカル行1");
|
|
20
|
+
expect(result).toContain("ローカル行2");
|
|
21
|
+
expect(result).toContain('<!-- @einja:project-private:start id="pp-1" -->');
|
|
22
|
+
expect(result).toContain("プロジェクト固有セクション1");
|
|
23
|
+
expect(result).toContain("<!-- @einja:project-private:end -->");
|
|
24
|
+
});
|
|
25
|
+
it("ローカルに既に存在するproject-privateセクションは上書きされないこと", () => {
|
|
26
|
+
// Given: ローカルにproject-privateがある
|
|
27
|
+
const localContent = `ローカル行1
|
|
28
|
+
<!-- @einja:project-private:start id="pp-1" -->
|
|
29
|
+
ローカルプロジェクト固有セクション1
|
|
30
|
+
<!-- @einja:project-private:end -->
|
|
31
|
+
ローカル行2`;
|
|
32
|
+
// Given: テンプレートに同じIDのproject-privateがある
|
|
33
|
+
const templateContent = `テンプレート行1
|
|
34
|
+
<!-- @einja:project-private:start id="pp-1" -->
|
|
35
|
+
テンプレートプロジェクト固有セクション1
|
|
36
|
+
<!-- @einja:project-private:end -->
|
|
37
|
+
テンプレート行2`;
|
|
38
|
+
// When: project-privateを同期
|
|
39
|
+
const result = synchronizer.syncProjectPrivateSections(localContent, templateContent);
|
|
40
|
+
// Then: ローカルがそのまま保持される
|
|
41
|
+
expect(result).toBe(localContent);
|
|
42
|
+
expect(result).toContain("ローカルプロジェクト固有セクション1");
|
|
43
|
+
expect(result).not.toContain("テンプレートプロジェクト固有セクション1");
|
|
44
|
+
});
|
|
45
|
+
it("ローカルに一部のproject-privateが存在し、テンプレートに新しいproject-privateがある場合、新しいproject-privateのみ追加されること", () => {
|
|
46
|
+
// Given: ローカルにpp-1がある
|
|
47
|
+
const localContent = `ローカル行1
|
|
48
|
+
<!-- @einja:project-private:start id="pp-1" -->
|
|
49
|
+
ローカルプロジェクト固有セクション1
|
|
50
|
+
<!-- @einja:project-private:end -->
|
|
51
|
+
ローカル行2`;
|
|
52
|
+
// Given: テンプレートにpp-1とpp-2がある
|
|
53
|
+
const templateContent = `テンプレート行1
|
|
54
|
+
<!-- @einja:project-private:start id="pp-1" -->
|
|
55
|
+
テンプレートプロジェクト固有セクション1
|
|
56
|
+
<!-- @einja:project-private:end -->
|
|
57
|
+
テンプレート行2
|
|
58
|
+
<!-- @einja:project-private:start id="pp-2" -->
|
|
59
|
+
テンプレートプロジェクト固有セクション2
|
|
60
|
+
<!-- @einja:project-private:end -->
|
|
61
|
+
テンプレート行3`;
|
|
62
|
+
// When: project-privateを同期
|
|
63
|
+
const result = synchronizer.syncProjectPrivateSections(localContent, templateContent);
|
|
64
|
+
// Then: pp-1はそのまま、pp-2が追加される
|
|
65
|
+
expect(result).toContain("ローカルプロジェクト固有セクション1");
|
|
66
|
+
expect(result).not.toContain("テンプレートプロジェクト固有セクション1");
|
|
67
|
+
expect(result).toContain('<!-- @einja:project-private:start id="pp-2" -->');
|
|
68
|
+
expect(result).toContain("テンプレートプロジェクト固有セクション2");
|
|
69
|
+
expect(result).toContain("<!-- @einja:project-private:end -->");
|
|
70
|
+
});
|
|
71
|
+
it("複数の新しいproject-privateセクションが追加される場合、全て追加されること", () => {
|
|
72
|
+
// Given: ローカルにproject-privateがない
|
|
73
|
+
const localContent = "ローカル行1";
|
|
74
|
+
// Given: テンプレートに複数のproject-privateがある
|
|
75
|
+
const templateContent = `テンプレート行1
|
|
76
|
+
<!-- @einja:project-private:start id="pp-1" -->
|
|
77
|
+
プロジェクト固有セクション1
|
|
78
|
+
<!-- @einja:project-private:end -->
|
|
79
|
+
テンプレート行2
|
|
80
|
+
<!-- @einja:project-private:start id="pp-2" -->
|
|
81
|
+
プロジェクト固有セクション2
|
|
82
|
+
<!-- @einja:project-private:end -->
|
|
83
|
+
テンプレート行3`;
|
|
84
|
+
// When: project-privateを同期
|
|
85
|
+
const result = synchronizer.syncProjectPrivateSections(localContent, templateContent);
|
|
86
|
+
// Then: 全てのproject-privateが追加される
|
|
87
|
+
expect(result).toContain('<!-- @einja:project-private:start id="pp-1" -->');
|
|
88
|
+
expect(result).toContain("プロジェクト固有セクション1");
|
|
89
|
+
expect(result).toContain('<!-- @einja:project-private:start id="pp-2" -->');
|
|
90
|
+
expect(result).toContain("プロジェクト固有セクション2");
|
|
91
|
+
});
|
|
92
|
+
it("managedセクションとproject-privateセクションが混在する場合、project-privateのみが同期対象となること", () => {
|
|
93
|
+
// Given: ローカルにmanagedとproject-privateがある
|
|
94
|
+
const localContent = `ローカル行1
|
|
95
|
+
<!-- @einja:managed:start -->
|
|
96
|
+
ローカル管理セクション
|
|
97
|
+
<!-- @einja:managed:end -->
|
|
98
|
+
<!-- @einja:project-private:start id="pp-1" -->
|
|
99
|
+
ローカルプロジェクト固有セクション
|
|
100
|
+
<!-- @einja:project-private:end -->
|
|
101
|
+
ローカル行2`;
|
|
102
|
+
// Given: テンプレートにmanagedとpp-1、pp-2がある
|
|
103
|
+
const templateContent = `テンプレート行1
|
|
104
|
+
<!-- @einja:managed:start -->
|
|
105
|
+
テンプレート管理セクション
|
|
106
|
+
<!-- @einja:managed:end -->
|
|
107
|
+
<!-- @einja:project-private:start id="pp-1" -->
|
|
108
|
+
テンプレートプロジェクト固有セクション1
|
|
109
|
+
<!-- @einja:project-private:end -->
|
|
110
|
+
<!-- @einja:project-private:start id="pp-2" -->
|
|
111
|
+
テンプレートプロジェクト固有セクション2
|
|
112
|
+
<!-- @einja:project-private:end -->
|
|
113
|
+
テンプレート行2`;
|
|
114
|
+
// When: project-privateを同期
|
|
115
|
+
const result = synchronizer.syncProjectPrivateSections(localContent, templateContent);
|
|
116
|
+
// Then: pp-2のみ追加、pp-1とmanagedは元のまま
|
|
117
|
+
expect(result).toContain("ローカル管理セクション");
|
|
118
|
+
expect(result).toContain("ローカルプロジェクト固有セクション");
|
|
119
|
+
expect(result).not.toContain("テンプレートプロジェクト固有セクション1");
|
|
120
|
+
expect(result).toContain('<!-- @einja:project-private:start id="pp-2" -->');
|
|
121
|
+
expect(result).toContain("テンプレートプロジェクト固有セクション2");
|
|
122
|
+
});
|
|
123
|
+
});
|
|
124
|
+
describe("syncUnmarkedFile", () => {
|
|
125
|
+
it("ローカルにファイルが存在しない場合、テンプレート内容を返すこと", () => {
|
|
126
|
+
// Given: ローカルにファイルが存在しない
|
|
127
|
+
const localExists = false;
|
|
128
|
+
const templateContent = `テンプレート行1
|
|
129
|
+
テンプレート行2`;
|
|
130
|
+
// When: マーカーなしファイルを同期
|
|
131
|
+
const result = synchronizer.syncUnmarkedFile(localExists, templateContent);
|
|
132
|
+
// Then: テンプレート内容が返る
|
|
133
|
+
expect(result).toBe(templateContent);
|
|
134
|
+
});
|
|
135
|
+
it("ローカルにファイルが存在する場合、nullを返すこと(何もしない)", () => {
|
|
136
|
+
// Given: ローカルにファイルが存在する
|
|
137
|
+
const localExists = true;
|
|
138
|
+
const templateContent = `テンプレート行1
|
|
139
|
+
テンプレート行2`;
|
|
140
|
+
// When: マーカーなしファイルを同期
|
|
141
|
+
const result = synchronizer.syncUnmarkedFile(localExists, templateContent);
|
|
142
|
+
// Then: nullが返る(何もしない)
|
|
143
|
+
expect(result).toBeNull();
|
|
144
|
+
});
|
|
145
|
+
});
|
|
146
|
+
describe("syncProjectPrivateOnlyFile", () => {
|
|
147
|
+
it("managedなしファイルで本文の3方向マージとproject-private保持が行われること", () => {
|
|
148
|
+
const localContent = `# ドキュメント
|
|
149
|
+
|
|
150
|
+
本文がローカルで変更されました
|
|
151
|
+
|
|
152
|
+
<!-- @einja:project-private:start id="pp-1" -->
|
|
153
|
+
## プロジェクト固有設定
|
|
154
|
+
ローカルの固有内容
|
|
155
|
+
<!-- @einja:project-private:end -->`;
|
|
156
|
+
const templateContent = `# ドキュメント
|
|
157
|
+
|
|
158
|
+
本文がテンプレートで更新されました
|
|
159
|
+
|
|
160
|
+
<!-- @einja:project-private:start id="pp-1" -->
|
|
161
|
+
## プロジェクト固有設定
|
|
162
|
+
テンプレートのデフォルト内容
|
|
163
|
+
<!-- @einja:project-private:end -->`;
|
|
164
|
+
const baseContent = `# ドキュメント
|
|
165
|
+
|
|
166
|
+
元の本文
|
|
167
|
+
|
|
168
|
+
<!-- @einja:project-private:start id="pp-1" -->
|
|
169
|
+
## プロジェクト固有設定
|
|
170
|
+
テンプレートのデフォルト内容
|
|
171
|
+
<!-- @einja:project-private:end -->`;
|
|
172
|
+
const mockDiffEngine = {
|
|
173
|
+
merge3Way: (base, local, template) => ({
|
|
174
|
+
success: true,
|
|
175
|
+
content: template, // テンプレート側を採用(baseからlocalは変更なし想定時)
|
|
176
|
+
conflicts: [],
|
|
177
|
+
}),
|
|
178
|
+
};
|
|
179
|
+
const result = synchronizer.syncProjectPrivateOnlyFile(localContent, templateContent, baseContent, mockDiffEngine);
|
|
180
|
+
// project-privateセクションはローカル版が保持される
|
|
181
|
+
expect(result.content).toContain("ローカルの固有内容");
|
|
182
|
+
expect(result.content).not.toContain("テンプレートのデフォルト内容");
|
|
183
|
+
expect(result.success).toBe(true);
|
|
184
|
+
});
|
|
185
|
+
it("ローカルにproject-privateがない場合、テンプレート版がseedされること", () => {
|
|
186
|
+
const localContent = `# ドキュメント
|
|
187
|
+
|
|
188
|
+
ローカル本文`;
|
|
189
|
+
const templateContent = `# ドキュメント
|
|
190
|
+
|
|
191
|
+
テンプレート本文
|
|
192
|
+
|
|
193
|
+
<!-- @einja:project-private:start id="pp-1" -->
|
|
194
|
+
## プロジェクト固有設定
|
|
195
|
+
デフォルト内容
|
|
196
|
+
<!-- @einja:project-private:end -->`;
|
|
197
|
+
const baseContent = `# ドキュメント
|
|
198
|
+
|
|
199
|
+
元の本文`;
|
|
200
|
+
const mockDiffEngine = {
|
|
201
|
+
merge3Way: (_base, _local, template) => ({
|
|
202
|
+
success: true,
|
|
203
|
+
content: template,
|
|
204
|
+
conflicts: [],
|
|
205
|
+
}),
|
|
206
|
+
};
|
|
207
|
+
const result = synchronizer.syncProjectPrivateOnlyFile(localContent, templateContent, baseContent, mockDiffEngine);
|
|
208
|
+
// テンプレートのproject-privateがseedされる
|
|
209
|
+
expect(result.content).toContain("デフォルト内容");
|
|
210
|
+
expect(result.success).toBe(true);
|
|
211
|
+
});
|
|
212
|
+
});
|
|
213
|
+
describe("legacy @einja:seed マーカーとの互換性", () => {
|
|
214
|
+
describe("syncProjectPrivateSections", () => {
|
|
215
|
+
it("ローカルがlegacy seed → ID認識して重複追加しない", () => {
|
|
216
|
+
// Given: ローカルにlegacy seedマーカーがある
|
|
217
|
+
const localContent = `ローカル行1
|
|
218
|
+
<!-- @einja:seed:start id="intro" -->
|
|
219
|
+
ユーザーコンテンツ
|
|
220
|
+
<!-- @einja:seed:end -->
|
|
221
|
+
ローカル行2`;
|
|
222
|
+
// Given: テンプレートに同じIDのproject-privateがある
|
|
223
|
+
const templateContent = `テンプレート行1
|
|
224
|
+
<!-- @einja:project-private:start id="intro" -->
|
|
225
|
+
デフォルト
|
|
226
|
+
<!-- @einja:project-private:end -->
|
|
227
|
+
テンプレート行2`;
|
|
228
|
+
// When: project-privateを同期
|
|
229
|
+
const result = synchronizer.syncProjectPrivateSections(localContent, templateContent);
|
|
230
|
+
// Then: ローカルがそのまま返る(テンプレートで上書きしない)
|
|
231
|
+
expect(result).toBe(localContent);
|
|
232
|
+
expect(result).toContain("ユーザーコンテンツ");
|
|
233
|
+
expect(result).not.toContain("デフォルト");
|
|
234
|
+
});
|
|
235
|
+
it("ローカルがlegacy seed + テンプレートが新規PP → 新規のみ追加", () => {
|
|
236
|
+
// Given: ローカルにlegacy seedのintroがある
|
|
237
|
+
const localContent = `ローカル行1
|
|
238
|
+
<!-- @einja:seed:start id="intro" -->
|
|
239
|
+
ユーザーコンテンツ
|
|
240
|
+
<!-- @einja:seed:end -->
|
|
241
|
+
ローカル行2`;
|
|
242
|
+
// Given: テンプレートにintroと新しいnew-sectionがある
|
|
243
|
+
const templateContent = `テンプレート行1
|
|
244
|
+
<!-- @einja:project-private:start id="intro" -->
|
|
245
|
+
デフォルト
|
|
246
|
+
<!-- @einja:project-private:end -->
|
|
247
|
+
テンプレート行2
|
|
248
|
+
<!-- @einja:project-private:start id="new-section" -->
|
|
249
|
+
新しいセクション
|
|
250
|
+
<!-- @einja:project-private:end -->
|
|
251
|
+
テンプレート行3`;
|
|
252
|
+
// When: project-privateを同期
|
|
253
|
+
const result = synchronizer.syncProjectPrivateSections(localContent, templateContent);
|
|
254
|
+
// Then: ローカルのseedセクションは保持される
|
|
255
|
+
expect(result).toContain("ユーザーコンテンツ");
|
|
256
|
+
expect(result).not.toContain("デフォルト");
|
|
257
|
+
// Then: 新しいnew-sectionのみ追加される
|
|
258
|
+
expect(result).toContain('<!-- @einja:project-private:start id="new-section" -->');
|
|
259
|
+
expect(result).toContain("新しいセクション");
|
|
260
|
+
});
|
|
261
|
+
});
|
|
262
|
+
describe("syncProjectPrivateOnlyFile", () => {
|
|
263
|
+
it("legacy seedファイル → PP抽出・本文マージ・PP再付加が動く", () => {
|
|
264
|
+
// Given: ローカルにlegacy seedマーカーがある
|
|
265
|
+
const localContent = `# ドキュメント
|
|
266
|
+
|
|
267
|
+
本文がローカルで変更されました
|
|
268
|
+
|
|
269
|
+
<!-- @einja:seed:start id="custom" -->
|
|
270
|
+
カスタム内容
|
|
271
|
+
<!-- @einja:seed:end -->`;
|
|
272
|
+
// Given: テンプレートにproject-privateマーカーがある
|
|
273
|
+
const templateContent = `# ドキュメント
|
|
274
|
+
|
|
275
|
+
本文がテンプレートで更新されました
|
|
276
|
+
|
|
277
|
+
<!-- @einja:project-private:start id="custom" -->
|
|
278
|
+
デフォルト
|
|
279
|
+
<!-- @einja:project-private:end -->`;
|
|
280
|
+
// Given: ベースにproject-privateマーカーがある
|
|
281
|
+
const baseContent = `# ドキュメント
|
|
282
|
+
|
|
283
|
+
元の本文
|
|
284
|
+
|
|
285
|
+
<!-- @einja:project-private:start id="custom" -->
|
|
286
|
+
デフォルト
|
|
287
|
+
<!-- @einja:project-private:end -->`;
|
|
288
|
+
const mockDiffEngine = {
|
|
289
|
+
merge3Way: (_base, _local, template) => ({
|
|
290
|
+
success: true,
|
|
291
|
+
content: template,
|
|
292
|
+
conflicts: [],
|
|
293
|
+
}),
|
|
294
|
+
};
|
|
295
|
+
// When: syncProjectPrivateOnlyFileを実行
|
|
296
|
+
const result = synchronizer.syncProjectPrivateOnlyFile(localContent, templateContent, baseContent, mockDiffEngine);
|
|
297
|
+
// Then: マージが成功する
|
|
298
|
+
expect(result.success).toBe(true);
|
|
299
|
+
// Then: ローカルのlegacy seedセクション内容が保持される
|
|
300
|
+
expect(result.content).toContain("カスタム内容");
|
|
301
|
+
// Then: テンプレートのデフォルト内容で上書きされない
|
|
302
|
+
expect(result.content).not.toContain("デフォルト");
|
|
303
|
+
});
|
|
304
|
+
it("legacy seedの空セクション → 存在扱い(テンプレートでseedしない)", () => {
|
|
305
|
+
// Given: ローカルにlegacy seedの空セクションがある
|
|
306
|
+
const localContent = `# ドキュメント
|
|
307
|
+
|
|
308
|
+
本文
|
|
309
|
+
|
|
310
|
+
<!-- @einja:seed:start id="custom" -->
|
|
311
|
+
<!-- @einja:seed:end -->`;
|
|
312
|
+
// Given: テンプレートにproject-privateマーカーがある
|
|
313
|
+
const templateContent = `# ドキュメント
|
|
314
|
+
|
|
315
|
+
本文
|
|
316
|
+
|
|
317
|
+
<!-- @einja:project-private:start id="custom" -->
|
|
318
|
+
デフォルト内容
|
|
319
|
+
<!-- @einja:project-private:end -->`;
|
|
320
|
+
// Given: ベースにproject-privateマーカーがある
|
|
321
|
+
const baseContent = `# ドキュメント
|
|
322
|
+
|
|
323
|
+
本文
|
|
324
|
+
|
|
325
|
+
<!-- @einja:project-private:start id="custom" -->
|
|
326
|
+
デフォルト内容
|
|
327
|
+
<!-- @einja:project-private:end -->`;
|
|
328
|
+
const mockDiffEngine = {
|
|
329
|
+
merge3Way: (_base, _local, template) => ({
|
|
330
|
+
success: true,
|
|
331
|
+
content: template,
|
|
332
|
+
conflicts: [],
|
|
333
|
+
}),
|
|
334
|
+
};
|
|
335
|
+
// When: syncProjectPrivateOnlyFileを実行
|
|
336
|
+
const result = synchronizer.syncProjectPrivateOnlyFile(localContent, templateContent, baseContent, mockDiffEngine);
|
|
337
|
+
// Then: マージが成功する
|
|
338
|
+
expect(result.success).toBe(true);
|
|
339
|
+
// Then: ローカルの空seedセクションが保持される(テンプレート版でseedしない)
|
|
340
|
+
expect(result.content).toContain('<!-- @einja:seed:start id="custom" -->');
|
|
341
|
+
expect(result.content).toContain("<!-- @einja:seed:end -->");
|
|
342
|
+
// Then: テンプレートのデフォルト内容は含まれない
|
|
343
|
+
expect(result.content).not.toContain("デフォルト内容");
|
|
344
|
+
});
|
|
345
|
+
});
|
|
346
|
+
});
|
|
347
|
+
});
|
|
348
|
+
//# sourceMappingURL=project-private-synchronizer.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"project-private-synchronizer.test.js","sourceRoot":"","sources":["../../../src/lib/sync/project-private-synchronizer.test.ts"],"names":[],"mappings":"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"}
|
package/dist/types/index.d.ts
CHANGED
|
@@ -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;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;
|
|
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;IACnB,KAAK,CAAC,EAAE,OAAO,CAAC;CACjB;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"}
|
package/dist/types/sync.d.ts
CHANGED
|
@@ -10,11 +10,11 @@ export declare const FileMetadataSchema: z.ZodObject<{
|
|
|
10
10
|
/**
|
|
11
11
|
* JSON パス設定の Zod スキーマ
|
|
12
12
|
* managed: テンプレート値で上書き
|
|
13
|
-
*
|
|
13
|
+
* project-private: ローカル優先(キーが存在しない場合のみコピー)
|
|
14
14
|
*/
|
|
15
15
|
export declare const JsonPathsConfigSchema: z.ZodObject<{
|
|
16
16
|
managed: z.ZodRecord<z.ZodString, z.ZodArray<z.ZodString>>;
|
|
17
|
-
|
|
17
|
+
"project-private": z.ZodRecord<z.ZodString, z.ZodArray<z.ZodString>>;
|
|
18
18
|
}, z.core.$strip>;
|
|
19
19
|
/**
|
|
20
20
|
* 同期メタデータのZodスキーマ
|
|
@@ -30,7 +30,7 @@ export declare const SyncMetadataSchema: z.ZodObject<{
|
|
|
30
30
|
}, z.core.$strip>>;
|
|
31
31
|
jsonPaths: z.ZodOptional<z.ZodObject<{
|
|
32
32
|
managed: z.ZodRecord<z.ZodString, z.ZodArray<z.ZodString>>;
|
|
33
|
-
|
|
33
|
+
"project-private": z.ZodRecord<z.ZodString, z.ZodArray<z.ZodString>>;
|
|
34
34
|
}, z.core.$strip>>;
|
|
35
35
|
}, z.core.$strip>;
|
|
36
36
|
/**
|
|
@@ -99,11 +99,11 @@ export interface MergeResult {
|
|
|
99
99
|
/**
|
|
100
100
|
* マーカーセクションの種別
|
|
101
101
|
*/
|
|
102
|
-
export type MarkerSectionType = "managed" | "unmanaged" | "
|
|
102
|
+
export type MarkerSectionType = "managed" | "unmanaged" | "project-private";
|
|
103
103
|
/**
|
|
104
104
|
* マーカーエラーの種別
|
|
105
105
|
*/
|
|
106
|
-
export type MarkerErrorType = "unpaired_start" | "unpaired_end" | "nested" | "
|
|
106
|
+
export type MarkerErrorType = "unpaired_start" | "unpaired_end" | "nested" | "project_private_without_id" | "duplicate_id";
|
|
107
107
|
/**
|
|
108
108
|
* マーカーセクションの型定義
|
|
109
109
|
*/
|
|
@@ -116,7 +116,7 @@ export interface MarkerSection {
|
|
|
116
116
|
endLine: number;
|
|
117
117
|
/** セクション内容 */
|
|
118
118
|
content: string;
|
|
119
|
-
/** セクションID(managedまたは
|
|
119
|
+
/** セクションID(managedまたはproject-privateマーカーにID属性がある場合) */
|
|
120
120
|
id?: string;
|
|
121
121
|
}
|
|
122
122
|
/**
|
|
@@ -174,6 +174,10 @@ export interface JsonOutput {
|
|
|
174
174
|
conflicts: number;
|
|
175
175
|
/** スキップされたファイル数 */
|
|
176
176
|
skipped: number;
|
|
177
|
+
/** 孤児検出数 */
|
|
178
|
+
orphansDetected?: number;
|
|
179
|
+
/** 孤児削除数 */
|
|
180
|
+
orphansDeleted?: number;
|
|
177
181
|
};
|
|
178
182
|
/** ファイル情報の配列 */
|
|
179
183
|
files: JsonFileInfo[];
|
|
@@ -184,5 +188,31 @@ export interface JsonOutput {
|
|
|
184
188
|
/** 同期実行日時 */
|
|
185
189
|
syncedAt: string;
|
|
186
190
|
};
|
|
191
|
+
/** 孤児ファイル情報 */
|
|
192
|
+
orphans?: OrphanFile[];
|
|
193
|
+
}
|
|
194
|
+
/**
|
|
195
|
+
* 孤児ファイルの型定義
|
|
196
|
+
*/
|
|
197
|
+
export interface OrphanFile {
|
|
198
|
+
/** ファイルパス */
|
|
199
|
+
path: string;
|
|
200
|
+
/** カテゴリ */
|
|
201
|
+
category: string | null;
|
|
202
|
+
/** ディスク上に実在するか */
|
|
203
|
+
exists: boolean;
|
|
204
|
+
}
|
|
205
|
+
/**
|
|
206
|
+
* 孤児レポートの型定義
|
|
207
|
+
*/
|
|
208
|
+
export interface OrphanReport {
|
|
209
|
+
/** 孤児が存在するか */
|
|
210
|
+
hasOrphans: boolean;
|
|
211
|
+
/** 孤児ファイル一覧 */
|
|
212
|
+
orphans: OrphanFile[];
|
|
213
|
+
/** 孤児ファイル総数 */
|
|
214
|
+
total: number;
|
|
215
|
+
/** ディスク上に実在する孤児の数 */
|
|
216
|
+
existingCount: number;
|
|
187
217
|
}
|
|
188
218
|
//# sourceMappingURL=sync.d.ts.map
|
package/dist/types/sync.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sync.d.ts","sourceRoot":"","sources":["../../src/types/sync.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB;;GAEG;AACH,eAAO,MAAM,kBAAkB;;;;iBAI7B,CAAC;AAEH;;;;GAIG;AACH,eAAO,MAAM,qBAAqB;;;iBAGhC,CAAC;AAEH;;GAEG;AACH,eAAO,MAAM,kBAAkB;;;;;;;;;;;;;iBAM7B,CAAC;AAEH;;GAEG;AACH,MAAM,MAAM,YAAY,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,kBAAkB,CAAC,CAAC;AAE9D;;GAEG;AACH,MAAM,MAAM,eAAe,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,qBAAqB,CAAC,CAAC;AAEpE;;GAEG;AACH,MAAM,MAAM,YAAY,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,kBAAkB,CAAC,CAAC;AAE9D;;GAEG;AACH,MAAM,WAAW,WAAW;IAC1B,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,MAAM,CAAC;CACd;AAED;;GAEG;AACH,MAAM,WAAW,WAAW;IAC1B,qBAAqB;IACrB,UAAU,CAAC,EAAE,MAAM,EAAE,CAAC;IACtB,oBAAoB;IACpB,eAAe,CAAC,EAAE,MAAM,EAAE,CAAC;CAC5B;AAED;;GAEG;AACH,MAAM,WAAW,UAAU;IACzB,WAAW;IACX,IAAI,EAAE,MAAM,CAAC;IACb,WAAW;IACX,QAAQ,EAAE,MAAM,CAAC;IACjB,mBAAmB;IACnB,YAAY,EAAE,MAAM,CAAC;IACrB,iBAAiB;IACjB,MAAM,EAAE,OAAO,CAAC;CACjB;AAED;;GAEG;AACH,MAAM,WAAW,QAAQ;IACvB,qBAAqB;IACrB,IAAI,EAAE,MAAM,CAAC;IACb,eAAe;IACf,YAAY,EAAE,MAAM,CAAC;IACrB,iBAAiB;IACjB,eAAe,EAAE,MAAM,CAAC;CACzB;AAED;;GAEG;AACH,MAAM,WAAW,WAAW;IAC1B,0BAA0B;IAC1B,OAAO,EAAE,OAAO,CAAC;IACjB,cAAc;IACd,OAAO,EAAE,MAAM,CAAC;IAChB,eAAe;IACf,SAAS,EAAE,QAAQ,EAAE,CAAC;CACvB;AAED;;GAEG;AACH,MAAM,MAAM,iBAAiB,GAAG,SAAS,GAAG,WAAW,GAAG,
|
|
1
|
+
{"version":3,"file":"sync.d.ts","sourceRoot":"","sources":["../../src/types/sync.ts"],"names":[],"mappings":"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"}
|
package/dist/types/sync.js
CHANGED
|
@@ -10,11 +10,11 @@ export const FileMetadataSchema = z.object({
|
|
|
10
10
|
/**
|
|
11
11
|
* JSON パス設定の Zod スキーマ
|
|
12
12
|
* managed: テンプレート値で上書き
|
|
13
|
-
*
|
|
13
|
+
* project-private: ローカル優先(キーが存在しない場合のみコピー)
|
|
14
14
|
*/
|
|
15
15
|
export const JsonPathsConfigSchema = z.object({
|
|
16
16
|
managed: z.record(z.string(), z.array(z.string())),
|
|
17
|
-
|
|
17
|
+
"project-private": z.record(z.string(), z.array(z.string())),
|
|
18
18
|
});
|
|
19
19
|
/**
|
|
20
20
|
* 同期メタデータのZodスキーマ
|
package/dist/types/sync.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sync.js","sourceRoot":"","sources":["../../src/types/sync.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB;;GAEG;AACH,MAAM,CAAC,MAAM,kBAAkB,GAAG,CAAC,CAAC,MAAM,CAAC;IACzC,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE;IAChB,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE;IACpB,SAAS,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,QAAQ,EAAE;CAC1C,CAAC,CAAC;AAEH;;;;GAIG;AACH,MAAM,CAAC,MAAM,qBAAqB,GAAG,CAAC,CAAC,MAAM,CAAC;IAC5C,OAAO,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC;IAClD,
|
|
1
|
+
{"version":3,"file":"sync.js","sourceRoot":"","sources":["../../src/types/sync.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB;;GAEG;AACH,MAAM,CAAC,MAAM,kBAAkB,GAAG,CAAC,CAAC,MAAM,CAAC;IACzC,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE;IAChB,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE;IACpB,SAAS,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,QAAQ,EAAE;CAC1C,CAAC,CAAC;AAEH;;;;GAIG;AACH,MAAM,CAAC,MAAM,qBAAqB,GAAG,CAAC,CAAC,MAAM,CAAC;IAC5C,OAAO,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC;IAClD,iBAAiB,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC;CAC7D,CAAC,CAAC;AAEH;;GAEG;AACH,MAAM,CAAC,MAAM,kBAAkB,GAAG,CAAC,CAAC,MAAM,CAAC;IACzC,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE;IACnB,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE;IACpB,eAAe,EAAE,CAAC,CAAC,MAAM,EAAE;IAC3B,KAAK,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,EAAE,EAAE,kBAAkB,CAAC;IAC/C,SAAS,EAAE,qBAAqB,CAAC,QAAQ,EAAE;CAC5C,CAAC,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@einja/dev-cli",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.41",
|
|
4
4
|
"description": "Einja CLI - .claude設定とテンプレート同期をnpxでインストール",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "./dist/index.js",
|
|
@@ -34,6 +34,7 @@
|
|
|
34
34
|
"@types/fs-extra": "^11.0.4",
|
|
35
35
|
"@types/js-yaml": "^4.0.9",
|
|
36
36
|
"@types/node": "^22.18.13",
|
|
37
|
+
"tsc-alias": "^1.8.16",
|
|
37
38
|
"typescript": "^5",
|
|
38
39
|
"vitest": "^2.1.9",
|
|
39
40
|
"@repo/config": "0.1.0"
|
|
@@ -60,7 +61,7 @@
|
|
|
60
61
|
"scripts": {
|
|
61
62
|
"clean": "rm -rf dist tsconfig.tsbuildinfo",
|
|
62
63
|
"prebuild": "node ./scripts/generate-template.mjs && node ./scripts/copy-presets.mjs",
|
|
63
|
-
"build": "pnpm clean && tsc",
|
|
64
|
+
"build": "pnpm clean && tsc && tsc-alias",
|
|
64
65
|
"postbuild": "node ./scripts/add-shebang.mjs",
|
|
65
66
|
"dev": "tsc --watch",
|
|
66
67
|
"typecheck": "tsc --noEmit",
|
|
@@ -68,7 +69,7 @@
|
|
|
68
69
|
"format": "biome format ./src",
|
|
69
70
|
"test": "vitest run --passWithNoTests",
|
|
70
71
|
"test:watch": "vitest --passWithNoTests",
|
|
71
|
-
"preset:update": "tsx ../../scripts/
|
|
72
|
-
"scaffold:update": "tsx ../../scripts/
|
|
72
|
+
"preset:update": "tsx ../../scripts/_cli-template-update.ts",
|
|
73
|
+
"scaffold:update": "tsx ../../scripts/_template-update.ts"
|
|
73
74
|
}
|
|
74
75
|
}
|