@smartbit4all/ng-client 1.1.43 → 1.1.44

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 (300) hide show
  1. package/README.md +386 -386
  2. package/esm2020/lib/session/api/api/api.mjs +4 -4
  3. package/esm2020/lib/session/api/api/session.service.mjs +306 -306
  4. package/esm2020/lib/session/api/configuration.mjs +91 -91
  5. package/esm2020/lib/session/api/encoder.mjs +19 -19
  6. package/esm2020/lib/session/api/index.mjs +3 -3
  7. package/esm2020/lib/session/api/model/accountInfo.mjs +13 -13
  8. package/esm2020/lib/session/api/model/apiError.mjs +13 -13
  9. package/esm2020/lib/session/api/model/authenticationProviderData.mjs +13 -13
  10. package/esm2020/lib/session/api/model/getAuthenticationProvidersResponse.mjs +2 -2
  11. package/esm2020/lib/session/api/model/models.mjs +9 -9
  12. package/esm2020/lib/session/api/model/refreshSessionRequest.mjs +13 -13
  13. package/esm2020/lib/session/api/model/session.mjs +2 -2
  14. package/esm2020/lib/session/api/model/sessionInfoData.mjs +2 -2
  15. package/esm2020/lib/session/api/model/userActivityLog.mjs +13 -13
  16. package/esm2020/lib/session/api/param.mjs +2 -2
  17. package/esm2020/lib/session/api/variables.mjs +9 -9
  18. package/esm2020/lib/session/cookie-service/smart-cookie.service.mjs +225 -225
  19. package/esm2020/lib/session/dev-tool/smart-dev-tool-dialog/smart-dev-tool-dialog.component.mjs +90 -90
  20. package/esm2020/lib/session/dev-tool/smart-dev-tool-dialog/smart-dev-tool-dialog.service.mjs +43 -43
  21. package/esm2020/lib/session/dev-tool/smart-dev-tool-floating-button/smart-dev-tool-floating-button.component.mjs +40 -40
  22. package/esm2020/lib/session/dev-tool/smart-dev-tool.interceptor.mjs +52 -52
  23. package/esm2020/lib/session/dev-tool/smart-dev-tool.service.mjs +165 -165
  24. package/esm2020/lib/session/projects.mjs +12 -12
  25. package/esm2020/lib/session/smart-error-catching.interceptor.mjs +71 -71
  26. package/esm2020/lib/session/smart-header-maintainer.interceptor.mjs +46 -46
  27. package/esm2020/lib/session/smart-session-handler.service.mjs +6 -6
  28. package/esm2020/lib/session/smart-session.module.mjs +74 -74
  29. package/esm2020/lib/session/smart-session.service.mjs +225 -225
  30. package/esm2020/lib/session/smart-timer/smart-session-timer.component.mjs +35 -35
  31. package/esm2020/lib/session/smart-timer/smart-session-timer.service.mjs +52 -52
  32. package/esm2020/lib/smart-client/api/api/api.mjs +4 -4
  33. package/esm2020/lib/smart-client/api/api/default.service.mjs +133 -133
  34. package/esm2020/lib/smart-client/api/api.module.mjs +40 -40
  35. package/esm2020/lib/smart-client/api/configuration.mjs +91 -91
  36. package/esm2020/lib/smart-client/api/encoder.mjs +19 -19
  37. package/esm2020/lib/smart-client/api/index.mjs +7 -7
  38. package/esm2020/lib/smart-client/api/model/componentType.mjs +17 -17
  39. package/esm2020/lib/smart-client/api/model/componentWidgetType.mjs +17 -17
  40. package/esm2020/lib/smart-client/api/model/layoutDirection.mjs +16 -16
  41. package/esm2020/lib/smart-client/api/model/models.mjs +6 -6
  42. package/esm2020/lib/smart-client/api/model/smartComponentLayoutDefinition.mjs +2 -2
  43. package/esm2020/lib/smart-client/api/model/smartComponentWidgetDefinition.mjs +2 -2
  44. package/esm2020/lib/smart-client/api/param.mjs +2 -2
  45. package/esm2020/lib/smart-client/api/variables.mjs +9 -9
  46. package/esm2020/lib/smart-client/projects.mjs +5 -5
  47. package/esm2020/lib/smart-client/smart-authentication.service.mjs +21 -21
  48. package/esm2020/lib/smart-client/smart-component-api-client.mjs +403 -403
  49. package/esm2020/lib/smart-client/smart-component-layout/smart-component-layout.component.mjs +126 -126
  50. package/esm2020/lib/smart-client/smart-file-uploader/smart-file-uploader.component.mjs +50 -50
  51. package/esm2020/lib/smart-client/smart.component.mjs +30 -30
  52. package/esm2020/lib/smart-client/smart.service.mjs +30 -30
  53. package/esm2020/lib/smart-ng-client.module.mjs +62 -62
  54. package/esm2020/lib/smart-ng-client.service.mjs +19 -19
  55. package/esm2020/lib/view-context/api/api/api.mjs +4 -4
  56. package/esm2020/lib/view-context/api/api/view.service.mjs +859 -859
  57. package/esm2020/lib/view-context/api/api.module.mjs +40 -40
  58. package/esm2020/lib/view-context/api/configuration.mjs +91 -91
  59. package/esm2020/lib/view-context/api/encoder.mjs +19 -19
  60. package/esm2020/lib/view-context/api/index.mjs +7 -7
  61. package/esm2020/lib/view-context/api/model/closeResult.mjs +17 -17
  62. package/esm2020/lib/view-context/api/model/componentConstraint.mjs +2 -2
  63. package/esm2020/lib/view-context/api/model/componentModel.mjs +2 -2
  64. package/esm2020/lib/view-context/api/model/componentModelChange.mjs +13 -13
  65. package/esm2020/lib/view-context/api/model/dataChange.mjs +2 -2
  66. package/esm2020/lib/view-context/api/model/dataChangeEvent.mjs +2 -2
  67. package/esm2020/lib/view-context/api/model/dataChangeKind.mjs +17 -17
  68. package/esm2020/lib/view-context/api/model/messageData.mjs +2 -2
  69. package/esm2020/lib/view-context/api/model/messageOption.mjs +2 -2
  70. package/esm2020/lib/view-context/api/model/messageOptionType.mjs +17 -17
  71. package/esm2020/lib/view-context/api/model/messageResult.mjs +2 -2
  72. package/esm2020/lib/view-context/api/model/messageType.mjs +18 -18
  73. package/esm2020/lib/view-context/api/model/models.mjs +40 -40
  74. package/esm2020/lib/view-context/api/model/openPendingData.mjs +2 -2
  75. package/esm2020/lib/view-context/api/model/smartLinkData.mjs +2 -2
  76. package/esm2020/lib/view-context/api/model/uiAction.mjs +2 -2
  77. package/esm2020/lib/view-context/api/model/uiActionButtonDescriptor.mjs +13 -13
  78. package/esm2020/lib/view-context/api/model/uiActionButtonIconPos.mjs +16 -16
  79. package/esm2020/lib/view-context/api/model/uiActionButtonType.mjs +21 -21
  80. package/esm2020/lib/view-context/api/model/uiActionConstraint.mjs +13 -13
  81. package/esm2020/lib/view-context/api/model/uiActionDescriptor.mjs +2 -2
  82. package/esm2020/lib/view-context/api/model/uiActionDialogDescriptor.mjs +2 -2
  83. package/esm2020/lib/view-context/api/model/uiActionFeedbackType.mjs +16 -16
  84. package/esm2020/lib/view-context/api/model/uiActionInputType.mjs +20 -20
  85. package/esm2020/lib/view-context/api/model/uiActionRequest.mjs +13 -13
  86. package/esm2020/lib/view-context/api/model/uiActionUploadDescriptor.mjs +13 -13
  87. package/esm2020/lib/view-context/api/model/uploadedFile.mjs +13 -13
  88. package/esm2020/lib/view-context/api/model/valueSet.mjs +2 -2
  89. package/esm2020/lib/view-context/api/model/view.mjs +2 -2
  90. package/esm2020/lib/view-context/api/model/viewApiError.mjs +13 -13
  91. package/esm2020/lib/view-context/api/model/viewConstraint.mjs +2 -2
  92. package/esm2020/lib/view-context/api/model/viewContext.mjs +2 -2
  93. package/esm2020/lib/view-context/api/model/viewContextChange.mjs +2 -2
  94. package/esm2020/lib/view-context/api/model/viewContextData.mjs +2 -2
  95. package/esm2020/lib/view-context/api/model/viewContextUpdate.mjs +2 -2
  96. package/esm2020/lib/view-context/api/model/viewData.mjs +2 -2
  97. package/esm2020/lib/view-context/api/model/viewEventHandler.mjs +20 -20
  98. package/esm2020/lib/view-context/api/model/viewState.mjs +21 -21
  99. package/esm2020/lib/view-context/api/model/viewStateUpdate.mjs +2 -2
  100. package/esm2020/lib/view-context/api/model/viewType.mjs +17 -17
  101. package/esm2020/lib/view-context/api/param.mjs +2 -2
  102. package/esm2020/lib/view-context/api/variables.mjs +9 -9
  103. package/esm2020/lib/view-context/message-dialog/message-dialog.component.mjs +63 -63
  104. package/esm2020/lib/view-context/projects.mjs +17 -17
  105. package/esm2020/lib/view-context/property-definition-data.mjs +2 -2
  106. package/esm2020/lib/view-context/smart-ui-action/components/success-snack-bar/success-snack-bar.component.mjs +30 -30
  107. package/esm2020/lib/view-context/smart-ui-action/dialogs/ui-action-confirm-dialog/ui-action-confirm-dialog.component.mjs +53 -53
  108. package/esm2020/lib/view-context/smart-ui-action/dialogs/ui-action-confirm-dialog/ui-action-confirm-dialog.service.mjs +48 -48
  109. package/esm2020/lib/view-context/smart-ui-action/dialogs/ui-action-file-upload-dialog/ui-action-file-upload-dialog.component.mjs +68 -68
  110. package/esm2020/lib/view-context/smart-ui-action/dialogs/ui-action-file-upload-dialog/ui-action-file-upload-dialog.service.mjs +53 -53
  111. package/esm2020/lib/view-context/smart-ui-action/dialogs/ui-action-input-dialog/ui-action-input-dialog.component.mjs +119 -119
  112. package/esm2020/lib/view-context/smart-ui-action/dialogs/ui-action-input-dialog/ui-action-input-dialog.service.mjs +52 -52
  113. package/esm2020/lib/view-context/smart-ui-action/ui-action-toolbar.component.mjs +109 -109
  114. package/esm2020/lib/view-context/smart-ui-action/ui-action.descriptor.service.mjs +119 -119
  115. package/esm2020/lib/view-context/smart-ui-action/ui-action.model.mjs +7 -7
  116. package/esm2020/lib/view-context/smart-ui-action/ui-action.service.mjs +182 -182
  117. package/esm2020/lib/view-context/smart-view-context-error-dialog/smart-view-context-error-dialog.component.mjs +29 -29
  118. package/esm2020/lib/view-context/smart-view-context-error-dialog/smart-view-context-error-dialog.service.mjs +69 -69
  119. package/esm2020/lib/view-context/smart-view-context.interceptor.mjs +39 -39
  120. package/esm2020/lib/view-context/smart-view-context.model.mjs +2 -2
  121. package/esm2020/lib/view-context/smart-view-context.module.mjs +87 -87
  122. package/esm2020/lib/view-context/smart-view-context.service.mjs +536 -536
  123. package/esm2020/lib/view-context/smart-view-redirect/smart-view-redirect.mjs +33 -33
  124. package/esm2020/lib/view-context/value-api/api/api.mjs +4 -4
  125. package/esm2020/lib/view-context/value-api/api/value.service.mjs +138 -138
  126. package/esm2020/lib/view-context/value-api/api.module.mjs +40 -40
  127. package/esm2020/lib/view-context/value-api/configuration.mjs +91 -91
  128. package/esm2020/lib/view-context/value-api/encoder.mjs +19 -19
  129. package/esm2020/lib/view-context/value-api/index.mjs +7 -7
  130. package/esm2020/lib/view-context/value-api/model/models.mjs +9 -9
  131. package/esm2020/lib/view-context/value-api/model/value.mjs +13 -13
  132. package/esm2020/lib/view-context/value-api/model/valueSetData.mjs +13 -13
  133. package/esm2020/lib/view-context/value-api/model/valueSetDefinition.mjs +2 -2
  134. package/esm2020/lib/view-context/value-api/model/valueSetDefinitionData.mjs +2 -2
  135. package/esm2020/lib/view-context/value-api/model/valueSetDefinitionKind.mjs +23 -23
  136. package/esm2020/lib/view-context/value-api/model/valueSetExpression.mjs +2 -2
  137. package/esm2020/lib/view-context/value-api/model/valueSetOperand.mjs +2 -2
  138. package/esm2020/lib/view-context/value-api/model/valueSetOperation.mjs +18 -18
  139. package/esm2020/lib/view-context/value-api/param.mjs +2 -2
  140. package/esm2020/lib/view-context/value-api/variables.mjs +9 -9
  141. package/esm2020/projects.mjs +12 -12
  142. package/esm2020/smartbit4all-ng-client.mjs +4 -4
  143. package/fesm2015/smartbit4all-ng-client.mjs +5264 -5264
  144. package/fesm2015/smartbit4all-ng-client.mjs.map +1 -1
  145. package/fesm2020/smartbit4all-ng-client.mjs +5228 -5228
  146. package/fesm2020/smartbit4all-ng-client.mjs.map +1 -1
  147. package/lib/session/api/api/api.d.ts +3 -3
  148. package/lib/session/api/api/session.service.d.ts +107 -107
  149. package/lib/session/api/configuration.d.ts +104 -104
  150. package/lib/session/api/encoder.d.ts +11 -11
  151. package/lib/session/api/index.d.ts +2 -2
  152. package/lib/session/api/model/accountInfo.d.ts +22 -22
  153. package/lib/session/api/model/apiError.d.ts +15 -15
  154. package/lib/session/api/model/authenticationProviderData.d.ts +17 -17
  155. package/lib/session/api/model/getAuthenticationProvidersResponse.d.ts +15 -15
  156. package/lib/session/api/model/models.d.ts +8 -8
  157. package/lib/session/api/model/refreshSessionRequest.d.ts +14 -14
  158. package/lib/session/api/model/session.d.ts +32 -32
  159. package/lib/session/api/model/sessionInfoData.d.ts +22 -22
  160. package/lib/session/api/model/userActivityLog.d.ts +33 -33
  161. package/lib/session/api/param.d.ts +37 -37
  162. package/lib/session/api/variables.d.ts +8 -8
  163. package/lib/session/cookie-service/smart-cookie.service.d.ts +129 -129
  164. package/lib/session/dev-tool/smart-dev-tool-dialog/smart-dev-tool-dialog.component.d.ts +28 -28
  165. package/lib/session/dev-tool/smart-dev-tool-dialog/smart-dev-tool-dialog.service.d.ts +18 -18
  166. package/lib/session/dev-tool/smart-dev-tool-floating-button/smart-dev-tool-floating-button.component.d.ts +15 -15
  167. package/lib/session/dev-tool/smart-dev-tool.interceptor.d.ts +18 -18
  168. package/lib/session/dev-tool/smart-dev-tool.service.d.ts +57 -57
  169. package/lib/session/projects.d.ts +8 -8
  170. package/lib/session/smart-error-catching.interceptor.d.ts +13 -13
  171. package/lib/session/smart-header-maintainer.interceptor.d.ts +11 -11
  172. package/lib/session/smart-session-handler.service.d.ts +11 -11
  173. package/lib/session/smart-session.module.d.ts +15 -15
  174. package/lib/session/smart-session.service.d.ts +54 -54
  175. package/lib/session/smart-timer/smart-session-timer.component.d.ts +14 -14
  176. package/lib/session/smart-timer/smart-session-timer.service.d.ts +21 -21
  177. package/lib/smart-client/api/api/api.d.ts +3 -3
  178. package/lib/smart-client/api/api/default.service.d.ts +33 -33
  179. package/lib/smart-client/api/api.module.d.ts +11 -11
  180. package/lib/smart-client/api/configuration.d.ts +104 -104
  181. package/lib/smart-client/api/encoder.d.ts +11 -11
  182. package/lib/smart-client/api/index.d.ts +6 -6
  183. package/lib/smart-client/api/model/componentType.d.ts +17 -17
  184. package/lib/smart-client/api/model/componentWidgetType.d.ts +17 -17
  185. package/lib/smart-client/api/model/layoutDirection.d.ts +16 -16
  186. package/lib/smart-client/api/model/models.d.ts +5 -5
  187. package/lib/smart-client/api/model/smartComponentLayoutDefinition.d.ts +29 -29
  188. package/lib/smart-client/api/model/smartComponentWidgetDefinition.d.ts +20 -20
  189. package/lib/smart-client/api/param.d.ts +37 -37
  190. package/lib/smart-client/api/variables.d.ts +8 -8
  191. package/lib/smart-client/projects.d.ts +4 -4
  192. package/lib/smart-client/smart-authentication.service.d.ts +15 -15
  193. package/lib/smart-client/smart-component-api-client.d.ts +93 -93
  194. package/lib/smart-client/smart-component-layout/smart-component-layout.component.d.ts +32 -32
  195. package/lib/smart-client/smart-file-uploader/smart-file-uploader.component.d.ts +18 -18
  196. package/lib/smart-client/smart.component.d.ts +11 -11
  197. package/lib/smart-client/smart.service.d.ts +11 -11
  198. package/lib/smart-ng-client.module.d.ts +16 -16
  199. package/lib/smart-ng-client.service.d.ts +10 -10
  200. package/lib/view-context/api/api/api.d.ts +3 -3
  201. package/lib/view-context/api/api/view.service.d.ts +313 -313
  202. package/lib/view-context/api/api.module.d.ts +11 -11
  203. package/lib/view-context/api/configuration.d.ts +104 -104
  204. package/lib/view-context/api/encoder.d.ts +11 -11
  205. package/lib/view-context/api/index.d.ts +6 -6
  206. package/lib/view-context/api/model/closeResult.d.ts +17 -17
  207. package/lib/view-context/api/model/componentConstraint.d.ts +25 -25
  208. package/lib/view-context/api/model/componentModel.d.ts +35 -35
  209. package/lib/view-context/api/model/componentModelChange.d.ts +29 -29
  210. package/lib/view-context/api/model/dataChange.d.ts +27 -27
  211. package/lib/view-context/api/model/dataChangeEvent.d.ts +33 -33
  212. package/lib/view-context/api/model/dataChangeKind.d.ts +20 -20
  213. package/lib/view-context/api/model/messageData.d.ts +29 -29
  214. package/lib/view-context/api/model/messageOption.d.ts +20 -20
  215. package/lib/view-context/api/model/messageOptionType.d.ts +17 -17
  216. package/lib/view-context/api/model/messageResult.d.ts +16 -16
  217. package/lib/view-context/api/model/messageType.d.ts +18 -18
  218. package/lib/view-context/api/model/models.d.ts +39 -39
  219. package/lib/view-context/api/model/openPendingData.d.ts +22 -22
  220. package/lib/view-context/api/model/smartLinkData.d.ts +21 -21
  221. package/lib/view-context/api/model/uiAction.d.ts +29 -29
  222. package/lib/view-context/api/model/uiActionButtonDescriptor.d.ts +18 -18
  223. package/lib/view-context/api/model/uiActionButtonIconPos.d.ts +19 -19
  224. package/lib/view-context/api/model/uiActionButtonType.d.ts +24 -24
  225. package/lib/view-context/api/model/uiActionConstraint.d.ts +22 -22
  226. package/lib/view-context/api/model/uiActionDescriptor.d.ts +36 -36
  227. package/lib/view-context/api/model/uiActionDialogDescriptor.d.ts +23 -23
  228. package/lib/view-context/api/model/uiActionFeedbackType.d.ts +19 -19
  229. package/lib/view-context/api/model/uiActionInputType.d.ts +20 -20
  230. package/lib/view-context/api/model/uiActionRequest.d.ts +28 -28
  231. package/lib/view-context/api/model/uiActionUploadDescriptor.d.ts +23 -23
  232. package/lib/view-context/api/model/uploadedFile.d.ts +19 -19
  233. package/lib/view-context/api/model/valueSet.d.ts +20 -20
  234. package/lib/view-context/api/model/view.d.ts +68 -68
  235. package/lib/view-context/api/model/viewApiError.d.ts +18 -18
  236. package/lib/view-context/api/model/viewConstraint.d.ts +18 -18
  237. package/lib/view-context/api/model/viewContext.d.ts +22 -22
  238. package/lib/view-context/api/model/viewContextChange.d.ts +20 -20
  239. package/lib/view-context/api/model/viewContextData.d.ts +19 -19
  240. package/lib/view-context/api/model/viewContextUpdate.d.ts +22 -22
  241. package/lib/view-context/api/model/viewData.d.ts +27 -27
  242. package/lib/view-context/api/model/viewEventHandler.d.ts +30 -30
  243. package/lib/view-context/api/model/viewState.d.ts +21 -21
  244. package/lib/view-context/api/model/viewStateUpdate.d.ts +24 -24
  245. package/lib/view-context/api/model/viewType.d.ts +17 -17
  246. package/lib/view-context/api/param.d.ts +37 -37
  247. package/lib/view-context/api/variables.d.ts +8 -8
  248. package/lib/view-context/message-dialog/message-dialog.component.d.ts +17 -17
  249. package/lib/view-context/projects.d.ts +13 -13
  250. package/lib/view-context/property-definition-data.d.ts +5 -5
  251. package/lib/view-context/smart-ui-action/components/success-snack-bar/success-snack-bar.component.d.ts +13 -13
  252. package/lib/view-context/smart-ui-action/dialogs/ui-action-confirm-dialog/ui-action-confirm-dialog.component.d.ts +25 -25
  253. package/lib/view-context/smart-ui-action/dialogs/ui-action-confirm-dialog/ui-action-confirm-dialog.service.d.ts +18 -18
  254. package/lib/view-context/smart-ui-action/dialogs/ui-action-file-upload-dialog/ui-action-file-upload-dialog.component.d.ts +30 -30
  255. package/lib/view-context/smart-ui-action/dialogs/ui-action-file-upload-dialog/ui-action-file-upload-dialog.service.d.ts +22 -22
  256. package/lib/view-context/smart-ui-action/dialogs/ui-action-input-dialog/ui-action-input-dialog.component.d.ts +29 -29
  257. package/lib/view-context/smart-ui-action/dialogs/ui-action-input-dialog/ui-action-input-dialog.service.d.ts +25 -25
  258. package/lib/view-context/smart-ui-action/ui-action-toolbar.component.d.ts +30 -30
  259. package/lib/view-context/smart-ui-action/ui-action.descriptor.service.d.ts +21 -21
  260. package/lib/view-context/smart-ui-action/ui-action.model.d.ts +32 -32
  261. package/lib/view-context/smart-ui-action/ui-action.service.d.ts +37 -37
  262. package/lib/view-context/smart-view-context-error-dialog/smart-view-context-error-dialog.component.d.ts +13 -13
  263. package/lib/view-context/smart-view-context-error-dialog/smart-view-context-error-dialog.service.d.ts +19 -19
  264. package/lib/view-context/smart-view-context.interceptor.d.ts +13 -13
  265. package/lib/view-context/smart-view-context.model.d.ts +30 -30
  266. package/lib/view-context/smart-view-context.module.d.ts +21 -21
  267. package/lib/view-context/smart-view-context.service.d.ts +106 -106
  268. package/lib/view-context/smart-view-redirect/smart-view-redirect.d.ts +14 -14
  269. package/lib/view-context/value-api/api/api.d.ts +3 -3
  270. package/lib/view-context/value-api/api/value.service.d.ts +35 -35
  271. package/lib/view-context/value-api/api.module.d.ts +11 -11
  272. package/lib/view-context/value-api/configuration.d.ts +104 -104
  273. package/lib/view-context/value-api/encoder.d.ts +11 -11
  274. package/lib/view-context/value-api/index.d.ts +6 -6
  275. package/lib/view-context/value-api/model/models.d.ts +8 -8
  276. package/lib/view-context/value-api/model/value.d.ts +29 -29
  277. package/lib/view-context/value-api/model/valueSetData.d.ts +41 -41
  278. package/lib/view-context/value-api/model/valueSetDefinition.d.ts +16 -16
  279. package/lib/view-context/value-api/model/valueSetDefinitionData.d.ts +55 -55
  280. package/lib/view-context/value-api/model/valueSetDefinitionKind.d.ts +23 -23
  281. package/lib/view-context/value-api/model/valueSetExpression.d.ts +20 -20
  282. package/lib/view-context/value-api/model/valueSetOperand.d.ts +25 -25
  283. package/lib/view-context/value-api/model/valueSetOperation.d.ts +18 -18
  284. package/lib/view-context/value-api/param.d.ts +37 -37
  285. package/lib/view-context/value-api/variables.d.ts +8 -8
  286. package/package.json +2 -1
  287. package/projects.d.ts +8 -8
  288. package/schematics/collection.json +11 -11
  289. package/schematics/smart-component/index.ts +26 -26
  290. package/schematics/smart-component/schema.json +20 -20
  291. package/schematics/smart-component/smart-component.schema.ts +4 -4
  292. package/schematics/smart-component/templates/__name@dasherize__.component.html.template +2 -2
  293. package/schematics/smart-component/templates/__name@dasherize__.component.ts.template +26 -26
  294. package/smartbit4all-ng-client-1.1.44.tgz +0 -0
  295. package/smartbit4all-ng-client.d.ts +5 -5
  296. package/src/lib/session/api/README.md +226 -226
  297. package/src/lib/smart-client/api/README.md +226 -226
  298. package/src/lib/view-context/api/README.md +226 -226
  299. package/src/lib/view-context/value-api/README.md +226 -226
  300. package/smartbit4all-ng-client-1.1.43.tgz +0 -0
