@localheroai/cli 0.0.12 → 0.0.14

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.
Files changed (36) hide show
  1. package/dist/api/client.js +16 -2
  2. package/dist/api/client.js.map +1 -1
  3. package/dist/api/translation-jobs.js +28 -0
  4. package/dist/api/translation-jobs.js.map +1 -0
  5. package/dist/commands/clone.js +13 -0
  6. package/dist/commands/clone.js.map +1 -1
  7. package/dist/commands/init.js +41 -21
  8. package/dist/commands/init.js.map +1 -1
  9. package/dist/commands/translate.js +20 -2
  10. package/dist/commands/translate.js.map +1 -1
  11. package/dist/types/index.js.map +1 -1
  12. package/dist/utils/config.js +10 -4
  13. package/dist/utils/config.js.map +1 -1
  14. package/dist/utils/files.js +11 -2
  15. package/dist/utils/files.js.map +1 -1
  16. package/dist/utils/import-service.js +42 -5
  17. package/dist/utils/import-service.js.map +1 -1
  18. package/dist/utils/po-surgical.js +707 -0
  19. package/dist/utils/po-surgical.js.map +1 -0
  20. package/dist/utils/po-utils-fallback.js +254 -0
  21. package/dist/utils/po-utils-fallback.js.map +1 -0
  22. package/dist/utils/po-utils.js +232 -0
  23. package/dist/utils/po-utils.js.map +1 -0
  24. package/dist/utils/spinner.js +32 -0
  25. package/dist/utils/spinner.js.map +1 -0
  26. package/dist/utils/sync-service.js +13 -5
  27. package/dist/utils/sync-service.js.map +1 -1
  28. package/dist/utils/translation-processor.js +47 -8
  29. package/dist/utils/translation-processor.js.map +1 -1
  30. package/dist/utils/translation-updater/index.js +39 -10
  31. package/dist/utils/translation-updater/index.js.map +1 -1
  32. package/dist/utils/translation-updater/po-handler.js +91 -0
  33. package/dist/utils/translation-updater/po-handler.js.map +1 -0
  34. package/dist/utils/translation-utils.js +35 -3
  35. package/dist/utils/translation-utils.js.map +1 -1
  36. package/package.json +3 -2
