workerstack 0.1.0-beta.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 (605) hide show
  1. package/CHANGELOG.md +13 -0
  2. package/LICENSE +21 -0
  3. package/README.md +138 -0
  4. package/dist/access.d.ts +131 -0
  5. package/dist/access.d.ts.map +1 -0
  6. package/dist/access.js +333 -0
  7. package/dist/access.js.map +1 -0
  8. package/dist/api/builder.d.ts +457 -0
  9. package/dist/api/builder.d.ts.map +1 -0
  10. package/dist/api/builder.js +45 -0
  11. package/dist/api/builder.js.map +1 -0
  12. package/dist/api/catalog.d.ts +8 -0
  13. package/dist/api/catalog.d.ts.map +1 -0
  14. package/dist/api/catalog.js +56 -0
  15. package/dist/api/catalog.js.map +1 -0
  16. package/dist/api/context.d.ts +47 -0
  17. package/dist/api/context.d.ts.map +1 -0
  18. package/dist/api/context.js +40 -0
  19. package/dist/api/context.js.map +1 -0
  20. package/dist/api/crud-router.d.ts +476 -0
  21. package/dist/api/crud-router.d.ts.map +1 -0
  22. package/dist/api/crud-router.js +354 -0
  23. package/dist/api/crud-router.js.map +1 -0
  24. package/dist/api/list-input-schema.d.ts +37 -0
  25. package/dist/api/list-input-schema.d.ts.map +1 -0
  26. package/dist/api/list-input-schema.js +63 -0
  27. package/dist/api/list-input-schema.js.map +1 -0
  28. package/dist/api/list-spec.d.ts +44 -0
  29. package/dist/api/list-spec.d.ts.map +1 -0
  30. package/dist/api/list-spec.js +49 -0
  31. package/dist/api/list-spec.js.map +1 -0
  32. package/dist/api/live-view.d.ts +14 -0
  33. package/dist/api/live-view.d.ts.map +1 -0
  34. package/dist/api/live-view.js +42 -0
  35. package/dist/api/live-view.js.map +1 -0
  36. package/dist/api/live-window.d.ts +40 -0
  37. package/dist/api/live-window.d.ts.map +1 -0
  38. package/dist/api/live-window.js +93 -0
  39. package/dist/api/live-window.js.map +1 -0
  40. package/dist/api/openapi.d.ts +6 -0
  41. package/dist/api/openapi.d.ts.map +1 -0
  42. package/dist/api/openapi.js +146 -0
  43. package/dist/api/openapi.js.map +1 -0
  44. package/dist/api/realtime-router.d.ts +94 -0
  45. package/dist/api/realtime-router.d.ts.map +1 -0
  46. package/dist/api/realtime-router.js +45 -0
  47. package/dist/api/realtime-router.js.map +1 -0
  48. package/dist/api/registry.d.ts +30 -0
  49. package/dist/api/registry.d.ts.map +1 -0
  50. package/dist/api/registry.js +236 -0
  51. package/dist/api/registry.js.map +1 -0
  52. package/dist/api/router.d.ts +15 -0
  53. package/dist/api/router.d.ts.map +1 -0
  54. package/dist/api/router.js +32 -0
  55. package/dist/api/router.js.map +1 -0
  56. package/dist/api/storage-router.d.ts +349 -0
  57. package/dist/api/storage-router.d.ts.map +1 -0
  58. package/dist/api/storage-router.js +155 -0
  59. package/dist/api/storage-router.js.map +1 -0
  60. package/dist/api/types.d.ts +55 -0
  61. package/dist/api/types.d.ts.map +1 -0
  62. package/dist/api/types.js +2 -0
  63. package/dist/api/types.js.map +1 -0
  64. package/dist/auth-password.d.ts +27 -0
  65. package/dist/auth-password.d.ts.map +1 -0
  66. package/dist/auth-password.js +60 -0
  67. package/dist/auth-password.js.map +1 -0
  68. package/dist/auth.d.ts +59 -0
  69. package/dist/auth.d.ts.map +1 -0
  70. package/dist/auth.js +146 -0
  71. package/dist/auth.js.map +1 -0
  72. package/dist/backend-internals.d.ts +35 -0
  73. package/dist/backend-internals.d.ts.map +1 -0
  74. package/dist/backend-internals.js +2 -0
  75. package/dist/backend-internals.js.map +1 -0
  76. package/dist/backend.d.ts +63 -0
  77. package/dist/backend.d.ts.map +1 -0
  78. package/dist/backend.js +59 -0
  79. package/dist/backend.js.map +1 -0
  80. package/dist/blueprint-generator.d.ts +21 -0
  81. package/dist/blueprint-generator.d.ts.map +1 -0
  82. package/dist/blueprint-generator.js +199 -0
  83. package/dist/blueprint-generator.js.map +1 -0
  84. package/dist/blueprint.d.ts +99 -0
  85. package/dist/blueprint.d.ts.map +1 -0
  86. package/dist/blueprint.js +257 -0
  87. package/dist/blueprint.js.map +1 -0
  88. package/dist/cli-skills.d.ts +16 -0
  89. package/dist/cli-skills.d.ts.map +1 -0
  90. package/dist/cli-skills.js +108 -0
  91. package/dist/cli-skills.js.map +1 -0
  92. package/dist/cli.d.ts +18 -0
  93. package/dist/cli.d.ts.map +1 -0
  94. package/dist/cli.js +205 -0
  95. package/dist/cli.js.map +1 -0
  96. package/dist/client/client.d.ts +53 -0
  97. package/dist/client/client.d.ts.map +1 -0
  98. package/dist/client/client.js +111 -0
  99. package/dist/client/client.js.map +1 -0
  100. package/dist/client/index.d.ts +4 -0
  101. package/dist/client/index.d.ts.map +1 -0
  102. package/dist/client/index.js +4 -0
  103. package/dist/client/index.js.map +1 -0
  104. package/dist/client/live-view.d.ts +49 -0
  105. package/dist/client/live-view.d.ts.map +1 -0
  106. package/dist/client/live-view.js +184 -0
  107. package/dist/client/live-view.js.map +1 -0
  108. package/dist/client/react.d.ts +4 -0
  109. package/dist/client/react.d.ts.map +1 -0
  110. package/dist/client/react.js +6 -0
  111. package/dist/client/react.js.map +1 -0
  112. package/dist/client/realtime.d.ts +54 -0
  113. package/dist/client/realtime.d.ts.map +1 -0
  114. package/dist/client/realtime.js +105 -0
  115. package/dist/client/realtime.js.map +1 -0
  116. package/dist/client/rest.d.ts +2 -0
  117. package/dist/client/rest.d.ts.map +1 -0
  118. package/dist/client/rest.js +2 -0
  119. package/dist/client/rest.js.map +1 -0
  120. package/dist/client/rpc-client.d.ts +38 -0
  121. package/dist/client/rpc-client.d.ts.map +1 -0
  122. package/dist/client/rpc-client.js +59 -0
  123. package/dist/client/rpc-client.js.map +1 -0
  124. package/dist/client/solid.d.ts +7 -0
  125. package/dist/client/solid.d.ts.map +1 -0
  126. package/dist/client/solid.js +21 -0
  127. package/dist/client/solid.js.map +1 -0
  128. package/dist/client/svelte.d.ts +6 -0
  129. package/dist/client/svelte.d.ts.map +1 -0
  130. package/dist/client/svelte.js +9 -0
  131. package/dist/client/svelte.js.map +1 -0
  132. package/dist/client/vue.d.ts +5 -0
  133. package/dist/client/vue.d.ts.map +1 -0
  134. package/dist/client/vue.js +11 -0
  135. package/dist/client/vue.js.map +1 -0
  136. package/dist/codegen.d.ts +36 -0
  137. package/dist/codegen.d.ts.map +1 -0
  138. package/dist/codegen.js +235 -0
  139. package/dist/codegen.js.map +1 -0
  140. package/dist/config.d.ts +129 -0
  141. package/dist/config.d.ts.map +1 -0
  142. package/dist/config.js +75 -0
  143. package/dist/config.js.map +1 -0
  144. package/dist/cron.d.ts +4 -0
  145. package/dist/cron.d.ts.map +1 -0
  146. package/dist/cron.js +3 -0
  147. package/dist/cron.js.map +1 -0
  148. package/dist/crud-operations.d.ts +43 -0
  149. package/dist/crud-operations.d.ts.map +1 -0
  150. package/dist/crud-operations.js +249 -0
  151. package/dist/crud-operations.js.map +1 -0
  152. package/dist/database/adapter.d.ts +26 -0
  153. package/dist/database/adapter.d.ts.map +1 -0
  154. package/dist/database/adapter.js +2 -0
  155. package/dist/database/adapter.js.map +1 -0
  156. package/dist/database/libsql.d.ts +3 -0
  157. package/dist/database/libsql.d.ts.map +1 -0
  158. package/dist/database/libsql.js +39 -0
  159. package/dist/database/libsql.js.map +1 -0
  160. package/dist/db.d.ts +15 -0
  161. package/dist/db.d.ts.map +1 -0
  162. package/dist/db.js +8 -0
  163. package/dist/db.js.map +1 -0
  164. package/dist/dev/binaries.d.ts +22 -0
  165. package/dist/dev/binaries.d.ts.map +1 -0
  166. package/dist/dev/binaries.js +119 -0
  167. package/dist/dev/binaries.js.map +1 -0
  168. package/dist/dev/env.d.ts +11 -0
  169. package/dist/dev/env.d.ts.map +1 -0
  170. package/dist/dev/env.js +71 -0
  171. package/dist/dev/env.js.map +1 -0
  172. package/dist/dev/index.d.ts +39 -0
  173. package/dist/dev/index.d.ts.map +1 -0
  174. package/dist/dev/index.js +273 -0
  175. package/dist/dev/index.js.map +1 -0
  176. package/dist/dev/processes.d.ts +37 -0
  177. package/dist/dev/processes.d.ts.map +1 -0
  178. package/dist/dev/processes.js +104 -0
  179. package/dist/dev/processes.js.map +1 -0
  180. package/dist/dev/push.d.ts +2 -0
  181. package/dist/dev/push.d.ts.map +1 -0
  182. package/dist/dev/push.js +30 -0
  183. package/dist/dev/push.js.map +1 -0
  184. package/dist/dialect.d.ts +17 -0
  185. package/dist/dialect.d.ts.map +1 -0
  186. package/dist/dialect.js +12 -0
  187. package/dist/dialect.js.map +1 -0
  188. package/dist/email/smtp.d.ts +20 -0
  189. package/dist/email/smtp.d.ts.map +1 -0
  190. package/dist/email/smtp.js +31 -0
  191. package/dist/email/smtp.js.map +1 -0
  192. package/dist/email.d.ts +26 -0
  193. package/dist/email.d.ts.map +1 -0
  194. package/dist/email.js +2 -0
  195. package/dist/email.js.map +1 -0
  196. package/dist/env-probe.d.ts +9 -0
  197. package/dist/env-probe.d.ts.map +1 -0
  198. package/dist/env-probe.js +72 -0
  199. package/dist/env-probe.js.map +1 -0
  200. package/dist/env.d.ts +62 -0
  201. package/dist/env.d.ts.map +1 -0
  202. package/dist/env.js +86 -0
  203. package/dist/env.js.map +1 -0
  204. package/dist/errors.d.ts +153 -0
  205. package/dist/errors.d.ts.map +1 -0
  206. package/dist/errors.js +106 -0
  207. package/dist/errors.js.map +1 -0
  208. package/dist/handler.d.ts +11 -0
  209. package/dist/handler.d.ts.map +1 -0
  210. package/dist/handler.js +21 -0
  211. package/dist/handler.js.map +1 -0
  212. package/dist/hosted-contract.d.ts +11 -0
  213. package/dist/hosted-contract.d.ts.map +1 -0
  214. package/dist/hosted-contract.js +50 -0
  215. package/dist/hosted-contract.js.map +1 -0
  216. package/dist/idempotency.d.ts +17 -0
  217. package/dist/idempotency.d.ts.map +1 -0
  218. package/dist/idempotency.js +65 -0
  219. package/dist/idempotency.js.map +1 -0
  220. package/dist/index.d.ts +41 -0
  221. package/dist/index.d.ts.map +1 -0
  222. package/dist/index.js +18 -0
  223. package/dist/index.js.map +1 -0
  224. package/dist/inspect.d.ts +15 -0
  225. package/dist/inspect.d.ts.map +1 -0
  226. package/dist/inspect.js +44 -0
  227. package/dist/inspect.js.map +1 -0
  228. package/dist/internal-tables.d.ts +1767 -0
  229. package/dist/internal-tables.d.ts.map +1 -0
  230. package/dist/internal-tables.js +114 -0
  231. package/dist/internal-tables.js.map +1 -0
  232. package/dist/jobs/cron.d.ts +15 -0
  233. package/dist/jobs/cron.d.ts.map +1 -0
  234. package/dist/jobs/cron.js +74 -0
  235. package/dist/jobs/cron.js.map +1 -0
  236. package/dist/jobs/define.d.ts +186 -0
  237. package/dist/jobs/define.d.ts.map +1 -0
  238. package/dist/jobs/define.js +99 -0
  239. package/dist/jobs/define.js.map +1 -0
  240. package/dist/jobs/index.d.ts +9 -0
  241. package/dist/jobs/index.d.ts.map +1 -0
  242. package/dist/jobs/index.js +7 -0
  243. package/dist/jobs/index.js.map +1 -0
  244. package/dist/jobs/queue.d.ts +13 -0
  245. package/dist/jobs/queue.d.ts.map +1 -0
  246. package/dist/jobs/queue.js +71 -0
  247. package/dist/jobs/queue.js.map +1 -0
  248. package/dist/jobs/slots.d.ts +30 -0
  249. package/dist/jobs/slots.d.ts.map +1 -0
  250. package/dist/jobs/slots.js +53 -0
  251. package/dist/jobs/slots.js.map +1 -0
  252. package/dist/jobs/worker.d.ts +45 -0
  253. package/dist/jobs/worker.d.ts.map +1 -0
  254. package/dist/jobs/worker.js +605 -0
  255. package/dist/jobs/worker.js.map +1 -0
  256. package/dist/lifecycle.d.ts +10 -0
  257. package/dist/lifecycle.d.ts.map +1 -0
  258. package/dist/lifecycle.js +37 -0
  259. package/dist/lifecycle.js.map +1 -0
  260. package/dist/list-query.d.ts +62 -0
  261. package/dist/list-query.d.ts.map +1 -0
  262. package/dist/list-query.js +190 -0
  263. package/dist/list-query.js.map +1 -0
  264. package/dist/live/apply.d.ts +13 -0
  265. package/dist/live/apply.d.ts.map +1 -0
  266. package/dist/live/apply.js +32 -0
  267. package/dist/live/apply.js.map +1 -0
  268. package/dist/live/index.d.ts +48 -0
  269. package/dist/live/index.d.ts.map +1 -0
  270. package/dist/live/index.js +108 -0
  271. package/dist/live/index.js.map +1 -0
  272. package/dist/live/protocol.d.ts +47 -0
  273. package/dist/live/protocol.d.ts.map +1 -0
  274. package/dist/live/protocol.js +12 -0
  275. package/dist/live/protocol.js.map +1 -0
  276. package/dist/live/sse.d.ts +22 -0
  277. package/dist/live/sse.d.ts.map +1 -0
  278. package/dist/live/sse.js +41 -0
  279. package/dist/live/sse.js.map +1 -0
  280. package/dist/logging.d.ts +8 -0
  281. package/dist/logging.d.ts.map +1 -0
  282. package/dist/logging.js +6 -0
  283. package/dist/logging.js.map +1 -0
  284. package/dist/manifest-diff.d.ts +6 -0
  285. package/dist/manifest-diff.d.ts.map +1 -0
  286. package/dist/manifest-diff.js +42 -0
  287. package/dist/manifest-diff.js.map +1 -0
  288. package/dist/manifest.d.ts +87 -0
  289. package/dist/manifest.d.ts.map +1 -0
  290. package/dist/manifest.js +237 -0
  291. package/dist/manifest.js.map +1 -0
  292. package/dist/messaging/email.d.ts +16 -0
  293. package/dist/messaging/email.d.ts.map +1 -0
  294. package/dist/messaging/email.js +8 -0
  295. package/dist/messaging/email.js.map +1 -0
  296. package/dist/messaging/index.d.ts +8 -0
  297. package/dist/messaging/index.d.ts.map +1 -0
  298. package/dist/messaging/index.js +4 -0
  299. package/dist/messaging/index.js.map +1 -0
  300. package/dist/messaging/journal.d.ts +4 -0
  301. package/dist/messaging/journal.d.ts.map +1 -0
  302. package/dist/messaging/journal.js +19 -0
  303. package/dist/messaging/journal.js.map +1 -0
  304. package/dist/messaging/runtime.d.ts +16 -0
  305. package/dist/messaging/runtime.d.ts.map +1 -0
  306. package/dist/messaging/runtime.js +213 -0
  307. package/dist/messaging/runtime.js.map +1 -0
  308. package/dist/messaging/standalone.d.ts +27 -0
  309. package/dist/messaging/standalone.d.ts.map +1 -0
  310. package/dist/messaging/standalone.js +18 -0
  311. package/dist/messaging/standalone.js.map +1 -0
  312. package/dist/messaging/telegram.d.ts +16 -0
  313. package/dist/messaging/telegram.d.ts.map +1 -0
  314. package/dist/messaging/telegram.js +5 -0
  315. package/dist/messaging/telegram.js.map +1 -0
  316. package/dist/messaging/types.d.ts +22 -0
  317. package/dist/messaging/types.d.ts.map +1 -0
  318. package/dist/messaging/types.js +17 -0
  319. package/dist/messaging/types.js.map +1 -0
  320. package/dist/platform.d.ts +25 -0
  321. package/dist/platform.d.ts.map +1 -0
  322. package/dist/platform.js +24 -0
  323. package/dist/platform.js.map +1 -0
  324. package/dist/provision-internals.d.ts +23 -0
  325. package/dist/provision-internals.d.ts.map +1 -0
  326. package/dist/provision-internals.js +7 -0
  327. package/dist/provision-internals.js.map +1 -0
  328. package/dist/provision-runtime.d.ts +6 -0
  329. package/dist/provision-runtime.d.ts.map +1 -0
  330. package/dist/provision-runtime.js +41 -0
  331. package/dist/provision-runtime.js.map +1 -0
  332. package/dist/provision-schema.d.ts +16 -0
  333. package/dist/provision-schema.d.ts.map +1 -0
  334. package/dist/provision-schema.js +59 -0
  335. package/dist/provision-schema.js.map +1 -0
  336. package/dist/provision.d.ts +8 -0
  337. package/dist/provision.d.ts.map +1 -0
  338. package/dist/provision.js +16 -0
  339. package/dist/provision.js.map +1 -0
  340. package/dist/query/api.d.ts +10 -0
  341. package/dist/query/api.d.ts.map +1 -0
  342. package/dist/query/api.js +7 -0
  343. package/dist/query/api.js.map +1 -0
  344. package/dist/query/client.d.ts +28 -0
  345. package/dist/query/client.d.ts.map +1 -0
  346. package/dist/query/client.js +87 -0
  347. package/dist/query/client.js.map +1 -0
  348. package/dist/query/fetch.d.ts +3 -0
  349. package/dist/query/fetch.d.ts.map +1 -0
  350. package/dist/query/fetch.js +4 -0
  351. package/dist/query/fetch.js.map +1 -0
  352. package/dist/query/index.d.ts +8 -0
  353. package/dist/query/index.d.ts.map +1 -0
  354. package/dist/query/index.js +4 -0
  355. package/dist/query/index.js.map +1 -0
  356. package/dist/query/infer.d.ts +25 -0
  357. package/dist/query/infer.d.ts.map +1 -0
  358. package/dist/query/infer.js +2 -0
  359. package/dist/query/infer.js.map +1 -0
  360. package/dist/query/react.d.ts +3 -0
  361. package/dist/query/react.d.ts.map +1 -0
  362. package/dist/query/react.js +2 -0
  363. package/dist/query/react.js.map +1 -0
  364. package/dist/query/realtime-flush.d.ts +26 -0
  365. package/dist/query/realtime-flush.d.ts.map +1 -0
  366. package/dist/query/realtime-flush.js +45 -0
  367. package/dist/query/realtime-flush.js.map +1 -0
  368. package/dist/query/realtime-stream.d.ts +3 -0
  369. package/dist/query/realtime-stream.d.ts.map +1 -0
  370. package/dist/query/realtime-stream.js +3 -0
  371. package/dist/query/realtime-stream.js.map +1 -0
  372. package/dist/query/realtime.d.ts +88 -0
  373. package/dist/query/realtime.d.ts.map +1 -0
  374. package/dist/query/realtime.js +255 -0
  375. package/dist/query/realtime.js.map +1 -0
  376. package/dist/rate-limit.d.ts +8 -0
  377. package/dist/rate-limit.d.ts.map +1 -0
  378. package/dist/rate-limit.js +46 -0
  379. package/dist/rate-limit.js.map +1 -0
  380. package/dist/readiness-probes.d.ts +4 -0
  381. package/dist/readiness-probes.d.ts.map +1 -0
  382. package/dist/readiness-probes.js +23 -0
  383. package/dist/readiness-probes.js.map +1 -0
  384. package/dist/readiness.d.ts +39 -0
  385. package/dist/readiness.d.ts.map +1 -0
  386. package/dist/readiness.js +72 -0
  387. package/dist/readiness.js.map +1 -0
  388. package/dist/realtime/facade.d.ts +20 -0
  389. package/dist/realtime/facade.d.ts.map +1 -0
  390. package/dist/realtime/facade.js +37 -0
  391. package/dist/realtime/facade.js.map +1 -0
  392. package/dist/realtime/filter.d.ts +42 -0
  393. package/dist/realtime/filter.d.ts.map +1 -0
  394. package/dist/realtime/filter.js +86 -0
  395. package/dist/realtime/filter.js.map +1 -0
  396. package/dist/realtime/heartbeat.d.ts +20 -0
  397. package/dist/realtime/heartbeat.d.ts.map +1 -0
  398. package/dist/realtime/heartbeat.js +64 -0
  399. package/dist/realtime/heartbeat.js.map +1 -0
  400. package/dist/realtime/publisher.d.ts +19 -0
  401. package/dist/realtime/publisher.d.ts.map +1 -0
  402. package/dist/realtime/publisher.js +8 -0
  403. package/dist/realtime/publisher.js.map +1 -0
  404. package/dist/runtime.d.ts +141 -0
  405. package/dist/runtime.d.ts.map +1 -0
  406. package/dist/runtime.js +463 -0
  407. package/dist/runtime.js.map +1 -0
  408. package/dist/schema-export.d.ts +2 -0
  409. package/dist/schema-export.d.ts.map +1 -0
  410. package/dist/schema-export.js +2 -0
  411. package/dist/schema-export.js.map +1 -0
  412. package/dist/scope.d.ts +4 -0
  413. package/dist/scope.d.ts.map +1 -0
  414. package/dist/scope.js +13 -0
  415. package/dist/scope.js.map +1 -0
  416. package/dist/standard-schema.d.ts +13 -0
  417. package/dist/standard-schema.d.ts.map +1 -0
  418. package/dist/standard-schema.js +34 -0
  419. package/dist/standard-schema.js.map +1 -0
  420. package/dist/start/auth-client.d.ts +11 -0
  421. package/dist/start/auth-client.d.ts.map +1 -0
  422. package/dist/start/auth-client.js +15 -0
  423. package/dist/start/auth-client.js.map +1 -0
  424. package/dist/start/create-start-worker.d.ts +16 -0
  425. package/dist/start/create-start-worker.d.ts.map +1 -0
  426. package/dist/start/create-start-worker.js +24 -0
  427. package/dist/start/create-start-worker.js.map +1 -0
  428. package/dist/start/index.d.ts +66 -0
  429. package/dist/start/index.d.ts.map +1 -0
  430. package/dist/start/index.js +49 -0
  431. package/dist/start/index.js.map +1 -0
  432. package/dist/start/isomorphic-fetch.d.ts +22 -0
  433. package/dist/start/isomorphic-fetch.d.ts.map +1 -0
  434. package/dist/start/isomorphic-fetch.js +49 -0
  435. package/dist/start/isomorphic-fetch.js.map +1 -0
  436. package/dist/start/server-entry.d.ts +7 -0
  437. package/dist/start/server-entry.d.ts.map +1 -0
  438. package/dist/start/server-entry.js +8 -0
  439. package/dist/start/server-entry.js.map +1 -0
  440. package/dist/storage/background.d.ts +3 -0
  441. package/dist/storage/background.d.ts.map +1 -0
  442. package/dist/storage/background.js +3 -0
  443. package/dist/storage/background.js.map +1 -0
  444. package/dist/storage/buckets.d.ts +78 -0
  445. package/dist/storage/buckets.d.ts.map +1 -0
  446. package/dist/storage/buckets.js +177 -0
  447. package/dist/storage/buckets.js.map +1 -0
  448. package/dist/storage/delete.d.ts +8 -0
  449. package/dist/storage/delete.d.ts.map +1 -0
  450. package/dist/storage/delete.js +10 -0
  451. package/dist/storage/delete.js.map +1 -0
  452. package/dist/storage/file-meta.d.ts +37 -0
  453. package/dist/storage/file-meta.d.ts.map +1 -0
  454. package/dist/storage/file-meta.js +166 -0
  455. package/dist/storage/file-meta.js.map +1 -0
  456. package/dist/storage/index.d.ts +28 -0
  457. package/dist/storage/index.d.ts.map +1 -0
  458. package/dist/storage/index.js +5 -0
  459. package/dist/storage/index.js.map +1 -0
  460. package/dist/storage/local.d.ts +15 -0
  461. package/dist/storage/local.d.ts.map +1 -0
  462. package/dist/storage/local.js +56 -0
  463. package/dist/storage/local.js.map +1 -0
  464. package/dist/storage/operations.d.ts +54 -0
  465. package/dist/storage/operations.d.ts.map +1 -0
  466. package/dist/storage/operations.js +212 -0
  467. package/dist/storage/operations.js.map +1 -0
  468. package/dist/storage/registry.d.ts +11 -0
  469. package/dist/storage/registry.d.ts.map +1 -0
  470. package/dist/storage/registry.js +23 -0
  471. package/dist/storage/registry.js.map +1 -0
  472. package/dist/storage/s3.d.ts +35 -0
  473. package/dist/storage/s3.d.ts.map +1 -0
  474. package/dist/storage/s3.js +125 -0
  475. package/dist/storage/s3.js.map +1 -0
  476. package/dist/storage/sigv4.d.ts +24 -0
  477. package/dist/storage/sigv4.d.ts.map +1 -0
  478. package/dist/storage/sigv4.js +107 -0
  479. package/dist/storage/sigv4.js.map +1 -0
  480. package/dist/storage/sweep.d.ts +9 -0
  481. package/dist/storage/sweep.d.ts.map +1 -0
  482. package/dist/storage/sweep.js +17 -0
  483. package/dist/storage/sweep.js.map +1 -0
  484. package/dist/sync/collection.d.ts +106 -0
  485. package/dist/sync/collection.d.ts.map +1 -0
  486. package/dist/sync/collection.js +258 -0
  487. package/dist/sync/collection.js.map +1 -0
  488. package/dist/sync/index.d.ts +8 -0
  489. package/dist/sync/index.d.ts.map +1 -0
  490. package/dist/sync/index.js +4 -0
  491. package/dist/sync/index.js.map +1 -0
  492. package/dist/sync/realtime-sync.d.ts +31 -0
  493. package/dist/sync/realtime-sync.d.ts.map +1 -0
  494. package/dist/sync/realtime-sync.js +46 -0
  495. package/dist/sync/realtime-sync.js.map +1 -0
  496. package/dist/sync/sync-client.d.ts +28 -0
  497. package/dist/sync/sync-client.d.ts.map +1 -0
  498. package/dist/sync/sync-client.js +52 -0
  499. package/dist/sync/sync-client.js.map +1 -0
  500. package/dist/sync/update-queue.d.ts +27 -0
  501. package/dist/sync/update-queue.d.ts.map +1 -0
  502. package/dist/sync/update-queue.js +66 -0
  503. package/dist/sync/update-queue.js.map +1 -0
  504. package/dist/testing/auth.d.ts +85 -0
  505. package/dist/testing/auth.d.ts.map +1 -0
  506. package/dist/testing/auth.js +140 -0
  507. package/dist/testing/auth.js.map +1 -0
  508. package/dist/testing/client.d.ts +6 -0
  509. package/dist/testing/client.d.ts.map +1 -0
  510. package/dist/testing/client.js +9 -0
  511. package/dist/testing/client.js.map +1 -0
  512. package/dist/testing/database.d.ts +6 -0
  513. package/dist/testing/database.d.ts.map +1 -0
  514. package/dist/testing/database.js +8 -0
  515. package/dist/testing/database.js.map +1 -0
  516. package/dist/testing/email.d.ts +15 -0
  517. package/dist/testing/email.d.ts.map +1 -0
  518. package/dist/testing/email.js +32 -0
  519. package/dist/testing/email.js.map +1 -0
  520. package/dist/testing/fixture.d.ts +51 -0
  521. package/dist/testing/fixture.d.ts.map +1 -0
  522. package/dist/testing/fixture.js +177 -0
  523. package/dist/testing/fixture.js.map +1 -0
  524. package/dist/testing/jobs.d.ts +40 -0
  525. package/dist/testing/jobs.d.ts.map +1 -0
  526. package/dist/testing/jobs.js +76 -0
  527. package/dist/testing/jobs.js.map +1 -0
  528. package/dist/testing/logs.d.ts +18 -0
  529. package/dist/testing/logs.d.ts.map +1 -0
  530. package/dist/testing/logs.js +53 -0
  531. package/dist/testing/logs.js.map +1 -0
  532. package/dist/testing/messaging.d.ts +21 -0
  533. package/dist/testing/messaging.d.ts.map +1 -0
  534. package/dist/testing/messaging.js +34 -0
  535. package/dist/testing/messaging.js.map +1 -0
  536. package/dist/testing/storage.d.ts +7 -0
  537. package/dist/testing/storage.d.ts.map +1 -0
  538. package/dist/testing/storage.js +29 -0
  539. package/dist/testing/storage.js.map +1 -0
  540. package/dist/testing/workers-fakes.d.ts +17 -0
  541. package/dist/testing/workers-fakes.d.ts.map +1 -0
  542. package/dist/testing/workers-fakes.js +98 -0
  543. package/dist/testing/workers-fakes.js.map +1 -0
  544. package/dist/testing.d.ts +12 -0
  545. package/dist/testing.d.ts.map +1 -0
  546. package/dist/testing.js +5 -0
  547. package/dist/testing.js.map +1 -0
  548. package/dist/typeid.d.ts +46 -0
  549. package/dist/typeid.d.ts.map +1 -0
  550. package/dist/typeid.js +130 -0
  551. package/dist/typeid.js.map +1 -0
  552. package/dist/vite.d.ts +26 -0
  553. package/dist/vite.d.ts.map +1 -0
  554. package/dist/vite.js +100 -0
  555. package/dist/vite.js.map +1 -0
  556. package/dist/worker-plan.d.ts +37 -0
  557. package/dist/worker-plan.d.ts.map +1 -0
  558. package/dist/worker-plan.js +63 -0
  559. package/dist/worker-plan.js.map +1 -0
  560. package/dist/workers/app.d.ts +19 -0
  561. package/dist/workers/app.d.ts.map +1 -0
  562. package/dist/workers/app.js +56 -0
  563. package/dist/workers/app.js.map +1 -0
  564. package/dist/workers/entry.d.ts +7 -0
  565. package/dist/workers/entry.d.ts.map +1 -0
  566. package/dist/workers/entry.js +8 -0
  567. package/dist/workers/entry.js.map +1 -0
  568. package/dist/workers/index.d.ts +23 -0
  569. package/dist/workers/index.d.ts.map +1 -0
  570. package/dist/workers/index.js +39 -0
  571. package/dist/workers/index.js.map +1 -0
  572. package/dist/workers/r2.d.ts +24 -0
  573. package/dist/workers/r2.d.ts.map +1 -0
  574. package/dist/workers/r2.js +76 -0
  575. package/dist/workers/r2.js.map +1 -0
  576. package/dist/workers/rate-limiter.d.ts +9 -0
  577. package/dist/workers/rate-limiter.d.ts.map +1 -0
  578. package/dist/workers/rate-limiter.js +22 -0
  579. package/dist/workers/rate-limiter.js.map +1 -0
  580. package/dist/workers/realtime-hub.d.ts +20 -0
  581. package/dist/workers/realtime-hub.d.ts.map +1 -0
  582. package/dist/workers/realtime-hub.js +117 -0
  583. package/dist/workers/realtime-hub.js.map +1 -0
  584. package/dist/workers/registry.d.ts +13 -0
  585. package/dist/workers/registry.d.ts.map +1 -0
  586. package/dist/workers/registry.js +19 -0
  587. package/dist/workers/registry.js.map +1 -0
  588. package/dist/workers/scheduler.d.ts +13 -0
  589. package/dist/workers/scheduler.d.ts.map +1 -0
  590. package/dist/workers/scheduler.js +71 -0
  591. package/dist/workers/scheduler.js.map +1 -0
  592. package/dist/workers/types.d.ts +55 -0
  593. package/dist/workers/types.d.ts.map +1 -0
  594. package/dist/workers/types.js +4 -0
  595. package/dist/workers/types.js.map +1 -0
  596. package/dist/workers/wrangler.d.ts +62 -0
  597. package/dist/workers/wrangler.d.ts.map +1 -0
  598. package/dist/workers/wrangler.js +90 -0
  599. package/dist/workers/wrangler.js.map +1 -0
  600. package/package.json +286 -0
  601. package/skills/creating-workerstack-apps/SKILL.md +45 -0
  602. package/skills/creating-workerstack-apps/agents/openai.yaml +4 -0
  603. package/skills/creating-workerstack-apps/references/application-structure.md +219 -0
  604. package/skills/creating-workerstack-apps/references/runtime-integrations.md +96 -0
  605. package/skills/creating-workerstack-apps/references/verification.md +29 -0
