@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.
- package/LICENSE.txt +20 -0
- package/README.md +16 -0
- package/index.d.ts +6 -0
- package/index.js +7 -0
- package/index.js.map +1 -0
- package/lib/cli.d.ts +2 -0
- package/lib/cli.js +53 -0
- package/lib/cli.js.map +1 -0
- package/lib/fs-util/index.d.ts +2 -0
- package/lib/fs-util/index.js +3 -0
- package/lib/fs-util/index.js.map +1 -0
- package/lib/fs-util/populate-fs.d.ts +1 -0
- package/lib/fs-util/populate-fs.js +11 -0
- package/lib/fs-util/populate-fs.js.map +1 -0
- package/lib/fs-util/write-fs.d.ts +1 -0
- package/lib/fs-util/write-fs.js +10 -0
- package/lib/fs-util/write-fs.js.map +1 -0
- package/lib/generate-csharp-sdk/codegen.d.ts +235 -0
- package/lib/generate-csharp-sdk/codegen.js +432 -0
- package/lib/generate-csharp-sdk/codegen.js.map +1 -0
- package/lib/generate-csharp-sdk/constants.d.ts +1 -0
- package/lib/generate-csharp-sdk/constants.js +2 -0
- package/lib/generate-csharp-sdk/constants.js.map +1 -0
- package/lib/generate-csharp-sdk/generate-csharp-sdk.d.ts +1 -0
- package/lib/generate-csharp-sdk/generate-csharp-sdk.js +81 -0
- package/lib/generate-csharp-sdk/generate-csharp-sdk.js.map +1 -0
- package/lib/generate-csharp-sdk/generate-csproj.d.ts +1 -0
- package/lib/generate-csharp-sdk/generate-csproj.js +45 -0
- package/lib/generate-csharp-sdk/generate-csproj.js.map +1 -0
- package/lib/generate-csharp-sdk/templates/dataclass.d.ts +24 -0
- package/lib/generate-csharp-sdk/templates/dataclass.js +468 -0
- package/lib/generate-csharp-sdk/templates/dataclass.js.map +1 -0
- package/lib/generate-csharp-sdk/templates/fs/csharp-testing.sln +34 -0
- package/lib/generate-csharp-sdk/templates/fs/src/Seam/Client/ApiResponse.cs +159 -0
- package/lib/generate-csharp-sdk/templates/fs/src/Seam/Client/ClientUtils.cs +280 -0
- package/lib/generate-csharp-sdk/templates/fs/src/Seam/Client/ExceptionFactory.cs +12 -0
- package/lib/generate-csharp-sdk/templates/fs/src/Seam/Client/GlobalSeamRequestConfiguration.cs +60 -0
- package/lib/generate-csharp-sdk/templates/fs/src/Seam/Client/HttpMethod.cs +29 -0
- package/lib/generate-csharp-sdk/templates/fs/src/Seam/Client/IAsynchronousSeam.cs +142 -0
- package/lib/generate-csharp-sdk/templates/fs/src/Seam/Client/IReadableSeamRequestConfiguration.cs +68 -0
- package/lib/generate-csharp-sdk/templates/fs/src/Seam/Client/ISynchronousSeam.cs +103 -0
- package/lib/generate-csharp-sdk/templates/fs/src/Seam/Client/Multimap.cs +286 -0
- package/lib/generate-csharp-sdk/templates/fs/src/Seam/Client/RequestOptions.cs +74 -0
- package/lib/generate-csharp-sdk/templates/fs/src/Seam/Client/RetryConfiguration.cs +21 -0
- package/lib/generate-csharp-sdk/templates/fs/src/Seam/Client/Seam.cs +1070 -0
- package/lib/generate-csharp-sdk/templates/fs/src/Seam/Client/SeamException.cs +64 -0
- package/lib/generate-csharp-sdk/templates/fs/src/Seam/Client/SeamRequestConfiguration.cs +662 -0
- package/lib/generate-csharp-sdk/templates/fs/src/Seam/Model/AsbtractModelSchema.cs +62 -0
- package/lib/generate-php-sdk/generate-php-sdk.d.ts +1 -0
- package/lib/generate-php-sdk/generate-php-sdk.js +127 -0
- package/lib/generate-php-sdk/generate-php-sdk.js.map +1 -0
- package/lib/generate-php-sdk/index.d.ts +1 -0
- package/lib/generate-php-sdk/index.js +2 -0
- package/lib/generate-php-sdk/index.js.map +1 -0
- package/lib/generate-php-sdk/templates/composer.json.template.d.ts +2 -0
- package/lib/generate-php-sdk/templates/composer.json.template.js +25 -0
- package/lib/generate-php-sdk/templates/composer.json.template.js.map +1 -0
- package/lib/generate-php-sdk/templates/env.example.template.d.ts +2 -0
- package/lib/generate-php-sdk/templates/env.example.template.js +4 -0
- package/lib/generate-php-sdk/templates/env.example.template.js.map +1 -0
- package/lib/generate-php-sdk/templates/gitignore.template.d.ts +2 -0
- package/lib/generate-php-sdk/templates/gitignore.template.js +6 -0
- package/lib/generate-php-sdk/templates/gitignore.template.js.map +1 -0
- package/lib/generate-php-sdk/templates/package.json.template.d.ts +2 -0
- package/lib/generate-php-sdk/templates/package.json.template.js +12 -0
- package/lib/generate-php-sdk/templates/package.json.template.js.map +1 -0
- package/lib/generate-php-sdk/templates/readme.md.template.d.ts +2 -0
- package/lib/generate-php-sdk/templates/readme.md.template.js +86 -0
- package/lib/generate-php-sdk/templates/readme.md.template.js.map +1 -0
- package/lib/generate-php-sdk/templates/smoke-test.template.d.ts +2 -0
- package/lib/generate-php-sdk/templates/smoke-test.template.js +30 -0
- package/lib/generate-php-sdk/templates/smoke-test.template.js.map +1 -0
- package/lib/generate-php-sdk/templates/test-fixture.template.d.ts +2 -0
- package/lib/generate-php-sdk/templates/test-fixture.template.js +21 -0
- package/lib/generate-php-sdk/templates/test-fixture.template.js.map +1 -0
- package/lib/generate-php-sdk/utils/deep-extract-resource-object-schemas.d.ts +16 -0
- package/lib/generate-php-sdk/utils/deep-extract-resource-object-schemas.js +97 -0
- package/lib/generate-php-sdk/utils/deep-extract-resource-object-schemas.js.map +1 -0
- package/lib/generate-php-sdk/utils/deep-flatten-one-of-and-all-of-schema.d.ts +2 -0
- package/lib/generate-php-sdk/utils/deep-flatten-one-of-and-all-of-schema.js +95 -0
- package/lib/generate-php-sdk/utils/deep-flatten-one-of-and-all-of-schema.js.map +1 -0
- package/lib/generate-php-sdk/utils/generate-resource-object-class.d.ts +8 -0
- package/lib/generate-php-sdk/utils/generate-resource-object-class.js +73 -0
- package/lib/generate-php-sdk/utils/generate-resource-object-class.js.map +1 -0
- package/lib/generate-php-sdk/utils/generate-seam-client.d.ts +7 -0
- package/lib/generate-php-sdk/utils/generate-seam-client.js +103 -0
- package/lib/generate-php-sdk/utils/generate-seam-client.js.map +1 -0
- package/lib/generate-php-sdk/utils/get-php-type.d.ts +1 -0
- package/lib/generate-php-sdk/utils/get-php-type.js +17 -0
- package/lib/generate-php-sdk/utils/get-php-type.js.map +1 -0
- package/lib/generate-php-sdk/utils/php-client.d.ts +31 -0
- package/lib/generate-php-sdk/utils/php-client.js +130 -0
- package/lib/generate-php-sdk/utils/php-client.js.map +1 -0
- package/lib/generate-python-sdk/class-file.d.ts +20 -0
- package/lib/generate-python-sdk/class-file.js +75 -0
- package/lib/generate-python-sdk/class-file.js.map +1 -0
- package/lib/generate-python-sdk/generate-python-sdk.d.ts +1 -0
- package/lib/generate-python-sdk/generate-python-sdk.js +117 -0
- package/lib/generate-python-sdk/generate-python-sdk.js.map +1 -0
- package/lib/generate-python-sdk/index.d.ts +1 -0
- package/lib/generate-python-sdk/index.js +2 -0
- package/lib/generate-python-sdk/index.js.map +1 -0
- package/lib/generate-python-sdk/map-python-type.d.ts +2 -0
- package/lib/generate-python-sdk/map-python-type.js +26 -0
- package/lib/generate-python-sdk/map-python-type.js.map +1 -0
- package/lib/generate-python-sdk/templates/conftest.py.template.d.ts +2 -0
- package/lib/generate-python-sdk/templates/conftest.py.template.js +12 -0
- package/lib/generate-python-sdk/templates/conftest.py.template.js.map +1 -0
- package/lib/generate-python-sdk/templates/pyproject.toml.template.d.ts +2 -0
- package/lib/generate-python-sdk/templates/pyproject.toml.template.js +21 -0
- package/lib/generate-python-sdk/templates/pyproject.toml.template.js.map +1 -0
- package/lib/generate-python-sdk/templates/readme.md.template.d.ts +2 -0
- package/lib/generate-python-sdk/templates/readme.md.template.js +48 -0
- package/lib/generate-python-sdk/templates/readme.md.template.js.map +1 -0
- package/lib/generate-python-sdk/templates/routes.py.template.d.ts +2 -0
- package/lib/generate-python-sdk/templates/routes.py.template.js +13 -0
- package/lib/generate-python-sdk/templates/routes.py.template.js.map +1 -0
- package/lib/generate-python-sdk/templates/seam.py.template.d.ts +2 -0
- package/lib/generate-python-sdk/templates/seam.py.template.js +74 -0
- package/lib/generate-python-sdk/templates/seam.py.template.js.map +1 -0
- package/lib/generate-python-sdk/templates/snippets/abstract-routes.template.d.ts +2 -0
- package/lib/generate-python-sdk/templates/snippets/abstract-routes.template.js +9 -0
- package/lib/generate-python-sdk/templates/snippets/abstract-routes.template.js.map +1 -0
- package/lib/generate-python-sdk/templates/snippets/abstract-seam.template.d.ts +2 -0
- package/lib/generate-python-sdk/templates/snippets/abstract-seam.template.js +9 -0
- package/lib/generate-python-sdk/templates/snippets/abstract-seam.template.js.map +1 -0
- package/lib/generate-python-sdk/templates/snippets/resource-dataclass.template.d.ts +5 -0
- package/lib/generate-python-sdk/templates/snippets/resource-dataclass.template.js +10 -0
- package/lib/generate-python-sdk/templates/snippets/resource-dataclass.template.js.map +1 -0
- package/lib/generate-python-sdk/templates/test_smoke.py.template.d.ts +2 -0
- package/lib/generate-python-sdk/templates/test_smoke.py.template.js +13 -0
- package/lib/generate-python-sdk/templates/test_smoke.py.template.js.map +1 -0
- package/lib/generate-python-sdk/templates/utils/deep_attr_dict.py.template.d.ts +2 -0
- package/lib/generate-python-sdk/templates/utils/deep_attr_dict.py.template.js +28 -0
- package/lib/generate-python-sdk/templates/utils/deep_attr_dict.py.template.js.map +1 -0
- package/lib/generate-ruby-sdk/generate-ruby-sdk.d.ts +1 -0
- package/lib/generate-ruby-sdk/generate-ruby-sdk.js +132 -0
- package/lib/generate-ruby-sdk/generate-ruby-sdk.js.map +1 -0
- package/lib/generate-ruby-sdk/index.d.ts +1 -0
- package/lib/generate-ruby-sdk/index.js +2 -0
- package/lib/generate-ruby-sdk/index.js.map +1 -0
- package/lib/generate-ruby-sdk/request.rb.template.d.ts +1 -0
- package/lib/generate-ruby-sdk/request.rb.template.js +2 -0
- package/lib/generate-ruby-sdk/request.rb.template.js.map +1 -0
- package/lib/generate-ruby-sdk/ruby-client.d.ts +35 -0
- package/lib/generate-ruby-sdk/ruby-client.js +59 -0
- package/lib/generate-ruby-sdk/ruby-client.js.map +1 -0
- package/lib/generate-ruby-sdk/templates/base_client.rb.template.d.ts +2 -0
- package/lib/generate-ruby-sdk/templates/base_client.rb.template.js +22 -0
- package/lib/generate-ruby-sdk/templates/base_client.rb.template.js.map +1 -0
- package/lib/generate-ruby-sdk/templates/base_resource.rb.template.d.ts +2 -0
- package/lib/generate-ruby-sdk/templates/base_resource.rb.template.js +59 -0
- package/lib/generate-ruby-sdk/templates/base_resource.rb.template.js.map +1 -0
- package/lib/generate-ruby-sdk/templates/client.rb.template.d.ts +2 -0
- package/lib/generate-ruby-sdk/templates/client.rb.template.js +74 -0
- package/lib/generate-ruby-sdk/templates/client.rb.template.js.map +1 -0
- package/lib/generate-ruby-sdk/templates/gemfile.template.d.ts +2 -0
- package/lib/generate-ruby-sdk/templates/gemfile.template.js +7 -0
- package/lib/generate-ruby-sdk/templates/gemfile.template.js.map +1 -0
- package/lib/generate-ruby-sdk/templates/logger.rb.template.d.ts +2 -0
- package/lib/generate-ruby-sdk/templates/logger.rb.template.js +13 -0
- package/lib/generate-ruby-sdk/templates/logger.rb.template.js.map +1 -0
- package/lib/generate-ruby-sdk/templates/rakefile.template.d.ts +2 -0
- package/lib/generate-ruby-sdk/templates/rakefile.template.js +23 -0
- package/lib/generate-ruby-sdk/templates/rakefile.template.js.map +1 -0
- package/lib/generate-ruby-sdk/templates/readme.md.template.d.ts +2 -0
- package/lib/generate-ruby-sdk/templates/readme.md.template.js +184 -0
- package/lib/generate-ruby-sdk/templates/readme.md.template.js.map +1 -0
- package/lib/generate-ruby-sdk/templates/request.rb.template.d.ts +2 -0
- package/lib/generate-ruby-sdk/templates/request.rb.template.js +71 -0
- package/lib/generate-ruby-sdk/templates/request.rb.template.js.map +1 -0
- package/lib/generate-ruby-sdk/templates/resource_error.rb.template.d.ts +2 -0
- package/lib/generate-ruby-sdk/templates/resource_error.rb.template.js +8 -0
- package/lib/generate-ruby-sdk/templates/resource_error.rb.template.js.map +1 -0
- package/lib/generate-ruby-sdk/templates/resource_errors_support.rb.template.d.ts +2 -0
- package/lib/generate-ruby-sdk/templates/resource_errors_support.rb.template.js +10 -0
- package/lib/generate-ruby-sdk/templates/resource_errors_support.rb.template.js.map +1 -0
- package/lib/generate-ruby-sdk/templates/resource_warning.rb.template.d.ts +2 -0
- package/lib/generate-ruby-sdk/templates/resource_warning.rb.template.js +8 -0
- package/lib/generate-ruby-sdk/templates/resource_warning.rb.template.js.map +1 -0
- package/lib/generate-ruby-sdk/templates/resource_warnings_support.rb.template.d.ts +2 -0
- package/lib/generate-ruby-sdk/templates/resource_warnings_support.rb.template.js +10 -0
- package/lib/generate-ruby-sdk/templates/resource_warnings_support.rb.template.js.map +1 -0
- package/lib/generate-ruby-sdk/templates/seamapi.gemspec.template.d.ts +2 -0
- package/lib/generate-ruby-sdk/templates/seamapi.gemspec.template.js +41 -0
- package/lib/generate-ruby-sdk/templates/seamapi.gemspec.template.js.map +1 -0
- package/lib/generate-ruby-sdk/templates/snippets/resource.rb.template.d.ts +6 -0
- package/lib/generate-ruby-sdk/templates/snippets/resource.rb.template.js +15 -0
- package/lib/generate-ruby-sdk/templates/snippets/resource.rb.template.js.map +1 -0
- package/lib/generate-ruby-sdk/templates/version.rb.template.d.ts +2 -0
- package/lib/generate-ruby-sdk/templates/version.rb.template.js +6 -0
- package/lib/generate-ruby-sdk/templates/version.rb.template.js.map +1 -0
- package/lib/index.d.ts +2 -0
- package/lib/index.js +3 -0
- package/lib/index.js.map +1 -0
- package/lib/openapi/flatten-obj-schema.d.ts +5 -0
- package/lib/openapi/flatten-obj-schema.js +86 -0
- package/lib/openapi/flatten-obj-schema.js.map +1 -0
- package/lib/openapi/get-parameter-and-response-schema.d.ts +20 -0
- package/lib/openapi/get-parameter-and-response-schema.js +42 -0
- package/lib/openapi/get-parameter-and-response-schema.js.map +1 -0
- package/lib/openapi/index.d.ts +2 -0
- package/lib/openapi/index.js +3 -0
- package/lib/openapi/index.js.map +1 -0
- package/lib/types.d.ts +91 -0
- package/lib/types.js +2 -0
- package/lib/types.js.map +1 -0
- package/package.json +95 -0
- package/src/index.ts +6 -0
- package/src/lib/cli.ts +71 -0
- package/src/lib/fs-util/index.ts +2 -0
- package/src/lib/fs-util/populate-fs.ts +14 -0
- package/src/lib/fs-util/write-fs.ts +10 -0
- package/src/lib/generate-csharp-sdk/codegen.ts +648 -0
- package/src/lib/generate-csharp-sdk/constants.ts +1 -0
- package/src/lib/generate-csharp-sdk/generate-csharp-sdk.ts +126 -0
- package/src/lib/generate-csharp-sdk/generate-csproj.ts +45 -0
- package/src/lib/generate-csharp-sdk/templates/dataclass.ts +973 -0
- package/src/lib/generate-csharp-sdk/templates/fs/csharp-testing.sln +34 -0
- package/src/lib/generate-csharp-sdk/templates/fs/src/Seam/Client/ApiResponse.cs +159 -0
- package/src/lib/generate-csharp-sdk/templates/fs/src/Seam/Client/ClientUtils.cs +280 -0
- package/src/lib/generate-csharp-sdk/templates/fs/src/Seam/Client/ExceptionFactory.cs +12 -0
- package/src/lib/generate-csharp-sdk/templates/fs/src/Seam/Client/GlobalSeamRequestConfiguration.cs +60 -0
- package/src/lib/generate-csharp-sdk/templates/fs/src/Seam/Client/HttpMethod.cs +29 -0
- package/src/lib/generate-csharp-sdk/templates/fs/src/Seam/Client/IAsynchronousSeam.cs +142 -0
- package/src/lib/generate-csharp-sdk/templates/fs/src/Seam/Client/IReadableSeamRequestConfiguration.cs +68 -0
- package/src/lib/generate-csharp-sdk/templates/fs/src/Seam/Client/ISynchronousSeam.cs +103 -0
- package/src/lib/generate-csharp-sdk/templates/fs/src/Seam/Client/Multimap.cs +286 -0
- package/src/lib/generate-csharp-sdk/templates/fs/src/Seam/Client/RequestOptions.cs +74 -0
- package/src/lib/generate-csharp-sdk/templates/fs/src/Seam/Client/RetryConfiguration.cs +21 -0
- package/src/lib/generate-csharp-sdk/templates/fs/src/Seam/Client/Seam.cs +1070 -0
- package/src/lib/generate-csharp-sdk/templates/fs/src/Seam/Client/SeamException.cs +64 -0
- package/src/lib/generate-csharp-sdk/templates/fs/src/Seam/Client/SeamRequestConfiguration.cs +662 -0
- package/src/lib/generate-csharp-sdk/templates/fs/src/Seam/Model/AsbtractModelSchema.cs +62 -0
- package/src/lib/generate-php-sdk/generate-php-sdk.ts +176 -0
- package/src/lib/generate-php-sdk/index.ts +1 -0
- package/src/lib/generate-php-sdk/templates/composer.json.template.ts +24 -0
- package/src/lib/generate-php-sdk/templates/env.example.template.ts +3 -0
- package/src/lib/generate-php-sdk/templates/gitignore.template.ts +5 -0
- package/src/lib/generate-php-sdk/templates/package.json.template.ts +11 -0
- package/src/lib/generate-php-sdk/templates/readme.md.template.ts +85 -0
- package/src/lib/generate-php-sdk/templates/smoke-test.template.ts +29 -0
- package/src/lib/generate-php-sdk/templates/test-fixture.template.ts +20 -0
- package/src/lib/generate-php-sdk/utils/deep-extract-resource-object-schemas.ts +160 -0
- package/src/lib/generate-php-sdk/utils/deep-flatten-one-of-and-all-of-schema.ts +128 -0
- package/src/lib/generate-php-sdk/utils/generate-resource-object-class.ts +105 -0
- package/src/lib/generate-php-sdk/utils/generate-seam-client.ts +115 -0
- package/src/lib/generate-php-sdk/utils/get-php-type.ts +21 -0
- package/src/lib/generate-php-sdk/utils/php-client.ts +189 -0
- package/src/lib/generate-python-sdk/class-file.ts +114 -0
- package/src/lib/generate-python-sdk/generate-python-sdk.ts +147 -0
- package/src/lib/generate-python-sdk/index.ts +1 -0
- package/src/lib/generate-python-sdk/map-python-type.ts +29 -0
- package/src/lib/generate-python-sdk/templates/conftest.py.template.ts +11 -0
- package/src/lib/generate-python-sdk/templates/pyproject.toml.template.ts +20 -0
- package/src/lib/generate-python-sdk/templates/readme.md.template.ts +47 -0
- package/src/lib/generate-python-sdk/templates/routes.py.template.ts +13 -0
- package/src/lib/generate-python-sdk/templates/seam.py.template.ts +73 -0
- package/src/lib/generate-python-sdk/templates/snippets/abstract-routes.template.ts +9 -0
- package/src/lib/generate-python-sdk/templates/snippets/abstract-seam.template.ts +8 -0
- package/src/lib/generate-python-sdk/templates/snippets/resource-dataclass.template.ts +15 -0
- package/src/lib/generate-python-sdk/templates/test_smoke.py.template.ts +12 -0
- package/src/lib/generate-python-sdk/templates/utils/deep_attr_dict.py.template.ts +27 -0
- package/src/lib/generate-ruby-sdk/generate-ruby-sdk.ts +153 -0
- package/src/lib/generate-ruby-sdk/index.ts +1 -0
- package/src/lib/generate-ruby-sdk/request.rb.template.ts +0 -0
- package/src/lib/generate-ruby-sdk/ruby-client.ts +81 -0
- package/src/lib/generate-ruby-sdk/templates/base_client.rb.template.ts +21 -0
- package/src/lib/generate-ruby-sdk/templates/base_resource.rb.template.ts +58 -0
- package/src/lib/generate-ruby-sdk/templates/client.rb.template.ts +73 -0
- package/src/lib/generate-ruby-sdk/templates/gemfile.template.ts +6 -0
- package/src/lib/generate-ruby-sdk/templates/logger.rb.template.ts +12 -0
- package/src/lib/generate-ruby-sdk/templates/rakefile.template.ts +22 -0
- package/src/lib/generate-ruby-sdk/templates/readme.md.template.ts +183 -0
- package/src/lib/generate-ruby-sdk/templates/request.rb.template.ts +70 -0
- package/src/lib/generate-ruby-sdk/templates/resource_error.rb.template.ts +7 -0
- package/src/lib/generate-ruby-sdk/templates/resource_errors_support.rb.template.ts +9 -0
- package/src/lib/generate-ruby-sdk/templates/resource_warning.rb.template.ts +7 -0
- package/src/lib/generate-ruby-sdk/templates/resource_warnings_support.rb.template.ts +9 -0
- package/src/lib/generate-ruby-sdk/templates/seamapi.gemspec.template.ts +40 -0
- package/src/lib/generate-ruby-sdk/templates/snippets/resource.rb.template.ts +24 -0
- package/src/lib/generate-ruby-sdk/templates/version.rb.template.ts +5 -0
- package/src/lib/index.ts +2 -0
- package/src/lib/openapi/flatten-obj-schema.ts +124 -0
- package/src/lib/openapi/get-parameter-and-response-schema.ts +59 -0
- package/src/lib/openapi/index.ts +2 -0
- package/src/lib/types.ts +96 -0
|
@@ -0,0 +1,184 @@
|
|
|
1
|
+
export default () => `# Seam API Ruby SDK
|
|
2
|
+
|
|
3
|
+
[](https://rubygems.org/gems/seamapi)
|
|
4
|
+
[](https://github.com/seamapi/ruby/actions)
|
|
5
|
+
[](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,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 @@
|
|
|
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,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 @@
|
|
|
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,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,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,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 @@
|
|
|
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
package/lib/index.js
ADDED
package/lib/index.js.map
ADDED
|
@@ -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 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/lib/openapi/index.ts"],"names":[],"mappings":"AAAA,cAAc,yBAAyB,CAAA;AACvC,cAAc,wCAAwC,CAAA"}
|