@trendster-io/ng-uploader
Version:
A fully featured Angular file uploader that utilizes Angular's HttpClient internally, allows you to customize outgoing HTTP requests using the "Angular Way" (Interceptors), provides customizable concurrent queuing of uploads and a simple way to select fil
408 lines • 23.3 kB
JavaScript
/**
* @fileoverview added by tsickle
* @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
*/
import * as tslib_1 from "tslib";
import { HttpRequest } from '@angular/common/http';
import { Observable, Subject } from 'rxjs';
var UploadItem = /** @class */ (function () {
function UploadItem(listener, options) {
this.listener = listener;
this.onResponseSubject = new Subject();
this.onProgressSubject = new Subject();
this.onErrorSubject = new Subject();
this.onResponse = this.onResponseSubject.asObservable();
this.onProgress = this.onProgressSubject.asObservable();
this.onError = this.onErrorSubject.asObservable();
this._progress = 0;
this.url = options.url;
this.method = options.method;
this.file = options.file;
this.fileAlias = options.fileAlias || 'file';
this.additionalParams = options.additionalParams;
this._req = this.buildRequest();
/** @type {?} */
var fileCategory = this.file.type.split('/')[0];
if (fileCategory === 'image' || fileCategory === 'video') {
this.preview = this.readMediaFile();
}
}
Object.defineProperty(UploadItem.prototype, "req", {
get: /**
* @return {?}
*/
function () {
return this._req;
},
enumerable: true,
configurable: true
});
Object.defineProperty(UploadItem.prototype, "progress", {
get: /**
* @return {?}
*/
function () {
return this._progress;
},
enumerable: true,
configurable: true
});
Object.defineProperty(UploadItem.prototype, "fileName", {
get: /**
* @return {?}
*/
function () {
return this.file.name;
},
enumerable: true,
configurable: true
});
Object.defineProperty(UploadItem.prototype, "isReady", {
get: /**
* @return {?}
*/
function () {
return this.ready;
},
enumerable: true,
configurable: true
});
Object.defineProperty(UploadItem.prototype, "isUploading", {
get: /**
* @return {?}
*/
function () {
return this.uploading;
},
enumerable: true,
configurable: true
});
Object.defineProperty(UploadItem.prototype, "isUploaded", {
get: /**
* @return {?}
*/
function () {
return this.uploaded;
},
enumerable: true,
configurable: true
});
Object.defineProperty(UploadItem.prototype, "isCancelled", {
get: /**
* @return {?}
*/
function () {
return this.cancelled;
},
enumerable: true,
configurable: true
});
Object.defineProperty(UploadItem.prototype, "isError", {
get: /**
* @return {?}
*/
function () {
return this.error;
},
enumerable: true,
configurable: true
});
/**
* @private
* @return {?}
*/
UploadItem.prototype.buildFormData = /**
* @private
* @return {?}
*/
function () {
/** @type {?} */
var formData = new FormData();
if (this.additionalParams) {
Object.entries(this.additionalParams).forEach((/**
* @param {?} __0
* @return {?}
*/
function (_a) {
var _b = tslib_1.__read(_a, 2), key = _b[0], value = _b[1];
return formData.set(key, value);
}));
}
formData.set(this.fileAlias, this.file, this.file.name);
return formData;
};
/**
* @private
* @return {?}
*/
UploadItem.prototype.buildRequest = /**
* @private
* @return {?}
*/
function () {
/** @type {?} */
var body = this.buildFormData();
return new HttpRequest(this.method, this.url, body, {
reportProgress: true
});
};
/**
* @private
* @return {?}
*/
UploadItem.prototype.readMediaFile = /**
* @private
* @return {?}
*/
function () {
var _this = this;
return new Observable((/**
* @param {?} observer
* @return {?}
*/
function (observer) {
/** @type {?} */
var reader = new FileReader();
reader.onload = (/**
* @return {?}
*/
function () {
observer.next((/** @type {?} */ (reader.result)));
observer.complete();
});
reader.onerror = (/**
* @return {?}
*/
function () {
reader.abort();
observer.error(reader.error);
});
reader.readAsDataURL(_this.file);
}));
};
/**
* @return {?}
*/
UploadItem.prototype.cleanup = /**
* @return {?}
*/
function () {
this.onResponseSubject.complete();
this.onProgressSubject.complete();
this.onErrorSubject.complete();
};
/**
* @return {?}
*/
UploadItem.prototype.onBeforeUpload = /**
* @return {?}
*/
function () {
this.ready = true;
this.uploading = false;
this.uploaded = false;
this.cancelled = false;
this.error = false;
this._progress = 0;
};
/**
* @return {?}
*/
UploadItem.prototype.onUploadStart = /**
* @return {?}
*/
function () {
this.ready = true;
this.uploading = true;
this.uploaded = false;
this.cancelled = false;
this.error = false;
};
/**
* @param {?} res
* @return {?}
*/
UploadItem.prototype.onUploadSuccess = /**
* @param {?} res
* @return {?}
*/
function (res) {
this.ready = false;
this.uploading = false;
this.uploaded = true;
this.cancelled = false;
this.error = false;
this._progress = 100;
this.onResponseSubject.next(res);
this.cleanup();
};
/**
* @param {?} progress
* @return {?}
*/
UploadItem.prototype.onUploadProgress = /**
* @param {?} progress
* @return {?}
*/
function (progress) {
this._progress = progress;
this.onProgressSubject.next(this._progress);
};
/**
* @return {?}
*/
UploadItem.prototype.onUploadCancelled = /**
* @return {?}
*/
function () {
this.ready = false;
this.uploading = false;
this.uploaded = false;
this.cancelled = true;
this.error = false;
this._progress = 0;
};
/**
* @param {?} err
* @return {?}
*/
UploadItem.prototype.onUploadError = /**
* @param {?} err
* @return {?}
*/
function (err) {
this.ready = false;
this.uploading = false;
this.uploaded = false;
this.cancelled = false;
this.error = true;
this._progress = 0;
this.onErrorSubject.next(err);
};
/**
* @param {?=} additionalParams
* @return {?}
*/
UploadItem.prototype.upload = /**
* @param {?=} additionalParams
* @return {?}
*/
function (additionalParams) {
if (additionalParams) {
this.additionalParams = additionalParams;
this._req = this.buildRequest();
}
this.listener.uploadItem(this);
};
/**
* @return {?}
*/
UploadItem.prototype.cancel = /**
* @return {?}
*/
function () {
this.listener.cancelItem(this);
};
/**
* @return {?}
*/
UploadItem.prototype.remove = /**
* @return {?}
*/
function () {
this.listener.removeItem(this);
};
return UploadItem;
}());
export { UploadItem };
if (false) {
/** @type {?} */
UploadItem.prototype.preview;
/** @type {?} */
UploadItem.prototype.onResponse;
/** @type {?} */
UploadItem.prototype.onProgress;
/** @type {?} */
UploadItem.prototype.onError;
/**
* @type {?}
* @private
*/
UploadItem.prototype.onResponseSubject;
/**
* @type {?}
* @private
*/
UploadItem.prototype.onProgressSubject;
/**
* @type {?}
* @private
*/
UploadItem.prototype.onErrorSubject;
/**
* @type {?}
* @private
*/
UploadItem.prototype._req;
/**
* @type {?}
* @private
*/
UploadItem.prototype._progress;
/**
* @type {?}
* @private
*/
UploadItem.prototype.url;
/**
* @type {?}
* @private
*/
UploadItem.prototype.method;
/**
* @type {?}
* @private
*/
UploadItem.prototype.file;
/**
* @type {?}
* @private
*/
UploadItem.prototype.fileAlias;
/**
* @type {?}
* @private
*/
UploadItem.prototype.additionalParams;
/**
* @type {?}
* @private
*/
UploadItem.prototype.ready;
/**
* @type {?}
* @private
*/
UploadItem.prototype.uploading;
/**
* @type {?}
* @private
*/
UploadItem.prototype.uploaded;
/**
* @type {?}
* @private
*/
UploadItem.prototype.cancelled;
/**
* @type {?}
* @private
*/
UploadItem.prototype.error;
/**
* @type {?}
* @private
*/
UploadItem.prototype.listener;
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXBsb2FkLWl0ZW0uY2xhc3MuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9AdHJlbmRzdGVyLWlvL25nLXVwbG9hZGVyLyIsInNvdXJjZXMiOlsibGliL3VwbG9hZC1pdGVtLmNsYXNzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBQUEsT0FBTyxFQUFxQixXQUFXLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUV0RSxPQUFPLEVBQUUsVUFBVSxFQUFFLE9BQU8sRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUkzQztJQXFCRSxvQkFBb0IsUUFBd0IsRUFBRSxPQUEwQjtRQUFwRCxhQUFRLEdBQVIsUUFBUSxDQUFnQjtRQUMxQyxJQUFJLENBQUMsaUJBQWlCLEdBQUcsSUFBSSxPQUFPLEVBQUUsQ0FBQztRQUN2QyxJQUFJLENBQUMsaUJBQWlCLEdBQUcsSUFBSSxPQUFPLEVBQUUsQ0FBQztRQUN2QyxJQUFJLENBQUMsY0FBYyxHQUFHLElBQUksT0FBTyxFQUFFLENBQUM7UUFDcEMsSUFBSSxDQUFDLFVBQVUsR0FBRyxJQUFJLENBQUMsaUJBQWlCLENBQUMsWUFBWSxFQUFFLENBQUM7UUFDeEQsSUFBSSxDQUFDLFVBQVUsR0FBRyxJQUFJLENBQUMsaUJBQWlCLENBQUMsWUFBWSxFQUFFLENBQUM7UUFDeEQsSUFBSSxDQUFDLE9BQU8sR0FBRyxJQUFJLENBQUMsY0FBYyxDQUFDLFlBQVksRUFBRSxDQUFDO1FBQ2xELElBQUksQ0FBQyxTQUFTLEdBQUcsQ0FBQyxDQUFDO1FBQ25CLElBQUksQ0FBQyxHQUFHLEdBQUcsT0FBTyxDQUFDLEdBQUcsQ0FBQztRQUN2QixJQUFJLENBQUMsTUFBTSxHQUFHLE9BQU8sQ0FBQyxNQUFNLENBQUM7UUFDN0IsSUFBSSxDQUFDLElBQUksR0FBRyxPQUFPLENBQUMsSUFBSSxDQUFDO1FBQ3pCLElBQUksQ0FBQyxTQUFTLEdBQUcsT0FBTyxDQUFDLFNBQVMsSUFBSSxNQUFNLENBQUM7UUFDN0MsSUFBSSxDQUFDLGdCQUFnQixHQUFH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QU07Ozs7SUFBTixVQUFPLGdCQUF5QztRQUM5QyxJQUFJLGdCQUFnQixFQUFFO1lBQ3BCLElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxnQkFBZ0IsQ0FBQztZQUN6QyxJQUFJLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQyxZQUFZLEVBQUUsQ0FBQztTQUNqQztRQUNELElBQUksQ0FBQyxRQUFRLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ2pDLENBQUM7Ozs7SUFFRCwyQkFBTTs7O0lBQU47UUFDRSxJQUFJLENBQUMsUUFBUSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUNqQyxDQUFDOzs7O0lBRUQsMkJBQU07OztJQUFOO1FBQ0UsSUFBSSxDQUFDLFFBQVEsQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDakMsQ0FBQztJQUNILGlCQUFDO0FBQUQsQ0FBQyxBQW5MRCxJQW1MQzs7OztJQWxMQyw2QkFBcUM7O0lBQ3JDLGdDQUFxQzs7SUFDckMsZ0NBQXdDOztJQUN4Qyw2QkFBZ0Q7Ozs7O0lBQ2hELHVDQUF3Qzs7Ozs7SUFDeEMsdUNBQTJDOzs7OztJQUMzQyxvQ0FBbUQ7Ozs7O0lBQ25ELDBCQUFvQzs7Ozs7SUFDcEMsK0JBQTBCOzs7OztJQUMxQix5QkFBb0I7Ozs7O0lBQ3BCLDRCQUF5Qzs7Ozs7SUFDekMsMEJBQW1COzs7OztJQUNuQiwrQkFBMEI7Ozs7O0lBQzFCLHNDQUFpRDs7Ozs7SUFDakQsMkJBQXVCOzs7OztJQUN2QiwrQkFBMkI7Ozs7O0lBQzNCLDhCQUEwQjs7Ozs7SUFDMUIsK0JBQTJCOzs7OztJQUMzQiwyQkFBdUI7Ozs7O0lBRVgsOEJBQWdDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSHR0cEVycm9yUmVzcG9uc2UsIEh0dHBSZXF1ZXN0IH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnO1xuXG5pbXBvcnQgeyBPYnNlcnZhYmxlLCBTdWJqZWN0IH0gZnJvbSAncnhqcyc7XG5cbmltcG9ydCB7IFVwbG9hZExpc3RlbmVyLCBVcGxvYWRJdGVtT3B0aW9ucyB9IGZyb20gJy4vbW9kZWxzJztcblxuZXhwb3J0IGNsYXNzIFVwbG9hZEl0ZW0ge1xuICByZWFkb25seSBwcmV2aWV3OiBPYnNlcnZhYmxlPHN0cmluZz47XG4gIHJlYWRvbmx5IG9uUmVzcG9uc2U6IE9ic2VydmFibGU8YW55PjtcbiAgcmVhZG9ubHkgb25Qcm9ncmVzczogT2JzZXJ2YWJsZTxudW1iZXI+O1xuICByZWFkb25seSBvbkVycm9yOiBPYnNlcnZhYmxlPEh0dHBFcnJvclJlc3BvbnNlPjtcbiAgcHJpdmF0ZSBvblJlc3BvbnNlU3ViamVjdDogU3ViamVjdDxhbnk+O1xuICBwcml2YXRlIG9uUHJvZ3Jlc3NTdWJqZWN0OiBTdWJqZWN0PG51bWJlcj47XG4gIHByaXZhdGUgb25FcnJvclN1YmplY3Q6IFN1YmplY3Q8SHR0cEVycm9yUmVzcG9uc2U+O1xuICBwcml2YXRlIF9yZXE6IEh0dHBSZXF1ZXN0PEZvcm1EYXRhPjtcbiAgcHJpdmF0ZSBfcHJvZ3Jlc3M6IG51bWJlcjtcbiAgcHJpdmF0ZSB1cmw6IHN0cmluZztcbiAgcHJpdmF0ZSBtZXRob2Q6ICdQT1NUJyB8ICdQVVQnIHwgJ1BBVENIJztcbiAgcHJpdmF0ZSBmaWxlOiBGaWxlO1xuICBwcml2YXRlIGZpbGVBbGlhczogc3RyaW5nO1xuICBwcml2YXRlIGFkZGl0aW9uYWxQYXJhbXM6IHsgW2tleTogc3RyaW5nXTogYW55IH07XG4gIHByaXZhdGUgcmVhZHk6IGJvb2xlYW47XG4gIHByaXZhdGUgdXBsb2FkaW5nOiBib29sZWFuO1xuICBwcml2YXRlIHVwbG9hZGVkOiBib29sZWFuO1xuICBwcml2YXRlIGNhbmNlbGxlZDogYm9vbGVhbjtcbiAgcHJpdmF0ZSBlcnJvcjogYm9vbGVhbjtcblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIGxpc3RlbmVyOiBVcGxvYWRMaXN0ZW5lciwgb3B0aW9uczogVXBsb2FkSXRlbU9wdGlvbnMpIHtcbiAgICB0aGlzLm9uUmVzcG9uc2VTdWJqZWN0ID0gbmV3IFN1YmplY3QoKTtcbiAgICB0aGlzLm9uUHJvZ3Jlc3NTdWJqZWN0ID0gbmV3IFN1YmplY3QoKTtcbiAgICB0aGlzLm9uRXJyb3JTdWJqZWN0ID0gbmV3IFN1YmplY3QoKTtcbiAgICB0aGlzLm9uUmVzcG9uc2UgPSB0aGlzLm9uUmVzcG9uc2VTdWJqZWN0LmFzT2JzZXJ2YWJsZSgpO1xuICAgIHRoaXMub25Qcm9ncmVzcyA9IHRoaXMub25Qcm9ncmVzc1N1YmplY3QuYXNPYnNlcnZhYmxlKCk7XG4gICAgdGhpcy5vbkVycm9yID0gdGhpcy5vbkVycm9yU3ViamVjdC5hc09ic2VydmFibGUoKTtcbiAgICB0aGlzLl9wcm9ncmVzcyA9IDA7XG4gICAgdGhpcy51cmwgPSBvcHRpb25zLnVybDtcbiAgICB0aGlzLm1ldGhvZCA9IG9wdGlvbnMubWV0aG9kO1xuICAgIHRoaXMuZmlsZSA9IG9wdGlvbnMuZmlsZTtcbiAgICB0aGlzLmZpbGVBbGlhcyA9IG9wdGlvbnMuZmlsZUFsaWFzIHx8ICdmaWxlJztcbiAgICB0aGlzLmFkZGl0aW9uYWxQYXJhbXMgPSBvcHRpb25zLmFkZGl0aW9uYWxQYXJhbXM7XG4gICAgdGhpcy5fcmVxID0gdGhpcy5idWlsZFJlcXVlc3QoKTtcbiAgICBjb25zdCBmaWxlQ2F0ZWdvcnkgPSB0aGlzLmZpbGUudHlwZS5zcGxpdCgnLycpWzBdO1xuICAgIGlmIChmaWxlQ2F0ZWdvcnkgPT09ICdpbWFnZScgfHwgZmlsZUNhdGVnb3J5ID09PSAndmlkZW8nKSB7XG4gICAgICB0aGlzLnByZXZpZXcgPSB0aGlzLnJlYWRNZWRpYUZpbGUoKTtcbiAgICB9XG4gIH1cblxuICBnZXQgcmVxKCk6IEh0dHBSZXF1ZXN0PEZvcm1EYXRhPiB7XG4gICAgcmV0dXJuIHRoaXMuX3JlcTtcbiAgfVxuXG4gIGdldCBwcm9ncmVzcygpOiBudW1iZXIge1xuICAgIHJldHVybiB0aGlzLl9wcm9ncmVzcztcbiAgfVxuXG4gIGdldCBmaWxlTmFtZSgpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLmZpbGUubmFtZTtcbiAgfVxuXG4gIGdldCBpc1JlYWR5KCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLnJlYWR5O1xuICB9XG5cbiAgZ2V0IGlzVXBsb2FkaW5nKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLnVwbG9hZGluZztcbiAgfVxuXG4gIGdldCBpc1VwbG9hZGVkKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLnVwbG9hZGVkO1xuICB9XG5cbiAgZ2V0IGlzQ2FuY2VsbGVkKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLmNhbmNlbGxlZDtcbiAgfVxuXG4gIGdldCBpc0Vycm9yKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLmVycm9yO1xuICB9XG5cbiAgcHJpdmF0ZSBidWlsZEZvcm1EYXRhKCk6IEZvcm1EYXRhIHtcbiAgICBjb25zdCBmb3JtRGF0YSA9IG5ldyBGb3JtRGF0YSgpO1xuICAgIGlmICh0aGlzLmFkZGl0aW9uYWxQYXJhbXMpIHtcbiAgICAgIE9iamVjdC5lbnRyaWVzKHRoaXMuYWRkaXRpb25hbFBhcmFtcykuZm9yRWFjaCgoW2tleSwgdmFsdWVdKSA9PlxuICAgICAgICBmb3JtRGF0YS5zZXQoa2V5LCB2YWx1ZSlcbiAgICAgICk7XG4gICAgfVxuICAgIGZvcm1EYXRhLnNldCh0aGlzLmZpbGVBbGlhcywgdGhpcy5maWxlLCB0aGlzLmZpbGUubmFtZSk7XG4gICAgcmV0dXJuIGZvcm1EYXRhO1xuICB9XG5cbiAgcHJpdmF0ZSBidWlsZFJlcXVlc3QoKTogSHR0cFJlcXVlc3Q8Rm9ybURhdGE+IHtcbiAgICBjb25zdCBib2R5ID0gdGhpcy5idWlsZEZvcm1EYXRhKCk7XG4gICAgcmV0dXJuIG5ldyBIdHRwUmVxdWVzdCh0aGlzLm1ldGhvZCwgdGhpcy51cmwsIGJvZHksIHtcbiAgICAgIHJlcG9ydFByb2dyZXNzOiB0cnVlXG4gICAgfSk7XG4gIH1cblxuICBwcml2YXRlIHJlYWRNZWRpYUZpbGUoKTogT2JzZXJ2YWJsZTxzdHJpbmc+IHtcbiAgICByZXR1cm4gbmV3IE9ic2VydmFibGUob2JzZXJ2ZXIgPT4ge1xuICAgICAgY29uc3QgcmVhZGVyID0gbmV3IEZpbGVSZWFkZXIoKTtcbiAgICAgIHJlYWRlci5vbmxvYWQgPSAoKSA9PiB7XG4gICAgICAgIG9ic2VydmVyLm5leHQocmVhZGVyLnJlc3VsdCBhcyBzdHJpbmcpO1xuICAgICAgICBvYnNlcnZlci5jb21wbGV0ZSgpO1xuICAgICAgfTtcbiAgICAgIHJlYWRlci5vbmVycm9yID0gKCkgPT4ge1xuICAgICAgICByZWFkZXIuYWJvcnQoKTtcbiAgICAgICAgb2JzZXJ2ZXIuZXJyb3IocmVhZGVyLmVycm9yKTtcbiAgICAgIH07XG4gICAgICByZWFkZXIucmVhZEFzRGF0YVVSTCh0aGlzLmZpbGUpO1xuICAgIH0pO1xuICB9XG5cbiAgY2xlYW51cCgpOiB2b2lkIHtcbiAgICB0aGlzLm9uUmVzcG9uc2VTdWJqZWN0LmNvbXBsZXRlKCk7XG4gICAgdGhpcy5vblByb2dyZXNzU3ViamVjdC5jb21wbGV0ZSgpO1xuICAgIHRoaXMub25FcnJvclN1YmplY3QuY29tcGxldGUoKTtcbiAgfVxuXG4gIG9uQmVmb3JlVXBsb2FkKCk6IHZvaWQge1xuICAgIHRoaXMucmVhZHkgPSB0cnVlO1xuICAgIHRoaXMudXBsb2FkaW5nID0gZmFsc2U7XG4gICAgdGhpcy51cGxvYWRlZCA9IGZhbHNlO1xuICAgIHRoaXMuY2FuY2VsbGVkID0gZmFsc2U7XG4gICAgdGhpcy5lcnJvciA9IGZhbHNlO1xuICAgIHRoaXMuX3Byb2dyZXNzID0gMDtcbiAgfVxuXG4gIG9uVXBsb2FkU3RhcnQoKTogdm9pZCB7XG4gICAgdGhpcy5yZWFkeSA9IHRydWU7XG4gICAgdGhpcy51cGxvYWRpbmcgPSB0cnVlO1xuICAgIHRoaXMudXBsb2FkZWQgPSBmYWxzZTtcbiAgICB0aGlzLmNhbmNlbGxlZCA9IGZhbHNlO1xuICAgIHRoaXMuZXJyb3IgPSBmYWxzZTtcbiAgfVxuXG4gIG9uVXBsb2FkU3VjY2VzcyhyZXMpOiB2b2lkIHtcbiAgICB0aGlzLnJlYWR5ID0gZmFsc2U7XG4gICAgdGhpcy51cGxvYWRpbmcgPSBmYWxzZTtcbiAgICB0aGlzLnVwbG9hZGVkID0gdHJ1ZTtcbiAgICB0aGlzLmNhbmNlbGxlZCA9IGZhbHNlO1xuICAgIHRoaXMuZXJyb3IgPSBmYWxzZTtcbiAgICB0aGlzLl9wcm9ncmVzcyA9IDEwMDtcbiAgICB0aGlzLm9uUmVzcG9uc2VTdWJqZWN0Lm5leHQocmVzKTtcbiAgICB0aGlzLmNsZWFudXAoKTtcbiAgfVxuXG4gIG9uVXBsb2FkUHJvZ3Jlc3MocHJvZ3Jlc3M6IG51bWJlcik6IHZvaWQge1xuICAgIHRoaXMuX3Byb2dyZXNzID0gcHJvZ3Jlc3M7XG4gICAgdGhpcy5vblByb2dyZXNzU3ViamVjdC5uZXh0KHRoaXMuX3Byb2dyZXNzKTtcbiAgfVxuXG4gIG9uVXBsb2FkQ2FuY2VsbGVkKCk6IHZvaWQge1xuICAgIHRoaXMucmVhZHkgPSBmYWxzZTtcbiAgICB0aGlzLnVwbG9hZGluZyA9IGZhbHNlO1xuICAgIHRoaXMudXBsb2FkZWQgPSBmYWxzZTtcbiAgICB0aGlzLmNhbmNlbGxlZCA9IHRydWU7XG4gICAgdGhpcy5lcnJvciA9IGZhbHNlO1xuICAgIHRoaXMuX3Byb2dyZXNzID0gMDtcbiAgfVxuXG4gIG9uVXBsb2FkRXJyb3IoZXJyOiBIdHRwRXJyb3JSZXNwb25zZSk6IHZvaWQge1xuICAgIHRoaXMucmVhZHkgPSBmYWxzZTtcbiAgICB0aGlzLnVwbG9hZGluZyA9IGZhbHNlO1xuICAgIHRoaXMudXBsb2FkZWQgPSBmYWxzZTtcbiAgICB0aGlzLmNhbmNlbGxlZCA9IGZhbHNlO1xuICAgIHRoaXMuZXJyb3IgPSB0cnVlO1xuICAgIHRoaXMuX3Byb2dyZXNzID0gMDtcbiAgICB0aGlzLm9uRXJyb3JTdWJqZWN0Lm5leHQoZXJyKTtcbiAgfVxuXG4gIHVwbG9hZChhZGRpdGlvbmFsUGFyYW1zPzogeyBba2V5OiBzdHJpbmddOiBhbnkgfSk6IHZvaWQge1xuICAgIGlmIChhZGRpdGlvbmFsUGFyYW1zKSB7XG4gICAgICB0aGlzLmFkZGl0aW9uYWxQYXJhbXMgPSBhZGRpdGlvbmFsUGFyYW1zO1xuICAgICAgdGhpcy5fcmVxID0gdGhpcy5idWlsZFJlcXVlc3QoKTtcbiAgICB9XG4gICAgdGhpcy5saXN0ZW5lci51cGxvYWRJdGVtKHRoaXMpO1xuICB9XG5cbiAgY2FuY2VsKCk6IHZvaWQge1xuICAgIHRoaXMubGlzdGVuZXIuY2FuY2VsSXRlbSh0aGlzKTtcbiAgfVxuXG4gIHJlbW92ZSgpOiB2b2lkIHtcbiAgICB0aGlzLmxpc3RlbmVyLnJlbW92ZUl0ZW0odGhpcyk7XG4gIH1cbn1cbiJdfQ==