@mastra/core
Version:
Mastra is a framework for building AI-powered applications and agents with a modern TypeScript stack.
1 lines • 26.1 kB
Source Map (JSON)
{"version":3,"sources":["../../src/events/unix-socket-pubsub.ts"],"names":["PubSub","unlink","mkdir","dirname","net","randomUUID"],"mappings":"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","file":"index.cjs","sourcesContent":["import { randomUUID } from 'node:crypto';\nimport { mkdir, unlink } from 'node:fs/promises';\nimport net from 'node:net';\nimport { dirname } from 'node:path';\n\nimport { PubSub } from './pubsub';\nimport type { PubSubDeliveryMode } from './pubsub';\nimport type { Event, EventCallback, SubscribeOptions } from './types';\n\ntype ClientFrame =\n | { type: 'subscribe'; topic: string }\n | { type: 'unsubscribe'; topic: string }\n | { type: 'publish'; topic: string; event: Omit<Event, 'id' | 'createdAt'> }\n | { type: 'ack'; id?: string }\n | { type: 'nack'; id?: string };\n\ntype ServerFrame = { type: 'event'; topic: string; event: Event } | { type: 'subscribed'; topic: string };\n\ntype BrokerClient = {\n socket: net.Socket;\n subscriptions: Set<string>;\n};\n\ntype SubscribeWaiter = {\n resolve: () => void;\n reject: (error: Error) => void;\n};\n\nfunction writeFrame(socket: net.Socket, frame: ClientFrame | ServerFrame): Promise<void> {\n return new Promise((resolve, reject) => {\n const onError = (error: Error) => {\n socket.off('drain', onDrain);\n reject(error);\n };\n const onDrain = () => {\n socket.off('error', onError);\n resolve();\n };\n\n socket.once('error', onError);\n const drained = socket.write(`${JSON.stringify(frame)}\\n`, () => {\n if (drained) {\n socket.off('error', onError);\n resolve();\n }\n });\n if (!drained) {\n socket.once('drain', onDrain);\n }\n });\n}\n\nfunction nextTick(): Promise<void> {\n return new Promise(resolve => setImmediate(resolve));\n}\n\nfunction readFrames(socket: net.Socket, onFrame: (frame: any) => void) {\n let buffer = '';\n socket.setEncoding('utf8');\n socket.on('data', chunk => {\n buffer += chunk;\n while (true) {\n const newlineIndex = buffer.indexOf('\\n');\n if (newlineIndex === -1) break;\n const line = buffer.slice(0, newlineIndex);\n buffer = buffer.slice(newlineIndex + 1);\n if (!line.trim()) continue;\n try {\n onFrame(JSON.parse(line));\n } catch {\n // Ignore malformed frames. The transport is local IPC and callers can retry.\n }\n }\n });\n}\n\nexport class UnixSocketPubSub extends PubSub {\n readonly socketPath: string;\n #server?: net.Server;\n #clientSocket?: net.Socket;\n #isBroker = false;\n #closed = false;\n #starting?: Promise<void>;\n #callbacks = new Map<string, Set<EventCallback>>();\n #subscribeWaiters = new Map<string, SubscribeWaiter[]>();\n #brokerClients = new Map<net.Socket, BrokerClient>();\n #pendingWrites: Promise<void>[] = [];\n\n constructor(socketPath: string) {\n super();\n this.socketPath = socketPath;\n }\n\n override get supportedModes(): ReadonlyArray<PubSubDeliveryMode> {\n return ['push'];\n }\n\n get isBroker(): boolean {\n return this.#isBroker;\n }\n\n async publish(topic: string, event: Omit<Event, 'id' | 'createdAt'>): Promise<void> {\n await this.#ensureStarted();\n if (this.#isBroker) {\n await this.#publishFromBroker(topic, event);\n return;\n }\n\n const socket = this.#clientSocket;\n if (!socket || socket.destroyed) {\n await this.#ensureStarted(true);\n }\n await this.#sendToBroker({ type: 'publish', topic, event });\n }\n\n async subscribe(topic: string, cb: EventCallback, options?: SubscribeOptions): Promise<void> {\n if (options?.group) {\n throw new Error('UnixSocketPubSub does not support grouped subscriptions yet');\n }\n\n const callbacks = this.#callbacks.get(topic) ?? new Set<EventCallback>();\n const hadCallback = callbacks.has(cb);\n const wasConnected = Boolean(this.#clientSocket && !this.#clientSocket.destroyed);\n callbacks.add(cb);\n this.#callbacks.set(topic, callbacks);\n\n try {\n await this.#ensureStarted();\n if (!this.#isBroker && !hadCallback && wasConnected) {\n await this.#sendSubscribeToBroker(topic);\n }\n } catch (error) {\n if (!hadCallback) {\n callbacks.delete(cb);\n if (callbacks.size === 0) {\n this.#callbacks.delete(topic);\n }\n }\n throw error;\n }\n }\n\n async unsubscribe(topic: string, cb: EventCallback): Promise<void> {\n const callbacks = this.#callbacks.get(topic);\n callbacks?.delete(cb);\n if (callbacks?.size === 0) {\n this.#callbacks.delete(topic);\n if (!this.#isBroker && this.#clientSocket && !this.#clientSocket.destroyed) {\n await this.#sendToBroker({ type: 'unsubscribe', topic });\n await nextTick();\n }\n }\n }\n\n async flush(): Promise<void> {\n await Promise.allSettled(this.#pendingWrites);\n this.#pendingWrites = [];\n }\n\n async close(): Promise<void> {\n this.#closed = true;\n this.#callbacks.clear();\n\n this.#clientSocket?.destroy();\n this.#clientSocket = undefined;\n this.#rejectSubscribeWaiters(new Error('UnixSocketPubSub is closed'));\n\n for (const client of this.#brokerClients.values()) {\n client.socket.destroy();\n }\n this.#brokerClients.clear();\n\n if (this.#server) {\n await new Promise<void>(resolve => this.#server?.close(() => resolve()));\n this.#server = undefined;\n }\n\n if (this.#isBroker) {\n await unlink(this.socketPath).catch(() => {});\n }\n this.#isBroker = false;\n }\n\n async #ensureStarted(forceReconnect = false): Promise<void> {\n if (this.#closed) {\n throw new Error('UnixSocketPubSub is closed');\n }\n if (!forceReconnect && (this.#isBroker || (this.#clientSocket && !this.#clientSocket.destroyed))) {\n return;\n }\n if (this.#starting) {\n return this.#starting;\n }\n\n this.#starting = this.#start(forceReconnect).finally(() => {\n this.#starting = undefined;\n });\n return this.#starting;\n }\n\n async #start(forceReconnect: boolean): Promise<void> {\n if (forceReconnect) {\n this.#clientSocket?.destroy();\n this.#clientSocket = undefined;\n this.#isBroker = false;\n }\n\n this.#throwIfClosed();\n await mkdir(dirname(this.socketPath), { recursive: true });\n this.#throwIfClosed();\n\n try {\n await this.#listen();\n this.#throwIfClosed();\n this.#isBroker = true;\n return;\n } catch (error) {\n if (this.#closed) {\n await this.close();\n throw new Error('UnixSocketPubSub is closed');\n }\n const code = (error as NodeJS.ErrnoException).code;\n if (code !== 'EADDRINUSE') throw error;\n }\n\n try {\n await this.#connectClient();\n this.#throwIfClosed();\n } catch (error) {\n if (this.#closed) {\n await this.close();\n throw new Error('UnixSocketPubSub is closed');\n }\n const code = (error as NodeJS.ErrnoException).code;\n if (code === 'ECONNREFUSED' || code === 'ENOENT' || code === 'ENOTSOCK') {\n await unlink(this.socketPath).catch(() => {});\n this.#throwIfClosed();\n await this.#listen();\n this.#throwIfClosed();\n this.#isBroker = true;\n return;\n }\n throw error;\n }\n }\n\n #throwIfClosed() {\n if (this.#closed) {\n throw new Error('UnixSocketPubSub is closed');\n }\n }\n\n #listen(): Promise<void> {\n return new Promise((resolve, reject) => {\n const server = net.createServer(socket => this.#handleBrokerClient(socket));\n const onError = (error: Error) => {\n server.off('listening', onListening);\n reject(error);\n };\n const onListening = () => {\n server.off('error', onError);\n this.#server = server;\n resolve();\n };\n\n server.once('error', onError);\n server.once('listening', onListening);\n server.listen(this.socketPath);\n });\n }\n\n #connectClient(): Promise<void> {\n return new Promise((resolve, reject) => {\n const socket = net.createConnection(this.socketPath);\n const onError = (error: Error) => {\n socket.off('connect', onConnect);\n reject(error);\n };\n const onConnect = () => {\n socket.off('error', onError);\n this.#clientSocket = socket;\n this.#isBroker = false;\n readFrames(socket, frame => this.#handleServerFrame(frame));\n socket.on('close', () => {\n if (this.#clientSocket === socket) this.#clientSocket = undefined;\n this.#rejectSubscribeWaiters(new Error('UnixSocketPubSub broker connection closed'));\n });\n socket.on('error', error => {\n if (this.#clientSocket === socket) this.#clientSocket = undefined;\n this.#rejectSubscribeWaiters(error);\n });\n void this.#resubscribeClient().then(resolve, reject);\n };\n\n socket.once('error', onError);\n socket.once('connect', onConnect);\n });\n }\n\n async #resubscribeClient() {\n for (const topic of this.#callbacks.keys()) {\n await this.#sendSubscribeToBroker(topic);\n }\n }\n\n async #sendSubscribeToBroker(topic: string): Promise<void> {\n let waiter: SubscribeWaiter | undefined;\n const subscribed = new Promise<void>((resolve, reject) => {\n waiter = { resolve, reject };\n const waiters = this.#subscribeWaiters.get(topic) ?? [];\n waiters.push(waiter);\n this.#subscribeWaiters.set(topic, waiters);\n });\n try {\n await this.#sendToBroker({ type: 'subscribe', topic });\n } catch (error) {\n this.#removeSubscribeWaiter(topic, waiter);\n throw error;\n }\n await subscribed;\n }\n\n #removeSubscribeWaiter(topic: string, waiter: SubscribeWaiter | undefined) {\n if (!waiter) return;\n const waiters = this.#subscribeWaiters.get(topic);\n if (!waiters) return;\n const nextWaiters = waiters.filter(item => item !== waiter);\n if (nextWaiters.length === 0) {\n this.#subscribeWaiters.delete(topic);\n return;\n }\n this.#subscribeWaiters.set(topic, nextWaiters);\n }\n\n #settleSubscribeWaiters(topic: string, error?: Error) {\n const waiters = this.#subscribeWaiters.get(topic);\n this.#subscribeWaiters.delete(topic);\n if (error) {\n waiters?.forEach(waiter => waiter.reject(error));\n return;\n }\n waiters?.forEach(waiter => waiter.resolve());\n }\n\n #rejectSubscribeWaiters(error: Error) {\n for (const topic of this.#subscribeWaiters.keys()) {\n this.#settleSubscribeWaiters(topic, error);\n }\n }\n\n #handleBrokerClient(socket: net.Socket) {\n const client: BrokerClient = { socket, subscriptions: new Set() };\n this.#brokerClients.set(socket, client);\n readFrames(socket, frame => {\n const clientFrame = frame as ClientFrame;\n if (clientFrame.type === 'subscribe') {\n client.subscriptions.add(clientFrame.topic);\n void writeFrame(socket, { type: 'subscribed', topic: clientFrame.topic }).catch(() => {});\n } else if (clientFrame.type === 'unsubscribe') {\n client.subscriptions.delete(clientFrame.topic);\n } else if (clientFrame.type === 'publish') {\n void this.#publishFromBroker(clientFrame.topic, clientFrame.event);\n }\n });\n socket.on('close', () => this.#brokerClients.delete(socket));\n socket.on('error', () => this.#brokerClients.delete(socket));\n }\n\n #handleServerFrame(frame: ServerFrame) {\n if (frame.type === 'subscribed') {\n this.#settleSubscribeWaiters(frame.topic);\n return;\n }\n if (frame.type !== 'event') return;\n const event = {\n ...frame.event,\n createdAt: new Date(frame.event.createdAt),\n };\n this.#deliverLocal(frame.topic, event);\n }\n\n async #publishFromBroker(topic: string, event: Omit<Event, 'id' | 'createdAt'>) {\n const brokerEvent: Event = {\n ...event,\n id: randomUUID(),\n createdAt: new Date(),\n deliveryAttempt: 1,\n };\n\n this.#deliverLocal(topic, brokerEvent);\n\n const frame: ServerFrame = { type: 'event', topic, event: brokerEvent };\n for (const client of this.#brokerClients.values()) {\n if (!client.subscriptions.has(topic) || client.socket.destroyed) continue;\n const write = writeFrame(client.socket, frame).catch(() => {});\n this.#pendingWrites.push(write);\n }\n await this.flush();\n }\n\n #deliverLocal(topic: string, event: Event) {\n const callbacks = this.#callbacks.get(topic);\n if (!callbacks) return;\n for (const cb of callbacks) {\n try {\n const result = (cb as (event: Event, ack: () => Promise<void>, nack: () => Promise<void>) => unknown)(\n event,\n async () => {},\n async () => {},\n );\n if (result && typeof (result as Promise<void>).catch === 'function') {\n void (result as Promise<void>).catch(() => {});\n }\n } catch {\n // Ignore subscriber failures so one callback cannot poison topic delivery.\n }\n }\n }\n\n async #sendToBroker(frame: ClientFrame) {\n const socket = this.#clientSocket;\n if (!socket || socket.destroyed) {\n await this.#ensureStarted(true);\n }\n const activeSocket = this.#clientSocket;\n if (!activeSocket || activeSocket.destroyed) {\n throw new Error('UnixSocketPubSub is not connected to a broker');\n }\n await writeFrame(activeSocket, frame);\n }\n}\n"]}