nsekit 0.3.1 → 0.3.2
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/brokers/dhan/DhanBroker.d.ts +14 -0
- package/dist/brokers/dhan/DhanBroker.d.ts.map +1 -1
- package/dist/brokers/dhan/dhan-auth.d.ts +33 -4
- package/dist/brokers/dhan/dhan-auth.d.ts.map +1 -1
- package/dist/brokers/dhan/dhan-constants.d.ts +1 -0
- package/dist/brokers/dhan/dhan-constants.d.ts.map +1 -1
- package/dist/brokers/dhan/dhan-instruments.d.ts.map +1 -1
- package/dist/brokers/dhan/dhan-mapper.d.ts +1 -0
- package/dist/brokers/dhan/dhan-mapper.d.ts.map +1 -1
- package/dist/brokers/dhan/dhan-socket.d.ts +8 -0
- package/dist/brokers/dhan/dhan-socket.d.ts.map +1 -1
- package/dist/brokers/finvasia/FinvasiaBroker.d.ts +8 -0
- package/dist/brokers/finvasia/FinvasiaBroker.d.ts.map +1 -1
- package/dist/brokers/finvasia/finvasia-instruments.d.ts +1 -1
- package/dist/brokers/finvasia/finvasia-instruments.d.ts.map +1 -1
- package/dist/brokers/finvasia/finvasia-mapper.d.ts +5 -1
- package/dist/brokers/finvasia/finvasia-mapper.d.ts.map +1 -1
- package/dist/brokers/finvasia/finvasia-socket.d.ts +8 -2
- package/dist/brokers/finvasia/finvasia-socket.d.ts.map +1 -1
- package/dist/index.js +273 -32
- package/dist/instruments/instrument-master.d.ts.map +1 -1
- package/package.json +12 -3
|
@@ -15,6 +15,7 @@ import type { IBrokerInstruments, UnifiedInstrument } from '../../types/instrume
|
|
|
15
15
|
import type { IBroker } from '../../interfaces/broker.interface';
|
|
16
16
|
import { type Result } from '../../errors/result';
|
|
17
17
|
import { type SyncMeta, type BrokerOptions } from '../../instruments/instrument-master';
|
|
18
|
+
import type { ConsentResult } from './dhan-auth';
|
|
18
19
|
export declare class DhanBroker implements IBroker {
|
|
19
20
|
readonly id: BrokerId;
|
|
20
21
|
readonly name = "Dhan";
|
|
@@ -23,6 +24,7 @@ export declare class DhanBroker implements IBroker {
|
|
|
23
24
|
private session;
|
|
24
25
|
private socket;
|
|
25
26
|
private clientId;
|
|
27
|
+
private oauthCreds;
|
|
26
28
|
private readonly instrumentsImpl;
|
|
27
29
|
private readonly _iMaster;
|
|
28
30
|
constructor(options?: BrokerOptions);
|
|
@@ -30,6 +32,16 @@ export declare class DhanBroker implements IBroker {
|
|
|
30
32
|
refreshSession(session: AuthSession): Promise<Result<AuthSession>>;
|
|
31
33
|
isSessionValid(): boolean;
|
|
32
34
|
getSessionExpiry(): Date | null;
|
|
35
|
+
/**
|
|
36
|
+
* OAuth Step 1: Generate consent and return the login URL.
|
|
37
|
+
* Stores credentials internally for use in consumeConsent.
|
|
38
|
+
*/
|
|
39
|
+
generateConsent(creds: BrokerCredentials): Promise<Result<ConsentResult>>;
|
|
40
|
+
/**
|
|
41
|
+
* OAuth Step 2: Exchange tokenId (from callback) for an access_token.
|
|
42
|
+
* Must be called after generateConsent. Sets the session on success.
|
|
43
|
+
*/
|
|
44
|
+
consumeConsent(tokenId: string): Promise<Result<AuthSession>>;
|
|
33
45
|
sync(force?: boolean): Promise<Result<SyncMeta>>;
|
|
34
46
|
resolve(input: string): Result<UnifiedInstrument>;
|
|
35
47
|
search(query: string, exchange?: Exchange, instrumentType?: InstrumentType, limit?: number): UnifiedInstrument[];
|
|
@@ -45,6 +57,8 @@ export declare class DhanBroker implements IBroker {
|
|
|
45
57
|
getOptionChain(underlying: string, expiry: Date): Promise<Result<OptionChainRow[]>>;
|
|
46
58
|
getCandles(symbol: string, interval: CandleInterval, from: Date, to: Date): Promise<Result<Candle[]>>;
|
|
47
59
|
subscribeTicks(tokens: string[], cb: TickCallback): Subscription;
|
|
60
|
+
/** Register token → tradingSymbol mappings so ticks resolve to proper symbols. */
|
|
61
|
+
setSymbolMap(map: Map<string, string>): void;
|
|
48
62
|
unsubscribeTicks(sub: Subscription): void;
|
|
49
63
|
getConnectionState(): WSConnectionState;
|
|
50
64
|
getMargins(): Promise<Result<MarginInfo>>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DhanBroker.d.ts","sourceRoot":"","sources":["../../../src/brokers/dhan/DhanBroker.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,KAAK,EAAE,QAAQ,EAAE,QAAQ,EAAE,cAAc,EAAE,cAAc,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AAChH,OAAO,KAAK,EACV,iBAAiB,EACjB,WAAW,EACX,kBAAkB,EAClB,YAAY,EACZ,WAAW,EACX,YAAY,EACZ,YAAY,EACZ,WAAW,EACX,eAAe,EACf,cAAc,EAEd,KAAK,EACL,cAAc,EACd,MAAM,EACN,UAAU,EACV,QAAQ,EACR,KAAK,EACL,QAAQ,EACR,YAAY,EACZ,YAAY,EACZ,kBAAkB,EACnB,MAAM,oBAAoB,CAAC;AAC5B,OAAO,KAAK,EAAE,kBAAkB,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAC;AACrF,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,mCAAmC,CAAC;AACjE,OAAO,EAAW,KAAK,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAC3D,OAAO,EAAoB,KAAK,QAAQ,EAAE,KAAK,aAAa,EAAE,MAAM,qCAAqC,CAAC;
|
|
1
|
+
{"version":3,"file":"DhanBroker.d.ts","sourceRoot":"","sources":["../../../src/brokers/dhan/DhanBroker.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,13 +1,17 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Dhan authentication flow.
|
|
3
|
-
* Dhan uses a simple client_id + access_token pair.
|
|
4
|
-
* The access_token is generated from the Dhan developer portal
|
|
5
|
-
* and typically has a longer validity (30 days or until revoked).
|
|
6
3
|
*
|
|
7
|
-
*
|
|
4
|
+
* Supports two modes:
|
|
5
|
+
* 1. Token mode — user supplies a pre-generated access_token + client_id.
|
|
6
|
+
* 2. OAuth mode — 2-step consent flow (generateConsent → consumeConsent).
|
|
7
|
+
* Requires apiKey (App ID), apiSecret (App Secret), and userId (Dhan Client ID).
|
|
8
8
|
*/
|
|
9
9
|
import type { AuthSession, BrokerCredentials } from '../../types/broker';
|
|
10
10
|
import { type Result } from '../../errors/result';
|
|
11
|
+
export interface ConsentResult {
|
|
12
|
+
consentAppId: string;
|
|
13
|
+
loginUrl: string;
|
|
14
|
+
}
|
|
11
15
|
/**
|
|
12
16
|
* Authenticate with Dhan using client_id and access_token.
|
|
13
17
|
*
|
|
@@ -18,6 +22,31 @@ import { type Result } from '../../errors/result';
|
|
|
18
22
|
* Validates the token by fetching the user profile.
|
|
19
23
|
*/
|
|
20
24
|
export declare function authenticate(creds: BrokerCredentials): Promise<Result<AuthSession>>;
|
|
25
|
+
/**
|
|
26
|
+
* OAuth Step 1: Generate consent.
|
|
27
|
+
*
|
|
28
|
+
* Calls Dhan auth API to create a consentAppId, then returns the login URL
|
|
29
|
+
* that the consumer should redirect the user to.
|
|
30
|
+
*
|
|
31
|
+
* Required credentials:
|
|
32
|
+
* - apiKey: App ID from DhanHQ developer portal
|
|
33
|
+
* - apiSecret: App Secret from DhanHQ developer portal
|
|
34
|
+
* - userId: Dhan Client ID
|
|
35
|
+
*
|
|
36
|
+
* @returns ConsentResult with `consentAppId` and `loginUrl`
|
|
37
|
+
*/
|
|
38
|
+
export declare function generateConsent(creds: BrokerCredentials): Promise<Result<ConsentResult>>;
|
|
39
|
+
/**
|
|
40
|
+
* OAuth Step 2: Consume consent.
|
|
41
|
+
*
|
|
42
|
+
* After the user logs in and authorizes, the callback URL receives a `tokenId`.
|
|
43
|
+
* This function exchanges that tokenId for an access_token.
|
|
44
|
+
*
|
|
45
|
+
* @param creds - Same credentials used in generateConsent (apiKey + apiSecret)
|
|
46
|
+
* @param tokenId - The tokenId received from the Dhan callback URL
|
|
47
|
+
* @returns AuthSession with the new access_token
|
|
48
|
+
*/
|
|
49
|
+
export declare function consumeConsent(creds: BrokerCredentials, tokenId: string): Promise<Result<AuthSession>>;
|
|
21
50
|
/**
|
|
22
51
|
* Dhan tokens are pre-generated and do not support refresh.
|
|
23
52
|
* When a token expires, the user must generate a new one from the portal.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dhan-auth.d.ts","sourceRoot":"","sources":["../../../src/brokers/dhan/dhan-auth.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,KAAK,EAAE,WAAW,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AACzE,OAAO,EAAW,KAAK,MAAM,EAAE,MAAM,qBAAqB,CAAC;
|
|
1
|
+
{"version":3,"file":"dhan-auth.d.ts","sourceRoot":"","sources":["../../../src/brokers/dhan/dhan-auth.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,KAAK,EAAE,WAAW,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AACzE,OAAO,EAAW,KAAK,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAwB3D,MAAM,WAAW,aAAa;IAC5B,YAAY,EAAE,MAAM,CAAC;IACrB,QAAQ,EAAE,MAAM,CAAC;CAClB;AAID;;;;;;;;GAQG;AACH,wBAAsB,YAAY,CAAC,KAAK,EAAE,iBAAiB,GAAG,OAAO,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC,CAwCzF;AAID;;;;;;;;;;;;GAYG;AACH,wBAAsB,eAAe,CAAC,KAAK,EAAE,iBAAiB,GAAG,OAAO,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC,CAsC9F;AAED;;;;;;;;;GASG;AACH,wBAAsB,cAAc,CAClC,KAAK,EAAE,iBAAiB,EACxB,OAAO,EAAE,MAAM,GACd,OAAO,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC,CAgD9B;AAID;;;GAGG;AACH,wBAAsB,cAAc,CAAC,QAAQ,EAAE,WAAW,GAAG,OAAO,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC,CAExF;AAED,iEAAiE;AACjE,wBAAgB,cAAc,CAAC,OAAO,EAAE,WAAW,GAAG,IAAI,GAAG,OAAO,CAGnE"}
|
|
@@ -15,6 +15,7 @@ export declare const STATUS_FROM_DHAN: Record<string, OrderStatus>;
|
|
|
15
15
|
export declare const VALIDITY_TO_DHAN: Record<Validity, string>;
|
|
16
16
|
export declare const VALIDITY_FROM_DHAN: Record<string, Validity>;
|
|
17
17
|
export declare const DHAN_API_BASE = "https://api.dhan.co/v2";
|
|
18
|
+
export declare const DHAN_AUTH_BASE = "https://auth.dhan.co";
|
|
18
19
|
export declare const DHAN_WS_URL = "wss://api-feed.dhan.co";
|
|
19
20
|
export declare const DHAN_INSTRUMENTS_URL = "https://images.dhan.co/api-data/api-scrip-master.csv";
|
|
20
21
|
export declare const CANDLE_INTERVAL_TO_DHAN: Record<string, string>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dhan-constants.d.ts","sourceRoot":"","sources":["../../../src/brokers/dhan/dhan-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,gBAAgB,EAAE,MAAM,CAAC,QAAQ,EAAE,MAAM,CAOrD,CAAC;AAEF,eAAO,MAAM,kBAAkB,EAAE,MAAM,CAAC,MAAM,EAAE,QAAQ,CAOvD,CAAC;AAIF,eAAO,MAAM,eAAe,EAAE,MAAM,CAAC,OAAO,EAAE,MAAM,CAInD,CAAC;AAEF,eAAO,MAAM,iBAAiB,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAOrD,CAAC;AAIF,eAAO,MAAM,kBAAkB,EAAE,MAAM,CAAC,SAAS,EAAE,MAAM,CAKxD,CAAC;AAEF,eAAO,MAAM,oBAAoB,EAAE,MAAM,CAAC,MAAM,EAAE,SAAS,CAK1D,CAAC;AAIF,eAAO,MAAM,YAAY,EAAE,MAAM,CAAC,KAAK,GAAG,MAAM,EAAE,MAAM,CAGvD,CAAC;AAEF,eAAO,MAAM,cAAc,EAAE,MAAM,CAAC,MAAM,EAAE,KAAK,GAAG,MAAM,CAGzD,CAAC;AAIF,eAAO,MAAM,gBAAgB,EAAE,MAAM,CAAC,MAAM,EAAE,WAAW,CAQxD,CAAC;AAIF,eAAO,MAAM,gBAAgB,EAAE,MAAM,CAAC,QAAQ,EAAE,MAAM,CAGrD,CAAC;AAEF,eAAO,MAAM,kBAAkB,EAAE,MAAM,CAAC,MAAM,EAAE,QAAQ,CAGvD,CAAC;AAIF,eAAO,MAAM,aAAa,2BAA2B,CAAC;AACtD,eAAO,MAAM,WAAW,2BAA2B,CAAC;AACpD,eAAO,MAAM,oBAAoB,yDAAyD,CAAC;AAI3F,eAAO,MAAM,uBAAuB,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAM1D,CAAC"}
|
|
1
|
+
{"version":3,"file":"dhan-constants.d.ts","sourceRoot":"","sources":["../../../src/brokers/dhan/dhan-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,gBAAgB,EAAE,MAAM,CAAC,QAAQ,EAAE,MAAM,CAOrD,CAAC;AAEF,eAAO,MAAM,kBAAkB,EAAE,MAAM,CAAC,MAAM,EAAE,QAAQ,CAOvD,CAAC;AAIF,eAAO,MAAM,eAAe,EAAE,MAAM,CAAC,OAAO,EAAE,MAAM,CAInD,CAAC;AAEF,eAAO,MAAM,iBAAiB,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAOrD,CAAC;AAIF,eAAO,MAAM,kBAAkB,EAAE,MAAM,CAAC,SAAS,EAAE,MAAM,CAKxD,CAAC;AAEF,eAAO,MAAM,oBAAoB,EAAE,MAAM,CAAC,MAAM,EAAE,SAAS,CAK1D,CAAC;AAIF,eAAO,MAAM,YAAY,EAAE,MAAM,CAAC,KAAK,GAAG,MAAM,EAAE,MAAM,CAGvD,CAAC;AAEF,eAAO,MAAM,cAAc,EAAE,MAAM,CAAC,MAAM,EAAE,KAAK,GAAG,MAAM,CAGzD,CAAC;AAIF,eAAO,MAAM,gBAAgB,EAAE,MAAM,CAAC,MAAM,EAAE,WAAW,CAQxD,CAAC;AAIF,eAAO,MAAM,gBAAgB,EAAE,MAAM,CAAC,QAAQ,EAAE,MAAM,CAGrD,CAAC;AAEF,eAAO,MAAM,kBAAkB,EAAE,MAAM,CAAC,MAAM,EAAE,QAAQ,CAGvD,CAAC;AAIF,eAAO,MAAM,aAAa,2BAA2B,CAAC;AACtD,eAAO,MAAM,cAAc,yBAAyB,CAAC;AACrD,eAAO,MAAM,WAAW,2BAA2B,CAAC;AACpD,eAAO,MAAM,oBAAoB,yDAAyD,CAAC;AAI3F,eAAO,MAAM,uBAAuB,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAM1D,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dhan-instruments.d.ts","sourceRoot":"","sources":["../../../src/brokers/dhan/dhan-instruments.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,KAAK,EAAE,QAAQ,EAAkB,MAAM,oBAAoB,CAAC;AACnE,OAAO,KAAK,EACV,kBAAkB,EAClB,mBAAmB,EACnB,qBAAqB,EACtB,MAAM,yBAAyB,CAAC;AACjC,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAC;
|
|
1
|
+
{"version":3,"file":"dhan-instruments.d.ts","sourceRoot":"","sources":["../../../src/brokers/dhan/dhan-instruments.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,KAAK,EAAE,QAAQ,EAAkB,MAAM,oBAAoB,CAAC;AACnE,OAAO,KAAK,EACV,kBAAkB,EAClB,mBAAmB,EACnB,qBAAqB,EACtB,MAAM,yBAAyB,CAAC;AACjC,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAyElD,qBAAa,eAAgB,YAAW,kBAAkB;IACxD,QAAQ,CAAC,YAAY;;;;;MAKnB;IAEF,OAAO,CAAC,WAAW,CAAM;IACzB,OAAO,CAAC,QAAQ,CAAM;IAEtB,mDAAmD;IACnD,cAAc,CAAC,QAAQ,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,GAAG,IAAI;IAK3D;;OAEG;IACI,UAAU,IAAI,aAAa,CAAC,mBAAmB,CAAC;IAoDvD;;OAEG;IACG,SAAS,CAAC,KAAK,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,QAAQ,GAAG,OAAO,CAAC,MAAM,CAAC,qBAAqB,EAAE,CAAC,CAAC;IAmD7F,4DAA4D;IAC5D,SAAS,CAAC,GAAG,EAAE,mBAAmB,GAAG,qBAAqB;CAoC3D"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dhan-mapper.d.ts","sourceRoot":"","sources":["../../../src/brokers/dhan/dhan-mapper.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"dhan-mapper.d.ts","sourceRoot":"","sources":["../../../src/brokers/dhan/dhan-mapper.ts"],"names":[],"mappings":"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"}
|
|
@@ -46,6 +46,14 @@ export declare class DhanSocket {
|
|
|
46
46
|
* Byte 3: Exchange segment (numeric)
|
|
47
47
|
* Bytes 4-7: Security ID (int32 LE)
|
|
48
48
|
*
|
|
49
|
+
* Index (code 1) — 32 bytes total:
|
|
50
|
+
* Bytes 8-11: LTP (float32 LE)
|
|
51
|
+
* Bytes 12-15: Last Trade Time epoch (int32 LE)
|
|
52
|
+
* Bytes 16-19: Day Open (float32 LE)
|
|
53
|
+
* Bytes 20-23: Day Close (float32 LE)
|
|
54
|
+
* Bytes 24-27: Day High (float32 LE)
|
|
55
|
+
* Bytes 28-31: Day Low (float32 LE)
|
|
56
|
+
*
|
|
49
57
|
* Ticker (code 2) — 16 bytes total:
|
|
50
58
|
* Bytes 8-11: LTP (float32 LE)
|
|
51
59
|
* Bytes 12-15: Last Trade Time epoch (int32 LE)
|
|
@@ -1 +1 @@
|
|
|
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;
|
|
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;AAiDlF,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;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OAiCG;IACH,OAAO,CAAC,mBAAmB;IA4F3B,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"}
|
|
@@ -22,6 +22,7 @@ export declare class FinvasiaBroker implements IBroker {
|
|
|
22
22
|
readonly has: BrokerCapabilities;
|
|
23
23
|
private session;
|
|
24
24
|
private socket;
|
|
25
|
+
private credentials;
|
|
25
26
|
private readonly instrumentsImpl;
|
|
26
27
|
private readonly _iMaster;
|
|
27
28
|
constructor(options?: BrokerOptions);
|
|
@@ -44,6 +45,8 @@ export declare class FinvasiaBroker implements IBroker {
|
|
|
44
45
|
getOptionChain(underlying: string, expiry: Date): Promise<Result<OptionChainRow[]>>;
|
|
45
46
|
getCandles(symbol: string, interval: CandleInterval, from: Date, to: Date): Promise<Result<Candle[]>>;
|
|
46
47
|
subscribeTicks(tokens: string[], cb: TickCallback): Subscription;
|
|
48
|
+
/** Register token → tradingSymbol mappings so ticks resolve to proper symbols. */
|
|
49
|
+
setSymbolMap(map: Map<string, string>): void;
|
|
47
50
|
unsubscribeTicks(sub: Subscription): void;
|
|
48
51
|
getConnectionState(): WSConnectionState;
|
|
49
52
|
getMargins(): Promise<Result<MarginInfo>>;
|
|
@@ -52,5 +55,10 @@ export declare class FinvasiaBroker implements IBroker {
|
|
|
52
55
|
getPnLReport(_from: Date, _to: Date): Promise<Result<PnLEntry[]>>;
|
|
53
56
|
private post;
|
|
54
57
|
private ensureSocket;
|
|
58
|
+
/**
|
|
59
|
+
* Called when the WebSocket receives a "ck NOT_OK" response.
|
|
60
|
+
* Re-authenticates with stored credentials and reconnects with the fresh token.
|
|
61
|
+
*/
|
|
62
|
+
private handleSocketAuthFailed;
|
|
55
63
|
}
|
|
56
64
|
//# sourceMappingURL=FinvasiaBroker.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"FinvasiaBroker.d.ts","sourceRoot":"","sources":["../../../src/brokers/finvasia/FinvasiaBroker.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,KAAK,EAAE,QAAQ,EAAE,QAAQ,EAAE,cAAc,EAAE,cAAc,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AAChH,OAAO,KAAK,EACV,iBAAiB,EACjB,WAAW,EACX,kBAAkB,EAClB,YAAY,EACZ,WAAW,EACX,YAAY,EACZ,YAAY,EACZ,WAAW,EACX,eAAe,EACf,cAAc,EAEd,KAAK,EACL,cAAc,EACd,MAAM,EACN,UAAU,EACV,QAAQ,EACR,KAAK,EACL,QAAQ,EACR,YAAY,EACZ,YAAY,EACZ,kBAAkB,EACnB,MAAM,oBAAoB,CAAC;AAC5B,OAAO,KAAK,EAAE,kBAAkB,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAC;AACrF,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,mCAAmC,CAAC;AACjE,OAAO,EAAW,KAAK,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAC3D,OAAO,EAAoB,KAAK,QAAQ,EAAE,KAAK,aAAa,EAAE,MAAM,qCAAqC,CAAC;AAU1G,qBAAa,cAAe,YAAW,OAAO;IAC5C,QAAQ,CAAC,EAAE,EAAE,QAAQ,CAAc;IACnC,QAAQ,CAAC,IAAI,wBAAwB;IACrC,QAAQ,CAAC,WAAW,EAAE,kBAAkB,CAAC;IACzC,QAAQ,CAAC,GAAG,EAAE,kBAAkB,CAO9B;IAEF,OAAO,CAAC,OAAO,CAA4B;IAC3C,OAAO,CAAC,MAAM,CAA+B;IAC7C,OAAO,CAAC,QAAQ,CAAC,eAAe,CAAsB;IACtD,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAmB;gBAEhC,OAAO,CAAC,EAAE,aAAa;IAQ7B,YAAY,CAAC,KAAK,EAAE,iBAAiB,GAAG,OAAO,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"FinvasiaBroker.d.ts","sourceRoot":"","sources":["../../../src/brokers/finvasia/FinvasiaBroker.ts"],"names":[],"mappings":"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"}
|
|
@@ -21,7 +21,7 @@ export declare class FinvasiaInstruments implements IBrokerInstruments {
|
|
|
21
21
|
setCredentials(userId: string, accessToken: string): void;
|
|
22
22
|
/**
|
|
23
23
|
* Stream instruments from all per-exchange ZIP files.
|
|
24
|
-
* Yields raw row objects parsed from
|
|
24
|
+
* Yields raw row objects parsed from comma-delimited CSV text.
|
|
25
25
|
*/
|
|
26
26
|
streamDump(): AsyncIterable<RawBrokerInstrument>;
|
|
27
27
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"finvasia-instruments.d.ts","sourceRoot":"","sources":["../../../src/brokers/finvasia/finvasia-instruments.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;
|
|
1
|
+
{"version":3,"file":"finvasia-instruments.d.ts","sourceRoot":"","sources":["../../../src/brokers/finvasia/finvasia-instruments.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAGH,OAAO,KAAK,EAAE,QAAQ,EAAkB,MAAM,oBAAoB,CAAC;AACnE,OAAO,KAAK,EACV,kBAAkB,EAClB,mBAAmB,EACnB,qBAAqB,EACtB,MAAM,yBAAyB,CAAC;AACjC,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAyGlD,qBAAa,mBAAoB,YAAW,kBAAkB;IAC5D,QAAQ,CAAC,YAAY;;;;;MAKnB;IAEF,OAAO,CAAC,WAAW,CAAM;IACzB,OAAO,CAAC,MAAM,CAAM;IAEpB,mDAAmD;IACnD,cAAc,CAAC,MAAM,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,GAAG,IAAI;IAKzD;;;OAGG;IACI,UAAU,IAAI,aAAa,CAAC,mBAAmB,CAAC;IA4DvD;;OAEG;IACG,SAAS,CAAC,KAAK,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,QAAQ,GAAG,OAAO,CAAC,MAAM,CAAC,qBAAqB,EAAE,CAAC,CAAC;IAgD7F,mEAAmE;IACnE,SAAS,CAAC,GAAG,EAAE,mBAAmB,GAAG,qBAAqB;CA+B3D"}
|
|
@@ -27,6 +27,7 @@ export interface ShoonyaPosition {
|
|
|
27
27
|
daybuyqty: string;
|
|
28
28
|
daysellqty: string;
|
|
29
29
|
netavgprc: string;
|
|
30
|
+
upldprc: string;
|
|
30
31
|
lp: string;
|
|
31
32
|
rpnl: string;
|
|
32
33
|
urmtom: string;
|
|
@@ -55,6 +56,8 @@ export interface ShoonyaOrder {
|
|
|
55
56
|
}
|
|
56
57
|
export interface ShoonyaTick {
|
|
57
58
|
tk: string;
|
|
59
|
+
ts?: string;
|
|
60
|
+
e?: string;
|
|
58
61
|
lp: string;
|
|
59
62
|
pc?: string;
|
|
60
63
|
o?: string;
|
|
@@ -84,6 +87,7 @@ export interface ShoonyaHolding {
|
|
|
84
87
|
upldprc: string;
|
|
85
88
|
isin: string;
|
|
86
89
|
lp?: string;
|
|
90
|
+
c?: string;
|
|
87
91
|
[key: string]: unknown;
|
|
88
92
|
}
|
|
89
93
|
export interface ShoonyaQuote {
|
|
@@ -114,7 +118,7 @@ export declare function fromOrder(order: ShoonyaOrder): UnifiedOrder;
|
|
|
114
118
|
/** Convert a Shoonya WebSocket tick to UnifiedTick. */
|
|
115
119
|
export declare function fromTick(tick: ShoonyaTick, symbolLookup?: string): UnifiedTick;
|
|
116
120
|
/** Convert a Shoonya holding to UnifiedHolding. */
|
|
117
|
-
export declare function fromHolding(holding: ShoonyaHolding): UnifiedHolding;
|
|
121
|
+
export declare function fromHolding(holding: ShoonyaHolding, ltp?: number): UnifiedHolding;
|
|
118
122
|
/** Convert a Shoonya quote response to unified Quote. */
|
|
119
123
|
export declare function fromQuote(quote: ShoonyaQuote): Quote;
|
|
120
124
|
//# sourceMappingURL=finvasia-mapper.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"finvasia-mapper.d.ts","sourceRoot":"","sources":["../../../src/brokers/finvasia/finvasia-mapper.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"finvasia-mapper.d.ts","sourceRoot":"","sources":["../../../src/brokers/finvasia/finvasia-mapper.ts"],"names":[],"mappings":"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"}
|
|
@@ -12,15 +12,21 @@ export declare class FinvasiaSocket {
|
|
|
12
12
|
private tokenToSymbol;
|
|
13
13
|
private subscribedTokens;
|
|
14
14
|
private readonly userId;
|
|
15
|
-
private
|
|
15
|
+
private accessToken;
|
|
16
16
|
private reconnectAttempts;
|
|
17
17
|
private maxReconnects;
|
|
18
18
|
private reconnectTimer;
|
|
19
|
-
|
|
19
|
+
private readonly onAuthFailed?;
|
|
20
|
+
constructor(userId: string, accessToken: string, onAuthFailed?: () => void);
|
|
20
21
|
/** Connect to the Shoonya WebSocket endpoint. */
|
|
21
22
|
connect(): void;
|
|
22
23
|
/** Gracefully disconnect. */
|
|
23
24
|
disconnect(): void;
|
|
25
|
+
/**
|
|
26
|
+
* Reconnect with an optionally updated access token.
|
|
27
|
+
* Used after re-authentication to resume with a fresh session.
|
|
28
|
+
*/
|
|
29
|
+
reconnect(newToken?: string): void;
|
|
24
30
|
/**
|
|
25
31
|
* Subscribe to tokens for tick data.
|
|
26
32
|
* Tokens should be in "EXCHANGE|TOKEN" format (e.g. "NSE|26000").
|
|
@@ -1 +1 @@
|
|
|
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,
|
|
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,WAAW,CAAS;IAC5B,OAAO,CAAC,iBAAiB,CAAK;IAC9B,OAAO,CAAC,aAAa,CAAK;IAC1B,OAAO,CAAC,cAAc,CAA8C;IACpE,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAa;gBAE/B,MAAM,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,EAAE,YAAY,CAAC,EAAE,MAAM,IAAI;IAM1E,iDAAiD;IACjD,OAAO,IAAI,IAAI;IAgDf,6BAA6B;IAC7B,UAAU,IAAI,IAAI;IAWlB;;;OAGG;IACH,SAAS,CAAC,QAAQ,CAAC,EAAE,MAAM,GAAG,IAAI;IAYlC;;;OAGG;IACH,SAAS,CAAC,MAAM,EAAE,MAAM,EAAE,EAAE,QAAQ,EAAE,YAAY,EAAE,SAAS,CAAC,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,YAAY;IA2BlG,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;IAe5C,OAAO,CAAC,aAAa;IA4CrB,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
|
@@ -19448,8 +19448,9 @@ class InstrumentMaster {
|
|
|
19448
19448
|
if (local.ok)
|
|
19449
19449
|
return local;
|
|
19450
19450
|
if (brokerInstruments.capabilities.searchAPI && brokerInstruments.searchAPI) {
|
|
19451
|
-
const { symbol } = this.parseInput(input);
|
|
19452
|
-
const
|
|
19451
|
+
const { exchange, symbol } = this.parseInput(input);
|
|
19452
|
+
const inferredExchange = exchange ?? (/-(?:CE|PE|FUT)-/.test(symbol) ? "NFO" : undefined);
|
|
19453
|
+
const apiResult = await brokerInstruments.searchAPI(symbol, inferredExchange);
|
|
19453
19454
|
if (apiResult.ok && apiResult.value.length > 0) {
|
|
19454
19455
|
for (const entry of apiResult.value)
|
|
19455
19456
|
this.mergeEntry(brokerId, entry);
|
|
@@ -20192,8 +20193,8 @@ function safeSide(raw) {
|
|
|
20192
20193
|
}
|
|
20193
20194
|
function parseTimestamp(ts) {
|
|
20194
20195
|
if (!ts)
|
|
20195
|
-
return
|
|
20196
|
-
return new Date(ts).getTime();
|
|
20196
|
+
return 0;
|
|
20197
|
+
return new Date(ts).getTime() || 0;
|
|
20197
20198
|
}
|
|
20198
20199
|
function inferInstrumentType(symbol, exchange) {
|
|
20199
20200
|
if (exchange === "NSE" || exchange === "BSE")
|
|
@@ -21169,13 +21170,18 @@ function inferSide2(qty) {
|
|
|
21169
21170
|
}
|
|
21170
21171
|
function parseTimestamp2(ts) {
|
|
21171
21172
|
if (!ts)
|
|
21172
|
-
return
|
|
21173
|
+
return 0;
|
|
21173
21174
|
const asNum = Number(ts);
|
|
21174
21175
|
if (!isNaN(asNum) && asNum > 1000000000000)
|
|
21175
21176
|
return asNum;
|
|
21176
21177
|
if (!isNaN(asNum) && asNum > 1e9)
|
|
21177
21178
|
return asNum * 1000;
|
|
21178
|
-
|
|
21179
|
+
const shoonya = ts.match(/^(\d{2}:\d{2}:\d{2})\s+(\d{2})-(\d{2})-(\d{4})$/);
|
|
21180
|
+
if (shoonya) {
|
|
21181
|
+
const [, time, dd, mm, yyyy] = shoonya;
|
|
21182
|
+
return new Date(`${yyyy}-${mm}-${dd}T${time}`).getTime() || 0;
|
|
21183
|
+
}
|
|
21184
|
+
return new Date(ts).getTime() || 0;
|
|
21179
21185
|
}
|
|
21180
21186
|
function toOrderParams2(unified, uid, actid) {
|
|
21181
21187
|
const params = {
|
|
@@ -21203,17 +21209,21 @@ function fromPosition2(pos) {
|
|
|
21203
21209
|
const buyQty = num(pos.daybuyqty);
|
|
21204
21210
|
const sellQty = num(pos.daysellqty);
|
|
21205
21211
|
const realizedPnl = num(pos.rpnl);
|
|
21206
|
-
const
|
|
21212
|
+
const ltp = num(pos.lp);
|
|
21213
|
+
const entryPrice = num(pos.upldprc);
|
|
21214
|
+
const avgPrice = entryPrice > 0 ? entryPrice : num(pos.netavgprc);
|
|
21215
|
+
const unrealizedPnl = entryPrice > 0 ? (ltp - entryPrice) * netQty : num(pos.urmtom);
|
|
21216
|
+
const tradingSymbol = pos.tsym.replace(/-EQ$|-BE$|-BL$|-IL$|-IQ$/, "");
|
|
21207
21217
|
return {
|
|
21208
21218
|
broker: "finvasia",
|
|
21209
|
-
tradingSymbol
|
|
21219
|
+
tradingSymbol,
|
|
21210
21220
|
exchange: safeExchange2(pos.exch),
|
|
21211
21221
|
side: inferSide2(netQty),
|
|
21212
21222
|
quantity: Math.abs(netQty),
|
|
21213
21223
|
buyQty,
|
|
21214
21224
|
sellQty,
|
|
21215
|
-
avgPrice
|
|
21216
|
-
ltp
|
|
21225
|
+
avgPrice,
|
|
21226
|
+
ltp,
|
|
21217
21227
|
pnl: realizedPnl + unrealizedPnl,
|
|
21218
21228
|
realizedPnl,
|
|
21219
21229
|
unrealizedPnl,
|
|
@@ -21250,7 +21260,7 @@ function fromTick2(tick, symbolLookup) {
|
|
|
21250
21260
|
return {
|
|
21251
21261
|
broker: "finvasia",
|
|
21252
21262
|
token: tick.tk,
|
|
21253
|
-
tradingSymbol: symbolLookup ?? tick.tk,
|
|
21263
|
+
tradingSymbol: symbolLookup ?? tick.ts ?? tick.tk,
|
|
21254
21264
|
ltp: num(tick.lp),
|
|
21255
21265
|
open: num(tick.o),
|
|
21256
21266
|
high: num(tick.h),
|
|
@@ -21265,15 +21275,17 @@ function fromTick2(tick, symbolLookup) {
|
|
|
21265
21275
|
timestamp: parseTimestamp2(tick.ft)
|
|
21266
21276
|
};
|
|
21267
21277
|
}
|
|
21268
|
-
function fromHolding2(holding) {
|
|
21278
|
+
function fromHolding2(holding, ltp = 0) {
|
|
21269
21279
|
const first = holding.exch_tsym?.[0];
|
|
21270
21280
|
const qty = num(holding.holdqty) + num(holding.dpqty) + num(holding.npoadqty) + num(holding.btstqty) - num(holding.usedqty);
|
|
21271
21281
|
const avgPrice = num(holding.upldprc);
|
|
21272
|
-
|
|
21282
|
+
ltp = num(holding.lp) || num(holding.c) || ltp;
|
|
21273
21283
|
const pnl = (ltp - avgPrice) * qty;
|
|
21284
|
+
const rawSymbol = first?.tsym ?? "";
|
|
21285
|
+
const tradingSymbol = rawSymbol.replace(/-EQ$|-BE$|-BL$|-IL$|-IQ$/, "");
|
|
21274
21286
|
return {
|
|
21275
21287
|
broker: "finvasia",
|
|
21276
|
-
tradingSymbol
|
|
21288
|
+
tradingSymbol,
|
|
21277
21289
|
exchange: safeExchange2(first?.exch ?? "NSE"),
|
|
21278
21290
|
isin: holding.isin ?? "",
|
|
21279
21291
|
quantity: qty,
|
|
@@ -21330,9 +21342,11 @@ class FinvasiaSocket {
|
|
|
21330
21342
|
reconnectAttempts = 0;
|
|
21331
21343
|
maxReconnects = 5;
|
|
21332
21344
|
reconnectTimer = null;
|
|
21333
|
-
|
|
21345
|
+
onAuthFailed;
|
|
21346
|
+
constructor(userId, accessToken, onAuthFailed) {
|
|
21334
21347
|
this.userId = userId;
|
|
21335
21348
|
this.accessToken = accessToken;
|
|
21349
|
+
this.onAuthFailed = onAuthFailed;
|
|
21336
21350
|
}
|
|
21337
21351
|
connect() {
|
|
21338
21352
|
if (this.state === "CONNECTED" || this.state === "CONNECTING")
|
|
@@ -21382,6 +21396,18 @@ class FinvasiaSocket {
|
|
|
21382
21396
|
this.state = "DISCONNECTED";
|
|
21383
21397
|
this.subscribedTokens.clear();
|
|
21384
21398
|
}
|
|
21399
|
+
reconnect(newToken) {
|
|
21400
|
+
this.clearReconnectTimer();
|
|
21401
|
+
if (newToken)
|
|
21402
|
+
this.accessToken = newToken;
|
|
21403
|
+
this.reconnectAttempts = 0;
|
|
21404
|
+
if (this.ws) {
|
|
21405
|
+
this.ws.close();
|
|
21406
|
+
this.ws = null;
|
|
21407
|
+
}
|
|
21408
|
+
this.state = "DISCONNECTED";
|
|
21409
|
+
this.connect();
|
|
21410
|
+
}
|
|
21385
21411
|
subscribe(tokens, callback, symbolMap) {
|
|
21386
21412
|
const sub = {
|
|
21387
21413
|
id: nextSubId3(),
|
|
@@ -21392,7 +21418,11 @@ class FinvasiaSocket {
|
|
|
21392
21418
|
for (const t of tokens) {
|
|
21393
21419
|
this.subscribedTokens.add(t);
|
|
21394
21420
|
if (symbolMap?.has(t)) {
|
|
21395
|
-
|
|
21421
|
+
const sym = symbolMap.get(t);
|
|
21422
|
+
this.tokenToSymbol.set(t, sym);
|
|
21423
|
+
const sep = t.indexOf("|");
|
|
21424
|
+
if (sep !== -1)
|
|
21425
|
+
this.tokenToSymbol.set(t.slice(sep + 1), sym);
|
|
21396
21426
|
}
|
|
21397
21427
|
}
|
|
21398
21428
|
if (this.ws && this.state === "CONNECTED") {
|
|
@@ -21425,6 +21455,10 @@ class FinvasiaSocket {
|
|
|
21425
21455
|
setSymbolMap(map) {
|
|
21426
21456
|
for (const [token, symbol] of map) {
|
|
21427
21457
|
this.tokenToSymbol.set(token, symbol);
|
|
21458
|
+
const sep = token.indexOf("|");
|
|
21459
|
+
if (sep !== -1) {
|
|
21460
|
+
this.tokenToSymbol.set(token.slice(sep + 1), symbol);
|
|
21461
|
+
}
|
|
21428
21462
|
}
|
|
21429
21463
|
}
|
|
21430
21464
|
handleMessage(data) {
|
|
@@ -21436,6 +21470,11 @@ class FinvasiaSocket {
|
|
|
21436
21470
|
if (this.subscribedTokens.size > 0) {
|
|
21437
21471
|
this.sendSubscribe(Array.from(this.subscribedTokens));
|
|
21438
21472
|
}
|
|
21473
|
+
} else {
|
|
21474
|
+
console.error(`[FinvasiaSocket] Auth rejected (ck NOT_OK) \u2014 token invalid, stopping reconnect`);
|
|
21475
|
+
this.reconnectAttempts = this.maxReconnects;
|
|
21476
|
+
this.state = "DISCONNECTED";
|
|
21477
|
+
this.onAuthFailed?.();
|
|
21439
21478
|
}
|
|
21440
21479
|
return;
|
|
21441
21480
|
}
|
|
@@ -21444,6 +21483,10 @@ class FinvasiaSocket {
|
|
|
21444
21483
|
const rawToken = tick.tk;
|
|
21445
21484
|
const exch = data["e"] ?? "";
|
|
21446
21485
|
const fullKey = exch ? `${exch}|${rawToken}` : rawToken;
|
|
21486
|
+
if (tick.ts && !this.tokenToSymbol.has(fullKey)) {
|
|
21487
|
+
this.tokenToSymbol.set(fullKey, tick.ts);
|
|
21488
|
+
this.tokenToSymbol.set(rawToken, tick.ts);
|
|
21489
|
+
}
|
|
21447
21490
|
const symbol = this.tokenToSymbol.get(fullKey) ?? this.tokenToSymbol.get(rawToken);
|
|
21448
21491
|
const unified = fromTick2(tick, symbol);
|
|
21449
21492
|
unified.token = fullKey;
|
|
@@ -21497,6 +21540,27 @@ class FinvasiaSocket {
|
|
|
21497
21540
|
}
|
|
21498
21541
|
|
|
21499
21542
|
// src/brokers/finvasia/finvasia-instruments.ts
|
|
21543
|
+
import { inflateRawSync } from "zlib";
|
|
21544
|
+
function extractTextFromZip(buffer) {
|
|
21545
|
+
const bytes = new Uint8Array(buffer);
|
|
21546
|
+
if (bytes.length < 30 || bytes[0] !== 80 || bytes[1] !== 75 || bytes[2] !== 3 || bytes[3] !== 4) {
|
|
21547
|
+
return new TextDecoder().decode(buffer);
|
|
21548
|
+
}
|
|
21549
|
+
const view = new DataView(buffer);
|
|
21550
|
+
const compressionMethod = view.getUint16(8, true);
|
|
21551
|
+
const compressedSize = view.getUint32(18, true);
|
|
21552
|
+
const filenameLength = view.getUint16(26, true);
|
|
21553
|
+
const extraFieldLength = view.getUint16(28, true);
|
|
21554
|
+
const dataOffset = 30 + filenameLength + extraFieldLength;
|
|
21555
|
+
const compressedData = new Uint8Array(buffer, dataOffset, compressedSize);
|
|
21556
|
+
if (compressionMethod === 0) {
|
|
21557
|
+
return new TextDecoder().decode(compressedData);
|
|
21558
|
+
}
|
|
21559
|
+
if (compressionMethod === 8) {
|
|
21560
|
+
return new TextDecoder().decode(inflateRawSync(compressedData));
|
|
21561
|
+
}
|
|
21562
|
+
throw new Error(`Unsupported ZIP compression method: ${compressionMethod}`);
|
|
21563
|
+
}
|
|
21500
21564
|
var COL2 = {
|
|
21501
21565
|
EXCHANGE: 0,
|
|
21502
21566
|
TOKEN: 1,
|
|
@@ -21509,6 +21573,18 @@ var COL2 = {
|
|
|
21509
21573
|
STRIKE: 8,
|
|
21510
21574
|
OPTION_TYPE: 9
|
|
21511
21575
|
};
|
|
21576
|
+
var HEADER_MAP = {
|
|
21577
|
+
Exchange: "exchange",
|
|
21578
|
+
Token: "token",
|
|
21579
|
+
LotSize: "lot_size",
|
|
21580
|
+
Symbol: "symbol",
|
|
21581
|
+
TradingSymbol: "trading_symbol",
|
|
21582
|
+
Expiry: "expiry",
|
|
21583
|
+
Instrument: "instrument_type",
|
|
21584
|
+
OptionType: "option_type",
|
|
21585
|
+
StrikePrice: "strike",
|
|
21586
|
+
TickSize: "tick_size"
|
|
21587
|
+
};
|
|
21512
21588
|
var EXCHANGE_MAP2 = {
|
|
21513
21589
|
NSE: "NSE",
|
|
21514
21590
|
BSE: "BSE",
|
|
@@ -21568,7 +21644,7 @@ class FinvasiaInstruments {
|
|
|
21568
21644
|
const response = await fetch(url);
|
|
21569
21645
|
if (!response.ok)
|
|
21570
21646
|
continue;
|
|
21571
|
-
const text = await response.
|
|
21647
|
+
const text = extractTextFromZip(await response.arrayBuffer());
|
|
21572
21648
|
const lines = text.split(`
|
|
21573
21649
|
`);
|
|
21574
21650
|
let headers = null;
|
|
@@ -21576,10 +21652,10 @@ class FinvasiaInstruments {
|
|
|
21576
21652
|
const trimmed = line.trim();
|
|
21577
21653
|
if (!trimmed)
|
|
21578
21654
|
continue;
|
|
21579
|
-
const fields = trimmed.split("
|
|
21655
|
+
const fields = trimmed.split(",");
|
|
21580
21656
|
if (!headers) {
|
|
21581
21657
|
if (fields[0] === "Exchange" || fields[0] === "exch") {
|
|
21582
|
-
headers = fields;
|
|
21658
|
+
headers = fields.map((h) => HEADER_MAP[h] ?? h.toLowerCase());
|
|
21583
21659
|
continue;
|
|
21584
21660
|
}
|
|
21585
21661
|
headers = [];
|
|
@@ -21695,6 +21771,7 @@ class FinvasiaBroker {
|
|
|
21695
21771
|
};
|
|
21696
21772
|
session = null;
|
|
21697
21773
|
socket = null;
|
|
21774
|
+
credentials = null;
|
|
21698
21775
|
instrumentsImpl;
|
|
21699
21776
|
_iMaster;
|
|
21700
21777
|
constructor(options) {
|
|
@@ -21706,6 +21783,7 @@ class FinvasiaBroker {
|
|
|
21706
21783
|
const result = await authenticate2(creds);
|
|
21707
21784
|
if (!result.ok)
|
|
21708
21785
|
return result;
|
|
21786
|
+
this.credentials = creds;
|
|
21709
21787
|
this.session = result.value;
|
|
21710
21788
|
this.instrumentsImpl.setCredentials(this.session.userId, this.session.accessToken);
|
|
21711
21789
|
return result;
|
|
@@ -22002,6 +22080,10 @@ class FinvasiaBroker {
|
|
|
22002
22080
|
this.ensureSocket();
|
|
22003
22081
|
return this.socket.subscribe(tokens, cb);
|
|
22004
22082
|
}
|
|
22083
|
+
setSymbolMap(map) {
|
|
22084
|
+
this.ensureSocket();
|
|
22085
|
+
this.socket.setSymbolMap(map);
|
|
22086
|
+
}
|
|
22005
22087
|
unsubscribeTicks(sub) {
|
|
22006
22088
|
if (this.socket) {
|
|
22007
22089
|
this.socket.unsubscribe(sub);
|
|
@@ -22109,9 +22191,30 @@ class FinvasiaBroker {
|
|
|
22109
22191
|
return;
|
|
22110
22192
|
if (!this.session)
|
|
22111
22193
|
throw new Error("Cannot create socket without an active session");
|
|
22112
|
-
this.socket = new FinvasiaSocket(this.session.userId, this.session.accessToken)
|
|
22194
|
+
this.socket = new FinvasiaSocket(this.session.userId, this.session.accessToken, () => {
|
|
22195
|
+
this.handleSocketAuthFailed();
|
|
22196
|
+
});
|
|
22113
22197
|
this.socket.connect();
|
|
22114
22198
|
}
|
|
22199
|
+
handleSocketAuthFailed() {
|
|
22200
|
+
if (!this.credentials) {
|
|
22201
|
+
console.error("[FinvasiaBroker] Socket auth failed but no credentials stored \u2014 cannot re-authenticate");
|
|
22202
|
+
return;
|
|
22203
|
+
}
|
|
22204
|
+
console.log("[FinvasiaBroker] Socket auth failed, re-authenticating...");
|
|
22205
|
+
authenticate2(this.credentials).then((result) => {
|
|
22206
|
+
if (!result.ok) {
|
|
22207
|
+
console.error("[FinvasiaBroker] Re-authentication failed:", result.error instanceof Error ? result.error.message : result.error);
|
|
22208
|
+
return;
|
|
22209
|
+
}
|
|
22210
|
+
this.session = result.value;
|
|
22211
|
+
this.instrumentsImpl.setCredentials(this.session.userId, this.session.accessToken);
|
|
22212
|
+
console.log("[FinvasiaBroker] Re-authenticated successfully, reconnecting socket");
|
|
22213
|
+
this.socket?.reconnect(this.session.accessToken);
|
|
22214
|
+
}).catch((err) => {
|
|
22215
|
+
console.error("[FinvasiaBroker] Re-authentication exception:", err instanceof Error ? err.message : err);
|
|
22216
|
+
});
|
|
22217
|
+
}
|
|
22115
22218
|
}
|
|
22116
22219
|
// src/brokers/dhan/dhan-constants.ts
|
|
22117
22220
|
var EXCHANGE_TO_DHAN = {
|
|
@@ -22181,6 +22284,7 @@ var VALIDITY_FROM_DHAN = {
|
|
|
22181
22284
|
IOC: "IOC"
|
|
22182
22285
|
};
|
|
22183
22286
|
var DHAN_API_BASE = "https://api.dhan.co/v2";
|
|
22287
|
+
var DHAN_AUTH_BASE = "https://auth.dhan.co";
|
|
22184
22288
|
var DHAN_WS_URL = "wss://api-feed.dhan.co";
|
|
22185
22289
|
var DHAN_INSTRUMENTS_URL = "https://images.dhan.co/api-data/api-scrip-master.csv";
|
|
22186
22290
|
var CANDLE_INTERVAL_TO_DHAN = {
|
|
@@ -22226,6 +22330,79 @@ async function authenticate3(creds) {
|
|
|
22226
22330
|
return Err(err instanceof Error ? err : new Error(String(err)));
|
|
22227
22331
|
}
|
|
22228
22332
|
}
|
|
22333
|
+
async function generateConsent(creds) {
|
|
22334
|
+
const { apiKey: appId, apiSecret: appSecret, userId: clientId } = creds;
|
|
22335
|
+
if (!appId)
|
|
22336
|
+
return Err(new Error("Missing apiKey (App ID) in credentials"));
|
|
22337
|
+
if (!appSecret)
|
|
22338
|
+
return Err(new Error("Missing apiSecret (App Secret) in credentials"));
|
|
22339
|
+
if (!clientId)
|
|
22340
|
+
return Err(new Error("Missing userId (Dhan Client ID) in credentials"));
|
|
22341
|
+
try {
|
|
22342
|
+
const response = await fetch(`${DHAN_AUTH_BASE}/app/generate-consent?client_id=${clientId}`, {
|
|
22343
|
+
method: "POST",
|
|
22344
|
+
headers: {
|
|
22345
|
+
"Content-Type": "application/json",
|
|
22346
|
+
app_id: appId,
|
|
22347
|
+
app_secret: appSecret
|
|
22348
|
+
},
|
|
22349
|
+
body: JSON.stringify({})
|
|
22350
|
+
});
|
|
22351
|
+
if (!response.ok) {
|
|
22352
|
+
const body = await response.text();
|
|
22353
|
+
return Err(new Error(`Dhan generate-consent failed (${response.status}): ${body}`));
|
|
22354
|
+
}
|
|
22355
|
+
const data = await response.json();
|
|
22356
|
+
if (!data.consentAppId) {
|
|
22357
|
+
return Err(new Error(data.message ?? "Failed to generate consent \u2014 no consentAppId returned"));
|
|
22358
|
+
}
|
|
22359
|
+
const loginUrl = `${DHAN_AUTH_BASE}/login/consentApp-login?consentAppId=${data.consentAppId}`;
|
|
22360
|
+
return Ok({ consentAppId: data.consentAppId, loginUrl });
|
|
22361
|
+
} catch (err) {
|
|
22362
|
+
return Err(err instanceof Error ? err : new Error(String(err)));
|
|
22363
|
+
}
|
|
22364
|
+
}
|
|
22365
|
+
async function consumeConsent(creds, tokenId) {
|
|
22366
|
+
const { apiKey: appId, apiSecret: appSecret, userId: clientId } = creds;
|
|
22367
|
+
if (!appId)
|
|
22368
|
+
return Err(new Error("Missing apiKey (App ID) in credentials"));
|
|
22369
|
+
if (!appSecret)
|
|
22370
|
+
return Err(new Error("Missing apiSecret (App Secret) in credentials"));
|
|
22371
|
+
if (!tokenId)
|
|
22372
|
+
return Err(new Error("Missing tokenId from callback"));
|
|
22373
|
+
try {
|
|
22374
|
+
const response = await fetch(`${DHAN_AUTH_BASE}/app/consumeApp-consent?tokenId=${encodeURIComponent(tokenId)}`, {
|
|
22375
|
+
method: "POST",
|
|
22376
|
+
headers: {
|
|
22377
|
+
"Content-Type": "application/json",
|
|
22378
|
+
app_id: appId,
|
|
22379
|
+
app_secret: appSecret
|
|
22380
|
+
},
|
|
22381
|
+
body: JSON.stringify({})
|
|
22382
|
+
});
|
|
22383
|
+
if (!response.ok) {
|
|
22384
|
+
const body = await response.text();
|
|
22385
|
+
return Err(new Error(`Dhan consumeApp-consent failed (${response.status}): ${body}`));
|
|
22386
|
+
}
|
|
22387
|
+
const data = await response.json();
|
|
22388
|
+
if (!data.accessToken) {
|
|
22389
|
+
return Err(new Error(data.message ?? "Failed to get access token \u2014 no accessToken returned"));
|
|
22390
|
+
}
|
|
22391
|
+
const thirtyDaysMs = 30 * 24 * 60 * 60 * 1000;
|
|
22392
|
+
const session = {
|
|
22393
|
+
accessToken: data.accessToken,
|
|
22394
|
+
refreshToken: undefined,
|
|
22395
|
+
expiresAt: Date.now() + thirtyDaysMs,
|
|
22396
|
+
ttlSeconds: 30 * 24 * 60 * 60,
|
|
22397
|
+
brokerId: "dhan",
|
|
22398
|
+
userId: clientId ?? "",
|
|
22399
|
+
metadata: { authMode: "oauth" }
|
|
22400
|
+
};
|
|
22401
|
+
return Ok(session);
|
|
22402
|
+
} catch (err) {
|
|
22403
|
+
return Err(err instanceof Error ? err : new Error(String(err)));
|
|
22404
|
+
}
|
|
22405
|
+
}
|
|
22229
22406
|
async function refreshSession3(_session) {
|
|
22230
22407
|
return Err(new Error("Dhan does not support token refresh. Generate a new access token from the Dhan developer portal."));
|
|
22231
22408
|
}
|
|
@@ -22256,10 +22433,10 @@ function safeSide3(raw) {
|
|
|
22256
22433
|
}
|
|
22257
22434
|
function parseTimestamp3(ts) {
|
|
22258
22435
|
if (!ts)
|
|
22259
|
-
return
|
|
22436
|
+
return 0;
|
|
22260
22437
|
if (typeof ts === "number")
|
|
22261
22438
|
return ts > 1000000000000 ? ts : ts * 1000;
|
|
22262
|
-
return new Date(ts).getTime() ||
|
|
22439
|
+
return new Date(ts).getTime() || 0;
|
|
22263
22440
|
}
|
|
22264
22441
|
function inferInstrumentType3(exchangeSegment, tradingSymbol) {
|
|
22265
22442
|
if (exchangeSegment === "NSE_EQ" || exchangeSegment === "BSE_EQ")
|
|
@@ -22368,6 +22545,7 @@ function fromTick3(tick, symbolLookup) {
|
|
|
22368
22545
|
function fromHolding3(holding, ltp = 0) {
|
|
22369
22546
|
const qty = holding.totalQty ?? holding.availableQty;
|
|
22370
22547
|
const avgPrice = holding.avgCostPrice;
|
|
22548
|
+
ltp = holding.lastTradedPrice ?? ltp;
|
|
22371
22549
|
const pnl = (ltp - avgPrice) * qty;
|
|
22372
22550
|
return {
|
|
22373
22551
|
broker: "dhan",
|
|
@@ -22416,13 +22594,14 @@ function nextSubId4() {
|
|
|
22416
22594
|
return `dsub_${subIdCounter4}`;
|
|
22417
22595
|
}
|
|
22418
22596
|
var EXCH_SEG_FROM_BYTE = {
|
|
22419
|
-
0: "
|
|
22597
|
+
0: "IDX_I",
|
|
22420
22598
|
1: "NSE_EQ",
|
|
22421
22599
|
2: "NSE_FNO",
|
|
22422
22600
|
3: "NSE_CURRENCY",
|
|
22423
22601
|
4: "BSE_EQ",
|
|
22424
|
-
5: "
|
|
22425
|
-
|
|
22602
|
+
5: "MCX_COMM",
|
|
22603
|
+
7: "BSE_CURRENCY",
|
|
22604
|
+
8: "BSE_FNO"
|
|
22426
22605
|
};
|
|
22427
22606
|
function splitToken(token) {
|
|
22428
22607
|
const sep = token.includes("|") ? "|" : ":";
|
|
@@ -22548,8 +22727,34 @@ class DhanSocket {
|
|
|
22548
22727
|
const exchSegByte = data.readUInt8(3);
|
|
22549
22728
|
const securityId = data.readInt32LE(4);
|
|
22550
22729
|
const exchangeSegment = EXCH_SEG_FROM_BYTE[exchSegByte] ?? "NSE_EQ";
|
|
22551
|
-
const fullKey = `${exchangeSegment}
|
|
22552
|
-
if (responseCode ===
|
|
22730
|
+
const fullKey = `${exchangeSegment}:${securityId}`;
|
|
22731
|
+
if (responseCode === 1 && data.length >= 32) {
|
|
22732
|
+
const ltp = data.readFloatLE(8);
|
|
22733
|
+
const ltt = data.readInt32LE(12);
|
|
22734
|
+
const open = data.readFloatLE(16);
|
|
22735
|
+
const close = data.readFloatLE(20);
|
|
22736
|
+
const high = data.readFloatLE(24);
|
|
22737
|
+
const low = data.readFloatLE(28);
|
|
22738
|
+
const tick = {
|
|
22739
|
+
securityId,
|
|
22740
|
+
LTP: ltp,
|
|
22741
|
+
open,
|
|
22742
|
+
high,
|
|
22743
|
+
low,
|
|
22744
|
+
close,
|
|
22745
|
+
volume: 0,
|
|
22746
|
+
bestBidPrice: 0,
|
|
22747
|
+
bestAskPrice: 0,
|
|
22748
|
+
bestBidQty: 0,
|
|
22749
|
+
bestAskQty: 0,
|
|
22750
|
+
exchangeSegment,
|
|
22751
|
+
timestamp: ltt > 0 ? ltt * 1000 : Date.now()
|
|
22752
|
+
};
|
|
22753
|
+
const symbol = this.tokenToSymbol.get(fullKey) ?? this.tokenToSymbol.get(String(securityId));
|
|
22754
|
+
const unified = fromTick3(tick, symbol);
|
|
22755
|
+
unified.token = fullKey;
|
|
22756
|
+
this.dispatchTick(unified);
|
|
22757
|
+
} else if (responseCode === 2 && data.length >= 16) {
|
|
22553
22758
|
const ltp = data.readFloatLE(8);
|
|
22554
22759
|
const ltt = data.readInt32LE(12);
|
|
22555
22760
|
const tick = {
|
|
@@ -22605,7 +22810,7 @@ class DhanSocket {
|
|
|
22605
22810
|
handleJsonMessage(data) {
|
|
22606
22811
|
if (data["type"] === "ticker_data") {
|
|
22607
22812
|
const tick = data;
|
|
22608
|
-
const fullKey = tick.exchangeSegment ? `${tick.exchangeSegment}
|
|
22813
|
+
const fullKey = tick.exchangeSegment ? `${tick.exchangeSegment}:${tick.securityId}` : String(tick.securityId);
|
|
22609
22814
|
const symbol = this.tokenToSymbol.get(fullKey) ?? this.tokenToSymbol.get(String(tick.securityId));
|
|
22610
22815
|
const unified = fromTick3(tick, symbol);
|
|
22611
22816
|
unified.token = fullKey;
|
|
@@ -22702,6 +22907,15 @@ var DHAN_EXCHANGE_MAP = {
|
|
|
22702
22907
|
NFO: "NFO",
|
|
22703
22908
|
MCX: "MCX"
|
|
22704
22909
|
};
|
|
22910
|
+
function resolveDhanExchange(exchId, segment) {
|
|
22911
|
+
if (segment === "D")
|
|
22912
|
+
return exchId === "BSE" ? "BFO" : "NFO";
|
|
22913
|
+
if (segment === "C")
|
|
22914
|
+
return "CDS";
|
|
22915
|
+
if (segment === "M")
|
|
22916
|
+
return "MCX";
|
|
22917
|
+
return exchId === "BSE" ? "BSE" : "NSE";
|
|
22918
|
+
}
|
|
22705
22919
|
function mapInstrumentType3(instName, optionType) {
|
|
22706
22920
|
const opt = optionType?.toUpperCase();
|
|
22707
22921
|
if (opt === "CE")
|
|
@@ -22843,14 +23057,16 @@ class DhanInstruments {
|
|
|
22843
23057
|
const securityId = fields["SEM_SMST_SECURITY_ID"] ?? fields["securityId"] ?? "";
|
|
22844
23058
|
const tradingSymbol = fields["SEM_TRADING_SYMBOL"] ?? fields["tradingSymbol"] ?? "";
|
|
22845
23059
|
const customSymbol = fields["SEM_CUSTOM_SYMBOL"] ?? fields["customSymbol"] ?? tradingSymbol;
|
|
22846
|
-
const
|
|
23060
|
+
const exchId = fields["SEM_EXM_EXCH_ID"] ?? "";
|
|
23061
|
+
const segment = fields["SEM_SEGMENT"] ?? "";
|
|
23062
|
+
const exchangeSegment = fields["exchangeSegment"] ?? "";
|
|
22847
23063
|
const instNameRaw = fields["SEM_INSTRUMENT_NAME"] ?? fields["instrumentType"] ?? "EQUITY";
|
|
22848
23064
|
const optionType = fields["SEM_OPTION_TYPE"] ?? fields["optionType"] ?? "";
|
|
22849
23065
|
const lotSizeRaw = fields["SEM_LOT_UNITS"] ?? fields["lotSize"] ?? "1";
|
|
22850
23066
|
const tickSizeRaw = fields["SEM_TICK_SIZE"] ?? fields["tickSize"] ?? "0.05";
|
|
22851
23067
|
const expiryRaw = fields["SEM_EXPIRY_DATE"] ?? fields["expiryDate"] ?? "";
|
|
22852
23068
|
const strikeRaw = fields["SEM_STRIKE_PRICE"] ?? fields["strikePrice"] ?? "";
|
|
22853
|
-
const exchange = DHAN_EXCHANGE_MAP[
|
|
23069
|
+
const exchange = exchId && segment ? resolveDhanExchange(exchId, segment) : DHAN_EXCHANGE_MAP[exchangeSegment] ?? EXCHANGE_FROM_DHAN[exchangeSegment] ?? "NSE";
|
|
22854
23070
|
const instrumentType = mapInstrumentType3(instNameRaw, optionType);
|
|
22855
23071
|
return {
|
|
22856
23072
|
tradingSymbol,
|
|
@@ -22907,6 +23123,7 @@ class DhanBroker {
|
|
|
22907
23123
|
session = null;
|
|
22908
23124
|
socket = null;
|
|
22909
23125
|
clientId = "";
|
|
23126
|
+
oauthCreds = null;
|
|
22910
23127
|
instrumentsImpl;
|
|
22911
23128
|
_iMaster;
|
|
22912
23129
|
constructor(options) {
|
|
@@ -22934,6 +23151,24 @@ class DhanBroker {
|
|
|
22934
23151
|
return null;
|
|
22935
23152
|
return new Date(this.session.expiresAt);
|
|
22936
23153
|
}
|
|
23154
|
+
async generateConsent(creds) {
|
|
23155
|
+
this.oauthCreds = creds;
|
|
23156
|
+
this.clientId = creds.userId ?? "";
|
|
23157
|
+
return generateConsent(creds);
|
|
23158
|
+
}
|
|
23159
|
+
async consumeConsent(tokenId) {
|
|
23160
|
+
if (!this.oauthCreds) {
|
|
23161
|
+
return Err(new Error("Call generateConsent() before consumeConsent()"));
|
|
23162
|
+
}
|
|
23163
|
+
const result = await consumeConsent(this.oauthCreds, tokenId);
|
|
23164
|
+
if (!result.ok)
|
|
23165
|
+
return result;
|
|
23166
|
+
this.session = result.value;
|
|
23167
|
+
this.clientId = this.oauthCreds.userId ?? "";
|
|
23168
|
+
this.instrumentsImpl.setCredentials(this.clientId, this.session.accessToken);
|
|
23169
|
+
this.oauthCreds = null;
|
|
23170
|
+
return result;
|
|
23171
|
+
}
|
|
22937
23172
|
async sync(force) {
|
|
22938
23173
|
return this._iMaster.syncBroker(this.id, this.instruments, force);
|
|
22939
23174
|
}
|
|
@@ -22953,9 +23188,11 @@ class DhanBroker {
|
|
|
22953
23188
|
if (!asyncResolved.ok) {
|
|
22954
23189
|
return Err(new Error(`Cannot resolve "${params.tradingSymbol}". Either run broker.sync() first to use unified nsekit symbols, or provide exchange and the broker-native tradingSymbol directly.`));
|
|
22955
23190
|
}
|
|
22956
|
-
|
|
23191
|
+
const nativeId = asyncResolved.value.brokerTokens.dhan?.securityId ?? params.tradingSymbol;
|
|
23192
|
+
resolvedParams = { ...params, exchange: asyncResolved.value.exchange, tradingSymbol: nativeId };
|
|
22957
23193
|
} else {
|
|
22958
|
-
|
|
23194
|
+
const nativeId = resolved.value.brokerTokens.dhan?.securityId ?? params.tradingSymbol;
|
|
23195
|
+
resolvedParams = { ...params, exchange: resolved.value.exchange, tradingSymbol: nativeId };
|
|
22959
23196
|
}
|
|
22960
23197
|
}
|
|
22961
23198
|
const dhanParams = toOrderParams3(resolvedParams, this.clientId);
|
|
@@ -23196,6 +23433,10 @@ class DhanBroker {
|
|
|
23196
23433
|
this.ensureSocket();
|
|
23197
23434
|
return this.socket.subscribe(tokens, cb);
|
|
23198
23435
|
}
|
|
23436
|
+
setSymbolMap(map) {
|
|
23437
|
+
this.ensureSocket();
|
|
23438
|
+
this.socket.setSymbolMap(map);
|
|
23439
|
+
}
|
|
23199
23440
|
unsubscribeTicks(sub) {
|
|
23200
23441
|
if (this.socket) {
|
|
23201
23442
|
this.socket.unsubscribe(sub);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"instrument-master.d.ts","sourceRoot":"","sources":["../../src/instruments/instrument-master.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"instrument-master.d.ts","sourceRoot":"","sources":["../../src/instruments/instrument-master.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "nsekit",
|
|
3
|
-
"version": "0.3.
|
|
3
|
+
"version": "0.3.2",
|
|
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",
|
|
@@ -43,10 +43,19 @@
|
|
|
43
43
|
"typescript": "^5.3.3",
|
|
44
44
|
"bun-types": "latest"
|
|
45
45
|
},
|
|
46
|
-
"keywords": [
|
|
46
|
+
"keywords": [
|
|
47
|
+
"nse",
|
|
48
|
+
"bse",
|
|
49
|
+
"trading",
|
|
50
|
+
"broker",
|
|
51
|
+
"zerodha",
|
|
52
|
+
"finvasia",
|
|
53
|
+
"dhan",
|
|
54
|
+
"options"
|
|
55
|
+
],
|
|
47
56
|
"license": "MIT",
|
|
48
57
|
"repository": {
|
|
49
58
|
"type": "git",
|
|
50
59
|
"url": "git+https://github.com/ilampirai/nsekit.git"
|
|
51
60
|
}
|
|
52
|
-
}
|
|
61
|
+
}
|