@orderly.network/hooks 1.5.5 → 1.5.6

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.
@@ -1 +1 @@
1
- {"version":3,"file":"usePrivateDataObserver.d.ts","sourceRoot":"","sources":["../../src/orderly/usePrivateDataObserver.ts"],"names":[],"mappings":"AAQA,OAAO,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AAOjD,eAAO,MAAM,sBAAsB;uBAEd,MAAM,KAAK,IAAI,MAAM,EAAE,cAAc,CAAC;UAoK1D,CAAC"}
1
+ {"version":3,"file":"usePrivateDataObserver.d.ts","sourceRoot":"","sources":["../../src/orderly/usePrivateDataObserver.ts"],"names":[],"mappings":"AAOA,OAAO,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AAMjD,eAAO,MAAM,sBAAsB;uBAEd,MAAM,KAAK,IAAI,MAAM,EAAE,cAAc,CAAC;UAyJ1D,CAAC"}
@@ -85,40 +85,34 @@ export const usePrivateDataObserver = (options)=>{
85
85
  const unsubscribe = ws.privateSubscribe("position", {
86
86
  onMessage: (data)=>{
87
87
  const { positions: nextPostions } = data;
88
- // console.log("ws----- positions data-----", data);
89
88
  // updatePositions();
90
89
  mutate(key, (prevPositions)=>{
91
90
  // return nextPostions;
92
91
  if (!!prevPositions) {
93
- return {
92
+ const newPostions = {
94
93
  ...prevPositions,
95
94
  rows: prevPositions.rows.map((row)=>{
96
- const item = nextPostions.find((item)=>item.symbol === row.symbol);
97
- if (item) {
98
- return {
99
- symbol: item.symbol,
100
- position_qty: item.positionQty,
101
- cost_position: item.costPosition,
102
- last_sum_unitary_funding: item.lastSumUnitaryFunding,
103
- pending_long_qty: item.pendingLongQty,
104
- pending_short_qty: item.pendingShortQty,
105
- settle_price: item.settlePrice,
106
- average_open_price: item.averageOpenPrice,
107
- unsettled_pnl: item.unsettledPnl,
108
- mark_price: item.markPrice,
109
- est_liq_price: item.estLiqPrice,
110
- timestamp: Date.now(),
111
- imr: item.imr,
112
- mmr: item.mmr,
113
- IMR_withdraw_orders: item.imrwithOrders,
114
- MMR_with_orders: item.mmrwithOrders,
115
- pnl_24_h: item.pnl24H,
116
- fee_24_h: item.fee24H
117
- };
95
+ const itemIndex = nextPostions.findIndex((item)=>item.symbol === row.symbol);
96
+ // const item = nextPostions.find(
97
+ // (item) => item.symbol === row.symbol
98
+ // );
99
+ if (itemIndex >= 0) {
100
+ const itemArr = nextPostions.splice(itemIndex, 1);
101
+ const item = itemArr[0];
102
+ return object2underscore(item);
118
103
  }
119
104
  return row;
120
105
  })
121
106
  };
107
+ if (nextPostions.length > 0) {
108
+ newPostions.rows = [
109
+ ...newPostions.rows,
110
+ ...nextPostions.map((item)=>{
111
+ return object2underscore(item);
112
+ })
113
+ ];
114
+ }
115
+ return newPostions;
122
116
  }
123
117
  }, {
124
118
  revalidate: false
@@ -131,16 +125,6 @@ export const usePrivateDataObserver = (options)=>{
131
125
  }, [
132
126
  state.accountId
133
127
  ]);
134
- // cache algo orders
135
- // useEffect(() => {
136
- // const handler = (data: API.AlgoOrder) => {
137
- // algoOrderCacheQuneue.current.push(data);
138
- // };
139
- // ee.on("algoOrder:cache", handler);
140
- // return () => {
141
- // ee.off("algoOrder:cache", handler);
142
- // };
143
- // }, []);
144
128
  };
145
129
 
146
130
  //# sourceMappingURL=usePrivateDataObserver.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/orderly/usePrivateDataObserver.ts"],"sourcesContent":["import { useEffect, useRef } from \"react\";\nimport { useWS } from \"../useWS\";\nimport { mutate } from \"swr\";\nimport { WSMessage, API } from \"@orderly.network/types\";\nimport { useAccount } from \"../useAccount\";\nimport { unstable_serialize } from \"swr/infinite\";\nimport { useDebouncedCallback } from \"use-debounce\";\nimport { useEventEmitter } from \"../useEventEmitter\";\nimport { getKeyFunction } from \"../dataProvider\";\nimport { parseJSON } from \"../utils/json\";\nimport { updateOrdersHandler, updateAlgoOrdersHandler } from \"../utils/swr\";\nimport { AlgoOrderMergeHandler } from \"../services/orderMerge/algoOrderMergeHandler\";\nimport { object2underscore } from \"../utils/ws\";\nimport { useLocalStorage } from \"../useLocalStorage\";\n\nexport const usePrivateDataObserver = (options: {\n // onUpdateOrders: (data: any) => void;\n getKeysMap: (type: string) => Map<string, getKeyFunction>;\n}) => {\n const ws = useWS();\n // const { mutate } = useSWRConfig();\n const ee = useEventEmitter();\n const { state } = useAccount();\n\n // TODO: remove this when the WS service provides the correct data\n // const algoOrderCacheQuneue = useRef<API.AlgoOrder[]>([]);\n\n const [subOrder, setSubOrder] = useLocalStorage(\"orderly_subscribe_order\", true);\n\n const updateOrders = (\n data: WSMessage.AlgoOrder[] | WSMessage.Order,\n isAlgoOrder: boolean\n ) => {\n const keysMap = options.getKeysMap(\"orders\");\n\n keysMap.forEach((getKey, key) => {\n mutate(\n unstable_serialize((index, prevData) => [\n getKey(index, prevData),\n state.accountId,\n ]),\n (prevData?: any[]) => {\n try {\n if (isAlgoOrder) {\n const result = updateAlgoOrdersHandler(\n key,\n data as WSMessage.AlgoOrder[],\n prevData!\n );\n\n return result;\n }\n return updateOrdersHandler(key, data as WSMessage.Order, prevData);\n } catch (error) {\n return prevData;\n }\n },\n {\n revalidate: false,\n }\n );\n });\n\n // emit events;\n // ee.emit(\"orders:changed\", {\n // ...data,\n // status: data.status || (data as WSMessage.AlgoOrder).algoStatus,\n // });\n\n const formattedData = isAlgoOrder\n ? AlgoOrderMergeHandler.groupOrders(data as WSMessage.AlgoOrder[])\n : object2underscore(data);\n\n ee.emit(\"orders:changed\", {\n ...formattedData,\n status: isAlgoOrder\n ? formattedData.algo_status\n : (data as WSMessage.Order).status,\n });\n };\n\n // orders\n useEffect(() => {\n if (!state.accountId) return;\n if (subOrder !== true) return;\n const unsubscribe = ws.privateSubscribe(\"executionreport\", {\n onMessage: (data: any) => {\n updateOrders(data, false);\n },\n });\n\n return () => unsubscribe?.();\n }, [state.accountId, subOrder]);\n\n // algo orders\n useEffect(() => {\n if (!state.accountId) return;\n if (subOrder !== true) return;\n const unsubscribe = ws.privateSubscribe(\"algoexecutionreport\", {\n onMessage: (data: any) => {\n updateOrders(data, true);\n },\n });\n\n return () => unsubscribe?.();\n }, [state.accountId, subOrder]);\n\n // positions\n useEffect(() => {\n if (!state.accountId) return;\n const key = [\"/v1/positions\", state.accountId];\n const unsubscribe = ws.privateSubscribe(\"position\", {\n onMessage: (data: { positions: WSMessage.Position[] }) => {\n const { positions: nextPostions } = data;\n\n // console.log(\"ws----- positions data-----\", data);\n\n // updatePositions();\n\n mutate(\n key,\n (prevPositions: any) => {\n // return nextPostions;\n if (!!prevPositions) {\n return {\n ...prevPositions,\n rows: prevPositions.rows.map((row: any) => {\n const item = nextPostions.find(\n (item) => item.symbol === row.symbol\n );\n if (item) {\n return {\n symbol: item.symbol,\n position_qty: item.positionQty,\n cost_position: item.costPosition,\n last_sum_unitary_funding: item.lastSumUnitaryFunding,\n pending_long_qty: item.pendingLongQty,\n pending_short_qty: item.pendingShortQty,\n settle_price: item.settlePrice,\n average_open_price: item.averageOpenPrice,\n unsettled_pnl: item.unsettledPnl,\n mark_price: item.markPrice,\n est_liq_price: item.estLiqPrice,\n timestamp: Date.now(),\n imr: item.imr,\n mmr: item.mmr,\n IMR_withdraw_orders: item.imrwithOrders,\n MMR_with_orders: item.mmrwithOrders,\n pnl_24_h: item.pnl24H,\n fee_24_h: item.fee24H,\n };\n }\n\n return row;\n }),\n };\n }\n },\n {\n revalidate: false,\n }\n );\n },\n });\n return () => {\n unsubscribe?.();\n };\n }, [state.accountId]);\n\n // cache algo orders\n // useEffect(() => {\n // const handler = (data: API.AlgoOrder) => {\n // algoOrderCacheQuneue.current.push(data);\n // };\n\n // ee.on(\"algoOrder:cache\", handler);\n\n // return () => {\n // ee.off(\"algoOrder:cache\", handler);\n // };\n // }, []);\n};\n"],"names":["useEffect","useWS","mutate","useAccount","unstable_serialize","useEventEmitter","updateOrdersHandler","updateAlgoOrdersHandler","AlgoOrderMergeHandler","object2underscore","useLocalStorage","usePrivateDataObserver","options","ws","ee","state","subOrder","setSubOrder","updateOrders","data","isAlgoOrder","keysMap","getKeysMap","forEach","getKey","key","index","prevData","accountId","result","error","revalidate","formattedData","groupOrders","emit","status","algo_status","unsubscribe","privateSubscribe","onMessage","positions","nextPostions","prevPositions","rows","map","row","item","find","symbol","position_qty","positionQty","cost_position","costPosition","last_sum_unitary_funding","lastSumUnitaryFunding","pending_long_qty","pendingLongQty","pending_short_qty","pendingShortQty","settle_price","settlePrice","average_open_price","averageOpenPrice","unsettled_pnl","unsettledPnl","mark_price","markPrice","est_liq_price","estLiqPrice","timestamp","Date","now","imr","mmr","IMR_withdraw_orders","imrwithOrders","MMR_with_orders","mmrwithOrders","pnl_24_h","pnl24H","fee_24_h","fee24H"],"rangeMappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;","mappings":"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"}
1
+ {"version":3,"sources":["../../src/orderly/usePrivateDataObserver.ts"],"sourcesContent":["import { useEffect } from \"react\";\nimport { useWS } from \"../useWS\";\nimport { mutate } from \"swr\";\nimport { WSMessage } from \"@orderly.network/types\";\nimport { useAccount } from \"../useAccount\";\nimport { unstable_serialize } from \"swr/infinite\";\nimport { useEventEmitter } from \"../useEventEmitter\";\nimport { getKeyFunction } from \"../dataProvider\";\nimport { updateOrdersHandler, updateAlgoOrdersHandler } from \"../utils/swr\";\nimport { AlgoOrderMergeHandler } from \"../services/orderMerge/algoOrderMergeHandler\";\nimport { object2underscore } from \"../utils/ws\";\nimport { useLocalStorage } from \"../useLocalStorage\";\n\nexport const usePrivateDataObserver = (options: {\n // onUpdateOrders: (data: any) => void;\n getKeysMap: (type: string) => Map<string, getKeyFunction>;\n}) => {\n const ws = useWS();\n // const { mutate } = useSWRConfig();\n const ee = useEventEmitter();\n const { state } = useAccount();\n\n // TODO: remove this when the WS service provides the correct data\n // const algoOrderCacheQuneue = useRef<API.AlgoOrder[]>([]);\n\n const [subOrder, setSubOrder] = useLocalStorage(\n \"orderly_subscribe_order\",\n true\n );\n\n const updateOrders = (\n data: WSMessage.AlgoOrder[] | WSMessage.Order,\n isAlgoOrder: boolean\n ) => {\n const keysMap = options.getKeysMap(\"orders\");\n\n keysMap.forEach((getKey, key) => {\n mutate(\n unstable_serialize((index, prevData) => [\n getKey(index, prevData),\n state.accountId,\n ]),\n (prevData?: any[]) => {\n try {\n if (isAlgoOrder) {\n const result = updateAlgoOrdersHandler(\n key,\n data as WSMessage.AlgoOrder[],\n prevData!\n );\n\n return result;\n }\n return updateOrdersHandler(key, data as WSMessage.Order, prevData);\n } catch (error) {\n return prevData;\n }\n },\n {\n revalidate: false,\n }\n );\n });\n\n // emit events;\n // ee.emit(\"orders:changed\", {\n // ...data,\n // status: data.status || (data as WSMessage.AlgoOrder).algoStatus,\n // });\n\n const formattedData = isAlgoOrder\n ? AlgoOrderMergeHandler.groupOrders(data as WSMessage.AlgoOrder[])\n : object2underscore(data);\n\n ee.emit(\"orders:changed\", {\n ...formattedData,\n status: isAlgoOrder\n ? formattedData.algo_status\n : (data as WSMessage.Order).status,\n });\n };\n\n // orders\n useEffect(() => {\n if (!state.accountId) return;\n if (subOrder !== true) return;\n const unsubscribe = ws.privateSubscribe(\"executionreport\", {\n onMessage: (data: any) => {\n updateOrders(data, false);\n },\n });\n\n return () => unsubscribe?.();\n }, [state.accountId, subOrder]);\n\n // algo orders\n useEffect(() => {\n if (!state.accountId) return;\n if (subOrder !== true) return;\n const unsubscribe = ws.privateSubscribe(\"algoexecutionreport\", {\n onMessage: (data: any) => {\n updateOrders(data, true);\n },\n });\n\n return () => unsubscribe?.();\n }, [state.accountId, subOrder]);\n\n // positions\n useEffect(() => {\n if (!state.accountId) return;\n const key = [\"/v1/positions\", state.accountId];\n const unsubscribe = ws.privateSubscribe(\"position\", {\n onMessage: (data: { positions: WSMessage.Position[] }) => {\n const { positions: nextPostions } = data;\n\n // updatePositions();\n\n mutate(\n key,\n (prevPositions: any) => {\n // return nextPostions;\n if (!!prevPositions) {\n const newPostions = {\n ...prevPositions,\n rows: prevPositions.rows.map((row: any) => {\n const itemIndex = nextPostions.findIndex(\n (item) => item.symbol === row.symbol\n );\n\n // const item = nextPostions.find(\n // (item) => item.symbol === row.symbol\n // );\n\n if (itemIndex >= 0) {\n const itemArr = nextPostions.splice(itemIndex, 1);\n\n const item = itemArr[0];\n\n return object2underscore(item);\n }\n\n return row;\n }),\n };\n\n if (nextPostions.length > 0) {\n newPostions.rows = [\n ...newPostions.rows,\n ...nextPostions.map((item) => {\n return object2underscore(item);\n }),\n ];\n }\n\n return newPostions;\n }\n },\n {\n revalidate: false,\n }\n );\n },\n });\n return () => {\n unsubscribe?.();\n };\n }, [state.accountId]);\n};\n"],"names":["useEffect","useWS","mutate","useAccount","unstable_serialize","useEventEmitter","updateOrdersHandler","updateAlgoOrdersHandler","AlgoOrderMergeHandler","object2underscore","useLocalStorage","usePrivateDataObserver","options","ws","ee","state","subOrder","setSubOrder","updateOrders","data","isAlgoOrder","keysMap","getKeysMap","forEach","getKey","key","index","prevData","accountId","result","error","revalidate","formattedData","groupOrders","emit","status","algo_status","unsubscribe","privateSubscribe","onMessage","positions","nextPostions","prevPositions","newPostions","rows","map","row","itemIndex","findIndex","item","symbol","itemArr","splice","length"],"rangeMappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;","mappings":"AAAA,SAASA,SAAS,QAAQ,QAAQ;AAClC,SAASC,KAAK,QAAQ,WAAW;AACjC,SAASC,MAAM,QAAQ,MAAM;AAE7B,SAASC,UAAU,QAAQ,gBAAgB;AAC3C,SAASC,kBAAkB,QAAQ,eAAe;AAClD,SAASC,eAAe,QAAQ,qBAAqB;AAErD,SAASC,mBAAmB,EAAEC,uBAAuB,QAAQ,eAAe;AAC5E,SAASC,qBAAqB,QAAQ,+CAA+C;AACrF,SAASC,iBAAiB,QAAQ,cAAc;AAChD,SAASC,eAAe,QAAQ,qBAAqB;AAErD,OAAO,MAAMC,yBAAyB,CAACC;IAIrC,MAAMC,KAAKZ;IACX,qCAAqC;IACrC,MAAMa,KAAKT;IACX,MAAM,EAAEU,KAAK,EAAE,GAAGZ;IAElB,kEAAkE;IAClE,4DAA4D;IAE5D,MAAM,CAACa,UAAUC,YAAY,GAAGP,gBAC9B,2BACA;IAGF,MAAMQ,eAAe,CACnBC,MACAC;QAEA,MAAMC,UAAUT,QAAQU,UAAU,CAAC;QAEnCD,QAAQE,OAAO,CAAC,CAACC,QAAQC;YACvBvB,OACEE,mBAAmB,CAACsB,OAAOC,WAAa;oBACtCH,OAAOE,OAAOC;oBACdZ,MAAMa,SAAS;iBAChB,GACD,CAACD;gBACC,IAAI;oBACF,IAAIP,aAAa;wBACf,MAAMS,SAAStB,wBACbkB,KACAN,MACAQ;wBAGF,OAAOE;oBACT;oBACA,OAAOvB,oBAAoBmB,KAAKN,MAAyBQ;gBAC3D,EAAE,OAAOG,OAAO;oBACd,OAAOH;gBACT;YACF,GACA;gBACEI,YAAY;YACd;QAEJ;QAEA,gBAAgB;QAChB,8BAA8B;QAC9B,aAAa;QACb,qEAAqE;QACrE,MAAM;QAEN,MAAMC,gBAAgBZ,cAClBZ,sBAAsByB,WAAW,CAACd,QAClCV,kBAAkBU;QAEtBL,GAAGoB,IAAI,CAAC,kBAAkB;YACxB,GAAGF,aAAa;YAChBG,QAAQf,cACJY,cAAcI,WAAW,GACzB,AAACjB,KAAyBgB,MAAM;QACtC;IACF;IAEA,SAAS;IACTnC,UAAU;QACR,IAAI,CAACe,MAAMa,SAAS,EAAE;QACtB,IAAIZ,aAAa,MAAM;QACvB,MAAMqB,cAAcxB,GAAGyB,gBAAgB,CAAC,mBAAmB;YACzDC,WAAW,CAACpB;gBACVD,aAAaC,MAAM;YACrB;QACF;QAEA,OAAO,IAAMkB;IACf,GAAG;QAACtB,MAAMa,SAAS;QAAEZ;KAAS;IAE9B,cAAc;IACdhB,UAAU;QACR,IAAI,CAACe,MAAMa,SAAS,EAAE;QACtB,IAAIZ,aAAa,MAAM;QACvB,MAAMqB,cAAcxB,GAAGyB,gBAAgB,CAAC,uBAAuB;YAC7DC,WAAW,CAACpB;gBACVD,aAAaC,MAAM;YACrB;QACF;QAEA,OAAO,IAAMkB;IACf,GAAG;QAACtB,MAAMa,SAAS;QAAEZ;KAAS;IAE9B,YAAY;IACZhB,UAAU;QACR,IAAI,CAACe,MAAMa,SAAS,EAAE;QACtB,MAAMH,MAAM;YAAC;YAAiBV,MAAMa,SAAS;SAAC;QAC9C,MAAMS,cAAcxB,GAAGyB,gBAAgB,CAAC,YAAY;YAClDC,WAAW,CAACpB;gBACV,MAAM,EAAEqB,WAAWC,YAAY,EAAE,GAAGtB;gBAEpC,qBAAqB;gBAErBjB,OACEuB,KACA,CAACiB;oBACC,uBAAuB;oBACvB,IAAI,CAAC,CAACA,eAAe;wBACnB,MAAMC,cAAc;4BAClB,GAAGD,aAAa;4BAChBE,MAAMF,cAAcE,IAAI,CAACC,GAAG,CAAC,CAACC;gCAC5B,MAAMC,YAAYN,aAAaO,SAAS,CACtC,CAACC,OAASA,KAAKC,MAAM,KAAKJ,IAAII,MAAM;gCAGtC,kCAAkC;gCAClC,yCAAyC;gCACzC,KAAK;gCAEL,IAAIH,aAAa,GAAG;oCAClB,MAAMI,UAAUV,aAAaW,MAAM,CAACL,WAAW;oCAE/C,MAAME,OAAOE,OAAO,CAAC,EAAE;oCAEvB,OAAO1C,kBAAkBwC;gCAC3B;gCAEA,OAAOH;4BACT;wBACF;wBAEA,IAAIL,aAAaY,MAAM,GAAG,GAAG;4BAC3BV,YAAYC,IAAI,GAAG;mCACdD,YAAYC,IAAI;mCAChBH,aAAaI,GAAG,CAAC,CAACI;oCACnB,OAAOxC,kBAAkBwC;gCAC3B;6BACD;wBACH;wBAEA,OAAON;oBACT;gBACF,GACA;oBACEZ,YAAY;gBACd;YAEJ;QACF;QACA,OAAO;YACLM;QACF;IACF,GAAG;QAACtB,MAAMa,SAAS;KAAC;AACtB,EAAE"}
package/esm/version.d.ts CHANGED
@@ -5,6 +5,6 @@ declare global {
5
5
  };
6
6
  }
7
7
  }
8
- declare const _default: "1.5.5";
8
+ declare const _default: "1.5.6";
9
9
  export default _default;
10
10
  //# sourceMappingURL=version.d.ts.map
package/esm/version.js CHANGED
@@ -1,7 +1,7 @@
1
1
  if (typeof window !== 'undefined') {
2
2
  window.__ORDERLY_VERSION__ = window.__ORDERLY_VERSION__ || {};
3
- window.__ORDERLY_VERSION__["@orderly.network/hooks"] = "1.5.5";
3
+ window.__ORDERLY_VERSION__["@orderly.network/hooks"] = "1.5.6";
4
4
  }
5
- export default "1.5.5";
5
+ export default "1.5.6";
6
6
 
7
7
  //# sourceMappingURL=version.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/version.ts"],"sourcesContent":["\ndeclare global {\n interface Window {\n __ORDERLY_VERSION__?: {\n [key: string]: string;\n };\n }\n}\nif(typeof window !== 'undefined') {\n window.__ORDERLY_VERSION__ = window.__ORDERLY_VERSION__ || {};\n window.__ORDERLY_VERSION__[\"@orderly.network/hooks\"] = \"1.5.5\";\n};\n\nexport default \"1.5.5\";\n"],"names":["window","__ORDERLY_VERSION__"],"rangeMappings":";;;;","mappings":"AAQA,IAAG,OAAOA,WAAW,aAAa;IAC9BA,OAAOC,mBAAmB,GAAGD,OAAOC,mBAAmB,IAAI,CAAC;IAC5DD,OAAOC,mBAAmB,CAAC,yBAAyB,GAAG;AAC3D;AAEA,eAAe,QAAQ"}
1
+ {"version":3,"sources":["../src/version.ts"],"sourcesContent":["\ndeclare global {\n interface Window {\n __ORDERLY_VERSION__?: {\n [key: string]: string;\n };\n }\n}\nif(typeof window !== 'undefined') {\n window.__ORDERLY_VERSION__ = window.__ORDERLY_VERSION__ || {};\n window.__ORDERLY_VERSION__[\"@orderly.network/hooks\"] = \"1.5.6\";\n};\n\nexport default \"1.5.6\";\n"],"names":["window","__ORDERLY_VERSION__"],"rangeMappings":";;;;","mappings":"AAQA,IAAG,OAAOA,WAAW,aAAa;IAC9BA,OAAOC,mBAAmB,GAAGD,OAAOC,mBAAmB,IAAI,CAAC;IAC5DD,OAAOC,mBAAmB,CAAC,yBAAyB,GAAG;AAC3D;AAEA,eAAe,QAAQ"}
@@ -1 +1 @@
1
- {"version":3,"file":"usePrivateDataObserver.d.ts","sourceRoot":"","sources":["../../src/orderly/usePrivateDataObserver.ts"],"names":[],"mappings":"AAQA,OAAO,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AAOjD,eAAO,MAAM,sBAAsB;uBAEd,MAAM,KAAK,IAAI,MAAM,EAAE,cAAc,CAAC;UAoK1D,CAAC"}
1
+ {"version":3,"file":"usePrivateDataObserver.d.ts","sourceRoot":"","sources":["../../src/orderly/usePrivateDataObserver.ts"],"names":[],"mappings":"AAOA,OAAO,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AAMjD,eAAO,MAAM,sBAAsB;uBAEd,MAAM,KAAK,IAAI,MAAM,EAAE,cAAc,CAAC;UAyJ1D,CAAC"}
@@ -95,40 +95,34 @@ const usePrivateDataObserver = (options)=>{
95
95
  const unsubscribe = ws.privateSubscribe("position", {
96
96
  onMessage: (data)=>{
97
97
  const { positions: nextPostions } = data;
98
- // console.log("ws----- positions data-----", data);
99
98
  // updatePositions();
100
99
  (0, _swr.mutate)(key, (prevPositions)=>{
101
100
  // return nextPostions;
102
101
  if (!!prevPositions) {
103
- return {
102
+ const newPostions = {
104
103
  ...prevPositions,
105
104
  rows: prevPositions.rows.map((row)=>{
106
- const item = nextPostions.find((item)=>item.symbol === row.symbol);
107
- if (item) {
108
- return {
109
- symbol: item.symbol,
110
- position_qty: item.positionQty,
111
- cost_position: item.costPosition,
112
- last_sum_unitary_funding: item.lastSumUnitaryFunding,
113
- pending_long_qty: item.pendingLongQty,
114
- pending_short_qty: item.pendingShortQty,
115
- settle_price: item.settlePrice,
116
- average_open_price: item.averageOpenPrice,
117
- unsettled_pnl: item.unsettledPnl,
118
- mark_price: item.markPrice,
119
- est_liq_price: item.estLiqPrice,
120
- timestamp: Date.now(),
121
- imr: item.imr,
122
- mmr: item.mmr,
123
- IMR_withdraw_orders: item.imrwithOrders,
124
- MMR_with_orders: item.mmrwithOrders,
125
- pnl_24_h: item.pnl24H,
126
- fee_24_h: item.fee24H
127
- };
105
+ const itemIndex = nextPostions.findIndex((item)=>item.symbol === row.symbol);
106
+ // const item = nextPostions.find(
107
+ // (item) => item.symbol === row.symbol
108
+ // );
109
+ if (itemIndex >= 0) {
110
+ const itemArr = nextPostions.splice(itemIndex, 1);
111
+ const item = itemArr[0];
112
+ return (0, _ws.object2underscore)(item);
128
113
  }
129
114
  return row;
130
115
  })
131
116
  };
117
+ if (nextPostions.length > 0) {
118
+ newPostions.rows = [
119
+ ...newPostions.rows,
120
+ ...nextPostions.map((item)=>{
121
+ return (0, _ws.object2underscore)(item);
122
+ })
123
+ ];
124
+ }
125
+ return newPostions;
132
126
  }
133
127
  }, {
134
128
  revalidate: false
@@ -141,16 +135,6 @@ const usePrivateDataObserver = (options)=>{
141
135
  }, [
142
136
  state.accountId
143
137
  ]);
144
- // cache algo orders
145
- // useEffect(() => {
146
- // const handler = (data: API.AlgoOrder) => {
147
- // algoOrderCacheQuneue.current.push(data);
148
- // };
149
- // ee.on("algoOrder:cache", handler);
150
- // return () => {
151
- // ee.off("algoOrder:cache", handler);
152
- // };
153
- // }, []);
154
138
  };
155
139
 
156
140
  //# sourceMappingURL=usePrivateDataObserver.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/orderly/usePrivateDataObserver.ts"],"sourcesContent":["import { useEffect, useRef } from \"react\";\nimport { useWS } from \"../useWS\";\nimport { mutate } from \"swr\";\nimport { WSMessage, API } from \"@orderly.network/types\";\nimport { useAccount } from \"../useAccount\";\nimport { unstable_serialize } from \"swr/infinite\";\nimport { useDebouncedCallback } from \"use-debounce\";\nimport { useEventEmitter } from \"../useEventEmitter\";\nimport { getKeyFunction } from \"../dataProvider\";\nimport { parseJSON } from \"../utils/json\";\nimport { updateOrdersHandler, updateAlgoOrdersHandler } from \"../utils/swr\";\nimport { AlgoOrderMergeHandler } from \"../services/orderMerge/algoOrderMergeHandler\";\nimport { object2underscore } from \"../utils/ws\";\nimport { useLocalStorage } from \"../useLocalStorage\";\n\nexport const usePrivateDataObserver = (options: {\n // onUpdateOrders: (data: any) => void;\n getKeysMap: (type: string) => Map<string, getKeyFunction>;\n}) => {\n const ws = useWS();\n // const { mutate } = useSWRConfig();\n const ee = useEventEmitter();\n const { state } = useAccount();\n\n // TODO: remove this when the WS service provides the correct data\n // const algoOrderCacheQuneue = useRef<API.AlgoOrder[]>([]);\n\n const [subOrder, setSubOrder] = useLocalStorage(\"orderly_subscribe_order\", true);\n\n const updateOrders = (\n data: WSMessage.AlgoOrder[] | WSMessage.Order,\n isAlgoOrder: boolean\n ) => {\n const keysMap = options.getKeysMap(\"orders\");\n\n keysMap.forEach((getKey, key) => {\n mutate(\n unstable_serialize((index, prevData) => [\n getKey(index, prevData),\n state.accountId,\n ]),\n (prevData?: any[]) => {\n try {\n if (isAlgoOrder) {\n const result = updateAlgoOrdersHandler(\n key,\n data as WSMessage.AlgoOrder[],\n prevData!\n );\n\n return result;\n }\n return updateOrdersHandler(key, data as WSMessage.Order, prevData);\n } catch (error) {\n return prevData;\n }\n },\n {\n revalidate: false,\n }\n );\n });\n\n // emit events;\n // ee.emit(\"orders:changed\", {\n // ...data,\n // status: data.status || (data as WSMessage.AlgoOrder).algoStatus,\n // });\n\n const formattedData = isAlgoOrder\n ? AlgoOrderMergeHandler.groupOrders(data as WSMessage.AlgoOrder[])\n : object2underscore(data);\n\n ee.emit(\"orders:changed\", {\n ...formattedData,\n status: isAlgoOrder\n ? formattedData.algo_status\n : (data as WSMessage.Order).status,\n });\n };\n\n // orders\n useEffect(() => {\n if (!state.accountId) return;\n if (subOrder !== true) return;\n const unsubscribe = ws.privateSubscribe(\"executionreport\", {\n onMessage: (data: any) => {\n updateOrders(data, false);\n },\n });\n\n return () => unsubscribe?.();\n }, [state.accountId, subOrder]);\n\n // algo orders\n useEffect(() => {\n if (!state.accountId) return;\n if (subOrder !== true) return;\n const unsubscribe = ws.privateSubscribe(\"algoexecutionreport\", {\n onMessage: (data: any) => {\n updateOrders(data, true);\n },\n });\n\n return () => unsubscribe?.();\n }, [state.accountId, subOrder]);\n\n // positions\n useEffect(() => {\n if (!state.accountId) return;\n const key = [\"/v1/positions\", state.accountId];\n const unsubscribe = ws.privateSubscribe(\"position\", {\n onMessage: (data: { positions: WSMessage.Position[] }) => {\n const { positions: nextPostions } = data;\n\n // console.log(\"ws----- positions data-----\", data);\n\n // updatePositions();\n\n mutate(\n key,\n (prevPositions: any) => {\n // return nextPostions;\n if (!!prevPositions) {\n return {\n ...prevPositions,\n rows: prevPositions.rows.map((row: any) => {\n const item = nextPostions.find(\n (item) => item.symbol === row.symbol\n );\n if (item) {\n return {\n symbol: item.symbol,\n position_qty: item.positionQty,\n cost_position: item.costPosition,\n last_sum_unitary_funding: item.lastSumUnitaryFunding,\n pending_long_qty: item.pendingLongQty,\n pending_short_qty: item.pendingShortQty,\n settle_price: item.settlePrice,\n average_open_price: item.averageOpenPrice,\n unsettled_pnl: item.unsettledPnl,\n mark_price: item.markPrice,\n est_liq_price: item.estLiqPrice,\n timestamp: Date.now(),\n imr: item.imr,\n mmr: item.mmr,\n IMR_withdraw_orders: item.imrwithOrders,\n MMR_with_orders: item.mmrwithOrders,\n pnl_24_h: item.pnl24H,\n fee_24_h: item.fee24H,\n };\n }\n\n return row;\n }),\n };\n }\n },\n {\n revalidate: false,\n }\n );\n },\n });\n return () => {\n unsubscribe?.();\n };\n }, [state.accountId]);\n\n // cache algo orders\n // useEffect(() => {\n // const handler = (data: API.AlgoOrder) => {\n // algoOrderCacheQuneue.current.push(data);\n // };\n\n // ee.on(\"algoOrder:cache\", handler);\n\n // return () => {\n // ee.off(\"algoOrder:cache\", handler);\n // };\n // }, []);\n};\n"],"names":["usePrivateDataObserver","options","ws","useWS","ee","useEventEmitter","state","useAccount","subOrder","setSubOrder","useLocalStorage","updateOrders","data","isAlgoOrder","keysMap","getKeysMap","forEach","getKey","key","mutate","unstable_serialize","index","prevData","accountId","result","updateAlgoOrdersHandler","updateOrdersHandler","error","revalidate","formattedData","AlgoOrderMergeHandler","groupOrders","object2underscore","emit","status","algo_status","useEffect","unsubscribe","privateSubscribe","onMessage","positions","nextPostions","prevPositions","rows","map","row","item","find","symbol","position_qty","positionQty","cost_position","costPosition","last_sum_unitary_funding","lastSumUnitaryFunding","pending_long_qty","pendingLongQty","pending_short_qty","pendingShortQty","settle_price","settlePrice","average_open_price","averageOpenPrice","unsettled_pnl","unsettledPnl","mark_price","markPrice","est_liq_price","estLiqPrice","timestamp","Date","now","imr","mmr","IMR_withdraw_orders","imrwithOrders","MMR_with_orders","mmrwithOrders","pnl_24_h","pnl24H","fee_24_h","fee24H"],"rangeMappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;","mappings":"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"}
1
+ {"version":3,"sources":["../../src/orderly/usePrivateDataObserver.ts"],"sourcesContent":["import { useEffect } from \"react\";\nimport { useWS } from \"../useWS\";\nimport { mutate } from \"swr\";\nimport { WSMessage } from \"@orderly.network/types\";\nimport { useAccount } from \"../useAccount\";\nimport { unstable_serialize } from \"swr/infinite\";\nimport { useEventEmitter } from \"../useEventEmitter\";\nimport { getKeyFunction } from \"../dataProvider\";\nimport { updateOrdersHandler, updateAlgoOrdersHandler } from \"../utils/swr\";\nimport { AlgoOrderMergeHandler } from \"../services/orderMerge/algoOrderMergeHandler\";\nimport { object2underscore } from \"../utils/ws\";\nimport { useLocalStorage } from \"../useLocalStorage\";\n\nexport const usePrivateDataObserver = (options: {\n // onUpdateOrders: (data: any) => void;\n getKeysMap: (type: string) => Map<string, getKeyFunction>;\n}) => {\n const ws = useWS();\n // const { mutate } = useSWRConfig();\n const ee = useEventEmitter();\n const { state } = useAccount();\n\n // TODO: remove this when the WS service provides the correct data\n // const algoOrderCacheQuneue = useRef<API.AlgoOrder[]>([]);\n\n const [subOrder, setSubOrder] = useLocalStorage(\n \"orderly_subscribe_order\",\n true\n );\n\n const updateOrders = (\n data: WSMessage.AlgoOrder[] | WSMessage.Order,\n isAlgoOrder: boolean\n ) => {\n const keysMap = options.getKeysMap(\"orders\");\n\n keysMap.forEach((getKey, key) => {\n mutate(\n unstable_serialize((index, prevData) => [\n getKey(index, prevData),\n state.accountId,\n ]),\n (prevData?: any[]) => {\n try {\n if (isAlgoOrder) {\n const result = updateAlgoOrdersHandler(\n key,\n data as WSMessage.AlgoOrder[],\n prevData!\n );\n\n return result;\n }\n return updateOrdersHandler(key, data as WSMessage.Order, prevData);\n } catch (error) {\n return prevData;\n }\n },\n {\n revalidate: false,\n }\n );\n });\n\n // emit events;\n // ee.emit(\"orders:changed\", {\n // ...data,\n // status: data.status || (data as WSMessage.AlgoOrder).algoStatus,\n // });\n\n const formattedData = isAlgoOrder\n ? AlgoOrderMergeHandler.groupOrders(data as WSMessage.AlgoOrder[])\n : object2underscore(data);\n\n ee.emit(\"orders:changed\", {\n ...formattedData,\n status: isAlgoOrder\n ? formattedData.algo_status\n : (data as WSMessage.Order).status,\n });\n };\n\n // orders\n useEffect(() => {\n if (!state.accountId) return;\n if (subOrder !== true) return;\n const unsubscribe = ws.privateSubscribe(\"executionreport\", {\n onMessage: (data: any) => {\n updateOrders(data, false);\n },\n });\n\n return () => unsubscribe?.();\n }, [state.accountId, subOrder]);\n\n // algo orders\n useEffect(() => {\n if (!state.accountId) return;\n if (subOrder !== true) return;\n const unsubscribe = ws.privateSubscribe(\"algoexecutionreport\", {\n onMessage: (data: any) => {\n updateOrders(data, true);\n },\n });\n\n return () => unsubscribe?.();\n }, [state.accountId, subOrder]);\n\n // positions\n useEffect(() => {\n if (!state.accountId) return;\n const key = [\"/v1/positions\", state.accountId];\n const unsubscribe = ws.privateSubscribe(\"position\", {\n onMessage: (data: { positions: WSMessage.Position[] }) => {\n const { positions: nextPostions } = data;\n\n // updatePositions();\n\n mutate(\n key,\n (prevPositions: any) => {\n // return nextPostions;\n if (!!prevPositions) {\n const newPostions = {\n ...prevPositions,\n rows: prevPositions.rows.map((row: any) => {\n const itemIndex = nextPostions.findIndex(\n (item) => item.symbol === row.symbol\n );\n\n // const item = nextPostions.find(\n // (item) => item.symbol === row.symbol\n // );\n\n if (itemIndex >= 0) {\n const itemArr = nextPostions.splice(itemIndex, 1);\n\n const item = itemArr[0];\n\n return object2underscore(item);\n }\n\n return row;\n }),\n };\n\n if (nextPostions.length > 0) {\n newPostions.rows = [\n ...newPostions.rows,\n ...nextPostions.map((item) => {\n return object2underscore(item);\n }),\n ];\n }\n\n return newPostions;\n }\n },\n {\n revalidate: false,\n }\n );\n },\n });\n return () => {\n unsubscribe?.();\n };\n }, [state.accountId]);\n};\n"],"names":["usePrivateDataObserver","options","ws","useWS","ee","useEventEmitter","state","useAccount","subOrder","setSubOrder","useLocalStorage","updateOrders","data","isAlgoOrder","keysMap","getKeysMap","forEach","getKey","key","mutate","unstable_serialize","index","prevData","accountId","result","updateAlgoOrdersHandler","updateOrdersHandler","error","revalidate","formattedData","AlgoOrderMergeHandler","groupOrders","object2underscore","emit","status","algo_status","useEffect","unsubscribe","privateSubscribe","onMessage","positions","nextPostions","prevPositions","newPostions","rows","map","row","itemIndex","findIndex","item","symbol","itemArr","splice","length"],"rangeMappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;","mappings":";;;;+BAaaA;;;eAAAA;;;uBAba;uBACJ;qBACC;4BAEI;0BACQ;iCACH;sBAE6B;uCACvB;oBACJ;iCACF;AAEzB,MAAMA,yBAAyB,CAACC;IAIrC,MAAMC,KAAKC,IAAAA,YAAK;IAChB,qCAAqC;IACrC,MAAMC,KAAKC,IAAAA,gCAAe;IAC1B,MAAM,EAAEC,KAAK,EAAE,GAAGC,IAAAA,sBAAU;IAE5B,kEAAkE;IAClE,4DAA4D;IAE5D,MAAM,CAACC,UAAUC,YAAY,GAAGC,IAAAA,gCAAe,EAC7C,2BACA;IAGF,MAAMC,eAAe,CACnBC,MACAC;QAEA,MAAMC,UAAUb,QAAQc,UAAU,CAAC;QAEnCD,QAAQE,OAAO,CAAC,CAACC,QAAQC;YACvBC,IAAAA,WAAM,EACJC,IAAAA,4BAAkB,EAAC,CAACC,OAAOC,WAAa;oBACtCL,OAAOI,OAAOC;oBACdhB,MAAMiB,SAAS;iBAChB,GACD,CAACD;gBACC,IAAI;oBACF,IAAIT,aAAa;wBACf,MAAMW,SAASC,IAAAA,6BAAuB,EACpCP,KACAN,MACAU;wBAGF,OAAOE;oBACT;oBACA,OAAOE,IAAAA,yBAAmB,EAACR,KAAKN,MAAyBU;gBAC3D,EAAE,OAAOK,OAAO;oBACd,OAAOL;gBACT;YACF,GACA;gBACEM,YAAY;YACd;QAEJ;QAEA,gBAAgB;QAChB,8BAA8B;QAC9B,aAAa;QACb,qEAAqE;QACrE,MAAM;QAEN,MAAMC,gBAAgBhB,cAClBiB,4CAAqB,CAACC,WAAW,CAACnB,QAClCoB,IAAAA,qBAAiB,EAACpB;QAEtBR,GAAG6B,IAAI,CAAC,kBAAkB;YACxB,GAAGJ,aAAa;YAChBK,QAAQrB,cACJgB,cAAcM,WAAW,GACzB,AAACvB,KAAyBsB,MAAM;QACtC;IACF;IAEA,SAAS;IACTE,IAAAA,gBAAS,EAAC;QACR,IAAI,CAAC9B,MAAMiB,SAAS,EAAE;QACtB,IAAIf,aAAa,MAAM;QACvB,MAAM6B,cAAcnC,GAAGoC,gBAAgB,CAAC,mBAAmB;YACzDC,WAAW,CAAC3B;gBACVD,aAAaC,MAAM;YACrB;QACF;QAEA,OAAO,IAAMyB;IACf,GAAG;QAAC/B,MAAMiB,SAAS;QAAEf;KAAS;IAE9B,cAAc;IACd4B,IAAAA,gBAAS,EAAC;QACR,IAAI,CAAC9B,MAAMiB,SAAS,EAAE;QACtB,IAAIf,aAAa,MAAM;QACvB,MAAM6B,cAAcnC,GAAGoC,gBAAgB,CAAC,uBAAuB;YAC7DC,WAAW,CAAC3B;gBACVD,aAAaC,MAAM;YACrB;QACF;QAEA,OAAO,IAAMyB;IACf,GAAG;QAAC/B,MAAMiB,SAAS;QAAEf;KAAS;IAE9B,YAAY;IACZ4B,IAAAA,gBAAS,EAAC;QACR,IAAI,CAAC9B,MAAMiB,SAAS,EAAE;QACtB,MAAML,MAAM;YAAC;YAAiBZ,MAAMiB,SAAS;SAAC;QAC9C,MAAMc,cAAcnC,GAAGoC,gBAAgB,CAAC,YAAY;YAClDC,WAAW,CAAC3B;gBACV,MAAM,EAAE4B,WAAWC,YAAY,EAAE,GAAG7B;gBAEpC,qBAAqB;gBAErBO,IAAAA,WAAM,EACJD,KACA,CAACwB;oBACC,uBAAuB;oBACvB,IAAI,CAAC,CAACA,eAAe;wBACnB,MAAMC,cAAc;4BAClB,GAAGD,aAAa;4BAChBE,MAAMF,cAAcE,IAAI,CAACC,GAAG,CAAC,CAACC;gCAC5B,MAAMC,YAAYN,aAAaO,SAAS,CACtC,CAACC,OAASA,KAAKC,MAAM,KAAKJ,IAAII,MAAM;gCAGtC,kCAAkC;gCAClC,yCAAyC;gCACzC,KAAK;gCAEL,IAAIH,aAAa,GAAG;oCAClB,MAAMI,UAAUV,aAAaW,MAAM,CAACL,WAAW;oCAE/C,MAAME,OAAOE,OAAO,CAAC,EAAE;oCAEvB,OAAOnB,IAAAA,qBAAiB,EAACiB;gCAC3B;gCAEA,OAAOH;4BACT;wBACF;wBAEA,IAAIL,aAAaY,MAAM,GAAG,GAAG;4BAC3BV,YAAYC,IAAI,GAAG;mCACdD,YAAYC,IAAI;mCAChBH,aAAaI,GAAG,CAAC,CAACI;oCACnB,OAAOjB,IAAAA,qBAAiB,EAACiB;gCAC3B;6BACD;wBACH;wBAEA,OAAON;oBACT;gBACF,GACA;oBACEf,YAAY;gBACd;YAEJ;QACF;QACA,OAAO;YACLS;QACF;IACF,GAAG;QAAC/B,MAAMiB,SAAS;KAAC;AACtB"}
package/lib/version.d.ts CHANGED
@@ -5,6 +5,6 @@ declare global {
5
5
  };
6
6
  }
7
7
  }
8
- declare const _default: "1.5.5";
8
+ declare const _default: "1.5.6";
9
9
  export default _default;
10
10
  //# sourceMappingURL=version.d.ts.map
package/lib/version.js CHANGED
@@ -10,8 +10,8 @@ Object.defineProperty(exports, "default", {
10
10
  });
11
11
  if (typeof window !== 'undefined') {
12
12
  window.__ORDERLY_VERSION__ = window.__ORDERLY_VERSION__ || {};
13
- window.__ORDERLY_VERSION__["@orderly.network/hooks"] = "1.5.5";
13
+ window.__ORDERLY_VERSION__["@orderly.network/hooks"] = "1.5.6";
14
14
  }
15
- const _default = "1.5.5";
15
+ const _default = "1.5.6";
16
16
 
17
17
  //# sourceMappingURL=version.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/version.ts"],"sourcesContent":["\ndeclare global {\n interface Window {\n __ORDERLY_VERSION__?: {\n [key: string]: string;\n };\n }\n}\nif(typeof window !== 'undefined') {\n window.__ORDERLY_VERSION__ = window.__ORDERLY_VERSION__ || {};\n window.__ORDERLY_VERSION__[\"@orderly.network/hooks\"] = \"1.5.5\";\n};\n\nexport default \"1.5.5\";\n"],"names":["window","__ORDERLY_VERSION__"],"rangeMappings":";;;;;;;;;;;;;;","mappings":";;;;+BAaA;;;eAAA;;;AALA,IAAG,OAAOA,WAAW,aAAa;IAC9BA,OAAOC,mBAAmB,GAAGD,OAAOC,mBAAmB,IAAI,CAAC;IAC5DD,OAAOC,mBAAmB,CAAC,yBAAyB,GAAG;AAC3D;MAEA,WAAe"}
1
+ {"version":3,"sources":["../src/version.ts"],"sourcesContent":["\ndeclare global {\n interface Window {\n __ORDERLY_VERSION__?: {\n [key: string]: string;\n };\n }\n}\nif(typeof window !== 'undefined') {\n window.__ORDERLY_VERSION__ = window.__ORDERLY_VERSION__ || {};\n window.__ORDERLY_VERSION__[\"@orderly.network/hooks\"] = \"1.5.6\";\n};\n\nexport default \"1.5.6\";\n"],"names":["window","__ORDERLY_VERSION__"],"rangeMappings":";;;;;;;;;;;;;;","mappings":";;;;+BAaA;;;eAAA;;;AALA,IAAG,OAAOA,WAAW,aAAa;IAC9BA,OAAOC,mBAAmB,GAAGD,OAAOC,mBAAmB,IAAI,CAAC;IAC5DD,OAAOC,mBAAmB,CAAC,yBAAyB,GAAG;AAC3D;MAEA,WAAe"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@orderly.network/hooks",
3
- "version": "1.5.5",
3
+ "version": "1.5.6",
4
4
  "description": "",
5
5
  "main": "lib/index.js",
6
6
  "module": "esm/index.js",
@@ -33,7 +33,7 @@
33
33
  "tsup": "^7.1.0",
34
34
  "typedoc": "^0.24.8",
35
35
  "typescript": "^5.1.6",
36
- "tsconfig": "0.3.5"
36
+ "tsconfig": "0.3.6"
37
37
  },
38
38
  "dependencies": {
39
39
  "@akamfoad/qr": "^0.4.0",
@@ -41,11 +41,11 @@
41
41
  "swr": "2.2.4",
42
42
  "use-constant": "^1.1.1",
43
43
  "use-debounce": "^9.0.4",
44
- "@orderly.network/core": "1.5.5",
45
- "@orderly.network/net": "1.5.5",
46
- "@orderly.network/perp": "3.3.5",
47
- "@orderly.network/types": "1.5.5",
48
- "@orderly.network/utils": "1.5.5"
44
+ "@orderly.network/net": "1.5.6",
45
+ "@orderly.network/core": "1.5.6",
46
+ "@orderly.network/perp": "3.3.6",
47
+ "@orderly.network/types": "1.5.6",
48
+ "@orderly.network/utils": "1.5.6"
49
49
  },
50
50
  "publishConfig": {
51
51
  "access": "public"