UNPKG

@mercnet/windmill

Version:

Windmill integration adapter for MercNet GraphQL API

1 lines 9.72 kB
{"version":3,"sources":["../src/index.ts"],"names":["createGraphQLClient"],"mappings":"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","file":"index.cjs","sourcesContent":["/**\n * @mercnet/windmill - Windmill integration adapter for MercNet GraphQL API\n *\n * This package provides a simplified interface for Windmill workflows to interact\n * with the MercNet GraphQL API through a pre-configured client.\n */\n\nimport {\n createGraphQLClient,\n type MercNetGraphQLClient,\n type GraphQLClientConfig,\n type Market\n} from '@mercnet/core'\n\n/**\n * Configuration options for the Windmill MercNet client\n */\nexport interface WindmillClientConfig {\n /** GraphQL endpoint URL */\n endpoint: string\n /** Authentication token for API access */\n token?: string\n /** Additional headers to include in requests */\n headers?: Record<string, string>\n /** Number of retry attempts for failed requests */\n retries?: number\n /** Enable debug logging */\n debug?: boolean\n}\n\n/**\n * Default configuration values\n */\nconst DEFAULT_WINDMILL_CONFIG: Partial<WindmillClientConfig> = {\n retries: 3,\n debug: false\n}\n\n/**\n * Creates a pre-configured MercNet GraphQL client for use in Windmill workflows\n *\n * @param config - Configuration options for the client\n * @returns Configured MercNetGraphQLClient instance\n *\n * @example\n * ```typescript\n * // Basic usage\n * const client = createClient({\n * endpoint: 'https://graphql.rocketeer.trade/',\n * token: 'your-auth-token'\n * })\n *\n * // Get all markets\n * const markets = await client.getAllMarkets()\n *\n * // Get specific market\n * const market = await client.getMarketById(1)\n * ```\n */\nexport function createClient(config: WindmillClientConfig): MercNetGraphQLClient {\n const mergedConfig: WindmillClientConfig = {\n ...DEFAULT_WINDMILL_CONFIG,\n ...config\n }\n\n // Build headers with authentication\n const headers: Record<string, string> = {\n 'Content-Type': 'application/json',\n ...(mergedConfig.headers || {})\n }\n\n // Add authorization header if token is provided\n if (mergedConfig.token) {\n headers['Authorization'] = `Bearer ${mergedConfig.token}`\n }\n\n // Create GraphQL client configuration\n const graphqlConfig: GraphQLClientConfig = {\n endpoint: mergedConfig.endpoint,\n headers,\n retries: mergedConfig.retries || 3,\n debug: mergedConfig.debug || false\n }\n\n return createGraphQLClient(graphqlConfig)\n}\n\n/**\n * Convenience function to create a client with default MercNet endpoint\n *\n * @param config - Partial configuration (endpoint is pre-filled)\n * @returns Configured MercNetGraphQLClient instance\n *\n * @example\n * ```typescript\n * const client = createMercNetClient({\n * token: 'your-auth-token'\n * })\n * ```\n */\nexport function createMercNetClient(\n config: Omit<WindmillClientConfig, 'endpoint'> & { endpoint?: string }\n): MercNetGraphQLClient {\n return createClient({\n endpoint: 'https://graphql.rocketeer.trade/',\n ...config\n })\n}\n\n/**\n * Windmill-specific utilities for common trading operations\n */\nexport class WindmillMercNetUtils {\n constructor(private client: MercNetGraphQLClient) {}\n\n /**\n * Get active markets with basic filtering\n */\n async getActiveMarkets(): Promise<\n Array<{\n id: number\n name: string\n ticker: string\n price: string | null\n status: string | null\n }>\n > {\n const markets = await this.client.getAllMarkets()\n\n return markets\n .filter((market: Market) => market.status === 'active')\n .map((market: Market) => ({\n id: market.id,\n name: market.name || 'Unknown',\n ticker: market.ticker,\n price: market.price || null,\n status: market.status || null\n }))\n }\n\n /**\n * Get market summary for reporting\n */\n async getMarketSummary(marketId: number): Promise<{\n id: number\n name: string\n ticker: string\n price: string | null\n sentiment: string | null\n trend: string | null\n lastUpdate: string | null\n activityScore1h: string | null\n activityScore1d: string | null\n } | null> {\n const market = await this.client.getMarketById(marketId)\n\n if (!market) {\n return null\n }\n\n return {\n id: market.id,\n name: market.name || 'Unknown',\n ticker: market.ticker,\n price: market.price || null,\n sentiment: market.sentiment || null,\n trend: market.trend_status || null,\n lastUpdate: market.last_update_at || null,\n activityScore1h: market.market_activity_score_1h || null,\n activityScore1d: market.market_activity_score_1d || null\n }\n }\n\n /**\n * Search markets by ticker pattern\n */\n async searchMarketsByTicker(tickerPattern: string): Promise<\n Array<{\n id: number\n name: string\n ticker: string\n price: string | null\n }>\n > {\n const allMarkets = await this.client.getAllMarkets()\n\n const pattern = tickerPattern.toLowerCase()\n return allMarkets\n .filter((market: Market) => market.ticker.toLowerCase().includes(pattern))\n .map((market: Market) => ({\n id: market.id,\n name: market.name || 'Unknown',\n ticker: market.ticker,\n price: market.price || null\n }))\n }\n\n /**\n * Get markets with sentiment analysis\n */\n async getMarketsSentiment(): Promise<\n Array<{\n id: number\n ticker: string\n sentiment: string | null\n sentimentUpdateAt: string | null\n trendStatus: string | null\n }>\n > {\n const allMarkets = await this.client.getAllMarkets()\n\n return allMarkets\n .filter((market: Market) => market.sentiment !== null)\n .map((market: Market) => ({\n id: market.id,\n ticker: market.ticker,\n sentiment: market.sentiment || null,\n sentimentUpdateAt: market.sentiment_update_at || null,\n trendStatus: market.trend_status || null\n }))\n }\n}\n\n/**\n * Create a WindmillMercNetUtils instance with a pre-configured client\n *\n * @param config - Configuration for the client\n * @returns WindmillMercNetUtils instance\n *\n * @example\n * ```typescript\n * const utils = createUtils({\n * endpoint: 'https://graphql.rocketeer.trade/',\n * token: 'your-token'\n * })\n *\n * const activeMarkets = await utils.getActiveMarkets()\n * ```\n */\nexport function createUtils(config: WindmillClientConfig): WindmillMercNetUtils {\n const client = createClient(config)\n return new WindmillMercNetUtils(client)\n}\n\n/**\n * Re-export types and utilities from core package for convenience\n */\nexport type {\n Market,\n GraphQLResponse,\n GraphQLError,\n MercNetGraphQLClient,\n GraphQLClientConfig\n} from '@mercnet/core'\n\nexport { MercNetError, createGraphQLClient } from '@mercnet/core'\n\n/**\n * Export types specific to this package\n * WindmillClientConfig is already exported as interface above\n */\n"]}