openfigi-sdk 1.0.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +19 -0
- package/README.md +239 -0
- package/dist/index.cjs +434 -0
- package/dist/index.cjs.map +1 -0
- package/dist/index.d.cts +352 -0
- package/dist/index.d.ts +352 -0
- package/dist/index.js +405 -0
- package/dist/index.js.map +1 -0
- package/package.json +79 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/utils/errors.ts","../src/utils/helpers.ts","../src/validators/index.ts","../src/client/client.ts","../src/utils/validators.ts"],"names":["z","ky","mapping","validation","mappingSingle","searchByISIN","searchByCUSIP","searchBySEDOL","searchByTicker","searchByBloombergId","getRateLimitInfo"],"mappings":"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","file":"index.cjs","sourcesContent":["export class OpenFigiError extends Error {\n constructor(\n message: string,\n public statusCode?: number,\n public response?: unknown\n ) {\n super(message)\n this.name = 'OpenFigiError'\n }\n}\n\nexport class RateLimitError extends OpenFigiError {\n constructor(\n message: string,\n public retryAfter?: number,\n statusCode?: number\n ) {\n super(message, statusCode)\n this.name = 'RateLimitError'\n }\n}\n\nexport class ValidationError extends OpenFigiError {\n constructor(\n message: string,\n public errors?: unknown\n ) {\n super(message)\n this.name = 'ValidationError'\n }\n}\n","export function sleep(ms: number): Promise<void> {\n return new Promise((resolve) => setTimeout(resolve, ms))\n}\n\nexport function parseRateLimitHeaders(headers: Headers): {\n limit?: number\n remaining?: number\n reset?: Date\n} {\n const limit = headers.get('x-ratelimit-limit')\n const remaining = headers.get('x-ratelimit-remaining')\n const reset = headers.get('x-ratelimit-reset')\n\n return {\n limit: limit ? parseInt(limit, 10) : undefined,\n remaining: remaining ? parseInt(remaining, 10) : undefined,\n reset: reset ? new Date(parseInt(reset, 10) * 1000) : undefined,\n }\n}\n\nexport function exponentialBackoff(\n attempt: number,\n baseDelay: number = 1000,\n maxDelay: number = 30000\n): number {\n const delay = Math.min(baseDelay * 2 ** attempt, maxDelay)\n const jitter = Math.random() * 0.1 * delay\n return Math.floor(delay + jitter)\n}\n","import { z } from 'zod'\n\nexport const IdTypeSchema = z.enum([\n 'ID_ISIN',\n 'ID_BB_UNIQUE',\n 'ID_SEDOL',\n 'ID_COMMON',\n 'ID_WERTPAPIER',\n 'ID_CUSIP',\n 'ID_BB',\n 'ID_ITALY',\n 'ID_EXCH_SYMBOL',\n 'ID_FULL_EXCHANGE_SYMBOL',\n 'COMPOSITE_ID_BB_GLOBAL',\n 'ID_BB_GLOBAL_SHARE_CLASS_LEVEL',\n 'ID_BB_GLOBAL',\n 'ID_BB_SEC_NUM_DES',\n 'ID_BB_SEC_NUM',\n 'ID_CINS',\n 'ID_BELGIUM',\n 'ID_DENMARK',\n 'ID_FRANCE',\n 'ID_JAPAN',\n 'ID_LUXEMBOURG',\n 'ID_NETHERLANDS',\n 'ID_POLAND',\n 'ID_PORTUGAL',\n 'ID_SWEDEN',\n 'ID_SHORT_CODE',\n])\n\nexport const SecurityTypeSchema = z.enum([\n 'Common Stock',\n 'Preference',\n 'ADR',\n 'Open-End Fund',\n 'Closed-End Fund',\n 'ETF',\n 'ETN',\n 'Unit',\n 'Mutual Fund',\n 'Money Market',\n 'Commodity',\n 'Currency',\n 'Option',\n 'Index',\n])\n\nexport const MarketSectorSchema = z.enum([\n 'All',\n 'Comdty',\n 'Curncy',\n 'Equity',\n 'Govt',\n 'Corp',\n 'Index',\n 'Money',\n 'Mtge',\n 'Muni',\n 'Pref',\n])\n\nexport const MappingRequestSchema = z.object({\n idType: IdTypeSchema,\n idValue: z.string().min(1),\n exchCode: z.string().optional(),\n micCode: z.string().optional(),\n currency: z.string().length(3).optional(),\n marketSecDes: MarketSectorSchema.optional(),\n securityType: SecurityTypeSchema.optional(),\n securityType2: z.string().optional(),\n includeUnlistedEquities: z.boolean().optional(),\n optionType: z.enum(['Put', 'Call']).optional(),\n strike: z.array(z.number()).optional(),\n contractSize: z.number().optional(),\n coupon: z.array(z.number()).optional(),\n expiration: z.array(z.number()).optional(),\n maturity: z.array(z.number()).optional(),\n stateCode: z.string().length(2).optional(),\n})\n\nexport const FigiResultSchema = z.object({\n figi: z.string(),\n securityType: SecurityTypeSchema.optional(),\n marketSector: MarketSectorSchema.optional(),\n ticker: z.string().optional(),\n name: z.string().optional(),\n exchCode: z.string().optional(),\n shareClassFIGI: z.string().optional(),\n compositeFIGI: z.string().optional(),\n securityType2: z.string().optional(),\n securityDescription: z.string().optional(),\n metadata: z.string().optional(),\n})\n\nexport const MappingResponseSchema = z.object({\n data: z.array(FigiResultSchema).optional(),\n warning: z.string().optional(),\n error: z.string().optional(),\n})\n\nexport const ApiErrorSchema = z.object({\n error: z.string(),\n message: z.string().optional(),\n statusCode: z.number().optional(),\n})\n\nexport const ClientConfigSchema = z.object({\n apiKey: z.string().optional(),\n baseUrl: z.string().url().optional(),\n timeout: z.number().positive().optional(),\n retryLimit: z.number().min(0).max(10).optional(),\n retryDelay: z.number().positive().optional(),\n userAgent: z.string().optional(),\n})\n","import ky, { type HTTPError, type KyInstance } from 'ky'\nimport type { ClientConfig, MappingRequest, MappingResponse, RateLimitInfo } from '../types'\nimport { OpenFigiError, RateLimitError, ValidationError } from '../utils/errors'\nimport { exponentialBackoff, parseRateLimitHeaders, sleep } from '../utils/helpers'\nimport { ClientConfigSchema, MappingRequestSchema, MappingResponseSchema } from '../validators'\n\nconst DEFAULT_CONFIG: Required<ClientConfig> = {\n apiKey: '',\n baseUrl: 'https://api.openfigi.com',\n timeout: 30000,\n retryLimit: 3,\n retryDelay: 1000,\n userAgent: '@openfigi/sdk',\n}\n\nlet currentRateLimitInfo: RateLimitInfo | undefined\nlet debugMode = false\n\n/**\n * Enable or disable debug logging\n * @param enabled - Whether to enable debug mode\n */\nexport const setDebugMode = (enabled: boolean) => {\n debugMode = enabled\n}\n\nconst log = (level: 'info' | 'warn' | 'error', message: string, ...args: unknown[]) => {\n if (!debugMode) return\n const prefix = `[@openfigi/sdk] [${level.toUpperCase()}]`\n console[level](prefix, message, ...args)\n}\n\nconst createHttpClient = (config: Required<ClientConfig>): KyInstance => {\n return ky.create({\n prefixUrl: config.baseUrl,\n timeout: config.timeout,\n headers: {\n 'Content-Type': 'application/json',\n 'User-Agent': config.userAgent,\n ...(config.apiKey && { 'X-OPENFIGI-APIKEY': config.apiKey }),\n },\n retry: {\n limit: config.retryLimit,\n methods: ['get', 'post'],\n statusCodes: [408, 413, 429, 500, 502, 503, 504],\n },\n hooks: {\n beforeRequest: [\n (request) => {\n log('info', `Request: ${request.method} ${request.url}`)\n },\n ],\n beforeRetry: [\n async ({ error, retryCount }) => {\n const delay = exponentialBackoff(retryCount, config.retryDelay)\n log('warn', `Retry attempt ${retryCount} after ${delay}ms`, error.message)\n await sleep(delay)\n },\n ],\n afterResponse: [\n (_request, _options, response) => {\n const { limit, remaining, reset } = parseRateLimitHeaders(response.headers)\n if (limit !== undefined && remaining !== undefined && reset) {\n currentRateLimitInfo = { limit, remaining, reset }\n log('info', `Rate limit: ${remaining}/${limit} (resets: ${reset.toISOString()})`)\n }\n log('info', `Response: ${response.status} ${response.statusText}`)\n return response\n },\n ],\n },\n })\n}\n\n/**\n * Creates an OpenFIGI client with custom configuration\n *\n * @param config - Client configuration options\n * @returns An OpenFIGI client instance with all available methods\n *\n * @example\n * ```typescript\n * const client = createClient({\n * apiKey: 'your-api-key',\n * timeout: 60000\n * })\n * ```\n */\nexport const createClient = (config: ClientConfig = {}) => {\n const validation = ClientConfigSchema.safeParse(config)\n if (!validation.success) {\n const errors = validation.error.issues\n .map((e) => `${e.path.join('.')}: ${e.message}`)\n .join(', ')\n throw new ValidationError(`Invalid client configuration: ${errors}`, validation.error)\n }\n\n const finalConfig = { ...DEFAULT_CONFIG, ...config }\n const httpClient = createHttpClient(finalConfig)\n\n /**\n * Map multiple identifiers to FIGIs in a single request\n *\n * @param requests - Array of mapping requests (max 100)\n * @returns Array of mapping responses in the same order as requests\n * @throws {ValidationError} If requests are invalid\n * @throws {RateLimitError} If rate limit is exceeded\n * @throws {OpenFigiError} If API returns an error\n *\n * @example\n * ```typescript\n * const responses = await mapping([\n * { idType: 'ID_ISIN', idValue: 'US0378331005' },\n * { idType: 'ID_CUSIP', idValue: '037833100' }\n * ])\n * ```\n */\n const mapping = async (requests: MappingRequest[]): Promise<MappingResponse[]> => {\n if (!Array.isArray(requests) || requests.length === 0) {\n throw new ValidationError(\n 'Requests must be a non-empty array. Provide at least one mapping request.'\n )\n }\n\n if (requests.length > 100) {\n throw new ValidationError(\n `Too many requests: ${requests.length}. Maximum 100 requests allowed per call. Split into multiple batches.`\n )\n }\n\n const validatedRequests = requests.map((req, index) => {\n const validation = MappingRequestSchema.safeParse(req)\n if (!validation.success) {\n const errors = validation.error.issues\n .map((e) => `${e.path.join('.')}: ${e.message}`)\n .join(', ')\n throw new ValidationError(\n `Invalid mapping request at index ${index}: ${errors}`,\n validation.error\n )\n }\n return validation.data\n })\n\n try {\n log('info', `Mapping ${validatedRequests.length} identifier(s)`)\n const response = await httpClient.post('v3/mapping', {\n json: validatedRequests,\n })\n\n const data = (await response.json()) as unknown\n\n if (!Array.isArray(data)) {\n throw new OpenFigiError(\n `Invalid API response: expected array but got ${typeof data}`,\n response.status,\n data\n )\n }\n\n const validatedResponses = data.map((item, index) => {\n const validation = MappingResponseSchema.safeParse(item)\n if (!validation.success) {\n log('warn', `Invalid response at index ${index}:`, item, validation.error)\n return item as MappingResponse\n }\n return validation.data\n })\n\n log('info', `Mapped ${validatedResponses.length} identifier(s) successfully`)\n return validatedResponses\n } catch (error) {\n if (error instanceof OpenFigiError) {\n throw error\n }\n\n if (error instanceof Error && 'response' in error) {\n const httpError = error as HTTPError\n const status = httpError.response?.status\n\n if (status === 429) {\n const retryAfter = httpError.response?.headers?.get('retry-after')\n throw new RateLimitError(\n 'Rate limit exceeded. Please wait before making more requests.',\n retryAfter ? parseInt(retryAfter, 10) : undefined,\n status\n )\n }\n\n if (status === 400) {\n const body = await httpError.response?.text()\n throw new ValidationError(`Bad request: ${body || 'Invalid request format'}`)\n }\n\n if (status === 401) {\n throw new OpenFigiError('Authentication failed. Check your API key.', status)\n }\n\n if (status === 404) {\n throw new OpenFigiError('Endpoint not found. Please check the API version.', status)\n }\n\n throw new OpenFigiError(\n `Request failed with status ${status}: ${httpError.message}`,\n status,\n await httpError.response?.text()\n )\n }\n\n throw new OpenFigiError('Unexpected error occurred', undefined, error)\n }\n }\n\n /**\n * Map a single identifier to FIGI\n *\n * @param request - Single mapping request\n * @returns Mapping response\n *\n * @example\n * ```typescript\n * const response = await mappingSingle({\n * idType: 'ID_ISIN',\n * idValue: 'US0378331005'\n * })\n * ```\n */\n const mappingSingle = async (request: MappingRequest): Promise<MappingResponse> => {\n const responses = await mapping([request])\n return responses[0]\n }\n\n /**\n * Search for FIGI by ISIN\n *\n * @param isin - ISIN identifier (e.g., 'US0378331005')\n * @param options - Additional search options\n * @returns Mapping response with FIGI data\n *\n * @example\n * ```typescript\n * const result = await searchByISIN('US0378331005')\n * if (result.data) {\n * console.log('FIGI:', result.data[0].figi)\n * }\n * ```\n */\n const searchByISIN = async (\n isin: string,\n options?: Partial<MappingRequest>\n ): Promise<MappingResponse> => {\n if (!isin || typeof isin !== 'string') {\n throw new ValidationError('ISIN must be a non-empty string')\n }\n return mappingSingle({\n idType: 'ID_ISIN',\n idValue: isin.trim(),\n ...options,\n })\n }\n\n /**\n * Search for FIGI by CUSIP\n *\n * @param cusip - CUSIP identifier (e.g., '037833100')\n * @param options - Additional search options\n * @returns Mapping response with FIGI data\n */\n const searchByCUSIP = async (\n cusip: string,\n options?: Partial<MappingRequest>\n ): Promise<MappingResponse> => {\n if (!cusip || typeof cusip !== 'string') {\n throw new ValidationError('CUSIP must be a non-empty string')\n }\n return mappingSingle({\n idType: 'ID_CUSIP',\n idValue: cusip.trim(),\n ...options,\n })\n }\n\n /**\n * Search for FIGI by SEDOL\n *\n * @param sedol - SEDOL identifier (e.g., '2046251')\n * @param options - Additional search options\n * @returns Mapping response with FIGI data\n */\n const searchBySEDOL = async (\n sedol: string,\n options?: Partial<MappingRequest>\n ): Promise<MappingResponse> => {\n if (!sedol || typeof sedol !== 'string') {\n throw new ValidationError('SEDOL must be a non-empty string')\n }\n return mappingSingle({\n idType: 'ID_SEDOL',\n idValue: sedol.trim(),\n ...options,\n })\n }\n\n /**\n * Search for FIGI by ticker symbol\n *\n * @param ticker - Ticker symbol (e.g., 'AAPL')\n * @param exchCode - Optional exchange code (e.g., 'US')\n * @param options - Additional search options\n * @returns Mapping response with FIGI data\n *\n * @example\n * ```typescript\n * const result = await searchByTicker('AAPL', 'US')\n * ```\n */\n const searchByTicker = async (\n ticker: string,\n exchCode?: string,\n options?: Partial<MappingRequest>\n ): Promise<MappingResponse> => {\n if (!ticker || typeof ticker !== 'string') {\n throw new ValidationError('Ticker must be a non-empty string')\n }\n return mappingSingle({\n idType: 'ID_EXCH_SYMBOL',\n idValue: ticker.trim().toUpperCase(),\n exchCode: exchCode?.trim(),\n ...options,\n })\n }\n\n /**\n * Search for FIGI by Bloomberg ID\n *\n * @param bbgId - Bloomberg Global ID (e.g., 'BBG000B9XRY4')\n * @param options - Additional search options\n * @returns Mapping response with FIGI data\n */\n const searchByBloombergId = async (\n bbgId: string,\n options?: Partial<MappingRequest>\n ): Promise<MappingResponse> => {\n if (!bbgId || typeof bbgId !== 'string') {\n throw new ValidationError('Bloomberg ID must be a non-empty string')\n }\n return mappingSingle({\n idType: 'ID_BB_GLOBAL',\n idValue: bbgId.trim(),\n ...options,\n })\n }\n\n /**\n * Get current rate limit information\n *\n * @returns Rate limit info if available, undefined if no requests made yet\n *\n * @example\n * ```typescript\n * const rateLimit = getRateLimitInfo()\n * if (rateLimit) {\n * console.log(`${rateLimit.remaining} requests remaining`)\n * }\n * ```\n */\n const getRateLimitInfo = (): RateLimitInfo | undefined => {\n return currentRateLimitInfo\n }\n\n return {\n mapping,\n mappingSingle,\n searchByISIN,\n searchByCUSIP,\n searchBySEDOL,\n searchByTicker,\n searchByBloombergId,\n getRateLimitInfo,\n }\n}\n\n// Export standalone functions with default client\nconst defaultClient = createClient()\n\nexport const mapping = defaultClient.mapping\nexport const mappingSingle = defaultClient.mappingSingle\nexport const searchByISIN = defaultClient.searchByISIN\nexport const searchByCUSIP = defaultClient.searchByCUSIP\nexport const searchBySEDOL = defaultClient.searchBySEDOL\nexport const searchByTicker = defaultClient.searchByTicker\nexport const searchByBloombergId = defaultClient.searchByBloombergId\nexport const getRateLimitInfo = defaultClient.getRateLimitInfo\n","/**\n * Validate ISIN format (12 characters, alphanumeric)\n */\nexport const isValidISIN = (isin: string): boolean => {\n return /^[A-Z]{2}[A-Z0-9]{9}[0-9]$/.test(isin)\n}\n\n/**\n * Validate CUSIP format (9 characters, alphanumeric)\n */\nexport const isValidCUSIP = (cusip: string): boolean => {\n return /^[A-Z0-9]{9}$/.test(cusip)\n}\n\n/**\n * Validate SEDOL format (7 characters, alphanumeric)\n */\nexport const isValidSEDOL = (sedol: string): boolean => {\n return /^[A-Z0-9]{7}$/.test(sedol)\n}\n\n/**\n * Validate Bloomberg ID format (starts with BBG)\n */\nexport const isValidBloombergId = (bbgId: string): boolean => {\n return /^BBG[A-Z0-9]{9}$/.test(bbgId)\n}\n\n/**\n * Split array into batches of specified size\n * Useful for splitting large arrays for batch processing\n */\nexport const batchArray = <T>(array: T[], batchSize: number): T[][] => {\n const batches: T[][] = []\n for (let i = 0; i < array.length; i += batchSize) {\n batches.push(array.slice(i, i + batchSize))\n }\n return batches\n}\n"]}
|
package/dist/index.d.cts
ADDED
|
@@ -0,0 +1,352 @@
|
|
|
1
|
+
import { z } from 'zod';
|
|
2
|
+
|
|
3
|
+
type IdType = 'ID_ISIN' | 'ID_BB_UNIQUE' | 'ID_SEDOL' | 'ID_COMMON' | 'ID_WERTPAPIER' | 'ID_CUSIP' | 'ID_BB' | 'ID_ITALY' | 'ID_EXCH_SYMBOL' | 'ID_FULL_EXCHANGE_SYMBOL' | 'COMPOSITE_ID_BB_GLOBAL' | 'ID_BB_GLOBAL_SHARE_CLASS_LEVEL' | 'ID_BB_GLOBAL' | 'ID_BB_SEC_NUM_DES' | 'ID_BB_SEC_NUM' | 'ID_CINS' | 'ID_BELGIUM' | 'ID_DENMARK' | 'ID_FRANCE' | 'ID_JAPAN' | 'ID_LUXEMBOURG' | 'ID_NETHERLANDS' | 'ID_POLAND' | 'ID_PORTUGAL' | 'ID_SWEDEN' | 'ID_SHORT_CODE';
|
|
4
|
+
type SecurityType = 'Common Stock' | 'Preference' | 'ADR' | 'Open-End Fund' | 'Closed-End Fund' | 'ETF' | 'ETN' | 'Unit' | 'Mutual Fund' | 'Money Market' | 'Commodity' | 'Currency' | 'Option' | 'Index';
|
|
5
|
+
type MarketSector = 'All' | 'Comdty' | 'Curncy' | 'Equity' | 'Govt' | 'Corp' | 'Index' | 'Money' | 'Mtge' | 'Muni' | 'Pref';
|
|
6
|
+
interface MappingRequest {
|
|
7
|
+
idType: IdType;
|
|
8
|
+
idValue: string;
|
|
9
|
+
exchCode?: string;
|
|
10
|
+
micCode?: string;
|
|
11
|
+
currency?: string;
|
|
12
|
+
marketSecDes?: MarketSector;
|
|
13
|
+
securityType?: SecurityType;
|
|
14
|
+
securityType2?: string;
|
|
15
|
+
includeUnlistedEquities?: boolean;
|
|
16
|
+
optionType?: 'Put' | 'Call';
|
|
17
|
+
strike?: number[];
|
|
18
|
+
contractSize?: number;
|
|
19
|
+
coupon?: number[];
|
|
20
|
+
expiration?: number[];
|
|
21
|
+
maturity?: number[];
|
|
22
|
+
stateCode?: string;
|
|
23
|
+
}
|
|
24
|
+
interface FigiResult {
|
|
25
|
+
figi: string;
|
|
26
|
+
securityType?: SecurityType;
|
|
27
|
+
marketSector?: MarketSector;
|
|
28
|
+
ticker?: string;
|
|
29
|
+
name?: string;
|
|
30
|
+
exchCode?: string;
|
|
31
|
+
shareClassFIGI?: string;
|
|
32
|
+
compositeFIGI?: string;
|
|
33
|
+
securityType2?: string;
|
|
34
|
+
securityDescription?: string;
|
|
35
|
+
metadata?: string;
|
|
36
|
+
}
|
|
37
|
+
interface MappingResponse {
|
|
38
|
+
data?: FigiResult[];
|
|
39
|
+
warning?: string;
|
|
40
|
+
error?: string;
|
|
41
|
+
}
|
|
42
|
+
interface ApiError {
|
|
43
|
+
error: string;
|
|
44
|
+
message?: string;
|
|
45
|
+
statusCode?: number;
|
|
46
|
+
}
|
|
47
|
+
interface RateLimitInfo {
|
|
48
|
+
limit: number;
|
|
49
|
+
remaining: number;
|
|
50
|
+
reset: Date;
|
|
51
|
+
}
|
|
52
|
+
interface ClientConfig {
|
|
53
|
+
apiKey?: string;
|
|
54
|
+
baseUrl?: string;
|
|
55
|
+
timeout?: number;
|
|
56
|
+
retryLimit?: number;
|
|
57
|
+
retryDelay?: number;
|
|
58
|
+
userAgent?: string;
|
|
59
|
+
}
|
|
60
|
+
|
|
61
|
+
/**
|
|
62
|
+
* Enable or disable debug logging
|
|
63
|
+
* @param enabled - Whether to enable debug mode
|
|
64
|
+
*/
|
|
65
|
+
declare const setDebugMode: (enabled: boolean) => void;
|
|
66
|
+
/**
|
|
67
|
+
* Creates an OpenFIGI client with custom configuration
|
|
68
|
+
*
|
|
69
|
+
* @param config - Client configuration options
|
|
70
|
+
* @returns An OpenFIGI client instance with all available methods
|
|
71
|
+
*
|
|
72
|
+
* @example
|
|
73
|
+
* ```typescript
|
|
74
|
+
* const client = createClient({
|
|
75
|
+
* apiKey: 'your-api-key',
|
|
76
|
+
* timeout: 60000
|
|
77
|
+
* })
|
|
78
|
+
* ```
|
|
79
|
+
*/
|
|
80
|
+
declare const createClient: (config?: ClientConfig) => {
|
|
81
|
+
mapping: (requests: MappingRequest[]) => Promise<MappingResponse[]>;
|
|
82
|
+
mappingSingle: (request: MappingRequest) => Promise<MappingResponse>;
|
|
83
|
+
searchByISIN: (isin: string, options?: Partial<MappingRequest>) => Promise<MappingResponse>;
|
|
84
|
+
searchByCUSIP: (cusip: string, options?: Partial<MappingRequest>) => Promise<MappingResponse>;
|
|
85
|
+
searchBySEDOL: (sedol: string, options?: Partial<MappingRequest>) => Promise<MappingResponse>;
|
|
86
|
+
searchByTicker: (ticker: string, exchCode?: string, options?: Partial<MappingRequest>) => Promise<MappingResponse>;
|
|
87
|
+
searchByBloombergId: (bbgId: string, options?: Partial<MappingRequest>) => Promise<MappingResponse>;
|
|
88
|
+
getRateLimitInfo: () => RateLimitInfo | undefined;
|
|
89
|
+
};
|
|
90
|
+
declare const mapping: (requests: MappingRequest[]) => Promise<MappingResponse[]>;
|
|
91
|
+
declare const mappingSingle: (request: MappingRequest) => Promise<MappingResponse>;
|
|
92
|
+
declare const searchByISIN: (isin: string, options?: Partial<MappingRequest>) => Promise<MappingResponse>;
|
|
93
|
+
declare const searchByCUSIP: (cusip: string, options?: Partial<MappingRequest>) => Promise<MappingResponse>;
|
|
94
|
+
declare const searchBySEDOL: (sedol: string, options?: Partial<MappingRequest>) => Promise<MappingResponse>;
|
|
95
|
+
declare const searchByTicker: (ticker: string, exchCode?: string, options?: Partial<MappingRequest>) => Promise<MappingResponse>;
|
|
96
|
+
declare const searchByBloombergId: (bbgId: string, options?: Partial<MappingRequest>) => Promise<MappingResponse>;
|
|
97
|
+
declare const getRateLimitInfo: () => RateLimitInfo | undefined;
|
|
98
|
+
|
|
99
|
+
declare class OpenFigiError extends Error {
|
|
100
|
+
statusCode?: number | undefined;
|
|
101
|
+
response?: unknown | undefined;
|
|
102
|
+
constructor(message: string, statusCode?: number | undefined, response?: unknown | undefined);
|
|
103
|
+
}
|
|
104
|
+
declare class RateLimitError extends OpenFigiError {
|
|
105
|
+
retryAfter?: number | undefined;
|
|
106
|
+
constructor(message: string, retryAfter?: number | undefined, statusCode?: number);
|
|
107
|
+
}
|
|
108
|
+
declare class ValidationError extends OpenFigiError {
|
|
109
|
+
errors?: unknown | undefined;
|
|
110
|
+
constructor(message: string, errors?: unknown | undefined);
|
|
111
|
+
}
|
|
112
|
+
|
|
113
|
+
/**
|
|
114
|
+
* Validate ISIN format (12 characters, alphanumeric)
|
|
115
|
+
*/
|
|
116
|
+
declare const isValidISIN: (isin: string) => boolean;
|
|
117
|
+
/**
|
|
118
|
+
* Validate CUSIP format (9 characters, alphanumeric)
|
|
119
|
+
*/
|
|
120
|
+
declare const isValidCUSIP: (cusip: string) => boolean;
|
|
121
|
+
/**
|
|
122
|
+
* Validate SEDOL format (7 characters, alphanumeric)
|
|
123
|
+
*/
|
|
124
|
+
declare const isValidSEDOL: (sedol: string) => boolean;
|
|
125
|
+
/**
|
|
126
|
+
* Validate Bloomberg ID format (starts with BBG)
|
|
127
|
+
*/
|
|
128
|
+
declare const isValidBloombergId: (bbgId: string) => boolean;
|
|
129
|
+
/**
|
|
130
|
+
* Split array into batches of specified size
|
|
131
|
+
* Useful for splitting large arrays for batch processing
|
|
132
|
+
*/
|
|
133
|
+
declare const batchArray: <T>(array: T[], batchSize: number) => T[][];
|
|
134
|
+
|
|
135
|
+
declare const IdTypeSchema: z.ZodEnum<{
|
|
136
|
+
ID_ISIN: "ID_ISIN";
|
|
137
|
+
ID_BB_UNIQUE: "ID_BB_UNIQUE";
|
|
138
|
+
ID_SEDOL: "ID_SEDOL";
|
|
139
|
+
ID_COMMON: "ID_COMMON";
|
|
140
|
+
ID_WERTPAPIER: "ID_WERTPAPIER";
|
|
141
|
+
ID_CUSIP: "ID_CUSIP";
|
|
142
|
+
ID_BB: "ID_BB";
|
|
143
|
+
ID_ITALY: "ID_ITALY";
|
|
144
|
+
ID_EXCH_SYMBOL: "ID_EXCH_SYMBOL";
|
|
145
|
+
ID_FULL_EXCHANGE_SYMBOL: "ID_FULL_EXCHANGE_SYMBOL";
|
|
146
|
+
COMPOSITE_ID_BB_GLOBAL: "COMPOSITE_ID_BB_GLOBAL";
|
|
147
|
+
ID_BB_GLOBAL_SHARE_CLASS_LEVEL: "ID_BB_GLOBAL_SHARE_CLASS_LEVEL";
|
|
148
|
+
ID_BB_GLOBAL: "ID_BB_GLOBAL";
|
|
149
|
+
ID_BB_SEC_NUM_DES: "ID_BB_SEC_NUM_DES";
|
|
150
|
+
ID_BB_SEC_NUM: "ID_BB_SEC_NUM";
|
|
151
|
+
ID_CINS: "ID_CINS";
|
|
152
|
+
ID_BELGIUM: "ID_BELGIUM";
|
|
153
|
+
ID_DENMARK: "ID_DENMARK";
|
|
154
|
+
ID_FRANCE: "ID_FRANCE";
|
|
155
|
+
ID_JAPAN: "ID_JAPAN";
|
|
156
|
+
ID_LUXEMBOURG: "ID_LUXEMBOURG";
|
|
157
|
+
ID_NETHERLANDS: "ID_NETHERLANDS";
|
|
158
|
+
ID_POLAND: "ID_POLAND";
|
|
159
|
+
ID_PORTUGAL: "ID_PORTUGAL";
|
|
160
|
+
ID_SWEDEN: "ID_SWEDEN";
|
|
161
|
+
ID_SHORT_CODE: "ID_SHORT_CODE";
|
|
162
|
+
}>;
|
|
163
|
+
declare const SecurityTypeSchema: z.ZodEnum<{
|
|
164
|
+
"Common Stock": "Common Stock";
|
|
165
|
+
Preference: "Preference";
|
|
166
|
+
ADR: "ADR";
|
|
167
|
+
"Open-End Fund": "Open-End Fund";
|
|
168
|
+
"Closed-End Fund": "Closed-End Fund";
|
|
169
|
+
ETF: "ETF";
|
|
170
|
+
ETN: "ETN";
|
|
171
|
+
Unit: "Unit";
|
|
172
|
+
"Mutual Fund": "Mutual Fund";
|
|
173
|
+
"Money Market": "Money Market";
|
|
174
|
+
Commodity: "Commodity";
|
|
175
|
+
Currency: "Currency";
|
|
176
|
+
Option: "Option";
|
|
177
|
+
Index: "Index";
|
|
178
|
+
}>;
|
|
179
|
+
declare const MarketSectorSchema: z.ZodEnum<{
|
|
180
|
+
Index: "Index";
|
|
181
|
+
All: "All";
|
|
182
|
+
Comdty: "Comdty";
|
|
183
|
+
Curncy: "Curncy";
|
|
184
|
+
Equity: "Equity";
|
|
185
|
+
Govt: "Govt";
|
|
186
|
+
Corp: "Corp";
|
|
187
|
+
Money: "Money";
|
|
188
|
+
Mtge: "Mtge";
|
|
189
|
+
Muni: "Muni";
|
|
190
|
+
Pref: "Pref";
|
|
191
|
+
}>;
|
|
192
|
+
declare const MappingRequestSchema: z.ZodObject<{
|
|
193
|
+
idType: z.ZodEnum<{
|
|
194
|
+
ID_ISIN: "ID_ISIN";
|
|
195
|
+
ID_BB_UNIQUE: "ID_BB_UNIQUE";
|
|
196
|
+
ID_SEDOL: "ID_SEDOL";
|
|
197
|
+
ID_COMMON: "ID_COMMON";
|
|
198
|
+
ID_WERTPAPIER: "ID_WERTPAPIER";
|
|
199
|
+
ID_CUSIP: "ID_CUSIP";
|
|
200
|
+
ID_BB: "ID_BB";
|
|
201
|
+
ID_ITALY: "ID_ITALY";
|
|
202
|
+
ID_EXCH_SYMBOL: "ID_EXCH_SYMBOL";
|
|
203
|
+
ID_FULL_EXCHANGE_SYMBOL: "ID_FULL_EXCHANGE_SYMBOL";
|
|
204
|
+
COMPOSITE_ID_BB_GLOBAL: "COMPOSITE_ID_BB_GLOBAL";
|
|
205
|
+
ID_BB_GLOBAL_SHARE_CLASS_LEVEL: "ID_BB_GLOBAL_SHARE_CLASS_LEVEL";
|
|
206
|
+
ID_BB_GLOBAL: "ID_BB_GLOBAL";
|
|
207
|
+
ID_BB_SEC_NUM_DES: "ID_BB_SEC_NUM_DES";
|
|
208
|
+
ID_BB_SEC_NUM: "ID_BB_SEC_NUM";
|
|
209
|
+
ID_CINS: "ID_CINS";
|
|
210
|
+
ID_BELGIUM: "ID_BELGIUM";
|
|
211
|
+
ID_DENMARK: "ID_DENMARK";
|
|
212
|
+
ID_FRANCE: "ID_FRANCE";
|
|
213
|
+
ID_JAPAN: "ID_JAPAN";
|
|
214
|
+
ID_LUXEMBOURG: "ID_LUXEMBOURG";
|
|
215
|
+
ID_NETHERLANDS: "ID_NETHERLANDS";
|
|
216
|
+
ID_POLAND: "ID_POLAND";
|
|
217
|
+
ID_PORTUGAL: "ID_PORTUGAL";
|
|
218
|
+
ID_SWEDEN: "ID_SWEDEN";
|
|
219
|
+
ID_SHORT_CODE: "ID_SHORT_CODE";
|
|
220
|
+
}>;
|
|
221
|
+
idValue: z.ZodString;
|
|
222
|
+
exchCode: z.ZodOptional<z.ZodString>;
|
|
223
|
+
micCode: z.ZodOptional<z.ZodString>;
|
|
224
|
+
currency: z.ZodOptional<z.ZodString>;
|
|
225
|
+
marketSecDes: z.ZodOptional<z.ZodEnum<{
|
|
226
|
+
Index: "Index";
|
|
227
|
+
All: "All";
|
|
228
|
+
Comdty: "Comdty";
|
|
229
|
+
Curncy: "Curncy";
|
|
230
|
+
Equity: "Equity";
|
|
231
|
+
Govt: "Govt";
|
|
232
|
+
Corp: "Corp";
|
|
233
|
+
Money: "Money";
|
|
234
|
+
Mtge: "Mtge";
|
|
235
|
+
Muni: "Muni";
|
|
236
|
+
Pref: "Pref";
|
|
237
|
+
}>>;
|
|
238
|
+
securityType: z.ZodOptional<z.ZodEnum<{
|
|
239
|
+
"Common Stock": "Common Stock";
|
|
240
|
+
Preference: "Preference";
|
|
241
|
+
ADR: "ADR";
|
|
242
|
+
"Open-End Fund": "Open-End Fund";
|
|
243
|
+
"Closed-End Fund": "Closed-End Fund";
|
|
244
|
+
ETF: "ETF";
|
|
245
|
+
ETN: "ETN";
|
|
246
|
+
Unit: "Unit";
|
|
247
|
+
"Mutual Fund": "Mutual Fund";
|
|
248
|
+
"Money Market": "Money Market";
|
|
249
|
+
Commodity: "Commodity";
|
|
250
|
+
Currency: "Currency";
|
|
251
|
+
Option: "Option";
|
|
252
|
+
Index: "Index";
|
|
253
|
+
}>>;
|
|
254
|
+
securityType2: z.ZodOptional<z.ZodString>;
|
|
255
|
+
includeUnlistedEquities: z.ZodOptional<z.ZodBoolean>;
|
|
256
|
+
optionType: z.ZodOptional<z.ZodEnum<{
|
|
257
|
+
Put: "Put";
|
|
258
|
+
Call: "Call";
|
|
259
|
+
}>>;
|
|
260
|
+
strike: z.ZodOptional<z.ZodArray<z.ZodNumber>>;
|
|
261
|
+
contractSize: z.ZodOptional<z.ZodNumber>;
|
|
262
|
+
coupon: z.ZodOptional<z.ZodArray<z.ZodNumber>>;
|
|
263
|
+
expiration: z.ZodOptional<z.ZodArray<z.ZodNumber>>;
|
|
264
|
+
maturity: z.ZodOptional<z.ZodArray<z.ZodNumber>>;
|
|
265
|
+
stateCode: z.ZodOptional<z.ZodString>;
|
|
266
|
+
}, z.core.$strip>;
|
|
267
|
+
declare const FigiResultSchema: z.ZodObject<{
|
|
268
|
+
figi: z.ZodString;
|
|
269
|
+
securityType: z.ZodOptional<z.ZodEnum<{
|
|
270
|
+
"Common Stock": "Common Stock";
|
|
271
|
+
Preference: "Preference";
|
|
272
|
+
ADR: "ADR";
|
|
273
|
+
"Open-End Fund": "Open-End Fund";
|
|
274
|
+
"Closed-End Fund": "Closed-End Fund";
|
|
275
|
+
ETF: "ETF";
|
|
276
|
+
ETN: "ETN";
|
|
277
|
+
Unit: "Unit";
|
|
278
|
+
"Mutual Fund": "Mutual Fund";
|
|
279
|
+
"Money Market": "Money Market";
|
|
280
|
+
Commodity: "Commodity";
|
|
281
|
+
Currency: "Currency";
|
|
282
|
+
Option: "Option";
|
|
283
|
+
Index: "Index";
|
|
284
|
+
}>>;
|
|
285
|
+
marketSector: z.ZodOptional<z.ZodEnum<{
|
|
286
|
+
Index: "Index";
|
|
287
|
+
All: "All";
|
|
288
|
+
Comdty: "Comdty";
|
|
289
|
+
Curncy: "Curncy";
|
|
290
|
+
Equity: "Equity";
|
|
291
|
+
Govt: "Govt";
|
|
292
|
+
Corp: "Corp";
|
|
293
|
+
Money: "Money";
|
|
294
|
+
Mtge: "Mtge";
|
|
295
|
+
Muni: "Muni";
|
|
296
|
+
Pref: "Pref";
|
|
297
|
+
}>>;
|
|
298
|
+
ticker: z.ZodOptional<z.ZodString>;
|
|
299
|
+
name: z.ZodOptional<z.ZodString>;
|
|
300
|
+
exchCode: z.ZodOptional<z.ZodString>;
|
|
301
|
+
shareClassFIGI: z.ZodOptional<z.ZodString>;
|
|
302
|
+
compositeFIGI: z.ZodOptional<z.ZodString>;
|
|
303
|
+
securityType2: z.ZodOptional<z.ZodString>;
|
|
304
|
+
securityDescription: z.ZodOptional<z.ZodString>;
|
|
305
|
+
metadata: z.ZodOptional<z.ZodString>;
|
|
306
|
+
}, z.core.$strip>;
|
|
307
|
+
declare const MappingResponseSchema: z.ZodObject<{
|
|
308
|
+
data: z.ZodOptional<z.ZodArray<z.ZodObject<{
|
|
309
|
+
figi: z.ZodString;
|
|
310
|
+
securityType: z.ZodOptional<z.ZodEnum<{
|
|
311
|
+
"Common Stock": "Common Stock";
|
|
312
|
+
Preference: "Preference";
|
|
313
|
+
ADR: "ADR";
|
|
314
|
+
"Open-End Fund": "Open-End Fund";
|
|
315
|
+
"Closed-End Fund": "Closed-End Fund";
|
|
316
|
+
ETF: "ETF";
|
|
317
|
+
ETN: "ETN";
|
|
318
|
+
Unit: "Unit";
|
|
319
|
+
"Mutual Fund": "Mutual Fund";
|
|
320
|
+
"Money Market": "Money Market";
|
|
321
|
+
Commodity: "Commodity";
|
|
322
|
+
Currency: "Currency";
|
|
323
|
+
Option: "Option";
|
|
324
|
+
Index: "Index";
|
|
325
|
+
}>>;
|
|
326
|
+
marketSector: z.ZodOptional<z.ZodEnum<{
|
|
327
|
+
Index: "Index";
|
|
328
|
+
All: "All";
|
|
329
|
+
Comdty: "Comdty";
|
|
330
|
+
Curncy: "Curncy";
|
|
331
|
+
Equity: "Equity";
|
|
332
|
+
Govt: "Govt";
|
|
333
|
+
Corp: "Corp";
|
|
334
|
+
Money: "Money";
|
|
335
|
+
Mtge: "Mtge";
|
|
336
|
+
Muni: "Muni";
|
|
337
|
+
Pref: "Pref";
|
|
338
|
+
}>>;
|
|
339
|
+
ticker: z.ZodOptional<z.ZodString>;
|
|
340
|
+
name: z.ZodOptional<z.ZodString>;
|
|
341
|
+
exchCode: z.ZodOptional<z.ZodString>;
|
|
342
|
+
shareClassFIGI: z.ZodOptional<z.ZodString>;
|
|
343
|
+
compositeFIGI: z.ZodOptional<z.ZodString>;
|
|
344
|
+
securityType2: z.ZodOptional<z.ZodString>;
|
|
345
|
+
securityDescription: z.ZodOptional<z.ZodString>;
|
|
346
|
+
metadata: z.ZodOptional<z.ZodString>;
|
|
347
|
+
}, z.core.$strip>>>;
|
|
348
|
+
warning: z.ZodOptional<z.ZodString>;
|
|
349
|
+
error: z.ZodOptional<z.ZodString>;
|
|
350
|
+
}, z.core.$strip>;
|
|
351
|
+
|
|
352
|
+
export { type ApiError, type ClientConfig, type FigiResult, FigiResultSchema, type IdType, IdTypeSchema, type MappingRequest, MappingRequestSchema, type MappingResponse, MappingResponseSchema, type MarketSector, MarketSectorSchema, OpenFigiError, RateLimitError, type RateLimitInfo, type SecurityType, SecurityTypeSchema, ValidationError, batchArray, createClient, getRateLimitInfo, isValidBloombergId, isValidCUSIP, isValidISIN, isValidSEDOL, mapping, mappingSingle, searchByBloombergId, searchByCUSIP, searchByISIN, searchBySEDOL, searchByTicker, setDebugMode };
|