ts-procedures 8.6.0 → 9.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (630) hide show
  1. package/CHANGELOG.md +540 -0
  2. package/README.md +166 -101
  3. package/agent_config/claude-code/.claude-plugin/plugin.json +1 -1
  4. package/agent_config/claude-code/agents/ts-procedures-architect.md +11 -10
  5. package/agent_config/claude-code/skills/ts-procedures/SKILL.md +25 -12
  6. package/agent_config/claude-code/skills/ts-procedures/anti-patterns.md +10 -12
  7. package/agent_config/claude-code/skills/ts-procedures/api-reference.md +141 -45
  8. package/agent_config/claude-code/skills/ts-procedures/checklist.md +7 -6
  9. package/agent_config/claude-code/skills/ts-procedures/patterns.md +45 -6
  10. package/agent_config/claude-code/skills/ts-procedures/templates/client.md +1 -1
  11. package/agent_config/claude-code/skills/ts-procedures/templates/hono.md +1 -1
  12. package/agent_config/copilot/copilot-instructions.md +50 -33
  13. package/agent_config/cursor/cursorrules +50 -33
  14. package/build/adapters/astro/astro-context.js.map +1 -0
  15. package/build/adapters/astro/create-handler.js.map +1 -0
  16. package/build/adapters/astro/index.js.map +1 -0
  17. package/build/{implementations/http → adapters}/astro/index.test.js +1 -1
  18. package/build/adapters/astro/index.test.js.map +1 -0
  19. package/build/adapters/astro/rewrite-request.js.map +1 -0
  20. package/build/adapters/hono/envelope-parity.test.js +98 -0
  21. package/build/adapters/hono/envelope-parity.test.js.map +1 -0
  22. package/build/{implementations/http → adapters}/hono/handlers/http-stream.d.ts +1 -1
  23. package/build/adapters/hono/handlers/http-stream.js +55 -0
  24. package/build/adapters/hono/handlers/http-stream.js.map +1 -0
  25. package/build/{implementations/http → adapters}/hono/handlers/http-stream.test.js +1 -1
  26. package/build/adapters/hono/handlers/http-stream.test.js.map +1 -0
  27. package/build/{implementations/http → adapters}/hono/handlers/http.d.ts +1 -1
  28. package/build/adapters/hono/handlers/http.js +50 -0
  29. package/build/adapters/hono/handlers/http.js.map +1 -0
  30. package/build/{implementations/http → adapters}/hono/handlers/http.test.js +1 -1
  31. package/build/adapters/hono/handlers/http.test.js.map +1 -0
  32. package/build/{implementations/http → adapters}/hono/handlers/rpc.d.ts +2 -2
  33. package/build/adapters/hono/handlers/rpc.js +23 -0
  34. package/build/adapters/hono/handlers/rpc.js.map +1 -0
  35. package/build/{implementations/http → adapters}/hono/handlers/rpc.test.js +1 -1
  36. package/build/adapters/hono/handlers/rpc.test.js.map +1 -0
  37. package/build/adapters/hono/handlers/stream.d.ts +12 -0
  38. package/build/adapters/hono/handlers/stream.js +89 -0
  39. package/build/adapters/hono/handlers/stream.js.map +1 -0
  40. package/build/{implementations/http → adapters}/hono/handlers/stream.test.js +3 -2
  41. package/build/adapters/hono/handlers/stream.test.js.map +1 -0
  42. package/build/{implementations/http → adapters}/hono/index.d.ts +24 -12
  43. package/build/{implementations/http → adapters}/hono/index.js +19 -8
  44. package/build/adapters/hono/index.js.map +1 -0
  45. package/build/{implementations/http → adapters}/hono/index.test.js +2 -4
  46. package/build/adapters/hono/index.test.js.map +1 -0
  47. package/build/{implementations/http → adapters/hono}/on-request-error.test.js +2 -2
  48. package/build/adapters/hono/on-request-error.test.js.map +1 -0
  49. package/build/adapters/hono/request.d.ts +7 -0
  50. package/build/adapters/hono/request.js +22 -0
  51. package/build/adapters/hono/request.js.map +1 -0
  52. package/build/{implementations/http → adapters/hono}/route-errors.test.js +4 -4
  53. package/build/adapters/hono/route-errors.test.js.map +1 -0
  54. package/build/adapters/hono/types.d.ts +55 -0
  55. package/build/adapters/hono/types.js +19 -0
  56. package/build/adapters/hono/types.js.map +1 -0
  57. package/build/client/freeze.test.js +39 -0
  58. package/build/client/freeze.test.js.map +1 -0
  59. package/build/client/typed-error-dispatch.test.js +2 -2
  60. package/build/client/typed-error-dispatch.test.js.map +1 -1
  61. package/build/codegen/__fixtures__/make-envelope.d.ts +1 -1
  62. package/build/codegen/bin/cli.d.ts +5 -0
  63. package/build/codegen/bin/cli.js +139 -182
  64. package/build/codegen/bin/cli.js.map +1 -1
  65. package/build/codegen/bin/cli.test.js +12 -2
  66. package/build/codegen/bin/cli.test.js.map +1 -1
  67. package/build/codegen/bin/flag-specs.d.ts +9 -0
  68. package/build/codegen/bin/flag-specs.js +33 -31
  69. package/build/codegen/bin/flag-specs.js.map +1 -1
  70. package/build/codegen/bin/flag-specs.test.js +14 -1
  71. package/build/codegen/bin/flag-specs.test.js.map +1 -1
  72. package/build/codegen/collect-models.d.ts +1 -1
  73. package/build/codegen/emit/api-route.d.ts +8 -0
  74. package/build/codegen/emit/api-route.js +156 -0
  75. package/build/codegen/emit/api-route.js.map +1 -0
  76. package/build/codegen/emit/context.d.ts +30 -0
  77. package/build/codegen/emit/context.js +2 -0
  78. package/build/codegen/emit/context.js.map +1 -0
  79. package/build/codegen/emit/declarations.d.ts +24 -0
  80. package/build/codegen/emit/declarations.js +48 -0
  81. package/build/codegen/emit/declarations.js.map +1 -0
  82. package/build/codegen/emit/format-types.d.ts +61 -0
  83. package/build/codegen/emit/format-types.js +188 -0
  84. package/build/codegen/emit/format-types.js.map +1 -0
  85. package/build/codegen/emit/http-stream-route.d.ts +7 -0
  86. package/build/codegen/emit/http-stream-route.js +138 -0
  87. package/build/codegen/emit/http-stream-route.js.map +1 -0
  88. package/build/codegen/emit/route-shared.d.ts +37 -0
  89. package/build/codegen/emit/route-shared.js +88 -0
  90. package/build/codegen/emit/route-shared.js.map +1 -0
  91. package/build/codegen/emit/rpc-route.d.ts +7 -0
  92. package/build/codegen/emit/rpc-route.js +37 -0
  93. package/build/codegen/emit/rpc-route.js.map +1 -0
  94. package/build/codegen/emit/scope-file.d.ts +39 -0
  95. package/build/codegen/emit/scope-file.js +166 -0
  96. package/build/codegen/emit/scope-file.js.map +1 -0
  97. package/build/codegen/emit/stream-route.d.ts +7 -0
  98. package/build/codegen/emit/stream-route.js +62 -0
  99. package/build/codegen/emit/stream-route.js.map +1 -0
  100. package/build/codegen/emit-errors.d.ts +1 -1
  101. package/build/codegen/emit-errors.integration.test.js +1 -1
  102. package/build/codegen/emit-errors.integration.test.js.map +1 -1
  103. package/build/codegen/emit-scope.d.ts +13 -30
  104. package/build/codegen/emit-scope.js +15 -844
  105. package/build/codegen/emit-scope.js.map +1 -1
  106. package/build/codegen/emit-scope.test.js +67 -0
  107. package/build/codegen/emit-scope.test.js.map +1 -1
  108. package/build/codegen/goldens.test.js +69 -0
  109. package/build/codegen/goldens.test.js.map +1 -0
  110. package/build/codegen/group-routes.d.ts +1 -1
  111. package/build/codegen/pipeline.d.ts +1 -1
  112. package/build/codegen/resolve-envelope.d.ts +1 -1
  113. package/build/codegen/targets/_shared/error-schemas.d.ts +1 -1
  114. package/build/codegen/targets/_shared/route-slots.d.ts +1 -1
  115. package/build/codegen/targets/_shared/target-run.d.ts +1 -1
  116. package/build/codegen/targets/kotlin/emit-route-kotlin.d.ts +1 -1
  117. package/build/codegen/targets/swift/emit-route-swift.d.ts +1 -1
  118. package/build/core/create-http-stream.d.ts +50 -0
  119. package/build/core/create-http-stream.js +108 -0
  120. package/build/core/create-http-stream.js.map +1 -0
  121. package/build/{create-http-stream.test.js → core/create-http-stream.test.js} +1 -1
  122. package/build/core/create-http-stream.test.js.map +1 -0
  123. package/build/core/create-http.d.ts +51 -0
  124. package/build/core/create-http.js +65 -0
  125. package/build/core/create-http.js.map +1 -0
  126. package/build/{create-http.test.js → core/create-http.test.js} +27 -4
  127. package/build/core/create-http.test.js.map +1 -0
  128. package/build/core/create-stream.d.ts +26 -0
  129. package/build/core/create-stream.js +80 -0
  130. package/build/core/create-stream.js.map +1 -0
  131. package/build/{create-stream.test.js → core/create-stream.test.js} +23 -28
  132. package/build/core/create-stream.test.js.map +1 -0
  133. package/build/core/create.d.ts +22 -0
  134. package/build/core/create.js +71 -0
  135. package/build/core/create.js.map +1 -0
  136. package/build/{create.test.js → core/create.test.js} +25 -46
  137. package/build/core/create.test.js.map +1 -0
  138. package/build/core/definition-site.d.ts +24 -0
  139. package/build/{stack-utils.js → core/definition-site.js} +20 -20
  140. package/build/core/definition-site.js.map +1 -0
  141. package/build/{stack-utils.test.js → core/definition-site.test.js} +12 -3
  142. package/build/core/definition-site.test.js.map +1 -0
  143. package/build/{errors.d.ts → core/errors.d.ts} +19 -8
  144. package/build/{errors.js → core/errors.js} +21 -26
  145. package/build/core/errors.js.map +1 -0
  146. package/build/core/errors.test.js.map +1 -0
  147. package/build/core/factory-options.test.js +82 -0
  148. package/build/core/factory-options.test.js.map +1 -0
  149. package/build/core/http-route.d.ts +13 -0
  150. package/build/core/http-route.js +54 -0
  151. package/build/core/http-route.js.map +1 -0
  152. package/build/core/internal.d.ts +72 -0
  153. package/build/core/internal.js +128 -0
  154. package/build/core/internal.js.map +1 -0
  155. package/build/{migration.test.js → core/migration.test.js} +17 -1
  156. package/build/core/migration.test.js.map +1 -0
  157. package/build/core/procedures.d.ts +143 -0
  158. package/build/core/procedures.js +64 -0
  159. package/build/core/procedures.js.map +1 -0
  160. package/build/{index.test.js → core/procedures.test.js} +14 -11
  161. package/build/core/procedures.test.js.map +1 -0
  162. package/build/core/types.d.ts +183 -0
  163. package/build/{schema → core}/types.js.map +1 -1
  164. package/build/exports.d.ts +31 -11
  165. package/build/exports.js +23 -8
  166. package/build/exports.js.map +1 -1
  167. package/build/schema/adapter.d.ts +35 -0
  168. package/build/schema/adapter.js +13 -0
  169. package/build/schema/adapter.js.map +1 -0
  170. package/build/schema/adapter.test.js +53 -0
  171. package/build/schema/adapter.test.js.map +1 -0
  172. package/build/schema/compile.d.ts +37 -0
  173. package/build/schema/compile.js +38 -0
  174. package/build/schema/compile.js.map +1 -0
  175. package/build/schema/compile.test.js +78 -0
  176. package/build/schema/compile.test.js.map +1 -0
  177. package/build/schema/compute-schema.d.ts +47 -37
  178. package/build/schema/compute-schema.js +86 -29
  179. package/build/schema/compute-schema.js.map +1 -1
  180. package/build/schema/compute-schema.test.js +158 -40
  181. package/build/schema/compute-schema.test.js.map +1 -1
  182. package/build/schema/json-schema.d.ts +17 -0
  183. package/build/schema/json-schema.js +2 -0
  184. package/build/schema/json-schema.js.map +1 -0
  185. package/build/schema/typebox.d.ts +11 -0
  186. package/build/schema/typebox.js +24 -0
  187. package/build/schema/typebox.js.map +1 -0
  188. package/build/schema/typebox.test.js +34 -0
  189. package/build/schema/typebox.test.js.map +1 -0
  190. package/build/server/context.d.ts +8 -0
  191. package/build/server/context.js +7 -0
  192. package/build/server/context.js.map +1 -0
  193. package/build/server/context.test.js +16 -0
  194. package/build/server/context.test.js.map +1 -0
  195. package/build/{doc-envelope.d.ts → server/doc-envelope.d.ts} +1 -1
  196. package/build/server/doc-envelope.js.map +1 -0
  197. package/build/server/doc-envelope.test.d.ts +1 -0
  198. package/build/server/doc-envelope.test.js.map +1 -0
  199. package/build/{implementations/http → server}/doc-registry.d.ts +7 -2
  200. package/build/{implementations/http → server}/doc-registry.js +9 -5
  201. package/build/server/doc-registry.js.map +1 -0
  202. package/build/server/doc-registry.test.d.ts +1 -0
  203. package/build/{implementations/http → server}/doc-registry.test.js +27 -24
  204. package/build/server/doc-registry.test.js.map +1 -0
  205. package/build/server/docs/docs.test.d.ts +1 -0
  206. package/build/server/docs/docs.test.js +237 -0
  207. package/build/server/docs/docs.test.js.map +1 -0
  208. package/build/{implementations/http/hono → server}/docs/http-doc.d.ts +2 -2
  209. package/build/{implementations/http/hono → server}/docs/http-doc.js +1 -1
  210. package/build/server/docs/http-doc.js.map +1 -0
  211. package/build/{implementations/http/hono → server}/docs/http-stream-doc.d.ts +2 -2
  212. package/build/{implementations/http/hono → server}/docs/http-stream-doc.js +1 -1
  213. package/build/server/docs/http-stream-doc.js.map +1 -0
  214. package/build/{implementations/http/hono → server}/docs/rpc-doc.d.ts +2 -2
  215. package/build/{implementations/http/hono → server}/docs/rpc-doc.js +1 -1
  216. package/build/server/docs/rpc-doc.js.map +1 -0
  217. package/build/{implementations/http/hono → server}/docs/stream-doc.d.ts +2 -2
  218. package/build/{implementations/http/hono → server}/docs/stream-doc.js +1 -1
  219. package/build/server/docs/stream-doc.js.map +1 -0
  220. package/build/server/errors/dispatch.d.ts +96 -0
  221. package/build/{implementations/http/error-dispatch.js → server/errors/dispatch.js} +20 -10
  222. package/build/server/errors/dispatch.js.map +1 -0
  223. package/build/server/errors/dispatch.test.d.ts +1 -0
  224. package/build/server/errors/dispatch.test.js +418 -0
  225. package/build/server/errors/dispatch.test.js.map +1 -0
  226. package/build/{implementations/http/error-taxonomy.d.ts → server/errors/taxonomy.d.ts} +8 -17
  227. package/build/{implementations/http/error-taxonomy.js → server/errors/taxonomy.js} +6 -15
  228. package/build/server/errors/taxonomy.js.map +1 -0
  229. package/build/server/errors/taxonomy.test.d.ts +1 -0
  230. package/build/{implementations/http/error-taxonomy.test.js → server/errors/taxonomy.test.js} +45 -39
  231. package/build/server/errors/taxonomy.test.js.map +1 -0
  232. package/build/server/index.d.ts +29 -0
  233. package/build/server/index.js +27 -0
  234. package/build/server/index.js.map +1 -0
  235. package/build/server/no-framework-imports.test.d.ts +1 -0
  236. package/build/server/no-framework-imports.test.js +40 -0
  237. package/build/server/no-framework-imports.test.js.map +1 -0
  238. package/build/{implementations/http/hono/path.d.ts → server/paths.d.ts} +2 -3
  239. package/build/{implementations/http/hono/path.js → server/paths.js} +1 -1
  240. package/build/server/paths.js.map +1 -0
  241. package/build/server/paths.test.d.ts +1 -0
  242. package/build/server/paths.test.js +111 -0
  243. package/build/server/paths.test.js.map +1 -0
  244. package/build/server/request/params.d.ts +29 -0
  245. package/build/server/request/params.js +43 -0
  246. package/build/server/request/params.js.map +1 -0
  247. package/build/server/request/params.test.d.ts +1 -0
  248. package/build/server/request/params.test.js +91 -0
  249. package/build/server/request/params.test.js.map +1 -0
  250. package/build/server/request/query.d.ts +9 -0
  251. package/build/server/request/query.js +22 -0
  252. package/build/server/request/query.js.map +1 -0
  253. package/build/server/request/query.test.d.ts +1 -0
  254. package/build/server/request/query.test.js +60 -0
  255. package/build/server/request/query.test.js.map +1 -0
  256. package/build/server/sse.d.ts +70 -0
  257. package/build/server/sse.js +94 -0
  258. package/build/server/sse.js.map +1 -0
  259. package/build/server/sse.test.d.ts +1 -0
  260. package/build/server/sse.test.js +98 -0
  261. package/build/server/sse.test.js.map +1 -0
  262. package/build/{implementations → server}/types.d.ts +17 -15
  263. package/build/{implementations → server}/types.js.map +1 -1
  264. package/docs/astro-adapter.md +8 -9
  265. package/docs/client-and-codegen.md +10 -4
  266. package/docs/client-error-handling.md +5 -5
  267. package/docs/codegen-kotlin.md +2 -3
  268. package/docs/codegen-swift.md +1 -2
  269. package/docs/core.md +135 -54
  270. package/docs/http-integrations.md +58 -6
  271. package/docs/migration-v8-to-v9.md +200 -0
  272. package/docs/plans/2026-06-09-v9-rewrite.md +130 -0
  273. package/docs/specs/2026-06-09-v9-rewrite-design.md +221 -0
  274. package/docs/streaming.md +12 -0
  275. package/package.json +25 -48
  276. package/src/{implementations/http → adapters}/astro/index.test.ts +2 -2
  277. package/src/adapters/hono/__fixtures__/parity-envelope.json +389 -0
  278. package/src/adapters/hono/envelope-parity.test.ts +126 -0
  279. package/src/{implementations/http → adapters}/hono/handlers/http-stream.test.ts +1 -1
  280. package/src/adapters/hono/handlers/http-stream.ts +73 -0
  281. package/src/{implementations/http → adapters}/hono/handlers/http.test.ts +1 -1
  282. package/src/adapters/hono/handlers/http.ts +70 -0
  283. package/src/{implementations/http → adapters}/hono/handlers/rpc.test.ts +2 -2
  284. package/src/adapters/hono/handlers/rpc.ts +39 -0
  285. package/src/{implementations/http → adapters}/hono/handlers/stream.test.ts +4 -3
  286. package/src/{implementations/http → adapters}/hono/handlers/stream.ts +19 -92
  287. package/src/{implementations/http → adapters}/hono/index.test.ts +14 -16
  288. package/src/{implementations/http → adapters}/hono/index.ts +35 -30
  289. package/src/{implementations/http → adapters/hono}/on-request-error.test.ts +3 -3
  290. package/src/adapters/hono/request.ts +28 -0
  291. package/src/{implementations/http → adapters/hono}/route-errors.test.ts +5 -5
  292. package/src/{implementations/http → adapters}/hono/types.ts +43 -20
  293. package/src/client/freeze.test.ts +41 -0
  294. package/src/client/typed-error-dispatch.test.ts +3 -3
  295. package/src/codegen/__fixtures__/make-envelope.ts +1 -1
  296. package/src/codegen/__fixtures__/models-envelope.json +310 -0
  297. package/src/codegen/__goldens__/MANIFEST.json +85 -0
  298. package/src/codegen/__goldens__/kotlin-default--models/Billing.kt +112 -0
  299. package/src/codegen/__goldens__/kotlin-default--models/BillingReports.kt +26 -0
  300. package/src/codegen/__goldens__/kotlin-default--models/Orders.kt +88 -0
  301. package/src/codegen/__goldens__/kotlin-default--users/Users.kt +189 -0
  302. package/src/codegen/__goldens__/swift-default--models/Billing.swift +97 -0
  303. package/src/codegen/__goldens__/swift-default--models/BillingReports.swift +20 -0
  304. package/src/codegen/__goldens__/swift-default--models/Orders.swift +81 -0
  305. package/src/codegen/__goldens__/swift-default--users/Users.swift +204 -0
  306. package/src/codegen/__goldens__/ts-default--models/_client.ts +1319 -0
  307. package/src/codegen/__goldens__/ts-default--models/_errors.ts +90 -0
  308. package/src/codegen/__goldens__/ts-default--models/_models.ts +10 -0
  309. package/src/codegen/__goldens__/ts-default--models/_types.ts +502 -0
  310. package/src/codegen/__goldens__/ts-default--models/billing-reports.ts +29 -0
  311. package/src/codegen/__goldens__/ts-default--models/billing.ts +67 -0
  312. package/src/codegen/__goldens__/ts-default--models/index.ts +48 -0
  313. package/src/codegen/__goldens__/ts-default--models/orders.ts +80 -0
  314. package/src/codegen/__goldens__/ts-default--users/_client.ts +1319 -0
  315. package/src/codegen/__goldens__/ts-default--users/_errors.ts +90 -0
  316. package/src/codegen/__goldens__/ts-default--users/_types.ts +502 -0
  317. package/src/codegen/__goldens__/ts-default--users/index.ts +38 -0
  318. package/src/codegen/__goldens__/ts-default--users/users.ts +169 -0
  319. package/src/codegen/__goldens__/ts-external-runtime--models/_errors.ts +90 -0
  320. package/src/codegen/__goldens__/ts-external-runtime--models/_models.ts +10 -0
  321. package/src/codegen/__goldens__/ts-external-runtime--models/billing-reports.ts +29 -0
  322. package/src/codegen/__goldens__/ts-external-runtime--models/billing.ts +67 -0
  323. package/src/codegen/__goldens__/ts-external-runtime--models/index.ts +48 -0
  324. package/src/codegen/__goldens__/ts-external-runtime--models/orders.ts +80 -0
  325. package/src/codegen/__goldens__/ts-external-runtime--users/_errors.ts +90 -0
  326. package/src/codegen/__goldens__/ts-external-runtime--users/index.ts +38 -0
  327. package/src/codegen/__goldens__/ts-external-runtime--users/users.ts +169 -0
  328. package/src/codegen/__goldens__/ts-flat--models/_client.ts +1319 -0
  329. package/src/codegen/__goldens__/ts-flat--models/_errors.ts +87 -0
  330. package/src/codegen/__goldens__/ts-flat--models/_models.ts +10 -0
  331. package/src/codegen/__goldens__/ts-flat--models/_types.ts +502 -0
  332. package/src/codegen/__goldens__/ts-flat--models/billing-reports.ts +28 -0
  333. package/src/codegen/__goldens__/ts-flat--models/billing.ts +51 -0
  334. package/src/codegen/__goldens__/ts-flat--models/index.ts +42 -0
  335. package/src/codegen/__goldens__/ts-flat--models/orders.ts +73 -0
  336. package/src/codegen/__goldens__/ts-flat--users/_client.ts +1319 -0
  337. package/src/codegen/__goldens__/ts-flat--users/_errors.ts +87 -0
  338. package/src/codegen/__goldens__/ts-flat--users/_types.ts +502 -0
  339. package/src/codegen/__goldens__/ts-flat--users/index.ts +34 -0
  340. package/src/codegen/__goldens__/ts-flat--users/users.ts +126 -0
  341. package/src/codegen/__goldens__/ts-no-share-models--models/_client.ts +1319 -0
  342. package/src/codegen/__goldens__/ts-no-share-models--models/_errors.ts +90 -0
  343. package/src/codegen/__goldens__/ts-no-share-models--models/_types.ts +502 -0
  344. package/src/codegen/__goldens__/ts-no-share-models--models/billing-reports.ts +29 -0
  345. package/src/codegen/__goldens__/ts-no-share-models--models/billing.ts +111 -0
  346. package/src/codegen/__goldens__/ts-no-share-models--models/index.ts +48 -0
  347. package/src/codegen/__goldens__/ts-no-share-models--models/orders.ts +112 -0
  348. package/src/codegen/__goldens__/ts-no-share-models--users/_client.ts +1319 -0
  349. package/src/codegen/__goldens__/ts-no-share-models--users/_errors.ts +90 -0
  350. package/src/codegen/__goldens__/ts-no-share-models--users/_types.ts +502 -0
  351. package/src/codegen/__goldens__/ts-no-share-models--users/index.ts +38 -0
  352. package/src/codegen/__goldens__/ts-no-share-models--users/users.ts +169 -0
  353. package/src/codegen/__goldens__/ts-shared-models-module--models/_client.ts +1319 -0
  354. package/src/codegen/__goldens__/ts-shared-models-module--models/_errors.ts +90 -0
  355. package/src/codegen/__goldens__/ts-shared-models-module--models/_models.ts +7 -0
  356. package/src/codegen/__goldens__/ts-shared-models-module--models/_types.ts +502 -0
  357. package/src/codegen/__goldens__/ts-shared-models-module--models/billing-reports.ts +29 -0
  358. package/src/codegen/__goldens__/ts-shared-models-module--models/billing.ts +67 -0
  359. package/src/codegen/__goldens__/ts-shared-models-module--models/index.ts +48 -0
  360. package/src/codegen/__goldens__/ts-shared-models-module--models/orders.ts +80 -0
  361. package/src/codegen/bin/cli.test.ts +13 -2
  362. package/src/codegen/bin/cli.ts +181 -144
  363. package/src/codegen/bin/flag-specs.test.ts +16 -1
  364. package/src/codegen/bin/flag-specs.ts +43 -31
  365. package/src/codegen/bundle-size.test.ts +1 -1
  366. package/src/codegen/collect-models.ts +1 -1
  367. package/src/codegen/e2e.test.ts +1 -1
  368. package/src/codegen/emit/api-route.ts +184 -0
  369. package/src/codegen/emit/context.ts +32 -0
  370. package/src/codegen/emit/declarations.ts +49 -0
  371. package/src/codegen/emit/format-types.ts +232 -0
  372. package/src/codegen/emit/http-stream-route.ts +162 -0
  373. package/src/codegen/emit/route-shared.ts +104 -0
  374. package/src/codegen/emit/rpc-route.ts +49 -0
  375. package/src/codegen/emit/scope-file.ts +226 -0
  376. package/src/codegen/emit/stream-route.ts +81 -0
  377. package/src/codegen/emit-errors.integration.test.ts +2 -2
  378. package/src/codegen/emit-errors.test.ts +1 -1
  379. package/src/codegen/emit-errors.ts +1 -1
  380. package/src/codegen/emit-scope.test.ts +75 -2
  381. package/src/codegen/emit-scope.ts +15 -1048
  382. package/src/codegen/goldens.test.ts +89 -0
  383. package/src/codegen/group-routes.test.ts +1 -1
  384. package/src/codegen/group-routes.ts +1 -1
  385. package/src/codegen/pipeline.test.ts +1 -1
  386. package/src/codegen/pipeline.ts +1 -1
  387. package/src/codegen/resolve-envelope.test.ts +1 -1
  388. package/src/codegen/resolve-envelope.ts +1 -1
  389. package/src/codegen/targets/_shared/error-schemas.test.ts +1 -1
  390. package/src/codegen/targets/_shared/error-schemas.ts +1 -1
  391. package/src/codegen/targets/_shared/route-slots.test.ts +1 -1
  392. package/src/codegen/targets/_shared/route-slots.ts +1 -1
  393. package/src/codegen/targets/_shared/target-run.ts +1 -1
  394. package/src/codegen/targets/kotlin/emit-route-kotlin.test.ts +1 -1
  395. package/src/codegen/targets/kotlin/emit-route-kotlin.ts +1 -1
  396. package/src/codegen/targets/kotlin/emit-scope-kotlin.test.ts +1 -1
  397. package/src/codegen/targets/swift/access-level.test.ts +1 -1
  398. package/src/codegen/targets/swift/emit-route-swift.test.ts +1 -1
  399. package/src/codegen/targets/swift/emit-route-swift.ts +1 -1
  400. package/src/codegen/targets/swift/emit-scope-swift.test.ts +1 -1
  401. package/src/codegen/targets/ts/shared-models.test.ts +1 -1
  402. package/src/{create-http-stream.test.ts → core/create-http-stream.test.ts} +1 -1
  403. package/src/core/create-http-stream.ts +207 -0
  404. package/src/{create-http.test.ts → core/create-http.test.ts} +31 -4
  405. package/src/core/create-http.ts +126 -0
  406. package/src/{create-stream.test.ts → core/create-stream.test.ts} +28 -31
  407. package/src/core/create-stream.ts +142 -0
  408. package/src/{create.test.ts → core/create.test.ts} +25 -57
  409. package/src/core/create.ts +121 -0
  410. package/src/{stack-utils.test.ts → core/definition-site.test.ts} +14 -3
  411. package/src/{stack-utils.ts → core/definition-site.ts} +20 -23
  412. package/src/{errors.test.ts → core/errors.test.ts} +1 -1
  413. package/src/{errors.ts → core/errors.ts} +30 -28
  414. package/src/core/factory-options.test.ts +112 -0
  415. package/src/core/http-route.ts +73 -0
  416. package/src/core/internal.ts +203 -0
  417. package/src/{migration.test.ts → core/migration.test.ts} +23 -1
  418. package/src/{index.test.ts → core/procedures.test.ts} +13 -11
  419. package/src/core/procedures.ts +75 -0
  420. package/src/core/types.ts +196 -0
  421. package/src/exports.ts +60 -11
  422. package/src/schema/adapter.test.ts +58 -0
  423. package/src/schema/adapter.ts +45 -0
  424. package/src/schema/compile.test.ts +95 -0
  425. package/src/schema/compile.ts +64 -0
  426. package/src/schema/compute-schema.test.ts +222 -41
  427. package/src/schema/compute-schema.ts +145 -71
  428. package/src/schema/json-schema.ts +21 -0
  429. package/src/schema/typebox.test.ts +40 -0
  430. package/src/schema/typebox.ts +27 -0
  431. package/src/server/context.test.ts +22 -0
  432. package/src/server/context.ts +18 -0
  433. package/src/{doc-envelope.test.ts → server/doc-envelope.test.ts} +2 -2
  434. package/src/{doc-envelope.ts → server/doc-envelope.ts} +1 -1
  435. package/src/{implementations/http → server}/doc-registry.test.ts +32 -26
  436. package/src/{implementations/http → server}/doc-registry.ts +11 -7
  437. package/src/server/docs/docs.test.ts +287 -0
  438. package/src/{implementations/http/hono → server}/docs/http-doc.ts +3 -3
  439. package/src/{implementations/http/hono → server}/docs/http-stream-doc.ts +3 -3
  440. package/src/{implementations/http/hono → server}/docs/rpc-doc.ts +3 -3
  441. package/src/{implementations/http/hono → server}/docs/stream-doc.ts +3 -3
  442. package/src/server/errors/dispatch.test.ts +450 -0
  443. package/src/server/errors/dispatch.ts +189 -0
  444. package/src/{implementations/http/error-taxonomy.test.ts → server/errors/taxonomy.test.ts} +45 -39
  445. package/src/{implementations/http/error-taxonomy.ts → server/errors/taxonomy.ts} +8 -17
  446. package/src/server/index.ts +29 -0
  447. package/src/server/no-framework-imports.test.ts +43 -0
  448. package/src/server/paths.test.ts +141 -0
  449. package/src/{implementations/http/hono/path.ts → server/paths.ts} +2 -13
  450. package/src/server/request/params.test.ts +143 -0
  451. package/src/server/request/params.ts +68 -0
  452. package/src/server/request/query.test.ts +70 -0
  453. package/src/server/request/query.ts +24 -0
  454. package/src/server/sse.test.ts +113 -0
  455. package/src/server/sse.ts +117 -0
  456. package/src/{implementations → server}/types.ts +17 -16
  457. package/build/create-http-stream.d.ts +0 -58
  458. package/build/create-http-stream.js +0 -122
  459. package/build/create-http-stream.js.map +0 -1
  460. package/build/create-http-stream.test.js.map +0 -1
  461. package/build/create-http.d.ts +0 -49
  462. package/build/create-http.js +0 -108
  463. package/build/create-http.js.map +0 -1
  464. package/build/create-http.test.js.map +0 -1
  465. package/build/create-stream.d.ts +0 -35
  466. package/build/create-stream.js +0 -123
  467. package/build/create-stream.js.map +0 -1
  468. package/build/create-stream.test.js.map +0 -1
  469. package/build/create.d.ts +0 -28
  470. package/build/create.js +0 -82
  471. package/build/create.js.map +0 -1
  472. package/build/create.test.js.map +0 -1
  473. package/build/doc-envelope.js.map +0 -1
  474. package/build/doc-envelope.test.js.map +0 -1
  475. package/build/errors.js.map +0 -1
  476. package/build/errors.test.js.map +0 -1
  477. package/build/implementations/http/astro/astro-context.js.map +0 -1
  478. package/build/implementations/http/astro/create-handler.js.map +0 -1
  479. package/build/implementations/http/astro/index.js.map +0 -1
  480. package/build/implementations/http/astro/index.test.js.map +0 -1
  481. package/build/implementations/http/astro/rewrite-request.js.map +0 -1
  482. package/build/implementations/http/doc-registry.js.map +0 -1
  483. package/build/implementations/http/doc-registry.test.js.map +0 -1
  484. package/build/implementations/http/error-dispatch.d.ts +0 -76
  485. package/build/implementations/http/error-dispatch.js.map +0 -1
  486. package/build/implementations/http/error-dispatch.test.js +0 -254
  487. package/build/implementations/http/error-dispatch.test.js.map +0 -1
  488. package/build/implementations/http/error-taxonomy.js.map +0 -1
  489. package/build/implementations/http/error-taxonomy.test.js.map +0 -1
  490. package/build/implementations/http/hono/docs/http-doc.js.map +0 -1
  491. package/build/implementations/http/hono/docs/http-stream-doc.js.map +0 -1
  492. package/build/implementations/http/hono/docs/rpc-doc.js.map +0 -1
  493. package/build/implementations/http/hono/docs/stream-doc.js.map +0 -1
  494. package/build/implementations/http/hono/handlers/http-stream.js +0 -123
  495. package/build/implementations/http/hono/handlers/http-stream.js.map +0 -1
  496. package/build/implementations/http/hono/handlers/http-stream.test.js.map +0 -1
  497. package/build/implementations/http/hono/handlers/http.js +0 -110
  498. package/build/implementations/http/hono/handlers/http.js.map +0 -1
  499. package/build/implementations/http/hono/handlers/http.test.js.map +0 -1
  500. package/build/implementations/http/hono/handlers/rpc.js +0 -32
  501. package/build/implementations/http/hono/handlers/rpc.js.map +0 -1
  502. package/build/implementations/http/hono/handlers/rpc.test.js.map +0 -1
  503. package/build/implementations/http/hono/handlers/stream.d.ts +0 -23
  504. package/build/implementations/http/hono/handlers/stream.js +0 -147
  505. package/build/implementations/http/hono/handlers/stream.js.map +0 -1
  506. package/build/implementations/http/hono/handlers/stream.test.js.map +0 -1
  507. package/build/implementations/http/hono/index.js.map +0 -1
  508. package/build/implementations/http/hono/index.test.js.map +0 -1
  509. package/build/implementations/http/hono/path.js.map +0 -1
  510. package/build/implementations/http/hono/path.test.js +0 -83
  511. package/build/implementations/http/hono/path.test.js.map +0 -1
  512. package/build/implementations/http/hono/types.d.ts +0 -51
  513. package/build/implementations/http/hono/types.js.map +0 -1
  514. package/build/implementations/http/on-request-error.test.js.map +0 -1
  515. package/build/implementations/http/route-errors.test.js.map +0 -1
  516. package/build/index.d.ts +0 -175
  517. package/build/index.js +0 -47
  518. package/build/index.js.map +0 -1
  519. package/build/index.test.js.map +0 -1
  520. package/build/migration.test.js.map +0 -1
  521. package/build/schema/extract-json-schema.d.ts +0 -2
  522. package/build/schema/extract-json-schema.js +0 -12
  523. package/build/schema/extract-json-schema.js.map +0 -1
  524. package/build/schema/extract-json-schema.test.js +0 -23
  525. package/build/schema/extract-json-schema.test.js.map +0 -1
  526. package/build/schema/parser.d.ts +0 -36
  527. package/build/schema/parser.js +0 -210
  528. package/build/schema/parser.js.map +0 -1
  529. package/build/schema/parser.test.js +0 -120
  530. package/build/schema/parser.test.js.map +0 -1
  531. package/build/schema/resolve-schema-lib.d.ts +0 -12
  532. package/build/schema/resolve-schema-lib.js +0 -11
  533. package/build/schema/resolve-schema-lib.js.map +0 -1
  534. package/build/schema/resolve-schema-lib.test.js +0 -17
  535. package/build/schema/resolve-schema-lib.test.js.map +0 -1
  536. package/build/schema/types.d.ts +0 -8
  537. package/build/schema/types.js +0 -2
  538. package/build/stack-utils.d.ts +0 -25
  539. package/build/stack-utils.js.map +0 -1
  540. package/build/stack-utils.test.js.map +0 -1
  541. package/build/types.d.ts +0 -142
  542. package/build/types.js +0 -2
  543. package/build/types.js.map +0 -1
  544. package/docs/decisions/2026-06-02-monorepo-split-evaluation.md +0 -80
  545. package/docs/handoffs/2026-06-08-dx-round2-declines.md +0 -45
  546. package/docs/handoffs/ajsc-named-type-collision.md +0 -134
  547. package/docs/handoffs/ajsc-named-type-support.md +0 -181
  548. package/docs/handoffs/shared-models-auto-resolve-response.md +0 -181
  549. package/docs/npm-workspaces-migration-plan.md +0 -611
  550. package/docs/superpowers/plans/2026-04-24-doc-registry-simplification.md +0 -886
  551. package/docs/superpowers/plans/2026-04-24-kotlin-codegen-target.md +0 -1265
  552. package/docs/superpowers/plans/2026-04-25-ajsc-v7-kotlin-polish.md +0 -1993
  553. package/docs/superpowers/plans/2026-04-29-safe-result-api.md +0 -2293
  554. package/docs/superpowers/plans/2026-05-07-astro-adapter.md +0 -1391
  555. package/docs/superpowers/plans/2026-05-08-create-http.md +0 -3355
  556. package/docs/superpowers/plans/2026-05-08-hono-app-builder-convergence.md +0 -3365
  557. package/docs/superpowers/plans/2026-06-05-dx-feedback-round.md +0 -1292
  558. package/docs/superpowers/plans/2026-06-06-shared-models-convention-and-diagnostics.md +0 -659
  559. package/docs/superpowers/plans/2026-06-08-codegen-dx-surfacing.md +0 -428
  560. package/docs/superpowers/specs/2026-04-24-kotlin-swift-codegen-design.md +0 -401
  561. package/docs/superpowers/specs/2026-04-25-ajsc-v7-kotlin-polish-design.md +0 -314
  562. package/docs/superpowers/specs/2026-04-25-swift-codegen-design.md +0 -264
  563. package/docs/superpowers/specs/2026-04-29-safe-result-api-design.md +0 -324
  564. package/docs/superpowers/specs/2026-05-07-astro-adapter-design.md +0 -252
  565. package/docs/superpowers/specs/2026-05-08-create-http-design.md +0 -409
  566. package/docs/superpowers/specs/2026-05-08-hono-app-builder-convergence-design.md +0 -411
  567. package/docs/superpowers/specs/2026-06-05-dx-feedback-round-design.md +0 -285
  568. package/docs/superpowers/specs/2026-06-08-dx-feedback-round-2-design.md +0 -376
  569. package/src/create-http-stream.ts +0 -191
  570. package/src/create-http.ts +0 -210
  571. package/src/create-stream.ts +0 -228
  572. package/src/create.ts +0 -172
  573. package/src/implementations/http/README.md +0 -390
  574. package/src/implementations/http/error-dispatch.test.ts +0 -283
  575. package/src/implementations/http/error-dispatch.ts +0 -176
  576. package/src/implementations/http/hono/handlers/http-stream.ts +0 -152
  577. package/src/implementations/http/hono/handlers/http.ts +0 -145
  578. package/src/implementations/http/hono/handlers/rpc.ts +0 -54
  579. package/src/implementations/http/hono/path.test.ts +0 -96
  580. package/src/index.ts +0 -101
  581. package/src/schema/extract-json-schema.test.ts +0 -25
  582. package/src/schema/extract-json-schema.ts +0 -15
  583. package/src/schema/parser.test.ts +0 -182
  584. package/src/schema/parser.ts +0 -265
  585. package/src/schema/resolve-schema-lib.test.ts +0 -19
  586. package/src/schema/resolve-schema-lib.ts +0 -29
  587. package/src/schema/types.ts +0 -20
  588. package/src/types.ts +0 -133
  589. /package/build/{implementations/http → adapters}/astro/astro-context.d.ts +0 -0
  590. /package/build/{implementations/http → adapters}/astro/astro-context.js +0 -0
  591. /package/build/{implementations/http → adapters}/astro/create-handler.d.ts +0 -0
  592. /package/build/{implementations/http → adapters}/astro/create-handler.js +0 -0
  593. /package/build/{implementations/http → adapters}/astro/index.d.ts +0 -0
  594. /package/build/{implementations/http → adapters}/astro/index.js +0 -0
  595. /package/build/{implementations/http → adapters}/astro/index.test.d.ts +0 -0
  596. /package/build/{implementations/http → adapters}/astro/rewrite-request.d.ts +0 -0
  597. /package/build/{implementations/http → adapters}/astro/rewrite-request.js +0 -0
  598. /package/build/{create-http-stream.test.d.ts → adapters/hono/envelope-parity.test.d.ts} +0 -0
  599. /package/build/{implementations/http → adapters}/hono/handlers/http-stream.test.d.ts +0 -0
  600. /package/build/{implementations/http → adapters}/hono/handlers/http.test.d.ts +0 -0
  601. /package/build/{implementations/http → adapters}/hono/handlers/rpc.test.d.ts +0 -0
  602. /package/build/{implementations/http → adapters}/hono/handlers/stream.test.d.ts +0 -0
  603. /package/build/{implementations/http → adapters}/hono/index.test.d.ts +0 -0
  604. /package/build/{implementations/http → adapters/hono}/on-request-error.test.d.ts +0 -0
  605. /package/build/{implementations/http → adapters/hono}/route-errors.test.d.ts +0 -0
  606. /package/build/{create-http.test.d.ts → client/freeze.test.d.ts} +0 -0
  607. /package/build/{create-stream.test.d.ts → codegen/goldens.test.d.ts} +0 -0
  608. /package/build/{create.test.d.ts → core/create-http-stream.test.d.ts} +0 -0
  609. /package/build/{doc-envelope.test.d.ts → core/create-http.test.d.ts} +0 -0
  610. /package/build/{errors.test.d.ts → core/create-stream.test.d.ts} +0 -0
  611. /package/build/{implementations/http/doc-registry.test.d.ts → core/create.test.d.ts} +0 -0
  612. /package/build/{implementations/http/error-dispatch.test.d.ts → core/definition-site.test.d.ts} +0 -0
  613. /package/build/{implementations/http/error-taxonomy.test.d.ts → core/errors.test.d.ts} +0 -0
  614. /package/build/{errors.test.js → core/errors.test.js} +0 -0
  615. /package/build/{implementations/http/hono/path.test.d.ts → core/factory-options.test.d.ts} +0 -0
  616. /package/build/{migration.test.d.ts → core/migration.test.d.ts} +0 -0
  617. /package/build/{index.test.d.ts → core/procedures.test.d.ts} +0 -0
  618. /package/build/{implementations/http/hono → core}/types.js +0 -0
  619. /package/build/schema/{extract-json-schema.test.d.ts → adapter.test.d.ts} +0 -0
  620. /package/build/schema/{parser.test.d.ts → compile.test.d.ts} +0 -0
  621. /package/build/schema/{resolve-schema-lib.test.d.ts → typebox.test.d.ts} +0 -0
  622. /package/build/{stack-utils.test.d.ts → server/context.test.d.ts} +0 -0
  623. /package/build/{doc-envelope.js → server/doc-envelope.js} +0 -0
  624. /package/build/{doc-envelope.test.js → server/doc-envelope.test.js} +0 -0
  625. /package/build/{implementations → server}/types.js +0 -0
  626. /package/src/{implementations/http → adapters}/astro/README.md +0 -0
  627. /package/src/{implementations/http → adapters}/astro/astro-context.ts +0 -0
  628. /package/src/{implementations/http → adapters}/astro/create-handler.ts +0 -0
  629. /package/src/{implementations/http → adapters}/astro/index.ts +0 -0
  630. /package/src/{implementations/http → adapters}/astro/rewrite-request.ts +0 -0
