angular-toolbox 0.0.8 → 0.9.1

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 (231) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +14 -10
  3. package/{esm2020 → esm2022}/angular-toolbox.mjs +4 -4
  4. package/esm2022/lib/angular-toolbox.module.mjs +21 -0
  5. package/esm2022/lib/core/bridge/app-bridge.mjs +76 -0
  6. package/esm2022/lib/core/error/app-bridge-error.mjs +24 -0
  7. package/esm2022/lib/core/error/http-mock-service-error.mjs +26 -0
  8. package/esm2022/lib/core/error/index.mjs +5 -0
  9. package/esm2022/lib/core/error/integrity-error.mjs +26 -0
  10. package/esm2022/lib/core/error/subscription-error.mjs +26 -0
  11. package/esm2022/lib/core/impl/index.mjs +2 -0
  12. package/esm2022/lib/core/impl/lang/identifiable-component.mjs +31 -0
  13. package/esm2022/lib/core/impl/lang/index.mjs +2 -0
  14. package/esm2022/lib/core/impl/version/version.impl.mjs +34 -0
  15. package/esm2022/lib/core/index.mjs +3 -0
  16. package/esm2022/lib/directive/anchor-link.directive.mjs +62 -0
  17. package/esm2022/lib/directive/button-role.directive.mjs +102 -0
  18. package/esm2022/lib/directive/content-renderer.directive.mjs +61 -0
  19. package/esm2022/lib/directive/index.mjs +5 -0
  20. package/esm2022/lib/directive/navigate-to-url.directive.mjs +51 -0
  21. package/esm2022/lib/directive/navigation-directive-base.mjs +23 -0
  22. package/esm2022/lib/framework/index.mjs +2 -0
  23. package/esm2022/lib/framework/mock/http/config/http-mock-parameters.mjs +9 -0
  24. package/esm2022/lib/framework/mock/http/config/http-mock.decorator.mjs +48 -0
  25. package/esm2022/lib/framework/mock/http/config/index.mjs +3 -0
  26. package/esm2022/lib/framework/mock/http/config/route-mock-config.mjs +9 -0
  27. package/esm2022/lib/framework/mock/http/core/data-storage.mjs +9 -0
  28. package/esm2022/lib/framework/mock/http/event/event-target.impl.mjs +122 -0
  29. package/esm2022/lib/framework/mock/http/event/progress-event-mock.mjs +48 -0
  30. package/esm2022/lib/framework/mock/http/index.mjs +4 -0
  31. package/esm2022/lib/framework/mock/http/path-to-regexp/constants.mjs +111 -0
  32. package/esm2022/lib/framework/mock/http/path-to-regexp/escape-to-regexp-string.mjs +34 -0
  33. package/esm2022/lib/framework/mock/http/path-to-regexp/get-flags.mjs +28 -0
  34. package/esm2022/lib/framework/mock/http/path-to-regexp/iter.mjs +76 -0
  35. package/esm2022/lib/framework/mock/http/path-to-regexp/lexer.mjs +96 -0
  36. package/esm2022/lib/framework/mock/http/path-to-regexp/loose-replacer.mjs +28 -0
  37. package/esm2022/lib/framework/mock/http/path-to-regexp/model/decode-key-to-string.mjs +17 -0
  38. package/esm2022/lib/framework/mock/http/path-to-regexp/model/encode.mjs +17 -0
  39. package/esm2022/lib/framework/mock/http/path-to-regexp/model/key.mjs +17 -0
  40. package/esm2022/lib/framework/mock/http/path-to-regexp/model/lex-token.mjs +17 -0
  41. package/esm2022/lib/framework/mock/http/path-to-regexp/model/lexer-type.mjs +17 -0
  42. package/esm2022/lib/framework/mock/http/path-to-regexp/model/loose-replacer-provider.mjs +17 -0
  43. package/esm2022/lib/framework/mock/http/path-to-regexp/model/non-delimiter-encoder-provider.mjs +17 -0
  44. package/esm2022/lib/framework/mock/http/path-to-regexp/model/parse-options.mjs +17 -0
  45. package/esm2022/lib/framework/mock/http/path-to-regexp/model/path-to-regexp-options.mjs +17 -0
  46. package/esm2022/lib/framework/mock/http/path-to-regexp/model/route-string-tokenizer.mjs +17 -0
  47. package/esm2022/lib/framework/mock/http/path-to-regexp/model/simple-tokens.mjs +30 -0
  48. package/esm2022/lib/framework/mock/http/path-to-regexp/model/token-data-regexp-factory.mjs +17 -0
  49. package/esm2022/lib/framework/mock/http/path-to-regexp/model/token-type.mjs +17 -0
  50. package/esm2022/lib/framework/mock/http/path-to-regexp/model/token.mjs +17 -0
  51. package/esm2022/lib/framework/mock/http/path-to-regexp/string-to-token-data.mjs +87 -0
  52. package/esm2022/lib/framework/mock/http/path-to-regexp/to-key-regexp.mjs +41 -0
  53. package/esm2022/lib/framework/mock/http/path-to-regexp/to-stringify.mjs +29 -0
  54. package/esm2022/lib/framework/mock/http/path-to-regexp/token-data-to-regexp.mjs +49 -0
  55. package/esm2022/lib/framework/mock/http/path-to-regexp/token-data.mjs +33 -0
  56. package/esm2022/lib/framework/mock/http/util/data-storage.builder.mjs +35 -0
  57. package/esm2022/lib/framework/mock/http/util/http-headers-mock.builder.mjs +138 -0
  58. package/esm2022/lib/framework/mock/http/util/http-headers.util.mjs +56 -0
  59. package/esm2022/lib/framework/mock/http/util/http-method-ref.enum.mjs +60 -0
  60. package/esm2022/lib/framework/mock/http/util/http-mock-response.builder.mjs +117 -0
  61. package/esm2022/lib/framework/mock/http/util/index.mjs +3 -0
  62. package/esm2022/lib/framework/mock/http/xhr/delegate-xhr.mjs +316 -0
  63. package/esm2022/lib/framework/mock/http/xhr/http-mock-factory.impl.mjs +29 -0
  64. package/esm2022/lib/framework/mock/http/xhr/http-mock-factory.mjs +19 -0
  65. package/esm2022/lib/framework/mock/http/xhr/index.mjs +2 -0
  66. package/esm2022/lib/framework/mock/http/xhr/xhr-base.mjs +123 -0
  67. package/esm2022/lib/framework/mock/http/xhr/xhr-proxy-impl.mjs +177 -0
  68. package/esm2022/lib/model/business/index.mjs +5 -0
  69. package/esm2022/lib/model/business/lang/app-bridge-command.mjs +9 -0
  70. package/esm2022/lib/model/business/lang/destroyable.mjs +9 -0
  71. package/esm2022/lib/model/business/lang/identifiable.mjs +9 -0
  72. package/esm2022/lib/model/business/lang/index.mjs +5 -0
  73. package/esm2022/lib/model/business/lang/instantiable.mjs +9 -0
  74. package/esm2022/lib/model/business/mock/http/http-method-mock.mjs +9 -0
  75. package/esm2022/lib/model/business/mock/http/http-mock-config.mjs +9 -0
  76. package/esm2022/lib/model/business/mock/http/http-mock-endpoint.mjs +9 -0
  77. package/esm2022/lib/model/business/mock/http/http-mock-error.mjs +9 -0
  78. package/esm2022/lib/model/business/mock/http/http-mock-interceptor.mjs +9 -0
  79. package/esm2022/lib/model/business/mock/http/http-response-mock.mjs +9 -0
  80. package/esm2022/lib/model/business/mock/http/index.mjs +8 -0
  81. package/esm2022/lib/model/business/mock/http/xhr-proxy.mjs +9 -0
  82. package/esm2022/lib/model/business/ui/dark-mode-config.mjs +9 -0
  83. package/esm2022/lib/model/business/ui/dark-mode-config.provider.mjs +43 -0
  84. package/esm2022/lib/model/business/ui/dark-mode.constant.mjs +16 -0
  85. package/esm2022/lib/model/business/ui/index.mjs +5 -0
  86. package/esm2022/lib/model/business/ui/scroll-behavior.type.mjs +9 -0
  87. package/esm2022/lib/model/business/version/index.mjs +4 -0
  88. package/esm2022/lib/model/business/version/version-config.mjs +9 -0
  89. package/esm2022/lib/model/business/version/version-config.provider.mjs +40 -0
  90. package/esm2022/lib/model/business/version/version.mjs +10 -0
  91. package/esm2022/lib/model/index.mjs +3 -0
  92. package/esm2022/lib/model/service/index.mjs +5 -0
  93. package/esm2022/lib/model/service/mock/http/http-mock.service.mjs +239 -0
  94. package/esm2022/lib/model/service/subscription/subscription.service.mjs +122 -0
  95. package/esm2022/lib/model/service/ui/app-bridge.service.mjs +142 -0
  96. package/esm2022/lib/model/service/ui/dark-mode.service.mjs +183 -0
  97. package/esm2022/lib/model/service/ui/index.mjs +4 -0
  98. package/esm2022/lib/model/service/ui/scroll.service.mjs +93 -0
  99. package/esm2022/lib/model/service/version/version.service.mjs +51 -0
  100. package/{esm2020 → esm2022}/lib/pipe/index.mjs +1 -1
  101. package/esm2022/lib/pipe/safe/safe-html.pipe.mjs +34 -0
  102. package/esm2022/lib/util/aria-role.constant.mjs +16 -0
  103. package/esm2022/lib/util/default-scroll-behavior.mjs +13 -0
  104. package/esm2022/lib/util/empty-string.const.mjs +12 -0
  105. package/esm2022/lib/util/index.mjs +5 -0
  106. package/esm2022/lib/util/js-type.mjs +40 -0
  107. package/esm2022/lib/util/uuid.mjs +126 -0
  108. package/esm2022/public-api.mjs +18 -0
  109. package/fesm2022/angular-toolbox.mjs +3709 -0
  110. package/fesm2022/angular-toolbox.mjs.map +1 -0
  111. package/index.d.ts +5 -5
  112. package/lib/angular-toolbox.module.d.ts +9 -7
  113. package/lib/core/bridge/app-bridge.d.ts +59 -0
  114. package/lib/core/error/app-bridge-error.d.ts +16 -0
  115. package/lib/core/error/http-mock-service-error.d.ts +18 -0
  116. package/lib/core/error/index.d.ts +4 -0
  117. package/lib/core/error/integrity-error.d.ts +18 -0
  118. package/lib/core/error/subscription-error.d.ts +18 -0
  119. package/lib/core/impl/index.d.ts +1 -0
  120. package/lib/core/impl/lang/identifiable-component.d.ts +26 -0
  121. package/lib/core/impl/lang/index.d.ts +1 -0
  122. package/lib/core/impl/version/version.impl.d.ts +42 -0
  123. package/lib/core/index.d.ts +2 -0
  124. package/lib/directive/anchor-link.directive.d.ts +29 -0
  125. package/lib/directive/button-role.directive.d.ts +52 -0
  126. package/lib/directive/content-renderer.directive.d.ts +39 -0
  127. package/lib/directive/index.d.ts +4 -0
  128. package/lib/directive/navigate-to-url.directive.d.ts +23 -0
  129. package/lib/directive/navigation-directive-base.d.ts +19 -0
  130. package/lib/framework/index.d.ts +1 -0
  131. package/lib/framework/mock/http/config/http-mock-parameters.d.ts +13 -0
  132. package/lib/framework/mock/http/config/http-mock.decorator.d.ts +13 -0
  133. package/lib/framework/mock/http/config/index.d.ts +2 -0
  134. package/lib/framework/mock/http/config/route-mock-config.d.ts +30 -0
  135. package/lib/framework/mock/http/core/data-storage.d.ts +38 -0
  136. package/lib/framework/mock/http/event/event-target.impl.d.ts +70 -0
  137. package/lib/framework/mock/http/event/progress-event-mock.d.ts +36 -0
  138. package/lib/framework/mock/http/index.d.ts +3 -0
  139. package/lib/framework/mock/http/path-to-regexp/constants.d.ts +111 -0
  140. package/lib/framework/mock/http/path-to-regexp/escape-to-regexp-string.d.ts +24 -0
  141. package/lib/framework/mock/http/path-to-regexp/get-flags.d.ts +25 -0
  142. package/lib/framework/mock/http/path-to-regexp/iter.d.ts +50 -0
  143. package/lib/framework/mock/http/path-to-regexp/lexer.d.ts +24 -0
  144. package/lib/framework/mock/http/path-to-regexp/loose-replacer.d.ts +25 -0
  145. package/lib/framework/mock/http/path-to-regexp/model/decode-key-to-string.d.ts +21 -0
  146. package/lib/framework/mock/http/path-to-regexp/model/encode.d.ts +20 -0
  147. package/lib/framework/mock/http/path-to-regexp/model/key.d.ts +45 -0
  148. package/lib/framework/mock/http/path-to-regexp/model/lex-token.d.ts +34 -0
  149. package/lib/framework/mock/http/path-to-regexp/model/lexer-type.d.ts +21 -0
  150. package/lib/framework/mock/http/path-to-regexp/model/loose-replacer-provider.d.ts +20 -0
  151. package/lib/framework/mock/http/path-to-regexp/model/non-delimiter-encoder-provider.d.ts +21 -0
  152. package/lib/framework/mock/http/path-to-regexp/model/parse-options.d.ts +33 -0
  153. package/lib/framework/mock/http/path-to-regexp/model/path-to-regexp-options.d.ts +52 -0
  154. package/lib/framework/mock/http/path-to-regexp/model/route-string-tokenizer.d.ts +22 -0
  155. package/lib/framework/mock/http/path-to-regexp/model/simple-tokens.d.ts +21 -0
  156. package/lib/framework/mock/http/path-to-regexp/model/token-data-regexp-factory.d.ts +23 -0
  157. package/lib/framework/mock/http/path-to-regexp/model/token-type.d.ts +20 -0
  158. package/lib/framework/mock/http/path-to-regexp/model/token.d.ts +21 -0
  159. package/lib/framework/mock/http/path-to-regexp/string-to-token-data.d.ts +21 -0
  160. package/lib/framework/mock/http/path-to-regexp/to-key-regexp.d.ts +22 -0
  161. package/lib/framework/mock/http/path-to-regexp/to-stringify.d.ts +21 -0
  162. package/lib/framework/mock/http/path-to-regexp/token-data-to-regexp.d.ts +21 -0
  163. package/lib/framework/mock/http/path-to-regexp/token-data.d.ts +32 -0
  164. package/lib/framework/mock/http/util/data-storage.builder.d.ts +25 -0
  165. package/lib/framework/mock/http/util/http-headers-mock.builder.d.ts +106 -0
  166. package/lib/framework/mock/http/util/http-headers.util.d.ts +31 -0
  167. package/lib/framework/mock/http/util/http-method-ref.enum.d.ts +58 -0
  168. package/lib/framework/mock/http/util/http-mock-response.builder.d.ts +83 -0
  169. package/lib/framework/mock/http/util/index.d.ts +2 -0
  170. package/lib/framework/mock/http/xhr/delegate-xhr.d.ts +199 -0
  171. package/lib/framework/mock/http/xhr/http-mock-factory.d.ts +14 -0
  172. package/lib/framework/mock/http/xhr/http-mock-factory.impl.d.ts +24 -0
  173. package/lib/framework/mock/http/xhr/index.d.ts +1 -0
  174. package/lib/framework/mock/http/xhr/xhr-base.d.ts +123 -0
  175. package/lib/framework/mock/http/xhr/xhr-proxy-impl.d.ts +125 -0
  176. package/lib/model/business/index.d.ts +4 -0
  177. package/lib/model/business/lang/app-bridge-command.d.ts +11 -0
  178. package/lib/model/business/lang/destroyable.d.ts +16 -0
  179. package/lib/model/business/lang/identifiable.d.ts +19 -0
  180. package/lib/model/business/lang/index.d.ts +4 -0
  181. package/lib/model/business/lang/instantiable.d.ts +15 -0
  182. package/lib/model/business/mock/http/http-method-mock.d.ts +35 -0
  183. package/lib/model/business/mock/http/http-mock-config.d.ts +28 -0
  184. package/lib/model/business/mock/http/http-mock-endpoint.d.ts +41 -0
  185. package/lib/model/business/mock/http/http-mock-error.d.ts +21 -0
  186. package/lib/model/business/mock/http/http-mock-interceptor.d.ts +27 -0
  187. package/lib/model/business/mock/http/http-response-mock.d.ts +44 -0
  188. package/lib/model/business/mock/http/index.d.ts +7 -0
  189. package/lib/model/business/mock/http/xhr-proxy.d.ts +15 -0
  190. package/lib/model/business/ui/dark-mode-config.d.ts +29 -0
  191. package/lib/model/business/ui/dark-mode-config.provider.d.ts +21 -0
  192. package/lib/model/business/ui/dark-mode.constant.d.ts +15 -0
  193. package/lib/model/business/ui/index.d.ts +4 -0
  194. package/lib/model/business/ui/scroll-behavior.type.d.ts +11 -0
  195. package/lib/model/business/version/index.d.ts +3 -0
  196. package/lib/model/business/version/version-config.d.ts +28 -0
  197. package/lib/model/business/version/version-config.provider.d.ts +22 -0
  198. package/lib/model/business/version/version.d.ts +34 -0
  199. package/lib/model/index.d.ts +2 -0
  200. package/lib/model/service/index.d.ts +4 -0
  201. package/lib/model/service/mock/http/http-mock.service.d.ts +101 -0
  202. package/lib/model/service/subscription/subscription.service.d.ts +66 -0
  203. package/lib/model/service/ui/app-bridge.service.d.ts +80 -0
  204. package/lib/model/service/ui/dark-mode.service.d.ts +99 -0
  205. package/lib/model/service/ui/index.d.ts +3 -0
  206. package/lib/{service → model/service}/ui/scroll.service.d.ts +55 -52
  207. package/lib/model/service/version/version.service.d.ts +30 -0
  208. package/lib/pipe/index.d.ts +1 -1
  209. package/lib/pipe/safe/safe-html.pipe.d.ts +30 -10
  210. package/lib/util/aria-role.constant.d.ts +15 -0
  211. package/lib/util/default-scroll-behavior.d.ts +12 -0
  212. package/lib/util/empty-string.const.d.ts +11 -0
  213. package/lib/util/index.d.ts +4 -0
  214. package/lib/util/js-type.d.ts +39 -0
  215. package/lib/util/uuid.d.ts +89 -0
  216. package/package.json +10 -13
  217. package/public-api.d.ts +14 -3
  218. package/esm2020/lib/angular-toolbox.module.mjs +0 -26
  219. package/esm2020/lib/pipe/safe/safe-html.pipe.mjs +0 -18
  220. package/esm2020/lib/service/index.mjs +0 -4
  221. package/esm2020/lib/service/subscription/subscription.service.mjs +0 -60
  222. package/esm2020/lib/service/ui/dark-mode.service.mjs +0 -167
  223. package/esm2020/lib/service/ui/scroll.service.mjs +0 -79
  224. package/esm2020/public-api.mjs +0 -7
  225. package/fesm2015/angular-toolbox.mjs +0 -356
  226. package/fesm2015/angular-toolbox.mjs.map +0 -1
  227. package/fesm2020/angular-toolbox.mjs +0 -350
  228. package/fesm2020/angular-toolbox.mjs.map +0 -1
  229. package/lib/service/index.d.ts +0 -3
  230. package/lib/service/subscription/subscription.service.d.ts +0 -33
  231. package/lib/service/ui/dark-mode.service.d.ts +0 -92
