@vcd/sdk 15.0.8 → 17.0.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.
Files changed (38) hide show
  1. package/{esm2020 → esm2022}/client/client/api.result.service.mjs +4 -4
  2. package/esm2022/client/client/logging.interceptor.mjs +44 -0
  3. package/esm2022/client/client/request.headers.interceptor.mjs +100 -0
  4. package/esm2022/client/client/response.normalization.interceptor.mjs +59 -0
  5. package/esm2022/client/client/vcd.api.client.mjs +603 -0
  6. package/{esm2020 → esm2022}/client/client/vcd.http.client.mjs +6 -6
  7. package/esm2022/client/client/vcd.transfer.client.mjs +166 -0
  8. package/esm2022/client/query/filter.builder.mjs +195 -0
  9. package/esm2022/client/query/query.builder.mjs +79 -0
  10. package/esm2022/common/container-hooks.mjs +85 -0
  11. package/{esm2020 → esm2022}/main.mjs +7 -7
  12. package/{fesm2020 → fesm2022}/vcd-sdk.mjs +54 -54
  13. package/{fesm2020 → fesm2022}/vcd-sdk.mjs.map +1 -1
  14. package/open_source_license_vcd_ui_sdk_17.0.0_ga.txt +393 -0
  15. package/package.json +8 -14
  16. package/VMware-vcd_ui_sdk-15.0.8-ODP.tar.gz +0 -0
  17. package/esm2020/client/client/logging.interceptor.mjs +0 -44
  18. package/esm2020/client/client/request.headers.interceptor.mjs +0 -100
  19. package/esm2020/client/client/response.normalization.interceptor.mjs +0 -59
  20. package/esm2020/client/client/vcd.api.client.mjs +0 -603
  21. package/esm2020/client/client/vcd.transfer.client.mjs +0 -166
  22. package/esm2020/client/query/filter.builder.mjs +0 -195
  23. package/esm2020/client/query/query.builder.mjs +0 -79
  24. package/esm2020/common/container-hooks.mjs +0 -85
  25. package/fesm2015/vcd-sdk.mjs +0 -1505
  26. package/fesm2015/vcd-sdk.mjs.map +0 -1
  27. package/open_source_license_@vcdsdk_15.0.8_GA.txt +0 -22623
  28. /package/{esm2020 → esm2022}/client/client/constants.mjs +0 -0
  29. /package/{esm2020 → esm2022}/client/client/index.mjs +0 -0
  30. /package/{esm2020 → esm2022}/client/client/types.mjs +0 -0
  31. /package/{esm2020 → esm2022}/client/index.mjs +0 -0
  32. /package/{esm2020 → esm2022}/client/openapi.mjs +0 -0
  33. /package/{esm2020 → esm2022}/client/query/index.mjs +0 -0
  34. /package/{esm2020 → esm2022}/common/index.mjs +0 -0
  35. /package/{esm2020 → esm2022}/core/index.mjs +0 -0
  36. /package/{esm2020 → esm2022}/core/plugin.module.mjs +0 -0
  37. /package/{esm2020 → esm2022}/public-api.mjs +0 -0
  38. /package/{esm2020 → esm2022}/vcd-sdk.mjs +0 -0
@@ -47,15 +47,15 @@ export class VcdHttpClient extends HttpClient {
47
47
  this.loggingInterceptor = loggingInterceptor;
48
48
  this.requestHeadersInterceptor = requestHeadersInterceptor;
49
49
  }
50
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.1.2", ngImport: i0, type: VcdHttpClient, deps: [{ token: i1.HttpBackend }, { token: i2.LoggingInterceptor }, { token: i3.RequestHeadersInterceptor }, { token: i4.ResponseNormalizationInterceptor }, { token: VCD_HTTP_INTERCEPTORS, optional: true }], target: i0.ɵɵFactoryTarget.Injectable }); }
51
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.1.2", ngImport: i0, type: VcdHttpClient }); }
50
52
  }
51
- VcdHttpClient.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.0", ngImport: i0, type: VcdHttpClient, deps: [{ token: i1.HttpBackend }, { token: i2.LoggingInterceptor }, { token: i3.RequestHeadersInterceptor }, { token: i4.ResponseNormalizationInterceptor }, { token: VCD_HTTP_INTERCEPTORS, optional: true }], target: i0.ɵɵFactoryTarget.Injectable });
52
- VcdHttpClient.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.2.0", ngImport: i0, type: VcdHttpClient });
53
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.0", ngImport: i0, type: VcdHttpClient, decorators: [{
53
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.2", ngImport: i0, type: VcdHttpClient, decorators: [{
54
54
  type: Injectable