@@ -0,0 +1,56 @@
1
+ // src/api/catalog.ts — static description of the application's own procedures.
2
+ import { getOpenAPIMeta } from '@orpc/openapi';
3
+ const READ_METHODS = new Set(['GET', 'HEAD', 'OPTIONS']);
4
+ const MAX_SUMMARY = 200;
5
+ function summaryText(value) {
6
+ if (typeof value !== 'string')
7
+ return undefined;
8
+ const collapsed = value.trim().replace(/\s+/g, ' ');
9
+ if (!collapsed)
10
+ return undefined;
11
+ return collapsed.length > MAX_SUMMARY
12
+ ? `${collapsed.slice(0, MAX_SUMMARY - 1)}…`
13
+ : collapsed;
14
+ }
15
+ function walk(router, segments) {
16
+ const operations = [];
17
+ for (const [key, value] of Object.entries(router)) {
18
+ if (!value || typeof value !== 'object')
19
+ continue;
20
+ const current = [...segments, key];
21
+ if (!('~orpc' in value)) {
22
+ operations.push(...walk(value, current));
23
+ continue;
24
+ }
25
+ const meta = (getOpenAPIMeta(value) ?? {});
26
+ const handle = current.join('.');
27
+ const method = typeof meta.method === 'string' ? meta.method.toUpperCase() : undefined;
28
+ const summary = summaryText(meta.summary);
29
+ operations.push({
30
+ handle,
31
+ operationId: typeof meta.operationId === 'string' ? meta.operationId : handle,
32
+ // A procedure that declares no method could be anything. Calling it a
33
+ // read would tell a host it is safe to invoke without asking anyone.
34
+ effect: method === undefined
35
+ ? 'unknown'
36
+ : READ_METHODS.has(method)
37
+ ? 'read'
38
+ : 'mutation',
39
+ ...(method === undefined ? {} : { method }),
40
+ ...(typeof meta.path === 'string' ? { path: meta.path } : {}),
41
+ ...(summary === undefined ? {} : { summary }),
42
+ });
43
+ }
44
+ return operations;
45
+ }
46
+ /**
47
+ * Describes the procedures an application declared itself. Generated CRUD,
48
+ * storage, and realtime routes are excluded: a host derives those from the
49
+ * blueprint's `resources`.
50
+ */
51
+ export function describeApiOperations(router) {
52
+ if (!router || typeof router !== 'object')
53
+ return [];
54
+ return walk(router, []).sort((left, right) => left.handle.localeCompare(right.handle));
55
+ }
56
+ //# sourceMappingURL=catalog.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"catalog.js","sourceRoot":"","sources":["../../src/api/catalog.ts"],"names":[],"mappings":"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","sourcesContent":["// src/api/catalog.ts — static description of the application's own procedures.\nimport { getOpenAPIMeta } from '@orpc/openapi'\n\nimport type { ApiOperation } from '../manifest'\n\nconst READ_METHODS = new Set(['GET', 'HEAD', 'OPTIONS'])\nconst MAX_SUMMARY = 200\n\nfunction summaryText(value: unknown): string | undefined {\n if (typeof value !== 'string') return undefined\n const collapsed = value.trim().replace(/\\s+/g, ' ')\n if (!collapsed) return undefined\n return collapsed.length > MAX_SUMMARY\n ? `${collapsed.slice(0, MAX_SUMMARY - 1)}…`\n : collapsed\n}\n\nfunction walk(\n router: Record<string, unknown>,\n segments: string[],\n): ApiOperation[] {\n const operations: ApiOperation[] = []\n\n for (const [key, value] of Object.entries(router)) {\n if (!value || typeof value !== 'object') continue\n const current = [...segments, key]\n\n if (!('~orpc' in value)) {\n operations.push(...walk(value as Record<string, unknown>, current))\n continue\n }\n\n const meta = (getOpenAPIMeta(value as never) ?? {}) as Record<\n string,\n unknown\n >\n const handle = current.join('.')\n const method =\n typeof meta.method === 'string' ? meta.method.toUpperCase() : undefined\n const summary = summaryText(meta.summary)\n\n operations.push({\n handle,\n operationId:\n typeof meta.operationId === 'string' ? meta.operationId : handle,\n // A procedure that declares no method could be anything. Calling it a\n // read would tell a host it is safe to invoke without asking anyone.\n effect:\n method === undefined\n ? 'unknown'\n : READ_METHODS.has(method)\n ? 'read'\n : 'mutation',\n ...(method === undefined ? {} : { method }),\n ...(typeof meta.path === 'string' ? { path: meta.path } : {}),\n ...(summary === undefined ? {} : { summary }),\n })\n }\n\n return operations\n}\n\n/**\n * Describes the procedures an application declared itself. Generated CRUD,\n * storage, and realtime routes are excluded: a host derives those from the\n * blueprint's `resources`.\n */\nexport function describeApiOperations(router: unknown): ApiOperation[] {\n if (!router || typeof router !== 'object') return []\n return walk(router as Record<string, unknown>, []).sort((left, right) =>\n left.handle.localeCompare(right.handle),\n )\n}\n"]}
@@ -0,0 +1,47 @@
1
+ import type { AccessUser, AuthSessionResolver } from '../access.js';
2
+ import type { DbFor } from '../db.js';
3
+ import type { JobsRuntimeFacade } from '../jobs/define.js';
4
+ import type { WorkerstackLogger } from '../logging.js';
5
+ import type { MessagingConfig, MessagingFacadesFor } from '../messaging/index.js';
6
+ import type { RealtimeFacade } from '../realtime/facade.js';
7
+ import type { AuthInstance, StorageFacade } from '../runtime.js';
8
+ export interface ApiContextDeps<TSchema extends Record<string, unknown> = Record<string, unknown>, TEnv = Record<string, unknown>, TMessaging extends MessagingConfig | undefined = MessagingConfig, TSessionUser extends Record<string, unknown> = Record<never, never>> {
9
+ db: DbFor<TSchema>;
10
+ env: TEnv;
11
+ storage: StorageFacade;
12
+ messaging: MessagingFacadesFor<TMessaging>;
13
+ jobs: JobsRuntimeFacade;
14
+ realtime: RealtimeFacade<TSchema>;
15
+ auth: AuthInstance;
16
+ authResolver?: AuthSessionResolver<TSessionUser>;
17
+ logger?: WorkerstackLogger;
18
+ }
19
+ export interface ApiContext<TSchema extends Record<string, unknown> = Record<string, unknown>, TEnv = Record<string, unknown>, TMessaging extends MessagingConfig | undefined = MessagingConfig, TSessionUser extends Record<string, unknown> = Record<never, never>> {
20
+ db: DbFor<TSchema>;
21
+ env: TEnv;
22
+ storage: StorageFacade;
23
+ messaging: MessagingFacadesFor<TMessaging>;
24
+ jobs: JobsRuntimeFacade;
25
+ realtime: RealtimeFacade<TSchema>;
26
+ auth: AuthInstance;
27
+ logger: WorkerstackLogger;
28
+ request: Request;
29
+ resHeaders: Headers;
30
+ getRawBody: () => Promise<string>;
31
+ getSession: () => Promise<{
32
+ user: AccessUser<TSessionUser> | null;
33
+ activeOrganizationId: string | null;
34
+ }>;
35
+ /**
36
+ * The session that some earlier code already resolved, or `undefined`.
37
+ * Never starts a resolution, so a global middleware can log the caller
38
+ * without removing the lazy session behavior that signed webhooks rely on.
39
+ * Use it for observability only. Never use it for authorization.
40
+ */
41
+ peekSession: () => {
42
+ user: AccessUser<TSessionUser> | null;
43
+ activeOrganizationId: string | null;
44
+ } | undefined;
45
+ }
46
+ export declare function createApiContext<TSchema extends Record<string, unknown> = Record<string, unknown>, TEnv = Record<string, unknown>, TMessaging extends MessagingConfig | undefined = MessagingConfig, TSessionUser extends Record<string, unknown> = Record<never, never>>(deps: ApiContextDeps<TSchema, TEnv, TMessaging, TSessionUser>, request: Request): ApiContext<TSchema, TEnv, TMessaging, TSessionUser>;
47
+ //# sourceMappingURL=context.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"context.d.ts","sourceRoot":"","sources":["../../src/api/context.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,40 @@
1
+ import { resolveSession } from '../access.js';
2
+ import { consoleLogger } from '../logging.js';
3
+ export function createApiContext(deps, request) {
4
+ // Reserve the body stream before a transport codec consumes `request`.
5
+ const rawBodyRequest = request.clone();
6
+ let rawBodyPromise;
7
+ let sessionPromise;
8
+ let settledSession;
9
+ const getSession = () => {
10
+ if (!sessionPromise) {
11
+ sessionPromise = resolveSession(deps.authResolver, request.headers).then((session) => {
12
+ settledSession = session;
13
+ return session;
14
+ });
15
+ }
16
+ return sessionPromise;
17
+ };
18
+ const peekSession = () => settledSession;
19
+ const getRawBody = () => {
20
+ if (!rawBodyPromise)
21
+ rawBodyPromise = rawBodyRequest.text();
22
+ return rawBodyPromise;
23
+ };
24
+ return {
25
+ db: deps.db,
26
+ env: deps.env,
27
+ storage: deps.storage,
28
+ messaging: deps.messaging,
29
+ jobs: deps.jobs,
30
+ realtime: deps.realtime,
31
+ auth: deps.auth,
32
+ logger: deps.logger ?? consoleLogger,
33
+ request,
34
+ resHeaders: new Headers(),
35
+ getRawBody,
36
+ getSession,
37
+ peekSession,
38
+ };
39
+ }
40
+ //# sourceMappingURL=context.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"context.js","sourceRoot":"","sources":["../../src/api/context.ts"],"names":[],"mappings":"AAQA,OAAO,EAAE,cAAc,EAAE,MAAM,WAAW,CAAA;AAC1C,OAAO,EAAE,aAAa,EAAE,MAAM,YAAY,CAAA;AAsD1C,MAAM,UAAU,gBAAgB,CAM9B,IAA6D,EAC7D,OAAgB;IAEhB,uEAAuE;IACvE,MAAM,cAAc,GAAG,OAAO,CAAC,KAAK,EAAE,CAAA;IACtC,IAAI,cAA2C,CAAA;IAC/C,IAAI,cAKS,CAAA;IAEb,IAAI,cAKS,CAAA;IAEb,MAAM,UAAU,GAAG,GAAG,EAAE;QACtB,IAAI,CAAC,cAAc,EAAE,CAAC;YACpB,cAAc,GAAG,cAAc,CAAC,IAAI,CAAC,YAAY,EAAE,OAAO,CAAC,OAAO,CAAC,CAAC,IAAI,CACtE,CAAC,OAAO,EAAE,EAAE;gBACV,cAAc,GAAG,OAAO,CAAA;gBACxB,OAAO,OAAO,CAAA;YAChB,CAAC,CACF,CAAA;QACH,CAAC;QACD,OAAO,cAAc,CAAA;IACvB,CAAC,CAAA;IAED,MAAM,WAAW,GAAG,GAAG,EAAE,CAAC,cAAc,CAAA;IAExC,MAAM,UAAU,GAAG,GAAG,EAAE;QACtB,IAAI,CAAC,cAAc;YAAE,cAAc,GAAG,cAAc,CAAC,IAAI,EAAE,CAAA;QAC3D,OAAO,cAAc,CAAA;IACvB,CAAC,CAAA;IAED,OAAO;QACL,EAAE,EAAE,IAAI,CAAC,EAAE;QACX,GAAG,EAAE,IAAI,CAAC,GAAG;QACb,OAAO,EAAE,IAAI,CAAC,OAAO;QACrB,SAAS,EAAE,IAAI,CAAC,SAAS;QACzB,IAAI,EAAE,IAAI,CAAC,IAAI;QACf,QAAQ,EAAE,IAAI,CAAC,QAAQ;QACvB,IAAI,EAAE,IAAI,CAAC,IAAI;QACf,MAAM,EAAE,IAAI,CAAC,MAAM,IAAI,aAAa;QACpC,OAAO;QACP,UAAU,EAAE,IAAI,OAAO,EAAE;QACzB,UAAU;QACV,UAAU;QACV,WAAW;KACZ,CAAA;AACH,CAAC","sourcesContent":["import type { AccessUser, AuthSessionResolver } from '../access'\nimport type { DbFor } from '../db'\nimport type { JobsRuntimeFacade } from '../jobs/define'\nimport type { WorkerstackLogger } from '../logging'\nimport type { MessagingConfig, MessagingFacadesFor } from '../messaging'\nimport type { RealtimeFacade } from '../realtime/facade'\nimport type { AuthInstance, StorageFacade } from '../runtime'\n\nimport { resolveSession } from '../access'\nimport { consoleLogger } from '../logging'\n\nexport interface ApiContextDeps<\n TSchema extends Record<string, unknown> = Record<string, unknown>,\n TEnv = Record<string, unknown>,\n TMessaging extends MessagingConfig | undefined = MessagingConfig,\n TSessionUser extends Record<string, unknown> = Record<never, never>,\n> {\n db: DbFor<TSchema>\n env: TEnv\n storage: StorageFacade\n messaging: MessagingFacadesFor<TMessaging>\n jobs: JobsRuntimeFacade\n realtime: RealtimeFacade<TSchema>\n auth: AuthInstance\n authResolver?: AuthSessionResolver<TSessionUser>\n logger?: WorkerstackLogger\n}\n\nexport interface ApiContext<\n TSchema extends Record<string, unknown> = Record<string, unknown>,\n TEnv = Record<string, unknown>,\n TMessaging extends MessagingConfig | undefined = MessagingConfig,\n TSessionUser extends Record<string, unknown> = Record<never, never>,\n> {\n db: DbFor<TSchema>\n env: TEnv\n storage: StorageFacade\n messaging: MessagingFacadesFor<TMessaging>\n jobs: JobsRuntimeFacade\n realtime: RealtimeFacade<TSchema>\n auth: AuthInstance\n logger: WorkerstackLogger\n request: Request\n resHeaders: Headers\n getRawBody: () => Promise<string>\n getSession: () => Promise<{\n user: AccessUser<TSessionUser> | null\n activeOrganizationId: string | null\n }>\n /**\n * The session that some earlier code already resolved, or `undefined`.\n * Never starts a resolution, so a global middleware can log the caller\n * without removing the lazy session behavior that signed webhooks rely on.\n * Use it for observability only. Never use it for authorization.\n */\n peekSession: () =>\n | {\n user: AccessUser<TSessionUser> | null\n activeOrganizationId: string | null\n }\n | undefined\n}\n\nexport function createApiContext<\n TSchema extends Record<string, unknown> = Record<string, unknown>,\n TEnv = Record<string, unknown>,\n TMessaging extends MessagingConfig | undefined = MessagingConfig,\n TSessionUser extends Record<string, unknown> = Record<never, never>,\n>(\n deps: ApiContextDeps<TSchema, TEnv, TMessaging, TSessionUser>,\n request: Request,\n): ApiContext<TSchema, TEnv, TMessaging, TSessionUser> {\n // Reserve the body stream before a transport codec consumes `request`.\n const rawBodyRequest = request.clone()\n let rawBodyPromise: Promise<string> | undefined\n let sessionPromise:\n | Promise<{\n user: AccessUser<TSessionUser> | null\n activeOrganizationId: string | null\n }>\n | undefined\n\n let settledSession:\n | {\n user: AccessUser<TSessionUser> | null\n activeOrganizationId: string | null\n }\n | undefined\n\n const getSession = () => {\n if (!sessionPromise) {\n sessionPromise = resolveSession(deps.authResolver, request.headers).then(\n (session) => {\n settledSession = session\n return session\n },\n )\n }\n return sessionPromise\n }\n\n const peekSession = () => settledSession\n\n const getRawBody = () => {\n if (!rawBodyPromise) rawBodyPromise = rawBodyRequest.text()\n return rawBodyPromise\n }\n\n return {\n db: deps.db,\n env: deps.env,\n storage: deps.storage,\n messaging: deps.messaging,\n jobs: deps.jobs,\n realtime: deps.realtime,\n auth: deps.auth,\n logger: deps.logger ?? consoleLogger,\n request,\n resHeaders: new Headers(),\n getRawBody,\n getSession,\n peekSession,\n }\n}\n"]}
@@ -0,0 +1,476 @@
1
+ import { type Table } from 'drizzle-orm';
2
+ import '@orpc/openapi/extensions/route';
3
+ import * as v from 'valibot';
4
+ import type { AnyDb } from '../dialect.js';
5
+ import type { IdempotencyConfig } from '../idempotency.js';
6
+ import type { RealtimeFacade } from '../realtime/facade.js';
7
+ import type { RealtimePublisher } from '../realtime/publisher.js';
8
+ import type { CrudApiRouterFor } from './types.js';
9
+ import { type ResolvedAccess, type ResolvedTableAccess, type TableAccessInput } from '../access.js';
10
+ import { type CrudOperations } from '../crud-operations.js';
11
+ import { createApiBuilder } from './builder.js';
12
+ export type CrudApiRouterOptions<TSchema extends Record<string, unknown> = Record<string, unknown>> = {
13
+ access: ResolvedAccess;
14
+ idempotency?: boolean | IdempotencyConfig;
15
+ realtime?: RealtimeFacade<TSchema>;
16
+ /**
17
+ * The raw realtime publisher, present when realtime is enabled. The CRUD
18
+ * router subscribes on behalf of live views (`GET /{table}:live`);
19
+ * publishing stays behind the facade.
20
+ */
21
+ livePublisher?: RealtimePublisher;
22
+ };
23
+ /** A filter accepts one value (`=`), a list (`IN`), or null (`IS NULL`). */
24
+ export type ListFilterValue<T> = T | readonly T[] | null | 'null';
25
+ export type ListFilters<TTable extends Table, TFilterable extends string> = {
26
+ [K in Extract<keyof TTable['$inferSelect'], TFilterable>]?: ListFilterValue<TTable['$inferSelect'][K]>;
27
+ };
28
+ /**
29
+ * The `list` input as callers see it. Filter columns and sortable columns come
30
+ * from the table's `access` entry, so `filters` autocompletes to real columns
31
+ * and rejects wrong value types at compile time.
32
+ */
33
+ export type ListInputFor<TTable extends Table, TFilterable extends string, TSortable extends string> = {
34
+ limit?: number;
35
+ offset?: number;
36
+ cursor?: string;
37
+ sort?: TSortable;
38
+ order?: 'asc' | 'desc';
39
+ q?: string;
40
+ count?: boolean;
41
+ filters?: ListFilters<TTable, TFilterable>;
42
+ } | undefined;
43
+ /**
44
+ * The live-view input as callers see it: the list contract narrowed to what a
45
+ * stream can honor — no text search, no pagination.
46
+ */
47
+ export type LiveInputFor<TTable extends Table, TFilterable extends string, TSortable extends string> = {
48
+ limit?: number;
49
+ sort?: TSortable;
50
+ order?: 'asc' | 'desc';
51
+ filters?: ListFilters<TTable, TFilterable>;
52
+ } | undefined;
53
+ export type BuildTableCrudProceduresArgs<TSchema extends Record<string, unknown>, TTable extends Table> = {
54
+ table: TTable;
55
+ operations: CrudOperations;
56
+ builder: ReturnType<typeof createApiBuilder<TSchema>>;
57
+ access: ResolvedTableAccess;
58
+ /** The schema key events are published under. */
59
+ schemaKey: string;
60
+ /** Present when realtime is enabled; without it no live procedure is built. */
61
+ livePublisher?: RealtimePublisher;
62
+ };
63
+ export declare function buildTableCrudProcedures<TSchema extends Record<string, unknown>, TTable extends Table, TFilterable extends string = string, TSortable extends string = string>(args: BuildTableCrudProceduresArgs<TSchema, TTable>): {
64
+ list: import("@orpc/server").DecoratedProcedure<import("./context.js").ApiContext<TSchema, Record<string, unknown>, import("..").MessagingConfig, Record<never, never>> & object, object, v.GenericSchema<ListInputFor<TTable, TFilterable, TSortable>, ListInputFor<TTable, TFilterable, TSortable>>, v.StrictObjectSchema<{
65
+ readonly items: v.ArraySchema<v.GenericSchema<TTable["$inferSelect"], TTable["$inferSelect"]>, undefined>;
66
+ readonly nextCursor: v.OptionalSchema<v.StringSchema<undefined>, undefined>;
67
+ readonly hasMore: v.BooleanSchema<undefined>;
68
+ readonly total: v.OptionalSchema<v.NumberSchema<undefined>, undefined>;
69
+ readonly limit: v.OptionalSchema<v.NumberSchema<undefined>, undefined>;
70
+ readonly offset: v.OptionalSchema<v.NumberSchema<undefined>, undefined>;
71
+ readonly cursor: v.OptionalSchema<v.StringSchema<undefined>, undefined>;
72
+ readonly q: v.OptionalSchema<v.StringSchema<undefined>, undefined>;
73
+ readonly sort: v.OptionalSchema<v.StringSchema<undefined>, undefined>;
74
+ readonly order: v.OptionalSchema<v.StringSchema<undefined>, undefined>;
75
+ }, undefined>, {
76
+ readonly BAD_REQUEST: {
77
+ readonly data: v.OptionalSchema<v.StrictObjectSchema<{
78
+ readonly code: v.OptionalSchema<v.LiteralSchema<"BAD_REQUEST", undefined>, "BAD_REQUEST">;
79
+ readonly details: v.OptionalSchema<v.UnknownSchema, undefined>;
80
+ }, undefined>, {
81
+ readonly code: "BAD_REQUEST";
82
+ }>;
83
+ };
84
+ readonly UNAUTHORIZED: {
85
+ readonly data: v.OptionalSchema<v.StrictObjectSchema<{
86
+ readonly code: v.OptionalSchema<v.LiteralSchema<"UNAUTHORIZED", undefined>, "UNAUTHORIZED">;
87
+ readonly details: v.OptionalSchema<v.UnknownSchema, undefined>;
88
+ }, undefined>, {
89
+ readonly code: "UNAUTHORIZED";
90
+ }>;
91
+ };
92
+ readonly FORBIDDEN: {
93
+ readonly data: v.OptionalSchema<v.StrictObjectSchema<{
94
+ readonly code: v.OptionalSchema<v.LiteralSchema<"FORBIDDEN", undefined>, "FORBIDDEN">;
95
+ readonly details: v.OptionalSchema<v.UnknownSchema, undefined>;
96
+ }, undefined>, {
97
+ readonly code: "FORBIDDEN";
98
+ }>;
99
+ };
100
+ readonly NOT_FOUND: {
101
+ readonly data: v.OptionalSchema<v.StrictObjectSchema<{
102
+ readonly code: v.OptionalSchema<v.LiteralSchema<"NOT_FOUND", undefined>, "NOT_FOUND">;
103
+ readonly details: v.OptionalSchema<v.UnknownSchema, undefined>;
104
+ }, undefined>, {
105
+ readonly code: "NOT_FOUND";
106
+ }>;
107
+ };
108
+ readonly CONFLICT: {
109
+ readonly data: v.OptionalSchema<v.StrictObjectSchema<{
110
+ readonly code: v.OptionalSchema<v.LiteralSchema<"CONFLICT", undefined>, "CONFLICT">;
111
+ readonly details: v.OptionalSchema<v.UnknownSchema, undefined>;
112
+ }, undefined>, {
113
+ readonly code: "CONFLICT";
114
+ }>;
115
+ };
116
+ readonly PAYLOAD_TOO_LARGE: {
117
+ readonly data: v.OptionalSchema<v.StrictObjectSchema<{
118
+ readonly code: v.OptionalSchema<v.LiteralSchema<"PAYLOAD_TOO_LARGE", undefined>, "PAYLOAD_TOO_LARGE">;
119
+ readonly details: v.OptionalSchema<v.UnknownSchema, undefined>;
120
+ }, undefined>, {
121
+ readonly code: "PAYLOAD_TOO_LARGE";
122
+ }>;
123
+ };
124
+ readonly TOO_MANY_REQUESTS: {
125
+ readonly data: v.OptionalSchema<v.StrictObjectSchema<{
126
+ readonly code: v.OptionalSchema<v.LiteralSchema<"TOO_MANY_REQUESTS", undefined>, "TOO_MANY_REQUESTS">;
127
+ readonly details: v.OptionalSchema<v.UnknownSchema, undefined>;
128
+ }, undefined>, {
129
+ readonly code: "TOO_MANY_REQUESTS";
130
+ }>;
131
+ };
132
+ }>;
133
+ get: import("@orpc/server").DecoratedProcedure<import("./context.js").ApiContext<TSchema, Record<string, unknown>, import("..").MessagingConfig, Record<never, never>> & object, object, v.StrictObjectSchema<{
134
+ readonly id: v.StringSchema<undefined>;
135
+ }, undefined>, v.GenericSchema<TTable["$inferSelect"], TTable["$inferSelect"]>, {
136
+ readonly BAD_REQUEST: {
137
+ readonly data: v.OptionalSchema<v.StrictObjectSchema<{
138
+ readonly code: v.OptionalSchema<v.LiteralSchema<"BAD_REQUEST", undefined>, "BAD_REQUEST">;
139
+ readonly details: v.OptionalSchema<v.UnknownSchema, undefined>;
140
+ }, undefined>, {
141
+ readonly code: "BAD_REQUEST";
142
+ }>;
143
+ };
144
+ readonly UNAUTHORIZED: {
145
+ readonly data: v.OptionalSchema<v.StrictObjectSchema<{
146
+ readonly code: v.OptionalSchema<v.LiteralSchema<"UNAUTHORIZED", undefined>, "UNAUTHORIZED">;
147
+ readonly details: v.OptionalSchema<v.UnknownSchema, undefined>;
148
+ }, undefined>, {
149
+ readonly code: "UNAUTHORIZED";
150
+ }>;
151
+ };
152
+ readonly FORBIDDEN: {
153
+ readonly data: v.OptionalSchema<v.StrictObjectSchema<{
154
+ readonly code: v.OptionalSchema<v.LiteralSchema<"FORBIDDEN", undefined>, "FORBIDDEN">;
155
+ readonly details: v.OptionalSchema<v.UnknownSchema, undefined>;
156
+ }, undefined>, {
157
+ readonly code: "FORBIDDEN";
158
+ }>;
159
+ };
160
+ readonly NOT_FOUND: {
161
+ readonly data: v.OptionalSchema<v.StrictObjectSchema<{
162
+ readonly code: v.OptionalSchema<v.LiteralSchema<"NOT_FOUND", undefined>, "NOT_FOUND">;
163
+ readonly details: v.OptionalSchema<v.UnknownSchema, undefined>;
164
+ }, undefined>, {
165
+ readonly code: "NOT_FOUND";
166
+ }>;
167
+ };
168
+ readonly CONFLICT: {
169
+ readonly data: v.OptionalSchema<v.StrictObjectSchema<{
170
+ readonly code: v.OptionalSchema<v.LiteralSchema<"CONFLICT", undefined>, "CONFLICT">;
171
+ readonly details: v.OptionalSchema<v.UnknownSchema, undefined>;
172
+ }, undefined>, {
173
+ readonly code: "CONFLICT";
174
+ }>;
175
+ };
176
+ readonly PAYLOAD_TOO_LARGE: {
177
+ readonly data: v.OptionalSchema<v.StrictObjectSchema<{
178
+ readonly code: v.OptionalSchema<v.LiteralSchema<"PAYLOAD_TOO_LARGE", undefined>, "PAYLOAD_TOO_LARGE">;
179
+ readonly details: v.OptionalSchema<v.UnknownSchema, undefined>;
180
+ }, undefined>, {
181
+ readonly code: "PAYLOAD_TOO_LARGE";
182
+ }>;
183
+ };
184
+ readonly TOO_MANY_REQUESTS: {
185
+ readonly data: v.OptionalSchema<v.StrictObjectSchema<{
186
+ readonly code: v.OptionalSchema<v.LiteralSchema<"TOO_MANY_REQUESTS", undefined>, "TOO_MANY_REQUESTS">;
187
+ readonly details: v.OptionalSchema<v.UnknownSchema, undefined>;
188
+ }, undefined>, {
189
+ readonly code: "TOO_MANY_REQUESTS";
190
+ }>;
191
+ };
192
+ }>;
193
+ create: import("@orpc/server").DecoratedProcedure<import("./context.js").ApiContext<TSchema, Record<string, unknown>, import("..").MessagingConfig, Record<never, never>> & object, object, v.GenericSchema<Partial<TTable["$inferInsert"]>, Partial<TTable["$inferInsert"]>>, v.GenericSchema<TTable["$inferSelect"], TTable["$inferSelect"]>, {
194
+ readonly BAD_REQUEST: {
195
+ readonly data: v.OptionalSchema<v.StrictObjectSchema<{
196
+ readonly code: v.OptionalSchema<v.LiteralSchema<"BAD_REQUEST", undefined>, "BAD_REQUEST">;
197
+ readonly details: v.OptionalSchema<v.UnknownSchema, undefined>;
198
+ }, undefined>, {
199
+ readonly code: "BAD_REQUEST";
200
+ }>;
201
+ };
202
+ readonly UNAUTHORIZED: {
203
+ readonly data: v.OptionalSchema<v.StrictObjectSchema<{
204
+ readonly code: v.OptionalSchema<v.LiteralSchema<"UNAUTHORIZED", undefined>, "UNAUTHORIZED">;
205
+ readonly details: v.OptionalSchema<v.UnknownSchema, undefined>;
206
+ }, undefined>, {
207
+ readonly code: "UNAUTHORIZED";
208
+ }>;
209
+ };
210
+ readonly FORBIDDEN: {
211
+ readonly data: v.OptionalSchema<v.StrictObjectSchema<{
212
+ readonly code: v.OptionalSchema<v.LiteralSchema<"FORBIDDEN", undefined>, "FORBIDDEN">;
213
+ readonly details: v.OptionalSchema<v.UnknownSchema, undefined>;
214
+ }, undefined>, {
215
+ readonly code: "FORBIDDEN";
216
+ }>;
217
+ };
218
+ readonly NOT_FOUND: {
219
+ readonly data: v.OptionalSchema<v.StrictObjectSchema<{
220
+ readonly code: v.OptionalSchema<v.LiteralSchema<"NOT_FOUND", undefined>, "NOT_FOUND">;
221
+ readonly details: v.OptionalSchema<v.UnknownSchema, undefined>;
222
+ }, undefined>, {
223
+ readonly code: "NOT_FOUND";
224
+ }>;
225
+ };
226
+ readonly CONFLICT: {
227
+ readonly data: v.OptionalSchema<v.StrictObjectSchema<{
228
+ readonly code: v.OptionalSchema<v.LiteralSchema<"CONFLICT", undefined>, "CONFLICT">;
229
+ readonly details: v.OptionalSchema<v.UnknownSchema, undefined>;
230
+ }, undefined>, {
231
+ readonly code: "CONFLICT";
232
+ }>;
233
+ };
234
+ readonly PAYLOAD_TOO_LARGE: {
235
+ readonly data: v.OptionalSchema<v.StrictObjectSchema<{
236
+ readonly code: v.OptionalSchema<v.LiteralSchema<"PAYLOAD_TOO_LARGE", undefined>, "PAYLOAD_TOO_LARGE">;
237
+ readonly details: v.OptionalSchema<v.UnknownSchema, undefined>;
238
+ }, undefined>, {
239
+ readonly code: "PAYLOAD_TOO_LARGE";
240
+ }>;
241
+ };
242
+ readonly TOO_MANY_REQUESTS: {
243
+ readonly data: v.OptionalSchema<v.StrictObjectSchema<{
244
+ readonly code: v.OptionalSchema<v.LiteralSchema<"TOO_MANY_REQUESTS", undefined>, "TOO_MANY_REQUESTS">;
245
+ readonly details: v.OptionalSchema<v.UnknownSchema, undefined>;
246
+ }, undefined>, {
247
+ readonly code: "TOO_MANY_REQUESTS";
248
+ }>;
249
+ };
250
+ }>;
251
+ update: import("@orpc/server").DecoratedProcedure<import("./context.js").ApiContext<TSchema, Record<string, unknown>, import("..").MessagingConfig, Record<never, never>> & object, object, v.GenericSchema<{
252
+ id: string;
253
+ } & Partial<Omit<TTable["$inferInsert"], "id">>, {
254
+ id: string;
255
+ } & Partial<Omit<TTable["$inferInsert"], "id">>>, v.GenericSchema<TTable["$inferSelect"], TTable["$inferSelect"]>, {
256
+ readonly BAD_REQUEST: {
257
+ readonly data: v.OptionalSchema<v.StrictObjectSchema<{
258
+ readonly code: v.OptionalSchema<v.LiteralSchema<"BAD_REQUEST", undefined>, "BAD_REQUEST">;
259
+ readonly details: v.OptionalSchema<v.UnknownSchema, undefined>;
260
+ }, undefined>, {
261
+ readonly code: "BAD_REQUEST";
262
+ }>;
263
+ };
264
+ readonly UNAUTHORIZED: {
265
+ readonly data: v.OptionalSchema<v.StrictObjectSchema<{
266
+ readonly code: v.OptionalSchema<v.LiteralSchema<"UNAUTHORIZED", undefined>, "UNAUTHORIZED">;
267
+ readonly details: v.OptionalSchema<v.UnknownSchema, undefined>;
268
+ }, undefined>, {
269
+ readonly code: "UNAUTHORIZED";
270
+ }>;
271
+ };
272
+ readonly FORBIDDEN: {
273
+ readonly data: v.OptionalSchema<v.StrictObjectSchema<{
274
+ readonly code: v.OptionalSchema<v.LiteralSchema<"FORBIDDEN", undefined>, "FORBIDDEN">;
275
+ readonly details: v.OptionalSchema<v.UnknownSchema, undefined>;
276
+ }, undefined>, {
277
+ readonly code: "FORBIDDEN";
278
+ }>;
279
+ };
280
+ readonly NOT_FOUND: {
281
+ readonly data: v.OptionalSchema<v.StrictObjectSchema<{
282
+ readonly code: v.OptionalSchema<v.LiteralSchema<"NOT_FOUND", undefined>, "NOT_FOUND">;
283
+ readonly details: v.OptionalSchema<v.UnknownSchema, undefined>;
284
+ }, undefined>, {
285
+ readonly code: "NOT_FOUND";
286
+ }>;
287
+ };
288
+ readonly CONFLICT: {
289
+ readonly data: v.OptionalSchema<v.StrictObjectSchema<{
290
+ readonly code: v.OptionalSchema<v.LiteralSchema<"CONFLICT", undefined>, "CONFLICT">;
291
+ readonly details: v.OptionalSchema<v.UnknownSchema, undefined>;
292
+ }, undefined>, {
293
+ readonly code: "CONFLICT";
294
+ }>;
295
+ };
296
+ readonly PAYLOAD_TOO_LARGE: {
297
+ readonly data: v.OptionalSchema<v.StrictObjectSchema<{
298
+ readonly code: v.OptionalSchema<v.LiteralSchema<"PAYLOAD_TOO_LARGE", undefined>, "PAYLOAD_TOO_LARGE">;
299
+ readonly details: v.OptionalSchema<v.UnknownSchema, undefined>;
300
+ }, undefined>, {
301
+ readonly code: "PAYLOAD_TOO_LARGE";
302
+ }>;
303
+ };
304
+ readonly TOO_MANY_REQUESTS: {
305
+ readonly data: v.OptionalSchema<v.StrictObjectSchema<{
306
+ readonly code: v.OptionalSchema<v.LiteralSchema<"TOO_MANY_REQUESTS", undefined>, "TOO_MANY_REQUESTS">;
307
+ readonly details: v.OptionalSchema<v.UnknownSchema, undefined>;
308
+ }, undefined>, {
309
+ readonly code: "TOO_MANY_REQUESTS";
310
+ }>;
311
+ };
312
+ }>;
313
+ delete: import("@orpc/server").DecoratedProcedure<import("./context.js").ApiContext<TSchema, Record<string, unknown>, import("..").MessagingConfig, Record<never, never>> & object, object, v.StrictObjectSchema<{
314
+ readonly id: v.StringSchema<undefined>;
315
+ }, undefined>, v.UndefinedSchema<undefined>, {
316
+ readonly BAD_REQUEST: {
317
+ readonly data: v.OptionalSchema<v.StrictObjectSchema<{
318
+ readonly code: v.OptionalSchema<v.LiteralSchema<"BAD_REQUEST", undefined>, "BAD_REQUEST">;
319
+ readonly details: v.OptionalSchema<v.UnknownSchema, undefined>;
320
+ }, undefined>, {
321
+ readonly code: "BAD_REQUEST";
322
+ }>;
323
+ };
324
+ readonly UNAUTHORIZED: {
325
+ readonly data: v.OptionalSchema<v.StrictObjectSchema<{
326
+ readonly code: v.OptionalSchema<v.LiteralSchema<"UNAUTHORIZED", undefined>, "UNAUTHORIZED">;
327
+ readonly details: v.OptionalSchema<v.UnknownSchema, undefined>;
328
+ }, undefined>, {
329
+ readonly code: "UNAUTHORIZED";
330
+ }>;
331
+ };
332
+ readonly FORBIDDEN: {
333
+ readonly data: v.OptionalSchema<v.StrictObjectSchema<{
334
+ readonly code: v.OptionalSchema<v.LiteralSchema<"FORBIDDEN", undefined>, "FORBIDDEN">;
335
+ readonly details: v.OptionalSchema<v.UnknownSchema, undefined>;
336
+ }, undefined>, {
337
+ readonly code: "FORBIDDEN";
338
+ }>;
339
+ };
340
+ readonly NOT_FOUND: {
341
+ readonly data: v.OptionalSchema<v.StrictObjectSchema<{
342
+ readonly code: v.OptionalSchema<v.LiteralSchema<"NOT_FOUND", undefined>, "NOT_FOUND">;
343
+ readonly details: v.OptionalSchema<v.UnknownSchema, undefined>;
344
+ }, undefined>, {
345
+ readonly code: "NOT_FOUND";
346
+ }>;
347
+ };
348
+ readonly CONFLICT: {
349
+ readonly data: v.OptionalSchema<v.StrictObjectSchema<{
350
+ readonly code: v.OptionalSchema<v.LiteralSchema<"CONFLICT", undefined>, "CONFLICT">;
351
+ readonly details: v.OptionalSchema<v.UnknownSchema, undefined>;
352
+ }, undefined>, {
353
+ readonly code: "CONFLICT";
354
+ }>;
355
+ };
356
+ readonly PAYLOAD_TOO_LARGE: {
357
+ readonly data: v.OptionalSchema<v.StrictObjectSchema<{
358
+ readonly code: v.OptionalSchema<v.LiteralSchema<"PAYLOAD_TOO_LARGE", undefined>, "PAYLOAD_TOO_LARGE">;
359
+ readonly details: v.OptionalSchema<v.UnknownSchema, undefined>;
360
+ }, undefined>, {
361
+ readonly code: "PAYLOAD_TOO_LARGE";
362
+ }>;
363
+ };
364
+ readonly TOO_MANY_REQUESTS: {
365
+ readonly data: v.OptionalSchema<v.StrictObjectSchema<{
366
+ readonly code: v.OptionalSchema<v.LiteralSchema<"TOO_MANY_REQUESTS", undefined>, "TOO_MANY_REQUESTS">;
367
+ readonly details: v.OptionalSchema<v.UnknownSchema, undefined>;
368
+ }, undefined>, {
369
+ readonly code: "TOO_MANY_REQUESTS";
370
+ }>;
371
+ };
372
+ }>;
373
+ live: import("@orpc/server").DecoratedProcedure<import("./context.js").ApiContext<TSchema, Record<string, unknown>, import("..").MessagingConfig, Record<never, never>> & object, object, v.GenericSchema<LiveInputFor<TTable, TFilterable, TSortable>, LiveInputFor<TTable, TFilterable, TSortable>>, import("@orpc/contract").Schema<AsyncIteratorObject<{
374
+ type: "snapshot";
375
+ items: TTable["$inferSelect"][];
376
+ sort: string;
377
+ order: "asc" | "desc";
378
+ limit: number;
379
+ hasMore: boolean;
380
+ operationId?: string | undefined;
381
+ } | {
382
+ type: "upsert";
383
+ record: TTable["$inferSelect"];
384
+ afterId: string | null;
385
+ operationId?: string | undefined;
386
+ } | {
387
+ type: "remove";
388
+ id: string;
389
+ operationId?: string | undefined;
390
+ } | {
391
+ type: "heartbeat";
392
+ intervalMs: number;
393
+ }, unknown, void>, import("@orpc/client").AsyncIteratorClass<{
394
+ type: "snapshot";
395
+ items: TTable["$inferSelect"][];
396
+ sort: string;
397
+ order: "asc" | "desc";
398
+ limit: number;
399
+ hasMore: boolean;
400
+ operationId?: string | undefined;
401
+ } | {
402
+ type: "upsert";
403
+ record: TTable["$inferSelect"];
404
+ afterId: string | null;
405
+ operationId?: string | undefined;
406
+ } | {
407
+ type: "remove";
408
+ id: string;
409
+ operationId?: string | undefined;
410
+ } | {
411
+ type: "heartbeat";
412
+ intervalMs: number;
413
+ }, unknown, void>>, {
414
+ readonly BAD_REQUEST: {
415
+ readonly data: v.OptionalSchema<v.StrictObjectSchema<{
416
+ readonly code: v.OptionalSchema<v.LiteralSchema<"BAD_REQUEST", undefined>, "BAD_REQUEST">;
417
+ readonly details: v.OptionalSchema<v.UnknownSchema, undefined>;
418
+ }, undefined>, {
419
+ readonly code: "BAD_REQUEST";
420
+ }>;
421
+ };
422
+ readonly UNAUTHORIZED: {
423
+ readonly data: v.OptionalSchema<v.StrictObjectSchema<{
424
+ readonly code: v.OptionalSchema<v.LiteralSchema<"UNAUTHORIZED", undefined>, "UNAUTHORIZED">;
425
+ readonly details: v.OptionalSchema<v.UnknownSchema, undefined>;
426
+ }, undefined>, {
427
+ readonly code: "UNAUTHORIZED";
428
+ }>;
429
+ };
430
+ readonly FORBIDDEN: {
431
+ readonly data: v.OptionalSchema<v.StrictObjectSchema<{
432
+ readonly code: v.OptionalSchema<v.LiteralSchema<"FORBIDDEN", undefined>, "FORBIDDEN">;
433
+ readonly details: v.OptionalSchema<v.UnknownSchema, undefined>;
434
+ }, undefined>, {
435
+ readonly code: "FORBIDDEN";
436
+ }>;
437
+ };
438
+ readonly NOT_FOUND: {
439
+ readonly data: v.OptionalSchema<v.StrictObjectSchema<{
440
+ readonly code: v.OptionalSchema<v.LiteralSchema<"NOT_FOUND", undefined>, "NOT_FOUND">;
441
+ readonly details: v.OptionalSchema<v.UnknownSchema, undefined>;
442
+ }, undefined>, {
443
+ readonly code: "NOT_FOUND";
444
+ }>;
445
+ };
446
+ readonly CONFLICT: {
447
+ readonly data: v.OptionalSchema<v.StrictObjectSchema<{
448
+ readonly code: v.OptionalSchema<v.LiteralSchema<"CONFLICT", undefined>, "CONFLICT">;
449
+ readonly details: v.OptionalSchema<v.UnknownSchema, undefined>;
450
+ }, undefined>, {
451
+ readonly code: "CONFLICT";
452
+ }>;
453
+ };
454
+ readonly PAYLOAD_TOO_LARGE: {
455
+ readonly data: v.OptionalSchema<v.StrictObjectSchema<{
456
+ readonly code: v.OptionalSchema<v.LiteralSchema<"PAYLOAD_TOO_LARGE", undefined>, "PAYLOAD_TOO_LARGE">;
457
+ readonly details: v.OptionalSchema<v.UnknownSchema, undefined>;
458
+ }, undefined>, {
459
+ readonly code: "PAYLOAD_TOO_LARGE";
460
+ }>;
461
+ };
462
+ readonly TOO_MANY_REQUESTS: {
463
+ readonly data: v.OptionalSchema<v.StrictObjectSchema<{
464
+ readonly code: v.OptionalSchema<v.LiteralSchema<"TOO_MANY_REQUESTS", undefined>, "TOO_MANY_REQUESTS">;
465
+ readonly details: v.OptionalSchema<v.UnknownSchema, undefined>;
466
+ }, undefined>, {
467
+ readonly code: "TOO_MANY_REQUESTS";
468
+ }>;
469
+ };
470
+ }>;
471
+ };
472
+ export type TableCrudProcedures<TTable extends Table, TFilterable extends string = string, TSortable extends string = string, TLive extends boolean = false> = Omit<ReturnType<typeof buildTableCrudProcedures<Record<string, unknown>, TTable, TFilterable, TSortable>>, 'live'> & (TLive extends true ? {
473
+ live: ReturnType<typeof buildTableCrudProcedures<Record<string, unknown>, TTable, TFilterable, TSortable>>['live'];
474
+ } : {});
475
+ export declare function buildCrudApiRouter<TSchema extends Record<string, unknown>, TAccess extends Record<string, TableAccessInput> | undefined = undefined, TLive extends boolean = false>(schema: TSchema, db: AnyDb, options: CrudApiRouterOptions<TSchema>): CrudApiRouterFor<TSchema, TAccess, TLive>;
476
+ //# sourceMappingURL=crud-router.d.ts.map