@kaspernj/api-maker 1.0.2122 → 1.0.2125
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +41 -0
- package/build/channels-consumer.d.ts +1 -0
- package/build/channels-consumer.d.ts.map +1 -1
- package/build/channels-consumer.js +9 -2
- package/build/command-execution.d.ts +71 -0
- package/build/command-execution.d.ts.map +1 -0
- package/build/command-execution.js +138 -0
- package/build/commands-pool.d.ts +8 -4
- package/build/commands-pool.d.ts.map +1 -1
- package/build/commands-pool.js +58 -40
- package/build/config.d.ts +14 -0
- package/build/config.d.ts.map +1 -1
- package/build/config.js +17 -2
- package/build/devise.d.ts.map +1 -1
- package/build/devise.js +18 -4
- package/build/inputs/attachment.js +21 -9
- package/build/model-recipes-model-loader.d.ts.map +1 -1
- package/build/model-recipes-model-loader.js +5 -3
- package/build/session-status-updater.d.ts +5 -0
- package/build/session-status-updater.d.ts.map +1 -1
- package/build/session-status-updater.js +14 -3
- package/build/websocket-request-client.d.ts +55 -0
- package/build/websocket-request-client.d.ts.map +1 -0
- package/build/websocket-request-client.js +192 -0
- package/package.json +1 -1
|
@@ -60,7 +60,8 @@ export default class ApiMakerSessionStatusUpdater {
|
|
|
60
60
|
logger.debug(() => `Returning CSRF token after updating session status: ${this.csrfToken}`);
|
|
61
61
|
return this.csrfToken;
|
|
62
62
|
}
|
|
63
|
-
|
|
63
|
+
logger.debug("No CSRF token available after updating session status");
|
|
64
|
+
return undefined;
|
|
64
65
|
}
|
|
65
66
|
/** sessionStatus. */
|
|
66
67
|
sessionStatus() {
|
|
@@ -103,13 +104,23 @@ export default class ApiMakerSessionStatusUpdater {
|
|
|
103
104
|
updateSessionStatus = async () => {
|
|
104
105
|
logger.debug("updateSessionStatus");
|
|
105
106
|
const result = await this.sessionStatus();
|
|
107
|
+
this.applyResult(result);
|
|
108
|
+
};
|
|
109
|
+
/**
|
|
110
|
+
* @param {Record<string, any>} result
|
|
111
|
+
* @returns {void}
|
|
112
|
+
*/
|
|
113
|
+
applyResult(result) {
|
|
106
114
|
logger.debug(() => `Result: ${JSON.stringify(result, null, 2)}`);
|
|
107
115
|
this.updateMetaElementsFromResult(result);
|
|
108
116
|
this.updateUserSessionsFromResult(result);
|
|
109
|
-
}
|
|
117
|
+
}
|
|
110
118
|
/** updateMetaElementsFromResult. */
|
|
111
119
|
updateMetaElementsFromResult(result) {
|
|
112
120
|
logger.debug("updateMetaElementsFromResult");
|
|
121
|
+
if (!result.csrf_token) {
|
|
122
|
+
return;
|
|
123
|
+
}
|
|
113
124
|
this.csrfToken = result.csrf_token;
|
|
114
125
|
if (this.useMetaElement) {
|
|
115
126
|
const csrfTokenElement = document.querySelector("meta[name='csrf-token']");
|
|
@@ -143,4 +154,4 @@ export default class ApiMakerSessionStatusUpdater {
|
|
|
143
154
|
}
|
|
144
155
|
}
|
|
145
156
|
}
|
|
146
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2Vzc2lvbi1zdGF0dXMtdXBkYXRlci5qcyIsInNvdXJjZVJvb3QiOiIvc3JjLyIsInNvdXJjZXMiOlsic2Vzc2lvbi1zdGF0dXMtdXBkYXRlci5qcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEtBQUssVUFBVSxNQUFNLFlBQVksQ0FBQTtBQUN4QyxPQUFPLE1BQU0sTUFBTSxhQUFhLENBQUE7QUFDaEMsT0FBTyxNQUFNLE1BQU0sYUFBYSxDQUFBO0FBQ2hDLE9BQU8sTUFBTSxNQUFNLGFBQWEsQ0FBQTtBQUNoQyxPQUFPLFNBQVMsTUFBTSxZQUFZLENBQUE7QUFFbEMsTUFBTSxNQUFNLEdBQUcsSUFBSSxNQUFNLENBQUMsRUFBQyxJQUFJLEVBQUUsaUNBQWlDLEVBQUMsQ0FBQyxDQUFBO0FBQ3BFLE1BQU0sTUFBTSxHQUFHLEVBQUUsQ0FBQTtBQUVqQix3QkFBd0I7QUFFeEIsK0NBQStDO0FBQy9DLE1BQU0sQ0FBQyxPQUFPLE9BQU8sNEJBQTRCO0lBQy9DLGVBQWU7SUFDZixNQUFNLENBQUMsT0FBTyxDQUFDLElBQUk7UUFDakIsSUFBSSxDQUFDLE1BQU0sQ0FBQyw0QkFBNEIsRUFBRSxDQUFDO1lBQ3pDLE1BQU0sQ0FBQyw0QkFBNEIsR0FBRyxJQUFJLDRCQUE0QixDQUFDLElBQUksQ0FBQyxDQUFBO1FBQzlFLENBQUM7UUFFRCxPQUFPLE1BQU0sQ0FBQyw0QkFBNEIsQ0FBQTtJQUM1QyxDQUFDO0lBRUQsbUJBQW1CO0lBQ25CLFlBQVksSUFBSSxHQUFHLEVBQUU7UUFDbkIsSUFBSSxDQUFDLE1BQU0sR0FBRyxFQUFFLENBQUE7UUFDaEIsSUFBSSxDQUFDLE9BQU8sR0FBRyxJQUFJLENBQUMsT0FBTyxJQUFJLE1BQU0sQ0FBQTtRQUVyQyxJQUFJLGdCQUFnQixJQUFJLElBQUksRUFBRSxDQUFDO1lBQzdCLElBQUksQ0FBQyxjQUFjLEdBQUcsSUFBSSxDQUFDLGNBQWMsQ0FBQTtRQUMzQyxDQUFDO2FBQU0sSUFBSSxPQUFPLFFBQVEsS0FB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RCxNQUFNLGlCQUFpQixHQUFHLEtBQUssQ0FBQyxTQUFTLENBQUE7UUFFekMsSUFBSSxpQkFBaUIsSUFBSSxDQUFDLGlCQUFpQixFQUFFLENBQUM7WUFDNUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxHQUFHLEVBQUUsQ0FBQyxHQUFHLFVBQVUsQ0FBQyxRQUFRLENBQUMsU0FBUyxDQUFDLDRDQUE0QyxDQUFDLENBQUE7WUFFakcsTUFBTSxDQUFDLFlBQVksQ0FBQyxFQUFDLEtBQUssRUFBRSxTQUFTLEVBQUMsQ0FBQyxDQUFBO1lBQ3ZDLE1BQU0sQ0FBQyxnQkFBZ0IsQ0FBQyxFQUFDLEtBQUssRUFBRSxTQUFTLEVBQUMsQ0FBQyxDQUFBO1FBQzdDLENBQUM7SUFDSCxDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgKiBhcyBpbmZsZWN0aW9uIGZyb20gXCJpbmZsZWN0aW9uXCJcbmltcG9ydCBEZXZpc2UgZnJvbSBcIi4vZGV2aXNlLmpzXCJcbmltcG9ydCBMb2dnZXIgZnJvbSBcIi4vbG9nZ2VyLmpzXCJcbmltcG9ydCBjb25maWcgZnJvbSBcIi4vY29uZmlnLmpzXCJcbmltcG9ydCB3YWtlRXZlbnQgZnJvbSBcIndha2UtZXZlbnRcIlxuXG5jb25zdCBsb2dnZXIgPSBuZXcgTG9nZ2VyKHtuYW1lOiBcIkFwaU1ha2VyIC8gU2Vzc2lvblN0YXR1c1VwZGF0ZXJcIn0pXG5jb25zdCBzaGFyZWQgPSB7fVxuXG4vLyBsb2dnZXIuc2V0RGVidWcodHJ1ZSlcblxuLyoqIFRyYWNrcyBzZXNzaW9uIGFuZCBDU1JGIHRva2VuIGZyZXNobmVzcy4gKi9cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIEFwaU1ha2VyU2Vzc2lvblN0YXR1c1VwZGF0ZXIge1xuICAvKiogY3VycmVudC4gKi9cbiAgc3RhdGljIGN1cnJlbnQoYXJncykge1xuICAgIGlmICghc2hhcmVkLmFwaU1ha2VyU2Vzc2lvblN0YXR1c1VwZGF0ZXIpIHtcbiAgICAgIHNoYXJlZC5hcGlNYWtlclNlc3Npb25TdGF0dXNVcGRhdGVyID0gbmV3IEFwaU1ha2VyU2Vzc2lvblN0YXR1c1VwZGF0ZXIoYXJncylcbiAgICB9XG5cbiAgICByZXR1cm4gc2hhcmVkLmFwaU1ha2VyU2Vzc2lvblN0YXR1c1VwZGF0ZXJcbiAgfVxuXG4gIC8qKiBDb25zdHJ1Y3Rvci4gKi9cbiAgY29uc3RydWN0b3IoYXJncyA9IHt9KSB7XG4gICAgdGhpcy5ldmVudHMgPSB7fVxuICAgIHRoaXMudGltZW91dCA9IGFyZ3MudGltZW91dCB8fCA2MDAwMDBcblxuICAgIGlmIChcInVzZU1ldGFFbGVtZW50XCIgaW4gYXJncykge1xuICAgICAgdGhpcy51c2VNZXRhRWxlbWVudCA9IGFyZ3MudXNlTWV0YUVsZW1lbnRcbiAgICB9IGVsc2UgaWYgKHR5cGVvZiBkb2N1bWVudCA9PT0gXCJ1bmRlZmluZWRcIikge1xuICAgICAgdGhpcy51c2VNZXRhRWxlbWVudCA9IGZhbHNlXG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMudXNlTWV0YUVsZW1lbnQgPSB0cnVlXG4gICAgfVxuXG4gICAgaWYgKHR5cGVvZiB3aW5kb3cgIT0gXCJ1bmRlZmluZWRcIikge1xuICAgICAgdGhpcy5jb25uZWN0T25saW5lRXZlbnQoKVxuICAgIH1cblxuICAgIHRoaXMuY29ubmVjdFdha2VFdmVudCgpXG4gIH1cblxuICAvKiogY29ubmVjdE9ubGluZUV2ZW50LiAqL1xuICBjb25uZWN0T25saW5lRXZlbnQoKSB7XG4gICAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoXCJvbmxpbmVcIiwgdGhpcy51cGRhdGVTZXNzaW9uU3RhdHVzLCBmYWxzZSlcbiAgfVxuXG4gIC8qKiBjb25uZWN0V2FrZUV2ZW50LiAqL1xuICBjb25uZWN0V2FrZUV2ZW50KCkge1xuICAgIHdha2VFdmVudCh0aGlzLnVwZGF0ZVNlc3Npb25TdGF0dXMpXG4gIH1cblxuICBhc3luYyBnZXRDc3JmVG9rZW4oKSB7XG4gICAgaWYgKHRoaXMuY3NyZlRva2VuKSB7XG4gICAgICBsb2dnZXIuZGVidWcoYEdldCBDU1JGIHRva2VuIGZyb20gc2V0IHZhcmlhYmxlOiAke3RoaXMuY3NyZlRva2VufWApXG5cbiAgICAgIHJldHVybiB0aGlzLmNzcmZUb2tlblxuICAgIH1cblxuICAgIGlmICh0aGlzLnVzZU1ldGFFbGVtZW50KSB7XG4gICAgICBjb25zdCBjc3JmVG9rZW5FbGVtZW50ID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcihcIm1ldGFbbmFtZT0nY3NyZi10b2tlbiddXCIpXG5cbiAgICAgIGlmIChjc3JmVG9rZW5FbGVtZW50KSB7XG4gICAgICAgIGxvZ2dlci5kZWJ1ZygoKSA9PiBgR2V0IENTUkYgdG9rZW4gZnJvbSBtZXRhIGVsZW1lbnQ6ICR7Y3NyZlRva2VuRWxlbWVudC5nZXRBdHRyaWJ1dGUoXCJjb250ZW50XCIpfWApXG5cbiAgICAgICAgdGhpcy5jc3JmVG9rZW4gPSBjc3JmVG9rZW5FbGVtZW50LmdldEF0dHJpYnV0ZShcImNvbnRlbnRcIilcblxuICAgICAgICByZXR1cm4gdGhpcy5jc3JmVG9rZW5cbiAgICAgIH1cbiAgICB9XG5cbiAgICBsb2dnZXIuZGVidWcoXCJVcGRhdGluZyBzZXNzaW9uIHN0YXR1cyBiZWNhdXNlIG5vIENTUkYgdG9rZW4gc2V0IHlldFwiKVxuICAgIGF3YWl0IHRoaXMudXBkYXRlU2Vzc2lvblN0YXR1cygpXG5cbiAgICBpZiAodGhpcy5jc3JmVG9rZW4pIHtcbiAgICAgIGxvZ2dlci5kZWJ1ZygoKSA9PiBgUmV0dXJuaW5nIENTUkYgdG9rZW4gYWZ0ZXIgdXBkYXRpbmcgc2Vzc2lvbiBzdGF0dXM6ICR7dGhpcy5jc3JmVG9rZW59YClcblxuICAgICAgcmV0dXJuIHRoaXMuY3NyZlRva2VuXG4gICAgfVxuXG4gICAgdGhyb3cgbmV3IEVycm9yKFwiQ1NSRiB0b2tlbiBoYXNuJ3QgYmVlbiBzZXRcIilcbiAgfVxuXG4gIC8qKiBzZXNzaW9uU3RhdHVzLiAqL1xuICBzZXNzaW9uU3RhdHVzKCkge1xuICAgIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSkgPT4ge1xuICAgICAgY29uc3QgaG9zdCA9IGNvbmZpZy5nZXRIb3N0KClcbiAgICAgIGxldCByZXF1ZXN0UGF0aCA9IFwiXCJcblxuICAgICAgaWYgKGhvc3QpIHJlcXVlc3RQYXRoICs9IGhvc3RcblxuICAgICAgcmVxdWVzdFBhdGggKz0gXCIvYXBpX21ha2VyL3Nlc3Npb25fc3RhdHVzZXNcIlxuXG4gICAgICBjb25zdCB4aHIgPSBuZXcgWE1MSHR0cFJlcXVlc3QoKVxuICAgICAgeGhyLm9wZW4oXCJQT1NUXCIsIHJlcXVlc3RQYXRoLCB0cnVlKVxuICAgICAgeGhyLm9ubG9hZCA9ICgpID0+IHtcbiAgICAgICAgY29uc3QgcmVzcG9uc2UgPSBKU09OLnBhcnNlKHhoci5yZXNwb25zZVRleHQpXG4gICAgICAgIHJlc29sdmUocmVzcG9uc2UpXG4gICAgICB9XG4gICAgICB4aHIuc2VuZCgpXG4gICAgfSlcbiAgfVxuXG4gIC8qKiBvblNpZ25lZE91dC4gKi9cbiAgb25TaWduZWRPdXQoY2FsbGJhY2spIHtcbiAgICAvLyBAdHMtZXhwZWN0LWVycm9yXG4gICAgdGhpcy5hZGRFdmVudChcIm9uU2lnbmVkT3V0XCIsIGNhbGxiYWNrKVxuICB9XG5cbiAgLyoqIHN0YXJ0VGltZW91dC4gKi9cbiAgc3RhcnRUaW1lb3V0KCkge1xuICAgIGxvZ2dlci5kZWJ1ZyhcInN0YXJ0VGltZW91dFwiKVxuXG4gICAgaWYgKHRoaXMudXBkYXRlVGltZW91dClcbiAgICAgIGNsZWFyVGltZW91dCh0aGlzLnVwZGF0ZVRpbWVvdXQpXG5cbiAgICB0aGlzLnVwZGF0ZVRpbWVvdXQgPSBzZXRUaW1lb3V0KFxuICAgICAgKCkgPT4ge1xuICAgICAgICB0aGlzLnN0YXJ0VGltZW91dCgpXG4gICAgICAgIHRoaXMudXBkYXRlU2Vzc2lvblN0YXR1cygpXG4gICAgICB9LFxuICAgICAgdGhpcy50aW1lb3V0XG4gICAgKVxuICB9XG5cbiAgLyoqIHN0b3BUaW1lb3V0LiAqL1xuICBzdG9wVGltZW91dCgpIHtcbiAgICBpZiAodGhpcy51cGRhdGVUaW1lb3V0KVxuICAgICAgY2xlYXJUaW1lb3V0KHRoaXMudXBkYXRlVGltZW91dClcbiAgfVxuXG4gIC8qKiB1cGRhdGVTZXNzaW9uU3RhdHVzLiAqL1xuICB1cGRhdGVTZXNzaW9uU3RhdHVzID0gYXN5bmMgKCkgPT4ge1xuICAgIGxvZ2dlci5kZWJ1ZyhcInVwZGF0ZVNlc3Npb25TdGF0dXNcIilcblxuICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IHRoaXMuc2Vzc2lvblN0YXR1cygpXG5cbiAgICBsb2dnZXIuZGVidWcoKCkgPT4gYFJlc3VsdDogJHtKU09OLnN0cmluZ2lmeShyZXN1bHQsIG51bGwsIDIpfWApXG4gICAgdGhpcy51cGRhdGVNZXRhRWxlbWVudHNGcm9tUmVzdWx0KHJlc3VsdClcbiAgICB0aGlzLnVwZGF0ZVVzZXJTZXNzaW9uc0Zyb21SZXN1bHQocmVzdWx0KVxuICB9XG5cbiAgLyoqIHVwZGF0ZU1ldGFFbGVtZW50c0Zyb21SZXN1bHQuICovXG4gIHVwZGF0ZU1ldGFFbGVtZW50c0Zyb21SZXN1bHQocmVzdWx0KSB7XG4gICAgbG9nZ2VyLmRlYnVnKFwidXBkYXRlTWV0YUVsZW1lbnRzRnJvbVJlc3VsdFwiKVxuXG4gICAgdGhpcy5jc3JmVG9rZW4gPSByZXN1bHQuY3NyZl90b2tlblxuXG4gICAgaWYgKHRoaXMudXNlTWV0YUVsZW1lbnQpIHtcbiAgICAgIGNvbnN0IGNzcmZUb2tlbkVsZW1lbnQgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKFwibWV0YVtuYW1lPSdjc3JmLXRva2VuJ11cIilcblxuICAgICAgaWYgKGNzcmZUb2tlbkVsZW1lbnQpIHtcbiAgICAgICAgbG9nZ2VyLmRlYnVnKCgpID0+IGBDaGFuZ2luZyB0b2tlbiBmcm9tIFwiJHtjc3JmVG9rZW5FbGVtZW50LmdldEF0dHJpYnV0ZShcImNvbnRlbnRcIil9XCIgdG8gXCIke3Jlc3VsdC5jc3JmX3Rva2VufVwiYClcbiAgICAgICAgY3NyZlRva2VuRWxlbWVudC5zZXRBdHRyaWJ1dGUoXCJjb250ZW50XCIsIHJlc3VsdC5jc3JmX3Rva2VuKVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgbG9nZ2VyLmRlYnVnKFwiY3NyZiB0b2tlbiBlbGVtZW50IGNvdWxkbid0IGJlIGZvdW5kXCIpXG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgLyoqIHVwZGF0ZVVzZXJTZXNzaW9uc0Zyb21SZXN1bHQuICovXG4gIHVwZGF0ZVVzZXJTZXNzaW9uc0Zyb21SZXN1bHQocmVzdWx0KSB7XG4gICAgZm9yIChjb25zdCBzY29wZU5hbWUgaW4gcmVzdWx0LnNjb3Blcykge1xuICAgICAgdGhpcy51cGRhdGVVc2VyU2Vzc2lvblNjb3BlRnJvbVJlc3VsdChzY29wZU5hbWUsIHJlc3VsdC5zY29wZXNbc2NvcGVOYW1lXSlcbiAgICB9XG4gIH1cblxuICAvKiogdXBkYXRlVXNlclNlc3Npb25TY29wZUZyb21SZXN1bHQuICovXG4gIHVwZGF0ZVVzZXJTZXNzaW9uU2NvcGVGcm9tUmVzdWx0KHNjb3BlTmFtZSwgc2NvcGUpIHtcbiAgICBjb25zdCBkZXZpc2VJc1NpZ25lZEluTWV0aG9kTmFtZSA9IGBpcyR7aW5mbGVjdGlvbi5jYW1lbGl6ZShzY29wZU5hbWUpfVNpZ25lZEluYFxuXG4gICAgaWYgKCEoZGV2aXNlSXNTaWduZWRJbk1ldGhvZE5hbWUgaW4gRGV2aXNlKSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGBObyBzdWNoIG1ldGhvZCBpbiBEZXZpc2U6ICR7ZGV2aXNlSXNTaWduZWRJbk1ldGhvZE5hbWV9YClcbiAgICB9XG5cbiAgICBjb25zdCBjdXJyZW50bHlTaWduZWRJbiA9IERldmlzZVtkZXZpc2VJc1NpZ25lZEluTWV0aG9kTmFtZV0oKVxuICAgIGNvbnN0IHNpZ25lZEluT25CYWNrZW5kID0gc2NvcGUuc2lnbmVkX2luXG5cbiAgICBpZiAoY3VycmVudGx5U2lnbmVkSW4gJiYgIXNpZ25lZEluT25CYWNrZW5kKSB7XG4gICAgICBsb2dnZXIuZGVidWcoKCkgPT4gYCR7aW5mbGVjdGlvbi5jYW1lbGl6ZShzY29wZU5hbWUpfSBzaWduZWQgaW4gb24gZnJvbnRlbmQgYnV0IG5vdCBpbiBiYWNrZW5kIWApXG5cbiAgICAgIERldmlzZS5zZXRTaWduZWRPdXQoe3Njb3BlOiBzY29wZU5hbWV9KVxuICAgICAgRGV2aXNlLmNhbGxTaWduT3V0RXZlbnQoe3Njb3BlOiBzY29wZU5hbWV9KVxuICAgIH1cbiAgfVxufVxuIl19
|
|
157
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2Vzc2lvbi1zdGF0dXMtdXBkYXRlci5qcyIsInNvdXJjZVJvb3QiOiIvc3JjLyIsInNvdXJjZXMiOlsic2Vzc2lvbi1zdGF0dXMtdXBkYXRlci5qcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEtBQUssVUFBVSxNQUFNLFlBQVksQ0FBQTtBQUN4QyxPQUFPLE1BQU0sTUFBTSxhQUFhLENBQUE7QUFDaEMsT0FBTyxNQUFNLE1BQU0sYUFBYSxDQUFBO0FBQ2hDLE9BQU8sTUFBTSxNQUFNLGFBQWEsQ0FBQTtBQUNoQyxPQUFPLFNBQVMsTUFBTSxZQUFZLENBQUE7QUFFbEMsTUFBTSxNQUFNLEdBQUcsSUFBSSxNQUFNLENBQUMsRUFBQyxJQUFJLEVBQUUsaUNBQWlDLEVBQUMsQ0FBQyxDQUFBO0FBQ3BFLE1BQU0sTUFBTSxHQUFHLEVBQUUsQ0FBQTtBQUVqQix3QkFBd0I7QUFFeEIsK0NBQStDO0FBQy9DLE1BQU0sQ0FBQyxPQUFPLE9BQU8sNEJBQTRCO0lBQy9DLGVBQWU7SUFDZixNQUFNLENBQUMsT0FBTyxDQUFDLElBQUk7UUFDakIsSUFBSSxDQUFDLE1BQU0sQ0FBQyw0QkFBNEIsRUFBRSxDQUFDO1lBQ3pDLE1BQU0sQ0FBQyw0QkFBNEIsR0FBRyxJQUFJLDRCQUE0QixDQUFDLElBQUksQ0FBQyxDQUFBO1FBQzlFLENBQUM7UUFFRCxPQUFPLE1BQU0sQ0FBQyw0QkFBNEIsQ0FBQTtJQUM1QyxDQUFDO0lBRUQsbUJBQW1CO0lBQ25CLFlBQVksSUFBSSxHQUFHLEVBQUU7UUFDbkIsSUFBSSxDQUFDLE1BQU0sR0FBRyxFQUFFLENBQUE7UUFDaEIsSUFBSSxDQUFDLE9BQU8sR0FBRyxJQUFJLENBQUMsT0FBTyxJQUFJLE1BQU0sQ0FBQTtRQUVyQyxJQUFJLGdCQUFnQixJQUFJLElBQUksRUFBRSxDQUFDO1lBQzdCLElBQUksQ0FBQyxjQUFjLEdBQUcsSUFBSSxDQUFDLGNBQWMsQ0FBQTtRQUMzQyxDQUFDO2FBQU0sSUFBSSxPQUFPLFFBQVEsS0FB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Q0FBQyxDQUFDLDBCQUEwQixJQUFJLE1BQU0sQ0FBQyxFQUFFLENBQUM7WUFDNUMsTUFBTSxJQUFJLEtBQUssQ0FBQyw2QkFBNkIsMEJBQTBCLEVBQUUsQ0FBQyxDQUFBO1FBQzVFLENBQUM7UUFFRCxNQUFNLGlCQUFpQixHQUFHLE1BQU0sQ0FBQywwQkFBMEIsQ0FBQyxFQUFFLENBQUE7UUFDOUQsTUFBTSxpQkFBaUIsR0FBRyxLQUFLLENBQUMsU0FBUyxDQUFBO1FBRXpDLElBQUksaUJBQWlCLElBQUksQ0FBQyxpQkFBaUIsRUFBRSxDQUFDO1lBQzVDLE1BQU0sQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLENBQUMsR0FBRyxVQUFVLENBQUMsUUFBUSxDQUFDLFNBQVMsQ0FBQyw0Q0FBNEMsQ0FBQyxDQUFBO1lBRWpHLE1BQU0sQ0FBQyxZQUFZLENBQUMsRUFBQyxLQUFLLEVBQUUsU0FBUyxFQUFDLENBQUMsQ0FBQTtZQUN2QyxNQUFNLENBQUMsZ0JBQWdCLENBQUMsRUFBQyxLQUFLLEVBQUUsU0FBUyxFQUFDLENBQUMsQ0FBQTtRQUM3QyxDQUFDO0lBQ0gsQ0FBQztDQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0ICogYXMgaW5mbGVjdGlvbiBmcm9tIFwiaW5mbGVjdGlvblwiXG5pbXBvcnQgRGV2aXNlIGZyb20gXCIuL2RldmlzZS5qc1wiXG5pbXBvcnQgTG9nZ2VyIGZyb20gXCIuL2xvZ2dlci5qc1wiXG5pbXBvcnQgY29uZmlnIGZyb20gXCIuL2NvbmZpZy5qc1wiXG5pbXBvcnQgd2FrZUV2ZW50IGZyb20gXCJ3YWtlLWV2ZW50XCJcblxuY29uc3QgbG9nZ2VyID0gbmV3IExvZ2dlcih7bmFtZTogXCJBcGlNYWtlciAvIFNlc3Npb25TdGF0dXNVcGRhdGVyXCJ9KVxuY29uc3Qgc2hhcmVkID0ge31cblxuLy8gbG9nZ2VyLnNldERlYnVnKHRydWUpXG5cbi8qKiBUcmFja3Mgc2Vzc2lvbiBhbmQgQ1NSRiB0b2tlbiBmcmVzaG5lc3MuICovXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBBcGlNYWtlclNlc3Npb25TdGF0dXNVcGRhdGVyIHtcbiAgLyoqIGN1cnJlbnQuICovXG4gIHN0YXRpYyBjdXJyZW50KGFyZ3MpIHtcbiAgICBpZiAoIXNoYXJlZC5hcGlNYWtlclNlc3Npb25TdGF0dXNVcGRhdGVyKSB7XG4gICAgICBzaGFyZWQuYXBpTWFrZXJTZXNzaW9uU3RhdHVzVXBkYXRlciA9IG5ldyBBcGlNYWtlclNlc3Npb25TdGF0dXNVcGRhdGVyKGFyZ3MpXG4gICAgfVxuXG4gICAgcmV0dXJuIHNoYXJlZC5hcGlNYWtlclNlc3Npb25TdGF0dXNVcGRhdGVyXG4gIH1cblxuICAvKiogQ29uc3RydWN0b3IuICovXG4gIGNvbnN0cnVjdG9yKGFyZ3MgPSB7fSkge1xuICAgIHRoaXMuZXZlbnRzID0ge31cbiAgICB0aGlzLnRpbWVvdXQgPSBhcmdzLnRpbWVvdXQgfHwgNjAwMDAwXG5cbiAgICBpZiAoXCJ1c2VNZXRhRWxlbWVudFwiIGluIGFyZ3MpIHtcbiAgICAgIHRoaXMudXNlTWV0YUVsZW1lbnQgPSBhcmdzLnVzZU1ldGFFbGVtZW50XG4gICAgfSBlbHNlIGlmICh0eXBlb2YgZG9jdW1lbnQgPT09IFwidW5kZWZpbmVkXCIpIHtcbiAgICAgIHRoaXMudXNlTWV0YUVsZW1lbnQgPSBmYWxzZVxuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLnVzZU1ldGFFbGVtZW50ID0gdHJ1ZVxuICAgIH1cblxuICAgIGlmICh0eXBlb2Ygd2luZG93ICE9IFwidW5kZWZpbmVkXCIpIHtcbiAgICAgIHRoaXMuY29ubmVjdE9ubGluZUV2ZW50KClcbiAgICB9XG5cbiAgICB0aGlzLmNvbm5lY3RXYWtlRXZlbnQoKVxuICB9XG5cbiAgLyoqIGNvbm5lY3RPbmxpbmVFdmVudC4gKi9cbiAgY29ubmVjdE9ubGluZUV2ZW50KCkge1xuICAgIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKFwib25saW5lXCIsIHRoaXMudXBkYXRlU2Vzc2lvblN0YXR1cywgZmFsc2UpXG4gIH1cblxuICAvKiogY29ubmVjdFdha2VFdmVudC4gKi9cbiAgY29ubmVjdFdha2VFdmVudCgpIHtcbiAgICB3YWtlRXZlbnQodGhpcy51cGRhdGVTZXNzaW9uU3RhdHVzKVxuICB9XG5cbiAgYXN5bmMgZ2V0Q3NyZlRva2VuKCkge1xuICAgIGlmICh0aGlzLmNzcmZUb2tlbikge1xuICAgICAgbG9nZ2VyLmRlYnVnKGBHZXQgQ1NSRiB0b2tlbiBmcm9tIHNldCB2YXJpYWJsZTogJHt0aGlzLmNzcmZUb2tlbn1gKVxuXG4gICAgICByZXR1cm4gdGhpcy5jc3JmVG9rZW5cbiAgICB9XG5cbiAgICBpZiAodGhpcy51c2VNZXRhRWxlbWVudCkge1xuICAgICAgY29uc3QgY3NyZlRva2VuRWxlbWVudCA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoXCJtZXRhW25hbWU9J2NzcmYtdG9rZW4nXVwiKVxuXG4gICAgICBpZiAoY3NyZlRva2VuRWxlbWVudCkge1xuICAgICAgICBsb2dnZXIuZGVidWcoKCkgPT4gYEdldCBDU1JGIHRva2VuIGZyb20gbWV0YSBlbGVtZW50OiAke2NzcmZUb2tlbkVsZW1lbnQuZ2V0QXR0cmlidXRlKFwiY29udGVudFwiKX1gKVxuXG4gICAgICAgIHRoaXMuY3NyZlRva2VuID0gY3NyZlRva2VuRWxlbWVudC5nZXRBdHRyaWJ1dGUoXCJjb250ZW50XCIpXG5cbiAgICAgICAgcmV0dXJuIHRoaXMuY3NyZlRva2VuXG4gICAgICB9XG4gICAgfVxuXG4gICAgbG9nZ2VyLmRlYnVnKFwiVXBkYXRpbmcgc2Vzc2lvbiBzdGF0dXMgYmVjYXVzZSBubyBDU1JGIHRva2VuIHNldCB5ZXRcIilcbiAgICBhd2FpdCB0aGlzLnVwZGF0ZVNlc3Npb25TdGF0dXMoKVxuXG4gICAgaWYgKHRoaXMuY3NyZlRva2VuKSB7XG4gICAgICBsb2dnZXIuZGVidWcoKCkgPT4gYFJldHVybmluZyBDU1JGIHRva2VuIGFmdGVyIHVwZGF0aW5nIHNlc3Npb24gc3RhdHVzOiAke3RoaXMuY3NyZlRva2VufWApXG5cbiAgICAgIHJldHVybiB0aGlzLmNzcmZUb2tlblxuICAgIH1cblxuICAgIGxvZ2dlci5kZWJ1ZyhcIk5vIENTUkYgdG9rZW4gYXZhaWxhYmxlIGFmdGVyIHVwZGF0aW5nIHNlc3Npb24gc3RhdHVzXCIpXG5cbiAgICByZXR1cm4gdW5kZWZpbmVkXG4gIH1cblxuICAvKiogc2Vzc2lvblN0YXR1cy4gKi9cbiAgc2Vzc2lvblN0YXR1cygpIHtcbiAgICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUpID0+IHtcbiAgICAgIGNvbnN0IGhvc3QgPSBjb25maWcuZ2V0SG9zdCgpXG4gICAgICBsZXQgcmVxdWVzdFBhdGggPSBcIlwiXG5cbiAgICAgIGlmIChob3N0KSByZXF1ZXN0UGF0aCArPSBob3N0XG5cbiAgICAgIHJlcXVlc3RQYXRoICs9IFwiL2FwaV9tYWtlci9zZXNzaW9uX3N0YXR1c2VzXCJcblxuICAgICAgY29uc3QgeGhyID0gbmV3IFhNTEh0dHBSZXF1ZXN0KClcbiAgICAgIHhoci5vcGVuKFwiUE9TVFwiLCByZXF1ZXN0UGF0aCwgdHJ1ZSlcbiAgICAgIHhoci5vbmxvYWQgPSAoKSA9PiB7XG4gICAgICAgIGNvbnN0IHJlc3BvbnNlID0gSlNPTi5wYXJzZSh4aHIucmVzcG9uc2VUZXh0KVxuICAgICAgICByZXNvbHZlKHJlc3BvbnNlKVxuICAgICAgfVxuICAgICAgeGhyLnNlbmQoKVxuICAgIH0pXG4gIH1cblxuICAvKiogb25TaWduZWRPdXQuICovXG4gIG9uU2lnbmVkT3V0KGNhbGxiYWNrKSB7XG4gICAgLy8gQHRzLWV4cGVjdC1lcnJvclxuICAgIHRoaXMuYWRkRXZlbnQoXCJvblNpZ25lZE91dFwiLCBjYWxsYmFjaylcbiAgfVxuXG4gIC8qKiBzdGFydFRpbWVvdXQuICovXG4gIHN0YXJ0VGltZW91dCgpIHtcbiAgICBsb2dnZXIuZGVidWcoXCJzdGFydFRpbWVvdXRcIilcblxuICAgIGlmICh0aGlzLnVwZGF0ZVRpbWVvdXQpXG4gICAgICBjbGVhclRpbWVvdXQodGhpcy51cGRhdGVUaW1lb3V0KVxuXG4gICAgdGhpcy51cGRhdGVUaW1lb3V0ID0gc2V0VGltZW91dChcbiAgICAgICgpID0+IHtcbiAgICAgICAgdGhpcy5zdGFydFRpbWVvdXQoKVxuICAgICAgICB0aGlzLnVwZGF0ZVNlc3Npb25TdGF0dXMoKVxuICAgICAgfSxcbiAgICAgIHRoaXMudGltZW91dFxuICAgIClcbiAgfVxuXG4gIC8qKiBzdG9wVGltZW91dC4gKi9cbiAgc3RvcFRpbWVvdXQoKSB7XG4gICAgaWYgKHRoaXMudXBkYXRlVGltZW91dClcbiAgICAgIGNsZWFyVGltZW91dCh0aGlzLnVwZGF0ZVRpbWVvdXQpXG4gIH1cblxuICAvKiogdXBkYXRlU2Vzc2lvblN0YXR1cy4gKi9cbiAgdXBkYXRlU2Vzc2lvblN0YXR1cyA9IGFzeW5jICgpID0+IHtcbiAgICBsb2dnZXIuZGVidWcoXCJ1cGRhdGVTZXNzaW9uU3RhdHVzXCIpXG5cbiAgICBjb25zdCByZXN1bHQgPSBhd2FpdCB0aGlzLnNlc3Npb25TdGF0dXMoKVxuXG4gICAgdGhpcy5hcHBseVJlc3VsdChyZXN1bHQpXG4gIH1cblxuICAvKipcbiAgICogQHBhcmFtIHtSZWNvcmQ8c3RyaW5nLCBhbnk+fSByZXN1bHRcbiAgICogQHJldHVybnMge3ZvaWR9XG4gICAqL1xuICBhcHBseVJlc3VsdChyZXN1bHQpIHtcbiAgICBsb2dnZXIuZGVidWcoKCkgPT4gYFJlc3VsdDogJHtKU09OLnN0cmluZ2lmeShyZXN1bHQsIG51bGwsIDIpfWApXG5cbiAgICB0aGlzLnVwZGF0ZU1ldGFFbGVtZW50c0Zyb21SZXN1bHQocmVzdWx0KVxuICAgIHRoaXMudXBkYXRlVXNlclNlc3Npb25zRnJvbVJlc3VsdChyZXN1bHQpXG4gIH1cblxuICAvKiogdXBkYXRlTWV0YUVsZW1lbnRzRnJvbVJlc3VsdC4gKi9cbiAgdXBkYXRlTWV0YUVsZW1lbnRzRnJvbVJlc3VsdChyZXN1bHQpIHtcbiAgICBsb2dnZXIuZGVidWcoXCJ1cGRhdGVNZXRhRWxlbWVudHNGcm9tUmVzdWx0XCIpXG5cbiAgICBpZiAoIXJlc3VsdC5jc3JmX3Rva2VuKSB7XG4gICAgICByZXR1cm5cbiAgICB9XG5cbiAgICB0aGlzLmNzcmZUb2tlbiA9IHJlc3VsdC5jc3JmX3Rva2VuXG5cbiAgICBpZiAodGhpcy51c2VNZXRhRWxlbWVudCkge1xuICAgICAgY29uc3QgY3NyZlRva2VuRWxlbWVudCA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoXCJtZXRhW25hbWU9J2NzcmYtdG9rZW4nXVwiKVxuXG4gICAgICBpZiAoY3NyZlRva2VuRWxlbWVudCkge1xuICAgICAgICBsb2dnZXIuZGVidWcoKCkgPT4gYENoYW5naW5nIHRva2VuIGZyb20gXCIke2NzcmZUb2tlbkVsZW1lbnQuZ2V0QXR0cmlidXRlKFwiY29udGVudFwiKX1cIiB0byBcIiR7cmVzdWx0LmNzcmZfdG9rZW59XCJgKVxuICAgICAgICBjc3JmVG9rZW5FbGVtZW50LnNldEF0dHJpYnV0ZShcImNvbnRlbnRcIiwgcmVzdWx0LmNzcmZfdG9rZW4pXG4gICAgICB9IGVsc2Uge1xuICAgICAgICBsb2dnZXIuZGVidWcoXCJjc3JmIHRva2VuIGVsZW1lbnQgY291bGRuJ3QgYmUgZm91bmRcIilcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICAvKiogdXBkYXRlVXNlclNlc3Npb25zRnJvbVJlc3VsdC4gKi9cbiAgdXBkYXRlVXNlclNlc3Npb25zRnJvbVJlc3VsdChyZXN1bHQpIHtcbiAgICBmb3IgKGNvbnN0IHNjb3BlTmFtZSBpbiByZXN1bHQuc2NvcGVzKSB7XG4gICAgICB0aGlzLnVwZGF0ZVVzZXJTZXNzaW9uU2NvcGVGcm9tUmVzdWx0KHNjb3BlTmFtZSwgcmVzdWx0LnNjb3Blc1tzY29wZU5hbWVdKVxuICAgIH1cbiAgfVxuXG4gIC8qKiB1cGRhdGVVc2VyU2Vzc2lvblNjb3BlRnJvbVJlc3VsdC4gKi9cbiAgdXBkYXRlVXNlclNlc3Npb25TY29wZUZyb21SZXN1bHQoc2NvcGVOYW1lLCBzY29wZSkge1xuICAgIGNvbnN0IGRldmlzZUlzU2lnbmVkSW5NZXRob2ROYW1lID0gYGlzJHtpbmZsZWN0aW9uLmNhbWVsaXplKHNjb3BlTmFtZSl9U2lnbmVkSW5gXG5cbiAgICBpZiAoIShkZXZpc2VJc1NpZ25lZEluTWV0aG9kTmFtZSBpbiBEZXZpc2UpKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYE5vIHN1Y2ggbWV0aG9kIGluIERldmlzZTogJHtkZXZpc2VJc1NpZ25lZEluTWV0aG9kTmFtZX1gKVxuICAgIH1cblxuICAgIGNvbnN0IGN1cnJlbnRseVNpZ25lZEluID0gRGV2aXNlW2RldmlzZUlzU2lnbmVkSW5NZXRob2ROYW1lXSgpXG4gICAgY29uc3Qgc2lnbmVkSW5PbkJhY2tlbmQgPSBzY29wZS5zaWduZWRfaW5cblxuICAgIGlmIChjdXJyZW50bHlTaWduZWRJbiAmJiAhc2lnbmVkSW5PbkJhY2tlbmQpIHtcbiAgICAgIGxvZ2dlci5kZWJ1ZygoKSA9PiBgJHtpbmZsZWN0aW9uLmNhbWVsaXplKHNjb3BlTmFtZSl9IHNpZ25lZCBpbiBvbiBmcm9udGVuZCBidXQgbm90IGluIGJhY2tlbmQhYClcblxuICAgICAgRGV2aXNlLnNldFNpZ25lZE91dCh7c2NvcGU6IHNjb3BlTmFtZX0pXG4gICAgICBEZXZpc2UuY2FsbFNpZ25PdXRFdmVudCh7c2NvcGU6IHNjb3BlTmFtZX0pXG4gICAgfVxuICB9XG59XG4iXX0=
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
/** Shared websocket request client for ApiMaker command/service execution. */
|
|
2
|
+
export default class ApiMakerWebsocketRequestClient {
|
|
3
|
+
/** @returns {ApiMakerWebsocketRequestClient} */
|
|
4
|
+
static current(): ApiMakerWebsocketRequestClient;
|
|
5
|
+
currentRequestId: number;
|
|
6
|
+
pendingRequests: {};
|
|
7
|
+
pendingRequestsByFingerprint: {};
|
|
8
|
+
responseCache: {};
|
|
9
|
+
subscriptionState: string;
|
|
10
|
+
/**
|
|
11
|
+
* @param {object} args
|
|
12
|
+
* @param {boolean} [args.cacheResponse]
|
|
13
|
+
* @param {Record<string, any>} [args.global]
|
|
14
|
+
* @param {(value: string) => void} [args.onLog]
|
|
15
|
+
* @param {(value: Record<string, any>) => void} [args.onProgress]
|
|
16
|
+
* @param {(value: Record<string, any>) => void} [args.onReceived]
|
|
17
|
+
* @param {Record<string, any>} args.request
|
|
18
|
+
* @returns {Promise<Record<string, any>>}
|
|
19
|
+
*/
|
|
20
|
+
perform({ cacheResponse, global, onLog, onProgress, onReceived, request }: {
|
|
21
|
+
cacheResponse?: boolean;
|
|
22
|
+
global?: Record<string, any>;
|
|
23
|
+
onLog?: (value: string) => void;
|
|
24
|
+
onProgress?: (value: Record<string, any>) => void;
|
|
25
|
+
onReceived?: (value: Record<string, any>) => void;
|
|
26
|
+
request: Record<string, any>;
|
|
27
|
+
}): Promise<Record<string, any>>;
|
|
28
|
+
/** @returns {any} */
|
|
29
|
+
ensureSubscription(): any;
|
|
30
|
+
subscription: any;
|
|
31
|
+
/** @returns {Promise<void>} */
|
|
32
|
+
waitForSubscription(): Promise<void>;
|
|
33
|
+
/** @returns {void} */
|
|
34
|
+
resetSubscriptionReadyPromise(): void;
|
|
35
|
+
subscriptionReadyPromise: Promise<any>;
|
|
36
|
+
resolveSubscriptionReadyPromise: (value: any) => void;
|
|
37
|
+
rejectSubscriptionReadyPromise: (reason?: any) => void;
|
|
38
|
+
/** @returns {void} */
|
|
39
|
+
onConnected: () => void;
|
|
40
|
+
/** @returns {void} */
|
|
41
|
+
onDisconnected: () => void;
|
|
42
|
+
/** @returns {void} */
|
|
43
|
+
onRejected: () => void;
|
|
44
|
+
/**
|
|
45
|
+
* @param {Record<string, any>} data
|
|
46
|
+
* @returns {void}
|
|
47
|
+
*/
|
|
48
|
+
onReceived: (data: Record<string, any>) => void;
|
|
49
|
+
/**
|
|
50
|
+
* @param {Error} error
|
|
51
|
+
* @returns {void}
|
|
52
|
+
*/
|
|
53
|
+
rejectPendingRequests(error: Error): void;
|
|
54
|
+
}
|
|
55
|
+
//# sourceMappingURL=websocket-request-client.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"websocket-request-client.d.ts","sourceRoot":"/src/","sources":["websocket-request-client.js"],"names":[],"mappings":"AAOA,8EAA8E;AAC9E;IACE,gDAAgD;IAChD,kBADc,8BAA8B,CAO3C;IAIC,yBAAyB;IACzB,oBAAyB;IACzB,iCAAsC;IACtC,kBAAuB;IACvB,0BAA8B;IAGhC;;;;;;;;;OASG;IACH,2EARG;QAAuB,aAAa,GAA5B,OAAO;QACoB,MAAM,GAAjC,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC;QACY,KAAK,GAApC,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI;QACqB,UAAU,GAAtD,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,KAAK,IAAI;QACQ,UAAU,GAAtD,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,KAAK,IAAI;QACV,OAAO,EAAjC,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC;KAC3B,GAAU,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC,CAyDxC;IAED,qBAAqB;IACrB,sBADc,GAAG,CAmBhB;IAZG,kBAQC;IAML,+BAA+B;IAC/B,uBADc,OAAO,CAAC,IAAI,CAAC,CAa1B;IAED,sBAAsB;IACtB,iCADc,IAAI,CAMjB;IAJC,uCAGE;IAFA,sDAA8C;IAC9C,uDAA4C;IAIhD,sBAAsB;IACtB,mBADc,IAAI,CAKjB;IAED,sBAAsB;IACtB,sBADc,IAAI,CAOjB;IAED,sBAAsB;IACtB,kBADc,IAAI,CAUjB;IAED;;;OAGG;IACH,aAAc,MAHH,MAAM,CAAC,MAAM,EAAE,GAAG,CAGX,KAFL,IAAI,CAqChB;IAED;;;OAGG;IACH,6BAHW,KAAK,GACH,IAAI,CAWhB;CACF"}
|
|
@@ -0,0 +1,192 @@
|
|
|
1
|
+
import CustomError from "./custom-error.js";
|
|
2
|
+
import Logger from "./logger.js";
|
|
3
|
+
import channelsConsumer from "./channels-consumer.js";
|
|
4
|
+
const logger = new Logger({ name: "ApiMaker / WebsocketRequestClient" });
|
|
5
|
+
const shared = {};
|
|
6
|
+
/** Shared websocket request client for ApiMaker command/service execution. */
|
|
7
|
+
export default class ApiMakerWebsocketRequestClient {
|
|
8
|
+
/** @returns {ApiMakerWebsocketRequestClient} */
|
|
9
|
+
static current() {
|
|
10
|
+
if (!shared.currentApiMakerWebsocketRequestClient) {
|
|
11
|
+
shared.currentApiMakerWebsocketRequestClient = new ApiMakerWebsocketRequestClient();
|
|
12
|
+
}
|
|
13
|
+
return shared.currentApiMakerWebsocketRequestClient;
|
|
14
|
+
}
|
|
15
|
+
/** Constructor. */
|
|
16
|
+
constructor() {
|
|
17
|
+
this.currentRequestId = 1;
|
|
18
|
+
this.pendingRequests = {};
|
|
19
|
+
this.pendingRequestsByFingerprint = {};
|
|
20
|
+
this.responseCache = {};
|
|
21
|
+
this.subscriptionState = "new";
|
|
22
|
+
}
|
|
23
|
+
/**
|
|
24
|
+
* @param {object} args
|
|
25
|
+
* @param {boolean} [args.cacheResponse]
|
|
26
|
+
* @param {Record<string, any>} [args.global]
|
|
27
|
+
* @param {(value: string) => void} [args.onLog]
|
|
28
|
+
* @param {(value: Record<string, any>) => void} [args.onProgress]
|
|
29
|
+
* @param {(value: Record<string, any>) => void} [args.onReceived]
|
|
30
|
+
* @param {Record<string, any>} args.request
|
|
31
|
+
* @returns {Promise<Record<string, any>>}
|
|
32
|
+
*/
|
|
33
|
+
perform({ cacheResponse, global, onLog, onProgress, onReceived, request }) {
|
|
34
|
+
const fingerprint = JSON.stringify({ global, request });
|
|
35
|
+
if (cacheResponse && this.responseCache[fingerprint]) {
|
|
36
|
+
return Promise.resolve(this.responseCache[fingerprint]);
|
|
37
|
+
}
|
|
38
|
+
if (this.pendingRequestsByFingerprint[fingerprint]) {
|
|
39
|
+
const pendingRequestData = this.pendingRequestsByFingerprint[fingerprint];
|
|
40
|
+
const pendingRequest = this.pendingRequests[pendingRequestData.requestId];
|
|
41
|
+
if (onLog)
|
|
42
|
+
pendingRequest?.onLogCallbacks.push(onLog);
|
|
43
|
+
if (onProgress)
|
|
44
|
+
pendingRequest?.onProgressCallbacks.push(onProgress);
|
|
45
|
+
if (onReceived)
|
|
46
|
+
pendingRequest?.onReceivedCallbacks.push(onReceived);
|
|
47
|
+
return pendingRequestData.promise;
|
|
48
|
+
}
|
|
49
|
+
const promise = new Promise((resolve, reject) => {
|
|
50
|
+
const requestId = this.currentRequestId;
|
|
51
|
+
this.currentRequestId += 1;
|
|
52
|
+
this.pendingRequests[requestId] = {
|
|
53
|
+
cacheResponse,
|
|
54
|
+
fingerprint,
|
|
55
|
+
onLogCallbacks: onLog ? [onLog] : [],
|
|
56
|
+
onProgressCallbacks: onProgress ? [onProgress] : [],
|
|
57
|
+
onReceivedCallbacks: onReceived ? [onReceived] : [],
|
|
58
|
+
reject,
|
|
59
|
+
resolve
|
|
60
|
+
};
|
|
61
|
+
this.waitForSubscription().then(() => {
|
|
62
|
+
this.ensureSubscription().perform("execute", {
|
|
63
|
+
cache_response: cacheResponse,
|
|
64
|
+
global,
|
|
65
|
+
request,
|
|
66
|
+
request_id: requestId
|
|
67
|
+
});
|
|
68
|
+
})
|
|
69
|
+
.catch((error) => {
|
|
70
|
+
delete this.pendingRequests[requestId];
|
|
71
|
+
reject(error);
|
|
72
|
+
});
|
|
73
|
+
});
|
|
74
|
+
this.pendingRequestsByFingerprint[fingerprint] = { promise, requestId: this.currentRequestId - 1 };
|
|
75
|
+
promise.then(() => {
|
|
76
|
+
delete this.pendingRequestsByFingerprint[fingerprint];
|
|
77
|
+
}, () => {
|
|
78
|
+
delete this.pendingRequestsByFingerprint[fingerprint];
|
|
79
|
+
});
|
|
80
|
+
return promise;
|
|
81
|
+
}
|
|
82
|
+
/** @returns {any} */
|
|
83
|
+
ensureSubscription() {
|
|
84
|
+
if (!this.subscription) {
|
|
85
|
+
logger.debug("Creating websocket request subscription");
|
|
86
|
+
this.subscriptionState = "connecting";
|
|
87
|
+
this.resetSubscriptionReadyPromise();
|
|
88
|
+
this.subscription = channelsConsumer().subscriptions.create({ channel: "ApiMaker::RequestsChannel" }, {
|
|
89
|
+
connected: this.onConnected,
|
|
90
|
+
disconnected: this.onDisconnected,
|
|
91
|
+
received: this.onReceived,
|
|
92
|
+
rejected: this.onRejected
|
|
93
|
+
});
|
|
94
|
+
}
|
|
95
|
+
return this.subscription;
|
|
96
|
+
}
|
|
97
|
+
/** @returns {Promise<void>} */
|
|
98
|
+
waitForSubscription() {
|
|
99
|
+
this.ensureSubscription();
|
|
100
|
+
if (this.subscriptionState == "connected") {
|
|
101
|
+
return Promise.resolve();
|
|
102
|
+
}
|
|
103
|
+
if (!this.subscriptionReadyPromise) {
|
|
104
|
+
this.resetSubscriptionReadyPromise();
|
|
105
|
+
}
|
|
106
|
+
return this.subscriptionReadyPromise;
|
|
107
|
+
}
|
|
108
|
+
/** @returns {void} */
|
|
109
|
+
resetSubscriptionReadyPromise() {
|
|
110
|
+
this.subscriptionReadyPromise = new Promise((resolve, reject) => {
|
|
111
|
+
this.resolveSubscriptionReadyPromise = resolve;
|
|
112
|
+
this.rejectSubscriptionReadyPromise = reject;
|
|
113
|
+
});
|
|
114
|
+
}
|
|
115
|
+
/** @returns {void} */
|
|
116
|
+
onConnected = () => {
|
|
117
|
+
logger.debug("Websocket request subscription connected");
|
|
118
|
+
this.subscriptionState = "connected";
|
|
119
|
+
this.resolveSubscriptionReadyPromise?.();
|
|
120
|
+
};
|
|
121
|
+
/** @returns {void} */
|
|
122
|
+
onDisconnected = () => {
|
|
123
|
+
logger.debug("Websocket request subscription disconnected");
|
|
124
|
+
this.rejectPendingRequests(new Error("Websocket request subscription disconnected"));
|
|
125
|
+
this.subscriptionState = "disconnected";
|
|
126
|
+
this.subscription = null;
|
|
127
|
+
this.resetSubscriptionReadyPromise();
|
|
128
|
+
};
|
|
129
|
+
/** @returns {void} */
|
|
130
|
+
onRejected = () => {
|
|
131
|
+
const error = new Error("Websocket request subscription was rejected");
|
|
132
|
+
logger.error(error);
|
|
133
|
+
this.rejectPendingRequests(error);
|
|
134
|
+
this.subscriptionState = "rejected";
|
|
135
|
+
this.subscription = null;
|
|
136
|
+
this.rejectSubscriptionReadyPromise?.(error);
|
|
137
|
+
this.resetSubscriptionReadyPromise();
|
|
138
|
+
};
|
|
139
|
+
/**
|
|
140
|
+
* @param {Record<string, any>} data
|
|
141
|
+
* @returns {void}
|
|
142
|
+
*/
|
|
143
|
+
onReceived = (data) => {
|
|
144
|
+
const pendingRequest = this.pendingRequests[data.request_id];
|
|
145
|
+
if (!pendingRequest) {
|
|
146
|
+
logger.debug(() => ["Ignoring websocket response without a pending request", { data }]);
|
|
147
|
+
return;
|
|
148
|
+
}
|
|
149
|
+
if (data.type == "api_maker_command_log") {
|
|
150
|
+
pendingRequest.onLogCallbacks.forEach((callback) => callback(data.message));
|
|
151
|
+
}
|
|
152
|
+
else if (data.type == "api_maker_command_progress") {
|
|
153
|
+
const progressData = {
|
|
154
|
+
count: data.count,
|
|
155
|
+
progress: data.progress,
|
|
156
|
+
total: data.total
|
|
157
|
+
};
|
|
158
|
+
pendingRequest.onProgressCallbacks.forEach((callback) => callback(progressData));
|
|
159
|
+
}
|
|
160
|
+
else if (data.type == "api_maker_request_received") {
|
|
161
|
+
pendingRequest.onReceivedCallbacks.forEach((callback) => callback(data));
|
|
162
|
+
}
|
|
163
|
+
else if (data.type == "api_maker_request_response") {
|
|
164
|
+
delete this.pendingRequests[data.request_id];
|
|
165
|
+
if (pendingRequest.cacheResponse) {
|
|
166
|
+
this.responseCache[pendingRequest.fingerprint] = data.response;
|
|
167
|
+
}
|
|
168
|
+
pendingRequest.resolve(data.response);
|
|
169
|
+
}
|
|
170
|
+
else if (data.type == "api_maker_request_error") {
|
|
171
|
+
delete this.pendingRequests[data.request_id];
|
|
172
|
+
pendingRequest.reject(new CustomError("Websocket request failed", { response: data.response }));
|
|
173
|
+
}
|
|
174
|
+
else {
|
|
175
|
+
delete this.pendingRequests[data.request_id];
|
|
176
|
+
pendingRequest.reject(new Error(`Unknown websocket request response type: ${data.type}`));
|
|
177
|
+
}
|
|
178
|
+
};
|
|
179
|
+
/**
|
|
180
|
+
* @param {Error} error
|
|
181
|
+
* @returns {void}
|
|
182
|
+
*/
|
|
183
|
+
rejectPendingRequests(error) {
|
|
184
|
+
const pendingRequests = this.pendingRequests;
|
|
185
|
+
this.pendingRequests = {};
|
|
186
|
+
this.pendingRequestsByFingerprint = {};
|
|
187
|
+
Object.values(pendingRequests).forEach((pendingRequest) => {
|
|
188
|
+
queueMicrotask(() => pendingRequest.reject(error));
|
|
189
|
+
});
|
|
190
|
+
}
|
|
191
|
+
}
|
|
192
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2Vic29ja2V0LXJlcXVlc3QtY2xpZW50LmpzIiwic291cmNlUm9vdCI6Ii9zcmMvIiwic291cmNlcyI6WyJ3ZWJzb2NrZXQtcmVxdWVzdC1jbGllbnQuanMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxXQUFXLE1BQU0sbUJBQW1CLENBQUE7QUFDM0MsT0FBTyxNQUFNLE1BQU0sYUFBYSxDQUFBO0FBQ2hDLE9BQU8sZ0JBQWdCLE1BQU0sd0JBQXdCLENBQUE7QUFFckQsTUFBTSxNQUFNLEdBQUcsSUFBSSxNQUFNLENBQUMsRUFBQyxJQUFJLEVBQUUsbUNBQW1DLEVBQUMsQ0FBQyxDQUFBO0FBQ3RFLE1BQU0sTUFBTSxHQUFHLEVBQUUsQ0FBQTtBQUVqQiw4RUFBOEU7QUFDOUUsTUFBTSxDQUFDLE9BQU8sT0FBTyw4QkFBOEI7SUFDakQsZ0RBQWdEO0lBQ2hELE1BQU0sQ0FBQyxPQUFPO1FBQ1osSUFBSSxDQUFDLE1BQU0sQ0FBQyxxQ0FBcUMsRUFBRSxDQUFDO1lBQ2xELE1BQU0sQ0FBQyxxQ0FBcUMsR0FBRyxJQUFJLDhCQUE4QixFQUFFLENBQUE7UUFDckYsQ0FBQztRQUVELE9BQU8sTUFBTSxDQUFDLHFDQUFxQyxDQUFBO0lBQ3JELENBQUM7SUFFRCxtQkFBbUI7SUFDbkI7UUFDRSxJQUFJLENBQUMsZ0JBQWdCLEdBQUcsQ0FBQyxDQUFBO1FBQ3pCLElBQUksQ0FBQyxlQUFlLEdBQUcsRUFBRSxDQUFBO1FBQ3pCLElBQUksQ0FBQyw0QkFBNEIsR0FBRyxFQUFFLENBQUE7UUFDdEMsSUFBSSxDQUFDLGFBQWEsR0FBRyxFQUFFLENBQUE7UUFDdkIsSUFBSSxDQUFDLGlCQUFpQixHQUFHLEtBQUssQ0FBQTtJQUNoQyxDQUFDO0lBRUQ7Ozs7Ozs7OztPQVNHO0lBQ0gsT0FBTyxDQUFFLEVBQUMsYUFBYSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUsVUFBVSxFQUFFLFVBQVUsRUFBRSxPQUFPLEVBQUM7UUFDdEUsTUFBTSxXQUFXLEdBQUcsSUFB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ZXJyb3IuanNcIlxuaW1wb3J0IExvZ2dlciBmcm9tIFwiLi9sb2dnZXIuanNcIlxuaW1wb3J0IGNoYW5uZWxzQ29uc3VtZXIgZnJvbSBcIi4vY2hhbm5lbHMtY29uc3VtZXIuanNcIlxuXG5jb25zdCBsb2dnZXIgPSBuZXcgTG9nZ2VyKHtuYW1lOiBcIkFwaU1ha2VyIC8gV2Vic29ja2V0UmVxdWVzdENsaWVudFwifSlcbmNvbnN0IHNoYXJlZCA9IHt9XG5cbi8qKiBTaGFyZWQgd2Vic29ja2V0IHJlcXVlc3QgY2xpZW50IGZvciBBcGlNYWtlciBjb21tYW5kL3NlcnZpY2UgZXhlY3V0aW9uLiAqL1xuZXhwb3J0IGRlZmF1bHQgY2xhc3MgQXBpTWFrZXJXZWJzb2NrZXRSZXF1ZXN0Q2xpZW50IHtcbiAgLyoqIEByZXR1cm5zIHtBcGlNYWtlcldlYnNvY2tldFJlcXVlc3RDbGllbnR9ICovXG4gIHN0YXRpYyBjdXJyZW50ICgpIHtcbiAgICBpZiAoIXNoYXJlZC5jdXJyZW50QXBpTWFrZXJXZWJzb2NrZXRSZXF1ZXN0Q2xpZW50KSB7XG4gICAgICBzaGFyZWQuY3VycmVudEFwaU1ha2VyV2Vic29ja2V0UmVxdWVzdENsaWVudCA9IG5ldyBBcGlNYWtlcldlYnNvY2tldFJlcXVlc3RDbGllbnQoKVxuICAgIH1cblxuICAgIHJldHVybiBzaGFyZWQuY3VycmVudEFwaU1ha2VyV2Vic29ja2V0UmVxdWVzdENsaWVudFxuICB9XG5cbiAgLyoqIENvbnN0cnVjdG9yLiAqL1xuICBjb25zdHJ1Y3RvciAoKSB7XG4gICAgdGhpcy5jdXJyZW50UmVxdWVzdElkID0gMVxuICAgIHRoaXMucGVuZGluZ1JlcXVlc3RzID0ge31cbiAgICB0aGlzLnBlbmRpbmdSZXF1ZXN0c0J5RmluZ2VycHJpbnQgPSB7fVxuICAgIHRoaXMucmVzcG9uc2VDYWNoZSA9IHt9XG4gICAgdGhpcy5zdWJzY3JpcHRpb25TdGF0ZSA9IFwibmV3XCJcbiAgfVxuXG4gIC8qKlxuICAgKiBAcGFyYW0ge29iamVjdH0gYXJnc1xuICAgKiBAcGFyYW0ge2Jvb2xlYW59IFthcmdzLmNhY2hlUmVzcG9uc2VdXG4gICAqIEBwYXJhbSB7UmVjb3JkPHN0cmluZywgYW55Pn0gW2FyZ3MuZ2xvYmFsXVxuICAgKiBAcGFyYW0geyh2YWx1ZTogc3RyaW5nKSA9PiB2b2lkfSBbYXJncy5vbkxvZ11cbiAgICogQHBhcmFtIHsodmFsdWU6IFJlY29yZDxzdHJpbmcsIGFueT4pID0+IHZvaWR9IFthcmdzLm9uUHJvZ3Jlc3NdXG4gICAqIEBwYXJhbSB7KHZhbHVlOiBSZWNvcmQ8c3RyaW5nLCBhbnk+KSA9PiB2b2lkfSBbYXJncy5vblJlY2VpdmVkXVxuICAgKiBAcGFyYW0ge1JlY29yZDxzdHJpbmcsIGFueT59IGFyZ3MucmVxdWVzdFxuICAgKiBAcmV0dXJucyB7UHJvbWlzZTxSZWNvcmQ8c3RyaW5nLCBhbnk+Pn1cbiAgICovXG4gIHBlcmZvcm0gKHtjYWNoZVJlc3BvbnNlLCBnbG9iYWwsIG9uTG9nLCBvblByb2dyZXNzLCBvblJlY2VpdmVkLCByZXF1ZXN0fSkge1xuICAgIGNvbnN0IGZpbmdlcnByaW50ID0gSlNPTi5zdHJpbmdpZnkoe2dsb2JhbCwgcmVxdWVzdH0pXG5cbiAgICBpZiAoY2FjaGVSZXNwb25zZSAmJiB0aGlzLnJlc3BvbnNlQ2FjaGVbZmluZ2VycHJpbnRdKSB7XG4gICAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKHRoaXMucmVzcG9uc2VDYWNoZVtmaW5nZXJwcmludF0pXG4gICAgfVxuXG4gICAgaWYgKHRoaXMucGVuZGluZ1JlcXVlc3RzQnlGaW5nZXJwcmludFtmaW5nZXJwcmludF0pIHtcbiAgICAgIGNvbnN0IHBlbmRpbmdSZXF1ZXN0RGF0YSA9IHRoaXMucGVuZGluZ1JlcXVlc3RzQnlGaW5nZXJwcmludFtmaW5nZXJwcmludF1cbiAgICAgIGNvbnN0IHBlbmRpbmdSZXF1ZXN0ID0gdGhpcy5wZW5kaW5nUmVxdWVzdHNbcGVuZGluZ1JlcXVlc3REYXRhLnJlcXVlc3RJZF1cblxuICAgICAgaWYgKG9uTG9nKSBwZW5kaW5nUmVxdWVzdD8ub25Mb2dDYWxsYmFja3MucHVzaChvbkxvZylcbiAgICAgIGlmIChvblByb2dyZXNzKSBwZW5kaW5nUmVxdWVzdD8ub25Qcm9ncmVzc0NhbGxiYWNrcy5wdXNoKG9uUHJvZ3Jlc3MpXG4gICAgICBpZiAob25SZWNlaXZlZCkgcGVuZGluZ1JlcXVlc3Q/Lm9uUmVjZWl2ZWRDYWxsYmFja3MucHVzaChvblJlY2VpdmVkKVxuXG4gICAgICByZXR1cm4gcGVuZGluZ1JlcXVlc3REYXRhLnByb21pc2VcbiAgICB9XG5cbiAgICBjb25zdCBwcm9taXNlID0gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuICAgICAgY29uc3QgcmVxdWVzdElkID0gdGhpcy5jdXJyZW50UmVxdWVzdElkXG4gICAgICB0aGlzLmN1cnJlbnRSZXF1ZXN0SWQgKz0gMVxuXG4gICAgICB0aGlzLnBlbmRpbmdSZXF1ZXN0c1tyZXF1ZXN0SWRdID0ge1xuICAgICAgICBjYWNoZVJlc3BvbnNlLFxuICAgICAgICBmaW5nZXJwcmludCxcbiAgICAgICAgb25Mb2dDYWxsYmFja3M6IG9uTG9nID8gW29uTG9nXSA6IFtdLFxuICAgICAgICBvblByb2dyZXNzQ2FsbGJhY2tzOiBvblByb2dyZXNzID8gW29uUHJvZ3Jlc3NdIDogW10sXG4gICAgICAgIG9uUmVjZWl2ZWRDYWxsYmFja3M6IG9uUmVjZWl2ZWQgPyBbb25SZWNlaXZlZF0gOiBbXSxcbiAgICAgICAgcmVqZWN0LFxuICAgICAgICByZXNvbHZlXG4gICAgICB9XG5cbiAgICAgIHRoaXMud2FpdEZvclN1YnNjcmlwdGlvbigpLnRoZW4oKCkgPT4ge1xuICAgICAgICB0aGlzLmVuc3VyZVN1YnNjcmlwdGlvbigpLnBlcmZvcm0oXCJleGVjdXRlXCIsIHtcbiAgICAgICAgICBjYWNoZV9yZXNwb25zZTogY2FjaGVSZXNwb25zZSxcbiAgICAgICAgICBnbG9iYWwsXG4gICAgICAgICAgcmVxdWVzdCxcbiAgICAgICAgICByZXF1ZXN0X2lkOiByZXF1ZXN0SWRcbiAgICAgICAgfSlcbiAgICAgIH0pXG4gICAgICAgIC5jYXRjaCgoZXJyb3IpID0+IHtcbiAgICAgICAgICBkZWxldGUgdGhpcy5wZW5kaW5nUmVxdWVzdHNbcmVxdWVzdElkXVxuICAgICAgICAgIHJlamVjdChlcnJvcilcbiAgICAgICAgfSlcbiAgICB9KVxuXG4gICAgdGhpcy5wZW5kaW5nUmVxdWVzdHNCeUZpbmdlcnByaW50W2ZpbmdlcnByaW50XSA9IHtwcm9taXNlLCByZXF1ZXN0SWQ6IHRoaXMuY3VycmVudFJlcXVlc3RJZCAtIDF9XG5cbiAgICBwcm9taXNlLnRoZW4oKCkgPT4ge1xuICAgICAgZGVsZXRlIHRoaXMucGVuZGluZ1JlcXVlc3RzQnlGaW5nZXJwcmludFtmaW5nZXJwcmludF1cbiAgICB9LCAoKSA9PiB7XG4gICAgICBkZWxldGUgdGhpcy5wZW5kaW5nUmVxdWVzdHNCeUZpbmdlcnByaW50W2ZpbmdlcnByaW50XVxuICAgIH0pXG5cbiAgICByZXR1cm4gcHJvbWlzZVxuICB9XG5cbiAgLyoqIEByZXR1cm5zIHthbnl9ICovXG4gIGVuc3VyZVN1YnNjcmlwdGlvbiAoKSB7XG4gICAgaWYgKCF0aGlzLnN1YnNjcmlwdGlvbikge1xuICAgICAgbG9nZ2VyLmRlYnVnKFwiQ3JlYXRpbmcgd2Vic29ja2V0IHJlcXVlc3Qgc3Vic2NyaXB0aW9uXCIpXG4gICAgICB0aGlzLnN1YnNjcmlwdGlvblN0YXRlID0gXCJjb25uZWN0aW5nXCJcbiAgICAgIHRoaXMucmVzZXRTdWJzY3JpcHRpb25SZWFkeVByb21pc2UoKVxuXG4gICAgICB0aGlzLnN1YnNjcmlwdGlvbiA9IGNoYW5uZWxzQ29uc3VtZXIoKS5zdWJzY3JpcHRpb25zLmNyZWF0ZShcbiAgICAgICAge2NoYW5uZWw6IFwiQXBpTWFrZXI6OlJlcXVlc3RzQ2hhbm5lbFwifSxcbiAgICAgICAge1xuICAgICAgICAgIGNvbm5lY3RlZDogdGhpcy5vbkNvbm5lY3RlZCxcbiAgICAgICAgICBkaXNjb25uZWN0ZWQ6IHRoaXMub25EaXNjb25uZWN0ZWQsXG4gICAgICAgICAgcmVjZWl2ZWQ6IHRoaXMub25SZWNlaXZlZCxcbiAgICAgICAgICByZWplY3RlZDogdGhpcy5vblJlamVjdGVkXG4gICAgICAgIH1cbiAgICAgIClcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy5zdWJzY3JpcHRpb25cbiAgfVxuXG4gIC8qKiBAcmV0dXJucyB7UHJvbWlzZTx2b2lkPn0gKi9cbiAgd2FpdEZvclN1YnNjcmlwdGlvbiAoKSB7XG4gICAgdGhpcy5lbnN1cmVTdWJzY3JpcHRpb24oKVxuXG4gICAgaWYgKHRoaXMuc3Vic2NyaXB0aW9uU3RhdGUgPT0gXCJjb25uZWN0ZWRcIikge1xuICAgICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZSgpXG4gICAgfVxuXG4gICAgaWYgKCF0aGlzLnN1YnNjcmlwdGlvblJlYWR5UHJvbWlzZSkge1xuICAgICAgdGhpcy5yZXNldFN1YnNjcmlwdGlvblJlYWR5UHJvbWlzZSgpXG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMuc3Vic2NyaXB0aW9uUmVhZHlQcm9taXNlXG4gIH1cblxuICAvKiogQHJldHVybnMge3ZvaWR9ICovXG4gIHJlc2V0U3Vic2NyaXB0aW9uUmVhZHlQcm9taXNlICgpIHtcbiAgICB0aGlzLnN1YnNjcmlwdGlvblJlYWR5UHJvbWlzZSA9IG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICAgIHRoaXMucmVzb2x2ZVN1YnNjcmlwdGlvblJlYWR5UHJvbWlzZSA9IHJlc29sdmVcbiAgICAgIHRoaXMucmVqZWN0U3Vic2NyaXB0aW9uUmVhZHlQcm9taXNlID0gcmVqZWN0XG4gICAgfSlcbiAgfVxuXG4gIC8qKiBAcmV0dXJucyB7dm9pZH0gKi9cbiAgb25Db25uZWN0ZWQgPSAoKSA9PiB7XG4gICAgbG9nZ2VyLmRlYnVnKFwiV2Vic29ja2V0IHJlcXVlc3Qgc3Vic2NyaXB0aW9uIGNvbm5lY3RlZFwiKVxuICAgIHRoaXMuc3Vic2NyaXB0aW9uU3RhdGUgPSBcImNvbm5lY3RlZFwiXG4gICAgdGhpcy5yZXNvbHZlU3Vic2NyaXB0aW9uUmVhZHlQcm9taXNlPy4oKVxuICB9XG5cbiAgLyoqIEByZXR1cm5zIHt2b2lkfSAqL1xuICBvbkRpc2Nvbm5lY3RlZCA9ICgpID0+IHtcbiAgICBsb2dnZXIuZGVidWcoXCJXZWJzb2NrZXQgcmVxdWVzdCBzdWJzY3JpcHRpb24gZGlzY29ubmVjdGVkXCIpXG4gICAgdGhpcy5yZWplY3RQZW5kaW5nUmVxdWVzdHMobmV3IEVycm9yKFwiV2Vic29ja2V0IHJlcXVlc3Qgc3Vic2NyaXB0aW9uIGRpc2Nvbm5lY3RlZFwiKSlcbiAgICB0aGlzLnN1YnNjcmlwdGlvblN0YXRlID0gXCJkaXNjb25uZWN0ZWRcIlxuICAgIHRoaXMuc3Vic2NyaXB0aW9uID0gbnVsbFxuICAgIHRoaXMucmVzZXRTdWJzY3JpcHRpb25SZWFkeVByb21pc2UoKVxuICB9XG5cbiAgLyoqIEByZXR1cm5zIHt2b2lkfSAqL1xuICBvblJlamVjdGVkID0gKCkgPT4ge1xuICAgIGNvbnN0IGVycm9yID0gbmV3IEVycm9yKFwiV2Vic29ja2V0IHJlcXVlc3Qgc3Vic2NyaXB0aW9uIHdhcyByZWplY3RlZFwiKVxuXG4gICAgbG9nZ2VyLmVycm9yKGVycm9yKVxuICAgIHRoaXMucmVqZWN0UGVuZGluZ1JlcXVlc3RzKGVycm9yKVxuICAgIHRoaXMuc3Vic2NyaXB0aW9uU3RhdGUgPSBcInJlamVjdGVkXCJcbiAgICB0aGlzLnN1YnNjcmlwdGlvbiA9IG51bGxcbiAgICB0aGlzLnJlamVjdFN1YnNjcmlwdGlvblJlYWR5UHJvbWlzZT8uKGVycm9yKVxuICAgIHRoaXMucmVzZXRTdWJzY3JpcHRpb25SZWFkeVByb21pc2UoKVxuICB9XG5cbiAgLyoqXG4gICAqIEBwYXJhbSB7UmVjb3JkPHN0cmluZywgYW55Pn0gZGF0YVxuICAgKiBAcmV0dXJucyB7dm9pZH1cbiAgICovXG4gIG9uUmVjZWl2ZWQgPSAoZGF0YSkgPT4ge1xuICAgIGNvbnN0IHBlbmRpbmdSZXF1ZXN0ID0gdGhpcy5wZW5kaW5nUmVxdWVzdHNbZGF0YS5yZXF1ZXN0X2lkXVxuXG4gICAgaWYgKCFwZW5kaW5nUmVxdWVzdCkge1xuICAgICAgbG9nZ2VyLmRlYnVnKCgpID0+IFtcIklnbm9yaW5nIHdlYnNvY2tldCByZXNwb25zZSB3aXRob3V0IGEgcGVuZGluZyByZXF1ZXN0XCIsIHtkYXRhfV0pXG4gICAgICByZXR1cm5cbiAgICB9XG5cbiAgICBpZiAoZGF0YS50eXBlID09IFwiYXBpX21ha2VyX2NvbW1hbmRfbG9nXCIpIHtcbiAgICAgIHBlbmRpbmdSZXF1ZXN0Lm9uTG9nQ2FsbGJhY2tzLmZvckVhY2goKGNhbGxiYWNrKSA9PiBjYWxsYmFjayhkYXRhLm1lc3NhZ2UpKVxuICAgIH0gZWxzZSBpZiAoZGF0YS50eXBlID09IFwiYXBpX21ha2VyX2NvbW1hbmRfcHJvZ3Jlc3NcIikge1xuICAgICAgY29uc3QgcHJvZ3Jlc3NEYXRhID0ge1xuICAgICAgICBjb3VudDogZGF0YS5jb3VudCxcbiAgICAgICAgcHJvZ3Jlc3M6IGRhdGEucHJvZ3Jlc3MsXG4gICAgICAgIHRvdGFsOiBkYXRhLnRvdGFsXG4gICAgICB9XG5cbiAgICAgIHBlbmRpbmdSZXF1ZXN0Lm9uUHJvZ3Jlc3NDYWxsYmFja3MuZm9yRWFjaCgoY2FsbGJhY2spID0+IGNhbGxiYWNrKHByb2dyZXNzRGF0YSkpXG4gICAgfSBlbHNlIGlmIChkYXRhLnR5cGUgPT0gXCJhcGlfbWFrZXJfcmVxdWVzdF9yZWNlaXZlZFwiKSB7XG4gICAgICBwZW5kaW5nUmVxdWVzdC5vblJlY2VpdmVkQ2FsbGJhY2tzLmZvckVhY2goKGNhbGxiYWNrKSA9PiBjYWxsYmFjayhkYXRhKSlcbiAgICB9IGVsc2UgaWYgKGRhdGEudHlwZSA9PSBcImFwaV9tYWtlcl9yZXF1ZXN0X3Jlc3BvbnNlXCIpIHtcbiAgICAgIGRlbGV0ZSB0aGlzLnBlbmRpbmdSZXF1ZXN0c1tkYXRhLnJlcXVlc3RfaWRdXG5cbiAgICAgIGlmIChwZW5kaW5nUmVxdWVzdC5jYWNoZVJlc3BvbnNlKSB7XG4gICAgICAgIHRoaXMucmVzcG9uc2VDYWNoZVtwZW5kaW5nUmVxdWVzdC5maW5nZXJwcmludF0gPSBkYXRhLnJlc3BvbnNlXG4gICAgICB9XG5cbiAgICAgIHBlbmRpbmdSZXF1ZXN0LnJlc29sdmUoZGF0YS5yZXNwb25zZSlcbiAgICB9IGVsc2UgaWYgKGRhdGEudHlwZSA9PSBcImFwaV9tYWtlcl9yZXF1ZXN0X2Vycm9yXCIpIHtcbiAgICAgIGRlbGV0ZSB0aGlzLnBlbmRpbmdSZXF1ZXN0c1tkYXRhLnJlcXVlc3RfaWRdXG4gICAgICBwZW5kaW5nUmVxdWVzdC5yZWplY3QobmV3IEN1c3RvbUVycm9yKFwiV2Vic29ja2V0IHJlcXVlc3QgZmFpbGVkXCIsIHtyZXNwb25zZTogZGF0YS5yZXNwb25zZX0pKVxuICAgIH0gZWxzZSB7XG4gICAgICBkZWxldGUgdGhpcy5wZW5kaW5nUmVxdWVzdHNbZGF0YS5yZXF1ZXN0X2lkXVxuICAgICAgcGVuZGluZ1JlcXVlc3QucmVqZWN0KG5ldyBFcnJvcihgVW5rbm93biB3ZWJzb2NrZXQgcmVxdWVzdCByZXNwb25zZSB0eXBlOiAke2RhdGEudHlwZX1gKSlcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogQHBhcmFtIHtFcnJvcn0gZXJyb3JcbiAgICogQHJldHVybnMge3ZvaWR9XG4gICAqL1xuICByZWplY3RQZW5kaW5nUmVxdWVzdHMgKGVycm9yKSB7XG4gICAgY29uc3QgcGVuZGluZ1JlcXVlc3RzID0gdGhpcy5wZW5kaW5nUmVxdWVzdHNcblxuICAgIHRoaXMucGVuZGluZ1JlcXVlc3RzID0ge31cbiAgICB0aGlzLnBlbmRpbmdSZXF1ZXN0c0J5RmluZ2VycHJpbnQgPSB7fVxuXG4gICAgT2JqZWN0LnZhbHVlcyhwZW5kaW5nUmVxdWVzdHMpLmZvckVhY2goKHBlbmRpbmdSZXF1ZXN0KSA9PiB7XG4gICAgICBxdWV1ZU1pY3JvdGFzaygoKSA9PiBwZW5kaW5nUmVxdWVzdC5yZWplY3QoZXJyb3IpKVxuICAgIH0pXG4gIH1cbn1cbiJdfQ==
|