Comparing version 1.0.0 to 1.0.1-master.45e468a
@@ -8,5 +8,12 @@ # Changelog | ||
## [Unreleased] | ||
### Added | ||
- `exclusive` props: will cancel other utterances on speak | ||
### Changed | ||
- Lerna bootstrap will no longer hoist | ||
- Utterance queue are now controlled by `<Composer>` instead of `speechSynthesis` for better compatibility | ||
- Chrome does not fire `start` and `end` events if `speak`/`cancel` are called too fast | ||
## [1.0.0] - 2018-07-09 | ||
### Added | ||
- Initial release |
@@ -7,6 +7,154 @@ 'use strict'; | ||
var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; | ||
var _getPrototypeOf = require('babel-runtime/core-js/object/get-prototype-of'); | ||
var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }(); | ||
var _getPrototypeOf2 = _interopRequireDefault(_getPrototypeOf); | ||
var _possibleConstructorReturn2 = require('babel-runtime/helpers/possibleConstructorReturn'); | ||
var _possibleConstructorReturn3 = _interopRequireDefault(_possibleConstructorReturn2); | ||
var _inherits2 = require('babel-runtime/helpers/inherits'); | ||
var _inherits3 = _interopRequireDefault(_inherits2); | ||
var _classCallCheck2 = require('babel-runtime/helpers/classCallCheck'); | ||
var _classCallCheck3 = _interopRequireDefault(_classCallCheck2); | ||
var _createClass2 = require('babel-runtime/helpers/createClass'); | ||
var _createClass3 = _interopRequireDefault(_createClass2); | ||
var _regenerator = require('babel-runtime/regenerator'); | ||
var _regenerator2 = _interopRequireDefault(_regenerator); | ||
var _promise = require('babel-runtime/core-js/promise'); | ||
var _promise2 = _interopRequireDefault(_promise); | ||
var _asyncToGenerator2 = require('babel-runtime/helpers/asyncToGenerator'); | ||
var _asyncToGenerator3 = _interopRequireDefault(_asyncToGenerator2); | ||
var speakUtterance = function () { | ||
var _ref4 = (0, _asyncToGenerator3.default)( /*#__PURE__*/_regenerator2.default.mark(function _callee2(_ref2, _ref3) { | ||
var _this = this; | ||
var speechSynthesis = _ref2.speechSynthesis; | ||
var reject = _ref3.reject, | ||
resolve = _ref3.resolve, | ||
utterance = _ref3.utterance; | ||
var startDeferred, errorDeferred, endDeferred, endEvent; | ||
return _regenerator2.default.wrap(function _callee2$(_context2) { | ||
while (1) { | ||
switch (_context2.prev = _context2.next) { | ||
case 0: | ||
_context2.prev = 0; | ||
startDeferred = (0, _createDeferred2.default)(); | ||
errorDeferred = (0, _createDeferred2.default)(); | ||
endDeferred = (0, _createDeferred2.default)(); | ||
utterance.addEventListener('end', endDeferred.resolve); | ||
utterance.addEventListener('error', errorDeferred.resolve); | ||
utterance.addEventListener('start', startDeferred.resolve); | ||
// if (speechSynthesis.speaking) { | ||
// console.warn(`ASSERTION: speechSynthesis.speaking should not be truthy before we call speak`); | ||
// } | ||
// Chrome quirks: | ||
// 1. Speak an utterance | ||
// 2. Cancel in the midway | ||
// 3. Speak another utterance | ||
// Expected: speaking is falsy, then turn to truthy, then receive "start" event, and audio played | ||
// Actual: speaking is falsy, then turn to truthy (which is wrong), but receive no "start" event, and no audio played | ||
// Workaround: retry 2 times with a second | ||
// Safari quirks: | ||
// - Audio doesn't play if the speech is started from a user event | ||
// - If no audio is played, the "start" event won't fire | ||
// console.debug(`STARTING: ${ utterance.text }`); | ||
_context2.next = 9; | ||
return (0, _retry2.default)((0, _asyncToGenerator3.default)( /*#__PURE__*/_regenerator2.default.mark(function _callee() { | ||
return _regenerator2.default.wrap(function _callee$(_context) { | ||
while (1) { | ||
switch (_context.prev = _context.next) { | ||
case 0: | ||
speechSynthesis.speak(utterance); | ||
_context.prev = 1; | ||
_context.next = 4; | ||
return _promise2.default.race([startDeferred.promise, (0, _timeout2.default)(1000)]); | ||
case 4: | ||
_context.next = 10; | ||
break; | ||
case 6: | ||
_context.prev = 6; | ||
_context.t0 = _context['catch'](1); | ||
// This is required for Chrome quirks. | ||
// Chrome doesn't know it can't start speech, and it just wait there forever. | ||
// We need to cancel it out. | ||
speechSynthesis.cancel(); | ||
throw _context.t0; | ||
case 10: | ||
case 'end': | ||
return _context.stop(); | ||
} | ||
} | ||
}, _callee, _this, [[1, 6]]); | ||
})), 2, 0); | ||
case 9: | ||
_context2.next = 11; | ||
return _promise2.default.race([errorDeferred.promise, endDeferred.promise, (0, _spinWaitUntil2.default)(function () { | ||
return !speechSynthesis.speaking; | ||
}).then(function () { | ||
return (0, _sleep2.default)(500); | ||
}).then(function () { | ||
return { type: 'end', artificial: true }; | ||
})]); | ||
case 11: | ||
endEvent = _context2.sent; | ||
_context2.t0 = endEvent.type; | ||
_context2.next = _context2.t0 === 'cancel' ? 15 : _context2.t0 === 'error' ? 17 : 18; | ||
break; | ||
case 15: | ||
speechSynthesis.cancel(); | ||
throw new Error('cancelled'); | ||
case 17: | ||
throw endEvent.error; | ||
case 18: | ||
return _context2.abrupt('return', resolve()); | ||
case 21: | ||
_context2.prev = 21; | ||
_context2.t1 = _context2['catch'](0); | ||
return _context2.abrupt('return', reject(_context2.t1)); | ||
case 24: | ||
case 'end': | ||
return _context2.stop(); | ||
} | ||
} | ||
}, _callee2, this, [[0, 21]]); | ||
})); | ||
return function speakUtterance(_x, _x2) { | ||
return _ref4.apply(this, arguments); | ||
}; | ||
}(); | ||
var _memoizeOne = require('memoize-one'); | ||
@@ -28,85 +176,228 @@ | ||
var _createDeferred = require('./createDeferred'); | ||
var _createDeferred2 = _interopRequireDefault(_createDeferred); | ||
var _retry = require('./retry'); | ||
var _retry2 = _interopRequireDefault(_retry); | ||
var _sleep = require('./sleep'); | ||
var _sleep2 = _interopRequireDefault(_sleep); | ||
var _spinWaitUntil = require('./spinWaitUntil'); | ||
var _spinWaitUntil2 = _interopRequireDefault(_spinWaitUntil); | ||
var _timeout = require('./timeout'); | ||
var _timeout2 = _interopRequireDefault(_timeout); | ||
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } | ||
function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } | ||
function createUtterance(utteranceLike, ponyfill) { | ||
var SpeechSynthesisUtterance = ponyfill.SpeechSynthesisUtterance; | ||
var lang = utteranceLike.lang, | ||
onBoundary = utteranceLike.onBoundary, | ||
onEnd = utteranceLike.onEnd, | ||
onError = utteranceLike.onError, | ||
onStart = utteranceLike.onStart, | ||
_utteranceLike$pitch = utteranceLike.pitch, | ||
pitch = _utteranceLike$pitch === undefined ? 1 : _utteranceLike$pitch, | ||
_utteranceLike$rate = utteranceLike.rate, | ||
rate = _utteranceLike$rate === undefined ? 1 : _utteranceLike$rate, | ||
text = utteranceLike.text, | ||
voice = utteranceLike.voice, | ||
_utteranceLike$volume = utteranceLike.volume, | ||
volume = _utteranceLike$volume === undefined ? 1 : _utteranceLike$volume; | ||
function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; } | ||
var utterance = new SpeechSynthesisUtterance(text); | ||
var targetVoice = void 0; | ||
function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; } | ||
if (typeof voice === 'function') { | ||
targetVoice = voice.call(speechSynthesis, getSerializableVoices(speechSynthesis)); | ||
} else { | ||
var _ref = voice || {}, | ||
voiceURI = _ref.voiceURI; | ||
function createContext(_ref) { | ||
var speechSynthesis = _ref.speechSynthesis, | ||
speechSynthesisUtterance = _ref.speechSynthesisUtterance; | ||
targetVoice = voiceURI && [].find.call([].slice.call(getSerializableVoices(speechSynthesis)), function (v) { | ||
return v.voiceURI === voiceURI; | ||
}); | ||
} | ||
return { | ||
cancel: function cancel() { | ||
return speechSynthesis.cancel(); | ||
}, | ||
speak: function speak(_ref2) { | ||
var lang = _ref2.lang, | ||
onBoundary = _ref2.onBoundary, | ||
onEnd = _ref2.onEnd, | ||
onError = _ref2.onError, | ||
onStart = _ref2.onStart, | ||
_ref2$pitch = _ref2.pitch, | ||
pitch = _ref2$pitch === undefined ? 1 : _ref2$pitch, | ||
_ref2$rate = _ref2.rate, | ||
rate = _ref2$rate === undefined ? 1 : _ref2$rate, | ||
text = _ref2.text, | ||
voice = _ref2.voice, | ||
_ref2$volume = _ref2.volume, | ||
volume = _ref2$volume === undefined ? 1 : _ref2$volume; | ||
// Edge will mute if "lang" is set to "" | ||
utterance.lang = lang || ''; | ||
var utterance = new speechSynthesisUtterance(text); | ||
var targetVoice = void 0; | ||
if (utterance.pitch || utterance.pitch === 0) { | ||
utterance.pitch = pitch; | ||
} | ||
if (typeof voice === 'function') { | ||
targetVoice = voice.call(speechSynthesis, speechSynthesis.getVoices()); | ||
} else { | ||
var _ref3 = voice || {}, | ||
voiceURI = _ref3.voiceURI; | ||
if (utterance.rate || utterance.rate === 0) { | ||
utterance.rate = rate; | ||
} | ||
targetVoice = voiceURI && [].find.call([].slice.call(speechSynthesis.getVoices()), function (v) { | ||
return v.voiceURI === voiceURI; | ||
}); | ||
// Cognitive Services will error when "voice" is set to "null" | ||
// Edge will error when "voice" is set to "undefined" | ||
if (targetVoice) { | ||
utterance.voice = targetVoice; | ||
} | ||
if (utterance.volume || utterance.volume === 0) { | ||
utterance.volume = volume; | ||
} | ||
if (utterance.addEventListener) { | ||
utterance.addEventListener('boundary', onBoundary); | ||
utterance.addEventListener('end', onEnd); | ||
utterance.addEventListener('error', onError); | ||
utterance.addEventListener('start', onStart); | ||
} | ||
return utterance; | ||
} | ||
var SpeechContext = function () { | ||
function SpeechContext(ponyfill) { | ||
(0, _classCallCheck3.default)(this, SpeechContext); | ||
this.queueWithCurrent = []; | ||
this.cancel = this.cancel.bind(this); | ||
this.speak = this.speak.bind(this); | ||
this.setPonyfill(ponyfill); | ||
} | ||
(0, _createClass3.default)(SpeechContext, [{ | ||
key: 'setPonyfill', | ||
value: function setPonyfill(_ref6) { | ||
var speechSynthesis = _ref6.speechSynthesis, | ||
SpeechSynthesisUtterance = _ref6.SpeechSynthesisUtterance; | ||
this.ponyfill = { speechSynthesis: speechSynthesis, SpeechSynthesisUtterance: SpeechSynthesisUtterance }; | ||
} | ||
}, { | ||
key: 'cancel', | ||
value: function () { | ||
var _ref7 = (0, _asyncToGenerator3.default)( /*#__PURE__*/_regenerator2.default.mark(function _callee3() { | ||
var cancelAll; | ||
return _regenerator2.default.wrap(function _callee3$(_context3) { | ||
while (1) { | ||
switch (_context3.prev = _context3.next) { | ||
case 0: | ||
// console.debug(`CANCELLING QUEUED ITEMS: ${ this.queueWithCurrent.length }`); | ||
this.queueWithCurrent.forEach(function (entry) { | ||
return entry.cancelled = true; | ||
}); | ||
cancelAll = _promise2.default.all(this.queueWithCurrent.map(function (_ref8) { | ||
var promise = _ref8.deferred.promise; | ||
return promise.catch(function (err) { | ||
return 0; | ||
}); | ||
})); | ||
this.ponyfill.speechSynthesis.cancel(); | ||
_context3.prev = 3; | ||
_context3.next = 6; | ||
return cancelAll; | ||
case 6: | ||
_context3.next = 10; | ||
break; | ||
case 8: | ||
_context3.prev = 8; | ||
_context3.t0 = _context3['catch'](3); | ||
case 10: | ||
case 'end': | ||
return _context3.stop(); | ||
} | ||
} | ||
}, _callee3, this, [[3, 8]]); | ||
})); | ||
function cancel() { | ||
return _ref7.apply(this, arguments); | ||
} | ||
// Edge will mute if "lang" is set to "" | ||
utterance.lang = lang || ''; | ||
return cancel; | ||
}() | ||
}, { | ||
key: 'speak', | ||
value: function speak(utteranceLike) { | ||
var deferred = (0, _createDeferred2.default)(); | ||
if (utterance.pitch || utterance.pitch === 0) { | ||
utterance.pitch = pitch; | ||
// console.debug(`QUEUED: ${ utteranceLike.text }`); | ||
if (utteranceLike.uniqueID && this.queueWithCurrent.find(function (_ref9) { | ||
var uniqueID = _ref9.utteranceLike.uniqueID; | ||
return utteranceLike.uniqueID === uniqueID; | ||
})) { | ||
// Do not queue duplicated speak with same unique ID | ||
return; | ||
} | ||
if (utterance.rate || utterance.rate === 0) { | ||
utterance.rate = rate; | ||
this.queueWithCurrent.push({ | ||
deferred: deferred, | ||
utteranceLike: utteranceLike | ||
}); | ||
if (this.queueWithCurrent.length === 1) { | ||
this._next(); | ||
} | ||
// Cognitive Services will error when "voice" is set to "null" | ||
// Edge will error when "voice" is set to "undefined" | ||
if (targetVoice) { | ||
utterance.voice = targetVoice; | ||
return deferred.promise; | ||
} | ||
}, { | ||
key: '_next', | ||
value: function _next() { | ||
var _this2 = this; | ||
var entry = this.queueWithCurrent[0]; | ||
if (!entry) { | ||
return; | ||
} | ||
if (utterance.volume || utterance.volume === 0) { | ||
utterance.volume = volume; | ||
entry.deferred.promise.then(function () { | ||
_this2.queueWithCurrent.shift(); | ||
_this2._next(); | ||
}, function () { | ||
// TODO: If the error is due to Safari restriction on user touch | ||
// The next loop on the next audio will also fail because it was not queued with a user touch | ||
_this2.queueWithCurrent.shift(); | ||
_this2._next(); | ||
}); | ||
if (entry.cancelled) { | ||
// console.debug(`CANCELLED BEFORE PLAY: ${ entry.utteranceLike.text }`); | ||
return entry.deferred.reject(new Error('cancelled')); | ||
} | ||
utterance.onboundary = onBoundary; | ||
utterance.onend = onEnd; | ||
utterance.onerror = onError; | ||
utterance.onstart = onStart; | ||
var utterance = createUtterance(entry.utteranceLike, this.ponyfill); | ||
speechSynthesis.speak(utterance); | ||
speakUtterance(this.ponyfill, { | ||
reject: entry.deferred.reject, | ||
resolve: entry.deferred.resolve, | ||
utterance: utterance | ||
}); | ||
} | ||
}; | ||
} | ||
}]); | ||
return SpeechContext; | ||
}(); | ||
function getVoices(speechSynthesis) { | ||
return speechSynthesis.getVoices().map(function (_ref4) { | ||
var def = _ref4['default'], | ||
lang = _ref4.lang, | ||
localService = _ref4.localService, | ||
name = _ref4.name, | ||
voiceURI = _ref4.voiceURI; | ||
function getSerializableVoices(speechSynthesis) { | ||
return speechSynthesis.getVoices().map(function (_ref10) { | ||
var def = _ref10['default'], | ||
lang = _ref10.lang, | ||
localService = _ref10.localService, | ||
name = _ref10.name, | ||
voiceURI = _ref10.voiceURI; | ||
return { | ||
@@ -123,25 +414,34 @@ 'default': def, | ||
var Composer = function (_React$Component) { | ||
_inherits(Composer, _React$Component); | ||
(0, _inherits3.default)(Composer, _React$Component); | ||
function Composer(props) { | ||
_classCallCheck(this, Composer); | ||
(0, _classCallCheck3.default)(this, Composer); | ||
var _this = _possibleConstructorReturn(this, (Composer.__proto__ || Object.getPrototypeOf(Composer)).call(this, props)); | ||
var _this3 = (0, _possibleConstructorReturn3.default)(this, (Composer.__proto__ || (0, _getPrototypeOf2.default)(Composer)).call(this, props)); | ||
_this.handleVoicesChanged = _this.handleVoicesChanged.bind(_this); | ||
_this3.handleVoicesChanged = _this3.handleVoicesChanged.bind(_this3); | ||
props.speechSynthesis.onvoiceschanged = _this.handleVoicesChanged; | ||
props.speechSynthesis.addEventListener && props.speechSynthesis.addEventListener('voiceschanged', _this3.handleVoicesChanged); | ||
_this.mergeContext = (0, _memoizeOne2.default)(function (context, voices) { | ||
return _extends({}, context, { voices: voices }); | ||
_this3.mergeContext = (0, _memoizeOne2.default)(function (_ref11, voices) { | ||
var cancel = _ref11.cancel, | ||
speak = _ref11.speak; | ||
return { | ||
cancel: cancel, | ||
speak: speak, | ||
voices: voices | ||
}; | ||
}); | ||
_this.state = { | ||
context: createContext(props), | ||
voices: getVoices(props.speechSynthesis) | ||
_this3.state = { | ||
context: new SpeechContext({ | ||
speechSynthesis: props.speechSynthesis, | ||
SpeechSynthesisUtterance: props.speechSynthesisUtterance | ||
}), | ||
voices: getSerializableVoices(props.speechSynthesis) | ||
}; | ||
return _this; | ||
return _this3; | ||
} | ||
_createClass(Composer, [{ | ||
(0, _createClass3.default)(Composer, [{ | ||
key: 'componentWillReceiveProps', | ||
@@ -156,16 +456,17 @@ value: function componentWillReceiveProps(nextProps) { | ||
if (changed) { | ||
this.props.speechSynthesis.onvoiceschanged = null; | ||
this.state.context.cancel(); | ||
if (props.speechSynthesis) { | ||
props.speechSynthesis.removeEventListener && props.speechSynthesis.removeEventListener('voiceschanged', this.handleVoicesChanged); | ||
} | ||
nextProps.speechSynthesis.onvoiceschanged = this.handleVoicesChanged; | ||
this.state.context.setPonyfill({ | ||
speechSynthesis: nextProps.speechSynthesis, | ||
SpeechSynthesisUtterance: nextProps.speechSynthesisUtterance | ||
}); | ||
this.setState(function (_ref5) { | ||
var context = _ref5.context; | ||
if (nextProps.speechSynthesis) { | ||
nextProps.speechSynthesis.addEventListener && nextProps.speechSynthesis.addEventListener('voiceschanged', this.handleVoicesChanged); | ||
} | ||
context.cancel(); | ||
return { | ||
context: createContext(nextProps), | ||
voices: getVoices(nextProps.speechSynthesis) | ||
}; | ||
this.setState(function () { | ||
return { voices: getSerializableVoices(nextProps.speechSynthesis) }; | ||
}); | ||
@@ -175,10 +476,16 @@ } | ||
}, { | ||
key: 'componentWillUnmount', | ||
value: function componentWillUnmount() { | ||
var speechSynthesis = this.props.speechSynthesis; | ||
speechSynthesis && speechSynthesis.removeEventListener && speechSynthesis.removeEventListener('voiceschanged', this.handleVoicesChanged); | ||
} | ||
}, { | ||
key: 'handleVoicesChanged', | ||
value: function handleVoicesChanged(_ref6) { | ||
var target = _ref6.target; | ||
value: function handleVoicesChanged(_ref12) { | ||
var target = _ref12.target; | ||
var voices = getVoices(target); | ||
this.setState(function () { | ||
return { voices: voices }; | ||
return { voices: getSerializableVoices(target) }; | ||
}); | ||
@@ -189,2 +496,4 @@ } | ||
value: function render() { | ||
var _this4 = this; | ||
var props = this.props, | ||
@@ -196,15 +505,20 @@ state = this.state; | ||
return _react2.default.createElement( | ||
_Context2.default.Provider, | ||
{ value: this.mergeContext(state.context, state.voices) }, | ||
typeof children === 'function' ? _react2.default.createElement( | ||
_Context2.default.Consumer, | ||
null, | ||
function (context) { | ||
return children(context); | ||
} | ||
) : children | ||
_Context2.default.Consumer, | ||
null, | ||
function (context) { | ||
return context ? typeof children === 'function' ? children(context) : children : _react2.default.createElement( | ||
_Context2.default.Provider, | ||
{ value: _this4.mergeContext(state.context, state.voices) }, | ||
typeof children === 'function' ? _react2.default.createElement( | ||
_Context2.default.Consumer, | ||
null, | ||
function (context) { | ||
return children(context); | ||
} | ||
) : children | ||
); | ||
} | ||
); | ||
} | ||
}]); | ||
return Composer; | ||
@@ -222,15 +536,5 @@ }(_react2.default.Component); | ||
Composer.propTypes = { | ||
lang: _propTypes2.default.string, | ||
onBoundary: _propTypes2.default.func, | ||
onEnd: _propTypes2.default.func, | ||
onError: _propTypes2.default.func, | ||
onStart: _propTypes2.default.func, | ||
pitch: _propTypes2.default.number, | ||
rate: _propTypes2.default.number, | ||
text: _propTypes2.default.string, | ||
voice: _propTypes2.default.oneOfType([_propTypes2.default.any, _propTypes2.default.func]), | ||
volume: _propTypes2.default.number, | ||
speechSynthesis: _propTypes2.default.any, | ||
speechSynthesisUtterance: _propTypes2.default.any | ||
}; | ||
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9Db21wb3Nlci5qcyJdLCJuYW1lcyI6WyJjcmVhdGVDb250ZXh0Iiwic3BlZWNoU3ludGhlc2lzIiwic3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNlIiwiY2FuY2VsIiwic3BlYWsiLCJsYW5nIiwib25Cb3VuZGFyeSIsIm9uRW5kIiwib25FcnJvciIsIm9uU3RhcnQiLCJwaXRjaCIsInJhdGUiLCJ0ZXh0Iiwidm9pY2UiLCJ2b2x1bWUiLCJ1dHRlcmFuY2UiLCJ0YXJnZXRWb2ljZSIsImNhbGwiLCJnZXRWb2ljZXMiLCJ2b2ljZVVSSSIsImZpbmQiLCJzbGljZSIsInYiLCJvbmJvdW5kYXJ5Iiwib25lbmQiLCJvbmVycm9yIiwib25zdGFydCIsIm1hcCIsImRlZiIsImxvY2FsU2VydmljZSIsIm5hbWUiLCJDb21wb3NlciIsInByb3BzIiwiaGFuZGxlVm9pY2VzQ2hhbmdlZCIsImJpbmQiLCJvbnZvaWNlc2NoYW5nZWQiLCJtZXJnZUNvbnRleHQiLCJjb250ZXh0Iiwidm9pY2VzIiwic3RhdGUiLCJuZXh0UHJvcHMiLCJjaGFuZ2VkIiwic29tZSIsInNldFN0YXRlIiwidGFyZ2V0IiwiY2hpbGRyZW4iLCJSZWFjdCIsIkNvbXBvbmVudCIsImRlZmF1bHRQcm9wcyIsIndpbmRvdyIsIndlYmtpdFNwZWVjaFN5bnRoZXNpcyIsIlNwZWVjaFN5bnRoZXNpc1V0dGVyYW5jZSIsIndlYmtpdFNwZWVjaFN5bnRoZXNpc1V0dGVyYW5jZSIsInByb3BUeXBlcyIsIlByb3BUeXBlcyIsInN0cmluZyIsImZ1bmMiLCJudW1iZXIiLCJvbmVPZlR5cGUiLCJhbnkiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7QUFBQTs7OztBQUNBOzs7O0FBQ0E7Ozs7QUFFQTs7Ozs7Ozs7Ozs7O0FBRUEsU0FBU0EsYUFBVCxPQUdHO0FBQUEsTUFGREMsZUFFQyxRQUZEQSxlQUVDO0FBQUEsTUFEREMsd0JBQ0MsUUFEREEsd0JBQ0M7O0FBQ0QsU0FBTztBQUNMQyxZQUFRO0FBQUEs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LFVBQVF3QyxvQkFBVUcsTUFWQztBQVduQnhELG1CQUFpQnFELG9CQUFVSyxHQVhSO0FBWW5CekQsNEJBQTBCb0Qsb0JBQVVLO0FBWmpCLENBQXJCIiwiZmlsZSI6IkNvbXBvc2VyLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IG1lbW9pemUgZnJvbSAnbWVtb2l6ZS1vbmUnO1xuaW1wb3J0IFByb3BUeXBlcyBmcm9tICdwcm9wLXR5cGVzJztcbmltcG9ydCBSZWFjdCBmcm9tICdyZWFjdCc7XG5cbmltcG9ydCBDb250ZXh0IGZyb20gJy4vQ29udGV4dCc7XG5cbmZ1bmN0aW9uIGNyZWF0ZUNvbnRleHQoe1xuICBzcGVlY2hTeW50aGVzaXMsXG4gIHNwZWVjaFN5bnRoZXNpc1V0dGVyYW5jZVxufSkge1xuICByZXR1cm4ge1xuICAgIGNhbmNlbDogKCkgPT4gc3BlZWNoU3ludGhlc2lzLmNhbmNlbCgpLFxuICAgIHNwZWFrOiAoe1xuICAgICAgbGFuZyxcbiAgICAgIG9uQm91bmRhcnksXG4gICAgICBvbkVuZCxcbiAgICAgIG9uRXJyb3IsXG4gICAgICBvblN0YXJ0LFxuICAgICAgcGl0Y2ggPSAxLFxuICAgICAgcmF0ZSA9IDEsXG4gICAgICB0ZXh0LFxuICAgICAgdm9pY2UsXG4gICAgICB2b2x1bWUgPSAxXG4gICAgfSkgPT4ge1xuICAgICAgY29uc3QgdXR0ZXJhbmNlID0gbmV3IHNwZWVjaFN5bnRoZXNpc1V0dGVyYW5jZSh0ZXh0KTtcbiAgICAgIGxldCB0YXJnZXRWb2ljZTtcblxuICAgICAgaWYgKHR5cGVvZiB2b2ljZSA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICB0YXJnZXRWb2ljZSA9IHZvaWNlLmNhbGwoc3BlZWNoU3ludGhlc2lzLCBzcGVlY2hTeW50aGVzaXMuZ2V0Vm9pY2VzKCkpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgY29uc3QgeyB2b2ljZVVSSSB9ID0gdm9pY2UgfHwge307XG5cbiAgICAgICAgdGFyZ2V0Vm9pY2UgPSB2b2ljZVVSSSAmJiBbXS5maW5kLmNhbGwoW10uc2xpY2UuY2FsbChzcGVlY2hTeW50aGVzaXMuZ2V0Vm9pY2VzKCkpLCB2ID0+IHYudm9pY2VVUkkgPT09IHZvaWNlVVJJKTtcbiAgICAgIH1cblxuICAgICAgLy8gRWRnZSB3aWxsIG11dGUgaWYgXCJsYW5nXCIgaXMgc2V0IHRvIFwiXCJcbiAgICAgIHV0dGVyYW5jZS5sYW5nID0gbGFuZyB8fCAnJztcblxuICAgICAgaWYgKHV0dGVyYW5jZS5waXRjaCB8fCB1dHRlcmFuY2UucGl0Y2ggPT09IDApIHtcbiAgICAgICAgdXR0ZXJhbmNlLnBpdGNoID0gcGl0Y2g7XG4gICAgICB9XG5cbiAgICAgIGlmICh1dHRlcmFuY2UucmF0ZSB8fCB1dHRlcmFuY2UucmF0ZSA9PT0gMCkge1xuICAgICAgICB1dHRlcmFuY2UucmF0ZSA9IHJhdGU7XG4gICAgICB9XG5cbiAgICAgIC8vIENvZ25pdGl2ZSBTZXJ2aWNlcyB3aWxsIGVycm9yIHdoZW4gXCJ2b2ljZVwiIGlzIHNldCB0byBcIm51bGxcIlxuICAgICAgLy8gRWRnZSB3aWxsIGVycm9yIHdoZW4gXCJ2b2ljZVwiIGlzIHNldCB0byBcInVuZGVmaW5lZFwiXG4gICAgICBpZiAodGFyZ2V0Vm9pY2UpIHtcbiAgICAgICAgdXR0ZXJhbmNlLnZvaWNlID0gdGFyZ2V0Vm9pY2U7XG4gICAgICB9XG5cbiAgICAgIGlmICh1dHRlcmFuY2Uudm9sdW1lIHx8IHV0dGVyYW5jZS52b2x1bWUgPT09IDApIHtcbiAgICAgICAgdXR0ZXJhbmNlLnZvbHVtZSA9IHZvbHVtZTtcbiAgICAgIH1cblxuICAgICAgdXR0ZXJhbmNlLm9uYm91bmRhcnkgPSBvbkJvdW5kYXJ5O1xuICAgICAgdXR0ZXJhbmNlLm9uZW5kID0gb25FbmQ7XG4gICAgICB1dHRlcmFuY2Uub25lcnJvciA9IG9uRXJyb3I7XG4gICAgICB1dHRlcmFuY2Uub25zdGFydCA9IG9uU3RhcnQ7XG5cbiAgICAgIHNwZWVjaFN5bnRoZXNpcy5zcGVhayh1dHRlcmFuY2UpO1xuICAgIH1cbiAgfTtcbn1cblxuZnVuY3Rpb24gZ2V0Vm9pY2VzKHNwZWVjaFN5bnRoZXNpcykge1xuICByZXR1cm4gc3BlZWNoU3ludGhlc2lzLmdldFZvaWNlcygpLm1hcCgoe1xuICAgICdkZWZhdWx0JzogZGVmLFxuICAgIGxhbmcsXG4gICAgbG9jYWxTZXJ2aWNlLFxuICAgIG5hbWUsXG4gICAgdm9pY2VVUklcbiAgfSkgPT4gKHtcbiAgICAnZGVmYXVsdCc6IGRlZixcbiAgICBsYW5nLFxuICAgIGxvY2FsU2VydmljZSxcbiAgICBuYW1lLFxuICAgIHZvaWNlVVJJXG4gIH0pKTtcbn1cblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgQ29tcG9zZXIgZXh0ZW5kcyBSZWFjdC5Db21wb25lbnQge1xuICBjb25zdHJ1Y3Rvcihwcm9wcykge1xuICAgIHN1cGVyKHByb3BzKTtcblxuICAgIHRoaXMuaGFuZGxlVm9pY2VzQ2hhbmdlZCA9IHRoaXMuaGFuZGxlVm9pY2VzQ2hhbmdlZC5iaW5kKHRoaXMpO1xuXG4gICAgcHJvcHMuc3BlZWNoU3ludGhlc2lzLm9udm9pY2VzY2hhbmdlZCA9IHRoaXMuaGFuZGxlVm9pY2VzQ2hhbmdlZDtcblxuICAgIHRoaXMubWVyZ2VDb250ZXh0ID0gbWVtb2l6ZSgoY29udGV4dCwgdm9pY2VzKSA9PiAoeyAuLi5jb250ZXh0LCB2b2ljZXMgfSkpO1xuXG4gICAgdGhpcy5zdGF0ZSA9IHtcbiAgICAgIGNvbnRleHQ6IGNyZWF0ZUNvbnRleHQocHJvcHMpLFxuICAgICAgdm9pY2VzOiBnZXRWb2ljZXMocHJvcHMuc3BlZWNoU3ludGhlc2lzKVxuICAgIH07XG4gIH1cblxuICBjb21wb25lbnRXaWxsUmVjZWl2ZVByb3BzKG5leHRQcm9wcykge1xuICAgIGNvbnN0IHsgcHJvcHMgfSA9IHRoaXM7XG4gICAgY29uc3QgY2hhbmdlZCA9IFtcbiAgICAgICdzcGVlY2hTeW50aGVzaXMnLFxuICAgICAgJ3NwZWVjaFN5bnRoZXNpc1V0dGVyYW5jZSdcbiAgICBdLnNvbWUobmFtZSA9PiBuZXh0UHJvcHNbbmFtZV0gIT09IHByb3BzW25hbWVdKTtcblxuICAgIGlmIChjaGFuZ2VkKSB7XG4gICAgICB0aGlzLnByb3BzLnNwZWVjaFN5bnRoZXNpcy5vbnZvaWNlc2NoYW5nZWQgPSBudWxsO1xuICAgICAgdGhpcy5zdGF0ZS5jb250ZXh0LmNhbmNlbCgpO1xuXG4gICAgICBuZXh0UHJvcHMuc3BlZWNoU3ludGhlc2lzLm9udm9pY2VzY2hhbmdlZCA9IHRoaXMuaGFuZGxlVm9pY2VzQ2hhbmdlZDtcblxuICAgICAgdGhpcy5zZXRTdGF0ZSgoeyBjb250ZXh0IH0pID0+IHtcbiAgICAgICAgY29udGV4dC5jYW5jZWwoKTtcblxuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIGNvbnRleHQ6IGNyZWF0ZUNvbnRleHQobmV4dFByb3BzKSxcbiAgICAgICAgICB2b2ljZXM6IGdldFZvaWNlcyhuZXh0UHJvcHMuc3BlZWNoU3ludGhlc2lzKVxuICAgICAgICB9O1xuICAgICAgfSk7XG4gICAgfVxuICB9XG5cbiAgaGFuZGxlVm9pY2VzQ2hhbmdlZCh7IHRhcmdldCB9KSB7XG4gICAgY29uc3Qgdm9pY2VzID0gZ2V0Vm9pY2VzKHRhcmdldCk7XG5cbiAgICB0aGlzLnNldFN0YXRlKCgpID0+ICh7IHZvaWNlcyB9KSk7XG4gIH1cblxuICByZW5kZXIoKSB7XG4gICAgY29uc3QgeyBwcm9wcywgc3RhdGUgfSA9IHRoaXM7XG4gICAgY29uc3QgeyBjaGlsZHJlbiB9ID0gcHJvcHM7XG5cbiAgICByZXR1cm4gKFxuICAgICAgPENvbnRleHQuUHJvdmlkZXIgdmFsdWU9eyB0aGlzLm1lcmdlQ29udGV4dChzdGF0ZS5jb250ZXh0LCBzdGF0ZS52b2ljZXMpIH0+XG4gICAgICAgIHtcbiAgICAgICAgICB0eXBlb2YgY2hpbGRyZW4gPT09ICdmdW5jdGlvbicgP1xuICAgICAgICAgICAgPENvbnRleHQuQ29uc3VtZXI+XG4gICAgICAgICAgICAgIHsgY29udGV4dCA9PiBjaGlsZHJlbihjb250ZXh0KSB9XG4gICAgICAgICAgICA8L0NvbnRleHQuQ29uc3VtZXI+XG4gICAgICAgICAgOlxuICAgICAgICAgICAgY2hpbGRyZW5cbiAgICAgICAgfVxuICAgICAgPC9Db250ZXh0LlByb3ZpZGVyPlxuICAgICk7XG4gIH1cbn1cblxuQ29tcG9zZXIuZGVmYXVsdFByb3BzID0ge1xuICBzcGVlY2hTeW50aGVzaXM6IHdpbmRvdy5zcGVlY2hTeW50aGVzaXMgfHwgd2luZG93LndlYmtpdFNwZWVjaFN5bnRoZXNpcyxcbiAgc3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNlOiB3aW5kb3cuU3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNlIHx8IHdpbmRvdy53ZWJraXRTcGVlY2hTeW50aGVzaXNVdHRlcmFuY2Vcbn07XG5cbkNvbXBvc2VyLnByb3BUeXBlcyA9IHtcbiAgbGFuZzogUHJvcFR5cGVzLnN0cmluZyxcbiAgb25Cb3VuZGFyeTogUHJvcFR5cGVzLmZ1bmMsXG4gIG9uRW5kOiBQcm9wVHlwZXMuZnVuYyxcbiAgb25FcnJvcjogUHJvcFR5cGVzLmZ1bmMsXG4gIG9uU3RhcnQ6IFByb3BUeXBlcy5mdW5jLFxuICBwaXRjaDogUHJvcFR5cGVzLm51bWJlcixcbiAgcmF0ZTogUHJvcFR5cGVzLm51bWJlcixcbiAgdGV4dDogUHJvcFR5cGVzLnN0cmluZyxcbiAgdm9pY2U6IFByb3BUeXBlcy5vbmVPZlR5cGUoW1Byb3BUeXBlcy5hbnksIFByb3BUeXBlcy5mdW5jXSksXG4gIHZvbHVtZTogUHJvcFR5cGVzLm51bWJlcixcbiAgc3BlZWNoU3ludGhlc2lzOiBQcm9wVHlwZXMuYW55LFxuICBzcGVlY2hTeW50aGVzaXNVdHRlcmFuY2U6IFByb3BUeXBlcy5hbnlcbn07XG4iXX0= | ||
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9Db21wb3Nlci5qcyJdLCJuYW1lcyI6WyJzcGVlY2hTeW50aGVzaXMiLCJyZWplY3QiLCJyZXNvbHZlIiwidXR0ZXJhbmNlIiwic3RhcnREZWZlcnJlZCIsImVycm9yRGVmZXJyZWQiLCJlbmREZWZlcnJlZCIsImFkZEV2ZW50TGlzdGVuZXIiLCJzcGVhayIsInJhY2UiLCJwcm9taXNlIiwiY2FuY2VsIiwic3BlYWtpbmciLCJ0aGVuIiwidHlwZSIsImFydGlmaWNpYWwiLCJlbmRFdmVudCIsIkVycm9yIiwiZXJyb3IiLCJzcGVha1V0dGVyYW5jZSIsImNyZWF0ZVV0dGVyYW5jZSIsInV0dGVyYW5jZUxpa2UiLCJwb255ZmlsbCIsIlNwZWVjaFN5bnRoZXNpc1V0dGVyYW5jZSIsImxhbmciLCJvbkJvdW5kYXJ5Iiwib25FbmQiLCJvbkVycm9yIiwib25TdGFydCIsInBpdGNoIiwicmF0ZSIsInRleHQiLCJ2b2ljZSIsInZvbHVtZSIsInRhcmdldFZvaWNlIiwiY2FsbCIsImdldFNlcmlhbGl6YWJsZVZvaWNlcyIsInZvaWNlVVJJIiwiZmluZCIsInNsaWNlIiwidiIsIlNwZWVjaENvbnRleHQiLCJxdWV1ZVdpdGhDdXJyZW50IiwiYmluZCIsInNldFBvbnlmaWxsIiwiZm9yRWFjaCIsImVudHJ5IiwiY2FuY2VsbGVkIiwiY2FuY2VsQWxsIiwiYWxsIiwibWFwIiwiZGVmZXJyZWQiLCJjYXRjaCIsInVuaXF1ZUlEIiwicHVzaCIsImxlbmd0aCIsIl9uZXh0Iiwic2hpZnQiLCJnZXRWb2ljZXMiLCJkZWYiLCJsb2NhbFNlcnZpY2UiLCJuYW1lIiwiQ29tcG9zZXIiLCJwcm9wcyIsImhhbmRsZVZvaWNlc0NoYW5nZWQiLCJtZXJnZUNvbnRleHQiLCJ2b2ljZXMiLCJzdGF0ZSIsImNvbnRleHQiLCJzcGVlY2hTeW50aGVzaXNVdHRlcmFuY2UiLCJuZXh0UHJvcHMiLCJjaGFuZ2VkIiwic29tZSIsInJlbW92ZUV2ZW50TGlzdGVuZXIiLCJzZXRTdGF0ZSIsInRhcmdldCIsImNoaWxkcmVuIiwiUmVhY3QiLCJDb21wb25lbnQiLCJkZWZhdWx0UHJvcHMiLCJ3aW5kb3ciLCJ3ZWJraXRTcGVlY2hTeW50aGVzaXMiLCJ3ZWJraXRTcGVlY2hTeW50aGVzaXNVdHRlcmFuY2UiLCJwcm9wVHlwZXMiLCJQcm9wVHlwZXMiLCJhbnkiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozt1RkFtRUE7QUFBQTs7QUFBQSxRQUFnQ0EsZUFBaEMsU0FBZ0NBLGVBQWhDO0FBQUEsUUFBcURDLE1BQXJELFNBQXFEQSxNQUFyRDtBQUFBLFFBQTZEQyxPQUE3RCxTQUE2REEsT0FBN0Q7QUFBQSxRQUFzRUMsU0FBdEUsU0FBc0VBLFNBQXRFO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBRVVDLHlCQUZWLEdBRTBCLCtCQUYxQjtBQUdVQyx5QkFIVixHQUcwQiwrQkFIMUI7QUFJVUMsdUJBSlYsR0FJd0IsK0JBSnhCOzs7QUFNSUgsc0JBQVVJLGdCQUFWLENBQTJCLEtBQTNCLEVBQWtDRCxZQUFZSixPQUE5QztBQUNBQyxzQkFBVUksZ0JBQVYsQ0FBMkIsT0FBM0IsRUFBb0NGLGNBQWNILE9BQWxEO0FBQ0FDLHNCQUFVSSxnQkFBVixDQUEyQixPQUEzQixFQUFvQ0gsY0FBY0YsT0FBbEQ7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTs7QUExQko7QUFBQSxtQkE0QlUsOEZBQU07QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNWRixzQ0FBZ0JRLEtBQWhCLENBQXNCTCxTQUF0Qjs7QUFEVTtBQUFBO0FBQUEsNkJBSUYsa0JBQVFNLElBQVIsQ0FBYSxDQUNqQkwsY0FBY00sT0FERyxFQUVqQix1QkFBUSxJQUFSLENBRmlCLENBQWIsQ0FKRTs7QUFBQTtBQUFBO0FBQUE7O0FBQUE7QUFBQTtBQUFBOztBQVNSO0FBQ0E7QUFDQTtBQUNBVixzQ0FB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UyxRQUFUO0FBQUEsY0FBa0IsT0FBUSxPQUFLWCxZQUFMLENBQWtCRSxNQUFNQyxPQUF4QixFQUFpQ0QsTUFBTUQsTUFBdkMsQ0FBMUI7QUFFSSxtQkFBT1UsUUFBUCxLQUFvQixVQUFwQixHQUNFO0FBQUMsK0JBQUQsQ0FBUyxRQUFUO0FBQUE7QUFDSTtBQUFBLHVCQUFXQSxTQUFTUixPQUFULENBQVg7QUFBQTtBQURKLGFBREYsR0FLRVE7QUFQTixXQUhGO0FBQUE7QUFESixPQURGO0FBa0JEOzs7RUFoRm1DQyxnQkFBTUMsUzs7a0JBQXZCaEIsUTs7O0FBbUZyQkEsU0FBU2lCLFlBQVQsR0FBd0I7QUFDdEIvRSxtQkFBaUJnRixPQUFPaEYsZUFBUCxJQUEwQmdGLE9BQU9DLHFCQUQ1QjtBQUV0QlosNEJBQTBCVyxPQUFPekQsd0JBQVAsSUFBbUN5RCxPQUFPRTtBQUY5QyxDQUF4Qjs7QUFLQXBCLFNBQVNxQixTQUFULEdBQXFCO0FBQ25CbkYsbUJBQWlCb0Ysb0JBQVVDLEdBRFI7QUFFbkJoQiw0QkFBMEJlLG9CQUFVQztBQUZqQixDQUFyQiIsImZpbGUiOiJDb21wb3Nlci5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBtZW1vaXplIGZyb20gJ21lbW9pemUtb25lJztcbmltcG9ydCBQcm9wVHlwZXMgZnJvbSAncHJvcC10eXBlcyc7XG5pbXBvcnQgUmVhY3QgZnJvbSAncmVhY3QnO1xuXG5pbXBvcnQgQ29udGV4dCBmcm9tICcuL0NvbnRleHQnO1xuaW1wb3J0IGNyZWF0ZURlZmVycmVkIGZyb20gJy4vY3JlYXRlRGVmZXJyZWQnO1xuaW1wb3J0IHJldHJ5IGZyb20gJy4vcmV0cnknO1xuaW1wb3J0IHNsZWVwIGZyb20gJy4vc2xlZXAnO1xuaW1wb3J0IHNwaW5XYWl0VW50aWwgZnJvbSAnLi9zcGluV2FpdFVudGlsJztcbmltcG9ydCB0aW1lb3V0IGZyb20gJy4vdGltZW91dCc7XG5cbmZ1bmN0aW9uIGNyZWF0ZVV0dGVyYW5jZSh1dHRlcmFuY2VMaWtlLCBwb255ZmlsbCkge1xuICBjb25zdCB7IFNwZWVjaFN5bnRoZXNpc1V0dGVyYW5jZSB9ID0gcG9ueWZpbGw7XG4gIGNvbnN0IHtcbiAgICBsYW5nLFxuICAgIG9uQm91bmRhcnksXG4gICAgb25FbmQsXG4gICAgb25FcnJvcixcbiAgICBvblN0YXJ0LFxuICAgIHBpdGNoID0gMSxcbiAgICByYXRlID0gMSxcbiAgICB0ZXh0LFxuICAgIHZvaWNlLFxuICAgIHZvbHVtZSA9IDFcbiAgfSA9IHV0dGVyYW5jZUxpa2U7XG4gIGNvbnN0IHV0dGVyYW5jZSA9IG5ldyBTcGVlY2hTeW50aGVzaXNVdHRlcmFuY2UodGV4dCk7XG4gIGxldCB0YXJnZXRWb2ljZTtcblxuICBpZiAodHlwZW9mIHZvaWNlID09PSAnZnVuY3Rpb24nKSB7XG4gICAgdGFyZ2V0Vm9pY2UgPSB2b2ljZS5jYWxsKHNwZWVjaFN5bnRoZXNpcywgZ2V0U2VyaWFsaXphYmxlVm9pY2VzKHNwZWVjaFN5bnRoZXNpcykpO1xuICB9IGVsc2Uge1xuICAgIGNvbnN0IHsgdm9pY2VVUkkgfSA9IHZvaWNlIHx8IHt9O1xuXG4gICAgdGFyZ2V0Vm9pY2UgPSB2b2ljZVVSSSAmJiBbXS5maW5kLmNhbGwoW10uc2xpY2UuY2FsbChnZXRTZXJpYWxpemFibGVWb2ljZXMoc3BlZWNoU3ludGhlc2lzKSksIHYgPT4gdi52b2ljZVVSSSA9PT0gdm9pY2VVUkkpO1xuICB9XG5cbiAgLy8gRWRnZSB3aWxsIG11dGUgaWYgXCJsYW5nXCIgaXMgc2V0IHRvIFwiXCJcbiAgdXR0ZXJhbmNlLmxhbmcgPSBsYW5nIHx8ICcnO1xuXG4gIGlmICh1dHRlcmFuY2UucGl0Y2ggfHwgdXR0ZXJhbmNlLnBpdGNoID09PSAwKSB7XG4gICAgdXR0ZXJhbmNlLnBpdGNoID0gcGl0Y2g7XG4gIH1cblxuICBpZiAodXR0ZXJhbmNlLnJhdGUgfHwgdXR0ZXJhbmNlLnJhdGUgPT09IDApIHtcbiAgICB1dHRlcmFuY2UucmF0ZSA9IHJhdGU7XG4gIH1cblxuICAvLyBDb2duaXRpdmUgU2VydmljZXMgd2lsbCBlcnJvciB3aGVuIFwidm9pY2VcIiBpcyBzZXQgdG8gXCJudWxsXCJcbiAgLy8gRWRnZSB3aWxsIGVycm9yIHdoZW4gXCJ2b2ljZVwiIGlzIHNldCB0byBcInVuZGVmaW5lZFwiXG4gIGlmICh0YXJnZXRWb2ljZSkge1xuICAgIHV0dGVyYW5jZS52b2ljZSA9IHRhcmdldFZvaWNlO1xuICB9XG5cbiAgaWYgKHV0dGVyYW5jZS52b2x1bWUgfHwgdXR0ZXJhbmNlLnZvbHVtZSA9PT0gMCkge1xuICAgIHV0dGVyYW5jZS52b2x1bWUgPSB2b2x1bWU7XG4gIH1cblxuICBpZiAodXR0ZXJhbmNlLmFkZEV2ZW50TGlzdGVuZXIpIHtcbiAgICB1dHRlcmFuY2UuYWRkRXZlbnRMaXN0ZW5lcignYm91bmRhcnknLCBvbkJvdW5kYXJ5KTtcbiAgICB1dHRlcmFuY2UuYWRkRXZlbnRMaXN0ZW5lcignZW5kJywgb25FbmQpO1xuICAgIHV0dGVyYW5jZS5hZGRFdmVudExpc3RlbmVyKCdlcnJvcicsIG9uRXJyb3IpO1xuICAgIHV0dGVyYW5jZS5hZGRFdmVudExpc3RlbmVyKCdzdGFydCcsIG9uU3RhcnQpO1xuICB9XG5cbiAgcmV0dXJuIHV0dGVyYW5jZTtcbn1cblxuYXN5bmMgZnVuY3Rpb24gc3BlYWtVdHRlcmFuY2UoeyBzcGVlY2hTeW50aGVzaXMgfSwgeyByZWplY3QsIHJlc29sdmUsIHV0dGVyYW5jZSB9KSB7XG4gIHRyeSB7XG4gICAgY29uc3Qgc3RhcnREZWZlcnJlZCA9IGNyZWF0ZURlZmVycmVkKCk7XG4gICAgY29uc3QgZXJyb3JEZWZlcnJlZCA9IGNyZWF0ZURlZmVycmVkKCk7XG4gICAgY29uc3QgZW5kRGVmZXJyZWQgPSBjcmVhdGVEZWZlcnJlZCgpO1xuXG4gICAgdXR0ZXJhbmNlLmFkZEV2ZW50TGlzdGVuZXIoJ2VuZCcsIGVuZERlZmVycmVkLnJlc29sdmUpO1xuICAgIHV0dGVyYW5jZS5hZGRFdmVudExpc3RlbmVyKCdlcnJvcicsIGVycm9yRGVmZXJyZWQucmVzb2x2ZSk7XG4gICAgdXR0ZXJhbmNlLmFkZEV2ZW50TGlzdGVuZXIoJ3N0YXJ0Jywgc3RhcnREZWZlcnJlZC5yZXNvbHZlKTtcblxuICAgIC8vIGlmIChzcGVlY2hTeW50aGVzaXMuc3BlYWtpbmcpIHtcbiAgICAvLyAgIGNvbnNvbGUud2FybihgQVNTRVJUSU9OOiBzcGVlY2hTeW50aGVzaXMuc3BlYWtpbmcgc2hvdWxkIG5vdCBiZSB0cnV0aHkgYmVmb3JlIHdlIGNhbGwgc3BlYWtgKTtcbiAgICAvLyB9XG5cbiAgICAvLyBDaHJvbWUgcXVpcmtzOlxuICAgIC8vIDEuIFNwZWFrIGFuIHV0dGVyYW5jZVxuICAgIC8vIDIuIENhbmNlbCBpbiB0aGUgbWlkd2F5XG4gICAgLy8gMy4gU3BlYWsgYW5vdGhlciB1dHRlcmFuY2VcbiAgICAvLyBFeHBlY3RlZDogc3BlYWtpbmcgaXMgZmFsc3ksIHRoZW4gdHVybiB0byB0cnV0aHksIHRoZW4gcmVjZWl2ZSBcInN0YXJ0XCIgZXZlbnQsIGFuZCBhdWRpbyBwbGF5ZWRcbiAgICAvLyBBY3R1YWw6IHNwZWFraW5nIGlzIGZhbHN5LCB0aGVuIHR1cm4gdG8gdHJ1dGh5ICh3aGljaCBpcyB3cm9uZyksIGJ1dCByZWNlaXZlIG5vIFwic3RhcnRcIiBldmVudCwgYW5kIG5vIGF1ZGlvIHBsYXllZFxuICAgIC8vIFdvcmthcm91bmQ6IHJldHJ5IDIgdGltZXMgd2l0aCBhIHNlY29uZFxuXG4gICAgLy8gU2FmYXJpIHF1aXJrczpcbiAgICAvLyAtIEF1ZGlvIGRvZXNuJ3QgcGxheSBpZiB0aGUgc3BlZWNoIGlzIHN0YXJ0ZWQgZnJvbSBhIHVzZXIgZXZlbnRcbiAgICAvLyAtIElmIG5vIGF1ZGlvIGlzIHBsYXllZCwgdGhlIFwic3RhcnRcIiBldmVudCB3b24ndCBmaXJlXG5cbiAgICAvLyBjb25zb2xlLmRlYnVnKGBTVEFSVElORzogJHsgdXR0ZXJhbmNlLnRleHQgfWApO1xuXG4gICAgYXdhaXQgcmV0cnkoYXN5bmMgKCkgPT4ge1xuICAgICAgc3BlZWNoU3ludGhlc2lzLnNwZWFrKHV0dGVyYW5jZSk7XG5cbiAgICAgIHRyeSB7XG4gICAgICAgIGF3YWl0IFByb21pc2UucmFjZShbXG4gICAgICAgICAgc3RhcnREZWZlcnJlZC5wcm9taXNlLFxuICAgICAgICAgIHRpbWVvdXQoMTAwMClcbiAgICAgICAgXSk7XG4gICAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgICAvLyBUaGlzIGlzIHJlcXVpcmVkIGZvciBDaHJvbWUgcXVpcmtzLlxuICAgICAgICAvLyBDaHJvbWUgZG9lc24ndCBrbm93IGl0IGNhbid0IHN0YXJ0IHNwZWVjaCwgYW5kIGl0IGp1c3Qgd2FpdCB0aGVyZSBmb3JldmVyLlxuICAgICAgICAvLyBXZSBuZWVkIHRvIGNhbmNlbCBpdCBvdXQuXG4gICAgICAgIHNwZWVjaFN5bnRoZXNpcy5jYW5jZWwoKTtcblxuICAgICAgICB0aHJvdyBlcnJvcjtcbiAgICAgIH1cbiAgICB9LCAyLCAwKTtcblxuICAgIC8vIGNvbnNvbGUuZGVidWcoYFNUQVJURUQ6ICR7IHV0dGVyYW5jZS50ZXh0IH1gKTtcblxuICAgIGNvbnN0IGVuZEV2ZW50ID0gYXdhaXQgUHJvbWlzZS5yYWNlKFtcbiAgICAgIGVycm9yRGVmZXJyZWQucHJvbWlzZSxcbiAgICAgIGVuZERlZmVycmVkLnByb21pc2UsXG4gICAgICBzcGluV2FpdFVudGlsKCgpID0+ICFzcGVlY2hTeW50aGVzaXMuc3BlYWtpbmcpLnRoZW4oKCkgPT4gc2xlZXAoNTAwKSkudGhlbigoKSA9PiAoeyB0eXBlOiAnZW5kJywgYXJ0aWZpY2lhbDogdHJ1ZSB9KSlcbiAgICBdKTtcblxuICAgIC8vIGlmIChzcGVlY2hTeW50aGVzaXMuc3BlYWtpbmcpIHtcbiAgICAvLyAgIGNvbnNvbGUud2FybihgQVNTRVJUSU9OOiBzcGVlY2hTeW50aGVzaXMuc3BlYWtpbmcgc2hvdWxkIG5vdCBiZSB0cnV0aHkgYWZ0ZXIgc3BlYWsgaXMgc3RvcHBlZGApO1xuICAgIC8vIH1cblxuICAgIC8vIGNvbnNvbGUuZGVidWcoYEVOREVEOiAkeyBuZXh0LnV0dGVyYW5jZUxpa2UudGV4dCB9YCk7XG5cbiAgICBzd2l0Y2ggKGVuZEV2ZW50LnR5cGUpIHtcbiAgICAgIGNhc2UgJ2NhbmNlbCc6XG4gICAgICAgIHNwZWVjaFN5bnRoZXNpcy5jYW5jZWwoKTtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdjYW5jZWxsZWQnKTtcblxuICAgICAgY2FzZSAnZXJyb3InOlxuICAgICAgICB0aHJvdyBlbmRFdmVudC5lcnJvcjtcbiAgICB9XG5cbiAgICByZXR1cm4gcmVzb2x2ZSgpO1xuICB9IGNhdGNoIChlcnJvcikge1xuICAgIHJldHVybiByZWplY3QoZXJyb3IpO1xuICB9XG59XG5cbmNsYXNzIFNwZWVjaENvbnRleHQge1xuICBjb25zdHJ1Y3Rvcihwb255ZmlsbCkge1xuICAgIHRoaXMucXVldWVXaXRoQ3VycmVudCA9IFtdO1xuXG4gICAgdGhpcy5jYW5jZWwgPSB0aGlzLmNhbmNlbC5iaW5kKHRoaXMpO1xuICAgIHRoaXMuc3BlYWsgPSB0aGlzLnNwZWFrLmJpbmQodGhpcyk7XG5cbiAgICB0aGlzLnNldFBvbnlmaWxsKHBvbnlmaWxsKTtcbiAgfVxuXG4gIHNldFBvbnlmaWxsKHsgc3BlZWNoU3ludGhlc2lzLCBTcGVlY2hTeW50aGVzaXNVdHRlcmFuY2UgfSkge1xuICAgIHRoaXMucG9ueWZpbGwgPSB7IHNwZWVjaFN5bnRoZXNpcywgU3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNlIH07XG4gIH1cblxuICBhc3luYyBjYW5jZWwoKSB7XG4gICAgLy8gY29uc29sZS5kZWJ1ZyhgQ0FOQ0VMTElORyBRVUVVRUQgSVRFTVM6ICR7IHRoaXMucXVldWVXaXRoQ3VycmVudC5sZW5ndGggfWApO1xuXG4gICAgdGhpcy5xdWV1ZVdpdGhDdXJyZW50LmZvckVhY2goZW50cnkgPT4gZW50cnkuY2FuY2VsbGVkID0gdHJ1ZSk7XG5cbiAgICBjb25zdCBjYW5jZWxBbGwgPSBQcm9taXNlLmFsbCh0aGlzLnF1ZXVlV2l0aEN1cnJlbnQubWFwKCh7IGRlZmVycmVkOiB7IHByb21pc2UgfSB9KSA9PiBwcm9taXNlLmNhdGNoKGVyciA9PiAwKSkpO1xuXG4gICAgdGhpcy5wb255ZmlsbC5zcGVlY2hTeW50aGVzaXMuY2FuY2VsKCk7XG5cbiAgICB0cnkge1xuICAgICAgYXdhaXQgY2FuY2VsQWxsO1xuICAgIH0gY2F0Y2ggKGVycikge31cblxuICAgIC8vIGNvbnNvbGUuZGVidWcoYEFMTCBDQU5DRUxMRUQgT1IgRklOSVNIRURgKTtcbiAgfVxuXG4gIHNwZWFrKHV0dGVyYW5jZUxpa2UpIHtcbiAgICBjb25zdCBkZWZlcnJlZCA9IGNyZWF0ZURlZmVycmVkKCk7XG5cbiAgICAvLyBjb25zb2xlLmRlYnVnKGBRVUVVRUQ6ICR7IHV0dGVyYW5jZUxpa2UudGV4dCB9YCk7XG5cbiAgICBpZiAoXG4gICAgICB1dHRlcmFuY2VMaWtlLnVuaXF1ZUlEXG4gICAgICAmJiB0aGlzLnF1ZXVlV2l0aEN1cnJlbnQuZmluZCgoeyB1dHRlcmFuY2VMaWtlOiB7IHVuaXF1ZUlEIH0gfSkgPT4gdXR0ZXJhbmNlTGlrZS51bmlxdWVJRCA9PT0gdW5pcXVlSUQpXG4gICAgKSB7XG4gICAgICAvLyBEbyBub3QgcXVldWUgZHVwbGljYXRlZCBzcGVhayB3aXRoIHNhbWUgdW5pcXVlIElEXG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy5xdWV1ZVdpdGhDdXJyZW50LnB1c2goe1xuICAgICAgZGVmZXJyZWQsXG4gICAgICB1dHRlcmFuY2VMaWtlXG4gICAgfSk7XG5cbiAgICBpZiAodGhpcy5xdWV1ZVdpdGhDdXJyZW50Lmxlbmd0aCA9PT0gMSkge1xuICAgICAgdGhpcy5fbmV4dCgpO1xuICAgIH1cblxuICAgIHJldHVybiBkZWZlcnJlZC5wcm9taXNlO1xuICB9XG5cbiAgX25leHQoKSB7XG4gICAgY29uc3QgZW50cnkgPSB0aGlzLnF1ZXVlV2l0aEN1cnJlbnRbMF07XG5cbiAgICBpZiAoIWVudHJ5KSB7IHJldHVybjsgfVxuXG4gICAgZW50cnkuZGVmZXJyZWQucHJvbWlzZS50aGVuKCgpID0+IHtcbiAgICAgIHRoaXMucXVldWVXaXRoQ3VycmVudC5zaGlmdCgpO1xuICAgICAgdGhpcy5fbmV4dCgpO1xuICAgIH0sICgpID0+IHtcbiAgICAgIC8vIFRPRE86IElmIHRoZSBlcnJvciBpcyBkdWUgdG8gU2FmYXJpIHJlc3RyaWN0aW9uIG9uIHVzZXIgdG91Y2hcbiAgICAgIC8vICAgICAgIFRoZSBuZXh0IGxvb3Agb24gdGhlIG5leHQgYXVkaW8gd2lsbCBhbHNvIGZhaWwgYmVjYXVzZSBpdCB3YXMgbm90IHF1ZXVlZCB3aXRoIGEgdXNlciB0b3VjaFxuICAgICAgdGhpcy5xdWV1ZVdpdGhDdXJyZW50LnNoaWZ0KCk7XG4gICAgICB0aGlzLl9uZXh0KCk7XG4gICAgfSk7XG5cbiAgICBpZiAoZW50cnkuY2FuY2VsbGVkKSB7XG4gICAgICAvLyBjb25zb2xlLmRlYnVnKGBDQU5DRUxMRUQgQkVGT1JFIFBMQVk6ICR7IGVudHJ5LnV0dGVyYW5jZUxpa2UudGV4dCB9YCk7XG5cbiAgICAgIHJldHVybiBlbnRyeS5kZWZlcnJlZC5yZWplY3QobmV3IEVycm9yKCdjYW5jZWxsZWQnKSk7XG4gICAgfVxuXG4gICAgY29uc3QgdXR0ZXJhbmNlID0gY3JlYXRlVXR0ZXJhbmNlKGVudHJ5LnV0dGVyYW5jZUxpa2UsIHRoaXMucG9ueWZpbGwpO1xuXG4gICAgc3BlYWtVdHRlcmFuY2UodGhpcy5wb255ZmlsbCwge1xuICAgICAgcmVqZWN0OiBlbnRyeS5kZWZlcnJlZC5yZWplY3QsXG4gICAgICByZXNvbHZlOiBlbnRyeS5kZWZlcnJlZC5yZXNvbHZlLFxuICAgICAgdXR0ZXJhbmNlXG4gICAgfSk7XG4gIH1cbn1cblxuZnVuY3Rpb24gZ2V0U2VyaWFsaXphYmxlVm9pY2VzKHNwZWVjaFN5bnRoZXNpcykge1xuICByZXR1cm4gc3BlZWNoU3ludGhlc2lzLmdldFZvaWNlcygpLm1hcCgoe1xuICAgICdkZWZhdWx0JzogZGVmLFxuICAgIGxhbmcsXG4gICAgbG9jYWxTZXJ2aWNlLFxuICAgIG5hbWUsXG4gICAgdm9pY2VVUklcbiAgfSkgPT4gKHtcbiAgICAnZGVmYXVsdCc6IGRlZixcbiAgICBsYW5nLFxuICAgIGxvY2FsU2VydmljZSxcbiAgICBuYW1lLFxuICAgIHZvaWNlVVJJXG4gIH0pKTtcbn1cblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgQ29tcG9zZXIgZXh0ZW5kcyBSZWFjdC5Db21wb25lbnQge1xuICBjb25zdHJ1Y3Rvcihwcm9wcykge1xuICAgIHN1cGVyKHByb3BzKTtcblxuICAgIHRoaXMuaGFuZGxlVm9pY2VzQ2hhbmdlZCA9IHRoaXMuaGFuZGxlVm9pY2VzQ2hhbmdlZC5iaW5kKHRoaXMpO1xuXG4gICAgcHJvcHMuc3BlZWNoU3ludGhlc2lzLmFkZEV2ZW50TGlzdGVuZXIgJiYgcHJvcHMuc3BlZWNoU3ludGhlc2lzLmFkZEV2ZW50TGlzdGVuZXIoJ3ZvaWNlc2NoYW5nZWQnLCB0aGlzLmhhbmRsZVZvaWNlc0NoYW5nZWQpO1xuXG4gICAgdGhpcy5tZXJnZUNvbnRleHQgPSBtZW1vaXplKCh7IGNhbmNlbCwgc3BlYWsgfSwgdm9pY2VzKSA9PiAoe1xuICAgICAgY2FuY2VsLFxuICAgICAgc3BlYWssXG4gICAgICB2b2ljZXNcbiAgICB9KSk7XG5cbiAgICB0aGlzLnN0YXRlID0ge1xuICAgICAgY29udGV4dDogbmV3IFNwZWVjaENvbnRleHQoe1xuICAgICAgICBzcGVlY2hTeW50aGVzaXM6IHByb3BzLnNwZWVjaFN5bnRoZXNpcyxcbiAgICAgICAgU3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNlOiBwcm9wcy5zcGVlY2hTeW50aGVzaXNVdHRlcmFuY2VcbiAgICAgIH0pLFxuICAgICAgdm9pY2VzOiBnZXRTZXJpYWxpemFibGVWb2ljZXMocHJvcHMuc3BlZWNoU3ludGhlc2lzKVxuICAgIH07XG4gIH1cblxuICBjb21wb25lbnRXaWxsUmVjZWl2ZVByb3BzKG5leHRQcm9wcykge1xuICAgIGNvbnN0IHsgcHJvcHMgfSA9IHRoaXM7XG4gICAgY29uc3QgY2hhbmdlZCA9IFtcbiAgICAgICdzcGVlY2hTeW50aGVzaXMnLFxuICAgICAgJ3NwZWVjaFN5bnRoZXNpc1V0dGVyYW5jZSdcbiAgICBdLnNvbWUobmFtZSA9PiBuZXh0UHJvcHNbbmFtZV0gIT09IHByb3BzW25hbWVdKTtcblxuICAgIGlmIChjaGFuZ2VkKSB7XG4gICAgICBpZiAocHJvcHMuc3BlZWNoU3ludGhlc2lzKSB7XG4gICAgICAgIHByb3BzLnNwZWVjaFN5bnRoZXNpcy5yZW1vdmVFdmVudExpc3RlbmVyICYmIHByb3BzLnNwZWVjaFN5bnRoZXNpcy5yZW1vdmVFdmVudExpc3RlbmVyKCd2b2ljZXNjaGFuZ2VkJywgdGhpcy5oYW5kbGVWb2ljZXNDaGFuZ2VkKTtcbiAgICAgIH1cblxuICAgICAgdGhpcy5zdGF0ZS5jb250ZXh0LnNldFBvbnlmaWxsKHtcbiAgICAgICAgc3BlZWNoU3ludGhlc2lzOiBuZXh0UHJvcHMuc3BlZWNoU3ludGhlc2lzLFxuICAgICAgICBTcGVlY2hTeW50aGVzaXNVdHRlcmFuY2U6IG5leHRQcm9wcy5zcGVlY2hTeW50aGVzaXNVdHRlcmFuY2VcbiAgICAgIH0pO1xuXG4gICAgICBpZiAobmV4dFByb3BzLnNwZWVjaFN5bnRoZXNpcykge1xuICAgICAgICBuZXh0UHJvcHMuc3BlZWNoU3ludGhlc2lzLmFkZEV2ZW50TGlzdGVuZXIgJiYgbmV4dFByb3BzLnNwZWVjaFN5bnRoZXNpcy5hZGRFdmVudExpc3RlbmVyKCd2b2ljZXNjaGFuZ2VkJywgdGhpcy5oYW5kbGVWb2ljZXNDaGFuZ2VkKTtcbiAgICAgIH1cblxuICAgICAgdGhpcy5zZXRTdGF0ZSgoKSA9PiAoeyB2b2ljZXM6IGdldFNlcmlhbGl6YWJsZVZvaWNlcyhuZXh0UHJvcHMuc3BlZWNoU3ludGhlc2lzKSB9KSk7XG4gICAgfVxuICB9XG5cbiAgY29tcG9uZW50V2lsbFVubW91bnQoKSB7XG4gICAgY29uc3QgeyBzcGVlY2hTeW50aGVzaXMgfSA9IHRoaXMucHJvcHM7XG5cbiAgICBzcGVlY2hTeW50aGVzaXMgJiYgc3BlZWNoU3ludGhlc2lzLnJlbW92ZUV2ZW50TGlzdGVuZXIgJiYgc3BlZWNoU3ludGhlc2lzLnJlbW92ZUV2ZW50TGlzdGVuZXIoJ3ZvaWNlc2NoYW5nZWQnLCB0aGlzLmhhbmRsZVZvaWNlc0NoYW5nZWQpO1xuICB9XG5cbiAgaGFuZGxlVm9pY2VzQ2hhbmdlZCh7IHRhcmdldCB9KSB7XG4gICAgdGhpcy5zZXRTdGF0ZSgoKSA9PiAoeyB2b2ljZXM6IGdldFNlcmlhbGl6YWJsZVZvaWNlcyh0YXJnZXQpIH0pKTtcbiAgfVxuXG4gIHJlbmRlcigpIHtcbiAgICBjb25zdCB7IHByb3BzLCBzdGF0ZSB9ID0gdGhpcztcbiAgICBjb25zdCB7IGNoaWxkcmVuIH0gPSBwcm9wcztcblxuICAgIHJldHVybiAoXG4gICAgICA8Q29udGV4dC5Db25zdW1lcj5cbiAgICAgICAgeyBjb250ZXh0ID0+IGNvbnRleHQgP1xuICAgICAgICAgICAgdHlwZW9mIGNoaWxkcmVuID09PSAnZnVuY3Rpb24nID8gY2hpbGRyZW4oY29udGV4dCkgOiBjaGlsZHJlblxuICAgICAgICAgIDpcbiAgICAgICAgICAgIDxDb250ZXh0LlByb3ZpZGVyIHZhbHVlPXsgdGhpcy5tZXJnZUNvbnRleHQoc3RhdGUuY29udGV4dCwgc3RhdGUudm9pY2VzKSB9PlxuICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgdHlwZW9mIGNoaWxkcmVuID09PSAnZnVuY3Rpb24nID9cbiAgICAgICAgICAgICAgICAgIDxDb250ZXh0LkNvbnN1bWVyPlxuICAgICAgICAgICAgICAgICAgICB7IGNvbnRleHQgPT4gY2hpbGRyZW4oY29udGV4dCkgfVxuICAgICAgICAgICAgICAgICAgPC9Db250ZXh0LkNvbnN1bWVyPlxuICAgICAgICAgICAgICAgIDpcbiAgICAgICAgICAgICAgICAgIGNoaWxkcmVuXG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIDwvQ29udGV4dC5Qcm92aWRlcj5cbiAgICAgICAgfVxuICAgICAgPC9Db250ZXh0LkNvbnN1bWVyPlxuICAgICk7XG4gIH1cbn1cblxuQ29tcG9zZXIuZGVmYXVsdFByb3BzID0ge1xuICBzcGVlY2hTeW50aGVzaXM6IHdpbmRvdy5zcGVlY2hTeW50aGVzaXMgfHwgd2luZG93LndlYmtpdFNwZWVjaFN5bnRoZXNpcyxcbiAgc3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNlOiB3aW5kb3cuU3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNlIHx8IHdpbmRvdy53ZWJraXRTcGVlY2hTeW50aGVzaXNVdHRlcmFuY2Vcbn07XG5cbkNvbXBvc2VyLnByb3BUeXBlcyA9IHtcbiAgc3BlZWNoU3ludGhlc2lzOiBQcm9wVHlwZXMuYW55LFxuICBzcGVlY2hTeW50aGVzaXNVdHRlcmFuY2U6IFByb3BUeXBlcy5hbnlcbn07XG4iXX0= |
@@ -13,11 +13,5 @@ 'use strict'; | ||
var Context = _react2.default.createContext({ | ||
cancel: function cancel() {}, | ||
getVoices: function getVoices() { | ||
return []; | ||
}, | ||
speak: function speak() {} | ||
}); | ||
var Context = _react2.default.createContext(); | ||
exports.default = Context; | ||
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9Db250ZXh0LmpzIl0sIm5hbWVzIjpbIkNvbnRleHQiLCJSZWFjdCIsImNyZWF0ZUNvbnRleHQiLCJjYW5jZWwiLCJnZXRWb2ljZXMiLCJzcGVhayJdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQUE7Ozs7OztBQUVBLElBQU1BLFVBQVVDLGdCQUFNQyxhQUFOLENBQW9CO0FBQ2xDQyxVQUFRLGtCQUFNLENBQUUsQ0FEa0I7QUFFbENDLGFBQVc7QUFBQSxXQUFNLEVBQU47QUFBQSxHQUZ1QjtBQUdsQ0MsU0FBTyxpQkFBTSxDQUFFO0FBSG1CLENBQXBCLENBQWhCOztrQkFNZUwsTyIsImZpbGUiOiJDb250ZXh0LmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IFJlYWN0IGZyb20gJ3JlYWN0JztcblxuY29uc3QgQ29udGV4dCA9IFJlYWN0LmNyZWF0ZUNvbnRleHQoe1xuICBjYW5jZWw6ICgpID0+IHt9LFxuICBnZXRWb2ljZXM6ICgpID0+IFtdLFxuICBzcGVhazogKCkgPT4ge31cbn0pO1xuXG5leHBvcnQgZGVmYXVsdCBDb250ZXh0XG4iXX0= | ||
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9Db250ZXh0LmpzIl0sIm5hbWVzIjpbIkNvbnRleHQiLCJSZWFjdCIsImNyZWF0ZUNvbnRleHQiXSwibWFwcGluZ3MiOiI7Ozs7OztBQUFBOzs7Ozs7QUFFQSxJQUFNQSxVQUFVQyxnQkFBTUMsYUFBTixFQUFoQjs7a0JBRWVGLE8iLCJmaWxlIjoiQ29udGV4dC5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBSZWFjdCBmcm9tICdyZWFjdCc7XG5cbmNvbnN0IENvbnRleHQgPSBSZWFjdC5jcmVhdGVDb250ZXh0KCk7XG5cbmV4cG9ydCBkZWZhdWx0IENvbnRleHRcbiJdfQ== |
@@ -35,2 +35,3 @@ 'use strict'; | ||
{ | ||
exclusive: props.exclusive, | ||
lang: props.lang, | ||
@@ -58,2 +59,3 @@ onBoundary: props.onBoundary, | ||
Say.propTypes = { | ||
exclusive: _propTypes2.default.bool, | ||
lang: _propTypes2.default.string, | ||
@@ -74,2 +76,2 @@ onBoundary: _propTypes2.default.func, | ||
exports.default = Say; | ||
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9TYXkuanMiXSwibmFtZXMiOlsiU2F5IiwicHJvcHMiLCJzcGVlY2hTeW50aGVzaXMiLCJzcGVlY2hTeW50aGVzaXNVdHRlcmFuY2UiLCJsYW5nIiwib25Cb3VuZGFyeSIsIm9uRW5kIiwib25FcnJvciIsIm9uU3RhcnQiLCJwaXRjaCIsInJhdGUiLCJzcGVhayIsInZvaWNlIiwidm9sdW1lIiwiY2hpbGRyZW4iLCJkZWZhdWx0UHJvcHMiLCJ3aW5kb3ciLCJ3ZWJraXRTcGVlY2hTeW50aGVzaXMiLCJTcGVlY2hTeW50aGVzaXNVdHRlcmFuY2UiLCJ3ZWJraXRTcGVlY2hTeW50aGVzaXNVdHRlcmFuY2UiLCJwcm9wVHlwZXMiLCJQcm9wVHlwZXMiLCJzdHJpbmciLCJmdW5jIiwibnVtYmVyIiwiYW55Iiwib25lT2ZUeXBlIl0sIm1hcHBpbmdzIjoiOzs7Ozs7QUFBQTs7OztBQUNBOzs7O0FBRUE7Ozs7QUFDQTs7Ozs7O0FBRUEsSUFBTUEsTUFBTSxTQUFOQSxHQUFNO0FBQUEsU0FDVjtBQUFDLHNCQUFEO0FBQUE7QUFDRSx1QkFBa0JDLE1BQU1DLGVBRDFCO0FBRUUsZ0NBQTJCRCxNQUFNRTtBQUZuQztBQUlFO0FBQUMsNEJBQUQ7QUFBQTtBQUNFLGNBQU9GLE1BQU1HLElBRGY7QUFFRSxvQkFBYUgsTUFBTUksVUFGckI7QUFHRSxlQUFRSixNQUFNSyxLQUhoQjtBQUlFLGlCQUFVTCxNQUFNTSxPQUpsQjtBQUtFLGlCQUFVTixNQUFNTyxPQUxsQjtBQU1FLGVBQVFQLE1BQU1RLEtBTmhCO0FBT0UsY0FBT1IsTUFBTVMsSUFQZjtBQVFFLGVBQVFULE1BQU1VLEtBUmhCO0FBU0UsZUFBUVYsTUFBTVcsS0FUaEI7QUFVRSxnQkFBU1gsTUFBTVk7QUFWakI7QUFZSVosWUFBTWE7QUFaVjtBQUpGLEdBRFU7QUFBQSxDQUFaOztBQXFCQWQsSUFBSWUsWUFBSixHQUFtQjtBQUNqQmIsbUJBQWlCYyxPQUFPZCxlQUFQLElBQTBCYyxPQUFPQyxxQkFEakM7QUFFakJkLDRCQUEwQmEsT0FBT0Usd0JBQVAsSUFBbUNGLE9BQU9HO0FBRm5ELENBQW5COztBQUtBbkIsSUFBSW9CLFNBQUosR0FBZ0I7QUFDZGhCLFFBQU1pQixvQkFBVUMsTUFERjtBQUVkakIsY0FBWWdCLG9CQUFVRSxJQUZSO0FBR2RqQixTQUFPZSxvQkFBVUUsSUFISDtBQUlkaEIsV0FBU2Msb0JBQVVFLElBSkw7QUFLZGYsV0FBU2Esb0JBQVVFLElBTEw7QUFNZGQsU0FBT1ksb0JBQVVHLE1BTkg7QUFPZGQsUUFBTVcsb0JBQVVHLE1BUEY7QUFRZHRCLG1CQUFpQm1CLG9CQUFVSSxHQVJiO0FBU2R0Qiw0QkFBMEJrQixvQkFBVUksR0FUdEI7QUFVZGQsU0FBT1Usb0JBQVVDLE1BVkg7QUFXZFYsU0FBT1Msb0JBQVVLLFNBQVYsQ0FBb0IsQ0FBQ0wsb0JBQVVJLEdBQVgsRUFBZ0JKLG9CQUFVRSxJQUExQixDQUFwQixDQVhPO0FBWWRWLFVBQVFRLG9CQUFVRztBQVpKLENBQWhCOztrQkFlZXhCLEciLCJmaWxlIjoiU2F5LmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IFByb3BUeXBlcyBmcm9tICdwcm9wLXR5cGVzJztcbmltcG9ydCBSZWFjdCBmcm9tICdyZWFjdCc7XG5cbmltcG9ydCBDb21wb3NlciBmcm9tICcuL0NvbXBvc2VyJztcbmltcG9ydCBTYXlQcmltaXRpdmUgZnJvbSAnLi9TYXlQcmltaXRpdmUnO1xuXG5jb25zdCBTYXkgPSBwcm9wcyA9PlxuICA8Q29tcG9zZXJcbiAgICBzcGVlY2hTeW50aGVzaXM9eyBwcm9wcy5zcGVlY2hTeW50aGVzaXMgfVxuICAgIHNwZWVjaFN5bnRoZXNpc1V0dGVyYW5jZT17IHByb3BzLnNwZWVjaFN5bnRoZXNpc1V0dGVyYW5jZSB9XG4gID5cbiAgICA8U2F5UHJpbWl0aXZlXG4gICAgICBsYW5nPXsgcHJvcHMubGFuZyB9XG4gICAgICBvbkJvdW5kYXJ5PXsgcHJvcHMub25Cb3VuZGFyeSB9XG4gICAgICBvbkVuZD17IHByb3BzLm9uRW5kIH1cbiAgICAgIG9uRXJyb3I9eyBwcm9wcy5vbkVycm9yIH1cbiAgICAgIG9uU3RhcnQ9eyBwcm9wcy5vblN0YXJ0IH1cbiAgICAgIHBpdGNoPXsgcHJvcHMucGl0Y2ggfVxuICAgICAgcmF0ZT17IHByb3BzLnJhdGUgfVxuICAgICAgc3BlYWs9eyBwcm9wcy5zcGVhayB9XG4gICAgICB2b2ljZT17IHByb3BzLnZvaWNlIH1cbiAgICAgIHZvbHVtZT17IHByb3BzLnZvbHVtZSB9XG4gICAgPlxuICAgICAgeyBwcm9wcy5jaGlsZHJlbiB9XG4gICAgPC9TYXlQcmltaXRpdmU+XG4gIDwvQ29tcG9zZXI+XG5cblNheS5kZWZhdWx0UHJvcHMgPSB7XG4gIHNwZWVjaFN5bnRoZXNpczogd2luZG93LnNwZWVjaFN5bnRoZXNpcyB8fCB3aW5kb3cud2Via2l0U3BlZWNoU3ludGhlc2lzLFxuICBzcGVlY2hTeW50aGVzaXNVdHRlcmFuY2U6IHdpbmRvdy5TcGVlY2hTeW50aGVzaXNVdHRlcmFuY2UgfHwgd2luZG93LndlYmtpdFNwZWVjaFN5bnRoZXNpc1V0dGVyYW5jZVxufTtcblxuU2F5LnByb3BUeXBlcyA9IHtcbiAgbGFuZzogUHJvcFR5cGVzLnN0cmluZyxcbiAgb25Cb3VuZGFyeTogUHJvcFR5cGVzLmZ1bmMsXG4gIG9uRW5kOiBQcm9wVHlwZXMuZnVuYyxcbiAgb25FcnJvcjogUHJvcFR5cGVzLmZ1bmMsXG4gIG9uU3RhcnQ6IFByb3BUeXBlcy5mdW5jLFxuICBwaXRjaDogUHJvcFR5cGVzLm51bWJlcixcbiAgcmF0ZTogUHJvcFR5cGVzLm51bWJlcixcbiAgc3BlZWNoU3ludGhlc2lzOiBQcm9wVHlwZXMuYW55LFxuICBzcGVlY2hTeW50aGVzaXNVdHRlcmFuY2U6IFByb3BUeXBlcy5hbnksXG4gIHNwZWFrOiBQcm9wVHlwZXMuc3RyaW5nLFxuICB2b2ljZTogUHJvcFR5cGVzLm9uZU9mVHlwZShbUHJvcFR5cGVzLmFueSwgUHJvcFR5cGVzLmZ1bmNdKSxcbiAgdm9sdW1lOiBQcm9wVHlwZXMubnVtYmVyXG59O1xuXG5leHBvcnQgZGVmYXVsdCBTYXlcbiJdfQ== | ||
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9TYXkuanMiXSwibmFtZXMiOlsiU2F5IiwicHJvcHMiLCJzcGVlY2hTeW50aGVzaXMiLCJzcGVlY2hTeW50aGVzaXNVdHRlcmFuY2UiLCJleGNsdXNpdmUiLCJsYW5nIiwib25Cb3VuZGFyeSIsIm9uRW5kIiwib25FcnJvciIsIm9uU3RhcnQiLCJwaXRjaCIsInJhdGUiLCJzcGVhayIsInZvaWNlIiwidm9sdW1lIiwiY2hpbGRyZW4iLCJkZWZhdWx0UHJvcHMiLCJ3aW5kb3ciLCJ3ZWJraXRTcGVlY2hTeW50aGVzaXMiLCJTcGVlY2hTeW50aGVzaXNVdHRlcmFuY2UiLCJ3ZWJraXRTcGVlY2hTeW50aGVzaXNVdHRlcmFuY2UiLCJwcm9wVHlwZXMiLCJQcm9wVHlwZXMiLCJib29sIiwic3RyaW5nIiwiZnVuYyIsIm51bWJlciIsImFueSIsIm9uZU9mVHlwZSJdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQUE7Ozs7QUFDQTs7OztBQUVBOzs7O0FBQ0E7Ozs7OztBQUVBLElBQU1BLE1BQU0sU0FBTkEsR0FBTTtBQUFBLFNBQ1Y7QUFBQyxzQkFBRDtBQUFBO0FBQ0UsdUJBQWtCQyxNQUFNQyxlQUQxQjtBQUVFLGdDQUEyQkQsTUFBTUU7QUFGbkM7QUFJRTtBQUFDLDRCQUFEO0FBQUE7QUFDRSxtQkFBWUYsTUFBTUcsU0FEcEI7QUFFRSxjQUFPSCxNQUFNSSxJQUZmO0FBR0Usb0JBQWFKLE1BQU1LLFVBSHJCO0FBSUUsZUFBUUwsTUFBTU0sS0FKaEI7QUFLRSxpQkFBVU4sTUFBTU8sT0FMbEI7QUFNRSxpQkFBVVAsTUFBTVEsT0FObEI7QUFPRSxlQUFRUixNQUFNUyxLQVBoQjtBQVFFLGNBQU9ULE1BQU1VLElBUmY7QUFTRSxlQUFRVixNQUFNVyxLQVRoQjtBQVVFLGVBQVFYLE1BQU1ZLEtBVmhCO0FBV0UsZ0JBQVNaLE1BQU1hO0FBWGpCO0FBYUliLFlBQU1jO0FBYlY7QUFKRixHQURVO0FBQUEsQ0FBWjs7QUFzQkFmLElBQUlnQixZQUFKLEdBQW1CO0FBQ2pCZCxtQkFBaUJlLE9BQU9mLGVBQVAsSUFBMEJlLE9BQU9DLHFCQURqQztBQUVqQmYsNEJBQTBCYyxPQUFPRSx3QkFBUCxJQUFtQ0YsT0FBT0c7QUFGbkQsQ0FBbkI7O0FBS0FwQixJQUFJcUIsU0FBSixHQUFnQjtBQUNkakIsYUFBV2tCLG9CQUFVQyxJQURQO0FBRWRsQixRQUFNaUIsb0JBQVVFLE1BRkY7QUFHZGxCLGNBQVlnQixvQkFBVUcsSUFIUjtBQUlkbEIsU0FBT2Usb0JBQVVHLElBSkg7QUFLZGpCLFdBQVNjLG9CQUFVRyxJQUxMO0FBTWRoQixXQUFTYSxvQkFBVUcsSUFOTDtBQU9kZixTQUFPWSxvQkFBVUksTUFQSDtBQVFkZixRQUFNVyxvQkFBVUksTUFSRjtBQVNkeEIsbUJBQWlCb0Isb0JBQVVLLEdBVGI7QUFVZHhCLDRCQUEwQm1CLG9CQUFVSyxHQVZ0QjtBQVdkZixTQUFPVSxvQkFBVUUsTUFYSDtBQVlkWCxTQUFPUyxvQkFBVU0sU0FBVixDQUFvQixDQUFDTixvQkFBVUssR0FBWCxFQUFnQkwsb0JBQVVHLElBQTFCLENBQXBCLENBWk87QUFhZFgsVUFBUVEsb0JBQVVJO0FBYkosQ0FBaEI7O2tCQWdCZTFCLEciLCJmaWxlIjoiU2F5LmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IFByb3BUeXBlcyBmcm9tICdwcm9wLXR5cGVzJztcbmltcG9ydCBSZWFjdCBmcm9tICdyZWFjdCc7XG5cbmltcG9ydCBDb21wb3NlciBmcm9tICcuL0NvbXBvc2VyJztcbmltcG9ydCBTYXlQcmltaXRpdmUgZnJvbSAnLi9TYXlQcmltaXRpdmUnO1xuXG5jb25zdCBTYXkgPSBwcm9wcyA9PlxuICA8Q29tcG9zZXJcbiAgICBzcGVlY2hTeW50aGVzaXM9eyBwcm9wcy5zcGVlY2hTeW50aGVzaXMgfVxuICAgIHNwZWVjaFN5bnRoZXNpc1V0dGVyYW5jZT17IHByb3BzLnNwZWVjaFN5bnRoZXNpc1V0dGVyYW5jZSB9XG4gID5cbiAgICA8U2F5UHJpbWl0aXZlXG4gICAgICBleGNsdXNpdmU9eyBwcm9wcy5leGNsdXNpdmUgfVxuICAgICAgbGFuZz17IHByb3BzLmxhbmcgfVxuICAgICAgb25Cb3VuZGFyeT17IHByb3BzLm9uQm91bmRhcnkgfVxuICAgICAgb25FbmQ9eyBwcm9wcy5vbkVuZCB9XG4gICAgICBvbkVycm9yPXsgcHJvcHMub25FcnJvciB9XG4gICAgICBvblN0YXJ0PXsgcHJvcHMub25TdGFydCB9XG4gICAgICBwaXRjaD17IHByb3BzLnBpdGNoIH1cbiAgICAgIHJhdGU9eyBwcm9wcy5yYXRlIH1cbiAgICAgIHNwZWFrPXsgcHJvcHMuc3BlYWsgfVxuICAgICAgdm9pY2U9eyBwcm9wcy52b2ljZSB9XG4gICAgICB2b2x1bWU9eyBwcm9wcy52b2x1bWUgfVxuICAgID5cbiAgICAgIHsgcHJvcHMuY2hpbGRyZW4gfVxuICAgIDwvU2F5UHJpbWl0aXZlPlxuICA8L0NvbXBvc2VyPlxuXG5TYXkuZGVmYXVsdFByb3BzID0ge1xuICBzcGVlY2hTeW50aGVzaXM6IHdpbmRvdy5zcGVlY2hTeW50aGVzaXMgfHwgd2luZG93LndlYmtpdFNwZWVjaFN5bnRoZXNpcyxcbiAgc3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNlOiB3aW5kb3cuU3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNlIHx8IHdpbmRvdy53ZWJraXRTcGVlY2hTeW50aGVzaXNVdHRlcmFuY2Vcbn07XG5cblNheS5wcm9wVHlwZXMgPSB7XG4gIGV4Y2x1c2l2ZTogUHJvcFR5cGVzLmJvb2wsXG4gIGxhbmc6IFByb3BUeXBlcy5zdHJpbmcsXG4gIG9uQm91bmRhcnk6IFByb3BUeXBlcy5mdW5jLFxuICBvbkVuZDogUHJvcFR5cGVzLmZ1bmMsXG4gIG9uRXJyb3I6IFByb3BUeXBlcy5mdW5jLFxuICBvblN0YXJ0OiBQcm9wVHlwZXMuZnVuYyxcbiAgcGl0Y2g6IFByb3BUeXBlcy5udW1iZXIsXG4gIHJhdGU6IFByb3BUeXBlcy5udW1iZXIsXG4gIHNwZWVjaFN5bnRoZXNpczogUHJvcFR5cGVzLmFueSxcbiAgc3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNlOiBQcm9wVHlwZXMuYW55LFxuICBzcGVhazogUHJvcFR5cGVzLnN0cmluZyxcbiAgdm9pY2U6IFByb3BUeXBlcy5vbmVPZlR5cGUoW1Byb3BUeXBlcy5hbnksIFByb3BUeXBlcy5mdW5jXSksXG4gIHZvbHVtZTogUHJvcFR5cGVzLm51bWJlclxufTtcblxuZXhwb3J0IGRlZmF1bHQgU2F5XG4iXX0= |
@@ -24,3 +24,6 @@ 'use strict'; | ||
_Context2.default.Consumer, | ||
null, | ||
{ | ||
speechSynthesis: props.speechSynthesis, | ||
speechSynthesisUtterance: props.speechSynthesisUtterance | ||
}, | ||
function (context) { | ||
@@ -30,2 +33,4 @@ return _react2.default.createElement( | ||
{ onClick: function onClick(event) { | ||
props.exclusive && context.cancel(); | ||
context.speak({ | ||
@@ -43,2 +48,3 @@ lang: props.lang, | ||
}); | ||
props.onClick && props.onClick(event); | ||
@@ -53,2 +59,3 @@ } }, | ||
SayButton.propTypes = { | ||
exclusive: _propTypes2.default.bool, | ||
lang: _propTypes2.default.string, | ||
@@ -67,2 +74,2 @@ onBoundary: _propTypes2.default.func, | ||
exports.default = SayButton; | ||
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9TYXlCdXR0b24uanMiXSwibmFtZXMiOlsiU2F5QnV0dG9uIiwiY29udGV4dCIsInNwZWFrIiwibGFuZyIsInByb3BzIiwib25Cb3VuZGFyeSIsIm9uRW5kIiwib25FcnJvciIsIm9uU3RhcnQiLCJwaXRjaCIsInJhdGUiLCJ0ZXh0Iiwidm9pY2UiLCJ2b2x1bWUiLCJvbkNsaWNrIiwiZXZlbnQiLCJjaGlsZHJlbiIsInByb3BUeXBlcyIsIlByb3BUeXBlcyIsInN0cmluZyIsImZ1bmMiLCJudW1iZXIiLCJvbmVPZlR5cGUiLCJhbnkiXSwibWFwcGluZ3MiOiI7Ozs7OztBQUFBOzs7O0FBQ0E7Ozs7QUFFQTs7Ozs7O0FBRUEsSUFBTUEsWUFBWSxTQUFaQSxTQUFZO0FBQUEsU0FDaEI7QUFBQyxxQkFBRCxDQUFTLFFBQVQ7QUFBQTtBQUNJO0FBQUEsYUFDQTtBQUFBO0FBQUEsVUFBUSxTQUFVLHdCQUFTO0FBQ3pCQyxvQkFBUUMsS0FBUixDQUFjO0FBQ1pDLG9CQUFNQyxNQUFNRCxJQURBO0FBRVpFLDBCQUFZRCxNQUFNQyxVQUZOO0FBR1pDLHFCQUFPRixNQUFNRSxLQUhEO0FBSVpDLHVCQUFTSCxNQUFNRyxPQUpIO0FBS1pDLHVCQUFTSixNQUFNSSxPQUxIO0FBTVpDLHFCQUFPTCxNQUFNSyxLQU5EO0FBT1pDLG9CQUFNTixNQUFNTSxJQVBBO0FBUVpDLG9CQUFNUCxNQUFNRixLQVJBO0FBU1pVLHFCQUFPUixNQUFNUSxLQVREO0FBVVpDLHNCQUFRVCxNQUFNUztBQVZGLGFBQWQ7QUFZQVQsa0JBQU1VLE9BQU4sSUFBaUJWLE1BQU1VLE9BQU4sQ0FBY0MsS0FBZCxDQUFqQjtBQUNELFdBZEQ7QUFlSVgsY0FBTVk7QUFmVixPQURBO0FBQUE7QUFESixHQURnQjtBQUFBLENBQWxCOztBQXVCQWhCLFVBQVVpQixTQUFWLEdBQXNCO0FBQ3BCZCxRQUFNZSxvQkFBVUMsTUFESTtBQUVwQmQsY0FBWWEsb0JBQVVFLElBRkY7QUFHcEJkLFNBQU9ZLG9CQUFVRSxJQUhHO0FBSXBCYixXQUFTVyxvQkFBVUUsSUFKQztBQUtwQlosV0FBU1Usb0JBQVVFLElBTEM7QUFNcEJYLFNBQU9TLG9CQUFVRyxNQU5HO0FBT3BCWCxRQUFNUSxvQkFBVUcsTUFQSTtBQVFwQm5CLFNBQU9nQixvQkFBVUMsTUFSRztBQVNwQlAsU0FBT00sb0JBQVVJLFNBQVYsQ0FBb0IsQ0FBQ0osb0JBQVVLLEdBQVgsRUFBZ0JMLG9CQUFVRSxJQUExQixDQUFwQixDQVRhO0FBVXBCUCxVQUFRSyxvQkFBVUc7QUFWRSxDQUF0Qjs7a0JBYWVyQixTIiwiZmlsZSI6IlNheUJ1dHRvbi5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBQcm9wVHlwZXMgZnJvbSAncHJvcC10eXBlcyc7XG5pbXBvcnQgUmVhY3QgZnJvbSAncmVhY3QnO1xuXG5pbXBvcnQgQ29udGV4dCBmcm9tICcuL0NvbnRleHQnO1xuXG5jb25zdCBTYXlCdXR0b24gPSBwcm9wcyA9PlxuICA8Q29udGV4dC5Db25zdW1lcj5cbiAgICB7IGNvbnRleHQgPT5cbiAgICAgIDxidXR0b24gb25DbGljaz17IGV2ZW50ID0+IHtcbiAgICAgICAgY29udGV4dC5zcGVhayh7XG4gICAgICAgICAgbGFuZzogcHJvcHMubGFuZyxcbiAgICAgICAgICBvbkJvdW5kYXJ5OiBwcm9wcy5vbkJvdW5kYXJ5LFxuICAgICAgICAgIG9uRW5kOiBwcm9wcy5vbkVuZCxcbiAgICAgICAgICBvbkVycm9yOiBwcm9wcy5vbkVycm9yLFxuICAgICAgICAgIG9uU3RhcnQ6IHByb3BzLm9uU3RhcnQsXG4gICAgICAgICAgcGl0Y2g6IHByb3BzLnBpdGNoLFxuICAgICAgICAgIHJhdGU6IHByb3BzLnJhdGUsXG4gICAgICAgICAgdGV4dDogcHJvcHMuc3BlYWssXG4gICAgICAgICAgdm9pY2U6IHByb3BzLnZvaWNlLFxuICAgICAgICAgIHZvbHVtZTogcHJvcHMudm9sdW1lXG4gICAgICAgIH0pO1xuICAgICAgICBwcm9wcy5vbkNsaWNrICYmIHByb3BzLm9uQ2xpY2soZXZlbnQpO1xuICAgICAgfSB9PlxuICAgICAgICB7IHByb3BzLmNoaWxkcmVuIH1cbiAgICAgIDwvYnV0dG9uPlxuICAgIH1cbiAgPC9Db250ZXh0LkNvbnN1bWVyPlxuXG5TYXlCdXR0b24ucHJvcFR5cGVzID0ge1xuICBsYW5nOiBQcm9wVHlwZXMuc3RyaW5nLFxuICBvbkJvdW5kYXJ5OiBQcm9wVHlwZXMuZnVuYyxcbiAgb25FbmQ6IFByb3BUeXBlcy5mdW5jLFxuICBvbkVycm9yOiBQcm9wVHlwZXMuZnVuYyxcbiAgb25TdGFydDogUHJvcFR5cGVzLmZ1bmMsXG4gIHBpdGNoOiBQcm9wVHlwZXMubnVtYmVyLFxuICByYXRlOiBQcm9wVHlwZXMubnVtYmVyLFxuICBzcGVhazogUHJvcFR5cGVzLnN0cmluZyxcbiAgdm9pY2U6IFByb3BUeXBlcy5vbmVPZlR5cGUoW1Byb3BUeXBlcy5hbnksIFByb3BUeXBlcy5mdW5jXSksXG4gIHZvbHVtZTogUHJvcFR5cGVzLm51bWJlclxufTtcblxuZXhwb3J0IGRlZmF1bHQgU2F5QnV0dG9uO1xuIl19 | ||
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9TYXlCdXR0b24uanMiXSwibmFtZXMiOlsiU2F5QnV0dG9uIiwicHJvcHMiLCJzcGVlY2hTeW50aGVzaXMiLCJzcGVlY2hTeW50aGVzaXNVdHRlcmFuY2UiLCJleGNsdXNpdmUiLCJjb250ZXh0IiwiY2FuY2VsIiwic3BlYWsiLCJsYW5nIiwib25Cb3VuZGFyeSIsIm9uRW5kIiwib25FcnJvciIsIm9uU3RhcnQiLCJwaXRjaCIsInJhdGUiLCJ0ZXh0Iiwidm9pY2UiLCJ2b2x1bWUiLCJvbkNsaWNrIiwiZXZlbnQiLCJjaGlsZHJlbiIsInByb3BUeXBlcyIsIlByb3BUeXBlcyIsImJvb2wiLCJzdHJpbmciLCJmdW5jIiwibnVtYmVyIiwib25lT2ZUeXBlIiwiYW55Il0sIm1hcHBpbmdzIjoiOzs7Ozs7QUFBQTs7OztBQUNBOzs7O0FBRUE7Ozs7OztBQUVBLElBQU1BLFlBQVksU0FBWkEsU0FBWTtBQUFBLFNBQ2hCO0FBQUMscUJBQUQsQ0FBUyxRQUFUO0FBQUE7QUFDRSx1QkFBa0JDLE1BQU1DLGVBRDFCO0FBRUUsZ0NBQTJCRCxNQUFNRTtBQUZuQztBQUlJO0FBQUEsYUFDQTtBQUFBO0FBQUEsVUFBUSxTQUFVLHdCQUFTO0FBQ3pCRixrQkFBTUcsU0FBTixJQUFtQkMsUUFBUUMsTUFBUixFQUFuQjs7QUFFQUQsb0JBQVFFLEtBQVIsQ0FBYztBQUNaQyxvQkFBTVAsTUFBTU8sSUFEQTtBQUVaQywwQkFBWVIsTUFBTVEsVUFGTjtBQUdaQyxxQkFBT1QsTUFBTVMsS0FIRDtBQUlaQyx1QkFBU1YsTUFBTVUsT0FKSDtBQUtaQyx1QkFBU1gsTUFBTVcsT0FMSDtBQU1aQyxxQkFBT1osTUFBTVksS0FORDtBQU9aQyxvQkFBTWIsTUFBTWEsSUFQQTtBQVFaQyxvQkFBTWQsTUFBTU0sS0FSQTtBQVNaUyxxQkFBT2YsTUFBTWUsS0FURDtBQVVaQyxzQkFBUWhCLE1BQU1nQjtBQVZGLGFBQWQ7O0FBYUFoQixrQkFBTWlCLE9BQU4sSUFBaUJqQixNQUFNaUIsT0FBTixDQUFjQyxLQUFkLENBQWpCO0FBQ0QsV0FqQkQ7QUFrQklsQixjQUFNbUI7QUFsQlYsT0FEQTtBQUFBO0FBSkosR0FEZ0I7QUFBQSxDQUFsQjs7QUE2QkFwQixVQUFVcUIsU0FBVixHQUFzQjtBQUNwQmpCLGFBQVdrQixvQkFBVUMsSUFERDtBQUVwQmYsUUFBTWMsb0JBQVVFLE1BRkk7QUFHcEJmLGNBQVlhLG9CQUFVRyxJQUhGO0FBSXBCZixTQUFPWSxvQkFBVUcsSUFKRztBQUtwQmQsV0FBU1csb0JBQVVHLElBTEM7QUFNcEJiLFdBQVNVLG9CQUFVRyxJQU5DO0FBT3BCWixTQUFPUyxvQkFBVUksTUFQRztBQVFwQlosUUFBTVEsb0JBQVVJLE1BUkk7QUFTcEJuQixTQUFPZSxvQkFBVUUsTUFURztBQVVwQlIsU0FBT00sb0JBQVVLLFNBQVYsQ0FBb0IsQ0FBQ0wsb0JBQVVNLEdBQVgsRUFBZ0JOLG9CQUFVRyxJQUExQixDQUFwQixDQVZhO0FBV3BCUixVQUFRSyxvQkFBVUk7QUFYRSxDQUF0Qjs7a0JBY2UxQixTIiwiZmlsZSI6IlNheUJ1dHRvbi5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBQcm9wVHlwZXMgZnJvbSAncHJvcC10eXBlcyc7XG5pbXBvcnQgUmVhY3QgZnJvbSAncmVhY3QnO1xuXG5pbXBvcnQgQ29udGV4dCBmcm9tICcuL0NvbnRleHQnO1xuXG5jb25zdCBTYXlCdXR0b24gPSBwcm9wcyA9PlxuICA8Q29udGV4dC5Db25zdW1lclxuICAgIHNwZWVjaFN5bnRoZXNpcz17IHByb3BzLnNwZWVjaFN5bnRoZXNpcyB9XG4gICAgc3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNlPXsgcHJvcHMuc3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNlIH1cbiAgPlxuICAgIHsgY29udGV4dCA9PlxuICAgICAgPGJ1dHRvbiBvbkNsaWNrPXsgZXZlbnQgPT4ge1xuICAgICAgICBwcm9wcy5leGNsdXNpdmUgJiYgY29udGV4dC5jYW5jZWwoKTtcblxuICAgICAgICBjb250ZXh0LnNwZWFrKHtcbiAgICAgICAgICBsYW5nOiBwcm9wcy5sYW5nLFxuICAgICAgICAgIG9uQm91bmRhcnk6IHByb3BzLm9uQm91bmRhcnksXG4gICAgICAgICAgb25FbmQ6IHByb3BzLm9uRW5kLFxuICAgICAgICAgIG9uRXJyb3I6IHByb3BzLm9uRXJyb3IsXG4gICAgICAgICAgb25TdGFydDogcHJvcHMub25TdGFydCxcbiAgICAgICAgICBwaXRjaDogcHJvcHMucGl0Y2gsXG4gICAgICAgICAgcmF0ZTogcHJvcHMucmF0ZSxcbiAgICAgICAgICB0ZXh0OiBwcm9wcy5zcGVhayxcbiAgICAgICAgICB2b2ljZTogcHJvcHMudm9pY2UsXG4gICAgICAgICAgdm9sdW1lOiBwcm9wcy52b2x1bWVcbiAgICAgICAgfSk7XG5cbiAgICAgICAgcHJvcHMub25DbGljayAmJiBwcm9wcy5vbkNsaWNrKGV2ZW50KTtcbiAgICAgIH0gfT5cbiAgICAgICAgeyBwcm9wcy5jaGlsZHJlbiB9XG4gICAgICA8L2J1dHRvbj5cbiAgICB9XG4gIDwvQ29udGV4dC5Db25zdW1lcj5cblxuU2F5QnV0dG9uLnByb3BUeXBlcyA9IHtcbiAgZXhjbHVzaXZlOiBQcm9wVHlwZXMuYm9vbCxcbiAgbGFuZzogUHJvcFR5cGVzLnN0cmluZyxcbiAgb25Cb3VuZGFyeTogUHJvcFR5cGVzLmZ1bmMsXG4gIG9uRW5kOiBQcm9wVHlwZXMuZnVuYyxcbiAgb25FcnJvcjogUHJvcFR5cGVzLmZ1bmMsXG4gIG9uU3RhcnQ6IFByb3BUeXBlcy5mdW5jLFxuICBwaXRjaDogUHJvcFR5cGVzLm51bWJlcixcbiAgcmF0ZTogUHJvcFR5cGVzLm51bWJlcixcbiAgc3BlYWs6IFByb3BUeXBlcy5zdHJpbmcsXG4gIHZvaWNlOiBQcm9wVHlwZXMub25lT2ZUeXBlKFtQcm9wVHlwZXMuYW55LCBQcm9wVHlwZXMuZnVuY10pLFxuICB2b2x1bWU6IFByb3BUeXBlcy5udW1iZXJcbn07XG5cbmV4cG9ydCBkZWZhdWx0IFNheUJ1dHRvbjtcbiJdfQ== |
@@ -7,4 +7,22 @@ 'use strict'; | ||
var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }(); | ||
var _getPrototypeOf = require('babel-runtime/core-js/object/get-prototype-of'); | ||
var _getPrototypeOf2 = _interopRequireDefault(_getPrototypeOf); | ||
var _classCallCheck2 = require('babel-runtime/helpers/classCallCheck'); | ||
var _classCallCheck3 = _interopRequireDefault(_classCallCheck2); | ||
var _createClass2 = require('babel-runtime/helpers/createClass'); | ||
var _createClass3 = _interopRequireDefault(_createClass2); | ||
var _possibleConstructorReturn2 = require('babel-runtime/helpers/possibleConstructorReturn'); | ||
var _possibleConstructorReturn3 = _interopRequireDefault(_possibleConstructorReturn2); | ||
var _inherits2 = require('babel-runtime/helpers/inherits'); | ||
var _inherits3 = _interopRequireDefault(_inherits2); | ||
var _propTypes = require('prop-types'); | ||
@@ -24,15 +42,9 @@ | ||
function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } | ||
function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; } | ||
function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; } | ||
var Say = function (_React$Component) { | ||
_inherits(Say, _React$Component); | ||
(0, _inherits3.default)(Say, _React$Component); | ||
function Say(props) { | ||
_classCallCheck(this, Say); | ||
(0, _classCallCheck3.default)(this, Say); | ||
var _this = _possibleConstructorReturn(this, (Say.__proto__ || Object.getPrototypeOf(Say)).call(this, props)); | ||
var _this = (0, _possibleConstructorReturn3.default)(this, (Say.__proto__ || (0, _getPrototypeOf2.default)(Say)).call(this, props)); | ||
@@ -43,8 +55,11 @@ _this.handleBoundary = _this.handleBoundary.bind(_this); | ||
_this.handleStart = _this.handleStart.bind(_this); | ||
_this.state = { uniqueID: Date.now() + Math.random() }; | ||
return _this; | ||
} | ||
_createClass(Say, [{ | ||
(0, _createClass3.default)(Say, [{ | ||
key: 'componentWillUnmount', | ||
value: function componentWillUnmount() { | ||
// TODO: Should dequeue self on unmount | ||
this.unmounted = true; | ||
@@ -83,2 +98,3 @@ } | ||
var _props = this.props, | ||
exclusive = _props.exclusive, | ||
lang = _props.lang, | ||
@@ -90,2 +106,3 @@ pitch = _props.pitch, | ||
volume = _props.volume; | ||
var uniqueID = this.state.uniqueID; | ||
@@ -97,3 +114,5 @@ | ||
function (context) { | ||
return context.speak({ | ||
exclusive && context.cancel(); | ||
context.speak({ | ||
lang: lang, | ||
@@ -107,5 +126,8 @@ onBoundary: _this2.handleBoundary, | ||
text: text, | ||
uniqueID: uniqueID, | ||
voice: voice, | ||
volume: volume | ||
}); | ||
return false; | ||
} | ||
@@ -115,3 +137,2 @@ ); | ||
}]); | ||
return Say; | ||
@@ -124,2 +145,3 @@ }(_react2.default.Component); | ||
Say.propTypes = { | ||
exclusive: _propTypes2.default.bool, | ||
lang: _propTypes2.default.string, | ||
@@ -136,2 +158,2 @@ pitch: _propTypes2.default.number, | ||
}; | ||
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9TYXlQcmltaXRpdmUuanMiXSwibmFtZXMiOlsiU2F5IiwicHJvcHMiLCJoYW5kbGVCb3VuZGFyeSIsImJpbmQiLCJoYW5kbGVFbmQiLCJoYW5kbGVFcnJvciIsImhhbmRsZVN0YXJ0IiwidW5tb3VudGVkIiwiZXZlbnQiLCJvbkJvdW5kYXJ5Iiwib25FbmQiLCJvbkVycm9yIiwib25TdGFydCIsIm5leHRQcm9wcyIsInNwZWFrIiwibGFuZyIsInBpdGNoIiwicmF0ZSIsInRleHQiLCJ2b2ljZSIsInZvbHVtZSIsImNvbnRleHQiLCJSZWFjdCIsIkNvbXBvbmVudCIsInByb3BUeXBlcyIsIlByb3BUeXBlcyIsInN0cmluZyIsIm51bWJlciIsImZ1bmMiLCJvbmVPZlR5cGUiLCJhbnkiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7O0FBQUE7Ozs7QUFDQTs7OztBQUVBOzs7Ozs7Ozs7Ozs7SUFFcUJBLEc7OztBQUNuQixlQUFZQyxLQUFaLEVBQW1CO0FBQUE7O0FBQUEsMEdBQ1hBLEtBRFc7O0FBR2pCLFVBQUtDLGNBQUwsR0FBc0IsTUFBS0EsY0FBTCxDQUFvQkMsSUFBcEIsT0FBdEI7QUFDQSxVQUFLQyxTQUFMLEdBQWlCLE1BQUtBLFNBQUwsQ0FBZUQsSUFBZixPQUFqQjtBQUNBLFVBQUtFLFdBQUwsR0FBbUIsTUFBS0EsV0FBTCxDQUFpQkYsSUFBakIsT0FBbkI7QUFDQSxVQUFLRyxXQUFMLEdBQW1CLE1BQUtBLFdBQUwsQ0FBaUJILElBQWpCLE9BQW5CO0FBTmlCO0FBT2xCOzs7OzJDQUVzQjtBQUNyQixXQUFLSSxTQUFMLEdBQWlCLElBQWpCO0FBQ0Q7OzttQ0FFY0MsSyxFQUFPO0FBQ3BCLE9BQUMsS0FBS0QsU0FBTixJQUFtQixLQUFLTixLQUFMLENBQVdRLFVBQTlCLElBQTRDLEtBQUtSLEtBQUwsQ0FBV1EsVUFBWCxDQUFzQkQsS0FBdEIsQ0FBNUM7QUFDRDs7OzhCQUVTQSxLLEVBQU87QUFDZixPQUFDLEtBQUtELFNBQU4sSUFBbUIsS0FBS04sS0FBTCxDQUFXUyxLQUE5QixJQUF1QyxLQUFLVCxLQUFMLENBQVdTLEtBQVgsQ0FBaUJGLEtBQWpCLENBQXZDO0FBQ0Q7OztnQ0FFV0EsSyxFQUFPO0FBQ2pCLE9BQUMsS0FBS0QsU0FBTixJQUFtQixLQUFLTixLQUFMLENBQVdVLE9BQTlCLElBQXlDLEtBQUtWLEtBQUwsQ0FBV1UsT0FBWCxDQUFtQkgsS0FBbkIsQ0FBekM7QUFDRDs7O2dDQUVXQSxLLEVBQU87QUFDakIsT0FBQyxLQUFLRCxTQUFOLElBQW1CLEtBQUtOLEtBQUwsQ0FBV1csT0FBOUIsSUFBeUMsS0FBS1gsS0FBTCxDQUFXVyxPQUFYLENBQW1CSixLQUFuQixDQUF6QztBQUNEOzs7MENBRXFCSyxTLEVBQVc7QUFDL0IsYUFBT0EsVUFBVUMsS0FBVixLQUFvQixLQUFLYixLQUFMLENBQVdhLEtBQXRDO0FBQ0Q7Ozs2QkFFUTtBQUFBOztBQUFBLG1CQUNtRCxLQUFLYixLQUR4RDtBQUFBLFVBQ0NjLElBREQsVUFDQ0EsSUFERDtBQUFBLFVBQ09DLEtBRFAsVUFDT0EsS0FEUDtBQUFBLFVBQ2NDLElBRGQsVUFDY0EsSUFEZDtBQUFBLFVBQzJCQyxJQUQzQixVQUNvQkosS0FEcEI7QUFBQSxVQUNpQ0ssS0FEakMsVUFDaUNBLEtBRGpDO0FBQUEsVUFDd0NDLE1BRHhDLFVBQ3dDQSxNQUR4Qzs7O0FBR1AsYUFDRTtBQUFDLHlCQUFELENBQVMsUUFBVDtBQUFBO0FBQ0k7QUFBQSxpQkFBV0MsUUFBUVAsS0FBUixDQUFjO0FBQ3ZCQyxzQkFEdUI7QUFFdkJOLHdCQUFZLE9BQUtQLGNBRk07QUFHdkJRLG1CQUFPLE9BQUtOLFNBSFc7QUFJdkJPLHFCQUFTLE9BQUtOLFdBSlM7QUFLdkJPLHFCQUFTLE9BQUtOLFdBTFM7QUFNdkJVLHdCQU51QjtBQU92QkMsc0JBUHVCO0FBUXZCQyxzQkFSdUI7QUFTdkJDLHdCQVR1QjtBQVV2QkM7QUFWdUIsV0FBZCxDQUFYO0FBQUE7QUFESixPQURGO0FBaUJEOzs7O0VBdEQ4QkUsZ0JBQU1DLFM7O2tCQUFsQnZCLEc7OztBQXlEckJBLElBQUl3QixTQUFKLEdBQWdCO0FBQ2RULFFBQU1VLG9CQUFVQyxNQURGO0FBRWRWLFNBQU9TLG9CQUFVRSxNQUZIO0FBR2RWLFFBQU1RLG9CQUFVRSxNQUhGO0FBSWRsQixjQUFZZ0Isb0JBQVVHLElBSlI7QUFLZGxCLFNBQU9lLG9CQUFVRyxJQUxIO0FBTWRqQixXQUFTYyxvQkFBVUcsSUFOTDtBQU9kaEIsV0FBU2Esb0JBQVVHLElBUEw7QUFRZGQsU0FBT1csb0JBQVVDLE1BUkg7QUFTZFAsU0FBT00sb0JBQVVJLFNBQVYsQ0FBb0IsQ0FBQ0osb0JBQVVLLEdBQVgsRUFBZ0JMLG9CQUFVRyxJQUExQixDQUFwQixDQVRPO0FBVWRSLFVBQVFLLG9CQUFVRTtBQVZKLENBQWhCIiwiZmlsZSI6IlNheVByaW1pdGl2ZS5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBQcm9wVHlwZXMgZnJvbSAncHJvcC10eXBlcyc7XG5pbXBvcnQgUmVhY3QgZnJvbSAncmVhY3QnO1xuXG5pbXBvcnQgQ29udGV4dCBmcm9tICcuL0NvbnRleHQnO1xuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBTYXkgZXh0ZW5kcyBSZWFjdC5Db21wb25lbnQge1xuICBjb25zdHJ1Y3Rvcihwcm9wcykge1xuICAgIHN1cGVyKHByb3BzKTtcblxuICAgIHRoaXMuaGFuZGxlQm91bmRhcnkgPSB0aGlzLmhhbmRsZUJvdW5kYXJ5LmJpbmQodGhpcyk7XG4gICAgdGhpcy5oYW5kbGVFbmQgPSB0aGlzLmhhbmRsZUVuZC5iaW5kKHRoaXMpO1xuICAgIHRoaXMuaGFuZGxlRXJyb3IgPSB0aGlzLmhhbmRsZUVycm9yLmJpbmQodGhpcyk7XG4gICAgdGhpcy5oYW5kbGVTdGFydCA9IHRoaXMuaGFuZGxlU3RhcnQuYmluZCh0aGlzKTtcbiAgfVxuXG4gIGNvbXBvbmVudFdpbGxVbm1vdW50KCkge1xuICAgIHRoaXMudW5tb3VudGVkID0gdHJ1ZTtcbiAgfVxuXG4gIGhhbmRsZUJvdW5kYXJ5KGV2ZW50KSB7XG4gICAgIXRoaXMudW5tb3VudGVkICYmIHRoaXMucHJvcHMub25Cb3VuZGFyeSAmJiB0aGlzLnByb3BzLm9uQm91bmRhcnkoZXZlbnQpO1xuICB9XG5cbiAgaGFuZGxlRW5kKGV2ZW50KSB7XG4gICAgIXRoaXMudW5tb3VudGVkICYmIHRoaXMucHJvcHMub25FbmQgJiYgdGhpcy5wcm9wcy5vbkVuZChldmVudCk7XG4gIH1cblxuICBoYW5kbGVFcnJvcihldmVudCkge1xuICAgICF0aGlzLnVubW91bnRlZCAmJiB0aGlzLnByb3BzLm9uRXJyb3IgJiYgdGhpcy5wcm9wcy5vbkVycm9yKGV2ZW50KTtcbiAgfVxuXG4gIGhhbmRsZVN0YXJ0KGV2ZW50KSB7XG4gICAgIXRoaXMudW5tb3VudGVkICYmIHRoaXMucHJvcHMub25TdGFydCAmJiB0aGlzLnByb3BzLm9uU3RhcnQoZXZlbnQpO1xuICB9XG5cbiAgc2hvdWxkQ29tcG9uZW50VXBkYXRlKG5leHRQcm9wcykge1xuICAgIHJldHVybiBuZXh0UHJvcHMuc3BlYWsgIT09IHRoaXMucHJvcHMuc3BlYWs7XG4gIH1cblxuICByZW5kZXIoKSB7XG4gICAgY29uc3QgeyBsYW5nLCBwaXRjaCwgcmF0ZSwgc3BlYWs6IHRleHQsIHZvaWNlLCB2b2x1bWUgfSA9IHRoaXMucHJvcHM7XG5cbiAgICByZXR1cm4gKFxuICAgICAgPENvbnRleHQuQ29uc3VtZXI+XG4gICAgICAgIHsgY29udGV4dCA9PiBjb250ZXh0LnNwZWFrKHtcbiAgICAgICAgICAgIGxhbmcsXG4gICAgICAgICAgICBvbkJvdW5kYXJ5OiB0aGlzLmhhbmRsZUJvdW5kYXJ5LFxuICAgICAgICAgICAgb25FbmQ6IHRoaXMuaGFuZGxlRW5kLFxuICAgICAgICAgICAgb25FcnJvcjogdGhpcy5oYW5kbGVFcnJvcixcbiAgICAgICAgICAgIG9uU3RhcnQ6IHRoaXMuaGFuZGxlU3RhcnQsXG4gICAgICAgICAgICBwaXRjaCxcbiAgICAgICAgICAgIHJhdGUsXG4gICAgICAgICAgICB0ZXh0LFxuICAgICAgICAgICAgdm9pY2UsXG4gICAgICAgICAgICB2b2x1bWVcbiAgICAgICAgICB9KVxuICAgICAgICB9XG4gICAgICA8L0NvbnRleHQuQ29uc3VtZXI+XG4gICAgKTtcbiAgfVxufVxuXG5TYXkucHJvcFR5cGVzID0ge1xuICBsYW5nOiBQcm9wVHlwZXMuc3RyaW5nLFxuICBwaXRjaDogUHJvcFR5cGVzLm51bWJlcixcbiAgcmF0ZTogUHJvcFR5cGVzLm51bWJlcixcbiAgb25Cb3VuZGFyeTogUHJvcFR5cGVzLmZ1bmMsXG4gIG9uRW5kOiBQcm9wVHlwZXMuZnVuYyxcbiAgb25FcnJvcjogUHJvcFR5cGVzLmZ1bmMsXG4gIG9uU3RhcnQ6IFByb3BUeXBlcy5mdW5jLFxuICBzcGVhazogUHJvcFR5cGVzLnN0cmluZyxcbiAgdm9pY2U6IFByb3BUeXBlcy5vbmVPZlR5cGUoW1Byb3BUeXBlcy5hbnksIFByb3BUeXBlcy5mdW5jXSksXG4gIHZvbHVtZTogUHJvcFR5cGVzLm51bWJlclxufTtcbiJdfQ== | ||
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9TYXlQcmltaXRpdmUuanMiXSwibmFtZXMiOlsiU2F5IiwicHJvcHMiLCJoYW5kbGVCb3VuZGFyeSIsImJpbmQiLCJoYW5kbGVFbmQiLCJoYW5kbGVFcnJvciIsImhhbmRsZVN0YXJ0Iiwic3RhdGUiLCJ1bmlxdWVJRCIsIkRhdGUiLCJub3ciLCJNYXRoIiwicmFuZG9tIiwidW5tb3VudGVkIiwiZXZlbnQiLCJvbkJvdW5kYXJ5Iiwib25FbmQiLCJvbkVycm9yIiwib25TdGFydCIsIm5leHRQcm9wcyIsInNwZWFrIiwiZXhjbHVzaXZlIiwibGFuZyIsInBpdGNoIiwicmF0ZSIsInRleHQiLCJ2b2ljZSIsInZvbHVtZSIsImNvbnRleHQiLCJjYW5jZWwiLCJSZWFjdCIsIkNvbXBvbmVudCIsInByb3BUeXBlcyIsIlByb3BUeXBlcyIsImJvb2wiLCJzdHJpbmciLCJudW1iZXIiLCJmdW5jIiwib25lT2ZUeXBlIiwiYW55Il0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBOzs7O0FBQ0E7Ozs7QUFFQTs7Ozs7O0lBRXFCQSxHOzs7QUFDbkIsZUFBWUMsS0FBWixFQUFtQjtBQUFBOztBQUFBLGdJQUNYQSxLQURXOztBQUdqQixVQUFLQyxjQUFMLEdBQXNCLE1BQUtBLGNBQUwsQ0FBb0JDLElBQXBCLE9BQXRCO0FBQ0EsVUFBS0MsU0FBTCxHQUFpQixNQUFLQSxTQUFMLENBQWVELElBQWYsT0FBakI7QUFDQSxVQUFLRSxXQUFMLEdBQW1CLE1BQUtBLFdBQUwsQ0FBaUJGLElBQWpCLE9BQW5CO0FBQ0EsVUFBS0csV0FBTCxHQUFtQixNQUFLQSxXQUFMLENBQWlCSCxJQUFqQixPQUFuQjs7QUFFQSxVQUFLSSxLQUFMLEdBQWEsRUFBRUMsVUFBVUMsS0FBS0MsR0FBTCxLQUFhQyxLQUFLQyxNQUFMLEVBQXpCLEVBQWI7QUFSaUI7QUFTbEI7Ozs7MkNBRXNCO0FBQ3JCO0FBQ0EsV0FBS0MsU0FBTCxHQUFpQixJQUFqQjtBQUNEOzs7bUNBRWNDLEssRUFBTztBQUNwQixPQUFDLEtBQUtELFNBQU4sSUFBbUIsS0FBS1osS0FBTCxDQUFXYyxVQUE5QixJQUE0QyxLQUFLZCxLQUFMLENBQVdjLFVBQVgsQ0FBc0JELEtBQXRCLENBQTVDO0FBQ0Q7Ozs4QkFFU0EsSyxFQUFPO0FBQ2YsT0FBQyxLQUFLRCxTQUFOLElBQW1CLEtBQUtaLEtBQUwsQ0FBV2UsS0FBOUIsSUFBdUMsS0FBS2YsS0FBTCxDQUFXZSxLQUFYLENBQWlCRixLQUFqQixDQUF2QztBQUNEOzs7Z0NBRVdBLEssRUFBTztBQUNqQixPQUFDLEtBQUtELFNBQU4sSUFBbUIsS0FBS1osS0FBTCxDQUFXZ0IsT0FBOUIsSUFBeUMsS0FBS2hCLEtBQUwsQ0FBV2dCLE9BQVgsQ0FBbUJILEtBQW5CLENBQXpDO0FBQ0Q7OztnQ0FFV0EsSyxFQUFPO0FBQ2pCLE9BQUMsS0FBS0QsU0FBTixJQUFtQixLQUFLWixLQUFMLENBQVdpQixPQUE5QixJQUF5QyxLQUFLakIsS0FBTCxDQUFXaUIsT0FBWCxDQUFtQkosS0FBbkIsQ0FBekM7QUFDRDs7OzBDQUVxQkssUyxFQUFXO0FBQy9CLGFBQU9BLFVBQVVDLEtBQVYsS0FBb0IsS0FBS25CLEtBQUwsQ0FBV21CLEtBQXRDO0FBQ0Q7Ozs2QkFFUTtBQUFBOztBQUFBLG1CQUM4RCxLQUFLbkIsS0FEbkU7QUFBQSxVQUNDb0IsU0FERCxVQUNDQSxTQUREO0FBQUEsVUFDWUMsSUFEWixVQUNZQSxJQURaO0FBQUEsVUFDa0JDLEtBRGxCLFVBQ2tCQSxLQURsQjtBQUFBLFVBQ3lCQyxJQUR6QixVQUN5QkEsSUFEekI7QUFBQSxVQUNzQ0MsSUFEdEMsVUFDK0JMLEtBRC9CO0FBQUEsVUFDNENNLEtBRDVDLFVBQzRDQSxLQUQ1QztBQUFBLFVBQ21EQyxNQURuRCxVQUNtREEsTUFEbkQ7QUFBQSxVQUVDbkIsUUFGRCxHQUVjLEtBQUtELEtBRm5CLENBRUNDLFFBRkQ7OztBQUlQLGFBQ0U7QUFBQyx5QkFBRCxDQUFTLFFBQVQ7QUFBQTtBQUNJLDJCQUFXO0FBQ1RhLHVCQUFhTyxRQUFRQyxNQUFSLEVBQWI7O0FBRUFELGtCQUFRUixLQUFSLENBQWM7QUFDWkUsc0JBRFk7QUFFWlAsd0JBQVksT0FBS2IsY0FGTDtBQUdaYyxtQkFBTyxPQUFLWixTQUhBO0FBSVphLHFCQUFTLE9BQUtaLFdBSkY7QUFLWmEscUJBQVMsT0FBS1osV0FMRjtBQU1aaUIsd0JBTlk7QUFPWkMsc0JBUFk7QUFRWkMsc0JBUlk7QUFTWmpCLDhCQVRZO0FBVVprQix3QkFWWTtBQVdaQztBQVhZLFdBQWQ7O0FBY0EsaUJBQU8sS0FBUDtBQUNIO0FBbkJILE9BREY7QUF1QkQ7OztFQWhFOEJHLGdCQUFNQyxTOztrQkFBbEIvQixHOzs7QUFtRXJCQSxJQUFJZ0MsU0FBSixHQUFnQjtBQUNkWCxhQUFXWSxvQkFBVUMsSUFEUDtBQUVkWixRQUFNVyxvQkFBVUUsTUFGRjtBQUdkWixTQUFPVSxvQkFBVUcsTUFISDtBQUlkWixRQUFNUyxvQkFBVUcsTUFKRjtBQUtkckIsY0FBWWtCLG9CQUFVSSxJQUxSO0FBTWRyQixTQUFPaUIsb0JBQVVJLElBTkg7QUFPZHBCLFdBQVNnQixvQkFBVUksSUFQTDtBQVFkbkIsV0FBU2Usb0JBQVVJLElBUkw7QUFTZGpCLFNBQU9hLG9CQUFVRSxNQVRIO0FBVWRULFNBQU9PLG9CQUFVSyxTQUFWLENBQW9CLENBQUNMLG9CQUFVTSxHQUFYLEVBQWdCTixvQkFBVUksSUFBMUIsQ0FBcEIsQ0FWTztBQVdkVixVQUFRTSxvQkFBVUc7QUFYSixDQUFoQiIsImZpbGUiOiJTYXlQcmltaXRpdmUuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgUHJvcFR5cGVzIGZyb20gJ3Byb3AtdHlwZXMnO1xuaW1wb3J0IFJlYWN0IGZyb20gJ3JlYWN0JztcblxuaW1wb3J0IENvbnRleHQgZnJvbSAnLi9Db250ZXh0JztcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgU2F5IGV4dGVuZHMgUmVhY3QuQ29tcG9uZW50IHtcbiAgY29uc3RydWN0b3IocHJvcHMpIHtcbiAgICBzdXBlcihwcm9wcyk7XG5cbiAgICB0aGlzLmhhbmRsZUJvdW5kYXJ5ID0gdGhpcy5oYW5kbGVCb3VuZGFyeS5iaW5kKHRoaXMpO1xuICAgIHRoaXMuaGFuZGxlRW5kID0gdGhpcy5oYW5kbGVFbmQuYmluZCh0aGlzKTtcbiAgICB0aGlzLmhhbmRsZUVycm9yID0gdGhpcy5oYW5kbGVFcnJvci5iaW5kKHRoaXMpO1xuICAgIHRoaXMuaGFuZGxlU3RhcnQgPSB0aGlzLmhhbmRsZVN0YXJ0LmJpbmQodGhpcyk7XG5cbiAgICB0aGlzLnN0YXRlID0geyB1bmlxdWVJRDogRGF0ZS5ub3coKSArIE1hdGgucmFuZG9tKCkgfTtcbiAgfVxuXG4gIGNvbXBvbmVudFdpbGxVbm1vdW50KCkge1xuICAgIC8vIFRPRE86IFNob3VsZCBkZXF1ZXVlIHNlbGYgb24gdW5tb3VudFxuICAgIHRoaXMudW5tb3VudGVkID0gdHJ1ZTtcbiAgfVxuXG4gIGhhbmRsZUJvdW5kYXJ5KGV2ZW50KSB7XG4gICAgIXRoaXMudW5tb3VudGVkICYmIHRoaXMucHJvcHMub25Cb3VuZGFyeSAmJiB0aGlzLnByb3BzLm9uQm91bmRhcnkoZXZlbnQpO1xuICB9XG5cbiAgaGFuZGxlRW5kKGV2ZW50KSB7XG4gICAgIXRoaXMudW5tb3VudGVkICYmIHRoaXMucHJvcHMub25FbmQgJiYgdGhpcy5wcm9wcy5vbkVuZChldmVudCk7XG4gIH1cblxuICBoYW5kbGVFcnJvcihldmVudCkge1xuICAgICF0aGlzLnVubW91bnRlZCAmJiB0aGlzLnByb3BzLm9uRXJyb3IgJiYgdGhpcy5wcm9wcy5vbkVycm9yKGV2ZW50KTtcbiAgfVxuXG4gIGhhbmRsZVN0YXJ0KGV2ZW50KSB7XG4gICAgIXRoaXMudW5tb3VudGVkICYmIHRoaXMucHJvcHMub25TdGFydCAmJiB0aGlzLnByb3BzLm9uU3RhcnQoZXZlbnQpO1xuICB9XG5cbiAgc2hvdWxkQ29tcG9uZW50VXBkYXRlKG5leHRQcm9wcykge1xuICAgIHJldHVybiBuZXh0UHJvcHMuc3BlYWsgIT09IHRoaXMucHJvcHMuc3BlYWs7XG4gIH1cblxuICByZW5kZXIoKSB7XG4gICAgY29uc3QgeyBleGNsdXNpdmUsIGxhbmcsIHBpdGNoLCByYXRlLCBzcGVhazogdGV4dCwgdm9pY2UsIHZvbHVtZSB9ID0gdGhpcy5wcm9wcztcbiAgICBjb25zdCB7IHVuaXF1ZUlEIH0gPSB0aGlzLnN0YXRlO1xuXG4gICAgcmV0dXJuIChcbiAgICAgIDxDb250ZXh0LkNvbnN1bWVyPlxuICAgICAgICB7IGNvbnRleHQgPT4ge1xuICAgICAgICAgICAgZXhjbHVzaXZlICYmIGNvbnRleHQuY2FuY2VsKCk7XG5cbiAgICAgICAgICAgIGNvbnRleHQuc3BlYWsoe1xuICAgICAgICAgICAgICBsYW5nLFxuICAgICAgICAgICAgICBvbkJvdW5kYXJ5OiB0aGlzLmhhbmRsZUJvdW5kYXJ5LFxuICAgICAgICAgICAgICBvbkVuZDogdGhpcy5oYW5kbGVFbmQsXG4gICAgICAgICAgICAgIG9uRXJyb3I6IHRoaXMuaGFuZGxlRXJyb3IsXG4gICAgICAgICAgICAgIG9uU3RhcnQ6IHRoaXMuaGFuZGxlU3RhcnQsXG4gICAgICAgICAgICAgIHBpdGNoLFxuICAgICAgICAgICAgICByYXRlLFxuICAgICAgICAgICAgICB0ZXh0LFxuICAgICAgICAgICAgICB1bmlxdWVJRCxcbiAgICAgICAgICAgICAgdm9pY2UsXG4gICAgICAgICAgICAgIHZvbHVtZVxuICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfSB9XG4gICAgICA8L0NvbnRleHQuQ29uc3VtZXI+XG4gICAgKTtcbiAgfVxufVxuXG5TYXkucHJvcFR5cGVzID0ge1xuICBleGNsdXNpdmU6IFByb3BUeXBlcy5ib29sLFxuICBsYW5nOiBQcm9wVHlwZXMuc3RyaW5nLFxuICBwaXRjaDogUHJvcFR5cGVzLm51bWJlcixcbiAgcmF0ZTogUHJvcFR5cGVzLm51bWJlcixcbiAgb25Cb3VuZGFyeTogUHJvcFR5cGVzLmZ1bmMsXG4gIG9uRW5kOiBQcm9wVHlwZXMuZnVuYyxcbiAgb25FcnJvcjogUHJvcFR5cGVzLmZ1bmMsXG4gIG9uU3RhcnQ6IFByb3BUeXBlcy5mdW5jLFxuICBzcGVhazogUHJvcFR5cGVzLnN0cmluZyxcbiAgdm9pY2U6IFByb3BUeXBlcy5vbmVPZlR5cGUoW1Byb3BUeXBlcy5hbnksIFByb3BUeXBlcy5mdW5jXSksXG4gIHZvbHVtZTogUHJvcFR5cGVzLm51bWJlclxufTtcbiJdfQ== |
{ | ||
"name": "react-say", | ||
"version": "1.0.0", | ||
"version": "1.0.1-master.45e468a", | ||
"description": "A React component that synthesis text into speech using Web Speech API", | ||
"keywords": [], | ||
"keywords": [ | ||
"react", | ||
"speak", | ||
"speech synthesis", | ||
"speechsynthesis", | ||
"text to speech", | ||
"tts", | ||
"utterance", | ||
"web speech", | ||
"webspeech" | ||
], | ||
"main": "lib/index.js", | ||
@@ -11,3 +21,3 @@ "files": [ | ||
"scripts": { | ||
"bootstrap": "lerna bootstrap --hoist", | ||
"bootstrap": "lerna bootstrap", | ||
"build": "lerna run build", | ||
@@ -26,22 +36,14 @@ "test": "lerna run test" | ||
"homepage": "https://github.com/compulim/react-say#readme", | ||
"devDependencies": { | ||
"babel-cli": "^6.26.0", | ||
"babel-core": "^6.26.3", | ||
"babel-env": "^2.4.1", | ||
"babel-plugin-transform-object-rest-spread": "^6.26.0", | ||
"babel-preset-stage-3": "^6.24.1", | ||
"jest": "^22.4.4", | ||
"lerna": "^2.11.0", | ||
"react": "^16.4.1", | ||
"react-dom": "^16.4.1", | ||
"react-scripts": "1.1.4", | ||
"rimraf": "^2.6.2" | ||
}, | ||
"dependencies": { | ||
"classnames": "^2.2.6", | ||
"glamor": "^2.20.40" | ||
"event-as-promise": "^1.0.3", | ||
"glamor": "^2.20.40", | ||
"memoize-one": "^4.0.0" | ||
}, | ||
"peerDependencies": { | ||
"react": "^16.4.1" | ||
}, | ||
"devDependencies": { | ||
"lerna": "^2.11.0" | ||
} | ||
} |
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
No v1
QualityPackage is not semver >=1. This means it is not stable and does not support ^ ranges.
Found 1 instance in 1 package
82213
1
15
815
5
1
1
+ Addedevent-as-promise@^1.0.3
+ Addedmemoize-one@^4.0.0
+ Addedevent-as-promise@1.1.0(transitive)
+ Addedmemoize-one@4.1.0(transitive)