@apollo-deploy/tesseract 1.9.0 → 2.0.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 (194) hide show
  1. package/README.md +218 -110
  2. package/dist/adapters/csharp/index.d.ts +5 -8
  3. package/dist/adapters/csharp/index.d.ts.map +1 -1
  4. package/dist/adapters/csharp/index.js +314 -74
  5. package/dist/adapters/csharp/index.js.map +1 -1
  6. package/dist/adapters/documentation.d.ts +17 -0
  7. package/dist/adapters/documentation.d.ts.map +1 -0
  8. package/dist/adapters/documentation.js +268 -0
  9. package/dist/adapters/documentation.js.map +1 -0
  10. package/dist/adapters/go/index.d.ts +5 -8
  11. package/dist/adapters/go/index.d.ts.map +1 -1
  12. package/dist/adapters/go/index.js +197 -101
  13. package/dist/adapters/go/index.js.map +1 -1
  14. package/dist/adapters/kotlin/index.d.ts +5 -9
  15. package/dist/adapters/kotlin/index.d.ts.map +1 -1
  16. package/dist/adapters/kotlin/index.js +280 -212
  17. package/dist/adapters/kotlin/index.js.map +1 -1
  18. package/dist/adapters/php/index.d.ts +5 -15
  19. package/dist/adapters/php/index.d.ts.map +1 -1
  20. package/dist/adapters/php/index.js +362 -90
  21. package/dist/adapters/php/index.js.map +1 -1
  22. package/dist/adapters/python/index.d.ts +5 -8
  23. package/dist/adapters/python/index.d.ts.map +1 -1
  24. package/dist/adapters/python/index.js +240 -109
  25. package/dist/adapters/python/index.js.map +1 -1
  26. package/dist/adapters/ruby/index.d.ts +3 -3
  27. package/dist/adapters/ruby/index.d.ts.map +1 -1
  28. package/dist/adapters/ruby/index.js +235 -46
  29. package/dist/adapters/ruby/index.js.map +1 -1
  30. package/dist/adapters/rust/index.d.ts +5 -9
  31. package/dist/adapters/rust/index.d.ts.map +1 -1
  32. package/dist/adapters/rust/index.js +237 -169
  33. package/dist/adapters/rust/index.js.map +1 -1
  34. package/dist/adapters/shared.d.ts +7 -0
  35. package/dist/adapters/shared.d.ts.map +1 -0
  36. package/dist/adapters/shared.js +68 -0
  37. package/dist/adapters/shared.js.map +1 -0
  38. package/dist/adapters/type-utils.d.ts +13 -0
  39. package/dist/adapters/type-utils.d.ts.map +1 -0
  40. package/dist/adapters/type-utils.js +105 -0
  41. package/dist/adapters/type-utils.js.map +1 -0
  42. package/dist/adapters/types.d.ts.map +1 -1
  43. package/dist/adapters/typescript/emitter/emitSchema.d.ts +2 -2
  44. package/dist/adapters/typescript/emitter/emitSchema.js +39 -27
  45. package/dist/adapters/typescript/emitter/emitSchema.js.map +1 -1
  46. package/dist/adapters/typescript/emitter/emitTypeScriptModels.d.ts +2 -2
  47. package/dist/adapters/typescript/emitter/emitTypeScriptModels.js +15 -15
  48. package/dist/adapters/typescript/emitter/importCollector.d.ts +2 -4
  49. package/dist/adapters/typescript/emitter/importCollector.d.ts.map +1 -1
  50. package/dist/adapters/typescript/emitter/importCollector.js +40 -50
  51. package/dist/adapters/typescript/emitter/importCollector.js.map +1 -1
  52. package/dist/adapters/typescript/emitter/parsers.d.ts +1 -1
  53. package/dist/adapters/typescript/emitter/parsers.js +13 -13
  54. package/dist/adapters/typescript/emitter/typeHoister.d.ts +1 -1
  55. package/dist/adapters/typescript/emitter/typeHoister.d.ts.map +1 -1
  56. package/dist/adapters/typescript/emitter/typeHoister.js +12 -20
  57. package/dist/adapters/typescript/emitter/typeHoister.js.map +1 -1
  58. package/dist/adapters/typescript/index.d.ts +3 -3
  59. package/dist/adapters/typescript/index.d.ts.map +1 -1
  60. package/dist/adapters/typescript/index.js +148 -166
  61. package/dist/adapters/typescript/index.js.map +1 -1
  62. package/dist/adapters/typescript/shared.d.ts +2 -2
  63. package/dist/adapters/typescript/shared.js +12 -12
  64. package/dist/cli.js +50 -37
  65. package/dist/cli.js.map +1 -1
  66. package/dist/collector.d.ts +13 -3
  67. package/dist/collector.d.ts.map +1 -1
  68. package/dist/collector.js +69 -32
  69. package/dist/collector.js.map +1 -1
  70. package/dist/elysia.js +2 -2
  71. package/dist/elysia.js.map +1 -1
  72. package/dist/express.d.ts.map +1 -1
  73. package/dist/express.js.map +1 -1
  74. package/dist/fastify.d.ts +7 -0
  75. package/dist/fastify.d.ts.map +1 -1
  76. package/dist/fastify.js +39 -20
  77. package/dist/fastify.js.map +1 -1
  78. package/dist/helpers/handlebars.d.ts +7 -16
  79. package/dist/helpers/handlebars.d.ts.map +1 -1
  80. package/dist/helpers/handlebars.js +127 -177
  81. package/dist/helpers/handlebars.js.map +1 -1
  82. package/dist/hono.d.ts.map +1 -1
  83. package/dist/hono.js.map +1 -1
  84. package/dist/index.d.ts +14 -12
  85. package/dist/index.d.ts.map +1 -1
  86. package/dist/index.js +32 -30
  87. package/dist/index.js.map +1 -1
  88. package/dist/koa.d.ts.map +1 -1
  89. package/dist/koa.js.map +1 -1
  90. package/dist/nestjs.d.ts.map +1 -1
  91. package/dist/nestjs.js +41 -14
  92. package/dist/nestjs.js.map +1 -1
  93. package/dist/pipeline/enrich.d.ts +2 -13
  94. package/dist/pipeline/enrich.d.ts.map +1 -1
  95. package/dist/pipeline/enrich.js +157 -212
  96. package/dist/pipeline/enrich.js.map +1 -1
  97. package/dist/pipeline/intake.d.ts +3 -3
  98. package/dist/pipeline/intake.d.ts.map +1 -1
  99. package/dist/pipeline/intake.js +342 -238
  100. package/dist/pipeline/intake.js.map +1 -1
  101. package/dist/pipeline/write.d.ts +1 -14
  102. package/dist/pipeline/write.d.ts.map +1 -1
  103. package/dist/pipeline/write.js +73 -113
  104. package/dist/pipeline/write.js.map +1 -1
  105. package/dist/types/config.d.ts +14 -26
  106. package/dist/types/config.d.ts.map +1 -1
  107. package/dist/types/config.js +16 -12
  108. package/dist/types/config.js.map +1 -1
  109. package/dist/types/ir.d.ts +12 -8
  110. package/dist/types/ir.d.ts.map +1 -1
  111. package/dist/types/manifest.d.ts +10 -11
  112. package/dist/types/manifest.d.ts.map +1 -1
  113. package/dist/types/manifest.js +54 -14
  114. package/dist/types/manifest.js.map +1 -1
  115. package/dist/types/sdk-module.d.ts +2 -2
  116. package/dist/types/sdk-module.js +1 -1
  117. package/dist/utils/format.d.ts +1 -3
  118. package/dist/utils/format.d.ts.map +1 -1
  119. package/dist/utils/format.js +3 -10
  120. package/dist/utils/format.js.map +1 -1
  121. package/dist/utils/naming.d.ts.map +1 -1
  122. package/dist/utils/naming.js +174 -184
  123. package/dist/utils/naming.js.map +1 -1
  124. package/dist/utils/npm-token.d.ts +1 -17
  125. package/dist/utils/npm-token.d.ts.map +1 -1
  126. package/dist/utils/npm-token.js +27 -76
  127. package/dist/utils/npm-token.js.map +1 -1
  128. package/dist/utils/version.d.ts +14 -0
  129. package/dist/utils/version.d.ts.map +1 -0
  130. package/dist/utils/version.js +60 -0
  131. package/dist/utils/version.js.map +1 -0
  132. package/package.json +4 -3
  133. package/templates/csharp/client.hbs +26 -49
  134. package/templates/csharp/csproj.hbs +7 -0
  135. package/templates/csharp/domain.hbs +48 -130
  136. package/templates/csharp/errors.hbs +17 -25
  137. package/templates/csharp/readme.hbs +31 -44
  138. package/templates/csharp/transport.hbs +238 -136
  139. package/templates/csharp/types.hbs +30 -76
  140. package/templates/go/client.hbs +44 -109
  141. package/templates/go/domain.hbs +83 -25
  142. package/templates/go/go-mod.hbs +1 -4
  143. package/templates/go/readme.hbs +32 -29
  144. package/templates/go/transport.hbs +174 -173
  145. package/templates/go/types.hbs +17 -53
  146. package/templates/go/utils.hbs +3 -2
  147. package/templates/kotlin/build-gradle.hbs +1 -1
  148. package/templates/kotlin/client.hbs +18 -15
  149. package/templates/kotlin/domain.hbs +54 -51
  150. package/templates/kotlin/errors.hbs +1 -1
  151. package/templates/kotlin/readme.hbs +35 -137
  152. package/templates/kotlin/transport.hbs +140 -123
  153. package/templates/kotlin/types.hbs +30 -81
  154. package/templates/php/client.hbs +8 -46
  155. package/templates/php/composer.hbs +2 -1
  156. package/templates/php/domain.hbs +86 -117
  157. package/templates/php/errors.hbs +1 -1
  158. package/templates/php/readme.hbs +42 -49
  159. package/templates/php/transport.hbs +192 -145
  160. package/templates/php/types.hbs +63 -60
  161. package/templates/python/client.hbs +15 -2
  162. package/templates/python/domain.hbs +50 -108
  163. package/templates/python/pyproject.hbs +5 -0
  164. package/templates/python/readme.hbs +47 -30
  165. package/templates/python/resources-init.hbs +1 -1
  166. package/templates/python/transport.hbs +167 -53
  167. package/templates/python/types.hbs +22 -58
  168. package/templates/ruby/client.hbs +10 -6
  169. package/templates/ruby/domain.hbs +48 -67
  170. package/templates/ruby/errors.hbs +3 -3
  171. package/templates/ruby/gemspec.hbs +3 -10
  172. package/templates/ruby/index.hbs +3 -3
  173. package/templates/ruby/readme.hbs +33 -70
  174. package/templates/ruby/transport.hbs +129 -103
  175. package/templates/ruby/types.hbs +11 -16
  176. package/templates/ruby/version.hbs +1 -1
  177. package/templates/rust/cargo.hbs +2 -0
  178. package/templates/rust/client.hbs +10 -1
  179. package/templates/rust/domain.hbs +69 -52
  180. package/templates/rust/error.hbs +3 -1
  181. package/templates/rust/lib.hbs +4 -5
  182. package/templates/rust/readme.hbs +33 -46
  183. package/templates/rust/transport.hbs +170 -159
  184. package/templates/rust/types.hbs +34 -111
  185. package/templates/typescript/domain-class.hbs +14 -6
  186. package/templates/typescript/domain.hbs +13 -5
  187. package/templates/typescript/package-json.hbs +3 -1
  188. package/templates/typescript/readme.hbs +42 -42
  189. package/templates/typescript/transport.hbs +46 -8
  190. package/templates/typescript/types-errors.hbs +1 -1
  191. package/dist/adapters/typescript/model-emitter.d.ts +0 -13
  192. package/dist/adapters/typescript/model-emitter.d.ts.map +0 -1
  193. package/dist/adapters/typescript/model-emitter.js +0 -415
  194. package/dist/adapters/typescript/model-emitter.js.map +0 -1
