@orderly.network/hooks 0.0.92 → 0.0.93

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.js CHANGED
@@ -693,41 +693,35 @@ var reduceOrderbook = (depth, level, data) => {
693
693
  bids: bids.length < level ? bids.concat(paddingFn(level - bids.length)) : bids
694
694
  };
695
695
  };
696
- var mergeOrderbook = (data, update) => {
697
- const asks = [...data.asks];
698
- const bids = [...data.bids];
699
- update.asks.forEach((element) => {
700
- for (let index = 0; index < asks.length; index++) {
701
- if (element[1] === 0) {
702
- if (element[0] === asks[index][0]) {
703
- asks.splice(index, 1);
704
- break;
705
- }
706
- } else if (element[0] === asks[index][0]) {
707
- asks[index] = element;
708
- break;
709
- } else if (element[0] < asks[index][0]) {
710
- asks.splice(index, 0, element);
711
- break;
712
- }
713
- }
714
- });
715
- update.bids.forEach((element) => {
716
- for (let index = 0; index < bids.length; index++) {
717
- if (element[1] === 0) {
718
- if (element[0] === bids[index][0]) {
719
- bids.splice(index, 1);
720
- break;
696
+ var mergeItems = (data, update) => {
697
+ if (data.length === 0)
698
+ return update;
699
+ data = data.filter(([price]) => !isNaN(price));
700
+ while (update.length > 0) {
701
+ const item = update.shift();
702
+ if (item) {
703
+ const [price, quantity] = item;
704
+ const index = data.findIndex(([p], index2) => p === price);
705
+ if (index === -1) {
706
+ if (quantity === 0)
707
+ continue;
708
+ data.push(item);
709
+ } else {
710
+ if (quantity === 0) {
711
+ data.splice(index, 1);
712
+ } else {
713
+ data[index] = item;
721
714
  }
722
- } else if (element[0] === bids[index][0]) {
723
- bids[index] = element;
724
- break;
725
- } else if (element[0] > bids[index][0]) {
726
- bids.splice(index, 0, element);
727
- break;
728
715
  }
729
716
  }
730
- });
717
+ }
718
+ return data;
719
+ };
720
+ var mergeOrderbook = (data, update) => {
721
+ let asks = [...data.asks];
722
+ let bids = [...data.bids];
723
+ asks = mergeItems(asks, update.asks).sort(asksSortFn);
724
+ bids = mergeItems(bids, update.bids).sort(bidsSortFn);
731
725
  return {
732
726
  asks,
733
727
  bids
@@ -771,14 +765,12 @@ var useOrderbookStream = (symbol, initial = INIT_DATA, options) => {
771
765
  if (ignore)
772
766
  return;
773
767
  if (!!message) {
774
- let bids = message.bids.sort(bidsSortFn);
775
- bids = bids.filter((item) => !isNaN(item[0]));
776
- bids = bids.filter((item) => item[1] > 0);
777
- let asks = message.asks.sort(asksSortFn);
778
- asks = asks.filter((item) => !isNaN(item[0]));
779
- asks = asks.filter((item) => item[1] > 0);
768
+ let bids = [...message.bids.sort(bidsSortFn)];
769
+ bids = bids.filter((item) => !isNaN(item[0]) && item[1] > 0);
770
+ let asks = [...message.asks.sort(asksSortFn)];
771
+ asks = asks.filter((item) => !isNaN(item[0]) && item[1] > 0);
780
772
  setRequestData({ bids, asks });
781
- setData({ bids, asks });
773
+ setData({ bids: [...bids], asks: [...asks] });
782
774
  }
783
775
  setIsLoading(false);
784
776
  }