@breadstone-tools/localizator-core 0.0.85 → 0.0.86
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/CHANGELOG.md +26 -0
- package/Index.d.ts +11 -7
- package/Index.d.ts.map +1 -1
- package/Index.js +17 -13
- package/Index.js.map +1 -1
- package/Resources/Analyzers/ResourceAnalyzer.d.ts +33 -24
- package/Resources/Analyzers/ResourceAnalyzer.d.ts.map +1 -1
- package/Resources/Analyzers/ResourceAnalyzer.js +60 -57
- package/Resources/Analyzers/ResourceAnalyzer.js.map +1 -1
- package/Resources/Analyzers/Tasks/DuplicateKeysRule.d.ts +31 -0
- package/Resources/Analyzers/Tasks/{DuplicateKeysTask.d.ts.map → DuplicateKeysRule.d.ts.map} +1 -1
- package/Resources/Analyzers/Tasks/{DuplicateKeysTask.js → DuplicateKeysRule.js} +6 -6
- package/Resources/Analyzers/Tasks/{DuplicateKeysTask.js.map → DuplicateKeysRule.js.map} +1 -1
- package/Resources/Analyzers/Tasks/DuplicateValuesRule.d.ts +40 -0
- package/Resources/Analyzers/Tasks/DuplicateValuesRule.d.ts.map +1 -0
- package/Resources/Analyzers/Tasks/DuplicateValuesRule.js +49 -0
- package/Resources/Analyzers/Tasks/DuplicateValuesRule.js.map +1 -0
- package/Resources/Analyzers/Tasks/EmptyValuesRule.d.ts +31 -0
- package/Resources/Analyzers/Tasks/{EmptyValuesTask.d.ts.map → EmptyValuesRule.d.ts.map} +1 -1
- package/Resources/Analyzers/Tasks/{EmptyValuesTask.js → EmptyValuesRule.js} +6 -6
- package/Resources/Analyzers/Tasks/{EmptyValuesTask.js.map → EmptyValuesRule.js.map} +1 -1
- package/Resources/Analyzers/Tasks/Interfaces/{IAnalyzerTask.d.ts → IAnalyzerRule.d.ts} +9 -9
- package/Resources/Analyzers/Tasks/Interfaces/{IAnalyzerTask.d.ts.map → IAnalyzerRule.d.ts.map} +1 -1
- package/Resources/Analyzers/Tasks/Interfaces/{IAnalyzerTask.js → IAnalyzerRule.js} +1 -1
- package/Resources/Analyzers/Tasks/Interfaces/IAnalyzerRule.js.map +1 -0
- package/Resources/Analyzers/Tasks/KeyConsistencyRule.d.ts +35 -0
- package/Resources/Analyzers/Tasks/{KeyConsistencyTask.d.ts.map → KeyConsistencyRule.d.ts.map} +1 -1
- package/Resources/Analyzers/Tasks/{KeyConsistencyTask.js → KeyConsistencyRule.js} +6 -6
- package/Resources/Analyzers/Tasks/{KeyConsistencyTask.js.map → KeyConsistencyRule.js.map} +1 -1
- package/Resources/Analyzers/Tasks/MissingTranslationsRule.d.ts +31 -0
- package/Resources/Analyzers/Tasks/{MissingTranslationsTask.d.ts.map → MissingTranslationsRule.d.ts.map} +1 -1
- package/Resources/Analyzers/Tasks/{MissingTranslationsTask.js → MissingTranslationsRule.js} +6 -6
- package/Resources/Analyzers/Tasks/{MissingTranslationsTask.js.map → MissingTranslationsRule.js.map} +1 -1
- package/Resources/Analyzers/Tasks/MultipleKeyUsageRule.d.ts +31 -0
- package/Resources/Analyzers/Tasks/{MultipleKeyUsageTask.d.ts.map → MultipleKeyUsageRule.d.ts.map} +1 -1
- package/Resources/Analyzers/Tasks/{MultipleKeyUsageTask.js → MultipleKeyUsageRule.js} +6 -6
- package/Resources/Analyzers/Tasks/{MultipleKeyUsageTask.js.map → MultipleKeyUsageRule.js.map} +1 -1
- package/Resources/Analyzers/Tasks/UnusedKeysRule.d.ts +31 -0
- package/Resources/Analyzers/Tasks/{UnusedKeysTask.d.ts.map → UnusedKeysRule.d.ts.map} +1 -1
- package/Resources/Analyzers/Tasks/{UnusedKeysTask.js → UnusedKeysRule.js} +6 -6
- package/Resources/Analyzers/Tasks/{UnusedKeysTask.js.map → UnusedKeysRule.js.map} +1 -1
- package/Resources/Models/Interfaces/IPoResourceInfo.d.ts +12 -0
- package/Resources/Models/Interfaces/IPoResourceInfo.d.ts.map +1 -0
- package/Resources/Models/Interfaces/IPoResourceInfo.js +4 -0
- package/Resources/Models/Interfaces/IPoResourceInfo.js.map +1 -0
- package/Resources/Models/Interfaces/ResourceType.d.ts +4 -0
- package/Resources/Models/Interfaces/ResourceType.d.ts.map +1 -1
- package/Resources/Models/Interfaces/ResourceType.js +8 -1
- package/Resources/Models/Interfaces/ResourceType.js.map +1 -1
- package/Resources/Models/PoResourceInfo.d.ts +110 -0
- package/Resources/Models/PoResourceInfo.d.ts.map +1 -0
- package/Resources/Models/PoResourceInfo.js +190 -0
- package/Resources/Models/PoResourceInfo.js.map +1 -0
- package/Resources/PoFileParser.d.ts +48 -0
- package/Resources/PoFileParser.d.ts.map +1 -0
- package/Resources/PoFileParser.js +111 -0
- package/Resources/PoFileParser.js.map +1 -0
- package/Resources/PoFileReader.d.ts +25 -0
- package/Resources/PoFileReader.d.ts.map +1 -0
- package/Resources/PoFileReader.js +43 -0
- package/Resources/PoFileReader.js.map +1 -0
- package/Resources/Readers/Adapter/PoResourceReaderAdapter.d.ts +44 -0
- package/Resources/Readers/Adapter/PoResourceReaderAdapter.d.ts.map +1 -0
- package/Resources/Readers/Adapter/PoResourceReaderAdapter.js +118 -0
- package/Resources/Readers/Adapter/PoResourceReaderAdapter.js.map +1 -0
- package/Resources/Readers/Adapter/ResxResourceReaderAdapter.d.ts +2 -2
- package/Resources/Readers/Adapter/ResxResourceReaderAdapter.js +2 -2
- package/Resources/Readers/ResourceReader.d.ts.map +1 -1
- package/Resources/Readers/ResourceReader.js +3 -1
- package/Resources/Readers/ResourceReader.js.map +1 -1
- package/Resources/ResourceMode.d.ts +4 -0
- package/Resources/ResourceMode.d.ts.map +1 -1
- package/Resources/ResourceMode.js +5 -1
- package/Resources/ResourceMode.js.map +1 -1
- package/Resources/ResourceProcessor.d.ts +3 -3
- package/Resources/ResourceProcessor.js +2 -2
- package/Resources/Transformers/Adapters/JsonResourceTransformerAdapter.d.ts +1 -8
- package/Resources/Transformers/Adapters/JsonResourceTransformerAdapter.d.ts.map +1 -1
- package/Resources/Transformers/Adapters/JsonResourceTransformerAdapter.js +1 -22
- package/Resources/Transformers/Adapters/JsonResourceTransformerAdapter.js.map +1 -1
- package/Resources/Transformers/Adapters/PoResourceTransformerAdapter.d.ts +19 -0
- package/Resources/Transformers/Adapters/PoResourceTransformerAdapter.d.ts.map +1 -0
- package/Resources/Transformers/Adapters/PoResourceTransformerAdapter.js +30 -0
- package/Resources/Transformers/Adapters/PoResourceTransformerAdapter.js.map +1 -0
- package/Resources/Transformers/Adapters/ResxResourceTransformerAdapter.d.ts +1 -1
- package/Resources/Transformers/Adapters/ResxResourceTransformerAdapter.js +1 -1
- package/Resources/Transformers/ResourceTransformer.d.ts.map +1 -1
- package/Resources/Transformers/ResourceTransformer.js +14 -5
- package/Resources/Transformers/ResourceTransformer.js.map +1 -1
- package/Resources/Transformers/Serializers/JsonResourceSerializer.d.ts.map +1 -1
- package/Resources/Transformers/Serializers/JsonResourceSerializer.js +13 -6
- package/Resources/Transformers/Serializers/JsonResourceSerializer.js.map +1 -1
- package/Resources/Transformers/Serializers/PoResourceSerializer.d.ts +20 -0
- package/Resources/Transformers/Serializers/PoResourceSerializer.d.ts.map +1 -0
- package/Resources/Transformers/Serializers/PoResourceSerializer.js +40 -0
- package/Resources/Transformers/Serializers/PoResourceSerializer.js.map +1 -0
- package/package.json +2 -2
- package/Resources/Analyzers/Tasks/DuplicateKeysTask.d.ts +0 -31
- package/Resources/Analyzers/Tasks/EmptyValuesTask.d.ts +0 -31
- package/Resources/Analyzers/Tasks/Interfaces/IAnalyzerTask.js.map +0 -1
- package/Resources/Analyzers/Tasks/KeyConsistencyTask.d.ts +0 -35
- package/Resources/Analyzers/Tasks/MissingTranslationsTask.d.ts +0 -31
- package/Resources/Analyzers/Tasks/MultipleKeyUsageTask.d.ts +0 -31
- package/Resources/Analyzers/Tasks/UnusedKeysTask.d.ts +0 -31
package/CHANGELOG.md
CHANGED
|
@@ -1,3 +1,29 @@
|
|
|
1
|
+
## 0.0.85 (2025-08-01)
|
|
2
|
+
|
|
3
|
+
This was a version bump only for localizator-core to align it with other projects, there were no code changes.
|
|
4
|
+
|
|
5
|
+
## 0.0.84 (2025-08-01)
|
|
6
|
+
|
|
7
|
+
This was a version bump only for localizator-core to align it with other projects, there were no code changes.
|
|
8
|
+
|
|
9
|
+
## 0.0.83 (2025-08-01)
|
|
10
|
+
|
|
11
|
+
### 🚀 Features
|
|
12
|
+
|
|
13
|
+
- update resourceRoot parameter to accept multiple directories across configurations ([c934f7f499](https://github.com/RueDeRennes/mosaik/commit/c934f7f499))
|
|
14
|
+
|
|
15
|
+
## 0.0.82 (2025-08-01)
|
|
16
|
+
|
|
17
|
+
### 🚀 Features
|
|
18
|
+
|
|
19
|
+
- **translations): add Japanese and Russian translations for various application texts fix(localizator): improve logging condition to only log when there are changes refactor(utils:** update example comments for clarity in resource key validation ([45b365ec44](https://github.com/RueDeRennes/mosaik/commit/45b365ec44))
|
|
20
|
+
- update release version to 0.0.81 in package.json ([6e01a49d06](https://github.com/RueDeRennes/mosaik/commit/6e01a49d06))
|
|
21
|
+
|
|
22
|
+
### 🩹 Fixes
|
|
23
|
+
|
|
24
|
+
- **release): update version number from 0.0.81 to 0.0.82 in release script fix(events:** remove redundant detailType from select event in Meta.g.json ([a330ca39c9](https://github.com/RueDeRennes/mosaik/commit/a330ca39c9))
|
|
25
|
+
- **dependencies:** downgrade TypeScript version from ^5.9.2 to ^5.8.3 across multiple packages ([c58367f25b](https://github.com/RueDeRennes/mosaik/commit/c58367f25b))
|
|
26
|
+
|
|
1
27
|
## 0.0.81 (2025-07-30)
|
|
2
28
|
|
|
3
29
|
### 🚀 Features
|
package/Index.d.ts
CHANGED
|
@@ -35,8 +35,10 @@ export { JsonResourceTransformerAdapter } from './Resources/Transformers/Adapter
|
|
|
35
35
|
export { ResxResourceTransformerAdapter } from './Resources/Transformers/Adapters/ResxResourceTransformerAdapter.js';
|
|
36
36
|
export { ResxResourceInfo } from './Resources/Models/ResxResourceInfo.js';
|
|
37
37
|
export { JsonResourceInfo } from './Resources/Models/JsonResourceInfo.js';
|
|
38
|
+
export { PoResourceInfo } from './Resources/Models/PoResourceInfo.js';
|
|
38
39
|
export { TypeScriptResourceInfo } from './Resources/Models/TypeScriptResourceInfo.js';
|
|
39
40
|
export type { IJsonResourceInfo } from './Resources/Models/Interfaces/IJsonResourceInfo.js';
|
|
41
|
+
export type { IPoResourceInfo } from './Resources/Models/Interfaces/IPoResourceInfo.js';
|
|
40
42
|
export type { ITypeScriptResourceInfo } from './Resources/Models/Interfaces/ITypeScriptResourceInfo.js';
|
|
41
43
|
export type { IResourceInfo, ResourceContentFn } from './Resources/Models/Interfaces/IResourceInfo.js';
|
|
42
44
|
export type { IResxResourceInfo } from './Resources/Models/Interfaces/IResxResourceInfo.js';
|
|
@@ -46,12 +48,14 @@ export { ResxResourceReaderAdapter } from './Resources/Readers/Adapter/ResxResou
|
|
|
46
48
|
export { JsonResourceReaderAdapter } from './Resources/Readers/Adapter/JsonResourceReaderAdapter.js';
|
|
47
49
|
export type { IResourceReaderAdapter } from './Resources/Readers/Adapter/Interfaces/IResourceReaderAdapter.js';
|
|
48
50
|
export { ResourceAnalyzer } from './Resources/Analyzers/ResourceAnalyzer.js';
|
|
49
|
-
export type {
|
|
50
|
-
export {
|
|
51
|
-
export {
|
|
52
|
-
export {
|
|
53
|
-
export {
|
|
54
|
-
export {
|
|
55
|
-
export {
|
|
51
|
+
export type { IAnalyzerRule, IAnalyzerRuleExecutionContext, IAnalyzerRuleResult } from './Resources/Analyzers/Tasks/Interfaces/IAnalyzerRule.js';
|
|
52
|
+
export { DuplicateKeysRule, type IDuplicateKeysRuleData } from './Resources/Analyzers/Tasks/DuplicateKeysRule.js';
|
|
53
|
+
export { EmptyValuesRule, type IEmptyValuesRuleResultData } from './Resources/Analyzers/Tasks/EmptyValuesRule.js';
|
|
54
|
+
export { KeyConsistencyRule, type IKeyConsistencyRuleResultData } from './Resources/Analyzers/Tasks/KeyConsistencyRule.js';
|
|
55
|
+
export { MissingTranslationsRule, type IMissingTranslationsRuleResultData } from './Resources/Analyzers/Tasks/MissingTranslationsRule.js';
|
|
56
|
+
export { UnusedKeysRule, type IUnusedKeysRuleResultData } from './Resources/Analyzers/Tasks/UnusedKeysRule.js';
|
|
57
|
+
export { MultipleKeyUsageRule, type IMultipleKeyUsageRuleResultData } from './Resources/Analyzers/Tasks/MultipleKeyUsageRule.js';
|
|
58
|
+
export type { IDuplicateValuesRuleData } from './Resources/Analyzers/Tasks/DuplicateValuesRule.js';
|
|
59
|
+
export { DuplicateValuesRule } from './Resources/Analyzers/Tasks/DuplicateValuesRule.js';
|
|
56
60
|
export { ResourceProcessor } from './Resources/ResourceProcessor.js';
|
|
57
61
|
//# sourceMappingURL=Index.d.ts.map
|
package/Index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Index.d.ts","sourceRoot":"","sources":["../src/Index.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"Index.d.ts","sourceRoot":"","sources":["../src/Index.ts"],"names":[],"mappings":"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"}
|
package/Index.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.ResourceProcessor = exports.
|
|
3
|
+
exports.ResourceProcessor = exports.DuplicateValuesRule = exports.MultipleKeyUsageRule = exports.UnusedKeysRule = exports.MissingTranslationsRule = exports.KeyConsistencyRule = exports.EmptyValuesRule = exports.DuplicateKeysRule = exports.ResourceAnalyzer = exports.JsonResourceReaderAdapter = exports.ResxResourceReaderAdapter = exports.resourceTypeFormFile = exports.ResourceType = exports.TypeScriptResourceInfo = exports.PoResourceInfo = exports.JsonResourceInfo = exports.ResxResourceInfo = exports.ResxResourceTransformerAdapter = exports.JsonResourceTransformerAdapter = exports.TypescriptResourceSerializer = exports.ResxResourceSerializer = exports.JsonResourceSerializer = exports.ResourceTransformer = exports.ResourceSorter = exports.ResourceReader = exports.ResourceMode = exports.ResourceFactory = exports.LocalizationProcessor = exports.Presets = exports.VuePreset = exports.StencilPreset = exports.ReactPreset = exports.LitPreset = exports.AngularPreset = exports.VueDetector = exports.TypeScriptDetector = exports.TSXDetector = exports.JavaScriptDetector = exports.JSXDetector = exports.AngularHTMLDetector = exports.BaseDetector = exports.ResxFormatter = exports.JsonFormatter = exports.Formatters = void 0;
|
|
4
4
|
var Formatters_js_1 = require("./Formatters/Formatters.js");
|
|
5
5
|
Object.defineProperty(exports, "Formatters", { enumerable: true, get: function () { return Formatters_js_1.Formatters; } });
|
|
6
6
|
var JSONFormatter_js_1 = require("./Formatters/JSONFormatter.js");
|
|
@@ -59,6 +59,8 @@ var ResxResourceInfo_js_1 = require("./Resources/Models/ResxResourceInfo.js");
|
|
|
59
59
|
Object.defineProperty(exports, "ResxResourceInfo", { enumerable: true, get: function () { return ResxResourceInfo_js_1.ResxResourceInfo; } });
|
|
60
60
|
var JsonResourceInfo_js_1 = require("./Resources/Models/JsonResourceInfo.js");
|
|
61
61
|
Object.defineProperty(exports, "JsonResourceInfo", { enumerable: true, get: function () { return JsonResourceInfo_js_1.JsonResourceInfo; } });
|
|
62
|
+
var PoResourceInfo_js_1 = require("./Resources/Models/PoResourceInfo.js");
|
|
63
|
+
Object.defineProperty(exports, "PoResourceInfo", { enumerable: true, get: function () { return PoResourceInfo_js_1.PoResourceInfo; } });
|
|
62
64
|
var TypeScriptResourceInfo_js_1 = require("./Resources/Models/TypeScriptResourceInfo.js");
|
|
63
65
|
Object.defineProperty(exports, "TypeScriptResourceInfo", { enumerable: true, get: function () { return TypeScriptResourceInfo_js_1.TypeScriptResourceInfo; } });
|
|
64
66
|
var ResourceType_js_1 = require("./Resources/Models/Interfaces/ResourceType.js");
|
|
@@ -70,18 +72,20 @@ var JsonResourceReaderAdapter_js_1 = require("./Resources/Readers/Adapter/JsonRe
|
|
|
70
72
|
Object.defineProperty(exports, "JsonResourceReaderAdapter", { enumerable: true, get: function () { return JsonResourceReaderAdapter_js_1.JsonResourceReaderAdapter; } });
|
|
71
73
|
var ResourceAnalyzer_js_1 = require("./Resources/Analyzers/ResourceAnalyzer.js");
|
|
72
74
|
Object.defineProperty(exports, "ResourceAnalyzer", { enumerable: true, get: function () { return ResourceAnalyzer_js_1.ResourceAnalyzer; } });
|
|
73
|
-
var
|
|
74
|
-
Object.defineProperty(exports, "
|
|
75
|
-
var
|
|
76
|
-
Object.defineProperty(exports, "
|
|
77
|
-
var
|
|
78
|
-
Object.defineProperty(exports, "
|
|
79
|
-
var
|
|
80
|
-
Object.defineProperty(exports, "
|
|
81
|
-
var
|
|
82
|
-
Object.defineProperty(exports, "
|
|
83
|
-
var
|
|
84
|
-
Object.defineProperty(exports, "
|
|
75
|
+
var DuplicateKeysRule_js_1 = require("./Resources/Analyzers/Tasks/DuplicateKeysRule.js");
|
|
76
|
+
Object.defineProperty(exports, "DuplicateKeysRule", { enumerable: true, get: function () { return DuplicateKeysRule_js_1.DuplicateKeysRule; } });
|
|
77
|
+
var EmptyValuesRule_js_1 = require("./Resources/Analyzers/Tasks/EmptyValuesRule.js");
|
|
78
|
+
Object.defineProperty(exports, "EmptyValuesRule", { enumerable: true, get: function () { return EmptyValuesRule_js_1.EmptyValuesRule; } });
|
|
79
|
+
var KeyConsistencyRule_js_1 = require("./Resources/Analyzers/Tasks/KeyConsistencyRule.js");
|
|
80
|
+
Object.defineProperty(exports, "KeyConsistencyRule", { enumerable: true, get: function () { return KeyConsistencyRule_js_1.KeyConsistencyRule; } });
|
|
81
|
+
var MissingTranslationsRule_js_1 = require("./Resources/Analyzers/Tasks/MissingTranslationsRule.js");
|
|
82
|
+
Object.defineProperty(exports, "MissingTranslationsRule", { enumerable: true, get: function () { return MissingTranslationsRule_js_1.MissingTranslationsRule; } });
|
|
83
|
+
var UnusedKeysRule_js_1 = require("./Resources/Analyzers/Tasks/UnusedKeysRule.js");
|
|
84
|
+
Object.defineProperty(exports, "UnusedKeysRule", { enumerable: true, get: function () { return UnusedKeysRule_js_1.UnusedKeysRule; } });
|
|
85
|
+
var MultipleKeyUsageRule_js_1 = require("./Resources/Analyzers/Tasks/MultipleKeyUsageRule.js");
|
|
86
|
+
Object.defineProperty(exports, "MultipleKeyUsageRule", { enumerable: true, get: function () { return MultipleKeyUsageRule_js_1.MultipleKeyUsageRule; } });
|
|
87
|
+
var DuplicateValuesRule_js_1 = require("./Resources/Analyzers/Tasks/DuplicateValuesRule.js");
|
|
88
|
+
Object.defineProperty(exports, "DuplicateValuesRule", { enumerable: true, get: function () { return DuplicateValuesRule_js_1.DuplicateValuesRule; } });
|
|
85
89
|
var ResourceProcessor_js_1 = require("./Resources/ResourceProcessor.js");
|
|
86
90
|
Object.defineProperty(exports, "ResourceProcessor", { enumerable: true, get: function () { return ResourceProcessor_js_1.ResourceProcessor; } });
|
|
87
91
|
//# sourceMappingURL=Index.js.map
|
package/Index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Index.js","sourceRoot":"","sources":["../src/Index.ts"],"names":[],"mappings":";;;AACA,4DAAwD;AAA/C,2GAAA,UAAU,OAAA;AACnB,kEAA8D;AAArD,iHAAA,aAAa,OAAA;AACtB,kEAA8D;AAArD,iHAAA,aAAa,OAAA;AACtB,yEAAqE;AAA5D,+GAAA,YAAY,OAAA;AAErB,6EAAyE;AAAhE,6HAAA,mBAAmB,OAAA;AAC5B,6DAAyD;AAAhD,6GAAA,WAAW,OAAA;AACpB,2EAAuE;AAA9D,2HAAA,kBAAkB,OAAA;AAC3B,6DAAyD;AAAhD,6GAAA,WAAW,OAAA;AACpB,2EAAuE;AAA9D,2HAAA,kBAAkB,OAAA;AAC3B,6DAAyD;AAAhD,6GAAA,WAAW,OAAA;AAEpB,+DAA2D;AAAlD,iHAAA,aAAa,OAAA;AACtB,uDAAmD;AAA1C,yGAAA,SAAS,OAAA;AAClB,2DAAuD;AAA9C,6GAAA,WAAW,OAAA;AACpB,+DAA2D;AAAlD,iHAAA,aAAa,OAAA;AACtB,uDAAmD;AAA1C,yGAAA,SAAS,OAAA;AAClB,mDAA+C;AAAtC,qGAAA,OAAO,OAAA;AAEhB,gFAA4E;AAAnE,iIAAA,qBAAqB,OAAA;AAC9B,qEAAiE;AAAxD,qHAAA,eAAe,OAAA;AACxB,+DAA2D;AAAlD,+GAAA,YAAY,OAAA;AACrB,2EAAuE;AAA9D,mHAAA,cAAc,OAAA;AAEvB,2EAAuE;AAA9D,mHAAA,cAAc,OAAA;AACvB,0FAAsF;AAA7E,6HAAA,mBAAmB,OAAA;AAG5B,4GAAwG;AAA/F,mIAAA,sBAAsB,OAAA;AAC/B,4GAAwG;AAA/F,mIAAA,sBAAsB,OAAA;AAC/B,wHAAoH;AAA3G,+IAAA,4BAA4B,OAAA;AAErC,yHAAqH;AAA5G,mJAAA,8BAA8B,OAAA;AACvC,yHAAqH;AAA5G,mJAAA,8BAA8B,OAAA;AACvC,8EAA0E;AAAjE,uHAAA,gBAAgB,OAAA;AACzB,8EAA0E;AAAjE,uHAAA,gBAAgB,OAAA;AACzB,0FAAsF;AAA7E,mIAAA,sBAAsB,OAAA;
|
|
1
|
+
{"version":3,"file":"Index.js","sourceRoot":"","sources":["../src/Index.ts"],"names":[],"mappings":";;;AACA,4DAAwD;AAA/C,2GAAA,UAAU,OAAA;AACnB,kEAA8D;AAArD,iHAAA,aAAa,OAAA;AACtB,kEAA8D;AAArD,iHAAA,aAAa,OAAA;AACtB,yEAAqE;AAA5D,+GAAA,YAAY,OAAA;AAErB,6EAAyE;AAAhE,6HAAA,mBAAmB,OAAA;AAC5B,6DAAyD;AAAhD,6GAAA,WAAW,OAAA;AACpB,2EAAuE;AAA9D,2HAAA,kBAAkB,OAAA;AAC3B,6DAAyD;AAAhD,6GAAA,WAAW,OAAA;AACpB,2EAAuE;AAA9D,2HAAA,kBAAkB,OAAA;AAC3B,6DAAyD;AAAhD,6GAAA,WAAW,OAAA;AAEpB,+DAA2D;AAAlD,iHAAA,aAAa,OAAA;AACtB,uDAAmD;AAA1C,yGAAA,SAAS,OAAA;AAClB,2DAAuD;AAA9C,6GAAA,WAAW,OAAA;AACpB,+DAA2D;AAAlD,iHAAA,aAAa,OAAA;AACtB,uDAAmD;AAA1C,yGAAA,SAAS,OAAA;AAClB,mDAA+C;AAAtC,qGAAA,OAAO,OAAA;AAEhB,gFAA4E;AAAnE,iIAAA,qBAAqB,OAAA;AAC9B,qEAAiE;AAAxD,qHAAA,eAAe,OAAA;AACxB,+DAA2D;AAAlD,+GAAA,YAAY,OAAA;AACrB,2EAAuE;AAA9D,mHAAA,cAAc,OAAA;AAEvB,2EAAuE;AAA9D,mHAAA,cAAc,OAAA;AACvB,0FAAsF;AAA7E,6HAAA,mBAAmB,OAAA;AAG5B,4GAAwG;AAA/F,mIAAA,sBAAsB,OAAA;AAC/B,4GAAwG;AAA/F,mIAAA,sBAAsB,OAAA;AAC/B,wHAAoH;AAA3G,+IAAA,4BAA4B,OAAA;AAErC,yHAAqH;AAA5G,mJAAA,8BAA8B,OAAA;AACvC,yHAAqH;AAA5G,mJAAA,8BAA8B,OAAA;AACvC,8EAA0E;AAAjE,uHAAA,gBAAgB,OAAA;AACzB,8EAA0E;AAAjE,uHAAA,gBAAgB,OAAA;AACzB,0EAAsE;AAA7D,mHAAA,cAAc,OAAA;AACvB,0FAAsF;AAA7E,mIAAA,sBAAsB,OAAA;AAO/B,iFAAmG;AAA1F,+GAAA,YAAY,OAAA;AAAE,uHAAA,oBAAoB,OAAA;AAC3C,yGAAqG;AAA5F,yIAAA,yBAAyB,OAAA;AAClC,yGAAqG;AAA5F,yIAAA,yBAAyB,OAAA;AAElC,iFAA6E;AAApE,uHAAA,gBAAgB,OAAA;AAEzB,yFAAkH;AAAzG,yHAAA,iBAAiB,OAAA;AAC1B,qFAAkH;AAAzG,qHAAA,eAAe,OAAA;AACxB,2FAA2H;AAAlH,2HAAA,kBAAkB,OAAA;AAC3B,qGAA0I;AAAjI,qIAAA,uBAAuB,OAAA;AAChC,mFAA+G;AAAtG,mHAAA,cAAc,OAAA;AACvB,+FAAiI;AAAxH,+HAAA,oBAAoB,OAAA;AAE7B,6FAAyF;AAAhF,6HAAA,mBAAmB,OAAA;AAE5B,yEAAqE;AAA5D,yHAAA,iBAAiB,OAAA"}
|
|
@@ -1,13 +1,22 @@
|
|
|
1
1
|
import { type ILogger } from '@breadstone-infrastructure/utilities';
|
|
2
|
-
import type {
|
|
2
|
+
import type { IAnalyzerRule, IAnalyzerRuleExecutionContext, IAnalyzerRuleResult } from './Tasks/Interfaces/IAnalyzerRule';
|
|
3
|
+
import { EventEmitter } from 'node:stream';
|
|
3
4
|
/**
|
|
4
|
-
*
|
|
5
|
+
* Represents the event map for file system events.
|
|
5
6
|
*
|
|
6
7
|
* @public
|
|
7
8
|
*/
|
|
8
|
-
export
|
|
9
|
+
export interface IResourceAnalyzerEventMap {
|
|
10
|
+
ruleExecuted: [ruleName: string, result: IAnalyzerRuleResult];
|
|
11
|
+
}
|
|
12
|
+
/**
|
|
13
|
+
* The `ResourceAnalyzer` class, responsible for managing and executing analyzer rules.
|
|
14
|
+
*
|
|
15
|
+
* @public
|
|
16
|
+
*/
|
|
17
|
+
export declare class ResourceAnalyzer extends EventEmitter {
|
|
9
18
|
private readonly _logger;
|
|
10
|
-
private readonly
|
|
19
|
+
private readonly _rules;
|
|
11
20
|
/**
|
|
12
21
|
* Constructs a new instance of the `ResourceAnalyzer` class.
|
|
13
22
|
*
|
|
@@ -15,44 +24,44 @@ export declare class ResourceAnalyzer {
|
|
|
15
24
|
*/
|
|
16
25
|
constructor(logger: ILogger);
|
|
17
26
|
/**
|
|
18
|
-
* Registers a
|
|
27
|
+
* Registers a rule.
|
|
19
28
|
*
|
|
20
|
-
* @param name - The name of the
|
|
21
|
-
* @param
|
|
22
|
-
* @throws Error if the
|
|
29
|
+
* @param name - The name of the rule.
|
|
30
|
+
* @param rule - The rule instance.
|
|
31
|
+
* @throws Error if the rule name is already registered.
|
|
23
32
|
*/
|
|
24
|
-
|
|
33
|
+
registerRule(name: string, rule: IAnalyzerRule): void;
|
|
25
34
|
/**
|
|
26
|
-
*
|
|
35
|
+
* Unregister an analyzer rule.
|
|
27
36
|
*
|
|
28
|
-
* @param name - The name of the
|
|
29
|
-
* @returns `true` if the
|
|
37
|
+
* @param name - The name of the rule to unregister.
|
|
38
|
+
* @returns `true` if the rule was successfully unregistered; otherwise, `false`.
|
|
30
39
|
*/
|
|
31
|
-
|
|
40
|
+
unregisterRule(name: string): boolean;
|
|
32
41
|
/**
|
|
33
|
-
* Executes the specified analyzer
|
|
42
|
+
* Executes the specified analyzer rule.
|
|
34
43
|
*
|
|
35
44
|
* @public
|
|
36
|
-
* @param name - The name of the
|
|
45
|
+
* @param name - The name of the rule to execute.
|
|
37
46
|
* @param context - The execution context containing resources and additional parameters.
|
|
38
|
-
* @returns The result of the
|
|
39
|
-
* @throws Error if the
|
|
47
|
+
* @returns The result of the rule execution.
|
|
48
|
+
* @throws Error if the rule is not registered.
|
|
40
49
|
*/
|
|
41
|
-
|
|
50
|
+
executeRule(name: string, context: IAnalyzerRuleExecutionContext): IAnalyzerRuleResult;
|
|
42
51
|
/**
|
|
43
|
-
* Executes all registered
|
|
52
|
+
* Executes all registered rules.
|
|
44
53
|
*
|
|
45
54
|
* @public
|
|
46
55
|
* @param context - The execution context containing resources and additional parameters.
|
|
47
|
-
* @returns An array of
|
|
56
|
+
* @returns An array of rule results.
|
|
48
57
|
*/
|
|
49
|
-
|
|
58
|
+
executeAllRules(context: IAnalyzerRuleExecutionContext): Array<IAnalyzerRuleResult>;
|
|
50
59
|
/**
|
|
51
|
-
* Lists all registered
|
|
60
|
+
* Lists all registered rules.
|
|
52
61
|
*
|
|
53
62
|
* @public
|
|
54
|
-
* @returns An array of registered
|
|
63
|
+
* @returns An array of registered rule names.
|
|
55
64
|
*/
|
|
56
|
-
|
|
65
|
+
listRules(): Array<string>;
|
|
57
66
|
}
|
|
58
67
|
//# sourceMappingURL=ResourceAnalyzer.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ResourceAnalyzer.d.ts","sourceRoot":"","sources":["../../../src/Resources/Analyzers/ResourceAnalyzer.ts"],"names":[],"mappings":"AAEA,OAAO,EAAQ,KAAK,OAAO,EAAsB,MAAM,sCAAsC,CAAC;AAG9F,OAAO,KAAK,EAAE,aAAa,EAAE,6BAA6B,EAAE,mBAAmB,EAAE,MAAM,kCAAkC,CAAC;
|
|
1
|
+
{"version":3,"file":"ResourceAnalyzer.d.ts","sourceRoot":"","sources":["../../../src/Resources/Analyzers/ResourceAnalyzer.ts"],"names":[],"mappings":"AAEA,OAAO,EAAQ,KAAK,OAAO,EAAsB,MAAM,sCAAsC,CAAC;AAG9F,OAAO,KAAK,EAAE,aAAa,EAAE,6BAA6B,EAAE,mBAAmB,EAAE,MAAM,kCAAkC,CAAC;AAK1H,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAK3C;;;;GAIG;AACH,MAAM,WAAW,yBAAyB;IACtC,YAAY,EAAE,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,mBAAmB,CAAC,CAAC;CACjE;AAED;;;;GAIG;AACH,qBAAa,gBAAiB,SAAQ,YAAY;IAI9C,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAU;IAClC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAA6B;IAMpD;;;;OAIG;gBACgB,MAAM,EAAE,OAAO;IAoBlC;;;;;;OAMG;IACI,YAAY,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,aAAa,GAAG,IAAI;IAQ5D;;;;;OAKG;IACI,cAAc,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO;IAI5C;;;;;;;;OAQG;IACI,WAAW,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,6BAA6B,GAAG,mBAAmB;IAa7F;;;;;;OAMG;IACI,eAAe,CAAC,OAAO,EAAE,6BAA6B,GAAG,KAAK,CAAC,mBAAmB,CAAC;IAyB1F;;;;;OAKG;IACI,SAAS,IAAI,KAAK,CAAC,MAAM,CAAC;CAMpC"}
|
|
@@ -3,22 +3,23 @@
|
|
|
3
3
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
4
4
|
exports.ResourceAnalyzer = void 0;
|
|
5
5
|
const utilities_1 = require("@breadstone-infrastructure/utilities");
|
|
6
|
-
const
|
|
7
|
-
const
|
|
8
|
-
const
|
|
9
|
-
const
|
|
10
|
-
const
|
|
11
|
-
const
|
|
12
|
-
|
|
6
|
+
const DuplicateKeysRule_1 = require("./Tasks/DuplicateKeysRule");
|
|
7
|
+
const EmptyValuesRule_1 = require("./Tasks/EmptyValuesRule");
|
|
8
|
+
const KeyConsistencyRule_1 = require("./Tasks/KeyConsistencyRule");
|
|
9
|
+
const MissingTranslationsRule_1 = require("./Tasks/MissingTranslationsRule");
|
|
10
|
+
const MultipleKeyUsageRule_1 = require("./Tasks/MultipleKeyUsageRule");
|
|
11
|
+
const UnusedKeysRule_1 = require("./Tasks/UnusedKeysRule");
|
|
12
|
+
const node_stream_1 = require("node:stream");
|
|
13
|
+
const DuplicateValuesRule_1 = require("./Tasks/DuplicateValuesRule");
|
|
13
14
|
/**
|
|
14
|
-
* The `ResourceAnalyzer` class, responsible for managing and executing analyzer
|
|
15
|
+
* The `ResourceAnalyzer` class, responsible for managing and executing analyzer rules.
|
|
15
16
|
*
|
|
16
17
|
* @public
|
|
17
18
|
*/
|
|
18
|
-
class ResourceAnalyzer {
|
|
19
|
+
class ResourceAnalyzer extends node_stream_1.EventEmitter {
|
|
19
20
|
// #region Fields
|
|
20
21
|
_logger;
|
|
21
|
-
|
|
22
|
+
_rules;
|
|
22
23
|
// #endregion
|
|
23
24
|
// #region Ctor
|
|
24
25
|
/**
|
|
@@ -27,92 +28,94 @@ class ResourceAnalyzer {
|
|
|
27
28
|
* @public
|
|
28
29
|
*/
|
|
29
30
|
constructor(logger) {
|
|
31
|
+
super();
|
|
30
32
|
this._logger = logger;
|
|
31
|
-
this.
|
|
32
|
-
// pre-defined
|
|
33
|
-
this.
|
|
34
|
-
this.
|
|
35
|
-
this.
|
|
36
|
-
this.
|
|
37
|
-
this.
|
|
38
|
-
this.
|
|
33
|
+
this._rules = new Map();
|
|
34
|
+
// pre-defined rules
|
|
35
|
+
this.registerRule('duplicate-keys', new DuplicateKeysRule_1.DuplicateKeysRule());
|
|
36
|
+
this.registerRule('duplicate-values', new DuplicateValuesRule_1.DuplicateValuesRule());
|
|
37
|
+
this.registerRule('empty-values', new EmptyValuesRule_1.EmptyValuesRule());
|
|
38
|
+
this.registerRule('key-consistency', new KeyConsistencyRule_1.KeyConsistencyRule());
|
|
39
|
+
this.registerRule('missing-translations', new MissingTranslationsRule_1.MissingTranslationsRule());
|
|
40
|
+
this.registerRule('unused-keys', new UnusedKeysRule_1.UnusedKeysRule());
|
|
41
|
+
this.registerRule('multiple-key-usage', new MultipleKeyUsageRule_1.MultipleKeyUsageRule());
|
|
39
42
|
}
|
|
40
43
|
// #endregion
|
|
41
44
|
// #region Methods
|
|
42
45
|
/**
|
|
43
|
-
* Registers a
|
|
46
|
+
* Registers a rule.
|
|
44
47
|
*
|
|
45
|
-
* @param name - The name of the
|
|
46
|
-
* @param
|
|
47
|
-
* @throws Error if the
|
|
48
|
+
* @param name - The name of the rule.
|
|
49
|
+
* @param rule - The rule instance.
|
|
50
|
+
* @throws Error if the rule name is already registered.
|
|
48
51
|
*/
|
|
49
|
-
|
|
50
|
-
if (this.
|
|
51
|
-
throw new Error(`
|
|
52
|
+
registerRule(name, rule) {
|
|
53
|
+
if (this._rules.has(name)) {
|
|
54
|
+
throw new Error(`Rule '${name}' is already registered.`);
|
|
52
55
|
}
|
|
53
|
-
this.
|
|
56
|
+
this._rules.set(name, rule);
|
|
54
57
|
}
|
|
55
58
|
/**
|
|
56
|
-
*
|
|
59
|
+
* Unregister an analyzer rule.
|
|
57
60
|
*
|
|
58
|
-
* @param name - The name of the
|
|
59
|
-
* @returns `true` if the
|
|
61
|
+
* @param name - The name of the rule to unregister.
|
|
62
|
+
* @returns `true` if the rule was successfully unregistered; otherwise, `false`.
|
|
60
63
|
*/
|
|
61
|
-
|
|
62
|
-
return this.
|
|
64
|
+
unregisterRule(name) {
|
|
65
|
+
return this._rules.delete(name);
|
|
63
66
|
}
|
|
64
67
|
/**
|
|
65
|
-
* Executes the specified analyzer
|
|
68
|
+
* Executes the specified analyzer rule.
|
|
66
69
|
*
|
|
67
70
|
* @public
|
|
68
|
-
* @param name - The name of the
|
|
71
|
+
* @param name - The name of the rule to execute.
|
|
69
72
|
* @param context - The execution context containing resources and additional parameters.
|
|
70
|
-
* @returns The result of the
|
|
71
|
-
* @throws Error if the
|
|
73
|
+
* @returns The result of the rule execution.
|
|
74
|
+
* @throws Error if the rule is not registered.
|
|
72
75
|
*/
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
throw new Error(`Task '${name}' is not registered.`);
|
|
76
|
+
executeRule(name, context) {
|
|
77
|
+
const rule = this._rules.get(name);
|
|
78
|
+
if (!rule) {
|
|
79
|
+
throw new Error(`Rule ${(0, utilities_1.bold)(name)} is not registered.`);
|
|
78
80
|
}
|
|
79
|
-
const result =
|
|
80
|
-
this.
|
|
81
|
+
const result = rule.execute(context);
|
|
82
|
+
this.emit('ruleExecuted', name, result);
|
|
81
83
|
return result;
|
|
82
84
|
}
|
|
83
85
|
/**
|
|
84
|
-
* Executes all registered
|
|
86
|
+
* Executes all registered rules.
|
|
85
87
|
*
|
|
86
88
|
* @public
|
|
87
89
|
* @param context - The execution context containing resources and additional parameters.
|
|
88
|
-
* @returns An array of
|
|
90
|
+
* @returns An array of rule results.
|
|
89
91
|
*/
|
|
90
|
-
|
|
91
|
-
this._logger.log((0, utilities_1.t)
|
|
92
|
+
executeAllRules(context) {
|
|
93
|
+
this._logger.log((0, utilities_1.t) ` ${'Executing all rules...'}`);
|
|
92
94
|
const results = [];
|
|
93
|
-
for (const [name,
|
|
94
|
-
const result =
|
|
95
|
+
for (const [name, rule] of this._rules) {
|
|
96
|
+
const result = rule.execute(context);
|
|
97
|
+
this.emit('ruleExecuted', name, result);
|
|
95
98
|
if (result.success) {
|
|
96
|
-
this._logger.log((0, utilities_1.t) `
|
|
97
|
-
this._logger.log((0, utilities_1.t) `
|
|
99
|
+
this._logger.log((0, utilities_1.t) ` ${(0, utilities_1.symbol)('success')} ${(0, utilities_1.bold)(name)} completed.`);
|
|
100
|
+
this._logger.log((0, utilities_1.t) ` ${result.message}`);
|
|
98
101
|
}
|
|
99
102
|
else {
|
|
100
|
-
this._logger.log((0, utilities_1.t) `
|
|
101
|
-
this._logger.log((0, utilities_1.t) `
|
|
103
|
+
this._logger.log((0, utilities_1.t) ` ${(0, utilities_1.symbol)('error')} ${(0, utilities_1.bold)(name)} failed.`);
|
|
104
|
+
this._logger.log((0, utilities_1.t) ` ${result.message}`);
|
|
102
105
|
}
|
|
103
106
|
results.push(result);
|
|
104
107
|
}
|
|
105
|
-
this._logger.log((0, utilities_1.t)
|
|
108
|
+
this._logger.log((0, utilities_1.t) ` ${(0, utilities_1.magenta)('All rules completed.')}`);
|
|
106
109
|
return results;
|
|
107
110
|
}
|
|
108
111
|
/**
|
|
109
|
-
* Lists all registered
|
|
112
|
+
* Lists all registered rules.
|
|
110
113
|
*
|
|
111
114
|
* @public
|
|
112
|
-
* @returns An array of registered
|
|
115
|
+
* @returns An array of registered rule names.
|
|
113
116
|
*/
|
|
114
|
-
|
|
115
|
-
return Array.from(this.
|
|
117
|
+
listRules() {
|
|
118
|
+
return Array.from(this._rules.keys());
|
|
116
119
|
}
|
|
117
120
|
}
|
|
118
121
|
exports.ResourceAnalyzer = ResourceAnalyzer;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ResourceAnalyzer.js","sourceRoot":"","sources":["../../../src/Resources/Analyzers/ResourceAnalyzer.ts"],"names":[],"mappings":";AAAA,kBAAkB;;;AAElB,oEAA8F;AAC9F,iEAA8D;AAC9D,6DAA0D;AAE1D,mEAAgE;AAChE,6EAA0E;AAC1E,uEAAoE;AACpE,2DAAwD;
|
|
1
|
+
{"version":3,"file":"ResourceAnalyzer.js","sourceRoot":"","sources":["../../../src/Resources/Analyzers/ResourceAnalyzer.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
import type { IAnalyzerRule, IAnalyzerRuleExecutionContext, IAnalyzerRuleResult } from './Interfaces/IAnalyzerRule';
|
|
2
|
+
/**
|
|
3
|
+
* Represents the result data for duplicate keys analysis.
|
|
4
|
+
*
|
|
5
|
+
* @public
|
|
6
|
+
*/
|
|
7
|
+
export interface IDuplicateKeysRuleData {
|
|
8
|
+
/**
|
|
9
|
+
* The locale of the resource where duplicates were found.
|
|
10
|
+
*/
|
|
11
|
+
locale: string;
|
|
12
|
+
/**
|
|
13
|
+
* The list of duplicate keys in the resource.
|
|
14
|
+
*/
|
|
15
|
+
duplicates: Array<string>;
|
|
16
|
+
}
|
|
17
|
+
/**
|
|
18
|
+
* Rule to check for duplicate keys in resources.
|
|
19
|
+
*
|
|
20
|
+
* @public
|
|
21
|
+
*/
|
|
22
|
+
export declare class DuplicateKeysRule implements IAnalyzerRule<Array<IDuplicateKeysRuleData>> {
|
|
23
|
+
/**
|
|
24
|
+
* Executes the duplicate keys check.
|
|
25
|
+
*
|
|
26
|
+
* @param context - The execution context containing resources and parameters.
|
|
27
|
+
* @returns The rule result with duplicate key information.
|
|
28
|
+
*/
|
|
29
|
+
execute(context: IAnalyzerRuleExecutionContext): IAnalyzerRuleResult<Array<IDuplicateKeysRuleData>>;
|
|
30
|
+
}
|
|
31
|
+
//# sourceMappingURL=DuplicateKeysRule.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"
|
|
1
|
+
{"version":3,"file":"DuplicateKeysRule.d.ts","sourceRoot":"","sources":["../../../../src/Resources/Analyzers/Tasks/DuplicateKeysRule.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,aAAa,EAAE,6BAA6B,EAAE,mBAAmB,EAAE,MAAM,4BAA4B,CAAC;AAIpH;;;;GAIG;AACH,MAAM,WAAW,sBAAsB;IAInC;;OAEG;IACH,MAAM,EAAE,MAAM,CAAC;IAEf;;OAEG;IACH,UAAU,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC;CAI7B;AAED;;;;GAIG;AACH,qBAAa,iBAAkB,YAAW,aAAa,CAAC,KAAK,CAAC,sBAAsB,CAAC,CAAC;IAElF;;;;;OAKG;IACI,OAAO,CAAC,OAAO,EAAE,6BAA6B,GAAG,mBAAmB,CAAC,KAAK,CAAC,sBAAsB,CAAC,CAAC;CAyB7G"}
|
|
@@ -1,18 +1,18 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
// #region Imports
|
|
3
3
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
4
|
-
exports.
|
|
4
|
+
exports.DuplicateKeysRule = void 0;
|
|
5
5
|
/**
|
|
6
|
-
*
|
|
6
|
+
* Rule to check for duplicate keys in resources.
|
|
7
7
|
*
|
|
8
8
|
* @public
|
|
9
9
|
*/
|
|
10
|
-
class
|
|
10
|
+
class DuplicateKeysRule {
|
|
11
11
|
/**
|
|
12
12
|
* Executes the duplicate keys check.
|
|
13
13
|
*
|
|
14
14
|
* @param context - The execution context containing resources and parameters.
|
|
15
|
-
* @returns The
|
|
15
|
+
* @returns The rule result with duplicate key information.
|
|
16
16
|
*/
|
|
17
17
|
execute(context) {
|
|
18
18
|
const results = [];
|
|
@@ -36,5 +36,5 @@ class DuplicateKeysTask {
|
|
|
36
36
|
};
|
|
37
37
|
}
|
|
38
38
|
}
|
|
39
|
-
exports.
|
|
40
|
-
//# sourceMappingURL=
|
|
39
|
+
exports.DuplicateKeysRule = DuplicateKeysRule;
|
|
40
|
+
//# sourceMappingURL=DuplicateKeysRule.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"
|
|
1
|
+
{"version":3,"file":"DuplicateKeysRule.js","sourceRoot":"","sources":["../../../../src/Resources/Analyzers/Tasks/DuplicateKeysRule.ts"],"names":[],"mappings":";AAAA,kBAAkB;;;AA6BlB;;;;GAIG;AACH,MAAa,iBAAiB;IAE1B;;;;;OAKG;IACI,OAAO,CAAC,OAAsC;QACjD,MAAM,OAAO,GAAkC,EAAE,CAAC;QAClD,MAAM,IAAI,GAAG,OAAO,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC;QACrC,MAAM,UAAU,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,KAAK,EAAE,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,KAAK,CAAC,CAAC;QAEhF,IAAI,UAAU,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACxB,OAAO,CAAC,IAAI,CAAC;gBACT,MAAM,EAAE,OAAO,CAAC,QAAQ,CAAC,MAAM;gBAC/B,UAAU;aACb,CAAC,CAAC;QACP,CAAC;QAED,MAAM,OAAO,GAAG,OAAO,CAAC,MAAM,KAAK,CAAC,CAAC;QACrC,MAAM,OAAO,GAAG,OAAO;YACnB,CAAC,CAAC,iDAAiD,OAAO,CAAC,QAAQ,CAAC,MAAM,IAAI;YAC9E,CAAC,CAAC,iBAAiB,OAAO,CAAC,QAAQ,CAAC,MAAM,8BAA8B,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,gFAAgF,CAAC;QAElL,OAAO;YACH,QAAQ,EAAE,OAAO,CAAC,QAAQ;YAC1B,OAAO;YACP,OAAO;YACP,IAAI,EAAE,OAAO;SAChB,CAAC;IACN,CAAC;CAEJ;AAjCD,8CAiCC"}
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
import type { IAnalyzerRule, IAnalyzerRuleExecutionContext, IAnalyzerRuleResult } from './Interfaces/IAnalyzerRule';
|
|
2
|
+
/**
|
|
3
|
+
* Represents the result data for duplicate values analysis.
|
|
4
|
+
*
|
|
5
|
+
* @public
|
|
6
|
+
*/
|
|
7
|
+
export interface IDuplicateValuesRuleData {
|
|
8
|
+
/**
|
|
9
|
+
* The locale of the resource where duplicates were found.
|
|
10
|
+
*/
|
|
11
|
+
locale: string;
|
|
12
|
+
/**
|
|
13
|
+
* The list of duplicate keys in the resource.
|
|
14
|
+
*/
|
|
15
|
+
duplicates: Array<string>;
|
|
16
|
+
}
|
|
17
|
+
/**
|
|
18
|
+
* Rule to check for duplicate values in resources.
|
|
19
|
+
*
|
|
20
|
+
* @description
|
|
21
|
+
* This rule analyzes the values in a resource and identifies any duplicates.
|
|
22
|
+
* Background: Duplicate values can lead to unexpected behavior or conflicts in translations.
|
|
23
|
+
* It is important to ensure that each value is unique to maintain clarity and consistency in translations.
|
|
24
|
+
*
|
|
25
|
+
* @example
|
|
26
|
+
* 'loc.dialog.dismiss' = 'Dismiss';
|
|
27
|
+
* 'loc.view.dismiss' = 'Dismiss'; // This would be flagged as a duplicate value.
|
|
28
|
+
*
|
|
29
|
+
* @public
|
|
30
|
+
*/
|
|
31
|
+
export declare class DuplicateValuesRule implements IAnalyzerRule<Array<IDuplicateValuesRuleData>> {
|
|
32
|
+
/**
|
|
33
|
+
* Executes the duplicate values check.
|
|
34
|
+
*
|
|
35
|
+
* @param context - The execution context containing resources and parameters.
|
|
36
|
+
* @returns The rule result with duplicate value information.
|
|
37
|
+
*/
|
|
38
|
+
execute(context: IAnalyzerRuleExecutionContext): IAnalyzerRuleResult<Array<IDuplicateValuesRuleData>>;
|
|
39
|
+
}
|
|
40
|
+
//# sourceMappingURL=DuplicateValuesRule.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"DuplicateValuesRule.d.ts","sourceRoot":"","sources":["../../../../src/Resources/Analyzers/Tasks/DuplicateValuesRule.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,aAAa,EAAE,6BAA6B,EAAE,mBAAmB,EAAE,MAAM,4BAA4B,CAAC;AAIpH;;;;GAIG;AACH,MAAM,WAAW,wBAAwB;IAIrC;;OAEG;IACH,MAAM,EAAE,MAAM,CAAC;IAEf;;OAEG;IACH,UAAU,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC;CAI7B;AAED;;;;;;;;;;;;;GAaG;AACH,qBAAa,mBAAoB,YAAW,aAAa,CAAC,KAAK,CAAC,wBAAwB,CAAC,CAAC;IAEtF;;;;;OAKG;IACI,OAAO,CAAC,OAAO,EAAE,6BAA6B,GAAG,mBAAmB,CAAC,KAAK,CAAC,wBAAwB,CAAC,CAAC;CAyB/G"}
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
// #region Imports
|
|
3
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
4
|
+
exports.DuplicateValuesRule = void 0;
|
|
5
|
+
/**
|
|
6
|
+
* Rule to check for duplicate values in resources.
|
|
7
|
+
*
|
|
8
|
+
* @description
|
|
9
|
+
* This rule analyzes the values in a resource and identifies any duplicates.
|
|
10
|
+
* Background: Duplicate values can lead to unexpected behavior or conflicts in translations.
|
|
11
|
+
* It is important to ensure that each value is unique to maintain clarity and consistency in translations.
|
|
12
|
+
*
|
|
13
|
+
* @example
|
|
14
|
+
* 'loc.dialog.dismiss' = 'Dismiss';
|
|
15
|
+
* 'loc.view.dismiss' = 'Dismiss'; // This would be flagged as a duplicate value.
|
|
16
|
+
*
|
|
17
|
+
* @public
|
|
18
|
+
*/
|
|
19
|
+
class DuplicateValuesRule {
|
|
20
|
+
/**
|
|
21
|
+
* Executes the duplicate values check.
|
|
22
|
+
*
|
|
23
|
+
* @param context - The execution context containing resources and parameters.
|
|
24
|
+
* @returns The rule result with duplicate value information.
|
|
25
|
+
*/
|
|
26
|
+
execute(context) {
|
|
27
|
+
const results = [];
|
|
28
|
+
const values = context.resource.values();
|
|
29
|
+
const duplicates = values.filter((key, index, arr) => arr.indexOf(key) !== index);
|
|
30
|
+
if (duplicates.length > 0) {
|
|
31
|
+
results.push({
|
|
32
|
+
locale: context.resource.locale,
|
|
33
|
+
duplicates
|
|
34
|
+
});
|
|
35
|
+
}
|
|
36
|
+
const success = results.length === 0;
|
|
37
|
+
const message = success
|
|
38
|
+
? `No duplicate values were found in the resource '${context.resource.locale}'.`
|
|
39
|
+
: `The resource '${context.resource.locale}' contains duplicate values: ${duplicates.join(', ')}. Duplicate values can lead to unexpected behavior or conflicts in translations.`;
|
|
40
|
+
return {
|
|
41
|
+
resource: context.resource,
|
|
42
|
+
success,
|
|
43
|
+
message,
|
|
44
|
+
data: results
|
|
45
|
+
};
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
exports.DuplicateValuesRule = DuplicateValuesRule;
|
|
49
|
+
//# sourceMappingURL=DuplicateValuesRule.js.map
|