ts-procedures 5.10.0 → 5.10.2

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 (233) hide show
  1. package/agent_config/bin/postinstall.mjs +3 -3
  2. package/agent_config/bin/setup.mjs +22 -11
  3. package/agent_config/claude-code/agents/ts-procedures-architect.md +2 -2
  4. package/agent_config/claude-code/skills/{guide → ts-procedures}/SKILL.md +1 -1
  5. package/agent_config/claude-code/skills/{review → ts-procedures-review}/SKILL.md +3 -3
  6. package/agent_config/claude-code/skills/{scaffold → ts-procedures-scaffold}/SKILL.md +2 -2
  7. package/agent_config/lib/install-claude.mjs +35 -87
  8. package/build/src/client/call.d.ts +14 -0
  9. package/build/src/client/call.js +47 -0
  10. package/build/src/client/call.js.map +1 -0
  11. package/build/src/client/call.test.d.ts +1 -0
  12. package/build/src/client/call.test.js +124 -0
  13. package/build/src/client/call.test.js.map +1 -0
  14. package/build/src/client/errors.d.ts +25 -0
  15. package/build/src/client/errors.js +33 -0
  16. package/build/src/client/errors.js.map +1 -0
  17. package/build/src/client/errors.test.d.ts +1 -0
  18. package/build/src/client/errors.test.js +41 -0
  19. package/build/src/client/errors.test.js.map +1 -0
  20. package/build/src/client/fetch-adapter.d.ts +12 -0
  21. package/build/src/client/fetch-adapter.js +156 -0
  22. package/build/src/client/fetch-adapter.js.map +1 -0
  23. package/build/src/client/fetch-adapter.test.d.ts +1 -0
  24. package/build/src/client/fetch-adapter.test.js +271 -0
  25. package/build/src/client/fetch-adapter.test.js.map +1 -0
  26. package/build/src/client/hooks.d.ts +17 -0
  27. package/build/src/client/hooks.js +40 -0
  28. package/build/src/client/hooks.js.map +1 -0
  29. package/build/src/client/hooks.test.d.ts +1 -0
  30. package/build/src/client/hooks.test.js +163 -0
  31. package/build/src/client/hooks.test.js.map +1 -0
  32. package/build/src/client/index.d.ts +22 -0
  33. package/build/src/client/index.js +67 -0
  34. package/build/src/client/index.js.map +1 -0
  35. package/build/src/client/index.test.d.ts +1 -0
  36. package/build/src/client/index.test.js +231 -0
  37. package/build/src/client/index.test.js.map +1 -0
  38. package/build/src/client/request-builder.d.ts +13 -0
  39. package/build/src/client/request-builder.js +53 -0
  40. package/build/src/client/request-builder.js.map +1 -0
  41. package/build/src/client/request-builder.test.d.ts +1 -0
  42. package/build/src/client/request-builder.test.js +160 -0
  43. package/build/src/client/request-builder.test.js.map +1 -0
  44. package/build/src/client/stream.d.ts +27 -0
  45. package/build/src/client/stream.js +118 -0
  46. package/build/src/client/stream.js.map +1 -0
  47. package/build/src/client/stream.test.d.ts +1 -0
  48. package/build/src/client/stream.test.js +228 -0
  49. package/build/src/client/stream.test.js.map +1 -0
  50. package/build/src/client/types.d.ts +78 -0
  51. package/build/src/client/types.js +3 -0
  52. package/build/src/client/types.js.map +1 -0
  53. package/build/src/codegen/bin/cli.d.ts +45 -0
  54. package/build/src/codegen/bin/cli.js +246 -0
  55. package/build/src/codegen/bin/cli.js.map +1 -0
  56. package/build/src/codegen/bin/cli.test.d.ts +1 -0
  57. package/build/src/codegen/bin/cli.test.js +220 -0
  58. package/build/src/codegen/bin/cli.test.js.map +1 -0
  59. package/build/src/codegen/constants.d.ts +1 -0
  60. package/build/src/codegen/constants.js +2 -0
  61. package/build/src/codegen/constants.js.map +1 -0
  62. package/build/src/codegen/e2e.test.d.ts +1 -0
  63. package/build/src/codegen/e2e.test.js +464 -0
  64. package/build/src/codegen/e2e.test.js.map +1 -0
  65. package/build/src/codegen/emit-client-runtime.d.ts +9 -0
  66. package/build/src/codegen/emit-client-runtime.js +99 -0
  67. package/build/src/codegen/emit-client-runtime.js.map +1 -0
  68. package/build/src/codegen/emit-client-runtime.test.d.ts +1 -0
  69. package/build/src/codegen/emit-client-runtime.test.js +78 -0
  70. package/build/src/codegen/emit-client-runtime.test.js.map +1 -0
  71. package/build/src/codegen/emit-client-types.d.ts +8 -0
  72. package/build/src/codegen/emit-client-types.js +25 -0
  73. package/build/src/codegen/emit-client-types.js.map +1 -0
  74. package/build/src/codegen/emit-client-types.test.d.ts +1 -0
  75. package/build/src/codegen/emit-client-types.test.js +33 -0
  76. package/build/src/codegen/emit-client-types.test.js.map +1 -0
  77. package/build/src/codegen/emit-errors.d.ts +19 -0
  78. package/build/src/codegen/emit-errors.js +59 -0
  79. package/build/src/codegen/emit-errors.js.map +1 -0
  80. package/build/src/codegen/emit-errors.test.d.ts +1 -0
  81. package/build/src/codegen/emit-errors.test.js +175 -0
  82. package/build/src/codegen/emit-errors.test.js.map +1 -0
  83. package/build/src/codegen/emit-index.d.ts +12 -0
  84. package/build/src/codegen/emit-index.js +41 -0
  85. package/build/src/codegen/emit-index.js.map +1 -0
  86. package/build/src/codegen/emit-index.test.d.ts +1 -0
  87. package/build/src/codegen/emit-index.test.js +106 -0
  88. package/build/src/codegen/emit-index.test.js.map +1 -0
  89. package/build/src/codegen/emit-scope.d.ts +15 -0
  90. package/build/src/codegen/emit-scope.js +299 -0
  91. package/build/src/codegen/emit-scope.js.map +1 -0
  92. package/build/src/codegen/emit-scope.test.d.ts +1 -0
  93. package/build/src/codegen/emit-scope.test.js +559 -0
  94. package/build/src/codegen/emit-scope.test.js.map +1 -0
  95. package/build/src/codegen/emit-types.d.ts +43 -0
  96. package/build/src/codegen/emit-types.js +111 -0
  97. package/build/src/codegen/emit-types.js.map +1 -0
  98. package/build/src/codegen/emit-types.test.d.ts +1 -0
  99. package/build/src/codegen/emit-types.test.js +184 -0
  100. package/build/src/codegen/emit-types.test.js.map +1 -0
  101. package/build/src/codegen/group-routes.d.ts +23 -0
  102. package/build/src/codegen/group-routes.js +46 -0
  103. package/build/src/codegen/group-routes.js.map +1 -0
  104. package/build/src/codegen/group-routes.test.d.ts +1 -0
  105. package/build/src/codegen/group-routes.test.js +131 -0
  106. package/build/src/codegen/group-routes.test.js.map +1 -0
  107. package/build/src/codegen/index.d.ts +15 -0
  108. package/build/src/codegen/index.js +16 -0
  109. package/build/src/codegen/index.js.map +1 -0
  110. package/build/src/codegen/naming.d.ts +7 -0
  111. package/build/src/codegen/naming.js +21 -0
  112. package/build/src/codegen/naming.js.map +1 -0
  113. package/build/src/codegen/naming.test.d.ts +1 -0
  114. package/build/src/codegen/naming.test.js +40 -0
  115. package/build/src/codegen/naming.test.js.map +1 -0
  116. package/build/src/codegen/pipeline.d.ts +17 -0
  117. package/build/src/codegen/pipeline.js +78 -0
  118. package/build/src/codegen/pipeline.js.map +1 -0
  119. package/build/src/codegen/pipeline.test.d.ts +1 -0
  120. package/build/src/codegen/pipeline.test.js +269 -0
  121. package/build/src/codegen/pipeline.test.js.map +1 -0
  122. package/build/src/codegen/resolve-envelope.d.ts +7 -0
  123. package/build/src/codegen/resolve-envelope.js +46 -0
  124. package/build/src/codegen/resolve-envelope.js.map +1 -0
  125. package/build/src/codegen/resolve-envelope.test.d.ts +1 -0
  126. package/build/src/codegen/resolve-envelope.test.js +69 -0
  127. package/build/src/codegen/resolve-envelope.test.js.map +1 -0
  128. package/build/src/errors.d.ts +33 -0
  129. package/build/src/errors.js +91 -0
  130. package/build/src/errors.js.map +1 -0
  131. package/build/src/errors.test.d.ts +1 -0
  132. package/build/src/errors.test.js +122 -0
  133. package/build/src/errors.test.js.map +1 -0
  134. package/build/src/exports.d.ts +7 -0
  135. package/build/src/exports.js +8 -0
  136. package/build/src/exports.js.map +1 -0
  137. package/build/src/implementations/http/doc-registry.d.ts +12 -0
  138. package/build/src/implementations/http/doc-registry.js +114 -0
  139. package/build/src/implementations/http/doc-registry.js.map +1 -0
  140. package/build/src/implementations/http/doc-registry.test.d.ts +1 -0
  141. package/build/src/implementations/http/doc-registry.test.js +347 -0
  142. package/build/src/implementations/http/doc-registry.test.js.map +1 -0
  143. package/build/src/implementations/http/express-rpc/index.d.ts +94 -0
  144. package/build/src/implementations/http/express-rpc/index.js +185 -0
  145. package/build/src/implementations/http/express-rpc/index.js.map +1 -0
  146. package/build/src/implementations/http/express-rpc/index.test.d.ts +1 -0
  147. package/build/src/implementations/http/express-rpc/index.test.js +684 -0
  148. package/build/src/implementations/http/express-rpc/index.test.js.map +1 -0
  149. package/build/src/implementations/http/express-rpc/types.d.ts +11 -0
  150. package/build/src/implementations/http/express-rpc/types.js +2 -0
  151. package/build/src/implementations/http/express-rpc/types.js.map +1 -0
  152. package/build/src/implementations/http/hono-api/index.d.ts +102 -0
  153. package/build/src/implementations/http/hono-api/index.js +341 -0
  154. package/build/src/implementations/http/hono-api/index.js.map +1 -0
  155. package/build/src/implementations/http/hono-api/index.test.d.ts +1 -0
  156. package/build/src/implementations/http/hono-api/index.test.js +992 -0
  157. package/build/src/implementations/http/hono-api/index.test.js.map +1 -0
  158. package/build/src/implementations/http/hono-api/types.d.ts +13 -0
  159. package/build/src/implementations/http/hono-api/types.js +2 -0
  160. package/build/src/implementations/http/hono-api/types.js.map +1 -0
  161. package/build/src/implementations/http/hono-rpc/index.d.ts +92 -0
  162. package/build/src/implementations/http/hono-rpc/index.js +161 -0
  163. package/build/src/implementations/http/hono-rpc/index.js.map +1 -0
  164. package/build/src/implementations/http/hono-rpc/index.test.d.ts +1 -0
  165. package/build/src/implementations/http/hono-rpc/index.test.js +803 -0
  166. package/build/src/implementations/http/hono-rpc/index.test.js.map +1 -0
  167. package/build/src/implementations/http/hono-rpc/types.d.ts +11 -0
  168. package/build/src/implementations/http/hono-rpc/types.js +2 -0
  169. package/build/src/implementations/http/hono-rpc/types.js.map +1 -0
  170. package/build/src/implementations/http/hono-stream/index.d.ts +120 -0
  171. package/build/src/implementations/http/hono-stream/index.js +309 -0
  172. package/build/src/implementations/http/hono-stream/index.js.map +1 -0
  173. package/build/src/implementations/http/hono-stream/index.test.d.ts +1 -0
  174. package/build/src/implementations/http/hono-stream/index.test.js +1356 -0
  175. package/build/src/implementations/http/hono-stream/index.test.js.map +1 -0
  176. package/build/src/implementations/http/hono-stream/types.d.ts +15 -0
  177. package/build/src/implementations/http/hono-stream/types.js +2 -0
  178. package/build/src/implementations/http/hono-stream/types.js.map +1 -0
  179. package/build/src/implementations/types.d.ts +142 -0
  180. package/build/src/implementations/types.js +2 -0
  181. package/build/src/implementations/types.js.map +1 -0
  182. package/build/src/index.d.ts +165 -0
  183. package/build/src/index.js +253 -0
  184. package/build/src/index.js.map +1 -0
  185. package/build/src/index.test.d.ts +1 -0
  186. package/build/src/index.test.js +890 -0
  187. package/build/src/index.test.js.map +1 -0
  188. package/build/src/schema/compute-schema.d.ts +35 -0
  189. package/build/src/schema/compute-schema.js +41 -0
  190. package/build/src/schema/compute-schema.js.map +1 -0
  191. package/build/src/schema/compute-schema.test.d.ts +1 -0
  192. package/build/src/schema/compute-schema.test.js +107 -0
  193. package/build/src/schema/compute-schema.test.js.map +1 -0
  194. package/build/src/schema/extract-json-schema.d.ts +2 -0
  195. package/build/src/schema/extract-json-schema.js +12 -0
  196. package/build/src/schema/extract-json-schema.js.map +1 -0
  197. package/build/src/schema/extract-json-schema.test.d.ts +1 -0
  198. package/build/src/schema/extract-json-schema.test.js +23 -0
  199. package/build/src/schema/extract-json-schema.test.js.map +1 -0
  200. package/build/src/schema/parser.d.ts +28 -0
  201. package/build/src/schema/parser.js +170 -0
  202. package/build/src/schema/parser.js.map +1 -0
  203. package/build/src/schema/parser.test.d.ts +1 -0
  204. package/build/src/schema/parser.test.js +120 -0
  205. package/build/src/schema/parser.test.js.map +1 -0
  206. package/build/src/schema/resolve-schema-lib.d.ts +12 -0
  207. package/build/src/schema/resolve-schema-lib.js +11 -0
  208. package/build/src/schema/resolve-schema-lib.js.map +1 -0
  209. package/build/src/schema/resolve-schema-lib.test.d.ts +1 -0
  210. package/build/src/schema/resolve-schema-lib.test.js +17 -0
  211. package/build/src/schema/resolve-schema-lib.test.js.map +1 -0
  212. package/build/src/schema/types.d.ts +8 -0
  213. package/build/src/schema/types.js +2 -0
  214. package/build/src/schema/types.js.map +1 -0
  215. package/build/src/stack-utils.d.ts +25 -0
  216. package/build/src/stack-utils.js +95 -0
  217. package/build/src/stack-utils.js.map +1 -0
  218. package/build/src/stack-utils.test.d.ts +1 -0
  219. package/build/src/stack-utils.test.js +80 -0
  220. package/build/src/stack-utils.test.js.map +1 -0
  221. package/docs/ai-agent-setup.md +7 -6
  222. package/package.json +1 -1
  223. /package/agent_config/claude-code/skills/{guide → ts-procedures}/anti-patterns.md +0 -0
  224. /package/agent_config/claude-code/skills/{guide → ts-procedures}/api-reference.md +0 -0
  225. /package/agent_config/claude-code/skills/{guide → ts-procedures}/patterns.md +0 -0
  226. /package/agent_config/claude-code/skills/{review → ts-procedures-review}/checklist.md +0 -0
  227. /package/agent_config/claude-code/skills/{scaffold → ts-procedures-scaffold}/templates/client.md +0 -0
  228. /package/agent_config/claude-code/skills/{scaffold → ts-procedures-scaffold}/templates/express-rpc.md +0 -0
  229. /package/agent_config/claude-code/skills/{scaffold → ts-procedures-scaffold}/templates/hono-api.md +0 -0
  230. /package/agent_config/claude-code/skills/{scaffold → ts-procedures-scaffold}/templates/hono-rpc.md +0 -0
  231. /package/agent_config/claude-code/skills/{scaffold → ts-procedures-scaffold}/templates/hono-stream.md +0 -0
  232. /package/agent_config/claude-code/skills/{scaffold → ts-procedures-scaffold}/templates/procedure.md +0 -0
  233. /package/agent_config/claude-code/skills/{scaffold → ts-procedures-scaffold}/templates/stream-procedure.md +0 -0
