i18next-cli 1.21.0 → 1.22.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (36) hide show
  1. package/CHANGELOG.md +8 -0
  2. package/README.md +107 -0
  3. package/dist/cjs/cli.js +1 -1
  4. package/dist/cjs/extractor/core/ast-visitors.js +1 -1
  5. package/dist/cjs/extractor/core/extractor.js +1 -1
  6. package/dist/cjs/extractor/core/translation-manager.js +1 -1
  7. package/dist/cjs/extractor/parsers/call-expression-handler.js +1 -1
  8. package/dist/cjs/extractor/parsers/jsx-handler.js +1 -1
  9. package/dist/cjs/extractor/plugin-manager.js +1 -1
  10. package/dist/esm/cli.js +1 -1
  11. package/dist/esm/extractor/core/ast-visitors.js +1 -1
  12. package/dist/esm/extractor/core/extractor.js +1 -1
  13. package/dist/esm/extractor/core/translation-manager.js +1 -1
  14. package/dist/esm/extractor/parsers/call-expression-handler.js +1 -1
  15. package/dist/esm/extractor/parsers/jsx-handler.js +1 -1
  16. package/dist/esm/extractor/plugin-manager.js +1 -1
  17. package/package.json +1 -1
  18. package/src/cli.ts +1 -1
  19. package/src/extractor/core/ast-visitors.ts +48 -2
  20. package/src/extractor/core/extractor.ts +3 -0
  21. package/src/extractor/core/translation-manager.ts +4 -0
  22. package/src/extractor/parsers/call-expression-handler.ts +45 -2
  23. package/src/extractor/parsers/jsx-handler.ts +93 -19
  24. package/src/extractor/plugin-manager.ts +27 -3
  25. package/src/types.ts +7 -0
  26. package/types/extractor/core/ast-visitors.d.ts +23 -0
  27. package/types/extractor/core/ast-visitors.d.ts.map +1 -1
  28. package/types/extractor/core/extractor.d.ts.map +1 -1
  29. package/types/extractor/core/translation-manager.d.ts.map +1 -1
  30. package/types/extractor/parsers/call-expression-handler.d.ts +8 -1
  31. package/types/extractor/parsers/call-expression-handler.d.ts.map +1 -1
  32. package/types/extractor/parsers/jsx-handler.d.ts +9 -1
  33. package/types/extractor/parsers/jsx-handler.d.ts.map +1 -1
  34. package/types/extractor/plugin-manager.d.ts.map +1 -1
  35. package/types/types.d.ts +6 -0
  36. package/types/types.d.ts.map +1 -1
@@ -41,6 +41,8 @@ export class ASTVisitors {
41
41
  private readonly expressionResolver: ExpressionResolver
42
42
  private readonly callExpressionHandler: CallExpressionHandler
43
43
  private readonly jsxHandler: JSXHandler
44
+ private currentFile: string = ''
45
+ private currentCode: string = ''
44
46
 
45
47
  /**
46
48
  * Creates a new AST visitor instance.
@@ -69,8 +71,21 @@ export class ASTVisitors {
69
71
  this.scopeManager = new ScopeManager(config)
70
72
  // use shared resolver when provided so captured enums/objects are visible across files
71
73
  this.expressionResolver = expressionResolver ?? new ExpressionResolver(this.hooks)
72
- this.callExpressionHandler = new CallExpressionHandler(config, pluginContext, logger, this.expressionResolver)
73
- this.jsxHandler = new JSXHandler(config, pluginContext, this.expressionResolver)
74
+ this.callExpressionHandler = new CallExpressionHandler(
75
+ config,
76
+ pluginContext,
77
+ logger,
78
+ this.expressionResolver,
79
+ () => this.getCurrentFile(),
80
+ () => this.getCurrentCode()
81
+ )
82
+ this.jsxHandler = new JSXHandler(
83
+ config,
84
+ pluginContext,
85
+ this.expressionResolver,
86
+ () => this.getCurrentFile(),
87
+ () => this.getCurrentCode()
88
+ )
74
89
  }
75
90
 
76
91
  /**
@@ -211,4 +226,35 @@ export class ASTVisitors {
211
226
  public getVarFromScope (name: string): ScopeInfo | undefined {
212
227
  return this.scopeManager.getVarFromScope(name)
213
228
  }
229
+
230
+ /**
231
+ * Sets the current file path used by the extractor.
232
+ *
233
+ * @param file - The file path (absolute or relative) to set as the current processing context.
234
+ * @remarks
235
+ * Updating the current file allows subsequent AST visitors and extraction logic to
236
+ * associate nodes, messages, and errors with the correct source file.
237
+ */
238
+ public setCurrentFile (file: string, code: string): void {
239
+ this.currentFile = file
240
+ this.currentCode = code
241
+ }
242
+
243
+ /**
244
+ * Returns the currently set file path.
245
+ *
246
+ * @returns The current file path as a string, or `undefined` if no file has been set.
247
+ * @remarks
248
+ * Use this to retrieve the file context that was previously set via `setCurrentFile`.
249
+ */
250
+ public getCurrentFile (): string {
251
+ return this.currentFile
252
+ }
253
+
254
+ /**
255
+ * @returns The full source code string for the file currently under processing.
256
+ */
257
+ public getCurrentCode (): string {
258
+ return this.currentCode
259
+ }
214
260
  }
