@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.
- package/Detectors/Abstracts/BaseDetector.d.ts +81 -0
- package/Detectors/Abstracts/BaseDetector.d.ts.map +1 -0
- package/Detectors/Abstracts/BaseDetector.js +137 -0
- package/Detectors/Abstracts/BaseDetector.js.map +1 -0
- package/Detectors/AngularHTMLDetector.d.ts +94 -0
- package/Detectors/AngularHTMLDetector.d.ts.map +1 -0
- package/Detectors/AngularHTMLDetector.js +123 -0
- package/Detectors/AngularHTMLDetector.js.map +1 -0
- package/Detectors/Interfaces/IDetector.d.ts +73 -0
- package/Detectors/Interfaces/IDetector.d.ts.map +1 -0
- package/Detectors/Interfaces/IDetector.js +12 -0
- package/Detectors/Interfaces/IDetector.js.map +1 -0
- package/Detectors/JSXDetector.d.ts +69 -0
- package/Detectors/JSXDetector.d.ts.map +1 -0
- package/Detectors/JSXDetector.js +101 -0
- package/Detectors/JSXDetector.js.map +1 -0
- package/Detectors/JavaScriptDetector.d.ts +74 -0
- package/Detectors/JavaScriptDetector.d.ts.map +1 -0
- package/Detectors/JavaScriptDetector.js +106 -0
- package/Detectors/JavaScriptDetector.js.map +1 -0
- package/Detectors/TSXDetector.d.ts +76 -0
- package/Detectors/TSXDetector.d.ts.map +1 -0
- package/Detectors/TSXDetector.js +101 -0
- package/Detectors/TSXDetector.js.map +1 -0
- package/Detectors/TypeScriptDetector.d.ts +76 -0
- package/Detectors/TypeScriptDetector.d.ts.map +1 -0
- package/Detectors/TypeScriptDetector.js +102 -0
- package/Detectors/TypeScriptDetector.js.map +1 -0
- package/Detectors/Utils.d.ts +41 -0
- package/Detectors/Utils.d.ts.map +1 -0
- package/Detectors/Utils.js +62 -0
- package/Detectors/Utils.js.map +1 -0
- package/Detectors/VueDetector.d.ts +60 -0
- package/Detectors/VueDetector.d.ts.map +1 -0
- package/Detectors/VueDetector.js +108 -0
- package/Detectors/VueDetector.js.map +1 -0
- package/Formatters/Formatters.d.ts +15 -0
- package/Formatters/Formatters.d.ts.map +1 -0
- package/Formatters/Formatters.js +34 -0
- package/Formatters/Formatters.js.map +1 -0
- package/Formatters/Interfaces/IFormatter.d.ts +24 -0
- package/Formatters/Interfaces/IFormatter.d.ts.map +1 -0
- package/Formatters/Interfaces/IFormatter.js +3 -0
- package/Formatters/Interfaces/IFormatter.js.map +1 -0
- package/Formatters/JsonFormatter.d.ts +26 -0
- package/Formatters/JsonFormatter.d.ts.map +1 -0
- package/Formatters/JsonFormatter.js +42 -0
- package/Formatters/JsonFormatter.js.map +1 -0
- package/Formatters/ResxFormatter.d.ts +26 -0
- package/Formatters/ResxFormatter.d.ts.map +1 -0
- package/Formatters/ResxFormatter.js +53 -0
- package/Formatters/ResxFormatter.js.map +1 -0
- package/Index.d.ts +57 -0
- package/Index.d.ts.map +1 -0
- package/Index.js +86 -0
- package/Index.js.map +1 -0
- package/LICENSE +21 -0
- package/Presets/AngularPreset.d.ts +38 -0
- package/Presets/AngularPreset.d.ts.map +1 -0
- package/Presets/AngularPreset.js +59 -0
- package/Presets/AngularPreset.js.map +1 -0
- package/Presets/Interfaces/IFrameworkPreset.d.ts +28 -0
- package/Presets/Interfaces/IFrameworkPreset.d.ts.map +1 -0
- package/Presets/Interfaces/IFrameworkPreset.js +4 -0
- package/Presets/Interfaces/IFrameworkPreset.js.map +1 -0
- package/Presets/LitPreset.d.ts +38 -0
- package/Presets/LitPreset.d.ts.map +1 -0
- package/Presets/LitPreset.js +57 -0
- package/Presets/LitPreset.js.map +1 -0
- package/Presets/Presets.d.ts +25 -0
- package/Presets/Presets.d.ts.map +1 -0
- package/Presets/Presets.js +50 -0
- package/Presets/Presets.js.map +1 -0
- package/Presets/ReactPreset.d.ts +38 -0
- package/Presets/ReactPreset.d.ts.map +1 -0
- package/Presets/ReactPreset.js +61 -0
- package/Presets/ReactPreset.js.map +1 -0
- package/Presets/StencilPreset.d.ts +38 -0
- package/Presets/StencilPreset.d.ts.map +1 -0
- package/Presets/StencilPreset.js +59 -0
- package/Presets/StencilPreset.js.map +1 -0
- package/Presets/VuePreset.d.ts +38 -0
- package/Presets/VuePreset.d.ts.map +1 -0
- package/Presets/VuePreset.js +60 -0
- package/Presets/VuePreset.js.map +1 -0
- package/Resources/Analyzers/ResourceAnalyzer.d.ts +58 -0
- package/Resources/Analyzers/ResourceAnalyzer.d.ts.map +1 -0
- package/Resources/Analyzers/ResourceAnalyzer.js +119 -0
- package/Resources/Analyzers/ResourceAnalyzer.js.map +1 -0
- package/Resources/Analyzers/Tasks/DuplicateKeysTask.d.ts +31 -0
- package/Resources/Analyzers/Tasks/DuplicateKeysTask.d.ts.map +1 -0
- package/Resources/Analyzers/Tasks/DuplicateKeysTask.js +40 -0
- package/Resources/Analyzers/Tasks/DuplicateKeysTask.js.map +1 -0
- package/Resources/Analyzers/Tasks/EmptyValuesTask.d.ts +31 -0
- package/Resources/Analyzers/Tasks/EmptyValuesTask.d.ts.map +1 -0
- package/Resources/Analyzers/Tasks/EmptyValuesTask.js +41 -0
- package/Resources/Analyzers/Tasks/EmptyValuesTask.js.map +1 -0
- package/Resources/Analyzers/Tasks/Interfaces/IAnalyzerTask.d.ts +36 -0
- package/Resources/Analyzers/Tasks/Interfaces/IAnalyzerTask.d.ts.map +1 -0
- package/Resources/Analyzers/Tasks/Interfaces/IAnalyzerTask.js +4 -0
- package/Resources/Analyzers/Tasks/Interfaces/IAnalyzerTask.js.map +1 -0
- package/Resources/Analyzers/Tasks/KeyConsistencyTask.d.ts +35 -0
- package/Resources/Analyzers/Tasks/KeyConsistencyTask.d.ts.map +1 -0
- package/Resources/Analyzers/Tasks/KeyConsistencyTask.js +67 -0
- package/Resources/Analyzers/Tasks/KeyConsistencyTask.js.map +1 -0
- package/Resources/Analyzers/Tasks/MissingTranslationsTask.d.ts +31 -0
- package/Resources/Analyzers/Tasks/MissingTranslationsTask.d.ts.map +1 -0
- package/Resources/Analyzers/Tasks/MissingTranslationsTask.js +44 -0
- package/Resources/Analyzers/Tasks/MissingTranslationsTask.js.map +1 -0
- package/Resources/Analyzers/Tasks/MultipleKeyUsageTask.d.ts +31 -0
- package/Resources/Analyzers/Tasks/MultipleKeyUsageTask.d.ts.map +1 -0
- package/Resources/Analyzers/Tasks/MultipleKeyUsageTask.js +48 -0
- package/Resources/Analyzers/Tasks/MultipleKeyUsageTask.js.map +1 -0
- package/Resources/Analyzers/Tasks/UnusedKeysTask.d.ts +31 -0
- package/Resources/Analyzers/Tasks/UnusedKeysTask.d.ts.map +1 -0
- package/Resources/Analyzers/Tasks/UnusedKeysTask.js +49 -0
- package/Resources/Analyzers/Tasks/UnusedKeysTask.js.map +1 -0
- package/Resources/Models/Interfaces/IJsonResourceInfo.d.ts +12 -0
- package/Resources/Models/Interfaces/IJsonResourceInfo.d.ts.map +1 -0
- package/Resources/Models/Interfaces/IJsonResourceInfo.js +4 -0
- package/Resources/Models/Interfaces/IJsonResourceInfo.js.map +1 -0
- package/Resources/Models/Interfaces/IResourceInfo.d.ts +71 -0
- package/Resources/Models/Interfaces/IResourceInfo.d.ts.map +1 -0
- package/Resources/Models/Interfaces/IResourceInfo.js +4 -0
- package/Resources/Models/Interfaces/IResourceInfo.js.map +1 -0
- package/Resources/Models/Interfaces/IResourceModel.d.ts +41 -0
- package/Resources/Models/Interfaces/IResourceModel.d.ts.map +1 -0
- package/Resources/Models/Interfaces/IResourceModel.js +25 -0
- package/Resources/Models/Interfaces/IResourceModel.js.map +1 -0
- package/Resources/Models/Interfaces/IResxResourceInfo.d.ts +12 -0
- package/Resources/Models/Interfaces/IResxResourceInfo.d.ts.map +1 -0
- package/Resources/Models/Interfaces/IResxResourceInfo.js +4 -0
- package/Resources/Models/Interfaces/IResxResourceInfo.js.map +1 -0
- package/Resources/Models/Interfaces/ITypeScriptResourceInfo.d.ts +11 -0
- package/Resources/Models/Interfaces/ITypeScriptResourceInfo.d.ts.map +1 -0
- package/Resources/Models/Interfaces/ITypeScriptResourceInfo.js +4 -0
- package/Resources/Models/Interfaces/ITypeScriptResourceInfo.js.map +1 -0
- package/Resources/Models/Interfaces/ResourceType.d.ts +29 -0
- package/Resources/Models/Interfaces/ResourceType.d.ts.map +1 -0
- package/Resources/Models/Interfaces/ResourceType.js +45 -0
- package/Resources/Models/Interfaces/ResourceType.js.map +1 -0
- package/Resources/Models/JsonResourceInfo.d.ts +111 -0
- package/Resources/Models/JsonResourceInfo.d.ts.map +1 -0
- package/Resources/Models/JsonResourceInfo.js +184 -0
- package/Resources/Models/JsonResourceInfo.js.map +1 -0
- package/Resources/Models/ResxResourceInfo.d.ts +110 -0
- package/Resources/Models/ResxResourceInfo.d.ts.map +1 -0
- package/Resources/Models/ResxResourceInfo.js +171 -0
- package/Resources/Models/ResxResourceInfo.js.map +1 -0
- package/Resources/Models/TypeScriptResourceInfo.d.ts +109 -0
- package/Resources/Models/TypeScriptResourceInfo.d.ts.map +1 -0
- package/Resources/Models/TypeScriptResourceInfo.js +244 -0
- package/Resources/Models/TypeScriptResourceInfo.js.map +1 -0
- package/Resources/ResourceFactory.d.ts +39 -0
- package/Resources/ResourceFactory.d.ts.map +1 -0
- package/Resources/ResourceFactory.js +102 -0
- package/Resources/ResourceFactory.js.map +1 -0
- package/Resources/ResourceMode.d.ts +14 -0
- package/Resources/ResourceMode.d.ts.map +1 -0
- package/Resources/ResourceMode.js +18 -0
- package/Resources/ResourceMode.js.map +1 -0
- package/Resources/ResourceProcessor.d.ts +66 -0
- package/Resources/ResourceProcessor.d.ts.map +1 -0
- package/Resources/ResourceProcessor.js +90 -0
- package/Resources/ResourceProcessor.js.map +1 -0
- package/Resources/Scanners/Adapter/Interfaces/IScannerAdapter.d.ts +17 -0
- package/Resources/Scanners/Adapter/Interfaces/IScannerAdapter.d.ts.map +1 -0
- package/Resources/Scanners/Adapter/Interfaces/IScannerAdapter.js +4 -0
- package/Resources/Scanners/Adapter/Interfaces/IScannerAdapter.js.map +1 -0
- package/Resources/Scanners/Adapter/JsonScannerAdapter.d.ts +28 -0
- package/Resources/Scanners/Adapter/JsonScannerAdapter.d.ts.map +1 -0
- package/Resources/Scanners/Adapter/JsonScannerAdapter.js +62 -0
- package/Resources/Scanners/Adapter/JsonScannerAdapter.js.map +1 -0
- package/Resources/Scanners/Adapter/ResxScannerAdapter.d.ts +28 -0
- package/Resources/Scanners/Adapter/ResxScannerAdapter.d.ts.map +1 -0
- package/Resources/Scanners/Adapter/ResxScannerAdapter.js +62 -0
- package/Resources/Scanners/Adapter/ResxScannerAdapter.js.map +1 -0
- package/Resources/Scanners/ResourceScanner.d.ts +32 -0
- package/Resources/Scanners/ResourceScanner.d.ts.map +1 -0
- package/Resources/Scanners/ResourceScanner.js +59 -0
- package/Resources/Scanners/ResourceScanner.js.map +1 -0
- package/Resources/Sorting/ResourceSorter.d.ts +46 -0
- package/Resources/Sorting/ResourceSorter.d.ts.map +1 -0
- package/Resources/Sorting/ResourceSorter.js +82 -0
- package/Resources/Sorting/ResourceSorter.js.map +1 -0
- package/Resources/Transformers/Adapters/Abstracts/BaseResourceTransformerAdapter.d.ts +20 -0
- package/Resources/Transformers/Adapters/Abstracts/BaseResourceTransformerAdapter.d.ts.map +1 -0
- package/Resources/Transformers/Adapters/Abstracts/BaseResourceTransformerAdapter.js +15 -0
- package/Resources/Transformers/Adapters/Abstracts/BaseResourceTransformerAdapter.js.map +1 -0
- package/Resources/Transformers/Adapters/Interfaces/IResourceTransformerAdapter.d.ts +11 -0
- package/Resources/Transformers/Adapters/Interfaces/IResourceTransformerAdapter.d.ts.map +1 -0
- package/Resources/Transformers/Adapters/Interfaces/IResourceTransformerAdapter.js +4 -0
- package/Resources/Transformers/Adapters/Interfaces/IResourceTransformerAdapter.js.map +1 -0
- package/Resources/Transformers/Adapters/JsonResourceTransformerAdapter.d.ts +26 -0
- package/Resources/Transformers/Adapters/JsonResourceTransformerAdapter.d.ts.map +1 -0
- package/Resources/Transformers/Adapters/JsonResourceTransformerAdapter.js +64 -0
- package/Resources/Transformers/Adapters/JsonResourceTransformerAdapter.js.map +1 -0
- package/Resources/Transformers/Adapters/ResxResourceTransformerAdapter.d.ts +19 -0
- package/Resources/Transformers/Adapters/ResxResourceTransformerAdapter.d.ts.map +1 -0
- package/Resources/Transformers/Adapters/ResxResourceTransformerAdapter.js +30 -0
- package/Resources/Transformers/Adapters/ResxResourceTransformerAdapter.js.map +1 -0
- package/Resources/Transformers/Interfaces/IResourceTransformerResult.d.ts +11 -0
- package/Resources/Transformers/Interfaces/IResourceTransformerResult.d.ts.map +1 -0
- package/Resources/Transformers/Interfaces/IResourceTransformerResult.js +4 -0
- package/Resources/Transformers/Interfaces/IResourceTransformerResult.js.map +1 -0
- package/Resources/Transformers/ResourceTransformer.d.ts +74 -0
- package/Resources/Transformers/ResourceTransformer.d.ts.map +1 -0
- package/Resources/Transformers/ResourceTransformer.js +112 -0
- package/Resources/Transformers/ResourceTransformer.js.map +1 -0
- package/Resources/Transformers/Serializers/Interfaces/IResourceSerializer.d.ts +9 -0
- package/Resources/Transformers/Serializers/Interfaces/IResourceSerializer.d.ts.map +1 -0
- package/Resources/Transformers/Serializers/Interfaces/IResourceSerializer.js +4 -0
- package/Resources/Transformers/Serializers/Interfaces/IResourceSerializer.js.map +1 -0
- package/Resources/Transformers/Serializers/JsonResourceSerializer.d.ts +20 -0
- package/Resources/Transformers/Serializers/JsonResourceSerializer.d.ts.map +1 -0
- package/Resources/Transformers/Serializers/JsonResourceSerializer.js +47 -0
- package/Resources/Transformers/Serializers/JsonResourceSerializer.js.map +1 -0
- package/Resources/Transformers/Serializers/ResxResourceSerializer.d.ts +20 -0
- package/Resources/Transformers/Serializers/ResxResourceSerializer.d.ts.map +1 -0
- package/Resources/Transformers/Serializers/ResxResourceSerializer.js +36 -0
- package/Resources/Transformers/Serializers/ResxResourceSerializer.js.map +1 -0
- package/Resources/Transformers/Serializers/TypescriptResourceSerializer.d.ts +20 -0
- package/Resources/Transformers/Serializers/TypescriptResourceSerializer.d.ts.map +1 -0
- package/Resources/Transformers/Serializers/TypescriptResourceSerializer.js +36 -0
- package/Resources/Transformers/Serializers/TypescriptResourceSerializer.js.map +1 -0
- package/Services/DiffService.d.ts +1 -0
- package/Services/DiffService.d.ts.map +1 -0
- package/Services/DiffService.js +86 -0
- package/Services/DiffService.js.map +1 -0
- package/Services/KeyGenerator.d.ts +21 -0
- package/Services/KeyGenerator.d.ts.map +1 -0
- package/Services/KeyGenerator.js +34 -0
- package/Services/KeyGenerator.js.map +1 -0
- package/Services/LocalizationProcessor.d.ts +83 -0
- package/Services/LocalizationProcessor.d.ts.map +1 -0
- package/Services/LocalizationProcessor.js +90 -0
- package/Services/LocalizationProcessor.js.map +1 -0
- 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"}
|