@dotdo/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 (486) hide show
  1. package/README.md +400 -0
  2. package/dist/ai/embeddings.d.ts +129 -0
  3. package/dist/ai/embeddings.d.ts.map +1 -0
  4. package/dist/ai/embeddings.js +217 -0
  5. package/dist/ai/embeddings.js.map +1 -0
  6. package/dist/ai/gateway.d.ts +139 -0
  7. package/dist/ai/gateway.d.ts.map +1 -0
  8. package/dist/ai/gateway.js +179 -0
  9. package/dist/ai/gateway.js.map +1 -0
  10. package/dist/ai/image.d.ts +140 -0
  11. package/dist/ai/image.d.ts.map +1 -0
  12. package/dist/ai/image.js +199 -0
  13. package/dist/ai/image.js.map +1 -0
  14. package/dist/ai/index.d.ts +98 -0
  15. package/dist/ai/index.d.ts.map +1 -0
  16. package/dist/ai/index.js +223 -0
  17. package/dist/ai/index.js.map +1 -0
  18. package/dist/ai/models.d.ts +81 -0
  19. package/dist/ai/models.d.ts.map +1 -0
  20. package/dist/ai/models.js +537 -0
  21. package/dist/ai/models.js.map +1 -0
  22. package/dist/ai/text.d.ts +176 -0
  23. package/dist/ai/text.d.ts.map +1 -0
  24. package/dist/ai/text.js +253 -0
  25. package/dist/ai/text.js.map +1 -0
  26. package/dist/ai/voice/agents.d.ts +224 -0
  27. package/dist/ai/voice/agents.d.ts.map +1 -0
  28. package/dist/ai/voice/agents.js +375 -0
  29. package/dist/ai/voice/agents.js.map +1 -0
  30. package/dist/ai/voice/campaigns.d.ts +307 -0
  31. package/dist/ai/voice/campaigns.d.ts.map +1 -0
  32. package/dist/ai/voice/campaigns.js +739 -0
  33. package/dist/ai/voice/campaigns.js.map +1 -0
  34. package/dist/ai/voice/index.d.ts +21 -0
  35. package/dist/ai/voice/index.d.ts.map +1 -0
  36. package/dist/ai/voice/index.js +42 -0
  37. package/dist/ai/voice/index.js.map +1 -0
  38. package/dist/ai/voice/providers.d.ts +283 -0
  39. package/dist/ai/voice/providers.d.ts.map +1 -0
  40. package/dist/ai/voice/providers.js +286 -0
  41. package/dist/ai/voice/providers.js.map +1 -0
  42. package/dist/ai/voice/sessions.d.ts +294 -0
  43. package/dist/ai/voice/sessions.d.ts.map +1 -0
  44. package/dist/ai/voice/sessions.js +531 -0
  45. package/dist/ai/voice/sessions.js.map +1 -0
  46. package/dist/ai/voice/tools.d.ts +242 -0
  47. package/dist/ai/voice/tools.d.ts.map +1 -0
  48. package/dist/ai/voice/tools.js +370 -0
  49. package/dist/ai/voice/tools.js.map +1 -0
  50. package/dist/ai/voice/tts.d.ts +173 -0
  51. package/dist/ai/voice/tts.d.ts.map +1 -0
  52. package/dist/ai/voice/tts.js +252 -0
  53. package/dist/ai/voice/tts.js.map +1 -0
  54. package/dist/ai/voice/webrtc.d.ts +228 -0
  55. package/dist/ai/voice/webrtc.d.ts.map +1 -0
  56. package/dist/ai/voice/webrtc.js +372 -0
  57. package/dist/ai/voice/webrtc.js.map +1 -0
  58. package/dist/api/index.d.ts +103 -0
  59. package/dist/api/index.d.ts.map +1 -0
  60. package/dist/api/index.js +191 -0
  61. package/dist/api/index.js.map +1 -0
  62. package/dist/api/mcp/handlers.d.ts +25 -0
  63. package/dist/api/mcp/handlers.d.ts.map +1 -0
  64. package/dist/api/mcp/handlers.js +422 -0
  65. package/dist/api/mcp/handlers.js.map +1 -0
  66. package/dist/api/mcp/index.d.ts +113 -0
  67. package/dist/api/mcp/index.d.ts.map +1 -0
  68. package/dist/api/mcp/index.js +141 -0
  69. package/dist/api/mcp/index.js.map +1 -0
  70. package/dist/api/middleware/auth.d.ts +65 -0
  71. package/dist/api/middleware/auth.d.ts.map +1 -0
  72. package/dist/api/middleware/auth.js +271 -0
  73. package/dist/api/middleware/auth.js.map +1 -0
  74. package/dist/api/middleware/cors.d.ts +62 -0
  75. package/dist/api/middleware/cors.d.ts.map +1 -0
  76. package/dist/api/middleware/cors.js +225 -0
  77. package/dist/api/middleware/cors.js.map +1 -0
  78. package/dist/api/middleware/index.d.ts +60 -0
  79. package/dist/api/middleware/index.d.ts.map +1 -0
  80. package/dist/api/middleware/index.js +175 -0
  81. package/dist/api/middleware/index.js.map +1 -0
  82. package/dist/api/middleware/rateLimit.d.ts +84 -0
  83. package/dist/api/middleware/rateLimit.d.ts.map +1 -0
  84. package/dist/api/middleware/rateLimit.js +321 -0
  85. package/dist/api/middleware/rateLimit.js.map +1 -0
  86. package/dist/api/routes/ai.d.ts +17 -0
  87. package/dist/api/routes/ai.d.ts.map +1 -0
  88. package/dist/api/routes/ai.js +430 -0
  89. package/dist/api/routes/ai.js.map +1 -0
  90. package/dist/api/routes/do.d.ts +17 -0
  91. package/dist/api/routes/do.d.ts.map +1 -0
  92. package/dist/api/routes/do.js +458 -0
  93. package/dist/api/routes/do.js.map +1 -0
  94. package/dist/api/routes/functions.d.ts +111 -0
  95. package/dist/api/routes/functions.d.ts.map +1 -0
  96. package/dist/api/routes/functions.js +548 -0
  97. package/dist/api/routes/functions.js.map +1 -0
  98. package/dist/api/routes/health.d.ts +16 -0
  99. package/dist/api/routes/health.d.ts.map +1 -0
  100. package/dist/api/routes/health.js +163 -0
  101. package/dist/api/routes/health.js.map +1 -0
  102. package/dist/api/routes/index.d.ts +41 -0
  103. package/dist/api/routes/index.d.ts.map +1 -0
  104. package/dist/api/routes/index.js +275 -0
  105. package/dist/api/routes/index.js.map +1 -0
  106. package/dist/api/routes/nouns.d.ts +26 -0
  107. package/dist/api/routes/nouns.d.ts.map +1 -0
  108. package/dist/api/routes/nouns.js +456 -0
  109. package/dist/api/routes/nouns.js.map +1 -0
  110. package/dist/api/routes/orgs.d.ts +17 -0
  111. package/dist/api/routes/orgs.d.ts.map +1 -0
  112. package/dist/api/routes/orgs.js +560 -0
  113. package/dist/api/routes/orgs.js.map +1 -0
  114. package/dist/api/routes/relationships.d.ts +30 -0
  115. package/dist/api/routes/relationships.d.ts.map +1 -0
  116. package/dist/api/routes/relationships.js +360 -0
  117. package/dist/api/routes/relationships.js.map +1 -0
  118. package/dist/api/routes/roles.d.ts +17 -0
  119. package/dist/api/routes/roles.d.ts.map +1 -0
  120. package/dist/api/routes/roles.js +721 -0
  121. package/dist/api/routes/roles.js.map +1 -0
  122. package/dist/api/routes/things.d.ts +27 -0
  123. package/dist/api/routes/things.d.ts.map +1 -0
  124. package/dist/api/routes/things.js +568 -0
  125. package/dist/api/routes/things.js.map +1 -0
  126. package/dist/api/routes/users.d.ts +17 -0
  127. package/dist/api/routes/users.d.ts.map +1 -0
  128. package/dist/api/routes/users.js +401 -0
  129. package/dist/api/routes/users.js.map +1 -0
  130. package/dist/api/routes/verbs.d.ts +31 -0
  131. package/dist/api/routes/verbs.d.ts.map +1 -0
  132. package/dist/api/routes/verbs.js +505 -0
  133. package/dist/api/routes/verbs.js.map +1 -0
  134. package/dist/api/routes/workflows.d.ts +44 -0
  135. package/dist/api/routes/workflows.d.ts.map +1 -0
  136. package/dist/api/routes/workflows.js +521 -0
  137. package/dist/api/routes/workflows.js.map +1 -0
  138. package/dist/api/types.d.ts +370 -0
  139. package/dist/api/types.d.ts.map +1 -0
  140. package/dist/api/types.js +11 -0
  141. package/dist/api/types.js.map +1 -0
  142. package/dist/db/cdc/events.d.ts +201 -0
  143. package/dist/db/cdc/events.d.ts.map +1 -0
  144. package/dist/db/cdc/events.js +271 -0
  145. package/dist/db/cdc/events.js.map +1 -0
  146. package/dist/db/cdc/index.d.ts +13 -0
  147. package/dist/db/cdc/index.d.ts.map +1 -0
  148. package/dist/db/cdc/index.js +16 -0
  149. package/dist/db/cdc/index.js.map +1 -0
  150. package/dist/db/cdc/replay.d.ts +388 -0
  151. package/dist/db/cdc/replay.d.ts.map +1 -0
  152. package/dist/db/cdc/replay.js +469 -0
  153. package/dist/db/cdc/replay.js.map +1 -0
  154. package/dist/db/cdc/storage.d.ts +567 -0
  155. package/dist/db/cdc/storage.d.ts.map +1 -0
  156. package/dist/db/cdc/storage.js +856 -0
  157. package/dist/db/cdc/storage.js.map +1 -0
  158. package/dist/db/cdc/streaming.d.ts +459 -0
  159. package/dist/db/cdc/streaming.d.ts.map +1 -0
  160. package/dist/db/cdc/streaming.js +636 -0
  161. package/dist/db/cdc/streaming.js.map +1 -0
  162. package/dist/db/collections/actions.d.ts +440 -0
  163. package/dist/db/collections/actions.d.ts.map +1 -0
  164. package/dist/db/collections/actions.js +631 -0
  165. package/dist/db/collections/actions.js.map +1 -0
  166. package/dist/db/collections/base.d.ts +342 -0
  167. package/dist/db/collections/base.d.ts.map +1 -0
  168. package/dist/db/collections/base.js +510 -0
  169. package/dist/db/collections/base.js.map +1 -0
  170. package/dist/db/collections/index.d.ts +50 -0
  171. package/dist/db/collections/index.d.ts.map +1 -0
  172. package/dist/db/collections/index.js +48 -0
  173. package/dist/db/collections/index.js.map +1 -0
  174. package/dist/db/collections/nouns.d.ts +260 -0
  175. package/dist/db/collections/nouns.d.ts.map +1 -0
  176. package/dist/db/collections/nouns.js +273 -0
  177. package/dist/db/collections/nouns.js.map +1 -0
  178. package/dist/db/collections/relationships.d.ts +484 -0
  179. package/dist/db/collections/relationships.d.ts.map +1 -0
  180. package/dist/db/collections/relationships.js +815 -0
  181. package/dist/db/collections/relationships.js.map +1 -0
  182. package/dist/db/collections/things.d.ts +439 -0
  183. package/dist/db/collections/things.d.ts.map +1 -0
  184. package/dist/db/collections/things.js +603 -0
  185. package/dist/db/collections/things.js.map +1 -0
  186. package/dist/db/collections/verbs.d.ts +308 -0
  187. package/dist/db/collections/verbs.d.ts.map +1 -0
  188. package/dist/db/collections/verbs.js +480 -0
  189. package/dist/db/collections/verbs.js.map +1 -0
  190. package/dist/db/index.d.ts +14 -0
  191. package/dist/db/index.d.ts.map +1 -0
  192. package/dist/db/index.js +23 -0
  193. package/dist/db/index.js.map +1 -0
  194. package/dist/db/storage/cold.d.ts +313 -0
  195. package/dist/db/storage/cold.d.ts.map +1 -0
  196. package/dist/db/storage/cold.js +319 -0
  197. package/dist/db/storage/cold.js.map +1 -0
  198. package/dist/db/storage/hot.d.ts +340 -0
  199. package/dist/db/storage/hot.d.ts.map +1 -0
  200. package/dist/db/storage/hot.js +333 -0
  201. package/dist/db/storage/hot.js.map +1 -0
  202. package/dist/db/storage/index.d.ts +242 -0
  203. package/dist/db/storage/index.d.ts.map +1 -0
  204. package/dist/db/storage/index.js +109 -0
  205. package/dist/db/storage/index.js.map +1 -0
  206. package/dist/db/storage/snapshots.d.ts +342 -0
  207. package/dist/db/storage/snapshots.d.ts.map +1 -0
  208. package/dist/db/storage/snapshots.js +298 -0
  209. package/dist/db/storage/snapshots.js.map +1 -0
  210. package/dist/db/storage/vortex.d.ts +324 -0
  211. package/dist/db/storage/vortex.d.ts.map +1 -0
  212. package/dist/db/storage/vortex.js +365 -0
  213. package/dist/db/storage/vortex.js.map +1 -0
  214. package/dist/db/storage/warm.d.ts +306 -0
  215. package/dist/db/storage/warm.d.ts.map +1 -0
  216. package/dist/db/storage/warm.js +339 -0
  217. package/dist/db/storage/warm.js.map +1 -0
  218. package/dist/do/DigitalObject.d.ts +595 -0
  219. package/dist/do/DigitalObject.d.ts.map +1 -0
  220. package/dist/do/DigitalObject.js +971 -0
  221. package/dist/do/DigitalObject.js.map +1 -0
  222. package/dist/do/business/financial/accounting.d.ts +436 -0
  223. package/dist/do/business/financial/accounting.d.ts.map +1 -0
  224. package/dist/do/business/financial/accounting.js +476 -0
  225. package/dist/do/business/financial/accounting.js.map +1 -0
  226. package/dist/do/business/financial/index.d.ts +15 -0
  227. package/dist/do/business/financial/index.d.ts.map +1 -0
  228. package/dist/do/business/financial/index.js +20 -0
  229. package/dist/do/business/financial/index.js.map +1 -0
  230. package/dist/do/business/financial/metrics.d.ts +370 -0
  231. package/dist/do/business/financial/metrics.d.ts.map +1 -0
  232. package/dist/do/business/financial/metrics.js +376 -0
  233. package/dist/do/business/financial/metrics.js.map +1 -0
  234. package/dist/do/business/financial/payments.d.ts +397 -0
  235. package/dist/do/business/financial/payments.d.ts.map +1 -0
  236. package/dist/do/business/financial/payments.js +395 -0
  237. package/dist/do/business/financial/payments.js.map +1 -0
  238. package/dist/do/business/financial/reports.d.ts +284 -0
  239. package/dist/do/business/financial/reports.d.ts.map +1 -0
  240. package/dist/do/business/financial/reports.js +347 -0
  241. package/dist/do/business/financial/reports.js.map +1 -0
  242. package/dist/do/business/financial/stripe.d.ts +254 -0
  243. package/dist/do/business/financial/stripe.d.ts.map +1 -0
  244. package/dist/do/business/financial/stripe.js +261 -0
  245. package/dist/do/business/financial/stripe.js.map +1 -0
  246. package/dist/do/business/financial/subscriptions.d.ts +402 -0
  247. package/dist/do/business/financial/subscriptions.d.ts.map +1 -0
  248. package/dist/do/business/financial/subscriptions.js +349 -0
  249. package/dist/do/business/financial/subscriptions.js.map +1 -0
  250. package/dist/do/business/index.d.ts +9 -0
  251. package/dist/do/business/index.d.ts.map +1 -0
  252. package/dist/do/business/index.js +10 -0
  253. package/dist/do/business/index.js.map +1 -0
  254. package/dist/do/colo/followers.d.ts +194 -0
  255. package/dist/do/colo/followers.d.ts.map +1 -0
  256. package/dist/do/colo/followers.js +224 -0
  257. package/dist/do/colo/followers.js.map +1 -0
  258. package/dist/do/colo/fork.d.ts +103 -0
  259. package/dist/do/colo/fork.d.ts.map +1 -0
  260. package/dist/do/colo/fork.js +143 -0
  261. package/dist/do/colo/fork.js.map +1 -0
  262. package/dist/do/colo/index.d.ts +181 -0
  263. package/dist/do/colo/index.d.ts.map +1 -0
  264. package/dist/do/colo/index.js +145 -0
  265. package/dist/do/colo/index.js.map +1 -0
  266. package/dist/do/colo/info.d.ts +106 -0
  267. package/dist/do/colo/info.d.ts.map +1 -0
  268. package/dist/do/colo/info.js +196 -0
  269. package/dist/do/colo/info.js.map +1 -0
  270. package/dist/do/colo/migrate.d.ts +161 -0
  271. package/dist/do/colo/migrate.d.ts.map +1 -0
  272. package/dist/do/colo/migrate.js +190 -0
  273. package/dist/do/colo/migrate.js.map +1 -0
  274. package/dist/do/colo/routing.d.ts +182 -0
  275. package/dist/do/colo/routing.d.ts.map +1 -0
  276. package/dist/do/colo/routing.js +254 -0
  277. package/dist/do/colo/routing.js.map +1 -0
  278. package/dist/do/domains/dns.d.ts +269 -0
  279. package/dist/do/domains/dns.d.ts.map +1 -0
  280. package/dist/do/domains/dns.js +215 -0
  281. package/dist/do/domains/dns.js.map +1 -0
  282. package/dist/do/domains/index.d.ts +40 -0
  283. package/dist/do/domains/index.d.ts.map +1 -0
  284. package/dist/do/domains/index.js +61 -0
  285. package/dist/do/domains/index.js.map +1 -0
  286. package/dist/do/domains/routing.d.ts +263 -0
  287. package/dist/do/domains/routing.d.ts.map +1 -0
  288. package/dist/do/domains/routing.js +362 -0
  289. package/dist/do/domains/routing.js.map +1 -0
  290. package/dist/do/domains/ssl.d.ts +217 -0
  291. package/dist/do/domains/ssl.d.ts.map +1 -0
  292. package/dist/do/domains/ssl.js +231 -0
  293. package/dist/do/domains/ssl.js.map +1 -0
  294. package/dist/do/domains/subdomains.d.ts +207 -0
  295. package/dist/do/domains/subdomains.d.ts.map +1 -0
  296. package/dist/do/domains/subdomains.js +223 -0
  297. package/dist/do/domains/subdomains.js.map +1 -0
  298. package/dist/do/domains/tlds.d.ts +175 -0
  299. package/dist/do/domains/tlds.d.ts.map +1 -0
  300. package/dist/do/domains/tlds.js +188 -0
  301. package/dist/do/domains/tlds.js.map +1 -0
  302. package/dist/do/domains/validation.d.ts +164 -0
  303. package/dist/do/domains/validation.d.ts.map +1 -0
  304. package/dist/do/domains/validation.js +290 -0
  305. package/dist/do/domains/validation.js.map +1 -0
  306. package/dist/do/hibernation.d.ts +385 -0
  307. package/dist/do/hibernation.d.ts.map +1 -0
  308. package/dist/do/hibernation.js +518 -0
  309. package/dist/do/hibernation.js.map +1 -0
  310. package/dist/do/index.d.ts +19 -0
  311. package/dist/do/index.d.ts.map +1 -0
  312. package/dist/do/index.js +23 -0
  313. package/dist/do/index.js.map +1 -0
  314. package/dist/do/state.d.ts +336 -0
  315. package/dist/do/state.d.ts.map +1 -0
  316. package/dist/do/state.js +290 -0
  317. package/dist/do/state.js.map +1 -0
  318. package/dist/index.d.ts +44 -0
  319. package/dist/index.d.ts.map +1 -0
  320. package/dist/index.js +89 -0
  321. package/dist/index.js.map +1 -0
  322. package/dist/rpc/client.d.ts +426 -0
  323. package/dist/rpc/client.d.ts.map +1 -0
  324. package/dist/rpc/client.js +826 -0
  325. package/dist/rpc/client.js.map +1 -0
  326. package/dist/rpc/index.d.ts +19 -0
  327. package/dist/rpc/index.d.ts.map +1 -0
  328. package/dist/rpc/index.js +23 -0
  329. package/dist/rpc/index.js.map +1 -0
  330. package/dist/rpc/methods.d.ts +364 -0
  331. package/dist/rpc/methods.d.ts.map +1 -0
  332. package/dist/rpc/methods.js +557 -0
  333. package/dist/rpc/methods.js.map +1 -0
  334. package/dist/rpc/protocol.d.ts +310 -0
  335. package/dist/rpc/protocol.d.ts.map +1 -0
  336. package/dist/rpc/protocol.js +672 -0
  337. package/dist/rpc/protocol.js.map +1 -0
  338. package/dist/rpc/routes.d.ts +332 -0
  339. package/dist/rpc/routes.d.ts.map +1 -0
  340. package/dist/rpc/routes.js +633 -0
  341. package/dist/rpc/routes.js.map +1 -0
  342. package/dist/rpc/server.d.ts +380 -0
  343. package/dist/rpc/server.d.ts.map +1 -0
  344. package/dist/rpc/server.js +850 -0
  345. package/dist/rpc/server.js.map +1 -0
  346. package/dist/sdk/auth.d.ts +201 -0
  347. package/dist/sdk/auth.d.ts.map +1 -0
  348. package/dist/sdk/auth.js +343 -0
  349. package/dist/sdk/auth.js.map +1 -0
  350. package/dist/sdk/client.d.ts +123 -0
  351. package/dist/sdk/client.d.ts.map +1 -0
  352. package/dist/sdk/client.js +403 -0
  353. package/dist/sdk/client.js.map +1 -0
  354. package/dist/sdk/index.d.ts +123 -0
  355. package/dist/sdk/index.d.ts.map +1 -0
  356. package/dist/sdk/index.js +230 -0
  357. package/dist/sdk/index.js.map +1 -0
  358. package/dist/sdk/rpc.d.ts +275 -0
  359. package/dist/sdk/rpc.d.ts.map +1 -0
  360. package/dist/sdk/rpc.js +249 -0
  361. package/dist/sdk/rpc.js.map +1 -0
  362. package/dist/sdk/transport.d.ts +283 -0
  363. package/dist/sdk/transport.d.ts.map +1 -0
  364. package/dist/sdk/transport.js +661 -0
  365. package/dist/sdk/transport.js.map +1 -0
  366. package/dist/sdk/types.d.ts +265 -0
  367. package/dist/sdk/types.d.ts.map +1 -0
  368. package/dist/sdk/types.js +27 -0
  369. package/dist/sdk/types.js.map +1 -0
  370. package/dist/types/ai.d.ts +533 -0
  371. package/dist/types/ai.d.ts.map +1 -0
  372. package/dist/types/ai.js +18 -0
  373. package/dist/types/ai.js.map +1 -0
  374. package/dist/types/app.d.ts +371 -0
  375. package/dist/types/app.d.ts.map +1 -0
  376. package/dist/types/app.js +151 -0
  377. package/dist/types/app.js.map +1 -0
  378. package/dist/types/business.d.ts +482 -0
  379. package/dist/types/business.d.ts.map +1 -0
  380. package/dist/types/business.js +60 -0
  381. package/dist/types/business.js.map +1 -0
  382. package/dist/types/cascade.d.ts +323 -0
  383. package/dist/types/cascade.d.ts.map +1 -0
  384. package/dist/types/cascade.js +82 -0
  385. package/dist/types/cascade.js.map +1 -0
  386. package/dist/types/collections.d.ts +704 -0
  387. package/dist/types/collections.d.ts.map +1 -0
  388. package/dist/types/collections.js +23 -0
  389. package/dist/types/collections.js.map +1 -0
  390. package/dist/types/colo.d.ts +171 -0
  391. package/dist/types/colo.d.ts.map +1 -0
  392. package/dist/types/colo.js +63 -0
  393. package/dist/types/colo.js.map +1 -0
  394. package/dist/types/communication.d.ts +595 -0
  395. package/dist/types/communication.d.ts.map +1 -0
  396. package/dist/types/communication.js +16 -0
  397. package/dist/types/communication.js.map +1 -0
  398. package/dist/types/content.d.ts +286 -0
  399. package/dist/types/content.d.ts.map +1 -0
  400. package/dist/types/content.js +8 -0
  401. package/dist/types/content.js.map +1 -0
  402. package/dist/types/context.d.ts +407 -0
  403. package/dist/types/context.d.ts.map +1 -0
  404. package/dist/types/context.js +36 -0
  405. package/dist/types/context.js.map +1 -0
  406. package/dist/types/databases.d.ts +377 -0
  407. package/dist/types/databases.d.ts.map +1 -0
  408. package/dist/types/databases.js +14 -0
  409. package/dist/types/databases.js.map +1 -0
  410. package/dist/types/domains.d.ts +132 -0
  411. package/dist/types/domains.d.ts.map +1 -0
  412. package/dist/types/domains.js +107 -0
  413. package/dist/types/domains.js.map +1 -0
  414. package/dist/types/execution.d.ts +381 -0
  415. package/dist/types/execution.d.ts.map +1 -0
  416. package/dist/types/execution.js +40 -0
  417. package/dist/types/execution.js.map +1 -0
  418. package/dist/types/financial.d.ts +608 -0
  419. package/dist/types/financial.d.ts.map +1 -0
  420. package/dist/types/financial.js +12 -0
  421. package/dist/types/financial.js.map +1 -0
  422. package/dist/types/functions.d.ts +215 -0
  423. package/dist/types/functions.d.ts.map +1 -0
  424. package/dist/types/functions.js +15 -0
  425. package/dist/types/functions.js.map +1 -0
  426. package/dist/types/git.d.ts +299 -0
  427. package/dist/types/git.d.ts.map +1 -0
  428. package/dist/types/git.js +17 -0
  429. package/dist/types/git.js.map +1 -0
  430. package/dist/types/identity.d.ts +141 -0
  431. package/dist/types/identity.d.ts.map +1 -0
  432. package/dist/types/identity.js +54 -0
  433. package/dist/types/identity.js.map +1 -0
  434. package/dist/types/index.d.ts +40 -0
  435. package/dist/types/index.d.ts.map +1 -0
  436. package/dist/types/index.js +65 -0
  437. package/dist/types/index.js.map +1 -0
  438. package/dist/types/integrations.d.ts +356 -0
  439. package/dist/types/integrations.d.ts.map +1 -0
  440. package/dist/types/integrations.js +19 -0
  441. package/dist/types/integrations.js.map +1 -0
  442. package/dist/types/mdxui.d.ts +1955 -0
  443. package/dist/types/mdxui.d.ts.map +1 -0
  444. package/dist/types/mdxui.js +751 -0
  445. package/dist/types/mdxui.js.map +1 -0
  446. package/dist/types/observability.d.ts +315 -0
  447. package/dist/types/observability.d.ts.map +1 -0
  448. package/dist/types/observability.js +13 -0
  449. package/dist/types/observability.js.map +1 -0
  450. package/dist/types/rpc.d.ts +339 -0
  451. package/dist/types/rpc.d.ts.map +1 -0
  452. package/dist/types/rpc.js +24 -0
  453. package/dist/types/rpc.js.map +1 -0
  454. package/dist/types/saas.d.ts +678 -0
  455. package/dist/types/saas.d.ts.map +1 -0
  456. package/dist/types/saas.js +59 -0
  457. package/dist/types/saas.js.map +1 -0
  458. package/dist/types/service.d.ts +676 -0
  459. package/dist/types/service.d.ts.map +1 -0
  460. package/dist/types/service.js +69 -0
  461. package/dist/types/service.js.map +1 -0
  462. package/dist/types/site.d.ts +317 -0
  463. package/dist/types/site.d.ts.map +1 -0
  464. package/dist/types/site.js +203 -0
  465. package/dist/types/site.js.map +1 -0
  466. package/dist/types/startup.d.ts +576 -0
  467. package/dist/types/startup.d.ts.map +1 -0
  468. package/dist/types/startup.js +59 -0
  469. package/dist/types/startup.js.map +1 -0
  470. package/dist/types/storage.d.ts +276 -0
  471. package/dist/types/storage.d.ts.map +1 -0
  472. package/dist/types/storage.js +35 -0
  473. package/dist/types/storage.js.map +1 -0
  474. package/dist/types/telephony.d.ts +458 -0
  475. package/dist/types/telephony.d.ts.map +1 -0
  476. package/dist/types/telephony.js +19 -0
  477. package/dist/types/telephony.js.map +1 -0
  478. package/dist/types/tenant.d.ts +708 -0
  479. package/dist/types/tenant.d.ts.map +1 -0
  480. package/dist/types/tenant.js +103 -0
  481. package/dist/types/tenant.js.map +1 -0
  482. package/dist/types/voice-ai.d.ts +459 -0
  483. package/dist/types/voice-ai.d.ts.map +1 -0
  484. package/dist/types/voice-ai.js +32 -0
  485. package/dist/types/voice-ai.js.map +1 -0
  486. package/package.json +143 -0
