mlld
Version:
mlld: a modular prompt scripting language
1 lines • 23.9 kB
Source Map (JSON)
{"version":3,"sources":["../core/resolvers/HTTPResolver.ts"],"names":["HTTPResolver","name","description","type","capabilities","io","read","write","list","contexts","import","path","output","supportedContentTypes","defaultContentType","priority","cache","strategy","ttl","duration","Map","defaultTimeout","defaultCacheTimeout","canResolve","ref","config","baseUrl","resolve","MlldResolutionError","reference","url","buildUrl","validateDomain","cacheKey","toString","cached","getCached","cacheTimeout","contentType","detectContentType","pathname","content","metadata","source","timestamp","Date","taintLevel","TaintLevel","EXTERNAL","mimeType","headers","etag","fetchFromHttp","set","now","size","parseInt","undefined","error","status","message","originalError","validateConfig","errors","push","URL","Array","isArray","allowedDomains","every","d","timeout","followRedirects","maxRedirects","validateSSL","checkAccess","operation","endsWith","cleanRef","startsWith","slice","hostname","includes","join","protocol","key","get","maxAge","delete","controller","AbortController","timeoutId","setTimeout","abort","response","fetch","signal","redirect","clearTimeout","ok","Error","statusText","isTextContent","text","responseHeaders","forEach","value","toLowerCase","textTypes","some","filePath","parse","result","success","hasModuleExports","ast","JSON","node","kind"],"mappings":"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","file":"chunk-7T5PMNS2.mjs","sourcesContent":["import { \n Resolver, \n ResolverContent, \n ResolverType,\n ContentInfo,\n ResolverCapabilities\n} from '@core/resolvers/types';\nimport { MlldResolutionError } from '@core/errors';\nimport { TaintLevel } from '@security/taint/TaintTracker';\n\n/**\n * Configuration for HTTPResolver\n */\nexport interface HTTPResolverConfig {\n /**\n * Base URL for resolving references\n */\n baseUrl: string;\n\n /**\n * Authentication headers\n */\n headers?: Record<string, string>;\n\n /**\n * Allowed domains (if not specified, only baseUrl domain is allowed)\n */\n allowedDomains?: string[];\n\n /**\n * Request timeout in milliseconds\n */\n timeout?: number;\n\n /**\n * Whether to follow redirects\n */\n followRedirects?: boolean;\n\n /**\n * Maximum number of redirects to follow\n */\n maxRedirects?: number;\n\n /**\n * Cache timeout in milliseconds\n */\n cacheTimeout?: number;\n\n /**\n * Whether to validate SSL certificates (default: true)\n */\n validateSSL?: boolean;\n}\n\n/**\n * HTTP Resolver - provides access to modules via HTTP/HTTPS\n * Supports authentication and domain restrictions for security\n */\nexport class HTTPResolver implements Resolver {\n name = 'HTTP';\n description = 'Resolves modules from HTTP/HTTPS endpoints';\n type: ResolverType = 'input';\n \n capabilities: ResolverCapabilities = {\n io: { read: true, write: false, list: false },\n contexts: { import: true, path: true, output: false },\n supportedContentTypes: ['module', 'data', 'text'],\n defaultContentType: 'text',\n priority: 20, // Same as other external resolvers\n cache: { \n strategy: 'persistent',\n ttl: { duration: 300 } // 5 minutes\n }\n };\n\n private readonly cache: Map<string, { \n content: string; \n timestamp: number; \n etag?: string;\n headers?: Record<string, string>;\n }> = new Map();\n \n private readonly defaultTimeout = 30000; // 30 seconds\n private readonly defaultCacheTimeout = 300000; // 5 minutes\n\n /**\n * Check if this resolver can handle the reference\n */\n canResolve(ref: string, config?: HTTPResolverConfig): boolean {\n // We can handle any reference if we have a valid baseUrl\n return !!config?.baseUrl;\n }\n\n /**\n * Resolve a reference to HTTP content\n */\n async resolve(ref: string, config?: HTTPResolverConfig): Promise<ResolverContent> {\n if (!config?.baseUrl) {\n throw new MlldResolutionError(\n 'HTTPResolver requires baseUrl in configuration',\n { reference: ref }\n );\n }\n\n // Build the full URL\n const url = this.buildUrl(ref, config);\n \n // Validate the URL domain\n this.validateDomain(url, config);\n\n // Check cache first\n const cacheKey = url.toString();\n const cached = this.getCached(cacheKey, config.cacheTimeout);\n if (cached) {\n const contentType = await this.detectContentType(url.pathname, cached.content);\n return {\n content: cached.content,\n contentType,\n metadata: {\n source: url.toString(),\n timestamp: new Date(),\n taintLevel: (TaintLevel as any).EXTERNAL,\n mimeType: cached.headers?.['content-type'] || 'text/plain'\n }\n };\n }\n\n try {\n // Fetch from HTTP endpoint\n const { content, etag, headers } = await this.fetchFromHttp(url, config, cached?.etag);\n \n // Update cache\n this.cache.set(cacheKey, {\n content,\n timestamp: Date.now(),\n etag,\n headers\n });\n\n const contentType = await this.detectContentType(url.pathname, content);\n return {\n content,\n contentType,\n metadata: {\n source: url.toString(),\n timestamp: new Date(),\n taintLevel: (TaintLevel as any).EXTERNAL,\n mimeType: headers['content-type'] || 'text/plain',\n size: parseInt(headers['content-length'] || '0', 10) || undefined\n }\n };\n } catch (error) {\n if (error.status === 404) {\n throw new MlldResolutionError(\n `Resource not found: ${url}`,\n { reference: ref, url: url.toString() }\n );\n }\n throw new MlldResolutionError(\n `Failed to fetch from HTTP: ${error.message}`,\n { \n reference: ref, \n url: url.toString(),\n originalError: error\n }\n );\n }\n }\n\n /**\n * Validate configuration\n */\n validateConfig(config: any): string[] {\n const errors: string[] = [];\n\n if (!config?.baseUrl) {\n errors.push('baseUrl is required');\n } else if (typeof config.baseUrl !== 'string') {\n errors.push('baseUrl must be a string');\n } else {\n try {\n new URL(config.baseUrl);\n } catch {\n errors.push('baseUrl must be a valid URL');\n }\n }\n\n if (config.headers !== undefined) {\n if (typeof config.headers !== 'object' || Array.isArray(config.headers)) {\n errors.push('headers must be an object');\n }\n }\n\n if (config.allowedDomains !== undefined) {\n if (!Array.isArray(config.allowedDomains)) {\n errors.push('allowedDomains must be an array');\n } else if (!config.allowedDomains.every(d => typeof d === 'string')) {\n errors.push('allowedDomains must contain only strings');\n }\n }\n\n if (config.timeout !== undefined) {\n if (typeof config.timeout !== 'number' || config.timeout < 0) {\n errors.push('timeout must be a non-negative number');\n }\n }\n\n if (config.followRedirects !== undefined && typeof config.followRedirects !== 'boolean') {\n errors.push('followRedirects must be a boolean');\n }\n\n if (config.maxRedirects !== undefined) {\n if (typeof config.maxRedirects !== 'number' || config.maxRedirects < 0) {\n errors.push('maxRedirects must be a non-negative number');\n }\n }\n\n if (config.validateSSL !== undefined && typeof config.validateSSL !== 'boolean') {\n errors.push('validateSSL must be a boolean');\n }\n\n return errors;\n }\n\n /**\n * Check access - HTTP resolver is read-only\n */\n async checkAccess(ref: string, operation: 'read' | 'write', config?: HTTPResolverConfig): Promise<boolean> {\n if (operation === 'write') {\n return false; // HTTP resolver is read-only\n }\n\n if (!config?.baseUrl) {\n return false;\n }\n\n try {\n const url = this.buildUrl(ref, config);\n this.validateDomain(url, config);\n return true;\n } catch {\n return false;\n }\n }\n\n /**\n * Build the full URL from reference and config\n */\n private buildUrl(ref: string, config: HTTPResolverConfig): URL {\n const baseUrl = config.baseUrl.endsWith('/') ? config.baseUrl : config.baseUrl + '/';\n const cleanRef = ref.startsWith('/') ? ref.slice(1) : ref;\n \n try {\n return new URL(cleanRef, baseUrl);\n } catch (error) {\n throw new MlldResolutionError(\n `Invalid URL: ${baseUrl}${cleanRef}`,\n { reference: ref, baseUrl: config.baseUrl }\n );\n }\n }\n\n /**\n * Validate that the URL domain is allowed\n */\n private validateDomain(url: URL, config: HTTPResolverConfig): void {\n const baseUrl = new URL(config.baseUrl);\n const allowedDomains = config.allowedDomains || [baseUrl.hostname];\n\n if (!allowedDomains.includes(url.hostname)) {\n throw new MlldResolutionError(\n `Domain not allowed: ${url.hostname}. Allowed domains: ${allowedDomains.join(', ')}`,\n { url: url.toString(), allowedDomains }\n );\n }\n\n // Ensure HTTPS for security (unless explicitly disabled)\n if (url.protocol !== 'https:' && config.validateSSL !== false) {\n throw new MlldResolutionError(\n 'Only HTTPS URLs are allowed for security reasons',\n { url: url.toString() }\n );\n }\n }\n\n /**\n * Get cached content if available\n */\n private getCached(\n key: string, \n timeout?: number\n ): { content: string; etag?: string; headers?: Record<string, string> } | null {\n const cached = this.cache.get(key);\n if (!cached) return null;\n\n const maxAge = timeout ?? this.defaultCacheTimeout;\n if (Date.now() - cached.timestamp > maxAge) {\n this.cache.delete(key);\n return null;\n }\n\n return { \n content: cached.content, \n etag: cached.etag,\n headers: cached.headers\n };\n }\n\n /**\n * Fetch content from HTTP endpoint\n */\n private async fetchFromHttp(\n url: URL,\n config: HTTPResolverConfig,\n etag?: string\n ): Promise<{ content: string; etag?: string; headers: Record<string, string> }> {\n const controller = new AbortController();\n const timeout = config.timeout || this.defaultTimeout;\n \n const timeoutId = setTimeout(() => controller.abort(), timeout);\n\n try {\n const headers: HeadersInit = {\n 'User-Agent': 'mlld-http-resolver',\n 'Accept': 'text/plain, text/*, application/json',\n ...config.headers\n };\n\n if (etag) {\n headers['If-None-Match'] = etag;\n }\n\n const response = await fetch(url.toString(), {\n headers,\n signal: controller.signal,\n redirect: config.followRedirects === false ? 'manual' : 'follow'\n });\n\n clearTimeout(timeoutId);\n\n if (response.status === 304) {\n // Not modified, use cache\n const cached = this.cache.get(url.toString());\n if (cached) {\n return { \n content: cached.content, \n etag: cached.etag,\n headers: cached.headers || {}\n };\n }\n }\n\n if (!response.ok) {\n const error = new Error(`HTTP error: ${response.status} ${response.statusText}`);\n (error as any).status = response.status;\n throw error;\n }\n\n // Check content type\n const contentType = response.headers.get('content-type') || '';\n if (!this.isTextContent(contentType)) {\n throw new Error(`Unsupported content type: ${contentType}`);\n }\n\n const content = await response.text();\n \n // Convert headers to plain object\n const responseHeaders: Record<string, string> = {};\n response.headers.forEach((value, key) => {\n responseHeaders[key.toLowerCase()] = value;\n });\n\n return {\n content,\n etag: response.headers.get('etag') || undefined,\n headers: responseHeaders\n };\n } catch (error) {\n if (error.name === 'AbortError') {\n throw new Error(`Request timeout after ${timeout}ms`);\n }\n throw error;\n } finally {\n clearTimeout(timeoutId);\n }\n }\n\n /**\n * Check if content type is text-based\n */\n private isTextContent(contentType: string): boolean {\n const textTypes = [\n 'text/',\n 'application/json',\n 'application/xml',\n 'application/javascript',\n 'application/x-yaml',\n 'application/x-mlld'\n ];\n\n return textTypes.some(type => contentType.toLowerCase().includes(type));\n }\n\n /**\n * Detect content type based on file extension and content\n */\n private async detectContentType(filePath: string, content: string): Promise<'module' | 'data' | 'text'> {\n // Check file extension\n if (filePath.endsWith('.mld') || filePath.endsWith('.mlld')) {\n return 'module';\n }\n if (filePath.endsWith('.json')) {\n return 'data';\n }\n \n // Try to detect mlld module content\n try {\n const { parse } = await import('@grammar/parser');\n const result = await parse(content);\n if (result.success && this.hasModuleExports(result.ast)) {\n return 'module';\n }\n } catch {\n // Not valid mlld\n }\n \n // Try JSON\n try {\n JSON.parse(content);\n return 'data';\n } catch {\n // Not JSON\n }\n \n return 'text';\n }\n \n /**\n * Check if AST has module exports\n */\n private hasModuleExports(ast: any): boolean {\n // Check if there are any directive nodes (not just text/newlines)\n if (!ast || !Array.isArray(ast)) return false;\n \n return ast.some(node => \n node && node.type === 'Directive' && \n ['var', 'exe', 'path'].includes(node.kind)\n );\n }\n}"]}