ng-wsl-library 0.18.0 → 0.19.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/esm2020/lib/directives/wsl-image.directive.mjs +3 -3
- package/esm2020/lib/pipes/wsl-lang-path/wsl-lang-path.pipe.mjs +28 -48
- package/fesm2015/ng-wsl-library.mjs +70 -83
- package/fesm2015/ng-wsl-library.mjs.map +1 -1
- package/fesm2020/ng-wsl-library.mjs +29 -49
- package/fesm2020/ng-wsl-library.mjs.map +1 -1
- package/lib/pipes/wsl-lang-path/wsl-lang-path.pipe.d.ts +3 -9
- package/package.json +1 -1
|
@@ -20,8 +20,8 @@ export class WslImageDirective {
|
|
|
20
20
|
this.el.nativeElement.removeEventListener('error', this.errorListener);
|
|
21
21
|
}
|
|
22
22
|
}
|
|
23
|
-
setupImageWithFallback() {
|
|
24
|
-
const primaryUrl = this.langPathPipe.transform(this.src, this.lang, this.domain);
|
|
23
|
+
async setupImageWithFallback() {
|
|
24
|
+
const primaryUrl = await this.langPathPipe.transform(this.src, this.lang, this.domain);
|
|
25
25
|
this.renderer.setAttribute(this.el.nativeElement, 'src', primaryUrl);
|
|
26
26
|
this.errorListener = () => {
|
|
27
27
|
if (!this.hasAttemptedFallback) {
|
|
@@ -67,4 +67,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImpor
|
|
|
67
67
|
}], hideOnError: [{
|
|
68
68
|
type: Input
|
|
69
69
|
}] } });
|
|
70
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
70
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid3NsLWltYWdlLmRpcmVjdGl2ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25nLXdzbC1saWJyYXJ5L3NyYy9saWIvZGlyZWN0aXZlcy93c2wtaW1hZ2UuZGlyZWN0aXZlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCxTQUFTLEVBRVQsS0FBSyxHQUlOLE1BQU0sZUFBZSxDQUFDOzs7QUFPdkIsTUFBTSxPQUFPLGlCQUFpQjtJQVc1QixZQUNVLEVBQWdDLEVBQ2hDLFFBQW1CLEVBQ25CLFlBQTZCO1FBRjdCLE9BQUUsR0FBRixFQUFFLENBQThCO1FBQ2hDLGFBQVEsR0FBUixRQUFRLENBQVc7UUFDbkIsaUJBQVksR0FBWixZQUFZLENBQWlCO1FBUjlCLGdCQUFXLEdBQVksSUFBSSxDQUFDLENBQUMsOENBQThDO1FBRzVFLHlCQUFvQixHQUFHLEtBQUssQ0FBQztJQU1sQyxDQUFDO0lBRUosUUFBUTtRQUNOLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxFQUFFO1lBQ2IsT0FBTztTQUNSO1FBRUQsSUFBSSxDQUFDLHNCQUFzQixFQUFFLENBQUM7SUFDaEMsQ0FBQztJQUVELFdBQVc7UUFDVCxJQUFJLElBQUksQ0FBQyxhQUFhLEVBQUU7WUFDdEIsSUFBSSxDQUFDLEVBQUUsQ0FBQyxhQUFhLENBQUMsbUJBQW1CLENBQUMsT0FBTyxFQUFFLElBQUksQ0FBQyxhQUFhLENBQUMsQ0FBQztTQUN4RTtJQUNILENBQUM7SUFFTyxLQUFLLENBQUMsc0JBQXNCO1FBQ2xDLE1BQU0sVUFBVSxHQUFHLE1BQU0sSUFBSSxDQUFDLFlBQVksQ0FBQyxTQUFTLENBQ2xELElBQUksQ0FBQyxHQUFHLEVBQ1IsSUFBSSxDQUFDLElBQUksRUFDVCxJQUFJLENBQUMsTUFBTSxDQUNaLENBQUM7UUFFRixJQUFJLENBQUMsUUFBUSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLGFBQWEsRUFBRSxLQUFLLEVBQUUsVUFBVSxDQUFDLENBQUM7UUFFckUsSUFBSSxDQUFDLGFBQWEsR0FBRyxHQUFHLEVBQUU7WUFDeEIsSUFBSSxDQUFDLElBQUksQ0FBQyxvQkFBb0IsRUFBRTtnQkFDOUIsSUFBSSxDQUFDLG9CQUFvQixHQUFHLElBQUksQ0FBQztnQkFFakMsTUFBTSxXQUFXLEdBQ2YsSUFBSSxDQUFDLGNBQWMsS0FBSyxTQUFTO29CQUMvQixDQUFDLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsR0FBRyxFQUFFLElBQUksQ0FBQyxjQUFjLENBQUM7b0JBQzlDLENBQUMsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxHQUFHLEVBQUUsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDO2dCQUUzQyxJQUFJLENBQUMsUUFBUSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLGFBQWEsRUFBRSxLQUFLLEVBQUUsV0FBVyxDQUFDLENBQUM7YUFDdkU7aUJBQU0sSUFBSSxJQUFJLENBQUMsV0FBVyxFQUFFO2dCQUMzQixJQUFJLENBQUMsUUFBUSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLGFBQWEsRUFBRSxLQUFLLEVBQUUsRUFBRSxDQUFDLENBQUM7Z0JBQzdELElBQUksQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsYUFBYSxFQUFFLFNBQVMsRUFBRSxNQUFNLENBQUMsQ0FBQzthQUNsRTtRQUNILENBQUMsQ0FBQztRQUVGLElBQUksQ0FBQyxFQUFFLENBQUMsYUFBYSxDQUFDLGdCQUFnQixDQUFDLE9BQU8sRUFBRSxJQUFJLENBQUMsYUFBYSxDQUFDLENBQUM7SUFDdEUsQ0FBQztJQUVPLFFBQVEsQ0FBQyxJQUFZLEVBQUUsTUFBc0I7UUFDbkQsSUFBSSxDQUFDLE1BQU0sRUFBRTtZQUNYLE9BQU8sSUFBSSxDQUFDO1NBQ2I7UUFDRCxNQUFNLFdBQVcsR0FBRyxNQUFNLENBQUMsT0FBTyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsQ0FBQztRQUM5QyxNQUFNLFNBQVMsR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsQ0FBQztRQUMxQyxPQUFPLEdBQUcsV0FBVyxJQUFJLFNBQVMsRUFBRSxDQUFDO0lBQ3ZDLENBQUM7OzhHQWxFVSxpQkFBaUI7a0dBQWpCLGlCQUFpQjsyRkFBakIsaUJBQWlCO2tCQUg3QixTQUFTO21CQUFDO29CQUNULFFBQVEsRUFBRSxlQUFlO2lCQUMxQjt1SkFFVSxHQUFHO3NCQUFYLEtBQUs7Z0JBQ0csSUFBSTtzQkFBWixLQUFLO2dCQUNHLE1BQU07c0JBQWQsS0FBSztnQkFDRyxjQUFjO3NCQUF0QixLQUFLO2dCQUNHLFVBQVU7c0JBQWxCLEtBQUs7Z0JBQ0csV0FBVztzQkFBbkIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIERpcmVjdGl2ZSxcbiAgRWxlbWVudFJlZixcbiAgSW5wdXQsXG4gIE9uSW5pdCxcbiAgUmVuZGVyZXIyLFxuICBPbkRlc3Ryb3ksXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgV3NsTGFuZ1BhdGhQaXBlIH0gZnJvbSAnLi4vcGlwZXMvd3NsLWxhbmctcGF0aC93c2wtbGFuZy1wYXRoLnBpcGUnO1xuaW1wb3J0IHsgV3NsTGFuZ1BhdGhPcHRpb25zIH0gZnJvbSAnLi4vaW50ZXJmYWNlcy93c2wtbGFuZy1wYXRoLW9wdGlvbnMuaW50ZXJmYWNlJztcblxuQERpcmVjdGl2ZSh7XG4gIHNlbGVjdG9yOiAnaW1nW3dzbEltYWdlXScsXG59KVxuZXhwb3J0IGNsYXNzIFdzbEltYWdlRGlyZWN0aXZlIGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3kge1xuICBASW5wdXQoKSBzcmMhOiBzdHJpbmc7XG4gIEBJbnB1dCgpIGxhbmc/OiBzdHJpbmc7XG4gIEBJbnB1dCgpIGRvbWFpbj86IHN0cmluZyB8IG51bGw7XG4gIEBJbnB1dCgpIGZhbGxiYWNrRG9tYWluPzogc3RyaW5nIHwgbnVsbDtcbiAgQElucHV0KCkgd3NsT3B0aW9ucz86IFdzbExhbmdQYXRoT3B0aW9ucztcbiAgQElucHV0KCkgaGlkZU9uRXJyb3I6IGJvb2xlYW4gPSB0cnVlOyAvLyBIaWRlIGltYWdlIGFmdGVyIGFsbCBmYWxsYmFjayBhdHRlbXB0cyBmYWlsXG5cbiAgcHJpdmF0ZSBlcnJvckxpc3RlbmVyPzogKCkgPT4gdm9pZDtcbiAgcHJpdmF0ZSBoYXNBdHRlbXB0ZWRGYWxsYmFjayA9IGZhbHNlO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgZWw6IEVsZW1lbnRSZWY8SFRNTEltYWdlRWxlbWVudD4sXG4gICAgcHJpdmF0ZSByZW5kZXJlcjogUmVuZGVyZXIyLFxuICAgIHByaXZhdGUgbGFuZ1BhdGhQaXBlOiBXc2xMYW5nUGF0aFBpcGVcbiAgKSB7fVxuXG4gIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIGlmICghdGhpcy5zcmMpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0aGlzLnNldHVwSW1hZ2VXaXRoRmFsbGJhY2soKTtcbiAgfVxuXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgIGlmICh0aGlzLmVycm9yTGlzdGVuZXIpIHtcbiAgICAgIHRoaXMuZWwubmF0aXZlRWxlbWVudC5yZW1vdmVFdmVudExpc3RlbmVyKCdlcnJvcicsIHRoaXMuZXJyb3JMaXN0ZW5lcik7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyBzZXR1cEltYWdlV2l0aEZhbGxiYWNrKCk6IFByb21pc2U8dm9pZD4ge1xuICAgIGNvbnN0IHByaW1hcnlVcmwgPSBhd2FpdCB0aGlzLmxhbmdQYXRoUGlwZS50cmFuc2Zvcm0oXG4gICAgICB0aGlzLnNyYyxcbiAgICAgIHRoaXMubGFuZyxcbiAgICAgIHRoaXMuZG9tYWluXG4gICAgKTtcblxuICAgIHRoaXMucmVuZGVyZXIuc2V0QXR0cmlidXRlKHRoaXMuZWwubmF0aXZlRWxlbWVudCwgJ3NyYycsIHByaW1hcnlVcmwpO1xuXG4gICAgdGhpcy5lcnJvckxpc3RlbmVyID0gKCkgPT4ge1xuICAgICAgaWYgKCF0aGlzLmhhc0F0dGVtcHRlZEZhbGxiYWNrKSB7XG4gICAgICAgIHRoaXMuaGFzQXR0ZW1wdGVkRmFsbGJhY2sgPSB0cnVlO1xuXG4gICAgICAgIGNvbnN0IGZhbGxiYWNrVXJsID1cbiAgICAgICAgICB0aGlzLmZhbGxiYWNrRG9tYWluICE9PSB1bmRlZmluZWRcbiAgICAgICAgICAgID8gdGhpcy5idWlsZFVybCh0aGlzLnNyYywgdGhpcy5mYWxsYmFja0RvbWFpbilcbiAgICAgICAgICAgIDogdGhpcy5idWlsZFVybCh0aGlzLnNyYywgdGhpcy5kb21haW4pO1xuXG4gICAgICAgIHRoaXMucmVuZGVyZXIuc2V0QXR0cmlidXRlKHRoaXMuZWwubmF0aXZlRWxlbWVudCwgJ3NyYycsIGZhbGxiYWNrVXJsKTtcbiAgICAgIH0gZWxzZSBpZiAodGhpcy5oaWRlT25FcnJvcikge1xuICAgICAgICB0aGlzLnJlbmRlcmVyLnNldEF0dHJpYnV0ZSh0aGlzLmVsLm5hdGl2ZUVsZW1lbnQsICdzcmMnLCAnJyk7XG4gICAgICAgIHRoaXMucmVuZGVyZXIuc2V0U3R5bGUodGhpcy5lbC5uYXRpdmVFbGVtZW50LCAnZGlzcGxheScsICdub25lJyk7XG4gICAgICB9XG4gICAgfTtcblxuICAgIHRoaXMuZWwubmF0aXZlRWxlbWVudC5hZGRFdmVudExpc3RlbmVyKCdlcnJvcicsIHRoaXMuZXJyb3JMaXN0ZW5lcik7XG4gIH1cblxuICBwcml2YXRlIGJ1aWxkVXJsKHBhdGg6IHN0cmluZywgZG9tYWluPzogc3RyaW5nIHwgbnVsbCk6IHN0cmluZyB7XG4gICAgaWYgKCFkb21haW4pIHtcbiAgICAgIHJldHVybiBwYXRoO1xuICAgIH1cbiAgICBjb25zdCBjbGVhbkRvbWFpbiA9IGRvbWFpbi5yZXBsYWNlKC9cXC8kLywgJycpO1xuICAgIGNvbnN0IGNsZWFuUGF0aCA9IHBhdGgucmVwbGFjZSgvXlxcLy8sICcnKTtcbiAgICByZXR1cm4gYCR7Y2xlYW5Eb21haW59LyR7Y2xlYW5QYXRofWA7XG4gIH1cbn1cbiJdfQ==
|
|
@@ -4,12 +4,12 @@ import * as i1 from "../../services/config/wsl-config.service";
|
|
|
4
4
|
export class WslLangPathPipe {
|
|
5
5
|
constructor(configService) {
|
|
6
6
|
this.configService = configService;
|
|
7
|
+
this.cache = new Map();
|
|
7
8
|
}
|
|
8
|
-
transform(url, langOrOptionsParam, domainParam, optionsParam) {
|
|
9
|
-
if (!url)
|
|
9
|
+
async transform(url, langOrOptionsParam, domainParam, optionsParam) {
|
|
10
|
+
if (!url)
|
|
10
11
|
return '';
|
|
11
|
-
|
|
12
|
-
// Smart parameter detection - check if second parameter is options object
|
|
12
|
+
// --- Parameter detection ---
|
|
13
13
|
let language;
|
|
14
14
|
let domain;
|
|
15
15
|
let options;
|
|
@@ -19,27 +19,15 @@ export class WslLangPathPipe {
|
|
|
19
19
|
options = { format: 'path', ...langOrOptionsParam };
|
|
20
20
|
}
|
|
21
21
|
else {
|
|
22
|
-
// Normal parameter order: pipe:'en':domain:options
|
|
23
22
|
language = langOrOptionsParam;
|
|
24
23
|
domain = domainParam;
|
|
25
24
|
options = { format: 'path', ...optionsParam };
|
|
26
25
|
}
|
|
27
26
|
const resolvedLanguage = language || this.configService.language || 'en';
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
}
|
|
33
|
-
else if (domain === null) {
|
|
34
|
-
resolvedDomain = '';
|
|
35
|
-
}
|
|
36
|
-
else {
|
|
37
|
-
resolvedDomain = domain;
|
|
38
|
-
}
|
|
39
|
-
}
|
|
40
|
-
else {
|
|
41
|
-
resolvedDomain = this.configService.get('domain', '');
|
|
42
|
-
}
|
|
27
|
+
const resolvedDomain = domain !== undefined && domain !== null
|
|
28
|
+
? domain
|
|
29
|
+
: this.configService.get('domain', '');
|
|
30
|
+
// --- Build URLs ---
|
|
43
31
|
const langSuffixUrl = this.addLanguageSuffix(url, resolvedLanguage);
|
|
44
32
|
const primaryUrl = resolvedDomain
|
|
45
33
|
? this.joinUrlParts(resolvedDomain, langSuffixUrl)
|
|
@@ -47,13 +35,15 @@ export class WslLangPathPipe {
|
|
|
47
35
|
const fallbackUrl = resolvedDomain
|
|
48
36
|
? this.joinUrlParts(resolvedDomain, url)
|
|
49
37
|
: url;
|
|
50
|
-
|
|
38
|
+
// --- Validate primary image ---
|
|
39
|
+
const isValid = await this.imageExists(primaryUrl);
|
|
40
|
+
const finalUrl = isValid ? primaryUrl : fallbackUrl;
|
|
41
|
+
return this.formatOutput(finalUrl, options);
|
|
51
42
|
}
|
|
52
43
|
addLanguageSuffix(url, language) {
|
|
53
44
|
const lastDotIndex = url.lastIndexOf('.');
|
|
54
|
-
if (lastDotIndex === -1)
|
|
45
|
+
if (lastDotIndex === -1)
|
|
55
46
|
return `${url}_${language}`;
|
|
56
|
-
}
|
|
57
47
|
const basePath = url.substring(0, lastDotIndex);
|
|
58
48
|
const extension = url.substring(lastDotIndex);
|
|
59
49
|
return `${basePath}_${language}${extension}`;
|
|
@@ -63,37 +53,27 @@ export class WslLangPathPipe {
|
|
|
63
53
|
const cleanPath = path.replace(/^\//, '');
|
|
64
54
|
return `${cleanDomain}/${cleanPath}`;
|
|
65
55
|
}
|
|
66
|
-
formatOutput(
|
|
56
|
+
formatOutput(url, options) {
|
|
67
57
|
switch (options.format) {
|
|
68
58
|
case 'url':
|
|
69
|
-
return `url(${primaryUrl})`;
|
|
70
59
|
case 'url-with-fallback':
|
|
71
|
-
return `url(${
|
|
60
|
+
return `url(${url})`;
|
|
72
61
|
case 'path':
|
|
73
62
|
default:
|
|
74
|
-
return
|
|
63
|
+
return url;
|
|
75
64
|
}
|
|
76
65
|
}
|
|
77
|
-
|
|
78
|
-
if (
|
|
79
|
-
return
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
}
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
}
|
|
89
|
-
const langSuffixUrl = this.addLanguageSuffix(url, lang);
|
|
90
|
-
const primaryUrl = resolvedDomain
|
|
91
|
-
? this.joinUrlParts(resolvedDomain, langSuffixUrl)
|
|
92
|
-
: langSuffixUrl;
|
|
93
|
-
const fallbackUrl = resolvedDomain
|
|
94
|
-
? this.joinUrlParts(resolvedDomain, url)
|
|
95
|
-
: url;
|
|
96
|
-
return { primary: primaryUrl, fallback: fallbackUrl };
|
|
66
|
+
async imageExists(src) {
|
|
67
|
+
if (this.cache.has(src))
|
|
68
|
+
return this.cache.get(src);
|
|
69
|
+
const result = await new Promise((resolve) => {
|
|
70
|
+
const img = new Image();
|
|
71
|
+
img.onload = () => resolve(true);
|
|
72
|
+
img.onerror = () => resolve(false);
|
|
73
|
+
img.src = src;
|
|
74
|
+
});
|
|
75
|
+
this.cache.set(src, result);
|
|
76
|
+
return result;
|
|
97
77
|
}
|
|
98
78
|
}
|
|
99
79
|
WslLangPathPipe.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: WslLangPathPipe, deps: [{ token: i1.WslConfigService }], target: i0.ɵɵFactoryTarget.Pipe });
|
|
@@ -110,4 +90,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImpor
|
|
|
110
90
|
name: 'wslLangPath',
|
|
111
91
|
}]
|
|
112
92
|
}], ctorParameters: function () { return [{ type: i1.WslConfigService }]; } });
|
|
113
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid3NsLWxhbmctcGF0aC5waXBlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmctd3NsLWxpYnJhcnkvc3JjL2xpYi9waXBlcy93c2wtbGFuZy1wYXRoL3dzbC1sYW5nLXBhdGgucGlwZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLElBQUksRUFBaUIsTUFBTSxlQUFlLENBQUM7OztBQVVoRSxNQUFNLE9BQU8sZUFBZTtJQUMxQixZQUFvQixhQUErQjtRQUEvQixrQkFBYSxHQUFiLGFBQWEsQ0FBa0I7SUFBRyxDQUFDO0lBYXZELFNBQVMsQ0FDUCxHQUFXLEVBQ1gsa0JBQWdELEVBQ2hELFdBQTJCLEVBQzNCLFlBQWlDO1FBRWpDLElBQUksQ0FBQyxHQUFHLEVBQUU7WUFDUixPQUFPLEVBQUUsQ0FBQztTQUNYO1FBRUQsMEVBQTBFO1FBQzFFLElBQUksUUFBNEIsQ0FBQztRQUNqQyxJQUFJLE1BQWlDLENBQUM7UUFDdEMsSUFBSSxPQUEyQixDQUFDO1FBRWhDLElBQUksT0FBTyxrQkFBa0IsS0FBSyxRQUFRLElBQUksa0JBQWtCLEtBQUssSUFBSSxFQUFFO1lBQ3pFLFFBQVEsR0FBRyxTQUFTLENBQUM7WUFDckIsTUFBTSxHQUFHLFNBQVMsQ0FBQztZQUNuQixPQUFPLEdBQUcsRUFBRSxNQUFNLEVBQUUsTUFBTSxFQUFFLEdBQUcsa0JBQWtCLEVBQUUsQ0FBQztTQUNyRDthQUFNO1lBQ0wsbURBQW1EO1lBQ25ELFFBQVEsR0FBRyxrQkFBd0MsQ0FBQztZQUNwRCxNQUFNLEdBQUcsV0FBVyxDQUFDO1lBQ3JCLE9BQU8sR0FBRyxFQUFFLE1BQU0sRUFBRSxNQUFNLEVBQUUsR0FBRyxZQUFZLEVBQUUsQ0FBQztTQUMvQztRQUVELE1BQU0sZ0JBQWdCLEdBQUcsUUFBUSxJQUFJLElBQUksQ0FBQyxhQUFhLENBQUMsUUFBUSxJQUFJLElBQUksQ0FBQztRQUV6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O1lBQ0wsY0FBYyxHQUFHLElBQUksQ0FBQyxhQUFhLENBQUMsR0FBRyxDQUFTLFFBQVEsRUFBRSxFQUFFLENBQUMsQ0FBQztTQUMvRDtRQUVELE1BQU0sYUFBYSxHQUFHLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxHQUFHLEVBQUUsSUFBSSxDQUFDLENBQUM7UUFDeEQsTUFBTSxVQUFVLEdBQUcsY0FBYztZQUMvQixDQUFDLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxjQUFjLEVBQUUsYUFBYSxDQUFDO1lBQ2xELENBQUMsQ0FBQyxhQUFhLENBQUM7UUFFbEIsTUFBTSxXQUFXLEdBQUcsY0FBYztZQUNoQyxDQUFDLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxjQUFjLEVBQUUsR0FBRyxDQUFDO1lBQ3hDLENBQUMsQ0FBQyxHQUFHLENBQUM7UUFFUixPQUFPLEVBQUUsT0FBTyxFQUFFLFVBQVUsRUFBRSxRQUFRLEVBQUUsV0FBVyxFQUFFLENBQUM7SUFDeEQsQ0FBQzs7NEdBcElVLGVBQWU7MEdBQWYsZUFBZTtnSEFBZixlQUFlLGNBTGQsTUFBTTsyRkFLUCxlQUFlO2tCQU4zQixVQUFVO21CQUFDO29CQUNWLFVBQVUsRUFBRSxNQUFNO2lCQUNuQjs7a0JBQ0EsSUFBSTttQkFBQztvQkFDSixJQUFJLEVBQUUsYUFBYTtpQkFDcEIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlLCBQaXBlLCBQaXBlVHJhbnNmb3JtIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBXc2xDb25maWdTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvY29uZmlnL3dzbC1jb25maWcuc2VydmljZSc7XG5pbXBvcnQgeyBXc2xMYW5nUGF0aE9wdGlvbnMgfSBmcm9tICcuLi8uLi9pbnRlcmZhY2VzL3dzbC1sYW5nLXBhdGgtb3B0aW9ucy5pbnRlcmZhY2UnO1xuXG5ASW5qZWN0YWJsZSh7XG4gIHByb3ZpZGVkSW46ICdyb290Jyxcbn0pXG5AUGlwZSh7XG4gIG5hbWU6ICd3c2xMYW5nUGF0aCcsXG59KVxuZXhwb3J0IGNsYXNzIFdzbExhbmdQYXRoUGlwZSBpbXBsZW1lbnRzIFBpcGVUcmFuc2Zvcm0ge1xuICBjb25zdHJ1Y3Rvcihwcml2YXRlIGNvbmZpZ1NlcnZpY2U6IFdzbENvbmZpZ1NlcnZpY2UpIHt9XG5cbiAgLy8gTWV0aG9kIG92ZXJsb2Fkc1xuICB0cmFuc2Zvcm0odXJsOiBzdHJpbmcpOiBzdHJpbmc7XG4gIHRyYW5zZm9ybSh1cmw6IHN0cmluZywgbGFuZ3VhZ2U6IHN0cmluZyk6IHN0cmluZztcbiAgdHJhbnNmb3JtKHVybDogc3RyaW5nLCBsYW5ndWFnZTogc3RyaW5nLCBkb21haW46IHN0cmluZyB8IG51bGwpOiBzdHJpbmc7XG4gIHRyYW5zZm9ybShcbiAgICB1cmw6IHN0cmluZyxcbiAgICBsYW5ndWFnZTogc3RyaW5nLFxuICAgIGRvbWFpbjogc3RyaW5nIHwgbnVsbCxcbiAgICBvcHRpb25zOiBXc2xMYW5nUGF0aE9wdGlvbnNcbiAgKTogc3RyaW5nO1xuICB0cmFuc2Zvcm0odXJsOiBzdHJpbmcsIG9wdGlvbnM6IFdzbExhbmdQYXRoT3B0aW9ucyk6IHN0cmluZztcbiAgdHJhbnNmb3JtKFxuICAgIHVybDogc3RyaW5nLFxuICAgIGxhbmdPck9wdGlvbnNQYXJhbT86IHN0cmluZyB8IFdzbExhbmdQYXRoT3B0aW9ucyxcbiAgICBkb21haW5QYXJhbT86IHN0cmluZyB8IG51bGwsXG4gICAgb3B0aW9uc1BhcmFtPzogV3NsTGFuZ1BhdGhPcHRpb25zXG4gICk6IHN0cmluZyB7XG4gICAgaWYgKCF1cmwpIHtcbiAgICAgIHJldHVybiAnJztcbiAgICB9XG5cbiAgICAvLyBTbWFydCBwYXJhbWV0ZXIgZGV0ZWN0aW9uIC0gY2hlY2sgaWYgc2Vjb25kIHBhcmFtZXRlciBpcyBvcHRpb25zIG9iamVjdFxuICAgIGxldCBsYW5ndWFnZTogc3RyaW5nIHwgdW5kZWZpbmVkO1xuICAgIGxldCBkb21haW46IHN0cmluZyB8IG51bGwgfCB1bmRlZmluZWQ7XG4gICAgbGV0IG9wdGlvbnM6IFdzbExhbmdQYXRoT3B0aW9ucztcblxuICAgIGlmICh0eXBlb2YgbGFuZ09yT3B0aW9uc1BhcmFtID09PSAnb2JqZWN0JyAmJiBsYW5nT3JPcHRpb25zUGFyYW0gIT09IG51bGwpIHtcbiAgICAgIGxhbmd1YWdlID0gdW5kZWZpbmVkO1xuICAgICAgZG9tYWluID0gdW5kZWZpbmVkO1xuICAgICAgb3B0aW9ucyA9IHsgZm9ybWF0OiAncGF0aCcsIC4uLmxhbmdPck9wdGlvbnNQYXJhbSB9O1xuICAgIH0gZWxzZSB7XG4gICAgICAvLyBOb3JtYWwgcGFyYW1ldGVyIG9yZGVyOiBwaXBlOidlbic6ZG9tYWluOm9wdGlvbnNcbiAgICAgIGxhbmd1YWdlID0gbGFuZ09yT3B0aW9uc1BhcmFtIGFzIHN0cmluZyB8IHVuZGVmaW5lZDtcbiAgICAgIGRvbWFpbiA9IGRvbWFpblBhcmFtO1xuICAgICAgb3B0aW9ucyA9IHsgZm9ybWF0OiAncGF0aCcsIC4uLm9wdGlvbnNQYXJhbSB9O1xuICAgIH1cblxuICAgIGNvbnN0IHJlc29sdmVkTGFuZ3VhZ2UgPSBsYW5ndWFnZSB8fCB0aGlzLmNvbmZpZ1NlcnZpY2UubGFuZ3VhZ2UgfHwgJ2VuJztcblxuICAgIGxldCByZXNvbHZlZERvbWFpbiA9ICcnO1xuICAgIGlmIChkb21haW4gIT09IHVuZGVmaW5lZCkge1xuICAgICAgaWYgKGRvbWFpbiA9PT0gJycpIHtcbiAgICAgICAgcmVzb2x2ZWREb21haW4gPSAnJztcbiAgICAgIH0gZWxzZSBpZiAoZG9tYWluID09PSBudWxsKSB7XG4gICAgICAgIHJlc29sdmVkRG9tYWluID0gJyc7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICByZXNvbHZlZERvbWFpbiA9IGRvbWFpbjtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgcmVzb2x2ZWREb21haW4gPSB0aGlzLmNvbmZpZ1NlcnZpY2UuZ2V0PHN0cmluZz4oJ2RvbWFpbicsICcnKTtcbiAgICB9XG5cbiAgICBjb25zdCBsYW5nU3VmZml4VXJsID0gdGhpcy5hZGRMYW5ndWFnZVN1ZmZpeCh1cmwsIHJlc29sdmVkTGFuZ3VhZ2UpO1xuICAgIGNvbnN0IHByaW1hcnlVcmwgPSByZXNvbHZlZERvbWFpblxuICAgICAgPyB0aGlzLmpvaW5VcmxQYXJ0cyhyZXNvbHZlZERvbWFpbiwgbGFuZ1N1ZmZpeFVybClcbiAgICAgIDogbGFuZ1N1ZmZpeFVybDtcblxuICAgIGNvbnN0IGZhbGxiYWNrVXJsID0gcmVzb2x2ZWREb21haW5cbiAgICAgID8gdGhpcy5qb2luVXJsUGFydHMocmVzb2x2ZWREb21haW4sIHVybClcbiAgICAgIDogdXJsO1xuXG4gICAgcmV0dXJuIHRoaXMuZm9ybWF0T3V0cHV0KHByaW1hcnlVcmwsIGZhbGxiYWNrVXJsLCBvcHRpb25zKTtcbiAgfVxuXG4gIHByaXZhdGUgYWRkTGFuZ3VhZ2VTdWZmaXgodXJsOiBzdHJpbmcsIGxhbmd1YWdlOiBzdHJpbmcpOiBzdHJpbmcge1xuICAgIGNvbnN0IGxhc3REb3RJbmRleCA9IHVybC5sYXN0SW5kZXhPZignLicpO1xuXG4gICAgaWYgKGxhc3REb3RJbmRleCA9PT0gLTEpIHtcbiAgICAgIHJldHVybiBgJHt1cmx9XyR7bGFuZ3VhZ2V9YDtcbiAgICB9XG5cbiAgICBjb25zdCBiYXNlUGF0aCA9IHVybC5zdWJzdHJpbmcoMCwgbGFzdERvdEluZGV4KTtcbiAgICBjb25zdCBleHRlbnNpb24gPSB1cmwuc3Vic3RyaW5nKGxhc3REb3RJbmRleCk7XG5cbiAgICByZXR1cm4gYCR7YmFzZVBhdGh9XyR7bGFuZ3VhZ2V9JHtleHRlbnNpb259YDtcbiAgfVxuXG4gIHByaXZhdGUgam9pblVybFBhcnRzKGRvbWFpbjogc3RyaW5nLCBwYXRoOiBzdHJpbmcpOiBzdHJpbmcge1xuICAgIGNvbnN0IGNsZWFuRG9tYWluID0gZG9tYWluLnJlcGxhY2UoL1xcLyQvLCAnJyk7XG4gICAgY29uc3QgY2xlYW5QYXRoID0gcGF0aC5yZXBsYWNlKC9eXFwvLywgJycpO1xuICAgIHJldHVybiBgJHtjbGVhbkRvbWFpbn0vJHtjbGVhblBhdGh9YDtcbiAgfVxuXG4gIHByaXZhdGUgZm9ybWF0T3V0cHV0KFxuICAgIHByaW1hcnlVcmw6IHN0cmluZyxcbiAgICBmYWxsYmFja1VybDogc3RyaW5nLFxuICAgIG9wdGlvbnM6IFdzbExhbmdQYXRoT3B0aW9uc1xuICApOiBzdHJpbmcge1xuICAgIHN3aXRjaCAob3B0aW9ucy5mb3JtYXQpIHtcbiAgICAgIGNhc2UgJ3VybCc6XG4gICAgICAgIHJldHVybiBgdXJsKCR7cHJpbWFyeVVybH0pYDtcblxuICAgICAgY2FzZSAndXJsLXdpdGgtZmFsbGJhY2snOlxuICAgICAgICByZXR1cm4gYHVybCgke3ByaW1hcnlVcmx9KSwgdXJsKCR7ZmFsbGJhY2tVcmx9KWA7XG5cbiAgICAgIGNhc2UgJ3BhdGgnOlxuICAgICAgZGVmYXVsdDpcbiAgICAgICAgcmV0dXJuIHByaW1hcnlVcmw7XG4gICAgfVxuICB9XG5cbiAgZ2V0VXJscyhcbiAgICB1cmw6IHN0cmluZyxcbiAgICBsYW5ndWFnZT86IHN0cmluZyxcbiAgICBkb21haW4/OiBzdHJpbmcgfCBudWxsXG4gICk6IHsgcHJpbWFyeTogc3RyaW5nOyBmYWxsYmFjazogc3RyaW5nIH0ge1xuICAgIGlmICghdXJsKSB7XG4gICAgICByZXR1cm4geyBwcmltYXJ5OiAnJywgZmFsbGJhY2s6ICcnIH07XG4gICAgfVxuXG4gICAgY29uc3QgbGFuZyA9IGxhbmd1YWdlIHx8IHRoaXMuY29uZmlnU2VydmljZS5sYW5ndWFnZSB8fCAnZW4nO1xuXG4gICAgbGV0IHJlc29sdmVkRG9tYWluID0gJyc7XG4gICAgaWYgKGRvbWFpbiAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICByZXNvbHZlZERvbWFpbiA9IGRvbWFpbiB8fCAnJztcbiAgICB9IGVsc2Uge1xuICAgICAgcmVzb2x2ZWREb21haW4gPSB0aGlzLmNvbmZpZ1NlcnZpY2UuZ2V0PHN0cmluZz4oJ2RvbWFpbicsICcnKTtcbiAgICB9XG5cbiAgICBjb25zdCBsYW5nU3VmZml4VXJsID0gdGhpcy5hZGRMYW5ndWFnZVN1ZmZpeCh1cmwsIGxhbmcpO1xuICAgIGNvbnN0IHByaW1hcnlVcmwgPSByZXNvbHZlZERvbWFpblxuICAgICAgPyB0aGlzLmpvaW5VcmxQYXJ0cyhyZXNvbHZlZERvbWFpbiwgbGFuZ1N1ZmZpeFVybClcbiAgICAgIDogbGFuZ1N1ZmZpeFVybDtcblxuICAgIGNvbnN0IGZhbGxiYWNrVXJsID0gcmVzb2x2ZWREb21haW5cbiAgICAgID8gdGhpcy5qb2luVXJsUGFydHMocmVzb2x2ZWREb21haW4sIHVybClcbiAgICAgIDogdXJsO1xuXG4gICAgcmV0dXJuIHsgcHJpbWFyeTogcHJpbWFyeVVybCwgZmFsbGJhY2s6IGZhbGxiYWNrVXJsIH07XG4gIH1cbn1cbiJdfQ==
|
|
93
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid3NsLWxhbmctcGF0aC5waXBlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmctd3NsLWxpYnJhcnkvc3JjL2xpYi9waXBlcy93c2wtbGFuZy1wYXRoL3dzbC1sYW5nLXBhdGgucGlwZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLElBQUksRUFBaUIsTUFBTSxlQUFlLENBQUM7OztBQVVoRSxNQUFNLE9BQU8sZUFBZTtJQUcxQixZQUFvQixhQUErQjtRQUEvQixrQkFBYSxHQUFiLGFBQWEsQ0FBa0I7UUFGM0MsVUFBSyxHQUFHLElBQUksR0FBRyxFQUFtQixDQUFDO0lBRVcsQ0FBQztJQUV2RCxLQUFLLENBQUMsU0FBUyxDQUNiLEdBQVcsRUFDWCxrQkFBZ0QsRUFDaEQsV0FBMkIsRUFDM0IsWUFBaUM7UUFFakMsSUFBSSxDQUFDLEdBQUc7WUFBRSxPQUFPLEVBQUUsQ0FBQztRQUVwQiw4QkFBOEI7UUFDOUIsSUFBSSxRQUE0QixDQUFDO1FBQ2pDLElBQUksTUFBaUMsQ0FBQztRQUN0QyxJQUFJLE9BQTJCLENBQUM7UUFFaEMsSUFBSSxPQUFPLGtCQUFrQixLQUFLLFFBQVEsSUFBSSxrQkFBa0IsS0FBSyxJQUFJLEVBQUU7WUFDekUsUUFBUSxHQUFHLFNBQVMsQ0FBQztZQUNyQixNQUFNLEdBQUcsU0FBUyxDQUFDO1lBQ25CLE9BQU8sR0FBRyxFQUFFLE1BQU0sRUFBRSxNQUFNLEVBQUUsR0FBRyxrQkFBa0IsRUFBRSxDQUFDO1NBQ3JEO2FBQU07WUFDTCxRQUFRLEdBQUcsa0JBQXdDLENBQUM7WUFDcEQsTUFBTSxHQUFHLFdBQVcsQ0FBQztZQUNyQixPQUFPLEdBQUcsRUFBRSxNQUFNLEVBQUUsTUFBTSxFQUFFLEdBQUcsWUFBWSxFQUFFLENBQUM7U0FDL0M7UUFFRCxNQUFNLGdCQUFnQixHQUFHLFFBQVEsSUFBSSxJQUFJLENBQUMsYUFBYSxDQUFD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O1lBQ25DLEdBQUcsQ0FBQyxHQUFHLEdBQUcsR0FBRyxDQUFDO1FBQ2hCLENBQUMsQ0FBQyxDQUFDO1FBRUgsSUFBSSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsR0FBRyxFQUFFLE1BQU0sQ0FBQyxDQUFDO1FBQzVCLE9BQU8sTUFBTSxDQUFDO0lBQ2hCLENBQUM7OzRHQXhGVSxlQUFlOzBHQUFmLGVBQWU7Z0hBQWYsZUFBZSxjQUxkLE1BQU07MkZBS1AsZUFBZTtrQkFOM0IsVUFBVTttQkFBQztvQkFDVixVQUFVLEVBQUUsTUFBTTtpQkFDbkI7O2tCQUNBLElBQUk7bUJBQUM7b0JBQ0osSUFBSSxFQUFFLGFBQWE7aUJBQ3BCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSwgUGlwZSwgUGlwZVRyYW5zZm9ybSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgV3NsQ29uZmlnU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL2NvbmZpZy93c2wtY29uZmlnLnNlcnZpY2UnO1xuaW1wb3J0IHsgV3NsTGFuZ1BhdGhPcHRpb25zIH0gZnJvbSAnLi4vLi4vaW50ZXJmYWNlcy93c2wtbGFuZy1wYXRoLW9wdGlvbnMuaW50ZXJmYWNlJztcblxuQEluamVjdGFibGUoe1xuICBwcm92aWRlZEluOiAncm9vdCcsXG59KVxuQFBpcGUoe1xuICBuYW1lOiAnd3NsTGFuZ1BhdGgnLFxufSlcbmV4cG9ydCBjbGFzcyBXc2xMYW5nUGF0aFBpcGUgaW1wbGVtZW50cyBQaXBlVHJhbnNmb3JtIHtcbiAgcHJpdmF0ZSBjYWNoZSA9IG5ldyBNYXA8c3RyaW5nLCBib29sZWFuPigpO1xuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgY29uZmlnU2VydmljZTogV3NsQ29uZmlnU2VydmljZSkge31cblxuICBhc3luYyB0cmFuc2Zvcm0oXG4gICAgdXJsOiBzdHJpbmcsXG4gICAgbGFuZ09yT3B0aW9uc1BhcmFtPzogc3RyaW5nIHwgV3NsTGFuZ1BhdGhPcHRpb25zLFxuICAgIGRvbWFpblBhcmFtPzogc3RyaW5nIHwgbnVsbCxcbiAgICBvcHRpb25zUGFyYW0/OiBXc2xMYW5nUGF0aE9wdGlvbnNcbiAgKTogUHJvbWlzZTxzdHJpbmc+IHtcbiAgICBpZiAoIXVybCkgcmV0dXJuICcnO1xuXG4gICAgLy8gLS0tIFBhcmFtZXRlciBkZXRlY3Rpb24gLS0tXG4gICAgbGV0IGxhbmd1YWdlOiBzdHJpbmcgfCB1bmRlZmluZWQ7XG4gICAgbGV0IGRvbWFpbjogc3RyaW5nIHwgbnVsbCB8IHVuZGVmaW5lZDtcbiAgICBsZXQgb3B0aW9uczogV3NsTGFuZ1BhdGhPcHRpb25zO1xuXG4gICAgaWYgKHR5cGVvZiBsYW5nT3JPcHRpb25zUGFyYW0gPT09ICdvYmplY3QnICYmIGxhbmdPck9wdGlvbnNQYXJhbSAhPT0gbnVsbCkge1xuICAgICAgbGFuZ3VhZ2UgPSB1bmRlZmluZWQ7XG4gICAgICBkb21haW4gPSB1bmRlZmluZWQ7XG4gICAgICBvcHRpb25zID0geyBmb3JtYXQ6ICdwYXRoJywgLi4ubGFuZ09yT3B0aW9uc1BhcmFtIH07XG4gICAgfSBlbHNlIHtcbiAgICAgIGxhbmd1YWdlID0gbGFuZ09yT3B0aW9uc1BhcmFtIGFzIHN0cmluZyB8IHVuZGVmaW5lZDtcbiAgICAgIGRvbWFpbiA9IGRvbWFpblBhcmFtO1xuICAgICAgb3B0aW9ucyA9IHsgZm9ybWF0OiAncGF0aCcsIC4uLm9wdGlvbnNQYXJhbSB9O1xuICAgIH1cblxuICAgIGNvbnN0IHJlc29sdmVkTGFuZ3VhZ2UgPSBsYW5ndWFnZSB8fCB0aGlzLmNvbmZpZ1NlcnZpY2UubGFuZ3VhZ2UgfHwgJ2VuJztcbiAgICBjb25zdCByZXNvbHZlZERvbWFpbiA9XG4gICAgICBkb21haW4gIT09IHVuZGVmaW5lZCAmJiBkb21haW4gIT09IG51bGxcbiAgICAgICAgPyBkb21haW5cbiAgICAgICAgOiB0aGlzLmNvbmZpZ1NlcnZpY2UuZ2V0PHN0cmluZz4oJ2RvbWFpbicsICcnKTtcblxuICAgIC8vIC0tLSBCdWlsZCBVUkxzIC0tLVxuICAgIGNvbnN0IGxhbmdTdWZmaXhVcmwgPSB0aGlzLmFkZExhbmd1YWdlU3VmZml4KHVybCwgcmVzb2x2ZWRMYW5ndWFnZSk7XG4gICAgY29uc3QgcHJpbWFyeVVybCA9IHJlc29sdmVkRG9tYWluXG4gICAgICA/IHRoaXMuam9pblVybFBhcnRzKHJlc29sdmVkRG9tYWluLCBsYW5nU3VmZml4VXJsKVxuICAgICAgOiBsYW5nU3VmZml4VXJsO1xuXG4gICAgY29uc3QgZmFsbGJhY2tVcmwgPSByZXNvbHZlZERvbWFpblxuICAgICAgPyB0aGlzLmpvaW5VcmxQYXJ0cyhyZXNvbHZlZERvbWFpbiwgdXJsKVxuICAgICAgOiB1cmw7XG5cbiAgICAvLyAtLS0gVmFsaWRhdGUgcHJpbWFyeSBpbWFnZSAtLS1cbiAgICBjb25zdCBpc1ZhbGlkID0gYXdhaXQgdGhpcy5pbWFnZUV4aXN0cyhwcmltYXJ5VXJsKTtcbiAgICBjb25zdCBmaW5hbFVybCA9IGlzVmFsaWQgPyBwcmltYXJ5VXJsIDogZmFsbGJhY2tVcmw7XG5cbiAgICByZXR1cm4gdGhpcy5mb3JtYXRPdXRwdXQoZmluYWxVcmwsIG9wdGlvbnMpO1xuICB9XG5cbiAgcHJpdmF0ZSBhZGRMYW5ndWFnZVN1ZmZpeCh1cmw6IHN0cmluZywgbGFuZ3VhZ2U6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgY29uc3QgbGFzdERvdEluZGV4ID0gdXJsLmxhc3RJbmRleE9mKCcuJyk7XG4gICAgaWYgKGxhc3REb3RJbmRleCA9PT0gLTEpIHJldHVybiBgJHt1cmx9XyR7bGFuZ3VhZ2V9YDtcbiAgICBjb25zdCBiYXNlUGF0aCA9IHVybC5zdWJzdHJpbmcoMCwgbGFzdERvdEluZGV4KTtcbiAgICBjb25zdCBleHRlbnNpb24gPSB1cmwuc3Vic3RyaW5nKGxhc3REb3RJbmRleCk7XG4gICAgcmV0dXJuIGAke2Jhc2VQYXRofV8ke2xhbmd1YWdlfSR7ZXh0ZW5zaW9ufWA7XG4gIH1cblxuICBwcml2YXRlIGpvaW5VcmxQYXJ0cyhkb21haW46IHN0cmluZywgcGF0aDogc3RyaW5nKTogc3RyaW5nIHtcbiAgICBjb25zdCBjbGVhbkRvbWFpbiA9IGRvbWFpbi5yZXBsYWNlKC9cXC8kLywgJycpO1xuICAgIGNvbnN0IGNsZWFuUGF0aCA9IHBhdGgucmVwbGFjZSgvXlxcLy8sICcnKTtcbiAgICByZXR1cm4gYCR7Y2xlYW5Eb21haW59LyR7Y2xlYW5QYXRofWA7XG4gIH1cblxuICBwcml2YXRlIGZvcm1hdE91dHB1dCh1cmw6IHN0cmluZywgb3B0aW9uczogV3NsTGFuZ1BhdGhPcHRpb25zKTogc3RyaW5nIHtcbiAgICBzd2l0Y2ggKG9wdGlvbnMuZm9ybWF0KSB7XG4gICAgICBjYXNlICd1cmwnOlxuICAgICAgY2FzZSAndXJsLXdpdGgtZmFsbGJhY2snOlxuICAgICAgICByZXR1cm4gYHVybCgke3VybH0pYDtcbiAgICAgIGNhc2UgJ3BhdGgnOlxuICAgICAgZGVmYXVsdDpcbiAgICAgICAgcmV0dXJuIHVybDtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGFzeW5jIGltYWdlRXhpc3RzKHNyYzogc3RyaW5nKTogUHJvbWlzZTxib29sZWFuPiB7XG4gICAgaWYgKHRoaXMuY2FjaGUuaGFzKHNyYykpIHJldHVybiB0aGlzLmNhY2hlLmdldChzcmMpITtcblxuICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IG5ldyBQcm9taXNlPGJvb2xlYW4+KChyZXNvbHZlKSA9PiB7XG4gICAgICBjb25zdCBpbWcgPSBuZXcgSW1hZ2UoKTtcbiAgICAgIGltZy5vbmxvYWQgPSAoKSA9PiByZXNvbHZlKHRydWUpO1xuICAgICAgaW1nLm9uZXJyb3IgPSAoKSA9PiByZXNvbHZlKGZhbHNlKTtcbiAgICAgIGltZy5zcmMgPSBzcmM7XG4gICAgfSk7XG5cbiAgICB0aGlzLmNhY2hlLnNldChzcmMsIHJlc3VsdCk7XG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfVxufVxuIl19
|
|
@@ -4,6 +4,7 @@ import * as i2 from '@angular/common';
|
|
|
4
4
|
import { CommonModule, DOCUMENT } from '@angular/common';
|
|
5
5
|
import { BehaviorSubject, Subject, fromEvent, noop } from 'rxjs';
|
|
6
6
|
import { map, distinctUntilChanged, debounceTime, throttleTime, startWith } from 'rxjs/operators';
|
|
7
|
+
import { __awaiter } from 'tslib';
|
|
7
8
|
import { cloneDeep } from 'lodash';
|
|
8
9
|
import * as i1 from '@angular/animations';
|
|
9
10
|
import { animate, style } from '@angular/animations';
|
|
@@ -457,56 +458,48 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImpor
|
|
|
457
458
|
class WslLangPathPipe {
|
|
458
459
|
constructor(configService) {
|
|
459
460
|
this.configService = configService;
|
|
461
|
+
this.cache = new Map();
|
|
460
462
|
}
|
|
461
463
|
transform(url, langOrOptionsParam, domainParam, optionsParam) {
|
|
462
|
-
|
|
463
|
-
|
|
464
|
-
|
|
465
|
-
|
|
466
|
-
|
|
467
|
-
|
|
468
|
-
|
|
469
|
-
|
|
470
|
-
|
|
471
|
-
|
|
472
|
-
|
|
473
|
-
}
|
|
474
|
-
else {
|
|
475
|
-
// Normal parameter order: pipe:'en':domain:options
|
|
476
|
-
language = langOrOptionsParam;
|
|
477
|
-
domain = domainParam;
|
|
478
|
-
options = Object.assign({ format: 'path' }, optionsParam);
|
|
479
|
-
}
|
|
480
|
-
const resolvedLanguage = language || this.configService.language || 'en';
|
|
481
|
-
let resolvedDomain = '';
|
|
482
|
-
if (domain !== undefined) {
|
|
483
|
-
if (domain === '') {
|
|
484
|
-
resolvedDomain = '';
|
|
485
|
-
}
|
|
486
|
-
else if (domain === null) {
|
|
487
|
-
resolvedDomain = '';
|
|
464
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
465
|
+
if (!url)
|
|
466
|
+
return '';
|
|
467
|
+
// --- Parameter detection ---
|
|
468
|
+
let language;
|
|
469
|
+
let domain;
|
|
470
|
+
let options;
|
|
471
|
+
if (typeof langOrOptionsParam === 'object' && langOrOptionsParam !== null) {
|
|
472
|
+
language = undefined;
|
|
473
|
+
domain = undefined;
|
|
474
|
+
options = Object.assign({ format: 'path' }, langOrOptionsParam);
|
|
488
475
|
}
|
|
489
476
|
else {
|
|
490
|
-
|
|
477
|
+
language = langOrOptionsParam;
|
|
478
|
+
domain = domainParam;
|
|
479
|
+
options = Object.assign({ format: 'path' }, optionsParam);
|
|
491
480
|
}
|
|
492
|
-
|
|
493
|
-
|
|
494
|
-
|
|
495
|
-
|
|
496
|
-
|
|
497
|
-
|
|
498
|
-
|
|
499
|
-
|
|
500
|
-
|
|
501
|
-
|
|
502
|
-
|
|
503
|
-
|
|
481
|
+
const resolvedLanguage = language || this.configService.language || 'en';
|
|
482
|
+
const resolvedDomain = domain !== undefined && domain !== null
|
|
483
|
+
? domain
|
|
484
|
+
: this.configService.get('domain', '');
|
|
485
|
+
// --- Build URLs ---
|
|
486
|
+
const langSuffixUrl = this.addLanguageSuffix(url, resolvedLanguage);
|
|
487
|
+
const primaryUrl = resolvedDomain
|
|
488
|
+
? this.joinUrlParts(resolvedDomain, langSuffixUrl)
|
|
489
|
+
: langSuffixUrl;
|
|
490
|
+
const fallbackUrl = resolvedDomain
|
|
491
|
+
? this.joinUrlParts(resolvedDomain, url)
|
|
492
|
+
: url;
|
|
493
|
+
// --- Validate primary image ---
|
|
494
|
+
const isValid = yield this.imageExists(primaryUrl);
|
|
495
|
+
const finalUrl = isValid ? primaryUrl : fallbackUrl;
|
|
496
|
+
return this.formatOutput(finalUrl, options);
|
|
497
|
+
});
|
|
504
498
|
}
|
|
505
499
|
addLanguageSuffix(url, language) {
|
|
506
500
|
const lastDotIndex = url.lastIndexOf('.');
|
|
507
|
-
if (lastDotIndex === -1)
|
|
501
|
+
if (lastDotIndex === -1)
|
|
508
502
|
return `${url}_${language}`;
|
|
509
|
-
}
|
|
510
503
|
const basePath = url.substring(0, lastDotIndex);
|
|
511
504
|
const extension = url.substring(lastDotIndex);
|
|
512
505
|
return `${basePath}_${language}${extension}`;
|
|
@@ -516,37 +509,29 @@ class WslLangPathPipe {
|
|
|
516
509
|
const cleanPath = path.replace(/^\//, '');
|
|
517
510
|
return `${cleanDomain}/${cleanPath}`;
|
|
518
511
|
}
|
|
519
|
-
formatOutput(
|
|
512
|
+
formatOutput(url, options) {
|
|
520
513
|
switch (options.format) {
|
|
521
514
|
case 'url':
|
|
522
|
-
return `url(${primaryUrl})`;
|
|
523
515
|
case 'url-with-fallback':
|
|
524
|
-
return `url(${
|
|
516
|
+
return `url(${url})`;
|
|
525
517
|
case 'path':
|
|
526
518
|
default:
|
|
527
|
-
return
|
|
528
|
-
}
|
|
529
|
-
}
|
|
530
|
-
|
|
531
|
-
|
|
532
|
-
|
|
533
|
-
|
|
534
|
-
|
|
535
|
-
|
|
536
|
-
|
|
537
|
-
|
|
538
|
-
|
|
539
|
-
|
|
540
|
-
|
|
541
|
-
|
|
542
|
-
|
|
543
|
-
const primaryUrl = resolvedDomain
|
|
544
|
-
? this.joinUrlParts(resolvedDomain, langSuffixUrl)
|
|
545
|
-
: langSuffixUrl;
|
|
546
|
-
const fallbackUrl = resolvedDomain
|
|
547
|
-
? this.joinUrlParts(resolvedDomain, url)
|
|
548
|
-
: url;
|
|
549
|
-
return { primary: primaryUrl, fallback: fallbackUrl };
|
|
519
|
+
return url;
|
|
520
|
+
}
|
|
521
|
+
}
|
|
522
|
+
imageExists(src) {
|
|
523
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
524
|
+
if (this.cache.has(src))
|
|
525
|
+
return this.cache.get(src);
|
|
526
|
+
const result = yield new Promise((resolve) => {
|
|
527
|
+
const img = new Image();
|
|
528
|
+
img.onload = () => resolve(true);
|
|
529
|
+
img.onerror = () => resolve(false);
|
|
530
|
+
img.src = src;
|
|
531
|
+
});
|
|
532
|
+
this.cache.set(src, result);
|
|
533
|
+
return result;
|
|
534
|
+
});
|
|
550
535
|
}
|
|
551
536
|
}
|
|
552
537
|
WslLangPathPipe.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: WslLangPathPipe, deps: [{ token: WslConfigService }], target: i0.ɵɵFactoryTarget.Pipe });
|
|
@@ -1151,22 +1136,24 @@ class WslImageDirective {
|
|
|
1151
1136
|
}
|
|
1152
1137
|
}
|
|
1153
1138
|
setupImageWithFallback() {
|
|
1154
|
-
|
|
1155
|
-
|
|
1156
|
-
|
|
1157
|
-
|
|
1158
|
-
this.hasAttemptedFallback
|
|
1159
|
-
|
|
1160
|
-
|
|
1161
|
-
|
|
1162
|
-
|
|
1163
|
-
|
|
1164
|
-
|
|
1165
|
-
|
|
1166
|
-
|
|
1167
|
-
|
|
1168
|
-
|
|
1169
|
-
|
|
1139
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
1140
|
+
const primaryUrl = yield this.langPathPipe.transform(this.src, this.lang, this.domain);
|
|
1141
|
+
this.renderer.setAttribute(this.el.nativeElement, 'src', primaryUrl);
|
|
1142
|
+
this.errorListener = () => {
|
|
1143
|
+
if (!this.hasAttemptedFallback) {
|
|
1144
|
+
this.hasAttemptedFallback = true;
|
|
1145
|
+
const fallbackUrl = this.fallbackDomain !== undefined
|
|
1146
|
+
? this.buildUrl(this.src, this.fallbackDomain)
|
|
1147
|
+
: this.buildUrl(this.src, this.domain);
|
|
1148
|
+
this.renderer.setAttribute(this.el.nativeElement, 'src', fallbackUrl);
|
|
1149
|
+
}
|
|
1150
|
+
else if (this.hideOnError) {
|
|
1151
|
+
this.renderer.setAttribute(this.el.nativeElement, 'src', '');
|
|
1152
|
+
this.renderer.setStyle(this.el.nativeElement, 'display', 'none');
|
|
1153
|
+
}
|
|
1154
|
+
};
|
|
1155
|
+
this.el.nativeElement.addEventListener('error', this.errorListener);
|
|
1156
|
+
});
|
|
1170
1157
|
}
|
|
1171
1158
|
buildUrl(path, domain) {
|
|
1172
1159
|
if (!domain) {
|