@apollo-deploy/tesseract 1.8.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 +77 -3
  67. package/dist/collector.d.ts.map +1 -1
  68. package/dist/collector.js +198 -20
  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 +8 -9
  75. package/dist/fastify.d.ts.map +1 -1
  76. package/dist/fastify.js +105 -164
  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
package/dist/koa.d.ts.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"koa.d.ts","sourceRoot":"","sources":["../src/koa.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA0CG;AAEH,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAC9C,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,gBAAgB,CAAC;AAE3D,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAC9C,YAAY,EAAE,gBAAgB,EAAE,oBAAoB,EAAE,MAAM,gBAAgB,CAAC;AAE7E,+EAA+E;AAC/E,KAAK,aAAa,GAAG,CAAC,GAAG,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,KAAK,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC;AAEvF;;;;;GAKG;AACH,qBAAa,eAAgB,SAAQ,YAAY;IAC/C;;;;;;;;;OASG;IACH,aAAa,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,oBAAoB,GAAG,aAAa;CAIxF"}
1
+ {"version":3,"file":"koa.d.ts","sourceRoot":"","sources":["../src/koa.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA0CG;AAEH,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAC9C,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,gBAAgB,CAAC;AAE3D,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAC9C,YAAY,EAAE,gBAAgB,EAAE,oBAAoB,EAAE,MAAM,gBAAgB,CAAC;AAE7E,+EAA+E;AAC/E,KAAK,aAAa,GAAG,CACnB,GAAG,EAAE,OAAO,EACZ,IAAI,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,KACtB,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC;AAE1B;;;;;GAKG;AACH,qBAAa,eAAgB,SAAQ,YAAY;IAC/C;;;;;;;;;OASG;IACH,aAAa,CACX,GAAG,EAAE,MAAM,EACX,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,oBAAoB,GAC3B,aAAa;CAIjB"}
package/dist/koa.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"koa.js","sourceRoot":"","sources":["../src/koa.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA0CG;AAEH,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAG9C,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAM9C;;;;;GAKG;AACH,MAAM,OAAO,eAAgB,SAAQ,YAAY;IAC/C;;;;;;;;;OASG;IACH,aAAa,CAAC,GAAW,EAAE,MAAc,EAAE,MAA4B;QACrE,IAAI,CAAC,KAAK,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;QAChC,OAAO,CAAC,IAAI,EAAE,IAAI,EAAE,EAAE,CAAC,IAAI,EAAE,CAAC;IAChC,CAAC;CACF"}
1
+ {"version":3,"file":"koa.js","sourceRoot":"","sources":["../src/koa.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA0CG;AAEH,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAG9C,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAS9C;;;;;GAKG;AACH,MAAM,OAAO,eAAgB,SAAQ,YAAY;IAC/C;;;;;;;;;OASG;IACH,aAAa,CACX,GAAW,EACX,MAAc,EACd,MAA4B;QAE5B,IAAI,CAAC,KAAK,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;QAChC,OAAO,CAAC,IAAI,EAAE,IAAI,EAAE,EAAE,CAAC,IAAI,EAAE,CAAC;IAChC,CAAC;CACF"}
@@ -1 +1 @@
1
- {"version":3,"file":"nestjs.d.ts","sourceRoot":"","sources":["../src/nestjs.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2DG;AAKH,OAAO,CAAC,MAAM,CAAC;IAEb,UAAU,OAAO,CAAC;QAChB,SAAS,cAAc,CAAC,GAAG,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,WAAW,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAAC;QAC3G,SAAS,WAAW,CAAC,GAAG,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,WAAW,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC;KAC5F;CACF;AAED,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAE9C,OAAO,KAAK,EAAE,cAAc,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAC7E,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,qBAAqB,CAAC;AAE/D,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAC9C,YAAY,EAAE,gBAAgB,EAAE,oBAAoB,EAAE,MAAM,gBAAgB,CAAC;AAyB7E,MAAM,WAAW,eAAgB,SAAQ,cAAc;IACrD,0FAA0F;IAC1F,MAAM,CAAC,EAAE,mBAAmB,CAAC;CAC9B;AAED;;;;;;;;GAQG;AACH,wBAAgB,SAAS,CAAC,MAAM,EAAE,eAAe,GAAG,eAAe,CAIlE;AAED;;;;;;;;GAQG;AACH,wBAAgB,SAAS,CAAC,MAAM,EAAE,IAAI,CAAC,eAAe,EAAE,QAAQ,CAAC,GAAG,cAAc,CAIjF;AAID;;;;;;;;;GASG;AACH,wBAAgB,0BAA0B,CACxC,WAAW,EAAE,QAAQ,EAAE,EACvB,SAAS,EAAE,YAAY,GACtB,IAAI,CAkCN"}
1
+ {"version":3,"file":"nestjs.d.ts","sourceRoot":"","sources":["../src/nestjs.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2DG;AAKH,OAAO,CAAC,MAAM,CAAC;IAEb,UAAU,OAAO,CAAC;QAChB,SAAS,cAAc,CACrB,GAAG,EAAE,OAAO,EACZ,KAAK,EAAE,OAAO,EACd,MAAM,EAAE,MAAM,EACd,WAAW,CAAC,EAAE,MAAM,GAAG,MAAM,GAC5B,IAAI,CAAC;QACR,SAAS,WAAW,CAClB,GAAG,EAAE,OAAO,EACZ,MAAM,EAAE,MAAM,EACd,WAAW,CAAC,EAAE,MAAM,GAAG,MAAM,GAC5B,OAAO,CAAC;KACZ;CACF;AAED,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAE9C,OAAO,KAAK,EAAE,cAAc,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAC7E,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,qBAAqB,CAAC;AAE/D,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAC9C,YAAY,EAAE,gBAAgB,EAAE,oBAAoB,EAAE,MAAM,gBAAgB,CAAC;AAyB7E,MAAM,WAAW,eAAgB,SAAQ,cAAc;IACrD,0FAA0F;IAC1F,MAAM,CAAC,EAAE,mBAAmB,CAAC;CAC9B;AAED;;;;;;;;GAQG;AACH,wBAAgB,SAAS,CAAC,MAAM,EAAE,eAAe,GAAG,eAAe,CASlE;AAED;;;;;;;;GAQG;AACH,wBAAgB,SAAS,CACvB,MAAM,EAAE,IAAI,CAAC,eAAe,EAAE,QAAQ,CAAC,GACtC,cAAc,CAIhB;AAID;;;;;;;;;GASG;AACH,wBAAgB,0BAA0B,CACxC,WAAW,EAAE,QAAQ,EAAE,EACvB,SAAS,EAAE,YAAY,GACtB,IAAI,CAiDN"}
package/dist/nestjs.js CHANGED
@@ -86,8 +86,14 @@ const NEST_HTTP_METHODS = {
86
86
  * ```
87
87
  */
88
88
  export function SDKMethod(config) {
89
- return (target, propertyKey) => {
90
- Reflect.defineMetadata(SDK_METHOD_META, config, target, propertyKey);
89
+ return (target, propertyKey, descriptor) => {
90
+ const handler = descriptor?.value;
91
+ if (typeof handler === 'function') {
92
+ Reflect.defineMetadata(SDK_METHOD_META, config, handler);
93
+ }
94
+ else {
95
+ Reflect.defineMetadata(SDK_METHOD_META, config, target, propertyKey);
96
+ }
91
97
  };
92
98
  }
93
99
  /**
@@ -117,27 +123,48 @@ export function SDKDomain(config) {
117
123
  */
118
124
  export function collectFromNestControllers(controllers, collector) {
119
125
  for (const ControllerClass of controllers) {
120
- // NestJS stores the controller path prefix under 'path' metadata on the class
121
- const rawPrefix = (Reflect.getMetadata(NEST_PATH_META, ControllerClass) ?? '');
122
- const prefix = rawPrefix.startsWith('/') ? rawPrefix : '/' + rawPrefix;
126
+ const controllerPaths = toPaths(Reflect.getMetadata(NEST_PATH_META, ControllerClass));
123
127
  const domainMeta = Reflect.getMetadata(SDK_DOMAIN_META, ControllerClass);
124
- collector.domain(prefix, domainMeta);
125
128
  const prototype = ControllerClass.prototype;
129
+ for (const controllerPath of controllerPaths) {
130
+ collector.domain(controllerPath, domainMeta);
131
+ }
126
132
  for (const key of Object.getOwnPropertyNames(prototype)) {
127
133
  if (key === 'constructor')
128
134
  continue;
129
- const sdkConfig = Reflect.getMetadata(SDK_METHOD_META, prototype, key);
135
+ const handler = prototype[key];
136
+ if (typeof handler !== 'function')
137
+ continue;
138
+ const sdkConfig = Reflect.getMetadata(SDK_METHOD_META, handler);
130
139
  if (!sdkConfig || sdkConfig.exclude)
131
140
  continue;
132
- const nestMethod = Reflect.getMetadata(NEST_METHOD_META, prototype, key);
133
- const nestPath = (Reflect.getMetadata(NEST_PATH_META, prototype, key) ?? '');
134
- const method = nestMethod !== undefined ? (NEST_HTTP_METHODS[nestMethod] ?? 'GET') : 'GET';
135
- const rawTail = nestPath.startsWith('/') ? nestPath : '/' + nestPath;
136
- const url = prefix === '/' ? rawTail : prefix + (rawTail === '/' ? '' : rawTail);
141
+ const nestMethod = Reflect.getMetadata(NEST_METHOD_META, handler);
142
+ const method = nestMethod === undefined ? 'GET' : NEST_HTTP_METHODS[nestMethod];
143
+ if (!method || method === 'ALL') {
144
+ throw new Error(`Unsupported NestJS request method on ${ControllerClass.name}.${key}`);
145
+ }
146
+ const methodPaths = toPaths(Reflect.getMetadata(NEST_PATH_META, handler));
137
147
  const { schema, ...routeSdk } = sdkConfig;
138
- const routeConfig = { sdk: routeSdk, schema };
139
- collector.route(url, method, routeConfig);
148
+ for (const controllerPath of controllerPaths) {
149
+ for (const methodPath of methodPaths) {
150
+ collector.route(joinPaths(controllerPath, methodPath), method, {
151
+ sdk: routeSdk,
152
+ schema,
153
+ });
154
+ }
155
+ }
140
156
  }
141
157
  }
142
158
  }
159
+ function toPaths(value) {
160
+ const values = Array.isArray(value) ? value : [value ?? ''];
161
+ return values.map((path) => joinPaths(String(path)));
162
+ }
163
+ function joinPaths(...parts) {
164
+ const path = parts
165
+ .flatMap((part) => part.split('/'))
166
+ .filter(Boolean)
167
+ .join('/');
168
+ return path ? `/${path}` : '/';
169
+ }
143
170
  //# sourceMappingURL=nestjs.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"nestjs.js","sourceRoot":"","sources":["../src/nestjs.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"nestjs.js","sourceRoot":"","sources":["../src/nestjs.ts"],"names":[],"mappings":"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"}
@@ -1,15 +1,4 @@
1
- /**
2
- * Enrichment — transforms raw SDKIR into an enriched, compiler-ready IR.
3
- * Responsibilities:
4
- * - Symbol resolution
5
- * - Import graph construction
6
- * - Topological schema ordering
7
- * - Domain allocation
8
- * - Render + serialization decisions
9
- * - Method normalization (dedupe)
10
- * - Operation signatures
11
- * - Documentation blocks
12
- */
13
- import type { SDKIR, EnrichedSDKIR } from "../types/ir.js";
1
+ /** Transforms raw SDK IR into the compiler-ready representation. */
2
+ import type { SDKIR, EnrichedSDKIR } from '../types/ir.js';
14
3
  export declare function enrich(ir: SDKIR): EnrichedSDKIR;
15
4
  //# sourceMappingURL=enrich.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"enrich.d.ts","sourceRoot":"","sources":["../../src/pipeline/enrich.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,OAAO,KAAK,EACV,KAAK,EACL,aAAa,EAWd,MAAM,gBAAgB,CAAC;AAQxB,wBAAgB,MAAM,CAAC,EAAE,EAAE,KAAK,GAAG,aAAa,CAwB/C"}
1
+ {"version":3,"file":"enrich.d.ts","sourceRoot":"","sources":["../../src/pipeline/enrich.ts"],"names":[],"mappings":"AAAA,oEAAoE;AAEpE,OAAO,KAAK,EACV,KAAK,EACL,aAAa,EAWd,MAAM,gBAAgB,CAAC;AAKxB,wBAAgB,MAAM,CAAC,EAAE,EAAE,KAAK,GAAG,aAAa,CAiB/C"}
@@ -1,303 +1,248 @@
1
- /**
2
- * Enrichment transforms raw SDKIR into an enriched, compiler-ready IR.
3
- * Responsibilities:
4
- * - Symbol resolution
5
- * - Import graph construction
6
- * - Topological schema ordering
7
- * - Domain allocation
8
- * - Render + serialization decisions
9
- * - Method normalization (dedupe)
10
- * - Operation signatures
11
- * - Documentation blocks
12
- */
13
- import { deduplicateMethodNames } from "../utils/naming.js";
14
- // ─────────────────────────────────────────────────────────────────────────────
15
- // Entry Point
16
- // ─────────────────────────────────────────────────────────────────────────────
1
+ /** Transforms raw SDK IR into the compiler-ready representation. */
2
+ import { deduplicateMethodNames } from '../utils/naming.js';
3
+ const TYPE_IDENTIFIER = /\b[A-Z][A-Za-z0-9_]*\b/g;
17
4
  export function enrich(ir) {
18
5
  const symbolTable = createSymbolTable(ir.schemas);
19
6
  const importGraph = createImportGraph(ir.schemas, symbolTable);
20
- const schemaOrder = topoSortSchemas(ir.schemas, importGraph);
21
- const renderDecisions = createRenderDecisions(ir.schemas);
22
- const serialization = createSerializationHints(ir.schemas);
23
7
  const groups = normalizeOperations(ir.groups);
24
- const signatures = createSignatures(groups);
25
- const docBlocks = createDocBlocks(groups);
26
8
  return {
27
9
  ...ir,
28
10
  groups,
29
11
  symbolTable,
30
12
  importGraph,
31
- schemaOrder,
32
- domainAllocations: createDomainAllocations(groups, ir.schemas),
33
- signatures,
34
- docBlocks,
35
- renderDecisions,
36
- serialization,
13
+ schemaOrder: topoSortSchemas(ir.schemas, importGraph),
14
+ domainAllocations: createDomainAllocations(groups, ir.schemas, symbolTable),
15
+ signatures: createSignatures(groups),
16
+ docBlocks: createDocBlocks(groups),
17
+ renderDecisions: createRenderDecisions(ir.schemas),
18
+ serialization: createSerializationHints(ir.schemas),
37
19
  };
38
20
  }
39
- // ─────────────────────────────────────────────────────────────────────────────
40
- // Symbol Table
41
- // ─────────────────────────────────────────────────────────────────────────────
42
21
  function createSymbolTable(schemas) {
43
22
  const table = {};
44
23
  for (const schema of schemas) {
45
- const ownershipKind = schema.ownership?.kind ?? "types";
24
+ const ownership = schema.ownership?.kind;
46
25
  table[schema.name] = {
47
- definedIn: ownershipKind === "generated" ? "types" : ownershipKind,
48
- kind: schema.isEnum ? "enum" : schema.isTypeAlias ? "alias" : "interface",
49
- isExternal: schema.ownership?.kind === "external",
26
+ definedIn: ownership === 'external' ? 'external' : 'types',
27
+ kind: schema.isEnum
28
+ ? 'enum'
29
+ : schema.isUnionType
30
+ ? 'union'
31
+ : schema.isTypeAlias
32
+ ? 'alias'
33
+ : 'interface',
34
+ isExternal: ownership === 'external',
50
35
  importPath: schema.ownership?.externalImport?.importPath,
51
36
  };
52
37
  }
53
38
  return table;
54
39
  }
55
- // ─────────────────────────────────────────────────────────────────────────────
56
- // Import Graph
57
- // ─────────────────────────────────────────────────────────────────────────────
58
40
  function createImportGraph(schemas, symbolTable) {
59
41
  const graph = {};
60
- const schemaNames = new Set(schemas.map((s) => s.name));
61
42
  for (const schema of schemas) {
62
- const deps = new Set();
63
- collectSchemaDependencies(schema, symbolTable, deps, schema.name);
64
- graph[schema.name] = [...deps].filter((d) => schemaNames.has(d));
43
+ const dependencies = new Set();
44
+ collectSchemaDependencies(schema, symbolTable, dependencies);
45
+ dependencies.delete(schema.name);
46
+ graph[schema.name] = [...dependencies].sort();
65
47
  }
66
48
  return graph;
67
49
  }
68
- function collectSchemaDependencies(schema, symbolTable, out, self) {
69
- if (schema.extends) {
70
- const ref = extractSimpleRef(schema.extends);
71
- if (ref && ref !== self && symbolTable[ref]) {
72
- out.add(ref);
73
- }
74
- }
75
- for (const prop of schema.properties) {
76
- collectTypeDependencies(prop.type, symbolTable, out, self);
77
- }
78
- if (schema.unionMembers) {
79
- for (const t of schema.unionMembers) {
80
- collectTypeDependencies(t, symbolTable, out, self);
81
- }
50
+ function collectSchemaDependencies(schema, symbolTable, out) {
51
+ collectTypeDependencies(schema.extends, symbolTable, out);
52
+ collectTypeDependencies(schema.aliasType, symbolTable, out);
53
+ collectTypeDependencies(schema.additionalPropertiesType, symbolTable, out);
54
+ for (const property of schema.properties) {
55
+ collectTypeDependencies(property.type, symbolTable, out);
82
56
  }
83
- if (schema.intersectionMembers) {
84
- for (const t of schema.intersectionMembers) {
85
- collectTypeDependencies(t, symbolTable, out, self);
86
- }
57
+ for (const member of schema.unionMembers ?? []) {
58
+ collectTypeDependencies(member, symbolTable, out);
87
59
  }
88
- if (schema.additionalPropertiesType) {
89
- collectTypeDependencies(schema.additionalPropertiesType, symbolTable, out, self);
60
+ for (const member of schema.intersectionMembers ?? []) {
61
+ collectTypeDependencies(member, symbolTable, out);
90
62
  }
91
63
  }
92
- function collectTypeDependencies(typeStr, symbolTable, out, self) {
93
- const matches = typeStr.match(/\b[A-Z][a-zA-Z0-9]+\b/g) ?? [];
94
- for (const ref of matches) {
95
- if (ref !== self &&
96
- ref !== "Array" &&
97
- ref !== "Record" &&
98
- symbolTable[ref]) {
99
- out.add(ref);
100
- }
64
+ function collectTypeDependencies(type, symbolTable, out) {
65
+ if (!type)
66
+ return;
67
+ const unquoted = type.replace(/(["'`])(?:\\.|(?!\1).)*\1/g, '');
68
+ for (const name of unquoted.match(TYPE_IDENTIFIER) ?? []) {
69
+ if (symbolTable[name])
70
+ out.add(name);
101
71
  }
102
72
  }
103
- function extractSimpleRef(typeStr) {
104
- const match = /^([A-Z][a-zA-Z0-9]+)$/.exec(typeStr);
105
- return match?.[1];
106
- }
107
- // ─────────────────────────────────────────────────────────────────────────────
108
- // Topological Sort
109
- // ─────────────────────────────────────────────────────────────────────────────
110
73
  function topoSortSchemas(schemas, graph) {
111
74
  const visited = new Set();
112
75
  const visiting = new Set();
113
76
  const order = [];
114
- function visit(name) {
115
- if (visited.has(name))
116
- return;
117
- if (visiting.has(name))
77
+ const visit = (name) => {
78
+ if (visited.has(name) || visiting.has(name))
118
79
  return;
119
80
  visiting.add(name);
120
- for (const dep of graph[name] ?? []) {
121
- visit(dep);
122
- }
81
+ for (const dependency of graph[name] ?? [])
82
+ visit(dependency);
123
83
  visiting.delete(name);
124
84
  visited.add(name);
125
85
  order.push(name);
126
- }
127
- for (const s of schemas) {
128
- visit(s.name);
129
- }
86
+ };
87
+ for (const schema of schemas)
88
+ visit(schema.name);
130
89
  return order;
131
90
  }
132
- // ─────────────────────────────────────────────────────────────────────────────
133
- // Domain Allocation
134
- // ─────────────────────────────────────────────────────────────────────────────
135
- function createDomainAllocations(groups, schemas) {
136
- const map = new Map();
137
- // Schema ownership-based grouping
91
+ function createDomainAllocations(groups, schemas, symbolTable) {
92
+ const allocations = new Map();
138
93
  for (const schema of schemas) {
139
- if (schema.ownership?.kind === "generated" && schema.ownership.domainFile) {
140
- ensure(map, schema.ownership.domainFile).add(schema.name);
94
+ const fileName = schema.ownership?.domainFile;
95
+ if (schema.ownership?.kind === 'generated' && fileName) {
96
+ getOrCreate(allocations, fileName).add(schema.name);
141
97
  }
142
98
  }
143
- // Operation-driven grouping
144
99
  for (const group of groups) {
145
- const set = ensure(map, group.fileName);
146
- for (const op of group.operations) {
147
- collectOperationRefs(op, set);
100
+ const names = getOrCreate(allocations, group.fileName);
101
+ for (const operation of group.operations) {
102
+ collectOperationRefs(operation, symbolTable, names);
148
103
  }
149
104
  }
150
- return [...map.entries()].map(([fileName, schemas]) => ({
105
+ return [...allocations]
106
+ .sort(([left], [right]) => left.localeCompare(right))
107
+ .map(([fileName, names]) => ({
151
108
  fileName,
152
- schemas: [...schemas],
109
+ schemas: [...names].sort(),
153
110
  }));
154
111
  }
155
- function ensure(map, key) {
156
- if (!map.has(key))
157
- map.set(key, new Set());
158
- return map.get(key);
112
+ function getOrCreate(map, key) {
113
+ let value = map.get(key);
114
+ if (!value) {
115
+ value = new Set();
116
+ map.set(key, value);
117
+ }
118
+ return value;
159
119
  }
160
- function collectOperationRefs(op, out) {
161
- const scan = (value) => {
162
- if (!value)
163
- return;
164
- const matches = value.match(/\b[A-Z][a-zA-Z0-9]+\b/g) ?? [];
165
- for (const m of matches) {
166
- if (m !== "Array" && m !== "Record")
167
- out.add(m);
168
- }
169
- };
170
- scan(op.responseType);
171
- scan(op.requestBody?.type);
172
- scan(op.queryType);
173
- for (const p of [...op.pathParams, ...op.queryParams, ...op.headerParams]) {
174
- scan(p.type);
120
+ function collectOperationRefs(operation, symbolTable, out) {
121
+ collectTypeDependencies(operation.responseType, symbolTable, out);
122
+ collectTypeDependencies(operation.eventSchema, symbolTable, out);
123
+ collectTypeDependencies(operation.sseReturnType, symbolTable, out);
124
+ collectTypeDependencies(operation.requestBody?.type, symbolTable, out);
125
+ collectTypeDependencies(operation.queryType, symbolTable, out);
126
+ collectTypeDependencies(operation.headerType, symbolTable, out);
127
+ collectTypeDependencies(operation.cookieType, symbolTable, out);
128
+ for (const parameter of [
129
+ ...operation.pathParams,
130
+ ...operation.queryParams,
131
+ ...operation.headerParams,
132
+ ...operation.cookieParams,
133
+ ]) {
134
+ collectTypeDependencies(parameter.type, symbolTable, out);
175
135
  }
176
136
  }
177
- // ─────────────────────────────────────────────────────────────────────────────
178
- // Render Decisions
179
- // ─────────────────────────────────────────────────────────────────────────────
180
137
  function createRenderDecisions(schemas) {
181
- const out = {};
182
- for (const s of schemas) {
183
- if (s.ownership?.kind === "external")
184
- out[s.name] = "skip";
185
- else if (s.isEnum)
186
- out[s.name] = "enum";
187
- else if (s.isTypeAlias)
188
- out[s.name] = "type-alias";
189
- else if (s.isUnionType)
190
- out[s.name] = "union";
191
- else
192
- out[s.name] = "interface";
193
- }
194
- return out;
138
+ const decisions = {};
139
+ for (const schema of schemas) {
140
+ decisions[schema.name] =
141
+ schema.ownership?.kind === 'external'
142
+ ? 'skip'
143
+ : schema.isEnum
144
+ ? 'enum'
145
+ : schema.isUnionType
146
+ ? 'union'
147
+ : schema.isTypeAlias
148
+ ? 'type-alias'
149
+ : 'interface';
150
+ }
151
+ return decisions;
195
152
  }
196
- // ─────────────────────────────────────────────────────────────────────────────
197
- // Serialization Hints
198
- // ─────────────────────────────────────────────────────────────────────────────
199
153
  function createSerializationHints(schemas) {
200
154
  const hints = {};
201
155
  for (const schema of schemas) {
202
- const dateProps = schema.properties
203
- .filter((p) => p.format === "date" || p.format === "date-time")
204
- .map((p) => p.name);
205
- if (dateProps.length) {
206
- hints[schema.name] = { dateProperties: dateProps };
207
- }
156
+ const dateProperties = schema.properties
157
+ .filter(({ format }) => format === 'date' || format === 'date-time')
158
+ .map(({ name }) => name);
159
+ if (dateProperties.length)
160
+ hints[schema.name] = { dateProperties };
208
161
  }
209
162
  return hints;
210
163
  }
211
- // ─────────────────────────────────────────────────────────────────────────────
212
- // Operation Normalization
213
- // ─────────────────────────────────────────────────────────────────────────────
214
164
  function normalizeOperations(groups) {
215
165
  return groups.map((group) => {
216
- const deduped = deduplicateMethodNames(group.operations.map((o) => o.name));
166
+ const names = deduplicateMethodNames(group.operations.map(({ name }) => name));
217
167
  return {
218
168
  ...group,
219
- operations: group.operations.map((op, i) => ({
220
- ...op,
221
- name: deduped[i],
169
+ operations: group.operations.map((operation, index) => ({
170
+ ...operation,
171
+ name: names[index],
222
172
  })),
223
173
  };
224
174
  });
225
175
  }
226
- // ─────────────────────────────────────────────────────────────────────────────
227
- // Signatures
228
- // ─────────────────────────────────────────────────────────────────────────────
229
176
  function createSignatures(groups) {
230
- const out = {};
177
+ const signatures = {};
231
178
  for (const group of groups) {
232
- for (const op of group.operations) {
233
- const params = [];
234
- for (const p of op.pathParams) {
235
- params.push(`${p.name}: ${p.type}`);
236
- }
237
- if (op.requestBody) {
238
- params.push(`body: ${op.requestBody.type}`);
239
- }
240
- if (op.queryType) {
241
- params.push(`query: ${op.queryType}`);
242
- }
243
- else {
244
- const req = op.queryParams
245
- .filter((p) => p.required)
246
- .map((p) => `${p.name}: ${p.type}`);
247
- const opt = op.queryParams
248
- .filter((p) => !p.required)
249
- .map((p) => `${p.name}?: ${p.type}`);
250
- if (req.length)
251
- params.push(req.join(", "));
252
- if (opt.length)
253
- params.push(opt.join(", "));
254
- }
255
- for (const h of op.headerParams) {
256
- params.push(`${h.name}${h.required ? "" : "?"}: ${h.type}`);
257
- }
258
- const returnType = op.isEventStream
259
- ? `AsyncIterable<${op.responseType}>`
260
- : op.responseType;
261
- out[`${group.name}.${op.name}`] = {
262
- params: params.join(", "),
263
- returnType,
179
+ for (const operation of group.operations) {
180
+ signatures[`${group.name}.${operation.name}`] = {
181
+ params: buildOperationParams(operation).join(', '),
182
+ returnType: operation.isEventStream
183
+ ? operation.sseReturnType
184
+ ? `AsyncIterable<${operation.sseReturnType}>`
185
+ : `AsyncIterable<SSEEvent<${operation.eventSchema ?? operation.responseType}>>`
186
+ : operation.responseType,
264
187
  isAsync: true,
265
188
  };
266
189
  }
267
190
  }
268
- return out;
191
+ return signatures;
192
+ }
193
+ function buildOperationParams(operation) {
194
+ const params = operation.pathParams.map(({ name, type }) => `${name}: ${type}`);
195
+ if (operation.requestBody) {
196
+ params.push(`input${operation.requestBody.required ? '' : '?'}: ${operation.requestBody.type}`);
197
+ }
198
+ if (operation.queryType) {
199
+ params.push(`query${hasRequired(operation.queryParams) ? '' : '?'}: ${operation.queryType}`);
200
+ }
201
+ if (operation.headerType) {
202
+ params.push(`headerOptions${hasRequired(operation.headerParams) ? '' : '?'}: ${operation.headerType}`);
203
+ }
204
+ if (operation.cookieType) {
205
+ params.push(`cookies${hasRequired(operation.cookieParams) ? '' : '?'}: ${operation.cookieType}`);
206
+ }
207
+ return params;
208
+ }
209
+ function hasRequired(parameters) {
210
+ return parameters.some(({ required }) => required);
269
211
  }
270
- // ─────────────────────────────────────────────────────────────────────────────
271
- // Doc Blocks
272
- // ─────────────────────────────────────────────────────────────────────────────
273
212
  function createDocBlocks(groups) {
274
- const out = {};
213
+ const blocks = {};
275
214
  for (const group of groups) {
276
- for (const op of group.operations) {
215
+ for (const operation of group.operations) {
277
216
  const lines = [];
278
- if (op.summary)
279
- lines.push(op.summary);
280
- if (op.description && op.description !== op.summary) {
217
+ if (operation.summary)
218
+ lines.push(operation.summary);
219
+ if (operation.description &&
220
+ operation.description !== operation.summary) {
281
221
  if (lines.length)
282
- lines.push("");
283
- lines.push(op.description);
284
- }
285
- for (const p of op.pathParams) {
286
- lines.push(`@param ${p.name} ${p.description ?? ""}`);
222
+ lines.push('');
223
+ lines.push(operation.description);
287
224
  }
288
- if (op.requestBody) {
289
- lines.push(`@param body ${op.requestBody.type}`);
225
+ for (const parameter of operation.pathParams) {
226
+ lines.push(`@param ${parameter.name}${parameter.description ? ` ${parameter.description}` : ''}`);
290
227
  }
291
- if (op.deprecated) {
292
- lines.push("@deprecated");
228
+ if (operation.requestBody)
229
+ lines.push('@param input Request body');
230
+ if (operation.queryType)
231
+ lines.push('@param query Query parameters');
232
+ if (operation.headerType)
233
+ lines.push('@param headerOptions Request headers');
234
+ if (operation.deprecated) {
235
+ lines.push(operation.deprecationMessage
236
+ ? `@deprecated ${operation.deprecationMessage}`
237
+ : '@deprecated');
293
238
  }
294
- out[`${group.name}.${op.name}`] = {
295
- summary: op.summary,
296
- description: op.description,
239
+ blocks[`${group.name}.${operation.name}`] = {
240
+ summary: operation.summary,
241
+ description: operation.description,
297
242
  lines,
298
243
  };
299
244
  }
300
245
  }
301
- return out;
246
+ return blocks;
302
247
  }
303
248
  //# sourceMappingURL=enrich.js.map