@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,62 @@
1
+ using System;
2
+ using Newtonsoft.Json;
3
+ using Newtonsoft.Json.Serialization;
4
+
5
+ namespace Seam.Model
6
+ {
7
+ /// <summary>
8
+ /// Abstract base class for oneOf, anyOf schemas in the OpenAPI specification
9
+ /// </summary>
10
+ public abstract class AbstractModelSchema
11
+ {
12
+ /// <summary>
13
+ /// Custom JSON serializer
14
+ /// </summary>
15
+ static public readonly JsonSerializerSettings SerializerSettings =
16
+ new JsonSerializerSettings
17
+ {
18
+ // OpenAPI generated types generally hide default constructors.
19
+ ConstructorHandling = ConstructorHandling.AllowNonPublicDefaultConstructor,
20
+ MissingMemberHandling = MissingMemberHandling.Error,
21
+ ContractResolver = new DefaultContractResolver
22
+ {
23
+ NamingStrategy = new CamelCaseNamingStrategy { OverrideSpecifiedNames = false }
24
+ }
25
+ };
26
+
27
+ /// <summary>
28
+ /// Custom JSON serializer for objects with additional properties
29
+ /// </summary>
30
+ static public readonly JsonSerializerSettings AdditionalPropertiesSerializerSettings =
31
+ new JsonSerializerSettings
32
+ {
33
+ // OpenAPI generated types generally hide default constructors.
34
+ ConstructorHandling = ConstructorHandling.AllowNonPublicDefaultConstructor,
35
+ MissingMemberHandling = MissingMemberHandling.Ignore,
36
+ ContractResolver = new DefaultContractResolver
37
+ {
38
+ NamingStrategy = new CamelCaseNamingStrategy { OverrideSpecifiedNames = false }
39
+ }
40
+ };
41
+
42
+ /// <summary>
43
+ /// Gets or Sets the actual instance
44
+ /// </summary>
45
+ public abstract Object ActualInstance { get; set; }
46
+
47
+ /// <summary>
48
+ /// Gets or Sets IsNullable to indicate whether the instance is nullable
49
+ /// </summary>
50
+ public bool IsNullable { get; protected set; }
51
+
52
+ /// <summary>
53
+ /// Gets or Sets the schema type, which can be either `oneOf` or `anyOf`
54
+ /// </summary>
55
+ public string SchemaType { get; protected set; }
56
+
57
+ /// <summary>
58
+ /// Converts the instance into JSON string.
59
+ /// </summary>
60
+ public abstract string ToJson();
61
+ }
62
+ }
@@ -0,0 +1 @@
1
+ export declare const generatePhpSDK: () => Promise<any>;
@@ -0,0 +1,127 @@
1
+ import axios from "axios";
2
+ import { getParameterAndResponseSchema } from "../../lib/index.js";
3
+ import { generateResourceObjectClass } from "./utils/generate-resource-object-class.js";
4
+ import { pascalCase } from "change-case";
5
+ import { getPhpType } from "./utils/get-php-type.js";
6
+ import { PhpClient } from "./utils/php-client.js";
7
+ import { generateSeamClient } from "./utils/generate-seam-client.js";
8
+ import { deepExtractResourceObjectSchemas } from "./utils/deep-extract-resource-object-schemas.js";
9
+ import readmeMdTemplate from "./templates/readme.md.template.js";
10
+ import packageJsonTemplate from "./templates/package.json.template.js";
11
+ import composerJsonTemplate from "./templates/composer.json.template.js";
12
+ import gitignoreTemplate from "./templates/gitignore.template.js";
13
+ import envExampleTemplate from "./templates/env.example.template.js";
14
+ import testFixtureTemplate from "./templates/test-fixture.template.js";
15
+ import smokeTestTemplate from "./templates/smoke-test.template.js";
16
+ export const generatePhpSDK = async () => {
17
+ const openapi = await axios
18
+ .get("https://connect.getseam.com/openapi.json")
19
+ .then((res) => res.data);
20
+ const routes = Object.entries(openapi.paths).map(([path, v]) => ({
21
+ path,
22
+ ...v,
23
+ }));
24
+ const fs = {};
25
+ fs["README.md"] = readmeMdTemplate();
26
+ fs["package.json"] = packageJsonTemplate();
27
+ fs["composer.json"] = composerJsonTemplate();
28
+ fs[".gitignore"] = gitignoreTemplate();
29
+ fs[".env.example"] = envExampleTemplate();
30
+ fs["tests/Fixture.php"] = testFixtureTemplate();
31
+ fs["tests/SmokeTest.php"] = smokeTestTemplate();
32
+ const base_resource_object_names = [];
33
+ for (const [schema_name, schema] of Object.entries(openapi.components.schemas)) {
34
+ base_resource_object_names.push(pascalCase(schema_name));
35
+ const base_resource_schema_with_sub_schemas = deepExtractResourceObjectSchemas({
36
+ schema_name,
37
+ schema_body: schema,
38
+ });
39
+ for (const { name, properties, required_property_names } of Object.values(base_resource_schema_with_sub_schemas)) {
40
+ fs[`src/Objects/${name}.php`] = generateResourceObjectClass({
41
+ resource_name: name,
42
+ resource_properties: properties,
43
+ required_property_names,
44
+ });
45
+ }
46
+ }
47
+ const parent_resource_to_children_map = routes.reduce((acc, route) => {
48
+ if (!route.post?.["x-fern-sdk-group-name"])
49
+ return acc;
50
+ const [parent_resource_name, child_resource_name] = route.post["x-fern-sdk-group-name"];
51
+ // Making TS happy
52
+ if (!parent_resource_name)
53
+ return acc;
54
+ if (!acc[parent_resource_name]) {
55
+ acc[parent_resource_name] = [];
56
+ }
57
+ if (child_resource_name &&
58
+ !acc[parent_resource_name].includes(child_resource_name)) {
59
+ acc[parent_resource_name].push(child_resource_name);
60
+ }
61
+ return acc;
62
+ }, {});
63
+ const clients = {};
64
+ const processClient = (resource_name) => {
65
+ const child_client_identifiers = (parent_resource_to_children_map[resource_name] ?? []).map((child_resource) => ({
66
+ client_name: pascalCase(`${resource_name} ${child_resource}`),
67
+ namespace: child_resource,
68
+ }));
69
+ const is_parent_client = Object.keys(parent_resource_to_children_map).includes(resource_name);
70
+ const pascal_resource_name = pascalCase(resource_name);
71
+ clients[pascal_resource_name] = new PhpClient(pascal_resource_name, resource_name, is_parent_client, child_client_identifiers);
72
+ };
73
+ for (const route of routes) {
74
+ if (!route.post || !route.post["x-fern-sdk-group-name"])
75
+ continue;
76
+ const group_names = [...route.post["x-fern-sdk-group-name"]];
77
+ const [base_resource] = group_names;
78
+ const namespace = group_names.join("_");
79
+ const client_name = pascalCase(namespace);
80
+ if (!clients[client_name]) {
81
+ processClient(namespace);
82
+ }
83
+ /*
84
+ special case when we don't have routes for a base resource
85
+ and thus a respective x-fern-sdk-group-name for ex. /noise_sensors
86
+ */
87
+ if (base_resource && !clients[pascalCase(base_resource)]) {
88
+ processClient(base_resource);
89
+ }
90
+ const client = clients[client_name];
91
+ if (!client) {
92
+ console.warn(`No client for "${client_name}", skipping`);
93
+ continue;
94
+ }
95
+ const { parameter_schema, response_obj_type, response_arr_type } = getParameterAndResponseSchema(route);
96
+ if (!parameter_schema) {
97
+ console.warn(`No parameter schema for "${route.path}", skipping`);
98
+ continue;
99
+ }
100
+ const return_resource = response_obj_type ?? response_arr_type ?? "";
101
+ client.addMethod({
102
+ method_name: route.post["x-fern-sdk-method-name"],
103
+ path: route.path,
104
+ parameters: Object.entries(parameter_schema.properties)
105
+ .filter(([_, param_val]) => "type" in param_val ||
106
+ ("oneOf" in param_val && "type" in (param_val.oneOf[0] ?? {})))
107
+ .map(([param_name, param_val]) => ({
108
+ name: param_name,
109
+ type: getPhpType(param_val?.type ?? param_val.oneOf[0].type),
110
+ required: parameter_schema.required?.includes(param_name),
111
+ position: route.post["x-fern-sdk-method-name"] === "get" &&
112
+ param_name === `${route.post["x-fern-sdk-return-value"]}_id`
113
+ ? 0
114
+ : undefined,
115
+ })),
116
+ return_path: route.post["x-fern-sdk-return-value"],
117
+ return_resource: pascalCase(return_resource),
118
+ is_array_response: Boolean(response_arr_type),
119
+ });
120
+ }
121
+ fs["src/SeamClient.php"] = generateSeamClient({
122
+ resource_clients: Object.values(clients),
123
+ resource_object_names: base_resource_object_names,
124
+ });
125
+ return fs;
126
+ };
127
+ //# sourceMappingURL=generate-php-sdk.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"generate-php-sdk.js","sourceRoot":"","sources":["../../src/lib/generate-php-sdk/generate-php-sdk.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1 @@
1
+ export * from "./generate-php-sdk.js";
@@ -0,0 +1,2 @@
1
+ export * from "./generate-php-sdk.js";
2
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/lib/generate-php-sdk/index.ts"],"names":[],"mappings":"AAAA,cAAc,uBAAuB,CAAA"}
@@ -0,0 +1,2 @@
1
+ declare const _default: () => string;
2
+ export default _default;
@@ -0,0 +1,25 @@
1
+ export default () => `{
2
+ "name": "seamapi/seam",
3
+ "type": "library",
4
+ "require": {
5
+ "guzzlehttp/guzzle": "^7.5"
6
+ },
7
+ "autoload": {
8
+ "psr-4": {
9
+ "Seam\\\\": "src/",
10
+ "Tests\\\\": "tests/"
11
+ }
12
+ },
13
+ "authors": [
14
+ {
15
+ "name": "seveibar",
16
+ "email": "seveibar@gmail.com"
17
+ }
18
+ ],
19
+ "require-dev": {
20
+ "phpunit/phpunit": "^9.5",
21
+ "squizlabs/php_codesniffer": "^3.7"
22
+ }
23
+ }
24
+ `;
25
+ //# sourceMappingURL=composer.json.template.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"composer.json.template.js","sourceRoot":"","sources":["../../../src/lib/generate-php-sdk/templates/composer.json.template.ts"],"names":[],"mappings":"AAAA,eAAe,GAAG,EAAE,CAAC;;;;;;;;;;;;;;;;;;;;;;;CAuBpB,CAAA"}
@@ -0,0 +1,2 @@
1
+ declare const _default: () => string;
2
+ export default _default;
@@ -0,0 +1,4 @@
1
+ export default () => `# API Key for a sandbox workspace
2
+ SEAM_API_KEY=
3
+ `;
4
+ //# sourceMappingURL=env.example.template.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"env.example.template.js","sourceRoot":"","sources":["../../../src/lib/generate-php-sdk/templates/env.example.template.ts"],"names":[],"mappings":"AAAA,eAAe,GAAG,EAAE,CAAC;;CAEpB,CAAA"}
@@ -0,0 +1,2 @@
1
+ declare const _default: () => string;
2
+ export default _default;
@@ -0,0 +1,6 @@
1
+ export default () => `vendor
2
+ node_modules
3
+ .env
4
+ .vscode
5
+ `;
6
+ //# sourceMappingURL=gitignore.template.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"gitignore.template.js","sourceRoot":"","sources":["../../../src/lib/generate-php-sdk/templates/gitignore.template.ts"],"names":[],"mappings":"AAAA,eAAe,GAAG,EAAE,CAAC;;;;CAIpB,CAAA"}
@@ -0,0 +1,2 @@
1
+ declare const _default: () => string;
2
+ export default _default;
@@ -0,0 +1,12 @@
1
+ export default () => `{
2
+ "name": "sdk1",
3
+ "version": "1.0.0",
4
+ "main": "index.js",
5
+ "license": "MIT",
6
+ "devDependencies": {
7
+ "@prettier/plugin-php": "^0.19.0",
8
+ "prettier": "^2.7.1"
9
+ }
10
+ }
11
+ `;
12
+ //# sourceMappingURL=package.json.template.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"package.json.template.js","sourceRoot":"","sources":["../../../src/lib/generate-php-sdk/templates/package.json.template.ts"],"names":[],"mappings":"AAAA,eAAe,GAAG,EAAE,CAAC;;;;;;;;;;CAUpB,CAAA"}
@@ -0,0 +1,2 @@
1
+ declare const _default: () => string;
2
+ export default _default;
@@ -0,0 +1,86 @@
1
+ export default () => `# Seam PHP SDK
2
+
3
+ Control locks, lights and other internet of things devices with Seam's simple API.
4
+
5
+ Check out [the documentation](https://docs.seam.co) or the usage below.
6
+
7
+ ## Usage
8
+
9
+ \`\`\`php
10
+ $seam = new Seam\SeamClient("YOUR_API_KEY");
11
+
12
+ # Create a Connect Webview to login to a provider
13
+ $connect_webview = $seam->connect_webviews->create(
14
+ accepted_providers: ["august"]
15
+ );
16
+
17
+ print "Please Login at this url: " . $connect_webview->url;
18
+
19
+ # Poll until connect webview is completed
20
+ while (true) {
21
+ $connect_webview = $seam->connect_webviews->get(
22
+ $connect_webview->connect_webview_id
23
+ );
24
+ if ($connect_webview->status == "authorized") {
25
+ break;
26
+ } else {
27
+ sleep(1);
28
+ }
29
+ }
30
+
31
+ $connected_account = $seam->connected_accounts->get(
32
+ $connect_webview->connected_account_id
33
+ );
34
+
35
+ print "Looks like you connected with " .
36
+ json_encode($connected_account->user_identifier);
37
+
38
+ $devices = $seam->devices->list(
39
+ connected_account_id: $connected_account->connected_account_id
40
+ );
41
+
42
+ print "You have " . count($devices) . " devices";
43
+
44
+ $device_id = $devices[0]->device_id;
45
+
46
+ # Lock a Door
47
+ $seam->locks->lock_door($device_id);
48
+
49
+ $updated_device = $seam->devices->get($device_id);
50
+ $updated_device->properties->locked; // true
51
+
52
+ # Unlock a Door
53
+ $seam->locks->unlock_door($device_id);
54
+ $updated_device->properties->locked; // false
55
+
56
+ # Create an access code on a device
57
+ $access_code = $seam->access_codes->create(
58
+ device_id: $device_id,
59
+ code: "1234",
60
+ name: "Test Code"
61
+ );
62
+
63
+ # Check the status of an access code
64
+ $access_code->status; // 'setting' (it will go to 'set' when active on the device)
65
+
66
+ $seam->access_codes->delete($access_code->access_code_id);
67
+ \`\`\`
68
+
69
+ ## Installation
70
+
71
+ Run \`composer require seamapi/seam\`
72
+
73
+ ## Development Setup
74
+
75
+ 1. Run \`yarn install\` to get prettier installed for formatting
76
+ 2. Install [composer](https://getcomposer.org/).
77
+ 3. Run \`composer install\` in this directory
78
+ 4. Run \`composer exec phpunit tests\`
79
+
80
+ > To run a specific test file, do \`composer exec phpunit tests/MyTest.php\`
81
+
82
+ ### Running Tests
83
+
84
+ You'll need to export \`SEAM_API_KEY\` to a sandbox workspace API key.
85
+ `;
86
+ //# sourceMappingURL=readme.md.template.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"readme.md.template.js","sourceRoot":"","sources":["../../../src/lib/generate-php-sdk/templates/readme.md.template.ts"],"names":[],"mappings":"AAAA,eAAe,GAAG,EAAE,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAoFpB,CAAA"}
@@ -0,0 +1,2 @@
1
+ declare const _default: () => string;
2
+ export default _default;
@@ -0,0 +1,30 @@
1
+ export default () => `<?php
2
+
3
+ declare(strict_types=1);
4
+
5
+ use PHPUnit\\Framework\\TestCase;
6
+ use Tests\\Fixture;
7
+
8
+ final class SmokeTest extends TestCase
9
+ {
10
+ public function testGetDevices(): void
11
+ {
12
+ $seam = Fixture::getTestSeamClient();
13
+
14
+ $devices_response = $seam->devices->list();
15
+ $this->assertIsString($devices_response[0]->device_id);
16
+ }
17
+ public function testCreateAccessCode(): void
18
+ {
19
+ $seam = Fixture::getTestSeamClient();
20
+
21
+ $access_code = $seam->access_codes->create(
22
+ device_id:"august_device_1", code:"1234"
23
+ );
24
+
25
+ $this->assertTrue($access_code->status === "setting");
26
+ $this->assertTrue($access_code->code === "1234");
27
+ }
28
+ }
29
+ `;
30
+ //# sourceMappingURL=smoke-test.template.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"smoke-test.template.js","sourceRoot":"","sources":["../../../src/lib/generate-php-sdk/templates/smoke-test.template.ts"],"names":[],"mappings":"AAAA,eAAe,GAAG,EAAE,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA4BpB,CAAA"}
@@ -0,0 +1,2 @@
1
+ declare const _default: () => string;
2
+ export default _default;
@@ -0,0 +1,21 @@
1
+ export default () => `<?php
2
+
3
+ namespace Tests;
4
+
5
+ use Seam\\SeamClient;
6
+
7
+ final class Fixture
8
+ {
9
+ public static function getTestSeamClient()
10
+ {
11
+ $random_string = substr(str_shuffle('ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789'), 0, 10);
12
+ $api_url = "https://{$random_string}.fakeseamconnect.seam.vc";
13
+ $api_key = "seam_apikey1_token";
14
+
15
+ $seam = new SeamClient($api_key, $api_url);
16
+
17
+ return $seam;
18
+ }
19
+ }
20
+ `;
21
+ //# sourceMappingURL=test-fixture.template.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"test-fixture.template.js","sourceRoot":"","sources":["../../../src/lib/generate-php-sdk/templates/test-fixture.template.ts"],"names":[],"mappings":"AAAA,eAAe,GAAG,EAAE,CAAC;;;;;;;;;;;;;;;;;;;CAmBpB,CAAA"}
@@ -0,0 +1,16 @@
1
+ import type { OpenAPISchema, PropertySchema } from "../../../lib/types.js";
2
+ type DeepExtractResourceObjectSchemasParams = {
3
+ schema_name: string;
4
+ schema_body: OpenAPISchema["components"]["schemas"][string];
5
+ };
6
+ type ExtractedResourceObjectSchema = {
7
+ name: string;
8
+ properties: Record<string, PropertySchemaWithReferenceObject>;
9
+ required_property_names: string[];
10
+ };
11
+ export type PropertySchemaWithReferenceObject = PropertySchema | {
12
+ type: "object" | "array";
13
+ reference_object_type_name?: string;
14
+ };
15
+ export declare function deepExtractResourceObjectSchemas({ schema_name, schema_body, }: DeepExtractResourceObjectSchemasParams): Record<string, ExtractedResourceObjectSchema>;
16
+ export {};
@@ -0,0 +1,97 @@
1
+ import { deepFlattenOneOfAndAllOfSchema } from "./deep-flatten-one-of-and-all-of-schema.js";
2
+ import { pascalCase } from "change-case";
3
+ export function deepExtractResourceObjectSchemas({ schema_name, schema_body, }) {
4
+ const extracted_resource_objects_schemas = {};
5
+ function createResourceSchema({ name, properties, required_property_names = [], }) {
6
+ if (!extracted_resource_objects_schemas[name]) {
7
+ extracted_resource_objects_schemas[name] = {
8
+ name: pascalCase(name),
9
+ properties: processPropertySchemas(properties),
10
+ required_property_names: required_property_names,
11
+ };
12
+ }
13
+ }
14
+ function processPropertySchemas(property_schemas) {
15
+ const property_schemas_with_type_references = {};
16
+ for (const property_name in property_schemas) {
17
+ const property_schema = property_schemas[property_name];
18
+ const reference_object_type_name = pascalCase(`${schema_name}_${property_name}`);
19
+ if ("$ref" in property_schema) {
20
+ console.error("$ref not currently supported when extracting schemas");
21
+ continue;
22
+ }
23
+ const is_all_of_or_one_of_schema = "allOf" in property_schema || "oneOf" in property_schema;
24
+ const is_object_schema = !is_all_of_or_one_of_schema &&
25
+ property_schema.type === "object" &&
26
+ "properties" in property_schema;
27
+ const is_array_non_primitive_schema = !is_all_of_or_one_of_schema &&
28
+ property_schema.type === "array" &&
29
+ "items" in property_schema &&
30
+ "properties" in property_schema.items;
31
+ if (is_object_schema) {
32
+ property_schemas_with_type_references[property_name] = {
33
+ type: "object",
34
+ reference_object_type_name,
35
+ };
36
+ createResourceSchema({
37
+ name: reference_object_type_name,
38
+ properties: property_schema.properties,
39
+ required_property_names: property_schema?.required,
40
+ });
41
+ }
42
+ else if (is_array_non_primitive_schema) {
43
+ property_schemas_with_type_references[property_name] = {
44
+ type: "array",
45
+ reference_object_type_name,
46
+ };
47
+ createResourceSchema({
48
+ name: reference_object_type_name,
49
+ properties: property_schema.items.properties,
50
+ required_property_names: property_schema.items?.required,
51
+ });
52
+ }
53
+ else if (is_all_of_or_one_of_schema) {
54
+ const flattened_schema = deepFlattenOneOfAndAllOfSchema(property_schema);
55
+ if ("properties" in flattened_schema) {
56
+ property_schemas_with_type_references[property_name] = {
57
+ type: flattened_schema.type,
58
+ reference_object_type_name,
59
+ };
60
+ createResourceSchema({
61
+ name: reference_object_type_name,
62
+ properties: flattened_schema.properties,
63
+ required_property_names: flattened_schema?.required,
64
+ });
65
+ }
66
+ else {
67
+ property_schemas_with_type_references[property_name] =
68
+ flattened_schema;
69
+ }
70
+ continue;
71
+ }
72
+ else {
73
+ property_schemas_with_type_references[property_name] = {
74
+ type: property_schema.type,
75
+ };
76
+ }
77
+ }
78
+ return property_schemas_with_type_references;
79
+ }
80
+ let base_resource_properties;
81
+ if ("allOf" in schema_body || "oneOf" in schema_body) {
82
+ const flattened_base_resource_schema = deepFlattenOneOfAndAllOfSchema(schema_body);
83
+ base_resource_properties =
84
+ "properties" in flattened_base_resource_schema
85
+ ? flattened_base_resource_schema.properties
86
+ : {};
87
+ }
88
+ base_resource_properties ??=
89
+ "properties" in schema_body ? schema_body.properties : {};
90
+ createResourceSchema({
91
+ name: pascalCase(schema_name),
92
+ properties: base_resource_properties,
93
+ required_property_names: "required" in schema_body ? schema_body.required : [],
94
+ });
95
+ return extracted_resource_objects_schemas;
96
+ }
97
+ //# sourceMappingURL=deep-extract-resource-object-schemas.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"deep-extract-resource-object-schemas.js","sourceRoot":"","sources":["../../../src/lib/generate-php-sdk/utils/deep-extract-resource-object-schemas.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ import type { ArraySchema, ObjSchema, PrimitiveSchema, PropertySchema } from "../../../lib/types.js";
2
+ export declare function deepFlattenOneOfAndAllOfSchema(schema: PropertySchema): PrimitiveSchema | import("../../../lib/types.js").RefSchema | ObjSchema | ArraySchema;