@cleavelandprice/ngx-lib 2.2.2 → 2.3.8

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.
Files changed (272) hide show
  1. package/README.md +6 -616
  2. package/active-directory/active-directory.module.d.ts +11 -0
  3. package/active-directory/index.d.ts +5 -0
  4. package/active-directory/model/ad-object.d.ts +13 -0
  5. package/active-directory/model/cache-object.d.ts +4 -0
  6. package/active-directory/model/caching-config.d.ts +4 -0
  7. package/active-directory/model/default-caching-config.d.ts +2 -0
  8. package/active-directory/model/default-config.d.ts +2 -0
  9. package/active-directory/model/default-logging-config.d.ts +2 -0
  10. package/active-directory/model/logging-config.d.ts +6 -0
  11. package/active-directory/model/service-config.d.ts +7 -0
  12. package/active-directory/model/user-or-group.d.ts +7 -0
  13. package/active-directory/model/user.d.ts +23 -0
  14. package/active-directory/public_api.d.ts +8 -0
  15. package/active-directory/services/active-directory.service.d.ts +18 -0
  16. package/authentication/authentication.module.d.ts +20 -0
  17. package/authentication/components/login/login.component.d.ts +13 -0
  18. package/authentication/components/login-form/login-form.component.d.ts +23 -0
  19. package/authentication/index.d.ts +5 -0
  20. package/authentication/model/authenticated-user.d.ts +9 -0
  21. package/authentication/model/authentication-request.d.ts +6 -0
  22. package/{src/authentication → authentication}/model/authentication-token.d.ts +0 -0
  23. package/authentication/model/default-config.d.ts +2 -0
  24. package/authentication/model/login-form-data.d.ts +3 -0
  25. package/authentication/model/service-config.d.ts +3 -0
  26. package/authentication/public_api.d.ts +9 -0
  27. package/authentication/services/authentication.service.d.ts +25 -0
  28. package/dialog/components/base/base.component.d.ts +20 -0
  29. package/dialog/components/confirmation/confirmation.component.d.ts +12 -0
  30. package/dialog/components/input/input.component.d.ts +12 -0
  31. package/dialog/components/message/message.component.d.ts +12 -0
  32. package/dialog/dialog.module.d.ts +17 -0
  33. package/dialog/index.d.ts +5 -0
  34. package/{src/dialog/model/confirmation-dialog-mode.enum.d.ts → dialog/model/confirmation-dialog-mode.d.ts} +0 -0
  35. package/dialog/model/dialog-base-data.d.ts +10 -0
  36. package/dialog/model/dialog-type.d.ts +5 -0
  37. package/dialog/public_api.d.ts +8 -0
  38. package/esm2020/active-directory/active-directory.module.mjs +38 -0
  39. package/esm2020/active-directory/cleavelandprice-ngx-lib-active-directory.mjs +5 -0
  40. package/esm2020/active-directory/model/ad-object.mjs +2 -0
  41. package/esm2020/active-directory/model/cache-object.mjs +3 -0
  42. package/esm2020/active-directory/model/caching-config.mjs +2 -0
  43. package/esm2020/active-directory/model/default-caching-config.mjs +5 -0
  44. package/esm2020/active-directory/model/default-config.mjs +8 -0
  45. package/esm2020/active-directory/model/default-logging-config.mjs +7 -0
  46. package/esm2020/active-directory/model/logging-config.mjs +2 -0
  47. package/esm2020/active-directory/model/service-config.mjs +3 -0
  48. package/esm2020/active-directory/model/user-or-group.mjs +2 -0
  49. package/esm2020/active-directory/model/user.mjs +2 -0
  50. package/esm2020/active-directory/public_api.mjs +9 -0
  51. package/esm2020/active-directory/services/active-directory.service.mjs +89 -0
  52. package/esm2020/authentication/authentication.module.mjs +77 -0
  53. package/esm2020/authentication/cleavelandprice-ngx-lib-authentication.mjs +5 -0
  54. package/esm2020/authentication/components/login/login.component.mjs +39 -0
  55. package/esm2020/authentication/components/login-form/login-form.component.mjs +60 -0
  56. package/esm2020/authentication/model/authenticated-user.mjs +2 -0
  57. package/esm2020/authentication/model/authentication-request.mjs +2 -0
  58. package/esm2020/authentication/model/authentication-token.mjs +2 -0
  59. package/esm2020/authentication/model/default-config.mjs +4 -0
  60. package/esm2020/authentication/model/login-form-data.mjs +2 -0
  61. package/esm2020/authentication/model/service-config.mjs +3 -0
  62. package/esm2020/authentication/public_api.mjs +11 -0
  63. package/esm2020/authentication/services/authentication.service.mjs +120 -0
  64. package/esm2020/cleavelandprice-ngx-lib.mjs +1 -1
  65. package/esm2020/dialog/cleavelandprice-ngx-lib-dialog.mjs +5 -0
  66. package/esm2020/dialog/components/base/base.component.mjs +84 -0
  67. package/esm2020/dialog/components/confirmation/confirmation.component.mjs +23 -0
  68. package/esm2020/dialog/components/input/input.component.mjs +23 -0
  69. package/esm2020/dialog/components/message/message.component.mjs +23 -0
  70. package/esm2020/dialog/dialog.module.mjs +63 -0
  71. package/esm2020/dialog/model/confirmation-dialog-mode.mjs +8 -0
  72. package/esm2020/dialog/model/dialog-base-data.mjs +2 -0
  73. package/esm2020/dialog/model/dialog-type.mjs +7 -0
  74. package/esm2020/dialog/public_api.mjs +9 -0
  75. package/esm2020/lib/ngx-lib.module.mjs +16 -0
  76. package/esm2020/public_api.mjs +5 -8
  77. package/esm2020/sharepoint/cleavelandprice-ngx-lib-sharepoint.mjs +5 -0
  78. package/esm2020/sharepoint/model/base-item.mjs +2 -0
  79. package/esm2020/sharepoint/model/base-request-credential.mjs +2 -0
  80. package/esm2020/sharepoint/model/base-request.mjs +2 -0
  81. package/esm2020/sharepoint/model/cache-object.mjs +3 -0
  82. package/esm2020/sharepoint/model/caching-config.mjs +2 -0
  83. package/esm2020/sharepoint/model/default-config.mjs +25 -0
  84. package/esm2020/sharepoint/model/file-request.mjs +2 -0
  85. package/esm2020/sharepoint/model/folder-request.mjs +2 -0
  86. package/esm2020/sharepoint/model/list-item.mjs +2 -0
  87. package/esm2020/sharepoint/model/list-items-request.mjs +2 -0
  88. package/esm2020/sharepoint/model/logging-config.mjs +2 -0
  89. package/esm2020/sharepoint/model/photo-item.mjs +2 -0
  90. package/esm2020/sharepoint/model/service-config.mjs +3 -0
  91. package/esm2020/sharepoint/model/uri-request.mjs +2 -0
  92. package/esm2020/sharepoint/model/user-request.mjs +2 -0
  93. package/esm2020/sharepoint/model/user.mjs +2 -0
  94. package/esm2020/sharepoint/public_api.mjs +18 -0
  95. package/esm2020/sharepoint/services/sharepoint.service.mjs +152 -0
  96. package/esm2020/sharepoint/sharepoint.module.mjs +38 -0
  97. package/esm2020/upload/cleavelandprice-ngx-lib-upload.mjs +5 -0
  98. package/esm2020/upload/components/upload/upload.component.mjs +33 -0
  99. package/esm2020/upload/components/upload-dialog/upload-dialog.component.mjs +92 -0
  100. package/esm2020/upload/model/database-file-info.mjs +2 -0
  101. package/esm2020/upload/model/file-upload-request.mjs +2 -0
  102. package/esm2020/upload/model/filesystem-file-info.mjs +2 -0
  103. package/esm2020/upload/model/service-config.mjs +3 -0
  104. package/esm2020/upload/public_api.mjs +9 -0
  105. package/esm2020/upload/services/upload.service.mjs +93 -0
  106. package/esm2020/upload/upload.module.mjs +61 -0
  107. package/esm2020/url-utilities/cleavelandprice-ngx-lib-url-utilities.mjs +5 -0
  108. package/esm2020/url-utilities/pipes/safe-resource-url.pipe.mjs +20 -0
  109. package/esm2020/url-utilities/pipes/safe-url.pipe.mjs +20 -0
  110. package/esm2020/url-utilities/pipes/uri-scheme.pipe.mjs +105 -0
  111. package/esm2020/url-utilities/public_api.mjs +5 -0
  112. package/esm2020/url-utilities/url-utilities.module.mjs +34 -0
  113. package/fesm2015/cleavelandprice-ngx-lib-active-directory.mjs +156 -0
  114. package/fesm2015/cleavelandprice-ngx-lib-active-directory.mjs.map +1 -0
  115. package/fesm2015/cleavelandprice-ngx-lib-authentication.mjs +299 -0
  116. package/fesm2015/cleavelandprice-ngx-lib-authentication.mjs.map +1 -0
  117. package/fesm2015/cleavelandprice-ngx-lib-dialog.mjs +218 -0
  118. package/fesm2015/cleavelandprice-ngx-lib-dialog.mjs.map +1 -0
  119. package/fesm2015/cleavelandprice-ngx-lib-sharepoint.mjs +233 -0
  120. package/fesm2015/cleavelandprice-ngx-lib-sharepoint.mjs.map +1 -0
  121. package/fesm2015/cleavelandprice-ngx-lib-upload.mjs +280 -0
  122. package/fesm2015/cleavelandprice-ngx-lib-upload.mjs.map +1 -0
  123. package/fesm2015/cleavelandprice-ngx-lib-url-utilities.mjs +176 -0
  124. package/fesm2015/cleavelandprice-ngx-lib-url-utilities.mjs.map +1 -0
  125. package/fesm2015/cleavelandprice-ngx-lib.mjs +11 -1398
  126. package/fesm2015/cleavelandprice-ngx-lib.mjs.map +1 -1
  127. package/fesm2020/cleavelandprice-ngx-lib-active-directory.mjs +147 -0
  128. package/fesm2020/cleavelandprice-ngx-lib-active-directory.mjs.map +1 -0
  129. package/fesm2020/cleavelandprice-ngx-lib-authentication.mjs +290 -0
  130. package/fesm2020/cleavelandprice-ngx-lib-authentication.mjs.map +1 -0
  131. package/fesm2020/cleavelandprice-ngx-lib-dialog.mjs +212 -0
  132. package/fesm2020/cleavelandprice-ngx-lib-dialog.mjs.map +1 -0
  133. package/fesm2020/cleavelandprice-ngx-lib-sharepoint.mjs +219 -0
  134. package/fesm2020/cleavelandprice-ngx-lib-sharepoint.mjs.map +1 -0
  135. package/fesm2020/cleavelandprice-ngx-lib-upload.mjs +273 -0
  136. package/fesm2020/cleavelandprice-ngx-lib-upload.mjs.map +1 -0
  137. package/fesm2020/cleavelandprice-ngx-lib-url-utilities.mjs +176 -0
  138. package/fesm2020/cleavelandprice-ngx-lib-url-utilities.mjs.map +1 -0
  139. package/fesm2020/cleavelandprice-ngx-lib.mjs +11 -1370
  140. package/fesm2020/cleavelandprice-ngx-lib.mjs.map +1 -1
  141. package/lib/ngx-lib.module.d.ts +6 -0
  142. package/package.json +57 -12
  143. package/public_api.d.ts +1 -7
  144. package/sharepoint/index.d.ts +5 -0
  145. package/sharepoint/model/base-item.d.ts +4 -0
  146. package/sharepoint/model/base-request-credential.d.ts +4 -0
  147. package/sharepoint/model/base-request.d.ts +8 -0
  148. package/sharepoint/model/cache-object.d.ts +4 -0
  149. package/sharepoint/model/caching-config.d.ts +4 -0
  150. package/sharepoint/model/default-config.d.ts +2 -0
  151. package/sharepoint/model/file-request.d.ts +4 -0
  152. package/sharepoint/model/folder-request.d.ts +4 -0
  153. package/sharepoint/model/list-item.d.ts +10 -0
  154. package/sharepoint/model/list-items-request.d.ts +5 -0
  155. package/sharepoint/model/logging-config.d.ts +6 -0
  156. package/sharepoint/model/photo-item.d.ts +11 -0
  157. package/sharepoint/model/service-config.d.ts +16 -0
  158. package/sharepoint/model/uri-request.d.ts +4 -0
  159. package/sharepoint/model/user-request.d.ts +4 -0
  160. package/sharepoint/model/user.d.ts +12 -0
  161. package/sharepoint/public_api.d.ts +16 -0
  162. package/sharepoint/services/sharepoint.service.d.ts +25 -0
  163. package/sharepoint/sharepoint.module.d.ts +11 -0
  164. package/{src/file-upload → upload}/components/upload/upload.component.d.ts +0 -0
  165. package/{src/file-upload → upload}/components/upload-dialog/upload-dialog.component.d.ts +3 -3
  166. package/upload/index.d.ts +5 -0
  167. package/{src/file-upload → upload}/model/database-file-info.d.ts +0 -0
  168. package/{src/file-upload → upload}/model/file-upload-request.d.ts +0 -0
  169. package/{src/file-upload → upload}/model/filesystem-file-info.d.ts +0 -0
  170. package/{src/file-upload/model/upload.service.config.d.ts → upload/model/service-config.d.ts} +1 -1
  171. package/upload/public_api.d.ts +8 -0
  172. package/{src/file-upload → upload}/services/upload.service.d.ts +6 -8
  173. package/upload/upload.module.d.ts +16 -0
  174. package/url-utilities/index.d.ts +5 -0
  175. package/url-utilities/pipes/safe-resource-url.pipe.d.ts +10 -0
  176. package/{src/url → url-utilities}/pipes/safe-url.pipe.d.ts +0 -0
  177. package/{src/url → url-utilities}/pipes/uri-scheme.pipe.d.ts +1 -1
  178. package/url-utilities/public_api.d.ts +4 -0
  179. package/url-utilities/url-utilities.module.d.ts +10 -0
  180. package/esm2020/src/authentication/authentication.module.mjs +0 -112
  181. package/esm2020/src/authentication/components/login/login.component.mjs +0 -40
  182. package/esm2020/src/authentication/components/login-form/login-form.component.mjs +0 -45
  183. package/esm2020/src/authentication/model/authentication-token.mjs +0 -2
  184. package/esm2020/src/authentication/model/authentication.service.config.mjs +0 -3
  185. package/esm2020/src/authentication/services/authentication.service.mjs +0 -138
  186. package/esm2020/src/dialog/components/_dialog/dialog.component.mjs +0 -83
  187. package/esm2020/src/dialog/components/confirmation-dialog/confirmation-dialog.component.mjs +0 -21
  188. package/esm2020/src/dialog/components/input-dialog/input-dialog.component.mjs +0 -21
  189. package/esm2020/src/dialog/components/message-dialog/message-dialog.component.mjs +0 -21
  190. package/esm2020/src/dialog/dialog.module.mjs +0 -74
  191. package/esm2020/src/dialog/model/confirmation-dialog-mode.enum.mjs +0 -8
  192. package/esm2020/src/email/email.module.mjs +0 -47
  193. package/esm2020/src/email/model/email-dto.mjs +0 -2
  194. package/esm2020/src/email/model/email-sender.mjs +0 -2
  195. package/esm2020/src/email/model/email.mjs +0 -2
  196. package/esm2020/src/email/model/email.service.config.mjs +0 -3
  197. package/esm2020/src/email/services/email.service.mjs +0 -31
  198. package/esm2020/src/employee/employee.module.mjs +0 -91
  199. package/esm2020/src/employee/model/employee.mjs +0 -2
  200. package/esm2020/src/employee/model/employee.service.config.mjs +0 -3
  201. package/esm2020/src/employee/pipes/departments.pipe.mjs +0 -24
  202. package/esm2020/src/employee/pipes/employee-by-dn.pipe.mjs +0 -17
  203. package/esm2020/src/employee/pipes/employee-photo-url.pipe.mjs +0 -27
  204. package/esm2020/src/employee/pipes/employees-with-property-value.pipe.mjs +0 -17
  205. package/esm2020/src/employee/pipes/filter-employees.pipe.mjs +0 -22
  206. package/esm2020/src/employee/pipes/is-member-of.pipe.mjs +0 -17
  207. package/esm2020/src/employee/pipes/sort-employees.pipe.mjs +0 -44
  208. package/esm2020/src/employee/services/employee.service.mjs +0 -41
  209. package/esm2020/src/file-upload/components/upload/upload.component.mjs +0 -34
  210. package/esm2020/src/file-upload/components/upload-dialog/upload-dialog.component.mjs +0 -102
  211. package/esm2020/src/file-upload/model/database-file-info.mjs +0 -2
  212. package/esm2020/src/file-upload/model/file-upload-request.mjs +0 -2
  213. package/esm2020/src/file-upload/model/filesystem-file-info.mjs +0 -2
  214. package/esm2020/src/file-upload/model/upload.service.config.mjs +0 -3
  215. package/esm2020/src/file-upload/services/upload.service.mjs +0 -93
  216. package/esm2020/src/file-upload/upload.module.mjs +0 -93
  217. package/esm2020/src/sharepoint/model/sharepoint-calendar-event.mjs +0 -2
  218. package/esm2020/src/sharepoint/model/sharepoint-customer-visit.mjs +0 -2
  219. package/esm2020/src/sharepoint/model/sharepoint-employee-picture.mjs +0 -2
  220. package/esm2020/src/sharepoint/model/sharepoint-list-item.mjs +0 -2
  221. package/esm2020/src/sharepoint/model/sharepoint-list.mjs +0 -2
  222. package/esm2020/src/sharepoint/model/sharepoint-person.mjs +0 -2
  223. package/esm2020/src/sharepoint/model/sharepoint-picture.mjs +0 -2
  224. package/esm2020/src/sharepoint/model/sharepoint.service.config.mjs +0 -3
  225. package/esm2020/src/sharepoint/pipes/sharepoint-photo-url.pipe.mjs +0 -16
  226. package/esm2020/src/sharepoint/pipes/sharepoint-url.pipe.mjs +0 -16
  227. package/esm2020/src/sharepoint/services/sharepoint.service.mjs +0 -77
  228. package/esm2020/src/sharepoint/sharepoint.module.mjs +0 -69
  229. package/esm2020/src/url/pipes/safe-url.pipe.mjs +0 -21
  230. package/esm2020/src/url/pipes/uri-scheme.pipe.mjs +0 -103
  231. package/esm2020/src/url/url.module.mjs +0 -38
  232. package/src/authentication/authentication.module.d.ts +0 -31
  233. package/src/authentication/components/login/login.component.d.ts +0 -15
  234. package/src/authentication/components/login-form/login-form.component.d.ts +0 -20
  235. package/src/authentication/model/authentication.service.config.d.ts +0 -3
  236. package/src/authentication/services/authentication.service.d.ts +0 -68
  237. package/src/dialog/components/_dialog/dialog.component.d.ts +0 -22
  238. package/src/dialog/components/confirmation-dialog/confirmation-dialog.component.d.ts +0 -9
  239. package/src/dialog/components/input-dialog/input-dialog.component.d.ts +0 -9
  240. package/src/dialog/components/message-dialog/message-dialog.component.d.ts +0 -9
  241. package/src/dialog/dialog.module.d.ts +0 -20
  242. package/src/email/email.module.d.ts +0 -14
  243. package/src/email/model/email-dto.d.ts +0 -13
  244. package/src/email/model/email-sender.d.ts +0 -6
  245. package/src/email/model/email.d.ts +0 -9
  246. package/src/email/model/email.service.config.d.ts +0 -7
  247. package/src/email/services/email.service.d.ts +0 -13
  248. package/src/employee/employee.module.d.ts +0 -28
  249. package/src/employee/model/employee.d.ts +0 -35
  250. package/src/employee/model/employee.service.config.d.ts +0 -3
  251. package/src/employee/pipes/departments.pipe.d.ts +0 -8
  252. package/src/employee/pipes/employee-by-dn.pipe.d.ts +0 -8
  253. package/src/employee/pipes/employee-photo-url.pipe.d.ts +0 -9
  254. package/src/employee/pipes/employees-with-property-value.pipe.d.ts +0 -8
  255. package/src/employee/pipes/filter-employees.pipe.d.ts +0 -8
  256. package/src/employee/pipes/is-member-of.pipe.d.ts +0 -8
  257. package/src/employee/pipes/sort-employees.pipe.d.ts +0 -9
  258. package/src/employee/services/employee.service.d.ts +0 -15
  259. package/src/file-upload/upload.module.d.ts +0 -26
  260. package/src/sharepoint/model/sharepoint-calendar-event.d.ts +0 -6
  261. package/src/sharepoint/model/sharepoint-customer-visit.d.ts +0 -8
  262. package/src/sharepoint/model/sharepoint-employee-picture.d.ts +0 -5
  263. package/src/sharepoint/model/sharepoint-list-item.d.ts +0 -11
  264. package/src/sharepoint/model/sharepoint-list.d.ts +0 -8
  265. package/src/sharepoint/model/sharepoint-person.d.ts +0 -9
  266. package/src/sharepoint/model/sharepoint-picture.d.ts +0 -14
  267. package/src/sharepoint/model/sharepoint.service.config.d.ts +0 -5
  268. package/src/sharepoint/pipes/sharepoint-photo-url.pipe.d.ts +0 -8
  269. package/src/sharepoint/pipes/sharepoint-url.pipe.d.ts +0 -7
  270. package/src/sharepoint/services/sharepoint.service.d.ts +0 -23
  271. package/src/sharepoint/sharepoint.module.d.ts +0 -24
  272. package/src/url/url.module.d.ts +0 -11
