@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,263 @@
1
+ /**
2
+ * Request Routing Configuration
3
+ *
4
+ * Manages routing rules for subdomains to Workers, Durable Objects,
5
+ * Pages deployments, or external URLs.
6
+ *
7
+ * @module domains/routing
8
+ */
9
+ import type { PlatformTLD } from '../../types/domains';
10
+ /**
11
+ * Route target types
12
+ */
13
+ export type RouteTargetType = 'worker' | 'do' | 'pages' | 'external';
14
+ /**
15
+ * Worker route target
16
+ */
17
+ export interface WorkerTarget {
18
+ type: 'worker';
19
+ /** Worker script name */
20
+ script: string;
21
+ /** Optional environment (production, staging, etc.) */
22
+ environment?: string;
23
+ }
24
+ /**
25
+ * Durable Object route target
26
+ */
27
+ export interface DOTarget {
28
+ type: 'do';
29
+ /** DO namespace binding name */
30
+ namespace: string;
31
+ /** Optional specific DO instance ID */
32
+ id?: string;
33
+ /** Method to determine DO ID from request (default: subdomain) */
34
+ idFromRequest?: 'subdomain' | 'path' | 'header';
35
+ }
36
+ /**
37
+ * Cloudflare Pages route target
38
+ */
39
+ export interface PagesTarget {
40
+ type: 'pages';
41
+ /** Pages project name */
42
+ project: string;
43
+ /** Optional branch (default: production) */
44
+ branch?: string;
45
+ }
46
+ /**
47
+ * External URL route target
48
+ */
49
+ export interface ExternalTarget {
50
+ type: 'external';
51
+ /** Target URL (requests will be proxied) */
52
+ url: string;
53
+ /** Whether to preserve the original host header */
54
+ preserveHost?: boolean;
55
+ }
56
+ /**
57
+ * Any route target
58
+ */
59
+ export type RouteTarget = WorkerTarget | DOTarget | PagesTarget | ExternalTarget;
60
+ /**
61
+ * Route configuration
62
+ */
63
+ export interface RouteConfig {
64
+ /** The subdomain this route applies to */
65
+ subdomain: string;
66
+ /** The platform TLD */
67
+ tld: PlatformTLD;
68
+ /** Where to route requests */
69
+ target: RouteTarget;
70
+ /** Path patterns this route matches (default: all paths) */
71
+ paths?: string[];
72
+ /** Priority for overlapping routes (higher wins) */
73
+ priority?: number;
74
+ /** Whether the route is enabled */
75
+ enabled: boolean;
76
+ /** Created timestamp */
77
+ createdAt: number;
78
+ /** Updated timestamp */
79
+ updatedAt: number;
80
+ }
81
+ /**
82
+ * Options for setting a route
83
+ */
84
+ export interface SetRouteOptions {
85
+ /** The subdomain */
86
+ subdomain: string;
87
+ /** The platform TLD */
88
+ tld: PlatformTLD;
89
+ /** Route target */
90
+ target: RouteTarget;
91
+ /** Path patterns (optional) */
92
+ paths?: string[];
93
+ /** Priority (optional) */
94
+ priority?: number;
95
+ }
96
+ /**
97
+ * Options for listing routes
98
+ */
99
+ export interface ListRoutesOptions {
100
+ /** Filter by TLD */
101
+ tld?: PlatformTLD;
102
+ /** Filter by target type */
103
+ targetType?: RouteTargetType;
104
+ /** Filter by enabled status */
105
+ enabled?: boolean;
106
+ /** Maximum results */
107
+ limit?: number;
108
+ /** Pagination cursor */
109
+ cursor?: string;
110
+ }
111
+ /**
112
+ * Result of listing routes
113
+ */
114
+ export interface ListRoutesResult {
115
+ /** The route configurations */
116
+ routes: RouteConfig[];
117
+ /** Cursor for next page */
118
+ cursor?: string;
119
+ /** Whether more results exist */
120
+ hasMore: boolean;
121
+ }
122
+ /**
123
+ * Error from routing operations
124
+ */
125
+ export declare class RoutingError extends Error {
126
+ code: 'NOT_FOUND' | 'CONFLICT' | 'INVALID_TARGET' | 'INVALID_PATH';
127
+ details?: Record<string, unknown> | undefined;
128
+ constructor(code: 'NOT_FOUND' | 'CONFLICT' | 'INVALID_TARGET' | 'INVALID_PATH', message: string, details?: Record<string, unknown> | undefined);
129
+ }
130
+ /**
131
+ * Set a route for a subdomain
132
+ *
133
+ * @param options - Route options
134
+ * @returns The created/updated route config
135
+ *
136
+ * @example
137
+ * ```typescript
138
+ * // Route to a Durable Object
139
+ * const route = await setRoute({
140
+ * subdomain: 'acme',
141
+ * tld: 'saas.group',
142
+ * target: {
143
+ * type: 'do',
144
+ * namespace: 'DigitalObject',
145
+ * id: 'acme-startup'
146
+ * }
147
+ * })
148
+ *
149
+ * // Route specific paths to a Worker
150
+ * await setRoute({
151
+ * subdomain: 'api',
152
+ * tld: 'acme.saas.group',
153
+ * target: { type: 'worker', script: 'acme-api' },
154
+ * paths: ['/v1/*', '/v2/*']
155
+ * })
156
+ * ```
157
+ */
158
+ export declare function setRoute(options: SetRouteOptions): Promise<RouteConfig>;
159
+ /**
160
+ * Get the route configuration for a subdomain
161
+ *
162
+ * @param subdomain - The subdomain
163
+ * @param tld - The platform TLD
164
+ * @returns The route config or null if not found
165
+ *
166
+ * @example
167
+ * ```typescript
168
+ * const route = await getRoute('acme', 'saas.group')
169
+ * if (route) {
170
+ * console.log('Routes to:', route.target.type)
171
+ * }
172
+ * ```
173
+ */
174
+ export declare function getRoute(subdomain: string, tld: PlatformTLD): Promise<RouteConfig | null>;
175
+ /**
176
+ * Delete a route
177
+ *
178
+ * @param subdomain - The subdomain
179
+ * @param tld - The platform TLD
180
+ * @returns True if deleted successfully
181
+ *
182
+ * @example
183
+ * ```typescript
184
+ * await deleteRoute('acme', 'saas.group')
185
+ * ```
186
+ */
187
+ export declare function deleteRoute(subdomain: string, tld: PlatformTLD): Promise<boolean>;
188
+ /**
189
+ * List routes
190
+ *
191
+ * @param options - List options
192
+ * @returns Paginated list of routes
193
+ *
194
+ * @example
195
+ * ```typescript
196
+ * const result = await listRoutes({
197
+ * tld: 'saas.group',
198
+ * targetType: 'do'
199
+ * })
200
+ * ```
201
+ */
202
+ export declare function listRoutes(options?: ListRoutesOptions): Promise<ListRoutesResult>;
203
+ /**
204
+ * Enable a route
205
+ *
206
+ * @param subdomain - The subdomain
207
+ * @param tld - The platform TLD
208
+ * @returns The updated route config
209
+ */
210
+ export declare function enableRoute(subdomain: string, tld: PlatformTLD): Promise<RouteConfig>;
211
+ /**
212
+ * Disable a route (stops routing without deleting config)
213
+ *
214
+ * @param subdomain - The subdomain
215
+ * @param tld - The platform TLD
216
+ * @returns The updated route config
217
+ */
218
+ export declare function disableRoute(subdomain: string, tld: PlatformTLD): Promise<RouteConfig>;
219
+ /**
220
+ * Resolve the route target for an incoming request
221
+ *
222
+ * @param request - The incoming request
223
+ * @returns The matched route or null
224
+ *
225
+ * @example
226
+ * ```typescript
227
+ * const route = await resolveRoute(request)
228
+ * if (route) {
229
+ * switch (route.target.type) {
230
+ * case 'do':
231
+ * return forwardToDO(route.target, request)
232
+ * case 'worker':
233
+ * return forwardToWorker(route.target, request)
234
+ * // ...
235
+ * }
236
+ * }
237
+ * ```
238
+ */
239
+ export declare function resolveRoute(request: Request): Promise<RouteConfig | null>;
240
+ /**
241
+ * Forward a request to its route target
242
+ *
243
+ * @param route - The route configuration
244
+ * @param request - The incoming request
245
+ * @param env - Environment bindings
246
+ * @returns The response from the target
247
+ */
248
+ export declare function forwardToTarget(route: RouteConfig, request: Request, env: Record<string, unknown>): Promise<Response>;
249
+ /**
250
+ * Validate a route target
251
+ */
252
+ export declare function validateTarget(target: RouteTarget): {
253
+ valid: boolean;
254
+ error?: string;
255
+ };
256
+ /**
257
+ * Validate a path pattern
258
+ */
259
+ export declare function validatePathPattern(pattern: string): {
260
+ valid: boolean;
261
+ error?: string;
262
+ };
263
+ //# sourceMappingURL=routing.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"routing.d.ts","sourceRoot":"","sources":["../../../do/domains/routing.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,362 @@
1
+ /**
2
+ * Request Routing Configuration
3
+ *
4
+ * Manages routing rules for subdomains to Workers, Durable Objects,
5
+ * Pages deployments, or external URLs.
6
+ *
7
+ * @module domains/routing
8
+ */
9
+ /**
10
+ * Error from routing operations
11
+ */
12
+ export class RoutingError extends Error {
13
+ code;
14
+ details;
15
+ constructor(code, message, details) {
16
+ super(message);
17
+ this.code = code;
18
+ this.details = details;
19
+ this.name = 'RoutingError';
20
+ }
21
+ }
22
+ // =============================================================================
23
+ // Public API
24
+ // =============================================================================
25
+ /**
26
+ * Set a route for a subdomain
27
+ *
28
+ * @param options - Route options
29
+ * @returns The created/updated route config
30
+ *
31
+ * @example
32
+ * ```typescript
33
+ * // Route to a Durable Object
34
+ * const route = await setRoute({
35
+ * subdomain: 'acme',
36
+ * tld: 'saas.group',
37
+ * target: {
38
+ * type: 'do',
39
+ * namespace: 'DigitalObject',
40
+ * id: 'acme-startup'
41
+ * }
42
+ * })
43
+ *
44
+ * // Route specific paths to a Worker
45
+ * await setRoute({
46
+ * subdomain: 'api',
47
+ * tld: 'acme.saas.group',
48
+ * target: { type: 'worker', script: 'acme-api' },
49
+ * paths: ['/v1/*', '/v2/*']
50
+ * })
51
+ * ```
52
+ */
53
+ export async function setRoute(options) {
54
+ // Validate target
55
+ const validation = validateTarget(options.target);
56
+ if (!validation.valid) {
57
+ throw new RoutingError('INVALID_TARGET', validation.error);
58
+ }
59
+ // Validate paths if provided
60
+ if (options.paths) {
61
+ for (const path of options.paths) {
62
+ const pathValidation = validatePathPattern(path);
63
+ if (!pathValidation.valid) {
64
+ throw new RoutingError('INVALID_PATH', pathValidation.error, { path });
65
+ }
66
+ }
67
+ }
68
+ // TODO: Store route in Builder.Domains DO
69
+ throw new Error('Not implemented');
70
+ }
71
+ /**
72
+ * Get the route configuration for a subdomain
73
+ *
74
+ * @param subdomain - The subdomain
75
+ * @param tld - The platform TLD
76
+ * @returns The route config or null if not found
77
+ *
78
+ * @example
79
+ * ```typescript
80
+ * const route = await getRoute('acme', 'saas.group')
81
+ * if (route) {
82
+ * console.log('Routes to:', route.target.type)
83
+ * }
84
+ * ```
85
+ */
86
+ export async function getRoute(subdomain, tld) {
87
+ // TODO: Fetch from Builder.Domains DO
88
+ throw new Error('Not implemented');
89
+ }
90
+ /**
91
+ * Delete a route
92
+ *
93
+ * @param subdomain - The subdomain
94
+ * @param tld - The platform TLD
95
+ * @returns True if deleted successfully
96
+ *
97
+ * @example
98
+ * ```typescript
99
+ * await deleteRoute('acme', 'saas.group')
100
+ * ```
101
+ */
102
+ export async function deleteRoute(subdomain, tld) {
103
+ // TODO: Delete from Builder.Domains DO
104
+ throw new Error('Not implemented');
105
+ }
106
+ /**
107
+ * List routes
108
+ *
109
+ * @param options - List options
110
+ * @returns Paginated list of routes
111
+ *
112
+ * @example
113
+ * ```typescript
114
+ * const result = await listRoutes({
115
+ * tld: 'saas.group',
116
+ * targetType: 'do'
117
+ * })
118
+ * ```
119
+ */
120
+ export async function listRoutes(options) {
121
+ // TODO: Fetch from Builder.Domains DO
122
+ throw new Error('Not implemented');
123
+ }
124
+ /**
125
+ * Enable a route
126
+ *
127
+ * @param subdomain - The subdomain
128
+ * @param tld - The platform TLD
129
+ * @returns The updated route config
130
+ */
131
+ export async function enableRoute(subdomain, tld) {
132
+ // TODO: Update route in Builder.Domains DO
133
+ throw new Error('Not implemented');
134
+ }
135
+ /**
136
+ * Disable a route (stops routing without deleting config)
137
+ *
138
+ * @param subdomain - The subdomain
139
+ * @param tld - The platform TLD
140
+ * @returns The updated route config
141
+ */
142
+ export async function disableRoute(subdomain, tld) {
143
+ // TODO: Update route in Builder.Domains DO
144
+ throw new Error('Not implemented');
145
+ }
146
+ // =============================================================================
147
+ // Route Resolution
148
+ // =============================================================================
149
+ /**
150
+ * Resolve the route target for an incoming request
151
+ *
152
+ * @param request - The incoming request
153
+ * @returns The matched route or null
154
+ *
155
+ * @example
156
+ * ```typescript
157
+ * const route = await resolveRoute(request)
158
+ * if (route) {
159
+ * switch (route.target.type) {
160
+ * case 'do':
161
+ * return forwardToDO(route.target, request)
162
+ * case 'worker':
163
+ * return forwardToWorker(route.target, request)
164
+ * // ...
165
+ * }
166
+ * }
167
+ * ```
168
+ */
169
+ export async function resolveRoute(request) {
170
+ const url = new URL(request.url);
171
+ const hostname = url.hostname;
172
+ // Extract subdomain and TLD from hostname
173
+ const parsed = parseHostname(hostname);
174
+ if (!parsed) {
175
+ return null;
176
+ }
177
+ // Get route config
178
+ const route = await getRoute(parsed.subdomain, parsed.tld);
179
+ if (!route || !route.enabled) {
180
+ return null;
181
+ }
182
+ // Check path matching
183
+ if (route.paths && route.paths.length > 0) {
184
+ const matched = route.paths.some((pattern) => matchPath(url.pathname, pattern));
185
+ if (!matched) {
186
+ return null;
187
+ }
188
+ }
189
+ return route;
190
+ }
191
+ /**
192
+ * Forward a request to its route target
193
+ *
194
+ * @param route - The route configuration
195
+ * @param request - The incoming request
196
+ * @param env - Environment bindings
197
+ * @returns The response from the target
198
+ */
199
+ export async function forwardToTarget(route, request, env) {
200
+ switch (route.target.type) {
201
+ case 'do':
202
+ return forwardToDO(route.target, request, env);
203
+ case 'worker':
204
+ return forwardToWorker(route.target, request);
205
+ case 'pages':
206
+ return forwardToPages(route.target, request);
207
+ case 'external':
208
+ return forwardToExternal(route.target, request);
209
+ default:
210
+ return new Response('Unknown route target', { status: 500 });
211
+ }
212
+ }
213
+ // =============================================================================
214
+ // Target-Specific Forwarding
215
+ // =============================================================================
216
+ /**
217
+ * Forward request to a Durable Object
218
+ */
219
+ async function forwardToDO(target, request, env) {
220
+ const namespace = env[target.namespace];
221
+ if (!namespace) {
222
+ return new Response(`DO namespace not found: ${target.namespace}`, { status: 500 });
223
+ }
224
+ // Determine DO ID
225
+ let doId;
226
+ if (target.id) {
227
+ doId = namespace.idFromName(target.id);
228
+ }
229
+ else {
230
+ // Derive ID from request based on idFromRequest setting
231
+ const url = new URL(request.url);
232
+ const idSource = target.idFromRequest ?? 'subdomain';
233
+ switch (idSource) {
234
+ case 'subdomain':
235
+ const parsed = parseHostname(url.hostname);
236
+ doId = namespace.idFromName(parsed?.subdomain ?? 'default');
237
+ break;
238
+ case 'path':
239
+ const pathSegment = url.pathname.split('/')[1] ?? 'default';
240
+ doId = namespace.idFromName(pathSegment);
241
+ break;
242
+ case 'header':
243
+ const headerId = request.headers.get('X-DO-ID') ?? 'default';
244
+ doId = namespace.idFromName(headerId);
245
+ break;
246
+ }
247
+ }
248
+ const stub = namespace.get(doId);
249
+ return stub.fetch(request);
250
+ }
251
+ /**
252
+ * Forward request to a Worker
253
+ */
254
+ async function forwardToWorker(target, request) {
255
+ // TODO: Implement Worker service binding forwarding
256
+ throw new Error('Not implemented');
257
+ }
258
+ /**
259
+ * Forward request to Cloudflare Pages
260
+ */
261
+ async function forwardToPages(target, request) {
262
+ // Rewrite to pages.dev URL
263
+ const pagesUrl = `https://${target.project}.pages.dev`;
264
+ const url = new URL(request.url);
265
+ const newUrl = new URL(url.pathname + url.search, pagesUrl);
266
+ return fetch(new Request(newUrl.toString(), request));
267
+ }
268
+ /**
269
+ * Forward request to external URL
270
+ */
271
+ async function forwardToExternal(target, request) {
272
+ const url = new URL(request.url);
273
+ const targetUrl = new URL(url.pathname + url.search, target.url);
274
+ const newRequest = new Request(targetUrl.toString(), {
275
+ method: request.method,
276
+ headers: request.headers,
277
+ body: request.body,
278
+ });
279
+ if (!target.preserveHost) {
280
+ newRequest.headers.set('Host', targetUrl.host);
281
+ }
282
+ return fetch(newRequest);
283
+ }
284
+ // =============================================================================
285
+ // Validation
286
+ // =============================================================================
287
+ /**
288
+ * Validate a route target
289
+ */
290
+ export function validateTarget(target) {
291
+ switch (target.type) {
292
+ case 'worker':
293
+ if (!target.script) {
294
+ return { valid: false, error: 'Worker target requires script name' };
295
+ }
296
+ break;
297
+ case 'do':
298
+ if (!target.namespace) {
299
+ return { valid: false, error: 'DO target requires namespace' };
300
+ }
301
+ break;
302
+ case 'pages':
303
+ if (!target.project) {
304
+ return { valid: false, error: 'Pages target requires project name' };
305
+ }
306
+ break;
307
+ case 'external':
308
+ if (!target.url) {
309
+ return { valid: false, error: 'External target requires URL' };
310
+ }
311
+ try {
312
+ new URL(target.url);
313
+ }
314
+ catch {
315
+ return { valid: false, error: 'External target URL is invalid' };
316
+ }
317
+ break;
318
+ }
319
+ return { valid: true };
320
+ }
321
+ /**
322
+ * Validate a path pattern
323
+ */
324
+ export function validatePathPattern(pattern) {
325
+ if (!pattern.startsWith('/')) {
326
+ return { valid: false, error: 'Path pattern must start with /' };
327
+ }
328
+ return { valid: true };
329
+ }
330
+ // =============================================================================
331
+ // Helper Functions
332
+ // =============================================================================
333
+ /**
334
+ * Parse hostname into subdomain and TLD
335
+ */
336
+ function parseHostname(hostname) {
337
+ const parts = hostname.split('.');
338
+ if (parts.length < 3) {
339
+ return null;
340
+ }
341
+ // Assumes TLD is last 2 parts
342
+ return {
343
+ subdomain: parts.slice(0, -2).join('.'),
344
+ tld: parts.slice(-2).join('.'),
345
+ };
346
+ }
347
+ /**
348
+ * Match a path against a pattern
349
+ */
350
+ function matchPath(path, pattern) {
351
+ // Simple glob matching
352
+ if (pattern.endsWith('/*')) {
353
+ const prefix = pattern.slice(0, -2);
354
+ return path.startsWith(prefix);
355
+ }
356
+ if (pattern.endsWith('*')) {
357
+ const prefix = pattern.slice(0, -1);
358
+ return path.startsWith(prefix);
359
+ }
360
+ return path === pattern;
361
+ }
362
+ //# sourceMappingURL=routing.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"routing.js","sourceRoot":"","sources":["../../../do/domains/routing.ts"],"names":[],"mappings":"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"}