MCPcopy Create free account
hub / github.com/upstash/jstack / handleEvent

Method handleEvent

packages/jstack-shared/src/event-emitter.ts:58–110  ·  view source on GitHub ↗
(eventName: string, data: any)

Source from the content-addressed store, hash-verified

56 }
57
58 handleEvent(eventName: string, data: any) {
59 const handlers = this.eventHandlers.get(eventName)
60
61 if (!handlers?.length) {
62 logger.warn(
63 `No handlers registered for event "${eventName}". Did you forget to call .on("${eventName}", handler)?`
64 )
65 return
66 }
67
68 let validatedData = data
69 if (this.incomingSchema) {
70 try {
71 validatedData = this.incomingSchema.parse(data)
72 } catch (err) {
73 if (err instanceof z.ZodError) {
74 logger.error(`Invalid incoming event data for "${eventName}":`, {
75 errors: err.errors
76 .map((e) => `${e.path.join(".")}: ${e.message}`)
77 .join(", "),
78 data: JSON.stringify(data, null, 2),
79 })
80 } else {
81 logger.error(`Error validating incoming event "${eventName}":`, err)
82 }
83 return
84 }
85 }
86
87 let hasErrors = false
88 handlers.forEach((handler, index) => {
89 try {
90 handler(validatedData)
91 } catch (err) {
92 hasErrors = true
93 const error = err instanceof Error ? err : new Error(String(err))
94 logger.error(
95 `Error in handler ${index + 1}/${handlers.length} for event "${eventName}":`,
96 {
97 error: error.message,
98 stack: error.stack,
99 data: JSON.stringify(validatedData, null, 2),
100 }
101 )
102 }
103 })
104
105 if (hasErrors) {
106 throw new Error(
107 `One or more handlers failed for event "${eventName}". Check logs for details.`
108 )
109 }
110 }
111
112 off(event: string, callback?: (data: any) => any) {
113 if (!callback) {

Callers

nothing calls this directly

Calls 2

getMethod · 0.80
joinMethod · 0.80

Tested by

no test coverage detected