@@ -194,6 +194,9 @@ export async function processFile (
194
194
  // This avoids a circular dependency while giving plugins access to the scope.
195
195
  pluginContext.getVarFromScope = astVisitors.getVarFromScope.bind(astVisitors)
196
196
 
197
+ // Pass BOTH file and code
198
+ astVisitors.setCurrentFile(file, code)
199
+
197
200
  // 3. FIRST: Visit the AST to build scope information
198
201
  astVisitors.visit(ast)
199
202
 
@@ -401,6 +401,8 @@ function buildNewTranslationsForNs (
401
401
  // - Otherwise use empty string for new keys
402
402
  const isDerivedDefault = defaultValue && (
403
403
  defaultValue === key || // Exact match
404
+ // Check if defaultValue includes namespace prefix (e.g., "translation:app.key")
405
+ defaultValue.includes(nsSep) ||
404
406
  // For variant keys (plural/context), check if defaultValue is the base
405
407
  (key !== defaultValue &&
406
408
  (key.startsWith(defaultValue + pluralSeparator) ||
@@ -422,6 +424,8 @@ function buildNewTranslationsForNs (
422
424
  // Only update when we have a meaningful defaultValue that's not derived from the key pattern.
423
425
  const isDerivedDefault = defaultValue && (
424
426
  defaultValue === key || // Exact match
427
+ // Check if defaultValue includes namespace prefix (e.g., "translation:app.key")
428
+ defaultValue.includes(nsSep) ||
425
429
  // For variant keys (plural/context), check if defaultValue is the base
426
430
  (key !== defaultValue &&
427
431
  (key.startsWith(defaultValue + pluralSeparator) ||
@@ -9,17 +9,43 @@ export class CallExpressionHandler {
9
9
  private logger: Logger
10
10
  private expressionResolver: ExpressionResolver
11
11
  public objectKeys = new Set<string>()
12
+ private getCurrentFile: () => string
13
+ private getCurrentCode: () => string
12
14
 
13
15
  constructor (
14
16
  config: Omit<I18nextToolkitConfig, 'plugins'>,
15
17
  pluginContext: PluginContext,
16
18
  logger: Logger,
17
- expressionResolver: ExpressionResolver
19
+ expressionResolver: ExpressionResolver,
20
+ getCurrentFile: () => string,
21
+ getCurrentCode: () => string
18
22
  ) {
19
23
  this.config = config
20
24
  this.pluginContext = pluginContext
21
25
  this.logger = logger
22
26
  this.expressionResolver = expressionResolver
27
+ this.getCurrentFile = getCurrentFile
28
+ this.getCurrentCode = getCurrentCode
29
+ }
30
+
31
+ /**
32
+ * Helper method to calculate line and column from byte offset.
33
+ * SWC provides byte offsets in span.start, not line/column directly.
34
+ */
35
+ private getLocationFromSpan (span: any): { line: number, column: number } | undefined {
36
+ if (!span || typeof span.start !== 'number') return undefined
37
+
38
+ const code = this.getCurrentCode()
39
+ const offset = span.start
40
+
41
+ // Calculate line and column from byte offset
42
+ const upToOffset = code.substring(0, offset)
43
+ const lines = upToOffset.split('\n')
44
+
45
+ return {
46
+ line: lines.length,
47
+ column: lines[lines.length - 1].length
48
+ }
23
49
  }
24
50
 
25
51
  /**
@@ -363,7 +389,24 @@ export class CallExpressionHandler {
363
389
  }
364
390
 
365
391
  // 5. Default case: Add the simple key
366
- this.pluginContext.addKey({ key: finalKey, ns, defaultValue: dv, explicitDefault: explicitDefaultForBase })
392
+ {
393
+ // ✅ Use the helper method to calculate proper line/column
394
+ const location = node.span ? this.getLocationFromSpan(node.span) : undefined
395
+
396
+ this.pluginContext.addKey({
397
+ key: finalKey,
398
+ ns,
399
+ defaultValue: dv,
400
+ explicitDefault: explicitDefaultForBase,
401
+ locations: location
402
+ ? [{
403
+ file: this.getCurrentFile(),
404
+ line: location.line,
405
+ column: location.column
406
+ }]
407
+ : undefined
408
+ })
409
+ }
367
410
  }
368
411
  }
369
412
 
@@ -8,15 +8,39 @@ export class JSXHandler {
8
8
  private config: Omit<I18nextToolkitConfig, 'plugins'>
9
9
  private pluginContext: PluginContext
10
10
  private expressionResolver: ExpressionResolver
11
+ private getCurrentFile: () => string
12
+ private getCurrentCode: () => string // ✅ Add this
11
13
 
12
14
  constructor (
13
15
  config: Omit<I18nextToolkitConfig, 'plugins'>,
14
16
  pluginContext: PluginContext,
15
- expressionResolver: ExpressionResolver
17
+ expressionResolver: ExpressionResolver,
18
+ getCurrentFile: () => string,
19
+ getCurrentCode: () => string // ✅ Add parameter
16
20
  ) {
17
21
  this.config = config
18
22
  this.pluginContext = pluginContext
19
23
  this.expressionResolver = expressionResolver
24
+ this.getCurrentFile = getCurrentFile
25
+ this.getCurrentCode = getCurrentCode // ✅ Store it
26
+ }
27
+
28
+ /**
29
+ * Helper method to calculate line and column from byte offset.
30
+ */
31
+ private getLocationFromSpan (span: any): { line: number, column: number } | undefined {
32
+ if (!span || typeof span.start !== 'number') return undefined
33
+
34
+ const code = this.getCurrentCode()
35
+ const offset = span.start
36
+
37
+ const upToOffset = code.substring(0, offset)
38
+ const lines = upToOffset.split('\n')
39
+
40
+ return {
41
+ line: lines.length,
42
+ column: lines[lines.length - 1].length
43
+ }
20
44
  }
21
45
 
22
46
  /**
@@ -48,6 +72,16 @@ export class JSXHandler {
48
72
 
49
73
  const { contextExpression, optionsNode, defaultValue, hasCount, isOrdinal, serializedChildren } = extractedAttributes
50
74
 
75
+ // ✅ Extract location information using the helper method
76
+ const location = node.span ? this.getLocationFromSpan(node.span) : undefined
77
+ const locations = location
78
+ ? [{
79
+ file: this.getCurrentFile(),
80
+ line: location.line,
81
+ column: location.column
82
+ }]
83
+ : undefined
84
+
51
85
  // If ns is not explicitly set on the component, try to find it from the key
52
86
  // or the `t` prop
53
87
  if (!extractedAttributes.ns) {
@@ -71,6 +105,7 @@ export class JSXHandler {
71
105
  hasCount,
72
106
  isOrdinal,
73
107
  explicitDefault: extractedAttributes.explicitDefault,
108
+ locations
74
109
  }
75
110
  })
76
111
 
@@ -106,6 +141,7 @@ export class JSXHandler {
106
141
  defaultValue: defaultValue || serializedChildren,
107
142
  hasCount,
108
143
  isOrdinal,
144
+ locations
109
145
  }
110
146
  })
111
147
  }
@@ -133,7 +169,12 @@ export class JSXHandler {
133
169
  for (const context of contextValues) {
134
170
  for (const extractedKey of extractedKeys) {
135
171
  const contextKey = `${extractedKey.key}${contextSeparator}${context}`
136
- this.pluginContext.addKey({ key: contextKey, ns: extractedKey.ns, defaultValue: extractedKey.defaultValue })
172
+ this.pluginContext.addKey({
173
+ key: contextKey,
174
+ ns: extractedKey.ns,
175
+ defaultValue: extractedKey.defaultValue,
176
+ locations: extractedKey.locations
177
+ })
137
178
  }
138
179
  }
139
180
  } else {
@@ -142,13 +183,19 @@ export class JSXHandler {
142
183
  this.pluginContext.addKey({
143
184
  key: extractedKey.key,
144
185
  ns: extractedKey.ns,
145
- defaultValue: extractedKey.defaultValue
186
+ defaultValue: extractedKey.defaultValue,
187
+ locations: extractedKey.locations
146
188
  })
147
189
  })
148
190
  for (const context of contextValues) {
149
191
  for (const extractedKey of extractedKeys) {
150
192
  const contextKey = `${extractedKey.key}${contextSeparator}${context}`
151
- this.pluginContext.addKey({ key: contextKey, ns: extractedKey.ns, defaultValue: extractedKey.defaultValue })
193
+ this.pluginContext.addKey({
194
+ key: contextKey,
195
+ ns: extractedKey.ns,
196
+ defaultValue: extractedKey.defaultValue,
197
+ locations: extractedKey.locations
198
+ })
152
199
  }
153
200
  }
154
201
  }
@@ -158,7 +205,8 @@ export class JSXHandler {
158
205
  this.pluginContext.addKey({
159
206
  key: extractedKey.key,
160
207
  ns: extractedKey.ns,
161
- defaultValue: extractedKey.defaultValue
208
+ defaultValue: extractedKey.defaultValue,
209
+ locations: extractedKey.locations
162
210
  })
163
211
  })
164
212
  }
@@ -179,18 +227,18 @@ export class JSXHandler {
179
227
  // Generate all combinations of context and plural forms
180
228
  if (contextValues.length > 0) {
181
229
  // Generate base plural forms (no context)
182
- extractedKeys.forEach(extractedKey => this.generatePluralKeysForTrans(extractedKey.key, extractedKey.defaultValue, extractedKey.ns, isOrdinal, optionsNode))
230
+ extractedKeys.forEach(extractedKey => this.generatePluralKeysForTrans(extractedKey.key, extractedKey.defaultValue, extractedKey.ns, isOrdinal, optionsNode, undefined, extractedKey.locations))
183
231
 
184
232
  // Generate context + plural combinations
185
233
  for (const context of contextValues) {
186
234
  for (const extractedKey of extractedKeys) {
187
235
  const contextKey = `${extractedKey.key}${contextSeparator}${context}`
188
- this.generatePluralKeysForTrans(contextKey, extractedKey.defaultValue, extractedKey.ns, isOrdinal, optionsNode, extractedKey.explicitDefault)
236
+ this.generatePluralKeysForTrans(contextKey, extractedKey.defaultValue, extractedKey.ns, isOrdinal, optionsNode, extractedKey.explicitDefault, extractedKey.locations)
189
237
  }
190
238
  }
191
239
  } else {
192
240
  // Fallback to just plural forms if context resolution fails
193
- extractedKeys.forEach(extractedKey => this.generatePluralKeysForTrans(extractedKey.key, extractedKey.defaultValue, extractedKey.ns, isOrdinal, optionsNode, extractedKey.explicitDefault))
241
+ extractedKeys.forEach(extractedKey => this.generatePluralKeysForTrans(extractedKey.key, extractedKey.defaultValue, extractedKey.ns, isOrdinal, optionsNode, extractedKey.explicitDefault, extractedKey.locations))
194
242
  }
195
243
  }
196
244
  } else if (contextExpression) {
@@ -200,8 +248,13 @@ export class JSXHandler {
200
248
  if (contextValues.length > 0) {
201
249
  // Add context variants
202
250
  for (const context of contextValues) {
203
- for (const { key, ns, defaultValue } of extractedKeys) {
204
- this.pluginContext.addKey({ key: `${key}${contextSeparator}${context}`, ns, defaultValue })
251
+ for (const { key, ns, defaultValue, locations } of extractedKeys) {
252
+ this.pluginContext.addKey({
253
+ key: `${key}${contextSeparator}${context}`,
254
+ ns,
255
+ defaultValue,
256
+ locations
257
+ })
205
258
  }
206
259
  }
207
260
  // Only add the base key as a fallback if the context is dynamic (i.e., not a simple string).
@@ -210,7 +263,8 @@ export class JSXHandler {
210
263
  this.pluginContext.addKey({
211
264
  key: extractedKey.key,
212
265
  ns: extractedKey.ns,
213
- defaultValue: extractedKey.defaultValue
266
+ defaultValue: extractedKey.defaultValue,
267
+ locations: extractedKey.locations
214
268
  })
215
269
  })
216
270
  }
@@ -220,7 +274,8 @@ export class JSXHandler {
220
274
  this.pluginContext.addKey({
221
275
  key: extractedKey.key,
222
276
  ns: extractedKey.ns,
223
- defaultValue: extractedKey.defaultValue
277
+ defaultValue: extractedKey.defaultValue,
278
+ locations: extractedKey.locations
224
279
  })
225
280
  })
226
281
  }
@@ -232,7 +287,8 @@ export class JSXHandler {
232
287
  this.pluginContext.addKey({
233
288
  key: extractedKey.key,
234
289
  ns: extractedKey.ns,
235
- defaultValue: extractedKey.defaultValue
290
+ defaultValue: extractedKey.defaultValue,
291
+ locations: extractedKey.locations
236
292
  })
237
293
  })
238
294
  } else {
@@ -246,7 +302,7 @@ export class JSXHandler {
246
302
  )
247
303
  const isOrdinal = !!ordinalAttr
248
304
 
249
- extractedKeys.forEach(extractedKey => this.generatePluralKeysForTrans(extractedKey.key, extractedKey.defaultValue, extractedKey.ns, isOrdinal, optionsNode, extractedKey.explicitDefault))
305
+ extractedKeys.forEach(extractedKey => this.generatePluralKeysForTrans(extractedKey.key, extractedKey.defaultValue, extractedKey.ns, isOrdinal, optionsNode, extractedKey.explicitDefault, extractedKey.locations))
250
306
  }
251
307
  } else {
252
308
  // No count or context - just add the base keys
@@ -254,7 +310,8 @@ export class JSXHandler {
254
310
  this.pluginContext.addKey({
255
311
  key: extractedKey.key,
256
312
  ns: extractedKey.ns,
257
- defaultValue: extractedKey.defaultValue
313
+ defaultValue: extractedKey.defaultValue,
314
+ locations: extractedKey.locations
258
315
  })
259
316
  })
260
317
  }
@@ -270,8 +327,18 @@ export class JSXHandler {
270
327
  * @param ns - Namespace for the keys
271
328
  * @param isOrdinal - Whether to generate ordinal plural forms
272
329
  * @param optionsNode - Optional tOptions object expression for plural-specific defaults
330
+ * @param explicitDefaultFromSource - Whether the default was explicitly provided in source
331
+ * @param locations - Source location information for this key
273
332
  */
274
- private generatePluralKeysForTrans (key: string, defaultValue: string | undefined, ns: string | false | undefined, isOrdinal: boolean, optionsNode?: ObjectExpression, explicitDefaultFromSource?: boolean): void {
333
+ private generatePluralKeysForTrans (
334
+ key: string,
335
+ defaultValue: string | undefined,
336
+ ns: string | false | undefined,
337
+ isOrdinal: boolean,
338
+ optionsNode?: ObjectExpression,
339
+ explicitDefaultFromSource?: boolean,
340
+ locations?: Array<{ file: string, line?: number, column?: number }>
341
+ ): void {
275
342
  try {
276
343
  const type = isOrdinal ? 'ordinal' : 'cardinal'
277
344
  const pluralCategories = new Intl.PluralRules(this.config.extract?.primaryLanguage, { type }).resolvedOptions().pluralCategories
@@ -299,7 +366,8 @@ export class JSXHandler {
299
366
  defaultValue: finalDefault,
300
367
  hasCount: true,
301
368
  isOrdinal,
302
- explicitDefault: Boolean(explicitDefaultFromSource || typeof specificDefault === 'string' || typeof otherDefault === 'string')
369
+ explicitDefault: Boolean(explicitDefaultFromSource || typeof specificDefault === 'string' || typeof otherDefault === 'string'),
370
+ locations
303
371
  })
304
372
  return
305
373
  }
@@ -344,12 +412,18 @@ export class JSXHandler {
344
412
  // Only treat plural/context variant as explicit when:
345
413
  // - the extractor indicated the default was explicit on the source element
346
414
  // - OR a plural-specific default was provided in tOptions (specificDefault/otherDefault)
347
- explicitDefault: Boolean(explicitDefaultFromSource || typeof specificDefault === 'string' || typeof otherDefault === 'string')
415
+ explicitDefault: Boolean(explicitDefaultFromSource || typeof specificDefault === 'string' || typeof otherDefault === 'string'),
416
+ locations
348
417
  })
349
418
  }
350
419
  } catch (e) {
351
420
  // Fallback to a simple key if Intl API fails
352
- this.pluginContext.addKey({ key, ns, defaultValue })
421
+ this.pluginContext.addKey({
422
+ key,
423
+ ns,
424
+ defaultValue,
425
+ locations
426
+ })
353
427
  }
354
428
  }
355
429
 
@@ -39,7 +39,12 @@ export async function initializePlugins (plugins: any[]): Promise<void> {
39
39
  * })
40
40
  * ```
41
41
  */
42
- export function createPluginContext (allKeys: Map<string, ExtractedKey>, plugins: Plugin[], config: Omit<I18nextToolkitConfig, 'plugins'>, logger: Logger): PluginContext {
42
+ export function createPluginContext (
43
+ allKeys: Map<string, ExtractedKey>,
44
+ plugins: Plugin[],
45
+ config: Omit<I18nextToolkitConfig, 'plugins'>,
46
+ logger: Logger
47
+ ): PluginContext {
43
48
  const pluginContextConfig = Object.freeze({
44
49
  ...config,
45
50
  plugins: [...plugins],
@@ -74,14 +79,33 @@ export function createPluginContext (allKeys: Map<string, ExtractedKey>, plugins
74
79
 
75
80
  const isNewGenericFallback = defaultValue === keyInfo.key
76
81
 
82
+ // Merge locations
83
+ if (keyInfo.locations) {
84
+ existingKey.locations = [
85
+ ...(existingKey.locations || []),
86
+ ...keyInfo.locations
87
+ ]
88
+ }
89
+
77
90
  // If existing value is a generic fallback and new value is specific, replace it
78
91
  if (isExistingGenericFallback && !isNewGenericFallback) {
79
- allKeys.set(uniqueKey, { ...keyInfo, ns: storedNs || config.extract?.defaultNS || 'translation', nsIsImplicit, defaultValue })
92
+ allKeys.set(uniqueKey, {
93
+ ...keyInfo,
94
+ ns: storedNs || config.extract?.defaultNS || 'translation',
95
+ nsIsImplicit,
96
+ defaultValue,
97
+ locations: existingKey.locations // Preserve merged locations
98
+ })
80
99
  }
81
100
  // Otherwise keep the existing one
82
101
  } else {
83
102
  // New key, just add it
84
- allKeys.set(uniqueKey, { ...keyInfo, ns: storedNs || config.extract?.defaultNS || 'translation', nsIsImplicit, defaultValue })
103
+ allKeys.set(uniqueKey, {
104
+ ...keyInfo,
105
+ ns: storedNs || config.extract?.defaultNS || 'translation',
106
+ nsIsImplicit,
107
+ defaultValue
108
+ })
85
109
  }
86
110
  },
87
111
  config: pluginContextConfig,
package/src/types.ts CHANGED
@@ -322,6 +322,13 @@ export interface ExtractedKey {
322
322
 
323
323
  /** True when the extractor returned an already-expanded plural form (e.g. "key_one") */
324
324
  isExpandedPlural?: boolean
325
+
326
+ /** Source locations where this key was found (optional, populated by plugins) */
327
+ locations?: Array<{
328
+ file: string
329
+ line?: number
330
+ column?: number
331
+ }>
325
332
  }
326
333
 
327
334
  /**
@@ -33,6 +33,8 @@ export declare class ASTVisitors {
33
33
  private readonly expressionResolver;
34
34
  private readonly callExpressionHandler;
35
35
  private readonly jsxHandler;
36
+ private currentFile;
37
+ private currentCode;
36
38
  /**
37
39
  * Creates a new AST visitor instance.
38
40
  *
@@ -72,5 +74,26 @@ export declare class ASTVisitors {
72
74
  * @private
73
75
  */
74
76
  getVarFromScope(name: string): ScopeInfo | undefined;
77
+ /**
78
+ * Sets the current file path used by the extractor.
79
+ *
80
+ * @param file - The file path (absolute or relative) to set as the current processing context.
81
+ * @remarks
82
+ * Updating the current file allows subsequent AST visitors and extraction logic to
83
+ * associate nodes, messages, and errors with the correct source file.
84
+ */
85
+ setCurrentFile(file: string, code: string): void;
86
+ /**
87
+ * Returns the currently set file path.
88
+ *
89
+ * @returns The current file path as a string, or `undefined` if no file has been set.
90
+ * @remarks
91
+ * Use this to retrieve the file context that was previously set via `setCurrentFile`.
92
+ */
93
+ getCurrentFile(): string;
94
+ /**
95
+ * @returns The full source code string for the file currently under processing.
96
+ */
97
+ getCurrentCode(): string;
75
98
  }
76
99
  //# sourceMappingURL=ast-visitors.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"ast-visitors.d.ts","sourceRoot":"","sources":["../../../src/extractor/core/ast-visitors.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAQ,MAAM,WAAW,CAAA;AAC7C,OAAO,KAAK,EAAE,aAAa,EAAE,oBAAoB,EAAE,MAAM,EAAE,eAAe,EAAE,SAAS,EAAE,MAAM,aAAa,CAAA;AAE1G,OAAO,EAAE,kBAAkB,EAAE,MAAM,gCAAgC,CAAA;AAInE;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,qBAAa,WAAW;IACtB,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAe;IAC7C,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAuC;IAC9D,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAQ;IAC/B,OAAO,CAAC,KAAK,CAAiB;IAE9B,IAAW,UAAU,gBAEpB;IAED,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAc;IAC3C,OAAO,CAAC,QAAQ,CAAC,kBAAkB,CAAoB;IACvD,OAAO,CAAC,QAAQ,CAAC,qBAAqB,CAAuB;IAC7D,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAY;IAEvC;;;;;;OAMG;gBAED,MAAM,EAAE,IAAI,CAAC,oBAAoB,EAAE,SAAS,CAAC,EAC7C,aAAa,EAAE,aAAa,EAC5B,MAAM,EAAE,MAAM,EACd,KAAK,CAAC,EAAE,eAAe,EACvB,kBAAkB,CAAC,EAAE,kBAAkB;IAmBzC;;;;;OAKG;IACI,KAAK,CAAE,IAAI,EAAE,MAAM,GAAG,IAAI;IAUjC;;;;;;;;;;;;OAYG;IACH,OAAO,CAAC,IAAI;IAiGZ;;;;;;;;OAQG;IACI,eAAe,CAAE,IAAI,EAAE,MAAM,GAAG,SAAS,GAAG,SAAS;CAG7D"}
1
+ {"version":3,"file":"ast-visitors.d.ts","sourceRoot":"","sources":["../../../src/extractor/core/ast-visitors.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAQ,MAAM,WAAW,CAAA;AAC7C,OAAO,KAAK,EAAE,aAAa,EAAE,oBAAoB,EAAE,MAAM,EAAE,eAAe,EAAE,SAAS,EAAE,MAAM,aAAa,CAAA;AAE1G,OAAO,EAAE,kBAAkB,EAAE,MAAM,gCAAgC,CAAA;AAInE;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,qBAAa,WAAW;IACtB,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAe;IAC7C,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAuC;IAC9D,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAQ;IAC/B,OAAO,CAAC,KAAK,CAAiB;IAE9B,IAAW,UAAU,gBAEpB;IAED,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAc;IAC3C,OAAO,CAAC,QAAQ,CAAC,kBAAkB,CAAoB;IACvD,OAAO,CAAC,QAAQ,CAAC,qBAAqB,CAAuB;IAC7D,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAY;IACvC,OAAO,CAAC,WAAW,CAAa;IAChC,OAAO,CAAC,WAAW,CAAa;IAEhC;;;;;;OAMG;gBAED,MAAM,EAAE,IAAI,CAAC,oBAAoB,EAAE,SAAS,CAAC,EAC7C,aAAa,EAAE,aAAa,EAC5B,MAAM,EAAE,MAAM,EACd,KAAK,CAAC,EAAE,eAAe,EACvB,kBAAkB,CAAC,EAAE,kBAAkB;IAgCzC;;;;;OAKG;IACI,KAAK,CAAE,IAAI,EAAE,MAAM,GAAG,IAAI;IAUjC;;;;;;;;;;;;OAYG;IACH,OAAO,CAAC,IAAI;IAiGZ;;;;;;;;OAQG;IACI,eAAe,CAAE,IAAI,EAAE,MAAM,GAAG,SAAS,GAAG,SAAS;IAI5D;;;;;;;OAOG;IACI,cAAc,CAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,IAAI;IAKxD;;;;;;OAMG;IACI,cAAc,IAAK,MAAM;IAIhC;;OAEG;IACI,cAAc,IAAK,MAAM;CAGjC"}
@@ -1 +1 @@
1
- {"version":3,"file":"extractor.d.ts","sourceRoot":"","sources":["../../../src/extractor/core/extractor.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,MAAM,EAAE,oBAAoB,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM,aAAa,CAAA;AAKtF,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAA;AAK5C;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AACH,wBAAsB,YAAY,CAChC,MAAM,EAAE,oBAAoB,EAC5B,EACE,WAAmB,EACnB,QAAgB,EAChB,uBAA+B,EAChC,GAAE;IACD,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,uBAAuB,CAAC,EAAE,OAAO,CAAC;CAC9B,EACN,MAAM,GAAE,MAA4B,GACnC,OAAO,CAAC,OAAO,CAAC,CAyDlB;AAED;;;;;;;;;;;;;;;;;;;GAmBG;AACH,wBAAsB,WAAW,CAC/B,IAAI,EAAE,MAAM,EACZ,OAAO,EAAE,MAAM,EAAE,EACjB,WAAW,EAAE,WAAW,EACxB,aAAa,EAAE,aAAa,EAC5B,MAAM,EAAE,IAAI,CAAC,oBAAoB,EAAE,SAAS,CAAC,EAC7C,MAAM,GAAE,MAA4B,GACnC,OAAO,CAAC,IAAI,CAAC,CAiEf;AAED;;;;;;;;;;;;;;GAcG;AACH,wBAAsB,OAAO,CAAE,MAAM,EAAE,oBAAoB,EAAE,EAAE,uBAA+B,EAAE,GAAE;IAAE,uBAAuB,CAAC,EAAE,OAAO,CAAA;CAAO,sDAO3I"}
1
+ {"version":3,"file":"extractor.d.ts","sourceRoot":"","sources":["../../../src/extractor/core/extractor.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,MAAM,EAAE,oBAAoB,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM,aAAa,CAAA;AAKtF,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAA;AAK5C;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AACH,wBAAsB,YAAY,CAChC,MAAM,EAAE,oBAAoB,EAC5B,EACE,WAAmB,EACnB,QAAgB,EAChB,uBAA+B,EAChC,GAAE;IACD,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,uBAAuB,CAAC,EAAE,OAAO,CAAC;CAC9B,EACN,MAAM,GAAE,MAA4B,GACnC,OAAO,CAAC,OAAO,CAAC,CAyDlB;AAED;;;;;;;;;;;;;;;;;;;GAmBG;AACH,wBAAsB,WAAW,CAC/B,IAAI,EAAE,MAAM,EACZ,OAAO,EAAE,MAAM,EAAE,EACjB,WAAW,EAAE,WAAW,EACxB,aAAa,EAAE,aAAa,EAC5B,MAAM,EAAE,IAAI,CAAC,oBAAoB,EAAE,SAAS,CAAC,EAC7C,MAAM,GAAE,MAA4B,GACnC,OAAO,CAAC,IAAI,CAAC,CAoEf;AAED;;;;;;;;;;;;;;GAcG;AACH,wBAAsB,OAAO,CAAE,MAAM,EAAE,oBAAoB,EAAE,EAAE,uBAA+B,EAAE,GAAE;IAAE,uBAAuB,CAAC,EAAE,OAAO,CAAA;CAAO,sDAO3I"}
@@ -1 +1 @@
1
- {"version":3,"file":"translation-manager.d.ts","sourceRoot":"","sources":["../../../src/extractor/core/translation-manager.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,YAAY,EAAE,oBAAoB,EAAE,MAAM,aAAa,CAAA;AA+enF;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AACH,wBAAsB,eAAe,CACnC,IAAI,EAAE,GAAG,CAAC,MAAM,EAAE,YAAY,CAAC,EAC/B,UAAU,EAAE,GAAG,CAAC,MAAM,CAAC,EACvB,MAAM,EAAE,oBAAoB,EAC5B,EAAE,uBAA+B,EAAE,GAAE;IAAE,uBAAuB,CAAC,EAAE,OAAO,CAAA;CAAO,GAC9E,OAAO,CAAC,iBAAiB,EAAE,CAAC,CAgH9B"}
1
+ {"version":3,"file":"translation-manager.d.ts","sourceRoot":"","sources":["../../../src/extractor/core/translation-manager.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,YAAY,EAAE,oBAAoB,EAAE,MAAM,aAAa,CAAA;AAmfnF;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AACH,wBAAsB,eAAe,CACnC,IAAI,EAAE,GAAG,CAAC,MAAM,EAAE,YAAY,CAAC,EAC/B,UAAU,EAAE,GAAG,CAAC,MAAM,CAAC,EACvB,MAAM,EAAE,oBAAoB,EAC5B,EAAE,uBAA+B,EAAE,GAAE;IAAE,uBAAuB,CAAC,EAAE,OAAO,CAAA;CAAO,GAC9E,OAAO,CAAC,iBAAiB,EAAE,CAAC,CAgH9B"}
@@ -7,7 +7,14 @@ export declare class CallExpressionHandler {
7
7
  private logger;
8
8
  private expressionResolver;
9
9
  objectKeys: Set<string>;
10
- constructor(config: Omit<I18nextToolkitConfig, 'plugins'>, pluginContext: PluginContext, logger: Logger, expressionResolver: ExpressionResolver);
10
+ private getCurrentFile;
11
+ private getCurrentCode;
12
+ constructor(config: Omit<I18nextToolkitConfig, 'plugins'>, pluginContext: PluginContext, logger: Logger, expressionResolver: ExpressionResolver, getCurrentFile: () => string, getCurrentCode: () => string);
13
+ /**
14
+ * Helper method to calculate line and column from byte offset.
15
+ * SWC provides byte offsets in span.start, not line/column directly.
16
+ */
17
+ private getLocationFromSpan;
11
18
  /**
12
19
  * Processes function call expressions to extract translation keys.
13
20
  *
@@ -1 +1 @@
1
- {"version":3,"file":"call-expression-handler.d.ts","sourceRoot":"","sources":["../../../src/extractor/parsers/call-expression-handler.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAA6C,MAAM,WAAW,CAAA;AAC1F,OAAO,KAAK,EAAE,aAAa,EAAE,oBAAoB,EAAE,MAAM,EAAgB,SAAS,EAAE,MAAM,aAAa,CAAA;AACvG,OAAO,EAAE,kBAAkB,EAAE,MAAM,uBAAuB,CAAA;AAG1D,qBAAa,qBAAqB;IAChC,OAAO,CAAC,aAAa,CAAe;IACpC,OAAO,CAAC,MAAM,CAAuC;IACrD,OAAO,CAAC,MAAM,CAAQ;IACtB,OAAO,CAAC,kBAAkB,CAAoB;IACvC,UAAU,cAAoB;gBAGnC,MAAM,EAAE,IAAI,CAAC,oBAAoB,EAAE,SAAS,CAAC,EAC7C,aAAa,EAAE,aAAa,EAC5B,MAAM,EAAE,MAAM,EACd,kBAAkB,EAAE,kBAAkB;IAQxC;;;;;;;;;;;;;OAaG;IACH,oBAAoB,CAAE,IAAI,EAAE,cAAc,EAAE,YAAY,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,SAAS,GAAG,SAAS,GAAG,IAAI;IA2UxG;;;;;;OAMG;IACH,OAAO,CAAC,4BAA4B;IA8BpC;;;;;;;;;;;;;OAaG;IACH,OAAO,CAAC,sBAAsB;IA2C9B;;;;;;;;;;;OAWG;IACH,OAAO,CAAC,gBAAgB;IA2LxB;;;;;;;;;OASG;IACH,OAAO,CAAC,eAAe;CA2BxB"}
1
+ {"version":3,"file":"call-expression-handler.d.ts","sourceRoot":"","sources":["../../../src/extractor/parsers/call-expression-handler.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAA6C,MAAM,WAAW,CAAA;AAC1F,OAAO,KAAK,EAAE,aAAa,EAAE,oBAAoB,EAAE,MAAM,EAAgB,SAAS,EAAE,MAAM,aAAa,CAAA;AACvG,OAAO,EAAE,kBAAkB,EAAE,MAAM,uBAAuB,CAAA;AAG1D,qBAAa,qBAAqB;IAChC,OAAO,CAAC,aAAa,CAAe;IACpC,OAAO,CAAC,MAAM,CAAuC;IACrD,OAAO,CAAC,MAAM,CAAQ;IACtB,OAAO,CAAC,kBAAkB,CAAoB;IACvC,UAAU,cAAoB;IACrC,OAAO,CAAC,cAAc,CAAc;IACpC,OAAO,CAAC,cAAc,CAAc;gBAGlC,MAAM,EAAE,IAAI,CAAC,oBAAoB,EAAE,SAAS,CAAC,EAC7C,aAAa,EAAE,aAAa,EAC5B,MAAM,EAAE,MAAM,EACd,kBAAkB,EAAE,kBAAkB,EACtC,cAAc,EAAE,MAAM,MAAM,EAC5B,cAAc,EAAE,MAAM,MAAM;IAU9B;;;OAGG;IACH,OAAO,CAAC,mBAAmB;IAgB3B;;;;;;;;;;;;;OAaG;IACH,oBAAoB,CAAE,IAAI,EAAE,cAAc,EAAE,YAAY,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,SAAS,GAAG,SAAS,GAAG,IAAI;IA4VxG;;;;;;OAMG;IACH,OAAO,CAAC,4BAA4B;IA8BpC;;;;;;;;;;;;;OAaG;IACH,OAAO,CAAC,sBAAsB;IA2C9B;;;;;;;;;;;OAWG;IACH,OAAO,CAAC,gBAAgB;IA2LxB;;;;;;;;;OASG;IACH,OAAO,CAAC,eAAe;CA2BxB"}
@@ -5,7 +5,13 @@ export declare class JSXHandler {
5
5
  private config;
6
6
  private pluginContext;
7
7
  private expressionResolver;
8
- constructor(config: Omit<I18nextToolkitConfig, 'plugins'>, pluginContext: PluginContext, expressionResolver: ExpressionResolver);
8
+ private getCurrentFile;
9
+ private getCurrentCode;
10
+ constructor(config: Omit<I18nextToolkitConfig, 'plugins'>, pluginContext: PluginContext, expressionResolver: ExpressionResolver, getCurrentFile: () => string, getCurrentCode: () => string);
11
+ /**
12
+ * Helper method to calculate line and column from byte offset.
13
+ */
14
+ private getLocationFromSpan;
9
15
  /**
10
16
  * Processes JSX elements to extract translation keys from Trans components.
11
17
  *
@@ -27,6 +33,8 @@ export declare class JSXHandler {
27
33
  * @param ns - Namespace for the keys
28
34
  * @param isOrdinal - Whether to generate ordinal plural forms
29
35
  * @param optionsNode - Optional tOptions object expression for plural-specific defaults
36
+ * @param explicitDefaultFromSource - Whether the default was explicitly provided in source
37
+ * @param locations - Source location information for this key
30
38
  */
31
39
  private generatePluralKeysForTrans;
32
40
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"jsx-handler.d.ts","sourceRoot":"","sources":["../../../src/extractor/parsers/jsx-handler.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAoB,MAAM,WAAW,CAAA;AAC7D,OAAO,KAAK,EAAE,aAAa,EAAE,oBAAoB,EAAgB,MAAM,aAAa,CAAA;AACpF,OAAO,EAAE,kBAAkB,EAAE,MAAM,uBAAuB,CAAA;AAI1D,qBAAa,UAAU;IACrB,OAAO,CAAC,MAAM,CAAuC;IACrD,OAAO,CAAC,aAAa,CAAe;IACpC,OAAO,CAAC,kBAAkB,CAAoB;gBAG5C,MAAM,EAAE,IAAI,CAAC,oBAAoB,EAAE,SAAS,CAAC,EAC7C,aAAa,EAAE,aAAa,EAC5B,kBAAkB,EAAE,kBAAkB;IAOxC;;;;;;;;OAQG;IACH,gBAAgB,CAAE,IAAI,EAAE,UAAU,EAAE,YAAY,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK;QAAE,SAAS,CAAC,EAAE,MAAM,CAAC;QAAC,SAAS,CAAC,EAAE,MAAM,CAAA;KAAE,GAAG,SAAS,GAAG,IAAI;IA0OjI;;;;;;;;OAQG;IACH,OAAO,CAAC,0BAA0B;IAkFlC;;;;;;;;;OASG;IACH,OAAO,CAAC,cAAc;CAevB"}
1
+ {"version":3,"file":"jsx-handler.d.ts","sourceRoot":"","sources":["../../../src/extractor/parsers/jsx-handler.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAoB,MAAM,WAAW,CAAA;AAC7D,OAAO,KAAK,EAAE,aAAa,EAAE,oBAAoB,EAAgB,MAAM,aAAa,CAAA;AACpF,OAAO,EAAE,kBAAkB,EAAE,MAAM,uBAAuB,CAAA;AAI1D,qBAAa,UAAU;IACrB,OAAO,CAAC,MAAM,CAAuC;IACrD,OAAO,CAAC,aAAa,CAAe;IACpC,OAAO,CAAC,kBAAkB,CAAoB;IAC9C,OAAO,CAAC,cAAc,CAAc;IACpC,OAAO,CAAC,cAAc,CAAc;gBAGlC,MAAM,EAAE,IAAI,CAAC,oBAAoB,EAAE,SAAS,CAAC,EAC7C,aAAa,EAAE,aAAa,EAC5B,kBAAkB,EAAE,kBAAkB,EACtC,cAAc,EAAE,MAAM,MAAM,EAC5B,cAAc,EAAE,MAAM,MAAM;IAS9B;;OAEG;IACH,OAAO,CAAC,mBAAmB;IAe3B;;;;;;;;OAQG;IACH,gBAAgB,CAAE,IAAI,EAAE,UAAU,EAAE,YAAY,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK;QAAE,SAAS,CAAC,EAAE,MAAM,CAAC;QAAC,SAAS,CAAC,EAAE,MAAM,CAAA;KAAE,GAAG,SAAS,GAAG,IAAI;IA2QjI;;;;;;;;;;OAUG;IACH,OAAO,CAAC,0BAA0B;IAiGlC;;;;;;;;;OASG;IACH,OAAO,CAAC,cAAc;CAevB"}
@@ -1 +1 @@
1
- {"version":3,"file":"plugin-manager.d.ts","sourceRoot":"","sources":["../../src/extractor/plugin-manager.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,aAAa,EAAE,oBAAoB,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,UAAU,CAAA;AAEjG;;;;;;;;;;;;GAYG;AACH,wBAAsB,iBAAiB,CAAE,OAAO,EAAE,GAAG,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAItE;AAED;;;;;;;;;;;;;;;;;;;GAmBG;AACH,wBAAgB,mBAAmB,CAAE,OAAO,EAAE,GAAG,CAAC,MAAM,EAAE,YAAY,CAAC,EAAE,OAAO,EAAE,MAAM,EAAE,EAAE,MAAM,EAAE,IAAI,CAAC,oBAAoB,EAAE,SAAS,CAAC,EAAE,MAAM,EAAE,MAAM,GAAG,aAAa,CAkDxK"}
1
+ {"version":3,"file":"plugin-manager.d.ts","sourceRoot":"","sources":["../../src/extractor/plugin-manager.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,aAAa,EAAE,oBAAoB,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,UAAU,CAAA;AAEjG;;;;;;;;;;;;GAYG;AACH,wBAAsB,iBAAiB,CAAE,OAAO,EAAE,GAAG,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAItE;AAED;;;;;;;;;;;;;;;;;;;GAmBG;AACH,wBAAgB,mBAAmB,CACjC,OAAO,EAAE,GAAG,CAAC,MAAM,EAAE,YAAY,CAAC,EAClC,OAAO,EAAE,MAAM,EAAE,EACjB,MAAM,EAAE,IAAI,CAAC,oBAAoB,EAAE,SAAS,CAAC,EAC7C,MAAM,EAAE,MAAM,GACb,aAAa,CAqEf"}
package/types/types.d.ts CHANGED
@@ -264,6 +264,12 @@ export interface ExtractedKey {
264
264
  explicitDefault?: boolean;
265
265
  /** True when the extractor returned an already-expanded plural form (e.g. "key_one") */
266
266
  isExpandedPlural?: boolean;
267
+ /** Source locations where this key was found (optional, populated by plugins) */
268
+ locations?: Array<{
269
+ file: string;
270
+ line?: number;
271
+ column?: number;
272
+ }>;
267
273
  }
268
274
  /**
269
275
  * Result of processing translation files for a specific locale and namespace.
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}