Comparing version 0.10.0 to 0.11.0
@@ -1,1 +0,1 @@ | ||
require("source-map-support").install(),module.exports=function(e){function t(r){if(n[r])return n[r].exports;var u=n[r]={exports:{},id:r,loaded:!1};return e[r].call(u.exports,u,u.exports,t),u.loaded=!0,u.exports}var n={};return t.m=e,t.c=n,t.p="",t(0)}([function(e,t,n){e.exports=n(1)},function(e,t,n){"use strict";function r(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var n in e)Object.prototype.hasOwnProperty.call(e,n)&&(t[n]=e[n]);return t["default"]=e,t}function u(e){return e&&e.__esModule?e:{"default":e}}Object.defineProperty(t,"__esModule",{value:!0});var a=n(2),o=u(a),i=n(5),l=u(i),c=n(4),f=u(c),s=n(8),h=u(s),p=n(6),d=u(p),_=n(3),v=u(_),y=n(10),b=u(y),C=n(9),N=u(C),E=n(7),O=r(E);t["default"]={Component:o["default"],Channel:l["default"],InputChannel:f["default"],OutputChannel:h["default"],CallbackChannel:d["default"],ChannelManager:v["default"],Request:b["default"],Response:N["default"],CHANNEL:O}},function(e,t,n){"use strict";function r(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var n in e)Object.prototype.hasOwnProperty.call(e,n)&&(t[n]=e[n]);return t["default"]=e,t}function u(e){return e&&e.__esModule?e:{"default":e}}function a(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}Object.defineProperty(t,"__esModule",{value:!0});var o=function(){function e(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}return function(t,n,r){return n&&e(t.prototype,n),r&&e(t,r),t}}(),i=n(3),l=u(i),c=n(4),f=u(c),s=n(6),h=u(s),p=n(8),d=u(p),_=n(9),v=u(_),y=n(10),b=u(y),C=n(7),N=r(C),E=n(11),O=r(E),g=function(){function e(t){a(this,e),this._inputChannelManager=new l["default"],this._outputChannelManager=new l["default"],this.createInputChannel(N.DEFAULT_CHANNEL),this.createOutputChannel(N.DEFAULT_CHANNEL),this.createOutputChannel(N.ERROR_CHANNEL),this.onInit(t)}return o(e,[{key:"onInit",value:function(e){}},{key:"onNext",value:function(e,t){t.send(e.getValue())}},{key:"start",value:function(e){var t=arguments.length<=1||void 0===arguments[1]?N.DEFAULT_CHANNEL:arguments[1];return this.next(new b["default"](e,null,this.getInputChannel(t)))}},{key:"next",value:function(e){var t=this,n=new v["default"](this._getResponseCallback());return setTimeout(function(){try{t.onNext(e,n)}catch(r){n.send(r,N.ERROR_CHANNEL)}},0),this}},{key:"addJoint",value:function(e){var t=arguments.length<=1||void 0===arguments[1]?N.DEFAULT_CHANNEL:arguments[1],n=arguments.length<=2||void 0===arguments[2]?N.DEFAULT_CHANNEL:arguments[2],r=e.getInputChannel(n),u=this.getOutputChannel(t);if(r.isChannel(u)!==!1||u.isChannel(r)!==!1)throw Error(O.ONE_JOINT_PER_CHANNEL_PAIR);return r.addChannel(u),u.addChannel(r),this}},{key:"addCallback",value:function(e){var t=arguments.length<=1||void 0===arguments[1]?N.DEFAULT_CHANNEL:arguments[1],n=this.getOutputChannel(t);return n.addChannel(new h["default"](e)),this}},{key:"_getResponseCallback",value:function(){var e=this;return function(t,n){e.getOutputChannel(n).emitValue(t)}}},{key:"isInputChannel",value:function(){var e=arguments.length<=0||void 0===arguments[0]?N.DEFAULT_CHANNEL:arguments[0];return this._inputChannelManager.isChannelByName(e)}},{key:"isOutputChannel",value:function(){var e=arguments.length<=0||void 0===arguments[0]?N.DEFAULT_CHANNEL:arguments[0];return this._outputChannelManager.isChannelByName(e)}},{key:"getInputChannel",value:function(){var e=arguments.length<=0||void 0===arguments[0]?N.DEFAULT_CHANNEL:arguments[0];if(this.isInputChannel(e)===!1)throw Error(O.NON_EXIST_CHANNEL);return this._inputChannelManager.getChannel(e)}},{key:"getOutputChannel",value:function(){var e=arguments.length<=0||void 0===arguments[0]?N.DEFAULT_CHANNEL:arguments[0];if(this.isOutputChannel(e)===!1)throw Error(O.NON_EXIST_CHANNEL);return this._outputChannelManager.getChannel(e)}},{key:"_getInputChannelSetValueCallback",value:function(){var e=this;return function(t,n,r){e.next(new b["default"](t,n,r))}}},{key:"createInputChannel",value:function(e){if(this.isInputChannel(e)===!0)throw Error(O.UNIQUE_NAME_INPUT_CHANNEL);return this._inputChannelManager.addChannel(new f["default"](e,this._getInputChannelSetValueCallback())),this}},{key:"createOutputChannel",value:function(e){if(this.isOutputChannel(e)===!0)throw Error(O.UNIQUE_NAME_OUTPUT_CHANNEL);return this._outputChannelManager.addChannel(new d["default"](e)),this}}]),e}();t["default"]=g},function(e,t){"use strict";function n(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}Object.defineProperty(t,"__esModule",{value:!0});var r=function(){function e(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}return function(t,n,r){return n&&e(t.prototype,n),r&&e(t,r),t}}(),u=function(){function e(){var t=arguments.length<=0||void 0===arguments[0]?[]:arguments[0];n(this,e),this._channels=t}return r(e,[{key:"isChannelByName",value:function(e){return"undefined"!=typeof this.getChannel(e)}},{key:"isChannel",value:function(e){return this.getChannels().some(function(t){return t===e})}},{key:"addChannel",value:function(e){this._channels.push(e)}},{key:"getChannel",value:function(e){return this._channels.find(function(t){return t.getName()===e})}},{key:"getChannels",value:function(){return this._channels}}]),e}();t["default"]=u},function(e,t,n){"use strict";function r(e){return e&&e.__esModule?e:{"default":e}}function u(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function a(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}function o(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}Object.defineProperty(t,"__esModule",{value:!0});var i=function(){function e(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}return function(t,n,r){return n&&e(t.prototype,n),r&&e(t,r),t}}(),l=n(5),c=r(l),f=function(e){function t(e,n){var r=arguments.length<=2||void 0===arguments[2]?[]:arguments[2];u(this,t);var o=a(this,Object.getPrototypeOf(t).call(this,e,r));return n&&o.setCallback(n),o}return o(t,e),i(t,[{key:"setCallback",value:function(e){return this._onSetValueCallback=e,this}},{key:"setValue",value:function(e,t){this._onSetValueCallback(e,t,this)}}]),t}(c["default"]);t["default"]=f},function(e,t,n){"use strict";function r(e){return e&&e.__esModule?e:{"default":e}}function u(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function a(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}function o(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}Object.defineProperty(t,"__esModule",{value:!0});var i=function(){function e(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}return function(t,n,r){return n&&e(t.prototype,n),r&&e(t,r),t}}(),l=n(3),c=r(l),f=function(e){function t(e){var n=arguments.length<=1||void 0===arguments[1]?[]:arguments[1];u(this,t);var r=a(this,Object.getPrototypeOf(t).call(this,n));return r._name=e,r}return o(t,e),i(t,[{key:"getName",value:function(){return this._name}}]),t}(c["default"]);t["default"]=f},function(e,t,n){"use strict";function r(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var n in e)Object.prototype.hasOwnProperty.call(e,n)&&(t[n]=e[n]);return t["default"]=e,t}function u(e){return e&&e.__esModule?e:{"default":e}}function a(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function o(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}function i(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}Object.defineProperty(t,"__esModule",{value:!0});var l=function(){function e(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}return function(t,n,r){return n&&e(t.prototype,n),r&&e(t,r),t}}(),c=n(4),f=u(c),s=n(7),h=r(s),p=function(e){function t(e){var n=arguments.length<=1||void 0===arguments[1]?[]:arguments[1];a(this,t);var r=o(this,Object.getPrototypeOf(t).call(this,h.DEFAULT_CHANNEL,void 0,n));return r.setCallback(e),r}return i(t,e),l(t,[{key:"setCallback",value:function(e){return this._callback=e,this}},{key:"setValue",value:function(e,t){this._callback(e,t)}}]),t}(f["default"]);t["default"]=p},function(e,t){"use strict";Object.defineProperty(t,"__esModule",{value:!0});t.DEFAULT_CHANNEL="channel_default",t.ERROR_CHANNEL="channel_error"},function(e,t,n){"use strict";function r(e){return e&&e.__esModule?e:{"default":e}}function u(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function a(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}function o(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}Object.defineProperty(t,"__esModule",{value:!0});var i=function(){function e(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}return function(t,n,r){return n&&e(t.prototype,n),r&&e(t,r),t}}(),l=n(5),c=r(l),f=function(e){function t(e){var n=arguments.length<=1||void 0===arguments[1]?[]:arguments[1];return u(this,t),a(this,Object.getPrototypeOf(t).call(this,e,n))}return o(t,e),i(t,[{key:"emitValue",value:function(e){var t=this,n=this.getChannels();n.forEach(function(n){n.setValue(e,t)})}}]),t}(c["default"]);t["default"]=f},function(e,t,n){"use strict";function r(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var n in e)Object.prototype.hasOwnProperty.call(e,n)&&(t[n]=e[n]);return t["default"]=e,t}function u(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}Object.defineProperty(t,"__esModule",{value:!0});var a=function(){function e(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}return function(t,n,r){return n&&e(t.prototype,n),r&&e(t,r),t}}(),o=n(7),i=r(o),l=function(){function e(t){u(this,e),this._onSendCallback=t}return a(e,[{key:"send",value:function(){var e=arguments.length<=0||void 0===arguments[0]?void 0:arguments[0],t=arguments.length<=1||void 0===arguments[1]?i.DEFAULT_CHANNEL:arguments[1];return this._onSendCallback(e,t),this}}]),e}();t["default"]=l},function(e,t){"use strict";function n(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}Object.defineProperty(t,"__esModule",{value:!0});var r=function(){function e(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}return function(t,n,r){return n&&e(t.prototype,n),r&&e(t,r),t}}(),u=function(){function e(t,r,u){n(this,e),this._value=t,this._source=r,this._target=u}return r(e,[{key:"getValue",value:function(){return this._value}},{key:"getTarget",value:function(){return this._target}},{key:"getSource",value:function(){return this._source}}]),e}();t["default"]=u},function(e,t){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var n=(t.ONE_JOINT_PER_CHANNEL_PAIR="two channels can have only one joint",t.NON_EXIST_CHANNEL="channel do not exist",t.UNIQUE_NAME_CHANNEL="channel need unique name");t.UNIQUE_NAME_INPUT_CHANNEL=n,t.UNIQUE_NAME_OUTPUT_CHANNEL=n}]); | ||
require("source-map-support").install(),module.exports=function(e){function t(r){if(n[r])return n[r].exports;var u=n[r]={exports:{},id:r,loaded:!1};return e[r].call(u.exports,u,u.exports,t),u.loaded=!0,u.exports}var n={};return t.m=e,t.c=n,t.p="",t(0)}([function(e,t,n){e.exports=n(1)},function(e,t,n){"use strict";function r(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var n in e)Object.prototype.hasOwnProperty.call(e,n)&&(t[n]=e[n]);return t["default"]=e,t}function u(e){return e&&e.__esModule?e:{"default":e}}Object.defineProperty(t,"__esModule",{value:!0});var a=n(2),o=u(a),i=n(5),l=u(i),c=n(4),f=u(c),s=n(8),h=u(s),p=n(6),d=u(p),_=n(3),v=u(_),y=n(11),b=u(y),C=n(10),g=u(C),E=n(9),N=u(E),O=n(7),w=r(O),k=n(12),j=r(k);t["default"]={Component:o["default"],Channel:l["default"],InputChannel:f["default"],OutputChannel:h["default"],CallbackChannel:d["default"],ChannelManager:v["default"],Joint:b["default"],Request:g["default"],Response:N["default"],CHANNEL:w,ERROR:j}},function(e,t,n){"use strict";function r(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var n in e)Object.prototype.hasOwnProperty.call(e,n)&&(t[n]=e[n]);return t["default"]=e,t}function u(e){return e&&e.__esModule?e:{"default":e}}function a(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}Object.defineProperty(t,"__esModule",{value:!0});var o=function(){function e(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}return function(t,n,r){return n&&e(t.prototype,n),r&&e(t,r),t}}(),i=n(3),l=u(i),c=n(4),f=u(c),s=n(6),h=u(s),p=n(8),d=u(p),_=n(9),v=u(_),y=n(10),b=u(y),C=n(11),g=u(C),E=n(7),N=r(E),O=n(12),w=r(O),k=function(){function e(t){a(this,e),this._inputChannelManager=new l["default"],this._outputChannelManager=new l["default"],this.createInputChannel(N.DEFAULT_CHANNEL),this.createOutputChannel(N.DEFAULT_CHANNEL),this.createOutputChannel(N.ERROR_CHANNEL),this.onInit(t)}return o(e,[{key:"onInit",value:function(e){}},{key:"onNext",value:function(e,t){t.send(e.getValue())}},{key:"start",value:function(e){var t=arguments.length<=1||void 0===arguments[1]?N.DEFAULT_CHANNEL:arguments[1];return this.next(new b["default"](e,null,this.getInputChannel(t)))}},{key:"next",value:function(e){var t=this,n=new v["default"](this._getResponseCallback());return setTimeout(function(){try{t.onNext(e,n)}catch(r){n.send(r,N.ERROR_CHANNEL)}},0),this}},{key:"addJoint",value:function(e){var t=arguments.length<=1||void 0===arguments[1]?N.DEFAULT_CHANNEL:arguments[1],n=arguments.length<=2||void 0===arguments[2]?N.DEFAULT_CHANNEL:arguments[2];return new g["default"](e.getInputChannel(n),this.getOutputChannel(t))}},{key:"addCallback",value:function(e){var t=arguments.length<=1||void 0===arguments[1]?N.DEFAULT_CHANNEL:arguments[1];return new g["default"](this.getOutputChannel(t),new h["default"](e))}},{key:"_getResponseCallback",value:function(){var e=this;return function(t,n){e.getOutputChannel(n).emitValue(t)}}},{key:"isInputChannel",value:function(){var e=arguments.length<=0||void 0===arguments[0]?N.DEFAULT_CHANNEL:arguments[0];return this._inputChannelManager.isChannelByName(e)}},{key:"isOutputChannel",value:function(){var e=arguments.length<=0||void 0===arguments[0]?N.DEFAULT_CHANNEL:arguments[0];return this._outputChannelManager.isChannelByName(e)}},{key:"getInputChannel",value:function(){var e=arguments.length<=0||void 0===arguments[0]?N.DEFAULT_CHANNEL:arguments[0];if(this.isInputChannel(e)===!1)throw Error(w.NON_EXIST_CHANNEL);return this._inputChannelManager.getChannel(e)}},{key:"getOutputChannel",value:function(){var e=arguments.length<=0||void 0===arguments[0]?N.DEFAULT_CHANNEL:arguments[0];if(this.isOutputChannel(e)===!1)throw Error(w.NON_EXIST_CHANNEL);return this._outputChannelManager.getChannel(e)}},{key:"_getInputChannelSetValueCallback",value:function(){var e=this;return function(t,n,r){e.next(new b["default"](t,n,r))}}},{key:"createInputChannel",value:function(e){if(this.isInputChannel(e)===!0)throw Error(w.UNIQUE_NAME_INPUT_CHANNEL);return this._inputChannelManager.addChannel(new f["default"](e,this._getInputChannelSetValueCallback())),this}},{key:"createOutputChannel",value:function(e){if(this.isOutputChannel(e)===!0)throw Error(w.UNIQUE_NAME_OUTPUT_CHANNEL);return this._outputChannelManager.addChannel(new d["default"](e)),this}}]),e}();t["default"]=k},function(e,t){"use strict";function n(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}Object.defineProperty(t,"__esModule",{value:!0});var r=function(){function e(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}return function(t,n,r){return n&&e(t.prototype,n),r&&e(t,r),t}}(),u=function(){function e(){var t=arguments.length<=0||void 0===arguments[0]?[]:arguments[0];n(this,e),this._channels=t}return r(e,[{key:"isChannelByName",value:function(e){return"undefined"!=typeof this.getChannel(e)}},{key:"isChannel",value:function(e){return this.getChannels().some(function(t){return t===e})}},{key:"addChannel",value:function(e){this._channels.push(e)}},{key:"getChannel",value:function(e){return this._channels.find(function(t){return t.getName()===e})}},{key:"getChannels",value:function(){return this._channels}}]),e}();t["default"]=u},function(e,t,n){"use strict";function r(e){return e&&e.__esModule?e:{"default":e}}function u(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function a(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}function o(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}Object.defineProperty(t,"__esModule",{value:!0});var i=function(){function e(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}return function(t,n,r){return n&&e(t.prototype,n),r&&e(t,r),t}}(),l=n(5),c=r(l),f=function(e){function t(e,n){var r=arguments.length<=2||void 0===arguments[2]?[]:arguments[2];u(this,t);var o=a(this,Object.getPrototypeOf(t).call(this,e,r));return n&&o.setCallback(n),o}return o(t,e),i(t,[{key:"setCallback",value:function(e){return this._onSetValueCallback=e,this}},{key:"setValue",value:function(e,t){this._onSetValueCallback(e,t,this)}}]),t}(c["default"]);t["default"]=f},function(e,t,n){"use strict";function r(e){return e&&e.__esModule?e:{"default":e}}function u(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function a(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}function o(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}Object.defineProperty(t,"__esModule",{value:!0});var i=function(){function e(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}return function(t,n,r){return n&&e(t.prototype,n),r&&e(t,r),t}}(),l=n(3),c=r(l),f=function(e){function t(e){var n=arguments.length<=1||void 0===arguments[1]?[]:arguments[1];u(this,t);var r=a(this,Object.getPrototypeOf(t).call(this,n));return r._name=e,r}return o(t,e),i(t,[{key:"getName",value:function(){return this._name}}]),t}(c["default"]);t["default"]=f},function(e,t,n){"use strict";function r(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var n in e)Object.prototype.hasOwnProperty.call(e,n)&&(t[n]=e[n]);return t["default"]=e,t}function u(e){return e&&e.__esModule?e:{"default":e}}function a(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function o(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}function i(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}Object.defineProperty(t,"__esModule",{value:!0});var l=function(){function e(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}return function(t,n,r){return n&&e(t.prototype,n),r&&e(t,r),t}}(),c=n(4),f=u(c),s=n(7),h=r(s),p=function(e){function t(e){var n=arguments.length<=1||void 0===arguments[1]?[]:arguments[1];a(this,t);var r=o(this,Object.getPrototypeOf(t).call(this,h.DEFAULT_CHANNEL,void 0,n));return r.setCallback(e),r}return i(t,e),l(t,[{key:"setCallback",value:function(e){return this._callback=e,this}},{key:"setValue",value:function(e,t){this._callback(e,t)}}]),t}(f["default"]);t["default"]=p},function(e,t){"use strict";Object.defineProperty(t,"__esModule",{value:!0});t.DEFAULT_CHANNEL="channel_default",t.ERROR_CHANNEL="channel_error"},function(e,t,n){"use strict";function r(e){return e&&e.__esModule?e:{"default":e}}function u(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function a(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}function o(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}Object.defineProperty(t,"__esModule",{value:!0});var i=function(){function e(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}return function(t,n,r){return n&&e(t.prototype,n),r&&e(t,r),t}}(),l=n(5),c=r(l),f=function(e){function t(e){var n=arguments.length<=1||void 0===arguments[1]?[]:arguments[1];return u(this,t),a(this,Object.getPrototypeOf(t).call(this,e,n))}return o(t,e),i(t,[{key:"emitValue",value:function(e){var t=this,n=this.getChannels();n.forEach(function(n){n.setValue(e,t)})}}]),t}(c["default"]);t["default"]=f},function(e,t,n){"use strict";function r(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var n in e)Object.prototype.hasOwnProperty.call(e,n)&&(t[n]=e[n]);return t["default"]=e,t}function u(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}Object.defineProperty(t,"__esModule",{value:!0});var a=function(){function e(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}return function(t,n,r){return n&&e(t.prototype,n),r&&e(t,r),t}}(),o=n(7),i=r(o),l=function(){function e(t){u(this,e),this._onSendCallback=t}return a(e,[{key:"send",value:function(){var e=arguments.length<=0||void 0===arguments[0]?void 0:arguments[0],t=arguments.length<=1||void 0===arguments[1]?i.DEFAULT_CHANNEL:arguments[1];return this._onSendCallback(e,t),this}}]),e}();t["default"]=l},function(e,t){"use strict";function n(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}Object.defineProperty(t,"__esModule",{value:!0});var r=function(){function e(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}return function(t,n,r){return n&&e(t.prototype,n),r&&e(t,r),t}}(),u=function(){function e(t,r,u){n(this,e),this._value=t,this._source=r,this._target=u}return r(e,[{key:"getValue",value:function(){return this._value}},{key:"getTarget",value:function(){return this._target}},{key:"getSource",value:function(){return this._source}}]),e}();t["default"]=u},function(e,t,n){"use strict";function r(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var n in e)Object.prototype.hasOwnProperty.call(e,n)&&(t[n]=e[n]);return t["default"]=e,t}function u(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}Object.defineProperty(t,"__esModule",{value:!0});var a=function(){function e(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}return function(t,n,r){return n&&e(t.prototype,n),r&&e(t,r),t}}(),o=n(12),i=r(o),l=function(){function e(t,n){u(this,e),this._source=t,this._target=n,this._join(this.getSource(),this.getTarget())}return a(e,[{key:"_join",value:function(e,t){if(t.isChannel(e)!==!1||e.isChannel(t)!==!1)throw Error(i.ONE_JOINT_PER_CHANNEL_PAIR);return t.addChannel(e),e.addChannel(t),this}},{key:"getSource",value:function(){return this._source}},{key:"getTarget",value:function(){return this._target}}]),e}();t["default"]=l},function(e,t){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var n=(t.ONE_JOINT_PER_CHANNEL_PAIR="two channels can have only one joint",t.NON_EXIST_CHANNEL="channel do not exist",t.UNIQUE_NAME_CHANNEL="channel need unique name");t.UNIQUE_NAME_INPUT_CHANNEL=n,t.UNIQUE_NAME_OUTPUT_CHANNEL=n}]); |
{ | ||
"name": "horpyna", | ||
"version": "0.10.0", | ||
"version": "0.11.0", | ||
"description": "utility to manage async processes", | ||
@@ -5,0 +5,0 @@ "main": "index.js", |
@@ -11,3 +11,3 @@ import ChannelManager from "./channelManager"; | ||
getName(): string { | ||
public getName(): string { | ||
return this._name; | ||
@@ -14,0 +14,0 @@ } |
@@ -11,2 +11,3 @@ import ChannelManager from "./channelManager"; | ||
import Request from "./request"; | ||
import Joint from "./joint"; | ||
import * as CHANNEL from "../constants/channels"; | ||
@@ -50,18 +51,8 @@ import * as ERROR from "../constants/errors"; | ||
public addJoint(target: Component, currentChannelName: string = CHANNEL.DEFAULT_CHANNEL, targetChannelName: string = CHANNEL.DEFAULT_CHANNEL): Component { | ||
const targetInput: Channel = target.getInputChannel(targetChannelName); | ||
const currentOutput: Channel = this.getOutputChannel(currentChannelName); | ||
if(targetInput.isChannel(currentOutput) === false && currentOutput.isChannel(targetInput) === false) { | ||
targetInput.addChannel(currentOutput); | ||
currentOutput.addChannel(targetInput); | ||
} else { | ||
throw Error(ERROR.ONE_JOINT_PER_CHANNEL_PAIR); | ||
} | ||
return this; | ||
public addJoint(target: Component, currentChannelName: string = CHANNEL.DEFAULT_CHANNEL, targetChannelName: string = CHANNEL.DEFAULT_CHANNEL): Joint { | ||
return new Joint(target.getInputChannel(targetChannelName), this.getOutputChannel(currentChannelName)); | ||
} | ||
public addCallback(target: ICallbackSetValueCallback, currentChannelName: string = CHANNEL.DEFAULT_CHANNEL) { | ||
const currentOutput: Channel = this.getOutputChannel(currentChannelName); | ||
currentOutput.addChannel(new CallbackChannel(target)); | ||
return this; | ||
public addCallback(target: ICallbackSetValueCallback, currentChannelName: string = CHANNEL.DEFAULT_CHANNEL): Joint { | ||
return new Joint(this.getOutputChannel(currentChannelName), new CallbackChannel(target)); | ||
} | ||
@@ -68,0 +59,0 @@ |
@@ -10,3 +10,3 @@ import Channel from "./channel"; | ||
emitValue(value: any): void { | ||
public emitValue(value: any): void { | ||
const outputs: InputChannel[] = <Array<InputChannel>>this.getChannels(); | ||
@@ -13,0 +13,0 @@ outputs.forEach((channel: InputChannel) => { |
@@ -12,3 +12,3 @@ import * as CHANNEL from "../constants/channels"; | ||
send(value: any = undefined, channelName: string = CHANNEL.DEFAULT_CHANNEL): Response { | ||
public send(value: any = undefined, channelName: string = CHANNEL.DEFAULT_CHANNEL): Response { | ||
this._onSendCallback(value, channelName); | ||
@@ -15,0 +15,0 @@ return this; |
@@ -7,5 +7,9 @@ import Component from "./components/component"; | ||
import ChannelManager from "./components/channelManager"; | ||
import Joint from "./components/joint"; | ||
import Request from "./components/request"; | ||
import Response from "./components/response"; | ||
import * as CHANNEL from "./constants/channels"; | ||
import * as ERROR from "./constants/errors"; | ||
export default { | ||
@@ -18,5 +22,7 @@ Component, | ||
ChannelManager, | ||
Joint, | ||
Request, | ||
Response, | ||
CHANNEL | ||
CHANNEL, | ||
ERROR | ||
}; |
@@ -10,7 +10,7 @@ import sinon from "sinon"; | ||
describe("Component", () => { | ||
let dummyValue = "BBBB"; | ||
const dummyValue = "BBBB"; | ||
describe("constructor", () => { | ||
it("should trigger onInit method", done => { | ||
let onInitSpy = sinon.spy(Horpyna.Component.prototype, "onInit"); | ||
const onInitSpy = sinon.spy(Horpyna.Component.prototype, "onInit"); | ||
new Horpyna.Component(); | ||
@@ -23,4 +23,4 @@ expect(onInitSpy.calledOnce).to.be.true; | ||
it("should trigger onInit method and pass options object from constructor params", done => { | ||
let onInitSpy = sinon.spy(Horpyna.Component.prototype, "onInit"); | ||
let options = {}; | ||
const onInitSpy = sinon.spy(Horpyna.Component.prototype, "onInit"); | ||
const options = {}; | ||
new Horpyna.Component(options); | ||
@@ -37,10 +37,10 @@ expect(onInitSpy.calledOnce).to.be.true; | ||
it("should trigger next method with request args when default channel name", done => { | ||
let nextSpy = sinon.spy(Horpyna.Component.prototype, "next"); | ||
let component = new Horpyna.Component(); | ||
const nextSpy = sinon.spy(Horpyna.Component.prototype, "next"); | ||
const component = new Horpyna.Component(); | ||
component.start(dummyValue); | ||
expect(nextSpy.calledOnce).to.be.true; | ||
let request = nextSpy.args[0][0]; | ||
const request = nextSpy.args[0][0]; | ||
expect(request).to.be.an.instanceof(Horpyna.Request); | ||
expect(request.getValue()).to.be.equal(dummyValue); | ||
let targetChannel = request.getTarget(); | ||
const targetChannel = request.getTarget(); | ||
expect(targetChannel).to.be.an.instanceof(Horpyna.InputChannel); | ||
@@ -54,7 +54,7 @@ expect(targetChannel.getName()).to.be.equal(Horpyna.CHANNEL.DEFAULT_CHANNEL); | ||
describe("createInputChannel & getInputChannel method", () => { | ||
let channelName = "AAAA"; | ||
const channelName = "AAAA"; | ||
it("should create new channel and return it back", done => { | ||
let component = new Horpyna.Component(); | ||
const component = new Horpyna.Component(); | ||
component.createInputChannel(channelName); | ||
let channel = component.getInputChannel(channelName); | ||
const channel = component.getInputChannel(channelName); | ||
expect(channel).to.be.an.instanceof(Horpyna.InputChannel); | ||
@@ -66,4 +66,4 @@ expect(channel.getName()).to.be.equal(channelName); | ||
it("should create default channel in constructor and get it by name", done => { | ||
let component = new Horpyna.Component(); | ||
let channel = component.getInputChannel(Horpyna.CHANNEL.DEFAULT_CHANNEL); | ||
const component = new Horpyna.Component(); | ||
const channel = component.getInputChannel(Horpyna.CHANNEL.DEFAULT_CHANNEL); | ||
expect(channel).to.be.an.instanceof(Horpyna.InputChannel); | ||
@@ -75,4 +75,4 @@ expect(channel.getName()).to.be.equal(Horpyna.CHANNEL.DEFAULT_CHANNEL); | ||
it("should create default channel in constructor and get it by default value", done => { | ||
let component = new Horpyna.Component(); | ||
let channel = component.getInputChannel(); | ||
const component = new Horpyna.Component(); | ||
const channel = component.getInputChannel(); | ||
expect(channel).to.be.an.instanceof(Horpyna.InputChannel); | ||
@@ -84,3 +84,3 @@ expect(channel.getName()).to.be.equal(Horpyna.CHANNEL.DEFAULT_CHANNEL); | ||
it("should throw error when trying create channel with existing name", done => { | ||
let component = new Horpyna.Component(); | ||
const component = new Horpyna.Component(); | ||
component.createInputChannel(channelName); | ||
@@ -92,3 +92,3 @@ expect(component.createInputChannel.bind(component, channelName)).to.throw(Error, Error.UNIQUE_NAME_INPUT_CHANNEL); | ||
it("should throw error when trying get non-existent channel", done => { | ||
let component = new Horpyna.Component(); | ||
const component = new Horpyna.Component(); | ||
expect(component.getInputChannel.bind(component, channelName)).to.throw(Error, Error.NON_EXIST_CHANNEL); | ||
@@ -100,7 +100,7 @@ done(); | ||
describe("createOutputChannel & getOutputChannel method", () => { | ||
let channelName = "AAAA"; | ||
const channelName = "AAAA"; | ||
it("should create new channel and return it back", done => { | ||
let component = new Horpyna.Component(); | ||
const component = new Horpyna.Component(); | ||
component.createOutputChannel(channelName); | ||
let channel = component.getOutputChannel(channelName); | ||
const channel = component.getOutputChannel(channelName); | ||
expect(channel).to.be.an.instanceof(Horpyna.OutputChannel); | ||
@@ -112,4 +112,4 @@ expect(channel.getName()).to.be.equal(channelName); | ||
it("should create default channel in constructor", done => { | ||
let component = new Horpyna.Component(); | ||
let channel = component.getOutputChannel(); | ||
const component = new Horpyna.Component(); | ||
const channel = component.getOutputChannel(); | ||
expect(channel).to.be.an.instanceof(Horpyna.OutputChannel); | ||
@@ -121,3 +121,3 @@ expect(channel.getName()).to.be.equal(Horpyna.CHANNEL.DEFAULT_CHANNEL); | ||
it("should throw error when trying create channel with existing name", done => { | ||
let component = new Horpyna.Component(); | ||
const component = new Horpyna.Component(); | ||
component.createOutputChannel(channelName); | ||
@@ -129,3 +129,3 @@ expect(component.createOutputChannel.bind(component, channelName)).to.throw(Error, Error.UNIQUE_NAME_INPUT_CHANNEL); | ||
it("should throw error when trying get non-existent channel", done => { | ||
let component = new Horpyna.Component(); | ||
const component = new Horpyna.Component(); | ||
expect(component.getOutputChannel.bind(component, channelName)).to.throw(Error, Error.NON_EXIST_CHANNEL); | ||
@@ -139,3 +139,3 @@ done(); | ||
let nextStub = sinon.stub(Horpyna.Component.prototype, "onNext", (request, response) => { | ||
const nextStub = sinon.stub(Horpyna.Component.prototype, "onNext", (request, response) => { | ||
expect(request).to.be.an.instanceof(Horpyna.Request); | ||
@@ -147,3 +147,3 @@ expect(request.getValue()).to.be.equal(dummyValue); | ||
}); | ||
let component = new Horpyna.Component(); | ||
const component = new Horpyna.Component(); | ||
component.next(new Horpyna.Request(dummyValue, null, component.getInputChannel(Horpyna.CHANNEL.DEFAULT_CHANNEL))); | ||
@@ -172,9 +172,10 @@ }); | ||
it("should connect component default output channel and target component input default channel", done => { | ||
let currentComponent = new Horpyna.Component(); | ||
let targetComponent = new Horpyna.Component(); | ||
currentComponent.addJoint(targetComponent); | ||
const currentComponent = new Horpyna.Component(); | ||
const targetComponent = new Horpyna.Component(); | ||
const joint = currentComponent.addJoint(targetComponent); | ||
let currentOutputChannel = currentComponent.getOutputChannel(); | ||
let targetInputChannel = targetComponent.getInputChannel(Horpyna.CHANNEL.DEFAULT_CHANNEL); | ||
const currentOutputChannel = currentComponent.getOutputChannel(); | ||
const targetInputChannel = targetComponent.getInputChannel(Horpyna.CHANNEL.DEFAULT_CHANNEL); | ||
expect(joint).to.be.an.instanceof(Horpyna.Joint); | ||
expect(currentOutputChannel.getChannel(Horpyna.CHANNEL.DEFAULT_CHANNEL)).to.be.equal(targetInputChannel); | ||
@@ -186,13 +187,13 @@ expect(targetInputChannel.getChannel(Horpyna.CHANNEL.DEFAULT_CHANNEL)).to.be.equal(currentOutputChannel); | ||
it("should connect component custom output channel and target component input custom channel", done => { | ||
let currentChannelName = "fsg423"; | ||
let targetChannelName = "aewawe3"; | ||
let currentComponent = new Horpyna.Component(); | ||
const currentChannelName = "fsg423"; | ||
const targetChannelName = "aewawe3"; | ||
const currentComponent = new Horpyna.Component(); | ||
currentComponent.createOutputChannel(currentChannelName); | ||
let targetComponent = new Horpyna.Component(); | ||
const targetComponent = new Horpyna.Component(); | ||
targetComponent.createInputChannel(targetChannelName); | ||
currentComponent.addJoint(targetComponent, currentChannelName, targetChannelName); | ||
const joint = currentComponent.addJoint(targetComponent, currentChannelName, targetChannelName); | ||
let currentOutputChannel = currentComponent.getOutputChannel(currentChannelName); | ||
let targetInputChannel = targetComponent.getInputChannel(targetChannelName); | ||
const currentOutputChannel = currentComponent.getOutputChannel(currentChannelName); | ||
const targetInputChannel = targetComponent.getInputChannel(targetChannelName); | ||
expect(joint).to.be.an.instanceof(Horpyna.Joint); | ||
expect(currentOutputChannel.getChannel(targetChannelName)).to.be.equal(targetInputChannel); | ||
@@ -204,7 +205,7 @@ expect(targetInputChannel.getChannel(currentChannelName)).to.be.equal(currentOutputChannel); | ||
it("should throw error when target channel non exist", done => { | ||
let currentChannelName = "fsg423"; | ||
let targetChannelName = "aewawe3"; | ||
let currentComponent = new Horpyna.Component(); | ||
const currentChannelName = "fsg423"; | ||
const targetChannelName = "aewawe3"; | ||
const currentComponent = new Horpyna.Component(); | ||
currentComponent.createOutputChannel(currentChannelName); | ||
let targetComponent = new Horpyna.Component(); | ||
const targetComponent = new Horpyna.Component(); | ||
expect(currentComponent.addJoint.bind(currentComponent, targetComponent, currentChannelName, targetChannelName)).to.throw(Error, Error.NON_EXIST_CHANNEL); | ||
@@ -215,6 +216,6 @@ done(); | ||
it("should throw error when current channel non exist", done => { | ||
let currentChannelName = "fsg423"; | ||
let targetChannelName = "aewawe3"; | ||
let currentComponent = new Horpyna.Component(); | ||
let targetComponent = new Horpyna.Component(); | ||
const currentChannelName = "fsg423"; | ||
const targetChannelName = "aewawe3"; | ||
const currentComponent = new Horpyna.Component(); | ||
const targetComponent = new Horpyna.Component(); | ||
targetComponent.createInputChannel(targetChannelName); | ||
@@ -226,7 +227,7 @@ expect(currentComponent.addJoint.bind(currentComponent, targetComponent, currentChannelName, targetChannelName)).to.throw(Error, Error.NON_EXIST_CHANNEL); | ||
it("should throw error when two channels have joint already", done => { | ||
let currentChannelName = "fsg423"; | ||
let targetChannelName = "aewawe3"; | ||
let currentComponent = new Horpyna.Component(); | ||
const currentChannelName = "fsg423"; | ||
const targetChannelName = "aewawe3"; | ||
const currentComponent = new Horpyna.Component(); | ||
currentComponent.createOutputChannel(currentChannelName); | ||
let targetComponent = new Horpyna.Component(); | ||
const targetComponent = new Horpyna.Component(); | ||
targetComponent.createInputChannel(targetChannelName); | ||
@@ -241,4 +242,4 @@ currentComponent.addJoint(targetComponent, currentChannelName, targetChannelName); | ||
it("in `next` method should trigger callback with default channel", done => { | ||
let component = new Horpyna.Component(); | ||
component.addCallback((value, sourceChannel) => { | ||
const component = new Horpyna.Component(); | ||
const joint = component.addCallback((value, sourceChannel) => { | ||
expect(value).to.be.equal(dummyValue); | ||
@@ -250,13 +251,14 @@ expect(sourceChannel).to.be.an.instanceof(Horpyna.OutputChannel); | ||
component.start(dummyValue); | ||
expect(joint).to.be.an.instanceof(Horpyna.Joint); | ||
}); | ||
it("in `next` method should trigger callback with custom channel", done => { | ||
let currentChannelName = "fsg423"; | ||
let nextStub = sinon.stub(Horpyna.Component.prototype, "onNext", (request, response) => { | ||
const currentChannelName = "fsg423"; | ||
const nextStub = sinon.stub(Horpyna.Component.prototype, "onNext", (request, response) => { | ||
response.send(request.getValue(), currentChannelName); | ||
nextStub.restore(); | ||
}); | ||
let component = new Horpyna.Component(); | ||
const component = new Horpyna.Component(); | ||
component.createOutputChannel(currentChannelName); | ||
component.addCallback((value, sourceChannel) => { | ||
const joint = component.addCallback((value, sourceChannel) => { | ||
expect(value).to.be.equal(dummyValue); | ||
@@ -267,8 +269,10 @@ expect(sourceChannel).to.be.an.instanceof(Horpyna.OutputChannel); | ||
}, currentChannelName); | ||
component.start(dummyValue); | ||
expect(joint).to.be.an.instanceof(Horpyna.Joint); | ||
}); | ||
it("should throw error when current channel non exist", done => { | ||
let currentChannelName = "fsg423"; | ||
let component = new Horpyna.Component(); | ||
const currentChannelName = "fsg423"; | ||
const component = new Horpyna.Component(); | ||
expect(component.addCallback.bind(component, () => {}, currentChannelName)).to.throw(Error, Error.NON_EXIST_CHANNEL); | ||
@@ -275,0 +279,0 @@ done(); |
Sorry, the diff of this file is not supported yet
107389
46
971