mongo.do 0.1.0

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.
Files changed (707) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +454 -0
  3. package/dist/agentfs/adapters/anthropic.d.ts +176 -0
  4. package/dist/agentfs/adapters/anthropic.d.ts.map +1 -0
  5. package/dist/agentfs/adapters/anthropic.js +629 -0
  6. package/dist/agentfs/adapters/anthropic.js.map +1 -0
  7. package/dist/agentfs/adapters/index.d.ts +21 -0
  8. package/dist/agentfs/adapters/index.d.ts.map +1 -0
  9. package/dist/agentfs/adapters/index.js +23 -0
  10. package/dist/agentfs/adapters/index.js.map +1 -0
  11. package/dist/agentfs/adapters/vercel.d.ts +260 -0
  12. package/dist/agentfs/adapters/vercel.d.ts.map +1 -0
  13. package/dist/agentfs/adapters/vercel.js +288 -0
  14. package/dist/agentfs/adapters/vercel.js.map +1 -0
  15. package/dist/agentfs/glob.d.ts +116 -0
  16. package/dist/agentfs/glob.d.ts.map +1 -0
  17. package/dist/agentfs/glob.js +270 -0
  18. package/dist/agentfs/glob.js.map +1 -0
  19. package/dist/agentfs/grep.d.ts +83 -0
  20. package/dist/agentfs/grep.d.ts.map +1 -0
  21. package/dist/agentfs/grep.js +193 -0
  22. package/dist/agentfs/grep.js.map +1 -0
  23. package/dist/agentfs/index.d.ts +22 -0
  24. package/dist/agentfs/index.d.ts.map +1 -0
  25. package/dist/agentfs/index.js +18 -0
  26. package/dist/agentfs/index.js.map +1 -0
  27. package/dist/agentfs/kv-store.d.ts +128 -0
  28. package/dist/agentfs/kv-store.d.ts.map +1 -0
  29. package/dist/agentfs/kv-store.js +227 -0
  30. package/dist/agentfs/kv-store.js.map +1 -0
  31. package/dist/agentfs/mondo-agent.d.ts +255 -0
  32. package/dist/agentfs/mondo-agent.d.ts.map +1 -0
  33. package/dist/agentfs/mondo-agent.js +879 -0
  34. package/dist/agentfs/mondo-agent.js.map +1 -0
  35. package/dist/agentfs/toolcalls.d.ts +130 -0
  36. package/dist/agentfs/toolcalls.d.ts.map +1 -0
  37. package/dist/agentfs/toolcalls.js +178 -0
  38. package/dist/agentfs/toolcalls.js.map +1 -0
  39. package/dist/agentfs/types.d.ts +171 -0
  40. package/dist/agentfs/types.d.ts.map +1 -0
  41. package/dist/agentfs/types.js +7 -0
  42. package/dist/agentfs/types.js.map +1 -0
  43. package/dist/agentfs/vfs.d.ts +249 -0
  44. package/dist/agentfs/vfs.d.ts.map +1 -0
  45. package/dist/agentfs/vfs.js +469 -0
  46. package/dist/agentfs/vfs.js.map +1 -0
  47. package/dist/cli/index.d.ts +15 -0
  48. package/dist/cli/index.d.ts.map +1 -0
  49. package/dist/cli/index.js +219 -0
  50. package/dist/cli/index.js.map +1 -0
  51. package/dist/cli/mcp.d.ts +119 -0
  52. package/dist/cli/mcp.d.ts.map +1 -0
  53. package/dist/cli/mcp.js +418 -0
  54. package/dist/cli/mcp.js.map +1 -0
  55. package/dist/cli/server.d.ts +179 -0
  56. package/dist/cli/server.d.ts.map +1 -0
  57. package/dist/cli/server.js +441 -0
  58. package/dist/cli/server.js.map +1 -0
  59. package/dist/client/Collection.d.ts +199 -0
  60. package/dist/client/Collection.d.ts.map +1 -0
  61. package/dist/client/Collection.js +256 -0
  62. package/dist/client/Collection.js.map +1 -0
  63. package/dist/client/Database.d.ts +68 -0
  64. package/dist/client/Database.d.ts.map +1 -0
  65. package/dist/client/Database.js +105 -0
  66. package/dist/client/Database.js.map +1 -0
  67. package/dist/client/MongoClient.d.ts +165 -0
  68. package/dist/client/MongoClient.d.ts.map +1 -0
  69. package/dist/client/MongoClient.js +307 -0
  70. package/dist/client/MongoClient.js.map +1 -0
  71. package/dist/client/aggregation-cursor.d.ts +210 -0
  72. package/dist/client/aggregation-cursor.d.ts.map +1 -0
  73. package/dist/client/aggregation-cursor.js +509 -0
  74. package/dist/client/aggregation-cursor.js.map +1 -0
  75. package/dist/client/bulk-write.d.ts +216 -0
  76. package/dist/client/bulk-write.d.ts.map +1 -0
  77. package/dist/client/bulk-write.js +63 -0
  78. package/dist/client/bulk-write.js.map +1 -0
  79. package/dist/client/change-stream.d.ts +245 -0
  80. package/dist/client/change-stream.d.ts.map +1 -0
  81. package/dist/client/change-stream.js +429 -0
  82. package/dist/client/change-stream.js.map +1 -0
  83. package/dist/client/cursor.d.ts +85 -0
  84. package/dist/client/cursor.d.ts.map +1 -0
  85. package/dist/client/cursor.js +156 -0
  86. package/dist/client/cursor.js.map +1 -0
  87. package/dist/client/http-cursor.d.ts +233 -0
  88. package/dist/client/http-cursor.d.ts.map +1 -0
  89. package/dist/client/http-cursor.js +496 -0
  90. package/dist/client/http-cursor.js.map +1 -0
  91. package/dist/client/index.d.ts +18 -0
  92. package/dist/client/index.d.ts.map +1 -0
  93. package/dist/client/index.js +24 -0
  94. package/dist/client/index.js.map +1 -0
  95. package/dist/client/mongo-client.d.ts +60 -0
  96. package/dist/client/mongo-client.d.ts.map +1 -0
  97. package/dist/client/mongo-client.js +190 -0
  98. package/dist/client/mongo-client.js.map +1 -0
  99. package/dist/client/mongo-collection.d.ts +359 -0
  100. package/dist/client/mongo-collection.d.ts.map +1 -0
  101. package/dist/client/mongo-collection.js +1641 -0
  102. package/dist/client/mongo-collection.js.map +1 -0
  103. package/dist/client/mongo-cursor.d.ts +257 -0
  104. package/dist/client/mongo-cursor.d.ts.map +1 -0
  105. package/dist/client/mongo-cursor.js +621 -0
  106. package/dist/client/mongo-cursor.js.map +1 -0
  107. package/dist/client/mongo-database.d.ts +88 -0
  108. package/dist/client/mongo-database.d.ts.map +1 -0
  109. package/dist/client/mongo-database.js +139 -0
  110. package/dist/client/mongo-database.js.map +1 -0
  111. package/dist/client/session.d.ts +210 -0
  112. package/dist/client/session.d.ts.map +1 -0
  113. package/dist/client/session.js +326 -0
  114. package/dist/client/session.js.map +1 -0
  115. package/dist/durable-object/index-manager.d.ts +173 -0
  116. package/dist/durable-object/index-manager.d.ts.map +1 -0
  117. package/dist/durable-object/index-manager.js +764 -0
  118. package/dist/durable-object/index-manager.js.map +1 -0
  119. package/dist/durable-object/index.d.ts +12 -0
  120. package/dist/durable-object/index.d.ts.map +1 -0
  121. package/dist/durable-object/index.js +8 -0
  122. package/dist/durable-object/index.js.map +1 -0
  123. package/dist/durable-object/mcp-handler.d.ts +52 -0
  124. package/dist/durable-object/mcp-handler.d.ts.map +1 -0
  125. package/dist/durable-object/mcp-handler.js +186 -0
  126. package/dist/durable-object/mcp-handler.js.map +1 -0
  127. package/dist/durable-object/migrations.d.ts +40 -0
  128. package/dist/durable-object/migrations.d.ts.map +1 -0
  129. package/dist/durable-object/migrations.js +121 -0
  130. package/dist/durable-object/migrations.js.map +1 -0
  131. package/dist/durable-object/mondo-database.d.ts +148 -0
  132. package/dist/durable-object/mondo-database.d.ts.map +1 -0
  133. package/dist/durable-object/mondo-database.js +621 -0
  134. package/dist/durable-object/mondo-database.js.map +1 -0
  135. package/dist/durable-object/schema.d.ts +192 -0
  136. package/dist/durable-object/schema.d.ts.map +1 -0
  137. package/dist/durable-object/schema.js +186 -0
  138. package/dist/durable-object/schema.js.map +1 -0
  139. package/dist/embedding/document-serializer.d.ts +118 -0
  140. package/dist/embedding/document-serializer.d.ts.map +1 -0
  141. package/dist/embedding/document-serializer.js +339 -0
  142. package/dist/embedding/document-serializer.js.map +1 -0
  143. package/dist/embedding/embedding-manager.d.ts +136 -0
  144. package/dist/embedding/embedding-manager.d.ts.map +1 -0
  145. package/dist/embedding/embedding-manager.js +176 -0
  146. package/dist/embedding/embedding-manager.js.map +1 -0
  147. package/dist/embedding/index.d.ts +9 -0
  148. package/dist/embedding/index.d.ts.map +1 -0
  149. package/dist/embedding/index.js +9 -0
  150. package/dist/embedding/index.js.map +1 -0
  151. package/dist/executor/aggregation-executor.d.ts +93 -0
  152. package/dist/executor/aggregation-executor.d.ts.map +1 -0
  153. package/dist/executor/aggregation-executor.js +275 -0
  154. package/dist/executor/aggregation-executor.js.map +1 -0
  155. package/dist/executor/function-executor.d.ts +39 -0
  156. package/dist/executor/function-executor.d.ts.map +1 -0
  157. package/dist/executor/function-executor.js +168 -0
  158. package/dist/executor/function-executor.js.map +1 -0
  159. package/dist/executor/index.d.ts +4 -0
  160. package/dist/executor/index.d.ts.map +1 -0
  161. package/dist/executor/index.js +4 -0
  162. package/dist/executor/index.js.map +1 -0
  163. package/dist/executor/vector-search-executor.d.ts +71 -0
  164. package/dist/executor/vector-search-executor.d.ts.map +1 -0
  165. package/dist/executor/vector-search-executor.js +113 -0
  166. package/dist/executor/vector-search-executor.js.map +1 -0
  167. package/dist/index.d.ts +21 -0
  168. package/dist/index.d.ts.map +1 -0
  169. package/dist/index.js +28 -0
  170. package/dist/index.js.map +1 -0
  171. package/dist/mcp/adapters/anthropic-adapter.d.ts +256 -0
  172. package/dist/mcp/adapters/anthropic-adapter.d.ts.map +1 -0
  173. package/dist/mcp/adapters/anthropic-adapter.js +409 -0
  174. package/dist/mcp/adapters/anthropic-adapter.js.map +1 -0
  175. package/dist/mcp/adapters/base-adapter.d.ts +164 -0
  176. package/dist/mcp/adapters/base-adapter.d.ts.map +1 -0
  177. package/dist/mcp/adapters/base-adapter.js +277 -0
  178. package/dist/mcp/adapters/base-adapter.js.map +1 -0
  179. package/dist/mcp/adapters/errors.d.ts +173 -0
  180. package/dist/mcp/adapters/errors.d.ts.map +1 -0
  181. package/dist/mcp/adapters/errors.js +305 -0
  182. package/dist/mcp/adapters/errors.js.map +1 -0
  183. package/dist/mcp/adapters/index.d.ts +65 -0
  184. package/dist/mcp/adapters/index.d.ts.map +1 -0
  185. package/dist/mcp/adapters/index.js +92 -0
  186. package/dist/mcp/adapters/index.js.map +1 -0
  187. package/dist/mcp/adapters/streaming.d.ts +200 -0
  188. package/dist/mcp/adapters/streaming.d.ts.map +1 -0
  189. package/dist/mcp/adapters/streaming.js +381 -0
  190. package/dist/mcp/adapters/streaming.js.map +1 -0
  191. package/dist/mcp/adapters/vercel-adapter.d.ts +321 -0
  192. package/dist/mcp/adapters/vercel-adapter.d.ts.map +1 -0
  193. package/dist/mcp/adapters/vercel-adapter.js +487 -0
  194. package/dist/mcp/adapters/vercel-adapter.js.map +1 -0
  195. package/dist/mcp/agent.d.ts +192 -0
  196. package/dist/mcp/agent.d.ts.map +1 -0
  197. package/dist/mcp/agent.js +338 -0
  198. package/dist/mcp/agent.js.map +1 -0
  199. package/dist/mcp/cli.d.ts +71 -0
  200. package/dist/mcp/cli.d.ts.map +1 -0
  201. package/dist/mcp/cli.js +218 -0
  202. package/dist/mcp/cli.js.map +1 -0
  203. package/dist/mcp/index.d.ts +15 -0
  204. package/dist/mcp/index.d.ts.map +1 -0
  205. package/dist/mcp/index.js +20 -0
  206. package/dist/mcp/index.js.map +1 -0
  207. package/dist/mcp/sandbox/database-proxy.d.ts +118 -0
  208. package/dist/mcp/sandbox/database-proxy.d.ts.map +1 -0
  209. package/dist/mcp/sandbox/database-proxy.js +154 -0
  210. package/dist/mcp/sandbox/database-proxy.js.map +1 -0
  211. package/dist/mcp/sandbox/index.d.ts +8 -0
  212. package/dist/mcp/sandbox/index.d.ts.map +1 -0
  213. package/dist/mcp/sandbox/index.js +7 -0
  214. package/dist/mcp/sandbox/index.js.map +1 -0
  215. package/dist/mcp/sandbox/miniflare-evaluator.d.ts +72 -0
  216. package/dist/mcp/sandbox/miniflare-evaluator.d.ts.map +1 -0
  217. package/dist/mcp/sandbox/miniflare-evaluator.js +379 -0
  218. package/dist/mcp/sandbox/miniflare-evaluator.js.map +1 -0
  219. package/dist/mcp/sandbox/template.d.ts +48 -0
  220. package/dist/mcp/sandbox/template.d.ts.map +1 -0
  221. package/dist/mcp/sandbox/template.js +147 -0
  222. package/dist/mcp/sandbox/template.js.map +1 -0
  223. package/dist/mcp/sandbox/worker-evaluator.d.ts +160 -0
  224. package/dist/mcp/sandbox/worker-evaluator.d.ts.map +1 -0
  225. package/dist/mcp/sandbox/worker-evaluator.js +217 -0
  226. package/dist/mcp/sandbox/worker-evaluator.js.map +1 -0
  227. package/dist/mcp/server.d.ts +75 -0
  228. package/dist/mcp/server.d.ts.map +1 -0
  229. package/dist/mcp/server.js +278 -0
  230. package/dist/mcp/server.js.map +1 -0
  231. package/dist/mcp/tool-call-auditor.d.ts +188 -0
  232. package/dist/mcp/tool-call-auditor.d.ts.map +1 -0
  233. package/dist/mcp/tool-call-auditor.js +198 -0
  234. package/dist/mcp/tool-call-auditor.js.map +1 -0
  235. package/dist/mcp/tools/do.d.ts +51 -0
  236. package/dist/mcp/tools/do.d.ts.map +1 -0
  237. package/dist/mcp/tools/do.js +113 -0
  238. package/dist/mcp/tools/do.js.map +1 -0
  239. package/dist/mcp/tools/fetch.d.ts +43 -0
  240. package/dist/mcp/tools/fetch.d.ts.map +1 -0
  241. package/dist/mcp/tools/fetch.js +127 -0
  242. package/dist/mcp/tools/fetch.js.map +1 -0
  243. package/dist/mcp/tools/index.d.ts +9 -0
  244. package/dist/mcp/tools/index.d.ts.map +1 -0
  245. package/dist/mcp/tools/index.js +9 -0
  246. package/dist/mcp/tools/index.js.map +1 -0
  247. package/dist/mcp/tools/search.d.ts +60 -0
  248. package/dist/mcp/tools/search.d.ts.map +1 -0
  249. package/dist/mcp/tools/search.js +278 -0
  250. package/dist/mcp/tools/search.js.map +1 -0
  251. package/dist/mcp/transport/http.d.ts +144 -0
  252. package/dist/mcp/transport/http.d.ts.map +1 -0
  253. package/dist/mcp/transport/http.js +545 -0
  254. package/dist/mcp/transport/http.js.map +1 -0
  255. package/dist/mcp/transport/index.d.ts +10 -0
  256. package/dist/mcp/transport/index.d.ts.map +1 -0
  257. package/dist/mcp/transport/index.js +12 -0
  258. package/dist/mcp/transport/index.js.map +1 -0
  259. package/dist/mcp/transport/stdio.d.ts +132 -0
  260. package/dist/mcp/transport/stdio.d.ts.map +1 -0
  261. package/dist/mcp/transport/stdio.js +466 -0
  262. package/dist/mcp/transport/stdio.js.map +1 -0
  263. package/dist/mcp/types.d.ts +476 -0
  264. package/dist/mcp/types.d.ts.map +1 -0
  265. package/dist/mcp/types.js +178 -0
  266. package/dist/mcp/types.js.map +1 -0
  267. package/dist/olap/cdc/cdc-buffer.d.ts +92 -0
  268. package/dist/olap/cdc/cdc-buffer.d.ts.map +1 -0
  269. package/dist/olap/cdc/cdc-buffer.js +146 -0
  270. package/dist/olap/cdc/cdc-buffer.js.map +1 -0
  271. package/dist/olap/cdc/cdc-emitter.d.ts +118 -0
  272. package/dist/olap/cdc/cdc-emitter.d.ts.map +1 -0
  273. package/dist/olap/cdc/cdc-emitter.js +217 -0
  274. package/dist/olap/cdc/cdc-emitter.js.map +1 -0
  275. package/dist/olap/cdc/cdc-schema.d.ts +119 -0
  276. package/dist/olap/cdc/cdc-schema.d.ts.map +1 -0
  277. package/dist/olap/cdc/cdc-schema.js +253 -0
  278. package/dist/olap/cdc/cdc-schema.js.map +1 -0
  279. package/dist/olap/cdc/index.d.ts +10 -0
  280. package/dist/olap/cdc/index.d.ts.map +1 -0
  281. package/dist/olap/cdc/index.js +10 -0
  282. package/dist/olap/cdc/index.js.map +1 -0
  283. package/dist/olap/clickhouse/iceberg.d.ts +164 -0
  284. package/dist/olap/clickhouse/iceberg.d.ts.map +1 -0
  285. package/dist/olap/clickhouse/iceberg.js +138 -0
  286. package/dist/olap/clickhouse/iceberg.js.map +1 -0
  287. package/dist/olap/clickhouse/index.d.ts +14 -0
  288. package/dist/olap/clickhouse/index.d.ts.map +1 -0
  289. package/dist/olap/clickhouse/index.js +14 -0
  290. package/dist/olap/clickhouse/index.js.map +1 -0
  291. package/dist/olap/clickhouse/mapper.d.ts +170 -0
  292. package/dist/olap/clickhouse/mapper.d.ts.map +1 -0
  293. package/dist/olap/clickhouse/mapper.js +654 -0
  294. package/dist/olap/clickhouse/mapper.js.map +1 -0
  295. package/dist/olap/clickhouse/olap-backend.d.ts +181 -0
  296. package/dist/olap/clickhouse/olap-backend.d.ts.map +1 -0
  297. package/dist/olap/clickhouse/olap-backend.js +1083 -0
  298. package/dist/olap/clickhouse/olap-backend.js.map +1 -0
  299. package/dist/olap/clickhouse/query-executor.d.ts +163 -0
  300. package/dist/olap/clickhouse/query-executor.d.ts.map +1 -0
  301. package/dist/olap/clickhouse/query-executor.js +560 -0
  302. package/dist/olap/clickhouse/query-executor.js.map +1 -0
  303. package/dist/olap/clickhouse/query.d.ts +134 -0
  304. package/dist/olap/clickhouse/query.d.ts.map +1 -0
  305. package/dist/olap/clickhouse/query.js +512 -0
  306. package/dist/olap/clickhouse/query.js.map +1 -0
  307. package/dist/olap/stage/index.d.ts +6 -0
  308. package/dist/olap/stage/index.d.ts.map +1 -0
  309. package/dist/olap/stage/index.js +6 -0
  310. package/dist/olap/stage/index.js.map +1 -0
  311. package/dist/olap/stage/parser.d.ts +68 -0
  312. package/dist/olap/stage/parser.d.ts.map +1 -0
  313. package/dist/olap/stage/parser.js +293 -0
  314. package/dist/olap/stage/parser.js.map +1 -0
  315. package/dist/olap/stage/router.d.ts +94 -0
  316. package/dist/olap/stage/router.d.ts.map +1 -0
  317. package/dist/olap/stage/router.js +390 -0
  318. package/dist/olap/stage/router.js.map +1 -0
  319. package/dist/rpc/endpoint.d.ts +52 -0
  320. package/dist/rpc/endpoint.d.ts.map +1 -0
  321. package/dist/rpc/endpoint.js +734 -0
  322. package/dist/rpc/endpoint.js.map +1 -0
  323. package/dist/rpc/index.d.ts +34 -0
  324. package/dist/rpc/index.d.ts.map +1 -0
  325. package/dist/rpc/index.js +45 -0
  326. package/dist/rpc/index.js.map +1 -0
  327. package/dist/rpc/rpc-client.d.ts +275 -0
  328. package/dist/rpc/rpc-client.d.ts.map +1 -0
  329. package/dist/rpc/rpc-client.js +735 -0
  330. package/dist/rpc/rpc-client.js.map +1 -0
  331. package/dist/rpc/rpc-target.d.ts +220 -0
  332. package/dist/rpc/rpc-target.d.ts.map +1 -0
  333. package/dist/rpc/rpc-target.js +500 -0
  334. package/dist/rpc/rpc-target.js.map +1 -0
  335. package/dist/rpc/worker-entrypoint.d.ts +159 -0
  336. package/dist/rpc/worker-entrypoint.d.ts.map +1 -0
  337. package/dist/rpc/worker-entrypoint.js +212 -0
  338. package/dist/rpc/worker-entrypoint.js.map +1 -0
  339. package/dist/server.d.ts +18 -0
  340. package/dist/server.d.ts.map +1 -0
  341. package/dist/server.js +129 -0
  342. package/dist/server.js.map +1 -0
  343. package/dist/studio/components/browser/CollectionItem.d.ts +26 -0
  344. package/dist/studio/components/browser/CollectionItem.d.ts.map +1 -0
  345. package/dist/studio/components/browser/CollectionItem.js +143 -0
  346. package/dist/studio/components/browser/CollectionItem.js.map +1 -0
  347. package/dist/studio/components/browser/CollectionTree.d.ts +45 -0
  348. package/dist/studio/components/browser/CollectionTree.d.ts.map +1 -0
  349. package/dist/studio/components/browser/CollectionTree.js +207 -0
  350. package/dist/studio/components/browser/CollectionTree.js.map +1 -0
  351. package/dist/studio/components/browser/ConnectedDatabaseBrowser.d.ts +51 -0
  352. package/dist/studio/components/browser/ConnectedDatabaseBrowser.d.ts.map +1 -0
  353. package/dist/studio/components/browser/ConnectedDatabaseBrowser.js +185 -0
  354. package/dist/studio/components/browser/ConnectedDatabaseBrowser.js.map +1 -0
  355. package/dist/studio/components/browser/DatabaseBrowser.d.ts +46 -0
  356. package/dist/studio/components/browser/DatabaseBrowser.d.ts.map +1 -0
  357. package/dist/studio/components/browser/DatabaseBrowser.js +304 -0
  358. package/dist/studio/components/browser/DatabaseBrowser.js.map +1 -0
  359. package/dist/studio/components/browser/__tests__/CollectionItem.test.d.ts +5 -0
  360. package/dist/studio/components/browser/__tests__/CollectionItem.test.d.ts.map +1 -0
  361. package/dist/studio/components/browser/__tests__/CollectionItem.test.js +169 -0
  362. package/dist/studio/components/browser/__tests__/CollectionItem.test.js.map +1 -0
  363. package/dist/studio/components/browser/__tests__/CollectionTree.test.d.ts +5 -0
  364. package/dist/studio/components/browser/__tests__/CollectionTree.test.d.ts.map +1 -0
  365. package/dist/studio/components/browser/__tests__/CollectionTree.test.js +203 -0
  366. package/dist/studio/components/browser/__tests__/CollectionTree.test.js.map +1 -0
  367. package/dist/studio/components/browser/__tests__/DatabaseBrowser.e2e.test.d.ts +8 -0
  368. package/dist/studio/components/browser/__tests__/DatabaseBrowser.e2e.test.d.ts.map +1 -0
  369. package/dist/studio/components/browser/__tests__/DatabaseBrowser.e2e.test.js +522 -0
  370. package/dist/studio/components/browser/__tests__/DatabaseBrowser.e2e.test.js.map +1 -0
  371. package/dist/studio/components/browser/__tests__/DatabaseBrowser.test.d.ts +5 -0
  372. package/dist/studio/components/browser/__tests__/DatabaseBrowser.test.d.ts.map +1 -0
  373. package/dist/studio/components/browser/__tests__/DatabaseBrowser.test.js +518 -0
  374. package/dist/studio/components/browser/__tests__/DatabaseBrowser.test.js.map +1 -0
  375. package/dist/studio/components/browser/__tests__/setup.d.ts +5 -0
  376. package/dist/studio/components/browser/__tests__/setup.d.ts.map +1 -0
  377. package/dist/studio/components/browser/__tests__/setup.js +22 -0
  378. package/dist/studio/components/browser/__tests__/setup.js.map +1 -0
  379. package/dist/studio/components/browser/index.d.ts +15 -0
  380. package/dist/studio/components/browser/index.d.ts.map +1 -0
  381. package/dist/studio/components/browser/index.js +10 -0
  382. package/dist/studio/components/browser/index.js.map +1 -0
  383. package/dist/studio/components/browser/types.d.ts +33 -0
  384. package/dist/studio/components/browser/types.d.ts.map +1 -0
  385. package/dist/studio/components/browser/types.js +5 -0
  386. package/dist/studio/components/browser/types.js.map +1 -0
  387. package/dist/studio/components/connection/ConnectionForm.d.ts +59 -0
  388. package/dist/studio/components/connection/ConnectionForm.d.ts.map +1 -0
  389. package/dist/studio/components/connection/ConnectionForm.js +274 -0
  390. package/dist/studio/components/connection/ConnectionForm.js.map +1 -0
  391. package/dist/studio/components/connection/ConnectionList.d.ts +59 -0
  392. package/dist/studio/components/connection/ConnectionList.d.ts.map +1 -0
  393. package/dist/studio/components/connection/ConnectionList.js +286 -0
  394. package/dist/studio/components/connection/ConnectionList.js.map +1 -0
  395. package/dist/studio/components/connection/ConnectionPanel.d.ts +132 -0
  396. package/dist/studio/components/connection/ConnectionPanel.d.ts.map +1 -0
  397. package/dist/studio/components/connection/ConnectionPanel.js +293 -0
  398. package/dist/studio/components/connection/ConnectionPanel.js.map +1 -0
  399. package/dist/studio/components/connection/__tests__/ConnectionPanel.test.d.ts +8 -0
  400. package/dist/studio/components/connection/__tests__/ConnectionPanel.test.d.ts.map +1 -0
  401. package/dist/studio/components/connection/__tests__/ConnectionPanel.test.js +632 -0
  402. package/dist/studio/components/connection/__tests__/ConnectionPanel.test.js.map +1 -0
  403. package/dist/studio/components/connection/__tests__/setup.d.ts +5 -0
  404. package/dist/studio/components/connection/__tests__/setup.d.ts.map +1 -0
  405. package/dist/studio/components/connection/__tests__/setup.js +11 -0
  406. package/dist/studio/components/connection/__tests__/setup.js.map +1 -0
  407. package/dist/studio/components/connection/index.d.ts +10 -0
  408. package/dist/studio/components/connection/index.d.ts.map +1 -0
  409. package/dist/studio/components/connection/index.js +7 -0
  410. package/dist/studio/components/connection/index.js.map +1 -0
  411. package/dist/studio/components/crud/DeleteDocumentDialog.d.ts +91 -0
  412. package/dist/studio/components/crud/DeleteDocumentDialog.d.ts.map +1 -0
  413. package/dist/studio/components/crud/DeleteDocumentDialog.js +273 -0
  414. package/dist/studio/components/crud/DeleteDocumentDialog.js.map +1 -0
  415. package/dist/studio/components/crud/DocumentEditor.d.ts +32 -0
  416. package/dist/studio/components/crud/DocumentEditor.d.ts.map +1 -0
  417. package/dist/studio/components/crud/DocumentEditor.js +546 -0
  418. package/dist/studio/components/crud/DocumentEditor.js.map +1 -0
  419. package/dist/studio/components/crud/InsertDocumentDialog.d.ts +78 -0
  420. package/dist/studio/components/crud/InsertDocumentDialog.d.ts.map +1 -0
  421. package/dist/studio/components/crud/InsertDocumentDialog.js +323 -0
  422. package/dist/studio/components/crud/InsertDocumentDialog.js.map +1 -0
  423. package/dist/studio/components/crud/__tests__/DeleteDocumentDialog.test.d.ts +5 -0
  424. package/dist/studio/components/crud/__tests__/DeleteDocumentDialog.test.d.ts.map +1 -0
  425. package/dist/studio/components/crud/__tests__/DeleteDocumentDialog.test.js +298 -0
  426. package/dist/studio/components/crud/__tests__/DeleteDocumentDialog.test.js.map +1 -0
  427. package/dist/studio/components/crud/__tests__/DocumentEditor.test.d.ts +8 -0
  428. package/dist/studio/components/crud/__tests__/DocumentEditor.test.d.ts.map +1 -0
  429. package/dist/studio/components/crud/__tests__/DocumentEditor.test.js +368 -0
  430. package/dist/studio/components/crud/__tests__/DocumentEditor.test.js.map +1 -0
  431. package/dist/studio/components/crud/__tests__/InsertDocumentDialog.test.d.ts +2 -0
  432. package/dist/studio/components/crud/__tests__/InsertDocumentDialog.test.d.ts.map +1 -0
  433. package/dist/studio/components/crud/__tests__/InsertDocumentDialog.test.js +352 -0
  434. package/dist/studio/components/crud/__tests__/InsertDocumentDialog.test.js.map +1 -0
  435. package/dist/studio/components/crud/__tests__/setup.d.ts +5 -0
  436. package/dist/studio/components/crud/__tests__/setup.d.ts.map +1 -0
  437. package/dist/studio/components/crud/__tests__/setup.js +22 -0
  438. package/dist/studio/components/crud/__tests__/setup.js.map +1 -0
  439. package/dist/studio/components/crud/index.d.ts +12 -0
  440. package/dist/studio/components/crud/index.d.ts.map +1 -0
  441. package/dist/studio/components/crud/index.js +11 -0
  442. package/dist/studio/components/crud/index.js.map +1 -0
  443. package/dist/studio/hooks/useConnection.d.ts +127 -0
  444. package/dist/studio/hooks/useConnection.d.ts.map +1 -0
  445. package/dist/studio/hooks/useConnection.js +414 -0
  446. package/dist/studio/hooks/useConnection.js.map +1 -0
  447. package/dist/studio/hooks/useDatabaseBrowser.d.ts +107 -0
  448. package/dist/studio/hooks/useDatabaseBrowser.d.ts.map +1 -0
  449. package/dist/studio/hooks/useDatabaseBrowser.js +294 -0
  450. package/dist/studio/hooks/useDatabaseBrowser.js.map +1 -0
  451. package/dist/studio/index.d.ts +16 -0
  452. package/dist/studio/index.d.ts.map +1 -0
  453. package/dist/studio/index.js +14 -0
  454. package/dist/studio/index.js.map +1 -0
  455. package/dist/studio/types/connection.d.ts +266 -0
  456. package/dist/studio/types/connection.d.ts.map +1 -0
  457. package/dist/studio/types/connection.js +159 -0
  458. package/dist/studio/types/connection.js.map +1 -0
  459. package/dist/studio/vitest.config.d.ts +3 -0
  460. package/dist/studio/vitest.config.d.ts.map +1 -0
  461. package/dist/studio/vitest.config.js +33 -0
  462. package/dist/studio/vitest.config.js.map +1 -0
  463. package/dist/translator/aggregation-translator.d.ts +51 -0
  464. package/dist/translator/aggregation-translator.d.ts.map +1 -0
  465. package/dist/translator/aggregation-translator.js +324 -0
  466. package/dist/translator/aggregation-translator.js.map +1 -0
  467. package/dist/translator/dialect.d.ts +131 -0
  468. package/dist/translator/dialect.d.ts.map +1 -0
  469. package/dist/translator/dialect.js +276 -0
  470. package/dist/translator/dialect.js.map +1 -0
  471. package/dist/translator/geo-translator.d.ts +91 -0
  472. package/dist/translator/geo-translator.d.ts.map +1 -0
  473. package/dist/translator/geo-translator.js +587 -0
  474. package/dist/translator/geo-translator.js.map +1 -0
  475. package/dist/translator/hybrid-translator.d.ts +70 -0
  476. package/dist/translator/hybrid-translator.d.ts.map +1 -0
  477. package/dist/translator/hybrid-translator.js +193 -0
  478. package/dist/translator/hybrid-translator.js.map +1 -0
  479. package/dist/translator/index.d.ts +13 -0
  480. package/dist/translator/index.d.ts.map +1 -0
  481. package/dist/translator/index.js +11 -0
  482. package/dist/translator/index.js.map +1 -0
  483. package/dist/translator/query-translator.d.ts +211 -0
  484. package/dist/translator/query-translator.d.ts.map +1 -0
  485. package/dist/translator/query-translator.js +1276 -0
  486. package/dist/translator/query-translator.js.map +1 -0
  487. package/dist/translator/search-highlight.d.ts +83 -0
  488. package/dist/translator/search-highlight.d.ts.map +1 -0
  489. package/dist/translator/search-highlight.js +83 -0
  490. package/dist/translator/search-highlight.js.map +1 -0
  491. package/dist/translator/search-translator.d.ts +155 -0
  492. package/dist/translator/search-translator.d.ts.map +1 -0
  493. package/dist/translator/search-translator.js +241 -0
  494. package/dist/translator/search-translator.js.map +1 -0
  495. package/dist/translator/stages/add-fields-stage.d.ts +7 -0
  496. package/dist/translator/stages/add-fields-stage.d.ts.map +1 -0
  497. package/dist/translator/stages/add-fields-stage.js +72 -0
  498. package/dist/translator/stages/add-fields-stage.js.map +1 -0
  499. package/dist/translator/stages/bucket-stage.d.ts +7 -0
  500. package/dist/translator/stages/bucket-stage.d.ts.map +1 -0
  501. package/dist/translator/stages/bucket-stage.js +87 -0
  502. package/dist/translator/stages/bucket-stage.js.map +1 -0
  503. package/dist/translator/stages/count-stage.d.ts +7 -0
  504. package/dist/translator/stages/count-stage.d.ts.map +1 -0
  505. package/dist/translator/stages/count-stage.js +12 -0
  506. package/dist/translator/stages/count-stage.js.map +1 -0
  507. package/dist/translator/stages/expression-translator.d.ts +68 -0
  508. package/dist/translator/stages/expression-translator.d.ts.map +1 -0
  509. package/dist/translator/stages/expression-translator.js +467 -0
  510. package/dist/translator/stages/expression-translator.js.map +1 -0
  511. package/dist/translator/stages/facet-stage.d.ts +13 -0
  512. package/dist/translator/stages/facet-stage.d.ts.map +1 -0
  513. package/dist/translator/stages/facet-stage.js +26 -0
  514. package/dist/translator/stages/facet-stage.js.map +1 -0
  515. package/dist/translator/stages/fusion-stages.d.ts +118 -0
  516. package/dist/translator/stages/fusion-stages.d.ts.map +1 -0
  517. package/dist/translator/stages/fusion-stages.js +201 -0
  518. package/dist/translator/stages/fusion-stages.js.map +1 -0
  519. package/dist/translator/stages/group-stage.d.ts +8 -0
  520. package/dist/translator/stages/group-stage.d.ts.map +1 -0
  521. package/dist/translator/stages/group-stage.js +123 -0
  522. package/dist/translator/stages/group-stage.js.map +1 -0
  523. package/dist/translator/stages/index.d.ts +24 -0
  524. package/dist/translator/stages/index.d.ts.map +1 -0
  525. package/dist/translator/stages/index.js +24 -0
  526. package/dist/translator/stages/index.js.map +1 -0
  527. package/dist/translator/stages/join-optimizer.d.ts +37 -0
  528. package/dist/translator/stages/join-optimizer.d.ts.map +1 -0
  529. package/dist/translator/stages/join-optimizer.js +93 -0
  530. package/dist/translator/stages/join-optimizer.js.map +1 -0
  531. package/dist/translator/stages/limit-stage.d.ts +7 -0
  532. package/dist/translator/stages/limit-stage.d.ts.map +1 -0
  533. package/dist/translator/stages/limit-stage.js +11 -0
  534. package/dist/translator/stages/limit-stage.js.map +1 -0
  535. package/dist/translator/stages/lookup-stage.d.ts +7 -0
  536. package/dist/translator/stages/lookup-stage.d.ts.map +1 -0
  537. package/dist/translator/stages/lookup-stage.js +73 -0
  538. package/dist/translator/stages/lookup-stage.js.map +1 -0
  539. package/dist/translator/stages/match-stage.d.ts +7 -0
  540. package/dist/translator/stages/match-stage.d.ts.map +1 -0
  541. package/dist/translator/stages/match-stage.js +14 -0
  542. package/dist/translator/stages/match-stage.js.map +1 -0
  543. package/dist/translator/stages/optimizer.d.ts +15 -0
  544. package/dist/translator/stages/optimizer.d.ts.map +1 -0
  545. package/dist/translator/stages/optimizer.js +249 -0
  546. package/dist/translator/stages/optimizer.js.map +1 -0
  547. package/dist/translator/stages/parallel-facet.d.ts +47 -0
  548. package/dist/translator/stages/parallel-facet.d.ts.map +1 -0
  549. package/dist/translator/stages/parallel-facet.js +57 -0
  550. package/dist/translator/stages/parallel-facet.js.map +1 -0
  551. package/dist/translator/stages/project-stage.d.ts +8 -0
  552. package/dist/translator/stages/project-stage.d.ts.map +1 -0
  553. package/dist/translator/stages/project-stage.js +145 -0
  554. package/dist/translator/stages/project-stage.js.map +1 -0
  555. package/dist/translator/stages/search-stage.d.ts +60 -0
  556. package/dist/translator/stages/search-stage.d.ts.map +1 -0
  557. package/dist/translator/stages/search-stage.js +89 -0
  558. package/dist/translator/stages/search-stage.js.map +1 -0
  559. package/dist/translator/stages/skip-stage.d.ts +7 -0
  560. package/dist/translator/stages/skip-stage.d.ts.map +1 -0
  561. package/dist/translator/stages/skip-stage.js +11 -0
  562. package/dist/translator/stages/skip-stage.js.map +1 -0
  563. package/dist/translator/stages/sort-stage.d.ts +7 -0
  564. package/dist/translator/stages/sort-stage.d.ts.map +1 -0
  565. package/dist/translator/stages/sort-stage.js +21 -0
  566. package/dist/translator/stages/sort-stage.js.map +1 -0
  567. package/dist/translator/stages/types.d.ts +136 -0
  568. package/dist/translator/stages/types.d.ts.map +1 -0
  569. package/dist/translator/stages/types.js +5 -0
  570. package/dist/translator/stages/types.js.map +1 -0
  571. package/dist/translator/stages/unwind-stage.d.ts +7 -0
  572. package/dist/translator/stages/unwind-stage.d.ts.map +1 -0
  573. package/dist/translator/stages/unwind-stage.js +61 -0
  574. package/dist/translator/stages/unwind-stage.js.map +1 -0
  575. package/dist/translator/stages/vector-search-stage.d.ts +53 -0
  576. package/dist/translator/stages/vector-search-stage.d.ts.map +1 -0
  577. package/dist/translator/stages/vector-search-stage.js +62 -0
  578. package/dist/translator/stages/vector-search-stage.js.map +1 -0
  579. package/dist/translator/update-translator.d.ts +148 -0
  580. package/dist/translator/update-translator.d.ts.map +1 -0
  581. package/dist/translator/update-translator.js +819 -0
  582. package/dist/translator/update-translator.js.map +1 -0
  583. package/dist/translator/vector-translator.d.ts +89 -0
  584. package/dist/translator/vector-translator.d.ts.map +1 -0
  585. package/dist/translator/vector-translator.js +106 -0
  586. package/dist/translator/vector-translator.js.map +1 -0
  587. package/dist/types/env.d.ts +31 -0
  588. package/dist/types/env.d.ts.map +1 -0
  589. package/dist/types/env.js +5 -0
  590. package/dist/types/env.js.map +1 -0
  591. package/dist/types/function.d.ts +65 -0
  592. package/dist/types/function.d.ts.map +1 -0
  593. package/dist/types/function.js +5 -0
  594. package/dist/types/function.js.map +1 -0
  595. package/dist/types/index.d.ts +137 -0
  596. package/dist/types/index.d.ts.map +1 -0
  597. package/dist/types/index.js +13 -0
  598. package/dist/types/index.js.map +1 -0
  599. package/dist/types/mongodb.d.ts +258 -0
  600. package/dist/types/mongodb.d.ts.map +1 -0
  601. package/dist/types/mongodb.js +5 -0
  602. package/dist/types/mongodb.js.map +1 -0
  603. package/dist/types/objectid.d.ts +130 -0
  604. package/dist/types/objectid.d.ts.map +1 -0
  605. package/dist/types/objectid.js +314 -0
  606. package/dist/types/objectid.js.map +1 -0
  607. package/dist/types/rpc.d.ts +313 -0
  608. package/dist/types/rpc.d.ts.map +1 -0
  609. package/dist/types/rpc.js +136 -0
  610. package/dist/types/rpc.js.map +1 -0
  611. package/dist/types/vectorize.d.ts +136 -0
  612. package/dist/types/vectorize.d.ts.map +1 -0
  613. package/dist/types/vectorize.js +8 -0
  614. package/dist/types/vectorize.js.map +1 -0
  615. package/dist/utils/sql-safety.d.ts +64 -0
  616. package/dist/utils/sql-safety.d.ts.map +1 -0
  617. package/dist/utils/sql-safety.js +112 -0
  618. package/dist/utils/sql-safety.js.map +1 -0
  619. package/dist/validation/document-validator.d.ts +195 -0
  620. package/dist/validation/document-validator.d.ts.map +1 -0
  621. package/dist/validation/document-validator.js +529 -0
  622. package/dist/validation/document-validator.js.map +1 -0
  623. package/dist/vectorize/document-serializer.d.ts +119 -0
  624. package/dist/vectorize/document-serializer.d.ts.map +1 -0
  625. package/dist/vectorize/document-serializer.js +320 -0
  626. package/dist/vectorize/document-serializer.js.map +1 -0
  627. package/dist/wire/auth/index.d.ts +5 -0
  628. package/dist/wire/auth/index.d.ts.map +1 -0
  629. package/dist/wire/auth/index.js +5 -0
  630. package/dist/wire/auth/index.js.map +1 -0
  631. package/dist/wire/auth/scram.d.ts +160 -0
  632. package/dist/wire/auth/scram.d.ts.map +1 -0
  633. package/dist/wire/auth/scram.js +425 -0
  634. package/dist/wire/auth/scram.js.map +1 -0
  635. package/dist/wire/backend/interface.d.ts +168 -0
  636. package/dist/wire/backend/interface.d.ts.map +1 -0
  637. package/dist/wire/backend/interface.js +10 -0
  638. package/dist/wire/backend/interface.js.map +1 -0
  639. package/dist/wire/backend/local-sqlite.d.ts +89 -0
  640. package/dist/wire/backend/local-sqlite.d.ts.map +1 -0
  641. package/dist/wire/backend/local-sqlite.js +1002 -0
  642. package/dist/wire/backend/local-sqlite.js.map +1 -0
  643. package/dist/wire/backend/query-router.d.ts +197 -0
  644. package/dist/wire/backend/query-router.d.ts.map +1 -0
  645. package/dist/wire/backend/query-router.js +590 -0
  646. package/dist/wire/backend/query-router.js.map +1 -0
  647. package/dist/wire/backend/validation.d.ts +26 -0
  648. package/dist/wire/backend/validation.d.ts.map +1 -0
  649. package/dist/wire/backend/validation.js +79 -0
  650. package/dist/wire/backend/validation.js.map +1 -0
  651. package/dist/wire/backend/workers-proxy.d.ts +95 -0
  652. package/dist/wire/backend/workers-proxy.d.ts.map +1 -0
  653. package/dist/wire/backend/workers-proxy.js +429 -0
  654. package/dist/wire/backend/workers-proxy.js.map +1 -0
  655. package/dist/wire/commands/admin.d.ts +49 -0
  656. package/dist/wire/commands/admin.d.ts.map +1 -0
  657. package/dist/wire/commands/admin.js +272 -0
  658. package/dist/wire/commands/admin.js.map +1 -0
  659. package/dist/wire/commands/aggregate.d.ts +15 -0
  660. package/dist/wire/commands/aggregate.d.ts.map +1 -0
  661. package/dist/wire/commands/aggregate.js +98 -0
  662. package/dist/wire/commands/aggregate.js.map +1 -0
  663. package/dist/wire/commands/auth.d.ts +58 -0
  664. package/dist/wire/commands/auth.d.ts.map +1 -0
  665. package/dist/wire/commands/auth.js +158 -0
  666. package/dist/wire/commands/auth.js.map +1 -0
  667. package/dist/wire/commands/crud.d.ts +49 -0
  668. package/dist/wire/commands/crud.d.ts.map +1 -0
  669. package/dist/wire/commands/crud.js +336 -0
  670. package/dist/wire/commands/crud.js.map +1 -0
  671. package/dist/wire/commands/hello.d.ts +35 -0
  672. package/dist/wire/commands/hello.d.ts.map +1 -0
  673. package/dist/wire/commands/hello.js +204 -0
  674. package/dist/wire/commands/hello.js.map +1 -0
  675. package/dist/wire/commands/index.d.ts +24 -0
  676. package/dist/wire/commands/index.d.ts.map +1 -0
  677. package/dist/wire/commands/index.js +145 -0
  678. package/dist/wire/commands/index.js.map +1 -0
  679. package/dist/wire/commands/router.d.ts +46 -0
  680. package/dist/wire/commands/router.d.ts.map +1 -0
  681. package/dist/wire/commands/router.js +151 -0
  682. package/dist/wire/commands/router.js.map +1 -0
  683. package/dist/wire/commands/types.d.ts +51 -0
  684. package/dist/wire/commands/types.d.ts.map +1 -0
  685. package/dist/wire/commands/types.js +15 -0
  686. package/dist/wire/commands/types.js.map +1 -0
  687. package/dist/wire/index.d.ts +15 -0
  688. package/dist/wire/index.d.ts.map +1 -0
  689. package/dist/wire/index.js +19 -0
  690. package/dist/wire/index.js.map +1 -0
  691. package/dist/wire/message.d.ts +49 -0
  692. package/dist/wire/message.d.ts.map +1 -0
  693. package/dist/wire/message.js +299 -0
  694. package/dist/wire/message.js.map +1 -0
  695. package/dist/wire/server.d.ts +145 -0
  696. package/dist/wire/server.d.ts.map +1 -0
  697. package/dist/wire/server.js +284 -0
  698. package/dist/wire/server.js.map +1 -0
  699. package/dist/wire/types.d.ts +140 -0
  700. package/dist/wire/types.d.ts.map +1 -0
  701. package/dist/wire/types.js +64 -0
  702. package/dist/wire/types.js.map +1 -0
  703. package/dist/worker.d.ts +17 -0
  704. package/dist/worker.d.ts.map +1 -0
  705. package/dist/worker.js +22 -0
  706. package/dist/worker.js.map +1 -0
  707. package/package.json +82 -0
