i18nsmith 0.1.7 → 0.1.8

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 (158) hide show
  1. package/build.mjs +25 -0
  2. package/dist/index.js +109367 -22
  3. package/dist/index.js.map +7 -1
  4. package/package.json +10 -6
  5. package/dist/commands/audit.d.ts +0 -3
  6. package/dist/commands/audit.d.ts.map +0 -1
  7. package/dist/commands/audit.js +0 -180
  8. package/dist/commands/audit.js.map +0 -1
  9. package/dist/commands/backup.d.ts +0 -6
  10. package/dist/commands/backup.d.ts.map +0 -1
  11. package/dist/commands/backup.js +0 -85
  12. package/dist/commands/backup.js.map +0 -1
  13. package/dist/commands/check.d.ts +0 -3
  14. package/dist/commands/check.d.ts.map +0 -1
  15. package/dist/commands/check.js +0 -151
  16. package/dist/commands/check.js.map +0 -1
  17. package/dist/commands/config.d.ts +0 -3
  18. package/dist/commands/config.d.ts.map +0 -1
  19. package/dist/commands/config.js +0 -235
  20. package/dist/commands/config.js.map +0 -1
  21. package/dist/commands/debug-patterns.d.ts +0 -3
  22. package/dist/commands/debug-patterns.d.ts.map +0 -1
  23. package/dist/commands/debug-patterns.js +0 -192
  24. package/dist/commands/debug-patterns.js.map +0 -1
  25. package/dist/commands/debug-patterns.test.d.ts +0 -2
  26. package/dist/commands/debug-patterns.test.d.ts.map +0 -1
  27. package/dist/commands/debug-patterns.test.js +0 -109
  28. package/dist/commands/debug-patterns.test.js.map +0 -1
  29. package/dist/commands/diagnose.d.ts +0 -3
  30. package/dist/commands/diagnose.d.ts.map +0 -1
  31. package/dist/commands/diagnose.js +0 -117
  32. package/dist/commands/diagnose.js.map +0 -1
  33. package/dist/commands/init.d.ts +0 -8
  34. package/dist/commands/init.d.ts.map +0 -1
  35. package/dist/commands/init.js +0 -450
  36. package/dist/commands/init.js.map +0 -1
  37. package/dist/commands/init.test.d.ts +0 -2
  38. package/dist/commands/init.test.d.ts.map +0 -1
  39. package/dist/commands/init.test.js +0 -74
  40. package/dist/commands/init.test.js.map +0 -1
  41. package/dist/commands/install-hooks.d.ts +0 -3
  42. package/dist/commands/install-hooks.d.ts.map +0 -1
  43. package/dist/commands/install-hooks.js +0 -52
  44. package/dist/commands/install-hooks.js.map +0 -1
  45. package/dist/commands/preflight.d.ts +0 -7
  46. package/dist/commands/preflight.d.ts.map +0 -1
  47. package/dist/commands/preflight.js +0 -417
  48. package/dist/commands/preflight.js.map +0 -1
  49. package/dist/commands/preflight.test.d.ts +0 -5
  50. package/dist/commands/preflight.test.d.ts.map +0 -1
  51. package/dist/commands/preflight.test.js +0 -108
  52. package/dist/commands/preflight.test.js.map +0 -1
  53. package/dist/commands/rename.d.ts +0 -6
  54. package/dist/commands/rename.d.ts.map +0 -1
  55. package/dist/commands/rename.js +0 -204
  56. package/dist/commands/rename.js.map +0 -1
  57. package/dist/commands/scaffold-adapter.d.ts +0 -3
  58. package/dist/commands/scaffold-adapter.d.ts.map +0 -1
  59. package/dist/commands/scaffold-adapter.js +0 -204
  60. package/dist/commands/scaffold-adapter.js.map +0 -1
  61. package/dist/commands/scaffold-adapter.test.d.ts +0 -2
  62. package/dist/commands/scaffold-adapter.test.d.ts.map +0 -1
  63. package/dist/commands/scaffold-adapter.test.js +0 -102
  64. package/dist/commands/scaffold-adapter.test.js.map +0 -1
  65. package/dist/commands/scan.d.ts +0 -3
  66. package/dist/commands/scan.d.ts.map +0 -1
  67. package/dist/commands/scan.js +0 -93
  68. package/dist/commands/scan.js.map +0 -1
  69. package/dist/commands/sync-seed.test.d.ts +0 -2
  70. package/dist/commands/sync-seed.test.d.ts.map +0 -1
  71. package/dist/commands/sync-seed.test.js +0 -86
  72. package/dist/commands/sync-seed.test.js.map +0 -1
  73. package/dist/commands/sync.d.ts +0 -3
  74. package/dist/commands/sync.d.ts.map +0 -1
  75. package/dist/commands/sync.js +0 -590
  76. package/dist/commands/sync.js.map +0 -1
  77. package/dist/commands/transform.d.ts +0 -3
  78. package/dist/commands/transform.d.ts.map +0 -1
  79. package/dist/commands/transform.js +0 -114
  80. package/dist/commands/transform.js.map +0 -1
  81. package/dist/commands/translate/csv-handler.d.ts +0 -21
  82. package/dist/commands/translate/csv-handler.d.ts.map +0 -1
  83. package/dist/commands/translate/csv-handler.js +0 -270
  84. package/dist/commands/translate/csv-handler.js.map +0 -1
  85. package/dist/commands/translate/executor.d.ts +0 -31
  86. package/dist/commands/translate/executor.d.ts.map +0 -1
  87. package/dist/commands/translate/executor.js +0 -117
  88. package/dist/commands/translate/executor.js.map +0 -1
  89. package/dist/commands/translate/index.d.ts +0 -10
  90. package/dist/commands/translate/index.d.ts.map +0 -1
  91. package/dist/commands/translate/index.js +0 -170
  92. package/dist/commands/translate/index.js.map +0 -1
  93. package/dist/commands/translate/reporter.d.ts +0 -29
  94. package/dist/commands/translate/reporter.d.ts.map +0 -1
  95. package/dist/commands/translate/reporter.js +0 -103
  96. package/dist/commands/translate/reporter.js.map +0 -1
  97. package/dist/commands/translate/types.d.ts +0 -50
  98. package/dist/commands/translate/types.d.ts.map +0 -1
  99. package/dist/commands/translate/types.js +0 -5
  100. package/dist/commands/translate/types.js.map +0 -1
  101. package/dist/commands/translate.d.ts +0 -7
  102. package/dist/commands/translate.d.ts.map +0 -1
  103. package/dist/commands/translate.js +0 -7
  104. package/dist/commands/translate.js.map +0 -1
  105. package/dist/commands/translate.test.d.ts +0 -2
  106. package/dist/commands/translate.test.d.ts.map +0 -1
  107. package/dist/commands/translate.test.js +0 -118
  108. package/dist/commands/translate.test.js.map +0 -1
  109. package/dist/e2e.test.d.ts +0 -6
  110. package/dist/e2e.test.d.ts.map +0 -1
  111. package/dist/e2e.test.js +0 -376
  112. package/dist/e2e.test.js.map +0 -1
  113. package/dist/index.d.ts +0 -4
  114. package/dist/index.d.ts.map +0 -1
  115. package/dist/integration.test.d.ts +0 -6
  116. package/dist/integration.test.d.ts.map +0 -1
  117. package/dist/integration.test.js +0 -320
  118. package/dist/integration.test.js.map +0 -1
  119. package/dist/utils/diagnostics-exit.d.ts +0 -12
  120. package/dist/utils/diagnostics-exit.d.ts.map +0 -1
  121. package/dist/utils/diagnostics-exit.js +0 -49
  122. package/dist/utils/diagnostics-exit.js.map +0 -1
  123. package/dist/utils/diagnostics-exit.test.d.ts +0 -2
  124. package/dist/utils/diagnostics-exit.test.d.ts.map +0 -1
  125. package/dist/utils/diagnostics-exit.test.js +0 -40
  126. package/dist/utils/diagnostics-exit.test.js.map +0 -1
  127. package/dist/utils/diff-utils.d.ts +0 -4
  128. package/dist/utils/diff-utils.d.ts.map +0 -1
  129. package/dist/utils/diff-utils.js +0 -30
  130. package/dist/utils/diff-utils.js.map +0 -1
  131. package/dist/utils/diff-utils.test.d.ts +0 -2
  132. package/dist/utils/diff-utils.test.d.ts.map +0 -1
  133. package/dist/utils/diff-utils.test.js +0 -30
  134. package/dist/utils/diff-utils.test.js.map +0 -1
  135. package/dist/utils/exit-codes.d.ts +0 -142
  136. package/dist/utils/exit-codes.d.ts.map +0 -1
  137. package/dist/utils/exit-codes.js +0 -168
  138. package/dist/utils/exit-codes.js.map +0 -1
  139. package/dist/utils/package-manager.d.ts +0 -4
  140. package/dist/utils/package-manager.d.ts.map +0 -1
  141. package/dist/utils/package-manager.js +0 -40
  142. package/dist/utils/package-manager.js.map +0 -1
  143. package/dist/utils/pkg.d.ts +0 -3
  144. package/dist/utils/pkg.d.ts.map +0 -1
  145. package/dist/utils/pkg.js +0 -24
  146. package/dist/utils/pkg.js.map +0 -1
  147. package/dist/utils/provider-injector.d.ts +0 -36
  148. package/dist/utils/provider-injector.d.ts.map +0 -1
  149. package/dist/utils/provider-injector.js +0 -223
  150. package/dist/utils/provider-injector.js.map +0 -1
  151. package/dist/utils/provider-injector.test.d.ts +0 -2
  152. package/dist/utils/provider-injector.test.d.ts.map +0 -1
  153. package/dist/utils/provider-injector.test.js +0 -67
  154. package/dist/utils/provider-injector.test.js.map +0 -1
  155. package/dist/utils/scaffold.d.ts +0 -20
  156. package/dist/utils/scaffold.d.ts.map +0 -1
  157. package/dist/utils/scaffold.js +0 -197
  158. package/dist/utils/scaffold.js.map +0 -1
