@slack/interactive-messages
Advanced tools
Comparing version 0.1.2 to 0.2.0
@@ -239,7 +239,15 @@ 'use strict'; | ||
var action = payload.actions && payload.actions[0]; | ||
// The following result value represents "no replacement" | ||
var result = { status: 200 }; | ||
// when the matcher finds a dialog submission, it will populate this value with a function | ||
var dialogPromiseResolve = void 0; | ||
var respond = function respond(message) { | ||
debug('sending async response'); | ||
return _this4.axios.post(payload.response_url, message); | ||
if (payload.response_url) { | ||
debug('sending async response'); | ||
return _this4.axios.post(payload.response_url, message); | ||
} else if (dialogPromiseResolve) { | ||
dialogPromiseResolve(message); | ||
} | ||
return true; | ||
}; | ||
@@ -282,2 +290,18 @@ | ||
// Dialog submissions must be responded to in under 3 seconds | ||
// Setting timeout to 2.5 seconds to account for propagation | ||
if (payload.type === 'dialog_submission') { | ||
var ms = 2500; | ||
if (callbackResult) { | ||
result = { status: 200, content: (0, _util.promiseTimeout)(ms, callbackResult) }; | ||
} else { | ||
result = { | ||
status: 200, content: new Promise(function (resolve) { | ||
dialogPromiseResolve = resolve; | ||
}) | ||
}; | ||
} | ||
return true; | ||
} | ||
if (callbackResult) { | ||
@@ -305,3 +329,3 @@ // Checking for Promise type | ||
exports.default = SlackMessageAdapter; | ||
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9hZGFwdGVyLmpzIl0sIm5hbWVzIjpbImRlYnVnIiwiZm9ybWF0TWF0Y2hpbmdDb25zdHJhaW50cyIsIm1hdGNoaW5nQ29uc3RyYWludHMiLCJyZXQiLCJjYWxsYmFja0lkIiwiT2JqZWN0IiwiYXNzaWduIiwidmFsaWRhdGVDb25zdHJhaW50cyIsIlR5cGVFcnJvciIsInZhbGlkYXRlQWN0aW9uQ29uc3RyYWludHMiLCJhY3Rpb25Db25zdHJhaW50cyIsInR5cGUiLCJTbGFja01lc3NhZ2VBZGFwdGVyIiwidmVyaWZpY2F0aW9uVG9rZW4iLCJjYWxsYmFja3MiLCJheGlvcyIsImNyZWF0ZSIsImhlYWRlcnMiLCJwYXRoIiwiUHJvbWlzZSIsInJlc29sdmUiLCJ0aGVuIiwiYWxsIiwiZXhwcmVzcyIsImJvZHlQYXJzZXIiLCJhcHAiLCJ1c2UiLCJ1cmxlbmNvZGVkIiwiZXh0ZW5kZWQiLCJwb3N0IiwiZXhwcmVzc01pZGRsZXdhcmUiLCJjcmVhdGVTZXJ2ZXIiLCJwb3J0IiwicmVqZWN0Iiwic2VydmVyIiwib24iLCJsaXN0ZW4iLCJjbG9zZSIsImVycm9yIiwiRXJyb3IiLCJjYWxsYmFjayIsIm1lc3NhZ2UiLCJyZWdpc3RlckNhbGxiYWNrIiwib3B0aW9uc0NvbnN0cmFpbnRzIiwiY29uc3RyYWludHMiLCJwdXNoIiwicGF5bG9hZCIsImFjdGlvbiIsImFjdGlvbnMiLCJyZXN1bHQiLCJzdGF0dXMiLCJyZXNwb25kIiwicmVzcG9uc2VfdXJsIiwic29tZSIsImZuIiwiY2FsbGJhY2tSZXN1bHQiLCJjYWxsYmFja19pZCIsInRlc3QiLCJ1bmZ1cmwiLCJpc19hcHBfdW5mdXJsIiwiY2FsbCIsImNhdGNoIiwiY29udGVudCJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7OztBQUFBOzs7O0FBQ0E7Ozs7QUFDQTs7OztBQUNBOzs7O0FBQ0E7Ozs7QUFDQTs7OztBQUNBOzs7O0FBQ0E7O0FBQ0E7Ozs7OztBQUVBLElBQU1BLFFBQVEscUJBQWEscUNBQWIs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QU9wQyxJQUE5RCxFQUFvRTtBQUNsRSxpQkFBTyxLQUFQO0FBQ0Q7O0FBRUQsWUFBSSxZQUFZaUMsV0FBWixLQUVJQSxZQUFZYyxNQUFaLElBQXNCLENBQUNaLFFBQVFhLGFBQWhDLElBQ0MsQ0FBQ2YsWUFBWWMsTUFBYixJQUF1QlosUUFBUWEsYUFIbkMsQ0FBSixFQUtLO0FBQ0gsaUJBQU8sS0FBUDtBQUNEOztBQUVELFlBQUk7QUFDRkosMkJBQWlCRCxHQUFHTSxJQUFILFNBQWNkLE9BQWQsRUFBdUJLLE9BQXZCLENBQWpCO0FBQ0QsU0FGRCxDQUVFLE9BQU9iLEtBQVAsRUFBYztBQUNkdEMsZ0JBQU0sb0JBQU4sRUFBNEJzQyxLQUE1QjtBQUNBVyxtQkFBUyxFQUFFQyxRQUFRLEdBQVYsRUFBVDtBQUNBLGlCQUFPLElBQVA7QUFDRDs7QUFFRCxZQUFJSyxjQUFKLEVBQW9CO0FBQ2xCO0FBQ0EsY0FBSSxPQUFPQSxlQUFlbEMsSUFBdEIsS0FBK0IsVUFBbkMsRUFBK0M7QUFDN0NrQywyQkFBZWxDLElBQWYsQ0FBb0I4QixPQUFwQixFQUE2QlUsS0FBN0IsQ0FBbUMsVUFBQ3ZCLEtBQUQsRUFBVztBQUM1Q3RDLG9CQUFNLHNEQUFOLEVBQ004QyxRQUFRVSxXQURkLEVBQzJCbEIsTUFBTUcsT0FEakM7QUFFRCxhQUhEO0FBSUEsbUJBQU8sSUFBUDtBQUNEO0FBQ0RRLG1CQUFTLEVBQUVDLFFBQVEsR0FBVixFQUFlWSxTQUFTUCxjQUF4QixFQUFUO0FBQ0EsaUJBQU8sSUFBUDtBQUNEO0FBQ0QsZUFBTyxJQUFQO0FBQ0QsT0FqREQ7O0FBbURBLGFBQU9OLE1BQVA7QUFDRDs7Ozs7O2tCQWhMa0JyQyxtQiIsImZpbGUiOiJhZGFwdGVyLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IGh0dHAgZnJvbSAnaHR0cCc7XG5pbXBvcnQgYXhpb3MgZnJvbSAnYXhpb3MnO1xuaW1wb3J0IGlzU3RyaW5nIGZyb20gJ2xvZGFzaC5pc3N0cmluZyc7XG5pbXBvcnQgaXNQbGFpbk9iamVjdCBmcm9tICdsb2Rhc2guaXNwbGFpbm9iamVjdCc7XG5pbXBvcnQgaXNSZWdFeHAgZnJvbSAnbG9kYXNoLmlzcmVnZXhwJztcbmltcG9ydCBpc0Z1bmN0aW9uIGZyb20gJ2xvZGFzaC5pc2Z1bmN0aW9uJztcbmltcG9ydCBkZWJ1Z0ZhY3RvcnkgZnJvbSAnZGVidWcnO1xuaW1wb3J0IHsgY3JlYXRlRXhwcmVzc01pZGRsZXdhcmUgfSBmcm9tICcuL2V4cHJlc3MtbWlkZGxld2FyZSc7XG5pbXBvcnQgeyBwYWNrYWdlSWRlbnRpZmllciB9IGZyb20gJy4vdXRpbCc7XG5cbmNvbnN0IGRlYnVnID0gZGVidWdGYWN0b3J5KCdAc2xhY2svaW50ZXJhY3RpdmUtbWVzc2FnZXM6YWRhcHRlcicpO1xuXG4vKipcbiAqIFRyYW5zZm9ybXMgdmFyaW91cyBmb3JtcyBvZiBtYXRjaGluZyBjb25zdHJhaW50cyB0byBhIHNpbmdsZSBzdGFuZGFyZCBvYmplY3Qgc2hhcGVcbiAqIEBwYXJhbSB7c3RyaW5nfFJlZ0V4cHxPYmplY3R9IG1hdGNoaW5nQ29uc3RyYWludHMgLSB0aGUgdmFyaW91cyBmb3JtcyBvZiBtYXRjaGluZyBjb25zdHJhaW50c1xuICogYWNjZXB0ZWRcbiAqIEByZXR1cm5zIHtPYmplY3R9IC0gYW4gb2JqZWN0IHdoZXJlIGVhY2ggbWF0Y2hpbmcgY29uc3RyYWludCBpcyBhIHByb3BlcnR5XG4gKi9cbmZ1bmN0aW9uIGZvcm1hdE1hdGNoaW5nQ29uc3RyYWludHMobWF0Y2hpbmdDb25zdHJhaW50cykge1xuICBsZXQgcmV0ID0ge307XG4gIGlmICghaXNQbGFpbk9iamVjdChtYXRjaGluZ0NvbnN0cmFpbnRzKSkge1xuICAgIHJldC5jYWxsYmFja0lkID0gbWF0Y2hpbmdDb25zdHJhaW50cztcbiAgfSBlbHNlIHtcbiAgICByZXQgPSBPYmplY3QuYXNzaWduKHt9LCBtYXRjaGluZ0NvbnN0cmFpbnRzKTtcbiAgfVxuICByZXR1cm4gcmV0O1xufVxuXG4vKipcbiAqIFZhbGlkYXRlcyBnZW5lcmFsIHByb3BlcnRpZXMgb2YgYSBtYXRjaGluZyBjb25zdHJhaW50cyBvYmplY3RcbiAqIEBwYXJhbSB7T2JqZWN0fSBtYXRjaGluZ0NvbnN0cmFpbnRzIC0gb2JqZWN0IGRlc2NyaWJpbmcgdGhlIGNvbnN0cmFpbnRzIG9uIGEgY2FsbGJhY2tcbiAqIEByZXR1cm4ge0Vycm9yfGZhbHNlfSAtIGEgZmFsc2UgdmFsdWUgcmVwcmVzZW50cyBzdWNjZXNzZnVsIHZhbGlkYXRpb24sIG90aGVyd2lzZSBhbiBlcnJvciB0b1xuICogZGVzY3JpYmUgd2h5IHZhbGlkYXRpb24gZmFpbGVkLlxuICovXG5mdW5jdGlvbiB2YWxpZGF0ZUNvbnN0cmFpbnRzKG1hdGNoaW5nQ29uc3RyYWludHMpIHtcbiAgaWYgKG1hdGNoaW5nQ29uc3RyYWludHMuY2FsbGJhY2tJZCAmJlxuICAgICAgIShpc1N0cmluZyhtYXRjaGluZ0NvbnN0cmFpbnRzLmNhbGxiYWNrSWQpIHx8IGlzUmVnRXhwKG1hdGNoaW5nQ29uc3RyYWludHMuY2FsbGJhY2tJZCkpKSB7XG4gICAgcmV0dXJuIG5ldyBUeXBlRXJyb3IoJ0NhbGxiYWNrIElEIG11c3QgYmUgYSBzdHJpbmcgb3IgUmVnRXhwJyk7XG4gIH1cblxuICByZXR1cm4gZmFsc2U7XG59XG5cbi8qKlxuICogVmFsaWRhdGVzIHByb3BlcnRpZXMgb2YgYSBtYXRjaGluZyBjb25zdHJhaW50cyBvYmplY3Qgc3BlY2lmaWMgdG8gcmVnaXN0ZXJpbmcgYW4gYWN0aW9uXG4gKiBAcGFyYW0ge09iamVjdH0gbWF0Y2hpbmdDb25zdHJhaW50cyAtIG9iamVjdCBkZXNjcmliaW5nIHRoZSBjb25zdHJhaW50cyBvbiBhIGNhbGxiYWNrXG4gKiBAcmV0dXJuIHtFcnJvcnxmYWxzZX0gLSBhIGZhbHNlIHZhbHVlIHJlcHJlc2VudHMgc3VjY2Vzc2Z1bCB2YWxpZGF0aW9uLCBvdGhlcndpc2UgYW4gZXJyb3IgdG9cbiAqIGRlc2NyaWJlIHdoeSB2YWxpZGF0aW9uIGZhaWxlZC5cbiAqL1xuZnVuY3Rpb24gdmFsaWRhdGVBY3Rpb25Db25zdHJhaW50cyhhY3Rpb25Db25zdHJhaW50cykge1xuICBpZiAoYWN0aW9uQ29uc3RyYWludHMudHlwZSAmJlxuICAgICAgIShhY3Rpb25Db25zdHJhaW50cy50eXBlID09PSAnc2VsZWN0JyB8fCBhY3Rpb25Db25zdHJhaW50cy50eXBlID09PSAnYnV0dG9uJykpIHtcbiAgICByZXR1cm4gbmV3IFR5cGVFcnJvcignVHlwZSBtdXN0IGJlIFxcJ3NlbGVjdFxcJyBvciBcXCdidXR0b25cXCcnKTtcbiAgfVxuXG4gIC8vIFdlIGRvbid0IG5lZWQgdG8gdmFsaWRhdGUgdW5mdXJsLCB3ZSdsbCBqdXN0IGNvb2VyY2UgaXQgdG8gYSBib29sZWFuXG4gIHJldHVybiBmYWxzZTtcbn1cblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgU2xhY2tNZXNzYWdlQWRhcHRlciB7XG4gIC8qKlxuICAgKiBDcmVhdGUgYSBtZXNzYWdlIGFkYXB0ZXIuXG4gICAqXG4gICAqIEBwYXJhbSB7c3RyaW5nfSB2ZXJpZmljYXRpb25Ub2tlbiAtIFNsYWNrIGFwcCB2ZXJpZmljYXRpb24gdG9rZW4gdXNlZCB0byBhdXRoZW50aWNhdGUgcmVxdWVzdFxuICAgKi9cbiAgY29uc3RydWN0b3IodmVyaWZpY2F0aW9uVG9rZW4pIHtcbiAgICBpZiAoIWlzU3RyaW5nKHZlcmlmaWNhdGlvblRva2VuKSkge1xuICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcignU2xhY2tNZXNzYWdlQWRhcHRlciBuZWVkcyBhIHZlcmlmaWNhdGlvbiB0b2tlbicpO1xuICAgIH1cblxuICAgIHRoaXMudmVyaWZpY2F0aW9uVG9rZW4gPSB2ZXJpZmljYXRpb25Ub2tlbjtcbiAgICB0aGlzLmNhbGxiYWNrcyA9IFtdO1xuICAgIHRoaXMuYXhpb3MgPSBheGlvcy5jcmVhdGUoe1xuICAgICAgaGVhZGVyczoge1xuICAgICAgICAnVXNlci1BZ2VudCc6IHBhY2thZ2VJZGVudGlmaWVyKCksXG4gICAgICB9LFxuICAgIH0pO1xuXG4gICAgZGVidWcoJ2luc3RhbnRpYXRlZCcpO1xuICB9XG5cbiAgLyoqXG4gICAqIENyZWF0ZSBhIHNlcnZlciB0aGF0J3MgcmVhZHkgdG8gc2VydmUgcmVxdWVzdHMgZnJvbSBTbGFjaydzIGludGVyYWN0aXZlIG1lc3NhZ2VzLlxuICAgKlxuICAgKiBAcGFyYW0ge3N0cmluZ30gW3BhdGg9L3NsYWNrL2FjdGlvbnNdIC0gVGhlIHBhdGggcG9ydGlvbiBvZiB0aGUgVVJMIHdoZXJlIHRoZSBzZXJ2ZXIgd2lsbFxuICAgKiBsaXN0ZW4gZm9yIHJlcXVlc3RzIGZyb20gU2xhY2sncyBpbnRlcmFjdGl2ZSBtZXNzYWdlcy5cbiAgICovXG4gIGNyZWF0ZVNlcnZlcihwYXRoID0gJy9zbGFjay9hY3Rpb25zJykge1xuICAgIC8vIFRPRE86IG1vcmUgb3B0aW9ucyAobGlrZSBodHRwcylcbiAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKCkudGhlbigoKSA9PiBQcm9taXNlLmFsbChbXG4gICAgICBpbXBvcnQoJ2V4cHJlc3MnKSxcbiAgICAgIGltcG9ydCgnYm9keS1wYXJzZXInKSxcbiAgICBdKSlcbiAgICAudGhlbigoW2V4cHJlc3MsIGJvZHlQYXJzZXJdKSA9PiB7XG4gICAgICBjb25zdCBhcHAgPSBleHByZXNzKCk7XG4gICAgICBhcHAudXNlKGJvZHlQYXJzZXIudXJsZW5jb2RlZCh7IGV4dGVuZGVkOiBmYWxzZSB9KSk7XG4gICAgICBhcHAucG9zdChwYXRoLCB0aGlzLmV4cHJlc3NNaWRkbGV3YXJlKCkpO1xuXG4gICAgICBkZWJ1Zygnc2VydmVyIGNyZWF0ZWQgLSBwYXRoOiAlcycsIHBhdGgpO1xuXG4gICAgICByZXR1cm4gaHR0cC5jcmVhdGVTZXJ2ZXIoYXBwKTtcbiAgICB9KTtcbiAgfVxuXG4gIHN0YXJ0KHBvcnQpIHtcbiAgICByZXR1cm4gdGhpcy5jcmVhdGVTZXJ2ZXIoKVxuICAgICAgLnRoZW4oc2VydmVyID0+IG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICAgICAgdGhpcy5zZXJ2ZXIgPSBzZXJ2ZXI7XG4gICAgICAgIHNlcnZlci5vbignZXJyb3InLCByZWplY3QpO1xuICAgICAgICBzZXJ2ZXIubGlzdGVuKHBvcnQsICgpID0+IHJlc29sdmUoc2VydmVyKSk7XG4gICAgICAgIGRlYnVnKCdzZXJ2ZXIgc3RhcnRlZCAtIHBvcnQ6ICVzJywgcG9ydCk7XG4gICAgICB9KSk7XG4gIH1cblxuICBzdG9wKCkge1xuICAgIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gICAgICBpZiAodGhpcy5zZXJ2ZXIpIHtcbiAgICAgICAgdGhpcy5zZXJ2ZXIuY2xvc2UoKGVycm9yKSA9PiB7XG4gICAgICAgICAgZGVsZXRlIHRoaXMuc2VydmVyO1xuICAgICAgICAgIGlmIChlcnJvcikge1xuICAgICAgICAgICAgcmVqZWN0KGVycm9yKTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcmVzb2x2ZSgpO1xuICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICByZWplY3QobmV3IEVycm9yKCdTbGFja01lc3NhZ2VBZGFwdGVyIGNhbm5vdCBzdG9wIHdoZW4gaXQgZGlkIG5vdCBzdGFydCBhIHNlcnZlcicpKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIGV4cHJlc3NNaWRkbGV3YXJlKCkge1xuICAgIHJldHVybiBjcmVhdGVFeHByZXNzTWlkZGxld2FyZSh0aGlzKTtcbiAgfVxuXG4gIGFjdGlvbihtYXRjaGluZ0NvbnN0cmFpbnRzLCBjYWxsYmFjaykge1xuICAgIGNvbnN0IGFjdGlvbkNvbnN0cmFpbnRzID0gZm9ybWF0TWF0Y2hpbmdDb25zdHJhaW50cyhtYXRjaGluZ0NvbnN0cmFpbnRzKTtcblxuICAgIGNvbnN0IGVycm9yID0gdmFsaWRhdGVDb25zdHJhaW50cyhhY3Rpb25Db25zdHJhaW50cykgfHxcbiAgICAgIHZhbGlkYXRlQWN0aW9uQ29uc3RyYWludHMoYWN0aW9uQ29uc3RyYWludHMpO1xuICAgIGlmIChlcnJvcikge1xuICAgICAgZGVidWcoJ2FjdGlvbiBjb3VsZCBub3QgYmUgcmVnaXN0ZXJlZDogJXMnLCBlcnJvci5tZXNzYWdlKTtcbiAgICAgIHRocm93IGVycm9yO1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzLnJlZ2lzdGVyQ2FsbGJhY2soYWN0aW9uQ29uc3RyYWludHMsIGNhbGxiYWNrKTtcbiAgfVxuXG4gIG9wdGlvbnMobWF0Y2hpbmdDb25zdHJhaW50cywgY2FsbGJhY2spIHtcbiAgICBjb25zdCBvcHRpb25zQ29uc3RyYWludHMgPSBmb3JtYXRNYXRjaGluZ0NvbnN0cmFpbnRzKG1hdGNoaW5nQ29uc3RyYWludHMpO1xuXG4gICAgY29uc3QgZXJyb3IgPSB2YWxpZGF0ZUNvbnN0cmFpbnRzKG9wdGlvbnNDb25zdHJhaW50cyk7XG4gICAgaWYgKGVycm9yKSB7XG4gICAgICBkZWJ1Zygnb3B0aW9ucyBjb3VsZCBub3QgYmUgcmVnaXN0ZXJlZDogJXMnLCBlcnJvci5tZXNzYWdlKTtcbiAgICAgIHRocm93IGVycm9yO1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzLnJlZ2lzdGVyQ2FsbGJhY2sob3B0aW9uc0NvbnN0cmFpbnRzLCBjYWxsYmFjayk7XG4gIH1cblxuICAvKiBAcHJpdmF0ZSAqL1xuXG4gIHJlZ2lzdGVyQ2FsbGJhY2soY29uc3RyYWludHMsIGNhbGxiYWNrKSB7XG4gICAgLy8gVmFsaWRhdGlvblxuICAgIGlmICghaXNGdW5jdGlvbihjYWxsYmFjaykpIHtcbiAgICAgIGRlYnVnKCdkaWQgbm90IHJlZ2lzdGVyIGNhbGxiYWNrIGJlY2F1c2UgaXRzIG5vdCBhIGZ1bmN0aW9uJyk7XG4gICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdjYWxsYmFjayBtdXN0IGJlIGEgZnVuY3Rpb24nKTtcbiAgICB9XG5cbiAgICB0aGlzLmNhbGxiYWNrcy5wdXNoKFtjb25zdHJhaW50cywgY2FsbGJhY2tdKTtcblxuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgZGlzcGF0Y2gocGF5bG9hZCkge1xuICAgIGNvbnN0IGFjdGlvbiA9IHBheWxvYWQuYWN0aW9ucyAmJiBwYXlsb2FkLmFjdGlvbnNbMF07XG4gICAgLy8gVGhlIGZvbGxvd2luZyByZXN1bHQgdmFsdWUgcmVwcmVzZW50cyBcIm5vIHJlcGxhY2VtZW50XCJcbiAgICBsZXQgcmVzdWx0ID0geyBzdGF0dXM6IDIwMCB9O1xuICAgIGNvbnN0IHJlc3BvbmQgPSAobWVzc2FnZSkgPT4ge1xuICAgICAgZGVidWcoJ3NlbmRpbmcgYXN5bmMgcmVzcG9uc2UnKTtcbiAgICAgIHJldHVybiB0aGlzLmF4aW9zLnBvc3QocGF5bG9hZC5yZXNwb25zZV91cmwsIG1lc3NhZ2UpO1xuICAgIH07XG5cbiAgICB0aGlzLmNhbGxiYWNrcy5zb21lKChbY29uc3RyYWludHMsIGZuXSkgPT4ge1xuICAgICAgLy8gUmV0dXJuaW5nIGZhbHNlIGluIHRoaXMgZnVuY3Rpb24gY29udGludWVzIHRoZSBpdGVyYXRpb24sIGFuZCByZXR1cm5pbmcgdHJ1ZSBlbmRzIGl0LlxuICAgICAgLy8gVGhlIHBhdHRlcm4gaXMgdGhhdCB3ZSBhc3NpZ24gYSB2YWx1ZSB0byBgcmVzdWx0YCBhbmQgdGhlbiByZXR1cm4gdHJ1ZS4gV2Ugb25seSBkZXNpcmUgb25lXG4gICAgICAvLyByZXN1bHQgZm9yIHRoZSByZXNwb25zZS5cbiAgICAgIGxldCBjYWxsYmFja1Jlc3VsdDtcblxuICAgICAgaWYgKGNvbnN0cmFpbnRzLmNhbGxiYWNrSWQpIHtcbiAgICAgICAgaWYgKGlzU3RyaW5nKGNvbnN0cmFpbnRzLmNhbGxiYWNrSWQpICYmIHBheWxvYWQuY2FsbGJhY2tfaWQgIT09IGNvbnN0cmFpbnRzLmNhbGxiYWNrSWQpIHtcbiAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGlzUmVnRXhwKGNvbnN0cmFpbnRzLmNhbGxiYWNrSWQpICYmICFjb25zdHJhaW50cy5jYWxsYmFja0lkLnRlc3QocGF5bG9hZC5jYWxsYmFja19pZCkpIHtcbiAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgaWYgKGFjdGlvbiAmJiBjb25zdHJhaW50cy50eXBlICYmIGNvbnN0cmFpbnRzLnR5cGUgIT09IGFjdGlvbi50eXBlKSB7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgIH1cblxuICAgICAgaWYgKCd1bmZ1cmwnIGluIGNvbnN0cmFpbnRzICYmXG4gICAgICAgICAgIChcbiAgICAgICAgICAgICAoY29uc3RyYWludHMudW5mdXJsICYmICFwYXlsb2FkLmlzX2FwcF91bmZ1cmwpIHx8XG4gICAgICAgICAgICAgKCFjb25zdHJhaW50cy51bmZ1cmwgJiYgcGF5bG9hZC5pc19hcHBfdW5mdXJsKVxuICAgICAgICAgICApXG4gICAgICAgICApIHtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgfVxuXG4gICAgICB0cnkge1xuICAgICAgICBjYWxsYmFja1Jlc3VsdCA9IGZuLmNhbGwodGhpcywgcGF5bG9hZCwgcmVzcG9uZCk7XG4gICAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgICBkZWJ1ZygnY2FsbGJhY2sgZXJyb3I6ICVvJywgZXJyb3IpO1xuICAgICAgICByZXN1bHQgPSB7IHN0YXR1czogNTAwIH07XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgfVxuXG4gICAgICBpZiAoY2FsbGJhY2tSZXN1bHQpIHtcbiAgICAgICAgLy8gQ2hlY2tpbmcgZm9yIFByb21pc2UgdHlwZVxuICAgICAgICBpZiAodHlwZW9mIGNhbGxiYWNrUmVzdWx0LnRoZW4gPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgICBjYWxsYmFja1Jlc3VsdC50aGVuKHJlc3BvbmQpLmNhdGNoKChlcnJvcikgPT4ge1xuICAgICAgICAgICAgZGVidWcoJ2FzeW5jIGVycm9yIGZvciBjYWxsYmFjay4gY2FsbGJhY2tfaWQ6ICVzLCBlcnJvcjogJXMnLFxuICAgICAgICAgICAgICAgICAgcGF5bG9hZC5jYWxsYmFja19pZCwgZXJyb3IubWVzc2FnZSk7XG4gICAgICAgICAgfSk7XG4gICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgIH1cbiAgICAgICAgcmVzdWx0ID0geyBzdGF0dXM6IDIwMCwgY29udGVudDogY2FsbGJhY2tSZXN1bHQgfTtcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICB9XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9KTtcblxuICAgIHJldHVybiByZXN1bHQ7XG4gIH1cbn1cbiJdfQ== | ||
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9hZGFwdGVyLmpzIl0sIm5hbWVzIjpbImRlYnVnIiwiZm9ybWF0TWF0Y2hpbmdDb25zdHJhaW50cyIsIm1hdGNoaW5nQ29uc3RyYWludHMiLCJyZXQiLCJjYWxsYmFja0lkIiwiT2JqZWN0IiwiYXNzaWduIiwidmFsaWRhdGVDb25zdHJhaW50cyIsIlR5cGVFcnJvciIsInZhbGlkYXRlQWN0aW9uQ29uc3RyYWludHMiLCJhY3Rpb25Db25zdHJhaW50cyIsInR5cGUiLCJTbGFja01lc3NhZ2VBZGFwdGVyIiwidmVyaWZpY2F0aW9uVG9rZW4iLCJjYWxsYmFja3MiLCJheGlvcyIsImNyZWF0ZSIsImhlYWRlcnMiLCJwYXRoIiwiUHJvbWlzZSIsInJlc29sdmUiLCJ0aGVuIiwiYWxsIiwiZXhwcmVzcyIsImJvZHlQYXJzZXIiLCJhcHAiLCJ1c2UiLCJ1cmxlbmNvZGVkIiwiZXh0ZW5kZWQiLCJwb3N0IiwiZXhwcmVzc01pZGRsZXdhcmUiLCJjcmVhdGVTZXJ2ZXIiLCJwb3J0IiwicmVqZWN0Iiwic2VydmVyIiwib24iLCJsaXN0ZW4iLCJjbG9zZSIsImVycm9yIiwiRXJyb3IiLCJjYWxsYmFjayIsIm1lc3NhZ2UiLCJyZWdpc3RlckNhbGxiYWNrIiwib3B0aW9uc0NvbnN0cmFpbnRzIiwiY29uc3RyYWludHMiLCJwdXNoIiwicGF5bG9hZCIsImFjdGlvbiIsImFjdGlvbnMiLCJyZXN1bHQiLCJzdGF0dXMiLCJkaWFsb2dQcm9taXNlUmVzb2x2ZSIsInJlc3BvbmQiLCJyZXNwb25zZV91cmwiLCJzb21lIiwiZm4iLCJjYWxsYmFja1Jlc3VsdCIsImNhbGxiYWNrX2lkIiwidGVzdCIsInVuZnVybCIsImlzX2FwcF91bmZ1cmwiLCJjYWxsIiwibXMiLCJjb250ZW50IiwiY2F0Y2giXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7QUFBQTs7OztBQUNBOzs7O0FBQ0E7Ozs7QUFDQTs7OztBQUNBOzs7O0FBQ0E7Ozs7QUFDQTs7OztBQUNBOztBQUNBOzs7Ozs7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LElBQXRCLEtBQStCLFVBQW5DLEVBQStDO0FBQzdDbUMsMkJBQWVuQyxJQUFmLENBQW9CK0IsT0FBcEIsRUFBNkJZLEtBQTdCLENBQW1DLFVBQUMxQixLQUFELEVBQVc7QUFDNUN0QyxvQkFBTSxzREFBTixFQUNNOEMsUUFBUVcsV0FEZCxFQUMyQm5CLE1BQU1HLE9BRGpDO0FBRUQsYUFIRDtBQUlBLG1CQUFPLElBQVA7QUFDRDtBQUNEUSxtQkFBUyxFQUFFQyxRQUFRLEdBQVYsRUFBZWEsU0FBU1AsY0FBeEIsRUFBVDtBQUNBLGlCQUFPLElBQVA7QUFDRDtBQUNELGVBQU8sSUFBUDtBQUNELE9BL0REOztBQWlFQSxhQUFPUCxNQUFQO0FBQ0Q7Ozs7OztrQkF0TWtCckMsbUIiLCJmaWxlIjoiYWRhcHRlci5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBodHRwIGZyb20gJ2h0dHAnO1xuaW1wb3J0IGF4aW9zIGZyb20gJ2F4aW9zJztcbmltcG9ydCBpc1N0cmluZyBmcm9tICdsb2Rhc2guaXNzdHJpbmcnO1xuaW1wb3J0IGlzUGxhaW5PYmplY3QgZnJvbSAnbG9kYXNoLmlzcGxhaW5vYmplY3QnO1xuaW1wb3J0IGlzUmVnRXhwIGZyb20gJ2xvZGFzaC5pc3JlZ2V4cCc7XG5pbXBvcnQgaXNGdW5jdGlvbiBmcm9tICdsb2Rhc2guaXNmdW5jdGlvbic7XG5pbXBvcnQgZGVidWdGYWN0b3J5IGZyb20gJ2RlYnVnJztcbmltcG9ydCB7IGNyZWF0ZUV4cHJlc3NNaWRkbGV3YXJlIH0gZnJvbSAnLi9leHByZXNzLW1pZGRsZXdhcmUnO1xuaW1wb3J0IHsgcGFja2FnZUlkZW50aWZpZXIsIHByb21pc2VUaW1lb3V0IH0gZnJvbSAnLi91dGlsJztcblxuY29uc3QgZGVidWcgPSBkZWJ1Z0ZhY3RvcnkoJ0BzbGFjay9pbnRlcmFjdGl2ZS1tZXNzYWdlczphZGFwdGVyJyk7XG5cbi8qKlxuICogVHJhbnNmb3JtcyB2YXJpb3VzIGZvcm1zIG9mIG1hdGNoaW5nIGNvbnN0cmFpbnRzIHRvIGEgc2luZ2xlIHN0YW5kYXJkIG9iamVjdCBzaGFwZVxuICogQHBhcmFtIHtzdHJpbmd8UmVnRXhwfE9iamVjdH0gbWF0Y2hpbmdDb25zdHJhaW50cyAtIHRoZSB2YXJpb3VzIGZvcm1zIG9mIG1hdGNoaW5nIGNvbnN0cmFpbnRzXG4gKiBhY2NlcHRlZFxuICogQHJldHVybnMge09iamVjdH0gLSBhbiBvYmplY3Qgd2hlcmUgZWFjaCBtYXRjaGluZyBjb25zdHJhaW50IGlzIGEgcHJvcGVydHlcbiAqL1xuZnVuY3Rpb24gZm9ybWF0TWF0Y2hpbmdDb25zdHJhaW50cyhtYXRjaGluZ0NvbnN0cmFpbnRzKSB7XG4gIGxldCByZXQgPSB7fTtcbiAgaWYgKCFpc1BsYWluT2JqZWN0KG1hdGNoaW5nQ29uc3RyYWludHMpKSB7XG4gICAgcmV0LmNhbGxiYWNrSWQgPSBtYXRjaGluZ0NvbnN0cmFpbnRzO1xuICB9IGVsc2Uge1xuICAgIHJldCA9IE9iamVjdC5hc3NpZ24oe30sIG1hdGNoaW5nQ29uc3RyYWludHMpO1xuICB9XG4gIHJldHVybiByZXQ7XG59XG5cbi8qKlxuICogVmFsaWRhdGVzIGdlbmVyYWwgcHJvcGVydGllcyBvZiBhIG1hdGNoaW5nIGNvbnN0cmFpbnRzIG9iamVjdFxuICogQHBhcmFtIHtPYmplY3R9IG1hdGNoaW5nQ29uc3RyYWludHMgLSBvYmplY3QgZGVzY3JpYmluZyB0aGUgY29uc3RyYWludHMgb24gYSBjYWxsYmFja1xuICogQHJldHVybiB7RXJyb3J8ZmFsc2V9IC0gYSBmYWxzZSB2YWx1ZSByZXByZXNlbnRzIHN1Y2Nlc3NmdWwgdmFsaWRhdGlvbiwgb3RoZXJ3aXNlIGFuIGVycm9yIHRvXG4gKiBkZXNjcmliZSB3aHkgdmFsaWRhdGlvbiBmYWlsZWQuXG4gKi9cbmZ1bmN0aW9uIHZhbGlkYXRlQ29uc3RyYWludHMobWF0Y2hpbmdDb25zdHJhaW50cykge1xuICBpZiAobWF0Y2hpbmdDb25zdHJhaW50cy5jYWxsYmFja0lkICYmXG4gICAgICAhKGlzU3RyaW5nKG1hdGNoaW5nQ29uc3RyYWludHMuY2FsbGJhY2tJZCkgfHwgaXNSZWdFeHAobWF0Y2hpbmdDb25zdHJhaW50cy5jYWxsYmFja0lkKSkpIHtcbiAgICByZXR1cm4gbmV3IFR5cGVFcnJvcignQ2FsbGJhY2sgSUQgbXVzdCBiZSBhIHN0cmluZyBvciBSZWdFeHAnKTtcbiAgfVxuXG4gIHJldHVybiBmYWxzZTtcbn1cblxuLyoqXG4gKiBWYWxpZGF0ZXMgcHJvcGVydGllcyBvZiBhIG1hdGNoaW5nIGNvbnN0cmFpbnRzIG9iamVjdCBzcGVjaWZpYyB0byByZWdpc3RlcmluZyBhbiBhY3Rpb25cbiAqIEBwYXJhbSB7T2JqZWN0fSBtYXRjaGluZ0NvbnN0cmFpbnRzIC0gb2JqZWN0IGRlc2NyaWJpbmcgdGhlIGNvbnN0cmFpbnRzIG9uIGEgY2FsbGJhY2tcbiAqIEByZXR1cm4ge0Vycm9yfGZhbHNlfSAtIGEgZmFsc2UgdmFsdWUgcmVwcmVzZW50cyBzdWNjZXNzZnVsIHZhbGlkYXRpb24sIG90aGVyd2lzZSBhbiBlcnJvciB0b1xuICogZGVzY3JpYmUgd2h5IHZhbGlkYXRpb24gZmFpbGVkLlxuICovXG5mdW5jdGlvbiB2YWxpZGF0ZUFjdGlvbkNvbnN0cmFpbnRzKGFjdGlvbkNvbnN0cmFpbnRzKSB7XG4gIGlmIChhY3Rpb25Db25zdHJhaW50cy50eXBlICYmXG4gICAgICAhKGFjdGlvbkNvbnN0cmFpbnRzLnR5cGUgPT09ICdzZWxlY3QnIHx8IGFjdGlvbkNvbnN0cmFpbnRzLnR5cGUgPT09ICdidXR0b24nKSkge1xuICAgIHJldHVybiBuZXcgVHlwZUVycm9yKCdUeXBlIG11c3QgYmUgXFwnc2VsZWN0XFwnIG9yIFxcJ2J1dHRvblxcJycpO1xuICB9XG5cbiAgLy8gV2UgZG9uJ3QgbmVlZCB0byB2YWxpZGF0ZSB1bmZ1cmwsIHdlJ2xsIGp1c3QgY29vZXJjZSBpdCB0byBhIGJvb2xlYW5cbiAgcmV0dXJuIGZhbHNlO1xufVxuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBTbGFja01lc3NhZ2VBZGFwdGVyIHtcbiAgLyoqXG4gICAqIENyZWF0ZSBhIG1lc3NhZ2UgYWRhcHRlci5cbiAgICpcbiAgICogQHBhcmFtIHtzdHJpbmd9IHZlcmlmaWNhdGlvblRva2VuIC0gU2xhY2sgYXBwIHZlcmlmaWNhdGlvbiB0b2tlbiB1c2VkIHRvIGF1dGhlbnRpY2F0ZSByZXF1ZXN0XG4gICAqL1xuICBjb25zdHJ1Y3Rvcih2ZXJpZmljYXRpb25Ub2tlbikge1xuICAgIGlmICghaXNTdHJpbmcodmVyaWZpY2F0aW9uVG9rZW4pKSB7XG4gICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdTbGFja01lc3NhZ2VBZGFwdGVyIG5lZWRzIGEgdmVyaWZpY2F0aW9uIHRva2VuJyk7XG4gICAgfVxuXG4gICAgdGhpcy52ZXJpZmljYXRpb25Ub2tlbiA9IHZlcmlmaWNhdGlvblRva2VuO1xuICAgIHRoaXMuY2FsbGJhY2tzID0gW107XG4gICAgdGhpcy5heGlvcyA9IGF4aW9zLmNyZWF0ZSh7XG4gICAgICBoZWFkZXJzOiB7XG4gICAgICAgICdVc2VyLUFnZW50JzogcGFja2FnZUlkZW50aWZpZXIoKSxcbiAgICAgIH0sXG4gICAgfSk7XG5cbiAgICBkZWJ1ZygnaW5zdGFudGlhdGVkJyk7XG4gIH1cblxuICAvKipcbiAgICogQ3JlYXRlIGEgc2VydmVyIHRoYXQncyByZWFkeSB0byBzZXJ2ZSByZXF1ZXN0cyBmcm9tIFNsYWNrJ3MgaW50ZXJhY3RpdmUgbWVzc2FnZXMuXG4gICAqXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBbcGF0aD0vc2xhY2svYWN0aW9uc10gLSBUaGUgcGF0aCBwb3J0aW9uIG9mIHRoZSBVUkwgd2hlcmUgdGhlIHNlcnZlciB3aWxsXG4gICAqIGxpc3RlbiBmb3IgcmVxdWVzdHMgZnJvbSBTbGFjaydzIGludGVyYWN0aXZlIG1lc3NhZ2VzLlxuICAgKi9cbiAgY3JlYXRlU2VydmVyKHBhdGggPSAnL3NsYWNrL2FjdGlvbnMnKSB7XG4gICAgLy8gVE9ETzogbW9yZSBvcHRpb25zIChsaWtlIGh0dHBzKVxuICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUoKS50aGVuKCgpID0+IFByb21pc2UuYWxsKFtcbiAgICAgIGltcG9ydCgnZXhwcmVzcycpLFxuICAgICAgaW1wb3J0KCdib2R5LXBhcnNlcicpLFxuICAgIF0pKVxuICAgIC50aGVuKChbZXhwcmVzcywgYm9keVBhcnNlcl0pID0+IHtcbiAgICAgIGNvbnN0IGFwcCA9IGV4cHJlc3MoKTtcbiAgICAgIGFwcC51c2UoYm9keVBhcnNlci51cmxlbmNvZGVkKHsgZXh0ZW5kZWQ6IGZhbHNlIH0pKTtcbiAgICAgIGFwcC5wb3N0KHBhdGgsIHRoaXMuZXhwcmVzc01pZGRsZXdhcmUoKSk7XG5cbiAgICAgIGRlYnVnKCdzZXJ2ZXIgY3JlYXRlZCAtIHBhdGg6ICVzJywgcGF0aCk7XG5cbiAgICAgIHJldHVybiBodHRwLmNyZWF0ZVNlcnZlcihhcHApO1xuICAgIH0pO1xuICB9XG5cbiAgc3RhcnQocG9ydCkge1xuICAgIHJldHVybiB0aGlzLmNyZWF0ZVNlcnZlcigpXG4gICAgICAudGhlbihzZXJ2ZXIgPT4gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuICAgICAgICB0aGlzLnNlcnZlciA9IHNlcnZlcjtcbiAgICAgICAgc2VydmVyLm9uKCdlcnJvcicsIHJlamVjdCk7XG4gICAgICAgIHNlcnZlci5saXN0ZW4ocG9ydCwgKCkgPT4gcmVzb2x2ZShzZXJ2ZXIpKTtcbiAgICAgICAgZGVidWcoJ3NlcnZlciBzdGFydGVkIC0gcG9ydDogJXMnLCBwb3J0KTtcbiAgICAgIH0pKTtcbiAgfVxuXG4gIHN0b3AoKSB7XG4gICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICAgIGlmICh0aGlzLnNlcnZlcikge1xuICAgICAgICB0aGlzLnNlcnZlci5jbG9zZSgoZXJyb3IpID0+IHtcbiAgICAgICAgICBkZWxldGUgdGhpcy5zZXJ2ZXI7XG4gICAgICAgICAgaWYgKGVycm9yKSB7XG4gICAgICAgICAgICByZWplY3QoZXJyb3IpO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICByZXNvbHZlKCk7XG4gICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHJlamVjdChuZXcgRXJyb3IoJ1NsYWNrTWVzc2FnZUFkYXB0ZXIgY2Fubm90IHN0b3Agd2hlbiBpdCBkaWQgbm90IHN0YXJ0IGEgc2VydmVyJykpO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG5cbiAgZXhwcmVzc01pZGRsZXdhcmUoKSB7XG4gICAgcmV0dXJuIGNyZWF0ZUV4cHJlc3NNaWRkbGV3YXJlKHRoaXMpO1xuICB9XG5cbiAgYWN0aW9uKG1hdGNoaW5nQ29uc3RyYWludHMsIGNhbGxiYWNrKSB7XG4gICAgY29uc3QgYWN0aW9uQ29uc3RyYWludHMgPSBmb3JtYXRNYXRjaGluZ0NvbnN0cmFpbnRzKG1hdGNoaW5nQ29uc3RyYWludHMpO1xuXG4gICAgY29uc3QgZXJyb3IgPSB2YWxpZGF0ZUNvbnN0cmFpbnRzKGFjdGlvbkNvbnN0cmFpbnRzKSB8fFxuICAgICAgdmFsaWRhdGVBY3Rpb25Db25zdHJhaW50cyhhY3Rpb25Db25zdHJhaW50cyk7XG4gICAgaWYgKGVycm9yKSB7XG4gICAgICBkZWJ1ZygnYWN0aW9uIGNvdWxkIG5vdCBiZSByZWdpc3RlcmVkOiAlcycsIGVycm9yLm1lc3NhZ2UpO1xuICAgICAgdGhyb3cgZXJyb3I7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMucmVnaXN0ZXJDYWxsYmFjayhhY3Rpb25Db25zdHJhaW50cywgY2FsbGJhY2spO1xuICB9XG5cbiAgb3B0aW9ucyhtYXRjaGluZ0NvbnN0cmFpbnRzLCBjYWxsYmFjaykge1xuICAgIGNvbnN0IG9wdGlvbnNDb25zdHJhaW50cyA9IGZvcm1hdE1hdGNoaW5nQ29uc3RyYWludHMobWF0Y2hpbmdDb25zdHJhaW50cyk7XG5cbiAgICBjb25zdCBlcnJvciA9IHZhbGlkYXRlQ29uc3RyYWludHMob3B0aW9uc0NvbnN0cmFpbnRzKTtcbiAgICBpZiAoZXJyb3IpIHtcbiAgICAgIGRlYnVnKCdvcHRpb25zIGNvdWxkIG5vdCBiZSByZWdpc3RlcmVkOiAlcycsIGVycm9yLm1lc3NhZ2UpO1xuICAgICAgdGhyb3cgZXJyb3I7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMucmVnaXN0ZXJDYWxsYmFjayhvcHRpb25zQ29uc3RyYWludHMsIGNhbGxiYWNrKTtcbiAgfVxuXG4gIC8qIEBwcml2YXRlICovXG5cbiAgcmVnaXN0ZXJDYWxsYmFjayhjb25zdHJhaW50cywgY2FsbGJhY2spIHtcbiAgICAvLyBWYWxpZGF0aW9uXG4gICAgaWYgKCFpc0Z1bmN0aW9uKGNhbGxiYWNrKSkge1xuICAgICAgZGVidWcoJ2RpZCBub3QgcmVnaXN0ZXIgY2FsbGJhY2sgYmVjYXVzZSBpdHMgbm90IGEgZnVuY3Rpb24nKTtcbiAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ2NhbGxiYWNrIG11c3QgYmUgYSBmdW5jdGlvbicpO1xuICAgIH1cblxuICAgIHRoaXMuY2FsbGJhY2tzLnB1c2goW2NvbnN0cmFpbnRzLCBjYWxsYmFja10pO1xuXG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICBkaXNwYXRjaChwYXlsb2FkKSB7XG4gICAgY29uc3QgYWN0aW9uID0gcGF5bG9hZC5hY3Rpb25zICYmIHBheWxvYWQuYWN0aW9uc1swXTtcblxuICAgIC8vIFRoZSBmb2xsb3dpbmcgcmVzdWx0IHZhbHVlIHJlcHJlc2VudHMgXCJubyByZXBsYWNlbWVudFwiXG4gICAgbGV0IHJlc3VsdCA9IHsgc3RhdHVzOiAyMDAgfTtcbiAgICAvLyB3aGVuIHRoZSBtYXRjaGVyIGZpbmRzIGEgZGlhbG9nIHN1Ym1pc3Npb24sIGl0IHdpbGwgcG9wdWxhdGUgdGhpcyB2YWx1ZSB3aXRoIGEgZnVuY3Rpb25cbiAgICBsZXQgZGlhbG9nUHJvbWlzZVJlc29sdmU7XG4gICAgY29uc3QgcmVzcG9uZCA9IChtZXNzYWdlKSA9PiB7XG4gICAgICBpZiAocGF5bG9hZC5yZXNwb25zZV91cmwpIHtcbiAgICAgICAgZGVidWcoJ3NlbmRpbmcgYXN5bmMgcmVzcG9uc2UnKTtcbiAgICAgICAgcmV0dXJuIHRoaXMuYXhpb3MucG9zdChwYXlsb2FkLnJlc3BvbnNlX3VybCwgbWVzc2FnZSk7XG4gICAgICB9IGVsc2UgaWYgKGRpYWxvZ1Byb21pc2VSZXNvbHZlKSB7XG4gICAgICAgIGRpYWxvZ1Byb21pc2VSZXNvbHZlKG1lc3NhZ2UpO1xuICAgICAgfVxuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfTtcblxuICAgIHRoaXMuY2FsbGJhY2tzLnNvbWUoKFtjb25zdHJhaW50cywgZm5dKSA9PiB7XG4gICAgICAvLyBSZXR1cm5pbmcgZmFsc2UgaW4gdGhpcyBmdW5jdGlvbiBjb250aW51ZXMgdGhlIGl0ZXJhdGlvbiwgYW5kIHJldHVybmluZyB0cnVlIGVuZHMgaXQuXG4gICAgICAvLyBUaGUgcGF0dGVybiBpcyB0aGF0IHdlIGFzc2lnbiBhIHZhbHVlIHRvIGByZXN1bHRgIGFuZCB0aGVuIHJldHVybiB0cnVlLiBXZSBvbmx5IGRlc2lyZSBvbmVcbiAgICAgIC8vIHJlc3VsdCBmb3IgdGhlIHJlc3BvbnNlLlxuICAgICAgbGV0IGNhbGxiYWNrUmVzdWx0O1xuXG4gICAgICBpZiAoY29uc3RyYWludHMuY2FsbGJhY2tJZCkge1xuICAgICAgICBpZiAoaXNTdHJpbmcoY29uc3RyYWludHMuY2FsbGJhY2tJZCkgJiYgcGF5bG9hZC5jYWxsYmFja19pZCAhPT0gY29uc3RyYWludHMuY2FsbGJhY2tJZCkge1xuICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoaXNSZWdFeHAoY29uc3RyYWludHMuY2FsbGJhY2tJZCkgJiYgIWNvbnN0cmFpbnRzLmNhbGxiYWNrSWQudGVzdChwYXlsb2FkLmNhbGxiYWNrX2lkKSkge1xuICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBpZiAoYWN0aW9uICYmIGNvbnN0cmFpbnRzLnR5cGUgJiYgY29uc3RyYWludHMudHlwZSAhPT0gYWN0aW9uLnR5cGUpIHtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgfVxuXG4gICAgICBpZiAoJ3VuZnVybCcgaW4gY29uc3RyYWludHMgJiZcbiAgICAgICAgICAgKFxuICAgICAgICAgICAgIChjb25zdHJhaW50cy51bmZ1cmwgJiYgIXBheWxvYWQuaXNfYXBwX3VuZnVybCkgfHxcbiAgICAgICAgICAgICAoIWNvbnN0cmFpbnRzLnVuZnVybCAmJiBwYXlsb2FkLmlzX2FwcF91bmZ1cmwpXG4gICAgICAgICAgIClcbiAgICAgICAgICkge1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICB9XG5cbiAgICAgIHRyeSB7XG4gICAgICAgIGNhbGxiYWNrUmVzdWx0ID0gZm4uY2FsbCh0aGlzLCBwYXlsb2FkLCByZXNwb25kKTtcbiAgICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICAgIGRlYnVnKCdjYWxsYmFjayBlcnJvcjogJW8nLCBlcnJvcik7XG4gICAgICAgIHJlc3VsdCA9IHsgc3RhdHVzOiA1MDAgfTtcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICB9XG5cbiAgICAgIC8vIERpYWxvZyBzdWJtaXNzaW9ucyBtdXN0IGJlIHJlc3BvbmRlZCB0byBpbiB1bmRlciAzIHNlY29uZHNcbiAgICAgIC8vIFNldHRpbmcgdGltZW91dCB0byAgMi41IHNlY29uZHMgdG8gYWNjb3VudCBmb3IgcHJvcGFnYXRpb25cbiAgICAgIGlmIChwYXlsb2FkLnR5cGUgPT09ICdkaWFsb2dfc3VibWlzc2lvbicpIHtcbiAgICAgICAgY29uc3QgbXMgPSAyNTAwO1xuICAgICAgICBpZiAoY2FsbGJhY2tSZXN1bHQpIHtcbiAgICAgICAgICByZXN1bHQgPSB7IHN0YXR1czogMjAwLCBjb250ZW50OiBwcm9taXNlVGltZW91dChtcywgY2FsbGJhY2tSZXN1bHQpIH07XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgcmVzdWx0ID0ge1xuICAgICAgICAgICAgc3RhdHVzOiAyMDAsIGNvbnRlbnQ6IG5ldyBQcm9taXNlKChyZXNvbHZlKSA9PiB7IGRpYWxvZ1Byb21pc2VSZXNvbHZlID0gcmVzb2x2ZTsgfSksXG4gICAgICAgICAgfTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgIH1cblxuICAgICAgaWYgKGNhbGxiYWNrUmVzdWx0KSB7XG4gICAgICAgIC8vIENoZWNraW5nIGZvciBQcm9taXNlIHR5cGVcbiAgICAgICAgaWYgKHR5cGVvZiBjYWxsYmFja1Jlc3VsdC50aGVuID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgICAgY2FsbGJhY2tSZXN1bHQudGhlbihyZXNwb25kKS5jYXRjaCgoZXJyb3IpID0+IHtcbiAgICAgICAgICAgIGRlYnVnKCdhc3luYyBlcnJvciBmb3IgY2FsbGJhY2suIGNhbGxiYWNrX2lkOiAlcywgZXJyb3I6ICVzJyxcbiAgICAgICAgICAgICAgICAgIHBheWxvYWQuY2FsbGJhY2tfaWQsIGVycm9yLm1lc3NhZ2UpO1xuICAgICAgICAgIH0pO1xuICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICB9XG4gICAgICAgIHJlc3VsdCA9IHsgc3RhdHVzOiAyMDAsIGNvbnRlbnQ6IGNhbGxiYWNrUmVzdWx0IH07XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgfVxuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfSk7XG5cbiAgICByZXR1cm4gcmVzdWx0O1xuICB9XG59XG4iXX0= | ||
//# sourceMappingURL=adapter.js.map |
@@ -29,24 +29,26 @@ 'use strict'; | ||
function sendResponse(res) { | ||
return function _sendResponse(_ref) { | ||
var status = _ref.status, | ||
content = _ref.content; | ||
return function _sendResponse(dispatchResult) { | ||
var status = dispatchResult.status, | ||
content = dispatchResult.content; | ||
debug('sending response - status: %s, content: %o', status, content); | ||
return new Promise(function (resolve, reject) { | ||
var contentReady = content && typeof content.then === 'function' ? content : Promise.resolve(content); | ||
return contentReady.then(function (c) { | ||
res.status(status); | ||
res.set('X-Slack-Powered-By', poweredBy); | ||
if (content) { | ||
res.json(content); | ||
if (c) { | ||
res.json(c); | ||
} else { | ||
res.end(); | ||
} | ||
res.on('finish', function () { | ||
// res._headers is an undocumented property, but we feel comfortable using it because: | ||
// 1. express depends on it and express is so foundational in node | ||
// 2. this is logging code and the risk of this causing a break is minimal | ||
// eslint-disable-next-line no-underscore-dangle | ||
debug('response finished - status: %d, headers: %o', res.statusCode, res._headers); | ||
resolve(res); | ||
return new Promise(function (resolve, reject) { | ||
res.on('finish', function () { | ||
// res._headers is an undocumented property, but we feel comfortable using it because: | ||
// 1. express depends on it and express is so foundational in node | ||
// 2. this is logging code and the risk of this causing a break is minimal | ||
// eslint-disable-next-line no-underscore-dangle | ||
debug('response finished - status: %d, headers: %o', res.statusCode, res._headers); | ||
resolve(res); | ||
}); | ||
res.on('error', reject); | ||
}); | ||
res.on('error', reject); | ||
}); | ||
@@ -57,3 +59,3 @@ }; | ||
return function slackMessageAdapterMiddleware(req, res, next) { | ||
debug('request recieved - method: %s, path: %s', req.method, req.path); | ||
debug('request received - method: %s, path: %s', req.method, req.path); | ||
@@ -92,3 +94,3 @@ // Bind a response function to this request's respond object. This may be used in a number of | ||
} | ||
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9leHByZXNzLW1pZGRsZXdhcmUuanMiXSwibmFtZXMiOlsiY3JlYXRlRXhwcmVzc01pZGRsZXdhcmUiLCJlcnJvckNvZGVzIiwiTk9fQk9EWV9QQVJTRVIiLCJUT0tFTl9WRVJJRklDQVRJT05fRkFJTFVSRSIsImRlYnVnIiwiYWRhcHRlciIsInBvd2VyZWRCeSIsInNlbmRSZXNwb25zZSIsInJlcyIsIl9zZW5kUmVzcG9uc2UiLCJzdGF0dXMiLCJjb250ZW50IiwiUHJvbWlzZSIsInJlc29sdmUiLCJyZWplY3QiLCJzZXQiLCJqc29uIiwiZW5kIiwib24iLCJzdGF0dXNDb2RlIiwiX2hlYWRlcnMiLCJzbGFja01lc3NhZ2VBZGFwdGVyTWlkZGxld2FyZSIsInJlcSIsIm5leHQiLCJtZXRob2QiLCJwYXRoIiwicmVzcG9uZCIsImJvZHkiLCJlcnJvciIsIkVycm9yIiwiY29kZSIsInNzbF9jaGVjayIsInBheWxvYWQiLCJKU09OIiwicGFyc2UiLCJ0b2tlbiIsInZlcmlmaWNhdGlvblRva2VuIiwiZGlzcGF0Y2giLCJjYXRjaCJdLCJtYXBwaW5ncyI6Ijs7Ozs7O1FBVWdCQSx1QixHQUFBQSx1Qjs7QUFWaEI7Ozs7QUFDQTs7OztBQUVPLElBQU1DLGtDQUFhO0FBQ3hCQyxrQkFBZ0IsdUNBRFE7QUFFeEJDLDhCQUE0QjtBQUZKLENBQW5COztBQUtQLElBQU1DLFFBQVEscUJBQWEsZ0RBQWIsQ0FBZDs7QUFFTyxTQUFTSix1QkFBVCxDQUFpQ0ssT0FBakMsRUFBMEM7QUFDL0MsTUFBTUMsWUFBWSw4QkFBbEI7O0FBRUE7QUFDQSxXQUFTQyxZQUFULENBQXNCQyxHQUF0QixFQUEyQjtBQUN6QixXQUFPLFNBQVNDLGFBQVQsT0FBNEM7QUFBQSxVQUFuQkMsTUFBbUIsUUFBbkJBLE1BQW1CO0FBQUEsVUFBWEMsT0FBVyxRQUFYQSxPQUFXOztBQUNqRFAsWUFBTSw0Q0FBTixFQUFvRE0sTUFBcEQsRUFBNERDLE9BQTVEO0FBQ0EsYUFBTyxJQUFJQyxPQUFKLENBQVksVUFBQ0MsT0FBRCxFQUFVQyxNQUFWLEVBQXFCO0FBQ3RDTixZQUFJRSxNQUFKLENBQVdBLE1BQVg7QUFDQUYsWUFBSU8sR0FBSixDQUFRLG9CQUFSLEVBQThCVCxTQUE5QjtBQUNBLFlBQUlLLE9BQUosRUFBYTtBQUNYSCxjQUFJUSxJQUFKLENBQVNMLE9BQVQ7QUFDRCxTQUZELE1BRU87QUFDTEgsY0FBSVMsR0FBSjtBQUNEO0FBQ0RULFlBQUlVLEVBQUosQ0FBTyxRQUFQLEVBQWlCLFlBQU07QUFDckI7QUFDQTtBQUNBO0FBQ0E7QUFDQWQsZ0JBQU0sNkNBQU4sRUFBcURJLElBQUlXLFVBQXpELEVBQXFFWCxJQUFJWSxRQUF6RTtBQUNBUCxrQkFBUUwsR0FBUjtBQUNELFNBUEQ7QUFRQUEsWUFBSVUsRUFBSixDQUFPLE9BQVAsRUFBZ0JKLE1BQWhCO0FBQ0QsT0FqQk0sQ0FBUDtBQWtCRCxLQXBCRDtBQXFCRDs7QUFFRCxTQUFPLFNBQVNPLDZCQUFULENBQXVDQyxHQUF2QyxFQUE0Q2QsR0FBNUMsRUFBaURlLElBQWpELEVBQXVEO0FBQzVEbkIsVUFBTSx5Q0FBTixFQUFpRGtCLElBQUlFLE1BQXJELEVBQTZERixJQUFJRyxJQUFqRTs7QUFFQTtBQUNBO0FBQ0EsUUFBTUMsVUFBVW5CLGFBQWFDLEdBQWIsQ0FBaEI7O0FBRUE7QUFDQSxRQUFJLENBQUNjLElBQUlLLElBQVQsRUFBZTtBQUNiLFVBQU1DLFFBQVEsSUFBSUMsS0FBSixDQUFVLHVEQUFWLENBQWQ7QUFDQUQsWUFBTUUsSUFBTixHQUFhN0IsV0FBV0MsY0FBeEI7QUFDQXFCLFdBQUtLLEtBQUw7QUFDQTtBQUNEOztBQUVELFFBQUlOLElBQUlLLElBQUosQ0FBU0ksU0FBYixFQUF3QjtBQUN0QkwsY0FBUSxFQUFFaEIsUUFBUSxHQUFWLEVBQVI7QUFDQTtBQUNEOztBQUVELFFBQU1zQixVQUFVQyxLQUFLQyxLQUFMLENBQVdaLElBQUlLLElBQUosQ0FBU0ssT0FBcEIsQ0FBaEI7O0FBRUE7QUFDQSxRQUFJLENBQUNBLFFBQVFHLEtBQVQsSUFBa0JILFFBQVFHLEtBQVIsS0FBa0I5QixRQUFRK0IsaUJBQWhELEVBQW1FO0FBQ2pFaEMsWUFBTSxvQ0FBTjtBQUNBLFVBQU13QixTQUFRLElBQUlDLEtBQUosQ0FBVSwrQ0FBVixDQUFkO0FBQ0FELGFBQU1FLElBQU4sR0FBYTdCLFdBQVdFLDBCQUF4QjtBQUNBb0IsV0FBS0ssTUFBTDtBQUNBO0FBQ0Q7QUFDRHhCLFVBQU0sb0NBQU47O0FBRUFzQixZQUFRckIsUUFBUWdDLFFBQVIsQ0FBaUJMLE9BQWpCLENBQVIsRUFDR00sS0FESCxDQUNTZixJQURUO0FBRUQsR0FsQ0Q7QUFtQ0QiLCJmaWxlIjoiZXhwcmVzcy1taWRkbGV3YXJlLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IGRlYnVnRmFjdG9yeSBmcm9tICdkZWJ1Zyc7XG5pbXBvcnQgeyBwYWNrYWdlSWRlbnRpZmllciB9IGZyb20gJy4vdXRpbCc7XG5cbmV4cG9ydCBjb25zdCBlcnJvckNvZGVzID0ge1xuICBOT19CT0RZX1BBUlNFUjogJ1NMQUNLTUVTU0FHRU1JRERMRVdBUkVfTk9fQk9EWV9QQVJTRVInLFxuICBUT0tFTl9WRVJJRklDQVRJT05fRkFJTFVSRTogJ1NMQUNLTUVTU0FHRU1JRERMRVdBUkVfVE9LRU5fVkVSSUZJQ0FUSU9OX0ZBSUxVUkUnLFxufTtcblxuY29uc3QgZGVidWcgPSBkZWJ1Z0ZhY3RvcnkoJ0BzbGFjay9pbnRlcmFjdGl2ZS1tZXNzYWdlczpleHByZXNzLW1pZGRsZXdhcmUnKTtcblxuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZUV4cHJlc3NNaWRkbGV3YXJlKGFkYXB0ZXIpIHtcbiAgY29uc3QgcG93ZXJlZEJ5ID0gcGFja2FnZUlkZW50aWZpZXIoKTtcblxuICAvLyBUaGlzIGZ1bmN0aW9uIGJpbmRzIGEgc3BlY2lmaWMgcmVzcG9uc2UgaW5zdGFuY2UgdG8gYSBmdW5jdGlvblxuICBmdW5jdGlvbiBzZW5kUmVzcG9uc2UocmVzKSB7XG4gICAgcmV0dXJuIGZ1bmN0aW9uIF9zZW5kUmVzcG9uc2UoeyBzdGF0dXMsIGNvbnRlbnQgfSkge1xuICAgICAgZGVidWcoJ3NlbmRpbmcgcmVzcG9uc2UgLSBzdGF0dXM6ICVzLCBjb250ZW50OiAlbycsIHN0YXR1cywgY29udGVudCk7XG4gICAgICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuICAgICAgICByZXMuc3RhdHVzKHN0YXR1cyk7XG4gICAgICAgIHJlcy5zZXQoJ1gtU2xhY2stUG93ZXJlZC1CeScsIHBvd2VyZWRCeSk7XG4gICAgICAgIGlmIChjb250ZW50KSB7XG4gICAgICAgICAgcmVzLmpzb24oY29udGVudCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgcmVzLmVuZCgpO1xuICAgICAgICB9XG4gICAgICAgIHJlcy5vbignZmluaXNoJywgKCkgPT4ge1xuICAgICAgICAgIC8vIHJlcy5faGVhZGVycyBpcyBhbiB1bmRvY3VtZW50ZWQgcHJvcGVydHksIGJ1dCB3ZSBmZWVsIGNvbWZvcnRhYmxlIHVzaW5nIGl0IGJlY2F1c2U6XG4gICAgICAgICAgLy8gMS4gZXhwcmVzcyBkZXBlbmRzIG9uIGl0IGFuZCBleHByZXNzIGlzIHNvIGZvdW5kYXRpb25hbCBpbiBub2RlXG4gICAgICAgICAgLy8gMi4gdGhpcyBpcyBsb2dnaW5nIGNvZGUgYW5kIHRoZSByaXNrIG9mIHRoaXMgY2F1c2luZyBhIGJyZWFrIGlzIG1pbmltYWxcbiAgICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tdW5kZXJzY29yZS1kYW5nbGVcbiAgICAgICAgICBkZWJ1ZygncmVzcG9uc2UgZmluaXNoZWQgLSBzdGF0dXM6ICVkLCBoZWFkZXJzOiAlbycsIHJlcy5zdGF0dXNDb2RlLCByZXMuX2hlYWRlcnMpO1xuICAgICAgICAgIHJlc29sdmUocmVzKTtcbiAgICAgICAgfSk7XG4gICAgICAgIHJlcy5vbignZXJyb3InLCByZWplY3QpO1xuICAgICAgfSk7XG4gICAgfTtcbiAgfVxuXG4gIHJldHVybiBmdW5jdGlvbiBzbGFja01lc3NhZ2VBZGFwdGVyTWlkZGxld2FyZShyZXEsIHJlcywgbmV4dCkge1xuICAgIGRlYnVnKCdyZXF1ZXN0IHJlY2lldmVkIC0gbWV0aG9kOiAlcywgcGF0aDogJXMnLCByZXEubWV0aG9kLCByZXEucGF0aCk7XG5cbiAgICAvLyBCaW5kIGEgcmVzcG9uc2UgZnVuY3Rpb24gdG8gdGhpcyByZXF1ZXN0J3MgcmVzcG9uZCBvYmplY3QuIFRoaXMgbWF5IGJlIHVzZWQgaW4gYSBudW1iZXIgb2ZcbiAgICAvLyBwbGFjZXNcbiAgICBjb25zdCByZXNwb25kID0gc2VuZFJlc3BvbnNlKHJlcyk7XG5cbiAgICAvLyBDaGVjayB0aGF0IHRoZSByZXF1ZXN0IGJvZHkgaGFzIGJlZW4gcGFyc2VkXG4gICAgaWYgKCFyZXEuYm9keSkge1xuICAgICAgY29uc3QgZXJyb3IgPSBuZXcgRXJyb3IoJ1RoZSBpbmNvbWluZyBIVFRQIHJlcXVlc3QgZGlkIG5vdCBoYXZlIGEgcGFyc2VkIGJvZHkuJyk7XG4gICAgICBlcnJvci5jb2RlID0gZXJyb3JDb2Rlcy5OT19CT0RZX1BBUlNFUjtcbiAgICAgIG5leHQoZXJyb3IpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGlmIChyZXEuYm9keS5zc2xfY2hlY2spIHtcbiAgICAgIHJlc3BvbmQoeyBzdGF0dXM6IDIwMCB9KTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCBwYXlsb2FkID0gSlNPTi5wYXJzZShyZXEuYm9keS5wYXlsb2FkKTtcblxuICAgIC8vIEhhbmRsZSByZXF1ZXN0IHRva2VuIHZlcmlmaWNhdGlvblxuICAgIGlmICghcGF5bG9hZC50b2tlbiB8fCBwYXlsb2FkLnRva2VuICE9PSBhZGFwdGVyLnZlcmlmaWNhdGlvblRva2VuKSB7XG4gICAgICBkZWJ1ZygncmVxdWVzdCB0b2tlbiB2ZXJpZmljYXRpb24gZmFpbHVyZScpO1xuICAgICAgY29uc3QgZXJyb3IgPSBuZXcgRXJyb3IoJ1NsYWNrIGludGVyYWN0aXZlIG1lc3NhZ2UgdmVyaWZpY2F0aW9uIGZhaWxlZCcpO1xuICAgICAgZXJyb3IuY29kZSA9IGVycm9yQ29kZXMuVE9LRU5fVkVSSUZJQ0FUSU9OX0ZBSUxVUkU7XG4gICAgICBuZXh0KGVycm9yKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgZGVidWcoJ3JlcXVlc3QgdG9rZW4gdmVyaWZpY2F0aW9uIHN1Y2Nlc3MnKTtcblxuICAgIHJlc3BvbmQoYWRhcHRlci5kaXNwYXRjaChwYXlsb2FkKSlcbiAgICAgIC5jYXRjaChuZXh0KTtcbiAgfTtcbn1cbiJdfQ== | ||
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9leHByZXNzLW1pZGRsZXdhcmUuanMiXSwibmFtZXMiOlsiY3JlYXRlRXhwcmVzc01pZGRsZXdhcmUiLCJlcnJvckNvZGVzIiwiTk9fQk9EWV9QQVJTRVIiLCJUT0tFTl9WRVJJRklDQVRJT05fRkFJTFVSRSIsImRlYnVnIiwiYWRhcHRlciIsInBvd2VyZWRCeSIsInNlbmRSZXNwb25zZSIsInJlcyIsIl9zZW5kUmVzcG9uc2UiLCJkaXNwYXRjaFJlc3VsdCIsInN0YXR1cyIsImNvbnRlbnQiLCJjb250ZW50UmVhZHkiLCJ0aGVuIiwiUHJvbWlzZSIsInJlc29sdmUiLCJjIiwic2V0IiwianNvbiIsImVuZCIsInJlamVjdCIsIm9uIiwic3RhdHVzQ29kZSIsIl9oZWFkZXJzIiwic2xhY2tNZXNzYWdlQWRhcHRlck1pZGRsZXdhcmUiLCJyZXEiLCJuZXh0IiwibWV0aG9kIiwicGF0aCIsInJlc3BvbmQiLCJib2R5IiwiZXJyb3IiLCJFcnJvciIsImNvZGUiLCJzc2xfY2hlY2siLCJwYXlsb2FkIiwiSlNPTiIsInBhcnNlIiwidG9rZW4iLCJ2ZXJpZmljYXRpb25Ub2tlbiIsImRpc3BhdGNoIiwiY2F0Y2giXSwibWFwcGluZ3MiOiI7Ozs7OztRQVVnQkEsdUIsR0FBQUEsdUI7O0FBVmhCOzs7O0FBQ0E7Ozs7QUFFTyxJQUFNQyxrQ0FBYTtBQUN4QkMsa0JBQWdCLHVDQURRO0FBRXhCQyw4QkFBNEI7QUFGSixDQUFuQjs7QUFLUCxJQUFNQyxRQUFRLHFCQUFhLGdEQUFiLENBQWQ7O0FBRU8sU0FBU0osdUJBQVQsQ0FBaUNLLE9BQWpDLEVBQTBDO0FBQy9DLE1BQU1DLFlBQVksOEJBQWxCOztBQUVBO0FBQ0EsV0FBU0MsWUFBVCxDQUFzQkMsR0FBdEIsRUFBMkI7QUFDekIsV0FBTyxTQUFTQyxhQUFULENBQXVCQyxjQUF2QixFQUF1QztBQUFBLFVBQ3BDQyxNQURvQyxHQUNoQkQsY0FEZ0IsQ0FDcENDLE1BRG9DO0FBQUEsVUFDNUJDLE9BRDRCLEdBQ2hCRixjQURnQixDQUM1QkUsT0FENEI7O0FBRTVDLFVBQU1DLGVBQWdCRCxXQUFXLE9BQU9BLFFBQVFFLElBQWYsS0FBd0IsVUFBcEMsR0FBa0RGLE9BQWxELEdBQTRERyxRQUFRQyxPQUFSLENBQWdCSixPQUFoQixDQUFqRjtBQUNBLGFBQU9DLGFBQWFDLElBQWIsQ0FBa0IsVUFBQ0csQ0FBRCxFQUFPO0FBQzlCVCxZQUFJRyxNQUFKLENBQVdBLE1BQVg7QUFDQUgsWUFBSVUsR0FBSixDQUFRLG9CQUFSLEVBQThCWixTQUE5QjtBQUNBLFlBQUlXLENBQUosRUFBTztBQUNMVCxjQUFJVyxJQUFKLENBQVNGLENBQVQ7QUFDRCxTQUZELE1BRU87QUFDTFQsY0FBSVksR0FBSjtBQUNEO0FBQ0QsZUFBTyxJQUFJTCxPQUFKLENBQVksVUFBQ0MsT0FBRCxFQUFVSyxNQUFWLEVBQXFCO0FBQ3RDYixjQUFJYyxFQUFKLENBQU8sUUFBUCxFQUFpQixZQUFNO0FBQ3JCO0FBQ0E7QUFDQTtBQUNBO0FBQ0FsQixrQkFBTSw2Q0FBTixFQUFxREksSUFBSWUsVUFBekQsRUFBcUVmLElBQUlnQixRQUF6RTtBQUNBUixvQkFBUVIsR0FBUjtBQUNELFdBUEQ7QUFRQUEsY0FBSWMsRUFBSixDQUFPLE9BQVAsRUFBZ0JELE1BQWhCO0FBQ0QsU0FWTSxDQUFQO0FBV0QsT0FuQk0sQ0FBUDtBQW9CRCxLQXZCRDtBQXdCRDs7QUFFRCxTQUFPLFNBQVNJLDZCQUFULENBQXVDQyxHQUF2QyxFQUE0Q2xCLEdBQTVDLEVBQWlEbUIsSUFBakQsRUFBdUQ7QUFDNUR2QixVQUFNLHlDQUFOLEVBQWlEc0IsSUFBSUUsTUFBckQsRUFBNkRGLElBQUlHLElBQWpFOztBQUVBO0FBQ0E7QUFDQSxRQUFNQyxVQUFVdkIsYUFBYUMsR0FBYixDQUFoQjs7QUFFQTtBQUNBLFFBQUksQ0FBQ2tCLElBQUlLLElBQVQsRUFBZTtBQUNiLFVBQU1DLFFBQVEsSUFBSUMsS0FBSixDQUFVLHVEQUFWLENBQWQ7QUFDQUQsWUFBTUUsSUFBTixHQUFhakMsV0FBV0MsY0FBeEI7QUFDQXlCLFdBQUtLLEtBQUw7QUFDQTtBQUNEOztBQUVELFFBQUlOLElBQUlLLElBQUosQ0FBU0ksU0FBYixFQUF3QjtBQUN0QkwsY0FBUSxFQUFFbkIsUUFBUSxHQUFWLEVBQVI7QUFDQTtBQUNEOztBQUVELFFBQU15QixVQUFVQyxLQUFLQyxLQUFMLENBQVdaLElBQUlLLElBQUosQ0FBU0ssT0FBcEIsQ0FBaEI7O0FBRUE7QUFDQSxRQUFJLENBQUNBLFFBQVFHLEtBQVQsSUFBa0JILFFBQVFHLEtBQVIsS0FBa0JsQyxRQUFRbUMsaUJBQWhELEVBQW1FO0FBQ2pFcEMsWUFBTSxvQ0FBTjtBQUNBLFVBQU00QixTQUFRLElBQUlDLEtBQUosQ0FBVSwrQ0FBVixDQUFkO0FBQ0FELGFBQU1FLElBQU4sR0FBYWpDLFdBQVdFLDBCQUF4QjtBQUNBd0IsV0FBS0ssTUFBTDtBQUNBO0FBQ0Q7QUFDRDVCLFVBQU0sb0NBQU47O0FBRUEwQixZQUFRekIsUUFBUW9DLFFBQVIsQ0FBaUJMLE9BQWpCLENBQVIsRUFDR00sS0FESCxDQUNTZixJQURUO0FBRUQsR0FsQ0Q7QUFtQ0QiLCJmaWxlIjoiZXhwcmVzcy1taWRkbGV3YXJlLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IGRlYnVnRmFjdG9yeSBmcm9tICdkZWJ1Zyc7XG5pbXBvcnQgeyBwYWNrYWdlSWRlbnRpZmllciB9IGZyb20gJy4vdXRpbCc7XG5cbmV4cG9ydCBjb25zdCBlcnJvckNvZGVzID0ge1xuICBOT19CT0RZX1BBUlNFUjogJ1NMQUNLTUVTU0FHRU1JRERMRVdBUkVfTk9fQk9EWV9QQVJTRVInLFxuICBUT0tFTl9WRVJJRklDQVRJT05fRkFJTFVSRTogJ1NMQUNLTUVTU0FHRU1JRERMRVdBUkVfVE9LRU5fVkVSSUZJQ0FUSU9OX0ZBSUxVUkUnLFxufTtcblxuY29uc3QgZGVidWcgPSBkZWJ1Z0ZhY3RvcnkoJ0BzbGFjay9pbnRlcmFjdGl2ZS1tZXNzYWdlczpleHByZXNzLW1pZGRsZXdhcmUnKTtcblxuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZUV4cHJlc3NNaWRkbGV3YXJlKGFkYXB0ZXIpIHtcbiAgY29uc3QgcG93ZXJlZEJ5ID0gcGFja2FnZUlkZW50aWZpZXIoKTtcblxuICAvLyBUaGlzIGZ1bmN0aW9uIGJpbmRzIGEgc3BlY2lmaWMgcmVzcG9uc2UgaW5zdGFuY2UgdG8gYSBmdW5jdGlvblxuICBmdW5jdGlvbiBzZW5kUmVzcG9uc2UocmVzKSB7XG4gICAgcmV0dXJuIGZ1bmN0aW9uIF9zZW5kUmVzcG9uc2UoZGlzcGF0Y2hSZXN1bHQpIHtcbiAgICAgIGNvbnN0IHsgc3RhdHVzLCBjb250ZW50IH0gPSBkaXNwYXRjaFJlc3VsdDtcbiAgICAgIGNvbnN0IGNvbnRlbnRSZWFkeSA9IChjb250ZW50ICYmIHR5cGVvZiBjb250ZW50LnRoZW4gPT09ICdmdW5jdGlvbicpID8gY29udGVudCA6IFByb21pc2UucmVzb2x2ZShjb250ZW50KTtcbiAgICAgIHJldHVybiBjb250ZW50UmVhZHkudGhlbigoYykgPT4ge1xuICAgICAgICByZXMuc3RhdHVzKHN0YXR1cyk7XG4gICAgICAgIHJlcy5zZXQoJ1gtU2xhY2stUG93ZXJlZC1CeScsIHBvd2VyZWRCeSk7XG4gICAgICAgIGlmIChjKSB7XG4gICAgICAgICAgcmVzLmpzb24oYyk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgcmVzLmVuZCgpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gICAgICAgICAgcmVzLm9uKCdmaW5pc2gnLCAoKSA9PiB7XG4gICAgICAgICAgICAvLyByZXMuX2hlYWRlcnMgaXMgYW4gdW5kb2N1bWVudGVkIHByb3BlcnR5LCBidXQgd2UgZmVlbCBjb21mb3J0YWJsZSB1c2luZyBpdCBiZWNhdXNlOlxuICAgICAgICAgICAgLy8gMS4gZXhwcmVzcyBkZXBlbmRzIG9uIGl0IGFuZCBleHByZXNzIGlzIHNvIGZvdW5kYXRpb25hbCBpbiBub2RlXG4gICAgICAgICAgICAvLyAyLiB0aGlzIGlzIGxvZ2dpbmcgY29kZSBhbmQgdGhlIHJpc2sgb2YgdGhpcyBjYXVzaW5nIGEgYnJlYWsgaXMgbWluaW1hbFxuICAgICAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXVuZGVyc2NvcmUtZGFuZ2xlXG4gICAgICAgICAgICBkZWJ1ZygncmVzcG9uc2UgZmluaXNoZWQgLSBzdGF0dXM6ICVkLCBoZWFkZXJzOiAlbycsIHJlcy5zdGF0dXNDb2RlLCByZXMuX2hlYWRlcnMpO1xuICAgICAgICAgICAgcmVzb2x2ZShyZXMpO1xuICAgICAgICAgIH0pO1xuICAgICAgICAgIHJlcy5vbignZXJyb3InLCByZWplY3QpO1xuICAgICAgICB9KTtcbiAgICAgIH0pO1xuICAgIH07XG4gIH1cblxuICByZXR1cm4gZnVuY3Rpb24gc2xhY2tNZXNzYWdlQWRhcHRlck1pZGRsZXdhcmUocmVxLCByZXMsIG5leHQpIHtcbiAgICBkZWJ1ZygncmVxdWVzdCByZWNlaXZlZCAtIG1ldGhvZDogJXMsIHBhdGg6ICVzJywgcmVxLm1ldGhvZCwgcmVxLnBhdGgpO1xuXG4gICAgLy8gQmluZCBhIHJlc3BvbnNlIGZ1bmN0aW9uIHRvIHRoaXMgcmVxdWVzdCdzIHJlc3BvbmQgb2JqZWN0LiBUaGlzIG1heSBiZSB1c2VkIGluIGEgbnVtYmVyIG9mXG4gICAgLy8gcGxhY2VzXG4gICAgY29uc3QgcmVzcG9uZCA9IHNlbmRSZXNwb25zZShyZXMpO1xuXG4gICAgLy8gQ2hlY2sgdGhhdCB0aGUgcmVxdWVzdCBib2R5IGhhcyBiZWVuIHBhcnNlZFxuICAgIGlmICghcmVxLmJvZHkpIHtcbiAgICAgIGNvbnN0IGVycm9yID0gbmV3IEVycm9yKCdUaGUgaW5jb21pbmcgSFRUUCByZXF1ZXN0IGRpZCBub3QgaGF2ZSBhIHBhcnNlZCBib2R5LicpO1xuICAgICAgZXJyb3IuY29kZSA9IGVycm9yQ29kZXMuTk9fQk9EWV9QQVJTRVI7XG4gICAgICBuZXh0KGVycm9yKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBpZiAocmVxLmJvZHkuc3NsX2NoZWNrKSB7XG4gICAgICByZXNwb25kKHsgc3RhdHVzOiAyMDAgfSk7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3QgcGF5bG9hZCA9IEpTT04ucGFyc2UocmVxLmJvZHkucGF5bG9hZCk7XG5cbiAgICAvLyBIYW5kbGUgcmVxdWVzdCB0b2tlbiB2ZXJpZmljYXRpb25cbiAgICBpZiAoIXBheWxvYWQudG9rZW4gfHwgcGF5bG9hZC50b2tlbiAhPT0gYWRhcHRlci52ZXJpZmljYXRpb25Ub2tlbikge1xuICAgICAgZGVidWcoJ3JlcXVlc3QgdG9rZW4gdmVyaWZpY2F0aW9uIGZhaWx1cmUnKTtcbiAgICAgIGNvbnN0IGVycm9yID0gbmV3IEVycm9yKCdTbGFjayBpbnRlcmFjdGl2ZSBtZXNzYWdlIHZlcmlmaWNhdGlvbiBmYWlsZWQnKTtcbiAgICAgIGVycm9yLmNvZGUgPSBlcnJvckNvZGVzLlRPS0VOX1ZFUklGSUNBVElPTl9GQUlMVVJFO1xuICAgICAgbmV4dChlcnJvcik7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGRlYnVnKCdyZXF1ZXN0IHRva2VuIHZlcmlmaWNhdGlvbiBzdWNjZXNzJyk7XG5cbiAgICByZXNwb25kKGFkYXB0ZXIuZGlzcGF0Y2gocGF5bG9hZCkpXG4gICAgICAuY2F0Y2gobmV4dCk7XG4gIH07XG59XG4iXX0= | ||
//# sourceMappingURL=express-middleware.js.map |
@@ -6,2 +6,3 @@ 'use strict'; | ||
}); | ||
exports.promiseTimeout = promiseTimeout; | ||
exports.packageIdentifier = packageIdentifier; | ||
@@ -23,2 +24,14 @@ | ||
function promiseTimeout(ms, promise) { | ||
// Create a promise that rejects in <ms> milliseconds | ||
var timeout = new Promise(function (resolve, reject) { | ||
var id = setTimeout(function () { | ||
clearTimeout(id); | ||
reject('Promise timed out'); | ||
}, ms); | ||
}); | ||
// Returns a race between our timeout and the passed in promise | ||
return Promise.race([promise, timeout]); | ||
} | ||
// NOTE: before this can be an external module: | ||
@@ -43,3 +56,3 @@ // 1. are all the JS features supported back to a reasonable version? | ||
} | ||
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy91dGlsLmpzIl0sIm5hbWVzIjpbInBhY2thZ2VJZGVudGlmaWVyIiwiZXNjYXBlIiwicyIsInJlcGxhY2UiLCJhZGRvbnMiLCJpZGVudGlmaWVyTWFwIiwiT2JqZWN0IiwiYXNzaWduIiwibmFtZSIsInZlcnNpb24iLCJwbGF0Zm9ybSIsInJlbGVhc2UiLCJub2RlIiwicHJvY2VzcyIsImtleXMiLCJyZWR1Y2UiLCJhY2MiLCJrIl0sIm1hcHBpbmdzIjoiOzs7OztRQVlnQkEsaUIsR0FBQUEsaUI7O0FBWmhCOzs7O0FBQ0E7Ozs7OztBQUVBLFNBQVNDLE1BQVQsQ0FBZ0JDLENBQWhCLEVBQW1CO0FBQUUsU0FBT0EsRUFBRUMsT0FBRixDQUFVLEdBQVYsRUFBZSxHQUFmLEVBQW9CQSxPQUFwQixDQUE0QixHQUE1QixFQUFpQyxHQUFqQyxDQUFQO0FBQStDOztBQUVwRTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNPLFNBQVNILGlCQUFULEdBQXdDO0FBQUEsTUFBYkksTUFBYSx1RUFBSixFQUFJOztBQUM3QyxNQUFNQyxnQkFBZ0JDLE9BQU9DLE1BQVAsQ0FBYztBQUNsQyxLQUFFLEdBQUUsa0JBQUlDLElBQUssRUFBYixHQUFpQixrQkFBSUMsT0FEYTtBQUVsQyxLQUFFLEdBQUUsYUFBR0MsUUFBSCxFQUFjLEVBQWxCLEdBQXNCLGFBQUdDLE9BQUgsRUFGWTtBQUdsQ0MsVUFBTUMsUUFBUUosT0FBUixDQUFnQk4sT0FBaEIsQ0FBd0IsR0FBeEIsRUFBNkIsRUFBN0I7QUFINEIsR0FBZCxFQUluQkMsTUFKbUIsQ0FBdEI7QUFLQSxTQUFPRSxPQUFPUSxJQUFQLENBQVlULGFBQVosRUFBMkJVLE1BQTNCLENBQWtDLFVBQUNDLEdBQUQsRUFBTUMsQ0FBTjtBQUFBLFdBQWEsR0FBRUQsR0FBSSxJQUFHZixPQUFPZ0IsQ0FBUCxDQUFVLElBQUdoQixPQUFPSSxjQUFjWSxDQUFkLENBQVAsQ0FBeUIsRUFBNUQ7QUFBQSxHQUFsQyxFQUFpRyxFQUFqRyxDQUFQO0FBQ0QiLCJmaWxlIjoidXRpbC5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBvcyBmcm9tICdvcyc7XG5pbXBvcnQgcGtnIGZyb20gJy4uL3BhY2thZ2UuanNvbic7XG5cbmZ1bmN0aW9uIGVzY2FwZShzKSB7IHJldHVybiBzLnJlcGxhY2UoJy8nLCAnOicpLnJlcGxhY2UoJyAnLCAnXycpOyB9XG5cbi8vIE5PVEU6IGJlZm9yZSB0aGlzIGNhbiBiZSBhbiBleHRlcm5hbCBtb2R1bGU6XG4vLyAxLiBhcmUgYWxsIHRoZSBKUyBmZWF0dXJlcyBzdXBwb3J0ZWQgYmFjayB0byBhIHJlYXNvbmFibGUgdmVyc2lvbj9cbi8vICAgIGRlZmF1bHQgcGFyYW1zLCB0ZW1wbGF0ZSBzdHJpbmdzLCBjb21wdXRlZCBwcm9wZXJ0eSBuYW1lc1xuLy8gMi4gYWNjZXNzIHRvIGBwa2dgIHdpbGwgY2hhbmdlXG4vLyAzLiB0ZXN0c1xuLy8gdGhlcmUgd2lsbCBwb3RlbnRpYWxseSBiZSBtb3JlIG5hbWVkIGV4cG9ydHMgaW4gdGhpcyBmaWxlXG4vLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgaW1wb3J0L3ByZWZlci1kZWZhdWx0LWV4cG9ydFxuZXhwb3J0IGZ1bmN0aW9uIHBhY2thZ2VJZGVudGlmaWVyKGFkZG9ucyA9IHt9KSB7XG4gIGNvbnN0IGlkZW50aWZpZXJNYXAgPSBPYmplY3QuYXNzaWduKHtcbiAgICBbYCR7cGtnLm5hbWV9YF06IHBrZy52ZXJzaW9uLFxuICAgIFtgJHtvcy5wbGF0Zm9ybSgpfWBdOiBvcy5yZWxlYXNlKCksXG4gICAgbm9kZTogcHJvY2Vzcy52ZXJzaW9uLnJlcGxhY2UoJ3YnLCAnJyksXG4gIH0sIGFkZG9ucyk7XG4gIHJldHVybiBPYmplY3Qua2V5cyhpZGVudGlmaWVyTWFwKS5yZWR1Y2UoKGFjYywgaykgPT4gYCR7YWNjfSAke2VzY2FwZShrKX0vJHtlc2NhcGUoaWRlbnRpZmllck1hcFtrXSl9YCwgJycpO1xufVxuIl19 | ||
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy91dGlsLmpzIl0sIm5hbWVzIjpbInByb21pc2VUaW1lb3V0IiwicGFja2FnZUlkZW50aWZpZXIiLCJlc2NhcGUiLCJzIiwicmVwbGFjZSIsIm1zIiwicHJvbWlzZSIsInRpbWVvdXQiLCJQcm9taXNlIiwicmVzb2x2ZSIsInJlamVjdCIsImlkIiwic2V0VGltZW91dCIsImNsZWFyVGltZW91dCIsInJhY2UiLCJhZGRvbnMiLCJpZGVudGlmaWVyTWFwIiwiT2JqZWN0IiwiYXNzaWduIiwibmFtZSIsInZlcnNpb24iLCJwbGF0Zm9ybSIsInJlbGVhc2UiLCJub2RlIiwicHJvY2VzcyIsImtleXMiLCJyZWR1Y2UiLCJhY2MiLCJrIl0sIm1hcHBpbmdzIjoiOzs7OztRQUtnQkEsYyxHQUFBQSxjO1FBc0JBQyxpQixHQUFBQSxpQjs7QUEzQmhCOzs7O0FBQ0E7Ozs7OztBQUVBLFNBQVNDLE1BQVQsQ0FBZ0JDLENBQWhCLEVBQW1CO0FBQUUsU0FBT0EsRUFBRUMsT0FBRixDQUFVLEdBQVYsRUFBZSxHQUFmLEVBQW9CQSxPQUFwQixDQUE0QixHQUE1QixFQUFpQyxHQUFqQyxDQUFQO0FBQStDOztBQUU3RCxTQUFTSixjQUFULENBQXdCSyxFQUF4QixFQUE0QkMsT0FBNUIsRUFBcUM7QUFDMUM7QUFDQSxNQUFNQyxVQUFVLElBQUlDLE9BQUosQ0FBWSxVQUFDQyxPQUFELEVBQVVDLE1BQVYsRUFBcUI7QUFDL0MsUUFBTUMsS0FBS0MsV0FBVyxZQUFNO0FBQzFCQyxtQkFBYUYsRUFBYjtBQUNBRCxhQUFPLG1CQUFQO0FBQ0QsS0FIVSxFQUdSTCxFQUhRLENBQVg7QUFJRCxHQUxlLENBQWhCO0FBTUE7QUFDQSxTQUFPRyxRQUFRTSxJQUFSLENBQWEsQ0FDbEJSLE9BRGtCLEVBRWxCQyxPQUZrQixDQUFiLENBQVA7QUFJRDs7QUFFRDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNPLFNBQVNOLGlCQUFULEdBQXdDO0FBQUEsTUFBYmMsTUFBYSx1RUFBSixFQUFJOztBQUM3QyxNQUFNQyxnQkFBZ0JDLE9BQU9DLE1BQVAsQ0FBYztBQUNsQyxLQUFFLEdBQUUsa0JBQUlDLElBQUssRUFBYixHQUFpQixrQkFBSUMsT0FEYTtBQUVsQyxLQUFFLEdBQUUsYUFBR0MsUUFBSCxFQUFjLEVBQWxCLEdBQXNCLGFBQUdDLE9BQUgsRUFGWTtBQUdsQ0MsVUFBTUMsUUFBUUosT0FBUixDQUFnQmhCLE9BQWhCLENBQXdCLEdBQXhCLEVBQTZCLEVBQTdCO0FBSDRCLEdBQWQsRUFJbkJXLE1BSm1CLENBQXRCO0FBS0EsU0FBT0UsT0FBT1EsSUFBUCxDQUFZVCxhQUFaLEVBQTJCVSxNQUEzQixDQUFrQyxVQUFDQyxHQUFELEVBQU1DLENBQU47QUFBQSxXQUFhLEdBQUVELEdBQUksSUFBR3pCLE9BQU8wQixDQUFQLENBQVUsSUFBRzFCLE9BQU9jLGNBQWNZLENBQWQsQ0FBUCxDQUF5QixFQUE1RDtBQUFBLEdBQWxDLEVBQWlHLEVBQWpHLENBQVA7QUFDRCIsImZpbGUiOiJ1dGlsLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IG9zIGZyb20gJ29zJztcbmltcG9ydCBwa2cgZnJvbSAnLi4vcGFja2FnZS5qc29uJztcblxuZnVuY3Rpb24gZXNjYXBlKHMpIHsgcmV0dXJuIHMucmVwbGFjZSgnLycsICc6JykucmVwbGFjZSgnICcsICdfJyk7IH1cblxuZXhwb3J0IGZ1bmN0aW9uIHByb21pc2VUaW1lb3V0KG1zLCBwcm9taXNlKSB7XG4gIC8vIENyZWF0ZSBhIHByb21pc2UgdGhhdCByZWplY3RzIGluIDxtcz4gbWlsbGlzZWNvbmRzXG4gIGNvbnN0IHRpbWVvdXQgPSBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gICAgY29uc3QgaWQgPSBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgIGNsZWFyVGltZW91dChpZCk7XG4gICAgICByZWplY3QoJ1Byb21pc2UgdGltZWQgb3V0Jyk7XG4gICAgfSwgbXMpO1xuICB9KTtcbiAgLy8gUmV0dXJucyBhIHJhY2UgYmV0d2VlbiBvdXIgdGltZW91dCBhbmQgdGhlIHBhc3NlZCBpbiBwcm9taXNlXG4gIHJldHVybiBQcm9taXNlLnJhY2UoW1xuICAgIHByb21pc2UsXG4gICAgdGltZW91dCxcbiAgXSk7XG59XG5cbi8vIE5PVEU6IGJlZm9yZSB0aGlzIGNhbiBiZSBhbiBleHRlcm5hbCBtb2R1bGU6XG4vLyAxLiBhcmUgYWxsIHRoZSBKUyBmZWF0dXJlcyBzdXBwb3J0ZWQgYmFjayB0byBhIHJlYXNvbmFibGUgdmVyc2lvbj9cbi8vICAgIGRlZmF1bHQgcGFyYW1zLCB0ZW1wbGF0ZSBzdHJpbmdzLCBjb21wdXRlZCBwcm9wZXJ0eSBuYW1lc1xuLy8gMi4gYWNjZXNzIHRvIGBwa2dgIHdpbGwgY2hhbmdlXG4vLyAzLiB0ZXN0c1xuLy8gdGhlcmUgd2lsbCBwb3RlbnRpYWxseSBiZSBtb3JlIG5hbWVkIGV4cG9ydHMgaW4gdGhpcyBmaWxlXG4vLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgaW1wb3J0L3ByZWZlci1kZWZhdWx0LWV4cG9ydFxuZXhwb3J0IGZ1bmN0aW9uIHBhY2thZ2VJZGVudGlmaWVyKGFkZG9ucyA9IHt9KSB7XG4gIGNvbnN0IGlkZW50aWZpZXJNYXAgPSBPYmplY3QuYXNzaWduKHtcbiAgICBbYCR7cGtnLm5hbWV9YF06IHBrZy52ZXJzaW9uLFxuICAgIFtgJHtvcy5wbGF0Zm9ybSgpfWBdOiBvcy5yZWxlYXNlKCksXG4gICAgbm9kZTogcHJvY2Vzcy52ZXJzaW9uLnJlcGxhY2UoJ3YnLCAnJyksXG4gIH0sIGFkZG9ucyk7XG4gIHJldHVybiBPYmplY3Qua2V5cyhpZGVudGlmaWVyTWFwKS5yZWR1Y2UoKGFjYywgaykgPT4gYCR7YWNjfSAke2VzY2FwZShrKX0vJHtlc2NhcGUoaWRlbnRpZmllck1hcFtrXSl9YCwgJycpO1xufVxuIl19 | ||
//# sourceMappingURL=util.js.map |
{ | ||
"name": "@slack/interactive-messages", | ||
"version": "0.1.2", | ||
"version": "0.2.0", | ||
"description": "Slack Interactive Messages module", | ||
@@ -5,0 +5,0 @@ "main": "dist/index.js", |
@@ -30,3 +30,3 @@ # Interactive Message Adapter for Node and Express | ||
Select the **Interactive Messages** feature, and enable it. Input your **Request URL**. If your app | ||
will use dynamic menus, you also need to input a **Options URL**. | ||
will use dynamic message menus, you also need to input a **Options URL**. | ||
@@ -240,2 +240,7 @@ ![Configuring a request URL](support/interactive-messages.gif) | ||
### Dialogs | ||
This adapter can be used in conjunction with Slack dialogs. Because any dialog submission request requires a synchronous response, a response is needed within 3 seconds. If your asynchronous code cannot return within sufficient time, the adapter will fallback to responding with a `200 OK` successful response to avoid any user-facing errors. | ||
### Error handling | ||
@@ -242,0 +247,0 @@ |
@@ -9,3 +9,3 @@ import http from 'http'; | ||
import { createExpressMiddleware } from './express-middleware'; | ||
import { packageIdentifier } from './util'; | ||
import { packageIdentifier, promiseTimeout } from './util'; | ||
@@ -178,7 +178,15 @@ const debug = debugFactory('@slack/interactive-messages:adapter'); | ||
const action = payload.actions && payload.actions[0]; | ||
// The following result value represents "no replacement" | ||
let result = { status: 200 }; | ||
// when the matcher finds a dialog submission, it will populate this value with a function | ||
let dialogPromiseResolve; | ||
const respond = (message) => { | ||
debug('sending async response'); | ||
return this.axios.post(payload.response_url, message); | ||
if (payload.response_url) { | ||
debug('sending async response'); | ||
return this.axios.post(payload.response_url, message); | ||
} else if (dialogPromiseResolve) { | ||
dialogPromiseResolve(message); | ||
} | ||
return true; | ||
}; | ||
@@ -222,2 +230,16 @@ | ||
// Dialog submissions must be responded to in under 3 seconds | ||
// Setting timeout to 2.5 seconds to account for propagation | ||
if (payload.type === 'dialog_submission') { | ||
const ms = 2500; | ||
if (callbackResult) { | ||
result = { status: 200, content: promiseTimeout(ms, callbackResult) }; | ||
} else { | ||
result = { | ||
status: 200, content: new Promise((resolve) => { dialogPromiseResolve = resolve; }), | ||
}; | ||
} | ||
return true; | ||
} | ||
if (callbackResult) { | ||
@@ -224,0 +246,0 @@ // Checking for Promise type |
@@ -16,21 +16,24 @@ import debugFactory from 'debug'; | ||
function sendResponse(res) { | ||
return function _sendResponse({ status, content }) { | ||
debug('sending response - status: %s, content: %o', status, content); | ||
return new Promise((resolve, reject) => { | ||
return function _sendResponse(dispatchResult) { | ||
const { status, content } = dispatchResult; | ||
const contentReady = (content && typeof content.then === 'function') ? content : Promise.resolve(content); | ||
return contentReady.then((c) => { | ||
res.status(status); | ||
res.set('X-Slack-Powered-By', poweredBy); | ||
if (content) { | ||
res.json(content); | ||
if (c) { | ||
res.json(c); | ||
} else { | ||
res.end(); | ||
} | ||
res.on('finish', () => { | ||
// res._headers is an undocumented property, but we feel comfortable using it because: | ||
// 1. express depends on it and express is so foundational in node | ||
// 2. this is logging code and the risk of this causing a break is minimal | ||
// eslint-disable-next-line no-underscore-dangle | ||
debug('response finished - status: %d, headers: %o', res.statusCode, res._headers); | ||
resolve(res); | ||
return new Promise((resolve, reject) => { | ||
res.on('finish', () => { | ||
// res._headers is an undocumented property, but we feel comfortable using it because: | ||
// 1. express depends on it and express is so foundational in node | ||
// 2. this is logging code and the risk of this causing a break is minimal | ||
// eslint-disable-next-line no-underscore-dangle | ||
debug('response finished - status: %d, headers: %o', res.statusCode, res._headers); | ||
resolve(res); | ||
}); | ||
res.on('error', reject); | ||
}); | ||
res.on('error', reject); | ||
}); | ||
@@ -41,3 +44,3 @@ }; | ||
return function slackMessageAdapterMiddleware(req, res, next) { | ||
debug('request recieved - method: %s, path: %s', req.method, req.path); | ||
debug('request received - method: %s, path: %s', req.method, req.path); | ||
@@ -44,0 +47,0 @@ // Bind a response function to this request's respond object. This may be used in a number of |
@@ -6,2 +6,17 @@ import os from 'os'; | ||
export function promiseTimeout(ms, promise) { | ||
// Create a promise that rejects in <ms> milliseconds | ||
const timeout = new Promise((resolve, reject) => { | ||
const id = setTimeout(() => { | ||
clearTimeout(id); | ||
reject('Promise timed out'); | ||
}, ms); | ||
}); | ||
// Returns a race between our timeout and the passed in promise | ||
return Promise.race([ | ||
promise, | ||
timeout, | ||
]); | ||
} | ||
// NOTE: before this can be an external module: | ||
@@ -8,0 +23,0 @@ // 1. are all the JS features supported back to a reasonable version? |
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
Major refactor
Supply chain riskPackage has recently undergone a major refactor. It may be unstable or indicate significant internal changes. Use caution when updating to versions that include significant changes.
Found 1 instance in 1 package
New author
Supply chain riskA new npm collaborator published a version of the package for the first time. New collaborators are usually benign additions to a project, but do indicate a change to the security surface area of a package.
Found 1 instance in 1 package
260
3
1714681
28
981