@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,313 @@
1
+ /**
2
+ * Cold Storage - R2 + Iceberg
3
+ *
4
+ * Long-term archival storage using R2 with Apache Iceberg table format.
5
+ * Provides ~69ms latency at $0.015/GB/month for historical data and analytics.
6
+ *
7
+ * Features:
8
+ * - Iceberg table format for ACID transactions
9
+ * - Parquet columnar storage
10
+ * - Time-travel queries
11
+ * - Partition pruning
12
+ *
13
+ * @module @do/core/storage/cold
14
+ */
15
+ import type { R2ObjectRef, IcebergTable, IcebergSchema, IcebergSnapshot, IcebergPartitionSpec, Snapshot } from '../../types/storage';
16
+ /**
17
+ * Cold storage configuration
18
+ */
19
+ export interface ColdStorageConfig {
20
+ /** R2 key prefix for all objects */
21
+ prefix?: string;
22
+ /** Default partition fields */
23
+ partitionBy?: string[];
24
+ /** Compression codec for Parquet files */
25
+ compressionCodec?: 'none' | 'zstd' | 'snappy' | 'gzip';
26
+ /** Target file size in bytes */
27
+ targetFileSize?: number;
28
+ /** Enable automatic compaction */
29
+ autoCompact?: boolean;
30
+ }
31
+ /**
32
+ * Query options for cold storage
33
+ */
34
+ export interface ColdQueryOptions {
35
+ /** Filter conditions */
36
+ where?: Record<string, unknown>;
37
+ /** Time range for time-travel */
38
+ timeRange?: {
39
+ start: number;
40
+ end: number;
41
+ };
42
+ /** Snapshot ID for time-travel */
43
+ snapshotId?: string;
44
+ /** Partition filters for pruning */
45
+ partitions?: Record<string, string | number>;
46
+ /** Columns to select (projection pushdown) */
47
+ columns?: string[];
48
+ /** Maximum rows to return */
49
+ limit?: number;
50
+ }
51
+ /**
52
+ * Archive options
53
+ */
54
+ export interface ArchiveOptions {
55
+ /** Custom partition values */
56
+ partition?: Record<string, string | number>;
57
+ /** Custom metadata */
58
+ metadata?: Record<string, string>;
59
+ /** Compression override */
60
+ compression?: 'none' | 'zstd' | 'snappy' | 'gzip';
61
+ }
62
+ /**
63
+ * Compaction options
64
+ */
65
+ export interface CompactOptions {
66
+ /** Minimum files to trigger compaction */
67
+ minFiles?: number;
68
+ /** Target file size after compaction */
69
+ targetSize?: number;
70
+ /** Only compact files smaller than this */
71
+ maxFileSize?: number;
72
+ }
73
+ /**
74
+ * Cold storage statistics
75
+ */
76
+ export interface ColdStorageStats {
77
+ /** Total tables */
78
+ tableCount: number;
79
+ /** Total snapshots */
80
+ snapshotCount: number;
81
+ /** Total data files */
82
+ fileCount: number;
83
+ /** Total size in bytes */
84
+ totalSizeBytes: number;
85
+ /** Oldest data timestamp */
86
+ oldestTimestamp: number;
87
+ /** Newest data timestamp */
88
+ newestTimestamp: number;
89
+ }
90
+ /**
91
+ * Cold storage implementation using R2 + Iceberg
92
+ *
93
+ * @example
94
+ * ```typescript
95
+ * const cold = new ColdStorage(r2Bucket)
96
+ *
97
+ * // Archive a snapshot
98
+ * await cold.archive(snapshot, {
99
+ * partition: { year: 2024, month: 1 },
100
+ * })
101
+ *
102
+ * // Query historical data
103
+ * const orders = await cold.query('orders', {
104
+ * where: { status: 'completed' },
105
+ * timeRange: { start: lastMonth, end: today },
106
+ * partitions: { year: 2024 },
107
+ * })
108
+ *
109
+ * // Time-travel query
110
+ * const asOf = await cold.queryAsOf('orders', snapshotId)
111
+ *
112
+ * // List table snapshots
113
+ * const snapshots = await cold.listSnapshots('orders')
114
+ * ```
115
+ */
116
+ export declare class ColdStorage {
117
+ private readonly r2;
118
+ private config;
119
+ /**
120
+ * Create a new cold storage instance
121
+ *
122
+ * @param r2 - R2 bucket binding
123
+ * @param config - Storage configuration
124
+ */
125
+ constructor(r2: R2Bucket, config?: ColdStorageConfig);
126
+ /**
127
+ * Archive a DO snapshot to cold storage
128
+ *
129
+ * Converts snapshot data to Parquet format and stores in R2
130
+ * following Iceberg table structure.
131
+ *
132
+ * @param snapshot - Snapshot to archive
133
+ * @param options - Archive options
134
+ * @returns R2 object reference
135
+ *
136
+ * @example
137
+ * ```typescript
138
+ * const ref = await cold.archive(snapshot, {
139
+ * partition: { year: 2024, month: 1, day: 15 },
140
+ * })
141
+ * console.log(`Archived to: ${ref.key}`)
142
+ * ```
143
+ */
144
+ archive(snapshot: Snapshot, options?: ArchiveOptions): Promise<R2ObjectRef>;
145
+ /**
146
+ * Query data from cold storage
147
+ *
148
+ * Uses Iceberg metadata for partition pruning and
149
+ * Parquet predicate pushdown for efficient queries.
150
+ *
151
+ * @param table - Table name
152
+ * @param options - Query options
153
+ * @returns Query results
154
+ *
155
+ * @example
156
+ * ```typescript
157
+ * const results = await cold.query('orders', {
158
+ * where: { customerId: 'cust_123' },
159
+ * timeRange: { start: startOfYear, end: endOfYear },
160
+ * columns: ['id', 'amount', 'status'],
161
+ * limit: 1000,
162
+ * })
163
+ * ```
164
+ */
165
+ query<T>(table: string, options?: ColdQueryOptions): Promise<T[]>;
166
+ /**
167
+ * Query data as of a specific snapshot (time-travel)
168
+ *
169
+ * @param table - Table name
170
+ * @param snapshotId - Snapshot ID to query
171
+ * @param options - Additional query options
172
+ * @returns Query results as of that snapshot
173
+ *
174
+ * @example
175
+ * ```typescript
176
+ * // Query orders as they were 30 days ago
177
+ * const snapshot = await cold.getSnapshotAt('orders', thirtyDaysAgo)
178
+ * const orders = await cold.queryAsOf('orders', snapshot.snapshotId)
179
+ * ```
180
+ */
181
+ queryAsOf<T>(table: string, snapshotId: string, options?: Omit<ColdQueryOptions, 'snapshotId'>): Promise<T[]>;
182
+ /**
183
+ * Get table metadata
184
+ *
185
+ * @param table - Table name
186
+ * @returns Iceberg table metadata
187
+ */
188
+ getTable(table: string): Promise<IcebergTable | null>;
189
+ /**
190
+ * Create a new Iceberg table
191
+ *
192
+ * @param table - Table name
193
+ * @param schema - Table schema
194
+ * @param options - Table options
195
+ * @returns Created table metadata
196
+ */
197
+ createTable(table: string, schema: IcebergSchema, options?: {
198
+ partitionSpec?: IcebergPartitionSpec;
199
+ properties?: Record<string, string>;
200
+ }): Promise<IcebergTable>;
201
+ /**
202
+ * List snapshots for a table
203
+ *
204
+ * @param table - Table name
205
+ * @param options - List options
206
+ * @returns Array of snapshots
207
+ */
208
+ listSnapshots(table: string, options?: {
209
+ limit?: number;
210
+ after?: string;
211
+ }): Promise<IcebergSnapshot[]>;
212
+ /**
213
+ * Get snapshot at a specific timestamp
214
+ *
215
+ * @param table - Table name
216
+ * @param timestamp - Target timestamp
217
+ * @returns Snapshot valid at that time or null
218
+ */
219
+ getSnapshotAt(table: string, timestamp: number): Promise<IcebergSnapshot | null>;
220
+ /**
221
+ * Restore data from a snapshot
222
+ *
223
+ * @param snapshot - DO snapshot to restore
224
+ * @returns Restored snapshot data
225
+ */
226
+ restore(snapshotId: string): Promise<Snapshot>;
227
+ /**
228
+ * Delete old snapshots (expire)
229
+ *
230
+ * @param table - Table name
231
+ * @param options - Expiration options
232
+ * @returns Number of snapshots deleted
233
+ */
234
+ expireSnapshots(table: string, options: {
235
+ olderThan?: number;
236
+ retainLast?: number;
237
+ }): Promise<number>;
238
+ /**
239
+ * Compact small files into larger ones
240
+ *
241
+ * @param table - Table name
242
+ * @param options - Compaction options
243
+ * @returns Compaction result
244
+ */
245
+ compact(table: string, options?: CompactOptions): Promise<{
246
+ filesCompacted: number;
247
+ filesCreated: number;
248
+ bytesRemoved: number;
249
+ bytesAdded: number;
250
+ }>;
251
+ /**
252
+ * List all tables
253
+ *
254
+ * @returns Array of table names
255
+ */
256
+ listTables(): Promise<string[]>;
257
+ /**
258
+ * Delete a table and all its data
259
+ *
260
+ * @param table - Table name
261
+ */
262
+ dropTable(table: string): Promise<void>;
263
+ /**
264
+ * Get storage statistics
265
+ *
266
+ * @returns Cold storage statistics
267
+ */
268
+ getStats(): Promise<ColdStorageStats>;
269
+ /**
270
+ * Build R2 key for an object
271
+ *
272
+ * @param components - Key components
273
+ * @returns Full R2 key
274
+ */
275
+ private buildKey;
276
+ /**
277
+ * Build partition path from values
278
+ *
279
+ * @param partitions - Partition values
280
+ * @returns Partition path component
281
+ */
282
+ private buildPartitionPath;
283
+ }
284
+ /**
285
+ * Convert data to Parquet format
286
+ *
287
+ * @param data - Data to convert
288
+ * @param schema - Schema definition
289
+ * @param options - Conversion options
290
+ * @returns Parquet file as ArrayBuffer
291
+ */
292
+ export declare function toParquet(data: unknown[], schema: IcebergSchema, options?: {
293
+ compression?: 'none' | 'zstd' | 'snappy' | 'gzip';
294
+ }): Promise<ArrayBuffer>;
295
+ /**
296
+ * Read data from Parquet format
297
+ *
298
+ * @param buffer - Parquet file buffer
299
+ * @param options - Read options
300
+ * @returns Parsed data
301
+ */
302
+ export declare function fromParquet<T>(buffer: ArrayBuffer, options?: {
303
+ columns?: string[];
304
+ rowFilter?: (row: unknown) => boolean;
305
+ }): Promise<T[]>;
306
+ /**
307
+ * Create Iceberg schema from TypeScript type
308
+ *
309
+ * @param sample - Sample object
310
+ * @returns Iceberg schema
311
+ */
312
+ export declare function inferSchema(sample: Record<string, unknown>): IcebergSchema;
313
+ //# sourceMappingURL=cold.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cold.d.ts","sourceRoot":"","sources":["../../../db/storage/cold.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,319 @@
1
+ /**
2
+ * Cold Storage - R2 + Iceberg
3
+ *
4
+ * Long-term archival storage using R2 with Apache Iceberg table format.
5
+ * Provides ~69ms latency at $0.015/GB/month for historical data and analytics.
6
+ *
7
+ * Features:
8
+ * - Iceberg table format for ACID transactions
9
+ * - Parquet columnar storage
10
+ * - Time-travel queries
11
+ * - Partition pruning
12
+ *
13
+ * @module @do/core/storage/cold
14
+ */
15
+ /**
16
+ * Cold storage implementation using R2 + Iceberg
17
+ *
18
+ * @example
19
+ * ```typescript
20
+ * const cold = new ColdStorage(r2Bucket)
21
+ *
22
+ * // Archive a snapshot
23
+ * await cold.archive(snapshot, {
24
+ * partition: { year: 2024, month: 1 },
25
+ * })
26
+ *
27
+ * // Query historical data
28
+ * const orders = await cold.query('orders', {
29
+ * where: { status: 'completed' },
30
+ * timeRange: { start: lastMonth, end: today },
31
+ * partitions: { year: 2024 },
32
+ * })
33
+ *
34
+ * // Time-travel query
35
+ * const asOf = await cold.queryAsOf('orders', snapshotId)
36
+ *
37
+ * // List table snapshots
38
+ * const snapshots = await cold.listSnapshots('orders')
39
+ * ```
40
+ */
41
+ export class ColdStorage {
42
+ r2;
43
+ config;
44
+ /**
45
+ * Create a new cold storage instance
46
+ *
47
+ * @param r2 - R2 bucket binding
48
+ * @param config - Storage configuration
49
+ */
50
+ constructor(r2, config) {
51
+ this.r2 = r2;
52
+ this.config = {
53
+ prefix: config?.prefix ?? 'iceberg/',
54
+ partitionBy: config?.partitionBy ?? ['year', 'month'],
55
+ compressionCodec: config?.compressionCodec ?? 'zstd',
56
+ targetFileSize: config?.targetFileSize ?? 128 * 1024 * 1024, // 128MB
57
+ autoCompact: config?.autoCompact ?? true,
58
+ };
59
+ }
60
+ /**
61
+ * Archive a DO snapshot to cold storage
62
+ *
63
+ * Converts snapshot data to Parquet format and stores in R2
64
+ * following Iceberg table structure.
65
+ *
66
+ * @param snapshot - Snapshot to archive
67
+ * @param options - Archive options
68
+ * @returns R2 object reference
69
+ *
70
+ * @example
71
+ * ```typescript
72
+ * const ref = await cold.archive(snapshot, {
73
+ * partition: { year: 2024, month: 1, day: 15 },
74
+ * })
75
+ * console.log(`Archived to: ${ref.key}`)
76
+ * ```
77
+ */
78
+ async archive(snapshot, options) {
79
+ // TODO: Implement snapshot archival
80
+ // 1. Convert snapshot tables to Parquet
81
+ // 2. Build Iceberg metadata
82
+ // 3. Store in R2 with proper key structure
83
+ throw new Error('Not implemented');
84
+ }
85
+ /**
86
+ * Query data from cold storage
87
+ *
88
+ * Uses Iceberg metadata for partition pruning and
89
+ * Parquet predicate pushdown for efficient queries.
90
+ *
91
+ * @param table - Table name
92
+ * @param options - Query options
93
+ * @returns Query results
94
+ *
95
+ * @example
96
+ * ```typescript
97
+ * const results = await cold.query('orders', {
98
+ * where: { customerId: 'cust_123' },
99
+ * timeRange: { start: startOfYear, end: endOfYear },
100
+ * columns: ['id', 'amount', 'status'],
101
+ * limit: 1000,
102
+ * })
103
+ * ```
104
+ */
105
+ async query(table, options) {
106
+ // TODO: Implement Iceberg query
107
+ // 1. Read table metadata
108
+ // 2. Apply partition pruning
109
+ // 3. Read relevant Parquet files
110
+ // 4. Apply predicate pushdown
111
+ // 5. Return filtered results
112
+ throw new Error('Not implemented');
113
+ }
114
+ /**
115
+ * Query data as of a specific snapshot (time-travel)
116
+ *
117
+ * @param table - Table name
118
+ * @param snapshotId - Snapshot ID to query
119
+ * @param options - Additional query options
120
+ * @returns Query results as of that snapshot
121
+ *
122
+ * @example
123
+ * ```typescript
124
+ * // Query orders as they were 30 days ago
125
+ * const snapshot = await cold.getSnapshotAt('orders', thirtyDaysAgo)
126
+ * const orders = await cold.queryAsOf('orders', snapshot.snapshotId)
127
+ * ```
128
+ */
129
+ async queryAsOf(table, snapshotId, options) {
130
+ // TODO: Implement time-travel query
131
+ throw new Error('Not implemented');
132
+ }
133
+ /**
134
+ * Get table metadata
135
+ *
136
+ * @param table - Table name
137
+ * @returns Iceberg table metadata
138
+ */
139
+ async getTable(table) {
140
+ // TODO: Implement table metadata retrieval
141
+ throw new Error('Not implemented');
142
+ }
143
+ /**
144
+ * Create a new Iceberg table
145
+ *
146
+ * @param table - Table name
147
+ * @param schema - Table schema
148
+ * @param options - Table options
149
+ * @returns Created table metadata
150
+ */
151
+ async createTable(table, schema, options) {
152
+ // TODO: Implement table creation
153
+ throw new Error('Not implemented');
154
+ }
155
+ /**
156
+ * List snapshots for a table
157
+ *
158
+ * @param table - Table name
159
+ * @param options - List options
160
+ * @returns Array of snapshots
161
+ */
162
+ async listSnapshots(table, options) {
163
+ // TODO: Implement snapshot listing
164
+ throw new Error('Not implemented');
165
+ }
166
+ /**
167
+ * Get snapshot at a specific timestamp
168
+ *
169
+ * @param table - Table name
170
+ * @param timestamp - Target timestamp
171
+ * @returns Snapshot valid at that time or null
172
+ */
173
+ async getSnapshotAt(table, timestamp) {
174
+ // TODO: Implement snapshot lookup by timestamp
175
+ throw new Error('Not implemented');
176
+ }
177
+ /**
178
+ * Restore data from a snapshot
179
+ *
180
+ * @param snapshot - DO snapshot to restore
181
+ * @returns Restored snapshot data
182
+ */
183
+ async restore(snapshotId) {
184
+ // TODO: Implement snapshot restoration
185
+ throw new Error('Not implemented');
186
+ }
187
+ /**
188
+ * Delete old snapshots (expire)
189
+ *
190
+ * @param table - Table name
191
+ * @param options - Expiration options
192
+ * @returns Number of snapshots deleted
193
+ */
194
+ async expireSnapshots(table, options) {
195
+ // TODO: Implement snapshot expiration
196
+ throw new Error('Not implemented');
197
+ }
198
+ /**
199
+ * Compact small files into larger ones
200
+ *
201
+ * @param table - Table name
202
+ * @param options - Compaction options
203
+ * @returns Compaction result
204
+ */
205
+ async compact(table, options) {
206
+ // TODO: Implement file compaction
207
+ throw new Error('Not implemented');
208
+ }
209
+ /**
210
+ * List all tables
211
+ *
212
+ * @returns Array of table names
213
+ */
214
+ async listTables() {
215
+ // TODO: Implement table listing
216
+ throw new Error('Not implemented');
217
+ }
218
+ /**
219
+ * Delete a table and all its data
220
+ *
221
+ * @param table - Table name
222
+ */
223
+ async dropTable(table) {
224
+ // TODO: Implement table deletion
225
+ throw new Error('Not implemented');
226
+ }
227
+ /**
228
+ * Get storage statistics
229
+ *
230
+ * @returns Cold storage statistics
231
+ */
232
+ async getStats() {
233
+ // TODO: Implement statistics gathering
234
+ throw new Error('Not implemented');
235
+ }
236
+ /**
237
+ * Build R2 key for an object
238
+ *
239
+ * @param components - Key components
240
+ * @returns Full R2 key
241
+ */
242
+ buildKey(...components) {
243
+ return `${this.config.prefix}${components.join('/')}`;
244
+ }
245
+ /**
246
+ * Build partition path from values
247
+ *
248
+ * @param partitions - Partition values
249
+ * @returns Partition path component
250
+ */
251
+ buildPartitionPath(partitions) {
252
+ return Object.entries(partitions)
253
+ .map(([key, value]) => `${key}=${value}`)
254
+ .join('/');
255
+ }
256
+ }
257
+ /**
258
+ * Convert data to Parquet format
259
+ *
260
+ * @param data - Data to convert
261
+ * @param schema - Schema definition
262
+ * @param options - Conversion options
263
+ * @returns Parquet file as ArrayBuffer
264
+ */
265
+ export async function toParquet(data, schema, options) {
266
+ // TODO: Implement Parquet encoding
267
+ throw new Error('Not implemented');
268
+ }
269
+ /**
270
+ * Read data from Parquet format
271
+ *
272
+ * @param buffer - Parquet file buffer
273
+ * @param options - Read options
274
+ * @returns Parsed data
275
+ */
276
+ export async function fromParquet(buffer, options) {
277
+ // TODO: Implement Parquet decoding
278
+ throw new Error('Not implemented');
279
+ }
280
+ /**
281
+ * Create Iceberg schema from TypeScript type
282
+ *
283
+ * @param sample - Sample object
284
+ * @returns Iceberg schema
285
+ */
286
+ export function inferSchema(sample) {
287
+ const fields = Object.entries(sample).map(([name, value], id) => ({
288
+ id,
289
+ name,
290
+ type: inferIcebergType(value),
291
+ required: value !== null && value !== undefined,
292
+ }));
293
+ return {
294
+ schemaId: 0,
295
+ fields,
296
+ };
297
+ }
298
+ /**
299
+ * Infer Iceberg type from JavaScript value
300
+ */
301
+ function inferIcebergType(value) {
302
+ if (value === null || value === undefined)
303
+ return 'string';
304
+ if (typeof value === 'string')
305
+ return 'string';
306
+ if (typeof value === 'number') {
307
+ return Number.isInteger(value) ? 'long' : 'double';
308
+ }
309
+ if (typeof value === 'boolean')
310
+ return 'boolean';
311
+ if (value instanceof Date)
312
+ return 'timestamp';
313
+ if (Array.isArray(value))
314
+ return 'list';
315
+ if (typeof value === 'object')
316
+ return 'struct';
317
+ return 'binary';
318
+ }
319
+ //# sourceMappingURL=cold.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cold.js","sourceRoot":"","sources":["../../../db/storage/cold.ts"],"names":[],"mappings":"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"}