Comparing version 0.0.1-master.f9fa4b6 to 1.0.0
@@ -8,3 +8,5 @@ # Changelog | ||
## [Unreleased] | ||
## [1.0.0] - 2018-07-09 | ||
### Added | ||
- Initial release |
@@ -32,9 +32,40 @@ 'use strict'; | ||
function Say() { | ||
function Say(props) { | ||
_classCallCheck(this, Say); | ||
return _possibleConstructorReturn(this, (Say.__proto__ || Object.getPrototypeOf(Say)).apply(this, arguments)); | ||
var _this = _possibleConstructorReturn(this, (Say.__proto__ || Object.getPrototypeOf(Say)).call(this, props)); | ||
_this.handleBoundary = _this.handleBoundary.bind(_this); | ||
_this.handleEnd = _this.handleEnd.bind(_this); | ||
_this.handleError = _this.handleError.bind(_this); | ||
_this.handleStart = _this.handleStart.bind(_this); | ||
return _this; | ||
} | ||
_createClass(Say, [{ | ||
key: 'componentWillUnmount', | ||
value: function componentWillUnmount() { | ||
this.unmounted = true; | ||
} | ||
}, { | ||
key: 'handleBoundary', | ||
value: function handleBoundary(event) { | ||
!this.unmounted && this.props.onBoundary && this.props.onBoundary(event); | ||
} | ||
}, { | ||
key: 'handleEnd', | ||
value: function handleEnd(event) { | ||
!this.unmounted && this.props.onEnd && this.props.onEnd(event); | ||
} | ||
}, { | ||
key: 'handleError', | ||
value: function handleError(event) { | ||
!this.unmounted && this.props.onError && this.props.onError(event); | ||
} | ||
}, { | ||
key: 'handleStart', | ||
value: function handleStart(event) { | ||
!this.unmounted && this.props.onStart && this.props.onStart(event); | ||
} | ||
}, { | ||
key: 'shouldComponentUpdate', | ||
@@ -47,8 +78,6 @@ value: function shouldComponentUpdate(nextProps) { | ||
value: function render() { | ||
var _this2 = this; | ||
var _props = this.props, | ||
lang = _props.lang, | ||
onBoundary = _props.onBoundary, | ||
onEnd = _props.onEnd, | ||
onError = _props.onError, | ||
onStart = _props.onStart, | ||
pitch = _props.pitch, | ||
@@ -65,3 +94,14 @@ rate = _props.rate, | ||
function (context) { | ||
return context.speak({ lang: lang, onBoundary: onBoundary, onEnd: onEnd, onError: onError, onStart: onStart, pitch: pitch, rate: rate, text: text, voice: voice, volume: volume }); | ||
return context.speak({ | ||
lang: lang, | ||
onBoundary: _this2.handleBoundary, | ||
onEnd: _this2.handleEnd, | ||
onError: _this2.handleError, | ||
onStart: _this2.handleStart, | ||
pitch: pitch, | ||
rate: rate, | ||
text: text, | ||
voice: voice, | ||
volume: volume | ||
}); | ||
} | ||
@@ -90,2 +130,2 @@ ); | ||
}; | ||
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9TYXlQcmltaXRpdmUuanMiXSwibmFtZXMiOlsiU2F5IiwibmV4dFByb3BzIiwic3BlYWsiLCJwcm9wcyIsImxhbmciLCJvbkJvdW5kYXJ5Iiwib25FbmQiLCJvbkVycm9yIiwib25TdGFydCIsInBpdGNoIiwicmF0ZSIsInRleHQiLCJ2b2ljZSIsInZvbHVtZSIsImNvbnRleHQiLCJSZWFjdCIsIkNvbXBvbmVudCIsInByb3BUeXBlcyIsIlByb3BUeXBlcyIsInN0cmluZyIsIm51bWJlciIsImZ1bmMiLCJvbmVPZlR5cGUiLCJhbnkiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7O0FBQUE7Ozs7QUFDQTs7OztBQUVBOzs7Ozs7Ozs7Ozs7SUFFcUJBLEc7Ozs7Ozs7Ozs7OzBDQUNHQyxTLEVBQVc7QUFDL0IsYUFBT0EsVUFBVUMsS0FBVixLQUFvQixLQUFLQyxLQUFMLENBQVdELEtBQXRDO0FBQ0Q7Ozs2QkFFUTtBQUFBLG1CQUN3RixLQUFLQyxLQUQ3RjtBQUFBLFVBQ0NDLElBREQsVUFDQ0EsSUFERDtBQUFBLFVBQ09DLFVBRFAsVUFDT0EsVUFEUDtBQUFBLFVBQ21CQyxLQURuQixVQUNtQkEsS0FEbkI7QUFBQSxVQUMwQkMsT0FEMUIsVUFDMEJBLE9BRDFCO0FBQUEsVUFDbUNDLE9BRG5DLFVBQ21DQSxPQURuQztBQUFBLFVBQzRDQyxLQUQ1QyxVQUM0Q0EsS0FENUM7QUFBQSxVQUNtREMsSUFEbkQsVUFDbURBLElBRG5EO0FBQUEsVUFDZ0VDLElBRGhFLFVBQ3lEVCxLQUR6RDtBQUFBLFVBQ3NFVSxLQUR0RSxVQUNzRUEsS0FEdEU7QUFBQSxVQUM2RUMsTUFEN0UsVUFDNkVBLE1BRDdFOzs7QUFHUCxhQUNFO0FBQUMseUJBQUQsQ0FBUyxRQUFUO0FBQUE7QUFDSTtBQUFBLGlCQUFXQyxRQUFRWixLQUFSLENBQWMsRUFBRUUsVUFBRixFQUFRQyxzQkFBUixFQUFvQkMsWUFBcEIsRUFBMkJDLGdCQUEzQixFQUFvQ0MsZ0JBQXBDLEVBQTZDQyxZQUE3QyxFQUFvREMsVUFBcEQsRUFBMERDLFVBQTFELEVBQWdFQyxZQUFoRSxFQUF1RUMsY0FBdkUsRUFBZCxDQUFYO0FBQUE7QUFESixPQURGO0FBS0Q7Ozs7RUFiOEJFLGdCQUFNQyxTOztrQkFBbEJoQixHOzs7QUFnQnJCQSxJQUFJaUIsU0FBSixHQUFnQjtBQUNkYixRQUFNYyxvQkFBVUMsTUFERjtBQUVkVixTQUFPUyxvQkFBVUUsTUFGSDtBQUdkVixRQUFNUSxvQkFBVUUsTUFIRjtBQUlkZixjQUFZYSxvQkFBVUcsSUFKUjtBQUtkZixTQUFPWSxvQkFBVUcsSUFMSDtBQU1kZCxXQUFTVyxvQkFBVUcsSUFOTDtBQU9kYixXQUFTVSxvQkFBVUcsSUFQTDtBQVFkbkIsU0FBT2dCLG9CQUFVQyxNQVJIO0FBU2RQLFNBQU9NLG9CQUFVSSxTQUFWLENBQW9CLENBQUNKLG9CQUFVSyxHQUFYLEVBQWdCTCxvQkFBVUcsSUFBMUIsQ0FBcEIsQ0FUTztBQVVkUixVQUFRSyxvQkFBVUU7QUFWSixDQUFoQiIsImZpbGUiOiJTYXlQcmltaXRpdmUuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgUHJvcFR5cGVzIGZyb20gJ3Byb3AtdHlwZXMnO1xuaW1wb3J0IFJlYWN0IGZyb20gJ3JlYWN0JztcblxuaW1wb3J0IENvbnRleHQgZnJvbSAnLi9Db250ZXh0JztcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgU2F5IGV4dGVuZHMgUmVhY3QuQ29tcG9uZW50IHtcbiAgc2hvdWxkQ29tcG9uZW50VXBkYXRlKG5leHRQcm9wcykge1xuICAgIHJldHVybiBuZXh0UHJvcHMuc3BlYWsgIT09IHRoaXMucHJvcHMuc3BlYWs7XG4gIH1cblxuICByZW5kZXIoKSB7XG4gICAgY29uc3QgeyBsYW5nLCBvbkJvdW5kYXJ5LCBvbkVuZCwgb25FcnJvciwgb25TdGFydCwgcGl0Y2gsIHJhdGUsIHNwZWFrOiB0ZXh0LCB2b2ljZSwgdm9sdW1lIH0gPSB0aGlzLnByb3BzO1xuXG4gICAgcmV0dXJuIChcbiAgICAgIDxDb250ZXh0LkNvbnN1bWVyPlxuICAgICAgICB7IGNvbnRleHQgPT4gY29udGV4dC5zcGVhayh7IGxhbmcsIG9uQm91bmRhcnksIG9uRW5kLCBvbkVycm9yLCBvblN0YXJ0LCBwaXRjaCwgcmF0ZSwgdGV4dCwgdm9pY2UsIHZvbHVtZSB9KSB9XG4gICAgICA8L0NvbnRleHQuQ29uc3VtZXI+XG4gICAgKTtcbiAgfVxufVxuXG5TYXkucHJvcFR5cGVzID0ge1xuICBsYW5nOiBQcm9wVHlwZXMuc3RyaW5nLFxuICBwaXRjaDogUHJvcFR5cGVzLm51bWJlcixcbiAgcmF0ZTogUHJvcFR5cGVzLm51bWJlcixcbiAgb25Cb3VuZGFyeTogUHJvcFR5cGVzLmZ1bmMsXG4gIG9uRW5kOiBQcm9wVHlwZXMuZnVuYyxcbiAgb25FcnJvcjogUHJvcFR5cGVzLmZ1bmMsXG4gIG9uU3RhcnQ6IFByb3BUeXBlcy5mdW5jLFxuICBzcGVhazogUHJvcFR5cGVzLnN0cmluZyxcbiAgdm9pY2U6IFByb3BUeXBlcy5vbmVPZlR5cGUoW1Byb3BUeXBlcy5hbnksIFByb3BUeXBlcy5mdW5jXSksXG4gIHZvbHVtZTogUHJvcFR5cGVzLm51bWJlclxufTtcbiJdfQ== | ||
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9TYXlQcmltaXRpdmUuanMiXSwibmFtZXMiOlsiU2F5IiwicHJvcHMiLCJoYW5kbGVCb3VuZGFyeSIsImJpbmQiLCJoYW5kbGVFbmQiLCJoYW5kbGVFcnJvciIsImhhbmRsZVN0YXJ0IiwidW5tb3VudGVkIiwiZXZlbnQiLCJvbkJvdW5kYXJ5Iiwib25FbmQiLCJvbkVycm9yIiwib25TdGFydCIsIm5leHRQcm9wcyIsInNwZWFrIiwibGFuZyIsInBpdGNoIiwicmF0ZSIsInRleHQiLCJ2b2ljZSIsInZvbHVtZSIsImNvbnRleHQiLCJSZWFjdCIsIkNvbXBvbmVudCIsInByb3BUeXBlcyIsIlByb3BUeXBlcyIsInN0cmluZyIsIm51bWJlciIsImZ1bmMiLCJvbmVPZlR5cGUiLCJhbnkiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7O0FBQUE7Ozs7QUFDQTs7OztBQUVBOzs7Ozs7Ozs7Ozs7SUFFcUJBLEc7OztBQUNuQixlQUFZQyxLQUFaLEVBQW1CO0FBQUE7O0FBQUEsMEdBQ1hBLEtBRFc7O0FBR2pCLFVBQUtDLGNBQUwsR0FBc0IsTUFBS0EsY0FBTCxDQUFvQkMsSUFBcEIsT0FBdEI7QUFDQSxVQUFLQyxTQUFMLEdBQWlCLE1BQUtBLFNBQUwsQ0FBZUQsSUFBZixPQUFqQjtBQUNBLFVBQUtFLFdBQUwsR0FBbUIsTUFBS0EsV0FBTCxDQUFpQkYsSUFBakIsT0FBbkI7QUFDQSxVQUFLRyxXQUFMLEdBQW1CLE1BQUtBLFdBQUwsQ0FBaUJILElBQWpCLE9BQW5CO0FBTmlCO0FBT2xCOzs7OzJDQUVzQjtBQUNyQixXQUFLSSxTQUFMLEdBQWlCLElBQWpCO0FBQ0Q7OzttQ0FFY0MsSyxFQUFPO0FBQ3BCLE9BQUMsS0FBS0QsU0FBTixJQUFtQixLQUFLTixLQUFMLENBQVdRLFVBQTlCLElBQTRDLEtBQUtSLEtBQUwsQ0FBV1EsVUFBWCxDQUFzQkQsS0FBdEIsQ0FBNUM7QUFDRDs7OzhCQUVTQSxLLEVBQU87QUFDZixPQUFDLEtBQUtELFNBQU4sSUFBbUIsS0FBS04sS0FBTCxDQUFXUyxLQUE5QixJQUF1QyxLQUFLVCxLQUFMLENBQVdTLEtBQVgsQ0FBaUJGLEtBQWpCLENBQXZDO0FBQ0Q7OztnQ0FFV0EsSyxFQUFPO0FBQ2pCLE9BQUMsS0FBS0QsU0FBTixJQUFtQixLQUFLTixLQUFMLENBQVdVLE9BQTlCLElBQXlDLEtBQUtWLEtBQUwsQ0FBV1UsT0FBWCxDQUFtQkgsS0FBbkIsQ0FBekM7QUFDRDs7O2dDQUVXQSxLLEVBQU87QUFDakIsT0FBQyxLQUFLRCxTQUFOLElBQW1CLEtBQUtOLEtBQUwsQ0FBV1csT0FBOUIsSUFBeUMsS0FBS1gsS0FBTCxDQUFXVyxPQUFYLENBQW1CSixLQUFuQixDQUF6QztBQUNEOzs7MENBRXFCSyxTLEVBQVc7QUFDL0IsYUFBT0EsVUFBVUMsS0FBVixLQUFvQixLQUFLYixLQUFMLENBQVdhLEtBQXRDO0FBQ0Q7Ozs2QkFFUTtBQUFBOztBQUFBLG1CQUNtRCxLQUFLYixLQUR4RDtBQUFBLFVBQ0NjLElBREQsVUFDQ0EsSUFERDtBQUFBLFVBQ09DLEtBRFAsVUFDT0EsS0FEUDtBQUFBLFVBQ2NDLElBRGQsVUFDY0EsSUFEZDtBQUFBLFVBQzJCQyxJQUQzQixVQUNvQkosS0FEcEI7QUFBQSxVQUNpQ0ssS0FEakMsVUFDaUNBLEtBRGpDO0FBQUEsVUFDd0NDLE1BRHhDLFVBQ3dDQSxNQUR4Qzs7O0FBR1AsYUFDRTtBQUFDLHlCQUFELENBQVMsUUFBVDtBQUFBO0FBQ0k7QUFBQSxpQkFBV0MsUUFBUVAsS0FBUixDQUFjO0FBQ3ZCQyxzQkFEdUI7QUFFdkJOLHdCQUFZLE9BQUtQLGNBRk07QUFHdkJRLG1CQUFPLE9BQUtOLFNBSFc7QUFJdkJPLHFCQUFTLE9BQUtOLFdBSlM7QUFLdkJPLHFCQUFTLE9BQUtOLFdBTFM7QUFNdkJVLHdCQU51QjtBQU92QkMsc0JBUHVCO0FBUXZCQyxzQkFSdUI7QUFTdkJDLHdCQVR1QjtBQVV2QkM7QUFWdUIsV0FBZCxDQUFYO0FBQUE7QUFESixPQURGO0FBaUJEOzs7O0VBdEQ4QkUsZ0JBQU1DLFM7O2tCQUFsQnZCLEc7OztBQXlEckJBLElBQUl3QixTQUFKLEdBQWdCO0FBQ2RULFFBQU1VLG9CQUFVQyxNQURGO0FBRWRWLFNBQU9TLG9CQUFVRSxNQUZIO0FBR2RWLFFBQU1RLG9CQUFVRSxNQUhGO0FBSWRsQixjQUFZZ0Isb0JBQVVHLElBSlI7QUFLZGxCLFNBQU9lLG9CQUFVRyxJQUxIO0FBTWRqQixXQUFTYyxvQkFBVUcsSUFOTDtBQU9kaEIsV0FBU2Esb0JBQVVHLElBUEw7QUFRZGQsU0FBT1csb0JBQVVDLE1BUkg7QUFTZFAsU0FBT00sb0JBQVVJLFNBQVYsQ0FBb0IsQ0FBQ0osb0JBQVVLLEdBQVgsRUFBZ0JMLG9CQUFVRyxJQUExQixDQUFwQixDQVRPO0FBVWRSLFVBQVFLLG9CQUFVRTtBQVZKLENBQWhCIiwiZmlsZSI6IlNheVByaW1pdGl2ZS5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBQcm9wVHlwZXMgZnJvbSAncHJvcC10eXBlcyc7XG5pbXBvcnQgUmVhY3QgZnJvbSAncmVhY3QnO1xuXG5pbXBvcnQgQ29udGV4dCBmcm9tICcuL0NvbnRleHQnO1xuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBTYXkgZXh0ZW5kcyBSZWFjdC5Db21wb25lbnQge1xuICBjb25zdHJ1Y3Rvcihwcm9wcykge1xuICAgIHN1cGVyKHByb3BzKTtcblxuICAgIHRoaXMuaGFuZGxlQm91bmRhcnkgPSB0aGlzLmhhbmRsZUJvdW5kYXJ5LmJpbmQodGhpcyk7XG4gICAgdGhpcy5oYW5kbGVFbmQgPSB0aGlzLmhhbmRsZUVuZC5iaW5kKHRoaXMpO1xuICAgIHRoaXMuaGFuZGxlRXJyb3IgPSB0aGlzLmhhbmRsZUVycm9yLmJpbmQodGhpcyk7XG4gICAgdGhpcy5oYW5kbGVTdGFydCA9IHRoaXMuaGFuZGxlU3RhcnQuYmluZCh0aGlzKTtcbiAgfVxuXG4gIGNvbXBvbmVudFdpbGxVbm1vdW50KCkge1xuICAgIHRoaXMudW5tb3VudGVkID0gdHJ1ZTtcbiAgfVxuXG4gIGhhbmRsZUJvdW5kYXJ5KGV2ZW50KSB7XG4gICAgIXRoaXMudW5tb3VudGVkICYmIHRoaXMucHJvcHMub25Cb3VuZGFyeSAmJiB0aGlzLnByb3BzLm9uQm91bmRhcnkoZXZlbnQpO1xuICB9XG5cbiAgaGFuZGxlRW5kKGV2ZW50KSB7XG4gICAgIXRoaXMudW5tb3VudGVkICYmIHRoaXMucHJvcHMub25FbmQgJiYgdGhpcy5wcm9wcy5vbkVuZChldmVudCk7XG4gIH1cblxuICBoYW5kbGVFcnJvcihldmVudCkge1xuICAgICF0aGlzLnVubW91bnRlZCAmJiB0aGlzLnByb3BzLm9uRXJyb3IgJiYgdGhpcy5wcm9wcy5vbkVycm9yKGV2ZW50KTtcbiAgfVxuXG4gIGhhbmRsZVN0YXJ0KGV2ZW50KSB7XG4gICAgIXRoaXMudW5tb3VudGVkICYmIHRoaXMucHJvcHMub25TdGFydCAmJiB0aGlzLnByb3BzLm9uU3RhcnQoZXZlbnQpO1xuICB9XG5cbiAgc2hvdWxkQ29tcG9uZW50VXBkYXRlKG5leHRQcm9wcykge1xuICAgIHJldHVybiBuZXh0UHJvcHMuc3BlYWsgIT09IHRoaXMucHJvcHMuc3BlYWs7XG4gIH1cblxuICByZW5kZXIoKSB7XG4gICAgY29uc3QgeyBsYW5nLCBwaXRjaCwgcmF0ZSwgc3BlYWs6IHRleHQsIHZvaWNlLCB2b2x1bWUgfSA9IHRoaXMucHJvcHM7XG5cbiAgICByZXR1cm4gKFxuICAgICAgPENvbnRleHQuQ29uc3VtZXI+XG4gICAgICAgIHsgY29udGV4dCA9PiBjb250ZXh0LnNwZWFrKHtcbiAgICAgICAgICAgIGxhbmcsXG4gICAgICAgICAgICBvbkJvdW5kYXJ5OiB0aGlzLmhhbmRsZUJvdW5kYXJ5LFxuICAgICAgICAgICAgb25FbmQ6IHRoaXMuaGFuZGxlRW5kLFxuICAgICAgICAgICAgb25FcnJvcjogdGhpcy5oYW5kbGVFcnJvcixcbiAgICAgICAgICAgIG9uU3RhcnQ6IHRoaXMuaGFuZGxlU3RhcnQsXG4gICAgICAgICAgICBwaXRjaCxcbiAgICAgICAgICAgIHJhdGUsXG4gICAgICAgICAgICB0ZXh0LFxuICAgICAgICAgICAgdm9pY2UsXG4gICAgICAgICAgICB2b2x1bWVcbiAgICAgICAgICB9KVxuICAgICAgICB9XG4gICAgICA8L0NvbnRleHQuQ29uc3VtZXI+XG4gICAgKTtcbiAgfVxufVxuXG5TYXkucHJvcFR5cGVzID0ge1xuICBsYW5nOiBQcm9wVHlwZXMuc3RyaW5nLFxuICBwaXRjaDogUHJvcFR5cGVzLm51bWJlcixcbiAgcmF0ZTogUHJvcFR5cGVzLm51bWJlcixcbiAgb25Cb3VuZGFyeTogUHJvcFR5cGVzLmZ1bmMsXG4gIG9uRW5kOiBQcm9wVHlwZXMuZnVuYyxcbiAgb25FcnJvcjogUHJvcFR5cGVzLmZ1bmMsXG4gIG9uU3RhcnQ6IFByb3BUeXBlcy5mdW5jLFxuICBzcGVhazogUHJvcFR5cGVzLnN0cmluZyxcbiAgdm9pY2U6IFByb3BUeXBlcy5vbmVPZlR5cGUoW1Byb3BUeXBlcy5hbnksIFByb3BUeXBlcy5mdW5jXSksXG4gIHZvbHVtZTogUHJvcFR5cGVzLm51bWJlclxufTtcbiJdfQ== |
{ | ||
"name": "react-say", | ||
"version": "0.0.1-master.f9fa4b6", | ||
"version": "1.0.0", | ||
"description": "A React component that synthesis text into speech using Web Speech API", | ||
@@ -5,0 +5,0 @@ "keywords": [], |
@@ -78,2 +78,35 @@ # react-say | ||
## Bring your own `SpeechSynthesis` | ||
You can bring your own `window.speechSynthesis` and `window.speechSynthesisUtterance` for custom speech synthesis. For example, you can bring Azure Cognitive Services thru [`web-speech-cognitive-services`](https://npmjs.com/package/web-speech-cognitive-services) package. | ||
```jsx | ||
import Say from 'react-say'; | ||
import { speechSynthesis, SpeechSynthesisUtterance, SubscriptionKey } from 'web-speech-cognitive-services'; | ||
// You will need to wait until the speech token has been exchanged | ||
// The part has been omitted for code clarity | ||
speechSynthesis.speechToken = new SubscriptionKey('your subscription key'); | ||
export default props => | ||
<Say | ||
speak="A quick brown fox jumped over the lazy dogs." | ||
speechSynthesis={ speechSynthesis } | ||
speechSynthesisUtterance={ SpeechSynthesisUtterance } | ||
/> | ||
``` | ||
> Note: `speechSynthesis` is camel-casing because it is an instance. | ||
# Caveats | ||
* If `<Say>` or `<SayButton>` is unmounted, the utterance will continue to speak | ||
* Web Speech does not support stopping or dequeueing a pending utterance, only to cancel all utterances at once | ||
* Since the utterance is already queued, speaking, or spoken, we cannot stop it and not cancelling other "innocent" utterance | ||
* We decided to let it continue but not firing any events after unmount | ||
# Roadmap | ||
* [ ] Prettify playground page | ||
# Contributions | ||
@@ -80,0 +113,0 @@ |
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
No v1
QualityPackage is not semver >=1. This means it is not stable and does not support ^ ranges.
Found 1 instance in 1 package
49725
426
0
118
0