aigie-sdk 0.0.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.d.mts +2268 -0
- package/dist/index.d.ts +2268 -0
- package/dist/index.js +7807 -0
- package/dist/index.js.map +1 -0
- package/dist/index.mjs +7711 -0
- package/dist/index.mjs.map +1 -0
- package/dist/testing/index.d.mts +7 -0
- package/dist/testing/index.d.ts +7 -0
- package/dist/testing/index.js +649 -0
- package/dist/testing/index.js.map +1 -0
- package/dist/testing/index.mjs +646 -0
- package/dist/testing/index.mjs.map +1 -0
- package/package.json +143 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../src/utils/uuid.ts","../../src/client.ts","../../src/testing/jest.ts","../../src/testing/vitest.ts"],"names":["AsyncLocalStorage","getKyte"],"mappings":"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","file":"index.js","sourcesContent":["/**\n * UUID v7 Implementation\n * Time-ordered UUIDs for better database indexing\n */\n\nlet lastTimestamp = 0;\nlet sequence = 0;\n\n/**\n * Generate a UUID v7 (time-ordered)\n */\nexport function uuidv7(): string {\n let timestamp = Date.now();\n\n // Handle same-millisecond generation\n if (timestamp === lastTimestamp) {\n sequence++;\n if (sequence > 0xfff) {\n // Wait for next millisecond\n while (Date.now() === lastTimestamp) {\n // busy wait\n }\n timestamp = Date.now();\n sequence = 0;\n }\n } else {\n sequence = 0;\n lastTimestamp = timestamp;\n }\n\n // 48-bit timestamp\n const timestampHex = timestamp.toString(16).padStart(12, '0');\n\n // 12-bit sequence with version 7\n const seqHex = ((0x7 << 12) | (sequence & 0xfff)).toString(16).padStart(4, '0');\n\n // 62-bit random with variant\n const randomBits = new Uint8Array(8);\n if (typeof crypto !== 'undefined' && crypto.getRandomValues) {\n crypto.getRandomValues(randomBits);\n } else {\n for (let i = 0; i < 8; i++) {\n randomBits[i] = Math.floor(Math.random() * 256);\n }\n }\n\n // Set variant bits (10xx xxxx)\n randomBits[0] = (randomBits[0] & 0x3f) | 0x80;\n\n const randomHex = Array.from(randomBits)\n .map((b) => b.toString(16).padStart(2, '0'))\n .join('');\n\n // Format: xxxxxxxx-xxxx-7xxx-yxxx-xxxxxxxxxxxx\n return [\n timestampHex.slice(0, 8),\n timestampHex.slice(8, 12),\n seqHex,\n randomHex.slice(0, 4),\n randomHex.slice(4, 16),\n ].join('-');\n}\n\n/**\n * Validate if a string is a valid UUID v7\n */\nexport function isValidUuidv7(uuid: string): boolean {\n const regex = /^[0-9a-f]{8}-[0-9a-f]{4}-7[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$/i;\n return regex.test(uuid);\n}\n\n/**\n * Extract timestamp from UUID v7\n */\nexport function extractTimestamp(uuid: string): number {\n const hex = uuid.replace(/-/g, '').slice(0, 12);\n return parseInt(hex, 16);\n}\n\n/**\n * Convert UUID v7 to Date\n */\nexport function uuidv7ToDate(uuid: string): Date {\n return new Date(extractTimestamp(uuid));\n}\n\n/**\n * Compare two UUID v7s by timestamp\n */\nexport function compareUuidv7(a: string, b: string): number {\n return extractTimestamp(a) - extractTimestamp(b);\n}\n\n/**\n * Generate batch of monotonically increasing UUID v7s\n */\nexport function generateBatchUuidv7(count: number): string[] {\n const uuids: string[] = [];\n for (let i = 0; i < count; i++) {\n uuids.push(uuidv7());\n }\n return uuids;\n}\n\n/**\n * Create UUID v7 with specific timestamp\n */\nexport function uuidv7WithTimestamp(timestamp: number): string {\n const timestampHex = timestamp.toString(16).padStart(12, '0');\n const seqHex = (0x7000).toString(16);\n\n const randomBits = new Uint8Array(8);\n if (typeof crypto !== 'undefined' && crypto.getRandomValues) {\n crypto.getRandomValues(randomBits);\n } else {\n for (let i = 0; i < 8; i++) {\n randomBits[i] = Math.floor(Math.random() * 256);\n }\n }\n randomBits[0] = (randomBits[0] & 0x3f) | 0x80;\n\n const randomHex = Array.from(randomBits)\n .map((b) => b.toString(16).padStart(2, '0'))\n .join('');\n\n return [\n timestampHex.slice(0, 8),\n timestampHex.slice(8, 12),\n seqHex,\n randomHex.slice(0, 4),\n randomHex.slice(4, 16),\n ].join('-');\n}\n\n/**\n * Get age of UUID v7 in milliseconds\n */\nexport function getUuidv7Age(uuid: string): number {\n return Date.now() - extractTimestamp(uuid);\n}\n","/**\n * Kyte Client - Core SDK class for tracing and monitoring\n */\n\nimport { AsyncLocalStorage } from 'node:async_hooks';\nimport type {\n ActiveSpan,\n AigieConfig,\n Score,\n Span,\n SpanBuilder,\n SpanOptions,\n SpanType,\n SpanUpdateData,\n TokenUsage,\n Trace,\n TraceOptions,\n} from './types';\nimport { uuidv7 } from './utils/uuid';\n\n// ============================================================================\n// Context Storage\n// ============================================================================\n\ninterface TracingContext {\n traceId: string;\n spanId?: string;\n parentSpanId?: string;\n}\n\nconst contextStorage = new AsyncLocalStorage<TracingContext>();\n\n// ============================================================================\n// Global Client Instance\n// ============================================================================\n\nlet globalClient: AigieClient | null = null;\n\n/**\n * Initialize the Kyte SDK\n */\nexport function initKyte(config: AigieConfig): AigieClient {\n globalClient = new AigieClient(config);\n return globalClient;\n}\n\n/**\n * Alias for initKyte\n */\nexport const initAigie = initKyte;\n\n/**\n * Get the global Kyte client\n */\nexport function getKyte(): AigieClient {\n if (!globalClient) {\n throw new Error('Kyte SDK not initialized. Call initKyte() first.');\n }\n return globalClient;\n}\n\n/**\n * Alias for getKyte\n */\nexport const getAigie = getKyte;\n\n// ============================================================================\n// Span Builder Implementation\n// ============================================================================\n\nclass SpanBuilderImpl implements SpanBuilder {\n private client: AigieClient;\n private options: SpanOptions = {};\n\n constructor(client: AigieClient, name: string) {\n this.client = client;\n this.options.name = name;\n }\n\n setName(name: string): SpanBuilder {\n this.options.name = name;\n return this;\n }\n\n setType(type: SpanType): SpanBuilder {\n this.options.type = type;\n return this;\n }\n\n setInput(input: Record<string, any>): SpanBuilder {\n this.options.input = input;\n return this;\n }\n\n setMetadata(metadata: Record<string, any>): SpanBuilder {\n this.options.metadata = metadata;\n return this;\n }\n\n addMetadata(key: string, value: any): SpanBuilder {\n this.options.metadata = { ...this.options.metadata, [key]: value };\n return this;\n }\n\n setTags(tags: string[]): SpanBuilder {\n this.options.tags = tags;\n return this;\n }\n\n addTag(tag: string): SpanBuilder {\n this.options.tags = [...(this.options.tags || []), tag];\n return this;\n }\n\n setUserId(userId: string): SpanBuilder {\n this.options.userId = userId;\n return this;\n }\n\n setSessionId(sessionId: string): SpanBuilder {\n this.options.sessionId = sessionId;\n return this;\n }\n\n setModelName(modelName: string): SpanBuilder {\n this.options.modelName = modelName;\n return this;\n }\n\n start(): ActiveSpan {\n return this.client.startSpan(this.options);\n }\n}\n\n// ============================================================================\n// Active Span Implementation\n// ============================================================================\n\nclass ActiveSpanImpl implements ActiveSpan {\n readonly id: string;\n readonly traceId: string;\n private client: AigieClient;\n private span: Span;\n private scores: Score[] = [];\n private ended = false;\n\n constructor(client: AigieClient, span: Span) {\n this.client = client;\n this.span = span;\n this.id = span.id;\n this.traceId = span.traceId;\n }\n\n update(data: Partial<SpanUpdateData>): ActiveSpan {\n if (this.ended) {\n console.warn('Cannot update ended span');\n return this;\n }\n\n if (data.output) this.span.output = data.output;\n if (data.tokens) this.span.tokens = data.tokens;\n if (data.cost) this.span.cost = data.cost;\n if (data.metadata) this.span.metadata = { ...this.span.metadata, ...data.metadata };\n if (data.tags) this.span.tags = [...this.span.tags, ...data.tags];\n if (data.modelName) this.span.modelName = data.modelName;\n\n return this;\n }\n\n setOutput(output: Record<string, any>): ActiveSpan {\n return this.update({ output });\n }\n\n setTokens(tokens: TokenUsage): ActiveSpan {\n return this.update({ tokens });\n }\n\n setCost(cost: number): ActiveSpan {\n return this.update({ cost });\n }\n\n addScore(score: Score): ActiveSpan {\n this.scores.push(score);\n return this;\n }\n\n setError(error: Error | string): ActiveSpan {\n if (this.ended) {\n console.warn('Cannot set error on ended span');\n return this;\n }\n\n this.span.status = 'failed';\n this.span.errorMessage = typeof error === 'string' ? error : error.message;\n return this;\n }\n\n async end(): Promise<void> {\n if (this.ended) {\n console.warn('Span already ended');\n return;\n }\n\n this.ended = true;\n this.span.endTime = new Date().toISOString();\n this.span.durationNs =\n (new Date(this.span.endTime).getTime() - new Date(this.span.startTime).getTime()) * 1_000_000;\n\n if (this.span.status === 'pending') {\n this.span.status = 'success';\n }\n\n await this.client.sendSpanUpdate(this.span);\n\n // Send scores\n for (const score of this.scores) {\n await this.client.addScore(this.traceId, score, this.id);\n }\n }\n}\n\n// ============================================================================\n// Main Client\n// ============================================================================\n\nexport class AigieClient {\n private config: AigieConfig;\n private eventQueue: Record<string, any>[] = [];\n private batchTimer: NodeJS.Timeout | null = null;\n private enabled: boolean;\n\n constructor(config: AigieConfig) {\n // Env var auto-detection with priority chain\n const rawUrl =\n config.apiUrl ||\n process.env.KYTTE_URL ||\n process.env.AIGIE_URL ||\n process.env.AIGIE_API_URL ||\n '';\n // Normalize: strip trailing /v or /v1 so SDK can append /v1/... paths\n const apiUrl = rawUrl.replace(/\\/v1?\\/?$/, '');\n const apiKey =\n config.apiKey ||\n process.env.KYTTE_TOKEN ||\n process.env.AIGIE_TOKEN ||\n process.env.AIGIE_API_KEY ||\n '';\n\n this.config = {\n batchEnabled: true,\n batchSize: 10,\n batchTimeout: 5000,\n maxQueueSize: 1000,\n maxRetries: 1,\n retryDelay: 2000,\n enabled: true,\n ...config,\n apiUrl,\n apiKey,\n };\n this.enabled = this.config.enabled ?? true;\n }\n\n // ============================================================================\n // Enable/Disable\n // ============================================================================\n\n isEnabled(): boolean {\n return this.enabled;\n }\n\n disable(): void {\n this.enabled = false;\n }\n\n enable(): void {\n this.enabled = true;\n }\n\n // ============================================================================\n // Context Management\n // ============================================================================\n\n getCurrentContext(): TracingContext | undefined {\n return contextStorage.getStore();\n }\n\n // ============================================================================\n // Fluent Builder API\n // ============================================================================\n\n spanBuilder(name: string): SpanBuilder {\n return new SpanBuilderImpl(this, name);\n }\n\n startSpan(options: SpanOptions): ActiveSpan {\n const context = this.getCurrentContext();\n const spanId = uuidv7();\n const traceId = context?.traceId || uuidv7();\n\n const span: Span = {\n id: spanId,\n traceId,\n parentSpanId: context?.spanId || options.parentSpanId,\n name: options.name || 'unnamed-span',\n type: options.type || 'custom',\n input: options.input || {},\n status: 'pending',\n tags: [...(this.config.defaultTags || []), ...(options.tags || [])],\n metadata: { ...this.config.defaultMetadata, ...options.metadata },\n modelName: options.modelName,\n startTime: new Date().toISOString(),\n createdAt: new Date().toISOString(),\n };\n\n // Send span-create event immediately\n this.queueEvent(this.spanToEvent(span));\n\n return new ActiveSpanImpl(this, span);\n }\n\n // ============================================================================\n // Trace API\n // ============================================================================\n\n async trace<T>(name: string, fn: () => T | Promise<T>, options: TraceOptions = {}): Promise<T> {\n if (!this.enabled) {\n return fn();\n }\n\n const traceId = uuidv7();\n const trace: Trace = {\n id: traceId,\n name,\n type: options.type || 'chain',\n input: options.input || {},\n status: 'pending',\n tags: [...(this.config.defaultTags || []), ...(options.tags || [])],\n metadata: { ...this.config.defaultMetadata, ...options.metadata },\n projectName: this.config.projectName,\n userId: options.userId || this.config.defaultUserId,\n sessionId: options.sessionId || this.config.defaultSessionId,\n startTime: new Date().toISOString(),\n createdAt: new Date().toISOString(),\n };\n\n const context: TracingContext = { traceId };\n\n // Send trace-create event immediately\n this.queueEvent(this.traceToEvent(trace));\n\n try {\n const result = await contextStorage.run(context, async () => {\n return await fn();\n });\n\n trace.status = 'success';\n trace.output = { result: typeof result === 'object' ? result : { value: result } };\n trace.endTime = new Date().toISOString();\n trace.durationNs =\n (new Date(trace.endTime).getTime() - new Date(trace.startTime).getTime()) * 1_000_000;\n\n await this.sendTraceUpdate(trace);\n return result;\n } catch (error) {\n trace.status = 'failed';\n trace.errorMessage = error instanceof Error ? error.message : String(error);\n trace.endTime = new Date().toISOString();\n trace.durationNs =\n (new Date(trace.endTime).getTime() - new Date(trace.startTime).getTime()) * 1_000_000;\n\n await this.sendTraceUpdate(trace);\n throw error;\n }\n }\n\n // ============================================================================\n // Span API\n // ============================================================================\n\n async span<T>(name: string, fn: () => T | Promise<T>, options: SpanOptions = {}): Promise<T> {\n if (!this.enabled) {\n return fn();\n }\n\n const context = this.getCurrentContext();\n if (!context) {\n // No active trace, create one\n return this.trace(name, fn, options);\n }\n\n const spanId = uuidv7();\n const span: Span = {\n id: spanId,\n traceId: context.traceId,\n parentSpanId: context.spanId || options.parentSpanId,\n name,\n type: options.type || 'custom',\n input: options.input || {},\n status: 'pending',\n tags: [...(this.config.defaultTags || []), ...(options.tags || [])],\n metadata: { ...this.config.defaultMetadata, ...options.metadata },\n modelName: options.modelName,\n startTime: new Date().toISOString(),\n createdAt: new Date().toISOString(),\n };\n\n const newContext: TracingContext = {\n traceId: context.traceId,\n spanId,\n parentSpanId: context.spanId,\n };\n\n // Send span-create event immediately\n this.queueEvent(this.spanToEvent(span));\n\n try {\n const result = await contextStorage.run(newContext, async () => {\n return await fn();\n });\n\n span.status = 'success';\n span.output = { result: typeof result === 'object' ? result : { value: result } };\n span.endTime = new Date().toISOString();\n span.durationNs =\n (new Date(span.endTime).getTime() - new Date(span.startTime).getTime()) * 1_000_000;\n\n await this.sendSpanUpdate(span);\n return result;\n } catch (error) {\n span.status = 'failed';\n span.errorMessage = error instanceof Error ? error.message : String(error);\n span.endTime = new Date().toISOString();\n span.durationNs =\n (new Date(span.endTime).getTime() - new Date(span.startTime).getTime()) * 1_000_000;\n\n await this.sendSpanUpdate(span);\n throw error;\n }\n }\n\n // ============================================================================\n // Score API\n // ============================================================================\n\n async addScore(traceId: string, score: Score, spanId?: string): Promise<void> {\n if (!this.enabled) return;\n\n try {\n await this.sendToApi('/v1/scores', {\n traceId,\n spanId,\n ...score,\n });\n } catch (error) {\n if (this.config.debug) {\n console.error('Failed to add score:', error);\n }\n }\n }\n\n // ============================================================================\n // Send APIs\n // ============================================================================\n\n async sendTraceUpdate(trace: Trace): Promise<void> {\n if (!this.enabled) return;\n\n const event = this.traceUpdateEvent(trace);\n if (this.config.batchEnabled) {\n this.queueEvent(event);\n } else {\n await this.sendToApi('/v1/ingestion', { batch: [event] });\n }\n }\n\n async sendSpanUpdate(span: Span): Promise<void> {\n if (!this.enabled) return;\n\n const event = this.spanUpdateEvent(span);\n if (this.config.batchEnabled) {\n this.queueEvent(event);\n } else {\n await this.sendToApi('/v1/ingestion', { batch: [event] });\n }\n }\n\n // ============================================================================\n // Batching\n // ============================================================================\n\n private queueEvent(event: Record<string, any>): void {\n const maxSize = this.config.maxQueueSize || 1000;\n if (this.eventQueue.length >= maxSize) {\n // Drop oldest events to prevent memory leaks\n this.eventQueue.splice(0, this.eventQueue.length - maxSize + 1);\n if (this.config.debug) {\n console.warn(`Event queue exceeded max size (${maxSize}), dropping oldest events`);\n }\n }\n\n this.eventQueue.push(event);\n\n if (this.eventQueue.length >= (this.config.batchSize || 10)) {\n this.flushBatch();\n } else if (!this.batchTimer) {\n this.batchTimer = setTimeout(() => {\n this.flushBatch();\n }, this.config.batchTimeout || 5000);\n }\n }\n\n private mapSpanType(type: string): string {\n const typeMap: Record<string, string> = {\n llm: 'generation',\n custom: 'span',\n chain: 'span',\n tool: 'tool',\n retrieval: 'retrieval',\n retriever: 'retrieval',\n agent: 'agent',\n embedding: 'generation',\n prompt: 'span',\n guardrail: 'span',\n evaluation: 'span',\n remediation: 'span',\n };\n return typeMap[type] || 'span';\n }\n\n private traceToEvent(trace: Trace): Record<string, any> {\n return {\n id: uuidv7(),\n timestamp: new Date().toISOString(),\n type: 'trace-create',\n body: {\n id: trace.id,\n name: trace.name,\n input: trace.input,\n output: trace.output,\n status: trace.status,\n status_message: trace.errorMessage,\n metadata: trace.metadata,\n tags: trace.tags,\n user_id: trace.userId,\n session_id: trace.sessionId,\n environment: this.config.environment,\n start_time: trace.startTime,\n end_time: trace.endTime,\n duration_ns: trace.durationNs,\n },\n };\n }\n\n private buildTokenUsage(tokens?: TokenUsage) {\n if (!tokens) return undefined;\n return {\n prompt_tokens: tokens.prompt,\n completion_tokens: tokens.completion,\n total_tokens: tokens.total,\n cached_tokens: tokens.cached,\n };\n }\n\n private spanToEvent(span: Span): Record<string, any> {\n return {\n id: uuidv7(),\n timestamp: new Date().toISOString(),\n type: 'span-create',\n body: {\n id: span.id,\n trace_id: span.traceId,\n parent_id: span.parentSpanId,\n name: span.name,\n type: this.mapSpanType(span.type),\n start_time: span.startTime,\n input: span.input,\n model: span.modelName,\n metadata: span.metadata,\n tags: span.tags,\n status: span.status,\n },\n };\n }\n\n private traceUpdateEvent(trace: Trace): Record<string, any> {\n return {\n id: uuidv7(),\n timestamp: new Date().toISOString(),\n type: 'trace-update',\n body: {\n id: trace.id,\n output: trace.output,\n status: trace.status,\n status_message: trace.errorMessage,\n end_time: trace.endTime,\n duration_ns: trace.durationNs,\n },\n };\n }\n\n private spanUpdateEvent(span: Span): Record<string, any> {\n return {\n id: uuidv7(),\n timestamp: new Date().toISOString(),\n type: 'span-update',\n body: {\n id: span.id,\n trace_id: span.traceId,\n output: span.output,\n status: span.status,\n status_message: span.errorMessage,\n end_time: span.endTime,\n duration_ns: span.durationNs,\n token_usage: this.buildTokenUsage(span.tokens),\n cost: span.cost,\n },\n };\n }\n\n private async flushBatch(): Promise<void> {\n if (this.batchTimer) {\n clearTimeout(this.batchTimer);\n this.batchTimer = null;\n }\n\n if (this.eventQueue.length === 0) return;\n\n const events = [...this.eventQueue];\n this.eventQueue = [];\n\n // Sort events: trace-create first, then span-create, span-update, trace-update last\n const typePriority: Record<string, number> = {\n 'trace-create': 0,\n 'span-create': 1,\n 'span-update': 2,\n 'trace-update': 3,\n };\n\n events.sort((a, b) => (typePriority[a.type] ?? 99) - (typePriority[b.type] ?? 99));\n\n const maxRetries = this.config.maxRetries ?? 1;\n const retryDelay = this.config.retryDelay ?? 2000;\n\n for (let attempt = 0; attempt <= maxRetries; attempt++) {\n try {\n await this.sendToApi('/v1/ingestion', { batch: events });\n return;\n } catch (error) {\n if (attempt < maxRetries) {\n const delay = retryDelay * 2 ** attempt;\n await new Promise((resolve) => setTimeout(resolve, delay));\n } else {\n if (this.config.onError) {\n this.config.onError(error instanceof Error ? error : new Error(String(error)));\n }\n if (this.config.debug) {\n console.error('Failed to send batch after retries:', error);\n }\n }\n }\n }\n }\n\n // ============================================================================\n // API Communication\n // ============================================================================\n\n private async sendToApi(endpoint: string, data: any): Promise<any> {\n const response = await fetch(`${this.config.apiUrl}${endpoint}`, {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json',\n 'X-API-Key': this.config.apiKey,\n 'X-Project-Name': this.config.projectName || '',\n },\n body: JSON.stringify(data),\n });\n\n if (!response.ok) {\n throw new Error(`API error: ${response.status} ${response.statusText}`);\n }\n\n return response;\n }\n\n // ============================================================================\n // Shutdown\n // ============================================================================\n\n /**\n * Force flush all pending spans and signals immediately.\n * Unlike shutdown(), this does not disable the client afterwards.\n */\n async forceFlush(): Promise<void> {\n await this.flushBatch();\n }\n\n async shutdown(): Promise<void> {\n await this.flushBatch();\n this.disable();\n }\n}\n\n// Export aliases\nexport { AigieClient as KyteClient };\n","type TestFn = (name: string, fn: () => void | Promise<void>, timeout?: number) => void;\n\nexport function wrapJest(testFn: TestFn): TestFn {\n return (name: string, fn: () => void | Promise<void>, timeout?: number) => {\n testFn(\n name,\n async () => {\n let client: any;\n try {\n const { getKyte } = await import('../client');\n client = getKyte();\n } catch {\n return fn();\n }\n\n return client.trace(\n `test: ${name}`,\n async () => {\n return fn();\n },\n { type: 'custom', metadata: { testFramework: 'jest' } },\n );\n },\n timeout,\n );\n };\n}\n","type TestFn = (name: string, fn: () => void | Promise<void>, timeout?: number) => void;\n\nexport function wrapVitest(testFn: TestFn): TestFn {\n return (name: string, fn: () => void | Promise<void>, timeout?: number) => {\n testFn(\n name,\n async () => {\n // Dynamically get client if initialized\n let client: any;\n try {\n const { getKyte } = await import('../client');\n client = getKyte();\n } catch {\n // SDK not initialized, run test without tracing\n return fn();\n }\n\n return client.trace(\n `test: ${name}`,\n async () => {\n return fn();\n },\n { type: 'custom', metadata: { testFramework: 'vitest' } },\n );\n },\n timeout,\n );\n };\n}\n"]}
|