@@ -0,0 +1,225 @@
1
+ /**
2
+ * CORS Middleware
3
+ *
4
+ * Handles Cross-Origin Resource Sharing with configurable options.
5
+ * Includes smart defaults for the DO platform.
6
+ */
7
+ import { cors as honoCors } from 'hono/cors';
8
+ // =============================================================================
9
+ // Default Configuration
10
+ // =============================================================================
11
+ /**
12
+ * Default CORS configuration for DO APIs
13
+ */
14
+ export const DEFAULT_CORS_CONFIG = {
15
+ origin: '*',
16
+ methods: ['GET', 'POST', 'PUT', 'PATCH', 'DELETE', 'OPTIONS'],
17
+ allowedHeaders: [
18
+ 'Content-Type',
19
+ 'Authorization',
20
+ 'X-API-Key',
21
+ 'X-Request-ID',
22
+ 'X-DO-Context',
23
+ ],
24
+ exposedHeaders: [
25
+ 'X-Request-ID',
26
+ 'X-RateLimit-Limit',
27
+ 'X-RateLimit-Remaining',
28
+ 'X-RateLimit-Reset',
29
+ 'X-Response-Time',
30
+ ],
31
+ credentials: false,
32
+ maxAge: 86400, // 24 hours
33
+ };
34
+ /**
35
+ * Restrictive CORS for sensitive endpoints
36
+ */
37
+ export const RESTRICTIVE_CORS_CONFIG = {
38
+ origin: (origin) => {
39
+ // Allow platform domains
40
+ if (origin.endsWith('.do') || origin.endsWith('.do.md')) {
41
+ return true;
42
+ }
43
+ // Allow localhost in development
44
+ if (origin.includes('localhost') || origin.includes('127.0.0.1')) {
45
+ return true;
46
+ }
47
+ return false;
48
+ },
49
+ methods: ['GET', 'POST', 'PUT', 'DELETE'],
50
+ allowedHeaders: ['Content-Type', 'Authorization'],
51
+ credentials: true,
52
+ maxAge: 3600, // 1 hour
53
+ };
54
+ // =============================================================================
55
+ // CORS Middleware Factory
56
+ // =============================================================================
57
+ /**
58
+ * Create CORS middleware with custom configuration
59
+ *
60
+ * @example
61
+ * // Use default config
62
+ * app.use('*', createCorsMiddleware())
63
+ *
64
+ * @example
65
+ * // Custom origins
66
+ * app.use('*', createCorsMiddleware({
67
+ * origin: ['https://app.example.com', 'https://admin.example.com']
68
+ * }))
69
+ *
70
+ * @example
71
+ * // Restrictive config for admin routes
72
+ * app.use('/admin/*', createCorsMiddleware(RESTRICTIVE_CORS_CONFIG))
73
+ */
74
+ export function createCorsMiddleware(config = {}) {
75
+ const mergedConfig = { ...DEFAULT_CORS_CONFIG, ...config };
76
+ // Use Hono's built-in CORS middleware
77
+ return honoCors({
78
+ origin: mergedConfig.origin,
79
+ allowMethods: mergedConfig.methods,
80
+ allowHeaders: mergedConfig.allowedHeaders,
81
+ exposeHeaders: mergedConfig.exposedHeaders,
82
+ credentials: mergedConfig.credentials,
83
+ maxAge: mergedConfig.maxAge,
84
+ });
85
+ }
86
+ // =============================================================================
87
+ // Dynamic CORS Middleware
88
+ // =============================================================================
89
+ /**
90
+ * Create dynamic CORS middleware that checks allowed origins from KV
91
+ *
92
+ * This allows runtime configuration of CORS without redeployment
93
+ *
94
+ * @example
95
+ * app.use('*', createDynamicCorsMiddleware('cors:allowed-origins'))
96
+ */
97
+ export function createDynamicCorsMiddleware(kvKey = 'cors:config') {
98
+ return async (c, next) => {
99
+ const origin = c.req.header('Origin');
100
+ // No origin header = same-origin request
101
+ if (!origin) {
102
+ await next();
103
+ return;
104
+ }
105
+ // Handle preflight requests
106
+ if (c.req.method === 'OPTIONS') {
107
+ const response = new Response(null, { status: 204 });
108
+ // Try to get config from KV
109
+ let allowedOrigins = ['*'];
110
+ try {
111
+ const configStr = await c.env.KV?.get(kvKey);
112
+ if (configStr) {
113
+ const config = JSON.parse(configStr);
114
+ allowedOrigins = config.origins || ['*'];
115
+ }
116
+ }
117
+ catch {
118
+ // Use default
119
+ }
120
+ // Check if origin is allowed
121
+ const isAllowed = allowedOrigins.includes('*') || allowedOrigins.includes(origin);
122
+ if (isAllowed) {
123
+ response.headers.set('Access-Control-Allow-Origin', origin);
124
+ response.headers.set('Access-Control-Allow-Methods', 'GET, POST, PUT, PATCH, DELETE, OPTIONS');
125
+ response.headers.set('Access-Control-Allow-Headers', 'Content-Type, Authorization, X-API-Key, X-Request-ID');
126
+ response.headers.set('Access-Control-Max-Age', '86400');
127
+ }
128
+ return response;
129
+ }
130
+ // Continue with request
131
+ await next();
132
+ // Add CORS headers to response
133
+ if (c.res) {
134
+ c.res.headers.set('Access-Control-Allow-Origin', origin);
135
+ }
136
+ };
137
+ }
138
+ // =============================================================================
139
+ // Preflight Handler
140
+ // =============================================================================
141
+ /**
142
+ * Create a dedicated preflight handler for specific routes
143
+ *
144
+ * @example
145
+ * app.options('/api/*', createPreflightHandler())
146
+ */
147
+ export function createPreflightHandler(config = DEFAULT_CORS_CONFIG) {
148
+ return (c) => {
149
+ const origin = c.req.header('Origin') || '*';
150
+ // Check if origin is allowed
151
+ let allowedOrigin = '*';
152
+ if (typeof config.origin === 'string') {
153
+ allowedOrigin = config.origin;
154
+ }
155
+ else if (Array.isArray(config.origin)) {
156
+ allowedOrigin = config.origin.includes(origin) ? origin : config.origin[0];
157
+ }
158
+ else if (typeof config.origin === 'function') {
159
+ allowedOrigin = config.origin(origin) ? origin : '';
160
+ }
161
+ if (!allowedOrigin) {
162
+ return new Response(null, { status: 403 });
163
+ }
164
+ const headers = new Headers({
165
+ 'Access-Control-Allow-Origin': allowedOrigin,
166
+ 'Access-Control-Allow-Methods': (config.methods || DEFAULT_CORS_CONFIG.methods).join(', '),
167
+ 'Access-Control-Allow-Headers': (config.allowedHeaders || DEFAULT_CORS_CONFIG.allowedHeaders).join(', '),
168
+ 'Access-Control-Max-Age': String(config.maxAge || DEFAULT_CORS_CONFIG.maxAge),
169
+ });
170
+ if (config.credentials) {
171
+ headers.set('Access-Control-Allow-Credentials', 'true');
172
+ }
173
+ return new Response(null, { status: 204, headers });
174
+ };
175
+ }
176
+ // =============================================================================
177
+ // Utility Functions
178
+ // =============================================================================
179
+ /**
180
+ * Add CORS headers to an existing response
181
+ */
182
+ export function addCorsHeaders(response, origin, config = DEFAULT_CORS_CONFIG) {
183
+ const headers = new Headers(response.headers);
184
+ // Determine allowed origin
185
+ let allowedOrigin = '*';
186
+ if (typeof config.origin === 'string') {
187
+ allowedOrigin = config.origin;
188
+ }
189
+ else if (Array.isArray(config.origin)) {
190
+ allowedOrigin = config.origin.includes(origin) ? origin : config.origin[0];
191
+ }
192
+ else if (typeof config.origin === 'function') {
193
+ allowedOrigin = config.origin(origin) ? origin : '*';
194
+ }
195
+ headers.set('Access-Control-Allow-Origin', allowedOrigin);
196
+ if (config.exposedHeaders) {
197
+ headers.set('Access-Control-Expose-Headers', config.exposedHeaders.join(', '));
198
+ }
199
+ if (config.credentials) {
200
+ headers.set('Access-Control-Allow-Credentials', 'true');
201
+ }
202
+ return new Response(response.body, {
203
+ status: response.status,
204
+ statusText: response.statusText,
205
+ headers,
206
+ });
207
+ }
208
+ /**
209
+ * Check if an origin is allowed
210
+ */
211
+ export function isOriginAllowed(origin, config = DEFAULT_CORS_CONFIG) {
212
+ if (!config.origin || config.origin === '*')
213
+ return true;
214
+ if (typeof config.origin === 'string') {
215
+ return config.origin === origin;
216
+ }
217
+ if (Array.isArray(config.origin)) {
218
+ return config.origin.includes(origin);
219
+ }
220
+ if (typeof config.origin === 'function') {
221
+ return config.origin(origin);
222
+ }
223
+ return false;
224
+ }
225
+ //# sourceMappingURL=cors.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cors.js","sourceRoot":"","sources":["../../../api/middleware/cors.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,60 @@
1
+ /**
2
+ * Middleware Exports
3
+ *
4
+ * All middleware for the DO API layer
5
+ */
6
+ export { createAuthMiddleware, createApiKeyMiddleware, getUser, requireUser, hasRole, hasPermission, } from './auth';
7
+ export { createCorsMiddleware, createDynamicCorsMiddleware, createPreflightHandler, addCorsHeaders, isOriginAllowed, DEFAULT_CORS_CONFIG, RESTRICTIVE_CORS_CONFIG, } from './cors';
8
+ export { createRateLimitMiddleware, createAIRateLimitMiddleware, createWriteRateLimitMiddleware, createSlidingWindowRateLimitMiddleware, getRateLimitInfo, resetRateLimit, DEFAULT_RATE_LIMIT_CONFIG, STRICT_RATE_LIMIT_CONFIG, GENEROUS_RATE_LIMIT_CONFIG, } from './rateLimit';
9
+ import type { Context, Next } from 'hono';
10
+ import type { Env, DOContext } from '../types';
11
+ /**
12
+ * Create request context middleware
13
+ * Sets up common variables for all routes
14
+ */
15
+ export declare function createContextMiddleware(): (c: Context<{
16
+ Bindings: Env;
17
+ Variables: DOContext;
18
+ }>, next: Next) => Promise<void>;
19
+ /**
20
+ * Create logging middleware
21
+ */
22
+ export declare function createLoggingMiddleware(options?: {
23
+ level?: string;
24
+ skipPaths?: string[];
25
+ }): (c: Context<{
26
+ Bindings: Env;
27
+ Variables: DOContext;
28
+ }>, next: Next) => Promise<void>;
29
+ /**
30
+ * Create error handling middleware
31
+ */
32
+ export declare function createErrorMiddleware(): (c: Context<{
33
+ Bindings: Env;
34
+ Variables: DOContext;
35
+ }>, next: Next) => Promise<Response | void>;
36
+ /**
37
+ * Create security headers middleware
38
+ */
39
+ export declare function createSecurityMiddleware(): (c: Context<{
40
+ Bindings: Env;
41
+ Variables: DOContext;
42
+ }>, next: Next) => Promise<void>;
43
+ /**
44
+ * Compose all standard middleware
45
+ *
46
+ * @example
47
+ * import { composeMiddleware } from './middleware'
48
+ * app.use('*', ...composeMiddleware())
49
+ */
50
+ export declare function composeMiddleware(options?: {
51
+ auth?: boolean;
52
+ cors?: boolean;
53
+ rateLimit?: boolean;
54
+ logging?: boolean;
55
+ security?: boolean;
56
+ }): (import("hono").MiddlewareHandler | ((c: Context<{
57
+ Bindings: Env;
58
+ Variables: DOContext;
59
+ }>, next: Next) => Promise<Response | void>))[];
60
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../api/middleware/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAKH,OAAO,EACL,oBAAoB,EACpB,sBAAsB,EACtB,OAAO,EACP,WAAW,EACX,OAAO,EACP,aAAa,GACd,MAAM,QAAQ,CAAA;AAKf,OAAO,EACL,oBAAoB,EACpB,2BAA2B,EAC3B,sBAAsB,EACtB,cAAc,EACd,eAAe,EACf,mBAAmB,EACnB,uBAAuB,GACxB,MAAM,QAAQ,CAAA;AAKf,OAAO,EACL,yBAAyB,EACzB,2BAA2B,EAC3B,8BAA8B,EAC9B,sCAAsC,EACtC,gBAAgB,EAChB,cAAc,EACd,yBAAyB,EACzB,wBAAwB,EACxB,0BAA0B,GAC3B,MAAM,aAAa,CAAA;AAKpB,OAAO,KAAK,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAA;AACzC,OAAO,KAAK,EAAE,GAAG,EAAE,SAAS,EAAE,MAAM,UAAU,CAAA;AAgB9C;;;GAGG;AACH,wBAAgB,uBAAuB,KACvB,GAAG,OAAO,CAAC;IAAE,QAAQ,EAAE,GAAG,CAAC;IAAC,SAAS,EAAE,SAAS,CAAA;CAAE,CAAC,EAAE,MAAM,IAAI,mBAkB9E;AAED;;GAEG;AACH,wBAAgB,uBAAuB,CAAC,OAAO,GAAE;IAAE,KAAK,CAAC,EAAE,MAAM,CAAC;IAAC,SAAS,CAAC,EAAE,MAAM,EAAE,CAAA;CAAO,IAG9E,GAAG,OAAO,CAAC;IAAE,QAAQ,EAAE,GAAG,CAAC;IAAC,SAAS,EAAE,SAAS,CAAA;CAAE,CAAC,EAAE,MAAM,IAAI,mBAsC9E;AAED;;GAEG;AACH,wBAAgB,qBAAqB,KACrB,GAAG,OAAO,CAAC;IAAE,QAAQ,EAAE,GAAG,CAAC;IAAC,SAAS,EAAE,SAAS,CAAA;CAAE,CAAC,EAAE,MAAM,IAAI,KAAG,OAAO,CAAC,QAAQ,GAAG,IAAI,CAAC,CAgCzG;AAED;;GAEG;AACH,wBAAgB,wBAAwB,KACxB,GAAG,OAAO,CAAC;IAAE,QAAQ,EAAE,GAAG,CAAC;IAAC,SAAS,EAAE,SAAS,CAAA;CAAE,CAAC,EAAE,MAAM,IAAI,mBAc9E;AAMD;;;;;;GAMG;AACH,wBAAgB,iBAAiB,CAAC,OAAO,GAAE;IACzC,IAAI,CAAC,EAAE,OAAO,CAAA;IACd,IAAI,CAAC,EAAE,OAAO,CAAA;IACd,SAAS,CAAC,EAAE,OAAO,CAAA;IACnB,OAAO,CAAC,EAAE,OAAO,CAAA;IACjB,QAAQ,CAAC,EAAE,OAAO,CAAA;CACd;;;gDA+BL"}
@@ -0,0 +1,175 @@
1
+ /**
2
+ * Middleware Exports
3
+ *
4
+ * All middleware for the DO API layer
5
+ */
6
+ // =============================================================================
7
+ // Authentication
8
+ // =============================================================================
9
+ export { createAuthMiddleware, createApiKeyMiddleware, getUser, requireUser, hasRole, hasPermission, } from './auth';
10
+ // =============================================================================
11
+ // CORS
12
+ // =============================================================================
13
+ export { createCorsMiddleware, createDynamicCorsMiddleware, createPreflightHandler, addCorsHeaders, isOriginAllowed, DEFAULT_CORS_CONFIG, RESTRICTIVE_CORS_CONFIG, } from './cors';
14
+ // =============================================================================
15
+ // Rate Limiting
16
+ // =============================================================================
17
+ export { createRateLimitMiddleware, createAIRateLimitMiddleware, createWriteRateLimitMiddleware, createSlidingWindowRateLimitMiddleware, getRateLimitInfo, resetRateLimit, DEFAULT_RATE_LIMIT_CONFIG, STRICT_RATE_LIMIT_CONFIG, GENEROUS_RATE_LIMIT_CONFIG, } from './rateLimit';
18
+ // Import for internal use in composeMiddleware
19
+ import { createAuthMiddleware } from './auth';
20
+ import { createCorsMiddleware } from './cors';
21
+ import { createRateLimitMiddleware } from './rateLimit';
22
+ /**
23
+ * Generate a unique request ID
24
+ */
25
+ function generateRequestId() {
26
+ const timestamp = Date.now().toString(36);
27
+ const random = Math.random().toString(36).substring(2, 10);
28
+ return `${timestamp}-${random}`;
29
+ }
30
+ /**
31
+ * Create request context middleware
32
+ * Sets up common variables for all routes
33
+ */
34
+ export function createContextMiddleware() {
35
+ return async (c, next) => {
36
+ const url = new URL(c.req.url);
37
+ // Set request context
38
+ c.set('requestId', c.req.header('X-Request-ID') || generateRequestId());
39
+ c.set('startTime', Date.now());
40
+ c.set('hostname', url.hostname);
41
+ c.set('colo', c.req.header('CF-Ray')?.split('-')[1]);
42
+ // Add request ID to response
43
+ c.header('X-Request-ID', c.get('requestId'));
44
+ await next();
45
+ // Add timing header
46
+ const duration = Date.now() - c.get('startTime');
47
+ c.header('X-Response-Time', `${duration}ms`);
48
+ };
49
+ }
50
+ /**
51
+ * Create logging middleware
52
+ */
53
+ export function createLoggingMiddleware(options = {}) {
54
+ const skipPaths = options.skipPaths || ['/_health', '/favicon.ico'];
55
+ return async (c, next) => {
56
+ const path = new URL(c.req.url).pathname;
57
+ // Skip logging for certain paths
58
+ if (skipPaths.some(skip => path.startsWith(skip))) {
59
+ await next();
60
+ return;
61
+ }
62
+ const startTime = Date.now();
63
+ const method = c.req.method;
64
+ const requestId = c.get('requestId') || 'unknown';
65
+ // Log request
66
+ console.log(JSON.stringify({
67
+ type: 'request',
68
+ requestId,
69
+ method,
70
+ path,
71
+ timestamp: new Date().toISOString(),
72
+ }));
73
+ await next();
74
+ // Log response
75
+ const duration = Date.now() - startTime;
76
+ const status = c.res?.status || 0;
77
+ console.log(JSON.stringify({
78
+ type: 'response',
79
+ requestId,
80
+ method,
81
+ path,
82
+ status,
83
+ durationMs: duration,
84
+ timestamp: new Date().toISOString(),
85
+ }));
86
+ };
87
+ }
88
+ /**
89
+ * Create error handling middleware
90
+ */
91
+ export function createErrorMiddleware() {
92
+ return async (c, next) => {
93
+ try {
94
+ await next();
95
+ }
96
+ catch (error) {
97
+ const url = new URL(c.req.url);
98
+ const requestId = c.get('requestId') || 'unknown';
99
+ // Log error
100
+ console.error(JSON.stringify({
101
+ type: 'error',
102
+ requestId,
103
+ error: error instanceof Error ? error.message : String(error),
104
+ stack: error instanceof Error ? error.stack : undefined,
105
+ timestamp: new Date().toISOString(),
106
+ }));
107
+ // Return error response
108
+ return c.json({
109
+ api: url.hostname,
110
+ error: {
111
+ code: 'INTERNAL_ERROR',
112
+ message: error instanceof Error ? error.message : 'An unexpected error occurred',
113
+ requestId,
114
+ },
115
+ links: {
116
+ self: c.req.url,
117
+ docs: 'https://do.md/errors',
118
+ },
119
+ timestamp: Date.now(),
120
+ }, 500);
121
+ }
122
+ };
123
+ }
124
+ /**
125
+ * Create security headers middleware
126
+ */
127
+ export function createSecurityMiddleware() {
128
+ return async (c, next) => {
129
+ await next();
130
+ // Add security headers
131
+ c.header('X-Content-Type-Options', 'nosniff');
132
+ c.header('X-Frame-Options', 'DENY');
133
+ c.header('X-XSS-Protection', '1; mode=block');
134
+ c.header('Referrer-Policy', 'strict-origin-when-cross-origin');
135
+ // Don't override if already set (e.g., by specific route)
136
+ if (!c.res?.headers.get('Content-Security-Policy')) {
137
+ c.header('Content-Security-Policy', "default-src 'self'");
138
+ }
139
+ };
140
+ }
141
+ // =============================================================================
142
+ // Middleware Composer
143
+ // =============================================================================
144
+ /**
145
+ * Compose all standard middleware
146
+ *
147
+ * @example
148
+ * import { composeMiddleware } from './middleware'
149
+ * app.use('*', ...composeMiddleware())
150
+ */
151
+ export function composeMiddleware(options = {}) {
152
+ const middleware = [];
153
+ // Always add context
154
+ middleware.push(createContextMiddleware());
155
+ // Add error handling
156
+ middleware.push(createErrorMiddleware());
157
+ // Optional middleware
158
+ if (options.logging !== false) {
159
+ middleware.push(createLoggingMiddleware());
160
+ }
161
+ if (options.security !== false) {
162
+ middleware.push(createSecurityMiddleware());
163
+ }
164
+ if (options.cors !== false) {
165
+ middleware.push(createCorsMiddleware());
166
+ }
167
+ if (options.rateLimit !== false) {
168
+ middleware.push(createRateLimitMiddleware());
169
+ }
170
+ if (options.auth) {
171
+ middleware.push(createAuthMiddleware());
172
+ }
173
+ return middleware;
174
+ }
175
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../api/middleware/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,84 @@
1
+ /**
2
+ * Rate Limiting Middleware
3
+ *
4
+ * Implements token bucket rate limiting using KV storage.
5
+ * Supports per-IP, per-user, and per-API-key limits.
6
+ */
7
+ import type { Context, Next } from 'hono';
8
+ import type { Env, DOContext, RateLimitConfig, RateLimitInfo } from '../types';
9
+ /**
10
+ * Default rate limit configuration
11
+ */
12
+ export declare const DEFAULT_RATE_LIMIT_CONFIG: RateLimitConfig;
13
+ /**
14
+ * Strict rate limit for expensive operations
15
+ */
16
+ export declare const STRICT_RATE_LIMIT_CONFIG: RateLimitConfig;
17
+ /**
18
+ * Generous rate limit for read-only operations
19
+ */
20
+ export declare const GENEROUS_RATE_LIMIT_CONFIG: RateLimitConfig;
21
+ /**
22
+ * Create rate limiting middleware
23
+ *
24
+ * @example
25
+ * // Basic rate limiting (60 req/min)
26
+ * app.use('*', createRateLimitMiddleware())
27
+ *
28
+ * @example
29
+ * // Custom limits
30
+ * app.use('/api/*', createRateLimitMiddleware({
31
+ * windowSecs: 60,
32
+ * maxRequests: 100,
33
+ * }))
34
+ *
35
+ * @example
36
+ * // Different limits per path
37
+ * app.use('/api/*', createRateLimitMiddleware({
38
+ * windowSecs: 60,
39
+ * maxRequests: 60,
40
+ * pathLimits: {
41
+ * '/api/ai': 10, // Expensive AI operations
42
+ * '/api/search': 120, // Generous search limits
43
+ * }
44
+ * }))
45
+ */
46
+ export declare function createRateLimitMiddleware(config?: Partial<RateLimitConfig>): (c: Context<{
47
+ Bindings: Env;
48
+ Variables: DOContext;
49
+ }>, next: Next) => Promise<Response | void>;
50
+ /**
51
+ * Create rate limiter for AI/expensive operations
52
+ */
53
+ export declare function createAIRateLimitMiddleware(maxRequests?: number): (c: Context<{
54
+ Bindings: Env;
55
+ Variables: DOContext;
56
+ }>, next: Next) => Promise<Response | void>;
57
+ /**
58
+ * Create rate limiter for write operations
59
+ */
60
+ export declare function createWriteRateLimitMiddleware(maxRequests?: number): (c: Context<{
61
+ Bindings: Env;
62
+ Variables: DOContext;
63
+ }>, next: Next) => Promise<Response | void>;
64
+ /**
65
+ * Create sliding window rate limiter
66
+ * More accurate but more expensive (uses more KV operations)
67
+ */
68
+ export declare function createSlidingWindowRateLimitMiddleware(config: RateLimitConfig): (c: Context<{
69
+ Bindings: Env;
70
+ Variables: DOContext;
71
+ }>, next: Next) => Promise<Response | void>;
72
+ /**
73
+ * Get current rate limit info without incrementing
74
+ */
75
+ export declare function getRateLimitInfo(c: Context<{
76
+ Bindings: Env;
77
+ }>, key: string, config?: RateLimitConfig): Promise<RateLimitInfo>;
78
+ /**
79
+ * Reset rate limit for a specific key
80
+ */
81
+ export declare function resetRateLimit(c: Context<{
82
+ Bindings: Env;
83
+ }>, key: string): Promise<void>;
84
+ //# sourceMappingURL=rateLimit.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"rateLimit.d.ts","sourceRoot":"","sources":["../../../api/middleware/rateLimit.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAA;AACzC,OAAO,KAAK,EAAE,GAAG,EAAE,SAAS,EAAE,eAAe,EAAE,aAAa,EAAE,MAAM,UAAU,CAAA;AAM9E;;GAEG;AACH,eAAO,MAAM,yBAAyB,EAAE,eAIvC,CAAA;AAED;;GAEG;AACH,eAAO,MAAM,wBAAwB,EAAE,eAItC,CAAA;AAED;;GAEG;AACH,eAAO,MAAM,0BAA0B,EAAE,eAIxC,CAAA;AA8GD;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AACH,wBAAgB,yBAAyB,CAAC,MAAM,GAAE,OAAO,CAAC,eAAe,CAAM,IAG/D,GAAG,OAAO,CAAC;IAAE,QAAQ,EAAE,GAAG,CAAC;IAAC,SAAS,EAAE,SAAS,CAAA;CAAE,CAAC,EAAE,MAAM,IAAI,KAAG,OAAO,CAAC,QAAQ,GAAG,IAAI,CAAC,CA6DzG;AAMD;;GAEG;AACH,wBAAgB,2BAA2B,CAAC,WAAW,GAAE,MAAW,OAtEjD,OAAO,CAAC;IAAE,QAAQ,EAAE,GAAG,CAAC;IAAC,SAAS,EAAE,SAAS,CAAA;CAAE,CAAC,QAAQ,IAAI,KAAG,OAAO,CAAC,QAAQ,GAAG,IAAI,CAAC,CA+EzG;AAED;;GAEG;AACH,wBAAgB,8BAA8B,CAAC,WAAW,GAAE,MAAW,OApFpD,OAAO,CAAC;IAAE,QAAQ,EAAE,GAAG,CAAC;IAAC,SAAS,EAAE,SAAS,CAAA;CAAE,CAAC,QAAQ,IAAI,KAAG,OAAO,CAAC,QAAQ,GAAG,IAAI,CAAC,CA6FzG;AAED;;;GAGG;AACH,wBAAgB,sCAAsC,CAAC,MAAM,EAAE,eAAe,IAC9D,GAAG,OAAO,CAAC;IAAE,QAAQ,EAAE,GAAG,CAAC;IAAC,SAAS,EAAE,SAAS,CAAA;CAAE,CAAC,EAAE,MAAM,IAAI,KAAG,OAAO,CAAC,QAAQ,GAAG,IAAI,CAAC,CAmEzG;AAMD;;GAEG;AACH,wBAAsB,gBAAgB,CACpC,CAAC,EAAE,OAAO,CAAC;IAAE,QAAQ,EAAE,GAAG,CAAA;CAAE,CAAC,EAC7B,GAAG,EAAE,MAAM,EACX,MAAM,GAAE,eAA2C,GAClD,OAAO,CAAC,aAAa,CAAC,CAsBxB;AAED;;GAEG;AACH,wBAAsB,cAAc,CAClC,CAAC,EAAE,OAAO,CAAC;IAAE,QAAQ,EAAE,GAAG,CAAA;CAAE,CAAC,EAC7B,GAAG,EAAE,MAAM,GACV,OAAO,CAAC,IAAI,CAAC,CAUf"}