@seamapi/nextlove-sdk-generator 1.4.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 (287) hide show
  1. package/LICENSE.txt +20 -0
  2. package/README.md +16 -0
  3. package/index.d.ts +6 -0
  4. package/index.js +7 -0
  5. package/index.js.map +1 -0
  6. package/lib/cli.d.ts +2 -0
  7. package/lib/cli.js +53 -0
  8. package/lib/cli.js.map +1 -0
  9. package/lib/fs-util/index.d.ts +2 -0
  10. package/lib/fs-util/index.js +3 -0
  11. package/lib/fs-util/index.js.map +1 -0
  12. package/lib/fs-util/populate-fs.d.ts +1 -0
  13. package/lib/fs-util/populate-fs.js +11 -0
  14. package/lib/fs-util/populate-fs.js.map +1 -0
  15. package/lib/fs-util/write-fs.d.ts +1 -0
  16. package/lib/fs-util/write-fs.js +10 -0
  17. package/lib/fs-util/write-fs.js.map +1 -0
  18. package/lib/generate-csharp-sdk/codegen.d.ts +235 -0
  19. package/lib/generate-csharp-sdk/codegen.js +432 -0
  20. package/lib/generate-csharp-sdk/codegen.js.map +1 -0
  21. package/lib/generate-csharp-sdk/constants.d.ts +1 -0
  22. package/lib/generate-csharp-sdk/constants.js +2 -0
  23. package/lib/generate-csharp-sdk/constants.js.map +1 -0
  24. package/lib/generate-csharp-sdk/generate-csharp-sdk.d.ts +1 -0
  25. package/lib/generate-csharp-sdk/generate-csharp-sdk.js +81 -0
  26. package/lib/generate-csharp-sdk/generate-csharp-sdk.js.map +1 -0
  27. package/lib/generate-csharp-sdk/generate-csproj.d.ts +1 -0
  28. package/lib/generate-csharp-sdk/generate-csproj.js +45 -0
  29. package/lib/generate-csharp-sdk/generate-csproj.js.map +1 -0
  30. package/lib/generate-csharp-sdk/templates/dataclass.d.ts +24 -0
  31. package/lib/generate-csharp-sdk/templates/dataclass.js +468 -0
  32. package/lib/generate-csharp-sdk/templates/dataclass.js.map +1 -0
  33. package/lib/generate-csharp-sdk/templates/fs/csharp-testing.sln +34 -0
  34. package/lib/generate-csharp-sdk/templates/fs/src/Seam/Client/ApiResponse.cs +159 -0
  35. package/lib/generate-csharp-sdk/templates/fs/src/Seam/Client/ClientUtils.cs +280 -0
  36. package/lib/generate-csharp-sdk/templates/fs/src/Seam/Client/ExceptionFactory.cs +12 -0
  37. package/lib/generate-csharp-sdk/templates/fs/src/Seam/Client/GlobalSeamRequestConfiguration.cs +60 -0
  38. package/lib/generate-csharp-sdk/templates/fs/src/Seam/Client/HttpMethod.cs +29 -0
  39. package/lib/generate-csharp-sdk/templates/fs/src/Seam/Client/IAsynchronousSeam.cs +142 -0
  40. package/lib/generate-csharp-sdk/templates/fs/src/Seam/Client/IReadableSeamRequestConfiguration.cs +68 -0
  41. package/lib/generate-csharp-sdk/templates/fs/src/Seam/Client/ISynchronousSeam.cs +103 -0
  42. package/lib/generate-csharp-sdk/templates/fs/src/Seam/Client/Multimap.cs +286 -0
  43. package/lib/generate-csharp-sdk/templates/fs/src/Seam/Client/RequestOptions.cs +74 -0
  44. package/lib/generate-csharp-sdk/templates/fs/src/Seam/Client/RetryConfiguration.cs +21 -0
  45. package/lib/generate-csharp-sdk/templates/fs/src/Seam/Client/Seam.cs +1070 -0
  46. package/lib/generate-csharp-sdk/templates/fs/src/Seam/Client/SeamException.cs +64 -0
  47. package/lib/generate-csharp-sdk/templates/fs/src/Seam/Client/SeamRequestConfiguration.cs +662 -0
  48. package/lib/generate-csharp-sdk/templates/fs/src/Seam/Model/AsbtractModelSchema.cs +62 -0
  49. package/lib/generate-php-sdk/generate-php-sdk.d.ts +1 -0
  50. package/lib/generate-php-sdk/generate-php-sdk.js +127 -0
  51. package/lib/generate-php-sdk/generate-php-sdk.js.map +1 -0
  52. package/lib/generate-php-sdk/index.d.ts +1 -0
  53. package/lib/generate-php-sdk/index.js +2 -0
  54. package/lib/generate-php-sdk/index.js.map +1 -0
  55. package/lib/generate-php-sdk/templates/composer.json.template.d.ts +2 -0
  56. package/lib/generate-php-sdk/templates/composer.json.template.js +25 -0
  57. package/lib/generate-php-sdk/templates/composer.json.template.js.map +1 -0
  58. package/lib/generate-php-sdk/templates/env.example.template.d.ts +2 -0
  59. package/lib/generate-php-sdk/templates/env.example.template.js +4 -0
  60. package/lib/generate-php-sdk/templates/env.example.template.js.map +1 -0
  61. package/lib/generate-php-sdk/templates/gitignore.template.d.ts +2 -0
  62. package/lib/generate-php-sdk/templates/gitignore.template.js +6 -0
  63. package/lib/generate-php-sdk/templates/gitignore.template.js.map +1 -0
  64. package/lib/generate-php-sdk/templates/package.json.template.d.ts +2 -0
  65. package/lib/generate-php-sdk/templates/package.json.template.js +12 -0
  66. package/lib/generate-php-sdk/templates/package.json.template.js.map +1 -0
  67. package/lib/generate-php-sdk/templates/readme.md.template.d.ts +2 -0
  68. package/lib/generate-php-sdk/templates/readme.md.template.js +86 -0
  69. package/lib/generate-php-sdk/templates/readme.md.template.js.map +1 -0
  70. package/lib/generate-php-sdk/templates/smoke-test.template.d.ts +2 -0
  71. package/lib/generate-php-sdk/templates/smoke-test.template.js +30 -0
  72. package/lib/generate-php-sdk/templates/smoke-test.template.js.map +1 -0
  73. package/lib/generate-php-sdk/templates/test-fixture.template.d.ts +2 -0
  74. package/lib/generate-php-sdk/templates/test-fixture.template.js +21 -0
  75. package/lib/generate-php-sdk/templates/test-fixture.template.js.map +1 -0
  76. package/lib/generate-php-sdk/utils/deep-extract-resource-object-schemas.d.ts +16 -0
  77. package/lib/generate-php-sdk/utils/deep-extract-resource-object-schemas.js +97 -0
  78. package/lib/generate-php-sdk/utils/deep-extract-resource-object-schemas.js.map +1 -0
  79. package/lib/generate-php-sdk/utils/deep-flatten-one-of-and-all-of-schema.d.ts +2 -0
  80. package/lib/generate-php-sdk/utils/deep-flatten-one-of-and-all-of-schema.js +95 -0
  81. package/lib/generate-php-sdk/utils/deep-flatten-one-of-and-all-of-schema.js.map +1 -0
  82. package/lib/generate-php-sdk/utils/generate-resource-object-class.d.ts +8 -0
  83. package/lib/generate-php-sdk/utils/generate-resource-object-class.js +73 -0
  84. package/lib/generate-php-sdk/utils/generate-resource-object-class.js.map +1 -0
  85. package/lib/generate-php-sdk/utils/generate-seam-client.d.ts +7 -0
  86. package/lib/generate-php-sdk/utils/generate-seam-client.js +103 -0
  87. package/lib/generate-php-sdk/utils/generate-seam-client.js.map +1 -0
  88. package/lib/generate-php-sdk/utils/get-php-type.d.ts +1 -0
  89. package/lib/generate-php-sdk/utils/get-php-type.js +17 -0
  90. package/lib/generate-php-sdk/utils/get-php-type.js.map +1 -0
  91. package/lib/generate-php-sdk/utils/php-client.d.ts +31 -0
  92. package/lib/generate-php-sdk/utils/php-client.js +130 -0
  93. package/lib/generate-php-sdk/utils/php-client.js.map +1 -0
  94. package/lib/generate-python-sdk/class-file.d.ts +20 -0
  95. package/lib/generate-python-sdk/class-file.js +75 -0
  96. package/lib/generate-python-sdk/class-file.js.map +1 -0
  97. package/lib/generate-python-sdk/generate-python-sdk.d.ts +1 -0
  98. package/lib/generate-python-sdk/generate-python-sdk.js +117 -0
  99. package/lib/generate-python-sdk/generate-python-sdk.js.map +1 -0
  100. package/lib/generate-python-sdk/index.d.ts +1 -0
  101. package/lib/generate-python-sdk/index.js +2 -0
  102. package/lib/generate-python-sdk/index.js.map +1 -0
  103. package/lib/generate-python-sdk/map-python-type.d.ts +2 -0
  104. package/lib/generate-python-sdk/map-python-type.js +26 -0
  105. package/lib/generate-python-sdk/map-python-type.js.map +1 -0
  106. package/lib/generate-python-sdk/templates/conftest.py.template.d.ts +2 -0
  107. package/lib/generate-python-sdk/templates/conftest.py.template.js +12 -0
  108. package/lib/generate-python-sdk/templates/conftest.py.template.js.map +1 -0
  109. package/lib/generate-python-sdk/templates/pyproject.toml.template.d.ts +2 -0
  110. package/lib/generate-python-sdk/templates/pyproject.toml.template.js +21 -0
  111. package/lib/generate-python-sdk/templates/pyproject.toml.template.js.map +1 -0
  112. package/lib/generate-python-sdk/templates/readme.md.template.d.ts +2 -0
  113. package/lib/generate-python-sdk/templates/readme.md.template.js +48 -0
  114. package/lib/generate-python-sdk/templates/readme.md.template.js.map +1 -0
  115. package/lib/generate-python-sdk/templates/routes.py.template.d.ts +2 -0
  116. package/lib/generate-python-sdk/templates/routes.py.template.js +13 -0
  117. package/lib/generate-python-sdk/templates/routes.py.template.js.map +1 -0
  118. package/lib/generate-python-sdk/templates/seam.py.template.d.ts +2 -0
  119. package/lib/generate-python-sdk/templates/seam.py.template.js +74 -0
  120. package/lib/generate-python-sdk/templates/seam.py.template.js.map +1 -0
  121. package/lib/generate-python-sdk/templates/snippets/abstract-routes.template.d.ts +2 -0
  122. package/lib/generate-python-sdk/templates/snippets/abstract-routes.template.js +9 -0
  123. package/lib/generate-python-sdk/templates/snippets/abstract-routes.template.js.map +1 -0
  124. package/lib/generate-python-sdk/templates/snippets/abstract-seam.template.d.ts +2 -0
  125. package/lib/generate-python-sdk/templates/snippets/abstract-seam.template.js +9 -0
  126. package/lib/generate-python-sdk/templates/snippets/abstract-seam.template.js.map +1 -0
  127. package/lib/generate-python-sdk/templates/snippets/resource-dataclass.template.d.ts +5 -0
  128. package/lib/generate-python-sdk/templates/snippets/resource-dataclass.template.js +10 -0
  129. package/lib/generate-python-sdk/templates/snippets/resource-dataclass.template.js.map +1 -0
  130. package/lib/generate-python-sdk/templates/test_smoke.py.template.d.ts +2 -0
  131. package/lib/generate-python-sdk/templates/test_smoke.py.template.js +13 -0
  132. package/lib/generate-python-sdk/templates/test_smoke.py.template.js.map +1 -0
  133. package/lib/generate-python-sdk/templates/utils/deep_attr_dict.py.template.d.ts +2 -0
  134. package/lib/generate-python-sdk/templates/utils/deep_attr_dict.py.template.js +28 -0
  135. package/lib/generate-python-sdk/templates/utils/deep_attr_dict.py.template.js.map +1 -0
  136. package/lib/generate-ruby-sdk/generate-ruby-sdk.d.ts +1 -0
  137. package/lib/generate-ruby-sdk/generate-ruby-sdk.js +132 -0
  138. package/lib/generate-ruby-sdk/generate-ruby-sdk.js.map +1 -0
  139. package/lib/generate-ruby-sdk/index.d.ts +1 -0
  140. package/lib/generate-ruby-sdk/index.js +2 -0
  141. package/lib/generate-ruby-sdk/index.js.map +1 -0
  142. package/lib/generate-ruby-sdk/request.rb.template.d.ts +1 -0
  143. package/lib/generate-ruby-sdk/request.rb.template.js +2 -0
  144. package/lib/generate-ruby-sdk/request.rb.template.js.map +1 -0
  145. package/lib/generate-ruby-sdk/ruby-client.d.ts +35 -0
  146. package/lib/generate-ruby-sdk/ruby-client.js +59 -0
  147. package/lib/generate-ruby-sdk/ruby-client.js.map +1 -0
  148. package/lib/generate-ruby-sdk/templates/base_client.rb.template.d.ts +2 -0
  149. package/lib/generate-ruby-sdk/templates/base_client.rb.template.js +22 -0
  150. package/lib/generate-ruby-sdk/templates/base_client.rb.template.js.map +1 -0
  151. package/lib/generate-ruby-sdk/templates/base_resource.rb.template.d.ts +2 -0
  152. package/lib/generate-ruby-sdk/templates/base_resource.rb.template.js +59 -0
  153. package/lib/generate-ruby-sdk/templates/base_resource.rb.template.js.map +1 -0
  154. package/lib/generate-ruby-sdk/templates/client.rb.template.d.ts +2 -0
  155. package/lib/generate-ruby-sdk/templates/client.rb.template.js +74 -0
  156. package/lib/generate-ruby-sdk/templates/client.rb.template.js.map +1 -0
  157. package/lib/generate-ruby-sdk/templates/gemfile.template.d.ts +2 -0
  158. package/lib/generate-ruby-sdk/templates/gemfile.template.js +7 -0
  159. package/lib/generate-ruby-sdk/templates/gemfile.template.js.map +1 -0
  160. package/lib/generate-ruby-sdk/templates/logger.rb.template.d.ts +2 -0
  161. package/lib/generate-ruby-sdk/templates/logger.rb.template.js +13 -0
  162. package/lib/generate-ruby-sdk/templates/logger.rb.template.js.map +1 -0
  163. package/lib/generate-ruby-sdk/templates/rakefile.template.d.ts +2 -0
  164. package/lib/generate-ruby-sdk/templates/rakefile.template.js +23 -0
  165. package/lib/generate-ruby-sdk/templates/rakefile.template.js.map +1 -0
  166. package/lib/generate-ruby-sdk/templates/readme.md.template.d.ts +2 -0
  167. package/lib/generate-ruby-sdk/templates/readme.md.template.js +184 -0
  168. package/lib/generate-ruby-sdk/templates/readme.md.template.js.map +1 -0
  169. package/lib/generate-ruby-sdk/templates/request.rb.template.d.ts +2 -0
  170. package/lib/generate-ruby-sdk/templates/request.rb.template.js +71 -0
  171. package/lib/generate-ruby-sdk/templates/request.rb.template.js.map +1 -0
  172. package/lib/generate-ruby-sdk/templates/resource_error.rb.template.d.ts +2 -0
  173. package/lib/generate-ruby-sdk/templates/resource_error.rb.template.js +8 -0
  174. package/lib/generate-ruby-sdk/templates/resource_error.rb.template.js.map +1 -0
  175. package/lib/generate-ruby-sdk/templates/resource_errors_support.rb.template.d.ts +2 -0
  176. package/lib/generate-ruby-sdk/templates/resource_errors_support.rb.template.js +10 -0
  177. package/lib/generate-ruby-sdk/templates/resource_errors_support.rb.template.js.map +1 -0
  178. package/lib/generate-ruby-sdk/templates/resource_warning.rb.template.d.ts +2 -0
  179. package/lib/generate-ruby-sdk/templates/resource_warning.rb.template.js +8 -0
  180. package/lib/generate-ruby-sdk/templates/resource_warning.rb.template.js.map +1 -0
  181. package/lib/generate-ruby-sdk/templates/resource_warnings_support.rb.template.d.ts +2 -0
  182. package/lib/generate-ruby-sdk/templates/resource_warnings_support.rb.template.js +10 -0
  183. package/lib/generate-ruby-sdk/templates/resource_warnings_support.rb.template.js.map +1 -0
  184. package/lib/generate-ruby-sdk/templates/seamapi.gemspec.template.d.ts +2 -0
  185. package/lib/generate-ruby-sdk/templates/seamapi.gemspec.template.js +41 -0
  186. package/lib/generate-ruby-sdk/templates/seamapi.gemspec.template.js.map +1 -0
  187. package/lib/generate-ruby-sdk/templates/snippets/resource.rb.template.d.ts +6 -0
  188. package/lib/generate-ruby-sdk/templates/snippets/resource.rb.template.js +15 -0
  189. package/lib/generate-ruby-sdk/templates/snippets/resource.rb.template.js.map +1 -0
  190. package/lib/generate-ruby-sdk/templates/version.rb.template.d.ts +2 -0
  191. package/lib/generate-ruby-sdk/templates/version.rb.template.js +6 -0
  192. package/lib/generate-ruby-sdk/templates/version.rb.template.js.map +1 -0
  193. package/lib/index.d.ts +2 -0
  194. package/lib/index.js +3 -0
  195. package/lib/index.js.map +1 -0
  196. package/lib/openapi/flatten-obj-schema.d.ts +5 -0
  197. package/lib/openapi/flatten-obj-schema.js +86 -0
  198. package/lib/openapi/flatten-obj-schema.js.map +1 -0
  199. package/lib/openapi/get-parameter-and-response-schema.d.ts +20 -0
  200. package/lib/openapi/get-parameter-and-response-schema.js +42 -0
  201. package/lib/openapi/get-parameter-and-response-schema.js.map +1 -0
  202. package/lib/openapi/index.d.ts +2 -0
  203. package/lib/openapi/index.js +3 -0
  204. package/lib/openapi/index.js.map +1 -0
  205. package/lib/types.d.ts +91 -0
  206. package/lib/types.js +2 -0
  207. package/lib/types.js.map +1 -0
  208. package/package.json +95 -0
  209. package/src/index.ts +6 -0
  210. package/src/lib/cli.ts +71 -0
  211. package/src/lib/fs-util/index.ts +2 -0
  212. package/src/lib/fs-util/populate-fs.ts +14 -0
  213. package/src/lib/fs-util/write-fs.ts +10 -0
  214. package/src/lib/generate-csharp-sdk/codegen.ts +648 -0
  215. package/src/lib/generate-csharp-sdk/constants.ts +1 -0
  216. package/src/lib/generate-csharp-sdk/generate-csharp-sdk.ts +126 -0
  217. package/src/lib/generate-csharp-sdk/generate-csproj.ts +45 -0
  218. package/src/lib/generate-csharp-sdk/templates/dataclass.ts +973 -0
  219. package/src/lib/generate-csharp-sdk/templates/fs/csharp-testing.sln +34 -0
  220. package/src/lib/generate-csharp-sdk/templates/fs/src/Seam/Client/ApiResponse.cs +159 -0
  221. package/src/lib/generate-csharp-sdk/templates/fs/src/Seam/Client/ClientUtils.cs +280 -0
  222. package/src/lib/generate-csharp-sdk/templates/fs/src/Seam/Client/ExceptionFactory.cs +12 -0
  223. package/src/lib/generate-csharp-sdk/templates/fs/src/Seam/Client/GlobalSeamRequestConfiguration.cs +60 -0
  224. package/src/lib/generate-csharp-sdk/templates/fs/src/Seam/Client/HttpMethod.cs +29 -0
  225. package/src/lib/generate-csharp-sdk/templates/fs/src/Seam/Client/IAsynchronousSeam.cs +142 -0
  226. package/src/lib/generate-csharp-sdk/templates/fs/src/Seam/Client/IReadableSeamRequestConfiguration.cs +68 -0
  227. package/src/lib/generate-csharp-sdk/templates/fs/src/Seam/Client/ISynchronousSeam.cs +103 -0
  228. package/src/lib/generate-csharp-sdk/templates/fs/src/Seam/Client/Multimap.cs +286 -0
  229. package/src/lib/generate-csharp-sdk/templates/fs/src/Seam/Client/RequestOptions.cs +74 -0
  230. package/src/lib/generate-csharp-sdk/templates/fs/src/Seam/Client/RetryConfiguration.cs +21 -0
  231. package/src/lib/generate-csharp-sdk/templates/fs/src/Seam/Client/Seam.cs +1070 -0
  232. package/src/lib/generate-csharp-sdk/templates/fs/src/Seam/Client/SeamException.cs +64 -0
  233. package/src/lib/generate-csharp-sdk/templates/fs/src/Seam/Client/SeamRequestConfiguration.cs +662 -0
  234. package/src/lib/generate-csharp-sdk/templates/fs/src/Seam/Model/AsbtractModelSchema.cs +62 -0
  235. package/src/lib/generate-php-sdk/generate-php-sdk.ts +176 -0
  236. package/src/lib/generate-php-sdk/index.ts +1 -0
  237. package/src/lib/generate-php-sdk/templates/composer.json.template.ts +24 -0
  238. package/src/lib/generate-php-sdk/templates/env.example.template.ts +3 -0
  239. package/src/lib/generate-php-sdk/templates/gitignore.template.ts +5 -0
  240. package/src/lib/generate-php-sdk/templates/package.json.template.ts +11 -0
  241. package/src/lib/generate-php-sdk/templates/readme.md.template.ts +85 -0
  242. package/src/lib/generate-php-sdk/templates/smoke-test.template.ts +29 -0
  243. package/src/lib/generate-php-sdk/templates/test-fixture.template.ts +20 -0
  244. package/src/lib/generate-php-sdk/utils/deep-extract-resource-object-schemas.ts +160 -0
  245. package/src/lib/generate-php-sdk/utils/deep-flatten-one-of-and-all-of-schema.ts +128 -0
  246. package/src/lib/generate-php-sdk/utils/generate-resource-object-class.ts +105 -0
  247. package/src/lib/generate-php-sdk/utils/generate-seam-client.ts +115 -0
  248. package/src/lib/generate-php-sdk/utils/get-php-type.ts +21 -0
  249. package/src/lib/generate-php-sdk/utils/php-client.ts +189 -0
  250. package/src/lib/generate-python-sdk/class-file.ts +114 -0
  251. package/src/lib/generate-python-sdk/generate-python-sdk.ts +147 -0
  252. package/src/lib/generate-python-sdk/index.ts +1 -0
  253. package/src/lib/generate-python-sdk/map-python-type.ts +29 -0
  254. package/src/lib/generate-python-sdk/templates/conftest.py.template.ts +11 -0
  255. package/src/lib/generate-python-sdk/templates/pyproject.toml.template.ts +20 -0
  256. package/src/lib/generate-python-sdk/templates/readme.md.template.ts +47 -0
  257. package/src/lib/generate-python-sdk/templates/routes.py.template.ts +13 -0
  258. package/src/lib/generate-python-sdk/templates/seam.py.template.ts +73 -0
  259. package/src/lib/generate-python-sdk/templates/snippets/abstract-routes.template.ts +9 -0
  260. package/src/lib/generate-python-sdk/templates/snippets/abstract-seam.template.ts +8 -0
  261. package/src/lib/generate-python-sdk/templates/snippets/resource-dataclass.template.ts +15 -0
  262. package/src/lib/generate-python-sdk/templates/test_smoke.py.template.ts +12 -0
  263. package/src/lib/generate-python-sdk/templates/utils/deep_attr_dict.py.template.ts +27 -0
  264. package/src/lib/generate-ruby-sdk/generate-ruby-sdk.ts +153 -0
  265. package/src/lib/generate-ruby-sdk/index.ts +1 -0
  266. package/src/lib/generate-ruby-sdk/request.rb.template.ts +0 -0
  267. package/src/lib/generate-ruby-sdk/ruby-client.ts +81 -0
  268. package/src/lib/generate-ruby-sdk/templates/base_client.rb.template.ts +21 -0
  269. package/src/lib/generate-ruby-sdk/templates/base_resource.rb.template.ts +58 -0
  270. package/src/lib/generate-ruby-sdk/templates/client.rb.template.ts +73 -0
  271. package/src/lib/generate-ruby-sdk/templates/gemfile.template.ts +6 -0
  272. package/src/lib/generate-ruby-sdk/templates/logger.rb.template.ts +12 -0
  273. package/src/lib/generate-ruby-sdk/templates/rakefile.template.ts +22 -0
  274. package/src/lib/generate-ruby-sdk/templates/readme.md.template.ts +183 -0
  275. package/src/lib/generate-ruby-sdk/templates/request.rb.template.ts +70 -0
  276. package/src/lib/generate-ruby-sdk/templates/resource_error.rb.template.ts +7 -0
  277. package/src/lib/generate-ruby-sdk/templates/resource_errors_support.rb.template.ts +9 -0
  278. package/src/lib/generate-ruby-sdk/templates/resource_warning.rb.template.ts +7 -0
  279. package/src/lib/generate-ruby-sdk/templates/resource_warnings_support.rb.template.ts +9 -0
  280. package/src/lib/generate-ruby-sdk/templates/seamapi.gemspec.template.ts +40 -0
  281. package/src/lib/generate-ruby-sdk/templates/snippets/resource.rb.template.ts +24 -0
  282. package/src/lib/generate-ruby-sdk/templates/version.rb.template.ts +5 -0
  283. package/src/lib/index.ts +2 -0
  284. package/src/lib/openapi/flatten-obj-schema.ts +124 -0
  285. package/src/lib/openapi/get-parameter-and-response-schema.ts +59 -0
  286. package/src/lib/openapi/index.ts +2 -0
  287. package/src/lib/types.ts +96 -0