@@ -1,235 +0,0 @@
1
- import fs from 'fs/promises';
2
- import path from 'path';
3
- import chalk from 'chalk';
4
- import { loadConfigWithMeta, DEFAULT_CONFIG_FILENAME } from '@i18nsmith/core';
5
- /**
6
- * Parse a dot-notation key path into segments.
7
- * e.g., 'translationAdapter.module' => ['translationAdapter', 'module']
8
- */
9
- function parseKeyPath(keyPath) {
10
- return keyPath.split('.').filter(Boolean);
11
- }
12
- /**
13
- * Get a nested value from an object using a key path.
14
- */
15
- function getNestedValue(obj, keyPath) {
16
- let current = obj;
17
- for (const key of keyPath) {
18
- if (current === null || current === undefined || typeof current !== 'object') {
19
- return undefined;
20
- }
21
- current = current[key];
22
- }
23
- return current;
24
- }
25
- /**
26
- * Set a nested value in an object using a key path.
27
- * Creates intermediate objects as needed.
28
- */
29
- function setNestedValue(obj, keyPath, value) {
30
- let current = obj;
31
- for (let i = 0; i < keyPath.length - 1; i++) {
32
- const key = keyPath[i];
33
- if (!(key in current) || typeof current[key] !== 'object' || current[key] === null) {
34
- current[key] = {};
35
- }
36
- current = current[key];
37
- }
38
- const finalKey = keyPath[keyPath.length - 1];
39
- current[finalKey] = value;
40
- }
41
- /**
42
- * Parse a value string into an appropriate type.
43
- * Handles booleans, numbers, arrays, and strings.
44
- */
45
- function parseValue(valueStr) {
46
- // Boolean
47
- if (valueStr === 'true')
48
- return true;
49
- if (valueStr === 'false')
50
- return false;
51
- // Null
52
- if (valueStr === 'null')
53
- return null;
54
- // Number
55
- if (/^-?\d+(\.\d+)?$/.test(valueStr)) {
56
- return parseFloat(valueStr);
57
- }
58
- // JSON array or object
59
- if ((valueStr.startsWith('[') && valueStr.endsWith(']')) ||
60
- (valueStr.startsWith('{') && valueStr.endsWith('}'))) {
61
- try {
62
- return JSON.parse(valueStr);
63
- }
64
- catch {
65
- // Fall through to string
66
- }
67
- }
68
- // Remove surrounding quotes if present
69
- if ((valueStr.startsWith('"') && valueStr.endsWith('"')) ||
70
- (valueStr.startsWith("'") && valueStr.endsWith("'"))) {
71
- return valueStr.slice(1, -1);
72
- }
73
- return valueStr;
74
- }
75
- /**
76
- * Read the raw config file content (unparsed JSON with comments preserved formatting).
77
- */
78
- async function readRawConfig(configPath) {
79
- const content = await fs.readFile(configPath, 'utf-8');
80
- const parsed = JSON.parse(content);
81
- return { content, parsed };
82
- }
83
- /**
84
- * Write config back to file with nice formatting.
85
- */
86
- async function writeConfig(configPath, config) {
87
- const content = JSON.stringify(config, null, 2);
88
- await fs.writeFile(configPath, content, 'utf-8');
89
- }
90
- export function registerConfig(program) {
91
- const configCmd = program
92
- .command('config')
93
- .description('View or modify i18nsmith configuration');
94
- // Subcommand: config get <key>
95
- configCmd
96
- .command('get <key>')
97
- .description('Get a configuration value by key path (e.g., translationAdapter.module)')
98
- .option('-c, --config <path>', 'Path to i18nsmith config file', DEFAULT_CONFIG_FILENAME)
99
- .option('--json', 'Output as JSON', false)
100
- .action(async (key, options) => {
101
- try {
102
- const { config, configPath } = await loadConfigWithMeta(options.config);
103
- const keyPath = parseKeyPath(key);
104
- const value = getNestedValue(config, keyPath);
105
- if (value === undefined) {
106
- console.log(chalk.yellow(`Key "${key}" not found in config`));
107
- process.exitCode = 1;
108
- return;
109
- }
110
- if (options.json) {
111
- console.log(JSON.stringify({ key, value }, null, 2));
112
- }
113
- else {
114
- if (typeof value === 'object' && value !== null) {
115
- console.log(JSON.stringify(value, null, 2));
116
- }
117
- else {
118
- console.log(String(value));
119
- }
120
- }
121
- }
122
- catch (error) {
123
- console.error(chalk.red('Failed to get config:'), error.message);
124
- process.exitCode = 1;
125
- }
126
- });
127
- // Subcommand: config set <key> <value>
128
- configCmd
129
- .command('set <key> <value>')
130
- .description('Set a configuration value by key path (e.g., translationAdapter.module "src/i18n.ts")')
131
- .option('-c, --config <path>', 'Path to i18nsmith config file', DEFAULT_CONFIG_FILENAME)
132
- .option('--json', 'Output result as JSON', false)
133
- .action(async (key, value, options) => {
134
- try {
135
- const { configPath } = await loadConfigWithMeta(options.config);
136
- const { parsed } = await readRawConfig(configPath);
137
- const keyPath = parseKeyPath(key);
138
- const parsedValue = parseValue(value);
139
- setNestedValue(parsed, keyPath, parsedValue);
140
- await writeConfig(configPath, parsed);
141
- if (options.json) {
142
- console.log(JSON.stringify({ key, value: parsedValue, configPath }, null, 2));
143
- }
144
- else {
145
- console.log(chalk.green(`✓ Set ${key} = ${JSON.stringify(parsedValue)}`));
146
- console.log(chalk.dim(` Updated: ${configPath}`));
147
- }
148
- }
149
- catch (error) {
150
- console.error(chalk.red('Failed to set config:'), error.message);
151
- process.exitCode = 1;
152
- }
153
- });
154
- // Subcommand: config list
155
- configCmd
156
- .command('list')
157
- .description('List all configuration values')
158
- .option('-c, --config <path>', 'Path to i18nsmith config file', DEFAULT_CONFIG_FILENAME)
159
- .option('--json', 'Output as JSON', false)
160
- .action(async (options) => {
161
- try {
162
- const { config, configPath } = await loadConfigWithMeta(options.config);
163
- if (options.json) {
164
- console.log(JSON.stringify(config, null, 2));
165
- }
166
- else {
167
- console.log(chalk.blue(`Configuration from: ${configPath}`));
168
- console.log();
169
- console.log(JSON.stringify(config, null, 2));
170
- }
171
- }
172
- catch (error) {
173
- console.error(chalk.red('Failed to read config:'), error.message);
174
- process.exitCode = 1;
175
- }
176
- });
177
- // Subcommand: config path
178
- configCmd
179
- .command('path')
180
- .description('Print the path to the active config file')
181
- .option('-c, --config <path>', 'Path to i18nsmith config file', DEFAULT_CONFIG_FILENAME)
182
- .action(async (options) => {
183
- try {
184
- const { configPath } = await loadConfigWithMeta(options.config);
185
- console.log(configPath);
186
- }
187
- catch (error) {
188
- console.error(chalk.red('Failed to find config:'), error.message);
189
- process.exitCode = 1;
190
- }
191
- });
192
- // Subcommand: config init-adapter <path>
193
- configCmd
194
- .command('init-adapter <adapterPath>')
195
- .description('Configure a translation adapter module in the config file')
196
- .option('-c, --config <path>', 'Path to i18nsmith config file', DEFAULT_CONFIG_FILENAME)
197
- .option('--hook <name>', 'Name of the translation hook (default: useTranslation)', 'useTranslation')
198
- .option('--json', 'Output result as JSON', false)
199
- .action(async (adapterPath, options) => {
200
- try {
201
- const { configPath } = await loadConfigWithMeta(options.config);
202
- const { parsed } = await readRawConfig(configPath);
203
- // Resolve relative path
204
- const projectRoot = path.dirname(configPath);
205
- const relativePath = path.isAbsolute(adapterPath)
206
- ? path.relative(projectRoot, adapterPath)
207
- : adapterPath;
208
- // Update translationAdapter
209
- if (!parsed.translationAdapter || typeof parsed.translationAdapter !== 'object') {
210
- parsed.translationAdapter = {};
211
- }
212
- const adapter = parsed.translationAdapter;
213
- adapter.module = relativePath;
214
- adapter.hookName = options.hook;
215
- await writeConfig(configPath, parsed);
216
- if (options.json) {
217
- console.log(JSON.stringify({
218
- translationAdapter: parsed.translationAdapter,
219
- configPath,
220
- }, null, 2));
221
- }
222
- else {
223
- console.log(chalk.green('✓ Translation adapter configured:'));
224
- console.log(chalk.dim(` module: ${relativePath}`));
225
- console.log(chalk.dim(` hookName: ${options.hook}`));
226
- console.log(chalk.dim(` Updated: ${configPath}`));
227
- }
228
- }
229
- catch (error) {
230
- console.error(chalk.red('Failed to configure adapter:'), error.message);
231
- process.exitCode = 1;
232
- }
233
- });
234
- }
235
- //# sourceMappingURL=config.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/commands/config.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,aAAa,CAAC;AAC7B,OAAO,IAAI,MAAM,MAAM,CAAC;AACxB,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,OAAO,EAAE,kBAAkB,EAAE,uBAAuB,EAAE,MAAM,iBAAiB,CAAC;AAgB9E;;;GAGG;AACH,SAAS,YAAY,CAAC,OAAe;IACnC,OAAO,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;AAC5C,CAAC;AAED;;GAEG;AACH,SAAS,cAAc,CAAC,GAA4B,EAAE,OAAiB;IACrE,IAAI,OAAO,GAAY,GAAG,CAAC;IAC3B,KAAK,MAAM,GAAG,IAAI,OAAO,EAAE,CAAC;QAC1B,IAAI,OAAO,KAAK,IAAI,IAAI,OAAO,KAAK,SAAS,IAAI,OAAO,OAAO,KAAK,QAAQ,EAAE,CAAC;YAC7E,OAAO,SAAS,CAAC;QACnB,CAAC;QACD,OAAO,GAAI,OAAmC,CAAC,GAAG,CAAC,CAAC;IACtD,CAAC;IACD,OAAO,OAAO,CAAC;AACjB,CAAC;AAED;;;GAGG;AACH,SAAS,cAAc,CAAC,GAA4B,EAAE,OAAiB,EAAE,KAAc;IACrF,IAAI,OAAO,GAAG,GAAG,CAAC;IAClB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;QAC5C,MAAM,GAAG,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;QACvB,IAAI,CAAC,CAAC,GAAG,IAAI,OAAO,CAAC,IAAI,OAAO,OAAO,CAAC,GAAG,CAAC,KAAK,QAAQ,IAAI,OAAO,CAAC,GAAG,CAAC,KAAK,IAAI,EAAE,CAAC;YACnF,OAAO,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC;QACpB,CAAC;QACD,OAAO,GAAG,OAAO,CAAC,GAAG,CAA4B,CAAC;IACpD,CAAC;IACD,MAAM,QAAQ,GAAG,OAAO,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;IAC7C,OAAO,CAAC,QAAQ,CAAC,GAAG,KAAK,CAAC;AAC5B,CAAC;AAED;;;GAGG;AACH,SAAS,UAAU,CAAC,QAAgB;IAClC,UAAU;IACV,IAAI,QAAQ,KAAK,MAAM;QAAE,OAAO,IAAI,CAAC;IACrC,IAAI,QAAQ,KAAK,OAAO;QAAE,OAAO,KAAK,CAAC;IAEvC,OAAO;IACP,IAAI,QAAQ,KAAK,MAAM;QAAE,OAAO,IAAI,CAAC;IAErC,SAAS;IACT,IAAI,iBAAiB,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC;QACrC,OAAO,UAAU,CAAC,QAAQ,CAAC,CAAC;IAC9B,CAAC;IAED,uBAAuB;IACvB,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,QAAQ,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;QACpD,CAAC,QAAQ,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,QAAQ,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC;QACzD,IAAI,CAAC;YACH,OAAO,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;QAC9B,CAAC;QAAC,MAAM,CAAC;YACP,yBAAyB;QAC3B,CAAC;IACH,CAAC;IAED,uCAAuC;IACvC,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,QAAQ,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;QACpD,CAAC,QAAQ,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,QAAQ,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC;QACzD,OAAO,QAAQ,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;IAC/B,CAAC;IAED,OAAO,QAAQ,CAAC;AAClB,CAAC;AAED;;GAEG;AACH,KAAK,UAAU,aAAa,CAAC,UAAkB;IAC7C,MAAM,OAAO,GAAG,MAAM,EAAE,CAAC,QAAQ,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC;IACvD,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;IACnC,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,CAAC;AAC7B,CAAC;AAED;;GAEG;AACH,KAAK,UAAU,WAAW,CAAC,UAAkB,EAAE,MAA+B;IAC5E,MAAM,OAAO,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;IAChD,MAAM,EAAE,CAAC,SAAS,CAAC,UAAU,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC;AACnD,CAAC;AAED,MAAM,UAAU,cAAc,CAAC,OAAgB;IAC7C,MAAM,SAAS,GAAG,OAAO;SACtB,OAAO,CAAC,QAAQ,CAAC;SACjB,WAAW,CAAC,wCAAwC,CAAC,CAAC;IAEzD,+BAA+B;IAC/B,SAAS;SACN,OAAO,CAAC,WAAW,CAAC;SACpB,WAAW,CAAC,yEAAyE,CAAC;SACtF,MAAM,CAAC,qBAAqB,EAAE,+BAA+B,EAAE,uBAAuB,CAAC;SACvF,MAAM,CAAC,QAAQ,EAAE,gBAAgB,EAAE,KAAK,CAAC;SACzC,MAAM,CAAC,KAAK,EAAE,GAAW,EAAE,OAAyB,EAAE,EAAE;QACvD,IAAI,CAAC;YACH,MAAM,EAAE,MAAM,EAAE,UAAU,EAAE,GAAG,MAAM,kBAAkB,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;YACxE,MAAM,OAAO,GAAG,YAAY,CAAC,GAAG,CAAC,CAAC;YAClC,MAAM,KAAK,GAAG,cAAc,CAAC,MAA4C,EAAE,OAAO,CAAC,CAAC;YAEpF,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;gBACxB,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,QAAQ,GAAG,uBAAuB,CAAC,CAAC,CAAC;gBAC9D,OAAO,CAAC,QAAQ,GAAG,CAAC,CAAC;gBACrB,OAAO;YACT,CAAC;YAED,IAAI,OAAO,CAAC,IAAI,EAAE,CAAC;gBACjB,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,GAAG,EAAE,KAAK,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;YACvD,CAAC;iBAAM,CAAC;gBACN,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI,EAAE,CAAC;oBAChD,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;gBAC9C,CAAC;qBAAM,CAAC;oBACN,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;gBAC7B,CAAC;YACH,CAAC;QACH,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,uBAAuB,CAAC,EAAG,KAAe,CAAC,OAAO,CAAC,CAAC;YAC5E,OAAO,CAAC,QAAQ,GAAG,CAAC,CAAC;QACvB,CAAC;IACH,CAAC,CAAC,CAAC;IAEL,uCAAuC;IACvC,SAAS;SACN,OAAO,CAAC,mBAAmB,CAAC;SAC5B,WAAW,CAAC,uFAAuF,CAAC;SACpG,MAAM,CAAC,qBAAqB,EAAE,+BAA+B,EAAE,uBAAuB,CAAC;SACvF,MAAM,CAAC,QAAQ,EAAE,uBAAuB,EAAE,KAAK,CAAC;SAChD,MAAM,CAAC,KAAK,EAAE,GAAW,EAAE,KAAa,EAAE,OAAyB,EAAE,EAAE;QACtE,IAAI,CAAC;YACH,MAAM,EAAE,UAAU,EAAE,GAAG,MAAM,kBAAkB,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;YAChE,MAAM,EAAE,MAAM,EAAE,GAAG,MAAM,aAAa,CAAC,UAAU,CAAC,CAAC;YAEnD,MAAM,OAAO,GAAG,YAAY,CAAC,GAAG,CAAC,CAAC;YAClC,MAAM,WAAW,GAAG,UAAU,CAAC,KAAK,CAAC,CAAC;YAEtC,cAAc,CAAC,MAAM,EAAE,OAAO,EAAE,WAAW,CAAC,CAAC;YAE7C,MAAM,WAAW,CAAC,UAAU,EAAE,MAAM,CAAC,CAAC;YAEtC,IAAI,OAAO,CAAC,IAAI,EAAE,CAAC;gBACjB,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,GAAG,EAAE,KAAK,EAAE,WAAW,EAAE,UAAU,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;YAChF,CAAC;iBAAM,CAAC;gBACN,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,SAAS,GAAG,MAAM,IAAI,CAAC,SAAS,CAAC,WAAW,CAAC,EAAE,CAAC,CAAC,CAAC;gBAC1E,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,cAAc,UAAU,EAAE,CAAC,CAAC,CAAC;YACrD,CAAC;QACH,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,uBAAuB,CAAC,EAAG,KAAe,CAAC,OAAO,CAAC,CAAC;YAC5E,OAAO,CAAC,QAAQ,GAAG,CAAC,CAAC;QACvB,CAAC;IACH,CAAC,CAAC,CAAC;IAEL,0BAA0B;IAC1B,SAAS;SACN,OAAO,CAAC,MAAM,CAAC;SACf,WAAW,CAAC,+BAA+B,CAAC;SAC5C,MAAM,CAAC,qBAAqB,EAAE,+BAA+B,EAAE,uBAAuB,CAAC;SACvF,MAAM,CAAC,QAAQ,EAAE,gBAAgB,EAAE,KAAK,CAAC;SACzC,MAAM,CAAC,KAAK,EAAE,OAA6B,EAAE,EAAE;QAC9C,IAAI,CAAC;YACH,MAAM,EAAE,MAAM,EAAE,UAAU,EAAE,GAAG,MAAM,kBAAkB,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;YAExE,IAAI,OAAO,CAAC,IAAI,EAAE,CAAC;gBACjB,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;YAC/C,CAAC;iBAAM,CAAC;gBACN,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,uBAAuB,UAAU,EAAE,CAAC,CAAC,CAAC;gBAC7D,OAAO,CAAC,GAAG,EAAE,CAAC;gBACd,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;YAC/C,CAAC;QACH,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,wBAAwB,CAAC,EAAG,KAAe,CAAC,OAAO,CAAC,CAAC;YAC7E,OAAO,CAAC,QAAQ,GAAG,CAAC,CAAC;QACvB,CAAC;IACH,CAAC,CAAC,CAAC;IAEL,0BAA0B;IAC1B,SAAS;SACN,OAAO,CAAC,MAAM,CAAC;SACf,WAAW,CAAC,0CAA0C,CAAC;SACvD,MAAM,CAAC,qBAAqB,EAAE,+BAA+B,EAAE,uBAAuB,CAAC;SACvF,MAAM,CAAC,KAAK,EAAE,OAA6B,EAAE,EAAE;QAC9C,IAAI,CAAC;YACH,MAAM,EAAE,UAAU,EAAE,GAAG,MAAM,kBAAkB,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;YAChE,OAAO,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;QAC1B,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,wBAAwB,CAAC,EAAG,KAAe,CAAC,OAAO,CAAC,CAAC;YAC7E,OAAO,CAAC,QAAQ,GAAG,CAAC,CAAC;QACvB,CAAC;IACH,CAAC,CAAC,CAAC;IAEL,yCAAyC;IACzC,SAAS;SACN,OAAO,CAAC,4BAA4B,CAAC;SACrC,WAAW,CAAC,2DAA2D,CAAC;SACxE,MAAM,CAAC,qBAAqB,EAAE,+BAA+B,EAAE,uBAAuB,CAAC;SACvF,MAAM,CAAC,eAAe,EAAE,wDAAwD,EAAE,gBAAgB,CAAC;SACnG,MAAM,CAAC,QAAQ,EAAE,uBAAuB,EAAE,KAAK,CAAC;SAChD,MAAM,CAAC,KAAK,EAAE,WAAmB,EAAE,OAA0D,EAAE,EAAE;QAChG,IAAI,CAAC;YACH,MAAM,EAAE,UAAU,EAAE,GAAG,MAAM,kBAAkB,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;YAChE,MAAM,EAAE,MAAM,EAAE,GAAG,MAAM,aAAa,CAAC,UAAU,CAAC,CAAC;YAEnD,wBAAwB;YACxB,MAAM,WAAW,GAAG,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;YAC7C,MAAM,YAAY,GAAG,IAAI,CAAC,UAAU,CAAC,WAAW,CAAC;gBAC/C,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,WAAW,EAAE,WAAW,CAAC;gBACzC,CAAC,CAAC,WAAW,CAAC;YAEhB,4BAA4B;YAC5B,IAAI,CAAC,MAAM,CAAC,kBAAkB,IAAI,OAAO,MAAM,CAAC,kBAAkB,KAAK,QAAQ,EAAE,CAAC;gBAChF,MAAM,CAAC,kBAAkB,GAAG,EAAE,CAAC;YACjC,CAAC;YACD,MAAM,OAAO,GAAG,MAAM,CAAC,kBAA6C,CAAC;YACrE,OAAO,CAAC,MAAM,GAAG,YAAY,CAAC;YAC9B,OAAO,CAAC,QAAQ,GAAG,OAAO,CAAC,IAAI,CAAC;YAEhC,MAAM,WAAW,CAAC,UAAU,EAAE,MAAM,CAAC,CAAC;YAEtC,IAAI,OAAO,CAAC,IAAI,EAAE,CAAC;gBACjB,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC;oBACzB,kBAAkB,EAAE,MAAM,CAAC,kBAAkB;oBAC7C,UAAU;iBACX,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;YACf,CAAC;iBAAM,CAAC;gBACN,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,mCAAmC,CAAC,CAAC,CAAC;gBAC9D,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,aAAa,YAAY,EAAE,CAAC,CAAC,CAAC;gBACpD,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,eAAe,OAAO,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;gBACtD,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,cAAc,UAAU,EAAE,CAAC,CAAC,CAAC;YACrD,CAAC;QACH,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,8BAA8B,CAAC,EAAG,KAAe,CAAC,OAAO,CAAC,CAAC;YACnF,OAAO,CAAC,QAAQ,GAAG,CAAC,CAAC;QACvB,CAAC;IACH,CAAC,CAAC,CAAC;AACP,CAAC"}
@@ -1,3 +0,0 @@
1
- import { Command } from 'commander';
2
- export declare function registerDebugPatterns(program: Command): void;
3
- //# sourceMappingURL=debug-patterns.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"debug-patterns.d.ts","sourceRoot":"","sources":["../../src/commands/debug-patterns.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AA2BpC,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,OAAO,QA+BrD"}
@@ -1,192 +0,0 @@
1
- import path from 'path';
2
- import chalk from 'chalk';
3
- import fg from 'fast-glob';
4
- import { loadConfigWithMeta } from '@i18nsmith/core';
5
- export function registerDebugPatterns(program) {
6
- program
7
- .command('debug-patterns')
8
- .description('Debug include/exclude glob patterns to understand file matching')
9
- .option('-c, --config <path>', 'Path to i18nsmith config file', 'i18n.config.json')
10
- .option('--json', 'Print raw JSON results', false)
11
- .option('--verbose', 'Show all matched files for each pattern', false)
12
- .action(async (options) => {
13
- try {
14
- const { config, projectRoot, configPath } = await loadConfigWithMeta(options.config);
15
- console.log(chalk.blue('Debugging glob patterns...'));
16
- console.log(chalk.gray(`Config: ${path.relative(process.cwd(), configPath)}`));
17
- console.log(chalk.gray(`Project root: ${projectRoot}\n`));
18
- const includePatterns = config.include ?? ['**/*.tsx', '**/*.ts', '**/*.jsx', '**/*.js'];
19
- const excludePatterns = config.exclude ?? ['**/node_modules/**', '**/dist/**', '**/*.test.*', '**/*.spec.*'];
20
- const summary = await analyzePatterns(projectRoot, includePatterns, excludePatterns, options.verbose);
21
- if (options.json) {
22
- console.log(JSON.stringify(summary, null, 2));
23
- return;
24
- }
25
- printPatternAnalysis(summary, options.verbose);
26
- }
27
- catch (error) {
28
- console.error(chalk.red('Pattern debug failed:'), error.message);
29
- process.exitCode = 1;
30
- }
31
- });
32
- }
33
- async function analyzePatterns(projectRoot, includePatterns, excludePatterns, verbose) {
34
- const includeMatches = [];
35
- const excludeMatches = [];
36
- // Analyze each include pattern individually
37
- for (const pattern of includePatterns) {
38
- const files = await fg(pattern, {
39
- cwd: projectRoot,
40
- ignore: ['**/node_modules/**'],
41
- onlyFiles: true,
42
- absolute: false,
43
- });
44
- includeMatches.push({
45
- pattern,
46
- type: 'include',
47
- matchedFiles: files.sort(),
48
- matchCount: files.length,
49
- });
50
- }
51
- // Analyze each exclude pattern individually
52
- for (const pattern of excludePatterns) {
53
- const files = await fg(pattern, {
54
- cwd: projectRoot,
55
- onlyFiles: true,
56
- absolute: false,
57
- });
58
- excludeMatches.push({
59
- pattern,
60
- type: 'exclude',
61
- matchedFiles: files.sort(),
62
- matchCount: files.length,
63
- });
64
- }
65
- // Calculate effective files (include - exclude)
66
- const allIncluded = new Set();
67
- for (const match of includeMatches) {
68
- for (const file of match.matchedFiles) {
69
- allIncluded.add(file);
70
- }
71
- }
72
- const allExcluded = new Set();
73
- for (const match of excludeMatches) {
74
- for (const file of match.matchedFiles) {
75
- allExcluded.add(file);
76
- }
77
- }
78
- const effectiveFiles = Array.from(allIncluded)
79
- .filter(file => !allExcluded.has(file))
80
- .sort();
81
- // Generate suggestions for unmatched patterns
82
- const suggestions = generateSuggestions(includeMatches, excludeMatches, projectRoot);
83
- return {
84
- projectRoot,
85
- includePatterns: includeMatches,
86
- excludePatterns: excludeMatches,
87
- totalIncluded: allIncluded.size,
88
- totalExcluded: allExcluded.size,
89
- effectiveFiles,
90
- unmatchedSuggestions: suggestions,
91
- };
92
- }
93
- function generateSuggestions(includeMatches, excludeMatches, projectRoot) {
94
- const suggestions = [];
95
- // Check for patterns with no matches
96
- for (const match of includeMatches) {
97
- if (match.matchCount === 0) {
98
- const suggestion = suggestPatternFix(match.pattern, projectRoot);
99
- if (suggestion) {
100
- suggestions.push(`Include pattern "${match.pattern}" matched 0 files. ${suggestion}`);
101
- }
102
- else {
103
- suggestions.push(`Include pattern "${match.pattern}" matched 0 files. Check if files exist or adjust the pattern.`);
104
- }
105
- }
106
- }
107
- // Check if excludes are too broad
108
- const totalIncluded = includeMatches.reduce((sum, m) => sum + m.matchCount, 0);
109
- const totalExcluded = excludeMatches.reduce((sum, m) => sum + m.matchCount, 0);
110
- if (totalExcluded > totalIncluded * 0.9 && totalIncluded > 0) {
111
- suggestions.push('Warning: Exclude patterns are filtering out most files. Consider narrowing exclusions.');
112
- }
113
- // Check for common pattern mistakes
114
- for (const match of includeMatches) {
115
- if (match.pattern.startsWith('/')) {
116
- suggestions.push(`Pattern "${match.pattern}" starts with "/" which may not match relative paths. Try "${match.pattern.slice(1)}".`);
117
- }
118
- if (match.pattern.includes('\\')) {
119
- suggestions.push(`Pattern "${match.pattern}" contains backslashes. Use forward slashes "/" for glob patterns.`);
120
- }
121
- }
122
- return suggestions;
123
- }
124
- function suggestPatternFix(pattern, projectRoot) {
125
- // Common fixes for patterns that don't match
126
- // If pattern is like "src/**/*.tsx" but files are in "app/**/*.tsx"
127
- if (pattern.startsWith('src/')) {
128
- return 'Try "app/**/*" or check your source directory structure.';
129
- }
130
- // If pattern uses .tsx but project has .jsx
131
- if (pattern.includes('.tsx')) {
132
- return 'Try replacing ".tsx" with ".jsx" if using JavaScript.';
133
- }
134
- // If pattern uses double asterisk incorrectly
135
- if (pattern.includes('/**') && !pattern.includes('/**/')) {
136
- return 'Use "**/" for recursive matching (e.g., "src/**/*.tsx").';
137
- }
138
- return null;
139
- }
140
- function printPatternAnalysis(summary, verbose) {
141
- console.log(chalk.blue('📁 Include Patterns\n'));
142
- for (const match of summary.includePatterns) {
143
- const status = match.matchCount > 0 ? chalk.green('✓') : chalk.red('✗');
144
- console.log(` ${status} ${chalk.cyan(match.pattern)} → ${match.matchCount} file(s)`);
145
- if (verbose && match.matchCount > 0) {
146
- const preview = match.matchedFiles.slice(0, 10);
147
- preview.forEach(file => console.log(chalk.gray(` • ${file}`)));
148
- if (match.matchedFiles.length > 10) {
149
- console.log(chalk.gray(` ... and ${match.matchedFiles.length - 10} more`));
150
- }
151
- }
152
- }
153
- console.log(chalk.blue('\n🚫 Exclude Patterns\n'));
154
- for (const match of summary.excludePatterns) {
155
- const status = match.matchCount > 0 ? chalk.yellow('⚠') : chalk.gray('○');
156
- console.log(` ${status} ${chalk.cyan(match.pattern)} → ${match.matchCount} file(s)`);
157
- if (verbose && match.matchCount > 0) {
158
- const preview = match.matchedFiles.slice(0, 5);
159
- preview.forEach(file => console.log(chalk.gray(` • ${file}`)));
160
- if (match.matchedFiles.length > 5) {
161
- console.log(chalk.gray(` ... and ${match.matchedFiles.length - 5} more`));
162
- }
163
- }
164
- }
165
- console.log(chalk.blue('\n📊 Summary\n'));
166
- console.log(` Total matched by include patterns: ${summary.totalIncluded}`);
167
- console.log(` Total matched by exclude patterns: ${summary.totalExcluded}`);
168
- console.log(chalk.green(` Effective files to scan: ${summary.effectiveFiles.length}`));
169
- if (verbose && summary.effectiveFiles.length > 0) {
170
- console.log(chalk.blue('\n📄 Effective Files (first 20)\n'));
171
- summary.effectiveFiles.slice(0, 20).forEach(file => {
172
- console.log(chalk.gray(` • ${file}`));
173
- });
174
- if (summary.effectiveFiles.length > 20) {
175
- console.log(chalk.gray(` ... and ${summary.effectiveFiles.length - 20} more`));
176
- }
177
- }
178
- if (summary.unmatchedSuggestions.length > 0) {
179
- console.log(chalk.yellow('\n💡 Suggestions\n'));
180
- summary.unmatchedSuggestions.forEach(suggestion => {
181
- console.log(chalk.yellow(` • ${suggestion}`));
182
- });
183
- }
184
- if (summary.effectiveFiles.length === 0) {
185
- console.log(chalk.red('\n⚠️ No files will be scanned! Check your patterns.'));
186
- console.log(chalk.gray(' Common issues:'));
187
- console.log(chalk.gray(' • Include patterns don\'t match your source directory'));
188
- console.log(chalk.gray(' • Exclude patterns are too broad'));
189
- console.log(chalk.gray(' • File extensions don\'t match (.tsx vs .jsx, .ts vs .js)'));
190
- }
191
- }
192
- //# sourceMappingURL=debug-patterns.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"debug-patterns.js","sourceRoot":"","sources":["../../src/commands/debug-patterns.ts"],"names":[],"mappings":"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"}
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=debug-patterns.test.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"debug-patterns.test.d.ts","sourceRoot":"","sources":["../../src/commands/debug-patterns.test.ts"],"names":[],"mappings":""}
@@ -1,109 +0,0 @@
1
- import { describe, it, expect, beforeEach, afterEach } from 'vitest';
2
- import fs from 'fs/promises';
3
- import path from 'path';
4
- import os from 'os';
5
- import { spawnSync } from 'child_process';
6
- import { fileURLToPath } from 'url';
7
- const __filename = fileURLToPath(import.meta.url);
8
- const __dirname = path.dirname(__filename);
9
- const CLI_PATH = path.resolve(__dirname, '../../dist/index.js');
10
- function runCli(args, options = {}) {
11
- const result = spawnSync('node', [CLI_PATH, ...args], {
12
- cwd: options.cwd ?? process.cwd(),
13
- encoding: 'utf8',
14
- timeout: 30000,
15
- env: {
16
- ...process.env,
17
- CI: 'true',
18
- NO_COLOR: '1',
19
- FORCE_COLOR: '0',
20
- },
21
- });
22
- return {
23
- stdout: result.stdout ?? '',
24
- stderr: result.stderr ?? '',
25
- output: (result.stdout ?? '') + (result.stderr ?? ''),
26
- exitCode: result.status ?? 1,
27
- };
28
- }
29
- describe('debug-patterns command', () => {
30
- let tmpDir;
31
- beforeEach(async () => {
32
- tmpDir = await fs.mkdtemp(path.join(os.tmpdir(), 'i18nsmith-debug-patterns-'));
33
- // Create a basic config
34
- const config = {
35
- sourceLanguage: 'en',
36
- targetLanguages: ['fr'],
37
- localesDir: 'locales',
38
- include: ['src/**/*.tsx', 'src/**/*.ts'],
39
- exclude: ['**/*.test.ts', '**/node_modules/**'],
40
- };
41
- await fs.writeFile(path.join(tmpDir, 'i18n.config.json'), JSON.stringify(config, null, 2));
42
- // Create some source files
43
- await fs.mkdir(path.join(tmpDir, 'src'));
44
- await fs.writeFile(path.join(tmpDir, 'src', 'App.tsx'), 'export function App() { return <div>Hello</div>; }');
45
- await fs.writeFile(path.join(tmpDir, 'src', 'utils.ts'), 'export const add = (a: number, b: number) => a + b;');
46
- await fs.writeFile(path.join(tmpDir, 'src', 'utils.test.ts'), 'test("add", () => expect(add(1, 2)).toBe(3));');
47
- // Create locales directory
48
- await fs.mkdir(path.join(tmpDir, 'locales'));
49
- await fs.writeFile(path.join(tmpDir, 'locales', 'en.json'), '{}');
50
- });
51
- afterEach(async () => {
52
- await fs.rm(tmpDir, { recursive: true, force: true });
53
- });
54
- it('should show include patterns with file counts', () => {
55
- const result = runCli(['debug-patterns'], { cwd: tmpDir });
56
- expect(result.exitCode).toBe(0);
57
- expect(result.output).toContain('Include Patterns');
58
- expect(result.output).toContain('src/**/*.tsx');
59
- expect(result.output).toContain('src/**/*.ts');
60
- });
61
- it('should show exclude patterns', () => {
62
- const result = runCli(['debug-patterns'], { cwd: tmpDir });
63
- expect(result.output).toContain('Exclude Patterns');
64
- expect(result.output).toContain('**/*.test.ts');
65
- });
66
- it('should show summary with effective file count', () => {
67
- const result = runCli(['debug-patterns'], { cwd: tmpDir });
68
- expect(result.output).toContain('Summary');
69
- expect(result.output).toContain('Effective files to scan');
70
- });
71
- it('should list files in verbose mode', () => {
72
- const result = runCli(['debug-patterns', '--verbose'], { cwd: tmpDir });
73
- expect(result.output).toContain('App.tsx');
74
- expect(result.output).toContain('utils.ts');
75
- });
76
- it('should output JSON when --json flag is used', () => {
77
- const result = runCli(['debug-patterns', '--json'], { cwd: tmpDir });
78
- // Extract JSON from output
79
- const jsonMatch = result.stdout.match(/\{[\s\S]*\}/);
80
- expect(jsonMatch).not.toBeNull();
81
- const parsed = JSON.parse(jsonMatch[0]);
82
- expect(parsed).toHaveProperty('includePatterns');
83
- expect(parsed).toHaveProperty('excludePatterns');
84
- expect(parsed).toHaveProperty('effectiveFiles');
85
- expect(Array.isArray(parsed.effectiveFiles)).toBe(true);
86
- });
87
- it('should detect unmatched patterns and suggest fixes', async () => {
88
- // Update config with a pattern that won't match
89
- const config = {
90
- sourceLanguage: 'en',
91
- targetLanguages: ['fr'],
92
- localesDir: 'locales',
93
- include: ['app/**/*.tsx', 'src/**/*.tsx'], // app/ doesn't exist
94
- exclude: ['**/node_modules/**'],
95
- };
96
- await fs.writeFile(path.join(tmpDir, 'i18n.config.json'), JSON.stringify(config, null, 2));
97
- const result = runCli(['debug-patterns'], { cwd: tmpDir });
98
- // Should show the pattern that matched 0 files
99
- expect(result.output).toContain('app/**/*.tsx');
100
- expect(result.output).toContain('0 file(s)');
101
- });
102
- it('should handle missing config gracefully', async () => {
103
- await fs.rm(path.join(tmpDir, 'i18n.config.json'));
104
- const result = runCli(['debug-patterns'], { cwd: tmpDir });
105
- expect(result.exitCode).toBe(1);
106
- expect(result.output).toContain('failed');
107
- });
108
- });
109
- //# sourceMappingURL=debug-patterns.test.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"debug-patterns.test.js","sourceRoot":"","sources":["../../src/commands/debug-patterns.test.ts"],"names":[],"mappings":"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"}
@@ -1,3 +0,0 @@
1
- import type { Command } from 'commander';
2
- export declare function registerDiagnose(program: Command): void;
3
- //# sourceMappingURL=diagnose.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"diagnose.d.ts","sourceRoot":"","sources":["../../src/commands/diagnose.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AA+FzC,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,OAAO,QAqChD"}