41 lines
5.4 KiB
JavaScript
41 lines
5.4 KiB
JavaScript
"use strict";
|
|
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
};
|
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
// TODO: Fix https://github.com/DevExpress/testcafe/issues/4139 to get rid of Pinkie
|
|
const pinkie_1 = __importDefault(require("pinkie"));
|
|
const lodash_1 = require("lodash");
|
|
const test_run_tracker_1 = __importDefault(require("../api/test-run-tracker"));
|
|
class ReExecutablePromise extends pinkie_1.default {
|
|
constructor(executorFn) {
|
|
super(lodash_1.noop);
|
|
this._fn = executorFn;
|
|
this._taskPromise = null;
|
|
}
|
|
_ensureExecuting() {
|
|
if (!this._taskPromise)
|
|
this._taskPromise = new pinkie_1.default(this._fn);
|
|
}
|
|
_reExecute() {
|
|
this._taskPromise = null;
|
|
return this;
|
|
}
|
|
then(onFulfilled, onRejected) {
|
|
this._ensureExecuting();
|
|
return this._taskPromise.then(onFulfilled, onRejected);
|
|
}
|
|
catch(onRejected) {
|
|
this._ensureExecuting();
|
|
return this._taskPromise.catch(onRejected);
|
|
}
|
|
static fromFn(asyncExecutorFn) {
|
|
const testRunId = test_run_tracker_1.default.getContextTestRunId();
|
|
if (testRunId)
|
|
asyncExecutorFn = test_run_tracker_1.default.addTrackingMarkerToFunction(testRunId, asyncExecutorFn);
|
|
return new ReExecutablePromise((resolve) => resolve(asyncExecutorFn()));
|
|
}
|
|
}
|
|
exports.default = ReExecutablePromise;
|
|
module.exports = exports.default;
|
|
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmUtZXhlY3V0YWJsZS1wcm9taXNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3V0aWxzL3JlLWV4ZWN1dGFibGUtcHJvbWlzZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQUFBLG9GQUFvRjtBQUNwRixvREFBNkI7QUFDN0IsbUNBQThCO0FBQzlCLCtFQUFxRDtBQU1yRCxNQUFxQixtQkFBb0IsU0FBUSxnQkFBZ0I7SUFJN0QsWUFBb0IsVUFBc0I7UUFDdEMsS0FBSyxDQUFDLGFBQUksQ0FBQyxDQUFDO1FBRVosSUFBSSxDQUFDLEdBQUcsR0FBWSxVQUFVLENBQUM7UUFDL0IsSUFBSSxDQUFDLFlBQVksR0FBRyxJQUFJLENBQUM7SUFDN0IsQ0FBQztJQUVPLGdCQUFnQjtRQUNwQixJQUFJLENBQUMsSUFBSSxDQUFDLFlBQVk7WUFDbEIsSUFBSSxDQUFDLFlBQVksR0FBRyxJQUFJLGdCQUFPLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQ2xELENBQUM7SUFFTSxVQUFVO1FBQ2IsSUFBSSxDQUFDLFlBQVksR0FBRyxJQUFJLENBQUM7UUFFekIsT0FBTyxJQUFJLENBQUM7SUFDaEIsQ0FBQztJQUVNLElBQUksQ0FBRSxXQUEyQixFQUFFLFVBQXlCO1FBQy9ELElBQUksQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDO1FBRXhCLE9BQVEsSUFBSSxDQUFDLFlBQWlDLENBQUMsSUFBSSxDQUFDLFdBQVcsRUFBRSxVQUFVLENBQUMsQ0FBQztJQUNqRixDQUFDO0lBRU0sS0FBSyxDQUFFLFVBQXlCO1FBQ25DLElBQUksQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDO1FBRXhCLE9BQVEsSUFBSSxDQUFDLFlBQWlDLENBQUMsS0FBSyxDQUFDLFVBQVUsQ0FBQyxDQUFDO0lBQ3JFLENBQUM7SUFFTSxNQUFNLENBQUMsTUFBTSxDQUFFLGVBQXlCO1FBQzNDLE1BQU0sU0FBUyxHQUFHLDBCQUFjLENBQUMsbUJBQW1CLEVBQUUsQ0FBQztRQUV2RCxJQUFJLFNBQVM7WUFDVCxlQUFlLEdBQUcsMEJBQWMsQ0FBQywyQkFBMkIsQ0FBQyxTQUFTLEVBQUUsZUFBZSxDQUFDLENBQUM7UUFFN0YsT0FBTyxJQUFJLG1CQUFtQixDQUFDLENBQUMsT0FBaUIsRUFBRSxFQUFFLENBQUMsT0FBTyxDQUFDLGVBQWUsRUFBRSxDQUFDLENBQUMsQ0FBQztJQUN0RixDQUFDO0NBQ0o7QUExQ0Qsc0NBMENDIiwic291cmNlc0NvbnRlbnQiOlsiLy8gVE9ETzogRml4IGh0dHBzOi8vZ2l0aHViLmNvbS9EZXZFeHByZXNzL3Rlc3RjYWZlL2lzc3Vlcy80MTM5IHRvIGdldCByaWQgb2YgUGlua2llXG5pbXBvcnQgUHJvbWlzZSBmcm9tICdwaW5raWUnO1xuaW1wb3J0IHsgbm9vcCB9IGZyb20gJ2xvZGFzaCc7XG5pbXBvcnQgdGVzdFJ1blRyYWNrZXIgZnJvbSAnLi4vYXBpL3Rlc3QtcnVuLXRyYWNrZXInO1xuXG50eXBlIEV4ZWN1dG9yRm4gPSAocmVzb2x2ZTogKHZhbHVlPzogdW5rbm93bikgPT4gdm9pZCwgcmVqZWN0OiAocmVhc29uPzogYW55KSA9PiB2b2lkKSA9PiB2b2lkO1xudHlwZSBPbkZ1bGZpbGxlZEZuID0gKCh2YWx1ZTogdW5rbm93bikgPT4gdW5rbm93biB8IFByb21pc2VMaWtlPHVua25vd24+KSB8IHVuZGVmaW5lZCB8IG51bGw7XG50eXBlIE9uUmVqZWN0ZWRGbiA9ICgocmVhc29uPzogdW5rbm93bikgPT4gUHJvbWlzZUxpa2U8bmV2ZXI+KSB8IG51bGwgfCB1bmRlZmluZWQ7XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIFJlRXhlY3V0YWJsZVByb21pc2UgZXh0ZW5kcyBQcm9taXNlPHVua25vd24+IHtcbiAgICBwcml2YXRlIHJlYWRvbmx5IF9mbjogRXhlY3V0b3JGbjtcbiAgICBwcml2YXRlIF90YXNrUHJvbWlzZTogUHJvbWlzZTx1bmtub3duPiB8IG51bGw7XG5cbiAgICBwdWJsaWMgY29uc3RydWN0b3IgKGV4ZWN1dG9yRm46IEV4ZWN1dG9yRm4pIHtcbiAgICAgICAgc3VwZXIobm9vcCk7XG5cbiAgICAgICAgdGhpcy5fZm4gICAgICAgICAgPSBleGVjdXRvckZuO1xuICAgICAgICB0aGlzLl90YXNrUHJvbWlzZSA9IG51bGw7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBfZW5zdXJlRXhlY3V0aW5nICgpOiB2b2lkIHtcbiAgICAgICAgaWYgKCF0aGlzLl90YXNrUHJvbWlzZSlcbiAgICAgICAgICAgIHRoaXMuX3Rhc2tQcm9taXNlID0gbmV3IFByb21pc2UodGhpcy5fZm4pO1xuICAgIH1cblxuICAgIHB1YmxpYyBfcmVFeGVjdXRlICgpOiBSZUV4ZWN1dGFibGVQcm9taXNlIHtcbiAgICAgICAgdGhpcy5fdGFza1Byb21pc2UgPSBudWxsO1xuXG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cblxuICAgIHB1YmxpYyB0aGVuIChvbkZ1bGZpbGxlZD86IE9uRnVsZmlsbGVkRm4sIG9uUmVqZWN0ZWQ/OiBPblJlamVjdGVkRm4pOiBhbnkge1xuICAgICAgICB0aGlzLl9lbnN1cmVFeGVjdXRpbmcoKTtcblxuICAgICAgICByZXR1cm4gKHRoaXMuX3Rhc2tQcm9taXNlIGFzIFByb21pc2U8dW5rbm93bj4pLnRoZW4ob25GdWxmaWxsZWQsIG9uUmVqZWN0ZWQpO1xuICAgIH1cblxuICAgIHB1YmxpYyBjYXRjaCAob25SZWplY3RlZD86IE9uUmVqZWN0ZWRGbik6IFByb21pc2U8dW5rbm93bj4ge1xuICAgICAgICB0aGlzLl9lbnN1cmVFeGVjdXRpbmcoKTtcblxuICAgICAgICByZXR1cm4gKHRoaXMuX3Rhc2tQcm9taXNlIGFzIFByb21pc2U8dW5rbm93bj4pLmNhdGNoKG9uUmVqZWN0ZWQpO1xuICAgIH1cblxuICAgIHB1YmxpYyBzdGF0aWMgZnJvbUZuIChhc3luY0V4ZWN1dG9yRm46IEZ1bmN0aW9uKTogUmVFeGVjdXRhYmxlUHJvbWlzZSB7XG4gICAgICAgIGNvbnN0IHRlc3RSdW5JZCA9IHRlc3RSdW5UcmFja2VyLmdldENvbnRleHRUZXN0UnVuSWQoKTtcblxuICAgICAgICBpZiAodGVzdFJ1bklkKVxuICAgICAgICAgICAgYXN5bmNFeGVjdXRvckZuID0gdGVzdFJ1blRyYWNrZXIuYWRkVHJhY2tpbmdNYXJrZXJUb0Z1bmN0aW9uKHRlc3RSdW5JZCwgYXN5bmNFeGVjdXRvckZuKTtcblxuICAgICAgICByZXR1cm4gbmV3IFJlRXhlY3V0YWJsZVByb21pc2UoKHJlc29sdmU6IEZ1bmN0aW9uKSA9PiByZXNvbHZlKGFzeW5jRXhlY3V0b3JGbigpKSk7XG4gICAgfVxufVxuIl19
|