@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,90 @@
1
+ "use strict";
2
+ // #region Imports
3
+ Object.defineProperty(exports, "__esModule", { value: true });
4
+ exports.ResourceProcessor = void 0;
5
+ // #endregion
6
+ /**
7
+ * The `ResourceProcessor` class.
8
+ *
9
+ * @public
10
+ */
11
+ class ResourceProcessor {
12
+ // #region Fields
13
+ _logger;
14
+ _scanner;
15
+ _transformer;
16
+ _analyzer;
17
+ _sorter;
18
+ // #endregion
19
+ // #region Ctor
20
+ /**
21
+ * Constructs a new instance of the `ResourceProcessor` class.
22
+ *
23
+ * @public
24
+ */
25
+ constructor(logger, scanner, transformer, analyzer, sorter) {
26
+ this._logger = logger;
27
+ this._scanner = scanner;
28
+ this._transformer = transformer;
29
+ this._analyzer = analyzer;
30
+ this._sorter = sorter;
31
+ }
32
+ // #endregion
33
+ // #region Methods
34
+ /**
35
+ * Scans the specified path for resources.
36
+ *
37
+ * @public
38
+ * @param path - The path to scan.
39
+ * @param type - The type of resources to scan.
40
+ * @returns The resource information.
41
+ */
42
+ scan(path, type) {
43
+ return this._scanner.scan(path, type);
44
+ }
45
+ /**
46
+ * Transforms an input resource dynamically by determining the appropriate adapter and serializer.
47
+ *
48
+ * @public
49
+ * @param resource - The input resource to transform.
50
+ * @param meta - The metadata for the transformation.
51
+ * @returns The transformed resource information.
52
+ * @throws Error if no adapter or serializer is registered for the specified resource type.
53
+ */
54
+ transform(resource, meta) {
55
+ const models = this._transformer.transform(resource);
56
+ const newResource = this._transformer.serialize(models, meta);
57
+ return {
58
+ originalResource: resource,
59
+ transformedResource: newResource
60
+ };
61
+ }
62
+ /**
63
+ * Executes all registered tasks using the provided context.
64
+ *
65
+ * @public
66
+ * @param rules - The name of rules to execute. If not specified, all rules are executed
67
+ * @param context - The execution context.
68
+ */
69
+ analyze(rules, context) {
70
+ const results = [];
71
+ for (const rule of rules) {
72
+ this._logger.info(`Executing rule: ${rule}`);
73
+ const result = this._analyzer.executeTask(rule, context);
74
+ results.push(result);
75
+ }
76
+ return results;
77
+ }
78
+ /**
79
+ * Sorts the specified resources.
80
+ *
81
+ * @public
82
+ * @param resources - The resources to sort.
83
+ * @returns The sorted resources.
84
+ */
85
+ sort(resources) {
86
+ return this._sorter.sort(resources);
87
+ }
88
+ }
89
+ exports.ResourceProcessor = ResourceProcessor;
90
+ //# sourceMappingURL=ResourceProcessor.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ResourceProcessor.js","sourceRoot":"","sources":["../../src/Resources/ResourceProcessor.ts"],"names":[],"mappings":";AAAA,kBAAkB;;;AAalB,aAAa;AAEb;;;;GAIG;AACH,MAAa,iBAAiB;IAE1B,iBAAiB;IAEA,OAAO,CAAU;IACjB,QAAQ,CAAkB;IAC1B,YAAY,CAAsB;IAClC,SAAS,CAAmB;IAC5B,OAAO,CAAiB;IAEzC,aAAa;IAEb,eAAe;IAEf;;;;OAIG;IACH,YAAmB,MAAe,EAAE,OAAwB,EAAE,WAAgC,EAAE,QAA0B,EAAE,MAAsB;QAC9I,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC;QACtB,IAAI,CAAC,QAAQ,GAAG,OAAO,CAAC;QACxB,IAAI,CAAC,YAAY,GAAG,WAAW,CAAC;QAChC,IAAI,CAAC,SAAS,GAAG,QAAQ,CAAC;QAC1B,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC;IAC1B,CAAC;IAED,aAAa;IAEb,kBAAkB;IAElB;;;;;;;OAOG;IACI,IAAI,CAAC,IAAY,EAAE,IAAkB;QACxC,OAAO,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;IAC1C,CAAC;IAED;;;;;;;;OAQG;IACI,SAAS,CAAC,QAAuB,EAAE,IAAgF;QACtH,MAAM,MAAM,GAAG,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC;QACrD,MAAM,WAAW,GAAG,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;QAE9D,OAAO;YACH,gBAAgB,EAAE,QAAQ;YAC1B,mBAAmB,EAAE,WAAW;SACnC,CAAC;IACN,CAAC;IAED;;;;;;OAMG;IACI,OAAO,CAAC,KAAoB,EAAE,OAAsC;QACvE,MAAM,OAAO,GAA+B,EAAE,CAAC;QAC/C,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;YACvB,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,mBAAmB,IAAI,EAAE,CAAC,CAAC;YAC7C,MAAM,MAAM,GAAG,IAAI,CAAC,SAAS,CAAC,WAAW,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;YAEzD,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QACzB,CAAC;QAED,OAAO,OAAO,CAAC;IACnB,CAAC;IAED;;;;;;OAMG;IACI,IAAI,CAAC,SAA+B;QACvC,OAAO,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;IACxC,CAAC;CAIJ;AA9FD,8CA8FC"}
@@ -0,0 +1,17 @@
1
+ import type { IResourceInfo } from '../../../Models/Interfaces/IResourceInfo';
2
+ /**
3
+ * The `IScannerAdapter` interface defines a scanner adapter.
4
+ *
5
+ * @public
6
+ */
7
+ export interface IScannerAdapter {
8
+ /**
9
+ * Scans the given path and returns the resource information.
10
+ *
11
+ * @public
12
+ * @param path - The path to scan.
13
+ * @returns The resource information.
14
+ */
15
+ scan(path: string): Array<IResourceInfo>;
16
+ }
17
+ //# sourceMappingURL=IScannerAdapter.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"IScannerAdapter.d.ts","sourceRoot":"","sources":["../../../../../src/Resources/Scanners/Adapter/Interfaces/IScannerAdapter.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,0CAA0C,CAAC;AAI9E;;;;GAIG;AACH,MAAM,WAAW,eAAe;IAI5B;;;;;;OAMG;IACH,IAAI,CAAC,IAAI,EAAE,MAAM,GAAG,KAAK,CAAC,aAAa,CAAC,CAAC;CAI5C"}
@@ -0,0 +1,4 @@
1
+ "use strict";
2
+ // #region Imports
3
+ Object.defineProperty(exports, "__esModule", { value: true });
4
+ //# sourceMappingURL=IScannerAdapter.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"IScannerAdapter.js","sourceRoot":"","sources":["../../../../../src/Resources/Scanners/Adapter/Interfaces/IScannerAdapter.ts"],"names":[],"mappings":";AAAA,kBAAkB"}
@@ -0,0 +1,28 @@
1
+ import type { IScannerAdapter } from './Interfaces/IScannerAdapter';
2
+ import type { IJsonResourceInfo } from '../../Models/Interfaces/IJsonResourceInfo';
3
+ import { type IFileSystem, type ILogger } from '@breadstone-infrastructure/utilities';
4
+ /**
5
+ * The `JsonScannerAdapter` class is responsible for scanning .json files.
6
+ *
7
+ * @public
8
+ */
9
+ export declare class JsonScannerAdapter implements IScannerAdapter {
10
+ private readonly _fileSystem;
11
+ private readonly _logger;
12
+ private readonly _glob;
13
+ /**
14
+ * Constructs a new instance of the `ResourceScanner` class.
15
+ *
16
+ * @public
17
+ */
18
+ constructor(fileSystem: IFileSystem, logger: ILogger);
19
+ /**
20
+ * Scans the specified path for .json files.
21
+ *
22
+ * @public
23
+ * @param path - The path to scan.
24
+ * @returns The resource information.
25
+ */
26
+ scan(path: string): Array<IJsonResourceInfo>;
27
+ }
28
+ //# sourceMappingURL=JsonScannerAdapter.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"JsonScannerAdapter.d.ts","sourceRoot":"","sources":["../../../../src/Resources/Scanners/Adapter/JsonScannerAdapter.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,8BAA8B,CAAC;AACpE,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,2CAA2C,CAAC;AACnF,OAAO,EAAoB,KAAK,WAAW,EAAE,KAAK,OAAO,EAAE,MAAM,sCAAsC,CAAC;AAMxG;;;;GAIG;AACH,qBAAa,kBAAmB,YAAW,eAAe;IAItD,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAc;IAC1C,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAU;IAClC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAS;IAM/B;;;;OAIG;gBACgB,UAAU,EAAE,WAAW,EAAE,MAAM,EAAE,OAAO;IAU3D;;;;;;OAMG;IACI,IAAI,CAAC,IAAI,EAAE,MAAM,GAAG,KAAK,CAAC,iBAAiB,CAAC;CA6BtD"}
@@ -0,0 +1,62 @@
1
+ "use strict";
2
+ // #region Imports
3
+ Object.defineProperty(exports, "__esModule", { value: true });
4
+ exports.JsonScannerAdapter = void 0;
5
+ const utilities_1 = require("@breadstone-infrastructure/utilities");
6
+ const JsonResourceInfo_1 = require("../../Models/JsonResourceInfo");
7
+ const ResourceType_1 = require("../../Models/Interfaces/ResourceType");
8
+ // #endregion
9
+ /**
10
+ * The `JsonScannerAdapter` class is responsible for scanning .json files.
11
+ *
12
+ * @public
13
+ */
14
+ class JsonScannerAdapter {
15
+ // #region Fields
16
+ _fileSystem;
17
+ _logger;
18
+ _glob;
19
+ // #endregion
20
+ // #region Ctor
21
+ /**
22
+ * Constructs a new instance of the `ResourceScanner` class.
23
+ *
24
+ * @public
25
+ */
26
+ constructor(fileSystem, logger) {
27
+ this._fileSystem = fileSystem;
28
+ this._logger = logger;
29
+ this._glob = '**/*.json';
30
+ }
31
+ // #endregion
32
+ // #region Methods
33
+ /**
34
+ * Scans the specified path for .json files.
35
+ *
36
+ * @public
37
+ * @param path - The path to scan.
38
+ * @returns The resource information.
39
+ */
40
+ scan(path) {
41
+ const globPath = utilities_1.Path.combine(path, this._glob);
42
+ this._logger.info(` Scanning ${(0, utilities_1.gray)(globPath)}`);
43
+ const scanns = this._fileSystem.glob(globPath).map((file) => {
44
+ this._logger.info(` Scanning ${(0, utilities_1.gray)(utilities_1.Path.getFileName(file))}`);
45
+ const json = this._fileSystem.readAllJson(file);
46
+ this._logger.log(` Found ${(0, utilities_1.bold)(Object.keys(json).toString())} keys in language ${(0, utilities_1.bold)(this._fileSystem.getLocale(file))}`);
47
+ return {
48
+ file: file,
49
+ content: () => json
50
+ };
51
+ });
52
+ return scanns.map((scan) => new JsonResourceInfo_1.JsonResourceInfo({
53
+ type: ResourceType_1.ResourceType.Json,
54
+ content: scan.content,
55
+ locale: this._fileSystem.getLocale(scan.file),
56
+ name: this._fileSystem.getFileName(scan.file),
57
+ path: scan.file
58
+ }));
59
+ }
60
+ }
61
+ exports.JsonScannerAdapter = JsonScannerAdapter;
62
+ //# sourceMappingURL=JsonScannerAdapter.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"JsonScannerAdapter.js","sourceRoot":"","sources":["../../../../src/Resources/Scanners/Adapter/JsonScannerAdapter.ts"],"names":[],"mappings":";AAAA,kBAAkB;;;AAIlB,oEAAwG;AACxG,oEAAiE;AACjE,uEAAoE;AAEpE,aAAa;AAEb;;;;GAIG;AACH,MAAa,kBAAkB;IAE3B,iBAAiB;IAEA,WAAW,CAAc;IACzB,OAAO,CAAU;IACjB,KAAK,CAAS;IAE/B,aAAa;IAEb,eAAe;IAEf;;;;OAIG;IACH,YAAmB,UAAuB,EAAE,MAAe;QACvD,IAAI,CAAC,WAAW,GAAG,UAAU,CAAC;QAC9B,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC;QACtB,IAAI,CAAC,KAAK,GAAG,WAAW,CAAC;IAC7B,CAAC;IAED,aAAa;IAEb,kBAAkB;IAElB;;;;;;OAMG;IACI,IAAI,CAAC,IAAY;QACpB,MAAM,QAAQ,GAAG,gBAAI,CAAC,OAAO,CAAC,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC;QAEhD,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,cAAc,IAAA,gBAAI,EAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;QAElD,MAAM,MAAM,GAAG,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE;YACxD,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,cAAc,IAAA,gBAAI,EAAC,gBAAI,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC;YAEhE,MAAM,IAAI,GAAG,IAAI,CAAC,WAAW,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;YAEhD,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,WAAW,IAAA,gBAAI,EAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,QAAQ,EAAE,CAAC,qBAAqB,IAAA,gBAAI,EAAC,IAAI,CAAC,WAAW,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC;YAE7H,OAAO;gBACH,IAAI,EAAE,IAAI;gBACV,OAAO,EAAE,GAAG,EAAE,CAAC,IAAI;aACtB,CAAC;QACN,CAAC,CAAC,CAAC;QAEH,OAAO,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,mCAAgB,CAAC;YAC7C,IAAI,EAAE,2BAAY,CAAC,IAAI;YACvB,OAAO,EAAE,IAAI,CAAC,OAAO;YACrB,MAAM,EAAE,IAAI,CAAC,WAAW,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC;YAC7C,IAAI,EAAE,IAAI,CAAC,WAAW,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC;YAC7C,IAAI,EAAE,IAAI,CAAC,IAAI;SAClB,CAAC,CAAC,CAAC;IACR,CAAC;CAIJ;AA/DD,gDA+DC"}
@@ -0,0 +1,28 @@
1
+ import type { IScannerAdapter } from './Interfaces/IScannerAdapter';
2
+ import type { IResxResourceInfo } from '../../Models/Interfaces/IResxResourceInfo';
3
+ import { type IFileSystem, type ILogger } from '@breadstone-infrastructure/utilities';
4
+ /**
5
+ * The `ResxScannerAdapter` class is responsible for scanning .resx files.
6
+ *
7
+ * @public
8
+ */
9
+ export declare class ResxScannerAdapter implements IScannerAdapter {
10
+ private readonly _fileSystem;
11
+ private readonly _logger;
12
+ private readonly _glob;
13
+ /**
14
+ * Constructs a new instance of the `ResxScannerAdapter` class.
15
+ *
16
+ * @public
17
+ */
18
+ constructor(fileSystem: IFileSystem, logger: ILogger);
19
+ /**
20
+ * Scans the specified path for .resx files.
21
+ *
22
+ * @public
23
+ * @param path - The path to scan.
24
+ * @returns The resource information.
25
+ */
26
+ scan(path: string): Array<IResxResourceInfo>;
27
+ }
28
+ //# sourceMappingURL=ResxScannerAdapter.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ResxScannerAdapter.d.ts","sourceRoot":"","sources":["../../../../src/Resources/Scanners/Adapter/ResxScannerAdapter.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,8BAA8B,CAAC;AACpE,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,2CAA2C,CAAC;AACnF,OAAO,EAAoB,KAAK,WAAW,EAAE,KAAK,OAAO,EAAE,MAAM,sCAAsC,CAAC;AAMxG;;;;GAIG;AACH,qBAAa,kBAAmB,YAAW,eAAe;IAItD,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAc;IAC1C,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAU;IAClC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAS;IAM/B;;;;OAIG;gBACgB,UAAU,EAAE,WAAW,EAAE,MAAM,EAAE,OAAO;IAU3D;;;;;;OAMG;IACI,IAAI,CAAC,IAAI,EAAE,MAAM,GAAG,KAAK,CAAC,iBAAiB,CAAC;CA6BtD"}
@@ -0,0 +1,62 @@
1
+ "use strict";
2
+ // #region Imports
3
+ Object.defineProperty(exports, "__esModule", { value: true });
4
+ exports.ResxScannerAdapter = void 0;
5
+ const utilities_1 = require("@breadstone-infrastructure/utilities");
6
+ const ResxResourceInfo_1 = require("../../Models/ResxResourceInfo");
7
+ const ResourceType_1 = require("../../Models/Interfaces/ResourceType");
8
+ // #endregion
9
+ /**
10
+ * The `ResxScannerAdapter` class is responsible for scanning .resx files.
11
+ *
12
+ * @public
13
+ */
14
+ class ResxScannerAdapter {
15
+ // #region Fields
16
+ _fileSystem;
17
+ _logger;
18
+ _glob;
19
+ // #endregion
20
+ // #region Ctor
21
+ /**
22
+ * Constructs a new instance of the `ResxScannerAdapter` class.
23
+ *
24
+ * @public
25
+ */
26
+ constructor(fileSystem, logger) {
27
+ this._fileSystem = fileSystem;
28
+ this._logger = logger;
29
+ this._glob = '**/*.resx';
30
+ }
31
+ // #endregion
32
+ // #region Methods
33
+ /**
34
+ * Scans the specified path for .resx files.
35
+ *
36
+ * @public
37
+ * @param path - The path to scan.
38
+ * @returns The resource information.
39
+ */
40
+ scan(path) {
41
+ const globPath = utilities_1.Path.combine(path, this._glob);
42
+ this._logger.log(` Scanning ${(0, utilities_1.gray)(globPath)}`);
43
+ const scanns = this._fileSystem.glob(globPath).map((file) => {
44
+ this._logger.log(` Scanning ${(0, utilities_1.gray)(utilities_1.Path.getFileName(file))}`);
45
+ const resx = this._fileSystem.readAllResx(file);
46
+ this._logger.log(` Found ${(0, utilities_1.bold)(resx.length.toString())} keys in language ${(0, utilities_1.bold)(this._fileSystem.getLocale(file))}`);
47
+ return {
48
+ file: file,
49
+ content: () => resx
50
+ };
51
+ });
52
+ return scanns.map((scan) => new ResxResourceInfo_1.ResxResourceInfo({
53
+ type: ResourceType_1.ResourceType.Resx,
54
+ content: scan.content,
55
+ locale: this._fileSystem.getLocale(scan.file),
56
+ name: this._fileSystem.getFileName(scan.file),
57
+ path: scan.file
58
+ }));
59
+ }
60
+ }
61
+ exports.ResxScannerAdapter = ResxScannerAdapter;
62
+ //# sourceMappingURL=ResxScannerAdapter.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ResxScannerAdapter.js","sourceRoot":"","sources":["../../../../src/Resources/Scanners/Adapter/ResxScannerAdapter.ts"],"names":[],"mappings":";AAAA,kBAAkB;;;AAIlB,oEAAwG;AACxG,oEAAiE;AACjE,uEAAoE;AAEpE,aAAa;AAEb;;;;GAIG;AACH,MAAa,kBAAkB;IAE3B,iBAAiB;IAEA,WAAW,CAAc;IACzB,OAAO,CAAU;IACjB,KAAK,CAAS;IAE/B,aAAa;IAEb,eAAe;IAEf;;;;OAIG;IACH,YAAmB,UAAuB,EAAE,MAAe;QACvD,IAAI,CAAC,WAAW,GAAG,UAAU,CAAC;QAC9B,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC;QACtB,IAAI,CAAC,KAAK,GAAG,WAAW,CAAC;IAC7B,CAAC;IAED,aAAa;IAEb,kBAAkB;IAElB;;;;;;OAMG;IACI,IAAI,CAAC,IAAY;QACpB,MAAM,QAAQ,GAAG,gBAAI,CAAC,OAAO,CAAC,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC;QAEhD,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,cAAc,IAAA,gBAAI,EAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;QAEjD,MAAM,MAAM,GAAG,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE;YACxD,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,cAAc,IAAA,gBAAI,EAAC,gBAAI,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC;YAE/D,MAAM,IAAI,GAAG,IAAI,CAAC,WAAW,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;YAEhD,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,WAAW,IAAA,gBAAI,EAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC,qBAAqB,IAAA,gBAAI,EAAC,IAAI,CAAC,WAAW,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC;YAEvH,OAAO;gBACH,IAAI,EAAE,IAAI;gBACV,OAAO,EAAE,GAAG,EAAE,CAAC,IAAI;aACtB,CAAC;QACN,CAAC,CAAC,CAAC;QAEH,OAAO,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,mCAAgB,CAAC;YAC7C,IAAI,EAAE,2BAAY,CAAC,IAAI;YACvB,OAAO,EAAE,IAAI,CAAC,OAAO;YACrB,MAAM,EAAE,IAAI,CAAC,WAAW,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC;YAC7C,IAAI,EAAE,IAAI,CAAC,WAAW,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC;YAC7C,IAAI,EAAE,IAAI,CAAC,IAAI;SAClB,CAAC,CAAC,CAAC;IACR,CAAC;CAIJ;AA/DD,gDA+DC"}
@@ -0,0 +1,32 @@
1
+ import type { IResourceInfo } from './../Models/Interfaces/IResourceInfo';
2
+ import { ResourceMode } from './../ResourceMode';
3
+ import { type IFileSystem, type ILogger } from '@breadstone-infrastructure/utilities';
4
+ /**
5
+ * The `ResourceProcessor` class is responsible for processing resources.
6
+ * It can be resolves json or resx files.
7
+ *
8
+ * @public
9
+ */
10
+ export declare class ResourceScanner {
11
+ private readonly _fileSystem;
12
+ private readonly _logger;
13
+ private readonly _adapters;
14
+ /**
15
+ * Creates a new instance of `ResourceProcessor`.
16
+ *
17
+ * @public
18
+ * @param logger - The logger interface.
19
+ * @param fileSystem - The file system interface.
20
+ */
21
+ constructor(logger: ILogger, fileSystem: IFileSystem);
22
+ /**
23
+ * Scans the specified path for resources.
24
+ *
25
+ * @public
26
+ * @param path - The path to scan.
27
+ * @param type - The type of resources to scan for.
28
+ * @returns The resource information.
29
+ */
30
+ scan(path: string, type: ResourceMode): Array<IResourceInfo>;
31
+ }
32
+ //# sourceMappingURL=ResourceScanner.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ResourceScanner.d.ts","sourceRoot":"","sources":["../../../src/Resources/Scanners/ResourceScanner.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,sCAAsC,CAAC;AAC1E,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAEjD,OAAO,EAAQ,KAAK,WAAW,EAAE,KAAK,OAAO,EAAsB,MAAM,sCAAsC,CAAC;AAIhH;;;;;GAKG;AACH,qBAAa,eAAe;IAIxB,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAc;IAC1C,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAU;IAClC,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAqC;IAM/D;;;;;;OAMG;gBACgB,MAAM,EAAE,OAAO,EAAE,UAAU,EAAE,WAAW;IAY3D;;;;;;;OAOG;IACI,IAAI,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,YAAY,GAAG,KAAK,CAAC,aAAa,CAAC;CAkBtE"}
@@ -0,0 +1,59 @@
1
+ "use strict";
2
+ // #region Imports
3
+ Object.defineProperty(exports, "__esModule", { value: true });
4
+ exports.ResourceScanner = void 0;
5
+ const JsonScannerAdapter_1 = require("./Adapter/JsonScannerAdapter");
6
+ const ResourceMode_1 = require("./../ResourceMode");
7
+ const ResxScannerAdapter_1 = require("./Adapter/ResxScannerAdapter");
8
+ const utilities_1 = require("@breadstone-infrastructure/utilities");
9
+ // #endregion
10
+ /**
11
+ * The `ResourceProcessor` class is responsible for processing resources.
12
+ * It can be resolves json or resx files.
13
+ *
14
+ * @public
15
+ */
16
+ class ResourceScanner {
17
+ // #region Fields
18
+ _fileSystem;
19
+ _logger;
20
+ _adapters;
21
+ // #endregion
22
+ // #region Ctor
23
+ /**
24
+ * Creates a new instance of `ResourceProcessor`.
25
+ *
26
+ * @public
27
+ * @param logger - The logger interface.
28
+ * @param fileSystem - The file system interface.
29
+ */
30
+ constructor(logger, fileSystem) {
31
+ this._fileSystem = fileSystem;
32
+ this._logger = logger;
33
+ this._adapters = new Map()
34
+ .set(ResourceMode_1.ResourceMode.Json, new JsonScannerAdapter_1.JsonScannerAdapter(this._fileSystem, this._logger))
35
+ .set(ResourceMode_1.ResourceMode.Resx, new ResxScannerAdapter_1.ResxScannerAdapter(this._fileSystem, this._logger));
36
+ }
37
+ // #endregion
38
+ // #region Methods
39
+ /**
40
+ * Scans the specified path for resources.
41
+ *
42
+ * @public
43
+ * @param path - The path to scan.
44
+ * @param type - The type of resources to scan for.
45
+ * @returns The resource information.
46
+ */
47
+ scan(path, type) {
48
+ this._logger.log((0, utilities_1.t) `${(0, utilities_1.magenta)(`Scanning for ${(0, utilities_1.bold)(type)} resources...`)}`);
49
+ const adapter = this._adapters.get(type);
50
+ if (!adapter) {
51
+ throw new Error('No adapter found for the specified mode.');
52
+ }
53
+ const result = adapter.scan(path);
54
+ this._logger.log((0, utilities_1.t) `${(0, utilities_1.magenta)(`Scanning complete.${result.length === 0 ? (0, utilities_1.yellow)(' No resources found.') : ''}`)}`);
55
+ return result;
56
+ }
57
+ }
58
+ exports.ResourceScanner = ResourceScanner;
59
+ //# sourceMappingURL=ResourceScanner.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ResourceScanner.js","sourceRoot":"","sources":["../../../src/Resources/Scanners/ResourceScanner.ts"],"names":[],"mappings":";AAAA,kBAAkB;;;AAGlB,qEAAkE;AAElE,oDAAiD;AACjD,qEAAkE;AAClE,oEAAgH;AAEhH,aAAa;AAEb;;;;;GAKG;AACH,MAAa,eAAe;IAExB,iBAAiB;IAEA,WAAW,CAAc;IACzB,OAAO,CAAU;IACjB,SAAS,CAAqC;IAE/D,aAAa;IAEb,eAAe;IAEf;;;;;;OAMG;IACH,YAAmB,MAAe,EAAE,UAAuB;QACvD,IAAI,CAAC,WAAW,GAAG,UAAU,CAAC;QAC9B,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC;QACtB,IAAI,CAAC,SAAS,GAAG,IAAI,GAAG,EAAiC;aACpD,GAAG,CAAC,2BAAY,CAAC,IAAI,EAAE,IAAI,uCAAkB,CAAC,IAAI,CAAC,WAAW,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;aAC9E,GAAG,CAAC,2BAAY,CAAC,IAAI,EAAE,IAAI,uCAAkB,CAAC,IAAI,CAAC,WAAW,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC;IACxF,CAAC;IAED,aAAa;IAEb,kBAAkB;IAElB;;;;;;;OAOG;IACI,IAAI,CAAC,IAAY,EAAE,IAAkB;QACxC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,IAAA,aAAC,EAAA,GAAG,IAAA,mBAAO,EAAC,gBAAgB,IAAA,gBAAI,EAAC,IAAI,CAAC,eAAe,CAAC,EAAE,CAAC,CAAC;QAE3E,MAAM,OAAO,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QAEzC,IAAI,CAAC,OAAO,EAAE,CAAC;YACX,MAAM,IAAI,KAAK,CAAC,0CAA0C,CAAC,CAAC;QAChE,CAAC;QAED,MAAM,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAElC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,IAAA,aAAC,EAAA,GAAG,IAAA,mBAAO,EAAC,qBAAqB,MAAM,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,IAAA,kBAAM,EAAC,sBAAsB,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC;QAElH,OAAO,MAAM,CAAC;IAClB,CAAC;CAIJ;AAzDD,0CAyDC"}
@@ -0,0 +1,46 @@
1
+ import { type IFileSystem, type ILogger } from '@breadstone-infrastructure/utilities';
2
+ import type { IResourceInfo } from '../Models/Interfaces/IResourceInfo';
3
+ /**
4
+ * Interface for the options required to sort resources.
5
+ */
6
+ export interface IResourceSorterOptions {
7
+ /**
8
+ * Whether to perform a dry run.
9
+ */
10
+ dryRun: boolean;
11
+ /**
12
+ * The order to sort resources.
13
+ */
14
+ order: 'asc' | 'desc';
15
+ }
16
+ /**
17
+ * The `ResourceSorter` class is responsible for sorting resources.
18
+ */
19
+ export declare class ResourceSorter {
20
+ private readonly _logger;
21
+ private readonly _fileSystem;
22
+ private readonly _options;
23
+ /**
24
+ * Constructs a new ResourceSorter.
25
+ *
26
+ * @public
27
+ * @param logger - The logger interface.
28
+ * @param fileSystem - The file system interface.
29
+ * @param options - The options for sorting resources.
30
+ */
31
+ constructor(logger: ILogger, fileSystem: IFileSystem, options: IResourceSorterOptions);
32
+ /**
33
+ * Sorts resource keys in .resx files based on the provided options.
34
+ * @param resources - The resources to sort.
35
+ * @returns The sorted resources.
36
+ */
37
+ sort(resources: Array<IResourceInfo>): Array<IResourceInfo>;
38
+ /**
39
+ * Sorts a single resource and collects sorting information.
40
+ *
41
+ * @param resource - The resource to sort.
42
+ * @returns The sorted resource and sorting details.
43
+ */
44
+ private sortResource;
45
+ }
46
+ //# sourceMappingURL=ResourceSorter.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ResourceSorter.d.ts","sourceRoot":"","sources":["../../../src/Resources/Sorting/ResourceSorter.ts"],"names":[],"mappings":"AAGA,OAAO,EAAc,KAAK,WAAW,EAAE,KAAK,OAAO,EAAc,MAAM,sCAAsC,CAAC;AAC9G,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,oCAAoC,CAAC;AAIxE;;GAEG;AACH,MAAM,WAAW,sBAAsB;IAEnC;;MAEE;IACF,MAAM,EAAE,OAAO,CAAC;IAEhB;;OAEG;IACH,KAAK,EAAE,KAAK,GAAG,MAAM,CAAC;CAEzB;AAED;;GAEG;AACH,qBAAa,cAAc;IAIvB,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAU;IAClC,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAc;IAC1C,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAyB;IAMlD;;;;;;;OAOG;gBACgB,MAAM,EAAE,OAAO,EAAE,UAAU,EAAE,WAAW,EAAE,OAAO,EAAE,sBAAsB;IAU5F;;;;OAIG;IACI,IAAI,CAAC,SAAS,EAAE,KAAK,CAAC,aAAa,CAAC,GAAG,KAAK,CAAC,aAAa,CAAC;IA8BlE;;;;;OAKG;IACH,OAAO,CAAC,YAAY;CAyBvB"}
@@ -0,0 +1,82 @@
1
+ "use strict";
2
+ // #region Imports
3
+ Object.defineProperty(exports, "__esModule", { value: true });
4
+ exports.ResourceSorter = void 0;
5
+ const utilities_1 = require("@breadstone-infrastructure/utilities");
6
+ /**
7
+ * The `ResourceSorter` class is responsible for sorting resources.
8
+ */
9
+ class ResourceSorter {
10
+ // #region Fields
11
+ _logger;
12
+ _fileSystem;
13
+ _options;
14
+ // #endregion
15
+ // #region Ctor
16
+ /**
17
+ * Constructs a new ResourceSorter.
18
+ *
19
+ * @public
20
+ * @param logger - The logger interface.
21
+ * @param fileSystem - The file system interface.
22
+ * @param options - The options for sorting resources.
23
+ */
24
+ constructor(logger, fileSystem, options) {
25
+ this._logger = logger;
26
+ this._fileSystem = fileSystem;
27
+ this._options = options;
28
+ }
29
+ // #endregion
30
+ // #region Methods
31
+ /**
32
+ * Sorts resource keys in .resx files based on the provided options.
33
+ * @param resources - The resources to sort.
34
+ * @returns The sorted resources.
35
+ */
36
+ sort(resources) {
37
+ this._logger.log((0, utilities_1.t) `${(0, utilities_1.magenta)('Sorting resources keys...')}`);
38
+ const sortedResources = new Array();
39
+ for (const resource of resources) {
40
+ this._logger.info(` Sorting ${(0, utilities_1.gray)(resource.name)}`);
41
+ const sortInfo = this.sortResource(resource);
42
+ sortedResources.push(sortInfo.sortedResource);
43
+ if (sortInfo.detail.keysSorted > 0) {
44
+ this._logger.info((0, utilities_1.t) ` ${(0, utilities_1.bold)(resource.name)}: ${sortInfo.detail.keysSorted} key(s) were sorted.`);
45
+ }
46
+ else {
47
+ this._logger.info((0, utilities_1.t) ` ${(0, utilities_1.bold)(resource.name)}: No keys needed sorting.`);
48
+ }
49
+ if (!this._options.dryRun && sortInfo.detail.keysSorted > 0) {
50
+ this._fileSystem.writeAllText(sortInfo.sortedResource.path, sortInfo.sortedResource.toString());
51
+ this._logger.info(` ${resource.name} ${(0, utilities_1.bold)((0, utilities_1.gray)('Updated'))}`);
52
+ }
53
+ else if (this._options.dryRun) {
54
+ this._logger.log((0, utilities_1.t) `${(0, utilities_1.gray)(' Dry run enabled, skipping...')}`);
55
+ }
56
+ }
57
+ this._logger.log((0, utilities_1.t) `${(0, utilities_1.magenta)('Resource keys sorted.')}`);
58
+ return sortedResources;
59
+ }
60
+ /**
61
+ * Sorts a single resource and collects sorting information.
62
+ *
63
+ * @param resource - The resource to sort.
64
+ * @returns The sorted resource and sorting details.
65
+ */
66
+ sortResource(resource) {
67
+ const clonedResource = resource.clone();
68
+ const keysBeforeSort = clonedResource.keys();
69
+ const sortedResource = clonedResource.sort(this._options.order);
70
+ const keysAfterSort = sortedResource.keys();
71
+ const sortedKeysCount = keysBeforeSort.filter((key, index) => key !== keysAfterSort[index]).length;
72
+ return {
73
+ sortedResource: sortedResource,
74
+ detail: {
75
+ resource: resource.name,
76
+ keysSorted: sortedKeysCount
77
+ }
78
+ };
79
+ }
80
+ }
81
+ exports.ResourceSorter = ResourceSorter;
82
+ //# sourceMappingURL=ResourceSorter.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ResourceSorter.js","sourceRoot":"","sources":["../../../src/Resources/Sorting/ResourceSorter.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,20 @@
1
+ import type { IResourceInfo } from '../../../Models/Interfaces/IResourceInfo';
2
+ import type { IResourceModel } from '../../../Models/Interfaces/IResourceModel';
3
+ import type { IResourceTransformerAdapter } from '../Interfaces/IResourceTransformerAdapter';
4
+ /**
5
+ * Abstract base class for resource transformations.
6
+ *
7
+ * @public
8
+ * @abstract
9
+ */
10
+ export declare abstract class BaseResourceTransformerAdapter<T extends IResourceInfo> implements IResourceTransformerAdapter<T> {
11
+ /**
12
+ * Transforms the given resource into an array of transform models.
13
+ *
14
+ * @public
15
+ * @param resource - The resource to transform.
16
+ * @returns The transformed resource.
17
+ */
18
+ abstract transform(resource: T): Array<IResourceModel>;
19
+ }
20
+ //# sourceMappingURL=BaseResourceTransformerAdapter.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"BaseResourceTransformerAdapter.d.ts","sourceRoot":"","sources":["../../../../../src/Resources/Transformers/Adapters/Abstracts/BaseResourceTransformerAdapter.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,0CAA0C,CAAC;AAC9E,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,2CAA2C,CAAC;AAChF,OAAO,KAAK,EAAE,2BAA2B,EAAE,MAAM,2CAA2C,CAAC;AAI7F;;;;;GAKG;AACH,8BAAsB,8BAA8B,CAAC,CAAC,SAAS,aAAa,CAAE,YAAW,2BAA2B,CAAC,CAAC,CAAC;IAInH;;;;;;OAMG;aACa,SAAS,CAAC,QAAQ,EAAE,CAAC,GAAG,KAAK,CAAC,cAAc,CAAC;CAIhE"}
@@ -0,0 +1,15 @@
1
+ "use strict";
2
+ // #region Imports
3
+ Object.defineProperty(exports, "__esModule", { value: true });
4
+ exports.BaseResourceTransformerAdapter = void 0;
5
+ // #endregion
6
+ /**
7
+ * Abstract base class for resource transformations.
8
+ *
9
+ * @public
10
+ * @abstract
11
+ */
12
+ class BaseResourceTransformerAdapter {
13
+ }
14
+ exports.BaseResourceTransformerAdapter = BaseResourceTransformerAdapter;
15
+ //# sourceMappingURL=BaseResourceTransformerAdapter.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"BaseResourceTransformerAdapter.js","sourceRoot":"","sources":["../../../../../src/Resources/Transformers/Adapters/Abstracts/BaseResourceTransformerAdapter.ts"],"names":[],"mappings":";AAAA,kBAAkB;;;AAMlB,aAAa;AAEb;;;;;GAKG;AACH,MAAsB,8BAA8B;CAenD;AAfD,wEAeC"}
@@ -0,0 +1,11 @@
1
+ import type { IResourceInfo } from '../../../Models/Interfaces/IResourceInfo';
2
+ import type { IResourceModel } from '../../../Models/Interfaces/IResourceModel';
3
+ /**
4
+ * Interface for resource transformers.
5
+ *
6
+ * @public
7
+ */
8
+ export interface IResourceTransformerAdapter<T extends IResourceInfo> {
9
+ transform(resource: T): Array<IResourceModel>;
10
+ }
11
+ //# sourceMappingURL=IResourceTransformerAdapter.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"IResourceTransformerAdapter.d.ts","sourceRoot":"","sources":["../../../../../src/Resources/Transformers/Adapters/Interfaces/IResourceTransformerAdapter.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,0CAA0C,CAAC;AAC9E,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,2CAA2C,CAAC;AAIhF;;;;GAIG;AACH,MAAM,WAAW,2BAA2B,CAAC,CAAC,SAAS,aAAa;IAIhE,SAAS,CAAC,QAAQ,EAAE,CAAC,GAAG,KAAK,CAAC,cAAc,CAAC,CAAC;CAIjD"}
@@ -0,0 +1,4 @@
1
+ "use strict";
2
+ // #region Imports
3
+ Object.defineProperty(exports, "__esModule", { value: true });
4
+ //# sourceMappingURL=IResourceTransformerAdapter.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"IResourceTransformerAdapter.js","sourceRoot":"","sources":["../../../../../src/Resources/Transformers/Adapters/Interfaces/IResourceTransformerAdapter.ts"],"names":[],"mappings":";AAAA,kBAAkB"}