@breadstone-tools/localizator-core 0.0.12-beta.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 (238) hide show
  1. package/Detectors/Abstracts/BaseDetector.d.ts +81 -0
  2. package/Detectors/Abstracts/BaseDetector.d.ts.map +1 -0
  3. package/Detectors/Abstracts/BaseDetector.js +137 -0
  4. package/Detectors/Abstracts/BaseDetector.js.map +1 -0
  5. package/Detectors/AngularHTMLDetector.d.ts +94 -0
  6. package/Detectors/AngularHTMLDetector.d.ts.map +1 -0
  7. package/Detectors/AngularHTMLDetector.js +123 -0
  8. package/Detectors/AngularHTMLDetector.js.map +1 -0
  9. package/Detectors/Interfaces/IDetector.d.ts +73 -0
  10. package/Detectors/Interfaces/IDetector.d.ts.map +1 -0
  11. package/Detectors/Interfaces/IDetector.js +12 -0
  12. package/Detectors/Interfaces/IDetector.js.map +1 -0
  13. package/Detectors/JSXDetector.d.ts +69 -0
  14. package/Detectors/JSXDetector.d.ts.map +1 -0
  15. package/Detectors/JSXDetector.js +101 -0
  16. package/Detectors/JSXDetector.js.map +1 -0
  17. package/Detectors/JavaScriptDetector.d.ts +74 -0
  18. package/Detectors/JavaScriptDetector.d.ts.map +1 -0
  19. package/Detectors/JavaScriptDetector.js +106 -0
  20. package/Detectors/JavaScriptDetector.js.map +1 -0
  21. package/Detectors/TSXDetector.d.ts +76 -0
  22. package/Detectors/TSXDetector.d.ts.map +1 -0
  23. package/Detectors/TSXDetector.js +101 -0
  24. package/Detectors/TSXDetector.js.map +1 -0
  25. package/Detectors/TypeScriptDetector.d.ts +76 -0
  26. package/Detectors/TypeScriptDetector.d.ts.map +1 -0
  27. package/Detectors/TypeScriptDetector.js +102 -0
  28. package/Detectors/TypeScriptDetector.js.map +1 -0
  29. package/Detectors/Utils.d.ts +41 -0
  30. package/Detectors/Utils.d.ts.map +1 -0
  31. package/Detectors/Utils.js +62 -0
  32. package/Detectors/Utils.js.map +1 -0
  33. package/Detectors/VueDetector.d.ts +60 -0
  34. package/Detectors/VueDetector.d.ts.map +1 -0
  35. package/Detectors/VueDetector.js +108 -0
  36. package/Detectors/VueDetector.js.map +1 -0
  37. package/Formatters/Formatters.d.ts +15 -0
  38. package/Formatters/Formatters.d.ts.map +1 -0
  39. package/Formatters/Formatters.js +34 -0
  40. package/Formatters/Formatters.js.map +1 -0
  41. package/Formatters/Interfaces/IFormatter.d.ts +24 -0
  42. package/Formatters/Interfaces/IFormatter.d.ts.map +1 -0
  43. package/Formatters/Interfaces/IFormatter.js +3 -0
  44. package/Formatters/Interfaces/IFormatter.js.map +1 -0
  45. package/Formatters/JsonFormatter.d.ts +26 -0
  46. package/Formatters/JsonFormatter.d.ts.map +1 -0
  47. package/Formatters/JsonFormatter.js +42 -0
  48. package/Formatters/JsonFormatter.js.map +1 -0
  49. package/Formatters/ResxFormatter.d.ts +26 -0
  50. package/Formatters/ResxFormatter.d.ts.map +1 -0
  51. package/Formatters/ResxFormatter.js +53 -0
  52. package/Formatters/ResxFormatter.js.map +1 -0
  53. package/Index.d.ts +57 -0
  54. package/Index.d.ts.map +1 -0
  55. package/Index.js +86 -0
  56. package/Index.js.map +1 -0
  57. package/LICENSE +21 -0
  58. package/Presets/AngularPreset.d.ts +38 -0
  59. package/Presets/AngularPreset.d.ts.map +1 -0
  60. package/Presets/AngularPreset.js +59 -0
  61. package/Presets/AngularPreset.js.map +1 -0
  62. package/Presets/Interfaces/IFrameworkPreset.d.ts +28 -0
  63. package/Presets/Interfaces/IFrameworkPreset.d.ts.map +1 -0
  64. package/Presets/Interfaces/IFrameworkPreset.js +4 -0
  65. package/Presets/Interfaces/IFrameworkPreset.js.map +1 -0
  66. package/Presets/LitPreset.d.ts +38 -0
  67. package/Presets/LitPreset.d.ts.map +1 -0
  68. package/Presets/LitPreset.js +57 -0
  69. package/Presets/LitPreset.js.map +1 -0
  70. package/Presets/Presets.d.ts +25 -0
  71. package/Presets/Presets.d.ts.map +1 -0
  72. package/Presets/Presets.js +50 -0
  73. package/Presets/Presets.js.map +1 -0
  74. package/Presets/ReactPreset.d.ts +38 -0
  75. package/Presets/ReactPreset.d.ts.map +1 -0
  76. package/Presets/ReactPreset.js +61 -0
  77. package/Presets/ReactPreset.js.map +1 -0
  78. package/Presets/StencilPreset.d.ts +38 -0
  79. package/Presets/StencilPreset.d.ts.map +1 -0
  80. package/Presets/StencilPreset.js +59 -0
  81. package/Presets/StencilPreset.js.map +1 -0
  82. package/Presets/VuePreset.d.ts +38 -0
  83. package/Presets/VuePreset.d.ts.map +1 -0
  84. package/Presets/VuePreset.js +60 -0
  85. package/Presets/VuePreset.js.map +1 -0
  86. package/Resources/Analyzers/ResourceAnalyzer.d.ts +58 -0
  87. package/Resources/Analyzers/ResourceAnalyzer.d.ts.map +1 -0
  88. package/Resources/Analyzers/ResourceAnalyzer.js +119 -0
  89. package/Resources/Analyzers/ResourceAnalyzer.js.map +1 -0
  90. package/Resources/Analyzers/Tasks/DuplicateKeysTask.d.ts +31 -0
  91. package/Resources/Analyzers/Tasks/DuplicateKeysTask.d.ts.map +1 -0
  92. package/Resources/Analyzers/Tasks/DuplicateKeysTask.js +40 -0
  93. package/Resources/Analyzers/Tasks/DuplicateKeysTask.js.map +1 -0
  94. package/Resources/Analyzers/Tasks/EmptyValuesTask.d.ts +31 -0
  95. package/Resources/Analyzers/Tasks/EmptyValuesTask.d.ts.map +1 -0
  96. package/Resources/Analyzers/Tasks/EmptyValuesTask.js +41 -0
  97. package/Resources/Analyzers/Tasks/EmptyValuesTask.js.map +1 -0
  98. package/Resources/Analyzers/Tasks/Interfaces/IAnalyzerTask.d.ts +36 -0
  99. package/Resources/Analyzers/Tasks/Interfaces/IAnalyzerTask.d.ts.map +1 -0
  100. package/Resources/Analyzers/Tasks/Interfaces/IAnalyzerTask.js +4 -0
  101. package/Resources/Analyzers/Tasks/Interfaces/IAnalyzerTask.js.map +1 -0
  102. package/Resources/Analyzers/Tasks/KeyConsistencyTask.d.ts +35 -0
  103. package/Resources/Analyzers/Tasks/KeyConsistencyTask.d.ts.map +1 -0
  104. package/Resources/Analyzers/Tasks/KeyConsistencyTask.js +67 -0
  105. package/Resources/Analyzers/Tasks/KeyConsistencyTask.js.map +1 -0
  106. package/Resources/Analyzers/Tasks/MissingTranslationsTask.d.ts +31 -0
  107. package/Resources/Analyzers/Tasks/MissingTranslationsTask.d.ts.map +1 -0
  108. package/Resources/Analyzers/Tasks/MissingTranslationsTask.js +44 -0
  109. package/Resources/Analyzers/Tasks/MissingTranslationsTask.js.map +1 -0
  110. package/Resources/Analyzers/Tasks/MultipleKeyUsageTask.d.ts +31 -0
  111. package/Resources/Analyzers/Tasks/MultipleKeyUsageTask.d.ts.map +1 -0
  112. package/Resources/Analyzers/Tasks/MultipleKeyUsageTask.js +48 -0
  113. package/Resources/Analyzers/Tasks/MultipleKeyUsageTask.js.map +1 -0
  114. package/Resources/Analyzers/Tasks/UnusedKeysTask.d.ts +31 -0
  115. package/Resources/Analyzers/Tasks/UnusedKeysTask.d.ts.map +1 -0
  116. package/Resources/Analyzers/Tasks/UnusedKeysTask.js +49 -0
  117. package/Resources/Analyzers/Tasks/UnusedKeysTask.js.map +1 -0
  118. package/Resources/Models/Interfaces/IJsonResourceInfo.d.ts +12 -0
  119. package/Resources/Models/Interfaces/IJsonResourceInfo.d.ts.map +1 -0
  120. package/Resources/Models/Interfaces/IJsonResourceInfo.js +4 -0
  121. package/Resources/Models/Interfaces/IJsonResourceInfo.js.map +1 -0
  122. package/Resources/Models/Interfaces/IResourceInfo.d.ts +71 -0
  123. package/Resources/Models/Interfaces/IResourceInfo.d.ts.map +1 -0
  124. package/Resources/Models/Interfaces/IResourceInfo.js +4 -0
  125. package/Resources/Models/Interfaces/IResourceInfo.js.map +1 -0
  126. package/Resources/Models/Interfaces/IResourceModel.d.ts +41 -0
  127. package/Resources/Models/Interfaces/IResourceModel.d.ts.map +1 -0
  128. package/Resources/Models/Interfaces/IResourceModel.js +25 -0
  129. package/Resources/Models/Interfaces/IResourceModel.js.map +1 -0
  130. package/Resources/Models/Interfaces/IResxResourceInfo.d.ts +12 -0
  131. package/Resources/Models/Interfaces/IResxResourceInfo.d.ts.map +1 -0
  132. package/Resources/Models/Interfaces/IResxResourceInfo.js +4 -0
  133. package/Resources/Models/Interfaces/IResxResourceInfo.js.map +1 -0
  134. package/Resources/Models/Interfaces/ITypeScriptResourceInfo.d.ts +11 -0
  135. package/Resources/Models/Interfaces/ITypeScriptResourceInfo.d.ts.map +1 -0
  136. package/Resources/Models/Interfaces/ITypeScriptResourceInfo.js +4 -0
  137. package/Resources/Models/Interfaces/ITypeScriptResourceInfo.js.map +1 -0
  138. package/Resources/Models/Interfaces/ResourceType.d.ts +29 -0
  139. package/Resources/Models/Interfaces/ResourceType.d.ts.map +1 -0
  140. package/Resources/Models/Interfaces/ResourceType.js +45 -0
  141. package/Resources/Models/Interfaces/ResourceType.js.map +1 -0
  142. package/Resources/Models/JsonResourceInfo.d.ts +111 -0
  143. package/Resources/Models/JsonResourceInfo.d.ts.map +1 -0
  144. package/Resources/Models/JsonResourceInfo.js +184 -0
  145. package/Resources/Models/JsonResourceInfo.js.map +1 -0
  146. package/Resources/Models/ResxResourceInfo.d.ts +110 -0
  147. package/Resources/Models/ResxResourceInfo.d.ts.map +1 -0
  148. package/Resources/Models/ResxResourceInfo.js +171 -0
  149. package/Resources/Models/ResxResourceInfo.js.map +1 -0
  150. package/Resources/Models/TypeScriptResourceInfo.d.ts +109 -0
  151. package/Resources/Models/TypeScriptResourceInfo.d.ts.map +1 -0
  152. package/Resources/Models/TypeScriptResourceInfo.js +244 -0
  153. package/Resources/Models/TypeScriptResourceInfo.js.map +1 -0
  154. package/Resources/ResourceFactory.d.ts +39 -0
  155. package/Resources/ResourceFactory.d.ts.map +1 -0
  156. package/Resources/ResourceFactory.js +102 -0
  157. package/Resources/ResourceFactory.js.map +1 -0
  158. package/Resources/ResourceMode.d.ts +14 -0
  159. package/Resources/ResourceMode.d.ts.map +1 -0
  160. package/Resources/ResourceMode.js +18 -0
  161. package/Resources/ResourceMode.js.map +1 -0
  162. package/Resources/ResourceProcessor.d.ts +66 -0
  163. package/Resources/ResourceProcessor.d.ts.map +1 -0
  164. package/Resources/ResourceProcessor.js +90 -0
  165. package/Resources/ResourceProcessor.js.map +1 -0
  166. package/Resources/Scanners/Adapter/Interfaces/IScannerAdapter.d.ts +17 -0
  167. package/Resources/Scanners/Adapter/Interfaces/IScannerAdapter.d.ts.map +1 -0
  168. package/Resources/Scanners/Adapter/Interfaces/IScannerAdapter.js +4 -0
  169. package/Resources/Scanners/Adapter/Interfaces/IScannerAdapter.js.map +1 -0
  170. package/Resources/Scanners/Adapter/JsonScannerAdapter.d.ts +28 -0
  171. package/Resources/Scanners/Adapter/JsonScannerAdapter.d.ts.map +1 -0
  172. package/Resources/Scanners/Adapter/JsonScannerAdapter.js +62 -0
  173. package/Resources/Scanners/Adapter/JsonScannerAdapter.js.map +1 -0
  174. package/Resources/Scanners/Adapter/ResxScannerAdapter.d.ts +28 -0
  175. package/Resources/Scanners/Adapter/ResxScannerAdapter.d.ts.map +1 -0
  176. package/Resources/Scanners/Adapter/ResxScannerAdapter.js +62 -0
  177. package/Resources/Scanners/Adapter/ResxScannerAdapter.js.map +1 -0
  178. package/Resources/Scanners/ResourceScanner.d.ts +32 -0
  179. package/Resources/Scanners/ResourceScanner.d.ts.map +1 -0
  180. package/Resources/Scanners/ResourceScanner.js +59 -0
  181. package/Resources/Scanners/ResourceScanner.js.map +1 -0
  182. package/Resources/Sorting/ResourceSorter.d.ts +46 -0
  183. package/Resources/Sorting/ResourceSorter.d.ts.map +1 -0
  184. package/Resources/Sorting/ResourceSorter.js +82 -0
  185. package/Resources/Sorting/ResourceSorter.js.map +1 -0
  186. package/Resources/Transformers/Adapters/Abstracts/BaseResourceTransformerAdapter.d.ts +20 -0
  187. package/Resources/Transformers/Adapters/Abstracts/BaseResourceTransformerAdapter.d.ts.map +1 -0
  188. package/Resources/Transformers/Adapters/Abstracts/BaseResourceTransformerAdapter.js +15 -0
  189. package/Resources/Transformers/Adapters/Abstracts/BaseResourceTransformerAdapter.js.map +1 -0
  190. package/Resources/Transformers/Adapters/Interfaces/IResourceTransformerAdapter.d.ts +11 -0
  191. package/Resources/Transformers/Adapters/Interfaces/IResourceTransformerAdapter.d.ts.map +1 -0
  192. package/Resources/Transformers/Adapters/Interfaces/IResourceTransformerAdapter.js +4 -0
  193. package/Resources/Transformers/Adapters/Interfaces/IResourceTransformerAdapter.js.map +1 -0
  194. package/Resources/Transformers/Adapters/JsonResourceTransformerAdapter.d.ts +26 -0
  195. package/Resources/Transformers/Adapters/JsonResourceTransformerAdapter.d.ts.map +1 -0
  196. package/Resources/Transformers/Adapters/JsonResourceTransformerAdapter.js +64 -0
  197. package/Resources/Transformers/Adapters/JsonResourceTransformerAdapter.js.map +1 -0
  198. package/Resources/Transformers/Adapters/ResxResourceTransformerAdapter.d.ts +19 -0
  199. package/Resources/Transformers/Adapters/ResxResourceTransformerAdapter.d.ts.map +1 -0
  200. package/Resources/Transformers/Adapters/ResxResourceTransformerAdapter.js +30 -0
  201. package/Resources/Transformers/Adapters/ResxResourceTransformerAdapter.js.map +1 -0
  202. package/Resources/Transformers/Interfaces/IResourceTransformerResult.d.ts +11 -0
  203. package/Resources/Transformers/Interfaces/IResourceTransformerResult.d.ts.map +1 -0
  204. package/Resources/Transformers/Interfaces/IResourceTransformerResult.js +4 -0
  205. package/Resources/Transformers/Interfaces/IResourceTransformerResult.js.map +1 -0
  206. package/Resources/Transformers/ResourceTransformer.d.ts +74 -0
  207. package/Resources/Transformers/ResourceTransformer.d.ts.map +1 -0
  208. package/Resources/Transformers/ResourceTransformer.js +112 -0
  209. package/Resources/Transformers/ResourceTransformer.js.map +1 -0
  210. package/Resources/Transformers/Serializers/Interfaces/IResourceSerializer.d.ts +9 -0
  211. package/Resources/Transformers/Serializers/Interfaces/IResourceSerializer.d.ts.map +1 -0
  212. package/Resources/Transformers/Serializers/Interfaces/IResourceSerializer.js +4 -0
  213. package/Resources/Transformers/Serializers/Interfaces/IResourceSerializer.js.map +1 -0
  214. package/Resources/Transformers/Serializers/JsonResourceSerializer.d.ts +20 -0
  215. package/Resources/Transformers/Serializers/JsonResourceSerializer.d.ts.map +1 -0
  216. package/Resources/Transformers/Serializers/JsonResourceSerializer.js +47 -0
  217. package/Resources/Transformers/Serializers/JsonResourceSerializer.js.map +1 -0
  218. package/Resources/Transformers/Serializers/ResxResourceSerializer.d.ts +20 -0
  219. package/Resources/Transformers/Serializers/ResxResourceSerializer.d.ts.map +1 -0
  220. package/Resources/Transformers/Serializers/ResxResourceSerializer.js +36 -0
  221. package/Resources/Transformers/Serializers/ResxResourceSerializer.js.map +1 -0
  222. package/Resources/Transformers/Serializers/TypescriptResourceSerializer.d.ts +20 -0
  223. package/Resources/Transformers/Serializers/TypescriptResourceSerializer.d.ts.map +1 -0
  224. package/Resources/Transformers/Serializers/TypescriptResourceSerializer.js +36 -0
  225. package/Resources/Transformers/Serializers/TypescriptResourceSerializer.js.map +1 -0
  226. package/Services/DiffService.d.ts +1 -0
  227. package/Services/DiffService.d.ts.map +1 -0
  228. package/Services/DiffService.js +86 -0
  229. package/Services/DiffService.js.map +1 -0
  230. package/Services/KeyGenerator.d.ts +21 -0
  231. package/Services/KeyGenerator.d.ts.map +1 -0
  232. package/Services/KeyGenerator.js +34 -0
  233. package/Services/KeyGenerator.js.map +1 -0
  234. package/Services/LocalizationProcessor.d.ts +83 -0
  235. package/Services/LocalizationProcessor.d.ts.map +1 -0
  236. package/Services/LocalizationProcessor.js +90 -0
  237. package/Services/LocalizationProcessor.js.map +1 -0
  238. package/package.json +19 -0
