nsekit 0.3.0 → 0.3.1

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/README.md CHANGED
@@ -63,7 +63,7 @@ await broker.sync();
63
63
  // => { instrumentCount: 184302, source: 'network' }
64
64
 
65
65
  // Resolve, search, or trade — all on the broker
66
- const inst = broker.resolve('NIFTY-24000-CE-27FEB26'); // exact canonical lookup
66
+ const inst = broker.resolve('NIFTY-24000-CE-27FEB26'); // unified nsekit symbol lookup
67
67
  const results = broker.search('NIFTY', 'NFO', 'CE', 10); // fuzzy search
68
68
  ```
69
69
 
@@ -130,9 +130,9 @@ await imaster.syncBroker('finvasia', finvasiaBroker.instruments);
130
130
  // NIFTY-24000-CE-27FEB26 now has both zerodha and finvasia tokens
131
131
  ```
132
132
 
133
- ### Canonical symbol format
133
+ ### Unified nsekit symbol format
134
134
 
135
- All instruments are indexed using a standardized format, regardless of which broker provided them:
135
+ All instruments are indexed using a unified nsekit symbol format, regardless of which broker provided them:
136
136
 
137
137
  ```
138
138
  EQ: TATAMOTORS (just underlying)
@@ -200,7 +200,7 @@ const order = unwrap(result);
200
200
 
201
201
  ### Instrument Master
202
202
 
203
- See the [Instrument Master](#instrument-master) section above for full usage. In short: each broker implements `IBrokerInstruments` with `streamDump()` and `normalize()`. The `normalize()` function sets `underlying`, `instrumentType`, `strike`, and `expiry` — `InstrumentMaster` builds canonical symbols automatically and merges entries across brokers.
203
+ See the [Instrument Master](#instrument-master) section above for full usage. In short: each broker implements `IBrokerInstruments` with `streamDump()` and `normalize()`. The `normalize()` function sets `underlying`, `instrumentType`, `strike`, and `expiry` — `InstrumentMaster` builds unified nsekit symbols automatically and merges entries across brokers.
204
204
 
205
205
  ### Paper Broker
206
206
 
@@ -1 +1 @@
1
- {"version":3,"file":"DhanBroker.d.ts","sourceRoot":"","sources":["../../../src/brokers/dhan/DhanBroker.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"DhanBroker.d.ts","sourceRoot":"","sources":["../../../src/brokers/dhan/DhanBroker.ts"],"names":[],"mappings":"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"}
@@ -1,7 +1,11 @@
1
1
  /**
2
2
  * Dhan WebSocket adapter.
3
- * Connects to the Dhan Market Feed WebSocket for live tick data.
4
- * Dhan uses a binary protocol over WebSocket.
3
+ * Connects to the Dhan Market Feed v2 WebSocket for live tick data.
4
+ *
5
+ * Protocol:
6
+ * - Subscribe/unsubscribe requests are JSON.
7
+ * - Tick responses are binary (little-endian).
8
+ * - 8-byte response header: [code(1), msgLen(2), exchSeg(1), securityId(4)]
5
9
  */
6
10
  import type { WSConnectionState } from '../../types/common';
7
11
  import type { TickCallback, Subscription } from '../../types/broker';
@@ -24,7 +28,7 @@ export declare class DhanSocket {
24
28
  disconnect(): void;
25
29
  /**
26
30
  * Subscribe to securityIds.
27
- * Tokens should be in "EXCHANGE_SEGMENT:SECURITY_ID" format.
31
+ * Tokens should be in "EXCHANGE_SEGMENT|SECURITY_ID" format (e.g. "NSE_EQ|1333").
28
32
  */
29
33
  subscribe(tokens: string[], callback: TickCallback, symbolMap?: Map<string, string>): Subscription;
30
34
  /** Unsubscribe from a subscription. */
@@ -33,6 +37,32 @@ export declare class DhanSocket {
33
37
  getConnectionState(): WSConnectionState;
34
38
  /** Register symbol lookups. */
35
39
  setSymbolMap(map: Map<string, string>): void;
40
+ /**
41
+ * Parse a Dhan Market Feed v2 binary response.
42
+ *
43
+ * Header (8 bytes):
44
+ * Byte 0: Feed response code
45
+ * Bytes 1-2: Message length (int16 LE)
46
+ * Byte 3: Exchange segment (numeric)
47
+ * Bytes 4-7: Security ID (int32 LE)
48
+ *
49
+ * Ticker (code 2) — 16 bytes total:
50
+ * Bytes 8-11: LTP (float32 LE)
51
+ * Bytes 12-15: Last Trade Time epoch (int32 LE)
52
+ *
53
+ * Quote (code 4) — 50 bytes total:
54
+ * Bytes 8-11: LTP (float32 LE)
55
+ * Bytes 12-13: Last Traded Qty (int16 LE)
56
+ * Bytes 14-17: Last Trade Time (int32 LE)
57
+ * Bytes 18-21: Avg Traded Price (float32 LE)
58
+ * Bytes 22-25: Volume (int32 LE)
59
+ * Bytes 26-29: Total Sell Qty (int32 LE)
60
+ * Bytes 30-33: Total Buy Qty (int32 LE)
61
+ * Bytes 34-37: Day Open (float32 LE)
62
+ * Bytes 38-41: Day Close (float32 LE)
63
+ * Bytes 42-45: Day High (float32 LE)
64
+ * Bytes 46-49: Day Low (float32 LE)
65
+ */
36
66
  private handleBinaryMessage;
37
67
  private handleJsonMessage;
38
68
  private sendSubscribe;
@@ -1 +1 @@
1
- {"version":3,"file":"dhan-socket.d.ts","sourceRoot":"","sources":["../../../src/brokers/dhan/dhan-socket.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AAC5D,OAAO,KAAK,EAAe,YAAY,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AA0BlF,qBAAa,UAAU;IACrB,OAAO,CAAC,EAAE,CAA0B;IACpC,OAAO,CAAC,KAAK,CAAqC;IAClD,OAAO,CAAC,aAAa,CAAmC;IACxD,OAAO,CAAC,aAAa,CAA6B;IAClD,OAAO,CAAC,gBAAgB,CAAqB;IAE7C,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAS;IAClC,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAS;IACrC,OAAO,CAAC,iBAAiB,CAAK;IAC9B,OAAO,CAAC,aAAa,CAAK;IAC1B,OAAO,CAAC,cAAc,CAA8C;IACpE,OAAO,CAAC,cAAc,CAA+C;gBAEzD,QAAQ,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM;IAKjD,8CAA8C;IAC9C,OAAO,IAAI,IAAI;IAkDf,6BAA6B;IAC7B,UAAU,IAAI,IAAI;IAYlB;;;OAGG;IACH,SAAS,CAAC,MAAM,EAAE,MAAM,EAAE,EAAE,QAAQ,EAAE,YAAY,EAAE,SAAS,CAAC,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,YAAY;IAuBlG,uCAAuC;IACvC,WAAW,CAAC,GAAG,EAAE,YAAY,GAAG,IAAI;IAsBpC,gCAAgC;IAChC,kBAAkB,IAAI,iBAAiB;IAIvC,+BAA+B;IAC/B,YAAY,CAAC,GAAG,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,IAAI;IAQ5C,OAAO,CAAC,mBAAmB;IAkC3B,OAAO,CAAC,iBAAiB;IAWzB,OAAO,CAAC,aAAa;IAoBrB,OAAO,CAAC,eAAe;IAoBvB,OAAO,CAAC,YAAY;IAYpB,OAAO,CAAC,cAAc;IAatB,OAAO,CAAC,aAAa;IAOrB,OAAO,CAAC,gBAAgB;IAYxB,OAAO,CAAC,mBAAmB;CAM5B"}
1
+ {"version":3,"file":"dhan-socket.d.ts","sourceRoot":"","sources":["../../../src/brokers/dhan/dhan-socket.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAGH,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AAC5D,OAAO,KAAK,EAAe,YAAY,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAgDlF,qBAAa,UAAU;IACrB,OAAO,CAAC,EAAE,CAAmB;IAC7B,OAAO,CAAC,KAAK,CAAqC;IAClD,OAAO,CAAC,aAAa,CAAmC;IACxD,OAAO,CAAC,aAAa,CAA6B;IAClD,OAAO,CAAC,gBAAgB,CAAqB;IAE7C,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAS;IAClC,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAS;IACrC,OAAO,CAAC,iBAAiB,CAAK;IAC9B,OAAO,CAAC,aAAa,CAAK;IAC1B,OAAO,CAAC,cAAc,CAA8C;IACpE,OAAO,CAAC,cAAc,CAA+C;gBAEzD,QAAQ,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM;IAKjD,8CAA8C;IAC9C,OAAO,IAAI,IAAI;IAwDf,6BAA6B;IAC7B,UAAU,IAAI,IAAI;IAYlB;;;OAGG;IACH,SAAS,CAAC,MAAM,EAAE,MAAM,EAAE,EAAE,QAAQ,EAAE,YAAY,EAAE,SAAS,CAAC,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,YAAY;IAuBlG,uCAAuC;IACvC,WAAW,CAAC,GAAG,EAAE,YAAY,GAAG,IAAI;IAsBpC,gCAAgC;IAChC,kBAAkB,IAAI,iBAAiB;IAIvC,+BAA+B;IAC/B,YAAY,CAAC,GAAG,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,IAAI;IAQ5C;;;;;;;;;;;;;;;;;;;;;;;;;OAyBG;IACH,OAAO,CAAC,mBAAmB;IAkE3B,OAAO,CAAC,iBAAiB;IAczB,OAAO,CAAC,aAAa;IAoBrB,OAAO,CAAC,eAAe;IAoBvB,OAAO,CAAC,YAAY;IAYpB,OAAO,CAAC,cAAc;IAatB,OAAO,CAAC,aAAa;IAOrB,OAAO,CAAC,gBAAgB;IAYxB,OAAO,CAAC,mBAAmB;CAM5B"}
@@ -1 +1 @@
1
- {"version":3,"file":"FinvasiaBroker.d.ts","sourceRoot":"","sources":["../../../src/brokers/finvasia/FinvasiaBroker.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"FinvasiaBroker.d.ts","sourceRoot":"","sources":["../../../src/brokers/finvasia/FinvasiaBroker.ts"],"names":[],"mappings":"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"}
@@ -15,7 +15,7 @@ export declare const STATUS_FROM_SHOONYA: Record<string, OrderStatus>;
15
15
  export declare const VALIDITY_TO_SHOONYA: Record<Validity, string>;
16
16
  export declare const VALIDITY_FROM_SHOONYA: Record<string, Validity>;
17
17
  export declare const SHOONYA_API_BASE = "https://api.shoonya.com/NorenWClientTP";
18
- export declare const SHOONYA_WS_URL = "wss://api.shoonya.com/NorenWSTP";
18
+ export declare const SHOONYA_WS_URL = "wss://api.shoonya.com/NorenWSTP/";
19
19
  export declare const SHOONYA_INSTRUMENTS_BASE = "https://api.shoonya.com/";
20
20
  export declare const SHOONYA_INSTRUMENT_FILES: Record<string, string>;
21
21
  export declare const CANDLE_INTERVAL_TO_SHOONYA: Record<string, string>;
@@ -1 +1 @@
1
- {"version":3,"file":"finvasia-constants.d.ts","sourceRoot":"","sources":["../../../src/brokers/finvasia/finvasia-constants.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,QAAQ,EAAE,OAAO,EAAE,SAAS,EAAE,WAAW,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AAI9F,eAAO,MAAM,mBAAmB,EAAE,MAAM,CAAC,QAAQ,EAAE,MAAM,CAOxD,CAAC;AAEF,eAAO,MAAM,qBAAqB,EAAE,MAAM,CAAC,MAAM,EAAE,QAAQ,CAO1D,CAAC;AAIF,eAAO,MAAM,kBAAkB,EAAE,MAAM,CAAC,OAAO,EAAE,MAAM,CAItD,CAAC;AAEF,eAAO,MAAM,oBAAoB,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAIxD,CAAC;AAIF,eAAO,MAAM,qBAAqB,EAAE,MAAM,CAAC,SAAS,EAAE,MAAM,CAK3D,CAAC;AAEF,eAAO,MAAM,uBAAuB,EAAE,MAAM,CAAC,MAAM,EAAE,SAAS,CAK7D,CAAC;AAIF,eAAO,MAAM,eAAe,EAAE,MAAM,CAAC,KAAK,GAAG,MAAM,EAAE,MAAM,CAG1D,CAAC;AAEF,eAAO,MAAM,iBAAiB,EAAE,MAAM,CAAC,MAAM,EAAE,KAAK,GAAG,MAAM,CAG5D,CAAC;AAIF,eAAO,MAAM,mBAAmB,EAAE,MAAM,CAAC,MAAM,EAAE,WAAW,CAQ3D,CAAC;AAIF,eAAO,MAAM,mBAAmB,EAAE,MAAM,CAAC,QAAQ,EAAE,MAAM,CAGxD,CAAC;AAEF,eAAO,MAAM,qBAAqB,EAAE,MAAM,CAAC,MAAM,EAAE,QAAQ,CAG1D,CAAC;AAIF,eAAO,MAAM,gBAAgB,2CAA2C,CAAC;AACzE,eAAO,MAAM,cAAc,oCAAoC,CAAC;AAChE,eAAO,MAAM,wBAAwB,6BAA6B,CAAC;AAInE,eAAO,MAAM,wBAAwB,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAO3D,CAAC;AAIF,eAAO,MAAM,0BAA0B,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAM7D,CAAC"}
1
+ {"version":3,"file":"finvasia-constants.d.ts","sourceRoot":"","sources":["../../../src/brokers/finvasia/finvasia-constants.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,QAAQ,EAAE,OAAO,EAAE,SAAS,EAAE,WAAW,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AAI9F,eAAO,MAAM,mBAAmB,EAAE,MAAM,CAAC,QAAQ,EAAE,MAAM,CAOxD,CAAC;AAEF,eAAO,MAAM,qBAAqB,EAAE,MAAM,CAAC,MAAM,EAAE,QAAQ,CAO1D,CAAC;AAIF,eAAO,MAAM,kBAAkB,EAAE,MAAM,CAAC,OAAO,EAAE,MAAM,CAItD,CAAC;AAEF,eAAO,MAAM,oBAAoB,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAIxD,CAAC;AAIF,eAAO,MAAM,qBAAqB,EAAE,MAAM,CAAC,SAAS,EAAE,MAAM,CAK3D,CAAC;AAEF,eAAO,MAAM,uBAAuB,EAAE,MAAM,CAAC,MAAM,EAAE,SAAS,CAK7D,CAAC;AAIF,eAAO,MAAM,eAAe,EAAE,MAAM,CAAC,KAAK,GAAG,MAAM,EAAE,MAAM,CAG1D,CAAC;AAEF,eAAO,MAAM,iBAAiB,EAAE,MAAM,CAAC,MAAM,EAAE,KAAK,GAAG,MAAM,CAG5D,CAAC;AAIF,eAAO,MAAM,mBAAmB,EAAE,MAAM,CAAC,MAAM,EAAE,WAAW,CAQ3D,CAAC;AAIF,eAAO,MAAM,mBAAmB,EAAE,MAAM,CAAC,QAAQ,EAAE,MAAM,CAGxD,CAAC;AAEF,eAAO,MAAM,qBAAqB,EAAE,MAAM,CAAC,MAAM,EAAE,QAAQ,CAG1D,CAAC;AAIF,eAAO,MAAM,gBAAgB,2CAA2C,CAAC;AACzE,eAAO,MAAM,cAAc,qCAAqC,CAAC;AACjE,eAAO,MAAM,wBAAwB,6BAA6B,CAAC;AAInE,eAAO,MAAM,wBAAwB,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAO3D,CAAC;AAIF,eAAO,MAAM,0BAA0B,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAM7D,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"finvasia-socket.d.ts","sourceRoot":"","sources":["../../../src/brokers/finvasia/finvasia-socket.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AAC5D,OAAO,KAAK,EAAe,YAAY,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAelF,qBAAa,cAAc;IACzB,OAAO,CAAC,EAAE,CAA0B;IACpC,OAAO,CAAC,KAAK,CAAqC;IAClD,OAAO,CAAC,aAAa,CAAmC;IACxD,OAAO,CAAC,aAAa,CAA6B;IAClD,OAAO,CAAC,gBAAgB,CAAqB;IAE7C,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAS;IAChC,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAS;IACrC,OAAO,CAAC,iBAAiB,CAAK;IAC9B,OAAO,CAAC,aAAa,CAAK;IAC1B,OAAO,CAAC,cAAc,CAA8C;gBAExD,MAAM,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM;IAK/C,iDAAiD;IACjD,OAAO,IAAI,IAAI;IA2Cf,6BAA6B;IAC7B,UAAU,IAAI,IAAI;IAWlB;;;OAGG;IACH,SAAS,CAAC,MAAM,EAAE,MAAM,EAAE,EAAE,QAAQ,EAAE,YAAY,EAAE,SAAS,CAAC,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,YAAY;IAuBlG,0DAA0D;IAC1D,WAAW,CAAC,GAAG,EAAE,YAAY,GAAG,IAAI;IAuBpC,gCAAgC;IAChC,kBAAkB,IAAI,iBAAiB;IAIvC,oDAAoD;IACpD,YAAY,CAAC,GAAG,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,IAAI;IAQ5C,OAAO,CAAC,aAAa;IA2BrB,OAAO,CAAC,aAAa;IAWrB,OAAO,CAAC,eAAe;IAUvB,OAAO,CAAC,YAAY;IAYpB,OAAO,CAAC,gBAAgB;IAYxB,OAAO,CAAC,mBAAmB;CAM5B"}
1
+ {"version":3,"file":"finvasia-socket.d.ts","sourceRoot":"","sources":["../../../src/brokers/finvasia/finvasia-socket.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AAC5D,OAAO,KAAK,EAAe,YAAY,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAelF,qBAAa,cAAc;IACzB,OAAO,CAAC,EAAE,CAAmB;IAC7B,OAAO,CAAC,KAAK,CAAqC;IAClD,OAAO,CAAC,aAAa,CAAmC;IACxD,OAAO,CAAC,aAAa,CAA6B;IAClD,OAAO,CAAC,gBAAgB,CAAqB;IAE7C,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAS;IAChC,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAS;IACrC,OAAO,CAAC,iBAAiB,CAAK;IAC9B,OAAO,CAAC,aAAa,CAAK;IAC1B,OAAO,CAAC,cAAc,CAA8C;gBAExD,MAAM,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM;IAK/C,iDAAiD;IACjD,OAAO,IAAI,IAAI;IAgDf,6BAA6B;IAC7B,UAAU,IAAI,IAAI;IAWlB;;;OAGG;IACH,SAAS,CAAC,MAAM,EAAE,MAAM,EAAE,EAAE,QAAQ,EAAE,YAAY,EAAE,SAAS,CAAC,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,YAAY;IAuBlG,0DAA0D;IAC1D,WAAW,CAAC,GAAG,EAAE,YAAY,GAAG,IAAI;IAuBpC,gCAAgC;IAChC,kBAAkB,IAAI,iBAAiB;IAIvC,oDAAoD;IACpD,YAAY,CAAC,GAAG,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,IAAI;IAQ5C,OAAO,CAAC,aAAa;IAgCrB,OAAO,CAAC,aAAa;IAWrB,OAAO,CAAC,eAAe;IAUvB,OAAO,CAAC,YAAY;IAYpB,OAAO,CAAC,gBAAgB;IAYxB,OAAO,CAAC,mBAAmB;CAM5B"}
package/dist/index.js CHANGED
@@ -21012,7 +21012,7 @@ var VALIDITY_FROM_SHOONYA = {
21012
21012
  IOC: "IOC"
21013
21013
  };
21014
21014
  var SHOONYA_API_BASE = "https://api.shoonya.com/NorenWClientTP";
21015
- var SHOONYA_WS_URL = "wss://api.shoonya.com/NorenWSTP";
21015
+ var SHOONYA_WS_URL = "wss://api.shoonya.com/NorenWSTP/";
21016
21016
  var SHOONYA_INSTRUMENTS_BASE = "https://api.shoonya.com/";
21017
21017
  var SHOONYA_INSTRUMENT_FILES = {
21018
21018
  NSE: "NSE_symbols.txt.zip",
@@ -21312,6 +21312,7 @@ function fromQuote2(quote) {
21312
21312
  }
21313
21313
 
21314
21314
  // src/brokers/finvasia/finvasia-socket.ts
21315
+ import WS from "ws";
21315
21316
  var subIdCounter3 = 0;
21316
21317
  function nextSubId3() {
21317
21318
  subIdCounter3 += 1;
@@ -21338,12 +21339,13 @@ class FinvasiaSocket {
21338
21339
  return;
21339
21340
  this.state = "CONNECTING";
21340
21341
  try {
21341
- this.ws = new WebSocket(SHOONYA_WS_URL);
21342
+ this.ws = new WS(SHOONYA_WS_URL);
21342
21343
  } catch {
21343
21344
  this.state = "DISCONNECTED";
21344
21345
  return;
21345
21346
  }
21346
- this.ws.onopen = () => {
21347
+ this.ws.on("open", () => {
21348
+ console.log(`[FinvasiaSocket] WS open, sending auth for uid=${this.userId}`);
21347
21349
  const authMsg = JSON.stringify({
21348
21350
  t: "c",
21349
21351
  uid: this.userId,
@@ -21352,18 +21354,23 @@ class FinvasiaSocket {
21352
21354
  source: "API"
21353
21355
  });
21354
21356
  this.ws.send(authMsg);
21355
- };
21356
- this.ws.onmessage = (event) => {
21357
+ });
21358
+ this.ws.on("message", (raw) => {
21357
21359
  try {
21358
- const data = JSON.parse(String(event.data));
21360
+ const text = raw.toString();
21361
+ console.log(`[FinvasiaSocket] WS msg: ${text.slice(0, 200)}`);
21362
+ const data = JSON.parse(text);
21359
21363
  this.handleMessage(data);
21360
21364
  } catch {}
21361
- };
21362
- this.ws.onclose = () => {
21365
+ });
21366
+ this.ws.on("close", (code, reason) => {
21367
+ console.error(`[FinvasiaSocket] WS closed: code=${code}, reason=${reason.toString()}`);
21363
21368
  this.state = "DISCONNECTED";
21364
21369
  this.attemptReconnect();
21365
- };
21366
- this.ws.onerror = () => {};
21370
+ });
21371
+ this.ws.on("error", (err) => {
21372
+ console.error(`[FinvasiaSocket] WS error:`, err.message);
21373
+ });
21367
21374
  }
21368
21375
  disconnect() {
21369
21376
  this.clearReconnectTimer();
@@ -21434,9 +21441,12 @@ class FinvasiaSocket {
21434
21441
  }
21435
21442
  if (type === "tf" || type === "tk" || type === "dk" || type === "df") {
21436
21443
  const tick = data;
21437
- const tokenKey = tick.tk;
21438
- const symbol = this.tokenToSymbol.get(tokenKey);
21444
+ const rawToken = tick.tk;
21445
+ const exch = data["e"] ?? "";
21446
+ const fullKey = exch ? `${exch}|${rawToken}` : rawToken;
21447
+ const symbol = this.tokenToSymbol.get(fullKey) ?? this.tokenToSymbol.get(rawToken);
21439
21448
  const unified = fromTick2(tick, symbol);
21449
+ unified.token = fullKey;
21440
21450
  this.dispatchTick(unified);
21441
21451
  return;
21442
21452
  }
@@ -21756,20 +21766,28 @@ class FinvasiaBroker {
21756
21766
  async modifyOrder(orderId, params) {
21757
21767
  try {
21758
21768
  const uid = this.session?.userId ?? "";
21759
- const payload = {
21769
+ const histRaw = await this.post("SingleOrdHist", {
21760
21770
  uid,
21761
21771
  norenordno: orderId
21772
+ });
21773
+ if (!Array.isArray(histRaw) || histRaw.length === 0) {
21774
+ return Err(new Error(`Cannot modify order ${orderId}: order not found`));
21775
+ }
21776
+ const latestOrder = histRaw[histRaw.length - 1];
21777
+ const payload = {
21778
+ uid,
21779
+ norenordno: orderId,
21780
+ exch: latestOrder.exch,
21781
+ tsym: latestOrder.tsym,
21782
+ prctyp: latestOrder.prctyp,
21783
+ prc: String(params.price ?? latestOrder.prc),
21784
+ qty: String(params.quantity ?? latestOrder.qty),
21785
+ ret: params.validity ?? latestOrder.ret
21762
21786
  };
21763
- if (params.price !== undefined)
21764
- payload["prc"] = String(params.price);
21765
- if (params.quantity !== undefined)
21766
- payload["qty"] = String(params.quantity);
21767
21787
  if (params.triggerPrice !== undefined)
21768
21788
  payload["trgprc"] = String(params.triggerPrice);
21769
21789
  if (params.type !== undefined)
21770
21790
  payload["prctyp"] = params.type;
21771
- if (params.validity !== undefined)
21772
- payload["ret"] = params.validity;
21773
21791
  const res = await this.post("ModifyOrder", payload);
21774
21792
  if (res.stat !== "Ok") {
21775
21793
  return Err(new Error(`Order modification failed: ${res.emsg ?? "Unknown error"}`));
@@ -21839,7 +21857,7 @@ class FinvasiaBroker {
21839
21857
  async getPositions() {
21840
21858
  try {
21841
21859
  const uid = this.session?.userId ?? "";
21842
- const raw = await this.post("PositionBook", { uid });
21860
+ const raw = await this.post("PositionBook", { uid, actid: uid });
21843
21861
  if (!Array.isArray(raw))
21844
21862
  return Ok([]);
21845
21863
  return Ok(raw.map(fromPosition2));
@@ -22113,7 +22131,7 @@ var EXCHANGE_FROM_DHAN = {
22113
22131
  NSE_CURRENCY: "CDS"
22114
22132
  };
22115
22133
  var PRODUCT_TO_DHAN = {
22116
- INTRADAY: "INTRA",
22134
+ INTRADAY: "INTRADAY",
22117
22135
  DELIVERY: "CNC",
22118
22136
  NORMAL: "MARGIN"
22119
22137
  };
@@ -22391,11 +22409,28 @@ function fromQuote3(quote, symbol, exchange) {
22391
22409
  }
22392
22410
 
22393
22411
  // src/brokers/dhan/dhan-socket.ts
22412
+ import WS2 from "ws";
22394
22413
  var subIdCounter4 = 0;
22395
22414
  function nextSubId4() {
22396
22415
  subIdCounter4 += 1;
22397
22416
  return `dsub_${subIdCounter4}`;
22398
22417
  }
22418
+ var EXCH_SEG_FROM_BYTE = {
22419
+ 0: "IDX",
22420
+ 1: "NSE_EQ",
22421
+ 2: "NSE_FNO",
22422
+ 3: "NSE_CURRENCY",
22423
+ 4: "BSE_EQ",
22424
+ 5: "BSE_FNO",
22425
+ 6: "MCX_COMM"
22426
+ };
22427
+ function splitToken(token) {
22428
+ const sep = token.includes("|") ? "|" : ":";
22429
+ const idx = token.indexOf(sep);
22430
+ if (idx === -1)
22431
+ return ["NSE_EQ", token];
22432
+ return [token.slice(0, idx), token.slice(idx + 1)];
22433
+ }
22399
22434
 
22400
22435
  class DhanSocket {
22401
22436
  ws = null;
@@ -22419,36 +22454,36 @@ class DhanSocket {
22419
22454
  this.state = "CONNECTING";
22420
22455
  try {
22421
22456
  const url = `${DHAN_WS_URL}?version=2&token=${this.accessToken}&clientId=${this.clientId}&authType=2`;
22422
- this.ws = new WebSocket(url);
22423
- this.ws.binaryType = "arraybuffer";
22457
+ this.ws = new WS2(url);
22424
22458
  } catch {
22425
22459
  this.state = "DISCONNECTED";
22426
22460
  return;
22427
22461
  }
22428
- this.ws.onopen = () => {
22462
+ this.ws.on("open", () => {
22429
22463
  this.state = "CONNECTED";
22430
22464
  this.reconnectAttempts = 0;
22431
22465
  this.startHeartbeat();
22432
22466
  if (this.subscribedTokens.size > 0) {
22433
22467
  this.sendSubscribe(Array.from(this.subscribedTokens));
22434
22468
  }
22435
- };
22436
- this.ws.onmessage = (event) => {
22469
+ });
22470
+ this.ws.on("message", (raw, isBinary) => {
22437
22471
  try {
22438
- if (event.data instanceof ArrayBuffer) {
22439
- this.handleBinaryMessage(event.data);
22472
+ if (isBinary) {
22473
+ const buf = raw instanceof ArrayBuffer ? Buffer.from(raw) : Buffer.isBuffer(raw) ? raw : Array.isArray(raw) ? Buffer.concat(raw) : Buffer.from(raw);
22474
+ this.handleBinaryMessage(buf);
22440
22475
  } else {
22441
- const data = JSON.parse(String(event.data));
22476
+ const data = JSON.parse(raw.toString());
22442
22477
  this.handleJsonMessage(data);
22443
22478
  }
22444
22479
  } catch {}
22445
- };
22446
- this.ws.onclose = () => {
22480
+ });
22481
+ this.ws.on("close", () => {
22447
22482
  this.state = "DISCONNECTED";
22448
22483
  this.stopHeartbeat();
22449
22484
  this.attemptReconnect();
22450
- };
22451
- this.ws.onerror = () => {};
22485
+ });
22486
+ this.ws.on("error", () => {});
22452
22487
  }
22453
22488
  disconnect() {
22454
22489
  this.clearReconnectTimer();
@@ -22506,39 +22541,74 @@ class DhanSocket {
22506
22541
  this.tokenToSymbol.set(token, symbol);
22507
22542
  }
22508
22543
  }
22509
- handleBinaryMessage(buffer) {
22510
- const view = new DataView(buffer);
22511
- if (buffer.byteLength < 48)
22544
+ handleBinaryMessage(data) {
22545
+ if (data.length < 8)
22512
22546
  return;
22513
- try {
22547
+ const responseCode = data.readUInt8(0);
22548
+ const exchSegByte = data.readUInt8(3);
22549
+ const securityId = data.readInt32LE(4);
22550
+ const exchangeSegment = EXCH_SEG_FROM_BYTE[exchSegByte] ?? "NSE_EQ";
22551
+ const fullKey = `${exchangeSegment}|${securityId}`;
22552
+ if (responseCode === 2 && data.length >= 16) {
22553
+ const ltp = data.readFloatLE(8);
22554
+ const ltt = data.readInt32LE(12);
22514
22555
  const tick = {
22515
- securityId: view.getInt32(0, true),
22516
- LTP: view.getFloat32(4, true),
22517
- open: view.getFloat32(8, true),
22518
- high: view.getFloat32(12, true),
22519
- low: view.getFloat32(16, true),
22520
- close: view.getFloat32(20, true),
22521
- volume: view.getInt32(24, true),
22522
- OI: view.getInt32(28, true),
22523
- bestBidPrice: view.getFloat32(32, true),
22524
- bestAskPrice: view.getFloat32(36, true),
22525
- bestBidQty: view.getInt32(40, true),
22526
- bestAskQty: view.getInt32(44, true),
22527
- exchangeSegment: "",
22528
- timestamp: Date.now()
22556
+ securityId,
22557
+ LTP: ltp,
22558
+ open: 0,
22559
+ high: 0,
22560
+ low: 0,
22561
+ close: 0,
22562
+ volume: 0,
22563
+ bestBidPrice: 0,
22564
+ bestAskPrice: 0,
22565
+ bestBidQty: 0,
22566
+ bestAskQty: 0,
22567
+ exchangeSegment,
22568
+ timestamp: ltt > 0 ? ltt * 1000 : Date.now()
22529
22569
  };
22530
- const tokenStr = String(tick.securityId);
22531
- const symbol = this.tokenToSymbol.get(tokenStr);
22570
+ const symbol = this.tokenToSymbol.get(fullKey) ?? this.tokenToSymbol.get(String(securityId));
22532
22571
  const unified = fromTick3(tick, symbol);
22572
+ unified.token = fullKey;
22533
22573
  this.dispatchTick(unified);
22534
- } catch {}
22574
+ } else if (responseCode === 4 && data.length >= 50) {
22575
+ const ltp = data.readFloatLE(8);
22576
+ const ltt = data.readInt32LE(14);
22577
+ const volume = data.readInt32LE(22);
22578
+ const totalSellQty = data.readInt32LE(26);
22579
+ const totalBuyQty = data.readInt32LE(30);
22580
+ const open = data.readFloatLE(34);
22581
+ const close = data.readFloatLE(38);
22582
+ const high = data.readFloatLE(42);
22583
+ const low = data.readFloatLE(46);
22584
+ const tick = {
22585
+ securityId,
22586
+ LTP: ltp,
22587
+ open,
22588
+ high,
22589
+ low,
22590
+ close,
22591
+ volume,
22592
+ bestBidPrice: 0,
22593
+ bestAskPrice: 0,
22594
+ bestBidQty: totalBuyQty,
22595
+ bestAskQty: totalSellQty,
22596
+ exchangeSegment,
22597
+ timestamp: ltt > 0 ? ltt * 1000 : Date.now()
22598
+ };
22599
+ const symbol = this.tokenToSymbol.get(fullKey) ?? this.tokenToSymbol.get(String(securityId));
22600
+ const unified = fromTick3(tick, symbol);
22601
+ unified.token = fullKey;
22602
+ this.dispatchTick(unified);
22603
+ }
22535
22604
  }
22536
22605
  handleJsonMessage(data) {
22537
22606
  if (data["type"] === "ticker_data") {
22538
22607
  const tick = data;
22539
- const tokenStr = String(tick.securityId);
22540
- const symbol = this.tokenToSymbol.get(tokenStr);
22608
+ const fullKey = tick.exchangeSegment ? `${tick.exchangeSegment}|${tick.securityId}` : String(tick.securityId);
22609
+ const symbol = this.tokenToSymbol.get(fullKey) ?? this.tokenToSymbol.get(String(tick.securityId));
22541
22610
  const unified = fromTick3(tick, symbol);
22611
+ unified.token = fullKey;
22542
22612
  this.dispatchTick(unified);
22543
22613
  }
22544
22614
  }
@@ -22546,10 +22616,10 @@ class DhanSocket {
22546
22616
  if (!this.ws || this.state !== "CONNECTED")
22547
22617
  return;
22548
22618
  const instruments = tokens.map((t) => {
22549
- const parts = t.split(":");
22619
+ const [segment, id] = splitToken(t);
22550
22620
  return {
22551
- ExchangeSegment: parts[0] ?? "NSE_EQ",
22552
- SecurityId: parts[1] ?? parts[0]
22621
+ ExchangeSegment: segment,
22622
+ SecurityId: id
22553
22623
  };
22554
22624
  });
22555
22625
  const request = {
@@ -22563,10 +22633,10 @@ class DhanSocket {
22563
22633
  if (!this.ws || this.state !== "CONNECTED")
22564
22634
  return;
22565
22635
  const instruments = tokens.map((t) => {
22566
- const parts = t.split(":");
22636
+ const [segment, id] = splitToken(t);
22567
22637
  return {
22568
- ExchangeSegment: parts[0] ?? "NSE_EQ",
22569
- SecurityId: parts[1] ?? parts[0]
22638
+ ExchangeSegment: segment,
22639
+ SecurityId: id
22570
22640
  };
22571
22641
  });
22572
22642
  const request = {
@@ -22590,7 +22660,7 @@ class DhanSocket {
22590
22660
  this.heartbeatTimer = setInterval(() => {
22591
22661
  if (this.ws && this.state === "CONNECTED") {
22592
22662
  try {
22593
- this.ws.send(JSON.stringify({ RequestCode: 12 }));
22663
+ this.ws.ping();
22594
22664
  } catch {}
22595
22665
  }
22596
22666
  }, 30000);
@@ -22902,20 +22972,18 @@ class DhanBroker {
22902
22972
  }
22903
22973
  async modifyOrder(orderId, params) {
22904
22974
  try {
22975
+ const rawOrder = await this.request("GET", `/orders/${orderId}`);
22976
+ const original = Array.isArray(rawOrder) ? rawOrder[0] : rawOrder;
22905
22977
  const payload = {
22906
22978
  dhanClientId: this.clientId,
22907
- orderId
22979
+ orderId,
22980
+ orderType: params.type ? ORDER_TYPE_TO_DHAN[params.type] ?? original.orderType : original.orderType,
22981
+ validity: params.validity ?? original.validity ?? "DAY",
22982
+ quantity: params.quantity ?? original.quantity,
22983
+ price: params.price ?? original.price
22908
22984
  };
22909
- if (params.price !== undefined)
22910
- payload["price"] = params.price;
22911
- if (params.quantity !== undefined)
22912
- payload["quantity"] = params.quantity;
22913
22985
  if (params.triggerPrice !== undefined)
22914
22986
  payload["triggerPrice"] = params.triggerPrice;
22915
- if (params.type !== undefined)
22916
- payload["orderType"] = params.type;
22917
- if (params.validity !== undefined)
22918
- payload["validity"] = params.validity;
22919
22987
  const res = await this.request("PUT", `/orders/${orderId}`, payload);
22920
22988
  return Ok({
22921
22989
  orderId: res.orderId ?? orderId,
@@ -22982,7 +23050,11 @@ class DhanBroker {
22982
23050
  return Ok([]);
22983
23051
  return Ok(raw.map((h) => fromHolding3(h)));
22984
23052
  } catch (err) {
22985
- return Err(err instanceof Error ? err : new Error(String(err)));
23053
+ const msg = err instanceof Error ? err.message : String(err);
23054
+ if (msg.includes("No holdings available") || msg.includes("DH-1111")) {
23055
+ return Ok([]);
23056
+ }
23057
+ return Err(err instanceof Error ? err : new Error(msg));
22986
23058
  }
22987
23059
  }
22988
23060
  async getLTP(symbols) {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "nsekit",
3
- "version": "0.3.0",
3
+ "version": "0.3.1",
4
4
  "description": "Unified broker abstraction for Indian stock markets - CCXT-like interface for NSE/BSE brokers",
5
5
  "type": "module",
6
6
  "main": "dist/index.js",