@@ -0,0 +1,169 @@
1
+ // Auto-generated by ts-procedures-codegen (v8.6.0) — do not edit
2
+ // Source hash: 7b621d913616819f78563ff671bffa03
3
+ import type { ClientInstance, ProcedureCallOptions, TypedStream } from './_types'
4
+ import type { ApiErrors } from './_errors'
5
+
6
+ export namespace Users {
7
+ export namespace GetUser {
8
+ export namespace Req {
9
+ export type PathParams = { id: string; }
10
+ }
11
+
12
+ export type Req = { pathParams: Req.PathParams }
13
+
14
+ export namespace Response {
15
+ export type Address = { street: string; city: string; }
16
+ export type Body = { id: string; name: string; "created-at": string; address: Address; }
17
+ }
18
+ export type Errors = ApiErrors.NotFound
19
+ }
20
+
21
+ export namespace CreateUser {
22
+ export namespace Req {
23
+ export type Body = { kind: "guest"; displayName: string; } | { kind: "registered"; email: string; name: string; }
24
+ }
25
+
26
+ export type Req = { body: Req.Body }
27
+
28
+ export namespace Response {
29
+ export type Body = { id: string; }
30
+ }
31
+ export type Errors = ApiErrors.ValidationError
32
+ }
33
+
34
+ export namespace ListUsers {
35
+ export namespace Req {
36
+ export type Query = { status?: "active" | "inactive"; limit?: number; }
37
+ }
38
+
39
+ export type Req = { query: Req.Query }
40
+
41
+ export namespace Response {
42
+ export type Item = { id: string; name: string; }
43
+ export type Body = { items: Array<Item>; }
44
+ }
45
+ }
46
+
47
+ export namespace DownloadUser {
48
+ export namespace Req {
49
+ export type PathParams = { id: string; }
50
+ }
51
+
52
+ export type Req = { pathParams: Req.PathParams }
53
+
54
+ export namespace Response {
55
+ export type Body = { url: string; }
56
+ export type Headers = { "x-download-token": string; "content-disposition"?: string; }
57
+ }
58
+ }
59
+
60
+ export namespace WatchUsers {
61
+ export namespace Req {
62
+ export type Query = { status?: "active" | "inactive"; }
63
+ }
64
+ export type Req = { query: Req.Query }
65
+ export namespace Response {
66
+ export type Headers = { "x-stream-id": string; }
67
+ }
68
+ export type Yield = { id: string; event: "created" | "updated" | "deleted"; }
69
+ export type ReturnType = { count: number; }
70
+ }
71
+
72
+ /** Binds every callable in this scope to a configured client. */
73
+ export function bindScope(client: ClientInstance) {
74
+ return {
75
+ /**
76
+ * GET /users/:id
77
+ *
78
+ * @param options Optional per-call {@link ProcedureCallOptions} —
79
+ * `signal` (cancel on dispose), `timeout`, `headers`, `basePath`.
80
+ * @throws Declared typed errors: {@link Users.GetUser.Errors}. Narrow with
81
+ * `instanceof` on the throwing path, or call `.safe()` for a `Result`.
82
+ */
83
+ GetUser: client.bindCallableTyped<Users.GetUser.Req, Users.GetUser.Response.Body, Users.GetUser.Errors>({
84
+ name: 'GetUser',
85
+ scope: 'users',
86
+ path: '/users/:id',
87
+ method: 'GET',
88
+ kind: 'api',
89
+ }),
90
+
91
+ /**
92
+ * POST /users
93
+ *
94
+ * @param options Optional per-call {@link ProcedureCallOptions} —
95
+ * `signal` (cancel on dispose), `timeout`, `headers`, `basePath`.
96
+ * @throws Declared typed errors: {@link Users.CreateUser.Errors}. Narrow with
97
+ * `instanceof` on the throwing path, or call `.safe()` for a `Result`.
98
+ */
99
+ CreateUser: client.bindCallableTyped<Users.CreateUser.Req, Users.CreateUser.Response.Body, Users.CreateUser.Errors>({
100
+ name: 'CreateUser',
101
+ scope: 'users',
102
+ path: '/users',
103
+ method: 'POST',
104
+ kind: 'api',
105
+ }),
106
+
107
+ /**
108
+ * GET /users
109
+ *
110
+ * @param options Optional per-call {@link ProcedureCallOptions} —
111
+ * `signal` (cancel on dispose), `timeout`, `headers`, `basePath`.
112
+ */
113
+ ListUsers: client.bindCallable<Users.ListUsers.Req, Users.ListUsers.Response.Body>({
114
+ name: 'ListUsers',
115
+ scope: 'users',
116
+ path: '/users',
117
+ method: 'GET',
118
+ kind: 'api',
119
+ }),
120
+
121
+ /**
122
+ * GET /users/:id/download
123
+ *
124
+ * @param options Optional per-call {@link ProcedureCallOptions} —
125
+ * `signal` (cancel on dispose), `timeout`, `headers`, `basePath`.
126
+ */
127
+ DownloadUser: client.bindCallable<Users.DownloadUser.Req, { body: Users.DownloadUser.Response.Body; headers: Users.DownloadUser.Response.Headers }>({
128
+ name: 'DownloadUser',
129
+ scope: 'users',
130
+ path: '/users/:id/download',
131
+ method: 'GET',
132
+ kind: 'api',
133
+ responseHeadersDeclared: true,
134
+ }),
135
+
136
+ /**
137
+ * GET /users/watch
138
+ *
139
+ * @param options Optional per-call {@link ProcedureCallOptions} —
140
+ * `signal` (cancel on dispose), `timeout`, `headers`, `basePath`.
141
+ */
142
+ WatchUsers(req: Users.WatchUsers.Req, options?: ProcedureCallOptions): TypedStream<Users.WatchUsers.Yield, Users.WatchUsers.ReturnType> {
143
+ return client.stream<Users.WatchUsers.Yield, Users.WatchUsers.ReturnType>({
144
+ name: 'WatchUsers',
145
+ scope: 'users',
146
+ path: '/users/watch',
147
+ method: 'GET',
148
+ kind: 'http-stream',
149
+ streamMode: 'sse',
150
+ params: req,
151
+ }, options)
152
+ },
153
+
154
+ /**
155
+ * GET /users/heartbeat
156
+ *
157
+ * @param options Optional per-call {@link ProcedureCallOptions} —
158
+ * `signal` (cancel on dispose), `timeout`, `headers`, `basePath`.
159
+ */
160
+ Heartbeat: client.bindCallable<void, void>({
161
+ name: 'Heartbeat',
162
+ scope: 'users',
163
+ path: '/users/heartbeat',
164
+ method: 'GET',
165
+ kind: 'api',
166
+ }),
167
+ }
168
+ }
169
+ }
@@ -0,0 +1,90 @@
1
+ // Auto-generated by ts-procedures-codegen (v8.6.0) — do not edit
2
+ // Source hash: cb5f789247045d83e6eb2611821116bb
3
+
4
+ export namespace ApiErrors {
5
+ /** Base class for every generated error in this service. Catch with `instanceof`. */
6
+ export class ApiProcedureError<TBody = unknown> extends Error {
7
+ readonly status: number
8
+ readonly procedureName: string
9
+ readonly scope: string
10
+ readonly body: TBody
11
+ constructor(args: {
12
+ name: string
13
+ message: string
14
+ status: number
15
+ procedureName: string
16
+ scope: string
17
+ body: TBody
18
+ }) {
19
+ super(args.message)
20
+ this.name = args.name
21
+ this.status = args.status
22
+ this.procedureName = args.procedureName
23
+ this.scope = args.scope
24
+ this.body = args.body
25
+ Object.setPrototypeOf(this, new.target.prototype)
26
+ }
27
+ }
28
+
29
+ /** Response body for NotFound. */
30
+ export type NotFoundBody = { name: "NotFound"; message: string; }
31
+
32
+ /** Resource not found (HTTP 404) */
33
+ export class NotFound extends ApiProcedureError<NotFoundBody> {
34
+ static readonly errorName = 'NotFound' as const
35
+ static readonly statusCode = 404
36
+ static fromResponse(
37
+ body: NotFoundBody,
38
+ meta: { status: number; procedureName: string; scope: string }
39
+ ): NotFound {
40
+ const message =
41
+ body && typeof (body as { message?: unknown }).message === 'string'
42
+ ? (body as { message: string }).message
43
+ : 'NotFound'
44
+ return new NotFound({
45
+ name: 'NotFound',
46
+ message,
47
+ status: meta.status,
48
+ procedureName: meta.procedureName,
49
+ scope: meta.scope,
50
+ body,
51
+ })
52
+ }
53
+ }
54
+
55
+ /** Response body for OrderRejected. */
56
+ export type OrderRejectedBody = { name: "OrderRejected"; message: string; reason: "out-of-stock" | "fraud" | "limit"; }
57
+
58
+ /** The order could not be accepted (HTTP 422) */
59
+ export class OrderRejected extends ApiProcedureError<OrderRejectedBody> {
60
+ static readonly errorName = 'OrderRejected' as const
61
+ static readonly statusCode = 422
62
+ static fromResponse(
63
+ body: OrderRejectedBody,
64
+ meta: { status: number; procedureName: string; scope: string }
65
+ ): OrderRejected {
66
+ const message =
67
+ body && typeof (body as { message?: unknown }).message === 'string'
68
+ ? (body as { message: string }).message
69
+ : 'OrderRejected'
70
+ return new OrderRejected({
71
+ name: 'OrderRejected',
72
+ message,
73
+ status: meta.status,
74
+ procedureName: meta.procedureName,
75
+ scope: meta.scope,
76
+ body,
77
+ })
78
+ }
79
+ }
80
+
81
+ /** Union of every generated error in this service. */
82
+ export type ApiProcedureErrorUnion = NotFound | OrderRejected
83
+
84
+ /** Runtime registry consumed by the client to dispatch by `body.name`. */
85
+ export const ApiErrorRegistry = {
86
+ NotFound,
87
+ OrderRejected,
88
+ } as const
89
+
90
+ }
@@ -0,0 +1,10 @@
1
+ // Auto-generated by ts-procedures-codegen (v8.6.0) — do not edit
2
+ // Source hash: cb5f789247045d83e6eb2611821116bb
3
+
4
+ export type Customer = { id: string; name: string; balance: Money; }
5
+
6
+ export type Money = { amount: number; currency: string; }
7
+
8
+ export type OrderEvent = { orderId: string; status: "created" | "paid" | "shipped"; total: Money; }
9
+
10
+ export type Invoice = { id: string; total: Money; customer: Customer; }
@@ -0,0 +1,29 @@
1
+ // Auto-generated by ts-procedures-codegen (v8.6.0) — do not edit
2
+ // Source hash: cb5f789247045d83e6eb2611821116bb
3
+ import type { ClientInstance, ProcedureCallOptions } from 'ts-procedures/client'
4
+
5
+ export namespace BillingReports {
6
+ export namespace GenerateReport {
7
+ export type Params = { month: string; }
8
+ export type Response = { url: string; }
9
+ }
10
+
11
+ /** Binds every callable in this scope to a configured client. */
12
+ export function bindScope(client: ClientInstance) {
13
+ return {
14
+ /**
15
+ * POST /billing-reports/generate-report/1
16
+ *
17
+ * @param options Optional per-call {@link ProcedureCallOptions} —
18
+ * `signal` (cancel on dispose), `timeout`, `headers`, `basePath`.
19
+ */
20
+ GenerateReport: client.bindCallable<BillingReports.GenerateReport.Params, BillingReports.GenerateReport.Response>({
21
+ name: 'GenerateReport',
22
+ scope: 'billing-reports',
23
+ path: '/billing-reports/generate-report/1',
24
+ method: 'post',
25
+ kind: 'rpc',
26
+ }),
27
+ }
28
+ }
29
+ }
@@ -0,0 +1,67 @@
1
+ // Auto-generated by ts-procedures-codegen (v8.6.0) — do not edit
2
+ // Source hash: cb5f789247045d83e6eb2611821116bb
3
+ import type { ClientInstance, ProcedureCallOptions } from 'ts-procedures/client'
4
+ import type { ApiErrors } from './_errors'
5
+ import type { Invoice } from './_models'
6
+
7
+ export namespace Billing {
8
+ export namespace GetInvoice {
9
+ export namespace Req {
10
+ export type PathParams = { id: string; }
11
+ }
12
+
13
+ export type Req = { pathParams: Req.PathParams }
14
+
15
+ export namespace Response {
16
+ export type Body = Invoice
17
+ }
18
+ export type Errors = ApiErrors.NotFound
19
+ }
20
+
21
+ export namespace ListInvoices {
22
+ export namespace Req {
23
+ export type Query = { status?: "open" | "paid"; limit?: number; }
24
+ }
25
+
26
+ export type Req = { query: Req.Query }
27
+
28
+ export namespace Response {
29
+ export type Body = { items: Array<Invoice>; }
30
+ }
31
+ }
32
+
33
+ /** Binds every callable in this scope to a configured client. */
34
+ export function bindScope(client: ClientInstance) {
35
+ return {
36
+ /**
37
+ * GET /billing/invoices/:id
38
+ *
39
+ * @param options Optional per-call {@link ProcedureCallOptions} —
40
+ * `signal` (cancel on dispose), `timeout`, `headers`, `basePath`.
41
+ * @throws Declared typed errors: {@link Billing.GetInvoice.Errors}. Narrow with
42
+ * `instanceof` on the throwing path, or call `.safe()` for a `Result`.
43
+ */
44
+ GetInvoice: client.bindCallableTyped<Billing.GetInvoice.Req, Billing.GetInvoice.Response.Body, Billing.GetInvoice.Errors>({
45
+ name: 'GetInvoice',
46
+ scope: 'billing',
47
+ path: '/billing/invoices/:id',
48
+ method: 'GET',
49
+ kind: 'api',
50
+ }),
51
+
52
+ /**
53
+ * GET /billing/invoices
54
+ *
55
+ * @param options Optional per-call {@link ProcedureCallOptions} —
56
+ * `signal` (cancel on dispose), `timeout`, `headers`, `basePath`.
57
+ */
58
+ ListInvoices: client.bindCallable<Billing.ListInvoices.Req, Billing.ListInvoices.Response.Body>({
59
+ name: 'ListInvoices',
60
+ scope: 'billing',
61
+ path: '/billing/invoices',
62
+ method: 'GET',
63
+ kind: 'api',
64
+ }),
65
+ }
66
+ }
67
+ }
@@ -0,0 +1,48 @@
1
+ // Auto-generated by ts-procedures-codegen (v8.6.0) — do not edit
2
+ // Source hash: cb5f789247045d83e6eb2611821116bb
3
+ import { createClient } from 'ts-procedures/client'
4
+ import type { ClientInstance, CreateClientConfig } from 'ts-procedures/client'
5
+ import * as _orders from './orders'
6
+ import * as _billing from './billing'
7
+ import * as _billingReports from './billing-reports'
8
+ import * as _errorsModule from './_errors'
9
+
10
+ export namespace Api {
11
+ export import Orders = _orders.Orders
12
+ export import Billing = _billing.Billing
13
+ export import BillingReports = _billingReports.BillingReports
14
+ export import Errors = _errorsModule.ApiErrors
15
+ }
16
+
17
+ export function createApiBindings(client: ClientInstance) {
18
+ return {
19
+ orders: _orders.Orders.bindScope(client),
20
+ billing: _billing.Billing.bindScope(client),
21
+ billingReports: _billingReports.BillingReports.bindScope(client),
22
+ }
23
+ }
24
+
25
+ /** Full typed client surface — every scope of `Api`. */
26
+ export type ApiClient = ReturnType<typeof createApiBindings>
27
+ /** Narrow port for the `orders` scope — inject as a DI seam without casting the aggregate client. */
28
+ export type OrdersClient = ApiClient['orders']
29
+ /** Narrow port for the `billing` scope — inject as a DI seam without casting the aggregate client. */
30
+ export type BillingClient = ApiClient['billing']
31
+ /** Narrow port for the `billingReports` scope — inject as a DI seam without casting the aggregate client. */
32
+ export type BillingReportsClient = ApiClient['billingReports']
33
+
34
+ /**
35
+ * Creates a typed client for this service with the generated error
36
+ * registry pre-configured. Non-2xx responses whose body `name` matches
37
+ * a registered error are thrown as typed class instances instead of
38
+ * generic `ClientHttpError`s.
39
+ */
40
+ export function createApiClient(
41
+ config: Omit<CreateClientConfig<ReturnType<typeof createApiBindings>>, 'scopes' | 'errorRegistry'>
42
+ ) {
43
+ return createClient({
44
+ ...config,
45
+ errorRegistry: _errorsModule.ApiErrors.ApiErrorRegistry,
46
+ scopes: (client) => createApiBindings(client),
47
+ })
48
+ }
@@ -0,0 +1,80 @@
1
+ // Auto-generated by ts-procedures-codegen (v8.6.0) — do not edit
2
+ // Source hash: cb5f789247045d83e6eb2611821116bb
3
+ import type { ClientInstance, ProcedureCallOptions, TypedStream } from 'ts-procedures/client'
4
+ import type { ApiErrors } from './_errors'
5
+ import type { Customer, Money, OrderEvent } from './_models'
6
+
7
+ export namespace Orders {
8
+ export namespace GetOrder {
9
+ export type Params = { orderId: string; }
10
+ export type Response = Customer
11
+ export type Errors = ApiErrors.OrderRejected
12
+ }
13
+
14
+ export namespace SubmitOrder {
15
+ export type Params = { orderId: string; total: Money; }
16
+ export type Response = { ok: boolean; }
17
+ export type Errors = ApiErrors.OrderRejected
18
+ }
19
+
20
+ export namespace WatchOrders {
21
+ export type Params = { orderId: string; }
22
+ export type Yield = OrderEvent
23
+ export type Return = { total: number; }
24
+ }
25
+
26
+ /** Binds every callable in this scope to a configured client. */
27
+ export function bindScope(client: ClientInstance) {
28
+ return {
29
+ /**
30
+ * POST /orders/get-order/1
31
+ *
32
+ * @param options Optional per-call {@link ProcedureCallOptions} —
33
+ * `signal` (cancel on dispose), `timeout`, `headers`, `basePath`.
34
+ * @throws Declared typed errors: {@link Orders.GetOrder.Errors}. Narrow with
35
+ * `instanceof` on the throwing path, or call `.safe()` for a `Result`.
36
+ */
37
+ GetOrder: client.bindCallableTyped<Orders.GetOrder.Params, Orders.GetOrder.Response, Orders.GetOrder.Errors>({
38
+ name: 'GetOrder',
39
+ scope: 'orders',
40
+ path: '/orders/get-order/1',
41
+ method: 'post',
42
+ kind: 'rpc',
43
+ }),
44
+
45
+ /**
46
+ * POST /orders/submit-order/1
47
+ *
48
+ * @param options Optional per-call {@link ProcedureCallOptions} —
49
+ * `signal` (cancel on dispose), `timeout`, `headers`, `basePath`.
50
+ * @throws Declared typed errors: {@link Orders.SubmitOrder.Errors}. Narrow with
51
+ * `instanceof` on the throwing path, or call `.safe()` for a `Result`.
52
+ */
53
+ SubmitOrder: client.bindCallableTyped<Orders.SubmitOrder.Params, Orders.SubmitOrder.Response, Orders.SubmitOrder.Errors>({
54
+ name: 'SubmitOrder',
55
+ scope: 'orders',
56
+ path: '/orders/submit-order/1',
57
+ method: 'post',
58
+ kind: 'rpc',
59
+ }),
60
+
61
+ /**
62
+ * POST|GET /orders/watch-orders/1
63
+ *
64
+ * @param options Optional per-call {@link ProcedureCallOptions} —
65
+ * `signal` (cancel on dispose), `timeout`, `headers`, `basePath`.
66
+ */
67
+ WatchOrders(params: Orders.WatchOrders.Params, options?: ProcedureCallOptions): TypedStream<Orders.WatchOrders.Yield, Orders.WatchOrders.Return> {
68
+ return client.stream<Orders.WatchOrders.Yield, Orders.WatchOrders.Return>({
69
+ name: 'WatchOrders',
70
+ scope: 'orders',
71
+ path: '/orders/watch-orders/1',
72
+ method: 'post',
73
+ kind: 'stream',
74
+ streamMode: 'sse',
75
+ params,
76
+ }, options)
77
+ },
78
+ }
79
+ }
80
+ }
@@ -0,0 +1,90 @@
1
+ // Auto-generated by ts-procedures-codegen (v8.6.0) — do not edit
2
+ // Source hash: 7b621d913616819f78563ff671bffa03
3
+
4
+ export namespace ApiErrors {
5
+ /** Base class for every generated error in this service. Catch with `instanceof`. */
6
+ export class ApiProcedureError<TBody = unknown> extends Error {
7
+ readonly status: number
8
+ readonly procedureName: string
9
+ readonly scope: string
10
+ readonly body: TBody
11
+ constructor(args: {
12
+ name: string
13
+ message: string
14
+ status: number
15
+ procedureName: string
16
+ scope: string
17
+ body: TBody
18
+ }) {
19
+ super(args.message)
20
+ this.name = args.name
21
+ this.status = args.status
22
+ this.procedureName = args.procedureName
23
+ this.scope = args.scope
24
+ this.body = args.body
25
+ Object.setPrototypeOf(this, new.target.prototype)
26
+ }
27
+ }
28
+
29
+ /** Response body for NotFound. */
30
+ export type NotFoundBody = { name: "NotFound"; message: string; }
31
+
32
+ /** Resource not found (HTTP 404) */
33
+ export class NotFound extends ApiProcedureError<NotFoundBody> {
34
+ static readonly errorName = 'NotFound' as const
35
+ static readonly statusCode = 404
36
+ static fromResponse(
37
+ body: NotFoundBody,
38
+ meta: { status: number; procedureName: string; scope: string }
39
+ ): NotFound {
40
+ const message =
41
+ body && typeof (body as { message?: unknown }).message === 'string'
42
+ ? (body as { message: string }).message
43
+ : 'NotFound'
44
+ return new NotFound({
45
+ name: 'NotFound',
46
+ message,
47
+ status: meta.status,
48
+ procedureName: meta.procedureName,
49
+ scope: meta.scope,
50
+ body,
51
+ })
52
+ }
53
+ }
54
+
55
+ /** Response body for ValidationError. */
56
+ export type ValidationErrorBody = { name: "ValidationError"; message: string; field?: string; }
57
+
58
+ /** Input failed validation (HTTP 400) */
59
+ export class ValidationError extends ApiProcedureError<ValidationErrorBody> {
60
+ static readonly errorName = 'ValidationError' as const
61
+ static readonly statusCode = 400
62
+ static fromResponse(
63
+ body: ValidationErrorBody,
64
+ meta: { status: number; procedureName: string; scope: string }
65
+ ): ValidationError {
66
+ const message =
67
+ body && typeof (body as { message?: unknown }).message === 'string'
68
+ ? (body as { message: string }).message
69
+ : 'ValidationError'
70
+ return new ValidationError({
71
+ name: 'ValidationError',
72
+ message,
73
+ status: meta.status,
74
+ procedureName: meta.procedureName,
75
+ scope: meta.scope,
76
+ body,
77
+ })
78
+ }
79
+ }
80
+
81
+ /** Union of every generated error in this service. */
82
+ export type ApiProcedureErrorUnion = NotFound | ValidationError
83
+
84
+ /** Runtime registry consumed by the client to dispatch by `body.name`. */
85
+ export const ApiErrorRegistry = {
86
+ NotFound,
87
+ ValidationError,
88
+ } as const
89
+
90
+ }
@@ -0,0 +1,38 @@
1
+ // Auto-generated by ts-procedures-codegen (v8.6.0) — do not edit
2
+ // Source hash: 7b621d913616819f78563ff671bffa03
3
+ import { createClient } from 'ts-procedures/client'
4
+ import type { ClientInstance, CreateClientConfig } from 'ts-procedures/client'
5
+ import * as _users from './users'
6
+ import * as _errorsModule from './_errors'
7
+
8
+ export namespace Api {
9
+ export import Users = _users.Users
10
+ export import Errors = _errorsModule.ApiErrors
11
+ }
12
+
13
+ export function createApiBindings(client: ClientInstance) {
14
+ return {
15
+ users: _users.Users.bindScope(client),
16
+ }
17
+ }
18
+
19
+ /** Full typed client surface — every scope of `Api`. */
20
+ export type ApiClient = ReturnType<typeof createApiBindings>
21
+ /** Narrow port for the `users` scope — inject as a DI seam without casting the aggregate client. */
22
+ export type UsersClient = ApiClient['users']
23
+
24
+ /**
25
+ * Creates a typed client for this service with the generated error
26
+ * registry pre-configured. Non-2xx responses whose body `name` matches
27
+ * a registered error are thrown as typed class instances instead of
28
+ * generic `ClientHttpError`s.
29
+ */
30
+ export function createApiClient(
31
+ config: Omit<CreateClientConfig<ReturnType<typeof createApiBindings>>, 'scopes' | 'errorRegistry'>
32
+ ) {
33
+ return createClient({
34
+ ...config,
35
+ errorRegistry: _errorsModule.ApiErrors.ApiErrorRegistry,
36
+ scopes: (client) => createApiBindings(client),
37
+ })
38
+ }