@@ -0,0 +1,81 @@
1
+ import { type IDetectOptions, type IDetector, type IDetectorEventMap, type IDetectorResult } from '../Interfaces/IDetector.js';
2
+ import { EventEmitter } from 'events';
3
+ import { type ILogger } from '@breadstone-infrastructure/utilities';
4
+ /**
5
+ * Options for configuring the `BaseDetector`.
6
+ *
7
+ * @public
8
+ */
9
+ export interface IBaseDetectorOptions extends IDetectOptions {
10
+ /**
11
+ * Enable debug logging (default: `false`).
12
+ * @default false
13
+ */
14
+ debug?: boolean;
15
+ }
16
+ export declare const DEFAULT_DETECTOR_OPTIONS: Required<IBaseDetectorOptions>;
17
+ /**
18
+ * Abstract base detector providing common logic for content parsing.
19
+ *
20
+ * @public
21
+ */
22
+ export declare abstract class BaseDetector extends EventEmitter<IDetectorEventMap> implements IDetector {
23
+ private readonly _debug;
24
+ private readonly _resourceKey;
25
+ private readonly _logger;
26
+ /**
27
+ * Constructs a new instance of the `BaseDetector` class.
28
+ *
29
+ * @public
30
+ * @param logger - The logger.
31
+ * @param options - The optional configuration for the detector.
32
+ */
33
+ protected constructor(logger: ILogger, options?: IBaseDetectorOptions);
34
+ /**
35
+ * Indicates whether debug logging is enabled.
36
+ *
37
+ * @public
38
+ */
39
+ get debug(): boolean;
40
+ /**
41
+ * Detects content and extracts translatable strings.
42
+ *
43
+ * @public
44
+ * @param content - The content to detect.
45
+ * @param options - The optional detect options.
46
+ * @returns An array of extracted results.
47
+ */
48
+ detect(content: string, options?: IDetectOptions): Array<IDetectorResult>;
49
+ /**
50
+ * Abstract method for retrieving the regex patterns for string extraction.
51
+ *
52
+ * @protected
53
+ * @abstract
54
+ * @returns An array of RegExps for extracting strings.
55
+ */
56
+ protected abstract getRegexes(): Array<RegExp>;
57
+ /**
58
+ * Pre-processes content before applying regex matching.
59
+ *
60
+ * @protected
61
+ * @param content - The raw content.
62
+ * @returns The processed content.
63
+ */
64
+ protected preProcessContent(content: string): string;
65
+ /**
66
+ * Post-processes results after regex matching.
67
+ *
68
+ * @protected
69
+ * @param results - The raw results from regex matching.
70
+ * @returns The processed results.
71
+ */
72
+ protected postProcessResults(results: Array<IDetectorResult>): Array<IDetectorResult>;
73
+ /**
74
+ * Logs a message if debugging is enabled.
75
+ *
76
+ * @protected
77
+ * @param message - The message to log.
78
+ */
79
+ protected log(message: string): void;
80
+ }
81
+ //# sourceMappingURL=BaseDetector.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"BaseDetector.d.ts","sourceRoot":"","sources":["../../../src/Detectors/Abstracts/BaseDetector.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,KAAK,cAAc,EAAE,KAAK,SAAS,EAAE,KAAK,iBAAiB,EAAE,KAAK,eAAe,EAAS,MAAM,4BAA4B,CAAC;AACtI,OAAO,EAAE,YAAY,EAAE,MAAM,QAAQ,CAAC;AAEtC,OAAO,EAAE,KAAK,OAAO,EAAK,MAAM,sCAAsC,CAAC;AAIvE;;;;GAIG;AACH,MAAM,WAAW,oBAAqB,SAAQ,cAAc;IAIxD;;;OAGG;IACH,KAAK,CAAC,EAAE,OAAO,CAAC;CAInB;AAED,eAAO,MAAM,wBAAwB,EAAE,QAAQ,CAAC,oBAAoB,CAMnE,CAAC;AAEF;;;;GAIG;AACH,8BAAsB,YAAa,SAAQ,YAAY,CAAC,iBAAiB,CAAE,YAAW,SAAS;IAI3F,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAU;IACjC,OAAO,CAAC,QAAQ,CAAC,YAAY,CAG3B;IACF,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAU;IAMlC;;;;;;OAMG;IACH,SAAS,aAAa,MAAM,EAAE,OAAO,EAAE,OAAO,CAAC,EAAE,oBAAoB;IAoBrE;;;;OAIG;IACH,IAAW,KAAK,IAAI,OAAO,CAE1B;IAMD;;;;;;;OAOG;IACI,MAAM,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,cAAc,GAAG,KAAK,CAAC,eAAe,CAAC;IAwChF;;;;;;OAMG;IACH,SAAS,CAAC,QAAQ,CAAC,UAAU,IAAI,KAAK,CAAC,MAAM,CAAC;IAE9C;;;;;;OAMG;IACH,SAAS,CAAC,iBAAiB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM;IAIpD;;;;;;OAMG;IACH,SAAS,CAAC,kBAAkB,CAAC,OAAO,EAAE,KAAK,CAAC,eAAe,CAAC,GAAG,KAAK,CAAC,eAAe,CAAC;IAIrF;;;;;OAKG;IACH,SAAS,CAAC,GAAG,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI;CAQvC"}
@@ -0,0 +1,137 @@
1
+ "use strict";
2
+ // #region Imports
3
+ Object.defineProperty(exports, "__esModule", { value: true });
4
+ exports.BaseDetector = exports.DEFAULT_DETECTOR_OPTIONS = void 0;
5
+ const IDetector_js_1 = require("../Interfaces/IDetector.js");
6
+ const events_1 = require("events");
7
+ const Utils_js_1 = require("../Utils.js");
8
+ const utilities_1 = require("@breadstone-infrastructure/utilities");
9
+ exports.DEFAULT_DETECTOR_OPTIONS = {
10
+ debug: false,
11
+ resourceKey: {
12
+ prefix: '',
13
+ suffix: ''
14
+ }
15
+ };
16
+ /**
17
+ * Abstract base detector providing common logic for content parsing.
18
+ *
19
+ * @public
20
+ */
21
+ class BaseDetector extends events_1.EventEmitter {
22
+ // #region Fields
23
+ _debug;
24
+ _resourceKey;
25
+ _logger;
26
+ // #endregion
27
+ // #region Constructor
28
+ /**
29
+ * Constructs a new instance of the `BaseDetector` class.
30
+ *
31
+ * @public
32
+ * @param logger - The logger.
33
+ * @param options - The optional configuration for the detector.
34
+ */
35
+ constructor(logger, options) {
36
+ super({ captureRejections: true });
37
+ options = {
38
+ ...exports.DEFAULT_DETECTOR_OPTIONS,
39
+ ...options
40
+ };
41
+ this._logger = logger;
42
+ this._debug = options.debug ?? exports.DEFAULT_DETECTOR_OPTIONS.debug;
43
+ this._resourceKey = {
44
+ prefix: options.resourceKey?.prefix ?? exports.DEFAULT_DETECTOR_OPTIONS.resourceKey.prefix ?? '',
45
+ suffix: options.resourceKey?.suffix ?? exports.DEFAULT_DETECTOR_OPTIONS.resourceKey.suffix ?? ''
46
+ };
47
+ }
48
+ // #endregion
49
+ // #region Properties
50
+ /**
51
+ * Indicates whether debug logging is enabled.
52
+ *
53
+ * @public
54
+ */
55
+ get debug() {
56
+ return this._debug;
57
+ }
58
+ // #endregion
59
+ // #region Methods
60
+ /**
61
+ * Detects content and extracts translatable strings.
62
+ *
63
+ * @public
64
+ * @param content - The content to detect.
65
+ * @param options - The optional detect options.
66
+ * @returns An array of extracted results.
67
+ */
68
+ detect(content, options) {
69
+ const prefix = options?.resourceKey?.prefix ?? this._resourceKey.prefix;
70
+ const suffix = options?.resourceKey?.suffix ?? this._resourceKey.suffix;
71
+ try {
72
+ const regexes = this.getRegexes();
73
+ const changes = [];
74
+ const lines = content.split('\n');
75
+ // const preparedContent = this.preProcessContent(content);
76
+ lines.forEach((line, lineNumber) => {
77
+ for (const regex of regexes) {
78
+ let match = null;
79
+ while ((match = regex.exec(line)) !== null) {
80
+ const candidate = match.groups?.value;
81
+ if (candidate) {
82
+ const change = {
83
+ lineNumber: lineNumber + 1,
84
+ columnNumber: match.index,
85
+ match: match.groups ?? IDetector_js_1.Match.EMPTY,
86
+ context: line.trim(),
87
+ isStatic: !(0, Utils_js_1.isResourceKey)(candidate, prefix, suffix)
88
+ };
89
+ changes.push(change);
90
+ this.emit('detected', change);
91
+ }
92
+ }
93
+ }
94
+ });
95
+ this.log(`Found matches: ${JSON.stringify(changes)}`);
96
+ return this.postProcessResults(changes);
97
+ }
98
+ catch (error) {
99
+ this.emit('failed', error);
100
+ this.log(`Error during parsing: ${error.message}`);
101
+ return [];
102
+ }
103
+ }
104
+ /**
105
+ * Pre-processes content before applying regex matching.
106
+ *
107
+ * @protected
108
+ * @param content - The raw content.
109
+ * @returns The processed content.
110
+ */
111
+ preProcessContent(content) {
112
+ return content;
113
+ }
114
+ /**
115
+ * Post-processes results after regex matching.
116
+ *
117
+ * @protected
118
+ * @param results - The raw results from regex matching.
119
+ * @returns The processed results.
120
+ */
121
+ postProcessResults(results) {
122
+ return results;
123
+ }
124
+ /**
125
+ * Logs a message if debugging is enabled.
126
+ *
127
+ * @protected
128
+ * @param message - The message to log.
129
+ */
130
+ log(message) {
131
+ if (this.debug) {
132
+ this._logger.debug((0, utilities_1.t) `[Detector]: ${message}`);
133
+ }
134
+ }
135
+ }
136
+ exports.BaseDetector = BaseDetector;
137
+ //# sourceMappingURL=BaseDetector.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"BaseDetector.js","sourceRoot":"","sources":["../../../src/Detectors/Abstracts/BaseDetector.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,94 @@
1
+ import type { ILogger } from '@breadstone-infrastructure/utilities';
2
+ import { BaseDetector, type IBaseDetectorOptions } from './Abstracts/BaseDetector.js';
3
+ import type { IDetectorResult } from './Interfaces/IDetector.js';
4
+ /**
5
+ * Options for configuring the `AngularHTMLDetector`.
6
+ *
7
+ * @public
8
+ */
9
+ export interface IAngularHTMLDetectorOptions extends IBaseDetectorOptions {
10
+ /**
11
+ * The pipe name used for translation (default: `translate`).
12
+ */
13
+ marker?: string;
14
+ }
15
+ /**
16
+ * Detector for extracting translatable strings from Angular HTML files.
17
+ *
18
+ * This detector supports the following Angular-specific cases:
19
+ *
20
+ * - **Text Interpolation**:
21
+ * Extracts strings inside `{{ ... }}` with the specified pipe.
22
+ * ```html
23
+ * <label>{{ 'This is a sentence' | translate }}</label>
24
+ * ```
25
+ *
26
+ * - **Attribute Binding**:
27
+ * Extracts strings in Angular attribute bindings.
28
+ * ```html
29
+ * <my-component [label]="'This is a label' | translate"></my-component>
30
+ * ```
31
+ *
32
+ * - **Event Binding**:
33
+ * Extracts strings from event bindings.
34
+ * ```html
35
+ * <button (click)="doSomething('This is a key' | translate)">Click Me</button>
36
+ * ```
37
+ *
38
+ * - **Structural Directives**:
39
+ * Extracts strings in Angular structural directives like `*ngIf`.
40
+ * ```html
41
+ * <div *ngIf="'This is a condition' | translate as conditionText">
42
+ * {{ conditionText }}
43
+ * </div>
44
+ * ```
45
+ *
46
+ * - **Content Projection**:
47
+ * Extracts strings inside `<ng-content>` blocks.
48
+ * ```html
49
+ * <ng-content select="[label]">{{ 'Default translation' | translate }}</ng-content>
50
+ * ```
51
+ *
52
+ * - **JSON-like Configurations**:
53
+ * Extracts strings inside JSON-like structures.
54
+ * ```html
55
+ * <div [config]="{ label: 'This is a translatable label' | translate }"></div>
56
+ * ```
57
+ *
58
+ * @public
59
+ */
60
+ export declare class AngularHTMLDetector extends BaseDetector {
61
+ private readonly _marker;
62
+ /**
63
+ * Constructs a new instance of the `AngularHTMLDetector` class.
64
+ *
65
+ * @public
66
+ * @param logger - The logger.
67
+ * @param options - Configuration options for the detector.
68
+ */
69
+ constructor(logger: ILogger, options?: IAngularHTMLDetectorOptions);
70
+ /**
71
+ * Provides the regex patterns for extracting strings from Angular HTML.
72
+ *
73
+ * @protected
74
+ * @returns An array of regex patterns.
75
+ */
76
+ protected getRegexes(): Array<RegExp>;
77
+ /**
78
+ * Pre-processes the Angular HTML content to normalize it.
79
+ *
80
+ * @protected
81
+ * @param content - The raw content.
82
+ * @returns The processed content.
83
+ */
84
+ protected preProcessContent(content: string): string;
85
+ /**
86
+ * Post-processes results after regex matching.
87
+ *
88
+ * @protected
89
+ * @param results - The raw results from regex matching.
90
+ * @returns The processed results.
91
+ */
92
+ protected postProcessResults(results: Array<IDetectorResult>): Array<IDetectorResult>;
93
+ }
94
+ //# sourceMappingURL=AngularHTMLDetector.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AngularHTMLDetector.d.ts","sourceRoot":"","sources":["../../src/Detectors/AngularHTMLDetector.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,sCAAsC,CAAC;AACpE,OAAO,EAAE,YAAY,EAAE,KAAK,oBAAoB,EAAE,MAAM,6BAA6B,CAAC;AACtF,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,2BAA2B,CAAC;AAKjE;;;;GAIG;AACH,MAAM,WAAW,2BAA4B,SAAQ,oBAAoB;IAErE;;OAEG;IACH,MAAM,CAAC,EAAE,MAAM,CAAC;CAEnB;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4CG;AACH,qBAAa,mBAAoB,SAAQ,YAAY;IAIjD,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAS;IAMjC;;;;;;OAMG;gBACgB,MAAM,EAAE,OAAO,EAAE,OAAO,CAAC,EAAE,2BAA2B;IASzE;;;;;OAKG;cACgB,UAAU,IAAI,KAAK,CAAC,MAAM,CAAC;IAmB9C;;;;;;OAMG;cACgB,iBAAiB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM;IAK7D;;;;;;OAMG;cACgB,kBAAkB,CAAC,OAAO,EAAE,KAAK,CAAC,eAAe,CAAC,GAAG,KAAK,CAAC,eAAe,CAAC;CAejG"}
@@ -0,0 +1,123 @@
1
+ "use strict";
2
+ // #region Imports
3
+ Object.defineProperty(exports, "__esModule", { value: true });
4
+ exports.AngularHTMLDetector = void 0;
5
+ const BaseDetector_js_1 = require("./Abstracts/BaseDetector.js");
6
+ const Utils_js_1 = require("./Utils.js");
7
+ /**
8
+ * Detector for extracting translatable strings from Angular HTML files.
9
+ *
10
+ * This detector supports the following Angular-specific cases:
11
+ *
12
+ * - **Text Interpolation**:
13
+ * Extracts strings inside `{{ ... }}` with the specified pipe.
14
+ * ```html
15
+ * <label>{{ 'This is a sentence' | translate }}</label>
16
+ * ```
17
+ *
18
+ * - **Attribute Binding**:
19
+ * Extracts strings in Angular attribute bindings.
20
+ * ```html
21
+ * <my-component [label]="'This is a label' | translate"></my-component>
22
+ * ```
23
+ *
24
+ * - **Event Binding**:
25
+ * Extracts strings from event bindings.
26
+ * ```html
27
+ * <button (click)="doSomething('This is a key' | translate)">Click Me</button>
28
+ * ```
29
+ *
30
+ * - **Structural Directives**:
31
+ * Extracts strings in Angular structural directives like `*ngIf`.
32
+ * ```html
33
+ * <div *ngIf="'This is a condition' | translate as conditionText">
34
+ * {{ conditionText }}
35
+ * </div>
36
+ * ```
37
+ *
38
+ * - **Content Projection**:
39
+ * Extracts strings inside `<ng-content>` blocks.
40
+ * ```html
41
+ * <ng-content select="[label]">{{ 'Default translation' | translate }}</ng-content>
42
+ * ```
43
+ *
44
+ * - **JSON-like Configurations**:
45
+ * Extracts strings inside JSON-like structures.
46
+ * ```html
47
+ * <div [config]="{ label: 'This is a translatable label' | translate }"></div>
48
+ * ```
49
+ *
50
+ * @public
51
+ */
52
+ class AngularHTMLDetector extends BaseDetector_js_1.BaseDetector {
53
+ // #region Fields
54
+ _marker;
55
+ // #endregion
56
+ // #region Constructor
57
+ /**
58
+ * Constructs a new instance of the `AngularHTMLDetector` class.
59
+ *
60
+ * @public
61
+ * @param logger - The logger.
62
+ * @param options - Configuration options for the detector.
63
+ */
64
+ constructor(logger, options) {
65
+ super(logger, options);
66
+ this._marker = options?.marker ?? 'translate';
67
+ }
68
+ // #endregion
69
+ // #region Methods
70
+ /**
71
+ * Provides the regex patterns for extracting strings from Angular HTML.
72
+ *
73
+ * @protected
74
+ * @returns An array of regex patterns.
75
+ */
76
+ getRegexes() {
77
+ const marker = (0, Utils_js_1.escapeRegExp)(this._marker);
78
+ return [
79
+ // Text Interpolation
80
+ new RegExp(`\\{\\{\\s*['"](?<value>.+?)['"]\\s*\\|\\s*${marker}\\s*\\}\\}`, 'g'),
81
+ // Attribute Binding
82
+ new RegExp(`\\[.*?\\]\\s*=\\s*"'(?<value>[^']*?)'\\s*\\|\\s*${marker}"`, 'g'),
83
+ // Event Binding
84
+ new RegExp(`\\(.*?\\)\\s*=\\s*".*?\\('(?<value>[^']*?)'\\s*\\|\\s*${marker}\\)"`, 'g'),
85
+ // Structural Directives
86
+ new RegExp(`\\*\\w+\\s*=\\s*"'(?<value>[^']*?)'\\s*\\|\\s*${marker}\\s+as\\s+\\w+"`, 'g'),
87
+ // JSON-like Configurations
88
+ new RegExp(`\\[.*?\\]\\s*=\\s*"\\{.*?:\\s*'(?<value>[^']*?)'\\s*\\|\\s*${marker}\\s*\\}"`, 'g'),
89
+ // Content Projection
90
+ new RegExp(`<ng-content.*?>\\s*['"](?<value>.+?)['"]\\s*\\|\\s*${marker}\\s*<\\/ng-content>`, 'g')
91
+ ];
92
+ }
93
+ /**
94
+ * Pre-processes the Angular HTML content to normalize it.
95
+ *
96
+ * @protected
97
+ * @param content - The raw content.
98
+ * @returns The processed content.
99
+ */
100
+ preProcessContent(content) {
101
+ this.log('Pre-processing Angular HTML content.');
102
+ return content.replace(/\r?\n/g, ' ').trim();
103
+ }
104
+ /**
105
+ * Post-processes results after regex matching.
106
+ *
107
+ * @protected
108
+ * @param results - The raw results from regex matching.
109
+ * @returns The processed results.
110
+ */
111
+ postProcessResults(results) {
112
+ this.log(`Post-processing results: ${JSON.stringify(results)}`);
113
+ // Remove empty matches
114
+ return results.filter((result) => {
115
+ if (result.match.value !== undefined) {
116
+ return result.match.value.trim().length > 0;
117
+ }
118
+ return false;
119
+ });
120
+ }
121
+ }
122
+ exports.AngularHTMLDetector = AngularHTMLDetector;
123
+ //# sourceMappingURL=AngularHTMLDetector.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AngularHTMLDetector.js","sourceRoot":"","sources":["../../src/Detectors/AngularHTMLDetector.ts"],"names":[],"mappings":";AAAA,kBAAkB;;;AAGlB,iEAAsF;AAEtF,yCAA0C;AAkB1C;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4CG;AACH,MAAa,mBAAoB,SAAQ,8BAAY;IAEjD,iBAAiB;IAEA,OAAO,CAAS;IAEjC,aAAa;IAEb,sBAAsB;IAEtB;;;;;;OAMG;IACH,YAAmB,MAAe,EAAE,OAAqC;QACrE,KAAK,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;QACvB,IAAI,CAAC,OAAO,GAAG,OAAO,EAAE,MAAM,IAAI,WAAW,CAAC;IAClD,CAAC;IAED,aAAa;IAEb,kBAAkB;IAElB;;;;;OAKG;IACgB,UAAU;QACzB,MAAM,MAAM,GAAG,IAAA,uBAAY,EAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QAE1C,OAAO;YACH,qBAAqB;YACrB,IAAI,MAAM,CAAC,6CAA6C,MAAM,YAAY,EAAE,GAAG,CAAC;YAChF,oBAAoB;YACpB,IAAI,MAAM,CAAC,mDAAmD,MAAM,GAAG,EAAE,GAAG,CAAC;YAC7E,gBAAgB;YAChB,IAAI,MAAM,CAAC,yDAAyD,MAAM,MAAM,EAAE,GAAG,CAAC;YACtF,wBAAwB;YACxB,IAAI,MAAM,CAAC,iDAAiD,MAAM,iBAAiB,EAAE,GAAG,CAAC;YACzF,2BAA2B;YAC3B,IAAI,MAAM,CAAC,8DAA8D,MAAM,UAAU,EAAE,GAAG,CAAC;YAC/F,qBAAqB;YACrB,IAAI,MAAM,CAAC,sDAAsD,MAAM,qBAAqB,EAAE,GAAG,CAAC;SACrG,CAAC;IACN,CAAC;IAED;;;;;;OAMG;IACgB,iBAAiB,CAAC,OAAe;QAChD,IAAI,CAAC,GAAG,CAAC,sCAAsC,CAAC,CAAC;QACjD,OAAO,OAAO,CAAC,OAAO,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC;IACjD,CAAC;IAED;;;;;;OAMG;IACgB,kBAAkB,CAAC,OAA+B;QACjE,IAAI,CAAC,GAAG,CAAC,4BAA4B,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;QAEhE,uBAAuB;QACvB,OAAO,OAAO,CAAC,MAAM,CAAC,CAAC,MAAM,EAAE,EAAE;YAC7B,IAAI,MAAM,CAAC,KAAK,CAAC,KAAK,KAAK,SAAS,EAAE,CAAC;gBACnC,OAAO,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,MAAM,GAAG,CAAC,CAAC;YAChD,CAAC;YAED,OAAO,KAAK,CAAC;QACjB,CAAC,CAAC,CAAC;IACP,CAAC;CAIJ;AArFD,kDAqFC"}
@@ -0,0 +1,73 @@
1
+ import type { EventEmitter } from 'events';
2
+ /**
3
+ * Represents a record type with a `value` property.
4
+ *
5
+ * @public
6
+ */
7
+ export type Match = Record<string, string> & {
8
+ value?: string;
9
+ };
10
+ /**
11
+ * @public
12
+ */
13
+ export declare namespace Match {
14
+ const EMPTY: Match;
15
+ }
16
+ /**
17
+ * Event map for the `IDetector`.
18
+ *
19
+ * @public
20
+ */
21
+ export interface IDetectorEventMap {
22
+ detected: [change: IDetectorResult];
23
+ failed: [error: any];
24
+ }
25
+ /**
26
+ * Result of a detector extraction.
27
+ *
28
+ * @public
29
+ */
30
+ export interface IDetectorResult {
31
+ isStatic: boolean;
32
+ lineNumber: number;
33
+ columnNumber: number;
34
+ match: Match;
35
+ context: string;
36
+ }
37
+ interface IDetectorResourceKeyOptions {
38
+ /**
39
+ * The prefix for resource keys.
40
+ *
41
+ * @default ''
42
+ */
43
+ prefix?: string;
44
+ /**
45
+ * The suffix for resource keys.
46
+ *
47
+ * @default ''
48
+ */
49
+ suffix?: string;
50
+ }
51
+ export interface IDetectOptions extends Record<string, unknown> {
52
+ /**
53
+ * The resource key check configuration for the detector.
54
+ */
55
+ resourceKey?: IDetectorResourceKeyOptions;
56
+ }
57
+ /**
58
+ * Interface for detectors that extract translatable strings from content.
59
+ *
60
+ * @public
61
+ */
62
+ export interface IDetector extends Pick<EventEmitter<IDetectorEventMap>, 'on'> {
63
+ /**
64
+ * Detects content and extracts translatable strings.
65
+ *
66
+ * @param content - The content to detect.
67
+ * @param options - The optional detector options.
68
+ * @returns An array of extracted results.
69
+ */
70
+ detect(content: string, options?: IDetectOptions): Array<IDetectorResult>;
71
+ }
72
+ export {};
73
+ //# sourceMappingURL=IDetector.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"IDetector.d.ts","sourceRoot":"","sources":["../../../src/Detectors/Interfaces/IDetector.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,QAAQ,CAAC;AAI3C;;;;GAIG;AACH,MAAM,MAAM,KAAK,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG;IAAE,KAAK,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC;AAEhE;;GAEG;AACH,yBAAiB,KAAK,CAAC;IACZ,MAAM,KAAK,EAAE,KAAU,CAAC;CAClC;AAED;;;;GAIG;AACH,MAAM,WAAW,iBAAiB;IAC9B,QAAQ,EAAE,CAAC,MAAM,EAAE,eAAe,CAAC,CAAC;IACpC,MAAM,EAAE,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;CACxB;AAED;;;;GAIG;AACH,MAAM,WAAW,eAAe;IAC5B,QAAQ,EAAE,OAAO,CAAC;IAClB,UAAU,EAAE,MAAM,CAAC;IACnB,YAAY,EAAE,MAAM,CAAC;IACrB,KAAK,EAAE,KAAK,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;CACnB;AAED,UAAU,2BAA2B;IAEjC;;;;OAIG;IACH,MAAM,CAAC,EAAE,MAAM,CAAC;IAEhB;;;;OAIG;IACH,MAAM,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,cAAe,SAAQ,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;IAI3D;;OAEG;IACH,WAAW,CAAC,EAAE,2BAA2B,CAAC;CAG7C;AAED;;;;GAIG;AACH,MAAM,WAAW,SAAU,SAAQ,IAAI,CAAC,YAAY,CAAC,iBAAiB,CAAC,EAAE,IAAI,CAAC;IAI1E;;;;;;OAMG;IACH,MAAM,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,cAAc,GAAG,KAAK,CAAC,eAAe,CAAC,CAAC;CAI7E"}
@@ -0,0 +1,12 @@
1
+ "use strict";
2
+ // #region Imports
3
+ Object.defineProperty(exports, "__esModule", { value: true });
4
+ exports.Match = void 0;
5
+ /**
6
+ * @public
7
+ */
8
+ var Match;
9
+ (function (Match) {
10
+ Match.EMPTY = {};
11
+ })(Match || (exports.Match = Match = {}));
12
+ //# sourceMappingURL=IDetector.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"IDetector.js","sourceRoot":"","sources":["../../../src/Detectors/Interfaces/IDetector.ts"],"names":[],"mappings":";AAAA,kBAAkB;;;AAalB;;GAEG;AACH,IAAiB,KAAK,CAErB;AAFD,WAAiB,KAAK;IACL,WAAK,GAAU,EAAE,CAAC;AACnC,CAAC,EAFgB,KAAK,qBAAL,KAAK,QAErB"}
@@ -0,0 +1,69 @@
1
+ import type { ILogger } from '@breadstone-infrastructure/utilities';
2
+ import { BaseDetector, type IBaseDetectorOptions } from './Abstracts/BaseDetector.js';
3
+ import type { IDetectorResult } from './Interfaces/IDetector.js';
4
+ /**
5
+ * Options for configuring the `JSXDetector`.
6
+ *
7
+ * @public
8
+ */
9
+ export interface IJSXDetectorOptions extends IBaseDetectorOptions {
10
+ /**
11
+ * The function name or regex used for translation (default: `/t|translate/`).
12
+ */
13
+ marker?: string | RegExp;
14
+ }
15
+ /**
16
+ * Detector for extracting translatable strings from JSX files.
17
+ *
18
+ * This detector supports the following scenarios:
19
+ * - **Simple Function Calls**:
20
+ * ```jsx
21
+ * t("This is a translatable string");
22
+ * translate("Another translatable string");
23
+ * ```
24
+ * - **With Context**:
25
+ * ```jsx
26
+ * t("This is translatable", { context: "example" });
27
+ * ```
28
+ * - **Template Literals**:
29
+ * ```jsx
30
+ * t(`This is a template literal`);
31
+ * ```
32
+ *
33
+ * @public
34
+ */
35
+ export declare class JSXDetector extends BaseDetector {
36
+ private readonly _marker;
37
+ /**
38
+ * Constructs a new instance of the `JSXDetector` class.
39
+ *
40
+ * @public
41
+ * @param logger - The logger.
42
+ * @param options - Configuration options for the detector.
43
+ */
44
+ constructor(logger: ILogger, options?: IJSXDetectorOptions);
45
+ /**
46
+ * Provides the regex patterns for extracting strings from JSX content.
47
+ *
48
+ * @protected
49
+ * @returns A RegExp for extracting strings.
50
+ */
51
+ protected getRegexes(): Array<RegExp>;
52
+ /**
53
+ * Pre-processes content before applying regex matching.
54
+ *
55
+ * @protected
56
+ * @param content - The raw content.
57
+ * @returns The processed content.
58
+ */
59
+ protected preProcessContent(content: string): string;
60
+ /**
61
+ * Post-processes results after regex matching.
62
+ *
63
+ * @protected
64
+ * @param results - The raw results from regex matching.
65
+ * @returns The processed results.
66
+ */
67
+ protected postProcessResults(results: Array<IDetectorResult>): Array<IDetectorResult>;
68
+ }
69
+ //# sourceMappingURL=JSXDetector.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"JSXDetector.d.ts","sourceRoot":"","sources":["../../src/Detectors/JSXDetector.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,sCAAsC,CAAC;AACpE,OAAO,EAAE,YAAY,EAAE,KAAK,oBAAoB,EAAE,MAAM,6BAA6B,CAAC;AACtF,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,2BAA2B,CAAC;AAKjE;;;;GAIG;AACH,MAAM,WAAW,mBAAoB,SAAQ,oBAAoB;IAE7D;;OAEG;IACH,MAAM,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;CAE5B;AAED;;;;;;;;;;;;;;;;;;;GAmBG;AACH,qBAAa,WAAY,SAAQ,YAAY;IAIzC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAkB;IAM1C;;;;;;OAMG;gBACgB,MAAM,EAAE,OAAO,EAAE,OAAO,CAAC,EAAE,mBAAmB;IAUjE;;;;;OAKG;cACgB,UAAU,IAAI,KAAK,CAAC,MAAM,CAAC;IAqB9C;;;;;;OAMG;cACgB,iBAAiB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM;IAK7D;;;;;;OAMG;cACgB,kBAAkB,CAAC,OAAO,EAAE,KAAK,CAAC,eAAe,CAAC,GAAG,KAAK,CAAC,eAAe,CAAC;CAmBjG"}