MCPcopy Create free account
hub / github.com/Effect-TS/effect / onMessage

Function onMessage

packages/sql/sqlite-wasm/src/OpfsWorker.ts:62–114  ·  view source on GitHub ↗
(event: any)

Source from the content-addressed store, hash-verified

60
61 return yield* Effect.callback<void>((resume) => {
62 const onMessage = (event: any) => {
63 let messageId: number
64 const message = event.data as OpfsWorkerMessage
65 try {
66 switch (message[0]) {
67 case "close": {
68 options.port.close()
69 return resume(Effect.void)
70 }
71 case "import": {
72 const [, id, data] = message
73 messageId = id
74 sqlite3.deserialize(db, "main", data, data.length, data.length, 1 | 2)
75 options.port.postMessage([id, void 0, void 0])
76 return
77 }
78 case "export": {
79 const [, id] = message
80 messageId = id
81 const data = sqlite3.serialize(db, "main")
82 options.port.postMessage([id, undefined, data], [data.buffer])
83 return
84 }
85 case "update_hook": {
86 messageId = -1
87 sqlite3.update_hook(db, (_op, _db, table, rowid) => {
88 if (!table) return
89 options.port.postMessage(["update_hook", table, Number(rowid)])
90 })
91 return
92 }
93 default: {
94 const [id, sql, params] = message
95 messageId = id
96 const results: Array<any> = []
97 let columns: Array<string> | undefined
98 for (const stmt of sqlite3.statements(db, sql)) {
99 sqlite3.bind_collection(stmt, params as any)
100 while (sqlite3.step(stmt) === WaSqlite.SQLITE_ROW) {
101 columns = columns ?? sqlite3.column_names(stmt)
102 const row = sqlite3.row(stmt)
103 results.push(row)
104 }
105 }
106 options.port.postMessage([id, undefined, [columns, results]])
107 return
108 }
109 }
110 } catch (e: any) {
111 const message = "message" in e ? e.message : String(e)
112 options.port.postMessage([messageId!, message, undefined])
113 }
114 }
115 options.port.addEventListener("message", onMessage)
116 options.port.postMessage(["ready", undefined, undefined])
117 return Effect.sync(() => {

Callers

nothing calls this directly

Calls 6

pushMethod · 0.80
closeMethod · 0.65
resumeFunction · 0.50
NumberInterface · 0.50
StringInterface · 0.50
postMessageMethod · 0.45

Tested by

no test coverage detected