Showing preview only (1,985K chars total). Download the full file or copy to clipboard to get everything.
Repository: hi-imcodeman/stock-nse-india
Branch: master
Commit: 7690080972e4
Files: 102
Total size: 1.9 MB
Directory structure:
gitextract_4l0czfbt/
├── .eslintignore
├── .eslintrc
├── .github/
│ └── workflows/
│ ├── ci.yml
│ ├── gpr_publish.yml
│ └── npm_publish.yml
├── .gitignore
├── .husky/
│ └── pre-commit
├── .npmignore
├── Dockerfile
├── LICENSE
├── MCP_README.md
├── README.md
├── demo/
│ ├── README.md
│ ├── mcp-client-demo.js
│ └── memory-example.js
├── docs/
│ ├── .nojekyll
│ ├── assets/
│ │ ├── highlight.css
│ │ ├── main.js
│ │ ├── search.js
│ │ └── style.css
│ ├── classes/
│ │ └── NseIndia.html
│ ├── enums/
│ │ └── ApiList.html
│ ├── index.html
│ ├── interfaces/
│ │ ├── AllIndicesData.html
│ │ ├── CircularsData.html
│ │ ├── CommodityOptionChainData.html
│ │ ├── CommodityRecords.html
│ │ ├── DateRange.html
│ │ ├── Datum.html
│ │ ├── EquityCorporateInfo.html
│ │ ├── EquityDetails.html
│ │ ├── EquityHistoricalData.html
│ │ ├── EquityHistoricalInfo.html
│ │ ├── EquityInfo.html
│ │ ├── EquityMaster.html
│ │ ├── EquityMetadata.html
│ │ ├── EquityOptionChainData.html
│ │ ├── EquityOptionChainItem.html
│ │ ├── EquityPreOpenMarket.html
│ │ ├── EquityPriceInfo.html
│ │ ├── EquitySecurityInfo.html
│ │ ├── EquityTradeInfo.html
│ │ ├── Filtered.html
│ │ ├── GiftNifty.html
│ │ ├── Glossary.html
│ │ ├── Holiday.html
│ │ ├── HolidaysBySegment.html
│ │ ├── IndexDetails.html
│ │ ├── IndexEquityInfo.html
│ │ ├── IndexNamesData.html
│ │ ├── IndexOptionChainData.html
│ │ ├── IndexRecords.html
│ │ ├── IndicativeNifty50.html
│ │ ├── IntradayData.html
│ │ ├── LatestCircularData.html
│ │ ├── MarketCap.html
│ │ ├── MarketState.html
│ │ ├── MarketStatus.html
│ │ ├── MarketTurnover.html
│ │ ├── MergedDailyReportsData.html
│ │ ├── OptionChainContractInfo.html
│ │ ├── OptionsData.html
│ │ ├── OptionsDetails.html
│ │ ├── PreOpenDetails.html
│ │ ├── PreOpenMarketData.html
│ │ ├── SeriesData.html
│ │ └── TechnicalIndicators.html
│ └── modules.html
├── examples/
│ └── basic.js
├── jest.config.js
├── mcp-config.json
├── package.json
├── scripts/
│ └── setup-gpr.js
├── src/
│ ├── __snapshots__/
│ │ └── utils.spec.ts.snap
│ ├── cli/
│ │ ├── @types/
│ │ │ ├── asciichart.d.ts
│ │ │ └── ohlc.d.ts
│ │ ├── api.ts
│ │ └── index.ts
│ ├── constants.ts
│ ├── equity.graphql
│ ├── helpers.spec.ts
│ ├── helpers.ts
│ ├── index.charting.spec.ts
│ ├── index.spec.ts
│ ├── index.ts
│ ├── inputs.graphql
│ ├── interface.ts
│ ├── mcp/
│ │ ├── client/
│ │ │ └── mcp-client.ts
│ │ ├── context-summarizer.ts
│ │ ├── mcp-tools.ts
│ │ ├── memory-manager.ts
│ │ └── server/
│ │ ├── mcp-server-stdio.ts
│ │ └── mcp-server.ts
│ ├── root.graphql
│ ├── root.resolver.ts
│ ├── routes.ts
│ ├── server.ts
│ ├── stockIndex.graphql
│ ├── swaggerDocOptions.ts
│ ├── utils.spec.ts
│ └── utils.ts
└── tsconfig.json
================================================
FILE CONTENTS
================================================
================================================
FILE: .eslintignore
================================================
node_modules
build
dist
================================================
FILE: .eslintrc
================================================
{
"root": true,
"parser": "@typescript-eslint/parser",
"plugins": [
"@typescript-eslint"
],
"extends": [
"eslint:recommended",
"plugin:@typescript-eslint/eslint-recommended",
"plugin:@typescript-eslint/recommended"
],
"rules": {
"max-len": ["error", {
"code": 120
}],
"no-console":["error", {"allow": ["warn", "error"]}],
"@typescript-eslint/explicit-module-boundary-types":"error"
}
}
================================================
FILE: .github/workflows/ci.yml
================================================
name: CI
on:
push:
schedule:
- cron: '0 0 * * *'
jobs:
build:
name: Test & Build
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- name: Use Node.js
uses: actions/setup-node@v1
with:
node-version: "18.x"
- name: Install dependencies
run: npm install
- name: Test Package
run: npm run test
- name: Build Package
run: npm run build
================================================
FILE: .github/workflows/gpr_publish.yml
================================================
name: Publish Package (GitHub)
on:
release:
types: [created]
jobs:
build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
# Setup .npmrc file to publish to npm
- uses: actions/setup-node@v1
with:
node-version: "18.x"
registry-url: "https://npm.pkg.github.com/hi-imcodeman"
# Defaults to the user or organization that owns the workflow file
scope: "@hi-imcodeman"
- run: npm install
- run: npm run gpr-setup
- run: npm run build
# Publish to GitHub Packages
- run: npm publish
env:
NODE_AUTH_TOKEN: ${{ secrets.IMCODEMAN_PACKAGE_TOKEN }}
================================================
FILE: .github/workflows/npm_publish.yml
================================================
name: Publish Package (NPM)
on:
release:
types: [created]
jobs:
build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
# Setup .npmrc file to publish to npm
- uses: actions/setup-node@v1
with:
node-version: "18.x"
registry-url: "https://registry.npmjs.org"
- run: npm install
- run: npm run build
- run: npm publish --access public
env:
NODE_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }}
================================================
FILE: .gitignore
================================================
# Logs
logs
*.log
npm-debug.log*
yarn-debug.log*
yarn-error.log*
lerna-debug.log*
# Diagnostic reports (https://nodejs.org/api/report.html)
report.[0-9]*.[0-9]*.[0-9]*.[0-9]*.json
# Runtime data
pids
*.pid
*.seed
*.pid.lock
# Directory for instrumented libs generated by jscoverage/JSCover
lib-cov
# Coverage directory used by tools like istanbul
coverage
*.lcov
# nyc test coverage
.nyc_output
# Grunt intermediate storage (https://gruntjs.com/creating-plugins#storing-task-files)
.grunt
# Bower dependency directory (https://bower.io/)
bower_components
# node-waf configuration
.lock-wscript
# Compiled binary addons (https://nodejs.org/api/addons.html)
build/Release
# Dependency directories
node_modules/
jspm_packages/
# TypeScript v1 declaration files
typings/
# TypeScript cache
*.tsbuildinfo
# Optional npm cache directory
.npm
# Optional eslint cache
.eslintcache
# Microbundle cache
.rpt2_cache/
.rts2_cache_cjs/
.rts2_cache_es/
.rts2_cache_umd/
# Optional REPL history
.node_repl_history
# Output of 'npm pack'
*.tgz
# Yarn Integrity file
.yarn-integrity
# dotenv environment variables file
.env
.env.test
# parcel-bundler cache (https://parceljs.org/)
.cache
# Next.js build output
.next
# Nuxt.js build / generate output
.nuxt
dist
# Gatsby files
.cache/
# Comment in the public line in if your project uses Gatsby and *not* Next.js
# https://nextjs.org/blog/next-9-1#public-directory-support
# public
# vuepress build output
.vuepress/dist
# Serverless directories
.serverless/
# FuseBox cache
.fusebox/
# DynamoDB Local files
.dynamodb/
# TernJS port file
.tern-port
#build
build/
# MacOS store file
.DS_Store
# Memory data
memory-data.json
================================================
FILE: .husky/pre-commit
================================================
#!/usr/bin/env sh
. "$(dirname -- "$0")/_/husky.sh"
npx lint-staged
================================================
FILE: .npmignore
================================================
src/
.github/
jest.config.js
tsconfig.json
scripts/
docs/
examples/
.eslintrc
.eslintignore
.gitignore
*.map
Dockerfile
coverage
================================================
FILE: Dockerfile
================================================
FROM node:14
WORKDIR /app
COPY src/ src/
COPY examples/ examples/
COPY package.json ./
COPY yarn.lock ./
COPY tsconfig.json ./
ENV TZ="Asia/Kolkata"
RUN yarn install
RUN yarn build
ENV PORT=3001
EXPOSE 3001
CMD yarn start
================================================
FILE: LICENSE
================================================
MIT License
Copyright (c) 2020 Hi! ImCodeMan
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.
================================================
FILE: MCP_README.md
================================================
# NSE India MCP Server
This is a Model Context Protocol (MCP) server that exposes all the functions from the NSE India stock market API library.
## What is MCP?
Model Context Protocol (MCP) is a standard for AI assistants to communicate with external data sources and tools. It allows AI models to access real-time stock market data from the National Stock Exchange of India.
## Architecture
The MCP server is built with a modular architecture for maintainability and consistency:
- **`src/mcp/mcp-tools.ts`**: Common tools configuration and handler functions
- **`src/mcp/server/mcp-server.ts`**: Stdio-based MCP server for local AI assistant integration
- **`src/mcp/client/mcp-client.ts`**: OpenAI Functions-based MCP client for natural language queries
All components share the same tool definitions and business logic, ensuring consistency and making maintenance easier.
## Benefits of Common Tools Configuration
- **🔄 Consistency**: All server implementations use identical tool definitions and behavior
- **🛠️ Maintainability**: Single source of truth for tool configurations and business logic
- **📝 Easy Updates**: Add new tools or modify existing ones in one place
- **🧪 Testing**: Unified testing approach across all server implementations
- **📚 Documentation**: Centralized tool documentation and examples
## Available Tools
The MCP server provides the following tools:
### Equity Data
- `get_all_stock_symbols` - Get list of all NSE equity symbols
- `get_equity_details` - Get equity details for a specific symbol
- `get_equity_trade_info` - Get equity trade information for a specific symbol
- `get_equity_corporate_info` - Get corporate information for a specific equity symbol
- `get_equity_intraday_data` - Get intraday data for a specific equity symbol
- `get_equity_historical_data` - Get historical data for a specific equity symbol
- `get_equity_series` - Get series data for a specific equity symbol
- `get_equity_option_chain` - Get option chain data for a specific equity symbol
- `get_equity_technical_indicators` - Get technical indicators (RSI, MACD, Bollinger Bands, etc.) for a specific equity symbol
### Index Data
- `get_equity_stock_indices` - Get equity stock indices for a specific index
- `get_index_intraday_data` - Get intraday data for a specific index
- `get_index_option_chain` - Get option chain data for a specific index
- `get_index_option_chain_contract_info` - Get option chain contract information (expiry dates and strike prices) for a specific index
### Market Data
- `get_market_status` - Get current market status
- `get_market_turnover` - Get market turnover data
- `get_pre_open_market_data` - Get pre-open market data
- `get_all_indices` - Get list of all indices
- `get_index_names` - Get list of index names
### Reports and Information
- `get_glossary` - Get NSE glossary content
- `get_trading_holidays` - Get list of trading holidays
- `get_clearing_holidays` - Get list of clearing holidays
- `get_circulars` - Get list of circulars
- `get_latest_circulars` - Get list of latest circulars
- `get_equity_master` - Get equity master data with categorized indices
- `get_merged_daily_reports_capital` - Get merged daily reports for capital market
- `get_merged_daily_reports_derivatives` - Get merged daily reports for derivatives
- `get_merged_daily_reports_debt` - Get merged daily reports for debt market
### Commodity Data
- `get_commodity_option_chain` - Get option chain data for a specific commodity symbol
### Analysis Tools
- `get_gainers_and_losers_by_index` - Get top gainers and losers for a specific index
- `get_most_active_equities` - Get most actively traded equities for a specific index, sorted by volume and value
## Installation
1. Install dependencies:
```bash
yarn install
```
2. Build the project:
```bash
yarn build
```
## Usage
### Starting the MCP Server
#### Standard I/O (stdio) Server
```bash
# Start the stdio MCP server
yarn start:mcp
# Test the stdio MCP server
yarn test:mcp
```
### Configuration
#### Option 1: Using npx (Recommended for users who have installed the package)
This is the easiest way to use the MCP server without cloning the repository.
**Installation Steps:**
1. **Prerequisites**: Ensure Node.js 18+ is installed on your system
```bash
node --version # Should be v18.0.0 or higher
```
2. **Install the package** (optional but recommended for faster startup):
```bash
npm install -g stock-nse-india
```
**Note**: If you don't install globally, `npx` will automatically download and cache the package on first use. The first run may take a few moments to download the package, but subsequent runs will be faster.
**Configuration:**
```json
{
"mcpServers": {
"npx-stock-nse-india": {
"command": "npx",
"args": ["stock-nse-india", "mcp"],
"env": {
"NODE_ENV": "production"
}
}
}
}
```
#### Option 2: Using local build (For developers with source code)
If you have cloned the repository and built the project locally:
```json
{
"mcpServers": {
"nse-india-stdio": {
"command": "node",
"args": ["build/mcp/server/mcp-server-stdio.js"],
"env": {
"NODE_ENV": "production"
}
}
}
}
```
**Prerequisites:**
- Node.js 18+ installed
- Repository cloned and dependencies installed (`npm install`)
- Project built (`npm run build`)
#### Configuring in Cursor IDE
1. **Open Cursor Settings**:
- Press `Cmd+,` (Mac) or `Ctrl+,` (Windows/Linux) to open settings
- Or go to `File → Preferences → Settings`
2. **Navigate to MCP Settings**:
- Search for "MCP" or "Model Context Protocol" in settings
- Go to `Settings → Features → Model Context Protocol`
3. **Add Server Configuration**:
- Click "Edit in settings.json" or find the MCP configuration section
- Add one of the configurations above (Option 1 is recommended for most users)
- Save the configuration file
4. **Restart Cursor**:
- Close and reopen Cursor IDE to load the MCP server
- The server should appear in the MCP status indicator
**Configuration File Location:**
- **Mac/Linux**: `~/.cursor/mcp.json` or workspace-specific settings
- **Windows**: `%APPDATA%\Cursor\mcp.json` or workspace-specific settings
**Verification:**
After configuration and restart, you should see the MCP server active in Cursor's status bar. You can then use natural language queries in Cursor's chat to access NSE India stock market data, such as:
- "What is the current price of TCS?"
- "Show me the top gainers in NIFTY 50"
- "Get technical indicators for RELIANCE"
### Example Tool Calls
#### Get all stock symbols
```json
{
"name": "get_all_stock_symbols",
"arguments": {}
}
```
#### Get equity details for TCS
```json
{
"name": "get_equity_details",
"arguments": {
"symbol": "TCS"
}
}
```
#### Get historical data for RELIANCE
```json
{
"name": "get_equity_historical_data",
"arguments": {
"symbol": "RELIANCE",
"start_date": "2024-01-01",
"end_date": "2024-01-31"
}
}
```
#### Get technical indicators for TCS
```json
{
"name": "get_equity_technical_indicators",
"arguments": {
"symbol": "TCS",
"period": 200,
"sma_periods": [5, 10, 20, 50],
"ema_periods": [5, 10, 20, 50],
"rsi_period": 14,
"show_only_latest": true
}
}
```
#### Get gainers and losers for NIFTY 50
```json
{
"name": "get_gainers_and_losers_by_index",
"arguments": {
"index_symbol": "NIFTY 50"
}
}
```
#### Get market status
```json
{
"name": "get_market_status",
"arguments": {}
}
```
## Features
- **Real-time Data**: Access live stock market data from NSE India
- **Comprehensive Coverage**: All major NSE functions are exposed as MCP tools
- **Error Handling**: Robust error handling with meaningful error messages
- **Type Safety**: Full TypeScript support with proper type definitions
- **Rate Limiting**: Built-in connection limiting to prevent API abuse
- **Context Summarization**: Intelligent conversation history management with configurable thresholds
## MCP Client with Context Summarization
The MCP Client (`MCPClient`) provides an OpenAI Functions-based interface for natural language queries with intelligent context management.
### Basic Usage
```typescript
import { MCPClient } from 'stock-nse-india'
const client = new MCPClient({
enableMemory: true,
enableContextSummarization: true,
memoryConfig: {
contextWindowConfig: {
maxTokens: 8000,
reservedTokens: 2000,
summarizationThreshold: 0.9, // Trigger at 90%
minMessagesToSummarize: 6
}
}
})
// Process a natural language query
const result = await client.processQuery({
query: "What is the current price of TCS?",
sessionId: "user123",
maxIterations: 5
})
```
### Context Summarization Configuration
The context summarization system automatically manages conversation history to stay within token limits while preserving important information.
#### Key Configuration Parameters
##### `summarizationThreshold`
Controls when summarization is triggered as a percentage of `maxTokens`.
**Recommended Values:**
| Threshold | Use Case | Behavior |
|-----------|----------|----------|
| **0.9 (90%)** | **Recommended** | Less frequent summarization, more context preserved |
| 0.8 (80%) | Balanced | Moderate summarization frequency |
| 0.7 (70%) | Conservative | More frequent summarization |
| 0.6 (60%) | Aggressive | Very frequent summarization |
##### `maxTokens`
Maximum token limit for the context window.
**Common Values:**
- `8000` - Standard (GPT-4, GPT-3.5)
- `16000` - Extended context models
- `32000` - Large context models
- `128000` - Very large context models (GPT-4 Turbo)
##### `reservedTokens`
Tokens reserved for system prompt and response generation.
**Guidelines:**
- Typical: `2000-3000` tokens
- Includes system prompt (~500-1000 tokens)
- Includes response buffer (~1000-2000 tokens)
##### `minMessagesToSummarize`
Minimum number of messages before summarization can occur.
**Guidelines:**
- Minimum: `4` (2 conversation pairs)
- Recommended: `6-10` (3-5 pairs)
- Prevents premature summarization
#### Configuration Examples
**Example 1: Recommended (Balanced)**
```typescript
const client = new MCPClient({
enableMemory: true,
enableContextSummarization: true,
memoryConfig: {
contextWindowConfig: {
maxTokens: 8000,
reservedTokens: 2000,
summarizationThreshold: 0.9, // 90% - less frequent
minMessagesToSummarize: 6
}
}
})
```
**Expected Behavior:**
- Summarization triggers at ~7200 tokens (90%)
- 2-3 summarizations per 20 queries
- More context preserved per query
- Lower API costs
**Example 2: Conservative (Frequent Summarization)**
```typescript
const client = new MCPClient({
enableMemory: true,
enableContextSummarization: true,
memoryConfig: {
contextWindowConfig: {
maxTokens: 8000,
reservedTokens: 2000,
summarizationThreshold: 0.6, // 60% - more frequent
minMessagesToSummarize: 6
}
}
})
```
**Expected Behavior:**
- Summarization triggers at ~4800 tokens (60%)
- 4-6 summarizations per 20 queries
- Less context per query
- Higher API costs but safer
**Example 3: Large Context Model**
```typescript
const client = new MCPClient({
enableMemory: true,
enableContextSummarization: true,
memoryConfig: {
contextWindowConfig: {
maxTokens: 128000, // GPT-4 Turbo
reservedTokens: 4000,
summarizationThreshold: 0.95, // 95% - very rare
minMessagesToSummarize: 20
}
}
})
```
**Expected Behavior:**
- Summarization triggers at ~121,600 tokens (95%)
- Very rare summarization
- Preserves entire conversation history
- Higher token costs per query
#### How It Works
**1. Token Counting**
The system estimates tokens for all messages:
```
totalTokens = systemPromptTokens + messageTokens + reservedTokens
```
**2. Threshold Check**
Summarization triggers when:
```
totalTokens > (maxTokens × summarizationThreshold)
AND
messageCount >= minMessagesToSummarize
```
**3. Summarization Process**
When triggered:
1. Keeps recent messages (targets 40% of maxTokens)
2. Summarizes older messages using AI
3. Replaces old messages with summary
4. Continues conversation with reduced context
**4. Result**
After summarization:
- Token usage drops to ~40% of maxTokens
- Recent messages preserved
- Important information in summary
- Ready for more conversation
#### Monitoring
Track these metrics to tune your configuration:
```typescript
// Get context statistics
const stats = await client.memoryManager.getContextStats(sessionId)
console.log('Message Count:', stats.messageCount)
console.log('Token Count:', stats.tokenCount.totalTokens)
console.log('Needs Summarization:', stats.needsSummarization)
console.log('Context Usage:', stats.contextWindowUsage + '%')
// Get summarization history
const history = client.getSummarizationHistory(sessionId)
console.log('Total Summarizations:', history.length)
```
#### Tuning Guidelines
**Choose Higher Threshold (0.8-0.9) When:**
- ✅ You want to preserve more context
- ✅ Cost is not a primary concern
- ✅ Conversations are complex and interconnected
- ✅ You have a larger context window available
**Choose Lower Threshold (0.6-0.7) When:**
- ✅ You want to minimize token costs
- ✅ Conversations are independent queries
- ✅ You have a smaller context window
- ✅ You want guaranteed headroom
#### Best Practices
1. **Start with 0.9 threshold** - Less intrusive, good for most use cases
2. **Monitor token usage** - Adjust based on actual patterns
3. **Consider your use case** - Independent queries vs. long conversations
4. **Test with real data** - Use the demo to see behavior
5. **Balance cost vs. context** - Higher threshold = more tokens but better context
#### Troubleshooting
**Too Many Summarizations**
- **Increase** `summarizationThreshold` (0.6 → 0.9)
- **Increase** `minMessagesToSummarize`
**Token Overflow**
- **Decrease** `summarizationThreshold` (0.9 → 0.7)
- **Increase** `reservedTokens`
**Context Loss**
- **Increase** `summarizationThreshold`
- **Increase** `maxTokens` (if model supports it)
**High API Costs**
- **Increase** `summarizationThreshold` (fewer summarizations)
- Consider caching or simpler summarization
## Requirements
- Node.js >= 18
- TypeScript
- OpenAI API key (for MCP Client with context summarization)
- All dependencies listed in package.json
## License
MIT License - see LICENSE file for details
## Support
For issues and questions, please visit the [GitHub repository](https://github.com/hi-imcodeman/stock-nse-india).
================================================
FILE: README.md
================================================
[](https://nodei.co/npm/stock-nse-india/)
# National Stock Exchange - India (Unofficial)
    
A comprehensive package and API server for accessing equity/index details and historical data from the National Stock Exchange of India. This project provides both an NPM package for direct integration and a full-featured GraphQL/REST API server.
**📚 [Documentation](https://hi-imcodeman.github.io/stock-nse-india)** | **🚀 [Examples](https://github.com/hi-imcodeman/stock-nse-india/tree/master/examples)**
## ✨ Features
- **📦 NPM Package** - Direct integration into your Node.js projects
- **🔌 GraphQL API** - Modern GraphQL interface with Apollo Server
- **🌐 REST API** - Comprehensive REST endpoints with Swagger documentation
- **🤖 MCP Server** - Model Context Protocol server for AI assistants
- **💻 CLI Tool** - Command-line interface for quick data access
- **🐳 Docker Support** - Containerized deployment
- **🔒 CORS Configuration** - Configurable cross-origin resource sharing
- **📊 Real-time Data** - Live market data and historical information
- **📈 Multiple Data Types** - Equity, Index, Commodity, and Options data
## 🚀 Quick Start
**⚠️ Prerequisites:** Node.js 18+ required
### As an NPM Package
```bash
npm install stock-nse-india
```
```javascript
import { NseIndia } from "stock-nse-india";
const nseIndia = new NseIndia();
// Get all stock symbols
const symbols = await nseIndia.getAllStockSymbols();
console.log(symbols);
// Get equity details
const details = await nseIndia.getEquityDetails('IRCTC');
console.log(details);
// Get historical data
const range = {
start: new Date("2020-01-01"),
end: new Date("2023-12-31")
};
const historicalData = await nseIndia.getEquityHistoricalData('IRCTC', range);
console.log(historicalData);
```
### As an API Server
```bash
# Clone and setup
git clone https://github.com/hi-imcodeman/stock-nse-india.git
cd stock-nse-india
npm install
# Start the server
npm start
```
**🌐 Server URLs:**
- **Main App:** http://localhost:3000
- **GraphQL Playground:** http://localhost:3000/graphql
- **API Documentation:** http://localhost:3000/api-docs
## 📦 Installation
### Prerequisites
- **Node.js:** Version 18 or higher
- **npm:** Version 8 or higher (comes with Node.js 18+)
### NPM Package
```bash
npm install stock-nse-india
# or
yarn add stock-nse-india
```
### CLI Tool
```bash
npm install -g stock-nse-india
```
### Server Setup
```bash
git clone https://github.com/hi-imcodeman/stock-nse-india.git
cd stock-nse-india
npm install
npm start
```
## 🔌 GraphQL API
The project now includes a powerful GraphQL API for flexible data querying:
### Example Queries
```graphql
# Get equity information
query GetEquity {
equities(symbolFilter: { symbols: ["IRCTC", "RELIANCE"] }) {
symbol
details {
info {
companyName
industry
isFNOSec
}
metadata {
listingDate
status
}
}
}
}
# Get indices data
query GetIndices {
indices(filter: { filterBy: "NIFTY" }) {
key
index
last
variation
percentChange
}
}
```
### GraphQL Schema
The API includes schemas for:
- **Equity** - Stock information, metadata, and details
- **Indices** - Market index data and performance
- **Filters** - Flexible query filtering options
## 🤖 MCP Server
The project includes a Model Context Protocol (MCP) server that allows AI assistants to access NSE India stock market data:
### What is MCP?
Model Context Protocol (MCP) is a standard for AI assistants to communicate with external data sources and tools. This MCP server exposes all NSE India functions as tools that AI models can use.
### Architecture
The MCP implementation is built with a modular architecture for maintainability and consistency:
- **`src/mcp/mcp-tools.ts`**: Common tools configuration and handler functions shared across all implementations
- **`src/mcp/server/mcp-server.ts`**: Stdio-based MCP server for local AI assistant integration
- **`src/mcp/client/mcp-client.ts`**: OpenAI Functions-based MCP client for natural language queries
All components share the same tool definitions and business logic, ensuring consistency and making maintenance easier.
### Benefits of Common Tools Configuration
- **🔄 Consistency**: All server implementations use identical tool definitions and behavior
- **🛠️ Maintainability**: Single source of truth for tool configurations and business logic
- **📝 Easy Updates**: Add new tools or modify existing ones in one place
- **🧪 Testing**: Unified testing approach across all server implementations
- **📚 Documentation**: Centralized tool documentation and examples
### Available Tools
The MCP server provides **30 tools** covering:
- **Equity Data** - Stock details, trade info, corporate info, intraday data, historical data, technical indicators
- **Index Data** - Market indices, intraday data, option chains, contract information
- **Market Data** - Market status, turnover, pre-open data, all indices
- **Reports** - Circulars, daily reports for capital/derivatives/debt markets
- **Commodity Data** - Option chain data for commodities
- **Analysis Tools** - Top gainers/losers, most active equities
### OpenAI Functions MCP Client
The project includes an advanced MCP client that uses OpenAI's native function calling feature for intelligent query processing:
#### Features
- **🤖 Natural Language Processing**: Query data using plain English
- **🔧 Automatic Tool Selection**: AI intelligently chooses the right NSE API tools
- **📊 Real-time Data**: Access live market data, historical information, and more
- **🎯 Smart Parameter Extraction**: Automatically extracts symbols, dates, and other parameters
- **📈 Comprehensive Coverage**: Access to all 30 NSE India API endpoints
- **🔄 Multiple Query Types**: Support for both simple and complex multi-step queries
#### Query Methods
- **`processQuery()`**: Single-round query processing for straightforward requests
- **`processQueryWithMultipleFunctions()`**: Multi-step query processing for complex analysis
#### Example Usage
```javascript
import { mcpClient } from './mcp/client/mcp-client'
// Simple query
const response = await mcpClient.processQuery({
query: "What is the current price of TCS stock?",
model: "gpt-4o-mini"
})
// Complex multi-step query
const complexResponse = await mcpClient.processQueryWithMemory({
query: "Compare the performance of Reliance and TCS over the last month and analyze their trends"
})
```
### Usage
#### Standard I/O (stdio) Server
```bash
# Start the stdio MCP server
npm run start:mcp
# Test the stdio MCP server
npm run test:mcp
```
### Configuration
#### Option 1: Using npx (Recommended for users who have installed the package)
**Installation Steps:**
1. **Prerequisites**: Ensure Node.js 18+ is installed on your system
```bash
node --version # Should be v18.0.0 or higher
```
2. **Install the package** (optional but recommended for faster startup):
```bash
npm install -g stock-nse-india
```
**Note**: If you don't install globally, `npx` will automatically download and cache the package on first use, which may take a few moments.
**Configuration:**
```json
{
"mcpServers": {
"npx-stock-nse-india": {
"command": "npx",
"args": ["stock-nse-india", "mcp"],
"env": {
"NODE_ENV": "production"
}
}
}
}
```
#### Option 2: Using local build (For developers with source code)
```json
{
"mcpServers": {
"nse-india-stdio": {
"command": "node",
"args": ["build/mcp/server/mcp-server-stdio.js"],
"env": {
"NODE_ENV": "production"
}
}
}
}
```
#### Configuring in Cursor IDE
1. **Open Cursor Settings**: Press `Cmd+,` (Mac) or `Ctrl+,` (Windows/Linux) to open settings
2. **Navigate to MCP Settings**: Go to Settings → Features → Model Context Protocol
3. **Add Server Configuration**: Add either of the configurations above to your MCP settings
4. **Restart Cursor**: Restart Cursor IDE to load the MCP server
Alternatively, you can directly edit the Cursor configuration file:
- **Mac/Linux**: `~/.cursor/mcp.json` or in your workspace settings
- **Windows**: `%APPDATA%\Cursor\mcp.json`
After configuration, the MCP server will be available in Cursor's AI assistant, allowing you to query NSE India stock market data directly from the chat interface.
For detailed MCP documentation, see [MCP_README.md](./MCP_README.md).
## 🌐 REST API
Comprehensive REST endpoints with automatic Swagger documentation:
### Core Endpoints
- `GET /` - Market status
- `GET /api/marketStatus` - Market status information
- `GET /api/glossary` - NSE glossary
- `GET /api/equity/:symbol` - Equity details
- `GET /api/equity/:symbol/historical` - Historical data
- `GET /api/indices` - Market indices
- `GET /api/charts/equity-historical-data` - Charting OHLC historical data
- `GET /api/charts/symbol-info` - Charting symbol/token lookup
- `GET /api-docs` - Interactive API documentation
### MCP Client Endpoints
- `POST /api/mcp/query` - Natural language query using OpenAI Functions
- `POST /api/mcp/query-multiple` - Multi-step natural language queries
### API Documentation
Visit `http://localhost:3000/api-docs` for complete interactive API documentation powered by Swagger UI.
### Charting APIs
#### NPM Package Methods
```javascript
import { NseIndia } from "stock-nse-india";
const nseIndia = new NseIndia();
// Optional date range and optional token.
// If token is omitted, it is auto-fetched internally using getEquitySymbolInfo().
const chartData = await nseIndia.getEquityChartHistoricalData(
"ONGC",
{
start: new Date("2026-04-10"),
end: new Date("2026-04-12")
}
);
// You can also fetch symbol info/token explicitly.
const symbolInfo = await nseIndia.getEquitySymbolInfo("ONGC");
console.log(symbolInfo.scripcode);
```
#### REST Endpoints
- **`GET /api/charts/equity-historical-data`**
- Required: `symbol`
- Optional: `start`, `end` (`YYYY-MM-DD`, `YYYY-MM-DD HH:MM:SS`, or unix timestamp), `token`, `symbolType`, `chartType`, `timeInterval`
- If `token` is omitted, the API auto-fetches it.
- If both `start` and `end` are omitted, default range is used.
- If only one date is provided, the other date is auto-derived.
- **`GET /api/charts/symbol-info`**
- Required: `symbol`
- Optional: `segment`
- Returns charting symbol details including `scripcode` (token).
## 💻 CLI Usage
### Basic Commands
```bash
# Get help
nseindia --help
# Get market status
nseindia
# Get equity details
nseindia equity IRCTC
# Get historical data
nseindia historical IRCTC
# Get indices information
nseindia index
# Get specific index details
nseindia index "NIFTY AUTO"
```
### CLI Features
- **Real-time data** - Live market information
- **Historical analysis** - Historical price data
- **Index tracking** - Market index performance
- **Interactive charts** - ASCII-based data visualization
## 🐳 Docker
### Quick Start
```bash
# Pull and run from Docker Hub
docker run --rm -d -p 3001:3001 imcodeman/nseindia
# Or build locally
docker build -t nseindia . && docker run --rm -d -p 3001:3001 nseindia:latest
```
### Docker Hub
**Image:** `imcodeman/nseindia`
**Registry:** [Docker Hub](https://hub.docker.com/r/imcodeman/nseindia)
### Container URLs
- **Main App:** http://localhost:3001
- **GraphQL:** http://localhost:3001/graphql
- **API Docs:** http://localhost:3001/api-docs
## ⚙️ Configuration
### Environment Variables
```bash
# Server Configuration
PORT=3000
HOST_URL=http://localhost:3000
NODE_ENV=development
# CORS Configuration
CORS_ORIGINS=https://myapp.com,https://admin.myapp.com
CORS_METHODS=GET,POST,OPTIONS
CORS_HEADERS=Content-Type,Authorization,X-Requested-With
CORS_CREDENTIALS=true
```
### CORS Settings
- **Origins:** Comma-separated list of allowed domains
- **Methods:** HTTP methods (default: GET,POST,PUT,DELETE,OPTIONS)
- **Headers:** Allowed request headers
- **Credentials:** Enable/disable credentials (default: true)
- **Localhost:** Always allowed for development
## 📊 API Methods
### Core Methods
- **`getAllStockSymbols()`** - Get all NSE stock symbols
- **`getData()`** - Generic data retrieval
- **`getDataByEndpoint()`** - Get data by specific NSE API endpoints
### Equity Methods
- **`getEquityDetails(symbol)`** - Get equity information
- **`getEquityHistoricalData(symbol, range)`** - Historical price data
- **`getEquityIntradayData(symbol)`** - Intraday trading data
- **`getEquityOptionChain(symbol)`** - Options chain data
- **`getEquityCorporateInfo(symbol)`** - Corporate information
- **`getEquityTradeInfo(symbol)`** - Trading statistics
### Charting Methods
- **`getEquityChartHistoricalData(symbol, range?, token?, symbolType?, chartType?, timeInterval?)`** - Get charting OHLC historical data
- **`getEquitySymbolInfo(symbol, segment?)`** - Resolve charting symbol/token (`scripcode`)
### Index Methods
- **`getEquityStockIndices()`** - Get all market indices
- **`getIndexIntradayData(index)`** - Index intraday data
- **`getIndexOptionChain(index)`** - Index options data
- **`getIndexOptionChainContractInfo(indexSymbol)`** - Get option chain contract information (expiry dates and strike prices)
### Commodity Methods
- **`getCommodityOptionChain(symbol)`** - Commodity options data
### Helper Methods
- **`getGainersAndLosersByIndex(index)`** - Top gainers and losers
- **`getMostActiveEquities()`** - Most actively traded stocks
## 🏃♂️ Development
**⚠️ Prerequisites:** Node.js 18+ required
### Local Development
```bash
# Clone repository
git clone https://github.com/hi-imcodeman/stock-nse-india.git
cd stock-nse-india
# Install dependencies
npm install
# Development mode with auto-reload
npm run start:dev
# Build project
npm run build
# Run tests
npm test
# Generate documentation
npm run docs
```
### Development Scripts
- **`npm start`** - Start production server
- **`npm run start:dev`** - Development mode with auto-reload
- **`npm run build`** - Build TypeScript to JavaScript
- **`npm test`** - Run test suite with coverage
- **`npm run docs`** - Generate TypeDoc documentation
- **`npm run lint`** - Run ESLint
### MCP Scripts
- **`npm run start:mcp`** - Start stdio MCP server
- **`npm run test:mcp`** - Test stdio MCP server
## 🧪 Testing
```bash
# Run all tests
npm test
# Run tests with coverage
npm test -- --coverage
# Run specific test file
npm test -- utils.spec.ts
```
## 📚 Documentation
- **📖 [API Reference](https://hi-imcodeman.github.io/stock-nse-india)** - Complete API documentation
- **🔍 [Examples](https://github.com/hi-imcodeman/stock-nse-india/tree/master/examples)** - Code examples and use cases
- **📋 [Interfaces](https://hi-imcodeman.github.io/stock-nse-india/interfaces/)** - TypeScript interface definitions
- **🏗️ [Modules](https://hi-imcodeman.github.io/stock-nse-india/modules/)** - Module documentation
## 🤝 Contributing
We welcome contributions! Please see our contributing guidelines and feel free to submit issues and pull requests.
### Development Setup
1. Fork the repository
2. Create a feature branch
3. Make your changes
4. Add tests for new functionality
5. Ensure all tests pass
6. Submit a pull request
## 📄 License
This project is licensed under the MIT License - see the [LICENSE](LICENSE) file for details.
## 👥 Contributors
<a href="https://github.com/hi-imcodeman/stock-nse-india/graphs/contributors">
<img src="https://contrib.rocks/image?repo=hi-imcodeman/stock-nse-india" />
</a>
## 🔗 Links
- **🌐 Website:** [https://hi-imcodeman.github.io/stock-nse-india](https://hi-imcodeman.github.io/stock-nse-india)
- **📦 NPM:** [https://www.npmjs.com/package/stock-nse-india](https://www.npmjs.com/package/stock-nse-india)
- **🐳 Docker Hub:** [https://hub.docker.com/r/imcodeman/nseindia](https://hub.docker.com/r/imcodeman/nseindia)
- **🐛 Issues:** [https://github.com/hi-imcodeman/stock-nse-india/issues](https://github.com/hi-imcodeman/stock-nse-india/issues)
---
**⭐ Star this repository if you find it helpful!**
================================================
FILE: demo/README.md
================================================
# MCP Client Demo - NSE India Stock Market
Complete demonstration of the MCP (Model Context Protocol) Client with **memory management** and **context summarization** features for NSE India stock market data.
---
## 🚀 Quick Start
### 1. Setup
```bash
# Set OpenAI API Key
export OPENAI_API_KEY=your-api-key
# Build the project
npm run build
```
### 2. Run Demos
```bash
# All demos
npm run demo:mcp-client
# Specific demo (1-7)
npm run demo:mcp-client 3
# Memory example
npm run demo:memory
```
---
## 📦 What's Included
### Demo Files
1. **`mcp-client-demo.js`** (566 lines)
- 7 comprehensive scenarios
- All features demonstrated
- Production-ready examples
2. **`memory-example.js`** (230 lines)
- Focused memory & summarization demo
- 8-query conversation flow
- Real-time context window tracking
- Visual progress indicators
---
## 🎯 Available Demos
> **Note:** All demos use memory and context summarization by default!
### Demo 1: Basic Query with Memory
Simple query demonstrating memory and summarization features.
```bash
npm run demo:mcp-client 1
```
**Features:**
- Session-based tracking
- Context summarization
- User preference tracking
- Response metadata
### Demo 2: Session Conversation
Multi-query conversation maintaining context.
```bash
npm run demo:mcp-client 2
```
**Features:**
- Follow-up questions work naturally
- Context awareness
- Preference learning
- Session persistence
### Demo 3: Technical Analysis
Fetch and analyze technical indicators.
```bash
npm run demo:mcp-client 3
```
**Features:**
- RSI, MACD, Bollinger Bands
- Multi-iteration processing
- Session tracking
- Analysis style detection
### Demo 4: Investment Recommendations
Get investment recommendations based on technical analysis.
```bash
npm run demo:mcp-client 4
```
**Features:**
- NIFTY 50 stock analysis
- Multi-step queries
- Learned preferences
- Investment insights
### Demo 5: Multi-user Sessions
Handle multiple users with separate sessions.
```bash
npm run demo:mcp-client 5
```
**Features:**
- Isolated user contexts
- User-specific preferences
- Concurrent sessions
- Session management
### Demo 6: Context Summarization
Long conversation with automatic summarization.
```bash
npm run demo:mcp-client 6
```
**Features:**
- 9-query conversation
- Automatic summarization
- Token optimization
- Summarization history
### Demo 7: Tools & Configuration
Display available tools and configuration.
```bash
npm run demo:mcp-client 7
```
**Features:**
- 28 available tools
- Configuration details
- Context window settings
- Tool capabilities
### Memory Example
Focused demonstration of memory features.
```bash
npm run demo:memory
```
**Features:**
- Natural conversation flow (8 queries)
- Real-time context window tracking
- Automatic preference learning
- Summarization statistics
- Visual progress indicators
**Example Output:**
```
Query 1: 📊 Context Window: 37.0% used (2,964 tokens) [GREEN]
Query 2: 📊 Context Window: 45.1% used (3,605 tokens) [GREEN]
Query 3: 📊 Context Window: 58.9% used (4,713 tokens) [GREEN]
Query 4: 📊 Context Window: 74.6% used (5,967 tokens) [YELLOW]
⚠️ Context Summarization Triggered!
Query 5: 📊 Context Window: 45.2% used (3,616 tokens) [GREEN]
```
---
## 🧠 Memory Features
### Session Management
- **Unique Session IDs**: Each conversation tracked separately
- **Multi-user Support**: Isolated contexts per user
- **Session Persistence**: Data maintained throughout conversation
- **Statistics**: Duration, message count, stocks accessed
### Context Awareness
- **Follow-up Questions**: Reference previous queries naturally
- **Cross-query Context**: Information synthesized across queries
- **Conversation History**: Full history maintained
- **Smart References**: AI understands context automatically
### User Preference Learning
Automatically learns and tracks:
- **Preferred Stocks**: Stocks you frequently ask about
- **Analysis Style**: Brief, detailed, or technical
- **Preferred Indices**: NIFTY, BANKNIFTY, etc.
- **Personalization**: Responses tailored to preferences
---
## 📊 Context Summarization
### Automatic Summarization
- **Token Monitoring**: Tracks usage in real-time
- **Smart Triggering**: Activates at 70% threshold (configurable)
- **Seamless Operation**: Happens transparently
- **Context Preservation**: Important info retained
### Benefits
- **Cost Savings**: 64% token reduction demonstrated
- **Performance**: Faster responses with less context
- **Scalability**: Enables unlimited conversation length
- **Optimization**: Automatic token management
### Real-World Results
```
Before Summarization: 5,752 tokens
After Summarization: 2,075 tokens
Savings: 3,677 tokens (64% reduction!)
```
---
## ⚙️ Configuration
### Client Configuration
```javascript
const client = new MCPClient({
enableMemory: true, // Enable session memory
enableContextSummarization: true, // Enable auto-summarization
enableDebugLogging: false, // Debug logs
memoryConfig: {
maxConversationHistory: 50, // Max messages in conversation history
contextWindowConfig: {
maxTokens: 8000, // Token limit
summarizationThreshold: 0.8 // Trigger at 80%
}
}
});
```
### Query Options
```javascript
await client.processQuery({
query: 'Your question',
sessionId: 'unique-session-id', // For memory
userId: 'user-identifier', // Optional
useMemory: true, // Use session memory
includeContext: true, // Include history
updatePreferences: true, // Learn preferences
maxIterations: 5, // Max AI iterations
model: 'gpt-4o-mini', // OpenAI model
temperature: 0.7, // Creativity (0-1)
max_tokens: 2000 // Max response length
});
```
---
## 💡 Usage Examples
### Basic Query
```javascript
const { MCPClient } = require('./build/mcp/client/mcp-client.js');
const client = new MCPClient();
const response = await client.processQuery({
query: 'What is the current market status?',
useMemory: false
});
console.log(response.response);
```
### Session-based Conversation
```javascript
const sessionId = 'user-123-' + Date.now();
// Query 1
await client.processQuery({
query: 'Tell me about RELIANCE stock',
sessionId,
useMemory: true
});
// Query 2 - Uses context from Query 1
await client.processQuery({
query: 'What is its current price?', // Knows you mean RELIANCE
sessionId,
useMemory: true,
includeContext: true
});
```
### With Preferences
```javascript
await client.processQuery({
query: 'I prefer detailed technical analysis',
sessionId,
useMemory: true,
updatePreferences: true
});
// Future queries will be more technical
```
---
## 🎨 Features Showcase
### Real-time Context Tracking
- See context window usage after each query
- Color-coded indicators (green/yellow)
- Token count display
- Visual progress
### Automatic Summarization
- Triggers when approaching limit
- Shows what was summarized
- Displays tokens saved
- Maintains conversation flow
### Session Analytics
- Message counts
- Token usage
- Summarization history
- Tool usage tracking
---
## 🔧 Troubleshooting
### Error: OPENAI_API_KEY not set
```bash
export OPENAI_API_KEY=your-api-key
```
### Error: Module not found
```bash
npm run build
```
### Slow responses
- Check internet connection
- NSE API may be slow during market hours
- Consider reducing `maxIterations`
### Rate limiting
- Wait between demos
- Use different API key
- Upgrade OpenAI plan
---
## 📈 Performance Metrics
### Demo Results
- **Session Duration**: ~170-210 seconds
- **Queries Processed**: 8
- **Stocks Analyzed**: 4 (RELIANCE, TCS, HDFC, etc.)
- **Summarizations**: 2 automatic triggers
- **Tokens Saved**: 3,677 (64% reduction)
- **Final Usage**: 48.5% (optimized)
### Benefits
- ✅ 64% lower API costs
- ✅ Faster response times
- ✅ Longer conversations possible
- ✅ Better context management
- ✅ Automatic optimization
---
## 🎓 Learning Outcomes
After running the demos, you'll understand:
- How to implement conversational memory
- How context summarization works
- How to manage multi-user sessions
- How to track user preferences
- How to optimize token usage
- How to build production AI apps
---
## 📚 Additional Resources
### Project Links
- **Main README**: [../README.md](../README.md)
- **MCP Server Docs**: [../MCP_README.md](../MCP_README.md)
- **API Documentation**: https://hi-imcodeman.github.io/stock-nse-india
- **GitHub**: https://github.com/hi-imcodeman/stock-nse-india
### Support
- **Issues**: https://github.com/hi-imcodeman/stock-nse-india/issues
- **Email**: asraf.cse@gmail.com
---
## ✨ Key Highlights
- ✅ **Production Ready**: Complete error handling, tested
- ✅ **Well Documented**: Comprehensive examples and guides
- ✅ **Feature Complete**: All memory & summarization features
- ✅ **User Friendly**: Beautiful console output, clear instructions
- ✅ **Cost Effective**: 64% token savings demonstrated
- ✅ **Scalable**: Handles unlimited conversation length
---
## 📊 Project Statistics
- **Code**: 796 lines (JavaScript demos)
- **Documentation**: This comprehensive guide
- **Demo Scenarios**: 7 + 1 focused example
- **Available Tools**: 28 NSE India API tools
- **Features**: Memory, Summarization, Analytics, Tracking
---
## 🏆 Status
**✅ Complete and Ready for Production Use**
All features tested and working:
- Memory management ✓
- Context summarization ✓
- User preferences ✓
- Session tracking ✓
- Multi-user support ✓
- Real-time analytics ✓
---
**License**: MIT
**Version**: 1.0.0
**Last Updated**: October 2025
================================================
FILE: demo/mcp-client-demo.js
================================================
/**
* MCP Client Demo - Comprehensive Examples
*
* This demo showcases various features of the MCP Client including:
* - Basic queries without memory
* - Session-based conversations with memory
* - Context summarization for long conversations
* - Multi-iteration queries
* - Technical analysis queries
* - Investment recommendations
*/
const { MCPClient } = require('../build/mcp/client/mcp-client.js');
// ANSI color codes for better console output
const colors = {
reset: '\x1b[0m',
bright: '\x1b[1m',
dim: '\x1b[2m',
red: '\x1b[31m',
green: '\x1b[32m',
yellow: '\x1b[33m',
blue: '\x1b[34m',
magenta: '\x1b[35m',
cyan: '\x1b[36m',
};
function log(message, color = colors.reset) {
console.log(`${color}${message}${colors.reset}`);
}
function logSection(title) {
console.log('\n' + '='.repeat(80));
log(title, colors.bright + colors.cyan);
console.log('='.repeat(80) + '\n');
}
function logSubSection(title) {
log(`\n${title}`, colors.bright + colors.yellow);
log('-'.repeat(title.length), colors.dim);
}
async function sleep(ms) {
return new Promise(resolve => setTimeout(resolve, ms));
}
/**
* Demo 1: Basic Query with Memory and Summarization Enabled
*/
async function demo1_BasicQuery() {
logSection('Demo 1: Basic Query with Memory and Summarization Enabled');
const client = new MCPClient({
enableMemory: true,
enableContextSummarization: true,
enableDebugLogging: false,
memoryConfig: {
maxConversationHistory: 50,
contextWindowConfig: {
maxTokens: 8000,
summarizationThreshold: 0.8
}
}
});
const sessionId = 'demo1-session-' + Date.now();
try {
log('Query: What is the current market status?', colors.blue);
log(`Session ID: ${sessionId}`, colors.dim);
const response = await client.processQuery({
query: 'What is the current market status?',
sessionId,
useMemory: true,
includeContext: true,
updatePreferences: true,
maxIterations: 3
});
logSubSection('Response:');
log(response.response, colors.green);
logSubSection('Metadata:');
console.log({
tools_used: response.tools_used,
iterations_used: response.iterations_used,
session_id: response.sessionId,
context_used: response.context_used,
conversation_length: response.conversation_length,
timestamp: response.timestamp
});
logSubSection('Memory Features:');
log('✓ Session memory enabled', colors.green);
log('✓ Context summarization enabled', colors.green);
log('✓ User preferences tracking enabled', colors.green);
} catch (error) {
log(`Error: ${error.message}`, colors.red);
}
}
/**
* Demo 2: Session-based Conversation with Memory
*/
async function demo2_SessionWithMemory() {
logSection('Demo 2: Session-based Conversation with Memory');
const client = new MCPClient({
enableMemory: true,
enableContextSummarization: true,
enableDebugLogging: false
});
const sessionId = 'demo-session-' + Date.now();
try {
// First query
logSubSection('Query 1: Get details about RELIANCE stock');
const response1 = await client.processQuery({
query: 'Tell me about RELIANCE stock',
sessionId,
useMemory: true,
includeContext: true,
maxIterations: 3
});
log(response1.response.substring(0, 300) + '...', colors.green);
await sleep(1000);
// Second query (uses context from first)
logSubSection('Query 2: Follow-up question using context');
const response2 = await client.processQuery({
query: 'What are its technical indicators?',
sessionId,
useMemory: true,
includeContext: true,
maxIterations: 3
});
log(response2.response.substring(0, 300) + '...', colors.green);
await sleep(1000);
// Third query (uses context from both)
logSubSection('Query 3: Another follow-up question');
const response3 = await client.processQuery({
query: 'Should I invest in it?',
sessionId,
useMemory: true,
includeContext: true,
maxIterations: 3
});
log(response3.response.substring(0, 300) + '...', colors.green);
// Show session info
logSubSection('Session Information:');
const sessionInfo = client.getSessionInfo(sessionId);
if (sessionInfo) {
console.log({
session_id: sessionInfo.sessionId,
message_count: sessionInfo.messageCount,
frequently_accessed_stocks: sessionInfo.frequentlyAccessedStocks
});
}
} catch (error) {
log(`Error: ${error.message}`, colors.red);
}
}
/**
* Demo 3: Technical Analysis Query with Memory
*/
async function demo3_TechnicalAnalysis() {
logSection('Demo 3: Technical Analysis Query with Memory');
const client = new MCPClient({
enableMemory: true,
enableContextSummarization: true,
enableDebugLogging: false
});
const sessionId = 'demo3-session-' + Date.now();
try {
log('Query: Get technical indicators for TCS stock', colors.blue);
log(`Session ID: ${sessionId}`, colors.dim);
const response = await client.processQuery({
query: 'Get me the technical indicators for TCS stock including RSI, MACD, and Bollinger Bands',
sessionId,
useMemory: true,
includeContext: true,
updatePreferences: true,
maxIterations: 5
});
logSubSection('Response:');
log(response.response, colors.green);
logSubSection('Iteration Details:');
response.iteration_details.forEach((detail, index) => {
console.log(`\nIteration ${detail.iteration}:`);
console.log(` Purpose: ${detail.purpose}`);
console.log(` Tools: ${detail.tools_called.join(', ')}`);
});
logSubSection('Session Info:');
const sessionInfo = client.getSessionInfo(sessionId);
if (sessionInfo) {
console.log({
session_id: sessionInfo.sessionId,
message_count: sessionInfo.messageCount,
frequently_accessed_stocks: sessionInfo.frequentlyAccessedStocks,
frequently_used_tools: sessionInfo.frequentlyUsedTools
});
}
} catch (error) {
log(`Error: ${error.message}`, colors.red);
}
}
/**
* Demo 4: Investment Recommendation Query with Memory
*/
async function demo4_InvestmentRecommendation() {
logSection('Demo 4: Investment Recommendation Query with Memory');
const client = new MCPClient({
enableMemory: true,
enableContextSummarization: true,
enableDebugLogging: false
});
const sessionId = 'demo4-session-' + Date.now();
try {
log('Query: Which NIFTY 50 stocks are good for investment based on technical indicators?', colors.blue);
log(`Session ID: ${sessionId}`, colors.dim);
const response = await client.processQuery({
query: 'Which NIFTY 50 stocks are good for investment based on technical indicators?',
sessionId,
useMemory: true,
includeContext: true,
updatePreferences: true,
maxIterations: 5
});
logSubSection('Response:');
log(response.response, colors.green);
logSubSection('Query Statistics:');
console.log({
tools_used: response.tools_used,
iterations_used: response.iterations_used,
data_sources: response.data_sources,
conversation_length: response.conversation_length,
preferences_updated: response.user_preferences_updated
});
logSubSection('Session Statistics:');
const sessionInfo = client.getSessionInfo(sessionId);
if (sessionInfo) {
console.log({
session_id: sessionInfo.sessionId,
message_count: sessionInfo.messageCount,
frequently_accessed_stocks: sessionInfo.frequentlyAccessedStocks,
frequently_used_tools: sessionInfo.frequentlyUsedTools
});
}
} catch (error) {
log(`Error: ${error.message}`, colors.red);
}
}
/**
* Demo 5: Multi-user Sessions
*/
async function demo5_MultiUserSessions() {
logSection('Demo 5: Multi-user Sessions');
const client = new MCPClient({
enableMemory: true,
enableContextSummarization: true,
enableDebugLogging: false
});
try {
// User 1
logSubSection('User 1 Session:');
const user1Session = 'user1-' + Date.now();
const user1Response = await client.processQuery({
query: 'I am interested in IT stocks. Tell me about TCS.',
sessionId: user1Session,
userId: 'user1',
useMemory: true,
maxIterations: 3
});
log(user1Response.response.substring(0, 200) + '...', colors.green);
await sleep(500);
// User 2
logSubSection('User 2 Session:');
const user2Session = 'user2-' + Date.now();
const user2Response = await client.processQuery({
query: 'I am interested in banking stocks. Tell me about HDFC Bank.',
sessionId: user2Session,
userId: 'user2',
useMemory: true,
maxIterations: 3
});
log(user2Response.response.substring(0, 200) + '...', colors.green);
await sleep(500);
// User 1 follow-up
logSubSection('User 1 Follow-up:');
const user1FollowUp = await client.processQuery({
query: 'What about Infosys?',
sessionId: user1Session,
userId: 'user1',
useMemory: true,
includeContext: true,
maxIterations: 3
});
log(user1FollowUp.response.substring(0, 200) + '...', colors.green);
// Show session statistics
logSubSection('Session Statistics:');
const user1Info = client.getSessionInfo(user1Session);
const user2Info = client.getSessionInfo(user2Session);
if (user1Info && user2Info) {
console.log('\nUser 1:');
console.log({
session_id: user1Info.sessionId,
message_count: user1Info.messageCount,
frequently_accessed_stocks: user1Info.frequentlyAccessedStocks
});
console.log('\nUser 2:');
console.log({
session_id: user2Info.sessionId,
message_count: user2Info.messageCount,
frequently_accessed_stocks: user2Info.frequentlyAccessedStocks
});
}
} catch (error) {
log(`Error: ${error.message}`, colors.red);
}
}
/**
* Demo 6: Context Summarization
*/
async function demo6_ContextSummarization() {
logSection('Demo 6: Context Summarization (Long Conversation)');
const client = new MCPClient({
enableMemory: true,
enableContextSummarization: true,
enableDebugLogging: false,
memoryConfig: {
contextWindowConfig: {
maxTokens: 4000, // Small window to trigger summarization
summarizationThreshold: 0.7
}
}
});
const sessionId = 'summarization-demo-' + Date.now();
try {
const queries = [
'Tell me about RELIANCE stock',
'What is its current price?',
'Show me its technical indicators',
'What about TCS stock?',
'Compare RELIANCE and TCS',
'Which one is better for long-term investment?',
'What are the risks?',
'Tell me about HDFC Bank',
'Should I diversify my portfolio?'
];
for (let i = 0; i < queries.length; i++) {
logSubSection(`Query ${i + 1}: ${queries[i]}`);
const response = await client.processQuery({
query: queries[i],
sessionId,
useMemory: true,
includeContext: true,
maxIterations: 2
});
log(response.response.substring(0, 150) + '...', colors.green);
if (response.context_summarized) {
log('\n⚠️ Context was summarized!', colors.yellow);
console.log('Summary:', response.context_summary);
}
await sleep(500);
}
// Show final session stats
logSubSection('Final Session Statistics:');
const stats = await client.getContextStats(sessionId);
console.log({
message_count: stats.messageCount,
total_tokens: stats.tokenCount.totalTokens,
context_window_usage: `${stats.contextWindowUsage.toFixed(1)}%`,
needs_summarization: stats.needsSummarization
});
// Show summarization history
const summaryHistory = client.getSummarizationHistory(sessionId);
if (summaryHistory.length > 0) {
logSubSection('Summarization History:');
console.log(`Total summarizations: ${summaryHistory.length}`);
}
} catch (error) {
log(`Error: ${error.message}`, colors.red);
}
}
/**
* Demo 7: Available Tools and Configuration
*/
async function demo7_ToolsAndConfig() {
logSection('Demo 7: Available Tools and Configuration');
const client = new MCPClient({
enableMemory: true,
enableContextSummarization: true,
enableDebugLogging: false
});
try {
logSubSection('Client Configuration:');
const config = client.getConfig();
console.log({
memory_enabled: client.isMemoryEnabled(),
context_summarization_enabled: client.isContextSummarizationEnabled(),
debug_logging: client.isDebugLoggingEnabled()
});
logSubSection('Available Tools:');
const tools = client.getAvailableTools();
console.log(`Total tools available: ${tools.length}\n`);
tools.slice(0, 5).forEach((tool, index) => {
console.log(`${index + 1}. ${tool.name}`);
console.log(` ${tool.description.substring(0, 80)}...`);
});
log(`\n... and ${tools.length - 5} more tools`, colors.dim);
logSubSection('Context Window Configuration:');
const contextConfig = client.getContextWindowConfig();
console.log({
max_tokens: contextConfig.maxTokens,
summarization_threshold: `${(contextConfig.summarizationThreshold * 100).toFixed(0)}%`,
reserved_tokens: contextConfig.reservedTokens,
min_messages_to_summarize: contextConfig.minMessagesToSummarize
});
} catch (error) {
log(`Error: ${error.message}`, colors.red);
}
}
/**
* Main function to run all demos
*/
async function runAllDemos() {
log('\n' + '█'.repeat(80), colors.bright + colors.magenta);
log(' MCP CLIENT DEMO - NSE India Stock Market Data', colors.bright + colors.magenta);
log('█'.repeat(80) + '\n', colors.bright + colors.magenta);
log('This demo will showcase various features of the MCP Client.', colors.cyan);
log('Make sure you have set the OPENAI_API_KEY environment variable.\n', colors.yellow);
// Check for OpenAI API key
if (!process.env.OPENAI_API_KEY) {
log('❌ Error: OPENAI_API_KEY environment variable is not set!', colors.red);
log('Please set it using: export OPENAI_API_KEY=your-api-key', colors.yellow);
process.exit(1);
}
try {
// Run demos based on command line argument
const demoNumber = process.argv[2];
if (demoNumber) {
const demoMap = {
'1': demo1_BasicQuery,
'2': demo2_SessionWithMemory,
'3': demo3_TechnicalAnalysis,
'4': demo4_InvestmentRecommendation,
'5': demo5_MultiUserSessions,
'6': demo6_ContextSummarization,
'7': demo7_ToolsAndConfig
};
const demoFunc = demoMap[demoNumber];
if (demoFunc) {
await demoFunc();
} else {
log(`Invalid demo number: ${demoNumber}`, colors.red);
log('Available demos: 1-7', colors.yellow);
}
} else {
// Run all demos
await demo1_BasicQuery();
await sleep(2000);
await demo2_SessionWithMemory();
await sleep(2000);
await demo3_TechnicalAnalysis();
await sleep(2000);
await demo4_InvestmentRecommendation();
await sleep(2000);
await demo5_MultiUserSessions();
await sleep(2000);
await demo6_ContextSummarization();
await sleep(2000);
await demo7_ToolsAndConfig();
}
log('\n' + '█'.repeat(80), colors.bright + colors.green);
log(' ✓ Demo completed successfully!', colors.bright + colors.green);
log('█'.repeat(80) + '\n', colors.bright + colors.green);
log('Usage:', colors.cyan);
log(' Run all demos: node demo/mcp-client-demo.js', colors.dim);
log(' Run specific demo: node demo/mcp-client-demo.js <1-7>', colors.dim);
log(' Or use npm: npm run demo:mcp-client <1-7>', colors.dim);
log('\nAvailable demos:', colors.cyan);
log(' 1. Basic Query with Memory and Summarization', colors.dim);
log(' 2. Session-based Conversation with Memory', colors.dim);
log(' 3. Technical Analysis Query with Memory', colors.dim);
log(' 4. Investment Recommendation Query with Memory', colors.dim);
log(' 5. Multi-user Sessions', colors.dim);
log(' 6. Context Summarization (Long Conversations)', colors.dim);
log(' 7. Available Tools and Configuration', colors.dim);
log('\n💡 All demos use memory and context summarization features!', colors.yellow);
} catch (error) {
log('\n' + '█'.repeat(80), colors.bright + colors.red);
log(' ✗ Demo failed!', colors.bright + colors.red);
log('█'.repeat(80) + '\n', colors.bright + colors.red);
log(`Error: ${error.message}`, colors.red);
console.error(error);
process.exit(1);
}
}
// Run the demos
if (require.main === module) {
runAllDemos().catch(error => {
log(`Fatal error: ${error.message}`, colors.red);
console.error(error);
process.exit(1);
});
}
module.exports = {
demo1_BasicQuery,
demo2_SessionWithMemory,
demo3_TechnicalAnalysis,
demo4_InvestmentRecommendation,
demo5_MultiUserSessions,
demo6_ContextSummarization,
demo7_ToolsAndConfig
};
================================================
FILE: demo/memory-example.js
================================================
/**
* Memory and Summarization Example
*
* This example demonstrates the power of memory and context summarization
* in maintaining context across multiple queries in a conversation.
*/
const { MCPClient } = require('../build/mcp/client/mcp-client.js');
// Colors for console output
const colors = {
reset: '\x1b[0m',
bright: '\x1b[1m',
cyan: '\x1b[36m',
green: '\x1b[32m',
yellow: '\x1b[33m',
magenta: '\x1b[35m',
dim: '\x1b[2m',
};
function log(message, color = colors.reset) {
console.log(`${color}${message}${colors.reset}`);
}
async function sleep(ms) {
return new Promise(resolve => setTimeout(resolve, ms));
}
async function runMemoryExample() {
log('\n' + '='.repeat(80), colors.bright + colors.cyan);
log('Memory and Context Summarization Example', colors.bright + colors.cyan);
log('='.repeat(80) + '\n', colors.bright + colors.cyan);
// Create client with memory and summarization enabled
const client = new MCPClient({
enableMemory: true,
enableContextSummarization: true,
enableDebugLogging: false,
memoryConfig: {
maxConversationHistory: 30,
contextWindowConfig: {
maxTokens: 6000, // Smaller window to demonstrate summarization
summarizationThreshold: 0.7 // Trigger at 70% capacity
}
}
});
const sessionId = 'memory-example-' + Date.now();
log(`Session ID: ${sessionId}`, colors.dim);
log('', colors.reset);
try {
// Conversation demonstrating memory and context awareness
const conversation = [
{
query: 'Tell me about RELIANCE stock',
description: 'Initial query about RELIANCE'
},
{
query: 'What is its current price?',
description: 'Follow-up using context (refers to RELIANCE)'
},
{
query: 'Show me its technical indicators',
description: 'Another follow-up (still about RELIANCE)'
},
{
query: 'Now tell me about TCS',
description: 'New topic - TCS stock'
},
{
query: 'Compare it with RELIANCE',
description: 'Comparison using both stocks from context'
},
{
query: 'Which one has better RSI?',
description: 'Technical comparison using context'
},
{
query: 'What about HDFC Bank?',
description: 'Adding another stock to context'
},
{
query: 'Which of the three stocks I asked about is best for long-term investment?',
description: 'Complex query requiring full conversation context'
}
];
for (let i = 0; i < conversation.length; i++) {
const { query, description } = conversation[i];
log(`\n${'─'.repeat(80)}`, colors.dim);
log(`Query ${i + 1}/${conversation.length}: ${description}`, colors.bright + colors.yellow);
log(`${'─'.repeat(80)}`, colors.dim);
log(`\n"${query}"`, colors.cyan);
const response = await client.processQuery({
query,
sessionId,
useMemory: true,
includeContext: true,
updatePreferences: true,
maxIterations: 3
});
log(`\n${colors.green}Response:${colors.reset}`);
log(response.response.substring(0, 300) + '...', colors.green);
// Show memory features in action
log(`\n${colors.magenta}Memory Info:${colors.reset}`);
console.log({
conversation_length: response.conversation_length,
context_used: response.context_used,
preferences_updated: response.user_preferences_updated,
tools_used: response.tools_used
});
// Show context window usage after each query
try {
const contextStats = await client.getContextStats(sessionId);
const usagePercent = contextStats.contextWindowUsage.toFixed(1);
const usageColor = contextStats.contextWindowUsage > 70 ? colors.yellow : colors.green;
log(`\n📊 Context Window: ${usagePercent}% used (${contextStats.tokenCount.totalTokens} tokens)`, usageColor);
} catch (error) {
// Ignore errors in context stats
}
// Check if context was summarized
if (response.context_summarized) {
log(`\n${colors.yellow}⚠️ Context Summarization Triggered!${colors.reset}`, colors.yellow);
log('The conversation history was automatically summarized to save tokens.', colors.yellow);
if (response.context_summary) {
log('\nSummary:', colors.dim);
console.log(response.context_summary);
}
}
await sleep(1000);
}
// Show final session statistics
log('\n' + '='.repeat(80), colors.bright + colors.magenta);
log('Final Session Statistics', colors.bright + colors.magenta);
log('='.repeat(80) + '\n', colors.bright + colors.magenta);
const sessionInfo = client.getSessionInfo(sessionId);
if (sessionInfo) {
log('Conversation Stats:', colors.cyan);
console.log({
session_id: sessionInfo.sessionId,
user_id: sessionInfo.userId || 'anonymous',
message_count: sessionInfo.messageCount,
frequently_accessed_stocks: sessionInfo.frequentlyAccessedStocks,
frequently_used_tools: sessionInfo.frequentlyUsedTools,
session_duration: `${Math.round((Date.now() - new Date(sessionInfo.startTime).getTime()) / 1000)}s`
});
} else {
log('Session info not available', colors.yellow);
}
// Get conversation history to show learned preferences
const conversationHistory = client.getConversationHistory(sessionId);
log('\nConversation Summary:', colors.cyan);
console.log({
total_messages: conversationHistory.length,
user_messages: conversationHistory.filter(m => m.role === 'user').length,
assistant_messages: conversationHistory.filter(m => m.role === 'assistant').length
});
// Show context statistics
const contextStats = await client.getContextStats(sessionId);
log('\nContext Window Usage:', colors.cyan);
console.log({
message_count: contextStats.messageCount,
total_tokens: contextStats.tokenCount.totalTokens,
system_prompt_tokens: contextStats.tokenCount.systemPromptTokens,
estimated_response_tokens: contextStats.tokenCount.estimatedResponseTokens,
window_usage: `${contextStats.contextWindowUsage.toFixed(1)}%`,
needs_summarization: contextStats.needsSummarization
});
// Show summarization history if any
const summaryHistory = client.getSummarizationHistory(sessionId);
if (summaryHistory.length > 0) {
log('\nSummarization History:', colors.cyan);
console.log(`Total summarizations performed: ${summaryHistory.length}`);
// Calculate total tokens saved
const totalTokensSaved = summaryHistory.reduce((sum, s) => sum + (s.tokensSaved || 0), 0);
log(`Total tokens saved: ${totalTokensSaved}`, colors.green);
summaryHistory.forEach((record, index) => {
console.log(`\n Summarization ${index + 1}:`);
console.log(` Timestamp: ${new Date(record.timestamp).toLocaleString()}`);
console.log(` Original messages: ${record.originalMessageCount}`);
console.log(` After summarization: ${record.summarizedMessageCount}`);
console.log(` Tokens saved: ${record.tokensSaved}`);
console.log(` Trigger: ${record.triggerReason}`);
});
}
log('\n' + '='.repeat(80), colors.bright + colors.green);
log('✓ Memory Example Completed Successfully!', colors.bright + colors.green);
log('='.repeat(80) + '\n', colors.bright + colors.green);
log('Key Takeaways:', colors.cyan);
log(' ✓ Context is maintained across queries', colors.green);
log(' ✓ Follow-up questions work naturally', colors.green);
log(' ✓ User preferences are learned automatically', colors.green);
log(' ✓ Context is summarized when needed to save tokens', colors.green);
log(' ✓ Session data persists throughout the conversation', colors.green);
} catch (error) {
log(`\n❌ Error: ${error.message}`, colors.bright);
console.error(error);
process.exit(1);
}
}
// Check for OpenAI API key
if (!process.env.OPENAI_API_KEY) {
log('❌ Error: OPENAI_API_KEY environment variable is not set!', colors.bright);
log('Please set it using: export OPENAI_API_KEY=your-api-key', colors.yellow);
process.exit(1);
}
// Run the example
runMemoryExample().catch(error => {
log(`Fatal error: ${error.message}`, colors.bright);
console.error(error);
process.exit(1);
});
================================================
FILE: docs/.nojekyll
================================================
TypeDoc added this file to prevent GitHub Pages from using Jekyll. You can turn off this behavior by setting the `githubPages` option to false.
================================================
FILE: docs/assets/highlight.css
================================================
:root {
--light-hl-0: #795E26;
--dark-hl-0: #DCDCAA;
--light-hl-1: #000000;
--dark-hl-1: #D4D4D4;
--light-hl-2: #A31515;
--dark-hl-2: #CE9178;
--light-hl-3: #AF00DB;
--dark-hl-3: #C586C0;
--light-hl-4: #001080;
--dark-hl-4: #9CDCFE;
--light-hl-5: #0000FF;
--dark-hl-5: #569CD6;
--light-hl-6: #0070C1;
--dark-hl-6: #4FC1FF;
--light-hl-7: #008000;
--dark-hl-7: #6A9955;
--light-hl-8: #0451A5;
--dark-hl-8: #9CDCFE;
--light-hl-9: #098658;
--dark-hl-9: #B5CEA8;
--light-code-background: #FFFFFF;
--dark-code-background: #1E1E1E;
}
@media (prefers-color-scheme: light) { :root {
--hl-0: var(--light-hl-0);
--hl-1: var(--light-hl-1);
--hl-2: var(--light-hl-2);
--hl-3: var(--light-hl-3);
--hl-4: var(--light-hl-4);
--hl-5: var(--light-hl-5);
--hl-6: var(--light-hl-6);
--hl-7: var(--light-hl-7);
--hl-8: var(--light-hl-8);
--hl-9: var(--light-hl-9);
--code-background: var(--light-code-background);
} }
@media (prefers-color-scheme: dark) { :root {
--hl-0: var(--dark-hl-0);
--hl-1: var(--dark-hl-1);
--hl-2: var(--dark-hl-2);
--hl-3: var(--dark-hl-3);
--hl-4: var(--dark-hl-4);
--hl-5: var(--dark-hl-5);
--hl-6: var(--dark-hl-6);
--hl-7: var(--dark-hl-7);
--hl-8: var(--dark-hl-8);
--hl-9: var(--dark-hl-9);
--code-background: var(--dark-code-background);
} }
:root[data-theme='light'] {
--hl-0: var(--light-hl-0);
--hl-1: var(--light-hl-1);
--hl-2: var(--light-hl-2);
--hl-3: var(--light-hl-3);
--hl-4: var(--light-hl-4);
--hl-5: var(--light-hl-5);
--hl-6: var(--light-hl-6);
--hl-7: var(--light-hl-7);
--hl-8: var(--light-hl-8);
--hl-9: var(--light-hl-9);
--code-background: var(--light-code-background);
}
:root[data-theme='dark'] {
--hl-0: var(--dark-hl-0);
--hl-1: var(--dark-hl-1);
--hl-2: var(--dark-hl-2);
--hl-3: var(--dark-hl-3);
--hl-4: var(--dark-hl-4);
--hl-5: var(--dark-hl-5);
--hl-6: var(--dark-hl-6);
--hl-7: var(--dark-hl-7);
--hl-8: var(--dark-hl-8);
--hl-9: var(--dark-hl-9);
--code-background: var(--dark-code-background);
}
.hl-0 { color: var(--hl-0); }
.hl-1 { color: var(--hl-1); }
.hl-2 { color: var(--hl-2); }
.hl-3 { color: var(--hl-3); }
.hl-4 { color: var(--hl-4); }
.hl-5 { color: var(--hl-5); }
.hl-6 { color: var(--hl-6); }
.hl-7 { color: var(--hl-7); }
.hl-8 { color: var(--hl-8); }
.hl-9 { color: var(--hl-9); }
pre, code { background: var(--code-background); }
================================================
FILE: docs/assets/main.js
================================================
"use strict";
"use strict";(()=>{var Se=Object.create;var re=Object.defineProperty;var we=Object.getOwnPropertyDescriptor;var Te=Object.getOwnPropertyNames;var ke=Object.getPrototypeOf,Qe=Object.prototype.hasOwnProperty;var Pe=(t,e)=>()=>(e||t((e={exports:{}}).exports,e),e.exports);var Ie=(t,e,r,n)=>{if(e&&typeof e=="object"||typeof e=="function")for(let i of Te(e))!Qe.call(t,i)&&i!==r&&re(t,i,{get:()=>e[i],enumerable:!(n=we(e,i))||n.enumerable});return t};var Ce=(t,e,r)=>(r=t!=null?Se(ke(t)):{},Ie(e||!t||!t.__esModule?re(r,"default",{value:t,enumerable:!0}):r,t));var ae=Pe((se,oe)=>{(function(){var t=function(e){var r=new t.Builder;return r.pipeline.add(t.trimmer,t.stopWordFilter,t.stemmer),r.searchPipeline.add(t.stemmer),e.call(r,r),r.build()};t.version="2.3.9";t.utils={},t.utils.warn=function(e){return function(r){e.console&&console.warn&&console.warn(r)}}(this),t.utils.asString=function(e){return e==null?"":e.toString()},t.utils.clone=function(e){if(e==null)return e;for(var r=Object.create(null),n=Object.keys(e),i=0;i<n.length;i++){var s=n[i],o=e[s];if(Array.isArray(o)){r[s]=o.slice();continue}if(typeof o=="string"||typeof o=="number"||typeof o=="boolean"){r[s]=o;continue}throw new TypeError("clone is not deep and does not support nested objects")}return r},t.FieldRef=function(e,r,n){this.docRef=e,this.fieldName=r,this._stringValue=n},t.FieldRef.joiner="/",t.FieldRef.fromString=function(e){var r=e.indexOf(t.FieldRef.joiner);if(r===-1)throw"malformed field ref string";var n=e.slice(0,r),i=e.slice(r+1);return new t.FieldRef(i,n,e)},t.FieldRef.prototype.toString=function(){return this._stringValue==null&&(this._stringValue=this.fieldName+t.FieldRef.joiner+this.docRef),this._stringValue};t.Set=function(e){if(this.elements=Object.create(null),e){this.length=e.length;for(var r=0;r<this.length;r++)this.elements[e[r]]=!0}else this.length=0},t.Set.complete={intersect:function(e){return e},union:function(){return this},contains:function(){return!0}},t.Set.empty={intersect:function(){return this},union:function(e){return e},contains:function(){return!1}},t.Set.prototype.contains=function(e){return!!this.elements[e]},t.Set.prototype.intersect=function(e){var r,n,i,s=[];if(e===t.Set.complete)return this;if(e===t.Set.empty)return e;this.length<e.length?(r=this,n=e):(r=e,n=this),i=Object.keys(r.elements);for(var o=0;o<i.length;o++){var a=i[o];a in n.elements&&s.push(a)}return new t.Set(s)},t.Set.prototype.union=function(e){return e===t.Set.complete?t.Set.complete:e===t.Set.empty?this:new t.Set(Object.keys(this.elements).concat(Object.keys(e.elements)))},t.idf=function(e,r){var n=0;for(var i in e)i!="_index"&&(n+=Object.keys(e[i]).length);var s=(r-n+.5)/(n+.5);return Math.log(1+Math.abs(s))},t.Token=function(e,r){this.str=e||"",this.metadata=r||{}},t.Token.prototype.toString=function(){return this.str},t.Token.prototype.update=function(e){return this.str=e(this.str,this.metadata),this},t.Token.prototype.clone=function(e){return e=e||function(r){return r},new t.Token(e(this.str,this.metadata),this.metadata)};t.tokenizer=function(e,r){if(e==null||e==null)return[];if(Array.isArray(e))return e.map(function(m){return new t.Token(t.utils.asString(m).toLowerCase(),t.utils.clone(r))});for(var n=e.toString().toLowerCase(),i=n.length,s=[],o=0,a=0;o<=i;o++){var l=n.charAt(o),u=o-a;if(l.match(t.tokenizer.separator)||o==i){if(u>0){var d=t.utils.clone(r)||{};d.position=[a,u],d.index=s.length,s.push(new t.Token(n.slice(a,o),d))}a=o+1}}return s},t.tokenizer.separator=/[\s\-]+/;t.Pipeline=function(){this._stack=[]},t.Pipeline.registeredFunctions=Object.create(null),t.Pipeline.registerFunction=function(e,r){r in this.registeredFunctions&&t.utils.warn("Overwriting existing registered function: "+r),e.label=r,t.Pipeline.registeredFunctions[e.label]=e},t.Pipeline.warnIfFunctionNotRegistered=function(e){var r=e.label&&e.label in this.registeredFunctions;r||t.utils.warn(`Function is not registered with pipeline. This may cause problems when serialising the index.
`,e)},t.Pipeline.load=function(e){var r=new t.Pipeline;return e.forEach(function(n){var i=t.Pipeline.registeredFunctions[n];if(i)r.add(i);else throw new Error("Cannot load unregistered function: "+n)}),r},t.Pipeline.prototype.add=function(){var e=Array.prototype.slice.call(arguments);e.forEach(function(r){t.Pipeline.warnIfFunctionNotRegistered(r),this._stack.push(r)},this)},t.Pipeline.prototype.after=function(e,r){t.Pipeline.warnIfFunctionNotRegistered(r);var n=this._stack.indexOf(e);if(n==-1)throw new Error("Cannot find existingFn");n=n+1,this._stack.splice(n,0,r)},t.Pipeline.prototype.before=function(e,r){t.Pipeline.warnIfFunctionNotRegistered(r);var n=this._stack.indexOf(e);if(n==-1)throw new Error("Cannot find existingFn");this._stack.splice(n,0,r)},t.Pipeline.prototype.remove=function(e){var r=this._stack.indexOf(e);r!=-1&&this._stack.splice(r,1)},t.Pipeline.prototype.run=function(e){for(var r=this._stack.length,n=0;n<r;n++){for(var i=this._stack[n],s=[],o=0;o<e.length;o++){var a=i(e[o],o,e);if(!(a==null||a===""))if(Array.isArray(a))for(var l=0;l<a.length;l++)s.push(a[l]);else s.push(a)}e=s}return e},t.Pipeline.prototype.runString=function(e,r){var n=new t.Token(e,r);return this.run([n]).map(function(i){return i.toString()})},t.Pipeline.prototype.reset=function(){this._stack=[]},t.Pipeline.prototype.toJSON=function(){return this._stack.map(function(e){return t.Pipeline.warnIfFunctionNotRegistered(e),e.label})};t.Vector=function(e){this._magnitude=0,this.elements=e||[]},t.Vector.prototype.positionForIndex=function(e){if(this.elements.length==0)return 0;for(var r=0,n=this.elements.length/2,i=n-r,s=Math.floor(i/2),o=this.elements[s*2];i>1&&(o<e&&(r=s),o>e&&(n=s),o!=e);)i=n-r,s=r+Math.floor(i/2),o=this.elements[s*2];if(o==e||o>e)return s*2;if(o<e)return(s+1)*2},t.Vector.prototype.insert=function(e,r){this.upsert(e,r,function(){throw"duplicate index"})},t.Vector.prototype.upsert=function(e,r,n){this._magnitude=0;var i=this.positionForIndex(e);this.elements[i]==e?this.elements[i+1]=n(this.elements[i+1],r):this.elements.splice(i,0,e,r)},t.Vector.prototype.magnitude=function(){if(this._magnitude)return this._magnitude;for(var e=0,r=this.elements.length,n=1;n<r;n+=2){var i=this.elements[n];e+=i*i}return this._magnitude=Math.sqrt(e)},t.Vector.prototype.dot=function(e){for(var r=0,n=this.elements,i=e.elements,s=n.length,o=i.length,a=0,l=0,u=0,d=0;u<s&&d<o;)a=n[u],l=i[d],a<l?u+=2:a>l?d+=2:a==l&&(r+=n[u+1]*i[d+1],u+=2,d+=2);return r},t.Vector.prototype.similarity=function(e){return this.dot(e)/this.magnitude()||0},t.Vector.prototype.toArray=function(){for(var e=new Array(this.elements.length/2),r=1,n=0;r<this.elements.length;r+=2,n++)e[n]=this.elements[r];return e},t.Vector.prototype.toJSON=function(){return this.elements};t.stemmer=function(){var e={ational:"ate",tional:"tion",enci:"ence",anci:"ance",izer:"ize",bli:"ble",alli:"al",entli:"ent",eli:"e",ousli:"ous",ization:"ize",ation:"ate",ator:"ate",alism:"al",iveness:"ive",fulness:"ful",ousness:"ous",aliti:"al",iviti:"ive",biliti:"ble",logi:"log"},r={icate:"ic",ative:"",alize:"al",iciti:"ic",ical:"ic",ful:"",ness:""},n="[^aeiou]",i="[aeiouy]",s=n+"[^aeiouy]*",o=i+"[aeiou]*",a="^("+s+")?"+o+s,l="^("+s+")?"+o+s+"("+o+")?$",u="^("+s+")?"+o+s+o+s,d="^("+s+")?"+i,m=new RegExp(a),y=new RegExp(u),b=new RegExp(l),g=new RegExp(d),E=/^(.+?)(ss|i)es$/,f=/^(.+?)([^s])s$/,p=/^(.+?)eed$/,w=/^(.+?)(ed|ing)$/,S=/.$/,k=/(at|bl|iz)$/,_=new RegExp("([^aeiouylsz])\\1$"),B=new RegExp("^"+s+i+"[^aeiouwxy]$"),A=/^(.+?[^aeiou])y$/,j=/^(.+?)(ational|tional|enci|anci|izer|bli|alli|entli|eli|ousli|ization|ation|ator|alism|iveness|fulness|ousness|aliti|iviti|biliti|logi)$/,q=/^(.+?)(icate|ative|alize|iciti|ical|ful|ness)$/,V=/^(.+?)(al|ance|ence|er|ic|able|ible|ant|ement|ment|ent|ou|ism|ate|iti|ous|ive|ize)$/,$=/^(.+?)(s|t)(ion)$/,I=/^(.+?)e$/,z=/ll$/,W=new RegExp("^"+s+i+"[^aeiouwxy]$"),H=function(c){var v,C,T,h,x,O,F;if(c.length<3)return c;if(T=c.substr(0,1),T=="y"&&(c=T.toUpperCase()+c.substr(1)),h=E,x=f,h.test(c)?c=c.replace(h,"$1$2"):x.test(c)&&(c=c.replace(x,"$1$2")),h=p,x=w,h.test(c)){var L=h.exec(c);h=m,h.test(L[1])&&(h=S,c=c.replace(h,""))}else if(x.test(c)){var L=x.exec(c);v=L[1],x=g,x.test(v)&&(c=v,x=k,O=_,F=B,x.test(c)?c=c+"e":O.test(c)?(h=S,c=c.replace(h,"")):F.test(c)&&(c=c+"e"))}if(h=A,h.test(c)){var L=h.exec(c);v=L[1],c=v+"i"}if(h=j,h.test(c)){var L=h.exec(c);v=L[1],C=L[2],h=m,h.test(v)&&(c=v+e[C])}if(h=q,h.test(c)){var L=h.exec(c);v=L[1],C=L[2],h=m,h.test(v)&&(c=v+r[C])}if(h=V,x=$,h.test(c)){var L=h.exec(c);v=L[1],h=y,h.test(v)&&(c=v)}else if(x.test(c)){var L=x.exec(c);v=L[1]+L[2],x=y,x.test(v)&&(c=v)}if(h=I,h.test(c)){var L=h.exec(c);v=L[1],h=y,x=b,O=W,(h.test(v)||x.test(v)&&!O.test(v))&&(c=v)}return h=z,x=y,h.test(c)&&x.test(c)&&(h=S,c=c.replace(h,"")),T=="y"&&(c=T.toLowerCase()+c.substr(1)),c};return function(R){return R.update(H)}}(),t.Pipeline.registerFunction(t.stemmer,"stemmer");t.generateStopWordFilter=function(e){var r=e.reduce(function(n,i){return n[i]=i,n},{});return function(n){if(n&&r[n.toString()]!==n.toString())return n}},t.stopWordFilter=t.generateStopWordFilter(["a","able","about","across","after","all","almost","also","am","among","an","and","any","are","as","at","be","because","been","but","by","can","cannot","could","dear","did","do","does","either","else","ever","every","for","from","get","got","had","has","have","he","her","hers","him","his","how","however","i","if","in","into","is","it","its","just","least","let","like","likely","may","me","might","most","must","my","neither","no","nor","not","of","off","often","on","only","or","other","our","own","rather","said","say","says","she","should","since","so","some","than","that","the","their","them","then","there","these","they","this","tis","to","too","twas","us","wants","was","we","were","what","when","where","which","while","who","whom","why","will","with","would","yet","you","your"]),t.Pipeline.registerFunction(t.stopWordFilter,"stopWordFilter");t.trimmer=function(e){return e.update(function(r){return r.replace(/^\W+/,"").replace(/\W+$/,"")})},t.Pipeline.registerFunction(t.trimmer,"trimmer");t.TokenSet=function(){this.final=!1,this.edges={},this.id=t.TokenSet._nextId,t.TokenSet._nextId+=1},t.TokenSet._nextId=1,t.TokenSet.fromArray=function(e){for(var r=new t.TokenSet.Builder,n=0,i=e.length;n<i;n++)r.insert(e[n]);return r.finish(),r.root},t.TokenSet.fromClause=function(e){return"editDistance"in e?t.TokenSet.fromFuzzyString(e.term,e.editDistance):t.TokenSet.fromString(e.term)},t.TokenSet.fromFuzzyString=function(e,r){for(var n=new t.TokenSet,i=[{node:n,editsRemaining:r,str:e}];i.length;){var s=i.pop();if(s.str.length>0){var o=s.str.charAt(0),a;o in s.node.edges?a=s.node.edges[o]:(a=new t.TokenSet,s.node.edges[o]=a),s.str.length==1&&(a.final=!0),i.push({node:a,editsRemaining:s.editsRemaining,str:s.str.slice(1)})}if(s.editsRemaining!=0){if("*"in s.node.edges)var l=s.node.edges["*"];else{var l=new t.TokenSet;s.node.edges["*"]=l}if(s.str.length==0&&(l.final=!0),i.push({node:l,editsRemaining:s.editsRemaining-1,str:s.str}),s.str.length>1&&i.push({node:s.node,editsRemaining:s.editsRemaining-1,str:s.str.slice(1)}),s.str.length==1&&(s.node.final=!0),s.str.length>=1){if("*"in s.node.edges)var u=s.node.edges["*"];else{var u=new t.TokenSet;s.node.edges["*"]=u}s.str.length==1&&(u.final=!0),i.push({node:u,editsRemaining:s.editsRemaining-1,str:s.str.slice(1)})}if(s.str.length>1){var d=s.str.charAt(0),m=s.str.charAt(1),y;m in s.node.edges?y=s.node.edges[m]:(y=new t.TokenSet,s.node.edges[m]=y),s.str.length==1&&(y.final=!0),i.push({node:y,editsRemaining:s.editsRemaining-1,str:d+s.str.slice(2)})}}}return n},t.TokenSet.fromString=function(e){for(var r=new t.TokenSet,n=r,i=0,s=e.length;i<s;i++){var o=e[i],a=i==s-1;if(o=="*")r.edges[o]=r,r.final=a;else{var l=new t.TokenSet;l.final=a,r.edges[o]=l,r=l}}return n},t.TokenSet.prototype.toArray=function(){for(var e=[],r=[{prefix:"",node:this}];r.length;){var n=r.pop(),i=Object.keys(n.node.edges),s=i.length;n.node.final&&(n.prefix.charAt(0),e.push(n.prefix));for(var o=0;o<s;o++){var a=i[o];r.push({prefix:n.prefix.concat(a),node:n.node.edges[a]})}}return e},t.TokenSet.prototype.toString=function(){if(this._str)return this._str;for(var e=this.final?"1":"0",r=Object.keys(this.edges).sort(),n=r.length,i=0;i<n;i++){var s=r[i],o=this.edges[s];e=e+s+o.id}return e},t.TokenSet.prototype.intersect=function(e){for(var r=new t.TokenSet,n=void 0,i=[{qNode:e,output:r,node:this}];i.length;){n=i.pop();for(var s=Object.keys(n.qNode.edges),o=s.length,a=Object.keys(n.node.edges),l=a.length,u=0;u<o;u++)for(var d=s[u],m=0;m<l;m++){var y=a[m];if(y==d||d=="*"){var b=n.node.edges[y],g=n.qNode.edges[d],E=b.final&&g.final,f=void 0;y in n.output.edges?(f=n.output.edges[y],f.final=f.final||E):(f=new t.TokenSet,f.final=E,n.output.edges[y]=f),i.push({qNode:g,output:f,node:b})}}}return r},t.TokenSet.Builder=function(){this.previousWord="",this.root=new t.TokenSet,this.uncheckedNodes=[],this.minimizedNodes={}},t.TokenSet.Builder.prototype.insert=function(e){var r,n=0;if(e<this.previousWord)throw new Error("Out of order word insertion");for(var i=0;i<e.length&&i<this.previousWord.length&&e[i]==this.previousWord[i];i++)n++;this.minimize(n),this.uncheckedNodes.length==0?r=this.root:r=this.uncheckedNodes[this.uncheckedNodes.length-1].child;for(var i=n;i<e.length;i++){var s=new t.TokenSet,o=e[i];r.edges[o]=s,this.uncheckedNodes.push({parent:r,char:o,child:s}),r=s}r.final=!0,this.previousWord=e},t.TokenSet.Builder.prototype.finish=function(){this.minimize(0)},t.TokenSet.Builder.prototype.minimize=function(e){for(var r=this.uncheckedNodes.length-1;r>=e;r--){var n=this.uncheckedNodes[r],i=n.child.toString();i in this.minimizedNodes?n.parent.edges[n.char]=this.minimizedNodes[i]:(n.child._str=i,this.minimizedNodes[i]=n.child),this.uncheckedNodes.pop()}};t.Index=function(e){this.invertedIndex=e.invertedIndex,this.fieldVectors=e.fieldVectors,this.tokenSet=e.tokenSet,this.fields=e.fields,this.pipeline=e.pipeline},t.Index.prototype.search=function(e){return this.query(function(r){var n=new t.QueryParser(e,r);n.parse()})},t.Index.prototype.query=function(e){for(var r=new t.Query(this.fields),n=Object.create(null),i=Object.create(null),s=Object.create(null),o=Object.create(null),a=Object.create(null),l=0;l<this.fields.length;l++)i[this.fields[l]]=new t.Vector;e.call(r,r);for(var l=0;l<r.clauses.length;l++){var u=r.clauses[l],d=null,m=t.Set.empty;u.usePipeline?d=this.pipeline.runString(u.term,{fields:u.fields}):d=[u.term];for(var y=0;y<d.length;y++){var b=d[y];u.term=b;var g=t.TokenSet.fromClause(u),E=this.tokenSet.intersect(g).toArray();if(E.length===0&&u.presence===t.Query.presence.REQUIRED){for(var f=0;f<u.fields.length;f++){var p=u.fields[f];o[p]=t.Set.empty}break}for(var w=0;w<E.length;w++)for(var S=E[w],k=this.invertedIndex[S],_=k._index,f=0;f<u.fields.length;f++){var p=u.fields[f],B=k[p],A=Object.keys(B),j=S+"/"+p,q=new t.Set(A);if(u.presence==t.Query.presence.REQUIRED&&(m=m.union(q),o[p]===void 0&&(o[p]=t.Set.complete)),u.presence==t.Query.presence.PROHIBITED){a[p]===void 0&&(a[p]=t.Set.empty),a[p]=a[p].union(q);continue}if(i[p].upsert(_,u.boost,function(Ee,be){return Ee+be}),!s[j]){for(var V=0;V<A.length;V++){var $=A[V],I=new t.FieldRef($,p),z=B[$],W;(W=n[I])===void 0?n[I]=new t.MatchData(S,p,z):W.add(S,p,z)}s[j]=!0}}}if(u.presence===t.Query.presence.REQUIRED)for(var f=0;f<u.fields.length;f++){var p=u.fields[f];o[p]=o[p].intersect(m)}}for(var H=t.Set.complete,R=t.Set.empty,l=0;l<this.fields.length;l++){var p=this.fields[l];o[p]&&(H=H.intersect(o[p])),a[p]&&(R=R.union(a[p]))}var c=Object.keys(n),v=[],C=Object.create(null);if(r.isNegated()){c=Object.keys(this.fieldVectors);for(var l=0;l<c.length;l++){var I=c[l],T=t.FieldRef.fromString(I);n[I]=new t.MatchData}}for(var l=0;l<c.length;l++){var T=t.FieldRef.fromString(c[l]),h=T.docRef;if(H.contains(h)&&!R.contains(h)){var x=this.fieldVectors[T],O=i[T.fieldName].similarity(x),F;if((F=C[h])!==void 0)F.score+=O,F.matchData.combine(n[T]);else{var L={ref:h,score:O,matchData:n[T]};C[h]=L,v.push(L)}}}return v.sort(function(xe,Le){return Le.score-xe.score})},t.Index.prototype.toJSON=function(){var e=Object.keys(this.invertedIndex).sort().map(function(n){return[n,this.invertedIndex[n]]},this),r=Object.keys(this.fieldVectors).map(function(n){return[n,this.fieldVectors[n].toJSON()]},this);return{version:t.version,fields:this.fields,fieldVectors:r,invertedIndex:e,pipeline:this.pipeline.toJSON()}},t.Index.load=function(e){var r={},n={},i=e.fieldVectors,s=Object.create(null),o=e.invertedIndex,a=new t.TokenSet.Builder,l=t.Pipeline.load(e.pipeline);e.version!=t.version&&t.utils.warn("Version mismatch when loading serialised index. Current version of lunr '"+t.version+"' does not match serialized index '"+e.version+"'");for(var u=0;u<i.length;u++){var d=i[u],m=d[0],y=d[1];n[m]=new t.Vector(y)}for(var u=0;u<o.length;u++){var d=o[u],b=d[0],g=d[1];a.insert(b),s[b]=g}return a.finish(),r.fields=e.fields,r.fieldVectors=n,r.invertedIndex=s,r.tokenSet=a.root,r.pipeline=l,new t.Index(r)};t.Builder=function(){this._ref="id",this._fields=Object.create(null),this._documents=Object.create(null),this.invertedIndex=Object.create(null),this.fieldTermFrequencies={},this.fieldLengths={},this.tokenizer=t.tokenizer,this.pipeline=new t.Pipeline,this.searchPipeline=new t.Pipeline,this.documentCount=0,this._b=.75,this._k1=1.2,this.termIndex=0,this.metadataWhitelist=[]},t.Builder.prototype.ref=function(e){this._ref=e},t.Builder.prototype.field=function(e,r){if(/\//.test(e))throw new RangeError("Field '"+e+"' contains illegal character '/'");this._fields[e]=r||{}},t.Builder.prototype.b=function(e){e<0?this._b=0:e>1?this._b=1:this._b=e},t.Builder.prototype.k1=function(e){this._k1=e},t.Builder.prototype.add=function(e,r){var n=e[this._ref],i=Object.keys(this._fields);this._documents[n]=r||{},this.documentCount+=1;for(var s=0;s<i.length;s++){var o=i[s],a=this._fields[o].extractor,l=a?a(e):e[o],u=this.tokenizer(l,{fields:[o]}),d=this.pipeline.run(u),m=new t.FieldRef(n,o),y=Object.create(null);this.fieldTermFrequencies[m]=y,this.fieldLengths[m]=0,this.fieldLengths[m]+=d.length;for(var b=0;b<d.length;b++){var g=d[b];if(y[g]==null&&(y[g]=0),y[g]+=1,this.invertedIndex[g]==null){var E=Object.create(null);E._index=this.termIndex,this.termIndex+=1;for(var f=0;f<i.length;f++)E[i[f]]=Object.create(null);this.invertedIndex[g]=E}this.invertedIndex[g][o][n]==null&&(this.invertedIndex[g][o][n]=Object.create(null));for(var p=0;p<this.metadataWhitelist.length;p++){var w=this.metadataWhitelist[p],S=g.metadata[w];this.invertedIndex[g][o][n][w]==null&&(this.invertedIndex[g][o][n][w]=[]),this.invertedIndex[g][o][n][w].push(S)}}}},t.Builder.prototype.calculateAverageFieldLengths=function(){for(var e=Object.keys(this.fieldLengths),r=e.length,n={},i={},s=0;s<r;s++){var o=t.FieldRef.fromString(e[s]),a=o.fieldName;i[a]||(i[a]=0),i[a]+=1,n[a]||(n[a]=0),n[a]+=this.fieldLengths[o]}for(var l=Object.keys(this._fields),s=0;s<l.length;s++){var u=l[s];n[u]=n[u]/i[u]}this.averageFieldLength=n},t.Builder.prototype.createFieldVectors=function(){for(var e={},r=Object.keys(this.fieldTermFrequencies),n=r.length,i=Object.create(null),s=0;s<n;s++){for(var o=t.FieldRef.fromString(r[s]),a=o.fieldName,l=this.fieldLengths[o],u=new t.Vector,d=this.fieldTermFrequencies[o],m=Object.keys(d),y=m.length,b=this._fields[a].boost||1,g=this._documents[o.docRef].boost||1,E=0;E<y;E++){var f=m[E],p=d[f],w=this.invertedIndex[f]._index,S,k,_;i[f]===void 0?(S=t.idf(this.invertedIndex[f],this.documentCount),i[f]=S):S=i[f],k=S*((this._k1+1)*p)/(this._k1*(1-this._b+this._b*(l/this.averageFieldLength[a]))+p),k*=b,k*=g,_=Math.round(k*1e3)/1e3,u.insert(w,_)}e[o]=u}this.fieldVectors=e},t.Builder.prototype.createTokenSet=function(){this.tokenSet=t.TokenSet.fromArray(Object.keys(this.invertedIndex).sort())},t.Builder.prototype.build=function(){return this.calculateAverageFieldLengths(),this.createFieldVectors(),this.createTokenSet(),new t.Index({invertedIndex:this.invertedIndex,fieldVectors:this.fieldVectors,tokenSet:this.tokenSet,fields:Object.keys(this._fields),pipeline:this.searchPipeline})},t.Builder.prototype.use=function(e){var r=Array.prototype.slice.call(arguments,1);r.unshift(this),e.apply(this,r)},t.MatchData=function(e,r,n){for(var i=Object.create(null),s=Object.keys(n||{}),o=0;o<s.length;o++){var a=s[o];i[a]=n[a].slice()}this.metadata=Object.create(null),e!==void 0&&(this.metadata[e]=Object.create(null),this.metadata[e][r]=i)},t.MatchData.prototype.combine=function(e){for(var r=Object.keys(e.metadata),n=0;n<r.length;n++){var i=r[n],s=Object.keys(e.metadata[i]);this.metadata[i]==null&&(this.metadata[i]=Object.create(null));for(var o=0;o<s.length;o++){var a=s[o],l=Object.keys(e.metadata[i][a]);this.metadata[i][a]==null&&(this.metadata[i][a]=Object.create(null));for(var u=0;u<l.length;u++){var d=l[u];this.metadata[i][a][d]==null?this.metadata[i][a][d]=e.metadata[i][a][d]:this.metadata[i][a][d]=this.metadata[i][a][d].concat(e.metadata[i][a][d])}}}},t.MatchData.prototype.add=function(e,r,n){if(!(e in this.metadata)){this.metadata[e]=Object.create(null),this.metadata[e][r]=n;return}if(!(r in this.metadata[e])){this.metadata[e][r]=n;return}for(var i=Object.keys(n),s=0;s<i.length;s++){var o=i[s];o in this.metadata[e][r]?this.metadata[e][r][o]=this.metadata[e][r][o].concat(n[o]):this.metadata[e][r][o]=n[o]}},t.Query=function(e){this.clauses=[],this.allFields=e},t.Query.wildcard=new String("*"),t.Query.wildcard.NONE=0,t.Query.wildcard.LEADING=1,t.Query.wildcard.TRAILING=2,t.Query.presence={OPTIONAL:1,REQUIRED:2,PROHIBITED:3},t.Query.prototype.clause=function(e){return"fields"in e||(e.fields=this.allFields),"boost"in e||(e.boost=1),"usePipeline"in e||(e.usePipeline=!0),"wildcard"in e||(e.wildcard=t.Query.wildcard.NONE),e.wildcard&t.Query.wildcard.LEADING&&e.term.charAt(0)!=t.Query.wildcard&&(e.term="*"+e.term),e.wildcard&t.Query.wildcard.TRAILING&&e.term.slice(-1)!=t.Query.wildcard&&(e.term=""+e.term+"*"),"presence"in e||(e.presence=t.Query.presence.OPTIONAL),this.clauses.push(e),this},t.Query.prototype.isNegated=function(){for(var e=0;e<this.clauses.length;e++)if(this.clauses[e].presence!=t.Query.presence.PROHIBITED)return!1;return!0},t.Query.prototype.term=function(e,r){if(Array.isArray(e))return e.forEach(function(i){this.term(i,t.utils.clone(r))},this),this;var n=r||{};return n.term=e.toString(),this.clause(n),this},t.QueryParseError=function(e,r,n){this.name="QueryParseError",this.message=e,this.start=r,this.end=n},t.QueryParseError.prototype=new Error,t.QueryLexer=function(e){this.lexemes=[],this.str=e,this.length=e.length,this.pos=0,this.start=0,this.escapeCharPositions=[]},t.QueryLexer.prototype.run=function(){for(var e=t.QueryLexer.lexText;e;)e=e(this)},t.QueryLexer.prototype.sliceString=function(){for(var e=[],r=this.start,n=this.pos,i=0;i<this.escapeCharPositions.length;i++)n=this.escapeCharPositions[i],e.push(this.str.slice(r,n)),r=n+1;return e.push(this.str.slice(r,this.pos)),this.escapeCharPositions.length=0,e.join("")},t.QueryLexer.prototype.emit=function(e){this.lexemes.push({type:e,str:this.sliceString(),start:this.start,end:this.pos}),this.start=this.pos},t.QueryLexer.prototype.escapeCharacter=function(){this.escapeCharPositions.push(this.pos-1),this.pos+=1},t.QueryLexer.prototype.next=function(){if(this.pos>=this.length)return t.QueryLexer.EOS;var e=this.str.charAt(this.pos);return this.pos+=1,e},t.QueryLexer.prototype.width=function(){return this.pos-this.start},t.QueryLexer.prototype.ignore=function(){this.start==this.pos&&(this.pos+=1),this.start=this.pos},t.QueryLexer.prototype.backup=function(){this.pos-=1},t.QueryLexer.prototype.acceptDigitRun=function(){var e,r;do e=this.next(),r=e.charCodeAt(0);while(r>47&&r<58);e!=t.QueryLexer.EOS&&this.backup()},t.QueryLexer.prototype.more=function(){return this.pos<this.length},t.QueryLexer.EOS="EOS",t.QueryLexer.FIELD="FIELD",t.QueryLexer.TERM="TERM",t.QueryLexer.EDIT_DISTANCE="EDIT_DISTANCE",t.QueryLexer.BOOST="BOOST",t.QueryLexer.PRESENCE="PRESENCE",t.QueryLexer.lexField=function(e){return e.backup(),e.emit(t.QueryLexer.FIELD),e.ignore(),t.QueryLexer.lexText},t.QueryLexer.lexTerm=function(e){if(e.width()>1&&(e.backup(),e.emit(t.QueryLexer.TERM)),e.ignore(),e.more())return t.QueryLexer.lexText},t.QueryLexer.lexEditDistance=function(e){return e.ignore(),e.acceptDigitRun(),e.emit(t.QueryLexer.EDIT_DISTANCE),t.QueryLexer.lexText},t.QueryLexer.lexBoost=function(e){return e.ignore(),e.acceptDigitRun(),e.emit(t.QueryLexer.BOOST),t.QueryLexer.lexText},t.QueryLexer.lexEOS=function(e){e.width()>0&&e.emit(t.QueryLexer.TERM)},t.QueryLexer.termSeparator=t.tokenizer.separator,t.QueryLexer.lexText=function(e){for(;;){var r=e.next();if(r==t.QueryLexer.EOS)return t.QueryLexer.lexEOS;if(r.charCodeAt(0)==92){e.escapeCharacter();continue}if(r==":")return t.QueryLexer.lexField;if(r=="~")return e.backup(),e.width()>0&&e.emit(t.QueryLexer.TERM),t.QueryLexer.lexEditDistance;if(r=="^")return e.backup(),e.width()>0&&e.emit(t.QueryLexer.TERM),t.QueryLexer.lexBoost;if(r=="+"&&e.width()===1||r=="-"&&e.width()===1)return e.emit(t.QueryLexer.PRESENCE),t.QueryLexer.lexText;if(r.match(t.QueryLexer.termSeparator))return t.QueryLexer.lexTerm}},t.QueryParser=function(e,r){this.lexer=new t.QueryLexer(e),this.query=r,this.currentClause={},this.lexemeIdx=0},t.QueryParser.prototype.parse=function(){this.lexer.run(),this.lexemes=this.lexer.lexemes;for(var e=t.QueryParser.parseClause;e;)e=e(this);return this.query},t.QueryParser.prototype.peekLexeme=function(){return this.lexemes[this.lexemeIdx]},t.QueryParser.prototype.consumeLexeme=function(){var e=this.peekLexeme();return this.lexemeIdx+=1,e},t.QueryParser.prototype.nextClause=function(){var e=this.currentClause;this.query.clause(e),this.currentClause={}},t.QueryParser.parseClause=function(e){var r=e.peekLexeme();if(r!=null)switch(r.type){case t.QueryLexer.PRESENCE:return t.QueryParser.parsePresence;case t.QueryLexer.FIELD:return t.QueryParser.parseField;case t.QueryLexer.TERM:return t.QueryParser.parseTerm;default:var n="expected either a field or a term, found "+r.type;throw r.str.length>=1&&(n+=" with value '"+r.str+"'"),new t.QueryParseError(n,r.start,r.end)}},t.QueryParser.parsePresence=function(e){var r=e.consumeLexeme();if(r!=null){switch(r.str){case"-":e.currentClause.presence=t.Query.presence.PROHIBITED;break;case"+":e.currentClause.presence=t.Query.presence.REQUIRED;break;default:var n="unrecognised presence operator'"+r.str+"'";throw new t.QueryParseError(n,r.start,r.end)}var i=e.peekLexeme();if(i==null){var n="expecting term or field, found nothing";throw new t.QueryParseError(n,r.start,r.end)}switch(i.type){case t.QueryLexer.FIELD:return t.QueryParser.parseField;case t.QueryLexer.TERM:return t.QueryParser.parseTerm;default:var n="expecting term or field, found '"+i.type+"'";throw new t.QueryParseError(n,i.start,i.end)}}},t.QueryParser.parseField=function(e){var r=e.consumeLexeme();if(r!=null){if(e.query.allFields.indexOf(r.str)==-1){var n=e.query.allFields.map(function(o){return"'"+o+"'"}).join(", "),i="unrecognised field '"+r.str+"', possible fields: "+n;throw new t.QueryParseError(i,r.start,r.end)}e.currentClause.fields=[r.str];var s=e.peekLexeme();if(s==null){var i="expecting term, found nothing";throw new t.QueryParseError(i,r.start,r.end)}switch(s.type){case t.QueryLexer.TERM:return t.QueryParser.parseTerm;default:var i="expecting term, found '"+s.type+"'";throw new t.QueryParseError(i,s.start,s.end)}}},t.QueryParser.parseTerm=function(e){var r=e.consumeLexeme();if(r!=null){e.currentClause.term=r.str.toLowerCase(),r.str.indexOf("*")!=-1&&(e.currentClause.usePipeline=!1);var n=e.peekLexeme();if(n==null){e.nextClause();return}switch(n.type){case t.QueryLexer.TERM:return e.nextClause(),t.QueryParser.parseTerm;case t.QueryLexer.FIELD:return e.nextClause(),t.QueryParser.parseField;case t.QueryLexer.EDIT_DISTANCE:return t.QueryParser.parseEditDistance;case t.QueryLexer.BOOST:return t.QueryParser.parseBoost;case t.QueryLexer.PRESENCE:return e.nextClause(),t.QueryParser.parsePresence;default:var i="Unexpected lexeme type '"+n.type+"'";throw new t.QueryParseError(i,n.start,n.end)}}},t.QueryParser.parseEditDistance=function(e){var r=e.consumeLexeme();if(r!=null){var n=parseInt(r.str,10);if(isNaN(n)){var i="edit distance must be numeric";throw new t.QueryParseError(i,r.start,r.end)}e.currentClause.editDistance=n;var s=e.peekLexeme();if(s==null){e.nextClause();return}switch(s.type){case t.QueryLexer.TERM:return e.nextClause(),t.QueryParser.parseTerm;case t.QueryLexer.FIELD:return e.nextClause(),t.QueryParser.parseField;case t.QueryLexer.EDIT_DISTANCE:return t.QueryParser.parseEditDistance;case t.QueryLexer.BOOST:return t.QueryParser.parseBoost;case t.QueryLexer.PRESENCE:return e.nextClause(),t.QueryParser.parsePresence;default:var i="Unexpected lexeme type '"+s.type+"'";throw new t.QueryParseError(i,s.start,s.end)}}},t.QueryParser.parseBoost=function(e){var r=e.consumeLexeme();if(r!=null){var n=parseInt(r.str,10);if(isNaN(n)){var i="boost must be numeric";throw new t.QueryParseError(i,r.start,r.end)}e.currentClause.boost=n;var s=e.peekLexeme();if(s==null){e.nextClause();return}switch(s.type){case t.QueryLexer.TERM:return e.nextClause(),t.QueryParser.parseTerm;case t.QueryLexer.FIELD:return e.nextClause(),t.QueryParser.parseField;case t.QueryLexer.EDIT_DISTANCE:return t.QueryParser.parseEditDistance;case t.QueryLexer.BOOST:return t.QueryParser.parseBoost;case t.QueryLexer.PRESENCE:return e.nextClause(),t.QueryParser.parsePresence;default:var i="Unexpected lexeme type '"+s.type+"'";throw new t.QueryParseError(i,s.start,s.end)}}},function(e,r){typeof define=="function"&&define.amd?define(r):typeof se=="object"?oe.exports=r():e.lunr=r()}(this,function(){return t})})()});var ne=[];function G(t,e){ne.push({selector:e,constructor:t})}var U=class{constructor(){this.alwaysVisibleMember=null;this.createComponents(document.body),this.ensureActivePageVisible(),this.ensureFocusedElementVisible(),this.listenForCodeCopies(),window.addEventListener("hashchange",()=>this.ensureFocusedElementVisible())}createComponents(e){ne.forEach(r=>{e.querySelectorAll(r.selector).forEach(n=>{n.dataset.hasInstance||(new r.constructor({el:n,app:this}),n.dataset.hasInstance=String(!0))})})}filterChanged(){this.ensureFocusedElementVisible()}ensureActivePageVisible(){let e=document.querySelector(".tsd-navigation .current"),r=e?.parentElement;for(;r&&!r.classList.contains(".tsd-navigation");)r instanceof HTMLDetailsElement&&(r.open=!0),r=r.parentElement;if(e){let n=e.getBoundingClientRect().top-document.documentElement.clientHeight/4;document.querySelector(".site-menu").scrollTop=n}}ensureFocusedElementVisible(){if(this.alwaysVisibleMember&&(this.alwaysVisibleMember.classList.remove("always-visible"),this.alwaysVisibleMember.firstElementChild.remove(),this.alwaysVisibleMember=null),!location.hash)return;let e=document.getElementById(location.hash.substring(1));if(!e)return;let r=e.parentElement;for(;r&&r.tagName!=="SECTION";)r=r.parentElement;if(r&&r.offsetParent==null){this.alwaysVisibleMember=r,r.classList.add("always-visible");let n=document.createElement("p");n.classList.add("warning"),n.textContent="This member is normally hidden due to your filter settings.",r.prepend(n)}}listenForCodeCopies(){document.querySelectorAll("pre > button").forEach(e=>{let r;e.addEventListener("click",()=>{e.previousElementSibling instanceof HTMLElement&&navigator.clipboard.writeText(e.previousElementSibling.innerText.trim()),e.textContent="Copied!",e.classList.add("visible"),clearTimeout(r),r=setTimeout(()=>{e.classList.remove("visible"),r=setTimeout(()=>{e.textContent="Copy"},100)},1e3)})})}};var ie=(t,e=100)=>{let r;return()=>{clearTimeout(r),r=setTimeout(()=>t(),e)}};var ce=Ce(ae());function de(){let t=document.getElementById("tsd-search");if(!t)return;let e=document.getElementById("tsd-search-script");t.classList.add("loading"),e&&(e.addEventListener("error",()=>{t.classList.remove("loading"),t.classList.add("failure")}),e.addEventListener("load",()=>{t.classList.remove("loading"),t.classList.add("ready")}),window.searchData&&t.classList.remove("loading"));let r=document.querySelector("#tsd-search input"),n=document.querySelector("#tsd-search .results");if(!r||!n)throw new Error("The input field or the result list wrapper was not found");let i=!1;n.addEventListener("mousedown",()=>i=!0),n.addEventListener("mouseup",()=>{i=!1,t.classList.remove("has-focus")}),r.addEventListener("focus",()=>t.classList.add("has-focus")),r.addEventListener("blur",()=>{i||(i=!1,t.classList.remove("has-focus"))});let s={base:t.dataset.base+"/"};Oe(t,n,r,s)}function Oe(t,e,r,n){r.addEventListener("input",ie(()=>{Re(t,e,r,n)},200));let i=!1;r.addEventListener("keydown",s=>{i=!0,s.key=="Enter"?Fe(e,r):s.key=="Escape"?r.blur():s.key=="ArrowUp"?ue(e,-1):s.key==="ArrowDown"?ue(e,1):i=!1}),r.addEventListener("keypress",s=>{i&&s.preventDefault()}),document.body.addEventListener("keydown",s=>{s.altKey||s.ctrlKey||s.metaKey||!r.matches(":focus")&&s.key==="/"&&(r.focus(),s.preventDefault())})}function _e(t,e){t.index||window.searchData&&(e.classList.remove("loading"),e.classList.add("ready"),t.data=window.searchData,t.index=ce.Index.load(window.searchData.index))}function Re(t,e,r,n){if(_e(n,t),!n.index||!n.data)return;e.textContent="";let i=r.value.trim(),s=i?n.index.search(`*${i}*`):[];for(let o=0;o<s.length;o++){let a=s[o],l=n.data.rows[Number(a.ref)],u=1;l.name.toLowerCase().startsWith(i.toLowerCase())&&(u*=1+1/(1+Math.abs(l.name.length-i.length))),a.score*=u}s.sort((o,a)=>a.score-o.score);for(let o=0,a=Math.min(10,s.length);o<a;o++){let l=n.data.rows[Number(s[o].ref)],u=le(l.name,i);globalThis.DEBUG_SEARCH_WEIGHTS&&(u+=` (score: ${s[o].score.toFixed(2)})`),l.parent&&(u=`<span class="parent">${le(l.parent,i)}.</span>${u}`);let d=document.createElement("li");d.classList.value=l.classes??"";let m=document.createElement("a");m.href=n.base+l.url,m.innerHTML=u,d.append(m),e.appendChild(d)}}function ue(t,e){let r=t.querySelector(".current");if(!r)r=t.querySelector(e==1?"li:first-child":"li:last-child"),r&&r.classList.add("current");else{let n=r;if(e===1)do n=n.nextElementSibling??void 0;while(n instanceof HTMLElement&&n.offsetParent==null);else do n=n.previousElementSibling??void 0;while(n instanceof HTMLElement&&n.offsetParent==null);n&&(r.classList.remove("current"),n.classList.add("current"))}}function Fe(t,e){let r=t.querySelector(".current");if(r||(r=t.querySelector("li:first-child")),r){let n=r.querySelector("a");n&&(window.location.href=n.href),e.blur()}}function le(t,e){if(e==="")return t;let r=t.toLocaleLowerCase(),n=e.toLocaleLowerCase(),i=[],s=0,o=r.indexOf(n);for(;o!=-1;)i.push(K(t.substring(s,o)),`<b>${K(t.substring(o,o+n.length))}</b>`),s=o+n.length,o=r.indexOf(n,s);return i.push(K(t.substring(s))),i.join("")}var Me={"&":"&","<":"<",">":">","'":"'",'"':"""};function K(t){return t.replace(/[&<>"'"]/g,e=>Me[e])}var P=class{constructor(e){this.el=e.el,this.app=e.app}};var M="mousedown",fe="mousemove",N="mouseup",J={x:0,y:0},he=!1,ee=!1,De=!1,D=!1,pe=/Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(navigator.userAgent);document.documentElement.classList.add(pe?"is-mobile":"not-mobile");pe&&"ontouchstart"in document.documentElement&&(De=!0,M="touchstart",fe="touchmove",N="touchend");document.addEventListener(M,t=>{ee=!0,D=!1;let e=M=="touchstart"?t.targetTouches[0]:t;J.y=e.pageY||0,J.x=e.pageX||0});document.addEventListener(fe,t=>{if(ee&&!D){let e=M=="touchstart"?t.targetTouches[0]:t,r=J.x-(e.pageX||0),n=J.y-(e.pageY||0);D=Math.sqrt(r*r+n*n)>10}});document.addEventListener(N,()=>{ee=!1});document.addEventListener("click",t=>{he&&(t.preventDefault(),t.stopImmediatePropagation(),he=!1)});var X=class extends P{constructor(r){super(r);this.className=this.el.dataset.toggle||"",this.el.addEventListener(N,n=>this.onPointerUp(n)),this.el.addEventListener("click",n=>n.preventDefault()),document.addEventListener(M,n=>this.onDocumentPointerDown(n)),document.addEventListener(N,n=>this.onDocumentPointerUp(n))}setActive(r){if(this.active==r)return;this.active=r,document.documentElement.classList.toggle("has-"+this.className,r),this.el.classList.toggle("active",r);let n=(this.active?"to-has-":"from-has-")+this.className;document.documentElement.classList.add(n),setTimeout(()=>document.documentElement.classList.remove(n),500)}onPointerUp(r){D||(this.setActive(!0),r.preventDefault())}onDocumentPointerDown(r){if(this.active){if(r.target.closest(".col-sidebar, .tsd-filter-group"))return;this.setActive(!1)}}onDocumentPointerUp(r){if(!D&&this.active&&r.target.closest(".col-sidebar")){let n=r.target.closest("a");if(n){let i=window.location.href;i.indexOf("#")!=-1&&(i=i.substring(0,i.indexOf("#"))),n.href.substring(0,i.length)==i&&setTimeout(()=>this.setActive(!1),250)}}}};var te;try{te=localStorage}catch{te={getItem(){return null},setItem(){}}}var Q=te;var me=document.head.appendChild(document.createElement("style"));me.dataset.for="filters";var Y=class extends P{constructor(r){super(r);this.key=`filter-${this.el.name}`,this.value=this.el.checked,this.el.addEventListener("change",()=>{this.setLocalStorage(this.el.checked)}),this.setLocalStorage(this.fromLocalStorage()),me.innerHTML+=`html:not(.${this.key}) .tsd-is-${this.el.name} { display: none; }
`}fromLocalStorage(){let r=Q.getItem(this.key);return r?r==="true":this.el.checked}setLocalStorage(r){Q.setItem(this.key,r.toString()),this.value=r,this.handleValueChange()}handleValueChange(){this.el.checked=this.value,document.documentElement.classList.toggle(this.key,this.value),this.app.filterChanged(),document.querySelectorAll(".tsd-index-section").forEach(r=>{r.style.display="block";let n=Array.from(r.querySelectorAll(".tsd-index-link")).every(i=>i.offsetParent==null);r.style.display=n?"none":"block"})}};var Z=class extends P{constructor(r){super(r);this.summary=this.el.querySelector(".tsd-accordion-summary"),this.icon=this.summary.querySelector("svg"),this.key=`tsd-accordion-${this.summary.dataset.key??this.summary.textContent.trim().replace(/\s+/g,"-").toLowerCase()}`;let n=Q.getItem(this.key);this.el.open=n?n==="true":this.el.open,this.el.addEventListener("toggle",()=>this.update()),this.update()}update(){this.icon.style.transform=`rotate(${this.el.open?0:-90}deg)`,Q.setItem(this.key,this.el.open.toString())}};function ve(t){let e=Q.getItem("tsd-theme")||"os";t.value=e,ye(e),t.addEventListener("change",()=>{Q.setItem("tsd-theme",t.value),ye(t.value)})}function ye(t){document.documentElement.dataset.theme=t}de();G(X,"a[data-toggle]");G(Z,".tsd-index-accordion");G(Y,".tsd-filter-item input[type=checkbox]");var ge=document.getElementById("tsd-theme");ge&&ve(ge);var Ae=new U;Object.defineProperty(window,"app",{value:Ae});document.querySelectorAll("summary a").forEach(t=>{t.addEventListener("click",()=>{location.assign(t.href)})});})();
/*! Bundled license information:
lunr/lunr.js:
(**
* lunr - http://lunrjs.com - A bit like Solr, but much smaller and not as bright - 2.3.9
* Copyright (C) 2020 Oliver Nightingale
* @license MIT
*)
(*!
* lunr.utils
* Copyright (C) 2020 Oliver Nightingale
*)
(*!
* lunr.Set
* Copyright (C) 2020 Oliver Nightingale
*)
(*!
* lunr.tokenizer
* Copyright (C) 2020 Oliver Nightingale
*)
(*!
* lunr.Pipeline
* Copyright (C) 2020 Oliver Nightingale
*)
(*!
* lunr.Vector
* Copyright (C) 2020 Oliver Nightingale
*)
(*!
* lunr.stemmer
* Copyright (C) 2020 Oliver Nightingale
* Includes code from - http://tartarus.org/~martin/PorterStemmer/js.txt
*)
(*!
* lunr.stopWordFilter
* Copyright (C) 2020 Oliver Nightingale
*)
(*!
* lunr.trimmer
* Copyright (C) 2020 Oliver Nightingale
*)
(*!
* lunr.TokenSet
* Copyright (C) 2020 Oliver Nightingale
*)
(*!
* lunr.Index
* Copyright (C) 2020 Oliver Nightingale
*)
(*!
* lunr.Builder
* Copyright (C) 2020 Oliver Nightingale
*)
*/
================================================
FILE: docs/assets/search.js
================================================
window.searchData = JSON.parse("{\"rows\":[{\"kind\":8,\"name\":\"ApiList\",\"url\":\"enums/ApiList.html\",\"classes\":\"\"},{\"kind\":16,\"name\":\"GLOSSARY\",\"url\":\"enums/ApiList.html#GLOSSARY\",\"classes\":\"\",\"parent\":\"ApiList\"},{\"kind\":16,\"name\":\"HOLIDAY_TRADING\",\"url\":\"enums/ApiList.html#HOLIDAY_TRADING\",\"classes\":\"\",\"parent\":\"ApiList\"},{\"kind\":16,\"name\":\"HOLIDAY_CLEARING\",\"url\":\"enums/ApiList.html#HOLIDAY_CLEARING\",\"classes\":\"\",\"parent\":\"ApiList\"},{\"kind\":16,\"name\":\"MARKET_STATUS\",\"url\":\"enums/ApiList.html#MARKET_STATUS\",\"classes\":\"\",\"parent\":\"ApiList\"},{\"kind\":16,\"name\":\"MARKET_TURNOVER\",\"url\":\"enums/ApiList.html#MARKET_TURNOVER\",\"classes\":\"\",\"parent\":\"ApiList\"},{\"kind\":16,\"name\":\"ALL_INDICES\",\"url\":\"enums/ApiList.html#ALL_INDICES\",\"classes\":\"\",\"parent\":\"ApiList\"},{\"kind\":16,\"name\":\"INDEX_NAMES\",\"url\":\"enums/ApiList.html#INDEX_NAMES\",\"classes\":\"\",\"parent\":\"ApiList\"},{\"kind\":16,\"name\":\"CIRCULARS\",\"url\":\"enums/ApiList.html#CIRCULARS\",\"classes\":\"\",\"parent\":\"ApiList\"},{\"kind\":16,\"name\":\"LATEST_CIRCULARS\",\"url\":\"enums/ApiList.html#LATEST_CIRCULARS\",\"classes\":\"\",\"parent\":\"ApiList\"},{\"kind\":16,\"name\":\"EQUITY_MASTER\",\"url\":\"enums/ApiList.html#EQUITY_MASTER\",\"classes\":\"\",\"parent\":\"ApiList\"},{\"kind\":16,\"name\":\"MARKET_DATA_PRE_OPEN\",\"url\":\"enums/ApiList.html#MARKET_DATA_PRE_OPEN\",\"classes\":\"\",\"parent\":\"ApiList\"},{\"kind\":16,\"name\":\"MERGED_DAILY_REPORTS_CAPITAL\",\"url\":\"enums/ApiList.html#MERGED_DAILY_REPORTS_CAPITAL\",\"classes\":\"\",\"parent\":\"ApiList\"},{\"kind\":16,\"name\":\"MERGED_DAILY_REPORTS_DERIVATIVES\",\"url\":\"enums/ApiList.html#MERGED_DAILY_REPORTS_DERIVATIVES\",\"classes\":\"\",\"parent\":\"ApiList\"},{\"kind\":16,\"name\":\"MERGED_DAILY_REPORTS_DEBT\",\"url\":\"enums/ApiList.html#MERGED_DAILY_REPORTS_DEBT\",\"classes\":\"\",\"parent\":\"ApiList\"},{\"kind\":128,\"name\":\"NseIndia\",\"url\":\"classes/NseIndia.html\",\"classes\":\"\"},{\"kind\":512,\"name\":\"constructor\",\"url\":\"classes/NseIndia.html#constructor\",\"classes\":\"\",\"parent\":\"NseIndia\"},{\"kind\":2048,\"name\":\"getData\",\"url\":\"classes/NseIndia.html#getData\",\"classes\":\"\",\"parent\":\"NseIndia\"},{\"kind\":2048,\"name\":\"getDataByEndpoint\",\"url\":\"classes/NseIndia.html#getDataByEndpoint\",\"classes\":\"\",\"parent\":\"NseIndia\"},{\"kind\":2048,\"name\":\"getAllStockSymbols\",\"url\":\"classes/NseIndia.html#getAllStockSymbols\",\"classes\":\"\",\"parent\":\"NseIndia\"},{\"kind\":2048,\"name\":\"getEquityDetails\",\"url\":\"classes/NseIndia.html#getEquityDetails\",\"classes\":\"\",\"parent\":\"NseIndia\"},{\"kind\":2048,\"name\":\"getEquityTradeInfo\",\"url\":\"classes/NseIndia.html#getEquityTradeInfo\",\"classes\":\"\",\"parent\":\"NseIndia\"},{\"kind\":2048,\"name\":\"getEquityCorporateInfo\",\"url\":\"classes/NseIndia.html#getEquityCorporateInfo\",\"classes\":\"\",\"parent\":\"NseIndia\"},{\"kind\":2048,\"name\":\"getEquityIntradayData\",\"url\":\"classes/NseIndia.html#getEquityIntradayData\",\"classes\":\"\",\"parent\":\"NseIndia\"},{\"kind\":2048,\"name\":\"getEquityHistoricalData\",\"url\":\"classes/NseIndia.html#getEquityHistoricalData\",\"classes\":\"\",\"parent\":\"NseIndia\"},{\"kind\":2048,\"name\":\"getEquitySeries\",\"url\":\"classes/NseIndia.html#getEquitySeries\",\"classes\":\"\",\"parent\":\"NseIndia\"},{\"kind\":2048,\"name\":\"getEquityStockIndices\",\"url\":\"classes/NseIndia.html#getEquityStockIndices\",\"classes\":\"\",\"parent\":\"NseIndia\"},{\"kind\":2048,\"name\":\"getIndexIntradayData\",\"url\":\"classes/NseIndia.html#getIndexIntradayData\",\"classes\":\"\",\"parent\":\"NseIndia\"},{\"kind\":2048,\"name\":\"getIndexOptionChainContractInfo\",\"url\":\"classes/NseIndia.html#getIndexOptionChainContractInfo\",\"classes\":\"\",\"parent\":\"NseIndia\"},{\"kind\":2048,\"name\":\"getIndexOptionChain\",\"url\":\"classes/NseIndia.html#getIndexOptionChain\",\"classes\":\"\",\"parent\":\"NseIndia\"},{\"kind\":2048,\"name\":\"getEquityOptionChain\",\"url\":\"classes/NseIndia.html#getEquityOptionChain\",\"classes\":\"\",\"parent\":\"NseIndia\"},{\"kind\":2048,\"name\":\"getCommodityOptionChain\",\"url\":\"classes/NseIndia.html#getCommodityOptionChain\",\"classes\":\"\",\"parent\":\"NseIndia\"},{\"kind\":2048,\"name\":\"getGlossary\",\"url\":\"classes/NseIndia.html#getGlossary\",\"classes\":\"\",\"parent\":\"NseIndia\"},{\"kind\":2048,\"name\":\"getTradingHolidays\",\"url\":\"classes/NseIndia.html#getTradingHolidays\",\"classes\":\"\",\"parent\":\"NseIndia\"},{\"kind\":2048,\"name\":\"getClearingHolidays\",\"url\":\"classes/NseIndia.html#getClearingHolidays\",\"classes\":\"\",\"parent\":\"NseIndia\"},{\"kind\":2048,\"name\":\"getMarketStatus\",\"url\":\"classes/NseIndia.html#getMarketStatus\",\"classes\":\"\",\"parent\":\"NseIndia\"},{\"kind\":2048,\"name\":\"getMarketTurnover\",\"url\":\"classes/NseIndia.html#getMarketTurnover\",\"classes\":\"\",\"parent\":\"NseIndia\"},{\"kind\":2048,\"name\":\"getAllIndices\",\"url\":\"classes/NseIndia.html#getAllIndices\",\"classes\":\"\",\"parent\":\"NseIndia\"},{\"kind\":2048,\"name\":\"getIndexNames\",\"url\":\"classes/NseIndia.html#getIndexNames\",\"classes\":\"\",\"parent\":\"NseIndia\"},{\"kind\":2048,\"name\":\"getCirculars\",\"url\":\"classes/NseIndia.html#getCirculars\",\"classes\":\"\",\"parent\":\"NseIndia\"},{\"kind\":2048,\"name\":\"getLatestCirculars\",\"url\":\"classes/NseIndia.html#getLatestCirculars\",\"classes\":\"\",\"parent\":\"NseIndia\"},{\"kind\":2048,\"name\":\"getEquityMaster\",\"url\":\"classes/NseIndia.html#getEquityMaster\",\"classes\":\"\",\"parent\":\"NseIndia\"},{\"kind\":2048,\"name\":\"getPreOpenMarketData\",\"url\":\"classes/NseIndia.html#getPreOpenMarketData\",\"classes\":\"\",\"parent\":\"NseIndia\"},{\"kind\":2048,\"name\":\"getMergedDailyReportsCapital\",\"url\":\"classes/NseIndia.html#getMergedDailyReportsCapital\",\"classes\":\"\",\"parent\":\"NseIndia\"},{\"kind\":2048,\"name\":\"getMergedDailyReportsDerivatives\",\"url\":\"classes/NseIndia.html#getMergedDailyReportsDerivatives\",\"classes\":\"\",\"parent\":\"NseIndia\"},{\"kind\":2048,\"name\":\"getMergedDailyReportsDebt\",\"url\":\"classes/NseIndia.html#getMergedDailyReportsDebt\",\"classes\":\"\",\"parent\":\"NseIndia\"},{\"kind\":2048,\"name\":\"getTechnicalIndicators\",\"url\":\"classes/NseIndia.html#getTechnicalIndicators\",\"classes\":\"\",\"parent\":\"NseIndia\"},{\"kind\":256,\"name\":\"DateRange\",\"url\":\"interfaces/DateRange.html\",\"classes\":\"\"},{\"kind\":1024,\"name\":\"start\",\"url\":\"interfaces/DateRange.html#start\",\"classes\":\"\",\"parent\":\"DateRange\"},{\"kind\":1024,\"name\":\"end\",\"url\":\"interfaces/DateRange.html#end\",\"classes\":\"\",\"parent\":\"DateRange\"},{\"kind\":256,\"name\":\"IntradayData\",\"url\":\"interfaces/IntradayData.html\",\"classes\":\"\"},{\"kind\":1024,\"name\":\"identifier\",\"url\":\"interfaces/IntradayData.html#identifier\",\"classes\":\"\",\"parent\":\"IntradayData\"},{\"kind\":1024,\"name\":\"name\",\"url\":\"interfaces/IntradayData.html#name\",\"classes\":\"\",\"parent\":\"IntradayData\"},{\"kind\":1024,\"name\":\"grapthData\",\"url\":\"interfaces/IntradayData.html#grapthData\",\"classes\":\"\",\"parent\":\"IntradayData\"},{\"kind\":1024,\"name\":\"closePrice\",\"url\":\"interfaces/IntradayData.html#closePrice\",\"classes\":\"\",\"parent\":\"IntradayData\"},{\"kind\":256,\"name\":\"EquityDetails\",\"url\":\"interfaces/EquityDetails.html\",\"classes\":\"\"},{\"kind\":1024,\"name\":\"info\",\"url\":\"interfaces/EquityDetails.html#info\",\"classes\":\"\",\"parent\":\"EquityDetails\"},{\"kind\":1024,\"name\":\"metadata\",\"url\":\"interfaces/EquityDetails.html#metadata\",\"classes\":\"\",\"parent\":\"EquityDetails\"},{\"kind\":1024,\"name\":\"securityInfo\",\"url\":\"interfaces/EquityDetails.html#securityInfo\",\"classes\":\"\",\"parent\":\"EquityDetails\"},{\"kind\":1024,\"name\":\"sddDetails\",\"url\":\"interfaces/EquityDetails.html#sddDetails\",\"classes\":\"\",\"parent\":\"EquityDetails\"},{\"kind\":65536,\"name\":\"__type\",\"url\":\"interfaces/EquityDetails.html#sddDetails.__type-1\",\"classes\":\"\",\"parent\":\"EquityDetails.sddDetails\"},{\"kind\":1024,\"name\":\"SDDAuditor\",\"url\":\"interfaces/EquityDetails.html#sddDetails.__type-1.SDDAuditor\",\"classes\":\"\",\"parent\":\"EquityDetails.sddDetails.__type\"},{\"kind\":1024,\"name\":\"SDDStatus\",\"url\":\"interfaces/EquityDetails.html#sddDetails.__type-1.SDDStatus\",\"classes\":\"\",\"parent\":\"EquityDetails.sddDetails.__type\"},{\"kind\":1024,\"name\":\"currentMarketType\",\"url\":\"interfaces/EquityDetails.html#currentMarketType\",\"classes\":\"\",\"parent\":\"EquityDetails\"},{\"kind\":1024,\"name\":\"priceInfo\",\"url\":\"interfaces/EquityDetails.html#priceInfo\",\"classes\":\"\",\"parent\":\"EquityDetails\"},{\"kind\":1024,\"name\":\"industryInfo\",\"url\":\"interfaces/EquityDetails.html#industryInfo\",\"classes\":\"\",\"parent\":\"EquityDetails\"},{\"kind\":65536,\"name\":\"__type\",\"url\":\"interfaces/EquityDetails.html#industryInfo.__type\",\"classes\":\"\",\"parent\":\"EquityDetails.industryInfo\"},{\"kind\":1024,\"name\":\"macro\",\"url\":\"interfaces/EquityDetails.html#industryInfo.__type.macro\",\"classes\":\"\",\"parent\":\"EquityDetails.industryInfo.__type\"},{\"kind\":1024,\"name\":\"sector\",\"url\":\"interfaces/EquityDetails.html#industryInfo.__type.sector\",\"classes\":\"\",\"parent\":\"EquityDetails.industryInfo.__type\"},{\"kind\":1024,\"name\":\"industry\",\"url\":\"interfaces/EquityDetails.html#industryInfo.__type.industry\",\"classes\":\"\",\"parent\":\"EquityDetails.industryInfo.__type\"},{\"kind\":1024,\"name\":\"basicIndustry\",\"url\":\"interfaces/EquityDetails.html#industryInfo.__type.basicIndustry\",\"classes\":\"\",\"parent\":\"EquityDetails.industryInfo.__type\"},{\"kind\":1024,\"name\":\"preOpenMarket\",\"url\":\"interfaces/EquityDetails.html#preOpenMarket\",\"classes\":\"\",\"parent\":\"EquityDetails\"},{\"kind\":256,\"name\":\"EquityTradeInfo\",\"url\":\"interfaces/EquityTradeInfo.html\",\"classes\":\"\"},{\"kind\":1024,\"name\":\"noBlockDeals\",\"url\":\"interfaces/EquityTradeInfo.html#noBlockDeals\",\"classes\":\"\",\"parent\":\"EquityTradeInfo\"},{\"kind\":1024,\"name\":\"bulkBlockDeals\",\"url\":\"interfaces/EquityTradeInfo.html#bulkBlockDeals\",\"classes\":\"\",\"parent\":\"EquityTradeInfo\"},{\"kind\":1024,\"name\":\"marketDeptOrderBook\",\"url\":\"interfaces/EquityTradeInfo.html#marketDeptOrderBook\",\"classes\":\"\",\"parent\":\"EquityTradeInfo\"},{\"kind\":65536,\"name\":\"__type\",\"url\":\"interfaces/EquityTradeInfo.html#marketDeptOrderBook.__type\",\"classes\":\"\",\"parent\":\"EquityTradeInfo.marketDeptOrderBook\"},{\"kind\":1024,\"name\":\"totalBuyQuantity\",\"url\":\"interfaces/EquityTradeInfo.html#marketDeptOrderBook.__type.totalBuyQuantity\",\"classes\":\"\",\"parent\":\"EquityTradeInfo.marketDeptOrderBook.__type\"},{\"kind\":1024,\"name\":\"totalSellQuantity\",\"url\":\"interfaces/EquityTradeInfo.html#marketDeptOrderBook.__type.totalSellQuantity\",\"classes\":\"\",\"parent\":\"EquityTradeInfo.marketDeptOrderBook.__type\"},{\"kind\":1024,\"name\":\"open\",\"url\":\"interfaces/EquityTradeInfo.html#marketDeptOrderBook.__type.open\",\"classes\":\"\",\"parent\":\"EquityTradeInfo.marketDeptOrderBook.__type\"},{\"kind\":1024,\"name\":\"bid\",\"url\":\"interfaces/EquityTradeInfo.html#marketDeptOrderBook.__type.bid\",\"classes\":\"\",\"parent\":\"EquityTradeInfo.marketDeptOrderBook.__type\"},{\"kind\":1024,\"name\":\"ask\",\"url\":\"interfaces/EquityTradeInfo.html#marketDeptOrderBook.__type.ask\",\"classes\":\"\",\"parent\":\"EquityTradeInfo.marketDeptOrderBook.__type\"},{\"kind\":1024,\"name\":\"tradeInfo\",\"url\":\"interfaces/EquityTradeInfo.html#marketDeptOrderBook.__type.tradeInfo\",\"classes\":\"\",\"parent\":\"EquityTradeInfo.marketDeptOrderBook.__type\"},{\"kind\":65536,\"name\":\"__type\",\"url\":\"interfaces/EquityTradeInfo.html#marketDeptOrderBook.__type.tradeInfo.__type-1\",\"classes\":\"\",\"parent\":\"EquityTradeInfo.marketDeptOrderBook.__type.tradeInfo\"},{\"kind\":1024,\"name\":\"totalTradedVolume\",\"url\":\"interfaces/EquityTradeInfo.html#marketDeptOrderBook.__type.tradeInfo.__type-1.totalTradedVolume\",\"classes\":\"\",\"parent\":\"EquityTradeInfo.marketDeptOrderBook.__type.tradeInfo.__type\"},{\"kind\":1024,\"name\":\"totalTradedValue\",\"url\":\"interfaces/EquityTradeInfo.html#marketDeptOrderBook.__type.tradeInfo.__type-1.totalTradedValue\",\"classes\":\"\",\"parent\":\"EquityTradeInfo.marketDeptOrderBook.__type.tradeInfo.__type\"},{\"kind\":1024,\"name\":\"totalMarketCap\",\"url\":\"interfaces/EquityTradeInfo.html#marketDeptOrderBook.__type.tradeInfo.__type-1.totalMarketCap\",\"classes\":\"\",\"parent\":\"EquityTradeInfo.marketDeptOrderBook.__type.tradeInfo.__type\"},{\"kind\":1024,\"name\":\"ffmc\",\"url\":\"interfaces/EquityTradeInfo.html#marketDeptOrderBook.__type.tradeInfo.__type-1.ffmc\",\"classes\":\"\",\"parent\":\"EquityTradeInfo.marketDeptOrderBook.__type.tradeInfo.__type\"},{\"kind\":1024,\"name\":\"impactCost\",\"url\":\"interfaces/EquityTradeInfo.html#marketDeptOrderBook.__type.tradeInfo.__type-1.impactCost\",\"classes\":\"\",\"parent\":\"EquityTradeInfo.marketDeptOrderBook.__type.tradeInfo.__type\"},{\"kind\":1024,\"name\":\"cmDailyVolatility\",\"url\":\"interfaces/EquityTradeInfo.html#marketDeptOrderBook.__type.tradeInfo.__type-1.cmDailyVolatility\",\"classes\":\"\",\"parent\":\"EquityTradeInfo.marketDeptOrderBook.__type.tradeInfo.__type\"},{\"kind\":1024,\"name\":\"cmAnnualVolatility\",\"url\":\"interfaces/EquityTradeInfo.html#marketDeptOrderBook.__type.tradeInfo.__type-1.cmAnnualVolatility\",\"classes\":\"\",\"parent\":\"EquityTradeInfo.marketDeptOrderBook.__type.tradeInfo.__type\"},{\"kind\":1024,\"name\":\"marketLot\",\"url\":\"interfaces/EquityTradeInfo.html#marketDeptOrderBook.__type.tradeInfo.__type-1.marketLot\",\"classes\":\"\",\"parent\":\"EquityTradeInfo.marketDeptOrderBook.__type.tradeInfo.__type\"},{\"kind\":1024,\"name\":\"activeSeries\",\"url\":\"interfaces/EquityTradeInfo.html#marketDeptOrderBook.__type.tradeInfo.__type-1.activeSeries\",\"classes\":\"\",\"parent\":\"EquityTradeInfo.marketDeptOrderBook.__type.tradeInfo.__type\"},{\"kind\":1024,\"name\":\"valueAtRisk\",\"url\":\"interfaces/EquityTradeInfo.html#marketDeptOrderBook.__type.valueAtRisk\",\"classes\":\"\",\"parent\":\"EquityTradeInfo.marketDeptOrderBook.__type\"},{\"kind\":65536,\"name\":\"__type\",\"url\":\"interfaces/EquityTradeInfo.html#marketDeptOrderBook.__type.valueAtRisk.__type-2\",\"classes\":\"\",\"parent\":\"EquityTradeInfo.marketDeptOrderBook.__type.valueAtRisk\"},{\"kind\":1024,\"name\":\"securityVar\",\"url\":\"interfaces/EquityTradeInfo.html#marketDeptOrderBook.__type.valueAtRisk.__type-2.securityVar\",\"classes\":\"\",\"parent\":\"EquityTradeInfo.marketDeptOrderBook.__type.valueAtRisk.__type\"},{\"kind\":1024,\"name\":\"indexVar\",\"url\":\"interfaces/EquityTradeInfo.html#marketDeptOrderBook.__type.valueAtRisk.__type-2.indexVar\",\"classes\":\"\",\"parent\":\"EquityTradeInfo.marketDeptOrderBook.__type.valueAtRisk.__type\"},{\"kind\":1024,\"name\":\"varMargin\",\"url\":\"interfaces/EquityTradeInfo.html#marketDeptOrderBook.__type.valueAtRisk.__type-2.varMargin\",\"classes\":\"\",\"parent\":\"EquityTradeInfo.marketDeptOrderBook.__type.valueAtRisk.__type\"},{\"kind\":1024,\"name\":\"extremeLossMargin\",\"url\":\"interfaces/EquityTradeInfo.html#marketDeptOrderBook.__type.valueAtRisk.__type-2.extremeLossMargin\",\"classes\":\"\",\"parent\":\"EquityTradeInfo.marketDeptOrderBook.__type.valueAtRisk.__type\"},{\"kind\":1024,\"name\":\"adhocMargin\",\"url\":\"interfaces/EquityTradeInfo.html#marketDeptOrderBook.__type.valueAtRisk.__type-2.adhocMargin\",\"classes\":\"\",\"parent\":\"EquityTradeInfo.marketDeptOrderBook.__type.valueAtRisk.__type\"},{\"kind\":1024,\"name\":\"applicableMargin\",\"url\":\"interfaces/EquityTradeInfo.html#marketDeptOrderBook.__type.valueAtRisk.__type-2.applicableMargin\",\"classes\":\"\",\"parent\":\"EquityTradeInfo.marketDeptOrderBook.__type.valueAtRisk.__type\"},{\"kind\":1024,\"name\":\"securityWiseDP\",\"url\":\"interfaces/EquityTradeInfo.html#securityWiseDP\",\"classes\":\"\",\"parent\":\"EquityTradeInfo\"},{\"kind\":65536,\"name\":\"__type\",\"url\":\"interfaces/EquityTradeInfo.html#securityWiseDP.__type-3\",\"classes\":\"\",\"parent\":\"EquityTradeInfo.securityWiseDP\"},{\"kind\":1024,\"name\":\"quantityTraded\",\"url\":\"interfaces/EquityTradeInfo.html#securityWiseDP.__type-3.quantityTraded\",\"classes\":\"\",\"parent\":\"EquityTradeInfo.securityWiseDP.__type\"},{\"kind\":1024,\"name\":\"deliveryQuantity\",\"url\":\"interfaces/EquityTradeInfo.html#securityWiseDP.__type-3.deliveryQuantity\",\"classes\":\"\",\"parent\":\"EquityTradeInfo.securityWiseDP.__type\"},{\"kind\":1024,\"name\":\"deliveryToTradedQuantity\",\"url\":\"interfaces/EquityTradeInfo.html#securityWiseDP.__type-3.deliveryToTradedQuantity\",\"classes\":\"\",\"parent\":\"EquityTradeInfo.securityWiseDP.__type\"},{\"kind\":1024,\"name\":\"seriesRemarks\",\"url\":\"interfaces/EquityTradeInfo.html#securityWiseDP.__type-3.seriesRemarks\",\"classes\":\"\",\"parent\":\"EquityTradeInfo.securityWiseDP.__type\"},{\"kind\":1024,\"name\":\"secWiseDelPosDate\",\"url\":\"interfaces/EquityTradeInfo.html#securityWiseDP.__type-3.secWiseDelPosDate\",\"classes\":\"\",\"parent\":\"EquityTradeInfo.securityWiseDP.__type\"},{\"kind\":256,\"name\":\"EquityHistoricalData\",\"url\":\"interfaces/EquityHistoricalData.html\",\"classes\":\"\"},{\"kind\":1024,\"name\":\"data\",\"url\":\"interfaces/EquityHistoricalData.html#data\",\"classes\":\"\",\"parent\":\"EquityHistoricalData\"},{\"kind\":1024,\"name\":\"meta\",\"url\":\"interfaces/EquityHistoricalData.html#meta\",\"classes\":\"\",\"parent\":\"EquityHistoricalData\"},{\"kind\":65536,\"name\":\"__type\",\"url\":\"interfaces/EquityHistoricalData.html#meta.__type\",\"classes\":\"\",\"parent\":\"EquityHistoricalData.meta\"},{\"kind\":1024,\"name\":\"series\",\"url\":\"interfaces/EquityHistoricalData.html#meta.__type.series\",\"classes\":\"\",\"parent\":\"EquityHistoricalData.meta.__type\"},{\"kind\":1024,\"name\":\"fromDate\",\"url\":\"interfaces/EquityHistoricalData.html#meta.__type.fromDate\",\"classes\":\"\",\"parent\":\"EquityHistoricalData.meta.__type\"},{\"kind\":1024,\"name\":\"toDate\",\"url\":\"interfaces/EquityHistoricalData.html#meta.__type.toDate\",\"classes\":\"\",\"parent\":\"EquityHistoricalData.meta.__type\"},{\"kind\":1024,\"name\":\"symbols\",\"url\":\"interfaces/EquityHistoricalData.html#meta.__type.symbols\",\"classes\":\"\",\"parent\":\"EquityHistoricalData.meta.__type\"},{\"kind\":256,\"name\":\"SeriesData\",\"url\":\"interfaces/SeriesData.html\",\"classes\":\"\"},{\"kind\":1024,\"name\":\"data\",\"url\":\"interfaces/SeriesData.html#data\",\"classes\":\"\",\"parent\":\"SeriesData\"},{\"kind\":256,\"name\":\"IndexDetails\",\"url\":\"interfaces/IndexDetails.html\",\"classes\":\"\"},{\"kind\":1024,\"name\":\"name\",\"url\":\"interfaces/IndexDetails.html#name\",\"classes\":\"\",\"parent\":\"IndexDetails\"},{\"kind\":1024,\"name\":\"advance\",\"url\":\"interfaces/IndexDetails.html#advance\",\"classes\":\"\",\"parent\":\"IndexDetails\"},{\"kind\":65536,\"name\":\"__type\",\"url\":\"interfaces/IndexDetails.html#advance.__type\",\"classes\":\"\",\"parent\":\"IndexDetails.advance\"},{\"kind\":1024,\"name\":\"declines\",\"url\":\"interfaces/IndexDetails.html#advance.__type.declines\",\"classes\":\"\",\"parent\":\"IndexDetails.advance.__type\"},{\"kind\":1024,\"name\":\"advances\",\"url\":\"interfaces/IndexDetails.html#advance.__type.advances\",\"classes\":\"\",\"parent\":\"IndexDetails.advance.__type\"},{\"kind\":1024,\"name\":\"unchanged\",\"url\":\"interfaces/IndexDetails.html#advance.__type.unchanged\",\"classes\":\"\",\"parent\":\"IndexDetails.advance.__type\"},{\"kind\":1024,\"name\":\"timestamp\",\"url\":\"interfaces/IndexDetails.html#timestamp\",\"classes\":\"\",\"parent\":\"IndexDetails\"},{\"kind\":1024,\"name\":\"data\",\"url\":\"interfaces/IndexDetails.html#data\",\"classes\":\"\",\"parent\":\"IndexDetails\"},{\"kind\":1024,\"name\":\"metadata\",\"url\":\"interfaces/IndexDetails.html#metadata\",\"classes\":\"\",\"parent\":\"IndexDetails\"},{\"kind\":65536,\"name\":\"__type\",\"url\":\"interfaces/IndexDetails.html#metadata.__type-2\",\"classes\":\"\",\"parent\":\"IndexDetails.metadata\"},{\"kind\":1024,\"name\":\"indexName\",\"url\":\"interfaces/IndexDetails.html#metadata.__type-2.indexName\",\"classes\":\"\",\"parent\":\"IndexDetails.metadata.__type\"},{\"kind\":1024,\"name\":\"open\",\"url\":\"interfaces/IndexDetails.html#metadata.__type-2.open\",\"classes\":\"\",\"parent\":\"IndexDetails.metadata.__type\"},{\"kind\":1024,\"name\":\"high\",\"url\":\"interfaces/IndexDetails.html#metadata.__type-2.high\",\"classes\":\"\",\"parent\":\"IndexDetails.metadata.__type\"},{\"kind\":1024,\"name\":\"low\",\"url\":\"interfaces/IndexDetails.html#metadata.__type-2.low\",\"classes\":\"\",\"parent\":\"IndexDetails.metadata.__type\"},{\"kind\":1024,\"name\":\"previousClose\",\"url\":\"interfaces/IndexDetails.html#metadata.__type-2.previousClose\",\"classes\":\"\",\"parent\":\"IndexDetails.metadata.__type\"},{\"kind\":1024,\"name\":\"last\",\"url\":\"interfaces/IndexDetails.html#metadata.__type-2.last-1\",\"classes\":\"\",\"parent\":\"IndexDetails.metadata.__type\"},{\"kind\":1024,\"name\":\"percChange\",\"url\":\"interfaces/IndexDetails.html#metadata.__type-2.percChange\",\"classes\":\"\",\"parent\":\"IndexDetails.metadata.__type\"},{\"kind\":1024,\"name\":\"change\",\"url\":\"interfaces/IndexDetails.html#metadata.__type-2.change\",\"classes\":\"\",\"parent\":\"IndexDetails.metadata.__type\"},{\"kind\":1024,\"name\":\"timeVal\",\"url\":\"interfaces/IndexDetails.html#metadata.__type-2.timeVal\",\"classes\":\"\",\"parent\":\"IndexDetails.metadata.__type\"},{\"kind\":1024,\"name\":\"yearHigh\",\"url\":\"interfaces/IndexDetails.html#metadata.__type-2.yearHigh\",\"classes\":\"\",\"parent\":\"IndexDetails.metadata.__type\"},{\"kind\":1024,\"name\":\"yearLow\",\"url\":\"interfaces/IndexDetails.html#metadata.__type-2.yearLow\",\"classes\":\"\",\"parent\":\"IndexDetails.metadata.__type\"},{\"kind\":1024,\"name\":\"indicativeClose\",\"url\":\"interfaces/IndexDetails.html#metadata.__type-2.indicativeClose\",\"classes\":\"\",\"parent\":\"IndexDetails.metadata.__type\"},{\"kind\":1024,\"name\":\"perChange365d\",\"url\":\"interfaces/IndexDetails.html#metadata.__type-2.perChange365d\",\"classes\":\"\",\"parent\":\"IndexDetails.metadata.__type\"},{\"kind\":1024,\"name\":\"perChange30d\",\"url\":\"interfaces/IndexDetails.html#metadata.__type-2.perChange30d\",\"classes\":\"\",\"parent\":\"IndexDetails.metadata.__type\"},{\"kind\":1024,\"name\":\"date365dAgo\",\"url\":\"interfaces/IndexDetails.html#metadata.__type-2.date365dAgo-1\",\"classes\":\"\",\"parent\":\"IndexDetails.metadata.__type\"},{\"kind\":1024,\"name\":\"date30dAgo\",\"url\":\"interfaces/IndexDetails.html#metadata.__type-2.date30dAgo-1\",\"classes\":\"\",\"parent\":\"IndexDetails.metadata.__type\"},{\"kind\":1024,\"name\":\"chartTodayPath\",\"url\":\"interfaces/IndexDetails.html#metadata.__type-2.chartTodayPath\",\"classes\":\"\",\"parent\":\"IndexDetails.metadata.__type\"},{\"kind\":1024,\"name\":\"chart30dPath\",\"url\":\"interfaces/IndexDetails.html#metadata.__type-2.chart30dPath\",\"classes\":\"\",\"parent\":\"IndexDetails.metadata.__type\"},{\"kind\":1024,\"name\":\"chart365dPath\",\"url\":\"interfaces/IndexDetails.html#metadata.__type-2.chart365dPath\",\"classes\":\"\",\"parent\":\"IndexDetails.metadata.__type\"},{\"kind\":1024,\"name\":\"totalTradedVolume\",\"url\":\"interfaces/IndexDetails.html#metadata.__type-2.totalTradedVolume\",\"classes\":\"\",\"parent\":\"IndexDetails.metadata.__type\"},{\"kind\":1024,\"name\":\"totalTradedValue\",\"url\":\"interfaces/IndexDetails.html#metadata.__type-2.totalTradedValue\",\"classes\":\"\",\"parent\":\"IndexDetails.metadata.__type\"},{\"kind\":1024,\"name\":\"ffmc_sum\",\"url\":\"interfaces/IndexDetails.html#metadata.__type-2.ffmc_sum\",\"classes\":\"\",\"parent\":\"IndexDetails.metadata.__type\"},{\"kind\":1024,\"name\":\"marketStatus\",\"url\":\"interfaces/IndexDetails.html#marketStatus\",\"classes\":\"\",\"parent\":\"IndexDetails\"},{\"kind\":65536,\"name\":\"__type\",\"url\":\"interfaces/IndexDetails.html#marketStatus.__type-1\",\"classes\":\"\",\"parent\":\"IndexDetails.marketStatus\"},{\"kind\":1024,\"name\":\"market\",\"url\":\"interfaces/IndexDetails.html#marketStatus.__type-1.market\",\"classes\":\"\",\"parent\":\"IndexDetails.marketStatus.__type\"},{\"kind\":1024,\"name\":\"marketStatus\",\"url\":\"interfaces/IndexDetails.html#marketStatus.__type-1.marketStatus-1\",\"classes\":\"\",\"parent\":\"IndexDetails.marketStatus.__type\"},{\"kind\":1024,\"name\":\"tradeDate\",\"url\":\"interfaces/IndexDetails.html#marketStatus.__type-1.tradeDate\",\"classes\":\"\",\"parent\":\"IndexDetails.marketStatus.__type\"},{\"kind\":1024,\"name\":\"index\",\"url\":\"interfaces/IndexDetails.html#marketStatus.__type-1.index\",\"classes\":\"\",\"parent\":\"IndexDetails.marketStatus.__type\"},{\"kind\":1024,\"name\":\"last\",\"url\":\"interfaces/IndexDetails.html#marketStatus.__type-1.last\",\"classes\":\"\",\"parent\":\"IndexDetails.marketStatus.__type\"},{\"kind\":1024,\"name\":\"variation\",\"url\":\"interfaces/IndexDetails.html#marketStatus.__type-1.variation\",\"classes\":\"\",\"parent\":\"IndexDetails.marketStatus.__type\"},{\"kind\":1024,\"name\":\"percentChange\",\"url\":\"interfaces/IndexDetails.html#marketStatus.__type-1.percentChange\",\"classes\":\"\",\"parent\":\"IndexDetails.marketStatus.__type\"},{\"kind\":1024,\"name\":\"marketStatusMessage\",\"url\":\"interfaces/IndexDetails.html#marketStatus.__type-1.marketStatusMessage\",\"classes\":\"\",\"parent\":\"IndexDetails.marketStatus.__type\"},{\"kind\":1024,\"name\":\"date30dAgo\",\"url\":\"interfaces/IndexDetails.html#date30dAgo\",\"classes\":\"\",\"parent\":\"IndexDetails\"},{\"kind\":1024,\"name\":\"date365dAgo\",\"url\":\"interfaces/IndexDetails.html#date365dAgo\",\"classes\":\"\",\"parent\":\"IndexDetails\"},{\"kind\":256,\"name\":\"EquityOptionChainData\",\"url\":\"interfaces/EquityOptionChainData.html\",\"classes\":\"\"},{\"kind\":1024,\"name\":\"data\",\"url\":\"interfaces/EquityOptionChainData.html#data\",\"classes\":\"\",\"parent\":\"EquityOptionChainData\"},{\"kind\":1024,\"name\":\"timestamp\",\"url\":\"interfaces/EquityOptionChainData.html#timestamp\",\"classes\":\"\",\"parent\":\"EquityOptionChainData\"},{\"kind\":256,\"name\":\"IndexOptionChainData\",\"url\":\"interfaces/IndexOptionChainData.html\",\"classes\":\"\"},{\"kind\":1024,\"name\":\"records\",\"url\":\"interfaces/IndexOptionChainData.html#records\",\"classes\":\"\",\"parent\":\"IndexOptionChainData\"},{\"kind\":1024,\"name\":\"filtered\",\"url\":\"interfaces/IndexOptionChainData.html#filtered\",\"classes\":\"\",\"parent\":\"IndexOptionChainData\"},{\"kind\":256,\"name\":\"CommodityOptionChainData\",\"url\":\"interfaces/CommodityOptionChainData.html\",\"classes\":\"\"},{\"kind\":1024,\"name\":\"records\",\"url\":\"interfaces/CommodityOptionChainData.html#records\",\"classes\":\"\",\"parent\":\"CommodityOptionChainData\"},{\"kind\":1024,\"name\":\"filtered\",\"url\":\"interfaces/CommodityOptionChainData.html#filtered\",\"classes\":\"\",\"parent\":\"CommodityOptionChainData\"},{\"kind\":256,\"name\":\"OptionChainContractInfo\",\"url\":\"interfaces/OptionChainContractInfo.html\",\"classes\":\"\"},{\"kind\":1024,\"name\":\"expiryDates\",\"url\":\"interfaces/OptionChainContractInfo.html#expiryDates\",\"classes\":\"\",\"parent\":\"OptionChainContractInfo\"},{\"kind\":1024,\"name\":\"strikePrice\",\"url\":\"interfaces/OptionChainContractInfo.html#strikePrice\",\"classes\":\"\",\"parent\":\"OptionChainContractInfo\"},{\"kind\":256,\"name\":\"EquityCorporateInfo\",\"url\":\"interfaces/EquityCorporateInfo.html\",\"classes\":\"\"},{\"kind\":1024,\"name\":\"latest_announcements\",\"url\":\"interfaces/EquityCorporateInfo.html#latest_announcements\",\"classes\":\"\",\"parent\":\"EquityCorporateInfo\"},{\"kind\":65536,\"name\":\"__type\",\"url\":\"interfaces/EquityCorporateInfo.html#latest_announcements.__type-3\",\"classes\":\"\",\"parent\":\"EquityCorporateInfo.latest_announcements\"},{\"kind\":1024,\"name\":\"data\",\"url\":\"interfaces/EquityCorporateInfo.html#latest_announcements.__type-3.data-3\",\"classes\":\"\",\"parent\":\"EquityCorporateInfo.latest_announcements.__type\"},{\"kind\":1024,\"name\":\"corporate_actions\",\"url\":\"interfaces/EquityCorporateInfo.html#corporate_actions\",\"classes\":\"\",\"parent\":\"EquityCorporateInfo\"},{\"kind\":65536,\"name\":\"__type\",\"url\":\"interfaces/EquityCorporateInfo.html#corporate_actions.__type-1\",\"classes\":\"\",\"parent\":\"EquityCorporateInfo.corporate_actions\"},{\"kind\":1024,\"name\":\"data\",\"url\":\"interfaces/EquityCorporateInfo.html#corporate_actions.__type-1.data-1\",\"classes\":\"\",\"parent\":\"EquityCorporateInfo.corporate_actions.__type\"},{\"kind\":1024,\"name\":\"shareholdings_patterns\",\"url\":\"interfaces/EquityCorporateInfo.html#shareholdings_patterns\",\"classes\":\"\",\"parent\":\"EquityCorporateInfo\"},{\"kind\":65536,\"name\":\"__type\",\"url\":\"interfaces/EquityCorporateInfo.html#shareholdings_patterns.__type-4\",\"classes\":\"\",\"parent\":\"EquityCorporateInfo.shareholdings_patterns\"},{\"kind\":1024,\"name\":\"data\",\"url\":\"interfaces/EquityCorporateInfo.html#shareholdings_patterns.__type-4.data-4\",\"classes\":\"\",\"parent\":\"EquityCorporateInfo.shareholdings_patterns.__type\"},{\"kind\":65536,\"name\":\"__type\",\"url\":\"interfaces/EquityCorporateInfo.html#shareholdings_patterns.__type-4.data-4.__type-5\",\"classes\":\"\",\"parent\":\"EquityCorporateInfo.shareholdings_patterns.__type.data\"},{\"kind\":1024,\"name\":\"financial_results\",\"url\":\"interfaces/EquityCorporateInfo.html#financial_results\",\"classes\":\"\",\"parent\":\"EquityCorporateInfo\"},{\"kind\":65536,\"name\":\"__type\",\"url\":\"interfaces/EquityCorporateInfo.html#financial_results.__type-2\",\"classes\":\"\",\"parent\":\"EquityCorporateInfo.financial_results\"},{\"kind\":1024,\"name\":\"data\",\"url\":\"interfaces/EquityCorporateInfo.html#financial_results.__type-2.data-2\",\"classes\":\"\",\"parent\":\"EquityCorporateInfo.financial_results.__type\"},{\"kind\":1024,\"name\":\"borad_meeting\",\"url\":\"interfaces/EquityCorporateInfo.html#borad_meeting\",\"classes\":\"\",\"parent\":\"EquityCorporateInfo\"},{\"kind\":65536,\"name\":\"__type\",\"url\":\"interfaces/EquityCorporateInfo.html#borad_meeting.__type\",\"classes\":\"\",\"parent\":\"EquityCorporateInfo.borad_meeting\"},{\"kind\":1024,\"name\":\"data\",\"url\":\"interfaces/EquityCorporateInfo.html#borad_meeting.__type.data\",\"classes\":\"\",\"parent\":\"EquityCorporateInfo.borad_meeting.__type\"},{\"kind\":256,\"name\":\"Glossary\",\"url\":\"interfaces/Glossary.html\",\"classes\":\"\"},{\"kind\":1024,\"name\":\"content\",\"url\":\"interfaces/Glossary.html#content\",\"classes\":\"\",\"parent\":\"Glossary\"},{\"kind\":65536,\"name\":\"__type\",\"url\":\"interfaces/Glossary.html#content.__type\",\"classes\":\"\",\"parent\":\"Glossary.content\"},{\"kind\":1024,\"name\":\"title\",\"url\":\"interfaces/Glossary.html#content.__type.title\",\"classes\":\"\",\"parent\":\"Glossary.content.__type\"},{\"kind\":1024,\"name\":\"body\",\"url\":\"interfaces/Glossary.html#content.__type.body\",\"classes\":\"\",\"parent\":\"Glossary.content.__type\"},{\"kind\":1024,\"name\":\"field_glossary_items\",\"url\":\"interfaces/Glossary.html#content.__type.field_glossary_items\",\"classes\":\"\",\"parent\":\"Glossary.content.__type\"},{\"kind\":1024,\"name\":\"field_labels\",\"url\":\"interfaces/Glossary.html#content.__type.field_labels\",\"classes\":\"\",\"parent\":\"Glossary.content.__type\"},{\"kind\":1024,\"name\":\"field_reference\",\"url\":\"interfaces/Glossary.html#content.__type.field_reference\",\"classes\":\"\",\"parent\":\"Glossary.content.__type\"},{\"kind\":1024,\"name\":\"field_unique_url\",\"url\":\"interfaces/Glossary.html#content.__type.field_unique_url\",\"classes\":\"\",\"parent\":\"Glossary.content.__type\"},{\"kind\":1024,\"name\":\"id\",\"url\":\"interfaces/Glossary.html#id\",\"classes\":\"\",\"parent\":\"Glossary\"},{\"kind\":1024,\"name\":\"type\",\"url\":\"interfaces/Glossary.html#type\",\"classes\":\"\",\"parent\":\"Glossary\"},{\"kind\":1024,\"name\":\"changed\",\"url\":\"interfaces/Glossary.html#changed\",\"classes\":\"\",\"parent\":\"Glossary\"},{\"kind\":256,\"name\":\"HolidaysBySegment\",\"url\":\"interfaces/HolidaysBySegment.html\",\"classes\":\"\"},{\"kind\":256,\"name\":\"MarketStatus\",\"url\":\"interfaces/MarketStatus.html\",\"classes\":\"\"},{\"kind\":1024,\"name\":\"marketState\",\"url\":\"interfaces/MarketStatus.html#marketState\",\"classes\":\"\",\"parent\":\"MarketStatus\"},{\"kind\":1024,\"name\":\"marketcap\",\"url\":\"interfaces/MarketStatus.html#marketcap\",\"classes\":\"\",\"parent\":\"MarketStatus\"},{\"kind\":1024,\"name\":\"indicativenifty50\",\"url\":\"interfaces/MarketStatus.html#indicativenifty50\",\"classes\":\"\",\"parent\":\"MarketStatus\"},{\"kind\":1024,\"name\":\"giftnifty\",\"url\":\"interfaces/MarketStatus.html#giftnifty\",\"classes\":\"\",\"parent\":\"MarketStatus\"},{\"kind\":256,\"name\":\"MarketTurnover\",\"url\":\"interfaces/MarketTurnover.html\",\"classes\":\"\"},{\"kind\":1024,\"name\":\"totalTradedValue\",\"url\":\"interfaces/MarketTurnover.html#totalTradedValue\",\"classes\":\"\",\"parent\":\"MarketTurnover\"},{\"kind\":1024,\"name\":\"totalTradedVolume\",\"url\":\"interfaces/MarketTurnover.html#totalTradedVolume\",\"classes\":\"\",\"parent\":\"MarketTurnover\"},{\"kind\":1024,\"name\":\"totalTrades\",\"url\":\"interfaces/MarketTurnover.html#totalTrades\",\"classes\":\"\",\"parent\":\"MarketTurnover\"},{\"kind\":1024,\"name\":\"lastUpdateTime\",\"url\":\"interfaces/MarketTurnover.html#lastUpdateTime\",\"classes\":\"\",\"parent\":\"MarketTurnover\"},{\"kind\":256,\"name\":\"AllIndicesData\",\"url\":\"interfaces/AllIndicesData.html\",\"classes\":\"\"},{\"kind\":1024,\"name\":\"data\",\"url\":\"interfaces/AllIndicesData.html#data\",\"classes\":\"\",\"parent\":\"AllIndicesData\"},{\"kind\":256,\"name\":\"IndexNamesData\",\"url\":\"interfaces/IndexNamesData.html\",\"classes\":\"\"},{\"kind\":1024,\"name\":\"stn\",\"url\":\"interfaces/IndexNamesData.html#stn\",\"classes\":\"\",\"parent\":\"IndexNamesData\"},{\"kind\":1024,\"name\":\"nts\",\"url\":\"interfaces/IndexNamesData.html#nts\",\"classes\":\"\",\"parent\":\"IndexNamesData\"},{\"kind\":256,\"name\":\"CircularsData\",\"url\":\"interfaces/CircularsData.html\",\"classes\":\"\"},{\"kind\":1024,\"name\":\"data\",\"url\":\"interfaces/CircularsData.html#data\",\"classes\":\"\",\"parent\":\"CircularsData\"},{\"kind\":1024,\"name\":\"fromDate\",\"url\":\"interfaces/CircularsData.html#fromDate\",\"classes\":\"\",\"parent\":\"CircularsData\"},{\"kind\":1024,\"name\":\"toDate\",\"url\":\"interfaces/CircularsData.html#toDate\",\"classes\":\"\",\"parent\":\"CircularsData\"},{\"kind\":256,\"name\":\"LatestCircularData\",\"url\":\"interfaces/LatestCircularData.html\",\"classes\":\"\"},{\"kind\":1024,\"name\":\"data\",\"url\":\"interfaces/LatestCircularData.html#data\",\"classes\":\"\",\"parent\":\"LatestCircularData\"},{\"kind\":256,\"name\":\"EquityMaster\",\"url\":\"interfaces/EquityMaster.html\",\"classes\":\"\"},{\"kind\":256,\"name\":\"PreOpenMarketData\",\"url\":\"interfaces/PreOpenMarketData.html\",\"classes\":\"\"},{\"kind\":1024,\"name\":\"data\",\"url\":\"interfaces/PreOpenMarketData.html#data\",\"classes\":\"\",\"parent\":\"PreOpenMarketData\"},{\"kind\":1024,\"name\":\"timestamp\",\"url\":\"interfaces/PreOpenMarketData.html#timestamp\",\"classes\":\"\",\"parent\":\"PreOpenMarketData\"},{\"kind\":1024,\"name\":\"advances\",\"url\":\"interfaces/PreOpenMarketData.html#advances\",\"classes\":\"\",\"parent\":\"PreOpenMarketData\"},{\"kind\":1024,\"name\":\"declines\",\"url\":\"interfaces/PreOpenMarketData.html#declines\",\"classes\":\"\",\"parent\":\"PreOpenMarketData\"},{\"kind\":1024,\"name\":\"unchanged\",\"url\":\"interfaces/PreOpenMarketData.html#unchanged\",\"classes\":\"\",\"parent\":\"PreOpenMarketData\"},{\"kind\":1024,\"name\":\"totalTradedValue\",\"url\":\"interfaces/PreOpenMarketData.html#totalTradedValue\",\"classes\":\"\",\"parent\":\"PreOpenMarketData\"},{\"kind\":1024,\"name\":\"totalmarketcap\",\"url\":\"interfaces/PreOpenMarketData.html#totalmarketcap\",\"classes\":\"\",\"parent\":\"PreOpenMarketData\"},{\"kind\":1024,\"name\":\"totalTradedVolume\",\"url\":\"interfaces/PreOpenMarketData.html#totalTradedVolume\",\"classes\":\"\",\"parent\":\"PreOpenMarketData\"},{\"kind\":256,\"name\":\"MergedDailyReportsData\",\"url\":\"interfaces/MergedDailyReportsData.html\",\"classes\":\"\"},{\"kind\":1024,\"name\":\"name\",\"url\":\"interfaces/MergedDailyReportsData.html#name\",\"classes\":\"\",\"parent\":\"MergedDailyReportsData\"},{\"kind\":1024,\"name\":\"type\",\"url\":\"interfaces/MergedDailyReportsData.html#type\",\"classes\":\"\",\"parent\":\"MergedDailyReportsData\"},{\"kind\":1024,\"name\":\"category\",\"url\":\"interfaces/MergedDailyReportsData.html#category\",\"classes\":\"\",\"parent\":\"MergedDailyReportsData\"},{\"kind\":1024,\"name\":\"section\",\"url\":\"interfaces/MergedDailyReportsData.html#section\",\"classes\":\"\",\"parent\":\"MergedDailyReportsData\"},{\"kind\":1024,\"name\":\"link\",\"url\":\"interfaces/MergedDailyReportsData.html#link\",\"classes\":\"\",\"parent\":\"MergedDailyReportsData\"},{\"kind\":256,\"name\":\"TechnicalIndicators\",\"url\":\"interfaces/TechnicalIndicators.html\",\"classes\":\"\"},{\"kind\":1024,\"name\":\"sma\",\"url\":\"interfaces/TechnicalIndicators.html#sma\",\"classes\":\"\",\"parent\":\"TechnicalIndicators\"},{\"kind\":65536,\"name\":\"__type\",\"url\":\"interfaces/TechnicalIndicators.html#sma.__type-3\",\"classes\":\"\",\"parent\":\"TechnicalIndicators.sma\"},{\"kind\":1024,\"name\":\"ema\",\"url\":\"interfaces/TechnicalIndicators.html#ema\",\"classes\":\"\",\"parent\":\"TechnicalIndicators\"},{\"kind\":65536,\"name\":\"__type\",\"url\":\"interfaces/TechnicalIndicators.html#ema.__type-1\",\"classes\":\"\",\"parent\":\"TechnicalIndicators.ema\"},{\"kind\":1024,\"name\":\"rsi\",\"url\":\"interfaces/TechnicalIndicators.html#rsi\",\"classes\":\"\",\"parent\":\"TechnicalIndicators\"},{\"kind\":1024,\"name\":\"macd\",\"url\":\"interfaces/TechnicalIndicators.html#macd\",\"classes\":\"\",\"parent\":\"TechnicalIndicators\"},{\"kind\":65536,\"name\":\"__type\",\"url\":\"interfaces/TechnicalIndicators.html#macd.__type-2\",\"classes\":\"\",\"parent\":\"TechnicalIndicators.macd\"},{\"kind\":1024,\"name\":\"macd\",\"url\":\"interfaces/TechnicalIndicators.html#macd.__type-2.macd-1\",\"classes\":\"\",\"parent\":\"TechnicalIndicators.macd.__type\"},{\"kind\":1024,\"name\":\"signal\",\"url\":\"interfaces/TechnicalIndicators.html#macd.__type-2.signal\",\"classes\":\"\",\"parent\":\"TechnicalIndicators.macd.__type\"},{\"kind\":1024,\"name\":\"histogram\",\"url\":\"interfaces/TechnicalIndicators.html#macd.__type-2.histogram\",\"classes\":\"\",\"parent\":\"TechnicalIndicators.macd.__type\"},{\"kind\":1024,\"name\":\"bollingerBands\",\"url\":\"interfaces/TechnicalIndicators.html#bollingerBands\",\"classes\":\"\",\"parent\":\"TechnicalIndicators\"},{\"kind\":65536,\"name\":\"__type\",\"url\":\"interfaces/TechnicalIndicators.html#bollingerBands.__type\",\"classes\":\"\",\"parent\":\"TechnicalIndicators.bollingerBands\"},{\"kind\":1024,\"name\":\"upper\",\"url\":\"interfaces/TechnicalIndicators.html#bollingerBands.__type.upper\",\"classes\":\"\",\"parent\":\"TechnicalIndicators.bollingerBands.__type\"},{\"kind\":1024,\"name\":\"middle\",\"url\":\"interfaces/TechnicalIndicators.html#bollingerBands.__type.middle\",\"classes\":\"\",\"parent\":\"TechnicalIndicators.bollingerBands.__type\"},{\"kind\":1024,\"name\":\"lower\",\"url\":\"interfaces/TechnicalIndicators.html#bollingerBands.__type.lower\",\"classes\":\"\",\"parent\":\"TechnicalIndicators.bollingerBands.__type\"},{\"kind\":1024,\"name\":\"stochastic\",\"url\":\"interfaces/TechnicalIndicators.html#stochastic\",\"classes\":\"\",\"parent\":\"TechnicalIndicators\"},{\"kind\":65536,\"name\":\"__type\",\"url\":\"interfaces/TechnicalIndicators.html#stochastic.__type-4\",\"classes\":\"\",\"parent\":\"TechnicalIndicators.stochastic\"},{\"kind\":1024,\"name\":\"k\",\"url\":\"interfaces/TechnicalIndicators.html#stochastic.__type-4.k\",\"classes\":\"\",\"parent\":\"TechnicalIndicators.stochastic.__type\"},{\"kind\":1024,\"name\":\"d\",\"url\":\"interfaces/TechnicalIndicators.html#stochastic.__type-4.d\",\"classes\":\"\",\"parent\":\"TechnicalIndicators.stochastic.__type\"},{\"kind\":1024,\"name\":\"williamsR\",\"url\":\"interfaces/TechnicalIndicators.html#williamsR\",\"classes\":\"\",\"parent\":\"TechnicalIndicators\"},{\"kind\":1024,\"name\":\"atr\",\"url\":\"interfaces/TechnicalIndicators.html#atr\",\"classes\":\"\",\"parent\":\"TechnicalIndicators\"},{\"kind\":1024,\"name\":\"adx\",\"url\":\"interfaces/TechnicalIndicators.html#adx\",\"classes\":\"\",\"parent\":\"TechnicalIndicators\"},{\"kind\":1024,\"name\":\"obv\",\"url\":\"interfaces/TechnicalIndicators.html#obv\",\"classes\":\"\",\"parent\":\"TechnicalIndicators\"},{\"kind\":1024,\"name\":\"cci\",\"url\":\"interfaces/TechnicalIndicators.html#cci\",\"classes\":\"\",\"parent\":\"TechnicalIndicators\"},{\"kind\":1024,\"name\":\"mfi\",\"url\":\"interfaces/TechnicalIndicators.html#mfi\",\"classes\":\"\",\"parent\":\"TechnicalIndicators\"},{\"kind\":1024,\"name\":\"roc\",\"url\":\"interfaces/TechnicalIndicators.html#roc\",\"classes\":\"\",\"parent\":\"TechnicalIndicators\"},{\"kind\":1024,\"name\":\"momentum\",\"url\":\"interfaces/TechnicalIndicators.html#momentum\",\"classes\":\"\",\"parent\":\"TechnicalIndicators\"},{\"kind\":1024,\"name\":\"ad\",\"url\":\"interfaces/TechnicalIndicators.html#ad\",\"classes\":\"\",\"parent\":\"TechnicalIndicators\"},{\"kind\":1024,\"name\":\"vwap\",\"url\":\"interfaces/TechnicalIndicators.html#vwap\",\"classes\":\"\",\"parent\":\"TechnicalIndicators\"},{\"kind\":256,\"name\":\"EquityInfo\",\"url\":\"interfaces/EquityInfo.html\",\"classes\":\"\"},{\"kind\":1024,\"name\":\"symbol\",\"url\":\"interfaces/EquityInfo.html#symbol\",\"classes\":\"\",\"parent\":\"EquityInfo\"},{\"kind\":1024,\"name\":\"companyName\",\"url\":\"interfaces/EquityInfo.html#companyName\",\"classes\":\"\",\"parent\":\"EquityInfo\"},{\"kind\":1024,\"name\":\"industry\",\"url\":\"interfaces/EquityInfo.html#industry\",\"classes\":\"\",\"parent\":\"EquityInfo\"},{\"kind\":1024,\"name\":\"activeSeries\",\"url\":\"interfaces/EquityInfo.html#activeSeries\",\"classes\":\"\",\"parent\":\"EquityInfo\"},{\"kind\":1024,\"name\":\"debtSeries\",\"url\":\"interfaces/EquityInfo.html#debtSeries\",\"classes\":\"\",\"parent\":\"EquityInfo\"},{\"kind\":1024,\"name\":\"tempSuspendedSeries\",\"url\":\"interfaces/EquityInfo.html#tempSuspendedSeries\",\"classes\":\"\",\"parent\":\"EquityInfo\"},{\"kind\":1024,\"name\":\"isFNOSec\",\"url\":\"interfaces/EquityInfo.html#isFNOSec\",\"classes\":\"\",\"parent\":\"EquityInfo\"},{\"kind\":1024,\"name\":\"isCASec\",\"url\":\"interfaces/EquityInfo.html#isCASec\",\"classes\":\"\",\"parent\":\"EquityInfo\"},{\"kind\":1024,\"name\":\"isSLBSec\",\"url\":\"interfaces/EquityInfo.html#isSLBSec\",\"classes\":\"\",\"parent\":\"EquityInfo\"},{\"kind\":1024,\"name\":\"isDebtSec\",\"url\":\"interfaces/EquityInfo.html#isDebtSec\",\"classes\":\"\",\"parent\":\"EquityInfo\"},{\"kind\":1024,\"name\":\"isSuspended\",\"url\":\"interfaces/EquityInfo.html#isSuspended\",\"classes\":\"\",\"parent\":\"EquityInfo\"},{\"kind\":1024,\"name\":\"isETFSec\",\"url\":\"interfaces/EquityInfo.html#isETFSec\",\"classes\":\"\",\"parent\":\"EquityInfo\"},{\"kind\":1024,\"name\":\"isDelisted\",\"url\":\"interfaces/EquityInfo.html#isDelisted\",\"classes\":\"\",\"parent\":\"EquityInfo\"},{\"kind\":1024,\"name\":\"isin\",\"url\":\"interfaces/EquityInfo.html#isin\",\"classes\":\"\",\"parent\":\"EquityInfo\"},{\"kind\":1024,\"name\":\"slb_isin\",\"url\":\"interfaces/EquityInfo.html#slb_isin\",\"classes\":\"\",\"parent\":\"EquityInfo\"},{\"kind\":1024,\"name\":\"listingDate\",\"url\":\"interfaces/EquityInfo.html#listingDate\",\"classes\":\"\",\"parent\":\"EquityInfo\"},{\"kind\":1024,\"name\":\"isMunicipalBond\",\"url\":\"interfaces/EquityInfo.html#isMunicipalBond\",\"classes\":\"\",\"parent\":\"EquityInfo\"},{\"kind\":1024,\"name\":\"isHybridSymbol\",\"url\":\"interfaces/EquityInfo.html#isHybridSymbol\",\"classes\":\"\",\"parent\":\"EquityInfo\"},{\"kind\":1024,\"name\":\"segment\",\"url\":\"interfaces/EquityInfo.html#segment\",\"classes\":\"\",\"parent\":\"EquityInfo\"},{\"kind\":1024,\"name\":\"isTop10\",\"url\":\"interfaces/EquityInfo.html#isTop10\",\"classes\":\"\",\"parent\":\"EquityInfo\"},{\"kind\":1024,\"name\":\"identifier\",\"url\":\"interfaces/EquityInfo.html#identifier\",\"classes\":\"\",\"parent\":\"EquityInfo\"},{\"kind\":256,\"name\":\"EquityMetadata\",\"url\":\"interfaces/EquityMetadata.html\",\"classes\":\"\"},{\"kind\":1024,\"name\":\"series\",\"url\":\"interfaces/EquityMetadata.html#series\",\"classes\":\"\",\"parent\":\"EquityMetadata\"},{\"kind\":1024,\"name\":\"symbol\",\"url\":\"interfaces/EquityMetadata.html#symbol\",\"classes\":\"\",\"parent\":\"EquityMetadata\"},{\"kind\":1024,\"name\":\"isin\",\"url\":\"interfaces/EquityMetadata.html#isin\",\"classes\":\"\",\"parent\":\"EquityMetadata\"},{\"kind\":1024,\"name\":\"status\",\"url\":\"interfaces/EquityMetadata.html#status\",\"classes\":\"\",\"parent\":\"EquityMetadata\"},{\"kind\":1024,\"name\":\"listingDate\",\"url\":\"interfaces/EquityMetadata.html#listingDate\",\"classes\":\"\",\"parent\":\"EquityMetadata\"},{\"kind\":1024,\"name\":\"industry\",\"url\":\"interfaces/EquityMetadata.html#industry\",\"classes\":\"\",\"parent\":\"EquityMetadata\"},{\"kind\":1024,\"name\":\"lastUpdateTime\",\"url\":\"interfaces/EquityMetadata.html#lastUpdateTime\",\"classes\":\"\",\"parent\":\"EquityMetadata\"},{\"kind\":1024,\"name\":\"pdSectorPe\",\"url\":\"interfaces/EquityMetadata.html#pdSectorPe\",\"classes\":\"\",\"parent\":\"EquityMetadata\"},{\"kind\":1024,\"name\":\"pdSymbolPe\",\"url\":\"interfaces/EquityMetadata.html#pdSymbolPe\",\"classes\":\"\",\"parent\":\"EquityMetadata\"},{\"kind\":1024,\"name\":\"pdSectorInd\",\"url\":\"interfaces/EquityMetadata.html#pdSectorInd\",\"classes\":\"\",\"parent\":\"EquityMetadata\"},{\"kind\":1024,\"name\":\"pdSectorIndAll\",\"url\":\"interfaces/EquityMetadata.html#pdSectorIndAll\",\"classes\":\"\",\"parent\":\"EquityMetadata\"},{\"kind\":256,\"name\":\"EquitySecurityInfo\",\"url\":\"interfaces/EquitySecurityInfo.html\",\"classes\":\"\"},{\"kind\":1024,\"name\":\"boardStatus\",\"url\":\"interfaces/EquitySecurityInfo.html#boardStatus\",\"classes\":\"\",\"parent\":\"EquitySecurityInfo\"},{\"kind\":1024,\"name\":\"tradingStatus\",\"url\":\"interfaces/EquitySecurityInfo.html#tradingStatus\",\"classes\":\"\",\"parent\":\"EquitySecurityInfo\"},{\"kind\":1024,\"name\":\"tradingSegment\",\"url\":\"interfaces/EquitySecurityInfo.html#tradingSegment\",\"classes\":\"\",\"parent\":\"EquitySecurityInfo\"},{\"kind\":1024,\"name\":\"sessionNo\",\"url\":\"interfaces/EquitySecurityInfo.html#sessionNo\",\"classes\":\"\",\"parent\":\"EquitySecurityInfo\"},{\"kind\":1024,\"name\":\"slb\",\"url\":\"interfaces/EquitySecurityInfo.html#slb\",\"classes\":\"\",\"parent\":\"EquitySecurityInfo\"},{\"kind\":1024,\"name\":\"classOfShare\",\"url\":\"interfaces/EquitySecurityInfo.html#classOfShare\",\"classes\":\"\",\"parent\":\"EquitySecurityInfo\"},{\"kind\":1024,\"name\":\"derivatives\",\"url\":\"interfaces/EquitySecurityInfo.html#derivatives\",\"classes\":\"\",\"parent\":\"EquitySecurityInfo\"},{\"kind\":1024,\"name\":\"surveillance\",\"url\":\"interfaces/EquitySecurityInfo.html#surveillance\",\"classes\":\"\",\"parent\":\"EquitySecurityInfo\"},{\"kind\":65536,\"name\":\"__type\",\"url\":\"interfaces/EquitySecurityInfo.html#surveillance.__type\",\"classes\":\"\",\"parent\":\"EquitySecurityInfo.surveillance\"},{\"kind\":1024,\"name\":\"surv\",\"url\":\"interfaces/EquitySecurityInfo.html#surveillance.__type.surv\",\"classes\":\"\",\"parent\":\"EquitySecurityInfo.surveillance.__type\"},{\"kind\":1024,\"name\":\"desc\",\"url\":\"interfaces/EquitySecurityInfo.html#surveillance.__type.desc\",\"classes\":\"\",\"parent\":\"EquitySecurityInfo.surveillance.__type\"},{\"kind\":1024,\"name\":\"faceValue\",\"url\":\"interfaces/EquitySecurityInfo.html#faceValue\",\"classes\":\"\",\"parent\":\"EquitySecurityInfo\"},{\"kind\":1024,\"name\":\"issuedSize\",\"url\":\"interfaces/EquitySecurityInfo.html#issuedSize\",\"classes\":\"\",\"parent\":\"EquitySecurityInfo\"},{\"kind\":256,\"name\":\"EquityPriceInfo\",\"url\":\"interfaces/EquityPriceInfo.html\",\"classes\":\"\"},{\"kind\":1024,\"name\":\"lastPrice\",\"url\":\"interfaces/EquityPriceInfo.html#lastPrice\",\"classes\":\"\",\"parent\":\"EquityPriceInfo\"},{\"kind\":1024,\"name\":\"change\",\"url\":\"interfaces/EquityPriceInfo.html#change\",\"classes\":\"\",\"parent\":\"EquityPriceInfo\"},{\"kind\":1024,\"name\":\"pChange\",\"url\":\"interfaces/EquityPriceInfo.html#pChange\",\"classes\":\"\",\"parent\":\"EquityPriceInfo\"},{\"kind\":1024,\"name\":\"previousClose\",\"url\":\"interfaces/EquityPriceInfo.html#previousClose\",\"classes\":\"\",\"parent\":\"EquityPriceInfo\"},{\"kind\":1024,\"name\":\"open\",\"url\":\"interfaces/EquityPriceInfo.html#open\",\"classes\":\"\",\"parent\":\"EquityPriceInfo\"},{\"kind\":1024,\"name\":\"close\",\"url\":\"interfaces/EquityPriceInfo.html#close\",\"classes\":\"\",\"parent\":\"EquityPriceInfo\"},{\"kind\":1024,\"name\":\"vwap\",\"url\":\"interfaces/EquityPriceInfo.html#vwap\",\"classes\":\"\",\"parent\":\"EquityPriceInfo\"},{\"kind\":1024,\"name\":\"stockIndClosePrice\",\"url\":\"interfaces/EquityPriceInfo.html#stockIndClosePrice\",\"classes\":\"\",\"parent\":\"EquityPriceInfo\"},{\"kind\":1024,\"name\":\"lowerCP\",\"url\":\"interfaces/EquityPriceInfo.html#lowerCP\",\"classes\":\"\",\"parent\":\"EquityPriceInfo\"},{\"kind\":1024,\"name\":\"upperCP\",\"url\":\"interfaces/EquityPriceInfo.html#upperCP\",\"classes\":\"\",\"parent\":\"EquityPriceInfo\"},{\"kind\":1024,\"name\":\"pPriceBand\",\"url\":\"interfaces/EquityPriceInfo.html#pPriceBand\",\"classes\":\"\",\"parent\":\"EquityPriceInfo\"},{\"kind\":1024,\"name\":\"basePrice\",\"url\":\"interfaces/EquityPriceInfo.html#basePrice\",\"classes\":\"\",\"parent\":\"EquityPriceInfo\"},{\"kind\":1024,\"name\":\"intraDayHighLow\",\"url\":\"interfaces/EquityPriceInfo.html#intraDayHighLow\",\"classes\":\"\",\"parent\":\"EquityPriceInfo\"},{\"kind\":65536,\"name\":\"__type\",\"url\":\"interfaces/EquityPriceInfo.html#intraDayHighLow.__type\",\"classes\":\"\",\"parent\":\"EquityPriceInfo.intraDayHighLow\"},{\"kind\":1024,\"name\":\"min\",\"url\":\"interfaces/EquityPriceInfo.html#intraDayHighLow.__type.min\",\"classes\":\"\",\"parent\":\"EquityPriceInfo.intraDayHighLow.__type\"},{\"kind\":1024,\"name\":\"max\",\"url\":\"interfaces/EquityPriceInfo.html#intraDayHighLow.__type.max\",\"classes\":\"\",\"parent\":\"EquityPriceInfo.intraDayHighLow.__type\"},{\"kind\":1024,\"name\":\"value\",\"url\":\"interfaces/EquityPriceInfo.html#intraDayHighLow.__type.value\",\"classes\":\"\",\"parent\":\"EquityPriceInfo.intraDayHighLow.__type\"},{\"kind\":1024,\"name\":\"weekHighLow\",\"url\":\"interfaces/EquityPriceInfo.html#weekHighLow\",\"classes\":\"\",\"parent\":\"EquityPriceInfo\"},{\"kind\":65536,\"name\":\"__type\",\"url\":\"interfaces/EquityPriceInfo.html#weekHighLow.__type-1\",\"classes\":\"\",\"parent\":\"EquityPriceInfo.weekHighLow\"},{\"kind\":1024,\"name\":\"min\",\"url\":\"interfaces/EquityPriceInfo.html#weekHighLow.__type-1.min-1\",\"classes\":\"\",\"parent\":\"EquityPriceInfo.weekHighLow.__type\"},{\"kind\":1024,\"name\":\"minDate\",\"url\":\"interfaces/EquityPriceInfo.html#weekHighLow.__type-1.minDate\",\"classes\":\"\",\"parent\":\"EquityPriceInfo.weekHighLow.__type\"},{\"kind\":1024,\"name\":\"max\",\"url\":\"interfaces/EquityPriceInfo.html#weekHighLow.__type-1.max-1\",\"classes\":\"\",\"parent\":\"EquityPriceInfo.weekHighLow.__type\"},{\"kind\":1024,\"name\":\"maxDate\",\"url\":\"interfaces/EquityPriceInfo.html#weekHighLow.__type-1.maxDate\",\"classes\":\"\",\"parent\":\"EquityPriceInfo.weekHighLow.__type\"},{\"kind\":1024,\"name\":\"value\",\"url\":\"interfaces/EquityPriceInfo.html#weekHighLow.__type-1.value-1\",\"classes\":\"\",\"parent\":\"EquityPriceInfo.weekHighLow.__type\"},{\"kind\":1024,\"name\":\"iNavValue\",\"url\":\"interfaces/EquityPriceInfo.html#iNavValue\",\"classes\":\"\",\"parent\":\"EquityPriceInfo\"},{\"kind\":1024,\"name\":\"checkINAV\",\"url\":\"interfaces/EquityPriceInfo.html#checkINAV\",\"classes\":\"\",\"parent\":\"EquityPriceInfo\"},{\"kind\":1024,\"name\":\"tickSize\",\"url\":\"interfaces/EquityPriceInfo.html#tickSize\",\"classes\":\"\",\"parent\":\"EquityPriceInfo\"},{\"kind\":1024,\"name\":\"ieq\",\"url\":\"interfaces/EquityPriceInfo.html#ieq\",\"classes\":\"\",\"parent\":\"EquityPriceInfo\"},{\"kind\":256,\"name\":\"EquityPreOpenMarket\",\"url\":\"interfaces/EquityPreOpenMarket.html\",\"classes\":\"\"},{\"kind\":1024,\"name\":\"preopen\",\"url\":\"interfaces/EquityPreOpenMarket.html#preopen\",\"classes\":\"\",\"parent\":\"EquityPreOpenMarket\"},{\"kind\":1024,\"name\":\"ato\",\"url\":\"interfaces/EquityPreOpenMarket.html#ato\",\"classes\":\"\",\"parent\":\"EquityPreOpenMarket\"},{\"kind\":65536,\"name\":\"__type\",\"url\":\"interfaces/EquityPreOpenMarket.html#ato.__type\",\"classes\":\"\",\"parent\":\"EquityPreOpenMarket.ato\"},{\"kind\":1024,\"name\":\"buy\",\"url\":\"interfaces/EquityPreOpenMarket.html#ato.__type.buy\",\"classes\":\"\",\"parent\":\"EquityPreOpenMarket.ato.__type\"},{\"kind\":1024,\"name\":\"sell\",\"url\":\"interfaces/EquityPreOpenMarket.html#ato.__type.sell\",\"classes\":\"\",\"parent\":\"EquityPreOpenMarket.ato.__type\"},{\"kind\":1024,\"name\":\"IEP\",\"url\":\"interfaces/EquityPreOpenMarket.html#IEP\",\"classes\":\"\",\"parent\":\"EquityPreOpenMarket\"},{\"kind\":1024,\"name\":\"totalTradedVolume\",\"url\":\"interfaces/EquityPreOpenMarket.html#totalTradedVolume\",\"classes\":\"\",\"parent\":\"EquityPreOpenMarket\"},{\"kind\":1024,\"name\":\"finalPrice\",\"url\":\"interfaces/EquityPreOpenMarket.html#finalPrice\",\"classes\":\"\",\"parent\":\"EquityPreOpenMarket\"},{\"kind\":1024,\"name\":\"finalQuantity\",\"url\":\"interfaces/EquityPreOpenMarket.html#finalQuantity\",\"classes\":\"\",\"parent\":\"EquityPreOpenMarket\"},{\"kind\":1024,\"name\":\"lastUpdateTime\",\"url\":\"interfaces/EquityPreOpenMarket.html#lastUpdateTime\",\"classes\":\"\",\"parent\":\"EquityPreOpenMarket\"},{\"kind\":1024,\"name\":\"totalBuyQuantity\",\"url\":\"interfaces/EquityPreOpenMarket.html#totalBuyQuantity\",\"classes\":\"\",\"parent\":\"EquityPreOpenMarket\"},{\"kind\":1024,\"name\":\"totalSellQuantity\",\"url\":\"interfaces/EquityPreOpenMarket.html#totalSellQuantity\",\"classes\":\"\",\"parent\":\"EquityPreOpenMarket\"},{\"kind\":1024,\"name\":\"atoBuyQty\",\"url\":\"interfaces/EquityPreOpenMarket.html#atoBuyQty\",\"classes\":\"\",\"parent\":\"EquityPreOpenMarket\"},{\"kind\":1024,\"name\":\"atoSellQty\",\"url\":\"interfaces/EquityPreOpenMarket.html#atoSellQty\",\"classes\":\"\",\"parent\":\"EquityPreOpenMarket\"},{\"kind\":256,\"name\":\"EquityHistoricalInfo\",\"url\":\"interfaces/EquityHistoricalInfo.html\",\"classes\":\"\"},{\"kind\":1024,\"name\":\"chSymbol\",\"url\":\"interfaces/EquityHistoricalInfo.html#chSymbol\",\"classes\":\"\",\"parent\":\"EquityHistoricalInfo\"},{\"kind\":1024,\"name\":\"chSeries\",\"url\":\"interfaces/EquityHistoricalInfo.html#chSeries\",\"classes\":\"\",\"parent\":\"EquityHistoricalInfo\"},{\"kind\":1024,\"name\":\"chPreviousClsPrice\",\"url\":\"interfaces/EquityHistoricalInfo.html#chPreviousClsPrice\",\"classes\":\"\",\"parent\":\"EquityHistoricalInfo\"},{\"kind\":1024,\"name\":\"chOpeningPrice\",\"url\":\"interfaces/EquityHistoricalInfo.html#chOpeningPrice\",\"classes\":\"\",\"parent\":\"EquityHistoricalInfo\"},{\"kind\":1024,\"name\":\"chTradeHighPrice\",\"url\":\"interfaces/EquityHistoricalInfo.html#chTradeHighPrice\",\"classes\":\"\",\"parent\":\"EquityHistoricalInfo\"},{\"kind\":1024,\"name\":\"chTradeLowPrice\",\"url\":\"interfaces/EquityHistoricalInfo.html#chTradeLowPrice\",\"classes\":\"\",\"parent\":\"EquityHistoricalInfo\"},{\"kind\":1024,\"name\":\"chLastTradedPrice\",\"url\":\"interfaces/EquityHistoricalInfo.html#chLastTradedPrice\",\"classes\":\"\",\"parent\":\"EquityHistoricalInfo\"},{\"kind\":1024,\"name\":\"chClosingPrice\",\"url\":\"interfaces/EquityHistoricalInfo.html#chClosingPrice\",\"classes\":\"\",\"parent\":\"EquityHistoricalInfo\"},{\"kind\":1024,\"name\":\"vwap\",\"url\":\"interfaces/EquityHistoricalInfo.html#vwap\",\"classes\":\"\",\"parent\":\"EquityHistoricalInfo\"},{\"kind\":1024,\"name\":\"chTotTradedQty\",\"url\":\"interfaces/EquityHistoricalInfo.html#chTotTradedQty\",\"classes\":\"\",\"parent\":\"EquityHistoricalInfo\"},{\"kind\":1024,\"name\":\"chTotTradedVal\",\"url\":\"interfaces/EquityHistoricalInfo.html#chTotTradedVal\",\"classes\":\"\",\"parent\":\"EquityHistoricalInfo\"},{\"kind\":1024,\"name\":\"chTotalTrades\",\"url\":\"interfaces/EquityHistoricalInfo.html#chTotalTrades\",\"classes\":\"\",\"parent\":\"EquityHistoricalInfo\"},{\"kind\":1024,\"name\":\"ch52WeekHighPrice\",\"url\":\"interfaces/EquityHistoricalInfo.html#ch52WeekHighPrice\",\"classes\":\"\",\"parent\":\"EquityHistoricalInfo\"},{\"kind\":1024,\"name\":\"ch52WeekLowPrice\",\"url\":\"interfaces/EquityHistoricalInfo.html#ch52WeekLowPrice\",\"classes\":\"\",\"parent\":\"EquityHistoricalInfo\"},{\"kind\":1024,\"name\":\"mtimestamp\",\"url\":\"interfaces/EquityHistoricalInfo.html#mtimestamp\",\"classes\":\"\",\"parent\":\"EquityHistoricalInfo\"},{\"kind\":256,\"name\":\"EquityOptionChainItem\",\"url\":\"interfaces/EquityOptionChainItem.html\",\"classes\":\"\"},{\"kind\":1024,\"name\":\"identifier\",\"url\":\"interfaces/EquityOptionChainItem.html#identifier\",\"classes\":\"\",\"parent\":\"EquityOptionChainItem\"},{\"kind\":1024,\"name\":\"instrumentType\",\"url\":\"interfaces/EquityOptionChainItem.html#instrumentType\",\"classes\":\"\",\"parent\":\"EquityOptionChainItem\"},{\"kind\":1024,\"name\":\"underlying\",\"url\":\"interfaces/EquityOptionChainItem.html#underlying\",\"classes\":\"\",\"parent\":\"EquityOptionChainItem\"},{\"kind\":1024,\"name\":\"expiryDate\",\"url\":\"interfaces/EquityOptionChainItem.html#expiryDate\",\"classes\":\"\",\"parent\":\"EquityOptionChainItem\"},{\"kind\":1024,\"name\":\"optionType\",\"url\":\"interfaces/EquityOptionChainItem.html#optionType\",\"classes\":\"\",\"parent\":\"EquityOptionChainItem\"},{\"kind\":1024,\"name\":\"strikePrice\",\"url\":\"interfaces/EquityOptionChainItem.html#strikePrice\",\"classes\":\"\",\"parent\":\"EquityOptionChainItem\"},{\"kind\":1024,\"name\":\"openPrice\",\"url\":\"interfaces/EquityOptionChainItem.html#openPrice\",\"classes\":\"\",\"parent\":\"EquityOptionChainItem\"},{\"kind\":1024,\"name\":\"highPrice\",\"url\":\"interfaces/EquityOptionChainItem.html#highPrice\",\"classes\":\"\",\"parent\":\"EquityOptionChainItem\"},{\"kind\":1024,\"name\":\"lowPrice\",\"url\":\"interfaces/EquityOptionChainItem.html#lowPrice\",\"classes\":\"\",\"parent\":\"EquityOptionChainItem\"},{\"kind\":1024,\"name\":\"closePrice\",\"url\":\"interfaces/EquityOptionChainItem.html#closePrice\",\"classes\":\"\",\"parent\":\"EquityOptionChainItem\"},{\"kind\":1024,\"name\":\"prevClose\",\"url\":\"interfaces/EquityOptionChainItem.html#prevClose\",\"classes\":\"\",\"parent\":\"EquityOptionChainItem\"},{\"kind\":1024,\"name\":\"lastPrice\",\"url\":\"interfaces/EquityOptionChainItem.html#lastPrice\",\"classes\":\"\",\"parent\":\"EquityOptionChainItem\"},{\"kind\":1024,\"name\":\"change\",\"url\":\"interfaces/EquityOptionChainItem.html#change\",\"classes\":\"\",\"parent\":\"EquityOptionChainItem\"},{\"kind\":1024,\"name\":\"totalTradedVolume\",\"url\":\"interfaces/EquityOptionChainItem.html#totalTradedVolume\",\"classes\":\"\",\"parent\":\"EquityOptionChainItem\"},{\"kind\":1024,\"name\":\"totalTurnover\",\"url\":\"interfaces/EquityOptionChainItem.html#totalTurnover\",\"classes\":\"\",\"parent\":\"EquityOptionChainItem\"},{\"kind\":1024,\"name\":\"openInterest\",\"url\":\"interfaces/EquityOptionChainItem.html#openInterest\",\"classes\":\"\",\"parent\":\"EquityOptionChainItem\"},{\"kind\":1024,\"name\":\"changeinOpenInterest\",\"url\":\"interfaces/EquityOptionChainItem.html#changeinOpenInterest\",\"classes\":\"\",\"parent\":\"EquityOptionChainItem\"},{\"kind\":1024,\"name\":\"pchangeinOpenInterest\",\"url\":\"interfaces/EquityOptionChainItem.html#pchangeinOpenInterest\",\"classes\":\"\",\"parent\":\"EquityOptionChainItem\"},{\"kind\":1024,\"name\":\"underlyingValue\",\"url\":\"interfaces/EquityOptionChainItem.html#underlyingValue\",\"classes\":\"\",\"parent\":\"EquityOptionChainItem\"},{\"kind\":1024,\"name\":\"volumeFreezeQuantity\",\"url\":\"interfaces/EquityOptionChainItem.html#volumeFreezeQuantity\",\"classes\":\"\",\"parent\":\"EquityOptionChainItem\"},{\"kind\":1024,\"name\":\"ticksize\",\"url\":\"interfaces/EquityOptionChainItem.html#ticksize\",\"classes\":\"\",\"parent\":\"EquityOptionChainItem\"},{\"kind\":1024,\"name\":\"pchange\",\"url\":\"interfaces/EquityOptionChainItem.html#pchange\",\"classes\":\"\",\"parent\":\"EquityOptionChainItem\"},{\"kind\":256,\"name\":\"IndexEquityInfo\",\"url\":\"interfaces/IndexEquityInfo.html\",\"classes\":\"\"},{\"kind\":1024,\"name\":\"priority\",\"url\":\"interfaces/IndexEquityInfo.html#priority\",\"classes\":\"\",\"parent\":\"IndexEquityInfo\"},{\"kind\":1024,\"name\":\"symbol\",\"url\":\"interfaces/IndexEquityInfo.html#symbol\",\"classes\":\"\",\"parent\":\"IndexEquityInfo\"},{\"kind\":1024,\"name\":\"identifier\",\"url\":\"interfaces/IndexEquityInfo.html#identifier\",\"classes\":\"\",\"parent\":\"IndexEquityInfo\"},{\"kind\":1024,\"name\":\"series\",\"url\":\"interfaces/IndexEquityInfo.html#series\",\"classes\":\"\",\"parent\":\"IndexEquityInfo\"},{\"kind\":1024,\"name\":\"open\",\"url\":\"interfaces/IndexEquityInfo.html#open\",\"classes\":\"\",\"parent\":\"IndexEquityInfo\"},{\"kind\":1024,\"name\":\"dayHigh\",\"url\":\"interfaces/IndexEquityInfo.html#dayHigh\",\"classes\":\"\",\"parent\":\"IndexEquityInfo\"},{\"kind\":1024,\"name\":\"dayLow\",\"url\":\"interfaces/IndexEquityInfo.html#dayLow\",\"classes\":\"\",\"parent\":\"IndexEquityInfo\"},{\"kind\":1024,\"name\":\"lastPrice\",\"url\":\"interfaces/IndexEquityInfo.html#lastPrice\",\"classes\":\"\",\"parent\":\"IndexEquityInfo\"},{\"kind\":1024,\"name\":\"previousClose\",\"url\":\"interfaces/IndexEquityInfo.html#previousClose\",\"classes\":\"\",\"parent\":\"IndexEquityInfo\"},{\"kind\":1024,\"name\":\"change\",\"url\":\"interfaces/IndexEquityInfo.html#change\",\"classes\":\"\",\"parent\":\"IndexEquityInfo\"},{\"kind\":1024,\"name\":\"pChange\",\"url\":\"interfaces/IndexEquityInfo.html#pChange\",\"classes\":\"\",\"parent\":\"IndexEquityInfo\"},{\"kind\":1024,\"name\":\"totalTradedVolume\",\"url\":\"interfaces/IndexEquityInfo.html#totalTradedVolume\",\"classes\":\"\",\"parent\":\"IndexEquityInfo\"},{\"kind\":1024,\"name\":\"stockIndClosePrice\",\"url\":\"interfaces/IndexEquityInfo.html#stockIndClosePrice\",\"classes\":\"\",\"parent\":\"IndexEquityInfo\"},{\"kind\":1024,\"name\":\"totalTradedValue\",\"url\":\"interfaces/IndexEquityInfo.html#totalTradedValue\",\"classes\":\"\",\"parent\":\"IndexEquityInfo\"},{\"kind\":1024,\"name\":\"lastUpdateTime\",\"url\":\"interfaces/IndexEquityInfo.html#lastUpdateTime\",\"classes\":\"\",\"parent\":\"IndexEquityInfo\"},{\"kind\":1024,\"name\":\"yearHigh\",\"url\":\"interfaces/IndexEquityInfo.html#yearHigh\",\"classes\":\"\",\"parent\":\"IndexEquityInfo\"},{\"kind\":1024,\"name\":\"ffmc\",\"url\":\"interfaces/IndexEquityInfo.html#ffmc\",\"classes\":\"\",\"parent\":\"IndexEquityInfo\"},{\"kind\":1024,\"name\":\"yearLow\",\"url\":\"interfaces/IndexEquityInfo.html#yearLow\",\"classes\":\"\",\"parent\":\"IndexEquityInfo\"},{\"kind\":1024,\"name\":\"nearWKH\",\"url\":\"interfaces/IndexEquityInfo.html#nearWKH\",\"classes\":\"\",\"parent\":\"IndexEquityInfo\"},{\"kind\":1024,\"name\":\"nearWKL\",\"url\":\"interfaces/IndexEquityInfo.html#nearWKL\",\"classes\":\"\",\"parent\":\"IndexEquityInfo\"},{\"kind\":1024,\"name\":\"perChange365d\",\"url\":\"interfaces/IndexEquityInfo.html#perChange365d\",\"classes\":\"\",\"parent\":\"IndexEquityInfo\"},{\"kind\":1024,\"name\":\"perChange30d\",\"url\":\"interfaces/IndexEquityInfo.html#perChange30d\",\"classes\":\"\",\"parent\":\"IndexEquityInfo\"},{\"kind\":1024,\"name\":\"date365dAgo\",\"url\":\"interfaces/IndexEquityInfo.html#date365dAgo\",\"classes\":\"\",\"parent\":\"IndexEquityInfo\"},{\"kind\":1024,\"name\":\"date30dAgo\",\"url\":\"interfaces/IndexEquityInfo.html#date30dAgo\",\"classes\":\"\",\"parent\":\"IndexEquityInfo\"},{\"kind\":1024,\"name\":\"chartTodayPath\",\"url\":\"interfaces/IndexEquityInfo.html#chartTodayPath\",\"classes\":\"\",\"parent\":\"IndexEquityInfo\"},{\"kind\":1024,\"name\":\"chart30dPath\",\"url\":\"interfaces/IndexEquityInfo.html#chart30dPath\",\"classes\":\"\",\"parent\":\"IndexEquityInfo\"},{\"kind\":1024,\"name\":\"chart365dPath\",\"url\":\"interfaces/IndexEquityInfo.html#chart365dPath\",\"classes\":\"\",\"parent\":\"IndexEquityInfo\"},{\"kind\":1024,\"name\":\"meta\",\"url\":\"interfaces/IndexEquityInfo.html#meta\",\"classes\":\"\",\"parent\":\"IndexEquityInfo\"},{\"kind\":256,\"name\":\"IndexRecords\",\"url\":\"interfaces/IndexRecords.html\",\"classes\":\"\"},{\"kind\":1024,\"name\":\"strikePrices\",\"url\":\"interfaces/IndexRecords.html#strikePrices\",\"classes\":\"\",\"parent\":\"IndexRecords\"},{\"kind\":1024,\"name\":\"expiryDates\",\"url\":\"interfaces/IndexRecords.html#expiryDates\",\"classes\":\"tsd-is-inherited\",\"parent\":\"IndexRecords\"},{\"kind\":1024,\"name\":\"data\",\"url\":\"interfaces/IndexRecords.html#data\",\"classes\":\"tsd-is-inherited\",\"parent\":\"IndexRecords\"},{\"kind\":1024,\"name\":\"timestamp\",\"url\":\"interfaces/IndexRecords.html#timestamp\",\"classes\":\"tsd-is-inherited\",\"parent\":\"IndexRecords\"},{\"kind\":1024,\"name\":\"underlyingValue\",\"url\":\"interfaces/IndexRecords.html#underlyingValue\",\"classes\":\"tsd-is-inherited\",\"parent\":\"IndexRecords\"},{\"kind\":256,\"name\":\"CommodityRecords\",\"url\":\"interfaces/CommodityRecords.html\",\"classes\":\"\"},{\"kind\":1024,\"name\":\"strikePrices\",\"url\":\"interfaces/CommodityRecords.html#strikePrices\",\"classes\":\"\",\"parent\":\"CommodityRecords\"},{\"kind\":1024,\"name\":\"expiryDates\",\"url\":\"interfaces/CommodityRecords.html#expiryDates\",\"classes\":\"tsd-is-inherited\",\"parent\":\"CommodityRecords\"},{\"kind\":1024,\"name\":\"data\",\"url\":\"interfaces/CommodityRecords.html#data\",\"classes\":\"tsd-is-inherited\",\"parent\":\"CommodityRecords\"},{\"kind\":1024,\"name\":\"timestamp\",\"url\":\"interfaces/CommodityRecords.html#timestamp\",\"classes\":\"tsd-is-inherited\",\"parent\":\"CommodityRecords\"},{\"kind\":1024,\"name\":\"underlyingValue\",\"url\":\"interfaces/CommodityRecords.html#underlyingValue\",\"classes\":\"tsd-is-inherited\",\"parent\":\"CommodityRecords\"},{\"kind\":256,\"name\":\"Filtered\",\"url\":\"interfaces/Filtered.html\",\"classes\":\"\"},{\"kind\":1024,\"name\":\"data\",\"url\":\"interfaces/Filtered.html#data\",\"classes\":\"\",\"parent\":\"Filtered\"},{\"kind\":1024,\"name\":\"CE\",\"url\":\"interfaces/Filtered.html#CE\",\"classes\":\"\",\"parent\":\"Filtered\"},{\"kind\":1024,\"name\":\"PE\",\"url\":\"interfaces/Filtered.html#PE\",\"classes\":\"\",\"parent\":\"Filtered\"},{\"kind\":256,\"name\":\"Holiday\",\"url\":\"interfaces/Holiday.html\",\"classes\":\"\"},{\"kind\":1024,\"name\":\"tradingDate\",\"url\":\"interfaces/Holiday.html#tradingDate\",\"classes\":\"\",\"parent\":\"Holiday\"},{\"kind\":1024,\"name\":\"weekDay\",\"url\":\"interfaces/Holiday.html#weekDay\",\"classes\":\"\",\"parent\":\"Holiday\"},{\"kind\":1024,\"name\":\"description\",\"url\":\"interfaces/Holiday.html#description\",\"classes\":\"\",\"parent\":\"Holiday\"},{\"kind\":1024,\"name\":\"morning_session\",\"url\":\"interfaces/Holiday.html#morning_session\",\"classes\":\"\",\"parent\":\"Holiday\"},{\"kind\":1024,\"name\":\"evening_session\",\"url\":\"interfaces/Holiday.html#evening_session\",\"classes\":\"\",\"parent\":\"Holiday\"},{\"kind\":1024,\"name\":\"Sr_no\",\"url\":\"interfaces/Holiday.html#Sr_no\",\"classes\":\"\",\"parent\":\"Holiday\"},{\"kind\":256,\"name\":\"MarketState\",\"url\":\"interfaces/MarketState.html\",\"classes\":\"\"},{\"kind\":1024,\"name\":\"market\",\"url\":\"interfaces/MarketState.html#market\",\"classes\":\"\",\"parent\":\"MarketState\"},{\"kind\":1024,\"name\":\"marketStatus\",\"url\":\"interfaces/MarketState.html#marketStatus\",\"classes\":\"\",\"parent\":\"MarketState\"},{\"kind\":1024,\"name\":\"tradeDate\",\"url\":\"interfaces/MarketState.html#tradeDate\",\"classes\":\"\",\"parent\":\"MarketState\"},{\"kind\":1024,\"name\":\"index\",\"url\":\"interfaces/MarketState.html#index\",\"classes\":\"\",\"parent\":\"MarketState\"},{\"kind\":1024,\"name\":\"last\",\"url\":\"interfaces/MarketState.html#last\",\"classes\":\"\",\"parent\":\"MarketState\"},{\"kind\":1024,\"name\":\"variation\",\"url\":\"interfaces/MarketState.html#variation\",\"classes\":\"\",\"parent\":\"MarketState\"},{\"kind\":1024,\"name\":\"percentChange\",\"url\":\"interfaces/MarketState.html#percentChange\",\"classes\":\"\",\"parent\":\"MarketState\"},{\"kind\":1024,\"name\":\"marketStatusMessage\",\"url\":\"interfaces/MarketState.html#marketStatusMessage\",\"classes\":\"\",\"parent\":\"MarketState\"},{\"kind\":1024,\"name\":\"expiryDate\",\"url\":\"interfaces/MarketState.html#expiryDate\",\"classes\":\"\",\"parent\":\"MarketState\"},{\"kind\":1024,\"name\":\"underlying\",\"url\":\"interfaces/MarketState.html#underlying\",\"classes\":\"\",\"parent\":\"MarketState\"},{\"kind\":1024,\"name\":\"updated_time\",\"url\":\"interfaces/MarketState.html#updated_time\",\"classes\":\"\",\"parent\":\"MarketState\"},{\"kind\":1024,\"name\":\"tradeDateFormatted\",\"url\":\"interfaces/MarketState.html#tradeDateFormatted\",\"classes\":\"\",\"parent\":\"MarketState\"},{\"kind\":1024,\"name\":\"slickclass\",\"url\":\"interfaces/MarketState.html#slickclass\",\"classes\":\"\",\"parent\":\"MarketState\"},{\"kind\":256,\"name\":\"MarketCap\",\"url\":\"interfaces/MarketCap.html\",\"classes\":\"\"},{\"kind\":1024,\"name\":\"timeStamp\",\"url\":\"interfaces/MarketCap.html#timeStamp\",\"classes\":\"\",\"parent\":\"MarketCap\"},{\"kind\":1024,\"name\":\"marketCapinTRDollars\",\"url\":\"interfaces/MarketCap.html#marketCapinTRDollars\",\"classes\":\"\",\"parent\":\"MarketCap\"},{\"kind\":1024,\"name\":\"marketCapinLACCRRupees\",\"url\":\"interfaces/MarketCap.html#marketCapinLACCRRupees\",\"classes\":\"\",\"parent\":\"MarketCap\"},{\"kind\":1024,\"name\":\"marketCapinCRRupees\",\"url\":\"interfaces/MarketCap.html#marketCapinCRRupees\",\"classes\":\"\",\"parent\":\"MarketCap\"},{\"kind\":1024,\"name\":\"marketCapinCRRupeesFormatted\",\"url\":\"interfaces/MarketCap.html#marketCapinCRRupeesFormatted\",\"classes\":\"\",\"parent\":\"MarketCap\"},{\"kind\":1024,\"name\":\"marketCapinLACCRRupeesFormatted\",\"url\":\"interfaces/MarketCap.html#marketCapinLACCRRupeesFormatted\",\"classes\":\"\",\"parent\":\"MarketCap\"},{\"kind\":1024,\"name\":\"underlying\",\"url\":\"interfaces/MarketCap.html#underlying\",\"classes\":\"\",\"parent\":\"MarketCap\"},{\"kind\":256,\"name\":\"IndicativeNifty50\",\"url\":\"interfaces/IndicativeNifty50.html\",\"classes\":\"\"},{\"kind\":1024,\"name\":\"dateTime\",\"url\":\"interfaces/IndicativeNifty50.html#dateTime\",\"classes\":\"\",\"parent\":\"IndicativeNifty50\"},{\"kind\":1024,\"name\":\"indicativeTime\",\"url\":\"interfaces/IndicativeNifty50.html#indicativeTime\",\"classes\":\"\",\"parent\":\"IndicativeNifty50\"},{\"kind\":1024,\"name\":\"indexName\",\"url\":\"interfaces/IndicativeNifty50.html#indexName\",\"classes\":\"\",\"parent\":\"IndicativeNifty50\"},{\"kind\":1024,\"name\":\"indexLast\",\"url\":\"interfaces/IndicativeNifty50.html#indexLast\",\"classes\":\"\",\"parent\":\"IndicativeNifty50\"},{\"kind\":1024,\"name\":\"indexPercChange\",\"url\":\"interfaces/IndicativeNifty50.html#indexPercChange\",\"classes\":\"\",\"parent\":\"IndicativeNifty50\"},{\"kind\":1024,\"name\":\"indexTimeVal\",\"url\":\"interfaces/IndicativeNifty50.html#indexTimeVal\",\"classes\":\"\",\"parent\":\"IndicativeNifty50\"},{\"kind\":1024,\"name\":\"closingValue\",\"url\":\"interfaces/IndicativeNifty50.html#closingValue\",\"classes\":\"\",\"parent\":\"IndicativeNifty50\"},{\"kind\":1024,\"name\":\"finalClosingValue\",\"url\":\"interfaces/IndicativeNifty50.html#finalClosingValue\",\"classes\":\"\",\"parent\":\"IndicativeNifty50\"},{\"kind\":1024,\"name\":\"change\",\"url\":\"interfaces/IndicativeNifty50.html#change\",\"classes\":\"\",\"parent\":\"IndicativeNifty50\"},{\"kind\":1024,\"name\":\"perChange\",\"url\":\"interfaces/IndicativeNifty50.html#perChange\",\"classes\":\"\",\"parent\":\"IndicativeNifty50\"},{\"kind\":1024,\"name\":\"status\",\"url\":\"interfaces/IndicativeNifty50.html#status\",\"classes\":\"\",\"parent\":\"IndicativeNifty50\"},{\"kind\":256,\"name\":\"GiftNifty\",\"url\":\"interfaces/GiftNifty.html\",\"classes\":\"\"},{\"kind\":1024,\"name\":\"INSTRUMENTTYPE\",\"url\":\"interfaces/GiftNifty.html#INSTRUMENTTYPE\",\"classes\":\"\",\"parent\":\"GiftNifty\"},{\"kind\":1024,\"name\":\"SYMBOL\",\"url\":\"interfaces/GiftNifty.html#SYMBOL\",\"classes\":\"\",\"parent\":\"GiftNifty\"},{\"kind\":1024,\"name\":\"EXPIRYDATE\",\"url\":\"interfaces/GiftNifty.html#EXPIRYDATE\",\"classes\":\"\",\"parent\":\"GiftNifty\"},{\"kind\":1024,\"name\":\"OPTIONTYPE\",\"url\":\"interfaces/GiftNifty.html#OPTIONTYPE\",\"classes\":\"\",\"parent\":\"GiftNifty\"},{\"kind\":1024,\"name\":\"STRIKEPRICE\",\"url\":\"interfaces/GiftNifty.html#STRIKEPRICE\",\"classes\":\"\",\"parent\":\"GiftNifty\"},{\"kind\":1024,\"name\":\"LASTPRICE\",\"url\":\"interfaces/GiftNifty.html#LASTPRICE\",\"classes\":\"\",\"parent\":\"GiftNifty\"},{\"kind\":1024,\"name\":\"DAYCHANGE\",\"url\":\"interfaces/GiftNifty.html#DAYCHANGE\",\"classes\":\"\",\"parent\":\"GiftNifty\"},{\"kind\":1024,\"name\":\"PERCHANGE\",\"url\":\"interfaces/GiftNifty.html#PERCHANGE\",\"classes\":\"\",\"parent\":\"GiftNifty\"},{\"kind\":1024,\"name\":\"CONTRACTSTRADED\",\"url\":\"interfaces/GiftNifty.html#CONTRACTSTRADED\",\"classes\":\"\",\"parent\":\"GiftNifty\"},{\"kind\":1024,\"name\":\"TIMESTMP\",\"url\":\"interfaces/GiftNifty.html#TIMESTMP\",\"classes\":\"\",\"parent\":\"GiftNifty\"},{\"kind\":1024,\"name\":\"id\",\"url\":\"interfaces/GiftNifty.html#id\",\"classes\":\"\",\"parent\":\"GiftNifty\"},{\"kind\":256,\"name\":\"Datum\",\"url\":\"interfaces/Datum.html\",\"classes\":\"\"},{\"kind\":1024,\"name\":\"strikePrice\",\"url\":\"interfaces/Datum.html#strikePrice\",\"classes\":\"\",\"parent\":\"Datum\"},{\"kind\":1024,\"name\":\"expiryDates\",\"url\":\"interfaces/Datum.html#expiryDates\",\"classes\":\"\",\"parent\":\"Datum\"},{\"kind\":1024,\"name\":\"expiryDate\",\"url\":\"interfaces/Datum.html#expiryDate\",\"classes\":\"\",\"parent\":\"Datum\"},{\"kind\":1024,\"name\":\"PE\",\"url\":\"interfaces/Datum.html#PE\",\"classes\":\"\",\"parent\":\"Datum\"},{\"kind\":1024,\"name\":\"CE\",\"url\":\"interfaces/Datum.html#CE\",\"classes\":\"\",\"parent\":\"Datum\"},{\"kind\":256,\"name\":\"PreOpenDetails\",\"url\":\"interfaces/PreOpenDetails.html\",\"classes\":\"\"},{\"kind\":1024,\"name\":\"price\",\"url\":\"interfaces/PreOpenDetails.html#price\",\"classes\":\"\",\"parent\":\"PreOpenDetails\"},{\"kind\":1024,\"name\":\"buyQty\",\"url\":\"interfaces/PreOpenDetails.html#buyQty\",\"classes\":\"\",\"parent\":\"PreOpenDetails\"},{\"kind\":1024,\"name\":\"sellQty\",\"url\":\"interfaces/PreOpenDetails.html#sellQty\",\"classes\":\"\",\"parent\":\"PreOpenDetails\"},{\"kind\":1024,\"name\":\"iep\",\"url\":\"interfaces/PreOpenDetails.html#iep\",\"classes\":\"\",\"parent\":\"PreOpenDetails\"},{\"kind\":256,\"name\":\"OptionsData\",\"url\":\"interfaces/OptionsData.html\",\"classes\":\"\"},{\"kind\":1024,\"name\":\"totOI\",\"url\":\"interfaces/OptionsData.html#totOI\",\"classes\":\"\",\"parent\":\"OptionsData\"},{\"kind\":1024,\"name\":\"totVol\",\"url\":\"interfaces/OptionsData.html#totVol\",\"classes\":\"\",\"parent\":\"OptionsData\"},{\"kind\":256,\"name\":\"OptionsDetails\",\"url\":\"interfaces/OptionsDetails.html\",\"classes\":\"\"},{\"kind\":1024,\"name\":\"strikePrice\",\"url\":\"interfaces/OptionsDetails.html#strikePrice\",\"classes\":\"\",\"parent\":\"OptionsDetails\"},{\"kind\":1024,\"name\":\"expiryDate\",\"url\":\"interfaces/OptionsDetails.html#expiryDate\",\"classes\":\"\",\"parent\":\"OptionsDetails\"},{\"kind\":1024,\"name\":\"underlying\",\"url\":\"interfaces/OptionsDetails.html#underlying\",\"classes\":\"\",\"parent\":\"OptionsDetails\"},{\"kind\":1024,\"name\":\"identifier\",\"url\":\"interfaces/OptionsDetails.html#identifier\",\"classes\":\"\",\"parent\":\"OptionsDetails\"},{\"kind\":1024,\"name\":\"openInterest\",\"url\":\"interfaces/OptionsDetails.html#openInterest\",\"classes\":\"\",\"parent\":\"OptionsDetails\"},{\"kind\":1024,\"name\":\"changeinOpenInterest\",\"url\":\"interfaces/OptionsDetails.html#changeinOpenInterest\",\"classes\":\"\",\"parent\":\"OptionsDetails\"},{\"kind\":1024,\"name\":\"pchangeinOpenInterest\",\"url\":\"interfaces/OptionsDetails.html#pchangeinOpenInterest\",\"classes\":\"\",\"parent\":\"OptionsDetails\"},{\"kind\":1024,\"name\":\"totalTradedVolume\",\"url\":\"interfaces/OptionsDetails.html#totalTradedVolume\",\"classes\":\"\",\"parent\":\"OptionsDetails\"},{\"kind\":1024,\"name\":\"impliedVolatility\",\"url\":\"interfaces/OptionsDetails.html#impliedVolatility\",\"classes\":\"\",\"parent\":\"OptionsDetails\"},{\"kind\":1024,\"name\":\"lastPrice\",\"url\":\"interfaces/OptionsDetails.html#lastPrice\",\"classes\":\"\",\"parent\":\"OptionsDetails\"},{\"kind\":1024,\"name\":\"change\",\"url\":\"interfaces/OptionsDetails.html#change\",\"classes\":\"\",\"parent\":\"OptionsDetails\"},{\"kind\":1024,\"name\":\"pChange\",\"url\":\"interfaces/OptionsDetails.html#pChange\",\"classes\":\"\",\"parent\":\"OptionsDetails\"},{\"kind\":1024,\"name\":\"pchange\",\"url\":\"interfaces/OptionsDetails.html#pchange-1\",\"classes\":\"\",\"parent\":\"OptionsDetails\"},{\"kind\":1024,\"name\":\"totalBuyQuantity\",\"url\":\"interfaces/OptionsDetails.html#totalBuyQuantity\",\"classes\":\"\",\"parent\":\"OptionsDetails\"},{\"kind\":1024,\"name\":\"totalSellQuantity\",\"url\":\"interfaces/OptionsDetails.html#totalSellQuantity\",\"classes\":\"\",\"parent\":\"OptionsDetails\"},{\"kind\":1024,\"name\":\"bidQty\",\"url\":\"interfaces/OptionsDetails.html#bidQty\",\"classes\":\"\",\"parent\":\"OptionsDetails\"},{\"kind\":1024,\"name\":\"bidprice\",\"url\":\"interfaces/OptionsDetails.html#bidprice\",\"classes\":\"\",\"parent\":\"OptionsDetails\"},{\"kind\":1024,\"name\":\"askQty\",\"url\":\"interfaces/OptionsDetails.html#askQty\",\"classes\":\"\",\"parent\":\"OptionsDetails\"},{\"kind\":1024,\"name\":\"askPrice\",\"url\":\"interfaces/OptionsDetails.html#askPrice\",\"classes\":\"\",\"parent\":\"OptionsDetails\"},{\"kind\":1024,\"name\":\"buyPrice1\",\"url\":\"interfaces/OptionsDetails.html#buyPrice1\",\"classes\":\"\",\"parent\":\"OptionsDetails\"},{\"kind\":1024,\"name\":\"buyQuantity1\",\"url\":\"interfaces/OptionsDetails.html#buyQuantity1\",\"classes\":\"\",\"parent\":\"OptionsDetails\"},{\"kind\":1024,\"name\":\"sellPrice1\",\"url\":\"interfaces/OptionsDetails.html#sellPrice1\",\"classes\":\"\",\"parent\":\"OptionsDetails\"},{\"kind\":1024,\"name\":\"sellQuantity1\",\"url\":\"interfaces/OptionsDetails.html#sellQuantity1\",\"classes\":\"\",\"parent\":\"OptionsDetails\"},{\"kind\":1024,\"name\":\"underlyingValue\",\"url\":\"interfaces/OptionsDetails.html#underlyingValue\",\"classes\":\"\",\"parent\":\"OptionsDetails\"},{\"kind\":1024,\"name\":\"optionType\",\"url\":\"interfaces/OptionsDetails.html#optionType\",\"classes\":\"\",\"parent\":\"OptionsDetails\"}],\"index\":{\"version\":\"2.3.9\",\"fields\":[\"name\",\"comment\"],\"fieldVectors\":[[\"name/0\",[0,58.898]],[\"comment/0\",[]],[\"name/1\",[1,53.79]],[\"comment/1\",[]],[\"name/2\",[2,58.898]],[\"comment/2\",[]],[\"name/3\",[3,58.898]],[\"comment/3\",[]],[\"name/4\",[4,58.898]],[\"comment/4\",[]],[\"name/5\",[5,58.898]],[\"comment/5\",[]],[\"name/6\",[6,58.898]],[\"comment/6\",[]],[\"name/7\",[7,58.898]],[\"comment/7\",[]],[\"name/8\",[8,58.898]],[\"comment/8\",[]],[\"name/9\",[9,58.898]],[\"comment/9\",[]],[\"name/10\",[10,58.898]],[\"comment/10\",[]],[\"name/11\",[11,58.898]],[\"comment/11\",[]],[\"name/12\",[12,58.898]],[\"comment/12\",[]],[\"name/13\",[13,58.898]],[\"comment/13\",[]],[\"name/14\",[14,58.898]],[\"comment/14\",[]],[\"name/15\",[15,58.898]],[\"comment/15\",[]],[\"name/16\",[16,58.898]],[\"comment/16\",[]],[\"name/17\",[17,58.898]],[\"comment/17\",[]],[\"name/18\",[18,58.898]],[\"comment/18\",[]],[\"name/19\",[19,58.898]],[\"comment/19\",[]],[\"name/20\",[20,58.898]],[\"comment/20\",[]],[\"name/21\",[21,58.898]],[\"comment/21\",[]],[\"name/22\",[22,58.898]],[\"comment/22\",[]],[\"name/23\",[23,58.898]],[\"comment/23\",[]],[\"name/24\",[24,58.898]],[\"comment/24\",[]],[\"name/25\",[25,58.898]],[\"comment/25\",[]],[\"name/26\",[26,58.898]],[\"comment/26\",[]],[\"name/27\",[27,58.898]],[\"comment/27\",[]],[\"name/28\",[28,58.898]],[\"comment/28\",[]],[\"name/29\",[29,58.898]],[\"comment/29\",[]],[\"name/30\",[30,58.898]],[\"comment/30\",[]],[\"name/31\",[31,58.898]],[\"comment/31\",[]],[\"name/32\",[32,58.898]],[\"comment/32\",[]],[\"name/33\",[33,58.898]],[\"comment/33\",[]],[\"name/34\",[34,58.898]],[\"comment/34\",[]],[\"name/35\",[35,58.898]],[\"comment/35\",[]],[\"name/36\",[36,58.898]],[\"comment/36\",[]],[\"name/37\",[37,58.898]],[\"comment/37\",[]],[\"name/38\",[38,58.898]],[\"comment/38\",[]],[\"name/39\",[39,58.898]],[\"comment/39\",[]],[\"name/40\",[40,58.898]],[\"comment/40\",[]],[\"name/41\",[41,58.898]],[\"comment/41\",[]],[\"name/42\",[42,58.898]],[\"comment/42\",[]],[\"name/43\",[43,58.898]],[\"comment/43\",[]],[\"name/44\",[44,58.898]],[\"comment/44\",[]],[\"name/45\",[45,58.898]],[\"comment/45\",[]],[\"name/46\",[46,58.898]],[\"comment/46\",[]],[\"name/47\",[47,58.898]],[\"comment/47\",[]],[\"name/48\",[48,58.898]],[\"comment/48\",[]],[\"name/49\",[49,58.898]],[\"comment/49\",[]],[\"name/50\",[50,58.898]],[\"comment/50\",[]],[\"name/51\",[51,45.905]],[\"comment/51\",[]],[\"name/52\",[5
gitextract_4l0czfbt/ ├── .eslintignore ├── .eslintrc ├── .github/ │ └── workflows/ │ ├── ci.yml │ ├── gpr_publish.yml │ └── npm_publish.yml ├── .gitignore ├── .husky/ │ └── pre-commit ├── .npmignore ├── Dockerfile ├── LICENSE ├── MCP_README.md ├── README.md ├── demo/ │ ├── README.md │ ├── mcp-client-demo.js │ └── memory-example.js ├── docs/ │ ├── .nojekyll │ ├── assets/ │ │ ├── highlight.css │ │ ├── main.js │ │ ├── search.js │ │ └── style.css │ ├── classes/ │ │ └── NseIndia.html │ ├── enums/ │ │ └── ApiList.html │ ├── index.html │ ├── interfaces/ │ │ ├── AllIndicesData.html │ │ ├── CircularsData.html │ │ ├── CommodityOptionChainData.html │ │ ├── CommodityRecords.html │ │ ├── DateRange.html │ │ ├── Datum.html │ │ ├── EquityCorporateInfo.html │ │ ├── EquityDetails.html │ │ ├── EquityHistoricalData.html │ │ ├── EquityHistoricalInfo.html │ │ ├── EquityInfo.html │ │ ├── EquityMaster.html │ │ ├── EquityMetadata.html │ │ ├── EquityOptionChainData.html │ │ ├── EquityOptionChainItem.html │ │ ├── EquityPreOpenMarket.html │ │ ├── EquityPriceInfo.html │ │ ├── EquitySecurityInfo.html │ │ ├── EquityTradeInfo.html │ │ ├── Filtered.html │ │ ├── GiftNifty.html │ │ ├── Glossary.html │ │ ├── Holiday.html │ │ ├── HolidaysBySegment.html │ │ ├── IndexDetails.html │ │ ├── IndexEquityInfo.html │ │ ├── IndexNamesData.html │ │ ├── IndexOptionChainData.html │ │ ├── IndexRecords.html │ │ ├── IndicativeNifty50.html │ │ ├── IntradayData.html │ │ ├── LatestCircularData.html │ │ ├── MarketCap.html │ │ ├── MarketState.html │ │ ├── MarketStatus.html │ │ ├── MarketTurnover.html │ │ ├── MergedDailyReportsData.html │ │ ├── OptionChainContractInfo.html │ │ ├── OptionsData.html │ │ ├── OptionsDetails.html │ │ ├── PreOpenDetails.html │ │ ├── PreOpenMarketData.html │ │ ├── SeriesData.html │ │ └── TechnicalIndicators.html │ └── modules.html ├── examples/ │ └── basic.js ├── jest.config.js ├── mcp-config.json ├── package.json ├── scripts/ │ └── setup-gpr.js ├── src/ │ ├── __snapshots__/ │ │ └── utils.spec.ts.snap │ ├── cli/ │ │ ├── @types/ │ │ │ ├── asciichart.d.ts │ │ │ └── ohlc.d.ts │ │ ├── api.ts │ │ └── index.ts │ ├── constants.ts │ ├── equity.graphql │ ├── helpers.spec.ts │ ├── helpers.ts │ ├── index.charting.spec.ts │ ├── index.spec.ts │ ├── index.ts │ ├── inputs.graphql │ ├── interface.ts │ ├── mcp/ │ │ ├── client/ │ │ │ └── mcp-client.ts │ │ ├── context-summarizer.ts │ │ ├── mcp-tools.ts │ │ ├── memory-manager.ts │ │ └── server/ │ │ ├── mcp-server-stdio.ts │ │ └── mcp-server.ts │ ├── root.graphql │ ├── root.resolver.ts │ ├── routes.ts │ ├── server.ts │ ├── stockIndex.graphql │ ├── swaggerDocOptions.ts │ ├── utils.spec.ts │ └── utils.ts └── tsconfig.json
SYMBOL INDEX (250 symbols across 14 files)
FILE: demo/mcp-client-demo.js
function log (line 28) | function log(message, color = colors.reset) {
function logSection (line 32) | function logSection(title) {
function logSubSection (line 38) | function logSubSection(title) {
function sleep (line 43) | async function sleep(ms) {
function demo1_BasicQuery (line 50) | async function demo1_BasicQuery() {
function demo2_SessionWithMemory (line 106) | async function demo2_SessionWithMemory() {
function demo3_TechnicalAnalysis (line 173) | async function demo3_TechnicalAnalysis() {
function demo4_InvestmentRecommendation (line 225) | async function demo4_InvestmentRecommendation() {
function demo5_MultiUserSessions (line 279) | async function demo5_MultiUserSessions() {
function demo6_ContextSummarization (line 357) | async function demo6_ContextSummarization() {
function demo7_ToolsAndConfig (line 432) | async function demo7_ToolsAndConfig() {
function runAllDemos (line 477) | async function runAllDemos() {
FILE: demo/memory-example.js
function log (line 21) | function log(message, color = colors.reset) {
function sleep (line 25) | async function sleep(ms) {
function runMemoryExample (line 29) | async function runMemoryExample() {
FILE: docs/assets/main.js
function G (line 3) | function G(t,e){ne.push({selector:e,constructor:t})}
method constructor (line 3) | constructor(){this.alwaysVisibleMember=null;this.createComponents(docume...
method createComponents (line 3) | createComponents(e){ne.forEach(r=>{e.querySelectorAll(r.selector).forEac...
method filterChanged (line 3) | filterChanged(){this.ensureFocusedElementVisible()}
method ensureActivePageVisible (line 3) | ensureActivePageVisible(){let e=document.querySelector(".tsd-navigation ...
method ensureFocusedElementVisible (line 3) | ensureFocusedElementVisible(){if(this.alwaysVisibleMember&&(this.alwaysV...
method listenForCodeCopies (line 3) | listenForCodeCopies(){document.querySelectorAll("pre > button").forEach(...
function de (line 3) | function de(){let t=document.getElementById("tsd-search");if(!t)return;l...
function Oe (line 3) | function Oe(t,e,r,n){r.addEventListener("input",ie(()=>{Re(t,e,r,n)},200...
function _e (line 3) | function _e(t,e){t.index||window.searchData&&(e.classList.remove("loadin...
function Re (line 3) | function Re(t,e,r,n){if(_e(n,t),!n.index||!n.data)return;e.textContent="...
function ue (line 3) | function ue(t,e){let r=t.querySelector(".current");if(!r)r=t.querySelect...
function Fe (line 3) | function Fe(t,e){let r=t.querySelector(".current");if(r||(r=t.querySelec...
function le (line 3) | function le(t,e){if(e==="")return t;let r=t.toLocaleLowerCase(),n=e.toLo...
function K (line 3) | function K(t){return t.replace(/[&<>"'"]/g,e=>Me[e])}
method constructor (line 3) | constructor(e){this.el=e.el,this.app=e.app}
method constructor (line 3) | constructor(r){super(r);this.className=this.el.dataset.toggle||"",this.e...
method setActive (line 3) | setActive(r){if(this.active==r)return;this.active=r,document.documentEle...
method onPointerUp (line 3) | onPointerUp(r){D||(this.setActive(!0),r.preventDefault())}
method onDocumentPointerDown (line 3) | onDocumentPointerDown(r){if(this.active){if(r.target.closest(".col-sideb...
method onDocumentPointerUp (line 3) | onDocumentPointerUp(r){if(!D&&this.active&&r.target.closest(".col-sideba...
method getItem (line 3) | getItem(){return null}
method setItem (line 3) | setItem(){}
method constructor (line 3) | constructor(r){super(r);this.key=`filter-${this.el.name}`,this.value=thi...
method fromLocalStorage (line 4) | fromLocalStorage(){let r=Q.getItem(this.key);return r?r==="true":this.el...
method setLocalStorage (line 4) | setLocalStorage(r){Q.setItem(this.key,r.toString()),this.value=r,this.ha...
method handleValueChange (line 4) | handleValueChange(){this.el.checked=this.value,document.documentElement....
method constructor (line 4) | constructor(r){super(r);this.summary=this.el.querySelector(".tsd-accordi...
method update (line 4) | update(){this.icon.style.transform=`rotate(${this.el.open?0:-90}deg)`,Q....
function ve (line 4) | function ve(t){let e=Q.getItem("tsd-theme")||"os";t.value=e,ye(e),t.addE...
function ye (line 4) | function ye(t){document.documentElement.dataset.theme=t}
FILE: src/cli/api.ts
function showIndexOverview (line 13) | async function showIndexOverview(): Promise<void> {
function showIndexDetails (line 47) | async function showIndexDetails(argv: any): Promise<void> {
function showMarketStatus (line 74) | async function showMarketStatus(): Promise<void> {
function showEquityDetails (line 84) | async function showEquityDetails(argv: any): Promise<void> {
function showHistorical (line 159) | async function showHistorical(argv: any): Promise<void> {
FILE: src/cli/index.ts
function startMCPServer (line 15) | function startMCPServer() {
FILE: src/constants.ts
constant API_RESPONSE_VALIDATION (line 1) | const API_RESPONSE_VALIDATION='API Response Validation'
constant IS_TYPE_STRICT (line 2) | const IS_TYPE_STRICT=false
FILE: src/index.ts
type ApiList (line 55) | enum ApiList {
class NseIndia (line 72) | class NseIndia {
method getNseCookies (line 95) | private async getNseCookies() {
method getChartingCookies (line 124) | private async getChartingCookies() {
method getData (line 165) | async getData(url: string, domain: 'nse' | 'charting' = 'nse'): Promis...
method getDataByEndpoint (line 240) | async getDataByEndpoint(apiEndpoint: string): Promise<any> {
method getEquityChartHistoricalData (line 255) | async getEquityChartHistoricalData(
method getEquitySymbolInfo (line 295) | async getEquitySymbolInfo(
method getAllStockSymbols (line 326) | async getAllStockSymbols(): Promise<string[]> {
method getEquityDetails (line 335) | getEquityDetails(symbol: string): Promise<EquityDetails> {
method getEquityTradeInfo (line 343) | getEquityTradeInfo(symbol: string): Promise<EquityTradeInfo> {
method getEquityCorporateInfo (line 353) | getEquityCorporateInfo(symbol: string): Promise<EquityCorporateInfo> {
method getEquityIntradayData (line 362) | async getEquityIntradayData(symbol: string): Promise<IntradayData> {
method getEquityHistoricalData (line 375) | async getEquityHistoricalData(symbol: string, range?: DateRange): Prom...
method getEquitySeries (line 407) | async getEquitySeries(symbol: string): Promise<SeriesData> {
method getEquityStockIndices (line 423) | getEquityStockIndices(index: string): Promise<IndexDetails> {
method getIndexIntradayData (line 431) | async getIndexIntradayData(index: string): Promise<IntradayData> {
method getIndexOptionChainContractInfo (line 446) | getIndexOptionChainContractInfo(indexSymbol: string): Promise<OptionCh...
method getIndexOptionChain (line 459) | async getIndexOptionChain(indexSymbol: string, expiry?: string): Promi...
method getEquityOptionChain (line 562) | getEquityOptionChain(symbol: string): Promise<EquityOptionChainData> {
method getCommodityOptionChain (line 574) | getCommodityOptionChain(symbol: string): Promise<CommodityOptionChainD...
method getGlossary (line 583) | getGlossary(): Promise<Glossary> {
method getTradingHolidays (line 591) | getTradingHolidays(): Promise<HolidaysBySegment> {
method getClearingHolidays (line 599) | getClearingHolidays(): Promise<HolidaysBySegment> {
method getMarketStatus (line 607) | getMarketStatus(): Promise<MarketStatus> {
method getMarketTurnover (line 615) | getMarketTurnover(): Promise<MarketTurnover> {
method getAllIndices (line 623) | getAllIndices(): Promise<AllIndicesData> {
method getIndexNames (line 631) | getIndexNames(): Promise<IndexNamesData> {
method getCirculars (line 639) | getCirculars(): Promise<CircularsData> {
method getLatestCirculars (line 647) | getLatestCirculars(): Promise<LatestCircularData> {
method getEquityMaster (line 655) | getEquityMaster(): Promise<EquityMaster> {
method getPreOpenMarketData (line 663) | getPreOpenMarketData(): Promise<PreOpenMarketData> {
method getMergedDailyReportsCapital (line 671) | getMergedDailyReportsCapital(): Promise<MergedDailyReportsData[]> {
method getMergedDailyReportsDerivatives (line 679) | getMergedDailyReportsDerivatives(): Promise<MergedDailyReportsData[]> {
method getMergedDailyReportsDebt (line 687) | getMergedDailyReportsDebt(): Promise<MergedDailyReportsData[]> {
method getTechnicalIndicators (line 698) | async getTechnicalIndicators(
FILE: src/interface.ts
type IntradayData (line 4) | interface IntradayData {
type ChartingSymbolInfo (line 15) | interface ChartingSymbolInfo {
type ChartingOHLCItem (line 28) | interface ChartingOHLCItem {
type ChartingOHLCResponse (line 40) | interface ChartingOHLCResponse {
type DateRange (line 48) | interface DateRange {
type EquityInfo (line 56) | interface EquityInfo {
type OptionChainContractInfo (line 85) | interface OptionChainContractInfo {
type EquityOptionChainData (line 93) | interface EquityOptionChainData {
type IndexOptionChainData (line 101) | interface IndexOptionChainData {
type CommodityOptionChainData (line 109) | interface CommodityOptionChainData {
type Records (line 116) | interface Records {
type IndexRecords (line 126) | interface IndexRecords extends Records {
type CommodityRecords (line 133) | interface CommodityRecords extends Records {
type Filtered (line 140) | interface Filtered {
type OptionsData (line 149) | interface OptionsData {
type EquityOptionChainItem (line 157) | interface EquityOptionChainItem {
type Datum (line 185) | interface Datum {
type OptionsDetails (line 196) | interface OptionsDetails {
type Underlying (line 225) | enum Underlying {
type EquityMetadata (line 233) | interface EquityMetadata {
type EquitySecurityInfo (line 250) | interface EquitySecurityInfo {
type EquityPriceInfo (line 269) | interface EquityPriceInfo {
type PreOpenDetails (line 302) | interface PreOpenDetails {
type EquityPreOpenMarket (line 312) | interface EquityPreOpenMarket {
type EquityDetails (line 332) | interface EquityDetails {
type EquityTradeInfo (line 354) | interface EquityTradeInfo {
type DirectoryDetails (line 397) | interface DirectoryDetails {
type EquityCorporateInfo (line 413) | interface EquityCorporateInfo {
type EquityHistoricalInfo (line 462) | interface EquityHistoricalInfo {
type EquityHistoricalData (line 483) | interface EquityHistoricalData {
type SeriesData (line 496) | interface SeriesData {
type IndexEquityInfo (line 505) | interface IndexEquityInfo {
type IndexDetails (line 538) | interface IndexDetails {
type GlossaryData (line 582) | interface GlossaryData {
type HolidayData (line 590) | interface HolidayData {
type MarketStatusData (line 602) | interface MarketStatusData {
type MarketTurnoverData (line 616) | interface MarketTurnoverData {
type AllIndicesData (line 628) | interface AllIndicesData {
type IndexNamesData (line 650) | interface IndexNamesData {
type CircularsData (line 658) | interface CircularsData {
type LatestCircularData (line 678) | interface LatestCircularData {
type EquityMasterData (line 696) | interface EquityMasterData {
type MarketDataPreOpenData (line 708) | interface MarketDataPreOpenData {
type MergedDailyReportsData (line 754) | interface MergedDailyReportsData {
type Glossary (line 765) | interface Glossary {
type Holiday (line 783) | interface Holiday {
type HolidaysBySegment (line 795) | interface HolidaysBySegment {
type MarketState (line 802) | interface MarketState {
type MarketCap (line 821) | interface MarketCap {
type IndicativeNifty50 (line 834) | interface IndicativeNifty50 {
type GiftNifty (line 851) | interface GiftNifty {
type MarketStatus (line 868) | interface MarketStatus {
type MarketTurnover (line 878) | interface MarketTurnover {
type IndexName (line 885) | interface IndexName {
type Circular (line 890) | interface Circular {
type IndexCategories (line 897) | interface IndexCategories {
type EquityMaster (line 904) | interface EquityMaster {
type PreOpenMarketData (line 911) | interface PreOpenMarketData {
type DailyReport (line 946) | interface DailyReport {
type TechnicalIndicators (line 967) | interface TechnicalIndicators {
FILE: src/mcp/client/mcp-client.ts
type MCPClientRequest (line 6) | interface MCPClientRequest {
type MCPClientResponse (line 20) | interface MCPClientResponse {
type MCPClientConfig (line 44) | interface MCPClientConfig {
class MCPClient (line 61) | class MCPClient {
method constructor (line 70) | constructor(config: MCPClientConfig = {}) {
method debugLog (line 98) | private debugLog(message: string, data?: any): void {
method setDebugLogging (line 112) | setDebugLogging(enabled: boolean): void {
method isDebugLoggingEnabled (line 119) | isDebugLoggingEnabled(): boolean {
method convertToolsToOpenAIFunctions (line 126) | private convertToolsToOpenAIFunctions(): OpenAI.Chat.Completions.ChatC...
method extractStockSymbols (line 137) | private extractStockSymbols(query: string): string[] {
method getBaseSystemPrompt (line 147) | private getBaseSystemPrompt(): string {
method processQuery (line 160) | async processQuery(request: MCPClientRequest): Promise<MCPClientRespon...
method executeFunctionCall (line 495) | private async executeFunctionCall(toolCall: OpenAI.Chat.Completions.Ch...
method shouldContinueIterating (line 512) | private shouldContinueIterating(message: any, currentIteration: number...
method inferIterationPurpose (line 565) | private inferIterationPurpose(tools: string[], iteration: number): str...
method buildFinalResponse (line 584) | private buildFinalResponse(
method updateUserPreferencesFromQuery (line 636) | private updateUserPreferencesFromQuery(sessionId: string, query: strin...
method getSessionInfo (line 700) | getSessionInfo(sessionId: string): any {
method updateUserPreferences (line 710) | updateUserPreferences(sessionId: string, preferences: Record<string, u...
method getConversationHistory (line 720) | getConversationHistory(sessionId: string, maxMessages?: number): Conve...
method getConversationHistoryWithSummarization (line 730) | async getConversationHistoryWithSummarization(
method clearSession (line 749) | clearSession(sessionId: string): void {
method exportSessionData (line 759) | exportSessionData(sessionId: string): any {
method needsContextSummarization (line 769) | async needsContextSummarization(sessionId: string, systemPrompt?: stri...
method getContextStats (line 779) | async getContextStats(sessionId: string, systemPrompt?: string): Promi...
method forceContextSummarization (line 794) | async forceContextSummarization(sessionId: string, systemPrompt?: stri...
method updateContextWindowConfig (line 804) | updateContextWindowConfig(config: Record<string, unknown>): void {
method getContextWindowConfig (line 814) | getContextWindowConfig(): any {
method cleanupExpiredSessions (line 824) | cleanupExpiredSessions(): void {
method getAvailableTools (line 838) | getAvailableTools(): any[] {
method getOpenAIFunctions (line 845) | getOpenAIFunctions(): OpenAI.Chat.Completions.ChatCompletionCreatePara...
method testConnection (line 852) | async testConnection(): Promise<boolean> {
method testConnectionWithMemory (line 868) | async testConnectionWithMemory(sessionId: string): Promise<boolean> {
method getConfig (line 890) | getConfig(): MCPClientConfig {
method isMemoryEnabled (line 897) | isMemoryEnabled(): boolean {
method isContextSummarizationEnabled (line 904) | isContextSummarizationEnabled(): boolean {
method getLastSummarization (line 911) | getLastSummarization(sessionId: string): any {
method getSummarizationHistory (line 919) | getSummarizationHistory(sessionId: string, limit?: number): any[] {
method getSummarizationSummary (line 927) | getSummarizationSummary(sessionId: string): any {
method getOpenAIMessages (line 935) | getOpenAIMessages(sessionId: string): any {
function createMCPClient (line 955) | function createMCPClient(config: MCPClientConfig): MCPClient {
FILE: src/mcp/context-summarizer.ts
type ContextSummary (line 3) | interface ContextSummary {
type ContextWindowConfig (line 13) | interface ContextWindowConfig {
type TokenCountResult (line 21) | interface TokenCountResult {
class ContextSummarizer (line 28) | class ContextSummarizer {
method constructor (line 32) | constructor(openai: OpenAI, config: Partial<ContextWindowConfig> = {}) {
method estimateTokenCount (line 47) | private estimateTokenCount(text: string | null | undefined): number {
method countTokens (line 59) | countTokens(messages: any[], systemPrompt: string): TokenCountResult {
method needsSummarization (line 86) | needsSummarization(messages: any[], systemPrompt: string): boolean {
method extractKeyInformation (line 101) | private extractKeyInformation(messages: any[]): {
method createContextSummary (line 150) | async createContextSummary(messages: any[]): Promise<ContextSummary> {
method optimizeContext (line 242) | async optimizeContext(messages: any[], systemPrompt: string, maxTokens...
method createSummarizedContext (line 318) | private async createSummarizedContext(
method getOptimalContext (line 389) | async getOptimalContext(
method updateConfig (line 438) | updateConfig(newConfig: Partial<ContextWindowConfig>): void {
method getConfig (line 445) | getConfig(): ContextWindowConfig {
FILE: src/mcp/mcp-tools.ts
function handleMCPToolCall (line 451) | async function handleMCPToolCall(
FILE: src/mcp/memory-manager.ts
type ConversationMessage (line 5) | interface ConversationMessage {
type UserSession (line 13) | interface UserSession {
type UserPreferences (line 23) | interface UserPreferences {
type SummarizationRecord (line 35) | interface SummarizationRecord {
type ContextData (line 45) | interface ContextData {
type MemoryConfig (line 60) | interface MemoryConfig {
class MemoryManager (line 69) | class MemoryManager {
method constructor (line 75) | constructor(config: Partial<MemoryConfig> = {}) {
method getOrCreateSession (line 106) | getOrCreateSession(sessionId: string, userId?: string): UserSession {
method addMessage (line 147) | addMessage(sessionId: string, message: ConversationMessage): void {
method updateRecentQueries (line 173) | private updateRecentQueries(sessionId: string, query: string): void {
method updateToolUsage (line 189) | private updateToolUsage(sessionId: string, tools: string[]): void {
method updateStockAccess (line 201) | updateStockAccess(sessionId: string, symbol: string): void {
method updatePreferences (line 212) | updatePreferences(sessionId: string, preferences: Partial<UserPreferen...
method updateMarketContext (line 223) | updateMarketContext(sessionId: string, marketData: Record<string, unkn...
method getConversationContext (line 237) | async getConversationContext(
method getConversationContextSync (line 314) | getConversationContextSync(sessionId: string, maxMessages = 10): Conve...
method getUserContextSummary (line 324) | getUserContextSummary(sessionId: string): string {
method getContextualSystemPrompt (line 365) | getContextualSystemPrompt(sessionId: string): string {
method cleanupExpiredSessions (line 388) | cleanupExpiredSessions(): void {
method saveMemoryToFile (line 403) | private saveMemoryToFile(): void {
method loadMemoryFromFile (line 422) | private loadMemoryFromFile(): void {
method getSessionStats (line 443) | getSessionStats(sessionId: string): any {
method exportSessionData (line 462) | exportSessionData(sessionId: string): any {
method clearSession (line 469) | clearSession(sessionId: string): void {
method needsContextSummarization (line 477) | async needsContextSummarization(sessionId: string, systemPrompt?: stri...
method getContextStats (line 488) | async getContextStats(sessionId: string, systemPrompt?: string): Promi...
method forceContextSummarization (line 520) | async forceContextSummarization(sessionId: string, systemPrompt?: stri...
method updateContextWindowConfig (line 540) | updateContextWindowConfig(config: Partial<ContextWindowConfig>): void {
method getContextWindowConfig (line 548) | getContextWindowConfig(): ContextWindowConfig {
method getLastSummarization (line 555) | getLastSummarization(sessionId: string): SummarizationRecord | null {
method getSummarizationHistory (line 563) | getSummarizationHistory(sessionId: string, limit?: number): Summarizat...
method getSummarizationSummary (line 576) | getSummarizationSummary(sessionId: string): {
FILE: src/mcp/server/mcp-server.ts
class MCPServer (line 8) | class MCPServer {
method constructor (line 14) | constructor() {
method setupStdinHandling (line 18) | private setupStdinHandling() {
method handleMessage (line 42) | private async handleMessage(message: string) {
method handleToolCall (line 150) | private async handleToolCall(params: any) {
method sendResponse (line 164) | private sendResponse(response: any) {
FILE: src/root.resolver.ts
type StringArrayFilter (line 6) | interface StringArrayFilter {
type ObjectFilter (line 17) | interface ObjectFilter {
function stringArrayFilter (line 21) | function stringArrayFilter(input: string[], filter: StringArrayFilter) {
function objectFilter (line 52) | function objectFilter(input: any, filterBy: string, filter: ObjectFilter) {
Condensed preview — 102 files, each showing path, character count, and a content snippet. Download the .json file or copy for the full structured content (2,098K chars).
[
{
"path": ".eslintignore",
"chars": 24,
"preview": "node_modules\nbuild\ndist\n"
},
{
"path": ".eslintrc",
"chars": 494,
"preview": "{\n \"root\": true,\n \"parser\": \"@typescript-eslint/parser\",\n \"plugins\": [\n \"@typescript-eslint\"\n ],\n "
},
{
"path": ".github/workflows/ci.yml",
"chars": 441,
"preview": "name: CI\non:\n push:\n schedule:\n - cron: '0 0 * * *'\njobs:\n build:\n name: Test & Build\n runs-on: ubuntu-lates"
},
{
"path": ".github/workflows/gpr_publish.yml",
"chars": 677,
"preview": "name: Publish Package (GitHub)\non:\n release:\n types: [created]\njobs:\n build:\n runs-on: ubuntu-latest\n steps:\n"
},
{
"path": ".github/workflows/npm_publish.yml",
"chars": 487,
"preview": "name: Publish Package (NPM)\non:\n release:\n types: [created]\njobs:\n build:\n runs-on: ubuntu-latest\n steps:\n "
},
{
"path": ".gitignore",
"chars": 1686,
"preview": "# Logs\nlogs\n*.log\nnpm-debug.log*\nyarn-debug.log*\nyarn-error.log*\nlerna-debug.log*\n\n# Diagnostic reports (https://nodejs."
},
{
"path": ".husky/pre-commit",
"chars": 69,
"preview": "#!/usr/bin/env sh\n. \"$(dirname -- \"$0\")/_/husky.sh\"\n\nnpx lint-staged\n"
},
{
"path": ".npmignore",
"chars": 129,
"preview": "src/\n.github/\njest.config.js\ntsconfig.json\nscripts/\ndocs/\nexamples/\n.eslintrc\n.eslintignore\n.gitignore\n*.map\nDockerfile\n"
},
{
"path": "Dockerfile",
"chars": 222,
"preview": "FROM node:14\nWORKDIR /app\nCOPY src/ src/\nCOPY examples/ examples/\nCOPY package.json ./\nCOPY yarn.lock ./\nCOPY tsconfig.j"
},
{
"path": "LICENSE",
"chars": 1070,
"preview": "MIT License\n\nCopyright (c) 2020 Hi! ImCodeMan\n\nPermission is hereby granted, free of charge, to any person obtaining a c"
},
{
"path": "MCP_README.md",
"chars": 14618,
"preview": "# NSE India MCP Server\n\nThis is a Model Context Protocol (MCP) server that exposes all the functions from the NSE India "
},
{
"path": "README.md",
"chars": 16440,
"preview": "\n[](https://nodei.co/npm/stock-nse-india/)\n\n# National Stock Exchange - "
},
{
"path": "demo/README.md",
"chars": 9686,
"preview": "# MCP Client Demo - NSE India Stock Market\n\nComplete demonstration of the MCP (Model Context Protocol) Client with **mem"
},
{
"path": "demo/mcp-client-demo.js",
"chars": 17408,
"preview": "/**\n * MCP Client Demo - Comprehensive Examples\n * \n * This demo showcases various features of the MCP Client including:"
},
{
"path": "demo/memory-example.js",
"chars": 8534,
"preview": "/**\n * Memory and Summarization Example\n * \n * This example demonstrates the power of memory and context summarization\n "
},
{
"path": "docs/.nojekyll",
"chars": 143,
"preview": "TypeDoc added this file to prevent GitHub Pages from using Jekyll. You can turn off this behavior by setting the `github"
},
{
"path": "docs/assets/highlight.css",
"chars": 2560,
"preview": ":root {\n --light-hl-0: #795E26;\n --dark-hl-0: #DCDCAA;\n --light-hl-1: #000000;\n --dark-hl-1: #D4D4D4;\n --"
},
{
"path": "docs/assets/main.js",
"chars": 40009,
"preview": "\"use strict\";\n\"use strict\";(()=>{var Se=Object.create;var re=Object.defineProperty;var we=Object.getOwnPropertyDescripto"
},
{
"path": "docs/assets/search.js",
"chars": 134734,
"preview": "window.searchData = JSON.parse(\"{\\\"rows\\\":[{\\\"kind\\\":8,\\\"name\\\":\\\"ApiList\\\",\\\"url\\\":\\\"enums/ApiList.html\\\",\\\"classes\\\":\\"
},
{
"path": "docs/assets/style.css",
"chars": 34121,
"preview": ":root {\n /* Light */\n --light-color-background: #f2f4f8;\n --light-color-background-secondary: #eff0f1;\n --li"
},
{
"path": "docs/classes/NseIndia.html",
"chars": 97457,
"preview": "<!DOCTYPE html><html class=\"default\" lang=\"en\"><head><meta charSet=\"utf-8\"/><meta http-equiv=\"x-ua-compatible\" content=\""
},
{
"path": "docs/enums/ApiList.html",
"chars": 32559,
"preview": "<!DOCTYPE html><html class=\"default\" lang=\"en\"><head><meta charSet=\"utf-8\"/><meta http-equiv=\"x-ua-compatible\" content=\""
},
{
"path": "docs/index.html",
"chars": 59039,
"preview": "<!DOCTYPE html><html class=\"default\" lang=\"en\"><head><meta charSet=\"utf-8\"/><meta http-equiv=\"x-ua-compatible\" content=\""
},
{
"path": "docs/interfaces/AllIndicesData.html",
"chars": 23918,
"preview": "<!DOCTYPE html><html class=\"default\" lang=\"en\"><head><meta charSet=\"utf-8\"/><meta http-equiv=\"x-ua-compatible\" content=\""
},
{
"path": "docs/interfaces/CircularsData.html",
"chars": 24333,
"preview": "<!DOCTYPE html><html class=\"default\" lang=\"en\"><head><meta charSet=\"utf-8\"/><meta http-equiv=\"x-ua-compatible\" content=\""
},
{
"path": "docs/interfaces/CommodityOptionChainData.html",
"chars": 19624,
"preview": "<!DOCTYPE html><html class=\"default\" lang=\"en\"><head><meta charSet=\"utf-8\"/><meta http-equiv=\"x-ua-compatible\" content=\""
},
{
"path": "docs/interfaces/CommodityRecords.html",
"chars": 22936,
"preview": "<!DOCTYPE html><html class=\"default\" lang=\"en\"><head><meta charSet=\"utf-8\"/><meta http-equiv=\"x-ua-compatible\" content=\""
},
{
"path": "docs/interfaces/DateRange.html",
"chars": 19196,
"preview": "<!DOCTYPE html><html class=\"default\" lang=\"en\"><head><meta charSet=\"utf-8\"/><meta http-equiv=\"x-ua-compatible\" content=\""
},
{
"path": "docs/interfaces/Datum.html",
"chars": 22363,
"preview": "<!DOCTYPE html><html class=\"default\" lang=\"en\"><head><meta charSet=\"utf-8\"/><meta http-equiv=\"x-ua-compatible\" content=\""
},
{
"path": "docs/interfaces/EquityCorporateInfo.html",
"chars": 37962,
"preview": "<!DOCTYPE html><html class=\"default\" lang=\"en\"><head><meta charSet=\"utf-8\"/><meta http-equiv=\"x-ua-compatible\" content=\""
},
{
"path": "docs/interfaces/EquityDetails.html",
"chars": 28188,
"preview": "<!DOCTYPE html><html class=\"default\" lang=\"en\"><head><meta charSet=\"utf-8\"/><meta http-equiv=\"x-ua-compatible\" content=\""
},
{
"path": "docs/interfaces/EquityHistoricalData.html",
"chars": 21255,
"preview": "<!DOCTYPE html><html class=\"default\" lang=\"en\"><head><meta charSet=\"utf-8\"/><meta http-equiv=\"x-ua-compatible\" content=\""
},
{
"path": "docs/interfaces/EquityHistoricalInfo.html",
"chars": 33099,
"preview": "<!DOCTYPE html><html class=\"default\" lang=\"en\"><head><meta charSet=\"utf-8\"/><meta http-equiv=\"x-ua-compatible\" content=\""
},
{
"path": "docs/interfaces/EquityInfo.html",
"chars": 37906,
"preview": "<!DOCTYPE html><html class=\"default\" lang=\"en\"><head><meta charSet=\"utf-8\"/><meta http-equiv=\"x-ua-compatible\" content=\""
},
{
"path": "docs/interfaces/EquityMaster.html",
"chars": 15829,
"preview": "<!DOCTYPE html><html class=\"default\" lang=\"en\"><head><meta charSet=\"utf-8\"/><meta http-equiv=\"x-ua-compatible\" content=\""
},
{
"path": "docs/interfaces/EquityMetadata.html",
"chars": 28251,
"preview": "<!DOCTYPE html><html class=\"default\" lang=\"en\"><head><meta charSet=\"utf-8\"/><meta http-equiv=\"x-ua-compatible\" content=\""
},
{
"path": "docs/interfaces/EquityOptionChainData.html",
"chars": 19424,
"preview": "<!DOCTYPE html><html class=\"default\" lang=\"en\"><head><meta charSet=\"utf-8\"/><meta http-equiv=\"x-ua-compatible\" content=\""
},
{
"path": "docs/interfaces/EquityOptionChainItem.html",
"chars": 39546,
"preview": "<!DOCTYPE html><html class=\"default\" lang=\"en\"><head><meta charSet=\"utf-8\"/><meta http-equiv=\"x-ua-compatible\" content=\""
},
{
"path": "docs/interfaces/EquityPreOpenMarket.html",
"chars": 29470,
"preview": "<!DOCTYPE html><html class=\"default\" lang=\"en\"><head><meta charSet=\"utf-8\"/><meta http-equiv=\"x-ua-compatible\" content=\""
},
{
"path": "docs/interfaces/EquityPriceInfo.html",
"chars": 38333,
"preview": "<!DOCTYPE html><html class=\"default\" lang=\"en\"><head><meta charSet=\"utf-8\"/><meta http-equiv=\"x-ua-compatible\" content=\""
},
{
"path": "docs/interfaces/EquitySecurityInfo.html",
"chars": 28580,
"preview": "<!DOCTYPE html><html class=\"default\" lang=\"en\"><head><meta charSet=\"utf-8\"/><meta http-equiv=\"x-ua-compatible\" content=\""
},
{
"path": "docs/interfaces/EquityTradeInfo.html",
"chars": 38925,
"preview": "<!DOCTYPE html><html class=\"default\" lang=\"en\"><head><meta charSet=\"utf-8\"/><meta http-equiv=\"x-ua-compatible\" content=\""
},
{
"path": "docs/interfaces/Filtered.html",
"chars": 20242,
"preview": "<!DOCTYPE html><html class=\"default\" lang=\"en\"><head><meta charSet=\"utf-8\"/><meta http-equiv=\"x-ua-compatible\" content=\""
},
{
"path": "docs/interfaces/GiftNifty.html",
"chars": 27836,
"preview": "<!DOCTYPE html><html class=\"default\" lang=\"en\"><head><meta charSet=\"utf-8\"/><meta http-equiv=\"x-ua-compatible\" content=\""
},
{
"path": "docs/interfaces/Glossary.html",
"chars": 24449,
"preview": "<!DOCTYPE html><html class=\"default\" lang=\"en\"><head><meta charSet=\"utf-8\"/><meta http-equiv=\"x-ua-compatible\" content=\""
},
{
"path": "docs/interfaces/Holiday.html",
"chars": 23235,
"preview": "<!DOCTYPE html><html class=\"default\" lang=\"en\"><head><meta charSet=\"utf-8\"/><meta http-equiv=\"x-ua-compatible\" content=\""
},
{
"path": "docs/interfaces/HolidaysBySegment.html",
"chars": 15893,
"preview": "<!DOCTYPE html><html class=\"default\" lang=\"en\"><head><meta charSet=\"utf-8\"/><meta http-equiv=\"x-ua-compatible\" content=\""
},
{
"path": "docs/interfaces/IndexDetails.html",
"chars": 38441,
"preview": "<!DOCTYPE html><html class=\"default\" lang=\"en\"><head><meta charSet=\"utf-8\"/><meta http-equiv=\"x-ua-compatible\" content=\""
},
{
"path": "docs/interfaces/IndexEquityInfo.html",
"chars": 44884,
"preview": "<!DOCTYPE html><html class=\"default\" lang=\"en\"><head><meta charSet=\"utf-8\"/><meta http-equiv=\"x-ua-compatible\" content=\""
},
{
"path": "docs/interfaces/IndexNamesData.html",
"chars": 19399,
"preview": "<!DOCTYPE html><html class=\"default\" lang=\"en\"><head><meta charSet=\"utf-8\"/><meta http-equiv=\"x-ua-compatible\" content=\""
},
{
"path": "docs/interfaces/IndexOptionChainData.html",
"chars": 19584,
"preview": "<!DOCTYPE html><html class=\"default\" lang=\"en\"><head><meta charSet=\"utf-8\"/><meta http-equiv=\"x-ua-compatible\" content=\""
},
{
"path": "docs/interfaces/IndexRecords.html",
"chars": 22889,
"preview": "<!DOCTYPE html><html class=\"default\" lang=\"en\"><head><meta charSet=\"utf-8\"/><meta http-equiv=\"x-ua-compatible\" content=\""
},
{
"path": "docs/interfaces/IndicativeNifty50.html",
"chars": 28713,
"preview": "<!DOCTYPE html><html class=\"default\" lang=\"en\"><head><meta charSet=\"utf-8\"/><meta http-equiv=\"x-ua-compatible\" content=\""
},
{
"path": "docs/interfaces/IntradayData.html",
"chars": 21520,
"preview": "<!DOCTYPE html><html class=\"default\" lang=\"en\"><head><meta charSet=\"utf-8\"/><meta http-equiv=\"x-ua-compatible\" content=\""
},
{
"path": "docs/interfaces/LatestCircularData.html",
"chars": 22453,
"preview": "<!DOCTYPE html><html class=\"default\" lang=\"en\"><head><meta charSet=\"utf-8\"/><meta http-equiv=\"x-ua-compatible\" content=\""
},
{
"path": "docs/interfaces/MarketCap.html",
"chars": 24809,
"preview": "<!DOCTYPE html><html class=\"default\" lang=\"en\"><head><meta charSet=\"utf-8\"/><meta http-equiv=\"x-ua-compatible\" content=\""
},
{
"path": "docs/interfaces/MarketState.html",
"chars": 30678,
"preview": "<!DOCTYPE html><html class=\"default\" lang=\"en\"><head><meta charSet=\"utf-8\"/><meta http-equiv=\"x-ua-compatible\" content=\""
},
{
"path": "docs/interfaces/MarketStatus.html",
"chars": 21566,
"preview": "<!DOCTYPE html><html class=\"default\" lang=\"en\"><head><meta charSet=\"utf-8\"/><meta http-equiv=\"x-ua-compatible\" content=\""
},
{
"path": "docs/interfaces/MarketTurnover.html",
"chars": 21554,
"preview": "<!DOCTYPE html><html class=\"default\" lang=\"en\"><head><meta charSet=\"utf-8\"/><meta http-equiv=\"x-ua-compatible\" content=\""
},
{
"path": "docs/interfaces/MergedDailyReportsData.html",
"chars": 22095,
"preview": "<!DOCTYPE html><html class=\"default\" lang=\"en\"><head><meta charSet=\"utf-8\"/><meta http-equiv=\"x-ua-compatible\" content=\""
},
{
"path": "docs/interfaces/OptionChainContractInfo.html",
"chars": 19575,
"preview": "<!DOCTYPE html><html class=\"default\" lang=\"en\"><head><meta charSet=\"utf-8\"/><meta http-equiv=\"x-ua-compatible\" content=\""
},
{
"path": "docs/interfaces/OptionsData.html",
"chars": 19276,
"preview": "<!DOCTYPE html><html class=\"default\" lang=\"en\"><head><meta charSet=\"utf-8\"/><meta http-equiv=\"x-ua-compatible\" content=\""
},
{
"path": "docs/interfaces/OptionsDetails.html",
"chars": 43247,
"preview": "<!DOCTYPE html><html class=\"default\" lang=\"en\"><head><meta charSet=\"utf-8\"/><meta http-equiv=\"x-ua-compatible\" content=\""
},
{
"path": "docs/interfaces/PreOpenDetails.html",
"chars": 21219,
"preview": "<!DOCTYPE html><html class=\"default\" lang=\"en\"><head><meta charSet=\"utf-8\"/><meta http-equiv=\"x-ua-compatible\" content=\""
},
{
"path": "docs/interfaces/PreOpenMarketData.html",
"chars": 37896,
"preview": "<!DOCTYPE html><html class=\"default\" lang=\"en\"><head><meta charSet=\"utf-8\"/><meta http-equiv=\"x-ua-compatible\" content=\""
},
{
"path": "docs/interfaces/SeriesData.html",
"chars": 18340,
"preview": "<!DOCTYPE html><html class=\"default\" lang=\"en\"><head><meta charSet=\"utf-8\"/><meta http-equiv=\"x-ua-compatible\" content=\""
},
{
"path": "docs/interfaces/TechnicalIndicators.html",
"chars": 38441,
"preview": "<!DOCTYPE html><html class=\"default\" lang=\"en\"><head><meta charSet=\"utf-8\"/><meta http-equiv=\"x-ua-compatible\" content=\""
},
{
"path": "docs/modules.html",
"chars": 24376,
"preview": "<!DOCTYPE html><html class=\"default\" lang=\"en\"><head><meta charSet=\"utf-8\"/><meta http-equiv=\"x-ua-compatible\" content=\""
},
{
"path": "examples/basic.js",
"chars": 198,
"preview": "// import { NseIndia } from 'stock-nse-india'\n\nconst {\n NseIndia\n} = require('../build/index')\n\nconst nse = new NseIn"
},
{
"path": "jest.config.js",
"chars": 336,
"preview": "module.exports = {\n preset: 'ts-jest',\n testEnvironment: 'node',\n roots: ['<rootDir>/src'],\n transform: {\n '^.+\\\\"
},
{
"path": "mcp-config.json",
"chars": 351,
"preview": "{\n \"mcpServers\": {\n \"nse-india-stdio\": {\n \"command\": \"node\",\n \"args\": [\"build/mcp/server/mcp-server-stdio."
},
{
"path": "package.json",
"chars": 3770,
"preview": "{\n \"name\": \"stock-nse-india\",\n \"version\": \"1.3.0\",\n \"description\": \"This package will help us to get equity/index det"
},
{
"path": "scripts/setup-gpr.js",
"chars": 216,
"preview": "const fs = require('fs')\nconst {\n join\n} = require('path')\n\nconst pkg = require('../package.json')\n\npkg.name = `@hi-i"
},
{
"path": "src/__snapshots__/utils.spec.ts.snap",
"chars": 936,
"preview": "// Jest Snapshot v1, https://goo.gl/fbAQLP\n\nexports[`Utils getDataSchema for date value having typeStrict:false 1`] = `\n"
},
{
"path": "src/cli/@types/asciichart.d.ts",
"chars": 27,
"preview": "declare module 'asciichart'"
},
{
"path": "src/cli/@types/ohlc.d.ts",
"chars": 21,
"preview": "declare module 'ohlc'"
},
{
"path": "src/cli/api.ts",
"chars": 7628,
"preview": "/* eslint-disable @typescript-eslint/explicit-module-boundary-types */\n/* eslint-disable no-console */\nimport { NseIndia"
},
{
"path": "src/cli/index.ts",
"chars": 2471,
"preview": "#!/usr/bin/env node\n/* eslint-disable no-console */\n\nimport {\n showEquityDetails,\n showHistorical,\n showMarketS"
},
{
"path": "src/constants.ts",
"chars": 97,
"preview": "export const API_RESPONSE_VALIDATION='API Response Validation'\nexport const IS_TYPE_STRICT=false\n"
},
{
"path": "src/equity.graphql",
"chars": 833,
"preview": "type Equity {\n symbol: String!\n details: EqutiyDetail\n}\n\ntype EqutiyDetail {\n info: EquityInfo\n metadata: EquityMeta"
},
{
"path": "src/helpers.spec.ts",
"chars": 941,
"preview": "import {\n getGainersAndLosersByIndex,\n getMostActiveEquities\n} from './helpers'\n\ndescribe('Helpers', () => {\n t"
},
{
"path": "src/helpers.ts",
"chars": 7573,
"preview": "import { NseIndia } from './index'\nimport { IndexEquityInfo, TechnicalIndicators, EquityHistoricalInfo } from './interfa"
},
{
"path": "src/index.charting.spec.ts",
"chars": 3261,
"preview": "import axios from 'axios'\nimport { NseIndia } from './index'\n\njest.mock('axios')\n\ndescribe('NseIndia charting API tests'"
},
{
"path": "src/index.spec.ts",
"chars": 17086,
"preview": "import { NseIndia, ApiList } from \"./index\";\n\njest.setTimeout(999999)\n\ndescribe('Class: NseIndia', () => {\n const sym"
},
{
"path": "src/index.ts",
"chars": 28039,
"preview": "import axios from 'axios'\nimport UserAgent from 'user-agents'\nimport { getDateRangeChunks, sleep } from './utils'\nimport"
},
{
"path": "src/inputs.graphql",
"chars": 191,
"preview": "input StringArrayFilter {\n startsWith: String\n regex: String\n in: [String]\n nin: [String]\n eq: String,\n neq: Strin"
},
{
"path": "src/interface.ts",
"chars": 22459,
"preview": "/**\n * Intraday data for equity or index\n */\nexport interface IntradayData {\n identifier: string\n name: string\n "
},
{
"path": "src/mcp/client/mcp-client.ts",
"chars": 32309,
"preview": "import OpenAI from 'openai'\nimport { NseIndia } from '../../index.js'\nimport { mcpTools, handleMCPToolCall } from '../mc"
},
{
"path": "src/mcp/context-summarizer.ts",
"chars": 14486,
"preview": "import OpenAI from 'openai'\n\nexport interface ContextSummary {\n summary: string\n keyPoints: string[]\n importantStocks"
},
{
"path": "src/mcp/mcp-tools.ts",
"chars": 28190,
"preview": "import type { NseIndia } from '../index.js'\nimport { getGainersAndLosersByIndex, getMostActiveEquities } from '../helper"
},
{
"path": "src/mcp/memory-manager.ts",
"chars": 19046,
"preview": "import * as fs from 'fs'\nimport { ContextSummarizer, ContextSummary, ContextWindowConfig } from './context-summarizer'\ni"
},
{
"path": "src/mcp/server/mcp-server-stdio.ts",
"chars": 138,
"preview": "import { MCPServer } from \"./mcp-server\"\n\n// Start the server\nconst server = new MCPServer()\nconsole.error('NSE India MC"
},
{
"path": "src/mcp/server/mcp-server.ts",
"chars": 4280,
"preview": "import { NseIndia } from '../../index.js'\nimport { mcpTools, handleMCPToolCall } from '../mcp-tools.js'\n\n// Initialize N"
},
{
"path": "src/root.graphql",
"chars": 354,
"preview": "#import Equity from 'equity.graphql'\n#import StringArrayFilter from 'inputs.graphql'\n#import ObjectFilter from 'inputs.g"
},
{
"path": "src/root.resolver.ts",
"chars": 2460,
"preview": "import { ApiList, NseIndia } from './index'\nimport { EquityDetails } from './interface'\n\nconst nseIndia = new NseIndia()"
},
{
"path": "src/routes.ts",
"chars": 78575,
"preview": "import { Router } from 'express'\nimport { openapiSpecification } from './swaggerDocOptions'\nimport { NseIndia, ApiList }"
},
{
"path": "src/server.ts",
"chars": 3554,
"preview": "/* eslint-disable no-console */\nimport express from 'express'\nimport http from 'http';\nimport swaggerUi from 'swagger-ui"
},
{
"path": "src/stockIndex.graphql",
"chars": 246,
"preview": "type Index {\n key: String\n index: String\n indexSymbol: String\n last: Float\n variation: Float\n percentC"
},
{
"path": "src/swaggerDocOptions.ts",
"chars": 1811,
"preview": "import swaggerJsDoc from 'swagger-jsdoc'\n\nconst port = process.env.PORT || 3000\nconst hostUrl = process.env.HOST_URL || "
},
{
"path": "src/utils.spec.ts",
"chars": 643,
"preview": "import { getDataSchema } from './utils'\ndescribe('Utils', () => {\n const data={\n a: 1,\n b: 'b',\n "
},
{
"path": "src/utils.ts",
"chars": 2116,
"preview": "import { extendMoment } from 'moment-range';\nimport * as Moment from 'moment';\n\nconst moment = extendMoment(Moment);\n/**"
},
{
"path": "tsconfig.json",
"chars": 6177,
"preview": "{\n \"compilerOptions\": {\n /* Basic Options */\n // \"incremental\": true, /* Enable incremental com"
}
]
About this extraction
This page contains the full source code of the hi-imcodeman/stock-nse-india GitHub repository, extracted and formatted as plain text for AI agents and large language models (LLMs). The extraction includes 102 files (1.9 MB), approximately 638.4k tokens, and a symbol index with 250 extracted functions, classes, methods, constants, and types. Use this with OpenClaw, Claude, ChatGPT, Cursor, Windsurf, or any other AI tool that accepts text input. You can copy the full output to your clipboard or download it as a .txt file.
Extracted by GitExtract — free GitHub repo to text converter for AI. Built by Nikandr Surkov.