angular-toolbox 1.4.5 → 1.5.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +1 -1
- package/fesm2022/angular-toolbox.mjs +447 -174
- package/fesm2022/angular-toolbox.mjs.map +1 -1
- package/lib/framework/dialog/dialog-backdrop-type.enum.d.ts +20 -0
- package/lib/framework/dialog/dialog-backdrop.type.d.ts +11 -0
- package/lib/framework/dialog/dialog-default-config.d.ts +12 -0
- package/lib/framework/dialog/dialog-outlet-event-type.d.ts +11 -0
- package/lib/framework/dialog/dialog-outlet.event.d.ts +40 -0
- package/lib/framework/dialog/dialog-service.d.ts +47 -0
- package/lib/framework/dialog/dialog-service.error.d.ts +19 -0
- package/lib/framework/dialog/dialog.config.d.ts +18 -0
- package/lib/framework/dialog/dialog.outlet.d.ts +59 -0
- package/lib/framework/dialog/index.d.ts +15 -0
- package/lib/framework/index.d.ts +1 -0
- package/package.json +1 -3
- package/esm2022/angular-toolbox.mjs +0 -5
- package/esm2022/lib/angular-toolbox.module.mjs +0 -25
- package/esm2022/lib/collection/array-list-event-type.enum.mjs +0 -30
- package/esm2022/lib/collection/array-list.event.mjs +0 -23
- package/esm2022/lib/collection/array-list.mjs +0 -158
- package/esm2022/lib/collection/index.mjs +0 -11
- package/esm2022/lib/component/angular-toolbox-logo/angular-toolbox-logo.component.mjs +0 -18
- package/esm2022/lib/component/dropdown/dropdown.component.mjs +0 -139
- package/esm2022/lib/component/index.mjs +0 -11
- package/esm2022/lib/component/layout/border-layout/border-layout.component.mjs +0 -149
- package/esm2022/lib/component/layout/border-layout/util/border-layout-bounds-manager.mjs +0 -211
- package/esm2022/lib/component/layout/border-layout/util/border-layout-renderer.mjs +0 -267
- package/esm2022/lib/component/layout/border-layout/util/resize-method.mjs +0 -9
- package/esm2022/lib/component/layout/border-layout-container/border-layout-container.component.mjs +0 -145
- package/esm2022/lib/component/layout/index.mjs +0 -3
- package/esm2022/lib/core/abstract/abstract-subscription-manager.mjs +0 -113
- package/esm2022/lib/core/abstract/abstract-version-manager.mjs +0 -37
- package/esm2022/lib/core/abstract/index.mjs +0 -3
- package/esm2022/lib/core/bridge/app-bridge.mjs +0 -76
- package/esm2022/lib/core/error/app-bridge-error.mjs +0 -24
- package/esm2022/lib/core/error/http-mock-service-error.mjs +0 -26
- package/esm2022/lib/core/error/index.mjs +0 -5
- package/esm2022/lib/core/error/integrity-error.mjs +0 -26
- package/esm2022/lib/core/error/subscription-error.mjs +0 -26
- package/esm2022/lib/core/impl/index.mjs +0 -2
- package/esm2022/lib/core/impl/lang/identifiable-component.mjs +0 -47
- package/esm2022/lib/core/impl/lang/index.mjs +0 -2
- package/esm2022/lib/core/impl/version/version.impl.mjs +0 -36
- package/esm2022/lib/core/index.mjs +0 -4
- package/esm2022/lib/directive/anchor-link.directive.mjs +0 -62
- package/esm2022/lib/directive/button-role.directive.mjs +0 -102
- package/esm2022/lib/directive/content-renderer.directive.mjs +0 -61
- package/esm2022/lib/directive/index.mjs +0 -5
- package/esm2022/lib/directive/navigate-to-url.directive.mjs +0 -51
- package/esm2022/lib/directive/navigation-directive-base.mjs +0 -23
- package/esm2022/lib/framework/index.mjs +0 -5
- package/esm2022/lib/framework/logging/connector/console-log-connector.mjs +0 -48
- package/esm2022/lib/framework/logging/connector/default-log-connector.mjs +0 -34
- package/esm2022/lib/framework/logging/connector/html-log-connector.mjs +0 -177
- package/esm2022/lib/framework/logging/connector/index.mjs +0 -4
- package/esm2022/lib/framework/logging/impl/abstract-logger.mjs +0 -100
- package/esm2022/lib/framework/logging/impl/index.mjs +0 -3
- package/esm2022/lib/framework/logging/impl/log-impl.mjs +0 -31
- package/esm2022/lib/framework/logging/index.mjs +0 -4
- package/esm2022/lib/framework/logging/util/index.mjs +0 -4
- package/esm2022/lib/framework/logging/util/log.builder.mjs +0 -28
- package/esm2022/lib/framework/logging/util/log.constant.mjs +0 -24
- package/esm2022/lib/framework/logging/util/log.util.mjs +0 -142
- package/esm2022/lib/framework/mock/documentation/component/atx-mock-description/atx-mock-description.component.mjs +0 -27
- package/esm2022/lib/framework/mock/documentation/component/atx-mock-documentation/atx-mock-documentation.component.mjs +0 -77
- package/esm2022/lib/framework/mock/documentation/component/atx-mock-full-description/atx-mock-full-description.component.mjs +0 -27
- package/esm2022/lib/framework/mock/documentation/component/atx-mock-methods/atx-mock-methods.component.mjs +0 -71
- package/esm2022/lib/framework/mock/documentation/component/atx-mock-param/atx-mock-param.component.mjs +0 -27
- package/esm2022/lib/framework/mock/documentation/index.mjs +0 -2
- package/esm2022/lib/framework/mock/documentation/model/business/full-description.type.mjs +0 -9
- package/esm2022/lib/framework/mock/documentation/model/business/method-doc-descriptor.type.mjs +0 -9
- package/esm2022/lib/framework/mock/http/config/http-mock-parameters.mjs +0 -9
- package/esm2022/lib/framework/mock/http/config/http-mock.decorator.mjs +0 -48
- package/esm2022/lib/framework/mock/http/config/index.mjs +0 -3
- package/esm2022/lib/framework/mock/http/config/route-mock-config.mjs +0 -9
- package/esm2022/lib/framework/mock/http/core/data-storage.mjs +0 -9
- package/esm2022/lib/framework/mock/http/core/response-delay.mjs +0 -9
- package/esm2022/lib/framework/mock/http/event/event-target.impl.mjs +0 -136
- package/esm2022/lib/framework/mock/http/event/progress-event-mock.mjs +0 -48
- package/esm2022/lib/framework/mock/http/index.mjs +0 -4
- package/esm2022/lib/framework/mock/http/logging/http-mock-logger.mjs +0 -15
- package/esm2022/lib/framework/mock/http/logging/http-mock-logging-metadata.builder.mjs +0 -35
- package/esm2022/lib/framework/mock/http/path-to-regexp/constants.mjs +0 -111
- package/esm2022/lib/framework/mock/http/path-to-regexp/escape-to-regexp-string.mjs +0 -34
- package/esm2022/lib/framework/mock/http/path-to-regexp/get-flags.mjs +0 -28
- package/esm2022/lib/framework/mock/http/path-to-regexp/iter.mjs +0 -76
- package/esm2022/lib/framework/mock/http/path-to-regexp/lexer.mjs +0 -96
- package/esm2022/lib/framework/mock/http/path-to-regexp/loose-replacer.mjs +0 -28
- package/esm2022/lib/framework/mock/http/path-to-regexp/model/decode-key-to-string.mjs +0 -17
- package/esm2022/lib/framework/mock/http/path-to-regexp/model/encode.mjs +0 -17
- package/esm2022/lib/framework/mock/http/path-to-regexp/model/key.mjs +0 -17
- package/esm2022/lib/framework/mock/http/path-to-regexp/model/lex-token.mjs +0 -17
- package/esm2022/lib/framework/mock/http/path-to-regexp/model/lexer-type.mjs +0 -17
- package/esm2022/lib/framework/mock/http/path-to-regexp/model/loose-replacer-provider.mjs +0 -17
- package/esm2022/lib/framework/mock/http/path-to-regexp/model/non-delimiter-encoder-provider.mjs +0 -17
- package/esm2022/lib/framework/mock/http/path-to-regexp/model/parse-options.mjs +0 -17
- package/esm2022/lib/framework/mock/http/path-to-regexp/model/path-to-regexp-options.mjs +0 -17
- package/esm2022/lib/framework/mock/http/path-to-regexp/model/route-string-tokenizer.mjs +0 -17
- package/esm2022/lib/framework/mock/http/path-to-regexp/model/simple-tokens.mjs +0 -30
- package/esm2022/lib/framework/mock/http/path-to-regexp/model/token-data-regexp-factory.mjs +0 -17
- package/esm2022/lib/framework/mock/http/path-to-regexp/model/token-type.mjs +0 -17
- package/esm2022/lib/framework/mock/http/path-to-regexp/model/token.mjs +0 -17
- package/esm2022/lib/framework/mock/http/path-to-regexp/string-to-token-data.mjs +0 -87
- package/esm2022/lib/framework/mock/http/path-to-regexp/to-key-regexp.mjs +0 -41
- package/esm2022/lib/framework/mock/http/path-to-regexp/to-stringify.mjs +0 -29
- package/esm2022/lib/framework/mock/http/path-to-regexp/token-data-to-regexp.mjs +0 -49
- package/esm2022/lib/framework/mock/http/path-to-regexp/token-data.mjs +0 -33
- package/esm2022/lib/framework/mock/http/util/data-storage.builder.mjs +0 -37
- package/esm2022/lib/framework/mock/http/util/fetch-client-response-type.enum.mjs +0 -40
- package/esm2022/lib/framework/mock/http/util/fetch-client.builder.mjs +0 -52
- package/esm2022/lib/framework/mock/http/util/http-headers-mock.builder.mjs +0 -138
- package/esm2022/lib/framework/mock/http/util/http-headers.util.mjs +0 -71
- package/esm2022/lib/framework/mock/http/util/http-method-ref.enum.mjs +0 -60
- package/esm2022/lib/framework/mock/http/util/http-mock-max-delay.mjs +0 -12
- package/esm2022/lib/framework/mock/http/util/http-mock-response-delay.util.mjs +0 -33
- package/esm2022/lib/framework/mock/http/util/http-mock-response.builder.mjs +0 -141
- package/esm2022/lib/framework/mock/http/util/http-status-text-finder.mjs +0 -146
- package/esm2022/lib/framework/mock/http/util/http-status-text.enum.mjs +0 -260
- package/esm2022/lib/framework/mock/http/util/index.mjs +0 -8
- package/esm2022/lib/framework/mock/http/xhr/delegate-xhr.mjs +0 -372
- package/esm2022/lib/framework/mock/http/xhr/http-mock-factory.impl.mjs +0 -30
- package/esm2022/lib/framework/mock/http/xhr/http-mock-factory.mjs +0 -20
- package/esm2022/lib/framework/mock/http/xhr/index.mjs +0 -2
- package/esm2022/lib/framework/mock/http/xhr/xhr-base.mjs +0 -123
- package/esm2022/lib/framework/mock/http/xhr/xhr-proxy-impl.mjs +0 -178
- package/esm2022/lib/framework/mock/http-monitoring-console/component/abstract/log-renderer-base.mjs +0 -34
- package/esm2022/lib/framework/mock/http-monitoring-console/component/console-footer/console-footer.component.mjs +0 -29
- package/esm2022/lib/framework/mock/http-monitoring-console/component/console-menu/console-menu.component.mjs +0 -40
- package/esm2022/lib/framework/mock/http-monitoring-console/component/http-monitoring-console/http-monitoring-console.component.mjs +0 -62
- package/esm2022/lib/framework/mock/http-monitoring-console/component/renderer/icon-renderer/icon-renderer.component.mjs +0 -62
- package/esm2022/lib/framework/mock/http-monitoring-console/component/renderer/json-viewer/json-viewer.component.mjs +0 -45
- package/esm2022/lib/framework/mock/http-monitoring-console/component/renderer/json-viewer-panel/json-viewer-panel.component.mjs +0 -35
- package/esm2022/lib/framework/mock/http-monitoring-console/component/renderer/payload-renderer/payload-renderer.component.mjs +0 -70
- package/esm2022/lib/framework/mock/http-monitoring-console/component/renderer/request-info-renderer/request-info-renderer.component.mjs +0 -43
- package/esm2022/lib/framework/mock/http-monitoring-console/component/renderer/request-list-renderer/request-list-renderer.component.mjs +0 -116
- package/esm2022/lib/framework/mock/http-monitoring-console/component/renderer/response-body-renderer/response-body-renderer.component.mjs +0 -89
- package/esm2022/lib/framework/mock/http-monitoring-console/component/renderer/response-preview-renderer/response-preview-renderer.component.mjs +0 -115
- package/esm2022/lib/framework/mock/http-monitoring-console/component/renderer/spinner/spinner.component.mjs +0 -22
- package/esm2022/lib/framework/mock/http-monitoring-console/component/renderer/timing-renderer/timing-renderer.component.mjs +0 -81
- package/esm2022/lib/framework/mock/http-monitoring-console/component/request-details/request-details.component.mjs +0 -91
- package/esm2022/lib/framework/mock/http-monitoring-console/connector/http-monitoring-console-log-connector.mjs +0 -59
- package/esm2022/lib/framework/mock/http-monitoring-console/index.mjs +0 -2
- package/esm2022/lib/framework/mock/http-monitoring-console/model/business/atx-console-action-type.mjs +0 -40
- package/esm2022/lib/framework/mock/http-monitoring-console/model/business/atx-console-action.mjs +0 -9
- package/esm2022/lib/framework/mock/http-monitoring-console/model/business/atx-console-json.mjs +0 -9
- package/esm2022/lib/framework/mock/http-monitoring-console/model/business/atx-is-imported-log.mjs +0 -14
- package/esm2022/lib/framework/mock/http-monitoring-console/model/business/atx-timeline-data.mjs +0 -9
- package/esm2022/lib/framework/mock/http-monitoring-console/model/business/io/atx-body-dto.mjs +0 -9
- package/esm2022/lib/framework/mock/http-monitoring-console/model/business/io/atx-header-dto.mjs +0 -9
- package/esm2022/lib/framework/mock/http-monitoring-console/model/business/io/atx-http-log-metadata.dto.mjs +0 -9
- package/esm2022/lib/framework/mock/http-monitoring-console/model/business/io/atx-http-log.dto.mjs +0 -9
- package/esm2022/lib/framework/mock/http-monitoring-console/model/business/io/atx-http-request-metadata.dto.ts.mjs +0 -9
- package/esm2022/lib/framework/mock/http-monitoring-console/model/business/io/atx-http-request.dto.mjs +0 -9
- package/esm2022/lib/framework/mock/http-monitoring-console/model/business/io/atx-http-response.dto.mjs +0 -9
- package/esm2022/lib/framework/mock/http-monitoring-console/model/business/io/hmfl.mjs +0 -9
- package/esm2022/lib/framework/mock/http-monitoring-console/model/service/atx-log-io.service.mjs +0 -105
- package/esm2022/lib/framework/mock/http-monitoring-console/model/service/atx-monitoring-console.controller.mjs +0 -96
- package/esm2022/lib/framework/mock/http-monitoring-console/model/service/atx-monitoring-console.state.mjs +0 -126
- package/esm2022/lib/framework/mock/http-monitoring-console/model/service/atx-user-action.service.mjs +0 -40
- package/esm2022/lib/framework/mock/http-monitoring-console/util/console-body-type.mjs +0 -50
- package/esm2022/lib/framework/mock/http-monitoring-console/util/console-type-class.mjs +0 -45
- package/esm2022/lib/framework/mock/http-monitoring-console/util/data.util.mjs +0 -95
- package/esm2022/lib/framework/mock/http-monitoring-console/util/io/body-converter.mjs +0 -40
- package/esm2022/lib/framework/mock/http-monitoring-console/util/io/body-serializer.mjs +0 -58
- package/esm2022/lib/framework/mock/http-monitoring-console/util/io/form-data-serializer.mjs +0 -33
- package/esm2022/lib/framework/mock/http-monitoring-console/util/io/hmfl-builder.mjs +0 -27
- package/esm2022/lib/framework/mock/http-monitoring-console/util/io/http-request-converter.mjs +0 -62
- package/esm2022/lib/framework/mock/http-monitoring-console/util/io/http-response-converter.mjs +0 -50
- package/esm2022/lib/framework/mock/http-monitoring-console/util/io/log-converter.mjs +0 -43
- package/esm2022/lib/framework/mock/http-monitoring-console/util/io/log-headers-converter.mjs +0 -53
- package/esm2022/lib/framework/mock/http-monitoring-console/util/io/log-message.util.mjs +0 -30
- package/esm2022/lib/framework/mock/http-monitoring-console/util/io/log-metadata-converter.mjs +0 -45
- package/esm2022/lib/framework/mock/http-monitoring-console/util/io/request-metadata-converter.mjs +0 -47
- package/esm2022/lib/framework/mock/http-monitoring-console/util/size.util.mjs +0 -57
- package/esm2022/lib/framework/mock/http-monitoring-console/util/timeline.util.mjs +0 -28
- package/esm2022/lib/framework/mock/http-monitoring-console/util/url.util.mjs +0 -51
- package/esm2022/lib/model/business/index.mjs +0 -8
- package/esm2022/lib/model/business/lang/app-bridge-command.mjs +0 -9
- package/esm2022/lib/model/business/lang/destroyable.mjs +0 -9
- package/esm2022/lib/model/business/lang/identifiable.mjs +0 -9
- package/esm2022/lib/model/business/lang/index.mjs +0 -5
- package/esm2022/lib/model/business/lang/instantiable.mjs +0 -9
- package/esm2022/lib/model/business/logging/atx-logger-config.provider.mjs +0 -21
- package/esm2022/lib/model/business/logging/http-mock-logging-constant.enum.mjs +0 -34
- package/esm2022/lib/model/business/logging/index.mjs +0 -8
- package/esm2022/lib/model/business/logging/log-connector.mjs +0 -9
- package/esm2022/lib/model/business/logging/log-level.enum.mjs +0 -34
- package/esm2022/lib/model/business/logging/log.mjs +0 -9
- package/esm2022/lib/model/business/logging/logger-config.mjs +0 -9
- package/esm2022/lib/model/business/logging/logger.mjs +0 -2
- package/esm2022/lib/model/business/logging/transactional-logger.mjs +0 -9
- package/esm2022/lib/model/business/mock/http/config/http-mock-production-policy.enum.mjs +0 -27
- package/esm2022/lib/model/business/mock/http/config/http-mocking-framework-config.mjs +0 -9
- package/esm2022/lib/model/business/mock/http/config/http-mocking-framework-config.provider.mjs +0 -33
- package/esm2022/lib/model/business/mock/http/config/index.mjs +0 -4
- package/esm2022/lib/model/business/mock/http/fetch-client.mjs +0 -14
- package/esm2022/lib/model/business/mock/http/http-method-mock.mjs +0 -9
- package/esm2022/lib/model/business/mock/http/http-mock-config.mjs +0 -9
- package/esm2022/lib/model/business/mock/http/http-mock-endpoint-descriptor.mjs +0 -9
- package/esm2022/lib/model/business/mock/http/http-mock-endpoint.mjs +0 -9
- package/esm2022/lib/model/business/mock/http/http-mock-error.mjs +0 -9
- package/esm2022/lib/model/business/mock/http/http-mock-interceptor.mjs +0 -9
- package/esm2022/lib/model/business/mock/http/http-mock-method-descriptor.mjs +0 -9
- package/esm2022/lib/model/business/mock/http/http-mock-parameter-descriptor.mjs +0 -9
- package/esm2022/lib/model/business/mock/http/http-mock-request-metadata.mjs +0 -9
- package/esm2022/lib/model/business/mock/http/http-response-mock.mjs +0 -9
- package/esm2022/lib/model/business/mock/http/index.mjs +0 -15
- package/esm2022/lib/model/business/mock/http/logging/http-mock-logging-metadata.mjs +0 -9
- package/esm2022/lib/model/business/mock/http/logging/http-mock-logging-prefetch-metadata.mjs +0 -9
- package/esm2022/lib/model/business/mock/http/logging/index.mjs +0 -3
- package/esm2022/lib/model/business/mock/http/xhr-proxy.mjs +0 -9
- package/esm2022/lib/model/business/navigator/battery-manager.mjs +0 -9
- package/esm2022/lib/model/business/navigator/connection-type.mjs +0 -9
- package/esm2022/lib/model/business/navigator/effective-connection-type.mjs +0 -9
- package/esm2022/lib/model/business/navigator/index.mjs +0 -5
- package/esm2022/lib/model/business/navigator/network-information.mjs +0 -9
- package/esm2022/lib/model/business/subscription/index.mjs +0 -2
- package/esm2022/lib/model/business/subscription/subscription-manager.mjs +0 -9
- package/esm2022/lib/model/business/ui/dark-mode-config.mjs +0 -9
- package/esm2022/lib/model/business/ui/dark-mode-config.provider.mjs +0 -43
- package/esm2022/lib/model/business/ui/dark-mode.constant.mjs +0 -16
- package/esm2022/lib/model/business/ui/dropdown/dropdown-event-type.enum.mjs +0 -22
- package/esm2022/lib/model/business/ui/dropdown/dropdown-position.mjs +0 -9
- package/esm2022/lib/model/business/ui/dropdown/dropdown-state.mjs +0 -9
- package/esm2022/lib/model/business/ui/dropdown/dropdown.event.mjs +0 -27
- package/esm2022/lib/model/business/ui/dropdown/index.mjs +0 -6
- package/esm2022/lib/model/business/ui/dropdown/popover-state.mjs +0 -9
- package/esm2022/lib/model/business/ui/index.mjs +0 -8
- package/esm2022/lib/model/business/ui/layout/index.mjs +0 -6
- package/esm2022/lib/model/business/ui/layout/layout-constraints.mjs +0 -9
- package/esm2022/lib/model/business/ui/layout/layout-drag-event-type.enum.mjs +0 -26
- package/esm2022/lib/model/business/ui/layout/layout-drag.event.mjs +0 -23
- package/esm2022/lib/model/business/ui/layout/layout-region.error.mjs +0 -22
- package/esm2022/lib/model/business/ui/layout/layout-region.mjs +0 -35
- package/esm2022/lib/model/business/ui/scroll-behavior.type.mjs +0 -9
- package/esm2022/lib/model/business/ui/window/index.mjs +0 -5
- package/esm2022/lib/model/business/ui/window/window-feature-state.mjs +0 -22
- package/esm2022/lib/model/business/ui/window/window-init.mjs +0 -9
- package/esm2022/lib/model/business/ui/window/window-ref.mjs +0 -9
- package/esm2022/lib/model/business/ui/window/window-target.mjs +0 -34
- package/esm2022/lib/model/business/version/index.mjs +0 -5
- package/esm2022/lib/model/business/version/version-config.mjs +0 -9
- package/esm2022/lib/model/business/version/version-config.provider.mjs +0 -40
- package/esm2022/lib/model/business/version/version-manager.mjs +0 -10
- package/esm2022/lib/model/business/version/version.mjs +0 -10
- package/esm2022/lib/model/index.mjs +0 -3
- package/esm2022/lib/model/service/index.mjs +0 -6
- package/esm2022/lib/model/service/logging/index.mjs +0 -2
- package/esm2022/lib/model/service/logging/logger-service.mjs +0 -41
- package/esm2022/lib/model/service/mock/http/http-mock.service.mjs +0 -279
- package/esm2022/lib/model/service/mock/http/index.mjs +0 -3
- package/esm2022/lib/model/service/mock/http/logging/atx-http-mock-console.service.mjs +0 -92
- package/esm2022/lib/model/service/mock/http/logging/http-mock-logging-service.mjs +0 -117
- package/esm2022/lib/model/service/mock/http/logging/index.mjs +0 -3
- package/esm2022/lib/model/service/subscription/subscription.service.mjs +0 -30
- package/esm2022/lib/model/service/ui/app-bridge.service.mjs +0 -142
- package/esm2022/lib/model/service/ui/dark-mode.service.mjs +0 -183
- package/esm2022/lib/model/service/ui/index.mjs +0 -5
- package/esm2022/lib/model/service/ui/scroll.service.mjs +0 -93
- package/esm2022/lib/model/service/ui/window/abstract-window.service.mjs +0 -49
- package/esm2022/lib/model/service/ui/window/index.mjs +0 -3
- package/esm2022/lib/model/service/ui/window/window.service.mjs +0 -103
- package/esm2022/lib/model/service/version/angular-toolbox-version.service.mjs +0 -37
- package/esm2022/lib/model/service/version/index.mjs +0 -3
- package/esm2022/lib/model/service/version/version.service.mjs +0 -35
- package/esm2022/lib/pipe/index.mjs +0 -2
- package/esm2022/lib/pipe/safe/safe-html.pipe.mjs +0 -34
- package/esm2022/lib/util/aria-role.constant.mjs +0 -16
- package/esm2022/lib/util/default-scroll-behavior.mjs +0 -13
- package/esm2022/lib/util/empty-string.const.mjs +0 -12
- package/esm2022/lib/util/http-mocking-framework-config.manager.mjs +0 -129
- package/esm2022/lib/util/index.mjs +0 -6
- package/esm2022/lib/util/js-type.mjs +0 -40
- package/esm2022/lib/util/uuid.mjs +0 -126
- package/esm2022/lib/util/version.util.mjs +0 -44
- package/esm2022/lib/util/window/window-features-builder.mjs +0 -90
- package/esm2022/lib/util/window/window-header-tag-util.mjs +0 -42
- package/esm2022/public-api.mjs +0 -20
|
@@ -1,372 +0,0 @@
|
|
|
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, HttpParams, HttpRequest, HttpStatusCode } from "@angular/common/http";
|
|
9
|
-
import { ProgressEventMock } from "../event/progress-event-mock";
|
|
10
|
-
import { EMPTY_STRING, Uuid } 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
|
-
import { HttpMockLoggingMetadataBuilder } from "../logging/http-mock-logging-metadata.builder";
|
|
16
|
-
import { HttpMockResponseDelayUtil } from "../util/http-mock-response-delay.util";
|
|
17
|
-
/**
|
|
18
|
-
* @private
|
|
19
|
-
* Intenal "onreadystatechange" event.
|
|
20
|
-
*/
|
|
21
|
-
const READY_STATE_CHANGE_EVENT = new Event("onreadystatechange");
|
|
22
|
-
/**
|
|
23
|
-
* @private
|
|
24
|
-
*/
|
|
25
|
-
const EVT_PROPS_CONFIG = { writable: false, value: this };
|
|
26
|
-
/**
|
|
27
|
-
* @private
|
|
28
|
-
* A utility class used as delegate of `XMLHttpRequest` functionalities when
|
|
29
|
-
* a HTTP request is intercepted by the Mocking Framework .
|
|
30
|
-
*/
|
|
31
|
-
export class DelegateXhr extends XhrBase {
|
|
32
|
-
/**
|
|
33
|
-
* Returns the response body content.
|
|
34
|
-
*
|
|
35
|
-
* @see https://developer.mozilla.org/docs/Web/API/XMLHttpRequest/response
|
|
36
|
-
*/
|
|
37
|
-
get response() {
|
|
38
|
-
return this._dataStorage?.data || null;
|
|
39
|
-
}
|
|
40
|
-
/**
|
|
41
|
-
* Returns the numerical HTTP status code of the `XMLHttpRequest` response.
|
|
42
|
-
*
|
|
43
|
-
* @see https://developer.mozilla.org/docs/Web/API/XMLHttpRequest/status
|
|
44
|
-
*/
|
|
45
|
-
get status() {
|
|
46
|
-
return this._status;
|
|
47
|
-
}
|
|
48
|
-
/**
|
|
49
|
-
* Returns a string containing the response status message as returned by the HTTP server.
|
|
50
|
-
*
|
|
51
|
-
* @see https://developer.mozilla.org/docs/Web/API/XMLHttpRequest/statusText
|
|
52
|
-
*/
|
|
53
|
-
get statusText() {
|
|
54
|
-
return this._statusText;
|
|
55
|
-
}
|
|
56
|
-
/**
|
|
57
|
-
* Returns the state the `XMLHttpRequest` client is in.
|
|
58
|
-
*
|
|
59
|
-
* @see https://developer.mozilla.org/docs/Web/API/XMLHttpRequest/readyState
|
|
60
|
-
*/
|
|
61
|
-
get readyState() {
|
|
62
|
-
return this._readyState;
|
|
63
|
-
}
|
|
64
|
-
/**
|
|
65
|
-
* Returns the serialized URL of the response or the empty string if the URL is `null`.
|
|
66
|
-
*
|
|
67
|
-
* @see https://developer.mozilla.org/docs/Web/API/XMLHttpRequest/responseURL
|
|
68
|
-
*/
|
|
69
|
-
get responseURL() {
|
|
70
|
-
return this._url;
|
|
71
|
-
}
|
|
72
|
-
/**
|
|
73
|
-
* Returns the text received from a server following a request being sent.
|
|
74
|
-
*
|
|
75
|
-
* Throws an `InvalidStateError` DOMException if responseType is not the empty string or "text".
|
|
76
|
-
*
|
|
77
|
-
* @see https://developer.mozilla.org/docs/Web/API/XMLHttpRequest/responseText
|
|
78
|
-
*/
|
|
79
|
-
get responseText() {
|
|
80
|
-
return this._dataStorage?.stringifiedData || EMPTY_STRING;
|
|
81
|
-
}
|
|
82
|
-
/**
|
|
83
|
-
* Returns an `XMLHttpRequestUpload` object that can be observed to monitor an upload progress.
|
|
84
|
-
*
|
|
85
|
-
* @see https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest/upload
|
|
86
|
-
*/
|
|
87
|
-
get upload() {
|
|
88
|
-
return null;
|
|
89
|
-
}
|
|
90
|
-
/**
|
|
91
|
-
* @private
|
|
92
|
-
*/
|
|
93
|
-
open(method, url, async, username, password) {
|
|
94
|
-
this._method = method;
|
|
95
|
-
this._url = url;
|
|
96
|
-
this.setReadyState(this.OPENED);
|
|
97
|
-
}
|
|
98
|
-
/**
|
|
99
|
-
* Aborts the request if it has already been sent. When a request is aborted, its `readyState`
|
|
100
|
-
* is changed to `XMLHttpRequest.UNSENT` and the request status code is set to `0`.
|
|
101
|
-
*/
|
|
102
|
-
abort() {
|
|
103
|
-
this._readyState = this.UNSENT;
|
|
104
|
-
this._status = 0;
|
|
105
|
-
this.eventDispatch("abort");
|
|
106
|
-
}
|
|
107
|
-
/**
|
|
108
|
-
* Returns all the response headers, separated by CRLF, as a string, or returns `null`
|
|
109
|
-
* if no response has been received.
|
|
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
|
-
getAllResponseHeaders() {
|
|
115
|
-
if (this._readyState < this.HEADERS_RECEIVED)
|
|
116
|
-
return null;
|
|
117
|
-
const respHeaders = this._dataStorage?.httpResponse.headers;
|
|
118
|
-
if (respHeaders)
|
|
119
|
-
return HttpHeadersUtil.stringify(respHeaders);
|
|
120
|
-
return null;
|
|
121
|
-
}
|
|
122
|
-
/**
|
|
123
|
-
* Sends the request to the server.
|
|
124
|
-
*
|
|
125
|
-
* @param body A body of data to be sent in the XHR request.
|
|
126
|
-
*/
|
|
127
|
-
send(body) {
|
|
128
|
-
const start = this.now();
|
|
129
|
-
const request = this.buildHttpRequest(body);
|
|
130
|
-
const rc = this._routeConfig;
|
|
131
|
-
const httpResponseMock = rc.methodConfig.data(request, rc.parameters);
|
|
132
|
-
const responseDelay = HttpMockResponseDelayUtil.getResponseDelay(httpResponseMock.delay || 0);
|
|
133
|
-
const timer = responseDelay.duration;
|
|
134
|
-
const requestMetadata = {
|
|
135
|
-
start: start,
|
|
136
|
-
stalled: responseDelay.stalled,
|
|
137
|
-
duration: timer,
|
|
138
|
-
url: new URL(this._url),
|
|
139
|
-
id: Uuid.build()
|
|
140
|
-
};
|
|
141
|
-
const prefetchMetadata = {
|
|
142
|
-
request: request,
|
|
143
|
-
requestMetadata: requestMetadata
|
|
144
|
-
};
|
|
145
|
-
this._logger.prefetch(prefetchMetadata);
|
|
146
|
-
this._loadSubscription = this.loadData(httpResponseMock).subscribe({
|
|
147
|
-
next: (data) => {
|
|
148
|
-
this.setDataStorage(httpResponseMock, requestMetadata, data);
|
|
149
|
-
const error = this._dataStorage.httpResponse.error;
|
|
150
|
-
setTimeout(() => {
|
|
151
|
-
this.setReadyState(this.HEADERS_RECEIVED);
|
|
152
|
-
if (error)
|
|
153
|
-
return this.onError(request, error);
|
|
154
|
-
this.setReadyState(this.LOADING);
|
|
155
|
-
const response = this._dataStorage.httpResponse;
|
|
156
|
-
if (!this._progressiveDownload) {
|
|
157
|
-
this._statusText = response.statusText || EMPTY_STRING;
|
|
158
|
-
this._status = response.status || 0;
|
|
159
|
-
return this.onLoadComplete(request);
|
|
160
|
-
}
|
|
161
|
-
this.doProgressiveDownload(request);
|
|
162
|
-
}, timer);
|
|
163
|
-
},
|
|
164
|
-
error: (err) => {
|
|
165
|
-
this.setDataStorage(httpResponseMock, requestMetadata);
|
|
166
|
-
this.onError(request, err);
|
|
167
|
-
}
|
|
168
|
-
});
|
|
169
|
-
}
|
|
170
|
-
/**
|
|
171
|
-
* Sets the value of an HTTP request header.
|
|
172
|
-
*
|
|
173
|
-
* @param name The name of the header whose value is to be set.
|
|
174
|
-
* @param value The value to set as the body of the header.
|
|
175
|
-
*/
|
|
176
|
-
setRequestHeader(name, value) {
|
|
177
|
-
this._requestHeaders = this._requestHeaders.set(name, value);
|
|
178
|
-
}
|
|
179
|
-
/**
|
|
180
|
-
* @private
|
|
181
|
-
*/
|
|
182
|
-
constructor(routeConfig, _logger) {
|
|
183
|
-
super();
|
|
184
|
-
this._logger = _logger;
|
|
185
|
-
/**
|
|
186
|
-
* @private
|
|
187
|
-
* Indicates whether the progressive download is activated, or not.
|
|
188
|
-
*/
|
|
189
|
-
this._progressiveDownload = false;
|
|
190
|
-
/**
|
|
191
|
-
* @private
|
|
192
|
-
*
|
|
193
|
-
* Internal storage for HTTP response `data`.
|
|
194
|
-
*/
|
|
195
|
-
this._dataStorage = null;
|
|
196
|
-
/**
|
|
197
|
-
* @private
|
|
198
|
-
*
|
|
199
|
-
* Internal storage for the HTTP request `readyState`.
|
|
200
|
-
*/
|
|
201
|
-
this._readyState = this.UNSENT;
|
|
202
|
-
/**
|
|
203
|
-
* @private
|
|
204
|
-
*
|
|
205
|
-
* Internal storage for the HTTP request `headers`.
|
|
206
|
-
*/
|
|
207
|
-
this._requestHeaders = null;
|
|
208
|
-
/**
|
|
209
|
-
* @private
|
|
210
|
-
*
|
|
211
|
-
* Internal storage for the HTTP request `status`.
|
|
212
|
-
*/
|
|
213
|
-
this._status = 0;
|
|
214
|
-
/**
|
|
215
|
-
* @private
|
|
216
|
-
*
|
|
217
|
-
* Internal storage for the HTTP request `statusText`.
|
|
218
|
-
*/
|
|
219
|
-
this._statusText = EMPTY_STRING;
|
|
220
|
-
/**
|
|
221
|
-
* @private
|
|
222
|
-
*/
|
|
223
|
-
this._loadSubscription = null;
|
|
224
|
-
/**
|
|
225
|
-
* Returns an an enumerated string value specifying the type of data contained in the response.
|
|
226
|
-
*
|
|
227
|
-
* @see https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest/responseType
|
|
228
|
-
*/
|
|
229
|
-
this.responseType = EMPTY_STRING;
|
|
230
|
-
this._routeConfig = routeConfig;
|
|
231
|
-
// routeConfig.methodConfig.downloadManager
|
|
232
|
-
this._progressiveDownload = false;
|
|
233
|
-
this._requestHeaders = new HttpHeaders();
|
|
234
|
-
}
|
|
235
|
-
/**
|
|
236
|
-
* @private
|
|
237
|
-
* Internally used by the framework to delete a `DelegateXhr` instance.
|
|
238
|
-
*/
|
|
239
|
-
destroy() {
|
|
240
|
-
this._routeConfig = null;
|
|
241
|
-
this._requestHeaders = null;
|
|
242
|
-
this._dataStorage = null;
|
|
243
|
-
if (this._loadSubscription) {
|
|
244
|
-
this._loadSubscription.unsubscribe();
|
|
245
|
-
this._loadSubscription = null;
|
|
246
|
-
}
|
|
247
|
-
}
|
|
248
|
-
/**
|
|
249
|
-
* @private
|
|
250
|
-
*/
|
|
251
|
-
doProgressiveDownload(request) {
|
|
252
|
-
const total = this._dataStorage.total;
|
|
253
|
-
if (total <= 200) {
|
|
254
|
-
console.warn("[Angular Toolbox]: Body content is too small for emulating progressive download! Minimum size is 200 octets.");
|
|
255
|
-
return this.onLoadComplete(request);
|
|
256
|
-
}
|
|
257
|
-
// TODO: ameliorate the following process:
|
|
258
|
-
const self = this;
|
|
259
|
-
const chunckSize = Math.floor(total / 10);
|
|
260
|
-
let cursor = 0;
|
|
261
|
-
this._statusText = "Partial Content";
|
|
262
|
-
this._status = HttpStatusCode.PartialContent;
|
|
263
|
-
const idx = setInterval(() => {
|
|
264
|
-
cursor += chunckSize;
|
|
265
|
-
if (cursor > total) {
|
|
266
|
-
cursor = total;
|
|
267
|
-
clearInterval(idx);
|
|
268
|
-
self.onLoadComplete(request);
|
|
269
|
-
}
|
|
270
|
-
else {
|
|
271
|
-
this._dataStorage.loaded = cursor;
|
|
272
|
-
self.dispatchProgressEvent();
|
|
273
|
-
}
|
|
274
|
-
}, 100);
|
|
275
|
-
}
|
|
276
|
-
finalizeRequestMetadata() {
|
|
277
|
-
const ds = this._dataStorage;
|
|
278
|
-
const metadata = ds.requestMetadata;
|
|
279
|
-
const duration = this.now() - metadata.start;
|
|
280
|
-
if (duration > metadata.duration)
|
|
281
|
-
metadata.duration = duration;
|
|
282
|
-
return metadata;
|
|
283
|
-
}
|
|
284
|
-
/**
|
|
285
|
-
* @private
|
|
286
|
-
*/
|
|
287
|
-
onLoadComplete(request) {
|
|
288
|
-
this._dataStorage.loaded = this._dataStorage.total;
|
|
289
|
-
this.setReadyState(this.DONE);
|
|
290
|
-
this.dispatchProgressEvent("load");
|
|
291
|
-
this._logger.info(this.buildMetadata(request));
|
|
292
|
-
}
|
|
293
|
-
/**
|
|
294
|
-
* @private
|
|
295
|
-
*/
|
|
296
|
-
onError(request, error) {
|
|
297
|
-
this._status = error.status;
|
|
298
|
-
this._statusText = error.statusText;
|
|
299
|
-
this.setReadyState(this.DONE);
|
|
300
|
-
this.dispatchProgressEvent("error");
|
|
301
|
-
this._logger.error(this.buildMetadata(request));
|
|
302
|
-
}
|
|
303
|
-
/**
|
|
304
|
-
* @private
|
|
305
|
-
*/
|
|
306
|
-
buildMetadata(request) {
|
|
307
|
-
return HttpMockLoggingMetadataBuilder.build(this, request, this.finalizeRequestMetadata());
|
|
308
|
-
}
|
|
309
|
-
/**
|
|
310
|
-
* @private
|
|
311
|
-
*/
|
|
312
|
-
eventDispatch(type) {
|
|
313
|
-
const event = new Event(type);
|
|
314
|
-
Object.defineProperty(event, 'target', EVT_PROPS_CONFIG);
|
|
315
|
-
Object.defineProperty(event, 'currentTarget', EVT_PROPS_CONFIG);
|
|
316
|
-
this.dispatchEvent(event);
|
|
317
|
-
}
|
|
318
|
-
/**
|
|
319
|
-
* @private
|
|
320
|
-
*/
|
|
321
|
-
dispatchProgressEvent(type = "progress") {
|
|
322
|
-
const d = this._dataStorage;
|
|
323
|
-
const event = new ProgressEventMock(type);
|
|
324
|
-
event.loaded = d.loaded;
|
|
325
|
-
event.total = d.total;
|
|
326
|
-
this.dispatchEvent(event);
|
|
327
|
-
}
|
|
328
|
-
/**
|
|
329
|
-
* @private
|
|
330
|
-
*/
|
|
331
|
-
setReadyState(state) {
|
|
332
|
-
this._readyState = state;
|
|
333
|
-
const event = this.onreadystatechange;
|
|
334
|
-
if (event)
|
|
335
|
-
event.call(this, READY_STATE_CHANGE_EVENT);
|
|
336
|
-
}
|
|
337
|
-
/**
|
|
338
|
-
* @private
|
|
339
|
-
*/
|
|
340
|
-
loadData(httpResponseMock) {
|
|
341
|
-
const responseBody = httpResponseMock.body;
|
|
342
|
-
return (responseBody instanceof Observable) ? responseBody : of(responseBody);
|
|
343
|
-
}
|
|
344
|
-
/**
|
|
345
|
-
* @private
|
|
346
|
-
*/
|
|
347
|
-
setDataStorage(responseMock, requestMetadata, data = null) {
|
|
348
|
-
this._dataStorage = DataStorageBuilder.buildDataStorage(responseMock, data, requestMetadata);
|
|
349
|
-
}
|
|
350
|
-
/**
|
|
351
|
-
* @private
|
|
352
|
-
*/
|
|
353
|
-
buildHttpRequest(body) {
|
|
354
|
-
let params = new HttpParams();
|
|
355
|
-
const it = this._routeConfig.searchParams.entries();
|
|
356
|
-
for (const pair of it)
|
|
357
|
-
params = params.set(pair[0], pair[1]);
|
|
358
|
-
const init = {
|
|
359
|
-
params: params,
|
|
360
|
-
headers: this._requestHeaders,
|
|
361
|
-
withCredentials: this.withCredentials,
|
|
362
|
-
responseType: this.responseType,
|
|
363
|
-
reportProgress: this.hasEventListener("progress")
|
|
364
|
-
// context, transferCache: not used by Angular at this level of API
|
|
365
|
-
};
|
|
366
|
-
return new HttpRequest(this._method, this._url, body, init);
|
|
367
|
-
}
|
|
368
|
-
now() {
|
|
369
|
-
return Date.now();
|
|
370
|
-
}
|
|
371
|
-
}
|
|
372
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVsZWdhdGUteGhyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYW5ndWxhci10b29sYm94L3NyYy9saWIvZnJhbWV3b3JrL21vY2svaHR0cC94aHIvZGVsZWdhdGUteGhyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7R0FNRztBQUVILE9BQU8sRUFBRSxXQUFXLEVBQUUsVUFBVSxFQUFFLFdBQVcsRUFBRSxjQUFjLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUU1RixPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUNqRSxPQUFPLEVBQUUsWUFBWSxFQUFFLElBQUksRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBQ3RELE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxZQUFZLENBQUM7QUFDckMsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBRTVELE9BQU8sRUFBRSxVQUFVLEVBQWdCLEVBQUUsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUVwRCxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUNsRSxPQUFPLEVBQUUsOEJBQThCLEVBQUUsTUFBTSwrQ0FBK0MsQ0FBQztBQUMvRixPQUFPLEVBQUUseUJBQXlCLEVBQUUsTUFBTSx1Q0FBdUMsQ0FBQztBQUdsRjs7O0dBR0c7QUFDSCxNQUFNLHdCQUF3QixHQUFVLElBQUksS0FBSyxDQUFDLG9CQUFvQixDQUFDLENBQUM7QUFFeEU7O0dBRUc7QUFDSCxNQUFNLGdCQUFnQixHQUFTLEVBQUUsUUFBUSxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsSUFBSSxFQUFFLENBQUM7QUFFaEU7Ozs7R0FJRztBQUNILE1BQU0sT0FBTyxXQUFZLFNBQVEsT0FBTztJQW9FcEM7Ozs7T0FJRztJQUNILElBQUksUUFBUTtRQUNSLE9BQU8sSUFBSSxDQUFDLFlBQVksRUFBRSxJ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SUFDdEIsQ0FBQztDQUNKIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXHJcbiAqIEBsaWNlbnNlXHJcbiAqIENvcHlyaWdodCBQYXNjYWwgRUNIRU1BTk4uIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXHJcbiAqXHJcbiAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlIGZvdW5kIGluXHJcbiAqIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9wYXNjYWxlY2hlbWFubi5jb20vYW5ndWxhci10b29sYm94L3Jlc291cmNlcy9saWNlbnNlXHJcbiAqL1xyXG5cclxuaW1wb3J0IHsgSHR0cEhlYWRlcnMsIEh0dHBQYXJhbXMsIEh0dHBSZXF1ZXN0LCBIdHRwU3RhdHVzQ29kZSB9IGZyb20gXCJAYW5ndWxhci9jb21tb24vaHR0cFwiO1xyXG5pbXBvcnQgeyBYaHJQcm94eSwgSHR0cFJlc3BvbnNlTW9jaywgSHR0cE1ldGhvZE1vY2ssIEh0dHBNb2NrRXJyb3IsIEh0dHBNb2NrTG9nZ2luZ1NlcnZpY2UsIEh0dHBNb2NrUmVxdWVzdE1ldGFkYXRhLCBIdHRwTW9ja0xvZ2dpbmdNZXRhZGF0YSwgSHR0cE1vY2tMb2dnaW5nUHJlZmV0Y2hNZXRhZGF0YSB9IGZyb20gXCIuLi8uLi8uLi8uLi9tb2RlbFwiO1xyXG5pbXBvcnQgeyBQcm9ncmVzc0V2ZW50TW9jayB9IGZyb20gXCIuLi9ldmVudC9wcm9ncmVzcy1ldmVudC1tb2NrXCI7XHJcbmltcG9ydCB7IEVNUFRZX1NUUklORywgVXVpZCB9IGZyb20gXCIuLi8uLi8uLi8uLi91dGlsXCI7XHJcbmltcG9ydCB7IFhockJhc2UgfSBmcm9tIFwiLi94aHItYmFzZVwiO1xyXG5pbXBvcnQgeyBIdHRwSGVhZGVyc1V0aWwgfSBmcm9tIFwiLi4vdXRpbC9odHRwLWhlYWRlcnMudXRpbFwiO1xyXG5pbXBvcnQgeyBSb3V0ZU1vY2tDb25maWcgfSBmcm9tIFwiLi4vY29uZmlnL3JvdXRlLW1vY2stY29uZmlnXCI7XHJcbmltcG9ydCB7IE9ic2VydmFibGUsIFN1YnNjcmlwdGlvbiwgb2YgfSBmcm9tIFwicnhqc1wiO1xyXG5pbXBvcnQgeyBEYXRhU3RvcmFnZSB9IGZyb20gXCIuLi9jb3JlL2RhdGEtc3RvcmFnZVwiO1xyXG5pbXBvcnQgeyBEYXRhU3RvcmFnZUJ1aWxkZXIgfSBmcm9tIFwiLi4vdXRpbC9kYXRhLXN0b3JhZ2UuYnVpbGRlclwiO1xyXG5pbXBvcnQgeyBIdHRwTW9ja0xvZ2dpbmdNZXRhZGF0YUJ1aWxkZXIgfSBmcm9tIFwiLi4vbG9nZ2luZy9odHRwLW1vY2stbG9nZ2luZy1tZXRhZGF0YS5idWlsZGVyXCI7XHJcbmltcG9ydCB7IEh0dHBNb2NrUmVzcG9uc2VEZWxheVV0aWwgfSBmcm9tIFwiLi4vdXRpbC9odHRwLW1vY2stcmVzcG9uc2UtZGVsYXkudXRpbFwiO1xyXG5pbXBvcnQgeyBSZXNwb25zZURlbGF5IH0gZnJvbSBcIi4uL2NvcmUvcmVzcG9uc2UtZGVsYXlcIjtcclxuXHJcbi8qKlxyXG4gKiBAcHJpdmF0ZVxyXG4gKiBJbnRlbmFsIFwib25yZWFkeXN0YXRlY2hhbmdlXCIgZXZlbnQuXHJcbiAqL1xyXG5jb25zdCBSRUFEWV9TVEFURV9DSEFOR0VfRVZFTlQ6IEV2ZW50ID0gbmV3IEV2ZW50KFwib25yZWFkeXN0YXRlY2hhbmdlXCIpO1xyXG5cclxuLyoqXHJcbiAqIEBwcml2YXRlXHJcbiAqL1xyXG5jb25zdCBFVlRfUFJPUFNfQ09ORklHOiBhbnkgPSAgeyB3cml0YWJsZTogZmFsc2UsIHZhbHVlOiB0aGlzIH07XHJcblxyXG4vKipcclxuICogQHByaXZhdGVcclxuICogQSB1dGlsaXR5IGNsYXNzIHVzZWQgYXMgZGVsZWdhdGUgb2YgYFhNTEh0dHBSZXF1ZXN0YCBmdW5jdGlvbmFsaXRpZXMgd2hlblxyXG4gKiBhIEhUVFAgcmVxdWVzdCBpcyBpbnRlcmNlcHRlZCBieSB0aGUgTW9ja2luZyBGcmFtZXdvcmsgLlxyXG4gKi9cclxuZXhwb3J0IGNsYXNzIERlbGVnYXRlWGhyIGV4dGVuZHMgWGhyQmFzZSBpbXBsZW1lbnRzIFhoclByb3h5IHtcclxuICAgIFxyXG4gICAgLyoqXHJcbiAgICAgKiBAcHJpdmF0ZVxyXG4gICAgICogSW5kaWNhdGVzIHdoZXRoZXIgdGhlIHByb2dyZXNzaXZlIGRvd25sb2FkIGlzIGFjdGl2YXRlZCwgb3Igbm90LlxyXG4gICAgICovXHJcbiAgICBwcml2YXRlIF9wcm9ncmVzc2l2ZURvd25sb2FkOiBib29sZWFuID0gZmFsc2U7XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBAcHJpdmF0ZVxyXG4gICAgICogVGhlIGNvbmZpZyBmb3IgdGhlIGludGVyY2VwdGVkIHJvdXRlLlxyXG4gICAgICovXHJcbiAgICBwcml2YXRlIF9yb3V0ZUNvbmZpZzogUm91dGVNb2NrQ29uZmlnO1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogQHByaXZhdGVcclxuICAgICAqIFxyXG4gICAgICogSW50ZXJuYWwgc3RvcmFnZSBmb3IgSFRUUCByZXNwb25zZSBgZGF0YWAuXHJcbiAgICAgKi9cclxuICAgIHByaXZhdGUgX2RhdGFTdG9yYWdlOiBEYXRhU3RvcmFnZSA9IG51bGwgYXMgYW55OyBcclxuXHJcbiAgICAvKipcclxuICAgICAqIEBwcml2YXRlXHJcbiAgICAgKiBcclxuICAgICAqIEludGVybmFsIHN0b3JhZ2UgZm9yIHRoZSBIVFRQIHJlcXVlc3QgYG1ldGhvZGAuXHJcbiAgICAgKi9cclxuICAgIHByaXZhdGUgX21ldGhvZDogdW5rbm93bjsgXHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBAcHJpdmF0ZVxyXG4gICAgICogXHJcbiAgICAgKiBJbnRlcm5hbCBzdG9yYWdlIGZvciB0aGUgSFRUUCByZXF1ZXN0IFVSTC5cclxuICAgICAqL1xyXG4gICAgcHJpdmF0ZSBfdXJsOiB1bmtub3duOyBcclxuXHJcbiAgICAvKipcclxuICAgICAqIEBwcml2YXRlXHJcbiAgICAgKiBcclxuICAgICAqIEludGVybmFsIHN0b3JhZ2UgZm9yIHRoZSBIVFRQIHJlcXVlc3QgYHJlYWR5U3RhdGVgLlxyXG4gICAgICovXHJcbiAgICBwcml2YXRlIF9yZWFkeVN0YXRlOiBudW1iZXIgPSB0aGlzLlVOU0VOVDtcclxuXHJcbiAgICAvKipcclxuICAgICAqIEBwcml2YXRlXHJcbiAgICAgKiBcclxuICAgICAqIEludGVybmFsIHN0b3JhZ2UgZm9yIHRoZSBIVFRQIHJlcXVlc3QgYGhlYWRlcnNgLlxyXG4gICAgICovXHJcbiAgICBwcml2YXRlIF9yZXF1ZXN0SGVhZGVyczogSHR0cEhlYWRlcnMgPSBudWxsIGFzIGFueTtcclxuXHJcbiAgICAvKipcclxuICAgICAqIEBwcml2YXRlXHJcbiAgICAgKiBcclxuICAgICAqIEludGVybmFsIHN0b3JhZ2UgZm9yIHRoZSBIVFRQIHJlcXVlc3QgYHN0YXR1c2AuXHJcbiAgICAgKi9cclxuICAgIHByaXZhdGUgX3N0YXR1czogbnVtYmVyID0gMDtcclxuXHJcbiAgICAvKipcclxuICAgICAqIEBwcml2YXRlXHJcbiAgICAgKiBcclxuICAgICAqIEludGVybmFsIHN0b3JhZ2UgZm9yIHRoZSBIVFRQIHJlcXVlc3QgYHN0YXR1c1RleHRgLlxyXG4gICAgICovXHJcbiAgICBwcml2YXRlIF9zdGF0dXNUZXh0OiBzdHJpbmcgPSBFTVBUWV9TVFJJTkc7XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBAcHJpdmF0ZVxyXG4gICAgICovXHJcbiAgICBwcml2YXRlIF9sb2FkU3Vic2NyaXB0aW9uOiBTdWJzY3JpcHRpb24gfCBudWxsID0gbnVsbDtcclxuXHJcbiAgICAvKipcclxuICAgICAqIFJldHVybnMgdGhlIHJlc3BvbnNlIGJvZHkgY29udGVudC5cclxuICAgICAqXHJcbiAgICAgKiBAc2VlIGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0FQSS9YTUxIdHRwUmVxdWVzdC9yZXNwb25zZVxyXG4gICAgICovXHJcbiAgICBnZXQgcmVzcG9uc2UoKTogYW55IHtcclxuICAgICAgICByZXR1cm4gdGhpcy5fZGF0YVN0b3JhZ2U/LmRhdGEgfHwgbnVsbDtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIFJldHVybnMgdGhlIG51bWVyaWNhbCBIVFRQIHN0YXR1cyBjb2RlIG9mIHRoZSBgWE1MSHR0cFJlcXVlc3RgIHJlc3BvbnNlLlxyXG4gICAgICpcclxuICAgICAqIEBzZWUgaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvQVBJL1hNTEh0dHBSZXF1ZXN0L3N0YXR1c1xyXG4gICAgICovXHJcbiAgICBnZXQgc3RhdHVzKCk6IG51bWJlciB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuX3N0YXR1cztcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIFJldHVybnMgYSBzdHJpbmcgY29udGFpbmluZyB0aGUgcmVzcG9uc2Ugc3RhdHVzIG1lc3NhZ2UgYXMgcmV0dXJuZWQgYnkgdGhlIEhUVFAgc2VydmVyLlxyXG4gICAgICpcclxuICAgICAqIEBzZWUgaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvQVBJL1hNTEh0dHBSZXF1ZXN0L3N0YXR1c1RleHRcclxuICAgICAqL1xyXG4gICAgZ2V0IHN0YXR1c1RleHQoKTogc3RyaW5nIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5fc3RhdHVzVGV4dDtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIFJldHVybnMgdGhlIHN0YXRlIHRoZSBgWE1MSHR0cFJlcXVlc3RgIGNsaWVudCBpcyBpbi5cclxuICAgICAqXHJcbiAgICAgKiBAc2VlIGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0FQSS9YTUxIdHRwUmVxdWVzdC9yZWFkeVN0YXRlXHJcbiAgICAgKi9cclxuICAgIGdldCByZWFkeVN0YXRlKCk6IG51bWJlciB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuX3JlYWR5U3RhdGU7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBSZXR1cm5zIHRoZSBzZXJpYWxpemVkIFVSTCBvZiB0aGUgcmVzcG9uc2Ugb3IgdGhlIGVtcHR5IHN0cmluZyBpZiB0aGUgVVJMIGlzIGBudWxsYC4gXHJcbiAgICAgKlxyXG4gICAgICogQHNlZSBodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9BUEkvWE1MSHR0cFJlcXVlc3QvcmVzcG9uc2VVUkxcclxuICAgICAqL1xyXG4gICAgZ2V0IHJlc3BvbnNlVVJMKCk6IHN0cmluZyB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuX3VybCBhcyBzdHJpbmc7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBSZXR1cm5zIHRoZSB0ZXh0IHJlY2VpdmVkIGZyb20gYSBzZXJ2ZXIgZm9sbG93aW5nIGEgcmVxdWVzdCBiZWluZyBzZW50LlxyXG4gICAgICpcclxuICAgICAqIFRocm93cyBhbiBgSW52YWxpZFN0YXRlRXJyb3JgIERPTUV4Y2VwdGlvbiBpZiByZXNwb25zZVR5cGUgaXMgbm90IHRoZSBlbXB0eSBzdHJpbmcgb3IgXCJ0ZXh0XCIuXHJcbiAgICAgKlxyXG4gICAgICogQHNlZSBodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9BUEkvWE1MSHR0cFJlcXVlc3QvcmVzcG9uc2VUZXh0XHJcbiAgICAgKi9cclxuICAgIGdldCByZXNwb25zZVRleHQoKTogc3RyaW5nIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5fZGF0YVN0b3JhZ2U/LnN0cmluZ2lmaWVkRGF0YSB8fCBFTVBUWV9TVFJJTkc7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiAgUmV0dXJucyBhbiBgWE1MSHR0cFJlcXVlc3RVcGxvYWRgIG9iamVjdCB0aGF0IGNhbiBiZSBvYnNlcnZlZCB0byBtb25pdG9yIGFuIHVwbG9hZCBwcm9ncmVzcy4gXHJcbiAgICAgKlxyXG4gICAgICogQHNlZSBodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9BUEkvWE1MSHR0cFJlcXVlc3QvdXBsb2FkXHJcbiAgICAgKi9cclxuICAgIGdldCB1cGxvYWQoKTogWE1MSHR0cFJlcXVlc3RVcGxvYWQge1xyXG4gICAgICAgIHJldHVybiBudWxsIGFzIGFueTtcclxuICAgIH1cclxuICAgIFxyXG4gICAgLyoqXHJcbiAgICAgKiAgUmV0dXJucyBhbiBhbiBlbnVtZXJhdGVkIHN0cmluZyB2YWx1ZSBzcGVjaWZ5aW5nIHRoZSB0eXBlIG9mIGRhdGEgY29udGFpbmVkIGluIHRoZSByZXNwb25zZS4gXHJcbiAgICAgKlxyXG4gICAgICogQHNlZSBodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9BUEkvWE1MSHR0cFJlcXVlc3QvcmVzcG9uc2VUeXBlXHJcbiAgICAgKi9cclxuICAgIHJlc3BvbnNlVHlwZTogWE1MSHR0cFJlcXVlc3RSZXNwb25zZVR5cGUgPSBFTVBUWV9TVFJJTkcgYXMgYW55O1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogSW5pdGlhbGl6ZXMgYSBuZXdseS1jcmVhdGVkIHJlcXVlc3QsIG9yIHJlLWluaXRpYWxpemVzIGFuIGV4aXN0aW5nIG9uZS5cclxuICAgICAqIFxyXG4gICAgICogQHBhcmFtIG1ldGhvZCBUaGUgSFRUUCByZXF1ZXN0IG1ldGhvZCB0byB1c2UsIHN1Y2ggYXMgYFwiR0VUXCJgLCBgXCJQT1NUXCJgLCBgXCJQVVRcImAsIGBcIkRFTEVURVwiYCxcclxuICAgICAqICAgICAgICAgICAgICAgZXRjLiBJZ25vcmVkIGZvciBub24tSFRUUChTKSBVUkxzLlxyXG4gICAgICogQHBhcmFtIHVybCBBIHN0cmluZyBvciBhbnkgb3RoZXIgb2JqZWN0IHdpdGggYSBzdHJpbmdpZmllciDigJQgaW5jbHVkaW5nIGEgVVJMIG9iamVjdCDigJRcclxuICAgICAqICAgICAgICAgICAgdGhhdCBwcm92aWRlcyB0aGUgVVJMIG9mIHRoZSByZXNvdXJjZSB0byBzZW5kIHRoZSByZXF1ZXN0IHRvLlxyXG4gICAgICovXHJcbiAgICBvcGVuKG1ldGhvZDogc3RyaW5nLCB1cmw6IHN0cmluZyB8IFVSTCk6IHZvaWQ7XHJcbiAgICAvKipcclxuICAgICAqIEBwcml2YXRlXHJcbiAgICAgKi9cclxuICAgIG9wZW4obWV0aG9kOiBzdHJpbmcsIHVybDogc3RyaW5nIHwgVVJMLCBhc3luYzogYm9vbGVhbiwgdXNlcm5hbWU/OiBzdHJpbmcgfCBudWxsIHwgdW5kZWZpbmVkLCBwYXNzd29yZD86IHN0cmluZyB8IG51bGwgfCB1bmRlZmluZWQpOiB2b2lkO1xyXG4gICAgLyoqXHJcbiAgICAgKiBAcHJpdmF0ZVxyXG4gICAgICovXHJcbiAgICBvcGVuKG1ldGhvZDogdW5rbm93biwgdXJsOiB1bmtub3duLCBhc3luYz86IHVua25vd24sIHVzZXJuYW1lPzogdW5rbm93biwgcGFzc3dvcmQ/OiB1bmtub3duKTogdm9pZCB7XHJcbiAgICAgICAgdGhpcy5fbWV0aG9kID0gbWV0aG9kO1xyXG4gICAgICAgIHRoaXMuX3VybCA9IHVybDtcclxuICAgICAgICB0aGlzLnNldFJlYWR5U3RhdGUodGhpcy5PUEVORUQpO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogQWJvcnRzIHRoZSByZXF1ZXN0IGlmIGl0IGhhcyBhbHJlYWR5IGJlZW4gc2VudC4gV2hlbiBhIHJlcXVlc3QgaXMgYWJvcnRlZCwgaXRzIGByZWFkeVN0YXRlYFxyXG4gICAgICogaXMgY2hhbmdlZCB0byBgWE1MSHR0cFJlcXVlc3QuVU5TRU5UYCBhbmQgdGhlIHJlcXVlc3Qgc3RhdHVzIGNvZGUgaXMgc2V0IHRvIGAwYC5cclxuICAgICAqL1xyXG4gICAgYWJvcnQoKTogdm9pZCB7XHJcbiAgICAgICAgdGhpcy5fcmVhZHlTdGF0ZSA9IHRoaXMuVU5TRU5UO1xyXG4gICAgICAgIHRoaXMuX3N0YXR1cyA9IDA7XHJcbiAgICAgICAgdGhpcy5ldmVudERpc3BhdGNoKFwiYWJvcnRcIik7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBSZXR1cm5zIGFsbCB0aGUgcmVzcG9uc2UgaGVhZGVycywgc2VwYXJhdGVkIGJ5IENSTEYsIGFzIGEgc3RyaW5nLCBvciByZXR1cm5zIGBudWxsYFxyXG4gICAgICogaWYgbm8gcmVzcG9uc2UgaGFzIGJlZW4gcmVjZWl2ZWQuXHJcbiAgICAgKiBcclxuICAgICAqIEByZXR1cm5zIEFsbCB0aGUgcmVzcG9uc2UgaGVhZGVycywgc2VwYXJhdGVkIGJ5IENSTEYsIGFzIGEgc3RyaW5nLCBvciByZXR1cm5zIGBudWxsYFxyXG4gICAgICogICAgICAgICAgaWYgbm8gcmVzcG9uc2UgaGFzIGJlZW4gcmVjZWl2ZWQuXHJcbiAgICAgKi9cclxuICAgIGdldEFsbFJlc3BvbnNlSGVhZGVycygpOiBhbnkge1xyXG4gICAgICAgIGlmICh0aGlzLl9yZWFkeVN0YXRlIDwgdGhpcy5IRUFERVJTX1JFQ0VJVkVEKSByZXR1cm4gbnVsbDtcclxuICAgICAgICBjb25zdCByZXNwSGVhZGVyczogSHR0cEhlYWRlcnMgfCB1bmRlZmluZWQgPSB0aGlzLl9kYXRhU3RvcmFnZT8uaHR0cFJlc3BvbnNlLmhlYWRlcnM7XHJcbiAgICAgICAgaWYgKHJlc3BIZWFkZXJzKSByZXR1cm4gSHR0cEhlYWRlcnNVdGlsLnN0cmluZ2lmeShyZXNwSGVhZGVycyk7XHJcbiAgICAgICAgcmV0dXJuIG51bGw7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBTZW5kcyB0aGUgcmVxdWVzdCB0byB0aGUgc2VydmVyLlxyXG4gICAgICogXHJcbiAgICAgKiBAcGFyYW0gYm9keSBBIGJvZHkgb2YgZGF0YSB0byBiZSBzZW50IGluIHRoZSBYSFIgcmVxdWVzdC5cclxuICAgICAqL1xyXG4gICAgc2VuZChib2R5PzogRG9jdW1lbnQgfCBYTUxIdHRwUmVxdWVzdEJvZHlJbml0IHwgbnVsbCB8IHVuZGVmaW5lZCk6IHZvaWQge1xyXG4gICAgICAgIGNvbnN0IHN0YXJ0OiBudW1iZXIgPSB0aGlzLm5vdygpO1xyXG4gICAgICAgIGNvbnN0IHJlcXVlc3Q6IEh0dHBSZXF1ZXN0PGFueT4gPSB0aGlzLmJ1aWxkSHR0cFJlcXVlc3QoYm9keSk7XHJcbiAgICAgICAgY29uc3QgcmM6IFJvdXRlTW9ja0NvbmZpZyA9IHRoaXMuX3JvdXRlQ29uZmlnO1xyXG4gICAgICAgIGNvbnN0IGh0dHBSZXNwb25zZU1vY2s6IEh0dHBSZXNwb25zZU1vY2sgPSAocmMubWV0aG9kQ29uZmlnIGFzIGFueSkuZGF0YShyZXF1ZXN0LCByYy5wYXJhbWV0ZXJzKTtcclxuICAgICAgICBjb25zdCByZXNwb25zZURlbGF5OiBSZXNwb25zZURlbGF5ID0gSHR0cE1vY2tSZXNwb25zZURlbGF5VXRpbC5nZXRSZXNwb25zZURlbGF5KGh0dHBSZXNwb25zZU1vY2suZGVsYXkgfHwgMCk7XHJcbiAgICAgICAgY29uc3QgdGltZXI6IG51bWJlciA9IHJlc3BvbnNlRGVsYXkuZHVyYXRpb247XHJcbiAgICAgICAgY29uc3QgcmVxdWVzdE1ldGFkYXRhOiBIdHRwTW9ja1JlcXVlc3RNZXRhZGF0YSA9IHtcclxuICAgICAgICAgICAgc3RhcnQ6IHN0YXJ0LFxyXG4gICAgICAgICAgICBzdGFsbGVkOiByZXNwb25zZURlbGF5LnN0YWxsZWQsXHJcbiAgICAgICAgICAgIGR1cmF0aW9uOiB0aW1lcixcclxuICAgICAgICAgICAgdXJsOiBuZXcgVVJMKHRoaXMuX3VybCBhcyBhbnkpLFxyXG4gICAgICAgICAgICBpZDogVXVpZC5idWlsZCgpXHJcbiAgICAgICAgfTtcclxuICAgICAgICBjb25zdCBwcmVmZXRjaE1ldGFkYXRhOiBIdHRwTW9ja0xvZ2dpbmdQcmVmZXRjaE1ldGFkYXRhID0ge1xyXG4gICAgICAgICAgICByZXF1ZXN0OiByZXF1ZXN0LFxyXG4gICAgICAgICAgICByZXF1ZXN0TWV0YWRhdGE6IHJlcXVlc3RNZXRhZGF0YVxyXG4gICAgICAgIH07XHJcbiAgICAgICAgdGhpcy5fbG9nZ2VyLnByZWZldGNoKHByZWZldGNoTWV0YWRhdGEpO1xyXG4gICAgICAgIHRoaXMuX2xvYWRTdWJzY3JpcHRpb24gPSB0aGlzLmxvYWREYXRhKGh0dHBSZXNwb25zZU1vY2spLnN1YnNjcmliZSh7XHJcbiAgICAgICAgICAgIG5leHQ6IChkYXRhOiBhbnkpID0+IHtcclxuICAgICAgICAgICAgICAgIHRoaXMuc2V0RGF0YVN0b3JhZ2UoaHR0cFJlc3BvbnNlTW9jaywgcmVxdWVzdE1ldGFkYXRhLCBkYXRhKTtcclxuICAgICAgICAgICAgICAgIGNvbnN0IGVycm9yOiBIdHRwTW9ja0Vycm9yIHwgbnVsbCA9IHRoaXMuX2RhdGFTdG9yYWdlLmh0dHBSZXNwb25zZS5lcnJvcjtcclxuICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoKCk9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5zZXRSZWFkeVN0YXRlKHRoaXMuSEVBREVSU19SRUNFSVZFRCk7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKGVycm9yKSByZXR1cm4gdGhpcy5vbkVycm9yKHJlcXVlc3QsIGVycm9yKTtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLnNldFJlYWR5U3RhdGUodGhpcy5MT0FESU5HKTtcclxuICAgICAgICAgICAgICAgICAgICBjb25zdCByZXNwb25zZTogSHR0cFJlc3BvbnNlTW9jayA9IHRoaXMuX2RhdGFTdG9yYWdlLmh0dHBSZXNwb25zZTtcclxuICAgICAgICAgICAgICAgICAgICBpZiAoIXRoaXMuX3Byb2dyZXNzaXZlRG93bmxvYWQpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5fc3RhdHVzVGV4dCA9IHJlc3BvbnNlLnN0YXR1c1RleHQgfHwgRU1QVFlfU1RSSU5HO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLl9zdGF0dXMgPSByZXNwb25zZS5zdGF0dXMgfHwgMDtcclxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMub25Mb2FkQ29tcGxldGUocmVxdWVzdCk7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZG9Qcm9ncmVzc2l2ZURvd25sb2FkKHJlcXVlc3QpO1xyXG4gICAgICAgICAgICAgICAgfSwgdGltZXIpO1xyXG4gICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICBlcnJvcjogKGVycjogYW55KSA9PiB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLnNldERhdGFTdG9yYWdlKGh0dHBSZXNwb25zZU1vY2ssIHJlcXVlc3RNZXRhZGF0YSk7XHJcbiAgICAgICAgICAgICAgICB0aGlzLm9uRXJyb3IocmVxdWVzdCwgZXJyKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogU2V0cyB0aGUgdmFsdWUgb2YgYW4gSFRUUCByZXF1ZXN0IGhlYWRlci5cclxuICAgICAqIFxyXG4gICAgICogQHBhcmFtIG5hbWUgVGhlIG5hbWUgb2YgdGhlIGhlYWRlciB3aG9zZSB2YWx1ZSBpcyB0byBiZSBzZXQuXHJcbiAgICAgKiBAcGFyYW0gdmFsdWUgVGhlIHZhbHVlIHRvIHNldCBhcyB0aGUgYm9keSBvZiB0aGUgaGVhZGVyLlxyXG4gICAgICovXHJcbiAgICBzZXRSZXF1ZXN0SGVhZGVyKG5hbWU6IHN0cmluZywgdmFsdWU6IHN0cmluZyk6IHZvaWQge1xyXG4gICAgICAgIHRoaXMuX3JlcXVlc3RIZWFkZXJzID0gdGhpcy5fcmVxdWVzdEhlYWRlcnMuc2V0KG5hbWUsIHZhbHVlKTtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIEBwcml2YXRlIFxyXG4gICAgICovXHJcbiAgICBjb25zdHJ1Y3Rvcihyb3V0ZUNvbmZpZzogUm91dGVNb2NrQ29uZmlnLFxyXG4gICAgICAgICAgICAgICAgcHJpdmF0ZSBfbG9nZ2VyOiBIdHRwTW9ja0xvZ2dpbmdTZXJ2aWNlKSB7XHJcbiAgICAgICAgc3VwZXIoKTtcclxuICAgICAgICB0aGlzLl9yb3V0ZUNvbmZpZyA9IHJvdXRlQ29uZmlnO1xyXG4gICAgICAgIC8vIHJvdXRlQ29uZmlnLm1ldGhvZENvbmZpZy5kb3dubG9hZE1hbmFnZXJcclxuICAgICAgICB0aGlzLl9wcm9ncmVzc2l2ZURvd25sb2FkID0gZmFsc2U7XHJcbiAgICAgICAgdGhpcy5fcmVxdWVzdEhlYWRlcnMgPSBuZXcgSHR0cEhlYWRlcnMoKTtcclxuICAgIH1cclxuICAgIFxyXG4gICAgLyoqXHJcbiAgICAgKiBAcHJpdmF0ZSBcclxuICAgICAqIEludGVybmFsbHkgdXNlZCBieSB0aGUgZnJhbWV3b3JrIHRvIGRlbGV0ZSBhIGBEZWxlZ2F0ZVhocmAgaW5zdGFuY2UuXHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyBkZXN0cm95KCk6IHZvaWQge1xyXG4gICAgICAgIHRoaXMuX3JvdXRlQ29uZmlnID0gbnVsbCBhcyBhbnk7XHJcbiAgICAgICAgdGhpcy5fcmVxdWVzdEhlYWRlcnMgPSBudWxsIGFzIGFueTtcclxuICAgICAgICB0aGlzLl9kYXRhU3RvcmFnZSA9IG51bGwgYXMgYW55O1xyXG4gICAgICAgIGlmICh0aGlzLl9sb2FkU3Vic2NyaXB0aW9uKSB7XHJcbiAgICAgICAgICAgIHRoaXMuX2xvYWRTdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKTtcclxuICAgICAgICAgICAgdGhpcy5fbG9hZFN1YnNjcmlwdGlvbiA9IG51bGw7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogQHByaXZhdGUgXHJcbiAgICAgKi9cclxuICAgIHByaXZhdGUgZG9Qcm9ncmVzc2l2ZURvd25sb2FkKHJlcXVlc3Q6IEh0dHBSZXF1ZXN0PGFueT4pOiB2b2lkIHtcclxuICAgICAgICBjb25zdCB0b3RhbDogbnVtYmVyID0gdGhpcy5fZGF0YVN0b3JhZ2UudG90YWw7XHJcbiAgICAgICAgaWYgKHRvdGFsIDw9IDIwMCkge1xyXG4gICAgICAgICAgICBjb25zb2xlLndhcm4oXCJbQW5ndWxhciBUb29sYm94XTogQm9keSBjb250ZW50IGlzIHRvbyBzbWFsbCBmb3IgZW11bGF0aW5nIHByb2dyZXNzaXZlIGRvd25sb2FkISBNaW5pbXVtIHNpemUgaXMgMjAwIG9jdGV0cy5cIik7XHJcbiAgICAgICAgICAgIHJldHVybiB0aGlzLm9uTG9hZENvbXBsZXRlKHJlcXVlc3QpO1xyXG4gICAgICAgIH1cclxuICAgICAgICAvLyBUT0RPOiBhbWVsaW9yYXRlIHRoZSBmb2xsb3dpbmcgcHJvY2VzczpcclxuICAgICAgICBjb25zdCBzZWxmOiBEZWxlZ2F0ZVhociA9IHRoaXM7XHJcbiAgICAgICAgY29uc3QgY2h1bmNrU2l6ZTogbnVtYmVyID0gTWF0aC5mbG9vcih0b3RhbCAvIDEwKTtcclxuICAgICAgICBsZXQgY3Vyc29yOiBudW1iZXIgPSAwO1xyXG4gICAgICAgIHRoaXMuX3N0YXR1c1RleHQgPSBcIlBhcnRpYWwgQ29udGVudFwiO1xyXG4gICAgICAgIHRoaXMuX3N0YXR1cyA9IEh0dHBTdGF0dXNDb2RlLlBhcnRpYWxDb250ZW50O1xyXG4gICAgICAgIGNvbnN0IGlkeCA9IHNldEludGVydmFsKCgpPT4ge1xyXG4gICAgICAgICAgICBjdXJzb3IgKz0gY2h1bmNrU2l6ZTtcclxuICAgICAgICAgICAgaWYgKGN1cnNvciA+IHRvdGFsKSB7XHJcbiAgICAgICAgICAgICAgICBjdXJzb3IgPSB0b3RhbDtcclxuICAgICAgICAgICAgICAgIGNsZWFySW50ZXJ2YWwoaWR4KTtcclxuICAgICAgICAgICAgICAgIHNlbGYub25Mb2FkQ29tcGxldGUocmVxdWVzdCk7XHJcbiAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLl9kYXRhU3RvcmFnZS5sb2FkZWQgPSBjdXJzb3I7XHJcbiAgICAgICAgICAgICAgICBzZWxmLmRpc3BhdGNoUHJvZ3Jlc3NFdmVudCgpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfSwgMTAwKTtcclxuICAgIH1cclxuXHJcbiAgICBwcml2YXRlIGZpbmFsaXplUmVxdWVzdE1ldGFkYXRhKCk6IEh0dHBNb2NrUmVxdWVzdE1ldGFkYXRhIHtcclxuICAgICAgICBjb25zdCBkczogRGF0YVN0b3JhZ2UgPSB0aGlzLl9kYXRhU3RvcmFnZTtcclxuICAgICAgICBjb25zdCBtZXRhZGF0YTogSHR0cE1vY2tSZXF1ZXN0TWV0YWRhdGEgPSBkcy5yZXF1ZXN0TWV0YWRhdGE7XHJcbiAgICAgICAgY29uc3QgZHVyYXRpb246IG51bWJlciA9IHRoaXMubm93KCkgLSBtZXRhZGF0YS5zdGFydDtcclxuICAgICAgICBpZiAoZHVyYXRpb24gPiBtZXRhZGF0YS5kdXJhdGlvbikgbWV0YWRhdGEuZHVyYXRpb24gPSBkdXJhdGlvbjtcclxuICAgICAgICByZXR1cm4gbWV0YWRhdGE7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBAcHJpdmF0ZVxyXG4gICAgICovXHJcbiAgICBwcml2YXRlIG9uTG9hZENvbXBsZXRlKHJlcXVlc3Q6IEh0dHBSZXF1ZXN0PGFueT4pOiB2b2lkIHtcclxuICAgICAgICB0aGlzLl9kYXRhU3RvcmFnZS5sb2FkZWQgPSB0aGlzLl9kYXRhU3RvcmFnZS50b3RhbDtcclxuICAgICAgICB0aGlzLnNldFJlYWR5U3RhdGUodGhpcy5ET05FKTtcclxuICAgICAgICB0aGlzLmRpc3BhdGNoUHJvZ3Jlc3NFdmVudChcImxvYWRcIik7XHJcbiAgICAgICAgdGhpcy5fbG9nZ2VyLmluZm8odGhpcy5idWlsZE1ldGFkYXRhKHJlcXVlc3QpKTtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIEBwcml2YXRlXHJcbiAgICAgKi9cclxuICAgIHByaXZhdGUgb25FcnJvcihyZXF1ZXN0OiBIdHRwUmVxdWVzdDxhbnk+LCBlcnJvcjogSHR0cE1vY2tFcnJvcik6IHZvaWQge1xyXG4gICAgICAgIHRoaXMuX3N0YXR1cyA9IGVycm9yLnN0YXR1cztcclxuICAgICAgICB0aGlzLl9zdGF0dXNUZXh0ID0gZXJyb3Iuc3RhdHVzVGV4dDtcclxuICAgICAgICB0aGlzLnNldFJlYWR5U3RhdGUodGhpcy5ET05FKTtcclxuICAgICAgICB0aGlzLmRpc3BhdGNoUHJvZ3Jlc3NFdmVudChcImVycm9yXCIpO1xyXG4gICAgICAgIHRoaXMuX2xvZ2dlci5lcnJvcih0aGlzLmJ1aWxkTWV0YWRhdGEocmVxdWVzdCkpO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogQHByaXZhdGVcclxuICAgICAqL1xyXG4gICAgcHJpdmF0ZSBidWlsZE1ldGFkYXRhKHJlcXVlc3Q6IEh0dHBSZXF1ZXN0PGFueT4pOiBIdHRwTW9ja0xvZ2dpbmdNZXRhZGF0YSB7XHJcbiAgICAgICAgcmV0dXJuIEh0dHBNb2NrTG9nZ2luZ01ldGFkYXRhQnVpbGRlci5idWlsZCh0aGlzLCByZXF1ZXN0LCB0aGlzLmZpbmFsaXplUmVxdWVzdE1ldGFkYXRhKCkpO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogQHByaXZhdGVcclxuICAgICAqL1xyXG4gICAgcHJpdmF0ZSBldmVudERpc3BhdGNoKHR5cGU6IHN0cmluZyk6IHZvaWQge1xyXG4gICAgICAgIGNvbnN0IGV2ZW50OiBFdmVudCA9IG5ldyBFdmVudCh0eXBlKTtcclxuICAgICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoZXZlbnQsICd0YXJnZXQnLCBFVlRfUFJPUFNfQ09ORklHKTtcclxuICAgICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoZXZlbnQsICdjdXJyZW50VGFyZ2V0JywgRVZUX1BST1BTX0NPTkZJRyk7XHJcbiAgICAgICAgdGhpcy5kaXNwYXRjaEV2ZW50KGV2ZW50KTtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIEBwcml2YXRlIFxyXG4gICAgICovXHJcbiAgICBwcml2YXRlIGRpc3BhdGNoUHJvZ3Jlc3NFdmVudCh0eXBlOiBzdHJpbmcgPSBcInByb2dyZXNzXCIpOiB2b2lkIHtcclxuICAgICAgICBjb25zdCBkOiBhbnkgPSB0aGlzLl9kYXRhU3RvcmFnZTtcclxuICAgICAgICBjb25zdCBldmVudDogUHJvZ3Jlc3NFdmVudE1vY2sgPSBuZXcgUHJvZ3Jlc3NFdmVudE1vY2sodHlwZSk7XHJcbiAgICAgICAgZXZlbnQubG9hZGVkID0gZC5sb2FkZWQ7XHJcbiAgICAgICAgZXZlbnQudG90YWwgPSBkLnRvdGFsO1xyXG4gICAgICAgIHRoaXMuZGlzcGF0Y2hFdmVudChldmVudCk7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBAcHJpdmF0ZSBcclxuICAgICAqL1xyXG4gICAgcHJpdmF0ZSBzZXRSZWFkeVN0YXRlKHN0YXRlOiBudW1iZXIpOiB2b2lkIHtcclxuICAgICAgICB0aGlzLl9yZWFkeVN0YXRlID0gc3RhdGU7XHJcbiAgICAgICAgY29uc3QgZXZlbnQ6IGFueSA9IHRoaXMub25yZWFkeXN0YXRlY2hhbmdlO1xyXG4gICAgICAgIGlmIChldmVudCkgZXZlbnQuY2FsbCh0aGlzLCBSRUFEWV9TVEFURV9DSEFOR0VfRVZFTlQpO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogQHByaXZhdGUgXHJcbiAgICAgKi9cclxuICAgIHByaXZhdGUgbG9hZERhdGEoaHR0cFJlc3BvbnNlTW9jazogSHR0cFJlc3BvbnNlTW9jayk6IE9ic2VydmFibGU8YW55PiB7XHJcbiAgICAgICAgY29uc3QgcmVzcG9uc2VCb2R5OiBhbnkgfCBPYnNlcnZhYmxlPGFueT4gPSBodHRwUmVzcG9uc2VNb2NrLmJvZHk7XHJcbiAgICAgICAgcmV0dXJuIChyZXNwb25zZUJvZHkgaW5zdGFuY2VvZiBPYnNlcnZhYmxlKSA/IHJlc3BvbnNlQm9keSA6IG9mKHJlc3BvbnNlQm9keSk7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBAcHJpdmF0ZSBcclxuICAgICAqL1xyXG4gICAgcHJpdmF0ZSBzZXREYXRhU3RvcmFnZShyZXNwb25zZU1vY2s6IEh0dHBSZXNwb25zZU1vY2ssIHJlcXVlc3RNZXRhZGF0YTogSHR0cE1vY2tSZXF1ZXN0TWV0YWRhdGEsIGRhdGE6IGFueSA9IG51bGwpOiB2b2lkIHtcclxuICAgICAgICB0aGlzLl9kYXRhU3RvcmFnZSA9IERhdGFTdG9yYWdlQnVpbGRlci5idWlsZERhdGFTdG9yYWdlKHJlc3BvbnNlTW9jaywgZGF0YSwgcmVxdWVzdE1ldGFkYXRhKTtcclxuICAgIH1cclxuICAgIFxyXG4gICAgLyoqXHJcbiAgICAgKiBAcHJpdmF0ZSBcclxuICAgICAqL1xyXG4gICAgcHJpdmF0ZSBidWlsZEh0dHBSZXF1ZXN0KGJvZHk6IGFueSk6IEh0dHBSZXF1ZXN0PGFueT4ge1xyXG4gICAgICAgIGxldCBwYXJhbXM6IEh0dHBQYXJhbXMgPSBuZXcgSHR0cFBhcmFtcygpO1xyXG4gICAgICAgIGNvbnN0IGl0OiBJdGVyYWJsZUl0ZXJhdG9yPFtzdHJpbmcsIHN0cmluZ10+ID0gKHRoaXMuX3JvdXRlQ29uZmlnLnNlYXJjaFBhcmFtcyBhcyBhbnkpLmVudHJpZXMoKTtcclxuICAgICAgICBmb3IgKGNvbnN0IHBhaXIgb2YgaXQpIHBhcmFtcyA9IHBhcmFtcy5zZXQocGFpclswXSwgcGFpclsxXSk7XHJcbiAgICAgICAgY29uc3QgaW5pdDogYW55ID0ge1xyXG4gICAgICAgICAgICBwYXJhbXM6IHBhcmFtcyxcclxuICAgICAgICAgICAgaGVhZGVyczogdGhpcy5fcmVxdWVzdEhlYWRlcnMsXHJcbiAgICAgICAgICAgIHdpdGhDcmVkZW50aWFsczogdGhpcy53aXRoQ3JlZGVudGlhbHMsXHJcbiAgICAgICAgICAgIHJlc3BvbnNlVHlwZTogdGhpcy5yZXNwb25zZVR5cGUsXHJcbiAgICAgICAgICAgIHJlcG9ydFByb2dyZXNzOiB0aGlzLmhhc0V2ZW50TGlzdGVuZXIoXCJwcm9ncmVzc1wiKVxyXG4gICAgICAgICAgICAvLyBjb250ZXh0LCB0cmFuc2ZlckNhY2hlOiBub3QgdXNlZCBieSBBbmd1bGFyIGF0IHRoaXMgbGV2ZWwgb2YgQVBJXHJcbiAgICAgICAgfTtcclxuICAgICAgICByZXR1cm4gbmV3IEh0dHBSZXF1ZXN0PGFueT4odGhpcy5fbWV0aG9kIGFzIHN0cmluZywgdGhpcy5fdXJsIGFzIGFueSwgYm9keSwgaW5pdCk7XHJcbiAgICB9XHJcblxyXG4gICAgcHJpdmF0ZSBub3coKTogbnVtYmVyIHtcclxuICAgICAgICByZXR1cm4gRGF0ZS5ub3coKTtcclxuICAgIH1cclxufSJdfQ==
|
|
@@ -1,30 +0,0 @@
|
|
|
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, _logger) {
|
|
19
|
-
super();
|
|
20
|
-
this._httpMockService = _httpMockService;
|
|
21
|
-
this._logger = _logger;
|
|
22
|
-
}
|
|
23
|
-
/**
|
|
24
|
-
* @private
|
|
25
|
-
*/
|
|
26
|
-
build() {
|
|
27
|
-
return new XhrProxyImpl(this._httpMockService, this._logger);
|
|
28
|
-
}
|
|
29
|
-
}
|
|
30
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaHR0cC1tb2NrLWZhY3RvcnkuaW1wbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2FuZ3VsYXItdG9vbGJveC9zcmMvbGliL2ZyYW1ld29yay9tb2NrL2h0dHAveGhyL2h0dHAtbW9jay1mYWN0b3J5LmltcGwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7OztHQU1HO0FBRUgsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBRTdDLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUdoRDs7O0dBR0c7QUFDSCxNQUFNLE9BQU8sbUJBQW9CLFNBQVEsVUFBVTtJQUUvQzs7T0FFRztJQUNILFlBQW9CLGdCQUFpQyxFQUNqQyxPQUErQjtRQUMvQyxLQUFLLEVBQUUsQ0FBQztRQUZRLHFCQUFnQixHQUFoQixnQkFBZ0IsQ0FBaUI7UUFDakMsWUFBTyxHQUFQLE9BQU8sQ0FBd0I7SUFFbkQsQ0FBQztJQUVEOztPQUVHO0lBQ0ksS0FBSztRQUNSLE9BQU8sSUFBSSxZQUFZLENBQUMsSUFBSSxDQUFDLGdCQUFnQixFQUFFLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUNqRSxDQUFDO0NBQ0oiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcclxuICogQGxpY2Vuc2VcclxuICogQ29weXJpZ2h0IFBhc2NhbCBFQ0hFTUFOTi4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cclxuICpcclxuICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUgZm91bmQgaW5cclxuICogdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL3Bhc2NhbGVjaGVtYW5uLmNvbS9hbmd1bGFyLXRvb2xib3gvcmVzb3VyY2VzL2xpY2Vuc2VcclxuICovXHJcblxyXG5pbXBvcnQgeyBYaHJGYWN0b3J5IH0gZnJvbSBcIkBhbmd1bGFyL2NvbW1vblwiO1xyXG5pbXBvcnQgeyBIdHRwTW9ja1NlcnZpY2UgfSBmcm9tIFwiLi4vLi4vLi4vLi4vbW9kZWwvc2VydmljZS9tb2NrL2h0dHAvaHR0cC1tb2NrLnNlcnZpY2VcIjtcclxuaW1wb3J0IHsgWGhyUHJveHlJbXBsIH0gZnJvbSBcIi4veGhyLXByb3h5LWltcGxcIjtcclxuaW1wb3J0IHsgSHR0cE1vY2tMb2dnaW5nU2VydmljZSB9IGZyb20gXCIuLi8uLi8uLi8uLi9tb2RlbFwiO1xyXG5cclxuLyoqXHJcbiAqIEBwcml2YXRlXHJcbiAqIFRoZSBjb25jcmV0ZSBpbXBsZW1lbnRhdGlvbiBvZiB0aGUgYFhockZhY3RvcnlgIGludGVyZmFjZS5cclxuICovXHJcbmV4cG9ydCBjbGFzcyBYaHJQcm94eUZhY3RvcnlJbXBsIGV4dGVuZHMgWGhyRmFjdG9yeSB7XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBAcHJpdmF0ZVxyXG4gICAgICovXHJcbiAgICBjb25zdHJ1Y3Rvcihwcml2YXRlIF9odHRwTW9ja1NlcnZpY2U6IEh0dHBNb2NrU2VydmljZSxcclxuICAgICAgICAgICAgICAgIHByaXZhdGUgX2xvZ2dlcjogSHR0cE1vY2tMb2dnaW5nU2VydmljZSkge1xyXG4gICAgICAgIHN1cGVyKCk7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBAcHJpdmF0ZVxyXG4gICAgICovXHJcbiAgICBwdWJsaWMgYnVpbGQoKTogWE1MSHR0cFJlcXVlc3Qge1xyXG4gICAgICAgIHJldHVybiBuZXcgWGhyUHJveHlJbXBsKHRoaXMuX2h0dHBNb2NrU2VydmljZSwgdGhpcy5fbG9nZ2VyKTtcclxuICAgIH1cclxufVxyXG4iXX0=
|
|
@@ -1,20 +0,0 @@
|
|
|
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
|
-
import { HttpMockLoggingService } from "../../../../model";
|
|
12
|
-
/**
|
|
13
|
-
* A factory function that creates and returns a new `XhrFactory` object.
|
|
14
|
-
*
|
|
15
|
-
* @returns A new `XhrFactory` object.
|
|
16
|
-
*/
|
|
17
|
-
export const httpMockFactory = () => {
|
|
18
|
-
return new XhrProxyFactoryImpl(inject(HttpMockService), inject(HttpMockLoggingService));
|
|
19
|
-
};
|
|
20
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaHR0cC1tb2NrLWZhY3RvcnkuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9hbmd1bGFyLXRvb2xib3gvc3JjL2xpYi9mcmFtZXdvcmsvbW9jay9odHRwL3hoci9odHRwLW1vY2stZmFjdG9yeS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7O0dBTUc7QUFFSCxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3ZDLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSx1REFBdUQsQ0FBQztBQUN4RixPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUMvRCxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUUzRDs7OztHQUlHO0FBQ0gsTUFBTSxDQUFDLE1BQU0sZUFBZSxHQUFHLEdBQUUsRUFBRTtJQUMvQixPQUFPLElBQUksbUJBQW1CLENBQUMsTUFBTSxDQUFDLGVBQWUsQ0FBQyxFQUFFLE1BQU0sQ0FBQyxzQkFBc0IsQ0FBQyxDQUFDLENBQUM7QUFDNUYsQ0FBQyxDQUFBIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXHJcbiAqIEBsaWNlbnNlXHJcbiAqIENvcHlyaWdodCBQYXNjYWwgRUNIRU1BTk4uIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXHJcbiAqXHJcbiAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlIGZvdW5kIGluXHJcbiAqIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9wYXNjYWxlY2hlbWFubi5jb20vYW5ndWxhci10b29sYm94L3Jlc291cmNlcy9saWNlbnNlXHJcbiAqL1xyXG5cclxuaW1wb3J0IHsgaW5qZWN0IH0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcclxuaW1wb3J0IHsgSHR0cE1vY2tTZXJ2aWNlIH0gZnJvbSBcIi4uLy4uLy4uLy4uL21vZGVsL3NlcnZpY2UvbW9jay9odHRwL2h0dHAtbW9jay5zZXJ2aWNlXCI7XHJcbmltcG9ydCB7IFhoclByb3h5RmFjdG9yeUltcGwgfSBmcm9tIFwiLi9odHRwLW1vY2stZmFjdG9yeS5pbXBsXCI7XHJcbmltcG9ydCB7IEh0dHBNb2NrTG9nZ2luZ1NlcnZpY2UgfSBmcm9tIFwiLi4vLi4vLi4vLi4vbW9kZWxcIjtcclxuXHJcbi8qKlxyXG4gKiBBIGZhY3RvcnkgZnVuY3Rpb24gdGhhdCBjcmVhdGVzIGFuZCByZXR1cm5zIGEgbmV3IGBYaHJGYWN0b3J5YCBvYmplY3QuXHJcbiAqIFxyXG4gKiBAcmV0dXJucyBBIG5ldyBgWGhyRmFjdG9yeWAgb2JqZWN0LlxyXG4gKi9cclxuZXhwb3J0IGNvbnN0IGh0dHBNb2NrRmFjdG9yeSA9ICgpPT4ge1xyXG4gICAgcmV0dXJuIG5ldyBYaHJQcm94eUZhY3RvcnlJbXBsKGluamVjdChIdHRwTW9ja1NlcnZpY2UpLCBpbmplY3QoSHR0cE1vY2tMb2dnaW5nU2VydmljZSkpO1xyXG59XHJcbiJdfQ==
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
export * from './http-mock-factory';
|
|
2
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9hbmd1bGFyLXRvb2xib3gvc3JjL2xpYi9mcmFtZXdvcmsvbW9jay9odHRwL3hoci9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxjQUFjLHFCQUFxQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSAnLi9odHRwLW1vY2stZmFjdG9yeSc7Il19
|
|
@@ -1,123 +0,0 @@
|
|
|
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 { EventTargetImpl } from "../event/event-target.impl";
|
|
9
|
-
/**
|
|
10
|
-
* @private
|
|
11
|
-
*
|
|
12
|
-
* Elemenets marked as "Useless" are never invoked by the Angular framework.
|
|
13
|
-
*/
|
|
14
|
-
export class XhrBase extends EventTargetImpl {
|
|
15
|
-
constructor() {
|
|
16
|
-
super(...arguments);
|
|
17
|
-
/**
|
|
18
|
-
* @private
|
|
19
|
-
*
|
|
20
|
-
* XMLHTTPRequest API
|
|
21
|
-
*/
|
|
22
|
-
this.UNSENT = 0;
|
|
23
|
-
/**
|
|
24
|
-
* @private
|
|
25
|
-
*
|
|
26
|
-
* XMLHTTPRequest API
|
|
27
|
-
*/
|
|
28
|
-
this.OPENED = 1;
|
|
29
|
-
/**
|
|
30
|
-
* @private
|
|
31
|
-
*
|
|
32
|
-
* XMLHTTPRequest API
|
|
33
|
-
*/
|
|
34
|
-
this.HEADERS_RECEIVED = 2;
|
|
35
|
-
/**
|
|
36
|
-
* @private
|
|
37
|
-
*
|
|
38
|
-
* XMLHTTPRequest API
|
|
39
|
-
*/
|
|
40
|
-
this.LOADING = 3;
|
|
41
|
-
/**
|
|
42
|
-
* @private
|
|
43
|
-
*
|
|
44
|
-
* XMLHTTPRequest API
|
|
45
|
-
*/
|
|
46
|
-
this.DONE = 4;
|
|
47
|
-
/**
|
|
48
|
-
* @private
|
|
49
|
-
*
|
|
50
|
-
* XMLHTTPRequest API
|
|
51
|
-
*/
|
|
52
|
-
this.withCredentials = false;
|
|
53
|
-
/**
|
|
54
|
-
* @private
|
|
55
|
-
*
|
|
56
|
-
* XMLHTTPRequest API - Useless
|
|
57
|
-
*/
|
|
58
|
-
this.onabort = null;
|
|
59
|
-
/**
|
|
60
|
-
* @private
|
|
61
|
-
*
|
|
62
|
-
* XMLHTTPRequest API - Useless
|
|
63
|
-
*/
|
|
64
|
-
this.onerror = null;
|
|
65
|
-
/**
|
|
66
|
-
* @private
|
|
67
|
-
*
|
|
68
|
-
* XMLHTTPRequest API - Useless
|
|
69
|
-
*/
|
|
70
|
-
this.onload = null;
|
|
71
|
-
/**
|
|
72
|
-
* @private
|
|
73
|
-
*
|
|
74
|
-
* XMLHTTPRequest API - Useless
|
|
75
|
-
*/
|
|
76
|
-
this.onloadend = null;
|
|
77
|
-
/**
|
|
78
|
-
* @private
|
|
79
|
-
*
|
|
80
|
-
* XMLHTTPRequest API - Useless
|
|
81
|
-
*/
|
|
82
|
-
this.onloadstart = null;
|
|
83
|
-
/**
|
|
84
|
-
* @private
|
|
85
|
-
*
|
|
86
|
-
* XMLHTTPRequest API - Useless
|
|
87
|
-
*/
|
|
88
|
-
this.onprogress = null;
|
|
89
|
-
/**
|
|
90
|
-
* @private
|
|
91
|
-
*
|
|
92
|
-
* XMLHTTPRequest API - Useless
|
|
93
|
-
*/
|
|
94
|
-
this.onreadystatechange = null;
|
|
95
|
-
/**
|
|
96
|
-
* @private
|
|
97
|
-
*
|
|
98
|
-
* XMLHTTPRequest API - Useless
|
|
99
|
-
*/
|
|
100
|
-
this.ontimeout = null;
|
|
101
|
-
}
|
|
102
|
-
/**
|
|
103
|
-
* @private
|
|
104
|
-
*
|
|
105
|
-
* XMLHTTPRequest API - Useless
|
|
106
|
-
*/
|
|
107
|
-
get responseXML() {
|
|
108
|
-
return null;
|
|
109
|
-
}
|
|
110
|
-
/**
|
|
111
|
-
* @private
|
|
112
|
-
*
|
|
113
|
-
* XMLHTTPRequest API - Useless
|
|
114
|
-
*/
|
|
115
|
-
overrideMimeType(mime) { }
|
|
116
|
-
/**
|
|
117
|
-
* @private
|
|
118
|
-
*
|
|
119
|
-
* XMLHTTPRequest API - Useless
|
|
120
|
-
*/
|
|
121
|
-
getResponseHeader(name) { return null; }
|
|
122
|
-
}
|
|
123
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoieGhyLWJhc2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9hbmd1bGFyLXRvb2xib3gvc3JjL2xpYi9mcmFtZXdvcmsvbW9jay9odHRwL3hoci94aHItYmFzZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7O0dBTUc7QUFFSCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFFN0Q7Ozs7R0FJRztBQUNILE1BQU0sT0FBTyxPQUFRLFNBQVEsZUFBZTtJQUE1Qzs7UUFFSTs7OztXQUlHO1FBQ00sV0FBTSxHQUFHLENBQUMsQ0FBQztRQUVwQjs7OztXQUlHO1FBQ00sV0FBTSxHQUFHLENBQUMsQ0FBQztRQUVwQjs7OztXQUlHO1FBQ00scUJBQWdCLEdBQUcsQ0FBQyxDQUFDO1FBRTlCOzs7O1dBSUc7UUFDTSxZQUFPLEdBQUcsQ0FBQyxDQUFDO1FBRXJCOzs7O1dBSUc7UUFDTSxTQUFJLEdBQUcsQ0FBQyxDQUFDO1FBV2xCOzs7O1dBSUc7UUFDSCxvQkFBZSxHQUFZLEtBQUssQ0FBQztRQVNqQzs7OztXQUlHO1FBQ0gsWUFBTyxHQUEyRSxJQUFJLENBQUM7UUFFdkY7Ozs7V0FJRztRQUNILFlBQU8sR0FBMkUsSUFBSSxDQUFDO1FBRXZGOzs7O1dBSUc7UUFDSCxXQUFNLEdBQTJFLElBQUksQ0FBQztRQUV0Rjs7OztXQUlHO1FBQ0gsY0FBUyxHQUEyRSxJQUFJLENBQUM7UUFFekY7Ozs7V0FJRztRQUNILGdCQUFXLEdBQTJFLElBQUksQ0FBQztRQUUzRjs7OztXQUlHO1FBQ0gsZUFBVSxHQUEyRSxJQUFJLENBQUM7UUFFMUY7Ozs7V0FJRztRQUNILHVCQUFrQixHQUFzRCxJQUFJLENBQUM7UUFFN0U7Ozs7V0FJRztRQUNILGNBQVMsR0FBMkUsSUFBSSxDQUFDO0lBZTdGLENBQUM7SUE1Rkc7Ozs7T0FJRztJQUNILElBQUksV0FBVztRQUNYLE9BQU8sSUFBSSxDQUFDO0lBQ2hCLENBQUM7SUF3RUQ7Ozs7T0FJRztJQUNILGdCQUFnQixDQUFDLElBQVksSUFBUyxDQUFDO0lBRXZDOzs7O09BSUc7SUFDSCxpQkFBaUIsQ0FBQyxJQUFZLElBQW1CLE9BQU8sSUFBSSxDQUFBLENBQUMsQ0FBQztDQUNqRSIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxyXG4gKiBAbGljZW5zZVxyXG4gKiBDb3B5cmlnaHQgUGFzY2FsIEVDSEVNQU5OLiBBbGwgUmlnaHRzIFJlc2VydmVkLlxyXG4gKlxyXG4gKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZSBmb3VuZCBpblxyXG4gKiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vcGFzY2FsZWNoZW1hbm4uY29tL2FuZ3VsYXItdG9vbGJveC9yZXNvdXJjZXMvbGljZW5zZVxyXG4gKi9cclxuXHJcbmltcG9ydCB7IEV2ZW50VGFyZ2V0SW1wbCB9IGZyb20gXCIuLi9ldmVudC9ldmVudC10YXJnZXQuaW1wbFwiO1xyXG5cclxuLyoqXHJcbiAqIEBwcml2YXRlXHJcbiAqIFxyXG4gKiBFbGVtZW5ldHMgbWFya2VkIGFzIFwiVXNlbGVzc1wiIGFyZSBuZXZlciBpbnZva2VkIGJ5IHRoZSBBbmd1bGFyIGZyYW1ld29yay5cclxuICovXHJcbmV4cG9ydCBjbGFzcyBYaHJCYXNlIGV4dGVuZHMgRXZlbnRUYXJnZXRJbXBsIHtcclxuICAgIFxyXG4gICAgLyoqXHJcbiAgICAgKiBAcHJpdmF0ZVxyXG4gICAgICogXHJcbiAgICAgKiBYTUxIVFRQUmVxdWVzdCBBUElcclxuICAgICAqL1xyXG4gICAgcmVhZG9ubHkgVU5TRU5UID0gMDtcclxuICAgIFxyXG4gICAgLyoqXHJcbiAgICAgKiBAcHJpdmF0ZVxyXG4gICAgICogXHJcbiAgICAgKiBYTUxIVFRQUmVxdWVzdCBBUElcclxuICAgICAqL1xyXG4gICAgcmVhZG9ubHkgT1BFTkVEID0gMTtcclxuICAgIFxyXG4gICAgLyoqXHJcbiAgICAgKiBAcHJpdmF0ZVxyXG4gICAgICogXHJcbiAgICAgKiBYTUxIVFRQUmVxdWVzdCBBUElcclxuICAgICAqL1xyXG4gICAgcmVhZG9ubHkgSEVBREVSU19SRUNFSVZFRCA9IDI7XHJcbiAgICBcclxuICAgIC8qKlxyXG4gICAgICogQHByaXZhdGVcclxuICAgICAqIFxyXG4gICAgICogWE1MSFRUUFJlcXVlc3QgQVBJXHJcbiAgICAgKi9cclxuICAgIHJlYWRvbmx5IExPQURJTkcgPSAzO1xyXG4gICAgXHJcbiAgICAvKipcclxuICAgICAqIEBwcml2YXRlXHJcbiAgICAgKiBcclxuICAgICAqIFhNTEhUVFBSZXF1ZXN0IEFQSVxyXG4gICAgICovXHJcbiAgICByZWFkb25seSBET05FID0gNDtcclxuXHJcbiAgICAvKipcclxuICAgICAqIEBwcml2YXRlXHJcbiAgICAgKiBcclxuICAgICAqIFhNTEhUVFBSZXF1ZXN0IEFQSSAtIFVzZWxlc3NcclxuICAgICAqL1xyXG4gICAgZ2V0IHJlc3BvbnNlWE1MKCk6IERvY3VtZW50IHwgbnVsbCB7XHJcbiAgICAgICAgcmV0dXJuIG51bGw7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBAcHJpdmF0ZVxyXG4gICAgICogXHJcbiAgICAgKiBYTUxIVFRQUmVxdWVzdCBBUElcclxuICAgICAqL1xyXG4gICAgd2l0aENyZWRlbnRpYWxzOiBib29sZWFuID0gZmFsc2U7XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBAcHJpdmF0ZVxyXG4gICAgICogXHJcbiAgICAgKiBYTUxIVFRQUmVxdWVzdCBBUElcclxuICAgICAqL1xyXG4gICAgdGltZW91dCE6IG51bWJlcjtcclxuXHJcbiAgICAvKipcclxuICAgICAqIEBwcml2YXRlXHJcbiAgICAgKiBcclxuICAgICAqIFhNTEhUVFBSZXF1ZXN0IEFQSSAtIFVzZWxlc3NcclxuICAgICAqL1xyXG4gICAgb25hYm9ydDogKCh0aGlzOiBYTUxIdHRwUmVxdWVzdCwgZXY6IFByb2dyZXNzRXZlbnQ8RXZlbnRUYXJnZXQ+KSA9PiBhbnkpIHwgbnVsbCA9IG51bGw7XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBAcHJpdmF0ZVxyXG4gICAgICogXHJcbiAgICAgKiBYTUxIVFRQUmVxdWVzdCBBUEkgLSBVc2VsZXNzXHJcbiAgICAgKi9cclxuICAgIG9uZXJyb3I6ICgodGhpczogWE1MSHR0cFJlcXVlc3QsIGV2OiBQcm9ncmVzc0V2ZW50PEV2ZW50VGFyZ2V0PikgPT4gYW55KSB8IG51bGwgPSBudWxsO1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogQHByaXZhdGVcclxuICAgICAqIFxyXG4gICAgICogWE1MSFRUUFJlcXVlc3QgQVBJIC0gVXNlbGVzc1xyXG4gICAgICovXHJcbiAgICBvbmxvYWQ6ICgodGhpczogWE1MSHR0cFJlcXVlc3QsIGV2OiBQcm9ncmVzc0V2ZW50PEV2ZW50VGFyZ2V0PikgPT4gYW55KSB8IG51bGwgPSBudWxsO1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogQHByaXZhdGVcclxuICAgICAqIFxyXG4gICAgICogWE1MSFRUUFJlcXVlc3QgQVBJIC0gVXNlbGVzc1xyXG4gICAgICovXHJcbiAgICBvbmxvYWRlbmQ6ICgodGhpczogWE1MSHR0cFJlcXVlc3QsIGV2OiBQcm9ncmVzc0V2ZW50PEV2ZW50VGFyZ2V0PikgPT4gYW55KSB8IG51bGwgPSBudWxsO1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogQHByaXZhdGVcclxuICAgICAqIFxyXG4gICAgICogWE1MSFRUUFJlcXVlc3QgQVBJIC0gVXNlbGVzc1xyXG4gICAgICovXHJcbiAgICBvbmxvYWRzdGFydDogKCh0aGlzOiBYTUxIdHRwUmVxdWVzdCwgZXY6IFByb2dyZXNzRXZlbnQ8RXZlbnRUYXJnZXQ+KSA9PiBhbnkpIHwgbnVsbCA9IG51bGw7XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBAcHJpdmF0ZVxyXG4gICAgICogXHJcbiAgICAgKiBYTUxIVFRQUmVxdWVzdCBBUEkgLSBVc2VsZXNzXHJcbiAgICAgKi9cclxuICAgIG9ucHJvZ3Jlc3M6ICgodGhpczogWE1MSHR0cFJlcXVlc3QsIGV2OiBQcm9ncmVzc0V2ZW50PEV2ZW50VGFyZ2V0PikgPT4gYW55KSB8IG51bGwgPSBudWxsO1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogQHByaXZhdGVcclxuICAgICAqIFxyXG4gICAgICogWE1MSFRUUFJlcXVlc3QgQVBJIC0gVXNlbGVzc1xyXG4gICAgICovXHJcbiAgICBvbnJlYWR5c3RhdGVjaGFuZ2U6ICgodGhpczogWE1MSHR0cFJlcXVlc3QsIGV2OiBFdmVudCkgPT4gYW55KSB8IG51bGwgPSBudWxsO1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogQHByaXZhdGVcclxuICAgICAqIFxyXG4gICAgICogWE1MSFRUUFJlcXVlc3QgQVBJIC0gVXNlbGVzc1xyXG4gICAgICovXHJcbiAgICBvbnRpbWVvdXQ6ICgodGhpczogWE1MSHR0cFJlcXVlc3QsIGV2OiBQcm9ncmVzc0V2ZW50PEV2ZW50VGFyZ2V0PikgPT4gYW55KSB8IG51bGwgPSBudWxsO1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogQHByaXZhdGVcclxuICAgICAqIFxyXG4gICAgICogWE1MSFRUUFJlcXVlc3QgQVBJIC0gVXNlbGVzc1xyXG4gICAgICovXHJcbiAgICBvdmVycmlkZU1pbWVUeXBlKG1pbWU6IHN0cmluZyk6IHZvaWQge31cclxuXHJcbiAgICAvKipcclxuICAgICAqIEBwcml2YXRlXHJcbiAgICAgKiBcclxuICAgICAqIFhNTEhUVFBSZXF1ZXN0IEFQSSAtIFVzZWxlc3NcclxuICAgICAqL1xyXG4gICAgZ2V0UmVzcG9uc2VIZWFkZXIobmFtZTogc3RyaW5nKTogc3RyaW5nIHwgbnVsbCB7IHJldHVybiBudWxsIH1cclxufSJdfQ==
|