@@ -1,4 +1,4 @@
1
- export declare class UploadServiceConfig {
1
+ export declare class ServiceConfig {
2
2
  uploadApiUrl: string;
3
3
  uploadPath?: string;
4
4
  dbAppId?: string;
@@ -0,0 +1,8 @@
1
+ export * from './model/database-file-info';
2
+ export * from './model/file-upload-request';
3
+ export * from './model/filesystem-file-info';
4
+ export * from './model/service-config';
5
+ export * from './components/upload/upload.component';
6
+ export * from './components/upload-dialog/upload-dialog.component';
7
+ export * from './services/upload.service';
8
+ export * from './upload.module';
@@ -1,9 +1,9 @@
1
1
  import { HttpClient } from '@angular/common/http';
2
2
  import { Observable } from 'rxjs';
3
- import { UploadServiceConfig } from './../model/upload.service.config';
4
- import { FileUploadRequest } from './../model/file-upload-request';
5
- import { DatabaseFileInfo } from './../model/database-file-info';
6
- import { FilesystemFileInfo } from './../model/filesystem-file-info';
3
+ import { ServiceConfig } from '../model/service-config';
4
+ import { FileUploadRequest } from '../model/file-upload-request';
5
+ import { DatabaseFileInfo } from '../model/database-file-info';
6
+ import { FilesystemFileInfo } from '../model/filesystem-file-info';
7
7
  import * as i0 from "@angular/core";
8
8
  export declare class UploadService {
9
9
  private http;
@@ -18,10 +18,8 @@ export declare class UploadService {
18
18
  uploadDialogCancelButtonText: string;
19
19
  uploadDialogUploadButtonText: string;
20
20
  uploadDialogFinishButtonText: string;
21
- constructor(http: HttpClient, config: UploadServiceConfig);
22
- upload(files: Set<File>): {
23
- [key: string]: Observable<number>;
24
- };
21
+ constructor(http: HttpClient, config: ServiceConfig);
22
+ upload(files: Set<File>): any;
25
23
  exists(fileName: string): Observable<boolean>;
26
24
  download(request: FileUploadRequest): Observable<Blob>;
27
25
  getUploadInfo(request: FileUploadRequest): Observable<DatabaseFileInfo | DatabaseFileInfo[] | FilesystemFileInfo | FilesystemFileInfo[]>;
@@ -0,0 +1,16 @@
1
+ import { ModuleWithProviders } from '@angular/core';
2
+ import { ServiceConfig } from './model/service-config';
3
+ import * as i0 from "@angular/core";
4
+ import * as i1 from "./components/upload/upload.component";
5
+ import * as i2 from "./components/upload-dialog/upload-dialog.component";
6
+ import * as i3 from "@angular/common";
7
+ import * as i4 from "@angular/material/dialog";
8
+ import * as i5 from "@angular/material/list";
9
+ import * as i6 from "@angular/material/progress-bar";
10
+ export declare class UploadModule {
11
+ static forRoot(uploadConfig: ServiceConfig): ModuleWithProviders<UploadModule>;
12
+ constructor(parentModule: UploadModule);
13
+ static ɵfac: i0.ɵɵFactoryDeclaration<UploadModule, [{ optional: true; skipSelf: true; }]>;
14
+ static ɵmod: i0.ɵɵNgModuleDeclaration<UploadModule, [typeof i1.UploadComponent, typeof i2.UploadDialogComponent], [typeof i3.CommonModule, typeof i4.MatDialogModule, typeof i5.MatListModule, typeof i6.MatProgressBarModule], [typeof i1.UploadComponent, typeof i2.UploadDialogComponent]>;
15
+ static ɵinj: i0.ɵɵInjectorDeclaration<UploadModule>;
16
+ }
@@ -0,0 +1,5 @@
1
+ /**
2
+ * Generated bundle index. Do not edit.
3
+ */
4
+ /// <amd-module name="@cleavelandprice/ngx-lib/url-utilities" />
5
+ export * from './public_api';
@@ -0,0 +1,10 @@
1
+ import { PipeTransform } from '@angular/core';
2
+ import { DomSanitizer, SafeUrl } from '@angular/platform-browser';
3
+ import * as i0 from "@angular/core";
4
+ export declare class SafeResourceUrlPipe implements PipeTransform {
5
+ private domSanitizer;
6
+ constructor(domSanitizer: DomSanitizer);
7
+ transform(value: string): SafeUrl;
8
+ static ɵfac: i0.ɵɵFactoryDeclaration<SafeResourceUrlPipe, never>;
9
+ static ɵpipe: i0.ɵɵPipeDeclaration<SafeResourceUrlPipe, "safeResourceUrl", false>;
10
+ }
@@ -1,7 +1,7 @@
1
1
  import { PipeTransform } from '@angular/core';
2
2
  import * as i0 from "@angular/core";
3
3
  export declare class UriSchemePipe implements PipeTransform {
4
- transform(value: string): string;
4
+ transform(value: string, ignoreLocalStorage?: boolean): string;
5
5
  private app;
6
6
  private command;
7
7
  static ɵfac: i0.ɵɵFactoryDeclaration<UriSchemePipe, never>;
@@ -0,0 +1,4 @@
1
+ export * from './pipes/safe-resource-url.pipe';
2
+ export * from './pipes/safe-url.pipe';
3
+ export * from './pipes/uri-scheme.pipe';
4
+ export * from './url-utilities.module';
@@ -0,0 +1,10 @@
1
+ import * as i0 from "@angular/core";
2
+ import * as i1 from "./pipes/safe-resource-url.pipe";
3
+ import * as i2 from "./pipes/safe-url.pipe";
4
+ import * as i3 from "./pipes/uri-scheme.pipe";
5
+ import * as i4 from "@angular/common";
6
+ export declare class UrlUtilitiesModule {
7
+ static ɵfac: i0.ɵɵFactoryDeclaration<UrlUtilitiesModule, never>;
8
+ static ɵmod: i0.ɵɵNgModuleDeclaration<UrlUtilitiesModule, [typeof i1.SafeResourceUrlPipe, typeof i2.SafeUrlPipe, typeof i3.UriSchemePipe], [typeof i4.CommonModule], [typeof i1.SafeResourceUrlPipe, typeof i2.SafeUrlPipe, typeof i3.UriSchemePipe]>;
9
+ static ɵinj: i0.ɵɵInjectorDeclaration<UrlUtilitiesModule>;
10
+ }
@@ -1,112 +0,0 @@
1
- //#region Imports
2
- import { NgModule, Optional, SkipSelf } from '@angular/core';
3
- import { CommonModule } from '@angular/common';
4
- import { FormsModule } from '@angular/forms';
5
- // Angular Material
6
- import { MatButtonModule } from '@angular/material/button';
7
- import { MatCheckboxModule } from '@angular/material/checkbox';
8
- import { MatDialogModule } from '@angular/material/dialog';
9
- import { MatInputModule } from '@angular/material/input';
10
- import { MatProgressBarModule } from '@angular/material/progress-bar';
11
- import { MatProgressSpinnerModule } from '@angular/material/progress-spinner';
12
- import { MatSelectModule } from '@angular/material/select';
13
- import { MatTooltipModule } from '@angular/material/tooltip';
14
- // Modules
15
- import { DialogModule } from './../dialog/dialog.module';
16
- // Services
17
- import { AuthenticationServiceConfig } from './model/authentication.service.config';
18
- import { AuthenticationService } from './services/authentication.service';
19
- // Components
20
- import { LoginComponent } from './components/login/login.component';
21
- import { LoginFormComponent } from './components/login-form/login-form.component';
22
- import * as i0 from "@angular/core";
23
- //#endregion
24
- //#region Exports
25
- // Model
26
- export * from './model/authentication.service.config';
27
- export * from './model/authentication-token';
28
- // Services
29
- export * from './services/authentication.service';
30
- // Components
31
- export * from './components/login/login.component';
32
- export * from './components/login-form/login-form.component';
33
- //#endregion
34
- /**
35
- * Provides a component and a service that allows you to perform Active/Directory authentication
36
- */
37
- export class AuthenticationModule {
38
- constructor(parentModule) {
39
- if (parentModule) {
40
- throw new Error('AuthenticationModule is already loaded. Import it in the AppModule only');
41
- }
42
- }
43
- static forRoot(authenticationConfig) {
44
- return {
45
- ngModule: AuthenticationModule,
46
- providers: [
47
- AuthenticationService,
48
- { provide: AuthenticationServiceConfig, useValue: authenticationConfig }
49
- ]
50
- };
51
- }
52
- }
53
- AuthenticationModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.1.3", ngImport: i0, type: AuthenticationModule, deps: [{ token: AuthenticationModule, optional: true, skipSelf: true }], target: i0.ɵɵFactoryTarget.NgModule });
54
- AuthenticationModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "14.1.3", ngImport: i0, type: AuthenticationModule, declarations: [LoginComponent,
55
- LoginFormComponent], imports: [CommonModule,
56
- FormsModule,
57
- MatButtonModule,
58
- MatCheckboxModule,
59
- MatDialogModule,
60
- MatInputModule,
61
- MatProgressBarModule,
62
- MatProgressSpinnerModule,
63
- MatTooltipModule,
64
- MatSelectModule,
65
- DialogModule], exports: [LoginComponent,
66
- LoginFormComponent] });
67
- AuthenticationModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "14.1.3", ngImport: i0, type: AuthenticationModule, imports: [CommonModule,
68
- FormsModule,
69
- MatButtonModule,
70
- MatCheckboxModule,
71
- MatDialogModule,
72
- MatInputModule,
73
- MatProgressBarModule,
74
- MatProgressSpinnerModule,
75
- MatTooltipModule,
76
- MatSelectModule,
77
- DialogModule] });
78
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.1.3", ngImport: i0, type: AuthenticationModule, decorators: [{
79
- type: NgModule,
80
- args: [{
81
- imports: [
82
- CommonModule,
83
- FormsModule,
84
- MatButtonModule,
85
- MatCheckboxModule,
86
- MatDialogModule,
87
- MatInputModule,
88
- MatProgressBarModule,
89
- MatProgressSpinnerModule,
90
- MatTooltipModule,
91
- MatSelectModule,
92
- DialogModule
93
- ],
94
- declarations: [
95
- LoginComponent,
96
- LoginFormComponent
97
- ],
98
- exports: [
99
- LoginComponent,
100
- LoginFormComponent
101
- ],
102
- providers: [],
103
- entryComponents: [
104
- LoginFormComponent
105
- ]
106
- }]
107
- }], ctorParameters: function () { return [{ type: AuthenticationModule, decorators: [{
108
- type: Optional
109
- }, {
110
- type: SkipSelf
111
- }] }]; } });
112
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXV0aGVudGljYXRpb24ubW9kdWxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2F1dGhlbnRpY2F0aW9uL2F1dGhlbnRpY2F0aW9uLm1vZHVsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxpQkFBaUI7QUFDakIsT0FBTyxFQUFFLFFBQVEsRUFBdUIsUUFBUSxFQUFFLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNsRixPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRTdDLG1CQUFtQjtBQUNuQixPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDM0QsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDL0QsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQzNELE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUN6RCxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQUN0RSxPQUFPLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSxvQ0FBb0MsQ0FBQztBQUM5RSxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDM0QsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFFN0QsVUFBVTtBQUNWLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUV6RCxXQUFXO0FBQ1gsT0FBTyxFQUFFLDJCQUEyQixFQUFFLE1BQU0sdUNBQXVDLENBQUM7QUFDcEYsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sbUNBQW1DLENBQUM7QUFFMUUsYUFBYTtBQUNiLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxvQ0FBb0MsQ0FBQztBQUNwRSxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSw4Q0FBOEMsQ0FBQzs7QUFDbEYsWUFBWTtBQUVaLGlCQUFpQjtBQUNqQixRQUFRO0FBQ1IsY0FBYyx1Q0FBdUMsQ0FBQztBQUN0RCxjQUFjLDhCQUE4QixDQUFDO0FBRTdDLFdBQVc7QUFDWCxjQUFjLG1DQUFtQyxDQUFDO0FBRWxELGFBQWE7QUFDYixjQUFjLG9DQUFvQyxDQUFDO0FBQ25ELGNBQWMsOENBQThDLENBQUM7QUFDN0QsWUFBWTtBQUVaOztHQUVHO0FBNEJILE1BQU0sT0FBTyxvQkFBb0I7SUFXL0IsWUFBcUMsWUFBa0M7UUFDckUsSUFBSSxZQUFZLEVBQUU7WUFDaEIsTUFBTSxJQUFJLEtBQUssQ0FDYix5RUFBeUUsQ0FBQyxDQUFDO1NBQzlFO0lBQ0gsQ0FBQztJQWZELE1BQU0sQ0FBQyxPQUFPLENBQUMsb0JBQWlEO1FBQzlELE9BQU87WUFDTCxRQUFRLEVBQUUsb0JBQW9CO1lBQzlCLFNBQVMsRUFBRTtnQkFDVCxxQkFBcUI7Z0JBQ3JCLEVBQUUsT0FBTyxFQUFFLDJCQUEyQixFQUFFLFFBQVEsRUFBRSxvQkFBb0IsRUFBRTthQUN6RTtTQUNGLENBQUM7SUFDSixDQUFDOztpSEFUVSxvQkFBb0Isa0JBV29CLG9CQUFvQjtrSEFYNUQsb0JBQW9CLGlCQVo3QixjQUFjO1FBQ2Qsa0JBQWtCLGFBZGxCLFlBQVk7UUFDWixXQUFXO1FBQ1gsZUFBZTtRQUNmLGlCQUFpQjtRQUNqQixlQUFlO1FBQ2YsY0FBYztRQUNkLG9CQUFvQjtRQUNwQix3QkFBd0I7UUFDeEIsZ0JBQWdCO1FBQ2hCLGVBQWU7UUFDZixZQUFZLGFBT1osY0FBYztRQUNkLGtCQUFrQjtrSEFPVCxvQkFBb0IsWUF6QjdCLFlBQVk7UUFDWixXQUFXO1FBQ1gsZUFBZTtRQUNmLGlCQUFpQjtRQUNqQixlQUFlO1FBQ2YsY0FBYztRQUNkLG9CQUFvQjtRQUNwQix3QkFBd0I7UUFDeEIsZ0JBQWdCO1FBQ2hCLGVBQWU7UUFDZixZQUFZOzJGQWVILG9CQUFvQjtrQkEzQmhDLFFBQVE7bUJBQUM7b0JBQ1IsT0FBTyxFQUFFO3dCQUNQLFlBQVk7d0JBQ1osV0FBVzt3QkFDWCxlQUFlO3dCQUNmLGlCQUFpQjt3QkFDakIsZUFBZTt3QkFDZixjQUFjO3dCQUNkLG9CQUFvQjt3QkFDcEIsd0JBQXdCO3dCQUN4QixnQkFBZ0I7d0JBQ2hCLGVBQWU7d0JBQ2YsWUFBWTtxQkFDYjtvQkFDRCxZQUFZLEVBQUU7d0JBQ1osY0FBYzt3QkFDZCxrQkFBa0I7cUJBQ25CO29CQUNELE9BQU8sRUFBRTt3QkFDUCxjQUFjO3dCQUNkLGtCQUFrQjtxQkFDbkI7b0JBQ0QsU0FBUyxFQUFFLEVBQUU7b0JBQ2IsZUFBZSxFQUFFO3dCQUNmLGtCQUFrQjtxQkFDbkI7aUJBQ0Y7MERBWW9ELG9CQUFvQjswQkFBekQsUUFBUTs7MEJBQUksUUFBUSIsInNvdXJjZXNDb250ZW50IjpbIi8vI3JlZ2lvbiBJbXBvcnRzXHJcbmltcG9ydCB7IE5nTW9kdWxlLCBNb2R1bGVXaXRoUHJvdmlkZXJzLCBPcHRpb25hbCwgU2tpcFNlbGYgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcclxuaW1wb3J0IHsgRm9ybXNNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XHJcblxyXG4vLyBBbmd1bGFyIE1hdGVyaWFsXHJcbmltcG9ydCB7IE1hdEJ1dHRvbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2J1dHRvbic7XHJcbmltcG9ydCB7IE1hdENoZWNrYm94TW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvY2hlY2tib3gnO1xyXG5pbXBvcnQgeyBNYXREaWFsb2dNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9kaWFsb2cnO1xyXG5pbXBvcnQgeyBNYXRJbnB1dE1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2lucHV0JztcclxuaW1wb3J0IHsgTWF0UHJvZ3Jlc3NCYXJNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9wcm9ncmVzcy1iYXInO1xyXG5pbXBvcnQgeyBNYXRQcm9ncmVzc1NwaW5uZXJNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9wcm9ncmVzcy1zcGlubmVyJztcclxuaW1wb3J0IHsgTWF0U2VsZWN0TW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvc2VsZWN0JztcclxuaW1wb3J0IHsgTWF0VG9vbHRpcE1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL3Rvb2x0aXAnO1xyXG5cclxuLy8gTW9kdWxlc1xyXG5pbXBvcnQgeyBEaWFsb2dNb2R1bGUgfSBmcm9tICcuLy4uL2RpYWxvZy9kaWFsb2cubW9kdWxlJztcclxuXHJcbi8vIFNlcnZpY2VzXHJcbmltcG9ydCB7IEF1dGhlbnRpY2F0aW9uU2VydmljZUNvbmZpZyB9IGZyb20gJy4vbW9kZWwvYXV0aGVudGljYXRpb24uc2VydmljZS5jb25maWcnO1xyXG5pbXBvcnQgeyBBdXRoZW50aWNhdGlvblNlcnZpY2UgfSBmcm9tICcuL3NlcnZpY2VzL2F1dGhlbnRpY2F0aW9uLnNlcnZpY2UnO1xyXG5cclxuLy8gQ29tcG9uZW50c1xyXG5pbXBvcnQgeyBMb2dpbkNvbXBvbmVudCB9IGZyb20gJy4vY29tcG9uZW50cy9sb2dpbi9sb2dpbi5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBMb2dpbkZvcm1Db21wb25lbnQgfSBmcm9tICcuL2NvbXBvbmVudHMvbG9naW4tZm9ybS9sb2dpbi1mb3JtLmNvbXBvbmVudCc7XHJcbi8vI2VuZHJlZ2lvblxyXG5cclxuLy8jcmVnaW9uIEV4cG9ydHNcclxuLy8gTW9kZWxcclxuZXhwb3J0ICogZnJvbSAnLi9tb2RlbC9hdXRoZW50aWNhdGlvbi5zZXJ2aWNlLmNvbmZpZyc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbW9kZWwvYXV0aGVudGljYXRpb24tdG9rZW4nO1xyXG5cclxuLy8gU2VydmljZXNcclxuZXhwb3J0ICogZnJvbSAnLi9zZXJ2aWNlcy9hdXRoZW50aWNhdGlvbi5zZXJ2aWNlJztcclxuXHJcbi8vIENvbXBvbmVudHNcclxuZXhwb3J0ICogZnJvbSAnLi9jb21wb25lbnRzL2xvZ2luL2xvZ2luLmNvbXBvbmVudCc7XHJcbmV4cG9ydCAqIGZyb20gJy4vY29tcG9uZW50cy9sb2dpbi1mb3JtL2xvZ2luLWZvcm0uY29tcG9uZW50JztcclxuLy8jZW5kcmVnaW9uXHJcblxyXG4vKipcclxuICogUHJvdmlkZXMgYSBjb21wb25lbnQgYW5kIGEgc2VydmljZSB0aGF0IGFsbG93cyB5b3UgdG8gcGVyZm9ybSBBY3RpdmUvRGlyZWN0b3J5IGF1dGhlbnRpY2F0aW9uXHJcbiAqL1xyXG5ATmdNb2R1bGUoe1xyXG4gIGltcG9ydHM6IFtcclxuICAgIENvbW1vbk1vZHVsZSxcclxuICAgIEZvcm1zTW9kdWxlLFxyXG4gICAgTWF0QnV0dG9uTW9kdWxlLFxyXG4gICAgTWF0Q2hlY2tib3hNb2R1bGUsXHJcbiAgICBNYXREaWFsb2dNb2R1bGUsXHJcbiAgICBNYXRJbnB1dE1vZHVsZSxcclxuICAgIE1hdFByb2dyZXNzQmFyTW9kdWxlLFxyXG4gICAgTWF0UHJvZ3Jlc3NTcGlubmVyTW9kdWxlLFxyXG4gICAgTWF0VG9vbHRpcE1vZHVsZSxcclxuICAgIE1hdFNlbGVjdE1vZHVsZSxcclxuICAgIERpYWxvZ01vZHVsZVxyXG4gIF0sXHJcbiAgZGVjbGFyYXRpb25zOiBbXHJcbiAgICBMb2dpbkNvbXBvbmVudCxcclxuICAgIExvZ2luRm9ybUNvbXBvbmVudFxyXG4gIF0sXHJcbiAgZXhwb3J0czogW1xyXG4gICAgTG9naW5Db21wb25lbnQsXHJcbiAgICBMb2dpbkZvcm1Db21wb25lbnRcclxuICBdLFxyXG4gIHByb3ZpZGVyczogW10sXHJcbiAgZW50cnlDb21wb25lbnRzOiBbXHJcbiAgICBMb2dpbkZvcm1Db21wb25lbnRcclxuICBdXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBBdXRoZW50aWNhdGlvbk1vZHVsZSB7XHJcbiAgc3RhdGljIGZvclJvb3QoYXV0aGVudGljYXRpb25Db25maWc6IEF1dGhlbnRpY2F0aW9uU2VydmljZUNvbmZpZyk6IE1vZHVsZVdpdGhQcm92aWRlcnM8QXV0aGVudGljYXRpb25Nb2R1bGU+IHtcclxuICAgIHJldHVybiB7XHJcbiAgICAgIG5nTW9kdWxlOiBBdXRoZW50aWNhdGlvbk1vZHVsZSxcclxuICAgICAgcHJvdmlkZXJzOiBbXHJcbiAgICAgICAgQXV0aGVudGljYXRpb25TZXJ2aWNlLFxyXG4gICAgICAgIHsgcHJvdmlkZTogQXV0aGVudGljYXRpb25TZXJ2aWNlQ29uZmlnLCB1c2VWYWx1ZTogYXV0aGVudGljYXRpb25Db25maWcgfVxyXG4gICAgICBdXHJcbiAgICB9O1xyXG4gIH1cclxuXHJcbiAgY29uc3RydWN0b3IoIEBPcHRpb25hbCgpIEBTa2lwU2VsZigpIHBhcmVudE1vZHVsZTogQXV0aGVudGljYXRpb25Nb2R1bGUpIHtcclxuICAgIGlmIChwYXJlbnRNb2R1bGUpIHtcclxuICAgICAgdGhyb3cgbmV3IEVycm9yKFxyXG4gICAgICAgICdBdXRoZW50aWNhdGlvbk1vZHVsZSBpcyBhbHJlYWR5IGxvYWRlZC4gSW1wb3J0IGl0IGluIHRoZSBBcHBNb2R1bGUgb25seScpO1xyXG4gICAgfVxyXG4gIH1cclxufVxyXG4iXX0=
@@ -1,40 +0,0 @@
1
- import { Component, Input } from '@angular/core';
2
- import { LoginFormComponent } from './../login-form/login-form.component';
3
- import { ConfirmationDialogComponent } from './../../../dialog/components/confirmation-dialog/confirmation-dialog.component';
4
- import * as i0 from "@angular/core";
5
- import * as i1 from "@angular/material/dialog";
6
- import * as i2 from "./../../services/authentication.service";
7
- import * as i3 from "@angular/common";
8
- import * as i4 from "@angular/material/tooltip";
9
- export class LoginComponent {
10
- constructor(dialog, authenticationService) {
11
- this.dialog = dialog;
12
- this.authenticationService = authenticationService;
13
- }
14
- ngOnInit() {
15
- }
16
- login() {
17
- this.dialog.open(LoginFormComponent, {
18
- data: { adminGroup: this.adminGroup }
19
- });
20
- }
21
- confirmLogout() {
22
- const dialogRef = this.dialog.open(ConfirmationDialogComponent, {
23
- data: { message: `Are you sure you want to logout?` }
24
- });
25
- dialogRef.afterClosed().subscribe(result => {
26
- if (result) {
27
- this.authenticationService.logout();
28
- }
29
- });
30
- }
31
- }
32
- LoginComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.1.3", ngImport: i0, type: LoginComponent, deps: [{ token: i1.MatDialog }, { token: i2.AuthenticationService }], target: i0.ɵɵFactoryTarget.Component });
33
- LoginComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.1.3", type: LoginComponent, selector: "cp-login", inputs: { adminGroup: "adminGroup" }, ngImport: i0, template: "<div id=\"user-id\">\r\n <i id=\"unauthenticated-user-image\" *ngIf=\"!authenticationService.authenticated\"\r\n class=\"fa fa-user-circle\"\r\n [class.fa-spin]=\"authenticationService.authenticating\"\r\n aria-hidden=\"true\"\r\n matTooltip=\"Login\"\r\n (click)=\"login()\"></i>\r\n\r\n <img id=\"authenticated-user-image\"\r\n *ngIf=\"authenticationService.authenticated && authenticationService.authenticatedUser.photoUrl\"\r\n [src]=\"authenticationService.authenticatedUser.photoUrl\"\r\n matTooltip=\"Logout\"\r\n (click)=\"confirmLogout()\" />\r\n\r\n <i id=\"authenticated-user-image\"\r\n *ngIf=\"authenticationService.authenticated && !authenticationService.authenticatedUser.photoUrl\"\r\n class=\"fa fa-user-circle\"\r\n matTooltip=\"Logout\"\r\n (click)=\"confirmLogout()\"></i>\r\n\r\n <div id=\"user-name\" *ngIf=\"authenticationService.authenticated\">\r\n {{ authenticationService.authenticatedUser.displayName }}\r\n </div>\r\n</div>", styles: ["#user-id{display:flex;height:2em;padding:.3em;font-family:Verdana,Geneva,Tahoma,sans-serif}.fa{font-size:2em}img{border-radius:100%;width:2em;height:2em}#user-id>div{display:flex;align-items:center;height:100%;margin-left:.75em;font-size:1.15em}\n"], dependencies: [{ kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i4.MatTooltip, selector: "[matTooltip]", exportAs: ["matTooltip"] }] });
34
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.1.3", ngImport: i0, type: LoginComponent, decorators: [{
35
- type: Component,
36
- args: [{ selector: 'cp-login', template: "<div id=\"user-id\">\r\n <i id=\"unauthenticated-user-image\" *ngIf=\"!authenticationService.authenticated\"\r\n class=\"fa fa-user-circle\"\r\n [class.fa-spin]=\"authenticationService.authenticating\"\r\n aria-hidden=\"true\"\r\n matTooltip=\"Login\"\r\n (click)=\"login()\"></i>\r\n\r\n <img id=\"authenticated-user-image\"\r\n *ngIf=\"authenticationService.authenticated && authenticationService.authenticatedUser.photoUrl\"\r\n [src]=\"authenticationService.authenticatedUser.photoUrl\"\r\n matTooltip=\"Logout\"\r\n (click)=\"confirmLogout()\" />\r\n\r\n <i id=\"authenticated-user-image\"\r\n *ngIf=\"authenticationService.authenticated && !authenticationService.authenticatedUser.photoUrl\"\r\n class=\"fa fa-user-circle\"\r\n matTooltip=\"Logout\"\r\n (click)=\"confirmLogout()\"></i>\r\n\r\n <div id=\"user-name\" *ngIf=\"authenticationService.authenticated\">\r\n {{ authenticationService.authenticatedUser.displayName }}\r\n </div>\r\n</div>", styles: ["#user-id{display:flex;height:2em;padding:.3em;font-family:Verdana,Geneva,Tahoma,sans-serif}.fa{font-size:2em}img{border-radius:100%;width:2em;height:2em}#user-id>div{display:flex;align-items:center;height:100%;margin-left:.75em;font-size:1.15em}\n"] }]
37
- }], ctorParameters: function () { return [{ type: i1.MatDialog }, { type: i2.AuthenticationService }]; }, propDecorators: { adminGroup: [{
38
- type: Input
39
- }] } });
40
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9naW4uY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2F1dGhlbnRpY2F0aW9uL2NvbXBvbmVudHMvbG9naW4vbG9naW4uY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2F1dGhlbnRpY2F0aW9uL2NvbXBvbmVudHMvbG9naW4vbG9naW4uY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBVSxLQUFLLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFekQsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sc0NBQXNDLENBQUM7QUFFMUUsT0FBTyxFQUFFLDJCQUEyQixFQUFFLE1BQU0sZ0ZBQWdGLENBQUM7Ozs7OztBQU83SCxNQUFNLE9BQU8sY0FBYztJQUd6QixZQUFtQixNQUFpQixFQUMzQixxQkFBNEM7UUFEbEMsV0FBTSxHQUFOLE1BQU0sQ0FBVztRQUMzQiwwQkFBcUIsR0FBckIscUJBQXFCLENBQXVCO0lBQ3JELENBQUM7SUFFRCxRQUFRO0lBQ1IsQ0FBQztJQUVELEtBQUs7UUFDSCxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxrQkFBa0IsRUFBRTtZQUNuQyxJQUFJLEVBQUUsRUFBRSxVQUFVLEVBQUUsSUFBSSxDQUFDLFVBQVUsRUFBRTtTQUN0QyxDQUFDLENBQUM7SUFDTCxDQUFDO0lBRUQsYUFBYTtRQUNYLE1BQU0sU0FBUyxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLDJCQUEyQixFQUFFO1lBQzlELElBQUksRUFBRSxFQUFFLE9BQU8sRUFBRSxrQ0FBa0MsRUFBRTtTQUN0RCxDQUFDLENBQUM7UUFFSCxTQUFTLENBQUMsV0FBVyxFQUFFLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxFQUFFO1lBQ3pDLElBQUksTUFBTSxFQUFFO2dCQUNWLElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxNQUFNLEVBQUUsQ0FBQzthQUNyQztRQUNILENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQzs7MkdBMUJVLGNBQWM7K0ZBQWQsY0FBYyxzRkNYM0IseStCQXVCTTsyRkRaTyxjQUFjO2tCQUwxQixTQUFTOytCQUNFLFVBQVU7b0lBS1gsVUFBVTtzQkFBbEIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgT25Jbml0LCBJbnB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBNYXREaWFsb2cgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9kaWFsb2cnO1xyXG5pbXBvcnQgeyBMb2dpbkZvcm1Db21wb25lbnQgfSBmcm9tICcuLy4uL2xvZ2luLWZvcm0vbG9naW4tZm9ybS5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBBdXRoZW50aWNhdGlvblNlcnZpY2UgfSBmcm9tICcuLy4uLy4uL3NlcnZpY2VzL2F1dGhlbnRpY2F0aW9uLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBDb25maXJtYXRpb25EaWFsb2dDb21wb25lbnQgfSBmcm9tICcuLy4uLy4uLy4uL2RpYWxvZy9jb21wb25lbnRzL2NvbmZpcm1hdGlvbi1kaWFsb2cvY29uZmlybWF0aW9uLWRpYWxvZy5jb21wb25lbnQnO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdjcC1sb2dpbicsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL2xvZ2luLmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybHM6IFsnLi9sb2dpbi5jb21wb25lbnQuY3NzJ11cclxufSlcclxuZXhwb3J0IGNsYXNzIExvZ2luQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcclxuICBASW5wdXQoKSBhZG1pbkdyb3VwOiBzdHJpbmc7XHJcblxyXG4gIGNvbnN0cnVjdG9yKHB1YmxpYyBkaWFsb2c6IE1hdERpYWxvZyxcclxuICAgIHB1YmxpYyBhdXRoZW50aWNhdGlvblNlcnZpY2U6IEF1dGhlbnRpY2F0aW9uU2VydmljZSkge1xyXG4gIH1cclxuXHJcbiAgbmdPbkluaXQoKSB7XHJcbiAgfVxyXG5cclxuICBsb2dpbigpOiB2b2lkIHtcclxuICAgIHRoaXMuZGlhbG9nLm9wZW4oTG9naW5Gb3JtQ29tcG9uZW50LCB7XHJcbiAgICAgIGRhdGE6IHsgYWRtaW5Hcm91cDogdGhpcy5hZG1pbkdyb3VwIH1cclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgY29uZmlybUxvZ291dCgpOiB2b2lkIHtcclxuICAgIGNvbnN0IGRpYWxvZ1JlZiA9IHRoaXMuZGlhbG9nLm9wZW4oQ29uZmlybWF0aW9uRGlhbG9nQ29tcG9uZW50LCB7XHJcbiAgICAgIGRhdGE6IHsgbWVzc2FnZTogYEFyZSB5b3Ugc3VyZSB5b3Ugd2FudCB0byBsb2dvdXQ/YCB9XHJcbiAgICB9KTtcclxuXHJcbiAgICBkaWFsb2dSZWYuYWZ0ZXJDbG9zZWQoKS5zdWJzY3JpYmUocmVzdWx0ID0+IHtcclxuICAgICAgaWYgKHJlc3VsdCkge1xyXG4gICAgICAgIHRoaXMuYXV0aGVudGljYXRpb25TZXJ2aWNlLmxvZ291dCgpO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuICB9XHJcbn1cclxuIiwiPGRpdiBpZD1cInVzZXItaWRcIj5cclxuICA8aSBpZD1cInVuYXV0aGVudGljYXRlZC11c2VyLWltYWdlXCIgKm5nSWY9XCIhYXV0aGVudGljYXRpb25TZXJ2aWNlLmF1dGhlbnRpY2F0ZWRcIlxyXG4gICAgY2xhc3M9XCJmYSBmYS11c2VyLWNpcmNsZVwiXHJcbiAgICBbY2xhc3MuZmEtc3Bpbl09XCJhdXRoZW50aWNhdGlvblNlcnZpY2UuYXV0aGVudGljYXRpbmdcIlxyXG4gICAgYXJpYS1oaWRkZW49XCJ0cnVlXCJcclxuICAgIG1hdFRvb2x0aXA9XCJMb2dpblwiXHJcbiAgICAoY2xpY2spPVwibG9naW4oKVwiPjwvaT5cclxuXHJcbiAgPGltZyBpZD1cImF1dGhlbnRpY2F0ZWQtdXNlci1pbWFnZVwiXHJcbiAgICAqbmdJZj1cImF1dGhlbnRpY2F0aW9uU2VydmljZS5hdXRoZW50aWNhdGVkICYmIGF1dGhlbnRpY2F0aW9uU2VydmljZS5hdXRoZW50aWNhdGVkVXNlci5waG90b1VybFwiXHJcbiAgICBbc3JjXT1cImF1dGhlbnRpY2F0aW9uU2VydmljZS5hdXRoZW50aWNhdGVkVXNlci5waG90b1VybFwiXHJcbiAgICBtYXRUb29sdGlwPVwiTG9nb3V0XCJcclxuICAgIChjbGljayk9XCJjb25maXJtTG9nb3V0KClcIiAvPlxyXG5cclxuICA8aSBpZD1cImF1dGhlbnRpY2F0ZWQtdXNlci1pbWFnZVwiXHJcbiAgICAqbmdJZj1cImF1dGhlbnRpY2F0aW9uU2VydmljZS5hdXRoZW50aWNhdGVkICYmICFhdXRoZW50aWNhdGlvblNlcnZpY2UuYXV0aGVudGljYXRlZFVzZXIucGhvdG9VcmxcIlxyXG4gICAgY2xhc3M9XCJmYSBmYS11c2VyLWNpcmNsZVwiXHJcbiAgICBtYXRUb29sdGlwPVwiTG9nb3V0XCJcclxuICAgIChjbGljayk9XCJjb25maXJtTG9nb3V0KClcIj48L2k+XHJcblxyXG4gIDxkaXYgaWQ9XCJ1c2VyLW5hbWVcIiAqbmdJZj1cImF1dGhlbnRpY2F0aW9uU2VydmljZS5hdXRoZW50aWNhdGVkXCI+XHJcbiAgICB7eyBhdXRoZW50aWNhdGlvblNlcnZpY2UuYXV0aGVudGljYXRlZFVzZXIuZGlzcGxheU5hbWUgfX1cclxuICA8L2Rpdj5cclxuPC9kaXY+Il19
@@ -1,45 +0,0 @@
1
- import { Component, Inject } from '@angular/core';
2
- import { MAT_DIALOG_DATA } from '@angular/material/dialog';
3
- import * as i0 from "@angular/core";
4
- import * as i1 from "@angular/material/dialog";
5
- import * as i2 from "./../../../sharepoint/services/sharepoint.service";
6
- import * as i3 from "./../../services/authentication.service";
7
- import * as i4 from "@angular/common";
8
- import * as i5 from "@angular/forms";
9
- import * as i6 from "@angular/material/button";
10
- import * as i7 from "@angular/material/form-field";
11
- import * as i8 from "@angular/material/input";
12
- import * as i9 from "@angular/material/progress-spinner";
13
- export class LoginFormComponent {
14
- constructor(dialogRef, sharePointService, authenticationService, data) {
15
- this.dialogRef = dialogRef;
16
- this.sharePointService = sharePointService;
17
- this.authenticationService = authenticationService;
18
- this.data = data;
19
- this.adminGroup = data.adminGroup;
20
- }
21
- ngOnInit() {
22
- this.authenticationService.authenticatedChanged
23
- .subscribe(authenticated => {
24
- if (authenticated) {
25
- this.dialogRef.close();
26
- }
27
- });
28
- }
29
- authenticate() {
30
- if (!this.sharePointService || !this.username || !this.password) {
31
- return;
32
- }
33
- this.authenticationService.login(this.username, this.password, this.adminGroup);
34
- }
35
- }
36
- LoginFormComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.1.3", ngImport: i0, type: LoginFormComponent, deps: [{ token: i1.MatDialogRef }, { token: i2.SharePointService }, { token: i3.AuthenticationService }, { token: MAT_DIALOG_DATA }], target: i0.ɵɵFactoryTarget.Component });
37
- LoginFormComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.1.3", type: LoginFormComponent, selector: "cp-login-form", ngImport: i0, template: "<h2 mat-dialog-title>\r\n <span *ngIf=\"!authenticationService.authenticating\">Login</span>\r\n <span *ngIf=\"authenticationService.authenticating\">Authenticating...</span>\r\n</h2>\r\n\r\n<mat-dialog-content [class.loginError]=\"loginError\">\r\n <div id=\"spinner\" *ngIf=\"authenticationService.authenticating\">\r\n <mat-progress-spinner color=\"primary\" mode=\"indeterminate\"></mat-progress-spinner>\r\n </div>\r\n\r\n <div *ngIf=\"!authenticationService.authenticating\">\r\n <div>\r\n <mat-form-field>\r\n <input matInput placeholder=\"Username\" [(ngModel)]=\"username\" name=\"username\" required (keyup.enter)=\"authenticate()\">\r\n </mat-form-field>\r\n </div>\r\n\r\n <div>\r\n <mat-form-field>\r\n <input matInput type=\"password\" placeholder=\"Password\" [(ngModel)]=\"password\" name=\"password\" required (keyup.enter)=\"authenticate()\">\r\n </mat-form-field>\r\n </div>\r\n </div>\r\n\r\n <div *ngIf=\"!authenticationService.authenticating && loginError\" class=\"alert alert-danger\">\r\n Bad username or password\r\n </div>\r\n</mat-dialog-content>\r\n\r\n<mat-dialog-actions *ngIf=\"!authenticationService.authenticating\">\r\n <button type=\"button\" mat-raised-button (click)=\"authenticate()\">OK</button>\r\n <button type=\"button\" mat-button (click)=\"dialogRef.close()\">Cancel</button>\r\n</mat-dialog-actions>", styles: ["#spinner{width:100%;height:100%;display:flex;justify-content:center;align-items:center}mat-dialog-content{height:150px}mat-dialog-content.loginError{height:200px}\n"], dependencies: [{ kind: "directive", type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i5.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i5.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i5.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { kind: "directive", type: i5.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: i6.MatButton, selector: "button[mat-button], button[mat-raised-button], button[mat-icon-button], button[mat-fab], button[mat-mini-fab], button[mat-stroked-button], button[mat-flat-button]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { kind: "directive", type: i1.MatDialogTitle, selector: "[mat-dialog-title], [matDialogTitle]", inputs: ["id"], exportAs: ["matDialogTitle"] }, { kind: "directive", type: i1.MatDialogContent, selector: "[mat-dialog-content], mat-dialog-content, [matDialogContent]" }, { kind: "directive", type: i1.MatDialogActions, selector: "[mat-dialog-actions], mat-dialog-actions, [matDialogActions]", inputs: ["align"] }, { kind: "component", type: i7.MatFormField, selector: "mat-form-field", inputs: ["color", "appearance", "hideRequiredMarker", "hintLabel", "floatLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i8.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly"], exportAs: ["matInput"] }, { kind: "component", type: i9.MatProgressSpinner, selector: "mat-progress-spinner, mat-spinner", inputs: ["color", "diameter", "strokeWidth", "mode", "value"], exportAs: ["matProgressSpinner"] }] });
38
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.1.3", ngImport: i0, type: LoginFormComponent, decorators: [{
39
- type: Component,
40
- args: [{ selector: 'cp-login-form', template: "<h2 mat-dialog-title>\r\n <span *ngIf=\"!authenticationService.authenticating\">Login</span>\r\n <span *ngIf=\"authenticationService.authenticating\">Authenticating...</span>\r\n</h2>\r\n\r\n<mat-dialog-content [class.loginError]=\"loginError\">\r\n <div id=\"spinner\" *ngIf=\"authenticationService.authenticating\">\r\n <mat-progress-spinner color=\"primary\" mode=\"indeterminate\"></mat-progress-spinner>\r\n </div>\r\n\r\n <div *ngIf=\"!authenticationService.authenticating\">\r\n <div>\r\n <mat-form-field>\r\n <input matInput placeholder=\"Username\" [(ngModel)]=\"username\" name=\"username\" required (keyup.enter)=\"authenticate()\">\r\n </mat-form-field>\r\n </div>\r\n\r\n <div>\r\n <mat-form-field>\r\n <input matInput type=\"password\" placeholder=\"Password\" [(ngModel)]=\"password\" name=\"password\" required (keyup.enter)=\"authenticate()\">\r\n </mat-form-field>\r\n </div>\r\n </div>\r\n\r\n <div *ngIf=\"!authenticationService.authenticating && loginError\" class=\"alert alert-danger\">\r\n Bad username or password\r\n </div>\r\n</mat-dialog-content>\r\n\r\n<mat-dialog-actions *ngIf=\"!authenticationService.authenticating\">\r\n <button type=\"button\" mat-raised-button (click)=\"authenticate()\">OK</button>\r\n <button type=\"button\" mat-button (click)=\"dialogRef.close()\">Cancel</button>\r\n</mat-dialog-actions>", styles: ["#spinner{width:100%;height:100%;display:flex;justify-content:center;align-items:center}mat-dialog-content{height:150px}mat-dialog-content.loginError{height:200px}\n"] }]
41
- }], ctorParameters: function () { return [{ type: i1.MatDialogRef }, { type: i2.SharePointService }, { type: i3.AuthenticationService }, { type: undefined, decorators: [{
42
- type: Inject,
43
- args: [MAT_DIALOG_DATA]
44
- }] }]; } });
45
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9naW4tZm9ybS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXV0aGVudGljYXRpb24vY29tcG9uZW50cy9sb2dpbi1mb3JtL2xvZ2luLWZvcm0uY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2F1dGhlbnRpY2F0aW9uL2NvbXBvbmVudHMvbG9naW4tZm9ybS9sb2dpbi1mb3JtLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQVUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzFELE9BQU8sRUFBZ0IsZUFBZSxFQUFFLE1BQU0sMEJBQTBCLENBQUM7Ozs7Ozs7Ozs7O0FBU3pFLE1BQU0sT0FBTyxrQkFBa0I7SUFNN0IsWUFBbUIsU0FBMkMsRUFDcEQsaUJBQW9DLEVBQ3JDLHFCQUE0QyxFQUNuQixJQUFTO1FBSHhCLGNBQVMsR0FBVCxTQUFTLENBQWtDO1FBQ3BELHNCQUFpQixHQUFqQixpQkFBaUIsQ0FBbUI7UUFDckMsMEJBQXFCLEdBQXJCLHFCQUFxQixDQUF1QjtRQUNuQixTQUFJLEdBQUosSUFBSSxDQUFLO1FBQ3ZDLElBQUksQ0FBQyxVQUFVLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQztJQUN0QyxDQUFDO0lBRUQsUUFBUTtRQUNOLElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxvQkFBb0I7YUFDNUMsU0FBUyxDQUFDLGFBQWEsQ0FBQyxFQUFFO1lBQ3pCLElBQUksYUFBYSxFQUFFO2dCQUNqQixJQUFJLENBQUMsU0FBUyxDQUFDLEtBQUssRUFBRSxDQUFDO2FBQ3hCO1FBQ0gsQ0FBQyxDQUFDLENBQUM7SUFDUCxDQUFDO0lBRUQsWUFBWTtRQUNWLElBQUksQ0FBQyxJQUFJLENBQUMsaUJBQWlCLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsRUFBRTtZQUMvRCxPQUFPO1NBQ1I7UUFDRCxJQUFJLENBQUMscUJBQXFCLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxRQUFRLEVBQUUsSUFBSSxDQUFDLFFBQVEsRUFBRSxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUM7SUFDbEYsQ0FBQzs7K0dBM0JVLGtCQUFrQixvSEFTbkIsZUFBZTttR0FUZCxrQkFBa0IscURDVi9CLGk0Q0FnQ3FCOzJGRHRCUixrQkFBa0I7a0JBTDlCLFNBQVM7K0JBQ0UsZUFBZTs7MEJBYXRCLE1BQU07MkJBQUMsZUFBZSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgT25Jbml0LCBJbmplY3QgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgTWF0RGlhbG9nUmVmLCBNQVRfRElBTE9HX0RBVEEgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9kaWFsb2cnO1xyXG5pbXBvcnQgeyBBdXRoZW50aWNhdGlvblNlcnZpY2UgfSBmcm9tICcuLy4uLy4uL3NlcnZpY2VzL2F1dGhlbnRpY2F0aW9uLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBTaGFyZVBvaW50U2VydmljZSB9IGZyb20gJy4vLi4vLi4vLi4vc2hhcmVwb2ludC9zZXJ2aWNlcy9zaGFyZXBvaW50LnNlcnZpY2UnO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdjcC1sb2dpbi1mb3JtJyxcclxuICB0ZW1wbGF0ZVVybDogJy4vbG9naW4tZm9ybS5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmxzOiBbJy4vbG9naW4tZm9ybS5jb21wb25lbnQuY3NzJ11cclxufSlcclxuZXhwb3J0IGNsYXNzIExvZ2luRm9ybUNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XHJcbiAgdXNlcm5hbWU6IHN0cmluZztcclxuICBwYXNzd29yZDogc3RyaW5nO1xyXG4gIGFkbWluR3JvdXA6IHN0cmluZztcclxuICBsb2dpbkVycm9yOiBib29sZWFuO1xyXG5cclxuICBjb25zdHJ1Y3RvcihwdWJsaWMgZGlhbG9nUmVmOiBNYXREaWFsb2dSZWY8TG9naW5Gb3JtQ29tcG9uZW50PixcclxuICAgIHByaXZhdGUgc2hhcmVQb2ludFNlcnZpY2U6IFNoYXJlUG9pbnRTZXJ2aWNlLFxyXG4gICAgcHVibGljIGF1dGhlbnRpY2F0aW9uU2VydmljZTogQXV0aGVudGljYXRpb25TZXJ2aWNlLFxyXG4gICAgQEluamVjdChNQVRfRElBTE9HX0RBVEEpIHB1YmxpYyBkYXRhOiBhbnkpIHtcclxuICAgICAgdGhpcy5hZG1pbkdyb3VwID0gZGF0YS5hZG1pbkdyb3VwO1xyXG4gIH1cclxuXHJcbiAgbmdPbkluaXQoKTogdm9pZCB7XHJcbiAgICB0aGlzLmF1dGhlbnRpY2F0aW9uU2VydmljZS5hdXRoZW50aWNhdGVkQ2hhbmdlZFxyXG4gICAgICAuc3Vic2NyaWJlKGF1dGhlbnRpY2F0ZWQgPT4ge1xyXG4gICAgICAgIGlmIChhdXRoZW50aWNhdGVkKSB7XHJcbiAgICAgICAgICB0aGlzLmRpYWxvZ1JlZi5jbG9zZSgpO1xyXG4gICAgICAgIH1cclxuICAgICAgfSk7XHJcbiAgfVxyXG5cclxuICBhdXRoZW50aWNhdGUoKSB7XHJcbiAgICBpZiAoIXRoaXMuc2hhcmVQb2ludFNlcnZpY2UgfHwgIXRoaXMudXNlcm5hbWUgfHwgIXRoaXMucGFzc3dvcmQpIHtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG4gICAgdGhpcy5hdXRoZW50aWNhdGlvblNlcnZpY2UubG9naW4odGhpcy51c2VybmFtZSwgdGhpcy5wYXNzd29yZCwgdGhpcy5hZG1pbkdyb3VwKTtcclxuICB9XHJcbn1cclxuIiwiPGgyIG1hdC1kaWFsb2ctdGl0bGU+XHJcbiAgPHNwYW4gKm5nSWY9XCIhYXV0aGVudGljYXRpb25TZXJ2aWNlLmF1dGhlbnRpY2F0aW5nXCI+TG9naW48L3NwYW4+XHJcbiAgPHNwYW4gKm5nSWY9XCJhdXRoZW50aWNhdGlvblNlcnZpY2UuYXV0aGVudGljYXRpbmdcIj5BdXRoZW50aWNhdGluZy4uLjwvc3Bhbj5cclxuPC9oMj5cclxuXHJcbjxtYXQtZGlhbG9nLWNvbnRlbnQgW2NsYXNzLmxvZ2luRXJyb3JdPVwibG9naW5FcnJvclwiPlxyXG4gIDxkaXYgaWQ9XCJzcGlubmVyXCIgKm5nSWY9XCJhdXRoZW50aWNhdGlvblNlcnZpY2UuYXV0aGVudGljYXRpbmdcIj5cclxuICAgIDxtYXQtcHJvZ3Jlc3Mtc3Bpbm5lciBjb2xvcj1cInByaW1hcnlcIiBtb2RlPVwiaW5kZXRlcm1pbmF0ZVwiPjwvbWF0LXByb2dyZXNzLXNwaW5uZXI+XHJcbiAgPC9kaXY+XHJcblxyXG4gIDxkaXYgKm5nSWY9XCIhYXV0aGVudGljYXRpb25TZXJ2aWNlLmF1dGhlbnRpY2F0aW5nXCI+XHJcbiAgICA8ZGl2PlxyXG4gICAgICA8bWF0LWZvcm0tZmllbGQ+XHJcbiAgICAgICAgPGlucHV0IG1hdElucHV0IHBsYWNlaG9sZGVyPVwiVXNlcm5hbWVcIiBbKG5nTW9kZWwpXT1cInVzZXJuYW1lXCIgbmFtZT1cInVzZXJuYW1lXCIgcmVxdWlyZWQgKGtleXVwLmVudGVyKT1cImF1dGhlbnRpY2F0ZSgpXCI+XHJcbiAgICAgIDwvbWF0LWZvcm0tZmllbGQ+XHJcbiAgICA8L2Rpdj5cclxuXHJcbiAgICA8ZGl2PlxyXG4gICAgICA8bWF0LWZvcm0tZmllbGQ+XHJcbiAgICAgICAgPGlucHV0IG1hdElucHV0IHR5cGU9XCJwYXNzd29yZFwiIHBsYWNlaG9sZGVyPVwiUGFzc3dvcmRcIiBbKG5nTW9kZWwpXT1cInBhc3N3b3JkXCIgbmFtZT1cInBhc3N3b3JkXCIgcmVxdWlyZWQgKGtleXVwLmVudGVyKT1cImF1dGhlbnRpY2F0ZSgpXCI+XHJcbiAgICAgIDwvbWF0LWZvcm0tZmllbGQ+XHJcbiAgICA8L2Rpdj5cclxuICA8L2Rpdj5cclxuXHJcbiAgPGRpdiAqbmdJZj1cIiFhdXRoZW50aWNhdGlvblNlcnZpY2UuYXV0aGVudGljYXRpbmcgJiYgbG9naW5FcnJvclwiIGNsYXNzPVwiYWxlcnQgYWxlcnQtZGFuZ2VyXCI+XHJcbiAgICBCYWQgdXNlcm5hbWUgb3IgcGFzc3dvcmRcclxuICA8L2Rpdj5cclxuPC9tYXQtZGlhbG9nLWNvbnRlbnQ+XHJcblxyXG48bWF0LWRpYWxvZy1hY3Rpb25zICpuZ0lmPVwiIWF1dGhlbnRpY2F0aW9uU2VydmljZS5hdXRoZW50aWNhdGluZ1wiPlxyXG4gIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIG1hdC1yYWlzZWQtYnV0dG9uIChjbGljayk9XCJhdXRoZW50aWNhdGUoKVwiPk9LPC9idXR0b24+XHJcbiAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgbWF0LWJ1dHRvbiAoY2xpY2spPVwiZGlhbG9nUmVmLmNsb3NlKClcIj5DYW5jZWw8L2J1dHRvbj5cclxuPC9tYXQtZGlhbG9nLWFjdGlvbnM+Il19
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXV0aGVudGljYXRpb24tdG9rZW4uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvYXV0aGVudGljYXRpb24vbW9kZWwvYXV0aGVudGljYXRpb24tdG9rZW4udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBpbnRlcmZhY2UgQXV0aGVudGljYXRpb25Ub2tlbiB7XHJcbiAgICBhdWQ6IHN0cmluZztcclxuICAgIGRpc3BsYXlOYW1lOiBzdHJpbmc7XHJcbiAgICBkaXN0aW5ndWlzaGVkTmFtZTogc3RyaW5nO1xyXG4gICAgZW1haWw6IHN0cmluZztcclxuICAgIGVtcGxveWVlTnVtYmVyOiBzdHJpbmc7XHJcbiAgICBleHA6IG51bWJlcjtcclxuICAgIGZpcnN0TmFtZTogc3RyaW5nO1xyXG4gICAgaXNzOiBzdHJpbmc7XHJcbiAgICBsYXN0TmFtZTogc3RyaW5nO1xyXG4gICAgbWVtYmVyT2Y6IHN0cmluZztcclxuICAgIG5iZjogbnVtYmVyO1xyXG4gICAgcGhvbmU6IHN0cmluZztcclxuICAgIHJvbGU6IHN0cmluZztcclxuICAgIHNpZDogc3RyaW5nO1xyXG4gICAgd2luYWNjb3VudG5hbWU6IHN0cmluZztcclxufVxyXG4iXX0=
@@ -1,3 +0,0 @@
1
- export class AuthenticationServiceConfig {
2
- }
3
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXV0aGVudGljYXRpb24uc2VydmljZS5jb25maWcuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvYXV0aGVudGljYXRpb24vbW9kZWwvYXV0aGVudGljYXRpb24uc2VydmljZS5jb25maWcudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsTUFBTSxPQUFPLDJCQUEyQjtDQUV2QyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBjbGFzcyBBdXRoZW50aWNhdGlvblNlcnZpY2VDb25maWcge1xyXG4gICAgYXV0aGVudGljYXRpb25BcGlVcmw6IHN0cmluZztcclxufVxyXG4iXX0=
@@ -1,138 +0,0 @@
1
- //#region Imports
2
- import { Injectable, Output, EventEmitter, Optional } from '@angular/core';
3
- // import { JwtHelper } from 'angular2-jwt';
4
- import { JwtHelperService } from '@auth0/angular-jwt';
5
- import * as i0 from "@angular/core";
6
- import * as i1 from "./../model/authentication.service.config";
7
- import * as i2 from "@angular/common/http";
8
- import * as i3 from "./../../sharepoint/services/sharepoint.service";
9
- //#endregion
10
- /**
11
- * Authenticate Active Directory user
12
- */
13
- export class AuthenticationService {
14
- //#endregion
15
- //#region Lifecycle
16
- /**
17
- * @ignore
18
- */
19
- constructor(config, http, sharePointService) {
20
- this.http = http;
21
- this.sharePointService = sharePointService;
22
- this.authenticatedChanged = new EventEmitter();
23
- this.authenticatingChanged = new EventEmitter();
24
- /**
25
- * Flag set to true while the service is attempting to authenticate the user
26
- */
27
- this.authenticating = false;
28
- /**
29
- * Flag set to true when the user is successfully authenticated
30
- */
31
- this.authenticated = false;
32
- this.authenticationApiUrl = config.authenticationApiUrl;
33
- this.checkForExistingToken();
34
- }
35
- //#endregion
36
- //#region Utilities
37
- /**
38
- * Authenticate the user and store the token in Local Storage
39
- *
40
- * @param username AD sAMAccountName
41
- * @param password
42
- * @param adminGroup AD group that determines if authenticated user is considered an administrator of the app
43
- */
44
- login(username, password, adminGroup) {
45
- const today = new Date();
46
- const expiration = new Date().setFullYear(today.getFullYear() + 10);
47
- const request = {
48
- username: username,
49
- password: password,
50
- adminGroup: adminGroup,
51
- //expirationDate: expiration // moment().add(10, 'years').toDate()
52
- includeThumbnail: false
53
- };
54
- this.authenticating = true;
55
- this.authenticatingChanged.emit(this.authenticating);
56
- this.http.post(this.authenticationApiUrl, request)
57
- .subscribe(token => this.validateUser(token), err => {
58
- console.log(err);
59
- this.authenticating = false;
60
- this.authenticatingChanged.emit(this.authenticating);
61
- });
62
- }
63
- /**
64
- * Logout the user and delete the token from Local Storage
65
- */
66
- logout() {
67
- if (localStorage.getItem('token')) {
68
- localStorage.removeItem('token');
69
- }
70
- this.authenticatedUser = null;
71
- this.authenticated = false;
72
- this.authenticatedChanged.emit(false);
73
- }
74
- /**
75
- * @ignore
76
- */
77
- validateUser(token) {
78
- if (!token) {
79
- return;
80
- }
81
- const jwtHelper = new JwtHelperService();
82
- const decoded = jwtHelper.decodeToken(token);
83
- if (jwtHelper.isTokenExpired(token)) {
84
- this.logout();
85
- return;
86
- }
87
- this.authenticatedUser = {
88
- admin: decoded.role === 'Admin',
89
- displayName: decoded.displayName,
90
- accountName: decoded.winaccountname,
91
- distinguishedName: decoded.distinguishedName,
92
- employeeNumber: decoded.employeeNumber,
93
- memberOf: decoded.memberOf
94
- };
95
- localStorage.setItem('token', token);
96
- this.getPhoto();
97
- this.authenticated = true;
98
- this.authenticatedChanged.emit(this.authenticated);
99
- this.authenticating = false;
100
- this.authenticatingChanged.emit(this.authenticating);
101
- }
102
- /**
103
- * @ignore
104
- */
105
- getPhoto() {
106
- this.sharePointService.getPhotos()
107
- .subscribe(photos => {
108
- // The user may have been logged out by the time the photos came back
109
- if (!this.authenticatedUser || !this.authenticatedUser.employeeNumber) {
110
- return;
111
- }
112
- const photo = photos.find(pic => +pic.ows_EmployeeNumber === +this.authenticatedUser.employeeNumber);
113
- if (photo) {
114
- this.authenticatedUser.photoUrl = photo.ows_EncodedAbsUrl;
115
- }
116
- });
117
- }
118
- /**
119
- * @ignore
120
- */
121
- checkForExistingToken() {
122
- if (localStorage.getItem('token')) {
123
- this.validateUser(localStorage.getItem('token'));
124
- }
125
- }
126
- }
127
- AuthenticationService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.1.3", ngImport: i0, type: AuthenticationService, deps: [{ token: i1.AuthenticationServiceConfig, optional: true }, { token: i2.HttpClient }, { token: i3.SharePointService }], target: i0.ɵɵFactoryTarget.Injectable });
128
- AuthenticationService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "14.1.3", ngImport: i0, type: AuthenticationService });
129
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.1.3", ngImport: i0, type: AuthenticationService, decorators: [{
130
- type: Injectable
131
- }], ctorParameters: function () { return [{ type: i1.AuthenticationServiceConfig, decorators: [{
132
- type: Optional
133
- }] }, { type: i2.HttpClient }, { type: i3.SharePointService }]; }, propDecorators: { authenticatedChanged: [{
134
- type: Output
135
- }], authenticatingChanged: [{
136
- type: Output
137
- }] } });
138
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXV0aGVudGljYXRpb24uc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9hdXRoZW50aWNhdGlvbi9zZXJ2aWNlcy9hdXRoZW50aWNhdGlvbi5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGlCQUFpQjtBQUNqQixPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSxZQUFZLEVBQUUsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRzNFLDRDQUE0QztBQUM1QyxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQzs7Ozs7QUFHdEQsWUFBWTtBQUVaOztHQUVHO0FBRUgsTUFBTSxPQUFPLHFCQUFxQjtJQWdDaEMsWUFBWTtJQUVaLG1CQUFtQjtJQUNuQjs7T0FFRztJQUNILFlBQXlCLE1BQW1DLEVBQ2xELElBQWdCLEVBQ2hCLGlCQUFvQztRQURwQyxTQUFJLEdBQUosSUFBSSxDQUFZO1FBQ2hCLHNCQUFpQixHQUFqQixpQkFBaUIsQ0FBbUI7UUFqQ3BDLHlCQUFvQixHQUFHLElBQUksWUFBWSxFQUFXLENBQUM7UUFDbkQsMEJBQXFCLEdBQUcsSUFBSSxZQUFZLEVBQVcsQ0FBQztRQUU5RDs7V0FFRztRQUNILG1CQUFjLEdBQUcsS0FBSyxDQUFDO1FBRXZCOztXQUVHO1FBQ0gsa0JBQWEsR0FBRyxLQUFLLENBQUM7UUF3QnBCLElBQUksQ0FBQyxvQkFBb0IsR0FBRyxNQUFNLENBQUMsb0JBQW9CLENBQUM7UUFDeEQsSUFBSSxDQUFDLHFCQUFxQixFQUFFLENBQUM7SUFDL0IsQ0FBQztJQUNELFlBQVk7SUFFWixtQkFBbUI7SUFDbkI7Ozs7OztPQU1HO0lBQ0gsS0FBSyxDQUFDLFFBQWdCLEVBQUUsUUFBZ0IsRUFBRSxVQUFtQjtRQUMzRCxNQUFNLEtBQUssR0FBRyxJQUFJLElBQUksRUFBRSxDQUFDO1FBQ3pCLE1BQU0sVUFBVSxHQUFHLElBQUksSUFBSSxFQUFFLENBQUMsV0FBVyxDQUFDLEtBQUssQ0FBQyxXQUFXLEVBQUUsR0FBRyxFQUFFLENBQUMsQ0FBQztRQUVwRSxNQUFNLE9BQU8sR0FBRztZQUNkLFFBQVEsRUFBRSxRQUFRO1lBQ2xCLFFBQVEsRUFBRSxRQUFRO1lBQ2xCLFVBQVUsRUFBRSxVQUFVO1lBQ3RCLGtFQUFrRTtZQUNsRSxnQkFBZ0IsRUFBRSxLQUFLO1NBQ3hCLENBQUM7UUFFRixJQUFJLENBQUMsY0FBYyxHQUFHLElBQUksQ0FBQztRQUMzQixJQUFJLENBQUMscUJBQXFCLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsQ0FBQztRQUVyRCxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBUyxJQUFJLENBQUMsb0JBQW9CLEVBQUUsT0FBTyxDQUFDO2FBQ3ZELFNBQVMsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsS0FBSyxDQUFDLEVBQzVDLEdBQUcsQ0FBQyxFQUFFO1lBQ0osT0FBTyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQztZQUNqQixJQUFJLENBQUMsY0FBYyxHQUFHLEtBQUssQ0FBQztZQUM1QixJQUFJLENBQUMscUJBQXFCLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsQ0FBQztRQUN2RCxDQUFDLENBQUMsQ0FBQztJQUNQLENBQUM7SUFFRDs7T0FFRztJQUNILE1BQU07UUFDSixJQUFJLFlBQVksQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLEVBQUU7WUFDakMsWUFBWSxDQUFDLFVBQVUsQ0FBQyxPQUFPLENBQUMsQ0FBQztTQUNsQztRQUVELElBQUksQ0FBQyxpQkFBaUIsR0FBRyxJQUFJLENBQUM7UUFDOUIsSUFBSSxDQUFDLGFBQWEsR0FBRyxLQUFLLENBQUM7UUFDM0IsSUFBSSxDQUFDLG9CQUFvQixDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUN4QyxDQUFDO0lBRUQ7O09BRUc7SUFDSyxZQUFZLENBQUMsS0FBYTtRQUNoQyxJQUFJLENBQUMsS0FBSyxFQUFFO1lBQUUsT0FBTztTQUFFO1FBRXZCLE1BQU0sU0FBUyxHQUFHLElBQUksZ0JBQWdCLEVBQUUsQ0FBQztRQUN6QyxNQUFNLE9BQU8sR0FBRyxTQUFTLENBQUMsV0FBVyxDQUFDLEtBQUssQ0FBd0IsQ0FBQztRQUVwRSxJQUFJLFNBQVMsQ0FBQyxjQUFjLENBQUMsS0FBSyxDQUFDLEVBQUU7WUFDbkMsSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDO1lBQ2QsT0FBTztTQUNSO1FBRUQsSUFBSSxDQUFDLGlCQUFpQixHQUFHO1lBQ3ZCLEtBQUssRUFBRSxPQUFPLENBQUMsSUFBSSxLQUFLLE9BQU87WUFDL0IsV0FBVyxFQUFFLE9BQU8sQ0FBQyxXQUFXO1lBQ2hDLFdBQVcsRUFBRSxPQUFPLENBQUMsY0FBYztZQUNuQyxpQkFBaUIsRUFBRSxPQUFPLENBQUMsaUJBQWlCO1lBQzVDLGNBQWMsRUFBRSxPQUFPLENBQUMsY0FBYztZQUN0QyxRQUFRLEVBQUUsT0FBTyxDQUFDLFFBQVE7U0FDM0IsQ0FBQztRQUVGLFlBQVksQ0FBQyxPQUFPLENBQUMsT0FBTyxFQUFFLEtBQUssQ0FBQyxDQUFDO1FBRXJDLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQztRQUVoQixJQUFJLENBQUMsYUFBYSxHQUFHLElBQUksQ0FBQztRQUMxQixJQUFJLENBQUMsb0JBQW9CLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsQ0FBQztRQUVuRCxJQUFJLENBQUMsY0FBYyxHQUFHLEtBQUssQ0FBQztRQUM1QixJQUFJLENBQUMscUJBQXFCLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsQ0FBQztJQUN2RCxDQUFDO0lBRUQ7O09BRUc7SUFDSyxRQUFRO1FBQ2QsSUFBSSxDQUFDLGlCQUFpQixDQUFDLFNBQVMsRUFBRTthQUMvQixTQUFTLENBQUMsTUFBTSxDQUFDLEVBQUU7WUFDbEIscUVBQXFFO1lBQ3JFLElBQUksQ0FBQyxJQUFJLENBQUMsaUJBQWlCLElBQUksQ0FBQyxJQUFJLENBQUMsaUJBQWlCLENBQUMsY0FBYyxFQUFFO2dCQUNyRSxPQUFPO2FBQ1I7WUFFRCxNQUFNLEtBQUssR0FBRyxNQUFNLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQyxHQUFHLENBQUMsa0JBQWtCLEtBQUssQ0FBQyxJQUFJLENBQUMsaUJBQWlCLENBQUMsY0FBYyxDQUFDLENBQUM7WUFFckcsSUFBSSxLQUFLLEVBQUU7Z0JBQ1QsSUFBSSxDQUFDLGlCQUFpQixDQUFDLFFBQVEsR0FBRyxLQUFLLENBQUMsaUJBQWlCLENBQUM7YUFDM0Q7UUFDSCxDQUFDLENBQUMsQ0FBQztJQUNQLENBQUM7SUFFRDs7T0FFRztJQUNLLHFCQUFxQjtRQUMzQixJQUFJLFlBQVksQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLEVBQUU7WUFDakMsSUFBSSxDQUFDLFlBQVksQ0FBQyxZQUFZLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUM7U0FDbEQ7SUFDSCxDQUFDOztrSEF4SlUscUJBQXFCO3NIQUFyQixxQkFBcUI7MkZBQXJCLHFCQUFxQjtrQkFEakMsVUFBVTs7MEJBdUNLLFFBQVE7cUdBL0JaLG9CQUFvQjtzQkFBN0IsTUFBTTtnQkFDRyxxQkFBcUI7c0JBQTlCLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyIvLyNyZWdpb24gSW1wb3J0c1xyXG5pbXBvcnQgeyBJbmplY3RhYmxlLCBPdXRwdXQsIEV2ZW50RW1pdHRlciwgT3B0aW9uYWwgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgSHR0cENsaWVudCB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcclxuaW1wb3J0IHsgQXV0aGVudGljYXRpb25Ub2tlbiB9IGZyb20gJy4vLi4vbW9kZWwvYXV0aGVudGljYXRpb24tdG9rZW4nO1xyXG4vLyBpbXBvcnQgeyBKd3RIZWxwZXIgfSBmcm9tICdhbmd1bGFyMi1qd3QnO1xyXG5pbXBvcnQgeyBKd3RIZWxwZXJTZXJ2aWNlIH0gZnJvbSAnQGF1dGgwL2FuZ3VsYXItand0JztcclxuaW1wb3J0IHsgQXV0aGVudGljYXRpb25TZXJ2aWNlQ29uZmlnIH0gZnJvbSAnLi8uLi9tb2RlbC9hdXRoZW50aWNhdGlvbi5zZXJ2aWNlLmNvbmZpZyc7XHJcbmltcG9ydCB7IFNoYXJlUG9pbnRTZXJ2aWNlIH0gZnJvbSAnLi8uLi8uLi9zaGFyZXBvaW50L3NlcnZpY2VzL3NoYXJlcG9pbnQuc2VydmljZSc7XHJcbi8vI2VuZHJlZ2lvblxyXG5cclxuLyoqXHJcbiAqIEF1dGhlbnRpY2F0ZSBBY3RpdmUgRGlyZWN0b3J5IHVzZXJcclxuICovXHJcbkBJbmplY3RhYmxlKClcclxuZXhwb3J0IGNsYXNzIEF1dGhlbnRpY2F0aW9uU2VydmljZSB7XHJcbiAgLy8jcmVnaW9uIEZpZWxkc1xyXG4gIC8qKlxyXG4gICAqIEBpZ25vcmVcclxuICAgKi9cclxuICBwcml2YXRlIGF1dGhlbnRpY2F0aW9uQXBpVXJsOiBzdHJpbmc7XHJcblxyXG4gIEBPdXRwdXQoKSBhdXRoZW50aWNhdGVkQ2hhbmdlZCA9IG5ldyBFdmVudEVtaXR0ZXI8Ym9vbGVhbj4oKTtcclxuICBAT3V0cHV0KCkgYXV0aGVudGljYXRpbmdDaGFuZ2VkID0gbmV3IEV2ZW50RW1pdHRlcjxib29sZWFuPigpO1xyXG5cclxuICAvKipcclxuICAgKiBGbGFnIHNldCB0byB0cnVlIHdoaWxlIHRoZSBzZXJ2aWNlIGlzIGF0dGVtcHRpbmcgdG8gYXV0aGVudGljYXRlIHRoZSB1c2VyXHJcbiAgICovXHJcbiAgYXV0aGVudGljYXRpbmcgPSBmYWxzZTtcclxuXHJcbiAgLyoqXHJcbiAgICogRmxhZyBzZXQgdG8gdHJ1ZSB3aGVuIHRoZSB1c2VyIGlzIHN1Y2Nlc3NmdWxseSBhdXRoZW50aWNhdGVkXHJcbiAgICovXHJcbiAgYXV0aGVudGljYXRlZCA9IGZhbHNlO1xyXG5cclxuICAvKipcclxuICAgKiBPYmplY3QgcmVwcmVzZW50aW5nIHRoZSBhdXRoZW50aWNhdGVkIHVzZXJcclxuICAgKi9cclxuICBhdXRoZW50aWNhdGVkVXNlcjoge1xyXG4gICAgYWRtaW46IGJvb2xlYW4sXHJcbiAgICBhY2NvdW50TmFtZTogc3RyaW5nLFxyXG4gICAgZGlzcGxheU5hbWU6IHN0cmluZyxcclxuICAgIGRpc3Rpbmd1aXNoZWROYW1lOiBzdHJpbmc7XHJcbiAgICBlbXBsb3llZU51bWJlcjogc3RyaW5nO1xyXG4gICAgcGhvdG9Vcmw/OiBzdHJpbmc7XHJcbiAgICBtZW1iZXJPZj86IHN0cmluZztcclxuICB9O1xyXG4gIC8vI2VuZHJlZ2lvblxyXG5cclxuICAvLyNyZWdpb24gTGlmZWN5Y2xlXHJcbiAgLyoqXHJcbiAgICogQGlnbm9yZVxyXG4gICAqL1xyXG4gIGNvbnN0cnVjdG9yKCBAT3B0aW9uYWwoKSBjb25maWc6IEF1dGhlbnRpY2F0aW9uU2VydmljZUNvbmZpZyxcclxuICAgIHByaXZhdGUgaHR0cDogSHR0cENsaWVudCxcclxuICAgIHByaXZhdGUgc2hhcmVQb2ludFNlcnZpY2U6IFNoYXJlUG9pbnRTZXJ2aWNlKSB7XHJcblxyXG4gICAgdGhpcy5hdXRoZW50aWNhdGlvbkFwaVVybCA9IGNvbmZpZy5hdXRoZW50aWNhdGlvbkFwaVVybDtcclxuICAgIHRoaXMuY2hlY2tGb3JFeGlzdGluZ1Rva2VuKCk7XHJcbiAgfVxyXG4gIC8vI2VuZHJlZ2lvblxyXG5cclxuICAvLyNyZWdpb24gVXRpbGl0aWVzXHJcbiAgLyoqXHJcbiAgICogQXV0aGVudGljYXRlIHRoZSB1c2VyIGFuZCBzdG9yZSB0aGUgdG9rZW4gaW4gTG9jYWwgU3RvcmFnZVxyXG4gICAqXHJcbiAgICogQHBhcmFtIHVzZXJuYW1lIEFEIHNBTUFjY291bnROYW1lXHJcbiAgICogQHBhcmFtIHBhc3N3b3JkXHJcbiAgICogQHBhcmFtIGFkbWluR3JvdXAgQUQgZ3JvdXAgdGhhdCBkZXRlcm1pbmVzIGlmIGF1dGhlbnRpY2F0ZWQgdXNlciBpcyBjb25zaWRlcmVkIGFuIGFkbWluaXN0cmF0b3Igb2YgdGhlIGFwcFxyXG4gICAqL1xyXG4gIGxvZ2luKHVzZXJuYW1lOiBzdHJpbmcsIHBhc3N3b3JkOiBzdHJpbmcsIGFkbWluR3JvdXA/OiBzdHJpbmcpOiB2b2lkIHtcclxuICAgIGNvbnN0IHRvZGF5ID0gbmV3IERhdGUoKTtcclxuICAgIGNvbnN0IGV4cGlyYXRpb24gPSBuZXcgRGF0ZSgpLnNldEZ1bGxZZWFyKHRvZGF5LmdldEZ1bGxZZWFyKCkgKyAxMCk7XHJcblxyXG4gICAgY29uc3QgcmVxdWVzdCA9IHtcclxuICAgICAgdXNlcm5hbWU6IHVzZXJuYW1lLFxyXG4gICAgICBwYXNzd29yZDogcGFzc3dvcmQsXHJcbiAgICAgIGFkbWluR3JvdXA6IGFkbWluR3JvdXAsXHJcbiAgICAgIC8vZXhwaXJhdGlvbkRhdGU6IGV4cGlyYXRpb24gLy8gbW9tZW50KCkuYWRkKDEwLCAneWVhcnMnKS50b0RhdGUoKVxyXG4gICAgICBpbmNsdWRlVGh1bWJuYWlsOiBmYWxzZVxyXG4gICAgfTtcclxuXHJcbiAgICB0aGlzLmF1dGhlbnRpY2F0aW5nID0gdHJ1ZTtcclxuICAgIHRoaXMuYXV0aGVudGljYXRpbmdDaGFuZ2VkLmVtaXQodGhpcy5hdXRoZW50aWNhdGluZyk7XHJcblxyXG4gICAgdGhpcy5odHRwLnBvc3Q8c3RyaW5nPih0aGlzLmF1dGhlbnRpY2F0aW9uQXBpVXJsLCByZXF1ZXN0KVxyXG4gICAgICAuc3Vic2NyaWJlKHRva2VuID0+IHRoaXMudmFsaWRhdGVVc2VyKHRva2VuKSxcclxuICAgICAgZXJyID0+IHtcclxuICAgICAgICBjb25zb2xlLmxvZyhlcnIpO1xyXG4gICAgICAgIHRoaXMuYXV0aGVudGljYXRpbmcgPSBmYWxzZTtcclxuICAgICAgICB0aGlzLmF1dGhlbnRpY2F0aW5nQ2hhbmdlZC5lbWl0KHRoaXMuYXV0aGVudGljYXRpbmcpO1xyXG4gICAgICB9KTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIExvZ291dCB0aGUgdXNlciBhbmQgZGVsZXRlIHRoZSB0b2tlbiBmcm9tIExvY2FsIFN0b3JhZ2VcclxuICAgKi9cclxuICBsb2dvdXQoKTogdm9pZCB7XHJcbiAgICBpZiAobG9jYWxTdG9yYWdlLmdldEl0ZW0oJ3Rva2VuJykpIHtcclxuICAgICAgbG9jYWxTdG9yYWdlLnJlbW92ZUl0ZW0oJ3Rva2VuJyk7XHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy5hdXRoZW50aWNhdGVkVXNlciA9IG51bGw7XHJcbiAgICB0aGlzLmF1dGhlbnRpY2F0ZWQgPSBmYWxzZTtcclxuICAgIHRoaXMuYXV0aGVudGljYXRlZENoYW5nZWQuZW1pdChmYWxzZSk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBAaWdub3JlXHJcbiAgICovXHJcbiAgcHJpdmF0ZSB2YWxpZGF0ZVVzZXIodG9rZW46IHN0cmluZyk6IHZvaWQge1xyXG4gICAgaWYgKCF0b2tlbikgeyByZXR1cm47IH1cclxuXHJcbiAgICBjb25zdCBqd3RIZWxwZXIgPSBuZXcgSnd0SGVscGVyU2VydmljZSgpO1xyXG4gICAgY29uc3QgZGVjb2RlZCA9IGp3dEhlbHBlci5kZWNvZGVUb2tlbih0b2tlbikgYXMgQXV0aGVudGljYXRpb25Ub2tlbjtcclxuXHJcbiAgICBpZiAoand0SGVscGVyLmlzVG9rZW5FeHBpcmVkKHRva2VuKSkge1xyXG4gICAgICB0aGlzLmxvZ291dCgpO1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy5hdXRoZW50aWNhdGVkVXNlciA9IHtcclxuICAgICAgYWRtaW46IGRlY29kZWQucm9sZSA9PT0gJ0FkbWluJyxcclxuICAgICAgZGlzcGxheU5hbWU6IGRlY29kZWQuZGlzcGxheU5hbWUsXHJcbiAgICAgIGFjY291bnROYW1lOiBkZWNvZGVkLndpbmFjY291bnRuYW1lLFxyXG4gICAgICBkaXN0aW5ndWlzaGVkTmFtZTogZGVjb2RlZC5kaXN0aW5ndWlzaGVkTmFtZSxcclxuICAgICAgZW1wbG95ZWVOdW1iZXI6IGRlY29kZWQuZW1wbG95ZWVOdW1iZXIsXHJcbiAgICAgIG1lbWJlck9mOiBkZWNvZGVkLm1lbWJlck9mXHJcbiAgICB9O1xyXG5cclxuICAgIGxvY2FsU3RvcmFnZS5zZXRJdGVtKCd0b2tlbicsIHRva2VuKTtcclxuXHJcbiAgICB0aGlzLmdldFBob3RvKCk7XHJcblxyXG4gICAgdGhpcy5hdXRoZW50aWNhdGVkID0gdHJ1ZTtcclxuICAgIHRoaXMuYXV0aGVudGljYXRlZENoYW5nZWQuZW1pdCh0aGlzLmF1dGhlbnRpY2F0ZWQpO1xyXG5cclxuICAgIHRoaXMuYXV0aGVudGljYXRpbmcgPSBmYWxzZTtcclxuICAgIHRoaXMuYXV0aGVudGljYXRpbmdDaGFuZ2VkLmVtaXQodGhpcy5hdXRoZW50aWNhdGluZyk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBAaWdub3JlXHJcbiAgICovXHJcbiAgcHJpdmF0ZSBnZXRQaG90bygpOiB2b2lkIHtcclxuICAgIHRoaXMuc2hhcmVQb2ludFNlcnZpY2UuZ2V0UGhvdG9zKClcclxuICAgICAgLnN1YnNjcmliZShwaG90b3MgPT4ge1xyXG4gICAgICAgIC8vIFRoZSB1c2VyIG1heSBoYXZlIGJlZW4gbG9nZ2VkIG91dCBieSB0aGUgdGltZSB0aGUgcGhvdG9zIGNhbWUgYmFja1xyXG4gICAgICAgIGlmICghdGhpcy5hdXRoZW50aWNhdGVkVXNlciB8fCAhdGhpcy5hdXRoZW50aWNhdGVkVXNlci5lbXBsb3llZU51bWJlcikge1xyXG4gICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgY29uc3QgcGhvdG8gPSBwaG90b3MuZmluZChwaWMgPT4gK3BpYy5vd3NfRW1wbG95ZWVOdW1iZXIgPT09ICt0aGlzLmF1dGhlbnRpY2F0ZWRVc2VyLmVtcGxveWVlTnVtYmVyKTtcclxuXHJcbiAgICAgICAgaWYgKHBob3RvKSB7XHJcbiAgICAgICAgICB0aGlzLmF1dGhlbnRpY2F0ZWRVc2VyLnBob3RvVXJsID0gcGhvdG8ub3dzX0VuY29kZWRBYnNVcmw7XHJcbiAgICAgICAgfVxyXG4gICAgICB9KTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEBpZ25vcmVcclxuICAgKi9cclxuICBwcml2YXRlIGNoZWNrRm9yRXhpc3RpbmdUb2tlbigpOiB2b2lkIHtcclxuICAgIGlmIChsb2NhbFN0b3JhZ2UuZ2V0SXRlbSgndG9rZW4nKSkge1xyXG4gICAgICB0aGlzLnZhbGlkYXRlVXNlcihsb2NhbFN0b3JhZ2UuZ2V0SXRlbSgndG9rZW4nKSk7XHJcbiAgICB9XHJcbiAgfVxyXG4gIC8vI2VuZHJlZ2lvblxyXG59XHJcbiJdfQ==