@aerokit/sdk 14.76.0 → 14.82.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cjs/core/configurations.js +19 -1
- package/dist/cjs/etcd/client.js +1 -1
- package/dist/cjs/http/client-async.js +2 -2
- package/dist/cjs/qldb/qldb.js +1 -1
- package/dist/dts/core/configurations.d.ts +56 -0
- package/dist/dts/etcd/client.d.ts +5 -0
- package/dist/dts/qldb/qldb.d.ts +4 -0
- package/dist/esm/core/configurations.mjs +19 -1
- package/dist/esm/etcd/client.mjs +1 -1
- package/dist/esm/http/client-async.mjs +2 -2
- package/dist/esm/qldb/qldb.mjs +1 -1
- package/package.json +1 -1
- package/test/flows/list.js +35 -2
- package/test/form.js +36 -2
- package/dist/cjs/kafka/consumer.js +0 -71
- package/dist/cjs/kafka/index.js +0 -29
- package/dist/cjs/kafka/producer.js +0 -72
- package/dist/dts/kafka/consumer.d.ts +0 -79
- package/dist/dts/kafka/index.d.ts +0 -15
- package/dist/dts/kafka/producer.d.ts +0 -81
- package/dist/esm/kafka/consumer.mjs +0 -52
- package/dist/esm/kafka/index.mjs +0 -9
- package/dist/esm/kafka/producer.mjs +0 -53
|
@@ -161,7 +161,7 @@ function createHttpResponseCallback(httpClient2, successCallback, errorCallback,
|
|
|
161
161
|
);
|
|
162
162
|
}
|
|
163
163
|
function createSuccessCallback(callback) {
|
|
164
|
-
return "(function(httpResponse, isBinary, context) {\nvar response = {};\nresponse.statusCode = httpResponse.
|
|
164
|
+
return "(function(httpResponse, isBinary, context) {\nvar response = {};\nresponse.statusCode = httpResponse.getCode();\nresponse.statusMessage = httpResponse.getReasonPhrase();\nresponse.protocol = httpResponse.getVersion();\nresponse.binary = isBinary;\nvar headers = httpResponse.getHeaders();\nresponse.headers = [];\nfor (var i = 0; i < headers.length; i ++) {\n response.headers.push({\n name: headers[i].getName(),\n value: headers[i].getValue()\n });\n}\nif (isBinary) {\n response.data = httpResponse.getBodyBytes();\n} else {\n response.text = httpResponse.getBodyText();\n}\n(" + callback + ")(response, JSON.parse(context));\n})(__context.get('response'), __context.get('httpClientRequestOptions').isBinary(), __context.get('httpClientRequestOptions').getContext());\n";
|
|
165
165
|
}
|
|
166
166
|
function createErrorCallback(callback) {
|
|
167
167
|
if (callback) {
|
|
@@ -202,4 +202,4 @@ export {
|
|
|
202
202
|
HttpAsyncClient,
|
|
203
203
|
getInstance
|
|
204
204
|
};
|
|
205
|
-
//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vc3JjL2h0dHAvY2xpZW50LWFzeW5jLnRzIl0sCiAgInNvdXJjZXNDb250ZW50IjogWyIvKipcbiAqIEBtb2R1bGUgaHR0cC9jbGllbnQtYXN5bmNcbiAqIEBwYWNrYWdlIEBhZXJva2l0L3Nkay9odHRwXG4gKiBAbmFtZSBIdHRwQXN5bmNDbGllbnRcbiAqIEBvdmVydmlld1xuICogXG4gKiBUaGUgSHR0cEFzeW5jQ2xpZW50IGNsYXNzIHByb3ZpZGVzIGEgSmF2YVNjcmlwdC9UeXBlU2NyaXB0IHdyYXBwZXIgKEZhY2FkZSkgZm9yIG1ha2luZyBhc3luY2hyb25vdXMgSFRUUCByZXF1ZXN0cyB1c2luZyB0aGUgdW5kZXJseWluZyBKYXZhIEhUVFAgY2xpZW50LiBJdCBhbGxvd3MgZGV2ZWxvcGVycyB0byBwZXJmb3JtIG5vbi1ibG9ja2luZyBIVFRQIG9wZXJhdGlvbnMgYnkgZGVmaW5pbmcgc3VjY2VzcywgZXJyb3IsIGFuZCBjYW5jZWwgY2FsbGJhY2tzIGFzIHN0cmluZ3Mgb2YgZXhlY3V0YWJsZSBKYXZhU2NyaXB0IGNvZGUuIFRoZSBjbGFzcyBzdXBwb3J0cyBhbGwgc3RhbmRhcmQgSFRUUCBtZXRob2RzIChHRVQsIFBPU1QsIFBVVCwgUEFUQ0gsIERFTEVURSwgSEVBRCwgVFJBQ0UpIGFuZCBhY2NlcHRzIGEgY29tcHJlaGVuc2l2ZSBzZXQgb2YgcmVxdWVzdCBvcHRpb25zIHRoYXQgbWlycm9yIHRoZSBjYXBhYmlsaXRpZXMgb2YgdGhlIEphdmEgY2xpZW50LlxuICogXG4gKiAjIyMgS2V5IEZlYXR1cmVzOlxuICogLSAqKkFzeW5jaHJvbm91cyBFeGVjdXRpb24qKjogQWxsIEhUVFAgbWV0aG9kcyByZXR1cm4gaW1tZWRpYXRlbHksIHdpdGggY2FsbGJhY2tzIGV4ZWN1dGVkIHVwb24gY29tcGxldGlvbi5cbiAqIC0gKipDb21wcmVoZW5zaXZlIFJlcXVlc3QgT3B0aW9ucyoqOiBTdXBwb3J0cyBhIHdpZGUgcmFuZ2Ugb2YgY29uZmlndXJhdGlvbiBvcHRpb25zIGZvciBmaW5lLXR1bmluZyBIVFRQIHJlcXVlc3RzLlxuICogLSAqKkNhbGxiYWNrIEZsZXhpYmlsaXR5Kio6IENhbGxiYWNrcyBhcmUgZGVmaW5lZCBhcyBzdHJpbmdzIG9mIEphdmFTY3JpcHQgY29kZSwgYWxsb3dpbmcgZm9yIGR5bmFtaWMgZXhlY3V0aW9uIGluIHRoZSBKVk0gZW52aXJvbm1lbnQuXG4gKiBcbiAqICMjIyBVc2UgQ2FzZXM6XG4gKiAtICoqTm9uLWJsb2NraW5nIEFQSSBDYWxscyoqOiBJZGVhbCBmb3Igc2NlbmFyaW9zIHdoZXJlIHlvdSB3YW50IHRvIHBlcmZvcm0gSFRUUCByZXF1ZXN0cyB3aXRob3V0IGJsb2NraW5nIHRoZSBtYWluIGV4ZWN1dGlvbiB0aHJlYWQuXG4gKiAtICoqQ29tcGxleCBSZXF1ZXN0IENvbmZpZ3VyYXRpb25zKio6IFN1aXRhYmxlIGZvciBhZHZhbmNlZCB1c2UgY2FzZXMgdGhhdCByZXF1aXJlIGRldGFpbGVkIHJlcXVlc3QgY29uZmlndXJhdGlvbnMgYW5kIGhhbmRsaW5nLlxuICogXG4gKiAjIyMgRXhhbXBsZSBVc2FnZTpcbiAqIGBgYHRzXG4gKiBpbXBvcnQgeyBIdHRwQXN5bmNDbGllbnQgfSBmcm9tIFwiQGFlcm9raXQvc2RrL2h0dHBcIjtcbiAqIFxuICogY29uc3QgY2xpZW50ID0gSHR0cEFzeW5jQ2xpZW50LmdldEluc3RhbmNlKCk7XG4gKiBcbiAqIGNsaWVudC5nZXRBc3luYyhcImh0dHBzOi8vYXBpLmV4YW1wbGUuY29tL2RhdGFcIiwge1xuICogICBzdWNjZXNzOiBcImZ1bmN0aW9uKHJlc3BvbnNlKSB7IGNvbnNvbGUubG9nKCdTdWNjZXNzOicsIHJlc3BvbnNlKTsgfVwiLFxuICogICBlcnJvcjogXCJmdW5jdGlvbihlcnJvcikgeyBjb25zb2xlLmVycm9yKCdFcnJvcjonLCBlcnJvcik7IH1cIlxuICogfSwge1xuICogICBoZWFkZXJzOiBbeyBuYW1lOiAnQXV0aG9yaXphdGlvbicsIHZhbHVlOiAnQmVhcmVyIHRva2VuJyB9XSxcbiAqICAgcGFyYW1zOiBbeyBuYW1lOiAncXVlcnknLCB2YWx1ZTogJ3NlYXJjaCB0ZXJtJyB9XVxuICogfSk7XG4gKiBgYGBcbiAqL1xuXG4vLyAtLS0gU2hhcmVkIEludGVyZmFjZXMgKGZvciBkb2N1bWVudGF0aW9uIGNsYXJpdHkpIC0tLVxuXG4vKiogRGVmaW5lcyBhIHNpbmdsZSBIVFRQIGhlYWRlciwgdXNlZCBmb3IgYm90aCByZXF1ZXN0IGFuZCByZXNwb25zZS4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgSHR0cENsaWVudEhlYWRlciB7XG4gICAgLyoqIFRoZSBuYW1lIG9mIHRoZSBoZWFkZXIgKGUuZy4sICdDb250ZW50LVR5cGUnLCAnQXV0aG9yaXphdGlvbicpLiAqL1xuICAgIG5hbWU6IHN0cmluZztcbiAgICAvKiogVGhlIHZhbHVlIG9mIHRoZSBoZWFkZXIuICovXG4gICAgdmFsdWU6IHN0cmluZztcbn1cblxuLyoqIERlZmluZXMgYSBxdWVyeSBwYXJhbWV0ZXIgdGhhdCB3aWxsIGJlIGFwcGVuZGVkIHRvIHRoZSBVUkwuICovXG5leHBvcnQgaW50ZXJmYWNlIEh0dHBDbGllbnRQYXJhbSB7XG4gICAgLyoqIFRoZSBuYW1lIG9mIHRoZSBVUkwgcXVlcnkgcGFyYW1ldGVyIChlLmcuLCAnaWQnKS4gKi9cbiAgICBuYW1lOiBzdHJpbmc7XG4gICAgLyoqIFRoZSB2YWx1ZSBvZiB0aGUgVVJMIHF1ZXJ5IHBhcmFtZXRlci4gKi9cbiAgICB2YWx1ZTogc3RyaW5nO1xufVxuXG4vKiogRGVmaW5lcyBhIGZpbGUgdG8gYmUgaW5jbHVkZWQgaW4gYSBtdWx0aS1wYXJ0IGZvcm0gZGF0YSByZXF1ZXN0LiAqL1xuZXhwb3J0IGludGVyZmFjZSBIdHRwQ2xpZW50RmlsZSB7XG4gICAgLyoqIFRoZSBmb3JtIGZpZWxkIG5hbWUgZm9yIHRoZSBmaWxlLiAqL1xuICAgIG5hbWU6IHN0cmluZztcbiAgICAvKiogVGhlIGZpbGUgcGF0aCBvciBjb250ZW50LiAqL1xuICAgIHZhbHVlOiBzdHJpbmc7XG59XG5cbi8qKiBDb25maWd1cmF0aW9uIG9wdGlvbnMgZm9yIGFuIEhUVFAgcmVxdWVzdCwgbWlycm9yaW5nIHRoZSBjYXBhYmlsaXRpZXMgb2YgdGhlIHVuZGVybHlpbmcgSmF2YSBjbGllbnQuICovXG5leHBvcnQgaW50ZXJmYWNlIEh0dHBDbGllbnRSZXF1ZXN0T3B0aW9ucyB7XG4gICAgZXhwZWN0Q29udGludWVFbmFibGVkPzogYm9vbGVhbjtcbiAgICBwcm94eUhvc3Q/OiBzdHJpbmc7XG4gICAgcHJveHlQb3J0PzogbnVtYmVyO1xuICAgIGNvb2tpZVNwZWM/OiBzdHJpbmc7XG4gICAgcmVkaXJlY3RzRW5hYmxlZD86IGJvb2xlYW47XG4gICAgcmVsYXRpdmVSZWRpcmVjdHNBbGxvd2VkPzogYm9vbGVhbjtcbiAgICBjaXJjdWxhclJlZGlyZWN0c0FsbG93ZWQ/OiBib29sZWFuO1xuICAgIG1heFJlZGlyZWN0cz86IG51bWJlcjtcbiAgICBhdXRoZW50aWNhdGlvbkVuYWJsZWQ/OiBib29sZWFuO1xuICAgIHRhcmdldFByZWZlcnJlZEF1dGhTY2hlbWVzPzogc3RyaW5nW107XG4gICAgcHJveHlQcmVmZXJyZWRBdXRoU2NoZW1lcz86IHN0cmluZ1tdO1xuICAgIGNvbm5lY3Rpb25SZXF1ZXN0VGltZW91dD86IG51bWJlcjtcbiAgICBjb25uZWN0VGltZW91dD86IG51bWJlcjtcbiAgICBzb2NrZXRUaW1lb3V0PzogbnVtYmVyO1xuICAgIGNvbnRlbnRDb21wcmVzc2lvbkVuYWJsZWQ/OiBib29sZWFuO1xuICAgIHNzbFRydXN0QWxsRW5hYmxlZD86IGJvb2xlYW47XG4gICAgZGF0YT86IGFueVtdO1xuICAgIHRleHQ/OiBzdHJpbmc7XG4gICAgZmlsZXM/OiBIdHRwQ2xpZW50RmlsZVtdO1xuICAgIGNoYXJhY3RlckVuY29kaW5nPzogc3RyaW5nO1xuICAgIGNoYXJhY3RlckVuY29kaW5nRW5hYmxlZD86IGJvb2xlYW47XG4gICAgY29udGVudFR5cGU/OiBzdHJpbmc7XG4gICAgaGVhZGVycz86IEh0dHBDbGllbnRIZWFkZXJbXTtcbiAgICBwYXJhbXM/OiBIdHRwQ2xpZW50UGFyYW1bXTtcbiAgICBiaW5hcnk/OiBib29sZWFuO1xuICAgIGNvbnRleHQ/OiB7IFtrZXk6IHN0cmluZ106IGFueSB9O1xufVxuXG4vKiogVGhlIHN0cnVjdHVyZSBvZiB0aGUgcmVzcG9uc2UgcmV0dXJuZWQgYnkgdGhlIEh0dHBDbGllbnQgbWV0aG9kcy4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgSHR0cENsaWVudFJlc3BvbnNlIHtcbiAgICAvKiogVGhlIEhUVFAgc3RhdHVzIGNvZGUgKGUuZy4sIDIwMCwgNDA0LCA1MDApLiAqL1xuICAgIHN0YXR1c0NvZGU6IG51bWJlcjtcbiAgICAvKiogVGhlIHN0YXR1cyBtZXNzYWdlIHJldHVybmVkIGJ5IHRoZSBzZXJ2ZXIgKGUuZy4sICdPSycsICdOb3QgRm91bmQnKS4gKi9cbiAgICBzdGF0dXNNZXNzYWdlOiBzdHJpbmc7XG4gICAgLyoqIFJlc3BvbnNlIGJvZHkgY29udGVudCBhcyBhbiBhcnJheSBvZiBieXRlcyAoaWYgcmVxdWVzdGVkIGFzIGJpbmFyeSkuICovXG4gICAgZGF0YTogYW55W107XG4gICAgLyoqIFJlc3BvbnNlIGJvZHkgY29udGVudCBhcyBhIGRlY29kZWQgc3RyaW5nLiAqL1xuICAgIHRleHQ6IHN0cmluZztcbiAgICAvKiogVGhlIHByb3RvY29sIHVzZWQgKGUuZy4sICdIVFRQLzEuMScpLiAqL1xuICAgIHByb3RvY29sOiBzdHJpbmc7XG4gICAgLyoqIEluZGljYXRlcyBpZiB0aGUgcmVzcG9uc2Ugd2FzIHByb2Nlc3NlZCBhcyBiaW5hcnkgZGF0YS4gKi9cbiAgICBiaW5hcnk6IGJvb2xlYW47XG4gICAgLyoqIEFycmF5IG9mIGFsbCBoZWFkZXJzIHJlY2VpdmVkIGluIHRoZSByZXNwb25zZS4gKi9cbiAgICBoZWFkZXJzOiBIdHRwQ2xpZW50SGVhZGVyW11cbn1cblxuLy8gLS0tIEFzeW5jaHJvbm91cyBDbGllbnQgSW50ZXJmYWNlcyAtLS1cblxuLyoqXG4gKiBEZWZpbmVzIHRoZSBjYWxsYmFjayBzdHJ1Y3R1cmUgZm9yIGFzeW5jaHJvbm91cyByZXF1ZXN0cy5cbiAqIE5vdGU6IENhbGxiYWNrcyBhcmUgcHJvdmlkZWQgYXMgc3RyaW5ncyBjb250YWluaW5nIGV4ZWN1dGFibGUgSmF2YVNjcmlwdCBjb2RlLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIEh0dHBDbGllbnRBc3luY0NvbmZpZyB7XG4gICAgLyoqXG4gICAgICogTWFuZGF0b3J5IHN1Y2Nlc3MgY2FsbGJhY2sgYXMgYSAqKnN0cmluZyBvZiBKYXZhU2NyaXB0IGNvZGUqKi5cbiAgICAgKiBJdCB3aWxsIGJlIGV4ZWN1dGVkIHdpdGggc2lnbmF0dXJlOiBgKHJlc3BvbnNlOiBIdHRwQ2xpZW50UmVzcG9uc2UsIGNvbnRleHQ6IHsgW2tleTogc3RyaW5nXTogYW55IH0pID0+IHZvaWRgXG4gICAgICovXG4gICAgc3VjY2Vzczogc3RyaW5nO1xuICAgIC8qKlxuICAgICAqIE9wdGlvbmFsIGVycm9yIGNhbGxiYWNrIGFzIGEgKipzdHJpbmcgb2YgSmF2YVNjcmlwdCBjb2RlKiouXG4gICAgICogSXQgd2lsbCBiZSBleGVjdXRlZCB3aXRoIHNpZ25hdHVyZTogYChleGNlcHRpb246IGFueSkgPT4gdm9pZGBcbiAgICAgKi9cbiAgICBlcnJvcj86IHN0cmluZztcbiAgICAvKipcbiAgICAgKiBPcHRpb25hbCBjYW5jZWwgY2FsbGJhY2sgYXMgYSAqKnN0cmluZyBvZiBKYXZhU2NyaXB0IGNvZGUqKi5cbiAgICAgKiBJdCB3aWxsIGJlIGV4ZWN1dGVkIHdpdGggc2lnbmF0dXJlOiBgKCkgPT4gdm9pZGBcbiAgICAgKi9cbiAgICBjYW5jZWw/OiBzdHJpbmc7XG59XG5cblxuLy8gLS0tIEphdmEgVHlwZSBJbXBvcnRzIChDcnVjaWFsIGZvciBKVk0gaW50ZWdyYXRpb24pIC0tLVxuXG4vKiogSW1wb3J0cyB0aGUgbmF0aXZlIEphdmEgY2xhc3MgcmVzcG9uc2libGUgZm9yIGFzeW5jaHJvbm91cyBIVFRQIGV4ZWN1dGlvbi4gKi9cbmNvbnN0IEh0dHBDbGllbnRBc3luY0ZhY2FkZSA9IEphdmEudHlwZShcIm9yZy5lY2xpcHNlLmRpcmlnaWJsZS5jb21wb25lbnRzLmFwaS5odHRwLkh0dHBDbGllbnRBc3luY0ZhY2FkZVwiKTtcblxuLyoqIEltcG9ydHMgdGhlIG5hdGl2ZSBKYXZhIGNsYXNzIGZvciByZXRyaWV2aW5nIFNwcmluZy1tYW5hZ2VkIGJlYW5zLiAqL1xuY29uc3QgU3ByaW5nQmVhblByb3ZpZGVyID0gSmF2YS50eXBlKFwib3JnLmVjbGlwc2UuZGlyaWdpYmxlLmNvbXBvbmVudHMuc3ByaW5nLlNwcmluZ0JlYW5Qcm92aWRlclwiKTtcblxuLyoqIFJldHJpZXZlcyB0aGUgc2luZ2xldG9uIGluc3RhbmNlIG9mIHRoZSBhc3luY2hyb25vdXMgSFRUUCBjbGllbnQgZnJvbSB0aGUgU3ByaW5nIGNvbnRleHQuICovXG5jb25zdCBodHRwQ2xpZW50ID0gU3ByaW5nQmVhblByb3ZpZGVyLmdldEJlYW4oSHR0cENsaWVudEFzeW5jRmFjYWRlLmNsYXNzKTtcblxuXG4vKipcbiAqIFRoZSBhc3luY2hyb25vdXMgSFRUUCBjbGllbnQgY2xhc3MuIEFsbCByZXF1ZXN0IG1ldGhvZHMgcmV0dXJuIGltbWVkaWF0ZWx5XG4gKiBhbmQgZXhlY3V0ZSBjYWxsYmFja3MgdXBvbiBjb21wbGV0aW9uLlxuICovXG5leHBvcnQgY2xhc3MgSHR0cEFzeW5jQ2xpZW50IHtcblxuICAgIC8qKlxuICAgICAqIEV4ZWN1dGVzIGFuIGFzeW5jaHJvbm91cyBIVFRQIEdFVCByZXF1ZXN0LlxuICAgICAqIEBwYXJhbSB1cmwgVGhlIHRhcmdldCBVUkwuXG4gICAgICogQHBhcmFtIGNvbmZpZyBUaGUgY2FsbGJhY2sgY29uZmlndXJhdGlvbiBvYmplY3QuXG4gICAgICogQHBhcmFtIG9wdGlvbnMgUmVxdWVzdCBjb25maWd1cmF0aW9uIG9wdGlvbnMgKGUuZy4sIGhlYWRlcnMsIGJvZHksIHBhcmFtcykuXG4gICAgICovXG5cdGdldEFzeW5jKHVybDogc3RyaW5nLCBjb25maWc6IEh0dHBDbGllbnRBc3luY0NvbmZpZywgb3B0aW9ucz86IEh0dHBDbGllbnRSZXF1ZXN0T3B0aW9ucyk6IHZvaWQge1xuXHRcdGNvbnN0IG5ld1VybCA9IGJ1aWxkVXJsKHVybCwgb3B0aW9ucyk7XG5cdFx0Y29uc3QgY2FsbGJhY2sgPSBjcmVhdGVIdHRwUmVzcG9uc2VDYWxsYmFjayhcblx0XHRcdGh0dHBDbGllbnQsXG5cdFx0XHRjb25maWcuc3VjY2Vzcyxcblx0XHRcdGNvbmZpZy5lcnJvcixcblx0XHRcdGNvbmZpZy5jYW5jZWxcblx0XHQpO1xuXHRcdGlmIChvcHRpb25zKSB7XG5cdFx0XHRodHRwQ2xpZW50LmdldEFzeW5jKG5ld1VybCwgSlNPTi5zdHJpbmdpZnkob3B0aW9ucyksIGNhbGxiYWNrKTtcblx0XHR9IGVsc2Uge1xuXHRcdFx0aHR0cENsaWVudC5nZXRBc3luYyhuZXdVcmwsIEpTT04uc3RyaW5naWZ5KHt9KSwgY2FsbGJhY2spO1xuXHRcdH1cblx0fTtcblxuICAgIC8qKlxuICAgICAqIEV4ZWN1dGVzIGFuIGFzeW5jaHJvbm91cyBIVFRQIFBPU1QgcmVxdWVzdC5cbiAgICAgKiBAcGFyYW0gdXJsIFRoZSB0YXJnZXQgVVJMLlxuICAgICAqIEBwYXJhbSBjb25maWcgVGhlIGNhbGxiYWNrIGNvbmZpZ3VyYXRpb24gb2JqZWN0LlxuICAgICAqIEBwYXJhbSBvcHRpb25zIFJlcXVlc3QgY29uZmlndXJhdGlvbiBvcHRpb25zLlxuICAgICAqL1xuXHRwb3N0QXN5bmModXJsOiBzdHJpbmcsIGNvbmZpZzogSHR0cENsaWVudEFzeW5jQ29uZmlnLCBvcHRpb25zPzogSHR0cENsaWVudFJlcXVlc3RPcHRpb25zKTogdm9pZCB7XG5cdFx0Y29uc3QgbmV3VXJsID0gYnVpbGRVcmwodXJsLCBvcHRpb25zKTtcblx0XHRjb25zdCBjYWxsYmFjayA9IGNyZWF0ZUh0dHBSZXNwb25zZUNhbGxiYWNrKFxuXHRcdFx0aHR0cENsaWVudCxcblx0XHRcdGNvbmZpZy5zdWNjZXNzLFxuXHRcdFx0Y29uZmlnLmVycm9yLFxuXHRcdFx0Y29uZmlnLmNhbmNlbFxuXHRcdCk7XG5cdFx0aWYgKG9wdGlvbnMpIHtcblx0XHRcdGh0dHBDbGllbnQucG9zdEFzeW5jKG5ld1VybCwgSlNPTi5zdHJpbmdpZnkob3B0aW9ucyksIGNhbGxiYWNrKTtcblx0XHR9IGVsc2Uge1xuXHRcdFx0aHR0cENsaWVudC5wb3N0QXN5bmMobmV3VXJsLCBKU09OLnN0cmluZ2lmeSh7fSksIGNhbGxiYWNrKTtcblx0XHR9XG5cdH07XG5cbiAgICAvKipcbiAgICAgKiBFeGVjdXRlcyBhbiBhc3luY2hyb25vdXMgSFRUUCBQVVQgcmVxdWVzdC5cbiAgICAgKiBAcGFyYW0gdXJsIFRoZSB0YXJnZXQgVVJMLlxuICAgICAqIEBwYXJhbSBjb25maWcgVGhlIGNhbGxiYWNrIGNvbmZpZ3VyYXRpb24gb2JqZWN0LlxuICAgICAqIEBwYXJhbSBvcHRpb25zIFJlcXVlc3QgY29uZmlndXJhdGlvbiBvcHRpb25zLlxuICAgICAqL1xuXHRwdXRBc3luYyh1cmw6IHN0cmluZywgY29uZmlnOiBIdHRwQ2xpZW50QXN5bmNDb25maWcsIG9wdGlvbnM/OiBIdHRwQ2xpZW50UmVxdWVzdE9wdGlvbnMpOiB2b2lkIHtcblx0XHRjb25zdCBuZXdVcmwgPSBidWlsZFVybCh1cmwsIG9wdGlvbnMpO1xuXHRcdGNvbnN0IGNhbGxiYWNrID0gY3JlYXRlSHR0cFJlc3BvbnNlQ2FsbGJhY2soXG5cdFx0XHRodHRwQ2xpZW50LFxuXHRcdFx0Y29uZmlnLnN1Y2Nlc3MsXG5cdFx0XHRjb25maWcuZXJyb3IsXG5cdFx0XHRjb25maWcuY2FuY2VsXG5cdFx0KTtcblx0XHRpZiAob3B0aW9ucykge1xuXHRcdFx0aHR0cENsaWVudC5wdXRBc3luYyhuZXdVcmwsIEpTT04uc3RyaW5naWZ5KG9wdGlvbnMpLCBjYWxsYmFjayk7XG5cdFx0fSBlbHNlIHtcblx0XHRcdGh0dHBDbGllbnQucHV0QXN5bmMobmV3VXJsLCBKU09OLnN0cmluZ2lmeSh7fSksIGNhbGxiYWNrKTtcblx0XHR9XG5cdH07XG5cbiAgICAvKipcbiAgICAgKiBFeGVjdXRlcyBhbiBhc3luY2hyb25vdXMgSFRUUCBQQVRDSCByZXF1ZXN0LlxuICAgICAqIEBwYXJhbSB1cmwgVGhlIHRhcmdldCBVUkwuXG4gICAgICogQHBhcmFtIGNvbmZpZyBUaGUgY2FsbGJhY2sgY29uZmlndXJhdGlvbiBvYmplY3QuXG4gICAgICogQHBhcmFtIG9wdGlvbnMgUmVxdWVzdCBjb25maWd1cmF0aW9uIG9wdGlvbnMuXG4gICAgICovXG5cdHBhdGNoQXN5bmModXJsOiBzdHJpbmcsIGNvbmZpZzogSHR0cENsaWVudEFzeW5jQ29uZmlnLCBvcHRpb25zPzogSHR0cENsaWVudFJlcXVlc3RPcHRpb25zKTogdm9pZCB7XG5cdFx0Y29uc3QgbmV3VXJsID0gYnVpbGRVcmwodXJsLCBvcHRpb25zKTtcblx0XHRjb25zdCBjYWxsYmFjayA9IGNyZWF0ZUh0dHBSZXNwb25zZUNhbGxiYWNrKFxuXHRcdFx0aHR0cENsaWVudCxcblx0XHRcdGNvbmZpZy5zdWNjZXNzLFxuXHRcdFx0Y29uZmlnLmVycm9yLFxuXHRcdFx0Y29uZmlnLmNhbmNlbFxuXHRcdCk7XG5cdFx0aWYgKG9wdGlvbnMpIHtcblx0XHRcdGh0dHBDbGllbnQucGF0Y2hBc3luYyhuZXdVcmwsIEpTT04uc3RyaW5naWZ5KG9wdGlvbnMpLCBjYWxsYmFjayk7XG5cdFx0fSBlbHNlIHtcblx0XHRcdGh0dHBDbGllbnQucGF0Y2hBc3luYyhuZXdVcmwsIEpTT04uc3RyaW5naWZ5KHt9KSwgY2FsbGJhY2spO1xuXHRcdH1cblx0fTtcblxuICAgIC8qKlxuICAgICAqIEV4ZWN1dGVzIGFuIGFzeW5jaHJvbm91cyBIVFRQIERFTEVURSByZXF1ZXN0LlxuICAgICAqIEBwYXJhbSB1cmwgVGhlIHRhcmdldCBVUkwuXG4gICAgICogQHBhcmFtIGNvbmZpZyBUaGUgY2FsbGJhY2sgY29uZmlndXJhdGlvbiBvYmplY3QuXG4gICAgICogQHBhcmFtIG9wdGlvbnMgUmVxdWVzdCBjb25maWd1cmF0aW9uIG9wdGlvbnMuXG4gICAgICovXG5cdGRlbGV0ZUFzeW5jKHVybDogc3RyaW5nLCBjb25maWc6IEh0dHBDbGllbnRBc3luY0NvbmZpZywgb3B0aW9ucz86IEh0dHBDbGllbnRSZXF1ZXN0T3B0aW9ucyk6IHZvaWQge1xuXHRcdGNvbnN0IG5ld1VybCA9IGJ1aWxkVXJsKHVybCwgb3B0aW9ucyk7XG5cdFx0Y29uc3QgY2FsbGJhY2sgPSBjcmVhdGVIdHRwUmVzcG9uc2VDYWxsYmFjayhcblx0XHRcdGh0dHBDbGllbnQsXG5cdFx0XHRjb25maWcuc3VjY2Vzcyxcblx0XHRcdGNvbmZpZy5lcnJvcixcblx0XHRcdGNvbmZpZy5jYW5jZWxcblx0XHQpO1xuXHRcdGlmIChvcHRpb25zKSB7XG5cdFx0XHRodHRwQ2xpZW50LmRlbGV0ZUFzeW5jKG5ld1VybCwgSlNPTi5zdHJpbmdpZnkob3B0aW9ucyksIGNhbGxiYWNrKTtcblx0XHR9IGVsc2Uge1xuXHRcdFx0aHR0cENsaWVudC5kZWxldGVBc3luYyhuZXdVcmwsIEpTT04uc3RyaW5naWZ5KHt9KSwgY2FsbGJhY2spO1xuXHRcdH1cblx0fTtcblxuICAgIC8qKlxuICAgICAqIEV4ZWN1dGVzIGFuIGFzeW5jaHJvbm91cyBIVFRQIEhFQUQgcmVxdWVzdC5cbiAgICAgKiBAcGFyYW0gdXJsIFRoZSB0YXJnZXQgVVJMLlxuICAgICAqIEBwYXJhbSBjb25maWcgVGhlIGNhbGxiYWNrIGNvbmZpZ3VyYXRpb24gb2JqZWN0LlxuICAgICAqIEBwYXJhbSBvcHRpb25zIFJlcXVlc3QgY29uZmlndXJhdGlvbiBvcHRpb25zLlxuICAgICAqL1xuXHRoZWFkQXN5bmModXJsOiBzdHJpbmcsIGNvbmZpZzogSHR0cENsaWVudEFzeW5jQ29uZmlnLCBvcHRpb25zPzogSHR0cENsaWVudFJlcXVlc3RPcHRpb25zKTogdm9pZCB7XG5cdFx0Y29uc3QgbmV3VXJsID0gYnVpbGRVcmwodXJsLCBvcHRpb25zKTtcblx0XHRjb25zdCBjYWxsYmFjayA9IGNyZWF0ZUh0dHBSZXNwb25zZUNhbGxiYWNrKFxuXHRcdFx0aHR0cENsaWVudCxcblx0XHRcdGNvbmZpZy5zdWNjZXNzLFxuXHRcdFx0Y29uZmlnLmVycm9yLFxuXHRcdFx0Y29uZmlnLmNhbmNlbFxuXHRcdCk7XG5cdFx0aWYgKG9wdGlvbnMpIHtcblx0XHRcdGh0dHBDbGllbnQuaGVhZEFzeW5jKG5ld1VybCwgSlNPTi5zdHJpbmdpZnkob3B0aW9ucyksIGNhbGxiYWNrKTtcblx0XHR9IGVsc2Uge1xuXHRcdFx0aHR0cENsaWVudC5oZWFkQXN5bmMobmV3VXJsLCBKU09OLnN0cmluZ2lmeSh7fSksIGNhbGxiYWNrKTtcblx0XHR9XG5cdH07XG5cbiAgICAvKipcbiAgICAgKiBFeGVjdXRlcyBhbiBhc3luY2hyb25vdXMgSFRUUCBUUkFDRSByZXF1ZXN0LlxuICAgICAqIEBwYXJhbSB1cmwgVGhlIHRhcmdldCBVUkwuXG4gICAgICogQHBhcmFtIGNvbmZpZyBUaGUgY2FsbGJhY2sgY29uZmlndXJhdGlvbiBvYmplY3QuXG4gICAgICogQHBhcmFtIG9wdGlvbnMgUmVxdWVzdCBjb25maWd1cmF0aW9uIG9wdGlvbnMuXG4gICAgICovXG5cdHRyYWNlQXN5bmModXJsOiBzdHJpbmcsIGNvbmZpZzogSHR0cENsaWVudEFzeW5jQ29uZmlnLCBvcHRpb25zPzogSHR0cENsaWVudFJlcXVlc3RPcHRpb25zKTogdm9pZCB7XG5cdFx0Y29uc3QgbmV3VXJsID0gYnVpbGRVcmwodXJsLCBvcHRpb25zKTtcblx0XHRjb25zdCBjYWxsYmFjayA9IGNyZWF0ZUh0dHBSZXNwb25zZUNhbGxiYWNrKFxuXHRcdFx0aHR0cENsaWVudCxcblx0XHRcdGNvbmZpZy5zdWNjZXNzLFxuXHRcdFx0Y29uZmlnLmVycm9yLFxuXHRcdFx0Y29uZmlnLmNhbmNlbFxuXHRcdCk7XG5cdFx0aWYgKG9wdGlvbnMpIHtcblx0XHRcdGh0dHBDbGllbnQudHJhY2VBc3luYyhuZXdVcmwsIEpTT04uc3RyaW5naWZ5KG9wdGlvbnMpLCBjYWxsYmFjayk7XG5cdFx0fSBlbHNlIHtcblx0XHRcdGh0dHBDbGllbnQudHJhY2VBc3luYyhuZXdVcmwsIEpTT04uc3RyaW5naWZ5KHt9KSwgY2FsbGJhY2spO1xuXHRcdH1cblx0fTtcblxuICAgIC8qKlxuICAgICAqIEluaXRpYXRlcyB0aGUgZXhlY3V0aW9uIG9mIHF1ZXVlZCBhc3luY2hyb25vdXMgcmVxdWVzdHMgKGRlcGVuZGluZyBvbiB0aGUgdW5kZXJseWluZyBKYXZhIGNsaWVudCdzIHRocmVhZGluZyBtb2RlbCkuXG4gICAgICovXG5cdGV4ZWN1dGUoKTogdm9pZCB7XG5cdFx0aHR0cENsaWVudC5leGVjdXRlKCk7XG5cdH07XG59XG5cbi8qKlxuICogRmFjdG9yeSBmdW5jdGlvbiB0byByZXRyaWV2ZSBhIG5ldyBpbnN0YW5jZSBvZiB0aGUgYXN5bmNocm9ub3VzIGNsaWVudC5cbiAqIEByZXR1cm5zIEEgbmV3IGluc3RhbmNlIG9mIEh0dHBBc3luY0NsaWVudC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldEluc3RhbmNlKCk6IEh0dHBBc3luY0NsaWVudCB7XG5cdHJldHVybiBuZXcgSHR0cEFzeW5jQ2xpZW50KCk7XG59O1xuXG4vKipcbiAqIENyZWF0ZXMgYSBuYXRpdmUgSmF2YSBjYWxsYmFjayBvYmplY3QgdGhhdCB3cmFwcyB0aGUgSmF2YVNjcmlwdCBzdWNjZXNzLCBlcnJvciwgYW5kIGNhbmNlbCBjYWxsYmFja3MuXG4gKiBUaGlzIGZ1bmN0aW9uIHVzZXMgdGhlIHVuZGVybHlpbmcgSmF2YSBIVFRQIGNsaWVudCBpbnN0YW5jZSB0byBnZW5lcmF0ZSB0aGUgZmluYWwgY2FsbGJhY2sgb2JqZWN0LlxuICogQHBhcmFtIGh0dHBDbGllbnQgVGhlIEphdmEgSHR0cENsaWVudEFzeW5jRmFjYWRlIGluc3RhbmNlLlxuICogQHBhcmFtIHN1Y2Nlc3NDYWxsYmFjayBKUyBjb2RlIHN0cmluZyBmb3Igc3VjY2Vzcy5cbiAqIEBwYXJhbSBlcnJvckNhbGxiYWNrIEpTIGNvZGUgc3RyaW5nIGZvciBlcnJvci5cbiAqIEBwYXJhbSBjYW5jZWxDYWxsYmFjayBKUyBjb2RlIHN0cmluZyBmb3IgY2FuY2VsLlxuICogQHJldHVybnMgQSBKYXZhIGNhbGxiYWNrIG9iamVjdC5cbiAqL1xuZnVuY3Rpb24gY3JlYXRlSHR0cFJlc3BvbnNlQ2FsbGJhY2soaHR0cENsaWVudDogYW55LCBzdWNjZXNzQ2FsbGJhY2s6IHN0cmluZywgZXJyb3JDYWxsYmFjaz86IHN0cmluZywgY2FuY2VsQ2FsbGJhY2s/OiBzdHJpbmcpOiBhbnkge1xuXHRyZXR1cm4gaHR0cENsaWVudC5jcmVhdGVDYWxsYmFjayhcblx0XHRjcmVhdGVTdWNjZXNzQ2FsbGJhY2soc3VjY2Vzc0NhbGxiYWNrKSxcblx0XHRjcmVhdGVFcnJvckNhbGxiYWNrKGVycm9yQ2FsbGJhY2spLFxuXHRcdGNyZWF0ZUNhbmNlbENhbGxiYWNrKGNhbmNlbENhbGxiYWNrKVxuXHQpO1xufVxuXG4vKipcbiAqIEdlbmVyYXRlcyB0aGUgcmF3IEphdmFTY3JpcHQgc3RyaW5nIHRoYXQgd2lsbCBiZSBleGVjdXRlZCBpbiB0aGUgSlZNIGVudmlyb25tZW50IHVwb24gc3VjY2Vzc2Z1bCByZXF1ZXN0IGNvbXBsZXRpb24uXG4gKiBUaGlzIHN0cmluZyBoYW5kbGVzIHBhcnNpbmcgdGhlIEphdmEgSFRUUCByZXNwb25zZSBvYmplY3QgYW5kIGV4ZWN1dGluZyB0aGUgdXNlcidzIGRlZmluZWQgY2FsbGJhY2sgZnVuY3Rpb24uXG4gKiBAcGFyYW0gY2FsbGJhY2sgVGhlIHVzZXItcHJvdmlkZWQgc3VjY2VzcyBjYWxsYmFjayBmdW5jdGlvbiBjb2RlIHN0cmluZy5cbiAqIEByZXR1cm5zIFRoZSBjb21wbGV4IEphdmFTY3JpcHQgc3RyaW5nIGZvciB0aGUgc3VjY2VzcyBoYW5kbGVyLlxuICovXG5mdW5jdGlvbiBjcmVhdGVTdWNjZXNzQ2FsbGJhY2soY2FsbGJhY2s6IHN0cmluZyk6IHN0cmluZyB7XG5cdC8vIE5vdGU6IFRoaXMgc3RyaW5nIHVzZXMgSmF2YSB1dGlsaXR5IGNsYXNzZXMgKG9yZy5hcGFjaGUuY29tbW9ucy5pby5JT1V0aWxzKSBhbmQgY29udGV4dCB2YXJpYWJsZXMgXG4gICAgLy8gKF9fY29udGV4dCkgdGhhdCBhcmUgYXZhaWxhYmxlIGluIHRoZSBzcGVjaWZpYyBKVk0gZW52aXJvbm1lbnQuXG4gICAgXG4gICAgLy8gVGhlIHN0cnVjdHVyZSBtYXBzIHRoZSBKYXZhIEhUVFAgUmVzcG9uc2Ugb2JqZWN0IGludG8gdGhlIHN0YW5kYXJkIEh0dHBDbGllbnRSZXNwb25zZSBpbnRlcmZhY2UuXG5cdHJldHVybiBcIihmdW5jdGlvbihodHRwUmVzcG9uc2UsIGlzQmluYXJ5LCBjb250ZXh0KSB7XFxuXCJcblx0XHQrIFwidmFyIHJlc3BvbnNlID0ge307XFxuXCJcblx0XHQrIFwicmVzcG9uc2Uuc3RhdHVzQ29kZSA9IGh0dHBSZXNwb25zZS5nZXRTdGF0dXNMaW5lKCkuZ2V0U3RhdHVzQ29kZSgpO1xcblwiXG5cdFx0KyBcInJlc3BvbnNlLnN0YXR1c01lc3NhZ2UgPSBodHRwUmVzcG9uc2UuZ2V0U3RhdHVzTGluZSgpLmdldFJlYXNvblBocmFzZSgpO1xcblwiXG5cdFx0KyBcInJlc3BvbnNlLnByb3RvY29sID0gaHR0cFJlc3BvbnNlLmdldFByb3RvY29sVmVyc2lvbigpO1xcblwiXG5cdFx0KyBcInJlc3BvbnNlLmJpbmFyeSA9IGlzQmluYXJ5O1xcblwiXG5cblx0XHQrIFwidmFyIGhlYWRlcnMgPSBodHRwUmVzcG9uc2UuZ2V0QWxsSGVhZGVycygpO1xcblwiXG5cdFx0KyBcInJlc3BvbnNlLmhlYWRlcnMgPSBbXTtcXG5cIlxuXHRcdCsgXCJmb3IgKHZhciBpID0gMDsgaSA8IGhlYWRlcnMubGVuZ3RoOyBpICsrKSB7XFxuXCJcblx0XHQrIFwiICAgIHJlc3BvbnNlLmhlYWRlcnMucHVzaCh7XFxuXCJcblx0XHQrIFwiICAgICAgICBuYW1lOiBoZWFkZXJzW2ldLmdldE5hbWUoKSxcXG5cIlxuXHRcdCsgXCIgICAgICAgIHZhbHVlOiBoZWFkZXJzW2ldLmdldFZhbHVlKClcXG5cIlxuXHRcdCsgXCIgICAgfSk7XFxuXCJcblx0XHQrIFwifVxcblwiXG5cblx0XHQrIFwidmFyIGVudGl0eSA9IGh0dHBSZXNwb25zZS5nZXRFbnRpdHkoKTtcXG5cIlxuXHRcdCsgXCJpZiAoZW50aXR5KSB7XFxuXCJcblx0XHQrIFwiICAgIHZhciBpbnB1dFN0cmVhbSA9IGVudGl0eS5nZXRDb250ZW50KCk7XFxuXCJcblx0XHQrIFwiICAgIGlmIChpc0JpbmFyeSkge1xcblwiXG5cdFx0KyBcIiAgICAgICAgLy8gVXNlcyBKYXZhIElPVXRpbHMgdG8gcmVhZCBiaW5hcnkgZGF0YVxcblwiXG5cdFx0KyBcIiAgICAgICAgcmVzcG9uc2UuZGF0YSA9IG9yZy5hcGFjaGUuY29tbW9ucy5pby5JT1V0aWxzLnRvQnl0ZUFycmF5KGlucHV0U3RyZWFtKTtcXG5cIlxuXHRcdCsgXCIgICAgfSBlbHNlIHtcXG5cIlxuXHRcdCsgXCIgICAgICAgIC8vIFVzZXMgSmF2YSBJT1V0aWxzIHRvIHJlYWQgdGV4dCBkYXRhXFxuXCJcblx0XHQrIFwiICAgICAgICByZXNwb25zZS50ZXh0ID0gb3JnLmFwYWNoZS5jb21tb25zLmlvLklPVXRpbHMudG9TdHJpbmcoaW5wdXRTdHJlYW0pO1xcblwiXG5cdFx0KyBcIiAgICB9XFxuXCJcblx0XHQrIFwifVxcblwiXG5cblx0XHQrIFwiKFwiICsgY2FsbGJhY2sgKyBcIikocmVzcG9uc2UsIEpTT04ucGFyc2UoY29udGV4dCkpO1xcblwiXG5cdFx0KyBcIn0pKF9fY29udGV4dC5nZXQoJ3Jlc3BvbnNlJyksIF9fY29udGV4dC5nZXQoJ2h0dHBDbGllbnRSZXF1ZXN0T3B0aW9ucycpLmlzQmluYXJ5KCksIF9fY29udGV4dC5nZXQoJ2h0dHBDbGllbnRSZXF1ZXN0T3B0aW9ucycpLmdldENvbnRleHQoKSk7XFxuXCI7XG59XG5cbi8qKlxuICogR2VuZXJhdGVzIHRoZSByYXcgSmF2YVNjcmlwdCBzdHJpbmcgZm9yIHRoZSBlcnJvciBjYWxsYmFjay5cbiAqIEBwYXJhbSBjYWxsYmFjayBUaGUgdXNlci1wcm92aWRlZCBlcnJvciBjYWxsYmFjayBmdW5jdGlvbiBjb2RlIHN0cmluZy5cbiAqIEByZXR1cm5zIFRoZSBKYXZhU2NyaXB0IHN0cmluZyBmb3IgdGhlIGVycm9yIGhhbmRsZXIsIG9yIHVuZGVmaW5lZC5cbiAqL1xuZnVuY3Rpb24gY3JlYXRlRXJyb3JDYWxsYmFjayhjYWxsYmFjaz86IHN0cmluZyk6IHN0cmluZyB8IHVuZGVmaW5lZCB7XG5cdGlmIChjYWxsYmFjaykge1xuXHRcdHJldHVybiBcIihcIiArIGNhbGxiYWNrICsgXCIpKF9fY29udGV4dC5nZXQoJ2V4Y2VwdGlvbicpKVwiO1xuXHR9XG4gICAgcmV0dXJuIHVuZGVmaW5lZDtcbn1cblxuLyoqXG4gKiBHZW5lcmF0ZXMgdGhlIHJhdyBKYXZhU2NyaXB0IHN0cmluZyBmb3IgdGhlIGNhbmNlbCBjYWxsYmFjay5cbiAqIEBwYXJhbSBjYWxsYmFjayBUaGUgdXNlci1wcm92aWRlZCBjYW5jZWwgY2FsbGJhY2sgZnVuY3Rpb24gY29kZSBzdHJpbmcuXG4gKiBAcmV0dXJucyBUaGUgSmF2YVNjcmlwdCBzdHJpbmcgZm9yIHRoZSBjYW5jZWwgaGFuZGxlciwgb3IgdW5kZWZpbmVkLlxuICovXG5mdW5jdGlvbiBjcmVhdGVDYW5jZWxDYWxsYmFjayhjYWxsYmFjaz86IHN0cmluZyk6IHN0cmluZyB8IHVuZGVmaW5lZCB7XG5cdGlmIChjYWxsYmFjaykge1xuXHRcdHJldHVybiBcIihcIiArIGNhbGxiYWNrICsgXCIpKClcIjtcblx0fVxuICAgIHJldHVybiB1bmRlZmluZWQ7XG59XG5cbi8qKlxuICogQnVpbGRzIHRoZSBmaW5hbCBVUkwgYnkgYXBwZW5kaW5nIGFsbCBxdWVyeSBwYXJhbWV0ZXJzIGRlZmluZWQgaW4gb3B0aW9ucy5wYXJhbXMuXG4gKiBUaGUgcGFyYW1ldGVycyBhcmUgbm90IHJlbW92ZWQgZnJvbSB0aGUgb3B0aW9ucyBvYmplY3QgYXMgdGhleSBhcmUgZm9yIHRoZSBzeW5jaHJvbm91cyBjbGllbnQsXG4gKiBzaW5jZSB0aGUgb3B0aW9ucyBhcmUgcGFzc2VkIGFzIEpTT04gc3RyaW5nIHRvIHRoZSBmYWNhZGUgYW55d2F5LlxuICogQHBhcmFtIHVybCBUaGUgYmFzZSBVUkwuXG4gKiBAcGFyYW0gb3B0aW9ucyBUaGUgcmVxdWVzdCBvcHRpb25zIHdoaWNoIG1heSBjb250YWluIGBwYXJhbXNgLlxuICogQHJldHVybnMgVGhlIFVSTCB3aXRoIGFwcGVuZGVkIHF1ZXJ5IHBhcmFtZXRlcnMuXG4gKi9cbmZ1bmN0aW9uIGJ1aWxkVXJsKHVybDogc3RyaW5nLCBvcHRpb25zPzogSHR0cENsaWVudFJlcXVlc3RPcHRpb25zKTogc3RyaW5nIHtcblx0aWYgKG9wdGlvbnMgPT09IHVuZGVmaW5lZCB8fCBvcHRpb25zID09PSBudWxsIHx8IG9wdGlvbnMucGFyYW1zID09PSB1bmRlZmluZWQgfHwgb3B0aW9ucy5wYXJhbXMgPT09IG51bGwgfHwgb3B0aW9ucy5wYXJhbXMubGVuZ3RoID09PSAwKSB7XG5cdFx0cmV0dXJuIHVybDtcblx0fVxuXHRsZXQgbmV3VXJsID0gdXJsO1xuXHRmb3IgKGxldCBpID0gMDsgaSA8IG9wdGlvbnMucGFyYW1zLmxlbmd0aDsgaSArKykge1xuICAgICAgICBjb25zdCBwYXJhbSA9IG9wdGlvbnMucGFyYW1zW2ldO1xuXHRcdGlmIChpID09PSAwKSB7XG4gICAgICAgICAgICAvLyBDaGVjayBpZiBVUkwgYWxyZWFkeSBjb250YWlucyAnPycgYW5kIHVzZSAnJicgaWYgc28gKGltcHJvdmVzIHJvYnVzdG5lc3MpXG4gICAgICAgICAgICBpZiAobmV3VXJsLmluY2x1ZGVzKCc/JykpIHtcbiAgICAgICAgICAgICAgICBuZXdVcmwgKz0gJyYnO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBuZXdVcmwgKz0gJz8nO1xuICAgICAgICAgICAgfVxuXHRcdFx0bmV3VXJsICs9IHBhcmFtLm5hbWUgKyAnPScgKyBwYXJhbS52YWx1ZTtcblx0XHR9IGVsc2Uge1xuXHRcdFx0bmV3VXJsICs9ICcmJyArIHBhcmFtLm5hbWUgKyAnPScgKyBwYXJhbS52YWx1ZTtcblx0XHR9XG5cdH1cblx0cmV0dXJuIG5ld1VybDtcbn1cblxuLy8gQHRzLWlnbm9yZVxuaWYgKHR5cGVvZiBtb2R1bGUgIT09ICd1bmRlZmluZWQnKSB7XG5cdC8vIEB0cy1pZ25vcmVcblx0bW9kdWxlLmV4cG9ydHMgPSB7IEh0dHBBc3luY0NsaWVudCwgZ2V0SW5zdGFuY2UgfTtcbn0iXSwKICAibWFwcGluZ3MiOiAiQUF1SUEsTUFBTSx3QkFBd0IsS0FBSyxLQUFLLGlFQUFpRTtBQUd6RyxNQUFNLHFCQUFxQixLQUFLLEtBQUssNERBQTREO0FBR2pHLE1BQU0sYUFBYSxtQkFBbUIsUUFBUSxzQkFBc0IsS0FBSztBQU9sRSxNQUFNLGdCQUFnQjtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLEVBUTVCLFNBQVMsS0FBYSxRQUErQixTQUEwQztBQUM5RixVQUFNLFNBQVMsU0FBUyxLQUFLLE9BQU87QUFDcEMsVUFBTSxXQUFXO0FBQUEsTUFDaEI7QUFBQSxNQUNBLE9BQU87QUFBQSxNQUNQLE9BQU87QUFBQSxNQUNQLE9BQU87QUFBQSxJQUNSO0FBQ0EsUUFBSSxTQUFTO0FBQ1osaUJBQVcsU0FBUyxRQUFRLEtBQUssVUFBVSxPQUFPLEdBQUcsUUFBUTtBQUFBLElBQzlELE9BQU87QUFDTixpQkFBVyxTQUFTLFFBQVEsS0FBSyxVQUFVLENBQUMsQ0FBQyxHQUFHLFFBQVE7QUFBQSxJQUN6RDtBQUFBLEVBQ0Q7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxFQVFBLFVBQVUsS0FBYSxRQUErQixTQUEwQztBQUMvRixVQUFNLFNBQVMsU0FBUyxLQUFLLE9BQU87QUFDcEMsVUFBTSxXQUFXO0FBQUEsTUFDaEI7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
|
|
205
|
+
//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vc3JjL2h0dHAvY2xpZW50LWFzeW5jLnRzIl0sCiAgInNvdXJjZXNDb250ZW50IjogWyIvKipcbiAqIEBtb2R1bGUgaHR0cC9jbGllbnQtYXN5bmNcbiAqIEBwYWNrYWdlIEBhZXJva2l0L3Nkay9odHRwXG4gKiBAbmFtZSBIdHRwQXN5bmNDbGllbnRcbiAqIEBvdmVydmlld1xuICogXG4gKiBUaGUgSHR0cEFzeW5jQ2xpZW50IGNsYXNzIHByb3ZpZGVzIGEgSmF2YVNjcmlwdC9UeXBlU2NyaXB0IHdyYXBwZXIgKEZhY2FkZSkgZm9yIG1ha2luZyBhc3luY2hyb25vdXMgSFRUUCByZXF1ZXN0cyB1c2luZyB0aGUgdW5kZXJseWluZyBKYXZhIEhUVFAgY2xpZW50LiBJdCBhbGxvd3MgZGV2ZWxvcGVycyB0byBwZXJmb3JtIG5vbi1ibG9ja2luZyBIVFRQIG9wZXJhdGlvbnMgYnkgZGVmaW5pbmcgc3VjY2VzcywgZXJyb3IsIGFuZCBjYW5jZWwgY2FsbGJhY2tzIGFzIHN0cmluZ3Mgb2YgZXhlY3V0YWJsZSBKYXZhU2NyaXB0IGNvZGUuIFRoZSBjbGFzcyBzdXBwb3J0cyBhbGwgc3RhbmRhcmQgSFRUUCBtZXRob2RzIChHRVQsIFBPU1QsIFBVVCwgUEFUQ0gsIERFTEVURSwgSEVBRCwgVFJBQ0UpIGFuZCBhY2NlcHRzIGEgY29tcHJlaGVuc2l2ZSBzZXQgb2YgcmVxdWVzdCBvcHRpb25zIHRoYXQgbWlycm9yIHRoZSBjYXBhYmlsaXRpZXMgb2YgdGhlIEphdmEgY2xpZW50LlxuICogXG4gKiAjIyMgS2V5IEZlYXR1cmVzOlxuICogLSAqKkFzeW5jaHJvbm91cyBFeGVjdXRpb24qKjogQWxsIEhUVFAgbWV0aG9kcyByZXR1cm4gaW1tZWRpYXRlbHksIHdpdGggY2FsbGJhY2tzIGV4ZWN1dGVkIHVwb24gY29tcGxldGlvbi5cbiAqIC0gKipDb21wcmVoZW5zaXZlIFJlcXVlc3QgT3B0aW9ucyoqOiBTdXBwb3J0cyBhIHdpZGUgcmFuZ2Ugb2YgY29uZmlndXJhdGlvbiBvcHRpb25zIGZvciBmaW5lLXR1bmluZyBIVFRQIHJlcXVlc3RzLlxuICogLSAqKkNhbGxiYWNrIEZsZXhpYmlsaXR5Kio6IENhbGxiYWNrcyBhcmUgZGVmaW5lZCBhcyBzdHJpbmdzIG9mIEphdmFTY3JpcHQgY29kZSwgYWxsb3dpbmcgZm9yIGR5bmFtaWMgZXhlY3V0aW9uIGluIHRoZSBKVk0gZW52aXJvbm1lbnQuXG4gKiBcbiAqICMjIyBVc2UgQ2FzZXM6XG4gKiAtICoqTm9uLWJsb2NraW5nIEFQSSBDYWxscyoqOiBJZGVhbCBmb3Igc2NlbmFyaW9zIHdoZXJlIHlvdSB3YW50IHRvIHBlcmZvcm0gSFRUUCByZXF1ZXN0cyB3aXRob3V0IGJsb2NraW5nIHRoZSBtYWluIGV4ZWN1dGlvbiB0aHJlYWQuXG4gKiAtICoqQ29tcGxleCBSZXF1ZXN0IENvbmZpZ3VyYXRpb25zKio6IFN1aXRhYmxlIGZvciBhZHZhbmNlZCB1c2UgY2FzZXMgdGhhdCByZXF1aXJlIGRldGFpbGVkIHJlcXVlc3QgY29uZmlndXJhdGlvbnMgYW5kIGhhbmRsaW5nLlxuICogXG4gKiAjIyMgRXhhbXBsZSBVc2FnZTpcbiAqIGBgYHRzXG4gKiBpbXBvcnQgeyBIdHRwQXN5bmNDbGllbnQgfSBmcm9tIFwiQGFlcm9raXQvc2RrL2h0dHBcIjtcbiAqIFxuICogY29uc3QgY2xpZW50ID0gSHR0cEFzeW5jQ2xpZW50LmdldEluc3RhbmNlKCk7XG4gKiBcbiAqIGNsaWVudC5nZXRBc3luYyhcImh0dHBzOi8vYXBpLmV4YW1wbGUuY29tL2RhdGFcIiwge1xuICogICBzdWNjZXNzOiBcImZ1bmN0aW9uKHJlc3BvbnNlKSB7IGNvbnNvbGUubG9nKCdTdWNjZXNzOicsIHJlc3BvbnNlKTsgfVwiLFxuICogICBlcnJvcjogXCJmdW5jdGlvbihlcnJvcikgeyBjb25zb2xlLmVycm9yKCdFcnJvcjonLCBlcnJvcik7IH1cIlxuICogfSwge1xuICogICBoZWFkZXJzOiBbeyBuYW1lOiAnQXV0aG9yaXphdGlvbicsIHZhbHVlOiAnQmVhcmVyIHRva2VuJyB9XSxcbiAqICAgcGFyYW1zOiBbeyBuYW1lOiAncXVlcnknLCB2YWx1ZTogJ3NlYXJjaCB0ZXJtJyB9XVxuICogfSk7XG4gKiBgYGBcbiAqL1xuXG4vLyAtLS0gU2hhcmVkIEludGVyZmFjZXMgKGZvciBkb2N1bWVudGF0aW9uIGNsYXJpdHkpIC0tLVxuXG4vKiogRGVmaW5lcyBhIHNpbmdsZSBIVFRQIGhlYWRlciwgdXNlZCBmb3IgYm90aCByZXF1ZXN0IGFuZCByZXNwb25zZS4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgSHR0cENsaWVudEhlYWRlciB7XG4gICAgLyoqIFRoZSBuYW1lIG9mIHRoZSBoZWFkZXIgKGUuZy4sICdDb250ZW50LVR5cGUnLCAnQXV0aG9yaXphdGlvbicpLiAqL1xuICAgIG5hbWU6IHN0cmluZztcbiAgICAvKiogVGhlIHZhbHVlIG9mIHRoZSBoZWFkZXIuICovXG4gICAgdmFsdWU6IHN0cmluZztcbn1cblxuLyoqIERlZmluZXMgYSBxdWVyeSBwYXJhbWV0ZXIgdGhhdCB3aWxsIGJlIGFwcGVuZGVkIHRvIHRoZSBVUkwuICovXG5leHBvcnQgaW50ZXJmYWNlIEh0dHBDbGllbnRQYXJhbSB7XG4gICAgLyoqIFRoZSBuYW1lIG9mIHRoZSBVUkwgcXVlcnkgcGFyYW1ldGVyIChlLmcuLCAnaWQnKS4gKi9cbiAgICBuYW1lOiBzdHJpbmc7XG4gICAgLyoqIFRoZSB2YWx1ZSBvZiB0aGUgVVJMIHF1ZXJ5IHBhcmFtZXRlci4gKi9cbiAgICB2YWx1ZTogc3RyaW5nO1xufVxuXG4vKiogRGVmaW5lcyBhIGZpbGUgdG8gYmUgaW5jbHVkZWQgaW4gYSBtdWx0aS1wYXJ0IGZvcm0gZGF0YSByZXF1ZXN0LiAqL1xuZXhwb3J0IGludGVyZmFjZSBIdHRwQ2xpZW50RmlsZSB7XG4gICAgLyoqIFRoZSBmb3JtIGZpZWxkIG5hbWUgZm9yIHRoZSBmaWxlLiAqL1xuICAgIG5hbWU6IHN0cmluZztcbiAgICAvKiogVGhlIGZpbGUgcGF0aCBvciBjb250ZW50LiAqL1xuICAgIHZhbHVlOiBzdHJpbmc7XG59XG5cbi8qKiBDb25maWd1cmF0aW9uIG9wdGlvbnMgZm9yIGFuIEhUVFAgcmVxdWVzdCwgbWlycm9yaW5nIHRoZSBjYXBhYmlsaXRpZXMgb2YgdGhlIHVuZGVybHlpbmcgSmF2YSBjbGllbnQuICovXG5leHBvcnQgaW50ZXJmYWNlIEh0dHBDbGllbnRSZXF1ZXN0T3B0aW9ucyB7XG4gICAgZXhwZWN0Q29udGludWVFbmFibGVkPzogYm9vbGVhbjtcbiAgICBwcm94eUhvc3Q/OiBzdHJpbmc7XG4gICAgcHJveHlQb3J0PzogbnVtYmVyO1xuICAgIGNvb2tpZVNwZWM/OiBzdHJpbmc7XG4gICAgcmVkaXJlY3RzRW5hYmxlZD86IGJvb2xlYW47XG4gICAgcmVsYXRpdmVSZWRpcmVjdHNBbGxvd2VkPzogYm9vbGVhbjtcbiAgICBjaXJjdWxhclJlZGlyZWN0c0FsbG93ZWQ/OiBib29sZWFuO1xuICAgIG1heFJlZGlyZWN0cz86IG51bWJlcjtcbiAgICBhdXRoZW50aWNhdGlvbkVuYWJsZWQ/OiBib29sZWFuO1xuICAgIHRhcmdldFByZWZlcnJlZEF1dGhTY2hlbWVzPzogc3RyaW5nW107XG4gICAgcHJveHlQcmVmZXJyZWRBdXRoU2NoZW1lcz86IHN0cmluZ1tdO1xuICAgIGNvbm5lY3Rpb25SZXF1ZXN0VGltZW91dD86IG51bWJlcjtcbiAgICBjb25uZWN0VGltZW91dD86IG51bWJlcjtcbiAgICBzb2NrZXRUaW1lb3V0PzogbnVtYmVyO1xuICAgIGNvbnRlbnRDb21wcmVzc2lvbkVuYWJsZWQ/OiBib29sZWFuO1xuICAgIHNzbFRydXN0QWxsRW5hYmxlZD86IGJvb2xlYW47XG4gICAgZGF0YT86IGFueVtdO1xuICAgIHRleHQ/OiBzdHJpbmc7XG4gICAgZmlsZXM/OiBIdHRwQ2xpZW50RmlsZVtdO1xuICAgIGNoYXJhY3RlckVuY29kaW5nPzogc3RyaW5nO1xuICAgIGNoYXJhY3RlckVuY29kaW5nRW5hYmxlZD86IGJvb2xlYW47XG4gICAgY29udGVudFR5cGU/OiBzdHJpbmc7XG4gICAgaGVhZGVycz86IEh0dHBDbGllbnRIZWFkZXJbXTtcbiAgICBwYXJhbXM/OiBIdHRwQ2xpZW50UGFyYW1bXTtcbiAgICBiaW5hcnk/OiBib29sZWFuO1xuICAgIGNvbnRleHQ/OiB7IFtrZXk6IHN0cmluZ106IGFueSB9O1xufVxuXG4vKiogVGhlIHN0cnVjdHVyZSBvZiB0aGUgcmVzcG9uc2UgcmV0dXJuZWQgYnkgdGhlIEh0dHBDbGllbnQgbWV0aG9kcy4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgSHR0cENsaWVudFJlc3BvbnNlIHtcbiAgICAvKiogVGhlIEhUVFAgc3RhdHVzIGNvZGUgKGUuZy4sIDIwMCwgNDA0LCA1MDApLiAqL1xuICAgIHN0YXR1c0NvZGU6IG51bWJlcjtcbiAgICAvKiogVGhlIHN0YXR1cyBtZXNzYWdlIHJldHVybmVkIGJ5IHRoZSBzZXJ2ZXIgKGUuZy4sICdPSycsICdOb3QgRm91bmQnKS4gKi9cbiAgICBzdGF0dXNNZXNzYWdlOiBzdHJpbmc7XG4gICAgLyoqIFJlc3BvbnNlIGJvZHkgY29udGVudCBhcyBhbiBhcnJheSBvZiBieXRlcyAoaWYgcmVxdWVzdGVkIGFzIGJpbmFyeSkuICovXG4gICAgZGF0YTogYW55W107XG4gICAgLyoqIFJlc3BvbnNlIGJvZHkgY29udGVudCBhcyBhIGRlY29kZWQgc3RyaW5nLiAqL1xuICAgIHRleHQ6IHN0cmluZztcbiAgICAvKiogVGhlIHByb3RvY29sIHVzZWQgKGUuZy4sICdIVFRQLzEuMScpLiAqL1xuICAgIHByb3RvY29sOiBzdHJpbmc7XG4gICAgLyoqIEluZGljYXRlcyBpZiB0aGUgcmVzcG9uc2Ugd2FzIHByb2Nlc3NlZCBhcyBiaW5hcnkgZGF0YS4gKi9cbiAgICBiaW5hcnk6IGJvb2xlYW47XG4gICAgLyoqIEFycmF5IG9mIGFsbCBoZWFkZXJzIHJlY2VpdmVkIGluIHRoZSByZXNwb25zZS4gKi9cbiAgICBoZWFkZXJzOiBIdHRwQ2xpZW50SGVhZGVyW11cbn1cblxuLy8gLS0tIEFzeW5jaHJvbm91cyBDbGllbnQgSW50ZXJmYWNlcyAtLS1cblxuLyoqXG4gKiBEZWZpbmVzIHRoZSBjYWxsYmFjayBzdHJ1Y3R1cmUgZm9yIGFzeW5jaHJvbm91cyByZXF1ZXN0cy5cbiAqIE5vdGU6IENhbGxiYWNrcyBhcmUgcHJvdmlkZWQgYXMgc3RyaW5ncyBjb250YWluaW5nIGV4ZWN1dGFibGUgSmF2YVNjcmlwdCBjb2RlLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIEh0dHBDbGllbnRBc3luY0NvbmZpZyB7XG4gICAgLyoqXG4gICAgICogTWFuZGF0b3J5IHN1Y2Nlc3MgY2FsbGJhY2sgYXMgYSAqKnN0cmluZyBvZiBKYXZhU2NyaXB0IGNvZGUqKi5cbiAgICAgKiBJdCB3aWxsIGJlIGV4ZWN1dGVkIHdpdGggc2lnbmF0dXJlOiBgKHJlc3BvbnNlOiBIdHRwQ2xpZW50UmVzcG9uc2UsIGNvbnRleHQ6IHsgW2tleTogc3RyaW5nXTogYW55IH0pID0+IHZvaWRgXG4gICAgICovXG4gICAgc3VjY2Vzczogc3RyaW5nO1xuICAgIC8qKlxuICAgICAqIE9wdGlvbmFsIGVycm9yIGNhbGxiYWNrIGFzIGEgKipzdHJpbmcgb2YgSmF2YVNjcmlwdCBjb2RlKiouXG4gICAgICogSXQgd2lsbCBiZSBleGVjdXRlZCB3aXRoIHNpZ25hdHVyZTogYChleGNlcHRpb246IGFueSkgPT4gdm9pZGBcbiAgICAgKi9cbiAgICBlcnJvcj86IHN0cmluZztcbiAgICAvKipcbiAgICAgKiBPcHRpb25hbCBjYW5jZWwgY2FsbGJhY2sgYXMgYSAqKnN0cmluZyBvZiBKYXZhU2NyaXB0IGNvZGUqKi5cbiAgICAgKiBJdCB3aWxsIGJlIGV4ZWN1dGVkIHdpdGggc2lnbmF0dXJlOiBgKCkgPT4gdm9pZGBcbiAgICAgKi9cbiAgICBjYW5jZWw/OiBzdHJpbmc7XG59XG5cblxuLy8gLS0tIEphdmEgVHlwZSBJbXBvcnRzIChDcnVjaWFsIGZvciBKVk0gaW50ZWdyYXRpb24pIC0tLVxuXG4vKiogSW1wb3J0cyB0aGUgbmF0aXZlIEphdmEgY2xhc3MgcmVzcG9uc2libGUgZm9yIGFzeW5jaHJvbm91cyBIVFRQIGV4ZWN1dGlvbi4gKi9cbmNvbnN0IEh0dHBDbGllbnRBc3luY0ZhY2FkZSA9IEphdmEudHlwZShcIm9yZy5lY2xpcHNlLmRpcmlnaWJsZS5jb21wb25lbnRzLmFwaS5odHRwLkh0dHBDbGllbnRBc3luY0ZhY2FkZVwiKTtcblxuLyoqIEltcG9ydHMgdGhlIG5hdGl2ZSBKYXZhIGNsYXNzIGZvciByZXRyaWV2aW5nIFNwcmluZy1tYW5hZ2VkIGJlYW5zLiAqL1xuY29uc3QgU3ByaW5nQmVhblByb3ZpZGVyID0gSmF2YS50eXBlKFwib3JnLmVjbGlwc2UuZGlyaWdpYmxlLmNvbXBvbmVudHMuc3ByaW5nLlNwcmluZ0JlYW5Qcm92aWRlclwiKTtcblxuLyoqIFJldHJpZXZlcyB0aGUgc2luZ2xldG9uIGluc3RhbmNlIG9mIHRoZSBhc3luY2hyb25vdXMgSFRUUCBjbGllbnQgZnJvbSB0aGUgU3ByaW5nIGNvbnRleHQuICovXG5jb25zdCBodHRwQ2xpZW50ID0gU3ByaW5nQmVhblByb3ZpZGVyLmdldEJlYW4oSHR0cENsaWVudEFzeW5jRmFjYWRlLmNsYXNzKTtcblxuXG4vKipcbiAqIFRoZSBhc3luY2hyb25vdXMgSFRUUCBjbGllbnQgY2xhc3MuIEFsbCByZXF1ZXN0IG1ldGhvZHMgcmV0dXJuIGltbWVkaWF0ZWx5XG4gKiBhbmQgZXhlY3V0ZSBjYWxsYmFja3MgdXBvbiBjb21wbGV0aW9uLlxuICovXG5leHBvcnQgY2xhc3MgSHR0cEFzeW5jQ2xpZW50IHtcblxuICAgIC8qKlxuICAgICAqIEV4ZWN1dGVzIGFuIGFzeW5jaHJvbm91cyBIVFRQIEdFVCByZXF1ZXN0LlxuICAgICAqIEBwYXJhbSB1cmwgVGhlIHRhcmdldCBVUkwuXG4gICAgICogQHBhcmFtIGNvbmZpZyBUaGUgY2FsbGJhY2sgY29uZmlndXJhdGlvbiBvYmplY3QuXG4gICAgICogQHBhcmFtIG9wdGlvbnMgUmVxdWVzdCBjb25maWd1cmF0aW9uIG9wdGlvbnMgKGUuZy4sIGhlYWRlcnMsIGJvZHksIHBhcmFtcykuXG4gICAgICovXG5cdGdldEFzeW5jKHVybDogc3RyaW5nLCBjb25maWc6IEh0dHBDbGllbnRBc3luY0NvbmZpZywgb3B0aW9ucz86IEh0dHBDbGllbnRSZXF1ZXN0T3B0aW9ucyk6IHZvaWQge1xuXHRcdGNvbnN0IG5ld1VybCA9IGJ1aWxkVXJsKHVybCwgb3B0aW9ucyk7XG5cdFx0Y29uc3QgY2FsbGJhY2sgPSBjcmVhdGVIdHRwUmVzcG9uc2VDYWxsYmFjayhcblx0XHRcdGh0dHBDbGllbnQsXG5cdFx0XHRjb25maWcuc3VjY2Vzcyxcblx0XHRcdGNvbmZpZy5lcnJvcixcblx0XHRcdGNvbmZpZy5jYW5jZWxcblx0XHQpO1xuXHRcdGlmIChvcHRpb25zKSB7XG5cdFx0XHRodHRwQ2xpZW50LmdldEFzeW5jKG5ld1VybCwgSlNPTi5zdHJpbmdpZnkob3B0aW9ucyksIGNhbGxiYWNrKTtcblx0XHR9IGVsc2Uge1xuXHRcdFx0aHR0cENsaWVudC5nZXRBc3luYyhuZXdVcmwsIEpTT04uc3RyaW5naWZ5KHt9KSwgY2FsbGJhY2spO1xuXHRcdH1cblx0fTtcblxuICAgIC8qKlxuICAgICAqIEV4ZWN1dGVzIGFuIGFzeW5jaHJvbm91cyBIVFRQIFBPU1QgcmVxdWVzdC5cbiAgICAgKiBAcGFyYW0gdXJsIFRoZSB0YXJnZXQgVVJMLlxuICAgICAqIEBwYXJhbSBjb25maWcgVGhlIGNhbGxiYWNrIGNvbmZpZ3VyYXRpb24gb2JqZWN0LlxuICAgICAqIEBwYXJhbSBvcHRpb25zIFJlcXVlc3QgY29uZmlndXJhdGlvbiBvcHRpb25zLlxuICAgICAqL1xuXHRwb3N0QXN5bmModXJsOiBzdHJpbmcsIGNvbmZpZzogSHR0cENsaWVudEFzeW5jQ29uZmlnLCBvcHRpb25zPzogSHR0cENsaWVudFJlcXVlc3RPcHRpb25zKTogdm9pZCB7XG5cdFx0Y29uc3QgbmV3VXJsID0gYnVpbGRVcmwodXJsLCBvcHRpb25zKTtcblx0XHRjb25zdCBjYWxsYmFjayA9IGNyZWF0ZUh0dHBSZXNwb25zZUNhbGxiYWNrKFxuXHRcdFx0aHR0cENsaWVudCxcblx0XHRcdGNvbmZpZy5zdWNjZXNzLFxuXHRcdFx0Y29uZmlnLmVycm9yLFxuXHRcdFx0Y29uZmlnLmNhbmNlbFxuXHRcdCk7XG5cdFx0aWYgKG9wdGlvbnMpIHtcblx0XHRcdGh0dHBDbGllbnQucG9zdEFzeW5jKG5ld1VybCwgSlNPTi5zdHJpbmdpZnkob3B0aW9ucyksIGNhbGxiYWNrKTtcblx0XHR9IGVsc2Uge1xuXHRcdFx0aHR0cENsaWVudC5wb3N0QXN5bmMobmV3VXJsLCBKU09OLnN0cmluZ2lmeSh7fSksIGNhbGxiYWNrKTtcblx0XHR9XG5cdH07XG5cbiAgICAvKipcbiAgICAgKiBFeGVjdXRlcyBhbiBhc3luY2hyb25vdXMgSFRUUCBQVVQgcmVxdWVzdC5cbiAgICAgKiBAcGFyYW0gdXJsIFRoZSB0YXJnZXQgVVJMLlxuICAgICAqIEBwYXJhbSBjb25maWcgVGhlIGNhbGxiYWNrIGNvbmZpZ3VyYXRpb24gb2JqZWN0LlxuICAgICAqIEBwYXJhbSBvcHRpb25zIFJlcXVlc3QgY29uZmlndXJhdGlvbiBvcHRpb25zLlxuICAgICAqL1xuXHRwdXRBc3luYyh1cmw6IHN0cmluZywgY29uZmlnOiBIdHRwQ2xpZW50QXN5bmNDb25maWcsIG9wdGlvbnM/OiBIdHRwQ2xpZW50UmVxdWVzdE9wdGlvbnMpOiB2b2lkIHtcblx0XHRjb25zdCBuZXdVcmwgPSBidWlsZFVybCh1cmwsIG9wdGlvbnMpO1xuXHRcdGNvbnN0IGNhbGxiYWNrID0gY3JlYXRlSHR0cFJlc3BvbnNlQ2FsbGJhY2soXG5cdFx0XHRodHRwQ2xpZW50LFxuXHRcdFx0Y29uZmlnLnN1Y2Nlc3MsXG5cdFx0XHRjb25maWcuZXJyb3IsXG5cdFx0XHRjb25maWcuY2FuY2VsXG5cdFx0KTtcblx0XHRpZiAob3B0aW9ucykge1xuXHRcdFx0aHR0cENsaWVudC5wdXRBc3luYyhuZXdVcmwsIEpTT04uc3RyaW5naWZ5KG9wdGlvbnMpLCBjYWxsYmFjayk7XG5cdFx0fSBlbHNlIHtcblx0XHRcdGh0dHBDbGllbnQucHV0QXN5bmMobmV3VXJsLCBKU09OLnN0cmluZ2lmeSh7fSksIGNhbGxiYWNrKTtcblx0XHR9XG5cdH07XG5cbiAgICAvKipcbiAgICAgKiBFeGVjdXRlcyBhbiBhc3luY2hyb25vdXMgSFRUUCBQQVRDSCByZXF1ZXN0LlxuICAgICAqIEBwYXJhbSB1cmwgVGhlIHRhcmdldCBVUkwuXG4gICAgICogQHBhcmFtIGNvbmZpZyBUaGUgY2FsbGJhY2sgY29uZmlndXJhdGlvbiBvYmplY3QuXG4gICAgICogQHBhcmFtIG9wdGlvbnMgUmVxdWVzdCBjb25maWd1cmF0aW9uIG9wdGlvbnMuXG4gICAgICovXG5cdHBhdGNoQXN5bmModXJsOiBzdHJpbmcsIGNvbmZpZzogSHR0cENsaWVudEFzeW5jQ29uZmlnLCBvcHRpb25zPzogSHR0cENsaWVudFJlcXVlc3RPcHRpb25zKTogdm9pZCB7XG5cdFx0Y29uc3QgbmV3VXJsID0gYnVpbGRVcmwodXJsLCBvcHRpb25zKTtcblx0XHRjb25zdCBjYWxsYmFjayA9IGNyZWF0ZUh0dHBSZXNwb25zZUNhbGxiYWNrKFxuXHRcdFx0aHR0cENsaWVudCxcblx0XHRcdGNvbmZpZy5zdWNjZXNzLFxuXHRcdFx0Y29uZmlnLmVycm9yLFxuXHRcdFx0Y29uZmlnLmNhbmNlbFxuXHRcdCk7XG5cdFx0aWYgKG9wdGlvbnMpIHtcblx0XHRcdGh0dHBDbGllbnQucGF0Y2hBc3luYyhuZXdVcmwsIEpTT04uc3RyaW5naWZ5KG9wdGlvbnMpLCBjYWxsYmFjayk7XG5cdFx0fSBlbHNlIHtcblx0XHRcdGh0dHBDbGllbnQucGF0Y2hBc3luYyhuZXdVcmwsIEpTT04uc3RyaW5naWZ5KHt9KSwgY2FsbGJhY2spO1xuXHRcdH1cblx0fTtcblxuICAgIC8qKlxuICAgICAqIEV4ZWN1dGVzIGFuIGFzeW5jaHJvbm91cyBIVFRQIERFTEVURSByZXF1ZXN0LlxuICAgICAqIEBwYXJhbSB1cmwgVGhlIHRhcmdldCBVUkwuXG4gICAgICogQHBhcmFtIGNvbmZpZyBUaGUgY2FsbGJhY2sgY29uZmlndXJhdGlvbiBvYmplY3QuXG4gICAgICogQHBhcmFtIG9wdGlvbnMgUmVxdWVzdCBjb25maWd1cmF0aW9uIG9wdGlvbnMuXG4gICAgICovXG5cdGRlbGV0ZUFzeW5jKHVybDogc3RyaW5nLCBjb25maWc6IEh0dHBDbGllbnRBc3luY0NvbmZpZywgb3B0aW9ucz86IEh0dHBDbGllbnRSZXF1ZXN0T3B0aW9ucyk6IHZvaWQge1xuXHRcdGNvbnN0IG5ld1VybCA9IGJ1aWxkVXJsKHVybCwgb3B0aW9ucyk7XG5cdFx0Y29uc3QgY2FsbGJhY2sgPSBjcmVhdGVIdHRwUmVzcG9uc2VDYWxsYmFjayhcblx0XHRcdGh0dHBDbGllbnQsXG5cdFx0XHRjb25maWcuc3VjY2Vzcyxcblx0XHRcdGNvbmZpZy5lcnJvcixcblx0XHRcdGNvbmZpZy5jYW5jZWxcblx0XHQpO1xuXHRcdGlmIChvcHRpb25zKSB7XG5cdFx0XHRodHRwQ2xpZW50LmRlbGV0ZUFzeW5jKG5ld1VybCwgSlNPTi5zdHJpbmdpZnkob3B0aW9ucyksIGNhbGxiYWNrKTtcblx0XHR9IGVsc2Uge1xuXHRcdFx0aHR0cENsaWVudC5kZWxldGVBc3luYyhuZXdVcmwsIEpTT04uc3RyaW5naWZ5KHt9KSwgY2FsbGJhY2spO1xuXHRcdH1cblx0fTtcblxuICAgIC8qKlxuICAgICAqIEV4ZWN1dGVzIGFuIGFzeW5jaHJvbm91cyBIVFRQIEhFQUQgcmVxdWVzdC5cbiAgICAgKiBAcGFyYW0gdXJsIFRoZSB0YXJnZXQgVVJMLlxuICAgICAqIEBwYXJhbSBjb25maWcgVGhlIGNhbGxiYWNrIGNvbmZpZ3VyYXRpb24gb2JqZWN0LlxuICAgICAqIEBwYXJhbSBvcHRpb25zIFJlcXVlc3QgY29uZmlndXJhdGlvbiBvcHRpb25zLlxuICAgICAqL1xuXHRoZWFkQXN5bmModXJsOiBzdHJpbmcsIGNvbmZpZzogSHR0cENsaWVudEFzeW5jQ29uZmlnLCBvcHRpb25zPzogSHR0cENsaWVudFJlcXVlc3RPcHRpb25zKTogdm9pZCB7XG5cdFx0Y29uc3QgbmV3VXJsID0gYnVpbGRVcmwodXJsLCBvcHRpb25zKTtcblx0XHRjb25zdCBjYWxsYmFjayA9IGNyZWF0ZUh0dHBSZXNwb25zZUNhbGxiYWNrKFxuXHRcdFx0aHR0cENsaWVudCxcblx0XHRcdGNvbmZpZy5zdWNjZXNzLFxuXHRcdFx0Y29uZmlnLmVycm9yLFxuXHRcdFx0Y29uZmlnLmNhbmNlbFxuXHRcdCk7XG5cdFx0aWYgKG9wdGlvbnMpIHtcblx0XHRcdGh0dHBDbGllbnQuaGVhZEFzeW5jKG5ld1VybCwgSlNPTi5zdHJpbmdpZnkob3B0aW9ucyksIGNhbGxiYWNrKTtcblx0XHR9IGVsc2Uge1xuXHRcdFx0aHR0cENsaWVudC5oZWFkQXN5bmMobmV3VXJsLCBKU09OLnN0cmluZ2lmeSh7fSksIGNhbGxiYWNrKTtcblx0XHR9XG5cdH07XG5cbiAgICAvKipcbiAgICAgKiBFeGVjdXRlcyBhbiBhc3luY2hyb25vdXMgSFRUUCBUUkFDRSByZXF1ZXN0LlxuICAgICAqIEBwYXJhbSB1cmwgVGhlIHRhcmdldCBVUkwuXG4gICAgICogQHBhcmFtIGNvbmZpZyBUaGUgY2FsbGJhY2sgY29uZmlndXJhdGlvbiBvYmplY3QuXG4gICAgICogQHBhcmFtIG9wdGlvbnMgUmVxdWVzdCBjb25maWd1cmF0aW9uIG9wdGlvbnMuXG4gICAgICovXG5cdHRyYWNlQXN5bmModXJsOiBzdHJpbmcsIGNvbmZpZzogSHR0cENsaWVudEFzeW5jQ29uZmlnLCBvcHRpb25zPzogSHR0cENsaWVudFJlcXVlc3RPcHRpb25zKTogdm9pZCB7XG5cdFx0Y29uc3QgbmV3VXJsID0gYnVpbGRVcmwodXJsLCBvcHRpb25zKTtcblx0XHRjb25zdCBjYWxsYmFjayA9IGNyZWF0ZUh0dHBSZXNwb25zZUNhbGxiYWNrKFxuXHRcdFx0aHR0cENsaWVudCxcblx0XHRcdGNvbmZpZy5zdWNjZXNzLFxuXHRcdFx0Y29uZmlnLmVycm9yLFxuXHRcdFx0Y29uZmlnLmNhbmNlbFxuXHRcdCk7XG5cdFx0aWYgKG9wdGlvbnMpIHtcblx0XHRcdGh0dHBDbGllbnQudHJhY2VBc3luYyhuZXdVcmwsIEpTT04uc3RyaW5naWZ5KG9wdGlvbnMpLCBjYWxsYmFjayk7XG5cdFx0fSBlbHNlIHtcblx0XHRcdGh0dHBDbGllbnQudHJhY2VBc3luYyhuZXdVcmwsIEpTT04uc3RyaW5naWZ5KHt9KSwgY2FsbGJhY2spO1xuXHRcdH1cblx0fTtcblxuICAgIC8qKlxuICAgICAqIEluaXRpYXRlcyB0aGUgZXhlY3V0aW9uIG9mIHF1ZXVlZCBhc3luY2hyb25vdXMgcmVxdWVzdHMgKGRlcGVuZGluZyBvbiB0aGUgdW5kZXJseWluZyBKYXZhIGNsaWVudCdzIHRocmVhZGluZyBtb2RlbCkuXG4gICAgICovXG5cdGV4ZWN1dGUoKTogdm9pZCB7XG5cdFx0aHR0cENsaWVudC5leGVjdXRlKCk7XG5cdH07XG59XG5cbi8qKlxuICogRmFjdG9yeSBmdW5jdGlvbiB0byByZXRyaWV2ZSBhIG5ldyBpbnN0YW5jZSBvZiB0aGUgYXN5bmNocm9ub3VzIGNsaWVudC5cbiAqIEByZXR1cm5zIEEgbmV3IGluc3RhbmNlIG9mIEh0dHBBc3luY0NsaWVudC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldEluc3RhbmNlKCk6IEh0dHBBc3luY0NsaWVudCB7XG5cdHJldHVybiBuZXcgSHR0cEFzeW5jQ2xpZW50KCk7XG59O1xuXG4vKipcbiAqIENyZWF0ZXMgYSBuYXRpdmUgSmF2YSBjYWxsYmFjayBvYmplY3QgdGhhdCB3cmFwcyB0aGUgSmF2YVNjcmlwdCBzdWNjZXNzLCBlcnJvciwgYW5kIGNhbmNlbCBjYWxsYmFja3MuXG4gKiBUaGlzIGZ1bmN0aW9uIHVzZXMgdGhlIHVuZGVybHlpbmcgSmF2YSBIVFRQIGNsaWVudCBpbnN0YW5jZSB0byBnZW5lcmF0ZSB0aGUgZmluYWwgY2FsbGJhY2sgb2JqZWN0LlxuICogQHBhcmFtIGh0dHBDbGllbnQgVGhlIEphdmEgSHR0cENsaWVudEFzeW5jRmFjYWRlIGluc3RhbmNlLlxuICogQHBhcmFtIHN1Y2Nlc3NDYWxsYmFjayBKUyBjb2RlIHN0cmluZyBmb3Igc3VjY2Vzcy5cbiAqIEBwYXJhbSBlcnJvckNhbGxiYWNrIEpTIGNvZGUgc3RyaW5nIGZvciBlcnJvci5cbiAqIEBwYXJhbSBjYW5jZWxDYWxsYmFjayBKUyBjb2RlIHN0cmluZyBmb3IgY2FuY2VsLlxuICogQHJldHVybnMgQSBKYXZhIGNhbGxiYWNrIG9iamVjdC5cbiAqL1xuZnVuY3Rpb24gY3JlYXRlSHR0cFJlc3BvbnNlQ2FsbGJhY2soaHR0cENsaWVudDogYW55LCBzdWNjZXNzQ2FsbGJhY2s6IHN0cmluZywgZXJyb3JDYWxsYmFjaz86IHN0cmluZywgY2FuY2VsQ2FsbGJhY2s/OiBzdHJpbmcpOiBhbnkge1xuXHRyZXR1cm4gaHR0cENsaWVudC5jcmVhdGVDYWxsYmFjayhcblx0XHRjcmVhdGVTdWNjZXNzQ2FsbGJhY2soc3VjY2Vzc0NhbGxiYWNrKSxcblx0XHRjcmVhdGVFcnJvckNhbGxiYWNrKGVycm9yQ2FsbGJhY2spLFxuXHRcdGNyZWF0ZUNhbmNlbENhbGxiYWNrKGNhbmNlbENhbGxiYWNrKVxuXHQpO1xufVxuXG4vKipcbiAqIEdlbmVyYXRlcyB0aGUgcmF3IEphdmFTY3JpcHQgc3RyaW5nIHRoYXQgd2lsbCBiZSBleGVjdXRlZCBpbiB0aGUgSlZNIGVudmlyb25tZW50IHVwb24gc3VjY2Vzc2Z1bCByZXF1ZXN0IGNvbXBsZXRpb24uXG4gKiBUaGlzIHN0cmluZyBoYW5kbGVzIHBhcnNpbmcgdGhlIEphdmEgSFRUUCByZXNwb25zZSBvYmplY3QgYW5kIGV4ZWN1dGluZyB0aGUgdXNlcidzIGRlZmluZWQgY2FsbGJhY2sgZnVuY3Rpb24uXG4gKiBAcGFyYW0gY2FsbGJhY2sgVGhlIHVzZXItcHJvdmlkZWQgc3VjY2VzcyBjYWxsYmFjayBmdW5jdGlvbiBjb2RlIHN0cmluZy5cbiAqIEByZXR1cm5zIFRoZSBjb21wbGV4IEphdmFTY3JpcHQgc3RyaW5nIGZvciB0aGUgc3VjY2VzcyBoYW5kbGVyLlxuICovXG5mdW5jdGlvbiBjcmVhdGVTdWNjZXNzQ2FsbGJhY2soY2FsbGJhY2s6IHN0cmluZyk6IHN0cmluZyB7XG5cdC8vIE5vdGU6IFRoaXMgc3RyaW5nIHJlYWRzIHRoZSBKYXZhIHJlc3BvbnNlIG9iamVjdCBhbmQgdGhlIGNvbnRleHQgdmFyaWFibGVzIChfX2NvbnRleHQpIGF2YWlsYWJsZVxuICAgIC8vIGluIHRoZSBzcGVjaWZpYyBKVk0gZW52aXJvbm1lbnQuIFNpbmNlIHRoZSBIdHRwQ2xpZW50IDUgcG9ydCAoZGlyaWdpYmxlICM3NzkyKSB0aGF0IG9iamVjdCBpcyBhXG4gICAgLy8gU2ltcGxlSHR0cFJlc3BvbnNlOiB0aGUgc3RhdHVzIGlzIGdldENvZGUoKS9nZXRSZWFzb25QaHJhc2UoKSByYXRoZXIgdGhhbiBnZXRTdGF0dXNMaW5lKCksIHRoZVxuICAgIC8vIGhlYWRlcnMgYXJlIGdldEhlYWRlcnMoKSwgYW5kIHRoZSBib2R5IGlzIGFscmVhZHkgaW4gbWVtb3J5IC0gZ2V0Qm9keUJ5dGVzKCkvZ2V0Qm9keVRleHQoKSAtXG4gICAgLy8gc28gdGhlcmUgaXMgbm8gZW50aXR5IHN0cmVhbSB0byByZWFkIHRocm91Z2ggSU9VdGlscyBhbnkgbW9yZS5cbiAgICBcbiAgICAvLyBUaGUgc3RydWN0dXJlIG1hcHMgdGhlIEphdmEgSFRUUCBSZXNwb25zZSBvYmplY3QgaW50byB0aGUgc3RhbmRhcmQgSHR0cENsaWVudFJlc3BvbnNlIGludGVyZmFjZS5cblx0cmV0dXJuIFwiKGZ1bmN0aW9uKGh0dHBSZXNwb25zZSwgaXNCaW5hcnksIGNvbnRleHQpIHtcXG5cIlxuXHRcdCsgXCJ2YXIgcmVzcG9uc2UgPSB7fTtcXG5cIlxuXHRcdCsgXCJyZXNwb25zZS5zdGF0dXNDb2RlID0gaHR0cFJlc3BvbnNlLmdldENvZGUoKTtcXG5cIlxuXHRcdCsgXCJyZXNwb25zZS5zdGF0dXNNZXNzYWdlID0gaHR0cFJlc3BvbnNlLmdldFJlYXNvblBocmFzZSgpO1xcblwiXG5cdFx0KyBcInJlc3BvbnNlLnByb3RvY29sID0gaHR0cFJlc3BvbnNlLmdldFZlcnNpb24oKTtcXG5cIlxuXHRcdCsgXCJyZXNwb25zZS5iaW5hcnkgPSBpc0JpbmFyeTtcXG5cIlxuXG5cdFx0KyBcInZhciBoZWFkZXJzID0gaHR0cFJlc3BvbnNlLmdldEhlYWRlcnMoKTtcXG5cIlxuXHRcdCsgXCJyZXNwb25zZS5oZWFkZXJzID0gW107XFxuXCJcblx0XHQrIFwiZm9yICh2YXIgaSA9IDA7IGkgPCBoZWFkZXJzLmxlbmd0aDsgaSArKykge1xcblwiXG5cdFx0KyBcIiAgICByZXNwb25zZS5oZWFkZXJzLnB1c2goe1xcblwiXG5cdFx0KyBcIiAgICAgICAgbmFtZTogaGVhZGVyc1tpXS5nZXROYW1lKCksXFxuXCJcblx0XHQrIFwiICAgICAgICB2YWx1ZTogaGVhZGVyc1tpXS5nZXRWYWx1ZSgpXFxuXCJcblx0XHQrIFwiICAgIH0pO1xcblwiXG5cdFx0KyBcIn1cXG5cIlxuXG5cdFx0KyBcImlmIChpc0JpbmFyeSkge1xcblwiXG5cdFx0KyBcIiAgICByZXNwb25zZS5kYXRhID0gaHR0cFJlc3BvbnNlLmdldEJvZHlCeXRlcygpO1xcblwiXG5cdFx0KyBcIn0gZWxzZSB7XFxuXCJcblx0XHQrIFwiICAgIHJlc3BvbnNlLnRleHQgPSBodHRwUmVzcG9uc2UuZ2V0Qm9keVRleHQoKTtcXG5cIlxuXHRcdCsgXCJ9XFxuXCJcblxuXHRcdCsgXCIoXCIgKyBjYWxsYmFjayArIFwiKShyZXNwb25zZSwgSlNPTi5wYXJzZShjb250ZXh0KSk7XFxuXCJcblx0XHQrIFwifSkoX19jb250ZXh0LmdldCgncmVzcG9uc2UnKSwgX19jb250ZXh0LmdldCgnaHR0cENsaWVudFJlcXVlc3RPcHRpb25zJykuaXNCaW5hcnkoKSwgX19jb250ZXh0LmdldCgnaHR0cENsaWVudFJlcXVlc3RPcHRpb25zJykuZ2V0Q29udGV4dCgpKTtcXG5cIjtcbn1cblxuLyoqXG4gKiBHZW5lcmF0ZXMgdGhlIHJhdyBKYXZhU2NyaXB0IHN0cmluZyBmb3IgdGhlIGVycm9yIGNhbGxiYWNrLlxuICogQHBhcmFtIGNhbGxiYWNrIFRoZSB1c2VyLXByb3ZpZGVkIGVycm9yIGNhbGxiYWNrIGZ1bmN0aW9uIGNvZGUgc3RyaW5nLlxuICogQHJldHVybnMgVGhlIEphdmFTY3JpcHQgc3RyaW5nIGZvciB0aGUgZXJyb3IgaGFuZGxlciwgb3IgdW5kZWZpbmVkLlxuICovXG5mdW5jdGlvbiBjcmVhdGVFcnJvckNhbGxiYWNrKGNhbGxiYWNrPzogc3RyaW5nKTogc3RyaW5nIHwgdW5kZWZpbmVkIHtcblx0aWYgKGNhbGxiYWNrKSB7XG5cdFx0cmV0dXJuIFwiKFwiICsgY2FsbGJhY2sgKyBcIikoX19jb250ZXh0LmdldCgnZXhjZXB0aW9uJykpXCI7XG5cdH1cbiAgICByZXR1cm4gdW5kZWZpbmVkO1xufVxuXG4vKipcbiAqIEdlbmVyYXRlcyB0aGUgcmF3IEphdmFTY3JpcHQgc3RyaW5nIGZvciB0aGUgY2FuY2VsIGNhbGxiYWNrLlxuICogQHBhcmFtIGNhbGxiYWNrIFRoZSB1c2VyLXByb3ZpZGVkIGNhbmNlbCBjYWxsYmFjayBmdW5jdGlvbiBjb2RlIHN0cmluZy5cbiAqIEByZXR1cm5zIFRoZSBKYXZhU2NyaXB0IHN0cmluZyBmb3IgdGhlIGNhbmNlbCBoYW5kbGVyLCBvciB1bmRlZmluZWQuXG4gKi9cbmZ1bmN0aW9uIGNyZWF0ZUNhbmNlbENhbGxiYWNrKGNhbGxiYWNrPzogc3RyaW5nKTogc3RyaW5nIHwgdW5kZWZpbmVkIHtcblx0aWYgKGNhbGxiYWNrKSB7XG5cdFx0cmV0dXJuIFwiKFwiICsgY2FsbGJhY2sgKyBcIikoKVwiO1xuXHR9XG4gICAgcmV0dXJuIHVuZGVmaW5lZDtcbn1cblxuLyoqXG4gKiBCdWlsZHMgdGhlIGZpbmFsIFVSTCBieSBhcHBlbmRpbmcgYWxsIHF1ZXJ5IHBhcmFtZXRlcnMgZGVmaW5lZCBpbiBvcHRpb25zLnBhcmFtcy5cbiAqIFRoZSBwYXJhbWV0ZXJzIGFyZSBub3QgcmVtb3ZlZCBmcm9tIHRoZSBvcHRpb25zIG9iamVjdCBhcyB0aGV5IGFyZSBmb3IgdGhlIHN5bmNocm9ub3VzIGNsaWVudCxcbiAqIHNpbmNlIHRoZSBvcHRpb25zIGFyZSBwYXNzZWQgYXMgSlNPTiBzdHJpbmcgdG8gdGhlIGZhY2FkZSBhbnl3YXkuXG4gKiBAcGFyYW0gdXJsIFRoZSBiYXNlIFVSTC5cbiAqIEBwYXJhbSBvcHRpb25zIFRoZSByZXF1ZXN0IG9wdGlvbnMgd2hpY2ggbWF5IGNvbnRhaW4gYHBhcmFtc2AuXG4gKiBAcmV0dXJucyBUaGUgVVJMIHdpdGggYXBwZW5kZWQgcXVlcnkgcGFyYW1ldGVycy5cbiAqL1xuZnVuY3Rpb24gYnVpbGRVcmwodXJsOiBzdHJpbmcsIG9wdGlvbnM/OiBIdHRwQ2xpZW50UmVxdWVzdE9wdGlvbnMpOiBzdHJpbmcge1xuXHRpZiAob3B0aW9ucyA9PT0gdW5kZWZpbmVkIHx8IG9wdGlvbnMgPT09IG51bGwgfHwgb3B0aW9ucy5wYXJhbXMgPT09IHVuZGVmaW5lZCB8fCBvcHRpb25zLnBhcmFtcyA9PT0gbnVsbCB8fCBvcHRpb25zLnBhcmFtcy5sZW5ndGggPT09IDApIHtcblx0XHRyZXR1cm4gdXJsO1xuXHR9XG5cdGxldCBuZXdVcmwgPSB1cmw7XG5cdGZvciAobGV0IGkgPSAwOyBpIDwgb3B0aW9ucy5wYXJhbXMubGVuZ3RoOyBpICsrKSB7XG4gICAgICAgIGNvbnN0IHBhcmFtID0gb3B0aW9ucy5wYXJhbXNbaV07XG5cdFx0aWYgKGkgPT09IDApIHtcbiAgICAgICAgICAgIC8vIENoZWNrIGlmIFVSTCBhbHJlYWR5IGNvbnRhaW5zICc/JyBhbmQgdXNlICcmJyBpZiBzbyAoaW1wcm92ZXMgcm9idXN0bmVzcylcbiAgICAgICAgICAgIGlmIChuZXdVcmwuaW5jbHVkZXMoJz8nKSkge1xuICAgICAgICAgICAgICAgIG5ld1VybCArPSAnJic7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIG5ld1VybCArPSAnPyc7XG4gICAgICAgICAgICB9XG5cdFx0XHRuZXdVcmwgKz0gcGFyYW0ubmFtZSArICc9JyArIHBhcmFtLnZhbHVlO1xuXHRcdH0gZWxzZSB7XG5cdFx0XHRuZXdVcmwgKz0gJyYnICsgcGFyYW0ubmFtZSArICc9JyArIHBhcmFtLnZhbHVlO1xuXHRcdH1cblx0fVxuXHRyZXR1cm4gbmV3VXJsO1xufVxuXG4vLyBAdHMtaWdub3JlXG5pZiAodHlwZW9mIG1vZHVsZSAhPT0gJ3VuZGVmaW5lZCcpIHtcblx0Ly8gQHRzLWlnbm9yZVxuXHRtb2R1bGUuZXhwb3J0cyA9IHsgSHR0cEFzeW5jQ2xpZW50LCBnZXRJbnN0YW5jZSB9O1xufSJdLAogICJtYXBwaW5ncyI6ICJBQXVJQSxNQUFNLHdCQUF3QixLQUFLLEtBQUssaUVBQWlFO0FBR3pHLE1BQU0scUJBQXFCLEtBQUssS0FBSyw0REFBNEQ7QUFHakcsTUFBTSxhQUFhLG1CQUFtQixRQUFRLHNCQUFzQixLQUFLO0FBT2xFLE1BQU0sZ0JBQWdCO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsRUFRNUIsU0FBUyxLQUFhLFFBQStCLFNBQTBDO0FBQzlGLFVBQU0sU0FBUyxTQUFTLEtBQUssT0FBTztBQUNwQyxVQUFNLFdBQVc7QUFBQSxNQUNoQjtBQUFBLE1BQ0EsT0FBTztBQUFBLE1BQ1AsT0FBTztBQUFBLE1BQ1AsT0FBTztBQUFBLElBQ1I7QUFDQSxRQUFJLFNBQVM7QUFDWixpQkFBVyxTQUFTLFFBQVEsS0FBSyxVQUFVLE9BQU8sR0FBRyxRQUFRO0FBQUEsSUFDOUQsT0FBTztBQUNOLGlCQUFXLFNBQVMsUUFBUSxLQUFLLFVBQVUsQ0FBQyxDQUFDLEdBQUcsUUFBUTtBQUFBLElBQ3pEO0FBQUEsRUFDRDtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLEVBUUEsVUFBVSxLQUFhLFFBQStCLFNBQTBDO0FBQy9GLFVBQU0sU0FBUyxTQUFTLEtBQUssT0FBTztBQUNwQyxVQUFNLFdBQVc7QUFBQSxNQUNoQjtBQUFBLE1BQ0EsT0FBTztBQUFBLE1BQ1AsT0FBTztBQUFBLE1BQ1AsT0FBTztBQUFBLElBQ1I7QUFDQSxRQUFJLFNBQVM7QUFDWixpQkFBVyxVQUFVLFFBQVEsS0FB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
|
package/dist/esm/qldb/qldb.mjs
CHANGED
|
@@ -2,4 +2,4 @@ const QLDBRepository = Java.type("org.eclipse.dirigible.components.api.qldb.QLDB
|
|
|
2
2
|
export {
|
|
3
3
|
QLDBRepository
|
|
4
4
|
};
|
|
5
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
5
|
+
//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vc3JjL3FsZGIvcWxkYi50cyJdLAogICJzb3VyY2VzQ29udGVudCI6IFsiLyoqXG4gKiBAbW9kdWxlIHFsZGIvcWxkYlxuICogQHBhY2thZ2UgQGFlcm9raXQvc2RrL3FsZGJcbiAqIEBuYW1lIFFMREJSZXBvc2l0b3J5XG4gKiBAb3ZlcnZpZXdcbiAqXG4gKiBFbnRyeSBwb2ludCBmb3IgQW1hem9uIFFMREIgcmVwb3NpdG9yeSBpbnRlZ3JhdGlvbiBpbiBBZXJva2l0IFNESy5cbiAqXG4gKiBFeHBvc2VzIHRoZSBgUUxEQlJlcG9zaXRvcnlgIGNsYXNzIGFsaWFzIHRvIHRoZSB1bmRlcmx5aW5nIEphdmEgaW1wbGVtZW50YXRpb246XG4gKiBgb3JnLmVjbGlwc2UuZGlyaWdpYmxlLmNvbXBvbmVudHMuYXBpLnFsZGIuUUxEQlJlcG9zaXRvcnlgLlxuICpcbiAqIFRoaXMgb2JqZWN0IGlzIHVzZWQgdG8gY3JlYXRlIGFuZCBtYW5hZ2UgUUxEQiBsZWRnZXIgc2Vzc2lvbnMsIGV4ZWN1dGUgc3RhdGVtZW50cyxcbiAqIGFuZCBoYW5kbGUgdHJhbnNhY3Rpb24gbGlmZWN5Y2xlcyBmcm9tIEphdmFTY3JpcHQgY29kZS5cbiAqXG4gKiBUaGUgUUxEQiBkcml2ZXIgaXMgYW4gYWRkLW9uIHRoYXQgdGhlIGRlZmF1bHQgYnVuZGxlIGRvZXMgbm90IHNoaXA6IHRoZSBhcHBsaWNhdGlvbiBhZGRzXG4gKiBgb3JnLmVjbGlwc2UuZGlyaWdpYmxlOmRpcmlnaWJsZS1jb21wb25lbnRzLWFwaS1xbGRiLWRyaXZlcmAgKGA8dHlwZT5wb208L3R5cGU+YCkuIFdpdGhvdXQgaXQsXG4gKiBgbmV3IFFMREJSZXBvc2l0b3J5KC4uLilgIHRocm93cyBgUWxkYk5vdEF2YWlsYWJsZUV4Y2VwdGlvbmAgbmFtaW5nIHRoYXQgYXJ0aWZhY3QuXG4gKi9cblxuZXhwb3J0IGNvbnN0IFFMREJSZXBvc2l0b3J5ID0gSmF2YS50eXBlKFwib3JnLmVjbGlwc2UuZGlyaWdpYmxlLmNvbXBvbmVudHMuYXBpLnFsZGIuUUxEQlJlcG9zaXRvcnlcIik7Il0sCiAgIm1hcHBpbmdzIjogIkFBbUJPLE1BQU0saUJBQWlCLEtBQUssS0FBSywwREFBMEQ7IiwKICAibmFtZXMiOiBbXQp9Cg==
|
package/package.json
CHANGED
package/test/flows/list.js
CHANGED
|
@@ -40,10 +40,43 @@ export function listFlow(manifest, entity) {
|
|
|
40
40
|
const emptyState = page.getByText('Get started by creating the first record').filter({ visible: true }).first();
|
|
41
41
|
await expect(firstHeader.or(emptyState).first()).toBeVisible();
|
|
42
42
|
if (entity.expectSeedData || (await firstHeader.isVisible())) {
|
|
43
|
-
for (const
|
|
44
|
-
await expect(page.getByRole('columnheader').filter({ hasText:
|
|
43
|
+
for (const label of declaredColumns(entity)) {
|
|
44
|
+
await expect(page.getByRole('columnheader').filter({ hasText: label }).first()).toBeVisible();
|
|
45
|
+
}
|
|
46
|
+
for (const label of hiddenColumns(entity)) {
|
|
47
|
+
await expect(page.getByRole('columnheader').filter({ hasText: label })).toHaveCount(0);
|
|
45
48
|
}
|
|
46
49
|
await expect(page.locator('tbody tr:visible').first()).toBeVisible();
|
|
47
50
|
}
|
|
48
51
|
});
|
|
49
52
|
}
|
|
53
|
+
|
|
54
|
+
// The headers the list is expected to render, in order (dirigible #7664). `list:` curates the list
|
|
55
|
+
// INDEPENDENTLY of each field's own `major`, so an entity that declares it renders exactly those
|
|
56
|
+
// columns and the `major` rule says nothing about it - which is why asserting the rule against a
|
|
57
|
+
// curated entity failed on the first instance that held a row, and passed on every empty one,
|
|
58
|
+
// where the assertion never runs at all.
|
|
59
|
+
function declaredColumns(entity) {
|
|
60
|
+
if (entity.list?.length) return entity.list.map((name) => columnLabel(entity, name));
|
|
61
|
+
return (entity.fields ?? []).filter((f) => f.major !== false && !f.primaryKey).map(labelOf);
|
|
62
|
+
}
|
|
63
|
+
|
|
64
|
+
// ...and the ones it must NOT render. A curated list is the whole statement, so a field left off it
|
|
65
|
+
// is absent from the table however its own `major` reads - the half that catches a `list:` the page
|
|
66
|
+
// ignored.
|
|
67
|
+
function hiddenColumns(entity) {
|
|
68
|
+
if (!entity.list?.length) return [];
|
|
69
|
+
const listed = new Set(entity.list);
|
|
70
|
+
return (entity.fields ?? [])
|
|
71
|
+
.filter((f) => !f.primaryKey && !listed.has(f.name))
|
|
72
|
+
.map(labelOf);
|
|
73
|
+
}
|
|
74
|
+
|
|
75
|
+
// A `list:` entry names a property - a field, or a to-one relation - and the header carries that
|
|
76
|
+
// property's own label, which is what the manifest's `label` on the field already is.
|
|
77
|
+
function columnLabel(entity, name) {
|
|
78
|
+
const field = (entity.fields ?? []).find((f) => f.name === name);
|
|
79
|
+
if (field) return labelOf(field);
|
|
80
|
+
const relation = (entity.relations ?? []).find((r) => r.name === name);
|
|
81
|
+
return relation?.label ?? name;
|
|
82
|
+
}
|
package/test/form.js
CHANGED
|
@@ -86,9 +86,20 @@ export async function resolveRelationSamples(request, manifest, entity) {
|
|
|
86
86
|
if (relation.entityStatus) continue;
|
|
87
87
|
// a filtered picker needs a matching candidate, so fetch a page and filter client-side; a
|
|
88
88
|
// constrained relation needs alternatives to choose from
|
|
89
|
-
const wide =
|
|
89
|
+
const wide =
|
|
90
|
+
relation.where || relation.leafOnly || relation.pickable || relation.forbiddenTarget || constrained.has(relation.name);
|
|
90
91
|
const { rows: fetched, labelFrom } = await fetchRows(relation, wide ? 200 : 1);
|
|
91
92
|
let rows = relation.where ? fetched?.filter((r) => String(r[relation.where.by]) === String(relation.where.value)) : fetched;
|
|
93
|
+
// A picker rule narrows what the chooser OFFERS (dirigible #7663) and the child's own
|
|
94
|
+
// forbidWhen decides which parent it accepts at all (#7667). Both refuse a row the manifest
|
|
95
|
+
// otherwise describes as a candidate, so the sample has to respect them or the record is built
|
|
96
|
+
// from a row the UI never offers and the REST create is answered 400.
|
|
97
|
+
if (rows?.length && relation.pickable?.when?.length) {
|
|
98
|
+
rows = rows.filter((row) => relation.pickable.when.every((term) => termHolds(row, term)));
|
|
99
|
+
}
|
|
100
|
+
if (rows?.length && relation.forbiddenTarget?.length) {
|
|
101
|
+
rows = rows.filter((row) => !relation.forbiddenTarget.some((term) => termHolds(row, term)));
|
|
102
|
+
}
|
|
92
103
|
if (relation.leafOnly && rows?.length) {
|
|
93
104
|
// the generated validation rejects a non-leaf target - pick a row no other row parents
|
|
94
105
|
const prop = relation.leafOnly.hierarchyProperty;
|
|
@@ -97,7 +108,7 @@ export async function resolveRelationSamples(request, manifest, entity) {
|
|
|
97
108
|
}
|
|
98
109
|
if (!rows?.length) {
|
|
99
110
|
// a required FK cannot be satisfied - fail loudly; an optional one is simply left unset
|
|
100
|
-
if (relation.required) throw new Error(`Relation ${entity.name}.${relation.name}:
|
|
111
|
+
if (relation.required) throw new Error(`Relation ${entity.name}.${relation.name}: ${noCandidateReason(relation)}`);
|
|
101
112
|
continue;
|
|
102
113
|
}
|
|
103
114
|
const label = rows[0][labelFrom];
|
|
@@ -178,3 +189,26 @@ export async function fillForm(page, manifest, entity, record, relationSamples,
|
|
|
178
189
|
const dependents = pickable.filter((s) => s.relation.dependsOn);
|
|
179
190
|
for (const sample of [...triggers, ...dependents]) await pickDropdown(page, sample.relation, sample.label);
|
|
180
191
|
}
|
|
192
|
+
|
|
193
|
+
// One term of a picker rule or of a forbidWhen reaching through a relation, as the manifest writes
|
|
194
|
+
// it: `{ by, op, value }` with `op` one of eq / ne / present / absent, a presence test carrying no
|
|
195
|
+
// value. Compared as strings, because an id arrives as a number from REST and as text from a
|
|
196
|
+
// rendered option.
|
|
197
|
+
function termHolds(row, term) {
|
|
198
|
+
const value = row?.[term.by];
|
|
199
|
+
const empty = value == null || String(value).trim() === '';
|
|
200
|
+
if (term.op === 'present') return !empty;
|
|
201
|
+
if (term.op === 'absent') return empty;
|
|
202
|
+
if (term.op === 'ne') return String(value) !== String(term.value);
|
|
203
|
+
return String(value) === String(term.value);
|
|
204
|
+
}
|
|
205
|
+
|
|
206
|
+
// Why a required relation had nothing to pick: the rule that excluded every row, in the words the
|
|
207
|
+
// model authored it in, so the failure names the business rule rather than "no rows".
|
|
208
|
+
function noCandidateReason(relation) {
|
|
209
|
+
const refusal = (relation.forbiddenTarget ?? []).find((term) => term.message)?.message;
|
|
210
|
+
if (refusal) return `every ${relation.to} is refused - ${refusal}`;
|
|
211
|
+
if (relation.forbiddenTarget?.length) return `every ${relation.to} is in a state this record refuses`;
|
|
212
|
+
if (relation.pickable?.when?.length) return `no ${relation.to} row satisfies the picker rule`;
|
|
213
|
+
return `no ${relation.to} rows to pick from`;
|
|
214
|
+
}
|
|
@@ -1,71 +0,0 @@
|
|
|
1
|
-
var __defProp = Object.defineProperty;
|
|
2
|
-
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
3
|
-
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
4
|
-
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
5
|
-
var __export = (target, all) => {
|
|
6
|
-
for (var name in all)
|
|
7
|
-
__defProp(target, name, { get: all[name], enumerable: true });
|
|
8
|
-
};
|
|
9
|
-
var __copyProps = (to, from, except, desc) => {
|
|
10
|
-
if (from && typeof from === "object" || typeof from === "function") {
|
|
11
|
-
for (let key of __getOwnPropNames(from))
|
|
12
|
-
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
13
|
-
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
14
|
-
}
|
|
15
|
-
return to;
|
|
16
|
-
};
|
|
17
|
-
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
18
|
-
var consumer_exports = {};
|
|
19
|
-
__export(consumer_exports, {
|
|
20
|
-
Consumer: () => Consumer
|
|
21
|
-
});
|
|
22
|
-
module.exports = __toCommonJS(consumer_exports);
|
|
23
|
-
const KafkaFacade = Java.type("org.eclipse.dirigible.components.api.kafka.KafkaFacade");
|
|
24
|
-
class Consumer {
|
|
25
|
-
/**
|
|
26
|
-
* Creates a new topic configuration wrapper that can be used to start or
|
|
27
|
-
* stop listening for messages on a Kafka topic.
|
|
28
|
-
*
|
|
29
|
-
* @param destination The name of the Kafka topic to consume messages from.
|
|
30
|
-
* @param configuration Optional key-value object containing Kafka consumer properties
|
|
31
|
-
* (e.g., 'group.id', 'auto.offset.reset').
|
|
32
|
-
* @returns A {@link Topic} instance configured for the specified destination and properties.
|
|
33
|
-
*/
|
|
34
|
-
static topic(destination, configuration = {}) {
|
|
35
|
-
return new Topic(destination, configuration);
|
|
36
|
-
}
|
|
37
|
-
}
|
|
38
|
-
class Topic {
|
|
39
|
-
destination;
|
|
40
|
-
configuration = {};
|
|
41
|
-
/**
|
|
42
|
-
* @param destination The name of the Kafka topic.
|
|
43
|
-
* @param configuration Optional key-value object for consumer properties.
|
|
44
|
-
*/
|
|
45
|
-
constructor(destination, configuration = {}) {
|
|
46
|
-
this.destination = destination;
|
|
47
|
-
this.configuration = configuration;
|
|
48
|
-
}
|
|
49
|
-
/**
|
|
50
|
-
* Starts listening to the configured topic in a background process.
|
|
51
|
-
*
|
|
52
|
-
* @param handler The path to the script or function name that will handle the incoming Kafka messages.
|
|
53
|
-
* This function should accept two arguments: `message` (string) and `headers` (object).
|
|
54
|
-
* @param timeout The maximum amount of time (in milliseconds) the consumer should wait for messages.
|
|
55
|
-
*/
|
|
56
|
-
startListening(handler, timeout) {
|
|
57
|
-
KafkaFacade.startListening(this.destination, handler, timeout, JSON.stringify(this.configuration));
|
|
58
|
-
}
|
|
59
|
-
/**
|
|
60
|
-
* Stops the background process that is listening to the configured topic.
|
|
61
|
-
* Note: Stopping is based on matching the topic and configuration, so the same
|
|
62
|
-
* configuration object used in `startListening` should be used here.
|
|
63
|
-
*/
|
|
64
|
-
stopListening() {
|
|
65
|
-
KafkaFacade.stopListening(this.destination, JSON.stringify(this.configuration));
|
|
66
|
-
}
|
|
67
|
-
}
|
|
68
|
-
if (typeof module !== "undefined") {
|
|
69
|
-
module.exports = Consumer;
|
|
70
|
-
}
|
|
71
|
-
//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vc3JjL2thZmthL2NvbnN1bWVyLnRzIl0sCiAgInNvdXJjZXNDb250ZW50IjogWyIvKipcbiAqIEBtb2R1bGUga2Fma2EvY29uc3VtZXJcbiAqIEBwYWNrYWdlIEBhZXJva2l0L3Nkay9rYWZrYVxuICogQG5hbWUgQ29uc3VtZXJcbiAqIEBvdmVydmlld1xuICogXG4gKiBUaGUgQ29uc3VtZXIgbW9kdWxlIHByb3ZpZGVzIGFuIEFQSSBmb3IgY29uZmlndXJpbmcgYW5kIG1hbmFnaW5nIEthZmthIGNvbnN1bWVycywgYWxsb3dpbmcgc2NyaXB0cyB0byBzdGFydCBhbmQgc3RvcCBsaXN0ZW5pbmcgdG8gc3BlY2lmaWMgdG9waWNzLiBJdCBhYnN0cmFjdHMgdGhlIGNvbXBsZXhpdGllcyBvZiBLYWZrYSBjb25zdW1lciBjb25maWd1cmF0aW9uIGFuZCBsaWZlY3ljbGUgbWFuYWdlbWVudCwgZW5hYmxpbmcgZGV2ZWxvcGVycyB0byBlYXNpbHkgaW50ZWdyYXRlIEthZmthIG1lc3NhZ2UgY29uc3VtcHRpb24gaW50byB0aGVpciBhcHBsaWNhdGlvbnMuXG4gKiBcbiAqICMjIyBLZXkgRmVhdHVyZXM6XG4gKiAtICoqVG9waWMgQ29uZmlndXJhdGlvbioqOiBUaGUgYENvbnN1bWVyLnRvcGljYCBtZXRob2QgYWxsb3dzIGRldmVsb3BlcnMgdG8gY3JlYXRlIGEgdG9waWMgY29uZmlndXJhdGlvbiB3cmFwcGVyIHdpdGggc3BlY2lmaWVkIGRlc3RpbmF0aW9uIGFuZCBwcm9wZXJ0aWVzLlxuICogLSAqKkJhY2tncm91bmQgTGlzdGVuaW5nKio6IFRoZSBgc3RhcnRMaXN0ZW5pbmdgIG1ldGhvZCBzdGFydHMgYSBiYWNrZ3JvdW5kIHByb2Nlc3MgdGhhdCBsaXN0ZW5zIGZvciBtZXNzYWdlcyBvbiB0aGUgY29uZmlndXJlZCB0b3BpYywgaW52b2tpbmcgYSBzcGVjaWZpZWQgaGFuZGxlciBmdW5jdGlvbiBmb3IgaW5jb21pbmcgbWVzc2FnZXMuXG4gKiAtICoqR3JhY2VmdWwgU2h1dGRvd24qKjogVGhlIGBzdG9wTGlzdGVuaW5nYCBtZXRob2QgYWxsb3dzIGRldmVsb3BlcnMgdG8gc3RvcCB0aGUgYmFja2dyb3VuZCBsaXN0ZW5pbmcgcHJvY2VzcyBiYXNlZCBvbiB0aGUgdG9waWMgYW5kIGNvbmZpZ3VyYXRpb24uXG4gKiBcbiAqICMjIyBVc2UgQ2FzZXM6XG4gKiAtICoqUmVhbC10aW1lIERhdGEgUHJvY2Vzc2luZyoqOiBEZXZlbG9wZXJzIGNhbiB1c2UgdGhpcyBtb2R1bGUgdG8gY29uc3VtZSBtZXNzYWdlcyBmcm9tIEthZmthIHRvcGljcyBpbiByZWFsLXRpbWUsIGVuYWJsaW5nIHVzZSBjYXNlcyBzdWNoIGFzIHN0cmVhbSBwcm9jZXNzaW5nLCBldmVudC1kcml2ZW4gYXJjaGl0ZWN0dXJlcywgYW5kIG1pY3Jvc2VydmljZXMgY29tbXVuaWNhdGlvbi5cbiAqIC0gKipJbnRlZ3JhdGlvbiB3aXRoIE90aGVyIFN5c3RlbXMqKjogQnkgY29uc3VtaW5nIEthZmthIG1lc3NhZ2VzLCBhcHBsaWNhdGlvbnMgY2FuIGludGVncmF0ZSB3aXRoIG90aGVyIHN5c3RlbXMgdGhhdCBwcm9kdWNlIG1lc3NhZ2VzIHRvIEthZmthLCBmYWNpbGl0YXRpbmcgZGF0YSBmbG93IGFjcm9zcyBkaWZmZXJlbnQgY29tcG9uZW50cyBvZiBhbiBlY29zeXN0ZW0uXG4gKiBcbiAqICMjIyBFeGFtcGxlIFVzYWdlOlxuICogYGBgdHNcbiAqIGltcG9ydCB7IENvbnN1bWVyIH0gZnJvbSBcIkBhZXJva2l0L3Nkay9rYWZrYVwiO1xuICogXG4gKiAvLyBDcmVhdGUgYSBjb25zdW1lciBmb3IgdGhlIFwib3JkZXJzXCIgdG9waWMgd2l0aCBzcGVjaWZpYyBjb25maWd1cmF0aW9uXG4gKiBjb25zdCBvcmRlcnNDb25zdW1lciA9IENvbnN1bWVyLnRvcGljKFwib3JkZXJzXCIsIHsgXCJncm91cC5pZFwiOiBcIm9yZGVyLXByb2Nlc3NvcnNcIiB9KTtcbiAqIFxuICogLy8gU3RhcnQgbGlzdGVuaW5nIHRvIHRoZSBcIm9yZGVyc1wiIHRvcGljIHdpdGggYSBtZXNzYWdlIGhhbmRsZXIgYW5kIHRpbWVvdXRcbiAqIG9yZGVyc0NvbnN1bWVyLnN0YXJ0TGlzdGVuaW5nKFwiaGFuZGxlT3JkZXJNZXNzYWdlXCIsIDMwMDAwKTtcbiAqIFxuICogLy8gTGF0ZXIsIHN0b3AgbGlzdGVuaW5nIHRvIHRoZSBcIm9yZGVyc1wiIHRvcGljXG4gKiBvcmRlcnNDb25zdW1lci5zdG9wTGlzdGVuaW5nKCk7XG4gKiBgYGBcbiAqL1xuXG5jb25zdCBLYWZrYUZhY2FkZSA9IEphdmEudHlwZShcIm9yZy5lY2xpcHNlLmRpcmlnaWJsZS5jb21wb25lbnRzLmFwaS5rYWZrYS5LYWZrYUZhY2FkZVwiKTtcblxuLyoqXG4gKiBUaGUgQ29uc3VtZXIgY2xhc3MgYWN0cyBhcyB0aGUgbWFpbiBlbnRyeSBwb2ludCBmb3IgY3JlYXRpbmcgYW5kIGNvbmZpZ3VyaW5nXG4gKiBLYWZrYSB0b3BpYyBjb25zdW1lcnMuXG4gKi9cbmV4cG9ydCBjbGFzcyBDb25zdW1lciB7XG5cbiAgICAvKipcbiAgICAgKiBDcmVhdGVzIGEgbmV3IHRvcGljIGNvbmZpZ3VyYXRpb24gd3JhcHBlciB0aGF0IGNhbiBiZSB1c2VkIHRvIHN0YXJ0IG9yXG4gICAgICogc3RvcCBsaXN0ZW5pbmcgZm9yIG1lc3NhZ2VzIG9uIGEgS2Fma2EgdG9waWMuXG4gICAgICpcbiAgICAgKiBAcGFyYW0gZGVzdGluYXRpb24gVGhlIG5hbWUgb2YgdGhlIEthZmthIHRvcGljIHRvIGNvbnN1bWUgbWVzc2FnZXMgZnJvbS5cbiAgICAgKiBAcGFyYW0gY29uZmlndXJhdGlvbiBPcHRpb25hbCBrZXktdmFsdWUgb2JqZWN0IGNvbnRhaW5pbmcgS2Fma2EgY29uc3VtZXIgcHJvcGVydGllc1xuICAgICAqIChlLmcuLCAnZ3JvdXAuaWQnLCAnYXV0by5vZmZzZXQucmVzZXQnKS5cbiAgICAgKiBAcmV0dXJucyBBIHtAbGluayBUb3BpY30gaW5zdGFuY2UgY29uZmlndXJlZCBmb3IgdGhlIHNwZWNpZmllZCBkZXN0aW5hdGlvbiBhbmQgcHJvcGVydGllcy5cbiAgICAgKi9cbiAgICBwdWJsaWMgc3RhdGljIHRvcGljKGRlc3RpbmF0aW9uOiBzdHJpbmcsIGNvbmZpZ3VyYXRpb246IHsgW2tleTogc3RyaW5nXTogc3RyaW5nIH0gPSB7fSk6IFRvcGljIHtcbiAgICAgICAgcmV0dXJuIG5ldyBUb3BpYyhkZXN0aW5hdGlvbiwgY29uZmlndXJhdGlvbik7XG4gICAgfVxufVxuXG4vKipcbiAqIFJlcHJlc2VudHMgYSBjb25maWd1cmVkIEthZmthIHRvcGljIGNvbnN1bWVyIGNhcGFibGUgb2Ygc3RhcnRpbmcgYW5kIHN0b3BwaW5nXG4gKiBiYWNrZ3JvdW5kIG1lc3NhZ2UgbGlzdGVuaW5nLlxuICovXG5jbGFzcyBUb3BpYyB7XG4gICAgcHJpdmF0ZSBkZXN0aW5hdGlvbjogc3RyaW5nO1xuICAgIHByaXZhdGUgY29uZmlndXJhdGlvbjogeyBba2V5OiBzdHJpbmddOiBzdHJpbmcgfSA9IHt9O1xuXG4gICAgLyoqXG4gICAgICogQHBhcmFtIGRlc3RpbmF0aW9uIFRoZSBuYW1lIG9mIHRoZSBLYWZrYSB0b3BpYy5cbiAgICAgKiBAcGFyYW0gY29uZmlndXJhdGlvbiBPcHRpb25hbCBrZXktdmFsdWUgb2JqZWN0IGZvciBjb25zdW1lciBwcm9wZXJ0aWVzLlxuICAgICAqL1xuICAgIGNvbnN0cnVjdG9yKGRlc3RpbmF0aW9uOiBzdHJpbmcsIGNvbmZpZ3VyYXRpb246IHsgW2tleTogc3RyaW5nXTogc3RyaW5nIH0gPSB7fSkge1xuICAgICAgICB0aGlzLmRlc3RpbmF0aW9uID0gZGVzdGluYXRpb247XG4gICAgICAgIHRoaXMuY29uZmlndXJhdGlvbiA9IGNvbmZpZ3VyYXRpb247XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogU3RhcnRzIGxpc3RlbmluZyB0byB0aGUgY29uZmlndXJlZCB0b3BpYyBpbiBhIGJhY2tncm91bmQgcHJvY2Vzcy5cbiAgICAgKlxuICAgICAqIEBwYXJhbSBoYW5kbGVyIFRoZSBwYXRoIHRvIHRoZSBzY3JpcHQgb3IgZnVuY3Rpb24gbmFtZSB0aGF0IHdpbGwgaGFuZGxlIHRoZSBpbmNvbWluZyBLYWZrYSBtZXNzYWdlcy5cbiAgICAgKiBUaGlzIGZ1bmN0aW9uIHNob3VsZCBhY2NlcHQgdHdvIGFyZ3VtZW50czogYG1lc3NhZ2VgIChzdHJpbmcpIGFuZCBgaGVhZGVyc2AgKG9iamVjdCkuXG4gICAgICogQHBhcmFtIHRpbWVvdXQgVGhlIG1heGltdW0gYW1vdW50IG9mIHRpbWUgKGluIG1pbGxpc2Vjb25kcykgdGhlIGNvbnN1bWVyIHNob3VsZCB3YWl0IGZvciBtZXNzYWdlcy5cbiAgICAgKi9cbiAgICBwdWJsaWMgc3RhcnRMaXN0ZW5pbmcoaGFuZGxlcjogc3RyaW5nLCB0aW1lb3V0OiBudW1iZXIpOiB2b2lkIHtcbiAgICAgICAgS2Fma2FGYWNhZGUuc3RhcnRMaXN0ZW5pbmcodGhpcy5kZXN0aW5hdGlvbiwgaGFuZGxlciwgdGltZW91dCwgSlNPTi5zdHJpbmdpZnkodGhpcy5jb25maWd1cmF0aW9uKSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogU3RvcHMgdGhlIGJhY2tncm91bmQgcHJvY2VzcyB0aGF0IGlzIGxpc3RlbmluZyB0byB0aGUgY29uZmlndXJlZCB0b3BpYy5cbiAgICAgKiBOb3RlOiBTdG9wcGluZyBpcyBiYXNlZCBvbiBtYXRjaGluZyB0aGUgdG9waWMgYW5kIGNvbmZpZ3VyYXRpb24sIHNvIHRoZSBzYW1lXG4gICAgICogY29uZmlndXJhdGlvbiBvYmplY3QgdXNlZCBpbiBgc3RhcnRMaXN0ZW5pbmdgIHNob3VsZCBiZSB1c2VkIGhlcmUuXG4gICAgICovXG4gICAgcHVibGljIHN0b3BMaXN0ZW5pbmcoKTogdm9pZCB7XG4gICAgICAgIEthZmthRmFjYWRlLnN0b3BMaXN0ZW5pbmcodGhpcy5kZXN0aW5hdGlvbiwgSlNPTi5zdHJpbmdpZnkodGhpcy5jb25maWd1cmF0aW9uKSk7XG4gICAgfVxufVxuXG4vLyBAdHMtaWdub3JlXG5pZiAodHlwZW9mIG1vZHVsZSAhPT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAvLyBAdHMtaWdub3JlXG4gICAgbW9kdWxlLmV4cG9ydHMgPSBDb25zdW1lcjtcbn0iXSwKICAibWFwcGluZ3MiOiAiOzs7Ozs7Ozs7Ozs7Ozs7OztBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFnQ0EsTUFBTSxjQUFjLEtBQUssS0FBSyx3REFBd0Q7QUFNL0UsTUFBTSxTQUFTO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsRUFXbEIsT0FBYyxNQUFNLGFBQXFCLGdCQUEyQyxDQUFDLEdBQVU7QUFDM0YsV0FBTyxJQUFJLE1BQU0sYUFBYSxhQUFhO0FBQUEsRUFDL0M7QUFDSjtBQU1BLE1BQU0sTUFBTTtBQUFBLEVBQ0E7QUFBQSxFQUNBLGdCQUEyQyxDQUFDO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxFQU1wRCxZQUFZLGFBQXFCLGdCQUEyQyxDQUFDLEdBQUc7QUFDNUUsU0FBSyxjQUFjO0FBQ25CLFNBQUssZ0JBQWdCO0FBQUEsRUFDekI7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLEVBU08sZUFBZSxTQUFpQixTQUF1QjtBQUMxRCxnQkFBWSxlQUFlLEtBQUssYUFBYSxTQUFTLFNBQVMsS0FBSyxVQUFVLEtBQUssYUFBYSxDQUFDO0FBQUEsRUFDckc7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsRUFPTyxnQkFBc0I7QUFDekIsZ0JBQVksY0FBYyxLQUFLLGFBQWEsS0FBSyxVQUFVLEtBQUssYUFBYSxDQUFDO0FBQUEsRUFDbEY7QUFDSjtBQUdBLElBQUksT0FBTyxXQUFXLGFBQWE7QUFFL0IsU0FBTyxVQUFVO0FBQ3JCOyIsCiAgIm5hbWVzIjogW10KfQo=
|
package/dist/cjs/kafka/index.js
DELETED
|
@@ -1,29 +0,0 @@
|
|
|
1
|
-
var __defProp = Object.defineProperty;
|
|
2
|
-
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
3
|
-
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
4
|
-
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
5
|
-
var __export = (target, all) => {
|
|
6
|
-
for (var name in all)
|
|
7
|
-
__defProp(target, name, { get: all[name], enumerable: true });
|
|
8
|
-
};
|
|
9
|
-
var __copyProps = (to, from, except, desc) => {
|
|
10
|
-
if (from && typeof from === "object" || typeof from === "function") {
|
|
11
|
-
for (let key of __getOwnPropNames(from))
|
|
12
|
-
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
13
|
-
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
14
|
-
}
|
|
15
|
-
return to;
|
|
16
|
-
};
|
|
17
|
-
var __reExport = (target, mod, secondTarget) => (__copyProps(target, mod, "default"), secondTarget && __copyProps(secondTarget, mod, "default"));
|
|
18
|
-
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
19
|
-
var kafka_exports = {};
|
|
20
|
-
__export(kafka_exports, {
|
|
21
|
-
consumer: () => import_consumer.Consumer,
|
|
22
|
-
producer: () => import_producer.Producer
|
|
23
|
-
});
|
|
24
|
-
module.exports = __toCommonJS(kafka_exports);
|
|
25
|
-
var import_consumer = require("./consumer");
|
|
26
|
-
__reExport(kafka_exports, require("./consumer"), module.exports);
|
|
27
|
-
var import_producer = require("./producer");
|
|
28
|
-
__reExport(kafka_exports, require("./producer"), module.exports);
|
|
29
|
-
//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vc3JjL2thZmthL2luZGV4LnRzIl0sCiAgInNvdXJjZXNDb250ZW50IjogWyIvKipcbiAqIEBtb2R1bGUga2Fma2EvaW5kZXhcbiAqIEBwYWNrYWdlIEBhZXJva2l0L3Nkay9rYWZrYVxuICogQG92ZXJ2aWV3XG4gKiBcbiAqIFRoaXMgbW9kdWxlIHByb3ZpZGVzIGZ1bmN0aW9uYWxpdGllcyBmb3IgS2Fma2EgaW50ZWdyYXRpb24gd2l0aGluIHRoZSBBZXJva2l0IFNESy4gSXQgaW5jbHVkZXMgY2xhc3NlcyBhbmQgbWV0aG9kcyBmb3IgcHJvZHVjaW5nIGFuZCBjb25zdW1pbmcgbWVzc2FnZXMgZnJvbSBLYWZrYSB0b3BpY3MsIGFzIHdlbGwgYXMgbWFuYWdpbmcgS2Fma2EgY29uZmlndXJhdGlvbnMgYW5kIGNvbm5lY3Rpb25zLlxuICogXG4gKiBUaGUgbWFpbiBjb21wb25lbnRzIG9mIHRoaXMgbW9kdWxlIGFyZTpcbiAqIC0gQ29uc3VtZXI6IFJlcHJlc2VudHMgYSBLYWZrYSBjb25zdW1lciB0aGF0IGNhbiBzdWJzY3JpYmUgdG8gdG9waWNzIGFuZCBjb25zdW1lIG1lc3NhZ2VzLlxuICogLSBQcm9kdWNlcjogUmVwcmVzZW50cyBhIEthZmthIHByb2R1Y2VyIHRoYXQgY2FuIHNlbmQgbWVzc2FnZXMgdG8gdG9waWNzLlxuICovXG5cbmV4cG9ydCB7IENvbnN1bWVyIGFzIGNvbnN1bWVyIH0gZnJvbSBcIi4vY29uc3VtZXJcIjtcbmV4cG9ydCAqIGZyb20gXCIuL2NvbnN1bWVyXCI7XG5leHBvcnQgeyBQcm9kdWNlciBhcyBwcm9kdWNlciB9IGZyb20gXCIuL3Byb2R1Y2VyXCI7XG5leHBvcnQgKiBmcm9tIFwiLi9wcm9kdWNlclwiOyJdLAogICJtYXBwaW5ncyI6ICI7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQVlBLHNCQUFxQztBQUNyQywwQkFBYyx1QkFiZDtBQWNBLHNCQUFxQztBQUNyQywwQkFBYyx1QkFmZDsiLAogICJuYW1lcyI6IFtdCn0K
|
|
@@ -1,72 +0,0 @@
|
|
|
1
|
-
var __defProp = Object.defineProperty;
|
|
2
|
-
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
3
|
-
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
4
|
-
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
5
|
-
var __export = (target, all) => {
|
|
6
|
-
for (var name in all)
|
|
7
|
-
__defProp(target, name, { get: all[name], enumerable: true });
|
|
8
|
-
};
|
|
9
|
-
var __copyProps = (to, from, except, desc) => {
|
|
10
|
-
if (from && typeof from === "object" || typeof from === "function") {
|
|
11
|
-
for (let key of __getOwnPropNames(from))
|
|
12
|
-
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
13
|
-
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
14
|
-
}
|
|
15
|
-
return to;
|
|
16
|
-
};
|
|
17
|
-
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
18
|
-
var producer_exports = {};
|
|
19
|
-
__export(producer_exports, {
|
|
20
|
-
Producer: () => Producer
|
|
21
|
-
});
|
|
22
|
-
module.exports = __toCommonJS(producer_exports);
|
|
23
|
-
const KafkaFacade = Java.type("org.eclipse.dirigible.components.api.kafka.KafkaFacade");
|
|
24
|
-
class Producer {
|
|
25
|
-
/**
|
|
26
|
-
* Creates a new topic configuration wrapper that can be used to send messages
|
|
27
|
-
* to a specific Kafka topic.
|
|
28
|
-
*
|
|
29
|
-
* @param destination The name of the Kafka topic to send messages to.
|
|
30
|
-
* @param configuration Optional key-value object containing Kafka producer properties
|
|
31
|
-
* (e.g., 'bootstrap.servers', 'acks').
|
|
32
|
-
* @returns A {@link Topic} instance configured for the specified destination and properties.
|
|
33
|
-
*/
|
|
34
|
-
static topic(destination, configuration = {}) {
|
|
35
|
-
return new Topic(destination, configuration);
|
|
36
|
-
}
|
|
37
|
-
/**
|
|
38
|
-
* Closes the Kafka producer connection pool, releasing associated resources.
|
|
39
|
-
* This should be called when message sending is complete to ensure proper cleanup.
|
|
40
|
-
*
|
|
41
|
-
* @param configuration Optional key-value object containing the configuration
|
|
42
|
-
* used to initialize the producer to be closed.
|
|
43
|
-
*/
|
|
44
|
-
static close(configuration = {}) {
|
|
45
|
-
KafkaFacade.closeProducer(configuration);
|
|
46
|
-
}
|
|
47
|
-
}
|
|
48
|
-
class Topic {
|
|
49
|
-
destination;
|
|
50
|
-
configuration;
|
|
51
|
-
/**
|
|
52
|
-
* @param destination The name of the Kafka topic.
|
|
53
|
-
* @param configuration Key-value object for producer properties.
|
|
54
|
-
*/
|
|
55
|
-
constructor(destination, configuration) {
|
|
56
|
-
this.destination = destination;
|
|
57
|
-
this.configuration = configuration;
|
|
58
|
-
}
|
|
59
|
-
/**
|
|
60
|
-
* Sends a message with an optional key to the configured Kafka topic.
|
|
61
|
-
*
|
|
62
|
-
* @param key The key of the message. Messages with the same key go to the same partition.
|
|
63
|
-
* @param value The content of the message to be sent.
|
|
64
|
-
*/
|
|
65
|
-
send(key, value) {
|
|
66
|
-
KafkaFacade.send(this.destination, key, value, JSON.stringify(this.configuration));
|
|
67
|
-
}
|
|
68
|
-
}
|
|
69
|
-
if (typeof module !== "undefined") {
|
|
70
|
-
module.exports = Producer;
|
|
71
|
-
}
|
|
72
|
-
//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vc3JjL2thZmthL3Byb2R1Y2VyLnRzIl0sCiAgInNvdXJjZXNDb250ZW50IjogWyIvKipcbiAqIEBtb2R1bGUga2Fma2EvcHJvZHVjZXJcbiAqIEBwYWNrYWdlIEBhZXJva2l0L3Nkay9rYWZrYVxuICogQG5hbWUgUHJvZHVjZXJcbiAqIEBvdmVydmlld1xuICogXG4gKiBUaGUgUHJvZHVjZXIgbW9kdWxlIHByb3ZpZGVzIGFuIEFQSSBmb3IgY29uZmlndXJpbmcgYW5kIG1hbmFnaW5nIEthZmthIHByb2R1Y2VycywgYWxsb3dpbmcgc2NyaXB0cyB0byBjcmVhdGUgdG9waWNzLCBzZW5kIG1lc3NhZ2VzLCBhbmQgY2xvc2UgdGhlIHByb2R1Y2VyIGNvbm5lY3Rpb24uIEl0IGFic3RyYWN0cyB0aGUgY29tcGxleGl0aWVzIG9mIEthZmthIHByb2R1Y2VyIGNvbmZpZ3VyYXRpb24gYW5kIG1lc3NhZ2Ugc2VuZGluZywgZW5hYmxpbmcgZGV2ZWxvcGVycyB0byBlYXNpbHkgaW50ZWdyYXRlIEthZmthIG1lc3NhZ2UgcHJvZHVjdGlvbiBpbnRvIHRoZWlyIGFwcGxpY2F0aW9ucy5cbiAqIFxuICogIyMjIEtleSBGZWF0dXJlczpcbiAqIC0gKipUb3BpYyBDb25maWd1cmF0aW9uKio6IFRoZSBgUHJvZHVjZXIudG9waWNgIG1ldGhvZCBhbGxvd3MgZGV2ZWxvcGVycyB0byBjcmVhdGUgYSB0b3BpYyBjb25maWd1cmF0aW9uIHdyYXBwZXIgd2l0aCBzcGVjaWZpZWQgZGVzdGluYXRpb24gYW5kIHByb3BlcnRpZXMuXG4gKiAtICoqTWVzc2FnZSBTZW5kaW5nKio6IFRoZSBgc2VuZGAgbWV0aG9kIG9uIHRoZSBUb3BpYyBjbGFzcyBlbmFibGVzIHNlbmRpbmcgbWVzc2FnZXMgd2l0aCBvcHRpb25hbCBrZXlzIHRvIHRoZSBjb25maWd1cmVkIEthZmthIHRvcGljLlxuICogLSAqKkNvbm5lY3Rpb24gTWFuYWdlbWVudCoqOiBUaGUgYGNsb3NlYCBtZXRob2QgYWxsb3dzIGRldmVsb3BlcnMgdG8gY2xvc2UgdGhlIEthZmthIHByb2R1Y2VyIGNvbm5lY3Rpb24gcG9vbCwgZW5zdXJpbmcgcHJvcGVyIHJlc291cmNlIGNsZWFudXAuXG4gKiBcbiAqICMjIyBVc2UgQ2FzZXM6XG4gKiAtICoqRXZlbnQgUHJvZHVjdGlvbioqOiBEZXZlbG9wZXJzIGNhbiB1c2UgdGhpcyBtb2R1bGUgdG8gcHJvZHVjZSBtZXNzYWdlcyB0byBLYWZrYSB0b3BpY3MgaW4gcmVhbC10aW1lLCBlbmFibGluZyB1c2UgY2FzZXMgc3VjaCBhcyBldmVudC1kcml2ZW4gYXJjaGl0ZWN0dXJlcyBhbmQgbWljcm9zZXJ2aWNlcyBjb21tdW5pY2F0aW9uLlxuICogLSAqKkludGVncmF0aW9uIHdpdGggT3RoZXIgU3lzdGVtcyoqOiBCeSBzZW5kaW5nIEthZmthIG1lc3NhZ2VzLCBhcHBsaWNhdGlvbnMgY2FuIGludGVncmF0ZSB3aXRoIG90aGVyIHN5c3RlbXMgdGhhdCBjb25zdW1lIG1lc3NhZ2VzIGZyb20gS2Fma2EsIGZhY2lsaXRhdGluZyBkYXRhIGZsb3cgYWNyb3NzIGRpZmZlcmVudCBjb21wb25lbnRzIG9mIGFuIGVjb3N5c3RlbS5cbiAqIFxuICogIyMjIEV4YW1wbGUgVXNhZ2U6XG4gKiBgYGB0c1xuICogaW1wb3J0IHsgUHJvZHVjZXIgfSBmcm9tIFwiQGFlcm9raXQvc2RrL2thZmthXCI7XG4gKiBcbiAqIC8vIENyZWF0ZSBhIHByb2R1Y2VyIGZvciB0aGUgXCJvcmRlcnNcIiB0b3BpYyB3aXRoIHNwZWNpZmljIGNvbmZpZ3VyYXRpb25cbiAqIGNvbnN0IG9yZGVyc1Byb2R1Y2VyID0gUHJvZHVjZXIudG9waWMoXCJvcmRlcnNcIiwgeyBcImJvb3RzdHJhcC5zZXJ2ZXJzXCI6IFwibG9jYWxob3N0OjkwOTJcIiB9KTtcbiAqIFxuICogLy8gU2VuZCBhIG1lc3NhZ2Ugd2l0aCBhIGtleSB0byB0aGUgXCJvcmRlcnNcIiB0b3BpY1xuICogb3JkZXJzUHJvZHVjZXIuc2VuZChcIm9yZGVyMTIzXCIsIFwiTmV3IG9yZGVyIHBsYWNlZFwiKTtcbiAqIFxuICogLy8gTGF0ZXIsIGNsb3NlIHRoZSBwcm9kdWNlciBjb25uZWN0aW9uXG4gKiBQcm9kdWNlci5jbG9zZSh7IFwiYm9vdHN0cmFwLnNlcnZlcnNcIjogXCJsb2NhbGhvc3Q6OTA5MlwiIH0pO1xuICogYGBgXG4gKi9cblxuY29uc3QgS2Fma2FGYWNhZGUgPSBKYXZhLnR5cGUoXCJvcmcuZWNsaXBzZS5kaXJpZ2libGUuY29tcG9uZW50cy5hcGkua2Fma2EuS2Fma2FGYWNhZGVcIik7XG5cbi8qKlxuICogVGhlIFByb2R1Y2VyIGNsYXNzIHNlcnZlcyBhcyB0aGUgbWFpbiBlbnRyeSBwb2ludCBmb3IgY3JlYXRpbmcgYW5kIGNvbmZpZ3VyaW5nXG4gKiBLYWZrYSB0b3BpYyBwcm9kdWNlcnMuXG4gKi9cbmV4cG9ydCBjbGFzcyBQcm9kdWNlciB7XG5cbiAgICAvKipcbiAgICAgKiBDcmVhdGVzIGEgbmV3IHRvcGljIGNvbmZpZ3VyYXRpb24gd3JhcHBlciB0aGF0IGNhbiBiZSB1c2VkIHRvIHNlbmQgbWVzc2FnZXNcbiAgICAgKiB0byBhIHNwZWNpZmljIEthZmthIHRvcGljLlxuICAgICAqXG4gICAgICogQHBhcmFtIGRlc3RpbmF0aW9uIFRoZSBuYW1lIG9mIHRoZSBLYWZrYSB0b3BpYyB0byBzZW5kIG1lc3NhZ2VzIHRvLlxuICAgICAqIEBwYXJhbSBjb25maWd1cmF0aW9uIE9wdGlvbmFsIGtleS12YWx1ZSBvYmplY3QgY29udGFpbmluZyBLYWZrYSBwcm9kdWNlciBwcm9wZXJ0aWVzXG4gICAgICogKGUuZy4sICdib290c3RyYXAuc2VydmVycycsICdhY2tzJykuXG4gICAgICogQHJldHVybnMgQSB7QGxpbmsgVG9waWN9IGluc3RhbmNlIGNvbmZpZ3VyZWQgZm9yIHRoZSBzcGVjaWZpZWQgZGVzdGluYXRpb24gYW5kIHByb3BlcnRpZXMuXG4gICAgICovXG4gICAgcHVibGljIHN0YXRpYyB0b3BpYyhkZXN0aW5hdGlvbjogc3RyaW5nLCBjb25maWd1cmF0aW9uOiB7IFtrZXk6IHN0cmluZ106IHN0cmluZyB9ID0ge30pOiBUb3BpYyB7XG4gICAgICAgIHJldHVybiBuZXcgVG9waWMoZGVzdGluYXRpb24sIGNvbmZpZ3VyYXRpb24pO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENsb3NlcyB0aGUgS2Fma2EgcHJvZHVjZXIgY29ubmVjdGlvbiBwb29sLCByZWxlYXNpbmcgYXNzb2NpYXRlZCByZXNvdXJjZXMuXG4gICAgICogVGhpcyBzaG91bGQgYmUgY2FsbGVkIHdoZW4gbWVzc2FnZSBzZW5kaW5nIGlzIGNvbXBsZXRlIHRvIGVuc3VyZSBwcm9wZXIgY2xlYW51cC5cbiAgICAgKlxuICAgICAqIEBwYXJhbSBjb25maWd1cmF0aW9uIE9wdGlvbmFsIGtleS12YWx1ZSBvYmplY3QgY29udGFpbmluZyB0aGUgY29uZmlndXJhdGlvblxuICAgICAqIHVzZWQgdG8gaW5pdGlhbGl6ZSB0aGUgcHJvZHVjZXIgdG8gYmUgY2xvc2VkLlxuICAgICAqL1xuICAgIHB1YmxpYyBzdGF0aWMgY2xvc2UoY29uZmlndXJhdGlvbjogeyBba2V5OiBzdHJpbmddOiBzdHJpbmcgfSA9IHt9KTogdm9pZCB7XG4gICAgICAgIEthZmthRmFjYWRlLmNsb3NlUHJvZHVjZXIoY29uZmlndXJhdGlvbik7XG4gICAgfVxufVxuXG4vKipcbiAqIFJlcHJlc2VudHMgYSBjb25maWd1cmVkIEthZmthIHRvcGljIHRoYXQgY2FuIGJlIHVzZWQgdG8gc2VuZCBtZXNzYWdlcy5cbiAqL1xuY2xhc3MgVG9waWMge1xuXG4gICAgcHJpdmF0ZSBkZXN0aW5hdGlvbjogc3RyaW5nO1xuICAgIHByaXZhdGUgY29uZmlndXJhdGlvbjogeyBba2V5OiBzdHJpbmddOiBzdHJpbmcgfTtcblxuICAgIC8qKlxuICAgICAqIEBwYXJhbSBkZXN0aW5hdGlvbiBUaGUgbmFtZSBvZiB0aGUgS2Fma2EgdG9waWMuXG4gICAgICogQHBhcmFtIGNvbmZpZ3VyYXRpb24gS2V5LXZhbHVlIG9iamVjdCBmb3IgcHJvZHVjZXIgcHJvcGVydGllcy5cbiAgICAgKi9cbiAgICBjb25zdHJ1Y3RvcihkZXN0aW5hdGlvbjogc3RyaW5nLCBjb25maWd1cmF0aW9uOiB7IFtrZXk6IHN0cmluZ106IHN0cmluZyB9KSB7XG4gICAgICAgIHRoaXMuZGVzdGluYXRpb24gPSBkZXN0aW5hdGlvbjtcbiAgICAgICAgdGhpcy5jb25maWd1cmF0aW9uID0gY29uZmlndXJhdGlvbjtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBTZW5kcyBhIG1lc3NhZ2Ugd2l0aCBhbiBvcHRpb25hbCBrZXkgdG8gdGhlIGNvbmZpZ3VyZWQgS2Fma2EgdG9waWMuXG4gICAgICpcbiAgICAgKiBAcGFyYW0ga2V5IFRoZSBrZXkgb2YgdGhlIG1lc3NhZ2UuIE1lc3NhZ2VzIHdpdGggdGhlIHNhbWUga2V5IGdvIHRvIHRoZSBzYW1lIHBhcnRpdGlvbi5cbiAgICAgKiBAcGFyYW0gdmFsdWUgVGhlIGNvbnRlbnQgb2YgdGhlIG1lc3NhZ2UgdG8gYmUgc2VudC5cbiAgICAgKi9cbiAgICBwdWJsaWMgc2VuZChrZXk6IHN0cmluZywgdmFsdWU6IHN0cmluZyk6IHZvaWQge1xuICAgICAgICBLYWZrYUZhY2FkZS5zZW5kKHRoaXMuZGVzdGluYXRpb24sIGtleSwgdmFsdWUsIEpTT04uc3RyaW5naWZ5KHRoaXMuY29uZmlndXJhdGlvbikpO1xuICAgIH1cbn1cblxuLy8gQHRzLWlnbm9yZVxuaWYgKHR5cGVvZiBtb2R1bGUgIT09ICd1bmRlZmluZWQnKSB7XG5cdC8vIEB0cy1pZ25vcmVcblx0bW9kdWxlLmV4cG9ydHMgPSBQcm9kdWNlcjtcbn0iXSwKICAibWFwcGluZ3MiOiAiOzs7Ozs7Ozs7Ozs7Ozs7OztBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFnQ0EsTUFBTSxjQUFjLEtBQUssS0FBSyx3REFBd0Q7QUFNL0UsTUFBTSxTQUFTO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsRUFXbEIsT0FBYyxNQUFNLGFBQXFCLGdCQUEyQyxDQUFDLEdBQVU7QUFDM0YsV0FBTyxJQUFJLE1BQU0sYUFBYSxhQUFhO0FBQUEsRUFDL0M7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLEVBU0EsT0FBYyxNQUFNLGdCQUEyQyxDQUFDLEdBQVM7QUFDckUsZ0JBQVksY0FBYyxhQUFhO0FBQUEsRUFDM0M7QUFDSjtBQUtBLE1BQU0sTUFBTTtBQUFBLEVBRUE7QUFBQSxFQUNBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxFQU1SLFlBQVksYUFBcUIsZUFBMEM7QUFDdkUsU0FBSyxjQUFjO0FBQ25CLFNBQUssZ0JBQWdCO0FBQUEsRUFDekI7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxFQVFPLEtBQUssS0FBYSxPQUFxQjtBQUMxQyxnQkFBWSxLQUFLLEtBQUssYUFBYSxLQUFLLE9BQU8sS0FBSyxVQUFVLEtBQUssYUFBYSxDQUFDO0FBQUEsRUFDckY7QUFDSjtBQUdBLElBQUksT0FBTyxXQUFXLGFBQWE7QUFFbEMsU0FBTyxVQUFVO0FBQ2xCOyIsCiAgIm5hbWVzIjogW10KfQo=
|
|
@@ -1,79 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* @module kafka/consumer
|
|
3
|
-
* @package @aerokit/sdk/kafka
|
|
4
|
-
* @name Consumer
|
|
5
|
-
* @overview
|
|
6
|
-
*
|
|
7
|
-
* The Consumer module provides an API for configuring and managing Kafka consumers, allowing scripts to start and stop listening to specific topics. It abstracts the complexities of Kafka consumer configuration and lifecycle management, enabling developers to easily integrate Kafka message consumption into their applications.
|
|
8
|
-
*
|
|
9
|
-
* ### Key Features:
|
|
10
|
-
* - **Topic Configuration**: The `Consumer.topic` method allows developers to create a topic configuration wrapper with specified destination and properties.
|
|
11
|
-
* - **Background Listening**: The `startListening` method starts a background process that listens for messages on the configured topic, invoking a specified handler function for incoming messages.
|
|
12
|
-
* - **Graceful Shutdown**: The `stopListening` method allows developers to stop the background listening process based on the topic and configuration.
|
|
13
|
-
*
|
|
14
|
-
* ### Use Cases:
|
|
15
|
-
* - **Real-time Data Processing**: Developers can use this module to consume messages from Kafka topics in real-time, enabling use cases such as stream processing, event-driven architectures, and microservices communication.
|
|
16
|
-
* - **Integration with Other Systems**: By consuming Kafka messages, applications can integrate with other systems that produce messages to Kafka, facilitating data flow across different components of an ecosystem.
|
|
17
|
-
*
|
|
18
|
-
* ### Example Usage:
|
|
19
|
-
* ```ts
|
|
20
|
-
* import { Consumer } from "@aerokit/sdk/kafka";
|
|
21
|
-
*
|
|
22
|
-
* // Create a consumer for the "orders" topic with specific configuration
|
|
23
|
-
* const ordersConsumer = Consumer.topic("orders", { "group.id": "order-processors" });
|
|
24
|
-
*
|
|
25
|
-
* // Start listening to the "orders" topic with a message handler and timeout
|
|
26
|
-
* ordersConsumer.startListening("handleOrderMessage", 30000);
|
|
27
|
-
*
|
|
28
|
-
* // Later, stop listening to the "orders" topic
|
|
29
|
-
* ordersConsumer.stopListening();
|
|
30
|
-
* ```
|
|
31
|
-
*/
|
|
32
|
-
/**
|
|
33
|
-
* The Consumer class acts as the main entry point for creating and configuring
|
|
34
|
-
* Kafka topic consumers.
|
|
35
|
-
*/
|
|
36
|
-
export declare class Consumer {
|
|
37
|
-
/**
|
|
38
|
-
* Creates a new topic configuration wrapper that can be used to start or
|
|
39
|
-
* stop listening for messages on a Kafka topic.
|
|
40
|
-
*
|
|
41
|
-
* @param destination The name of the Kafka topic to consume messages from.
|
|
42
|
-
* @param configuration Optional key-value object containing Kafka consumer properties
|
|
43
|
-
* (e.g., 'group.id', 'auto.offset.reset').
|
|
44
|
-
* @returns A {@link Topic} instance configured for the specified destination and properties.
|
|
45
|
-
*/
|
|
46
|
-
static topic(destination: string, configuration?: {
|
|
47
|
-
[key: string]: string;
|
|
48
|
-
}): Topic;
|
|
49
|
-
}
|
|
50
|
-
/**
|
|
51
|
-
* Represents a configured Kafka topic consumer capable of starting and stopping
|
|
52
|
-
* background message listening.
|
|
53
|
-
*/
|
|
54
|
-
declare class Topic {
|
|
55
|
-
private destination;
|
|
56
|
-
private configuration;
|
|
57
|
-
/**
|
|
58
|
-
* @param destination The name of the Kafka topic.
|
|
59
|
-
* @param configuration Optional key-value object for consumer properties.
|
|
60
|
-
*/
|
|
61
|
-
constructor(destination: string, configuration?: {
|
|
62
|
-
[key: string]: string;
|
|
63
|
-
});
|
|
64
|
-
/**
|
|
65
|
-
* Starts listening to the configured topic in a background process.
|
|
66
|
-
*
|
|
67
|
-
* @param handler The path to the script or function name that will handle the incoming Kafka messages.
|
|
68
|
-
* This function should accept two arguments: `message` (string) and `headers` (object).
|
|
69
|
-
* @param timeout The maximum amount of time (in milliseconds) the consumer should wait for messages.
|
|
70
|
-
*/
|
|
71
|
-
startListening(handler: string, timeout: number): void;
|
|
72
|
-
/**
|
|
73
|
-
* Stops the background process that is listening to the configured topic.
|
|
74
|
-
* Note: Stopping is based on matching the topic and configuration, so the same
|
|
75
|
-
* configuration object used in `startListening` should be used here.
|
|
76
|
-
*/
|
|
77
|
-
stopListening(): void;
|
|
78
|
-
}
|
|
79
|
-
export {};
|
|
@@ -1,15 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* @module kafka/index
|
|
3
|
-
* @package @aerokit/sdk/kafka
|
|
4
|
-
* @overview
|
|
5
|
-
*
|
|
6
|
-
* This module provides functionalities for Kafka integration within the Aerokit SDK. It includes classes and methods for producing and consuming messages from Kafka topics, as well as managing Kafka configurations and connections.
|
|
7
|
-
*
|
|
8
|
-
* The main components of this module are:
|
|
9
|
-
* - Consumer: Represents a Kafka consumer that can subscribe to topics and consume messages.
|
|
10
|
-
* - Producer: Represents a Kafka producer that can send messages to topics.
|
|
11
|
-
*/
|
|
12
|
-
export { Consumer as consumer } from "./consumer";
|
|
13
|
-
export * from "./consumer";
|
|
14
|
-
export { Producer as producer } from "./producer";
|
|
15
|
-
export * from "./producer";
|