@osovitny/anatoly 3.17.9 → 3.17.11
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/esm2022/lib/core/consts/settings.mjs +2 -1
- package/esm2022/lib/core/index.mjs +3 -2
- package/esm2022/lib/core/interceptors/httpInterceptor.mjs +29 -24
- package/esm2022/lib/core/utils/qsutils.mjs +35 -0
- package/esm2022/lib/core/utils/utils.mjs +76 -0
- package/esm2022/lib/iam/services/auth.service.mjs +40 -10
- package/esm2022/lib/ui/components/base/components/component.mjs +3 -3
- package/esm2022/lib/ui/components/base/components/edit.component.mjs +3 -3
- package/esm2022/lib/ui/components/copy-2-clipboard/copy-2-clipboard.component.mjs +2 -2
- package/esm2022/lib/ui/forms/components/urlslug/urlslug.component.mjs +2 -2
- package/fesm2022/osovitny-anatoly.mjs +102 -47
- package/fesm2022/osovitny-anatoly.mjs.map +1 -1
- package/lib/core/consts/settings.d.ts +1 -0
- package/lib/core/index.d.ts +2 -1
- package/lib/core/utils/qsutils.d.ts +6 -0
- package/lib/core/{utils.d.ts → utils/utils.d.ts} +0 -3
- package/lib/iam/services/auth.service.d.ts +1 -1
- package/package.json +1 -1
- package/esm2022/lib/core/utils.mjs +0 -91
|
@@ -4,6 +4,7 @@ export declare const AppCoreSettings: any;
|
|
|
4
4
|
export declare const L10NUrl: string;
|
|
5
5
|
export declare const AppVersion: string;
|
|
6
6
|
export declare const IsDevMode: boolean;
|
|
7
|
+
export declare const IsProdMode: boolean;
|
|
7
8
|
export declare const ApiUrl: string;
|
|
8
9
|
export declare const ClientApps: any;
|
|
9
10
|
export declare const AppName: string;
|
package/lib/core/index.d.ts
CHANGED
|
@@ -1,7 +1,4 @@
|
|
|
1
1
|
export declare class Utils {
|
|
2
|
-
static idExistsInQS(): boolean;
|
|
3
|
-
static getValueByNameInQS(name: any): string;
|
|
4
|
-
static getValueByName(url: any, name: any): string;
|
|
5
2
|
static copyToClipBoard(event: any, val: string): void;
|
|
6
3
|
static downloadFile(name: string, url: string): void;
|
|
7
4
|
static downloadBlobFile(value: Blob, fileName: string): void;
|
|
@@ -31,7 +31,7 @@ export declare class AuthService extends ApiServiceBase implements OnDestroy {
|
|
|
31
31
|
private acquireToken;
|
|
32
32
|
getUserEmail(): any;
|
|
33
33
|
getUserName(): any;
|
|
34
|
-
getAccessToken(
|
|
34
|
+
getAccessToken(): Observable<string>;
|
|
35
35
|
forceReauthenticate(account?: any): void;
|
|
36
36
|
login(userFlowRequest?: RedirectRequest | PopupRequest, popup?: boolean): void;
|
|
37
37
|
logout(popup?: boolean): void;
|
package/package.json
CHANGED
|
@@ -1,91 +0,0 @@
|
|
|
1
|
-
/*
|
|
2
|
-
<file>
|
|
3
|
-
Project:
|
|
4
|
-
@osovitny/anatoly
|
|
5
|
-
|
|
6
|
-
Authors:
|
|
7
|
-
Vadim Osovitny vadim@osovitny.com
|
|
8
|
-
Anatoly Osovitny anatoly@osovitny.com
|
|
9
|
-
|
|
10
|
-
Created:
|
|
11
|
-
19 March 2020
|
|
12
|
-
|
|
13
|
-
Copyright (c) 2016-2022 Osovitny Inc. All rights reserved.
|
|
14
|
-
</file>
|
|
15
|
-
*/
|
|
16
|
-
export class Utils {
|
|
17
|
-
static idExistsInQS() {
|
|
18
|
-
let id = Utils.getValueByNameInQS("id");
|
|
19
|
-
if (id)
|
|
20
|
-
return true;
|
|
21
|
-
return false;
|
|
22
|
-
}
|
|
23
|
-
static getValueByNameInQS(name) {
|
|
24
|
-
return Utils.getValueByName(location.search, name);
|
|
25
|
-
}
|
|
26
|
-
static getValueByName(url, name) {
|
|
27
|
-
name = name.replace(/[\[]/, '\\[').replace(/[\]]/, '\\]');
|
|
28
|
-
// tslint:disable-next-line:one-variable-per-declaration
|
|
29
|
-
const regex = new RegExp('[\\?&]' + name + '=([^&#]*)'), results = regex.exec(url);
|
|
30
|
-
return results === null ? '' : decodeURIComponent(results[1].replace(/\+/g, ' '));
|
|
31
|
-
}
|
|
32
|
-
static copyToClipBoard(event, val) {
|
|
33
|
-
event.preventDefault();
|
|
34
|
-
const selBox = document.createElement('textarea');
|
|
35
|
-
selBox.style.position = 'fixed';
|
|
36
|
-
selBox.style.left = '0';
|
|
37
|
-
selBox.style.top = '0';
|
|
38
|
-
selBox.style.opacity = '0';
|
|
39
|
-
selBox.value = val;
|
|
40
|
-
document.body.appendChild(selBox);
|
|
41
|
-
selBox.focus();
|
|
42
|
-
selBox.select();
|
|
43
|
-
document.execCommand('copy');
|
|
44
|
-
document.body.removeChild(selBox);
|
|
45
|
-
}
|
|
46
|
-
static downloadFile(name, url) {
|
|
47
|
-
const link = document.createElement('a');
|
|
48
|
-
link.download = name;
|
|
49
|
-
link.href = url;
|
|
50
|
-
link.click();
|
|
51
|
-
}
|
|
52
|
-
static downloadBlobFile(value, fileName) {
|
|
53
|
-
const nav = window.navigator;
|
|
54
|
-
if (nav.msSaveOrOpenBlob) {
|
|
55
|
-
nav.msSaveOrOpenBlob(value, fileName);
|
|
56
|
-
}
|
|
57
|
-
else {
|
|
58
|
-
const downloadURL = window.URL.createObjectURL(value);
|
|
59
|
-
Utils.downloadFile(fileName, downloadURL);
|
|
60
|
-
}
|
|
61
|
-
}
|
|
62
|
-
/*
|
|
63
|
-
Author:
|
|
64
|
-
https://medium.com/@mhagemann/the-ultimate-way-to-slugify-a-url-string-in-javascript-b8e4a0d849e1
|
|
65
|
-
*/
|
|
66
|
-
static slugify(text, prefix = '', postfix = '') {
|
|
67
|
-
const a = 'àáâäæãåāăąçćčđďèéêëēėęěğǵḧîïíīįìłḿñńǹňôöòóœøōõőṕŕřßśšşșťțûüùúūǘůűųẃẍÿýžźż·/_,:;';
|
|
68
|
-
const b = 'aaaaaaaaaacccddeeeeeeeegghiiiiiilmnnnnoooooooooprrsssssttuuuuuuuuuwxyyzzz------';
|
|
69
|
-
const p = new RegExp(a.split('').join('|'), 'g');
|
|
70
|
-
/*
|
|
71
|
-
https://css-tricks.com/snippets/javascript/strip-html-tags-in-javascript/
|
|
72
|
-
https://stackoverflow.com/questions/822452/strip-html-from-text-javascript
|
|
73
|
-
*/
|
|
74
|
-
text = text.replace(/(<([^>]+)>)/gi, '');
|
|
75
|
-
let result = text
|
|
76
|
-
.toString()
|
|
77
|
-
.toLowerCase()
|
|
78
|
-
.replace(/\s+/g, '-') // Replace spaces with -
|
|
79
|
-
.replace(p, c => b.charAt(a.indexOf(c))) // Replace special characters
|
|
80
|
-
.replace(/&/g, '-and-') // Replace & with 'and'
|
|
81
|
-
.replace(/[^\w\-]+/g, '') // Remove all non-word characters
|
|
82
|
-
.replace(/\-\-+/g, '-') // Replace multiple - with single -
|
|
83
|
-
.replace(/^-+/, '') // Trim - from start of text
|
|
84
|
-
.replace(/-+$/, ''); // Trim - from end of text
|
|
85
|
-
return prefix + result + postfix;
|
|
86
|
-
}
|
|
87
|
-
static generateRandom(start, end) {
|
|
88
|
-
return Math.floor(Math.random() * (end - start + 1)) + start;
|
|
89
|
-
}
|
|
90
|
-
}
|
|
91
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9hbmF0b2x5L3NyYy9saWIvY29yZS91dGlscy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7Ozs7Ozs7Ozs7RUFjRTtBQUVGLE1BQU0sT0FBTyxLQUFLO0lBQ1QsTUFBTSxDQUFDLFlBQVk7UUFDeEIsSUFBSSxFQUFFLEdBQUcsS0FBSyxDQUFDLGtCQUFrQixDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ3hDLElBQUksRUFBRTtZQUFFLE9BQU8sSUFBSSxDQUFDO1FBRXBCLE9BQU8sS0FBSyxDQUFDO0lBQ2YsQ0FBQztJQUVNLE1BQU0sQ0FBQyxrQkFBa0IsQ0FBQyxJQUFJO1FBQ25DLE9BQU8sS0FBSyxDQUFDLGNBQWMsQ0FBQyxRQUFRLENBQUMsTUFBTSxFQUFFLElBQUksQ0FBQyxDQUFDO0lBQ3JELENBQUM7SUFFTSxNQUFNLENBQUMsY0FBYyxDQUFDLEdBQUcsRUFBRSxJQUFJO1FBQ3BDLElBQUksR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLE1BQU0sRUFBRSxLQUFLLENBQUMsQ0FBQyxPQUFPLENBQUMsTUFBTSxFQUFFLEtBQUssQ0FBQyxDQUFDO1FBQzFELHdEQUF3RDtRQUN4RCxNQUFNLEtBQUssR0FBRyxJQUFJLE1BQU0sQ0FBQyxRQUFRLEdBQUcsSUFBSSxHQUFHLFdBQVcsQ0FBQyxFQUV2RCxPQUFPLEdBQUcsS0FBSyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUMxQixPQUFPLE9BQU8sS0FBSyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsa0JBQWtCLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxLQUFLLEVBQUUsR0FBRyxDQUFDLENBQUMsQ0FBQztJQUNwRixDQUFDO0lBRU0sTUFBTSxDQUFDLGVBQWUsQ0FBQyxLQUFVLEVBQUUsR0FBVztRQUNuRCxLQUFL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QU8sQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQywwQkFBMEI7UUFFakQsT0FBTyxNQUFNLEdBQUcsTUFBTSxHQUFHLE9BQU8sQ0FBQztJQUNuQyxDQUFDO0lBRU0sTUFBTSxDQUFDLGNBQWMsQ0FBQyxLQUFhLEVBQUUsR0FBVztRQUNyRCxPQUFPLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLE1BQU0sRUFBRSxHQUFHLENBQUMsR0FBRyxHQUFHLEtBQUssR0FBRyxDQUFDLENBQUMsQ0FBQyxHQUFHLEtBQUssQ0FBQztJQUMvRCxDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyIvKlxyXG48ZmlsZT5cclxuICBQcm9qZWN0OlxyXG4gICAgQG9zb3ZpdG55L2FuYXRvbHlcclxuXHJcbiAgQXV0aG9yczpcclxuICAgIFZhZGltIE9zb3ZpdG55IHZhZGltQG9zb3ZpdG55LmNvbVxyXG4gICAgQW5hdG9seSBPc292aXRueSBhbmF0b2x5QG9zb3ZpdG55LmNvbVxyXG5cclxuICBDcmVhdGVkOlxyXG4gICAgMTkgTWFyY2ggMjAyMFxyXG5cclxuICBDb3B5cmlnaHQgKGMpIDIwMTYtMjAyMiBPc292aXRueSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuXHJcbjwvZmlsZT5cclxuKi9cclxuXHJcbmV4cG9ydCBjbGFzcyBVdGlscyB7XHJcbiAgcHVibGljIHN0YXRpYyBpZEV4aXN0c0luUVMoKSB7XHJcbiAgICBsZXQgaWQgPSBVdGlscy5nZXRWYWx1ZUJ5TmFtZUluUVMoXCJpZFwiKTtcclxuICAgIGlmIChpZCkgcmV0dXJuIHRydWU7XHJcblxyXG4gICAgcmV0dXJuIGZhbHNlO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIHN0YXRpYyBnZXRWYWx1ZUJ5TmFtZUluUVMobmFtZSkge1xyXG4gICAgcmV0dXJuIFV0aWxzLmdldFZhbHVlQnlOYW1lKGxvY2F0aW9uLnNlYXJjaCwgbmFtZSk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgc3RhdGljIGdldFZhbHVlQnlOYW1lKHVybCwgbmFtZSkge1xyXG4gICAgbmFtZSA9IG5hbWUucmVwbGFjZSgvW1xcW10vLCAnXFxcXFsnKS5yZXBsYWNlKC9bXFxdXS8sICdcXFxcXScpO1xyXG4gICAgLy8gdHNsaW50OmRpc2FibGUtbmV4dC1saW5lOm9uZS12YXJpYWJsZS1wZXItZGVjbGFyYXRpb25cclxuICAgIGNvbnN0IHJlZ2V4ID0gbmV3IFJlZ0V4cCgnW1xcXFw/Jl0nICsgbmFtZSArICc9KFteJiNdKiknKSxcclxuXHJcbiAgICByZXN1bHRzID0gcmVnZXguZXhlYyh1cmwpO1xyXG4gICAgcmV0dXJuIHJlc3VsdHMgPT09IG51bGwgPyAnJyA6IGRlY29kZVVSSUNvbXBvbmVudChyZXN1bHRzWzFdLnJlcGxhY2UoL1xcKy9nLCAnICcpKTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBzdGF0aWMgY29weVRvQ2xpcEJvYXJkKGV2ZW50OiBhbnksIHZhbDogc3RyaW5nKSB7XHJcbiAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xyXG5cclxuICAgIGNvbnN0IHNlbEJveCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RleHRhcmVhJyk7XHJcbiAgICBzZWxCb3guc3R5bGUucG9zaXRpb24gPSAnZml4ZWQnO1xyXG4gICAgc2VsQm94LnN0eWxlLmxlZnQgPSAnMCc7XHJcbiAgICBzZWxCb3guc3R5bGUudG9wID0gJzAnO1xyXG4gICAgc2VsQm94LnN0eWxlLm9wYWNpdHkgPSAnMCc7XHJcbiAgICBzZWxCb3gudmFsdWUgPSB2YWw7XHJcbiAgICBkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKHNlbEJveCk7XHJcbiAgICBzZWxCb3guZm9jdXMoKTtcclxuICAgIHNlbEJveC5zZWxlY3QoKTtcclxuICAgIGRvY3VtZW50LmV4ZWNDb21tYW5kKCdjb3B5Jyk7XHJcbiAgICBkb2N1bWVudC5ib2R5LnJlbW92ZUNoaWxkKHNlbEJveCk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgc3RhdGljIGRvd25sb2FkRmlsZShuYW1lOiBzdHJpbmcsIHVybDogc3RyaW5nKSB7XHJcbiAgICBjb25zdCBsaW5rID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnYScpO1xyXG4gICAgbGluay5kb3dubG9hZCA9IG5hbWU7XHJcbiAgICBsaW5rLmhyZWYgPSB1cmw7XHJcbiAgICBsaW5rLmNsaWNrKCk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgc3RhdGljIGRvd25sb2FkQmxvYkZpbGUodmFsdWU6IEJsb2IsIGZpbGVOYW1lOiBzdHJpbmcpIHtcclxuICAgIGNvbnN0IG5hdiA9ICh3aW5kb3cubmF2aWdhdG9yIGFzIGFueSk7XHJcblxyXG4gICAgaWYgKG5hdi5tc1NhdmVPck9wZW5CbG9iKSB7XHJcbiAgICAgIG5hdi5tc1NhdmVPck9wZW5CbG9iKHZhbHVlLCBmaWxlTmFtZSk7XHJcbiAgICB9XHJcbiAgICBlbHNlIHtcclxuICAgICAgY29uc3QgZG93bmxvYWRVUkwgPSB3aW5kb3cuVVJMLmNyZWF0ZU9iamVjdFVSTCh2YWx1ZSk7XHJcbiAgICAgIFV0aWxzLmRvd25sb2FkRmlsZShmaWxlTmFtZSwgZG93bmxvYWRVUkwpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLypcclxuICAgIEF1dGhvcjpcclxuICAgIGh0dHBzOi8vbWVkaXVtLmNvbS9AbWhhZ2VtYW5uL3RoZS11bHRpbWF0ZS13YXktdG8tc2x1Z2lmeS1hLXVybC1zdHJpbmctaW4tamF2YXNjcmlwdC1iOGU0YTBkODQ5ZTFcclxuICAqL1xyXG4gIHB1YmxpYyBzdGF0aWMgc2x1Z2lmeSh0ZXh0OiBzdHJpbmcsIHByZWZpeDogc3RyaW5nID0gJycsIHBvc3RmaXg6IHN0cmluZyA9ICcnKSB7XHJcbiAgICBjb25zdCBhID0gJ8Ogw6HDosOkw6bDo8OlxIHEg8SFw6fEh8SNxJHEj8Oow6nDqsOrxJPEl8SZxJvEn8e14binw67Dr8OtxKvEr8OsxYLhuL/DscWEx7nFiMO0w7bDssOzxZPDuMWNw7XFkeG5lcWVxZnDn8WbxaHFn8iZxaXIm8O7w7zDucO6xavHmMWvxbHFs+G6g+G6jcO/w73FvsW6xbzCty9fLDo7JztcclxuICAgIGNvbnN0IGIgPSAnYWFhYWFhYWFhYWNjY2RkZWVlZWVlZWVnZ2hpaWlpaWlsbW5ubm5vb29vb29vb29wcnJzc3Nzc3R0dXV1dXV1dXV1d3h5eXp6ei0tLS0tLSc7XHJcbiAgICBjb25zdCBwID0gbmV3IFJlZ0V4cChhLnNwbGl0KCcnKS5qb2luKCd8JyksICdnJyk7XHJcblxyXG4gICAgLypcclxuICAgICAgaHR0cHM6Ly9jc3MtdHJpY2tzLmNvbS9zbmlwcGV0cy9qYXZhc2NyaXB0L3N0cmlwLWh0bWwtdGFncy1pbi1qYXZhc2NyaXB0L1xyXG4gICAgICBodHRwczovL3N0YWNrb3ZlcmZsb3cuY29tL3F1ZXN0aW9ucy84MjI0NTIvc3RyaXAtaHRtbC1mcm9tLXRleHQtamF2YXNjcmlwdFxyXG4gICAgKi9cclxuICAgIHRleHQgPSB0ZXh0LnJlcGxhY2UoLyg8KFtePl0rKT4pL2dpLCAnJyk7XHJcblxyXG4gICAgbGV0IHJlc3VsdCA9IHRleHRcclxuICAgICAgLnRvU3RyaW5nKClcclxuICAgICAgLnRvTG93ZXJDYXNlKClcclxuICAgICAgLnJlcGxhY2UoL1xccysvZywgJy0nKSAvLyBSZXBsYWNlIHNwYWNlcyB3aXRoIC1cclxuICAgICAgLnJlcGxhY2UocCwgYyA9PiBiLmNoYXJBdChhLmluZGV4T2YoYykpKSAvLyBSZXBsYWNlIHNwZWNpYWwgY2hhcmFjdGVyc1xyXG4gICAgICAucmVwbGFjZSgvJi9nLCAnLWFuZC0nKSAvLyBSZXBsYWNlICYgd2l0aCAnYW5kJ1xyXG4gICAgICAucmVwbGFjZSgvW15cXHdcXC1dKy9nLCAnJykgLy8gUmVtb3ZlIGFsbCBub24td29yZCBjaGFyYWN0ZXJzXHJcbiAgICAgIC5yZXBsYWNlKC9cXC1cXC0rL2csICctJykgLy8gUmVwbGFjZSBtdWx0aXBsZSAtIHdpdGggc2luZ2xlIC1cclxuICAgICAgLnJlcGxhY2UoL14tKy8sICcnKSAvLyBUcmltIC0gZnJvbSBzdGFydCBvZiB0ZXh0XHJcbiAgICAgIC5yZXBsYWNlKC8tKyQvLCAnJyk7IC8vIFRyaW0gLSBmcm9tIGVuZCBvZiB0ZXh0XHJcblxyXG4gICAgcmV0dXJuIHByZWZpeCArIHJlc3VsdCArIHBvc3RmaXg7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgc3RhdGljIGdlbmVyYXRlUmFuZG9tKHN0YXJ0OiBudW1iZXIsIGVuZDogbnVtYmVyKSB7XHJcbiAgICByZXR1cm4gTWF0aC5mbG9vcihNYXRoLnJhbmRvbSgpICogKGVuZCAtIHN0YXJ0ICsgMSkpICsgc3RhcnQ7XHJcbiAgfVxyXG59XHJcbiJdfQ==
|