@@ -0,0 +1,734 @@
1
+ /**
2
+ * RPC Endpoint - Workers RPC handler for MondoBackend operations
3
+ *
4
+ * Implements:
5
+ * - HTTP POST /rpc endpoint for JSON-RPC style calls
6
+ * - Request validation and routing
7
+ * - MongoDB-compatible error codes
8
+ * - CORS support
9
+ * - Authentication (optional)
10
+ */
11
+ import { ErrorCode } from '../types/rpc';
12
+ // ============================================================================
13
+ // MongoDB Error Codes (mapped for this module)
14
+ // ============================================================================
15
+ const ErrorCodes = {
16
+ InternalError: { code: ErrorCode.INTERNAL_ERROR, name: 'InternalError' },
17
+ BadValue: { code: ErrorCode.BAD_VALUE, name: 'BadValue' },
18
+ Unauthorized: { code: ErrorCode.UNAUTHORIZED, name: 'Unauthorized' },
19
+ NamespaceNotFound: { code: ErrorCode.NAMESPACE_NOT_FOUND, name: 'NamespaceNotFound' },
20
+ CommandNotFound: { code: ErrorCode.COMMAND_NOT_FOUND, name: 'CommandNotFound' },
21
+ DuplicateKey: { code: ErrorCode.DUPLICATE_KEY, name: 'DuplicateKey' },
22
+ };
23
+ // ============================================================================
24
+ // Method Definitions
25
+ // ============================================================================
26
+ /**
27
+ * Methods that don't require db or collection
28
+ */
29
+ const GLOBAL_METHODS = new Set(['listDatabases']);
30
+ /**
31
+ * Methods that require db but not collection
32
+ */
33
+ const DB_METHODS = new Set(['listCollections', 'createDatabase', 'dropDatabase', 'databaseExists', 'dbStats']);
34
+ /**
35
+ * Methods that require both db and collection
36
+ */
37
+ const COLLECTION_METHODS = new Set([
38
+ 'find',
39
+ 'insertOne',
40
+ 'insertMany',
41
+ 'updateOne',
42
+ 'updateMany',
43
+ 'deleteOne',
44
+ 'deleteMany',
45
+ 'count',
46
+ 'distinct',
47
+ 'aggregate',
48
+ 'createCollection',
49
+ 'dropCollection',
50
+ 'collectionExists',
51
+ 'collStats',
52
+ 'listIndexes',
53
+ 'createIndexes',
54
+ 'dropIndex',
55
+ 'dropIndexes',
56
+ 'getMore',
57
+ 'killCursors',
58
+ ]);
59
+ /**
60
+ * All supported methods
61
+ */
62
+ const SUPPORTED_METHODS = new Set([...GLOBAL_METHODS, ...DB_METHODS, ...COLLECTION_METHODS]);
63
+ /**
64
+ * Write methods (cannot be called on system collections)
65
+ */
66
+ const WRITE_METHODS = new Set([
67
+ 'insertOne',
68
+ 'insertMany',
69
+ 'updateOne',
70
+ 'updateMany',
71
+ 'deleteOne',
72
+ 'deleteMany',
73
+ 'createIndexes',
74
+ 'dropIndex',
75
+ 'dropIndexes',
76
+ ]);
77
+ // ============================================================================
78
+ // CORS Headers
79
+ // ============================================================================
80
+ const CORS_HEADERS = {
81
+ 'Access-Control-Allow-Origin': '*',
82
+ 'Access-Control-Allow-Methods': 'POST, OPTIONS',
83
+ 'Access-Control-Allow-Headers': 'Content-Type, Authorization, X-Mondo-Token',
84
+ 'Access-Control-Max-Age': '86400',
85
+ };
86
+ // ============================================================================
87
+ // Helper Functions
88
+ // ============================================================================
89
+ /**
90
+ * Create a success response
91
+ */
92
+ function successResponse(result) {
93
+ const body = { ok: 1, result };
94
+ return new Response(JSON.stringify(body), {
95
+ status: 200,
96
+ headers: {
97
+ 'Content-Type': 'application/json',
98
+ ...CORS_HEADERS,
99
+ },
100
+ });
101
+ }
102
+ /**
103
+ * Create an error response
104
+ */
105
+ function errorResponse(message, errorCode, status = 400) {
106
+ const body = {
107
+ ok: 0,
108
+ error: message,
109
+ code: errorCode.code,
110
+ codeName: errorCode.name,
111
+ };
112
+ return new Response(JSON.stringify(body), {
113
+ status,
114
+ headers: {
115
+ 'Content-Type': 'application/json',
116
+ ...CORS_HEADERS,
117
+ },
118
+ });
119
+ }
120
+ /**
121
+ * Validate database name
122
+ */
123
+ function isValidDbName(name) {
124
+ return typeof name === 'string' && name.length > 0;
125
+ }
126
+ /**
127
+ * Validate collection name
128
+ */
129
+ function isValidCollectionName(name) {
130
+ return typeof name === 'string' && name.length > 0;
131
+ }
132
+ /**
133
+ * Check if collection is a system collection
134
+ */
135
+ function isSystemCollection(name) {
136
+ return name.startsWith('system.');
137
+ }
138
+ /**
139
+ * Timing-safe string comparison to prevent timing attacks
140
+ *
141
+ * Compares strings in constant time, preventing attackers from
142
+ * inferring token values through timing analysis.
143
+ *
144
+ * Security note: When lengths differ, we still perform a constant-time
145
+ * comparison against a buffer of equal length to avoid leaking length
146
+ * information through timing differences.
147
+ */
148
+ function safeCompare(a, b) {
149
+ const encoder = new TextEncoder();
150
+ const bufA = encoder.encode(a);
151
+ const bufB = encoder.encode(b);
152
+ if (bufA.length !== bufB.length) {
153
+ // Do a dummy comparison to maintain constant time
154
+ let result = 0;
155
+ for (let i = 0; i < bufA.length; i++) {
156
+ result |= (bufA[i] ?? 0) ^ (bufA[i] ?? 0);
157
+ }
158
+ return false;
159
+ }
160
+ // Timing-safe comparison
161
+ let result = 0;
162
+ for (let i = 0; i < bufA.length; i++) {
163
+ result |= (bufA[i] ?? 0) ^ (bufB[i] ?? 0);
164
+ }
165
+ return result === 0;
166
+ }
167
+ // ============================================================================
168
+ // RPC Handler Implementation
169
+ // ============================================================================
170
+ /**
171
+ * Create an RPC handler for the given environment
172
+ */
173
+ export function createRpcHandler(env, _ctx) {
174
+ return {
175
+ async fetch(request) {
176
+ // Handle OPTIONS preflight request
177
+ if (request.method === 'OPTIONS') {
178
+ return new Response(null, {
179
+ status: 204,
180
+ headers: CORS_HEADERS,
181
+ });
182
+ }
183
+ // Only accept POST requests
184
+ if (request.method !== 'POST') {
185
+ return errorResponse('Method not allowed. Use POST.', ErrorCodes.BadValue, 405);
186
+ }
187
+ // Check content type
188
+ const contentType = request.headers.get('Content-Type');
189
+ if (!contentType?.includes('application/json')) {
190
+ return errorResponse('Invalid Content-Type. Expected application/json.', ErrorCodes.BadValue);
191
+ }
192
+ // Authenticate if auth token is configured
193
+ if (env.MONDO_AUTH_TOKEN) {
194
+ const authHeader = request.headers.get('Authorization');
195
+ const tokenHeader = request.headers.get('X-Mondo-Token');
196
+ let token = null;
197
+ if (authHeader?.startsWith('Bearer ')) {
198
+ token = authHeader.slice(7);
199
+ }
200
+ else if (tokenHeader) {
201
+ token = tokenHeader;
202
+ }
203
+ if (!token || !safeCompare(token, env.MONDO_AUTH_TOKEN)) {
204
+ return errorResponse('Unauthorized', ErrorCodes.Unauthorized, 401);
205
+ }
206
+ }
207
+ // Parse request body
208
+ let body;
209
+ try {
210
+ const text = await request.text();
211
+ if (!text) {
212
+ return errorResponse('Empty request body', ErrorCodes.BadValue);
213
+ }
214
+ body = JSON.parse(text);
215
+ }
216
+ catch {
217
+ return errorResponse('Invalid JSON body', ErrorCodes.BadValue);
218
+ }
219
+ // Validate method
220
+ if (!body.method) {
221
+ return errorResponse('Missing required field: method', ErrorCodes.BadValue);
222
+ }
223
+ if (!SUPPORTED_METHODS.has(body.method)) {
224
+ return errorResponse(`Unknown method: ${body.method}`, ErrorCodes.CommandNotFound);
225
+ }
226
+ // Validate db parameter for methods that require it
227
+ if (DB_METHODS.has(body.method) || COLLECTION_METHODS.has(body.method)) {
228
+ if (!isValidDbName(body.db)) {
229
+ return errorResponse('Missing required field: db', ErrorCodes.BadValue);
230
+ }
231
+ }
232
+ // Validate collection parameter for methods that require it
233
+ if (COLLECTION_METHODS.has(body.method)) {
234
+ if (!isValidCollectionName(body.collection)) {
235
+ return errorResponse('Missing required field: collection', ErrorCodes.BadValue);
236
+ }
237
+ // Check for writes to system collections
238
+ if (WRITE_METHODS.has(body.method) && isSystemCollection(body.collection)) {
239
+ return errorResponse(`Cannot write to system collection: ${body.collection}`, ErrorCodes.Unauthorized, 403);
240
+ }
241
+ }
242
+ // Validate method-specific parameters
243
+ const validationError = validateMethodParams(body);
244
+ if (validationError) {
245
+ return validationError;
246
+ }
247
+ // Route to Durable Object
248
+ try {
249
+ const result = await routeToDurableObject(env, body);
250
+ return successResponse(result);
251
+ }
252
+ catch (error) {
253
+ return handleError(error);
254
+ }
255
+ },
256
+ };
257
+ }
258
+ /**
259
+ * Validate method-specific parameters
260
+ */
261
+ function validateMethodParams(body) {
262
+ switch (body.method) {
263
+ case 'insertMany':
264
+ if (!body.documents || !Array.isArray(body.documents)) {
265
+ return errorResponse('Missing required field: documents', ErrorCodes.BadValue);
266
+ }
267
+ break;
268
+ case 'updateOne':
269
+ case 'updateMany':
270
+ if (!body.filter || typeof body.filter !== 'object') {
271
+ return errorResponse('Missing required field: filter', ErrorCodes.BadValue);
272
+ }
273
+ if (!body.update || typeof body.update !== 'object') {
274
+ return errorResponse('Missing required field: update', ErrorCodes.BadValue);
275
+ }
276
+ break;
277
+ case 'deleteOne':
278
+ case 'deleteMany':
279
+ if (!body.filter || typeof body.filter !== 'object') {
280
+ return errorResponse('Missing required field: filter', ErrorCodes.BadValue);
281
+ }
282
+ break;
283
+ case 'aggregate':
284
+ if (!body.pipeline) {
285
+ return errorResponse('Missing required field: pipeline', ErrorCodes.BadValue);
286
+ }
287
+ if (!Array.isArray(body.pipeline)) {
288
+ return errorResponse('pipeline must be an array', ErrorCodes.BadValue);
289
+ }
290
+ break;
291
+ case 'distinct':
292
+ if (!body.field || typeof body.field !== 'string') {
293
+ return errorResponse('Missing required field: field', ErrorCodes.BadValue);
294
+ }
295
+ break;
296
+ case 'find':
297
+ // filter is optional for find, but if provided must be an object
298
+ if (body.filter !== undefined && typeof body.filter !== 'object') {
299
+ return errorResponse('filter must be an object', ErrorCodes.BadValue);
300
+ }
301
+ break;
302
+ }
303
+ return null;
304
+ }
305
+ /**
306
+ * Route request to the appropriate Durable Object
307
+ */
308
+ async function routeToDurableObject(env, body) {
309
+ // Get the Durable Object stub for the database
310
+ const dbName = body.db || 'admin';
311
+ const id = env.MONDO_DATABASE.idFromName(dbName);
312
+ const stub = env.MONDO_DATABASE.get(id);
313
+ // Build the internal request based on method
314
+ const internalPath = `http://internal/${body.method}`;
315
+ const internalBody = buildInternalBody(body);
316
+ const response = await stub.fetch(internalPath, {
317
+ method: 'POST',
318
+ headers: { 'Content-Type': 'application/json' },
319
+ body: JSON.stringify(internalBody),
320
+ });
321
+ // Check for errors from the Durable Object
322
+ if (!response.ok) {
323
+ const errorData = await response.json().catch(() => null);
324
+ if (errorData?.error) {
325
+ const error = new Error(errorData.error);
326
+ if (errorData.code !== undefined) {
327
+ error.code = errorData.code;
328
+ }
329
+ throw error;
330
+ }
331
+ throw new Error(`Durable Object returned status ${response.status}`);
332
+ }
333
+ return response.json();
334
+ }
335
+ /**
336
+ * Build the internal request body for the Durable Object
337
+ */
338
+ function buildInternalBody(body) {
339
+ const internalBody = {};
340
+ if (body.collection) {
341
+ internalBody.collection = body.collection;
342
+ }
343
+ if (body.filter) {
344
+ internalBody.filter = body.filter;
345
+ }
346
+ if (body.update) {
347
+ internalBody.update = body.update;
348
+ }
349
+ if (body.document) {
350
+ internalBody.document = body.document;
351
+ }
352
+ if (body.documents) {
353
+ internalBody.documents = body.documents;
354
+ }
355
+ if (body.pipeline) {
356
+ internalBody.pipeline = body.pipeline;
357
+ }
358
+ if (body.options) {
359
+ // Merge options into the body
360
+ Object.assign(internalBody, body.options);
361
+ }
362
+ if (body.field) {
363
+ internalBody.field = body.field;
364
+ }
365
+ if (body.query) {
366
+ internalBody.query = body.query;
367
+ }
368
+ return internalBody;
369
+ }
370
+ /**
371
+ * Handle errors and convert to appropriate responses
372
+ */
373
+ function handleError(error) {
374
+ if (error instanceof Error) {
375
+ const errorWithCode = error;
376
+ // Map error codes to MongoDB error codes
377
+ if (errorWithCode.code === 26) {
378
+ return errorResponse(error.message, ErrorCodes.NamespaceNotFound, 404);
379
+ }
380
+ if (errorWithCode.code === 11000) {
381
+ return errorResponse(error.message, ErrorCodes.DuplicateKey, 409);
382
+ }
383
+ if (errorWithCode.code === 13) {
384
+ return errorResponse(error.message, ErrorCodes.Unauthorized, 401);
385
+ }
386
+ // Default to internal error
387
+ return errorResponse(error.message, ErrorCodes.InternalError, 500);
388
+ }
389
+ return errorResponse('Unknown error', ErrorCodes.InternalError, 500);
390
+ }
391
+ /**
392
+ * JSON-RPC 2.0 Standard Error Codes
393
+ */
394
+ const JsonRpcErrorCodes = {
395
+ PARSE_ERROR: -32700,
396
+ INVALID_REQUEST: -32600,
397
+ METHOD_NOT_FOUND: -32601,
398
+ INVALID_PARAMS: -32602,
399
+ INTERNAL_ERROR: -32603,
400
+ // Server error range for application-specific errors
401
+ SERVER_ERROR_AUTH: -32000, // Authentication error
402
+ };
403
+ /**
404
+ * Create a JSON-RPC success response
405
+ */
406
+ function jsonRpcSuccess(id, result) {
407
+ return {
408
+ jsonrpc: '2.0',
409
+ id,
410
+ result,
411
+ };
412
+ }
413
+ /**
414
+ * Create a JSON-RPC error response
415
+ */
416
+ function jsonRpcError(id, code, message, data) {
417
+ return {
418
+ jsonrpc: '2.0',
419
+ id,
420
+ error: {
421
+ code,
422
+ message,
423
+ ...(data !== undefined && { data }),
424
+ },
425
+ };
426
+ }
427
+ /**
428
+ * Create a JSON-RPC 2.0 handler for the given environment
429
+ *
430
+ * Implements JSON-RPC 2.0 protocol support:
431
+ * - Parse JSON-RPC formatted requests
432
+ * - Return JSON-RPC formatted responses
433
+ * - Handle batch requests
434
+ * - Support notifications (requests without id)
435
+ * - Return standard JSON-RPC error codes:
436
+ * - -32700: Parse error
437
+ * - -32600: Invalid Request
438
+ * - -32601: Method not found
439
+ * - -32602: Invalid params
440
+ * - -32603: Internal error
441
+ */
442
+ export function createJsonRpcHandler(env, _ctx) {
443
+ return {
444
+ async fetch(request) {
445
+ // Handle OPTIONS preflight request
446
+ if (request.method === 'OPTIONS') {
447
+ return new Response(null, {
448
+ status: 204,
449
+ headers: CORS_HEADERS,
450
+ });
451
+ }
452
+ // Only accept POST requests
453
+ if (request.method !== 'POST') {
454
+ return jsonRpcErrorResponse(jsonRpcError(null, JsonRpcErrorCodes.INVALID_REQUEST, 'Method not allowed. Use POST.'), 405);
455
+ }
456
+ // Check content type
457
+ const contentType = request.headers.get('Content-Type');
458
+ if (!contentType?.includes('application/json')) {
459
+ return jsonRpcErrorResponse(jsonRpcError(null, JsonRpcErrorCodes.INVALID_REQUEST, 'Invalid Content-Type. Expected application/json.'), 400);
460
+ }
461
+ // Parse request body
462
+ let body;
463
+ try {
464
+ const text = await request.text();
465
+ if (!text) {
466
+ return jsonRpcErrorResponse(jsonRpcError(null, JsonRpcErrorCodes.PARSE_ERROR, 'Parse error: Empty request body'), 400);
467
+ }
468
+ body = JSON.parse(text);
469
+ }
470
+ catch {
471
+ return jsonRpcErrorResponse(jsonRpcError(null, JsonRpcErrorCodes.PARSE_ERROR, 'Parse error: Invalid JSON'), 400);
472
+ }
473
+ // Authenticate if auth token is configured
474
+ if (env.MONDO_AUTH_TOKEN) {
475
+ const authHeader = request.headers.get('Authorization');
476
+ const tokenHeader = request.headers.get('X-Mondo-Token');
477
+ let token = null;
478
+ if (authHeader?.startsWith('Bearer ')) {
479
+ token = authHeader.slice(7);
480
+ }
481
+ else if (tokenHeader) {
482
+ token = tokenHeader;
483
+ }
484
+ if (!token || !safeCompare(token, env.MONDO_AUTH_TOKEN)) {
485
+ return jsonRpcErrorResponse(jsonRpcError(null, JsonRpcErrorCodes.SERVER_ERROR_AUTH, 'Unauthorized'), 401);
486
+ }
487
+ }
488
+ // Handle batch requests
489
+ if (Array.isArray(body)) {
490
+ return handleBatchRequest(env, body);
491
+ }
492
+ // Handle single request
493
+ return handleSingleRequest(env, body);
494
+ },
495
+ };
496
+ }
497
+ /**
498
+ * Handle a single JSON-RPC request
499
+ */
500
+ async function handleSingleRequest(env, body) {
501
+ const id = body.id ?? null;
502
+ const isNotification = body.id === undefined;
503
+ // Validate jsonrpc version
504
+ if (body.jsonrpc !== '2.0') {
505
+ if (isNotification) {
506
+ return new Response(null, { status: 204, headers: CORS_HEADERS });
507
+ }
508
+ return jsonRpcErrorResponse(jsonRpcError(id, JsonRpcErrorCodes.INVALID_REQUEST, 'Invalid Request: Missing or invalid jsonrpc version'), 200);
509
+ }
510
+ // Validate method
511
+ if (!body.method || typeof body.method !== 'string') {
512
+ if (isNotification) {
513
+ return new Response(null, { status: 204, headers: CORS_HEADERS });
514
+ }
515
+ return jsonRpcErrorResponse(jsonRpcError(id, JsonRpcErrorCodes.INVALID_REQUEST, 'Invalid Request: Missing method'), 200);
516
+ }
517
+ // Validate params - must be object or array, but also check if required params are provided
518
+ // For most methods, params is required and must be an object
519
+ const methodsRequiringParams = new Set([
520
+ 'find', 'insertOne', 'insertMany', 'updateOne', 'updateMany',
521
+ 'deleteOne', 'deleteMany', 'aggregate', 'count', 'distinct',
522
+ 'listCollections', 'createIndexes', 'listIndexes', 'dropIndex',
523
+ 'getMore', 'killCursors'
524
+ ]);
525
+ if (body.params !== undefined && typeof body.params !== 'object') {
526
+ if (isNotification) {
527
+ return new Response(null, { status: 204, headers: CORS_HEADERS });
528
+ }
529
+ return jsonRpcErrorResponse(jsonRpcError(id, JsonRpcErrorCodes.INVALID_PARAMS, 'Invalid params: Must be object or array'), 200);
530
+ }
531
+ if (methodsRequiringParams.has(body.method) && body.params === undefined) {
532
+ if (isNotification) {
533
+ return new Response(null, { status: 204, headers: CORS_HEADERS });
534
+ }
535
+ return jsonRpcErrorResponse(jsonRpcError(id, JsonRpcErrorCodes.INVALID_PARAMS, 'Invalid params: params is required for this method'), 200);
536
+ }
537
+ // Check if method is supported
538
+ // Also support 'insertOne' which is similar to insertMany but with a single document
539
+ const allSupportedMethods = new Set([...SUPPORTED_METHODS, 'insertOne']);
540
+ if (!allSupportedMethods.has(body.method)) {
541
+ if (isNotification) {
542
+ return new Response(null, { status: 204, headers: CORS_HEADERS });
543
+ }
544
+ return jsonRpcErrorResponse(jsonRpcError(id, JsonRpcErrorCodes.METHOD_NOT_FOUND, `Method not found: ${body.method}`), 200);
545
+ }
546
+ // Execute the method
547
+ try {
548
+ const result = await executeJsonRpcMethod(env, body.method, body.params);
549
+ // For notifications, don't return a response
550
+ if (isNotification) {
551
+ return new Response(null, { status: 204, headers: CORS_HEADERS });
552
+ }
553
+ return jsonRpcSuccessResponse(jsonRpcSuccess(id, result));
554
+ }
555
+ catch (error) {
556
+ // For notifications, don't return error responses either
557
+ if (isNotification) {
558
+ return new Response(null, { status: 204, headers: CORS_HEADERS });
559
+ }
560
+ return handleJsonRpcError(id, error);
561
+ }
562
+ }
563
+ /**
564
+ * Handle a batch of JSON-RPC requests
565
+ */
566
+ async function handleBatchRequest(env, batch) {
567
+ const responses = [];
568
+ for (const request of batch) {
569
+ const id = request.id ?? null;
570
+ const isNotification = request.id === undefined;
571
+ // Validate jsonrpc version
572
+ if (request.jsonrpc !== '2.0') {
573
+ if (!isNotification) {
574
+ responses.push(jsonRpcError(id, JsonRpcErrorCodes.INVALID_REQUEST, 'Invalid Request: Missing or invalid jsonrpc version'));
575
+ }
576
+ continue;
577
+ }
578
+ // Validate method
579
+ if (!request.method || typeof request.method !== 'string') {
580
+ if (!isNotification) {
581
+ responses.push(jsonRpcError(id, JsonRpcErrorCodes.INVALID_REQUEST, 'Invalid Request: Missing method'));
582
+ }
583
+ continue;
584
+ }
585
+ // Check if method is supported
586
+ const allSupportedMethods = new Set([...SUPPORTED_METHODS, 'insertOne']);
587
+ if (!allSupportedMethods.has(request.method)) {
588
+ if (!isNotification) {
589
+ responses.push(jsonRpcError(id, JsonRpcErrorCodes.METHOD_NOT_FOUND, `Method not found: ${request.method}`));
590
+ }
591
+ continue;
592
+ }
593
+ // Execute the method
594
+ try {
595
+ const result = await executeJsonRpcMethod(env, request.method, request.params);
596
+ // Only add response for non-notifications
597
+ if (!isNotification) {
598
+ responses.push(jsonRpcSuccess(id, result));
599
+ }
600
+ }
601
+ catch (error) {
602
+ // Only add error response for non-notifications
603
+ if (!isNotification) {
604
+ if (error instanceof Error) {
605
+ const errorWithCode = error;
606
+ responses.push(jsonRpcError(id, mapMongoErrorToJsonRpcCode(errorWithCode.code), error.message, errorWithCode.data));
607
+ }
608
+ else {
609
+ responses.push(jsonRpcError(id, JsonRpcErrorCodes.INTERNAL_ERROR, 'Internal error'));
610
+ }
611
+ }
612
+ }
613
+ }
614
+ return new Response(JSON.stringify(responses), {
615
+ status: 200,
616
+ headers: {
617
+ 'Content-Type': 'application/json',
618
+ ...CORS_HEADERS,
619
+ },
620
+ });
621
+ }
622
+ /**
623
+ * Execute a JSON-RPC method
624
+ */
625
+ async function executeJsonRpcMethod(env, method, params) {
626
+ // Get the Durable Object stub for the database
627
+ const dbName = params?.db || 'admin';
628
+ const id = env.MONDO_DATABASE.idFromName(dbName);
629
+ const stub = env.MONDO_DATABASE.get(id);
630
+ // Build the internal request
631
+ const internalPath = `http://internal/${method}`;
632
+ const internalBody = buildJsonRpcInternalBody(params);
633
+ const response = await stub.fetch(internalPath, {
634
+ method: 'POST',
635
+ headers: { 'Content-Type': 'application/json' },
636
+ body: JSON.stringify(internalBody),
637
+ });
638
+ // Check for errors from the Durable Object
639
+ if (!response.ok) {
640
+ const errorData = await response.json().catch(() => null);
641
+ if (errorData?.error) {
642
+ const error = new Error(errorData.error);
643
+ if (errorData.code !== undefined) {
644
+ error.code = errorData.code;
645
+ }
646
+ error.data = errorData;
647
+ throw error;
648
+ }
649
+ throw new Error(`Durable Object returned status ${response.status}`);
650
+ }
651
+ return response.json();
652
+ }
653
+ /**
654
+ * Build the internal request body for JSON-RPC
655
+ */
656
+ function buildJsonRpcInternalBody(params) {
657
+ if (!params) {
658
+ return {};
659
+ }
660
+ const internalBody = {};
661
+ // Copy relevant params to internal body
662
+ if (params.collection) {
663
+ internalBody.collection = params.collection;
664
+ }
665
+ if (params.filter) {
666
+ internalBody.filter = params.filter;
667
+ }
668
+ if (params.update) {
669
+ internalBody.update = params.update;
670
+ }
671
+ if (params.document) {
672
+ internalBody.document = params.document;
673
+ }
674
+ if (params.documents) {
675
+ internalBody.documents = params.documents;
676
+ }
677
+ if (params.pipeline) {
678
+ internalBody.pipeline = params.pipeline;
679
+ }
680
+ if (params.options) {
681
+ // Merge options into the body
682
+ Object.assign(internalBody, params.options);
683
+ }
684
+ if (params.field) {
685
+ internalBody.field = params.field;
686
+ }
687
+ if (params.query) {
688
+ internalBody.query = params.query;
689
+ }
690
+ return internalBody;
691
+ }
692
+ /**
693
+ * Map MongoDB error codes to JSON-RPC error codes
694
+ */
695
+ function mapMongoErrorToJsonRpcCode(_mongoCode) {
696
+ // For backend errors, use the internal error code
697
+ // But preserve the original code in the data field
698
+ return JsonRpcErrorCodes.INTERNAL_ERROR;
699
+ }
700
+ /**
701
+ * Handle JSON-RPC errors
702
+ */
703
+ function handleJsonRpcError(id, error) {
704
+ if (error instanceof Error) {
705
+ const errorWithCode = error;
706
+ return jsonRpcErrorResponse(jsonRpcError(id, JsonRpcErrorCodes.INTERNAL_ERROR, error.message, errorWithCode.data), 200);
707
+ }
708
+ return jsonRpcErrorResponse(jsonRpcError(id, JsonRpcErrorCodes.INTERNAL_ERROR, 'Internal error'), 200);
709
+ }
710
+ /**
711
+ * Create a JSON-RPC response
712
+ */
713
+ function jsonRpcSuccessResponse(body) {
714
+ return new Response(JSON.stringify(body), {
715
+ status: 200,
716
+ headers: {
717
+ 'Content-Type': 'application/json',
718
+ ...CORS_HEADERS,
719
+ },
720
+ });
721
+ }
722
+ /**
723
+ * Create a JSON-RPC error response
724
+ */
725
+ function jsonRpcErrorResponse(body, status) {
726
+ return new Response(JSON.stringify(body), {
727
+ status,
728
+ headers: {
729
+ 'Content-Type': 'application/json',
730
+ ...CORS_HEADERS,
731
+ },
732
+ });
733
+ }
734
+ //# sourceMappingURL=endpoint.js.map