@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,190 @@
1
+ /**
2
+ * Migration Operations
3
+ *
4
+ * Move Digital Objects between colos. Use when usage patterns change
5
+ * or for optimization.
6
+ *
7
+ * @module colo/migrate
8
+ */
9
+ /**
10
+ * Migrate this DO to another colo
11
+ *
12
+ * Moves the primary DO to a different geographic location. This is useful when:
13
+ * - User patterns shift (e.g., most users now in Asia instead of US)
14
+ * - Optimizing for latency based on analytics
15
+ * - Meeting new jurisdiction requirements
16
+ *
17
+ * **Graceful Strategy** (default):
18
+ * 1. Stop accepting new writes
19
+ * 2. Wait for in-flight requests to complete
20
+ * 3. Transfer all state to new location
21
+ * 4. Update routing to point to new location
22
+ * 5. Resume normal operation
23
+ *
24
+ * **Immediate Strategy**:
25
+ * 1. Snapshot current state
26
+ * 2. Create new DO in target colo with snapshot
27
+ * 3. Immediately switch routing
28
+ * 4. In-flight requests to old location may fail
29
+ *
30
+ * @param state - The DurableObjectState instance
31
+ * @param env - Environment bindings
32
+ * @param targetColo - IATA code of target colo (e.g., 'fra', 'nrt')
33
+ * @param options - Migration configuration options
34
+ * @throws ColoError if target colo is invalid or migration fails
35
+ *
36
+ * @example
37
+ * ```typescript
38
+ * // Graceful migration (recommended)
39
+ * await migrateDO(state, env, 'nrt', {
40
+ * strategy: 'graceful',
41
+ * timeout: 30000,
42
+ * })
43
+ *
44
+ * // Immediate migration (faster but riskier)
45
+ * await migrateDO(state, env, 'nrt', {
46
+ * strategy: 'immediate',
47
+ * })
48
+ *
49
+ * // Fire and forget (don't wait for completion)
50
+ * await migrateDO(state, env, 'fra', {
51
+ * wait: false,
52
+ * })
53
+ * ```
54
+ */
55
+ export async function migrateDO(state, env, targetColo, options) {
56
+ // TODO: Implement migrateDO
57
+ //
58
+ // 1. Validate target colo
59
+ // - Use isValidColo() to check
60
+ // - Throw INVALID_COLO error if invalid
61
+ //
62
+ // 2. Resolve options with defaults
63
+ //
64
+ // 3. Emit MIGRATION_STARTED event
65
+ //
66
+ // 4. Based on strategy:
67
+ // Graceful:
68
+ // a. Set state to 'preparing'
69
+ // b. Set state to 'draining', reject new writes
70
+ // c. Wait for in-flight requests (with timeout)
71
+ // d. Set state to 'transferring', export all storage
72
+ // e. Create new DO in target colo
73
+ // f. Transfer state to new DO
74
+ // g. Set state to 'switching', update routing
75
+ // h. Set state to 'completed'
76
+ //
77
+ // Immediate:
78
+ // a. Snapshot current state
79
+ // b. Create new DO in target colo
80
+ // c. Transfer snapshot
81
+ // d. Switch routing immediately
82
+ //
83
+ // 5. Emit MIGRATION_COMPLETED or MIGRATION_FAILED event
84
+ //
85
+ throw new Error('Not implemented');
86
+ }
87
+ /**
88
+ * Apply default values to migrate options
89
+ *
90
+ * @param options - Partial options from caller
91
+ * @returns Fully resolved options with defaults
92
+ */
93
+ export function resolveMigrateOptions(options) {
94
+ return {
95
+ wait: options?.wait ?? true,
96
+ timeout: options?.timeout ?? 60000,
97
+ strategy: options?.strategy ?? 'graceful',
98
+ };
99
+ }
100
+ /**
101
+ * Get the current migration status
102
+ *
103
+ * @param state - The DurableObjectState instance
104
+ * @returns Current migration status or null if no migration in progress
105
+ *
106
+ * @example
107
+ * ```typescript
108
+ * const status = await getMigrationStatus(state)
109
+ * if (status) {
110
+ * console.log(`Migration ${status.progress}% complete`)
111
+ * console.log(`${status.entriesTransferred}/${status.totalEntries} entries`)
112
+ * }
113
+ * ```
114
+ */
115
+ export async function getMigrationStatus(state) {
116
+ // TODO: Implement getMigrationStatus
117
+ //
118
+ // 1. Get migration status from storage
119
+ // 2. Return null if no migration in progress
120
+ // 3. Return status object
121
+ //
122
+ throw new Error('Not implemented');
123
+ }
124
+ /**
125
+ * Cancel an in-progress migration
126
+ *
127
+ * Can only cancel migrations that haven't reached the 'switching' state.
128
+ * Graceful migrations in 'draining' or 'transferring' state can be cancelled.
129
+ *
130
+ * @param state - The DurableObjectState instance
131
+ * @throws ColoError if no migration in progress or migration cannot be cancelled
132
+ *
133
+ * @example
134
+ * ```typescript
135
+ * await cancelMigration(state)
136
+ * // Migration cancelled, DO remains in original colo
137
+ * ```
138
+ */
139
+ export async function cancelMigration(state) {
140
+ // TODO: Implement cancelMigration
141
+ //
142
+ // 1. Get current migration status
143
+ // 2. Validate migration can be cancelled (not in 'switching' or 'completed')
144
+ // 3. Clean up any partially transferred state
145
+ // 4. Reset migration status
146
+ // 5. Resume normal operation
147
+ //
148
+ throw new Error('Not implemented');
149
+ }
150
+ /**
151
+ * Drain in-flight requests during graceful migration
152
+ *
153
+ * Waits for active requests to complete before proceeding with state transfer.
154
+ *
155
+ * @param state - The DurableObjectState instance
156
+ * @param timeout - Maximum time to wait in ms
157
+ * @returns True if all requests drained, false if timeout
158
+ */
159
+ export async function drainRequests(state, timeout) {
160
+ // TODO: Implement drainRequests
161
+ //
162
+ // 1. Track active request count
163
+ // 2. Reject new requests with appropriate status
164
+ // 3. Wait for active count to reach 0
165
+ // 4. Return true if drained, false if timeout
166
+ //
167
+ throw new Error('Not implemented');
168
+ }
169
+ /**
170
+ * Transfer state to a new DO location
171
+ *
172
+ * Exports all storage entries and sends them to the target DO.
173
+ *
174
+ * @param state - Source DO state
175
+ * @param targetRef - Reference to target DO
176
+ * @param onProgress - Optional callback for progress updates
177
+ * @returns Number of entries transferred
178
+ */
179
+ export async function transferState(state, targetRef, onProgress) {
180
+ // TODO: Implement transferState
181
+ //
182
+ // 1. List all storage entries
183
+ // 2. Batch entries for efficient transfer
184
+ // 3. Send batches to target DO
185
+ // 4. Call onProgress callback after each batch
186
+ // 5. Return total count
187
+ //
188
+ throw new Error('Not implemented');
189
+ }
190
+ //# sourceMappingURL=migrate.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"migrate.js","sourceRoot":"","sources":["../../../do/colo/migrate.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AA6DH;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6CG;AACH,MAAM,CAAC,KAAK,UAAU,SAAS,CAC7B,KAAyB,EACzB,GAAY,EACZ,UAAkB,EAClB,OAAwB;IAExB,4BAA4B;IAC5B,EAAE;IACF,0BAA0B;IAC1B,kCAAkC;IAClC,2CAA2C;IAC3C,EAAE;IACF,mCAAmC;IACnC,EAAE;IACF,kCAAkC;IAClC,EAAE;IACF,wBAAwB;IACxB,eAAe;IACf,mCAAmC;IACnC,qDAAqD;IACrD,qDAAqD;IACrD,0DAA0D;IAC1D,uCAAuC;IACvC,mCAAmC;IACnC,mDAAmD;IACnD,mCAAmC;IACnC,EAAE;IACF,gBAAgB;IAChB,iCAAiC;IACjC,uCAAuC;IACvC,4BAA4B;IAC5B,qCAAqC;IACrC,EAAE;IACF,wDAAwD;IACxD,EAAE;IACF,MAAM,IAAI,KAAK,CAAC,iBAAiB,CAAC,CAAA;AACpC,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,qBAAqB,CAAC,OAAwB;IAC5D,OAAO;QACL,IAAI,EAAE,OAAO,EAAE,IAAI,IAAI,IAAI;QAC3B,OAAO,EAAE,OAAO,EAAE,OAAO,IAAI,KAAK;QAClC,QAAQ,EAAE,OAAO,EAAE,QAAQ,IAAI,UAAU;KAC1C,CAAA;AACH,CAAC;AAED;;;;;;;;;;;;;;GAcG;AACH,MAAM,CAAC,KAAK,UAAU,kBAAkB,CACtC,KAAyB;IAEzB,qCAAqC;IACrC,EAAE;IACF,uCAAuC;IACvC,6CAA6C;IAC7C,0BAA0B;IAC1B,EAAE;IACF,MAAM,IAAI,KAAK,CAAC,iBAAiB,CAAC,CAAA;AACpC,CAAC;AAED;;;;;;;;;;;;;;GAcG;AACH,MAAM,CAAC,KAAK,UAAU,eAAe,CAAC,KAAyB;IAC7D,kCAAkC;IAClC,EAAE;IACF,kCAAkC;IAClC,6EAA6E;IAC7E,8CAA8C;IAC9C,4BAA4B;IAC5B,6BAA6B;IAC7B,EAAE;IACF,MAAM,IAAI,KAAK,CAAC,iBAAiB,CAAC,CAAA;AACpC,CAAC;AAED;;;;;;;;GAQG;AACH,MAAM,CAAC,KAAK,UAAU,aAAa,CACjC,KAAyB,EACzB,OAAe;IAEf,gCAAgC;IAChC,EAAE;IACF,gCAAgC;IAChC,iDAAiD;IACjD,sCAAsC;IACtC,8CAA8C;IAC9C,EAAE;IACF,MAAM,IAAI,KAAK,CAAC,iBAAiB,CAAC,CAAA;AACpC,CAAC;AAED;;;;;;;;;GASG;AACH,MAAM,CAAC,KAAK,UAAU,aAAa,CACjC,KAAyB,EACzB,SAA2B,EAC3B,UAAyD;IAEzD,gCAAgC;IAChC,EAAE;IACF,8BAA8B;IAC9B,0CAA0C;IAC1C,+BAA+B;IAC/B,+CAA+C;IAC/C,wBAAwB;IACxB,EAAE;IACF,MAAM,IAAI,KAAK,CAAC,iBAAiB,CAAC,CAAA;AACpC,CAAC"}
@@ -0,0 +1,182 @@
1
+ /**
2
+ * Colo-Aware Routing
3
+ *
4
+ * Find the best colo for a given location, measure latency, and route
5
+ * requests to the optimal replica.
6
+ *
7
+ * @module colo/routing
8
+ */
9
+ import type { ColoInfo, Region, LocationHint, JurisdictionConfig } from '../../types/colo';
10
+ import type { DigitalObjectRef } from '../../types/identity';
11
+ /**
12
+ * Ping result with timing information
13
+ */
14
+ export interface PingResult {
15
+ /** Target colo */
16
+ colo: string;
17
+ /** Round-trip time in ms */
18
+ latency: number;
19
+ /** Whether the colo is reachable */
20
+ reachable: boolean;
21
+ /** Error message if not reachable */
22
+ error?: string;
23
+ }
24
+ /**
25
+ * Routing decision result
26
+ */
27
+ export interface RoutingDecision {
28
+ /** Recommended DO reference to route to */
29
+ target: DigitalObjectRef;
30
+ /** Colo of the target */
31
+ colo: string;
32
+ /** Estimated latency to target */
33
+ estimatedLatency: number;
34
+ /** Reason for this routing decision */
35
+ reason: 'nearest' | 'lowest-latency' | 'jurisdiction' | 'fallback';
36
+ }
37
+ /**
38
+ * Find the nearest colo to a given geographic location
39
+ *
40
+ * Uses the Haversine formula to calculate great-circle distance between
41
+ * the given coordinates and known colo locations.
42
+ *
43
+ * @param latitude - Latitude of the target location
44
+ * @param longitude - Longitude of the target location
45
+ * @param filter - Optional region filter or jurisdiction config
46
+ * @returns ColoInfo for the nearest colo
47
+ *
48
+ * @example
49
+ * ```typescript
50
+ * // Find nearest colo to Tokyo
51
+ * const nearest = await findNearestColo(35.6762, 139.6503)
52
+ * // { colo: 'nrt', region: 'apac', city: 'Tokyo', ... }
53
+ *
54
+ * // Find nearest colo in Europe only
55
+ * const nearestEU = await findNearestColo(48.8566, 2.3522, 'weur')
56
+ * // { colo: 'cdg', region: 'weur', city: 'Paris', ... }
57
+ * ```
58
+ */
59
+ export declare function findNearestColo(latitude: number, longitude: number, filter?: Region | JurisdictionConfig): Promise<ColoInfo>;
60
+ /**
61
+ * Ping a colo to measure latency
62
+ *
63
+ * Sends a lightweight request to a colo to measure round-trip time.
64
+ * Useful for runtime latency-based routing decisions.
65
+ *
66
+ * @param colo - IATA code of the colo to ping
67
+ * @returns Ping result with latency
68
+ *
69
+ * @example
70
+ * ```typescript
71
+ * const result = await pingColo('fra')
72
+ * console.log(`Latency to Frankfurt: ${result.latency}ms`)
73
+ *
74
+ * // Check multiple colos
75
+ * const colos = ['iad', 'fra', 'nrt']
76
+ * const results = await Promise.all(colos.map(pingColo))
77
+ * const fastest = results.reduce((a, b) => a.latency < b.latency ? a : b)
78
+ * console.log(`Fastest colo: ${fastest.colo} (${fastest.latency}ms)`)
79
+ * ```
80
+ */
81
+ export declare function pingColo(colo: string): Promise<PingResult>;
82
+ /**
83
+ * Ping multiple colos in parallel
84
+ *
85
+ * @param colos - Array of colo codes to ping
86
+ * @returns Array of ping results
87
+ *
88
+ * @example
89
+ * ```typescript
90
+ * const results = await pingColos(['iad', 'fra', 'nrt', 'sin'])
91
+ * const sorted = results.sort((a, b) => a.latency - b.latency)
92
+ * console.log(`Fastest: ${sorted[0].colo} at ${sorted[0].latency}ms`)
93
+ * ```
94
+ */
95
+ export declare function pingColos(colos: string[]): Promise<PingResult[]>;
96
+ /**
97
+ * Make a routing decision based on location and available replicas
98
+ *
99
+ * Determines the best replica to route a request to based on the client's
100
+ * location, available replicas, and any jurisdiction constraints.
101
+ *
102
+ * @param hint - Location hint from the request
103
+ * @param replicas - Available replica references with their colos
104
+ * @param jurisdiction - Optional jurisdiction constraints
105
+ * @returns Routing decision with target reference
106
+ *
107
+ * @example
108
+ * ```typescript
109
+ * const decision = await route(
110
+ * { clientIp: request.headers.get('cf-connecting-ip') },
111
+ * [
112
+ * { ref: 'https://...', colo: 'iad' },
113
+ * { ref: 'https://...', colo: 'fra' },
114
+ * { ref: 'https://...', colo: 'nrt' },
115
+ * ]
116
+ * )
117
+ *
118
+ * // Route to the recommended target
119
+ * const response = await fetch(decision.target, request)
120
+ * ```
121
+ */
122
+ export declare function route(hint: LocationHint, replicas: Array<{
123
+ ref: DigitalObjectRef;
124
+ colo: string;
125
+ }>, jurisdiction?: JurisdictionConfig): Promise<RoutingDecision>;
126
+ /**
127
+ * Calculate the great-circle distance between two points
128
+ *
129
+ * Uses the Haversine formula for accurate distance calculation.
130
+ *
131
+ * @param lat1 - Latitude of first point
132
+ * @param lon1 - Longitude of first point
133
+ * @param lat2 - Latitude of second point
134
+ * @param lon2 - Longitude of second point
135
+ * @returns Distance in kilometers
136
+ *
137
+ * @example
138
+ * ```typescript
139
+ * // Distance from New York to London
140
+ * const distance = haversineDistance(40.7128, -74.0060, 51.5074, -0.1278)
141
+ * // ~5570 km
142
+ * ```
143
+ */
144
+ export declare function haversineDistance(lat1: number, lon1: number, lat2: number, lon2: number): number;
145
+ /**
146
+ * Estimate latency based on geographic distance
147
+ *
148
+ * Uses a simple model: base latency + distance-based latency.
149
+ * This is a rough estimate; use pingColo for actual measurements.
150
+ *
151
+ * @param distanceKm - Distance in kilometers
152
+ * @returns Estimated latency in milliseconds
153
+ */
154
+ export declare function estimateLatency(distanceKm: number): number;
155
+ /**
156
+ * Check if a colo is allowed by jurisdiction config
157
+ *
158
+ * @param colo - Colo to check
159
+ * @param config - Jurisdiction configuration
160
+ * @returns True if colo is allowed
161
+ */
162
+ export declare function isColoAllowedByJurisdiction(colo: string, config: JurisdictionConfig): boolean;
163
+ /**
164
+ * Get all colos in a region
165
+ *
166
+ * @param region - Region code
167
+ * @returns Array of colo codes in the region
168
+ */
169
+ export declare function getColosInRegion(region: Region): string[];
170
+ /**
171
+ * Sort colos by distance from a location
172
+ *
173
+ * @param latitude - Origin latitude
174
+ * @param longitude - Origin longitude
175
+ * @param colos - Colos to sort (defaults to all known colos)
176
+ * @returns Colos sorted by distance (nearest first)
177
+ */
178
+ export declare function sortColosByDistance(latitude: number, longitude: number, colos?: string[]): Array<{
179
+ colo: string;
180
+ distance: number;
181
+ }>;
182
+ //# sourceMappingURL=routing.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"routing.d.ts","sourceRoot":"","sources":["../../../do/colo/routing.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,EAAE,YAAY,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAA;AAC1F,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAA;AAG5D;;GAEG;AACH,MAAM,WAAW,UAAU;IACzB,kBAAkB;IAClB,IAAI,EAAE,MAAM,CAAA;IACZ,4BAA4B;IAC5B,OAAO,EAAE,MAAM,CAAA;IACf,oCAAoC;IACpC,SAAS,EAAE,OAAO,CAAA;IAClB,qCAAqC;IACrC,KAAK,CAAC,EAAE,MAAM,CAAA;CACf;AAED;;GAEG;AACH,MAAM,WAAW,eAAe;IAC9B,2CAA2C;IAC3C,MAAM,EAAE,gBAAgB,CAAA;IACxB,yBAAyB;IACzB,IAAI,EAAE,MAAM,CAAA;IACZ,kCAAkC;IAClC,gBAAgB,EAAE,MAAM,CAAA;IACxB,uCAAuC;IACvC,MAAM,EAAE,SAAS,GAAG,gBAAgB,GAAG,cAAc,GAAG,UAAU,CAAA;CACnE;AAED;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,wBAAsB,eAAe,CACnC,QAAQ,EAAE,MAAM,EAChB,SAAS,EAAE,MAAM,EACjB,MAAM,CAAC,EAAE,MAAM,GAAG,kBAAkB,GACnC,OAAO,CAAC,QAAQ,CAAC,CASnB;AAED;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,wBAAsB,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,CAAC,CAUhE;AAED;;;;;;;;;;;;GAYG;AACH,wBAAsB,SAAS,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,UAAU,EAAE,CAAC,CAEtE;AAED;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AACH,wBAAsB,KAAK,CACzB,IAAI,EAAE,YAAY,EAClB,QAAQ,EAAE,KAAK,CAAC;IAAE,GAAG,EAAE,gBAAgB,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,CAAC,EACxD,YAAY,CAAC,EAAE,kBAAkB,GAChC,OAAO,CAAC,eAAe,CAAC,CAW1B;AAED;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAgB,iBAAiB,CAC/B,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,MAAM,GACX,MAAM,CAeR;AAED;;;;;;;;GAQG;AACH,wBAAgB,eAAe,CAAC,UAAU,EAAE,MAAM,GAAG,MAAM,CAU1D;AAED;;;;;;GAMG;AACH,wBAAgB,2BAA2B,CACzC,IAAI,EAAE,MAAM,EACZ,MAAM,EAAE,kBAAkB,GACzB,OAAO,CA+BT;AAED;;;;;GAKG;AACH,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,EAAE,CAezD;AAED;;;;;;;GAOG;AACH,wBAAgB,mBAAmB,CACjC,QAAQ,EAAE,MAAM,EAChB,SAAS,EAAE,MAAM,EACjB,KAAK,CAAC,EAAE,MAAM,EAAE,GACf,KAAK,CAAC;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAA;CAAE,CAAC,CAe3C"}
@@ -0,0 +1,254 @@
1
+ /**
2
+ * Colo-Aware Routing
3
+ *
4
+ * Find the best colo for a given location, measure latency, and route
5
+ * requests to the optimal replica.
6
+ *
7
+ * @module colo/routing
8
+ */
9
+ import { COLO_METADATA, getRegionForColo } from './info';
10
+ /**
11
+ * Find the nearest colo to a given geographic location
12
+ *
13
+ * Uses the Haversine formula to calculate great-circle distance between
14
+ * the given coordinates and known colo locations.
15
+ *
16
+ * @param latitude - Latitude of the target location
17
+ * @param longitude - Longitude of the target location
18
+ * @param filter - Optional region filter or jurisdiction config
19
+ * @returns ColoInfo for the nearest colo
20
+ *
21
+ * @example
22
+ * ```typescript
23
+ * // Find nearest colo to Tokyo
24
+ * const nearest = await findNearestColo(35.6762, 139.6503)
25
+ * // { colo: 'nrt', region: 'apac', city: 'Tokyo', ... }
26
+ *
27
+ * // Find nearest colo in Europe only
28
+ * const nearestEU = await findNearestColo(48.8566, 2.3522, 'weur')
29
+ * // { colo: 'cdg', region: 'weur', city: 'Paris', ... }
30
+ * ```
31
+ */
32
+ export async function findNearestColo(latitude, longitude, filter) {
33
+ // TODO: Implement findNearestColo
34
+ //
35
+ // 1. Get list of candidate colos (filtered if region specified)
36
+ // 2. If JurisdictionConfig provided, filter by allowed/blocked
37
+ // 3. Calculate distance to each colo using haversineDistance
38
+ // 4. Return colo with minimum distance
39
+ //
40
+ throw new Error('Not implemented');
41
+ }
42
+ /**
43
+ * Ping a colo to measure latency
44
+ *
45
+ * Sends a lightweight request to a colo to measure round-trip time.
46
+ * Useful for runtime latency-based routing decisions.
47
+ *
48
+ * @param colo - IATA code of the colo to ping
49
+ * @returns Ping result with latency
50
+ *
51
+ * @example
52
+ * ```typescript
53
+ * const result = await pingColo('fra')
54
+ * console.log(`Latency to Frankfurt: ${result.latency}ms`)
55
+ *
56
+ * // Check multiple colos
57
+ * const colos = ['iad', 'fra', 'nrt']
58
+ * const results = await Promise.all(colos.map(pingColo))
59
+ * const fastest = results.reduce((a, b) => a.latency < b.latency ? a : b)
60
+ * console.log(`Fastest colo: ${fastest.colo} (${fastest.latency}ms)`)
61
+ * ```
62
+ */
63
+ export async function pingColo(colo) {
64
+ // TODO: Implement pingColo
65
+ //
66
+ // 1. Validate colo code
67
+ // 2. Record start time
68
+ // 3. Send ping request to colo
69
+ // 4. Calculate round-trip time
70
+ // 5. Return result
71
+ //
72
+ throw new Error('Not implemented');
73
+ }
74
+ /**
75
+ * Ping multiple colos in parallel
76
+ *
77
+ * @param colos - Array of colo codes to ping
78
+ * @returns Array of ping results
79
+ *
80
+ * @example
81
+ * ```typescript
82
+ * const results = await pingColos(['iad', 'fra', 'nrt', 'sin'])
83
+ * const sorted = results.sort((a, b) => a.latency - b.latency)
84
+ * console.log(`Fastest: ${sorted[0].colo} at ${sorted[0].latency}ms`)
85
+ * ```
86
+ */
87
+ export async function pingColos(colos) {
88
+ return Promise.all(colos.map(pingColo));
89
+ }
90
+ /**
91
+ * Make a routing decision based on location and available replicas
92
+ *
93
+ * Determines the best replica to route a request to based on the client's
94
+ * location, available replicas, and any jurisdiction constraints.
95
+ *
96
+ * @param hint - Location hint from the request
97
+ * @param replicas - Available replica references with their colos
98
+ * @param jurisdiction - Optional jurisdiction constraints
99
+ * @returns Routing decision with target reference
100
+ *
101
+ * @example
102
+ * ```typescript
103
+ * const decision = await route(
104
+ * { clientIp: request.headers.get('cf-connecting-ip') },
105
+ * [
106
+ * { ref: 'https://...', colo: 'iad' },
107
+ * { ref: 'https://...', colo: 'fra' },
108
+ * { ref: 'https://...', colo: 'nrt' },
109
+ * ]
110
+ * )
111
+ *
112
+ * // Route to the recommended target
113
+ * const response = await fetch(decision.target, request)
114
+ * ```
115
+ */
116
+ export async function route(hint, replicas, jurisdiction) {
117
+ // TODO: Implement route
118
+ //
119
+ // 1. If hint.colo specified, try to match directly
120
+ // 2. If hint.region specified, filter replicas to that region
121
+ // 3. If hint.clientIp, geo-locate IP and find nearest
122
+ // 4. If hint.coordinates, use findNearestColo
123
+ // 5. Apply jurisdiction constraints
124
+ // 6. Return routing decision with reason
125
+ //
126
+ throw new Error('Not implemented');
127
+ }
128
+ /**
129
+ * Calculate the great-circle distance between two points
130
+ *
131
+ * Uses the Haversine formula for accurate distance calculation.
132
+ *
133
+ * @param lat1 - Latitude of first point
134
+ * @param lon1 - Longitude of first point
135
+ * @param lat2 - Latitude of second point
136
+ * @param lon2 - Longitude of second point
137
+ * @returns Distance in kilometers
138
+ *
139
+ * @example
140
+ * ```typescript
141
+ * // Distance from New York to London
142
+ * const distance = haversineDistance(40.7128, -74.0060, 51.5074, -0.1278)
143
+ * // ~5570 km
144
+ * ```
145
+ */
146
+ export function haversineDistance(lat1, lon1, lat2, lon2) {
147
+ const R = 6371; // Earth radius in kilometers
148
+ const toRad = (deg) => (deg * Math.PI) / 180;
149
+ const dLat = toRad(lat2 - lat1);
150
+ const dLon = toRad(lon2 - lon1);
151
+ const a = Math.sin(dLat / 2) * Math.sin(dLat / 2) +
152
+ Math.cos(toRad(lat1)) * Math.cos(toRad(lat2)) * Math.sin(dLon / 2) * Math.sin(dLon / 2);
153
+ const c = 2 * Math.atan2(Math.sqrt(a), Math.sqrt(1 - a));
154
+ return R * c;
155
+ }
156
+ /**
157
+ * Estimate latency based on geographic distance
158
+ *
159
+ * Uses a simple model: base latency + distance-based latency.
160
+ * This is a rough estimate; use pingColo for actual measurements.
161
+ *
162
+ * @param distanceKm - Distance in kilometers
163
+ * @returns Estimated latency in milliseconds
164
+ */
165
+ export function estimateLatency(distanceKm) {
166
+ // Base latency (processing, serialization, etc.)
167
+ const baseLatency = 10;
168
+ // Speed of light in fiber: ~200,000 km/s
169
+ // Round trip, so divide by 100,000 km/s
170
+ const propagationLatency = distanceKm / 100;
171
+ // Add some overhead for network hops (~20%)
172
+ return Math.round((baseLatency + propagationLatency) * 1.2);
173
+ }
174
+ /**
175
+ * Check if a colo is allowed by jurisdiction config
176
+ *
177
+ * @param colo - Colo to check
178
+ * @param config - Jurisdiction configuration
179
+ * @returns True if colo is allowed
180
+ */
181
+ export function isColoAllowedByJurisdiction(colo, config) {
182
+ // Check blocked colos
183
+ if (config.blockedColos?.includes(colo.toLowerCase())) {
184
+ return false;
185
+ }
186
+ // Check allowed colos (if specified, must be in list)
187
+ if (config.allowedColos && !config.allowedColos.includes(colo.toLowerCase())) {
188
+ return false;
189
+ }
190
+ // Check region
191
+ const region = getRegionForColo(colo);
192
+ if (region) {
193
+ if (config.blockedRegions?.includes(region)) {
194
+ return false;
195
+ }
196
+ if (config.allowedRegions && !config.allowedRegions.includes(region)) {
197
+ return false;
198
+ }
199
+ }
200
+ // Check country
201
+ const metadata = COLO_METADATA[colo.toLowerCase()];
202
+ if (metadata && config.requiredCountries) {
203
+ if (!config.requiredCountries.includes(metadata.country)) {
204
+ return false;
205
+ }
206
+ }
207
+ return true;
208
+ }
209
+ /**
210
+ * Get all colos in a region
211
+ *
212
+ * @param region - Region code
213
+ * @returns Array of colo codes in the region
214
+ */
215
+ export function getColosInRegion(region) {
216
+ // TODO: Import REGIONS from types at module level when implementing
217
+ // For now, use the inline data
218
+ const regionColos = {
219
+ wnam: ['sjc', 'lax', 'sea', 'den', 'phx', 'pdx', 'yvr'],
220
+ enam: ['iad', 'dfw', 'atl', 'ord', 'mia', 'yyz', 'bos', 'jfk'],
221
+ sam: ['gru', 'eze', 'scl', 'bog'],
222
+ weur: ['lhr', 'cdg', 'fra', 'ams', 'dub', 'mad', 'lis'],
223
+ eeur: ['waw', 'bud', 'prg', 'vie'],
224
+ apac: ['nrt', 'sin', 'hkg', 'bom', 'del', 'icn', 'kix'],
225
+ oc: ['syd', 'mel', 'akl', 'per'],
226
+ afr: ['jnb', 'cpt', 'nbo'],
227
+ me: ['dxb', 'tlv', 'ruh'],
228
+ };
229
+ return regionColos[region] ?? [];
230
+ }
231
+ /**
232
+ * Sort colos by distance from a location
233
+ *
234
+ * @param latitude - Origin latitude
235
+ * @param longitude - Origin longitude
236
+ * @param colos - Colos to sort (defaults to all known colos)
237
+ * @returns Colos sorted by distance (nearest first)
238
+ */
239
+ export function sortColosByDistance(latitude, longitude, colos) {
240
+ const candidates = colos ?? Object.keys(COLO_METADATA);
241
+ return candidates
242
+ .map((colo) => {
243
+ const metadata = COLO_METADATA[colo.toLowerCase()];
244
+ if (!metadata) {
245
+ return { colo, distance: Infinity };
246
+ }
247
+ return {
248
+ colo,
249
+ distance: haversineDistance(latitude, longitude, metadata.latitude, metadata.longitude),
250
+ };
251
+ })
252
+ .sort((a, b) => a.distance - b.distance);
253
+ }
254
+ //# sourceMappingURL=routing.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"routing.js","sourceRoot":"","sources":["../../../do/colo/routing.ts"],"names":[],"mappings":"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"}