@@ -0,0 +1,268 @@
1
+ import { posix } from 'node:path';
2
+ export function createDocumentationFiles({ meta, groups, schemas, naming, }) {
3
+ return [
4
+ {
5
+ relativePath: 'LICENSE',
6
+ content: renderLicense(meta),
7
+ },
8
+ {
9
+ relativePath: 'docs/README.md',
10
+ content: renderDocumentationIndex(meta, groups, naming),
11
+ },
12
+ {
13
+ relativePath: 'docs/types.md',
14
+ content: renderTypesReference(meta, schemas, naming),
15
+ },
16
+ ...groups.map((group) => ({
17
+ relativePath: posix.join('docs', 'domains', `${group.fileName}.md`),
18
+ content: renderDomainReference(meta, group, naming),
19
+ })),
20
+ ];
21
+ }
22
+ function renderLicense(meta) {
23
+ return `MIT License
24
+
25
+ Copyright (c) ${meta.title} SDK contributors
26
+
27
+ Permission is hereby granted, free of charge, to any person obtaining a copy
28
+ of this software and associated documentation files (the "Software"), to deal
29
+ in the Software without restriction, including without limitation the rights
30
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
31
+ copies of the Software, and to permit persons to whom the Software is
32
+ furnished to do so, subject to the following conditions:
33
+
34
+ The above copyright notice and this permission notice shall be included in all
35
+ copies or substantial portions of the Software.
36
+
37
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
38
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
39
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
40
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
41
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
42
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
43
+ SOFTWARE.
44
+ `;
45
+ }
46
+ function renderDocumentationIndex(meta, groups, naming) {
47
+ const lines = [
48
+ `# ${meta.title} SDK documentation`,
49
+ '',
50
+ meta.description ?? `Reference documentation for the ${meta.title} SDK.`,
51
+ '',
52
+ '[Back to the SDK overview](../README.md)',
53
+ '',
54
+ '## API domains',
55
+ '',
56
+ '| Domain | Client accessor | Operations | Description |',
57
+ '|---|---|---:|---|',
58
+ ];
59
+ if (groups.length === 0) {
60
+ lines.push('| _No public domains_ | — | 0 | This SDK has no exposed operations. |');
61
+ }
62
+ else {
63
+ for (const group of groups) {
64
+ lines.push(`| [${escapeMarkdown(group.interfaceName)}](./domains/${group.fileName}.md) | \`${escapeCode(resolveGroupAccessor(group, naming))}\` | ${group.operations.length} | ${escapeTableCell(group.description ?? `${group.name} operations`)} |`);
65
+ }
66
+ }
67
+ lines.push('', '## Models and types', '', '- [Generated types reference](./types.md)', '', '## Reliability behavior', '', 'Generated clients use bounded request timeouts, structured SDK errors, request ID propagation, and retry transient failures with exponential backoff. Unsafe requests are not retried unless the generated client can establish idempotency or the caller explicitly enables it.', '');
68
+ return `${lines.join('\n')}\n`;
69
+ }
70
+ function renderDomainReference(meta, group, naming) {
71
+ const accessor = resolveGroupAccessor(group, naming);
72
+ const sourcePath = naming.sourcePath(group).replaceAll('\\', '/');
73
+ const lines = [
74
+ `# ${group.interfaceName}`,
75
+ '',
76
+ group.description ?? `${group.name} API operations.`,
77
+ '',
78
+ `[Documentation index](../README.md) · [SDK overview](../../README.md) · [Generated source](../../${sourcePath})`,
79
+ '',
80
+ `Client accessor: \`${escapeCode(accessor)}\``,
81
+ '',
82
+ '## Operations',
83
+ '',
84
+ '| Method | HTTP | Path | Returns | Description |',
85
+ '|---|---|---|---|---|',
86
+ ];
87
+ for (const operation of group.operations) {
88
+ const method = resolveMethodName(operation, naming);
89
+ lines.push(`| [\`${escapeCode(method)}\`](#${markdownAnchor(method)}) | \`${escapeCode(operation.httpMethod.toUpperCase())}\` | \`${escapeCode(documentedPath(operation))}\` | \`${escapeCode(resolveType(operation.responseType, naming))}\` | ${escapeTableCell(operation.summary ?? operation.description ?? '—')} |`);
90
+ }
91
+ for (const operation of group.operations) {
92
+ lines.push('', ...renderOperation(operation, naming));
93
+ }
94
+ lines.push('', '---', '', `Generated from the ${meta.title} manifest by Tesseract.`, '');
95
+ return `${lines.join('\n')}\n`;
96
+ }
97
+ function renderOperation(operation, naming) {
98
+ const method = resolveMethodName(operation, naming);
99
+ const lines = [
100
+ `## ${method}`,
101
+ '',
102
+ `\`${operation.httpMethod.toUpperCase()} ${escapeCode(documentedPath(operation))}\``,
103
+ '',
104
+ ];
105
+ if (operation.deprecated) {
106
+ lines.push(`> **Deprecated:** ${operation.deprecationMessage ?? 'This operation may be removed in a future release.'}`, '');
107
+ }
108
+ if (operation.summary)
109
+ lines.push(operation.summary, '');
110
+ if (operation.description && operation.description !== operation.summary) {
111
+ lines.push(operation.description, '');
112
+ }
113
+ if (operation.timeoutMs !== undefined) {
114
+ lines.push(`Default operation timeout: **${operation.timeoutMs} ms**`, '');
115
+ }
116
+ const parameters = collectParameters(operation);
117
+ if (parameters.length) {
118
+ lines.push('### Parameters', '', '| Name | Location | Type | Required | Description |', '|---|---|---|:---:|---|');
119
+ for (const { parameter, location } of parameters) {
120
+ lines.push(`| \`${escapeCode(parameter.originalName)}\` | ${location} | \`${escapeCode(resolveType(parameter.type, naming))}\` | ${parameter.required ? 'Yes' : 'No'} | ${escapeTableCell(parameter.description ?? (parameter.deprecated ? 'Deprecated parameter.' : '—'))} |`);
121
+ }
122
+ lines.push('');
123
+ }
124
+ if (operation.requestBody) {
125
+ lines.push('### Request body', '', `- Type: \`${escapeCode(resolveType(operation.requestBody.type, naming))}\``, `- Required: ${operation.requestBody.required ? 'Yes' : 'No'}`, `- Content type: \`${escapeCode(operation.requestBody.contentType)}\``, '');
126
+ }
127
+ lines.push('### Response', '', `- Success status: \`${operation.statusCode}\``, `- Type: \`${escapeCode(resolveType(operation.responseType, naming))}\``);
128
+ if (operation.isEventStream) {
129
+ lines.push(`- Streaming: Server-Sent Events${operation.eventSchema ? ` with payload \`${escapeCode(resolveType(operation.eventSchema, naming))}\`` : ''}`);
130
+ }
131
+ lines.push('');
132
+ return lines;
133
+ }
134
+ function renderTypesReference(meta, schemas, naming) {
135
+ const lines = [
136
+ `# ${meta.title} generated types`,
137
+ '',
138
+ '[Documentation index](./README.md) · [SDK overview](../README.md)',
139
+ '',
140
+ ];
141
+ if (!schemas.length) {
142
+ lines.push('This SDK does not generate local models. Types are supplied by an external schema package.', '');
143
+ return `${lines.join('\n')}\n`;
144
+ }
145
+ lines.push('## Index', '', '| Type | Kind | Description |', '|---|---|---|');
146
+ for (const schema of schemas) {
147
+ lines.push(`| [\`${escapeCode(schema.name)}\`](#${markdownAnchor(schema.name)}) | ${schemaKind(schema)} | ${escapeTableCell(schema.description ?? '—')} |`);
148
+ }
149
+ for (const schema of schemas) {
150
+ lines.push('', `## ${schema.name}`, '');
151
+ if (schema.description)
152
+ lines.push(schema.description, '');
153
+ if (schema.ownership?.kind === 'external') {
154
+ lines.push(`Imported from \`${escapeCode(schema.ownership.externalImport?.importPath ?? schema.ownership.externalImport?.packageName ?? 'external schema package')}\`.`, '');
155
+ continue;
156
+ }
157
+ if (schema.isEnum) {
158
+ lines.push('Allowed values:', '');
159
+ for (const value of schema.enumValues ?? []) {
160
+ lines.push(`- \`${escapeCode(JSON.stringify(value))}\``);
161
+ }
162
+ lines.push('');
163
+ continue;
164
+ }
165
+ if (schema.aliasType) {
166
+ lines.push(`Alias of \`${escapeCode(resolveType(schema.aliasType, naming))}\`.`, '');
167
+ continue;
168
+ }
169
+ if (schema.isUnionType) {
170
+ lines.push(`Union of ${formatTypeList(schema.unionMembers ?? [], naming)}.`, '');
171
+ continue;
172
+ }
173
+ if (schema.isIntersectionType) {
174
+ lines.push(`Intersection of ${formatTypeList(schema.intersectionMembers ?? [], naming)}.`, '');
175
+ continue;
176
+ }
177
+ if (schema.extends) {
178
+ lines.push(`Extends \`${escapeCode(resolveType(schema.extends, naming))}\`.`, '');
179
+ }
180
+ if (schema.properties.length) {
181
+ lines.push('| Property | Type | Required | Description |', '|---|---|:---:|---|');
182
+ for (const property of schema.properties) {
183
+ const nullable = property.nullable ? ' | null' : '';
184
+ lines.push(`| \`${escapeCode(property.name)}\` | \`${escapeCode(resolveType(property.type, naming))}${nullable}\` | ${property.required ? 'Yes' : 'No'} | ${escapeTableCell(property.description ?? (property.deprecated ? 'Deprecated property.' : '—'))} |`);
185
+ }
186
+ lines.push('');
187
+ }
188
+ else {
189
+ lines.push('This model has no declared properties.', '');
190
+ }
191
+ if (schema.additionalPropertiesType) {
192
+ lines.push(`Additional properties use \`${escapeCode(resolveType(schema.additionalPropertiesType, naming))}\`.`, '');
193
+ }
194
+ }
195
+ return `${lines.join('\n')}\n`;
196
+ }
197
+ function documentedPath(operation) {
198
+ let path = operation.path;
199
+ for (const parameter of operation.pathParams) {
200
+ const replacement = `{${parameter.originalName}}`;
201
+ const placeholders = [
202
+ `\${${parameter.name}}`,
203
+ `:${parameter.name}`,
204
+ `{${parameter.name}}`,
205
+ `\${${parameter.originalName}}`,
206
+ `:${parameter.originalName}`,
207
+ `{${parameter.originalName}}`,
208
+ ];
209
+ for (const placeholder of placeholders) {
210
+ path = path.replaceAll(placeholder, replacement);
211
+ }
212
+ }
213
+ return path;
214
+ }
215
+ function collectParameters(operation) {
216
+ return [
217
+ ...operation.pathParams.map((parameter) => ({ parameter, location: 'Path' })),
218
+ ...operation.queryParams.map((parameter) => ({ parameter, location: 'Query' })),
219
+ ...operation.headerParams.map((parameter) => ({ parameter, location: 'Header' })),
220
+ ...operation.cookieParams.map((parameter) => ({ parameter, location: 'Cookie' })),
221
+ ];
222
+ }
223
+ function resolveGroupAccessor(group, naming) {
224
+ return naming.groupAccessor?.(group) ?? `client.${group.name}`;
225
+ }
226
+ function resolveMethodName(operation, naming) {
227
+ return naming.methodName?.(operation) ?? operation.name;
228
+ }
229
+ function resolveType(type, naming) {
230
+ return naming.typeName?.(type) ?? type;
231
+ }
232
+ function formatTypeList(types, naming) {
233
+ if (!types.length)
234
+ return '`unknown`';
235
+ return types
236
+ .map((type) => `\`${escapeCode(resolveType(type, naming))}\``)
237
+ .join(', ');
238
+ }
239
+ function schemaKind(schema) {
240
+ if (schema.ownership?.kind === 'external')
241
+ return 'External';
242
+ if (schema.isEnum)
243
+ return 'Enum';
244
+ if (schema.aliasType)
245
+ return 'Alias';
246
+ if (schema.isUnionType)
247
+ return 'Union';
248
+ if (schema.isIntersectionType)
249
+ return 'Intersection';
250
+ return 'Model';
251
+ }
252
+ function markdownAnchor(value) {
253
+ return value
254
+ .trim()
255
+ .toLowerCase()
256
+ .replace(/[^a-z0-9 _-]/g, '')
257
+ .replace(/[ _]+/g, '-');
258
+ }
259
+ function escapeCode(value) {
260
+ return value.replaceAll('`', '\\`');
261
+ }
262
+ function escapeMarkdown(value) {
263
+ return value.replace(/([\\*_{}\[\]()#+.!|-])/g, '\\$1');
264
+ }
265
+ function escapeTableCell(value) {
266
+ return value.replaceAll('|', '\\|').replace(/\s+/g, ' ').trim();
267
+ }
268
+ //# sourceMappingURL=documentation.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"documentation.js","sourceRoot":"","sources":["../../src/adapters/documentation.ts"],"names":[],"mappings":"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"}
@@ -1,12 +1,9 @@
1
- /**
2
- * Go language adapter.
3
- * Generates an idiomatic Go SDK package using net/http.
4
- */
5
- import type { EnrichedSDKIR } from "../../types/ir.js";
6
- import type { LanguageAdapter, EmitResult } from "../types.js";
7
- import type { ResolvedConfig } from "../../types/config.js";
1
+ /** Go language adapter. */
2
+ import type { EnrichedSDKIR } from '../../types/ir.js';
3
+ import type { ResolvedConfig } from '../../types/config.js';
4
+ import type { EmitResult, LanguageAdapter } from '../types.js';
8
5
  export declare class GoAdapter implements LanguageAdapter {
9
6
  readonly language = "go";
10
- emit(enriched: EnrichedSDKIR, outputDir: string, config?: ResolvedConfig): Promise<EmitResult>;
7
+ emit(enriched: EnrichedSDKIR, _outputDir: string, config?: ResolvedConfig): Promise<EmitResult>;
11
8
  }
12
9
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/adapters/go/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AACvD,OAAO,KAAK,EAAE,eAAe,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAC/D,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAoD5D,qBAAa,SAAU,YAAW,eAAe;IAC/C,QAAQ,CAAC,QAAQ,QAAQ;IAEnB,IAAI,CACR,QAAQ,EAAE,aAAa,EACvB,SAAS,EAAE,MAAM,EACjB,MAAM,CAAC,EAAE,cAAc,GACtB,OAAO,CAAC,UAAU,CAAC;CA+GvB"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/adapters/go/index.ts"],"names":[],"mappings":"AAAA,2BAA2B;AAG3B,OAAO,KAAK,EACV,aAAa,EAGd,MAAM,mBAAmB,CAAC;AAC3B,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAE5D,OAAO,KAAK,EAAE,UAAU,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AA+I/D,qBAAa,SAAU,YAAW,eAAe;IAC/C,QAAQ,CAAC,QAAQ,QAAQ;IAEnB,IAAI,CACR,QAAQ,EAAE,aAAa,EACvB,UAAU,EAAE,MAAM,EAClB,MAAM,CAAC,EAAE,cAAc,GACtB,OAAO,CAAC,UAAU,CAAC;CAsIvB"}
@@ -1,135 +1,231 @@
1
- /**
2
- * Go language adapter.
3
- * Generates an idiomatic Go SDK package using net/http.
4
- */
5
- import { getTemplate, registerHelpers, collectImports, } from "../../helpers/handlebars.js";
6
- import Handlebars from "handlebars";
7
- function goTypeExpr(tsType) {
8
- if (!tsType)
9
- return "interface{}";
10
- // If it's a simple identifier (alphanumeric), pass through
11
- if (/^[A-Za-z_][A-Za-z0-9_]*$/.test(tsType))
12
- return "*" + tsType;
13
- // If it's a TypeScript inline type with braces, use interface{}
14
- return "interface{}";
1
+ /** Go language adapter. */
2
+ import { pascalCase } from 'change-case';
3
+ import { collectImports, getTemplate, registerHelpers, } from '../../helpers/handlebars.js';
4
+ import { genericArgument, genericArguments, isBooleanLiteral, isInlineObject, isNumberLiteral, isStringLiteral, splitTopLevel, stripOuterParens, unwrapNullable, } from '../type-utils.js';
5
+ import { getPackageVersion, getVisibleGroups, getVisibleSchemas, hasEventStreams, } from '../shared.js';
6
+ import { createDocumentationFiles } from '../documentation.js';
7
+ const GO_PRIMITIVES = {
8
+ string: 'string',
9
+ number: 'float64',
10
+ integer: 'int',
11
+ boolean: 'bool',
12
+ any: 'interface{}',
13
+ unknown: 'interface{}',
14
+ void: 'struct{}',
15
+ never: 'interface{}',
16
+ };
17
+ function goType(value) {
18
+ const { type } = unwrapNullable(value);
19
+ const normalized = stripOuterParens(type);
20
+ const union = splitTopLevel(normalized, '|');
21
+ if (union.length > 1) {
22
+ if (union.every(isStringLiteral))
23
+ return 'string';
24
+ if (union.every(isNumberLiteral))
25
+ return 'float64';
26
+ if (union.every(isBooleanLiteral))
27
+ return 'bool';
28
+ return 'interface{}';
29
+ }
30
+ const intersection = splitTopLevel(normalized, '&');
31
+ if (intersection.length > 1 || isInlineObject(normalized))
32
+ return 'map[string]interface{}';
33
+ if (isStringLiteral(normalized))
34
+ return 'string';
35
+ if (isNumberLiteral(normalized))
36
+ return 'float64';
37
+ if (isBooleanLiteral(normalized))
38
+ return 'bool';
39
+ if (GO_PRIMITIVES[normalized])
40
+ return GO_PRIMITIVES[normalized];
41
+ const array = genericArgument(normalized, 'Array');
42
+ if (array !== undefined)
43
+ return `[]${goType(array)}`;
44
+ const record = genericArguments(normalized, 'Record');
45
+ if (record?.length === 2)
46
+ return `map[string]${goType(record[1])}`;
47
+ const map = genericArgument(normalized, 'Map');
48
+ if (map !== undefined)
49
+ return `map[string]${goType(map)}`;
50
+ return normalized;
51
+ }
52
+ const GO_KEYWORDS = new Set([
53
+ 'break',
54
+ 'default',
55
+ 'func',
56
+ 'interface',
57
+ 'select',
58
+ 'case',
59
+ 'defer',
60
+ 'go',
61
+ 'map',
62
+ 'struct',
63
+ 'chan',
64
+ 'else',
65
+ 'goto',
66
+ 'package',
67
+ 'switch',
68
+ 'const',
69
+ 'fallthrough',
70
+ 'if',
71
+ 'range',
72
+ 'type',
73
+ 'continue',
74
+ 'for',
75
+ 'import',
76
+ 'return',
77
+ 'var',
78
+ ]);
79
+ function goIdentifier(value) {
80
+ const name = value.replace(/[^a-zA-Z0-9_]/g, '_');
81
+ const valid = /^[A-Za-z_]/.test(name) ? name : `value_${name}`;
82
+ return GO_KEYWORDS.has(valid) ? `${valid}_` : valid;
15
83
  }
16
- function goPropertyType(tsType) {
17
- const t = tsType.trim();
18
- const MAP = {
19
- string: "string",
20
- number: "float64",
21
- integer: "int",
22
- boolean: "bool",
23
- any: "interface{}",
24
- unknown: "interface{}",
84
+ function transformParameter(parameter) {
85
+ const targetType = goType(parameter.type);
86
+ return {
87
+ ...parameter,
88
+ name: goIdentifier(parameter.name),
89
+ targetType,
90
+ inputType: parameter.required ? targetType : `*${targetType}`,
25
91
  };
26
- if (MAP[t])
27
- return MAP[t];
28
- // Array<T>
29
- const arr = t.match(/^Array<(.+)>$/);
30
- if (arr)
31
- return `[]${goPropertyType(arr[1])}`;
32
- // Record<K, V>
33
- const rec = t.match(/^Record<(.+),\s*(.+)>$/);
34
- if (rec)
35
- return `map[${goPropertyType(rec[1])}]${goPropertyType(rec[2])}`;
36
- // TypeScript union literals → string
37
- if (/^["']/.test(t))
38
- return "string";
39
- return t;
40
92
  }
41
- let goHelpersRegistered = false;
42
- function registerGoHelpers() {
43
- if (goHelpersRegistered)
44
- return;
45
- goHelpersRegistered = true;
46
- Handlebars.registerHelper("goQueryType", (tsType) => goTypeExpr(tsType));
47
- Handlebars.registerHelper("goPropertyType", (tsType) => goPropertyType(tsType));
93
+ function transformSchema(schema) {
94
+ const enumValues = schema.enumValues ?? [];
95
+ const enumType = enumValues.every((value) => typeof value === 'number')
96
+ ? 'float64'
97
+ : 'string';
98
+ return {
99
+ ...schema,
100
+ external: schema.ownership?.kind === 'external',
101
+ enumType,
102
+ enumValues: enumValues.map((value, index) => ({
103
+ name: typeof value === 'string' ? value : `Value${index + 1}`,
104
+ value: typeof value === 'string' ? JSON.stringify(value) : String(value),
105
+ })),
106
+ aliasType: schema.aliasType
107
+ ? goType(schema.aliasType)
108
+ : schema.additionalPropertiesType
109
+ ? goType(`Record<string, ${schema.additionalPropertiesType}>`)
110
+ : 'interface{}',
111
+ properties: schema.properties.map((property) => ({
112
+ ...property,
113
+ targetType: property.type === 'string' &&
114
+ (property.format === 'date' || property.format === 'date-time')
115
+ ? 'time.Time'
116
+ : goType(property.type),
117
+ optional: !!property.nullable || !property.required,
118
+ })),
119
+ };
48
120
  }
49
121
  export class GoAdapter {
50
- language = "go";
51
- async emit(enriched, outputDir, config) {
122
+ language = 'go';
123
+ async emit(enriched, _outputDir, config) {
52
124
  registerHelpers();
53
- registerGoHelpers();
54
125
  const files = [];
55
- const warnings = [];
56
- const schemaNames = new Set(enriched.schemas.map((s) => s.name));
57
- const clientType = config?.clientType ?? "internal";
58
- // ── Visibility filtering ───────────────────────────────────────────────
59
- const visibleGroups = [];
60
- for (const g of enriched.groups) {
61
- if (clientType === "public" && g.visibility === "internal")
62
- continue;
63
- const ops = clientType === "public"
64
- ? g.operations.filter((op) => op.visibility !== "internal")
65
- : g.operations;
66
- if (ops.length === 0)
67
- continue;
68
- visibleGroups.push(ops === g.operations ? g : { ...g, operations: ops });
69
- }
70
- const hasSSE = visibleGroups.some((g) => g.operations.some((op) => op.isEventStream));
71
- const pkgName = (enriched.meta.packageName.split("/").pop() || "sdk")
72
- .replace(/[^a-zA-Z0-9_]/g, "_")
73
- .replace(/^[^a-zA-Z_]/, "sdk");
74
- // ── Emit helper ────────────────────────────────────────────────────────
75
- const emit = (relativePath, templateName, ctx) => {
76
- try {
77
- const tpl = getTemplate("go", templateName);
78
- files.push({ relativePath, content: tpl(ctx) });
79
- }
80
- catch (err) {
81
- warnings.push(`${relativePath}: ${err instanceof Error ? err.message : String(err)}`);
82
- }
126
+ const clientType = config?.clientType ?? 'internal';
127
+ const visibleGroups = getVisibleGroups(enriched, clientType);
128
+ const visibleSchemas = getVisibleSchemas(enriched, visibleGroups, clientType);
129
+ const schemaNames = new Set(visibleSchemas.map((schema) => schema.name));
130
+ const schemas = visibleSchemas.map(transformSchema);
131
+ const packageVersion = getPackageVersion(enriched);
132
+ const hasSSE = hasEventStreams(visibleGroups);
133
+ const moduleName = enriched.meta.packageName
134
+ .replace(/^@/, '')
135
+ .split('/')
136
+ .filter(Boolean)
137
+ .map((part) => part.replace(/[^a-zA-Z0-9._~-]/g, '-'))
138
+ .join('/') || 'sdk';
139
+ const pkgName = (moduleName.split('/').pop() || 'sdk')
140
+ .replace(/[^a-zA-Z0-9_]/g, '_')
141
+ .replace(/^[^a-zA-Z_]/, 'sdk');
142
+ const emit = (relativePath, templateName, context) => {
143
+ files.push({
144
+ relativePath,
145
+ content: getTemplate('go', templateName)(context),
146
+ });
83
147
  };
84
- // ── Root files ─────────────────────────────────────────────────────────
85
- emit("go.mod", "go-mod", {
86
- ...enriched.meta,
87
- pkgName,
88
- });
89
- emit("README.md", "readme", {
148
+ emit('go.mod', 'go-mod', { ...enriched.meta, packageVersion, moduleName });
149
+ emit('README.md', 'readme', {
90
150
  ...enriched.meta,
151
+ packageVersion,
91
152
  groups: visibleGroups,
92
- schemas: enriched.schemas,
153
+ schemas,
93
154
  securitySchemes: enriched.securitySchemes,
94
155
  hasSSE,
95
156
  pkgName,
96
157
  });
97
- // ── Core package files ─────────────────────────────────────────────────
98
- emit("client.go", "client", {
158
+ emit('client.go', 'client', {
99
159
  ...enriched.meta,
160
+ packageVersion,
100
161
  groups: visibleGroups,
101
162
  securitySchemes: enriched.securitySchemes,
102
163
  hasSSE,
103
164
  pkgName,
104
- clientType,
165
+ clientType: config?.clientType ?? 'internal',
105
166
  });
106
- emit("transport.go", "transport", {
167
+ emit('transport.go', 'transport', {
107
168
  securitySchemes: enriched.securitySchemes,
169
+ packageVersion,
108
170
  pkgName,
109
171
  });
110
- emit("errors.go", "errors", {
111
- pkgName,
112
- });
113
- emit("types.go", "types", {
114
- schemas: enriched.schemas,
172
+ emit('errors.go', 'errors', { pkgName });
173
+ emit('types.go', 'types', {
174
+ schemas,
115
175
  pkgName,
176
+ needsTime: schemas.some((schema) => schema.properties.some((property) => property.targetType === 'time.Time')),
116
177
  });
117
- emit("utils.go", "utils", {
118
- pkgName,
119
- });
120
- // ── Domain files ───────────────────────────────────────────────────────
178
+ emit('utils.go', 'utils', { pkgName });
121
179
  for (const group of visibleGroups) {
122
- const imports = collectImports(group.operations, schemaNames);
123
- const groupHasSSE = group.operations.some((op) => op.isEventStream);
124
- emit(`${group.fileName}.go`, "domain", {
180
+ const operations = group.operations.map((operation) => {
181
+ const pathParams = operation.pathParams.map(transformParameter);
182
+ const queryParams = operation.queryParams.map(transformParameter);
183
+ const headerParams = operation.headerParams.map(transformParameter);
184
+ const requestBody = operation.requestBody
185
+ ? {
186
+ ...operation.requestBody,
187
+ targetType: goType(operation.requestBody.type),
188
+ inputType: operation.requestBody.required
189
+ ? goType(operation.requestBody.type)
190
+ : `*${goType(operation.requestBody.type)}`,
191
+ }
192
+ : undefined;
193
+ return {
194
+ ...operation,
195
+ pathParams,
196
+ queryParams,
197
+ headerParams,
198
+ requestBody,
199
+ goResponseType: goType(operation.responseType),
200
+ hasQueryParams: queryParams.length > 0,
201
+ hasHeaderParams: headerParams.length > 0,
202
+ needsFormatting: queryParams.length > 0 || headerParams.length > 0,
203
+ };
204
+ });
205
+ emit(`${group.fileName}.go`, 'domain', {
125
206
  ...group,
126
- imports,
127
- hasSSE: groupHasSSE,
207
+ operations,
208
+ imports: collectImports(group.operations, schemaNames),
209
+ hasSSE: operations.some((operation) => operation.isEventStream),
210
+ hasQueryParams: operations.some((operation) => operation.hasQueryParams),
211
+ needsFormatting: operations.some((operation) => operation.needsFormatting),
128
212
  securitySchemes: enriched.securitySchemes,
129
213
  pkgName,
130
214
  });
131
215
  }
132
- return { files, warnings };
216
+ files.push(...createDocumentationFiles({
217
+ meta: enriched.meta,
218
+ groups: visibleGroups,
219
+ schemas: visibleSchemas,
220
+ naming: {
221
+ language: 'Go',
222
+ groupAccessor: (group) => `client.${pascalCase(group.name)}`,
223
+ methodName: (operation) => pascalCase(operation.name),
224
+ typeName: goType,
225
+ sourcePath: (group) => `${group.fileName}.go`,
226
+ },
227
+ }));
228
+ return { files, warnings: [] };
133
229
  }
134
230
  }
135
231
  //# sourceMappingURL=index.js.map