@@ -0,0 +1,15 @@
1
+ import type { ScopeGroup } from './group-routes.js';
2
+ import { type AjscOptions } from './emit-types.js';
3
+ export interface EmitScopeOptions {
4
+ ajsc?: AjscOptions;
5
+ clientImportPath?: string;
6
+ namespaceTypes?: boolean;
7
+ }
8
+ /**
9
+ * Generates a complete TypeScript scope file for a ScopeGroup.
10
+ *
11
+ * When `namespaceTypes` is true, types are wrapped in nested TypeScript namespaces
12
+ * and ajsc runs with `inlineTypes: false` so formatting options (enumStyle, depluralize,
13
+ * jsdoc, etc.) produce extracted sub-types inside each namespace.
14
+ */
15
+ export declare function emitScopeFile(group: ScopeGroup, options?: EmitScopeOptions): Promise<string>;
@@ -0,0 +1,299 @@
1
+ import { jsonSchemaToTypeBody, jsonSchemaToExtractedTypes, } from './emit-types.js';
2
+ import { CODEGEN_HEADER } from './constants.js';
3
+ import { toPascalCase } from './naming.js';
4
+ // ---------------------------------------------------------------------------
5
+ // Helpers
6
+ // ---------------------------------------------------------------------------
7
+ /**
8
+ * Infers the route kind when the `kind` discriminant is missing.
9
+ * This provides backward compatibility with servers running older ts-procedures
10
+ * versions that don't set `kind` on route docs.
11
+ */
12
+ function inferRouteKind(route) {
13
+ if ('streamMode' in route)
14
+ return 'stream';
15
+ if ('fullPath' in route)
16
+ return 'api';
17
+ return 'rpc';
18
+ }
19
+ /**
20
+ * Checks whether a JSON schema looks like an SSE envelope.
21
+ * SSE envelopes have properties: data, event, id (and optionally retry).
22
+ */
23
+ function isSseEnvelope(schema) {
24
+ const props = schema.properties;
25
+ if (props == null || typeof props !== 'object')
26
+ return false;
27
+ const keys = Object.keys(props);
28
+ return keys.includes('data') && keys.includes('event') && keys.includes('id');
29
+ }
30
+ /**
31
+ * Unwraps an SSE envelope schema to return the inner `data` property schema.
32
+ * If not an SSE envelope, returns the schema unchanged.
33
+ */
34
+ function unwrapSseEnvelope(schema) {
35
+ if (!isSseEnvelope(schema))
36
+ return schema;
37
+ const props = schema.properties;
38
+ const dataSchema = props['data'];
39
+ return dataSchema ?? schema;
40
+ }
41
+ /**
42
+ * Returns the PascalCase display name for a route, appending `V{version}`
43
+ * when version > 1. Version 1 produces no suffix for backward compatibility.
44
+ */
45
+ function versionedPascal(name, version) {
46
+ const pascal = toPascalCase(name);
47
+ if (version != null && version > 1)
48
+ return `${pascal}V${version}`;
49
+ return pascal;
50
+ }
51
+ // ---------------------------------------------------------------------------
52
+ // Shared type formatting helpers
53
+ // ---------------------------------------------------------------------------
54
+ /** Indent each line of a multi-line string by a given prefix. */
55
+ function indent(text, prefix) {
56
+ return text.split('\n').map((line) => (line ? prefix + line : line)).join('\n');
57
+ }
58
+ /**
59
+ * Converts multiple schemas into type declarations and type references.
60
+ * In flat mode: `export type ${routePascal}${shortName} = <body>`
61
+ * In namespace mode: extracted sub-types + named types inside `export namespace ${routePascal} { ... }`
62
+ */
63
+ async function formatTypes(routePascal, types, ctx) {
64
+ const declarations = [];
65
+ const refs = {};
66
+ if (ctx.namespaceTypes) {
67
+ const nsLines = [];
68
+ const seenDeclarations = new Set();
69
+ for (const { shortName, schema } of types) {
70
+ if (schema == null)
71
+ continue;
72
+ const result = await jsonSchemaToExtractedTypes(schema, ctx.ajsc);
73
+ if (result == null)
74
+ continue;
75
+ // Collect extracted sub-types (deduplicate across schemas)
76
+ for (const decl of result.declarations) {
77
+ if (!seenDeclarations.has(decl)) {
78
+ seenDeclarations.add(decl);
79
+ nsLines.push(indent(decl, ' '));
80
+ }
81
+ }
82
+ nsLines.push(` export type ${shortName} = ${result.body}`);
83
+ refs[shortName] = `${ctx.scopePascal}.${routePascal}.${shortName}`;
84
+ }
85
+ if (nsLines.length > 0) {
86
+ declarations.push(` export namespace ${routePascal} {\n${nsLines.join('\n')}\n }`);
87
+ }
88
+ }
89
+ else {
90
+ for (const { shortName, schema } of types) {
91
+ if (schema == null)
92
+ continue;
93
+ const flatName = `${routePascal}${shortName}`;
94
+ const body = await jsonSchemaToTypeBody(schema, ctx.ajsc);
95
+ if (body == null)
96
+ continue;
97
+ declarations.push(`export type ${flatName} = ${body}`);
98
+ refs[shortName] = flatName;
99
+ }
100
+ }
101
+ return { declarations, refs };
102
+ }
103
+ // ---------------------------------------------------------------------------
104
+ // Route emitters
105
+ // ---------------------------------------------------------------------------
106
+ async function emitRpcRoute(route, ctx) {
107
+ const pascal = versionedPascal(route.name, route.version);
108
+ const { declarations, refs } = await formatTypes(pascal, [
109
+ { shortName: 'Params', schema: route.jsonSchema.body },
110
+ { shortName: 'Response', schema: route.jsonSchema.response },
111
+ ], ctx);
112
+ const paramsTypeName = refs['Params'] ?? 'unknown';
113
+ const responseTypeName = refs['Response'] ?? 'unknown';
114
+ const scopeStr = Array.isArray(route.scope) ? route.scope.join('-') : route.scope;
115
+ const callable = [
116
+ ` /** ${route.method.toUpperCase()} ${route.path} */`,
117
+ ` ${pascal}(params: ${paramsTypeName}, options?: ProcedureCallOptions): Promise<${responseTypeName}> {`,
118
+ ` return client.call<${responseTypeName}>({`,
119
+ ` name: '${pascal}',`,
120
+ ` scope: '${scopeStr}',`,
121
+ ` path: '${route.path}',`,
122
+ ` method: '${route.method}',`,
123
+ ` kind: 'rpc',`,
124
+ ` params,`,
125
+ ` }, options)`,
126
+ ` },`,
127
+ ].join('\n');
128
+ return { typeDeclarations: declarations, callable, hasStream: false };
129
+ }
130
+ async function emitApiRoute(route, ctx) {
131
+ const pascal = toPascalCase(route.name);
132
+ const channelKeys = ['pathParams', 'query', 'body', 'headers'];
133
+ // Build channel types + structured Params type
134
+ const channelTypes = [];
135
+ const presentChannels = [];
136
+ for (const channel of channelKeys) {
137
+ const channelSchema = route.jsonSchema[channel];
138
+ if (channelSchema != null) {
139
+ channelTypes.push({ shortName: toPascalCase(channel), schema: channelSchema });
140
+ presentChannels.push(channel);
141
+ }
142
+ }
143
+ // Add response
144
+ channelTypes.push({ shortName: 'Response', schema: route.jsonSchema.response });
145
+ const { declarations, refs } = await formatTypes(pascal, channelTypes, ctx);
146
+ // Compose structured Params type from channels
147
+ let paramsTypeName = 'unknown';
148
+ if (presentChannels.length > 0) {
149
+ if (ctx.namespaceTypes) {
150
+ const structureFields = presentChannels
151
+ .map((ch) => `${ch}: ${toPascalCase(ch)}`)
152
+ .join('; ');
153
+ // Insert Params type into the namespace block (before closing brace)
154
+ const lastIdx = declarations.length - 1;
155
+ if (lastIdx >= 0) {
156
+ const lastDecl = declarations[lastIdx];
157
+ const closingIdx = lastDecl.lastIndexOf(' }');
158
+ if (closingIdx !== -1) {
159
+ declarations[lastIdx] =
160
+ lastDecl.slice(0, closingIdx) +
161
+ ` export type Params = { ${structureFields} }\n` +
162
+ lastDecl.slice(closingIdx);
163
+ }
164
+ }
165
+ paramsTypeName = `${ctx.scopePascal}.${pascal}.Params`;
166
+ }
167
+ else {
168
+ const structureFields = presentChannels
169
+ .map((ch) => `${ch}: ${refs[toPascalCase(ch)]}`)
170
+ .join('; ');
171
+ declarations.push(`export type ${pascal}Params = { ${structureFields} }`);
172
+ paramsTypeName = `${pascal}Params`;
173
+ }
174
+ }
175
+ const responseTypeName = refs['Response'] ?? 'unknown';
176
+ const scopeStr = route.scope ?? 'default';
177
+ const callable = [
178
+ ` /** ${route.method.toUpperCase()} ${route.fullPath} */`,
179
+ ` ${route.name}(params: ${paramsTypeName}, options?: ProcedureCallOptions): Promise<${responseTypeName}> {`,
180
+ ` return client.call<${responseTypeName}>({`,
181
+ ` name: '${route.name}',`,
182
+ ` scope: '${scopeStr}',`,
183
+ ` path: '${route.fullPath}',`,
184
+ ` method: '${route.method}',`,
185
+ ` kind: 'api',`,
186
+ ` params,`,
187
+ ` }, options)`,
188
+ ` },`,
189
+ ].join('\n');
190
+ return { typeDeclarations: declarations, callable, hasStream: false };
191
+ }
192
+ async function emitStreamRoute(route, ctx) {
193
+ const pascal = versionedPascal(route.name, route.version);
194
+ // Unwrap SSE envelope from yieldType
195
+ let yieldSchema = route.jsonSchema.yieldType;
196
+ if (yieldSchema != null && route.streamMode === 'sse' && isSseEnvelope(yieldSchema)) {
197
+ yieldSchema = unwrapSseEnvelope(yieldSchema);
198
+ }
199
+ const { declarations, refs } = await formatTypes(pascal, [
200
+ { shortName: 'Params', schema: route.jsonSchema.params },
201
+ { shortName: 'Yield', schema: yieldSchema },
202
+ { shortName: 'Return', schema: route.jsonSchema.returnType },
203
+ ], ctx);
204
+ const paramsTypeName = refs['Params'] ?? 'unknown';
205
+ const yieldTypeName = refs['Yield'] ?? 'unknown';
206
+ const returnTypeName = refs['Return'] ?? 'void';
207
+ const scopeStr = Array.isArray(route.scope) ? route.scope.join('-') : route.scope;
208
+ const callable = [
209
+ ` /** ${route.methods.map((m) => m.toUpperCase()).join('|')} ${route.path} */`,
210
+ ` ${pascal}(params: ${paramsTypeName}, options?: ProcedureCallOptions): TypedStream<${yieldTypeName}, ${returnTypeName}> {`,
211
+ ` return client.stream<${yieldTypeName}, ${returnTypeName}>({`,
212
+ ` name: '${pascal}',`,
213
+ ` scope: '${scopeStr}',`,
214
+ ` path: '${route.path}',`,
215
+ ` method: '${route.methods[0] ?? 'get'}',`,
216
+ ` kind: 'stream',`,
217
+ ` streamMode: '${route.streamMode}',`,
218
+ ` params,`,
219
+ ` }, options)`,
220
+ ` },`,
221
+ ].join('\n');
222
+ return { typeDeclarations: declarations, callable, hasStream: true };
223
+ }
224
+ // ---------------------------------------------------------------------------
225
+ // emitScopeFile
226
+ // ---------------------------------------------------------------------------
227
+ /**
228
+ * Generates a complete TypeScript scope file for a ScopeGroup.
229
+ *
230
+ * When `namespaceTypes` is true, types are wrapped in nested TypeScript namespaces
231
+ * and ajsc runs with `inlineTypes: false` so formatting options (enumStyle, depluralize,
232
+ * jsdoc, etc.) produce extracted sub-types inside each namespace.
233
+ */
234
+ export async function emitScopeFile(group, options) {
235
+ const { ajsc: ajscOpts, clientImportPath = 'ts-procedures/client', namespaceTypes = false } = options ?? {};
236
+ const pascal = toPascalCase(group.camelCase);
237
+ const ctx = { ajsc: ajscOpts, namespaceTypes, scopePascal: pascal };
238
+ const allTypeDeclarations = [];
239
+ const callables = [];
240
+ let hasStream = false;
241
+ for (const route of group.routes) {
242
+ let chunks;
243
+ const kind = route.kind ?? inferRouteKind(route);
244
+ try {
245
+ if (kind === 'rpc') {
246
+ chunks = await emitRpcRoute(route, ctx);
247
+ }
248
+ else if (kind === 'api') {
249
+ chunks = await emitApiRoute(route, ctx);
250
+ }
251
+ else if (kind === 'stream') {
252
+ chunks = await emitStreamRoute(route, ctx);
253
+ }
254
+ else {
255
+ throw new Error(`Unknown route kind "${kind}"`);
256
+ }
257
+ }
258
+ catch (err) {
259
+ const msg = err instanceof Error ? err.message : String(err);
260
+ throw new Error(`[ts-procedures-codegen] Failed to emit route "${route.name}" (kind: ${kind}, scope: ${group.scopeKey}): ${msg}`);
261
+ }
262
+ allTypeDeclarations.push(...chunks.typeDeclarations);
263
+ callables.push(chunks.callable);
264
+ if (chunks.hasStream)
265
+ hasStream = true;
266
+ }
267
+ // Build import line
268
+ const clientImports = hasStream
269
+ ? `import type { ClientInstance, ProcedureCallOptions, TypedStream } from '${clientImportPath}'`
270
+ : `import type { ClientInstance, ProcedureCallOptions } from '${clientImportPath}'`;
271
+ let typesBlock;
272
+ if (namespaceTypes && allTypeDeclarations.length > 0) {
273
+ typesBlock = `export namespace ${pascal} {\n${allTypeDeclarations.join('\n\n')}\n}\n`;
274
+ }
275
+ else {
276
+ typesBlock =
277
+ allTypeDeclarations.length > 0
278
+ ? allTypeDeclarations.join('\n') + '\n'
279
+ : '';
280
+ }
281
+ const callablesBlock = callables.join('\n\n');
282
+ return [
283
+ CODEGEN_HEADER,
284
+ clientImports,
285
+ '',
286
+ '// ── Types ────────────────────────────────────────',
287
+ '',
288
+ typesBlock,
289
+ '// ── Callables ────────────────────────────────────',
290
+ '',
291
+ `export function bind${pascal}Scope(client: ClientInstance) {`,
292
+ ' return {',
293
+ callablesBlock,
294
+ ' }',
295
+ '}',
296
+ '',
297
+ ].join('\n');
298
+ }
299
+ //# sourceMappingURL=emit-scope.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"emit-scope.js","sourceRoot":"","sources":["../../../src/codegen/emit-scope.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1 @@
1
+ export {};