@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.mjs CHANGED
@@ -684,41 +684,35 @@ var reduceOrderbook = (depth, level, data) => {
684
684
  bids: bids.length < level ? bids.concat(paddingFn(level - bids.length)) : bids
685
685
  };
686
686
  };
687
- var mergeOrderbook = (data, update) => {
688
- const asks = [...data.asks];
689
- const bids = [...data.bids];
690
- update.asks.forEach((element) => {
691
- for (let index = 0; index < asks.length; index++) {
692
- if (element[1] === 0) {
693
- if (element[0] === asks[index][0]) {
694
- asks.splice(index, 1);
695
- break;
696
- }
697
- } else if (element[0] === asks[index][0]) {
698
- asks[index] = element;
699
- break;
700
- } else if (element[0] < asks[index][0]) {
701
- asks.splice(index, 0, element);
702
- break;
703
- }
704
- }
705
- });
706
- update.bids.forEach((element) => {
707
- for (let index = 0; index < bids.length; index++) {
708
- if (element[1] === 0) {
709
- if (element[0] === bids[index][0]) {
710
- bids.splice(index, 1);
711
- break;
687
+ var mergeItems = (data, update) => {
688
+ if (data.length === 0)
689
+ return update;
690
+ data = data.filter(([price]) => !isNaN(price));
691
+ while (update.length > 0) {
692
+ const item = update.shift();
693
+ if (item) {
694
+ const [price, quantity] = item;
695
+ const index = data.findIndex(([p], index2) => p === price);
696
+ if (index === -1) {
697
+ if (quantity === 0)
698
+ continue;
699
+ data.push(item);
700
+ } else {
701
+ if (quantity === 0) {
702
+ data.splice(index, 1);
703
+ } else {
704
+ data[index] = item;
712
705
  }
713
- } else if (element[0] === bids[index][0]) {
714
- bids[index] = element;
715
- break;
716
- } else if (element[0] > bids[index][0]) {
717
- bids.splice(index, 0, element);
718
- break;
719
706
  }
720
707
  }
721
- });
708
+ }
709
+ return data;
710
+ };
711
+ var mergeOrderbook = (data, update) => {
712
+ let asks = [...data.asks];
713
+ let bids = [...data.bids];
714
+ asks = mergeItems(asks, update.asks).sort(asksSortFn);
715
+ bids = mergeItems(bids, update.bids).sort(bidsSortFn);
722
716
  return {
723
717
  asks,
724
718
  bids
@@ -762,14 +756,12 @@ var useOrderbookStream = (symbol, initial = INIT_DATA, options) => {
762
756
  if (ignore)
763
757
  return;
764
758
  if (!!message) {
765
- let bids = message.bids.sort(bidsSortFn);
766
- bids = bids.filter((item) => !isNaN(item[0]));
767
- bids = bids.filter((item) => item[1] > 0);
768
- let asks = message.asks.sort(asksSortFn);
769
- asks = asks.filter((item) => !isNaN(item[0]));
770
- asks = asks.filter((item) => item[1] > 0);
759
+ let bids = [...message.bids.sort(bidsSortFn)];
760
+ bids = bids.filter((item) => !isNaN(item[0]) && item[1] > 0);
761
+ let asks = [...message.asks.sort(asksSortFn)];
762
+ asks = asks.filter((item) => !isNaN(item[0]) && item[1] > 0);
771
763
  setRequestData({ bids, asks });
772
- setData({ bids, asks });
764
+ setData({ bids: [...bids], asks: [...asks] });
773
765
  }
774
766
  setIsLoading(false);
775
767
  }