@posiwise/common-services 0.1.88 → 0.1.89
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/fesm2022/posiwise-common-services.mjs +146 -182
- package/fesm2022/posiwise-common-services.mjs.map +1 -1
- package/lib/user.service.d.ts +1 -0
- package/package.json +8 -10
- package/esm2022/index.mjs +0 -47
- package/esm2022/lib/ab-test.service.mjs +0 -55
- package/esm2022/lib/ahoy.service.mjs +0 -93
- package/esm2022/lib/auth.service.mjs +0 -322
- package/esm2022/lib/base-http.service.mjs +0 -98
- package/esm2022/lib/brain-api-http.service.mjs +0 -26
- package/esm2022/lib/brain.service.mjs +0 -21
- package/esm2022/lib/common-services.interface.mjs +0 -2
- package/esm2022/lib/common-services.module.mjs +0 -23
- package/esm2022/lib/common.service.mjs +0 -134
- package/esm2022/lib/custom-preloading.service.mjs +0 -38
- package/esm2022/lib/dashboard.service.mjs +0 -21
- package/esm2022/lib/data.service.mjs +0 -21
- package/esm2022/lib/date-formatter.service.mjs +0 -82
- package/esm2022/lib/effects/user.effects.mjs +0 -27
- package/esm2022/lib/form-helper.service.mjs +0 -27
- package/esm2022/lib/geo.service.mjs +0 -40
- package/esm2022/lib/google-analytics.service.mjs +0 -121
- package/esm2022/lib/group.service.mjs +0 -122
- package/esm2022/lib/hopscotch.service.mjs +0 -48
- package/esm2022/lib/integrations-api-http.service.mjs +0 -28
- package/esm2022/lib/link-loader.service.mjs +0 -50
- package/esm2022/lib/local-storage.service.mjs +0 -32
- package/esm2022/lib/logo-caching.service.mjs +0 -65
- package/esm2022/lib/mailbox.service.mjs +0 -66
- package/esm2022/lib/main-api-http.service.mjs +0 -26
- package/esm2022/lib/notification.service.mjs +0 -70
- package/esm2022/lib/number-picker.service.mjs +0 -43
- package/esm2022/lib/permission.service.mjs +0 -252
- package/esm2022/lib/primeNgHelper.mjs +0 -18
- package/esm2022/lib/product.service.mjs +0 -78
- package/esm2022/lib/profile.service.mjs +0 -64
- package/esm2022/lib/qualification.service.mjs +0 -29
- package/esm2022/lib/script-loader.service.mjs +0 -79
- package/esm2022/lib/secure-token-storage.service.mjs +0 -264
- package/esm2022/lib/sentry.service.mjs +0 -384
- package/esm2022/lib/seo.service.mjs +0 -43
- package/esm2022/lib/socket.service.mjs +0 -29
- package/esm2022/lib/subscription.service.mjs +0 -129
- package/esm2022/lib/tag.service.mjs +0 -101
- package/esm2022/lib/tips.service.mjs +0 -38
- package/esm2022/lib/toast.service.mjs +0 -85
- package/esm2022/lib/user.service.mjs +0 -202
- package/esm2022/lib/validation.service.mjs +0 -36
- package/esm2022/lib/window.service.mjs +0 -20
- package/esm2022/posiwise-common-services.mjs +0 -5
|
@@ -1,202 +0,0 @@
|
|
|
1
|
-
import { Injectable } from '@angular/core';
|
|
2
|
-
import { Router } from '@angular/router';
|
|
3
|
-
import { AppConfigService } from '@posiwise/app-config-service';
|
|
4
|
-
import { getUser, SetUser } from '@posiwise/app-store';
|
|
5
|
-
import { USER_PATH } from '@posiwise/common-utilities';
|
|
6
|
-
import { HelperService } from '@posiwise/helper-service';
|
|
7
|
-
import moment from 'moment';
|
|
8
|
-
import { tap } from 'rxjs';
|
|
9
|
-
import { take } from 'rxjs/operators';
|
|
10
|
-
import swal from 'sweetalert2';
|
|
11
|
-
import { Store } from '@ngrx/store';
|
|
12
|
-
import { MainApiHttpService } from './main-api-http.service';
|
|
13
|
-
import { ProfileService } from './profile.service';
|
|
14
|
-
import { CustomToastService } from './toast.service';
|
|
15
|
-
import * as i0 from "@angular/core";
|
|
16
|
-
import * as i1 from "./main-api-http.service";
|
|
17
|
-
import * as i2 from "@ngrx/store";
|
|
18
|
-
import * as i3 from "@angular/router";
|
|
19
|
-
import * as i4 from "@posiwise/app-config-service";
|
|
20
|
-
import * as i5 from "./profile.service";
|
|
21
|
-
import * as i6 from "./toast.service";
|
|
22
|
-
export class UserService {
|
|
23
|
-
constructor(api, store, router, appConfigService, profileService, toast) {
|
|
24
|
-
this.api = api;
|
|
25
|
-
this.store = store;
|
|
26
|
-
this.router = router;
|
|
27
|
-
this.appConfigService = appConfigService;
|
|
28
|
-
this.profileService = profileService;
|
|
29
|
-
this.toast = toast;
|
|
30
|
-
this.endpoint = USER_PATH;
|
|
31
|
-
this.isTosModalOpen = false;
|
|
32
|
-
}
|
|
33
|
-
getUserState() {
|
|
34
|
-
return this.store.select(getUser);
|
|
35
|
-
}
|
|
36
|
-
getUserInfo() {
|
|
37
|
-
return this.api.get(this.endpoint).pipe(tap((data) => {
|
|
38
|
-
// enforce 2fa
|
|
39
|
-
if (data?.auth?.should_enforce_2fa) {
|
|
40
|
-
this.router.navigate(['settings/security']);
|
|
41
|
-
}
|
|
42
|
-
this.checkAndHandleTosAcceptance(data);
|
|
43
|
-
}));
|
|
44
|
-
}
|
|
45
|
-
/**
|
|
46
|
-
* Ensure the current user has accepted the latest Terms of Service for this domain.
|
|
47
|
-
* If the domain has a newer TOS version than the user's accepted timestamp, a blocking
|
|
48
|
-
* SweetAlert2 modal is shown that forces the user to accept before continuing.
|
|
49
|
-
*/
|
|
50
|
-
checkAndHandleTosAcceptance(user) {
|
|
51
|
-
if (!user || this.isTosModalOpen) {
|
|
52
|
-
return;
|
|
53
|
-
}
|
|
54
|
-
this.appConfigService.appConfig$.pipe(take(1)).subscribe(config => {
|
|
55
|
-
const tosUpdatedAt = config?.['tos_updated_at'];
|
|
56
|
-
if (!tosUpdatedAt) {
|
|
57
|
-
return;
|
|
58
|
-
}
|
|
59
|
-
const userAcceptedAt = user.tos_accepted_at;
|
|
60
|
-
// If user has already accepted a TOS version that is newer or equal, nothing to do
|
|
61
|
-
if (userAcceptedAt && !moment(userAcceptedAt).isBefore(moment(tosUpdatedAt))) {
|
|
62
|
-
return;
|
|
63
|
-
}
|
|
64
|
-
this.isTosModalOpen = true;
|
|
65
|
-
const mainTosId = config?.['main_tos_id'] ?? null;
|
|
66
|
-
const tosUrl = mainTosId ? `/privacy-and-tos/${mainTosId}` : '/privacy-and-tos';
|
|
67
|
-
void swal
|
|
68
|
-
.fire({
|
|
69
|
-
icon: 'info',
|
|
70
|
-
title: 'Accept Terms of Service',
|
|
71
|
-
html: `By clicking continue, you agree to the terms of our <a href="${tosUrl}" target="_blank" rel="noopener noreferrer">Privacy Policy and Platform Agreement</a>.`,
|
|
72
|
-
confirmButtonText: 'Accept and Continue',
|
|
73
|
-
allowOutsideClick: false,
|
|
74
|
-
allowEscapeKey: false,
|
|
75
|
-
showCancelButton: false,
|
|
76
|
-
reverseButtons: false,
|
|
77
|
-
focusConfirm: true
|
|
78
|
-
})
|
|
79
|
-
.then(result => {
|
|
80
|
-
if (!result.isConfirmed) {
|
|
81
|
-
// Modal cannot really be dismissed without confirmation due to config above,
|
|
82
|
-
// but guard just in case.
|
|
83
|
-
this.isTosModalOpen = false;
|
|
84
|
-
return;
|
|
85
|
-
}
|
|
86
|
-
// Match the backend ISO 8601 format (e.g. 2025-12-15T10:27:11.250Z)
|
|
87
|
-
const nowUtc = new Date().toISOString();
|
|
88
|
-
this.profileService.updateUserProfile({ tos_accepted_at: nowUtc }).subscribe({
|
|
89
|
-
next: () => {
|
|
90
|
-
const updatedUser = {
|
|
91
|
-
...user,
|
|
92
|
-
tos_accepted_at: nowUtc
|
|
93
|
-
};
|
|
94
|
-
this.store.dispatch(new SetUser(updatedUser));
|
|
95
|
-
this.toast.success('Terms of Service accepted');
|
|
96
|
-
this.isTosModalOpen = false;
|
|
97
|
-
},
|
|
98
|
-
error: err => {
|
|
99
|
-
const message = HelperService.getErrorMessage(err?.error || err);
|
|
100
|
-
void swal
|
|
101
|
-
.fire({
|
|
102
|
-
icon: 'error',
|
|
103
|
-
title: 'Unable to record acceptance',
|
|
104
|
-
text: message,
|
|
105
|
-
confirmButtonText: 'Try again',
|
|
106
|
-
allowOutsideClick: false,
|
|
107
|
-
allowEscapeKey: false
|
|
108
|
-
})
|
|
109
|
-
.then(() => {
|
|
110
|
-
this.isTosModalOpen = false;
|
|
111
|
-
this.checkAndHandleTosAcceptance(user);
|
|
112
|
-
});
|
|
113
|
-
}
|
|
114
|
-
});
|
|
115
|
-
});
|
|
116
|
-
});
|
|
117
|
-
}
|
|
118
|
-
followUser(id) {
|
|
119
|
-
return this.api.post(`${this.endpoint}/toggle_relationship/${id}`);
|
|
120
|
-
}
|
|
121
|
-
sendSSOActivationEmail() {
|
|
122
|
-
return this.api.post(`/cognito/create_cognito_user`);
|
|
123
|
-
}
|
|
124
|
-
updateSlug(slug) {
|
|
125
|
-
return this.api.put(`${this.endpoint}/update_slug`, { slug });
|
|
126
|
-
}
|
|
127
|
-
getCurrentUserObject(object_type) {
|
|
128
|
-
return this.api.get(`${this.endpoint}/get_current_user_object?object=${object_type}`);
|
|
129
|
-
}
|
|
130
|
-
updateEmail(data) {
|
|
131
|
-
const formData = new FormData();
|
|
132
|
-
formData.append('email', data['email']);
|
|
133
|
-
formData.append('confirmation_path', data['confirmation_path']);
|
|
134
|
-
return this.api.put(`${this.endpoint}/email`, formData);
|
|
135
|
-
}
|
|
136
|
-
checkPassword(data) {
|
|
137
|
-
return this.api.post(`${this.endpoint}/check_password`, data);
|
|
138
|
-
}
|
|
139
|
-
confirmUser(confirmation_token, email, password, password_confirmation) {
|
|
140
|
-
const formData = new FormData();
|
|
141
|
-
formData.append('confirmation_token', confirmation_token);
|
|
142
|
-
formData.append('email', email);
|
|
143
|
-
formData.append('password', password);
|
|
144
|
-
formData.append('password_confirmation', password_confirmation);
|
|
145
|
-
return this.api.put(`${this.endpoint}/confirm`, formData);
|
|
146
|
-
}
|
|
147
|
-
checkTokenValidity(type, token, email) {
|
|
148
|
-
return this.api.get(`${this.endpoint}/check_token_validity?type=${type}&confirmation_token=${token}&email=${email}`);
|
|
149
|
-
}
|
|
150
|
-
getUserNotifications() {
|
|
151
|
-
return this.api.get(`${this.endpoint}/user_notifications`);
|
|
152
|
-
}
|
|
153
|
-
addAvatar(file) {
|
|
154
|
-
return this.api.upload(this.endpoint, file, 'avatar');
|
|
155
|
-
}
|
|
156
|
-
createTwoFactorAuthenticator() {
|
|
157
|
-
return this.api.put(`/two_factor_authenticator/create`);
|
|
158
|
-
}
|
|
159
|
-
verifyTwoFactorAuthenticator(google_code) {
|
|
160
|
-
return this.api.post(`/two_factor_authenticator/verification_code`, { google_code });
|
|
161
|
-
}
|
|
162
|
-
enableTwoFactorAuthenticator(google_code) {
|
|
163
|
-
return this.api.put(`/two_factor_authenticator/enable`, { google_code });
|
|
164
|
-
}
|
|
165
|
-
disableTwoFactorAuthenticator() {
|
|
166
|
-
return this.api.put(`/two_factor_authenticator/disable`);
|
|
167
|
-
}
|
|
168
|
-
// User API Ends
|
|
169
|
-
validateNewEmail(confirmationToken) {
|
|
170
|
-
return this.api.get(`${this.endpoint}/new_email_confirm?confirmation_token=${confirmationToken}`);
|
|
171
|
-
}
|
|
172
|
-
getUserSubscriptions(id) {
|
|
173
|
-
return this.api.get(`/users/${id}/subscriptions`);
|
|
174
|
-
}
|
|
175
|
-
addNewSubscriptionUsingStripe(data) {
|
|
176
|
-
return this.api.post('/signups/trial_user_stripe_account', data);
|
|
177
|
-
}
|
|
178
|
-
updatePassword(data) {
|
|
179
|
-
return this.api.put('/password/update', data);
|
|
180
|
-
}
|
|
181
|
-
getUserInvoices(paging, id) {
|
|
182
|
-
return this.api.getWithParams(`${this.endpoint}/invoices`, {
|
|
183
|
-
...HelperService.getPagingParams(paging),
|
|
184
|
-
user_id: id
|
|
185
|
-
});
|
|
186
|
-
}
|
|
187
|
-
postTipsDisregarded(data) {
|
|
188
|
-
return this.api.post('/users/user_tips', data);
|
|
189
|
-
}
|
|
190
|
-
refreshUserApiTokens() {
|
|
191
|
-
return this.api.get(`${this.endpoint}/refresh_user_api_tokens`);
|
|
192
|
-
}
|
|
193
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.11", ngImport: i0, type: UserService, deps: [{ token: i1.MainApiHttpService }, { token: i2.Store }, { token: i3.Router }, { token: i4.AppConfigService }, { token: i5.ProfileService }, { token: i6.CustomToastService }], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
194
|
-
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.3.11", ngImport: i0, type: UserService, providedIn: 'root' }); }
|
|
195
|
-
}
|
|
196
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.11", ngImport: i0, type: UserService, decorators: [{
|
|
197
|
-
type: Injectable,
|
|
198
|
-
args: [{
|
|
199
|
-
providedIn: 'root'
|
|
200
|
-
}]
|
|
201
|
-
}], ctorParameters: () => [{ type: i1.MainApiHttpService }, { type: i2.Store }, { type: i3.Router }, { type: i4.AppConfigService }, { type: i5.ProfileService }, { type: i6.CustomToastService }] });
|
|
202
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXNlci5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vbGlicy9jb21tb24tc2VydmljZXMvc3JjL2xpYi91c2VyLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMzQyxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFFekMsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFDaEUsT0FBTyxFQUFZLE9BQU8sRUFBRSxPQUFPLEVBQWEsTUFBTSxxQkFBcUIsQ0FBQztBQUM1RSxPQUFPLEVBQWdCLFNBQVMsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQ3JFLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUV6RCxPQUFPLE1BQU0sTUFBTSxRQUFRLENBQUM7QUFDNUIsT0FBTyxFQUFjLEdBQUcsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUN2QyxPQUFPLEVBQUUsSUFBSSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDdEMsT0FBTyxJQUFJLE1BQU0sYUFBYSxDQUFDO0FBRS9CLE9BQU8sRUFBRSxLQUFLLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFFcEMsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDN0QsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBQ25ELE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLGlCQUFpQixDQUFDOzs7Ozs7OztBQUtyRCxNQUFNLE9BQU8sV0FBVztJQUtwQixZQUNxQixHQUF1QixFQUN2QixLQUFzQixFQUN0QixNQUFjLEVBQ2QsZ0JBQWtDLEVBQ2xDLGNBQThCLEVBQzlCLEtBQXlCO1FBTHpCLFFBQUcsR0FBSCxHQUFHLENBQW9CO1FBQ3ZCLFVBQUssR0FBTCxLQUFLLENBQWlCO1FB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QUFDLEdBQUcsSUFBSSxDQUFDLFFBQVEsMEJBQTBCLENBQUMsQ0FBQztJQUNwRSxDQUFDOytHQWpPUSxXQUFXO21IQUFYLFdBQVcsY0FGUixNQUFNOzs0RkFFVCxXQUFXO2tCQUh2QixVQUFVO21CQUFDO29CQUNSLFVBQVUsRUFBRSxNQUFNO2lCQUNyQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFJvdXRlciB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5cbmltcG9ydCB7IEFwcENvbmZpZ1NlcnZpY2UgfSBmcm9tICdAcG9zaXdpc2UvYXBwLWNvbmZpZy1zZXJ2aWNlJztcbmltcG9ydCB7IEFwcFN0YXRlLCBnZXRVc2VyLCBTZXRVc2VyLCBVc2VyU3RhdGUgfSBmcm9tICdAcG9zaXdpc2UvYXBwLXN0b3JlJztcbmltcG9ydCB7IFBhZ2luZywgVXNlciwgVVNFUl9QQVRIIH0gZnJvbSAnQHBvc2l3aXNlL2NvbW1vbi11dGlsaXRpZXMnO1xuaW1wb3J0IHsgSGVscGVyU2VydmljZSB9IGZyb20gJ0Bwb3Npd2lzZS9oZWxwZXItc2VydmljZSc7XG5cbmltcG9ydCBtb21lbnQgZnJvbSAnbW9tZW50JztcbmltcG9ydCB7IE9ic2VydmFibGUsIHRhcCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgdGFrZSB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCBzd2FsIGZyb20gJ3N3ZWV0YWxlcnQyJztcblxuaW1wb3J0IHsgU3RvcmUgfSBmcm9tICdAbmdyeC9zdG9yZSc7XG5cbmltcG9ydCB7IE1haW5BcGlIdHRwU2VydmljZSB9IGZyb20gJy4vbWFpbi1hcGktaHR0cC5zZXJ2aWNlJztcbmltcG9ydCB7IFByb2ZpbGVTZXJ2aWNlIH0gZnJvbSAnLi9wcm9maWxlLnNlcnZpY2UnO1xuaW1wb3J0IHsgQ3VzdG9tVG9hc3RTZXJ2aWNlIH0gZnJvbSAnLi90b2FzdC5zZXJ2aWNlJztcblxuQEluamVjdGFibGUoe1xuICAgIHByb3ZpZGVkSW46ICdyb290J1xufSlcbmV4cG9ydCBjbGFzcyBVc2VyU2VydmljZSB7XG4gICAgcHJpdmF0ZSByZWFkb25seSBlbmRwb2ludCA9IFVTRVJfUEFUSDtcblxuICAgIHByaXZhdGUgaXNUb3NNb2RhbE9wZW4gPSBmYWxzZTtcblxuICAgIGNvbnN0cnVjdG9yKFxuICAgICAgICBwcml2YXRlIHJlYWRvbmx5IGFwaTogTWFpbkFwaUh0dHBTZXJ2aWNlLFxuICAgICAgICBwcml2YXRlIHJlYWRvbmx5IHN0b3JlOiBTdG9yZTxBcHBTdGF0ZT4sXG4gICAgICAgIHByaXZhdGUgcmVhZG9ubHkgcm91dGVyOiBSb3V0ZXIsXG4gICAgICAgIHByaXZhdGUgcmVhZG9ubHkgYXBwQ29uZmlnU2VydmljZTogQXBwQ29uZmlnU2VydmljZSxcbiAgICAgICAgcHJpdmF0ZSByZWFkb25seSBwcm9maWxlU2VydmljZTogUHJvZmlsZVNlcnZpY2UsXG4gICAgICAgIHByaXZhdGUgcmVhZG9ubHkgdG9hc3Q6IEN1c3RvbVRvYXN0U2VydmljZVxuICAgICkge31cblxuICAgIGdldFVzZXJTdGF0ZSgpOiBPYnNlcnZhYmxlPFVzZXJTdGF0ZT4ge1xuICAgICAgICByZXR1cm4gdGhpcy5zdG9yZS5zZWxlY3QoZ2V0VXNlcik7XG4gICAgfVxuXG4gICAgZ2V0VXNlckluZm8oKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmFwaS5nZXQodGhpcy5lbmRwb2ludCkucGlwZShcbiAgICAgICAgICAgIHRhcCgoZGF0YTogVXNlcikgPT4ge1xuICAgICAgICAgICAgICAgIC8vIGVuZm9yY2UgMmZhXG4gICAgICAgICAgICAgICAgaWYgKGRhdGE/LmF1dGg/LnNob3VsZF9lbmZvcmNlXzJmYSkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnJvdXRlci5uYXZpZ2F0ZShbJ3NldHRpbmdzL3NlY3VyaXR5J10pO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIHRoaXMuY2hlY2tBbmRIYW5kbGVUb3NBY2NlcHRhbmNlKGRhdGEpO1xuICAgICAgICAgICAgfSlcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBFbnN1cmUgdGhlIGN1cnJlbnQgdXNlciBoYXMgYWNjZXB0ZWQgdGhlIGxhdGVzdCBUZXJtcyBvZiBTZXJ2aWNlIGZvciB0aGlzIGRvbWFpbi5cbiAgICAgKiBJZiB0aGUgZG9tYWluIGhhcyBhIG5ld2VyIFRPUyB2ZXJzaW9uIHRoYW4gdGhlIHVzZXIncyBhY2NlcHRlZCB0aW1lc3RhbXAsIGEgYmxvY2tpbmdcbiAgICAgKiBTd2VldEFsZXJ0MiBtb2RhbCBpcyBzaG93biB0aGF0IGZvcmNlcyB0aGUgdXNlciB0byBhY2NlcHQgYmVmb3JlIGNvbnRpbnVpbmcuXG4gICAgICovXG4gICAgcHJpdmF0ZSBjaGVja0FuZEhhbmRsZVRvc0FjY2VwdGFuY2UodXNlcjogVXNlciB8IG51bGwgfCB1bmRlZmluZWQpOiB2b2lkIHtcbiAgICAgICAgaWYgKCF1c2VyIHx8IHRoaXMuaXNUb3NNb2RhbE9wZW4pIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuYXBwQ29uZmlnU2VydmljZS5hcHBDb25maWckLnBpcGUodGFrZSgxKSkuc3Vic2NyaWJlKGNvbmZpZyA9PiB7XG4gICAgICAgICAgICBjb25zdCB0b3NVcGRhdGVkQXQgPSBjb25maWc/LlsndG9zX3VwZGF0ZWRfYXQnXTtcblxuICAgICAgICAgICAgaWYgKCF0b3NVcGRhdGVkQXQpIHtcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGNvbnN0IHVzZXJBY2NlcHRlZEF0ID0gdXNlci50b3NfYWNjZXB0ZWRfYXQ7XG5cbiAgICAgICAgICAgIC8vIElmIHVzZXIgaGFzIGFscmVhZHkgYWNjZXB0ZWQgYSBUT1MgdmVyc2lvbiB0aGF0IGlzIG5ld2VyIG9yIGVxdWFsLCBub3RoaW5nIHRvIGRvXG4gICAgICAgICAgICBpZiAodXNlckFjY2VwdGVkQXQgJiYgIW1vbWVudCh1c2VyQWNjZXB0ZWRBdCkuaXNCZWZvcmUobW9tZW50KHRvc1VwZGF0ZWRBdCkpKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICB0aGlzLmlzVG9zTW9kYWxPcGVuID0gdHJ1ZTtcblxuICAgICAgICAgICAgY29uc3QgbWFpblRvc0lkID0gY29uZmlnPy5bJ21haW5fdG9zX2lkJ10gPz8gbnVsbDtcbiAgICAgICAgICAgIGNvbnN0IHRvc1VybCA9IG1haW5Ub3NJZCA/IGAvcHJpdmFjeS1hbmQtdG9zLyR7bWFpblRvc0lkfWAgOiAnL3ByaXZhY3ktYW5kLXRvcyc7XG5cbiAgICAgICAgICAgIHZvaWQgc3dhbFxuICAgICAgICAgICAgICAgIC5maXJlKHtcbiAgICAgICAgICAgICAgICAgICAgaWNvbjogJ2luZm8nLFxuICAgICAgICAgICAgICAgICAgICB0aXRsZTogJ0FjY2VwdCBUZXJtcyBvZiBTZXJ2aWNlJyxcbiAgICAgICAgICAgICAgICAgICAgaHRtbDogYEJ5IGNsaWNraW5nIGNvbnRpbnVlLCB5b3UgYWdyZWUgdG8gdGhlIHRlcm1zIG9mIG91ciA8YSBocmVmPVwiJHt0b3NVcmx9XCIgdGFyZ2V0PVwiX2JsYW5rXCIgcmVsPVwibm9vcGVuZXIgbm9yZWZlcnJlclwiPlByaXZhY3kgUG9saWN5IGFuZCBQbGF0Zm9ybSBBZ3JlZW1lbnQ8L2E+LmAsXG4gICAgICAgICAgICAgICAgICAgIGNvbmZpcm1CdXR0b25UZXh0OiAnQWNjZXB0IGFuZCBDb250aW51ZScsXG4gICAgICAgICAgICAgICAgICAgIGFsbG93T3V0c2lkZUNsaWNrOiBmYWxzZSxcbiAgICAgICAgICAgICAgICAgICAgYWxsb3dFc2NhcGVLZXk6IGZhbHNlLFxuICAgICAgICAgICAgICAgICAgICBzaG93Q2FuY2VsQnV0dG9uOiBmYWxzZSxcbiAgICAgICAgICAgICAgICAgICAgcmV2ZXJzZUJ1dHRvbnM6IGZhbHNlLFxuICAgICAgICAgICAgICAgICAgICBmb2N1c0NvbmZpcm06IHRydWVcbiAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgIC50aGVuKHJlc3VsdCA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGlmICghcmVzdWx0LmlzQ29uZmlybWVkKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBNb2RhbCBjYW5ub3QgcmVhbGx5IGJlIGRpc21pc3NlZCB3aXRob3V0IGNvbmZpcm1hdGlvbiBkdWUgdG8gY29uZmlnIGFib3ZlLFxuICAgICAgICAgICAgICAgICAgICAgICAgLy8gYnV0IGd1YXJkIGp1c3QgaW4gY2FzZS5cbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuaXNUb3NNb2RhbE9wZW4gPSBmYWxzZTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgIC8vIE1hdGNoIHRoZSBiYWNrZW5kIElTTyA4NjAxIGZvcm1hdCAoZS5nLiAyMDI1LTEyLTE1VDEwOjI3OjExLjI1MFopXG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IG5vd1V0YyA9IG5ldyBEYXRlKCkudG9JU09TdHJpbmcoKTtcblxuICAgICAgICAgICAgICAgICAgICB0aGlzLnByb2ZpbGVTZXJ2aWNlLnVwZGF0ZVVzZXJQcm9maWxlKHsgdG9zX2FjY2VwdGVkX2F0OiBub3dVdGMgfSkuc3Vic2NyaWJlKHtcbiAgICAgICAgICAgICAgICAgICAgICAgIG5leHQ6ICgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB1cGRhdGVkVXNlcjogVXNlciA9IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4udXNlcixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdG9zX2FjY2VwdGVkX2F0OiBub3dVdGNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuc3RvcmUuZGlzcGF0Y2gobmV3IFNldFVzZXIodXBkYXRlZFVzZXIpKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnRvYXN0LnN1Y2Nlc3MoJ1Rlcm1zIG9mIFNlcnZpY2UgYWNjZXB0ZWQnKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmlzVG9zTW9kYWxPcGVuID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgZXJyb3I6IGVyciA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgbWVzc2FnZSA9IEhlbHBlclNlcnZpY2UuZ2V0RXJyb3JNZXNzYWdlKGVycj8uZXJyb3IgfHwgZXJyKTtcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZvaWQgc3dhbFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAuZmlyZSh7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpY29uOiAnZXJyb3InLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGl0bGU6ICdVbmFibGUgdG8gcmVjb3JkIGFjY2VwdGFuY2UnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGV4dDogbWVzc2FnZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbmZpcm1CdXR0b25UZXh0OiAnVHJ5IGFnYWluJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFsbG93T3V0c2lkZUNsaWNrOiBmYWxzZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFsbG93RXNjYXBlS2V5OiBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAudGhlbigoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmlzVG9zTW9kYWxPcGVuID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmNoZWNrQW5kSGFuZGxlVG9zQWNjZXB0YW5jZSh1c2VyKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBmb2xsb3dVc2VyKGlkOiBudW1iZXIpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuYXBpLnBvc3QoYCR7dGhpcy5lbmRwb2ludH0vdG9nZ2xlX3JlbGF0aW9uc2hpcC8ke2lkfWApO1xuICAgIH1cblxuICAgIHNlbmRTU09BY3RpdmF0aW9uRW1haWwoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmFwaS5wb3N0KGAvY29nbml0by9jcmVhdGVfY29nbml0b191c2VyYCk7XG4gICAgfVxuXG4gICAgdXBkYXRlU2x1ZyhzbHVnOiBzdHJpbmcpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuYXBpLnB1dChgJHt0aGlzLmVuZHBvaW50fS91cGRhdGVfc2x1Z2AsIHsgc2x1ZyB9KTtcbiAgICB9XG5cbiAgICBnZXRDdXJyZW50VXNlck9iamVjdChvYmplY3RfdHlwZTogc3RyaW5nKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmFwaS5nZXQoYCR7dGhpcy5lbmRwb2ludH0vZ2V0X2N1cnJlbnRfdXNlcl9vYmplY3Q/b2JqZWN0PSR7b2JqZWN0X3R5cGV9YCk7XG4gICAgfVxuXG4gICAgdXBkYXRlRW1haWwoZGF0YTogeyBba2V5OiBzdHJpbmddOiBzdHJpbmcgfSkge1xuICAgICAgICBjb25zdCBmb3JtRGF0YSA9IG5ldyBGb3JtRGF0YSgpO1xuICAgICAgICBmb3JtRGF0YS5hcHBlbmQoJ2VtYWlsJywgZGF0YVsnZW1haWwnXSk7XG4gICAgICAgIGZvcm1EYXRhLmFwcGVuZCgnY29uZmlybWF0aW9uX3BhdGgnLCBkYXRhWydjb25maXJtYXRpb25fcGF0aCddKTtcblxuICAgICAgICByZXR1cm4gdGhpcy5hcGkucHV0KGAke3RoaXMuZW5kcG9pbnR9L2VtYWlsYCwgZm9ybURhdGEpO1xuICAgIH1cblxuICAgIGNoZWNrUGFzc3dvcmQoZGF0YTogeyBwYXNzd29yZDogc3RyaW5nIH0pIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuYXBpLnBvc3QoYCR7dGhpcy5lbmRwb2ludH0vY2hlY2tfcGFzc3dvcmRgLCBkYXRhKTtcbiAgICB9XG5cbiAgICBjb25maXJtVXNlcihcbiAgICAgICAgY29uZmlybWF0aW9uX3Rva2VuOiBzdHJpbmcsXG4gICAgICAgIGVtYWlsOiBzdHJpbmcsXG4gICAgICAgIHBhc3N3b3JkOiBzdHJpbmcsXG4gICAgICAgIHBhc3N3b3JkX2NvbmZpcm1hdGlvbjogc3RyaW5nXG4gICAgKSB7XG4gICAgICAgIGNvbnN0IGZvcm1EYXRhID0gbmV3IEZvcm1EYXRhKCk7XG4gICAgICAgIGZvcm1EYXRhLmFwcGVuZCgnY29uZmlybWF0aW9uX3Rva2VuJywgY29uZmlybWF0aW9uX3Rva2VuKTtcbiAgICAgICAgZm9ybURhdGEuYXBwZW5kKCdlbWFpbCcsIGVtYWlsKTtcbiAgICAgICAgZm9ybURhdGEuYXBwZW5kKCdwYXNzd29yZCcsIHBhc3N3b3JkKTtcbiAgICAgICAgZm9ybURhdGEuYXBwZW5kKCdwYXNzd29yZF9jb25maXJtYXRpb24nLCBwYXNzd29yZF9jb25maXJtYXRpb24pO1xuXG4gICAgICAgIHJldHVybiB0aGlzLmFwaS5wdXQoYCR7dGhpcy5lbmRwb2ludH0vY29uZmlybWAsIGZvcm1EYXRhKTtcbiAgICB9XG5cbiAgICBjaGVja1Rva2VuVmFsaWRpdHkodHlwZTogc3RyaW5nLCB0b2tlbjogc3RyaW5nLCBlbWFpbDogc3RyaW5nKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmFwaS5nZXQoXG4gICAgICAgICAgICBgJHt0aGlzLmVuZHBvaW50fS9jaGVja190b2tlbl92YWxpZGl0eT90eXBlPSR7dHlwZX0mY29uZmlybWF0aW9uX3Rva2VuPSR7dG9rZW59JmVtYWlsPSR7ZW1haWx9YFxuICAgICAgICApO1xuICAgIH1cblxuICAgIGdldFVzZXJOb3RpZmljYXRpb25zKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5hcGkuZ2V0KGAke3RoaXMuZW5kcG9pbnR9L3VzZXJfbm90aWZpY2F0aW9uc2ApO1xuICAgIH1cblxuICAgIGFkZEF2YXRhcihmaWxlOiBGaWxlKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmFwaS51cGxvYWQodGhpcy5lbmRwb2ludCwgZmlsZSwgJ2F2YXRhcicpO1xuICAgIH1cblxuICAgIGNyZWF0ZVR3b0ZhY3RvckF1dGhlbnRpY2F0b3IoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmFwaS5wdXQoYC90d29fZmFjdG9yX2F1dGhlbnRpY2F0b3IvY3JlYXRlYCk7XG4gICAgfVxuXG4gICAgdmVyaWZ5VHdvRmFjdG9yQXV0aGVudGljYXRvcihnb29nbGVfY29kZTogc3RyaW5nKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmFwaS5wb3N0KGAvdHdvX2ZhY3Rvcl9hdXRoZW50aWNhdG9yL3ZlcmlmaWNhdGlvbl9jb2RlYCwgeyBnb29nbGVfY29kZSB9KTtcbiAgICB9XG5cbiAgICBlbmFibGVUd29GYWN0b3JBdXRoZW50aWNhdG9yKGdvb2dsZV9jb2RlOiBzdHJpbmcpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuYXBpLnB1dChgL3R3b19mYWN0b3JfYXV0aGVudGljYXRvci9lbmFibGVgLCB7IGdvb2dsZV9jb2RlIH0pO1xuICAgIH1cblxuICAgIGRpc2FibGVUd29GYWN0b3JBdXRoZW50aWNhdG9yKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5hcGkucHV0KGAvdHdvX2ZhY3Rvcl9hdXRoZW50aWNhdG9yL2Rpc2FibGVgKTtcbiAgICB9XG5cbiAgICAvLyBVc2VyIEFQSSBFbmRzXG5cbiAgICB2YWxpZGF0ZU5ld0VtYWlsKGNvbmZpcm1hdGlvblRva2VuOiBzdHJpbmcpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuYXBpLmdldChcbiAgICAgICAgICAgIGAke3RoaXMuZW5kcG9pbnR9L25ld19lbWFpbF9jb25maXJtP2NvbmZpcm1hdGlvbl90b2tlbj0ke2NvbmZpcm1hdGlvblRva2VufWBcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBnZXRVc2VyU3Vic2NyaXB0aW9ucyhpZDogbnVtYmVyKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmFwaS5nZXQoYC91c2Vycy8ke2lkfS9zdWJzY3JpcHRpb25zYCk7XG4gICAgfVxuXG4gICAgYWRkTmV3U3Vic2NyaXB0aW9uVXNpbmdTdHJpcGUoZGF0YSkge1xuICAgICAgICByZXR1cm4gdGhpcy5hcGkucG9zdCgnL3NpZ251cHMvdHJpYWxfdXNlcl9zdHJpcGVfYWNjb3VudCcsIGRhdGEpO1xuICAgIH1cblxuICAgIHVwZGF0ZVBhc3N3b3JkKGRhdGE6IHtcbiAgICAgICAgcGFzc3dvcmQ6IHN0cmluZztcbiAgICAgICAgcGFzc3dvcmRfY29uZmlybWF0aW9uOiBzdHJpbmc7XG4gICAgICAgIG9sZF9wYXNzd29yZDogc3RyaW5nO1xuICAgIH0pIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuYXBpLnB1dCgnL3Bhc3N3b3JkL3VwZGF0ZScsIGRhdGEpO1xuICAgIH1cblxuICAgIGdldFVzZXJJbnZvaWNlcyhwYWdpbmc6IFBhZ2luZywgaWQ6IG51bWJlcikge1xuICAgICAgICByZXR1cm4gdGhpcy5hcGkuZ2V0V2l0aFBhcmFtcyhgJHt0aGlzLmVuZHBvaW50fS9pbnZvaWNlc2AsIHtcbiAgICAgICAgICAgIC4uLkhlbHBlclNlcnZpY2UuZ2V0UGFnaW5nUGFyYW1zKHBhZ2luZyksXG4gICAgICAgICAgICB1c2VyX2lkOiBpZFxuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBwb3N0VGlwc0Rpc3JlZ2FyZGVkKGRhdGE6IHsgdGlwX2lkOiBudW1iZXI7IGRpc3JlZ2FyZGVkOiBib29sZWFuIH0pIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuYXBpLnBvc3QoJy91c2Vycy91c2VyX3RpcHMnLCBkYXRhKTtcbiAgICB9XG5cbiAgICByZWZyZXNoVXNlckFwaVRva2VucygpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuYXBpLmdldChgJHt0aGlzLmVuZHBvaW50fS9yZWZyZXNoX3VzZXJfYXBpX3Rva2Vuc2ApO1xuICAgIH1cbn1cbiJdfQ==
|
|
@@ -1,36 +0,0 @@
|
|
|
1
|
-
import { Injectable } from '@angular/core';
|
|
2
|
-
import * as i0 from "@angular/core";
|
|
3
|
-
export class ValidationService {
|
|
4
|
-
static { this.CustomValidatorPatterns = {
|
|
5
|
-
StrongPassword: /^(?=.*[a-z])(?=.*[A-Z])(?=.*\d)(?=.*[!@#$%^&*])(?=.{8,})/,
|
|
6
|
-
Year: '[0-9]{4}$'
|
|
7
|
-
}; }
|
|
8
|
-
/**
|
|
9
|
-
* Validates email.
|
|
10
|
-
*/
|
|
11
|
-
static email(input) {
|
|
12
|
-
if (!input) {
|
|
13
|
-
return false;
|
|
14
|
-
}
|
|
15
|
-
const reg = /^\w+([-+.']\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*$/;
|
|
16
|
-
return reg.test(input);
|
|
17
|
-
}
|
|
18
|
-
static patternValidator(regex, error) {
|
|
19
|
-
return (control) => {
|
|
20
|
-
if (!control.value) {
|
|
21
|
-
// if control is empty return no error
|
|
22
|
-
return null;
|
|
23
|
-
}
|
|
24
|
-
// test the value of the control against the regexp supplied
|
|
25
|
-
const valid = regex.test(control.value);
|
|
26
|
-
// if true, return no error (no error), else return error passed in the second parameter
|
|
27
|
-
return valid ? null : error;
|
|
28
|
-
};
|
|
29
|
-
}
|
|
30
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.11", ngImport: i0, type: ValidationService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
31
|
-
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.3.11", ngImport: i0, type: ValidationService }); }
|
|
32
|
-
}
|
|
33
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.11", ngImport: i0, type: ValidationService, decorators: [{
|
|
34
|
-
type: Injectable
|
|
35
|
-
}] });
|
|
36
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmFsaWRhdGlvbi5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vbGlicy9jb21tb24tc2VydmljZXMvc3JjL2xpYi92YWxpZGF0aW9uLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQzs7QUFJM0MsTUFBTSxPQUFPLGlCQUFpQjthQUNWLDRCQUF1QixHQUFHO1FBQ3RDLGNBQWMsRUFBRSwwREFBMEQ7UUFDMUUsSUFBSSxFQUFFLFdBQVc7S0FDcEIsQUFIc0MsQ0FHckM7SUFFRjs7T0FFRztJQUNILE1BQU0sQ0FBQyxLQUFLLENBQUMsS0FBYTtRQUN0QixJQUFJLENBQUMsS0FBSyxFQUFFLENBQUM7WUFDVCxPQUFPLEtBQUssQ0FBQztRQUNqQixDQUFDO1FBQ0QsTUFBTSxHQUFHLEdBQUcsZ0RBQWdELENBQUM7UUFFN0QsT0FBTyxHQUFHLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQzNCLENBQUM7SUFFRCxNQUFNLENBQUMsZ0JBQWdCLENBQUMsS0FBYSxFQUFFLEtBQXVCO1FBQzFELE9BQU8sQ0FBQyxPQUF3QixFQUE2QixFQUFFO1lBQzNELElBQUksQ0FBQyxPQUFPLENBQUMsS0FBSyxFQUFFLENBQUM7Z0JBQ2pCLHNDQUFzQztnQkFDdEMsT0FBTyxJQUFJLENBQUM7WUFDaEIsQ0FBQztZQUVELDREQUE0RDtZQUM1RCxNQUFNLEtBQUssR0FBRyxLQUFLLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxLQUFlLENBQUMsQ0FBQztZQUVsRCx3RkFBd0Y7WUFDeEYsT0FBTyxLQUFLLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDO1FBQ2hDLENBQUMsQ0FBQztJQUNOLENBQUM7K0dBL0JRLGlCQUFpQjttSEFBakIsaUJBQWlCOzs0RkFBakIsaUJBQWlCO2tCQUQ3QixVQUFVIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQWJzdHJhY3RDb250cm9sLCBWYWxpZGF0aW9uRXJyb3JzLCBWYWxpZGF0b3JGbiB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcblxuQEluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIFZhbGlkYXRpb25TZXJ2aWNlIHtcbiAgICBzdGF0aWMgcmVhZG9ubHkgQ3VzdG9tVmFsaWRhdG9yUGF0dGVybnMgPSB7XG4gICAgICAgIFN0cm9uZ1Bhc3N3b3JkOiAvXig/PS4qW2Etel0pKD89LipbQS1aXSkoPz0uKlxcZCkoPz0uKlshQCMkJV4mKl0pKD89Lns4LH0pLyxcbiAgICAgICAgWWVhcjogJ1swLTldezR9JCdcbiAgICB9O1xuXG4gICAgLyoqXG4gICAgICogVmFsaWRhdGVzIGVtYWlsLlxuICAgICAqL1xuICAgIHN0YXRpYyBlbWFpbChpbnB1dDogc3RyaW5nKSB7XG4gICAgICAgIGlmICghaW5wdXQpIHtcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCByZWcgPSAvXlxcdysoWy0rLiddXFx3KykqQFxcdysoWy0uXVxcdyspKlxcLlxcdysoWy0uXVxcdyspKiQvO1xuXG4gICAgICAgIHJldHVybiByZWcudGVzdChpbnB1dCk7XG4gICAgfVxuXG4gICAgc3RhdGljIHBhdHRlcm5WYWxpZGF0b3IocmVnZXg6IFJlZ0V4cCwgZXJyb3I6IFZhbGlkYXRpb25FcnJvcnMpOiBWYWxpZGF0b3JGbiB8IG51bGwge1xuICAgICAgICByZXR1cm4gKGNvbnRyb2w6IEFic3RyYWN0Q29udHJvbCk6IHsgW2tleTogc3RyaW5nXTogc3RyaW5nIH0gPT4ge1xuICAgICAgICAgICAgaWYgKCFjb250cm9sLnZhbHVlKSB7XG4gICAgICAgICAgICAgICAgLy8gaWYgY29udHJvbCBpcyBlbXB0eSByZXR1cm4gbm8gZXJyb3JcbiAgICAgICAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgLy8gdGVzdCB0aGUgdmFsdWUgb2YgdGhlIGNvbnRyb2wgYWdhaW5zdCB0aGUgcmVnZXhwIHN1cHBsaWVkXG4gICAgICAgICAgICBjb25zdCB2YWxpZCA9IHJlZ2V4LnRlc3QoY29udHJvbC52YWx1ZSBhcyBzdHJpbmcpO1xuXG4gICAgICAgICAgICAvLyBpZiB0cnVlLCByZXR1cm4gbm8gZXJyb3IgKG5vIGVycm9yKSwgZWxzZSByZXR1cm4gZXJyb3IgcGFzc2VkIGluIHRoZSBzZWNvbmQgcGFyYW1ldGVyXG4gICAgICAgICAgICByZXR1cm4gdmFsaWQgPyBudWxsIDogZXJyb3I7XG4gICAgICAgIH07XG4gICAgfVxufVxuIl19
|
|
@@ -1,20 +0,0 @@
|
|
|
1
|
-
import { Injectable } from '@angular/core';
|
|
2
|
-
import * as i0 from "@angular/core";
|
|
3
|
-
export class WindowService {
|
|
4
|
-
/**
|
|
5
|
-
* redirect to the given url
|
|
6
|
-
* NOTE: this does hard page reload
|
|
7
|
-
*/
|
|
8
|
-
replaceUrl(url) {
|
|
9
|
-
window.location.href = url;
|
|
10
|
-
}
|
|
11
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.11", ngImport: i0, type: WindowService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
12
|
-
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.3.11", ngImport: i0, type: WindowService, providedIn: 'root' }); }
|
|
13
|
-
}
|
|
14
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.11", ngImport: i0, type: WindowService, decorators: [{
|
|
15
|
-
type: Injectable,
|
|
16
|
-
args: [{
|
|
17
|
-
providedIn: 'root'
|
|
18
|
-
}]
|
|
19
|
-
}] });
|
|
20
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2luZG93LnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9saWJzL2NvbW1vbi1zZXJ2aWNlcy9zcmMvbGliL3dpbmRvdy5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7O0FBSzNDLE1BQU0sT0FBTyxhQUFhO0lBQ3RCOzs7T0FHRztJQUNILFVBQVUsQ0FBQyxHQUFXO1FBQ2xCLE1BQU0sQ0FBQyxRQUFRLENBQUMsSUFBSSxHQUFHLEdBQUcsQ0FBQztJQUMvQixDQUFDOytHQVBRLGFBQWE7bUhBQWIsYUFBYSxjQUZWLE1BQU07OzRGQUVULGFBQWE7a0JBSHpCLFVBQVU7bUJBQUM7b0JBQ1IsVUFBVSxFQUFFLE1BQU07aUJBQ3JCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5ASW5qZWN0YWJsZSh7XG4gICAgcHJvdmlkZWRJbjogJ3Jvb3QnXG59KVxuZXhwb3J0IGNsYXNzIFdpbmRvd1NlcnZpY2Uge1xuICAgIC8qKlxuICAgICAqIHJlZGlyZWN0IHRvIHRoZSBnaXZlbiB1cmxcbiAgICAgKiBOT1RFOiB0aGlzIGRvZXMgaGFyZCBwYWdlIHJlbG9hZFxuICAgICAqL1xuICAgIHJlcGxhY2VVcmwodXJsOiBzdHJpbmcpIHtcbiAgICAgICAgd2luZG93LmxvY2F0aW9uLmhyZWYgPSB1cmw7XG4gICAgfVxufVxuIl19
|
|
@@ -1,5 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Generated bundle index. Do not edit.
|
|
3
|
-
*/
|
|
4
|
-
export * from './index';
|
|
5
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicG9zaXdpc2UtY29tbW9uLXNlcnZpY2VzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vbGlicy9jb21tb24tc2VydmljZXMvc3JjL3Bvc2l3aXNlLWNvbW1vbi1zZXJ2aWNlcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7R0FFRztBQUVILGNBQWMsU0FBUyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBHZW5lcmF0ZWQgYnVuZGxlIGluZGV4LiBEbyBub3QgZWRpdC5cbiAqL1xuXG5leHBvcnQgKiBmcm9tICcuL2luZGV4JztcbiJdfQ==
|