@@ -0,0 +1,184 @@
1
+ export default () => `# Seam API Ruby SDK
2
+
3
+ [![RubyGems.org](https://img.shields.io/gem/v/seamapi)](https://rubygems.org/gems/seamapi)
4
+ [![GitHub Actions](https://github.com/seamapi/ruby/workflows/main/badge.svg)](https://github.com/seamapi/ruby/actions)
5
+ [![Docs](https://img.shields.io/badge/docs-latest-blue)](https://docs.seam.co/)
6
+
7
+ Official interface to the [Seam Connect API].
8
+
9
+ [Seam Connect API]: https://docs.seam.co/
10
+
11
+ ## Description
12
+
13
+ This SDK provides convenient access to the [Seam Connect API] for Ruby applications.
14
+
15
+ This library includes:
16
+
17
+ - A predefined set of classes for API resources that
18
+ initialize themselves dynamically from API responses.
19
+ - Methods for all [Seam API endpoints](https://docs.seam.co/latest/api-clients/overview).
20
+ - Simplified asynchronous flows, e.g., listening for events or actions to finish.
21
+
22
+ [Seam API endpoints]: https://docs.seam.co/latest/api-endpoints/overview
23
+
24
+ ## Installation
25
+
26
+ Add this as a dependency to your project using [Bundler] with
27
+
28
+ \`\`\`
29
+ $ bundle add seamapi
30
+ \`\`\`
31
+
32
+ [bundler]: https://bundler.io/
33
+
34
+ ## Usage
35
+
36
+ _Refer to the [Seam Connect API documentation][Seam Connect API]._
37
+
38
+ ### Requirements
39
+
40
+ - Ruby version 3 or later.
41
+ - An API Key generated via the [Seam Dashboard].
42
+
43
+ [Seam Dashboard]: https://dashboard.getseam.com
44
+
45
+ ### Example
46
+
47
+ \`\`\`ruby
48
+ seam = Seam::Client.new(api_key: "MY_SEAM_API_KEY")
49
+ devices = seam.devices.list
50
+ my_door = devices.first
51
+ seam.locks.unlock(my_door).wait_until_finished
52
+ \`\`\`
53
+
54
+ ## Development and Testing
55
+
56
+ ### Quickstart
57
+
58
+ \`\`\`
59
+ $ git clone https://github.com/seamapi/ruby.git
60
+ $ cd ruby
61
+ $ bundle install
62
+ \`\`\`
63
+
64
+ Run the command below
65
+
66
+ \`\`\`
67
+ $ bundle exec rake
68
+ \`\`\`
69
+
70
+ Open an interactive ruby console with
71
+
72
+ \`\`\`
73
+ $ bundle exec rake
74
+ \`\`\`
75
+
76
+ Primary development tasks are defined as [rake] tasks in the \`Rakefile\`
77
+ and available via \`rake\`.
78
+ View them with
79
+
80
+ \`\`\`
81
+ $ bundle exec rake -T
82
+ \`\`\`
83
+
84
+ [rake]: https://ruby.github.io/rake/
85
+
86
+ ### Interactive Console
87
+
88
+ Play around with this module inside an interactive console with
89
+
90
+ \`\`\`
91
+ $ rake console
92
+ \`\`\`
93
+
94
+ Use a sandbox API key to play with the SDK without touching real devices.
95
+
96
+ ### Source code
97
+
98
+ The [source code] is hosted on GitHub.
99
+ Clone the project with
100
+
101
+ \`\`\`
102
+ $ git clone git@github.com:seamapi/ruby.git
103
+ \`\`\`
104
+
105
+ [source code]: https://github.com/seamapi/ruby
106
+
107
+ ### Requirements
108
+
109
+ You will need [Ruby] with [Bundler].
110
+
111
+ Be sure that all commands run under the correct Ruby version, e.g.,
112
+ if using [rbenv], install the correct version with
113
+
114
+ \`\`\`
115
+ $ rbenv install
116
+ \`\`\`
117
+
118
+ Install the development dependencies with
119
+
120
+ \`\`\`
121
+ $ bundle install
122
+ \`\`\`
123
+
124
+ [bundler]: https://bundler.io/
125
+ [ruby]: https://www.ruby-lang.org/
126
+ [rbenv]: https://github.com/rbenv/rbenv
127
+
128
+ ### Publishing
129
+
130
+ Releases are handled automatically by [semantic-release].
131
+ Publishing may be triggered manually using a [workflow_dispatch on GitHub Actions].
132
+
133
+ [semantic-release]: https://semantic-release.gitbook.io/
134
+ [workflow_dispatch on github actions]: https://github.com/seamapi/ruby/actions?query=workflow%3Aversion
135
+
136
+ ## GitHub Actions
137
+
138
+ _GitHub Actions should already be configured: this section is for reference only._
139
+
140
+ The following repository secrets must be set on [GitHub Actions]:
141
+
142
+ - \`RUBYGEMS_API_KEY\`: RubyGems.org token for publishing packages.
143
+ - \`GH_TOKEN\`: A personal access token for the user.
144
+ - \`GIT_USER_NAME\`: The GitHub user's real name.
145
+ - \`GIT_USER_EMAIL\`: The GitHub user's email.
146
+ - \`GPG_PRIVATE_KEY\`: The GitHub user's [GPG private key].
147
+ - \`GPG_PASSPHRASE\`: The GitHub user's GPG passphrase.
148
+
149
+ These are set at the organization level.
150
+
151
+ [github actions]: https://github.com/features/actions
152
+ [gpg private key]: https://github.com/marketplace/actions/import-gpg#prerequisites
153
+
154
+ ## Contributing
155
+
156
+ Please submit and comment on bug reports and feature requests.
157
+
158
+ To submit a patch:
159
+
160
+ 1. Fork it (https://github.com/seamapi/ruby/fork).
161
+ 2. Create your feature branch (\`git checkout -b my-new-feature\`).
162
+ 3. Make changes.
163
+ 4. Commit your changes (\`git commit -am 'Add some feature'\`).
164
+ 5. Push to the branch (\`git push origin my-new-feature\`).
165
+ 6. Create a new Pull Request.
166
+
167
+ ## License
168
+
169
+ This Ruby gem is licensed under the MIT license.
170
+
171
+ ## Warranty
172
+
173
+ This software is provided by the copyright holders and contributors "as is" and
174
+ any express or implied warranties, including, but not limited to, the implied
175
+ warranties of merchantability and fitness for a particular purpose are
176
+ disclaimed. In no event shall the copyright holder or contributors be liable for
177
+ any direct, indirect, incidental, special, exemplary, or consequential damages
178
+ (including, but not limited to, procurement of substitute goods or services;
179
+ loss of use, data, or profits; or business interruption) however caused and on
180
+ any theory of liability, whether in contract, strict liability, or tort
181
+ (including negligence or otherwise) arising in any way out of the use of this
182
+ software, even if advised of the possibility of such damage.
183
+ `;
184
+ //# sourceMappingURL=readme.md.template.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"readme.md.template.js","sourceRoot":"","sources":["../../../src/lib/generate-ruby-sdk/templates/readme.md.template.ts"],"names":[],"mappings":"AAAA,eAAe,GAAG,EAAE,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAsLpB,CAAA"}
@@ -0,0 +1,2 @@
1
+ declare const _default: () => string;
2
+ export default _default;
@@ -0,0 +1,71 @@
1
+ export default () => `# frozen_string_literal: true
2
+
3
+ require "http"
4
+
5
+ module Seam
6
+ class Request
7
+ attr_reader :base_uri, :api_key, :debug
8
+
9
+ class Error < StandardError
10
+ attr_reader :status, :response
11
+
12
+ def initialize(message, status, response)
13
+ super(message)
14
+ @status = status
15
+ @response = response
16
+ end
17
+ end
18
+
19
+ def initialize(api_key:, base_uri:, debug: false)
20
+ @api_key = api_key
21
+ @base_uri = base_uri
22
+ @debug = debug
23
+ end
24
+
25
+ def perform(method, uri, config = {})
26
+ Logger.info("Request: #{method} #{uri} #{config}") if debug
27
+
28
+ config[:body] = config[:body].to_json if config[:body]
29
+
30
+ response = HTTP.request(
31
+ method,
32
+ build_url(uri),
33
+ {headers: headers}.merge(config)
34
+ )
35
+
36
+ return response.parse if response.status.success?
37
+
38
+ handle_error_response(response, method, uri)
39
+ end
40
+
41
+ protected
42
+
43
+ def handle_error_response(response, method, uri)
44
+ msg = "Api Error #{response.status.code} #{method} #{uri}"
45
+ code = response.status.code
46
+
47
+ if code >= 400 && code < 500 && (err = response.parse["error"])
48
+ msg = "Api Error #{err["type"]}\nrequest_id: #{err["request_id"]}\n#{err["message"]}"
49
+ end
50
+
51
+ raise Error.new(msg, code, response)
52
+ end
53
+
54
+ def build_url(uri)
55
+ "#{base_uri}#{uri}"
56
+ end
57
+
58
+ def headers
59
+ {
60
+ "User-Agent" => user_agent,
61
+ "Content-Type" => "application/json",
62
+ "Authorization" => "Bearer #{api_key}"
63
+ }
64
+ end
65
+
66
+ def user_agent
67
+ "seam-ruby/#{Seam::VERSION}"
68
+ end
69
+ end
70
+ end`;
71
+ //# sourceMappingURL=request.rb.template.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"request.rb.template.js","sourceRoot":"","sources":["../../../src/lib/generate-ruby-sdk/templates/request.rb.template.ts"],"names":[],"mappings":"AAAA,eAAe,GAAG,EAAE,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;IAqEjB,CAAA"}
@@ -0,0 +1,2 @@
1
+ declare const _default: () => string;
2
+ export default _default;
@@ -0,0 +1,8 @@
1
+ export default () => `# frozen_string_literal: true
2
+
3
+ module Seam
4
+ class ResourceError < BaseResource
5
+ attr_accessor :error_code, :message
6
+ end
7
+ end`;
8
+ //# sourceMappingURL=resource_error.rb.template.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"resource_error.rb.template.js","sourceRoot":"","sources":["../../../src/lib/generate-ruby-sdk/templates/resource_error.rb.template.ts"],"names":[],"mappings":"AAAA,eAAe,GAAG,EAAE,CAAC;;;;;;IAMjB,CAAA"}
@@ -0,0 +1,2 @@
1
+ declare const _default: () => string;
2
+ export default _default;
@@ -0,0 +1,10 @@
1
+ export default () => `# frozen_string_literal: true
2
+
3
+ module Seam
4
+ module ResourceErrorsSupport
5
+ def errors
6
+ @errors_converted ||= @errors.is_a?(Array) ? Seam::ResourceError.load_from_response(@errors) : []
7
+ end
8
+ end
9
+ end`;
10
+ //# sourceMappingURL=resource_errors_support.rb.template.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"resource_errors_support.rb.template.js","sourceRoot":"","sources":["../../../src/lib/generate-ruby-sdk/templates/resource_errors_support.rb.template.ts"],"names":[],"mappings":"AAAA,eAAe,GAAG,EAAE,CAAC;;;;;;;;IAQjB,CAAA"}
@@ -0,0 +1,2 @@
1
+ declare const _default: () => string;
2
+ export default _default;
@@ -0,0 +1,8 @@
1
+ export default () => `# frozen_string_literal: true
2
+
3
+ module Seam
4
+ class ResourceWarning < BaseResource
5
+ attr_accessor :warning_code, :message
6
+ end
7
+ end`;
8
+ //# sourceMappingURL=resource_warning.rb.template.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"resource_warning.rb.template.js","sourceRoot":"","sources":["../../../src/lib/generate-ruby-sdk/templates/resource_warning.rb.template.ts"],"names":[],"mappings":"AAAA,eAAe,GAAG,EAAE,CAAC;;;;;;IAMjB,CAAA"}
@@ -0,0 +1,2 @@
1
+ declare const _default: () => string;
2
+ export default _default;
@@ -0,0 +1,10 @@
1
+ export default () => `# frozen_string_literal: true
2
+
3
+ module Seam
4
+ module ResourceWarningsSupport
5
+ def warnings
6
+ @warnings_converted ||= @warnings.is_a?(Array) ? Seam::ResourceWarning.load_from_response(@warnings) : []
7
+ end
8
+ end
9
+ end`;
10
+ //# sourceMappingURL=resource_warnings_support.rb.template.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"resource_warnings_support.rb.template.js","sourceRoot":"","sources":["../../../src/lib/generate-ruby-sdk/templates/resource_warnings_support.rb.template.ts"],"names":[],"mappings":"AAAA,eAAe,GAAG,EAAE,CAAC;;;;;;;;IAQjB,CAAA"}
@@ -0,0 +1,2 @@
1
+ declare const _default: () => string;
2
+ export default _default;
@@ -0,0 +1,41 @@
1
+ export default () => `# frozen_string_literal: true
2
+
3
+ require_relative "lib/seam/version"
4
+
5
+ Gem::Specification.new do |spec|
6
+ spec.name = "seamapi"
7
+ spec.version = Seam::VERSION
8
+ spec.author = "Seam Labs, Inc."
9
+ spec.email = "support@getseam.com"
10
+
11
+ spec.summary = "Seam API Ruby SDK"
12
+ spec.description = "Official interface to the Seam Connect API."
13
+ spec.homepage = "https://github.com/seamapi/ruby"
14
+ spec.license = "MIT"
15
+ spec.required_ruby_version = ">= 2.6.0"
16
+
17
+ spec.metadata["homepage_uri"] = spec.homepage
18
+ spec.metadata["source_code_uri"] = spec.homepage
19
+ spec.metadata["bug_tracker_uri"] = "#{spec.metadata["source_code_uri"]}/issues"
20
+ spec.metadata["changelog_uri"] = "#{spec.metadata["source_code_uri"]}/releases"
21
+ spec.metadata["github_repo"] = "git@github.com:seamapi/ruby.git"
22
+
23
+ spec.bindir = "bin"
24
+ spec.executables = spec.files.grep(%r{\A#{spec.bindir}/}) { |f| File.basename(f) }
25
+
26
+ spec.files = Dir["lib/**/*.rb"]
27
+ spec.files += Dir["[A-Z]*"]
28
+
29
+ spec.add_dependency "http", "~> 5.0.0"
30
+
31
+ spec.add_development_dependency "bundler", "~> 2.0"
32
+ spec.add_development_dependency "gem-release", "~> 2.2"
33
+ spec.add_development_dependency "parse_gemspec-cli", "~> 1.0"
34
+ spec.add_development_dependency "rake", "~> 13.0"
35
+ spec.add_development_dependency "rspec", "~> 3.0"
36
+ spec.add_development_dependency "simplecov", "~> 0.21"
37
+ spec.add_development_dependency "simplecov-console", "~> 0.9"
38
+ spec.add_development_dependency "standard", "~> 1.3"
39
+ spec.add_development_dependency "webmock", "~> 3.0.0"
40
+ end`;
41
+ //# sourceMappingURL=seamapi.gemspec.template.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"seamapi.gemspec.template.js","sourceRoot":"","sources":["../../../src/lib/generate-ruby-sdk/templates/seamapi.gemspec.template.ts"],"names":[],"mappings":"AAAA,eAAe,GAAG,EAAE,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;IAuCjB,CAAA"}
@@ -0,0 +1,6 @@
1
+ declare const _default: ({ pascal_name, attrs, date_attrs, }: {
2
+ pascal_name: string;
3
+ attrs: string[];
4
+ date_attrs: string[];
5
+ }) => string;
6
+ export default _default;
@@ -0,0 +1,15 @@
1
+ export default ({ pascal_name, attrs, date_attrs, }) => `# frozen_string_literal: true
2
+
3
+ module Seam
4
+ class ${pascal_name} < BaseResource
5
+ attr_reader ${attrs.map((attr) => `:${attr}`).join(", ")}
6
+
7
+ ${date_attrs.length > 0
8
+ ? `date_accessor ${date_attrs.map((attr) => `:${attr}`).join(", ")}`
9
+ : ""}
10
+
11
+ include Seam::ResourceErrorsSupport
12
+ include Seam::ResourceWarningsSupport
13
+ end
14
+ end`;
15
+ //# sourceMappingURL=resource.rb.template.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"resource.rb.template.js","sourceRoot":"","sources":["../../../../src/lib/generate-ruby-sdk/templates/snippets/resource.rb.template.ts"],"names":[],"mappings":"AAAA,eAAe,CAAC,EACd,WAAW,EACX,KAAK,EACL,UAAU,GAKX,EAAE,EAAE,CAAC;;;UAGI,WAAW;kBACH,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC;;MAGtD,UAAU,CAAC,MAAM,GAAG,CAAC;IACnB,CAAC,CAAC,iBAAiB,UAAU,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE;IACpE,CAAC,CAAC,EACN;;;;;IAKA,CAAA"}
@@ -0,0 +1,2 @@
1
+ declare const _default: () => string;
2
+ export default _default;
@@ -0,0 +1,6 @@
1
+ export default () => `# frozen_string_literal: true
2
+
3
+ module Seam
4
+ VERSION = "1.11.2"
5
+ end`;
6
+ //# sourceMappingURL=version.rb.template.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"version.rb.template.js","sourceRoot":"","sources":["../../../src/lib/generate-ruby-sdk/templates/version.rb.template.ts"],"names":[],"mappings":"AAAA,eAAe,GAAG,EAAE,CAAC;;;;IAIjB,CAAA"}
package/lib/index.d.ts ADDED
@@ -0,0 +1,2 @@
1
+ export * from "./openapi/index.js";
2
+ export * from "./fs-util/index.js";
package/lib/index.js ADDED
@@ -0,0 +1,3 @@
1
+ export * from "./openapi/index.js";
2
+ export * from "./fs-util/index.js";
3
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/lib/index.ts"],"names":[],"mappings":"AAAA,cAAc,oBAAoB,CAAA;AAClC,cAAc,oBAAoB,CAAA"}
@@ -0,0 +1,5 @@
1
+ import type { AllOfSchema, ObjSchema, PropertySchema } from "../../lib/types.js";
2
+ export declare const flattenObjSchema: (s: ObjSchema | {
3
+ oneOf: Array<ObjSchema>;
4
+ }) => ObjSchema;
5
+ export declare const deepFlattenAllOfSchema: (s: AllOfSchema) => Exclude<PropertySchema, AllOfSchema> | undefined;
@@ -0,0 +1,86 @@
1
+ import lodash from "lodash";
2
+ const { intersectionWith, isEqual } = lodash;
3
+ export const flattenObjSchema = (s) => {
4
+ if ("type" in s && s.type === "object")
5
+ return s;
6
+ if ("oneOf" in s) {
7
+ if (!s.oneOf[0]) {
8
+ throw new Error("oneOf must have at least one element");
9
+ }
10
+ const super_obj = {
11
+ type: "object",
12
+ properties: {},
13
+ required: [...s.oneOf[0].required],
14
+ };
15
+ for (const obj of s.oneOf) {
16
+ for (const [k, v] of Object.entries(obj.properties)) {
17
+ super_obj.properties[k] = v;
18
+ }
19
+ super_obj.required = intersectionWith(super_obj.required, obj.required, isEqual);
20
+ }
21
+ return super_obj;
22
+ }
23
+ throw new Error(`Unknown schema type "${s.type}"`);
24
+ };
25
+ export const deepFlattenAllOfSchema = (s) => {
26
+ if (s.allOf.length === 1 && s.allOf[0]) {
27
+ const recursive = s.allOf[0];
28
+ if ("allOf" in recursive) {
29
+ return deepFlattenAllOfSchema(recursive);
30
+ }
31
+ return recursive;
32
+ }
33
+ const properties = {};
34
+ const required = new Set();
35
+ const primitives = [];
36
+ for (let subschema of s.allOf) {
37
+ if ("allOf" in subschema) {
38
+ const recursive = deepFlattenAllOfSchema(subschema);
39
+ if (!recursive)
40
+ continue;
41
+ subschema = recursive;
42
+ }
43
+ if ("oneOf" in subschema) {
44
+ console.error("oneOf not currently supported when flattening allOf");
45
+ continue;
46
+ }
47
+ if ("$ref" in subschema) {
48
+ console.error("$ref not currently supported when flattening allOf");
49
+ continue;
50
+ }
51
+ if (subschema.type === "object") {
52
+ for (const [k, v] of Object.entries(subschema.properties)) {
53
+ if (!properties[k])
54
+ properties[k] = [];
55
+ properties[k].push(v);
56
+ if (subschema.required?.includes(k))
57
+ required.add(k);
58
+ }
59
+ continue;
60
+ }
61
+ primitives.push(subschema);
62
+ }
63
+ if (Object.keys(properties).length > 0 && primitives.length > 0) {
64
+ console.error("Found invalid allOf schema with both properties and primitives", new Error(JSON.stringify(s, null, 2)));
65
+ }
66
+ if (primitives.length > 0) {
67
+ // TODO: check that all primitives are the same, then merge nullability/unions
68
+ return primitives[0];
69
+ }
70
+ if (Object.keys(properties).length > 0) {
71
+ return {
72
+ type: "object",
73
+ required: [...required],
74
+ properties: Object.fromEntries(Object.entries(properties)
75
+ .map(([k, v]) => [
76
+ k,
77
+ deepFlattenAllOfSchema({
78
+ allOf: v,
79
+ }),
80
+ ])
81
+ .filter(([, v]) => v)),
82
+ };
83
+ }
84
+ return undefined;
85
+ };
86
+ //# sourceMappingURL=flatten-obj-schema.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"flatten-obj-schema.js","sourceRoot":"","sources":["../../src/lib/openapi/flatten-obj-schema.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,20 @@
1
+ import type { ObjSchema, Route } from "../../lib/types.js";
2
+ export declare const getParameterAndResponseSchema: (route: Route) => {
3
+ nullable: boolean;
4
+ response_obj_type?: never;
5
+ response_arr_type?: never;
6
+ parameter_schema?: never;
7
+ res_return_schema?: never;
8
+ } | {
9
+ response_obj_type: undefined;
10
+ response_arr_type: undefined;
11
+ parameter_schema: ObjSchema;
12
+ nullable: boolean;
13
+ res_return_schema?: never;
14
+ } | {
15
+ response_obj_type: any;
16
+ response_arr_type: any;
17
+ parameter_schema: ObjSchema;
18
+ res_return_schema: ObjSchema | undefined;
19
+ nullable: boolean;
20
+ };
@@ -0,0 +1,42 @@
1
+ import { flattenObjSchema } from "./flatten-obj-schema.js";
2
+ export const getParameterAndResponseSchema = (route) => {
3
+ const response_schema = route.post.responses["200"]?.content?.["application/json"]?.schema;
4
+ const nullable = !(response_schema &&
5
+ "required" in response_schema &&
6
+ response_schema.required?.includes(route.post["x-fern-sdk-return-value"]));
7
+ if (!response_schema) {
8
+ return { nullable };
9
+ }
10
+ if (!route.post.requestBody) {
11
+ route.post.requestBody = {
12
+ content: {
13
+ "application/json": { schema: { type: "object", properties: {} } },
14
+ },
15
+ };
16
+ }
17
+ if (!route.post.requestBody.content?.["application/json"]) {
18
+ return { nullable };
19
+ }
20
+ const parameter_schema = flattenObjSchema(route.post.requestBody.content["application/json"].schema);
21
+ const res_return_schema = response_schema.properties[route.post["x-fern-sdk-return-value"]];
22
+ const response_obj_ref = res_return_schema?.$ref;
23
+ const response_arr_ref = res_return_schema?.items?.$ref;
24
+ if (!response_obj_ref && !response_arr_ref) {
25
+ return {
26
+ response_obj_type: undefined,
27
+ response_arr_type: undefined,
28
+ parameter_schema,
29
+ nullable,
30
+ };
31
+ }
32
+ const response_obj_type = response_obj_ref?.split("/")?.pop();
33
+ const response_arr_type = response_arr_ref?.split("/")?.pop();
34
+ return {
35
+ response_obj_type,
36
+ response_arr_type,
37
+ parameter_schema,
38
+ res_return_schema: res_return_schema,
39
+ nullable,
40
+ };
41
+ };
42
+ //# sourceMappingURL=get-parameter-and-response-schema.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"get-parameter-and-response-schema.js","sourceRoot":"","sources":["../../src/lib/openapi/get-parameter-and-response-schema.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAA;AAE1D,MAAM,CAAC,MAAM,6BAA6B,GAAG,CAAC,KAAY,EAAE,EAAE;IAC5D,MAAM,eAAe,GACnB,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,EAAE,OAAO,EAAE,CAAC,kBAAkB,CAAC,EAAE,MAAM,CAAA;IAEpE,MAAM,QAAQ,GAAG,CAAC,CAChB,eAAe;QACf,UAAU,IAAI,eAAe;QAC7B,eAAe,CAAC,QAAQ,EAAE,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,yBAAyB,CAAC,CAAC,CAC1E,CAAA;IAED,IAAI,CAAC,eAAe,EAAE;QACpB,OAAO,EAAE,QAAQ,EAAE,CAAA;KACpB;IAED,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,WAAW,EAAE;QAC3B,KAAK,CAAC,IAAI,CAAC,WAAW,GAAG;YACvB,OAAO,EAAE;gBACP,kBAAkB,EAAE,EAAE,MAAM,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,UAAU,EAAE,EAAE,EAAE,EAAE;aACnE;SACK,CAAA;KACT;IAED,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,WAAW,CAAC,OAAO,EAAE,CAAC,kBAAkB,CAAC,EAAE;QACzD,OAAO,EAAE,QAAQ,EAAE,CAAA;KACpB;IAED,MAAM,gBAAgB,GAAG,gBAAgB,CACvC,KAAK,CAAC,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,kBAAkB,CAAC,CAAC,MAAM,CAC1D,CAAA;IACD,MAAM,iBAAiB,GAAI,eAAuB,CAAC,UAAU,CAC3D,KAAK,CAAC,IAAI,CAAC,yBAAyB,CAAC,CACtC,CAAA;IAED,MAAM,gBAAgB,GAAG,iBAAiB,EAAE,IAAI,CAAA;IAChD,MAAM,gBAAgB,GAAG,iBAAiB,EAAE,KAAK,EAAE,IAAI,CAAA;IAEvD,IAAI,CAAC,gBAAgB,IAAI,CAAC,gBAAgB,EAAE;QAC1C,OAAO;YACL,iBAAiB,EAAE,SAAS;YAC5B,iBAAiB,EAAE,SAAS;YAC5B,gBAAgB;YAChB,QAAQ;SACT,CAAA;KACF;IAED,MAAM,iBAAiB,GAAG,gBAAgB,EAAE,KAAK,CAAC,GAAG,CAAC,EAAE,GAAG,EAAG,CAAA;IAC9D,MAAM,iBAAiB,GAAG,gBAAgB,EAAE,KAAK,CAAC,GAAG,CAAC,EAAE,GAAG,EAAG,CAAA;IAE9D,OAAO;QACL,iBAAiB;QACjB,iBAAiB;QACjB,gBAAgB;QAChB,iBAAiB,EAAE,iBAA0C;QAC7D,QAAQ;KACT,CAAA;AACH,CAAC,CAAA"}
@@ -0,0 +1,2 @@
1
+ export * from "./flatten-obj-schema.js";
2
+ export * from "./get-parameter-and-response-schema.js";
@@ -0,0 +1,3 @@
1
+ export * from "./flatten-obj-schema.js";
2
+ export * from "./get-parameter-and-response-schema.js";
3
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/lib/openapi/index.ts"],"names":[],"mappings":"AAAA,cAAc,yBAAyB,CAAA;AACvC,cAAc,wCAAwC,CAAA"}