@breadstone-tools/localizator-core 0.0.84 → 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
|
@@ -0,0 +1,110 @@
|
|
|
1
|
+
import type { IPoResourceInfo } from './Interfaces/IPoResourceInfo';
|
|
2
|
+
import { ResourceType } from './Interfaces/ResourceType';
|
|
3
|
+
import type { ResourceContentFn } from './Interfaces/IResourceInfo';
|
|
4
|
+
import type { IPoEntry } from '@breadstone-infrastructure/utilities';
|
|
5
|
+
/**
|
|
6
|
+
* Represents a po resource.
|
|
7
|
+
*
|
|
8
|
+
* @public
|
|
9
|
+
*/
|
|
10
|
+
export declare class PoResourceInfo implements IPoResourceInfo {
|
|
11
|
+
private readonly _name;
|
|
12
|
+
private readonly _path;
|
|
13
|
+
private readonly _language;
|
|
14
|
+
private readonly _type;
|
|
15
|
+
private readonly _content;
|
|
16
|
+
private _cacheContent;
|
|
17
|
+
/**
|
|
18
|
+
* Constructs a new instance of the `PoResourceInfo` class.
|
|
19
|
+
*
|
|
20
|
+
* @param resource - The resource information.
|
|
21
|
+
* @public
|
|
22
|
+
*/
|
|
23
|
+
constructor(resource?: Partial<IPoResourceInfo>);
|
|
24
|
+
/**
|
|
25
|
+
* Gets the `data` property.
|
|
26
|
+
*
|
|
27
|
+
* @public
|
|
28
|
+
* @readonly
|
|
29
|
+
*/
|
|
30
|
+
get name(): string;
|
|
31
|
+
/**
|
|
32
|
+
* Gets the `data` property.
|
|
33
|
+
*
|
|
34
|
+
* @public
|
|
35
|
+
* @readonly
|
|
36
|
+
*/
|
|
37
|
+
get path(): string;
|
|
38
|
+
/**
|
|
39
|
+
* Gets the `data` property.
|
|
40
|
+
*
|
|
41
|
+
* @public
|
|
42
|
+
* @readonly
|
|
43
|
+
*/
|
|
44
|
+
get locale(): string;
|
|
45
|
+
/**
|
|
46
|
+
* Gets the `type` property.
|
|
47
|
+
*
|
|
48
|
+
* @public
|
|
49
|
+
* @readonly
|
|
50
|
+
*/
|
|
51
|
+
get type(): typeof ResourceType.Po;
|
|
52
|
+
/**
|
|
53
|
+
* Gets the `content` property.
|
|
54
|
+
*
|
|
55
|
+
* @public
|
|
56
|
+
* @readonly
|
|
57
|
+
*/
|
|
58
|
+
get content(): ResourceContentFn<Array<IPoEntry>>;
|
|
59
|
+
/**
|
|
60
|
+
* Gets the `isVirtual` property.
|
|
61
|
+
*
|
|
62
|
+
* @public
|
|
63
|
+
* @readonly
|
|
64
|
+
*/
|
|
65
|
+
get isVirtual(): boolean;
|
|
66
|
+
/**
|
|
67
|
+
* Gets the keys of the resource data.
|
|
68
|
+
*
|
|
69
|
+
* @public
|
|
70
|
+
*/
|
|
71
|
+
keys(): Array<string>;
|
|
72
|
+
/**
|
|
73
|
+
* Gets the values of the resource data.
|
|
74
|
+
*
|
|
75
|
+
* @public
|
|
76
|
+
*/
|
|
77
|
+
values(): Array<string>;
|
|
78
|
+
/**
|
|
79
|
+
* Gets the entries of the resource data.
|
|
80
|
+
*
|
|
81
|
+
* @public
|
|
82
|
+
*/
|
|
83
|
+
entries(): Array<[string, string]>;
|
|
84
|
+
/**
|
|
85
|
+
* Clones the current instance.
|
|
86
|
+
*
|
|
87
|
+
* @public
|
|
88
|
+
*/
|
|
89
|
+
clone(): this;
|
|
90
|
+
/**
|
|
91
|
+
* Copies the current instance.
|
|
92
|
+
*
|
|
93
|
+
* @public
|
|
94
|
+
*/
|
|
95
|
+
copy(resource: Pick<IPoResourceInfo, 'name' | 'path' | 'locale' | 'type' | 'content' | 'isVirtual'>): this;
|
|
96
|
+
/**
|
|
97
|
+
* Sorts the resource data.
|
|
98
|
+
*
|
|
99
|
+
* @public
|
|
100
|
+
* @param order - The order to sort the data.
|
|
101
|
+
*/
|
|
102
|
+
sort(order: 'asc' | 'desc'): this;
|
|
103
|
+
/**
|
|
104
|
+
* Converts the resource to a string.
|
|
105
|
+
*
|
|
106
|
+
* @public
|
|
107
|
+
*/
|
|
108
|
+
toString(): string;
|
|
109
|
+
}
|
|
110
|
+
//# sourceMappingURL=PoResourceInfo.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"PoResourceInfo.d.ts","sourceRoot":"","sources":["../../../src/Resources/Models/PoResourceInfo.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,8BAA8B,CAAC;AACpE,OAAO,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;AACzD,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,4BAA4B,CAAC;AACpE,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,sCAAsC,CAAC;AAIrE;;;;GAIG;AACH,qBAAa,cAAe,YAAW,eAAe;IAIlD,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAS;IAC/B,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAS;IAC/B,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAS;IACnC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAyB;IAC/C,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAqC;IAC9D,OAAO,CAAC,aAAa,CAAyB;IAM9C;;;;;OAKG;gBACgB,QAAQ,GAAE,OAAO,CAAC,eAAe,CAAM;IAoB1D;;;;;OAKG;IACH,IAAW,IAAI,IAAI,MAAM,CAExB;IAED;;;;;OAKG;IACH,IAAW,IAAI,IAAI,MAAM,CAExB;IAED;;;;;OAKG;IACH,IAAW,MAAM,IAAI,MAAM,CAE1B;IAED;;;;;OAKG;IACH,IAAW,IAAI,IAAI,OAAO,YAAY,CAAC,EAAE,CAExC;IAED;;;;;OAKG;IACH,IAAW,OAAO,IAAI,iBAAiB,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,CAEvD;IAED;;;;;OAKG;IACH,IAAW,SAAS,IAAI,OAAO,CAE9B;IAMD;;;;OAIG;IACI,IAAI,IAAI,KAAK,CAAC,MAAM,CAAC;IAM5B;;;;OAIG;IACI,MAAM,IAAI,KAAK,CAAC,MAAM,CAAC;IAM9B;;;;OAIG;IACI,OAAO,IAAI,KAAK,CAAC,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAOzC;;;;OAIG;IACI,KAAK,IAAI,IAAI;IAIpB;;;;OAIG;IACI,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,eAAe,EAAE,MAAM,GAAG,MAAM,GAAG,QAAQ,GAAG,MAAM,GAAG,SAAS,GAAG,WAAW,CAAC,GAAG,IAAI;IAIjH;;;;;OAKG;IACI,IAAI,CAAC,KAAK,EAAE,KAAK,GAAG,MAAM,GAAG,IAAI;IAYxC;;;;OAIG;IACI,QAAQ,IAAI,MAAM;CAkC5B"}
|
|
@@ -0,0 +1,190 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
// #region Imports
|
|
3
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
4
|
+
exports.PoResourceInfo = void 0;
|
|
5
|
+
const ResourceType_1 = require("./Interfaces/ResourceType");
|
|
6
|
+
// #endregion
|
|
7
|
+
/**
|
|
8
|
+
* Represents a po resource.
|
|
9
|
+
*
|
|
10
|
+
* @public
|
|
11
|
+
*/
|
|
12
|
+
class PoResourceInfo {
|
|
13
|
+
// #region Fields
|
|
14
|
+
_name;
|
|
15
|
+
_path;
|
|
16
|
+
_language;
|
|
17
|
+
_type;
|
|
18
|
+
_content;
|
|
19
|
+
_cacheContent;
|
|
20
|
+
// #endregion
|
|
21
|
+
// #region Ctor
|
|
22
|
+
/**
|
|
23
|
+
* Constructs a new instance of the `PoResourceInfo` class.
|
|
24
|
+
*
|
|
25
|
+
* @param resource - The resource information.
|
|
26
|
+
* @public
|
|
27
|
+
*/
|
|
28
|
+
constructor(resource = {}) {
|
|
29
|
+
this._name = resource.name ?? '';
|
|
30
|
+
this._path = resource.path ?? '';
|
|
31
|
+
this._language = resource.locale ?? '';
|
|
32
|
+
this._type = ResourceType_1.ResourceType.Po;
|
|
33
|
+
this._cacheContent = null;
|
|
34
|
+
this._content = () => {
|
|
35
|
+
if (!this._cacheContent) {
|
|
36
|
+
const c = resource.content ?? (() => []);
|
|
37
|
+
return this._cacheContent = c();
|
|
38
|
+
}
|
|
39
|
+
return this._cacheContent;
|
|
40
|
+
};
|
|
41
|
+
}
|
|
42
|
+
// #endregion
|
|
43
|
+
// #region Properties
|
|
44
|
+
/**
|
|
45
|
+
* Gets the `data` property.
|
|
46
|
+
*
|
|
47
|
+
* @public
|
|
48
|
+
* @readonly
|
|
49
|
+
*/
|
|
50
|
+
get name() {
|
|
51
|
+
return this._name;
|
|
52
|
+
}
|
|
53
|
+
/**
|
|
54
|
+
* Gets the `data` property.
|
|
55
|
+
*
|
|
56
|
+
* @public
|
|
57
|
+
* @readonly
|
|
58
|
+
*/
|
|
59
|
+
get path() {
|
|
60
|
+
return this._path;
|
|
61
|
+
}
|
|
62
|
+
/**
|
|
63
|
+
* Gets the `data` property.
|
|
64
|
+
*
|
|
65
|
+
* @public
|
|
66
|
+
* @readonly
|
|
67
|
+
*/
|
|
68
|
+
get locale() {
|
|
69
|
+
return this._language;
|
|
70
|
+
}
|
|
71
|
+
/**
|
|
72
|
+
* Gets the `type` property.
|
|
73
|
+
*
|
|
74
|
+
* @public
|
|
75
|
+
* @readonly
|
|
76
|
+
*/
|
|
77
|
+
get type() {
|
|
78
|
+
return this._type;
|
|
79
|
+
}
|
|
80
|
+
/**
|
|
81
|
+
* Gets the `content` property.
|
|
82
|
+
*
|
|
83
|
+
* @public
|
|
84
|
+
* @readonly
|
|
85
|
+
*/
|
|
86
|
+
get content() {
|
|
87
|
+
return this._content;
|
|
88
|
+
}
|
|
89
|
+
/**
|
|
90
|
+
* Gets the `isVirtual` property.
|
|
91
|
+
*
|
|
92
|
+
* @public
|
|
93
|
+
* @readonly
|
|
94
|
+
*/
|
|
95
|
+
get isVirtual() {
|
|
96
|
+
return this._path === '' || this._name === '';
|
|
97
|
+
}
|
|
98
|
+
// #endregion
|
|
99
|
+
// #region Methods
|
|
100
|
+
/**
|
|
101
|
+
* Gets the keys of the resource data.
|
|
102
|
+
*
|
|
103
|
+
* @public
|
|
104
|
+
*/
|
|
105
|
+
keys() {
|
|
106
|
+
const content = this._content();
|
|
107
|
+
return content.map((entry) => entry.msgid);
|
|
108
|
+
}
|
|
109
|
+
/**
|
|
110
|
+
* Gets the values of the resource data.
|
|
111
|
+
*
|
|
112
|
+
* @public
|
|
113
|
+
*/
|
|
114
|
+
values() {
|
|
115
|
+
const content = this._content();
|
|
116
|
+
return content.map((entry) => entry.msgstr);
|
|
117
|
+
}
|
|
118
|
+
/**
|
|
119
|
+
* Gets the entries of the resource data.
|
|
120
|
+
*
|
|
121
|
+
* @public
|
|
122
|
+
*/
|
|
123
|
+
entries() {
|
|
124
|
+
const content = this._content();
|
|
125
|
+
return content
|
|
126
|
+
.map((entry) => [entry.msgid, entry.msgstr]);
|
|
127
|
+
}
|
|
128
|
+
/**
|
|
129
|
+
* Clones the current instance.
|
|
130
|
+
*
|
|
131
|
+
* @public
|
|
132
|
+
*/
|
|
133
|
+
clone() {
|
|
134
|
+
return this.copy(this);
|
|
135
|
+
}
|
|
136
|
+
/**
|
|
137
|
+
* Copies the current instance.
|
|
138
|
+
*
|
|
139
|
+
* @public
|
|
140
|
+
*/
|
|
141
|
+
copy(resource) {
|
|
142
|
+
return new PoResourceInfo(resource);
|
|
143
|
+
}
|
|
144
|
+
/**
|
|
145
|
+
* Sorts the resource data.
|
|
146
|
+
*
|
|
147
|
+
* @public
|
|
148
|
+
* @param order - The order to sort the data.
|
|
149
|
+
*/
|
|
150
|
+
sort(order) {
|
|
151
|
+
const content = this._content();
|
|
152
|
+
const sortedContent = content.sort((a, b) => {
|
|
153
|
+
const comparison = a.msgid.localeCompare(b.msgid);
|
|
154
|
+
return order === 'asc' ? comparison : -comparison;
|
|
155
|
+
});
|
|
156
|
+
this._cacheContent = sortedContent;
|
|
157
|
+
return this;
|
|
158
|
+
}
|
|
159
|
+
/**
|
|
160
|
+
* Converts the resource to a string.
|
|
161
|
+
*
|
|
162
|
+
* @public
|
|
163
|
+
*/
|
|
164
|
+
toString() {
|
|
165
|
+
const content = this._content();
|
|
166
|
+
return content.map((entry) => {
|
|
167
|
+
let str = '';
|
|
168
|
+
if (entry.msgid) {
|
|
169
|
+
str += `msgid "${entry.msgid}"\n`;
|
|
170
|
+
}
|
|
171
|
+
if (entry.msgstr) {
|
|
172
|
+
str += `msgstr "${entry.msgstr}"\n`;
|
|
173
|
+
}
|
|
174
|
+
if (entry.comments) {
|
|
175
|
+
str += `# ${entry.comments.trim()}\n`;
|
|
176
|
+
}
|
|
177
|
+
if (entry.context) {
|
|
178
|
+
str += `msgctxt "${entry.context}"\n`;
|
|
179
|
+
}
|
|
180
|
+
if (entry.references) {
|
|
181
|
+
entry.references.forEach((ref) => {
|
|
182
|
+
str += `#: ${ref}\n`;
|
|
183
|
+
});
|
|
184
|
+
}
|
|
185
|
+
return str;
|
|
186
|
+
}).join('\n');
|
|
187
|
+
}
|
|
188
|
+
}
|
|
189
|
+
exports.PoResourceInfo = PoResourceInfo;
|
|
190
|
+
//# sourceMappingURL=PoResourceInfo.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"PoResourceInfo.js","sourceRoot":"","sources":["../../../src/Resources/Models/PoResourceInfo.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
import type { PoFileReader } from './PoFileReader';
|
|
2
|
+
/**
|
|
3
|
+
* Represents an entry in a PO file.
|
|
4
|
+
*
|
|
5
|
+
* @public
|
|
6
|
+
*/
|
|
7
|
+
export interface IPoEntry {
|
|
8
|
+
msgid: string;
|
|
9
|
+
msgstr: string;
|
|
10
|
+
comments?: string;
|
|
11
|
+
context?: string;
|
|
12
|
+
references?: Array<string>;
|
|
13
|
+
}
|
|
14
|
+
/**
|
|
15
|
+
* A class to parse and handle PO files.
|
|
16
|
+
*
|
|
17
|
+
* @public
|
|
18
|
+
*/
|
|
19
|
+
export declare class PoFileParser {
|
|
20
|
+
private _entries;
|
|
21
|
+
/**
|
|
22
|
+
* Parses a PO file from the given content.
|
|
23
|
+
*
|
|
24
|
+
* @param content - The content of the PO file as a string.
|
|
25
|
+
*/
|
|
26
|
+
parse(content: string): void;
|
|
27
|
+
/**
|
|
28
|
+
* Returns all parsed entries.
|
|
29
|
+
*
|
|
30
|
+
* @returns The array of PO entries.
|
|
31
|
+
*/
|
|
32
|
+
getEntries(): Array<IPoEntry>;
|
|
33
|
+
/**
|
|
34
|
+
* Reads and parses a PO file using the provided reader.
|
|
35
|
+
*
|
|
36
|
+
* @param reader - The `PoFileReader` instance.
|
|
37
|
+
* @returns A promise resolving when the file is fully parsed.
|
|
38
|
+
*/
|
|
39
|
+
parseFromFile(reader: PoFileReader): Promise<void>;
|
|
40
|
+
/**
|
|
41
|
+
* Extracts the value from a line in the PO file.
|
|
42
|
+
*
|
|
43
|
+
* @param line - The line to extract the value from.
|
|
44
|
+
* @returns The extracted value.
|
|
45
|
+
*/
|
|
46
|
+
private extractValue;
|
|
47
|
+
}
|
|
48
|
+
//# sourceMappingURL=PoFileParser.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"PoFileParser.d.ts","sourceRoot":"","sources":["../../src/Resources/PoFileParser.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAInD;;;;GAIG;AACH,MAAM,WAAW,QAAQ;IACrB,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,UAAU,CAAC,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC;CAC9B;AAED;;;;GAIG;AACH,qBAAa,YAAY;IAIrB,OAAO,CAAC,QAAQ,CAAuB;IAMvC;;;;OAIG;IACI,KAAK,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI;IAwDnC;;;;OAIG;IACI,UAAU,IAAI,KAAK,CAAC,QAAQ,CAAC;IAIpC;;;;;OAKG;IACU,aAAa,CAAC,MAAM,EAAE,YAAY,GAAG,OAAO,CAAC,IAAI,CAAC;IAK/D;;;;;OAKG;IACH,OAAO,CAAC,YAAY;CAOvB"}
|
|
@@ -0,0 +1,111 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/* eslint-disable @typescript-eslint/ban-ts-comment */
|
|
3
|
+
// #region Imports
|
|
4
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
5
|
+
exports.PoFileParser = void 0;
|
|
6
|
+
/**
|
|
7
|
+
* A class to parse and handle PO files.
|
|
8
|
+
*
|
|
9
|
+
* @public
|
|
10
|
+
*/
|
|
11
|
+
class PoFileParser {
|
|
12
|
+
// #region Fields
|
|
13
|
+
_entries = [];
|
|
14
|
+
// #endregion
|
|
15
|
+
// #region Methods
|
|
16
|
+
/**
|
|
17
|
+
* Parses a PO file from the given content.
|
|
18
|
+
*
|
|
19
|
+
* @param content - The content of the PO file as a string.
|
|
20
|
+
*/
|
|
21
|
+
parse(content) {
|
|
22
|
+
this._entries = [];
|
|
23
|
+
const lines = content.split('\n');
|
|
24
|
+
let currentEntry = {};
|
|
25
|
+
let isMultiline = false;
|
|
26
|
+
let multilineKey = null;
|
|
27
|
+
for (const line of lines) {
|
|
28
|
+
const trimmed = line.trim();
|
|
29
|
+
if (trimmed.startsWith('#')) {
|
|
30
|
+
// Handle comments
|
|
31
|
+
currentEntry.comments = `${(currentEntry.comments ?? '') + trimmed}\n`;
|
|
32
|
+
}
|
|
33
|
+
else if (trimmed.startsWith('#:')) {
|
|
34
|
+
// Handle references
|
|
35
|
+
currentEntry.references ??= [];
|
|
36
|
+
currentEntry.references.push(trimmed.substring(2).trim());
|
|
37
|
+
}
|
|
38
|
+
else if (trimmed.startsWith('msgctxt')) {
|
|
39
|
+
// Handle context
|
|
40
|
+
currentEntry.context = this.extractValue(trimmed);
|
|
41
|
+
}
|
|
42
|
+
else if (trimmed.startsWith('msgid')) {
|
|
43
|
+
// Handle msgid
|
|
44
|
+
if (isMultiline) {
|
|
45
|
+
// @ts-ignore
|
|
46
|
+
currentEntry[multilineKey] += this.extractValue(trimmed);
|
|
47
|
+
}
|
|
48
|
+
else {
|
|
49
|
+
currentEntry.msgid = this.extractValue(trimmed);
|
|
50
|
+
isMultiline = !trimmed.endsWith('"');
|
|
51
|
+
multilineKey = 'msgid';
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
else if (trimmed.startsWith('msgstr')) {
|
|
55
|
+
// Handle msgstr
|
|
56
|
+
if (isMultiline) {
|
|
57
|
+
// @ts-ignore
|
|
58
|
+
currentEntry[multilineKey] += this.extractValue(trimmed);
|
|
59
|
+
}
|
|
60
|
+
else {
|
|
61
|
+
currentEntry.msgstr = this.extractValue(trimmed);
|
|
62
|
+
isMultiline = !trimmed.endsWith('"');
|
|
63
|
+
multilineKey = 'msgstr';
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
else if (!trimmed && currentEntry.msgid) {
|
|
67
|
+
// End of entry
|
|
68
|
+
this._entries.push({
|
|
69
|
+
msgid: currentEntry.msgid ?? '',
|
|
70
|
+
msgstr: currentEntry.msgstr ?? '',
|
|
71
|
+
comments: currentEntry.comments?.trim(),
|
|
72
|
+
context: currentEntry.context,
|
|
73
|
+
references: currentEntry.references
|
|
74
|
+
});
|
|
75
|
+
currentEntry = {};
|
|
76
|
+
isMultiline = false;
|
|
77
|
+
multilineKey = null;
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
/**
|
|
82
|
+
* Returns all parsed entries.
|
|
83
|
+
*
|
|
84
|
+
* @returns The array of PO entries.
|
|
85
|
+
*/
|
|
86
|
+
getEntries() {
|
|
87
|
+
return this._entries;
|
|
88
|
+
}
|
|
89
|
+
/**
|
|
90
|
+
* Reads and parses a PO file using the provided reader.
|
|
91
|
+
*
|
|
92
|
+
* @param reader - The `PoFileReader` instance.
|
|
93
|
+
* @returns A promise resolving when the file is fully parsed.
|
|
94
|
+
*/
|
|
95
|
+
async parseFromFile(reader) {
|
|
96
|
+
const content = await reader.readFileContent();
|
|
97
|
+
this.parse(content);
|
|
98
|
+
}
|
|
99
|
+
/**
|
|
100
|
+
* Extracts the value from a line in the PO file.
|
|
101
|
+
*
|
|
102
|
+
* @param line - The line to extract the value from.
|
|
103
|
+
* @returns The extracted value.
|
|
104
|
+
*/
|
|
105
|
+
extractValue(line) {
|
|
106
|
+
const match = (/"(.*)"/).exec(line);
|
|
107
|
+
return match ? match[1] : '';
|
|
108
|
+
}
|
|
109
|
+
}
|
|
110
|
+
exports.PoFileParser = PoFileParser;
|
|
111
|
+
//# sourceMappingURL=PoFileParser.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"PoFileParser.js","sourceRoot":"","sources":["../../src/Resources/PoFileParser.ts"],"names":[],"mappings":";AAAA,sDAAsD;AACtD,kBAAkB;;;AAmBlB;;;;GAIG;AACH,MAAa,YAAY;IAErB,iBAAiB;IAET,QAAQ,GAAoB,EAAE,CAAC;IAEvC,aAAa;IAEb,kBAAkB;IAElB;;;;OAIG;IACI,KAAK,CAAC,OAAe;QACxB,IAAI,CAAC,QAAQ,GAAG,EAAE,CAAC;QACnB,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QAClC,IAAI,YAAY,GAAsB,EAAE,CAAC;QACzC,IAAI,WAAW,GAAG,KAAK,CAAC;QACxB,IAAI,YAAY,GAA0B,IAAI,CAAC;QAE/C,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;YACvB,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC;YAE5B,IAAI,OAAO,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;gBAC1B,kBAAkB;gBAClB,YAAY,CAAC,QAAQ,GAAG,GAAG,CAAC,YAAY,CAAC,QAAQ,IAAI,EAAE,CAAC,GAAG,OAAO,IAAI,CAAC;YAC3E,CAAC;iBAAM,IAAI,OAAO,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC;gBAClC,oBAAoB;gBACpB,YAAY,CAAC,UAAU,KAAK,EAAE,CAAC;gBAC/B,YAAY,CAAC,UAAU,CAAC,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC;YAC9D,CAAC;iBAAM,IAAI,OAAO,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE,CAAC;gBACvC,iBAAiB;gBACjB,YAAY,CAAC,OAAO,GAAG,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC;YACtD,CAAC;iBAAM,IAAI,OAAO,CAAC,UAAU,CAAC,OAAO,CAAC,EAAE,CAAC;gBACrC,eAAe;gBACf,IAAI,WAAW,EAAE,CAAC;oBACd,aAAa;oBACb,YAAY,CAAC,YAAY,CAAC,IAAI,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC;gBAC7D,CAAC;qBAAM,CAAC;oBACJ,YAAY,CAAC,KAAK,GAAG,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC;oBAChD,WAAW,GAAG,CAAC,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;oBACrC,YAAY,GAAG,OAAO,CAAC;gBAC3B,CAAC;YACL,CAAC;iBAAM,IAAI,OAAO,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC;gBACtC,gBAAgB;gBAChB,IAAI,WAAW,EAAE,CAAC;oBACd,aAAa;oBACb,YAAY,CAAC,YAAY,CAAC,IAAI,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC;gBAC7D,CAAC;qBAAM,CAAC;oBACJ,YAAY,CAAC,MAAM,GAAG,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC;oBACjD,WAAW,GAAG,CAAC,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;oBACrC,YAAY,GAAG,QAAQ,CAAC;gBAC5B,CAAC;YACL,CAAC;iBAAM,IAAI,CAAC,OAAO,IAAI,YAAY,CAAC,KAAK,EAAE,CAAC;gBACxC,eAAe;gBACf,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC;oBACf,KAAK,EAAE,YAAY,CAAC,KAAK,IAAI,EAAE;oBAC/B,MAAM,EAAE,YAAY,CAAC,MAAM,IAAI,EAAE;oBACjC,QAAQ,EAAE,YAAY,CAAC,QAAQ,EAAE,IAAI,EAAE;oBACvC,OAAO,EAAE,YAAY,CAAC,OAAO;oBAC7B,UAAU,EAAE,YAAY,CAAC,UAAU;iBACtC,CAAC,CAAC;gBACH,YAAY,GAAG,EAAE,CAAC;gBAClB,WAAW,GAAG,KAAK,CAAC;gBACpB,YAAY,GAAG,IAAI,CAAC;YACxB,CAAC;QACL,CAAC;IACL,CAAC;IAED;;;;OAIG;IACI,UAAU;QACb,OAAO,IAAI,CAAC,QAAQ,CAAC;IACzB,CAAC;IAED;;;;;OAKG;IACI,KAAK,CAAC,aAAa,CAAC,MAAoB;QAC3C,MAAM,OAAO,GAAG,MAAM,MAAM,CAAC,eAAe,EAAE,CAAC;QAC/C,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;IACxB,CAAC;IAED;;;;;OAKG;IACK,YAAY,CAAC,IAAY;QAC7B,MAAM,KAAK,GAAG,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACpC,OAAO,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;IACjC,CAAC;CAIJ;AAxGD,oCAwGC"}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Class for reading `.po` files.
|
|
3
|
+
*
|
|
4
|
+
* @public
|
|
5
|
+
*/
|
|
6
|
+
export declare class PoFileReader {
|
|
7
|
+
private readonly _fileReader;
|
|
8
|
+
/**
|
|
9
|
+
* Constructs a new instance of the `PoFileReader` class.
|
|
10
|
+
*
|
|
11
|
+
* @param filePath - The path to the `.po` file.
|
|
12
|
+
*/
|
|
13
|
+
constructor(filePath: string);
|
|
14
|
+
/**
|
|
15
|
+
* Reads the entire content of the `.po` file.
|
|
16
|
+
*
|
|
17
|
+
* @returns A promise resolving to the file content as a string.
|
|
18
|
+
*/
|
|
19
|
+
readFileContent(): Promise<string>;
|
|
20
|
+
/**
|
|
21
|
+
* Disposes the underlying file reader.
|
|
22
|
+
*/
|
|
23
|
+
dispose(): void;
|
|
24
|
+
}
|
|
25
|
+
//# sourceMappingURL=PoFileReader.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"PoFileReader.d.ts","sourceRoot":"","sources":["../../src/Resources/PoFileReader.ts"],"names":[],"mappings":"AAMA;;;;GAIG;AACH,qBAAa,YAAY;IAIrB,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAc;IAM1C;;;;OAIG;gBACgB,QAAQ,EAAE,MAAM;IAQnC;;;;OAIG;IACU,eAAe,IAAI,OAAO,CAAC,MAAM,CAAC;IAI/C;;OAEG;IACI,OAAO,IAAI,IAAI;CAMzB"}
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
// #region Imports
|
|
3
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
4
|
+
exports.PoFileReader = void 0;
|
|
5
|
+
const utilities_1 = require("@breadstone-infrastructure/utilities");
|
|
6
|
+
// #endregion
|
|
7
|
+
/**
|
|
8
|
+
* Class for reading `.po` files.
|
|
9
|
+
*
|
|
10
|
+
* @public
|
|
11
|
+
*/
|
|
12
|
+
class PoFileReader {
|
|
13
|
+
// #region Fields
|
|
14
|
+
_fileReader;
|
|
15
|
+
// #endregion
|
|
16
|
+
// #region Ctor
|
|
17
|
+
/**
|
|
18
|
+
* Constructs a new instance of the `PoFileReader` class.
|
|
19
|
+
*
|
|
20
|
+
* @param filePath - The path to the `.po` file.
|
|
21
|
+
*/
|
|
22
|
+
constructor(filePath) {
|
|
23
|
+
this._fileReader = new utilities_1.TextFileReader(filePath);
|
|
24
|
+
}
|
|
25
|
+
// #endregion
|
|
26
|
+
// #region Methods
|
|
27
|
+
/**
|
|
28
|
+
* Reads the entire content of the `.po` file.
|
|
29
|
+
*
|
|
30
|
+
* @returns A promise resolving to the file content as a string.
|
|
31
|
+
*/
|
|
32
|
+
async readFileContent() {
|
|
33
|
+
return this._fileReader.readToEnd();
|
|
34
|
+
}
|
|
35
|
+
/**
|
|
36
|
+
* Disposes the underlying file reader.
|
|
37
|
+
*/
|
|
38
|
+
dispose() {
|
|
39
|
+
this._fileReader.dispose();
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
exports.PoFileReader = PoFileReader;
|
|
43
|
+
//# sourceMappingURL=PoFileReader.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"PoFileReader.js","sourceRoot":"","sources":["../../src/Resources/PoFileReader.ts"],"names":[],"mappings":";AAAA,kBAAkB;;;AAElB,oEAAwF;AAExF,aAAa;AAEb;;;;GAIG;AACH,MAAa,YAAY;IAErB,iBAAiB;IAEA,WAAW,CAAc;IAE1C,aAAa;IAEb,eAAe;IAEf;;;;OAIG;IACH,YAAmB,QAAgB;QAC/B,IAAI,CAAC,WAAW,GAAG,IAAI,0BAAc,CAAC,QAAQ,CAAC,CAAC;IACpD,CAAC;IAED,aAAa;IAEb,kBAAkB;IAElB;;;;OAIG;IACI,KAAK,CAAC,eAAe;QACxB,OAAO,IAAI,CAAC,WAAW,CAAC,SAAS,EAAE,CAAC;IACxC,CAAC;IAED;;OAEG;IACI,OAAO;QACV,IAAI,CAAC,WAAW,CAAC,OAAO,EAAE,CAAC;IAC/B,CAAC;CAIJ;AAzCD,oCAyCC"}
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
import type { IResourceReaderAdapter } from './Interfaces/IResourceReaderAdapter';
|
|
2
|
+
import { type IFileSystem, type ILogger } from '@breadstone-infrastructure/utilities';
|
|
3
|
+
import type { IPoResourceInfo } from '../../Models/Interfaces/IPoResourceInfo';
|
|
4
|
+
/**
|
|
5
|
+
* A resource reader adapter that scans directories for po files.
|
|
6
|
+
*
|
|
7
|
+
* @public
|
|
8
|
+
*/
|
|
9
|
+
export declare class PoResourceReaderAdapter implements IResourceReaderAdapter {
|
|
10
|
+
private readonly _fileSystem;
|
|
11
|
+
private readonly _logger;
|
|
12
|
+
private readonly _glob;
|
|
13
|
+
/**
|
|
14
|
+
* Constructs a new instance of the `PoResourceReaderAdapter` class.
|
|
15
|
+
*
|
|
16
|
+
* @public
|
|
17
|
+
*/
|
|
18
|
+
constructor(fileSystem: IFileSystem, logger: ILogger);
|
|
19
|
+
/**
|
|
20
|
+
* Scans the specified directory for .po files.
|
|
21
|
+
*
|
|
22
|
+
* @public
|
|
23
|
+
* @param path - The path or paths to scan.
|
|
24
|
+
* @returns The resource information.
|
|
25
|
+
*/
|
|
26
|
+
scanDirectory(path: string | Array<string>): Array<IPoResourceInfo>;
|
|
27
|
+
/**
|
|
28
|
+
* Scans a specific file for resource information.
|
|
29
|
+
*
|
|
30
|
+
* @public
|
|
31
|
+
* @param path - The path to the file to scan.
|
|
32
|
+
* @returns The resource information or null if the file is not a valid resource.
|
|
33
|
+
*/
|
|
34
|
+
scanFile(path: string): IPoResourceInfo | null;
|
|
35
|
+
/**
|
|
36
|
+
* @private
|
|
37
|
+
*/
|
|
38
|
+
private invalidateDirectory;
|
|
39
|
+
/**
|
|
40
|
+
* @private
|
|
41
|
+
*/
|
|
42
|
+
private invalidateFile;
|
|
43
|
+
}
|
|
44
|
+
//# sourceMappingURL=PoResourceReaderAdapter.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"PoResourceReaderAdapter.d.ts","sourceRoot":"","sources":["../../../../src/Resources/Readers/Adapter/PoResourceReaderAdapter.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,qCAAqC,CAAC;AAClF,OAAO,EAAoB,KAAK,WAAW,EAAE,KAAK,OAAO,EAAE,MAAM,sCAAsC,CAAC;AAExG,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,yCAAyC,CAAC;AAK/E;;;;GAIG;AACH,qBAAa,uBAAwB,YAAW,sBAAsB;IAIlE,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,aAAa,CAAC,IAAI,EAAE,MAAM,GAAG,KAAK,CAAC,MAAM,CAAC,GAAG,KAAK,CAAC,eAAe,CAAC;IAuB1E;;;;;;OAMG;IACI,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,eAAe,GAAG,IAAI;IAqBrD;;OAEG;IACH,OAAO,CAAC,mBAAmB;IAoB3B;;OAEG;IACH,OAAO,CAAC,cAAc;CAoBzB"}
|