@@ -0,0 +1,117 @@
1
+ /**
2
+ * @license
3
+ * Copyright Pascal ECHEMANN. All Rights Reserved.
4
+ *
5
+ * Use of this source code is governed by an MIT-style license that can be found in
6
+ * the LICENSE file at https://pascalechemann.com/angular-toolbox/resources/license
7
+ */
8
+ import { HttpStatusCode } from "@angular/common/http";
9
+ /**
10
+ * @private
11
+ */
12
+ const OK = "OK";
13
+ /**
14
+ * A statefull builder for creating new `HttpResponseMock` instances.
15
+ */
16
+ export class HttpResponseMockBuilder {
17
+ constructor() {
18
+ /**
19
+ * @private
20
+ */
21
+ this._response = {
22
+ url: null,
23
+ body: null,
24
+ status: HttpStatusCode.Ok,
25
+ statusText: OK,
26
+ error: null,
27
+ delay: 0
28
+ };
29
+ }
30
+ /**
31
+ * Sets the body property of the new `HttpResponseMock` instance with the specified `body` value.
32
+ *
33
+ * @param body The value used to set the body property of the new `HttpResponseMock` instance.
34
+ *
35
+ * @returns A reference to this `HttpResponseMockBuilder` instance.
36
+ */
37
+ body(body) {
38
+ this._response.body = body;
39
+ return this;
40
+ }
41
+ /**
42
+ * Sets the headers property of the new `HttpResponseMock` instance with the specified `headers` value.
43
+ *
44
+ * @param headers The value used to set the `headers` property of the new `HttpResponseMock` instance.
45
+ *
46
+ * @returns A reference to this `HttpResponseMockBuilder` instance.
47
+ */
48
+ headers(headers) {
49
+ this._response.headers = headers;
50
+ return this;
51
+ }
52
+ /**
53
+ * Sets the `status` property of the new `HttpResponseMock` instance with the specified `status` value.
54
+ *
55
+ * @param status The value used to set the `status` property of the new `HttpResponseMock` instance.
56
+ *
57
+ * @returns A reference to this `HttpResponseMockBuilder` instance.
58
+ */
59
+ status(status) {
60
+ this._response.status = status;
61
+ return this;
62
+ }
63
+ /**
64
+ * Sets the `statusText` property of the new `HttpResponseMock` instance with the specified `statusText` value.
65
+ *
66
+ * @param statusText The value used to set the `statusText` property of the new `HttpResponseMock` instance.
67
+ *
68
+ * @returns A reference to this `HttpResponseMockBuilder` instance.
69
+ */
70
+ statusText(statusText) {
71
+ this._response.statusText = statusText;
72
+ return this;
73
+ }
74
+ /**
75
+ * Sets the `url` property of the new `HttpResponseMock` instance with the specified `url` value.
76
+ *
77
+ * @param url The value used to set the `url` property of the new `HttpResponseMock` instance.
78
+ *
79
+ * @returns A reference to this `HttpResponseMockBuilder` instance.
80
+ */
81
+ url(url) {
82
+ this._response.url = url;
83
+ return this;
84
+ }
85
+ /**
86
+ * Sets the `delay` property of the new `HttpResponseMock` instance with the specified `timer` duration.
87
+ * Maximum value is `10000` miliseconds (10 seconds).
88
+ *
89
+ * @param timer The value used to set the `delay` property of the new `HttpResponseMock` instance.
90
+ *
91
+ * @returns A reference to this `HttpResponseMockBuilder` instance.
92
+ */
93
+ delay(timer = 0) {
94
+ this._response.delay = timer;
95
+ return this;
96
+ }
97
+ /**
98
+ * Returns a new `HttpResponseMock` instance, built from the properties specified with the
99
+ * `HttpResponseMockBuilder` methods.
100
+ *
101
+ * @param error An optional value used to set the `error` property of the new `HttpResponseMock` instance.
102
+ * The `error` parameter values take precedence over all other properties of the `HttpResponseMock`
103
+ * instance.
104
+ * @returns A new `HttpResponseMock` instance.
105
+ */
106
+ response(error = null) {
107
+ this._response.error = error;
108
+ return this._response;
109
+ }
110
+ }
111
+ /**
112
+ * A utility function used to create new "chainable" `HttpResponseMockBuilder` instances.
113
+ *
114
+ * @returns A new `HttpResponseMockBuilder` instance.
115
+ */
116
+ export const httpResponseMock = () => new HttpResponseMockBuilder();
117
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaHR0cC1tb2NrLXJlc3BvbnNlLmJ1aWxkZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9hbmd1bGFyLXRvb2xib3gvc3JjL2xpYi9mcmFtZXdvcmsvbW9jay9odHRwL3V0aWwvaHR0cC1tb2NrLXJlc3BvbnNlLmJ1aWxkZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7OztHQU1HO0FBRUgsT0FBTyxFQUFlLGNBQWMsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBR25FOztHQUVHO0FBQ0gsTUFBTSxFQUFFLEdBQVcsSUFBSSxDQUFDO0FBRXhCOztHQUVHO0FBQ0gsTUFBTSxPQUFPLHVCQUF1QjtJQUFwQztRQUVJOztXQUVHO1FBQ0ssY0FBUyxHQUFxQjtZQUNsQyxHQUFHLEVBQUUsSUFBSTtZQUNULElBQUksRUFBRSxJQUFJO1lBQ1YsTUFBTSxFQUFFLGNBQWMsQ0FBQyxFQUFFO1lBQ3pCLFVBQVUsRUFBRSxFQUFFO1lBQ2QsS0FBSyxFQUFFLElBQUk7WUFDWCxLQUFLLEVBQUUsQ0FBQztTQUNYLENBQUM7SUF3Rk4sQ0FBQztJQXRGRzs7Ozs7O09BTUc7SUFDSSxJQUFJLENBQUMsSUFBUztRQUNqQixJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksR0FBRyxJQUFJLENBQUM7UUFDM0IsT0FBTyxJQUFJLENBQUM7SUFDaEIsQ0FBQztJQUVEOzs7Ozs7T0FNRztJQUNJLE9BQU8sQ0FBQyxPQUFvQjtRQUMvQixJQUFJLENBQUMsU0FBUyxDQUFDLE9BQU8sR0FBRyxPQUFPLENBQUM7UUFDakMsT0FBTyxJQUFJLENBQUM7SUFDaEIsQ0FBQztJQUVEOzs7Ozs7T0FNRztJQUNJLE1BQU0sQ0FBQyxNQUFjO1FBQ3hCLElBQUksQ0FBQyxTQUFTLENBQUMsTUFBTSxHQUFHLE1BQU0sQ0FBQztRQUMvQixPQUFPLElBQUksQ0FBQztJQUNoQixDQUFDO0lBRUQ7Ozs7OztPQU1HO0lBQ0ksVUFBVSxDQUFDLFVBQWtCO1FBQ2hDLElBQUksQ0FBQyxTQUFTLENBQUMsVUFBVSxHQUFHLFVBQVUsQ0FBQztRQUN2QyxPQUFPLElBQUksQ0FBQztJQUNoQixDQUFDO0lBRUQ7Ozs7OztPQU1HO0lBQ0ksR0FBRyxDQUFDLEdBQWtCO1FBQ3pCLElBQUksQ0FBQyxTQUFTLENBQUMsR0FBRyxHQUFHLEdBQUcsQ0FBQztRQUN6QixPQUFPLElBQUksQ0FBQztJQUNoQixDQUFDO0lBRUQ7Ozs7Ozs7T0FPRztJQUNJLEtBQUssQ0FBQyxRQUFnQixDQUFDO1FBQzFCLElBQUksQ0FBQyxTQUFTLENBQUMsS0FBSyxHQUFHLEtBQUssQ0FBQztRQUM3QixPQUFPLElBQUksQ0FBQztJQUNoQixDQUFDO0lBRUQ7Ozs7Ozs7O09BUUc7SUFDSSxRQUFRLENBQUMsUUFBOEIsSUFBSTtRQUM5QyxJQUFJLENBQUMsU0FBUyxDQUFDLEtBQUssR0FBRyxLQUFLLENBQUM7UUFDN0IsT0FBTyxJQUFJLENBQUMsU0FBUyxDQUFDO0lBQzFCLENBQUM7Q0FDSjtBQUVEOzs7O0dBSUc7QUFDSCxNQUFNLENBQUMsTUFBTSxnQkFBZ0IsR0FBZ0MsR0FBRSxFQUFFLENBQUMsSUFBSSx1QkFBdUIsRUFBRSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXHJcbiAqIEBsaWNlbnNlXHJcbiAqIENvcHlyaWdodCBQYXNjYWwgRUNIRU1BTk4uIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXHJcbiAqXHJcbiAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlIGZvdW5kIGluXHJcbiAqIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9wYXNjYWxlY2hlbWFubi5jb20vYW5ndWxhci10b29sYm94L3Jlc291cmNlcy9saWNlbnNlXHJcbiAqL1xyXG5cclxuaW1wb3J0IHsgSHR0cEhlYWRlcnMsIEh0dHBTdGF0dXNDb2RlIH0gZnJvbSBcIkBhbmd1bGFyL2NvbW1vbi9odHRwXCI7XHJcbmltcG9ydCB7IEh0dHBNb2NrRXJyb3IsIEh0dHBSZXNwb25zZU1vY2sgfSBmcm9tIFwiLi4vLi4vLi4vLi4vbW9kZWxcIjtcclxuXHJcbi8qKlxyXG4gKiBAcHJpdmF0ZVxyXG4gKi9cclxuY29uc3QgT0s6IHN0cmluZyA9IFwiT0tcIjtcclxuXHJcbi8qKlxyXG4gKiBBIHN0YXRlZnVsbCBidWlsZGVyIGZvciBjcmVhdGluZyBuZXcgYEh0dHBSZXNwb25zZU1vY2tgIGluc3RhbmNlcy5cclxuICovXHJcbmV4cG9ydCBjbGFzcyBIdHRwUmVzcG9uc2VNb2NrQnVpbGRlciB7XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBAcHJpdmF0ZVxyXG4gICAgICovXHJcbiAgICBwcml2YXRlIF9yZXNwb25zZTogSHR0cFJlc3BvbnNlTW9jayA9IHtcclxuICAgICAgICB1cmw6IG51bGwsXHJcbiAgICAgICAgYm9keTogbnVsbCxcclxuICAgICAgICBzdGF0dXM6IEh0dHBTdGF0dXNDb2RlLk9rLFxyXG4gICAgICAgIHN0YXR1c1RleHQ6IE9LLFxyXG4gICAgICAgIGVycm9yOiBudWxsLFxyXG4gICAgICAgIGRlbGF5OiAwXHJcbiAgICB9O1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogU2V0cyB0aGUgYm9keSBwcm9wZXJ0eSBvZiB0aGUgbmV3IGBIdHRwUmVzcG9uc2VNb2NrYCBpbnN0YW5jZSB3aXRoIHRoZSBzcGVjaWZpZWQgYGJvZHlgIHZhbHVlLlxyXG4gICAgICogXHJcbiAgICAgKiBAcGFyYW0gYm9keSBUaGUgdmFsdWUgdXNlZCB0byBzZXQgdGhlIGJvZHkgcHJvcGVydHkgb2YgdGhlIG5ldyBgSHR0cFJlc3BvbnNlTW9ja2AgaW5zdGFuY2UuXHJcbiAgICAgKiBcclxuICAgICAqIEByZXR1cm5zIEEgcmVmZXJlbmNlIHRvIHRoaXMgYEh0dHBSZXNwb25zZU1vY2tCdWlsZGVyYCBpbnN0YW5jZS5cclxuICAgICAqL1xyXG4gICAgcHVibGljIGJvZHkoYm9keTogYW55KTogSHR0cFJlc3BvbnNlTW9ja0J1aWxkZXIge1xyXG4gICAgICAgIHRoaXMuX3Jlc3BvbnNlLmJvZHkgPSBib2R5O1xyXG4gICAgICAgIHJldHVybiB0aGlzO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogU2V0cyB0aGUgaGVhZGVycyBwcm9wZXJ0eSBvZiB0aGUgbmV3IGBIdHRwUmVzcG9uc2VNb2NrYCBpbnN0YW5jZSB3aXRoIHRoZSBzcGVjaWZpZWQgYGhlYWRlcnNgIHZhbHVlLlxyXG4gICAgICogXHJcbiAgICAgKiBAcGFyYW0gaGVhZGVycyBUaGUgdmFsdWUgdXNlZCB0byBzZXQgdGhlIGBoZWFkZXJzYCBwcm9wZXJ0eSBvZiB0aGUgbmV3IGBIdHRwUmVzcG9uc2VNb2NrYCBpbnN0YW5jZS5cclxuICAgICAqIFxyXG4gICAgICogQHJldHVybnMgQSByZWZlcmVuY2UgdG8gdGhpcyBgSHR0cFJlc3BvbnNlTW9ja0J1aWxkZXJgIGluc3RhbmNlLlxyXG4gICAgICovXHJcbiAgICBwdWJsaWMgaGVhZGVycyhoZWFkZXJzOiBIdHRwSGVhZGVycyk6IEh0dHBSZXNwb25zZU1vY2tCdWlsZGVyIHtcclxuICAgICAgICB0aGlzLl9yZXNwb25zZS5oZWFkZXJzID0gaGVhZGVycztcclxuICAgICAgICByZXR1cm4gdGhpcztcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIFNldHMgdGhlIGBzdGF0dXNgIHByb3BlcnR5IG9mIHRoZSBuZXcgYEh0dHBSZXNwb25zZU1vY2tgIGluc3RhbmNlIHdpdGggdGhlIHNwZWNpZmllZCBgc3RhdHVzYCB2YWx1ZS5cclxuICAgICAqIFxyXG4gICAgICogQHBhcmFtIHN0YXR1cyBUaGUgdmFsdWUgdXNlZCB0byBzZXQgdGhlIGBzdGF0dXNgIHByb3BlcnR5IG9mIHRoZSBuZXcgYEh0dHBSZXNwb25zZU1vY2tgIGluc3RhbmNlLlxyXG4gICAgICogXHJcbiAgICAgKiBAcmV0dXJucyBBIHJlZmVyZW5jZSB0byB0aGlzIGBIdHRwUmVzcG9uc2VNb2NrQnVpbGRlcmAgaW5zdGFuY2UuXHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyBzdGF0dXMoc3RhdHVzOiBudW1iZXIpOiBIdHRwUmVzcG9uc2VNb2NrQnVpbGRlciB7XHJcbiAgICAgICAgdGhpcy5fcmVzcG9uc2Uuc3RhdHVzID0gc3RhdHVzO1xyXG4gICAgICAgIHJldHVybiB0aGlzO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogU2V0cyB0aGUgYHN0YXR1c1RleHRgIHByb3BlcnR5IG9mIHRoZSBuZXcgYEh0dHBSZXNwb25zZU1vY2tgIGluc3RhbmNlIHdpdGggdGhlIHNwZWNpZmllZCBgc3RhdHVzVGV4dGAgdmFsdWUuXHJcbiAgICAgKiBcclxuICAgICAqIEBwYXJhbSBzdGF0dXNUZXh0IFRoZSB2YWx1ZSB1c2VkIHRvIHNldCB0aGUgYHN0YXR1c1RleHRgIHByb3BlcnR5IG9mIHRoZSBuZXcgYEh0dHBSZXNwb25zZU1vY2tgIGluc3RhbmNlLlxyXG4gICAgICogXHJcbiAgICAgKiBAcmV0dXJucyBBIHJlZmVyZW5jZSB0byB0aGlzIGBIdHRwUmVzcG9uc2VNb2NrQnVpbGRlcmAgaW5zdGFuY2UuXHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyBzdGF0dXNUZXh0KHN0YXR1c1RleHQ6IHN0cmluZyk6IEh0dHBSZXNwb25zZU1vY2tCdWlsZGVyIHtcclxuICAgICAgICB0aGlzLl9yZXNwb25zZS5zdGF0dXNUZXh0ID0gc3RhdHVzVGV4dDtcclxuICAgICAgICByZXR1cm4gdGhpcztcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIFNldHMgdGhlIGB1cmxgIHByb3BlcnR5IG9mIHRoZSBuZXcgYEh0dHBSZXNwb25zZU1vY2tgIGluc3RhbmNlIHdpdGggdGhlIHNwZWNpZmllZCBgdXJsYCB2YWx1ZS5cclxuICAgICAqIFxyXG4gICAgICogQHBhcmFtIHVybCBUaGUgdmFsdWUgdXNlZCB0byBzZXQgdGhlIGB1cmxgIHByb3BlcnR5IG9mIHRoZSBuZXcgYEh0dHBSZXNwb25zZU1vY2tgIGluc3RhbmNlLlxyXG4gICAgICogXHJcbiAgICAgKiBAcmV0dXJucyBBIHJlZmVyZW5jZSB0byB0aGlzIGBIdHRwUmVzcG9uc2VNb2NrQnVpbGRlcmAgaW5zdGFuY2UuXHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyB1cmwodXJsOiBzdHJpbmcgfCBudWxsKTogSHR0cFJlc3BvbnNlTW9ja0J1aWxkZXIge1xyXG4gICAgICAgIHRoaXMuX3Jlc3BvbnNlLnVybCA9IHVybDtcclxuICAgICAgICByZXR1cm4gdGhpcztcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIFNldHMgdGhlIGBkZWxheWAgcHJvcGVydHkgb2YgdGhlIG5ldyBgSHR0cFJlc3BvbnNlTW9ja2AgaW5zdGFuY2Ugd2l0aCB0aGUgc3BlY2lmaWVkIGB0aW1lcmAgZHVyYXRpb24uXHJcbiAgICAgKiBNYXhpbXVtIHZhbHVlIGlzIGAxMDAwMGAgbWlsaXNlY29uZHMgKDEwIHNlY29uZHMpLlxyXG4gICAgICogXHJcbiAgICAgKiBAcGFyYW0gdGltZXIgVGhlIHZhbHVlIHVzZWQgdG8gc2V0IHRoZSBgZGVsYXlgIHByb3BlcnR5IG9mIHRoZSBuZXcgYEh0dHBSZXNwb25zZU1vY2tgIGluc3RhbmNlLlxyXG4gICAgICogXHJcbiAgICAgKiBAcmV0dXJucyBBIHJlZmVyZW5jZSB0byB0aGlzIGBIdHRwUmVzcG9uc2VNb2NrQnVpbGRlcmAgaW5zdGFuY2UuXHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyBkZWxheSh0aW1lcjogbnVtYmVyID0gMCk6IEh0dHBSZXNwb25zZU1vY2tCdWlsZGVyIHtcclxuICAgICAgICB0aGlzLl9yZXNwb25zZS5kZWxheSA9IHRpbWVyO1xyXG4gICAgICAgIHJldHVybiB0aGlzO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogUmV0dXJucyBhIG5ldyBgSHR0cFJlc3BvbnNlTW9ja2AgaW5zdGFuY2UsIGJ1aWx0IGZyb20gdGhlIHByb3BlcnRpZXMgc3BlY2lmaWVkIHdpdGggdGhlXHJcbiAgICAgKiBgSHR0cFJlc3BvbnNlTW9ja0J1aWxkZXJgIG1ldGhvZHMuXHJcbiAgICAgKiBcclxuICAgICAqIEBwYXJhbSBlcnJvciBBbiBvcHRpb25hbCB2YWx1ZSB1c2VkIHRvIHNldCB0aGUgYGVycm9yYCBwcm9wZXJ0eSBvZiB0aGUgbmV3IGBIdHRwUmVzcG9uc2VNb2NrYCBpbnN0YW5jZS5cclxuICAgICAqICAgICAgICAgICAgICBUaGUgYGVycm9yYCBwYXJhbWV0ZXIgdmFsdWVzIHRha2UgcHJlY2VkZW5jZSBvdmVyIGFsbCBvdGhlciBwcm9wZXJ0aWVzIG9mIHRoZSBgSHR0cFJlc3BvbnNlTW9ja2BcclxuICAgICAqICAgICAgICAgICAgICBpbnN0YW5jZS5cclxuICAgICAqIEByZXR1cm5zIEEgbmV3IGBIdHRwUmVzcG9uc2VNb2NrYCBpbnN0YW5jZS5cclxuICAgICAqL1xyXG4gICAgcHVibGljIHJlc3BvbnNlKGVycm9yOiBIdHRwTW9ja0Vycm9yIHwgbnVsbCA9IG51bGwpOiBIdHRwUmVzcG9uc2VNb2NrIHtcclxuICAgICAgICB0aGlzLl9yZXNwb25zZS5lcnJvciA9IGVycm9yO1xyXG4gICAgICAgIHJldHVybiB0aGlzLl9yZXNwb25zZTtcclxuICAgIH1cclxufVxyXG5cclxuLyoqXHJcbiAqIEEgdXRpbGl0eSBmdW5jdGlvbiB1c2VkIHRvIGNyZWF0ZSBuZXcgXCJjaGFpbmFibGVcIiBgSHR0cFJlc3BvbnNlTW9ja0J1aWxkZXJgIGluc3RhbmNlcy5cclxuICogXHJcbiAqIEByZXR1cm5zIEEgbmV3IGBIdHRwUmVzcG9uc2VNb2NrQnVpbGRlcmAgaW5zdGFuY2UuXHJcbiAqL1xyXG5leHBvcnQgY29uc3QgaHR0cFJlc3BvbnNlTW9jazooKT0+IEh0dHBSZXNwb25zZU1vY2tCdWlsZGVyID0gKCk9PiBuZXcgSHR0cFJlc3BvbnNlTW9ja0J1aWxkZXIoKTsiXX0=
@@ -0,0 +1,3 @@
1
+ export * from './http-mock-response.builder';
2
+ export * from './http-headers-mock.builder';
3
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9hbmd1bGFyLXRvb2xib3gvc3JjL2xpYi9mcmFtZXdvcmsvbW9jay9odHRwL3V0aWwvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsY0FBYyw4QkFBOEIsQ0FBQztBQUM3QyxjQUFjLDZCQUE2QixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSAnLi9odHRwLW1vY2stcmVzcG9uc2UuYnVpbGRlcic7XHJcbmV4cG9ydCAqIGZyb20gJy4vaHR0cC1oZWFkZXJzLW1vY2suYnVpbGRlcic7Il19
@@ -0,0 +1,316 @@
1
+ /**
2
+ * @license
3
+ * Copyright Pascal ECHEMANN. All Rights Reserved.
4
+ *
5
+ * Use of this source code is governed by an MIT-style license that can be found in
6
+ * the LICENSE file at https://pascalechemann.com/angular-toolbox/resources/license
7
+ */
8
+ import { HttpHeaders, HttpRequest, HttpStatusCode } from "@angular/common/http";
9
+ import { ProgressEventMock } from "../event/progress-event-mock";
10
+ import { EMPTY_STRING } from "../../../../util";
11
+ import { XhrBase } from "./xhr-base";
12
+ import { HttpHeadersUtil } from "../util/http-headers.util";
13
+ import { Observable, of } from "rxjs";
14
+ import { DataStorageBuilder } from "../util/data-storage.builder";
15
+ /**
16
+ * @private
17
+ * The maximum value for a delayed HTTP response.
18
+ */
19
+ const MAX_TIMER = 10000;
20
+ /**
21
+ * @private
22
+ * Intenal "onreadystatechange" event.
23
+ */
24
+ const READY_STATE_CHANGE_EVENT = new Event("onreadystatechange");
25
+ /**
26
+ * @private
27
+ */
28
+ const EVT_PROPS_CONFIG = { writable: false, value: this };
29
+ /**
30
+ * @private
31
+ * A utility class used as delegate of `XMLHttpRequest` functionalities when
32
+ * a HTTP request is intercepted by the Mocking Framework .
33
+ */
34
+ export class DelegateXhr extends XhrBase {
35
+ /**
36
+ * Returns the response body content.
37
+ *
38
+ * @see https://developer.mozilla.org/docs/Web/API/XMLHttpRequest/response
39
+ */
40
+ get response() {
41
+ return this._dataStorage?.data || null;
42
+ }
43
+ /**
44
+ * Returns the numerical HTTP status code of the `XMLHttpRequest` response.
45
+ *
46
+ * @see https://developer.mozilla.org/docs/Web/API/XMLHttpRequest/status
47
+ */
48
+ get status() {
49
+ return this._status;
50
+ }
51
+ /**
52
+ * Returns a string containing the response status message as returned by the HTTP server.
53
+ *
54
+ * @see https://developer.mozilla.org/docs/Web/API/XMLHttpRequest/statusText
55
+ */
56
+ get statusText() {
57
+ return this._statusText;
58
+ }
59
+ /**
60
+ * Returns the state the `XMLHttpRequest` client is in.
61
+ *
62
+ * @see https://developer.mozilla.org/docs/Web/API/XMLHttpRequest/readyState
63
+ */
64
+ get readyState() {
65
+ return this._readyState;
66
+ }
67
+ /**
68
+ * Returns the serialized URL of the response or the empty string if the URL is `null`.
69
+ *
70
+ * @see https://developer.mozilla.org/docs/Web/API/XMLHttpRequest/responseURL
71
+ */
72
+ get responseURL() {
73
+ return this._url;
74
+ }
75
+ /**
76
+ * Returns the text received from a server following a request being sent.
77
+ *
78
+ * Throws an `InvalidStateError` DOMException if responseType is not the empty string or "text".
79
+ *
80
+ * @see https://developer.mozilla.org/docs/Web/API/XMLHttpRequest/responseText
81
+ */
82
+ get responseText() {
83
+ return this._dataStorage?.stringifiedData || EMPTY_STRING;
84
+ }
85
+ /**
86
+ * Returns an `XMLHttpRequestUpload` object that can be observed to monitor an upload progress.
87
+ *
88
+ * @see https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest/upload
89
+ */
90
+ get upload() {
91
+ return null;
92
+ }
93
+ /**
94
+ * @private
95
+ */
96
+ open(method, url, async, username, password) {
97
+ this._method = method;
98
+ this._url = url;
99
+ this.setReadyState(this.OPENED);
100
+ }
101
+ /**
102
+ * Aborts the request if it has already been sent. When a request is aborted, its `readyState`
103
+ * is changed to `XMLHttpRequest.UNSENT` and the request status code is set to `0`.
104
+ */
105
+ abort() {
106
+ this._readyState = this.UNSENT;
107
+ this._status = 0;
108
+ this.eventDispatch("abort");
109
+ }
110
+ /**
111
+ * Returns all the response headers, separated by CRLF, as a string, or returns `null`
112
+ * if no response has been received.
113
+ *
114
+ * @returns All the response headers, separated by CRLF, as a string, or returns `null`
115
+ * if no response has been received.
116
+ */
117
+ getAllResponseHeaders() {
118
+ return this._dataStorage ? HttpHeadersUtil.stringify(this._headers) : EMPTY_STRING;
119
+ }
120
+ /**
121
+ * Sends the request to the server.
122
+ *
123
+ * @param body A body of data to be sent in the XHR request.
124
+ */
125
+ send(body) {
126
+ const request = new HttpRequest(this._method, this._url, body);
127
+ const rc = this._routeConfig;
128
+ const httpResponseMock = rc.methodConfig.data(request, rc.parameters);
129
+ let timer = httpResponseMock.delay || 0;
130
+ if (timer > MAX_TIMER)
131
+ timer = MAX_TIMER;
132
+ this._loadSubscription = this.loadData(httpResponseMock).subscribe((data) => {
133
+ this._dataStorage = DataStorageBuilder.buildDataStorage(httpResponseMock, data);
134
+ const error = this._dataStorage.httpResponse.error;
135
+ setTimeout(() => {
136
+ this.setReadyState(this.HEADERS_RECEIVED);
137
+ if (error)
138
+ return this.onError(error);
139
+ this.setReadyState(this.LOADING);
140
+ const response = this._dataStorage.httpResponse;
141
+ let headers = response.headers;
142
+ if (headers) {
143
+ this._headers.keys().forEach((key) => {
144
+ headers = headers.set(key, this._headers.get(key));
145
+ });
146
+ this._headers = headers;
147
+ }
148
+ if (!this._progressiveDownload) {
149
+ this._statusText = response.statusText || EMPTY_STRING;
150
+ this._status = response.status || 0;
151
+ return this.onLoadComplete();
152
+ }
153
+ this.doProgressiveDownload();
154
+ }, timer);
155
+ });
156
+ }
157
+ /**
158
+ * Sets the value of an HTTP request header.
159
+ *
160
+ * @param name The name of the header whose value is to be set.
161
+ * @param value The value to set as the body of the header.
162
+ */
163
+ setRequestHeader(name, value) {
164
+ this._headers = this._headers.set(name, value);
165
+ }
166
+ /**
167
+ * @private
168
+ */
169
+ constructor(routeConfig) {
170
+ super();
171
+ /**
172
+ * @private
173
+ * Indicates whether the progressive download is activated, or not.
174
+ */
175
+ this._progressiveDownload = false;
176
+ /**
177
+ * @private
178
+ *
179
+ * Internal storage for HTTP response `data`.
180
+ */
181
+ this._dataStorage = null;
182
+ /**
183
+ * @private
184
+ *
185
+ * Internal storage for the HTTP request `readyState`.
186
+ */
187
+ this._readyState = this.UNSENT;
188
+ /**
189
+ * @private
190
+ *
191
+ * Internal storage for the HTTP request `headers`.
192
+ */
193
+ this._headers = null;
194
+ /**
195
+ * @private
196
+ *
197
+ * Internal storage for the HTTP request `status`.
198
+ */
199
+ this._status = 0;
200
+ /**
201
+ * @private
202
+ *
203
+ * Internal storage for the HTTP request `statusText`.
204
+ */
205
+ this._statusText = EMPTY_STRING;
206
+ /**
207
+ * @private
208
+ */
209
+ this._loadSubscription = null;
210
+ /**
211
+ * Returns an an enumerated string value specifying the type of data contained in the response.
212
+ *
213
+ * @see https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest/responseType
214
+ */
215
+ this.responseType = "";
216
+ const methodConfig = routeConfig.methodConfig;
217
+ this._routeConfig = routeConfig;
218
+ this._progressiveDownload = methodConfig.progressive || false;
219
+ this.responseType = methodConfig.responseType || "";
220
+ this._headers = new HttpHeaders();
221
+ }
222
+ /**
223
+ * @private
224
+ * Internally used by the framework to delete a `DelegateXhr` instance.
225
+ */
226
+ destroy() {
227
+ this._routeConfig = null;
228
+ this._headers = null;
229
+ this._dataStorage = null;
230
+ if (this._loadSubscription) {
231
+ this._loadSubscription.unsubscribe();
232
+ this._loadSubscription = null;
233
+ }
234
+ }
235
+ /**
236
+ * @private
237
+ */
238
+ doProgressiveDownload() {
239
+ const total = this._dataStorage.total;
240
+ if (total <= 200) {
241
+ console.warn("[Angular Toolbox]: Body content is too small for emulating progressive download! Minimum size is 200 octets.");
242
+ return this.onLoadComplete();
243
+ }
244
+ // TODO: ameliorate the following process:
245
+ const self = this;
246
+ const chunckSize = Math.floor(total / 10);
247
+ let cursor = 0;
248
+ this._statusText = "Partial Content";
249
+ this._status = HttpStatusCode.PartialContent;
250
+ const idx = setInterval(() => {
251
+ cursor += chunckSize;
252
+ if (cursor > total) {
253
+ cursor = total;
254
+ clearInterval(idx);
255
+ self.onLoadComplete();
256
+ }
257
+ else {
258
+ this._dataStorage.loaded = cursor;
259
+ self.dispatchProgressEvent();
260
+ }
261
+ }, 100);
262
+ }
263
+ /**
264
+ * @private
265
+ */
266
+ onLoadComplete() {
267
+ this._dataStorage.loaded = this._dataStorage.total;
268
+ this.setReadyState(this.DONE);
269
+ this.dispatchProgressEvent("load");
270
+ }
271
+ /**
272
+ * @private
273
+ */
274
+ onError(error) {
275
+ this._status = error.status;
276
+ this._statusText = error.statusText;
277
+ this.setReadyState(this.DONE);
278
+ this.dispatchProgressEvent("error");
279
+ }
280
+ /**
281
+ * @private
282
+ */
283
+ eventDispatch(type) {
284
+ const event = new Event(type);
285
+ Object.defineProperty(event, 'target', EVT_PROPS_CONFIG);
286
+ Object.defineProperty(event, 'currentTarget', EVT_PROPS_CONFIG);
287
+ this.dispatchEvent(event);
288
+ }
289
+ /**
290
+ * @private
291
+ */
292
+ dispatchProgressEvent(type = "progress") {
293
+ const d = this._dataStorage;
294
+ const event = new ProgressEventMock(type);
295
+ event.loaded = d.loaded;
296
+ event.total = d.total;
297
+ this.dispatchEvent(event);
298
+ }
299
+ /**
300
+ * @private
301
+ */
302
+ setReadyState(state) {
303
+ this._readyState = state;
304
+ const event = this.onreadystatechange;
305
+ if (event)
306
+ event.call(this, READY_STATE_CHANGE_EVENT);
307
+ }
308
+ /**
309
+ * @private
310
+ */
311
+ loadData(httpResponseMock) {
312
+ const responseBody = httpResponseMock.body;
313
+ return (responseBody instanceof Observable) ? responseBody : of(responseBody);
314
+ }
315
+ }
316
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVsZWdhdGUteGhyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYW5ndWxhci10b29sYm94L3NyYy9saWIvZnJhbWV3b3JrL21vY2svaHR0cC94aHIvZGVsZWdhdGUteGhyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7R0FNRztBQUVILE9BQU8sRUFBRSxXQUFXLEVBQUUsV0FBVyxFQUFFLGNBQWMsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBRWhGLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBQ2pFLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUNoRCxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sWUFBWSxDQUFDO0FBQ3JDLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUU1RCxPQUFPLEVBQUUsVUFBVSxFQUFnQixFQUFFLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFFcEQsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFFbEU7OztHQUdHO0FBQ0gsTUFBTSxTQUFTLEdBQVcsS0FBSyxDQUFDO0FBRWhDOzs7R0FHRztBQUNILE1BQU0sd0JBQXdCLEdBQVUsSUFBSSxLQUFLLENBQUMsb0JBQW9CLENBQUMsQ0FBQztBQUV4RTs7R0FFRztBQUNILE1BQU0sZ0JBQWdCLEdBQVMsRUFBRSxRQUFRLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUUsQ0FBQztBQUVoRTs7OztHQUlHO0FBQ0gsTUFBTSxPQUFPLFdBQVksU0FBUSxPQUFPO0lBb0VwQzs7OztPQUlHO0lBQ0gsSUFBSSxRQUFRO1FBQ1IsT0FBTyxJQUFJLENBQUMsWUFBWSxFQUFFLElBQUksSUFBSSxJQUFJLENBQUM7SUFDM0MsQ0FBQztJQUVEOzs7O09BSUc7SUFDSCxJQUFJLE1BQU07UUFDTixPQUFP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WUFBWSxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsWUFBWSxDQUFDLENBQUM7SUFDbEYsQ0FBQztDQUNKIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXHJcbiAqIEBsaWNlbnNlXHJcbiAqIENvcHlyaWdodCBQYXNjYWwgRUNIRU1BTk4uIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXHJcbiAqXHJcbiAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlIGZvdW5kIGluXHJcbiAqIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9wYXNjYWxlY2hlbWFubi5jb20vYW5ndWxhci10b29sYm94L3Jlc291cmNlcy9saWNlbnNlXHJcbiAqL1xyXG5cclxuaW1wb3J0IHsgSHR0cEhlYWRlcnMsIEh0dHBSZXF1ZXN0LCBIdHRwU3RhdHVzQ29kZSB9IGZyb20gXCJAYW5ndWxhci9jb21tb24vaHR0cFwiO1xyXG5pbXBvcnQgeyBYaHJQcm94eSwgSHR0cFJlc3BvbnNlTW9jaywgSHR0cE1ldGhvZE1vY2ssIEh0dHBNb2NrRXJyb3IgfSBmcm9tIFwiLi4vLi4vLi4vLi4vbW9kZWxcIjtcclxuaW1wb3J0IHsgUHJvZ3Jlc3NFdmVudE1vY2sgfSBmcm9tIFwiLi4vZXZlbnQvcHJvZ3Jlc3MtZXZlbnQtbW9ja1wiO1xyXG5pbXBvcnQgeyBFTVBUWV9TVFJJTkcgfSBmcm9tIFwiLi4vLi4vLi4vLi4vdXRpbFwiO1xyXG5pbXBvcnQgeyBYaHJCYXNlIH0gZnJvbSBcIi4veGhyLWJhc2VcIjtcclxuaW1wb3J0IHsgSHR0cEhlYWRlcnNVdGlsIH0gZnJvbSBcIi4uL3V0aWwvaHR0cC1oZWFkZXJzLnV0aWxcIjtcclxuaW1wb3J0IHsgUm91dGVNb2NrQ29uZmlnIH0gZnJvbSBcIi4uL2NvbmZpZy9yb3V0ZS1tb2NrLWNvbmZpZ1wiO1xyXG5pbXBvcnQgeyBPYnNlcnZhYmxlLCBTdWJzY3JpcHRpb24sIG9mIH0gZnJvbSBcInJ4anNcIjtcclxuaW1wb3J0IHsgRGF0YVN0b3JhZ2UgfSBmcm9tIFwiLi4vY29yZS9kYXRhLXN0b3JhZ2VcIjtcclxuaW1wb3J0IHsgRGF0YVN0b3JhZ2VCdWlsZGVyIH0gZnJvbSBcIi4uL3V0aWwvZGF0YS1zdG9yYWdlLmJ1aWxkZXJcIjtcclxuXHJcbi8qKlxyXG4gKiBAcHJpdmF0ZVxyXG4gKiBUaGUgbWF4aW11bSB2YWx1ZSBmb3IgYSBkZWxheWVkIEhUVFAgcmVzcG9uc2UuXHJcbiAqL1xyXG5jb25zdCBNQVhfVElNRVI6IG51bWJlciA9IDEwMDAwO1xyXG5cclxuLyoqXHJcbiAqIEBwcml2YXRlXHJcbiAqIEludGVuYWwgXCJvbnJlYWR5c3RhdGVjaGFuZ2VcIiBldmVudC5cclxuICovXHJcbmNvbnN0IFJFQURZX1NUQVRFX0NIQU5HRV9FVkVOVDogRXZlbnQgPSBuZXcgRXZlbnQoXCJvbnJlYWR5c3RhdGVjaGFuZ2VcIik7XHJcblxyXG4vKipcclxuICogQHByaXZhdGVcclxuICovXHJcbmNvbnN0IEVWVF9QUk9QU19DT05GSUc6IGFueSA9ICB7IHdyaXRhYmxlOiBmYWxzZSwgdmFsdWU6IHRoaXMgfTtcclxuXHJcbi8qKlxyXG4gKiBAcHJpdmF0ZVxyXG4gKiBBIHV0aWxpdHkgY2xhc3MgdXNlZCBhcyBkZWxlZ2F0ZSBvZiBgWE1MSHR0cFJlcXVlc3RgIGZ1bmN0aW9uYWxpdGllcyB3aGVuXHJcbiAqIGEgSFRUUCByZXF1ZXN0IGlzIGludGVyY2VwdGVkIGJ5IHRoZSBNb2NraW5nIEZyYW1ld29yayAuXHJcbiAqL1xyXG5leHBvcnQgY2xhc3MgRGVsZWdhdGVYaHIgZXh0ZW5kcyBYaHJCYXNlIGltcGxlbWVudHMgWGhyUHJveHkge1xyXG4gICAgXHJcbiAgICAvKipcclxuICAgICAqIEBwcml2YXRlXHJcbiAgICAgKiBJbmRpY2F0ZXMgd2hldGhlciB0aGUgcHJvZ3Jlc3NpdmUgZG93bmxvYWQgaXMgYWN0aXZhdGVkLCBvciBub3QuXHJcbiAgICAgKi9cclxuICAgIHByaXZhdGUgX3Byb2dyZXNzaXZlRG93bmxvYWQ6IGJvb2xlYW4gPSBmYWxzZTtcclxuXHJcbiAgICAvKipcclxuICAgICAqIEBwcml2YXRlXHJcbiAgICAgKiBUaGUgY29uZmlnIGZvciB0aGUgaW50ZXJjZXB0ZWQgcm91dGUuXHJcbiAgICAgKi9cclxuICAgIHByaXZhdGUgX3JvdXRlQ29uZmlnOiBSb3V0ZU1vY2tDb25maWc7XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBAcHJpdmF0ZVxyXG4gICAgICogXHJcbiAgICAgKiBJbnRlcm5hbCBzdG9yYWdlIGZvciBIVFRQIHJlc3BvbnNlIGBkYXRhYC5cclxuICAgICAqL1xyXG4gICAgcHJpdmF0ZSBfZGF0YVN0b3JhZ2U6IERhdGFTdG9yYWdlID0gbnVsbCBhcyBhbnk7IFxyXG5cclxuICAgIC8qKlxyXG4gICAgICogQHByaXZhdGVcclxuICAgICAqIFxyXG4gICAgICogSW50ZXJuYWwgc3RvcmFnZSBmb3IgdGhlIEhUVFAgcmVxdWVzdCBgbWV0aG9kYC5cclxuICAgICAqL1xyXG4gICAgcHJpdmF0ZSBfbWV0aG9kOiB1bmtub3duOyBcclxuXHJcbiAgICAvKipcclxuICAgICAqIEBwcml2YXRlXHJcbiAgICAgKiBcclxuICAgICAqIEludGVybmFsIHN0b3JhZ2UgZm9yIHRoZSBIVFRQIHJlcXVlc3QgVVJMLlxyXG4gICAgICovXHJcbiAgICBwcml2YXRlIF91cmw6IHVua25vd247IFxyXG5cclxuICAgIC8qKlxyXG4gICAgICogQHByaXZhdGVcclxuICAgICAqIFxyXG4gICAgICogSW50ZXJuYWwgc3RvcmFnZSBmb3IgdGhlIEhUVFAgcmVxdWVzdCBgcmVhZHlTdGF0ZWAuXHJcbiAgICAgKi9cclxuICAgIHByaXZhdGUgX3JlYWR5U3RhdGU6IG51bWJlciA9IHRoaXMuVU5TRU5UO1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogQHByaXZhdGVcclxuICAgICAqIFxyXG4gICAgICogSW50ZXJuYWwgc3RvcmFnZSBmb3IgdGhlIEhUVFAgcmVxdWVzdCBgaGVhZGVyc2AuXHJcbiAgICAgKi9cclxuICAgIHByaXZhdGUgX2hlYWRlcnM6IEh0dHBIZWFkZXJzID0gbnVsbCBhcyBhbnk7XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBAcHJpdmF0ZVxyXG4gICAgICogXHJcbiAgICAgKiBJbnRlcm5hbCBzdG9yYWdlIGZvciB0aGUgSFRUUCByZXF1ZXN0IGBzdGF0dXNgLlxyXG4gICAgICovXHJcbiAgICBwcml2YXRlIF9zdGF0dXM6IG51bWJlciA9IDA7XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBAcHJpdmF0ZVxyXG4gICAgICogXHJcbiAgICAgKiBJbnRlcm5hbCBzdG9yYWdlIGZvciB0aGUgSFRUUCByZXF1ZXN0IGBzdGF0dXNUZXh0YC5cclxuICAgICAqL1xyXG4gICAgcHJpdmF0ZSBfc3RhdHVzVGV4dDogc3RyaW5nID0gRU1QVFlfU1RSSU5HO1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogQHByaXZhdGVcclxuICAgICAqL1xyXG4gICAgcHJpdmF0ZSBfbG9hZFN1YnNjcmlwdGlvbjogU3Vic2NyaXB0aW9uIHwgbnVsbCA9IG51bGw7XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBSZXR1cm5zIHRoZSByZXNwb25zZSBib2R5IGNvbnRlbnQuXHJcbiAgICAgKlxyXG4gICAgICogQHNlZSBodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9BUEkvWE1MSHR0cFJlcXVlc3QvcmVzcG9uc2VcclxuICAgICAqL1xyXG4gICAgZ2V0IHJlc3BvbnNlKCk6IGFueSB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuX2RhdGFTdG9yYWdlPy5kYXRhIHx8IG51bGw7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBSZXR1cm5zIHRoZSBudW1lcmljYWwgSFRUUCBzdGF0dXMgY29kZSBvZiB0aGUgYFhNTEh0dHBSZXF1ZXN0YCByZXNwb25zZS5cclxuICAgICAqXHJcbiAgICAgKiBAc2VlIGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0FQSS9YTUxIdHRwUmVxdWVzdC9zdGF0dXNcclxuICAgICAqL1xyXG4gICAgZ2V0IHN0YXR1cygpOiBudW1iZXIge1xyXG4gICAgICAgIHJldHVybiB0aGlzLl9zdGF0dXM7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBSZXR1cm5zIGEgc3RyaW5nIGNvbnRhaW5pbmcgdGhlIHJlc3BvbnNlIHN0YXR1cyBtZXNzYWdlIGFzIHJldHVybmVkIGJ5IHRoZSBIVFRQIHNlcnZlci5cclxuICAgICAqXHJcbiAgICAgKiBAc2VlIGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0FQSS9YTUxIdHRwUmVxdWVzdC9zdGF0dXNUZXh0XHJcbiAgICAgKi9cclxuICAgIGdldCBzdGF0dXNUZXh0KCk6IHN0cmluZyB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuX3N0YXR1c1RleHQ7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBSZXR1cm5zIHRoZSBzdGF0ZSB0aGUgYFhNTEh0dHBSZXF1ZXN0YCBjbGllbnQgaXMgaW4uXHJcbiAgICAgKlxyXG4gICAgICogQHNlZSBodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9BUEkvWE1MSHR0cFJlcXVlc3QvcmVhZHlTdGF0ZVxyXG4gICAgICovXHJcbiAgICBnZXQgcmVhZHlTdGF0ZSgpOiBudW1iZXIge1xyXG4gICAgICAgIHJldHVybiB0aGlzLl9yZWFkeVN0YXRlO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogUmV0dXJucyB0aGUgc2VyaWFsaXplZCBVUkwgb2YgdGhlIHJlc3BvbnNlIG9yIHRoZSBlbXB0eSBzdHJpbmcgaWYgdGhlIFVSTCBpcyBgbnVsbGAuIFxyXG4gICAgICpcclxuICAgICAqIEBzZWUgaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvQVBJL1hNTEh0dHBSZXF1ZXN0L3Jlc3BvbnNlVVJMXHJcbiAgICAgKi9cclxuICAgIGdldCByZXNwb25zZVVSTCgpOiBzdHJpbmcge1xyXG4gICAgICAgIHJldHVybiB0aGlzLl91cmwgYXMgc3RyaW5nO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogUmV0dXJucyB0aGUgdGV4dCByZWNlaXZlZCBmcm9tIGEgc2VydmVyIGZvbGxvd2luZyBhIHJlcXVlc3QgYmVpbmcgc2VudC5cclxuICAgICAqXHJcbiAgICAgKiBUaHJvd3MgYW4gYEludmFsaWRTdGF0ZUVycm9yYCBET01FeGNlcHRpb24gaWYgcmVzcG9uc2VUeXBlIGlzIG5vdCB0aGUgZW1wdHkgc3RyaW5nIG9yIFwidGV4dFwiLlxyXG4gICAgICpcclxuICAgICAqIEBzZWUgaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvQVBJL1hNTEh0dHBSZXF1ZXN0L3Jlc3BvbnNlVGV4dFxyXG4gICAgICovXHJcbiAgICBnZXQgcmVzcG9uc2VUZXh0KCk6IHN0cmluZyB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuX2RhdGFTdG9yYWdlPy5zdHJpbmdpZmllZERhdGEgfHwgRU1QVFlfU1RSSU5HO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogIFJldHVybnMgYW4gYFhNTEh0dHBSZXF1ZXN0VXBsb2FkYCBvYmplY3QgdGhhdCBjYW4gYmUgb2JzZXJ2ZWQgdG8gbW9uaXRvciBhbiB1cGxvYWQgcHJvZ3Jlc3MuIFxyXG4gICAgICpcclxuICAgICAqIEBzZWUgaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvQVBJL1hNTEh0dHBSZXF1ZXN0L3VwbG9hZFxyXG4gICAgICovXHJcbiAgICBnZXQgdXBsb2FkKCk6IFhNTEh0dHBSZXF1ZXN0VXBsb2FkIHtcclxuICAgICAgICByZXR1cm4gbnVsbCBhcyBhbnk7XHJcbiAgICB9XHJcbiAgICBcclxuICAgIC8qKlxyXG4gICAgICogIFJldHVybnMgYW4gYW4gZW51bWVyYXRlZCBzdHJpbmcgdmFsdWUgc3BlY2lmeWluZyB0aGUgdHlwZSBvZiBkYXRhIGNvbnRhaW5lZCBpbiB0aGUgcmVzcG9uc2UuIFxyXG4gICAgICpcclxuICAgICAqIEBzZWUgaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvQVBJL1hNTEh0dHBSZXF1ZXN0L3Jlc3BvbnNlVHlwZVxyXG4gICAgICovXHJcbiAgICByZXNwb25zZVR5cGU6IFhNTEh0dHBSZXF1ZXN0UmVzcG9uc2VUeXBlID0gXCJcIjtcclxuXHJcbiAgICAvKipcclxuICAgICAqIEluaXRpYWxpemVzIGEgbmV3bHktY3JlYXRlZCByZXF1ZXN0LCBvciByZS1pbml0aWFsaXplcyBhbiBleGlzdGluZyBvbmUuXHJcbiAgICAgKiBcclxuICAgICAqIEBwYXJhbSBtZXRob2QgVGhlIEhUVFAgcmVxdWVzdCBtZXRob2QgdG8gdXNlLCBzdWNoIGFzIGBcIkdFVFwiYCwgYFwiUE9TVFwiYCwgYFwiUFVUXCJgLCBgXCJERUxFVEVcImAsXHJcbiAgICAgKiAgICAgICAgICAgICAgIGV0Yy4gSWdub3JlZCBmb3Igbm9uLUhUVFAoUykgVVJMcy5cclxuICAgICAqIEBwYXJhbSB1cmwgQSBzdHJpbmcgb3IgYW55IG90aGVyIG9iamVjdCB3aXRoIGEgc3RyaW5naWZpZXIg4oCUIGluY2x1ZGluZyBhIFVSTCBvYmplY3Qg4oCUXHJcbiAgICAgKiAgICAgICAgICAgIHRoYXQgcHJvdmlkZXMgdGhlIFVSTCBvZiB0aGUgcmVzb3VyY2UgdG8gc2VuZCB0aGUgcmVxdWVzdCB0by5cclxuICAgICAqL1xyXG4gICAgb3BlbihtZXRob2Q6IHN0cmluZywgdXJsOiBzdHJpbmcgfCBVUkwpOiB2b2lkO1xyXG4gICAgLyoqXHJcbiAgICAgKiBAcHJpdmF0ZVxyXG4gICAgICovXHJcbiAgICBvcGVuKG1ldGhvZDogc3RyaW5nLCB1cmw6IHN0cmluZyB8IFVSTCwgYXN5bmM6IGJvb2xlYW4sIHVzZXJuYW1lPzogc3RyaW5nIHwgbnVsbCB8IHVuZGVmaW5lZCwgcGFzc3dvcmQ/OiBzdHJpbmcgfCBudWxsIHwgdW5kZWZpbmVkKTogdm9pZDtcclxuICAgIC8qKlxyXG4gICAgICogQHByaXZhdGVcclxuICAgICAqL1xyXG4gICAgb3BlbihtZXRob2Q6IHVua25vd24sIHVybDogdW5rbm93biwgYXN5bmM/OiB1bmtub3duLCB1c2VybmFtZT86IHVua25vd24sIHBhc3N3b3JkPzogdW5rbm93bik6IHZvaWQge1xyXG4gICAgICAgIHRoaXMuX21ldGhvZCA9IG1ldGhvZDtcclxuICAgICAgICB0aGlzLl91cmwgPSB1cmw7XHJcbiAgICAgICAgdGhpcy5zZXRSZWFkeVN0YXRlKHRoaXMuT1BFTkVEKTtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIEFib3J0cyB0aGUgcmVxdWVzdCBpZiBpdCBoYXMgYWxyZWFkeSBiZWVuIHNlbnQuIFdoZW4gYSByZXF1ZXN0IGlzIGFib3J0ZWQsIGl0cyBgcmVhZHlTdGF0ZWBcclxuICAgICAqIGlzIGNoYW5nZWQgdG8gYFhNTEh0dHBSZXF1ZXN0LlVOU0VOVGAgYW5kIHRoZSByZXF1ZXN0IHN0YXR1cyBjb2RlIGlzIHNldCB0byBgMGAuXHJcbiAgICAgKi9cclxuICAgIGFib3J0KCk6IHZvaWQge1xyXG4gICAgICAgIHRoaXMuX3JlYWR5U3RhdGUgPSB0aGlzLlVOU0VOVDtcclxuICAgICAgICB0aGlzLl9zdGF0dXMgPSAwO1xyXG4gICAgICAgIHRoaXMuZXZlbnREaXNwYXRjaChcImFib3J0XCIpO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogUmV0dXJucyBhbGwgdGhlIHJlc3BvbnNlIGhlYWRlcnMsIHNlcGFyYXRlZCBieSBDUkxGLCBhcyBhIHN0cmluZywgb3IgcmV0dXJucyBgbnVsbGBcclxuICAgICAqIGlmIG5vIHJlc3BvbnNlIGhhcyBiZWVuIHJlY2VpdmVkLlxyXG4gICAgICogXHJcbiAgICAgKiBAcmV0dXJucyBBbGwgdGhlIHJlc3BvbnNlIGhlYWRlcnMsIHNlcGFyYXRlZCBieSBDUkxGLCBhcyBhIHN0cmluZywgb3IgcmV0dXJucyBgbnVsbGBcclxuICAgICAqICAgICAgICAgIGlmIG5vIHJlc3BvbnNlIGhhcyBiZWVuIHJlY2VpdmVkLlxyXG4gICAgICovXHJcbiAgICBnZXRBbGxSZXNwb25zZUhlYWRlcnMoKTogc3RyaW5nIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5fZGF0YVN0b3JhZ2UgPyBIdHRwSGVhZGVyc1V0aWwuc3RyaW5naWZ5KHRoaXMuX2hlYWRlcnMpIDogRU1QVFlfU1RSSU5HO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogU2VuZHMgdGhlIHJlcXVlc3QgdG8gdGhlIHNlcnZlci5cclxuICAgICAqIFxyXG4gICAgICogQHBhcmFtIGJvZHkgQSBib2R5IG9mIGRhdGEgdG8gYmUgc2VudCBpbiB0aGUgWEhSIHJlcXVlc3QuXHJcbiAgICAgKi9cclxuICAgIHNlbmQoYm9keT86IERvY3VtZW50IHwgWE1MSHR0cFJlcXVlc3RCb2R5SW5pdCB8IG51bGwgfCB1bmRlZmluZWQpOiB2b2lkIHtcclxuICAgICAgICBjb25zdCByZXF1ZXN0OiBIdHRwUmVxdWVzdDxhbnk+ID0gbmV3IEh0dHBSZXF1ZXN0PGFueT4odGhpcy5fbWV0aG9kIGFzIHN0cmluZywgdGhpcy5fdXJsIGFzIGFueSwgYm9keSk7XHJcbiAgICAgICAgY29uc3QgcmM6IFJvdXRlTW9ja0NvbmZpZyA9IHRoaXMuX3JvdXRlQ29uZmlnO1xyXG4gICAgICAgIGNvbnN0IGh0dHBSZXNwb25zZU1vY2s6IEh0dHBSZXNwb25zZU1vY2sgPSAocmMubWV0aG9kQ29uZmlnIGFzIGFueSkuZGF0YShyZXF1ZXN0LCByYy5wYXJhbWV0ZXJzKTtcclxuICAgICAgICBsZXQgdGltZXI6IG51bWJlciA9IGh0dHBSZXNwb25zZU1vY2suZGVsYXkgfHwgMDtcclxuICAgICAgICBpZiAodGltZXIgPiBNQVhfVElNRVIpIHRpbWVyID0gTUFYX1RJTUVSO1xyXG4gICAgICAgIHRoaXMuX2xvYWRTdWJzY3JpcHRpb24gPSB0aGlzLmxvYWREYXRhKGh0dHBSZXNwb25zZU1vY2spLnN1YnNjcmliZSgoZGF0YTogYW55KSA9PiB7XHJcbiAgICAgICAgICAgIHRoaXMuX2RhdGFTdG9yYWdlID0gRGF0YVN0b3JhZ2VCdWlsZGVyLmJ1aWxkRGF0YVN0b3JhZ2UoaHR0cFJlc3BvbnNlTW9jaywgZGF0YSk7XHJcbiAgICAgICAgICAgIGNvbnN0IGVycm9yOiBIdHRwTW9ja0Vycm9yIHwgbnVsbCA9IHRoaXMuX2RhdGFTdG9yYWdlLmh0dHBSZXNwb25zZS5lcnJvcjtcclxuICAgICAgICAgICAgc2V0VGltZW91dCgoKT0+IHtcclxuICAgICAgICAgICAgICAgIHRoaXMuc2V0UmVhZHlTdGF0ZSh0aGlzLkhFQURFUlNfUkVDRUlWRUQpO1xyXG4gICAgICAgICAgICAgICAgaWYgKGVycm9yKSByZXR1cm4gdGhpcy5vbkVycm9yKGVycm9yKTtcclxuICAgICAgICAgICAgICAgIHRoaXMuc2V0UmVhZHlTdGF0ZSh0aGlzLkxPQURJTkcpO1xyXG4gICAgICAgICAgICAgICAgY29uc3QgcmVzcG9uc2U6IEh0dHBSZXNwb25zZU1vY2sgPSB0aGlzLl9kYXRhU3RvcmFnZS5odHRwUmVzcG9uc2U7XHJcbiAgICAgICAgICAgICAgICBsZXQgaGVhZGVyczogYW55ID0gcmVzcG9uc2UuaGVhZGVycztcclxuICAgICAgICAgICAgICAgIGlmIChoZWFkZXJzKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5faGVhZGVycy5rZXlzKCkuZm9yRWFjaCgoa2V5OiBzdHJpbmcpPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBoZWFkZXJzID0gaGVhZGVycy5zZXQoa2V5LCB0aGlzLl9oZWFkZXJzLmdldChrZXkpIGFzIGFueSlcclxuICAgICAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLl9oZWFkZXJzID0gaGVhZGVycztcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIGlmICghdGhpcy5fcHJvZ3Jlc3NpdmVEb3dubG9hZCkge1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuX3N0YXR1c1RleHQgPSByZXNwb25zZS5zdGF0dXNUZXh0IHx8IEVNUFRZX1NUUklORztcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLl9zdGF0dXMgPSByZXNwb25zZS5zdGF0dXMgfHwgMDtcclxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5vbkxvYWRDb21wbGV0ZSgpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgdGhpcy5kb1Byb2dyZXNzaXZlRG93bmxvYWQoKTtcclxuICAgICAgICAgICAgfSwgdGltZXIpO1xyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogU2V0cyB0aGUgdmFsdWUgb2YgYW4gSFRUUCByZXF1ZXN0IGhlYWRlci5cclxuICAgICAqIFxyXG4gICAgICogQHBhcmFtIG5hbWUgVGhlIG5hbWUgb2YgdGhlIGhlYWRlciB3aG9zZSB2YWx1ZSBpcyB0byBiZSBzZXQuXHJcbiAgICAgKiBAcGFyYW0gdmFsdWUgVGhlIHZhbHVlIHRvIHNldCBhcyB0aGUgYm9keSBvZiB0aGUgaGVhZGVyLlxyXG4gICAgICovXHJcbiAgICBzZXRSZXF1ZXN0SGVhZGVyKG5hbWU6IHN0cmluZywgdmFsdWU6IHN0cmluZyk6IHZvaWQge1xyXG4gICAgICAgIHRoaXMuX2hlYWRlcnMgPSB0aGlzLl9oZWFkZXJzLnNldChuYW1lLCB2YWx1ZSk7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBAcHJpdmF0ZSBcclxuICAgICAqL1xyXG4gICAgY29uc3RydWN0b3Iocm91dGVDb25maWc6IFJvdXRlTW9ja0NvbmZpZykge1xyXG4gICAgICAgIHN1cGVyKCk7XHJcbiAgICAgICAgY29uc3QgbWV0aG9kQ29uZmlnOiBIdHRwTWV0aG9kTW9jayA9IHJvdXRlQ29uZmlnLm1ldGhvZENvbmZpZztcclxuICAgICAgICB0aGlzLl9yb3V0ZUNvbmZpZyA9IHJvdXRlQ29uZmlnO1xyXG4gICAgICAgIHRoaXMuX3Byb2dyZXNzaXZlRG93bmxvYWQgPSBtZXRob2RDb25maWcucHJvZ3Jlc3NpdmUgfHwgZmFsc2U7XHJcbiAgICAgICAgdGhpcy5yZXNwb25zZVR5cGUgPSBtZXRob2RDb25maWcucmVzcG9uc2VUeXBlIHx8IFwiXCI7XHJcbiAgICAgICAgdGhpcy5faGVhZGVycyA9IG5ldyBIdHRwSGVhZGVycygpO1xyXG4gICAgfVxyXG4gICAgXHJcbiAgICAvKipcclxuICAgICAqIEBwcml2YXRlIFxyXG4gICAgICogSW50ZXJuYWxseSB1c2VkIGJ5IHRoZSBmcmFtZXdvcmsgdG8gZGVsZXRlIGEgYERlbGVnYXRlWGhyYCBpbnN0YW5jZS5cclxuICAgICAqL1xyXG4gICAgcHVibGljIGRlc3Ryb3koKTogdm9pZCB7XHJcbiAgICAgICAgdGhpcy5fcm91dGVDb25maWcgPSBudWxsIGFzIGFueTtcclxuICAgICAgICB0aGlzLl9oZWFkZXJzID0gbnVsbCBhcyBhbnk7XHJcbiAgICAgICAgdGhpcy5fZGF0YVN0b3JhZ2UgPSBudWxsIGFzIGFueTtcclxuICAgICAgICBpZiAodGhpcy5fbG9hZFN1YnNjcmlwdGlvbikge1xyXG4gICAgICAgICAgICB0aGlzLl9sb2FkU3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCk7XHJcbiAgICAgICAgICAgIHRoaXMuX2xvYWRTdWJzY3JpcHRpb24gPSBudWxsO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIEBwcml2YXRlIFxyXG4gICAgICovXHJcbiAgICBwcml2YXRlIGRvUHJvZ3Jlc3NpdmVEb3dubG9hZCgpOiB2b2lkIHtcclxuICAgICAgICBjb25zdCB0b3RhbDogbnVtYmVyID0gdGhpcy5fZGF0YVN0b3JhZ2UudG90YWw7XHJcbiAgICAgICAgaWYgKHRvdGFsIDw9IDIwMCkge1xyXG4gICAgICAgICAgICBjb25zb2xlLndhcm4oXCJbQW5ndWxhciBUb29sYm94XTogQm9keSBjb250ZW50IGlzIHRvbyBzbWFsbCBmb3IgZW11bGF0aW5nIHByb2dyZXNzaXZlIGRvd25sb2FkISBNaW5pbXVtIHNpemUgaXMgMjAwIG9jdGV0cy5cIik7XHJcbiAgICAgICAgICAgIHJldHVybiB0aGlzLm9uTG9hZENvbXBsZXRlKCk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIC8vIFRPRE86IGFtZWxpb3JhdGUgdGhlIGZvbGxvd2luZyBwcm9jZXNzOlxyXG4gICAgICAgIGNvbnN0IHNlbGY6IERlbGVnYXRlWGhyID0gdGhpcztcclxuICAgICAgICBjb25zdCBjaHVuY2tTaXplOiBudW1iZXIgPSBNYXRoLmZsb29yKHRvdGFsIC8gMTApO1xyXG4gICAgICAgIGxldCBjdXJzb3I6IG51bWJlciA9IDA7XHJcbiAgICAgICAgdGhpcy5fc3RhdHVzVGV4dCA9IFwiUGFydGlhbCBDb250ZW50XCI7XHJcbiAgICAgICAgdGhpcy5fc3RhdHVzID0gSHR0cFN0YXR1c0NvZGUuUGFydGlhbENvbnRlbnQ7XHJcbiAgICAgICAgY29uc3QgaWR4ID0gc2V0SW50ZXJ2YWwoKCk9PiB7XHJcbiAgICAgICAgICAgIGN1cnNvciArPSBjaHVuY2tTaXplO1xyXG4gICAgICAgICAgICBpZiAoY3Vyc29yID4gdG90YWwpIHtcclxuICAgICAgICAgICAgICAgIGN1cnNvciA9IHRvdGFsO1xyXG4gICAgICAgICAgICAgICAgY2xlYXJJbnRlcnZhbChpZHgpO1xyXG4gICAgICAgICAgICAgICAgc2VsZi5vbkxvYWRDb21wbGV0ZSgpO1xyXG4gICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5fZGF0YVN0b3JhZ2UubG9hZGVkID0gY3Vyc29yO1xyXG4gICAgICAgICAgICAgICAgc2VsZi5kaXNwYXRjaFByb2dyZXNzRXZlbnQoKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH0sIDEwMCk7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBAcHJpdmF0ZVxyXG4gICAgICovXHJcbiAgICBwcml2YXRlIG9uTG9hZENvbXBsZXRlKCk6IHZvaWQge1xyXG4gICAgICAgIHRoaXMuX2RhdGFTdG9yYWdlLmxvYWRlZCA9IHRoaXMuX2RhdGFTdG9yYWdlLnRvdGFsO1xyXG4gICAgICAgIHRoaXMuc2V0UmVhZHlTdGF0ZSh0aGlzLkRPTkUpO1xyXG4gICAgICAgIHRoaXMuZGlzcGF0Y2hQcm9ncmVzc0V2ZW50KFwibG9hZFwiKTtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIEBwcml2YXRlXHJcbiAgICAgKi9cclxuICAgIHByaXZhdGUgb25FcnJvcihlcnJvcjogSHR0cE1vY2tFcnJvcik6IHZvaWQge1xyXG4gICAgICAgIHRoaXMuX3N0YXR1cyA9IGVycm9yLnN0YXR1cztcclxuICAgICAgICB0aGlzLl9zdGF0dXNUZXh0ID0gZXJyb3Iuc3RhdHVzVGV4dDtcclxuICAgICAgICB0aGlzLnNldFJlYWR5U3RhdGUodGhpcy5ET05FKTtcclxuICAgICAgICB0aGlzLmRpc3BhdGNoUHJvZ3Jlc3NFdmVudChcImVycm9yXCIpO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogQHByaXZhdGVcclxuICAgICAqL1xyXG4gICAgcHJpdmF0ZSBldmVudERpc3BhdGNoKHR5cGU6IHN0cmluZyk6IHZvaWQge1xyXG4gICAgICAgIGNvbnN0IGV2ZW50OiBFdmVudCA9IG5ldyBFdmVudCh0eXBlKTtcclxuICAgICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoZXZlbnQsICd0YXJnZXQnLCBFVlRfUFJPUFNfQ09ORklHKTtcclxuICAgICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoZXZlbnQsICdjdXJyZW50VGFyZ2V0JywgRVZUX1BST1BTX0NPTkZJRyk7XHJcbiAgICAgICAgdGhpcy5kaXNwYXRjaEV2ZW50KGV2ZW50KTtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIEBwcml2YXRlIFxyXG4gICAgICovXHJcbiAgICBwcml2YXRlIGRpc3BhdGNoUHJvZ3Jlc3NFdmVudCh0eXBlOiBzdHJpbmcgPSBcInByb2dyZXNzXCIpOiB2b2lkIHtcclxuICAgICAgICBjb25zdCBkOiBhbnkgPSB0aGlzLl9kYXRhU3RvcmFnZTtcclxuICAgICAgICBjb25zdCBldmVudDogUHJvZ3Jlc3NFdmVudE1vY2sgPSBuZXcgUHJvZ3Jlc3NFdmVudE1vY2sodHlwZSk7XHJcbiAgICAgICAgZXZlbnQubG9hZGVkID0gZC5sb2FkZWQ7XHJcbiAgICAgICAgZXZlbnQudG90YWwgPSBkLnRvdGFsO1xyXG4gICAgICAgIHRoaXMuZGlzcGF0Y2hFdmVudChldmVudCk7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBAcHJpdmF0ZSBcclxuICAgICAqL1xyXG4gICAgcHJpdmF0ZSBzZXRSZWFkeVN0YXRlKHN0YXRlOiBudW1iZXIpOiB2b2lkIHtcclxuICAgICAgICB0aGlzLl9yZWFkeVN0YXRlID0gc3RhdGU7XHJcbiAgICAgICAgY29uc3QgZXZlbnQ6IGFueSA9IHRoaXMub25yZWFkeXN0YXRlY2hhbmdlO1xyXG4gICAgICAgIGlmIChldmVudCkgZXZlbnQuY2FsbCh0aGlzLCBSRUFEWV9TVEFURV9DSEFOR0VfRVZFTlQpO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogQHByaXZhdGUgXHJcbiAgICAgKi9cclxuICAgIHByaXZhdGUgbG9hZERhdGEoaHR0cFJlc3BvbnNlTW9jazogSHR0cFJlc3BvbnNlTW9jayk6IE9ic2VydmFibGU8YW55PiB7XHJcbiAgICAgICAgY29uc3QgcmVzcG9uc2VCb2R5OiBhbnkgfCBPYnNlcnZhYmxlPGFueT4gPSBodHRwUmVzcG9uc2VNb2NrLmJvZHk7XHJcbiAgICAgICAgcmV0dXJuIChyZXNwb25zZUJvZHkgaW5zdGFuY2VvZiBPYnNlcnZhYmxlKSA/IHJlc3BvbnNlQm9keSA6IG9mKHJlc3BvbnNlQm9keSk7XHJcbiAgICB9XHJcbn0iXX0=
@@ -0,0 +1,29 @@
1
+ /**
2
+ * @license
3
+ * Copyright Pascal ECHEMANN. All Rights Reserved.
4
+ *
5
+ * Use of this source code is governed by an MIT-style license that can be found in
6
+ * the LICENSE file at https://pascalechemann.com/angular-toolbox/resources/license
7
+ */
8
+ import { XhrFactory } from "@angular/common";
9
+ import { XhrProxyImpl } from "./xhr-proxy-impl";
10
+ /**
11
+ * @private
12
+ * The concrete implementation of the `XhrFactory` interface.
13
+ */
14
+ export class XhrProxyFactoryImpl extends XhrFactory {
15
+ /**
16
+ * @private
17
+ */
18
+ constructor(_httpMockService) {
19
+ super();
20
+ this._httpMockService = _httpMockService;
21
+ }
22
+ /**
23
+ * @private
24
+ */
25
+ build() {
26
+ return new XhrProxyImpl(this._httpMockService);
27
+ }
28
+ }
29
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaHR0cC1tb2NrLWZhY3RvcnkuaW1wbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2FuZ3VsYXItdG9vbGJveC9zcmMvbGliL2ZyYW1ld29yay9tb2NrL2h0dHAveGhyL2h0dHAtbW9jay1mYWN0b3J5LmltcGwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7OztHQU1HO0FBRUgsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBRTdDLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUVoRDs7O0dBR0c7QUFDSCxNQUFNLE9BQU8sbUJBQW9CLFNBQVEsVUFBVTtJQUUvQzs7T0FFRztJQUNILFlBQW9CLGdCQUFpQztRQUNqRCxLQUFLLEVBQUUsQ0FBQztRQURRLHFCQUFnQixHQUFoQixnQkFBZ0IsQ0FBaUI7SUFFckQsQ0FBQztJQUVEOztPQUVHO0lBQ0ksS0FBSztRQUNSLE9BQU8sSUFBSSxZQUFZLENBQUMsSUFBSSxDQUFDLGdCQUFnQixDQUFDLENBQUM7SUFDbkQsQ0FBQztDQUNKIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXHJcbiAqIEBsaWNlbnNlXHJcbiAqIENvcHlyaWdodCBQYXNjYWwgRUNIRU1BTk4uIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXHJcbiAqXHJcbiAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlIGZvdW5kIGluXHJcbiAqIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9wYXNjYWxlY2hlbWFubi5jb20vYW5ndWxhci10b29sYm94L3Jlc291cmNlcy9saWNlbnNlXHJcbiAqL1xyXG5cclxuaW1wb3J0IHsgWGhyRmFjdG9yeSB9IGZyb20gXCJAYW5ndWxhci9jb21tb25cIjtcclxuaW1wb3J0IHsgSHR0cE1vY2tTZXJ2aWNlIH0gZnJvbSBcIi4uLy4uLy4uLy4uL21vZGVsL3NlcnZpY2UvbW9jay9odHRwL2h0dHAtbW9jay5zZXJ2aWNlXCI7XHJcbmltcG9ydCB7IFhoclByb3h5SW1wbCB9IGZyb20gXCIuL3hoci1wcm94eS1pbXBsXCI7XHJcblxyXG4vKipcclxuICogQHByaXZhdGVcclxuICogVGhlIGNvbmNyZXRlIGltcGxlbWVudGF0aW9uIG9mIHRoZSBgWGhyRmFjdG9yeWAgaW50ZXJmYWNlLlxyXG4gKi9cclxuZXhwb3J0IGNsYXNzIFhoclByb3h5RmFjdG9yeUltcGwgZXh0ZW5kcyBYaHJGYWN0b3J5IHtcclxuXHJcbiAgICAvKipcclxuICAgICAqIEBwcml2YXRlXHJcbiAgICAgKi9cclxuICAgIGNvbnN0cnVjdG9yKHByaXZhdGUgX2h0dHBNb2NrU2VydmljZTogSHR0cE1vY2tTZXJ2aWNlKSB7XHJcbiAgICAgICAgc3VwZXIoKTtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIEBwcml2YXRlXHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyBidWlsZCgpOiBYTUxIdHRwUmVxdWVzdCB7XHJcbiAgICAgICAgcmV0dXJuIG5ldyBYaHJQcm94eUltcGwodGhpcy5faHR0cE1vY2tTZXJ2aWNlKTtcclxuICAgIH1cclxufVxyXG4iXX0=
@@ -0,0 +1,19 @@
1
+ /**
2
+ * @license
3
+ * Copyright Pascal ECHEMANN. All Rights Reserved.
4
+ *
5
+ * Use of this source code is governed by an MIT-style license that can be found in
6
+ * the LICENSE file at https://pascalechemann.com/angular-toolbox/resources/license
7
+ */
8
+ import { inject } from "@angular/core";
9
+ import { HttpMockService } from "../../../../model/service/mock/http/http-mock.service";
10
+ import { XhrProxyFactoryImpl } from "./http-mock-factory.impl";
11
+ /**
12
+ * A factory function that creates and returns a new `XhrFactory` object.
13
+ *
14
+ * @returns A new `XhrFactory` object.
15
+ */
16
+ export const httpMockFactory = () => {
17
+ return new XhrProxyFactoryImpl(inject(HttpMockService));
18
+ };
19
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaHR0cC1tb2NrLWZhY3RvcnkuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9hbmd1bGFyLXRvb2xib3gvc3JjL2xpYi9mcmFtZXdvcmsvbW9jay9odHRwL3hoci9odHRwLW1vY2stZmFjdG9yeS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7O0dBTUc7QUFFSCxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3ZDLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSx1REFBdUQsQ0FBQztBQUN4RixPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUUvRDs7OztHQUlHO0FBQ0gsTUFBTSxDQUFDLE1BQU0sZUFBZSxHQUFHLEdBQUUsRUFBRTtJQUMvQixPQUFPLElBQUksbUJBQW1CLENBQUMsTUFBTSxDQUFDLGVBQWUsQ0FBQyxDQUFDLENBQUM7QUFDNUQsQ0FBQyxDQUFBIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXHJcbiAqIEBsaWNlbnNlXHJcbiAqIENvcHlyaWdodCBQYXNjYWwgRUNIRU1BTk4uIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXHJcbiAqXHJcbiAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlIGZvdW5kIGluXHJcbiAqIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9wYXNjYWxlY2hlbWFubi5jb20vYW5ndWxhci10b29sYm94L3Jlc291cmNlcy9saWNlbnNlXHJcbiAqL1xyXG5cclxuaW1wb3J0IHsgaW5qZWN0IH0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcclxuaW1wb3J0IHsgSHR0cE1vY2tTZXJ2aWNlIH0gZnJvbSBcIi4uLy4uLy4uLy4uL21vZGVsL3NlcnZpY2UvbW9jay9odHRwL2h0dHAtbW9jay5zZXJ2aWNlXCI7XHJcbmltcG9ydCB7IFhoclByb3h5RmFjdG9yeUltcGwgfSBmcm9tIFwiLi9odHRwLW1vY2stZmFjdG9yeS5pbXBsXCI7XHJcblxyXG4vKipcclxuICogQSBmYWN0b3J5IGZ1bmN0aW9uIHRoYXQgY3JlYXRlcyBhbmQgcmV0dXJucyBhIG5ldyBgWGhyRmFjdG9yeWAgb2JqZWN0LlxyXG4gKiBcclxuICogQHJldHVybnMgQSBuZXcgYFhockZhY3RvcnlgIG9iamVjdC5cclxuICovXHJcbmV4cG9ydCBjb25zdCBodHRwTW9ja0ZhY3RvcnkgPSAoKT0+IHtcclxuICAgIHJldHVybiBuZXcgWGhyUHJveHlGYWN0b3J5SW1wbChpbmplY3QoSHR0cE1vY2tTZXJ2aWNlKSk7XHJcbn1cclxuIl19
@@ -0,0 +1,2 @@
1
+ export * from './http-mock-factory';
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9hbmd1bGFyLXRvb2xib3gvc3JjL2xpYi9mcmFtZXdvcmsvbW9jay9odHRwL3hoci9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxjQUFjLHFCQUFxQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSAnLi9odHRwLW1vY2stZmFjdG9yeSc7Il19