@@ -0,0 +1 @@
1
+ {"version":3,"file":"po-surgical.js","sourceRoot":"","sources":["../../src/utils/po-surgical.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,254 @@
1
+ import { po } from 'gettext-parser';
2
+ import { createUniqueKey, parseUniqueKey, parsePoFile, normalizeStringValue, PLURAL_SUFFIX } from './po-utils.js';
3
+ /**
4
+ * Build a map of msgid_plural values to check for duplicates
5
+ */
6
+ function buildPluralFormsMap(parsed) {
7
+ const pluralForms = new Map();
8
+ Object.entries(parsed.translations).forEach(([context, entries]) => {
9
+ if (typeof entries === 'object' && entries !== null) {
10
+ Object.entries(entries).forEach(([msgid, entry]) => {
11
+ if (msgid === '' || !entry.msgid_plural)
12
+ return;
13
+ // Map the plural form to its context and original msgid
14
+ const pluralKey = createUniqueKey(entry.msgid_plural, context !== '' ? context : undefined);
15
+ pluralForms.set(pluralKey, { context, msgid });
16
+ });
17
+ }
18
+ });
19
+ return pluralForms;
20
+ }
21
+ /**
22
+ * Check if a key is a plural suffix key
23
+ */
24
+ function isPluralKey(key) {
25
+ return key.endsWith(PLURAL_SUFFIX);
26
+ }
27
+ /**
28
+ * Get the base key from a plural suffix key
29
+ */
30
+ function getBaseKeyFromPlural(key) {
31
+ return key.replace(/__plural_\d+$/, '');
32
+ }
33
+ /**
34
+ * Group plural translations together
35
+ */
36
+ function groupPluralTranslations(translations) {
37
+ const regular = {};
38
+ const pluralGroups = new Map();
39
+ // First pass: identify plural pairs
40
+ Object.keys(translations).forEach(key => {
41
+ if (isPluralKey(key)) {
42
+ const baseKey = getBaseKeyFromPlural(key);
43
+ if (translations[baseKey]) {
44
+ // This is a plural pair
45
+ pluralGroups.set(baseKey, {
46
+ singular: translations[baseKey],
47
+ plural: translations[key]
48
+ });
49
+ }
50
+ }
51
+ });
52
+ // Second pass: add regular keys (excluding those in plural pairs)
53
+ Object.entries(translations).forEach(([key, value]) => {
54
+ if (!isPluralKey(key) && !pluralGroups.has(key)) {
55
+ regular[key] = value;
56
+ }
57
+ });
58
+ return { regular, pluralGroups };
59
+ }
60
+ /**
61
+ * Detect the fold length used in the original .po file by analyzing line lengths
62
+ * Returns the detected fold length, or 76 (gettext default) if no clear pattern
63
+ */
64
+ function detectFoldLength(content) {
65
+ const lines = content.split('\n');
66
+ const quotedLines = lines.filter(line => line.trim().startsWith('"') && line.trim().endsWith('"'));
67
+ if (quotedLines.length < 5) {
68
+ return 76; // Use gettext default
69
+ }
70
+ // Check if the file has multiline strings (indicates intentional wrapping)
71
+ const hasMultilineStrings = lines.some(line => line.trim() === 'msgid ""' || line.trim() === 'msgstr ""');
72
+ if (!hasMultilineStrings) {
73
+ return 76; // Use default for simple files
74
+ }
75
+ // Find the longest line length - this represents the wrap point used
76
+ const maxLength = Math.max(...quotedLines.map(line => line.length));
77
+ // If the longest line is in a reasonable range, use it
78
+ // Otherwise fall back to gettext standard
79
+ if (maxLength >= 70 && maxLength <= 100) {
80
+ return maxLength;
81
+ }
82
+ return 76; // gettext default
83
+ }
84
+ /**
85
+ * Old implementation of updatePoFile for fallback when new entries need to be added
86
+ */
87
+ export function updatePoFileOld(originalContent, translations, options) {
88
+ const parsed = po.parse(originalContent);
89
+ const updatedTranslations = new Set();
90
+ const pluralFormsMap = buildPluralFormsMap(parsed);
91
+ let hasChanges = false;
92
+ const { regular, pluralGroups } = groupPluralTranslations(translations);
93
+ Object.entries(parsed.translations).forEach(([context, entries]) => {
94
+ if (typeof entries === 'object' && entries !== null) {
95
+ Object.entries(entries).forEach(([msgid, entry]) => {
96
+ if (msgid === '')
97
+ return; // Skip header
98
+ const uniqueKey = createUniqueKey(msgid, context !== '' ? context : undefined);
99
+ // Check if this is a plural entry (either complete pair or partial)
100
+ if (entry.msgid_plural) {
101
+ const isCompletePair = pluralGroups.has(uniqueKey);
102
+ const hasSingularOnly = regular[uniqueKey];
103
+ if (isCompletePair) {
104
+ const pluralData = pluralGroups.get(uniqueKey);
105
+ const singularValue = pluralData.singular;
106
+ const currentValue = entry.msgstr[0] || '';
107
+ // Skip updating only if this is a source language entry and values match AND current value is not empty
108
+ const skipSingular = (singularValue === msgid && options?.sourceLanguage === options?.targetLanguage && currentValue.trim() !== '');
109
+ if (!skipSingular && currentValue.trim() !== singularValue.trim()) {
110
+ entry.msgstr[0] = singularValue;
111
+ hasChanges = true;
112
+ }
113
+ const pluralValue = pluralData.plural;
114
+ const currentPluralValue = entry.msgstr[1] || '';
115
+ // Skip updating only if this is a source language entry and values match AND current value is not empty
116
+ const skipPlural = (pluralValue === entry.msgid_plural && options?.sourceLanguage === options?.targetLanguage && currentPluralValue.trim() !== '');
117
+ if (!skipPlural && currentPluralValue.trim() !== pluralValue.trim()) {
118
+ entry.msgstr[1] = pluralValue;
119
+ hasChanges = true;
120
+ }
121
+ updatedTranslations.add(uniqueKey);
122
+ updatedTranslations.add(uniqueKey + PLURAL_SUFFIX);
123
+ }
124
+ else if (hasSingularOnly) {
125
+ // Handle partial plural translation (singular only)
126
+ const singularValue = regular[uniqueKey];
127
+ const currentValue = entry.msgstr[0] || '';
128
+ // Skip updating only if this is a source language entry and values match AND current value is not empty
129
+ const skipSingular = (singularValue === msgid && options?.sourceLanguage === options?.targetLanguage && currentValue.trim() !== '');
130
+ if (!skipSingular && currentValue.trim() !== singularValue.trim()) {
131
+ entry.msgstr[0] = singularValue;
132
+ hasChanges = true;
133
+ }
134
+ updatedTranslations.add(uniqueKey);
135
+ }
136
+ }
137
+ else if (regular[uniqueKey]) {
138
+ const newValue = regular[uniqueKey];
139
+ // Skip updating if this is a source language entry (msgid === msgstr)
140
+ if (newValue === msgid && options?.sourceLanguage === options?.targetLanguage) {
141
+ updatedTranslations.add(uniqueKey);
142
+ return;
143
+ }
144
+ const currentValue = normalizeStringValue(entry.msgstr);
145
+ const normalizedNewValue = normalizeStringValue(newValue);
146
+ // Only update if the normalized content is actually different
147
+ // This prevents unnecessary line wrapping changes
148
+ if (currentValue !== normalizedNewValue) {
149
+ entry.msgstr = [newValue];
150
+ hasChanges = true;
151
+ }
152
+ updatedTranslations.add(uniqueKey);
153
+ }
154
+ });
155
+ }
156
+ });
157
+ // Add new translations that weren't found in existing entries
158
+ // But skip plural suffix keys - they should not be added as separate entries
159
+ Object.entries(regular).forEach(([uniqueKey, value]) => {
160
+ if (!updatedTranslations.has(uniqueKey)) {
161
+ const { msgid, context } = parseUniqueKey(uniqueKey);
162
+ const contextKey = context || '';
163
+ // this can happen with malformed keys
164
+ if (!msgid || msgid.trim() === '') {
165
+ return;
166
+ }
167
+ // Skip adding new entries where msgid === msgstr (source language files only)
168
+ if (value === msgid && options?.sourceLanguage === options?.targetLanguage) {
169
+ return;
170
+ }
171
+ // Skip if this msgid is already used as msgid_plural in an existing entry
172
+ if (pluralFormsMap.has(uniqueKey)) {
173
+ return;
174
+ }
175
+ // Initialize context if it doesn't exist
176
+ if (!parsed.translations[contextKey]) {
177
+ parsed.translations[contextKey] = {};
178
+ }
179
+ parsed.translations[contextKey][msgid] = {
180
+ msgid: msgid,
181
+ msgstr: [value]
182
+ };
183
+ hasChanges = true;
184
+ }
185
+ });
186
+ // Add new plural translations that weren't found in existing entries
187
+ pluralGroups.forEach((pluralData, uniqueKey) => {
188
+ if (!updatedTranslations.has(uniqueKey)) {
189
+ const { msgid, context } = parseUniqueKey(uniqueKey);
190
+ const contextKey = context || '';
191
+ // this can happen with malformed keys
192
+ if (!msgid || msgid.trim() === '') {
193
+ return;
194
+ }
195
+ const pluralKey = uniqueKey + PLURAL_SUFFIX;
196
+ // Try to find the proper msgid_plural from the source file if available
197
+ let msgid_plural = pluralData.plural; // fallback
198
+ if (options?.sourceContent) {
199
+ try {
200
+ const sourceParsed = parsePoFile(options.sourceContent);
201
+ const sourceEntries = sourceParsed.entries;
202
+ // Find the matching source entry with msgid_plural
203
+ const sourceEntry = sourceEntries.find(entry => {
204
+ const sourceKey = createUniqueKey(entry.msgid, entry.msgctxt);
205
+ return sourceKey === uniqueKey && entry.msgid_plural;
206
+ });
207
+ if (sourceEntry && sourceEntry.msgid_plural) {
208
+ msgid_plural = sourceEntry.msgid_plural;
209
+ }
210
+ }
211
+ catch (error) {
212
+ // If source parsing fails, continue with fallback
213
+ console.warn('Failed to parse source content for msgid_plural lookup', error);
214
+ }
215
+ }
216
+ // Initialize context if it doesn't exist
217
+ if (!parsed.translations[contextKey]) {
218
+ parsed.translations[contextKey] = {};
219
+ }
220
+ // Create new plural entry with proper msgid_plural
221
+ parsed.translations[contextKey][msgid] = {
222
+ msgid: msgid,
223
+ msgid_plural: msgid_plural,
224
+ msgstr: [pluralData.singular, pluralData.plural]
225
+ };
226
+ hasChanges = true;
227
+ // Mark both keys as updated
228
+ updatedTranslations.add(uniqueKey);
229
+ updatedTranslations.add(pluralKey);
230
+ }
231
+ });
232
+ // If no actual changes were made, return original content to preserve formatting
233
+ if (!hasChanges) {
234
+ return originalContent;
235
+ }
236
+ // Extract header section from original content
237
+ const lines = originalContent.split('\n');
238
+ const headerEndIndex = lines.findIndex((line, index) => index > 0 && line.trim() === '' && lines[index - 1].includes('"'));
239
+ let headerSection = '';
240
+ if (headerEndIndex > 0) {
241
+ headerSection = lines.slice(0, headerEndIndex + 1).join('\n') + '\n';
242
+ }
243
+ // Use detected fold length from original content
244
+ const foldLength = detectFoldLength(originalContent);
245
+ const compiled = po.compile(parsed, { foldLength }).toString();
246
+ const compiledLines = compiled.split('\n');
247
+ const compiledHeaderEndIndex = compiledLines.findIndex((line, index) => index > 0 && line.trim() === '' && compiledLines[index - 1].includes('"'));
248
+ if (headerSection && compiledHeaderEndIndex > 0) {
249
+ const bodySection = compiledLines.slice(compiledHeaderEndIndex + 1).join('\n');
250
+ return headerSection + bodySection;
251
+ }
252
+ return compiled;
253
+ }
254
+ //# sourceMappingURL=po-utils-fallback.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"po-utils-fallback.js","sourceRoot":"","sources":["../../src/utils/po-utils-fallback.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,232 @@
1
+ import { po } from 'gettext-parser';
2
+ export const PLURAL_SUFFIX = '__plural_1';
3
+ /**
4
+ * Parse a .po file content and extract entries
5
+ */
6
+ export function parsePoFile(content) {
7
+ const parsed = po.parse(content);
8
+ const headers = parsed.headers || {};
9
+ const entries = [];
10
+ Object.entries(parsed.translations).forEach(([context, translations]) => {
11
+ if (typeof translations === 'object' && translations !== null) {
12
+ Object.entries(translations).forEach(([msgid, entry]) => {
13
+ // Skip the empty header entry that is always present
14
+ if (msgid === '')
15
+ return;
16
+ entries.push({
17
+ msgid,
18
+ msgstr: entry.msgstr || [''],
19
+ msgctxt: context !== '' ? context : undefined,
20
+ msgid_plural: entry.msgid_plural,
21
+ comments: entry.comments
22
+ });
23
+ });
24
+ }
25
+ });
26
+ return { headers, entries };
27
+ }
28
+ /**
29
+ * Create unique key for storage using "context|msgid" format
30
+ */
31
+ export function createUniqueKey(msgid, context) {
32
+ return context ? `${context}|${msgid}` : msgid;
33
+ }
34
+ /**
35
+ * Parse key back to msgid and context
36
+ */
37
+ export function parseUniqueKey(key) {
38
+ const pipeIndex = key.indexOf('|');
39
+ if (pipeIndex === -1) {
40
+ return { msgid: key };
41
+ }
42
+ return {
43
+ context: key.substring(0, pipeIndex),
44
+ msgid: key.substring(pipeIndex + 1)
45
+ };
46
+ }
47
+ /**
48
+ * Convert .po entries to API compatible format
49
+ */
50
+ export function poEntriesToApiFormat(entries, options) {
51
+ const keys = {};
52
+ entries.forEach(entry => {
53
+ const uniqueKey = createUniqueKey(entry.msgid, entry.msgctxt);
54
+ let translatorComments;
55
+ if (entry.comments?.extracted) {
56
+ const extractedComments = Array.isArray(entry.comments.extracted)
57
+ ? entry.comments.extracted
58
+ : [entry.comments.extracted];
59
+ const comments = extractedComments
60
+ .filter((comment) => comment.startsWith('Translators:'))
61
+ .map((comment) => comment.replace(/^Translators:\s*/, '').trim())
62
+ .filter((comment) => comment.length > 0);
63
+ if (comments.length > 0) {
64
+ translatorComments = comments.join(', ');
65
+ }
66
+ }
67
+ if (entry.msgid_plural) {
68
+ const isSourceLanguage = options?.sourceLanguage && options?.currentLanguage &&
69
+ options.sourceLanguage === options.currentLanguage;
70
+ const singularValue = entry.msgstr && entry.msgstr[0] ? entry.msgstr[0] :
71
+ (isSourceLanguage ? entry.msgid : '');
72
+ const singularKeyData = {
73
+ value: singularValue,
74
+ metadata: {
75
+ po_plural: true,
76
+ msgid_plural: entry.msgid_plural,
77
+ plural_index: 0
78
+ }
79
+ };
80
+ if (translatorComments) {
81
+ singularKeyData.metadata.translator_comments = translatorComments;
82
+ }
83
+ if (entry.msgctxt) {
84
+ singularKeyData.context = entry.msgctxt;
85
+ }
86
+ keys[uniqueKey] = singularKeyData;
87
+ // Plural form with special suffix
88
+ const pluralKey = uniqueKey + PLURAL_SUFFIX;
89
+ const pluralValue = entry.msgstr && entry.msgstr[1] ? entry.msgstr[1] :
90
+ (isSourceLanguage ? entry.msgid_plural : '');
91
+ const pluralKeyData = {
92
+ value: pluralValue,
93
+ metadata: {
94
+ po_plural: true,
95
+ msgid: entry.msgid,
96
+ plural_index: 1
97
+ }
98
+ };
99
+ // Include translator comments in plural metadata
100
+ if (translatorComments) {
101
+ pluralKeyData.metadata.translator_comments = translatorComments;
102
+ }
103
+ if (entry.msgctxt) {
104
+ pluralKeyData.context = entry.msgctxt;
105
+ }
106
+ keys[pluralKey] = pluralKeyData;
107
+ }
108
+ else {
109
+ // Handle regular (non-plural) entries
110
+ const isSourceLanguage = options?.sourceLanguage && options?.currentLanguage &&
111
+ options.sourceLanguage === options.currentLanguage;
112
+ const value = entry.msgstr && entry.msgstr[0] ? entry.msgstr[0] :
113
+ (isSourceLanguage ? entry.msgid : '');
114
+ const keyData = {
115
+ value: value
116
+ };
117
+ if (translatorComments) {
118
+ keyData.metadata = translatorComments;
119
+ }
120
+ if (entry.msgctxt) {
121
+ keyData.context = entry.msgctxt;
122
+ }
123
+ keys[uniqueKey] = keyData;
124
+ }
125
+ });
126
+ return keys;
127
+ }
128
+ /**
129
+ * Create .po file content
130
+ */
131
+ export function createPoFile(entries, headers) {
132
+ const poData = {
133
+ headers: headers || {
134
+ 'Content-Type': 'text/plain; charset=UTF-8',
135
+ 'Language': 'en'
136
+ },
137
+ translations: {}
138
+ };
139
+ // Group entries by context
140
+ entries.forEach(entry => {
141
+ const context = entry.msgctxt || '';
142
+ if (!poData.translations[context]) {
143
+ poData.translations[context] = {};
144
+ }
145
+ const translationEntry = {
146
+ msgstr: entry.msgstr
147
+ };
148
+ if (entry.msgid_plural) {
149
+ translationEntry.msgid_plural = entry.msgid_plural;
150
+ }
151
+ if (entry.comments) {
152
+ translationEntry.comments = entry.comments;
153
+ }
154
+ poData.translations[context][entry.msgid] = translationEntry;
155
+ });
156
+ // For new files, disable folding to avoid arbitrary line breaks
157
+ return po.compile(poData, { foldLength: 0 }).toString();
158
+ }
159
+ export function findMissingPoTranslations(sourceContent, targetContent) {
160
+ const sourceEntries = parsePoFile(sourceContent).entries;
161
+ const targetEntries = parsePoFile(targetContent).entries;
162
+ const targetMap = new Map();
163
+ targetEntries.forEach(entry => {
164
+ const key = createUniqueKey(entry.msgid, entry.msgctxt);
165
+ targetMap.set(key, entry);
166
+ });
167
+ const missing = [];
168
+ sourceEntries.forEach(entry => {
169
+ const key = createUniqueKey(entry.msgid, entry.msgctxt);
170
+ const targetEntry = targetMap.get(key);
171
+ if (entry.msgid_plural) {
172
+ // Handle plural entries - check both singular and plural forms
173
+ // Check singular form (msgstr[0])
174
+ const singularEmpty = !targetEntry ||
175
+ !targetEntry.msgstr ||
176
+ !targetEntry.msgstr[0] ||
177
+ targetEntry.msgstr[0].trim() === '';
178
+ if (singularEmpty) {
179
+ missing.push({
180
+ key: entry.msgid,
181
+ context: entry.msgctxt,
182
+ value: entry.msgid,
183
+ isPlural: true,
184
+ pluralForm: entry.msgid_plural
185
+ });
186
+ }
187
+ // Check plural form (msgstr[1]) - use the __plural_1 suffix to match our key structure
188
+ const pluralEmpty = !targetEntry ||
189
+ !targetEntry.msgstr ||
190
+ !targetEntry.msgstr[1] ||
191
+ targetEntry.msgstr[1].trim() === '';
192
+ if (pluralEmpty) {
193
+ const pluralKey = key + PLURAL_SUFFIX;
194
+ missing.push({
195
+ key: pluralKey,
196
+ context: entry.msgctxt,
197
+ value: entry.msgid_plural,
198
+ isPlural: true,
199
+ pluralForm: entry.msgid_plural
200
+ });
201
+ }
202
+ }
203
+ else {
204
+ // Handle regular (non-plural) entries
205
+ const isEmpty = !targetEntry ||
206
+ !targetEntry.msgstr ||
207
+ !targetEntry.msgstr[0] ||
208
+ targetEntry.msgstr[0].trim() === '';
209
+ if (isEmpty) {
210
+ missing.push({
211
+ key: entry.msgid,
212
+ context: entry.msgctxt,
213
+ value: entry.msgid,
214
+ isPlural: false,
215
+ pluralForm: entry.msgid_plural
216
+ });
217
+ }
218
+ }
219
+ });
220
+ return missing;
221
+ }
222
+ /**
223
+ * Normalize a string value by joining multiline parts and trimming
224
+ * This handles cases where gettext line wrapping differs but content is identical
225
+ */
226
+ export function normalizeStringValue(value) {
227
+ if (Array.isArray(value)) {
228
+ return value.join('').trim();
229
+ }
230
+ return (value || '').trim();
231
+ }
232
+ //# sourceMappingURL=po-utils.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"po-utils.js","sourceRoot":"","sources":["../../src/utils/po-utils.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,32 @@
1
+ export class Spinner {
2
+ frames = ['⠋', '⠙', '⠹', '⠸', '⠼', '⠴', '⠦', '⠧', '⠇', '⠏'];
3
+ interval = null;
4
+ currentFrame = 0;
5
+ message;
6
+ constructor(message = 'Loading...') {
7
+ this.message = message;
8
+ }
9
+ start() {
10
+ if (!process.stdout.isTTY || process.env.GITHUB_ACTIONS === 'true') {
11
+ return;
12
+ }
13
+ if (this.interval) {
14
+ return;
15
+ }
16
+ // Hide cursor
17
+ process.stdout.write('\x1B[?25l');
18
+ this.interval = setInterval(() => {
19
+ process.stdout.write(`\r${this.frames[this.currentFrame]} ${this.message}`);
20
+ this.currentFrame = (this.currentFrame + 1) % this.frames.length;
21
+ }, 100);
22
+ }
23
+ stop() {
24
+ if (this.interval) {
25
+ clearInterval(this.interval);
26
+ this.interval = null;
27
+ // Clear the line and show cursor
28
+ process.stdout.write('\r\x1B[K\x1B[?25h');
29
+ }
30
+ }
31
+ }
32
+ //# sourceMappingURL=spinner.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"spinner.js","sourceRoot":"","sources":["../../src/utils/spinner.ts"],"names":[],"mappings":"AAAA,MAAM,OAAO,OAAO;IACV,MAAM,GAAG,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC;IAC5D,QAAQ,GAA0B,IAAI,CAAC;IACvC,YAAY,GAAG,CAAC,CAAC;IACjB,OAAO,CAAS;IAExB,YAAY,UAAkB,YAAY;QACxC,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;IACzB,CAAC;IAED,KAAK;QACH,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,IAAI,OAAO,CAAC,GAAG,CAAC,cAAc,KAAK,MAAM,EAAE,CAAC;YACnE,OAAO;QACT,CAAC;QAED,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;YAClB,OAAO;QACT,CAAC;QAED,cAAc;QACd,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC;QAElC,IAAI,CAAC,QAAQ,GAAG,WAAW,CAAC,GAAG,EAAE;YAC/B,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,YAAY,CAAC,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC;YAC5E,IAAI,CAAC,YAAY,GAAG,CAAC,IAAI,CAAC,YAAY,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC;QACnE,CAAC,EAAE,GAAG,CAAC,CAAC;IACV,CAAC;IAED,IAAI;QACF,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;YAClB,aAAa,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;YAC7B,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC;YACrB,iCAAiC;YACjC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,mBAAmB,CAAC,CAAC;QAC5C,CAAC;IACH,CAAC;CACF"}