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 @@
1
+ {"version":3,"file":"access.js","sourceRoot":"","sources":["../src/access.ts"],"names":[],"mappings":"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","sourcesContent":["import { getTableColumns, getTableName, isTable } from 'drizzle-orm'\n\nimport { INTERNAL_TABLE_NAMES } from './internal-tables'\n\nexport const AUTH_TABLE_NAMES = new Set([\n 'user',\n 'session',\n 'account',\n 'verification',\n])\n\nconst EXPOSEABLE_AUTH_TABLES = new Set(['user'])\n\nexport type AccessUserBase = {\n id: string\n email: string\n emailVerified?: boolean\n name?: string\n role?: string\n}\n\nexport type SessionUserSource = {\n id: string\n email: string\n emailVerified?: boolean\n name?: string\n role?: string\n} & Record<string, unknown>\n\nexport type SessionUserConfig<\n TExtra extends Record<string, unknown> = Record<never, never>,\n> = {\n mapUser: (user: SessionUserSource) => TExtra\n}\n\nexport type SessionUserExtraOf<TSession> =\n TSession extends SessionUserConfig<infer TExtra>\n ? TExtra\n : Record<never, never>\n\nexport type AccessUser<\n TExtra extends Record<string, unknown> = Record<never, never>,\n> = AccessUserBase & Omit<TExtra, keyof AccessUserBase>\n\nexport function defineSessionUser<const TExtra extends Record<string, unknown>>(\n config: SessionUserConfig<TExtra>,\n): SessionUserConfig<TExtra> {\n return config\n}\n\nexport type AccessContext = {\n user: AccessUser | null\n request: Request\n row?: Record<string, unknown>\n body?: Record<string, unknown>\n session?: { activeOrganizationId: string | null } | null\n}\n\nexport type OperationRule =\n | 'public'\n | 'authenticated'\n | 'owner'\n | 'deny'\n | ((ctx: AccessContext) => boolean | Promise<boolean>)\n\nexport type ScopeMap = Record<string, string | string[]>\nexport type ScopeResolver = (ctx: AccessContext) => ScopeMap\n\nexport type CrudOperation = 'list' | 'get' | 'create' | 'update' | 'delete'\n\nexport type SortOrder = 'asc' | 'desc'\n\nexport type DefaultSort = {\n column: string\n order: SortOrder\n}\n\nexport type TableAccessInput = {\n crud?: boolean\n /** Opt the BetterAuth `user` table into auto-CRUD (read profiles, owner-update image). */\n exposeAuthTable?: boolean\n ownerColumn?: string\n list?: OperationRule\n get?: OperationRule\n create?: OperationRule\n update?: OperationRule\n delete?: OperationRule\n /** Explicit write allowlist. Entries override matching system-readonly\n * defaults such as `updatedAt`; `id` remains immutable on update. */\n writableColumns?: string[]\n readonlyColumns?: string[]\n /** Columns matched by `?q=` on list — opt-in; omitted columns are never searched. */\n searchableColumns?: string[]\n /** Columns filterable via flat `?column=value` query params. */\n filterableColumns?: string[]\n /** Columns allowed in `?sort=`. Defaults to `['id']`. */\n sortableColumns?: string[]\n /** Default list ordering when `?sort` is omitted. Defaults to `{ column: 'id', order: 'desc' }`. */\n defaultSort?: DefaultSort\n scope?: {\n read?: ScopeResolver\n write?: ScopeResolver\n }\n}\n\nexport type ResolvedTableAccess = {\n tableKey: string\n tableName: string\n enabled: boolean\n ownerColumn?: string\n list: OperationRule\n get: OperationRule\n create: OperationRule\n update: OperationRule\n delete: OperationRule\n writableColumns?: string[]\n readonlyColumns: string[]\n searchableColumns?: string[]\n filterableColumns: string[]\n sortableColumns: string[]\n defaultSort: DefaultSort\n readScope?: ScopeResolver\n writeScope?: ScopeResolver\n}\n\nexport type ResolvedAccess = Map<string, ResolvedTableAccess>\n\n/**\n * Look up a table's resolved access by its physical table name.\n *\n * `ResolvedAccess` is keyed by schema export name, not table name, so every\n * consumer that starts from a physical name needs this scan. It lives here so\n * CRUD, realtime, and route validation cannot drift apart on which tables they\n * consider enabled.\n */\nexport function tableEntryForName(\n access: ResolvedAccess,\n tableName: string,\n): ResolvedTableAccess | undefined {\n for (const entry of access.values()) {\n if (entry.tableName === tableName) return entry\n }\n return undefined\n}\n\nconst DEFAULT_READONLY = [\n 'id',\n 'createdAt',\n 'updatedAt',\n 'created_at',\n 'updated_at',\n]\n\nfunction getSchemaTables<TSchema extends Record<string, unknown>>(\n schema: TSchema,\n) {\n const tables: {\n key: string\n table: Parameters<typeof getTableName>[0]\n name: string\n columns: string[]\n }[] = []\n for (const [key, value] of Object.entries(schema)) {\n if (!isTable(value)) continue\n const name = getTableName(value)\n const columns = Object.keys(getTableColumns(value))\n tables.push({ key, table: value, name, columns })\n }\n return tables\n}\n\nfunction resolveListAccess(\n input: TableAccessInput,\n columns: string[],\n): Pick<\n ResolvedTableAccess,\n 'filterableColumns' | 'sortableColumns' | 'defaultSort'\n> {\n const sortableColumns =\n input.sortableColumns ?? (columns.includes('id') ? ['id'] : [])\n const defaultSort: DefaultSort = input.defaultSort ?? {\n column: sortableColumns[0] ?? 'id',\n order: 'desc',\n }\n\n if (!columns.includes(defaultSort.column)) {\n throw new Error(\n `[workerstack] defaultSort.column \"${defaultSort.column}\" is not a column on this table`,\n )\n }\n if (!sortableColumns.includes(defaultSort.column)) {\n throw new Error(\n `[workerstack] defaultSort.column \"${defaultSort.column}\" must be listed in sortableColumns`,\n )\n }\n\n const filterableColumns = input.filterableColumns ?? []\n for (const col of filterableColumns) {\n if (!columns.includes(col)) {\n throw new Error(\n `[workerstack] filterableColumns references unknown column \"${col}\"`,\n )\n }\n }\n\n for (const col of sortableColumns) {\n if (!columns.includes(col)) {\n throw new Error(\n `[workerstack] sortableColumns references unknown column \"${col}\"`,\n )\n }\n }\n\n return { filterableColumns, sortableColumns, defaultSort }\n}\n\nfunction resolveDefaults(\n input: TableAccessInput,\n ownerColumn: string | undefined,\n columns: string[],\n): Omit<ResolvedTableAccess, 'tableKey' | 'tableName' | 'enabled'> {\n const listAccess = resolveListAccess(input, columns)\n const explicitlyWritable = new Set(input.writableColumns ?? [])\n return {\n ownerColumn,\n list: input.list ?? 'public',\n get: input.get ?? 'public',\n create: input.create ?? 'public',\n update: input.update ?? (ownerColumn ? 'owner' : 'deny'),\n delete: input.delete ?? (ownerColumn ? 'owner' : 'deny'),\n writableColumns: input.writableColumns,\n readonlyColumns: [\n ...DEFAULT_READONLY.filter(\n (column) => column === 'id' || !explicitlyWritable.has(column),\n ),\n ...(input.readonlyColumns ?? []),\n ...(ownerColumn ? [ownerColumn] : []),\n ],\n searchableColumns: input.searchableColumns,\n readScope: input.scope?.read,\n writeScope: input.scope?.write,\n ...listAccess,\n }\n}\n\nfunction detectOwnerColumn(\n columns: string[],\n input?: TableAccessInput,\n): string | undefined {\n if (input?.ownerColumn) return input.ownerColumn\n if (columns.includes('userId')) return 'userId'\n return undefined\n}\n\nexport function validateAndResolveAccess<\n TSchema extends Record<string, unknown>,\n>(\n schema: TSchema,\n accessInput?: Record<string, TableAccessInput>,\n): ResolvedAccess {\n const tables = getSchemaTables(schema)\n const tableByKey = new Map(tables.map((t) => [t.key, t]))\n const resolved: ResolvedAccess = new Map()\n\n if (accessInput) {\n for (const key of Object.keys(accessInput)) {\n if (!tableByKey.has(key)) {\n throw new Error(\n `[workerstack] access.${key} does not match any table in schema`,\n )\n }\n const tableName = tableByKey.get(key)!.name\n const input = accessInput[key]\n if (AUTH_TABLE_NAMES.has(tableName)) {\n if (input?.crud === false) continue\n if (!EXPOSEABLE_AUTH_TABLES.has(tableName) || !input?.exposeAuthTable) {\n throw new Error(\n `[workerstack] access.${key} cannot target auth table \"${tableName}\" — use { crud: false } to silence, or exposeAuthTable on user`,\n )\n }\n }\n }\n }\n\n for (const { key, name, columns } of tables) {\n const input = accessInput?.[key]\n if (input?.crud === false) continue\n if (INTERNAL_TABLE_NAMES.has(name)) continue\n\n if (AUTH_TABLE_NAMES.has(name)) {\n if (!input?.exposeAuthTable || !EXPOSEABLE_AUTH_TABLES.has(name)) continue\n\n const ownerColumn = input.ownerColumn ?? 'id'\n if (!columns.includes(ownerColumn)) {\n throw new Error(\n `[workerstack] access.${key}.ownerColumn \"${ownerColumn}\" is not a column on table \"${name}\"`,\n )\n }\n\n const defaults = resolveDefaults(\n {\n ...input,\n create: input.create ?? 'deny',\n delete: input.delete ?? 'deny',\n },\n ownerColumn,\n columns,\n )\n\n const existingReadonly = defaults.readonlyColumns.filter((col) =>\n columns.includes(col),\n )\n const resolvedReadonly = [...new Set(existingReadonly)]\n\n for (const col of [\n ...(defaults.writableColumns ?? []),\n ...(defaults.searchableColumns ?? []),\n ...defaults.filterableColumns,\n ...defaults.sortableColumns,\n ...resolvedReadonly,\n ]) {\n if (!columns.includes(col)) {\n throw new Error(\n `[workerstack] access.${key} references unknown column \"${col}\" on table \"${name}\"`,\n )\n }\n }\n\n resolved.set(key, {\n tableKey: key,\n tableName: name,\n enabled: true,\n ...defaults,\n readonlyColumns: resolvedReadonly,\n })\n continue\n }\n\n const ownerColumn = detectOwnerColumn(columns, input)\n const hasExplicitRules = input !== undefined\n const hasConventionOwner =\n ownerColumn !== undefined &&\n input?.ownerColumn === undefined &&\n columns.includes('userId')\n\n if (!hasExplicitRules && !hasConventionOwner) continue\n if (\n !ownerColumn &&\n input?.crud !== true &&\n !input?.scope?.read &&\n !input?.scope?.write\n )\n continue\n\n if (input?.ownerColumn && !columns.includes(input.ownerColumn)) {\n throw new Error(\n `[workerstack] access.${key}.ownerColumn \"${input.ownerColumn}\" is not a column on table \"${name}\"`,\n )\n }\n\n const defaults = resolveDefaults(input ?? {}, ownerColumn, columns)\n const existingReadonly = defaults.readonlyColumns.filter((col) =>\n columns.includes(col),\n )\n const resolvedReadonly = [...new Set(existingReadonly)]\n\n for (const col of [\n ...(defaults.writableColumns ?? []),\n ...(defaults.searchableColumns ?? []),\n ...defaults.filterableColumns,\n ...defaults.sortableColumns,\n ...resolvedReadonly,\n ]) {\n if (!columns.includes(col)) {\n throw new Error(\n `[workerstack] access.${key} references unknown column \"${col}\" on table \"${name}\"`,\n )\n }\n }\n\n const needsOwner = [defaults.update, defaults.delete].some(\n (r) => r === 'owner',\n )\n if (needsOwner && !ownerColumn) {\n throw new Error(\n `[workerstack] access.${key} requires ownerColumn for owner-based update/delete rules`,\n )\n }\n\n resolved.set(key, {\n tableKey: key,\n tableName: name,\n enabled: true,\n ...defaults,\n readonlyColumns: resolvedReadonly,\n })\n }\n\n return resolved\n}\n\nexport function defineAccess<\n TSchema extends Record<string, unknown>,\n const TRules extends Record<string, TableAccessInput>,\n>(schema: TSchema, rules: TRules): TRules {\n validateAndResolveAccess(schema, rules)\n return rules\n}\n\nexport function rowMatchesScope(\n row: Record<string, unknown>,\n scope: ScopeMap,\n): boolean {\n for (const [col, expected] of Object.entries(scope)) {\n const actual = row[col]\n if (actual == null) return false\n if (Array.isArray(expected)) {\n if (!expected.map(String).includes(String(actual))) return false\n } else if (String(actual) !== String(expected)) {\n return false\n }\n }\n return true\n}\n\nexport function stampScope(\n values: Record<string, unknown>,\n scope: ScopeMap,\n): Record<string, unknown> {\n const out = { ...values }\n for (const [col, expected] of Object.entries(scope)) {\n if (!Array.isArray(expected)) out[col] = expected\n }\n return out\n}\n\nexport function checkAccessSync(\n rule: Exclude<\n OperationRule,\n (ctx: AccessContext) => boolean | Promise<boolean>\n >,\n ctx: AccessContext,\n ownerColumn?: string,\n): { allowed: boolean } {\n if (rule === 'deny') return { allowed: false }\n if (rule === 'public') return { allowed: true }\n if (!ctx.user) return { allowed: false }\n if (rule === 'authenticated') return { allowed: true }\n if (rule === 'owner') {\n if (!ownerColumn) return { allowed: false }\n const owner = ctx.row?.[ownerColumn]\n return { allowed: owner != null && String(owner) === ctx.user.id }\n }\n return { allowed: false }\n}\n\nexport async function checkAccess(\n rule: OperationRule,\n ctx: AccessContext,\n ownerColumn?: string,\n): Promise<{ allowed: boolean; status: 401 | 403 }> {\n if (rule === 'deny') return { allowed: false, status: 403 }\n\n if (typeof rule === 'function') {\n return (await rule(ctx))\n ? { allowed: true, status: 403 }\n : { allowed: false, status: 403 }\n }\n\n if (rule === 'public') return { allowed: true, status: 403 }\n\n if (!ctx.user) return { allowed: false, status: 401 }\n\n if (rule === 'authenticated') return { allowed: true, status: 403 }\n\n if (rule === 'owner') {\n if (!ownerColumn) return { allowed: false, status: 403 }\n const rowOwner = ctx.row?.[ownerColumn] ?? ctx.body?.[ownerColumn]\n if (rowOwner == null) return { allowed: false, status: 403 }\n if (String(rowOwner) !== ctx.user.id) return { allowed: false, status: 403 }\n return { allowed: true, status: 403 }\n }\n\n return { allowed: false, status: 403 }\n}\n\nexport function sanitizeWriteBody(\n body: Record<string, unknown>,\n access: ResolvedTableAccess,\n mode: 'create' | 'update',\n userId: string | null,\n): Record<string, unknown> {\n const out: Record<string, unknown> = {}\n const readonly = new Set(access.readonlyColumns)\n\n for (const [key, value] of Object.entries(body)) {\n // On create, allow client-supplied `id` even if it appears in readonlyColumns,\n // but still respect an explicit writableColumns allowlist if provided.\n if (mode === 'create' && key === 'id') {\n if (access.writableColumns && !access.writableColumns.includes(key))\n continue\n out[key] = value\n continue\n }\n if (readonly.has(key)) continue\n if (access.writableColumns && !access.writableColumns.includes(key))\n continue\n out[key] = value\n }\n\n if (mode === 'create' && access.ownerColumn) {\n out[access.ownerColumn] = userId ?? null\n }\n\n if (mode === 'update' && access.ownerColumn) {\n delete out[access.ownerColumn]\n }\n\n return out\n}\n\nexport type AuthSessionResolver<\n TExtra extends Record<string, unknown> = Record<never, never>,\n> = {\n api: {\n getSession: (opts: { headers: Headers }) => Promise<{\n user:\n | ({\n id: string\n email: string\n emailVerified?: boolean\n name?: string\n role?: string\n } & TExtra)\n | null\n session?: { activeOrganizationId?: string | null } | null\n } | null>\n }\n}\n\nexport async function resolveAccessUser<\n TExtra extends Record<string, unknown> = Record<never, never>,\n>(\n auth: AuthSessionResolver<TExtra> | undefined,\n headers: Headers,\n): Promise<AccessUser<TExtra> | null> {\n if (!auth) return null\n const session = await auth.api.getSession({ headers })\n if (!session?.user) return null\n const user = {\n ...session.user,\n id: session.user.id,\n email: session.user.email,\n emailVerified: session.user.emailVerified === true,\n name: session.user.name,\n role: session.user.role,\n }\n return user as AccessUser<TExtra>\n}\n\nexport async function resolveSession<\n TExtra extends Record<string, unknown> = Record<never, never>,\n>(\n auth: AuthSessionResolver<TExtra> | undefined,\n headers: Headers,\n): Promise<{\n user: AccessUser<TExtra> | null\n activeOrganizationId: string | null\n}> {\n if (!auth) return { user: null, activeOrganizationId: null }\n const session = await auth.api.getSession({ headers })\n if (!session?.user) return { user: null, activeOrganizationId: null }\n return {\n user: {\n ...session.user,\n id: session.user.id,\n email: session.user.email,\n emailVerified: session.user.emailVerified === true,\n name: session.user.name,\n role: session.user.role,\n },\n activeOrganizationId: session.session?.activeOrganizationId ?? null,\n }\n}\n"]}
@@ -0,0 +1,457 @@
1
+ import { type AnyMiddleware, type AnyRouter, type Context, type Middleware } from '@orpc/server';
2
+ import type { SessionUserConfig, SessionUserExtraOf } from '../access.js';
3
+ import type { EnvConfigInput, ValidatedEnv } from '../env.js';
4
+ import type { MessagingConfig } from '../messaging/index.js';
5
+ import type { ApiContext } from './context.js';
6
+ import { WORKERSTACK_ERRORS } from '../errors.js';
7
+ export type { ProtectedContextAdditions } from './types.js';
8
+ export declare function createApiBuilder<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
+ public: import("@orpc/server").BuilderWithMiddlewares<ApiContext<TSchema, TEnv, TMessaging, TSessionUser> & object, object, {
10
+ readonly BAD_REQUEST: {
11
+ readonly data: import("valibot").OptionalSchema<import("valibot").StrictObjectSchema<{
12
+ readonly code: import("valibot").OptionalSchema<import("valibot").LiteralSchema<"BAD_REQUEST", undefined>, "BAD_REQUEST">;
13
+ readonly details: import("valibot").OptionalSchema<import("valibot").UnknownSchema, undefined>;
14
+ }, undefined>, {
15
+ readonly code: "BAD_REQUEST";
16
+ }>;
17
+ };
18
+ readonly UNAUTHORIZED: {
19
+ readonly data: import("valibot").OptionalSchema<import("valibot").StrictObjectSchema<{
20
+ readonly code: import("valibot").OptionalSchema<import("valibot").LiteralSchema<"UNAUTHORIZED", undefined>, "UNAUTHORIZED">;
21
+ readonly details: import("valibot").OptionalSchema<import("valibot").UnknownSchema, undefined>;
22
+ }, undefined>, {
23
+ readonly code: "UNAUTHORIZED";
24
+ }>;
25
+ };
26
+ readonly FORBIDDEN: {
27
+ readonly data: import("valibot").OptionalSchema<import("valibot").StrictObjectSchema<{
28
+ readonly code: import("valibot").OptionalSchema<import("valibot").LiteralSchema<"FORBIDDEN", undefined>, "FORBIDDEN">;
29
+ readonly details: import("valibot").OptionalSchema<import("valibot").UnknownSchema, undefined>;
30
+ }, undefined>, {
31
+ readonly code: "FORBIDDEN";
32
+ }>;
33
+ };
34
+ readonly NOT_FOUND: {
35
+ readonly data: import("valibot").OptionalSchema<import("valibot").StrictObjectSchema<{
36
+ readonly code: import("valibot").OptionalSchema<import("valibot").LiteralSchema<"NOT_FOUND", undefined>, "NOT_FOUND">;
37
+ readonly details: import("valibot").OptionalSchema<import("valibot").UnknownSchema, undefined>;
38
+ }, undefined>, {
39
+ readonly code: "NOT_FOUND";
40
+ }>;
41
+ };
42
+ readonly CONFLICT: {
43
+ readonly data: import("valibot").OptionalSchema<import("valibot").StrictObjectSchema<{
44
+ readonly code: import("valibot").OptionalSchema<import("valibot").LiteralSchema<"CONFLICT", undefined>, "CONFLICT">;
45
+ readonly details: import("valibot").OptionalSchema<import("valibot").UnknownSchema, undefined>;
46
+ }, undefined>, {
47
+ readonly code: "CONFLICT";
48
+ }>;
49
+ };
50
+ readonly PAYLOAD_TOO_LARGE: {
51
+ readonly data: import("valibot").OptionalSchema<import("valibot").StrictObjectSchema<{
52
+ readonly code: import("valibot").OptionalSchema<import("valibot").LiteralSchema<"PAYLOAD_TOO_LARGE", undefined>, "PAYLOAD_TOO_LARGE">;
53
+ readonly details: import("valibot").OptionalSchema<import("valibot").UnknownSchema, undefined>;
54
+ }, undefined>, {
55
+ readonly code: "PAYLOAD_TOO_LARGE";
56
+ }>;
57
+ };
58
+ readonly TOO_MANY_REQUESTS: {
59
+ readonly data: import("valibot").OptionalSchema<import("valibot").StrictObjectSchema<{
60
+ readonly code: import("valibot").OptionalSchema<import("valibot").LiteralSchema<"TOO_MANY_REQUESTS", undefined>, "TOO_MANY_REQUESTS">;
61
+ readonly details: import("valibot").OptionalSchema<import("valibot").UnknownSchema, undefined>;
62
+ }, undefined>, {
63
+ readonly code: "TOO_MANY_REQUESTS";
64
+ }>;
65
+ };
66
+ }>;
67
+ protected: import("@orpc/server").BuilderWithMiddlewares<ApiContext<TSchema, TEnv, TMessaging, TSessionUser> & object, Omit<object, "user" | "session"> & {
68
+ user: import("..").AccessUser<TSessionUser>;
69
+ session: {
70
+ activeOrganizationId: string | null;
71
+ };
72
+ }, {
73
+ readonly BAD_REQUEST: {
74
+ readonly data: import("valibot").OptionalSchema<import("valibot").StrictObjectSchema<{
75
+ readonly code: import("valibot").OptionalSchema<import("valibot").LiteralSchema<"BAD_REQUEST", undefined>, "BAD_REQUEST">;
76
+ readonly details: import("valibot").OptionalSchema<import("valibot").UnknownSchema, undefined>;
77
+ }, undefined>, {
78
+ readonly code: "BAD_REQUEST";
79
+ }>;
80
+ };
81
+ readonly UNAUTHORIZED: {
82
+ readonly data: import("valibot").OptionalSchema<import("valibot").StrictObjectSchema<{
83
+ readonly code: import("valibot").OptionalSchema<import("valibot").LiteralSchema<"UNAUTHORIZED", undefined>, "UNAUTHORIZED">;
84
+ readonly details: import("valibot").OptionalSchema<import("valibot").UnknownSchema, undefined>;
85
+ }, undefined>, {
86
+ readonly code: "UNAUTHORIZED";
87
+ }>;
88
+ };
89
+ readonly FORBIDDEN: {
90
+ readonly data: import("valibot").OptionalSchema<import("valibot").StrictObjectSchema<{
91
+ readonly code: import("valibot").OptionalSchema<import("valibot").LiteralSchema<"FORBIDDEN", undefined>, "FORBIDDEN">;
92
+ readonly details: import("valibot").OptionalSchema<import("valibot").UnknownSchema, undefined>;
93
+ }, undefined>, {
94
+ readonly code: "FORBIDDEN";
95
+ }>;
96
+ };
97
+ readonly NOT_FOUND: {
98
+ readonly data: import("valibot").OptionalSchema<import("valibot").StrictObjectSchema<{
99
+ readonly code: import("valibot").OptionalSchema<import("valibot").LiteralSchema<"NOT_FOUND", undefined>, "NOT_FOUND">;
100
+ readonly details: import("valibot").OptionalSchema<import("valibot").UnknownSchema, undefined>;
101
+ }, undefined>, {
102
+ readonly code: "NOT_FOUND";
103
+ }>;
104
+ };
105
+ readonly CONFLICT: {
106
+ readonly data: import("valibot").OptionalSchema<import("valibot").StrictObjectSchema<{
107
+ readonly code: import("valibot").OptionalSchema<import("valibot").LiteralSchema<"CONFLICT", undefined>, "CONFLICT">;
108
+ readonly details: import("valibot").OptionalSchema<import("valibot").UnknownSchema, undefined>;
109
+ }, undefined>, {
110
+ readonly code: "CONFLICT";
111
+ }>;
112
+ };
113
+ readonly PAYLOAD_TOO_LARGE: {
114
+ readonly data: import("valibot").OptionalSchema<import("valibot").StrictObjectSchema<{
115
+ readonly code: import("valibot").OptionalSchema<import("valibot").LiteralSchema<"PAYLOAD_TOO_LARGE", undefined>, "PAYLOAD_TOO_LARGE">;
116
+ readonly details: import("valibot").OptionalSchema<import("valibot").UnknownSchema, undefined>;
117
+ }, undefined>, {
118
+ readonly code: "PAYLOAD_TOO_LARGE";
119
+ }>;
120
+ };
121
+ readonly TOO_MANY_REQUESTS: {
122
+ readonly data: import("valibot").OptionalSchema<import("valibot").StrictObjectSchema<{
123
+ readonly code: import("valibot").OptionalSchema<import("valibot").LiteralSchema<"TOO_MANY_REQUESTS", undefined>, "TOO_MANY_REQUESTS">;
124
+ readonly details: import("valibot").OptionalSchema<import("valibot").UnknownSchema, undefined>;
125
+ }, undefined>, {
126
+ readonly code: "TOO_MANY_REQUESTS";
127
+ }>;
128
+ };
129
+ }>;
130
+ webhook: import("@orpc/server").BuilderWithMiddlewares<ApiContext<TSchema, TEnv, TMessaging, TSessionUser> & object, object, {
131
+ readonly BAD_REQUEST: {
132
+ readonly data: import("valibot").OptionalSchema<import("valibot").StrictObjectSchema<{
133
+ readonly code: import("valibot").OptionalSchema<import("valibot").LiteralSchema<"BAD_REQUEST", undefined>, "BAD_REQUEST">;
134
+ readonly details: import("valibot").OptionalSchema<import("valibot").UnknownSchema, undefined>;
135
+ }, undefined>, {
136
+ readonly code: "BAD_REQUEST";
137
+ }>;
138
+ };
139
+ readonly UNAUTHORIZED: {
140
+ readonly data: import("valibot").OptionalSchema<import("valibot").StrictObjectSchema<{
141
+ readonly code: import("valibot").OptionalSchema<import("valibot").LiteralSchema<"UNAUTHORIZED", undefined>, "UNAUTHORIZED">;
142
+ readonly details: import("valibot").OptionalSchema<import("valibot").UnknownSchema, undefined>;
143
+ }, undefined>, {
144
+ readonly code: "UNAUTHORIZED";
145
+ }>;
146
+ };
147
+ readonly FORBIDDEN: {
148
+ readonly data: import("valibot").OptionalSchema<import("valibot").StrictObjectSchema<{
149
+ readonly code: import("valibot").OptionalSchema<import("valibot").LiteralSchema<"FORBIDDEN", undefined>, "FORBIDDEN">;
150
+ readonly details: import("valibot").OptionalSchema<import("valibot").UnknownSchema, undefined>;
151
+ }, undefined>, {
152
+ readonly code: "FORBIDDEN";
153
+ }>;
154
+ };
155
+ readonly NOT_FOUND: {
156
+ readonly data: import("valibot").OptionalSchema<import("valibot").StrictObjectSchema<{
157
+ readonly code: import("valibot").OptionalSchema<import("valibot").LiteralSchema<"NOT_FOUND", undefined>, "NOT_FOUND">;
158
+ readonly details: import("valibot").OptionalSchema<import("valibot").UnknownSchema, undefined>;
159
+ }, undefined>, {
160
+ readonly code: "NOT_FOUND";
161
+ }>;
162
+ };
163
+ readonly CONFLICT: {
164
+ readonly data: import("valibot").OptionalSchema<import("valibot").StrictObjectSchema<{
165
+ readonly code: import("valibot").OptionalSchema<import("valibot").LiteralSchema<"CONFLICT", undefined>, "CONFLICT">;
166
+ readonly details: import("valibot").OptionalSchema<import("valibot").UnknownSchema, undefined>;
167
+ }, undefined>, {
168
+ readonly code: "CONFLICT";
169
+ }>;
170
+ };
171
+ readonly PAYLOAD_TOO_LARGE: {
172
+ readonly data: import("valibot").OptionalSchema<import("valibot").StrictObjectSchema<{
173
+ readonly code: import("valibot").OptionalSchema<import("valibot").LiteralSchema<"PAYLOAD_TOO_LARGE", undefined>, "PAYLOAD_TOO_LARGE">;
174
+ readonly details: import("valibot").OptionalSchema<import("valibot").UnknownSchema, undefined>;
175
+ }, undefined>, {
176
+ readonly code: "PAYLOAD_TOO_LARGE";
177
+ }>;
178
+ };
179
+ readonly TOO_MANY_REQUESTS: {
180
+ readonly data: import("valibot").OptionalSchema<import("valibot").StrictObjectSchema<{
181
+ readonly code: import("valibot").OptionalSchema<import("valibot").LiteralSchema<"TOO_MANY_REQUESTS", undefined>, "TOO_MANY_REQUESTS">;
182
+ readonly details: import("valibot").OptionalSchema<import("valibot").UnknownSchema, undefined>;
183
+ }, undefined>, {
184
+ readonly code: "TOO_MANY_REQUESTS";
185
+ }>;
186
+ };
187
+ }>;
188
+ /**
189
+ * Declares a standalone middleware over the base context. Use it for
190
+ * `workerstack({ middleware })`, which reaches every procedure in
191
+ * the graph, and for `.use(...)` on any base declared here.
192
+ *
193
+ * The annotation is explicit because the inferred `DecoratedMiddleware`
194
+ * is internal to `@orpc/server` and cannot be named in the emitted types.
195
+ */
196
+ middleware: <TOutContext extends Context>(middleware: Middleware<ApiContext<TSchema, TEnv, TMessaging, TSessionUser>, TOutContext, unknown, unknown, typeof WORKERSTACK_ERRORS>) => AnyMiddleware;
197
+ };
198
+ /**
199
+ * Same builder as `createApiBuilder`, but the generics come from the values an
200
+ * application already has. It reads nothing at runtime, so a module can call it
201
+ * at import time and export the bases that its router modules import.
202
+ */
203
+ export declare function defineApi<TSchema extends Record<string, unknown>, TEnv extends EnvConfigInput | undefined = undefined, TMessaging extends MessagingConfig = MessagingConfig, const TSession extends SessionUserConfig<Record<string, unknown>> | undefined = undefined>(_options: {
204
+ schema: TSchema;
205
+ env?: TEnv;
206
+ messaging?: TMessaging;
207
+ session?: TSession;
208
+ }): {
209
+ public: import("@orpc/server").BuilderWithMiddlewares<ApiContext<TSchema, ValidatedEnv<TEnv>, TMessaging, SessionUserExtraOf<TSession>> & object, object, {
210
+ readonly BAD_REQUEST: {
211
+ readonly data: import("valibot").OptionalSchema<import("valibot").StrictObjectSchema<{
212
+ readonly code: import("valibot").OptionalSchema<import("valibot").LiteralSchema<"BAD_REQUEST", undefined>, "BAD_REQUEST">;
213
+ readonly details: import("valibot").OptionalSchema<import("valibot").UnknownSchema, undefined>;
214
+ }, undefined>, {
215
+ readonly code: "BAD_REQUEST";
216
+ }>;
217
+ };
218
+ readonly UNAUTHORIZED: {
219
+ readonly data: import("valibot").OptionalSchema<import("valibot").StrictObjectSchema<{
220
+ readonly code: import("valibot").OptionalSchema<import("valibot").LiteralSchema<"UNAUTHORIZED", undefined>, "UNAUTHORIZED">;
221
+ readonly details: import("valibot").OptionalSchema<import("valibot").UnknownSchema, undefined>;
222
+ }, undefined>, {
223
+ readonly code: "UNAUTHORIZED";
224
+ }>;
225
+ };
226
+ readonly FORBIDDEN: {
227
+ readonly data: import("valibot").OptionalSchema<import("valibot").StrictObjectSchema<{
228
+ readonly code: import("valibot").OptionalSchema<import("valibot").LiteralSchema<"FORBIDDEN", undefined>, "FORBIDDEN">;
229
+ readonly details: import("valibot").OptionalSchema<import("valibot").UnknownSchema, undefined>;
230
+ }, undefined>, {
231
+ readonly code: "FORBIDDEN";
232
+ }>;
233
+ };
234
+ readonly NOT_FOUND: {
235
+ readonly data: import("valibot").OptionalSchema<import("valibot").StrictObjectSchema<{
236
+ readonly code: import("valibot").OptionalSchema<import("valibot").LiteralSchema<"NOT_FOUND", undefined>, "NOT_FOUND">;
237
+ readonly details: import("valibot").OptionalSchema<import("valibot").UnknownSchema, undefined>;
238
+ }, undefined>, {
239
+ readonly code: "NOT_FOUND";
240
+ }>;
241
+ };
242
+ readonly CONFLICT: {
243
+ readonly data: import("valibot").OptionalSchema<import("valibot").StrictObjectSchema<{
244
+ readonly code: import("valibot").OptionalSchema<import("valibot").LiteralSchema<"CONFLICT", undefined>, "CONFLICT">;
245
+ readonly details: import("valibot").OptionalSchema<import("valibot").UnknownSchema, undefined>;
246
+ }, undefined>, {
247
+ readonly code: "CONFLICT";
248
+ }>;
249
+ };
250
+ readonly PAYLOAD_TOO_LARGE: {
251
+ readonly data: import("valibot").OptionalSchema<import("valibot").StrictObjectSchema<{
252
+ readonly code: import("valibot").OptionalSchema<import("valibot").LiteralSchema<"PAYLOAD_TOO_LARGE", undefined>, "PAYLOAD_TOO_LARGE">;
253
+ readonly details: import("valibot").OptionalSchema<import("valibot").UnknownSchema, undefined>;
254
+ }, undefined>, {
255
+ readonly code: "PAYLOAD_TOO_LARGE";
256
+ }>;
257
+ };
258
+ readonly TOO_MANY_REQUESTS: {
259
+ readonly data: import("valibot").OptionalSchema<import("valibot").StrictObjectSchema<{
260
+ readonly code: import("valibot").OptionalSchema<import("valibot").LiteralSchema<"TOO_MANY_REQUESTS", undefined>, "TOO_MANY_REQUESTS">;
261
+ readonly details: import("valibot").OptionalSchema<import("valibot").UnknownSchema, undefined>;
262
+ }, undefined>, {
263
+ readonly code: "TOO_MANY_REQUESTS";
264
+ }>;
265
+ };
266
+ }>;
267
+ protected: import("@orpc/server").BuilderWithMiddlewares<ApiContext<TSchema, ValidatedEnv<TEnv>, TMessaging, SessionUserExtraOf<TSession>> & object, Omit<object, "user" | "session"> & {
268
+ user: import("..").AccessUser<SessionUserExtraOf<TSession>>;
269
+ session: {
270
+ activeOrganizationId: string | null;
271
+ };
272
+ }, {
273
+ readonly BAD_REQUEST: {
274
+ readonly data: import("valibot").OptionalSchema<import("valibot").StrictObjectSchema<{
275
+ readonly code: import("valibot").OptionalSchema<import("valibot").LiteralSchema<"BAD_REQUEST", undefined>, "BAD_REQUEST">;
276
+ readonly details: import("valibot").OptionalSchema<import("valibot").UnknownSchema, undefined>;
277
+ }, undefined>, {
278
+ readonly code: "BAD_REQUEST";
279
+ }>;
280
+ };
281
+ readonly UNAUTHORIZED: {
282
+ readonly data: import("valibot").OptionalSchema<import("valibot").StrictObjectSchema<{
283
+ readonly code: import("valibot").OptionalSchema<import("valibot").LiteralSchema<"UNAUTHORIZED", undefined>, "UNAUTHORIZED">;
284
+ readonly details: import("valibot").OptionalSchema<import("valibot").UnknownSchema, undefined>;
285
+ }, undefined>, {
286
+ readonly code: "UNAUTHORIZED";
287
+ }>;
288
+ };
289
+ readonly FORBIDDEN: {
290
+ readonly data: import("valibot").OptionalSchema<import("valibot").StrictObjectSchema<{
291
+ readonly code: import("valibot").OptionalSchema<import("valibot").LiteralSchema<"FORBIDDEN", undefined>, "FORBIDDEN">;
292
+ readonly details: import("valibot").OptionalSchema<import("valibot").UnknownSchema, undefined>;
293
+ }, undefined>, {
294
+ readonly code: "FORBIDDEN";
295
+ }>;
296
+ };
297
+ readonly NOT_FOUND: {
298
+ readonly data: import("valibot").OptionalSchema<import("valibot").StrictObjectSchema<{
299
+ readonly code: import("valibot").OptionalSchema<import("valibot").LiteralSchema<"NOT_FOUND", undefined>, "NOT_FOUND">;
300
+ readonly details: import("valibot").OptionalSchema<import("valibot").UnknownSchema, undefined>;
301
+ }, undefined>, {
302
+ readonly code: "NOT_FOUND";
303
+ }>;
304
+ };
305
+ readonly CONFLICT: {
306
+ readonly data: import("valibot").OptionalSchema<import("valibot").StrictObjectSchema<{
307
+ readonly code: import("valibot").OptionalSchema<import("valibot").LiteralSchema<"CONFLICT", undefined>, "CONFLICT">;
308
+ readonly details: import("valibot").OptionalSchema<import("valibot").UnknownSchema, undefined>;
309
+ }, undefined>, {
310
+ readonly code: "CONFLICT";
311
+ }>;
312
+ };
313
+ readonly PAYLOAD_TOO_LARGE: {
314
+ readonly data: import("valibot").OptionalSchema<import("valibot").StrictObjectSchema<{
315
+ readonly code: import("valibot").OptionalSchema<import("valibot").LiteralSchema<"PAYLOAD_TOO_LARGE", undefined>, "PAYLOAD_TOO_LARGE">;
316
+ readonly details: import("valibot").OptionalSchema<import("valibot").UnknownSchema, undefined>;
317
+ }, undefined>, {
318
+ readonly code: "PAYLOAD_TOO_LARGE";
319
+ }>;
320
+ };
321
+ readonly TOO_MANY_REQUESTS: {
322
+ readonly data: import("valibot").OptionalSchema<import("valibot").StrictObjectSchema<{
323
+ readonly code: import("valibot").OptionalSchema<import("valibot").LiteralSchema<"TOO_MANY_REQUESTS", undefined>, "TOO_MANY_REQUESTS">;
324
+ readonly details: import("valibot").OptionalSchema<import("valibot").UnknownSchema, undefined>;
325
+ }, undefined>, {
326
+ readonly code: "TOO_MANY_REQUESTS";
327
+ }>;
328
+ };
329
+ }>;
330
+ webhook: import("@orpc/server").BuilderWithMiddlewares<ApiContext<TSchema, ValidatedEnv<TEnv>, TMessaging, SessionUserExtraOf<TSession>> & object, object, {
331
+ readonly BAD_REQUEST: {
332
+ readonly data: import("valibot").OptionalSchema<import("valibot").StrictObjectSchema<{
333
+ readonly code: import("valibot").OptionalSchema<import("valibot").LiteralSchema<"BAD_REQUEST", undefined>, "BAD_REQUEST">;
334
+ readonly details: import("valibot").OptionalSchema<import("valibot").UnknownSchema, undefined>;
335
+ }, undefined>, {
336
+ readonly code: "BAD_REQUEST";
337
+ }>;
338
+ };
339
+ readonly UNAUTHORIZED: {
340
+ readonly data: import("valibot").OptionalSchema<import("valibot").StrictObjectSchema<{
341
+ readonly code: import("valibot").OptionalSchema<import("valibot").LiteralSchema<"UNAUTHORIZED", undefined>, "UNAUTHORIZED">;
342
+ readonly details: import("valibot").OptionalSchema<import("valibot").UnknownSchema, undefined>;
343
+ }, undefined>, {
344
+ readonly code: "UNAUTHORIZED";
345
+ }>;
346
+ };
347
+ readonly FORBIDDEN: {
348
+ readonly data: import("valibot").OptionalSchema<import("valibot").StrictObjectSchema<{
349
+ readonly code: import("valibot").OptionalSchema<import("valibot").LiteralSchema<"FORBIDDEN", undefined>, "FORBIDDEN">;
350
+ readonly details: import("valibot").OptionalSchema<import("valibot").UnknownSchema, undefined>;
351
+ }, undefined>, {
352
+ readonly code: "FORBIDDEN";
353
+ }>;
354
+ };
355
+ readonly NOT_FOUND: {
356
+ readonly data: import("valibot").OptionalSchema<import("valibot").StrictObjectSchema<{
357
+ readonly code: import("valibot").OptionalSchema<import("valibot").LiteralSchema<"NOT_FOUND", undefined>, "NOT_FOUND">;
358
+ readonly details: import("valibot").OptionalSchema<import("valibot").UnknownSchema, undefined>;
359
+ }, undefined>, {
360
+ readonly code: "NOT_FOUND";
361
+ }>;
362
+ };
363
+ readonly CONFLICT: {
364
+ readonly data: import("valibot").OptionalSchema<import("valibot").StrictObjectSchema<{
365
+ readonly code: import("valibot").OptionalSchema<import("valibot").LiteralSchema<"CONFLICT", undefined>, "CONFLICT">;
366
+ readonly details: import("valibot").OptionalSchema<import("valibot").UnknownSchema, undefined>;
367
+ }, undefined>, {
368
+ readonly code: "CONFLICT";
369
+ }>;
370
+ };
371
+ readonly PAYLOAD_TOO_LARGE: {
372
+ readonly data: import("valibot").OptionalSchema<import("valibot").StrictObjectSchema<{
373
+ readonly code: import("valibot").OptionalSchema<import("valibot").LiteralSchema<"PAYLOAD_TOO_LARGE", undefined>, "PAYLOAD_TOO_LARGE">;
374
+ readonly details: import("valibot").OptionalSchema<import("valibot").UnknownSchema, undefined>;
375
+ }, undefined>, {
376
+ readonly code: "PAYLOAD_TOO_LARGE";
377
+ }>;
378
+ };
379
+ readonly TOO_MANY_REQUESTS: {
380
+ readonly data: import("valibot").OptionalSchema<import("valibot").StrictObjectSchema<{
381
+ readonly code: import("valibot").OptionalSchema<import("valibot").LiteralSchema<"TOO_MANY_REQUESTS", undefined>, "TOO_MANY_REQUESTS">;
382
+ readonly details: import("valibot").OptionalSchema<import("valibot").UnknownSchema, undefined>;
383
+ }, undefined>, {
384
+ readonly code: "TOO_MANY_REQUESTS";
385
+ }>;
386
+ };
387
+ }>;
388
+ /**
389
+ * Declares a standalone middleware over the base context. Use it for
390
+ * `workerstack({ middleware })`, which reaches every procedure in
391
+ * the graph, and for `.use(...)` on any base declared here.
392
+ *
393
+ * The annotation is explicit because the inferred `DecoratedMiddleware`
394
+ * is internal to `@orpc/server` and cannot be named in the emitted types.
395
+ */
396
+ middleware: <TOutContext extends Context>(middleware: Middleware<ApiContext<TSchema, ValidatedEnv<TEnv>, TMessaging, SessionUserExtraOf<TSession>>, TOutContext, unknown, unknown, {
397
+ readonly BAD_REQUEST: {
398
+ readonly data: import("valibot").OptionalSchema<import("valibot").StrictObjectSchema<{
399
+ readonly code: import("valibot").OptionalSchema<import("valibot").LiteralSchema<"BAD_REQUEST", undefined>, "BAD_REQUEST">;
400
+ readonly details: import("valibot").OptionalSchema<import("valibot").UnknownSchema, undefined>;
401
+ }, undefined>, {
402
+ readonly code: "BAD_REQUEST";
403
+ }>;
404
+ };
405
+ readonly UNAUTHORIZED: {
406
+ readonly data: import("valibot").OptionalSchema<import("valibot").StrictObjectSchema<{
407
+ readonly code: import("valibot").OptionalSchema<import("valibot").LiteralSchema<"UNAUTHORIZED", undefined>, "UNAUTHORIZED">;
408
+ readonly details: import("valibot").OptionalSchema<import("valibot").UnknownSchema, undefined>;
409
+ }, undefined>, {
410
+ readonly code: "UNAUTHORIZED";
411
+ }>;
412
+ };
413
+ readonly FORBIDDEN: {
414
+ readonly data: import("valibot").OptionalSchema<import("valibot").StrictObjectSchema<{
415
+ readonly code: import("valibot").OptionalSchema<import("valibot").LiteralSchema<"FORBIDDEN", undefined>, "FORBIDDEN">;
416
+ readonly details: import("valibot").OptionalSchema<import("valibot").UnknownSchema, undefined>;
417
+ }, undefined>, {
418
+ readonly code: "FORBIDDEN";
419
+ }>;
420
+ };
421
+ readonly NOT_FOUND: {
422
+ readonly data: import("valibot").OptionalSchema<import("valibot").StrictObjectSchema<{
423
+ readonly code: import("valibot").OptionalSchema<import("valibot").LiteralSchema<"NOT_FOUND", undefined>, "NOT_FOUND">;
424
+ readonly details: import("valibot").OptionalSchema<import("valibot").UnknownSchema, undefined>;
425
+ }, undefined>, {
426
+ readonly code: "NOT_FOUND";
427
+ }>;
428
+ };
429
+ readonly CONFLICT: {
430
+ readonly data: import("valibot").OptionalSchema<import("valibot").StrictObjectSchema<{
431
+ readonly code: import("valibot").OptionalSchema<import("valibot").LiteralSchema<"CONFLICT", undefined>, "CONFLICT">;
432
+ readonly details: import("valibot").OptionalSchema<import("valibot").UnknownSchema, undefined>;
433
+ }, undefined>, {
434
+ readonly code: "CONFLICT";
435
+ }>;
436
+ };
437
+ readonly PAYLOAD_TOO_LARGE: {
438
+ readonly data: import("valibot").OptionalSchema<import("valibot").StrictObjectSchema<{
439
+ readonly code: import("valibot").OptionalSchema<import("valibot").LiteralSchema<"PAYLOAD_TOO_LARGE", undefined>, "PAYLOAD_TOO_LARGE">;
440
+ readonly details: import("valibot").OptionalSchema<import("valibot").UnknownSchema, undefined>;
441
+ }, undefined>, {
442
+ readonly code: "PAYLOAD_TOO_LARGE";
443
+ }>;
444
+ };
445
+ readonly TOO_MANY_REQUESTS: {
446
+ readonly data: import("valibot").OptionalSchema<import("valibot").StrictObjectSchema<{
447
+ readonly code: import("valibot").OptionalSchema<import("valibot").LiteralSchema<"TOO_MANY_REQUESTS", undefined>, "TOO_MANY_REQUESTS">;
448
+ readonly details: import("valibot").OptionalSchema<import("valibot").UnknownSchema, undefined>;
449
+ }, undefined>, {
450
+ readonly code: "TOO_MANY_REQUESTS";
451
+ }>;
452
+ };
453
+ }>) => AnyMiddleware;
454
+ };
455
+ export type WorkerstackApiBuilder<TSchema extends Record<string, unknown>, TEnv = Record<string, unknown>, TMessaging extends MessagingConfig | undefined = MessagingConfig, TSessionUser extends Record<string, unknown> = Record<never, never>> = ReturnType<typeof createApiBuilder<TSchema, TEnv, TMessaging, TSessionUser>>;
456
+ export type ApiFactory<TSchema extends Record<string, unknown>, TEnv, TCustomApiRouter extends AnyRouter> = (builder: WorkerstackApiBuilder<TSchema, TEnv>) => TCustomApiRouter;
457
+ //# sourceMappingURL=builder.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"builder.d.ts","sourceRoot":"","sources":["../../src/api/builder.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,KAAK,aAAa,EAClB,KAAK,SAAS,EACd,KAAK,OAAO,EACZ,KAAK,UAAU,EAChB,MAAM,cAAc,CAAA;AAErB,OAAO,KAAK,EAAE,iBAAiB,EAAE,kBAAkB,EAAE,MAAM,WAAW,CAAA;AACtE,OAAO,KAAK,EAAE,cAAc,EAAE,YAAY,EAAE,MAAM,QAAQ,CAAA;AAC1D,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,cAAc,CAAA;AACnD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,WAAW,CAAA;AAE3C,OAAO,EACL,kBAAkB,EAGnB,MAAM,WAAW,CAAA;AAClB,YAAY,EAAE,yBAAyB,EAAE,MAAM,SAAS,CAAA;AAExD,wBAAgB,gBAAgB,CAC9B,OAAO,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EACjE,IAAI,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC9B,UAAU,SAAS,eAAe,GAAG,SAAS,GAAG,eAAe,EAChE,YAAY,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,MAAM,CAAC,KAAK,EAAE,KAAK,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;IA0BjE;;;;;;;OAOG;gBACuC,CAAC,WAAW,SAAS,OAAO,EACpE,UAAU,EAAE,UAAU,CACpB,UAAU,CAAC,OAAO,EAAE,IAAI,EAAE,UAAU,EAAE,YAAY,CAAC,EACnD,WAAW,EACX,OAAO,EACP,OAAO,EACP,OAAO,kBAAkB,CAC1B,KACE,aAAa;EAErB;AAED;;;;GAIG;AACH,wBAAgB,SAAS,CACvB,OAAO,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EACvC,IAAI,SAAS,cAAc,GAAG,SAAS,GAAG,SAAS,EACnD,UAAU,SAAS,eAAe,GAAG,eAAe,EACpD,KAAK,CAAC,QAAQ,SACV,iBAAiB,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,GAC1C,SAAS,GAAG,SAAS,EACzB,QAAQ,EAAE;IACV,MAAM,EAAE,OAAO,CAAA;IACf,GAAG,CAAC,EAAE,IAAI,CAAA;IACV,SAAS,CAAC,EAAE,UAAU,CAAA;IACtB,OAAO,CAAC,EAAE,QAAQ,CAAA;CACnB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;IArCG;;;;;;;OAOG;iBACwC,WAAW,SAAS,OAAO;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;WAQjE,aAAa;EA4BrB;AAED,MAAM,MAAM,qBAAqB,CAC/B,OAAO,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EACvC,IAAI,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC9B,UAAU,SAAS,eAAe,GAAG,SAAS,GAAG,eAAe,EAChE,YAAY,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,MAAM,CAAC,KAAK,EAAE,KAAK,CAAC,IACjE,UAAU,CAAC,OAAO,gBAAgB,CAAC,OAAO,EAAE,IAAI,EAAE,UAAU,EAAE,YAAY,CAAC,CAAC,CAAA;AAEhF,MAAM,MAAM,UAAU,CACpB,OAAO,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EACvC,IAAI,EACJ,gBAAgB,SAAS,SAAS,IAChC,CAAC,OAAO,EAAE,qBAAqB,CAAC,OAAO,EAAE,IAAI,CAAC,KAAK,gBAAgB,CAAA"}
@@ -0,0 +1,45 @@
1
+ import { os, } from '@orpc/server';
2
+ import { WORKERSTACK_ERRORS, WorkerstackError, mapWorkerstackErrors, } from '../errors.js';
3
+ export function createApiBuilder() {
4
+ const base = os
5
+ .$context()
6
+ .errors(WORKERSTACK_ERRORS)
7
+ .use(mapWorkerstackErrors);
8
+ const protectedProc = base.use(async ({ context, next }) => {
9
+ const session = await context.getSession();
10
+ if (!session.user) {
11
+ throw new WorkerstackError('UNAUTHORIZED', 'Authentication required');
12
+ }
13
+ return next({
14
+ context: {
15
+ user: session.user,
16
+ session: {
17
+ activeOrganizationId: session.activeOrganizationId,
18
+ },
19
+ },
20
+ });
21
+ });
22
+ return {
23
+ public: base,
24
+ protected: protectedProc,
25
+ webhook: base,
26
+ /**
27
+ * Declares a standalone middleware over the base context. Use it for
28
+ * `workerstack({ middleware })`, which reaches every procedure in
29
+ * the graph, and for `.use(...)` on any base declared here.
30
+ *
31
+ * The annotation is explicit because the inferred `DecoratedMiddleware`
32
+ * is internal to `@orpc/server` and cannot be named in the emitted types.
33
+ */
34
+ middleware: base.middleware.bind(base),
35
+ };
36
+ }
37
+ /**
38
+ * Same builder as `createApiBuilder`, but the generics come from the values an
39
+ * application already has. It reads nothing at runtime, so a module can call it
40
+ * at import time and export the bases that its router modules import.
41
+ */
42
+ export function defineApi(_options) {
43
+ return createApiBuilder();
44
+ }
45
+ //# sourceMappingURL=builder.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"builder.js","sourceRoot":"","sources":["../../src/api/builder.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,EAAE,GAKH,MAAM,cAAc,CAAA;AAOrB,OAAO,EACL,kBAAkB,EAClB,gBAAgB,EAChB,oBAAoB,GACrB,MAAM,WAAW,CAAA;AAGlB,MAAM,UAAU,gBAAgB;IAM9B,MAAM,IAAI,GAAG,EAAE;SACZ,QAAQ,EAAuD;SAC/D,MAAM,CAAC,kBAAkB,CAAC;SAC1B,GAAG,CAAC,oBAAoB,CAAC,CAAA;IAE5B,MAAM,aAAa,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,EAAE,EAAE;QACzD,MAAM,OAAO,GAAG,MAAM,OAAO,CAAC,UAAU,EAAE,CAAA;QAC1C,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC;YAClB,MAAM,IAAI,gBAAgB,CAAC,cAAc,EAAE,yBAAyB,CAAC,CAAA;QACvE,CAAC;QACD,OAAO,IAAI,CAAC;YACV,OAAO,EAAE;gBACP,IAAI,EAAE,OAAO,CAAC,IAAI;gBAClB,OAAO,EAAE;oBACP,oBAAoB,EAAE,OAAO,CAAC,oBAAoB;iBACnD;aACF;SACF,CAAC,CAAA;IACJ,CAAC,CAAC,CAAA;IAEF,OAAO;QACL,MAAM,EAAE,IAAI;QACZ,SAAS,EAAE,aAAa;QACxB,OAAO,EAAE,IAAI;QACb;;;;;;;WAOG;QACH,UAAU,EAAE,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAQnB;KACnB,CAAA;AACH,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,SAAS,CAOvB,QAKD;IACC,OAAO,gBAAgB,EAKpB,CAAA;AACL,CAAC","sourcesContent":["import {\n os,\n type AnyMiddleware,\n type AnyRouter,\n type Context,\n type Middleware,\n} from '@orpc/server'\n\nimport type { SessionUserConfig, SessionUserExtraOf } from '../access'\nimport type { EnvConfigInput, ValidatedEnv } from '../env'\nimport type { MessagingConfig } from '../messaging'\nimport type { ApiContext } from './context'\n\nimport {\n WORKERSTACK_ERRORS,\n WorkerstackError,\n mapWorkerstackErrors,\n} from '../errors'\nexport type { ProtectedContextAdditions } from './types'\n\nexport function createApiBuilder<\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 const base = os\n .$context<ApiContext<TSchema, TEnv, TMessaging, TSessionUser>>()\n .errors(WORKERSTACK_ERRORS)\n .use(mapWorkerstackErrors)\n\n const protectedProc = base.use(async ({ context, next }) => {\n const session = await context.getSession()\n if (!session.user) {\n throw new WorkerstackError('UNAUTHORIZED', 'Authentication required')\n }\n return next({\n context: {\n user: session.user,\n session: {\n activeOrganizationId: session.activeOrganizationId,\n },\n },\n })\n })\n\n return {\n public: base,\n protected: protectedProc,\n webhook: base,\n /**\n * Declares a standalone middleware over the base context. Use it for\n * `workerstack({ middleware })`, which reaches every procedure in\n * the graph, and for `.use(...)` on any base declared here.\n *\n * The annotation is explicit because the inferred `DecoratedMiddleware`\n * is internal to `@orpc/server` and cannot be named in the emitted types.\n */\n middleware: base.middleware.bind(base) as <TOutContext extends Context>(\n middleware: Middleware<\n ApiContext<TSchema, TEnv, TMessaging, TSessionUser>,\n TOutContext,\n unknown,\n unknown,\n typeof WORKERSTACK_ERRORS\n >,\n ) => AnyMiddleware,\n }\n}\n\n/**\n * Same builder as `createApiBuilder`, but the generics come from the values an\n * application already has. It reads nothing at runtime, so a module can call it\n * at import time and export the bases that its router modules import.\n */\nexport function defineApi<\n TSchema extends Record<string, unknown>,\n TEnv extends EnvConfigInput | undefined = undefined,\n TMessaging extends MessagingConfig = MessagingConfig,\n const TSession extends\n | SessionUserConfig<Record<string, unknown>>\n | undefined = undefined,\n>(_options: {\n schema: TSchema\n env?: TEnv\n messaging?: TMessaging\n session?: TSession\n}) {\n return createApiBuilder<\n TSchema,\n ValidatedEnv<TEnv>,\n TMessaging,\n SessionUserExtraOf<TSession>\n >()\n}\n\nexport type WorkerstackApiBuilder<\n TSchema extends Record<string, unknown>,\n TEnv = Record<string, unknown>,\n TMessaging extends MessagingConfig | undefined = MessagingConfig,\n TSessionUser extends Record<string, unknown> = Record<never, never>,\n> = ReturnType<typeof createApiBuilder<TSchema, TEnv, TMessaging, TSessionUser>>\n\nexport type ApiFactory<\n TSchema extends Record<string, unknown>,\n TEnv,\n TCustomApiRouter extends AnyRouter,\n> = (builder: WorkerstackApiBuilder<TSchema, TEnv>) => TCustomApiRouter\n"]}
@@ -0,0 +1,8 @@
1
+ import type { ApiOperation } from '../manifest.js';
2
+ /**
3
+ * Describes the procedures an application declared itself. Generated CRUD,
4
+ * storage, and realtime routes are excluded: a host derives those from the
5
+ * blueprint's `resources`.
6
+ */
7
+ export declare function describeApiOperations(router: unknown): ApiOperation[];
8
+ //# sourceMappingURL=catalog.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"catalog.d.ts","sourceRoot":"","sources":["../../src/api/catalog.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,aAAa,CAAA;AA2D/C;;;;GAIG;AACH,wBAAgB,qBAAqB,CAAC,MAAM,EAAE,OAAO,GAAG,YAAY,EAAE,CAKrE"}