tanmi-dock 1.0.3 → 1.0.4
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 +18 -0
- package/dist/commands/calibrate.d.ts +10 -0
- package/dist/commands/calibrate.d.ts.map +1 -0
- package/dist/commands/calibrate.js +158 -0
- package/dist/commands/calibrate.js.map +1 -0
- package/dist/commands/check.d.ts +9 -1
- package/dist/commands/check.d.ts.map +1 -1
- package/dist/commands/check.js +261 -94
- package/dist/commands/check.js.map +1 -1
- package/dist/commands/clean.d.ts +2 -6
- package/dist/commands/clean.d.ts.map +1 -1
- package/dist/commands/clean.js +224 -209
- package/dist/commands/clean.js.map +1 -1
- package/dist/commands/dashboard.d.ts.map +1 -1
- package/dist/commands/dashboard.js +56 -28
- package/dist/commands/dashboard.js.map +1 -1
- package/dist/commands/link.d.ts +6 -6
- package/dist/commands/link.d.ts.map +1 -1
- package/dist/commands/link.js +417 -196
- package/dist/commands/link.js.map +1 -1
- package/dist/commands/migrate.d.ts +11 -0
- package/dist/commands/migrate.d.ts.map +1 -1
- package/dist/commands/migrate.js +277 -57
- package/dist/commands/migrate.js.map +1 -1
- package/dist/commands/reset.d.ts.map +1 -1
- package/dist/commands/reset.js +19 -24
- package/dist/commands/reset.js.map +1 -1
- package/dist/commands/status.d.ts +4 -0
- package/dist/commands/status.d.ts.map +1 -1
- package/dist/commands/status.js +37 -20
- package/dist/commands/status.js.map +1 -1
- package/dist/commands/unavailable.js.map +1 -1
- package/dist/commands/unlink.d.ts.map +1 -1
- package/dist/commands/unlink.js +43 -39
- package/dist/commands/unlink.js.map +1 -1
- package/dist/core/config.d.ts +3 -1
- package/dist/core/config.d.ts.map +1 -1
- package/dist/core/config.js +6 -3
- package/dist/core/config.js.map +1 -1
- package/dist/core/parser.js +1 -1
- package/dist/core/parser.js.map +1 -1
- package/dist/core/registry.d.ts +11 -29
- package/dist/core/registry.d.ts.map +1 -1
- package/dist/core/registry.js +46 -113
- package/dist/core/registry.js.map +1 -1
- package/dist/core/space/calibration-executor.d.ts +16 -0
- package/dist/core/space/calibration-executor.d.ts.map +1 -0
- package/dist/core/space/calibration-executor.js +142 -0
- package/dist/core/space/calibration-executor.js.map +1 -0
- package/dist/core/space/calibration-planner.d.ts +5 -0
- package/dist/core/space/calibration-planner.d.ts.map +1 -0
- package/dist/core/space/calibration-planner.js +157 -0
- package/dist/core/space/calibration-planner.js.map +1 -0
- package/dist/core/space/cleanup-executor.d.ts +15 -0
- package/dist/core/space/cleanup-executor.d.ts.map +1 -0
- package/dist/core/space/cleanup-executor.js +188 -0
- package/dist/core/space/cleanup-executor.js.map +1 -0
- package/dist/core/space/cleanup-journal.d.ts +43 -0
- package/dist/core/space/cleanup-journal.d.ts.map +1 -0
- package/dist/core/space/cleanup-journal.js +96 -0
- package/dist/core/space/cleanup-journal.js.map +1 -0
- package/dist/core/space/cleanup-planner.d.ts +14 -0
- package/dist/core/space/cleanup-planner.d.ts.map +1 -0
- package/dist/core/space/cleanup-planner.js +166 -0
- package/dist/core/space/cleanup-planner.js.map +1 -0
- package/dist/core/space/cleanup-selection.d.ts +10 -0
- package/dist/core/space/cleanup-selection.d.ts.map +1 -0
- package/dist/core/space/cleanup-selection.js +84 -0
- package/dist/core/space/cleanup-selection.js.map +1 -0
- package/dist/core/space/estimator.d.ts +11 -0
- package/dist/core/space/estimator.d.ts.map +1 -0
- package/dist/core/space/estimator.js +142 -0
- package/dist/core/space/estimator.js.map +1 -0
- package/dist/core/space/inventory.d.ts +15 -0
- package/dist/core/space/inventory.d.ts.map +1 -0
- package/dist/core/space/inventory.js +587 -0
- package/dist/core/space/inventory.js.map +1 -0
- package/dist/core/space/meter.d.ts +5 -0
- package/dist/core/space/meter.d.ts.map +1 -0
- package/dist/core/space/meter.js +87 -0
- package/dist/core/space/meter.js.map +1 -0
- package/dist/core/space/migration-journal.d.ts +31 -0
- package/dist/core/space/migration-journal.d.ts.map +1 -0
- package/dist/core/space/migration-journal.js +121 -0
- package/dist/core/space/migration-journal.js.map +1 -0
- package/dist/core/space/service.d.ts +26 -0
- package/dist/core/space/service.d.ts.map +1 -0
- package/dist/core/space/service.js +54 -0
- package/dist/core/space/service.js.map +1 -0
- package/dist/core/space/types.d.ts +241 -0
- package/dist/core/space/types.d.ts.map +1 -0
- package/dist/core/space/types.js +13 -0
- package/dist/core/space/types.js.map +1 -0
- package/dist/core/store.d.ts.map +1 -1
- package/dist/core/store.js +12 -6
- package/dist/core/store.js.map +1 -1
- package/dist/index.js +2 -0
- package/dist/index.js.map +1 -1
- package/dist/types/index.d.ts +2 -0
- package/dist/types/index.d.ts.map +1 -1
- package/dist/utils/atomic-file.d.ts +6 -0
- package/dist/utils/atomic-file.d.ts.map +1 -0
- package/dist/utils/atomic-file.js +37 -0
- package/dist/utils/atomic-file.js.map +1 -0
- package/dist/utils/fs-utils.d.ts +18 -1
- package/dist/utils/fs-utils.d.ts.map +1 -1
- package/dist/utils/fs-utils.js +150 -2
- package/dist/utils/fs-utils.js.map +1 -1
- package/dist/utils/logger.d.ts +1 -1
- package/dist/utils/logger.js +2 -2
- package/dist/utils/prompt.d.ts.map +1 -1
- package/dist/utils/prompt.js +4 -4
- package/dist/utils/prompt.js.map +1 -1
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -72,6 +72,7 @@ td status
|
|
|
72
72
|
| `td status` | 查看当前项目状态 |
|
|
73
73
|
| `td projects` | 列出所有已链接项目 |
|
|
74
74
|
| `td clean` | 清理无引用的库 |
|
|
75
|
+
| `td calibrate` | 按 Store 实际状态校准空间登记 |
|
|
75
76
|
| `td unlink` | 解除链接,恢复为目录 |
|
|
76
77
|
| `td config` | 交互式配置 |
|
|
77
78
|
| `td check` | 环境诊断和数据一致性检查 |
|
|
@@ -135,6 +136,21 @@ td config set <key> <value> # 设置配置
|
|
|
135
136
|
| `capacity` | 无引用库超过阈值时提示清理 |
|
|
136
137
|
| `manual` | 不自动清理 |
|
|
137
138
|
|
|
139
|
+
### 空间数据含义
|
|
140
|
+
|
|
141
|
+
- **实际占用**来自当前 Store 目录的磁盘测量。
|
|
142
|
+
- **登记容量**来自 StoreEntry 最近一次记录,可能与当前磁盘存在差异。
|
|
143
|
+
- **预计释放**在清理确认前按本次计划目标重新测量,包含同版本 `_shared`,且只计算一次。
|
|
144
|
+
- **项目依赖容量**按项目实际引用的平台和共享内容去重计算。
|
|
145
|
+
- **共享节省与下载容量**属于估算值;历史依据不足时显示容量未知。
|
|
146
|
+
|
|
147
|
+
`td check --json` 可以查看测量依据、结果质量和磁盘与登记容量差异。
|
|
148
|
+
|
|
149
|
+
当检查发现登记容量过期、目录缺失、重复共享登记或未登记平台时,运行
|
|
150
|
+
`td calibrate` 统一处理。命令会更新容量、移除失效登记并合并重复共享记录;
|
|
151
|
+
未登记平台只提供整体“暂不处理”或“删除无项目引用内容”两种选择,默认保留。
|
|
152
|
+
`td calibrate --dry-run` 完全只读,`td calibrate --yes` 使用默认保留策略并跳过确认。
|
|
153
|
+
|
|
138
154
|
## 工作原理
|
|
139
155
|
|
|
140
156
|
```
|
|
@@ -189,6 +205,8 @@ td projects --tree # 树状显示库引用关系
|
|
|
189
205
|
td migrate /Volumes/Data/.tanmi-dock/store
|
|
190
206
|
```
|
|
191
207
|
|
|
208
|
+
迁移要求目标目录为空。复制先进入专用暂存目录,保留符号链接并更新指向旧 Store 内部的绝对链接;验证通过后才切换配置和项目链接。进程中断后,再次运行 `td migrate` 会根据迁移日志继续执行。
|
|
209
|
+
|
|
192
210
|
## 更多文档
|
|
193
211
|
|
|
194
212
|
- [CLI 完整文档](docs/CLI.md) - 所有命令的详细参数和示例
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { Command } from 'commander';
|
|
2
|
+
interface CalibrateOptions {
|
|
3
|
+
dryRun: boolean;
|
|
4
|
+
yes: boolean;
|
|
5
|
+
}
|
|
6
|
+
/** 执行一次空间校准。非 dry-run 调用方必须持有全局锁。 */
|
|
7
|
+
export declare function calibrateStore(options: CalibrateOptions): Promise<void>;
|
|
8
|
+
export declare function createCalibrateCommand(): Command;
|
|
9
|
+
export default createCalibrateCommand;
|
|
10
|
+
//# sourceMappingURL=calibrate.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"calibrate.d.ts","sourceRoot":"","sources":["../../src/commands/calibrate.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAsBpC,UAAU,gBAAgB;IACxB,MAAM,EAAE,OAAO,CAAC;IAChB,GAAG,EAAE,OAAO,CAAC;CACd;AAgED,qCAAqC;AACrC,wBAAsB,cAAc,CAAC,OAAO,EAAE,gBAAgB,GAAG,OAAO,CAAC,IAAI,CAAC,CA2F7E;AAED,wBAAgB,sBAAsB,IAAI,OAAO,CAehD;AAED,eAAe,sBAAsB,CAAC"}
|
|
@@ -0,0 +1,158 @@
|
|
|
1
|
+
import { Command } from 'commander';
|
|
2
|
+
import { ensureInitialized } from '../core/guard.js';
|
|
3
|
+
import * as config from '../core/config.js';
|
|
4
|
+
import { getRegistry } from '../core/registry.js';
|
|
5
|
+
import { SpaceService } from '../core/space/service.js';
|
|
6
|
+
import { formatSize } from '../utils/disk.js';
|
|
7
|
+
import { withGlobalLock } from '../utils/global-lock.js';
|
|
8
|
+
import { blank, debug, error, hint, info, separator, success, title, verboseJson, warn, } from '../utils/logger.js';
|
|
9
|
+
import { confirmAction, PROMPT_CANCELLED, selectOption } from '../utils/prompt.js';
|
|
10
|
+
function formatSignedSize(bytes) {
|
|
11
|
+
const sign = bytes > 0 ? '+' : bytes < 0 ? '-' : '';
|
|
12
|
+
return `${sign}${formatSize(Math.abs(bytes))}`;
|
|
13
|
+
}
|
|
14
|
+
function renderPlan(plan, choice) {
|
|
15
|
+
title('空间校准检查:');
|
|
16
|
+
info(` 登记容量变化 ${plan.summary.changedCount} 项,合计 ${formatSignedSize(plan.summary.changedDifferenceBytes)}`);
|
|
17
|
+
info(` 目录缺失 ${plan.summary.missingCount} 项,登记容量 ${formatSize(plan.summary.missingRegisteredBytes)}`);
|
|
18
|
+
info(` 重复共享登记 ${plan.summary.duplicateSharedCount} 项`);
|
|
19
|
+
info(` 未登记平台 ${plan.unregistered.totalCount} 项,合计 ${formatSize(plan.unregistered.totalBytes)}`);
|
|
20
|
+
if (plan.unregistered.protectedCount > 0) {
|
|
21
|
+
info(` 引用保护 ${plan.unregistered.protectedCount} 项`);
|
|
22
|
+
}
|
|
23
|
+
info(` 系统文件 ${plan.summary.ignoredArtifactCount} 项,将忽略并保留`);
|
|
24
|
+
blank();
|
|
25
|
+
if (choice === 'delete-unreferenced') {
|
|
26
|
+
info(`未登记平台处理: 删除 ${plan.unregistered.deletableCount} 项无项目引用内容,预计释放 ${formatSize(plan.unregistered.deletableBytes)}`);
|
|
27
|
+
}
|
|
28
|
+
else {
|
|
29
|
+
info('未登记平台处理: 暂不处理');
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
function hasMetadataActions(plan) {
|
|
33
|
+
return plan.actions.length > 0;
|
|
34
|
+
}
|
|
35
|
+
async function chooseUnregisteredAction(plan, options) {
|
|
36
|
+
if (plan.unregistered.totalCount === 0 || options.dryRun || options.yes)
|
|
37
|
+
return 'keep';
|
|
38
|
+
blank();
|
|
39
|
+
const choice = await selectOption('未登记平台如何处理?', [
|
|
40
|
+
{
|
|
41
|
+
name: '暂不处理',
|
|
42
|
+
value: 'keep',
|
|
43
|
+
description: `保留全部 ${plan.unregistered.totalCount} 项内容`,
|
|
44
|
+
},
|
|
45
|
+
{
|
|
46
|
+
name: '删除无项目引用的内容',
|
|
47
|
+
value: 'delete-unreferenced',
|
|
48
|
+
description: `删除 ${plan.unregistered.deletableCount} 项,保留 ${plan.unregistered.protectedCount} 项`,
|
|
49
|
+
},
|
|
50
|
+
]);
|
|
51
|
+
if (choice === PROMPT_CANCELLED) {
|
|
52
|
+
info('已取消校准');
|
|
53
|
+
return null;
|
|
54
|
+
}
|
|
55
|
+
return choice;
|
|
56
|
+
}
|
|
57
|
+
/** 执行一次空间校准。非 dry-run 调用方必须持有全局锁。 */
|
|
58
|
+
export async function calibrateStore(options) {
|
|
59
|
+
debug(`[space] 校准命令输入: dryRun=${options.dryRun}, yes=${options.yes}, source=td-calibrate`);
|
|
60
|
+
const cfg = await config.load({ migrate: !options.dryRun });
|
|
61
|
+
if (!cfg)
|
|
62
|
+
throw new Error('配置文件不存在,请先运行 tanmi-dock init');
|
|
63
|
+
if (options.dryRun && config.checkConfigVersion(cfg) === 'migrate') {
|
|
64
|
+
throw new Error('配置需要迁移;dry-run 不会修改配置,请先运行一次普通命令完成迁移');
|
|
65
|
+
}
|
|
66
|
+
const registry = getRegistry();
|
|
67
|
+
await registry.load({ migrate: !options.dryRun });
|
|
68
|
+
const service = new SpaceService(registry, cfg.storePath);
|
|
69
|
+
const cleanupExecutor = service.createCleanupExecutor();
|
|
70
|
+
if (!options.dryRun) {
|
|
71
|
+
const recovered = await cleanupExecutor.recoverPending();
|
|
72
|
+
if (recovered > 0)
|
|
73
|
+
info(`恢复了 ${recovered} 个中断清理记录`);
|
|
74
|
+
}
|
|
75
|
+
else {
|
|
76
|
+
debug('[space] 校准 dry-run 跳过配置迁移、登记迁移、清理恢复和全局写锁');
|
|
77
|
+
}
|
|
78
|
+
info('扫描 Store 并核对登记数据...');
|
|
79
|
+
const snapshot = await service.buildSnapshot('audit');
|
|
80
|
+
const plan = service.buildCalibrationPlan(snapshot);
|
|
81
|
+
debug(`[space] 校准审计完成: plan=${plan.id}, snapshot=${snapshot.id}, changed=${plan.summary.changedCount}, changedDifference=${plan.summary.changedDifferenceBytes}, missing=${plan.summary.missingCount}, missingBytes=${plan.summary.missingRegisteredBytes}, duplicates=${plan.summary.duplicateSharedCount}, unregistered=${plan.unregistered.totalCount}, unregisteredBytes=${plan.unregistered.totalBytes}, deletable=${plan.unregistered.deletableCount}, protected=${plan.unregistered.protectedCount}, ignored=${plan.summary.ignoredArtifactCount}`);
|
|
82
|
+
verboseJson('[space] 校准计划 JSON', plan);
|
|
83
|
+
const choice = await chooseUnregisteredAction(plan, options);
|
|
84
|
+
if (!choice)
|
|
85
|
+
return;
|
|
86
|
+
blank();
|
|
87
|
+
renderPlan(plan, choice);
|
|
88
|
+
const willDelete = choice === 'delete-unreferenced' && plan.unregistered.deletableCount > 0;
|
|
89
|
+
if (!hasMetadataActions(plan) && !willDelete) {
|
|
90
|
+
if (plan.unregistered.totalCount > 0) {
|
|
91
|
+
success('登记数据无需调整,未登记平台按选择保留');
|
|
92
|
+
}
|
|
93
|
+
else {
|
|
94
|
+
success('空间登记与 Store 实际状态一致');
|
|
95
|
+
}
|
|
96
|
+
return;
|
|
97
|
+
}
|
|
98
|
+
if (options.dryRun) {
|
|
99
|
+
blank();
|
|
100
|
+
hint('dry-run 仅检查,不修改登记数据或 Store 内容');
|
|
101
|
+
return;
|
|
102
|
+
}
|
|
103
|
+
if (!options.yes) {
|
|
104
|
+
blank();
|
|
105
|
+
const confirmed = await confirmAction(`确认执行 ${plan.actions.length} 项登记校准${willDelete ? `并删除 ${plan.unregistered.deletableCount} 项未登记平台` : ''}?`, false);
|
|
106
|
+
if (confirmed === PROMPT_CANCELLED || !confirmed) {
|
|
107
|
+
info('已取消校准');
|
|
108
|
+
return;
|
|
109
|
+
}
|
|
110
|
+
}
|
|
111
|
+
blank();
|
|
112
|
+
separator();
|
|
113
|
+
info(`正在执行空间校准计划 ${plan.id}...`);
|
|
114
|
+
const result = await service.createCalibrationExecutor().execute(plan, {
|
|
115
|
+
deleteUnregistered: choice === 'delete-unreferenced',
|
|
116
|
+
});
|
|
117
|
+
const remainingPlan = service.buildCalibrationPlan(result.finalSnapshot);
|
|
118
|
+
blank();
|
|
119
|
+
const cleanupFailed = result.cleanup != null && result.cleanup.status !== 'completed';
|
|
120
|
+
if (cleanupFailed) {
|
|
121
|
+
warn(`空间校准部分完成: 更新 ${result.metadataActionCount} 项登记数据,未登记平台删除成功 ${result.cleanup.succeeded.length} 项、失败 ${result.cleanup.failed.length} 项`);
|
|
122
|
+
}
|
|
123
|
+
else {
|
|
124
|
+
success(`空间校准完成: 更新 ${result.metadataActionCount} 项登记数据`);
|
|
125
|
+
}
|
|
126
|
+
if (result.cleanup && !cleanupFailed) {
|
|
127
|
+
info(`未登记平台清理: 删除 ${result.cleanup.succeeded.length} 项,释放 ${formatSize(result.cleanup.released.bytes)}`);
|
|
128
|
+
}
|
|
129
|
+
if (remainingPlan.unregistered.totalCount > 0) {
|
|
130
|
+
info(`保留未登记平台: ${remainingPlan.unregistered.totalCount} 项`);
|
|
131
|
+
}
|
|
132
|
+
const remainingMetadataIssues = remainingPlan.actions.length;
|
|
133
|
+
if (remainingMetadataIssues > 0) {
|
|
134
|
+
warn(`重新检查仍发现 ${remainingMetadataIssues} 项登记差异,请查看详细日志`);
|
|
135
|
+
}
|
|
136
|
+
debug(`[space] 校准最终输出: plan=${plan.id}, finalSnapshot=${result.finalSnapshot.id}, remainingMetadata=${remainingMetadataIssues}, remainingUnregistered=${remainingPlan.unregistered.totalCount}, finalDifference=${result.finalSnapshot.totals.differenceBytes}`);
|
|
137
|
+
}
|
|
138
|
+
export function createCalibrateCommand() {
|
|
139
|
+
return new Command('calibrate')
|
|
140
|
+
.description('校准 Store 空间登记数据')
|
|
141
|
+
.option('--dry-run', '只检查并显示校准内容')
|
|
142
|
+
.option('--yes', '使用默认选项并跳过最终确认')
|
|
143
|
+
.action(async (options) => {
|
|
144
|
+
await ensureInitialized();
|
|
145
|
+
try {
|
|
146
|
+
if (options.dryRun)
|
|
147
|
+
await calibrateStore(options);
|
|
148
|
+
else
|
|
149
|
+
await withGlobalLock(() => calibrateStore(options));
|
|
150
|
+
}
|
|
151
|
+
catch (err) {
|
|
152
|
+
error(err.message);
|
|
153
|
+
process.exitCode = 1;
|
|
154
|
+
}
|
|
155
|
+
});
|
|
156
|
+
}
|
|
157
|
+
export default createCalibrateCommand;
|
|
158
|
+
//# sourceMappingURL=calibrate.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"calibrate.js","sourceRoot":"","sources":["../../src/commands/calibrate.ts"],"names":[],"mappings":"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"}
|
package/dist/commands/check.d.ts
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { Command } from 'commander';
|
|
2
2
|
import type { CodepacEnvironmentCheck } from '../core/codepac.js';
|
|
3
|
+
import type { SpaceIssue, StoreSpaceTotals } from '../core/space/types.js';
|
|
3
4
|
interface EnvironmentCheck {
|
|
4
5
|
codepac: {
|
|
5
6
|
ok: boolean;
|
|
@@ -56,7 +57,7 @@ interface IntegrityIssue {
|
|
|
56
57
|
commit: string;
|
|
57
58
|
platform: string;
|
|
58
59
|
reason: string;
|
|
59
|
-
kind?: 'integrity_mismatch' | 'shared_platform_conflict';
|
|
60
|
+
kind?: 'integrity_mismatch' | 'shared_platform_conflict' | 'missing_integrity_record';
|
|
60
61
|
conflictPlatforms?: string[];
|
|
61
62
|
expected: {
|
|
62
63
|
fileCount?: number;
|
|
@@ -73,11 +74,18 @@ interface IntegrityIssue {
|
|
|
73
74
|
interface CheckResult {
|
|
74
75
|
environment: EnvironmentCheck;
|
|
75
76
|
integrity: IntegrityIssue;
|
|
77
|
+
space: {
|
|
78
|
+
snapshotId?: string;
|
|
79
|
+
totals?: StoreSpaceTotals;
|
|
80
|
+
issues: SpaceIssue[];
|
|
81
|
+
error?: string;
|
|
82
|
+
};
|
|
76
83
|
summary: {
|
|
77
84
|
envErrors: number;
|
|
78
85
|
envWarnings: number;
|
|
79
86
|
integrityIssues: number;
|
|
80
87
|
reclaimableSize: number;
|
|
88
|
+
spaceIssues: number;
|
|
81
89
|
};
|
|
82
90
|
}
|
|
83
91
|
export declare function createCheckCommand(): Command;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"check.d.ts","sourceRoot":"","sources":["../../src/commands/check.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAEpC,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,oBAAoB,CAAC;
|
|
1
|
+
{"version":3,"file":"check.d.ts","sourceRoot":"","sources":["../../src/commands/check.ts"],"names":[],"mappings":"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"}
|