55
- }], ctorParameters: function () { return [{ type: i1.HttpBackend }, { type: i2.LoggingInterceptor }, { type: i3.RequestHeadersInterceptor }, { type: i4.ResponseNormalizationInterceptor }, { type: undefined, decorators: [{
55
+ }], ctorParameters: () => [{ type: i1.HttpBackend }, { type: i2.LoggingInterceptor }, { type: i3.RequestHeadersInterceptor }, { type: i4.ResponseNormalizationInterceptor }, { type: undefined, decorators: [{
56
56
  type: Optional
57
57
  }, {
58
58
  type: Inject,
59
59
  args: [VCD_HTTP_INTERCEPTORS]
60
- }] }]; } });
61
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmNkLmh0dHAuY2xpZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdmNkL3Nkay9zcmMvY2xpZW50L2NsaWVudC92Y2QuaHR0cC5jbGllbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFjLFVBQVUsRUFBdUQsTUFBTSxzQkFBc0IsQ0FBQztBQUNuSCxPQUFPLEVBQUMsTUFBTSxFQUFFLFVBQVUsRUFBRSxRQUFRLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFLM0QsT0FBTyxFQUFDLHFCQUFxQixFQUFDLE1BQU0sWUFBWSxDQUFDOzs7Ozs7QUFFakQ7O0dBRUc7QUFDSCxNQUFNLHlCQUF5QjtJQUMzQixZQUFvQixJQUFpQixFQUFVLFdBQTRCO1FBQXZELFNBQUksR0FBSixJQUFJLENBQWE7UUFBVSxnQkFBVyxHQUFYLFdBQVcsQ0FBaUI7SUFBRyxDQUFDO0lBRS9FLE1BQU0sQ0FBQyxHQUFxQjtRQUN4QixPQUFPLElBQUksQ0FBQyxXQUFXLENBQUMsU0FBUyxDQUFDLEdBQUcsRUFBRSxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDdEQsQ0FBQztDQUNKO0FBRUQ7Ozs7OztHQU1HO0FBRUgsTUFBTSxPQUFPLGFBQWMsU0FBUSxVQUFVO0lBV3pDOzs7Ozs7O09BT0c7SUFDSCxZQUFZLFdBQXdCLEVBQ3hCLGtCQUFzQyxFQUN0Qyx5QkFBb0QsRUFDcEQsZ0NBQWtFLEVBQ2Ysa0JBQXFDO1FBRWhHLE1BQU0sWUFBWSxHQUFzQjtZQUNwQyxrQkFBa0I7WUFDbEIseUJBQXlCO1lBQ3pCLGdDQUFnQztZQUNoQyxHQUFHLENBQUMsa0JBQWtCLElBQUksRUFBRSxDQUFDO1NBQ2hDLENBQUM7UUFDRixNQUFNLEtBQUssR0FBRyxZQUFZLENBQUMsV0FBVyxDQUNsQyxDQUFDLElBQUksRUFBRSxXQUFXLEVBQUUsRUFBRSxDQUFDLElBQUkseUJBQXlCLENBQUMsSUFBSSxFQUFFLFdBQVcsQ0FBQyxFQUN2RSxXQUFXLENBQ2QsQ0FBQztRQUNGLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQztRQVo4Qyx1QkFBa0IsR0FBbEIsa0JBQWtCLENBQW1CO1FBYWhHLElBQUksQ0FBQyxrQkFBa0IsR0FBRyxrQkFBa0IsQ0FBQztRQUM3QyxJQUFJLENBQUMseUJBQXlCLEdBQUcseUJBQXlCLENBQUM7SUFDL0QsQ0FBQzs7MEdBdENRLGFBQWEsd0tBdUJVLHFCQUFxQjs4R0F2QjVDLGFBQWE7MkZBQWIsYUFBYTtrQkFEekIsVUFBVTs7MEJBd0JNLFFBQVE7OzBCQUFJLE1BQU07MkJBQUMscUJBQXFCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtIdHRwQmFja2VuZCwgSHR0cENsaWVudCwgSHR0cEV2ZW50LCBIdHRwSGFuZGxlciwgSHR0cEludGVyY2VwdG9yLCBIdHRwUmVxdWVzdH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnO1xuaW1wb3J0IHtJbmplY3QsIEluamVjdGFibGUsIE9wdGlvbmFsfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7T2JzZXJ2YWJsZX0gZnJvbSAncnhqcyc7XG5pbXBvcnQge0xvZ2dpbmdJbnRlcmNlcHRvcn0gZnJvbSAnLi9sb2dnaW5nLmludGVyY2VwdG9yJztcbmltcG9ydCB7UmVxdWVzdEhlYWRlcnNJbnRlcmNlcHRvcn0gZnJvbSAnLi9yZXF1ZXN0LmhlYWRlcnMuaW50ZXJjZXB0b3InO1xuaW1wb3J0IHtSZXNwb25zZU5vcm1hbGl6YXRpb25JbnRlcmNlcHRvcn0gZnJvbSAnLi9yZXNwb25zZS5ub3JtYWxpemF0aW9uLmludGVyY2VwdG9yJztcbmltcG9ydCB7VkNEX0hUVFBfSU5URVJDRVBUT1JTfSBmcm9tIFwiLi4vLi4vY29yZVwiO1xuXG4vKipcbiAqIEFuZ3VsYXIncyBIdHRwSW50ZXJjZXB0b3JIYW5kbGVyIGlzIG5vdCBwdWJsaWNseSBleHBvc2VkLiAgVGhpcyBpcyBhIGNsb25lIG9mIGl0LlxuICovXG5jbGFzcyBWY2RIdHRwSW50ZXJjZXB0b3JIYW5kbGVyIGltcGxlbWVudHMgSHR0cEhhbmRsZXIge1xuICAgIGNvbnN0cnVjdG9yKHByaXZhdGUgbmV4dDogSHR0cEhhbmRsZXIsIHByaXZhdGUgaW50ZXJjZXB0b3I6IEh0dHBJbnRlcmNlcHRvcikge31cblxuICAgIGhhbmRsZShyZXE6IEh0dHBSZXF1ZXN0PGFueT4pOiBPYnNlcnZhYmxlPEh0dHBFdmVudDxhbnk+PiB7XG4gICAgICAgIHJldHVybiB0aGlzLmludGVyY2VwdG9yLmludGVyY2VwdChyZXEsIHRoaXMubmV4dCk7XG4gICAgfVxufVxuXG4vKipcbiAqIFRoaXMgaXMgYSBzcGVjaWFsaXN0IHN1YmNsYXNzIG9mIEh0dHBDbGllbnQuICBUaGUgSHR0cENsaWVudCB0aGF0IGlzIGRlZmluZWQvaW1wb3J0ZWRcbiAqIGJ5IEh0dHBDbGllbnRNb2R1bGUgaXMgYSBzaW5nbGV0b24gZnJvbSB0aGUgY29udGFpbmVyLCBtZWFuaW5nIHRoYXQgYWxsIGV4dGVuc2lvbnMgd291bGRcbiAqIGdldCB0aGUgc2FtZSBvbmUuICBXZSBzdWItY2xhc3MgaXQgc28gdGhhdCBlYWNoIGV4dGVuc2lvbiBnZXRzIHRoZWlyIG93biBpbnN0YW5jZS5cbiAqIEV4dGVuc2lvbiBjb25zdW1lcnMgc2hvdWxkIGluamVjdCB0aGlzLlxuICogQHNlZSBIdHRwQ2xpZW50XG4gKi9cbkBJbmplY3RhYmxlKClcbmV4cG9ydCBjbGFzcyBWY2RIdHRwQ2xpZW50IGV4dGVuZHMgSHR0cENsaWVudCB7XG4gICAgLyoqXG4gICAgICogUHJvdmlkZSBhY2Nlc3MgdG8gdGhlIGxvZ2dpbmcgaW50ZXJjZXB0b3IgZm9yIGVuYWJsaW5nL2Rpc2FibGluZyBhbmQgY29uZmlndXJpbmcuXG4gICAgICovXG4gICAgcmVhZG9ubHkgbG9nZ2luZ0ludGVyY2VwdG9yOiBMb2dnaW5nSW50ZXJjZXB0b3I7XG5cbiAgICAvKipcbiAgICAgKiBQcm92aWRlIGFjY2VzcyB0byB0aGUgaGVhZGVycyBpbnRlcmNlcHRvciBmb3IgZW5hYmxpbmcvZGlzYWJsaW5nIGFuZCBjb25maWd1cmluZy5cbiAgICAgKi9cbiAgICByZWFkb25seSByZXF1ZXN0SGVhZGVyc0ludGVyY2VwdG9yOiBSZXF1ZXN0SGVhZGVyc0ludGVyY2VwdG9yO1xuXG4gICAgLyoqXG4gICAgICogQ3JlYXRlIGFuIEh0dHBDbGllbnQgd2l0aCB0aGUgbG9nZ2luZyBhbmQgaGVhZGVyIGludGVyY2VwdG9ycyBpbiB0aGUgY2hhaW4uXG4gICAgICogQHBhcmFtIGh0dHBCYWNrZW5kIGJhY2tlbmQgKGxpa2VseSBpbmplY3RlZCBmcm9tIEh0dHBDbGllbnRNb2R1bGUpXG4gICAgICogQHBhcmFtIGxvZ2dpbmdJbnRlcmNlcHRvciB0aGUgbG9nZ2luZyBpbnRlcmNlcHRvclxuICAgICAqIEBwYXJhbSByZXF1ZXN0SGVhZGVyc0ludGVyY2VwdG9yIHRoZSByZXF1ZXN0IGhlYWRlciBpbnRlcmNlcHRvclxuICAgICAqIEBwYXJhbSByZXNwb25zZU5vcm1hbGl6YXRpb25JbnRlcmNlcHRvclxuICAgICAqIEBwYXJhbSBjdXN0b21JbnRlcmNlcHRvcnNcbiAgICAgKi9cbiAgICBjb25zdHJ1Y3RvcihodHRwQmFja2VuZDogSHR0cEJhY2tlbmQsXG4gICAgICAgICAgICAgICAgbG9nZ2luZ0ludGVyY2VwdG9yOiBMb2dnaW5nSW50ZXJjZXB0b3IsXG4gICAgICAgICAgICAgICAgcmVxdWVzdEhlYWRlcnNJbnRlcmNlcHRvcjogUmVxdWVzdEhlYWRlcnNJbnRlcmNlcHRvcixcbiAgICAgICAgICAgICAgICByZXNwb25zZU5vcm1hbGl6YXRpb25JbnRlcmNlcHRvcjogUmVzcG9uc2VOb3JtYWxpemF0aW9uSW50ZXJjZXB0b3IsXG4gICAgICAgICAgICAgICAgQE9wdGlvbmFsKCkgQEluamVjdChWQ0RfSFRUUF9JTlRFUkNFUFRPUlMpIHByaXZhdGUgY3VzdG9tSW50ZXJjZXB0b3JzOiBIdHRwSW50ZXJjZXB0b3JbXSxcbiAgICApIHtcbiAgICAgICAgY29uc3QgaW50ZXJjZXB0b3JzOiBIdHRwSW50ZXJjZXB0b3JbXSA9IFtcbiAgICAgICAgICAgIGxvZ2dpbmdJbnRlcmNlcHRvcixcbiAgICAgICAgICAgIHJlcXVlc3RIZWFkZXJzSW50ZXJjZXB0b3IsXG4gICAgICAgICAgICByZXNwb25zZU5vcm1hbGl6YXRpb25JbnRlcmNlcHRvcixcbiAgICAgICAgICAgIC4uLihjdXN0b21JbnRlcmNlcHRvcnMgPz8gW10pLFxuICAgICAgICBdO1xuICAgICAgICBjb25zdCBjaGFpbiA9IGludGVyY2VwdG9ycy5yZWR1Y2VSaWdodChcbiAgICAgICAgICAgIChuZXh0LCBpbnRlcmNlcHRvcikgPT4gbmV3IFZjZEh0dHBJbnRlcmNlcHRvckhhbmRsZXIobmV4dCwgaW50ZXJjZXB0b3IpLFxuICAgICAgICAgICAgaHR0cEJhY2tlbmRcbiAgICAgICAgKTtcbiAgICAgICAgc3VwZXIoY2hhaW4pO1xuICAgICAgICB0aGlzLmxvZ2dpbmdJbnRlcmNlcHRvciA9IGxvZ2dpbmdJbnRlcmNlcHRvcjtcbiAgICAgICAgdGhpcy5yZXF1ZXN0SGVhZGVyc0ludGVyY2VwdG9yID0gcmVxdWVzdEhlYWRlcnNJbnRlcmNlcHRvcjtcbiAgICB9XG59XG4iXX0=
60
+ }] }] });
61
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmNkLmh0dHAuY2xpZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdmNkL3Nkay9zcmMvY2xpZW50L2NsaWVudC92Y2QuaHR0cC5jbGllbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFjLFVBQVUsRUFBdUQsTUFBTSxzQkFBc0IsQ0FBQztBQUNuSCxPQUFPLEVBQUMsTUFBTSxFQUFFLFVBQVUsRUFBRSxRQUFRLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFLM0QsT0FBTyxFQUFDLHFCQUFxQixFQUFDLE1BQU0sWUFBWSxDQUFDOzs7Ozs7QUFFakQ7O0dBRUc7QUFDSCxNQUFNLHlCQUF5QjtJQUMzQixZQUFvQixJQUFpQixFQUFVLFdBQTRCO1FBQXZELFNBQUksR0FBSixJQUFJLENBQWE7UUFBVSxnQkFBVyxHQUFYLFdBQVcsQ0FBaUI7SUFBRyxDQUFDO0lBRS9FLE1BQU0sQ0FBQyxHQUFxQjtRQUN4QixPQUFPLElBQUksQ0FBQyxXQUFXLENBQUMsU0FBUyxDQUFDLEdBQUcsRUFBRSxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDdEQsQ0FBQztDQUNKO0FBRUQ7Ozs7OztHQU1HO0FBRUgsTUFBTSxPQUFPLGFBQWMsU0FBUSxVQUFVO0lBV3pDOzs7Ozs7O09BT0c7SUFDSCxZQUFZLFdBQXdCLEVBQ3hCLGtCQUFzQyxFQUN0Qyx5QkFBb0QsRUFDcEQsZ0NBQWtFLEVBQ2Ysa0JBQXFDO1FBRWhHLE1BQU0sWUFBWSxHQUFzQjtZQUNwQyxrQkFBa0I7WUFDbEIseUJBQXlCO1lBQ3pCLGdDQUFnQztZQUNoQyxHQUFHLENBQUMsa0JBQWtCLElBQUksRUFBRSxDQUFDO1NBQ2hDLENBQUM7UUFDRixNQUFNLEtBQUssR0FBRyxZQUFZLENBQUMsV0FBVyxDQUNsQyxDQUFDLElBQUksRUFBRSxXQUFXLEVBQUUsRUFBRSxDQUFDLElBQUkseUJBQXlCLENBQUMsSUFBSSxFQUFFLFdBQVcsQ0FBQyxFQUN2RSxXQUFXLENBQ2QsQ0FBQztRQUNGLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQztRQVo4Qyx1QkFBa0IsR0FBbEIsa0JBQWtCLENBQW1CO1FBYWhHLElBQUksQ0FBQyxrQkFBa0IsR0FBRyxrQkFBa0IsQ0FBQztRQUM3QyxJQUFJLENBQUMseUJBQXlCLEdBQUcseUJBQXlCLENBQUM7SUFDL0QsQ0FBQzs4R0F0Q1EsYUFBYSx3S0F1QlUscUJBQXFCO2tIQXZCNUMsYUFBYTs7MkZBQWIsYUFBYTtrQkFEekIsVUFBVTs7MEJBd0JNLFFBQVE7OzBCQUFJLE1BQU07MkJBQUMscUJBQXFCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtIdHRwQmFja2VuZCwgSHR0cENsaWVudCwgSHR0cEV2ZW50LCBIdHRwSGFuZGxlciwgSHR0cEludGVyY2VwdG9yLCBIdHRwUmVxdWVzdH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnO1xuaW1wb3J0IHtJbmplY3QsIEluamVjdGFibGUsIE9wdGlvbmFsfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7T2JzZXJ2YWJsZX0gZnJvbSAncnhqcyc7XG5pbXBvcnQge0xvZ2dpbmdJbnRlcmNlcHRvcn0gZnJvbSAnLi9sb2dnaW5nLmludGVyY2VwdG9yJztcbmltcG9ydCB7UmVxdWVzdEhlYWRlcnNJbnRlcmNlcHRvcn0gZnJvbSAnLi9yZXF1ZXN0LmhlYWRlcnMuaW50ZXJjZXB0b3InO1xuaW1wb3J0IHtSZXNwb25zZU5vcm1hbGl6YXRpb25JbnRlcmNlcHRvcn0gZnJvbSAnLi9yZXNwb25zZS5ub3JtYWxpemF0aW9uLmludGVyY2VwdG9yJztcbmltcG9ydCB7VkNEX0hUVFBfSU5URVJDRVBUT1JTfSBmcm9tIFwiLi4vLi4vY29yZVwiO1xuXG4vKipcbiAqIEFuZ3VsYXIncyBIdHRwSW50ZXJjZXB0b3JIYW5kbGVyIGlzIG5vdCBwdWJsaWNseSBleHBvc2VkLiAgVGhpcyBpcyBhIGNsb25lIG9mIGl0LlxuICovXG5jbGFzcyBWY2RIdHRwSW50ZXJjZXB0b3JIYW5kbGVyIGltcGxlbWVudHMgSHR0cEhhbmRsZXIge1xuICAgIGNvbnN0cnVjdG9yKHByaXZhdGUgbmV4dDogSHR0cEhhbmRsZXIsIHByaXZhdGUgaW50ZXJjZXB0b3I6IEh0dHBJbnRlcmNlcHRvcikge31cblxuICAgIGhhbmRsZShyZXE6IEh0dHBSZXF1ZXN0PGFueT4pOiBPYnNlcnZhYmxlPEh0dHBFdmVudDxhbnk+PiB7XG4gICAgICAgIHJldHVybiB0aGlzLmludGVyY2VwdG9yLmludGVyY2VwdChyZXEsIHRoaXMubmV4dCk7XG4gICAgfVxufVxuXG4vKipcbiAqIFRoaXMgaXMgYSBzcGVjaWFsaXN0IHN1YmNsYXNzIG9mIEh0dHBDbGllbnQuICBUaGUgSHR0cENsaWVudCB0aGF0IGlzIGRlZmluZWQvaW1wb3J0ZWRcbiAqIGJ5IEh0dHBDbGllbnRNb2R1bGUgaXMgYSBzaW5nbGV0b24gZnJvbSB0aGUgY29udGFpbmVyLCBtZWFuaW5nIHRoYXQgYWxsIGV4dGVuc2lvbnMgd291bGRcbiAqIGdldCB0aGUgc2FtZSBvbmUuICBXZSBzdWItY2xhc3MgaXQgc28gdGhhdCBlYWNoIGV4dGVuc2lvbiBnZXRzIHRoZWlyIG93biBpbnN0YW5jZS5cbiAqIEV4dGVuc2lvbiBjb25zdW1lcnMgc2hvdWxkIGluamVjdCB0aGlzLlxuICogQHNlZSBIdHRwQ2xpZW50XG4gKi9cbkBJbmplY3RhYmxlKClcbmV4cG9ydCBjbGFzcyBWY2RIdHRwQ2xpZW50IGV4dGVuZHMgSHR0cENsaWVudCB7XG4gICAgLyoqXG4gICAgICogUHJvdmlkZSBhY2Nlc3MgdG8gdGhlIGxvZ2dpbmcgaW50ZXJjZXB0b3IgZm9yIGVuYWJsaW5nL2Rpc2FibGluZyBhbmQgY29uZmlndXJpbmcuXG4gICAgICovXG4gICAgcmVhZG9ubHkgbG9nZ2luZ0ludGVyY2VwdG9yOiBMb2dnaW5nSW50ZXJjZXB0b3I7XG5cbiAgICAvKipcbiAgICAgKiBQcm92aWRlIGFjY2VzcyB0byB0aGUgaGVhZGVycyBpbnRlcmNlcHRvciBmb3IgZW5hYmxpbmcvZGlzYWJsaW5nIGFuZCBjb25maWd1cmluZy5cbiAgICAgKi9cbiAgICByZWFkb25seSByZXF1ZXN0SGVhZGVyc0ludGVyY2VwdG9yOiBSZXF1ZXN0SGVhZGVyc0ludGVyY2VwdG9yO1xuXG4gICAgLyoqXG4gICAgICogQ3JlYXRlIGFuIEh0dHBDbGllbnQgd2l0aCB0aGUgbG9nZ2luZyBhbmQgaGVhZGVyIGludGVyY2VwdG9ycyBpbiB0aGUgY2hhaW4uXG4gICAgICogQHBhcmFtIGh0dHBCYWNrZW5kIGJhY2tlbmQgKGxpa2VseSBpbmplY3RlZCBmcm9tIEh0dHBDbGllbnRNb2R1bGUpXG4gICAgICogQHBhcmFtIGxvZ2dpbmdJbnRlcmNlcHRvciB0aGUgbG9nZ2luZyBpbnRlcmNlcHRvclxuICAgICAqIEBwYXJhbSByZXF1ZXN0SGVhZGVyc0ludGVyY2VwdG9yIHRoZSByZXF1ZXN0IGhlYWRlciBpbnRlcmNlcHRvclxuICAgICAqIEBwYXJhbSByZXNwb25zZU5vcm1hbGl6YXRpb25JbnRlcmNlcHRvclxuICAgICAqIEBwYXJhbSBjdXN0b21JbnRlcmNlcHRvcnNcbiAgICAgKi9cbiAgICBjb25zdHJ1Y3RvcihodHRwQmFja2VuZDogSHR0cEJhY2tlbmQsXG4gICAgICAgICAgICAgICAgbG9nZ2luZ0ludGVyY2VwdG9yOiBMb2dnaW5nSW50ZXJjZXB0b3IsXG4gICAgICAgICAgICAgICAgcmVxdWVzdEhlYWRlcnNJbnRlcmNlcHRvcjogUmVxdWVzdEhlYWRlcnNJbnRlcmNlcHRvcixcbiAgICAgICAgICAgICAgICByZXNwb25zZU5vcm1hbGl6YXRpb25JbnRlcmNlcHRvcjogUmVzcG9uc2VOb3JtYWxpemF0aW9uSW50ZXJjZXB0b3IsXG4gICAgICAgICAgICAgICAgQE9wdGlvbmFsKCkgQEluamVjdChWQ0RfSFRUUF9JTlRFUkNFUFRPUlMpIHByaXZhdGUgY3VzdG9tSW50ZXJjZXB0b3JzOiBIdHRwSW50ZXJjZXB0b3JbXSxcbiAgICApIHtcbiAgICAgICAgY29uc3QgaW50ZXJjZXB0b3JzOiBIdHRwSW50ZXJjZXB0b3JbXSA9IFtcbiAgICAgICAgICAgIGxvZ2dpbmdJbnRlcmNlcHRvcixcbiAgICAgICAgICAgIHJlcXVlc3RIZWFkZXJzSW50ZXJjZXB0b3IsXG4gICAgICAgICAgICByZXNwb25zZU5vcm1hbGl6YXRpb25JbnRlcmNlcHRvcixcbiAgICAgICAgICAgIC4uLihjdXN0b21JbnRlcmNlcHRvcnMgPz8gW10pLFxuICAgICAgICBdO1xuICAgICAgICBjb25zdCBjaGFpbiA9IGludGVyY2VwdG9ycy5yZWR1Y2VSaWdodChcbiAgICAgICAgICAgIChuZXh0LCBpbnRlcmNlcHRvcikgPT4gbmV3IFZjZEh0dHBJbnRlcmNlcHRvckhhbmRsZXIobmV4dCwgaW50ZXJjZXB0b3IpLFxuICAgICAgICAgICAgaHR0cEJhY2tlbmRcbiAgICAgICAgKTtcbiAgICAgICAgc3VwZXIoY2hhaW4pO1xuICAgICAgICB0aGlzLmxvZ2dpbmdJbnRlcmNlcHRvciA9IGxvZ2dpbmdJbnRlcmNlcHRvcjtcbiAgICAgICAgdGhpcy5yZXF1ZXN0SGVhZGVyc0ludGVyY2VwdG9yID0gcmVxdWVzdEhlYWRlcnNJbnRlcmNlcHRvcjtcbiAgICB9XG59XG4iXX0=
@@ -0,0 +1,166 @@
1
+ import { HttpHeaders } from '@angular/common/http';
2
+ import { Observable, throwError } from 'rxjs';
3
+ import { catchError, flatMap, map, retry, switchMap } from 'rxjs/operators';
4
+ /**
5
+ * Default chunk size is 50MiB. This is equal to the chunk size the VCD UI uses for library uploads.
6
+ */
7
+ export const MAX_CHUNK_SIZE = 50 * 1024 * 1024;
8
+ /**
9
+ * How many times to retry a chunk upload.
10
+ */
11
+ export const MAX_CHUNK_RETRY_COUNT = 5;
12
+ /**
13
+ * A special error thrown by the transfer client. It gives access to the causing error, and the final progress
14
+ * before the error occurred.
15
+ */
16
+ export class TransferError extends Error {
17
+ constructor(message, originalError, lastProgress) {
18
+ super(message);
19
+ this.originalError = originalError;
20
+ this.lastProgress = lastProgress;
21
+ }
22
+ }
23
+ /**
24
+ * This is used to upload files to a VCD API transfer URL. It is not suggested to create this class - instead
25
+ * use the startTransfer method in VcdApiClient.
26
+ */
27
+ export class VcdTransferClient {
28
+ /**
29
+ * Create a transfer client.
30
+ * @param httpClient the http client to be used
31
+ * @param transferUrl the URL to upload to
32
+ */
33
+ constructor(httpClient, transferUrl, maxChunkSize = MAX_CHUNK_SIZE, maxChunkRetryCount = MAX_CHUNK_RETRY_COUNT) {
34
+ this.httpClient = httpClient;
35
+ this.transferUrl = transferUrl;
36
+ this.maxChunkSize = maxChunkSize;
37
+ this.maxChunkRetryCount = maxChunkRetryCount;
38
+ }
39
+ /**
40
+ * Upload data, optionally listening for progress updates.
41
+ * @param source what to upload.
42
+ * @param progressObserver (optional) this will get progress notifications during the upload
43
+ * @returns fetails of the finished upload.
44
+ * @throws TransferError when a chunk upload fails.
45
+ */
46
+ upload(source, progressObserver) {
47
+ // Cache the client and url so they don't change from under us.
48
+ const { httpClient, transferUrl, maxChunkSize, maxChunkRetryCount } = this;
49
+ // Compute static information used through the upload.
50
+ const filename = source.name || '<blob>';
51
+ const totalChunks = Math.ceil(source.size / maxChunkSize);
52
+ const totalBytes = source.size;
53
+ const startTimeMs = new Date().getTime();
54
+ let retryCount = 0;
55
+ // This helper function creates a TransferProgress object for sending to the progressObserver.
56
+ // It relies on the above static information, hence being nested.
57
+ function createTransferProgress(retryNumber, rtryCount, chunksSent) {
58
+ const chunksRemaining = totalChunks - chunksSent;
59
+ const bytesSent = Math.min(chunksSent * maxChunkSize, totalBytes);
60
+ const bytesRemaining = totalBytes - bytesSent;
61
+ const percent = bytesSent / totalBytes * 100;
62
+ const timeTakenMs = new Date().getTime() - startTimeMs;
63
+ const estimatedTotalTimeMs = (bytesSent / bytesRemaining) * timeTakenMs;
64
+ const estimatedTimeRemainingMs = Math.max(estimatedTotalTimeMs - timeTakenMs, 0);
65
+ return {
66
+ filename, transferUrl, retryNumber, retryCount: rtryCount,
67
+ chunksSent, chunksRemaining, bytesSent, bytesRemaining,
68
+ percent, timeTakenMs, estimatedTimeRemainingMs
69
+ };
70
+ }
71
+ // This is the main chunk upload function
72
+ function transferChunk(chunkIndex) {
73
+ // Calculate chunk details.
74
+ const chunkStart = chunkIndex * maxChunkSize;
75
+ const chunkEnd = Math.min(chunkStart + maxChunkSize, totalBytes);
76
+ const contentRangeHeader = `bytes ${chunkStart}-${chunkEnd - 1}/${totalBytes}`;
77
+ // Dispatch progress
78
+ if (progressObserver) {
79
+ const progress = createTransferProgress(0, retryCount, chunkIndex);
80
+ progressObserver.next(progress);
81
+ }
82
+ // Read in the chunk
83
+ return Observable.create(observer => {
84
+ const chunkSlice = source.slice(chunkStart, chunkEnd);
85
+ const fileReader = new FileReader();
86
+ fileReader.onerror = err => {
87
+ observer.error(err);
88
+ };
89
+ fileReader.onabort = err => {
90
+ observer.error(err);
91
+ };
92
+ fileReader.onload = () => {
93
+ };
94
+ fileReader.onloadend = () => {
95
+ observer.next(fileReader.result);
96
+ observer.complete();
97
+ };
98
+ return fileReader.readAsArrayBuffer(chunkSlice);
99
+ // Transfer the chunk
100
+ }).pipe(
101
+ // Upon read error, abort the upload process. No point retrying read failures.
102
+ catchError((e) => {
103
+ // Abandon the upload and propagate a consumable error.
104
+ const progress = createTransferProgress(0, retryCount, chunkIndex);
105
+ return throwError(() => new TransferError('Read error', e, progress));
106
+ }),
107
+ // Upon successful read, transfer the chunk.
108
+ switchMap((data) => {
109
+ let retryNumber = 0;
110
+ return httpClient.put(transferUrl, data, {
111
+ headers: new HttpHeaders({
112
+ 'Content-Range': contentRangeHeader
113
+ }),
114
+ responseType: 'text'
115
+ }).pipe(
116
+ // This is called upon any chunk upload failure.
117
+ catchError((e) => {
118
+ // Increase the total retry count.
119
+ retryCount++;
120
+ // Increase the current chunk retry number.
121
+ retryNumber++;
122
+ // Dispatch progress (the retry information has changed).
123
+ if (progressObserver) {
124
+ const progress = createTransferProgress(retryNumber, retryCount, chunkIndex);
125
+ progressObserver.next(progress);
126
+ }
127
+ // Rethrow the error so that the "retry" call handles it.
128
+ return throwError(() => e);
129
+ }),
130
+ // Retry the chunk upload up to the limit - this will run the entire chain again.
131
+ retry(maxChunkRetryCount),
132
+ // This is called when all retries for the chunk are exhausted.
133
+ catchError((e) => {
134
+ // Abandon the upload and propagate a consumable error.
135
+ const progress = createTransferProgress(retryNumber, retryCount, chunkIndex);
136
+ return throwError(() => new TransferError('Transfer error', e, progress));
137
+ }));
138
+ }));
139
+ }
140
+ // This creates the final transfer progress, dispatches it, and returns the transfer result.
141
+ function finishUpload() {
142
+ const transferProgress = createTransferProgress(0, retryCount, totalChunks);
143
+ if (progressObserver) {
144
+ progressObserver.next(transferProgress);
145
+ progressObserver.complete();
146
+ }
147
+ const transferResult = {
148
+ filename: transferProgress.filename,
149
+ transferUrl: transferProgress.transferUrl,
150
+ retryCount: transferProgress.retryCount,
151
+ chunksSent: transferProgress.chunksSent,
152
+ bytesSent: transferProgress.bytesSent,
153
+ timeTakenMs: transferProgress.timeTakenMs
154
+ };
155
+ return transferResult;
156
+ }
157
+ // Upload all of the chunks
158
+ let chain = transferChunk(0);
159
+ for (let currentChunk = 1; currentChunk < totalChunks; currentChunk++) {
160
+ chain = chain.pipe(flatMap(() => transferChunk(currentChunk)));
161
+ }
162
+ // Finish transfer
163
+ return chain.pipe(map(finishUpload));
164
+ }
165
+ }
166
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmNkLnRyYW5zZmVyLmNsaWVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3ZjZC9zZGsvc3JjL2NsaWVudC9jbGllbnQvdmNkLnRyYW5zZmVyLmNsaWVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUMsV0FBVyxFQUFlLE1BQU0sc0JBQXNCLENBQUM7QUFDL0QsT0FBTyxFQUFDLFVBQVUsRUFBWSxVQUFVLEVBQUMsTUFBTSxNQUFNLENBQUM7QUFDdEQsT0FBTyxFQUFDLFVBQVUsRUFBVSxPQUFPLEVBQVEsR0FBRyxFQUFVLEtBQUssRUFBRSxTQUFTLEVBQU0sTUFBTSxnQkFBZ0IsQ0FBQztBQUdyRzs7R0FFRztBQUNILE1BQU0sQ0FBQyxNQUFNLGNBQWMsR0FBRyxFQUFFLEdBQUcsSUFBSSxHQUFHLElBQUksQ0FBQztBQUUvQzs7R0FFRztBQUNILE1BQU0sQ0FBQyxNQUFNLHFCQUFxQixHQUFHLENBQUMsQ0FBQztBQWlHdkM7OztHQUdHO0FBQ0gsTUFBTSxPQUFPLGFBQWMsU0FBUSxLQUFLO0lBQ3BDLFlBQVksT0FBZSxFQUFXLGFBQWtCLEVBQVcsWUFBOEI7UUFDN0YsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBRG1CLGtCQUFhLEdBQWIsYUFBYSxDQUFLO1FBQVcsaUJBQVksR0FBWixZQUFZLENBQWtCO0lBRWpHLENBQUM7Q0FDSjtBQUVEOzs7R0FHRztBQUNILE1BQU0sT0FBTyxpQkFBaUI7SUFDMUI7Ozs7T0FJRztJQUNILFlBQW1CLFVBQXlCLEVBQVMsV0FBbUIsRUFDckQsZUFBZSxjQUFjLEVBQVMscUJBQXFCLHFCQUFxQjtRQURoRixlQUFVLEdBQVYsVUFBVSxDQUFlO1FBQVMsZ0JBQVcsR0FBWCxXQUFXLENBQVE7UUFDckQsaUJBQVksR0FBWixZQUFZLENBQWlCO1FBQVMsdUJBQWtCLEdBQWxCLGtCQUFrQixDQUF3QjtJQUNuRyxDQUFDO0lBRUQ7Ozs7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RUFBRSxnQkFBZ0IsQ0FBQyxVQUFVO2dCQUN2QyxVQUFVLEVBQUUsZ0JBQWdCLENBQUMsVUFBVTtnQkFDdkMsU0FBUyxFQUFFLGdCQUFnQixDQUFDLFNBQVM7Z0JBQ3JDLFdBQVcsRUFBRSxnQkFBZ0IsQ0FBQyxXQUFXO2FBQzVDLENBQUM7WUFDRixPQUFPLGNBQWMsQ0FBQztRQUMxQixDQUFDO1FBRUQsMkJBQTJCO1FBQzNCLElBQUksS0FBSyxHQUFHLGFBQWEsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUM3QixLQUFLLElBQUksWUFBWSxHQUFHLENBQUMsRUFBRSxZQUFZLEdBQUcsV0FBVyxFQUFFLFlBQVksRUFBRSxFQUFFLENBQUM7WUFDcEUsS0FBSyxHQUFHLEtBQUssQ0FBQyxJQUFJLENBQ2QsT0FBTyxDQUFDLEdBQUcsRUFBRSxDQUFDLGFBQWEsQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUM3QyxDQUFDO1FBQ04sQ0FBQztRQUVELGtCQUFrQjtRQUNsQixPQUFPLEtBQUssQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUM7SUFDekMsQ0FBQztDQUNKIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtIdHRwSGVhZGVycywgSHR0cFJlc3BvbnNlfSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCc7XG5pbXBvcnQge09ic2VydmFibGUsIE9ic2VydmVyLCB0aHJvd0Vycm9yfSBmcm9tICdyeGpzJztcbmltcG9ydCB7Y2F0Y2hFcnJvciwgZXhwYW5kLCBmbGF0TWFwLCBsYXN0LCBtYXAsIHJlZHVjZSwgcmV0cnksIHN3aXRjaE1hcCwgdGFwfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQge1ZjZEh0dHBDbGllbnR9IGZyb20gJy4vdmNkLmh0dHAuY2xpZW50JztcblxuLyoqXG4gKiBEZWZhdWx0IGNodW5rIHNpemUgaXMgNTBNaUIuICBUaGlzIGlzIGVxdWFsIHRvIHRoZSBjaHVuayBzaXplIHRoZSBWQ0QgVUkgdXNlcyBmb3IgbGlicmFyeSB1cGxvYWRzLlxuICovXG5leHBvcnQgY29uc3QgTUFYX0NIVU5LX1NJWkUgPSA1MCAqIDEwMjQgKiAxMDI0O1xuXG4vKipcbiAqIEhvdyBtYW55IHRpbWVzIHRvIHJldHJ5IGEgY2h1bmsgdXBsb2FkLlxuICovXG5leHBvcnQgY29uc3QgTUFYX0NIVU5LX1JFVFJZX0NPVU5UID0gNTtcblxuLyoqXG4gKiBEZXRhaWxzIGFib3V0IGEgY29tcGxldGVkIGZpbGUgdHJhbnNmZXIuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgVHJhbnNmZXJSZXN1bHQge1xuICAgIC8qKlxuICAgICAqIEZpbGVuYW1lIGJlaW5nIHRyYW5zZmVycmVkLlxuICAgICAqL1xuICAgIGZpbGVuYW1lOiBzdHJpbmd8JzxibG9iPic7XG5cbiAgICAvKipcbiAgICAgKiBVUkwgYmVpbmcgdXNlZCBmb3IgdGhlIHRyYW5zZmVyLlxuICAgICAqL1xuICAgIHRyYW5zZmVyVXJsOiBzdHJpbmc7XG5cbiAgICAvKipcbiAgICAgKiBIb3cgbWFueSByZXRyaWVzIGluIHRvdGFsIHdlcmUgcmVxdWlyZWRcbiAgICAgKi9cbiAgICByZXRyeUNvdW50OiBudW1iZXI7XG5cbiAgICAvKipcbiAgICAgKiBUaGUgbnVtYmVyIG9mIGNodW5rcyB0aGF0IGhhdmUgYmVlbiBzZW50LlxuICAgICAqL1xuICAgIGNodW5rc1NlbnQ6IG51bWJlcjtcblxuICAgIC8qKlxuICAgICAqIEhvdyBtYW55IGJ5dGVzIGhhdmUgYmVlbiBzZW50LlxuICAgICAqL1xuICAgIGJ5dGVzU2VudDogbnVtYmVyO1xuXG4gICAgLyoqXG4gICAgICogSG93IG1hbnkgbWlsbGlzZWNvbmRzIHRoYXQgaGF2ZSBlbGFwc2VkIHNpbmNlIHN0YXJ0aW5nIHRoZSB0cmFuc2Zlci5cbiAgICAgKi9cbiAgICB0aW1lVGFrZW5NczogbnVtYmVyO1xufVxuXG4vKipcbiAqIERldGFpbHMgYWJvdXQgYSBmaWxlIHRyYW5zZmVyIGluIHByb2dyZXNzLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFRyYW5zZmVyUHJvZ3Jlc3Mge1xuICAgIC8qKlxuICAgICAqIEZpbGVuYW1lIGJlaW5nIHRyYW5zZmVycmVkLlxuICAgICAqL1xuICAgIGZpbGVuYW1lOiBzdHJpbmd8JzxibG9iPic7XG5cbiAgICAvKipcbiAgICAgKiBVUkwgYmVpbmcgdXNlZCBmb3IgdGhlIHRyYW5zZmVyLlxuICAgICAqL1xuICAgIHRyYW5zZmVyVXJsOiBzdHJpbmc7XG5cbiAgICAvKipcbiAgICAgKiBUaGUgY3VycmVudCByZXRyeSBudW1iZXIgZm9yIHRoZSBjdXJyZW50IGNodW5rLlxuICAgICAqL1xuICAgIHJldHJ5TnVtYmVyOiBudW1iZXI7XG5cbiAgICAvKipcbiAgICAgKiBUaGUgbnVtYmVyIG9mIHJldHJpZXMgaW4gdG90YWwuXG4gICAgICovXG4gICAgcmV0cnlDb3VudDogbnVtYmVyO1xuXG4gICAgLyoqXG4gICAgICogVGhlIG51bWJlciBvZiBjaHVua3MgdGhhdCBoYXZlIGJlZW4gc2VudC5cbiAgICAgKi9cbiAgICBjaHVua3NTZW50OiBudW1iZXI7XG5cbiAgICAvKipcbiAgICAgKiBUaGUgbnVtYmVyIG9mIGNodW5rcyByZW1haW5pbmcuXG4gICAgICovXG4gICAgY2h1bmtzUmVtYWluaW5nOiBudW1iZXI7XG5cbiAgICAvKipcbiAgICAgKiBIb3cgbWFueSBieXRlcyBoYXZlIGJlZW4gc2VudC5cbiAgICAgKi9cbiAgICBieXRlc1NlbnQ6IG51bWJlcjtcblxuICAgIC8qKlxuICAgICAqIEhvdyBtYW55IGJ5dGVzIHJlbWFpbmluZyB0byBiZSBzZW50LlxuICAgICAqL1xuICAgIGJ5dGVzUmVtYWluaW5nOiBudW1iZXI7XG5cbiAgICAvKipcbiAgICAgKiBQZXJjZW50YWdlIGNvbXBsZXRpb24uXG4gICAgICovXG4gICAgcGVyY2VudDogbnVtYmVyO1xuXG4gICAgLyoqXG4gICAgICogSG93IG1hbnkgbWlsbGlzZWNvbmRzIHRoYXQgaGF2ZSBlbGFwc2VkIHNpbmNlIHN0YXJ0aW5nIHRoZSB0cmFuc2Zlci5cbiAgICAgKi9cbiAgICB0aW1lVGFrZW5NczogbnVtYmVyO1xuXG4gICAgLyoqXG4gICAgICogTmFpdmUgZXN0aW1hdGUgb2YgdGltZSByZW1haW5pbmcuICBUaGlzIGlzIG5vdCBzY2llbnRpZmljIGF0IGFsbCAtIGEgc2ltcGxlIGxpbmVhciBleHRyYXBvbGF0aW9uLlxuICAgICAqL1xuICAgIGVzdGltYXRlZFRpbWVSZW1haW5pbmdNczogbnVtYmVyO1xufVxuXG4vKipcbiAqIEEgc3BlY2lhbCBlcnJvciB0aHJvd24gYnkgdGhlIHRyYW5zZmVyIGNsaWVudC4gIEl0IGdpdmVzIGFjY2VzcyB0byB0aGUgY2F1c2luZyBlcnJvciwgYW5kIHRoZSBmaW5hbCBwcm9ncmVzc1xuICogYmVmb3JlIHRoZSBlcnJvciBvY2N1cnJlZC5cbiAqL1xuZXhwb3J0IGNsYXNzIFRyYW5zZmVyRXJyb3IgZXh0ZW5kcyBFcnJvciB7XG4gICAgY29uc3RydWN0b3IobWVzc2FnZTogc3RyaW5nLCByZWFkb25seSBvcmlnaW5hbEVycm9yOiBhbnksIHJlYWRvbmx5IGxhc3RQcm9ncmVzczogVHJhbnNmZXJQcm9ncmVzcykge1xuICAgICAgICBzdXBlcihtZXNzYWdlKTtcbiAgICB9XG59XG5cbi8qKlxuICogVGhpcyBpcyB1c2VkIHRvIHVwbG9hZCBmaWxlcyB0byBhIFZDRCBBUEkgdHJhbnNmZXIgVVJMLiAgSXQgaXMgbm90IHN1Z2dlc3RlZCB0byBjcmVhdGUgdGhpcyBjbGFzcyAtIGluc3RlYWRcbiAqIHVzZSB0aGUgc3RhcnRUcmFuc2ZlciBtZXRob2QgaW4gVmNkQXBpQ2xpZW50LlxuICovXG5leHBvcnQgY2xhc3MgVmNkVHJhbnNmZXJDbGllbnQge1xuICAgIC8qKlxuICAgICAqIENyZWF0ZSBhIHRyYW5zZmVyIGNsaWVudC5cbiAgICAgKiBAcGFyYW0gaHR0cENsaWVudCB0aGUgaHR0cCBjbGllbnQgdG8gYmUgdXNlZFxuICAgICAqIEBwYXJhbSB0cmFuc2ZlclVybCB0aGUgVVJMIHRvIHVwbG9hZCB0b1xuICAgICAqL1xuICAgIGNvbnN0cnVjdG9yKHB1YmxpYyBodHRwQ2xpZW50OiBWY2RIdHRwQ2xpZW50LCBwdWJsaWMgdHJhbnNmZXJVcmw6IHN0cmluZyxcbiAgICAgICAgICAgICAgICBwdWJsaWMgbWF4Q2h1bmtTaXplID0gTUFYX0NIVU5LX1NJWkUsIHB1YmxpYyBtYXhDaHVua1JldHJ5Q291bnQgPSBNQVhfQ0hVTktfUkVUUllfQ09VTlQpIHtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBVcGxvYWQgZGF0YSwgb3B0aW9uYWxseSBsaXN0ZW5pbmcgZm9yIHByb2dyZXNzIHVwZGF0ZXMuXG4gICAgICogQHBhcmFtIHNvdXJjZSB3aGF0IHRvIHVwbG9hZC5cbiAgICAgKiBAcGFyYW0gcHJvZ3Jlc3NPYnNlcnZlciAob3B0aW9uYWwpIHRoaXMgd2lsbCBnZXQgcHJvZ3Jlc3Mgbm90aWZpY2F0aW9ucyBkdXJpbmcgdGhlIHVwbG9hZFxuICAgICAqIEByZXR1cm5zIGZldGFpbHMgb2YgdGhlIGZpbmlzaGVkIHVwbG9hZC5cbiAgICAgKiBAdGhyb3dzIFRyYW5zZmVyRXJyb3Igd2hlbiBhIGNodW5rIHVwbG9hZCBmYWlscy5cbiAgICAgKi9cbiAgICB1cGxvYWQoc291cmNlOiBCbG9ifEZpbGUsIHByb2dyZXNzT2JzZXJ2ZXI/OiBPYnNlcnZlcjxUcmFuc2ZlclByb2dyZXNzPik6IE9ic2VydmFibGU8VHJhbnNmZXJSZXN1bHQ+IHtcbiAgICAgICAgLy8gQ2FjaGUgdGhlIGNsaWVudCBhbmQgdXJsIHNvIHRoZXkgZG9uJ3QgY2hhbmdlIGZyb20gdW5kZXIgdXMuXG4gICAgICAgIGNvbnN0IHtodHRwQ2xpZW50LCB0cmFuc2ZlclVybCwgbWF4Q2h1bmtTaXplLCBtYXhDaHVua1JldHJ5Q291bnR9ID0gdGhpcztcblxuICAgICAgICAvLyBDb21wdXRlIHN0YXRpYyBpbmZvcm1hdGlvbiB1c2VkIHRocm91Z2ggdGhlIHVwbG9hZC5cbiAgICAgICAgY29uc3QgZmlsZW5hbWUgPSAoc291cmNlIGFzIEZpbGUpLm5hbWUgfHwgJzxibG9iPic7XG4gICAgICAgIGNvbnN0IHRvdGFsQ2h1bmtzID0gTWF0aC5jZWlsKHNvdXJjZS5zaXplIC8gbWF4Q2h1bmtTaXplKTtcbiAgICAgICAgY29uc3QgdG90YWxCeXRlcyA9IHNvdXJjZS5zaXplO1xuICAgICAgICBjb25zdCBzdGFydFRpbWVNcyA9IG5ldyBEYXRlKCkuZ2V0VGltZSgpO1xuICAgICAgICBsZXQgcmV0cnlDb3VudCA9IDA7XG5cbiAgICAgICAgLy8gVGhpcyBoZWxwZXIgZnVuY3Rpb24gY3JlYXRlcyBhIFRyYW5zZmVyUHJvZ3Jlc3Mgb2JqZWN0IGZvciBzZW5kaW5nIHRvIHRoZSBwcm9ncmVzc09ic2VydmVyLlxuICAgICAgICAvLyBJdCByZWxpZXMgb24gdGhlIGFib3ZlIHN0YXRpYyBpbmZvcm1hdGlvbiwgaGVuY2UgYmVpbmcgbmVzdGVkLlxuICAgICAgICBmdW5jdGlvbiBjcmVhdGVUcmFuc2ZlclByb2dyZXNzKHJldHJ5TnVtYmVyOiBudW1iZXIsIHJ0cnlDb3VudDogbnVtYmVyLCBjaHVua3NTZW50OiBudW1iZXIpOiBUcmFuc2ZlclByb2dyZXNzIHtcbiAgICAgICAgICAgIGNvbnN0IGNodW5rc1JlbWFpbmluZyA9IHRvdGFsQ2h1bmtzIC0gY2h1bmtzU2VudDtcbiAgICAgICAgICAgIGNvbnN0IGJ5dGVzU2VudCA9IE1hdGgubWluKGNodW5rc1NlbnQgKiBtYXhDaHVua1NpemUsIHRvdGFsQnl0ZXMpO1xuICAgICAgICAgICAgY29uc3QgYnl0ZXNSZW1haW5pbmcgPSB0b3RhbEJ5dGVzIC0gYnl0ZXNTZW50O1xuICAgICAgICAgICAgY29uc3QgcGVyY2VudCA9IGJ5dGVzU2VudCAvIHRvdGFsQnl0ZXMgKiAxMDA7XG4gICAgICAgICAgICBjb25zdCB0aW1lVGFrZW5NcyA9IG5ldyBEYXRlKCkuZ2V0VGltZSgpIC0gc3RhcnRUaW1lTXM7XG4gICAgICAgICAgICBjb25zdCBlc3RpbWF0ZWRUb3RhbFRpbWVNcyA9IChieXRlc1NlbnQgLyBieXRlc1JlbWFpbmluZykgKiB0aW1lVGFrZW5NcztcbiAgICAgICAgICAgIGNvbnN0IGVzdGltYXRlZFRpbWVSZW1haW5pbmdNcyA9IE1hdGgubWF4KGVzdGltYXRlZFRvdGFsVGltZU1zIC0gdGltZVRha2VuTXMsIDApO1xuICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICBmaWxlbmFtZSwgIHRyYW5zZmVyVXJsLCByZXRyeU51bWJlciwgcmV0cnlDb3VudDogcnRyeUNvdW50LFxuICAgICAgICAgICAgICAgIGNodW5rc1NlbnQsIGNodW5rc1JlbWFpbmluZywgYnl0ZXNTZW50LCBieXRlc1JlbWFpbmluZyxcbiAgICAgICAgICAgICAgICBwZXJjZW50LCB0aW1lVGFrZW5NcywgZXN0aW1hdGVkVGltZVJlbWFpbmluZ01zXG4gICAgICAgICAgICB9O1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gVGhpcyBpcyB0aGUgbWFpbiBjaHVuayB1cGxvYWQgZnVuY3Rpb25cbiAgICAgICAgZnVuY3Rpb24gdHJhbnNmZXJDaHVuayhjaHVua0luZGV4OiBudW1iZXIpOiBPYnNlcnZhYmxlPEh0dHBSZXNwb25zZTxhbnk+PiB7XG4gICAgICAgICAgICAvLyBDYWxjdWxhdGUgY2h1bmsgZGV0YWlscy5cbiAgICAgICAgICAgIGNvbnN0IGNodW5rU3RhcnQgPSBjaHVua0luZGV4ICogbWF4Q2h1bmtTaXplO1xuICAgICAgICAgICAgY29uc3QgY2h1bmtFbmQgPSBNYXRoLm1pbihjaHVua1N0YXJ0ICsgbWF4Q2h1bmtTaXplLCB0b3RhbEJ5dGVzKTtcbiAgICAgICAgICAgIGNvbnN0IGNvbnRlbnRSYW5nZUhlYWRlciA9IGBieXRlcyAke2NodW5rU3RhcnR9LSR7Y2h1bmtFbmQgLSAxfS8ke3RvdGFsQnl0ZXN9YDtcblxuICAgICAgICAgICAgLy8gRGlzcGF0Y2ggcHJvZ3Jlc3NcbiAgICAgICAgICAgIGlmIChwcm9ncmVzc09ic2VydmVyKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgcHJvZ3Jlc3MgPSBjcmVhdGVUcmFuc2ZlclByb2dyZXNzKDAsIHJldHJ5Q291bnQsIGNodW5rSW5kZXgpO1xuICAgICAgICAgICAgICAgIHByb2dyZXNzT2JzZXJ2ZXIubmV4dChwcm9ncmVzcyk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIC8vIFJlYWQgaW4gdGhlIGNodW5rXG4gICAgICAgICAgICByZXR1cm4gT2JzZXJ2YWJsZS5jcmVhdGUob2JzZXJ2ZXIgPT4ge1xuICAgICAgICAgICAgICAgIGNvbnN0IGNodW5rU2xpY2U6IEJsb2IgPSBzb3VyY2Uuc2xpY2UoY2h1bmtTdGFydCwgY2h1bmtFbmQpO1xuICAgICAgICAgICAgICAgIGNvbnN0IGZpbGVSZWFkZXIgPSBuZXcgRmlsZVJlYWRlcigpO1xuICAgICAgICAgICAgICAgIGZpbGVSZWFkZXIub25lcnJvciA9IGVyciA9PiB7XG4gICAgICAgICAgICAgICAgICAgIG9ic2VydmVyLmVycm9yKGVycik7XG4gICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICBmaWxlUmVhZGVyLm9uYWJvcnQgPSBlcnIgPT4ge1xuICAgICAgICAgICAgICAgICAgICBvYnNlcnZlci5lcnJvcihlcnIpO1xuICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgZmlsZVJlYWRlci5vbmxvYWQgPSAoKSA9PiB7XG4gICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICBmaWxlUmVhZGVyLm9ubG9hZGVuZCA9ICgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgb2JzZXJ2ZXIubmV4dChmaWxlUmVhZGVyLnJlc3VsdCk7XG4gICAgICAgICAgICAgICAgICAgIG9ic2VydmVyLmNvbXBsZXRlKCk7XG4gICAgICAgICAgICAgICAgfTtcblxuICAgICAgICAgICAgICAgIHJldHVybiBmaWxlUmVhZGVyLnJlYWRBc0FycmF5QnVmZmVyKGNodW5rU2xpY2UpO1xuXG4gICAgICAgICAgICAvLyBUcmFuc2ZlciB0aGUgY2h1bmtcbiAgICAgICAgICAgIH0pLnBpcGUoXG4gICAgICAgICAgICAgICAgLy8gVXBvbiByZWFkIGVycm9yLCBhYm9ydCB0aGUgdXBsb2FkIHByb2Nlc3MuICBObyBwb2ludCByZXRyeWluZyByZWFkIGZhaWx1cmVzLlxuICAgICAgICAgICAgICAgIGNhdGNoRXJyb3IoKGUpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgLy8gQWJhbmRvbiB0aGUgdXBsb2FkIGFuZCBwcm9wYWdhdGUgYSBjb25zdW1hYmxlIGVycm9yLlxuICAgICAgICAgICAgICAgICAgICBjb25zdCBwcm9ncmVzcyA9IGNyZWF0ZVRyYW5zZmVyUHJvZ3Jlc3MoMCwgcmV0cnlDb3VudCwgY2h1bmtJbmRleCk7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB0aHJvd0Vycm9yKCgpID0+IG5ldyBUcmFuc2ZlckVycm9yKCdSZWFkIGVycm9yJywgZSwgcHJvZ3Jlc3MpKTtcbiAgICAgICAgICAgICAgICB9KSxcblxuICAgICAgICAgICAgICAgIC8vIFVwb24gc3VjY2Vzc2Z1bCByZWFkLCB0cmFuc2ZlciB0aGUgY2h1bmsuXG4gICAgICAgICAgICAgICAgc3dpdGNoTWFwKChkYXRhKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGxldCByZXRyeU51bWJlciA9IDA7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBodHRwQ2xpZW50LnB1dChcbiAgICAgICAgICAgICAgICAgICAgICAgIHRyYW5zZmVyVXJsLCBkYXRhLFxuICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhlYWRlcnM6IG5ldyBIdHRwSGVhZGVycyh7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdDb250ZW50LVJhbmdlJzogY29udGVudFJhbmdlSGVhZGVyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzcG9uc2VUeXBlOiAndGV4dCdcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgKS5waXBlKFxuICAgICAgICAgICAgICAgICAgICAgICAgLy8gVGhpcyBpcyBjYWxsZWQgdXBvbiBhbnkgY2h1bmsgdXBsb2FkIGZhaWx1cmUuXG4gICAgICAgICAgICAgICAgICAgICAgICBjYXRjaEVycm9yKChlKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gSW5jcmVhc2UgdGhlIHRvdGFsIHJldHJ5IGNvdW50LlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHJ5Q291bnQrKztcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIEluY3JlYXNlIHRoZSBjdXJyZW50IGNodW5rIHJldHJ5IG51bWJlci5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXRyeU51bWJlcisrO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gRGlzcGF0Y2ggcHJvZ3Jlc3MgKHRoZSByZXRyeSBpbmZvcm1hdGlvbiBoYXMgY2hhbmdlZCkuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHByb2dyZXNzT2JzZXJ2ZXIpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgcHJvZ3Jlc3MgPSBjcmVhdGVUcmFuc2ZlclByb2dyZXNzKHJldHJ5TnVtYmVyLCByZXRyeUNvdW50LCBjaHVua0luZGV4KTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJvZ3Jlc3NPYnNlcnZlci5uZXh0KHByb2dyZXNzKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBSZXRocm93IHRoZSBlcnJvciBzbyB0aGF0IHRoZSBcInJldHJ5XCIgY2FsbCBoYW5kbGVzIGl0LlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0aHJvd0Vycm9yKCgpID0+IGUpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfSksXG5cbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIFJldHJ5IHRoZSBjaHVuayB1cGxvYWQgdXAgdG8gdGhlIGxpbWl0IC0gdGhpcyB3aWxsIHJ1biB0aGUgZW50aXJlIGNoYWluIGFnYWluLlxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0cnkobWF4Q2h1bmtSZXRyeUNvdW50KSxcblxuICAgICAgICAgICAgICAgICAgICAgICAgLy8gVGhpcyBpcyBjYWxsZWQgd2hlbiBhbGwgcmV0cmllcyBmb3IgdGhlIGNodW5rIGFyZSBleGhhdXN0ZWQuXG4gICAgICAgICAgICAgICAgICAgICAgICBjYXRjaEVycm9yKChlKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gQWJhbmRvbiB0aGUgdXBsb2FkIGFuZCBwcm9wYWdhdGUgYSBjb25zdW1hYmxlIGVycm9yLlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHByb2dyZXNzID0gY3JlYXRlVHJhbnNmZXJQcm9ncmVzcyhyZXRyeU51bWJlciwgcmV0cnlDb3VudCwgY2h1bmtJbmRleCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRocm93RXJyb3IoKCkgPT4gbmV3IFRyYW5zZmVyRXJyb3IoJ1RyYW5zZmVyIGVycm9yJywgZSwgcHJvZ3Jlc3MpKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICk7XG4gICAgICAgIH1cblxuICAgICAgICAvLyBUaGlzIGNyZWF0ZXMgdGhlIGZpbmFsIHRyYW5zZmVyIHByb2dyZXNzLCBkaXNwYXRjaGVzIGl0LCBhbmQgcmV0dXJucyB0aGUgdHJhbnNmZXIgcmVzdWx0LlxuICAgICAgICBmdW5jdGlvbiBmaW5pc2hVcGxvYWQoKTogVHJhbnNmZXJSZXN1bHQge1xuICAgICAgICAgICAgY29uc3QgdHJhbnNmZXJQcm9ncmVzcyA9IGNyZWF0ZVRyYW5zZmVyUHJvZ3Jlc3MoMCwgcmV0cnlDb3VudCwgdG90YWxDaHVua3MpO1xuICAgICAgICAgICAgaWYgKHByb2dyZXNzT2JzZXJ2ZXIpIHtcbiAgICAgICAgICAgICAgICBwcm9ncmVzc09ic2VydmVyLm5leHQodHJhbnNmZXJQcm9ncmVzcyk7XG4gICAgICAgICAgICAgICAgcHJvZ3Jlc3NPYnNlcnZlci5jb21wbGV0ZSgpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBjb25zdCB0cmFuc2ZlclJlc3VsdDogVHJhbnNmZXJSZXN1bHQgPSB7XG4gICAgICAgICAgICAgICAgZmlsZW5hbWU6IHRyYW5zZmVyUHJvZ3Jlc3MuZmlsZW5hbWUsXG4gICAgICAgICAgICAgICAgdHJhbnNmZXJVcmw6IHRyYW5zZmVyUHJvZ3Jlc3MudHJhbnNmZXJVcmwsXG4gICAgICAgICAgICAgICAgcmV0cnlDb3VudDogdHJhbnNmZXJQcm9ncmVzcy5yZXRyeUNvdW50LFxuICAgICAgICAgICAgICAgIGNodW5rc1NlbnQ6IHRyYW5zZmVyUHJvZ3Jlc3MuY2h1bmtzU2VudCxcbiAgICAgICAgICAgICAgICBieXRlc1NlbnQ6IHRyYW5zZmVyUHJvZ3Jlc3MuYnl0ZXNTZW50LFxuICAgICAgICAgICAgICAgIHRpbWVUYWtlbk1zOiB0cmFuc2ZlclByb2dyZXNzLnRpbWVUYWtlbk1zXG4gICAgICAgICAgICB9O1xuICAgICAgICAgICAgcmV0dXJuIHRyYW5zZmVyUmVzdWx0O1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gVXBsb2FkIGFsbCBvZiB0aGUgY2h1bmtzXG4gICAgICAgIGxldCBjaGFpbiA9IHRyYW5zZmVyQ2h1bmsoMCk7XG4gICAgICAgIGZvciAobGV0IGN1cnJlbnRDaHVuayA9IDE7IGN1cnJlbnRDaHVuayA8IHRvdGFsQ2h1bmtzOyBjdXJyZW50Q2h1bmsrKykge1xuICAgICAgICAgICAgY2hhaW4gPSBjaGFpbi5waXBlKFxuICAgICAgICAgICAgICAgIGZsYXRNYXAoKCkgPT4gdHJhbnNmZXJDaHVuayhjdXJyZW50Q2h1bmspKVxuICAgICAgICAgICAgKTtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIEZpbmlzaCB0cmFuc2ZlclxuICAgICAgICByZXR1cm4gY2hhaW4ucGlwZShtYXAoZmluaXNoVXBsb2FkKSk7XG4gICAgfVxufVxuIl19
@@ -0,0 +1,195 @@
1
+ // tslint:disable-next-line:no-namespace
2
+ export var Filter;
3
+ (function (Filter) {
4
+ class Operators {
5
+ static { this.OR = ','; }
6
+ static { this.AND = ';'; }
7
+ static { this.GT = '=gt='; }
8
+ static { this.GE = '=ge='; }
9
+ static { this.LT = '=lt='; }
10
+ static { this.LE = '=le='; }
11
+ static { this.EQ = '=='; }
12
+ static { this.NEQ = '!='; }
13
+ }
14
+ /**
15
+ * Collection of strategies for wilcard string matching.
16
+ */
17
+ class MatchMode {
18
+ /**
19
+ * Match the start of a string.
20
+ */
21
+ static { this.START = 'START'; }
22
+ /**
23
+ * Match the end of a string.
24
+ */
25
+ static { this.END = 'END'; }
26
+ /**
27
+ * Match anywhere in the string.
28
+ */
29
+ static { this.ANYWHERE = 'ANYWHERE'; }
30
+ }
31
+ Filter.MatchMode = MatchMode;
32
+ class BuilderChain {
33
+ constructor(parent) {
34
+ this.result = '';
35
+ this.parent = parent;
36
+ }
37
+ query() {
38
+ return this.buildPartial();
39
+ }
40
+ // tslint:disable-next-line:max-line-length
41
+ and(condition1, condition2, conditionN) {
42
+ if (!condition1) {
43
+ return this.simpleAnd();
44
+ }
45
+ this.result += '(' + condition1.buildPartial() + Operators.AND + condition2.buildPartial();
46
+ if (conditionN && conditionN.length) {
47
+ conditionN.forEach((condition) => {
48
+ this.result += Operators.AND + condition.buildPartial();
49
+ });
50
+ }
51
+ this.result += ')';
52
+ return this;
53
+ }
54
+ simpleAnd() {
55
+ if (this.currentCompositeOp === Operators.OR || this.parent && this.parent.currentCompositeOp === Operators.OR) {
56
+ if (this.parent) {
57
+ this.parent.result = '(' + this.parent.result;
58
+ this.result += ')';
59
+ }
60
+ else {
61
+ this.wrap();
62
+ }
63
+ this.currentCompositeOp = Operators.AND;
64
+ }
65
+ this.result += Operators.AND;
66
+ return this;
67
+ }
68
+ // tslint:disable-next-line:max-line-length
69
+ or(condition1, condition2, conditionN) {
70
+ if (!condition1) {
71
+ return this.simpleOr();
72
+ }
73
+ this.result += '(' + condition1.buildPartial() + Operators.OR + condition2.buildPartial();
74
+ if (conditionN && conditionN.length) {
75
+ conditionN.forEach((condition) => {
76
+ this.result += Operators.OR + condition.buildPartial();
77
+ });
78
+ }
79
+ this.result += ')';
80
+ return this;
81
+ }
82
+ simpleOr() {
83
+ if (this.currentCompositeOp === Operators.AND || (this.parent && this.parent.currentCompositeOp === Operators.AND)) {
84
+ if (this.parent) {
85
+ this.parent.result = '(' + this.parent.result;
86
+ this.result += ')';
87
+ }
88
+ else {
89
+ this.wrap();
90
+ }
91
+ this.currentCompositeOp = Operators.OR;
92
+ }
93
+ this.result += Operators.OR;
94
+ return this;
95
+ }
96
+ wrap() {
97
+ this.result = '(' + this.result + ')';
98
+ this.currentCompositeOp = null;
99
+ return this;
100
+ }
101
+ buildPartial() {
102
+ return (this.parent) ? this.parent.buildPartial() + this.result : this.result;
103
+ }
104
+ is(property) {
105
+ const builder = new BuilderChain(this);
106
+ builder.result = property;
107
+ return builder;
108
+ }
109
+ equalTo(value, ...moreValues) {
110
+ return this.condition(Operators.EQ, value, ...moreValues);
111
+ }
112
+ notEqualTo(value) {
113
+ return this.condition(Operators.NEQ, value);
114
+ }
115
+ lessThan(value) {
116
+ return this.condition(Operators.LT, value);
117
+ }
118
+ lessOrEqualTo(value) {
119
+ return this.condition(Operators.LE, value);
120
+ }
121
+ greaterThan(value) {
122
+ return this.condition(Operators.GT, value);
123
+ }
124
+ greaterOrEqualTo(value) {
125
+ return this.condition(Operators.GE, value);
126
+ }
127
+ like(value, mode = MatchMode.START) {
128
+ let wildcardValue;
129
+ switch (mode) {
130
+ case MatchMode.START:
131
+ wildcardValue = `${value}*`;
132
+ break;
133
+ case MatchMode.END:
134
+ wildcardValue = `*${value}`;
135
+ break;
136
+ case MatchMode.ANYWHERE:
137
+ wildcardValue = `*${value}*`;
138
+ break;
139
+ default:
140
+ wildcardValue = value;
141
+ break;
142
+ }
143
+ return this.condition(Operators.EQ, wildcardValue);
144
+ }
145
+ condition(operator, value, ...moreValues) {
146
+ const name = this.result;
147
+ this.result += operator + encodeURI(value);
148
+ if (moreValues.length) {
149
+ moreValues.forEach((next) => {
150
+ this.result += ',' + name + operator + encodeURI(next);
151
+ });
152
+ this.currentCompositeOp = Operators.OR;
153
+ }
154
+ return this;
155
+ }
156
+ }
157
+ /**
158
+ * Builds a FIQL search condition using a fluent interface.
159
+ */
160
+ class Builder {
161
+ /**
162
+ * Create a simple property to be evaulated as a filter condition.
163
+ *
164
+ * @param property the name of the property
165
+ * @returns a Property instance for defining a filter condition
166
+ */
167
+ is(property) {
168
+ return new BuilderChain().is(property);
169
+ }
170
+ /**
171
+ * Create a conjunction (AND) condition from existing conditions.
172
+ *
173
+ * @param condition1 first condition
174
+ * @param condition2 second condition
175
+ * @param conditionN any additional conditions
176
+ * @returns an evaluatable filter condition
177
+ */
178
+ and(condition1, condition2, conditionN) {
179
+ return new BuilderChain().and(condition1, condition2, conditionN);
180
+ }
181
+ /**
182
+ * Create a disjunction (OR) condition from existing conditions.
183
+ *
184
+ * @param condition1 first condition
185
+ * @param condition2 second condition
186
+ * @param conditionN any additional conditions
187
+ * @returns an evaluatable filter condition
188
+ */
189
+ or(condition1, condition2, conditionN) {
190
+ return new BuilderChain().or(condition1, condition2, conditionN);
191
+ }
192
+ }
193
+ Filter.Builder = Builder;
194
+ })(Filter || (Filter = {}));
195
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlsdGVyLmJ1aWxkZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy92Y2Qvc2RrL3NyYy9jbGllbnQvcXVlcnkvZmlsdGVyLmJ1aWxkZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsd0NBQXdDO0FBQ3hDLE1BQU0sS0FBVyxNQUFNLENBa1d0QjtBQWxXRCxXQUFpQixNQUFNO0lBQ25CLE1BQU0sU0FBUztpQkFDWSxPQUFFLEdBQVcsR0FBRyxDQUFDO2lCQUNqQixRQUFHLEdBQVcsR0FBRyxDQUFDO2lCQUNsQixPQUFFLEdBQVcsTUFBTSxDQUFDO2lCQUNwQixPQUFFLEdBQVcsTUFBTSxDQUFDO2lCQUNwQixPQUFFLEdBQVcsTUFBTSxDQUFDO2lCQUNwQixPQUFFLEdBQVcsTUFBTSxDQUFDO2lCQUNwQixPQUFFLEdBQVcsSUFBSSxDQUFDO2lCQUNsQixRQUFHLEdBQVcsSUFBSSxDQUFDOztJQUc5Qzs7T0FFRztJQUNILE1BQWEsU0FBUztRQUNsQjs7V0FFRztpQkFDb0IsVUFBSyxHQUFXLE9BQU8sQ0FBQztRQUUvQzs7V0FFRztpQkFDb0IsUUFBRyxHQUFXLEtBQUssQ0FBQztRQUUzQzs7V0FFRztpQkFDb0IsYUFBUSxHQUFXLFVBQVUsQ0FBQzs7SUFkNUMsZ0JBQVMsWUFlckIsQ0FBQTtJQWdJRCxNQUFNLFlBQVk7UUFLZCxZQUFZLE1BQXFCO1lBSnpCLFdBQU0sR0FBRyxFQUFFLENBQUM7WUFLaEIsSUFBSSxDQUFDLE1BQU0sR0FBRyxNQUFNLENBQUM7UUFDekIsQ0FBQztRQUVNLEtBQUs7WUFDUixPQUFPLElBQUksQ0FBQyxZQUFZLEVBQUUsQ0FBQztRQUMvQixDQUFDO1FBSUQsMkNBQTJDO1FBQ3BDLEdBQUcsQ0FBQyxVQUE4QixFQUFFLFVBQThCLEVBQUUsVUFBZ0M7WUFDdkcsSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDO2dCQUNkLE9BQU8sSUFBSSxDQUFDLFNBQVMsRUFBRSxD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Q0FBQyxDQUFDLElBQUksRUFBRSxFQUFFO29CQUN4QixJQUFJLENBQUMsTUFBTSxJQUFJLEdBQUcsR0FBRyxJQUFJLEdBQUcsUUFBUSxHQUFHLFNBQVMsQ0FBQyxJQUFjLENBQUMsQ0FBQztnQkFDckUsQ0FBQyxDQUFDLENBQUM7Z0JBRUgsSUFBSSxDQUFDLGtCQUFrQixHQUFHLFNBQVMsQ0FBQyxFQUFFLENBQUM7WUFDM0MsQ0FBQztZQUVELE9BQU8sSUFBSSxDQUFDO1FBQ2hCLENBQUM7S0FDSjtJQUVEOztPQUVHO0lBQ0gsTUFBYSxPQUFPO1FBQ2hCOzs7OztXQUtHO1FBQ0gsRUFBRSxDQUFDLFFBQWdCO1lBQ2YsT0FBTyxJQUFJLFlBQVksRUFBRSxDQUFDLEVBQUUsQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUMzQyxDQUFDO1FBRUQ7Ozs7Ozs7V0FPRztRQUNILEdBQUcsQ0FBQyxVQUE2QixFQUFFLFVBQTZCLEVBQUUsVUFBZ0M7WUFDOUYsT0FBTyxJQUFJLFlBQVksRUFBRSxDQUFDLEdBQUcsQ0FBQyxVQUFVLEVBQUUsVUFBVSxFQUFFLFVBQVUsQ0FBQyxDQUFDO1FBQ3RFLENBQUM7UUFFRDs7Ozs7OztXQU9HO1FBQ0gsRUFBRSxDQUFDLFVBQTZCLEVBQUUsVUFBNkIsRUFBRSxVQUFnQztZQUM3RixPQUFPLElBQUksWUFBWSxFQUFFLENBQUMsRUFBRSxDQUFDLFVBQVUsRUFBRSxVQUFVLEVBQUUsVUFBVSxDQUFDLENBQUM7UUFDckUsQ0FBQztLQUNKO0lBbENZLGNBQU8sVUFrQ25CLENBQUE7QUFDTCxDQUFDLEVBbFdnQixNQUFNLEtBQU4sTUFBTSxRQWtXdEIiLCJzb3VyY2VzQ29udGVudCI6WyIvLyB0c2xpbnQ6ZGlzYWJsZS1uZXh0LWxpbmU6bm8tbmFtZXNwYWNlXG5leHBvcnQgbmFtZXNwYWNlIEZpbHRlciB7XG4gICAgY2xhc3MgT3BlcmF0b3JzIHtcbiAgICAgICAgcHVibGljIHN0YXRpYyByZWFkb25seSBPUjogc3RyaW5nID0gJywnO1xuICAgICAgICBwdWJsaWMgc3RhdGljIHJlYWRvbmx5IEFORDogc3RyaW5nID0gJzsnO1xuICAgICAgICBwdWJsaWMgc3RhdGljIHJlYWRvbmx5IEdUOiBzdHJpbmcgPSAnPWd0PSc7XG4gICAgICAgIHB1YmxpYyBzdGF0aWMgcmVhZG9ubHkgR0U6IHN0cmluZyA9ICc9Z2U9JztcbiAgICAgICAgcHVibGljIHN0YXRpYyByZWFkb25seSBMVDogc3RyaW5nID0gJz1sdD0nO1xuICAgICAgICBwdWJsaWMgc3RhdGljIHJlYWRvbmx5IExFOiBzdHJpbmcgPSAnPWxlPSc7XG4gICAgICAgIHB1YmxpYyBzdGF0aWMgcmVhZG9ubHkgRVE6IHN0cmluZyA9ICc9PSc7XG4gICAgICAgIHB1YmxpYyBzdGF0aWMgcmVhZG9ubHkgTkVROiBzdHJpbmcgPSAnIT0nO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENvbGxlY3Rpb24gb2Ygc3RyYXRlZ2llcyBmb3Igd2lsY2FyZCBzdHJpbmcgbWF0Y2hpbmcuXG4gICAgICovXG4gICAgZXhwb3J0IGNsYXNzIE1hdGNoTW9kZSB7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBNYXRjaCB0aGUgc3RhcnQgb2YgYSBzdHJpbmcuXG4gICAgICAgICAqL1xuICAgICAgICBwdWJsaWMgc3RhdGljIHJlYWRvbmx5IFNUQVJUOiBzdHJpbmcgPSAnU1RBUlQnO1xuXG4gICAgICAgIC8qKlxuICAgICAgICAgKiBNYXRjaCB0aGUgZW5kIG9mIGEgc3RyaW5nLlxuICAgICAgICAgKi9cbiAgICAgICAgcHVibGljIHN0YXRpYyByZWFkb25seSBFTkQ6IHN0cmluZyA9ICdFTkQnO1xuXG4gICAgICAgIC8qKlxuICAgICAgICAgKiBNYXRjaCBhbnl3aGVyZSBpbiB0aGUgc3RyaW5nLlxuICAgICAgICAgKi9cbiAgICAgICAgcHVibGljIHN0YXRpYyByZWFkb25seSBBTllXSEVSRTogc3RyaW5nID0gJ0FOWVdIRVJFJztcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBBIGZpbHRlciBpdGVtIHRoYXQgY2FuIGRlZmluZSBhIGNvbXBhcmlzb24vY29uZGl0aW9uLlxuICAgICAqL1xuICAgIGV4cG9ydCBpbnRlcmZhY2UgUHJvcGVydHkge1xuICAgICAgICAvKipcbiAgICAgICAgICogQ3JlYXRlIGEgZmlsdGVyIGNvbmRpdGlvbiB0byBldmFsdWF0ZSB3aGV0aGVyIHRoZSBwcm9wZXJ0eSBpcyBlcXVhbCB0byB0aGUgc3BlY2lmaWVkIHZhbHVlLlxuICAgICAgICAgKlxuICAgICAgICAgKiBAcGFyYW0gdmFsdWUgdGhlIHBhdHRlcm4gdG8gZXZhbHVhdGVcbiAgICAgICAgICogQHBhcmFtIG1vcmVWYWx1ZXMgb3B0aW9uYWwgYWRkaXRpb25hbCBwYXR0ZXJucyB0byBldmFsdWF0ZSB0aGF0IHdpbGwgYmUgdHJlYXRlZCBhcyBhbiBPUiBjb25kaXRpb25cbiAgICAgICAgICogQHJldHVybnMgYW4gZXZhbHVhdGFibGUgZmlsdGVyIGNvbmRpdGlvblxuICAgICAgICAgKi9cbiAgICAgICAgZXF1YWxUbyh2YWx1ZTogKGJvb2xlYW4gfCBudW1iZXIgfCBzdHJpbmcpLCAuLi5tb3JlVmFsdWVzOiAoYm9vbGVhbiB8IG51bWJlciB8IHN0cmluZylbXSk6IENvbXBsZXRlQ29uZGl0aW9uO1xuXG4gICAgICAgIC8qKlxuICAgICAgICAgKiBDcmVhdGUgYSBmaWx0ZXIgY29uZGl0aW9uIHRvIGV2YWx1YXRlIHdoZXRoZXIgdGhlIHByb3BlcnR5IGlzIG5vdCBlcXVhbCB0byB0aGUgc3BlY2lmaWVkIHZhbHVlLlxuICAgICAgICAgKlxuICAgICAgICAgKiBAcGFyYW0gdmFsdWUgdGhlIHBhdHRlcm4gdG8gZXZhbHVhdGVcbiAgICAgICAgICogQHJldHVybnMgYW4gZXZhbHVhdGFibGUgZmlsdGVyIGNvbmRpdGlvblxuICAgICAgICAgKi9cbiAgICAgICAgbm90RXF1YWxUbyh2YWx1ZTogKGJvb2xlYW4gfCBudW1iZXIgfCBzdHJpbmcpKTogQ29tcGxldGVDb25kaXRpb247XG5cbiAgICAgICAgLyoqXG4gICAgICAgICAqIENyZWF0ZSBhIGZpbHRlciBjb25kaXRpb24gdG8gZXZhbHVhdGUgd2hldGhlciB0aGUgcHJvcGVydHkgaXMgbGVzcyB0aGFuIHRoZSBzcGVjaWZpZWQgdmFsdWUuXG4gICAgICAgICAqXG4gICAgICAgICAqIEBwYXJhbSB2YWx1ZSB0aGUgcGF0dGVybiB0byBldmFsdWF0ZVxuICAgICAgICAgKiBAcmV0dXJucyBhbiBldmFsdWF0YWJsZSBmaWx0ZXIgY29uZGl0aW9uXG4gICAgICAgICAqL1xuICAgICAgICBsZXNzVGhhbih2YWx1ZTogbnVtYmVyKTogQ29tcGxldGVDb25kaXRpb247XG5cbiAgICAgICAgLyoqXG4gICAgICAgICAqIENyZWF0ZSBhIGZpbHRlciBjb25kaXRpb24gdG8gZXZhbHVhdGUgd2hldGhlciB0aGUgcHJvcGVydHkgaXMgbGVzcyB0aGFuIG9yIGVxdWFsIHRvIHRoZSBzcGVjaWZpZWQgdmFsdWUuXG4gICAgICAgICAqXG4gICAgICAgICAqIEBwYXJhbSB2YWx1ZSB0aGUgcGF0dGVybiB0byBldmFsdWF0ZVxuICAgICAgICAgKiBAcmV0dXJucyBhbiBldmFsdWF0YWJsZSBmaWx0ZXIgY29uZGl0aW9uXG4gICAgICAgICAqL1xuICAgICAgICBsZXNzT3JFcXVhbFRvKHZhbHVlOiBudW1iZXIpOiBDb21wbGV0ZUNvbmRpdGlvbjtcblxuICAgICAgICAvKipcbiAgICAgICAgICogQ3JlYXRlIGEgZmlsdGVyIGNvbmRpdGlvbiB0byBldmFsdWF0ZSB3aGV0aGVyIHRoZSBwcm9wZXJ0eSBpcyBncmVhdGVyIHRoYW4gdGhlIHNwZWNpZmllZCB2YWx1ZS5cbiAgICAgICAgICpcbiAgICAgICAgICogQHBhcmFtIHZhbHVlIHRoZSBwYXR0ZXJuIHRvIGV2YWx1YXRlXG4gICAgICAgICAqIEByZXR1cm5zIGFuIGV2YWx1YXRhYmxlIGZpbHRlciBjb25kaXRpb25cbiAgICAgICAgICovXG4gICAgICAgIGdyZWF0ZXJUaGFuKHZhbHVlOiBudW1iZXIpOiBDb21wbGV0ZUNvbmRpdGlvbjtcblxuICAgICAgICAvKipcbiAgICAgICAgICogQ3JlYXRlIGEgZmlsdGVyIGNvbmRpdGlvbiB0byBldmFsdWF0ZSB3aGV0aGVyIHRoZSBwcm9wZXJ0eSBpcyBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8gdGhlIHNwZWNpZmllZCB2YWx1ZS5cbiAgICAgICAgICpcbiAgICAgICAgICogQHBhcmFtIHZhbHVlIHRoZSBwYXR0ZXJuIHRvIGV2YWx1YXRlXG4gICAgICAgICAqIEByZXR1cm5zIGFuIGV2YWx1YXRhYmxlIGZpbHRlciBjb25kaXRpb25cbiAgICAgICAgICovXG4gICAgICAgIGdyZWF0ZXJPckVxdWFsVG8odmFsdWU6IG51bWJlcik6IENvbXBsZXRlQ29uZGl0aW9uO1xuXG4gICAgICAgIC8qKlxuICAgICAgICAgKiBDcmVhdGUgYSBmaWx0ZXIgY29uZGl0aW9uIHRvIGV2YWx1YXRlIHdoZXRoZXIgdGhlIHByb3BlcnR5IGlzIGEgd2lsZGNhcmQgbWF0Y2ggd2l0aCB0aGUgc3BlY2lmaWVkIHZhbHVlLlxuICAgICAgICAgKlxuICAgICAgICAgKiBAcGFyYW0gdmFsdWUgdGhlIHBhdHRlcm4gdG8gZXZhbHVhdGVcbiAgICAgICAgICogQHBhcmFtIG1vZGUgdGhlIHR5cGUgb2Ygd2lsZGNhcmQgZXZhbHVhdGlvbiB0byBwZXJmb3JtXG4gICAgICAgICAqIEByZXR1cm5zIGFuIGV2YWx1YXRhYmxlIGZpbHRlciBjb25kaXRpb25cbiAgICAgICAgICovXG4gICAgICAgIGxpa2UodmFsdWU6IHN0cmluZywgbW9kZTogTWF0Y2hNb2RlKTogQ29tcGxldGVDb25kaXRpb247XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQSByZXByZXNlbnRhdGlvbiBvZiBhIGNvbmRpdGlvbiB0aGF0IGlzIGluY29tcGxldGUgYnkgaXRzZWxmLCBsaWtlIGFuIGVtcHR5IGNvbmRpdGlvbiwgYWdncmVnYXRpb24gd3JhcHBlciwgb3IganVuY3Rpb24uXG4gICAgICovXG4gICAgZXhwb3J0IGludGVyZmFjZSBQYXJ0aWFsQ29uZGl0aW9uIHtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIENyZWF0ZSBhIHNpbXBsZSBwcm9wZXJ0eSB0byBiZSBldmF1bGF0ZWQgYXMgYSBmaWx0ZXIgY29uZGl0aW9uLlxuICAgICAgICAgKlxuICAgICAgICAgKiBAcGFyYW0gcHJvcGVydHkgdGhlIG5hbWUgb2YgdGhlIHByb3BlcnR5XG4gICAgICAgICAqIEByZXR1cm5zIGEgUHJvcGVydHkgaW5zdGFuY2UgZm9yIGRlZmluaW5nIGEgZmlsdGVyIGNvbmRpdGlvblxuICAgICAgICAgKi9cbiAgICAgICAgaXMocHJvcGVydHk6IHN0cmluZyk6IFByb3BlcnR5O1xuXG4gICAgICAgIC8qKlxuICAgICAgICAgKiBDcmVhdGUgYSBjb25qdW5jdGlvbiAoQU5EKSBjb25kaXRpb24gZnJvbSBleGlzdGluZyBjb25kaXRpb25zLlxuICAgICAgICAgKlxuICAgICAgICAgKiBAcGFyYW0gY29uZGl0aW9uMSBmaXJzdCBjb25kaXRpb25cbiAgICAgICAgICogQHBhcmFtIGNvbmRpdGlvbjIgc2Vjb25kIGNvbmRpdGlvblxuICAgICAgICAgKiBAcGFyYW0gY29uZGl0aW9uTiBhbnkgYWRkaXRpb25hbCBjb25kaXRpb25zXG4gICAgICAgICAqIEByZXR1cm5zIGFuIGV2YWx1YXRhYmxlIGZpbHRlciBjb25kaXRpb25cbiAgICAgICAgICovXG4gICAgICAgIGFuZChjb25kaXRpb24xOiBDb21wbGV0ZUNvbmRpdGlvbiwgY29uZGl0aW9uMjogQ29tcGxldGVDb25kaXRpb24sIGNvbmRpdGlvbk4/OiBDb21wbGV0ZUNvbmRpdGlvbltdKTogQ29tcGxldGVDb25kaXRpb247XG5cbiAgICAgICAgLyoqXG4gICAgICAgICAqIENyZWF0ZSBhIGRpc2p1bmN0aW9uIChPUikgY29uZGl0aW9uIGZyb20gZXhpc3RpbmcgY29uZGl0aW9ucy5cbiAgICAgICAgICpcbiAgICAgICAgICogQHBhcmFtIGNvbmRpdGlvbjEgZmlyc3QgY29uZGl0aW9uXG4gICAgICAgICAqIEBwYXJhbSBjb25kaXRpb24yIHNlY29uZCBjb25kaXRpb25cbiAgICAgICAgICogQHBhcmFtIGNvbmRpdGlvbk4gYW55IGFkZGl0aW9uYWwgY29uZGl0aW9uc1xuICAgICAgICAgKiBAcmV0dXJucyBhbiBldmFsdWF0YWJsZSBmaWx0ZXIgY29uZGl0aW9uXG4gICAgICAgICAqL1xuICAgICAgICBvcihjb25kaXRpb24xOiBDb21wbGV0ZUNvbmRpdGlvbiwgY29uZGl0aW9uMjogQ29tcGxldGVDb25kaXRpb24sIGNvbmRpdGlvbk4/OiBDb21wbGV0ZUNvbmRpdGlvbltdKTogQ29tcGxldGVDb25kaXRpb247XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQW4gZXZhbHVhdGFibGUgZmlsdGVyIGNvbmRpdGlvbi5cbiAgICAgKi9cbiAgICBleHBvcnQgaW50ZXJmYWNlIENvbXBsZXRlQ29uZGl0aW9uIHtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEFkZCBhIGNvbmR0aW9uIHRvIHRoaXMgY29uZGl0aW9uLlxuICAgICAgICAgKlxuICAgICAgICAgKiBUaGlzIG5ldyBjb25kaXRpb24gd2lsbCBiZSBBTkRlZCB0byB0aGUgZXhpc3RpbmcgY29uZGl0aW9uLlxuICAgICAgICAgKlxuICAgICAgICAgKiBAcmV0dXJucyBhbiBpbmNvbXBsZXRlIChlbXB0eSkgY29uZGl0aW9uXG4gICAgICAgICAqL1xuICAgICAgICBhbmQoKTogUGFydGlhbENvbmRpdGlvbjtcblxuICAgICAgICAvKipcbiAgICAgICAgICogQWRkIGEgY29uZHRpb24gdG8gdGhpcyBjb25kaXRpb24uXG4gICAgICAgICAqXG4gICAgICAgICAqIFRoaXMgbmV3IGNvbmRpdGlvbiB3aWxsIGJlIE9SZWQgdG8gdGhlIGV4aXN0aW5nIGNvbmRpdGlvbi5cbiAgICAgICAgICpcbiAgICAgICAgICogQHJldHVybnMgYW4gaW5jb21wbGV0ZSAoZW1wdHkpIGNvbmRpdGlvblxuICAgICAgICAgKi9cbiAgICAgICAgb3IoKTogUGFydGlhbENvbmRpdGlvbjtcblxuICAgICAgICAvKipcbiAgICAgICAgICogQnVpbGQgdGhlIEZJUUwgcmVwcmVzZW50YXRpb24gb2YgdGhlIGNvbmRpdGlvbi5cbiAgICAgICAgICpcbiAgICAgICAgICogQHJldHVybnMgYSBGSVFMIHN0cmluZ1xuICAgICAgICAgKi9cbiAgICAgICAgcXVlcnkoKTogc3RyaW5nO1xuICAgIH1cblxuICAgIGNsYXNzIEJ1aWxkZXJDaGFpbiBpbXBsZW1lbnRzIENvbXBsZXRlQ29uZGl0aW9uLCBQYXJ0aWFsQ29uZGl0aW9uLCBQcm9wZXJ0eSB7XG4gICAgICAgIHByaXZhdGUgcmVzdWx0ID0gJyc7XG4gICAgICAgIHByaXZhdGUgcGFyZW50OiBCdWlsZGVyQ2hhaW47XG4gICAgICAgIHByaXZhdGUgY3VycmVudENvbXBvc2l0ZU9wOiBzdHJpbmc7XG5cbiAgICAgICAgY29uc3RydWN0b3IocGFyZW50PzogQnVpbGRlckNoYWluKSB7XG4gICAgICAgICAgICB0aGlzLnBhcmVudCA9IHBhcmVudDtcbiAgICAgICAgfVxuXG4gICAgICAgIHB1YmxpYyBxdWVyeSgpOiBzdHJpbmcge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuYnVpbGRQYXJ0aWFsKCk7XG4gICAgICAgIH1cblxuICAgICAgICBwdWJsaWMgYW5kKCk6IFBhcnRpYWxDb25kaXRpb247XG4gICAgICAgIHB1YmxpYyBhbmQoY29uZGl0aW9uMTogQ29tcGxldGVDb25kaXRpb24sIGNvbmRpdGlvbjI6IENvbXBsZXRlQ29uZGl0aW9uLCBjb25kaXRpb25OPzogQ29tcGxldGVDb25kaXRpb25bXSk6IENvbXBsZXRlQ29uZGl0aW9uO1xuICAgICAgICAvLyB0c2xpbnQ6ZGlzYWJsZS1uZXh0LWxpbmU6bWF4LWxpbmUtbGVuZ3RoXG4gICAgICAgIHB1YmxpYyBhbmQoY29uZGl0aW9uMT86IENvbXBsZXRlQ29uZGl0aW9uLCBjb25kaXRpb24yPzogQ29tcGxldGVDb25kaXRpb24sIGNvbmRpdGlvbk4/OiBDb21wbGV0ZUNvbmRpdGlvbltdKTogUGFydGlhbENvbmRpdGlvbiB8IENvbXBsZXRlQ29uZGl0aW9uIHtcbiAgICAgICAgICAgIGlmICghY29uZGl0aW9uMSkge1xuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLnNpbXBsZUFuZCgpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICB0aGlzLnJlc3VsdCArPSAnKCcgKyAoY29uZGl0aW9uMSBhcyBCdWlsZGVyQ2hhaW4pLmJ1aWxkUGFydGlhbCgpICsgT3BlcmF0b3JzLkFORCArIChjb25kaXRpb24yIGFzIEJ1aWxkZXJDaGFpbikuYnVpbGRQYXJ0aWFsKCk7XG4gICAgICAgICAgICBpZiAoY29uZGl0aW9uTiAmJiBjb25kaXRpb25OLmxlbmd0aCkge1xuICAgICAgICAgICAgICAgIGNvbmRpdGlvbk4uZm9yRWFjaCgoY29uZGl0aW9uKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMucmVzdWx0ICs9IE9wZXJhdG9ycy5BTkQgKyAoY29uZGl0aW9uIGFzIEJ1aWxkZXJDaGFpbikuYnVpbGRQYXJ0aWFsKCk7XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHRoaXMucmVzdWx0ICs9ICcpJztcbiAgICAgICAgICAgIHJldHVybiB0aGlzO1xuICAgICAgICB9XG5cbiAgICAgICAgcHJpdmF0ZSBzaW1wbGVBbmQoKTogUGFydGlhbENvbmRpdGlvbiB7XG4gICAgICAgICAgICBpZiAodGhpcy5jdXJyZW50Q29tcG9zaXRlT3AgPT09IE9wZXJhdG9ycy5PUiB8fCB0aGlzLnBhcmVudCAmJiB0aGlzLnBhcmVudC5jdXJyZW50Q29tcG9zaXRlT3AgPT09IE9wZXJhdG9ycy5PUikge1xuICAgICAgICAgICAgICAgIGlmICh0aGlzLnBhcmVudCkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnBhcmVudC5yZXN1bHQgPSAnKCcgKyB0aGlzLnBhcmVudC5yZXN1bHQ7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMucmVzdWx0ICs9ICcpJztcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLndyYXAoKTtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICB0aGlzLmN1cnJlbnRDb21wb3NpdGVPcCA9IE9wZXJhdG9ycy5BTkQ7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHRoaXMucmVzdWx0ICs9IE9wZXJhdG9ycy5BTkQ7XG4gICAgICAgICAgICByZXR1cm4gdGhpcztcbiAgICAgICAgfVxuXG4gICAgICAgIHB1YmxpYyBvcigpOiBQYXJ0aWFsQ29uZGl0aW9uO1xuICAgICAgICBwdWJsaWMgb3IoY29uZGl0aW9uMTogQ29tcGxldGVDb25kaXRpb24sIGNvbmRpdGlvbjI6IENvbXBsZXRlQ29uZGl0aW9uLCBjb25kaXRpb25OPzogQ29tcGxldGVDb25kaXRpb25bXSk6IENvbXBsZXRlQ29uZGl0aW9uO1xuICAgICAgICAvLyB0c2xpbnQ6ZGlzYWJsZS1uZXh0LWxpbmU6bWF4LWxpbmUtbGVuZ3RoXG4gICAgICAgIHB1YmxpYyBvcihjb25kaXRpb24xPzogQ29tcGxldGVDb25kaXRpb24sIGNvbmRpdGlvbjI/OiBDb21wbGV0ZUNvbmRpdGlvbiwgY29uZGl0aW9uTj86IENvbXBsZXRlQ29uZGl0aW9uW10pOiBQYXJ0aWFsQ29uZGl0aW9uIHwgQ29tcGxldGVDb25kaXRpb24ge1xuICAgICAgICAgICAgaWYgKCFjb25kaXRpb24xKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuc2ltcGxlT3IoKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgdGhpcy5yZXN1bHQgKz0gJygnICsgKGNvbmRpdGlvbjEgYXMgQnVpbGRlckNoYWluKS5idWlsZFBhcnRpYWwoKSArIE9wZXJhdG9ycy5PUiArIChjb25kaXRpb24yIGFzIEJ1aWxkZXJDaGFpbikuYnVpbGRQYXJ0aWFsKCk7XG4gICAgICAgICAgICBpZiAoY29uZGl0aW9uTiAmJiBjb25kaXRpb25OLmxlbmd0aCkge1xuICAgICAgICAgICAgICAgIGNvbmRpdGlvbk4uZm9yRWFjaCgoY29uZGl0aW9uKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMucmVzdWx0ICs9IE9wZXJhdG9ycy5PUiArIChjb25kaXRpb24gYXMgQnVpbGRlckNoYWluKS5idWlsZFBhcnRpYWwoKTtcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgdGhpcy5yZXN1bHQgKz0gJyknO1xuICAgICAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgICAgIH1cblxuICAgICAgICBwcml2YXRlIHNpbXBsZU9yKCk6IFBhcnRpYWxDb25kaXRpb24ge1xuICAgICAgICAgICAgaWYgKHRoaXMuY3VycmVudENvbXBvc2l0ZU9wID09PSBPcGVyYXRvcnMuQU5EIHx8ICh0aGlzLnBhcmVudCAmJiB0aGlzLnBhcmVudC5jdXJyZW50Q29tcG9zaXRlT3AgPT09IE9wZXJhdG9ycy5BTkQpKSB7XG4gICAgICAgICAgICAgICAgaWYgKHRoaXMucGFyZW50KSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMucGFyZW50LnJlc3VsdCA9ICcoJyArIHRoaXMucGFyZW50LnJlc3VsdDtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5yZXN1bHQgKz0gJyknO1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMud3JhcCgpO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIHRoaXMuY3VycmVudENvbXBvc2l0ZU9wID0gT3BlcmF0b3JzLk9SO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICB0aGlzLnJlc3VsdCArPSBPcGVyYXRvcnMuT1I7XG4gICAgICAgICAgICByZXR1cm4gdGhpcztcbiAgICAgICAgfVxuXG4gICAgICAgIHByaXZhdGUgd3JhcCgpOiBDb21wbGV0ZUNvbmRpdGlvbiB7XG4gICAgICAgICAgICB0aGlzLnJlc3VsdCA9ICcoJyArIHRoaXMucmVzdWx0ICsgJyknO1xuICAgICAgICAgICAgdGhpcy5jdXJyZW50Q29tcG9zaXRlT3AgPSBudWxsO1xuICAgICAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgICAgIH1cblxuICAgICAgICBwcml2YXRlIGJ1aWxkUGFydGlhbCgpOiBzdHJpbmcge1xuICAgICAgICAgICAgcmV0dXJuICh0aGlzLnBhcmVudCkgPyB0aGlzLnBhcmVudC5idWlsZFBhcnRpYWwoKSArIHRoaXMucmVzdWx0IDogdGhpcy5yZXN1bHQ7XG4gICAgICAgIH1cblxuICAgICAgICBwdWJsaWMgaXMocHJvcGVydHk6IHN0cmluZyk6IFByb3BlcnR5IHtcbiAgICAgICAgICAgIGNvbnN0IGJ1aWxkZXI6IEJ1aWxkZXJDaGFpbiA9IG5ldyBCdWlsZGVyQ2hhaW4odGhpcyk7XG4gICAgICAgICAgICBidWlsZGVyLnJlc3VsdCA9IHByb3BlcnR5O1xuICAgICAgICAgICAgcmV0dXJuIGJ1aWxkZXI7XG4gICAgICAgIH1cblxuICAgICAgICBwdWJsaWMgZXF1YWxUbyh2YWx1ZTogKGJvb2xlYW4gfCBudW1iZXIgfCBzdHJpbmcpLCAuLi5tb3JlVmFsdWVzOiAoYm9vbGVhbiB8IG51bWJlciB8IHN0cmluZylbXSk6IENvbXBsZXRlQ29uZGl0aW9uIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLmNvbmRpdGlvbihPcGVyYXRvcnMuRVEsIHZhbHVlLCAuLi5tb3JlVmFsdWVzKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHB1YmxpYyBub3RFcXVhbFRvKHZhbHVlOiAoYm9vbGVhbiB8IG51bWJlciB8IHN0cmluZykpOiBDb21wbGV0ZUNvbmRpdGlvbiB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5jb25kaXRpb24oT3BlcmF0b3JzLk5FUSwgdmFsdWUpO1xuICAgICAgICB9XG5cbiAgICAgICAgcHVibGljIGxlc3NUaGFuKHZhbHVlOiBudW1iZXIpOiBDb21wbGV0ZUNvbmRpdGlvbiB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5jb25kaXRpb24oT3BlcmF0b3JzLkxULCB2YWx1ZSk7XG4gICAgICAgIH1cblxuICAgICAgICBwdWJsaWMgbGVzc09yRXF1YWxUbyh2YWx1ZTogbnVtYmVyKTogQ29tcGxldGVDb25kaXRpb24ge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuY29uZGl0aW9uKE9wZXJhdG9ycy5MRSwgdmFsdWUpO1xuICAgICAgICB9XG5cbiAgICAgICAgcHVibGljIGdyZWF0ZXJUaGFuKHZhbHVlOiBudW1iZXIpOiBDb21wbGV0ZUNvbmRpdGlvbiB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5jb25kaXRpb24oT3BlcmF0b3JzLkdULCB2YWx1ZSk7XG4gICAgICAgIH1cblxuICAgICAgICBwdWJsaWMgZ3JlYXRlck9yRXF1YWxUbyh2YWx1ZTogbnVtYmVyKTogQ29tcGxldGVDb25kaXRpb24ge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuY29uZGl0aW9uKE9wZXJhdG9ycy5HRSwgdmFsdWUpO1xuICAgICAgICB9XG5cbiAgICAgICAgcHVibGljIGxpa2UodmFsdWU6IHN0cmluZywgbW9kZTogTWF0Y2hNb2RlID0gTWF0Y2hNb2RlLlNUQVJUKTogQ29tcGxldGVDb25kaXRpb24ge1xuICAgICAgICAgICAgbGV0IHdpbGRjYXJkVmFsdWU6IHN0cmluZztcbiAgICAgICAgICAgIHN3aXRjaCAobW9kZSkge1xuICAgICAgICAgICAgICAgIGNhc2UgTWF0Y2hNb2RlLlNUQVJUOlxuICAgICAgICAgICAgICAgICAgICB3aWxkY2FyZFZhbHVlID0gYCR7dmFsdWV9KmA7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIGNhc2UgTWF0Y2hNb2RlLkVORDpcbiAgICAgICAgICAgICAgICAgICAgd2lsZGNhcmRWYWx1ZSA9IGAqJHt2YWx1ZX1gO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICBjYXNlIE1hdGNoTW9kZS5BTllXSEVSRTpcbiAgICAgICAgICAgICAgICAgICAgd2lsZGNhcmRWYWx1ZSA9IGAqJHt2YWx1ZX0qYDtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgICAgICAgd2lsZGNhcmRWYWx1ZSA9IHZhbHVlO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgcmV0dXJuIHRoaXMuY29uZGl0aW9uKE9wZXJhdG9ycy5FUSwgd2lsZGNhcmRWYWx1ZSk7XG4gICAgICAgIH1cblxuICAgICAgICBwcml2YXRlIGNvbmRpdGlvbihvcGVyYXRvcjogc3RyaW5nLCB2YWx1ZTogYW55LCAuLi5tb3JlVmFsdWVzOiBhbnlbXSk6IENvbXBsZXRlQ29uZGl0aW9uIHtcbiAgICAgICAgICAgIGNvbnN0IG5hbWUgPSB0aGlzLnJlc3VsdDtcbiAgICAgICAgICAgIHRoaXMucmVzdWx0ICs9IG9wZXJhdG9yICsgZW5jb2RlVVJJKHZhbHVlIGFzIHN0cmluZyk7XG4gICAgICAgICAgICBpZiAobW9yZVZhbHVlcy5sZW5ndGgpIHtcbiAgICAgICAgICAgICAgICBtb3JlVmFsdWVzLmZvckVhY2goKG5leHQpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5yZXN1bHQgKz0gJywnICsgbmFtZSArIG9wZXJhdG9yICsgZW5jb2RlVVJJKG5leHQgYXMgc3RyaW5nKTtcbiAgICAgICAgICAgICAgICB9KTtcblxuICAgICAgICAgICAgICAgIHRoaXMuY3VycmVudENvbXBvc2l0ZU9wID0gT3BlcmF0b3JzLk9SO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICByZXR1cm4gdGhpcztcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEJ1aWxkcyBhIEZJUUwgc2VhcmNoIGNvbmRpdGlvbiB1c2luZyBhIGZsdWVudCBpbnRlcmZhY2UuXG4gICAgICovXG4gICAgZXhwb3J0IGNsYXNzIEJ1aWxkZXIgaW1wbGVtZW50cyBQYXJ0aWFsQ29uZGl0aW9uIHtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIENyZWF0ZSBhIHNpbXBsZSBwcm9wZXJ0eSB0byBiZSBldmF1bGF0ZWQgYXMgYSBmaWx0ZXIgY29uZGl0aW9uLlxuICAgICAgICAgKlxuICAgICAgICAgKiBAcGFyYW0gcHJvcGVydHkgdGhlIG5hbWUgb2YgdGhlIHByb3BlcnR5XG4gICAgICAgICAqIEByZXR1cm5zIGEgUHJvcGVydHkgaW5zdGFuY2UgZm9yIGRlZmluaW5nIGEgZmlsdGVyIGNvbmRpdGlvblxuICAgICAgICAgKi9cbiAgICAgICAgaXMocHJvcGVydHk6IHN0cmluZyk6IFByb3BlcnR5IHtcbiAgICAgICAgICAgIHJldHVybiBuZXcgQnVpbGRlckNoYWluKCkuaXMocHJvcGVydHkpO1xuICAgICAgICB9XG5cbiAgICAgICAgLyoqXG4gICAgICAgICAqIENyZWF0ZSBhIGNvbmp1bmN0aW9uIChBTkQpIGNvbmRpdGlvbiBmcm9tIGV4aXN0aW5nIGNvbmRpdGlvbnMuXG4gICAgICAgICAqXG4gICAgICAgICAqIEBwYXJhbSBjb25kaXRpb24xIGZpcnN0IGNvbmRpdGlvblxuICAgICAgICAgKiBAcGFyYW0gY29uZGl0aW9uMiBzZWNvbmQgY29uZGl0aW9uXG4gICAgICAgICAqIEBwYXJhbSBjb25kaXRpb25OIGFueSBhZGRpdGlvbmFsIGNvbmRpdGlvbnNcbiAgICAgICAgICogQHJldHVybnMgYW4gZXZhbHVhdGFibGUgZmlsdGVyIGNvbmRpdGlvblxuICAgICAgICAgKi9cbiAgICAgICAgYW5kKGNvbmRpdGlvbjE6IENvbXBsZXRlQ29uZGl0aW9uLCBjb25kaXRpb24yOiBDb21wbGV0ZUNvbmRpdGlvbiwgY29uZGl0aW9uTj86IENvbXBsZXRlQ29uZGl0aW9uW10pOiBDb21wbGV0ZUNvbmRpdGlvbiB7XG4gICAgICAgICAgICByZXR1cm4gbmV3IEJ1aWxkZXJDaGFpbigpLmFuZChjb25kaXRpb24xLCBjb25kaXRpb24yLCBjb25kaXRpb25OKTtcbiAgICAgICAgfVxuXG4gICAgICAgIC8qKlxuICAgICAgICAgKiBDcmVhdGUgYSBkaXNqdW5jdGlvbiAoT1IpIGNvbmRpdGlvbiBmcm9tIGV4aXN0aW5nIGNvbmRpdGlvbnMuXG4gICAgICAgICAqXG4gICAgICAgICAqIEBwYXJhbSBjb25kaXRpb24xIGZpcnN0IGNvbmRpdGlvblxuICAgICAgICAgKiBAcGFyYW0gY29uZGl0aW9uMiBzZWNvbmQgY29uZGl0aW9uXG4gICAgICAgICAqIEBwYXJhbSBjb25kaXRpb25OIGFueSBhZGRpdGlvbmFsIGNvbmRpdGlvbnNcbiAgICAgICAgICogQHJldHVybnMgYW4gZXZhbHVhdGFibGUgZmlsdGVyIGNvbmRpdGlvblxuICAgICAgICAgKi9cbiAgICAgICAgb3IoY29uZGl0aW9uMTogQ29tcGxldGVDb25kaXRpb24sIGNvbmRpdGlvbjI6IENvbXBsZXRlQ29uZGl0aW9uLCBjb25kaXRpb25OPzogQ29tcGxldGVDb25kaXRpb25bXSk6IENvbXBsZXRlQ29uZGl0aW9uIHtcbiAgICAgICAgICAgIHJldHVybiBuZXcgQnVpbGRlckNoYWluKCkub3IoY29uZGl0aW9uMSwgY29uZGl0aW9uMiwgY29uZGl0aW9uTik7XG4gICAgICAgIH1cbiAgICB9XG59XG4iXX0=
@@ -0,0 +1,79 @@
1
+ // tslint:disable:variable-name
2
+ // tslint:disable-next-line:no-namespace
3
+ export var Query;
4
+ (function (Query) {
5
+ class Builder {
6
+ constructor() {
7
+ this._format = Format.ID_RECORDS;
8
+ this._links = true;
9
+ this._pageSize = 25;
10
+ }
11
+ static getBuilder() {
12
+ return new Builder();
13
+ }
14
+ static ofType(type) {
15
+ const qb = new Builder();
16
+ qb._type = type;
17
+ return qb;
18
+ }
19
+ format(format) {
20
+ this._format = format;
21
+ return this;
22
+ }
23
+ links(links) {
24
+ this._links = links;
25
+ return this;
26
+ }
27
+ pageSize(pageSize) {
28
+ this._pageSize = pageSize;
29
+ return this;
30
+ }
31
+ fields(...fields) {
32
+ this._fields = fields;
33
+ return this;
34
+ }
35
+ filter(filter) {
36
+ this._filter = filter;
37
+ return this;
38
+ }
39
+ sort(...sort) {
40
+ this._sort = sort;
41
+ return this;
42
+ }
43
+ get() {
44
+ let query = `?type=${this._type}&format=${this._format}&links=${this._links}&pageSize=${this._pageSize}`;
45
+ if (this._fields && this._fields.length > 0) {
46
+ query += `&fields=${this._fields.join(',')}`;
47
+ }
48
+ if (this._filter) {
49
+ query += `&filter=${this._filter}`;
50
+ }
51
+ if (this._sort) {
52
+ this._sort.forEach(s => {
53
+ query += `&${s.reverse ? 'sortDesc' : 'sortAsc'}=${s.field}`;
54
+ });
55
+ }
56
+ return query;
57
+ }
58
+ getCloudAPI() {
59
+ let query = `?pageSize=${this._pageSize}`;
60
+ if (this._filter) {
61
+ query += `&filter=${this._filter}`;
62
+ }
63
+ if (this._sort) {
64
+ this._sort.forEach(s => {
65
+ query += `&${s.reverse ? 'sortDesc' : 'sortAsc'}=${s.field}`;
66
+ });
67
+ }
68
+ return query;
69
+ }
70
+ }
71
+ Query.Builder = Builder;
72
+ class Format {
73
+ static { this.ID_RECORDS = 'idrecords'; }
74
+ static { this.RECORDS = 'records'; }
75
+ static { this.REFERENCES = 'references'; }
76
+ }
77
+ Query.Format = Format;
78
+ })(Query || (Query = {}));
79
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicXVlcnkuYnVpbGRlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3ZjZC9zZGsvc3JjL2NsaWVudC9xdWVyeS9xdWVyeS5idWlsZGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUVBLCtCQUErQjtBQUMvQix3Q0FBd0M7QUFDeEMsTUFBTSxLQUFXLEtBQUssQ0E2RnJCO0FBN0ZELFdBQWlCLEtBQUs7SUFDbEIsTUFBYSxPQUFPO1FBU2hCO1lBUFEsWUFBTyxHQUFXLE1BQU0sQ0FBQyxVQUFVLENBQUM7WUFDcEMsV0FBTSxHQUFHLElBQUksQ0FBQztZQUNkLGNBQVMsR0FBRyxFQUFFLENBQUM7UUFLQyxDQUFDO1FBRWxCLE1BQU0sQ0FBQyxVQUFVO1lBQ3BCLE9BQU8sSUFBSSxPQUFPLEVBQUUsQ0FBQztRQUN6QixDQUFDO1FBRU0sTUFBTSxDQUFDLE1BQU0sQ0FBQyxJQUFZO1lBQzdCLE1BQU0sRUFBRSxHQUFHLElBQUksT0FBTyxFQUFFLENBQUM7WUFDekIsRUFBRSxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUM7WUFDaEIsT0FBTyxFQUFFLENBQUM7UUFDZCxDQUFDO1FBRU0sTUFBTSxDQUFDLE1BQW9CO1lBQzlCLElBQUksQ0FBQyxPQUFPLEdBQUcsTUFBTSxDQUFDO1lBQ3RCLE9BQU8sSUFBSSxDQUFDO1FBQ2hCLENBQUM7UUFFTSxLQUFLLENBQUMsS0FBYztZQUN2QixJQUFJLENBQUMsTUFBTSxHQUFHLEtBQUssQ0FBQztZQUNwQixPQUFPLElBQUksQ0FBQztRQUNoQixDQUFDO1FBRU0sUUFBUSxDQUFDLFFBQWdCO1lBQzVCLElBQUksQ0FBQyxTQUFTLEdBQUcsUUFBUSxDQUFDO1lBQzFCLE9BQU8sSUFBSSxDQUFDO1FBQ2hCLENBQUM7UUFFTSxNQUFNLENBQUMsR0FBRyxNQUFnQjtZQUM3QixJQUFJLENBQUMsT0FBTyxHQUFHLE1BQU0sQ0FBQztZQUN0QixPQUFPLElBQUksQ0FBQztRQUNoQixDQUFDO1FBRU0sTUFBTSxDQUFDLE1BQWM7WUFDeEIsSUFBSSxDQUFDLE9BQU8sR0FBRyxNQUFNLENBQUM7WUFDdEIsT0FBTyxJQUFJLENBQUM7UUFDaEIsQ0FBQztRQUVNLElBQUksQ0FBQyxHQUFHLElBQTRDO1lBQ3ZELElBQUksQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDO1lBQ2xCLE9BQU8sSUFBSSxDQUFDO1FBQ2hCLENBQUM7UUFFTSxHQUFHO1lBQ04sSUFBSSxLQUFLLEdBQUcsU0FBUyxJQUFJLENBQUMsS0FBSyxXQUFXLElBQUksQ0FBQyxPQUFPLFVBQVUsSUFBSSxDQUFDLE1BQU0sYUFBYSxJQUFJLENBQUMsU0FBUyxFQUFFLENBQUM7WUFDekcsSUFBSSxJQUFJLENBQUMsT0FBTyxJQUFJLElBQUksQ0FBQyxPQUFPLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRSxDQUFDO2dCQUMxQyxLQUFLLElBQUksV0FBVyxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDO1lBQ2pELENBQUM7WUFFRCxJQUFJLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQztnQkFDZixLQUFLLElBQUksV0FBVyxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUM7WUFDdkMsQ0FBQztZQUVELElBQUksSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDO2dCQUNiLElBQUksQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxFQUFFO29CQUNuQixLQUFLLElBQUksSUFBSSxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLFNBQVMsSUFBSSxDQUFDLENBQUMsS0FBSyxFQUFFLENBQUM7Z0JBQ2pFLENBQUMsQ0FBQyxDQUFDO1lBQ1AsQ0FBQztZQUVELE9BQU8sS0FBSyxDQUFDO1FBQ2pCLENBQUM7UUFFTSxXQUFXO1lBQ2QsSUFBSSxLQUFLLEdBQUcsYUFBYSxJQUFJLENBQUMsU0FBUyxFQUFFLENBQUM7WUFFMUMsSUFBSSxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUM7Z0JBQ2YsS0FBSyxJQUFJLFdBQVcsSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDO1lBQ3ZDLENBQUM7WUFFRCxJQUFJLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQztnQkFDYixJQUFJLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsRUFBRTtvQkFDbkIsS0FBSyxJQUFJLElBQUksQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxTQUFTLElBQUksQ0FBQyxDQUFDLEtBQUssRUFBRSxDQUFDO2dCQUNqRSxDQUFDLENBQUMsQ0FBQztZQUNQLENBQUM7WUFFRCxPQUFPLEtBQUssQ0FBQztRQUNqQixDQUFDO0tBQ0o7SUFyRlksYUFBTyxVQXFGbkIsQ0FBQTtJQUVELE1BQWEsTUFBTTtpQkFDQyxlQUFVLEdBQVcsV0FBVyxDQUFDO2lCQUNqQyxZQUFPLEdBQVcsU0FBUyxDQUFDO2lCQUM1QixlQUFVLEdBQVcsWUFBWSxDQUFDOztJQUh6QyxZQUFNLFNBSWxCLENBQUE7QUFDTCxDQUFDLEVBN0ZnQixLQUFLLEtBQUwsS0FBSyxRQTZGckIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBGaWx0ZXIgfSBmcm9tICcuL2ZpbHRlci5idWlsZGVyJztcblxuLy8gdHNsaW50OmRpc2FibGU6dmFyaWFibGUtbmFtZVxuLy8gdHNsaW50OmRpc2FibGUtbmV4dC1saW5lOm5vLW5hbWVzcGFjZVxuZXhwb3J0IG5hbWVzcGFjZSBRdWVyeSB7XG4gICAgZXhwb3J0IGNsYXNzIEJ1aWxkZXIge1xuICAgICAgICBwcml2YXRlIF90eXBlOiBzdHJpbmc7XG4gICAgICAgIHByaXZhdGUgX2Zvcm1hdDogRm9ybWF0ID0gRm9ybWF0LklEX1JFQ09SRFM7XG4gICAgICAgIHByaXZhdGUgX2xpbmtzID0gdHJ1ZTtcbiAgICAgICAgcHJpdmF0ZSBfcGFnZVNpemUgPSAyNTtcbiAgICAgICAgcHJpdmF0ZSBfZmllbGRzOiBzdHJpbmdbXTtcbiAgICAgICAgcHJpdmF0ZSBfZmlsdGVyOiBzdHJpbmc7XG4gICAgICAgIHByaXZhdGUgX3NvcnQ6IHsgZmllbGQ6IHN0cmluZywgcmV2ZXJzZT86IGJvb2xlYW4gfVtdO1xuXG4gICAgICAgIHByaXZhdGUgY29uc3RydWN0b3IoKSB7IH1cblxuICAgICAgICBwdWJsaWMgc3RhdGljIGdldEJ1aWxkZXIoKTogQnVpbGRlciB7XG4gICAgICAgICAgICByZXR1cm4gbmV3IEJ1aWxkZXIoKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHB1YmxpYyBzdGF0aWMgb2ZUeXBlKHR5cGU6IHN0cmluZyk6IEJ1aWxkZXIge1xuICAgICAgICAgICAgY29uc3QgcWIgPSBuZXcgQnVpbGRlcigpO1xuICAgICAgICAgICAgcWIuX3R5cGUgPSB0eXBlO1xuICAgICAgICAgICAgcmV0dXJuIHFiO1xuICAgICAgICB9XG5cbiAgICAgICAgcHVibGljIGZvcm1hdChmb3JtYXQ6IFF1ZXJ5LkZvcm1hdCk6IEJ1aWxkZXIge1xuICAgICAgICAgICAgdGhpcy5fZm9ybWF0ID0gZm9ybWF0O1xuICAgICAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgICAgIH1cblxuICAgICAgICBwdWJsaWMgbGlua3MobGlua3M6IGJvb2xlYW4pOiBCdWlsZGVyIHtcbiAgICAgICAgICAgIHRoaXMuX2xpbmtzID0gbGlua3M7XG4gICAgICAgICAgICByZXR1cm4gdGhpcztcbiAgICAgICAgfVxuXG4gICAgICAgIHB1YmxpYyBwYWdlU2l6ZShwYWdlU2l6ZTogbnVtYmVyKTogQnVpbGRlciB7XG4gICAgICAgICAgICB0aGlzLl9wYWdlU2l6ZSA9IHBhZ2VTaXplO1xuICAgICAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgICAgIH1cblxuICAgICAgICBwdWJsaWMgZmllbGRzKC4uLmZpZWxkczogc3RyaW5nW10pOiBCdWlsZGVyIHtcbiAgICAgICAgICAgIHRoaXMuX2ZpZWxkcyA9IGZpZWxkcztcbiAgICAgICAgICAgIHJldHVybiB0aGlzO1xuICAgICAgICB9XG5cbiAgICAgICAgcHVibGljIGZpbHRlcihmaWx0ZXI6IHN0cmluZyk6IEJ1aWxkZXIge1xuICAgICAgICAgICAgdGhpcy5fZmlsdGVyID0gZmlsdGVyO1xuICAgICAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgICAgIH1cblxuICAgICAgICBwdWJsaWMgc29ydCguLi5zb3J0OiB7IGZpZWxkOiBzdHJpbmcsIHJldmVyc2U/OiBib29sZWFuIH1bXSk6IEJ1aWxkZXIge1xuICAgICAgICAgICAgdGhpcy5fc29ydCA9IHNvcnQ7XG4gICAgICAgICAgICByZXR1cm4gdGhpcztcbiAgICAgICAgfVxuXG4gICAgICAgIHB1YmxpYyBnZXQoKTogc3RyaW5nIHtcbiAgICAgICAgICAgIGxldCBxdWVyeSA9IGA/dHlwZT0ke3RoaXMuX3R5cGV9JmZvcm1hdD0ke3RoaXMuX2Zvcm1hdH0mbGlua3M9JHt0aGlzLl9saW5rc30mcGFnZVNpemU9JHt0aGlzLl9wYWdlU2l6ZX1gO1xuICAgICAgICAgICAgaWYgKHRoaXMuX2ZpZWxkcyAmJiB0aGlzLl9maWVsZHMubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgICAgIHF1ZXJ5ICs9IGAmZmllbGRzPSR7dGhpcy5fZmllbGRzLmpvaW4oJywnKX1gO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpZiAodGhpcy5fZmlsdGVyKSB7XG4gICAgICAgICAgICAgICAgcXVlcnkgKz0gYCZmaWx0ZXI9JHt0aGlzLl9maWx0ZXJ9YDtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaWYgKHRoaXMuX3NvcnQpIHtcbiAgICAgICAgICAgICAgICB0aGlzLl9zb3J0LmZvckVhY2gocyA9PiB7XG4gICAgICAgICAgICAgICAgICAgIHF1ZXJ5ICs9IGAmJHtzLnJldmVyc2UgPyAnc29ydERlc2MnIDogJ3NvcnRBc2MnfT0ke3MuZmllbGR9YDtcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgcmV0dXJuIHF1ZXJ5O1xuICAgICAgICB9XG5cbiAgICAgICAgcHVibGljIGdldENsb3VkQVBJKCk6IHN0cmluZyB7XG4gICAgICAgICAgICBsZXQgcXVlcnkgPSBgP3BhZ2VTaXplPSR7dGhpcy5fcGFnZVNpemV9YDtcblxuICAgICAgICAgICAgaWYgKHRoaXMuX2ZpbHRlcikge1xuICAgICAgICAgICAgICAgIHF1ZXJ5ICs9IGAmZmlsdGVyPSR7dGhpcy5fZmlsdGVyfWA7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGlmICh0aGlzLl9zb3J0KSB7XG4gICAgICAgICAgICAgICAgdGhpcy5fc29ydC5mb3JFYWNoKHMgPT4ge1xuICAgICAgICAgICAgICAgICAgICBxdWVyeSArPSBgJiR7cy5yZXZlcnNlID8gJ3NvcnREZXNjJyA6ICdzb3J0QXNjJ309JHtzLmZpZWxkfWA7XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHJldHVybiBxdWVyeTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGV4cG9ydCBjbGFzcyBGb3JtYXQge1xuICAgICAgICBzdGF0aWMgcmVhZG9ubHkgSURfUkVDT1JEUzogc3RyaW5nID0gJ2lkcmVjb3Jkcyc7XG4gICAgICAgIHN0YXRpYyByZWFkb25seSBSRUNPUkRTOiBzdHJpbmcgPSAncmVjb3Jkcyc7XG4gICAgICAgIHN0YXRpYyByZWFkb25seSBSRUZFUkVOQ0VTOiBzdHJpbmcgPSAncmVmZXJlbmNlcyc7XG4gICAgfVxufVxuIl19