@better-i18n/cli 0.1.3 → 0.1.5
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 +39 -54
- package/dist/analyzer/index.d.ts +8 -2
- package/dist/analyzer/index.d.ts.map +1 -1
- package/dist/analyzer/index.js +133 -2
- package/dist/analyzer/index.js.map +1 -1
- package/dist/analyzer/rules/translation-function.d.ts.map +1 -1
- package/dist/analyzer/rules/translation-function.js +36 -21
- package/dist/analyzer/rules/translation-function.js.map +1 -1
- package/dist/analyzer/types.d.ts +40 -0
- package/dist/analyzer/types.d.ts.map +1 -1
- package/dist/commands/scan.d.ts.map +1 -1
- package/dist/commands/scan.js +18 -1
- package/dist/commands/scan.js.map +1 -1
- package/dist/commands/sync.d.ts +12 -0
- package/dist/commands/sync.d.ts.map +1 -0
- package/dist/commands/sync.js +574 -0
- package/dist/commands/sync.js.map +1 -0
- package/dist/index.d.ts +1 -1
- package/dist/index.js +8 -10
- package/dist/index.js.map +1 -1
- package/package.json +1 -1
- package/dist/commands/extract-keys.d.ts +0 -13
- package/dist/commands/extract-keys.d.ts.map +0 -1
- package/dist/commands/extract-keys.js +0 -347
- package/dist/commands/extract-keys.js.map +0 -1
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AACA;;;;;GAKG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AACA;;;;;GAKG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACjD,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AAEjD,OAAO;KACJ,IAAI,CAAC,aAAa,CAAC;KACnB,WAAW,CACV,sEAAsE,CACvE;KACA,OAAO,CAAC,OAAO,CAAC,CAAC;AAEpB,OAAO;KACJ,OAAO,CAAC,MAAM,CAAC;KACf,WAAW,CAAC,4CAA4C,CAAC;KACzD,MAAM,CAAC,kBAAkB,EAAE,gDAAgD,CAAC;KAC5E,MAAM,CAAC,qBAAqB,EAAE,6BAA6B,EAAE,QAAQ,CAAC;KACtE,MAAM,CACL,uBAAuB,EACvB,oDAAoD,EACpD,QAAQ,CACT;KACA,MAAM,CAAC,OAAO,EAAE,wCAAwC,CAAC;KACzD,MAAM,CAAC,MAAM,EAAE,+CAA+C,CAAC;KAC/D,MAAM,CAAC,UAAU,EAAE,4BAA4B,CAAC;KAChD,MAAM,CAAC,WAAW,EAAE,sBAAsB,CAAC;KAC3C,MAAM,CAAC,WAAW,CAAC,CAAC;AAEvB,OAAO;KACJ,OAAO,CAAC,MAAM,CAAC;KACf,WAAW,CAAC,uDAAuD,CAAC;KACpE,MAAM,CAAC,kBAAkB,EAAE,gDAAgD,CAAC;KAC5E,MAAM,CAAC,qBAAqB,EAAE,6BAA6B,EAAE,QAAQ,CAAC;KACtE,MAAM,CAAC,WAAW,EAAE,0CAA0C,CAAC;KAC/D,MAAM,CAAC,WAAW,EAAE,sBAAsB,CAAC;KAC3C,MAAM,CAAC,WAAW,CAAC,CAAC;AAEvB,OAAO,CAAC,KAAK,EAAE,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,13 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Extract translation keys command
|
|
3
|
-
*
|
|
4
|
-
* Extracts all t() function calls and organizes by namespace
|
|
5
|
-
*/
|
|
6
|
-
import type { ScanOptions } from "../analyzer/types.js";
|
|
7
|
-
export interface ExtractKeysOptions extends ScanOptions {
|
|
8
|
-
compare?: boolean;
|
|
9
|
-
locale?: string;
|
|
10
|
-
format: "eslint" | "json";
|
|
11
|
-
}
|
|
12
|
-
export declare function extractKeysCommand(options: ExtractKeysOptions): Promise<void>;
|
|
13
|
-
//# sourceMappingURL=extract-keys.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"extract-keys.d.ts","sourceRoot":"","sources":["../../src/commands/extract-keys.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAKH,OAAO,KAAK,EAAS,WAAW,EAAE,MAAM,sBAAsB,CAAC;AAI/D,MAAM,WAAW,kBAAmB,SAAQ,WAAW;IACrD,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,QAAQ,GAAG,MAAM,CAAC;CAC3B;AAED,wBAAsB,kBAAkB,CAAC,OAAO,EAAE,kBAAkB,iBA6InE"}
|
|
@@ -1,347 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Extract translation keys command
|
|
3
|
-
*
|
|
4
|
-
* Extracts all t() function calls and organizes by namespace
|
|
5
|
-
*/
|
|
6
|
-
import ora from "ora";
|
|
7
|
-
import { collectFiles } from "../analyzer/file-collector.js";
|
|
8
|
-
import { analyzeFile } from "../analyzer/index.js";
|
|
9
|
-
import { detectProjectContext } from "../context/detector.js";
|
|
10
|
-
import { bold, dim, green, red, yellow } from "../utils/colors.js";
|
|
11
|
-
export async function extractKeysCommand(options) {
|
|
12
|
-
const startTime = Date.now();
|
|
13
|
-
const isJson = options.format === "json";
|
|
14
|
-
const spinner = isJson
|
|
15
|
-
? {
|
|
16
|
-
start: () => { },
|
|
17
|
-
stop: () => { },
|
|
18
|
-
clear: () => { },
|
|
19
|
-
succeed: () => { },
|
|
20
|
-
fail: () => { },
|
|
21
|
-
warn: () => { },
|
|
22
|
-
}
|
|
23
|
-
: ora({ text: "Detecting project...", color: "cyan" }).start();
|
|
24
|
-
// Step 1: Detect project context
|
|
25
|
-
const rootDir = options.dir || process.cwd();
|
|
26
|
-
const context = await detectProjectContext(rootDir);
|
|
27
|
-
if (context) {
|
|
28
|
-
spinner.succeed(`Project: ${bold(context.workspaceId + "/" + context.projectSlug)}`);
|
|
29
|
-
}
|
|
30
|
-
else {
|
|
31
|
-
spinner.warn("No i18n.config.ts found, using defaults");
|
|
32
|
-
}
|
|
33
|
-
// Step 2: Collect files
|
|
34
|
-
spinner.start("Collecting files...");
|
|
35
|
-
const files = await collectFiles({
|
|
36
|
-
rootDir,
|
|
37
|
-
include: context?.lint?.include,
|
|
38
|
-
exclude: context?.lint?.exclude,
|
|
39
|
-
});
|
|
40
|
-
if (files.length === 0) {
|
|
41
|
-
spinner.fail("No .tsx or .jsx files found");
|
|
42
|
-
return;
|
|
43
|
-
}
|
|
44
|
-
spinner.succeed(`Found ${files.length} files`);
|
|
45
|
-
// Step 3: Analyze files for t() calls
|
|
46
|
-
spinner.start("Extracting translation keys...");
|
|
47
|
-
const allIssues = [];
|
|
48
|
-
for (const file of files) {
|
|
49
|
-
try {
|
|
50
|
-
const issues = await analyzeFile(file, context?.lint);
|
|
51
|
-
// Filter only translation function calls
|
|
52
|
-
const translationKeys = issues.filter((i) => i.type === "string-variable");
|
|
53
|
-
allIssues.push(...translationKeys);
|
|
54
|
-
}
|
|
55
|
-
catch (error) {
|
|
56
|
-
if (options.verbose) {
|
|
57
|
-
console.error(`Error analyzing ${file}:`, error);
|
|
58
|
-
}
|
|
59
|
-
}
|
|
60
|
-
}
|
|
61
|
-
spinner.clear();
|
|
62
|
-
// Step 4: Organize keys by namespace
|
|
63
|
-
const keysByNamespace = groupKeysByNamespace(allIssues);
|
|
64
|
-
const localKeys = {
|
|
65
|
-
project: context
|
|
66
|
-
? `${context.workspaceId}/${context.projectSlug}`
|
|
67
|
-
: "unknown",
|
|
68
|
-
namespaces: keysByNamespace,
|
|
69
|
-
totalCount: allIssues.length,
|
|
70
|
-
filesScanned: files.length,
|
|
71
|
-
};
|
|
72
|
-
// Step 5: Compare with CDN if requested
|
|
73
|
-
if (options.compare && context?.cdnBaseUrl) {
|
|
74
|
-
const locale = options.locale || context.defaultLocale || "en";
|
|
75
|
-
spinner.start(`Comparing with CDN (${locale})...`);
|
|
76
|
-
try {
|
|
77
|
-
const remoteKeys = await fetchRemoteKeys(context.cdnBaseUrl, context.workspaceId, context.projectSlug, locale);
|
|
78
|
-
spinner.succeed(`Fetched ${Object.keys(remoteKeys).length} namespaces from CDN`);
|
|
79
|
-
// Compare
|
|
80
|
-
const comparison = compareKeys(localKeys.namespaces, remoteKeys);
|
|
81
|
-
const duration = Date.now() - startTime;
|
|
82
|
-
// Report comparison
|
|
83
|
-
if (options.format === "json") {
|
|
84
|
-
const output = {
|
|
85
|
-
comparison: {
|
|
86
|
-
localKeys,
|
|
87
|
-
remoteKeys: {
|
|
88
|
-
namespaces: remoteKeys,
|
|
89
|
-
totalCount: countTotalKeys(remoteKeys),
|
|
90
|
-
},
|
|
91
|
-
missingKeys: comparison.missing,
|
|
92
|
-
unusedKeys: comparison.unused,
|
|
93
|
-
coverage: {
|
|
94
|
-
local: calculateCoverage(localKeys.totalCount, comparison.missing),
|
|
95
|
-
remote: calculateRemoteCoverage(localKeys.namespaces, remoteKeys),
|
|
96
|
-
},
|
|
97
|
-
},
|
|
98
|
-
files: files.length,
|
|
99
|
-
duration,
|
|
100
|
-
};
|
|
101
|
-
console.log(JSON.stringify(output, null, 2));
|
|
102
|
-
}
|
|
103
|
-
else {
|
|
104
|
-
reportComparisonReport(localKeys, remoteKeys, comparison, duration);
|
|
105
|
-
}
|
|
106
|
-
}
|
|
107
|
-
catch (error) {
|
|
108
|
-
spinner.fail(`Failed to fetch remote keys: ${error instanceof Error ? error.message : String(error)}`);
|
|
109
|
-
reportLocalKeys(localKeys, allIssues.length, Date.now() - startTime);
|
|
110
|
-
}
|
|
111
|
-
}
|
|
112
|
-
else {
|
|
113
|
-
// Just report local keys
|
|
114
|
-
const duration = Date.now() - startTime;
|
|
115
|
-
if (options.format === "json") {
|
|
116
|
-
const output = {
|
|
117
|
-
localKeys,
|
|
118
|
-
files: files.length,
|
|
119
|
-
duration,
|
|
120
|
-
};
|
|
121
|
-
console.log(JSON.stringify(output, null, 2));
|
|
122
|
-
}
|
|
123
|
-
else {
|
|
124
|
-
reportLocalKeys(localKeys, allIssues.length, duration);
|
|
125
|
-
}
|
|
126
|
-
}
|
|
127
|
-
}
|
|
128
|
-
/**
|
|
129
|
-
* Group keys by namespace
|
|
130
|
-
*/
|
|
131
|
-
function groupKeysByNamespace(issues) {
|
|
132
|
-
const result = {};
|
|
133
|
-
for (const issue of issues) {
|
|
134
|
-
if (!issue.key)
|
|
135
|
-
continue;
|
|
136
|
-
const parts = issue.key.split(".");
|
|
137
|
-
const namespace = parts.length > 1 ? parts[0] : "default";
|
|
138
|
-
const fullKey = issue.key;
|
|
139
|
-
if (!result[namespace]) {
|
|
140
|
-
result[namespace] = new Set();
|
|
141
|
-
}
|
|
142
|
-
result[namespace].add(fullKey);
|
|
143
|
-
}
|
|
144
|
-
// Convert Sets to arrays
|
|
145
|
-
const output = {};
|
|
146
|
-
for (const [namespace, keys] of Object.entries(result)) {
|
|
147
|
-
output[namespace] = Array.from(keys).sort();
|
|
148
|
-
}
|
|
149
|
-
return output;
|
|
150
|
-
}
|
|
151
|
-
/**
|
|
152
|
-
* Fetch remote keys from CDN
|
|
153
|
-
*/
|
|
154
|
-
async function fetchRemoteKeys(cdnBaseUrl, workspaceId, projectSlug, locale) {
|
|
155
|
-
const url = `${cdnBaseUrl}/${workspaceId}/${projectSlug}/${locale}/translations.json`;
|
|
156
|
-
const response = await fetch(url);
|
|
157
|
-
if (!response.ok) {
|
|
158
|
-
throw new Error(`CDN fetch failed (${response.status})`);
|
|
159
|
-
}
|
|
160
|
-
return response.json();
|
|
161
|
-
}
|
|
162
|
-
/**
|
|
163
|
-
* Compare local and remote keys
|
|
164
|
-
*/
|
|
165
|
-
function compareKeys(localKeys, remoteKeys) {
|
|
166
|
-
const missing = {};
|
|
167
|
-
const unused = {};
|
|
168
|
-
const allNamespaces = new Set([
|
|
169
|
-
...Object.keys(localKeys),
|
|
170
|
-
...Object.keys(flattenKeys(remoteKeys)),
|
|
171
|
-
]);
|
|
172
|
-
for (const namespace of allNamespaces) {
|
|
173
|
-
const local = new Set(localKeys[namespace] || []);
|
|
174
|
-
const remote = new Set(getNamespaceKeys(remoteKeys, namespace));
|
|
175
|
-
// Missing in remote (need to add)
|
|
176
|
-
const missingInRemote = Array.from(local).filter((k) => !remote.has(k));
|
|
177
|
-
if (missingInRemote.length > 0) {
|
|
178
|
-
missing[namespace] = missingInRemote;
|
|
179
|
-
}
|
|
180
|
-
// Unused in local (in remote but not used)
|
|
181
|
-
const unusedInLocal = Array.from(remote).filter((k) => !local.has(k));
|
|
182
|
-
if (unusedInLocal.length > 0) {
|
|
183
|
-
unused[namespace] = unusedInLocal;
|
|
184
|
-
}
|
|
185
|
-
}
|
|
186
|
-
return { missing, unused };
|
|
187
|
-
}
|
|
188
|
-
/**
|
|
189
|
-
* Flatten remote keys to get all namespaces
|
|
190
|
-
*/
|
|
191
|
-
function flattenKeys(remoteKeys) {
|
|
192
|
-
const result = {};
|
|
193
|
-
function traverse(obj, prefix = "") {
|
|
194
|
-
for (const [key, value] of Object.entries(obj)) {
|
|
195
|
-
const fullKey = prefix ? `${prefix}.${key}` : key;
|
|
196
|
-
if (typeof value === "string") {
|
|
197
|
-
const namespace = fullKey.split(".")[0] || "default";
|
|
198
|
-
if (!result[namespace])
|
|
199
|
-
result[namespace] = [];
|
|
200
|
-
result[namespace].push(fullKey);
|
|
201
|
-
}
|
|
202
|
-
else if (typeof value === "object" && value !== null) {
|
|
203
|
-
traverse(value, fullKey);
|
|
204
|
-
}
|
|
205
|
-
}
|
|
206
|
-
}
|
|
207
|
-
traverse(remoteKeys);
|
|
208
|
-
return result;
|
|
209
|
-
}
|
|
210
|
-
/**
|
|
211
|
-
* Get keys for a specific namespace from remote
|
|
212
|
-
*/
|
|
213
|
-
function getNamespaceKeys(remoteKeys, namespace) {
|
|
214
|
-
const result = [];
|
|
215
|
-
const prefix = namespace + ".";
|
|
216
|
-
function traverse(obj, currentKey = "") {
|
|
217
|
-
for (const [key, value] of Object.entries(obj)) {
|
|
218
|
-
const fullKey = currentKey ? `${currentKey}.${key}` : key;
|
|
219
|
-
if (typeof value === "string") {
|
|
220
|
-
if (fullKey.startsWith(prefix)) {
|
|
221
|
-
result.push(fullKey);
|
|
222
|
-
}
|
|
223
|
-
}
|
|
224
|
-
else if (typeof value === "object" && value !== null) {
|
|
225
|
-
traverse(value, fullKey);
|
|
226
|
-
}
|
|
227
|
-
}
|
|
228
|
-
}
|
|
229
|
-
traverse(remoteKeys);
|
|
230
|
-
return result;
|
|
231
|
-
}
|
|
232
|
-
/**
|
|
233
|
-
* Count total keys in nested structure
|
|
234
|
-
*/
|
|
235
|
-
function countTotalKeys(remoteKeys) {
|
|
236
|
-
let count = 0;
|
|
237
|
-
function traverse(obj) {
|
|
238
|
-
for (const value of Object.values(obj)) {
|
|
239
|
-
if (typeof value === "string") {
|
|
240
|
-
count++;
|
|
241
|
-
}
|
|
242
|
-
else if (typeof value === "object" && value !== null) {
|
|
243
|
-
traverse(value);
|
|
244
|
-
}
|
|
245
|
-
}
|
|
246
|
-
}
|
|
247
|
-
traverse(remoteKeys);
|
|
248
|
-
return count;
|
|
249
|
-
}
|
|
250
|
-
/**
|
|
251
|
-
* Calculate local coverage (what % of local keys exist in remote)
|
|
252
|
-
*/
|
|
253
|
-
function calculateCoverage(localCount, missing) {
|
|
254
|
-
const missingCount = Object.values(missing).reduce((sum, arr) => sum + arr.length, 0);
|
|
255
|
-
if (localCount === 0)
|
|
256
|
-
return 100;
|
|
257
|
-
return Math.round(((localCount - missingCount) / localCount) * 100);
|
|
258
|
-
}
|
|
259
|
-
/**
|
|
260
|
-
* Calculate remote coverage (what % of remote keys are used)
|
|
261
|
-
*/
|
|
262
|
-
function calculateRemoteCoverage(localKeys, remoteKeys) {
|
|
263
|
-
const remoteFlattened = flattenKeys(remoteKeys);
|
|
264
|
-
let remoteUsedCount = 0;
|
|
265
|
-
let remoteTotalCount = 0;
|
|
266
|
-
for (const [namespace, keys] of Object.entries(remoteFlattened)) {
|
|
267
|
-
const local = new Set(localKeys[namespace] || []);
|
|
268
|
-
const used = keys.filter((k) => local.has(k));
|
|
269
|
-
remoteUsedCount += used.length;
|
|
270
|
-
remoteTotalCount += keys.length;
|
|
271
|
-
}
|
|
272
|
-
if (remoteTotalCount === 0)
|
|
273
|
-
return 0;
|
|
274
|
-
return Math.round((remoteUsedCount / remoteTotalCount) * 100);
|
|
275
|
-
}
|
|
276
|
-
/**
|
|
277
|
-
* Report local keys (human-readable)
|
|
278
|
-
*/
|
|
279
|
-
function reportLocalKeys(localKeys, _issueCount, duration) {
|
|
280
|
-
console.log();
|
|
281
|
-
console.log(bold("📦 Local Translation Keys"));
|
|
282
|
-
console.log();
|
|
283
|
-
const sortedNamespaces = Object.keys(localKeys.namespaces).sort();
|
|
284
|
-
for (const namespace of sortedNamespaces) {
|
|
285
|
-
const keys = localKeys.namespaces[namespace];
|
|
286
|
-
console.log(`${dim(`${namespace}:`)} ${keys.length} keys`);
|
|
287
|
-
for (const key of keys) {
|
|
288
|
-
console.log(` ${dim("•")} ${key}`);
|
|
289
|
-
}
|
|
290
|
-
console.log();
|
|
291
|
-
}
|
|
292
|
-
console.log(green(bold(`✓ Found ${localKeys.totalCount} translation keys`)));
|
|
293
|
-
console.log(dim(`Scanned ${localKeys.filesScanned} files in ${(duration / 1000).toFixed(2)}s`));
|
|
294
|
-
}
|
|
295
|
-
/**
|
|
296
|
-
* Report comparison (human-readable)
|
|
297
|
-
*/
|
|
298
|
-
function reportComparisonReport(localKeys, remoteKeys, comparison, duration) {
|
|
299
|
-
console.log();
|
|
300
|
-
console.log(bold("📊 Translation Keys Comparison"));
|
|
301
|
-
console.log();
|
|
302
|
-
// Coverage
|
|
303
|
-
const localCoverage = calculateCoverage(localKeys.totalCount, comparison.missing);
|
|
304
|
-
const remoteCoverage = calculateRemoteCoverage(localKeys.namespaces, remoteKeys);
|
|
305
|
-
console.log(`${dim("Coverage:")}`);
|
|
306
|
-
console.log(` Local → Remote: ${localCoverage}%`);
|
|
307
|
-
console.log(` Remote Used: ${remoteCoverage}%`);
|
|
308
|
-
console.log();
|
|
309
|
-
// Missing keys
|
|
310
|
-
const totalMissing = Object.values(comparison.missing).reduce((sum, arr) => sum + arr.length, 0);
|
|
311
|
-
if (totalMissing > 0) {
|
|
312
|
-
console.log(`${red(bold(`❌ Missing in Remote (${totalMissing} keys):`))}`);
|
|
313
|
-
console.log();
|
|
314
|
-
for (const [namespace, keys] of Object.entries(comparison.missing)) {
|
|
315
|
-
console.log(`${dim(`${namespace}:`)} ${keys.length} keys`);
|
|
316
|
-
for (const key of keys) {
|
|
317
|
-
console.log(` ${dim("•")} ${key}`);
|
|
318
|
-
}
|
|
319
|
-
console.log();
|
|
320
|
-
}
|
|
321
|
-
}
|
|
322
|
-
else {
|
|
323
|
-
console.log(green(bold("✓ No missing keys!")));
|
|
324
|
-
console.log();
|
|
325
|
-
}
|
|
326
|
-
// Unused keys
|
|
327
|
-
const totalUnused = Object.values(comparison.unused).reduce((sum, arr) => sum + arr.length, 0);
|
|
328
|
-
if (totalUnused > 0) {
|
|
329
|
-
console.log(`${yellow(bold(`⚠️ Unused in Code (${totalUnused} keys):`))}`);
|
|
330
|
-
console.log();
|
|
331
|
-
for (const [namespace, keys] of Object.entries(comparison.unused).slice(0, 5)) {
|
|
332
|
-
console.log(`${dim(`${namespace}:`)} ${keys.length} keys`);
|
|
333
|
-
for (const key of keys.slice(0, 3)) {
|
|
334
|
-
console.log(` ${dim("•")} ${key}`);
|
|
335
|
-
}
|
|
336
|
-
if (keys.length > 3) {
|
|
337
|
-
console.log(` ${dim(` ... and ${keys.length - 3} more`)}`);
|
|
338
|
-
}
|
|
339
|
-
console.log();
|
|
340
|
-
}
|
|
341
|
-
}
|
|
342
|
-
// Summary
|
|
343
|
-
console.log();
|
|
344
|
-
console.log(dim(`Scanned ${localKeys.filesScanned} files in ${(duration / 1000).toFixed(2)}s`));
|
|
345
|
-
console.log(green(bold(`✓ Comparison complete`)));
|
|
346
|
-
}
|
|
347
|
-
//# sourceMappingURL=extract-keys.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"extract-keys.js","sourceRoot":"","sources":["../../src/commands/extract-keys.ts"],"names":[],"mappings":"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"}
|