codesyncer 3.0.1 → 3.1.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.ko.md +24 -0
- package/README.md +24 -0
- package/dist/commands/update.d.ts.map +1 -1
- package/dist/commands/update.js +136 -0
- package/dist/commands/update.js.map +1 -1
- package/dist/templates/en/architecture.md +2 -0
- package/dist/templates/en/claude.md +2 -0
- package/dist/templates/en/comment_guide.md +2 -0
- package/dist/templates/en/decisions.md +2 -0
- package/dist/templates/en/master.md +2 -0
- package/dist/templates/en/root_claude.md +2 -0
- package/dist/templates/en/setup_guide.md +2 -0
- package/dist/templates/en/setup_guide_monorepo.md +2 -0
- package/dist/templates/en/setup_guide_single.md +2 -0
- package/dist/templates/ko/architecture.md +2 -0
- package/dist/templates/ko/claude.md +2 -0
- package/dist/templates/ko/comment_guide.md +2 -0
- package/dist/templates/ko/decisions.md +2 -0
- package/dist/templates/ko/master.md +2 -0
- package/dist/templates/ko/root_claude.md +2 -0
- package/dist/templates/ko/setup_guide.md +2 -0
- package/dist/templates/ko/setup_guide_monorepo.md +2 -0
- package/dist/templates/ko/setup_guide_single.md +2 -0
- package/dist/utils/template-upgrader.d.ts +72 -0
- package/dist/utils/template-upgrader.d.ts.map +1 -0
- package/dist/utils/template-upgrader.js +249 -0
- package/dist/utils/template-upgrader.js.map +1 -0
- package/dist/utils/template-version.d.ts +64 -0
- package/dist/utils/template-version.d.ts.map +1 -0
- package/dist/utils/template-version.js +177 -0
- package/dist/utils/template-version.js.map +1 -0
- package/package.json +1 -1
- package/src/templates/en/architecture.md +2 -0
- package/src/templates/en/claude.md +2 -0
- package/src/templates/en/comment_guide.md +2 -0
- package/src/templates/en/decisions.md +2 -0
- package/src/templates/en/master.md +2 -0
- package/src/templates/en/root_claude.md +2 -0
- package/src/templates/en/setup_guide.md +2 -0
- package/src/templates/en/setup_guide_monorepo.md +2 -0
- package/src/templates/en/setup_guide_single.md +2 -0
- package/src/templates/ko/architecture.md +2 -0
- package/src/templates/ko/claude.md +2 -0
- package/src/templates/ko/comment_guide.md +2 -0
- package/src/templates/ko/decisions.md +2 -0
- package/src/templates/ko/master.md +2 -0
- package/src/templates/ko/root_claude.md +2 -0
- package/src/templates/ko/setup_guide.md +2 -0
- package/src/templates/ko/setup_guide_monorepo.md +2 -0
- package/src/templates/ko/setup_guide_single.md +2 -0
package/README.ko.md
CHANGED
|
@@ -237,6 +237,7 @@ codesyncer validate --verbose # 파일 경로 표시
|
|
|
237
237
|
3. ✅ 언어 설정 자동 감지 (한국어/영어)
|
|
238
238
|
4. ✅ 새 파일 생성 전 사용자 확인 요청
|
|
239
239
|
5. ✅ 기존 커스터마이징 내용 보존
|
|
240
|
+
6. ✅ **v3.1.0 신규**: 구버전 템플릿 감지 및 업그레이드 제안
|
|
240
241
|
|
|
241
242
|
**출력 예시:**
|
|
242
243
|
```
|
|
@@ -264,6 +265,29 @@ This file allows Claude to automatically load context at session start.
|
|
|
264
265
|
✅ Update complete!
|
|
265
266
|
```
|
|
266
267
|
|
|
268
|
+
#### 템플릿 업그레이드 (v3.1.0 신규)
|
|
269
|
+
|
|
270
|
+
CodeSyncer를 새 버전으로 업데이트하면, 기존 템플릿 파일이 구버전일 수 있습니다. `update` 명령어가 이를 자동으로 감지합니다:
|
|
271
|
+
|
|
272
|
+
```
|
|
273
|
+
📦 새 버전 감지: v3.1.0
|
|
274
|
+
|
|
275
|
+
📁 my-project/
|
|
276
|
+
• CLAUDE.md (v3.0.0 → v3.1.0)
|
|
277
|
+
• COMMENT_GUIDE.md (버전 없음 → v3.1.0)
|
|
278
|
+
|
|
279
|
+
? 2개 템플릿을 업그레이드할까요?
|
|
280
|
+
> 예 - 업그레이드 (기존 파일 .backup으로 백업)
|
|
281
|
+
아니오 - 건너뛰기
|
|
282
|
+
미리보기 - 변경 파일만 확인
|
|
283
|
+
```
|
|
284
|
+
|
|
285
|
+
**기능:**
|
|
286
|
+
- 🔍 버전 메타데이터를 읽어 구버전 템플릿 자동 감지
|
|
287
|
+
- 💾 업그레이드 전 `.backup` 파일 생성 (예: `CLAUDE.md.backup.2024-01-17`)
|
|
288
|
+
- 📋 업그레이드 시 프로젝트 변수 (프로젝트 이름, 기술 스택) 보존
|
|
289
|
+
- 👁️ 변경 사항을 미리 확인하는 미리보기 옵션
|
|
290
|
+
|
|
267
291
|
**`codesyncer update` 실행 후:**
|
|
268
292
|
|
|
269
293
|
다음 중 하나를 선택하여 변경사항을 적용하세요:
|
package/README.md
CHANGED
|
@@ -237,6 +237,7 @@ Sync your project with the latest templates and features:
|
|
|
237
237
|
3. ✅ Auto-detects your language settings (English/Korean)
|
|
238
238
|
4. ✅ Prompts before creating any new files
|
|
239
239
|
5. ✅ Preserves your existing customizations
|
|
240
|
+
6. ✅ **NEW in v3.1.0**: Detects outdated templates and offers upgrade
|
|
240
241
|
|
|
241
242
|
**Example output:**
|
|
242
243
|
```
|
|
@@ -264,6 +265,29 @@ Option 2) Apply immediately in current session
|
|
|
264
265
|
✅ Update complete!
|
|
265
266
|
```
|
|
266
267
|
|
|
268
|
+
#### Template Upgrade (NEW in v3.1.0)
|
|
269
|
+
|
|
270
|
+
When you update CodeSyncer to a new version, your existing template files may be outdated. The `update` command now automatically detects this:
|
|
271
|
+
|
|
272
|
+
```
|
|
273
|
+
📦 New Version Detected: v3.1.0
|
|
274
|
+
|
|
275
|
+
📁 my-project/
|
|
276
|
+
• CLAUDE.md (v3.0.0 → v3.1.0)
|
|
277
|
+
• COMMENT_GUIDE.md (no version → v3.1.0)
|
|
278
|
+
|
|
279
|
+
? Upgrade 2 template(s)?
|
|
280
|
+
> Yes - Upgrade (backup existing files to .backup)
|
|
281
|
+
No - Skip
|
|
282
|
+
Preview - Show files only
|
|
283
|
+
```
|
|
284
|
+
|
|
285
|
+
**Features:**
|
|
286
|
+
- 🔍 Automatically detects outdated templates by reading version metadata
|
|
287
|
+
- 💾 Creates `.backup` files before upgrading (e.g., `CLAUDE.md.backup.2024-01-17`)
|
|
288
|
+
- 📋 Preserves project variables (project name, tech stack) during upgrade
|
|
289
|
+
- 👁️ Preview option to see what would change
|
|
290
|
+
|
|
267
291
|
**After running `codesyncer update`:**
|
|
268
292
|
|
|
269
293
|
Choose one of these options to apply changes:
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"update.d.ts","sourceRoot":"","sources":["../../src/commands/update.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,aAAa,EAA4B,MAAM,UAAU,CAAC;
|
|
1
|
+
{"version":3,"file":"update.d.ts","sourceRoot":"","sources":["../../src/commands/update.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,aAAa,EAA4B,MAAM,UAAU,CAAC;AAgBnE,wBAAsB,aAAa,CAAC,OAAO,EAAE,aAAa,iBA2wBzD"}
|
package/dist/commands/update.js
CHANGED
|
@@ -44,6 +44,8 @@ const fs = __importStar(require("fs-extra"));
|
|
|
44
44
|
const path = __importStar(require("path"));
|
|
45
45
|
const scanner_1 = require("../utils/scanner");
|
|
46
46
|
const monorepo_helpers_1 = require("../utils/monorepo-helpers");
|
|
47
|
+
const template_version_1 = require("../utils/template-version");
|
|
48
|
+
const template_upgrader_1 = require("../utils/template-upgrader");
|
|
47
49
|
async function updateCommand(options) {
|
|
48
50
|
const isDryRun = options.dryRun || false;
|
|
49
51
|
if (isDryRun) {
|
|
@@ -770,6 +772,8 @@ rm .codesyncer/UPDATE_GUIDE.md
|
|
|
770
772
|
}
|
|
771
773
|
}
|
|
772
774
|
}
|
|
775
|
+
// Template Upgrade Check
|
|
776
|
+
await checkAndOfferTemplateUpgrade(currentDir, foundRepos, lang, isDryRun);
|
|
773
777
|
if (isDryRun) {
|
|
774
778
|
console.log(chalk_1.default.bold.yellow('\n✅ Dry run complete! No files were modified.\n'));
|
|
775
779
|
console.log(chalk_1.default.gray('Run without --dry-run to apply changes.\n'));
|
|
@@ -778,4 +782,136 @@ rm .codesyncer/UPDATE_GUIDE.md
|
|
|
778
782
|
console.log(chalk_1.default.bold.green('\n✅ Update complete!\n'));
|
|
779
783
|
}
|
|
780
784
|
}
|
|
785
|
+
/**
|
|
786
|
+
* Check for outdated templates and offer upgrade option
|
|
787
|
+
*
|
|
788
|
+
* @codesyncer-context Template upgrade feature - checks version metadata in files
|
|
789
|
+
* @codesyncer-decision [2026-01-17] Backup files before upgrade for user safety
|
|
790
|
+
*/
|
|
791
|
+
async function checkAndOfferTemplateUpgrade(currentDir, repos, lang, isDryRun) {
|
|
792
|
+
const currentVersion = (0, template_version_1.getCurrentVersion)();
|
|
793
|
+
// Collect all outdated templates across all repos
|
|
794
|
+
const allOutdated = [];
|
|
795
|
+
for (const repo of repos) {
|
|
796
|
+
const claudeDir = path.join(repo.path, '.claude');
|
|
797
|
+
if (await fs.pathExists(claudeDir)) {
|
|
798
|
+
const outdated = await (0, template_version_1.getOutdatedTemplates)(claudeDir);
|
|
799
|
+
if (outdated.length > 0) {
|
|
800
|
+
allOutdated.push({
|
|
801
|
+
repo: repo.name,
|
|
802
|
+
claudeDir,
|
|
803
|
+
templates: outdated,
|
|
804
|
+
});
|
|
805
|
+
}
|
|
806
|
+
}
|
|
807
|
+
}
|
|
808
|
+
// Also check root .claude if it exists (for single repo setup)
|
|
809
|
+
const rootClaudeDir = path.join(currentDir, '.claude');
|
|
810
|
+
if (await fs.pathExists(rootClaudeDir)) {
|
|
811
|
+
const rootOutdated = await (0, template_version_1.getOutdatedTemplates)(rootClaudeDir);
|
|
812
|
+
if (rootOutdated.length > 0) {
|
|
813
|
+
// Avoid duplicates
|
|
814
|
+
const alreadyIncluded = allOutdated.some((o) => o.claudeDir === rootClaudeDir);
|
|
815
|
+
if (!alreadyIncluded) {
|
|
816
|
+
allOutdated.push({
|
|
817
|
+
repo: path.basename(currentDir),
|
|
818
|
+
claudeDir: rootClaudeDir,
|
|
819
|
+
templates: rootOutdated,
|
|
820
|
+
});
|
|
821
|
+
}
|
|
822
|
+
}
|
|
823
|
+
}
|
|
824
|
+
if (allOutdated.length === 0) {
|
|
825
|
+
return; // No outdated templates found
|
|
826
|
+
}
|
|
827
|
+
// Count total outdated files
|
|
828
|
+
const totalOutdated = allOutdated.reduce((sum, o) => sum + o.templates.length, 0);
|
|
829
|
+
// Display upgrade notification
|
|
830
|
+
console.log(chalk_1.default.bold.blue('\n📦 ' + (lang === 'ko' ? '새 버전 감지' : 'New Version Detected') + `: v${currentVersion}\n`));
|
|
831
|
+
// Show outdated files grouped by repo
|
|
832
|
+
allOutdated.forEach(({ repo, templates }) => {
|
|
833
|
+
console.log(chalk_1.default.yellow(` 📁 ${repo}/`));
|
|
834
|
+
templates.forEach((t) => {
|
|
835
|
+
const fileName = path.basename(t.file);
|
|
836
|
+
const versionInfo = t.currentVersion
|
|
837
|
+
? `v${t.currentVersion} → v${t.latestVersion}`
|
|
838
|
+
: `(${lang === 'ko' ? '버전 없음' : 'no version'}) → v${t.latestVersion}`;
|
|
839
|
+
console.log(chalk_1.default.gray(` • ${fileName} (${versionInfo})`));
|
|
840
|
+
});
|
|
841
|
+
});
|
|
842
|
+
console.log();
|
|
843
|
+
// Prompt for upgrade
|
|
844
|
+
const { upgradeChoice } = await inquirer_1.default.prompt([
|
|
845
|
+
{
|
|
846
|
+
type: 'list',
|
|
847
|
+
name: 'upgradeChoice',
|
|
848
|
+
message: lang === 'ko'
|
|
849
|
+
? `${totalOutdated}개 템플릿을 업그레이드할까요?`
|
|
850
|
+
: `Upgrade ${totalOutdated} template(s)?`,
|
|
851
|
+
choices: [
|
|
852
|
+
{
|
|
853
|
+
name: lang === 'ko'
|
|
854
|
+
? '예 - 업그레이드 (기존 파일 .backup으로 백업)'
|
|
855
|
+
: 'Yes - Upgrade (backup existing files to .backup)',
|
|
856
|
+
value: 'yes',
|
|
857
|
+
},
|
|
858
|
+
{
|
|
859
|
+
name: lang === 'ko' ? '아니오 - 건너뛰기' : 'No - Skip',
|
|
860
|
+
value: 'no',
|
|
861
|
+
},
|
|
862
|
+
{
|
|
863
|
+
name: lang === 'ko' ? '미리보기 - 변경 파일만 확인' : 'Preview - Show files only',
|
|
864
|
+
value: 'preview',
|
|
865
|
+
},
|
|
866
|
+
],
|
|
867
|
+
default: 'yes',
|
|
868
|
+
},
|
|
869
|
+
]);
|
|
870
|
+
if (upgradeChoice === 'preview') {
|
|
871
|
+
console.log(chalk_1.default.bold('\n' + (lang === 'ko' ? '📋 업그레이드 대상 파일:' : '📋 Files to upgrade:')));
|
|
872
|
+
allOutdated.forEach(({ repo, templates }) => {
|
|
873
|
+
templates.forEach((t) => {
|
|
874
|
+
console.log(chalk_1.default.gray(` • ${repo}/.claude/${path.basename(t.file)}`));
|
|
875
|
+
});
|
|
876
|
+
});
|
|
877
|
+
console.log();
|
|
878
|
+
return;
|
|
879
|
+
}
|
|
880
|
+
if (upgradeChoice === 'no') {
|
|
881
|
+
console.log(chalk_1.default.gray(lang === 'ko' ? ' 템플릿 업그레이드 건너뜀\n' : ' Template upgrade skipped\n'));
|
|
882
|
+
return;
|
|
883
|
+
}
|
|
884
|
+
// Perform upgrade
|
|
885
|
+
if (isDryRun) {
|
|
886
|
+
console.log(chalk_1.default.yellow(lang === 'ko'
|
|
887
|
+
? '\n [DRY RUN] 업그레이드 수행됨 (실제 파일 변경 없음)\n'
|
|
888
|
+
: '\n [DRY RUN] Upgrade would be performed (no actual changes)\n'));
|
|
889
|
+
allOutdated.forEach(({ repo, templates }) => {
|
|
890
|
+
templates.forEach((t) => {
|
|
891
|
+
console.log(chalk_1.default.gray(` • ${repo}/.claude/${path.basename(t.file)}`));
|
|
892
|
+
});
|
|
893
|
+
});
|
|
894
|
+
return;
|
|
895
|
+
}
|
|
896
|
+
const spinner = (0, ora_1.default)(lang === 'ko' ? '템플릿 업그레이드 중...' : 'Upgrading templates...').start();
|
|
897
|
+
const allResults = [];
|
|
898
|
+
for (const { claudeDir, templates } of allOutdated) {
|
|
899
|
+
const vars = await (0, template_upgrader_1.getTemplateVarsFromContext)(claudeDir, lang);
|
|
900
|
+
const results = await (0, template_upgrader_1.upgradeTemplates)(templates, { lang, vars, dryRun: isDryRun });
|
|
901
|
+
allResults.push(...results);
|
|
902
|
+
}
|
|
903
|
+
spinner.succeed(lang === 'ko' ? '템플릿 업그레이드 완료!' : 'Templates upgraded!');
|
|
904
|
+
// Show summary
|
|
905
|
+
console.log();
|
|
906
|
+
console.log((0, template_upgrader_1.formatUpgradeSummary)(allResults, lang));
|
|
907
|
+
console.log();
|
|
908
|
+
// Show backup notice
|
|
909
|
+
const successfulWithBackup = allResults.filter((r) => r.success && r.backupPath);
|
|
910
|
+
if (successfulWithBackup.length > 0) {
|
|
911
|
+
console.log(chalk_1.default.cyan(lang === 'ko'
|
|
912
|
+
? '💡 백업 파일에서 커스터마이징 내용을 복사할 수 있습니다.'
|
|
913
|
+
: '💡 You can copy customizations from backup files.'));
|
|
914
|
+
console.log();
|
|
915
|
+
}
|
|
916
|
+
}
|
|
781
917
|
//# sourceMappingURL=update.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"update.js","sourceRoot":"","sources":["../../src/commands/update.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"update.js","sourceRoot":"","sources":["../../src/commands/update.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAqBA,sCA2wBC;AAhyBD,kDAA0B;AAC1B,8CAAsB;AACtB,wDAAgC;AAChC,6CAA+B;AAC/B,2CAA6B;AAE7B,8CAA6G;AAC7G,gEAAgE;AAChE,gEAKmC;AACnC,kEAKoC;AAE7B,KAAK,UAAU,aAAa,CAAC,OAAsB;IACxD,MAAM,QAAQ,GAAG,OAAO,CAAC,MAAM,IAAI,KAAK,CAAC;IAEzC,IAAI,QAAQ,EAAE,CAAC;QACb,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,IAAI,CAAC,MAAM,CAAC,sCAAsC,CAAC,CAAC,CAAC;QACvE,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,IAAI,CAAC,4DAA4D,CAAC,CAAC,CAAC;IACxF,CAAC;SAAM,CAAC;QACN,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,IAAI,CAAC,IAAI,CAAC,4BAA4B,CAAC,CAAC,CAAC;IAC7D,CAAC;IAED,MAAM,UAAU,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC;IAEjC,+BAA+B;IAC/B,IAAI,CAAC,CAAC,MAAM,IAAA,wBAAc,EAAC,UAAU,CAAC,CAAC,EAAE,CAAC;QACxC,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,GAAG,CAAC,8BAA8B,CAAC,CAAC,CAAC;QACvD,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,IAAI,CAAC,gCAAgC,CAAC,CAAC,CAAC;QAC1D,OAAO;IACT,CAAC;IAED,4CAA4C;IAC5C,IAAI,IAAI,GAAa,IAAI,CAAC;IAC1B,MAAM,cAAc,GAAG,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,aAAa,EAAE,gBAAgB,CAAC,CAAC;IAC9E,IAAI,CAAC;QACH,MAAM,UAAU,GAAG,MAAM,EAAE,CAAC,QAAQ,CAAC,cAAc,EAAE,OAAO,CAAC,CAAC;QAC9D,IAAI,UAAU,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,UAAU,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC;YAC/D,IAAI,GAAG,IAAI,CAAC;QACd,CAAC;IACH,CAAC;IAAC,MAAM,CAAC;QACP,qBAAqB;IACvB,CAAC;IAED,6CAA6C;IAC7C,MAAM,EAAE,WAAW,EAAE,GAAG,MAAM,kBAAQ,CAAC,MAAM,CAAC;QAC5C;YACE,IAAI,EAAE,MAAM;YACZ,IAAI,EAAE,aAAa;YACnB,OAAO,EAAE,sBAAsB,IAAI,KAAK,IAAI,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,SAAS,aAAa;YACtF,OAAO,EAAE;gBACP,EAAE,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE;gBAC7B,EAAE,IAAI,EAAE,iBAAiB,EAAE,KAAK,EAAE,QAAQ,EAAE;aAC7C;YACD,OAAO,EAAE,KAAK;SACf;KACF,CAAC,CAAC;IAEH,IAAI,WAAW,KAAK,QAAQ,EAAE,CAAC;QAC7B,MAAM,EAAE,OAAO,EAAE,GAAG,MAAM,kBAAQ,CAAC,MAAM,CAAC;YACxC;gBACE,IAAI,EAAE,MAAM;gBACZ,IAAI,EAAE,SAAS;gBACf,OAAO,EAAE,kBAAkB;gBAC3B,OAAO,EAAE;oBACP,EAAE,IAAI,EAAE,SAAS,EAAE,KAAK,EAAE,IAAI,EAAE;oBAChC,EAAE,IAAI,EAAE,cAAc,EAAE,KAAK,EAAE,IAAI,EAAE;iBACtC;aACF;SACF,CAAC,CAAC;QACH,IAAI,GAAG,OAAO,CAAC;IACjB,CAAC;IAED,OAAO,CAAC,GAAG,EAAE,CAAC;IAEd,4DAA4D;IAC5D,IAAI,YAAY,GAAG,OAAO,CAAC,IAAI,IAAI,KAAK,CAAC;IAEzC,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC;QAClB,MAAM,EAAE,UAAU,EAAE,GAAG,MAAM,kBAAQ,CAAC,MAAM,CAAC;YAC3C;gBACE,IAAI,EAAE,MAAM;gBACZ,IAAI,EAAE,YAAY;gBAClB,OAAO,EAAE,cAAc;gBACvB,OAAO,EAAE;oBACP;wBACE,IAAI,EAAE,gCAAgC;wBACtC,KAAK,EAAE,QAAQ;qBAChB;oBACD;wBACE,IAAI,EAAE,4BAA4B;wBAClC,KAAK,EAAE,MAAM;qBACd;iBACF;gBACD,OAAO,EAAE,QAAQ;aAClB;SACF,CAAC,CAAC;QAEH,YAAY,GAAG,UAAU,KAAK,MAAM,CAAC;IACvC,CAAC;IAED,IAAI,YAAY,EAAE,CAAC;QACjB,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,IAAI,CAAC,IAAI,CAAC,uBAAuB,CAAC,CAAC,CAAC;IACxD,CAAC;IAED,MAAM,OAAO,GAAG,IAAA,aAAG,EAAC,aAAa,CAAC,CAAC,KAAK,EAAE,CAAC;IAE3C,iCAAiC;IACjC,MAAM,YAAY,GAAG,MAAM,IAAA,wBAAc,EAAC,UAAU,CAAC,CAAC;IACtD,IAAI,UAA4B,CAAC;IAEjC,IAAI,YAAY,EAAE,CAAC;QACjB,+BAA+B;QAC/B,UAAU,GAAG,MAAM,IAAA,8BAAoB,EAAC,UAAU,EAAE,YAAY,CAAC,CAAC;QAClE,OAAO,CAAC,OAAO,CACb,IAAI,KAAK,IAAI;YACX,CAAC,CAAC,aAAa,UAAU,CAAC,MAAM,QAAQ;YACxC,CAAC,CAAC,sBAAsB,UAAU,CAAC,MAAM,YAAY,CACxD,CAAC;QACF,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,IAAI,CACpB,IAAI,KAAK,IAAI;YACX,CAAC,CAAC,SAAS,IAAA,sCAAmB,EAAC,YAAY,CAAC,IAAI,CAAC,EAAE;YACnD,CAAC,CAAC,WAAW,IAAA,sCAAmB,EAAC,YAAY,CAAC,IAAI,CAAC,EAAE,CACxD,CAAC,CAAC;IACL,CAAC;SAAM,CAAC;QACN,uCAAuC;QACvC,UAAU,GAAG,MAAM,IAAA,6BAAmB,EAAC,UAAU,CAAC,CAAC;QACnD,OAAO,CAAC,OAAO,CAAC,eAAe,CAAC,CAAC;IACnC,CAAC;IAED,kDAAkD;IAClD,MAAM,aAAa,GAAG,CAAC,WAAW,EAAE,iBAAiB,EAAE,kBAAkB,EAAE,cAAc,CAAC,CAAC;IAC3F,MAAM,iBAAiB,GAA+C,EAAE,CAAC;IAEzE,KAAK,MAAM,IAAI,IAAI,UAAU,EAAE,CAAC;QAC9B,MAAM,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC;QAClD,MAAM,YAAY,GAAa,EAAE,CAAC;QAElC,oCAAoC;QACpC,IAAI,CAAC,CAAC,MAAM,EAAE,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC;YACtC,YAAY,CAAC,IAAI,CAAC,GAAG,aAAa,CAAC,CAAC;QACtC,CAAC;aAAM,CAAC;YACN,2BAA2B;YAC3B,KAAK,MAAM,IAAI,IAAI,aAAa,EAAE,CAAC;gBACjC,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC;gBAC5C,IAAI,CAAC,CAAC,MAAM,EAAE,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC;oBACrC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;gBAC1B,CAAC;YACH,CAAC;QACH,CAAC;QAED,IAAI,YAAY,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC5B,iBAAiB,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC;QAC5D,CAAC;IACH,CAAC;IAED,OAAO,CAAC,OAAO,CAAC,eAAe,CAAC,CAAC;IAEjC,iCAAiC;IACjC,MAAM,cAAc,GAAG,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,WAAW,CAAC,CAAC;IAC1D,MAAM,aAAa,GAAG,MAAM,EAAE,CAAC,UAAU,CAAC,cAAc,CAAC,CAAC;IAE1D,qDAAqD;IACrD,MAAM,UAAU,GAAG,iBAAiB,CAAC,MAAM,GAAG,CAAC,IAAI,CAAC,aAAa,IAAI,YAAY,CAAC;IAElF,IAAI,CAAC,UAAU,EAAE,CAAC;QAChB,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,KAAK,CAAC,iCAAiC,CAAC,CAAC,CAAC;QAC5D,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,IAAI,CAAC,yBAAyB,UAAU,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;QACtE,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,IAAI,CAAC,sBAAsB,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,MAAM,IAAI,CAAC,CAAC,CAAC;QACpG,OAAO;IACT,CAAC;IAED,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,IAAI,CAAC,sBAAsB,CAAC,CAAC,CAAC;IAEhD,0BAA0B;IAC1B,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,IAAI,CAAC,yBAAyB,UAAU,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;IACtE,OAAO,CAAC,GAAG,EAAE,CAAC;IAEd,IAAI,YAAY,EAAE,CAAC;QACjB,0CAA0C;QAC1C,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,IAAI,CAAC,IAAI,CAAC,qDAAqD,CAAC,CAAC,CAAC;QACpF,OAAO,CAAC,GAAG,EAAE,CAAC;QACd,UAAU,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,EAAE;YAC1B,MAAM,UAAU,GAAG,iBAAiB,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,IAAI,CAAC,CAAC;YACrE,IAAI,UAAU,EAAE,CAAC;gBACf,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,MAAM,CAAC,UAAU,IAAI,CAAC,IAAI,KAAK,eAAK,CAAC,GAAG,CAAC,GAAG,UAAU,CAAC,YAAY,CAAC,MAAM,UAAU,CAAC,EAAE,CAAC,CAAC,CAAC;gBAC5G,UAAU,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,EAAE;oBACvC,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,IAAI,CAAC,mBAAmB,IAAI,EAAE,CAAC,CAAC,CAAC;gBACrD,CAAC,CAAC,CAAC;YACL,CAAC;iBAAM,CAAC;gBACN,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,IAAI,CAAC,UAAU,IAAI,CAAC,IAAI,KAAK,eAAK,CAAC,KAAK,CAAC,SAAS,CAAC,IAAI,eAAK,CAAC,IAAI,CAAC,gBAAgB,CAAC,EAAE,CAAC,CAAC,CAAC;YAC5G,CAAC;QACH,CAAC,CAAC,CAAC;QACH,OAAO,CAAC,GAAG,EAAE,CAAC;IAChB,CAAC;SAAM,CAAC;QACN,oDAAoD;QACpD,IAAI,iBAAiB,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACjC,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,IAAI,CAAC,MAAM,CAAC,SAAS,iBAAiB,CAAC,MAAM,8BAA8B,CAAC,CAAC,CAAC;YAChG,iBAAiB,CAAC,OAAO,CAAC,CAAC,EAAE,IAAI,EAAE,YAAY,EAAE,EAAE,EAAE;gBACnD,MAAM,UAAU,GAAG,YAAY,CAAC,MAAM,KAAK,aAAa,CAAC,MAAM,CAAC;gBAChE,IAAI,UAAU,EAAE,CAAC;oBACf,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,IAAI,CAAC,UAAU,IAAI,KAAK,eAAK,CAAC,GAAG,CAAC,eAAe,CAAC,EAAE,CAAC,CAAC,CAAC;gBAC3E,CAAC;qBAAM,CAAC;oBACN,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,IAAI,CAAC,UAAU,IAAI,GAAG,CAAC,CAAC,CAAC;oBAC3C,YAAY,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,EAAE;wBAC5B,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,IAAI,CAAC,mBAAmB,IAAI,EAAE,CAAC,CAAC,CAAC;oBACrD,CAAC,CAAC,CAAC;gBACL,CAAC;YACH,CAAC,CAAC,CAAC;YACH,OAAO,CAAC,GAAG,EAAE,CAAC;QAChB,CAAC;QAED,8BAA8B;QAC9B,MAAM,oBAAoB,GAAG,UAAU,CAAC,MAAM,CAC5C,IAAI,CAAC,EAAE,CAAC,CAAC,iBAAiB,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,IAAI,CAAC,CAC3D,CAAC;QACF,IAAI,oBAAoB,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACpC,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,KAAK,CAAC,OAAO,oBAAoB,CAAC,MAAM,2BAA2B,CAAC,CAAC,CAAC;YACxF,OAAO,CAAC,GAAG,EAAE,CAAC;QAChB,CAAC;IACH,CAAC;IAED,6CAA6C;IAC7C,IAAI,CAAC,aAAa,EAAE,CAAC;QACnB,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,IAAI,CAAC,MAAM,CAAC,gCAAgC,CAAC,CAAC,CAAC;QACjE,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,IAAI,CAAC,oDAAoD,CAAC,CAAC,CAAC;QAE9E,MAAM,EAAE,gBAAgB,EAAE,GAAG,MAAM,kBAAQ,CAAC,MAAM,CAAC;YACjD;gBACE,IAAI,EAAE,SAAS;gBACf,IAAI,EAAE,kBAAkB;gBACxB,OAAO,EAAE,wBAAwB;gBACjC,OAAO,EAAE,IAAI;aACd;SACF,CAAC,CAAC;QAEH,IAAI,gBAAgB,EAAE,CAAC;YACrB,IAAI,QAAQ,EAAE,CAAC;gBACb,2CAA2C;gBAC3C,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,MAAM,CAAC,6BAA6B,cAAc,EAAE,CAAC,CAAC,CAAC;gBACzE,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,IAAI,CAAC,kDAAkD,CAAC,CAAC,CAAC;YAC9E,CAAC;iBAAM,CAAC;gBACN,MAAM,OAAO,GAAG,IAAA,aAAG,EAAC,aAAa,CAAC,CAAC,KAAK,EAAE,CAAC;gBAE3C,IAAI,CAAC;oBACH,gBAAgB;oBAChB,MAAM,YAAY,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,gBAAgB,CAAC,CAAC;oBACrF,IAAI,QAAQ,GAAG,MAAM,EAAE,CAAC,QAAQ,CAAC,YAAY,EAAE,OAAO,CAAC,CAAC;oBAExD,0DAA0D;oBAC1D,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,aAAa,EAAE,sBAAsB,CAAC,CAAC;oBAChF,IAAI,WAAW,GAAG,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC;oBAC5C,IAAI,cAAc,GAAG,eAAe,CAAC;oBAErC,IAAI,CAAC;wBACH,MAAM,aAAa,GAAG,MAAM,EAAE,CAAC,QAAQ,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC;wBAC7D,MAAM,SAAS,GAAG,aAAa,CAAC,KAAK,CAAC,2CAA2C,CAAC,CAAC;wBACnF,MAAM,WAAW,GAAG,aAAa,CAAC,KAAK,CAAC,yBAAyB,CAAC,CAAC;wBAEnE,IAAI,SAAS;4BAAE,WAAW,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;wBACnE,IAAI,WAAW;4BAAE,cAAc,GAAG,WAAW,CAAC,CAAC,CAAC,CAAC;oBACnD,CAAC;oBAAC,MAAM,CAAC;wBACP,eAAe;oBACjB,CAAC;oBAED,MAAM,SAAS,GAAG,UAAU,CAAC,MAAM,CAAC;oBACpC,MAAM,KAAK,GAAG,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;oBAErD,uBAAuB;oBACvB,QAAQ,GAAG,QAAQ;yBAChB,OAAO,CAAC,mBAAmB,EAAE,WAAW,CAAC;yBACzC,OAAO,CAAC,sBAAsB,EAAE,cAAc,CAAC;yBAC/C,OAAO,CAAC,YAAY,EAAE,KAAK,CAAC;yBAC5B,OAAO,CAAC,iBAAiB,EAAE,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC;oBAEjD,uBAAuB;oBACvB,MAAM,EAAE,CAAC,SAAS,CAAC,cAAc,EAAE,QAAQ,EAAE,OAAO,CAAC,CAAC;oBAEtD,OAAO,CAAC,OAAO,CAAC,yBAAyB,CAAC,CAAC;oBAC3C,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,KAAK,CAAC,OAAO,cAAc,IAAI,CAAC,CAAC,CAAC;oBACpD,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,IAAI,CAAC,kDAAkD,CAAC,CAAC,CAAC;oBAE9E,yBAAyB;oBACzB,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC,CAAC;oBAC5C,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;oBACxC,OAAO,CAAC,GAAG,EAAE,CAAC;oBACd,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,IAAI,CAAC,kCAAkC,CAAC,CAAC,CAAC;oBAC5D,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,IAAI,CAAC,6BAA6B,CAAC,CAAC,CAAC;oBACvD,OAAO,CAAC,GAAG,EAAE,CAAC;oBACd,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,IAAI,CAAC,qBAAqB,CAAC,CAAC,CAAC;oBAC/C,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,MAAM,CAAC,6BAA6B,CAAC,CAAC,CAAC;oBACzD,OAAO,CAAC,GAAG,EAAE,CAAC;oBACd,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;oBACxC,OAAO,CAAC,GAAG,EAAE,CAAC;gBACd,CAAC;gBAAC,OAAO,KAAK,EAAE,CAAC;oBACf,OAAO,CAAC,IAAI,CAAC,iCAAiC,CAAC,CAAC;oBAChD,OAAO,CAAC,KAAK,CAAC,eAAK,CAAC,GAAG,CAAC,UAAU,KAAK,IAAI,CAAC,CAAC,CAAC;gBAChD,CAAC;YACH,CAAC;QACH,CAAC;IACH,CAAC;IAED,8EAA8E;IAC9E,MAAM,gBAAgB,GAAG,iBAAiB,CAAC,MAAM,GAAG,CAAC,IAAI,YAAY,CAAC;IAEtE,IAAI,gBAAgB,EAAE,CAAC;QACrB,IAAI,iBAAiB,CAAC,MAAM,GAAG,CAAC,IAAI,CAAC,YAAY,EAAE,CAAC;YAClD,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,IAAI,CAAC,MAAM,CAAC,uCAAuC,CAAC,CAAC,CAAC;QAC1E,CAAC;QAED,IAAI,YAAY,EAAE,CAAC;YACjB,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,IAAI,CAAC,IAAI,CAAC,oCAAoC,CAAC,CAAC,CAAC;QACrE,CAAC;QAED,MAAM,EAAE,mBAAmB,EAAE,GAAG,MAAM,kBAAQ,CAAC,MAAM,CAAC;YACpD;gBACE,IAAI,EAAE,SAAS;gBACf,IAAI,EAAE,qBAAqB;gBAC3B,OAAO,EAAE,kCAAkC;gBAC3C,OAAO,EAAE,IAAI;aACd;SACF,CAAC,CAAC;QAEH,IAAI,mBAAmB,EAAE,CAAC;YACxB,MAAM,eAAe,GAAG,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,aAAa,EAAE,iBAAiB,CAAC,CAAC;YAEhF,IAAI,QAAQ,EAAE,CAAC;gBACb,2CAA2C;gBAC3C,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,MAAM,CAAC,6BAA6B,eAAe,EAAE,CAAC,CAAC,CAAC;gBAC1E,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,IAAI,CAAC,mCAAmC,iBAAiB,CAAC,MAAM,kBAAkB,CAAC,CAAC,CAAC;gBACvG,IAAI,YAAY,EAAE,CAAC;oBACjB,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,IAAI,CAAC,wCAAwC,CAAC,CAAC,CAAC;gBACpE,CAAC;gBACD,OAAO,CAAC,GAAG,EAAE,CAAC;YAChB,CAAC;iBAAM,CAAC;gBACN,MAAM,OAAO,GAAG,IAAA,aAAG,EAAC,0BAA0B,CAAC,CAAC,KAAK,EAAE,CAAC;gBAExD,IAAI,CAAC;oBACH,MAAM,KAAK,GAAG,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;oBAEvD,uBAAuB;oBACvB,IAAI,WAAW,GAAG,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC;oBAC5C,IAAI,CAAC;wBACH,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,aAAa,EAAE,sBAAsB,CAAC,CAAC;wBAChF,MAAM,aAAa,GAAG,MAAM,EAAE,CAAC,QAAQ,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC;wBAC7D,MAAM,SAAS,GAAG,aAAa,CAAC,KAAK,CAAC,2CAA2C,CAAC,CAAC;wBACnF,IAAI,SAAS;4BAAE,WAAW,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;oBACrE,CAAC;oBAAC,MAAM,CAAC;wBACP,cAAc;oBAChB,CAAC;oBAED,gCAAgC;oBAChC,IAAI,WAAW,GAAG,EAAE,CAAC;oBAErB,IAAI,IAAI,KAAK,IAAI,EAAE,CAAC;wBAClB,WAAW,GAAG;;kCAEU,YAAY,CAAC,CAAC,CAAC,qBAAqB,CAAC,CAAC,CAAC,gBAAgB;;cAE3E,WAAW;iBACR,KAAK;iBACL,YAAY,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,YAAY;;;;EAIzD,YAAY,CAAC,CAAC,CAAC;;;;;;;;;;;;;;;;CAgBhB,CAAC,CAAC,CAAC,EAAE;;;;EAIJ,YAAY,CAAC,CAAC,CAAC;cACH,UAAU,CAAC,MAAM;;EAE7B,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE;4BACtB,MAAM,UAAU,GAAG,iBAAiB,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,IAAI,CAAC,CAAC;4BACrE,MAAM,YAAY,GAAG,UAAU,CAAC,CAAC,CAAC,UAAU,CAAC,YAAY,CAAC,CAAC,CAAC,EAAE,CAAC;4BAE/D,OAAO;SACA,IAAI,CAAC,IAAI;;EAEhB,YAAY,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC;;EAE1B,YAAY,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC;CACvD,CAAC,CAAC,CAAC,mBAAmB;;;OAGhB,IAAI,CAAC,IAAI;;;;;;;;;;EAUd,YAAY,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC;EAC1B,YAAY,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,kBAAkB,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC;CAC1D,CAAC,CAAC,CAAC,EAAE;;;;;;CAML,CAAC;wBACF,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC;CACjB,CAAC,CAAC,CAAC;;;EAGF,iBAAiB,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,EAAE,YAAY,EAAE,EAAE,EAAE,CAAC;SAC3C,IAAI;;;EAGX,YAAY,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC;;;OAGjD,IAAI;;;;;;;EAOT,YAAY,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,UAAU,CAAC,yBAAyB,CAAC,CAAC,WAAW,EAAE,CAAC,OAAO,CAAC,KAAK,EAAE,cAAc,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC;;;;;;CAM5H,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC;CACjB;;;;;;EAMC,YAAY,CAAC,CAAC,CAAC;;;;;;;GAOd,UAAU,CAAC,CAAC,CAAC,EAAE,IAAI;;;;;;;;;;;;;;;;;;;;;;CAsBrB,CAAC,CAAC,CAAC;;;;;;;GAOD,iBAAiB,CAAC,CAAC,CAAC,EAAE,IAAI,IAAI,UAAU,CAAC,CAAC,CAAC,EAAE,IAAI;;;;;;;;;;;;;;;;;;KAkB/C,iBAAiB,CAAC,CAAC,CAAC,EAAE,IAAI,IAAI,UAAU,CAAC,CAAC,CAAC,EAAE,IAAI;;;;CAIrD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA2CA,CAAC;oBACM,CAAC;yBAAM,CAAC;wBACN,WAAW,GAAG;;sEAE8C,YAAY,CAAC,CAAC,CAAC,2BAA2B,CAAC,CAAC,CAAC,wBAAwB;;iBAE1H,WAAW;qBACP,KAAK;qBACL,YAAY,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC,kBAAkB;;;;EAIvE,YAAY,CAAC,CAAC,CAAC;;;;;;;;;;;;;;;;CAgBhB,CAAC,CAAC,CAAC,EAAE;;;;EAIJ,YAAY,CAAC,CAAC,CAAC;sBACK,UAAU,CAAC,MAAM;;EAErC,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE;4BACtB,MAAM,UAAU,GAAG,iBAAiB,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,IAAI,CAAC,CAAC;4BACrE,MAAM,YAAY,GAAG,UAAU,CAAC,CAAC,CAAC,UAAU,CAAC,YAAY,CAAC,CAAC,CAAC,EAAE,CAAC;4BAE/D,OAAO;SACA,IAAI,CAAC,IAAI;;EAEhB,YAAY,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC;;EAE1B,YAAY,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC;CACvD,CAAC,CAAC,CAAC,gCAAgC;;;mBAGjB,IAAI,CAAC,IAAI;;;;;;;;;;EAU1B,YAAY,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC;EAC1B,YAAY,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,kBAAkB,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC;CAC1D,CAAC,CAAC,CAAC,EAAE;;;;;;CAML,CAAC;wBACF,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC;CACjB,CAAC,CAAC,CAAC;;;EAGF,iBAAiB,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,EAAE,YAAY,EAAE,EAAE,EAAE,CAAC;SAC3C,IAAI;;;EAGX,YAAY,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC;;;mBAGrC,IAAI;;;;;;;EAOrB,YAAY,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,UAAU,CAAC,mCAAmC,CAAC,CAAC,WAAW,EAAE,CAAC,OAAO,CAAC,KAAK,EAAE,cAAc,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC;;;;;;CAMnI,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC;CACjB;;;;;;EAMC,YAAY,CAAC,CAAC,CAAC;;;;;;;QAOT,UAAU,CAAC,CAAC,CAAC,EAAE,IAAI;;;;;;;;;;;;;;;;;;;;;;CAsB1B,CAAC,CAAC,CAAC;;;;;;;WAOO,iBAAiB,CAAC,CAAC,CAAC,EAAE,IAAI,IAAI,UAAU,CAAC,CAAC,CAAC,EAAE,IAAI;;;;;;;;;;;;;;;;;;KAkBvD,iBAAiB,CAAC,CAAC,CAAC,EAAE,IAAI,IAAI,UAAU,CAAC,CAAC,CAAC,EAAE,IAAI;;;;CAIrD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA2CA,CAAC;oBACM,CAAC;oBAED,kEAAkE;oBAClE,IAAI,MAAM,EAAE,CAAC,UAAU,CAAC,eAAe,CAAC,EAAE,CAAC;wBACzC,MAAM,EAAE,CAAC,MAAM,CAAC,eAAe,CAAC,CAAC;oBACnC,CAAC;oBAED,MAAM,EAAE,CAAC,SAAS,CAAC,eAAe,EAAE,WAAW,EAAE,OAAO,CAAC,CAAC;oBAE1D,OAAO,CAAC,OAAO,CAAC,0BAA0B,CAAC,CAAC;oBAC5C,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,KAAK,CAAC,OAAO,eAAe,IAAI,CAAC,CAAC,CAAC;oBACrD,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,IAAI,CAAC,oCAAoC,CAAC,CAAC,CAAC;oBAE9D,oBAAoB;oBACpB,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC,CAAC;oBAC5C,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;oBACxC,OAAO,CAAC,GAAG,EAAE,CAAC;oBACd,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,MAAM,CAAC,8DAA8D,CAAC,CAAC,CAAC;oBAC1F,OAAO,CAAC,GAAG,EAAE,CAAC;oBACd,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,IAAI,CAAC,qCAAqC,CAAC,CAAC,CAAC;oBAC/D,OAAO,CAAC,GAAG,EAAE,CAAC;oBACd,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;oBACxC,OAAO,CAAC,GAAG,EAAE,CAAC;gBACd,CAAC;gBAAC,OAAO,KAAK,EAAE,CAAC;oBACf,OAAO,CAAC,IAAI,CAAC,kCAAkC,CAAC,CAAC;oBACjD,OAAO,CAAC,KAAK,CAAC,eAAK,CAAC,GAAG,CAAC,UAAU,KAAK,IAAI,CAAC,CAAC,CAAC;gBAChD,CAAC;YACH,CAAC;QACH,CAAC;IACH,CAAC;IAED,yBAAyB;IACzB,MAAM,4BAA4B,CAAC,UAAU,EAAE,UAAU,EAAE,IAAI,EAAE,QAAQ,CAAC,CAAC;IAE3E,IAAI,QAAQ,EAAE,CAAC;QACb,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,IAAI,CAAC,MAAM,CAAC,iDAAiD,CAAC,CAAC,CAAC;QAClF,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,IAAI,CAAC,2CAA2C,CAAC,CAAC,CAAC;IACvE,CAAC;SAAM,CAAC;QACN,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,IAAI,CAAC,KAAK,CAAC,wBAAwB,CAAC,CAAC,CAAC;IAC1D,CAAC;AACH,CAAC;AAED;;;;;GAKG;AACH,KAAK,UAAU,4BAA4B,CACzC,UAAkB,EAClB,KAAuB,EACvB,IAAc,EACd,QAAiB;IAEjB,MAAM,cAAc,GAAG,IAAA,oCAAiB,GAAE,CAAC;IAE3C,kDAAkD;IAClD,MAAM,WAAW,GAAuE,EAAE,CAAC;IAE3F,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACzB,MAAM,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC;QAClD,IAAI,MAAM,EAAE,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE,CAAC;YACnC,MAAM,QAAQ,GAAG,MAAM,IAAA,uCAAoB,EAAC,SAAS,CAAC,CAAC;YACvD,IAAI,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBACxB,WAAW,CAAC,IAAI,CAAC;oBACf,IAAI,EAAE,IAAI,CAAC,IAAI;oBACf,SAAS;oBACT,SAAS,EAAE,QAAQ;iBACpB,CAAC,CAAC;YACL,CAAC;QACH,CAAC;IACH,CAAC;IAED,+DAA+D;IAC/D,MAAM,aAAa,GAAG,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,SAAS,CAAC,CAAC;IACvD,IAAI,MAAM,EAAE,CAAC,UAAU,CAAC,aAAa,CAAC,EAAE,CAAC;QACvC,MAAM,YAAY,GAAG,MAAM,IAAA,uCAAoB,EAAC,aAAa,CAAC,CAAC;QAC/D,IAAI,YAAY,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC5B,mBAAmB;YACnB,MAAM,eAAe,GAAG,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,SAAS,KAAK,aAAa,CAAC,CAAC;YAC/E,IAAI,CAAC,eAAe,EAAE,CAAC;gBACrB,WAAW,CAAC,IAAI,CAAC;oBACf,IAAI,EAAE,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC;oBAC/B,SAAS,EAAE,aAAa;oBACxB,SAAS,EAAE,YAAY;iBACxB,CAAC,CAAC;YACL,CAAC;QACH,CAAC;IACH,CAAC;IAED,IAAI,WAAW,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC7B,OAAO,CAAC,8BAA8B;IACxC,CAAC;IAED,6BAA6B;IAC7B,MAAM,aAAa,GAAG,WAAW,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC,GAAG,GAAG,CAAC,CAAC,SAAS,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;IAElF,+BAA+B;IAC/B,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,GAAG,CAAC,IAAI,KAAK,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,sBAAsB,CAAC,GAAG,MAAM,cAAc,IAAI,CAAC,CAAC,CAAC;IAExH,sCAAsC;IACtC,WAAW,CAAC,OAAO,CAAC,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,EAAE,EAAE;QAC1C,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,MAAM,CAAC,QAAQ,IAAI,GAAG,CAAC,CAAC,CAAC;QAC3C,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE;YACtB,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;YACvC,MAAM,WAAW,GAAG,CAAC,CAAC,cAAc;gBAClC,CAAC,CAAC,IAAI,CAAC,CAAC,cAAc,OAAO,CAAC,CAAC,aAAa,EAAE;gBAC9C,CAAC,CAAC,IAAI,IAAI,KAAK,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,YAAY,QAAQ,CAAC,CAAC,aAAa,EAAE,CAAC;YACxE,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,IAAI,CAAC,UAAU,QAAQ,KAAK,WAAW,GAAG,CAAC,CAAC,CAAC;QACjE,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IACH,OAAO,CAAC,GAAG,EAAE,CAAC;IAEd,qBAAqB;IACrB,MAAM,EAAE,aAAa,EAAE,GAAG,MAAM,kBAAQ,CAAC,MAAM,CAAC;QAC9C;YACE,IAAI,EAAE,MAAM;YACZ,IAAI,EAAE,eAAe;YACrB,OAAO,EAAE,IAAI,KAAK,IAAI;gBACpB,CAAC,CAAC,GAAG,aAAa,kBAAkB;gBACpC,CAAC,CAAC,WAAW,aAAa,eAAe;YAC3C,OAAO,EAAE;gBACP;oBACE,IAAI,EAAE,IAAI,KAAK,IAAI;wBACjB,CAAC,CAAC,gCAAgC;wBAClC,CAAC,CAAC,kDAAkD;oBACtD,KAAK,EAAE,KAAK;iBACb;gBACD;oBACE,IAAI,EAAE,IAAI,KAAK,IAAI,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,WAAW;oBAChD,KAAK,EAAE,IAAI;iBACZ;gBACD;oBACE,IAAI,EAAE,IAAI,KAAK,IAAI,CAAC,CAAC,CAAC,kBAAkB,CAAC,CAAC,CAAC,2BAA2B;oBACtE,KAAK,EAAE,SAAS;iBACjB;aACF;YACD,OAAO,EAAE,KAAK;SACf;KACF,CAAC,CAAC;IAEH,IAAI,aAAa,KAAK,SAAS,EAAE,CAAC;QAChC,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,IAAI,CAAC,IAAI,GAAG,CAAC,IAAI,KAAK,IAAI,CAAC,CAAC,CAAC,iBAAiB,CAAC,CAAC,CAAC,sBAAsB,CAAC,CAAC,CAAC,CAAC;QAC7F,WAAW,CAAC,OAAO,CAAC,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,EAAE,EAAE;YAC1C,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE;gBACtB,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,IAAI,CAAC,OAAO,IAAI,YAAY,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC;YAC1E,CAAC,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;QACH,OAAO,CAAC,GAAG,EAAE,CAAC;QACd,OAAO;IACT,CAAC;IAED,IAAI,aAAa,KAAK,IAAI,EAAE,CAAC;QAC3B,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,IAAI,CAAC,IAAI,KAAK,IAAI,CAAC,CAAC,CAAC,mBAAmB,CAAC,CAAC,CAAC,8BAA8B,CAAC,CAAC,CAAC;QAC9F,OAAO;IACT,CAAC;IAED,kBAAkB;IAClB,IAAI,QAAQ,EAAE,CAAC;QACb,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,MAAM,CAAC,IAAI,KAAK,IAAI;YACpC,CAAC,CAAC,yCAAyC;YAC3C,CAAC,CAAC,gEAAgE,CAAC,CAAC,CAAC;QACvE,WAAW,CAAC,OAAO,CAAC,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,EAAE,EAAE;YAC1C,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE;gBACtB,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,IAAI,CAAC,OAAO,IAAI,YAAY,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC;YAC1E,CAAC,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;QACH,OAAO;IACT,CAAC;IAED,MAAM,OAAO,GAAG,IAAA,aAAG,EAAC,IAAI,KAAK,IAAI,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC,wBAAwB,CAAC,CAAC,KAAK,EAAE,CAAC;IAEzF,MAAM,UAAU,GAAoB,EAAE,CAAC;IAEvC,KAAK,MAAM,EAAE,SAAS,EAAE,SAAS,EAAE,IAAI,WAAW,EAAE,CAAC;QACnD,MAAM,IAAI,GAAG,MAAM,IAAA,8CAA0B,EAAC,SAAS,EAAE,IAAI,CAAC,CAAC;QAC/D,MAAM,OAAO,GAAG,MAAM,IAAA,oCAAgB,EAAC,SAAS,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC,CAAC;QACpF,UAAU,CAAC,IAAI,CAAC,GAAG,OAAO,CAAC,CAAC;IAC9B,CAAC;IAED,OAAO,CAAC,OAAO,CAAC,IAAI,KAAK,IAAI,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,qBAAqB,CAAC,CAAC;IAEzE,eAAe;IACf,OAAO,CAAC,GAAG,EAAE,CAAC;IACd,OAAO,CAAC,GAAG,CAAC,IAAA,wCAAoB,EAAC,UAAU,EAAE,IAAI,CAAC,CAAC,CAAC;IACpD,OAAO,CAAC,GAAG,EAAE,CAAC;IAEd,qBAAqB;IACrB,MAAM,oBAAoB,GAAG,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,IAAI,CAAC,CAAC,UAAU,CAAC,CAAC;IACjF,IAAI,oBAAoB,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACpC,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,IAAI,CAAC,IAAI,KAAK,IAAI;YAClC,CAAC,CAAC,mCAAmC;YACrC,CAAC,CAAC,mDAAmD,CAAC,CAAC,CAAC;QAC1D,OAAO,CAAC,GAAG,EAAE,CAAC;IAChB,CAAC;AACH,CAAC"}
|
|
@@ -177,3 +177,5 @@ Both formats work identically, so use whichever you prefer!
|
|
|
177
177
|
|
|
178
178
|
*CodeSyncer - Persistent context, controlled inference, live architecture sync for Claude Code*
|
|
179
179
|
*Currently Supported: Claude Code | Coming Soon: Cursor, GitHub Copilot, Continue.dev*
|
|
180
|
+
|
|
181
|
+
<!-- codesyncer-version: 3.1.0 -->
|
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
import { Language } from '../types';
|
|
2
|
+
import { TemplateStatus } from './template-version';
|
|
3
|
+
/**
|
|
4
|
+
* Template upgrade utilities
|
|
5
|
+
*
|
|
6
|
+
* @codesyncer-context Handles backing up existing templates and applying new versions
|
|
7
|
+
* @codesyncer-decision [2026-01-17] Always backup before upgrading (user data safety)
|
|
8
|
+
*/
|
|
9
|
+
/**
|
|
10
|
+
* Result of a template upgrade operation
|
|
11
|
+
*/
|
|
12
|
+
export interface UpgradeResult {
|
|
13
|
+
success: boolean;
|
|
14
|
+
file: string;
|
|
15
|
+
backupPath?: string;
|
|
16
|
+
error?: string;
|
|
17
|
+
}
|
|
18
|
+
/**
|
|
19
|
+
* Options for template upgrade
|
|
20
|
+
*/
|
|
21
|
+
export interface UpgradeOptions {
|
|
22
|
+
lang: Language;
|
|
23
|
+
vars: Record<string, string>;
|
|
24
|
+
dryRun?: boolean;
|
|
25
|
+
}
|
|
26
|
+
/**
|
|
27
|
+
* Create a backup of a file before upgrading
|
|
28
|
+
*
|
|
29
|
+
* @param filePath - Path to the file to backup
|
|
30
|
+
* @returns Path to the backup file
|
|
31
|
+
*/
|
|
32
|
+
export declare function backupFile(filePath: string): Promise<string>;
|
|
33
|
+
/**
|
|
34
|
+
* Upgrade a single template file
|
|
35
|
+
*
|
|
36
|
+
* @param templateStatus - Template status from version check
|
|
37
|
+
* @param options - Upgrade options
|
|
38
|
+
* @returns Promise resolving to UpgradeResult
|
|
39
|
+
*/
|
|
40
|
+
export declare function upgradeTemplate(templateStatus: TemplateStatus, options: UpgradeOptions): Promise<UpgradeResult>;
|
|
41
|
+
/**
|
|
42
|
+
* Upgrade multiple templates
|
|
43
|
+
*
|
|
44
|
+
* @param templates - Array of template statuses to upgrade
|
|
45
|
+
* @param options - Upgrade options
|
|
46
|
+
* @returns Promise resolving to array of UpgradeResults
|
|
47
|
+
*/
|
|
48
|
+
export declare function upgradeTemplates(templates: TemplateStatus[], options: UpgradeOptions): Promise<UpgradeResult[]>;
|
|
49
|
+
/**
|
|
50
|
+
* Extract variables from existing file for re-use during upgrade
|
|
51
|
+
*
|
|
52
|
+
* @param filePath - Path to existing file
|
|
53
|
+
* @returns Record of extracted variables
|
|
54
|
+
*/
|
|
55
|
+
export declare function extractVarsFromFile(filePath: string): Promise<Record<string, string>>;
|
|
56
|
+
/**
|
|
57
|
+
* Get template variables from .claude directory context
|
|
58
|
+
*
|
|
59
|
+
* @param claudeDir - Path to .claude directory
|
|
60
|
+
* @param lang - Language to use
|
|
61
|
+
* @returns Record of template variables
|
|
62
|
+
*/
|
|
63
|
+
export declare function getTemplateVarsFromContext(claudeDir: string, lang: Language): Promise<Record<string, string>>;
|
|
64
|
+
/**
|
|
65
|
+
* Format upgrade summary for display
|
|
66
|
+
*
|
|
67
|
+
* @param results - Array of upgrade results
|
|
68
|
+
* @param lang - Language for messages
|
|
69
|
+
* @returns Formatted summary string
|
|
70
|
+
*/
|
|
71
|
+
export declare function formatUpgradeSummary(results: UpgradeResult[], lang: Language): string;
|
|
72
|
+
//# sourceMappingURL=template-upgrader.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"template-upgrader.d.ts","sourceRoot":"","sources":["../../src/utils/template-upgrader.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,QAAQ,EAAE,MAAM,UAAU,CAAC;AAEpC,OAAO,EAAE,cAAc,EAAqB,MAAM,oBAAoB,CAAC;AAEvE;;;;;GAKG;AAEH;;GAEG;AACH,MAAM,WAAW,aAAa;IAC5B,OAAO,EAAE,OAAO,CAAC;IACjB,IAAI,EAAE,MAAM,CAAC;IACb,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED;;GAEG;AACH,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,QAAQ,CAAC;IACf,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC7B,MAAM,CAAC,EAAE,OAAO,CAAC;CAClB;AAED;;;;;GAKG;AACH,wBAAsB,UAAU,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAiBlE;AAED;;;;;;GAMG;AACH,wBAAsB,eAAe,CACnC,cAAc,EAAE,cAAc,EAC9B,OAAO,EAAE,cAAc,GACtB,OAAO,CAAC,aAAa,CAAC,CAuCxB;AAED;;;;;;GAMG;AACH,wBAAsB,gBAAgB,CACpC,SAAS,EAAE,cAAc,EAAE,EAC3B,OAAO,EAAE,cAAc,GACtB,OAAO,CAAC,aAAa,EAAE,CAAC,CAS1B;AAED;;;;;GAKG;AACH,wBAAsB,mBAAmB,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAqC3F;AAED;;;;;;GAMG;AACH,wBAAsB,0BAA0B,CAC9C,SAAS,EAAE,MAAM,EACjB,IAAI,EAAE,QAAQ,GACb,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAgCjC;AAED;;;;;;GAMG;AACH,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,aAAa,EAAE,EAAE,IAAI,EAAE,QAAQ,GAAG,MAAM,CA+CrF"}
|
|
@@ -0,0 +1,249 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
+
}) : function(o, v) {
|
|
16
|
+
o["default"] = v;
|
|
17
|
+
});
|
|
18
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
19
|
+
var ownKeys = function(o) {
|
|
20
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
21
|
+
var ar = [];
|
|
22
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
23
|
+
return ar;
|
|
24
|
+
};
|
|
25
|
+
return ownKeys(o);
|
|
26
|
+
};
|
|
27
|
+
return function (mod) {
|
|
28
|
+
if (mod && mod.__esModule) return mod;
|
|
29
|
+
var result = {};
|
|
30
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
31
|
+
__setModuleDefault(result, mod);
|
|
32
|
+
return result;
|
|
33
|
+
};
|
|
34
|
+
})();
|
|
35
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
36
|
+
exports.backupFile = backupFile;
|
|
37
|
+
exports.upgradeTemplate = upgradeTemplate;
|
|
38
|
+
exports.upgradeTemplates = upgradeTemplates;
|
|
39
|
+
exports.extractVarsFromFile = extractVarsFromFile;
|
|
40
|
+
exports.getTemplateVarsFromContext = getTemplateVarsFromContext;
|
|
41
|
+
exports.formatUpgradeSummary = formatUpgradeSummary;
|
|
42
|
+
const fs = __importStar(require("fs-extra"));
|
|
43
|
+
const path = __importStar(require("path"));
|
|
44
|
+
const template_loader_1 = require("./template-loader");
|
|
45
|
+
/**
|
|
46
|
+
* Create a backup of a file before upgrading
|
|
47
|
+
*
|
|
48
|
+
* @param filePath - Path to the file to backup
|
|
49
|
+
* @returns Path to the backup file
|
|
50
|
+
*/
|
|
51
|
+
async function backupFile(filePath) {
|
|
52
|
+
const dir = path.dirname(filePath);
|
|
53
|
+
const fileName = path.basename(filePath);
|
|
54
|
+
const today = new Date().toISOString().split('T')[0];
|
|
55
|
+
const backupFileName = `${fileName}.backup.${today}`;
|
|
56
|
+
const backupPath = path.join(dir, backupFileName);
|
|
57
|
+
// If backup already exists today, add a numeric suffix
|
|
58
|
+
let finalBackupPath = backupPath;
|
|
59
|
+
let counter = 1;
|
|
60
|
+
while (await fs.pathExists(finalBackupPath)) {
|
|
61
|
+
finalBackupPath = path.join(dir, `${fileName}.backup.${today}.${counter}`);
|
|
62
|
+
counter++;
|
|
63
|
+
}
|
|
64
|
+
await fs.copy(filePath, finalBackupPath);
|
|
65
|
+
return finalBackupPath;
|
|
66
|
+
}
|
|
67
|
+
/**
|
|
68
|
+
* Upgrade a single template file
|
|
69
|
+
*
|
|
70
|
+
* @param templateStatus - Template status from version check
|
|
71
|
+
* @param options - Upgrade options
|
|
72
|
+
* @returns Promise resolving to UpgradeResult
|
|
73
|
+
*/
|
|
74
|
+
async function upgradeTemplate(templateStatus, options) {
|
|
75
|
+
const { file, templateName } = templateStatus;
|
|
76
|
+
const { lang, vars, dryRun } = options;
|
|
77
|
+
try {
|
|
78
|
+
// Skip if dry run
|
|
79
|
+
if (dryRun) {
|
|
80
|
+
return {
|
|
81
|
+
success: true,
|
|
82
|
+
file,
|
|
83
|
+
backupPath: `${file}.backup.${new Date().toISOString().split('T')[0]} (dry run)`,
|
|
84
|
+
};
|
|
85
|
+
}
|
|
86
|
+
// Backup existing file
|
|
87
|
+
let backupPath;
|
|
88
|
+
if (await fs.pathExists(file)) {
|
|
89
|
+
backupPath = await backupFile(file);
|
|
90
|
+
}
|
|
91
|
+
// Load and render new template
|
|
92
|
+
const template = await (0, template_loader_1.loadTemplate)(templateName, lang);
|
|
93
|
+
const content = (0, template_loader_1.replaceTemplateVars)(template, vars);
|
|
94
|
+
// Write the upgraded template
|
|
95
|
+
await fs.writeFile(file, content, 'utf-8');
|
|
96
|
+
return {
|
|
97
|
+
success: true,
|
|
98
|
+
file,
|
|
99
|
+
backupPath,
|
|
100
|
+
};
|
|
101
|
+
}
|
|
102
|
+
catch (error) {
|
|
103
|
+
return {
|
|
104
|
+
success: false,
|
|
105
|
+
file,
|
|
106
|
+
error: error instanceof Error ? error.message : String(error),
|
|
107
|
+
};
|
|
108
|
+
}
|
|
109
|
+
}
|
|
110
|
+
/**
|
|
111
|
+
* Upgrade multiple templates
|
|
112
|
+
*
|
|
113
|
+
* @param templates - Array of template statuses to upgrade
|
|
114
|
+
* @param options - Upgrade options
|
|
115
|
+
* @returns Promise resolving to array of UpgradeResults
|
|
116
|
+
*/
|
|
117
|
+
async function upgradeTemplates(templates, options) {
|
|
118
|
+
const results = [];
|
|
119
|
+
for (const template of templates) {
|
|
120
|
+
const result = await upgradeTemplate(template, options);
|
|
121
|
+
results.push(result);
|
|
122
|
+
}
|
|
123
|
+
return results;
|
|
124
|
+
}
|
|
125
|
+
/**
|
|
126
|
+
* Extract variables from existing file for re-use during upgrade
|
|
127
|
+
*
|
|
128
|
+
* @param filePath - Path to existing file
|
|
129
|
+
* @returns Record of extracted variables
|
|
130
|
+
*/
|
|
131
|
+
async function extractVarsFromFile(filePath) {
|
|
132
|
+
const vars = {};
|
|
133
|
+
try {
|
|
134
|
+
const content = await fs.readFile(filePath, 'utf-8');
|
|
135
|
+
// Extract project name
|
|
136
|
+
const projectNameMatch = content.match(/\*\*(?:프로젝트명|Project Name)\*\*:\s*([^\n]+)/);
|
|
137
|
+
if (projectNameMatch) {
|
|
138
|
+
vars['PROJECT_NAME'] = projectNameMatch[1].trim();
|
|
139
|
+
vars['프로젝트명'] = projectNameMatch[1].trim();
|
|
140
|
+
}
|
|
141
|
+
// Extract tech stack
|
|
142
|
+
const techStackMatch = content.match(/\*\*(?:기술 스택|Tech Stack)\*\*:\s*([^\n]+)/);
|
|
143
|
+
if (techStackMatch) {
|
|
144
|
+
vars['TECH_STACK'] = techStackMatch[1].trim();
|
|
145
|
+
vars['기술 스택'] = techStackMatch[1].trim();
|
|
146
|
+
}
|
|
147
|
+
// Extract project type
|
|
148
|
+
const projectTypeMatch = content.match(/\*\*(?:프로젝트 타입|Project Type)\*\*:\s*([^\n]+)/);
|
|
149
|
+
if (projectTypeMatch) {
|
|
150
|
+
vars['PROJECT_TYPE'] = projectTypeMatch[1].trim();
|
|
151
|
+
vars['프로젝트 타입'] = projectTypeMatch[1].trim();
|
|
152
|
+
}
|
|
153
|
+
// Extract GitHub username
|
|
154
|
+
const githubMatch = content.match(/github\.com\/([^/\s]+)/i);
|
|
155
|
+
if (githubMatch) {
|
|
156
|
+
vars['GITHUB_USERNAME'] = githubMatch[1];
|
|
157
|
+
}
|
|
158
|
+
}
|
|
159
|
+
catch (error) {
|
|
160
|
+
// Ignore extraction errors
|
|
161
|
+
}
|
|
162
|
+
return vars;
|
|
163
|
+
}
|
|
164
|
+
/**
|
|
165
|
+
* Get template variables from .claude directory context
|
|
166
|
+
*
|
|
167
|
+
* @param claudeDir - Path to .claude directory
|
|
168
|
+
* @param lang - Language to use
|
|
169
|
+
* @returns Record of template variables
|
|
170
|
+
*/
|
|
171
|
+
async function getTemplateVarsFromContext(claudeDir, lang) {
|
|
172
|
+
const vars = {};
|
|
173
|
+
// Try to extract from CLAUDE.md first
|
|
174
|
+
const claudeMdPath = path.join(claudeDir, 'CLAUDE.md');
|
|
175
|
+
if (await fs.pathExists(claudeMdPath)) {
|
|
176
|
+
const extracted = await extractVarsFromFile(claudeMdPath);
|
|
177
|
+
Object.assign(vars, extracted);
|
|
178
|
+
}
|
|
179
|
+
// Default values if not found
|
|
180
|
+
const projectDir = path.dirname(claudeDir);
|
|
181
|
+
if (!vars['PROJECT_NAME']) {
|
|
182
|
+
vars['PROJECT_NAME'] = path.basename(projectDir);
|
|
183
|
+
vars['프로젝트명'] = path.basename(projectDir);
|
|
184
|
+
}
|
|
185
|
+
if (!vars['TECH_STACK']) {
|
|
186
|
+
vars['TECH_STACK'] = 'TypeScript';
|
|
187
|
+
vars['기술 스택'] = 'TypeScript';
|
|
188
|
+
}
|
|
189
|
+
if (!vars['GITHUB_USERNAME']) {
|
|
190
|
+
vars['GITHUB_USERNAME'] = 'your-username';
|
|
191
|
+
}
|
|
192
|
+
// Add date
|
|
193
|
+
const today = new Date().toISOString().split('T')[0];
|
|
194
|
+
vars['TODAY'] = today;
|
|
195
|
+
vars['오늘 날짜'] = today;
|
|
196
|
+
return vars;
|
|
197
|
+
}
|
|
198
|
+
/**
|
|
199
|
+
* Format upgrade summary for display
|
|
200
|
+
*
|
|
201
|
+
* @param results - Array of upgrade results
|
|
202
|
+
* @param lang - Language for messages
|
|
203
|
+
* @returns Formatted summary string
|
|
204
|
+
*/
|
|
205
|
+
function formatUpgradeSummary(results, lang) {
|
|
206
|
+
const successful = results.filter((r) => r.success);
|
|
207
|
+
const failed = results.filter((r) => !r.success);
|
|
208
|
+
const lines = [];
|
|
209
|
+
if (lang === 'ko') {
|
|
210
|
+
if (successful.length > 0) {
|
|
211
|
+
lines.push(`✅ ${successful.length}개 파일 업그레이드 완료:`);
|
|
212
|
+
successful.forEach((r) => {
|
|
213
|
+
const fileName = path.basename(r.file);
|
|
214
|
+
lines.push(` • ${fileName}`);
|
|
215
|
+
if (r.backupPath) {
|
|
216
|
+
lines.push(` 백업: ${path.basename(r.backupPath)}`);
|
|
217
|
+
}
|
|
218
|
+
});
|
|
219
|
+
}
|
|
220
|
+
if (failed.length > 0) {
|
|
221
|
+
lines.push(`❌ ${failed.length}개 파일 업그레이드 실패:`);
|
|
222
|
+
failed.forEach((r) => {
|
|
223
|
+
const fileName = path.basename(r.file);
|
|
224
|
+
lines.push(` • ${fileName}: ${r.error}`);
|
|
225
|
+
});
|
|
226
|
+
}
|
|
227
|
+
}
|
|
228
|
+
else {
|
|
229
|
+
if (successful.length > 0) {
|
|
230
|
+
lines.push(`✅ ${successful.length} file(s) upgraded:`);
|
|
231
|
+
successful.forEach((r) => {
|
|
232
|
+
const fileName = path.basename(r.file);
|
|
233
|
+
lines.push(` • ${fileName}`);
|
|
234
|
+
if (r.backupPath) {
|
|
235
|
+
lines.push(` Backup: ${path.basename(r.backupPath)}`);
|
|
236
|
+
}
|
|
237
|
+
});
|
|
238
|
+
}
|
|
239
|
+
if (failed.length > 0) {
|
|
240
|
+
lines.push(`❌ ${failed.length} file(s) failed:`);
|
|
241
|
+
failed.forEach((r) => {
|
|
242
|
+
const fileName = path.basename(r.file);
|
|
243
|
+
lines.push(` • ${fileName}: ${r.error}`);
|
|
244
|
+
});
|
|
245
|
+
}
|
|
246
|
+
}
|
|
247
|
+
return lines.join('\n');
|
|
248
|
+
}
|
|
249
|
+
//# sourceMappingURL=template-upgrader.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"template-upgrader.js","sourceRoot":"","sources":["../../src/utils/template-upgrader.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Mapping of .claude file names to template names
|
|
3
|
+
*/
|
|
4
|
+
export declare const TEMPLATE_FILE_MAP: Record<string, string>;
|
|
5
|
+
/**
|
|
6
|
+
* Template status information for upgrade checks
|
|
7
|
+
*/
|
|
8
|
+
export interface TemplateStatus {
|
|
9
|
+
file: string;
|
|
10
|
+
templateName: string;
|
|
11
|
+
currentVersion: string | null;
|
|
12
|
+
latestVersion: string;
|
|
13
|
+
isOutdated: boolean;
|
|
14
|
+
}
|
|
15
|
+
/**
|
|
16
|
+
* Extract template version from file content
|
|
17
|
+
*
|
|
18
|
+
* @param content - File content to extract version from
|
|
19
|
+
* @returns Version string or null if not found
|
|
20
|
+
*/
|
|
21
|
+
export declare function extractTemplateVersion(content: string): string | null;
|
|
22
|
+
/**
|
|
23
|
+
* Compare two semantic versions
|
|
24
|
+
*
|
|
25
|
+
* @param v1 - First version string (e.g., "3.0.0")
|
|
26
|
+
* @param v2 - Second version string (e.g., "3.0.1")
|
|
27
|
+
* @returns -1 if v1 < v2, 0 if v1 === v2, 1 if v1 > v2
|
|
28
|
+
*/
|
|
29
|
+
export declare function compareVersions(v1: string, v2: string): number;
|
|
30
|
+
/**
|
|
31
|
+
* Check if a file's template version is outdated compared to current package version
|
|
32
|
+
*
|
|
33
|
+
* @param filePath - Path to the file to check
|
|
34
|
+
* @returns Promise resolving to TemplateStatus
|
|
35
|
+
*/
|
|
36
|
+
export declare function checkTemplateVersion(filePath: string): Promise<TemplateStatus>;
|
|
37
|
+
/**
|
|
38
|
+
* Scan a .claude directory for template files and check their versions
|
|
39
|
+
*
|
|
40
|
+
* @param claudeDir - Path to the .claude directory
|
|
41
|
+
* @returns Promise resolving to array of TemplateStatus objects
|
|
42
|
+
*/
|
|
43
|
+
export declare function scanTemplateVersions(claudeDir: string): Promise<TemplateStatus[]>;
|
|
44
|
+
/**
|
|
45
|
+
* Get all outdated templates from a .claude directory
|
|
46
|
+
*
|
|
47
|
+
* @param claudeDir - Path to the .claude directory
|
|
48
|
+
* @returns Promise resolving to array of outdated TemplateStatus objects
|
|
49
|
+
*/
|
|
50
|
+
export declare function getOutdatedTemplates(claudeDir: string): Promise<TemplateStatus[]>;
|
|
51
|
+
/**
|
|
52
|
+
* Check if any templates in a .claude directory need upgrading
|
|
53
|
+
*
|
|
54
|
+
* @param claudeDir - Path to the .claude directory
|
|
55
|
+
* @returns Promise resolving to boolean
|
|
56
|
+
*/
|
|
57
|
+
export declare function hasOutdatedTemplates(claudeDir: string): Promise<boolean>;
|
|
58
|
+
/**
|
|
59
|
+
* Get the current package version (for display purposes)
|
|
60
|
+
*
|
|
61
|
+
* @returns Current package version string
|
|
62
|
+
*/
|
|
63
|
+
export declare function getCurrentVersion(): string;
|
|
64
|
+
//# sourceMappingURL=template-version.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"template-version.d.ts","sourceRoot":"","sources":["../../src/utils/template-version.ts"],"names":[],"mappings":"AAkBA;;GAEG;AACH,eAAO,MAAM,iBAAiB,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAKpD,CAAC;AAEF;;GAEG;AACH,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,MAAM,CAAC;IACb,YAAY,EAAE,MAAM,CAAC;IACrB,cAAc,EAAE,MAAM,GAAG,IAAI,CAAC;IAC9B,aAAa,EAAE,MAAM,CAAC;IACtB,UAAU,EAAE,OAAO,CAAC;CACrB;AAED;;;;;GAKG;AACH,wBAAgB,sBAAsB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAGrE;AAED;;;;;;GAMG;AACH,wBAAgB,eAAe,CAAC,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,GAAG,MAAM,CAa9D;AAED;;;;;GAKG;AACH,wBAAsB,oBAAoB,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,cAAc,CAAC,CA8BpF;AAED;;;;;GAKG;AACH,wBAAsB,oBAAoB,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,cAAc,EAAE,CAAC,CAavF;AAED;;;;;GAKG;AACH,wBAAsB,oBAAoB,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,cAAc,EAAE,CAAC,CAGvF;AAED;;;;;GAKG;AACH,wBAAsB,oBAAoB,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAG9E;AAED;;;;GAIG;AACH,wBAAgB,iBAAiB,IAAI,MAAM,CAE1C"}
|
|
@@ -0,0 +1,177 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
+
}) : function(o, v) {
|
|
16
|
+
o["default"] = v;
|
|
17
|
+
});
|
|
18
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
19
|
+
var ownKeys = function(o) {
|
|
20
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
21
|
+
var ar = [];
|
|
22
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
23
|
+
return ar;
|
|
24
|
+
};
|
|
25
|
+
return ownKeys(o);
|
|
26
|
+
};
|
|
27
|
+
return function (mod) {
|
|
28
|
+
if (mod && mod.__esModule) return mod;
|
|
29
|
+
var result = {};
|
|
30
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
31
|
+
__setModuleDefault(result, mod);
|
|
32
|
+
return result;
|
|
33
|
+
};
|
|
34
|
+
})();
|
|
35
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
36
|
+
exports.TEMPLATE_FILE_MAP = void 0;
|
|
37
|
+
exports.extractTemplateVersion = extractTemplateVersion;
|
|
38
|
+
exports.compareVersions = compareVersions;
|
|
39
|
+
exports.checkTemplateVersion = checkTemplateVersion;
|
|
40
|
+
exports.scanTemplateVersions = scanTemplateVersions;
|
|
41
|
+
exports.getOutdatedTemplates = getOutdatedTemplates;
|
|
42
|
+
exports.hasOutdatedTemplates = hasOutdatedTemplates;
|
|
43
|
+
exports.getCurrentVersion = getCurrentVersion;
|
|
44
|
+
const fs = __importStar(require("fs-extra"));
|
|
45
|
+
const path = __importStar(require("path"));
|
|
46
|
+
const version_1 = require("./version");
|
|
47
|
+
/**
|
|
48
|
+
* Template version extraction and comparison utilities
|
|
49
|
+
*
|
|
50
|
+
* @codesyncer-context Supports template upgrade feature in update command
|
|
51
|
+
* @codesyncer-decision [2026-01-17] Using HTML comment format for version metadata
|
|
52
|
+
*/
|
|
53
|
+
/**
|
|
54
|
+
* Version metadata regex pattern
|
|
55
|
+
* Matches: <!-- codesyncer-version: X.Y.Z -->
|
|
56
|
+
*/
|
|
57
|
+
const VERSION_PATTERN = /<!--\s*codesyncer-version:\s*([\d.]+)\s*-->/;
|
|
58
|
+
/**
|
|
59
|
+
* Mapping of .claude file names to template names
|
|
60
|
+
*/
|
|
61
|
+
exports.TEMPLATE_FILE_MAP = {
|
|
62
|
+
'CLAUDE.md': 'claude',
|
|
63
|
+
'ARCHITECTURE.md': 'architecture',
|
|
64
|
+
'COMMENT_GUIDE.md': 'comment_guide',
|
|
65
|
+
'DECISIONS.md': 'decisions',
|
|
66
|
+
};
|
|
67
|
+
/**
|
|
68
|
+
* Extract template version from file content
|
|
69
|
+
*
|
|
70
|
+
* @param content - File content to extract version from
|
|
71
|
+
* @returns Version string or null if not found
|
|
72
|
+
*/
|
|
73
|
+
function extractTemplateVersion(content) {
|
|
74
|
+
const match = content.match(VERSION_PATTERN);
|
|
75
|
+
return match ? match[1] : null;
|
|
76
|
+
}
|
|
77
|
+
/**
|
|
78
|
+
* Compare two semantic versions
|
|
79
|
+
*
|
|
80
|
+
* @param v1 - First version string (e.g., "3.0.0")
|
|
81
|
+
* @param v2 - Second version string (e.g., "3.0.1")
|
|
82
|
+
* @returns -1 if v1 < v2, 0 if v1 === v2, 1 if v1 > v2
|
|
83
|
+
*/
|
|
84
|
+
function compareVersions(v1, v2) {
|
|
85
|
+
const parts1 = v1.split('.').map(Number);
|
|
86
|
+
const parts2 = v2.split('.').map(Number);
|
|
87
|
+
for (let i = 0; i < Math.max(parts1.length, parts2.length); i++) {
|
|
88
|
+
const p1 = parts1[i] || 0;
|
|
89
|
+
const p2 = parts2[i] || 0;
|
|
90
|
+
if (p1 < p2)
|
|
91
|
+
return -1;
|
|
92
|
+
if (p1 > p2)
|
|
93
|
+
return 1;
|
|
94
|
+
}
|
|
95
|
+
return 0;
|
|
96
|
+
}
|
|
97
|
+
/**
|
|
98
|
+
* Check if a file's template version is outdated compared to current package version
|
|
99
|
+
*
|
|
100
|
+
* @param filePath - Path to the file to check
|
|
101
|
+
* @returns Promise resolving to TemplateStatus
|
|
102
|
+
*/
|
|
103
|
+
async function checkTemplateVersion(filePath) {
|
|
104
|
+
const fileName = path.basename(filePath);
|
|
105
|
+
const templateName = exports.TEMPLATE_FILE_MAP[fileName] || fileName.toLowerCase().replace('.md', '');
|
|
106
|
+
let currentVersion = null;
|
|
107
|
+
let isOutdated = false;
|
|
108
|
+
try {
|
|
109
|
+
const content = await fs.readFile(filePath, 'utf-8');
|
|
110
|
+
currentVersion = extractTemplateVersion(content);
|
|
111
|
+
if (currentVersion) {
|
|
112
|
+
isOutdated = compareVersions(currentVersion, version_1.VERSION) < 0;
|
|
113
|
+
}
|
|
114
|
+
else {
|
|
115
|
+
// No version found means it's from before versioning was added
|
|
116
|
+
// Consider it outdated
|
|
117
|
+
isOutdated = true;
|
|
118
|
+
}
|
|
119
|
+
}
|
|
120
|
+
catch (error) {
|
|
121
|
+
// File doesn't exist or can't be read
|
|
122
|
+
isOutdated = false;
|
|
123
|
+
}
|
|
124
|
+
return {
|
|
125
|
+
file: filePath,
|
|
126
|
+
templateName,
|
|
127
|
+
currentVersion,
|
|
128
|
+
latestVersion: version_1.VERSION,
|
|
129
|
+
isOutdated,
|
|
130
|
+
};
|
|
131
|
+
}
|
|
132
|
+
/**
|
|
133
|
+
* Scan a .claude directory for template files and check their versions
|
|
134
|
+
*
|
|
135
|
+
* @param claudeDir - Path to the .claude directory
|
|
136
|
+
* @returns Promise resolving to array of TemplateStatus objects
|
|
137
|
+
*/
|
|
138
|
+
async function scanTemplateVersions(claudeDir) {
|
|
139
|
+
const results = [];
|
|
140
|
+
for (const fileName of Object.keys(exports.TEMPLATE_FILE_MAP)) {
|
|
141
|
+
const filePath = path.join(claudeDir, fileName);
|
|
142
|
+
if (await fs.pathExists(filePath)) {
|
|
143
|
+
const status = await checkTemplateVersion(filePath);
|
|
144
|
+
results.push(status);
|
|
145
|
+
}
|
|
146
|
+
}
|
|
147
|
+
return results;
|
|
148
|
+
}
|
|
149
|
+
/**
|
|
150
|
+
* Get all outdated templates from a .claude directory
|
|
151
|
+
*
|
|
152
|
+
* @param claudeDir - Path to the .claude directory
|
|
153
|
+
* @returns Promise resolving to array of outdated TemplateStatus objects
|
|
154
|
+
*/
|
|
155
|
+
async function getOutdatedTemplates(claudeDir) {
|
|
156
|
+
const allTemplates = await scanTemplateVersions(claudeDir);
|
|
157
|
+
return allTemplates.filter((t) => t.isOutdated);
|
|
158
|
+
}
|
|
159
|
+
/**
|
|
160
|
+
* Check if any templates in a .claude directory need upgrading
|
|
161
|
+
*
|
|
162
|
+
* @param claudeDir - Path to the .claude directory
|
|
163
|
+
* @returns Promise resolving to boolean
|
|
164
|
+
*/
|
|
165
|
+
async function hasOutdatedTemplates(claudeDir) {
|
|
166
|
+
const outdated = await getOutdatedTemplates(claudeDir);
|
|
167
|
+
return outdated.length > 0;
|
|
168
|
+
}
|
|
169
|
+
/**
|
|
170
|
+
* Get the current package version (for display purposes)
|
|
171
|
+
*
|
|
172
|
+
* @returns Current package version string
|
|
173
|
+
*/
|
|
174
|
+
function getCurrentVersion() {
|
|
175
|
+
return version_1.VERSION;
|
|
176
|
+
}
|
|
177
|
+
//# sourceMappingURL=template-version.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"template-version.js","sourceRoot":"","sources":["../../src/utils/template-version.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -177,3 +177,5 @@ Both formats work identically, so use whichever you prefer!
|
|
|
177
177
|
|
|
178
178
|
*CodeSyncer - Persistent context, controlled inference, live architecture sync for Claude Code*
|
|
179
179
|
*Currently Supported: Claude Code | Coming Soon: Cursor, GitHub Copilot, Continue.dev*
|
|
180
|
+
|
|
181
|
+
<!-- codesyncer-version: 3.1.0 -->
|