MCPcopy Index your code
hub / github.com/Effect-TS/effect / onMessage

Function onMessage

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

Source from the content-addressed store, hash-verified

40
41 return yield* Effect.async<void>((resume) => {
42 const onMessage = (event: any) => {
43 let messageId: number
44 const message = event.data as OpfsWorkerMessage
45 try {
46 switch (message[0]) {
47 case "close": {
48 options.port.close()
49 return resume(Effect.void)
50 }
51 case "import": {
52 const [, id, data] = message
53 messageId = id
54 sqlite3.deserialize(db, "main", data, data.length, data.length, 1 | 2)
55 options.port.postMessage([id, void 0, void 0])
56 return
57 }
58 case "export": {
59 const [, id] = message
60 messageId = id
61 const data = sqlite3.serialize(db, "main")
62 options.port.postMessage([id, undefined, data], [data.buffer])
63 return
64 }
65 case "update_hook": {
66 messageId = -1
67 sqlite3.update_hook(db, (_op, _db, table, rowid) => {
68 if (!table) return
69 options.port.postMessage(["update_hook", table, Number(rowid)])
70 })
71 return
72 }
73 default: {
74 const [id, sql, params] = message
75 messageId = id
76 const results: Array<any> = []
77 let columns: Array<string> | undefined
78 for (const stmt of sqlite3.statements(db, sql)) {
79 sqlite3.bind_collection(stmt, params as any)
80 while (sqlite3.step(stmt) === WaSqlite.SQLITE_ROW) {
81 columns = columns ?? sqlite3.column_names(stmt)
82 const row = sqlite3.row(stmt)
83 results.push(row)
84 }
85 }
86 options.port.postMessage([id, undefined, [columns, results]])
87 return
88 }
89 }
90 } catch (e: any) {
91 const message = "message" in e ? e.message : String(e)
92 options.port.postMessage([messageId!, message, undefined])
93 }
94 }
95 options.port.addEventListener("message", onMessage)
96 options.port.postMessage(["ready", undefined, undefined])
97 return Effect.sync(() => {

Callers

nothing calls this directly

Calls 5

NumberInterface · 0.85
StringInterface · 0.85
closeMethod · 0.65
stepMethod · 0.65
resumeFunction · 0.50

Tested by

no test coverage detected