@@ -1,225 +1,225 @@
1
- // This service is based on the `ng2-cookies` package which sadly is not a service and does
2
- // not use `DOCUMENT` injection and therefore doesn't work well with AoT production builds.
3
- // Package: https://github.com/BCJTI/ng2-cookies
4
- import { Inject, Injectable, PLATFORM_ID } from "@angular/core";
5
- import { DOCUMENT, isPlatformBrowser } from "@angular/common";
6
- import * as i0 from "@angular/core";
7
- export class SmartCookieService {
8
- constructor(document,
9
- // Get the `PLATFORM_ID` so we can check if we're in a browser.
10
- platformId) {
11
- this.document = document;
12
- this.platformId = platformId;
13
- this.documentIsAccessible = isPlatformBrowser(this.platformId);
14
- }
15
- /**
16
- * Get cookie Regular Expression
17
- *
18
- * @param name Cookie name
19
- * @returns property RegExp
20
- *
21
- * @author: Stepan Suvorov
22
- * @since: 1.0.0
23
- */
24
- static getCookieRegExp(name) {
25
- const escapedName = name.replace(/([\[\]\{\}\(\)\|\=\;\+\?\,\.\*\^\$])/gi, "\\$1");
26
- return new RegExp("(?:^" + escapedName + "|;\\s*" + escapedName + ")=(.*?)(?:;|$)", "g");
27
- }
28
- /**
29
- * Gets the unencoded version of an encoded component of a Uniform Resource Identifier (URI).
30
- *
31
- * @param encodedURIComponent A value representing an encoded URI component.
32
- *
33
- * @returns The unencoded version of an encoded component of a Uniform Resource Identifier (URI).
34
- *
35
- * @author: Stepan Suvorov
36
- * @since: 1.0.0
37
- */
38
- static safeDecodeURIComponent(encodedURIComponent) {
39
- try {
40
- return decodeURIComponent(encodedURIComponent);
41
- }
42
- catch {
43
- // probably it is not uri encoded. return as is
44
- return encodedURIComponent;
45
- }
46
- }
47
- /**
48
- * Return `true` if {@link Document} is accessible, otherwise return `false`
49
- *
50
- * @param name Cookie name
51
- * @returns boolean - whether cookie with specified name exists
52
- *
53
- * @author: Stepan Suvorov
54
- * @since: 1.0.0
55
- */
56
- check(name) {
57
- if (!this.documentIsAccessible) {
58
- return false;
59
- }
60
- name = encodeURIComponent(name);
61
- const regExp = SmartCookieService.getCookieRegExp(name);
62
- return regExp.test(this.document.cookie);
63
- }
64
- /**
65
- * Get cookies by name
66
- *
67
- * @param name Cookie name
68
- * @returns property value
69
- *
70
- * @author: Stepan Suvorov
71
- * @since: 1.0.0
72
- */
73
- get(name) {
74
- if (this.documentIsAccessible && this.check(name)) {
75
- name = encodeURIComponent(name);
76
- const regExp = SmartCookieService.getCookieRegExp(name);
77
- const result = regExp.exec(this.document.cookie);
78
- let results = result.input.split(";");
79
- let value;
80
- results.forEach((r) => {
81
- let values = r.split(`${name}=`);
82
- if (values[1] !== "null") {
83
- value = values[1];
84
- }
85
- });
86
- return value ?? "";
87
- }
88
- else {
89
- return "";
90
- }
91
- }
92
- /**
93
- * Get all cookies in JSON format
94
- *
95
- * @returns all the cookies in json
96
- *
97
- * @author: Stepan Suvorov
98
- * @since: 1.0.0
99
- */
100
- getAll() {
101
- if (!this.documentIsAccessible) {
102
- return {};
103
- }
104
- const cookies = {};
105
- const document = this.document;
106
- if (document.cookie && document.cookie !== "") {
107
- document.cookie.split(";").forEach((currentCookie) => {
108
- const [cookieName, cookieValue] = currentCookie.split("=");
109
- cookies[SmartCookieService.safeDecodeURIComponent(cookieName.replace(/^ /, ""))] =
110
- SmartCookieService.safeDecodeURIComponent(cookieValue);
111
- });
112
- }
113
- return cookies;
114
- }
115
- set(name, value, expiresOrOptions, path, domain, secure, sameSite) {
116
- if (!this.documentIsAccessible) {
117
- return;
118
- }
119
- if (typeof expiresOrOptions === "number" ||
120
- expiresOrOptions instanceof Date ||
121
- path ||
122
- domain ||
123
- secure ||
124
- sameSite) {
125
- const optionsBody = {
126
- expires: expiresOrOptions,
127
- path,
128
- domain,
129
- secure,
130
- sameSite: sameSite ? sameSite : "Lax",
131
- };
132
- this.set(name, value, optionsBody);
133
- return;
134
- }
135
- let cookieString = encodeURIComponent(name) + "=" + encodeURIComponent(value) + ";";
136
- const options = expiresOrOptions ? expiresOrOptions : {};
137
- if (options.expires) {
138
- if (typeof options.expires === "number") {
139
- const dateExpires = new Date(new Date().getTime() + options.expires * 1000 * 60 * 60 * 24);
140
- cookieString += "expires=" + dateExpires.toUTCString() + ";";
141
- }
142
- else {
143
- cookieString += "expires=" + options.expires.toUTCString() + ";";
144
- }
145
- }
146
- if (options.path) {
147
- cookieString += "path=" + options.path + ";";
148
- }
149
- else {
150
- cookieString += "path=/;";
151
- }
152
- if (options.domain) {
153
- cookieString += "domain=" + options.domain + ";";
154
- }
155
- if (options.secure === false && options.sameSite === "None") {
156
- options.secure = true;
157
- console.warn(`[ngx-cookie-service] Cookie ${name} was forced with secure flag because sameSite=None.` +
158
- `More details : https://github.com/stevermeister/ngx-cookie-service/issues/86#issuecomment-597720130`);
159
- }
160
- if (options.secure) {
161
- cookieString += "secure;";
162
- }
163
- if (!options.sameSite) {
164
- options.sameSite = "Lax";
165
- }
166
- cookieString += "sameSite=" + options.sameSite + ";";
167
- this.document.cookie = cookieString;
168
- }
169
- /**
170
- * Delete cookie by name
171
- *
172
- * @param name Cookie name
173
- * @param path Cookie path
174
- * @param domain Cookie domain
175
- * @param secure Cookie secure flag
176
- * @param sameSite Cookie sameSite flag - https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Set-Cookie/SameSite
177
- *
178
- * @author: Stepan Suvorov
179
- * @since: 1.0.0
180
- */
181
- delete(name, path, domain, secure, sameSite = "Lax") {
182
- if (!this.documentIsAccessible) {
183
- return;
184
- }
185
- const expiresDate = new Date("Thu, 01 Jan 1970 00:00:01 GMT");
186
- this.set(name, "", { expires: expiresDate, path, domain, secure, sameSite });
187
- }
188
- /**
189
- * Delete all cookies
190
- *
191
- * @param path Cookie path
192
- * @param domain Cookie domain
193
- * @param secure Is the Cookie secure
194
- * @param sameSite Is the cookie same site
195
- *
196
- * @author: Stepan Suvorov
197
- * @since: 1.0.0
198
- */
199
- deleteAll(path, domain, secure, sameSite = "Lax") {
200
- if (!this.documentIsAccessible) {
201
- return;
202
- }
203
- const cookies = this.getAll();
204
- for (const cookieName in cookies) {
205
- if (cookies.hasOwnProperty(cookieName)) {
206
- this.delete(cookieName, path, domain, secure, sameSite);
207
- }
208
- }
209
- }
210
- }
211
- SmartCookieService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: SmartCookieService, deps: [{ token: DOCUMENT }, { token: PLATFORM_ID }], target: i0.ɵɵFactoryTarget.Injectable });
212
- SmartCookieService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: SmartCookieService, providedIn: "root" });
213
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: SmartCookieService, decorators: [{
214
- type: Injectable,
215
- args: [{
216
- providedIn: "root",
217
- }]
218
- }], ctorParameters: function () { return [{ type: Document, decorators: [{
219
- type: Inject,
220
- args: [DOCUMENT]
221
- }] }, { type: undefined, decorators: [{
222
- type: Inject,
223
- args: [PLATFORM_ID]
224
- }] }]; } });
225
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic21hcnQtY29va2llLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9zbWFydC1uZy1jbGllbnQvc3JjL2xpYi9zZXNzaW9uL2Nvb2tpZS1zZXJ2aWNlL3NtYXJ0LWNvb2tpZS5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLDJGQUEyRjtBQUMzRiwyRkFBMkY7QUFDM0YsZ0RBQWdEO0FBRWhELE9BQU8sRUFBRSxNQUFNLEVBQUUsVUFBVSxFQUFFLFdBQVcsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNoRSxPQUFPLEVBQUUsUUFBUSxFQUFFLGlCQUFpQixFQUFFLE1BQU0saUJBQWlCLENBQUM7O0FBZTlELE1BQU0sT0FBTyxrQkFBa0I7SUFHM0IsWUFDOEIsUUFBa0I7SUFDNUMsK0RBQStEO0lBQ2xDLFVBQWU7UUFGbEIsYUFBUSxHQUFSLFFBQVEsQ0FBVTtRQUVmLGVBQVUsR0FBVixVQUFVLENBQUs7UUFFNUMsSUFBSSxDQUFDLG9CQUFvQixHQUFHLGlCQUFpQixDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQztJQUNuRSxDQUFDO0lBRUQ7Ozs7Ozs7O09BUUc7SUFDSyxNQUFNLENBQUMsZUFBZSxDQUFDLElBQVk7UUFDdkMsTUFBTSxXQUFXLEdBQVcsSUFBSSxDQUFDLE9BQU8sQ0FBQyx3Q0FBd0MsRUFBRSxNQUFNLENBQUMsQ0FBQztRQUUzRixPQUFPLElBQUksTUFBTSxDQUFDLE1BQU0sR0FBRyxXQUFXLEdBQUcsUUFBUSxHQUFHLFdBQVcsR0FBRyxnQkFBZ0IsRUFBRSxHQUFHLENBQUMsQ0FBQztJQUM3RixDQUFDO0lBRUQ7Ozs7Ozs7OztPQVNHO0lBQ0ssTUFBTSxDQUFDLHNCQUFzQixDQUFDLG1CQUEyQjtRQUM3RCxJQUFJO1lBQ0EsT0FBTyxrQkFBa0IsQ0FBQyxtQkFBbUIsQ0FBQyxDQUFDO1NBQ2xEO1FBQUMsTUFBTTtZQUNKLCtDQUErQztZQUMvQyxP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QUFnQyxFQUNoQyxNQUFnQyxFQUNoQyxXQUFxQixLQUFLO1FBRTFCLElBQUksQ0FBQyxJQUFJLENBQUMsb0JBQW9CLEVBQUU7WUFDNUIsT0FBTztTQUNWO1FBRUQsTUFBTSxPQUFPLEdBQVEsSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDO1FBRW5DLEtBQUssTUFBTSxVQUFVLElBQUksT0FBTyxFQUFFO1lBQzlCLElBQUksT0FBTyxDQUFDLGNBQWMsQ0FBQyxVQUFVLENBQUMsRUFBRTtnQkFDcEMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxVQUFVLEVBQUUsSUFBSSxFQUFFLE1BQU0sRUFBRSxNQUFNLEVBQUUsUUFBUSxDQUFDLENBQUM7YUFDM0Q7U0FDSjtJQUNMLENBQUM7O2dIQTFTUSxrQkFBa0Isa0JBSWYsUUFBUSxhQUVSLFdBQVc7b0hBTmQsa0JBQWtCLGNBRmYsTUFBTTs0RkFFVCxrQkFBa0I7a0JBSDlCLFVBQVU7bUJBQUM7b0JBQ1IsVUFBVSxFQUFFLE1BQU07aUJBQ3JCOzBEQUsyQyxRQUFROzBCQUEzQyxNQUFNOzJCQUFDLFFBQVE7OzBCQUVmLE1BQU07MkJBQUMsV0FBVyIsInNvdXJjZXNDb250ZW50IjpbIi8vIFRoaXMgc2VydmljZSBpcyBiYXNlZCBvbiB0aGUgYG5nMi1jb29raWVzYCBwYWNrYWdlIHdoaWNoIHNhZGx5IGlzIG5vdCBhIHNlcnZpY2UgYW5kIGRvZXNcbi8vIG5vdCB1c2UgYERPQ1VNRU5UYCBpbmplY3Rpb24gYW5kIHRoZXJlZm9yZSBkb2Vzbid0IHdvcmsgd2VsbCB3aXRoIEFvVCBwcm9kdWN0aW9uIGJ1aWxkcy5cbi8vIFBhY2thZ2U6IGh0dHBzOi8vZ2l0aHViLmNvbS9CQ0pUSS9uZzItY29va2llc1xuXG5pbXBvcnQgeyBJbmplY3QsIEluamVjdGFibGUsIFBMQVRGT1JNX0lEIH0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcbmltcG9ydCB7IERPQ1VNRU5ULCBpc1BsYXRmb3JtQnJvd3NlciB9IGZyb20gXCJAYW5ndWxhci9jb21tb25cIjtcblxuZXhwb3J0IHR5cGUgU2FtZVNpdGUgPSBcIkxheFwiIHwgXCJOb25lXCIgfCBcIlN0cmljdFwiO1xuXG5leHBvcnQgaW50ZXJmYWNlIENvb2tpZU9wdGlvbnMge1xuICAgIGV4cGlyZXM/OiBudW1iZXIgfCBEYXRlO1xuICAgIHBhdGg/OiBzdHJpbmc7XG4gICAgZG9tYWluPzogc3RyaW5nO1xuICAgIHNlY3VyZT86IGJvb2xlYW47XG4gICAgc2FtZVNpdGU/OiBTYW1lU2l0ZTtcbn1cblxuQEluamVjdGFibGUoe1xuICAgIHByb3ZpZGVkSW46IFwicm9vdFwiLFxufSlcbmV4cG9ydCBjbGFzcyBTbWFydENvb2tpZVNlcnZpY2Uge1xuICAgIHByaXZhdGUgcmVhZG9ubHkgZG9jdW1lbnRJc0FjY2Vzc2libGU6IGJvb2xlYW47XG5cbiAgICBjb25zdHJ1Y3RvcihcbiAgICAgICAgQEluamVjdChET0NVTUVOVCkgcHJpdmF0ZSBkb2N1bWVudDogRG9jdW1lbnQsXG4gICAgICAgIC8vIEdldCB0aGUgYFBMQVRGT1JNX0lEYCBzbyB3ZSBjYW4gY2hlY2sgaWYgd2UncmUgaW4gYSBicm93c2VyLlxuICAgICAgICBASW5qZWN0KFBMQVRGT1JNX0lEKSBwcml2YXRlIHBsYXRmb3JtSWQ6IGFueVxuICAgICkge1xuICAgICAgICB0aGlzLmRvY3VtZW50SXNBY2Nlc3NpYmxlID0gaXNQbGF0Zm9ybUJyb3dzZXIodGhpcy5wbGF0Zm9ybUlkKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBHZXQgY29va2llIFJlZ3VsYXIgRXhwcmVzc2lvblxuICAgICAqXG4gICAgICogQHBhcmFtIG5hbWUgQ29va2llIG5hbWVcbiAgICAgKiBAcmV0dXJucyBwcm9wZXJ0eSBSZWdFeHBcbiAgICAgKlxuICAgICAqIEBhdXRob3I6IFN0ZXBhbiBTdXZvcm92XG4gICAgICogQHNpbmNlOiAxLjAuMFxuICAgICAqL1xuICAgIHByaXZhdGUgc3RhdGljIGdldENvb2tpZVJlZ0V4cChuYW1lOiBzdHJpbmcpOiBSZWdFeHAge1xuICAgICAgICBjb25zdCBlc2NhcGVkTmFtZTogc3RyaW5nID0gbmFtZS5yZXBsYWNlKC8oW1xcW1xcXVxce1xcfVxcKFxcKVxcfFxcPVxcO1xcK1xcP1xcLFxcLlxcKlxcXlxcJF0pL2dpLCBcIlxcXFwkMVwiKTtcblxuICAgICAgICByZXR1cm4gbmV3IFJlZ0V4cChcIig/Ol5cIiArIGVzY2FwZWROYW1lICsgXCJ8O1xcXFxzKlwiICsgZXNjYXBlZE5hbWUgKyBcIik9KC4qPykoPzo7fCQpXCIsIFwiZ1wiKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBHZXRzIHRoZSB1bmVuY29kZWQgdmVyc2lvbiBvZiBhbiBlbmNvZGVkIGNvbXBvbmVudCBvZiBhIFVuaWZvcm0gUmVzb3VyY2UgSWRlbnRpZmllciAoVVJJKS5cbiAgICAgKlxuICAgICAqIEBwYXJhbSBlbmNvZGVkVVJJQ29tcG9uZW50IEEgdmFsdWUgcmVwcmVzZW50aW5nIGFuIGVuY29kZWQgVVJJIGNvbXBvbmVudC5cbiAgICAgKlxuICAgICAqIEByZXR1cm5zIFRoZSB1bmVuY29kZWQgdmVyc2lvbiBvZiBhbiBlbmNvZGVkIGNvbXBvbmVudCBvZiBhIFVuaWZvcm0gUmVzb3VyY2UgSWRlbnRpZmllciAoVVJJKS5cbiAgICAgKlxuICAgICAqIEBhdXRob3I6IFN0ZXBhbiBTdXZvcm92XG4gICAgICogQHNpbmNlOiAxLjAuMFxuICAgICAqL1xuICAgIHByaXZhdGUgc3RhdGljIHNhZmVEZWNvZGVVUklDb21wb25lbnQoZW5jb2RlZFVSSUNvbXBvbmVudDogc3RyaW5nKTogc3RyaW5nIHtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIHJldHVybiBkZWNvZGVVUklDb21wb25lbnQoZW5jb2RlZFVSSUNvbXBvbmVudCk7XG4gICAgICAgIH0gY2F0Y2gge1xuICAgICAgICAgICAgLy8gcHJvYmFibHkgaXQgaXMgbm90IHVyaSBlbmNvZGVkLiByZXR1cm4gYXMgaXNcbiAgICAgICAgICAgIHJldHVybiBlbmNvZGVkVVJJQ29tcG9uZW50O1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogUmV0dXJuIGB0cnVlYCBpZiB7QGxpbmsgRG9jdW1lbnR9IGlzIGFjY2Vzc2libGUsIG90aGVyd2lzZSByZXR1cm4gYGZhbHNlYFxuICAgICAqXG4gICAgICogQHBhcmFtIG5hbWUgQ29va2llIG5hbWVcbiAgICAgKiBAcmV0dXJucyBib29sZWFuIC0gd2hldGhlciBjb29raWUgd2l0aCBzcGVjaWZpZWQgbmFtZSBleGlzdHNcbiAgICAgKlxuICAgICAqIEBhdXRob3I6IFN0ZXBhbiBTdXZvcm92XG4gICAgICogQHNpbmNlOiAxLjAuMFxuICAgICAqL1xuICAgIGNoZWNrKG5hbWU6IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgICAgICBpZiAoIXRoaXMuZG9jdW1lbnRJc0FjY2Vzc2libGUpIHtcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuICAgICAgICBuYW1lID0gZW5jb2RlVVJJQ29tcG9uZW50KG5hbWUpO1xuICAgICAgICBjb25zdCByZWdFeHA6IFJlZ0V4cCA9IFNtYXJ0Q29va2llU2VydmljZS5nZXRDb29raWVSZWdFeHAobmFtZSk7XG4gICAgICAgIHJldHVybiByZWdFeHAudGVzdCh0aGlzLmRvY3VtZW50LmNvb2tpZSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogR2V0IGNvb2tpZXMgYnkgbmFtZVxuICAgICAqXG4gICAgICogQHBhcmFtIG5hbWUgQ29va2llIG5hbWVcbiAgICAgKiBAcmV0dXJucyBwcm9wZXJ0eSB2YWx1ZVxuICAgICAqXG4gICAgICogQGF1dGhvcjogU3RlcGFuIFN1dm9yb3ZcbiAgICAgKiBAc2luY2U6IDEuMC4wXG4gICAgICovXG4gICAgZ2V0KG5hbWU6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgICAgIGlmICh0aGlzLmRvY3VtZW50SXNBY2Nlc3NpYmxlICYmIHRoaXMuY2hlY2sobmFtZSkpIHtcbiAgICAgICAgICAgIG5hbWUgPSBlbmNvZGVVUklDb21wb25lbnQobmFtZSk7XG5cbiAgICAgICAgICAgIGNvbnN0IHJlZ0V4cDogUmVnRXhwID0gU21hcnRDb29raWVTZXJ2aWNlLmdldENvb2tpZVJlZ0V4cChuYW1lKTtcbiAgICAgICAgICAgIGNvbnN0IHJlc3VsdDogUmVnRXhwRXhlY0FycmF5ID0gcmVnRXhwLmV4ZWModGhpcy5kb2N1bWVudC5jb29raWUpITtcbiAgICAgICAgICAgIGxldCByZXN1bHRzID0gcmVzdWx0LmlucHV0LnNwbGl0KFwiO1wiKTtcblxuICAgICAgICAgICAgbGV0IHZhbHVlOiBzdHJpbmcgfCB1bmRlZmluZWQ7XG5cbiAgICAgICAgICAgIHJlc3VsdHMuZm9yRWFjaCgocjogc3RyaW5nKSA9PiB7XG4gICAgICAgICAgICAgICAgbGV0IHZhbHVlcyA9IHIuc3BsaXQoYCR7bmFtZX09YCk7XG4gICAgICAgICAgICAgICAgaWYgKHZhbHVlc1sxXSAhPT0gXCJudWxsXCIpIHtcbiAgICAgICAgICAgICAgICAgICAgdmFsdWUgPSB2YWx1ZXNbMV07XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICAgIHJldHVybiB2YWx1ZSA/PyBcIlwiO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcmV0dXJuIFwiXCI7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBHZXQgYWxsIGNvb2tpZXMgaW4gSlNPTiBmb3JtYXRcbiAgICAgKlxuICAgICAqIEByZXR1cm5zIGFsbCB0aGUgY29va2llcyBpbiBqc29uXG4gICAgICpcbiAgICAgKiBAYXV0aG9yOiBTdGVwYW4gU3V2b3JvdlxuICAgICAqIEBzaW5jZTogMS4wLjBcbiAgICAgKi9cbiAgICBnZXRBbGwoKTogeyBba2V5OiBzdHJpbmddOiBzdHJpbmcgfSB7XG4gICAgICAgIGlmICghdGhpcy5kb2N1bWVudElzQWNjZXNzaWJsZSkge1xuICAgICAgICAgICAgcmV0dXJuIHt9O1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgY29va2llczogeyBba2V5OiBzdHJpbmddOiBzdHJpbmcgfSA9IHt9O1xuICAgICAgICBjb25zdCBkb2N1bWVudDogYW55ID0gdGhpcy5kb2N1bWVudDtcblxuICAgICAgICBpZiAoZG9jdW1lbnQuY29va2llICYmIGRvY3VtZW50LmNvb2tpZSAhPT0gXCJcIikge1xuICAgICAgICAgICAgZG9jdW1lbnQuY29va2llLnNwbGl0KFwiO1wiKS5mb3JFYWNoKChjdXJyZW50Q29va2llOiBhbnkpID0+IHtcbiAgICAgICAgICAgICAgICBjb25zdCBbY29va2llTmFtZSwgY29va2llVmFsdWVdID0gY3VycmVudENvb2tpZS5zcGxpdChcIj1cIik7XG4gICAgICAgICAgICAgICAgY29va2llc1tTbWFydENvb2tpZVNlcnZpY2Uuc2FmZURlY29kZVVSSUNvbXBvbmVudChjb29raWVOYW1lLnJlcGxhY2UoL14gLywgXCJcIikpXSA9XG4gICAgICAgICAgICAgICAgICAgIFNtYXJ0Q29va2llU2VydmljZS5zYWZlRGVjb2RlVVJJQ29tcG9uZW50KGNvb2tpZVZhbHVlKTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIGNvb2tpZXM7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogU2V0IGNvb2tpZSBiYXNlZCBvbiBwcm92aWRlZCBpbmZvcm1hdGlvblxuICAgICAqXG4gICAgICogQHBhcmFtIG5hbWUgICAgIENvb2tpZSBuYW1lXG4gICAgICogQHBhcmFtIHZhbHVlICAgIENvb2tpZSB2YWx1ZVxuICAgICAqIEBwYXJhbSBleHBpcmVzICBOdW1iZXIgb2YgZGF5cyB1bnRpbCB0aGUgY29va2llcyBleHBpcmVzIG9yIGFuIGFjdHVhbCBgRGF0ZWBcbiAgICAgKiBAcGFyYW0gcGF0aCAgICAgQ29va2llIHBhdGhcbiAgICAgKiBAcGFyYW0gZG9tYWluICAgQ29va2llIGRvbWFpblxuICAgICAqIEBwYXJhbSBzZWN1cmUgICBTZWN1cmUgZmxhZ1xuICAgICAqIEBwYXJhbSBzYW1lU2l0ZSBPV0FTUCBzYW1lc2l0ZSB0b2tlbiBgTGF4YCwgYE5vbmVgLCBvciBgU3RyaWN0YC4gRGVmYXVsdHMgdG8gYExheGBcbiAgICAgKlxuICAgICAqIEBhdXRob3I6IFN0ZXBhbiBTdXZvcm92XG4gICAgICogQHNpbmNlOiAxLjAuMFxuICAgICAqL1xuICAgIHNldChcbiAgICAgICAgbmFtZTogc3RyaW5nLFxuICAgICAgICB2YWx1ZTogc3RyaW5nLFxuICAgICAgICBleHBpcmVzPzogQ29va2llT3B0aW9uc1tcImV4cGlyZXNcIl0sXG4gICAgICAgIHBhdGg/OiBDb29raWVPcHRpb25zW1wicGF0aFwiXSxcbiAgICAgICAgZG9tYWluPzogQ29va2llT3B0aW9uc1tcImRvbWFpblwiXSxcbiAgICAgICAgc2VjdXJlPzogQ29va2llT3B0aW9uc1tcInNlY3VyZVwiXSxcbiAgICAgICAgc2FtZVNpdGU/OiBTYW1lU2l0ZVxuICAgICk6IHZvaWQ7XG5cbiAgICAvKipcbiAgICAgKiBTZXQgY29va2llIGJhc2VkIG9uIHByb3ZpZGVkIGluZm9ybWF0aW9uXG4gICAgICpcbiAgICAgKiBDb29raWUncyBwYXJhbWV0ZXJzOlxuICAgICAqIDxwcmU+XG4gICAgICogZXhwaXJlcyAgTnVtYmVyIG9mIGRheXMgdW50aWwgdGhlIGNvb2tpZXMgZXhwaXJlcyBvciBhbiBhY3R1YWwgYERhdGVgXG4gICAgICogcGF0aCAgICAgQ29va2llIHBhdGhcbiAgICAgKiBkb21haW4gICBDb29raWUgZG9tYWluXG4gICAgICogc2VjdXJlICAgU2VjdXJlIGZsYWdcbiAgICAgKiBzYW1lU2l0ZSBPV0FTUCBzYW1lc2l0ZSB0b2tlbiBgTGF4YCwgYE5vbmVgLCBvciBgU3RyaWN0YC4gRGVmYXVsdHMgdG8gYExheGBcbiAgICAgKiA8L3ByZT5cbiAgICAgKlxuICAgICAqIEBwYXJhbSBuYW1lICAgICBDb29raWUgbmFtZVxuICAgICAqIEBwYXJhbSB2YWx1ZSAgICBDb29raWUgdmFsdWVcbiAgICAgKiBAcGFyYW0gb3B0aW9ucyAgQm9keSB3aXRoIGNvb2tpZSdzIHBhcmFtc1xuICAgICAqXG4gICAgICogQGF1dGhvcjogU3RlcGFuIFN1dm9yb3ZcbiAgICAgKiBAc2luY2U6IDEuMC4wXG4gICAgICovXG4gICAgc2V0KG5hbWU6IHN0cmluZywgdmFsdWU6IHN0cmluZywgb3B0aW9ucz86IENvb2tpZU9wdGlvbnMpOiB2b2lkO1xuXG4gICAgc2V0KFxuICAgICAgICBuYW1lOiBzdHJpbmcsXG4gICAgICAgIHZhbHVlOiBzdHJpbmcsXG4gICAgICAgIGV4cGlyZXNPck9wdGlvbnM/OiBDb29raWVPcHRpb25zW1wiZXhwaXJlc1wiXSB8IENvb2tpZU9wdGlvbnMsXG4gICAgICAgIHBhdGg/OiBDb29raWVPcHRpb25zW1wicGF0aFwiXSxcbiAgICAgICAgZG9tYWluPzogQ29va2llT3B0aW9uc1tcImRvbWFpblwiXSxcbiAgICAgICAgc2VjdXJlPzogQ29va2llT3B0aW9uc1tcInNlY3VyZVwiXSxcbiAgICAgICAgc2FtZVNpdGU/OiBTYW1lU2l0ZVxuICAgICk6IHZvaWQge1xuICAgICAgICBpZiAoIXRoaXMuZG9jdW1lbnRJc0FjY2Vzc2libGUpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChcbiAgICAgICAgICAgIHR5cGVvZiBleHBpcmVzT3JPcHRpb25zID09PSBcIm51bWJlclwiIHx8XG4gICAgICAgICAgICBleHBpcmVzT3JPcHRpb25zIGluc3RhbmNlb2YgRGF0ZSB8fFxuICAgICAgICAgICAgcGF0aCB8fFxuICAgICAgICAgICAgZG9tYWluIHx8XG4gICAgICAgICAgICBzZWN1cmUgfHxcbiAgICAgICAgICAgIHNhbWVTaXRlXG4gICAgICAgICkge1xuICAgICAgICAgICAgY29uc3Qgb3B0aW9uc0JvZHkgPSB7XG4gICAgICAgICAgICAgICAgZXhwaXJlczogZXhwaXJlc09yT3B0aW9ucyBhcyBDb29raWVPcHRpb25zW1wiZXhwaXJlc1wiXSxcbiAgICAgICAgICAgICAgICBwYXRoLFxuICAgICAgICAgICAgICAgIGRvbWFpbixcbiAgICAgICAgICAgICAgICBzZWN1cmUsXG4gICAgICAgICAgICAgICAgc2FtZVNpdGU6IHNhbWVTaXRlID8gc2FtZVNpdGUgOiBcIkxheFwiLFxuICAgICAgICAgICAgfTtcblxuICAgICAgICAgICAgdGhpcy5zZXQobmFtZSwgdmFsdWUsIG9wdGlvbnNCb2R5KTtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGxldCBjb29raWVTdHJpbmc6IHN0cmluZyA9IGVuY29kZVVSSUNvbXBvbmVudChuYW1lKSArIFwiPVwiICsgZW5jb2RlVVJJQ29tcG9uZW50KHZhbHVlKSArIFwiO1wiO1xuXG4gICAgICAgIGNvbnN0IG9wdGlvbnMgPSBleHBpcmVzT3JPcHRpb25zID8gZXhwaXJlc09yT3B0aW9ucyA6IHt9O1xuXG4gICAgICAgIGlmIChvcHRpb25zLmV4cGlyZXMpIHtcbiAgICAgICAgICAgIGlmICh0eXBlb2Ygb3B0aW9ucy5leHBpcmVzID09PSBcIm51bWJlclwiKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgZGF0ZUV4cGlyZXM6IERhdGUgPSBuZXcgRGF0ZShcbiAgICAgICAgICAgICAgICAgICAgbmV3IERhdGUoKS5nZXRUaW1lKCkgKyBvcHRpb25zLmV4cGlyZXMgKiAxMDAwICogNjAgKiA2MCAqIDI0XG4gICAgICAgICAgICAgICAgKTtcblxuICAgICAgICAgICAgICAgIGNvb2tpZVN0cmluZyArPSBcImV4cGlyZXM9XCIgKyBkYXRlRXhwaXJlcy50b1VUQ1N0cmluZygpICsgXCI7XCI7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIGNvb2tpZVN0cmluZyArPSBcImV4cGlyZXM9XCIgKyBvcHRpb25zLmV4cGlyZXMudG9VVENTdHJpbmcoKSArIFwiO1wiO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgaWYgKG9wdGlvbnMucGF0aCkge1xuICAgICAgICAgICAgY29va2llU3RyaW5nICs9IFwicGF0aD1cIiArIG9wdGlvbnMucGF0aCArIFwiO1wiO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgY29va2llU3RyaW5nICs9IFwicGF0aD0vO1wiO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKG9wdGlvbnMuZG9tYWluKSB7XG4gICAgICAgICAgICBjb29raWVTdHJpbmcgKz0gXCJkb21haW49XCIgKyBvcHRpb25zLmRvbWFpbiArIFwiO1wiO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKG9wdGlvbnMuc2VjdXJlID09PSBmYWxzZSAmJiBvcHRpb25zLnNhbWVTaXRlID09PSBcIk5vbmVcIikge1xuICAgICAgICAgICAgb3B0aW9ucy5zZWN1cmUgPSB0cnVlO1xuICAgICAgICAgICAgY29uc29sZS53YXJuKFxuICAgICAgICAgICAgICAgIGBbbmd4LWNvb2tpZS1zZXJ2aWNlXSBDb29raWUgJHtuYW1lfSB3YXMgZm9yY2VkIHdpdGggc2VjdXJlIGZsYWcgYmVjYXVzZSBzYW1lU2l0ZT1Ob25lLmAgK1xuICAgICAgICAgICAgICAgICAgICBgTW9yZSBkZXRhaWxzIDogaHR0cHM6Ly9naXRodWIuY29tL3N0ZXZlcm1laXN0ZXIvbmd4LWNvb2tpZS1zZXJ2aWNlL2lzc3Vlcy84NiNpc3N1ZWNvbW1lbnQtNTk3NzIwMTMwYFxuICAgICAgICAgICAgKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAob3B0aW9ucy5zZWN1cmUpIHtcbiAgICAgICAgICAgIGNvb2tpZVN0cmluZyArPSBcInNlY3VyZTtcIjtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICghb3B0aW9ucy5zYW1lU2l0ZSkge1xuICAgICAgICAgICAgb3B0aW9ucy5zYW1lU2l0ZSA9IFwiTGF4XCI7XG4gICAgICAgIH1cbiAgICAgICAgY29va2llU3RyaW5nICs9IFwic2FtZVNpdGU9XCIgKyBvcHRpb25zLnNhbWVTaXRlICsgXCI7XCI7XG4gICAgICAgIHRoaXMuZG9jdW1lbnQuY29va2llID0gY29va2llU3RyaW5nO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIERlbGV0ZSBjb29raWUgYnkgbmFtZVxuICAgICAqXG4gICAgICogQHBhcmFtIG5hbWUgICBDb29raWUgbmFtZVxuICAgICAqIEBwYXJhbSBwYXRoICAgQ29va2llIHBhdGhcbiAgICAgKiBAcGFyYW0gZG9tYWluIENvb2tpZSBkb21haW5cbiAgICAgKiBAcGFyYW0gc2VjdXJlIENvb2tpZSBzZWN1cmUgZmxhZ1xuICAgICAqIEBwYXJhbSBzYW1lU2l0ZSBDb29raWUgc2FtZVNpdGUgZmxhZyAtIGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0hUVFAvSGVhZGVycy9TZXQtQ29va2llL1NhbWVTaXRlXG4gICAgICpcbiAgICAgKiBAYXV0aG9yOiBTdGVwYW4gU3V2b3JvdlxuICAgICAqIEBzaW5jZTogMS4wLjBcbiAgICAgKi9cbiAgICBkZWxldGUoXG4gICAgICAgIG5hbWU6IHN0cmluZyxcbiAgICAgICAgcGF0aD86IENvb2tpZU9wdGlvbnNbXCJwYXRoXCJdLFxuICAgICAgICBkb21haW4/OiBDb29raWVPcHRpb25zW1wiZG9tYWluXCJdLFxuICAgICAgICBzZWN1cmU/OiBDb29raWVPcHRpb25zW1wic2VjdXJlXCJdLFxuICAgICAgICBzYW1lU2l0ZTogU2FtZVNpdGUgPSBcIkxheFwiXG4gICAgKTogdm9pZCB7XG4gICAgICAgIGlmICghdGhpcy5kb2N1bWVudElzQWNjZXNzaWJsZSkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IGV4cGlyZXNEYXRlID0gbmV3IERhdGUoXCJUaHUsIDAxIEphbiAxOTcwIDAwOjAwOjAxIEdNVFwiKTtcbiAgICAgICAgdGhpcy5zZXQobmFtZSwgXCJcIiwgeyBleHBpcmVzOiBleHBpcmVzRGF0ZSwgcGF0aCwgZG9tYWluLCBzZWN1cmUsIHNhbWVTaXRlIH0pO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIERlbGV0ZSBhbGwgY29va2llc1xuICAgICAqXG4gICAgICogQHBhcmFtIHBhdGggICBDb29raWUgcGF0aFxuICAgICAqIEBwYXJhbSBkb21haW4gQ29va2llIGRvbWFpblxuICAgICAqIEBwYXJhbSBzZWN1cmUgSXMgdGhlIENvb2tpZSBzZWN1cmVcbiAgICAgKiBAcGFyYW0gc2FtZVNpdGUgSXMgdGhlIGNvb2tpZSBzYW1lIHNpdGVcbiAgICAgKlxuICAgICAqIEBhdXRob3I6IFN0ZXBhbiBTdXZvcm92XG4gICAgICogQHNpbmNlOiAxLjAuMFxuICAgICAqL1xuICAgIGRlbGV0ZUFsbChcbiAgICAgICAgcGF0aD86IENvb2tpZU9wdGlvbnNbXCJwYXRoXCJdLFxuICAgICAgICBkb21haW4/OiBDb29raWVPcHRpb25zW1wiZG9tYWluXCJdLFxuICAgICAgICBzZWN1cmU/OiBDb29raWVPcHRpb25zW1wic2VjdXJlXCJdLFxuICAgICAgICBzYW1lU2l0ZTogU2FtZVNpdGUgPSBcIkxheFwiXG4gICAgKTogdm9pZCB7XG4gICAgICAgIGlmICghdGhpcy5kb2N1bWVudElzQWNjZXNzaWJsZSkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgY29va2llczogYW55ID0gdGhpcy5nZXRBbGwoKTtcblxuICAgICAgICBmb3IgKGNvbnN0IGNvb2tpZU5hbWUgaW4gY29va2llcykge1xuICAgICAgICAgICAgaWYgKGNvb2tpZXMuaGFzT3duUHJvcGVydHkoY29va2llTmFtZSkpIHtcbiAgICAgICAgICAgICAgICB0aGlzLmRlbGV0ZShjb29raWVOYW1lLCBwYXRoLCBkb21haW4sIHNlY3VyZSwgc2FtZVNpdGUpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxufVxuIl19
1
+ // This service is based on the `ng2-cookies` package which sadly is not a service and does
2
+ // not use `DOCUMENT` injection and therefore doesn't work well with AoT production builds.
3
+ // Package: https://github.com/BCJTI/ng2-cookies
4
+ import { Inject, Injectable, PLATFORM_ID } from "@angular/core";
5
+ import { DOCUMENT, isPlatformBrowser } from "@angular/common";
6
+ import * as i0 from "@angular/core";
7
+ export class SmartCookieService {
8
+ constructor(document,
9
+ // Get the `PLATFORM_ID` so we can check if we're in a browser.
10
+ platformId) {
11
+ this.document = document;
12
+ this.platformId = platformId;
13
+ this.documentIsAccessible = isPlatformBrowser(this.platformId);
14
+ }
15
+ /**
16
+ * Get cookie Regular Expression
17
+ *
18
+ * @param name Cookie name
19
+ * @returns property RegExp
20
+ *
21
+ * @author: Stepan Suvorov
22
+ * @since: 1.0.0
23
+ */
24
+ static getCookieRegExp(name) {
25
+ const escapedName = name.replace(/([\[\]\{\}\(\)\|\=\;\+\?\,\.\*\^\$])/gi, "\\$1");
26
+ return new RegExp("(?:^" + escapedName + "|;\\s*" + escapedName + ")=(.*?)(?:;|$)", "g");
27
+ }
28
+ /**
29
+ * Gets the unencoded version of an encoded component of a Uniform Resource Identifier (URI).
30
+ *
31
+ * @param encodedURIComponent A value representing an encoded URI component.
32
+ *
33
+ * @returns The unencoded version of an encoded component of a Uniform Resource Identifier (URI).
34
+ *
35
+ * @author: Stepan Suvorov
36
+ * @since: 1.0.0
37
+ */
38
+ static safeDecodeURIComponent(encodedURIComponent) {
39
+ try {
40
+ return decodeURIComponent(encodedURIComponent);
41
+ }
42
+ catch {
43
+ // probably it is not uri encoded. return as is
44
+ return encodedURIComponent;
45
+ }
46
+ }
47
+ /**
48
+ * Return `true` if {@link Document} is accessible, otherwise return `false`
49
+ *
50
+ * @param name Cookie name
51
+ * @returns boolean - whether cookie with specified name exists
52
+ *
53
+ * @author: Stepan Suvorov
54
+ * @since: 1.0.0
55
+ */
56
+ check(name) {
57
+ if (!this.documentIsAccessible) {
58
+ return false;
59
+ }
60
+ name = encodeURIComponent(name);
61
+ const regExp = SmartCookieService.getCookieRegExp(name);
62
+ return regExp.test(this.document.cookie);
63
+ }
64
+ /**
65
+ * Get cookies by name
66
+ *
67
+ * @param name Cookie name
68
+ * @returns property value
69
+ *
70
+ * @author: Stepan Suvorov
71
+ * @since: 1.0.0
72
+ */
73
+ get(name) {
74
+ if (this.documentIsAccessible && this.check(name)) {
75
+ name = encodeURIComponent(name);
76
+ const regExp = SmartCookieService.getCookieRegExp(name);
77
+ const result = regExp.exec(this.document.cookie);
78
+ let results = result.input.split(";");
79
+ let value;
80
+ results.forEach((r) => {
81
+ let values = r.split(`${name}=`);
82
+ if (values[1] !== "null") {
83
+ value = values[1];
84
+ }
85
+ });
86
+ return value ?? "";
87
+ }
88
+ else {
89
+ return "";
90
+ }
91
+ }
92
+ /**
93
+ * Get all cookies in JSON format
94
+ *
95
+ * @returns all the cookies in json
96
+ *
97
+ * @author: Stepan Suvorov
98
+ * @since: 1.0.0
99
+ */
100
+ getAll() {
101
+ if (!this.documentIsAccessible) {
102
+ return {};
103
+ }
104
+ const cookies = {};
105
+ const document = this.document;
106
+ if (document.cookie && document.cookie !== "") {
107
+ document.cookie.split(";").forEach((currentCookie) => {
108
+ const [cookieName, cookieValue] = currentCookie.split("=");
109
+ cookies[SmartCookieService.safeDecodeURIComponent(cookieName.replace(/^ /, ""))] =
110
+ SmartCookieService.safeDecodeURIComponent(cookieValue);
111
+ });
112
+ }
113
+ return cookies;
114
+ }
115
+ set(name, value, expiresOrOptions, path, domain, secure, sameSite) {
116
+ if (!this.documentIsAccessible) {
117
+ return;
118
+ }
119
+ if (typeof expiresOrOptions === "number" ||
120
+ expiresOrOptions instanceof Date ||
121
+ path ||
122
+ domain ||
123
+ secure ||
124
+ sameSite) {
125
+ const optionsBody = {
126
+ expires: expiresOrOptions,
127
+ path,
128
+ domain,
129
+ secure,
130
+ sameSite: sameSite ? sameSite : "Lax",
131
+ };
132
+ this.set(name, value, optionsBody);
133
+ return;
134
+ }
135
+ let cookieString = encodeURIComponent(name) + "=" + encodeURIComponent(value) + ";";
136
+ const options = expiresOrOptions ? expiresOrOptions : {};
137
+ if (options.expires) {
138
+ if (typeof options.expires === "number") {
139
+ const dateExpires = new Date(new Date().getTime() + options.expires * 1000 * 60 * 60 * 24);
140
+ cookieString += "expires=" + dateExpires.toUTCString() + ";";
141
+ }
142
+ else {
143
+ cookieString += "expires=" + options.expires.toUTCString() + ";";
144
+ }
145
+ }
146
+ if (options.path) {
147
+ cookieString += "path=" + options.path + ";";
148
+ }
149
+ else {
150
+ cookieString += "path=/;";
151
+ }
152
+ if (options.domain) {
153
+ cookieString += "domain=" + options.domain + ";";
154
+ }
155
+ if (options.secure === false && options.sameSite === "None") {
156
+ options.secure = true;
157
+ console.warn(`[ngx-cookie-service] Cookie ${name} was forced with secure flag because sameSite=None.` +
158
+ `More details : https://github.com/stevermeister/ngx-cookie-service/issues/86#issuecomment-597720130`);
159
+ }
160
+ if (options.secure) {
161
+ cookieString += "secure;";
162
+ }
163
+ if (!options.sameSite) {
164
+ options.sameSite = "Lax";
165
+ }
166
+ cookieString += "sameSite=" + options.sameSite + ";";
167
+ this.document.cookie = cookieString;
168
+ }
169
+ /**
170
+ * Delete cookie by name
171
+ *
172
+ * @param name Cookie name
173
+ * @param path Cookie path
174
+ * @param domain Cookie domain
175
+ * @param secure Cookie secure flag
176
+ * @param sameSite Cookie sameSite flag - https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Set-Cookie/SameSite
177
+ *
178
+ * @author: Stepan Suvorov
179
+ * @since: 1.0.0
180
+ */
181
+ delete(name, path, domain, secure, sameSite = "Lax") {
182
+ if (!this.documentIsAccessible) {
183
+ return;
184
+ }
185
+ const expiresDate = new Date("Thu, 01 Jan 1970 00:00:01 GMT");
186
+ this.set(name, "", { expires: expiresDate, path, domain, secure, sameSite });
187
+ }
188
+ /**
189
+ * Delete all cookies
190
+ *
191
+ * @param path Cookie path
192
+ * @param domain Cookie domain
193
+ * @param secure Is the Cookie secure
194
+ * @param sameSite Is the cookie same site
195
+ *
196
+ * @author: Stepan Suvorov
197
+ * @since: 1.0.0
198
+ */
199
+ deleteAll(path, domain, secure, sameSite = "Lax") {
200
+ if (!this.documentIsAccessible) {
201
+ return;
202
+ }
203
+ const cookies = this.getAll();
204
+ for (const cookieName in cookies) {
205
+ if (cookies.hasOwnProperty(cookieName)) {
206
+ this.delete(cookieName, path, domain, secure, sameSite);
207
+ }
208
+ }
209
+ }
210
+ }
211
+ SmartCookieService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: SmartCookieService, deps: [{ token: DOCUMENT }, { token: PLATFORM_ID }], target: i0.ɵɵFactoryTarget.Injectable });
212
+ SmartCookieService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: SmartCookieService, providedIn: "root" });
213
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: SmartCookieService, decorators: [{
214
+ type: Injectable,
215
+ args: [{
216
+ providedIn: "root",
217
+ }]
218
+ }], ctorParameters: function () { return [{ type: Document, decorators: [{
219
+ type: Inject,
220
+ args: [DOCUMENT]
221
+ }] }, { type: undefined, decorators: [{
222
+ type: Inject,
223
+ args: [PLATFORM_ID]
224
+ }] }]; } });
225
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic21hcnQtY29va2llLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9zbWFydC1uZy1jbGllbnQvc3JjL2xpYi9zZXNzaW9uL2Nvb2tpZS1zZXJ2aWNlL3NtYXJ0LWNvb2tpZS5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLDJGQUEyRjtBQUMzRiwyRkFBMkY7QUFDM0YsZ0RBQWdEO0FBRWhELE9BQU8sRUFBRSxNQUFNLEVBQUUsVUFBVSxFQUFFLFdBQVcsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNoRSxPQUFPLEVBQUUsUUFBUSxFQUFFLGlCQUFpQixFQUFFLE1BQU0saUJBQWlCLENBQUM7O0FBZTlELE1BQU0sT0FBTyxrQkFBa0I7SUFHM0IsWUFDOEIsUUFBa0I7SUFDNUMsK0RBQStEO0lBQ2xDLFVBQWU7UUFGbEIsYUFBUSxHQUFSLFFBQVEsQ0FBVTtRQUVmLGVBQVUsR0FBVixVQUFVLENBQUs7UUFFNUMsSUFBSSxDQUFDLG9CQUFvQixHQUFHLGlCQUFpQixDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQztJQUNuRSxDQUFDO0lBRUQ7Ozs7Ozs7O09BUUc7SUFDSyxNQUFNLENBQUMsZUFBZSxDQUFDLElBQVk7UUFDdkMsTUFBTSxXQUFXLEdBQVcsSUFBSSxDQUFDLE9BQU8sQ0FBQyx3Q0FBd0MsRUFBRSxNQUFNLENBQUMsQ0FBQztRQUUzRixPQUFPLElBQUksTUFBTSxDQUFDLE1BQU0sR0FBRyxXQUFXLEdBQUcsUUFBUSxHQUFHLFdBQVcsR0FBRyxnQkFBZ0IsRUFBRSxHQUFHLENBQUMsQ0FBQztJQUM3RixDQUFDO0lBRUQ7Ozs7Ozs7OztPQVNHO0lBQ0ssTUFBTSxDQUFDLHNCQUFzQixDQUFDLG1CQUEyQjtRQUM3RCxJQUFJO1lBQ0EsT0FBTyxrQkFBa0IsQ0FBQyxtQkFBbUIsQ0FBQyxDQUFDO1NBQ2xEO1FBQUMsTUFBTTtZQUNKLCtDQUErQztZQUMvQyxP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QUFnQyxFQUNoQyxNQUFnQyxFQUNoQyxXQUFxQixLQUFLO1FBRTFCLElBQUksQ0FBQyxJQUFJLENBQUMsb0JBQW9CLEVBQUU7WUFDNUIsT0FBTztTQUNWO1FBRUQsTUFBTSxPQUFPLEdBQVEsSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDO1FBRW5DLEtBQUssTUFBTSxVQUFVLElBQUksT0FBTyxFQUFFO1lBQzlCLElBQUksT0FBTyxDQUFDLGNBQWMsQ0FBQyxVQUFVLENBQUMsRUFBRTtnQkFDcEMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxVQUFVLEVBQUUsSUFBSSxFQUFFLE1BQU0sRUFBRSxNQUFNLEVBQUUsUUFBUSxDQUFDLENBQUM7YUFDM0Q7U0FDSjtJQUNMLENBQUM7O2dIQTFTUSxrQkFBa0Isa0JBSWYsUUFBUSxhQUVSLFdBQVc7b0hBTmQsa0JBQWtCLGNBRmYsTUFBTTs0RkFFVCxrQkFBa0I7a0JBSDlCLFVBQVU7bUJBQUM7b0JBQ1IsVUFBVSxFQUFFLE1BQU07aUJBQ3JCOzBEQUsyQyxRQUFROzBCQUEzQyxNQUFNOzJCQUFDLFFBQVE7OzBCQUVmLE1BQU07MkJBQUMsV0FBVyIsInNvdXJjZXNDb250ZW50IjpbIi8vIFRoaXMgc2VydmljZSBpcyBiYXNlZCBvbiB0aGUgYG5nMi1jb29raWVzYCBwYWNrYWdlIHdoaWNoIHNhZGx5IGlzIG5vdCBhIHNlcnZpY2UgYW5kIGRvZXNcclxuLy8gbm90IHVzZSBgRE9DVU1FTlRgIGluamVjdGlvbiBhbmQgdGhlcmVmb3JlIGRvZXNuJ3Qgd29yayB3ZWxsIHdpdGggQW9UIHByb2R1Y3Rpb24gYnVpbGRzLlxyXG4vLyBQYWNrYWdlOiBodHRwczovL2dpdGh1Yi5jb20vQkNKVEkvbmcyLWNvb2tpZXNcclxuXHJcbmltcG9ydCB7IEluamVjdCwgSW5qZWN0YWJsZSwgUExBVEZPUk1fSUQgfSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xyXG5pbXBvcnQgeyBET0NVTUVOVCwgaXNQbGF0Zm9ybUJyb3dzZXIgfSBmcm9tIFwiQGFuZ3VsYXIvY29tbW9uXCI7XHJcblxyXG5leHBvcnQgdHlwZSBTYW1lU2l0ZSA9IFwiTGF4XCIgfCBcIk5vbmVcIiB8IFwiU3RyaWN0XCI7XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIENvb2tpZU9wdGlvbnMge1xyXG4gICAgZXhwaXJlcz86IG51bWJlciB8IERhdGU7XHJcbiAgICBwYXRoPzogc3RyaW5nO1xyXG4gICAgZG9tYWluPzogc3RyaW5nO1xyXG4gICAgc2VjdXJlPzogYm9vbGVhbjtcclxuICAgIHNhbWVTaXRlPzogU2FtZVNpdGU7XHJcbn1cclxuXHJcbkBJbmplY3RhYmxlKHtcclxuICAgIHByb3ZpZGVkSW46IFwicm9vdFwiLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgU21hcnRDb29raWVTZXJ2aWNlIHtcclxuICAgIHByaXZhdGUgcmVhZG9ubHkgZG9jdW1lbnRJc0FjY2Vzc2libGU6IGJvb2xlYW47XHJcblxyXG4gICAgY29uc3RydWN0b3IoXHJcbiAgICAgICAgQEluamVjdChET0NVTUVOVCkgcHJpdmF0ZSBkb2N1bWVudDogRG9jdW1lbnQsXHJcbiAgICAgICAgLy8gR2V0IHRoZSBgUExBVEZPUk1fSURgIHNvIHdlIGNhbiBjaGVjayBpZiB3ZSdyZSBpbiBhIGJyb3dzZXIuXHJcbiAgICAgICAgQEluamVjdChQTEFURk9STV9JRCkgcHJpdmF0ZSBwbGF0Zm9ybUlkOiBhbnlcclxuICAgICkge1xyXG4gICAgICAgIHRoaXMuZG9jdW1lbnRJc0FjY2Vzc2libGUgPSBpc1BsYXRmb3JtQnJvd3Nlcih0aGlzLnBsYXRmb3JtSWQpO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogR2V0IGNvb2tpZSBSZWd1bGFyIEV4cHJlc3Npb25cclxuICAgICAqXHJcbiAgICAgKiBAcGFyYW0gbmFtZSBDb29raWUgbmFtZVxyXG4gICAgICogQHJldHVybnMgcHJvcGVydHkgUmVnRXhwXHJcbiAgICAgKlxyXG4gICAgICogQGF1dGhvcjogU3RlcGFuIFN1dm9yb3ZcclxuICAgICAqIEBzaW5jZTogMS4wLjBcclxuICAgICAqL1xyXG4gICAgcHJpdmF0ZSBzdGF0aWMgZ2V0Q29va2llUmVnRXhwKG5hbWU6IHN0cmluZyk6IFJlZ0V4cCB7XHJcbiAgICAgICAgY29uc3QgZXNjYXBlZE5hbWU6IHN0cmluZyA9IG5hbWUucmVwbGFjZSgvKFtcXFtcXF1cXHtcXH1cXChcXClcXHxcXD1cXDtcXCtcXD9cXCxcXC5cXCpcXF5cXCRdKS9naSwgXCJcXFxcJDFcIik7XHJcblxyXG4gICAgICAgIHJldHVybiBuZXcgUmVnRXhwKFwiKD86XlwiICsgZXNjYXBlZE5hbWUgKyBcInw7XFxcXHMqXCIgKyBlc2NhcGVkTmFtZSArIFwiKT0oLio/KSg/Ojt8JClcIiwgXCJnXCIpO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogR2V0cyB0aGUgdW5lbmNvZGVkIHZlcnNpb24gb2YgYW4gZW5jb2RlZCBjb21wb25lbnQgb2YgYSBVbmlmb3JtIFJlc291cmNlIElkZW50aWZpZXIgKFVSSSkuXHJcbiAgICAgKlxyXG4gICAgICogQHBhcmFtIGVuY29kZWRVUklDb21wb25lbnQgQSB2YWx1ZSByZXByZXNlbnRpbmcgYW4gZW5jb2RlZCBVUkkgY29tcG9uZW50LlxyXG4gICAgICpcclxuICAgICAqIEByZXR1cm5zIFRoZSB1bmVuY29kZWQgdmVyc2lvbiBvZiBhbiBlbmNvZGVkIGNvbXBvbmVudCBvZiBhIFVuaWZvcm0gUmVzb3VyY2UgSWRlbnRpZmllciAoVVJJKS5cclxuICAgICAqXHJcbiAgICAgKiBAYXV0aG9yOiBTdGVwYW4gU3V2b3JvdlxyXG4gICAgICogQHNpbmNlOiAxLjAuMFxyXG4gICAgICovXHJcbiAgICBwcml2YXRlIHN0YXRpYyBzYWZlRGVjb2RlVVJJQ29tcG9uZW50KGVuY29kZWRVUklDb21wb25lbnQ6IHN0cmluZyk6IHN0cmluZyB7XHJcbiAgICAgICAgdHJ5IHtcclxuICAgICAgICAgICAgcmV0dXJuIGRlY29kZVVSSUNvbXBvbmVudChlbmNvZGVkVVJJQ29tcG9uZW50KTtcclxuICAgICAgICB9IGNhdGNoIHtcclxuICAgICAgICAgICAgLy8gcHJvYmFibHkgaXQgaXMgbm90IHVyaSBlbmNvZGVkLiByZXR1cm4gYXMgaXNcclxuICAgICAgICAgICAgcmV0dXJuIGVuY29kZWRVUklDb21wb25lbnQ7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogUmV0dXJuIGB0cnVlYCBpZiB7QGxpbmsgRG9jdW1lbnR9IGlzIGFjY2Vzc2libGUsIG90aGVyd2lzZSByZXR1cm4gYGZhbHNlYFxyXG4gICAgICpcclxuICAgICAqIEBwYXJhbSBuYW1lIENvb2tpZSBuYW1lXHJcbiAgICAgKiBAcmV0dXJucyBib29sZWFuIC0gd2hldGhlciBjb29raWUgd2l0aCBzcGVjaWZpZWQgbmFtZSBleGlzdHNcclxuICAgICAqXHJcbiAgICAgKiBAYXV0aG9yOiBTdGVwYW4gU3V2b3JvdlxyXG4gICAgICogQHNpbmNlOiAxLjAuMFxyXG4gICAgICovXHJcbiAgICBjaGVjayhuYW1lOiBzdHJpbmcpOiBib29sZWFuIHtcclxuICAgICAgICBpZiAoIXRoaXMuZG9jdW1lbnRJc0FjY2Vzc2libGUpIHtcclxuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgICAgIH1cclxuICAgICAgICBuYW1lID0gZW5jb2RlVVJJQ29tcG9uZW50KG5hbWUpO1xyXG4gICAgICAgIGNvbnN0IHJlZ0V4cDogUmVnRXhwID0gU21hcnRDb29raWVTZXJ2aWNlLmdldENvb2tpZVJlZ0V4cChuYW1lKTtcclxuICAgICAgICByZXR1cm4gcmVnRXhwLnRlc3QodGhpcy5kb2N1bWVudC5jb29raWUpO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogR2V0IGNvb2tpZXMgYnkgbmFtZVxyXG4gICAgICpcclxuICAgICAqIEBwYXJhbSBuYW1lIENvb2tpZSBuYW1lXHJcbiAgICAgKiBAcmV0dXJucyBwcm9wZXJ0eSB2YWx1ZVxyXG4gICAgICpcclxuICAgICAqIEBhdXRob3I6IFN0ZXBhbiBTdXZvcm92XHJcbiAgICAgKiBAc2luY2U6IDEuMC4wXHJcbiAgICAgKi9cclxuICAgIGdldChuYW1lOiBzdHJpbmcpOiBzdHJpbmcge1xyXG4gICAgICAgIGlmICh0aGlzLmRvY3VtZW50SXNBY2Nlc3NpYmxlICYmIHRoaXMuY2hlY2sobmFtZSkpIHtcclxuICAgICAgICAgICAgbmFtZSA9IGVuY29kZVVSSUNvbXBvbmVudChuYW1lKTtcclxuXHJcbiAgICAgICAgICAgIGNvbnN0IHJlZ0V4cDogUmVnRXhwID0gU21hcnRDb29raWVTZXJ2aWNlLmdldENvb2tpZVJlZ0V4cChuYW1lKTtcclxuICAgICAgICAgICAgY29uc3QgcmVzdWx0OiBSZWdFeHBFeGVjQXJyYXkgPSByZWdFeHAuZXhlYyh0aGlzLmRvY3VtZW50LmNvb2tpZSkhO1xyXG4gICAgICAgICAgICBsZXQgcmVzdWx0cyA9IHJlc3VsdC5pbnB1dC5zcGxpdChcIjtcIik7XHJcblxyXG4gICAgICAgICAgICBsZXQgdmFsdWU6IHN0cmluZyB8IHVuZGVmaW5lZDtcclxuXHJcbiAgICAgICAgICAgIHJlc3VsdHMuZm9yRWFjaCgocjogc3RyaW5nKSA9PiB7XHJcbiAgICAgICAgICAgICAgICBsZXQgdmFsdWVzID0gci5zcGxpdChgJHtuYW1lfT1gKTtcclxuICAgICAgICAgICAgICAgIGlmICh2YWx1ZXNbMV0gIT09IFwibnVsbFwiKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgdmFsdWUgPSB2YWx1ZXNbMV07XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH0pO1xyXG5cclxuICAgICAgICAgICAgcmV0dXJuIHZhbHVlID8/IFwiXCI7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgcmV0dXJuIFwiXCI7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogR2V0IGFsbCBjb29raWVzIGluIEpTT04gZm9ybWF0XHJcbiAgICAgKlxyXG4gICAgICogQHJldHVybnMgYWxsIHRoZSBjb29raWVzIGluIGpzb25cclxuICAgICAqXHJcbiAgICAgKiBAYXV0aG9yOiBTdGVwYW4gU3V2b3JvdlxyXG4gICAgICogQHNpbmNlOiAxLjAuMFxyXG4gICAgICovXHJcbiAgICBnZXRBbGwoKTogeyBba2V5OiBzdHJpbmddOiBzdHJpbmcgfSB7XHJcbiAgICAgICAgaWYgKCF0aGlzLmRvY3VtZW50SXNBY2Nlc3NpYmxlKSB7XHJcbiAgICAgICAgICAgIHJldHVybiB7fTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGNvbnN0IGNvb2tpZXM6IHsgW2tleTogc3RyaW5nXTogc3RyaW5nIH0gPSB7fTtcclxuICAgICAgICBjb25zdCBkb2N1bWVudDogYW55ID0gdGhpcy5kb2N1bWVudDtcclxuXHJcbiAgICAgICAgaWYgKGRvY3VtZW50LmNvb2tpZSAmJiBkb2N1bWVudC5jb29raWUgIT09IFwiXCIpIHtcclxuICAgICAgICAgICAgZG9jdW1lbnQuY29va2llLnNwbGl0KFwiO1wiKS5mb3JFYWNoKChjdXJyZW50Q29va2llOiBhbnkpID0+IHtcclxuICAgICAgICAgICAgICAgIGNvbnN0IFtjb29raWVOYW1lLCBjb29raWVWYWx1ZV0gPSBjdXJyZW50Q29va2llLnNwbGl0KFwiPVwiKTtcclxuICAgICAgICAgICAgICAgIGNvb2tpZXNbU21hcnRDb29raWVTZXJ2aWNlLnNhZmVEZWNvZGVVUklDb21wb25lbnQoY29va2llTmFtZS5yZXBsYWNlKC9eIC8sIFwiXCIpKV0gPVxyXG4gICAgICAgICAgICAgICAgICAgIFNtYXJ0Q29va2llU2VydmljZS5zYWZlRGVjb2RlVVJJQ29tcG9uZW50KGNvb2tpZVZhbHVlKTtcclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICByZXR1cm4gY29va2llcztcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIFNldCBjb29raWUgYmFzZWQgb24gcHJvdmlkZWQgaW5mb3JtYXRpb25cclxuICAgICAqXHJcbiAgICAgKiBAcGFyYW0gbmFtZSAgICAgQ29va2llIG5hbWVcclxuICAgICAqIEBwYXJhbSB2YWx1ZSAgICBDb29raWUgdmFsdWVcclxuICAgICAqIEBwYXJhbSBleHBpcmVzICBOdW1iZXIgb2YgZGF5cyB1bnRpbCB0aGUgY29va2llcyBleHBpcmVzIG9yIGFuIGFjdHVhbCBgRGF0ZWBcclxuICAgICAqIEBwYXJhbSBwYXRoICAgICBDb29raWUgcGF0aFxyXG4gICAgICogQHBhcmFtIGRvbWFpbiAgIENvb2tpZSBkb21haW5cclxuICAgICAqIEBwYXJhbSBzZWN1cmUgICBTZWN1cmUgZmxhZ1xyXG4gICAgICogQHBhcmFtIHNhbWVTaXRlIE9XQVNQIHNhbWVzaXRlIHRva2VuIGBMYXhgLCBgTm9uZWAsIG9yIGBTdHJpY3RgLiBEZWZhdWx0cyB0byBgTGF4YFxyXG4gICAgICpcclxuICAgICAqIEBhdXRob3I6IFN0ZXBhbiBTdXZvcm92XHJcbiAgICAgKiBAc2luY2U6IDEuMC4wXHJcbiAgICAgKi9cclxuICAgIHNldChcclxuICAgICAgICBuYW1lOiBzdHJpbmcsXHJcbiAgICAgICAgdmFsdWU6IHN0cmluZyxcclxuICAgICAgICBleHBpcmVzPzogQ29va2llT3B0aW9uc1tcImV4cGlyZXNcIl0sXHJcbiAgICAgICAgcGF0aD86IENvb2tpZU9wdGlvbnNbXCJwYXRoXCJdLFxyXG4gICAgICAgIGRvbWFpbj86IENvb2tpZU9wdGlvbnNbXCJkb21haW5cIl0sXHJcbiAgICAgICAgc2VjdXJlPzogQ29va2llT3B0aW9uc1tcInNlY3VyZVwiXSxcclxuICAgICAgICBzYW1lU2l0ZT86IFNhbWVTaXRlXHJcbiAgICApOiB2b2lkO1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogU2V0IGNvb2tpZSBiYXNlZCBvbiBwcm92aWRlZCBpbmZvcm1hdGlvblxyXG4gICAgICpcclxuICAgICAqIENvb2tpZSdzIHBhcmFtZXRlcnM6XHJcbiAgICAgKiA8cHJlPlxyXG4gICAgICogZXhwaXJlcyAgTnVtYmVyIG9mIGRheXMgdW50aWwgdGhlIGNvb2tpZXMgZXhwaXJlcyBvciBhbiBhY3R1YWwgYERhdGVgXHJcbiAgICAgKiBwYXRoICAgICBDb29raWUgcGF0aFxyXG4gICAgICogZG9tYWluICAgQ29va2llIGRvbWFpblxyXG4gICAgICogc2VjdXJlICAgU2VjdXJlIGZsYWdcclxuICAgICAqIHNhbWVTaXRlIE9XQVNQIHNhbWVzaXRlIHRva2VuIGBMYXhgLCBgTm9uZWAsIG9yIGBTdHJpY3RgLiBEZWZhdWx0cyB0byBgTGF4YFxyXG4gICAgICogPC9wcmU+XHJcbiAgICAgKlxyXG4gICAgICogQHBhcmFtIG5hbWUgICAgIENvb2tpZSBuYW1lXHJcbiAgICAgKiBAcGFyYW0gdmFsdWUgICAgQ29va2llIHZhbHVlXHJcbiAgICAgKiBAcGFyYW0gb3B0aW9ucyAgQm9keSB3aXRoIGNvb2tpZSdzIHBhcmFtc1xyXG4gICAgICpcclxuICAgICAqIEBhdXRob3I6IFN0ZXBhbiBTdXZvcm92XHJcbiAgICAgKiBAc2luY2U6IDEuMC4wXHJcbiAgICAgKi9cclxuICAgIHNldChuYW1lOiBzdHJpbmcsIHZhbHVlOiBzdHJpbmcsIG9wdGlvbnM/OiBDb29raWVPcHRpb25zKTogdm9pZDtcclxuXHJcbiAgICBzZXQoXHJcbiAgICAgICAgbmFtZTogc3RyaW5nLFxyXG4gICAgICAgIHZhbHVlOiBzdHJpbmcsXHJcbiAgICAgICAgZXhwaXJlc09yT3B0aW9ucz86IENvb2tpZU9wdGlvbnNbXCJleHBpcmVzXCJdIHwgQ29va2llT3B0aW9ucyxcclxuICAgICAgICBwYXRoPzogQ29va2llT3B0aW9uc1tcInBhdGhcIl0sXHJcbiAgICAgICAgZG9tYWluPzogQ29va2llT3B0aW9uc1tcImRvbWFpblwiXSxcclxuICAgICAgICBzZWN1cmU/OiBDb29raWVPcHRpb25zW1wic2VjdXJlXCJdLFxyXG4gICAgICAgIHNhbWVTaXRlPzogU2FtZVNpdGVcclxuICAgICk6IHZvaWQge1xyXG4gICAgICAgIGlmICghdGhpcy5kb2N1bWVudElzQWNjZXNzaWJsZSkge1xyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBpZiAoXHJcbiAgICAgICAgICAgIHR5cGVvZiBleHBpcmVzT3JPcHRpb25zID09PSBcIm51bWJlclwiIHx8XHJcbiAgICAgICAgICAgIGV4cGlyZXNPck9wdGlvbnMgaW5zdGFuY2VvZiBEYXRlIHx8XHJcbiAgICAgICAgICAgIHBhdGggfHxcclxuICAgICAgICAgICAgZG9tYWluIHx8XHJcbiAgICAgICAgICAgIHNlY3VyZSB8fFxyXG4gICAgICAgICAgICBzYW1lU2l0ZVxyXG4gICAgICAgICkge1xyXG4gICAgICAgICAgICBjb25zdCBvcHRpb25zQm9keSA9IHtcclxuICAgICAgICAgICAgICAgIGV4cGlyZXM6IGV4cGlyZXNPck9wdGlvbnMgYXMgQ29va2llT3B0aW9uc1tcImV4cGlyZXNcIl0sXHJcbiAgICAgICAgICAgICAgICBwYXRoLFxyXG4gICAgICAgICAgICAgICAgZG9tYWluLFxyXG4gICAgICAgICAgICAgICAgc2VjdXJlLFxyXG4gICAgICAgICAgICAgICAgc2FtZVNpdGU6IHNhbWVTaXRlID8gc2FtZVNpdGUgOiBcIkxheFwiLFxyXG4gICAgICAgICAgICB9O1xyXG5cclxuICAgICAgICAgICAgdGhpcy5zZXQobmFtZSwgdmFsdWUsIG9wdGlvbnNCb2R5KTtcclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgbGV0IGNvb2tpZVN0cmluZzogc3RyaW5nID0gZW5jb2RlVVJJQ29tcG9uZW50KG5hbWUpICsgXCI9XCIgKyBlbmNvZGVVUklDb21wb25lbnQodmFsdWUpICsgXCI7XCI7XHJcblxyXG4gICAgICAgIGNvbnN0IG9wdGlvbnMgPSBleHBpcmVzT3JPcHRpb25zID8gZXhwaXJlc09yT3B0aW9ucyA6IHt9O1xyXG5cclxuICAgICAgICBpZiAob3B0aW9ucy5leHBpcmVzKSB7XHJcbiAgICAgICAgICAgIGlmICh0eXBlb2Ygb3B0aW9ucy5leHBpcmVzID09PSBcIm51bWJlclwiKSB7XHJcbiAgICAgICAgICAgICAgICBjb25zdCBkYXRlRXhwaXJlczogRGF0ZSA9IG5ldyBEYXRlKFxyXG4gICAgICAgICAgICAgICAgICAgIG5ldyBEYXRlKCkuZ2V0VGltZSgpICsgb3B0aW9ucy5leHBpcmVzICogMTAwMCAqIDYwICogNjAgKiAyNFxyXG4gICAgICAgICAgICAgICAgKTtcclxuXHJcbiAgICAgICAgICAgICAgICBjb29raWVTdHJpbmcgKz0gXCJleHBpcmVzPVwiICsgZGF0ZUV4cGlyZXMudG9VVENTdHJpbmcoKSArIFwiO1wiO1xyXG4gICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgY29va2llU3RyaW5nICs9IFwiZXhwaXJlcz1cIiArIG9wdGlvbnMuZXhwaXJlcy50b1VUQ1N0cmluZygpICsgXCI7XCI7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGlmIChvcHRpb25zLnBhdGgpIHtcclxuICAgICAgICAgICAgY29va2llU3RyaW5nICs9IFwicGF0aD1cIiArIG9wdGlvbnMucGF0aCArIFwiO1wiO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIGNvb2tpZVN0cmluZyArPSBcInBhdGg9LztcIjtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGlmIChvcHRpb25zLmRvbWFpbikge1xyXG4gICAgICAgICAgICBjb29raWVTdHJpbmcgKz0gXCJkb21haW49XCIgKyBvcHRpb25zLmRvbWFpbiArIFwiO1wiO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgaWYgKG9wdGlvbnMuc2VjdXJlID09PSBmYWxzZSAmJiBvcHRpb25zLnNhbWVTaXRlID09PSBcIk5vbmVcIikge1xyXG4gICAgICAgICAgICBvcHRpb25zLnNlY3VyZSA9IHRydWU7XHJcbiAgICAgICAgICAgIGNvbnNvbGUud2FybihcclxuICAgICAgICAgICAgICAgIGBbbmd4LWNvb2tpZS1zZXJ2aWNlXSBDb29raWUgJHtuYW1lfSB3YXMgZm9yY2VkIHdpdGggc2VjdXJlIGZsYWcgYmVjYXVzZSBzYW1lU2l0ZT1Ob25lLmAgK1xyXG4gICAgICAgICAgICAgICAgICAgIGBNb3JlIGRldGFpbHMgOiBodHRwczovL2dpdGh1Yi5jb20vc3RldmVybWVpc3Rlci9uZ3gtY29va2llLXNlcnZpY2UvaXNzdWVzLzg2I2lzc3VlY29tbWVudC01OTc3MjAxMzBgXHJcbiAgICAgICAgICAgICk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmIChvcHRpb25zLnNlY3VyZSkge1xyXG4gICAgICAgICAgICBjb29raWVTdHJpbmcgKz0gXCJzZWN1cmU7XCI7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBpZiAoIW9wdGlvbnMuc2FtZVNpdGUpIHtcclxuICAgICAgICAgICAgb3B0aW9ucy5zYW1lU2l0ZSA9IFwiTGF4XCI7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGNvb2tpZVN0cmluZyArPSBcInNhbWVTaXRlPVwiICsgb3B0aW9ucy5zYW1lU2l0ZSArIFwiO1wiO1xyXG4gICAgICAgIHRoaXMuZG9jdW1lbnQuY29va2llID0gY29va2llU3RyaW5nO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogRGVsZXRlIGNvb2tpZSBieSBuYW1lXHJcbiAgICAgKlxyXG4gICAgICogQHBhcmFtIG5hbWUgICBDb29raWUgbmFtZVxyXG4gICAgICogQHBhcmFtIHBhdGggICBDb29raWUgcGF0aFxyXG4gICAgICogQHBhcmFtIGRvbWFpbiBDb29raWUgZG9tYWluXHJcbiAgICAgKiBAcGFyYW0gc2VjdXJlIENvb2tpZSBzZWN1cmUgZmxhZ1xyXG4gICAgICogQHBhcmFtIHNhbWVTaXRlIENvb2tpZSBzYW1lU2l0ZSBmbGFnIC0gaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvSFRUUC9IZWFkZXJzL1NldC1Db29raWUvU2FtZVNpdGVcclxuICAgICAqXHJcbiAgICAgKiBAYXV0aG9yOiBTdGVwYW4gU3V2b3JvdlxyXG4gICAgICogQHNpbmNlOiAxLjAuMFxyXG4gICAgICovXHJcbiAgICBkZWxldGUoXHJcbiAgICAgICAgbmFtZTogc3RyaW5nLFxyXG4gICAgICAgIHBhdGg/OiBDb29raWVPcHRpb25zW1wicGF0aFwiXSxcclxuICAgICAgICBkb21haW4/OiBDb29raWVPcHRpb25zW1wiZG9tYWluXCJdLFxyXG4gICAgICAgIHNlY3VyZT86IENvb2tpZU9wdGlvbnNbXCJzZWN1cmVcIl0sXHJcbiAgICAgICAgc2FtZVNpdGU6IFNhbWVTaXRlID0gXCJMYXhcIlxyXG4gICAgKTogdm9pZCB7XHJcbiAgICAgICAgaWYgKCF0aGlzLmRvY3VtZW50SXNBY2Nlc3NpYmxlKSB7XHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcbiAgICAgICAgY29uc3QgZXhwaXJlc0RhdGUgPSBuZXcgRGF0ZShcIlRodSwgMDEgSmFuIDE5NzAgMDA6MDA6MDEgR01UXCIpO1xyXG4gICAgICAgIHRoaXMuc2V0KG5hbWUsIFwiXCIsIHsgZXhwaXJlczogZXhwaXJlc0RhdGUsIHBhdGgsIGRvbWFpbiwgc2VjdXJlLCBzYW1lU2l0ZSB9KTtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIERlbGV0ZSBhbGwgY29va2llc1xyXG4gICAgICpcclxuICAgICAqIEBwYXJhbSBwYXRoICAgQ29va2llIHBhdGhcclxuICAgICAqIEBwYXJhbSBkb21haW4gQ29va2llIGRvbWFpblxyXG4gICAgICogQHBhcmFtIHNlY3VyZSBJcyB0aGUgQ29va2llIHNlY3VyZVxyXG4gICAgICogQHBhcmFtIHNhbWVTaXRlIElzIHRoZSBjb29raWUgc2FtZSBzaXRlXHJcbiAgICAgKlxyXG4gICAgICogQGF1dGhvcjogU3RlcGFuIFN1dm9yb3ZcclxuICAgICAqIEBzaW5jZTogMS4wLjBcclxuICAgICAqL1xyXG4gICAgZGVsZXRlQWxsKFxyXG4gICAgICAgIHBhdGg/OiBDb29raWVPcHRpb25zW1wicGF0aFwiXSxcclxuICAgICAgICBkb21haW4/OiBDb29raWVPcHRpb25zW1wiZG9tYWluXCJdLFxyXG4gICAgICAgIHNlY3VyZT86IENvb2tpZU9wdGlvbnNbXCJzZWN1cmVcIl0sXHJcbiAgICAgICAgc2FtZVNpdGU6IFNhbWVTaXRlID0gXCJMYXhcIlxyXG4gICAgKTogdm9pZCB7XHJcbiAgICAgICAgaWYgKCF0aGlzLmRvY3VtZW50SXNBY2Nlc3NpYmxlKSB7XHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGNvbnN0IGNvb2tpZXM6IGFueSA9IHRoaXMuZ2V0QWxsKCk7XHJcblxyXG4gICAgICAgIGZvciAoY29uc3QgY29va2llTmFtZSBpbiBjb29raWVzKSB7XHJcbiAgICAgICAgICAgIGlmIChjb29raWVzLmhhc093blByb3BlcnR5KGNvb2tpZU5hbWUpKSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmRlbGV0ZShjb29raWVOYW1lLCBwYXRoLCBkb21haW4sIHNlY3VyZSwgc2FtZVNpdGUpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG59XHJcbiJdfQ==