From 7dd123fe772b599d2525a2389a2f8a606c82f146 Mon Sep 17 00:00:00 2001 From: eden wang <64514273+eyw520@users.noreply.github.com> Date: Tue, 26 Nov 2024 14:51:20 -0500 Subject: [PATCH] fix(cli): validated example generation (#5275) * Validated example generation. * Update ete snapshots. * Update snapshots. * Update Snapshots * chore(cli): Add dynamic property to IR (#5276) * fix(docs): update public sdk guide redirect (#5274) * (chore): remove `hidden` from publish sdk guide * Update snapshots. * Better string example generation & ete test updates. * Remove non-null assertion; snapshot updates. * Add additional example strings; default to minLength. * Update snapshots * Update snapshots. * Update snapshots * Snapshot * update csharp model snapshots. --------- Co-authored-by: Alex McKinney Co-authored-by: Catherine Deskur <46695336+chdeskur@users.noreply.github.com> Co-authored-by: Deep Singhvi --- .../__snapshots__/dependencies.test.ts.snap | 2 +- .../src/tests/generate/fernignore.test.ts | 2 +- .../__test__/test-definitions/validation.json | 70 +-- .../generator/generatePrimitiveExample.ts | 134 ++++- .../__test__/__snapshots__/validation.json | 42 +- packages/commons/core-utils/src/examples.ts | 15 + .../alias-extends/src/SeedAliasExtends.sln | 56 +- seed/csharp-model/alias/src/SeedAlias.sln | 56 +- .../csharp-model/any-auth/src/SeedAnyAuth.sln | 56 +- .../src/SeedApiWideBasePath.sln | 56 +- .../audiences/src/SeedAudiences.sln | 56 +- .../src/SeedAuthEnvironmentVariables.sln | 56 +- .../src/SeedBasicAuthEnvironmentVariables.sln | 56 +- .../basic-auth/src/SeedBasicAuth.sln | 56 +- .../SeedBearerTokenEnvironmentVariable.sln | 56 +- seed/csharp-model/bytes/src/SeedBytes.sln | 56 +- .../src/SeedApi.sln | 56 +- .../circular-references/src/SeedApi.sln | 56 +- .../src/SeedCrossPackageTypeNames.sln | 56 +- .../src/SeedApi.sln | 56 +- .../csharp-grpc-proto/src/SeedApi.sln | 56 +- .../src/SeedCsharpNamespaceConflict.sln | 56 +- .../custom-auth/src/SeedCustomAuth.sln | 56 +- .../forward-compatible-enums/src/SeedEnum.sln | 56 +- .../enum/plain-enums/src/SeedEnum.sln | 56 +- .../error-property/src/SeedErrorProperty.sln | 56 +- .../examples/src/SeedExamples.sln | 56 +- .../exhaustive/src/SeedExhaustive.sln | 56 +- seed/csharp-model/extends/src/SeedExtends.sln | 56 +- .../src/SeedExtraProperties.sln | 56 +- .../file-download/src/SeedFileDownload.sln | 56 +- .../file-upload/src/SeedFileUpload.sln | 56 +- seed/csharp-model/folders/src/SeedApi.sln | 56 +- .../no-custom-config/.github/workflows/ci.yml | 69 +++ .../no-custom-config/.gitignore | 484 ++++++++++++++++++ .../no-custom-config/.mock/fern.config.json | 1 + .../no-custom-config/.mock/generators.yml | 6 + .../no-custom-config/.mock/overrides.yml | 56 ++ .../.mock/proto/data/v1/data.proto | 213 ++++++++ .../.mock/proto/google/api/annotations.proto | 31 ++ .../proto/google/api/field_behavior.proto | 104 ++++ .../.mock/proto/google/api/http.proto | 379 ++++++++++++++ .../no-custom-config/proto/data/v1/data.proto | 213 ++++++++ .../proto/google/api/annotations.proto | 31 ++ .../proto/google/api/field_behavior.proto | 104 ++++ .../proto/google/api/http.proto | 379 ++++++++++++++ .../no-custom-config/snippet-templates.json | 0 .../no-custom-config/snippet.json | 0 .../SeedApi.Test/Core/EnumSerializerTests.cs | 61 +++ .../SeedApi.Test/SeedApi.Test.Custom.props | 7 + .../src/SeedApi.Test/SeedApi.Test.csproj | 33 ++ .../no-custom-config/src/SeedApi.sln | 28 + .../no-custom-config/src/SeedApi/Column.cs | 64 +++ .../SeedApi/Core/CollectionItemSerializer.cs | 91 ++++ .../src/SeedApi/Core/Constants.cs | 7 + .../src/SeedApi/Core/DateTimeSerializer.cs | 22 + .../src/SeedApi/Core/EnumSerializer.cs | 53 ++ .../src/SeedApi/Core/JsonConfiguration.cs | 36 ++ .../src/SeedApi/Core/OneOfSerializer.cs | 69 +++ .../src/SeedApi/Core/Public/Version.cs | 6 + .../src/SeedApi/DeleteResponse.cs | 30 ++ .../src/SeedApi/DescribeResponse.cs | 73 +++ .../src/SeedApi/FetchResponse.cs | 65 +++ .../src/SeedApi/IndexedData.cs | 50 ++ .../src/SeedApi/ListElement.cs | 39 ++ .../src/SeedApi/ListResponse.cs | 66 +++ .../no-custom-config/src/SeedApi/Metadata.cs | 39 ++ .../src/SeedApi/MetadataValue.cs | 91 ++++ .../src/SeedApi/NamespaceSummary.cs | 39 ++ .../src/SeedApi/Pagination.cs | 39 ++ .../src/SeedApi/QueryColumn.cs | 75 +++ .../src/SeedApi/QueryResponse.cs | 66 +++ .../src/SeedApi/QueryResult.cs | 50 ++ .../src/SeedApi/ScoredColumn.cs | 72 +++ .../src/SeedApi/SeedApi.Custom.props | 20 + .../src/SeedApi/SeedApi.csproj | 65 +++ .../src/SeedApi/UpdateResponse.cs | 30 ++ .../src/SeedApi/UploadResponse.cs | 39 ++ .../no-custom-config/src/SeedApi/Usage.cs | 39 ++ .../read-only-memory/.github/workflows/ci.yml | 69 +++ .../read-only-memory/.gitignore | 484 ++++++++++++++++++ .../read-only-memory/.mock/fern.config.json | 1 + .../read-only-memory/.mock/generators.yml | 6 + .../read-only-memory/.mock/overrides.yml | 56 ++ .../.mock/proto/data/v1/data.proto | 213 ++++++++ .../.mock/proto/google/api/annotations.proto | 31 ++ .../proto/google/api/field_behavior.proto | 104 ++++ .../.mock/proto/google/api/http.proto | 379 ++++++++++++++ .../read-only-memory/proto/data/v1/data.proto | 213 ++++++++ .../proto/google/api/annotations.proto | 31 ++ .../proto/google/api/field_behavior.proto | 104 ++++ .../proto/google/api/http.proto | 379 ++++++++++++++ .../read-only-memory/snippet-templates.json | 0 .../read-only-memory/snippet.json | 0 .../SeedApi.Test/Core/EnumSerializerTests.cs | 61 +++ .../SeedApi.Test/SeedApi.Test.Custom.props | 7 + .../src/SeedApi.Test/SeedApi.Test.csproj | 33 ++ .../read-only-memory/src/SeedApi.sln | 28 + .../read-only-memory/src/SeedApi/Column.cs | 64 +++ .../SeedApi/Core/CollectionItemSerializer.cs | 91 ++++ .../src/SeedApi/Core/Constants.cs | 7 + .../src/SeedApi/Core/DateTimeSerializer.cs | 22 + .../src/SeedApi/Core/EnumSerializer.cs | 53 ++ .../src/SeedApi/Core/JsonConfiguration.cs | 36 ++ .../src/SeedApi/Core/OneOfSerializer.cs | 69 +++ .../src/SeedApi/Core/Public/Version.cs | 6 + .../src/SeedApi/DeleteResponse.cs | 30 ++ .../src/SeedApi/DescribeResponse.cs | 73 +++ .../src/SeedApi/FetchResponse.cs | 65 +++ .../src/SeedApi/IndexedData.cs | 50 ++ .../src/SeedApi/ListElement.cs | 39 ++ .../src/SeedApi/ListResponse.cs | 66 +++ .../read-only-memory/src/SeedApi/Metadata.cs | 39 ++ .../src/SeedApi/MetadataValue.cs | 91 ++++ .../src/SeedApi/NamespaceSummary.cs | 39 ++ .../src/SeedApi/Pagination.cs | 39 ++ .../src/SeedApi/QueryColumn.cs | 75 +++ .../src/SeedApi/QueryResponse.cs | 66 +++ .../src/SeedApi/QueryResult.cs | 50 ++ .../src/SeedApi/ScoredColumn.cs | 72 +++ .../src/SeedApi/SeedApi.Custom.props | 20 + .../src/SeedApi/SeedApi.csproj | 65 +++ .../src/SeedApi/UpdateResponse.cs | 30 ++ .../src/SeedApi/UploadResponse.cs | 39 ++ .../read-only-memory/src/SeedApi/Usage.cs | 39 ++ .../grpc-proto/.github/workflows/ci.yml | 69 +++ seed/csharp-model/grpc-proto/.gitignore | 484 ++++++++++++++++++ .../grpc-proto/.mock/fern.config.json | 1 + .../grpc-proto/.mock/generators.yml | 6 + .../grpc-proto/.mock/overrides.yml | 31 ++ .../.mock/proto/google/api/annotations.proto | 31 ++ .../.mock/proto/google/api/http.proto | 379 ++++++++++++++ .../grpc-proto/.mock/proto/user/v1/user.proto | 38 ++ .../proto/google/api/annotations.proto | 31 ++ .../grpc-proto/proto/google/api/http.proto | 379 ++++++++++++++ .../grpc-proto/proto/user/v1/user.proto | 38 ++ .../grpc-proto/snippet-templates.json | 0 seed/csharp-model/grpc-proto/snippet.json | 0 .../SeedApi.Test/Core/EnumSerializerTests.cs | 61 +++ .../SeedApi.Test/SeedApi.Test.Custom.props | 7 + .../src/SeedApi.Test/SeedApi.Test.csproj | 33 ++ seed/csharp-model/grpc-proto/src/SeedApi.sln | 28 + .../SeedApi/Core/CollectionItemSerializer.cs | 91 ++++ .../grpc-proto/src/SeedApi/Core/Constants.cs | 7 + .../src/SeedApi/Core/DateTimeSerializer.cs | 22 + .../src/SeedApi/Core/EnumSerializer.cs | 53 ++ .../src/SeedApi/Core/JsonConfiguration.cs | 36 ++ .../src/SeedApi/Core/OneOfSerializer.cs | 69 +++ .../src/SeedApi/Core/Public/Version.cs | 6 + .../grpc-proto/src/SeedApi/CreateResponse.cs | 42 ++ .../grpc-proto/src/SeedApi/Metadata.cs | 39 ++ .../grpc-proto/src/SeedApi/MetadataValue.cs | 91 ++++ .../src/SeedApi/SeedApi.Custom.props | 20 + .../grpc-proto/src/SeedApi/SeedApi.csproj | 63 +++ .../grpc-proto/src/SeedApi/UserModel.cs | 74 +++ .../src/SeedIdempotencyHeaders.sln | 56 +- seed/csharp-model/imdb/src/SeedApi.sln | 56 +- seed/csharp-model/license/src/SeedLicense.sln | 56 +- seed/csharp-model/literal/src/SeedLiteral.sln | 56 +- .../mixed-case/src/SeedMixedCase.sln | 56 +- .../src/SeedMixedFileDirectory.sln | 56 +- .../multi-line-docs/src/SeedMultiLineDocs.sln | 56 +- .../src/SeedMultiUrlEnvironmentNoDefault.sln | 56 +- .../src/SeedMultiUrlEnvironment.sln | 56 +- .../no-environment/src/SeedNoEnvironment.sln | 56 +- .../src/SeedOauthClientCredentialsDefault.sln | 56 +- ...hClientCredentialsEnvironmentVariables.sln | 56 +- .../src/SeedOauthClientCredentials.sln | 56 +- .../src/SeedOauthClientCredentials.sln | 56 +- seed/csharp-model/object/src/SeedObject.sln | 56 +- .../src/SeedObjectsWithImports.sln | 56 +- .../optional/src/SeedObjectsWithImports.sln | 56 +- .../package-yml/src/SeedPackageYml.sln | 56 +- .../pagination/src/SeedPagination.sln | 56 +- .../src/SeedPathParameters.sln | 56 +- .../plain-text/src/SeedPlainText.sln | 56 +- .../src/SeedQueryParameters.sln | 56 +- .../reserved-keywords/src/SeedNurseryApi.sln | 56 +- .../src/SeedResponseProperty.sln | 56 +- .../src/SeedServerSentEvents.sln | 56 +- .../src/SeedServerSentEvents.sln | 56 +- seed/csharp-model/simple-fhir/src/SeedApi.sln | 56 +- .../src/SeedSingleUrlEnvironmentDefault.sln | 56 +- .../src/SeedSingleUrlEnvironmentNoDefault.sln | 56 +- .../streaming-parameter/src/SeedStreaming.sln | 56 +- .../streaming/src/SeedStreaming.sln | 56 +- seed/csharp-model/trace/src/SeedTrace.sln | 56 +- .../src/SeedUndiscriminatedUnions.sln | 56 +- seed/csharp-model/unions/src/SeedUnions.sln | 56 +- .../unknown/src/SeedUnknownAsAny.sln | 56 +- .../validation/src/SeedValidation.sln | 56 +- .../variables/src/SeedVariables.sln | 56 +- .../version-no-default/src/SeedVersion.sln | 56 +- seed/csharp-model/version/src/SeedVersion.sln | 56 +- .../websocket/src/SeedWebsocket.sln | 56 +- .../no-custom-config/src/SeedApi.sln | 28 + .../package-id/src/SeedApi.sln | 28 + .../read-only-memory/src/SeedApi.sln | 28 + seed/csharp-sdk/grpc-proto/src/SeedApi.sln | 28 + .../.mock/definition/.service.yml.swp | Bin 0 -> 12288 bytes .../.mock/definition/.service.yml.swp | Bin 0 -> 12288 bytes .../.mock/definition/.service.yml.swp | Bin 0 -> 12288 bytes .../grpc-proto-exhaustive/dataservice.go | 160 +++--- .../dataservice/client.go | 149 +++--- .../grpc-proto-exhaustive/internal/caller.go | 4 - .../internal/error_decoder.go | 45 ++ .../internal/error_decoder_test.go | 55 ++ .../grpc-proto-exhaustive/internal/http.go | 11 + seed/go-sdk/grpc-proto/internal/caller.go | 4 - .../grpc-proto/internal/error_decoder.go | 45 ++ .../grpc-proto/internal/error_decoder_test.go | 55 ++ seed/go-sdk/grpc-proto/internal/http.go | 11 + seed/go-sdk/grpc-proto/userservice.go | 20 +- seed/go-sdk/grpc-proto/userservice/client.go | 21 +- .../dynamic-snippets/example0/snippet.go | 6 +- .../dynamic-snippets/example1/snippet.go | 6 +- seed/go-sdk/validation/snippet.json | 4 +- .../.mock/definition/.service.yml.swp | Bin 0 -> 12288 bytes .../file-upload/.mock/definition/service.yml | 3 + .../license/.github/workflows/ci.yml | 61 +++ seed/java-model/license/.gitignore | 24 + .../license/.mock/definition/__package__.yml | 13 + .../license/.mock/definition/api.yml | 1 + .../java-model/license/.mock/fern.config.json | 1 + seed/java-model/license/.mock/generators.yml | 1 + seed/java-model/license/build.gradle | 67 +++ seed/java-model/license/settings.gradle | 0 .../java-model/license/snippet-templates.json | 0 seed/java-model/license/snippet.json | 0 .../license/core/DateTimeDeserializer.java | 55 ++ .../com/seed/license/core/ObjectMappers.java | 36 ++ .../java/com/seed/license/model/Type.java | 86 ++++ .../pagination/.mock/definition/users.yml | 116 +++-- .../.github/workflows/ci.yml | 61 +++ .../server-sent-event-examples/.gitignore | 24 + .../.mock/definition/api.yml | 1 + .../.mock/definition/completions.yml | 36 ++ .../.mock/fern.config.json | 1 + .../.mock/generators.yml | 1 + .../server-sent-event-examples/build.gradle | 67 +++ .../settings.gradle | 0 .../snippet-templates.json | 0 .../server-sent-event-examples/snippet.json | 0 .../core/DateTimeDeserializer.java | 55 ++ .../serverSentEvents/core/ObjectMappers.java | 36 ++ .../model/completions/StreamedCompletion.java | 116 +++++ .../.mock/definition/.service.yml.swp | Bin 0 -> 12288 bytes .../pagination/.mock/definition/users.yml | 116 +++-- .../.mock/definition/.service.yml.swp | Bin 0 -> 12288 bytes .../file-upload/.mock/definition/service.yml | 3 + .../pagination/.mock/definition/users.yml | 116 +++-- seed/postman/validation/collection.json | 24 +- .../.mock/definition/.service.yml.swp | Bin 0 -> 12288 bytes .../pagination/.mock/definition/users.yml | 116 +++-- .../validation/lib/fern_validation.rb | 24 +- seed/ruby-sdk/validation/snippet.json | 8 +- .../.mock/definition/.service.yml.swp | Bin 0 -> 12288 bytes .../.mock/definition/.service.yml.swp | Bin 0 -> 12288 bytes seed/ts-sdk/path-parameters/README.md | 13 +- seed/ts-sdk/path-parameters/snippet.json | 10 +- .../src/api/resources/user/client/Client.ts | 4 +- seed/ts-sdk/validation/README.md | 6 +- seed/ts-sdk/validation/reference.md | 6 +- .../validation/resolved-snippet-templates.md | 12 +- seed/ts-sdk/validation/snippet.json | 4 +- seed/ts-sdk/validation/src/Client.ts | 12 +- .../src/api/client/requests/CreateRequest.ts | 6 +- .../src/api/client/requests/GetRequest.ts | 6 +- 268 files changed, 12907 insertions(+), 2463 deletions(-) create mode 100644 seed/csharp-model/grpc-proto-exhaustive/no-custom-config/.github/workflows/ci.yml create mode 100644 seed/csharp-model/grpc-proto-exhaustive/no-custom-config/.gitignore create mode 100644 seed/csharp-model/grpc-proto-exhaustive/no-custom-config/.mock/fern.config.json create mode 100644 seed/csharp-model/grpc-proto-exhaustive/no-custom-config/.mock/generators.yml create mode 100644 seed/csharp-model/grpc-proto-exhaustive/no-custom-config/.mock/overrides.yml create mode 100644 seed/csharp-model/grpc-proto-exhaustive/no-custom-config/.mock/proto/data/v1/data.proto create mode 100644 seed/csharp-model/grpc-proto-exhaustive/no-custom-config/.mock/proto/google/api/annotations.proto create mode 100644 seed/csharp-model/grpc-proto-exhaustive/no-custom-config/.mock/proto/google/api/field_behavior.proto create mode 100644 seed/csharp-model/grpc-proto-exhaustive/no-custom-config/.mock/proto/google/api/http.proto create mode 100644 seed/csharp-model/grpc-proto-exhaustive/no-custom-config/proto/data/v1/data.proto create mode 100644 seed/csharp-model/grpc-proto-exhaustive/no-custom-config/proto/google/api/annotations.proto create mode 100644 seed/csharp-model/grpc-proto-exhaustive/no-custom-config/proto/google/api/field_behavior.proto create mode 100644 seed/csharp-model/grpc-proto-exhaustive/no-custom-config/proto/google/api/http.proto create mode 100644 seed/csharp-model/grpc-proto-exhaustive/no-custom-config/snippet-templates.json create mode 100644 seed/csharp-model/grpc-proto-exhaustive/no-custom-config/snippet.json create mode 100644 seed/csharp-model/grpc-proto-exhaustive/no-custom-config/src/SeedApi.Test/Core/EnumSerializerTests.cs create mode 100644 seed/csharp-model/grpc-proto-exhaustive/no-custom-config/src/SeedApi.Test/SeedApi.Test.Custom.props create mode 100644 seed/csharp-model/grpc-proto-exhaustive/no-custom-config/src/SeedApi.Test/SeedApi.Test.csproj create mode 100644 seed/csharp-model/grpc-proto-exhaustive/no-custom-config/src/SeedApi.sln create mode 100644 seed/csharp-model/grpc-proto-exhaustive/no-custom-config/src/SeedApi/Column.cs create mode 100644 seed/csharp-model/grpc-proto-exhaustive/no-custom-config/src/SeedApi/Core/CollectionItemSerializer.cs create mode 100644 seed/csharp-model/grpc-proto-exhaustive/no-custom-config/src/SeedApi/Core/Constants.cs create mode 100644 seed/csharp-model/grpc-proto-exhaustive/no-custom-config/src/SeedApi/Core/DateTimeSerializer.cs create mode 100644 seed/csharp-model/grpc-proto-exhaustive/no-custom-config/src/SeedApi/Core/EnumSerializer.cs create mode 100644 seed/csharp-model/grpc-proto-exhaustive/no-custom-config/src/SeedApi/Core/JsonConfiguration.cs create mode 100644 seed/csharp-model/grpc-proto-exhaustive/no-custom-config/src/SeedApi/Core/OneOfSerializer.cs create mode 100644 seed/csharp-model/grpc-proto-exhaustive/no-custom-config/src/SeedApi/Core/Public/Version.cs create mode 100644 seed/csharp-model/grpc-proto-exhaustive/no-custom-config/src/SeedApi/DeleteResponse.cs create mode 100644 seed/csharp-model/grpc-proto-exhaustive/no-custom-config/src/SeedApi/DescribeResponse.cs create mode 100644 seed/csharp-model/grpc-proto-exhaustive/no-custom-config/src/SeedApi/FetchResponse.cs create mode 100644 seed/csharp-model/grpc-proto-exhaustive/no-custom-config/src/SeedApi/IndexedData.cs create mode 100644 seed/csharp-model/grpc-proto-exhaustive/no-custom-config/src/SeedApi/ListElement.cs create mode 100644 seed/csharp-model/grpc-proto-exhaustive/no-custom-config/src/SeedApi/ListResponse.cs create mode 100644 seed/csharp-model/grpc-proto-exhaustive/no-custom-config/src/SeedApi/Metadata.cs create mode 100644 seed/csharp-model/grpc-proto-exhaustive/no-custom-config/src/SeedApi/MetadataValue.cs create mode 100644 seed/csharp-model/grpc-proto-exhaustive/no-custom-config/src/SeedApi/NamespaceSummary.cs create mode 100644 seed/csharp-model/grpc-proto-exhaustive/no-custom-config/src/SeedApi/Pagination.cs create mode 100644 seed/csharp-model/grpc-proto-exhaustive/no-custom-config/src/SeedApi/QueryColumn.cs create mode 100644 seed/csharp-model/grpc-proto-exhaustive/no-custom-config/src/SeedApi/QueryResponse.cs create mode 100644 seed/csharp-model/grpc-proto-exhaustive/no-custom-config/src/SeedApi/QueryResult.cs create mode 100644 seed/csharp-model/grpc-proto-exhaustive/no-custom-config/src/SeedApi/ScoredColumn.cs create mode 100644 seed/csharp-model/grpc-proto-exhaustive/no-custom-config/src/SeedApi/SeedApi.Custom.props create mode 100644 seed/csharp-model/grpc-proto-exhaustive/no-custom-config/src/SeedApi/SeedApi.csproj create mode 100644 seed/csharp-model/grpc-proto-exhaustive/no-custom-config/src/SeedApi/UpdateResponse.cs create mode 100644 seed/csharp-model/grpc-proto-exhaustive/no-custom-config/src/SeedApi/UploadResponse.cs create mode 100644 seed/csharp-model/grpc-proto-exhaustive/no-custom-config/src/SeedApi/Usage.cs create mode 100644 seed/csharp-model/grpc-proto-exhaustive/read-only-memory/.github/workflows/ci.yml create mode 100644 seed/csharp-model/grpc-proto-exhaustive/read-only-memory/.gitignore create mode 100644 seed/csharp-model/grpc-proto-exhaustive/read-only-memory/.mock/fern.config.json create mode 100644 seed/csharp-model/grpc-proto-exhaustive/read-only-memory/.mock/generators.yml create mode 100644 seed/csharp-model/grpc-proto-exhaustive/read-only-memory/.mock/overrides.yml create mode 100644 seed/csharp-model/grpc-proto-exhaustive/read-only-memory/.mock/proto/data/v1/data.proto create mode 100644 seed/csharp-model/grpc-proto-exhaustive/read-only-memory/.mock/proto/google/api/annotations.proto create mode 100644 seed/csharp-model/grpc-proto-exhaustive/read-only-memory/.mock/proto/google/api/field_behavior.proto create mode 100644 seed/csharp-model/grpc-proto-exhaustive/read-only-memory/.mock/proto/google/api/http.proto create mode 100644 seed/csharp-model/grpc-proto-exhaustive/read-only-memory/proto/data/v1/data.proto create mode 100644 seed/csharp-model/grpc-proto-exhaustive/read-only-memory/proto/google/api/annotations.proto create mode 100644 seed/csharp-model/grpc-proto-exhaustive/read-only-memory/proto/google/api/field_behavior.proto create mode 100644 seed/csharp-model/grpc-proto-exhaustive/read-only-memory/proto/google/api/http.proto create mode 100644 seed/csharp-model/grpc-proto-exhaustive/read-only-memory/snippet-templates.json create mode 100644 seed/csharp-model/grpc-proto-exhaustive/read-only-memory/snippet.json create mode 100644 seed/csharp-model/grpc-proto-exhaustive/read-only-memory/src/SeedApi.Test/Core/EnumSerializerTests.cs create mode 100644 seed/csharp-model/grpc-proto-exhaustive/read-only-memory/src/SeedApi.Test/SeedApi.Test.Custom.props create mode 100644 seed/csharp-model/grpc-proto-exhaustive/read-only-memory/src/SeedApi.Test/SeedApi.Test.csproj create mode 100644 seed/csharp-model/grpc-proto-exhaustive/read-only-memory/src/SeedApi.sln create mode 100644 seed/csharp-model/grpc-proto-exhaustive/read-only-memory/src/SeedApi/Column.cs create mode 100644 seed/csharp-model/grpc-proto-exhaustive/read-only-memory/src/SeedApi/Core/CollectionItemSerializer.cs create mode 100644 seed/csharp-model/grpc-proto-exhaustive/read-only-memory/src/SeedApi/Core/Constants.cs create mode 100644 seed/csharp-model/grpc-proto-exhaustive/read-only-memory/src/SeedApi/Core/DateTimeSerializer.cs create mode 100644 seed/csharp-model/grpc-proto-exhaustive/read-only-memory/src/SeedApi/Core/EnumSerializer.cs create mode 100644 seed/csharp-model/grpc-proto-exhaustive/read-only-memory/src/SeedApi/Core/JsonConfiguration.cs create mode 100644 seed/csharp-model/grpc-proto-exhaustive/read-only-memory/src/SeedApi/Core/OneOfSerializer.cs create mode 100644 seed/csharp-model/grpc-proto-exhaustive/read-only-memory/src/SeedApi/Core/Public/Version.cs create mode 100644 seed/csharp-model/grpc-proto-exhaustive/read-only-memory/src/SeedApi/DeleteResponse.cs create mode 100644 seed/csharp-model/grpc-proto-exhaustive/read-only-memory/src/SeedApi/DescribeResponse.cs create mode 100644 seed/csharp-model/grpc-proto-exhaustive/read-only-memory/src/SeedApi/FetchResponse.cs create mode 100644 seed/csharp-model/grpc-proto-exhaustive/read-only-memory/src/SeedApi/IndexedData.cs create mode 100644 seed/csharp-model/grpc-proto-exhaustive/read-only-memory/src/SeedApi/ListElement.cs create mode 100644 seed/csharp-model/grpc-proto-exhaustive/read-only-memory/src/SeedApi/ListResponse.cs create mode 100644 seed/csharp-model/grpc-proto-exhaustive/read-only-memory/src/SeedApi/Metadata.cs create mode 100644 seed/csharp-model/grpc-proto-exhaustive/read-only-memory/src/SeedApi/MetadataValue.cs create mode 100644 seed/csharp-model/grpc-proto-exhaustive/read-only-memory/src/SeedApi/NamespaceSummary.cs create mode 100644 seed/csharp-model/grpc-proto-exhaustive/read-only-memory/src/SeedApi/Pagination.cs create mode 100644 seed/csharp-model/grpc-proto-exhaustive/read-only-memory/src/SeedApi/QueryColumn.cs create mode 100644 seed/csharp-model/grpc-proto-exhaustive/read-only-memory/src/SeedApi/QueryResponse.cs create mode 100644 seed/csharp-model/grpc-proto-exhaustive/read-only-memory/src/SeedApi/QueryResult.cs create mode 100644 seed/csharp-model/grpc-proto-exhaustive/read-only-memory/src/SeedApi/ScoredColumn.cs create mode 100644 seed/csharp-model/grpc-proto-exhaustive/read-only-memory/src/SeedApi/SeedApi.Custom.props create mode 100644 seed/csharp-model/grpc-proto-exhaustive/read-only-memory/src/SeedApi/SeedApi.csproj create mode 100644 seed/csharp-model/grpc-proto-exhaustive/read-only-memory/src/SeedApi/UpdateResponse.cs create mode 100644 seed/csharp-model/grpc-proto-exhaustive/read-only-memory/src/SeedApi/UploadResponse.cs create mode 100644 seed/csharp-model/grpc-proto-exhaustive/read-only-memory/src/SeedApi/Usage.cs create mode 100644 seed/csharp-model/grpc-proto/.github/workflows/ci.yml create mode 100644 seed/csharp-model/grpc-proto/.gitignore create mode 100644 seed/csharp-model/grpc-proto/.mock/fern.config.json create mode 100644 seed/csharp-model/grpc-proto/.mock/generators.yml create mode 100644 seed/csharp-model/grpc-proto/.mock/overrides.yml create mode 100644 seed/csharp-model/grpc-proto/.mock/proto/google/api/annotations.proto create mode 100644 seed/csharp-model/grpc-proto/.mock/proto/google/api/http.proto create mode 100644 seed/csharp-model/grpc-proto/.mock/proto/user/v1/user.proto create mode 100644 seed/csharp-model/grpc-proto/proto/google/api/annotations.proto create mode 100644 seed/csharp-model/grpc-proto/proto/google/api/http.proto create mode 100644 seed/csharp-model/grpc-proto/proto/user/v1/user.proto create mode 100644 seed/csharp-model/grpc-proto/snippet-templates.json create mode 100644 seed/csharp-model/grpc-proto/snippet.json create mode 100644 seed/csharp-model/grpc-proto/src/SeedApi.Test/Core/EnumSerializerTests.cs create mode 100644 seed/csharp-model/grpc-proto/src/SeedApi.Test/SeedApi.Test.Custom.props create mode 100644 seed/csharp-model/grpc-proto/src/SeedApi.Test/SeedApi.Test.csproj create mode 100644 seed/csharp-model/grpc-proto/src/SeedApi.sln create mode 100644 seed/csharp-model/grpc-proto/src/SeedApi/Core/CollectionItemSerializer.cs create mode 100644 seed/csharp-model/grpc-proto/src/SeedApi/Core/Constants.cs create mode 100644 seed/csharp-model/grpc-proto/src/SeedApi/Core/DateTimeSerializer.cs create mode 100644 seed/csharp-model/grpc-proto/src/SeedApi/Core/EnumSerializer.cs create mode 100644 seed/csharp-model/grpc-proto/src/SeedApi/Core/JsonConfiguration.cs create mode 100644 seed/csharp-model/grpc-proto/src/SeedApi/Core/OneOfSerializer.cs create mode 100644 seed/csharp-model/grpc-proto/src/SeedApi/Core/Public/Version.cs create mode 100644 seed/csharp-model/grpc-proto/src/SeedApi/CreateResponse.cs create mode 100644 seed/csharp-model/grpc-proto/src/SeedApi/Metadata.cs create mode 100644 seed/csharp-model/grpc-proto/src/SeedApi/MetadataValue.cs create mode 100644 seed/csharp-model/grpc-proto/src/SeedApi/SeedApi.Custom.props create mode 100644 seed/csharp-model/grpc-proto/src/SeedApi/SeedApi.csproj create mode 100644 seed/csharp-model/grpc-proto/src/SeedApi/UserModel.cs create mode 100644 seed/csharp-sdk/grpc-proto-exhaustive/no-custom-config/src/SeedApi.sln create mode 100644 seed/csharp-sdk/grpc-proto-exhaustive/package-id/src/SeedApi.sln create mode 100644 seed/csharp-sdk/grpc-proto-exhaustive/read-only-memory/src/SeedApi.sln create mode 100644 seed/csharp-sdk/grpc-proto/src/SeedApi.sln create mode 100644 seed/go-sdk/examples/always-send-required-properties/.mock/definition/.service.yml.swp create mode 100644 seed/go-sdk/examples/exported-client-name/.mock/definition/.service.yml.swp create mode 100644 seed/go-sdk/examples/no-custom-config/.mock/definition/.service.yml.swp create mode 100644 seed/go-sdk/grpc-proto-exhaustive/internal/error_decoder.go create mode 100644 seed/go-sdk/grpc-proto-exhaustive/internal/error_decoder_test.go create mode 100644 seed/go-sdk/grpc-proto/internal/error_decoder.go create mode 100644 seed/go-sdk/grpc-proto/internal/error_decoder_test.go create mode 100644 seed/java-model/examples/.mock/definition/.service.yml.swp create mode 100644 seed/java-model/license/.github/workflows/ci.yml create mode 100644 seed/java-model/license/.gitignore create mode 100644 seed/java-model/license/.mock/definition/__package__.yml create mode 100644 seed/java-model/license/.mock/definition/api.yml create mode 100644 seed/java-model/license/.mock/fern.config.json create mode 100644 seed/java-model/license/.mock/generators.yml create mode 100644 seed/java-model/license/build.gradle create mode 100644 seed/java-model/license/settings.gradle create mode 100644 seed/java-model/license/snippet-templates.json create mode 100644 seed/java-model/license/snippet.json create mode 100644 seed/java-model/license/src/main/java/com/seed/license/core/DateTimeDeserializer.java create mode 100644 seed/java-model/license/src/main/java/com/seed/license/core/ObjectMappers.java create mode 100644 seed/java-model/license/src/main/java/com/seed/license/model/Type.java create mode 100644 seed/java-model/server-sent-event-examples/.github/workflows/ci.yml create mode 100644 seed/java-model/server-sent-event-examples/.gitignore create mode 100644 seed/java-model/server-sent-event-examples/.mock/definition/api.yml create mode 100644 seed/java-model/server-sent-event-examples/.mock/definition/completions.yml create mode 100644 seed/java-model/server-sent-event-examples/.mock/fern.config.json create mode 100644 seed/java-model/server-sent-event-examples/.mock/generators.yml create mode 100644 seed/java-model/server-sent-event-examples/build.gradle create mode 100644 seed/java-model/server-sent-event-examples/settings.gradle create mode 100644 seed/java-model/server-sent-event-examples/snippet-templates.json create mode 100644 seed/java-model/server-sent-event-examples/snippet.json create mode 100644 seed/java-model/server-sent-event-examples/src/main/java/com/seed/serverSentEvents/core/DateTimeDeserializer.java create mode 100644 seed/java-model/server-sent-event-examples/src/main/java/com/seed/serverSentEvents/core/ObjectMappers.java create mode 100644 seed/java-model/server-sent-event-examples/src/main/java/com/seed/serverSentEvents/model/completions/StreamedCompletion.java create mode 100644 seed/java-sdk/examples/.mock/definition/.service.yml.swp create mode 100644 seed/postman/examples/.mock/definition/.service.yml.swp create mode 100644 seed/ruby-sdk/examples/.mock/definition/.service.yml.swp create mode 100644 seed/ts-sdk/examples/examples-with-api-reference/.mock/definition/.service.yml.swp create mode 100644 seed/ts-sdk/examples/retain-original-casing/.mock/definition/.service.yml.swp diff --git a/packages/cli/ete-tests/src/tests/dependencies/__snapshots__/dependencies.test.ts.snap b/packages/cli/ete-tests/src/tests/dependencies/__snapshots__/dependencies.test.ts.snap index 299cf2507ae..8f610aa22b8 100644 --- a/packages/cli/ete-tests/src/tests/dependencies/__snapshots__/dependencies.test.ts.snap +++ b/packages/cli/ete-tests/src/tests/dependencies/__snapshots__/dependencies.test.ts.snap @@ -2,4 +2,4 @@ exports[`dependencies > correctly incorporates dependencies 1`] = `"{"fdrApiDefinitionId":null,"apiVersion":null,"apiName":{"originalName":"dependent","camelCase":{"unsafeName":"dependent","safeName":"dependent"},"snakeCase":{"unsafeName":"dependent","safeName":"dependent"},"screamingSnakeCase":{"unsafeName":"DEPENDENT","safeName":"DEPENDENT"},"pascalCase":{"unsafeName":"Dependent","safeName":"Dependent"}},"apiDisplayName":null,"apiDocs":null,"auth":{"requirement":"ALL","schemes":[],"docs":null},"headers":[],"idempotencyHeaders":[],"types":{"type_imported:RootString":{"inline":false,"name":{"name":{"originalName":"RootString","camelCase":{"unsafeName":"rootString","safeName":"rootString"},"snakeCase":{"unsafeName":"root_string","safeName":"root_string"},"screamingSnakeCase":{"unsafeName":"ROOT_STRING","safeName":"ROOT_STRING"},"pascalCase":{"unsafeName":"RootString","safeName":"RootString"}},"fernFilepath":{"allParts":[{"originalName":"imported","camelCase":{"unsafeName":"imported","safeName":"imported"},"snakeCase":{"unsafeName":"imported","safeName":"imported"},"screamingSnakeCase":{"unsafeName":"IMPORTED","safeName":"IMPORTED"},"pascalCase":{"unsafeName":"Imported","safeName":"Imported"}}],"packagePath":[{"originalName":"imported","camelCase":{"unsafeName":"imported","safeName":"imported"},"snakeCase":{"unsafeName":"imported","safeName":"imported"},"screamingSnakeCase":{"unsafeName":"IMPORTED","safeName":"IMPORTED"},"pascalCase":{"unsafeName":"Imported","safeName":"Imported"}}],"file":null},"typeId":"type_imported:RootString"},"shape":{"_type":"alias","aliasOf":{"_type":"primitive","primitive":{"v1":"STRING","v2":{"type":"string","default":null,"validation":null}}},"resolvedType":{"_type":"primitive","primitive":{"v1":"STRING","v2":{"type":"string","default":null,"validation":null}}}},"referencedTypes":[],"encoding":{"json":{},"proto":null},"source":null,"userProvidedExamples":[],"autogeneratedExamples":[],"availability":null,"docs":null},"type_y:IntegerAlias":{"inline":false,"name":{"name":{"originalName":"IntegerAlias","camelCase":{"unsafeName":"integerAlias","safeName":"integerAlias"},"snakeCase":{"unsafeName":"integer_alias","safeName":"integer_alias"},"screamingSnakeCase":{"unsafeName":"INTEGER_ALIAS","safeName":"INTEGER_ALIAS"},"pascalCase":{"unsafeName":"IntegerAlias","safeName":"IntegerAlias"}},"fernFilepath":{"allParts":[{"originalName":"y","camelCase":{"unsafeName":"y","safeName":"y"},"snakeCase":{"unsafeName":"y","safeName":"y"},"screamingSnakeCase":{"unsafeName":"Y","safeName":"Y"},"pascalCase":{"unsafeName":"Y","safeName":"Y"}}],"packagePath":[],"file":{"originalName":"y","camelCase":{"unsafeName":"y","safeName":"y"},"snakeCase":{"unsafeName":"y","safeName":"y"},"screamingSnakeCase":{"unsafeName":"Y","safeName":"Y"},"pascalCase":{"unsafeName":"Y","safeName":"Y"}}},"typeId":"type_y:IntegerAlias"},"shape":{"_type":"alias","aliasOf":{"_type":"primitive","primitive":{"v1":"INTEGER","v2":{"type":"integer","default":null,"validation":null}}},"resolvedType":{"_type":"primitive","primitive":{"v1":"INTEGER","v2":{"type":"integer","default":null,"validation":null}}}},"referencedTypes":[],"encoding":{"json":{},"proto":null},"source":null,"userProvidedExamples":[],"autogeneratedExamples":[],"availability":null,"docs":null},"type_imported/x:StringAlias":{"inline":false,"name":{"name":{"originalName":"StringAlias","camelCase":{"unsafeName":"stringAlias","safeName":"stringAlias"},"snakeCase":{"unsafeName":"string_alias","safeName":"string_alias"},"screamingSnakeCase":{"unsafeName":"STRING_ALIAS","safeName":"STRING_ALIAS"},"pascalCase":{"unsafeName":"StringAlias","safeName":"StringAlias"}},"fernFilepath":{"allParts":[{"originalName":"imported","camelCase":{"unsafeName":"imported","safeName":"imported"},"snakeCase":{"unsafeName":"imported","safeName":"imported"},"screamingSnakeCase":{"unsafeName":"IMPORTED","safeName":"IMPORTED"},"pascalCase":{"unsafeName":"Imported","safeName":"Imported"}},{"originalName":"x","camelCase":{"unsafeName":"x","safeName":"x"},"snakeCase":{"unsafeName":"x","safeName":"x"},"screamingSnakeCase":{"unsafeName":"X","safeName":"X"},"pascalCase":{"unsafeName":"X","safeName":"X"}}],"packagePath":[{"originalName":"imported","camelCase":{"unsafeName":"imported","safeName":"imported"},"snakeCase":{"unsafeName":"imported","safeName":"imported"},"screamingSnakeCase":{"unsafeName":"IMPORTED","safeName":"IMPORTED"},"pascalCase":{"unsafeName":"Imported","safeName":"Imported"}}],"file":{"originalName":"x","camelCase":{"unsafeName":"x","safeName":"x"},"snakeCase":{"unsafeName":"x","safeName":"x"},"screamingSnakeCase":{"unsafeName":"X","safeName":"X"},"pascalCase":{"unsafeName":"X","safeName":"X"}}},"typeId":"type_imported/x:StringAlias"},"shape":{"_type":"alias","aliasOf":{"_type":"primitive","primitive":{"v1":"STRING","v2":{"type":"string","default":null,"validation":null}}},"resolvedType":{"_type":"primitive","primitive":{"v1":"STRING","v2":{"type":"string","default":null,"validation":null}}}},"referencedTypes":[],"encoding":{"json":{},"proto":null},"source":null,"userProvidedExamples":[],"autogeneratedExamples":[],"availability":null,"docs":null}},"errors":{},"services":{"service_imported":{"availability":null,"name":{"fernFilepath":{"allParts":[{"originalName":"imported","camelCase":{"unsafeName":"imported","safeName":"imported"},"snakeCase":{"unsafeName":"imported","safeName":"imported"},"screamingSnakeCase":{"unsafeName":"IMPORTED","safeName":"IMPORTED"},"pascalCase":{"unsafeName":"Imported","safeName":"Imported"}}],"packagePath":[{"originalName":"imported","camelCase":{"unsafeName":"imported","safeName":"imported"},"snakeCase":{"unsafeName":"imported","safeName":"imported"},"screamingSnakeCase":{"unsafeName":"IMPORTED","safeName":"IMPORTED"},"pascalCase":{"unsafeName":"Imported","safeName":"Imported"}}],"file":null}},"displayName":null,"basePath":{"head":"/","parts":[]},"headers":[],"pathParameters":[],"encoding":{"json":{},"proto":null},"transport":{"type":"http"},"endpoints":[{"id":"endpoint_imported.rootEndpoint","name":{"originalName":"rootEndpoint","camelCase":{"unsafeName":"rootEndpoint","safeName":"rootEndpoint"},"snakeCase":{"unsafeName":"root_endpoint","safeName":"root_endpoint"},"screamingSnakeCase":{"unsafeName":"ROOT_ENDPOINT","safeName":"ROOT_ENDPOINT"},"pascalCase":{"unsafeName":"RootEndpoint","safeName":"RootEndpoint"}},"displayName":null,"auth":false,"idempotent":false,"baseUrl":null,"method":"GET","basePath":null,"path":{"head":"","parts":[]},"fullPath":{"head":"","parts":[]},"pathParameters":[],"allPathParameters":[],"queryParameters":[],"headers":[],"requestBody":null,"sdkRequest":null,"response":{"body":null,"status-code":null},"errors":[],"userSpecifiedExamples":[],"autogeneratedExamples":[{"example":{"id":"0151c4f21dcb59ded0264beca4e001f6c9a6203a","url":"","name":null,"endpointHeaders":[],"endpointPathParameters":[],"queryParameters":[],"servicePathParameters":[],"serviceHeaders":[],"rootPathParameters":[],"request":null,"response":{"type":"ok","value":{"type":"body","value":null}},"docs":null}}],"pagination":null,"transport":null,"availability":null,"docs":null}]}},"constants":{"errorInstanceIdKey":{"name":{"originalName":"errorInstanceId","camelCase":{"unsafeName":"errorInstanceId","safeName":"errorInstanceId"},"snakeCase":{"unsafeName":"error_instance_id","safeName":"error_instance_id"},"screamingSnakeCase":{"unsafeName":"ERROR_INSTANCE_ID","safeName":"ERROR_INSTANCE_ID"},"pascalCase":{"unsafeName":"ErrorInstanceId","safeName":"ErrorInstanceId"}},"wireValue":"errorInstanceId"}},"environments":null,"errorDiscriminationStrategy":{"type":"statusCode"},"basePath":null,"pathParameters":[],"variables":[],"serviceTypeReferenceInfo":{"typesReferencedOnlyByService":{},"sharedTypes":["type_imported:RootString","type_y:IntegerAlias","type_imported/x:StringAlias"]},"webhookGroups":{},"websocketChannels":{},"readmeConfig":null,"sourceConfig":null,"publishConfig":null,"dynamic":{"version":"1.0.0","types":{"type_imported:RootString":{"type":"alias","declaration":{"name":{"originalName":"RootString","camelCase":{"unsafeName":"rootString","safeName":"rootString"},"snakeCase":{"unsafeName":"root_string","safeName":"root_string"},"screamingSnakeCase":{"unsafeName":"ROOT_STRING","safeName":"ROOT_STRING"},"pascalCase":{"unsafeName":"RootString","safeName":"RootString"}},"fernFilepath":{"allParts":[{"originalName":"imported","camelCase":{"unsafeName":"imported","safeName":"imported"},"snakeCase":{"unsafeName":"imported","safeName":"imported"},"screamingSnakeCase":{"unsafeName":"IMPORTED","safeName":"IMPORTED"},"pascalCase":{"unsafeName":"Imported","safeName":"Imported"}}],"packagePath":[{"originalName":"imported","camelCase":{"unsafeName":"imported","safeName":"imported"},"snakeCase":{"unsafeName":"imported","safeName":"imported"},"screamingSnakeCase":{"unsafeName":"IMPORTED","safeName":"IMPORTED"},"pascalCase":{"unsafeName":"Imported","safeName":"Imported"}}],"file":null}},"typeReference":{"_type":"primitive","value":"STRING"}},"type_y:IntegerAlias":{"type":"alias","declaration":{"name":{"originalName":"IntegerAlias","camelCase":{"unsafeName":"integerAlias","safeName":"integerAlias"},"snakeCase":{"unsafeName":"integer_alias","safeName":"integer_alias"},"screamingSnakeCase":{"unsafeName":"INTEGER_ALIAS","safeName":"INTEGER_ALIAS"},"pascalCase":{"unsafeName":"IntegerAlias","safeName":"IntegerAlias"}},"fernFilepath":{"allParts":[{"originalName":"y","camelCase":{"unsafeName":"y","safeName":"y"},"snakeCase":{"unsafeName":"y","safeName":"y"},"screamingSnakeCase":{"unsafeName":"Y","safeName":"Y"},"pascalCase":{"unsafeName":"Y","safeName":"Y"}}],"packagePath":[],"file":{"originalName":"y","camelCase":{"unsafeName":"y","safeName":"y"},"snakeCase":{"unsafeName":"y","safeName":"y"},"screamingSnakeCase":{"unsafeName":"Y","safeName":"Y"},"pascalCase":{"unsafeName":"Y","safeName":"Y"}}}},"typeReference":{"_type":"primitive","value":"INTEGER"}},"type_imported/x:StringAlias":{"type":"alias","declaration":{"name":{"originalName":"StringAlias","camelCase":{"unsafeName":"stringAlias","safeName":"stringAlias"},"snakeCase":{"unsafeName":"string_alias","safeName":"string_alias"},"screamingSnakeCase":{"unsafeName":"STRING_ALIAS","safeName":"STRING_ALIAS"},"pascalCase":{"unsafeName":"StringAlias","safeName":"StringAlias"}},"fernFilepath":{"allParts":[{"originalName":"imported","camelCase":{"unsafeName":"imported","safeName":"imported"},"snakeCase":{"unsafeName":"imported","safeName":"imported"},"screamingSnakeCase":{"unsafeName":"IMPORTED","safeName":"IMPORTED"},"pascalCase":{"unsafeName":"Imported","safeName":"Imported"}},{"originalName":"x","camelCase":{"unsafeName":"x","safeName":"x"},"snakeCase":{"unsafeName":"x","safeName":"x"},"screamingSnakeCase":{"unsafeName":"X","safeName":"X"},"pascalCase":{"unsafeName":"X","safeName":"X"}}],"packagePath":[{"originalName":"imported","camelCase":{"unsafeName":"imported","safeName":"imported"},"snakeCase":{"unsafeName":"imported","safeName":"imported"},"screamingSnakeCase":{"unsafeName":"IMPORTED","safeName":"IMPORTED"},"pascalCase":{"unsafeName":"Imported","safeName":"Imported"}}],"file":{"originalName":"x","camelCase":{"unsafeName":"x","safeName":"x"},"snakeCase":{"unsafeName":"x","safeName":"x"},"screamingSnakeCase":{"unsafeName":"X","safeName":"X"},"pascalCase":{"unsafeName":"X","safeName":"X"}}}},"typeReference":{"_type":"primitive","value":"STRING"}}},"headers":[],"endpoints":{"endpoint_imported.rootEndpoint":{"auth":null,"declaration":{"name":{"originalName":"rootEndpoint","camelCase":{"unsafeName":"rootEndpoint","safeName":"rootEndpoint"},"snakeCase":{"unsafeName":"root_endpoint","safeName":"root_endpoint"},"screamingSnakeCase":{"unsafeName":"ROOT_ENDPOINT","safeName":"ROOT_ENDPOINT"},"pascalCase":{"unsafeName":"RootEndpoint","safeName":"RootEndpoint"}},"fernFilepath":{"allParts":[{"originalName":"imported","camelCase":{"unsafeName":"imported","safeName":"imported"},"snakeCase":{"unsafeName":"imported","safeName":"imported"},"screamingSnakeCase":{"unsafeName":"IMPORTED","safeName":"IMPORTED"},"pascalCase":{"unsafeName":"Imported","safeName":"Imported"}}],"packagePath":[{"originalName":"imported","camelCase":{"unsafeName":"imported","safeName":"imported"},"snakeCase":{"unsafeName":"imported","safeName":"imported"},"screamingSnakeCase":{"unsafeName":"IMPORTED","safeName":"IMPORTED"},"pascalCase":{"unsafeName":"Imported","safeName":"Imported"}}],"file":null}},"location":{"method":"GET","path":"/"},"request":{"type":"body","pathParameters":[],"body":null},"response":{"type":"json"}}}},"subpackages":{"subpackage_imported":{"name":{"originalName":"imported","camelCase":{"unsafeName":"imported","safeName":"imported"},"snakeCase":{"unsafeName":"imported","safeName":"imported"},"screamingSnakeCase":{"unsafeName":"IMPORTED","safeName":"IMPORTED"},"pascalCase":{"unsafeName":"Imported","safeName":"Imported"}},"fernFilepath":{"allParts":[{"originalName":"imported","camelCase":{"unsafeName":"imported","safeName":"imported"},"snakeCase":{"unsafeName":"imported","safeName":"imported"},"screamingSnakeCase":{"unsafeName":"IMPORTED","safeName":"IMPORTED"},"pascalCase":{"unsafeName":"Imported","safeName":"Imported"}}],"packagePath":[{"originalName":"imported","camelCase":{"unsafeName":"imported","safeName":"imported"},"snakeCase":{"unsafeName":"imported","safeName":"imported"},"screamingSnakeCase":{"unsafeName":"IMPORTED","safeName":"IMPORTED"},"pascalCase":{"unsafeName":"Imported","safeName":"Imported"}}],"file":null},"service":"service_imported","types":["type_imported:RootString"],"errors":[],"subpackages":["subpackage_imported/x"],"navigationConfig":null,"webhooks":null,"websocket":null,"hasEndpointsInTree":true,"docs":null},"subpackage_y":{"name":{"originalName":"y","camelCase":{"unsafeName":"y","safeName":"y"},"snakeCase":{"unsafeName":"y","safeName":"y"},"screamingSnakeCase":{"unsafeName":"Y","safeName":"Y"},"pascalCase":{"unsafeName":"Y","safeName":"Y"}},"fernFilepath":{"allParts":[{"originalName":"y","camelCase":{"unsafeName":"y","safeName":"y"},"snakeCase":{"unsafeName":"y","safeName":"y"},"screamingSnakeCase":{"unsafeName":"Y","safeName":"Y"},"pascalCase":{"unsafeName":"Y","safeName":"Y"}}],"packagePath":[],"file":{"originalName":"y","camelCase":{"unsafeName":"y","safeName":"y"},"snakeCase":{"unsafeName":"y","safeName":"y"},"screamingSnakeCase":{"unsafeName":"Y","safeName":"Y"},"pascalCase":{"unsafeName":"Y","safeName":"Y"}}},"service":null,"types":["type_y:IntegerAlias"],"errors":[],"subpackages":[],"navigationConfig":null,"webhooks":null,"websocket":null,"hasEndpointsInTree":false,"docs":null},"subpackage_imported/x":{"name":{"originalName":"x","camelCase":{"unsafeName":"x","safeName":"x"},"snakeCase":{"unsafeName":"x","safeName":"x"},"screamingSnakeCase":{"unsafeName":"X","safeName":"X"},"pascalCase":{"unsafeName":"X","safeName":"X"}},"fernFilepath":{"allParts":[{"originalName":"imported","camelCase":{"unsafeName":"imported","safeName":"imported"},"snakeCase":{"unsafeName":"imported","safeName":"imported"},"screamingSnakeCase":{"unsafeName":"IMPORTED","safeName":"IMPORTED"},"pascalCase":{"unsafeName":"Imported","safeName":"Imported"}},{"originalName":"x","camelCase":{"unsafeName":"x","safeName":"x"},"snakeCase":{"unsafeName":"x","safeName":"x"},"screamingSnakeCase":{"unsafeName":"X","safeName":"X"},"pascalCase":{"unsafeName":"X","safeName":"X"}}],"packagePath":[{"originalName":"imported","camelCase":{"unsafeName":"imported","safeName":"imported"},"snakeCase":{"unsafeName":"imported","safeName":"imported"},"screamingSnakeCase":{"unsafeName":"IMPORTED","safeName":"IMPORTED"},"pascalCase":{"unsafeName":"Imported","safeName":"Imported"}}],"file":{"originalName":"x","camelCase":{"unsafeName":"x","safeName":"x"},"snakeCase":{"unsafeName":"x","safeName":"x"},"screamingSnakeCase":{"unsafeName":"X","safeName":"X"},"pascalCase":{"unsafeName":"X","safeName":"X"}}},"service":null,"types":["type_imported/x:StringAlias"],"errors":[],"subpackages":[],"navigationConfig":null,"webhooks":null,"websocket":null,"hasEndpointsInTree":false,"docs":null}},"rootPackage":{"fernFilepath":{"allParts":[],"packagePath":[],"file":null},"websocket":null,"service":null,"types":[],"errors":[],"subpackages":["subpackage_imported","subpackage_y"],"webhooks":null,"navigationConfig":null,"hasEndpointsInTree":true,"docs":null},"sdkConfig":{"isAuthMandatory":false,"hasStreamingEndpoints":false,"hasPaginatedEndpoints":false,"hasFileDownloadEndpoints":false,"platformHeaders":{"language":"X-Fern-Language","sdkName":"X-Fern-SDK-Name","sdkVersion":"X-Fern-SDK-Version","userAgent":null}}}"`; -exports[`dependencies > file dependencies 1`] = `705214`; +exports[`dependencies > file dependencies 1`] = `705055`; diff --git a/packages/cli/ete-tests/src/tests/generate/fernignore.test.ts b/packages/cli/ete-tests/src/tests/generate/fernignore.test.ts index af5d89f27bc..b1fcb44855b 100644 --- a/packages/cli/ete-tests/src/tests/generate/fernignore.test.ts +++ b/packages/cli/ete-tests/src/tests/generate/fernignore.test.ts @@ -52,7 +52,7 @@ describe("fern generate --local", () => { await runFernCli(["generate", "--local", "--keepDocker"], { cwd: pathOfDirectory }); - }, 180_000); + }, 360_000); }); async function expectPathDoesNotExist(absoluteFilePath: AbsoluteFilePath): Promise { diff --git a/packages/cli/generation/ir-generator/src/__test__/test-definitions/validation.json b/packages/cli/generation/ir-generator/src/__test__/test-definitions/validation.json index 93bfb96ca6b..f227096944d 100644 --- a/packages/cli/generation/ir-generator/src/__test__/test-definitions/validation.json +++ b/packages/cli/generation/ir-generator/src/__test__/test-definitions/validation.json @@ -1483,7 +1483,7 @@ "autogeneratedExamples": [ { "example": { - "id": "f894d7236e53b5a4907afb3242986edc936b7231", + "id": "334da6161121c9cadbf98de7666869a59bd9b834", "url": "/create", "name": null, "endpointHeaders": [], @@ -1524,10 +1524,10 @@ "type": "primitive", "primitive": { "type": "double", - "double": 1.1 + "double": 2.2 } }, - "jsonExample": 1.1 + "jsonExample": 2.2 } }, { @@ -1559,10 +1559,10 @@ "type": "primitive", "primitive": { "type": "integer", - "integer": 1 + "integer": 100 } }, - "jsonExample": 1 + "jsonExample": 100 } }, { @@ -1595,11 +1595,11 @@ "primitive": { "type": "string", "string": { - "original": "name" + "original": "foo" } } }, - "jsonExample": "name" + "jsonExample": "foo" } }, { @@ -1687,9 +1687,9 @@ } ], "jsonExample": { - "decimal": 1.1, - "even": 1, - "name": "name", + "decimal": 2.2, + "even": 100, + "name": "foo", "shape": "SQUARE" } }, @@ -1758,10 +1758,10 @@ "type": "primitive", "primitive": { "type": "double", - "double": 1.1 + "double": 2.2 } }, - "jsonExample": 1.1 + "jsonExample": 2.2 } }, { @@ -1819,10 +1819,10 @@ "type": "primitive", "primitive": { "type": "integer", - "integer": 1 + "integer": 100 } }, - "jsonExample": 1 + "jsonExample": 100 } }, { @@ -1881,11 +1881,11 @@ "primitive": { "type": "string", "string": { - "original": "name" + "original": "foo" } } }, - "jsonExample": "name" + "jsonExample": "foo" } }, { @@ -2028,9 +2028,9 @@ } }, "jsonExample": { - "decimal": 1.1, - "even": 1, - "name": "name", + "decimal": 2.2, + "even": 100, + "name": "foo", "shape": "SQUARE" } } @@ -2327,7 +2327,7 @@ "autogeneratedExamples": [ { "example": { - "id": "5ec5bb625677405238a5bb25cc6d0d168e9f5038", + "id": "e7df79454aff4dcd365862a38fd297679ac3975d", "url": "", "name": null, "endpointHeaders": [], @@ -2364,10 +2364,10 @@ "type": "primitive", "primitive": { "type": "double", - "double": 1.1 + "double": 2.2 } }, - "jsonExample": 1.1 + "jsonExample": 2.2 } }, { @@ -2401,10 +2401,10 @@ "type": "primitive", "primitive": { "type": "integer", - "integer": 1 + "integer": 100 } }, - "jsonExample": 1 + "jsonExample": 100 } }, { @@ -2439,11 +2439,11 @@ "primitive": { "type": "string", "string": { - "original": "name" + "original": "foo" } } }, - "jsonExample": "name" + "jsonExample": "foo" } } ], @@ -2516,10 +2516,10 @@ "type": "primitive", "primitive": { "type": "double", - "double": 1.1 + "double": 2.2 } }, - "jsonExample": 1.1 + "jsonExample": 2.2 } }, { @@ -2577,10 +2577,10 @@ "type": "primitive", "primitive": { "type": "integer", - "integer": 1 + "integer": 100 } }, - "jsonExample": 1 + "jsonExample": 100 } }, { @@ -2639,11 +2639,11 @@ "primitive": { "type": "string", "string": { - "original": "name" + "original": "foo" } } }, - "jsonExample": "name" + "jsonExample": "foo" } }, { @@ -2786,9 +2786,9 @@ } }, "jsonExample": { - "decimal": 1.1, - "even": 1, - "name": "name", + "decimal": 2.2, + "even": 100, + "name": "foo", "shape": "SQUARE" } } diff --git a/packages/cli/generation/ir-generator/src/examples/generator/generatePrimitiveExample.ts b/packages/cli/generation/ir-generator/src/examples/generator/generatePrimitiveExample.ts index 5c2bf1f9613..898041c7e63 100644 --- a/packages/cli/generation/ir-generator/src/examples/generator/generatePrimitiveExample.ts +++ b/packages/cli/generation/ir-generator/src/examples/generator/generatePrimitiveExample.ts @@ -1,6 +1,13 @@ -import { ExamplePrimitive, PrimitiveType } from "@fern-api/ir-sdk"; +import { + ExamplePrimitive, + PrimitiveType, + PrimitiveTypeV2, + StringValidationRules, + DoubleValidationRules, + IntegerValidationRules +} from "@fern-api/ir-sdk"; import { assertNever, Examples } from "@fern-api/core-utils"; -import { ExampleGenerationResult, ExampleGenerationSuccess } from "./ExampleGenerationResult"; +import { ExampleGenerationSuccess } from "./ExampleGenerationResult"; export declare namespace generatePrimitiveExample { interface Args { @@ -16,8 +23,10 @@ export function generatePrimitiveExample({ }: generatePrimitiveExample.Args): ExampleGenerationSuccess { switch (primitiveType.v1) { case "STRING": { - const jsonExample = fieldName ?? Examples.STRING; - return { type: "success", example: ExamplePrimitive.string({ original: jsonExample }), jsonExample }; + return generatePrimitiveStringExample({ + fieldName, + validation: maybeStringValidation(primitiveType.v2) + }); } case "BASE_64": { return { type: "success", example: ExamplePrimitive.base64(Examples.BASE64), jsonExample: Examples.BASE64 }; @@ -43,13 +52,19 @@ export function generatePrimitiveExample({ }; } case "DOUBLE": { - return { type: "success", example: ExamplePrimitive.double(Examples.DOUBLE), jsonExample: Examples.DOUBLE }; + return generatePrimitiveDoubleExample({ + fieldName, + validation: maybeDoubleValidation(primitiveType.v2) + }); } case "FLOAT": { return { type: "success", example: ExamplePrimitive.float(Examples.FLOAT), jsonExample: Examples.FLOAT }; } case "INTEGER": { - return { type: "success", example: ExamplePrimitive.integer(Examples.INT), jsonExample: Examples.INT }; + return generatePrimitiveIntegerExample({ + fieldName, + validation: maybeIntegerValidation(primitiveType.v2) + }); } case "UINT_64": { return { type: "success", example: ExamplePrimitive.uint64(Examples.INT64), jsonExample: Examples.INT64 }; @@ -74,3 +89,110 @@ export function generatePrimitiveExample({ assertNever(primitiveType.v1); } } + +function maybeStringValidation(v2: PrimitiveTypeV2 | undefined): StringValidationRules | undefined { + if (v2?.type === "string") { + const stringType = v2 as PrimitiveTypeV2.String; + return stringType.validation; + } + return undefined; +} + +function maybeDoubleValidation(v2: PrimitiveTypeV2 | undefined): DoubleValidationRules | undefined { + if (v2?.type === "double") { + const doubleType = v2 as PrimitiveTypeV2.Double; + return doubleType.validation; + } + return undefined; +} + +function maybeIntegerValidation(v2: PrimitiveTypeV2 | undefined): IntegerValidationRules | undefined { + if (v2?.type === "integer") { + const integerType = v2 as PrimitiveTypeV2.Integer; + return integerType.validation; + } + return undefined; +} + +function getStringExampleOfLength(length: number): string { + if (length <= Examples.SAMPLE_STRINGS.length) { + const sampleString = Examples.SAMPLE_STRINGS[length - 1]; + if (sampleString) { + return sampleString; + } else { + throw new Error(`Unexpected undefined value in SAMPLE_STRINGS at index ${length - 1}`); + } + } + return ( + Examples.SAMPLE_STRINGS[Examples.SAMPLE_STRINGS.length - 1] + + ".".repeat(length - Examples.SAMPLE_STRINGS.length) + ); +} + +function generatePrimitiveStringExample({ + fieldName, + validation +}: { + fieldName: string | undefined; + validation: StringValidationRules | undefined; +}): ExampleGenerationSuccess { + if (validation) { + const minLength = validation.minLength; + const maxLength = validation.maxLength; + if (minLength) { + const minLengthExample = getStringExampleOfLength(minLength); + return { + type: "success", + example: ExamplePrimitive.string({ original: minLengthExample }), + jsonExample: minLengthExample + }; + } else if (maxLength) { + const maxLengthExample = getStringExampleOfLength(maxLength); + return { + type: "success", + example: ExamplePrimitive.string({ original: maxLengthExample }), + jsonExample: maxLengthExample + }; + } + } + const jsonExample = fieldName ?? Examples.STRING; + return { type: "success", example: ExamplePrimitive.string({ original: jsonExample }), jsonExample }; +} + +function generatePrimitiveDoubleExample({ + fieldName, + validation +}: { + fieldName: string | undefined; + validation: DoubleValidationRules | undefined; +}): ExampleGenerationSuccess { + if (validation) { + const maximum = validation.max; + const minimum = validation.min; + if (maximum) { + return { type: "success", example: ExamplePrimitive.double(maximum), jsonExample: maximum }; + } else if (minimum) { + return { type: "success", example: ExamplePrimitive.double(minimum), jsonExample: minimum }; + } + } + return { type: "success", example: ExamplePrimitive.double(Examples.DOUBLE), jsonExample: Examples.DOUBLE }; +} + +function generatePrimitiveIntegerExample({ + fieldName, + validation +}: { + fieldName: string | undefined; + validation: IntegerValidationRules | undefined; +}): ExampleGenerationSuccess { + if (validation) { + const maximum = validation.max; + const minimum = validation.min; + if (maximum) { + return { type: "success", example: ExamplePrimitive.integer(maximum), jsonExample: maximum }; + } else if (minimum) { + return { type: "success", example: ExamplePrimitive.integer(minimum), jsonExample: minimum }; + } + } + return { type: "success", example: ExamplePrimitive.integer(Examples.INT), jsonExample: Examples.INT }; +} diff --git a/packages/cli/register/src/ir-to-fdr-converter/__test__/__snapshots__/validation.json b/packages/cli/register/src/ir-to-fdr-converter/__test__/__snapshots__/validation.json index 9890df60a2c..de09c177dce 100644 --- a/packages/cli/register/src/ir-to-fdr-converter/__test__/__snapshots__/validation.json +++ b/packages/cli/register/src/ir-to-fdr-converter/__test__/__snapshots__/validation.json @@ -243,33 +243,33 @@ "queryParameters": {}, "headers": {}, "requestBody": { - "decimal": 1.1, - "even": 1, - "name": "name", + "decimal": 2.2, + "even": 100, + "name": "foo", "shape": "SQUARE" }, "requestBodyV3": { "type": "json", "value": { - "decimal": 1.1, - "even": 1, - "name": "name", + "decimal": 2.2, + "even": 100, + "name": "foo", "shape": "SQUARE" } }, "responseStatusCode": 200, "responseBody": { - "decimal": 1.1, - "even": 1, - "name": "name", + "decimal": 2.2, + "even": 100, + "name": "foo", "shape": "SQUARE" }, "responseBodyV3": { "type": "json", "value": { - "decimal": 1.1, - "even": 1, - "name": "name", + "decimal": 2.2, + "even": 100, + "name": "foo", "shape": "SQUARE" } }, @@ -351,24 +351,24 @@ "path": "", "pathParameters": {}, "queryParameters": { - "decimal": 1.1, - "even": 1, - "name": "name" + "decimal": 2.2, + "even": 100, + "name": "foo" }, "headers": {}, "responseStatusCode": 200, "responseBody": { - "decimal": 1.1, - "even": 1, - "name": "name", + "decimal": 2.2, + "even": 100, + "name": "foo", "shape": "SQUARE" }, "responseBodyV3": { "type": "json", "value": { - "decimal": 1.1, - "even": 1, - "name": "name", + "decimal": 2.2, + "even": 100, + "name": "foo", "shape": "SQUARE" } }, diff --git a/packages/commons/core-utils/src/examples.ts b/packages/commons/core-utils/src/examples.ts index 66d3de062df..8db3a70a84f 100644 --- a/packages/commons/core-utils/src/examples.ts +++ b/packages/commons/core-utils/src/examples.ts @@ -23,3 +23,18 @@ export const UINT64 = 1000000; export const UUID = "d5e9c84f-c2b2-4bf4-b4b0-7ffd7a9ffc32"; export const BIG_INTEGER = "123456789123456789"; + +export const SAMPLE_STRINGS = [ + "x", + "xy", + "foo", + "buzz", + "alpha", + "banana", + "apricot", + "mandarin", + "nectarine", + "strawberry", + "pomegranate", + "blackcurrant" +]; diff --git a/seed/csharp-model/alias-extends/src/SeedAliasExtends.sln b/seed/csharp-model/alias-extends/src/SeedAliasExtends.sln index 9d4a0d7ce26..337bab479c9 100644 --- a/seed/csharp-model/alias-extends/src/SeedAliasExtends.sln +++ b/seed/csharp-model/alias-extends/src/SeedAliasExtends.sln @@ -1,28 +1,28 @@ - -Microsoft Visual Studio Solution File, Format Version 12.00 -# Visual Studio Version 17 -VisualStudioVersion = 17.0.31903.59 -MinimumVisualStudioVersion = 10.0.40219.1 -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SeedAliasExtends", "SeedAliasExtends\SeedAliasExtends.csproj", "{111D0935-08E8-4171-85B1-1C5EBFC9B523}" -EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SeedAliasExtends.Test", "SeedAliasExtends.Test\SeedAliasExtends.Test.csproj", "{88526FC1-4A42-42B2-AFF8-DF67B9B699CB}" -EndProject -Global - GlobalSection(SolutionConfigurationPlatforms) = preSolution - Debug|Any CPU = Debug|Any CPU - Release|Any CPU = Release|Any CPU - EndGlobalSection - GlobalSection(SolutionProperties) = preSolution - HideSolutionNode = FALSE - EndGlobalSection - GlobalSection(ProjectConfigurationPlatforms) = postSolution - {111D0935-08E8-4171-85B1-1C5EBFC9B523}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {111D0935-08E8-4171-85B1-1C5EBFC9B523}.Debug|Any CPU.Build.0 = Debug|Any CPU - {111D0935-08E8-4171-85B1-1C5EBFC9B523}.Release|Any CPU.ActiveCfg = Release|Any CPU - {111D0935-08E8-4171-85B1-1C5EBFC9B523}.Release|Any CPU.Build.0 = Release|Any CPU - {88526FC1-4A42-42B2-AFF8-DF67B9B699CB}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {88526FC1-4A42-42B2-AFF8-DF67B9B699CB}.Debug|Any CPU.Build.0 = Debug|Any CPU - {88526FC1-4A42-42B2-AFF8-DF67B9B699CB}.Release|Any CPU.ActiveCfg = Release|Any CPU - {88526FC1-4A42-42B2-AFF8-DF67B9B699CB}.Release|Any CPU.Build.0 = Release|Any CPU - EndGlobalSection -EndGlobal + +Microsoft Visual Studio Solution File, Format Version 12.00 +# Visual Studio Version 17 +VisualStudioVersion = 17.0.31903.59 +MinimumVisualStudioVersion = 10.0.40219.1 +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SeedAliasExtends", "SeedAliasExtends\SeedAliasExtends.csproj", "{D2DC438E-4DAC-4035-ADD7-1E4790CFC503}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SeedAliasExtends.Test", "SeedAliasExtends.Test\SeedAliasExtends.Test.csproj", "{D3A637EC-FCDB-4F72-BB20-C252B6B061B8}" +EndProject +Global + GlobalSection(SolutionConfigurationPlatforms) = preSolution + Debug|Any CPU = Debug|Any CPU + Release|Any CPU = Release|Any CPU + EndGlobalSection + GlobalSection(SolutionProperties) = preSolution + HideSolutionNode = FALSE + EndGlobalSection + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {D2DC438E-4DAC-4035-ADD7-1E4790CFC503}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {D2DC438E-4DAC-4035-ADD7-1E4790CFC503}.Debug|Any CPU.Build.0 = Debug|Any CPU + {D2DC438E-4DAC-4035-ADD7-1E4790CFC503}.Release|Any CPU.ActiveCfg = Release|Any CPU + {D2DC438E-4DAC-4035-ADD7-1E4790CFC503}.Release|Any CPU.Build.0 = Release|Any CPU + {D3A637EC-FCDB-4F72-BB20-C252B6B061B8}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {D3A637EC-FCDB-4F72-BB20-C252B6B061B8}.Debug|Any CPU.Build.0 = Debug|Any CPU + {D3A637EC-FCDB-4F72-BB20-C252B6B061B8}.Release|Any CPU.ActiveCfg = Release|Any CPU + {D3A637EC-FCDB-4F72-BB20-C252B6B061B8}.Release|Any CPU.Build.0 = Release|Any CPU + EndGlobalSection +EndGlobal diff --git a/seed/csharp-model/alias/src/SeedAlias.sln b/seed/csharp-model/alias/src/SeedAlias.sln index b713e62b29d..1b6318ac8db 100644 --- a/seed/csharp-model/alias/src/SeedAlias.sln +++ b/seed/csharp-model/alias/src/SeedAlias.sln @@ -1,28 +1,28 @@ - -Microsoft Visual Studio Solution File, Format Version 12.00 -# Visual Studio Version 17 -VisualStudioVersion = 17.0.31903.59 -MinimumVisualStudioVersion = 10.0.40219.1 -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SeedAlias", "SeedAlias\SeedAlias.csproj", "{716C6252-042A-495A-A46C-3F1AD6CB49E0}" -EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SeedAlias.Test", "SeedAlias.Test\SeedAlias.Test.csproj", "{8AE7A86B-62A7-4953-B440-92444E3F73CE}" -EndProject -Global - GlobalSection(SolutionConfigurationPlatforms) = preSolution - Debug|Any CPU = Debug|Any CPU - Release|Any CPU = Release|Any CPU - EndGlobalSection - GlobalSection(SolutionProperties) = preSolution - HideSolutionNode = FALSE - EndGlobalSection - GlobalSection(ProjectConfigurationPlatforms) = postSolution - {716C6252-042A-495A-A46C-3F1AD6CB49E0}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {716C6252-042A-495A-A46C-3F1AD6CB49E0}.Debug|Any CPU.Build.0 = Debug|Any CPU - {716C6252-042A-495A-A46C-3F1AD6CB49E0}.Release|Any CPU.ActiveCfg = Release|Any CPU - {716C6252-042A-495A-A46C-3F1AD6CB49E0}.Release|Any CPU.Build.0 = Release|Any CPU - {8AE7A86B-62A7-4953-B440-92444E3F73CE}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {8AE7A86B-62A7-4953-B440-92444E3F73CE}.Debug|Any CPU.Build.0 = Debug|Any CPU - {8AE7A86B-62A7-4953-B440-92444E3F73CE}.Release|Any CPU.ActiveCfg = Release|Any CPU - {8AE7A86B-62A7-4953-B440-92444E3F73CE}.Release|Any CPU.Build.0 = Release|Any CPU - EndGlobalSection -EndGlobal + +Microsoft Visual Studio Solution File, Format Version 12.00 +# Visual Studio Version 17 +VisualStudioVersion = 17.0.31903.59 +MinimumVisualStudioVersion = 10.0.40219.1 +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SeedAlias", "SeedAlias\SeedAlias.csproj", "{3BC920AC-E391-4975-B088-D32505F4AF02}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SeedAlias.Test", "SeedAlias.Test\SeedAlias.Test.csproj", "{47F24647-DE0F-4153-833A-1C42837FB1A8}" +EndProject +Global + GlobalSection(SolutionConfigurationPlatforms) = preSolution + Debug|Any CPU = Debug|Any CPU + Release|Any CPU = Release|Any CPU + EndGlobalSection + GlobalSection(SolutionProperties) = preSolution + HideSolutionNode = FALSE + EndGlobalSection + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {3BC920AC-E391-4975-B088-D32505F4AF02}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {3BC920AC-E391-4975-B088-D32505F4AF02}.Debug|Any CPU.Build.0 = Debug|Any CPU + {3BC920AC-E391-4975-B088-D32505F4AF02}.Release|Any CPU.ActiveCfg = Release|Any CPU + {3BC920AC-E391-4975-B088-D32505F4AF02}.Release|Any CPU.Build.0 = Release|Any CPU + {47F24647-DE0F-4153-833A-1C42837FB1A8}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {47F24647-DE0F-4153-833A-1C42837FB1A8}.Debug|Any CPU.Build.0 = Debug|Any CPU + {47F24647-DE0F-4153-833A-1C42837FB1A8}.Release|Any CPU.ActiveCfg = Release|Any CPU + {47F24647-DE0F-4153-833A-1C42837FB1A8}.Release|Any CPU.Build.0 = Release|Any CPU + EndGlobalSection +EndGlobal diff --git a/seed/csharp-model/any-auth/src/SeedAnyAuth.sln b/seed/csharp-model/any-auth/src/SeedAnyAuth.sln index 0568e63113f..b12f2029b12 100644 --- a/seed/csharp-model/any-auth/src/SeedAnyAuth.sln +++ b/seed/csharp-model/any-auth/src/SeedAnyAuth.sln @@ -1,28 +1,28 @@ - -Microsoft Visual Studio Solution File, Format Version 12.00 -# Visual Studio Version 17 -VisualStudioVersion = 17.0.31903.59 -MinimumVisualStudioVersion = 10.0.40219.1 -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SeedAnyAuth", "SeedAnyAuth\SeedAnyAuth.csproj", "{A3ACFF2B-E6C2-4F97-9E71-EC050BD15234}" -EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SeedAnyAuth.Test", "SeedAnyAuth.Test\SeedAnyAuth.Test.csproj", "{EC2BBDCD-9269-4733-8DF0-532666900CD4}" -EndProject -Global - GlobalSection(SolutionConfigurationPlatforms) = preSolution - Debug|Any CPU = Debug|Any CPU - Release|Any CPU = Release|Any CPU - EndGlobalSection - GlobalSection(SolutionProperties) = preSolution - HideSolutionNode = FALSE - EndGlobalSection - GlobalSection(ProjectConfigurationPlatforms) = postSolution - {A3ACFF2B-E6C2-4F97-9E71-EC050BD15234}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {A3ACFF2B-E6C2-4F97-9E71-EC050BD15234}.Debug|Any CPU.Build.0 = Debug|Any CPU - {A3ACFF2B-E6C2-4F97-9E71-EC050BD15234}.Release|Any CPU.ActiveCfg = Release|Any CPU - {A3ACFF2B-E6C2-4F97-9E71-EC050BD15234}.Release|Any CPU.Build.0 = Release|Any CPU - {EC2BBDCD-9269-4733-8DF0-532666900CD4}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {EC2BBDCD-9269-4733-8DF0-532666900CD4}.Debug|Any CPU.Build.0 = Debug|Any CPU - {EC2BBDCD-9269-4733-8DF0-532666900CD4}.Release|Any CPU.ActiveCfg = Release|Any CPU - {EC2BBDCD-9269-4733-8DF0-532666900CD4}.Release|Any CPU.Build.0 = Release|Any CPU - EndGlobalSection -EndGlobal + +Microsoft Visual Studio Solution File, Format Version 12.00 +# Visual Studio Version 17 +VisualStudioVersion = 17.0.31903.59 +MinimumVisualStudioVersion = 10.0.40219.1 +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SeedAnyAuth", "SeedAnyAuth\SeedAnyAuth.csproj", "{03D5827D-4608-4058-9668-A3700E3FA8C3}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SeedAnyAuth.Test", "SeedAnyAuth.Test\SeedAnyAuth.Test.csproj", "{5E7574FF-0826-4DAF-A1FA-F14BFE78D767}" +EndProject +Global + GlobalSection(SolutionConfigurationPlatforms) = preSolution + Debug|Any CPU = Debug|Any CPU + Release|Any CPU = Release|Any CPU + EndGlobalSection + GlobalSection(SolutionProperties) = preSolution + HideSolutionNode = FALSE + EndGlobalSection + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {03D5827D-4608-4058-9668-A3700E3FA8C3}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {03D5827D-4608-4058-9668-A3700E3FA8C3}.Debug|Any CPU.Build.0 = Debug|Any CPU + {03D5827D-4608-4058-9668-A3700E3FA8C3}.Release|Any CPU.ActiveCfg = Release|Any CPU + {03D5827D-4608-4058-9668-A3700E3FA8C3}.Release|Any CPU.Build.0 = Release|Any CPU + {5E7574FF-0826-4DAF-A1FA-F14BFE78D767}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {5E7574FF-0826-4DAF-A1FA-F14BFE78D767}.Debug|Any CPU.Build.0 = Debug|Any CPU + {5E7574FF-0826-4DAF-A1FA-F14BFE78D767}.Release|Any CPU.ActiveCfg = Release|Any CPU + {5E7574FF-0826-4DAF-A1FA-F14BFE78D767}.Release|Any CPU.Build.0 = Release|Any CPU + EndGlobalSection +EndGlobal diff --git a/seed/csharp-model/api-wide-base-path/src/SeedApiWideBasePath.sln b/seed/csharp-model/api-wide-base-path/src/SeedApiWideBasePath.sln index 5704df97e39..b4c80c646c5 100644 --- a/seed/csharp-model/api-wide-base-path/src/SeedApiWideBasePath.sln +++ b/seed/csharp-model/api-wide-base-path/src/SeedApiWideBasePath.sln @@ -1,28 +1,28 @@ - -Microsoft Visual Studio Solution File, Format Version 12.00 -# Visual Studio Version 17 -VisualStudioVersion = 17.0.31903.59 -MinimumVisualStudioVersion = 10.0.40219.1 -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SeedApiWideBasePath", "SeedApiWideBasePath\SeedApiWideBasePath.csproj", "{767E9776-9CE5-42C8-9267-D367E9F3E7E4}" -EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SeedApiWideBasePath.Test", "SeedApiWideBasePath.Test\SeedApiWideBasePath.Test.csproj", "{E61478F8-5229-479A-9F51-6D50151F6D5E}" -EndProject -Global - GlobalSection(SolutionConfigurationPlatforms) = preSolution - Debug|Any CPU = Debug|Any CPU - Release|Any CPU = Release|Any CPU - EndGlobalSection - GlobalSection(SolutionProperties) = preSolution - HideSolutionNode = FALSE - EndGlobalSection - GlobalSection(ProjectConfigurationPlatforms) = postSolution - {767E9776-9CE5-42C8-9267-D367E9F3E7E4}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {767E9776-9CE5-42C8-9267-D367E9F3E7E4}.Debug|Any CPU.Build.0 = Debug|Any CPU - {767E9776-9CE5-42C8-9267-D367E9F3E7E4}.Release|Any CPU.ActiveCfg = Release|Any CPU - {767E9776-9CE5-42C8-9267-D367E9F3E7E4}.Release|Any CPU.Build.0 = Release|Any CPU - {E61478F8-5229-479A-9F51-6D50151F6D5E}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {E61478F8-5229-479A-9F51-6D50151F6D5E}.Debug|Any CPU.Build.0 = Debug|Any CPU - {E61478F8-5229-479A-9F51-6D50151F6D5E}.Release|Any CPU.ActiveCfg = Release|Any CPU - {E61478F8-5229-479A-9F51-6D50151F6D5E}.Release|Any CPU.Build.0 = Release|Any CPU - EndGlobalSection -EndGlobal + +Microsoft Visual Studio Solution File, Format Version 12.00 +# Visual Studio Version 17 +VisualStudioVersion = 17.0.31903.59 +MinimumVisualStudioVersion = 10.0.40219.1 +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SeedApiWideBasePath", "SeedApiWideBasePath\SeedApiWideBasePath.csproj", "{FB4250B8-6588-4778-A956-8F7080223B89}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SeedApiWideBasePath.Test", "SeedApiWideBasePath.Test\SeedApiWideBasePath.Test.csproj", "{54B95608-0649-45D0-BF77-7C1DD9C6674D}" +EndProject +Global + GlobalSection(SolutionConfigurationPlatforms) = preSolution + Debug|Any CPU = Debug|Any CPU + Release|Any CPU = Release|Any CPU + EndGlobalSection + GlobalSection(SolutionProperties) = preSolution + HideSolutionNode = FALSE + EndGlobalSection + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {FB4250B8-6588-4778-A956-8F7080223B89}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {FB4250B8-6588-4778-A956-8F7080223B89}.Debug|Any CPU.Build.0 = Debug|Any CPU + {FB4250B8-6588-4778-A956-8F7080223B89}.Release|Any CPU.ActiveCfg = Release|Any CPU + {FB4250B8-6588-4778-A956-8F7080223B89}.Release|Any CPU.Build.0 = Release|Any CPU + {54B95608-0649-45D0-BF77-7C1DD9C6674D}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {54B95608-0649-45D0-BF77-7C1DD9C6674D}.Debug|Any CPU.Build.0 = Debug|Any CPU + {54B95608-0649-45D0-BF77-7C1DD9C6674D}.Release|Any CPU.ActiveCfg = Release|Any CPU + {54B95608-0649-45D0-BF77-7C1DD9C6674D}.Release|Any CPU.Build.0 = Release|Any CPU + EndGlobalSection +EndGlobal diff --git a/seed/csharp-model/audiences/src/SeedAudiences.sln b/seed/csharp-model/audiences/src/SeedAudiences.sln index 3987e5ad70c..d3a3d49b32d 100644 --- a/seed/csharp-model/audiences/src/SeedAudiences.sln +++ b/seed/csharp-model/audiences/src/SeedAudiences.sln @@ -1,28 +1,28 @@ - -Microsoft Visual Studio Solution File, Format Version 12.00 -# Visual Studio Version 17 -VisualStudioVersion = 17.0.31903.59 -MinimumVisualStudioVersion = 10.0.40219.1 -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SeedAudiences", "SeedAudiences\SeedAudiences.csproj", "{C040DBFD-052A-4932-BF27-F6A718E2933F}" -EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SeedAudiences.Test", "SeedAudiences.Test\SeedAudiences.Test.csproj", "{9175BF7E-5F09-4DE2-876B-29E47F07FA33}" -EndProject -Global - GlobalSection(SolutionConfigurationPlatforms) = preSolution - Debug|Any CPU = Debug|Any CPU - Release|Any CPU = Release|Any CPU - EndGlobalSection - GlobalSection(SolutionProperties) = preSolution - HideSolutionNode = FALSE - EndGlobalSection - GlobalSection(ProjectConfigurationPlatforms) = postSolution - {C040DBFD-052A-4932-BF27-F6A718E2933F}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {C040DBFD-052A-4932-BF27-F6A718E2933F}.Debug|Any CPU.Build.0 = Debug|Any CPU - {C040DBFD-052A-4932-BF27-F6A718E2933F}.Release|Any CPU.ActiveCfg = Release|Any CPU - {C040DBFD-052A-4932-BF27-F6A718E2933F}.Release|Any CPU.Build.0 = Release|Any CPU - {9175BF7E-5F09-4DE2-876B-29E47F07FA33}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {9175BF7E-5F09-4DE2-876B-29E47F07FA33}.Debug|Any CPU.Build.0 = Debug|Any CPU - {9175BF7E-5F09-4DE2-876B-29E47F07FA33}.Release|Any CPU.ActiveCfg = Release|Any CPU - {9175BF7E-5F09-4DE2-876B-29E47F07FA33}.Release|Any CPU.Build.0 = Release|Any CPU - EndGlobalSection -EndGlobal + +Microsoft Visual Studio Solution File, Format Version 12.00 +# Visual Studio Version 17 +VisualStudioVersion = 17.0.31903.59 +MinimumVisualStudioVersion = 10.0.40219.1 +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SeedAudiences", "SeedAudiences\SeedAudiences.csproj", "{0F0C720C-D294-4C40-8776-F3B7C334036D}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SeedAudiences.Test", "SeedAudiences.Test\SeedAudiences.Test.csproj", "{A2D7103A-8C56-46A1-82CC-B76BA78C47B7}" +EndProject +Global + GlobalSection(SolutionConfigurationPlatforms) = preSolution + Debug|Any CPU = Debug|Any CPU + Release|Any CPU = Release|Any CPU + EndGlobalSection + GlobalSection(SolutionProperties) = preSolution + HideSolutionNode = FALSE + EndGlobalSection + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {0F0C720C-D294-4C40-8776-F3B7C334036D}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {0F0C720C-D294-4C40-8776-F3B7C334036D}.Debug|Any CPU.Build.0 = Debug|Any CPU + {0F0C720C-D294-4C40-8776-F3B7C334036D}.Release|Any CPU.ActiveCfg = Release|Any CPU + {0F0C720C-D294-4C40-8776-F3B7C334036D}.Release|Any CPU.Build.0 = Release|Any CPU + {A2D7103A-8C56-46A1-82CC-B76BA78C47B7}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {A2D7103A-8C56-46A1-82CC-B76BA78C47B7}.Debug|Any CPU.Build.0 = Debug|Any CPU + {A2D7103A-8C56-46A1-82CC-B76BA78C47B7}.Release|Any CPU.ActiveCfg = Release|Any CPU + {A2D7103A-8C56-46A1-82CC-B76BA78C47B7}.Release|Any CPU.Build.0 = Release|Any CPU + EndGlobalSection +EndGlobal diff --git a/seed/csharp-model/auth-environment-variables/src/SeedAuthEnvironmentVariables.sln b/seed/csharp-model/auth-environment-variables/src/SeedAuthEnvironmentVariables.sln index 400f5feb210..3f2298f0774 100644 --- a/seed/csharp-model/auth-environment-variables/src/SeedAuthEnvironmentVariables.sln +++ b/seed/csharp-model/auth-environment-variables/src/SeedAuthEnvironmentVariables.sln @@ -1,28 +1,28 @@ - -Microsoft Visual Studio Solution File, Format Version 12.00 -# Visual Studio Version 17 -VisualStudioVersion = 17.0.31903.59 -MinimumVisualStudioVersion = 10.0.40219.1 -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SeedAuthEnvironmentVariables", "SeedAuthEnvironmentVariables\SeedAuthEnvironmentVariables.csproj", "{ADEEEAA5-31E9-4C2E-86F6-3A62692A6F83}" -EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SeedAuthEnvironmentVariables.Test", "SeedAuthEnvironmentVariables.Test\SeedAuthEnvironmentVariables.Test.csproj", "{8BAA0A3F-990A-4CB4-A41B-17F2974B04D9}" -EndProject -Global - GlobalSection(SolutionConfigurationPlatforms) = preSolution - Debug|Any CPU = Debug|Any CPU - Release|Any CPU = Release|Any CPU - EndGlobalSection - GlobalSection(SolutionProperties) = preSolution - HideSolutionNode = FALSE - EndGlobalSection - GlobalSection(ProjectConfigurationPlatforms) = postSolution - {ADEEEAA5-31E9-4C2E-86F6-3A62692A6F83}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {ADEEEAA5-31E9-4C2E-86F6-3A62692A6F83}.Debug|Any CPU.Build.0 = Debug|Any CPU - {ADEEEAA5-31E9-4C2E-86F6-3A62692A6F83}.Release|Any CPU.ActiveCfg = Release|Any CPU - {ADEEEAA5-31E9-4C2E-86F6-3A62692A6F83}.Release|Any CPU.Build.0 = Release|Any CPU - {8BAA0A3F-990A-4CB4-A41B-17F2974B04D9}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {8BAA0A3F-990A-4CB4-A41B-17F2974B04D9}.Debug|Any CPU.Build.0 = Debug|Any CPU - {8BAA0A3F-990A-4CB4-A41B-17F2974B04D9}.Release|Any CPU.ActiveCfg = Release|Any CPU - {8BAA0A3F-990A-4CB4-A41B-17F2974B04D9}.Release|Any CPU.Build.0 = Release|Any CPU - EndGlobalSection -EndGlobal + +Microsoft Visual Studio Solution File, Format Version 12.00 +# Visual Studio Version 17 +VisualStudioVersion = 17.0.31903.59 +MinimumVisualStudioVersion = 10.0.40219.1 +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SeedAuthEnvironmentVariables", "SeedAuthEnvironmentVariables\SeedAuthEnvironmentVariables.csproj", "{A2743E9A-3A08-46D1-842C-61A9DF6830EB}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SeedAuthEnvironmentVariables.Test", "SeedAuthEnvironmentVariables.Test\SeedAuthEnvironmentVariables.Test.csproj", "{32084CFE-BADD-4489-9BBC-9C000705A4C6}" +EndProject +Global + GlobalSection(SolutionConfigurationPlatforms) = preSolution + Debug|Any CPU = Debug|Any CPU + Release|Any CPU = Release|Any CPU + EndGlobalSection + GlobalSection(SolutionProperties) = preSolution + HideSolutionNode = FALSE + EndGlobalSection + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {A2743E9A-3A08-46D1-842C-61A9DF6830EB}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {A2743E9A-3A08-46D1-842C-61A9DF6830EB}.Debug|Any CPU.Build.0 = Debug|Any CPU + {A2743E9A-3A08-46D1-842C-61A9DF6830EB}.Release|Any CPU.ActiveCfg = Release|Any CPU + {A2743E9A-3A08-46D1-842C-61A9DF6830EB}.Release|Any CPU.Build.0 = Release|Any CPU + {32084CFE-BADD-4489-9BBC-9C000705A4C6}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {32084CFE-BADD-4489-9BBC-9C000705A4C6}.Debug|Any CPU.Build.0 = Debug|Any CPU + {32084CFE-BADD-4489-9BBC-9C000705A4C6}.Release|Any CPU.ActiveCfg = Release|Any CPU + {32084CFE-BADD-4489-9BBC-9C000705A4C6}.Release|Any CPU.Build.0 = Release|Any CPU + EndGlobalSection +EndGlobal diff --git a/seed/csharp-model/basic-auth-environment-variables/src/SeedBasicAuthEnvironmentVariables.sln b/seed/csharp-model/basic-auth-environment-variables/src/SeedBasicAuthEnvironmentVariables.sln index 1b38773efd2..d70daaf128f 100644 --- a/seed/csharp-model/basic-auth-environment-variables/src/SeedBasicAuthEnvironmentVariables.sln +++ b/seed/csharp-model/basic-auth-environment-variables/src/SeedBasicAuthEnvironmentVariables.sln @@ -1,28 +1,28 @@ - -Microsoft Visual Studio Solution File, Format Version 12.00 -# Visual Studio Version 17 -VisualStudioVersion = 17.0.31903.59 -MinimumVisualStudioVersion = 10.0.40219.1 -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SeedBasicAuthEnvironmentVariables", "SeedBasicAuthEnvironmentVariables\SeedBasicAuthEnvironmentVariables.csproj", "{B4A7D432-F3D2-427F-A5E7-76CE85C808AB}" -EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SeedBasicAuthEnvironmentVariables.Test", "SeedBasicAuthEnvironmentVariables.Test\SeedBasicAuthEnvironmentVariables.Test.csproj", "{3EAA8324-C9CA-41E8-959B-9C64B6BE58FC}" -EndProject -Global - GlobalSection(SolutionConfigurationPlatforms) = preSolution - Debug|Any CPU = Debug|Any CPU - Release|Any CPU = Release|Any CPU - EndGlobalSection - GlobalSection(SolutionProperties) = preSolution - HideSolutionNode = FALSE - EndGlobalSection - GlobalSection(ProjectConfigurationPlatforms) = postSolution - {B4A7D432-F3D2-427F-A5E7-76CE85C808AB}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {B4A7D432-F3D2-427F-A5E7-76CE85C808AB}.Debug|Any CPU.Build.0 = Debug|Any CPU - {B4A7D432-F3D2-427F-A5E7-76CE85C808AB}.Release|Any CPU.ActiveCfg = Release|Any CPU - {B4A7D432-F3D2-427F-A5E7-76CE85C808AB}.Release|Any CPU.Build.0 = Release|Any CPU - {3EAA8324-C9CA-41E8-959B-9C64B6BE58FC}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {3EAA8324-C9CA-41E8-959B-9C64B6BE58FC}.Debug|Any CPU.Build.0 = Debug|Any CPU - {3EAA8324-C9CA-41E8-959B-9C64B6BE58FC}.Release|Any CPU.ActiveCfg = Release|Any CPU - {3EAA8324-C9CA-41E8-959B-9C64B6BE58FC}.Release|Any CPU.Build.0 = Release|Any CPU - EndGlobalSection -EndGlobal + +Microsoft Visual Studio Solution File, Format Version 12.00 +# Visual Studio Version 17 +VisualStudioVersion = 17.0.31903.59 +MinimumVisualStudioVersion = 10.0.40219.1 +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SeedBasicAuthEnvironmentVariables", "SeedBasicAuthEnvironmentVariables\SeedBasicAuthEnvironmentVariables.csproj", "{AC2F38C7-F995-4278-9474-342933E2FE46}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SeedBasicAuthEnvironmentVariables.Test", "SeedBasicAuthEnvironmentVariables.Test\SeedBasicAuthEnvironmentVariables.Test.csproj", "{C980AAA6-5A1D-4418-9871-DF2DF2C86D3B}" +EndProject +Global + GlobalSection(SolutionConfigurationPlatforms) = preSolution + Debug|Any CPU = Debug|Any CPU + Release|Any CPU = Release|Any CPU + EndGlobalSection + GlobalSection(SolutionProperties) = preSolution + HideSolutionNode = FALSE + EndGlobalSection + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {AC2F38C7-F995-4278-9474-342933E2FE46}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {AC2F38C7-F995-4278-9474-342933E2FE46}.Debug|Any CPU.Build.0 = Debug|Any CPU + {AC2F38C7-F995-4278-9474-342933E2FE46}.Release|Any CPU.ActiveCfg = Release|Any CPU + {AC2F38C7-F995-4278-9474-342933E2FE46}.Release|Any CPU.Build.0 = Release|Any CPU + {C980AAA6-5A1D-4418-9871-DF2DF2C86D3B}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {C980AAA6-5A1D-4418-9871-DF2DF2C86D3B}.Debug|Any CPU.Build.0 = Debug|Any CPU + {C980AAA6-5A1D-4418-9871-DF2DF2C86D3B}.Release|Any CPU.ActiveCfg = Release|Any CPU + {C980AAA6-5A1D-4418-9871-DF2DF2C86D3B}.Release|Any CPU.Build.0 = Release|Any CPU + EndGlobalSection +EndGlobal diff --git a/seed/csharp-model/basic-auth/src/SeedBasicAuth.sln b/seed/csharp-model/basic-auth/src/SeedBasicAuth.sln index 4d4f12b0f02..faaa3c33881 100644 --- a/seed/csharp-model/basic-auth/src/SeedBasicAuth.sln +++ b/seed/csharp-model/basic-auth/src/SeedBasicAuth.sln @@ -1,28 +1,28 @@ - -Microsoft Visual Studio Solution File, Format Version 12.00 -# Visual Studio Version 17 -VisualStudioVersion = 17.0.31903.59 -MinimumVisualStudioVersion = 10.0.40219.1 -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SeedBasicAuth", "SeedBasicAuth\SeedBasicAuth.csproj", "{CE0F99C4-FBF1-479A-A23D-71E55AF4658B}" -EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SeedBasicAuth.Test", "SeedBasicAuth.Test\SeedBasicAuth.Test.csproj", "{2292CEDA-51B0-4627-B9C5-A2BCF3563A35}" -EndProject -Global - GlobalSection(SolutionConfigurationPlatforms) = preSolution - Debug|Any CPU = Debug|Any CPU - Release|Any CPU = Release|Any CPU - EndGlobalSection - GlobalSection(SolutionProperties) = preSolution - HideSolutionNode = FALSE - EndGlobalSection - GlobalSection(ProjectConfigurationPlatforms) = postSolution - {CE0F99C4-FBF1-479A-A23D-71E55AF4658B}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {CE0F99C4-FBF1-479A-A23D-71E55AF4658B}.Debug|Any CPU.Build.0 = Debug|Any CPU - {CE0F99C4-FBF1-479A-A23D-71E55AF4658B}.Release|Any CPU.ActiveCfg = Release|Any CPU - {CE0F99C4-FBF1-479A-A23D-71E55AF4658B}.Release|Any CPU.Build.0 = Release|Any CPU - {2292CEDA-51B0-4627-B9C5-A2BCF3563A35}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {2292CEDA-51B0-4627-B9C5-A2BCF3563A35}.Debug|Any CPU.Build.0 = Debug|Any CPU - {2292CEDA-51B0-4627-B9C5-A2BCF3563A35}.Release|Any CPU.ActiveCfg = Release|Any CPU - {2292CEDA-51B0-4627-B9C5-A2BCF3563A35}.Release|Any CPU.Build.0 = Release|Any CPU - EndGlobalSection -EndGlobal + +Microsoft Visual Studio Solution File, Format Version 12.00 +# Visual Studio Version 17 +VisualStudioVersion = 17.0.31903.59 +MinimumVisualStudioVersion = 10.0.40219.1 +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SeedBasicAuth", "SeedBasicAuth\SeedBasicAuth.csproj", "{F45FB889-FD3F-443C-B703-8E9167803A4E}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SeedBasicAuth.Test", "SeedBasicAuth.Test\SeedBasicAuth.Test.csproj", "{01F175B5-01F7-4284-8425-D42A8884CEFF}" +EndProject +Global + GlobalSection(SolutionConfigurationPlatforms) = preSolution + Debug|Any CPU = Debug|Any CPU + Release|Any CPU = Release|Any CPU + EndGlobalSection + GlobalSection(SolutionProperties) = preSolution + HideSolutionNode = FALSE + EndGlobalSection + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {F45FB889-FD3F-443C-B703-8E9167803A4E}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {F45FB889-FD3F-443C-B703-8E9167803A4E}.Debug|Any CPU.Build.0 = Debug|Any CPU + {F45FB889-FD3F-443C-B703-8E9167803A4E}.Release|Any CPU.ActiveCfg = Release|Any CPU + {F45FB889-FD3F-443C-B703-8E9167803A4E}.Release|Any CPU.Build.0 = Release|Any CPU + {01F175B5-01F7-4284-8425-D42A8884CEFF}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {01F175B5-01F7-4284-8425-D42A8884CEFF}.Debug|Any CPU.Build.0 = Debug|Any CPU + {01F175B5-01F7-4284-8425-D42A8884CEFF}.Release|Any CPU.ActiveCfg = Release|Any CPU + {01F175B5-01F7-4284-8425-D42A8884CEFF}.Release|Any CPU.Build.0 = Release|Any CPU + EndGlobalSection +EndGlobal diff --git a/seed/csharp-model/bearer-token-environment-variable/src/SeedBearerTokenEnvironmentVariable.sln b/seed/csharp-model/bearer-token-environment-variable/src/SeedBearerTokenEnvironmentVariable.sln index e4d3f820e08..3810903b63f 100644 --- a/seed/csharp-model/bearer-token-environment-variable/src/SeedBearerTokenEnvironmentVariable.sln +++ b/seed/csharp-model/bearer-token-environment-variable/src/SeedBearerTokenEnvironmentVariable.sln @@ -1,28 +1,28 @@ - -Microsoft Visual Studio Solution File, Format Version 12.00 -# Visual Studio Version 17 -VisualStudioVersion = 17.0.31903.59 -MinimumVisualStudioVersion = 10.0.40219.1 -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SeedBearerTokenEnvironmentVariable", "SeedBearerTokenEnvironmentVariable\SeedBearerTokenEnvironmentVariable.csproj", "{8147352A-413A-48FC-BFB6-3816E9B914B7}" -EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SeedBearerTokenEnvironmentVariable.Test", "SeedBearerTokenEnvironmentVariable.Test\SeedBearerTokenEnvironmentVariable.Test.csproj", "{E4D7D9A5-F11D-409C-A1E9-96137DD35068}" -EndProject -Global - GlobalSection(SolutionConfigurationPlatforms) = preSolution - Debug|Any CPU = Debug|Any CPU - Release|Any CPU = Release|Any CPU - EndGlobalSection - GlobalSection(SolutionProperties) = preSolution - HideSolutionNode = FALSE - EndGlobalSection - GlobalSection(ProjectConfigurationPlatforms) = postSolution - {8147352A-413A-48FC-BFB6-3816E9B914B7}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {8147352A-413A-48FC-BFB6-3816E9B914B7}.Debug|Any CPU.Build.0 = Debug|Any CPU - {8147352A-413A-48FC-BFB6-3816E9B914B7}.Release|Any CPU.ActiveCfg = Release|Any CPU - {8147352A-413A-48FC-BFB6-3816E9B914B7}.Release|Any CPU.Build.0 = Release|Any CPU - {E4D7D9A5-F11D-409C-A1E9-96137DD35068}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {E4D7D9A5-F11D-409C-A1E9-96137DD35068}.Debug|Any CPU.Build.0 = Debug|Any CPU - {E4D7D9A5-F11D-409C-A1E9-96137DD35068}.Release|Any CPU.ActiveCfg = Release|Any CPU - {E4D7D9A5-F11D-409C-A1E9-96137DD35068}.Release|Any CPU.Build.0 = Release|Any CPU - EndGlobalSection -EndGlobal + +Microsoft Visual Studio Solution File, Format Version 12.00 +# Visual Studio Version 17 +VisualStudioVersion = 17.0.31903.59 +MinimumVisualStudioVersion = 10.0.40219.1 +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SeedBearerTokenEnvironmentVariable", "SeedBearerTokenEnvironmentVariable\SeedBearerTokenEnvironmentVariable.csproj", "{26B0C8EE-38AE-4B3A-8940-62558540F734}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SeedBearerTokenEnvironmentVariable.Test", "SeedBearerTokenEnvironmentVariable.Test\SeedBearerTokenEnvironmentVariable.Test.csproj", "{0E4337B2-A6DC-440D-B375-619EC5A8DE4F}" +EndProject +Global + GlobalSection(SolutionConfigurationPlatforms) = preSolution + Debug|Any CPU = Debug|Any CPU + Release|Any CPU = Release|Any CPU + EndGlobalSection + GlobalSection(SolutionProperties) = preSolution + HideSolutionNode = FALSE + EndGlobalSection + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {26B0C8EE-38AE-4B3A-8940-62558540F734}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {26B0C8EE-38AE-4B3A-8940-62558540F734}.Debug|Any CPU.Build.0 = Debug|Any CPU + {26B0C8EE-38AE-4B3A-8940-62558540F734}.Release|Any CPU.ActiveCfg = Release|Any CPU + {26B0C8EE-38AE-4B3A-8940-62558540F734}.Release|Any CPU.Build.0 = Release|Any CPU + {0E4337B2-A6DC-440D-B375-619EC5A8DE4F}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {0E4337B2-A6DC-440D-B375-619EC5A8DE4F}.Debug|Any CPU.Build.0 = Debug|Any CPU + {0E4337B2-A6DC-440D-B375-619EC5A8DE4F}.Release|Any CPU.ActiveCfg = Release|Any CPU + {0E4337B2-A6DC-440D-B375-619EC5A8DE4F}.Release|Any CPU.Build.0 = Release|Any CPU + EndGlobalSection +EndGlobal diff --git a/seed/csharp-model/bytes/src/SeedBytes.sln b/seed/csharp-model/bytes/src/SeedBytes.sln index d00e908b308..d954544c1e2 100644 --- a/seed/csharp-model/bytes/src/SeedBytes.sln +++ b/seed/csharp-model/bytes/src/SeedBytes.sln @@ -1,28 +1,28 @@ - -Microsoft Visual Studio Solution File, Format Version 12.00 -# Visual Studio Version 17 -VisualStudioVersion = 17.0.31903.59 -MinimumVisualStudioVersion = 10.0.40219.1 -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SeedBytes", "SeedBytes\SeedBytes.csproj", "{C5109E3E-7062-4D68-8045-8D8365CB3667}" -EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SeedBytes.Test", "SeedBytes.Test\SeedBytes.Test.csproj", "{766017B7-A7CF-4B18-93B0-E8E580541042}" -EndProject -Global - GlobalSection(SolutionConfigurationPlatforms) = preSolution - Debug|Any CPU = Debug|Any CPU - Release|Any CPU = Release|Any CPU - EndGlobalSection - GlobalSection(SolutionProperties) = preSolution - HideSolutionNode = FALSE - EndGlobalSection - GlobalSection(ProjectConfigurationPlatforms) = postSolution - {C5109E3E-7062-4D68-8045-8D8365CB3667}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {C5109E3E-7062-4D68-8045-8D8365CB3667}.Debug|Any CPU.Build.0 = Debug|Any CPU - {C5109E3E-7062-4D68-8045-8D8365CB3667}.Release|Any CPU.ActiveCfg = Release|Any CPU - {C5109E3E-7062-4D68-8045-8D8365CB3667}.Release|Any CPU.Build.0 = Release|Any CPU - {766017B7-A7CF-4B18-93B0-E8E580541042}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {766017B7-A7CF-4B18-93B0-E8E580541042}.Debug|Any CPU.Build.0 = Debug|Any CPU - {766017B7-A7CF-4B18-93B0-E8E580541042}.Release|Any CPU.ActiveCfg = Release|Any CPU - {766017B7-A7CF-4B18-93B0-E8E580541042}.Release|Any CPU.Build.0 = Release|Any CPU - EndGlobalSection -EndGlobal + +Microsoft Visual Studio Solution File, Format Version 12.00 +# Visual Studio Version 17 +VisualStudioVersion = 17.0.31903.59 +MinimumVisualStudioVersion = 10.0.40219.1 +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SeedBytes", "SeedBytes\SeedBytes.csproj", "{366505A4-3942-4563-886F-97F2E4C8C4CC}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SeedBytes.Test", "SeedBytes.Test\SeedBytes.Test.csproj", "{60B3B888-71F2-45FA-95F1-35E2E0791D7F}" +EndProject +Global + GlobalSection(SolutionConfigurationPlatforms) = preSolution + Debug|Any CPU = Debug|Any CPU + Release|Any CPU = Release|Any CPU + EndGlobalSection + GlobalSection(SolutionProperties) = preSolution + HideSolutionNode = FALSE + EndGlobalSection + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {366505A4-3942-4563-886F-97F2E4C8C4CC}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {366505A4-3942-4563-886F-97F2E4C8C4CC}.Debug|Any CPU.Build.0 = Debug|Any CPU + {366505A4-3942-4563-886F-97F2E4C8C4CC}.Release|Any CPU.ActiveCfg = Release|Any CPU + {366505A4-3942-4563-886F-97F2E4C8C4CC}.Release|Any CPU.Build.0 = Release|Any CPU + {60B3B888-71F2-45FA-95F1-35E2E0791D7F}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {60B3B888-71F2-45FA-95F1-35E2E0791D7F}.Debug|Any CPU.Build.0 = Debug|Any CPU + {60B3B888-71F2-45FA-95F1-35E2E0791D7F}.Release|Any CPU.ActiveCfg = Release|Any CPU + {60B3B888-71F2-45FA-95F1-35E2E0791D7F}.Release|Any CPU.Build.0 = Release|Any CPU + EndGlobalSection +EndGlobal diff --git a/seed/csharp-model/circular-references-advanced/src/SeedApi.sln b/seed/csharp-model/circular-references-advanced/src/SeedApi.sln index efb2c7401eb..d741d6a4744 100644 --- a/seed/csharp-model/circular-references-advanced/src/SeedApi.sln +++ b/seed/csharp-model/circular-references-advanced/src/SeedApi.sln @@ -1,28 +1,28 @@ - -Microsoft Visual Studio Solution File, Format Version 12.00 -# Visual Studio Version 17 -VisualStudioVersion = 17.0.31903.59 -MinimumVisualStudioVersion = 10.0.40219.1 -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SeedApi", "SeedApi\SeedApi.csproj", "{C4D179F1-7877-4959-9203-7EA2062A983F}" -EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SeedApi.Test", "SeedApi.Test\SeedApi.Test.csproj", "{FF9A4C5D-AD67-48C5-ABAA-C21AE3A76F4B}" -EndProject -Global - GlobalSection(SolutionConfigurationPlatforms) = preSolution - Debug|Any CPU = Debug|Any CPU - Release|Any CPU = Release|Any CPU - EndGlobalSection - GlobalSection(SolutionProperties) = preSolution - HideSolutionNode = FALSE - EndGlobalSection - GlobalSection(ProjectConfigurationPlatforms) = postSolution - {C4D179F1-7877-4959-9203-7EA2062A983F}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {C4D179F1-7877-4959-9203-7EA2062A983F}.Debug|Any CPU.Build.0 = Debug|Any CPU - {C4D179F1-7877-4959-9203-7EA2062A983F}.Release|Any CPU.ActiveCfg = Release|Any CPU - {C4D179F1-7877-4959-9203-7EA2062A983F}.Release|Any CPU.Build.0 = Release|Any CPU - {FF9A4C5D-AD67-48C5-ABAA-C21AE3A76F4B}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {FF9A4C5D-AD67-48C5-ABAA-C21AE3A76F4B}.Debug|Any CPU.Build.0 = Debug|Any CPU - {FF9A4C5D-AD67-48C5-ABAA-C21AE3A76F4B}.Release|Any CPU.ActiveCfg = Release|Any CPU - {FF9A4C5D-AD67-48C5-ABAA-C21AE3A76F4B}.Release|Any CPU.Build.0 = Release|Any CPU - EndGlobalSection -EndGlobal + +Microsoft Visual Studio Solution File, Format Version 12.00 +# Visual Studio Version 17 +VisualStudioVersion = 17.0.31903.59 +MinimumVisualStudioVersion = 10.0.40219.1 +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SeedApi", "SeedApi\SeedApi.csproj", "{AF054B6C-1BE5-41B3-956D-7873F5E93224}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SeedApi.Test", "SeedApi.Test\SeedApi.Test.csproj", "{D581C2AE-0027-4095-9D9E-2964D139D748}" +EndProject +Global + GlobalSection(SolutionConfigurationPlatforms) = preSolution + Debug|Any CPU = Debug|Any CPU + Release|Any CPU = Release|Any CPU + EndGlobalSection + GlobalSection(SolutionProperties) = preSolution + HideSolutionNode = FALSE + EndGlobalSection + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {AF054B6C-1BE5-41B3-956D-7873F5E93224}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {AF054B6C-1BE5-41B3-956D-7873F5E93224}.Debug|Any CPU.Build.0 = Debug|Any CPU + {AF054B6C-1BE5-41B3-956D-7873F5E93224}.Release|Any CPU.ActiveCfg = Release|Any CPU + {AF054B6C-1BE5-41B3-956D-7873F5E93224}.Release|Any CPU.Build.0 = Release|Any CPU + {D581C2AE-0027-4095-9D9E-2964D139D748}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {D581C2AE-0027-4095-9D9E-2964D139D748}.Debug|Any CPU.Build.0 = Debug|Any CPU + {D581C2AE-0027-4095-9D9E-2964D139D748}.Release|Any CPU.ActiveCfg = Release|Any CPU + {D581C2AE-0027-4095-9D9E-2964D139D748}.Release|Any CPU.Build.0 = Release|Any CPU + EndGlobalSection +EndGlobal diff --git a/seed/csharp-model/circular-references/src/SeedApi.sln b/seed/csharp-model/circular-references/src/SeedApi.sln index 70e4f48591f..92e87d5758a 100644 --- a/seed/csharp-model/circular-references/src/SeedApi.sln +++ b/seed/csharp-model/circular-references/src/SeedApi.sln @@ -1,28 +1,28 @@ - -Microsoft Visual Studio Solution File, Format Version 12.00 -# Visual Studio Version 17 -VisualStudioVersion = 17.0.31903.59 -MinimumVisualStudioVersion = 10.0.40219.1 -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SeedApi", "SeedApi\SeedApi.csproj", "{A28FD6FB-2FB9-402C-9A2E-C8ADD0D90AB2}" -EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SeedApi.Test", "SeedApi.Test\SeedApi.Test.csproj", "{B8DF6682-50F8-438E-A03F-E7B0C841A873}" -EndProject -Global - GlobalSection(SolutionConfigurationPlatforms) = preSolution - Debug|Any CPU = Debug|Any CPU - Release|Any CPU = Release|Any CPU - EndGlobalSection - GlobalSection(SolutionProperties) = preSolution - HideSolutionNode = FALSE - EndGlobalSection - GlobalSection(ProjectConfigurationPlatforms) = postSolution - {A28FD6FB-2FB9-402C-9A2E-C8ADD0D90AB2}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {A28FD6FB-2FB9-402C-9A2E-C8ADD0D90AB2}.Debug|Any CPU.Build.0 = Debug|Any CPU - {A28FD6FB-2FB9-402C-9A2E-C8ADD0D90AB2}.Release|Any CPU.ActiveCfg = Release|Any CPU - {A28FD6FB-2FB9-402C-9A2E-C8ADD0D90AB2}.Release|Any CPU.Build.0 = Release|Any CPU - {B8DF6682-50F8-438E-A03F-E7B0C841A873}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {B8DF6682-50F8-438E-A03F-E7B0C841A873}.Debug|Any CPU.Build.0 = Debug|Any CPU - {B8DF6682-50F8-438E-A03F-E7B0C841A873}.Release|Any CPU.ActiveCfg = Release|Any CPU - {B8DF6682-50F8-438E-A03F-E7B0C841A873}.Release|Any CPU.Build.0 = Release|Any CPU - EndGlobalSection -EndGlobal + +Microsoft Visual Studio Solution File, Format Version 12.00 +# Visual Studio Version 17 +VisualStudioVersion = 17.0.31903.59 +MinimumVisualStudioVersion = 10.0.40219.1 +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SeedApi", "SeedApi\SeedApi.csproj", "{550D5692-00A6-46FC-8218-EF663BED5D0D}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SeedApi.Test", "SeedApi.Test\SeedApi.Test.csproj", "{6473A2B1-441B-432D-B450-12B1D40BA918}" +EndProject +Global + GlobalSection(SolutionConfigurationPlatforms) = preSolution + Debug|Any CPU = Debug|Any CPU + Release|Any CPU = Release|Any CPU + EndGlobalSection + GlobalSection(SolutionProperties) = preSolution + HideSolutionNode = FALSE + EndGlobalSection + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {550D5692-00A6-46FC-8218-EF663BED5D0D}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {550D5692-00A6-46FC-8218-EF663BED5D0D}.Debug|Any CPU.Build.0 = Debug|Any CPU + {550D5692-00A6-46FC-8218-EF663BED5D0D}.Release|Any CPU.ActiveCfg = Release|Any CPU + {550D5692-00A6-46FC-8218-EF663BED5D0D}.Release|Any CPU.Build.0 = Release|Any CPU + {6473A2B1-441B-432D-B450-12B1D40BA918}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {6473A2B1-441B-432D-B450-12B1D40BA918}.Debug|Any CPU.Build.0 = Debug|Any CPU + {6473A2B1-441B-432D-B450-12B1D40BA918}.Release|Any CPU.ActiveCfg = Release|Any CPU + {6473A2B1-441B-432D-B450-12B1D40BA918}.Release|Any CPU.Build.0 = Release|Any CPU + EndGlobalSection +EndGlobal diff --git a/seed/csharp-model/cross-package-type-names/src/SeedCrossPackageTypeNames.sln b/seed/csharp-model/cross-package-type-names/src/SeedCrossPackageTypeNames.sln index 9c1866e89be..7512c5ea33e 100644 --- a/seed/csharp-model/cross-package-type-names/src/SeedCrossPackageTypeNames.sln +++ b/seed/csharp-model/cross-package-type-names/src/SeedCrossPackageTypeNames.sln @@ -1,28 +1,28 @@ - -Microsoft Visual Studio Solution File, Format Version 12.00 -# Visual Studio Version 17 -VisualStudioVersion = 17.0.31903.59 -MinimumVisualStudioVersion = 10.0.40219.1 -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SeedCrossPackageTypeNames", "SeedCrossPackageTypeNames\SeedCrossPackageTypeNames.csproj", "{56426A53-89B0-4ECD-A002-98B6A52159C4}" -EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SeedCrossPackageTypeNames.Test", "SeedCrossPackageTypeNames.Test\SeedCrossPackageTypeNames.Test.csproj", "{A88D2EEE-3D08-446B-8CF0-0AD5DC642F3E}" -EndProject -Global - GlobalSection(SolutionConfigurationPlatforms) = preSolution - Debug|Any CPU = Debug|Any CPU - Release|Any CPU = Release|Any CPU - EndGlobalSection - GlobalSection(SolutionProperties) = preSolution - HideSolutionNode = FALSE - EndGlobalSection - GlobalSection(ProjectConfigurationPlatforms) = postSolution - {56426A53-89B0-4ECD-A002-98B6A52159C4}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {56426A53-89B0-4ECD-A002-98B6A52159C4}.Debug|Any CPU.Build.0 = Debug|Any CPU - {56426A53-89B0-4ECD-A002-98B6A52159C4}.Release|Any CPU.ActiveCfg = Release|Any CPU - {56426A53-89B0-4ECD-A002-98B6A52159C4}.Release|Any CPU.Build.0 = Release|Any CPU - {A88D2EEE-3D08-446B-8CF0-0AD5DC642F3E}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {A88D2EEE-3D08-446B-8CF0-0AD5DC642F3E}.Debug|Any CPU.Build.0 = Debug|Any CPU - {A88D2EEE-3D08-446B-8CF0-0AD5DC642F3E}.Release|Any CPU.ActiveCfg = Release|Any CPU - {A88D2EEE-3D08-446B-8CF0-0AD5DC642F3E}.Release|Any CPU.Build.0 = Release|Any CPU - EndGlobalSection -EndGlobal + +Microsoft Visual Studio Solution File, Format Version 12.00 +# Visual Studio Version 17 +VisualStudioVersion = 17.0.31903.59 +MinimumVisualStudioVersion = 10.0.40219.1 +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SeedCrossPackageTypeNames", "SeedCrossPackageTypeNames\SeedCrossPackageTypeNames.csproj", "{DB95B7E4-79BA-4A96-BBA2-8EDFBF327481}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SeedCrossPackageTypeNames.Test", "SeedCrossPackageTypeNames.Test\SeedCrossPackageTypeNames.Test.csproj", "{4AEC202A-A8F0-4EEF-9F97-AE7E63C29EE4}" +EndProject +Global + GlobalSection(SolutionConfigurationPlatforms) = preSolution + Debug|Any CPU = Debug|Any CPU + Release|Any CPU = Release|Any CPU + EndGlobalSection + GlobalSection(SolutionProperties) = preSolution + HideSolutionNode = FALSE + EndGlobalSection + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {DB95B7E4-79BA-4A96-BBA2-8EDFBF327481}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {DB95B7E4-79BA-4A96-BBA2-8EDFBF327481}.Debug|Any CPU.Build.0 = Debug|Any CPU + {DB95B7E4-79BA-4A96-BBA2-8EDFBF327481}.Release|Any CPU.ActiveCfg = Release|Any CPU + {DB95B7E4-79BA-4A96-BBA2-8EDFBF327481}.Release|Any CPU.Build.0 = Release|Any CPU + {4AEC202A-A8F0-4EEF-9F97-AE7E63C29EE4}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {4AEC202A-A8F0-4EEF-9F97-AE7E63C29EE4}.Debug|Any CPU.Build.0 = Debug|Any CPU + {4AEC202A-A8F0-4EEF-9F97-AE7E63C29EE4}.Release|Any CPU.ActiveCfg = Release|Any CPU + {4AEC202A-A8F0-4EEF-9F97-AE7E63C29EE4}.Release|Any CPU.Build.0 = Release|Any CPU + EndGlobalSection +EndGlobal diff --git a/seed/csharp-model/csharp-grpc-proto-exhaustive/src/SeedApi.sln b/seed/csharp-model/csharp-grpc-proto-exhaustive/src/SeedApi.sln index 165b1d00c35..ef597e4e1bb 100644 --- a/seed/csharp-model/csharp-grpc-proto-exhaustive/src/SeedApi.sln +++ b/seed/csharp-model/csharp-grpc-proto-exhaustive/src/SeedApi.sln @@ -1,28 +1,28 @@ - -Microsoft Visual Studio Solution File, Format Version 12.00 -# Visual Studio Version 17 -VisualStudioVersion = 17.0.31903.59 -MinimumVisualStudioVersion = 10.0.40219.1 -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SeedApi", "SeedApi\SeedApi.csproj", "{DB10066E-891B-41AA-BA78-666C1409F9FA}" -EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SeedApi.Test", "SeedApi.Test\SeedApi.Test.csproj", "{A6AA020C-500E-45B5-9825-B418AD88EF91}" -EndProject -Global - GlobalSection(SolutionConfigurationPlatforms) = preSolution - Debug|Any CPU = Debug|Any CPU - Release|Any CPU = Release|Any CPU - EndGlobalSection - GlobalSection(SolutionProperties) = preSolution - HideSolutionNode = FALSE - EndGlobalSection - GlobalSection(ProjectConfigurationPlatforms) = postSolution - {DB10066E-891B-41AA-BA78-666C1409F9FA}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {DB10066E-891B-41AA-BA78-666C1409F9FA}.Debug|Any CPU.Build.0 = Debug|Any CPU - {DB10066E-891B-41AA-BA78-666C1409F9FA}.Release|Any CPU.ActiveCfg = Release|Any CPU - {DB10066E-891B-41AA-BA78-666C1409F9FA}.Release|Any CPU.Build.0 = Release|Any CPU - {A6AA020C-500E-45B5-9825-B418AD88EF91}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {A6AA020C-500E-45B5-9825-B418AD88EF91}.Debug|Any CPU.Build.0 = Debug|Any CPU - {A6AA020C-500E-45B5-9825-B418AD88EF91}.Release|Any CPU.ActiveCfg = Release|Any CPU - {A6AA020C-500E-45B5-9825-B418AD88EF91}.Release|Any CPU.Build.0 = Release|Any CPU - EndGlobalSection -EndGlobal + +Microsoft Visual Studio Solution File, Format Version 12.00 +# Visual Studio Version 17 +VisualStudioVersion = 17.0.31903.59 +MinimumVisualStudioVersion = 10.0.40219.1 +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SeedApi", "SeedApi\SeedApi.csproj", "{F03ED4DA-60C7-430E-B3B2-D0CDFE36EF52}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SeedApi.Test", "SeedApi.Test\SeedApi.Test.csproj", "{89FF37C3-DAB2-4C4E-BF62-311189D9AA5C}" +EndProject +Global + GlobalSection(SolutionConfigurationPlatforms) = preSolution + Debug|Any CPU = Debug|Any CPU + Release|Any CPU = Release|Any CPU + EndGlobalSection + GlobalSection(SolutionProperties) = preSolution + HideSolutionNode = FALSE + EndGlobalSection + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {F03ED4DA-60C7-430E-B3B2-D0CDFE36EF52}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {F03ED4DA-60C7-430E-B3B2-D0CDFE36EF52}.Debug|Any CPU.Build.0 = Debug|Any CPU + {F03ED4DA-60C7-430E-B3B2-D0CDFE36EF52}.Release|Any CPU.ActiveCfg = Release|Any CPU + {F03ED4DA-60C7-430E-B3B2-D0CDFE36EF52}.Release|Any CPU.Build.0 = Release|Any CPU + {89FF37C3-DAB2-4C4E-BF62-311189D9AA5C}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {89FF37C3-DAB2-4C4E-BF62-311189D9AA5C}.Debug|Any CPU.Build.0 = Debug|Any CPU + {89FF37C3-DAB2-4C4E-BF62-311189D9AA5C}.Release|Any CPU.ActiveCfg = Release|Any CPU + {89FF37C3-DAB2-4C4E-BF62-311189D9AA5C}.Release|Any CPU.Build.0 = Release|Any CPU + EndGlobalSection +EndGlobal diff --git a/seed/csharp-model/csharp-grpc-proto/src/SeedApi.sln b/seed/csharp-model/csharp-grpc-proto/src/SeedApi.sln index 3e683b26c5a..7bd98676088 100644 --- a/seed/csharp-model/csharp-grpc-proto/src/SeedApi.sln +++ b/seed/csharp-model/csharp-grpc-proto/src/SeedApi.sln @@ -1,28 +1,28 @@ - -Microsoft Visual Studio Solution File, Format Version 12.00 -# Visual Studio Version 17 -VisualStudioVersion = 17.0.31903.59 -MinimumVisualStudioVersion = 10.0.40219.1 -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SeedApi", "SeedApi\SeedApi.csproj", "{F1FAE48E-4136-4E77-A90F-94911794009E}" -EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SeedApi.Test", "SeedApi.Test\SeedApi.Test.csproj", "{0439F39A-FE7B-4B83-AC1F-458CFDF523EB}" -EndProject -Global - GlobalSection(SolutionConfigurationPlatforms) = preSolution - Debug|Any CPU = Debug|Any CPU - Release|Any CPU = Release|Any CPU - EndGlobalSection - GlobalSection(SolutionProperties) = preSolution - HideSolutionNode = FALSE - EndGlobalSection - GlobalSection(ProjectConfigurationPlatforms) = postSolution - {F1FAE48E-4136-4E77-A90F-94911794009E}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {F1FAE48E-4136-4E77-A90F-94911794009E}.Debug|Any CPU.Build.0 = Debug|Any CPU - {F1FAE48E-4136-4E77-A90F-94911794009E}.Release|Any CPU.ActiveCfg = Release|Any CPU - {F1FAE48E-4136-4E77-A90F-94911794009E}.Release|Any CPU.Build.0 = Release|Any CPU - {0439F39A-FE7B-4B83-AC1F-458CFDF523EB}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {0439F39A-FE7B-4B83-AC1F-458CFDF523EB}.Debug|Any CPU.Build.0 = Debug|Any CPU - {0439F39A-FE7B-4B83-AC1F-458CFDF523EB}.Release|Any CPU.ActiveCfg = Release|Any CPU - {0439F39A-FE7B-4B83-AC1F-458CFDF523EB}.Release|Any CPU.Build.0 = Release|Any CPU - EndGlobalSection -EndGlobal + +Microsoft Visual Studio Solution File, Format Version 12.00 +# Visual Studio Version 17 +VisualStudioVersion = 17.0.31903.59 +MinimumVisualStudioVersion = 10.0.40219.1 +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SeedApi", "SeedApi\SeedApi.csproj", "{8F2C2F42-05D5-40BA-A8A7-82E24E94A911}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SeedApi.Test", "SeedApi.Test\SeedApi.Test.csproj", "{1C1C5DC1-BC98-4873-B8BD-FB418DA63637}" +EndProject +Global + GlobalSection(SolutionConfigurationPlatforms) = preSolution + Debug|Any CPU = Debug|Any CPU + Release|Any CPU = Release|Any CPU + EndGlobalSection + GlobalSection(SolutionProperties) = preSolution + HideSolutionNode = FALSE + EndGlobalSection + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {8F2C2F42-05D5-40BA-A8A7-82E24E94A911}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {8F2C2F42-05D5-40BA-A8A7-82E24E94A911}.Debug|Any CPU.Build.0 = Debug|Any CPU + {8F2C2F42-05D5-40BA-A8A7-82E24E94A911}.Release|Any CPU.ActiveCfg = Release|Any CPU + {8F2C2F42-05D5-40BA-A8A7-82E24E94A911}.Release|Any CPU.Build.0 = Release|Any CPU + {1C1C5DC1-BC98-4873-B8BD-FB418DA63637}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {1C1C5DC1-BC98-4873-B8BD-FB418DA63637}.Debug|Any CPU.Build.0 = Debug|Any CPU + {1C1C5DC1-BC98-4873-B8BD-FB418DA63637}.Release|Any CPU.ActiveCfg = Release|Any CPU + {1C1C5DC1-BC98-4873-B8BD-FB418DA63637}.Release|Any CPU.Build.0 = Release|Any CPU + EndGlobalSection +EndGlobal diff --git a/seed/csharp-model/csharp-namespace-conflict/src/SeedCsharpNamespaceConflict.sln b/seed/csharp-model/csharp-namespace-conflict/src/SeedCsharpNamespaceConflict.sln index 35425aaa102..4526847c798 100644 --- a/seed/csharp-model/csharp-namespace-conflict/src/SeedCsharpNamespaceConflict.sln +++ b/seed/csharp-model/csharp-namespace-conflict/src/SeedCsharpNamespaceConflict.sln @@ -1,28 +1,28 @@ - -Microsoft Visual Studio Solution File, Format Version 12.00 -# Visual Studio Version 17 -VisualStudioVersion = 17.0.31903.59 -MinimumVisualStudioVersion = 10.0.40219.1 -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SeedCsharpNamespaceConflict", "SeedCsharpNamespaceConflict\SeedCsharpNamespaceConflict.csproj", "{7F730939-7691-4FAB-82DC-77EE0149583A}" -EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SeedCsharpNamespaceConflict.Test", "SeedCsharpNamespaceConflict.Test\SeedCsharpNamespaceConflict.Test.csproj", "{73E805EA-C549-4FFC-9E7F-E24FCD804F2B}" -EndProject -Global - GlobalSection(SolutionConfigurationPlatforms) = preSolution - Debug|Any CPU = Debug|Any CPU - Release|Any CPU = Release|Any CPU - EndGlobalSection - GlobalSection(SolutionProperties) = preSolution - HideSolutionNode = FALSE - EndGlobalSection - GlobalSection(ProjectConfigurationPlatforms) = postSolution - {7F730939-7691-4FAB-82DC-77EE0149583A}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {7F730939-7691-4FAB-82DC-77EE0149583A}.Debug|Any CPU.Build.0 = Debug|Any CPU - {7F730939-7691-4FAB-82DC-77EE0149583A}.Release|Any CPU.ActiveCfg = Release|Any CPU - {7F730939-7691-4FAB-82DC-77EE0149583A}.Release|Any CPU.Build.0 = Release|Any CPU - {73E805EA-C549-4FFC-9E7F-E24FCD804F2B}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {73E805EA-C549-4FFC-9E7F-E24FCD804F2B}.Debug|Any CPU.Build.0 = Debug|Any CPU - {73E805EA-C549-4FFC-9E7F-E24FCD804F2B}.Release|Any CPU.ActiveCfg = Release|Any CPU - {73E805EA-C549-4FFC-9E7F-E24FCD804F2B}.Release|Any CPU.Build.0 = Release|Any CPU - EndGlobalSection -EndGlobal + +Microsoft Visual Studio Solution File, Format Version 12.00 +# Visual Studio Version 17 +VisualStudioVersion = 17.0.31903.59 +MinimumVisualStudioVersion = 10.0.40219.1 +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SeedCsharpNamespaceConflict", "SeedCsharpNamespaceConflict\SeedCsharpNamespaceConflict.csproj", "{B79436C7-85E8-4098-BF51-D3E827F3D7BE}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SeedCsharpNamespaceConflict.Test", "SeedCsharpNamespaceConflict.Test\SeedCsharpNamespaceConflict.Test.csproj", "{4C502227-0B6F-43B2-B1EF-6DE9BCC887D2}" +EndProject +Global + GlobalSection(SolutionConfigurationPlatforms) = preSolution + Debug|Any CPU = Debug|Any CPU + Release|Any CPU = Release|Any CPU + EndGlobalSection + GlobalSection(SolutionProperties) = preSolution + HideSolutionNode = FALSE + EndGlobalSection + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {B79436C7-85E8-4098-BF51-D3E827F3D7BE}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {B79436C7-85E8-4098-BF51-D3E827F3D7BE}.Debug|Any CPU.Build.0 = Debug|Any CPU + {B79436C7-85E8-4098-BF51-D3E827F3D7BE}.Release|Any CPU.ActiveCfg = Release|Any CPU + {B79436C7-85E8-4098-BF51-D3E827F3D7BE}.Release|Any CPU.Build.0 = Release|Any CPU + {4C502227-0B6F-43B2-B1EF-6DE9BCC887D2}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {4C502227-0B6F-43B2-B1EF-6DE9BCC887D2}.Debug|Any CPU.Build.0 = Debug|Any CPU + {4C502227-0B6F-43B2-B1EF-6DE9BCC887D2}.Release|Any CPU.ActiveCfg = Release|Any CPU + {4C502227-0B6F-43B2-B1EF-6DE9BCC887D2}.Release|Any CPU.Build.0 = Release|Any CPU + EndGlobalSection +EndGlobal diff --git a/seed/csharp-model/custom-auth/src/SeedCustomAuth.sln b/seed/csharp-model/custom-auth/src/SeedCustomAuth.sln index 5b62037f62a..30b1770fe4c 100644 --- a/seed/csharp-model/custom-auth/src/SeedCustomAuth.sln +++ b/seed/csharp-model/custom-auth/src/SeedCustomAuth.sln @@ -1,28 +1,28 @@ - -Microsoft Visual Studio Solution File, Format Version 12.00 -# Visual Studio Version 17 -VisualStudioVersion = 17.0.31903.59 -MinimumVisualStudioVersion = 10.0.40219.1 -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SeedCustomAuth", "SeedCustomAuth\SeedCustomAuth.csproj", "{63EF239A-C65B-498E-B0A6-D5470527F772}" -EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SeedCustomAuth.Test", "SeedCustomAuth.Test\SeedCustomAuth.Test.csproj", "{87F8E6F2-7570-4B2C-B2C6-50AD539AD112}" -EndProject -Global - GlobalSection(SolutionConfigurationPlatforms) = preSolution - Debug|Any CPU = Debug|Any CPU - Release|Any CPU = Release|Any CPU - EndGlobalSection - GlobalSection(SolutionProperties) = preSolution - HideSolutionNode = FALSE - EndGlobalSection - GlobalSection(ProjectConfigurationPlatforms) = postSolution - {63EF239A-C65B-498E-B0A6-D5470527F772}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {63EF239A-C65B-498E-B0A6-D5470527F772}.Debug|Any CPU.Build.0 = Debug|Any CPU - {63EF239A-C65B-498E-B0A6-D5470527F772}.Release|Any CPU.ActiveCfg = Release|Any CPU - {63EF239A-C65B-498E-B0A6-D5470527F772}.Release|Any CPU.Build.0 = Release|Any CPU - {87F8E6F2-7570-4B2C-B2C6-50AD539AD112}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {87F8E6F2-7570-4B2C-B2C6-50AD539AD112}.Debug|Any CPU.Build.0 = Debug|Any CPU - {87F8E6F2-7570-4B2C-B2C6-50AD539AD112}.Release|Any CPU.ActiveCfg = Release|Any CPU - {87F8E6F2-7570-4B2C-B2C6-50AD539AD112}.Release|Any CPU.Build.0 = Release|Any CPU - EndGlobalSection -EndGlobal + +Microsoft Visual Studio Solution File, Format Version 12.00 +# Visual Studio Version 17 +VisualStudioVersion = 17.0.31903.59 +MinimumVisualStudioVersion = 10.0.40219.1 +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SeedCustomAuth", "SeedCustomAuth\SeedCustomAuth.csproj", "{A8A1A492-51CF-476E-B512-2EA227FA751E}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SeedCustomAuth.Test", "SeedCustomAuth.Test\SeedCustomAuth.Test.csproj", "{8171DCD7-E211-4153-BDD8-6BE9AB0AF4B0}" +EndProject +Global + GlobalSection(SolutionConfigurationPlatforms) = preSolution + Debug|Any CPU = Debug|Any CPU + Release|Any CPU = Release|Any CPU + EndGlobalSection + GlobalSection(SolutionProperties) = preSolution + HideSolutionNode = FALSE + EndGlobalSection + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {A8A1A492-51CF-476E-B512-2EA227FA751E}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {A8A1A492-51CF-476E-B512-2EA227FA751E}.Debug|Any CPU.Build.0 = Debug|Any CPU + {A8A1A492-51CF-476E-B512-2EA227FA751E}.Release|Any CPU.ActiveCfg = Release|Any CPU + {A8A1A492-51CF-476E-B512-2EA227FA751E}.Release|Any CPU.Build.0 = Release|Any CPU + {8171DCD7-E211-4153-BDD8-6BE9AB0AF4B0}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {8171DCD7-E211-4153-BDD8-6BE9AB0AF4B0}.Debug|Any CPU.Build.0 = Debug|Any CPU + {8171DCD7-E211-4153-BDD8-6BE9AB0AF4B0}.Release|Any CPU.ActiveCfg = Release|Any CPU + {8171DCD7-E211-4153-BDD8-6BE9AB0AF4B0}.Release|Any CPU.Build.0 = Release|Any CPU + EndGlobalSection +EndGlobal diff --git a/seed/csharp-model/enum/forward-compatible-enums/src/SeedEnum.sln b/seed/csharp-model/enum/forward-compatible-enums/src/SeedEnum.sln index 902e31f5326..4d958bf1684 100644 --- a/seed/csharp-model/enum/forward-compatible-enums/src/SeedEnum.sln +++ b/seed/csharp-model/enum/forward-compatible-enums/src/SeedEnum.sln @@ -1,28 +1,28 @@ - -Microsoft Visual Studio Solution File, Format Version 12.00 -# Visual Studio Version 17 -VisualStudioVersion = 17.0.31903.59 -MinimumVisualStudioVersion = 10.0.40219.1 -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SeedEnum", "SeedEnum\SeedEnum.csproj", "{CD45017C-F142-4776-845A-3561A709FEF6}" -EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SeedEnum.Test", "SeedEnum.Test\SeedEnum.Test.csproj", "{B540CD58-DA63-4017-BBF4-C108EE1085E1}" -EndProject -Global - GlobalSection(SolutionConfigurationPlatforms) = preSolution - Debug|Any CPU = Debug|Any CPU - Release|Any CPU = Release|Any CPU - EndGlobalSection - GlobalSection(SolutionProperties) = preSolution - HideSolutionNode = FALSE - EndGlobalSection - GlobalSection(ProjectConfigurationPlatforms) = postSolution - {CD45017C-F142-4776-845A-3561A709FEF6}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {CD45017C-F142-4776-845A-3561A709FEF6}.Debug|Any CPU.Build.0 = Debug|Any CPU - {CD45017C-F142-4776-845A-3561A709FEF6}.Release|Any CPU.ActiveCfg = Release|Any CPU - {CD45017C-F142-4776-845A-3561A709FEF6}.Release|Any CPU.Build.0 = Release|Any CPU - {B540CD58-DA63-4017-BBF4-C108EE1085E1}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {B540CD58-DA63-4017-BBF4-C108EE1085E1}.Debug|Any CPU.Build.0 = Debug|Any CPU - {B540CD58-DA63-4017-BBF4-C108EE1085E1}.Release|Any CPU.ActiveCfg = Release|Any CPU - {B540CD58-DA63-4017-BBF4-C108EE1085E1}.Release|Any CPU.Build.0 = Release|Any CPU - EndGlobalSection -EndGlobal + +Microsoft Visual Studio Solution File, Format Version 12.00 +# Visual Studio Version 17 +VisualStudioVersion = 17.0.31903.59 +MinimumVisualStudioVersion = 10.0.40219.1 +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SeedEnum", "SeedEnum\SeedEnum.csproj", "{7A600D8C-6EBF-47E5-932E-EF3F9F48C302}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SeedEnum.Test", "SeedEnum.Test\SeedEnum.Test.csproj", "{13A330C0-7643-4306-8EE1-54EE6C9D608B}" +EndProject +Global + GlobalSection(SolutionConfigurationPlatforms) = preSolution + Debug|Any CPU = Debug|Any CPU + Release|Any CPU = Release|Any CPU + EndGlobalSection + GlobalSection(SolutionProperties) = preSolution + HideSolutionNode = FALSE + EndGlobalSection + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {7A600D8C-6EBF-47E5-932E-EF3F9F48C302}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {7A600D8C-6EBF-47E5-932E-EF3F9F48C302}.Debug|Any CPU.Build.0 = Debug|Any CPU + {7A600D8C-6EBF-47E5-932E-EF3F9F48C302}.Release|Any CPU.ActiveCfg = Release|Any CPU + {7A600D8C-6EBF-47E5-932E-EF3F9F48C302}.Release|Any CPU.Build.0 = Release|Any CPU + {13A330C0-7643-4306-8EE1-54EE6C9D608B}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {13A330C0-7643-4306-8EE1-54EE6C9D608B}.Debug|Any CPU.Build.0 = Debug|Any CPU + {13A330C0-7643-4306-8EE1-54EE6C9D608B}.Release|Any CPU.ActiveCfg = Release|Any CPU + {13A330C0-7643-4306-8EE1-54EE6C9D608B}.Release|Any CPU.Build.0 = Release|Any CPU + EndGlobalSection +EndGlobal diff --git a/seed/csharp-model/enum/plain-enums/src/SeedEnum.sln b/seed/csharp-model/enum/plain-enums/src/SeedEnum.sln index 50a6d6fd3ba..830595dd999 100644 --- a/seed/csharp-model/enum/plain-enums/src/SeedEnum.sln +++ b/seed/csharp-model/enum/plain-enums/src/SeedEnum.sln @@ -1,28 +1,28 @@ - -Microsoft Visual Studio Solution File, Format Version 12.00 -# Visual Studio Version 17 -VisualStudioVersion = 17.0.31903.59 -MinimumVisualStudioVersion = 10.0.40219.1 -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SeedEnum", "SeedEnum\SeedEnum.csproj", "{C46D2E55-A86E-487D-9786-61D4A59DBBCD}" -EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SeedEnum.Test", "SeedEnum.Test\SeedEnum.Test.csproj", "{9B8B7AEE-C011-4468-B9D2-0351B933CFCF}" -EndProject -Global - GlobalSection(SolutionConfigurationPlatforms) = preSolution - Debug|Any CPU = Debug|Any CPU - Release|Any CPU = Release|Any CPU - EndGlobalSection - GlobalSection(SolutionProperties) = preSolution - HideSolutionNode = FALSE - EndGlobalSection - GlobalSection(ProjectConfigurationPlatforms) = postSolution - {C46D2E55-A86E-487D-9786-61D4A59DBBCD}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {C46D2E55-A86E-487D-9786-61D4A59DBBCD}.Debug|Any CPU.Build.0 = Debug|Any CPU - {C46D2E55-A86E-487D-9786-61D4A59DBBCD}.Release|Any CPU.ActiveCfg = Release|Any CPU - {C46D2E55-A86E-487D-9786-61D4A59DBBCD}.Release|Any CPU.Build.0 = Release|Any CPU - {9B8B7AEE-C011-4468-B9D2-0351B933CFCF}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {9B8B7AEE-C011-4468-B9D2-0351B933CFCF}.Debug|Any CPU.Build.0 = Debug|Any CPU - {9B8B7AEE-C011-4468-B9D2-0351B933CFCF}.Release|Any CPU.ActiveCfg = Release|Any CPU - {9B8B7AEE-C011-4468-B9D2-0351B933CFCF}.Release|Any CPU.Build.0 = Release|Any CPU - EndGlobalSection -EndGlobal + +Microsoft Visual Studio Solution File, Format Version 12.00 +# Visual Studio Version 17 +VisualStudioVersion = 17.0.31903.59 +MinimumVisualStudioVersion = 10.0.40219.1 +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SeedEnum", "SeedEnum\SeedEnum.csproj", "{906EABCA-3B56-4141-B503-A95BCB165EEF}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SeedEnum.Test", "SeedEnum.Test\SeedEnum.Test.csproj", "{04720996-7465-45FE-968E-104AFB5D92EF}" +EndProject +Global + GlobalSection(SolutionConfigurationPlatforms) = preSolution + Debug|Any CPU = Debug|Any CPU + Release|Any CPU = Release|Any CPU + EndGlobalSection + GlobalSection(SolutionProperties) = preSolution + HideSolutionNode = FALSE + EndGlobalSection + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {906EABCA-3B56-4141-B503-A95BCB165EEF}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {906EABCA-3B56-4141-B503-A95BCB165EEF}.Debug|Any CPU.Build.0 = Debug|Any CPU + {906EABCA-3B56-4141-B503-A95BCB165EEF}.Release|Any CPU.ActiveCfg = Release|Any CPU + {906EABCA-3B56-4141-B503-A95BCB165EEF}.Release|Any CPU.Build.0 = Release|Any CPU + {04720996-7465-45FE-968E-104AFB5D92EF}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {04720996-7465-45FE-968E-104AFB5D92EF}.Debug|Any CPU.Build.0 = Debug|Any CPU + {04720996-7465-45FE-968E-104AFB5D92EF}.Release|Any CPU.ActiveCfg = Release|Any CPU + {04720996-7465-45FE-968E-104AFB5D92EF}.Release|Any CPU.Build.0 = Release|Any CPU + EndGlobalSection +EndGlobal diff --git a/seed/csharp-model/error-property/src/SeedErrorProperty.sln b/seed/csharp-model/error-property/src/SeedErrorProperty.sln index b6ccdbea25b..53e8cec7c2b 100644 --- a/seed/csharp-model/error-property/src/SeedErrorProperty.sln +++ b/seed/csharp-model/error-property/src/SeedErrorProperty.sln @@ -1,28 +1,28 @@ - -Microsoft Visual Studio Solution File, Format Version 12.00 -# Visual Studio Version 17 -VisualStudioVersion = 17.0.31903.59 -MinimumVisualStudioVersion = 10.0.40219.1 -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SeedErrorProperty", "SeedErrorProperty\SeedErrorProperty.csproj", "{CDD8F608-B565-4BA5-8C64-D1EC8A5C6BC4}" -EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SeedErrorProperty.Test", "SeedErrorProperty.Test\SeedErrorProperty.Test.csproj", "{B1D4F8EE-825C-469D-9E92-656EA0A2FF54}" -EndProject -Global - GlobalSection(SolutionConfigurationPlatforms) = preSolution - Debug|Any CPU = Debug|Any CPU - Release|Any CPU = Release|Any CPU - EndGlobalSection - GlobalSection(SolutionProperties) = preSolution - HideSolutionNode = FALSE - EndGlobalSection - GlobalSection(ProjectConfigurationPlatforms) = postSolution - {CDD8F608-B565-4BA5-8C64-D1EC8A5C6BC4}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {CDD8F608-B565-4BA5-8C64-D1EC8A5C6BC4}.Debug|Any CPU.Build.0 = Debug|Any CPU - {CDD8F608-B565-4BA5-8C64-D1EC8A5C6BC4}.Release|Any CPU.ActiveCfg = Release|Any CPU - {CDD8F608-B565-4BA5-8C64-D1EC8A5C6BC4}.Release|Any CPU.Build.0 = Release|Any CPU - {B1D4F8EE-825C-469D-9E92-656EA0A2FF54}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {B1D4F8EE-825C-469D-9E92-656EA0A2FF54}.Debug|Any CPU.Build.0 = Debug|Any CPU - {B1D4F8EE-825C-469D-9E92-656EA0A2FF54}.Release|Any CPU.ActiveCfg = Release|Any CPU - {B1D4F8EE-825C-469D-9E92-656EA0A2FF54}.Release|Any CPU.Build.0 = Release|Any CPU - EndGlobalSection -EndGlobal + +Microsoft Visual Studio Solution File, Format Version 12.00 +# Visual Studio Version 17 +VisualStudioVersion = 17.0.31903.59 +MinimumVisualStudioVersion = 10.0.40219.1 +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SeedErrorProperty", "SeedErrorProperty\SeedErrorProperty.csproj", "{A72341A9-FFF3-4B5C-BB43-E588DE439F06}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SeedErrorProperty.Test", "SeedErrorProperty.Test\SeedErrorProperty.Test.csproj", "{182BE3BC-0967-4968-89B0-F29EB77038EC}" +EndProject +Global + GlobalSection(SolutionConfigurationPlatforms) = preSolution + Debug|Any CPU = Debug|Any CPU + Release|Any CPU = Release|Any CPU + EndGlobalSection + GlobalSection(SolutionProperties) = preSolution + HideSolutionNode = FALSE + EndGlobalSection + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {A72341A9-FFF3-4B5C-BB43-E588DE439F06}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {A72341A9-FFF3-4B5C-BB43-E588DE439F06}.Debug|Any CPU.Build.0 = Debug|Any CPU + {A72341A9-FFF3-4B5C-BB43-E588DE439F06}.Release|Any CPU.ActiveCfg = Release|Any CPU + {A72341A9-FFF3-4B5C-BB43-E588DE439F06}.Release|Any CPU.Build.0 = Release|Any CPU + {182BE3BC-0967-4968-89B0-F29EB77038EC}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {182BE3BC-0967-4968-89B0-F29EB77038EC}.Debug|Any CPU.Build.0 = Debug|Any CPU + {182BE3BC-0967-4968-89B0-F29EB77038EC}.Release|Any CPU.ActiveCfg = Release|Any CPU + {182BE3BC-0967-4968-89B0-F29EB77038EC}.Release|Any CPU.Build.0 = Release|Any CPU + EndGlobalSection +EndGlobal diff --git a/seed/csharp-model/examples/src/SeedExamples.sln b/seed/csharp-model/examples/src/SeedExamples.sln index ec81cd85115..f88e80b8d7f 100644 --- a/seed/csharp-model/examples/src/SeedExamples.sln +++ b/seed/csharp-model/examples/src/SeedExamples.sln @@ -1,28 +1,28 @@ - -Microsoft Visual Studio Solution File, Format Version 12.00 -# Visual Studio Version 17 -VisualStudioVersion = 17.0.31903.59 -MinimumVisualStudioVersion = 10.0.40219.1 -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SeedExamples", "SeedExamples\SeedExamples.csproj", "{F001B9AB-3E8A-449F-8AFB-0853D7C7E8E8}" -EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SeedExamples.Test", "SeedExamples.Test\SeedExamples.Test.csproj", "{08101335-86D9-4D95-BCC7-07C2D0A9D7CA}" -EndProject -Global - GlobalSection(SolutionConfigurationPlatforms) = preSolution - Debug|Any CPU = Debug|Any CPU - Release|Any CPU = Release|Any CPU - EndGlobalSection - GlobalSection(SolutionProperties) = preSolution - HideSolutionNode = FALSE - EndGlobalSection - GlobalSection(ProjectConfigurationPlatforms) = postSolution - {F001B9AB-3E8A-449F-8AFB-0853D7C7E8E8}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {F001B9AB-3E8A-449F-8AFB-0853D7C7E8E8}.Debug|Any CPU.Build.0 = Debug|Any CPU - {F001B9AB-3E8A-449F-8AFB-0853D7C7E8E8}.Release|Any CPU.ActiveCfg = Release|Any CPU - {F001B9AB-3E8A-449F-8AFB-0853D7C7E8E8}.Release|Any CPU.Build.0 = Release|Any CPU - {08101335-86D9-4D95-BCC7-07C2D0A9D7CA}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {08101335-86D9-4D95-BCC7-07C2D0A9D7CA}.Debug|Any CPU.Build.0 = Debug|Any CPU - {08101335-86D9-4D95-BCC7-07C2D0A9D7CA}.Release|Any CPU.ActiveCfg = Release|Any CPU - {08101335-86D9-4D95-BCC7-07C2D0A9D7CA}.Release|Any CPU.Build.0 = Release|Any CPU - EndGlobalSection -EndGlobal + +Microsoft Visual Studio Solution File, Format Version 12.00 +# Visual Studio Version 17 +VisualStudioVersion = 17.0.31903.59 +MinimumVisualStudioVersion = 10.0.40219.1 +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SeedExamples", "SeedExamples\SeedExamples.csproj", "{8802792F-2130-48C9-90CC-1A0A5DC92CC6}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SeedExamples.Test", "SeedExamples.Test\SeedExamples.Test.csproj", "{B7CF8A3A-EEBF-4C33-99D0-DF890B857F56}" +EndProject +Global + GlobalSection(SolutionConfigurationPlatforms) = preSolution + Debug|Any CPU = Debug|Any CPU + Release|Any CPU = Release|Any CPU + EndGlobalSection + GlobalSection(SolutionProperties) = preSolution + HideSolutionNode = FALSE + EndGlobalSection + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {8802792F-2130-48C9-90CC-1A0A5DC92CC6}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {8802792F-2130-48C9-90CC-1A0A5DC92CC6}.Debug|Any CPU.Build.0 = Debug|Any CPU + {8802792F-2130-48C9-90CC-1A0A5DC92CC6}.Release|Any CPU.ActiveCfg = Release|Any CPU + {8802792F-2130-48C9-90CC-1A0A5DC92CC6}.Release|Any CPU.Build.0 = Release|Any CPU + {B7CF8A3A-EEBF-4C33-99D0-DF890B857F56}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {B7CF8A3A-EEBF-4C33-99D0-DF890B857F56}.Debug|Any CPU.Build.0 = Debug|Any CPU + {B7CF8A3A-EEBF-4C33-99D0-DF890B857F56}.Release|Any CPU.ActiveCfg = Release|Any CPU + {B7CF8A3A-EEBF-4C33-99D0-DF890B857F56}.Release|Any CPU.Build.0 = Release|Any CPU + EndGlobalSection +EndGlobal diff --git a/seed/csharp-model/exhaustive/src/SeedExhaustive.sln b/seed/csharp-model/exhaustive/src/SeedExhaustive.sln index 0476223b761..3183ea69af8 100644 --- a/seed/csharp-model/exhaustive/src/SeedExhaustive.sln +++ b/seed/csharp-model/exhaustive/src/SeedExhaustive.sln @@ -1,28 +1,28 @@ - -Microsoft Visual Studio Solution File, Format Version 12.00 -# Visual Studio Version 17 -VisualStudioVersion = 17.0.31903.59 -MinimumVisualStudioVersion = 10.0.40219.1 -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SeedExhaustive", "SeedExhaustive\SeedExhaustive.csproj", "{7A15C171-7CAC-4B6B-B360-C403A46EAC2B}" -EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SeedExhaustive.Test", "SeedExhaustive.Test\SeedExhaustive.Test.csproj", "{A072C902-9A9A-4235-87FA-D5F980E5FA06}" -EndProject -Global - GlobalSection(SolutionConfigurationPlatforms) = preSolution - Debug|Any CPU = Debug|Any CPU - Release|Any CPU = Release|Any CPU - EndGlobalSection - GlobalSection(SolutionProperties) = preSolution - HideSolutionNode = FALSE - EndGlobalSection - GlobalSection(ProjectConfigurationPlatforms) = postSolution - {7A15C171-7CAC-4B6B-B360-C403A46EAC2B}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {7A15C171-7CAC-4B6B-B360-C403A46EAC2B}.Debug|Any CPU.Build.0 = Debug|Any CPU - {7A15C171-7CAC-4B6B-B360-C403A46EAC2B}.Release|Any CPU.ActiveCfg = Release|Any CPU - {7A15C171-7CAC-4B6B-B360-C403A46EAC2B}.Release|Any CPU.Build.0 = Release|Any CPU - {A072C902-9A9A-4235-87FA-D5F980E5FA06}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {A072C902-9A9A-4235-87FA-D5F980E5FA06}.Debug|Any CPU.Build.0 = Debug|Any CPU - {A072C902-9A9A-4235-87FA-D5F980E5FA06}.Release|Any CPU.ActiveCfg = Release|Any CPU - {A072C902-9A9A-4235-87FA-D5F980E5FA06}.Release|Any CPU.Build.0 = Release|Any CPU - EndGlobalSection -EndGlobal + +Microsoft Visual Studio Solution File, Format Version 12.00 +# Visual Studio Version 17 +VisualStudioVersion = 17.0.31903.59 +MinimumVisualStudioVersion = 10.0.40219.1 +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SeedExhaustive", "SeedExhaustive\SeedExhaustive.csproj", "{8290D65B-C1DF-4D82-8E42-459CFB6A51E3}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SeedExhaustive.Test", "SeedExhaustive.Test\SeedExhaustive.Test.csproj", "{754AC8F3-6DA8-41FD-B7CD-2B46EE032E5D}" +EndProject +Global + GlobalSection(SolutionConfigurationPlatforms) = preSolution + Debug|Any CPU = Debug|Any CPU + Release|Any CPU = Release|Any CPU + EndGlobalSection + GlobalSection(SolutionProperties) = preSolution + HideSolutionNode = FALSE + EndGlobalSection + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {8290D65B-C1DF-4D82-8E42-459CFB6A51E3}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {8290D65B-C1DF-4D82-8E42-459CFB6A51E3}.Debug|Any CPU.Build.0 = Debug|Any CPU + {8290D65B-C1DF-4D82-8E42-459CFB6A51E3}.Release|Any CPU.ActiveCfg = Release|Any CPU + {8290D65B-C1DF-4D82-8E42-459CFB6A51E3}.Release|Any CPU.Build.0 = Release|Any CPU + {754AC8F3-6DA8-41FD-B7CD-2B46EE032E5D}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {754AC8F3-6DA8-41FD-B7CD-2B46EE032E5D}.Debug|Any CPU.Build.0 = Debug|Any CPU + {754AC8F3-6DA8-41FD-B7CD-2B46EE032E5D}.Release|Any CPU.ActiveCfg = Release|Any CPU + {754AC8F3-6DA8-41FD-B7CD-2B46EE032E5D}.Release|Any CPU.Build.0 = Release|Any CPU + EndGlobalSection +EndGlobal diff --git a/seed/csharp-model/extends/src/SeedExtends.sln b/seed/csharp-model/extends/src/SeedExtends.sln index a0908487199..20a8b181c36 100644 --- a/seed/csharp-model/extends/src/SeedExtends.sln +++ b/seed/csharp-model/extends/src/SeedExtends.sln @@ -1,28 +1,28 @@ - -Microsoft Visual Studio Solution File, Format Version 12.00 -# Visual Studio Version 17 -VisualStudioVersion = 17.0.31903.59 -MinimumVisualStudioVersion = 10.0.40219.1 -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SeedExtends", "SeedExtends\SeedExtends.csproj", "{185687E5-D206-43B3-9CF7-655858719241}" -EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SeedExtends.Test", "SeedExtends.Test\SeedExtends.Test.csproj", "{84B9D328-EF70-4DD8-B38D-26B5C5F01B17}" -EndProject -Global - GlobalSection(SolutionConfigurationPlatforms) = preSolution - Debug|Any CPU = Debug|Any CPU - Release|Any CPU = Release|Any CPU - EndGlobalSection - GlobalSection(SolutionProperties) = preSolution - HideSolutionNode = FALSE - EndGlobalSection - GlobalSection(ProjectConfigurationPlatforms) = postSolution - {185687E5-D206-43B3-9CF7-655858719241}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {185687E5-D206-43B3-9CF7-655858719241}.Debug|Any CPU.Build.0 = Debug|Any CPU - {185687E5-D206-43B3-9CF7-655858719241}.Release|Any CPU.ActiveCfg = Release|Any CPU - {185687E5-D206-43B3-9CF7-655858719241}.Release|Any CPU.Build.0 = Release|Any CPU - {84B9D328-EF70-4DD8-B38D-26B5C5F01B17}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {84B9D328-EF70-4DD8-B38D-26B5C5F01B17}.Debug|Any CPU.Build.0 = Debug|Any CPU - {84B9D328-EF70-4DD8-B38D-26B5C5F01B17}.Release|Any CPU.ActiveCfg = Release|Any CPU - {84B9D328-EF70-4DD8-B38D-26B5C5F01B17}.Release|Any CPU.Build.0 = Release|Any CPU - EndGlobalSection -EndGlobal + +Microsoft Visual Studio Solution File, Format Version 12.00 +# Visual Studio Version 17 +VisualStudioVersion = 17.0.31903.59 +MinimumVisualStudioVersion = 10.0.40219.1 +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SeedExtends", "SeedExtends\SeedExtends.csproj", "{796C437A-651B-47FC-959F-3E4A609E12AC}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SeedExtends.Test", "SeedExtends.Test\SeedExtends.Test.csproj", "{B4D309A3-0AA7-4EBD-BDD3-8268E5382B1C}" +EndProject +Global + GlobalSection(SolutionConfigurationPlatforms) = preSolution + Debug|Any CPU = Debug|Any CPU + Release|Any CPU = Release|Any CPU + EndGlobalSection + GlobalSection(SolutionProperties) = preSolution + HideSolutionNode = FALSE + EndGlobalSection + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {796C437A-651B-47FC-959F-3E4A609E12AC}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {796C437A-651B-47FC-959F-3E4A609E12AC}.Debug|Any CPU.Build.0 = Debug|Any CPU + {796C437A-651B-47FC-959F-3E4A609E12AC}.Release|Any CPU.ActiveCfg = Release|Any CPU + {796C437A-651B-47FC-959F-3E4A609E12AC}.Release|Any CPU.Build.0 = Release|Any CPU + {B4D309A3-0AA7-4EBD-BDD3-8268E5382B1C}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {B4D309A3-0AA7-4EBD-BDD3-8268E5382B1C}.Debug|Any CPU.Build.0 = Debug|Any CPU + {B4D309A3-0AA7-4EBD-BDD3-8268E5382B1C}.Release|Any CPU.ActiveCfg = Release|Any CPU + {B4D309A3-0AA7-4EBD-BDD3-8268E5382B1C}.Release|Any CPU.Build.0 = Release|Any CPU + EndGlobalSection +EndGlobal diff --git a/seed/csharp-model/extra-properties/src/SeedExtraProperties.sln b/seed/csharp-model/extra-properties/src/SeedExtraProperties.sln index c300a628c95..d15a66cde38 100644 --- a/seed/csharp-model/extra-properties/src/SeedExtraProperties.sln +++ b/seed/csharp-model/extra-properties/src/SeedExtraProperties.sln @@ -1,28 +1,28 @@ - -Microsoft Visual Studio Solution File, Format Version 12.00 -# Visual Studio Version 17 -VisualStudioVersion = 17.0.31903.59 -MinimumVisualStudioVersion = 10.0.40219.1 -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SeedExtraProperties", "SeedExtraProperties\SeedExtraProperties.csproj", "{F766A520-C4E5-462C-A97A-6A4AA8BBBC5D}" -EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SeedExtraProperties.Test", "SeedExtraProperties.Test\SeedExtraProperties.Test.csproj", "{39C952C5-5798-462C-AA03-B8884E0D0667}" -EndProject -Global - GlobalSection(SolutionConfigurationPlatforms) = preSolution - Debug|Any CPU = Debug|Any CPU - Release|Any CPU = Release|Any CPU - EndGlobalSection - GlobalSection(SolutionProperties) = preSolution - HideSolutionNode = FALSE - EndGlobalSection - GlobalSection(ProjectConfigurationPlatforms) = postSolution - {F766A520-C4E5-462C-A97A-6A4AA8BBBC5D}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {F766A520-C4E5-462C-A97A-6A4AA8BBBC5D}.Debug|Any CPU.Build.0 = Debug|Any CPU - {F766A520-C4E5-462C-A97A-6A4AA8BBBC5D}.Release|Any CPU.ActiveCfg = Release|Any CPU - {F766A520-C4E5-462C-A97A-6A4AA8BBBC5D}.Release|Any CPU.Build.0 = Release|Any CPU - {39C952C5-5798-462C-AA03-B8884E0D0667}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {39C952C5-5798-462C-AA03-B8884E0D0667}.Debug|Any CPU.Build.0 = Debug|Any CPU - {39C952C5-5798-462C-AA03-B8884E0D0667}.Release|Any CPU.ActiveCfg = Release|Any CPU - {39C952C5-5798-462C-AA03-B8884E0D0667}.Release|Any CPU.Build.0 = Release|Any CPU - EndGlobalSection -EndGlobal + +Microsoft Visual Studio Solution File, Format Version 12.00 +# Visual Studio Version 17 +VisualStudioVersion = 17.0.31903.59 +MinimumVisualStudioVersion = 10.0.40219.1 +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SeedExtraProperties", "SeedExtraProperties\SeedExtraProperties.csproj", "{0BEB86B9-53CC-400D-841E-4E79A548B8EE}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SeedExtraProperties.Test", "SeedExtraProperties.Test\SeedExtraProperties.Test.csproj", "{F5577C1F-8BAB-45BB-BBBB-4AE177AAD49C}" +EndProject +Global + GlobalSection(SolutionConfigurationPlatforms) = preSolution + Debug|Any CPU = Debug|Any CPU + Release|Any CPU = Release|Any CPU + EndGlobalSection + GlobalSection(SolutionProperties) = preSolution + HideSolutionNode = FALSE + EndGlobalSection + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {0BEB86B9-53CC-400D-841E-4E79A548B8EE}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {0BEB86B9-53CC-400D-841E-4E79A548B8EE}.Debug|Any CPU.Build.0 = Debug|Any CPU + {0BEB86B9-53CC-400D-841E-4E79A548B8EE}.Release|Any CPU.ActiveCfg = Release|Any CPU + {0BEB86B9-53CC-400D-841E-4E79A548B8EE}.Release|Any CPU.Build.0 = Release|Any CPU + {F5577C1F-8BAB-45BB-BBBB-4AE177AAD49C}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {F5577C1F-8BAB-45BB-BBBB-4AE177AAD49C}.Debug|Any CPU.Build.0 = Debug|Any CPU + {F5577C1F-8BAB-45BB-BBBB-4AE177AAD49C}.Release|Any CPU.ActiveCfg = Release|Any CPU + {F5577C1F-8BAB-45BB-BBBB-4AE177AAD49C}.Release|Any CPU.Build.0 = Release|Any CPU + EndGlobalSection +EndGlobal diff --git a/seed/csharp-model/file-download/src/SeedFileDownload.sln b/seed/csharp-model/file-download/src/SeedFileDownload.sln index 9ef2340c822..f783b272834 100644 --- a/seed/csharp-model/file-download/src/SeedFileDownload.sln +++ b/seed/csharp-model/file-download/src/SeedFileDownload.sln @@ -1,28 +1,28 @@ - -Microsoft Visual Studio Solution File, Format Version 12.00 -# Visual Studio Version 17 -VisualStudioVersion = 17.0.31903.59 -MinimumVisualStudioVersion = 10.0.40219.1 -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SeedFileDownload", "SeedFileDownload\SeedFileDownload.csproj", "{EC496168-D9E3-49D2-BFF6-8095AD36AC00}" -EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SeedFileDownload.Test", "SeedFileDownload.Test\SeedFileDownload.Test.csproj", "{F962DC9D-20E0-44A6-B964-AF14882A2F0F}" -EndProject -Global - GlobalSection(SolutionConfigurationPlatforms) = preSolution - Debug|Any CPU = Debug|Any CPU - Release|Any CPU = Release|Any CPU - EndGlobalSection - GlobalSection(SolutionProperties) = preSolution - HideSolutionNode = FALSE - EndGlobalSection - GlobalSection(ProjectConfigurationPlatforms) = postSolution - {EC496168-D9E3-49D2-BFF6-8095AD36AC00}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {EC496168-D9E3-49D2-BFF6-8095AD36AC00}.Debug|Any CPU.Build.0 = Debug|Any CPU - {EC496168-D9E3-49D2-BFF6-8095AD36AC00}.Release|Any CPU.ActiveCfg = Release|Any CPU - {EC496168-D9E3-49D2-BFF6-8095AD36AC00}.Release|Any CPU.Build.0 = Release|Any CPU - {F962DC9D-20E0-44A6-B964-AF14882A2F0F}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {F962DC9D-20E0-44A6-B964-AF14882A2F0F}.Debug|Any CPU.Build.0 = Debug|Any CPU - {F962DC9D-20E0-44A6-B964-AF14882A2F0F}.Release|Any CPU.ActiveCfg = Release|Any CPU - {F962DC9D-20E0-44A6-B964-AF14882A2F0F}.Release|Any CPU.Build.0 = Release|Any CPU - EndGlobalSection -EndGlobal + +Microsoft Visual Studio Solution File, Format Version 12.00 +# Visual Studio Version 17 +VisualStudioVersion = 17.0.31903.59 +MinimumVisualStudioVersion = 10.0.40219.1 +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SeedFileDownload", "SeedFileDownload\SeedFileDownload.csproj", "{0D10A66D-D6BE-4391-B825-9E66DA614CBF}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SeedFileDownload.Test", "SeedFileDownload.Test\SeedFileDownload.Test.csproj", "{C2368B19-E8F1-4E86-9072-8DA0E57B12CF}" +EndProject +Global + GlobalSection(SolutionConfigurationPlatforms) = preSolution + Debug|Any CPU = Debug|Any CPU + Release|Any CPU = Release|Any CPU + EndGlobalSection + GlobalSection(SolutionProperties) = preSolution + HideSolutionNode = FALSE + EndGlobalSection + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {0D10A66D-D6BE-4391-B825-9E66DA614CBF}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {0D10A66D-D6BE-4391-B825-9E66DA614CBF}.Debug|Any CPU.Build.0 = Debug|Any CPU + {0D10A66D-D6BE-4391-B825-9E66DA614CBF}.Release|Any CPU.ActiveCfg = Release|Any CPU + {0D10A66D-D6BE-4391-B825-9E66DA614CBF}.Release|Any CPU.Build.0 = Release|Any CPU + {C2368B19-E8F1-4E86-9072-8DA0E57B12CF}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {C2368B19-E8F1-4E86-9072-8DA0E57B12CF}.Debug|Any CPU.Build.0 = Debug|Any CPU + {C2368B19-E8F1-4E86-9072-8DA0E57B12CF}.Release|Any CPU.ActiveCfg = Release|Any CPU + {C2368B19-E8F1-4E86-9072-8DA0E57B12CF}.Release|Any CPU.Build.0 = Release|Any CPU + EndGlobalSection +EndGlobal diff --git a/seed/csharp-model/file-upload/src/SeedFileUpload.sln b/seed/csharp-model/file-upload/src/SeedFileUpload.sln index 07ea7308566..cf74ab6d371 100644 --- a/seed/csharp-model/file-upload/src/SeedFileUpload.sln +++ b/seed/csharp-model/file-upload/src/SeedFileUpload.sln @@ -1,28 +1,28 @@ - -Microsoft Visual Studio Solution File, Format Version 12.00 -# Visual Studio Version 17 -VisualStudioVersion = 17.0.31903.59 -MinimumVisualStudioVersion = 10.0.40219.1 -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SeedFileUpload", "SeedFileUpload\SeedFileUpload.csproj", "{6990DE37-A5FD-4356-A00C-74FB6F7D68EE}" -EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SeedFileUpload.Test", "SeedFileUpload.Test\SeedFileUpload.Test.csproj", "{19818722-5353-43EA-932A-704714BB439B}" -EndProject -Global - GlobalSection(SolutionConfigurationPlatforms) = preSolution - Debug|Any CPU = Debug|Any CPU - Release|Any CPU = Release|Any CPU - EndGlobalSection - GlobalSection(SolutionProperties) = preSolution - HideSolutionNode = FALSE - EndGlobalSection - GlobalSection(ProjectConfigurationPlatforms) = postSolution - {6990DE37-A5FD-4356-A00C-74FB6F7D68EE}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {6990DE37-A5FD-4356-A00C-74FB6F7D68EE}.Debug|Any CPU.Build.0 = Debug|Any CPU - {6990DE37-A5FD-4356-A00C-74FB6F7D68EE}.Release|Any CPU.ActiveCfg = Release|Any CPU - {6990DE37-A5FD-4356-A00C-74FB6F7D68EE}.Release|Any CPU.Build.0 = Release|Any CPU - {19818722-5353-43EA-932A-704714BB439B}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {19818722-5353-43EA-932A-704714BB439B}.Debug|Any CPU.Build.0 = Debug|Any CPU - {19818722-5353-43EA-932A-704714BB439B}.Release|Any CPU.ActiveCfg = Release|Any CPU - {19818722-5353-43EA-932A-704714BB439B}.Release|Any CPU.Build.0 = Release|Any CPU - EndGlobalSection -EndGlobal + +Microsoft Visual Studio Solution File, Format Version 12.00 +# Visual Studio Version 17 +VisualStudioVersion = 17.0.31903.59 +MinimumVisualStudioVersion = 10.0.40219.1 +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SeedFileUpload", "SeedFileUpload\SeedFileUpload.csproj", "{D6C8BE84-36F0-45E4-84BA-96CEC136A58A}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SeedFileUpload.Test", "SeedFileUpload.Test\SeedFileUpload.Test.csproj", "{1A9AEFF2-6017-4F17-B2E5-3EC2AB59961B}" +EndProject +Global + GlobalSection(SolutionConfigurationPlatforms) = preSolution + Debug|Any CPU = Debug|Any CPU + Release|Any CPU = Release|Any CPU + EndGlobalSection + GlobalSection(SolutionProperties) = preSolution + HideSolutionNode = FALSE + EndGlobalSection + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {D6C8BE84-36F0-45E4-84BA-96CEC136A58A}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {D6C8BE84-36F0-45E4-84BA-96CEC136A58A}.Debug|Any CPU.Build.0 = Debug|Any CPU + {D6C8BE84-36F0-45E4-84BA-96CEC136A58A}.Release|Any CPU.ActiveCfg = Release|Any CPU + {D6C8BE84-36F0-45E4-84BA-96CEC136A58A}.Release|Any CPU.Build.0 = Release|Any CPU + {1A9AEFF2-6017-4F17-B2E5-3EC2AB59961B}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {1A9AEFF2-6017-4F17-B2E5-3EC2AB59961B}.Debug|Any CPU.Build.0 = Debug|Any CPU + {1A9AEFF2-6017-4F17-B2E5-3EC2AB59961B}.Release|Any CPU.ActiveCfg = Release|Any CPU + {1A9AEFF2-6017-4F17-B2E5-3EC2AB59961B}.Release|Any CPU.Build.0 = Release|Any CPU + EndGlobalSection +EndGlobal diff --git a/seed/csharp-model/folders/src/SeedApi.sln b/seed/csharp-model/folders/src/SeedApi.sln index 178600ead4a..e1341e5f200 100644 --- a/seed/csharp-model/folders/src/SeedApi.sln +++ b/seed/csharp-model/folders/src/SeedApi.sln @@ -1,28 +1,28 @@ - -Microsoft Visual Studio Solution File, Format Version 12.00 -# Visual Studio Version 17 -VisualStudioVersion = 17.0.31903.59 -MinimumVisualStudioVersion = 10.0.40219.1 -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SeedApi", "SeedApi\SeedApi.csproj", "{E31B3462-42C0-4A79-B72C-E26AAD5E4494}" -EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SeedApi.Test", "SeedApi.Test\SeedApi.Test.csproj", "{62F52778-4D28-42F5-8505-C9C3E7DC4986}" -EndProject -Global - GlobalSection(SolutionConfigurationPlatforms) = preSolution - Debug|Any CPU = Debug|Any CPU - Release|Any CPU = Release|Any CPU - EndGlobalSection - GlobalSection(SolutionProperties) = preSolution - HideSolutionNode = FALSE - EndGlobalSection - GlobalSection(ProjectConfigurationPlatforms) = postSolution - {E31B3462-42C0-4A79-B72C-E26AAD5E4494}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {E31B3462-42C0-4A79-B72C-E26AAD5E4494}.Debug|Any CPU.Build.0 = Debug|Any CPU - {E31B3462-42C0-4A79-B72C-E26AAD5E4494}.Release|Any CPU.ActiveCfg = Release|Any CPU - {E31B3462-42C0-4A79-B72C-E26AAD5E4494}.Release|Any CPU.Build.0 = Release|Any CPU - {62F52778-4D28-42F5-8505-C9C3E7DC4986}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {62F52778-4D28-42F5-8505-C9C3E7DC4986}.Debug|Any CPU.Build.0 = Debug|Any CPU - {62F52778-4D28-42F5-8505-C9C3E7DC4986}.Release|Any CPU.ActiveCfg = Release|Any CPU - {62F52778-4D28-42F5-8505-C9C3E7DC4986}.Release|Any CPU.Build.0 = Release|Any CPU - EndGlobalSection -EndGlobal + +Microsoft Visual Studio Solution File, Format Version 12.00 +# Visual Studio Version 17 +VisualStudioVersion = 17.0.31903.59 +MinimumVisualStudioVersion = 10.0.40219.1 +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SeedApi", "SeedApi\SeedApi.csproj", "{887417B8-CF3D-472B-B457-2CBFAF4308B3}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SeedApi.Test", "SeedApi.Test\SeedApi.Test.csproj", "{C7BAD669-EA47-410A-B40A-403566780496}" +EndProject +Global + GlobalSection(SolutionConfigurationPlatforms) = preSolution + Debug|Any CPU = Debug|Any CPU + Release|Any CPU = Release|Any CPU + EndGlobalSection + GlobalSection(SolutionProperties) = preSolution + HideSolutionNode = FALSE + EndGlobalSection + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {887417B8-CF3D-472B-B457-2CBFAF4308B3}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {887417B8-CF3D-472B-B457-2CBFAF4308B3}.Debug|Any CPU.Build.0 = Debug|Any CPU + {887417B8-CF3D-472B-B457-2CBFAF4308B3}.Release|Any CPU.ActiveCfg = Release|Any CPU + {887417B8-CF3D-472B-B457-2CBFAF4308B3}.Release|Any CPU.Build.0 = Release|Any CPU + {C7BAD669-EA47-410A-B40A-403566780496}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {C7BAD669-EA47-410A-B40A-403566780496}.Debug|Any CPU.Build.0 = Debug|Any CPU + {C7BAD669-EA47-410A-B40A-403566780496}.Release|Any CPU.ActiveCfg = Release|Any CPU + {C7BAD669-EA47-410A-B40A-403566780496}.Release|Any CPU.Build.0 = Release|Any CPU + EndGlobalSection +EndGlobal diff --git a/seed/csharp-model/grpc-proto-exhaustive/no-custom-config/.github/workflows/ci.yml b/seed/csharp-model/grpc-proto-exhaustive/no-custom-config/.github/workflows/ci.yml new file mode 100644 index 00000000000..bc4fa1a98cb --- /dev/null +++ b/seed/csharp-model/grpc-proto-exhaustive/no-custom-config/.github/workflows/ci.yml @@ -0,0 +1,69 @@ +name: ci + +on: [push] + +jobs: + compile: + runs-on: ubuntu-latest + + steps: + - name: Checkout repo + uses: actions/checkout@v3 + + - uses: actions/checkout@master + + - name: Setup .NET + uses: actions/setup-dotnet@v1 + with: + dotnet-version: 8.x + + - name: Install tools + run: | + dotnet tool restore + + - name: Build Release + run: dotnet build src -c Release /p:ContinuousIntegrationBuild=true + + unit-tests: + runs-on: ubuntu-latest + + steps: + - name: Checkout repo + uses: actions/checkout@v3 + + - uses: actions/checkout@master + + - name: Setup .NET + uses: actions/setup-dotnet@v1 + with: + dotnet-version: 8.x + + - name: Install tools + run: | + dotnet tool restore + + - name: Run Tests + run: | + dotnet test src + + + publish: + needs: [compile] + if: github.event_name == 'push' && contains(github.ref, 'refs/tags/') + runs-on: ubuntu-latest + + steps: + - name: Checkout repo + uses: actions/checkout@v3 + + - name: Setup .NET + uses: actions/setup-dotnet@v1 + with: + dotnet-version: 8.x + + - name: Publish + env: + NUGET_API_KEY: ${{ secrets.NUGET_API_TOKEN }} + run: | + dotnet pack src -c Release + dotnet nuget push src/SeedApi/bin/Release/*.nupkg --api-key $NUGET_API_KEY --source "nuget.org" diff --git a/seed/csharp-model/grpc-proto-exhaustive/no-custom-config/.gitignore b/seed/csharp-model/grpc-proto-exhaustive/no-custom-config/.gitignore new file mode 100644 index 00000000000..11014f2b33d --- /dev/null +++ b/seed/csharp-model/grpc-proto-exhaustive/no-custom-config/.gitignore @@ -0,0 +1,484 @@ +## Ignore Visual Studio temporary files, build results, and +## files generated by popular Visual Studio add-ons. + +## This is based on `dotnet new gitignore` and customized by Fern + +# dotenv files +.env + +# User-specific files +*.rsuser +*.suo +*.user +*.userosscache +*.sln.docstates + +# User-specific files (MonoDevelop/Xamarin Studio) +*.userprefs + +# Mono auto generated files +mono_crash.* + +# Build results +[Dd]ebug/ +[Dd]ebugPublic/ +# [Rr]elease/ (Ignored by Fern) +# [Rr]eleases/ (Ignored by Fern) +x64/ +x86/ +[Ww][Ii][Nn]32/ +[Aa][Rr][Mm]/ +[Aa][Rr][Mm]64/ +bld/ +[Bb]in/ +[Oo]bj/ +# [Ll]og/ (Ignored by Fern) +# [Ll]ogs/ (Ignored by Fern) + +# Visual Studio 2015/2017 cache/options directory +.vs/ +# Uncomment if you have tasks that create the project's static files in wwwroot +#wwwroot/ + +# Visual Studio 2017 auto generated files +Generated\ Files/ + +# MSTest test Results +[Tt]est[Rr]esult*/ +[Bb]uild[Ll]og.* + +# NUnit +*.VisualState.xml +TestResult.xml +nunit-*.xml + +# Build Results of an ATL Project +[Dd]ebugPS/ +[Rr]eleasePS/ +dlldata.c + +# Benchmark Results +BenchmarkDotNet.Artifacts/ + +# .NET +project.lock.json +project.fragment.lock.json +artifacts/ + +# Tye +.tye/ + +# ASP.NET Scaffolding +ScaffoldingReadMe.txt + +# StyleCop +StyleCopReport.xml + +# Files built by Visual Studio +*_i.c +*_p.c +*_h.h +*.ilk +*.meta +*.obj +*.iobj +*.pch +*.pdb +*.ipdb +*.pgc +*.pgd +*.rsp +*.sbr +*.tlb +*.tli +*.tlh +*.tmp +*.tmp_proj +*_wpftmp.csproj +*.log +*.tlog +*.vspscc +*.vssscc +.builds +*.pidb +*.svclog +*.scc + +# Chutzpah Test files +_Chutzpah* + +# Visual C++ cache files +ipch/ +*.aps +*.ncb +*.opendb +*.opensdf +*.sdf +*.cachefile +*.VC.db +*.VC.VC.opendb + +# Visual Studio profiler +*.psess +*.vsp +*.vspx +*.sap + +# Visual Studio Trace Files +*.e2e + +# TFS 2012 Local Workspace +$tf/ + +# Guidance Automation Toolkit +*.gpState + +# ReSharper is a .NET coding add-in +_ReSharper*/ +*.[Rr]e[Ss]harper +*.DotSettings.user + +# TeamCity is a build add-in +_TeamCity* + +# DotCover is a Code Coverage Tool +*.dotCover + +# AxoCover is a Code Coverage Tool +.axoCover/* +!.axoCover/settings.json + +# Coverlet is a free, cross platform Code Coverage Tool +coverage*.json +coverage*.xml +coverage*.info + +# Visual Studio code coverage results +*.coverage +*.coveragexml + +# NCrunch +_NCrunch_* +.*crunch*.local.xml +nCrunchTemp_* + +# MightyMoose +*.mm.* +AutoTest.Net/ + +# Web workbench (sass) +.sass-cache/ + +# Installshield output folder +[Ee]xpress/ + +# DocProject is a documentation generator add-in +DocProject/buildhelp/ +DocProject/Help/*.HxT +DocProject/Help/*.HxC +DocProject/Help/*.hhc +DocProject/Help/*.hhk +DocProject/Help/*.hhp +DocProject/Help/Html2 +DocProject/Help/html + +# Click-Once directory +publish/ + +# Publish Web Output +*.[Pp]ublish.xml +*.azurePubxml +# Note: Comment the next line if you want to checkin your web deploy settings, +# but database connection strings (with potential passwords) will be unencrypted +*.pubxml +*.publishproj + +# Microsoft Azure Web App publish settings. Comment the next line if you want to +# checkin your Azure Web App publish settings, but sensitive information contained +# in these scripts will be unencrypted +PublishScripts/ + +# NuGet Packages +*.nupkg +# NuGet Symbol Packages +*.snupkg +# The packages folder can be ignored because of Package Restore +**/[Pp]ackages/* +# except build/, which is used as an MSBuild target. +!**/[Pp]ackages/build/ +# Uncomment if necessary however generally it will be regenerated when needed +#!**/[Pp]ackages/repositories.config +# NuGet v3's project.json files produces more ignorable files +*.nuget.props +*.nuget.targets + +# Microsoft Azure Build Output +csx/ +*.build.csdef + +# Microsoft Azure Emulator +ecf/ +rcf/ + +# Windows Store app package directories and files +AppPackages/ +BundleArtifacts/ +Package.StoreAssociation.xml +_pkginfo.txt +*.appx +*.appxbundle +*.appxupload + +# Visual Studio cache files +# files ending in .cache can be ignored +*.[Cc]ache +# but keep track of directories ending in .cache +!?*.[Cc]ache/ + +# Others +ClientBin/ +~$* +*~ +*.dbmdl +*.dbproj.schemaview +*.jfm +*.pfx +*.publishsettings +orleans.codegen.cs + +# Including strong name files can present a security risk +# (https://github.com/github/gitignore/pull/2483#issue-259490424) +#*.snk + +# Since there are multiple workflows, uncomment next line to ignore bower_components +# (https://github.com/github/gitignore/pull/1529#issuecomment-104372622) +#bower_components/ + +# RIA/Silverlight projects +Generated_Code/ + +# Backup & report files from converting an old project file +# to a newer Visual Studio version. Backup files are not needed, +# because we have git ;-) +_UpgradeReport_Files/ +Backup*/ +UpgradeLog*.XML +UpgradeLog*.htm +ServiceFabricBackup/ +*.rptproj.bak + +# SQL Server files +*.mdf +*.ldf +*.ndf + +# Business Intelligence projects +*.rdl.data +*.bim.layout +*.bim_*.settings +*.rptproj.rsuser +*- [Bb]ackup.rdl +*- [Bb]ackup ([0-9]).rdl +*- [Bb]ackup ([0-9][0-9]).rdl + +# Microsoft Fakes +FakesAssemblies/ + +# GhostDoc plugin setting file +*.GhostDoc.xml + +# Node.js Tools for Visual Studio +.ntvs_analysis.dat +node_modules/ + +# Visual Studio 6 build log +*.plg + +# Visual Studio 6 workspace options file +*.opt + +# Visual Studio 6 auto-generated workspace file (contains which files were open etc.) +*.vbw + +# Visual Studio 6 auto-generated project file (contains which files were open etc.) +*.vbp + +# Visual Studio 6 workspace and project file (working project files containing files to include in project) +*.dsw +*.dsp + +# Visual Studio 6 technical files +*.ncb +*.aps + +# Visual Studio LightSwitch build output +**/*.HTMLClient/GeneratedArtifacts +**/*.DesktopClient/GeneratedArtifacts +**/*.DesktopClient/ModelManifest.xml +**/*.Server/GeneratedArtifacts +**/*.Server/ModelManifest.xml +_Pvt_Extensions + +# Paket dependency manager +.paket/paket.exe +paket-files/ + +# FAKE - F# Make +.fake/ + +# CodeRush personal settings +.cr/personal + +# Python Tools for Visual Studio (PTVS) +__pycache__/ +*.pyc + +# Cake - Uncomment if you are using it +# tools/** +# !tools/packages.config + +# Tabs Studio +*.tss + +# Telerik's JustMock configuration file +*.jmconfig + +# BizTalk build output +*.btp.cs +*.btm.cs +*.odx.cs +*.xsd.cs + +# OpenCover UI analysis results +OpenCover/ + +# Azure Stream Analytics local run output +ASALocalRun/ + +# MSBuild Binary and Structured Log +*.binlog + +# NVidia Nsight GPU debugger configuration file +*.nvuser + +# MFractors (Xamarin productivity tool) working folder +.mfractor/ + +# Local History for Visual Studio +.localhistory/ + +# Visual Studio History (VSHistory) files +.vshistory/ + +# BeatPulse healthcheck temp database +healthchecksdb + +# Backup folder for Package Reference Convert tool in Visual Studio 2017 +MigrationBackup/ + +# Ionide (cross platform F# VS Code tools) working folder +.ionide/ + +# Fody - auto-generated XML schema +FodyWeavers.xsd + +# VS Code files for those working on multiple tools +.vscode/* +!.vscode/settings.json +!.vscode/tasks.json +!.vscode/launch.json +!.vscode/extensions.json +*.code-workspace + +# Local History for Visual Studio Code +.history/ + +# Windows Installer files from build outputs +*.cab +*.msi +*.msix +*.msm +*.msp + +# JetBrains Rider +*.sln.iml +.idea + +## +## Visual studio for Mac +## + + +# globs +Makefile.in +*.userprefs +*.usertasks +config.make +config.status +aclocal.m4 +install-sh +autom4te.cache/ +*.tar.gz +tarballs/ +test-results/ + +# Mac bundle stuff +*.dmg +*.app + +# content below from: https://github.com/github/gitignore/blob/master/Global/macOS.gitignore +# General +.DS_Store +.AppleDouble +.LSOverride + +# Icon must end with two \r +Icon + + +# Thumbnails +._* + +# Files that might appear in the root of a volume +.DocumentRevisions-V100 +.fseventsd +.Spotlight-V100 +.TemporaryItems +.Trashes +.VolumeIcon.icns +.com.apple.timemachine.donotpresent + +# Directories potentially created on remote AFP share +.AppleDB +.AppleDesktop +Network Trash Folder +Temporary Items +.apdisk + +# content below from: https://github.com/github/gitignore/blob/master/Global/Windows.gitignore +# Windows thumbnail cache files +Thumbs.db +ehthumbs.db +ehthumbs_vista.db + +# Dump file +*.stackdump + +# Folder config file +[Dd]esktop.ini + +# Recycle Bin used on file shares +$RECYCLE.BIN/ + +# Windows Installer files +*.cab +*.msi +*.msix +*.msm +*.msp + +# Windows shortcuts +*.lnk + +# Vim temporary swap files +*.swp diff --git a/seed/csharp-model/grpc-proto-exhaustive/no-custom-config/.mock/fern.config.json b/seed/csharp-model/grpc-proto-exhaustive/no-custom-config/.mock/fern.config.json new file mode 100644 index 00000000000..4c8e54ac313 --- /dev/null +++ b/seed/csharp-model/grpc-proto-exhaustive/no-custom-config/.mock/fern.config.json @@ -0,0 +1 @@ +{"organization": "fern-test", "version": "*"} \ No newline at end of file diff --git a/seed/csharp-model/grpc-proto-exhaustive/no-custom-config/.mock/generators.yml b/seed/csharp-model/grpc-proto-exhaustive/no-custom-config/.mock/generators.yml new file mode 100644 index 00000000000..972ed6d7b73 --- /dev/null +++ b/seed/csharp-model/grpc-proto-exhaustive/no-custom-config/.mock/generators.yml @@ -0,0 +1,6 @@ +api: + - proto: + root: proto + target: proto/data/v1/data.proto + overrides: overrides.yml + local-generation: true \ No newline at end of file diff --git a/seed/csharp-model/grpc-proto-exhaustive/no-custom-config/.mock/overrides.yml b/seed/csharp-model/grpc-proto-exhaustive/no-custom-config/.mock/overrides.yml new file mode 100644 index 00000000000..062b98c2ccb --- /dev/null +++ b/seed/csharp-model/grpc-proto-exhaustive/no-custom-config/.mock/overrides.yml @@ -0,0 +1,56 @@ + +paths: + /data/fetch: + get: + x-fern-request-name: FetchRequest + /data/list: + get: + x-fern-request-name: ListRequest +components: + schemas: + Metadata: + oneOf: + - type: object + additionalProperties: + $ref: '#/components/schemas/MetadataValue' + - type: object + x-fern-encoding: + proto: + type: google.protobuf.Struct + MetadataValue: + oneOf: + - type: number + format: double + - type: string + - type: boolean + x-fern-encoding: + proto: + type: google.protobuf.Value + DeleteRequest: + properties: + filter: + $ref: '#/components/schemas/Metadata' + DescribeRequest: + properties: + filter: + $ref: '#/components/schemas/Metadata' + QueryRequest: + properties: + filter: + $ref: '#/components/schemas/Metadata' + QueryColumn: + properties: + filter: + $ref: '#/components/schemas/Metadata' + ScoredColumn: + properties: + metadata: + $ref: '#/components/schemas/Metadata' + UpdateRequest: + properties: + setMetadata: + $ref: '#/components/schemas/Metadata' + Column: + properties: + metadata: + $ref: '#/components/schemas/Metadata' \ No newline at end of file diff --git a/seed/csharp-model/grpc-proto-exhaustive/no-custom-config/.mock/proto/data/v1/data.proto b/seed/csharp-model/grpc-proto-exhaustive/no-custom-config/.mock/proto/data/v1/data.proto new file mode 100644 index 00000000000..dc3b07ece42 --- /dev/null +++ b/seed/csharp-model/grpc-proto-exhaustive/no-custom-config/.mock/proto/data/v1/data.proto @@ -0,0 +1,213 @@ +syntax = "proto3"; + +package data.v1; + +import "google/protobuf/struct.proto"; +import "google/api/annotations.proto"; +import "google/api/field_behavior.proto"; + +option csharp_namespace = "Data.V1.Grpc"; +option go_package = "github.com/acme.co/data-go-grpc"; + +message IndexedData { + repeated uint32 indices = 1 [ + (google.api.field_behavior) = REQUIRED + ]; + repeated float values = 2 [ + (google.api.field_behavior) = REQUIRED + ]; +} + +message Column { + string id = 1 [ + (google.api.field_behavior) = REQUIRED + ]; + repeated float values = 2 [ + (google.api.field_behavior) = REQUIRED + ]; + google.protobuf.Struct metadata = 3; + IndexedData indexed_data = 4; +} + +message ScoredColumn { + string id = 1 [ + (google.api.field_behavior) = REQUIRED + ]; + float score = 2; + repeated float values = 3; + google.protobuf.Struct metadata = 4; + IndexedData indexed_data = 5; +} + +message UploadRequest { + repeated Column columns = 1 [ + (google.api.field_behavior) = REQUIRED + ]; + string namespace = 2; +} + +message UploadResponse { + uint32 count = 1; +} + +message DeleteRequest { + repeated string ids = 1; + bool delete_all = 2; + string namespace = 3; + google.protobuf.Struct filter = 4; +} + +message DeleteResponse {} + +message FetchRequest { + repeated string ids = 1 [ + (google.api.field_behavior) = REQUIRED + ]; + string namespace = 2; +} + +message FetchResponse { + map columns = 1; + string namespace = 2; + optional Usage usage = 3; +} + +message ListRequest { + optional string prefix = 1; + optional uint32 limit = 2; + optional string pagination_token = 3; + string namespace = 4; +} + +message Pagination { + string next = 1; +} + +message ListElement { + string id = 1; +} + +message ListResponse { + repeated ListElement columns = 1; + optional Pagination pagination = 2; + string namespace = 3; + optional Usage usage = 4; +} + +message QueryColumn { + repeated float values = 1 [ + (google.api.field_behavior) = REQUIRED + ]; + uint32 top_k = 2; + string namespace = 3; + google.protobuf.Struct filter = 4; + IndexedData indexed_data = 5; +} + +message QueryRequest { + string namespace = 1; + uint32 top_k = 2 [ + (google.api.field_behavior) = REQUIRED + ]; + google.protobuf.Struct filter = 3; + bool include_values = 4; + bool include_metadata = 5; + repeated QueryColumn queries = 6 [ + deprecated = true + ]; + repeated float column = 7; + string id = 8; + IndexedData indexed_data = 9; +} + +message QueryResult { + repeated ScoredColumn matches = 1; + string namespace = 2; +} + +message QueryResponse { + repeated QueryResult results = 1 [deprecated=true]; + repeated ScoredColumn matches = 2; + string namespace = 3; + optional Usage usage = 4; +} + +message Usage { + optional uint32 units = 1; +} + +message UpdateRequest { + string id = 1 [ + (google.api.field_behavior) = REQUIRED + ]; + repeated float values = 2; + google.protobuf.Struct set_metadata = 3; + string namespace = 4; + IndexedData indexed_data = 5; +} + +message UpdateResponse {} + +message DescribeRequest { + google.protobuf.Struct filter = 1; +} + +message NamespaceSummary { + uint32 count = 1; +} + +message DescribeResponse { + map namespaces = 1; + uint32 dimension = 2; + float fullness = 3; + uint32 total_count = 4; +} + +service DataService { + rpc Upload(UploadRequest) returns (UploadResponse) { + option (google.api.http) = { + post: "/data" + body: "*" + }; + } + + rpc Delete(DeleteRequest) returns (DeleteResponse) { + option (google.api.http) = { + post: "/data/delete" + body: "*" + }; + } + + rpc Fetch(FetchRequest) returns (FetchResponse) { + option (google.api.http) = { + get: "/data/fetch" + }; + } + + rpc List(ListRequest) returns (ListResponse) { + option (google.api.http) = { + get: "/data/list" + }; + } + + rpc Query(QueryRequest) returns (QueryResponse) { + option (google.api.http) = { + post: "/data/query" + body: "*" + }; + } + + rpc Update(UpdateRequest) returns (UpdateResponse) { + option (google.api.http) = { + post: "/data/update" + body: "*" + }; + } + + rpc Describe(DescribeRequest) returns (DescribeResponse) { + option (google.api.http) = { + post: "/data/describe" + body: "*" + }; + } +} diff --git a/seed/csharp-model/grpc-proto-exhaustive/no-custom-config/.mock/proto/google/api/annotations.proto b/seed/csharp-model/grpc-proto-exhaustive/no-custom-config/.mock/proto/google/api/annotations.proto new file mode 100644 index 00000000000..8ff42098404 --- /dev/null +++ b/seed/csharp-model/grpc-proto-exhaustive/no-custom-config/.mock/proto/google/api/annotations.proto @@ -0,0 +1,31 @@ +// Copyright 2015 Google LLC +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +syntax = "proto3"; + +package google.api; + +import "google/api/http.proto"; +import "google/protobuf/descriptor.proto"; + +option go_package = "google.golang.org/genproto/googleapis/api/annotations;annotations"; +option java_multiple_files = true; +option java_outer_classname = "AnnotationsProto"; +option java_package = "com.google.api"; +option objc_class_prefix = "GAPI"; + +extend google.protobuf.MethodOptions { + // See `HttpRule`. + HttpRule http = 72295728; +} \ No newline at end of file diff --git a/seed/csharp-model/grpc-proto-exhaustive/no-custom-config/.mock/proto/google/api/field_behavior.proto b/seed/csharp-model/grpc-proto-exhaustive/no-custom-config/.mock/proto/google/api/field_behavior.proto new file mode 100644 index 00000000000..128799c558d --- /dev/null +++ b/seed/csharp-model/grpc-proto-exhaustive/no-custom-config/.mock/proto/google/api/field_behavior.proto @@ -0,0 +1,104 @@ +// Copyright 2023 Google LLC +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +syntax = "proto3"; + +package google.api; + +import "google/protobuf/descriptor.proto"; + +option go_package = "google.golang.org/genproto/googleapis/api/annotations;annotations"; +option java_multiple_files = true; +option java_outer_classname = "FieldBehaviorProto"; +option java_package = "com.google.api"; +option objc_class_prefix = "GAPI"; + +extend google.protobuf.FieldOptions { + // A designation of a specific field behavior (required, output only, etc.) + // in protobuf messages. + // + // Examples: + // + // string name = 1 [(google.api.field_behavior) = REQUIRED]; + // State state = 1 [(google.api.field_behavior) = OUTPUT_ONLY]; + // google.protobuf.Duration ttl = 1 + // [(google.api.field_behavior) = INPUT_ONLY]; + // google.protobuf.Timestamp expire_time = 1 + // [(google.api.field_behavior) = OUTPUT_ONLY, + // (google.api.field_behavior) = IMMUTABLE]; + repeated google.api.FieldBehavior field_behavior = 1052; +} + +// An indicator of the behavior of a given field (for example, that a field +// is required in requests, or given as output but ignored as input). +// This **does not** change the behavior in protocol buffers itself; it only +// denotes the behavior and may affect how API tooling handles the field. +// +// Note: This enum **may** receive new values in the future. +enum FieldBehavior { + // Conventional default for enums. Do not use this. + FIELD_BEHAVIOR_UNSPECIFIED = 0; + + // Specifically denotes a field as optional. + // While all fields in protocol buffers are optional, this may be specified + // for emphasis if appropriate. + OPTIONAL = 1; + + // Denotes a field as required. + // This indicates that the field **must** be provided as part of the request, + // and failure to do so will cause an error (usually `INVALID_ARGUMENT`). + REQUIRED = 2; + + // Denotes a field as output only. + // This indicates that the field is provided in responses, but including the + // field in a request does nothing (the server *must* ignore it and + // *must not* throw an error as a result of the field's presence). + OUTPUT_ONLY = 3; + + // Denotes a field as input only. + // This indicates that the field is provided in requests, and the + // corresponding field is not included in output. + INPUT_ONLY = 4; + + // Denotes a field as immutable. + // This indicates that the field may be set once in a request to create a + // resource, but may not be changed thereafter. + IMMUTABLE = 5; + + // Denotes that a (repeated) field is an unordered list. + // This indicates that the service may provide the elements of the list + // in any arbitrary order, rather than the order the user originally + // provided. Additionally, the list's order may or may not be stable. + UNORDERED_LIST = 6; + + // Denotes that this field returns a non-empty default value if not set. + // This indicates that if the user provides the empty value in a request, + // a non-empty value will be returned. The user will not be aware of what + // non-empty value to expect. + NON_EMPTY_DEFAULT = 7; + + // Denotes that the field in a resource (a message annotated with + // google.api.resource) is used in the resource name to uniquely identify the + // resource. For AIP-compliant APIs, this should only be applied to the + // `name` field on the resource. + // + // This behavior should not be applied to references to other resources within + // the message. + // + // The identifier field of resources often have different field behavior + // depending on the request it is embedded in (e.g. for Create methods name + // is optional and unused, while for Update methods it is required). Instead + // of method-specific annotations, only `IDENTIFIER` is required. + IDENTIFIER = 8; +} \ No newline at end of file diff --git a/seed/csharp-model/grpc-proto-exhaustive/no-custom-config/.mock/proto/google/api/http.proto b/seed/csharp-model/grpc-proto-exhaustive/no-custom-config/.mock/proto/google/api/http.proto new file mode 100644 index 00000000000..c8392381eb9 --- /dev/null +++ b/seed/csharp-model/grpc-proto-exhaustive/no-custom-config/.mock/proto/google/api/http.proto @@ -0,0 +1,379 @@ +// Copyright 2023 Google LLC +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +syntax = "proto3"; + +package google.api; + +option cc_enable_arenas = true; +option go_package = "google.golang.org/genproto/googleapis/api/annotations;annotations"; +option java_multiple_files = true; +option java_outer_classname = "HttpProto"; +option java_package = "com.google.api"; +option objc_class_prefix = "GAPI"; + +// Defines the HTTP configuration for an API service. It contains a list of +// [HttpRule][google.api.HttpRule], each specifying the mapping of an RPC method +// to one or more HTTP REST API methods. +message Http { + // A list of HTTP configuration rules that apply to individual API methods. + // + // **NOTE:** All service configuration rules follow "last one wins" order. + repeated HttpRule rules = 1; + + // When set to true, URL path parameters will be fully URI-decoded except in + // cases of single segment matches in reserved expansion, where "%2F" will be + // left encoded. + // + // The default behavior is to not decode RFC 6570 reserved characters in multi + // segment matches. + bool fully_decode_reserved_expansion = 2; +} + +// # gRPC Transcoding +// +// gRPC Transcoding is a feature for mapping between a gRPC method and one or +// more HTTP REST endpoints. It allows developers to build a single API service +// that supports both gRPC APIs and REST APIs. Many systems, including [Google +// APIs](https://github.com/googleapis/googleapis), +// [Cloud Endpoints](https://cloud.google.com/endpoints), [gRPC +// Gateway](https://github.com/grpc-ecosystem/grpc-gateway), +// and [Envoy](https://github.com/envoyproxy/envoy) proxy support this feature +// and use it for large scale production services. +// +// `HttpRule` defines the schema of the gRPC/REST mapping. The mapping specifies +// how different portions of the gRPC request message are mapped to the URL +// path, URL query parameters, and HTTP request body. It also controls how the +// gRPC response message is mapped to the HTTP response body. `HttpRule` is +// typically specified as an `google.api.http` annotation on the gRPC method. +// +// Each mapping specifies a URL path template and an HTTP method. The path +// template may refer to one or more fields in the gRPC request message, as long +// as each field is a non-repeated field with a primitive (non-message) type. +// The path template controls how fields of the request message are mapped to +// the URL path. +// +// Example: +// +// service Messaging { +// rpc GetMessage(GetMessageRequest) returns (Message) { +// option (google.api.http) = { +// get: "/v1/{name=messages/*}" +// }; +// } +// } +// message GetMessageRequest { +// string name = 1; // Mapped to URL path. +// } +// message Message { +// string text = 1; // The resource content. +// } +// +// This enables an HTTP REST to gRPC mapping as below: +// +// HTTP | gRPC +// -----|----- +// `GET /v1/messages/123456` | `GetMessage(name: "messages/123456")` +// +// Any fields in the request message which are not bound by the path template +// automatically become HTTP query parameters if there is no HTTP request body. +// For example: +// +// service Messaging { +// rpc GetMessage(GetMessageRequest) returns (Message) { +// option (google.api.http) = { +// get:"/v1/messages/{message_id}" +// }; +// } +// } +// message GetMessageRequest { +// message SubMessage { +// string subfield = 1; +// } +// string message_id = 1; // Mapped to URL path. +// int64 revision = 2; // Mapped to URL query parameter `revision`. +// SubMessage sub = 3; // Mapped to URL query parameter `sub.subfield`. +// } +// +// This enables a HTTP JSON to RPC mapping as below: +// +// HTTP | gRPC +// -----|----- +// `GET /v1/messages/123456?revision=2&sub.subfield=foo` | +// `GetMessage(message_id: "123456" revision: 2 sub: SubMessage(subfield: +// "foo"))` +// +// Note that fields which are mapped to URL query parameters must have a +// primitive type or a repeated primitive type or a non-repeated message type. +// In the case of a repeated type, the parameter can be repeated in the URL +// as `...?param=A¶m=B`. In the case of a message type, each field of the +// message is mapped to a separate parameter, such as +// `...?foo.a=A&foo.b=B&foo.c=C`. +// +// For HTTP methods that allow a request body, the `body` field +// specifies the mapping. Consider a REST update method on the +// message resource collection: +// +// service Messaging { +// rpc UpdateMessage(UpdateMessageRequest) returns (Message) { +// option (google.api.http) = { +// patch: "/v1/messages/{message_id}" +// body: "message" +// }; +// } +// } +// message UpdateMessageRequest { +// string message_id = 1; // mapped to the URL +// Message message = 2; // mapped to the body +// } +// +// The following HTTP JSON to RPC mapping is enabled, where the +// representation of the JSON in the request body is determined by +// protos JSON encoding: +// +// HTTP | gRPC +// -----|----- +// `PATCH /v1/messages/123456 { "text": "Hi!" }` | `UpdateMessage(message_id: +// "123456" message { text: "Hi!" })` +// +// The special name `*` can be used in the body mapping to define that +// every field not bound by the path template should be mapped to the +// request body. This enables the following alternative definition of +// the update method: +// +// service Messaging { +// rpc UpdateMessage(Message) returns (Message) { +// option (google.api.http) = { +// patch: "/v1/messages/{message_id}" +// body: "*" +// }; +// } +// } +// message Message { +// string message_id = 1; +// string text = 2; +// } +// +// +// The following HTTP JSON to RPC mapping is enabled: +// +// HTTP | gRPC +// -----|----- +// `PATCH /v1/messages/123456 { "text": "Hi!" }` | `UpdateMessage(message_id: +// "123456" text: "Hi!")` +// +// Note that when using `*` in the body mapping, it is not possible to +// have HTTP parameters, as all fields not bound by the path end in +// the body. This makes this option more rarely used in practice when +// defining REST APIs. The common usage of `*` is in custom methods +// which don't use the URL at all for transferring data. +// +// It is possible to define multiple HTTP methods for one RPC by using +// the `additional_bindings` option. Example: +// +// service Messaging { +// rpc GetMessage(GetMessageRequest) returns (Message) { +// option (google.api.http) = { +// get: "/v1/messages/{message_id}" +// additional_bindings { +// get: "/v1/users/{user_id}/messages/{message_id}" +// } +// }; +// } +// } +// message GetMessageRequest { +// string message_id = 1; +// string user_id = 2; +// } +// +// This enables the following two alternative HTTP JSON to RPC mappings: +// +// HTTP | gRPC +// -----|----- +// `GET /v1/messages/123456` | `GetMessage(message_id: "123456")` +// `GET /v1/users/me/messages/123456` | `GetMessage(user_id: "me" message_id: +// "123456")` +// +// ## Rules for HTTP mapping +// +// 1. Leaf request fields (recursive expansion nested messages in the request +// message) are classified into three categories: +// - Fields referred by the path template. They are passed via the URL path. +// - Fields referred by the [HttpRule.body][google.api.HttpRule.body]. They +// are passed via the HTTP +// request body. +// - All other fields are passed via the URL query parameters, and the +// parameter name is the field path in the request message. A repeated +// field can be represented as multiple query parameters under the same +// name. +// 2. If [HttpRule.body][google.api.HttpRule.body] is "*", there is no URL +// query parameter, all fields +// are passed via URL path and HTTP request body. +// 3. If [HttpRule.body][google.api.HttpRule.body] is omitted, there is no HTTP +// request body, all +// fields are passed via URL path and URL query parameters. +// +// ### Path template syntax +// +// Template = "/" Segments [ Verb ] ; +// Segments = Segment { "/" Segment } ; +// Segment = "*" | "**" | LITERAL | Variable ; +// Variable = "{" FieldPath [ "=" Segments ] "}" ; +// FieldPath = IDENT { "." IDENT } ; +// Verb = ":" LITERAL ; +// +// The syntax `*` matches a single URL path segment. The syntax `**` matches +// zero or more URL path segments, which must be the last part of the URL path +// except the `Verb`. +// +// The syntax `Variable` matches part of the URL path as specified by its +// template. A variable template must not contain other variables. If a variable +// matches a single path segment, its template may be omitted, e.g. `{var}` +// is equivalent to `{var=*}`. +// +// The syntax `LITERAL` matches literal text in the URL path. If the `LITERAL` +// contains any reserved character, such characters should be percent-encoded +// before the matching. +// +// If a variable contains exactly one path segment, such as `"{var}"` or +// `"{var=*}"`, when such a variable is expanded into a URL path on the client +// side, all characters except `[-_.~0-9a-zA-Z]` are percent-encoded. The +// server side does the reverse decoding. Such variables show up in the +// [Discovery +// Document](https://developers.google.com/discovery/v1/reference/apis) as +// `{var}`. +// +// If a variable contains multiple path segments, such as `"{var=foo/*}"` +// or `"{var=**}"`, when such a variable is expanded into a URL path on the +// client side, all characters except `[-_.~/0-9a-zA-Z]` are percent-encoded. +// The server side does the reverse decoding, except "%2F" and "%2f" are left +// unchanged. Such variables show up in the +// [Discovery +// Document](https://developers.google.com/discovery/v1/reference/apis) as +// `{+var}`. +// +// ## Using gRPC API Service Configuration +// +// gRPC API Service Configuration (service config) is a configuration language +// for configuring a gRPC service to become a user-facing product. The +// service config is simply the YAML representation of the `google.api.Service` +// proto message. +// +// As an alternative to annotating your proto file, you can configure gRPC +// transcoding in your service config YAML files. You do this by specifying a +// `HttpRule` that maps the gRPC method to a REST endpoint, achieving the same +// effect as the proto annotation. This can be particularly useful if you +// have a proto that is reused in multiple services. Note that any transcoding +// specified in the service config will override any matching transcoding +// configuration in the proto. +// +// Example: +// +// http: +// rules: +// # Selects a gRPC method and applies HttpRule to it. +// - selector: example.v1.Messaging.GetMessage +// get: /v1/messages/{message_id}/{sub.subfield} +// +// ## Special notes +// +// When gRPC Transcoding is used to map a gRPC to JSON REST endpoints, the +// proto to JSON conversion must follow the [proto3 +// specification](https://developers.google.com/protocol-buffers/docs/proto3#json). +// +// While the single segment variable follows the semantics of +// [RFC 6570](https://tools.ietf.org/html/rfc6570) Section 3.2.2 Simple String +// Expansion, the multi segment variable **does not** follow RFC 6570 Section +// 3.2.3 Reserved Expansion. The reason is that the Reserved Expansion +// does not expand special characters like `?` and `#`, which would lead +// to invalid URLs. As the result, gRPC Transcoding uses a custom encoding +// for multi segment variables. +// +// The path variables **must not** refer to any repeated or mapped field, +// because client libraries are not capable of handling such variable expansion. +// +// The path variables **must not** capture the leading "/" character. The reason +// is that the most common use case "{var}" does not capture the leading "/" +// character. For consistency, all path variables must share the same behavior. +// +// Repeated message fields must not be mapped to URL query parameters, because +// no client library can support such complicated mapping. +// +// If an API needs to use a JSON array for request or response body, it can map +// the request or response body to a repeated field. However, some gRPC +// Transcoding implementations may not support this feature. +message HttpRule { + // Selects a method to which this rule applies. + // + // Refer to [selector][google.api.DocumentationRule.selector] for syntax + // details. + string selector = 1; + + // Determines the URL pattern is matched by this rules. This pattern can be + // used with any of the {get|put|post|delete|patch} methods. A custom method + // can be defined using the 'custom' field. + oneof pattern { + // Maps to HTTP GET. Used for listing and getting information about + // resources. + string get = 2; + + // Maps to HTTP PUT. Used for replacing a resource. + string put = 3; + + // Maps to HTTP POST. Used for creating a resource or performing an action. + string post = 4; + + // Maps to HTTP DELETE. Used for deleting a resource. + string delete = 5; + + // Maps to HTTP PATCH. Used for updating a resource. + string patch = 6; + + // The custom pattern is used for specifying an HTTP method that is not + // included in the `pattern` field, such as HEAD, or "*" to leave the + // HTTP method unspecified for this rule. The wild-card rule is useful + // for services that provide content to Web (HTML) clients. + CustomHttpPattern custom = 8; + } + + // The name of the request field whose value is mapped to the HTTP request + // body, or `*` for mapping all request fields not captured by the path + // pattern to the HTTP body, or omitted for not having any HTTP request body. + // + // NOTE: the referred field must be present at the top-level of the request + // message type. + string body = 7; + + // Optional. The name of the response field whose value is mapped to the HTTP + // response body. When omitted, the entire response message will be used + // as the HTTP response body. + // + // NOTE: The referred field must be present at the top-level of the response + // message type. + string response_body = 12; + + // Additional HTTP bindings for the selector. Nested bindings must + // not contain an `additional_bindings` field themselves (that is, + // the nesting may only be one level deep). + repeated HttpRule additional_bindings = 11; +} + +// A custom pattern is used for defining custom HTTP verb. +message CustomHttpPattern { + // The name of this custom HTTP verb. + string kind = 1; + + // The path matched by this custom verb. + string path = 2; +} \ No newline at end of file diff --git a/seed/csharp-model/grpc-proto-exhaustive/no-custom-config/proto/data/v1/data.proto b/seed/csharp-model/grpc-proto-exhaustive/no-custom-config/proto/data/v1/data.proto new file mode 100644 index 00000000000..dc3b07ece42 --- /dev/null +++ b/seed/csharp-model/grpc-proto-exhaustive/no-custom-config/proto/data/v1/data.proto @@ -0,0 +1,213 @@ +syntax = "proto3"; + +package data.v1; + +import "google/protobuf/struct.proto"; +import "google/api/annotations.proto"; +import "google/api/field_behavior.proto"; + +option csharp_namespace = "Data.V1.Grpc"; +option go_package = "github.com/acme.co/data-go-grpc"; + +message IndexedData { + repeated uint32 indices = 1 [ + (google.api.field_behavior) = REQUIRED + ]; + repeated float values = 2 [ + (google.api.field_behavior) = REQUIRED + ]; +} + +message Column { + string id = 1 [ + (google.api.field_behavior) = REQUIRED + ]; + repeated float values = 2 [ + (google.api.field_behavior) = REQUIRED + ]; + google.protobuf.Struct metadata = 3; + IndexedData indexed_data = 4; +} + +message ScoredColumn { + string id = 1 [ + (google.api.field_behavior) = REQUIRED + ]; + float score = 2; + repeated float values = 3; + google.protobuf.Struct metadata = 4; + IndexedData indexed_data = 5; +} + +message UploadRequest { + repeated Column columns = 1 [ + (google.api.field_behavior) = REQUIRED + ]; + string namespace = 2; +} + +message UploadResponse { + uint32 count = 1; +} + +message DeleteRequest { + repeated string ids = 1; + bool delete_all = 2; + string namespace = 3; + google.protobuf.Struct filter = 4; +} + +message DeleteResponse {} + +message FetchRequest { + repeated string ids = 1 [ + (google.api.field_behavior) = REQUIRED + ]; + string namespace = 2; +} + +message FetchResponse { + map columns = 1; + string namespace = 2; + optional Usage usage = 3; +} + +message ListRequest { + optional string prefix = 1; + optional uint32 limit = 2; + optional string pagination_token = 3; + string namespace = 4; +} + +message Pagination { + string next = 1; +} + +message ListElement { + string id = 1; +} + +message ListResponse { + repeated ListElement columns = 1; + optional Pagination pagination = 2; + string namespace = 3; + optional Usage usage = 4; +} + +message QueryColumn { + repeated float values = 1 [ + (google.api.field_behavior) = REQUIRED + ]; + uint32 top_k = 2; + string namespace = 3; + google.protobuf.Struct filter = 4; + IndexedData indexed_data = 5; +} + +message QueryRequest { + string namespace = 1; + uint32 top_k = 2 [ + (google.api.field_behavior) = REQUIRED + ]; + google.protobuf.Struct filter = 3; + bool include_values = 4; + bool include_metadata = 5; + repeated QueryColumn queries = 6 [ + deprecated = true + ]; + repeated float column = 7; + string id = 8; + IndexedData indexed_data = 9; +} + +message QueryResult { + repeated ScoredColumn matches = 1; + string namespace = 2; +} + +message QueryResponse { + repeated QueryResult results = 1 [deprecated=true]; + repeated ScoredColumn matches = 2; + string namespace = 3; + optional Usage usage = 4; +} + +message Usage { + optional uint32 units = 1; +} + +message UpdateRequest { + string id = 1 [ + (google.api.field_behavior) = REQUIRED + ]; + repeated float values = 2; + google.protobuf.Struct set_metadata = 3; + string namespace = 4; + IndexedData indexed_data = 5; +} + +message UpdateResponse {} + +message DescribeRequest { + google.protobuf.Struct filter = 1; +} + +message NamespaceSummary { + uint32 count = 1; +} + +message DescribeResponse { + map namespaces = 1; + uint32 dimension = 2; + float fullness = 3; + uint32 total_count = 4; +} + +service DataService { + rpc Upload(UploadRequest) returns (UploadResponse) { + option (google.api.http) = { + post: "/data" + body: "*" + }; + } + + rpc Delete(DeleteRequest) returns (DeleteResponse) { + option (google.api.http) = { + post: "/data/delete" + body: "*" + }; + } + + rpc Fetch(FetchRequest) returns (FetchResponse) { + option (google.api.http) = { + get: "/data/fetch" + }; + } + + rpc List(ListRequest) returns (ListResponse) { + option (google.api.http) = { + get: "/data/list" + }; + } + + rpc Query(QueryRequest) returns (QueryResponse) { + option (google.api.http) = { + post: "/data/query" + body: "*" + }; + } + + rpc Update(UpdateRequest) returns (UpdateResponse) { + option (google.api.http) = { + post: "/data/update" + body: "*" + }; + } + + rpc Describe(DescribeRequest) returns (DescribeResponse) { + option (google.api.http) = { + post: "/data/describe" + body: "*" + }; + } +} diff --git a/seed/csharp-model/grpc-proto-exhaustive/no-custom-config/proto/google/api/annotations.proto b/seed/csharp-model/grpc-proto-exhaustive/no-custom-config/proto/google/api/annotations.proto new file mode 100644 index 00000000000..8ff42098404 --- /dev/null +++ b/seed/csharp-model/grpc-proto-exhaustive/no-custom-config/proto/google/api/annotations.proto @@ -0,0 +1,31 @@ +// Copyright 2015 Google LLC +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +syntax = "proto3"; + +package google.api; + +import "google/api/http.proto"; +import "google/protobuf/descriptor.proto"; + +option go_package = "google.golang.org/genproto/googleapis/api/annotations;annotations"; +option java_multiple_files = true; +option java_outer_classname = "AnnotationsProto"; +option java_package = "com.google.api"; +option objc_class_prefix = "GAPI"; + +extend google.protobuf.MethodOptions { + // See `HttpRule`. + HttpRule http = 72295728; +} \ No newline at end of file diff --git a/seed/csharp-model/grpc-proto-exhaustive/no-custom-config/proto/google/api/field_behavior.proto b/seed/csharp-model/grpc-proto-exhaustive/no-custom-config/proto/google/api/field_behavior.proto new file mode 100644 index 00000000000..128799c558d --- /dev/null +++ b/seed/csharp-model/grpc-proto-exhaustive/no-custom-config/proto/google/api/field_behavior.proto @@ -0,0 +1,104 @@ +// Copyright 2023 Google LLC +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +syntax = "proto3"; + +package google.api; + +import "google/protobuf/descriptor.proto"; + +option go_package = "google.golang.org/genproto/googleapis/api/annotations;annotations"; +option java_multiple_files = true; +option java_outer_classname = "FieldBehaviorProto"; +option java_package = "com.google.api"; +option objc_class_prefix = "GAPI"; + +extend google.protobuf.FieldOptions { + // A designation of a specific field behavior (required, output only, etc.) + // in protobuf messages. + // + // Examples: + // + // string name = 1 [(google.api.field_behavior) = REQUIRED]; + // State state = 1 [(google.api.field_behavior) = OUTPUT_ONLY]; + // google.protobuf.Duration ttl = 1 + // [(google.api.field_behavior) = INPUT_ONLY]; + // google.protobuf.Timestamp expire_time = 1 + // [(google.api.field_behavior) = OUTPUT_ONLY, + // (google.api.field_behavior) = IMMUTABLE]; + repeated google.api.FieldBehavior field_behavior = 1052; +} + +// An indicator of the behavior of a given field (for example, that a field +// is required in requests, or given as output but ignored as input). +// This **does not** change the behavior in protocol buffers itself; it only +// denotes the behavior and may affect how API tooling handles the field. +// +// Note: This enum **may** receive new values in the future. +enum FieldBehavior { + // Conventional default for enums. Do not use this. + FIELD_BEHAVIOR_UNSPECIFIED = 0; + + // Specifically denotes a field as optional. + // While all fields in protocol buffers are optional, this may be specified + // for emphasis if appropriate. + OPTIONAL = 1; + + // Denotes a field as required. + // This indicates that the field **must** be provided as part of the request, + // and failure to do so will cause an error (usually `INVALID_ARGUMENT`). + REQUIRED = 2; + + // Denotes a field as output only. + // This indicates that the field is provided in responses, but including the + // field in a request does nothing (the server *must* ignore it and + // *must not* throw an error as a result of the field's presence). + OUTPUT_ONLY = 3; + + // Denotes a field as input only. + // This indicates that the field is provided in requests, and the + // corresponding field is not included in output. + INPUT_ONLY = 4; + + // Denotes a field as immutable. + // This indicates that the field may be set once in a request to create a + // resource, but may not be changed thereafter. + IMMUTABLE = 5; + + // Denotes that a (repeated) field is an unordered list. + // This indicates that the service may provide the elements of the list + // in any arbitrary order, rather than the order the user originally + // provided. Additionally, the list's order may or may not be stable. + UNORDERED_LIST = 6; + + // Denotes that this field returns a non-empty default value if not set. + // This indicates that if the user provides the empty value in a request, + // a non-empty value will be returned. The user will not be aware of what + // non-empty value to expect. + NON_EMPTY_DEFAULT = 7; + + // Denotes that the field in a resource (a message annotated with + // google.api.resource) is used in the resource name to uniquely identify the + // resource. For AIP-compliant APIs, this should only be applied to the + // `name` field on the resource. + // + // This behavior should not be applied to references to other resources within + // the message. + // + // The identifier field of resources often have different field behavior + // depending on the request it is embedded in (e.g. for Create methods name + // is optional and unused, while for Update methods it is required). Instead + // of method-specific annotations, only `IDENTIFIER` is required. + IDENTIFIER = 8; +} \ No newline at end of file diff --git a/seed/csharp-model/grpc-proto-exhaustive/no-custom-config/proto/google/api/http.proto b/seed/csharp-model/grpc-proto-exhaustive/no-custom-config/proto/google/api/http.proto new file mode 100644 index 00000000000..c8392381eb9 --- /dev/null +++ b/seed/csharp-model/grpc-proto-exhaustive/no-custom-config/proto/google/api/http.proto @@ -0,0 +1,379 @@ +// Copyright 2023 Google LLC +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +syntax = "proto3"; + +package google.api; + +option cc_enable_arenas = true; +option go_package = "google.golang.org/genproto/googleapis/api/annotations;annotations"; +option java_multiple_files = true; +option java_outer_classname = "HttpProto"; +option java_package = "com.google.api"; +option objc_class_prefix = "GAPI"; + +// Defines the HTTP configuration for an API service. It contains a list of +// [HttpRule][google.api.HttpRule], each specifying the mapping of an RPC method +// to one or more HTTP REST API methods. +message Http { + // A list of HTTP configuration rules that apply to individual API methods. + // + // **NOTE:** All service configuration rules follow "last one wins" order. + repeated HttpRule rules = 1; + + // When set to true, URL path parameters will be fully URI-decoded except in + // cases of single segment matches in reserved expansion, where "%2F" will be + // left encoded. + // + // The default behavior is to not decode RFC 6570 reserved characters in multi + // segment matches. + bool fully_decode_reserved_expansion = 2; +} + +// # gRPC Transcoding +// +// gRPC Transcoding is a feature for mapping between a gRPC method and one or +// more HTTP REST endpoints. It allows developers to build a single API service +// that supports both gRPC APIs and REST APIs. Many systems, including [Google +// APIs](https://github.com/googleapis/googleapis), +// [Cloud Endpoints](https://cloud.google.com/endpoints), [gRPC +// Gateway](https://github.com/grpc-ecosystem/grpc-gateway), +// and [Envoy](https://github.com/envoyproxy/envoy) proxy support this feature +// and use it for large scale production services. +// +// `HttpRule` defines the schema of the gRPC/REST mapping. The mapping specifies +// how different portions of the gRPC request message are mapped to the URL +// path, URL query parameters, and HTTP request body. It also controls how the +// gRPC response message is mapped to the HTTP response body. `HttpRule` is +// typically specified as an `google.api.http` annotation on the gRPC method. +// +// Each mapping specifies a URL path template and an HTTP method. The path +// template may refer to one or more fields in the gRPC request message, as long +// as each field is a non-repeated field with a primitive (non-message) type. +// The path template controls how fields of the request message are mapped to +// the URL path. +// +// Example: +// +// service Messaging { +// rpc GetMessage(GetMessageRequest) returns (Message) { +// option (google.api.http) = { +// get: "/v1/{name=messages/*}" +// }; +// } +// } +// message GetMessageRequest { +// string name = 1; // Mapped to URL path. +// } +// message Message { +// string text = 1; // The resource content. +// } +// +// This enables an HTTP REST to gRPC mapping as below: +// +// HTTP | gRPC +// -----|----- +// `GET /v1/messages/123456` | `GetMessage(name: "messages/123456")` +// +// Any fields in the request message which are not bound by the path template +// automatically become HTTP query parameters if there is no HTTP request body. +// For example: +// +// service Messaging { +// rpc GetMessage(GetMessageRequest) returns (Message) { +// option (google.api.http) = { +// get:"/v1/messages/{message_id}" +// }; +// } +// } +// message GetMessageRequest { +// message SubMessage { +// string subfield = 1; +// } +// string message_id = 1; // Mapped to URL path. +// int64 revision = 2; // Mapped to URL query parameter `revision`. +// SubMessage sub = 3; // Mapped to URL query parameter `sub.subfield`. +// } +// +// This enables a HTTP JSON to RPC mapping as below: +// +// HTTP | gRPC +// -----|----- +// `GET /v1/messages/123456?revision=2&sub.subfield=foo` | +// `GetMessage(message_id: "123456" revision: 2 sub: SubMessage(subfield: +// "foo"))` +// +// Note that fields which are mapped to URL query parameters must have a +// primitive type or a repeated primitive type or a non-repeated message type. +// In the case of a repeated type, the parameter can be repeated in the URL +// as `...?param=A¶m=B`. In the case of a message type, each field of the +// message is mapped to a separate parameter, such as +// `...?foo.a=A&foo.b=B&foo.c=C`. +// +// For HTTP methods that allow a request body, the `body` field +// specifies the mapping. Consider a REST update method on the +// message resource collection: +// +// service Messaging { +// rpc UpdateMessage(UpdateMessageRequest) returns (Message) { +// option (google.api.http) = { +// patch: "/v1/messages/{message_id}" +// body: "message" +// }; +// } +// } +// message UpdateMessageRequest { +// string message_id = 1; // mapped to the URL +// Message message = 2; // mapped to the body +// } +// +// The following HTTP JSON to RPC mapping is enabled, where the +// representation of the JSON in the request body is determined by +// protos JSON encoding: +// +// HTTP | gRPC +// -----|----- +// `PATCH /v1/messages/123456 { "text": "Hi!" }` | `UpdateMessage(message_id: +// "123456" message { text: "Hi!" })` +// +// The special name `*` can be used in the body mapping to define that +// every field not bound by the path template should be mapped to the +// request body. This enables the following alternative definition of +// the update method: +// +// service Messaging { +// rpc UpdateMessage(Message) returns (Message) { +// option (google.api.http) = { +// patch: "/v1/messages/{message_id}" +// body: "*" +// }; +// } +// } +// message Message { +// string message_id = 1; +// string text = 2; +// } +// +// +// The following HTTP JSON to RPC mapping is enabled: +// +// HTTP | gRPC +// -----|----- +// `PATCH /v1/messages/123456 { "text": "Hi!" }` | `UpdateMessage(message_id: +// "123456" text: "Hi!")` +// +// Note that when using `*` in the body mapping, it is not possible to +// have HTTP parameters, as all fields not bound by the path end in +// the body. This makes this option more rarely used in practice when +// defining REST APIs. The common usage of `*` is in custom methods +// which don't use the URL at all for transferring data. +// +// It is possible to define multiple HTTP methods for one RPC by using +// the `additional_bindings` option. Example: +// +// service Messaging { +// rpc GetMessage(GetMessageRequest) returns (Message) { +// option (google.api.http) = { +// get: "/v1/messages/{message_id}" +// additional_bindings { +// get: "/v1/users/{user_id}/messages/{message_id}" +// } +// }; +// } +// } +// message GetMessageRequest { +// string message_id = 1; +// string user_id = 2; +// } +// +// This enables the following two alternative HTTP JSON to RPC mappings: +// +// HTTP | gRPC +// -----|----- +// `GET /v1/messages/123456` | `GetMessage(message_id: "123456")` +// `GET /v1/users/me/messages/123456` | `GetMessage(user_id: "me" message_id: +// "123456")` +// +// ## Rules for HTTP mapping +// +// 1. Leaf request fields (recursive expansion nested messages in the request +// message) are classified into three categories: +// - Fields referred by the path template. They are passed via the URL path. +// - Fields referred by the [HttpRule.body][google.api.HttpRule.body]. They +// are passed via the HTTP +// request body. +// - All other fields are passed via the URL query parameters, and the +// parameter name is the field path in the request message. A repeated +// field can be represented as multiple query parameters under the same +// name. +// 2. If [HttpRule.body][google.api.HttpRule.body] is "*", there is no URL +// query parameter, all fields +// are passed via URL path and HTTP request body. +// 3. If [HttpRule.body][google.api.HttpRule.body] is omitted, there is no HTTP +// request body, all +// fields are passed via URL path and URL query parameters. +// +// ### Path template syntax +// +// Template = "/" Segments [ Verb ] ; +// Segments = Segment { "/" Segment } ; +// Segment = "*" | "**" | LITERAL | Variable ; +// Variable = "{" FieldPath [ "=" Segments ] "}" ; +// FieldPath = IDENT { "." IDENT } ; +// Verb = ":" LITERAL ; +// +// The syntax `*` matches a single URL path segment. The syntax `**` matches +// zero or more URL path segments, which must be the last part of the URL path +// except the `Verb`. +// +// The syntax `Variable` matches part of the URL path as specified by its +// template. A variable template must not contain other variables. If a variable +// matches a single path segment, its template may be omitted, e.g. `{var}` +// is equivalent to `{var=*}`. +// +// The syntax `LITERAL` matches literal text in the URL path. If the `LITERAL` +// contains any reserved character, such characters should be percent-encoded +// before the matching. +// +// If a variable contains exactly one path segment, such as `"{var}"` or +// `"{var=*}"`, when such a variable is expanded into a URL path on the client +// side, all characters except `[-_.~0-9a-zA-Z]` are percent-encoded. The +// server side does the reverse decoding. Such variables show up in the +// [Discovery +// Document](https://developers.google.com/discovery/v1/reference/apis) as +// `{var}`. +// +// If a variable contains multiple path segments, such as `"{var=foo/*}"` +// or `"{var=**}"`, when such a variable is expanded into a URL path on the +// client side, all characters except `[-_.~/0-9a-zA-Z]` are percent-encoded. +// The server side does the reverse decoding, except "%2F" and "%2f" are left +// unchanged. Such variables show up in the +// [Discovery +// Document](https://developers.google.com/discovery/v1/reference/apis) as +// `{+var}`. +// +// ## Using gRPC API Service Configuration +// +// gRPC API Service Configuration (service config) is a configuration language +// for configuring a gRPC service to become a user-facing product. The +// service config is simply the YAML representation of the `google.api.Service` +// proto message. +// +// As an alternative to annotating your proto file, you can configure gRPC +// transcoding in your service config YAML files. You do this by specifying a +// `HttpRule` that maps the gRPC method to a REST endpoint, achieving the same +// effect as the proto annotation. This can be particularly useful if you +// have a proto that is reused in multiple services. Note that any transcoding +// specified in the service config will override any matching transcoding +// configuration in the proto. +// +// Example: +// +// http: +// rules: +// # Selects a gRPC method and applies HttpRule to it. +// - selector: example.v1.Messaging.GetMessage +// get: /v1/messages/{message_id}/{sub.subfield} +// +// ## Special notes +// +// When gRPC Transcoding is used to map a gRPC to JSON REST endpoints, the +// proto to JSON conversion must follow the [proto3 +// specification](https://developers.google.com/protocol-buffers/docs/proto3#json). +// +// While the single segment variable follows the semantics of +// [RFC 6570](https://tools.ietf.org/html/rfc6570) Section 3.2.2 Simple String +// Expansion, the multi segment variable **does not** follow RFC 6570 Section +// 3.2.3 Reserved Expansion. The reason is that the Reserved Expansion +// does not expand special characters like `?` and `#`, which would lead +// to invalid URLs. As the result, gRPC Transcoding uses a custom encoding +// for multi segment variables. +// +// The path variables **must not** refer to any repeated or mapped field, +// because client libraries are not capable of handling such variable expansion. +// +// The path variables **must not** capture the leading "/" character. The reason +// is that the most common use case "{var}" does not capture the leading "/" +// character. For consistency, all path variables must share the same behavior. +// +// Repeated message fields must not be mapped to URL query parameters, because +// no client library can support such complicated mapping. +// +// If an API needs to use a JSON array for request or response body, it can map +// the request or response body to a repeated field. However, some gRPC +// Transcoding implementations may not support this feature. +message HttpRule { + // Selects a method to which this rule applies. + // + // Refer to [selector][google.api.DocumentationRule.selector] for syntax + // details. + string selector = 1; + + // Determines the URL pattern is matched by this rules. This pattern can be + // used with any of the {get|put|post|delete|patch} methods. A custom method + // can be defined using the 'custom' field. + oneof pattern { + // Maps to HTTP GET. Used for listing and getting information about + // resources. + string get = 2; + + // Maps to HTTP PUT. Used for replacing a resource. + string put = 3; + + // Maps to HTTP POST. Used for creating a resource or performing an action. + string post = 4; + + // Maps to HTTP DELETE. Used for deleting a resource. + string delete = 5; + + // Maps to HTTP PATCH. Used for updating a resource. + string patch = 6; + + // The custom pattern is used for specifying an HTTP method that is not + // included in the `pattern` field, such as HEAD, or "*" to leave the + // HTTP method unspecified for this rule. The wild-card rule is useful + // for services that provide content to Web (HTML) clients. + CustomHttpPattern custom = 8; + } + + // The name of the request field whose value is mapped to the HTTP request + // body, or `*` for mapping all request fields not captured by the path + // pattern to the HTTP body, or omitted for not having any HTTP request body. + // + // NOTE: the referred field must be present at the top-level of the request + // message type. + string body = 7; + + // Optional. The name of the response field whose value is mapped to the HTTP + // response body. When omitted, the entire response message will be used + // as the HTTP response body. + // + // NOTE: The referred field must be present at the top-level of the response + // message type. + string response_body = 12; + + // Additional HTTP bindings for the selector. Nested bindings must + // not contain an `additional_bindings` field themselves (that is, + // the nesting may only be one level deep). + repeated HttpRule additional_bindings = 11; +} + +// A custom pattern is used for defining custom HTTP verb. +message CustomHttpPattern { + // The name of this custom HTTP verb. + string kind = 1; + + // The path matched by this custom verb. + string path = 2; +} \ No newline at end of file diff --git a/seed/csharp-model/grpc-proto-exhaustive/no-custom-config/snippet-templates.json b/seed/csharp-model/grpc-proto-exhaustive/no-custom-config/snippet-templates.json new file mode 100644 index 00000000000..e69de29bb2d diff --git a/seed/csharp-model/grpc-proto-exhaustive/no-custom-config/snippet.json b/seed/csharp-model/grpc-proto-exhaustive/no-custom-config/snippet.json new file mode 100644 index 00000000000..e69de29bb2d diff --git a/seed/csharp-model/grpc-proto-exhaustive/no-custom-config/src/SeedApi.Test/Core/EnumSerializerTests.cs b/seed/csharp-model/grpc-proto-exhaustive/no-custom-config/src/SeedApi.Test/Core/EnumSerializerTests.cs new file mode 100644 index 00000000000..089745538a5 --- /dev/null +++ b/seed/csharp-model/grpc-proto-exhaustive/no-custom-config/src/SeedApi.Test/Core/EnumSerializerTests.cs @@ -0,0 +1,61 @@ +using System; +using System.Runtime.Serialization; +using System.Text.Json; +using System.Text.Json.Serialization; +using NUnit.Framework; +using SeedApi.Core; + +namespace SeedApi.Test.Core +{ + [TestFixture] + public class StringEnumSerializerTests + { + private static readonly JsonSerializerOptions JsonOptions = new() { WriteIndented = true }; + + private const DummyEnum KnownEnumValue2 = DummyEnum.KnownValue2; + private const string KnownEnumValue2String = "known_value2"; + + private static readonly string JsonWithKnownEnum2 = $$""" + { + "enum_property": "{{KnownEnumValue2String}}" + } + """; + + [Test] + public void ShouldParseKnownEnumValue2() + { + var obj = JsonSerializer.Deserialize(JsonWithKnownEnum2, JsonOptions); + Assert.That(obj, Is.Not.Null); + Assert.That(obj.EnumProperty, Is.EqualTo(KnownEnumValue2)); + } + + [Test] + public void ShouldSerializeKnownEnumValue2() + { + var json = JsonSerializer.SerializeToElement( + new DummyObject { EnumProperty = KnownEnumValue2 }, + JsonOptions + ); + TestContext.Out.WriteLine("Serialized JSON: \n" + json); + var enumString = json.GetProperty("enum_property").GetString(); + Assert.That(enumString, Is.Not.Null); + Assert.That(enumString, Is.EqualTo(KnownEnumValue2String)); + } + } + + public class DummyObject + { + [JsonPropertyName("enum_property")] + public DummyEnum EnumProperty { get; set; } + } + + [JsonConverter(typeof(EnumSerializer))] + public enum DummyEnum + { + [EnumMember(Value = "known_value1")] + KnownValue1, + + [EnumMember(Value = "known_value2")] + KnownValue2, + } +} diff --git a/seed/csharp-model/grpc-proto-exhaustive/no-custom-config/src/SeedApi.Test/SeedApi.Test.Custom.props b/seed/csharp-model/grpc-proto-exhaustive/no-custom-config/src/SeedApi.Test/SeedApi.Test.Custom.props new file mode 100644 index 00000000000..55e683b0772 --- /dev/null +++ b/seed/csharp-model/grpc-proto-exhaustive/no-custom-config/src/SeedApi.Test/SeedApi.Test.Custom.props @@ -0,0 +1,7 @@ + + + \ No newline at end of file diff --git a/seed/csharp-model/grpc-proto-exhaustive/no-custom-config/src/SeedApi.Test/SeedApi.Test.csproj b/seed/csharp-model/grpc-proto-exhaustive/no-custom-config/src/SeedApi.Test/SeedApi.Test.csproj new file mode 100644 index 00000000000..8e6f53c1970 --- /dev/null +++ b/seed/csharp-model/grpc-proto-exhaustive/no-custom-config/src/SeedApi.Test/SeedApi.Test.csproj @@ -0,0 +1,33 @@ + + + + net8.0 + enable + enable + + false + true + + + + + + + + all + runtime; build; native; contentfiles; analyzers; buildtransitive + + + all + runtime; build; native; contentfiles; analyzers; buildtransitive + + + + + + + + + + + \ No newline at end of file diff --git a/seed/csharp-model/grpc-proto-exhaustive/no-custom-config/src/SeedApi.sln b/seed/csharp-model/grpc-proto-exhaustive/no-custom-config/src/SeedApi.sln new file mode 100644 index 00000000000..4bac721d217 --- /dev/null +++ b/seed/csharp-model/grpc-proto-exhaustive/no-custom-config/src/SeedApi.sln @@ -0,0 +1,28 @@ + +Microsoft Visual Studio Solution File, Format Version 12.00 +# Visual Studio Version 17 +VisualStudioVersion = 17.0.31903.59 +MinimumVisualStudioVersion = 10.0.40219.1 +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SeedApi", "SeedApi\SeedApi.csproj", "{A490779B-D220-4001-B5FF-63551C137576}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SeedApi.Test", "SeedApi.Test\SeedApi.Test.csproj", "{33626308-EE08-40D0-8F5E-1D349EE7DB2A}" +EndProject +Global + GlobalSection(SolutionConfigurationPlatforms) = preSolution + Debug|Any CPU = Debug|Any CPU + Release|Any CPU = Release|Any CPU + EndGlobalSection + GlobalSection(SolutionProperties) = preSolution + HideSolutionNode = FALSE + EndGlobalSection + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {A490779B-D220-4001-B5FF-63551C137576}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {A490779B-D220-4001-B5FF-63551C137576}.Debug|Any CPU.Build.0 = Debug|Any CPU + {A490779B-D220-4001-B5FF-63551C137576}.Release|Any CPU.ActiveCfg = Release|Any CPU + {A490779B-D220-4001-B5FF-63551C137576}.Release|Any CPU.Build.0 = Release|Any CPU + {33626308-EE08-40D0-8F5E-1D349EE7DB2A}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {33626308-EE08-40D0-8F5E-1D349EE7DB2A}.Debug|Any CPU.Build.0 = Debug|Any CPU + {33626308-EE08-40D0-8F5E-1D349EE7DB2A}.Release|Any CPU.ActiveCfg = Release|Any CPU + {33626308-EE08-40D0-8F5E-1D349EE7DB2A}.Release|Any CPU.Build.0 = Release|Any CPU + EndGlobalSection +EndGlobal diff --git a/seed/csharp-model/grpc-proto-exhaustive/no-custom-config/src/SeedApi/Column.cs b/seed/csharp-model/grpc-proto-exhaustive/no-custom-config/src/SeedApi/Column.cs new file mode 100644 index 00000000000..602200b6dfb --- /dev/null +++ b/seed/csharp-model/grpc-proto-exhaustive/no-custom-config/src/SeedApi/Column.cs @@ -0,0 +1,64 @@ +using System.Text.Json.Serialization; +using SeedApi.Core; +using Proto = Data.V1.Grpc; + +#nullable enable + +namespace SeedApi; + +public record Column +{ + [JsonPropertyName("id")] + public required string Id { get; set; } + + [JsonPropertyName("values")] + public IEnumerable Values { get; set; } = new List(); + + [JsonPropertyName("metadata")] + public Metadata? Metadata { get; set; } + + [JsonPropertyName("indexedData")] + public IndexedData? IndexedData { get; set; } + + public override string ToString() + { + return JsonUtils.Serialize(this); + } + + /// + /// Maps the Column type into its Protobuf-equivalent representation. + /// + internal Proto.Column ToProto() + { + var result = new Proto.Column(); + result.Id = Id; + if (Values.Any()) + { + result.Values.AddRange(Values); + } + if (Metadata != null) + { + result.Metadata = Metadata.ToProto(); + } + if (IndexedData != null) + { + result.IndexedData = IndexedData.ToProto(); + } + return result; + } + + /// + /// Returns a new Column type from its Protobuf-equivalent representation. + /// + internal static Column FromProto(Proto.Column value) + { + return new Column + { + Id = value.Id, + Values = value.Values?.ToList() ?? new List(), + Metadata = value.Metadata != null ? Metadata.FromProto(value.Metadata) : null, + IndexedData = + value.IndexedData != null ? IndexedData.FromProto(value.IndexedData) : null, + }; + } +} diff --git a/seed/csharp-model/grpc-proto-exhaustive/no-custom-config/src/SeedApi/Core/CollectionItemSerializer.cs b/seed/csharp-model/grpc-proto-exhaustive/no-custom-config/src/SeedApi/Core/CollectionItemSerializer.cs new file mode 100644 index 00000000000..af2c9adf7a7 --- /dev/null +++ b/seed/csharp-model/grpc-proto-exhaustive/no-custom-config/src/SeedApi/Core/CollectionItemSerializer.cs @@ -0,0 +1,91 @@ +using System; +using System.Collections.Generic; +using System.Text.Json; +using System.Text.Json.Serialization; + +namespace SeedApi.Core; + +/// +/// Json collection converter. +/// +/// Type of item to convert. +/// Converter to use for individual items. +internal class CollectionItemSerializer + : JsonConverter> + where TConverterType : JsonConverter +{ + /// + /// Reads a json string and deserializes it into an object. + /// + /// Json reader. + /// Type to convert. + /// Serializer options. + /// Created object. + public override IEnumerable? Read( + ref Utf8JsonReader reader, + System.Type typeToConvert, + JsonSerializerOptions options + ) + { + if (reader.TokenType == JsonTokenType.Null) + { + return default; + } + + var jsonSerializerOptions = new JsonSerializerOptions(options); + jsonSerializerOptions.Converters.Clear(); + jsonSerializerOptions.Converters.Add(Activator.CreateInstance()); + + var returnValue = new List(); + + while (reader.TokenType != JsonTokenType.EndArray) + { + if (reader.TokenType != JsonTokenType.StartArray) + { + var item = (TDatatype)( + JsonSerializer.Deserialize(ref reader, typeof(TDatatype), jsonSerializerOptions) + ?? throw new Exception( + $"Failed to deserialize collection item of type {typeof(TDatatype)}" + ) + ); + returnValue.Add(item); + } + + reader.Read(); + } + + return returnValue; + } + + /// + /// Writes a json string. + /// + /// Json writer. + /// Value to write. + /// Serializer options. + public override void Write( + Utf8JsonWriter writer, + IEnumerable? value, + JsonSerializerOptions options + ) + { + if (value == null) + { + writer.WriteNullValue(); + return; + } + + JsonSerializerOptions jsonSerializerOptions = new JsonSerializerOptions(options); + jsonSerializerOptions.Converters.Clear(); + jsonSerializerOptions.Converters.Add(Activator.CreateInstance()); + + writer.WriteStartArray(); + + foreach (var data in value) + { + JsonSerializer.Serialize(writer, data, jsonSerializerOptions); + } + + writer.WriteEndArray(); + } +} diff --git a/seed/csharp-model/grpc-proto-exhaustive/no-custom-config/src/SeedApi/Core/Constants.cs b/seed/csharp-model/grpc-proto-exhaustive/no-custom-config/src/SeedApi/Core/Constants.cs new file mode 100644 index 00000000000..ccf4e963cc8 --- /dev/null +++ b/seed/csharp-model/grpc-proto-exhaustive/no-custom-config/src/SeedApi/Core/Constants.cs @@ -0,0 +1,7 @@ +namespace SeedApi.Core; + +internal static class Constants +{ + public const string DateTimeFormat = "yyyy'-'MM'-'dd'T'HH':'mm':'ss.fffK"; + public const string DateFormat = "yyyy-MM-dd"; +} diff --git a/seed/csharp-model/grpc-proto-exhaustive/no-custom-config/src/SeedApi/Core/DateTimeSerializer.cs b/seed/csharp-model/grpc-proto-exhaustive/no-custom-config/src/SeedApi/Core/DateTimeSerializer.cs new file mode 100644 index 00000000000..a39de9c28d7 --- /dev/null +++ b/seed/csharp-model/grpc-proto-exhaustive/no-custom-config/src/SeedApi/Core/DateTimeSerializer.cs @@ -0,0 +1,22 @@ +using System.Globalization; +using System.Text.Json; +using System.Text.Json.Serialization; + +namespace SeedApi.Core; + +internal class DateTimeSerializer : JsonConverter +{ + public override DateTime Read( + ref Utf8JsonReader reader, + System.Type typeToConvert, + JsonSerializerOptions options + ) + { + return DateTime.Parse(reader.GetString()!, null, DateTimeStyles.RoundtripKind); + } + + public override void Write(Utf8JsonWriter writer, DateTime value, JsonSerializerOptions options) + { + writer.WriteStringValue(value.ToString(Constants.DateTimeFormat)); + } +} diff --git a/seed/csharp-model/grpc-proto-exhaustive/no-custom-config/src/SeedApi/Core/EnumSerializer.cs b/seed/csharp-model/grpc-proto-exhaustive/no-custom-config/src/SeedApi/Core/EnumSerializer.cs new file mode 100644 index 00000000000..ac5c0792fbe --- /dev/null +++ b/seed/csharp-model/grpc-proto-exhaustive/no-custom-config/src/SeedApi/Core/EnumSerializer.cs @@ -0,0 +1,53 @@ +using System.Runtime.Serialization; +using System.Text.Json; +using System.Text.Json.Serialization; + +namespace SeedApi.Core; + +internal class EnumSerializer : JsonConverter + where TEnum : struct, System.Enum +{ + private readonly Dictionary _enumToString = new(); + private readonly Dictionary _stringToEnum = new(); + + public EnumSerializer() + { + var type = typeof(TEnum); + var values = Enum.GetValues(type); + + foreach (var value in values) + { + var enumValue = (TEnum)value; + var enumMember = type.GetMember(enumValue.ToString())[0]; + var attr = enumMember + .GetCustomAttributes(typeof(EnumMemberAttribute), false) + .Cast() + .FirstOrDefault(); + + var stringValue = + attr?.Value + ?? value.ToString() + ?? throw new Exception("Unexpected null enum toString value"); + + _enumToString.Add(enumValue, stringValue); + _stringToEnum.Add(stringValue, enumValue); + } + } + + public override TEnum Read( + ref Utf8JsonReader reader, + System.Type typeToConvert, + JsonSerializerOptions options + ) + { + var stringValue = + reader.GetString() + ?? throw new Exception("The JSON value could not be read as a string."); + return _stringToEnum.TryGetValue(stringValue, out var enumValue) ? enumValue : default; + } + + public override void Write(Utf8JsonWriter writer, TEnum value, JsonSerializerOptions options) + { + writer.WriteStringValue(_enumToString[value]); + } +} diff --git a/seed/csharp-model/grpc-proto-exhaustive/no-custom-config/src/SeedApi/Core/JsonConfiguration.cs b/seed/csharp-model/grpc-proto-exhaustive/no-custom-config/src/SeedApi/Core/JsonConfiguration.cs new file mode 100644 index 00000000000..6d871c6e820 --- /dev/null +++ b/seed/csharp-model/grpc-proto-exhaustive/no-custom-config/src/SeedApi/Core/JsonConfiguration.cs @@ -0,0 +1,36 @@ +using System.Text.Json; +using System.Text.Json.Serialization; + +namespace SeedApi.Core; + +internal static partial class JsonOptions +{ + public static readonly JsonSerializerOptions JsonSerializerOptions; + + static JsonOptions() + { + var options = new JsonSerializerOptions + { + Converters = { new DateTimeSerializer(), new OneOfSerializer() }, + WriteIndented = true, + DefaultIgnoreCondition = JsonIgnoreCondition.WhenWritingNull, + }; + ConfigureJsonSerializerOptions(options); + JsonSerializerOptions = options; + } + + static partial void ConfigureJsonSerializerOptions(JsonSerializerOptions defaultOptions); +} + +internal static class JsonUtils +{ + public static string Serialize(T obj) + { + return JsonSerializer.Serialize(obj, JsonOptions.JsonSerializerOptions); + } + + public static T Deserialize(string json) + { + return JsonSerializer.Deserialize(json, JsonOptions.JsonSerializerOptions)!; + } +} diff --git a/seed/csharp-model/grpc-proto-exhaustive/no-custom-config/src/SeedApi/Core/OneOfSerializer.cs b/seed/csharp-model/grpc-proto-exhaustive/no-custom-config/src/SeedApi/Core/OneOfSerializer.cs new file mode 100644 index 00000000000..24ee9268e48 --- /dev/null +++ b/seed/csharp-model/grpc-proto-exhaustive/no-custom-config/src/SeedApi/Core/OneOfSerializer.cs @@ -0,0 +1,69 @@ +using System.Reflection; +using System.Text.Json; +using System.Text.Json.Serialization; +using OneOf; + +namespace SeedApi.Core; + +internal class OneOfSerializer : JsonConverter +{ + public override IOneOf? Read( + ref Utf8JsonReader reader, + System.Type typeToConvert, + JsonSerializerOptions options + ) + { + if (reader.TokenType is JsonTokenType.Null) + return default; + + foreach (var (type, cast) in GetOneOfTypes(typeToConvert)) + { + try + { + var readerCopy = reader; + var result = JsonSerializer.Deserialize(ref readerCopy, type, options); + reader.Skip(); + return (IOneOf)cast.Invoke(null, [result])!; + } + catch (JsonException) { } + } + + throw new JsonException( + $"Cannot deserialize into one of the supported types for {typeToConvert}" + ); + } + + public override void Write(Utf8JsonWriter writer, IOneOf value, JsonSerializerOptions options) + { + JsonSerializer.Serialize(writer, value.Value, options); + } + + private static (System.Type type, MethodInfo cast)[] GetOneOfTypes(System.Type typeToConvert) + { + var casts = typeToConvert + .GetRuntimeMethods() + .Where(m => m.IsSpecialName && m.Name == "op_Implicit") + .ToArray(); + var type = typeToConvert; + while (type != null) + { + if ( + type.IsGenericType + && (type.Name.StartsWith("OneOf`") || type.Name.StartsWith("OneOfBase`")) + ) + { + return type.GetGenericArguments() + .Select(t => (t, casts.First(c => c.GetParameters()[0].ParameterType == t))) + .ToArray(); + } + + type = type.BaseType; + } + throw new InvalidOperationException($"{type} isn't OneOf or OneOfBase"); + } + + public override bool CanConvert(System.Type typeToConvert) + { + return typeof(IOneOf).IsAssignableFrom(typeToConvert); + } +} diff --git a/seed/csharp-model/grpc-proto-exhaustive/no-custom-config/src/SeedApi/Core/Public/Version.cs b/seed/csharp-model/grpc-proto-exhaustive/no-custom-config/src/SeedApi/Core/Public/Version.cs new file mode 100644 index 00000000000..f430a1bf84c --- /dev/null +++ b/seed/csharp-model/grpc-proto-exhaustive/no-custom-config/src/SeedApi/Core/Public/Version.cs @@ -0,0 +1,6 @@ +namespace SeedApi; + +internal class Version +{ + public const string Current = "0.0.1"; +} diff --git a/seed/csharp-model/grpc-proto-exhaustive/no-custom-config/src/SeedApi/DeleteResponse.cs b/seed/csharp-model/grpc-proto-exhaustive/no-custom-config/src/SeedApi/DeleteResponse.cs new file mode 100644 index 00000000000..def64fbd896 --- /dev/null +++ b/seed/csharp-model/grpc-proto-exhaustive/no-custom-config/src/SeedApi/DeleteResponse.cs @@ -0,0 +1,30 @@ +using SeedApi.Core; +using Proto = Data.V1.Grpc; + +#nullable enable + +namespace SeedApi; + +public record DeleteResponse +{ + public override string ToString() + { + return JsonUtils.Serialize(this); + } + + /// + /// Maps the DeleteResponse type into its Protobuf-equivalent representation. + /// + internal Proto.DeleteResponse ToProto() + { + return new Proto.DeleteResponse(); + } + + /// + /// Returns a new DeleteResponse type from its Protobuf-equivalent representation. + /// + internal static DeleteResponse FromProto(Proto.DeleteResponse value) + { + return new DeleteResponse(); + } +} diff --git a/seed/csharp-model/grpc-proto-exhaustive/no-custom-config/src/SeedApi/DescribeResponse.cs b/seed/csharp-model/grpc-proto-exhaustive/no-custom-config/src/SeedApi/DescribeResponse.cs new file mode 100644 index 00000000000..fbd45c674b7 --- /dev/null +++ b/seed/csharp-model/grpc-proto-exhaustive/no-custom-config/src/SeedApi/DescribeResponse.cs @@ -0,0 +1,73 @@ +using System.Text.Json.Serialization; +using SeedApi.Core; +using Proto = Data.V1.Grpc; + +#nullable enable + +namespace SeedApi; + +public record DescribeResponse +{ + [JsonPropertyName("namespaces")] + public Dictionary? Namespaces { get; set; } + + [JsonPropertyName("dimension")] + public uint? Dimension { get; set; } + + [JsonPropertyName("fullness")] + public float? Fullness { get; set; } + + [JsonPropertyName("totalCount")] + public uint? TotalCount { get; set; } + + public override string ToString() + { + return JsonUtils.Serialize(this); + } + + /// + /// Maps the DescribeResponse type into its Protobuf-equivalent representation. + /// + internal Proto.DescribeResponse ToProto() + { + var result = new Proto.DescribeResponse(); + if (Namespaces != null && Namespaces.Any()) + { + foreach (var kvp in Namespaces) + { + result.Namespaces.Add(kvp.Key, kvp.Value.ToProto()); + } + ; + } + if (Dimension != null) + { + result.Dimension = Dimension ?? 0; + } + if (Fullness != null) + { + result.Fullness = Fullness ?? 0.0f; + } + if (TotalCount != null) + { + result.TotalCount = TotalCount ?? 0; + } + return result; + } + + /// + /// Returns a new DescribeResponse type from its Protobuf-equivalent representation. + /// + internal static DescribeResponse FromProto(Proto.DescribeResponse value) + { + return new DescribeResponse + { + Namespaces = value.Namespaces?.ToDictionary( + kvp => kvp.Key, + kvp => NamespaceSummary.FromProto(kvp.Value) + ), + Dimension = value.Dimension, + Fullness = value.Fullness, + TotalCount = value.TotalCount, + }; + } +} diff --git a/seed/csharp-model/grpc-proto-exhaustive/no-custom-config/src/SeedApi/FetchResponse.cs b/seed/csharp-model/grpc-proto-exhaustive/no-custom-config/src/SeedApi/FetchResponse.cs new file mode 100644 index 00000000000..ae595dfdc41 --- /dev/null +++ b/seed/csharp-model/grpc-proto-exhaustive/no-custom-config/src/SeedApi/FetchResponse.cs @@ -0,0 +1,65 @@ +using System.Text.Json.Serialization; +using SeedApi.Core; +using Proto = Data.V1.Grpc; + +#nullable enable + +namespace SeedApi; + +public record FetchResponse +{ + [JsonPropertyName("columns")] + public Dictionary? Columns { get; set; } + + [JsonPropertyName("namespace")] + public string? Namespace { get; set; } + + [JsonPropertyName("usage")] + public Usage? Usage { get; set; } + + public override string ToString() + { + return JsonUtils.Serialize(this); + } + + /// + /// Maps the FetchResponse type into its Protobuf-equivalent representation. + /// + internal Proto.FetchResponse ToProto() + { + var result = new Proto.FetchResponse(); + if (Columns != null && Columns.Any()) + { + foreach (var kvp in Columns) + { + result.Columns.Add(kvp.Key, kvp.Value.ToProto()); + } + ; + } + if (Namespace != null) + { + result.Namespace = Namespace ?? ""; + } + if (Usage != null) + { + result.Usage = Usage.ToProto(); + } + return result; + } + + /// + /// Returns a new FetchResponse type from its Protobuf-equivalent representation. + /// + internal static FetchResponse FromProto(Proto.FetchResponse value) + { + return new FetchResponse + { + Columns = value.Columns?.ToDictionary( + kvp => kvp.Key, + kvp => Column.FromProto(kvp.Value) + ), + Namespace = value.Namespace, + Usage = value.Usage != null ? Usage.FromProto(value.Usage) : null, + }; + } +} diff --git a/seed/csharp-model/grpc-proto-exhaustive/no-custom-config/src/SeedApi/IndexedData.cs b/seed/csharp-model/grpc-proto-exhaustive/no-custom-config/src/SeedApi/IndexedData.cs new file mode 100644 index 00000000000..242c4d0b135 --- /dev/null +++ b/seed/csharp-model/grpc-proto-exhaustive/no-custom-config/src/SeedApi/IndexedData.cs @@ -0,0 +1,50 @@ +using System.Text.Json.Serialization; +using SeedApi.Core; +using Proto = Data.V1.Grpc; + +#nullable enable + +namespace SeedApi; + +public record IndexedData +{ + [JsonPropertyName("indices")] + public IEnumerable Indices { get; set; } = new List(); + + [JsonPropertyName("values")] + public IEnumerable Values { get; set; } = new List(); + + public override string ToString() + { + return JsonUtils.Serialize(this); + } + + /// + /// Maps the IndexedData type into its Protobuf-equivalent representation. + /// + internal Proto.IndexedData ToProto() + { + var result = new Proto.IndexedData(); + if (Indices.Any()) + { + result.Indices.AddRange(Indices); + } + if (Values.Any()) + { + result.Values.AddRange(Values); + } + return result; + } + + /// + /// Returns a new IndexedData type from its Protobuf-equivalent representation. + /// + internal static IndexedData FromProto(Proto.IndexedData value) + { + return new IndexedData + { + Indices = value.Indices?.ToList() ?? new List(), + Values = value.Values?.ToList() ?? new List(), + }; + } +} diff --git a/seed/csharp-model/grpc-proto-exhaustive/no-custom-config/src/SeedApi/ListElement.cs b/seed/csharp-model/grpc-proto-exhaustive/no-custom-config/src/SeedApi/ListElement.cs new file mode 100644 index 00000000000..2044bd62e56 --- /dev/null +++ b/seed/csharp-model/grpc-proto-exhaustive/no-custom-config/src/SeedApi/ListElement.cs @@ -0,0 +1,39 @@ +using System.Text.Json.Serialization; +using SeedApi.Core; +using Proto = Data.V1.Grpc; + +#nullable enable + +namespace SeedApi; + +public record ListElement +{ + [JsonPropertyName("id")] + public string? Id { get; set; } + + public override string ToString() + { + return JsonUtils.Serialize(this); + } + + /// + /// Maps the ListElement type into its Protobuf-equivalent representation. + /// + internal Proto.ListElement ToProto() + { + var result = new Proto.ListElement(); + if (Id != null) + { + result.Id = Id ?? ""; + } + return result; + } + + /// + /// Returns a new ListElement type from its Protobuf-equivalent representation. + /// + internal static ListElement FromProto(Proto.ListElement value) + { + return new ListElement { Id = value.Id }; + } +} diff --git a/seed/csharp-model/grpc-proto-exhaustive/no-custom-config/src/SeedApi/ListResponse.cs b/seed/csharp-model/grpc-proto-exhaustive/no-custom-config/src/SeedApi/ListResponse.cs new file mode 100644 index 00000000000..9d691519a85 --- /dev/null +++ b/seed/csharp-model/grpc-proto-exhaustive/no-custom-config/src/SeedApi/ListResponse.cs @@ -0,0 +1,66 @@ +using System.Text.Json.Serialization; +using SeedApi.Core; +using Proto = Data.V1.Grpc; + +#nullable enable + +namespace SeedApi; + +public record ListResponse +{ + [JsonPropertyName("columns")] + public IEnumerable? Columns { get; set; } + + [JsonPropertyName("pagination")] + public Pagination? Pagination { get; set; } + + [JsonPropertyName("namespace")] + public string? Namespace { get; set; } + + [JsonPropertyName("usage")] + public Usage? Usage { get; set; } + + public override string ToString() + { + return JsonUtils.Serialize(this); + } + + /// + /// Maps the ListResponse type into its Protobuf-equivalent representation. + /// + internal Proto.ListResponse ToProto() + { + var result = new Proto.ListResponse(); + if (Columns != null && Columns.Any()) + { + result.Columns.AddRange(Columns.Select(elem => elem.ToProto())); + } + if (Pagination != null) + { + result.Pagination = Pagination.ToProto(); + } + if (Namespace != null) + { + result.Namespace = Namespace ?? ""; + } + if (Usage != null) + { + result.Usage = Usage.ToProto(); + } + return result; + } + + /// + /// Returns a new ListResponse type from its Protobuf-equivalent representation. + /// + internal static ListResponse FromProto(Proto.ListResponse value) + { + return new ListResponse + { + Columns = value.Columns?.Select(ListElement.FromProto), + Pagination = value.Pagination != null ? Pagination.FromProto(value.Pagination) : null, + Namespace = value.Namespace, + Usage = value.Usage != null ? Usage.FromProto(value.Usage) : null, + }; + } +} diff --git a/seed/csharp-model/grpc-proto-exhaustive/no-custom-config/src/SeedApi/Metadata.cs b/seed/csharp-model/grpc-proto-exhaustive/no-custom-config/src/SeedApi/Metadata.cs new file mode 100644 index 00000000000..2e16aa50b3f --- /dev/null +++ b/seed/csharp-model/grpc-proto-exhaustive/no-custom-config/src/SeedApi/Metadata.cs @@ -0,0 +1,39 @@ +using SeedApi.Core; +using Proto = Google.Protobuf.WellKnownTypes; + +#nullable enable + +namespace SeedApi; + +public sealed class Metadata : Dictionary +{ + public Metadata() { } + + public Metadata(IEnumerable> value) + : base(value.ToDictionary(e => e.Key, e => e.Value)) { } + + public override string ToString() + { + return JsonUtils.Serialize(this); + } + + internal Proto.Struct ToProto() + { + var result = new Proto.Struct(); + foreach (var kvp in this) + { + result.Fields[kvp.Key] = kvp.Value?.ToProto(); + } + return result; + } + + internal static Metadata FromProto(Proto.Struct value) + { + var result = new Metadata(); + foreach (var kvp in value.Fields) + { + result[kvp.Key] = kvp.Value != null ? MetadataValue.FromProto(kvp.Value) : null; + } + return result; + } +} diff --git a/seed/csharp-model/grpc-proto-exhaustive/no-custom-config/src/SeedApi/MetadataValue.cs b/seed/csharp-model/grpc-proto-exhaustive/no-custom-config/src/SeedApi/MetadataValue.cs new file mode 100644 index 00000000000..2308676e891 --- /dev/null +++ b/seed/csharp-model/grpc-proto-exhaustive/no-custom-config/src/SeedApi/MetadataValue.cs @@ -0,0 +1,91 @@ +using OneOf; +using SeedApi.Core; +using Proto = Google.Protobuf.WellKnownTypes; + +#nullable enable + +namespace SeedApi; + +public sealed class MetadataValue( + OneOf, Metadata> value +) : OneOfBase, Metadata>(value) +{ + public override string ToString() + { + return JsonUtils.Serialize(this); + } + + internal Proto.Value ToProto() + { + return Match( + Proto.Value.ForString, + Proto.Value.ForNumber, + Proto.Value.ForBool, + list => new Proto.Value + { + ListValue = new Proto.ListValue + { + Values = { list.Select(item => item?.ToProto()) }, + }, + }, + nested => new Proto.Value { StructValue = nested.ToProto() } + ); + } + + internal static MetadataValue? FromProto(Proto.Value value) + { + return value.KindCase switch + { + Proto.Value.KindOneofCase.StringValue => value.StringValue, + Proto.Value.KindOneofCase.NumberValue => value.NumberValue, + Proto.Value.KindOneofCase.BoolValue => value.BoolValue, + Proto.Value.KindOneofCase.ListValue => value + .ListValue.Values.Select(FromProto) + .ToList(), + Proto.Value.KindOneofCase.StructValue => Metadata.FromProto(value.StructValue), + _ => null, + }; + } + + public static implicit operator MetadataValue(string value) => new(value); + + public static implicit operator MetadataValue(bool value) => new(value); + + public static implicit operator MetadataValue(double value) => new(value); + + public static implicit operator MetadataValue(Metadata value) => new(value); + + public static implicit operator MetadataValue(MetadataValue?[] value) => new(value); + + public static implicit operator MetadataValue(List value) => new(value); + + public static implicit operator MetadataValue(string[] value) => + new(value.Select(v => new MetadataValue(v)).ToList()); + + public static implicit operator MetadataValue(double[] value) => + new(value.Select(v => new MetadataValue(v)).ToList()); + + public static implicit operator MetadataValue(double?[] value) => + new(value.Select(v => v != null ? new MetadataValue(v.Value) : null).ToList()); + + public static implicit operator MetadataValue(bool[] value) => + new(value.Select(v => new MetadataValue(v)).ToList()); + + public static implicit operator MetadataValue(bool?[] value) => + new(value.Select(v => v != null ? new MetadataValue(v.Value) : null).ToList()); + + public static implicit operator MetadataValue(List value) => + new(value.Select(v => new MetadataValue(v)).ToList()); + + public static implicit operator MetadataValue(List value) => + new(value.Select(v => new MetadataValue(v)).ToList()); + + public static implicit operator MetadataValue(List value) => + new(value.Select(v => v != null ? new MetadataValue(v.Value) : null).ToList()); + + public static implicit operator MetadataValue(List value) => + new(value.Select(v => new MetadataValue(v)).ToList()); + + public static implicit operator MetadataValue(List value) => + new(value.Select(v => v != null ? new MetadataValue(v.Value) : null).ToList()); +} diff --git a/seed/csharp-model/grpc-proto-exhaustive/no-custom-config/src/SeedApi/NamespaceSummary.cs b/seed/csharp-model/grpc-proto-exhaustive/no-custom-config/src/SeedApi/NamespaceSummary.cs new file mode 100644 index 00000000000..da0573827da --- /dev/null +++ b/seed/csharp-model/grpc-proto-exhaustive/no-custom-config/src/SeedApi/NamespaceSummary.cs @@ -0,0 +1,39 @@ +using System.Text.Json.Serialization; +using SeedApi.Core; +using Proto = Data.V1.Grpc; + +#nullable enable + +namespace SeedApi; + +public record NamespaceSummary +{ + [JsonPropertyName("count")] + public uint? Count { get; set; } + + public override string ToString() + { + return JsonUtils.Serialize(this); + } + + /// + /// Maps the NamespaceSummary type into its Protobuf-equivalent representation. + /// + internal Proto.NamespaceSummary ToProto() + { + var result = new Proto.NamespaceSummary(); + if (Count != null) + { + result.Count = Count ?? 0; + } + return result; + } + + /// + /// Returns a new NamespaceSummary type from its Protobuf-equivalent representation. + /// + internal static NamespaceSummary FromProto(Proto.NamespaceSummary value) + { + return new NamespaceSummary { Count = value.Count }; + } +} diff --git a/seed/csharp-model/grpc-proto-exhaustive/no-custom-config/src/SeedApi/Pagination.cs b/seed/csharp-model/grpc-proto-exhaustive/no-custom-config/src/SeedApi/Pagination.cs new file mode 100644 index 00000000000..87a67db48af --- /dev/null +++ b/seed/csharp-model/grpc-proto-exhaustive/no-custom-config/src/SeedApi/Pagination.cs @@ -0,0 +1,39 @@ +using System.Text.Json.Serialization; +using SeedApi.Core; +using Proto = Data.V1.Grpc; + +#nullable enable + +namespace SeedApi; + +public record Pagination +{ + [JsonPropertyName("next")] + public string? Next { get; set; } + + public override string ToString() + { + return JsonUtils.Serialize(this); + } + + /// + /// Maps the Pagination type into its Protobuf-equivalent representation. + /// + internal Proto.Pagination ToProto() + { + var result = new Proto.Pagination(); + if (Next != null) + { + result.Next = Next ?? ""; + } + return result; + } + + /// + /// Returns a new Pagination type from its Protobuf-equivalent representation. + /// + internal static Pagination FromProto(Proto.Pagination value) + { + return new Pagination { Next = value.Next }; + } +} diff --git a/seed/csharp-model/grpc-proto-exhaustive/no-custom-config/src/SeedApi/QueryColumn.cs b/seed/csharp-model/grpc-proto-exhaustive/no-custom-config/src/SeedApi/QueryColumn.cs new file mode 100644 index 00000000000..94c3d4f14af --- /dev/null +++ b/seed/csharp-model/grpc-proto-exhaustive/no-custom-config/src/SeedApi/QueryColumn.cs @@ -0,0 +1,75 @@ +using System.Text.Json.Serialization; +using SeedApi.Core; +using Proto = Data.V1.Grpc; + +#nullable enable + +namespace SeedApi; + +public record QueryColumn +{ + [JsonPropertyName("values")] + public IEnumerable Values { get; set; } = new List(); + + [JsonPropertyName("topK")] + public uint? TopK { get; set; } + + [JsonPropertyName("namespace")] + public string? Namespace { get; set; } + + [JsonPropertyName("filter")] + public Metadata? Filter { get; set; } + + [JsonPropertyName("indexedData")] + public IndexedData? IndexedData { get; set; } + + public override string ToString() + { + return JsonUtils.Serialize(this); + } + + /// + /// Maps the QueryColumn type into its Protobuf-equivalent representation. + /// + internal Proto.QueryColumn ToProto() + { + var result = new Proto.QueryColumn(); + if (Values.Any()) + { + result.Values.AddRange(Values); + } + if (TopK != null) + { + result.TopK = TopK ?? 0; + } + if (Namespace != null) + { + result.Namespace = Namespace ?? ""; + } + if (Filter != null) + { + result.Filter = Filter.ToProto(); + } + if (IndexedData != null) + { + result.IndexedData = IndexedData.ToProto(); + } + return result; + } + + /// + /// Returns a new QueryColumn type from its Protobuf-equivalent representation. + /// + internal static QueryColumn FromProto(Proto.QueryColumn value) + { + return new QueryColumn + { + Values = value.Values?.ToList() ?? new List(), + TopK = value.TopK, + Namespace = value.Namespace, + Filter = value.Filter != null ? Metadata.FromProto(value.Filter) : null, + IndexedData = + value.IndexedData != null ? IndexedData.FromProto(value.IndexedData) : null, + }; + } +} diff --git a/seed/csharp-model/grpc-proto-exhaustive/no-custom-config/src/SeedApi/QueryResponse.cs b/seed/csharp-model/grpc-proto-exhaustive/no-custom-config/src/SeedApi/QueryResponse.cs new file mode 100644 index 00000000000..c4786b94639 --- /dev/null +++ b/seed/csharp-model/grpc-proto-exhaustive/no-custom-config/src/SeedApi/QueryResponse.cs @@ -0,0 +1,66 @@ +using System.Text.Json.Serialization; +using SeedApi.Core; +using Proto = Data.V1.Grpc; + +#nullable enable + +namespace SeedApi; + +public record QueryResponse +{ + [JsonPropertyName("results")] + public IEnumerable? Results { get; set; } + + [JsonPropertyName("matches")] + public IEnumerable? Matches { get; set; } + + [JsonPropertyName("namespace")] + public string? Namespace { get; set; } + + [JsonPropertyName("usage")] + public Usage? Usage { get; set; } + + public override string ToString() + { + return JsonUtils.Serialize(this); + } + + /// + /// Maps the QueryResponse type into its Protobuf-equivalent representation. + /// + internal Proto.QueryResponse ToProto() + { + var result = new Proto.QueryResponse(); + if (Results != null && Results.Any()) + { + result.Results.AddRange(Results.Select(elem => elem.ToProto())); + } + if (Matches != null && Matches.Any()) + { + result.Matches.AddRange(Matches.Select(elem => elem.ToProto())); + } + if (Namespace != null) + { + result.Namespace = Namespace ?? ""; + } + if (Usage != null) + { + result.Usage = Usage.ToProto(); + } + return result; + } + + /// + /// Returns a new QueryResponse type from its Protobuf-equivalent representation. + /// + internal static QueryResponse FromProto(Proto.QueryResponse value) + { + return new QueryResponse + { + Results = value.Results?.Select(QueryResult.FromProto), + Matches = value.Matches?.Select(ScoredColumn.FromProto), + Namespace = value.Namespace, + Usage = value.Usage != null ? Usage.FromProto(value.Usage) : null, + }; + } +} diff --git a/seed/csharp-model/grpc-proto-exhaustive/no-custom-config/src/SeedApi/QueryResult.cs b/seed/csharp-model/grpc-proto-exhaustive/no-custom-config/src/SeedApi/QueryResult.cs new file mode 100644 index 00000000000..8c8988af1fd --- /dev/null +++ b/seed/csharp-model/grpc-proto-exhaustive/no-custom-config/src/SeedApi/QueryResult.cs @@ -0,0 +1,50 @@ +using System.Text.Json.Serialization; +using SeedApi.Core; +using Proto = Data.V1.Grpc; + +#nullable enable + +namespace SeedApi; + +public record QueryResult +{ + [JsonPropertyName("matches")] + public IEnumerable? Matches { get; set; } + + [JsonPropertyName("namespace")] + public string? Namespace { get; set; } + + public override string ToString() + { + return JsonUtils.Serialize(this); + } + + /// + /// Maps the QueryResult type into its Protobuf-equivalent representation. + /// + internal Proto.QueryResult ToProto() + { + var result = new Proto.QueryResult(); + if (Matches != null && Matches.Any()) + { + result.Matches.AddRange(Matches.Select(elem => elem.ToProto())); + } + if (Namespace != null) + { + result.Namespace = Namespace ?? ""; + } + return result; + } + + /// + /// Returns a new QueryResult type from its Protobuf-equivalent representation. + /// + internal static QueryResult FromProto(Proto.QueryResult value) + { + return new QueryResult + { + Matches = value.Matches?.Select(ScoredColumn.FromProto), + Namespace = value.Namespace, + }; + } +} diff --git a/seed/csharp-model/grpc-proto-exhaustive/no-custom-config/src/SeedApi/ScoredColumn.cs b/seed/csharp-model/grpc-proto-exhaustive/no-custom-config/src/SeedApi/ScoredColumn.cs new file mode 100644 index 00000000000..5ca5fa6e2f6 --- /dev/null +++ b/seed/csharp-model/grpc-proto-exhaustive/no-custom-config/src/SeedApi/ScoredColumn.cs @@ -0,0 +1,72 @@ +using System.Text.Json.Serialization; +using SeedApi.Core; +using Proto = Data.V1.Grpc; + +#nullable enable + +namespace SeedApi; + +public record ScoredColumn +{ + [JsonPropertyName("id")] + public required string Id { get; set; } + + [JsonPropertyName("score")] + public float? Score { get; set; } + + [JsonPropertyName("values")] + public IEnumerable? Values { get; set; } + + [JsonPropertyName("metadata")] + public Metadata? Metadata { get; set; } + + [JsonPropertyName("indexedData")] + public IndexedData? IndexedData { get; set; } + + public override string ToString() + { + return JsonUtils.Serialize(this); + } + + /// + /// Maps the ScoredColumn type into its Protobuf-equivalent representation. + /// + internal Proto.ScoredColumn ToProto() + { + var result = new Proto.ScoredColumn(); + result.Id = Id; + if (Score != null) + { + result.Score = Score ?? 0.0f; + } + if (Values != null && Values.Any()) + { + result.Values.AddRange(Values); + } + if (Metadata != null) + { + result.Metadata = Metadata.ToProto(); + } + if (IndexedData != null) + { + result.IndexedData = IndexedData.ToProto(); + } + return result; + } + + /// + /// Returns a new ScoredColumn type from its Protobuf-equivalent representation. + /// + internal static ScoredColumn FromProto(Proto.ScoredColumn value) + { + return new ScoredColumn + { + Id = value.Id, + Score = value.Score, + Values = value.Values?.ToList(), + Metadata = value.Metadata != null ? Metadata.FromProto(value.Metadata) : null, + IndexedData = + value.IndexedData != null ? IndexedData.FromProto(value.IndexedData) : null, + }; + } +} diff --git a/seed/csharp-model/grpc-proto-exhaustive/no-custom-config/src/SeedApi/SeedApi.Custom.props b/seed/csharp-model/grpc-proto-exhaustive/no-custom-config/src/SeedApi/SeedApi.Custom.props new file mode 100644 index 00000000000..70df2849401 --- /dev/null +++ b/seed/csharp-model/grpc-proto-exhaustive/no-custom-config/src/SeedApi/SeedApi.Custom.props @@ -0,0 +1,20 @@ + + + + \ No newline at end of file diff --git a/seed/csharp-model/grpc-proto-exhaustive/no-custom-config/src/SeedApi/SeedApi.csproj b/seed/csharp-model/grpc-proto-exhaustive/no-custom-config/src/SeedApi/SeedApi.csproj new file mode 100644 index 00000000000..cac753daf6d --- /dev/null +++ b/seed/csharp-model/grpc-proto-exhaustive/no-custom-config/src/SeedApi/SeedApi.csproj @@ -0,0 +1,65 @@ + + + + + net462;net8.0;net7.0;net6.0;netstandard2.0 + enable + 12 + enable + 0.0.1 + $(Version) + $(Version) + README.md + https://github.com/grpc-proto-exhaustive/fern + true + + + + + + + + + runtime; build; native; contentfiles; analyzers; buildtransitive + all + + + + + + + + + + + + + + runtime; build; native; contentfiles; analyzers; buildtransitive + all + + + + + + + + + + + + + + + + + + + + + <_Parameter1>SeedApi.Test + + + + + diff --git a/seed/csharp-model/grpc-proto-exhaustive/no-custom-config/src/SeedApi/UpdateResponse.cs b/seed/csharp-model/grpc-proto-exhaustive/no-custom-config/src/SeedApi/UpdateResponse.cs new file mode 100644 index 00000000000..0d7e3f61b18 --- /dev/null +++ b/seed/csharp-model/grpc-proto-exhaustive/no-custom-config/src/SeedApi/UpdateResponse.cs @@ -0,0 +1,30 @@ +using SeedApi.Core; +using Proto = Data.V1.Grpc; + +#nullable enable + +namespace SeedApi; + +public record UpdateResponse +{ + public override string ToString() + { + return JsonUtils.Serialize(this); + } + + /// + /// Maps the UpdateResponse type into its Protobuf-equivalent representation. + /// + internal Proto.UpdateResponse ToProto() + { + return new Proto.UpdateResponse(); + } + + /// + /// Returns a new UpdateResponse type from its Protobuf-equivalent representation. + /// + internal static UpdateResponse FromProto(Proto.UpdateResponse value) + { + return new UpdateResponse(); + } +} diff --git a/seed/csharp-model/grpc-proto-exhaustive/no-custom-config/src/SeedApi/UploadResponse.cs b/seed/csharp-model/grpc-proto-exhaustive/no-custom-config/src/SeedApi/UploadResponse.cs new file mode 100644 index 00000000000..23286a04145 --- /dev/null +++ b/seed/csharp-model/grpc-proto-exhaustive/no-custom-config/src/SeedApi/UploadResponse.cs @@ -0,0 +1,39 @@ +using System.Text.Json.Serialization; +using SeedApi.Core; +using Proto = Data.V1.Grpc; + +#nullable enable + +namespace SeedApi; + +public record UploadResponse +{ + [JsonPropertyName("count")] + public uint? Count { get; set; } + + public override string ToString() + { + return JsonUtils.Serialize(this); + } + + /// + /// Maps the UploadResponse type into its Protobuf-equivalent representation. + /// + internal Proto.UploadResponse ToProto() + { + var result = new Proto.UploadResponse(); + if (Count != null) + { + result.Count = Count ?? 0; + } + return result; + } + + /// + /// Returns a new UploadResponse type from its Protobuf-equivalent representation. + /// + internal static UploadResponse FromProto(Proto.UploadResponse value) + { + return new UploadResponse { Count = value.Count }; + } +} diff --git a/seed/csharp-model/grpc-proto-exhaustive/no-custom-config/src/SeedApi/Usage.cs b/seed/csharp-model/grpc-proto-exhaustive/no-custom-config/src/SeedApi/Usage.cs new file mode 100644 index 00000000000..e5921bf2191 --- /dev/null +++ b/seed/csharp-model/grpc-proto-exhaustive/no-custom-config/src/SeedApi/Usage.cs @@ -0,0 +1,39 @@ +using System.Text.Json.Serialization; +using SeedApi.Core; +using Proto = Data.V1.Grpc; + +#nullable enable + +namespace SeedApi; + +public record Usage +{ + [JsonPropertyName("units")] + public uint? Units { get; set; } + + public override string ToString() + { + return JsonUtils.Serialize(this); + } + + /// + /// Maps the Usage type into its Protobuf-equivalent representation. + /// + internal Proto.Usage ToProto() + { + var result = new Proto.Usage(); + if (Units != null) + { + result.Units = Units ?? 0; + } + return result; + } + + /// + /// Returns a new Usage type from its Protobuf-equivalent representation. + /// + internal static Usage FromProto(Proto.Usage value) + { + return new Usage { Units = value.Units }; + } +} diff --git a/seed/csharp-model/grpc-proto-exhaustive/read-only-memory/.github/workflows/ci.yml b/seed/csharp-model/grpc-proto-exhaustive/read-only-memory/.github/workflows/ci.yml new file mode 100644 index 00000000000..bc4fa1a98cb --- /dev/null +++ b/seed/csharp-model/grpc-proto-exhaustive/read-only-memory/.github/workflows/ci.yml @@ -0,0 +1,69 @@ +name: ci + +on: [push] + +jobs: + compile: + runs-on: ubuntu-latest + + steps: + - name: Checkout repo + uses: actions/checkout@v3 + + - uses: actions/checkout@master + + - name: Setup .NET + uses: actions/setup-dotnet@v1 + with: + dotnet-version: 8.x + + - name: Install tools + run: | + dotnet tool restore + + - name: Build Release + run: dotnet build src -c Release /p:ContinuousIntegrationBuild=true + + unit-tests: + runs-on: ubuntu-latest + + steps: + - name: Checkout repo + uses: actions/checkout@v3 + + - uses: actions/checkout@master + + - name: Setup .NET + uses: actions/setup-dotnet@v1 + with: + dotnet-version: 8.x + + - name: Install tools + run: | + dotnet tool restore + + - name: Run Tests + run: | + dotnet test src + + + publish: + needs: [compile] + if: github.event_name == 'push' && contains(github.ref, 'refs/tags/') + runs-on: ubuntu-latest + + steps: + - name: Checkout repo + uses: actions/checkout@v3 + + - name: Setup .NET + uses: actions/setup-dotnet@v1 + with: + dotnet-version: 8.x + + - name: Publish + env: + NUGET_API_KEY: ${{ secrets.NUGET_API_TOKEN }} + run: | + dotnet pack src -c Release + dotnet nuget push src/SeedApi/bin/Release/*.nupkg --api-key $NUGET_API_KEY --source "nuget.org" diff --git a/seed/csharp-model/grpc-proto-exhaustive/read-only-memory/.gitignore b/seed/csharp-model/grpc-proto-exhaustive/read-only-memory/.gitignore new file mode 100644 index 00000000000..11014f2b33d --- /dev/null +++ b/seed/csharp-model/grpc-proto-exhaustive/read-only-memory/.gitignore @@ -0,0 +1,484 @@ +## Ignore Visual Studio temporary files, build results, and +## files generated by popular Visual Studio add-ons. + +## This is based on `dotnet new gitignore` and customized by Fern + +# dotenv files +.env + +# User-specific files +*.rsuser +*.suo +*.user +*.userosscache +*.sln.docstates + +# User-specific files (MonoDevelop/Xamarin Studio) +*.userprefs + +# Mono auto generated files +mono_crash.* + +# Build results +[Dd]ebug/ +[Dd]ebugPublic/ +# [Rr]elease/ (Ignored by Fern) +# [Rr]eleases/ (Ignored by Fern) +x64/ +x86/ +[Ww][Ii][Nn]32/ +[Aa][Rr][Mm]/ +[Aa][Rr][Mm]64/ +bld/ +[Bb]in/ +[Oo]bj/ +# [Ll]og/ (Ignored by Fern) +# [Ll]ogs/ (Ignored by Fern) + +# Visual Studio 2015/2017 cache/options directory +.vs/ +# Uncomment if you have tasks that create the project's static files in wwwroot +#wwwroot/ + +# Visual Studio 2017 auto generated files +Generated\ Files/ + +# MSTest test Results +[Tt]est[Rr]esult*/ +[Bb]uild[Ll]og.* + +# NUnit +*.VisualState.xml +TestResult.xml +nunit-*.xml + +# Build Results of an ATL Project +[Dd]ebugPS/ +[Rr]eleasePS/ +dlldata.c + +# Benchmark Results +BenchmarkDotNet.Artifacts/ + +# .NET +project.lock.json +project.fragment.lock.json +artifacts/ + +# Tye +.tye/ + +# ASP.NET Scaffolding +ScaffoldingReadMe.txt + +# StyleCop +StyleCopReport.xml + +# Files built by Visual Studio +*_i.c +*_p.c +*_h.h +*.ilk +*.meta +*.obj +*.iobj +*.pch +*.pdb +*.ipdb +*.pgc +*.pgd +*.rsp +*.sbr +*.tlb +*.tli +*.tlh +*.tmp +*.tmp_proj +*_wpftmp.csproj +*.log +*.tlog +*.vspscc +*.vssscc +.builds +*.pidb +*.svclog +*.scc + +# Chutzpah Test files +_Chutzpah* + +# Visual C++ cache files +ipch/ +*.aps +*.ncb +*.opendb +*.opensdf +*.sdf +*.cachefile +*.VC.db +*.VC.VC.opendb + +# Visual Studio profiler +*.psess +*.vsp +*.vspx +*.sap + +# Visual Studio Trace Files +*.e2e + +# TFS 2012 Local Workspace +$tf/ + +# Guidance Automation Toolkit +*.gpState + +# ReSharper is a .NET coding add-in +_ReSharper*/ +*.[Rr]e[Ss]harper +*.DotSettings.user + +# TeamCity is a build add-in +_TeamCity* + +# DotCover is a Code Coverage Tool +*.dotCover + +# AxoCover is a Code Coverage Tool +.axoCover/* +!.axoCover/settings.json + +# Coverlet is a free, cross platform Code Coverage Tool +coverage*.json +coverage*.xml +coverage*.info + +# Visual Studio code coverage results +*.coverage +*.coveragexml + +# NCrunch +_NCrunch_* +.*crunch*.local.xml +nCrunchTemp_* + +# MightyMoose +*.mm.* +AutoTest.Net/ + +# Web workbench (sass) +.sass-cache/ + +# Installshield output folder +[Ee]xpress/ + +# DocProject is a documentation generator add-in +DocProject/buildhelp/ +DocProject/Help/*.HxT +DocProject/Help/*.HxC +DocProject/Help/*.hhc +DocProject/Help/*.hhk +DocProject/Help/*.hhp +DocProject/Help/Html2 +DocProject/Help/html + +# Click-Once directory +publish/ + +# Publish Web Output +*.[Pp]ublish.xml +*.azurePubxml +# Note: Comment the next line if you want to checkin your web deploy settings, +# but database connection strings (with potential passwords) will be unencrypted +*.pubxml +*.publishproj + +# Microsoft Azure Web App publish settings. Comment the next line if you want to +# checkin your Azure Web App publish settings, but sensitive information contained +# in these scripts will be unencrypted +PublishScripts/ + +# NuGet Packages +*.nupkg +# NuGet Symbol Packages +*.snupkg +# The packages folder can be ignored because of Package Restore +**/[Pp]ackages/* +# except build/, which is used as an MSBuild target. +!**/[Pp]ackages/build/ +# Uncomment if necessary however generally it will be regenerated when needed +#!**/[Pp]ackages/repositories.config +# NuGet v3's project.json files produces more ignorable files +*.nuget.props +*.nuget.targets + +# Microsoft Azure Build Output +csx/ +*.build.csdef + +# Microsoft Azure Emulator +ecf/ +rcf/ + +# Windows Store app package directories and files +AppPackages/ +BundleArtifacts/ +Package.StoreAssociation.xml +_pkginfo.txt +*.appx +*.appxbundle +*.appxupload + +# Visual Studio cache files +# files ending in .cache can be ignored +*.[Cc]ache +# but keep track of directories ending in .cache +!?*.[Cc]ache/ + +# Others +ClientBin/ +~$* +*~ +*.dbmdl +*.dbproj.schemaview +*.jfm +*.pfx +*.publishsettings +orleans.codegen.cs + +# Including strong name files can present a security risk +# (https://github.com/github/gitignore/pull/2483#issue-259490424) +#*.snk + +# Since there are multiple workflows, uncomment next line to ignore bower_components +# (https://github.com/github/gitignore/pull/1529#issuecomment-104372622) +#bower_components/ + +# RIA/Silverlight projects +Generated_Code/ + +# Backup & report files from converting an old project file +# to a newer Visual Studio version. Backup files are not needed, +# because we have git ;-) +_UpgradeReport_Files/ +Backup*/ +UpgradeLog*.XML +UpgradeLog*.htm +ServiceFabricBackup/ +*.rptproj.bak + +# SQL Server files +*.mdf +*.ldf +*.ndf + +# Business Intelligence projects +*.rdl.data +*.bim.layout +*.bim_*.settings +*.rptproj.rsuser +*- [Bb]ackup.rdl +*- [Bb]ackup ([0-9]).rdl +*- [Bb]ackup ([0-9][0-9]).rdl + +# Microsoft Fakes +FakesAssemblies/ + +# GhostDoc plugin setting file +*.GhostDoc.xml + +# Node.js Tools for Visual Studio +.ntvs_analysis.dat +node_modules/ + +# Visual Studio 6 build log +*.plg + +# Visual Studio 6 workspace options file +*.opt + +# Visual Studio 6 auto-generated workspace file (contains which files were open etc.) +*.vbw + +# Visual Studio 6 auto-generated project file (contains which files were open etc.) +*.vbp + +# Visual Studio 6 workspace and project file (working project files containing files to include in project) +*.dsw +*.dsp + +# Visual Studio 6 technical files +*.ncb +*.aps + +# Visual Studio LightSwitch build output +**/*.HTMLClient/GeneratedArtifacts +**/*.DesktopClient/GeneratedArtifacts +**/*.DesktopClient/ModelManifest.xml +**/*.Server/GeneratedArtifacts +**/*.Server/ModelManifest.xml +_Pvt_Extensions + +# Paket dependency manager +.paket/paket.exe +paket-files/ + +# FAKE - F# Make +.fake/ + +# CodeRush personal settings +.cr/personal + +# Python Tools for Visual Studio (PTVS) +__pycache__/ +*.pyc + +# Cake - Uncomment if you are using it +# tools/** +# !tools/packages.config + +# Tabs Studio +*.tss + +# Telerik's JustMock configuration file +*.jmconfig + +# BizTalk build output +*.btp.cs +*.btm.cs +*.odx.cs +*.xsd.cs + +# OpenCover UI analysis results +OpenCover/ + +# Azure Stream Analytics local run output +ASALocalRun/ + +# MSBuild Binary and Structured Log +*.binlog + +# NVidia Nsight GPU debugger configuration file +*.nvuser + +# MFractors (Xamarin productivity tool) working folder +.mfractor/ + +# Local History for Visual Studio +.localhistory/ + +# Visual Studio History (VSHistory) files +.vshistory/ + +# BeatPulse healthcheck temp database +healthchecksdb + +# Backup folder for Package Reference Convert tool in Visual Studio 2017 +MigrationBackup/ + +# Ionide (cross platform F# VS Code tools) working folder +.ionide/ + +# Fody - auto-generated XML schema +FodyWeavers.xsd + +# VS Code files for those working on multiple tools +.vscode/* +!.vscode/settings.json +!.vscode/tasks.json +!.vscode/launch.json +!.vscode/extensions.json +*.code-workspace + +# Local History for Visual Studio Code +.history/ + +# Windows Installer files from build outputs +*.cab +*.msi +*.msix +*.msm +*.msp + +# JetBrains Rider +*.sln.iml +.idea + +## +## Visual studio for Mac +## + + +# globs +Makefile.in +*.userprefs +*.usertasks +config.make +config.status +aclocal.m4 +install-sh +autom4te.cache/ +*.tar.gz +tarballs/ +test-results/ + +# Mac bundle stuff +*.dmg +*.app + +# content below from: https://github.com/github/gitignore/blob/master/Global/macOS.gitignore +# General +.DS_Store +.AppleDouble +.LSOverride + +# Icon must end with two \r +Icon + + +# Thumbnails +._* + +# Files that might appear in the root of a volume +.DocumentRevisions-V100 +.fseventsd +.Spotlight-V100 +.TemporaryItems +.Trashes +.VolumeIcon.icns +.com.apple.timemachine.donotpresent + +# Directories potentially created on remote AFP share +.AppleDB +.AppleDesktop +Network Trash Folder +Temporary Items +.apdisk + +# content below from: https://github.com/github/gitignore/blob/master/Global/Windows.gitignore +# Windows thumbnail cache files +Thumbs.db +ehthumbs.db +ehthumbs_vista.db + +# Dump file +*.stackdump + +# Folder config file +[Dd]esktop.ini + +# Recycle Bin used on file shares +$RECYCLE.BIN/ + +# Windows Installer files +*.cab +*.msi +*.msix +*.msm +*.msp + +# Windows shortcuts +*.lnk + +# Vim temporary swap files +*.swp diff --git a/seed/csharp-model/grpc-proto-exhaustive/read-only-memory/.mock/fern.config.json b/seed/csharp-model/grpc-proto-exhaustive/read-only-memory/.mock/fern.config.json new file mode 100644 index 00000000000..4c8e54ac313 --- /dev/null +++ b/seed/csharp-model/grpc-proto-exhaustive/read-only-memory/.mock/fern.config.json @@ -0,0 +1 @@ +{"organization": "fern-test", "version": "*"} \ No newline at end of file diff --git a/seed/csharp-model/grpc-proto-exhaustive/read-only-memory/.mock/generators.yml b/seed/csharp-model/grpc-proto-exhaustive/read-only-memory/.mock/generators.yml new file mode 100644 index 00000000000..972ed6d7b73 --- /dev/null +++ b/seed/csharp-model/grpc-proto-exhaustive/read-only-memory/.mock/generators.yml @@ -0,0 +1,6 @@ +api: + - proto: + root: proto + target: proto/data/v1/data.proto + overrides: overrides.yml + local-generation: true \ No newline at end of file diff --git a/seed/csharp-model/grpc-proto-exhaustive/read-only-memory/.mock/overrides.yml b/seed/csharp-model/grpc-proto-exhaustive/read-only-memory/.mock/overrides.yml new file mode 100644 index 00000000000..062b98c2ccb --- /dev/null +++ b/seed/csharp-model/grpc-proto-exhaustive/read-only-memory/.mock/overrides.yml @@ -0,0 +1,56 @@ + +paths: + /data/fetch: + get: + x-fern-request-name: FetchRequest + /data/list: + get: + x-fern-request-name: ListRequest +components: + schemas: + Metadata: + oneOf: + - type: object + additionalProperties: + $ref: '#/components/schemas/MetadataValue' + - type: object + x-fern-encoding: + proto: + type: google.protobuf.Struct + MetadataValue: + oneOf: + - type: number + format: double + - type: string + - type: boolean + x-fern-encoding: + proto: + type: google.protobuf.Value + DeleteRequest: + properties: + filter: + $ref: '#/components/schemas/Metadata' + DescribeRequest: + properties: + filter: + $ref: '#/components/schemas/Metadata' + QueryRequest: + properties: + filter: + $ref: '#/components/schemas/Metadata' + QueryColumn: + properties: + filter: + $ref: '#/components/schemas/Metadata' + ScoredColumn: + properties: + metadata: + $ref: '#/components/schemas/Metadata' + UpdateRequest: + properties: + setMetadata: + $ref: '#/components/schemas/Metadata' + Column: + properties: + metadata: + $ref: '#/components/schemas/Metadata' \ No newline at end of file diff --git a/seed/csharp-model/grpc-proto-exhaustive/read-only-memory/.mock/proto/data/v1/data.proto b/seed/csharp-model/grpc-proto-exhaustive/read-only-memory/.mock/proto/data/v1/data.proto new file mode 100644 index 00000000000..dc3b07ece42 --- /dev/null +++ b/seed/csharp-model/grpc-proto-exhaustive/read-only-memory/.mock/proto/data/v1/data.proto @@ -0,0 +1,213 @@ +syntax = "proto3"; + +package data.v1; + +import "google/protobuf/struct.proto"; +import "google/api/annotations.proto"; +import "google/api/field_behavior.proto"; + +option csharp_namespace = "Data.V1.Grpc"; +option go_package = "github.com/acme.co/data-go-grpc"; + +message IndexedData { + repeated uint32 indices = 1 [ + (google.api.field_behavior) = REQUIRED + ]; + repeated float values = 2 [ + (google.api.field_behavior) = REQUIRED + ]; +} + +message Column { + string id = 1 [ + (google.api.field_behavior) = REQUIRED + ]; + repeated float values = 2 [ + (google.api.field_behavior) = REQUIRED + ]; + google.protobuf.Struct metadata = 3; + IndexedData indexed_data = 4; +} + +message ScoredColumn { + string id = 1 [ + (google.api.field_behavior) = REQUIRED + ]; + float score = 2; + repeated float values = 3; + google.protobuf.Struct metadata = 4; + IndexedData indexed_data = 5; +} + +message UploadRequest { + repeated Column columns = 1 [ + (google.api.field_behavior) = REQUIRED + ]; + string namespace = 2; +} + +message UploadResponse { + uint32 count = 1; +} + +message DeleteRequest { + repeated string ids = 1; + bool delete_all = 2; + string namespace = 3; + google.protobuf.Struct filter = 4; +} + +message DeleteResponse {} + +message FetchRequest { + repeated string ids = 1 [ + (google.api.field_behavior) = REQUIRED + ]; + string namespace = 2; +} + +message FetchResponse { + map columns = 1; + string namespace = 2; + optional Usage usage = 3; +} + +message ListRequest { + optional string prefix = 1; + optional uint32 limit = 2; + optional string pagination_token = 3; + string namespace = 4; +} + +message Pagination { + string next = 1; +} + +message ListElement { + string id = 1; +} + +message ListResponse { + repeated ListElement columns = 1; + optional Pagination pagination = 2; + string namespace = 3; + optional Usage usage = 4; +} + +message QueryColumn { + repeated float values = 1 [ + (google.api.field_behavior) = REQUIRED + ]; + uint32 top_k = 2; + string namespace = 3; + google.protobuf.Struct filter = 4; + IndexedData indexed_data = 5; +} + +message QueryRequest { + string namespace = 1; + uint32 top_k = 2 [ + (google.api.field_behavior) = REQUIRED + ]; + google.protobuf.Struct filter = 3; + bool include_values = 4; + bool include_metadata = 5; + repeated QueryColumn queries = 6 [ + deprecated = true + ]; + repeated float column = 7; + string id = 8; + IndexedData indexed_data = 9; +} + +message QueryResult { + repeated ScoredColumn matches = 1; + string namespace = 2; +} + +message QueryResponse { + repeated QueryResult results = 1 [deprecated=true]; + repeated ScoredColumn matches = 2; + string namespace = 3; + optional Usage usage = 4; +} + +message Usage { + optional uint32 units = 1; +} + +message UpdateRequest { + string id = 1 [ + (google.api.field_behavior) = REQUIRED + ]; + repeated float values = 2; + google.protobuf.Struct set_metadata = 3; + string namespace = 4; + IndexedData indexed_data = 5; +} + +message UpdateResponse {} + +message DescribeRequest { + google.protobuf.Struct filter = 1; +} + +message NamespaceSummary { + uint32 count = 1; +} + +message DescribeResponse { + map namespaces = 1; + uint32 dimension = 2; + float fullness = 3; + uint32 total_count = 4; +} + +service DataService { + rpc Upload(UploadRequest) returns (UploadResponse) { + option (google.api.http) = { + post: "/data" + body: "*" + }; + } + + rpc Delete(DeleteRequest) returns (DeleteResponse) { + option (google.api.http) = { + post: "/data/delete" + body: "*" + }; + } + + rpc Fetch(FetchRequest) returns (FetchResponse) { + option (google.api.http) = { + get: "/data/fetch" + }; + } + + rpc List(ListRequest) returns (ListResponse) { + option (google.api.http) = { + get: "/data/list" + }; + } + + rpc Query(QueryRequest) returns (QueryResponse) { + option (google.api.http) = { + post: "/data/query" + body: "*" + }; + } + + rpc Update(UpdateRequest) returns (UpdateResponse) { + option (google.api.http) = { + post: "/data/update" + body: "*" + }; + } + + rpc Describe(DescribeRequest) returns (DescribeResponse) { + option (google.api.http) = { + post: "/data/describe" + body: "*" + }; + } +} diff --git a/seed/csharp-model/grpc-proto-exhaustive/read-only-memory/.mock/proto/google/api/annotations.proto b/seed/csharp-model/grpc-proto-exhaustive/read-only-memory/.mock/proto/google/api/annotations.proto new file mode 100644 index 00000000000..8ff42098404 --- /dev/null +++ b/seed/csharp-model/grpc-proto-exhaustive/read-only-memory/.mock/proto/google/api/annotations.proto @@ -0,0 +1,31 @@ +// Copyright 2015 Google LLC +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +syntax = "proto3"; + +package google.api; + +import "google/api/http.proto"; +import "google/protobuf/descriptor.proto"; + +option go_package = "google.golang.org/genproto/googleapis/api/annotations;annotations"; +option java_multiple_files = true; +option java_outer_classname = "AnnotationsProto"; +option java_package = "com.google.api"; +option objc_class_prefix = "GAPI"; + +extend google.protobuf.MethodOptions { + // See `HttpRule`. + HttpRule http = 72295728; +} \ No newline at end of file diff --git a/seed/csharp-model/grpc-proto-exhaustive/read-only-memory/.mock/proto/google/api/field_behavior.proto b/seed/csharp-model/grpc-proto-exhaustive/read-only-memory/.mock/proto/google/api/field_behavior.proto new file mode 100644 index 00000000000..128799c558d --- /dev/null +++ b/seed/csharp-model/grpc-proto-exhaustive/read-only-memory/.mock/proto/google/api/field_behavior.proto @@ -0,0 +1,104 @@ +// Copyright 2023 Google LLC +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +syntax = "proto3"; + +package google.api; + +import "google/protobuf/descriptor.proto"; + +option go_package = "google.golang.org/genproto/googleapis/api/annotations;annotations"; +option java_multiple_files = true; +option java_outer_classname = "FieldBehaviorProto"; +option java_package = "com.google.api"; +option objc_class_prefix = "GAPI"; + +extend google.protobuf.FieldOptions { + // A designation of a specific field behavior (required, output only, etc.) + // in protobuf messages. + // + // Examples: + // + // string name = 1 [(google.api.field_behavior) = REQUIRED]; + // State state = 1 [(google.api.field_behavior) = OUTPUT_ONLY]; + // google.protobuf.Duration ttl = 1 + // [(google.api.field_behavior) = INPUT_ONLY]; + // google.protobuf.Timestamp expire_time = 1 + // [(google.api.field_behavior) = OUTPUT_ONLY, + // (google.api.field_behavior) = IMMUTABLE]; + repeated google.api.FieldBehavior field_behavior = 1052; +} + +// An indicator of the behavior of a given field (for example, that a field +// is required in requests, or given as output but ignored as input). +// This **does not** change the behavior in protocol buffers itself; it only +// denotes the behavior and may affect how API tooling handles the field. +// +// Note: This enum **may** receive new values in the future. +enum FieldBehavior { + // Conventional default for enums. Do not use this. + FIELD_BEHAVIOR_UNSPECIFIED = 0; + + // Specifically denotes a field as optional. + // While all fields in protocol buffers are optional, this may be specified + // for emphasis if appropriate. + OPTIONAL = 1; + + // Denotes a field as required. + // This indicates that the field **must** be provided as part of the request, + // and failure to do so will cause an error (usually `INVALID_ARGUMENT`). + REQUIRED = 2; + + // Denotes a field as output only. + // This indicates that the field is provided in responses, but including the + // field in a request does nothing (the server *must* ignore it and + // *must not* throw an error as a result of the field's presence). + OUTPUT_ONLY = 3; + + // Denotes a field as input only. + // This indicates that the field is provided in requests, and the + // corresponding field is not included in output. + INPUT_ONLY = 4; + + // Denotes a field as immutable. + // This indicates that the field may be set once in a request to create a + // resource, but may not be changed thereafter. + IMMUTABLE = 5; + + // Denotes that a (repeated) field is an unordered list. + // This indicates that the service may provide the elements of the list + // in any arbitrary order, rather than the order the user originally + // provided. Additionally, the list's order may or may not be stable. + UNORDERED_LIST = 6; + + // Denotes that this field returns a non-empty default value if not set. + // This indicates that if the user provides the empty value in a request, + // a non-empty value will be returned. The user will not be aware of what + // non-empty value to expect. + NON_EMPTY_DEFAULT = 7; + + // Denotes that the field in a resource (a message annotated with + // google.api.resource) is used in the resource name to uniquely identify the + // resource. For AIP-compliant APIs, this should only be applied to the + // `name` field on the resource. + // + // This behavior should not be applied to references to other resources within + // the message. + // + // The identifier field of resources often have different field behavior + // depending on the request it is embedded in (e.g. for Create methods name + // is optional and unused, while for Update methods it is required). Instead + // of method-specific annotations, only `IDENTIFIER` is required. + IDENTIFIER = 8; +} \ No newline at end of file diff --git a/seed/csharp-model/grpc-proto-exhaustive/read-only-memory/.mock/proto/google/api/http.proto b/seed/csharp-model/grpc-proto-exhaustive/read-only-memory/.mock/proto/google/api/http.proto new file mode 100644 index 00000000000..c8392381eb9 --- /dev/null +++ b/seed/csharp-model/grpc-proto-exhaustive/read-only-memory/.mock/proto/google/api/http.proto @@ -0,0 +1,379 @@ +// Copyright 2023 Google LLC +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +syntax = "proto3"; + +package google.api; + +option cc_enable_arenas = true; +option go_package = "google.golang.org/genproto/googleapis/api/annotations;annotations"; +option java_multiple_files = true; +option java_outer_classname = "HttpProto"; +option java_package = "com.google.api"; +option objc_class_prefix = "GAPI"; + +// Defines the HTTP configuration for an API service. It contains a list of +// [HttpRule][google.api.HttpRule], each specifying the mapping of an RPC method +// to one or more HTTP REST API methods. +message Http { + // A list of HTTP configuration rules that apply to individual API methods. + // + // **NOTE:** All service configuration rules follow "last one wins" order. + repeated HttpRule rules = 1; + + // When set to true, URL path parameters will be fully URI-decoded except in + // cases of single segment matches in reserved expansion, where "%2F" will be + // left encoded. + // + // The default behavior is to not decode RFC 6570 reserved characters in multi + // segment matches. + bool fully_decode_reserved_expansion = 2; +} + +// # gRPC Transcoding +// +// gRPC Transcoding is a feature for mapping between a gRPC method and one or +// more HTTP REST endpoints. It allows developers to build a single API service +// that supports both gRPC APIs and REST APIs. Many systems, including [Google +// APIs](https://github.com/googleapis/googleapis), +// [Cloud Endpoints](https://cloud.google.com/endpoints), [gRPC +// Gateway](https://github.com/grpc-ecosystem/grpc-gateway), +// and [Envoy](https://github.com/envoyproxy/envoy) proxy support this feature +// and use it for large scale production services. +// +// `HttpRule` defines the schema of the gRPC/REST mapping. The mapping specifies +// how different portions of the gRPC request message are mapped to the URL +// path, URL query parameters, and HTTP request body. It also controls how the +// gRPC response message is mapped to the HTTP response body. `HttpRule` is +// typically specified as an `google.api.http` annotation on the gRPC method. +// +// Each mapping specifies a URL path template and an HTTP method. The path +// template may refer to one or more fields in the gRPC request message, as long +// as each field is a non-repeated field with a primitive (non-message) type. +// The path template controls how fields of the request message are mapped to +// the URL path. +// +// Example: +// +// service Messaging { +// rpc GetMessage(GetMessageRequest) returns (Message) { +// option (google.api.http) = { +// get: "/v1/{name=messages/*}" +// }; +// } +// } +// message GetMessageRequest { +// string name = 1; // Mapped to URL path. +// } +// message Message { +// string text = 1; // The resource content. +// } +// +// This enables an HTTP REST to gRPC mapping as below: +// +// HTTP | gRPC +// -----|----- +// `GET /v1/messages/123456` | `GetMessage(name: "messages/123456")` +// +// Any fields in the request message which are not bound by the path template +// automatically become HTTP query parameters if there is no HTTP request body. +// For example: +// +// service Messaging { +// rpc GetMessage(GetMessageRequest) returns (Message) { +// option (google.api.http) = { +// get:"/v1/messages/{message_id}" +// }; +// } +// } +// message GetMessageRequest { +// message SubMessage { +// string subfield = 1; +// } +// string message_id = 1; // Mapped to URL path. +// int64 revision = 2; // Mapped to URL query parameter `revision`. +// SubMessage sub = 3; // Mapped to URL query parameter `sub.subfield`. +// } +// +// This enables a HTTP JSON to RPC mapping as below: +// +// HTTP | gRPC +// -----|----- +// `GET /v1/messages/123456?revision=2&sub.subfield=foo` | +// `GetMessage(message_id: "123456" revision: 2 sub: SubMessage(subfield: +// "foo"))` +// +// Note that fields which are mapped to URL query parameters must have a +// primitive type or a repeated primitive type or a non-repeated message type. +// In the case of a repeated type, the parameter can be repeated in the URL +// as `...?param=A¶m=B`. In the case of a message type, each field of the +// message is mapped to a separate parameter, such as +// `...?foo.a=A&foo.b=B&foo.c=C`. +// +// For HTTP methods that allow a request body, the `body` field +// specifies the mapping. Consider a REST update method on the +// message resource collection: +// +// service Messaging { +// rpc UpdateMessage(UpdateMessageRequest) returns (Message) { +// option (google.api.http) = { +// patch: "/v1/messages/{message_id}" +// body: "message" +// }; +// } +// } +// message UpdateMessageRequest { +// string message_id = 1; // mapped to the URL +// Message message = 2; // mapped to the body +// } +// +// The following HTTP JSON to RPC mapping is enabled, where the +// representation of the JSON in the request body is determined by +// protos JSON encoding: +// +// HTTP | gRPC +// -----|----- +// `PATCH /v1/messages/123456 { "text": "Hi!" }` | `UpdateMessage(message_id: +// "123456" message { text: "Hi!" })` +// +// The special name `*` can be used in the body mapping to define that +// every field not bound by the path template should be mapped to the +// request body. This enables the following alternative definition of +// the update method: +// +// service Messaging { +// rpc UpdateMessage(Message) returns (Message) { +// option (google.api.http) = { +// patch: "/v1/messages/{message_id}" +// body: "*" +// }; +// } +// } +// message Message { +// string message_id = 1; +// string text = 2; +// } +// +// +// The following HTTP JSON to RPC mapping is enabled: +// +// HTTP | gRPC +// -----|----- +// `PATCH /v1/messages/123456 { "text": "Hi!" }` | `UpdateMessage(message_id: +// "123456" text: "Hi!")` +// +// Note that when using `*` in the body mapping, it is not possible to +// have HTTP parameters, as all fields not bound by the path end in +// the body. This makes this option more rarely used in practice when +// defining REST APIs. The common usage of `*` is in custom methods +// which don't use the URL at all for transferring data. +// +// It is possible to define multiple HTTP methods for one RPC by using +// the `additional_bindings` option. Example: +// +// service Messaging { +// rpc GetMessage(GetMessageRequest) returns (Message) { +// option (google.api.http) = { +// get: "/v1/messages/{message_id}" +// additional_bindings { +// get: "/v1/users/{user_id}/messages/{message_id}" +// } +// }; +// } +// } +// message GetMessageRequest { +// string message_id = 1; +// string user_id = 2; +// } +// +// This enables the following two alternative HTTP JSON to RPC mappings: +// +// HTTP | gRPC +// -----|----- +// `GET /v1/messages/123456` | `GetMessage(message_id: "123456")` +// `GET /v1/users/me/messages/123456` | `GetMessage(user_id: "me" message_id: +// "123456")` +// +// ## Rules for HTTP mapping +// +// 1. Leaf request fields (recursive expansion nested messages in the request +// message) are classified into three categories: +// - Fields referred by the path template. They are passed via the URL path. +// - Fields referred by the [HttpRule.body][google.api.HttpRule.body]. They +// are passed via the HTTP +// request body. +// - All other fields are passed via the URL query parameters, and the +// parameter name is the field path in the request message. A repeated +// field can be represented as multiple query parameters under the same +// name. +// 2. If [HttpRule.body][google.api.HttpRule.body] is "*", there is no URL +// query parameter, all fields +// are passed via URL path and HTTP request body. +// 3. If [HttpRule.body][google.api.HttpRule.body] is omitted, there is no HTTP +// request body, all +// fields are passed via URL path and URL query parameters. +// +// ### Path template syntax +// +// Template = "/" Segments [ Verb ] ; +// Segments = Segment { "/" Segment } ; +// Segment = "*" | "**" | LITERAL | Variable ; +// Variable = "{" FieldPath [ "=" Segments ] "}" ; +// FieldPath = IDENT { "." IDENT } ; +// Verb = ":" LITERAL ; +// +// The syntax `*` matches a single URL path segment. The syntax `**` matches +// zero or more URL path segments, which must be the last part of the URL path +// except the `Verb`. +// +// The syntax `Variable` matches part of the URL path as specified by its +// template. A variable template must not contain other variables. If a variable +// matches a single path segment, its template may be omitted, e.g. `{var}` +// is equivalent to `{var=*}`. +// +// The syntax `LITERAL` matches literal text in the URL path. If the `LITERAL` +// contains any reserved character, such characters should be percent-encoded +// before the matching. +// +// If a variable contains exactly one path segment, such as `"{var}"` or +// `"{var=*}"`, when such a variable is expanded into a URL path on the client +// side, all characters except `[-_.~0-9a-zA-Z]` are percent-encoded. The +// server side does the reverse decoding. Such variables show up in the +// [Discovery +// Document](https://developers.google.com/discovery/v1/reference/apis) as +// `{var}`. +// +// If a variable contains multiple path segments, such as `"{var=foo/*}"` +// or `"{var=**}"`, when such a variable is expanded into a URL path on the +// client side, all characters except `[-_.~/0-9a-zA-Z]` are percent-encoded. +// The server side does the reverse decoding, except "%2F" and "%2f" are left +// unchanged. Such variables show up in the +// [Discovery +// Document](https://developers.google.com/discovery/v1/reference/apis) as +// `{+var}`. +// +// ## Using gRPC API Service Configuration +// +// gRPC API Service Configuration (service config) is a configuration language +// for configuring a gRPC service to become a user-facing product. The +// service config is simply the YAML representation of the `google.api.Service` +// proto message. +// +// As an alternative to annotating your proto file, you can configure gRPC +// transcoding in your service config YAML files. You do this by specifying a +// `HttpRule` that maps the gRPC method to a REST endpoint, achieving the same +// effect as the proto annotation. This can be particularly useful if you +// have a proto that is reused in multiple services. Note that any transcoding +// specified in the service config will override any matching transcoding +// configuration in the proto. +// +// Example: +// +// http: +// rules: +// # Selects a gRPC method and applies HttpRule to it. +// - selector: example.v1.Messaging.GetMessage +// get: /v1/messages/{message_id}/{sub.subfield} +// +// ## Special notes +// +// When gRPC Transcoding is used to map a gRPC to JSON REST endpoints, the +// proto to JSON conversion must follow the [proto3 +// specification](https://developers.google.com/protocol-buffers/docs/proto3#json). +// +// While the single segment variable follows the semantics of +// [RFC 6570](https://tools.ietf.org/html/rfc6570) Section 3.2.2 Simple String +// Expansion, the multi segment variable **does not** follow RFC 6570 Section +// 3.2.3 Reserved Expansion. The reason is that the Reserved Expansion +// does not expand special characters like `?` and `#`, which would lead +// to invalid URLs. As the result, gRPC Transcoding uses a custom encoding +// for multi segment variables. +// +// The path variables **must not** refer to any repeated or mapped field, +// because client libraries are not capable of handling such variable expansion. +// +// The path variables **must not** capture the leading "/" character. The reason +// is that the most common use case "{var}" does not capture the leading "/" +// character. For consistency, all path variables must share the same behavior. +// +// Repeated message fields must not be mapped to URL query parameters, because +// no client library can support such complicated mapping. +// +// If an API needs to use a JSON array for request or response body, it can map +// the request or response body to a repeated field. However, some gRPC +// Transcoding implementations may not support this feature. +message HttpRule { + // Selects a method to which this rule applies. + // + // Refer to [selector][google.api.DocumentationRule.selector] for syntax + // details. + string selector = 1; + + // Determines the URL pattern is matched by this rules. This pattern can be + // used with any of the {get|put|post|delete|patch} methods. A custom method + // can be defined using the 'custom' field. + oneof pattern { + // Maps to HTTP GET. Used for listing and getting information about + // resources. + string get = 2; + + // Maps to HTTP PUT. Used for replacing a resource. + string put = 3; + + // Maps to HTTP POST. Used for creating a resource or performing an action. + string post = 4; + + // Maps to HTTP DELETE. Used for deleting a resource. + string delete = 5; + + // Maps to HTTP PATCH. Used for updating a resource. + string patch = 6; + + // The custom pattern is used for specifying an HTTP method that is not + // included in the `pattern` field, such as HEAD, or "*" to leave the + // HTTP method unspecified for this rule. The wild-card rule is useful + // for services that provide content to Web (HTML) clients. + CustomHttpPattern custom = 8; + } + + // The name of the request field whose value is mapped to the HTTP request + // body, or `*` for mapping all request fields not captured by the path + // pattern to the HTTP body, or omitted for not having any HTTP request body. + // + // NOTE: the referred field must be present at the top-level of the request + // message type. + string body = 7; + + // Optional. The name of the response field whose value is mapped to the HTTP + // response body. When omitted, the entire response message will be used + // as the HTTP response body. + // + // NOTE: The referred field must be present at the top-level of the response + // message type. + string response_body = 12; + + // Additional HTTP bindings for the selector. Nested bindings must + // not contain an `additional_bindings` field themselves (that is, + // the nesting may only be one level deep). + repeated HttpRule additional_bindings = 11; +} + +// A custom pattern is used for defining custom HTTP verb. +message CustomHttpPattern { + // The name of this custom HTTP verb. + string kind = 1; + + // The path matched by this custom verb. + string path = 2; +} \ No newline at end of file diff --git a/seed/csharp-model/grpc-proto-exhaustive/read-only-memory/proto/data/v1/data.proto b/seed/csharp-model/grpc-proto-exhaustive/read-only-memory/proto/data/v1/data.proto new file mode 100644 index 00000000000..dc3b07ece42 --- /dev/null +++ b/seed/csharp-model/grpc-proto-exhaustive/read-only-memory/proto/data/v1/data.proto @@ -0,0 +1,213 @@ +syntax = "proto3"; + +package data.v1; + +import "google/protobuf/struct.proto"; +import "google/api/annotations.proto"; +import "google/api/field_behavior.proto"; + +option csharp_namespace = "Data.V1.Grpc"; +option go_package = "github.com/acme.co/data-go-grpc"; + +message IndexedData { + repeated uint32 indices = 1 [ + (google.api.field_behavior) = REQUIRED + ]; + repeated float values = 2 [ + (google.api.field_behavior) = REQUIRED + ]; +} + +message Column { + string id = 1 [ + (google.api.field_behavior) = REQUIRED + ]; + repeated float values = 2 [ + (google.api.field_behavior) = REQUIRED + ]; + google.protobuf.Struct metadata = 3; + IndexedData indexed_data = 4; +} + +message ScoredColumn { + string id = 1 [ + (google.api.field_behavior) = REQUIRED + ]; + float score = 2; + repeated float values = 3; + google.protobuf.Struct metadata = 4; + IndexedData indexed_data = 5; +} + +message UploadRequest { + repeated Column columns = 1 [ + (google.api.field_behavior) = REQUIRED + ]; + string namespace = 2; +} + +message UploadResponse { + uint32 count = 1; +} + +message DeleteRequest { + repeated string ids = 1; + bool delete_all = 2; + string namespace = 3; + google.protobuf.Struct filter = 4; +} + +message DeleteResponse {} + +message FetchRequest { + repeated string ids = 1 [ + (google.api.field_behavior) = REQUIRED + ]; + string namespace = 2; +} + +message FetchResponse { + map columns = 1; + string namespace = 2; + optional Usage usage = 3; +} + +message ListRequest { + optional string prefix = 1; + optional uint32 limit = 2; + optional string pagination_token = 3; + string namespace = 4; +} + +message Pagination { + string next = 1; +} + +message ListElement { + string id = 1; +} + +message ListResponse { + repeated ListElement columns = 1; + optional Pagination pagination = 2; + string namespace = 3; + optional Usage usage = 4; +} + +message QueryColumn { + repeated float values = 1 [ + (google.api.field_behavior) = REQUIRED + ]; + uint32 top_k = 2; + string namespace = 3; + google.protobuf.Struct filter = 4; + IndexedData indexed_data = 5; +} + +message QueryRequest { + string namespace = 1; + uint32 top_k = 2 [ + (google.api.field_behavior) = REQUIRED + ]; + google.protobuf.Struct filter = 3; + bool include_values = 4; + bool include_metadata = 5; + repeated QueryColumn queries = 6 [ + deprecated = true + ]; + repeated float column = 7; + string id = 8; + IndexedData indexed_data = 9; +} + +message QueryResult { + repeated ScoredColumn matches = 1; + string namespace = 2; +} + +message QueryResponse { + repeated QueryResult results = 1 [deprecated=true]; + repeated ScoredColumn matches = 2; + string namespace = 3; + optional Usage usage = 4; +} + +message Usage { + optional uint32 units = 1; +} + +message UpdateRequest { + string id = 1 [ + (google.api.field_behavior) = REQUIRED + ]; + repeated float values = 2; + google.protobuf.Struct set_metadata = 3; + string namespace = 4; + IndexedData indexed_data = 5; +} + +message UpdateResponse {} + +message DescribeRequest { + google.protobuf.Struct filter = 1; +} + +message NamespaceSummary { + uint32 count = 1; +} + +message DescribeResponse { + map namespaces = 1; + uint32 dimension = 2; + float fullness = 3; + uint32 total_count = 4; +} + +service DataService { + rpc Upload(UploadRequest) returns (UploadResponse) { + option (google.api.http) = { + post: "/data" + body: "*" + }; + } + + rpc Delete(DeleteRequest) returns (DeleteResponse) { + option (google.api.http) = { + post: "/data/delete" + body: "*" + }; + } + + rpc Fetch(FetchRequest) returns (FetchResponse) { + option (google.api.http) = { + get: "/data/fetch" + }; + } + + rpc List(ListRequest) returns (ListResponse) { + option (google.api.http) = { + get: "/data/list" + }; + } + + rpc Query(QueryRequest) returns (QueryResponse) { + option (google.api.http) = { + post: "/data/query" + body: "*" + }; + } + + rpc Update(UpdateRequest) returns (UpdateResponse) { + option (google.api.http) = { + post: "/data/update" + body: "*" + }; + } + + rpc Describe(DescribeRequest) returns (DescribeResponse) { + option (google.api.http) = { + post: "/data/describe" + body: "*" + }; + } +} diff --git a/seed/csharp-model/grpc-proto-exhaustive/read-only-memory/proto/google/api/annotations.proto b/seed/csharp-model/grpc-proto-exhaustive/read-only-memory/proto/google/api/annotations.proto new file mode 100644 index 00000000000..8ff42098404 --- /dev/null +++ b/seed/csharp-model/grpc-proto-exhaustive/read-only-memory/proto/google/api/annotations.proto @@ -0,0 +1,31 @@ +// Copyright 2015 Google LLC +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +syntax = "proto3"; + +package google.api; + +import "google/api/http.proto"; +import "google/protobuf/descriptor.proto"; + +option go_package = "google.golang.org/genproto/googleapis/api/annotations;annotations"; +option java_multiple_files = true; +option java_outer_classname = "AnnotationsProto"; +option java_package = "com.google.api"; +option objc_class_prefix = "GAPI"; + +extend google.protobuf.MethodOptions { + // See `HttpRule`. + HttpRule http = 72295728; +} \ No newline at end of file diff --git a/seed/csharp-model/grpc-proto-exhaustive/read-only-memory/proto/google/api/field_behavior.proto b/seed/csharp-model/grpc-proto-exhaustive/read-only-memory/proto/google/api/field_behavior.proto new file mode 100644 index 00000000000..128799c558d --- /dev/null +++ b/seed/csharp-model/grpc-proto-exhaustive/read-only-memory/proto/google/api/field_behavior.proto @@ -0,0 +1,104 @@ +// Copyright 2023 Google LLC +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +syntax = "proto3"; + +package google.api; + +import "google/protobuf/descriptor.proto"; + +option go_package = "google.golang.org/genproto/googleapis/api/annotations;annotations"; +option java_multiple_files = true; +option java_outer_classname = "FieldBehaviorProto"; +option java_package = "com.google.api"; +option objc_class_prefix = "GAPI"; + +extend google.protobuf.FieldOptions { + // A designation of a specific field behavior (required, output only, etc.) + // in protobuf messages. + // + // Examples: + // + // string name = 1 [(google.api.field_behavior) = REQUIRED]; + // State state = 1 [(google.api.field_behavior) = OUTPUT_ONLY]; + // google.protobuf.Duration ttl = 1 + // [(google.api.field_behavior) = INPUT_ONLY]; + // google.protobuf.Timestamp expire_time = 1 + // [(google.api.field_behavior) = OUTPUT_ONLY, + // (google.api.field_behavior) = IMMUTABLE]; + repeated google.api.FieldBehavior field_behavior = 1052; +} + +// An indicator of the behavior of a given field (for example, that a field +// is required in requests, or given as output but ignored as input). +// This **does not** change the behavior in protocol buffers itself; it only +// denotes the behavior and may affect how API tooling handles the field. +// +// Note: This enum **may** receive new values in the future. +enum FieldBehavior { + // Conventional default for enums. Do not use this. + FIELD_BEHAVIOR_UNSPECIFIED = 0; + + // Specifically denotes a field as optional. + // While all fields in protocol buffers are optional, this may be specified + // for emphasis if appropriate. + OPTIONAL = 1; + + // Denotes a field as required. + // This indicates that the field **must** be provided as part of the request, + // and failure to do so will cause an error (usually `INVALID_ARGUMENT`). + REQUIRED = 2; + + // Denotes a field as output only. + // This indicates that the field is provided in responses, but including the + // field in a request does nothing (the server *must* ignore it and + // *must not* throw an error as a result of the field's presence). + OUTPUT_ONLY = 3; + + // Denotes a field as input only. + // This indicates that the field is provided in requests, and the + // corresponding field is not included in output. + INPUT_ONLY = 4; + + // Denotes a field as immutable. + // This indicates that the field may be set once in a request to create a + // resource, but may not be changed thereafter. + IMMUTABLE = 5; + + // Denotes that a (repeated) field is an unordered list. + // This indicates that the service may provide the elements of the list + // in any arbitrary order, rather than the order the user originally + // provided. Additionally, the list's order may or may not be stable. + UNORDERED_LIST = 6; + + // Denotes that this field returns a non-empty default value if not set. + // This indicates that if the user provides the empty value in a request, + // a non-empty value will be returned. The user will not be aware of what + // non-empty value to expect. + NON_EMPTY_DEFAULT = 7; + + // Denotes that the field in a resource (a message annotated with + // google.api.resource) is used in the resource name to uniquely identify the + // resource. For AIP-compliant APIs, this should only be applied to the + // `name` field on the resource. + // + // This behavior should not be applied to references to other resources within + // the message. + // + // The identifier field of resources often have different field behavior + // depending on the request it is embedded in (e.g. for Create methods name + // is optional and unused, while for Update methods it is required). Instead + // of method-specific annotations, only `IDENTIFIER` is required. + IDENTIFIER = 8; +} \ No newline at end of file diff --git a/seed/csharp-model/grpc-proto-exhaustive/read-only-memory/proto/google/api/http.proto b/seed/csharp-model/grpc-proto-exhaustive/read-only-memory/proto/google/api/http.proto new file mode 100644 index 00000000000..c8392381eb9 --- /dev/null +++ b/seed/csharp-model/grpc-proto-exhaustive/read-only-memory/proto/google/api/http.proto @@ -0,0 +1,379 @@ +// Copyright 2023 Google LLC +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +syntax = "proto3"; + +package google.api; + +option cc_enable_arenas = true; +option go_package = "google.golang.org/genproto/googleapis/api/annotations;annotations"; +option java_multiple_files = true; +option java_outer_classname = "HttpProto"; +option java_package = "com.google.api"; +option objc_class_prefix = "GAPI"; + +// Defines the HTTP configuration for an API service. It contains a list of +// [HttpRule][google.api.HttpRule], each specifying the mapping of an RPC method +// to one or more HTTP REST API methods. +message Http { + // A list of HTTP configuration rules that apply to individual API methods. + // + // **NOTE:** All service configuration rules follow "last one wins" order. + repeated HttpRule rules = 1; + + // When set to true, URL path parameters will be fully URI-decoded except in + // cases of single segment matches in reserved expansion, where "%2F" will be + // left encoded. + // + // The default behavior is to not decode RFC 6570 reserved characters in multi + // segment matches. + bool fully_decode_reserved_expansion = 2; +} + +// # gRPC Transcoding +// +// gRPC Transcoding is a feature for mapping between a gRPC method and one or +// more HTTP REST endpoints. It allows developers to build a single API service +// that supports both gRPC APIs and REST APIs. Many systems, including [Google +// APIs](https://github.com/googleapis/googleapis), +// [Cloud Endpoints](https://cloud.google.com/endpoints), [gRPC +// Gateway](https://github.com/grpc-ecosystem/grpc-gateway), +// and [Envoy](https://github.com/envoyproxy/envoy) proxy support this feature +// and use it for large scale production services. +// +// `HttpRule` defines the schema of the gRPC/REST mapping. The mapping specifies +// how different portions of the gRPC request message are mapped to the URL +// path, URL query parameters, and HTTP request body. It also controls how the +// gRPC response message is mapped to the HTTP response body. `HttpRule` is +// typically specified as an `google.api.http` annotation on the gRPC method. +// +// Each mapping specifies a URL path template and an HTTP method. The path +// template may refer to one or more fields in the gRPC request message, as long +// as each field is a non-repeated field with a primitive (non-message) type. +// The path template controls how fields of the request message are mapped to +// the URL path. +// +// Example: +// +// service Messaging { +// rpc GetMessage(GetMessageRequest) returns (Message) { +// option (google.api.http) = { +// get: "/v1/{name=messages/*}" +// }; +// } +// } +// message GetMessageRequest { +// string name = 1; // Mapped to URL path. +// } +// message Message { +// string text = 1; // The resource content. +// } +// +// This enables an HTTP REST to gRPC mapping as below: +// +// HTTP | gRPC +// -----|----- +// `GET /v1/messages/123456` | `GetMessage(name: "messages/123456")` +// +// Any fields in the request message which are not bound by the path template +// automatically become HTTP query parameters if there is no HTTP request body. +// For example: +// +// service Messaging { +// rpc GetMessage(GetMessageRequest) returns (Message) { +// option (google.api.http) = { +// get:"/v1/messages/{message_id}" +// }; +// } +// } +// message GetMessageRequest { +// message SubMessage { +// string subfield = 1; +// } +// string message_id = 1; // Mapped to URL path. +// int64 revision = 2; // Mapped to URL query parameter `revision`. +// SubMessage sub = 3; // Mapped to URL query parameter `sub.subfield`. +// } +// +// This enables a HTTP JSON to RPC mapping as below: +// +// HTTP | gRPC +// -----|----- +// `GET /v1/messages/123456?revision=2&sub.subfield=foo` | +// `GetMessage(message_id: "123456" revision: 2 sub: SubMessage(subfield: +// "foo"))` +// +// Note that fields which are mapped to URL query parameters must have a +// primitive type or a repeated primitive type or a non-repeated message type. +// In the case of a repeated type, the parameter can be repeated in the URL +// as `...?param=A¶m=B`. In the case of a message type, each field of the +// message is mapped to a separate parameter, such as +// `...?foo.a=A&foo.b=B&foo.c=C`. +// +// For HTTP methods that allow a request body, the `body` field +// specifies the mapping. Consider a REST update method on the +// message resource collection: +// +// service Messaging { +// rpc UpdateMessage(UpdateMessageRequest) returns (Message) { +// option (google.api.http) = { +// patch: "/v1/messages/{message_id}" +// body: "message" +// }; +// } +// } +// message UpdateMessageRequest { +// string message_id = 1; // mapped to the URL +// Message message = 2; // mapped to the body +// } +// +// The following HTTP JSON to RPC mapping is enabled, where the +// representation of the JSON in the request body is determined by +// protos JSON encoding: +// +// HTTP | gRPC +// -----|----- +// `PATCH /v1/messages/123456 { "text": "Hi!" }` | `UpdateMessage(message_id: +// "123456" message { text: "Hi!" })` +// +// The special name `*` can be used in the body mapping to define that +// every field not bound by the path template should be mapped to the +// request body. This enables the following alternative definition of +// the update method: +// +// service Messaging { +// rpc UpdateMessage(Message) returns (Message) { +// option (google.api.http) = { +// patch: "/v1/messages/{message_id}" +// body: "*" +// }; +// } +// } +// message Message { +// string message_id = 1; +// string text = 2; +// } +// +// +// The following HTTP JSON to RPC mapping is enabled: +// +// HTTP | gRPC +// -----|----- +// `PATCH /v1/messages/123456 { "text": "Hi!" }` | `UpdateMessage(message_id: +// "123456" text: "Hi!")` +// +// Note that when using `*` in the body mapping, it is not possible to +// have HTTP parameters, as all fields not bound by the path end in +// the body. This makes this option more rarely used in practice when +// defining REST APIs. The common usage of `*` is in custom methods +// which don't use the URL at all for transferring data. +// +// It is possible to define multiple HTTP methods for one RPC by using +// the `additional_bindings` option. Example: +// +// service Messaging { +// rpc GetMessage(GetMessageRequest) returns (Message) { +// option (google.api.http) = { +// get: "/v1/messages/{message_id}" +// additional_bindings { +// get: "/v1/users/{user_id}/messages/{message_id}" +// } +// }; +// } +// } +// message GetMessageRequest { +// string message_id = 1; +// string user_id = 2; +// } +// +// This enables the following two alternative HTTP JSON to RPC mappings: +// +// HTTP | gRPC +// -----|----- +// `GET /v1/messages/123456` | `GetMessage(message_id: "123456")` +// `GET /v1/users/me/messages/123456` | `GetMessage(user_id: "me" message_id: +// "123456")` +// +// ## Rules for HTTP mapping +// +// 1. Leaf request fields (recursive expansion nested messages in the request +// message) are classified into three categories: +// - Fields referred by the path template. They are passed via the URL path. +// - Fields referred by the [HttpRule.body][google.api.HttpRule.body]. They +// are passed via the HTTP +// request body. +// - All other fields are passed via the URL query parameters, and the +// parameter name is the field path in the request message. A repeated +// field can be represented as multiple query parameters under the same +// name. +// 2. If [HttpRule.body][google.api.HttpRule.body] is "*", there is no URL +// query parameter, all fields +// are passed via URL path and HTTP request body. +// 3. If [HttpRule.body][google.api.HttpRule.body] is omitted, there is no HTTP +// request body, all +// fields are passed via URL path and URL query parameters. +// +// ### Path template syntax +// +// Template = "/" Segments [ Verb ] ; +// Segments = Segment { "/" Segment } ; +// Segment = "*" | "**" | LITERAL | Variable ; +// Variable = "{" FieldPath [ "=" Segments ] "}" ; +// FieldPath = IDENT { "." IDENT } ; +// Verb = ":" LITERAL ; +// +// The syntax `*` matches a single URL path segment. The syntax `**` matches +// zero or more URL path segments, which must be the last part of the URL path +// except the `Verb`. +// +// The syntax `Variable` matches part of the URL path as specified by its +// template. A variable template must not contain other variables. If a variable +// matches a single path segment, its template may be omitted, e.g. `{var}` +// is equivalent to `{var=*}`. +// +// The syntax `LITERAL` matches literal text in the URL path. If the `LITERAL` +// contains any reserved character, such characters should be percent-encoded +// before the matching. +// +// If a variable contains exactly one path segment, such as `"{var}"` or +// `"{var=*}"`, when such a variable is expanded into a URL path on the client +// side, all characters except `[-_.~0-9a-zA-Z]` are percent-encoded. The +// server side does the reverse decoding. Such variables show up in the +// [Discovery +// Document](https://developers.google.com/discovery/v1/reference/apis) as +// `{var}`. +// +// If a variable contains multiple path segments, such as `"{var=foo/*}"` +// or `"{var=**}"`, when such a variable is expanded into a URL path on the +// client side, all characters except `[-_.~/0-9a-zA-Z]` are percent-encoded. +// The server side does the reverse decoding, except "%2F" and "%2f" are left +// unchanged. Such variables show up in the +// [Discovery +// Document](https://developers.google.com/discovery/v1/reference/apis) as +// `{+var}`. +// +// ## Using gRPC API Service Configuration +// +// gRPC API Service Configuration (service config) is a configuration language +// for configuring a gRPC service to become a user-facing product. The +// service config is simply the YAML representation of the `google.api.Service` +// proto message. +// +// As an alternative to annotating your proto file, you can configure gRPC +// transcoding in your service config YAML files. You do this by specifying a +// `HttpRule` that maps the gRPC method to a REST endpoint, achieving the same +// effect as the proto annotation. This can be particularly useful if you +// have a proto that is reused in multiple services. Note that any transcoding +// specified in the service config will override any matching transcoding +// configuration in the proto. +// +// Example: +// +// http: +// rules: +// # Selects a gRPC method and applies HttpRule to it. +// - selector: example.v1.Messaging.GetMessage +// get: /v1/messages/{message_id}/{sub.subfield} +// +// ## Special notes +// +// When gRPC Transcoding is used to map a gRPC to JSON REST endpoints, the +// proto to JSON conversion must follow the [proto3 +// specification](https://developers.google.com/protocol-buffers/docs/proto3#json). +// +// While the single segment variable follows the semantics of +// [RFC 6570](https://tools.ietf.org/html/rfc6570) Section 3.2.2 Simple String +// Expansion, the multi segment variable **does not** follow RFC 6570 Section +// 3.2.3 Reserved Expansion. The reason is that the Reserved Expansion +// does not expand special characters like `?` and `#`, which would lead +// to invalid URLs. As the result, gRPC Transcoding uses a custom encoding +// for multi segment variables. +// +// The path variables **must not** refer to any repeated or mapped field, +// because client libraries are not capable of handling such variable expansion. +// +// The path variables **must not** capture the leading "/" character. The reason +// is that the most common use case "{var}" does not capture the leading "/" +// character. For consistency, all path variables must share the same behavior. +// +// Repeated message fields must not be mapped to URL query parameters, because +// no client library can support such complicated mapping. +// +// If an API needs to use a JSON array for request or response body, it can map +// the request or response body to a repeated field. However, some gRPC +// Transcoding implementations may not support this feature. +message HttpRule { + // Selects a method to which this rule applies. + // + // Refer to [selector][google.api.DocumentationRule.selector] for syntax + // details. + string selector = 1; + + // Determines the URL pattern is matched by this rules. This pattern can be + // used with any of the {get|put|post|delete|patch} methods. A custom method + // can be defined using the 'custom' field. + oneof pattern { + // Maps to HTTP GET. Used for listing and getting information about + // resources. + string get = 2; + + // Maps to HTTP PUT. Used for replacing a resource. + string put = 3; + + // Maps to HTTP POST. Used for creating a resource or performing an action. + string post = 4; + + // Maps to HTTP DELETE. Used for deleting a resource. + string delete = 5; + + // Maps to HTTP PATCH. Used for updating a resource. + string patch = 6; + + // The custom pattern is used for specifying an HTTP method that is not + // included in the `pattern` field, such as HEAD, or "*" to leave the + // HTTP method unspecified for this rule. The wild-card rule is useful + // for services that provide content to Web (HTML) clients. + CustomHttpPattern custom = 8; + } + + // The name of the request field whose value is mapped to the HTTP request + // body, or `*` for mapping all request fields not captured by the path + // pattern to the HTTP body, or omitted for not having any HTTP request body. + // + // NOTE: the referred field must be present at the top-level of the request + // message type. + string body = 7; + + // Optional. The name of the response field whose value is mapped to the HTTP + // response body. When omitted, the entire response message will be used + // as the HTTP response body. + // + // NOTE: The referred field must be present at the top-level of the response + // message type. + string response_body = 12; + + // Additional HTTP bindings for the selector. Nested bindings must + // not contain an `additional_bindings` field themselves (that is, + // the nesting may only be one level deep). + repeated HttpRule additional_bindings = 11; +} + +// A custom pattern is used for defining custom HTTP verb. +message CustomHttpPattern { + // The name of this custom HTTP verb. + string kind = 1; + + // The path matched by this custom verb. + string path = 2; +} \ No newline at end of file diff --git a/seed/csharp-model/grpc-proto-exhaustive/read-only-memory/snippet-templates.json b/seed/csharp-model/grpc-proto-exhaustive/read-only-memory/snippet-templates.json new file mode 100644 index 00000000000..e69de29bb2d diff --git a/seed/csharp-model/grpc-proto-exhaustive/read-only-memory/snippet.json b/seed/csharp-model/grpc-proto-exhaustive/read-only-memory/snippet.json new file mode 100644 index 00000000000..e69de29bb2d diff --git a/seed/csharp-model/grpc-proto-exhaustive/read-only-memory/src/SeedApi.Test/Core/EnumSerializerTests.cs b/seed/csharp-model/grpc-proto-exhaustive/read-only-memory/src/SeedApi.Test/Core/EnumSerializerTests.cs new file mode 100644 index 00000000000..089745538a5 --- /dev/null +++ b/seed/csharp-model/grpc-proto-exhaustive/read-only-memory/src/SeedApi.Test/Core/EnumSerializerTests.cs @@ -0,0 +1,61 @@ +using System; +using System.Runtime.Serialization; +using System.Text.Json; +using System.Text.Json.Serialization; +using NUnit.Framework; +using SeedApi.Core; + +namespace SeedApi.Test.Core +{ + [TestFixture] + public class StringEnumSerializerTests + { + private static readonly JsonSerializerOptions JsonOptions = new() { WriteIndented = true }; + + private const DummyEnum KnownEnumValue2 = DummyEnum.KnownValue2; + private const string KnownEnumValue2String = "known_value2"; + + private static readonly string JsonWithKnownEnum2 = $$""" + { + "enum_property": "{{KnownEnumValue2String}}" + } + """; + + [Test] + public void ShouldParseKnownEnumValue2() + { + var obj = JsonSerializer.Deserialize(JsonWithKnownEnum2, JsonOptions); + Assert.That(obj, Is.Not.Null); + Assert.That(obj.EnumProperty, Is.EqualTo(KnownEnumValue2)); + } + + [Test] + public void ShouldSerializeKnownEnumValue2() + { + var json = JsonSerializer.SerializeToElement( + new DummyObject { EnumProperty = KnownEnumValue2 }, + JsonOptions + ); + TestContext.Out.WriteLine("Serialized JSON: \n" + json); + var enumString = json.GetProperty("enum_property").GetString(); + Assert.That(enumString, Is.Not.Null); + Assert.That(enumString, Is.EqualTo(KnownEnumValue2String)); + } + } + + public class DummyObject + { + [JsonPropertyName("enum_property")] + public DummyEnum EnumProperty { get; set; } + } + + [JsonConverter(typeof(EnumSerializer))] + public enum DummyEnum + { + [EnumMember(Value = "known_value1")] + KnownValue1, + + [EnumMember(Value = "known_value2")] + KnownValue2, + } +} diff --git a/seed/csharp-model/grpc-proto-exhaustive/read-only-memory/src/SeedApi.Test/SeedApi.Test.Custom.props b/seed/csharp-model/grpc-proto-exhaustive/read-only-memory/src/SeedApi.Test/SeedApi.Test.Custom.props new file mode 100644 index 00000000000..55e683b0772 --- /dev/null +++ b/seed/csharp-model/grpc-proto-exhaustive/read-only-memory/src/SeedApi.Test/SeedApi.Test.Custom.props @@ -0,0 +1,7 @@ + + + \ No newline at end of file diff --git a/seed/csharp-model/grpc-proto-exhaustive/read-only-memory/src/SeedApi.Test/SeedApi.Test.csproj b/seed/csharp-model/grpc-proto-exhaustive/read-only-memory/src/SeedApi.Test/SeedApi.Test.csproj new file mode 100644 index 00000000000..8e6f53c1970 --- /dev/null +++ b/seed/csharp-model/grpc-proto-exhaustive/read-only-memory/src/SeedApi.Test/SeedApi.Test.csproj @@ -0,0 +1,33 @@ + + + + net8.0 + enable + enable + + false + true + + + + + + + + all + runtime; build; native; contentfiles; analyzers; buildtransitive + + + all + runtime; build; native; contentfiles; analyzers; buildtransitive + + + + + + + + + + + \ No newline at end of file diff --git a/seed/csharp-model/grpc-proto-exhaustive/read-only-memory/src/SeedApi.sln b/seed/csharp-model/grpc-proto-exhaustive/read-only-memory/src/SeedApi.sln new file mode 100644 index 00000000000..b2a3752ef47 --- /dev/null +++ b/seed/csharp-model/grpc-proto-exhaustive/read-only-memory/src/SeedApi.sln @@ -0,0 +1,28 @@ + +Microsoft Visual Studio Solution File, Format Version 12.00 +# Visual Studio Version 17 +VisualStudioVersion = 17.0.31903.59 +MinimumVisualStudioVersion = 10.0.40219.1 +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SeedApi", "SeedApi\SeedApi.csproj", "{ED6C4CB1-1D71-43C1-A3F6-464D91AC3999}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SeedApi.Test", "SeedApi.Test\SeedApi.Test.csproj", "{7A284A00-69B8-4F36-8DC1-67C34471D003}" +EndProject +Global + GlobalSection(SolutionConfigurationPlatforms) = preSolution + Debug|Any CPU = Debug|Any CPU + Release|Any CPU = Release|Any CPU + EndGlobalSection + GlobalSection(SolutionProperties) = preSolution + HideSolutionNode = FALSE + EndGlobalSection + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {ED6C4CB1-1D71-43C1-A3F6-464D91AC3999}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {ED6C4CB1-1D71-43C1-A3F6-464D91AC3999}.Debug|Any CPU.Build.0 = Debug|Any CPU + {ED6C4CB1-1D71-43C1-A3F6-464D91AC3999}.Release|Any CPU.ActiveCfg = Release|Any CPU + {ED6C4CB1-1D71-43C1-A3F6-464D91AC3999}.Release|Any CPU.Build.0 = Release|Any CPU + {7A284A00-69B8-4F36-8DC1-67C34471D003}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {7A284A00-69B8-4F36-8DC1-67C34471D003}.Debug|Any CPU.Build.0 = Debug|Any CPU + {7A284A00-69B8-4F36-8DC1-67C34471D003}.Release|Any CPU.ActiveCfg = Release|Any CPU + {7A284A00-69B8-4F36-8DC1-67C34471D003}.Release|Any CPU.Build.0 = Release|Any CPU + EndGlobalSection +EndGlobal diff --git a/seed/csharp-model/grpc-proto-exhaustive/read-only-memory/src/SeedApi/Column.cs b/seed/csharp-model/grpc-proto-exhaustive/read-only-memory/src/SeedApi/Column.cs new file mode 100644 index 00000000000..8849268e11a --- /dev/null +++ b/seed/csharp-model/grpc-proto-exhaustive/read-only-memory/src/SeedApi/Column.cs @@ -0,0 +1,64 @@ +using System.Text.Json.Serialization; +using SeedApi.Core; +using Proto = Data.V1.Grpc; + +#nullable enable + +namespace SeedApi; + +public record Column +{ + [JsonPropertyName("id")] + public required string Id { get; set; } + + [JsonPropertyName("values")] + public ReadOnlyMemory Values { get; set; } + + [JsonPropertyName("metadata")] + public Metadata? Metadata { get; set; } + + [JsonPropertyName("indexedData")] + public IndexedData? IndexedData { get; set; } + + public override string ToString() + { + return JsonUtils.Serialize(this); + } + + /// + /// Maps the Column type into its Protobuf-equivalent representation. + /// + internal Proto.Column ToProto() + { + var result = new Proto.Column(); + result.Id = Id; + if (!Values.IsEmpty) + { + result.Values.AddRange(Values.ToArray()); + } + if (Metadata != null) + { + result.Metadata = Metadata.ToProto(); + } + if (IndexedData != null) + { + result.IndexedData = IndexedData.ToProto(); + } + return result; + } + + /// + /// Returns a new Column type from its Protobuf-equivalent representation. + /// + internal static Column FromProto(Proto.Column value) + { + return new Column + { + Id = value.Id, + Values = value.Values?.ToArray() ?? new ReadOnlyMemory(), + Metadata = value.Metadata != null ? Metadata.FromProto(value.Metadata) : null, + IndexedData = + value.IndexedData != null ? IndexedData.FromProto(value.IndexedData) : null, + }; + } +} diff --git a/seed/csharp-model/grpc-proto-exhaustive/read-only-memory/src/SeedApi/Core/CollectionItemSerializer.cs b/seed/csharp-model/grpc-proto-exhaustive/read-only-memory/src/SeedApi/Core/CollectionItemSerializer.cs new file mode 100644 index 00000000000..af2c9adf7a7 --- /dev/null +++ b/seed/csharp-model/grpc-proto-exhaustive/read-only-memory/src/SeedApi/Core/CollectionItemSerializer.cs @@ -0,0 +1,91 @@ +using System; +using System.Collections.Generic; +using System.Text.Json; +using System.Text.Json.Serialization; + +namespace SeedApi.Core; + +/// +/// Json collection converter. +/// +/// Type of item to convert. +/// Converter to use for individual items. +internal class CollectionItemSerializer + : JsonConverter> + where TConverterType : JsonConverter +{ + /// + /// Reads a json string and deserializes it into an object. + /// + /// Json reader. + /// Type to convert. + /// Serializer options. + /// Created object. + public override IEnumerable? Read( + ref Utf8JsonReader reader, + System.Type typeToConvert, + JsonSerializerOptions options + ) + { + if (reader.TokenType == JsonTokenType.Null) + { + return default; + } + + var jsonSerializerOptions = new JsonSerializerOptions(options); + jsonSerializerOptions.Converters.Clear(); + jsonSerializerOptions.Converters.Add(Activator.CreateInstance()); + + var returnValue = new List(); + + while (reader.TokenType != JsonTokenType.EndArray) + { + if (reader.TokenType != JsonTokenType.StartArray) + { + var item = (TDatatype)( + JsonSerializer.Deserialize(ref reader, typeof(TDatatype), jsonSerializerOptions) + ?? throw new Exception( + $"Failed to deserialize collection item of type {typeof(TDatatype)}" + ) + ); + returnValue.Add(item); + } + + reader.Read(); + } + + return returnValue; + } + + /// + /// Writes a json string. + /// + /// Json writer. + /// Value to write. + /// Serializer options. + public override void Write( + Utf8JsonWriter writer, + IEnumerable? value, + JsonSerializerOptions options + ) + { + if (value == null) + { + writer.WriteNullValue(); + return; + } + + JsonSerializerOptions jsonSerializerOptions = new JsonSerializerOptions(options); + jsonSerializerOptions.Converters.Clear(); + jsonSerializerOptions.Converters.Add(Activator.CreateInstance()); + + writer.WriteStartArray(); + + foreach (var data in value) + { + JsonSerializer.Serialize(writer, data, jsonSerializerOptions); + } + + writer.WriteEndArray(); + } +} diff --git a/seed/csharp-model/grpc-proto-exhaustive/read-only-memory/src/SeedApi/Core/Constants.cs b/seed/csharp-model/grpc-proto-exhaustive/read-only-memory/src/SeedApi/Core/Constants.cs new file mode 100644 index 00000000000..ccf4e963cc8 --- /dev/null +++ b/seed/csharp-model/grpc-proto-exhaustive/read-only-memory/src/SeedApi/Core/Constants.cs @@ -0,0 +1,7 @@ +namespace SeedApi.Core; + +internal static class Constants +{ + public const string DateTimeFormat = "yyyy'-'MM'-'dd'T'HH':'mm':'ss.fffK"; + public const string DateFormat = "yyyy-MM-dd"; +} diff --git a/seed/csharp-model/grpc-proto-exhaustive/read-only-memory/src/SeedApi/Core/DateTimeSerializer.cs b/seed/csharp-model/grpc-proto-exhaustive/read-only-memory/src/SeedApi/Core/DateTimeSerializer.cs new file mode 100644 index 00000000000..a39de9c28d7 --- /dev/null +++ b/seed/csharp-model/grpc-proto-exhaustive/read-only-memory/src/SeedApi/Core/DateTimeSerializer.cs @@ -0,0 +1,22 @@ +using System.Globalization; +using System.Text.Json; +using System.Text.Json.Serialization; + +namespace SeedApi.Core; + +internal class DateTimeSerializer : JsonConverter +{ + public override DateTime Read( + ref Utf8JsonReader reader, + System.Type typeToConvert, + JsonSerializerOptions options + ) + { + return DateTime.Parse(reader.GetString()!, null, DateTimeStyles.RoundtripKind); + } + + public override void Write(Utf8JsonWriter writer, DateTime value, JsonSerializerOptions options) + { + writer.WriteStringValue(value.ToString(Constants.DateTimeFormat)); + } +} diff --git a/seed/csharp-model/grpc-proto-exhaustive/read-only-memory/src/SeedApi/Core/EnumSerializer.cs b/seed/csharp-model/grpc-proto-exhaustive/read-only-memory/src/SeedApi/Core/EnumSerializer.cs new file mode 100644 index 00000000000..ac5c0792fbe --- /dev/null +++ b/seed/csharp-model/grpc-proto-exhaustive/read-only-memory/src/SeedApi/Core/EnumSerializer.cs @@ -0,0 +1,53 @@ +using System.Runtime.Serialization; +using System.Text.Json; +using System.Text.Json.Serialization; + +namespace SeedApi.Core; + +internal class EnumSerializer : JsonConverter + where TEnum : struct, System.Enum +{ + private readonly Dictionary _enumToString = new(); + private readonly Dictionary _stringToEnum = new(); + + public EnumSerializer() + { + var type = typeof(TEnum); + var values = Enum.GetValues(type); + + foreach (var value in values) + { + var enumValue = (TEnum)value; + var enumMember = type.GetMember(enumValue.ToString())[0]; + var attr = enumMember + .GetCustomAttributes(typeof(EnumMemberAttribute), false) + .Cast() + .FirstOrDefault(); + + var stringValue = + attr?.Value + ?? value.ToString() + ?? throw new Exception("Unexpected null enum toString value"); + + _enumToString.Add(enumValue, stringValue); + _stringToEnum.Add(stringValue, enumValue); + } + } + + public override TEnum Read( + ref Utf8JsonReader reader, + System.Type typeToConvert, + JsonSerializerOptions options + ) + { + var stringValue = + reader.GetString() + ?? throw new Exception("The JSON value could not be read as a string."); + return _stringToEnum.TryGetValue(stringValue, out var enumValue) ? enumValue : default; + } + + public override void Write(Utf8JsonWriter writer, TEnum value, JsonSerializerOptions options) + { + writer.WriteStringValue(_enumToString[value]); + } +} diff --git a/seed/csharp-model/grpc-proto-exhaustive/read-only-memory/src/SeedApi/Core/JsonConfiguration.cs b/seed/csharp-model/grpc-proto-exhaustive/read-only-memory/src/SeedApi/Core/JsonConfiguration.cs new file mode 100644 index 00000000000..6d871c6e820 --- /dev/null +++ b/seed/csharp-model/grpc-proto-exhaustive/read-only-memory/src/SeedApi/Core/JsonConfiguration.cs @@ -0,0 +1,36 @@ +using System.Text.Json; +using System.Text.Json.Serialization; + +namespace SeedApi.Core; + +internal static partial class JsonOptions +{ + public static readonly JsonSerializerOptions JsonSerializerOptions; + + static JsonOptions() + { + var options = new JsonSerializerOptions + { + Converters = { new DateTimeSerializer(), new OneOfSerializer() }, + WriteIndented = true, + DefaultIgnoreCondition = JsonIgnoreCondition.WhenWritingNull, + }; + ConfigureJsonSerializerOptions(options); + JsonSerializerOptions = options; + } + + static partial void ConfigureJsonSerializerOptions(JsonSerializerOptions defaultOptions); +} + +internal static class JsonUtils +{ + public static string Serialize(T obj) + { + return JsonSerializer.Serialize(obj, JsonOptions.JsonSerializerOptions); + } + + public static T Deserialize(string json) + { + return JsonSerializer.Deserialize(json, JsonOptions.JsonSerializerOptions)!; + } +} diff --git a/seed/csharp-model/grpc-proto-exhaustive/read-only-memory/src/SeedApi/Core/OneOfSerializer.cs b/seed/csharp-model/grpc-proto-exhaustive/read-only-memory/src/SeedApi/Core/OneOfSerializer.cs new file mode 100644 index 00000000000..24ee9268e48 --- /dev/null +++ b/seed/csharp-model/grpc-proto-exhaustive/read-only-memory/src/SeedApi/Core/OneOfSerializer.cs @@ -0,0 +1,69 @@ +using System.Reflection; +using System.Text.Json; +using System.Text.Json.Serialization; +using OneOf; + +namespace SeedApi.Core; + +internal class OneOfSerializer : JsonConverter +{ + public override IOneOf? Read( + ref Utf8JsonReader reader, + System.Type typeToConvert, + JsonSerializerOptions options + ) + { + if (reader.TokenType is JsonTokenType.Null) + return default; + + foreach (var (type, cast) in GetOneOfTypes(typeToConvert)) + { + try + { + var readerCopy = reader; + var result = JsonSerializer.Deserialize(ref readerCopy, type, options); + reader.Skip(); + return (IOneOf)cast.Invoke(null, [result])!; + } + catch (JsonException) { } + } + + throw new JsonException( + $"Cannot deserialize into one of the supported types for {typeToConvert}" + ); + } + + public override void Write(Utf8JsonWriter writer, IOneOf value, JsonSerializerOptions options) + { + JsonSerializer.Serialize(writer, value.Value, options); + } + + private static (System.Type type, MethodInfo cast)[] GetOneOfTypes(System.Type typeToConvert) + { + var casts = typeToConvert + .GetRuntimeMethods() + .Where(m => m.IsSpecialName && m.Name == "op_Implicit") + .ToArray(); + var type = typeToConvert; + while (type != null) + { + if ( + type.IsGenericType + && (type.Name.StartsWith("OneOf`") || type.Name.StartsWith("OneOfBase`")) + ) + { + return type.GetGenericArguments() + .Select(t => (t, casts.First(c => c.GetParameters()[0].ParameterType == t))) + .ToArray(); + } + + type = type.BaseType; + } + throw new InvalidOperationException($"{type} isn't OneOf or OneOfBase"); + } + + public override bool CanConvert(System.Type typeToConvert) + { + return typeof(IOneOf).IsAssignableFrom(typeToConvert); + } +} diff --git a/seed/csharp-model/grpc-proto-exhaustive/read-only-memory/src/SeedApi/Core/Public/Version.cs b/seed/csharp-model/grpc-proto-exhaustive/read-only-memory/src/SeedApi/Core/Public/Version.cs new file mode 100644 index 00000000000..f430a1bf84c --- /dev/null +++ b/seed/csharp-model/grpc-proto-exhaustive/read-only-memory/src/SeedApi/Core/Public/Version.cs @@ -0,0 +1,6 @@ +namespace SeedApi; + +internal class Version +{ + public const string Current = "0.0.1"; +} diff --git a/seed/csharp-model/grpc-proto-exhaustive/read-only-memory/src/SeedApi/DeleteResponse.cs b/seed/csharp-model/grpc-proto-exhaustive/read-only-memory/src/SeedApi/DeleteResponse.cs new file mode 100644 index 00000000000..def64fbd896 --- /dev/null +++ b/seed/csharp-model/grpc-proto-exhaustive/read-only-memory/src/SeedApi/DeleteResponse.cs @@ -0,0 +1,30 @@ +using SeedApi.Core; +using Proto = Data.V1.Grpc; + +#nullable enable + +namespace SeedApi; + +public record DeleteResponse +{ + public override string ToString() + { + return JsonUtils.Serialize(this); + } + + /// + /// Maps the DeleteResponse type into its Protobuf-equivalent representation. + /// + internal Proto.DeleteResponse ToProto() + { + return new Proto.DeleteResponse(); + } + + /// + /// Returns a new DeleteResponse type from its Protobuf-equivalent representation. + /// + internal static DeleteResponse FromProto(Proto.DeleteResponse value) + { + return new DeleteResponse(); + } +} diff --git a/seed/csharp-model/grpc-proto-exhaustive/read-only-memory/src/SeedApi/DescribeResponse.cs b/seed/csharp-model/grpc-proto-exhaustive/read-only-memory/src/SeedApi/DescribeResponse.cs new file mode 100644 index 00000000000..fbd45c674b7 --- /dev/null +++ b/seed/csharp-model/grpc-proto-exhaustive/read-only-memory/src/SeedApi/DescribeResponse.cs @@ -0,0 +1,73 @@ +using System.Text.Json.Serialization; +using SeedApi.Core; +using Proto = Data.V1.Grpc; + +#nullable enable + +namespace SeedApi; + +public record DescribeResponse +{ + [JsonPropertyName("namespaces")] + public Dictionary? Namespaces { get; set; } + + [JsonPropertyName("dimension")] + public uint? Dimension { get; set; } + + [JsonPropertyName("fullness")] + public float? Fullness { get; set; } + + [JsonPropertyName("totalCount")] + public uint? TotalCount { get; set; } + + public override string ToString() + { + return JsonUtils.Serialize(this); + } + + /// + /// Maps the DescribeResponse type into its Protobuf-equivalent representation. + /// + internal Proto.DescribeResponse ToProto() + { + var result = new Proto.DescribeResponse(); + if (Namespaces != null && Namespaces.Any()) + { + foreach (var kvp in Namespaces) + { + result.Namespaces.Add(kvp.Key, kvp.Value.ToProto()); + } + ; + } + if (Dimension != null) + { + result.Dimension = Dimension ?? 0; + } + if (Fullness != null) + { + result.Fullness = Fullness ?? 0.0f; + } + if (TotalCount != null) + { + result.TotalCount = TotalCount ?? 0; + } + return result; + } + + /// + /// Returns a new DescribeResponse type from its Protobuf-equivalent representation. + /// + internal static DescribeResponse FromProto(Proto.DescribeResponse value) + { + return new DescribeResponse + { + Namespaces = value.Namespaces?.ToDictionary( + kvp => kvp.Key, + kvp => NamespaceSummary.FromProto(kvp.Value) + ), + Dimension = value.Dimension, + Fullness = value.Fullness, + TotalCount = value.TotalCount, + }; + } +} diff --git a/seed/csharp-model/grpc-proto-exhaustive/read-only-memory/src/SeedApi/FetchResponse.cs b/seed/csharp-model/grpc-proto-exhaustive/read-only-memory/src/SeedApi/FetchResponse.cs new file mode 100644 index 00000000000..ae595dfdc41 --- /dev/null +++ b/seed/csharp-model/grpc-proto-exhaustive/read-only-memory/src/SeedApi/FetchResponse.cs @@ -0,0 +1,65 @@ +using System.Text.Json.Serialization; +using SeedApi.Core; +using Proto = Data.V1.Grpc; + +#nullable enable + +namespace SeedApi; + +public record FetchResponse +{ + [JsonPropertyName("columns")] + public Dictionary? Columns { get; set; } + + [JsonPropertyName("namespace")] + public string? Namespace { get; set; } + + [JsonPropertyName("usage")] + public Usage? Usage { get; set; } + + public override string ToString() + { + return JsonUtils.Serialize(this); + } + + /// + /// Maps the FetchResponse type into its Protobuf-equivalent representation. + /// + internal Proto.FetchResponse ToProto() + { + var result = new Proto.FetchResponse(); + if (Columns != null && Columns.Any()) + { + foreach (var kvp in Columns) + { + result.Columns.Add(kvp.Key, kvp.Value.ToProto()); + } + ; + } + if (Namespace != null) + { + result.Namespace = Namespace ?? ""; + } + if (Usage != null) + { + result.Usage = Usage.ToProto(); + } + return result; + } + + /// + /// Returns a new FetchResponse type from its Protobuf-equivalent representation. + /// + internal static FetchResponse FromProto(Proto.FetchResponse value) + { + return new FetchResponse + { + Columns = value.Columns?.ToDictionary( + kvp => kvp.Key, + kvp => Column.FromProto(kvp.Value) + ), + Namespace = value.Namespace, + Usage = value.Usage != null ? Usage.FromProto(value.Usage) : null, + }; + } +} diff --git a/seed/csharp-model/grpc-proto-exhaustive/read-only-memory/src/SeedApi/IndexedData.cs b/seed/csharp-model/grpc-proto-exhaustive/read-only-memory/src/SeedApi/IndexedData.cs new file mode 100644 index 00000000000..5f7df404340 --- /dev/null +++ b/seed/csharp-model/grpc-proto-exhaustive/read-only-memory/src/SeedApi/IndexedData.cs @@ -0,0 +1,50 @@ +using System.Text.Json.Serialization; +using SeedApi.Core; +using Proto = Data.V1.Grpc; + +#nullable enable + +namespace SeedApi; + +public record IndexedData +{ + [JsonPropertyName("indices")] + public IEnumerable Indices { get; set; } = new List(); + + [JsonPropertyName("values")] + public ReadOnlyMemory Values { get; set; } + + public override string ToString() + { + return JsonUtils.Serialize(this); + } + + /// + /// Maps the IndexedData type into its Protobuf-equivalent representation. + /// + internal Proto.IndexedData ToProto() + { + var result = new Proto.IndexedData(); + if (Indices.Any()) + { + result.Indices.AddRange(Indices); + } + if (!Values.IsEmpty) + { + result.Values.AddRange(Values.ToArray()); + } + return result; + } + + /// + /// Returns a new IndexedData type from its Protobuf-equivalent representation. + /// + internal static IndexedData FromProto(Proto.IndexedData value) + { + return new IndexedData + { + Indices = value.Indices?.ToList() ?? new List(), + Values = value.Values?.ToArray() ?? new ReadOnlyMemory(), + }; + } +} diff --git a/seed/csharp-model/grpc-proto-exhaustive/read-only-memory/src/SeedApi/ListElement.cs b/seed/csharp-model/grpc-proto-exhaustive/read-only-memory/src/SeedApi/ListElement.cs new file mode 100644 index 00000000000..2044bd62e56 --- /dev/null +++ b/seed/csharp-model/grpc-proto-exhaustive/read-only-memory/src/SeedApi/ListElement.cs @@ -0,0 +1,39 @@ +using System.Text.Json.Serialization; +using SeedApi.Core; +using Proto = Data.V1.Grpc; + +#nullable enable + +namespace SeedApi; + +public record ListElement +{ + [JsonPropertyName("id")] + public string? Id { get; set; } + + public override string ToString() + { + return JsonUtils.Serialize(this); + } + + /// + /// Maps the ListElement type into its Protobuf-equivalent representation. + /// + internal Proto.ListElement ToProto() + { + var result = new Proto.ListElement(); + if (Id != null) + { + result.Id = Id ?? ""; + } + return result; + } + + /// + /// Returns a new ListElement type from its Protobuf-equivalent representation. + /// + internal static ListElement FromProto(Proto.ListElement value) + { + return new ListElement { Id = value.Id }; + } +} diff --git a/seed/csharp-model/grpc-proto-exhaustive/read-only-memory/src/SeedApi/ListResponse.cs b/seed/csharp-model/grpc-proto-exhaustive/read-only-memory/src/SeedApi/ListResponse.cs new file mode 100644 index 00000000000..9d691519a85 --- /dev/null +++ b/seed/csharp-model/grpc-proto-exhaustive/read-only-memory/src/SeedApi/ListResponse.cs @@ -0,0 +1,66 @@ +using System.Text.Json.Serialization; +using SeedApi.Core; +using Proto = Data.V1.Grpc; + +#nullable enable + +namespace SeedApi; + +public record ListResponse +{ + [JsonPropertyName("columns")] + public IEnumerable? Columns { get; set; } + + [JsonPropertyName("pagination")] + public Pagination? Pagination { get; set; } + + [JsonPropertyName("namespace")] + public string? Namespace { get; set; } + + [JsonPropertyName("usage")] + public Usage? Usage { get; set; } + + public override string ToString() + { + return JsonUtils.Serialize(this); + } + + /// + /// Maps the ListResponse type into its Protobuf-equivalent representation. + /// + internal Proto.ListResponse ToProto() + { + var result = new Proto.ListResponse(); + if (Columns != null && Columns.Any()) + { + result.Columns.AddRange(Columns.Select(elem => elem.ToProto())); + } + if (Pagination != null) + { + result.Pagination = Pagination.ToProto(); + } + if (Namespace != null) + { + result.Namespace = Namespace ?? ""; + } + if (Usage != null) + { + result.Usage = Usage.ToProto(); + } + return result; + } + + /// + /// Returns a new ListResponse type from its Protobuf-equivalent representation. + /// + internal static ListResponse FromProto(Proto.ListResponse value) + { + return new ListResponse + { + Columns = value.Columns?.Select(ListElement.FromProto), + Pagination = value.Pagination != null ? Pagination.FromProto(value.Pagination) : null, + Namespace = value.Namespace, + Usage = value.Usage != null ? Usage.FromProto(value.Usage) : null, + }; + } +} diff --git a/seed/csharp-model/grpc-proto-exhaustive/read-only-memory/src/SeedApi/Metadata.cs b/seed/csharp-model/grpc-proto-exhaustive/read-only-memory/src/SeedApi/Metadata.cs new file mode 100644 index 00000000000..2e16aa50b3f --- /dev/null +++ b/seed/csharp-model/grpc-proto-exhaustive/read-only-memory/src/SeedApi/Metadata.cs @@ -0,0 +1,39 @@ +using SeedApi.Core; +using Proto = Google.Protobuf.WellKnownTypes; + +#nullable enable + +namespace SeedApi; + +public sealed class Metadata : Dictionary +{ + public Metadata() { } + + public Metadata(IEnumerable> value) + : base(value.ToDictionary(e => e.Key, e => e.Value)) { } + + public override string ToString() + { + return JsonUtils.Serialize(this); + } + + internal Proto.Struct ToProto() + { + var result = new Proto.Struct(); + foreach (var kvp in this) + { + result.Fields[kvp.Key] = kvp.Value?.ToProto(); + } + return result; + } + + internal static Metadata FromProto(Proto.Struct value) + { + var result = new Metadata(); + foreach (var kvp in value.Fields) + { + result[kvp.Key] = kvp.Value != null ? MetadataValue.FromProto(kvp.Value) : null; + } + return result; + } +} diff --git a/seed/csharp-model/grpc-proto-exhaustive/read-only-memory/src/SeedApi/MetadataValue.cs b/seed/csharp-model/grpc-proto-exhaustive/read-only-memory/src/SeedApi/MetadataValue.cs new file mode 100644 index 00000000000..2308676e891 --- /dev/null +++ b/seed/csharp-model/grpc-proto-exhaustive/read-only-memory/src/SeedApi/MetadataValue.cs @@ -0,0 +1,91 @@ +using OneOf; +using SeedApi.Core; +using Proto = Google.Protobuf.WellKnownTypes; + +#nullable enable + +namespace SeedApi; + +public sealed class MetadataValue( + OneOf, Metadata> value +) : OneOfBase, Metadata>(value) +{ + public override string ToString() + { + return JsonUtils.Serialize(this); + } + + internal Proto.Value ToProto() + { + return Match( + Proto.Value.ForString, + Proto.Value.ForNumber, + Proto.Value.ForBool, + list => new Proto.Value + { + ListValue = new Proto.ListValue + { + Values = { list.Select(item => item?.ToProto()) }, + }, + }, + nested => new Proto.Value { StructValue = nested.ToProto() } + ); + } + + internal static MetadataValue? FromProto(Proto.Value value) + { + return value.KindCase switch + { + Proto.Value.KindOneofCase.StringValue => value.StringValue, + Proto.Value.KindOneofCase.NumberValue => value.NumberValue, + Proto.Value.KindOneofCase.BoolValue => value.BoolValue, + Proto.Value.KindOneofCase.ListValue => value + .ListValue.Values.Select(FromProto) + .ToList(), + Proto.Value.KindOneofCase.StructValue => Metadata.FromProto(value.StructValue), + _ => null, + }; + } + + public static implicit operator MetadataValue(string value) => new(value); + + public static implicit operator MetadataValue(bool value) => new(value); + + public static implicit operator MetadataValue(double value) => new(value); + + public static implicit operator MetadataValue(Metadata value) => new(value); + + public static implicit operator MetadataValue(MetadataValue?[] value) => new(value); + + public static implicit operator MetadataValue(List value) => new(value); + + public static implicit operator MetadataValue(string[] value) => + new(value.Select(v => new MetadataValue(v)).ToList()); + + public static implicit operator MetadataValue(double[] value) => + new(value.Select(v => new MetadataValue(v)).ToList()); + + public static implicit operator MetadataValue(double?[] value) => + new(value.Select(v => v != null ? new MetadataValue(v.Value) : null).ToList()); + + public static implicit operator MetadataValue(bool[] value) => + new(value.Select(v => new MetadataValue(v)).ToList()); + + public static implicit operator MetadataValue(bool?[] value) => + new(value.Select(v => v != null ? new MetadataValue(v.Value) : null).ToList()); + + public static implicit operator MetadataValue(List value) => + new(value.Select(v => new MetadataValue(v)).ToList()); + + public static implicit operator MetadataValue(List value) => + new(value.Select(v => new MetadataValue(v)).ToList()); + + public static implicit operator MetadataValue(List value) => + new(value.Select(v => v != null ? new MetadataValue(v.Value) : null).ToList()); + + public static implicit operator MetadataValue(List value) => + new(value.Select(v => new MetadataValue(v)).ToList()); + + public static implicit operator MetadataValue(List value) => + new(value.Select(v => v != null ? new MetadataValue(v.Value) : null).ToList()); +} diff --git a/seed/csharp-model/grpc-proto-exhaustive/read-only-memory/src/SeedApi/NamespaceSummary.cs b/seed/csharp-model/grpc-proto-exhaustive/read-only-memory/src/SeedApi/NamespaceSummary.cs new file mode 100644 index 00000000000..da0573827da --- /dev/null +++ b/seed/csharp-model/grpc-proto-exhaustive/read-only-memory/src/SeedApi/NamespaceSummary.cs @@ -0,0 +1,39 @@ +using System.Text.Json.Serialization; +using SeedApi.Core; +using Proto = Data.V1.Grpc; + +#nullable enable + +namespace SeedApi; + +public record NamespaceSummary +{ + [JsonPropertyName("count")] + public uint? Count { get; set; } + + public override string ToString() + { + return JsonUtils.Serialize(this); + } + + /// + /// Maps the NamespaceSummary type into its Protobuf-equivalent representation. + /// + internal Proto.NamespaceSummary ToProto() + { + var result = new Proto.NamespaceSummary(); + if (Count != null) + { + result.Count = Count ?? 0; + } + return result; + } + + /// + /// Returns a new NamespaceSummary type from its Protobuf-equivalent representation. + /// + internal static NamespaceSummary FromProto(Proto.NamespaceSummary value) + { + return new NamespaceSummary { Count = value.Count }; + } +} diff --git a/seed/csharp-model/grpc-proto-exhaustive/read-only-memory/src/SeedApi/Pagination.cs b/seed/csharp-model/grpc-proto-exhaustive/read-only-memory/src/SeedApi/Pagination.cs new file mode 100644 index 00000000000..87a67db48af --- /dev/null +++ b/seed/csharp-model/grpc-proto-exhaustive/read-only-memory/src/SeedApi/Pagination.cs @@ -0,0 +1,39 @@ +using System.Text.Json.Serialization; +using SeedApi.Core; +using Proto = Data.V1.Grpc; + +#nullable enable + +namespace SeedApi; + +public record Pagination +{ + [JsonPropertyName("next")] + public string? Next { get; set; } + + public override string ToString() + { + return JsonUtils.Serialize(this); + } + + /// + /// Maps the Pagination type into its Protobuf-equivalent representation. + /// + internal Proto.Pagination ToProto() + { + var result = new Proto.Pagination(); + if (Next != null) + { + result.Next = Next ?? ""; + } + return result; + } + + /// + /// Returns a new Pagination type from its Protobuf-equivalent representation. + /// + internal static Pagination FromProto(Proto.Pagination value) + { + return new Pagination { Next = value.Next }; + } +} diff --git a/seed/csharp-model/grpc-proto-exhaustive/read-only-memory/src/SeedApi/QueryColumn.cs b/seed/csharp-model/grpc-proto-exhaustive/read-only-memory/src/SeedApi/QueryColumn.cs new file mode 100644 index 00000000000..63b931b813b --- /dev/null +++ b/seed/csharp-model/grpc-proto-exhaustive/read-only-memory/src/SeedApi/QueryColumn.cs @@ -0,0 +1,75 @@ +using System.Text.Json.Serialization; +using SeedApi.Core; +using Proto = Data.V1.Grpc; + +#nullable enable + +namespace SeedApi; + +public record QueryColumn +{ + [JsonPropertyName("values")] + public ReadOnlyMemory Values { get; set; } + + [JsonPropertyName("topK")] + public uint? TopK { get; set; } + + [JsonPropertyName("namespace")] + public string? Namespace { get; set; } + + [JsonPropertyName("filter")] + public Metadata? Filter { get; set; } + + [JsonPropertyName("indexedData")] + public IndexedData? IndexedData { get; set; } + + public override string ToString() + { + return JsonUtils.Serialize(this); + } + + /// + /// Maps the QueryColumn type into its Protobuf-equivalent representation. + /// + internal Proto.QueryColumn ToProto() + { + var result = new Proto.QueryColumn(); + if (!Values.IsEmpty) + { + result.Values.AddRange(Values.ToArray()); + } + if (TopK != null) + { + result.TopK = TopK ?? 0; + } + if (Namespace != null) + { + result.Namespace = Namespace ?? ""; + } + if (Filter != null) + { + result.Filter = Filter.ToProto(); + } + if (IndexedData != null) + { + result.IndexedData = IndexedData.ToProto(); + } + return result; + } + + /// + /// Returns a new QueryColumn type from its Protobuf-equivalent representation. + /// + internal static QueryColumn FromProto(Proto.QueryColumn value) + { + return new QueryColumn + { + Values = value.Values?.ToArray() ?? new ReadOnlyMemory(), + TopK = value.TopK, + Namespace = value.Namespace, + Filter = value.Filter != null ? Metadata.FromProto(value.Filter) : null, + IndexedData = + value.IndexedData != null ? IndexedData.FromProto(value.IndexedData) : null, + }; + } +} diff --git a/seed/csharp-model/grpc-proto-exhaustive/read-only-memory/src/SeedApi/QueryResponse.cs b/seed/csharp-model/grpc-proto-exhaustive/read-only-memory/src/SeedApi/QueryResponse.cs new file mode 100644 index 00000000000..c4786b94639 --- /dev/null +++ b/seed/csharp-model/grpc-proto-exhaustive/read-only-memory/src/SeedApi/QueryResponse.cs @@ -0,0 +1,66 @@ +using System.Text.Json.Serialization; +using SeedApi.Core; +using Proto = Data.V1.Grpc; + +#nullable enable + +namespace SeedApi; + +public record QueryResponse +{ + [JsonPropertyName("results")] + public IEnumerable? Results { get; set; } + + [JsonPropertyName("matches")] + public IEnumerable? Matches { get; set; } + + [JsonPropertyName("namespace")] + public string? Namespace { get; set; } + + [JsonPropertyName("usage")] + public Usage? Usage { get; set; } + + public override string ToString() + { + return JsonUtils.Serialize(this); + } + + /// + /// Maps the QueryResponse type into its Protobuf-equivalent representation. + /// + internal Proto.QueryResponse ToProto() + { + var result = new Proto.QueryResponse(); + if (Results != null && Results.Any()) + { + result.Results.AddRange(Results.Select(elem => elem.ToProto())); + } + if (Matches != null && Matches.Any()) + { + result.Matches.AddRange(Matches.Select(elem => elem.ToProto())); + } + if (Namespace != null) + { + result.Namespace = Namespace ?? ""; + } + if (Usage != null) + { + result.Usage = Usage.ToProto(); + } + return result; + } + + /// + /// Returns a new QueryResponse type from its Protobuf-equivalent representation. + /// + internal static QueryResponse FromProto(Proto.QueryResponse value) + { + return new QueryResponse + { + Results = value.Results?.Select(QueryResult.FromProto), + Matches = value.Matches?.Select(ScoredColumn.FromProto), + Namespace = value.Namespace, + Usage = value.Usage != null ? Usage.FromProto(value.Usage) : null, + }; + } +} diff --git a/seed/csharp-model/grpc-proto-exhaustive/read-only-memory/src/SeedApi/QueryResult.cs b/seed/csharp-model/grpc-proto-exhaustive/read-only-memory/src/SeedApi/QueryResult.cs new file mode 100644 index 00000000000..8c8988af1fd --- /dev/null +++ b/seed/csharp-model/grpc-proto-exhaustive/read-only-memory/src/SeedApi/QueryResult.cs @@ -0,0 +1,50 @@ +using System.Text.Json.Serialization; +using SeedApi.Core; +using Proto = Data.V1.Grpc; + +#nullable enable + +namespace SeedApi; + +public record QueryResult +{ + [JsonPropertyName("matches")] + public IEnumerable? Matches { get; set; } + + [JsonPropertyName("namespace")] + public string? Namespace { get; set; } + + public override string ToString() + { + return JsonUtils.Serialize(this); + } + + /// + /// Maps the QueryResult type into its Protobuf-equivalent representation. + /// + internal Proto.QueryResult ToProto() + { + var result = new Proto.QueryResult(); + if (Matches != null && Matches.Any()) + { + result.Matches.AddRange(Matches.Select(elem => elem.ToProto())); + } + if (Namespace != null) + { + result.Namespace = Namespace ?? ""; + } + return result; + } + + /// + /// Returns a new QueryResult type from its Protobuf-equivalent representation. + /// + internal static QueryResult FromProto(Proto.QueryResult value) + { + return new QueryResult + { + Matches = value.Matches?.Select(ScoredColumn.FromProto), + Namespace = value.Namespace, + }; + } +} diff --git a/seed/csharp-model/grpc-proto-exhaustive/read-only-memory/src/SeedApi/ScoredColumn.cs b/seed/csharp-model/grpc-proto-exhaustive/read-only-memory/src/SeedApi/ScoredColumn.cs new file mode 100644 index 00000000000..543713c18e8 --- /dev/null +++ b/seed/csharp-model/grpc-proto-exhaustive/read-only-memory/src/SeedApi/ScoredColumn.cs @@ -0,0 +1,72 @@ +using System.Text.Json.Serialization; +using SeedApi.Core; +using Proto = Data.V1.Grpc; + +#nullable enable + +namespace SeedApi; + +public record ScoredColumn +{ + [JsonPropertyName("id")] + public required string Id { get; set; } + + [JsonPropertyName("score")] + public float? Score { get; set; } + + [JsonPropertyName("values")] + public ReadOnlyMemory? Values { get; set; } + + [JsonPropertyName("metadata")] + public Metadata? Metadata { get; set; } + + [JsonPropertyName("indexedData")] + public IndexedData? IndexedData { get; set; } + + public override string ToString() + { + return JsonUtils.Serialize(this); + } + + /// + /// Maps the ScoredColumn type into its Protobuf-equivalent representation. + /// + internal Proto.ScoredColumn ToProto() + { + var result = new Proto.ScoredColumn(); + result.Id = Id; + if (Score != null) + { + result.Score = Score ?? 0.0f; + } + if (Values != null && !Values.Value.IsEmpty) + { + result.Values.AddRange(Values.Value.ToArray()); + } + if (Metadata != null) + { + result.Metadata = Metadata.ToProto(); + } + if (IndexedData != null) + { + result.IndexedData = IndexedData.ToProto(); + } + return result; + } + + /// + /// Returns a new ScoredColumn type from its Protobuf-equivalent representation. + /// + internal static ScoredColumn FromProto(Proto.ScoredColumn value) + { + return new ScoredColumn + { + Id = value.Id, + Score = value.Score, + Values = value.Values?.ToArray(), + Metadata = value.Metadata != null ? Metadata.FromProto(value.Metadata) : null, + IndexedData = + value.IndexedData != null ? IndexedData.FromProto(value.IndexedData) : null, + }; + } +} diff --git a/seed/csharp-model/grpc-proto-exhaustive/read-only-memory/src/SeedApi/SeedApi.Custom.props b/seed/csharp-model/grpc-proto-exhaustive/read-only-memory/src/SeedApi/SeedApi.Custom.props new file mode 100644 index 00000000000..70df2849401 --- /dev/null +++ b/seed/csharp-model/grpc-proto-exhaustive/read-only-memory/src/SeedApi/SeedApi.Custom.props @@ -0,0 +1,20 @@ + + + + \ No newline at end of file diff --git a/seed/csharp-model/grpc-proto-exhaustive/read-only-memory/src/SeedApi/SeedApi.csproj b/seed/csharp-model/grpc-proto-exhaustive/read-only-memory/src/SeedApi/SeedApi.csproj new file mode 100644 index 00000000000..cac753daf6d --- /dev/null +++ b/seed/csharp-model/grpc-proto-exhaustive/read-only-memory/src/SeedApi/SeedApi.csproj @@ -0,0 +1,65 @@ + + + + + net462;net8.0;net7.0;net6.0;netstandard2.0 + enable + 12 + enable + 0.0.1 + $(Version) + $(Version) + README.md + https://github.com/grpc-proto-exhaustive/fern + true + + + + + + + + + runtime; build; native; contentfiles; analyzers; buildtransitive + all + + + + + + + + + + + + + + runtime; build; native; contentfiles; analyzers; buildtransitive + all + + + + + + + + + + + + + + + + + + + + + <_Parameter1>SeedApi.Test + + + + + diff --git a/seed/csharp-model/grpc-proto-exhaustive/read-only-memory/src/SeedApi/UpdateResponse.cs b/seed/csharp-model/grpc-proto-exhaustive/read-only-memory/src/SeedApi/UpdateResponse.cs new file mode 100644 index 00000000000..0d7e3f61b18 --- /dev/null +++ b/seed/csharp-model/grpc-proto-exhaustive/read-only-memory/src/SeedApi/UpdateResponse.cs @@ -0,0 +1,30 @@ +using SeedApi.Core; +using Proto = Data.V1.Grpc; + +#nullable enable + +namespace SeedApi; + +public record UpdateResponse +{ + public override string ToString() + { + return JsonUtils.Serialize(this); + } + + /// + /// Maps the UpdateResponse type into its Protobuf-equivalent representation. + /// + internal Proto.UpdateResponse ToProto() + { + return new Proto.UpdateResponse(); + } + + /// + /// Returns a new UpdateResponse type from its Protobuf-equivalent representation. + /// + internal static UpdateResponse FromProto(Proto.UpdateResponse value) + { + return new UpdateResponse(); + } +} diff --git a/seed/csharp-model/grpc-proto-exhaustive/read-only-memory/src/SeedApi/UploadResponse.cs b/seed/csharp-model/grpc-proto-exhaustive/read-only-memory/src/SeedApi/UploadResponse.cs new file mode 100644 index 00000000000..23286a04145 --- /dev/null +++ b/seed/csharp-model/grpc-proto-exhaustive/read-only-memory/src/SeedApi/UploadResponse.cs @@ -0,0 +1,39 @@ +using System.Text.Json.Serialization; +using SeedApi.Core; +using Proto = Data.V1.Grpc; + +#nullable enable + +namespace SeedApi; + +public record UploadResponse +{ + [JsonPropertyName("count")] + public uint? Count { get; set; } + + public override string ToString() + { + return JsonUtils.Serialize(this); + } + + /// + /// Maps the UploadResponse type into its Protobuf-equivalent representation. + /// + internal Proto.UploadResponse ToProto() + { + var result = new Proto.UploadResponse(); + if (Count != null) + { + result.Count = Count ?? 0; + } + return result; + } + + /// + /// Returns a new UploadResponse type from its Protobuf-equivalent representation. + /// + internal static UploadResponse FromProto(Proto.UploadResponse value) + { + return new UploadResponse { Count = value.Count }; + } +} diff --git a/seed/csharp-model/grpc-proto-exhaustive/read-only-memory/src/SeedApi/Usage.cs b/seed/csharp-model/grpc-proto-exhaustive/read-only-memory/src/SeedApi/Usage.cs new file mode 100644 index 00000000000..e5921bf2191 --- /dev/null +++ b/seed/csharp-model/grpc-proto-exhaustive/read-only-memory/src/SeedApi/Usage.cs @@ -0,0 +1,39 @@ +using System.Text.Json.Serialization; +using SeedApi.Core; +using Proto = Data.V1.Grpc; + +#nullable enable + +namespace SeedApi; + +public record Usage +{ + [JsonPropertyName("units")] + public uint? Units { get; set; } + + public override string ToString() + { + return JsonUtils.Serialize(this); + } + + /// + /// Maps the Usage type into its Protobuf-equivalent representation. + /// + internal Proto.Usage ToProto() + { + var result = new Proto.Usage(); + if (Units != null) + { + result.Units = Units ?? 0; + } + return result; + } + + /// + /// Returns a new Usage type from its Protobuf-equivalent representation. + /// + internal static Usage FromProto(Proto.Usage value) + { + return new Usage { Units = value.Units }; + } +} diff --git a/seed/csharp-model/grpc-proto/.github/workflows/ci.yml b/seed/csharp-model/grpc-proto/.github/workflows/ci.yml new file mode 100644 index 00000000000..bc4fa1a98cb --- /dev/null +++ b/seed/csharp-model/grpc-proto/.github/workflows/ci.yml @@ -0,0 +1,69 @@ +name: ci + +on: [push] + +jobs: + compile: + runs-on: ubuntu-latest + + steps: + - name: Checkout repo + uses: actions/checkout@v3 + + - uses: actions/checkout@master + + - name: Setup .NET + uses: actions/setup-dotnet@v1 + with: + dotnet-version: 8.x + + - name: Install tools + run: | + dotnet tool restore + + - name: Build Release + run: dotnet build src -c Release /p:ContinuousIntegrationBuild=true + + unit-tests: + runs-on: ubuntu-latest + + steps: + - name: Checkout repo + uses: actions/checkout@v3 + + - uses: actions/checkout@master + + - name: Setup .NET + uses: actions/setup-dotnet@v1 + with: + dotnet-version: 8.x + + - name: Install tools + run: | + dotnet tool restore + + - name: Run Tests + run: | + dotnet test src + + + publish: + needs: [compile] + if: github.event_name == 'push' && contains(github.ref, 'refs/tags/') + runs-on: ubuntu-latest + + steps: + - name: Checkout repo + uses: actions/checkout@v3 + + - name: Setup .NET + uses: actions/setup-dotnet@v1 + with: + dotnet-version: 8.x + + - name: Publish + env: + NUGET_API_KEY: ${{ secrets.NUGET_API_TOKEN }} + run: | + dotnet pack src -c Release + dotnet nuget push src/SeedApi/bin/Release/*.nupkg --api-key $NUGET_API_KEY --source "nuget.org" diff --git a/seed/csharp-model/grpc-proto/.gitignore b/seed/csharp-model/grpc-proto/.gitignore new file mode 100644 index 00000000000..11014f2b33d --- /dev/null +++ b/seed/csharp-model/grpc-proto/.gitignore @@ -0,0 +1,484 @@ +## Ignore Visual Studio temporary files, build results, and +## files generated by popular Visual Studio add-ons. + +## This is based on `dotnet new gitignore` and customized by Fern + +# dotenv files +.env + +# User-specific files +*.rsuser +*.suo +*.user +*.userosscache +*.sln.docstates + +# User-specific files (MonoDevelop/Xamarin Studio) +*.userprefs + +# Mono auto generated files +mono_crash.* + +# Build results +[Dd]ebug/ +[Dd]ebugPublic/ +# [Rr]elease/ (Ignored by Fern) +# [Rr]eleases/ (Ignored by Fern) +x64/ +x86/ +[Ww][Ii][Nn]32/ +[Aa][Rr][Mm]/ +[Aa][Rr][Mm]64/ +bld/ +[Bb]in/ +[Oo]bj/ +# [Ll]og/ (Ignored by Fern) +# [Ll]ogs/ (Ignored by Fern) + +# Visual Studio 2015/2017 cache/options directory +.vs/ +# Uncomment if you have tasks that create the project's static files in wwwroot +#wwwroot/ + +# Visual Studio 2017 auto generated files +Generated\ Files/ + +# MSTest test Results +[Tt]est[Rr]esult*/ +[Bb]uild[Ll]og.* + +# NUnit +*.VisualState.xml +TestResult.xml +nunit-*.xml + +# Build Results of an ATL Project +[Dd]ebugPS/ +[Rr]eleasePS/ +dlldata.c + +# Benchmark Results +BenchmarkDotNet.Artifacts/ + +# .NET +project.lock.json +project.fragment.lock.json +artifacts/ + +# Tye +.tye/ + +# ASP.NET Scaffolding +ScaffoldingReadMe.txt + +# StyleCop +StyleCopReport.xml + +# Files built by Visual Studio +*_i.c +*_p.c +*_h.h +*.ilk +*.meta +*.obj +*.iobj +*.pch +*.pdb +*.ipdb +*.pgc +*.pgd +*.rsp +*.sbr +*.tlb +*.tli +*.tlh +*.tmp +*.tmp_proj +*_wpftmp.csproj +*.log +*.tlog +*.vspscc +*.vssscc +.builds +*.pidb +*.svclog +*.scc + +# Chutzpah Test files +_Chutzpah* + +# Visual C++ cache files +ipch/ +*.aps +*.ncb +*.opendb +*.opensdf +*.sdf +*.cachefile +*.VC.db +*.VC.VC.opendb + +# Visual Studio profiler +*.psess +*.vsp +*.vspx +*.sap + +# Visual Studio Trace Files +*.e2e + +# TFS 2012 Local Workspace +$tf/ + +# Guidance Automation Toolkit +*.gpState + +# ReSharper is a .NET coding add-in +_ReSharper*/ +*.[Rr]e[Ss]harper +*.DotSettings.user + +# TeamCity is a build add-in +_TeamCity* + +# DotCover is a Code Coverage Tool +*.dotCover + +# AxoCover is a Code Coverage Tool +.axoCover/* +!.axoCover/settings.json + +# Coverlet is a free, cross platform Code Coverage Tool +coverage*.json +coverage*.xml +coverage*.info + +# Visual Studio code coverage results +*.coverage +*.coveragexml + +# NCrunch +_NCrunch_* +.*crunch*.local.xml +nCrunchTemp_* + +# MightyMoose +*.mm.* +AutoTest.Net/ + +# Web workbench (sass) +.sass-cache/ + +# Installshield output folder +[Ee]xpress/ + +# DocProject is a documentation generator add-in +DocProject/buildhelp/ +DocProject/Help/*.HxT +DocProject/Help/*.HxC +DocProject/Help/*.hhc +DocProject/Help/*.hhk +DocProject/Help/*.hhp +DocProject/Help/Html2 +DocProject/Help/html + +# Click-Once directory +publish/ + +# Publish Web Output +*.[Pp]ublish.xml +*.azurePubxml +# Note: Comment the next line if you want to checkin your web deploy settings, +# but database connection strings (with potential passwords) will be unencrypted +*.pubxml +*.publishproj + +# Microsoft Azure Web App publish settings. Comment the next line if you want to +# checkin your Azure Web App publish settings, but sensitive information contained +# in these scripts will be unencrypted +PublishScripts/ + +# NuGet Packages +*.nupkg +# NuGet Symbol Packages +*.snupkg +# The packages folder can be ignored because of Package Restore +**/[Pp]ackages/* +# except build/, which is used as an MSBuild target. +!**/[Pp]ackages/build/ +# Uncomment if necessary however generally it will be regenerated when needed +#!**/[Pp]ackages/repositories.config +# NuGet v3's project.json files produces more ignorable files +*.nuget.props +*.nuget.targets + +# Microsoft Azure Build Output +csx/ +*.build.csdef + +# Microsoft Azure Emulator +ecf/ +rcf/ + +# Windows Store app package directories and files +AppPackages/ +BundleArtifacts/ +Package.StoreAssociation.xml +_pkginfo.txt +*.appx +*.appxbundle +*.appxupload + +# Visual Studio cache files +# files ending in .cache can be ignored +*.[Cc]ache +# but keep track of directories ending in .cache +!?*.[Cc]ache/ + +# Others +ClientBin/ +~$* +*~ +*.dbmdl +*.dbproj.schemaview +*.jfm +*.pfx +*.publishsettings +orleans.codegen.cs + +# Including strong name files can present a security risk +# (https://github.com/github/gitignore/pull/2483#issue-259490424) +#*.snk + +# Since there are multiple workflows, uncomment next line to ignore bower_components +# (https://github.com/github/gitignore/pull/1529#issuecomment-104372622) +#bower_components/ + +# RIA/Silverlight projects +Generated_Code/ + +# Backup & report files from converting an old project file +# to a newer Visual Studio version. Backup files are not needed, +# because we have git ;-) +_UpgradeReport_Files/ +Backup*/ +UpgradeLog*.XML +UpgradeLog*.htm +ServiceFabricBackup/ +*.rptproj.bak + +# SQL Server files +*.mdf +*.ldf +*.ndf + +# Business Intelligence projects +*.rdl.data +*.bim.layout +*.bim_*.settings +*.rptproj.rsuser +*- [Bb]ackup.rdl +*- [Bb]ackup ([0-9]).rdl +*- [Bb]ackup ([0-9][0-9]).rdl + +# Microsoft Fakes +FakesAssemblies/ + +# GhostDoc plugin setting file +*.GhostDoc.xml + +# Node.js Tools for Visual Studio +.ntvs_analysis.dat +node_modules/ + +# Visual Studio 6 build log +*.plg + +# Visual Studio 6 workspace options file +*.opt + +# Visual Studio 6 auto-generated workspace file (contains which files were open etc.) +*.vbw + +# Visual Studio 6 auto-generated project file (contains which files were open etc.) +*.vbp + +# Visual Studio 6 workspace and project file (working project files containing files to include in project) +*.dsw +*.dsp + +# Visual Studio 6 technical files +*.ncb +*.aps + +# Visual Studio LightSwitch build output +**/*.HTMLClient/GeneratedArtifacts +**/*.DesktopClient/GeneratedArtifacts +**/*.DesktopClient/ModelManifest.xml +**/*.Server/GeneratedArtifacts +**/*.Server/ModelManifest.xml +_Pvt_Extensions + +# Paket dependency manager +.paket/paket.exe +paket-files/ + +# FAKE - F# Make +.fake/ + +# CodeRush personal settings +.cr/personal + +# Python Tools for Visual Studio (PTVS) +__pycache__/ +*.pyc + +# Cake - Uncomment if you are using it +# tools/** +# !tools/packages.config + +# Tabs Studio +*.tss + +# Telerik's JustMock configuration file +*.jmconfig + +# BizTalk build output +*.btp.cs +*.btm.cs +*.odx.cs +*.xsd.cs + +# OpenCover UI analysis results +OpenCover/ + +# Azure Stream Analytics local run output +ASALocalRun/ + +# MSBuild Binary and Structured Log +*.binlog + +# NVidia Nsight GPU debugger configuration file +*.nvuser + +# MFractors (Xamarin productivity tool) working folder +.mfractor/ + +# Local History for Visual Studio +.localhistory/ + +# Visual Studio History (VSHistory) files +.vshistory/ + +# BeatPulse healthcheck temp database +healthchecksdb + +# Backup folder for Package Reference Convert tool in Visual Studio 2017 +MigrationBackup/ + +# Ionide (cross platform F# VS Code tools) working folder +.ionide/ + +# Fody - auto-generated XML schema +FodyWeavers.xsd + +# VS Code files for those working on multiple tools +.vscode/* +!.vscode/settings.json +!.vscode/tasks.json +!.vscode/launch.json +!.vscode/extensions.json +*.code-workspace + +# Local History for Visual Studio Code +.history/ + +# Windows Installer files from build outputs +*.cab +*.msi +*.msix +*.msm +*.msp + +# JetBrains Rider +*.sln.iml +.idea + +## +## Visual studio for Mac +## + + +# globs +Makefile.in +*.userprefs +*.usertasks +config.make +config.status +aclocal.m4 +install-sh +autom4te.cache/ +*.tar.gz +tarballs/ +test-results/ + +# Mac bundle stuff +*.dmg +*.app + +# content below from: https://github.com/github/gitignore/blob/master/Global/macOS.gitignore +# General +.DS_Store +.AppleDouble +.LSOverride + +# Icon must end with two \r +Icon + + +# Thumbnails +._* + +# Files that might appear in the root of a volume +.DocumentRevisions-V100 +.fseventsd +.Spotlight-V100 +.TemporaryItems +.Trashes +.VolumeIcon.icns +.com.apple.timemachine.donotpresent + +# Directories potentially created on remote AFP share +.AppleDB +.AppleDesktop +Network Trash Folder +Temporary Items +.apdisk + +# content below from: https://github.com/github/gitignore/blob/master/Global/Windows.gitignore +# Windows thumbnail cache files +Thumbs.db +ehthumbs.db +ehthumbs_vista.db + +# Dump file +*.stackdump + +# Folder config file +[Dd]esktop.ini + +# Recycle Bin used on file shares +$RECYCLE.BIN/ + +# Windows Installer files +*.cab +*.msi +*.msix +*.msm +*.msp + +# Windows shortcuts +*.lnk + +# Vim temporary swap files +*.swp diff --git a/seed/csharp-model/grpc-proto/.mock/fern.config.json b/seed/csharp-model/grpc-proto/.mock/fern.config.json new file mode 100644 index 00000000000..4c8e54ac313 --- /dev/null +++ b/seed/csharp-model/grpc-proto/.mock/fern.config.json @@ -0,0 +1 @@ +{"organization": "fern-test", "version": "*"} \ No newline at end of file diff --git a/seed/csharp-model/grpc-proto/.mock/generators.yml b/seed/csharp-model/grpc-proto/.mock/generators.yml new file mode 100644 index 00000000000..d6b509d39ea --- /dev/null +++ b/seed/csharp-model/grpc-proto/.mock/generators.yml @@ -0,0 +1,6 @@ +api: + - proto: + root: proto + target: proto/user/v1/user.proto + overrides: overrides.yml + local-generation: true \ No newline at end of file diff --git a/seed/csharp-model/grpc-proto/.mock/overrides.yml b/seed/csharp-model/grpc-proto/.mock/overrides.yml new file mode 100644 index 00000000000..bb6db99b0e4 --- /dev/null +++ b/seed/csharp-model/grpc-proto/.mock/overrides.yml @@ -0,0 +1,31 @@ +components: + schemas: + UserModel: + properties: + metadata: + $ref: '#/components/schemas/Metadata' + + CreateRequest: + properties: + metadata: + $ref: '#/components/schemas/Metadata' + + Metadata: + oneOf: + - type: object + additionalProperties: + $ref: '#/components/schemas/MetadataValue' + - type: object + x-fern-encoding: + proto: + type: google.protobuf.Struct + + MetadataValue: + oneOf: + - type: number + format: double + - type: string + - type: boolean + x-fern-encoding: + proto: + type: google.protobuf.Value diff --git a/seed/csharp-model/grpc-proto/.mock/proto/google/api/annotations.proto b/seed/csharp-model/grpc-proto/.mock/proto/google/api/annotations.proto new file mode 100644 index 00000000000..8ff42098404 --- /dev/null +++ b/seed/csharp-model/grpc-proto/.mock/proto/google/api/annotations.proto @@ -0,0 +1,31 @@ +// Copyright 2015 Google LLC +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +syntax = "proto3"; + +package google.api; + +import "google/api/http.proto"; +import "google/protobuf/descriptor.proto"; + +option go_package = "google.golang.org/genproto/googleapis/api/annotations;annotations"; +option java_multiple_files = true; +option java_outer_classname = "AnnotationsProto"; +option java_package = "com.google.api"; +option objc_class_prefix = "GAPI"; + +extend google.protobuf.MethodOptions { + // See `HttpRule`. + HttpRule http = 72295728; +} \ No newline at end of file diff --git a/seed/csharp-model/grpc-proto/.mock/proto/google/api/http.proto b/seed/csharp-model/grpc-proto/.mock/proto/google/api/http.proto new file mode 100644 index 00000000000..c8392381eb9 --- /dev/null +++ b/seed/csharp-model/grpc-proto/.mock/proto/google/api/http.proto @@ -0,0 +1,379 @@ +// Copyright 2023 Google LLC +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +syntax = "proto3"; + +package google.api; + +option cc_enable_arenas = true; +option go_package = "google.golang.org/genproto/googleapis/api/annotations;annotations"; +option java_multiple_files = true; +option java_outer_classname = "HttpProto"; +option java_package = "com.google.api"; +option objc_class_prefix = "GAPI"; + +// Defines the HTTP configuration for an API service. It contains a list of +// [HttpRule][google.api.HttpRule], each specifying the mapping of an RPC method +// to one or more HTTP REST API methods. +message Http { + // A list of HTTP configuration rules that apply to individual API methods. + // + // **NOTE:** All service configuration rules follow "last one wins" order. + repeated HttpRule rules = 1; + + // When set to true, URL path parameters will be fully URI-decoded except in + // cases of single segment matches in reserved expansion, where "%2F" will be + // left encoded. + // + // The default behavior is to not decode RFC 6570 reserved characters in multi + // segment matches. + bool fully_decode_reserved_expansion = 2; +} + +// # gRPC Transcoding +// +// gRPC Transcoding is a feature for mapping between a gRPC method and one or +// more HTTP REST endpoints. It allows developers to build a single API service +// that supports both gRPC APIs and REST APIs. Many systems, including [Google +// APIs](https://github.com/googleapis/googleapis), +// [Cloud Endpoints](https://cloud.google.com/endpoints), [gRPC +// Gateway](https://github.com/grpc-ecosystem/grpc-gateway), +// and [Envoy](https://github.com/envoyproxy/envoy) proxy support this feature +// and use it for large scale production services. +// +// `HttpRule` defines the schema of the gRPC/REST mapping. The mapping specifies +// how different portions of the gRPC request message are mapped to the URL +// path, URL query parameters, and HTTP request body. It also controls how the +// gRPC response message is mapped to the HTTP response body. `HttpRule` is +// typically specified as an `google.api.http` annotation on the gRPC method. +// +// Each mapping specifies a URL path template and an HTTP method. The path +// template may refer to one or more fields in the gRPC request message, as long +// as each field is a non-repeated field with a primitive (non-message) type. +// The path template controls how fields of the request message are mapped to +// the URL path. +// +// Example: +// +// service Messaging { +// rpc GetMessage(GetMessageRequest) returns (Message) { +// option (google.api.http) = { +// get: "/v1/{name=messages/*}" +// }; +// } +// } +// message GetMessageRequest { +// string name = 1; // Mapped to URL path. +// } +// message Message { +// string text = 1; // The resource content. +// } +// +// This enables an HTTP REST to gRPC mapping as below: +// +// HTTP | gRPC +// -----|----- +// `GET /v1/messages/123456` | `GetMessage(name: "messages/123456")` +// +// Any fields in the request message which are not bound by the path template +// automatically become HTTP query parameters if there is no HTTP request body. +// For example: +// +// service Messaging { +// rpc GetMessage(GetMessageRequest) returns (Message) { +// option (google.api.http) = { +// get:"/v1/messages/{message_id}" +// }; +// } +// } +// message GetMessageRequest { +// message SubMessage { +// string subfield = 1; +// } +// string message_id = 1; // Mapped to URL path. +// int64 revision = 2; // Mapped to URL query parameter `revision`. +// SubMessage sub = 3; // Mapped to URL query parameter `sub.subfield`. +// } +// +// This enables a HTTP JSON to RPC mapping as below: +// +// HTTP | gRPC +// -----|----- +// `GET /v1/messages/123456?revision=2&sub.subfield=foo` | +// `GetMessage(message_id: "123456" revision: 2 sub: SubMessage(subfield: +// "foo"))` +// +// Note that fields which are mapped to URL query parameters must have a +// primitive type or a repeated primitive type or a non-repeated message type. +// In the case of a repeated type, the parameter can be repeated in the URL +// as `...?param=A¶m=B`. In the case of a message type, each field of the +// message is mapped to a separate parameter, such as +// `...?foo.a=A&foo.b=B&foo.c=C`. +// +// For HTTP methods that allow a request body, the `body` field +// specifies the mapping. Consider a REST update method on the +// message resource collection: +// +// service Messaging { +// rpc UpdateMessage(UpdateMessageRequest) returns (Message) { +// option (google.api.http) = { +// patch: "/v1/messages/{message_id}" +// body: "message" +// }; +// } +// } +// message UpdateMessageRequest { +// string message_id = 1; // mapped to the URL +// Message message = 2; // mapped to the body +// } +// +// The following HTTP JSON to RPC mapping is enabled, where the +// representation of the JSON in the request body is determined by +// protos JSON encoding: +// +// HTTP | gRPC +// -----|----- +// `PATCH /v1/messages/123456 { "text": "Hi!" }` | `UpdateMessage(message_id: +// "123456" message { text: "Hi!" })` +// +// The special name `*` can be used in the body mapping to define that +// every field not bound by the path template should be mapped to the +// request body. This enables the following alternative definition of +// the update method: +// +// service Messaging { +// rpc UpdateMessage(Message) returns (Message) { +// option (google.api.http) = { +// patch: "/v1/messages/{message_id}" +// body: "*" +// }; +// } +// } +// message Message { +// string message_id = 1; +// string text = 2; +// } +// +// +// The following HTTP JSON to RPC mapping is enabled: +// +// HTTP | gRPC +// -----|----- +// `PATCH /v1/messages/123456 { "text": "Hi!" }` | `UpdateMessage(message_id: +// "123456" text: "Hi!")` +// +// Note that when using `*` in the body mapping, it is not possible to +// have HTTP parameters, as all fields not bound by the path end in +// the body. This makes this option more rarely used in practice when +// defining REST APIs. The common usage of `*` is in custom methods +// which don't use the URL at all for transferring data. +// +// It is possible to define multiple HTTP methods for one RPC by using +// the `additional_bindings` option. Example: +// +// service Messaging { +// rpc GetMessage(GetMessageRequest) returns (Message) { +// option (google.api.http) = { +// get: "/v1/messages/{message_id}" +// additional_bindings { +// get: "/v1/users/{user_id}/messages/{message_id}" +// } +// }; +// } +// } +// message GetMessageRequest { +// string message_id = 1; +// string user_id = 2; +// } +// +// This enables the following two alternative HTTP JSON to RPC mappings: +// +// HTTP | gRPC +// -----|----- +// `GET /v1/messages/123456` | `GetMessage(message_id: "123456")` +// `GET /v1/users/me/messages/123456` | `GetMessage(user_id: "me" message_id: +// "123456")` +// +// ## Rules for HTTP mapping +// +// 1. Leaf request fields (recursive expansion nested messages in the request +// message) are classified into three categories: +// - Fields referred by the path template. They are passed via the URL path. +// - Fields referred by the [HttpRule.body][google.api.HttpRule.body]. They +// are passed via the HTTP +// request body. +// - All other fields are passed via the URL query parameters, and the +// parameter name is the field path in the request message. A repeated +// field can be represented as multiple query parameters under the same +// name. +// 2. If [HttpRule.body][google.api.HttpRule.body] is "*", there is no URL +// query parameter, all fields +// are passed via URL path and HTTP request body. +// 3. If [HttpRule.body][google.api.HttpRule.body] is omitted, there is no HTTP +// request body, all +// fields are passed via URL path and URL query parameters. +// +// ### Path template syntax +// +// Template = "/" Segments [ Verb ] ; +// Segments = Segment { "/" Segment } ; +// Segment = "*" | "**" | LITERAL | Variable ; +// Variable = "{" FieldPath [ "=" Segments ] "}" ; +// FieldPath = IDENT { "." IDENT } ; +// Verb = ":" LITERAL ; +// +// The syntax `*` matches a single URL path segment. The syntax `**` matches +// zero or more URL path segments, which must be the last part of the URL path +// except the `Verb`. +// +// The syntax `Variable` matches part of the URL path as specified by its +// template. A variable template must not contain other variables. If a variable +// matches a single path segment, its template may be omitted, e.g. `{var}` +// is equivalent to `{var=*}`. +// +// The syntax `LITERAL` matches literal text in the URL path. If the `LITERAL` +// contains any reserved character, such characters should be percent-encoded +// before the matching. +// +// If a variable contains exactly one path segment, such as `"{var}"` or +// `"{var=*}"`, when such a variable is expanded into a URL path on the client +// side, all characters except `[-_.~0-9a-zA-Z]` are percent-encoded. The +// server side does the reverse decoding. Such variables show up in the +// [Discovery +// Document](https://developers.google.com/discovery/v1/reference/apis) as +// `{var}`. +// +// If a variable contains multiple path segments, such as `"{var=foo/*}"` +// or `"{var=**}"`, when such a variable is expanded into a URL path on the +// client side, all characters except `[-_.~/0-9a-zA-Z]` are percent-encoded. +// The server side does the reverse decoding, except "%2F" and "%2f" are left +// unchanged. Such variables show up in the +// [Discovery +// Document](https://developers.google.com/discovery/v1/reference/apis) as +// `{+var}`. +// +// ## Using gRPC API Service Configuration +// +// gRPC API Service Configuration (service config) is a configuration language +// for configuring a gRPC service to become a user-facing product. The +// service config is simply the YAML representation of the `google.api.Service` +// proto message. +// +// As an alternative to annotating your proto file, you can configure gRPC +// transcoding in your service config YAML files. You do this by specifying a +// `HttpRule` that maps the gRPC method to a REST endpoint, achieving the same +// effect as the proto annotation. This can be particularly useful if you +// have a proto that is reused in multiple services. Note that any transcoding +// specified in the service config will override any matching transcoding +// configuration in the proto. +// +// Example: +// +// http: +// rules: +// # Selects a gRPC method and applies HttpRule to it. +// - selector: example.v1.Messaging.GetMessage +// get: /v1/messages/{message_id}/{sub.subfield} +// +// ## Special notes +// +// When gRPC Transcoding is used to map a gRPC to JSON REST endpoints, the +// proto to JSON conversion must follow the [proto3 +// specification](https://developers.google.com/protocol-buffers/docs/proto3#json). +// +// While the single segment variable follows the semantics of +// [RFC 6570](https://tools.ietf.org/html/rfc6570) Section 3.2.2 Simple String +// Expansion, the multi segment variable **does not** follow RFC 6570 Section +// 3.2.3 Reserved Expansion. The reason is that the Reserved Expansion +// does not expand special characters like `?` and `#`, which would lead +// to invalid URLs. As the result, gRPC Transcoding uses a custom encoding +// for multi segment variables. +// +// The path variables **must not** refer to any repeated or mapped field, +// because client libraries are not capable of handling such variable expansion. +// +// The path variables **must not** capture the leading "/" character. The reason +// is that the most common use case "{var}" does not capture the leading "/" +// character. For consistency, all path variables must share the same behavior. +// +// Repeated message fields must not be mapped to URL query parameters, because +// no client library can support such complicated mapping. +// +// If an API needs to use a JSON array for request or response body, it can map +// the request or response body to a repeated field. However, some gRPC +// Transcoding implementations may not support this feature. +message HttpRule { + // Selects a method to which this rule applies. + // + // Refer to [selector][google.api.DocumentationRule.selector] for syntax + // details. + string selector = 1; + + // Determines the URL pattern is matched by this rules. This pattern can be + // used with any of the {get|put|post|delete|patch} methods. A custom method + // can be defined using the 'custom' field. + oneof pattern { + // Maps to HTTP GET. Used for listing and getting information about + // resources. + string get = 2; + + // Maps to HTTP PUT. Used for replacing a resource. + string put = 3; + + // Maps to HTTP POST. Used for creating a resource or performing an action. + string post = 4; + + // Maps to HTTP DELETE. Used for deleting a resource. + string delete = 5; + + // Maps to HTTP PATCH. Used for updating a resource. + string patch = 6; + + // The custom pattern is used for specifying an HTTP method that is not + // included in the `pattern` field, such as HEAD, or "*" to leave the + // HTTP method unspecified for this rule. The wild-card rule is useful + // for services that provide content to Web (HTML) clients. + CustomHttpPattern custom = 8; + } + + // The name of the request field whose value is mapped to the HTTP request + // body, or `*` for mapping all request fields not captured by the path + // pattern to the HTTP body, or omitted for not having any HTTP request body. + // + // NOTE: the referred field must be present at the top-level of the request + // message type. + string body = 7; + + // Optional. The name of the response field whose value is mapped to the HTTP + // response body. When omitted, the entire response message will be used + // as the HTTP response body. + // + // NOTE: The referred field must be present at the top-level of the response + // message type. + string response_body = 12; + + // Additional HTTP bindings for the selector. Nested bindings must + // not contain an `additional_bindings` field themselves (that is, + // the nesting may only be one level deep). + repeated HttpRule additional_bindings = 11; +} + +// A custom pattern is used for defining custom HTTP verb. +message CustomHttpPattern { + // The name of this custom HTTP verb. + string kind = 1; + + // The path matched by this custom verb. + string path = 2; +} \ No newline at end of file diff --git a/seed/csharp-model/grpc-proto/.mock/proto/user/v1/user.proto b/seed/csharp-model/grpc-proto/.mock/proto/user/v1/user.proto new file mode 100644 index 00000000000..28542ac965a --- /dev/null +++ b/seed/csharp-model/grpc-proto/.mock/proto/user/v1/user.proto @@ -0,0 +1,38 @@ +syntax = "proto3"; + +package user.v1; + +import "google/api/annotations.proto"; +import "google/protobuf/struct.proto"; + +option csharp_namespace = "User.V1"; +option go_package = "user/v1"; + +message UserModel { + string username = 1; + string email = 2; + uint32 age = 3; + float weight = 4; + google.protobuf.Struct metadata = 5; +} + +message CreateRequest { + string username = 1; + string email = 2; + uint32 age = 3; + float weight = 4; + google.protobuf.Struct metadata = 5; +} + +message CreateResponse { + UserModel user = 1; +} + +service UserService { + rpc Create(CreateRequest) returns (CreateResponse) { + option (google.api.http) = { + post: "/users" + body: "*" + }; + } +} \ No newline at end of file diff --git a/seed/csharp-model/grpc-proto/proto/google/api/annotations.proto b/seed/csharp-model/grpc-proto/proto/google/api/annotations.proto new file mode 100644 index 00000000000..8ff42098404 --- /dev/null +++ b/seed/csharp-model/grpc-proto/proto/google/api/annotations.proto @@ -0,0 +1,31 @@ +// Copyright 2015 Google LLC +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +syntax = "proto3"; + +package google.api; + +import "google/api/http.proto"; +import "google/protobuf/descriptor.proto"; + +option go_package = "google.golang.org/genproto/googleapis/api/annotations;annotations"; +option java_multiple_files = true; +option java_outer_classname = "AnnotationsProto"; +option java_package = "com.google.api"; +option objc_class_prefix = "GAPI"; + +extend google.protobuf.MethodOptions { + // See `HttpRule`. + HttpRule http = 72295728; +} \ No newline at end of file diff --git a/seed/csharp-model/grpc-proto/proto/google/api/http.proto b/seed/csharp-model/grpc-proto/proto/google/api/http.proto new file mode 100644 index 00000000000..c8392381eb9 --- /dev/null +++ b/seed/csharp-model/grpc-proto/proto/google/api/http.proto @@ -0,0 +1,379 @@ +// Copyright 2023 Google LLC +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +syntax = "proto3"; + +package google.api; + +option cc_enable_arenas = true; +option go_package = "google.golang.org/genproto/googleapis/api/annotations;annotations"; +option java_multiple_files = true; +option java_outer_classname = "HttpProto"; +option java_package = "com.google.api"; +option objc_class_prefix = "GAPI"; + +// Defines the HTTP configuration for an API service. It contains a list of +// [HttpRule][google.api.HttpRule], each specifying the mapping of an RPC method +// to one or more HTTP REST API methods. +message Http { + // A list of HTTP configuration rules that apply to individual API methods. + // + // **NOTE:** All service configuration rules follow "last one wins" order. + repeated HttpRule rules = 1; + + // When set to true, URL path parameters will be fully URI-decoded except in + // cases of single segment matches in reserved expansion, where "%2F" will be + // left encoded. + // + // The default behavior is to not decode RFC 6570 reserved characters in multi + // segment matches. + bool fully_decode_reserved_expansion = 2; +} + +// # gRPC Transcoding +// +// gRPC Transcoding is a feature for mapping between a gRPC method and one or +// more HTTP REST endpoints. It allows developers to build a single API service +// that supports both gRPC APIs and REST APIs. Many systems, including [Google +// APIs](https://github.com/googleapis/googleapis), +// [Cloud Endpoints](https://cloud.google.com/endpoints), [gRPC +// Gateway](https://github.com/grpc-ecosystem/grpc-gateway), +// and [Envoy](https://github.com/envoyproxy/envoy) proxy support this feature +// and use it for large scale production services. +// +// `HttpRule` defines the schema of the gRPC/REST mapping. The mapping specifies +// how different portions of the gRPC request message are mapped to the URL +// path, URL query parameters, and HTTP request body. It also controls how the +// gRPC response message is mapped to the HTTP response body. `HttpRule` is +// typically specified as an `google.api.http` annotation on the gRPC method. +// +// Each mapping specifies a URL path template and an HTTP method. The path +// template may refer to one or more fields in the gRPC request message, as long +// as each field is a non-repeated field with a primitive (non-message) type. +// The path template controls how fields of the request message are mapped to +// the URL path. +// +// Example: +// +// service Messaging { +// rpc GetMessage(GetMessageRequest) returns (Message) { +// option (google.api.http) = { +// get: "/v1/{name=messages/*}" +// }; +// } +// } +// message GetMessageRequest { +// string name = 1; // Mapped to URL path. +// } +// message Message { +// string text = 1; // The resource content. +// } +// +// This enables an HTTP REST to gRPC mapping as below: +// +// HTTP | gRPC +// -----|----- +// `GET /v1/messages/123456` | `GetMessage(name: "messages/123456")` +// +// Any fields in the request message which are not bound by the path template +// automatically become HTTP query parameters if there is no HTTP request body. +// For example: +// +// service Messaging { +// rpc GetMessage(GetMessageRequest) returns (Message) { +// option (google.api.http) = { +// get:"/v1/messages/{message_id}" +// }; +// } +// } +// message GetMessageRequest { +// message SubMessage { +// string subfield = 1; +// } +// string message_id = 1; // Mapped to URL path. +// int64 revision = 2; // Mapped to URL query parameter `revision`. +// SubMessage sub = 3; // Mapped to URL query parameter `sub.subfield`. +// } +// +// This enables a HTTP JSON to RPC mapping as below: +// +// HTTP | gRPC +// -----|----- +// `GET /v1/messages/123456?revision=2&sub.subfield=foo` | +// `GetMessage(message_id: "123456" revision: 2 sub: SubMessage(subfield: +// "foo"))` +// +// Note that fields which are mapped to URL query parameters must have a +// primitive type or a repeated primitive type or a non-repeated message type. +// In the case of a repeated type, the parameter can be repeated in the URL +// as `...?param=A¶m=B`. In the case of a message type, each field of the +// message is mapped to a separate parameter, such as +// `...?foo.a=A&foo.b=B&foo.c=C`. +// +// For HTTP methods that allow a request body, the `body` field +// specifies the mapping. Consider a REST update method on the +// message resource collection: +// +// service Messaging { +// rpc UpdateMessage(UpdateMessageRequest) returns (Message) { +// option (google.api.http) = { +// patch: "/v1/messages/{message_id}" +// body: "message" +// }; +// } +// } +// message UpdateMessageRequest { +// string message_id = 1; // mapped to the URL +// Message message = 2; // mapped to the body +// } +// +// The following HTTP JSON to RPC mapping is enabled, where the +// representation of the JSON in the request body is determined by +// protos JSON encoding: +// +// HTTP | gRPC +// -----|----- +// `PATCH /v1/messages/123456 { "text": "Hi!" }` | `UpdateMessage(message_id: +// "123456" message { text: "Hi!" })` +// +// The special name `*` can be used in the body mapping to define that +// every field not bound by the path template should be mapped to the +// request body. This enables the following alternative definition of +// the update method: +// +// service Messaging { +// rpc UpdateMessage(Message) returns (Message) { +// option (google.api.http) = { +// patch: "/v1/messages/{message_id}" +// body: "*" +// }; +// } +// } +// message Message { +// string message_id = 1; +// string text = 2; +// } +// +// +// The following HTTP JSON to RPC mapping is enabled: +// +// HTTP | gRPC +// -----|----- +// `PATCH /v1/messages/123456 { "text": "Hi!" }` | `UpdateMessage(message_id: +// "123456" text: "Hi!")` +// +// Note that when using `*` in the body mapping, it is not possible to +// have HTTP parameters, as all fields not bound by the path end in +// the body. This makes this option more rarely used in practice when +// defining REST APIs. The common usage of `*` is in custom methods +// which don't use the URL at all for transferring data. +// +// It is possible to define multiple HTTP methods for one RPC by using +// the `additional_bindings` option. Example: +// +// service Messaging { +// rpc GetMessage(GetMessageRequest) returns (Message) { +// option (google.api.http) = { +// get: "/v1/messages/{message_id}" +// additional_bindings { +// get: "/v1/users/{user_id}/messages/{message_id}" +// } +// }; +// } +// } +// message GetMessageRequest { +// string message_id = 1; +// string user_id = 2; +// } +// +// This enables the following two alternative HTTP JSON to RPC mappings: +// +// HTTP | gRPC +// -----|----- +// `GET /v1/messages/123456` | `GetMessage(message_id: "123456")` +// `GET /v1/users/me/messages/123456` | `GetMessage(user_id: "me" message_id: +// "123456")` +// +// ## Rules for HTTP mapping +// +// 1. Leaf request fields (recursive expansion nested messages in the request +// message) are classified into three categories: +// - Fields referred by the path template. They are passed via the URL path. +// - Fields referred by the [HttpRule.body][google.api.HttpRule.body]. They +// are passed via the HTTP +// request body. +// - All other fields are passed via the URL query parameters, and the +// parameter name is the field path in the request message. A repeated +// field can be represented as multiple query parameters under the same +// name. +// 2. If [HttpRule.body][google.api.HttpRule.body] is "*", there is no URL +// query parameter, all fields +// are passed via URL path and HTTP request body. +// 3. If [HttpRule.body][google.api.HttpRule.body] is omitted, there is no HTTP +// request body, all +// fields are passed via URL path and URL query parameters. +// +// ### Path template syntax +// +// Template = "/" Segments [ Verb ] ; +// Segments = Segment { "/" Segment } ; +// Segment = "*" | "**" | LITERAL | Variable ; +// Variable = "{" FieldPath [ "=" Segments ] "}" ; +// FieldPath = IDENT { "." IDENT } ; +// Verb = ":" LITERAL ; +// +// The syntax `*` matches a single URL path segment. The syntax `**` matches +// zero or more URL path segments, which must be the last part of the URL path +// except the `Verb`. +// +// The syntax `Variable` matches part of the URL path as specified by its +// template. A variable template must not contain other variables. If a variable +// matches a single path segment, its template may be omitted, e.g. `{var}` +// is equivalent to `{var=*}`. +// +// The syntax `LITERAL` matches literal text in the URL path. If the `LITERAL` +// contains any reserved character, such characters should be percent-encoded +// before the matching. +// +// If a variable contains exactly one path segment, such as `"{var}"` or +// `"{var=*}"`, when such a variable is expanded into a URL path on the client +// side, all characters except `[-_.~0-9a-zA-Z]` are percent-encoded. The +// server side does the reverse decoding. Such variables show up in the +// [Discovery +// Document](https://developers.google.com/discovery/v1/reference/apis) as +// `{var}`. +// +// If a variable contains multiple path segments, such as `"{var=foo/*}"` +// or `"{var=**}"`, when such a variable is expanded into a URL path on the +// client side, all characters except `[-_.~/0-9a-zA-Z]` are percent-encoded. +// The server side does the reverse decoding, except "%2F" and "%2f" are left +// unchanged. Such variables show up in the +// [Discovery +// Document](https://developers.google.com/discovery/v1/reference/apis) as +// `{+var}`. +// +// ## Using gRPC API Service Configuration +// +// gRPC API Service Configuration (service config) is a configuration language +// for configuring a gRPC service to become a user-facing product. The +// service config is simply the YAML representation of the `google.api.Service` +// proto message. +// +// As an alternative to annotating your proto file, you can configure gRPC +// transcoding in your service config YAML files. You do this by specifying a +// `HttpRule` that maps the gRPC method to a REST endpoint, achieving the same +// effect as the proto annotation. This can be particularly useful if you +// have a proto that is reused in multiple services. Note that any transcoding +// specified in the service config will override any matching transcoding +// configuration in the proto. +// +// Example: +// +// http: +// rules: +// # Selects a gRPC method and applies HttpRule to it. +// - selector: example.v1.Messaging.GetMessage +// get: /v1/messages/{message_id}/{sub.subfield} +// +// ## Special notes +// +// When gRPC Transcoding is used to map a gRPC to JSON REST endpoints, the +// proto to JSON conversion must follow the [proto3 +// specification](https://developers.google.com/protocol-buffers/docs/proto3#json). +// +// While the single segment variable follows the semantics of +// [RFC 6570](https://tools.ietf.org/html/rfc6570) Section 3.2.2 Simple String +// Expansion, the multi segment variable **does not** follow RFC 6570 Section +// 3.2.3 Reserved Expansion. The reason is that the Reserved Expansion +// does not expand special characters like `?` and `#`, which would lead +// to invalid URLs. As the result, gRPC Transcoding uses a custom encoding +// for multi segment variables. +// +// The path variables **must not** refer to any repeated or mapped field, +// because client libraries are not capable of handling such variable expansion. +// +// The path variables **must not** capture the leading "/" character. The reason +// is that the most common use case "{var}" does not capture the leading "/" +// character. For consistency, all path variables must share the same behavior. +// +// Repeated message fields must not be mapped to URL query parameters, because +// no client library can support such complicated mapping. +// +// If an API needs to use a JSON array for request or response body, it can map +// the request or response body to a repeated field. However, some gRPC +// Transcoding implementations may not support this feature. +message HttpRule { + // Selects a method to which this rule applies. + // + // Refer to [selector][google.api.DocumentationRule.selector] for syntax + // details. + string selector = 1; + + // Determines the URL pattern is matched by this rules. This pattern can be + // used with any of the {get|put|post|delete|patch} methods. A custom method + // can be defined using the 'custom' field. + oneof pattern { + // Maps to HTTP GET. Used for listing and getting information about + // resources. + string get = 2; + + // Maps to HTTP PUT. Used for replacing a resource. + string put = 3; + + // Maps to HTTP POST. Used for creating a resource or performing an action. + string post = 4; + + // Maps to HTTP DELETE. Used for deleting a resource. + string delete = 5; + + // Maps to HTTP PATCH. Used for updating a resource. + string patch = 6; + + // The custom pattern is used for specifying an HTTP method that is not + // included in the `pattern` field, such as HEAD, or "*" to leave the + // HTTP method unspecified for this rule. The wild-card rule is useful + // for services that provide content to Web (HTML) clients. + CustomHttpPattern custom = 8; + } + + // The name of the request field whose value is mapped to the HTTP request + // body, or `*` for mapping all request fields not captured by the path + // pattern to the HTTP body, or omitted for not having any HTTP request body. + // + // NOTE: the referred field must be present at the top-level of the request + // message type. + string body = 7; + + // Optional. The name of the response field whose value is mapped to the HTTP + // response body. When omitted, the entire response message will be used + // as the HTTP response body. + // + // NOTE: The referred field must be present at the top-level of the response + // message type. + string response_body = 12; + + // Additional HTTP bindings for the selector. Nested bindings must + // not contain an `additional_bindings` field themselves (that is, + // the nesting may only be one level deep). + repeated HttpRule additional_bindings = 11; +} + +// A custom pattern is used for defining custom HTTP verb. +message CustomHttpPattern { + // The name of this custom HTTP verb. + string kind = 1; + + // The path matched by this custom verb. + string path = 2; +} \ No newline at end of file diff --git a/seed/csharp-model/grpc-proto/proto/user/v1/user.proto b/seed/csharp-model/grpc-proto/proto/user/v1/user.proto new file mode 100644 index 00000000000..28542ac965a --- /dev/null +++ b/seed/csharp-model/grpc-proto/proto/user/v1/user.proto @@ -0,0 +1,38 @@ +syntax = "proto3"; + +package user.v1; + +import "google/api/annotations.proto"; +import "google/protobuf/struct.proto"; + +option csharp_namespace = "User.V1"; +option go_package = "user/v1"; + +message UserModel { + string username = 1; + string email = 2; + uint32 age = 3; + float weight = 4; + google.protobuf.Struct metadata = 5; +} + +message CreateRequest { + string username = 1; + string email = 2; + uint32 age = 3; + float weight = 4; + google.protobuf.Struct metadata = 5; +} + +message CreateResponse { + UserModel user = 1; +} + +service UserService { + rpc Create(CreateRequest) returns (CreateResponse) { + option (google.api.http) = { + post: "/users" + body: "*" + }; + } +} \ No newline at end of file diff --git a/seed/csharp-model/grpc-proto/snippet-templates.json b/seed/csharp-model/grpc-proto/snippet-templates.json new file mode 100644 index 00000000000..e69de29bb2d diff --git a/seed/csharp-model/grpc-proto/snippet.json b/seed/csharp-model/grpc-proto/snippet.json new file mode 100644 index 00000000000..e69de29bb2d diff --git a/seed/csharp-model/grpc-proto/src/SeedApi.Test/Core/EnumSerializerTests.cs b/seed/csharp-model/grpc-proto/src/SeedApi.Test/Core/EnumSerializerTests.cs new file mode 100644 index 00000000000..089745538a5 --- /dev/null +++ b/seed/csharp-model/grpc-proto/src/SeedApi.Test/Core/EnumSerializerTests.cs @@ -0,0 +1,61 @@ +using System; +using System.Runtime.Serialization; +using System.Text.Json; +using System.Text.Json.Serialization; +using NUnit.Framework; +using SeedApi.Core; + +namespace SeedApi.Test.Core +{ + [TestFixture] + public class StringEnumSerializerTests + { + private static readonly JsonSerializerOptions JsonOptions = new() { WriteIndented = true }; + + private const DummyEnum KnownEnumValue2 = DummyEnum.KnownValue2; + private const string KnownEnumValue2String = "known_value2"; + + private static readonly string JsonWithKnownEnum2 = $$""" + { + "enum_property": "{{KnownEnumValue2String}}" + } + """; + + [Test] + public void ShouldParseKnownEnumValue2() + { + var obj = JsonSerializer.Deserialize(JsonWithKnownEnum2, JsonOptions); + Assert.That(obj, Is.Not.Null); + Assert.That(obj.EnumProperty, Is.EqualTo(KnownEnumValue2)); + } + + [Test] + public void ShouldSerializeKnownEnumValue2() + { + var json = JsonSerializer.SerializeToElement( + new DummyObject { EnumProperty = KnownEnumValue2 }, + JsonOptions + ); + TestContext.Out.WriteLine("Serialized JSON: \n" + json); + var enumString = json.GetProperty("enum_property").GetString(); + Assert.That(enumString, Is.Not.Null); + Assert.That(enumString, Is.EqualTo(KnownEnumValue2String)); + } + } + + public class DummyObject + { + [JsonPropertyName("enum_property")] + public DummyEnum EnumProperty { get; set; } + } + + [JsonConverter(typeof(EnumSerializer))] + public enum DummyEnum + { + [EnumMember(Value = "known_value1")] + KnownValue1, + + [EnumMember(Value = "known_value2")] + KnownValue2, + } +} diff --git a/seed/csharp-model/grpc-proto/src/SeedApi.Test/SeedApi.Test.Custom.props b/seed/csharp-model/grpc-proto/src/SeedApi.Test/SeedApi.Test.Custom.props new file mode 100644 index 00000000000..55e683b0772 --- /dev/null +++ b/seed/csharp-model/grpc-proto/src/SeedApi.Test/SeedApi.Test.Custom.props @@ -0,0 +1,7 @@ + + + \ No newline at end of file diff --git a/seed/csharp-model/grpc-proto/src/SeedApi.Test/SeedApi.Test.csproj b/seed/csharp-model/grpc-proto/src/SeedApi.Test/SeedApi.Test.csproj new file mode 100644 index 00000000000..8e6f53c1970 --- /dev/null +++ b/seed/csharp-model/grpc-proto/src/SeedApi.Test/SeedApi.Test.csproj @@ -0,0 +1,33 @@ + + + + net8.0 + enable + enable + + false + true + + + + + + + + all + runtime; build; native; contentfiles; analyzers; buildtransitive + + + all + runtime; build; native; contentfiles; analyzers; buildtransitive + + + + + + + + + + + \ No newline at end of file diff --git a/seed/csharp-model/grpc-proto/src/SeedApi.sln b/seed/csharp-model/grpc-proto/src/SeedApi.sln new file mode 100644 index 00000000000..587af23b637 --- /dev/null +++ b/seed/csharp-model/grpc-proto/src/SeedApi.sln @@ -0,0 +1,28 @@ + +Microsoft Visual Studio Solution File, Format Version 12.00 +# Visual Studio Version 17 +VisualStudioVersion = 17.0.31903.59 +MinimumVisualStudioVersion = 10.0.40219.1 +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SeedApi", "SeedApi\SeedApi.csproj", "{36D19F08-8445-4FC5-995B-37A70E028771}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SeedApi.Test", "SeedApi.Test\SeedApi.Test.csproj", "{F90F8578-CE2B-4A1F-8E91-3DEDDBCEFF35}" +EndProject +Global + GlobalSection(SolutionConfigurationPlatforms) = preSolution + Debug|Any CPU = Debug|Any CPU + Release|Any CPU = Release|Any CPU + EndGlobalSection + GlobalSection(SolutionProperties) = preSolution + HideSolutionNode = FALSE + EndGlobalSection + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {36D19F08-8445-4FC5-995B-37A70E028771}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {36D19F08-8445-4FC5-995B-37A70E028771}.Debug|Any CPU.Build.0 = Debug|Any CPU + {36D19F08-8445-4FC5-995B-37A70E028771}.Release|Any CPU.ActiveCfg = Release|Any CPU + {36D19F08-8445-4FC5-995B-37A70E028771}.Release|Any CPU.Build.0 = Release|Any CPU + {F90F8578-CE2B-4A1F-8E91-3DEDDBCEFF35}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {F90F8578-CE2B-4A1F-8E91-3DEDDBCEFF35}.Debug|Any CPU.Build.0 = Debug|Any CPU + {F90F8578-CE2B-4A1F-8E91-3DEDDBCEFF35}.Release|Any CPU.ActiveCfg = Release|Any CPU + {F90F8578-CE2B-4A1F-8E91-3DEDDBCEFF35}.Release|Any CPU.Build.0 = Release|Any CPU + EndGlobalSection +EndGlobal diff --git a/seed/csharp-model/grpc-proto/src/SeedApi/Core/CollectionItemSerializer.cs b/seed/csharp-model/grpc-proto/src/SeedApi/Core/CollectionItemSerializer.cs new file mode 100644 index 00000000000..af2c9adf7a7 --- /dev/null +++ b/seed/csharp-model/grpc-proto/src/SeedApi/Core/CollectionItemSerializer.cs @@ -0,0 +1,91 @@ +using System; +using System.Collections.Generic; +using System.Text.Json; +using System.Text.Json.Serialization; + +namespace SeedApi.Core; + +/// +/// Json collection converter. +/// +/// Type of item to convert. +/// Converter to use for individual items. +internal class CollectionItemSerializer + : JsonConverter> + where TConverterType : JsonConverter +{ + /// + /// Reads a json string and deserializes it into an object. + /// + /// Json reader. + /// Type to convert. + /// Serializer options. + /// Created object. + public override IEnumerable? Read( + ref Utf8JsonReader reader, + System.Type typeToConvert, + JsonSerializerOptions options + ) + { + if (reader.TokenType == JsonTokenType.Null) + { + return default; + } + + var jsonSerializerOptions = new JsonSerializerOptions(options); + jsonSerializerOptions.Converters.Clear(); + jsonSerializerOptions.Converters.Add(Activator.CreateInstance()); + + var returnValue = new List(); + + while (reader.TokenType != JsonTokenType.EndArray) + { + if (reader.TokenType != JsonTokenType.StartArray) + { + var item = (TDatatype)( + JsonSerializer.Deserialize(ref reader, typeof(TDatatype), jsonSerializerOptions) + ?? throw new Exception( + $"Failed to deserialize collection item of type {typeof(TDatatype)}" + ) + ); + returnValue.Add(item); + } + + reader.Read(); + } + + return returnValue; + } + + /// + /// Writes a json string. + /// + /// Json writer. + /// Value to write. + /// Serializer options. + public override void Write( + Utf8JsonWriter writer, + IEnumerable? value, + JsonSerializerOptions options + ) + { + if (value == null) + { + writer.WriteNullValue(); + return; + } + + JsonSerializerOptions jsonSerializerOptions = new JsonSerializerOptions(options); + jsonSerializerOptions.Converters.Clear(); + jsonSerializerOptions.Converters.Add(Activator.CreateInstance()); + + writer.WriteStartArray(); + + foreach (var data in value) + { + JsonSerializer.Serialize(writer, data, jsonSerializerOptions); + } + + writer.WriteEndArray(); + } +} diff --git a/seed/csharp-model/grpc-proto/src/SeedApi/Core/Constants.cs b/seed/csharp-model/grpc-proto/src/SeedApi/Core/Constants.cs new file mode 100644 index 00000000000..ccf4e963cc8 --- /dev/null +++ b/seed/csharp-model/grpc-proto/src/SeedApi/Core/Constants.cs @@ -0,0 +1,7 @@ +namespace SeedApi.Core; + +internal static class Constants +{ + public const string DateTimeFormat = "yyyy'-'MM'-'dd'T'HH':'mm':'ss.fffK"; + public const string DateFormat = "yyyy-MM-dd"; +} diff --git a/seed/csharp-model/grpc-proto/src/SeedApi/Core/DateTimeSerializer.cs b/seed/csharp-model/grpc-proto/src/SeedApi/Core/DateTimeSerializer.cs new file mode 100644 index 00000000000..a39de9c28d7 --- /dev/null +++ b/seed/csharp-model/grpc-proto/src/SeedApi/Core/DateTimeSerializer.cs @@ -0,0 +1,22 @@ +using System.Globalization; +using System.Text.Json; +using System.Text.Json.Serialization; + +namespace SeedApi.Core; + +internal class DateTimeSerializer : JsonConverter +{ + public override DateTime Read( + ref Utf8JsonReader reader, + System.Type typeToConvert, + JsonSerializerOptions options + ) + { + return DateTime.Parse(reader.GetString()!, null, DateTimeStyles.RoundtripKind); + } + + public override void Write(Utf8JsonWriter writer, DateTime value, JsonSerializerOptions options) + { + writer.WriteStringValue(value.ToString(Constants.DateTimeFormat)); + } +} diff --git a/seed/csharp-model/grpc-proto/src/SeedApi/Core/EnumSerializer.cs b/seed/csharp-model/grpc-proto/src/SeedApi/Core/EnumSerializer.cs new file mode 100644 index 00000000000..ac5c0792fbe --- /dev/null +++ b/seed/csharp-model/grpc-proto/src/SeedApi/Core/EnumSerializer.cs @@ -0,0 +1,53 @@ +using System.Runtime.Serialization; +using System.Text.Json; +using System.Text.Json.Serialization; + +namespace SeedApi.Core; + +internal class EnumSerializer : JsonConverter + where TEnum : struct, System.Enum +{ + private readonly Dictionary _enumToString = new(); + private readonly Dictionary _stringToEnum = new(); + + public EnumSerializer() + { + var type = typeof(TEnum); + var values = Enum.GetValues(type); + + foreach (var value in values) + { + var enumValue = (TEnum)value; + var enumMember = type.GetMember(enumValue.ToString())[0]; + var attr = enumMember + .GetCustomAttributes(typeof(EnumMemberAttribute), false) + .Cast() + .FirstOrDefault(); + + var stringValue = + attr?.Value + ?? value.ToString() + ?? throw new Exception("Unexpected null enum toString value"); + + _enumToString.Add(enumValue, stringValue); + _stringToEnum.Add(stringValue, enumValue); + } + } + + public override TEnum Read( + ref Utf8JsonReader reader, + System.Type typeToConvert, + JsonSerializerOptions options + ) + { + var stringValue = + reader.GetString() + ?? throw new Exception("The JSON value could not be read as a string."); + return _stringToEnum.TryGetValue(stringValue, out var enumValue) ? enumValue : default; + } + + public override void Write(Utf8JsonWriter writer, TEnum value, JsonSerializerOptions options) + { + writer.WriteStringValue(_enumToString[value]); + } +} diff --git a/seed/csharp-model/grpc-proto/src/SeedApi/Core/JsonConfiguration.cs b/seed/csharp-model/grpc-proto/src/SeedApi/Core/JsonConfiguration.cs new file mode 100644 index 00000000000..6d871c6e820 --- /dev/null +++ b/seed/csharp-model/grpc-proto/src/SeedApi/Core/JsonConfiguration.cs @@ -0,0 +1,36 @@ +using System.Text.Json; +using System.Text.Json.Serialization; + +namespace SeedApi.Core; + +internal static partial class JsonOptions +{ + public static readonly JsonSerializerOptions JsonSerializerOptions; + + static JsonOptions() + { + var options = new JsonSerializerOptions + { + Converters = { new DateTimeSerializer(), new OneOfSerializer() }, + WriteIndented = true, + DefaultIgnoreCondition = JsonIgnoreCondition.WhenWritingNull, + }; + ConfigureJsonSerializerOptions(options); + JsonSerializerOptions = options; + } + + static partial void ConfigureJsonSerializerOptions(JsonSerializerOptions defaultOptions); +} + +internal static class JsonUtils +{ + public static string Serialize(T obj) + { + return JsonSerializer.Serialize(obj, JsonOptions.JsonSerializerOptions); + } + + public static T Deserialize(string json) + { + return JsonSerializer.Deserialize(json, JsonOptions.JsonSerializerOptions)!; + } +} diff --git a/seed/csharp-model/grpc-proto/src/SeedApi/Core/OneOfSerializer.cs b/seed/csharp-model/grpc-proto/src/SeedApi/Core/OneOfSerializer.cs new file mode 100644 index 00000000000..24ee9268e48 --- /dev/null +++ b/seed/csharp-model/grpc-proto/src/SeedApi/Core/OneOfSerializer.cs @@ -0,0 +1,69 @@ +using System.Reflection; +using System.Text.Json; +using System.Text.Json.Serialization; +using OneOf; + +namespace SeedApi.Core; + +internal class OneOfSerializer : JsonConverter +{ + public override IOneOf? Read( + ref Utf8JsonReader reader, + System.Type typeToConvert, + JsonSerializerOptions options + ) + { + if (reader.TokenType is JsonTokenType.Null) + return default; + + foreach (var (type, cast) in GetOneOfTypes(typeToConvert)) + { + try + { + var readerCopy = reader; + var result = JsonSerializer.Deserialize(ref readerCopy, type, options); + reader.Skip(); + return (IOneOf)cast.Invoke(null, [result])!; + } + catch (JsonException) { } + } + + throw new JsonException( + $"Cannot deserialize into one of the supported types for {typeToConvert}" + ); + } + + public override void Write(Utf8JsonWriter writer, IOneOf value, JsonSerializerOptions options) + { + JsonSerializer.Serialize(writer, value.Value, options); + } + + private static (System.Type type, MethodInfo cast)[] GetOneOfTypes(System.Type typeToConvert) + { + var casts = typeToConvert + .GetRuntimeMethods() + .Where(m => m.IsSpecialName && m.Name == "op_Implicit") + .ToArray(); + var type = typeToConvert; + while (type != null) + { + if ( + type.IsGenericType + && (type.Name.StartsWith("OneOf`") || type.Name.StartsWith("OneOfBase`")) + ) + { + return type.GetGenericArguments() + .Select(t => (t, casts.First(c => c.GetParameters()[0].ParameterType == t))) + .ToArray(); + } + + type = type.BaseType; + } + throw new InvalidOperationException($"{type} isn't OneOf or OneOfBase"); + } + + public override bool CanConvert(System.Type typeToConvert) + { + return typeof(IOneOf).IsAssignableFrom(typeToConvert); + } +} diff --git a/seed/csharp-model/grpc-proto/src/SeedApi/Core/Public/Version.cs b/seed/csharp-model/grpc-proto/src/SeedApi/Core/Public/Version.cs new file mode 100644 index 00000000000..f430a1bf84c --- /dev/null +++ b/seed/csharp-model/grpc-proto/src/SeedApi/Core/Public/Version.cs @@ -0,0 +1,6 @@ +namespace SeedApi; + +internal class Version +{ + public const string Current = "0.0.1"; +} diff --git a/seed/csharp-model/grpc-proto/src/SeedApi/CreateResponse.cs b/seed/csharp-model/grpc-proto/src/SeedApi/CreateResponse.cs new file mode 100644 index 00000000000..608e09ded5f --- /dev/null +++ b/seed/csharp-model/grpc-proto/src/SeedApi/CreateResponse.cs @@ -0,0 +1,42 @@ +using System.Text.Json.Serialization; +using SeedApi.Core; +using Proto = User.V1; + +#nullable enable + +namespace SeedApi; + +public record CreateResponse +{ + [JsonPropertyName("user")] + public UserModel? User { get; set; } + + public override string ToString() + { + return JsonUtils.Serialize(this); + } + + /// + /// Maps the CreateResponse type into its Protobuf-equivalent representation. + /// + internal Proto.CreateResponse ToProto() + { + var result = new Proto.CreateResponse(); + if (User != null) + { + result.User = User.ToProto(); + } + return result; + } + + /// + /// Returns a new CreateResponse type from its Protobuf-equivalent representation. + /// + internal static CreateResponse FromProto(Proto.CreateResponse value) + { + return new CreateResponse + { + User = value.User != null ? UserModel.FromProto(value.User) : null, + }; + } +} diff --git a/seed/csharp-model/grpc-proto/src/SeedApi/Metadata.cs b/seed/csharp-model/grpc-proto/src/SeedApi/Metadata.cs new file mode 100644 index 00000000000..2e16aa50b3f --- /dev/null +++ b/seed/csharp-model/grpc-proto/src/SeedApi/Metadata.cs @@ -0,0 +1,39 @@ +using SeedApi.Core; +using Proto = Google.Protobuf.WellKnownTypes; + +#nullable enable + +namespace SeedApi; + +public sealed class Metadata : Dictionary +{ + public Metadata() { } + + public Metadata(IEnumerable> value) + : base(value.ToDictionary(e => e.Key, e => e.Value)) { } + + public override string ToString() + { + return JsonUtils.Serialize(this); + } + + internal Proto.Struct ToProto() + { + var result = new Proto.Struct(); + foreach (var kvp in this) + { + result.Fields[kvp.Key] = kvp.Value?.ToProto(); + } + return result; + } + + internal static Metadata FromProto(Proto.Struct value) + { + var result = new Metadata(); + foreach (var kvp in value.Fields) + { + result[kvp.Key] = kvp.Value != null ? MetadataValue.FromProto(kvp.Value) : null; + } + return result; + } +} diff --git a/seed/csharp-model/grpc-proto/src/SeedApi/MetadataValue.cs b/seed/csharp-model/grpc-proto/src/SeedApi/MetadataValue.cs new file mode 100644 index 00000000000..2308676e891 --- /dev/null +++ b/seed/csharp-model/grpc-proto/src/SeedApi/MetadataValue.cs @@ -0,0 +1,91 @@ +using OneOf; +using SeedApi.Core; +using Proto = Google.Protobuf.WellKnownTypes; + +#nullable enable + +namespace SeedApi; + +public sealed class MetadataValue( + OneOf, Metadata> value +) : OneOfBase, Metadata>(value) +{ + public override string ToString() + { + return JsonUtils.Serialize(this); + } + + internal Proto.Value ToProto() + { + return Match( + Proto.Value.ForString, + Proto.Value.ForNumber, + Proto.Value.ForBool, + list => new Proto.Value + { + ListValue = new Proto.ListValue + { + Values = { list.Select(item => item?.ToProto()) }, + }, + }, + nested => new Proto.Value { StructValue = nested.ToProto() } + ); + } + + internal static MetadataValue? FromProto(Proto.Value value) + { + return value.KindCase switch + { + Proto.Value.KindOneofCase.StringValue => value.StringValue, + Proto.Value.KindOneofCase.NumberValue => value.NumberValue, + Proto.Value.KindOneofCase.BoolValue => value.BoolValue, + Proto.Value.KindOneofCase.ListValue => value + .ListValue.Values.Select(FromProto) + .ToList(), + Proto.Value.KindOneofCase.StructValue => Metadata.FromProto(value.StructValue), + _ => null, + }; + } + + public static implicit operator MetadataValue(string value) => new(value); + + public static implicit operator MetadataValue(bool value) => new(value); + + public static implicit operator MetadataValue(double value) => new(value); + + public static implicit operator MetadataValue(Metadata value) => new(value); + + public static implicit operator MetadataValue(MetadataValue?[] value) => new(value); + + public static implicit operator MetadataValue(List value) => new(value); + + public static implicit operator MetadataValue(string[] value) => + new(value.Select(v => new MetadataValue(v)).ToList()); + + public static implicit operator MetadataValue(double[] value) => + new(value.Select(v => new MetadataValue(v)).ToList()); + + public static implicit operator MetadataValue(double?[] value) => + new(value.Select(v => v != null ? new MetadataValue(v.Value) : null).ToList()); + + public static implicit operator MetadataValue(bool[] value) => + new(value.Select(v => new MetadataValue(v)).ToList()); + + public static implicit operator MetadataValue(bool?[] value) => + new(value.Select(v => v != null ? new MetadataValue(v.Value) : null).ToList()); + + public static implicit operator MetadataValue(List value) => + new(value.Select(v => new MetadataValue(v)).ToList()); + + public static implicit operator MetadataValue(List value) => + new(value.Select(v => new MetadataValue(v)).ToList()); + + public static implicit operator MetadataValue(List value) => + new(value.Select(v => v != null ? new MetadataValue(v.Value) : null).ToList()); + + public static implicit operator MetadataValue(List value) => + new(value.Select(v => new MetadataValue(v)).ToList()); + + public static implicit operator MetadataValue(List value) => + new(value.Select(v => v != null ? new MetadataValue(v.Value) : null).ToList()); +} diff --git a/seed/csharp-model/grpc-proto/src/SeedApi/SeedApi.Custom.props b/seed/csharp-model/grpc-proto/src/SeedApi/SeedApi.Custom.props new file mode 100644 index 00000000000..70df2849401 --- /dev/null +++ b/seed/csharp-model/grpc-proto/src/SeedApi/SeedApi.Custom.props @@ -0,0 +1,20 @@ + + + + \ No newline at end of file diff --git a/seed/csharp-model/grpc-proto/src/SeedApi/SeedApi.csproj b/seed/csharp-model/grpc-proto/src/SeedApi/SeedApi.csproj new file mode 100644 index 00000000000..dfb42e4a810 --- /dev/null +++ b/seed/csharp-model/grpc-proto/src/SeedApi/SeedApi.csproj @@ -0,0 +1,63 @@ + + + + + net462;net8.0;net7.0;net6.0;netstandard2.0 + enable + 12 + enable + 0.0.1 + $(Version) + $(Version) + README.md + https://github.com/grpc-proto/fern + true + + + + + + + + + runtime; build; native; contentfiles; analyzers; buildtransitive + all + + + + + + + + + + + + + + runtime; build; native; contentfiles; analyzers; buildtransitive + all + + + + + + + + + + + + + + + + + + + <_Parameter1>SeedApi.Test + + + + + diff --git a/seed/csharp-model/grpc-proto/src/SeedApi/UserModel.cs b/seed/csharp-model/grpc-proto/src/SeedApi/UserModel.cs new file mode 100644 index 00000000000..986ace0fbd1 --- /dev/null +++ b/seed/csharp-model/grpc-proto/src/SeedApi/UserModel.cs @@ -0,0 +1,74 @@ +using System.Text.Json.Serialization; +using SeedApi.Core; +using Proto = User.V1; + +#nullable enable + +namespace SeedApi; + +public record UserModel +{ + [JsonPropertyName("username")] + public string? Username { get; set; } + + [JsonPropertyName("email")] + public string? Email { get; set; } + + [JsonPropertyName("age")] + public uint? Age { get; set; } + + [JsonPropertyName("weight")] + public float? Weight { get; set; } + + [JsonPropertyName("metadata")] + public Metadata? Metadata { get; set; } + + public override string ToString() + { + return JsonUtils.Serialize(this); + } + + /// + /// Maps the UserModel type into its Protobuf-equivalent representation. + /// + internal Proto.UserModel ToProto() + { + var result = new Proto.UserModel(); + if (Username != null) + { + result.Username = Username ?? ""; + } + if (Email != null) + { + result.Email = Email ?? ""; + } + if (Age != null) + { + result.Age = Age ?? 0; + } + if (Weight != null) + { + result.Weight = Weight ?? 0.0f; + } + if (Metadata != null) + { + result.Metadata = Metadata.ToProto(); + } + return result; + } + + /// + /// Returns a new UserModel type from its Protobuf-equivalent representation. + /// + internal static UserModel FromProto(Proto.UserModel value) + { + return new UserModel + { + Username = value.Username, + Email = value.Email, + Age = value.Age, + Weight = value.Weight, + Metadata = value.Metadata != null ? Metadata.FromProto(value.Metadata) : null, + }; + } +} diff --git a/seed/csharp-model/idempotency-headers/src/SeedIdempotencyHeaders.sln b/seed/csharp-model/idempotency-headers/src/SeedIdempotencyHeaders.sln index 19533ba534e..8b8336e476b 100644 --- a/seed/csharp-model/idempotency-headers/src/SeedIdempotencyHeaders.sln +++ b/seed/csharp-model/idempotency-headers/src/SeedIdempotencyHeaders.sln @@ -1,28 +1,28 @@ - -Microsoft Visual Studio Solution File, Format Version 12.00 -# Visual Studio Version 17 -VisualStudioVersion = 17.0.31903.59 -MinimumVisualStudioVersion = 10.0.40219.1 -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SeedIdempotencyHeaders", "SeedIdempotencyHeaders\SeedIdempotencyHeaders.csproj", "{7D961EA8-34A6-4C92-922A-C5A6267F2913}" -EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SeedIdempotencyHeaders.Test", "SeedIdempotencyHeaders.Test\SeedIdempotencyHeaders.Test.csproj", "{BC65A32A-303E-490C-94C9-A2FA86B4ED6A}" -EndProject -Global - GlobalSection(SolutionConfigurationPlatforms) = preSolution - Debug|Any CPU = Debug|Any CPU - Release|Any CPU = Release|Any CPU - EndGlobalSection - GlobalSection(SolutionProperties) = preSolution - HideSolutionNode = FALSE - EndGlobalSection - GlobalSection(ProjectConfigurationPlatforms) = postSolution - {7D961EA8-34A6-4C92-922A-C5A6267F2913}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {7D961EA8-34A6-4C92-922A-C5A6267F2913}.Debug|Any CPU.Build.0 = Debug|Any CPU - {7D961EA8-34A6-4C92-922A-C5A6267F2913}.Release|Any CPU.ActiveCfg = Release|Any CPU - {7D961EA8-34A6-4C92-922A-C5A6267F2913}.Release|Any CPU.Build.0 = Release|Any CPU - {BC65A32A-303E-490C-94C9-A2FA86B4ED6A}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {BC65A32A-303E-490C-94C9-A2FA86B4ED6A}.Debug|Any CPU.Build.0 = Debug|Any CPU - {BC65A32A-303E-490C-94C9-A2FA86B4ED6A}.Release|Any CPU.ActiveCfg = Release|Any CPU - {BC65A32A-303E-490C-94C9-A2FA86B4ED6A}.Release|Any CPU.Build.0 = Release|Any CPU - EndGlobalSection -EndGlobal + +Microsoft Visual Studio Solution File, Format Version 12.00 +# Visual Studio Version 17 +VisualStudioVersion = 17.0.31903.59 +MinimumVisualStudioVersion = 10.0.40219.1 +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SeedIdempotencyHeaders", "SeedIdempotencyHeaders\SeedIdempotencyHeaders.csproj", "{EDD4B1DD-7E3E-4CD2-AE06-FC9A9299699F}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SeedIdempotencyHeaders.Test", "SeedIdempotencyHeaders.Test\SeedIdempotencyHeaders.Test.csproj", "{7182F5B5-5E87-443E-897B-166617723D09}" +EndProject +Global + GlobalSection(SolutionConfigurationPlatforms) = preSolution + Debug|Any CPU = Debug|Any CPU + Release|Any CPU = Release|Any CPU + EndGlobalSection + GlobalSection(SolutionProperties) = preSolution + HideSolutionNode = FALSE + EndGlobalSection + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {EDD4B1DD-7E3E-4CD2-AE06-FC9A9299699F}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {EDD4B1DD-7E3E-4CD2-AE06-FC9A9299699F}.Debug|Any CPU.Build.0 = Debug|Any CPU + {EDD4B1DD-7E3E-4CD2-AE06-FC9A9299699F}.Release|Any CPU.ActiveCfg = Release|Any CPU + {EDD4B1DD-7E3E-4CD2-AE06-FC9A9299699F}.Release|Any CPU.Build.0 = Release|Any CPU + {7182F5B5-5E87-443E-897B-166617723D09}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {7182F5B5-5E87-443E-897B-166617723D09}.Debug|Any CPU.Build.0 = Debug|Any CPU + {7182F5B5-5E87-443E-897B-166617723D09}.Release|Any CPU.ActiveCfg = Release|Any CPU + {7182F5B5-5E87-443E-897B-166617723D09}.Release|Any CPU.Build.0 = Release|Any CPU + EndGlobalSection +EndGlobal diff --git a/seed/csharp-model/imdb/src/SeedApi.sln b/seed/csharp-model/imdb/src/SeedApi.sln index e6578be2a95..b746cbc72a3 100644 --- a/seed/csharp-model/imdb/src/SeedApi.sln +++ b/seed/csharp-model/imdb/src/SeedApi.sln @@ -1,28 +1,28 @@ - -Microsoft Visual Studio Solution File, Format Version 12.00 -# Visual Studio Version 17 -VisualStudioVersion = 17.0.31903.59 -MinimumVisualStudioVersion = 10.0.40219.1 -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SeedApi", "SeedApi\SeedApi.csproj", "{D4DC3805-9AEE-4C8F-9402-847FB4CD8566}" -EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SeedApi.Test", "SeedApi.Test\SeedApi.Test.csproj", "{30EB9BA6-BECB-465C-B02A-4B85E57C4981}" -EndProject -Global - GlobalSection(SolutionConfigurationPlatforms) = preSolution - Debug|Any CPU = Debug|Any CPU - Release|Any CPU = Release|Any CPU - EndGlobalSection - GlobalSection(SolutionProperties) = preSolution - HideSolutionNode = FALSE - EndGlobalSection - GlobalSection(ProjectConfigurationPlatforms) = postSolution - {D4DC3805-9AEE-4C8F-9402-847FB4CD8566}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {D4DC3805-9AEE-4C8F-9402-847FB4CD8566}.Debug|Any CPU.Build.0 = Debug|Any CPU - {D4DC3805-9AEE-4C8F-9402-847FB4CD8566}.Release|Any CPU.ActiveCfg = Release|Any CPU - {D4DC3805-9AEE-4C8F-9402-847FB4CD8566}.Release|Any CPU.Build.0 = Release|Any CPU - {30EB9BA6-BECB-465C-B02A-4B85E57C4981}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {30EB9BA6-BECB-465C-B02A-4B85E57C4981}.Debug|Any CPU.Build.0 = Debug|Any CPU - {30EB9BA6-BECB-465C-B02A-4B85E57C4981}.Release|Any CPU.ActiveCfg = Release|Any CPU - {30EB9BA6-BECB-465C-B02A-4B85E57C4981}.Release|Any CPU.Build.0 = Release|Any CPU - EndGlobalSection -EndGlobal + +Microsoft Visual Studio Solution File, Format Version 12.00 +# Visual Studio Version 17 +VisualStudioVersion = 17.0.31903.59 +MinimumVisualStudioVersion = 10.0.40219.1 +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SeedApi", "SeedApi\SeedApi.csproj", "{97FED7FD-DAB7-478F-A601-FF369059F085}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SeedApi.Test", "SeedApi.Test\SeedApi.Test.csproj", "{8F8B75F6-78B9-4674-9757-05E82ECAA166}" +EndProject +Global + GlobalSection(SolutionConfigurationPlatforms) = preSolution + Debug|Any CPU = Debug|Any CPU + Release|Any CPU = Release|Any CPU + EndGlobalSection + GlobalSection(SolutionProperties) = preSolution + HideSolutionNode = FALSE + EndGlobalSection + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {97FED7FD-DAB7-478F-A601-FF369059F085}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {97FED7FD-DAB7-478F-A601-FF369059F085}.Debug|Any CPU.Build.0 = Debug|Any CPU + {97FED7FD-DAB7-478F-A601-FF369059F085}.Release|Any CPU.ActiveCfg = Release|Any CPU + {97FED7FD-DAB7-478F-A601-FF369059F085}.Release|Any CPU.Build.0 = Release|Any CPU + {8F8B75F6-78B9-4674-9757-05E82ECAA166}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {8F8B75F6-78B9-4674-9757-05E82ECAA166}.Debug|Any CPU.Build.0 = Debug|Any CPU + {8F8B75F6-78B9-4674-9757-05E82ECAA166}.Release|Any CPU.ActiveCfg = Release|Any CPU + {8F8B75F6-78B9-4674-9757-05E82ECAA166}.Release|Any CPU.Build.0 = Release|Any CPU + EndGlobalSection +EndGlobal diff --git a/seed/csharp-model/license/src/SeedLicense.sln b/seed/csharp-model/license/src/SeedLicense.sln index b448427b523..40ff690b8c2 100644 --- a/seed/csharp-model/license/src/SeedLicense.sln +++ b/seed/csharp-model/license/src/SeedLicense.sln @@ -1,28 +1,28 @@ - -Microsoft Visual Studio Solution File, Format Version 12.00 -# Visual Studio Version 17 -VisualStudioVersion = 17.0.31903.59 -MinimumVisualStudioVersion = 10.0.40219.1 -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SeedLicense", "SeedLicense\SeedLicense.csproj", "{9D755904-69AF-4FF5-9C0F-E9458B144E19}" -EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SeedLicense.Test", "SeedLicense.Test\SeedLicense.Test.csproj", "{ABCA5868-3540-4048-A9B4-7873A8291630}" -EndProject -Global - GlobalSection(SolutionConfigurationPlatforms) = preSolution - Debug|Any CPU = Debug|Any CPU - Release|Any CPU = Release|Any CPU - EndGlobalSection - GlobalSection(SolutionProperties) = preSolution - HideSolutionNode = FALSE - EndGlobalSection - GlobalSection(ProjectConfigurationPlatforms) = postSolution - {9D755904-69AF-4FF5-9C0F-E9458B144E19}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {9D755904-69AF-4FF5-9C0F-E9458B144E19}.Debug|Any CPU.Build.0 = Debug|Any CPU - {9D755904-69AF-4FF5-9C0F-E9458B144E19}.Release|Any CPU.ActiveCfg = Release|Any CPU - {9D755904-69AF-4FF5-9C0F-E9458B144E19}.Release|Any CPU.Build.0 = Release|Any CPU - {ABCA5868-3540-4048-A9B4-7873A8291630}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {ABCA5868-3540-4048-A9B4-7873A8291630}.Debug|Any CPU.Build.0 = Debug|Any CPU - {ABCA5868-3540-4048-A9B4-7873A8291630}.Release|Any CPU.ActiveCfg = Release|Any CPU - {ABCA5868-3540-4048-A9B4-7873A8291630}.Release|Any CPU.Build.0 = Release|Any CPU - EndGlobalSection -EndGlobal + +Microsoft Visual Studio Solution File, Format Version 12.00 +# Visual Studio Version 17 +VisualStudioVersion = 17.0.31903.59 +MinimumVisualStudioVersion = 10.0.40219.1 +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SeedLicense", "SeedLicense\SeedLicense.csproj", "{027F7EE8-5995-40D2-9707-A06BD0E8BAF3}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SeedLicense.Test", "SeedLicense.Test\SeedLicense.Test.csproj", "{C7555417-16CE-46CD-8316-F800CED55989}" +EndProject +Global + GlobalSection(SolutionConfigurationPlatforms) = preSolution + Debug|Any CPU = Debug|Any CPU + Release|Any CPU = Release|Any CPU + EndGlobalSection + GlobalSection(SolutionProperties) = preSolution + HideSolutionNode = FALSE + EndGlobalSection + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {027F7EE8-5995-40D2-9707-A06BD0E8BAF3}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {027F7EE8-5995-40D2-9707-A06BD0E8BAF3}.Debug|Any CPU.Build.0 = Debug|Any CPU + {027F7EE8-5995-40D2-9707-A06BD0E8BAF3}.Release|Any CPU.ActiveCfg = Release|Any CPU + {027F7EE8-5995-40D2-9707-A06BD0E8BAF3}.Release|Any CPU.Build.0 = Release|Any CPU + {C7555417-16CE-46CD-8316-F800CED55989}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {C7555417-16CE-46CD-8316-F800CED55989}.Debug|Any CPU.Build.0 = Debug|Any CPU + {C7555417-16CE-46CD-8316-F800CED55989}.Release|Any CPU.ActiveCfg = Release|Any CPU + {C7555417-16CE-46CD-8316-F800CED55989}.Release|Any CPU.Build.0 = Release|Any CPU + EndGlobalSection +EndGlobal diff --git a/seed/csharp-model/literal/src/SeedLiteral.sln b/seed/csharp-model/literal/src/SeedLiteral.sln index 919ae382981..bc82e2666c4 100644 --- a/seed/csharp-model/literal/src/SeedLiteral.sln +++ b/seed/csharp-model/literal/src/SeedLiteral.sln @@ -1,28 +1,28 @@ - -Microsoft Visual Studio Solution File, Format Version 12.00 -# Visual Studio Version 17 -VisualStudioVersion = 17.0.31903.59 -MinimumVisualStudioVersion = 10.0.40219.1 -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SeedLiteral", "SeedLiteral\SeedLiteral.csproj", "{C9F41BE3-F39D-4461-A415-A1017F7DF687}" -EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SeedLiteral.Test", "SeedLiteral.Test\SeedLiteral.Test.csproj", "{5C86DA11-D716-4DD8-A0B5-3794E94AE7A2}" -EndProject -Global - GlobalSection(SolutionConfigurationPlatforms) = preSolution - Debug|Any CPU = Debug|Any CPU - Release|Any CPU = Release|Any CPU - EndGlobalSection - GlobalSection(SolutionProperties) = preSolution - HideSolutionNode = FALSE - EndGlobalSection - GlobalSection(ProjectConfigurationPlatforms) = postSolution - {C9F41BE3-F39D-4461-A415-A1017F7DF687}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {C9F41BE3-F39D-4461-A415-A1017F7DF687}.Debug|Any CPU.Build.0 = Debug|Any CPU - {C9F41BE3-F39D-4461-A415-A1017F7DF687}.Release|Any CPU.ActiveCfg = Release|Any CPU - {C9F41BE3-F39D-4461-A415-A1017F7DF687}.Release|Any CPU.Build.0 = Release|Any CPU - {5C86DA11-D716-4DD8-A0B5-3794E94AE7A2}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {5C86DA11-D716-4DD8-A0B5-3794E94AE7A2}.Debug|Any CPU.Build.0 = Debug|Any CPU - {5C86DA11-D716-4DD8-A0B5-3794E94AE7A2}.Release|Any CPU.ActiveCfg = Release|Any CPU - {5C86DA11-D716-4DD8-A0B5-3794E94AE7A2}.Release|Any CPU.Build.0 = Release|Any CPU - EndGlobalSection -EndGlobal + +Microsoft Visual Studio Solution File, Format Version 12.00 +# Visual Studio Version 17 +VisualStudioVersion = 17.0.31903.59 +MinimumVisualStudioVersion = 10.0.40219.1 +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SeedLiteral", "SeedLiteral\SeedLiteral.csproj", "{F2EBACB3-23AC-4664-A84C-1179CD99CB05}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SeedLiteral.Test", "SeedLiteral.Test\SeedLiteral.Test.csproj", "{F0264521-0CBE-4C6D-A64E-4524A7371340}" +EndProject +Global + GlobalSection(SolutionConfigurationPlatforms) = preSolution + Debug|Any CPU = Debug|Any CPU + Release|Any CPU = Release|Any CPU + EndGlobalSection + GlobalSection(SolutionProperties) = preSolution + HideSolutionNode = FALSE + EndGlobalSection + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {F2EBACB3-23AC-4664-A84C-1179CD99CB05}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {F2EBACB3-23AC-4664-A84C-1179CD99CB05}.Debug|Any CPU.Build.0 = Debug|Any CPU + {F2EBACB3-23AC-4664-A84C-1179CD99CB05}.Release|Any CPU.ActiveCfg = Release|Any CPU + {F2EBACB3-23AC-4664-A84C-1179CD99CB05}.Release|Any CPU.Build.0 = Release|Any CPU + {F0264521-0CBE-4C6D-A64E-4524A7371340}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {F0264521-0CBE-4C6D-A64E-4524A7371340}.Debug|Any CPU.Build.0 = Debug|Any CPU + {F0264521-0CBE-4C6D-A64E-4524A7371340}.Release|Any CPU.ActiveCfg = Release|Any CPU + {F0264521-0CBE-4C6D-A64E-4524A7371340}.Release|Any CPU.Build.0 = Release|Any CPU + EndGlobalSection +EndGlobal diff --git a/seed/csharp-model/mixed-case/src/SeedMixedCase.sln b/seed/csharp-model/mixed-case/src/SeedMixedCase.sln index 888c61d81e3..6003b46c19b 100644 --- a/seed/csharp-model/mixed-case/src/SeedMixedCase.sln +++ b/seed/csharp-model/mixed-case/src/SeedMixedCase.sln @@ -1,28 +1,28 @@ - -Microsoft Visual Studio Solution File, Format Version 12.00 -# Visual Studio Version 17 -VisualStudioVersion = 17.0.31903.59 -MinimumVisualStudioVersion = 10.0.40219.1 -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SeedMixedCase", "SeedMixedCase\SeedMixedCase.csproj", "{10923792-1BE3-4280-A5EC-B9F35D163B53}" -EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SeedMixedCase.Test", "SeedMixedCase.Test\SeedMixedCase.Test.csproj", "{04529318-D8D7-48C0-B89C-D0FEC4B5021B}" -EndProject -Global - GlobalSection(SolutionConfigurationPlatforms) = preSolution - Debug|Any CPU = Debug|Any CPU - Release|Any CPU = Release|Any CPU - EndGlobalSection - GlobalSection(SolutionProperties) = preSolution - HideSolutionNode = FALSE - EndGlobalSection - GlobalSection(ProjectConfigurationPlatforms) = postSolution - {10923792-1BE3-4280-A5EC-B9F35D163B53}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {10923792-1BE3-4280-A5EC-B9F35D163B53}.Debug|Any CPU.Build.0 = Debug|Any CPU - {10923792-1BE3-4280-A5EC-B9F35D163B53}.Release|Any CPU.ActiveCfg = Release|Any CPU - {10923792-1BE3-4280-A5EC-B9F35D163B53}.Release|Any CPU.Build.0 = Release|Any CPU - {04529318-D8D7-48C0-B89C-D0FEC4B5021B}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {04529318-D8D7-48C0-B89C-D0FEC4B5021B}.Debug|Any CPU.Build.0 = Debug|Any CPU - {04529318-D8D7-48C0-B89C-D0FEC4B5021B}.Release|Any CPU.ActiveCfg = Release|Any CPU - {04529318-D8D7-48C0-B89C-D0FEC4B5021B}.Release|Any CPU.Build.0 = Release|Any CPU - EndGlobalSection -EndGlobal + +Microsoft Visual Studio Solution File, Format Version 12.00 +# Visual Studio Version 17 +VisualStudioVersion = 17.0.31903.59 +MinimumVisualStudioVersion = 10.0.40219.1 +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SeedMixedCase", "SeedMixedCase\SeedMixedCase.csproj", "{EF9C57B0-C332-43F9-AC7D-C7F3A96A9598}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SeedMixedCase.Test", "SeedMixedCase.Test\SeedMixedCase.Test.csproj", "{1C99AB01-675E-47C8-819B-6975C8DD03F1}" +EndProject +Global + GlobalSection(SolutionConfigurationPlatforms) = preSolution + Debug|Any CPU = Debug|Any CPU + Release|Any CPU = Release|Any CPU + EndGlobalSection + GlobalSection(SolutionProperties) = preSolution + HideSolutionNode = FALSE + EndGlobalSection + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {EF9C57B0-C332-43F9-AC7D-C7F3A96A9598}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {EF9C57B0-C332-43F9-AC7D-C7F3A96A9598}.Debug|Any CPU.Build.0 = Debug|Any CPU + {EF9C57B0-C332-43F9-AC7D-C7F3A96A9598}.Release|Any CPU.ActiveCfg = Release|Any CPU + {EF9C57B0-C332-43F9-AC7D-C7F3A96A9598}.Release|Any CPU.Build.0 = Release|Any CPU + {1C99AB01-675E-47C8-819B-6975C8DD03F1}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {1C99AB01-675E-47C8-819B-6975C8DD03F1}.Debug|Any CPU.Build.0 = Debug|Any CPU + {1C99AB01-675E-47C8-819B-6975C8DD03F1}.Release|Any CPU.ActiveCfg = Release|Any CPU + {1C99AB01-675E-47C8-819B-6975C8DD03F1}.Release|Any CPU.Build.0 = Release|Any CPU + EndGlobalSection +EndGlobal diff --git a/seed/csharp-model/mixed-file-directory/src/SeedMixedFileDirectory.sln b/seed/csharp-model/mixed-file-directory/src/SeedMixedFileDirectory.sln index 6a7f902b04c..1c730111ce3 100644 --- a/seed/csharp-model/mixed-file-directory/src/SeedMixedFileDirectory.sln +++ b/seed/csharp-model/mixed-file-directory/src/SeedMixedFileDirectory.sln @@ -1,28 +1,28 @@ - -Microsoft Visual Studio Solution File, Format Version 12.00 -# Visual Studio Version 17 -VisualStudioVersion = 17.0.31903.59 -MinimumVisualStudioVersion = 10.0.40219.1 -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SeedMixedFileDirectory", "SeedMixedFileDirectory\SeedMixedFileDirectory.csproj", "{355238E2-D4EC-456B-8745-F07BB0F30695}" -EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SeedMixedFileDirectory.Test", "SeedMixedFileDirectory.Test\SeedMixedFileDirectory.Test.csproj", "{40F0733B-E4E6-48F8-898C-22BAE352FF40}" -EndProject -Global - GlobalSection(SolutionConfigurationPlatforms) = preSolution - Debug|Any CPU = Debug|Any CPU - Release|Any CPU = Release|Any CPU - EndGlobalSection - GlobalSection(SolutionProperties) = preSolution - HideSolutionNode = FALSE - EndGlobalSection - GlobalSection(ProjectConfigurationPlatforms) = postSolution - {355238E2-D4EC-456B-8745-F07BB0F30695}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {355238E2-D4EC-456B-8745-F07BB0F30695}.Debug|Any CPU.Build.0 = Debug|Any CPU - {355238E2-D4EC-456B-8745-F07BB0F30695}.Release|Any CPU.ActiveCfg = Release|Any CPU - {355238E2-D4EC-456B-8745-F07BB0F30695}.Release|Any CPU.Build.0 = Release|Any CPU - {40F0733B-E4E6-48F8-898C-22BAE352FF40}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {40F0733B-E4E6-48F8-898C-22BAE352FF40}.Debug|Any CPU.Build.0 = Debug|Any CPU - {40F0733B-E4E6-48F8-898C-22BAE352FF40}.Release|Any CPU.ActiveCfg = Release|Any CPU - {40F0733B-E4E6-48F8-898C-22BAE352FF40}.Release|Any CPU.Build.0 = Release|Any CPU - EndGlobalSection -EndGlobal + +Microsoft Visual Studio Solution File, Format Version 12.00 +# Visual Studio Version 17 +VisualStudioVersion = 17.0.31903.59 +MinimumVisualStudioVersion = 10.0.40219.1 +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SeedMixedFileDirectory", "SeedMixedFileDirectory\SeedMixedFileDirectory.csproj", "{75D28B36-3760-42B8-96C9-8B7D30BE4B67}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SeedMixedFileDirectory.Test", "SeedMixedFileDirectory.Test\SeedMixedFileDirectory.Test.csproj", "{F48891C5-E08F-4682-A3B9-E8225A5640D0}" +EndProject +Global + GlobalSection(SolutionConfigurationPlatforms) = preSolution + Debug|Any CPU = Debug|Any CPU + Release|Any CPU = Release|Any CPU + EndGlobalSection + GlobalSection(SolutionProperties) = preSolution + HideSolutionNode = FALSE + EndGlobalSection + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {75D28B36-3760-42B8-96C9-8B7D30BE4B67}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {75D28B36-3760-42B8-96C9-8B7D30BE4B67}.Debug|Any CPU.Build.0 = Debug|Any CPU + {75D28B36-3760-42B8-96C9-8B7D30BE4B67}.Release|Any CPU.ActiveCfg = Release|Any CPU + {75D28B36-3760-42B8-96C9-8B7D30BE4B67}.Release|Any CPU.Build.0 = Release|Any CPU + {F48891C5-E08F-4682-A3B9-E8225A5640D0}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {F48891C5-E08F-4682-A3B9-E8225A5640D0}.Debug|Any CPU.Build.0 = Debug|Any CPU + {F48891C5-E08F-4682-A3B9-E8225A5640D0}.Release|Any CPU.ActiveCfg = Release|Any CPU + {F48891C5-E08F-4682-A3B9-E8225A5640D0}.Release|Any CPU.Build.0 = Release|Any CPU + EndGlobalSection +EndGlobal diff --git a/seed/csharp-model/multi-line-docs/src/SeedMultiLineDocs.sln b/seed/csharp-model/multi-line-docs/src/SeedMultiLineDocs.sln index b6caaf7d679..45b85c1859f 100644 --- a/seed/csharp-model/multi-line-docs/src/SeedMultiLineDocs.sln +++ b/seed/csharp-model/multi-line-docs/src/SeedMultiLineDocs.sln @@ -1,28 +1,28 @@ - -Microsoft Visual Studio Solution File, Format Version 12.00 -# Visual Studio Version 17 -VisualStudioVersion = 17.0.31903.59 -MinimumVisualStudioVersion = 10.0.40219.1 -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SeedMultiLineDocs", "SeedMultiLineDocs\SeedMultiLineDocs.csproj", "{B4567904-2D24-4B14-800E-4924E9EEC312}" -EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SeedMultiLineDocs.Test", "SeedMultiLineDocs.Test\SeedMultiLineDocs.Test.csproj", "{500C8785-B0D2-4246-9A1D-45243C6C7927}" -EndProject -Global - GlobalSection(SolutionConfigurationPlatforms) = preSolution - Debug|Any CPU = Debug|Any CPU - Release|Any CPU = Release|Any CPU - EndGlobalSection - GlobalSection(SolutionProperties) = preSolution - HideSolutionNode = FALSE - EndGlobalSection - GlobalSection(ProjectConfigurationPlatforms) = postSolution - {B4567904-2D24-4B14-800E-4924E9EEC312}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {B4567904-2D24-4B14-800E-4924E9EEC312}.Debug|Any CPU.Build.0 = Debug|Any CPU - {B4567904-2D24-4B14-800E-4924E9EEC312}.Release|Any CPU.ActiveCfg = Release|Any CPU - {B4567904-2D24-4B14-800E-4924E9EEC312}.Release|Any CPU.Build.0 = Release|Any CPU - {500C8785-B0D2-4246-9A1D-45243C6C7927}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {500C8785-B0D2-4246-9A1D-45243C6C7927}.Debug|Any CPU.Build.0 = Debug|Any CPU - {500C8785-B0D2-4246-9A1D-45243C6C7927}.Release|Any CPU.ActiveCfg = Release|Any CPU - {500C8785-B0D2-4246-9A1D-45243C6C7927}.Release|Any CPU.Build.0 = Release|Any CPU - EndGlobalSection -EndGlobal + +Microsoft Visual Studio Solution File, Format Version 12.00 +# Visual Studio Version 17 +VisualStudioVersion = 17.0.31903.59 +MinimumVisualStudioVersion = 10.0.40219.1 +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SeedMultiLineDocs", "SeedMultiLineDocs\SeedMultiLineDocs.csproj", "{DF467DED-E27D-4BEB-85BE-8C5D436616ED}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SeedMultiLineDocs.Test", "SeedMultiLineDocs.Test\SeedMultiLineDocs.Test.csproj", "{334EEE09-3509-4F1F-97E7-F964533AD761}" +EndProject +Global + GlobalSection(SolutionConfigurationPlatforms) = preSolution + Debug|Any CPU = Debug|Any CPU + Release|Any CPU = Release|Any CPU + EndGlobalSection + GlobalSection(SolutionProperties) = preSolution + HideSolutionNode = FALSE + EndGlobalSection + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {DF467DED-E27D-4BEB-85BE-8C5D436616ED}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {DF467DED-E27D-4BEB-85BE-8C5D436616ED}.Debug|Any CPU.Build.0 = Debug|Any CPU + {DF467DED-E27D-4BEB-85BE-8C5D436616ED}.Release|Any CPU.ActiveCfg = Release|Any CPU + {DF467DED-E27D-4BEB-85BE-8C5D436616ED}.Release|Any CPU.Build.0 = Release|Any CPU + {334EEE09-3509-4F1F-97E7-F964533AD761}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {334EEE09-3509-4F1F-97E7-F964533AD761}.Debug|Any CPU.Build.0 = Debug|Any CPU + {334EEE09-3509-4F1F-97E7-F964533AD761}.Release|Any CPU.ActiveCfg = Release|Any CPU + {334EEE09-3509-4F1F-97E7-F964533AD761}.Release|Any CPU.Build.0 = Release|Any CPU + EndGlobalSection +EndGlobal diff --git a/seed/csharp-model/multi-url-environment-no-default/src/SeedMultiUrlEnvironmentNoDefault.sln b/seed/csharp-model/multi-url-environment-no-default/src/SeedMultiUrlEnvironmentNoDefault.sln index 63a86c6b95c..1a4639fbcf5 100644 --- a/seed/csharp-model/multi-url-environment-no-default/src/SeedMultiUrlEnvironmentNoDefault.sln +++ b/seed/csharp-model/multi-url-environment-no-default/src/SeedMultiUrlEnvironmentNoDefault.sln @@ -1,28 +1,28 @@ - -Microsoft Visual Studio Solution File, Format Version 12.00 -# Visual Studio Version 17 -VisualStudioVersion = 17.0.31903.59 -MinimumVisualStudioVersion = 10.0.40219.1 -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SeedMultiUrlEnvironmentNoDefault", "SeedMultiUrlEnvironmentNoDefault\SeedMultiUrlEnvironmentNoDefault.csproj", "{D133FBE5-B247-4F10-B0FC-B879D4A1DFD5}" -EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SeedMultiUrlEnvironmentNoDefault.Test", "SeedMultiUrlEnvironmentNoDefault.Test\SeedMultiUrlEnvironmentNoDefault.Test.csproj", "{D9F58694-4C20-4FC7-8196-CA0E9827A690}" -EndProject -Global - GlobalSection(SolutionConfigurationPlatforms) = preSolution - Debug|Any CPU = Debug|Any CPU - Release|Any CPU = Release|Any CPU - EndGlobalSection - GlobalSection(SolutionProperties) = preSolution - HideSolutionNode = FALSE - EndGlobalSection - GlobalSection(ProjectConfigurationPlatforms) = postSolution - {D133FBE5-B247-4F10-B0FC-B879D4A1DFD5}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {D133FBE5-B247-4F10-B0FC-B879D4A1DFD5}.Debug|Any CPU.Build.0 = Debug|Any CPU - {D133FBE5-B247-4F10-B0FC-B879D4A1DFD5}.Release|Any CPU.ActiveCfg = Release|Any CPU - {D133FBE5-B247-4F10-B0FC-B879D4A1DFD5}.Release|Any CPU.Build.0 = Release|Any CPU - {D9F58694-4C20-4FC7-8196-CA0E9827A690}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {D9F58694-4C20-4FC7-8196-CA0E9827A690}.Debug|Any CPU.Build.0 = Debug|Any CPU - {D9F58694-4C20-4FC7-8196-CA0E9827A690}.Release|Any CPU.ActiveCfg = Release|Any CPU - {D9F58694-4C20-4FC7-8196-CA0E9827A690}.Release|Any CPU.Build.0 = Release|Any CPU - EndGlobalSection -EndGlobal + +Microsoft Visual Studio Solution File, Format Version 12.00 +# Visual Studio Version 17 +VisualStudioVersion = 17.0.31903.59 +MinimumVisualStudioVersion = 10.0.40219.1 +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SeedMultiUrlEnvironmentNoDefault", "SeedMultiUrlEnvironmentNoDefault\SeedMultiUrlEnvironmentNoDefault.csproj", "{FD949B7C-F3FC-4C05-BF65-BCD0D1CBB536}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SeedMultiUrlEnvironmentNoDefault.Test", "SeedMultiUrlEnvironmentNoDefault.Test\SeedMultiUrlEnvironmentNoDefault.Test.csproj", "{A91DAA2C-950C-4126-9A2B-41AC1D546117}" +EndProject +Global + GlobalSection(SolutionConfigurationPlatforms) = preSolution + Debug|Any CPU = Debug|Any CPU + Release|Any CPU = Release|Any CPU + EndGlobalSection + GlobalSection(SolutionProperties) = preSolution + HideSolutionNode = FALSE + EndGlobalSection + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {FD949B7C-F3FC-4C05-BF65-BCD0D1CBB536}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {FD949B7C-F3FC-4C05-BF65-BCD0D1CBB536}.Debug|Any CPU.Build.0 = Debug|Any CPU + {FD949B7C-F3FC-4C05-BF65-BCD0D1CBB536}.Release|Any CPU.ActiveCfg = Release|Any CPU + {FD949B7C-F3FC-4C05-BF65-BCD0D1CBB536}.Release|Any CPU.Build.0 = Release|Any CPU + {A91DAA2C-950C-4126-9A2B-41AC1D546117}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {A91DAA2C-950C-4126-9A2B-41AC1D546117}.Debug|Any CPU.Build.0 = Debug|Any CPU + {A91DAA2C-950C-4126-9A2B-41AC1D546117}.Release|Any CPU.ActiveCfg = Release|Any CPU + {A91DAA2C-950C-4126-9A2B-41AC1D546117}.Release|Any CPU.Build.0 = Release|Any CPU + EndGlobalSection +EndGlobal diff --git a/seed/csharp-model/multi-url-environment/src/SeedMultiUrlEnvironment.sln b/seed/csharp-model/multi-url-environment/src/SeedMultiUrlEnvironment.sln index 5eb86b3d25a..61fa368000f 100644 --- a/seed/csharp-model/multi-url-environment/src/SeedMultiUrlEnvironment.sln +++ b/seed/csharp-model/multi-url-environment/src/SeedMultiUrlEnvironment.sln @@ -1,28 +1,28 @@ - -Microsoft Visual Studio Solution File, Format Version 12.00 -# Visual Studio Version 17 -VisualStudioVersion = 17.0.31903.59 -MinimumVisualStudioVersion = 10.0.40219.1 -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SeedMultiUrlEnvironment", "SeedMultiUrlEnvironment\SeedMultiUrlEnvironment.csproj", "{A2EF5186-4564-4730-A63E-93FAB01EDDE6}" -EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SeedMultiUrlEnvironment.Test", "SeedMultiUrlEnvironment.Test\SeedMultiUrlEnvironment.Test.csproj", "{538A32BC-DE74-43E0-A4BD-9E3284414068}" -EndProject -Global - GlobalSection(SolutionConfigurationPlatforms) = preSolution - Debug|Any CPU = Debug|Any CPU - Release|Any CPU = Release|Any CPU - EndGlobalSection - GlobalSection(SolutionProperties) = preSolution - HideSolutionNode = FALSE - EndGlobalSection - GlobalSection(ProjectConfigurationPlatforms) = postSolution - {A2EF5186-4564-4730-A63E-93FAB01EDDE6}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {A2EF5186-4564-4730-A63E-93FAB01EDDE6}.Debug|Any CPU.Build.0 = Debug|Any CPU - {A2EF5186-4564-4730-A63E-93FAB01EDDE6}.Release|Any CPU.ActiveCfg = Release|Any CPU - {A2EF5186-4564-4730-A63E-93FAB01EDDE6}.Release|Any CPU.Build.0 = Release|Any CPU - {538A32BC-DE74-43E0-A4BD-9E3284414068}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {538A32BC-DE74-43E0-A4BD-9E3284414068}.Debug|Any CPU.Build.0 = Debug|Any CPU - {538A32BC-DE74-43E0-A4BD-9E3284414068}.Release|Any CPU.ActiveCfg = Release|Any CPU - {538A32BC-DE74-43E0-A4BD-9E3284414068}.Release|Any CPU.Build.0 = Release|Any CPU - EndGlobalSection -EndGlobal + +Microsoft Visual Studio Solution File, Format Version 12.00 +# Visual Studio Version 17 +VisualStudioVersion = 17.0.31903.59 +MinimumVisualStudioVersion = 10.0.40219.1 +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SeedMultiUrlEnvironment", "SeedMultiUrlEnvironment\SeedMultiUrlEnvironment.csproj", "{61E32210-5420-4F64-9CD2-E90ABCBB7A9A}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SeedMultiUrlEnvironment.Test", "SeedMultiUrlEnvironment.Test\SeedMultiUrlEnvironment.Test.csproj", "{8AA4FB5E-12D9-4A39-BDE8-5C5B264161D2}" +EndProject +Global + GlobalSection(SolutionConfigurationPlatforms) = preSolution + Debug|Any CPU = Debug|Any CPU + Release|Any CPU = Release|Any CPU + EndGlobalSection + GlobalSection(SolutionProperties) = preSolution + HideSolutionNode = FALSE + EndGlobalSection + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {61E32210-5420-4F64-9CD2-E90ABCBB7A9A}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {61E32210-5420-4F64-9CD2-E90ABCBB7A9A}.Debug|Any CPU.Build.0 = Debug|Any CPU + {61E32210-5420-4F64-9CD2-E90ABCBB7A9A}.Release|Any CPU.ActiveCfg = Release|Any CPU + {61E32210-5420-4F64-9CD2-E90ABCBB7A9A}.Release|Any CPU.Build.0 = Release|Any CPU + {8AA4FB5E-12D9-4A39-BDE8-5C5B264161D2}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {8AA4FB5E-12D9-4A39-BDE8-5C5B264161D2}.Debug|Any CPU.Build.0 = Debug|Any CPU + {8AA4FB5E-12D9-4A39-BDE8-5C5B264161D2}.Release|Any CPU.ActiveCfg = Release|Any CPU + {8AA4FB5E-12D9-4A39-BDE8-5C5B264161D2}.Release|Any CPU.Build.0 = Release|Any CPU + EndGlobalSection +EndGlobal diff --git a/seed/csharp-model/no-environment/src/SeedNoEnvironment.sln b/seed/csharp-model/no-environment/src/SeedNoEnvironment.sln index 4602e2f69eb..4b161797281 100644 --- a/seed/csharp-model/no-environment/src/SeedNoEnvironment.sln +++ b/seed/csharp-model/no-environment/src/SeedNoEnvironment.sln @@ -1,28 +1,28 @@ - -Microsoft Visual Studio Solution File, Format Version 12.00 -# Visual Studio Version 17 -VisualStudioVersion = 17.0.31903.59 -MinimumVisualStudioVersion = 10.0.40219.1 -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SeedNoEnvironment", "SeedNoEnvironment\SeedNoEnvironment.csproj", "{E879CF2F-5F91-42C5-A700-714BBF6BC1E7}" -EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SeedNoEnvironment.Test", "SeedNoEnvironment.Test\SeedNoEnvironment.Test.csproj", "{8A1AC0F0-489F-4CA9-9419-AAC9876E8E6F}" -EndProject -Global - GlobalSection(SolutionConfigurationPlatforms) = preSolution - Debug|Any CPU = Debug|Any CPU - Release|Any CPU = Release|Any CPU - EndGlobalSection - GlobalSection(SolutionProperties) = preSolution - HideSolutionNode = FALSE - EndGlobalSection - GlobalSection(ProjectConfigurationPlatforms) = postSolution - {E879CF2F-5F91-42C5-A700-714BBF6BC1E7}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {E879CF2F-5F91-42C5-A700-714BBF6BC1E7}.Debug|Any CPU.Build.0 = Debug|Any CPU - {E879CF2F-5F91-42C5-A700-714BBF6BC1E7}.Release|Any CPU.ActiveCfg = Release|Any CPU - {E879CF2F-5F91-42C5-A700-714BBF6BC1E7}.Release|Any CPU.Build.0 = Release|Any CPU - {8A1AC0F0-489F-4CA9-9419-AAC9876E8E6F}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {8A1AC0F0-489F-4CA9-9419-AAC9876E8E6F}.Debug|Any CPU.Build.0 = Debug|Any CPU - {8A1AC0F0-489F-4CA9-9419-AAC9876E8E6F}.Release|Any CPU.ActiveCfg = Release|Any CPU - {8A1AC0F0-489F-4CA9-9419-AAC9876E8E6F}.Release|Any CPU.Build.0 = Release|Any CPU - EndGlobalSection -EndGlobal + +Microsoft Visual Studio Solution File, Format Version 12.00 +# Visual Studio Version 17 +VisualStudioVersion = 17.0.31903.59 +MinimumVisualStudioVersion = 10.0.40219.1 +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SeedNoEnvironment", "SeedNoEnvironment\SeedNoEnvironment.csproj", "{C329EBB7-F8BC-452F-AEC9-969D4B074A64}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SeedNoEnvironment.Test", "SeedNoEnvironment.Test\SeedNoEnvironment.Test.csproj", "{E2928302-E975-48C6-A169-5AC6F1C34E99}" +EndProject +Global + GlobalSection(SolutionConfigurationPlatforms) = preSolution + Debug|Any CPU = Debug|Any CPU + Release|Any CPU = Release|Any CPU + EndGlobalSection + GlobalSection(SolutionProperties) = preSolution + HideSolutionNode = FALSE + EndGlobalSection + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {C329EBB7-F8BC-452F-AEC9-969D4B074A64}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {C329EBB7-F8BC-452F-AEC9-969D4B074A64}.Debug|Any CPU.Build.0 = Debug|Any CPU + {C329EBB7-F8BC-452F-AEC9-969D4B074A64}.Release|Any CPU.ActiveCfg = Release|Any CPU + {C329EBB7-F8BC-452F-AEC9-969D4B074A64}.Release|Any CPU.Build.0 = Release|Any CPU + {E2928302-E975-48C6-A169-5AC6F1C34E99}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {E2928302-E975-48C6-A169-5AC6F1C34E99}.Debug|Any CPU.Build.0 = Debug|Any CPU + {E2928302-E975-48C6-A169-5AC6F1C34E99}.Release|Any CPU.ActiveCfg = Release|Any CPU + {E2928302-E975-48C6-A169-5AC6F1C34E99}.Release|Any CPU.Build.0 = Release|Any CPU + EndGlobalSection +EndGlobal diff --git a/seed/csharp-model/oauth-client-credentials-default/src/SeedOauthClientCredentialsDefault.sln b/seed/csharp-model/oauth-client-credentials-default/src/SeedOauthClientCredentialsDefault.sln index 6a94012ecca..b60dcae618f 100644 --- a/seed/csharp-model/oauth-client-credentials-default/src/SeedOauthClientCredentialsDefault.sln +++ b/seed/csharp-model/oauth-client-credentials-default/src/SeedOauthClientCredentialsDefault.sln @@ -1,28 +1,28 @@ - -Microsoft Visual Studio Solution File, Format Version 12.00 -# Visual Studio Version 17 -VisualStudioVersion = 17.0.31903.59 -MinimumVisualStudioVersion = 10.0.40219.1 -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SeedOauthClientCredentialsDefault", "SeedOauthClientCredentialsDefault\SeedOauthClientCredentialsDefault.csproj", "{713E0E32-EC03-448C-95DF-B7158ECBDA8C}" -EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SeedOauthClientCredentialsDefault.Test", "SeedOauthClientCredentialsDefault.Test\SeedOauthClientCredentialsDefault.Test.csproj", "{B135EF01-815F-4B0C-A4CF-AD6100EA65DC}" -EndProject -Global - GlobalSection(SolutionConfigurationPlatforms) = preSolution - Debug|Any CPU = Debug|Any CPU - Release|Any CPU = Release|Any CPU - EndGlobalSection - GlobalSection(SolutionProperties) = preSolution - HideSolutionNode = FALSE - EndGlobalSection - GlobalSection(ProjectConfigurationPlatforms) = postSolution - {713E0E32-EC03-448C-95DF-B7158ECBDA8C}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {713E0E32-EC03-448C-95DF-B7158ECBDA8C}.Debug|Any CPU.Build.0 = Debug|Any CPU - {713E0E32-EC03-448C-95DF-B7158ECBDA8C}.Release|Any CPU.ActiveCfg = Release|Any CPU - {713E0E32-EC03-448C-95DF-B7158ECBDA8C}.Release|Any CPU.Build.0 = Release|Any CPU - {B135EF01-815F-4B0C-A4CF-AD6100EA65DC}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {B135EF01-815F-4B0C-A4CF-AD6100EA65DC}.Debug|Any CPU.Build.0 = Debug|Any CPU - {B135EF01-815F-4B0C-A4CF-AD6100EA65DC}.Release|Any CPU.ActiveCfg = Release|Any CPU - {B135EF01-815F-4B0C-A4CF-AD6100EA65DC}.Release|Any CPU.Build.0 = Release|Any CPU - EndGlobalSection -EndGlobal + +Microsoft Visual Studio Solution File, Format Version 12.00 +# Visual Studio Version 17 +VisualStudioVersion = 17.0.31903.59 +MinimumVisualStudioVersion = 10.0.40219.1 +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SeedOauthClientCredentialsDefault", "SeedOauthClientCredentialsDefault\SeedOauthClientCredentialsDefault.csproj", "{AD585193-2F5A-4CCD-9F9A-440469D88BA1}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SeedOauthClientCredentialsDefault.Test", "SeedOauthClientCredentialsDefault.Test\SeedOauthClientCredentialsDefault.Test.csproj", "{78CDEF13-9261-45B7-B3A8-7A0014361A7A}" +EndProject +Global + GlobalSection(SolutionConfigurationPlatforms) = preSolution + Debug|Any CPU = Debug|Any CPU + Release|Any CPU = Release|Any CPU + EndGlobalSection + GlobalSection(SolutionProperties) = preSolution + HideSolutionNode = FALSE + EndGlobalSection + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {AD585193-2F5A-4CCD-9F9A-440469D88BA1}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {AD585193-2F5A-4CCD-9F9A-440469D88BA1}.Debug|Any CPU.Build.0 = Debug|Any CPU + {AD585193-2F5A-4CCD-9F9A-440469D88BA1}.Release|Any CPU.ActiveCfg = Release|Any CPU + {AD585193-2F5A-4CCD-9F9A-440469D88BA1}.Release|Any CPU.Build.0 = Release|Any CPU + {78CDEF13-9261-45B7-B3A8-7A0014361A7A}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {78CDEF13-9261-45B7-B3A8-7A0014361A7A}.Debug|Any CPU.Build.0 = Debug|Any CPU + {78CDEF13-9261-45B7-B3A8-7A0014361A7A}.Release|Any CPU.ActiveCfg = Release|Any CPU + {78CDEF13-9261-45B7-B3A8-7A0014361A7A}.Release|Any CPU.Build.0 = Release|Any CPU + EndGlobalSection +EndGlobal diff --git a/seed/csharp-model/oauth-client-credentials-environment-variables/src/SeedOauthClientCredentialsEnvironmentVariables.sln b/seed/csharp-model/oauth-client-credentials-environment-variables/src/SeedOauthClientCredentialsEnvironmentVariables.sln index 7f2ce34ebec..449f5830c92 100644 --- a/seed/csharp-model/oauth-client-credentials-environment-variables/src/SeedOauthClientCredentialsEnvironmentVariables.sln +++ b/seed/csharp-model/oauth-client-credentials-environment-variables/src/SeedOauthClientCredentialsEnvironmentVariables.sln @@ -1,28 +1,28 @@ - -Microsoft Visual Studio Solution File, Format Version 12.00 -# Visual Studio Version 17 -VisualStudioVersion = 17.0.31903.59 -MinimumVisualStudioVersion = 10.0.40219.1 -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SeedOauthClientCredentialsEnvironmentVariables", "SeedOauthClientCredentialsEnvironmentVariables\SeedOauthClientCredentialsEnvironmentVariables.csproj", "{D33A90C1-5A26-4476-944A-9ADDE5036B2D}" -EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SeedOauthClientCredentialsEnvironmentVariables.Test", "SeedOauthClientCredentialsEnvironmentVariables.Test\SeedOauthClientCredentialsEnvironmentVariables.Test.csproj", "{ACA9DEB0-D8F2-4835-9E5C-08E328BC5CE5}" -EndProject -Global - GlobalSection(SolutionConfigurationPlatforms) = preSolution - Debug|Any CPU = Debug|Any CPU - Release|Any CPU = Release|Any CPU - EndGlobalSection - GlobalSection(SolutionProperties) = preSolution - HideSolutionNode = FALSE - EndGlobalSection - GlobalSection(ProjectConfigurationPlatforms) = postSolution - {D33A90C1-5A26-4476-944A-9ADDE5036B2D}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {D33A90C1-5A26-4476-944A-9ADDE5036B2D}.Debug|Any CPU.Build.0 = Debug|Any CPU - {D33A90C1-5A26-4476-944A-9ADDE5036B2D}.Release|Any CPU.ActiveCfg = Release|Any CPU - {D33A90C1-5A26-4476-944A-9ADDE5036B2D}.Release|Any CPU.Build.0 = Release|Any CPU - {ACA9DEB0-D8F2-4835-9E5C-08E328BC5CE5}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {ACA9DEB0-D8F2-4835-9E5C-08E328BC5CE5}.Debug|Any CPU.Build.0 = Debug|Any CPU - {ACA9DEB0-D8F2-4835-9E5C-08E328BC5CE5}.Release|Any CPU.ActiveCfg = Release|Any CPU - {ACA9DEB0-D8F2-4835-9E5C-08E328BC5CE5}.Release|Any CPU.Build.0 = Release|Any CPU - EndGlobalSection -EndGlobal + +Microsoft Visual Studio Solution File, Format Version 12.00 +# Visual Studio Version 17 +VisualStudioVersion = 17.0.31903.59 +MinimumVisualStudioVersion = 10.0.40219.1 +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SeedOauthClientCredentialsEnvironmentVariables", "SeedOauthClientCredentialsEnvironmentVariables\SeedOauthClientCredentialsEnvironmentVariables.csproj", "{23E009FB-CE14-40A3-8EBD-555963B583E0}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SeedOauthClientCredentialsEnvironmentVariables.Test", "SeedOauthClientCredentialsEnvironmentVariables.Test\SeedOauthClientCredentialsEnvironmentVariables.Test.csproj", "{963828BB-9D8B-4FB4-AE26-C25AE39E004F}" +EndProject +Global + GlobalSection(SolutionConfigurationPlatforms) = preSolution + Debug|Any CPU = Debug|Any CPU + Release|Any CPU = Release|Any CPU + EndGlobalSection + GlobalSection(SolutionProperties) = preSolution + HideSolutionNode = FALSE + EndGlobalSection + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {23E009FB-CE14-40A3-8EBD-555963B583E0}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {23E009FB-CE14-40A3-8EBD-555963B583E0}.Debug|Any CPU.Build.0 = Debug|Any CPU + {23E009FB-CE14-40A3-8EBD-555963B583E0}.Release|Any CPU.ActiveCfg = Release|Any CPU + {23E009FB-CE14-40A3-8EBD-555963B583E0}.Release|Any CPU.Build.0 = Release|Any CPU + {963828BB-9D8B-4FB4-AE26-C25AE39E004F}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {963828BB-9D8B-4FB4-AE26-C25AE39E004F}.Debug|Any CPU.Build.0 = Debug|Any CPU + {963828BB-9D8B-4FB4-AE26-C25AE39E004F}.Release|Any CPU.ActiveCfg = Release|Any CPU + {963828BB-9D8B-4FB4-AE26-C25AE39E004F}.Release|Any CPU.Build.0 = Release|Any CPU + EndGlobalSection +EndGlobal diff --git a/seed/csharp-model/oauth-client-credentials-nested-root/src/SeedOauthClientCredentials.sln b/seed/csharp-model/oauth-client-credentials-nested-root/src/SeedOauthClientCredentials.sln index 59ed7108bc5..d96b7241557 100644 --- a/seed/csharp-model/oauth-client-credentials-nested-root/src/SeedOauthClientCredentials.sln +++ b/seed/csharp-model/oauth-client-credentials-nested-root/src/SeedOauthClientCredentials.sln @@ -1,28 +1,28 @@ - -Microsoft Visual Studio Solution File, Format Version 12.00 -# Visual Studio Version 17 -VisualStudioVersion = 17.0.31903.59 -MinimumVisualStudioVersion = 10.0.40219.1 -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SeedOauthClientCredentials", "SeedOauthClientCredentials\SeedOauthClientCredentials.csproj", "{3ADC5479-8004-46B8-87C1-53122A02E99C}" -EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SeedOauthClientCredentials.Test", "SeedOauthClientCredentials.Test\SeedOauthClientCredentials.Test.csproj", "{3FB000ED-C83F-4662-A758-068E8E2522A8}" -EndProject -Global - GlobalSection(SolutionConfigurationPlatforms) = preSolution - Debug|Any CPU = Debug|Any CPU - Release|Any CPU = Release|Any CPU - EndGlobalSection - GlobalSection(SolutionProperties) = preSolution - HideSolutionNode = FALSE - EndGlobalSection - GlobalSection(ProjectConfigurationPlatforms) = postSolution - {3ADC5479-8004-46B8-87C1-53122A02E99C}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {3ADC5479-8004-46B8-87C1-53122A02E99C}.Debug|Any CPU.Build.0 = Debug|Any CPU - {3ADC5479-8004-46B8-87C1-53122A02E99C}.Release|Any CPU.ActiveCfg = Release|Any CPU - {3ADC5479-8004-46B8-87C1-53122A02E99C}.Release|Any CPU.Build.0 = Release|Any CPU - {3FB000ED-C83F-4662-A758-068E8E2522A8}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {3FB000ED-C83F-4662-A758-068E8E2522A8}.Debug|Any CPU.Build.0 = Debug|Any CPU - {3FB000ED-C83F-4662-A758-068E8E2522A8}.Release|Any CPU.ActiveCfg = Release|Any CPU - {3FB000ED-C83F-4662-A758-068E8E2522A8}.Release|Any CPU.Build.0 = Release|Any CPU - EndGlobalSection -EndGlobal + +Microsoft Visual Studio Solution File, Format Version 12.00 +# Visual Studio Version 17 +VisualStudioVersion = 17.0.31903.59 +MinimumVisualStudioVersion = 10.0.40219.1 +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SeedOauthClientCredentials", "SeedOauthClientCredentials\SeedOauthClientCredentials.csproj", "{BB62F643-D69E-4C5B-BF77-2E08B929758A}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SeedOauthClientCredentials.Test", "SeedOauthClientCredentials.Test\SeedOauthClientCredentials.Test.csproj", "{8CBD6BB4-23C9-4F5A-B779-0E95B735ECF0}" +EndProject +Global + GlobalSection(SolutionConfigurationPlatforms) = preSolution + Debug|Any CPU = Debug|Any CPU + Release|Any CPU = Release|Any CPU + EndGlobalSection + GlobalSection(SolutionProperties) = preSolution + HideSolutionNode = FALSE + EndGlobalSection + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {BB62F643-D69E-4C5B-BF77-2E08B929758A}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {BB62F643-D69E-4C5B-BF77-2E08B929758A}.Debug|Any CPU.Build.0 = Debug|Any CPU + {BB62F643-D69E-4C5B-BF77-2E08B929758A}.Release|Any CPU.ActiveCfg = Release|Any CPU + {BB62F643-D69E-4C5B-BF77-2E08B929758A}.Release|Any CPU.Build.0 = Release|Any CPU + {8CBD6BB4-23C9-4F5A-B779-0E95B735ECF0}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {8CBD6BB4-23C9-4F5A-B779-0E95B735ECF0}.Debug|Any CPU.Build.0 = Debug|Any CPU + {8CBD6BB4-23C9-4F5A-B779-0E95B735ECF0}.Release|Any CPU.ActiveCfg = Release|Any CPU + {8CBD6BB4-23C9-4F5A-B779-0E95B735ECF0}.Release|Any CPU.Build.0 = Release|Any CPU + EndGlobalSection +EndGlobal diff --git a/seed/csharp-model/oauth-client-credentials/src/SeedOauthClientCredentials.sln b/seed/csharp-model/oauth-client-credentials/src/SeedOauthClientCredentials.sln index b4859701e98..7b5ab5f932c 100644 --- a/seed/csharp-model/oauth-client-credentials/src/SeedOauthClientCredentials.sln +++ b/seed/csharp-model/oauth-client-credentials/src/SeedOauthClientCredentials.sln @@ -1,28 +1,28 @@ - -Microsoft Visual Studio Solution File, Format Version 12.00 -# Visual Studio Version 17 -VisualStudioVersion = 17.0.31903.59 -MinimumVisualStudioVersion = 10.0.40219.1 -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SeedOauthClientCredentials", "SeedOauthClientCredentials\SeedOauthClientCredentials.csproj", "{44C1788F-1A2B-4EA6-B2D5-6627742FCCEA}" -EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SeedOauthClientCredentials.Test", "SeedOauthClientCredentials.Test\SeedOauthClientCredentials.Test.csproj", "{F3648CDD-5394-4232-A1F3-BD8D1E75538B}" -EndProject -Global - GlobalSection(SolutionConfigurationPlatforms) = preSolution - Debug|Any CPU = Debug|Any CPU - Release|Any CPU = Release|Any CPU - EndGlobalSection - GlobalSection(SolutionProperties) = preSolution - HideSolutionNode = FALSE - EndGlobalSection - GlobalSection(ProjectConfigurationPlatforms) = postSolution - {44C1788F-1A2B-4EA6-B2D5-6627742FCCEA}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {44C1788F-1A2B-4EA6-B2D5-6627742FCCEA}.Debug|Any CPU.Build.0 = Debug|Any CPU - {44C1788F-1A2B-4EA6-B2D5-6627742FCCEA}.Release|Any CPU.ActiveCfg = Release|Any CPU - {44C1788F-1A2B-4EA6-B2D5-6627742FCCEA}.Release|Any CPU.Build.0 = Release|Any CPU - {F3648CDD-5394-4232-A1F3-BD8D1E75538B}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {F3648CDD-5394-4232-A1F3-BD8D1E75538B}.Debug|Any CPU.Build.0 = Debug|Any CPU - {F3648CDD-5394-4232-A1F3-BD8D1E75538B}.Release|Any CPU.ActiveCfg = Release|Any CPU - {F3648CDD-5394-4232-A1F3-BD8D1E75538B}.Release|Any CPU.Build.0 = Release|Any CPU - EndGlobalSection -EndGlobal + +Microsoft Visual Studio Solution File, Format Version 12.00 +# Visual Studio Version 17 +VisualStudioVersion = 17.0.31903.59 +MinimumVisualStudioVersion = 10.0.40219.1 +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SeedOauthClientCredentials", "SeedOauthClientCredentials\SeedOauthClientCredentials.csproj", "{204A7B3C-1D78-44FD-A9B9-950B50A76617}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SeedOauthClientCredentials.Test", "SeedOauthClientCredentials.Test\SeedOauthClientCredentials.Test.csproj", "{D289AACF-F82F-4068-B963-779BDE0ACA03}" +EndProject +Global + GlobalSection(SolutionConfigurationPlatforms) = preSolution + Debug|Any CPU = Debug|Any CPU + Release|Any CPU = Release|Any CPU + EndGlobalSection + GlobalSection(SolutionProperties) = preSolution + HideSolutionNode = FALSE + EndGlobalSection + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {204A7B3C-1D78-44FD-A9B9-950B50A76617}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {204A7B3C-1D78-44FD-A9B9-950B50A76617}.Debug|Any CPU.Build.0 = Debug|Any CPU + {204A7B3C-1D78-44FD-A9B9-950B50A76617}.Release|Any CPU.ActiveCfg = Release|Any CPU + {204A7B3C-1D78-44FD-A9B9-950B50A76617}.Release|Any CPU.Build.0 = Release|Any CPU + {D289AACF-F82F-4068-B963-779BDE0ACA03}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {D289AACF-F82F-4068-B963-779BDE0ACA03}.Debug|Any CPU.Build.0 = Debug|Any CPU + {D289AACF-F82F-4068-B963-779BDE0ACA03}.Release|Any CPU.ActiveCfg = Release|Any CPU + {D289AACF-F82F-4068-B963-779BDE0ACA03}.Release|Any CPU.Build.0 = Release|Any CPU + EndGlobalSection +EndGlobal diff --git a/seed/csharp-model/object/src/SeedObject.sln b/seed/csharp-model/object/src/SeedObject.sln index 253d8ac0356..90c27ae4ae5 100644 --- a/seed/csharp-model/object/src/SeedObject.sln +++ b/seed/csharp-model/object/src/SeedObject.sln @@ -1,28 +1,28 @@ - -Microsoft Visual Studio Solution File, Format Version 12.00 -# Visual Studio Version 17 -VisualStudioVersion = 17.0.31903.59 -MinimumVisualStudioVersion = 10.0.40219.1 -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SeedObject", "SeedObject\SeedObject.csproj", "{E13A1EBA-5961-498E-ADBA-2F74144788D7}" -EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SeedObject.Test", "SeedObject.Test\SeedObject.Test.csproj", "{BC153607-500D-46E1-9EFF-8373EAC86DCA}" -EndProject -Global - GlobalSection(SolutionConfigurationPlatforms) = preSolution - Debug|Any CPU = Debug|Any CPU - Release|Any CPU = Release|Any CPU - EndGlobalSection - GlobalSection(SolutionProperties) = preSolution - HideSolutionNode = FALSE - EndGlobalSection - GlobalSection(ProjectConfigurationPlatforms) = postSolution - {E13A1EBA-5961-498E-ADBA-2F74144788D7}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {E13A1EBA-5961-498E-ADBA-2F74144788D7}.Debug|Any CPU.Build.0 = Debug|Any CPU - {E13A1EBA-5961-498E-ADBA-2F74144788D7}.Release|Any CPU.ActiveCfg = Release|Any CPU - {E13A1EBA-5961-498E-ADBA-2F74144788D7}.Release|Any CPU.Build.0 = Release|Any CPU - {BC153607-500D-46E1-9EFF-8373EAC86DCA}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {BC153607-500D-46E1-9EFF-8373EAC86DCA}.Debug|Any CPU.Build.0 = Debug|Any CPU - {BC153607-500D-46E1-9EFF-8373EAC86DCA}.Release|Any CPU.ActiveCfg = Release|Any CPU - {BC153607-500D-46E1-9EFF-8373EAC86DCA}.Release|Any CPU.Build.0 = Release|Any CPU - EndGlobalSection -EndGlobal + +Microsoft Visual Studio Solution File, Format Version 12.00 +# Visual Studio Version 17 +VisualStudioVersion = 17.0.31903.59 +MinimumVisualStudioVersion = 10.0.40219.1 +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SeedObject", "SeedObject\SeedObject.csproj", "{49CD2CCB-3825-418C-B179-931D4A875AA3}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SeedObject.Test", "SeedObject.Test\SeedObject.Test.csproj", "{6EF92307-31BC-4358-B513-BBF6F87170B2}" +EndProject +Global + GlobalSection(SolutionConfigurationPlatforms) = preSolution + Debug|Any CPU = Debug|Any CPU + Release|Any CPU = Release|Any CPU + EndGlobalSection + GlobalSection(SolutionProperties) = preSolution + HideSolutionNode = FALSE + EndGlobalSection + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {49CD2CCB-3825-418C-B179-931D4A875AA3}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {49CD2CCB-3825-418C-B179-931D4A875AA3}.Debug|Any CPU.Build.0 = Debug|Any CPU + {49CD2CCB-3825-418C-B179-931D4A875AA3}.Release|Any CPU.ActiveCfg = Release|Any CPU + {49CD2CCB-3825-418C-B179-931D4A875AA3}.Release|Any CPU.Build.0 = Release|Any CPU + {6EF92307-31BC-4358-B513-BBF6F87170B2}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {6EF92307-31BC-4358-B513-BBF6F87170B2}.Debug|Any CPU.Build.0 = Debug|Any CPU + {6EF92307-31BC-4358-B513-BBF6F87170B2}.Release|Any CPU.ActiveCfg = Release|Any CPU + {6EF92307-31BC-4358-B513-BBF6F87170B2}.Release|Any CPU.Build.0 = Release|Any CPU + EndGlobalSection +EndGlobal diff --git a/seed/csharp-model/objects-with-imports/src/SeedObjectsWithImports.sln b/seed/csharp-model/objects-with-imports/src/SeedObjectsWithImports.sln index 23d1ad5a679..bef40ee9626 100644 --- a/seed/csharp-model/objects-with-imports/src/SeedObjectsWithImports.sln +++ b/seed/csharp-model/objects-with-imports/src/SeedObjectsWithImports.sln @@ -1,28 +1,28 @@ - -Microsoft Visual Studio Solution File, Format Version 12.00 -# Visual Studio Version 17 -VisualStudioVersion = 17.0.31903.59 -MinimumVisualStudioVersion = 10.0.40219.1 -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SeedObjectsWithImports", "SeedObjectsWithImports\SeedObjectsWithImports.csproj", "{666446E1-815B-43CE-BAD2-496D79283DEC}" -EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SeedObjectsWithImports.Test", "SeedObjectsWithImports.Test\SeedObjectsWithImports.Test.csproj", "{0E823FB9-E1A5-46A9-924D-1E394C81C0FE}" -EndProject -Global - GlobalSection(SolutionConfigurationPlatforms) = preSolution - Debug|Any CPU = Debug|Any CPU - Release|Any CPU = Release|Any CPU - EndGlobalSection - GlobalSection(SolutionProperties) = preSolution - HideSolutionNode = FALSE - EndGlobalSection - GlobalSection(ProjectConfigurationPlatforms) = postSolution - {666446E1-815B-43CE-BAD2-496D79283DEC}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {666446E1-815B-43CE-BAD2-496D79283DEC}.Debug|Any CPU.Build.0 = Debug|Any CPU - {666446E1-815B-43CE-BAD2-496D79283DEC}.Release|Any CPU.ActiveCfg = Release|Any CPU - {666446E1-815B-43CE-BAD2-496D79283DEC}.Release|Any CPU.Build.0 = Release|Any CPU - {0E823FB9-E1A5-46A9-924D-1E394C81C0FE}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {0E823FB9-E1A5-46A9-924D-1E394C81C0FE}.Debug|Any CPU.Build.0 = Debug|Any CPU - {0E823FB9-E1A5-46A9-924D-1E394C81C0FE}.Release|Any CPU.ActiveCfg = Release|Any CPU - {0E823FB9-E1A5-46A9-924D-1E394C81C0FE}.Release|Any CPU.Build.0 = Release|Any CPU - EndGlobalSection -EndGlobal + +Microsoft Visual Studio Solution File, Format Version 12.00 +# Visual Studio Version 17 +VisualStudioVersion = 17.0.31903.59 +MinimumVisualStudioVersion = 10.0.40219.1 +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SeedObjectsWithImports", "SeedObjectsWithImports\SeedObjectsWithImports.csproj", "{60ED0D9C-4E85-4CD0-826E-3CB42BF61A11}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SeedObjectsWithImports.Test", "SeedObjectsWithImports.Test\SeedObjectsWithImports.Test.csproj", "{8AB8BEF6-1120-4912-BDD2-A6351D6C854F}" +EndProject +Global + GlobalSection(SolutionConfigurationPlatforms) = preSolution + Debug|Any CPU = Debug|Any CPU + Release|Any CPU = Release|Any CPU + EndGlobalSection + GlobalSection(SolutionProperties) = preSolution + HideSolutionNode = FALSE + EndGlobalSection + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {60ED0D9C-4E85-4CD0-826E-3CB42BF61A11}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {60ED0D9C-4E85-4CD0-826E-3CB42BF61A11}.Debug|Any CPU.Build.0 = Debug|Any CPU + {60ED0D9C-4E85-4CD0-826E-3CB42BF61A11}.Release|Any CPU.ActiveCfg = Release|Any CPU + {60ED0D9C-4E85-4CD0-826E-3CB42BF61A11}.Release|Any CPU.Build.0 = Release|Any CPU + {8AB8BEF6-1120-4912-BDD2-A6351D6C854F}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {8AB8BEF6-1120-4912-BDD2-A6351D6C854F}.Debug|Any CPU.Build.0 = Debug|Any CPU + {8AB8BEF6-1120-4912-BDD2-A6351D6C854F}.Release|Any CPU.ActiveCfg = Release|Any CPU + {8AB8BEF6-1120-4912-BDD2-A6351D6C854F}.Release|Any CPU.Build.0 = Release|Any CPU + EndGlobalSection +EndGlobal diff --git a/seed/csharp-model/optional/src/SeedObjectsWithImports.sln b/seed/csharp-model/optional/src/SeedObjectsWithImports.sln index 0c19d2c7525..84ac1a28c8f 100644 --- a/seed/csharp-model/optional/src/SeedObjectsWithImports.sln +++ b/seed/csharp-model/optional/src/SeedObjectsWithImports.sln @@ -1,28 +1,28 @@ - -Microsoft Visual Studio Solution File, Format Version 12.00 -# Visual Studio Version 17 -VisualStudioVersion = 17.0.31903.59 -MinimumVisualStudioVersion = 10.0.40219.1 -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SeedObjectsWithImports", "SeedObjectsWithImports\SeedObjectsWithImports.csproj", "{263C2C25-B6A5-45D6-9106-87F9F8C4F482}" -EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SeedObjectsWithImports.Test", "SeedObjectsWithImports.Test\SeedObjectsWithImports.Test.csproj", "{A3471B04-2E18-4B60-8D67-C5516A63FC06}" -EndProject -Global - GlobalSection(SolutionConfigurationPlatforms) = preSolution - Debug|Any CPU = Debug|Any CPU - Release|Any CPU = Release|Any CPU - EndGlobalSection - GlobalSection(SolutionProperties) = preSolution - HideSolutionNode = FALSE - EndGlobalSection - GlobalSection(ProjectConfigurationPlatforms) = postSolution - {263C2C25-B6A5-45D6-9106-87F9F8C4F482}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {263C2C25-B6A5-45D6-9106-87F9F8C4F482}.Debug|Any CPU.Build.0 = Debug|Any CPU - {263C2C25-B6A5-45D6-9106-87F9F8C4F482}.Release|Any CPU.ActiveCfg = Release|Any CPU - {263C2C25-B6A5-45D6-9106-87F9F8C4F482}.Release|Any CPU.Build.0 = Release|Any CPU - {A3471B04-2E18-4B60-8D67-C5516A63FC06}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {A3471B04-2E18-4B60-8D67-C5516A63FC06}.Debug|Any CPU.Build.0 = Debug|Any CPU - {A3471B04-2E18-4B60-8D67-C5516A63FC06}.Release|Any CPU.ActiveCfg = Release|Any CPU - {A3471B04-2E18-4B60-8D67-C5516A63FC06}.Release|Any CPU.Build.0 = Release|Any CPU - EndGlobalSection -EndGlobal + +Microsoft Visual Studio Solution File, Format Version 12.00 +# Visual Studio Version 17 +VisualStudioVersion = 17.0.31903.59 +MinimumVisualStudioVersion = 10.0.40219.1 +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SeedObjectsWithImports", "SeedObjectsWithImports\SeedObjectsWithImports.csproj", "{88C22561-168E-43EC-B05A-C00AE2C1A58E}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SeedObjectsWithImports.Test", "SeedObjectsWithImports.Test\SeedObjectsWithImports.Test.csproj", "{363627F3-9BEE-4B74-98AA-EEE0FC31AEA1}" +EndProject +Global + GlobalSection(SolutionConfigurationPlatforms) = preSolution + Debug|Any CPU = Debug|Any CPU + Release|Any CPU = Release|Any CPU + EndGlobalSection + GlobalSection(SolutionProperties) = preSolution + HideSolutionNode = FALSE + EndGlobalSection + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {88C22561-168E-43EC-B05A-C00AE2C1A58E}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {88C22561-168E-43EC-B05A-C00AE2C1A58E}.Debug|Any CPU.Build.0 = Debug|Any CPU + {88C22561-168E-43EC-B05A-C00AE2C1A58E}.Release|Any CPU.ActiveCfg = Release|Any CPU + {88C22561-168E-43EC-B05A-C00AE2C1A58E}.Release|Any CPU.Build.0 = Release|Any CPU + {363627F3-9BEE-4B74-98AA-EEE0FC31AEA1}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {363627F3-9BEE-4B74-98AA-EEE0FC31AEA1}.Debug|Any CPU.Build.0 = Debug|Any CPU + {363627F3-9BEE-4B74-98AA-EEE0FC31AEA1}.Release|Any CPU.ActiveCfg = Release|Any CPU + {363627F3-9BEE-4B74-98AA-EEE0FC31AEA1}.Release|Any CPU.Build.0 = Release|Any CPU + EndGlobalSection +EndGlobal diff --git a/seed/csharp-model/package-yml/src/SeedPackageYml.sln b/seed/csharp-model/package-yml/src/SeedPackageYml.sln index 8d859935d0b..a057ef015e9 100644 --- a/seed/csharp-model/package-yml/src/SeedPackageYml.sln +++ b/seed/csharp-model/package-yml/src/SeedPackageYml.sln @@ -1,28 +1,28 @@ - -Microsoft Visual Studio Solution File, Format Version 12.00 -# Visual Studio Version 17 -VisualStudioVersion = 17.0.31903.59 -MinimumVisualStudioVersion = 10.0.40219.1 -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SeedPackageYml", "SeedPackageYml\SeedPackageYml.csproj", "{232AFC0E-9AD1-4836-9132-8D639A5B0744}" -EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SeedPackageYml.Test", "SeedPackageYml.Test\SeedPackageYml.Test.csproj", "{4CE378AF-E9C9-417F-AAC6-A6B515ADA2E7}" -EndProject -Global - GlobalSection(SolutionConfigurationPlatforms) = preSolution - Debug|Any CPU = Debug|Any CPU - Release|Any CPU = Release|Any CPU - EndGlobalSection - GlobalSection(SolutionProperties) = preSolution - HideSolutionNode = FALSE - EndGlobalSection - GlobalSection(ProjectConfigurationPlatforms) = postSolution - {232AFC0E-9AD1-4836-9132-8D639A5B0744}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {232AFC0E-9AD1-4836-9132-8D639A5B0744}.Debug|Any CPU.Build.0 = Debug|Any CPU - {232AFC0E-9AD1-4836-9132-8D639A5B0744}.Release|Any CPU.ActiveCfg = Release|Any CPU - {232AFC0E-9AD1-4836-9132-8D639A5B0744}.Release|Any CPU.Build.0 = Release|Any CPU - {4CE378AF-E9C9-417F-AAC6-A6B515ADA2E7}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {4CE378AF-E9C9-417F-AAC6-A6B515ADA2E7}.Debug|Any CPU.Build.0 = Debug|Any CPU - {4CE378AF-E9C9-417F-AAC6-A6B515ADA2E7}.Release|Any CPU.ActiveCfg = Release|Any CPU - {4CE378AF-E9C9-417F-AAC6-A6B515ADA2E7}.Release|Any CPU.Build.0 = Release|Any CPU - EndGlobalSection -EndGlobal + +Microsoft Visual Studio Solution File, Format Version 12.00 +# Visual Studio Version 17 +VisualStudioVersion = 17.0.31903.59 +MinimumVisualStudioVersion = 10.0.40219.1 +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SeedPackageYml", "SeedPackageYml\SeedPackageYml.csproj", "{27582F09-5074-4E94-99A5-3657B662181B}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SeedPackageYml.Test", "SeedPackageYml.Test\SeedPackageYml.Test.csproj", "{AE2E86EC-2222-4804-A337-BD9C89AEBFBF}" +EndProject +Global + GlobalSection(SolutionConfigurationPlatforms) = preSolution + Debug|Any CPU = Debug|Any CPU + Release|Any CPU = Release|Any CPU + EndGlobalSection + GlobalSection(SolutionProperties) = preSolution + HideSolutionNode = FALSE + EndGlobalSection + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {27582F09-5074-4E94-99A5-3657B662181B}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {27582F09-5074-4E94-99A5-3657B662181B}.Debug|Any CPU.Build.0 = Debug|Any CPU + {27582F09-5074-4E94-99A5-3657B662181B}.Release|Any CPU.ActiveCfg = Release|Any CPU + {27582F09-5074-4E94-99A5-3657B662181B}.Release|Any CPU.Build.0 = Release|Any CPU + {AE2E86EC-2222-4804-A337-BD9C89AEBFBF}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {AE2E86EC-2222-4804-A337-BD9C89AEBFBF}.Debug|Any CPU.Build.0 = Debug|Any CPU + {AE2E86EC-2222-4804-A337-BD9C89AEBFBF}.Release|Any CPU.ActiveCfg = Release|Any CPU + {AE2E86EC-2222-4804-A337-BD9C89AEBFBF}.Release|Any CPU.Build.0 = Release|Any CPU + EndGlobalSection +EndGlobal diff --git a/seed/csharp-model/pagination/src/SeedPagination.sln b/seed/csharp-model/pagination/src/SeedPagination.sln index 343c75e6098..4cc6765b093 100644 --- a/seed/csharp-model/pagination/src/SeedPagination.sln +++ b/seed/csharp-model/pagination/src/SeedPagination.sln @@ -1,28 +1,28 @@ - -Microsoft Visual Studio Solution File, Format Version 12.00 -# Visual Studio Version 17 -VisualStudioVersion = 17.0.31903.59 -MinimumVisualStudioVersion = 10.0.40219.1 -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SeedPagination", "SeedPagination\SeedPagination.csproj", "{52465946-C278-48AD-AD1C-E4FD55E0DB16}" -EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SeedPagination.Test", "SeedPagination.Test\SeedPagination.Test.csproj", "{BEE708C0-544B-4265-AF67-0A4EF2DDBA60}" -EndProject -Global - GlobalSection(SolutionConfigurationPlatforms) = preSolution - Debug|Any CPU = Debug|Any CPU - Release|Any CPU = Release|Any CPU - EndGlobalSection - GlobalSection(SolutionProperties) = preSolution - HideSolutionNode = FALSE - EndGlobalSection - GlobalSection(ProjectConfigurationPlatforms) = postSolution - {52465946-C278-48AD-AD1C-E4FD55E0DB16}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {52465946-C278-48AD-AD1C-E4FD55E0DB16}.Debug|Any CPU.Build.0 = Debug|Any CPU - {52465946-C278-48AD-AD1C-E4FD55E0DB16}.Release|Any CPU.ActiveCfg = Release|Any CPU - {52465946-C278-48AD-AD1C-E4FD55E0DB16}.Release|Any CPU.Build.0 = Release|Any CPU - {BEE708C0-544B-4265-AF67-0A4EF2DDBA60}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {BEE708C0-544B-4265-AF67-0A4EF2DDBA60}.Debug|Any CPU.Build.0 = Debug|Any CPU - {BEE708C0-544B-4265-AF67-0A4EF2DDBA60}.Release|Any CPU.ActiveCfg = Release|Any CPU - {BEE708C0-544B-4265-AF67-0A4EF2DDBA60}.Release|Any CPU.Build.0 = Release|Any CPU - EndGlobalSection -EndGlobal + +Microsoft Visual Studio Solution File, Format Version 12.00 +# Visual Studio Version 17 +VisualStudioVersion = 17.0.31903.59 +MinimumVisualStudioVersion = 10.0.40219.1 +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SeedPagination", "SeedPagination\SeedPagination.csproj", "{ACB71095-16EC-4068-8E20-C3B02828743C}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SeedPagination.Test", "SeedPagination.Test\SeedPagination.Test.csproj", "{9600418C-8E01-48F1-BFAE-BF8AD6D3F5E7}" +EndProject +Global + GlobalSection(SolutionConfigurationPlatforms) = preSolution + Debug|Any CPU = Debug|Any CPU + Release|Any CPU = Release|Any CPU + EndGlobalSection + GlobalSection(SolutionProperties) = preSolution + HideSolutionNode = FALSE + EndGlobalSection + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {ACB71095-16EC-4068-8E20-C3B02828743C}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {ACB71095-16EC-4068-8E20-C3B02828743C}.Debug|Any CPU.Build.0 = Debug|Any CPU + {ACB71095-16EC-4068-8E20-C3B02828743C}.Release|Any CPU.ActiveCfg = Release|Any CPU + {ACB71095-16EC-4068-8E20-C3B02828743C}.Release|Any CPU.Build.0 = Release|Any CPU + {9600418C-8E01-48F1-BFAE-BF8AD6D3F5E7}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {9600418C-8E01-48F1-BFAE-BF8AD6D3F5E7}.Debug|Any CPU.Build.0 = Debug|Any CPU + {9600418C-8E01-48F1-BFAE-BF8AD6D3F5E7}.Release|Any CPU.ActiveCfg = Release|Any CPU + {9600418C-8E01-48F1-BFAE-BF8AD6D3F5E7}.Release|Any CPU.Build.0 = Release|Any CPU + EndGlobalSection +EndGlobal diff --git a/seed/csharp-model/path-parameters/src/SeedPathParameters.sln b/seed/csharp-model/path-parameters/src/SeedPathParameters.sln index cb50f31527f..e7dd36a5cc0 100644 --- a/seed/csharp-model/path-parameters/src/SeedPathParameters.sln +++ b/seed/csharp-model/path-parameters/src/SeedPathParameters.sln @@ -1,28 +1,28 @@ - -Microsoft Visual Studio Solution File, Format Version 12.00 -# Visual Studio Version 17 -VisualStudioVersion = 17.0.31903.59 -MinimumVisualStudioVersion = 10.0.40219.1 -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SeedPathParameters", "SeedPathParameters\SeedPathParameters.csproj", "{D4AE39A7-CC83-4F7C-B258-D1697470CD9E}" -EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SeedPathParameters.Test", "SeedPathParameters.Test\SeedPathParameters.Test.csproj", "{20928C80-3D82-4BA1-988D-427FAEDB1945}" -EndProject -Global - GlobalSection(SolutionConfigurationPlatforms) = preSolution - Debug|Any CPU = Debug|Any CPU - Release|Any CPU = Release|Any CPU - EndGlobalSection - GlobalSection(SolutionProperties) = preSolution - HideSolutionNode = FALSE - EndGlobalSection - GlobalSection(ProjectConfigurationPlatforms) = postSolution - {D4AE39A7-CC83-4F7C-B258-D1697470CD9E}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {D4AE39A7-CC83-4F7C-B258-D1697470CD9E}.Debug|Any CPU.Build.0 = Debug|Any CPU - {D4AE39A7-CC83-4F7C-B258-D1697470CD9E}.Release|Any CPU.ActiveCfg = Release|Any CPU - {D4AE39A7-CC83-4F7C-B258-D1697470CD9E}.Release|Any CPU.Build.0 = Release|Any CPU - {20928C80-3D82-4BA1-988D-427FAEDB1945}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {20928C80-3D82-4BA1-988D-427FAEDB1945}.Debug|Any CPU.Build.0 = Debug|Any CPU - {20928C80-3D82-4BA1-988D-427FAEDB1945}.Release|Any CPU.ActiveCfg = Release|Any CPU - {20928C80-3D82-4BA1-988D-427FAEDB1945}.Release|Any CPU.Build.0 = Release|Any CPU - EndGlobalSection -EndGlobal + +Microsoft Visual Studio Solution File, Format Version 12.00 +# Visual Studio Version 17 +VisualStudioVersion = 17.0.31903.59 +MinimumVisualStudioVersion = 10.0.40219.1 +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SeedPathParameters", "SeedPathParameters\SeedPathParameters.csproj", "{BF7589AA-EAD3-4F96-B33B-894AD9DA7B4B}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SeedPathParameters.Test", "SeedPathParameters.Test\SeedPathParameters.Test.csproj", "{E2DC7E61-FF53-46D5-B4A9-7639DCD4853E}" +EndProject +Global + GlobalSection(SolutionConfigurationPlatforms) = preSolution + Debug|Any CPU = Debug|Any CPU + Release|Any CPU = Release|Any CPU + EndGlobalSection + GlobalSection(SolutionProperties) = preSolution + HideSolutionNode = FALSE + EndGlobalSection + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {BF7589AA-EAD3-4F96-B33B-894AD9DA7B4B}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {BF7589AA-EAD3-4F96-B33B-894AD9DA7B4B}.Debug|Any CPU.Build.0 = Debug|Any CPU + {BF7589AA-EAD3-4F96-B33B-894AD9DA7B4B}.Release|Any CPU.ActiveCfg = Release|Any CPU + {BF7589AA-EAD3-4F96-B33B-894AD9DA7B4B}.Release|Any CPU.Build.0 = Release|Any CPU + {E2DC7E61-FF53-46D5-B4A9-7639DCD4853E}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {E2DC7E61-FF53-46D5-B4A9-7639DCD4853E}.Debug|Any CPU.Build.0 = Debug|Any CPU + {E2DC7E61-FF53-46D5-B4A9-7639DCD4853E}.Release|Any CPU.ActiveCfg = Release|Any CPU + {E2DC7E61-FF53-46D5-B4A9-7639DCD4853E}.Release|Any CPU.Build.0 = Release|Any CPU + EndGlobalSection +EndGlobal diff --git a/seed/csharp-model/plain-text/src/SeedPlainText.sln b/seed/csharp-model/plain-text/src/SeedPlainText.sln index 6005c78f422..215ab3be770 100644 --- a/seed/csharp-model/plain-text/src/SeedPlainText.sln +++ b/seed/csharp-model/plain-text/src/SeedPlainText.sln @@ -1,28 +1,28 @@ - -Microsoft Visual Studio Solution File, Format Version 12.00 -# Visual Studio Version 17 -VisualStudioVersion = 17.0.31903.59 -MinimumVisualStudioVersion = 10.0.40219.1 -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SeedPlainText", "SeedPlainText\SeedPlainText.csproj", "{467DA75F-73E7-44F4-BF0A-5F2D846AFD72}" -EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SeedPlainText.Test", "SeedPlainText.Test\SeedPlainText.Test.csproj", "{90874D7C-5699-45AC-B119-5B22FB9BD7E5}" -EndProject -Global - GlobalSection(SolutionConfigurationPlatforms) = preSolution - Debug|Any CPU = Debug|Any CPU - Release|Any CPU = Release|Any CPU - EndGlobalSection - GlobalSection(SolutionProperties) = preSolution - HideSolutionNode = FALSE - EndGlobalSection - GlobalSection(ProjectConfigurationPlatforms) = postSolution - {467DA75F-73E7-44F4-BF0A-5F2D846AFD72}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {467DA75F-73E7-44F4-BF0A-5F2D846AFD72}.Debug|Any CPU.Build.0 = Debug|Any CPU - {467DA75F-73E7-44F4-BF0A-5F2D846AFD72}.Release|Any CPU.ActiveCfg = Release|Any CPU - {467DA75F-73E7-44F4-BF0A-5F2D846AFD72}.Release|Any CPU.Build.0 = Release|Any CPU - {90874D7C-5699-45AC-B119-5B22FB9BD7E5}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {90874D7C-5699-45AC-B119-5B22FB9BD7E5}.Debug|Any CPU.Build.0 = Debug|Any CPU - {90874D7C-5699-45AC-B119-5B22FB9BD7E5}.Release|Any CPU.ActiveCfg = Release|Any CPU - {90874D7C-5699-45AC-B119-5B22FB9BD7E5}.Release|Any CPU.Build.0 = Release|Any CPU - EndGlobalSection -EndGlobal + +Microsoft Visual Studio Solution File, Format Version 12.00 +# Visual Studio Version 17 +VisualStudioVersion = 17.0.31903.59 +MinimumVisualStudioVersion = 10.0.40219.1 +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SeedPlainText", "SeedPlainText\SeedPlainText.csproj", "{A0F81750-5346-46ED-B80F-D111542A95C9}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SeedPlainText.Test", "SeedPlainText.Test\SeedPlainText.Test.csproj", "{F764F9B3-F091-46B6-94FA-582F3A7D8ABF}" +EndProject +Global + GlobalSection(SolutionConfigurationPlatforms) = preSolution + Debug|Any CPU = Debug|Any CPU + Release|Any CPU = Release|Any CPU + EndGlobalSection + GlobalSection(SolutionProperties) = preSolution + HideSolutionNode = FALSE + EndGlobalSection + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {A0F81750-5346-46ED-B80F-D111542A95C9}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {A0F81750-5346-46ED-B80F-D111542A95C9}.Debug|Any CPU.Build.0 = Debug|Any CPU + {A0F81750-5346-46ED-B80F-D111542A95C9}.Release|Any CPU.ActiveCfg = Release|Any CPU + {A0F81750-5346-46ED-B80F-D111542A95C9}.Release|Any CPU.Build.0 = Release|Any CPU + {F764F9B3-F091-46B6-94FA-582F3A7D8ABF}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {F764F9B3-F091-46B6-94FA-582F3A7D8ABF}.Debug|Any CPU.Build.0 = Debug|Any CPU + {F764F9B3-F091-46B6-94FA-582F3A7D8ABF}.Release|Any CPU.ActiveCfg = Release|Any CPU + {F764F9B3-F091-46B6-94FA-582F3A7D8ABF}.Release|Any CPU.Build.0 = Release|Any CPU + EndGlobalSection +EndGlobal diff --git a/seed/csharp-model/query-parameters/src/SeedQueryParameters.sln b/seed/csharp-model/query-parameters/src/SeedQueryParameters.sln index a024f8ef374..10e8961bbd5 100644 --- a/seed/csharp-model/query-parameters/src/SeedQueryParameters.sln +++ b/seed/csharp-model/query-parameters/src/SeedQueryParameters.sln @@ -1,28 +1,28 @@ - -Microsoft Visual Studio Solution File, Format Version 12.00 -# Visual Studio Version 17 -VisualStudioVersion = 17.0.31903.59 -MinimumVisualStudioVersion = 10.0.40219.1 -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SeedQueryParameters", "SeedQueryParameters\SeedQueryParameters.csproj", "{69EE97F0-91A3-475B-918F-603A7EDD022E}" -EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SeedQueryParameters.Test", "SeedQueryParameters.Test\SeedQueryParameters.Test.csproj", "{DEFFDABE-5A9C-4C7B-8881-4C693792DAFA}" -EndProject -Global - GlobalSection(SolutionConfigurationPlatforms) = preSolution - Debug|Any CPU = Debug|Any CPU - Release|Any CPU = Release|Any CPU - EndGlobalSection - GlobalSection(SolutionProperties) = preSolution - HideSolutionNode = FALSE - EndGlobalSection - GlobalSection(ProjectConfigurationPlatforms) = postSolution - {69EE97F0-91A3-475B-918F-603A7EDD022E}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {69EE97F0-91A3-475B-918F-603A7EDD022E}.Debug|Any CPU.Build.0 = Debug|Any CPU - {69EE97F0-91A3-475B-918F-603A7EDD022E}.Release|Any CPU.ActiveCfg = Release|Any CPU - {69EE97F0-91A3-475B-918F-603A7EDD022E}.Release|Any CPU.Build.0 = Release|Any CPU - {DEFFDABE-5A9C-4C7B-8881-4C693792DAFA}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {DEFFDABE-5A9C-4C7B-8881-4C693792DAFA}.Debug|Any CPU.Build.0 = Debug|Any CPU - {DEFFDABE-5A9C-4C7B-8881-4C693792DAFA}.Release|Any CPU.ActiveCfg = Release|Any CPU - {DEFFDABE-5A9C-4C7B-8881-4C693792DAFA}.Release|Any CPU.Build.0 = Release|Any CPU - EndGlobalSection -EndGlobal + +Microsoft Visual Studio Solution File, Format Version 12.00 +# Visual Studio Version 17 +VisualStudioVersion = 17.0.31903.59 +MinimumVisualStudioVersion = 10.0.40219.1 +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SeedQueryParameters", "SeedQueryParameters\SeedQueryParameters.csproj", "{B95C134B-D372-4DD2-A36B-A3BA1E5ACC5C}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SeedQueryParameters.Test", "SeedQueryParameters.Test\SeedQueryParameters.Test.csproj", "{C73531FD-5FFC-49CE-A350-5E1617C6E0C5}" +EndProject +Global + GlobalSection(SolutionConfigurationPlatforms) = preSolution + Debug|Any CPU = Debug|Any CPU + Release|Any CPU = Release|Any CPU + EndGlobalSection + GlobalSection(SolutionProperties) = preSolution + HideSolutionNode = FALSE + EndGlobalSection + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {B95C134B-D372-4DD2-A36B-A3BA1E5ACC5C}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {B95C134B-D372-4DD2-A36B-A3BA1E5ACC5C}.Debug|Any CPU.Build.0 = Debug|Any CPU + {B95C134B-D372-4DD2-A36B-A3BA1E5ACC5C}.Release|Any CPU.ActiveCfg = Release|Any CPU + {B95C134B-D372-4DD2-A36B-A3BA1E5ACC5C}.Release|Any CPU.Build.0 = Release|Any CPU + {C73531FD-5FFC-49CE-A350-5E1617C6E0C5}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {C73531FD-5FFC-49CE-A350-5E1617C6E0C5}.Debug|Any CPU.Build.0 = Debug|Any CPU + {C73531FD-5FFC-49CE-A350-5E1617C6E0C5}.Release|Any CPU.ActiveCfg = Release|Any CPU + {C73531FD-5FFC-49CE-A350-5E1617C6E0C5}.Release|Any CPU.Build.0 = Release|Any CPU + EndGlobalSection +EndGlobal diff --git a/seed/csharp-model/reserved-keywords/src/SeedNurseryApi.sln b/seed/csharp-model/reserved-keywords/src/SeedNurseryApi.sln index 73b30f77d20..e02c7acbae3 100644 --- a/seed/csharp-model/reserved-keywords/src/SeedNurseryApi.sln +++ b/seed/csharp-model/reserved-keywords/src/SeedNurseryApi.sln @@ -1,28 +1,28 @@ - -Microsoft Visual Studio Solution File, Format Version 12.00 -# Visual Studio Version 17 -VisualStudioVersion = 17.0.31903.59 -MinimumVisualStudioVersion = 10.0.40219.1 -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SeedNurseryApi", "SeedNurseryApi\SeedNurseryApi.csproj", "{7D65CC59-FCE6-4899-8293-778CC0C94A5F}" -EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SeedNurseryApi.Test", "SeedNurseryApi.Test\SeedNurseryApi.Test.csproj", "{8FC0609A-8550-4D55-ABE6-4872455DB4B5}" -EndProject -Global - GlobalSection(SolutionConfigurationPlatforms) = preSolution - Debug|Any CPU = Debug|Any CPU - Release|Any CPU = Release|Any CPU - EndGlobalSection - GlobalSection(SolutionProperties) = preSolution - HideSolutionNode = FALSE - EndGlobalSection - GlobalSection(ProjectConfigurationPlatforms) = postSolution - {7D65CC59-FCE6-4899-8293-778CC0C94A5F}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {7D65CC59-FCE6-4899-8293-778CC0C94A5F}.Debug|Any CPU.Build.0 = Debug|Any CPU - {7D65CC59-FCE6-4899-8293-778CC0C94A5F}.Release|Any CPU.ActiveCfg = Release|Any CPU - {7D65CC59-FCE6-4899-8293-778CC0C94A5F}.Release|Any CPU.Build.0 = Release|Any CPU - {8FC0609A-8550-4D55-ABE6-4872455DB4B5}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {8FC0609A-8550-4D55-ABE6-4872455DB4B5}.Debug|Any CPU.Build.0 = Debug|Any CPU - {8FC0609A-8550-4D55-ABE6-4872455DB4B5}.Release|Any CPU.ActiveCfg = Release|Any CPU - {8FC0609A-8550-4D55-ABE6-4872455DB4B5}.Release|Any CPU.Build.0 = Release|Any CPU - EndGlobalSection -EndGlobal + +Microsoft Visual Studio Solution File, Format Version 12.00 +# Visual Studio Version 17 +VisualStudioVersion = 17.0.31903.59 +MinimumVisualStudioVersion = 10.0.40219.1 +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SeedNurseryApi", "SeedNurseryApi\SeedNurseryApi.csproj", "{11491239-5981-4918-B6C3-8E790BF3A83C}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SeedNurseryApi.Test", "SeedNurseryApi.Test\SeedNurseryApi.Test.csproj", "{C9E935A5-D812-4568-A19C-5C513317065B}" +EndProject +Global + GlobalSection(SolutionConfigurationPlatforms) = preSolution + Debug|Any CPU = Debug|Any CPU + Release|Any CPU = Release|Any CPU + EndGlobalSection + GlobalSection(SolutionProperties) = preSolution + HideSolutionNode = FALSE + EndGlobalSection + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {11491239-5981-4918-B6C3-8E790BF3A83C}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {11491239-5981-4918-B6C3-8E790BF3A83C}.Debug|Any CPU.Build.0 = Debug|Any CPU + {11491239-5981-4918-B6C3-8E790BF3A83C}.Release|Any CPU.ActiveCfg = Release|Any CPU + {11491239-5981-4918-B6C3-8E790BF3A83C}.Release|Any CPU.Build.0 = Release|Any CPU + {C9E935A5-D812-4568-A19C-5C513317065B}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {C9E935A5-D812-4568-A19C-5C513317065B}.Debug|Any CPU.Build.0 = Debug|Any CPU + {C9E935A5-D812-4568-A19C-5C513317065B}.Release|Any CPU.ActiveCfg = Release|Any CPU + {C9E935A5-D812-4568-A19C-5C513317065B}.Release|Any CPU.Build.0 = Release|Any CPU + EndGlobalSection +EndGlobal diff --git a/seed/csharp-model/response-property/src/SeedResponseProperty.sln b/seed/csharp-model/response-property/src/SeedResponseProperty.sln index f35e6d08df2..ff48ab718d4 100644 --- a/seed/csharp-model/response-property/src/SeedResponseProperty.sln +++ b/seed/csharp-model/response-property/src/SeedResponseProperty.sln @@ -1,28 +1,28 @@ - -Microsoft Visual Studio Solution File, Format Version 12.00 -# Visual Studio Version 17 -VisualStudioVersion = 17.0.31903.59 -MinimumVisualStudioVersion = 10.0.40219.1 -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SeedResponseProperty", "SeedResponseProperty\SeedResponseProperty.csproj", "{7BCE7E22-77D8-483B-A173-0290958595C6}" -EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SeedResponseProperty.Test", "SeedResponseProperty.Test\SeedResponseProperty.Test.csproj", "{29FE7F73-F5D8-4C56-BAB1-5837350076D5}" -EndProject -Global - GlobalSection(SolutionConfigurationPlatforms) = preSolution - Debug|Any CPU = Debug|Any CPU - Release|Any CPU = Release|Any CPU - EndGlobalSection - GlobalSection(SolutionProperties) = preSolution - HideSolutionNode = FALSE - EndGlobalSection - GlobalSection(ProjectConfigurationPlatforms) = postSolution - {7BCE7E22-77D8-483B-A173-0290958595C6}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {7BCE7E22-77D8-483B-A173-0290958595C6}.Debug|Any CPU.Build.0 = Debug|Any CPU - {7BCE7E22-77D8-483B-A173-0290958595C6}.Release|Any CPU.ActiveCfg = Release|Any CPU - {7BCE7E22-77D8-483B-A173-0290958595C6}.Release|Any CPU.Build.0 = Release|Any CPU - {29FE7F73-F5D8-4C56-BAB1-5837350076D5}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {29FE7F73-F5D8-4C56-BAB1-5837350076D5}.Debug|Any CPU.Build.0 = Debug|Any CPU - {29FE7F73-F5D8-4C56-BAB1-5837350076D5}.Release|Any CPU.ActiveCfg = Release|Any CPU - {29FE7F73-F5D8-4C56-BAB1-5837350076D5}.Release|Any CPU.Build.0 = Release|Any CPU - EndGlobalSection -EndGlobal + +Microsoft Visual Studio Solution File, Format Version 12.00 +# Visual Studio Version 17 +VisualStudioVersion = 17.0.31903.59 +MinimumVisualStudioVersion = 10.0.40219.1 +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SeedResponseProperty", "SeedResponseProperty\SeedResponseProperty.csproj", "{7F1A59CF-C2B9-49CB-8FB3-54341A9AE43B}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SeedResponseProperty.Test", "SeedResponseProperty.Test\SeedResponseProperty.Test.csproj", "{A8B7DF10-888B-40B8-9285-DC3B6C94A164}" +EndProject +Global + GlobalSection(SolutionConfigurationPlatforms) = preSolution + Debug|Any CPU = Debug|Any CPU + Release|Any CPU = Release|Any CPU + EndGlobalSection + GlobalSection(SolutionProperties) = preSolution + HideSolutionNode = FALSE + EndGlobalSection + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {7F1A59CF-C2B9-49CB-8FB3-54341A9AE43B}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {7F1A59CF-C2B9-49CB-8FB3-54341A9AE43B}.Debug|Any CPU.Build.0 = Debug|Any CPU + {7F1A59CF-C2B9-49CB-8FB3-54341A9AE43B}.Release|Any CPU.ActiveCfg = Release|Any CPU + {7F1A59CF-C2B9-49CB-8FB3-54341A9AE43B}.Release|Any CPU.Build.0 = Release|Any CPU + {A8B7DF10-888B-40B8-9285-DC3B6C94A164}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {A8B7DF10-888B-40B8-9285-DC3B6C94A164}.Debug|Any CPU.Build.0 = Debug|Any CPU + {A8B7DF10-888B-40B8-9285-DC3B6C94A164}.Release|Any CPU.ActiveCfg = Release|Any CPU + {A8B7DF10-888B-40B8-9285-DC3B6C94A164}.Release|Any CPU.Build.0 = Release|Any CPU + EndGlobalSection +EndGlobal diff --git a/seed/csharp-model/server-sent-event-examples/src/SeedServerSentEvents.sln b/seed/csharp-model/server-sent-event-examples/src/SeedServerSentEvents.sln index c672dac5367..62dc64aba26 100644 --- a/seed/csharp-model/server-sent-event-examples/src/SeedServerSentEvents.sln +++ b/seed/csharp-model/server-sent-event-examples/src/SeedServerSentEvents.sln @@ -1,28 +1,28 @@ - -Microsoft Visual Studio Solution File, Format Version 12.00 -# Visual Studio Version 17 -VisualStudioVersion = 17.0.31903.59 -MinimumVisualStudioVersion = 10.0.40219.1 -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SeedServerSentEvents", "SeedServerSentEvents\SeedServerSentEvents.csproj", "{AAC10B05-4AF4-48CF-AD52-5AC2CBAF99F6}" -EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SeedServerSentEvents.Test", "SeedServerSentEvents.Test\SeedServerSentEvents.Test.csproj", "{C870743A-0AF9-4111-8339-FE6E57275688}" -EndProject -Global - GlobalSection(SolutionConfigurationPlatforms) = preSolution - Debug|Any CPU = Debug|Any CPU - Release|Any CPU = Release|Any CPU - EndGlobalSection - GlobalSection(SolutionProperties) = preSolution - HideSolutionNode = FALSE - EndGlobalSection - GlobalSection(ProjectConfigurationPlatforms) = postSolution - {AAC10B05-4AF4-48CF-AD52-5AC2CBAF99F6}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {AAC10B05-4AF4-48CF-AD52-5AC2CBAF99F6}.Debug|Any CPU.Build.0 = Debug|Any CPU - {AAC10B05-4AF4-48CF-AD52-5AC2CBAF99F6}.Release|Any CPU.ActiveCfg = Release|Any CPU - {AAC10B05-4AF4-48CF-AD52-5AC2CBAF99F6}.Release|Any CPU.Build.0 = Release|Any CPU - {C870743A-0AF9-4111-8339-FE6E57275688}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {C870743A-0AF9-4111-8339-FE6E57275688}.Debug|Any CPU.Build.0 = Debug|Any CPU - {C870743A-0AF9-4111-8339-FE6E57275688}.Release|Any CPU.ActiveCfg = Release|Any CPU - {C870743A-0AF9-4111-8339-FE6E57275688}.Release|Any CPU.Build.0 = Release|Any CPU - EndGlobalSection -EndGlobal + +Microsoft Visual Studio Solution File, Format Version 12.00 +# Visual Studio Version 17 +VisualStudioVersion = 17.0.31903.59 +MinimumVisualStudioVersion = 10.0.40219.1 +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SeedServerSentEvents", "SeedServerSentEvents\SeedServerSentEvents.csproj", "{4EB32394-27EA-4461-922B-46445882EF08}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SeedServerSentEvents.Test", "SeedServerSentEvents.Test\SeedServerSentEvents.Test.csproj", "{6A11945D-2437-4B93-9D34-15434E2DA056}" +EndProject +Global + GlobalSection(SolutionConfigurationPlatforms) = preSolution + Debug|Any CPU = Debug|Any CPU + Release|Any CPU = Release|Any CPU + EndGlobalSection + GlobalSection(SolutionProperties) = preSolution + HideSolutionNode = FALSE + EndGlobalSection + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {4EB32394-27EA-4461-922B-46445882EF08}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {4EB32394-27EA-4461-922B-46445882EF08}.Debug|Any CPU.Build.0 = Debug|Any CPU + {4EB32394-27EA-4461-922B-46445882EF08}.Release|Any CPU.ActiveCfg = Release|Any CPU + {4EB32394-27EA-4461-922B-46445882EF08}.Release|Any CPU.Build.0 = Release|Any CPU + {6A11945D-2437-4B93-9D34-15434E2DA056}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {6A11945D-2437-4B93-9D34-15434E2DA056}.Debug|Any CPU.Build.0 = Debug|Any CPU + {6A11945D-2437-4B93-9D34-15434E2DA056}.Release|Any CPU.ActiveCfg = Release|Any CPU + {6A11945D-2437-4B93-9D34-15434E2DA056}.Release|Any CPU.Build.0 = Release|Any CPU + EndGlobalSection +EndGlobal diff --git a/seed/csharp-model/server-sent-events/src/SeedServerSentEvents.sln b/seed/csharp-model/server-sent-events/src/SeedServerSentEvents.sln index 8ea2b6cffee..96a5e7f1e4e 100644 --- a/seed/csharp-model/server-sent-events/src/SeedServerSentEvents.sln +++ b/seed/csharp-model/server-sent-events/src/SeedServerSentEvents.sln @@ -1,28 +1,28 @@ - -Microsoft Visual Studio Solution File, Format Version 12.00 -# Visual Studio Version 17 -VisualStudioVersion = 17.0.31903.59 -MinimumVisualStudioVersion = 10.0.40219.1 -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SeedServerSentEvents", "SeedServerSentEvents\SeedServerSentEvents.csproj", "{AC89CBDA-FC5A-4431-BA81-BCF6AE2250ED}" -EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SeedServerSentEvents.Test", "SeedServerSentEvents.Test\SeedServerSentEvents.Test.csproj", "{3337498D-8023-45ED-AFF2-09127F4E4BEE}" -EndProject -Global - GlobalSection(SolutionConfigurationPlatforms) = preSolution - Debug|Any CPU = Debug|Any CPU - Release|Any CPU = Release|Any CPU - EndGlobalSection - GlobalSection(SolutionProperties) = preSolution - HideSolutionNode = FALSE - EndGlobalSection - GlobalSection(ProjectConfigurationPlatforms) = postSolution - {AC89CBDA-FC5A-4431-BA81-BCF6AE2250ED}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {AC89CBDA-FC5A-4431-BA81-BCF6AE2250ED}.Debug|Any CPU.Build.0 = Debug|Any CPU - {AC89CBDA-FC5A-4431-BA81-BCF6AE2250ED}.Release|Any CPU.ActiveCfg = Release|Any CPU - {AC89CBDA-FC5A-4431-BA81-BCF6AE2250ED}.Release|Any CPU.Build.0 = Release|Any CPU - {3337498D-8023-45ED-AFF2-09127F4E4BEE}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {3337498D-8023-45ED-AFF2-09127F4E4BEE}.Debug|Any CPU.Build.0 = Debug|Any CPU - {3337498D-8023-45ED-AFF2-09127F4E4BEE}.Release|Any CPU.ActiveCfg = Release|Any CPU - {3337498D-8023-45ED-AFF2-09127F4E4BEE}.Release|Any CPU.Build.0 = Release|Any CPU - EndGlobalSection -EndGlobal + +Microsoft Visual Studio Solution File, Format Version 12.00 +# Visual Studio Version 17 +VisualStudioVersion = 17.0.31903.59 +MinimumVisualStudioVersion = 10.0.40219.1 +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SeedServerSentEvents", "SeedServerSentEvents\SeedServerSentEvents.csproj", "{774B6038-9A06-40A9-83E8-654F2BF6DB36}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SeedServerSentEvents.Test", "SeedServerSentEvents.Test\SeedServerSentEvents.Test.csproj", "{FDC46CE8-F6B5-4C98-9962-F0939D18D4C2}" +EndProject +Global + GlobalSection(SolutionConfigurationPlatforms) = preSolution + Debug|Any CPU = Debug|Any CPU + Release|Any CPU = Release|Any CPU + EndGlobalSection + GlobalSection(SolutionProperties) = preSolution + HideSolutionNode = FALSE + EndGlobalSection + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {774B6038-9A06-40A9-83E8-654F2BF6DB36}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {774B6038-9A06-40A9-83E8-654F2BF6DB36}.Debug|Any CPU.Build.0 = Debug|Any CPU + {774B6038-9A06-40A9-83E8-654F2BF6DB36}.Release|Any CPU.ActiveCfg = Release|Any CPU + {774B6038-9A06-40A9-83E8-654F2BF6DB36}.Release|Any CPU.Build.0 = Release|Any CPU + {FDC46CE8-F6B5-4C98-9962-F0939D18D4C2}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {FDC46CE8-F6B5-4C98-9962-F0939D18D4C2}.Debug|Any CPU.Build.0 = Debug|Any CPU + {FDC46CE8-F6B5-4C98-9962-F0939D18D4C2}.Release|Any CPU.ActiveCfg = Release|Any CPU + {FDC46CE8-F6B5-4C98-9962-F0939D18D4C2}.Release|Any CPU.Build.0 = Release|Any CPU + EndGlobalSection +EndGlobal diff --git a/seed/csharp-model/simple-fhir/src/SeedApi.sln b/seed/csharp-model/simple-fhir/src/SeedApi.sln index 47e383c55c0..15d16555630 100644 --- a/seed/csharp-model/simple-fhir/src/SeedApi.sln +++ b/seed/csharp-model/simple-fhir/src/SeedApi.sln @@ -1,28 +1,28 @@ - -Microsoft Visual Studio Solution File, Format Version 12.00 -# Visual Studio Version 17 -VisualStudioVersion = 17.0.31903.59 -MinimumVisualStudioVersion = 10.0.40219.1 -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SeedApi", "SeedApi\SeedApi.csproj", "{8495BE41-D51F-422E-872A-E28614EB3AA0}" -EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SeedApi.Test", "SeedApi.Test\SeedApi.Test.csproj", "{D6CF246A-72D9-4DBF-9E7A-DEDA292BBAAF}" -EndProject -Global - GlobalSection(SolutionConfigurationPlatforms) = preSolution - Debug|Any CPU = Debug|Any CPU - Release|Any CPU = Release|Any CPU - EndGlobalSection - GlobalSection(SolutionProperties) = preSolution - HideSolutionNode = FALSE - EndGlobalSection - GlobalSection(ProjectConfigurationPlatforms) = postSolution - {8495BE41-D51F-422E-872A-E28614EB3AA0}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {8495BE41-D51F-422E-872A-E28614EB3AA0}.Debug|Any CPU.Build.0 = Debug|Any CPU - {8495BE41-D51F-422E-872A-E28614EB3AA0}.Release|Any CPU.ActiveCfg = Release|Any CPU - {8495BE41-D51F-422E-872A-E28614EB3AA0}.Release|Any CPU.Build.0 = Release|Any CPU - {D6CF246A-72D9-4DBF-9E7A-DEDA292BBAAF}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {D6CF246A-72D9-4DBF-9E7A-DEDA292BBAAF}.Debug|Any CPU.Build.0 = Debug|Any CPU - {D6CF246A-72D9-4DBF-9E7A-DEDA292BBAAF}.Release|Any CPU.ActiveCfg = Release|Any CPU - {D6CF246A-72D9-4DBF-9E7A-DEDA292BBAAF}.Release|Any CPU.Build.0 = Release|Any CPU - EndGlobalSection -EndGlobal + +Microsoft Visual Studio Solution File, Format Version 12.00 +# Visual Studio Version 17 +VisualStudioVersion = 17.0.31903.59 +MinimumVisualStudioVersion = 10.0.40219.1 +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SeedApi", "SeedApi\SeedApi.csproj", "{564203BA-3241-4368-B3BF-F25CF172B88B}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SeedApi.Test", "SeedApi.Test\SeedApi.Test.csproj", "{4A4F7F4F-1890-4A93-B512-6B0609C594CA}" +EndProject +Global + GlobalSection(SolutionConfigurationPlatforms) = preSolution + Debug|Any CPU = Debug|Any CPU + Release|Any CPU = Release|Any CPU + EndGlobalSection + GlobalSection(SolutionProperties) = preSolution + HideSolutionNode = FALSE + EndGlobalSection + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {564203BA-3241-4368-B3BF-F25CF172B88B}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {564203BA-3241-4368-B3BF-F25CF172B88B}.Debug|Any CPU.Build.0 = Debug|Any CPU + {564203BA-3241-4368-B3BF-F25CF172B88B}.Release|Any CPU.ActiveCfg = Release|Any CPU + {564203BA-3241-4368-B3BF-F25CF172B88B}.Release|Any CPU.Build.0 = Release|Any CPU + {4A4F7F4F-1890-4A93-B512-6B0609C594CA}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {4A4F7F4F-1890-4A93-B512-6B0609C594CA}.Debug|Any CPU.Build.0 = Debug|Any CPU + {4A4F7F4F-1890-4A93-B512-6B0609C594CA}.Release|Any CPU.ActiveCfg = Release|Any CPU + {4A4F7F4F-1890-4A93-B512-6B0609C594CA}.Release|Any CPU.Build.0 = Release|Any CPU + EndGlobalSection +EndGlobal diff --git a/seed/csharp-model/single-url-environment-default/src/SeedSingleUrlEnvironmentDefault.sln b/seed/csharp-model/single-url-environment-default/src/SeedSingleUrlEnvironmentDefault.sln index 0040429e66d..2bc625c6b33 100644 --- a/seed/csharp-model/single-url-environment-default/src/SeedSingleUrlEnvironmentDefault.sln +++ b/seed/csharp-model/single-url-environment-default/src/SeedSingleUrlEnvironmentDefault.sln @@ -1,28 +1,28 @@ - -Microsoft Visual Studio Solution File, Format Version 12.00 -# Visual Studio Version 17 -VisualStudioVersion = 17.0.31903.59 -MinimumVisualStudioVersion = 10.0.40219.1 -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SeedSingleUrlEnvironmentDefault", "SeedSingleUrlEnvironmentDefault\SeedSingleUrlEnvironmentDefault.csproj", "{70E64D2F-2979-4A11-B372-33672977514B}" -EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SeedSingleUrlEnvironmentDefault.Test", "SeedSingleUrlEnvironmentDefault.Test\SeedSingleUrlEnvironmentDefault.Test.csproj", "{D74B6A72-B0F4-4FF8-98C6-11DC46E0D888}" -EndProject -Global - GlobalSection(SolutionConfigurationPlatforms) = preSolution - Debug|Any CPU = Debug|Any CPU - Release|Any CPU = Release|Any CPU - EndGlobalSection - GlobalSection(SolutionProperties) = preSolution - HideSolutionNode = FALSE - EndGlobalSection - GlobalSection(ProjectConfigurationPlatforms) = postSolution - {70E64D2F-2979-4A11-B372-33672977514B}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {70E64D2F-2979-4A11-B372-33672977514B}.Debug|Any CPU.Build.0 = Debug|Any CPU - {70E64D2F-2979-4A11-B372-33672977514B}.Release|Any CPU.ActiveCfg = Release|Any CPU - {70E64D2F-2979-4A11-B372-33672977514B}.Release|Any CPU.Build.0 = Release|Any CPU - {D74B6A72-B0F4-4FF8-98C6-11DC46E0D888}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {D74B6A72-B0F4-4FF8-98C6-11DC46E0D888}.Debug|Any CPU.Build.0 = Debug|Any CPU - {D74B6A72-B0F4-4FF8-98C6-11DC46E0D888}.Release|Any CPU.ActiveCfg = Release|Any CPU - {D74B6A72-B0F4-4FF8-98C6-11DC46E0D888}.Release|Any CPU.Build.0 = Release|Any CPU - EndGlobalSection -EndGlobal + +Microsoft Visual Studio Solution File, Format Version 12.00 +# Visual Studio Version 17 +VisualStudioVersion = 17.0.31903.59 +MinimumVisualStudioVersion = 10.0.40219.1 +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SeedSingleUrlEnvironmentDefault", "SeedSingleUrlEnvironmentDefault\SeedSingleUrlEnvironmentDefault.csproj", "{F5420849-B453-4EEE-859A-DD219EE7EDAD}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SeedSingleUrlEnvironmentDefault.Test", "SeedSingleUrlEnvironmentDefault.Test\SeedSingleUrlEnvironmentDefault.Test.csproj", "{66B3777B-3D57-4765-9B83-3291E72F9EDE}" +EndProject +Global + GlobalSection(SolutionConfigurationPlatforms) = preSolution + Debug|Any CPU = Debug|Any CPU + Release|Any CPU = Release|Any CPU + EndGlobalSection + GlobalSection(SolutionProperties) = preSolution + HideSolutionNode = FALSE + EndGlobalSection + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {F5420849-B453-4EEE-859A-DD219EE7EDAD}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {F5420849-B453-4EEE-859A-DD219EE7EDAD}.Debug|Any CPU.Build.0 = Debug|Any CPU + {F5420849-B453-4EEE-859A-DD219EE7EDAD}.Release|Any CPU.ActiveCfg = Release|Any CPU + {F5420849-B453-4EEE-859A-DD219EE7EDAD}.Release|Any CPU.Build.0 = Release|Any CPU + {66B3777B-3D57-4765-9B83-3291E72F9EDE}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {66B3777B-3D57-4765-9B83-3291E72F9EDE}.Debug|Any CPU.Build.0 = Debug|Any CPU + {66B3777B-3D57-4765-9B83-3291E72F9EDE}.Release|Any CPU.ActiveCfg = Release|Any CPU + {66B3777B-3D57-4765-9B83-3291E72F9EDE}.Release|Any CPU.Build.0 = Release|Any CPU + EndGlobalSection +EndGlobal diff --git a/seed/csharp-model/single-url-environment-no-default/src/SeedSingleUrlEnvironmentNoDefault.sln b/seed/csharp-model/single-url-environment-no-default/src/SeedSingleUrlEnvironmentNoDefault.sln index 9708b8d3eb3..d86d2ad5684 100644 --- a/seed/csharp-model/single-url-environment-no-default/src/SeedSingleUrlEnvironmentNoDefault.sln +++ b/seed/csharp-model/single-url-environment-no-default/src/SeedSingleUrlEnvironmentNoDefault.sln @@ -1,28 +1,28 @@ - -Microsoft Visual Studio Solution File, Format Version 12.00 -# Visual Studio Version 17 -VisualStudioVersion = 17.0.31903.59 -MinimumVisualStudioVersion = 10.0.40219.1 -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SeedSingleUrlEnvironmentNoDefault", "SeedSingleUrlEnvironmentNoDefault\SeedSingleUrlEnvironmentNoDefault.csproj", "{CA62CBC1-D979-4C22-81C1-DE829123CF5D}" -EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SeedSingleUrlEnvironmentNoDefault.Test", "SeedSingleUrlEnvironmentNoDefault.Test\SeedSingleUrlEnvironmentNoDefault.Test.csproj", "{436622CC-4957-4254-BBF7-3685EE475029}" -EndProject -Global - GlobalSection(SolutionConfigurationPlatforms) = preSolution - Debug|Any CPU = Debug|Any CPU - Release|Any CPU = Release|Any CPU - EndGlobalSection - GlobalSection(SolutionProperties) = preSolution - HideSolutionNode = FALSE - EndGlobalSection - GlobalSection(ProjectConfigurationPlatforms) = postSolution - {CA62CBC1-D979-4C22-81C1-DE829123CF5D}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {CA62CBC1-D979-4C22-81C1-DE829123CF5D}.Debug|Any CPU.Build.0 = Debug|Any CPU - {CA62CBC1-D979-4C22-81C1-DE829123CF5D}.Release|Any CPU.ActiveCfg = Release|Any CPU - {CA62CBC1-D979-4C22-81C1-DE829123CF5D}.Release|Any CPU.Build.0 = Release|Any CPU - {436622CC-4957-4254-BBF7-3685EE475029}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {436622CC-4957-4254-BBF7-3685EE475029}.Debug|Any CPU.Build.0 = Debug|Any CPU - {436622CC-4957-4254-BBF7-3685EE475029}.Release|Any CPU.ActiveCfg = Release|Any CPU - {436622CC-4957-4254-BBF7-3685EE475029}.Release|Any CPU.Build.0 = Release|Any CPU - EndGlobalSection -EndGlobal + +Microsoft Visual Studio Solution File, Format Version 12.00 +# Visual Studio Version 17 +VisualStudioVersion = 17.0.31903.59 +MinimumVisualStudioVersion = 10.0.40219.1 +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SeedSingleUrlEnvironmentNoDefault", "SeedSingleUrlEnvironmentNoDefault\SeedSingleUrlEnvironmentNoDefault.csproj", "{8A26604F-919E-43A8-9907-1A155CA9BFB7}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SeedSingleUrlEnvironmentNoDefault.Test", "SeedSingleUrlEnvironmentNoDefault.Test\SeedSingleUrlEnvironmentNoDefault.Test.csproj", "{189E4A86-9091-43A6-BB6A-AB22FDB06499}" +EndProject +Global + GlobalSection(SolutionConfigurationPlatforms) = preSolution + Debug|Any CPU = Debug|Any CPU + Release|Any CPU = Release|Any CPU + EndGlobalSection + GlobalSection(SolutionProperties) = preSolution + HideSolutionNode = FALSE + EndGlobalSection + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {8A26604F-919E-43A8-9907-1A155CA9BFB7}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {8A26604F-919E-43A8-9907-1A155CA9BFB7}.Debug|Any CPU.Build.0 = Debug|Any CPU + {8A26604F-919E-43A8-9907-1A155CA9BFB7}.Release|Any CPU.ActiveCfg = Release|Any CPU + {8A26604F-919E-43A8-9907-1A155CA9BFB7}.Release|Any CPU.Build.0 = Release|Any CPU + {189E4A86-9091-43A6-BB6A-AB22FDB06499}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {189E4A86-9091-43A6-BB6A-AB22FDB06499}.Debug|Any CPU.Build.0 = Debug|Any CPU + {189E4A86-9091-43A6-BB6A-AB22FDB06499}.Release|Any CPU.ActiveCfg = Release|Any CPU + {189E4A86-9091-43A6-BB6A-AB22FDB06499}.Release|Any CPU.Build.0 = Release|Any CPU + EndGlobalSection +EndGlobal diff --git a/seed/csharp-model/streaming-parameter/src/SeedStreaming.sln b/seed/csharp-model/streaming-parameter/src/SeedStreaming.sln index 1c47b184b08..d47146faac4 100644 --- a/seed/csharp-model/streaming-parameter/src/SeedStreaming.sln +++ b/seed/csharp-model/streaming-parameter/src/SeedStreaming.sln @@ -1,28 +1,28 @@ - -Microsoft Visual Studio Solution File, Format Version 12.00 -# Visual Studio Version 17 -VisualStudioVersion = 17.0.31903.59 -MinimumVisualStudioVersion = 10.0.40219.1 -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SeedStreaming", "SeedStreaming\SeedStreaming.csproj", "{56DAE2AA-D9BC-4EC4-8D45-7A39F6EB2131}" -EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SeedStreaming.Test", "SeedStreaming.Test\SeedStreaming.Test.csproj", "{563AEEDF-4CED-42FC-BCFD-0FFCF037E8E3}" -EndProject -Global - GlobalSection(SolutionConfigurationPlatforms) = preSolution - Debug|Any CPU = Debug|Any CPU - Release|Any CPU = Release|Any CPU - EndGlobalSection - GlobalSection(SolutionProperties) = preSolution - HideSolutionNode = FALSE - EndGlobalSection - GlobalSection(ProjectConfigurationPlatforms) = postSolution - {56DAE2AA-D9BC-4EC4-8D45-7A39F6EB2131}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {56DAE2AA-D9BC-4EC4-8D45-7A39F6EB2131}.Debug|Any CPU.Build.0 = Debug|Any CPU - {56DAE2AA-D9BC-4EC4-8D45-7A39F6EB2131}.Release|Any CPU.ActiveCfg = Release|Any CPU - {56DAE2AA-D9BC-4EC4-8D45-7A39F6EB2131}.Release|Any CPU.Build.0 = Release|Any CPU - {563AEEDF-4CED-42FC-BCFD-0FFCF037E8E3}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {563AEEDF-4CED-42FC-BCFD-0FFCF037E8E3}.Debug|Any CPU.Build.0 = Debug|Any CPU - {563AEEDF-4CED-42FC-BCFD-0FFCF037E8E3}.Release|Any CPU.ActiveCfg = Release|Any CPU - {563AEEDF-4CED-42FC-BCFD-0FFCF037E8E3}.Release|Any CPU.Build.0 = Release|Any CPU - EndGlobalSection -EndGlobal + +Microsoft Visual Studio Solution File, Format Version 12.00 +# Visual Studio Version 17 +VisualStudioVersion = 17.0.31903.59 +MinimumVisualStudioVersion = 10.0.40219.1 +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SeedStreaming", "SeedStreaming\SeedStreaming.csproj", "{63270086-DF1C-4389-8F92-9EE184EF1F0A}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SeedStreaming.Test", "SeedStreaming.Test\SeedStreaming.Test.csproj", "{0DA575AC-8EBC-4CFB-A0E0-2A18A8BE1A84}" +EndProject +Global + GlobalSection(SolutionConfigurationPlatforms) = preSolution + Debug|Any CPU = Debug|Any CPU + Release|Any CPU = Release|Any CPU + EndGlobalSection + GlobalSection(SolutionProperties) = preSolution + HideSolutionNode = FALSE + EndGlobalSection + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {63270086-DF1C-4389-8F92-9EE184EF1F0A}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {63270086-DF1C-4389-8F92-9EE184EF1F0A}.Debug|Any CPU.Build.0 = Debug|Any CPU + {63270086-DF1C-4389-8F92-9EE184EF1F0A}.Release|Any CPU.ActiveCfg = Release|Any CPU + {63270086-DF1C-4389-8F92-9EE184EF1F0A}.Release|Any CPU.Build.0 = Release|Any CPU + {0DA575AC-8EBC-4CFB-A0E0-2A18A8BE1A84}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {0DA575AC-8EBC-4CFB-A0E0-2A18A8BE1A84}.Debug|Any CPU.Build.0 = Debug|Any CPU + {0DA575AC-8EBC-4CFB-A0E0-2A18A8BE1A84}.Release|Any CPU.ActiveCfg = Release|Any CPU + {0DA575AC-8EBC-4CFB-A0E0-2A18A8BE1A84}.Release|Any CPU.Build.0 = Release|Any CPU + EndGlobalSection +EndGlobal diff --git a/seed/csharp-model/streaming/src/SeedStreaming.sln b/seed/csharp-model/streaming/src/SeedStreaming.sln index d54c17569bc..ea1c980d10b 100644 --- a/seed/csharp-model/streaming/src/SeedStreaming.sln +++ b/seed/csharp-model/streaming/src/SeedStreaming.sln @@ -1,28 +1,28 @@ - -Microsoft Visual Studio Solution File, Format Version 12.00 -# Visual Studio Version 17 -VisualStudioVersion = 17.0.31903.59 -MinimumVisualStudioVersion = 10.0.40219.1 -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SeedStreaming", "SeedStreaming\SeedStreaming.csproj", "{B255E88A-C8DD-4635-A66F-01043EE15D02}" -EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SeedStreaming.Test", "SeedStreaming.Test\SeedStreaming.Test.csproj", "{9A412F18-EC00-4F52-A73E-DBC2DF8AF857}" -EndProject -Global - GlobalSection(SolutionConfigurationPlatforms) = preSolution - Debug|Any CPU = Debug|Any CPU - Release|Any CPU = Release|Any CPU - EndGlobalSection - GlobalSection(SolutionProperties) = preSolution - HideSolutionNode = FALSE - EndGlobalSection - GlobalSection(ProjectConfigurationPlatforms) = postSolution - {B255E88A-C8DD-4635-A66F-01043EE15D02}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {B255E88A-C8DD-4635-A66F-01043EE15D02}.Debug|Any CPU.Build.0 = Debug|Any CPU - {B255E88A-C8DD-4635-A66F-01043EE15D02}.Release|Any CPU.ActiveCfg = Release|Any CPU - {B255E88A-C8DD-4635-A66F-01043EE15D02}.Release|Any CPU.Build.0 = Release|Any CPU - {9A412F18-EC00-4F52-A73E-DBC2DF8AF857}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {9A412F18-EC00-4F52-A73E-DBC2DF8AF857}.Debug|Any CPU.Build.0 = Debug|Any CPU - {9A412F18-EC00-4F52-A73E-DBC2DF8AF857}.Release|Any CPU.ActiveCfg = Release|Any CPU - {9A412F18-EC00-4F52-A73E-DBC2DF8AF857}.Release|Any CPU.Build.0 = Release|Any CPU - EndGlobalSection -EndGlobal + +Microsoft Visual Studio Solution File, Format Version 12.00 +# Visual Studio Version 17 +VisualStudioVersion = 17.0.31903.59 +MinimumVisualStudioVersion = 10.0.40219.1 +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SeedStreaming", "SeedStreaming\SeedStreaming.csproj", "{5BC1C780-3D6E-443F-9004-2F261CBF33ED}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SeedStreaming.Test", "SeedStreaming.Test\SeedStreaming.Test.csproj", "{AAA7A052-7A59-4BC8-882A-5F0B21F886E0}" +EndProject +Global + GlobalSection(SolutionConfigurationPlatforms) = preSolution + Debug|Any CPU = Debug|Any CPU + Release|Any CPU = Release|Any CPU + EndGlobalSection + GlobalSection(SolutionProperties) = preSolution + HideSolutionNode = FALSE + EndGlobalSection + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {5BC1C780-3D6E-443F-9004-2F261CBF33ED}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {5BC1C780-3D6E-443F-9004-2F261CBF33ED}.Debug|Any CPU.Build.0 = Debug|Any CPU + {5BC1C780-3D6E-443F-9004-2F261CBF33ED}.Release|Any CPU.ActiveCfg = Release|Any CPU + {5BC1C780-3D6E-443F-9004-2F261CBF33ED}.Release|Any CPU.Build.0 = Release|Any CPU + {AAA7A052-7A59-4BC8-882A-5F0B21F886E0}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {AAA7A052-7A59-4BC8-882A-5F0B21F886E0}.Debug|Any CPU.Build.0 = Debug|Any CPU + {AAA7A052-7A59-4BC8-882A-5F0B21F886E0}.Release|Any CPU.ActiveCfg = Release|Any CPU + {AAA7A052-7A59-4BC8-882A-5F0B21F886E0}.Release|Any CPU.Build.0 = Release|Any CPU + EndGlobalSection +EndGlobal diff --git a/seed/csharp-model/trace/src/SeedTrace.sln b/seed/csharp-model/trace/src/SeedTrace.sln index a51bc0a6835..42afb5d62b7 100644 --- a/seed/csharp-model/trace/src/SeedTrace.sln +++ b/seed/csharp-model/trace/src/SeedTrace.sln @@ -1,28 +1,28 @@ - -Microsoft Visual Studio Solution File, Format Version 12.00 -# Visual Studio Version 17 -VisualStudioVersion = 17.0.31903.59 -MinimumVisualStudioVersion = 10.0.40219.1 -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SeedTrace", "SeedTrace\SeedTrace.csproj", "{C88F4B9A-76A4-4C26-B0B0-C7EE9859CB60}" -EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SeedTrace.Test", "SeedTrace.Test\SeedTrace.Test.csproj", "{DD05F5E6-2605-40D0-A5FF-CFC98E97DEBD}" -EndProject -Global - GlobalSection(SolutionConfigurationPlatforms) = preSolution - Debug|Any CPU = Debug|Any CPU - Release|Any CPU = Release|Any CPU - EndGlobalSection - GlobalSection(SolutionProperties) = preSolution - HideSolutionNode = FALSE - EndGlobalSection - GlobalSection(ProjectConfigurationPlatforms) = postSolution - {C88F4B9A-76A4-4C26-B0B0-C7EE9859CB60}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {C88F4B9A-76A4-4C26-B0B0-C7EE9859CB60}.Debug|Any CPU.Build.0 = Debug|Any CPU - {C88F4B9A-76A4-4C26-B0B0-C7EE9859CB60}.Release|Any CPU.ActiveCfg = Release|Any CPU - {C88F4B9A-76A4-4C26-B0B0-C7EE9859CB60}.Release|Any CPU.Build.0 = Release|Any CPU - {DD05F5E6-2605-40D0-A5FF-CFC98E97DEBD}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {DD05F5E6-2605-40D0-A5FF-CFC98E97DEBD}.Debug|Any CPU.Build.0 = Debug|Any CPU - {DD05F5E6-2605-40D0-A5FF-CFC98E97DEBD}.Release|Any CPU.ActiveCfg = Release|Any CPU - {DD05F5E6-2605-40D0-A5FF-CFC98E97DEBD}.Release|Any CPU.Build.0 = Release|Any CPU - EndGlobalSection -EndGlobal + +Microsoft Visual Studio Solution File, Format Version 12.00 +# Visual Studio Version 17 +VisualStudioVersion = 17.0.31903.59 +MinimumVisualStudioVersion = 10.0.40219.1 +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SeedTrace", "SeedTrace\SeedTrace.csproj", "{9238AB08-F963-4407-83F3-FBAB59842DCC}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SeedTrace.Test", "SeedTrace.Test\SeedTrace.Test.csproj", "{185E8599-08CA-4797-94E4-EE0F90E68A09}" +EndProject +Global + GlobalSection(SolutionConfigurationPlatforms) = preSolution + Debug|Any CPU = Debug|Any CPU + Release|Any CPU = Release|Any CPU + EndGlobalSection + GlobalSection(SolutionProperties) = preSolution + HideSolutionNode = FALSE + EndGlobalSection + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {9238AB08-F963-4407-83F3-FBAB59842DCC}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {9238AB08-F963-4407-83F3-FBAB59842DCC}.Debug|Any CPU.Build.0 = Debug|Any CPU + {9238AB08-F963-4407-83F3-FBAB59842DCC}.Release|Any CPU.ActiveCfg = Release|Any CPU + {9238AB08-F963-4407-83F3-FBAB59842DCC}.Release|Any CPU.Build.0 = Release|Any CPU + {185E8599-08CA-4797-94E4-EE0F90E68A09}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {185E8599-08CA-4797-94E4-EE0F90E68A09}.Debug|Any CPU.Build.0 = Debug|Any CPU + {185E8599-08CA-4797-94E4-EE0F90E68A09}.Release|Any CPU.ActiveCfg = Release|Any CPU + {185E8599-08CA-4797-94E4-EE0F90E68A09}.Release|Any CPU.Build.0 = Release|Any CPU + EndGlobalSection +EndGlobal diff --git a/seed/csharp-model/undiscriminated-unions/src/SeedUndiscriminatedUnions.sln b/seed/csharp-model/undiscriminated-unions/src/SeedUndiscriminatedUnions.sln index 08e426969e3..5d9b424537a 100644 --- a/seed/csharp-model/undiscriminated-unions/src/SeedUndiscriminatedUnions.sln +++ b/seed/csharp-model/undiscriminated-unions/src/SeedUndiscriminatedUnions.sln @@ -1,28 +1,28 @@ - -Microsoft Visual Studio Solution File, Format Version 12.00 -# Visual Studio Version 17 -VisualStudioVersion = 17.0.31903.59 -MinimumVisualStudioVersion = 10.0.40219.1 -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SeedUndiscriminatedUnions", "SeedUndiscriminatedUnions\SeedUndiscriminatedUnions.csproj", "{AD645789-9465-4E4B-95E7-1F0AC2E8315E}" -EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SeedUndiscriminatedUnions.Test", "SeedUndiscriminatedUnions.Test\SeedUndiscriminatedUnions.Test.csproj", "{848E0BCE-A83A-41D1-B9FE-FC6905FDE7BB}" -EndProject -Global - GlobalSection(SolutionConfigurationPlatforms) = preSolution - Debug|Any CPU = Debug|Any CPU - Release|Any CPU = Release|Any CPU - EndGlobalSection - GlobalSection(SolutionProperties) = preSolution - HideSolutionNode = FALSE - EndGlobalSection - GlobalSection(ProjectConfigurationPlatforms) = postSolution - {AD645789-9465-4E4B-95E7-1F0AC2E8315E}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {AD645789-9465-4E4B-95E7-1F0AC2E8315E}.Debug|Any CPU.Build.0 = Debug|Any CPU - {AD645789-9465-4E4B-95E7-1F0AC2E8315E}.Release|Any CPU.ActiveCfg = Release|Any CPU - {AD645789-9465-4E4B-95E7-1F0AC2E8315E}.Release|Any CPU.Build.0 = Release|Any CPU - {848E0BCE-A83A-41D1-B9FE-FC6905FDE7BB}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {848E0BCE-A83A-41D1-B9FE-FC6905FDE7BB}.Debug|Any CPU.Build.0 = Debug|Any CPU - {848E0BCE-A83A-41D1-B9FE-FC6905FDE7BB}.Release|Any CPU.ActiveCfg = Release|Any CPU - {848E0BCE-A83A-41D1-B9FE-FC6905FDE7BB}.Release|Any CPU.Build.0 = Release|Any CPU - EndGlobalSection -EndGlobal + +Microsoft Visual Studio Solution File, Format Version 12.00 +# Visual Studio Version 17 +VisualStudioVersion = 17.0.31903.59 +MinimumVisualStudioVersion = 10.0.40219.1 +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SeedUndiscriminatedUnions", "SeedUndiscriminatedUnions\SeedUndiscriminatedUnions.csproj", "{ECCFBC5B-558F-472C-AD78-2CFCC9A6030A}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SeedUndiscriminatedUnions.Test", "SeedUndiscriminatedUnions.Test\SeedUndiscriminatedUnions.Test.csproj", "{8B89031A-286C-4749-8132-DA42388D1402}" +EndProject +Global + GlobalSection(SolutionConfigurationPlatforms) = preSolution + Debug|Any CPU = Debug|Any CPU + Release|Any CPU = Release|Any CPU + EndGlobalSection + GlobalSection(SolutionProperties) = preSolution + HideSolutionNode = FALSE + EndGlobalSection + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {ECCFBC5B-558F-472C-AD78-2CFCC9A6030A}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {ECCFBC5B-558F-472C-AD78-2CFCC9A6030A}.Debug|Any CPU.Build.0 = Debug|Any CPU + {ECCFBC5B-558F-472C-AD78-2CFCC9A6030A}.Release|Any CPU.ActiveCfg = Release|Any CPU + {ECCFBC5B-558F-472C-AD78-2CFCC9A6030A}.Release|Any CPU.Build.0 = Release|Any CPU + {8B89031A-286C-4749-8132-DA42388D1402}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {8B89031A-286C-4749-8132-DA42388D1402}.Debug|Any CPU.Build.0 = Debug|Any CPU + {8B89031A-286C-4749-8132-DA42388D1402}.Release|Any CPU.ActiveCfg = Release|Any CPU + {8B89031A-286C-4749-8132-DA42388D1402}.Release|Any CPU.Build.0 = Release|Any CPU + EndGlobalSection +EndGlobal diff --git a/seed/csharp-model/unions/src/SeedUnions.sln b/seed/csharp-model/unions/src/SeedUnions.sln index 388de3c2211..1639c79576f 100644 --- a/seed/csharp-model/unions/src/SeedUnions.sln +++ b/seed/csharp-model/unions/src/SeedUnions.sln @@ -1,28 +1,28 @@ - -Microsoft Visual Studio Solution File, Format Version 12.00 -# Visual Studio Version 17 -VisualStudioVersion = 17.0.31903.59 -MinimumVisualStudioVersion = 10.0.40219.1 -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SeedUnions", "SeedUnions\SeedUnions.csproj", "{7CB9B6E3-676A-4350-8E1E-C61E9F15FBAD}" -EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SeedUnions.Test", "SeedUnions.Test\SeedUnions.Test.csproj", "{9F557ED7-B551-478C-9823-1ACF46547949}" -EndProject -Global - GlobalSection(SolutionConfigurationPlatforms) = preSolution - Debug|Any CPU = Debug|Any CPU - Release|Any CPU = Release|Any CPU - EndGlobalSection - GlobalSection(SolutionProperties) = preSolution - HideSolutionNode = FALSE - EndGlobalSection - GlobalSection(ProjectConfigurationPlatforms) = postSolution - {7CB9B6E3-676A-4350-8E1E-C61E9F15FBAD}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {7CB9B6E3-676A-4350-8E1E-C61E9F15FBAD}.Debug|Any CPU.Build.0 = Debug|Any CPU - {7CB9B6E3-676A-4350-8E1E-C61E9F15FBAD}.Release|Any CPU.ActiveCfg = Release|Any CPU - {7CB9B6E3-676A-4350-8E1E-C61E9F15FBAD}.Release|Any CPU.Build.0 = Release|Any CPU - {9F557ED7-B551-478C-9823-1ACF46547949}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {9F557ED7-B551-478C-9823-1ACF46547949}.Debug|Any CPU.Build.0 = Debug|Any CPU - {9F557ED7-B551-478C-9823-1ACF46547949}.Release|Any CPU.ActiveCfg = Release|Any CPU - {9F557ED7-B551-478C-9823-1ACF46547949}.Release|Any CPU.Build.0 = Release|Any CPU - EndGlobalSection -EndGlobal + +Microsoft Visual Studio Solution File, Format Version 12.00 +# Visual Studio Version 17 +VisualStudioVersion = 17.0.31903.59 +MinimumVisualStudioVersion = 10.0.40219.1 +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SeedUnions", "SeedUnions\SeedUnions.csproj", "{E8B0ADF8-7F32-400C-A0BF-A1E88306D49E}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SeedUnions.Test", "SeedUnions.Test\SeedUnions.Test.csproj", "{9A102A47-A686-4118-9AEB-07C8152DFB92}" +EndProject +Global + GlobalSection(SolutionConfigurationPlatforms) = preSolution + Debug|Any CPU = Debug|Any CPU + Release|Any CPU = Release|Any CPU + EndGlobalSection + GlobalSection(SolutionProperties) = preSolution + HideSolutionNode = FALSE + EndGlobalSection + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {E8B0ADF8-7F32-400C-A0BF-A1E88306D49E}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {E8B0ADF8-7F32-400C-A0BF-A1E88306D49E}.Debug|Any CPU.Build.0 = Debug|Any CPU + {E8B0ADF8-7F32-400C-A0BF-A1E88306D49E}.Release|Any CPU.ActiveCfg = Release|Any CPU + {E8B0ADF8-7F32-400C-A0BF-A1E88306D49E}.Release|Any CPU.Build.0 = Release|Any CPU + {9A102A47-A686-4118-9AEB-07C8152DFB92}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {9A102A47-A686-4118-9AEB-07C8152DFB92}.Debug|Any CPU.Build.0 = Debug|Any CPU + {9A102A47-A686-4118-9AEB-07C8152DFB92}.Release|Any CPU.ActiveCfg = Release|Any CPU + {9A102A47-A686-4118-9AEB-07C8152DFB92}.Release|Any CPU.Build.0 = Release|Any CPU + EndGlobalSection +EndGlobal diff --git a/seed/csharp-model/unknown/src/SeedUnknownAsAny.sln b/seed/csharp-model/unknown/src/SeedUnknownAsAny.sln index 47cb74a001d..00e4fb91767 100644 --- a/seed/csharp-model/unknown/src/SeedUnknownAsAny.sln +++ b/seed/csharp-model/unknown/src/SeedUnknownAsAny.sln @@ -1,28 +1,28 @@ - -Microsoft Visual Studio Solution File, Format Version 12.00 -# Visual Studio Version 17 -VisualStudioVersion = 17.0.31903.59 -MinimumVisualStudioVersion = 10.0.40219.1 -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SeedUnknownAsAny", "SeedUnknownAsAny\SeedUnknownAsAny.csproj", "{7D914371-3399-49CF-8B2D-5814065D4861}" -EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SeedUnknownAsAny.Test", "SeedUnknownAsAny.Test\SeedUnknownAsAny.Test.csproj", "{381B6904-9052-4EBA-B078-24D941E3A629}" -EndProject -Global - GlobalSection(SolutionConfigurationPlatforms) = preSolution - Debug|Any CPU = Debug|Any CPU - Release|Any CPU = Release|Any CPU - EndGlobalSection - GlobalSection(SolutionProperties) = preSolution - HideSolutionNode = FALSE - EndGlobalSection - GlobalSection(ProjectConfigurationPlatforms) = postSolution - {7D914371-3399-49CF-8B2D-5814065D4861}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {7D914371-3399-49CF-8B2D-5814065D4861}.Debug|Any CPU.Build.0 = Debug|Any CPU - {7D914371-3399-49CF-8B2D-5814065D4861}.Release|Any CPU.ActiveCfg = Release|Any CPU - {7D914371-3399-49CF-8B2D-5814065D4861}.Release|Any CPU.Build.0 = Release|Any CPU - {381B6904-9052-4EBA-B078-24D941E3A629}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {381B6904-9052-4EBA-B078-24D941E3A629}.Debug|Any CPU.Build.0 = Debug|Any CPU - {381B6904-9052-4EBA-B078-24D941E3A629}.Release|Any CPU.ActiveCfg = Release|Any CPU - {381B6904-9052-4EBA-B078-24D941E3A629}.Release|Any CPU.Build.0 = Release|Any CPU - EndGlobalSection -EndGlobal + +Microsoft Visual Studio Solution File, Format Version 12.00 +# Visual Studio Version 17 +VisualStudioVersion = 17.0.31903.59 +MinimumVisualStudioVersion = 10.0.40219.1 +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SeedUnknownAsAny", "SeedUnknownAsAny\SeedUnknownAsAny.csproj", "{550ED348-5492-46A6-B6F1-EA1ACB4DCF88}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SeedUnknownAsAny.Test", "SeedUnknownAsAny.Test\SeedUnknownAsAny.Test.csproj", "{3F8B888E-C61C-443B-B92F-F3595499057B}" +EndProject +Global + GlobalSection(SolutionConfigurationPlatforms) = preSolution + Debug|Any CPU = Debug|Any CPU + Release|Any CPU = Release|Any CPU + EndGlobalSection + GlobalSection(SolutionProperties) = preSolution + HideSolutionNode = FALSE + EndGlobalSection + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {550ED348-5492-46A6-B6F1-EA1ACB4DCF88}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {550ED348-5492-46A6-B6F1-EA1ACB4DCF88}.Debug|Any CPU.Build.0 = Debug|Any CPU + {550ED348-5492-46A6-B6F1-EA1ACB4DCF88}.Release|Any CPU.ActiveCfg = Release|Any CPU + {550ED348-5492-46A6-B6F1-EA1ACB4DCF88}.Release|Any CPU.Build.0 = Release|Any CPU + {3F8B888E-C61C-443B-B92F-F3595499057B}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {3F8B888E-C61C-443B-B92F-F3595499057B}.Debug|Any CPU.Build.0 = Debug|Any CPU + {3F8B888E-C61C-443B-B92F-F3595499057B}.Release|Any CPU.ActiveCfg = Release|Any CPU + {3F8B888E-C61C-443B-B92F-F3595499057B}.Release|Any CPU.Build.0 = Release|Any CPU + EndGlobalSection +EndGlobal diff --git a/seed/csharp-model/validation/src/SeedValidation.sln b/seed/csharp-model/validation/src/SeedValidation.sln index b0cb1f85dd4..bce7187d1a3 100644 --- a/seed/csharp-model/validation/src/SeedValidation.sln +++ b/seed/csharp-model/validation/src/SeedValidation.sln @@ -1,28 +1,28 @@ - -Microsoft Visual Studio Solution File, Format Version 12.00 -# Visual Studio Version 17 -VisualStudioVersion = 17.0.31903.59 -MinimumVisualStudioVersion = 10.0.40219.1 -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SeedValidation", "SeedValidation\SeedValidation.csproj", "{6864E747-72E6-46CD-8A88-FA9B10E553DC}" -EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SeedValidation.Test", "SeedValidation.Test\SeedValidation.Test.csproj", "{04273FD6-F88C-41DE-B825-79E3DC32553D}" -EndProject -Global - GlobalSection(SolutionConfigurationPlatforms) = preSolution - Debug|Any CPU = Debug|Any CPU - Release|Any CPU = Release|Any CPU - EndGlobalSection - GlobalSection(SolutionProperties) = preSolution - HideSolutionNode = FALSE - EndGlobalSection - GlobalSection(ProjectConfigurationPlatforms) = postSolution - {6864E747-72E6-46CD-8A88-FA9B10E553DC}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {6864E747-72E6-46CD-8A88-FA9B10E553DC}.Debug|Any CPU.Build.0 = Debug|Any CPU - {6864E747-72E6-46CD-8A88-FA9B10E553DC}.Release|Any CPU.ActiveCfg = Release|Any CPU - {6864E747-72E6-46CD-8A88-FA9B10E553DC}.Release|Any CPU.Build.0 = Release|Any CPU - {04273FD6-F88C-41DE-B825-79E3DC32553D}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {04273FD6-F88C-41DE-B825-79E3DC32553D}.Debug|Any CPU.Build.0 = Debug|Any CPU - {04273FD6-F88C-41DE-B825-79E3DC32553D}.Release|Any CPU.ActiveCfg = Release|Any CPU - {04273FD6-F88C-41DE-B825-79E3DC32553D}.Release|Any CPU.Build.0 = Release|Any CPU - EndGlobalSection -EndGlobal + +Microsoft Visual Studio Solution File, Format Version 12.00 +# Visual Studio Version 17 +VisualStudioVersion = 17.0.31903.59 +MinimumVisualStudioVersion = 10.0.40219.1 +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SeedValidation", "SeedValidation\SeedValidation.csproj", "{5ED25903-98A6-4604-9DAA-CEA7912C4C31}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SeedValidation.Test", "SeedValidation.Test\SeedValidation.Test.csproj", "{A9AFC68D-BEA9-45B4-8698-44C291995B69}" +EndProject +Global + GlobalSection(SolutionConfigurationPlatforms) = preSolution + Debug|Any CPU = Debug|Any CPU + Release|Any CPU = Release|Any CPU + EndGlobalSection + GlobalSection(SolutionProperties) = preSolution + HideSolutionNode = FALSE + EndGlobalSection + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {5ED25903-98A6-4604-9DAA-CEA7912C4C31}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {5ED25903-98A6-4604-9DAA-CEA7912C4C31}.Debug|Any CPU.Build.0 = Debug|Any CPU + {5ED25903-98A6-4604-9DAA-CEA7912C4C31}.Release|Any CPU.ActiveCfg = Release|Any CPU + {5ED25903-98A6-4604-9DAA-CEA7912C4C31}.Release|Any CPU.Build.0 = Release|Any CPU + {A9AFC68D-BEA9-45B4-8698-44C291995B69}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {A9AFC68D-BEA9-45B4-8698-44C291995B69}.Debug|Any CPU.Build.0 = Debug|Any CPU + {A9AFC68D-BEA9-45B4-8698-44C291995B69}.Release|Any CPU.ActiveCfg = Release|Any CPU + {A9AFC68D-BEA9-45B4-8698-44C291995B69}.Release|Any CPU.Build.0 = Release|Any CPU + EndGlobalSection +EndGlobal diff --git a/seed/csharp-model/variables/src/SeedVariables.sln b/seed/csharp-model/variables/src/SeedVariables.sln index 1ca3808d40f..11b4056a2fc 100644 --- a/seed/csharp-model/variables/src/SeedVariables.sln +++ b/seed/csharp-model/variables/src/SeedVariables.sln @@ -1,28 +1,28 @@ - -Microsoft Visual Studio Solution File, Format Version 12.00 -# Visual Studio Version 17 -VisualStudioVersion = 17.0.31903.59 -MinimumVisualStudioVersion = 10.0.40219.1 -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SeedVariables", "SeedVariables\SeedVariables.csproj", "{062B156E-8652-442A-A946-331AB3F70C2B}" -EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SeedVariables.Test", "SeedVariables.Test\SeedVariables.Test.csproj", "{CAF3E9E4-DC04-4639-8969-39357DE0C9F0}" -EndProject -Global - GlobalSection(SolutionConfigurationPlatforms) = preSolution - Debug|Any CPU = Debug|Any CPU - Release|Any CPU = Release|Any CPU - EndGlobalSection - GlobalSection(SolutionProperties) = preSolution - HideSolutionNode = FALSE - EndGlobalSection - GlobalSection(ProjectConfigurationPlatforms) = postSolution - {062B156E-8652-442A-A946-331AB3F70C2B}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {062B156E-8652-442A-A946-331AB3F70C2B}.Debug|Any CPU.Build.0 = Debug|Any CPU - {062B156E-8652-442A-A946-331AB3F70C2B}.Release|Any CPU.ActiveCfg = Release|Any CPU - {062B156E-8652-442A-A946-331AB3F70C2B}.Release|Any CPU.Build.0 = Release|Any CPU - {CAF3E9E4-DC04-4639-8969-39357DE0C9F0}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {CAF3E9E4-DC04-4639-8969-39357DE0C9F0}.Debug|Any CPU.Build.0 = Debug|Any CPU - {CAF3E9E4-DC04-4639-8969-39357DE0C9F0}.Release|Any CPU.ActiveCfg = Release|Any CPU - {CAF3E9E4-DC04-4639-8969-39357DE0C9F0}.Release|Any CPU.Build.0 = Release|Any CPU - EndGlobalSection -EndGlobal + +Microsoft Visual Studio Solution File, Format Version 12.00 +# Visual Studio Version 17 +VisualStudioVersion = 17.0.31903.59 +MinimumVisualStudioVersion = 10.0.40219.1 +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SeedVariables", "SeedVariables\SeedVariables.csproj", "{D2F135F4-A431-41B9-AD5E-5442D1D6ECE7}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SeedVariables.Test", "SeedVariables.Test\SeedVariables.Test.csproj", "{1712D2EC-EA29-44E3-9F32-111BBC1B896B}" +EndProject +Global + GlobalSection(SolutionConfigurationPlatforms) = preSolution + Debug|Any CPU = Debug|Any CPU + Release|Any CPU = Release|Any CPU + EndGlobalSection + GlobalSection(SolutionProperties) = preSolution + HideSolutionNode = FALSE + EndGlobalSection + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {D2F135F4-A431-41B9-AD5E-5442D1D6ECE7}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {D2F135F4-A431-41B9-AD5E-5442D1D6ECE7}.Debug|Any CPU.Build.0 = Debug|Any CPU + {D2F135F4-A431-41B9-AD5E-5442D1D6ECE7}.Release|Any CPU.ActiveCfg = Release|Any CPU + {D2F135F4-A431-41B9-AD5E-5442D1D6ECE7}.Release|Any CPU.Build.0 = Release|Any CPU + {1712D2EC-EA29-44E3-9F32-111BBC1B896B}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {1712D2EC-EA29-44E3-9F32-111BBC1B896B}.Debug|Any CPU.Build.0 = Debug|Any CPU + {1712D2EC-EA29-44E3-9F32-111BBC1B896B}.Release|Any CPU.ActiveCfg = Release|Any CPU + {1712D2EC-EA29-44E3-9F32-111BBC1B896B}.Release|Any CPU.Build.0 = Release|Any CPU + EndGlobalSection +EndGlobal diff --git a/seed/csharp-model/version-no-default/src/SeedVersion.sln b/seed/csharp-model/version-no-default/src/SeedVersion.sln index d2cbb07ab7d..68854b16a36 100644 --- a/seed/csharp-model/version-no-default/src/SeedVersion.sln +++ b/seed/csharp-model/version-no-default/src/SeedVersion.sln @@ -1,28 +1,28 @@ - -Microsoft Visual Studio Solution File, Format Version 12.00 -# Visual Studio Version 17 -VisualStudioVersion = 17.0.31903.59 -MinimumVisualStudioVersion = 10.0.40219.1 -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SeedVersion", "SeedVersion\SeedVersion.csproj", "{998E0B51-3C88-4028-909F-FBE8903EF9C9}" -EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SeedVersion.Test", "SeedVersion.Test\SeedVersion.Test.csproj", "{C947BD8B-3E6C-4773-8021-8379AA69C8A2}" -EndProject -Global - GlobalSection(SolutionConfigurationPlatforms) = preSolution - Debug|Any CPU = Debug|Any CPU - Release|Any CPU = Release|Any CPU - EndGlobalSection - GlobalSection(SolutionProperties) = preSolution - HideSolutionNode = FALSE - EndGlobalSection - GlobalSection(ProjectConfigurationPlatforms) = postSolution - {998E0B51-3C88-4028-909F-FBE8903EF9C9}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {998E0B51-3C88-4028-909F-FBE8903EF9C9}.Debug|Any CPU.Build.0 = Debug|Any CPU - {998E0B51-3C88-4028-909F-FBE8903EF9C9}.Release|Any CPU.ActiveCfg = Release|Any CPU - {998E0B51-3C88-4028-909F-FBE8903EF9C9}.Release|Any CPU.Build.0 = Release|Any CPU - {C947BD8B-3E6C-4773-8021-8379AA69C8A2}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {C947BD8B-3E6C-4773-8021-8379AA69C8A2}.Debug|Any CPU.Build.0 = Debug|Any CPU - {C947BD8B-3E6C-4773-8021-8379AA69C8A2}.Release|Any CPU.ActiveCfg = Release|Any CPU - {C947BD8B-3E6C-4773-8021-8379AA69C8A2}.Release|Any CPU.Build.0 = Release|Any CPU - EndGlobalSection -EndGlobal + +Microsoft Visual Studio Solution File, Format Version 12.00 +# Visual Studio Version 17 +VisualStudioVersion = 17.0.31903.59 +MinimumVisualStudioVersion = 10.0.40219.1 +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SeedVersion", "SeedVersion\SeedVersion.csproj", "{1EF3D925-6F28-4B83-A876-3A4290B7C9EC}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SeedVersion.Test", "SeedVersion.Test\SeedVersion.Test.csproj", "{8280E4F5-8403-4074-931B-4E25381184F3}" +EndProject +Global + GlobalSection(SolutionConfigurationPlatforms) = preSolution + Debug|Any CPU = Debug|Any CPU + Release|Any CPU = Release|Any CPU + EndGlobalSection + GlobalSection(SolutionProperties) = preSolution + HideSolutionNode = FALSE + EndGlobalSection + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {1EF3D925-6F28-4B83-A876-3A4290B7C9EC}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {1EF3D925-6F28-4B83-A876-3A4290B7C9EC}.Debug|Any CPU.Build.0 = Debug|Any CPU + {1EF3D925-6F28-4B83-A876-3A4290B7C9EC}.Release|Any CPU.ActiveCfg = Release|Any CPU + {1EF3D925-6F28-4B83-A876-3A4290B7C9EC}.Release|Any CPU.Build.0 = Release|Any CPU + {8280E4F5-8403-4074-931B-4E25381184F3}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {8280E4F5-8403-4074-931B-4E25381184F3}.Debug|Any CPU.Build.0 = Debug|Any CPU + {8280E4F5-8403-4074-931B-4E25381184F3}.Release|Any CPU.ActiveCfg = Release|Any CPU + {8280E4F5-8403-4074-931B-4E25381184F3}.Release|Any CPU.Build.0 = Release|Any CPU + EndGlobalSection +EndGlobal diff --git a/seed/csharp-model/version/src/SeedVersion.sln b/seed/csharp-model/version/src/SeedVersion.sln index 2cf905d05f3..d4ffb3b97ea 100644 --- a/seed/csharp-model/version/src/SeedVersion.sln +++ b/seed/csharp-model/version/src/SeedVersion.sln @@ -1,28 +1,28 @@ - -Microsoft Visual Studio Solution File, Format Version 12.00 -# Visual Studio Version 17 -VisualStudioVersion = 17.0.31903.59 -MinimumVisualStudioVersion = 10.0.40219.1 -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SeedVersion", "SeedVersion\SeedVersion.csproj", "{2789145C-D780-483B-832E-82840C250614}" -EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SeedVersion.Test", "SeedVersion.Test\SeedVersion.Test.csproj", "{1B40ADD2-D34F-4835-BC4A-CAA2FD43442E}" -EndProject -Global - GlobalSection(SolutionConfigurationPlatforms) = preSolution - Debug|Any CPU = Debug|Any CPU - Release|Any CPU = Release|Any CPU - EndGlobalSection - GlobalSection(SolutionProperties) = preSolution - HideSolutionNode = FALSE - EndGlobalSection - GlobalSection(ProjectConfigurationPlatforms) = postSolution - {2789145C-D780-483B-832E-82840C250614}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {2789145C-D780-483B-832E-82840C250614}.Debug|Any CPU.Build.0 = Debug|Any CPU - {2789145C-D780-483B-832E-82840C250614}.Release|Any CPU.ActiveCfg = Release|Any CPU - {2789145C-D780-483B-832E-82840C250614}.Release|Any CPU.Build.0 = Release|Any CPU - {1B40ADD2-D34F-4835-BC4A-CAA2FD43442E}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {1B40ADD2-D34F-4835-BC4A-CAA2FD43442E}.Debug|Any CPU.Build.0 = Debug|Any CPU - {1B40ADD2-D34F-4835-BC4A-CAA2FD43442E}.Release|Any CPU.ActiveCfg = Release|Any CPU - {1B40ADD2-D34F-4835-BC4A-CAA2FD43442E}.Release|Any CPU.Build.0 = Release|Any CPU - EndGlobalSection -EndGlobal + +Microsoft Visual Studio Solution File, Format Version 12.00 +# Visual Studio Version 17 +VisualStudioVersion = 17.0.31903.59 +MinimumVisualStudioVersion = 10.0.40219.1 +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SeedVersion", "SeedVersion\SeedVersion.csproj", "{F99200B1-76A1-455C-B097-D76BD542B074}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SeedVersion.Test", "SeedVersion.Test\SeedVersion.Test.csproj", "{AE00C583-B22D-49E4-A22D-745330324C69}" +EndProject +Global + GlobalSection(SolutionConfigurationPlatforms) = preSolution + Debug|Any CPU = Debug|Any CPU + Release|Any CPU = Release|Any CPU + EndGlobalSection + GlobalSection(SolutionProperties) = preSolution + HideSolutionNode = FALSE + EndGlobalSection + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {F99200B1-76A1-455C-B097-D76BD542B074}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {F99200B1-76A1-455C-B097-D76BD542B074}.Debug|Any CPU.Build.0 = Debug|Any CPU + {F99200B1-76A1-455C-B097-D76BD542B074}.Release|Any CPU.ActiveCfg = Release|Any CPU + {F99200B1-76A1-455C-B097-D76BD542B074}.Release|Any CPU.Build.0 = Release|Any CPU + {AE00C583-B22D-49E4-A22D-745330324C69}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {AE00C583-B22D-49E4-A22D-745330324C69}.Debug|Any CPU.Build.0 = Debug|Any CPU + {AE00C583-B22D-49E4-A22D-745330324C69}.Release|Any CPU.ActiveCfg = Release|Any CPU + {AE00C583-B22D-49E4-A22D-745330324C69}.Release|Any CPU.Build.0 = Release|Any CPU + EndGlobalSection +EndGlobal diff --git a/seed/csharp-model/websocket/src/SeedWebsocket.sln b/seed/csharp-model/websocket/src/SeedWebsocket.sln index 28c11494884..e64241586a4 100644 --- a/seed/csharp-model/websocket/src/SeedWebsocket.sln +++ b/seed/csharp-model/websocket/src/SeedWebsocket.sln @@ -1,28 +1,28 @@ - -Microsoft Visual Studio Solution File, Format Version 12.00 -# Visual Studio Version 17 -VisualStudioVersion = 17.0.31903.59 -MinimumVisualStudioVersion = 10.0.40219.1 -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SeedWebsocket", "SeedWebsocket\SeedWebsocket.csproj", "{46EF288A-6261-493A-8021-1CE80DE30B78}" -EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SeedWebsocket.Test", "SeedWebsocket.Test\SeedWebsocket.Test.csproj", "{80EEFB6B-E44D-4FB1-AB19-FFC9CF37B8F7}" -EndProject -Global - GlobalSection(SolutionConfigurationPlatforms) = preSolution - Debug|Any CPU = Debug|Any CPU - Release|Any CPU = Release|Any CPU - EndGlobalSection - GlobalSection(SolutionProperties) = preSolution - HideSolutionNode = FALSE - EndGlobalSection - GlobalSection(ProjectConfigurationPlatforms) = postSolution - {46EF288A-6261-493A-8021-1CE80DE30B78}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {46EF288A-6261-493A-8021-1CE80DE30B78}.Debug|Any CPU.Build.0 = Debug|Any CPU - {46EF288A-6261-493A-8021-1CE80DE30B78}.Release|Any CPU.ActiveCfg = Release|Any CPU - {46EF288A-6261-493A-8021-1CE80DE30B78}.Release|Any CPU.Build.0 = Release|Any CPU - {80EEFB6B-E44D-4FB1-AB19-FFC9CF37B8F7}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {80EEFB6B-E44D-4FB1-AB19-FFC9CF37B8F7}.Debug|Any CPU.Build.0 = Debug|Any CPU - {80EEFB6B-E44D-4FB1-AB19-FFC9CF37B8F7}.Release|Any CPU.ActiveCfg = Release|Any CPU - {80EEFB6B-E44D-4FB1-AB19-FFC9CF37B8F7}.Release|Any CPU.Build.0 = Release|Any CPU - EndGlobalSection -EndGlobal + +Microsoft Visual Studio Solution File, Format Version 12.00 +# Visual Studio Version 17 +VisualStudioVersion = 17.0.31903.59 +MinimumVisualStudioVersion = 10.0.40219.1 +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SeedWebsocket", "SeedWebsocket\SeedWebsocket.csproj", "{09C0A3AC-BFA7-4688-84AA-90920AD5DC71}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SeedWebsocket.Test", "SeedWebsocket.Test\SeedWebsocket.Test.csproj", "{829CA0A5-0B1F-42E9-A123-BB7106E8971C}" +EndProject +Global + GlobalSection(SolutionConfigurationPlatforms) = preSolution + Debug|Any CPU = Debug|Any CPU + Release|Any CPU = Release|Any CPU + EndGlobalSection + GlobalSection(SolutionProperties) = preSolution + HideSolutionNode = FALSE + EndGlobalSection + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {09C0A3AC-BFA7-4688-84AA-90920AD5DC71}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {09C0A3AC-BFA7-4688-84AA-90920AD5DC71}.Debug|Any CPU.Build.0 = Debug|Any CPU + {09C0A3AC-BFA7-4688-84AA-90920AD5DC71}.Release|Any CPU.ActiveCfg = Release|Any CPU + {09C0A3AC-BFA7-4688-84AA-90920AD5DC71}.Release|Any CPU.Build.0 = Release|Any CPU + {829CA0A5-0B1F-42E9-A123-BB7106E8971C}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {829CA0A5-0B1F-42E9-A123-BB7106E8971C}.Debug|Any CPU.Build.0 = Debug|Any CPU + {829CA0A5-0B1F-42E9-A123-BB7106E8971C}.Release|Any CPU.ActiveCfg = Release|Any CPU + {829CA0A5-0B1F-42E9-A123-BB7106E8971C}.Release|Any CPU.Build.0 = Release|Any CPU + EndGlobalSection +EndGlobal diff --git a/seed/csharp-sdk/grpc-proto-exhaustive/no-custom-config/src/SeedApi.sln b/seed/csharp-sdk/grpc-proto-exhaustive/no-custom-config/src/SeedApi.sln new file mode 100644 index 00000000000..41898496581 --- /dev/null +++ b/seed/csharp-sdk/grpc-proto-exhaustive/no-custom-config/src/SeedApi.sln @@ -0,0 +1,28 @@ + +Microsoft Visual Studio Solution File, Format Version 12.00 +# Visual Studio Version 17 +VisualStudioVersion = 17.0.31903.59 +MinimumVisualStudioVersion = 10.0.40219.1 +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SeedApi", "SeedApi\SeedApi.csproj", "{2347DC3D-4E74-4B0A-B3C2-48CC5E7749DB}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SeedApi.Test", "SeedApi.Test\SeedApi.Test.csproj", "{D1E5054D-1C19-4EC9-9E92-7316F0EDA1B1}" +EndProject +Global + GlobalSection(SolutionConfigurationPlatforms) = preSolution + Debug|Any CPU = Debug|Any CPU + Release|Any CPU = Release|Any CPU + EndGlobalSection + GlobalSection(SolutionProperties) = preSolution + HideSolutionNode = FALSE + EndGlobalSection + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {2347DC3D-4E74-4B0A-B3C2-48CC5E7749DB}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {2347DC3D-4E74-4B0A-B3C2-48CC5E7749DB}.Debug|Any CPU.Build.0 = Debug|Any CPU + {2347DC3D-4E74-4B0A-B3C2-48CC5E7749DB}.Release|Any CPU.ActiveCfg = Release|Any CPU + {2347DC3D-4E74-4B0A-B3C2-48CC5E7749DB}.Release|Any CPU.Build.0 = Release|Any CPU + {D1E5054D-1C19-4EC9-9E92-7316F0EDA1B1}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {D1E5054D-1C19-4EC9-9E92-7316F0EDA1B1}.Debug|Any CPU.Build.0 = Debug|Any CPU + {D1E5054D-1C19-4EC9-9E92-7316F0EDA1B1}.Release|Any CPU.ActiveCfg = Release|Any CPU + {D1E5054D-1C19-4EC9-9E92-7316F0EDA1B1}.Release|Any CPU.Build.0 = Release|Any CPU + EndGlobalSection +EndGlobal diff --git a/seed/csharp-sdk/grpc-proto-exhaustive/package-id/src/SeedApi.sln b/seed/csharp-sdk/grpc-proto-exhaustive/package-id/src/SeedApi.sln new file mode 100644 index 00000000000..96df241210f --- /dev/null +++ b/seed/csharp-sdk/grpc-proto-exhaustive/package-id/src/SeedApi.sln @@ -0,0 +1,28 @@ + +Microsoft Visual Studio Solution File, Format Version 12.00 +# Visual Studio Version 17 +VisualStudioVersion = 17.0.31903.59 +MinimumVisualStudioVersion = 10.0.40219.1 +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SeedApi", "SeedApi\SeedApi.csproj", "{6E7FDF37-F5E9-4103-B402-68FFEE034AF9}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SeedApi.Test", "SeedApi.Test\SeedApi.Test.csproj", "{C504266E-B247-4BA1-BA35-675C433AF4EC}" +EndProject +Global + GlobalSection(SolutionConfigurationPlatforms) = preSolution + Debug|Any CPU = Debug|Any CPU + Release|Any CPU = Release|Any CPU + EndGlobalSection + GlobalSection(SolutionProperties) = preSolution + HideSolutionNode = FALSE + EndGlobalSection + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {6E7FDF37-F5E9-4103-B402-68FFEE034AF9}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {6E7FDF37-F5E9-4103-B402-68FFEE034AF9}.Debug|Any CPU.Build.0 = Debug|Any CPU + {6E7FDF37-F5E9-4103-B402-68FFEE034AF9}.Release|Any CPU.ActiveCfg = Release|Any CPU + {6E7FDF37-F5E9-4103-B402-68FFEE034AF9}.Release|Any CPU.Build.0 = Release|Any CPU + {C504266E-B247-4BA1-BA35-675C433AF4EC}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {C504266E-B247-4BA1-BA35-675C433AF4EC}.Debug|Any CPU.Build.0 = Debug|Any CPU + {C504266E-B247-4BA1-BA35-675C433AF4EC}.Release|Any CPU.ActiveCfg = Release|Any CPU + {C504266E-B247-4BA1-BA35-675C433AF4EC}.Release|Any CPU.Build.0 = Release|Any CPU + EndGlobalSection +EndGlobal diff --git a/seed/csharp-sdk/grpc-proto-exhaustive/read-only-memory/src/SeedApi.sln b/seed/csharp-sdk/grpc-proto-exhaustive/read-only-memory/src/SeedApi.sln new file mode 100644 index 00000000000..3a519976743 --- /dev/null +++ b/seed/csharp-sdk/grpc-proto-exhaustive/read-only-memory/src/SeedApi.sln @@ -0,0 +1,28 @@ + +Microsoft Visual Studio Solution File, Format Version 12.00 +# Visual Studio Version 17 +VisualStudioVersion = 17.0.31903.59 +MinimumVisualStudioVersion = 10.0.40219.1 +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SeedApi", "SeedApi\SeedApi.csproj", "{0D704BE5-E496-4E16-9157-6EEA2477EF72}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SeedApi.Test", "SeedApi.Test\SeedApi.Test.csproj", "{B5BBAB46-A544-4B3C-BC81-8E94A36762BD}" +EndProject +Global + GlobalSection(SolutionConfigurationPlatforms) = preSolution + Debug|Any CPU = Debug|Any CPU + Release|Any CPU = Release|Any CPU + EndGlobalSection + GlobalSection(SolutionProperties) = preSolution + HideSolutionNode = FALSE + EndGlobalSection + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {0D704BE5-E496-4E16-9157-6EEA2477EF72}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {0D704BE5-E496-4E16-9157-6EEA2477EF72}.Debug|Any CPU.Build.0 = Debug|Any CPU + {0D704BE5-E496-4E16-9157-6EEA2477EF72}.Release|Any CPU.ActiveCfg = Release|Any CPU + {0D704BE5-E496-4E16-9157-6EEA2477EF72}.Release|Any CPU.Build.0 = Release|Any CPU + {B5BBAB46-A544-4B3C-BC81-8E94A36762BD}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {B5BBAB46-A544-4B3C-BC81-8E94A36762BD}.Debug|Any CPU.Build.0 = Debug|Any CPU + {B5BBAB46-A544-4B3C-BC81-8E94A36762BD}.Release|Any CPU.ActiveCfg = Release|Any CPU + {B5BBAB46-A544-4B3C-BC81-8E94A36762BD}.Release|Any CPU.Build.0 = Release|Any CPU + EndGlobalSection +EndGlobal diff --git a/seed/csharp-sdk/grpc-proto/src/SeedApi.sln b/seed/csharp-sdk/grpc-proto/src/SeedApi.sln new file mode 100644 index 00000000000..733cc6104f6 --- /dev/null +++ b/seed/csharp-sdk/grpc-proto/src/SeedApi.sln @@ -0,0 +1,28 @@ + +Microsoft Visual Studio Solution File, Format Version 12.00 +# Visual Studio Version 17 +VisualStudioVersion = 17.0.31903.59 +MinimumVisualStudioVersion = 10.0.40219.1 +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SeedApi", "SeedApi\SeedApi.csproj", "{D4A44092-AD46-46B3-8B4F-455714352209}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SeedApi.Test", "SeedApi.Test\SeedApi.Test.csproj", "{C1B5A49B-5743-4B29-AEC4-C53D894B2233}" +EndProject +Global + GlobalSection(SolutionConfigurationPlatforms) = preSolution + Debug|Any CPU = Debug|Any CPU + Release|Any CPU = Release|Any CPU + EndGlobalSection + GlobalSection(SolutionProperties) = preSolution + HideSolutionNode = FALSE + EndGlobalSection + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {D4A44092-AD46-46B3-8B4F-455714352209}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {D4A44092-AD46-46B3-8B4F-455714352209}.Debug|Any CPU.Build.0 = Debug|Any CPU + {D4A44092-AD46-46B3-8B4F-455714352209}.Release|Any CPU.ActiveCfg = Release|Any CPU + {D4A44092-AD46-46B3-8B4F-455714352209}.Release|Any CPU.Build.0 = Release|Any CPU + {C1B5A49B-5743-4B29-AEC4-C53D894B2233}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {C1B5A49B-5743-4B29-AEC4-C53D894B2233}.Debug|Any CPU.Build.0 = Debug|Any CPU + {C1B5A49B-5743-4B29-AEC4-C53D894B2233}.Release|Any CPU.ActiveCfg = Release|Any CPU + {C1B5A49B-5743-4B29-AEC4-C53D894B2233}.Release|Any CPU.Build.0 = Release|Any CPU + EndGlobalSection +EndGlobal diff --git a/seed/go-sdk/examples/always-send-required-properties/.mock/definition/.service.yml.swp b/seed/go-sdk/examples/always-send-required-properties/.mock/definition/.service.yml.swp new file mode 100644 index 0000000000000000000000000000000000000000..07f2f5e8b68e9f16be16aedf57b5772eadadacd1 GIT binary patch literal 12288 zcmeI2yK59d9LML<`G`hE8wDpCg3aDt6hYSqBp5=9BQa_aQDp9Ra<{lIcjsab(NyUy zY*bJy8ygEdA7Ei)C05#4q|v{?BDQ|_d6SFrz)txse6lz1-|w@t2S=t}ou97pljSPI zHN@D5rw5yRUws}pa=yfbBbVape%CnqMMh0DCVc;fF&p}2$8QK{!?3&Ygq4PG$;yHZ zz4VWgkuof~V0*T*eJ@IDMPNr2xg^}ckx`}FT#013Xg6fJ<8GXP!-7;n2FQSBV2~X< zI+ncZhYt<&J-aVyZS;{0kO4A42FL&zAOmE843L5U-GB;8Y#B)oWQm^0?xmi4R-_vl zAOmE843GgbKnBPF86X2>fDDiUGVl)?5Ef%2TNyjB4Z-98|M~C#pF0`*4!(h};3Iek zUV>-fK8V0oa0U#6U0`hoW1qlV@CZBvDfDDiU zGC&4&13bAx83j0(Dow6BfsD#?S()X{H`_SEnzv5a%}Gz$s*^PbLbXg@soPCM>h-Qv zE#ETv?97FWN!Lawg_6Z^lVua6tJHm~WAc$Sf|^vq5=xY3JgN060@dm`zif=pP8;(w zjBvWvfDDiUGVl)?5Ef%2TNyjB4Z-98|M~C#pF0`*4!(h};3Iek zUV>-fK8V0oa0U#6U0`hoW1qlV@CZBvDfDDiU zGC&4&13bAx83j0(Dow6BfsD#?S()X{H`_SEnzv5a%}Gz$s*^PbLbXg@soPCM>h-Qv zE#ETv?97FWN!Lawg_6Z^lVua6tJHm~WAc$Sf|^vq5=xY3JgN060@dm`zif=pP8;(w zjBvWvfDDiUGVl)?5Ef%2TNyjB4Z-98|M~C#pF0`*4!(h};3Iek zUV>-fK8V0oa0U#6U0`hoW1qlV@CZBvDfDDiU zGC&4&13bAx83j0(Dow6BfsD#?S()X{H`_SEnzv5a%}Gz$s*^PbLbXg@soPCM>h-Qv zE#ETv?97FWN!Lawg_6Z^lVua6tJHm~WAc$Sf|^vq5=xY3JgN060@dm`zif=pP8;(w zjBvWv 0 { - if value, err := internal.StringifyJSON(c._rawJSON); err == nil { + if len(c.rawJSON) > 0 { + if value, err := internal.StringifyJSON(c.rawJSON); err == nil { return value } } @@ -117,7 +115,7 @@ func (c *Column) String() string { type DeleteResponse struct { extraProperties map[string]interface{} - _rawJSON json.RawMessage + rawJSON json.RawMessage } func (d *DeleteResponse) GetExtraProperties() map[string]interface{} { @@ -131,20 +129,18 @@ func (d *DeleteResponse) UnmarshalJSON(data []byte) error { return err } *d = DeleteResponse(value) - extraProperties, err := internal.ExtractExtraProperties(data, *d) if err != nil { return err } d.extraProperties = extraProperties - - d._rawJSON = json.RawMessage(data) + d.rawJSON = json.RawMessage(data) return nil } func (d *DeleteResponse) String() string { - if len(d._rawJSON) > 0 { - if value, err := internal.StringifyJSON(d._rawJSON); err == nil { + if len(d.rawJSON) > 0 { + if value, err := internal.StringifyJSON(d.rawJSON); err == nil { return value } } @@ -161,7 +157,7 @@ type DescribeResponse struct { TotalCount *int `json:"totalCount,omitempty" url:"totalCount,omitempty"` extraProperties map[string]interface{} - _rawJSON json.RawMessage + rawJSON json.RawMessage } func (d *DescribeResponse) GetNamespaces() map[string]*NamespaceSummary { @@ -203,20 +199,18 @@ func (d *DescribeResponse) UnmarshalJSON(data []byte) error { return err } *d = DescribeResponse(value) - extraProperties, err := internal.ExtractExtraProperties(data, *d) if err != nil { return err } d.extraProperties = extraProperties - - d._rawJSON = json.RawMessage(data) + d.rawJSON = json.RawMessage(data) return nil } func (d *DescribeResponse) String() string { - if len(d._rawJSON) > 0 { - if value, err := internal.StringifyJSON(d._rawJSON); err == nil { + if len(d.rawJSON) > 0 { + if value, err := internal.StringifyJSON(d.rawJSON); err == nil { return value } } @@ -232,7 +226,7 @@ type FetchResponse struct { Usage *Usage `json:"usage,omitempty" url:"usage,omitempty"` extraProperties map[string]interface{} - _rawJSON json.RawMessage + rawJSON json.RawMessage } func (f *FetchResponse) GetColumns() map[string]*Column { @@ -267,20 +261,18 @@ func (f *FetchResponse) UnmarshalJSON(data []byte) error { return err } *f = FetchResponse(value) - extraProperties, err := internal.ExtractExtraProperties(data, *f) if err != nil { return err } f.extraProperties = extraProperties - - f._rawJSON = json.RawMessage(data) + f.rawJSON = json.RawMessage(data) return nil } func (f *FetchResponse) String() string { - if len(f._rawJSON) > 0 { - if value, err := internal.StringifyJSON(f._rawJSON); err == nil { + if len(f.rawJSON) > 0 { + if value, err := internal.StringifyJSON(f.rawJSON); err == nil { return value } } @@ -295,7 +287,7 @@ type IndexedData struct { Values []float64 `json:"values,omitempty" url:"values,omitempty"` extraProperties map[string]interface{} - _rawJSON json.RawMessage + rawJSON json.RawMessage } func (i *IndexedData) GetIndices() []int { @@ -323,20 +315,18 @@ func (i *IndexedData) UnmarshalJSON(data []byte) error { return err } *i = IndexedData(value) - extraProperties, err := internal.ExtractExtraProperties(data, *i) if err != nil { return err } i.extraProperties = extraProperties - - i._rawJSON = json.RawMessage(data) + i.rawJSON = json.RawMessage(data) return nil } func (i *IndexedData) String() string { - if len(i._rawJSON) > 0 { - if value, err := internal.StringifyJSON(i._rawJSON); err == nil { + if len(i.rawJSON) > 0 { + if value, err := internal.StringifyJSON(i.rawJSON); err == nil { return value } } @@ -350,7 +340,7 @@ type ListElement struct { Id *string `json:"id,omitempty" url:"id,omitempty"` extraProperties map[string]interface{} - _rawJSON json.RawMessage + rawJSON json.RawMessage } func (l *ListElement) GetId() *string { @@ -371,20 +361,18 @@ func (l *ListElement) UnmarshalJSON(data []byte) error { return err } *l = ListElement(value) - extraProperties, err := internal.ExtractExtraProperties(data, *l) if err != nil { return err } l.extraProperties = extraProperties - - l._rawJSON = json.RawMessage(data) + l.rawJSON = json.RawMessage(data) return nil } func (l *ListElement) String() string { - if len(l._rawJSON) > 0 { - if value, err := internal.StringifyJSON(l._rawJSON); err == nil { + if len(l.rawJSON) > 0 { + if value, err := internal.StringifyJSON(l.rawJSON); err == nil { return value } } @@ -401,7 +389,7 @@ type ListResponse struct { Usage *Usage `json:"usage,omitempty" url:"usage,omitempty"` extraProperties map[string]interface{} - _rawJSON json.RawMessage + rawJSON json.RawMessage } func (l *ListResponse) GetColumns() []*ListElement { @@ -443,20 +431,18 @@ func (l *ListResponse) UnmarshalJSON(data []byte) error { return err } *l = ListResponse(value) - extraProperties, err := internal.ExtractExtraProperties(data, *l) if err != nil { return err } l.extraProperties = extraProperties - - l._rawJSON = json.RawMessage(data) + l.rawJSON = json.RawMessage(data) return nil } func (l *ListResponse) String() string { - if len(l._rawJSON) > 0 { - if value, err := internal.StringifyJSON(l._rawJSON); err == nil { + if len(l.rawJSON) > 0 { + if value, err := internal.StringifyJSON(l.rawJSON); err == nil { return value } } @@ -635,7 +621,7 @@ type NamespaceSummary struct { Count *int `json:"count,omitempty" url:"count,omitempty"` extraProperties map[string]interface{} - _rawJSON json.RawMessage + rawJSON json.RawMessage } func (n *NamespaceSummary) GetCount() *int { @@ -656,20 +642,18 @@ func (n *NamespaceSummary) UnmarshalJSON(data []byte) error { return err } *n = NamespaceSummary(value) - extraProperties, err := internal.ExtractExtraProperties(data, *n) if err != nil { return err } n.extraProperties = extraProperties - - n._rawJSON = json.RawMessage(data) + n.rawJSON = json.RawMessage(data) return nil } func (n *NamespaceSummary) String() string { - if len(n._rawJSON) > 0 { - if value, err := internal.StringifyJSON(n._rawJSON); err == nil { + if len(n.rawJSON) > 0 { + if value, err := internal.StringifyJSON(n.rawJSON); err == nil { return value } } @@ -683,7 +667,7 @@ type Pagination struct { Next *string `json:"next,omitempty" url:"next,omitempty"` extraProperties map[string]interface{} - _rawJSON json.RawMessage + rawJSON json.RawMessage } func (p *Pagination) GetNext() *string { @@ -704,20 +688,18 @@ func (p *Pagination) UnmarshalJSON(data []byte) error { return err } *p = Pagination(value) - extraProperties, err := internal.ExtractExtraProperties(data, *p) if err != nil { return err } p.extraProperties = extraProperties - - p._rawJSON = json.RawMessage(data) + p.rawJSON = json.RawMessage(data) return nil } func (p *Pagination) String() string { - if len(p._rawJSON) > 0 { - if value, err := internal.StringifyJSON(p._rawJSON); err == nil { + if len(p.rawJSON) > 0 { + if value, err := internal.StringifyJSON(p.rawJSON); err == nil { return value } } @@ -735,7 +717,7 @@ type QueryColumn struct { IndexedData *IndexedData `json:"indexedData,omitempty" url:"indexedData,omitempty"` extraProperties map[string]interface{} - _rawJSON json.RawMessage + rawJSON json.RawMessage } func (q *QueryColumn) GetValues() []float64 { @@ -784,20 +766,18 @@ func (q *QueryColumn) UnmarshalJSON(data []byte) error { return err } *q = QueryColumn(value) - extraProperties, err := internal.ExtractExtraProperties(data, *q) if err != nil { return err } q.extraProperties = extraProperties - - q._rawJSON = json.RawMessage(data) + q.rawJSON = json.RawMessage(data) return nil } func (q *QueryColumn) String() string { - if len(q._rawJSON) > 0 { - if value, err := internal.StringifyJSON(q._rawJSON); err == nil { + if len(q.rawJSON) > 0 { + if value, err := internal.StringifyJSON(q.rawJSON); err == nil { return value } } @@ -814,7 +794,7 @@ type QueryResponse struct { Usage *Usage `json:"usage,omitempty" url:"usage,omitempty"` extraProperties map[string]interface{} - _rawJSON json.RawMessage + rawJSON json.RawMessage } func (q *QueryResponse) GetResults() []*QueryResult { @@ -856,20 +836,18 @@ func (q *QueryResponse) UnmarshalJSON(data []byte) error { return err } *q = QueryResponse(value) - extraProperties, err := internal.ExtractExtraProperties(data, *q) if err != nil { return err } q.extraProperties = extraProperties - - q._rawJSON = json.RawMessage(data) + q.rawJSON = json.RawMessage(data) return nil } func (q *QueryResponse) String() string { - if len(q._rawJSON) > 0 { - if value, err := internal.StringifyJSON(q._rawJSON); err == nil { + if len(q.rawJSON) > 0 { + if value, err := internal.StringifyJSON(q.rawJSON); err == nil { return value } } @@ -884,7 +862,7 @@ type QueryResult struct { Namespace *string `json:"namespace,omitempty" url:"namespace,omitempty"` extraProperties map[string]interface{} - _rawJSON json.RawMessage + rawJSON json.RawMessage } func (q *QueryResult) GetMatches() []*ScoredColumn { @@ -912,20 +890,18 @@ func (q *QueryResult) UnmarshalJSON(data []byte) error { return err } *q = QueryResult(value) - extraProperties, err := internal.ExtractExtraProperties(data, *q) if err != nil { return err } q.extraProperties = extraProperties - - q._rawJSON = json.RawMessage(data) + q.rawJSON = json.RawMessage(data) return nil } func (q *QueryResult) String() string { - if len(q._rawJSON) > 0 { - if value, err := internal.StringifyJSON(q._rawJSON); err == nil { + if len(q.rawJSON) > 0 { + if value, err := internal.StringifyJSON(q.rawJSON); err == nil { return value } } @@ -943,7 +919,7 @@ type ScoredColumn struct { IndexedData *IndexedData `json:"indexedData,omitempty" url:"indexedData,omitempty"` extraProperties map[string]interface{} - _rawJSON json.RawMessage + rawJSON json.RawMessage } func (s *ScoredColumn) GetId() string { @@ -992,20 +968,18 @@ func (s *ScoredColumn) UnmarshalJSON(data []byte) error { return err } *s = ScoredColumn(value) - extraProperties, err := internal.ExtractExtraProperties(data, *s) if err != nil { return err } s.extraProperties = extraProperties - - s._rawJSON = json.RawMessage(data) + s.rawJSON = json.RawMessage(data) return nil } func (s *ScoredColumn) String() string { - if len(s._rawJSON) > 0 { - if value, err := internal.StringifyJSON(s._rawJSON); err == nil { + if len(s.rawJSON) > 0 { + if value, err := internal.StringifyJSON(s.rawJSON); err == nil { return value } } @@ -1017,7 +991,7 @@ func (s *ScoredColumn) String() string { type UpdateResponse struct { extraProperties map[string]interface{} - _rawJSON json.RawMessage + rawJSON json.RawMessage } func (u *UpdateResponse) GetExtraProperties() map[string]interface{} { @@ -1031,20 +1005,18 @@ func (u *UpdateResponse) UnmarshalJSON(data []byte) error { return err } *u = UpdateResponse(value) - extraProperties, err := internal.ExtractExtraProperties(data, *u) if err != nil { return err } u.extraProperties = extraProperties - - u._rawJSON = json.RawMessage(data) + u.rawJSON = json.RawMessage(data) return nil } func (u *UpdateResponse) String() string { - if len(u._rawJSON) > 0 { - if value, err := internal.StringifyJSON(u._rawJSON); err == nil { + if len(u.rawJSON) > 0 { + if value, err := internal.StringifyJSON(u.rawJSON); err == nil { return value } } @@ -1058,7 +1030,7 @@ type UploadResponse struct { Count *int `json:"count,omitempty" url:"count,omitempty"` extraProperties map[string]interface{} - _rawJSON json.RawMessage + rawJSON json.RawMessage } func (u *UploadResponse) GetCount() *int { @@ -1079,20 +1051,18 @@ func (u *UploadResponse) UnmarshalJSON(data []byte) error { return err } *u = UploadResponse(value) - extraProperties, err := internal.ExtractExtraProperties(data, *u) if err != nil { return err } u.extraProperties = extraProperties - - u._rawJSON = json.RawMessage(data) + u.rawJSON = json.RawMessage(data) return nil } func (u *UploadResponse) String() string { - if len(u._rawJSON) > 0 { - if value, err := internal.StringifyJSON(u._rawJSON); err == nil { + if len(u.rawJSON) > 0 { + if value, err := internal.StringifyJSON(u.rawJSON); err == nil { return value } } @@ -1106,7 +1076,7 @@ type Usage struct { Units *int `json:"units,omitempty" url:"units,omitempty"` extraProperties map[string]interface{} - _rawJSON json.RawMessage + rawJSON json.RawMessage } func (u *Usage) GetUnits() *int { @@ -1127,20 +1097,18 @@ func (u *Usage) UnmarshalJSON(data []byte) error { return err } *u = Usage(value) - extraProperties, err := internal.ExtractExtraProperties(data, *u) if err != nil { return err } u.extraProperties = extraProperties - - u._rawJSON = json.RawMessage(data) + u.rawJSON = json.RawMessage(data) return nil } func (u *Usage) String() string { - if len(u._rawJSON) > 0 { - if value, err := internal.StringifyJSON(u._rawJSON); err == nil { + if len(u.rawJSON) > 0 { + if value, err := internal.StringifyJSON(u.rawJSON); err == nil { return value } } diff --git a/seed/go-sdk/grpc-proto-exhaustive/dataservice/client.go b/seed/go-sdk/grpc-proto-exhaustive/dataservice/client.go index 9bfe63485d0..92e351eb460 100644 --- a/seed/go-sdk/grpc-proto-exhaustive/dataservice/client.go +++ b/seed/go-sdk/grpc-proto-exhaustive/dataservice/client.go @@ -37,17 +37,16 @@ func (c *Client) Upload( opts ...option.RequestOption, ) (*fern.UploadResponse, error) { options := core.NewRequestOptions(opts...) - - baseURL := "" - if c.baseURL != "" { - baseURL = c.baseURL - } - if options.BaseURL != "" { - baseURL = options.BaseURL - } + baseURL := internal.ResolveBaseURL( + options.BaseURL, + c.baseURL, + "", + ) endpointURL := baseURL + "/data" - - headers := internal.MergeHeaders(c.header.Clone(), options.ToHeader()) + headers := internal.MergeHeaders( + c.header.Clone(), + options.ToHeader(), + ) headers.Set("Content-Type", "application/json") var response *fern.UploadResponse @@ -56,8 +55,8 @@ func (c *Client) Upload( &internal.CallParams{ URL: endpointURL, Method: http.MethodPost, - MaxAttempts: options.MaxAttempts, Headers: headers, + MaxAttempts: options.MaxAttempts, BodyProperties: options.BodyProperties, QueryParameters: options.QueryParameters, Client: options.HTTPClient, @@ -76,17 +75,16 @@ func (c *Client) Delete( opts ...option.RequestOption, ) (*fern.DeleteResponse, error) { options := core.NewRequestOptions(opts...) - - baseURL := "" - if c.baseURL != "" { - baseURL = c.baseURL - } - if options.BaseURL != "" { - baseURL = options.BaseURL - } + baseURL := internal.ResolveBaseURL( + options.BaseURL, + c.baseURL, + "", + ) endpointURL := baseURL + "/data/delete" - - headers := internal.MergeHeaders(c.header.Clone(), options.ToHeader()) + headers := internal.MergeHeaders( + c.header.Clone(), + options.ToHeader(), + ) headers.Set("Content-Type", "application/json") var response *fern.DeleteResponse @@ -95,8 +93,8 @@ func (c *Client) Delete( &internal.CallParams{ URL: endpointURL, Method: http.MethodPost, - MaxAttempts: options.MaxAttempts, Headers: headers, + MaxAttempts: options.MaxAttempts, BodyProperties: options.BodyProperties, QueryParameters: options.QueryParameters, Client: options.HTTPClient, @@ -115,17 +113,16 @@ func (c *Client) Describe( opts ...option.RequestOption, ) (*fern.DescribeResponse, error) { options := core.NewRequestOptions(opts...) - - baseURL := "" - if c.baseURL != "" { - baseURL = c.baseURL - } - if options.BaseURL != "" { - baseURL = options.BaseURL - } + baseURL := internal.ResolveBaseURL( + options.BaseURL, + c.baseURL, + "", + ) endpointURL := baseURL + "/data/describe" - - headers := internal.MergeHeaders(c.header.Clone(), options.ToHeader()) + headers := internal.MergeHeaders( + c.header.Clone(), + options.ToHeader(), + ) headers.Set("Content-Type", "application/json") var response *fern.DescribeResponse @@ -134,8 +131,8 @@ func (c *Client) Describe( &internal.CallParams{ URL: endpointURL, Method: http.MethodPost, - MaxAttempts: options.MaxAttempts, Headers: headers, + MaxAttempts: options.MaxAttempts, BodyProperties: options.BodyProperties, QueryParameters: options.QueryParameters, Client: options.HTTPClient, @@ -154,16 +151,12 @@ func (c *Client) Fetch( opts ...option.RequestOption, ) (*fern.FetchResponse, error) { options := core.NewRequestOptions(opts...) - - baseURL := "" - if c.baseURL != "" { - baseURL = c.baseURL - } - if options.BaseURL != "" { - baseURL = options.BaseURL - } + baseURL := internal.ResolveBaseURL( + options.BaseURL, + c.baseURL, + "", + ) endpointURL := baseURL + "/data/fetch" - queryParams, err := internal.QueryValues(request) if err != nil { return nil, err @@ -171,8 +164,10 @@ func (c *Client) Fetch( if len(queryParams) > 0 { endpointURL += "?" + queryParams.Encode() } - - headers := internal.MergeHeaders(c.header.Clone(), options.ToHeader()) + headers := internal.MergeHeaders( + c.header.Clone(), + options.ToHeader(), + ) var response *fern.FetchResponse if err := c.caller.Call( @@ -180,8 +175,8 @@ func (c *Client) Fetch( &internal.CallParams{ URL: endpointURL, Method: http.MethodGet, - MaxAttempts: options.MaxAttempts, Headers: headers, + MaxAttempts: options.MaxAttempts, BodyProperties: options.BodyProperties, QueryParameters: options.QueryParameters, Client: options.HTTPClient, @@ -199,16 +194,12 @@ func (c *Client) List( opts ...option.RequestOption, ) (*fern.ListResponse, error) { options := core.NewRequestOptions(opts...) - - baseURL := "" - if c.baseURL != "" { - baseURL = c.baseURL - } - if options.BaseURL != "" { - baseURL = options.BaseURL - } + baseURL := internal.ResolveBaseURL( + options.BaseURL, + c.baseURL, + "", + ) endpointURL := baseURL + "/data/list" - queryParams, err := internal.QueryValues(request) if err != nil { return nil, err @@ -216,8 +207,10 @@ func (c *Client) List( if len(queryParams) > 0 { endpointURL += "?" + queryParams.Encode() } - - headers := internal.MergeHeaders(c.header.Clone(), options.ToHeader()) + headers := internal.MergeHeaders( + c.header.Clone(), + options.ToHeader(), + ) var response *fern.ListResponse if err := c.caller.Call( @@ -225,8 +218,8 @@ func (c *Client) List( &internal.CallParams{ URL: endpointURL, Method: http.MethodGet, - MaxAttempts: options.MaxAttempts, Headers: headers, + MaxAttempts: options.MaxAttempts, BodyProperties: options.BodyProperties, QueryParameters: options.QueryParameters, Client: options.HTTPClient, @@ -244,17 +237,16 @@ func (c *Client) Query( opts ...option.RequestOption, ) (*fern.QueryResponse, error) { options := core.NewRequestOptions(opts...) - - baseURL := "" - if c.baseURL != "" { - baseURL = c.baseURL - } - if options.BaseURL != "" { - baseURL = options.BaseURL - } + baseURL := internal.ResolveBaseURL( + options.BaseURL, + c.baseURL, + "", + ) endpointURL := baseURL + "/data/query" - - headers := internal.MergeHeaders(c.header.Clone(), options.ToHeader()) + headers := internal.MergeHeaders( + c.header.Clone(), + options.ToHeader(), + ) headers.Set("Content-Type", "application/json") var response *fern.QueryResponse @@ -263,8 +255,8 @@ func (c *Client) Query( &internal.CallParams{ URL: endpointURL, Method: http.MethodPost, - MaxAttempts: options.MaxAttempts, Headers: headers, + MaxAttempts: options.MaxAttempts, BodyProperties: options.BodyProperties, QueryParameters: options.QueryParameters, Client: options.HTTPClient, @@ -283,17 +275,16 @@ func (c *Client) Update( opts ...option.RequestOption, ) (*fern.UpdateResponse, error) { options := core.NewRequestOptions(opts...) - - baseURL := "" - if c.baseURL != "" { - baseURL = c.baseURL - } - if options.BaseURL != "" { - baseURL = options.BaseURL - } + baseURL := internal.ResolveBaseURL( + options.BaseURL, + c.baseURL, + "", + ) endpointURL := baseURL + "/data/update" - - headers := internal.MergeHeaders(c.header.Clone(), options.ToHeader()) + headers := internal.MergeHeaders( + c.header.Clone(), + options.ToHeader(), + ) headers.Set("Content-Type", "application/json") var response *fern.UpdateResponse @@ -302,8 +293,8 @@ func (c *Client) Update( &internal.CallParams{ URL: endpointURL, Method: http.MethodPost, - MaxAttempts: options.MaxAttempts, Headers: headers, + MaxAttempts: options.MaxAttempts, BodyProperties: options.BodyProperties, QueryParameters: options.QueryParameters, Client: options.HTTPClient, diff --git a/seed/go-sdk/grpc-proto-exhaustive/internal/caller.go b/seed/go-sdk/grpc-proto-exhaustive/internal/caller.go index 8ebdc9cc493..779b5dedb90 100644 --- a/seed/go-sdk/grpc-proto-exhaustive/internal/caller.go +++ b/seed/go-sdk/grpc-proto-exhaustive/internal/caller.go @@ -21,10 +21,6 @@ const ( contentTypeHeader = "Content-Type" ) -// ErrorDecoder decodes *http.Response errors and returns a -// typed API error (e.g. *core.APIError). -type ErrorDecoder func(statusCode int, body io.Reader) error - // Caller calls APIs and deserializes their response, if any. type Caller struct { client core.HTTPClient diff --git a/seed/go-sdk/grpc-proto-exhaustive/internal/error_decoder.go b/seed/go-sdk/grpc-proto-exhaustive/internal/error_decoder.go new file mode 100644 index 00000000000..da6b7c959a4 --- /dev/null +++ b/seed/go-sdk/grpc-proto-exhaustive/internal/error_decoder.go @@ -0,0 +1,45 @@ +package internal + +import ( + "bytes" + "encoding/json" + "errors" + "fmt" + "io" + + "github.com/grpc-proto-exhaustive/fern/core" +) + +// ErrorDecoder decodes *http.Response errors and returns a +// typed API error (e.g. *core.APIError). +type ErrorDecoder func(statusCode int, body io.Reader) error + +// ErrorCodes maps HTTP status codes to error constructors. +type ErrorCodes map[int]func(*core.APIError) error + +// NewErrorDecoder returns a new ErrorDecoder backed by the given error codes. +func NewErrorDecoder(errorCodes ErrorCodes) ErrorDecoder { + return func(statusCode int, body io.Reader) error { + raw, err := io.ReadAll(body) + if err != nil { + return fmt.Errorf("failed to read error from response body: %w", err) + } + apiError := core.NewAPIError( + statusCode, + errors.New(string(raw)), + ) + newErrorFunc, ok := errorCodes[statusCode] + if !ok { + // This status code isn't recognized, so we return + // the API error as-is. + return apiError + } + customError := newErrorFunc(apiError) + if err := json.NewDecoder(bytes.NewReader(raw)).Decode(customError); err != nil { + // If we fail to decode the error, we return the + // API error as-is. + return apiError + } + return customError + } +} diff --git a/seed/go-sdk/grpc-proto-exhaustive/internal/error_decoder_test.go b/seed/go-sdk/grpc-proto-exhaustive/internal/error_decoder_test.go new file mode 100644 index 00000000000..cb81d547a1c --- /dev/null +++ b/seed/go-sdk/grpc-proto-exhaustive/internal/error_decoder_test.go @@ -0,0 +1,55 @@ +package internal + +import ( + "bytes" + "errors" + "net/http" + "testing" + + "github.com/grpc-proto-exhaustive/fern/core" + "github.com/stretchr/testify/assert" +) + +func TestErrorDecoder(t *testing.T) { + decoder := NewErrorDecoder( + ErrorCodes{ + http.StatusNotFound: func(apiError *core.APIError) error { + return &NotFoundError{APIError: apiError} + }, + }) + + tests := []struct { + description string + giveStatusCode int + giveBody string + wantError error + }{ + { + description: "unrecognized status code", + giveStatusCode: http.StatusInternalServerError, + giveBody: "Internal Server Error", + wantError: core.NewAPIError(http.StatusInternalServerError, errors.New("Internal Server Error")), + }, + { + description: "not found with valid JSON", + giveStatusCode: http.StatusNotFound, + giveBody: `{"message": "Resource not found"}`, + wantError: &NotFoundError{ + APIError: core.NewAPIError(http.StatusNotFound, errors.New(`{"message": "Resource not found"}`)), + Message: "Resource not found", + }, + }, + { + description: "not found with invalid JSON", + giveStatusCode: http.StatusNotFound, + giveBody: `Resource not found`, + wantError: core.NewAPIError(http.StatusNotFound, errors.New("Resource not found")), + }, + } + + for _, tt := range tests { + t.Run(tt.description, func(t *testing.T) { + assert.Equal(t, tt.wantError, decoder(tt.giveStatusCode, bytes.NewReader([]byte(tt.giveBody)))) + }) + } +} diff --git a/seed/go-sdk/grpc-proto-exhaustive/internal/http.go b/seed/go-sdk/grpc-proto-exhaustive/internal/http.go index 2be0805a8be..768968bd621 100644 --- a/seed/go-sdk/grpc-proto-exhaustive/internal/http.go +++ b/seed/go-sdk/grpc-proto-exhaustive/internal/http.go @@ -11,6 +11,17 @@ type HTTPClient interface { Do(*http.Request) (*http.Response, error) } +// ResolveBaseURL resolves the base URL from the given arguments, +// preferring the first non-empty value. +func ResolveBaseURL(values ...string) string { + for _, value := range values { + if value != "" { + return value + } + } + return "" +} + // EncodeURL encodes the given arguments into the URL, escaping // values as needed. func EncodeURL(urlFormat string, args ...interface{}) string { diff --git a/seed/go-sdk/grpc-proto/internal/caller.go b/seed/go-sdk/grpc-proto/internal/caller.go index cfeebc21ef3..4ac43d30fe3 100644 --- a/seed/go-sdk/grpc-proto/internal/caller.go +++ b/seed/go-sdk/grpc-proto/internal/caller.go @@ -21,10 +21,6 @@ const ( contentTypeHeader = "Content-Type" ) -// ErrorDecoder decodes *http.Response errors and returns a -// typed API error (e.g. *core.APIError). -type ErrorDecoder func(statusCode int, body io.Reader) error - // Caller calls APIs and deserializes their response, if any. type Caller struct { client core.HTTPClient diff --git a/seed/go-sdk/grpc-proto/internal/error_decoder.go b/seed/go-sdk/grpc-proto/internal/error_decoder.go new file mode 100644 index 00000000000..b00fd3f8783 --- /dev/null +++ b/seed/go-sdk/grpc-proto/internal/error_decoder.go @@ -0,0 +1,45 @@ +package internal + +import ( + "bytes" + "encoding/json" + "errors" + "fmt" + "io" + + "github.com/grpc-proto/fern/core" +) + +// ErrorDecoder decodes *http.Response errors and returns a +// typed API error (e.g. *core.APIError). +type ErrorDecoder func(statusCode int, body io.Reader) error + +// ErrorCodes maps HTTP status codes to error constructors. +type ErrorCodes map[int]func(*core.APIError) error + +// NewErrorDecoder returns a new ErrorDecoder backed by the given error codes. +func NewErrorDecoder(errorCodes ErrorCodes) ErrorDecoder { + return func(statusCode int, body io.Reader) error { + raw, err := io.ReadAll(body) + if err != nil { + return fmt.Errorf("failed to read error from response body: %w", err) + } + apiError := core.NewAPIError( + statusCode, + errors.New(string(raw)), + ) + newErrorFunc, ok := errorCodes[statusCode] + if !ok { + // This status code isn't recognized, so we return + // the API error as-is. + return apiError + } + customError := newErrorFunc(apiError) + if err := json.NewDecoder(bytes.NewReader(raw)).Decode(customError); err != nil { + // If we fail to decode the error, we return the + // API error as-is. + return apiError + } + return customError + } +} diff --git a/seed/go-sdk/grpc-proto/internal/error_decoder_test.go b/seed/go-sdk/grpc-proto/internal/error_decoder_test.go new file mode 100644 index 00000000000..f305d7fef22 --- /dev/null +++ b/seed/go-sdk/grpc-proto/internal/error_decoder_test.go @@ -0,0 +1,55 @@ +package internal + +import ( + "bytes" + "errors" + "net/http" + "testing" + + "github.com/grpc-proto/fern/core" + "github.com/stretchr/testify/assert" +) + +func TestErrorDecoder(t *testing.T) { + decoder := NewErrorDecoder( + ErrorCodes{ + http.StatusNotFound: func(apiError *core.APIError) error { + return &NotFoundError{APIError: apiError} + }, + }) + + tests := []struct { + description string + giveStatusCode int + giveBody string + wantError error + }{ + { + description: "unrecognized status code", + giveStatusCode: http.StatusInternalServerError, + giveBody: "Internal Server Error", + wantError: core.NewAPIError(http.StatusInternalServerError, errors.New("Internal Server Error")), + }, + { + description: "not found with valid JSON", + giveStatusCode: http.StatusNotFound, + giveBody: `{"message": "Resource not found"}`, + wantError: &NotFoundError{ + APIError: core.NewAPIError(http.StatusNotFound, errors.New(`{"message": "Resource not found"}`)), + Message: "Resource not found", + }, + }, + { + description: "not found with invalid JSON", + giveStatusCode: http.StatusNotFound, + giveBody: `Resource not found`, + wantError: core.NewAPIError(http.StatusNotFound, errors.New("Resource not found")), + }, + } + + for _, tt := range tests { + t.Run(tt.description, func(t *testing.T) { + assert.Equal(t, tt.wantError, decoder(tt.giveStatusCode, bytes.NewReader([]byte(tt.giveBody)))) + }) + } +} diff --git a/seed/go-sdk/grpc-proto/internal/http.go b/seed/go-sdk/grpc-proto/internal/http.go index 2be0805a8be..768968bd621 100644 --- a/seed/go-sdk/grpc-proto/internal/http.go +++ b/seed/go-sdk/grpc-proto/internal/http.go @@ -11,6 +11,17 @@ type HTTPClient interface { Do(*http.Request) (*http.Response, error) } +// ResolveBaseURL resolves the base URL from the given arguments, +// preferring the first non-empty value. +func ResolveBaseURL(values ...string) string { + for _, value := range values { + if value != "" { + return value + } + } + return "" +} + // EncodeURL encodes the given arguments into the URL, escaping // values as needed. func EncodeURL(urlFormat string, args ...interface{}) string { diff --git a/seed/go-sdk/grpc-proto/userservice.go b/seed/go-sdk/grpc-proto/userservice.go index fb39ffb45e7..41894a1f5b3 100644 --- a/seed/go-sdk/grpc-proto/userservice.go +++ b/seed/go-sdk/grpc-proto/userservice.go @@ -20,7 +20,7 @@ type CreateResponse struct { User *UserModel `json:"user,omitempty" url:"user,omitempty"` extraProperties map[string]interface{} - _rawJSON json.RawMessage + rawJSON json.RawMessage } func (c *CreateResponse) GetUser() *UserModel { @@ -41,20 +41,18 @@ func (c *CreateResponse) UnmarshalJSON(data []byte) error { return err } *c = CreateResponse(value) - extraProperties, err := internal.ExtractExtraProperties(data, *c) if err != nil { return err } c.extraProperties = extraProperties - - c._rawJSON = json.RawMessage(data) + c.rawJSON = json.RawMessage(data) return nil } func (c *CreateResponse) String() string { - if len(c._rawJSON) > 0 { - if value, err := internal.StringifyJSON(c._rawJSON); err == nil { + if len(c.rawJSON) > 0 { + if value, err := internal.StringifyJSON(c.rawJSON); err == nil { return value } } @@ -237,7 +235,7 @@ type UserModel struct { Metadata *Metadata `json:"metadata,omitempty" url:"metadata,omitempty"` extraProperties map[string]interface{} - _rawJSON json.RawMessage + rawJSON json.RawMessage } func (u *UserModel) GetUsername() *string { @@ -286,20 +284,18 @@ func (u *UserModel) UnmarshalJSON(data []byte) error { return err } *u = UserModel(value) - extraProperties, err := internal.ExtractExtraProperties(data, *u) if err != nil { return err } u.extraProperties = extraProperties - - u._rawJSON = json.RawMessage(data) + u.rawJSON = json.RawMessage(data) return nil } func (u *UserModel) String() string { - if len(u._rawJSON) > 0 { - if value, err := internal.StringifyJSON(u._rawJSON); err == nil { + if len(u.rawJSON) > 0 { + if value, err := internal.StringifyJSON(u.rawJSON); err == nil { return value } } diff --git a/seed/go-sdk/grpc-proto/userservice/client.go b/seed/go-sdk/grpc-proto/userservice/client.go index 634cae165e2..e4b9cf7aa12 100644 --- a/seed/go-sdk/grpc-proto/userservice/client.go +++ b/seed/go-sdk/grpc-proto/userservice/client.go @@ -37,17 +37,16 @@ func (c *Client) Create( opts ...option.RequestOption, ) (*fern.CreateResponse, error) { options := core.NewRequestOptions(opts...) - - baseURL := "" - if c.baseURL != "" { - baseURL = c.baseURL - } - if options.BaseURL != "" { - baseURL = options.BaseURL - } + baseURL := internal.ResolveBaseURL( + options.BaseURL, + c.baseURL, + "", + ) endpointURL := baseURL + "/users" - - headers := internal.MergeHeaders(c.header.Clone(), options.ToHeader()) + headers := internal.MergeHeaders( + c.header.Clone(), + options.ToHeader(), + ) headers.Set("Content-Type", "application/json") var response *fern.CreateResponse @@ -56,8 +55,8 @@ func (c *Client) Create( &internal.CallParams{ URL: endpointURL, Method: http.MethodPost, - MaxAttempts: options.MaxAttempts, Headers: headers, + MaxAttempts: options.MaxAttempts, BodyProperties: options.BodyProperties, QueryParameters: options.QueryParameters, Client: options.HTTPClient, diff --git a/seed/go-sdk/validation/dynamic-snippets/example0/snippet.go b/seed/go-sdk/validation/dynamic-snippets/example0/snippet.go index 16c5c59efba..45e5c39c653 100644 --- a/seed/go-sdk/validation/dynamic-snippets/example0/snippet.go +++ b/seed/go-sdk/validation/dynamic-snippets/example0/snippet.go @@ -11,9 +11,9 @@ func do() () { client.Create( context.TODO(), &fern.CreateRequest{ - Decimal: 1.1, - Even: 1, - Name: "name", + Decimal: 2.2, + Even: 100, + Name: "foo", Shape: fern.ShapeSquare, }, ) diff --git a/seed/go-sdk/validation/dynamic-snippets/example1/snippet.go b/seed/go-sdk/validation/dynamic-snippets/example1/snippet.go index 79c6da84dba..5e6fac5a66a 100644 --- a/seed/go-sdk/validation/dynamic-snippets/example1/snippet.go +++ b/seed/go-sdk/validation/dynamic-snippets/example1/snippet.go @@ -11,9 +11,9 @@ func do() () { client.Get( context.TODO(), &fern.GetRequest{ - Decimal: 1.1, - Even: 1, - Name: "name", + Decimal: 2.2, + Even: 100, + Name: "foo", }, ) } diff --git a/seed/go-sdk/validation/snippet.json b/seed/go-sdk/validation/snippet.json index ba92f7fa1a9..3cc7fd65492 100644 --- a/seed/go-sdk/validation/snippet.json +++ b/seed/go-sdk/validation/snippet.json @@ -8,7 +8,7 @@ }, "snippet": { "type": "go", - "client": "import (\n\tcontext \"context\"\n\tfern \"github.com/validation/fern\"\n\tfernclient \"github.com/validation/fern/client\"\n)\n\nclient := fernclient.NewClient()\nresponse, err := client.Get(\n\tcontext.TODO(),\n\t\u0026fern.GetRequest{\n\t\tDecimal: 1.1,\n\t\tEven: 1,\n\t\tName: \"name\",\n\t},\n)\n" + "client": "import (\n\tcontext \"context\"\n\tfern \"github.com/validation/fern\"\n\tfernclient \"github.com/validation/fern/client\"\n)\n\nclient := fernclient.NewClient()\nresponse, err := client.Get(\n\tcontext.TODO(),\n\t\u0026fern.GetRequest{\n\t\tDecimal: 2.2,\n\t\tEven: 100,\n\t\tName: \"foo\",\n\t},\n)\n" } }, { @@ -19,7 +19,7 @@ }, "snippet": { "type": "go", - "client": "import (\n\tcontext \"context\"\n\tfern \"github.com/validation/fern\"\n\tfernclient \"github.com/validation/fern/client\"\n)\n\nclient := fernclient.NewClient()\nresponse, err := client.Create(\n\tcontext.TODO(),\n\t\u0026fern.CreateRequest{\n\t\tDecimal: 1.1,\n\t\tEven: 1,\n\t\tName: \"name\",\n\t\tShape: fern.ShapeSquare,\n\t},\n)\n" + "client": "import (\n\tcontext \"context\"\n\tfern \"github.com/validation/fern\"\n\tfernclient \"github.com/validation/fern/client\"\n)\n\nclient := fernclient.NewClient()\nresponse, err := client.Create(\n\tcontext.TODO(),\n\t\u0026fern.CreateRequest{\n\t\tDecimal: 2.2,\n\t\tEven: 100,\n\t\tName: \"foo\",\n\t\tShape: fern.ShapeSquare,\n\t},\n)\n" } } ] diff --git a/seed/java-model/examples/.mock/definition/.service.yml.swp b/seed/java-model/examples/.mock/definition/.service.yml.swp new file mode 100644 index 0000000000000000000000000000000000000000..07f2f5e8b68e9f16be16aedf57b5772eadadacd1 GIT binary patch literal 12288 zcmeI2yK59d9LML<`G`hE8wDpCg3aDt6hYSqBp5=9BQa_aQDp9Ra<{lIcjsab(NyUy zY*bJy8ygEdA7Ei)C05#4q|v{?BDQ|_d6SFrz)txse6lz1-|w@t2S=t}ou97pljSPI zHN@D5rw5yRUws}pa=yfbBbVape%CnqMMh0DCVc;fF&p}2$8QK{!?3&Ygq4PG$;yHZ zz4VWgkuof~V0*T*eJ@IDMPNr2xg^}ckx`}FT#013Xg6fJ<8GXP!-7;n2FQSBV2~X< zI+ncZhYt<&J-aVyZS;{0kO4A42FL&zAOmE843L5U-GB;8Y#B)oWQm^0?xmi4R-_vl zAOmE843GgbKnBPF86X2>fDDiUGVl)?5Ef%2TNyjB4Z-98|M~C#pF0`*4!(h};3Iek zUV>-fK8V0oa0U#6U0`hoW1qlV@CZBvDfDDiU zGC&4&13bAx83j0(Dow6BfsD#?S()X{H`_SEnzv5a%}Gz$s*^PbLbXg@soPCM>h-Qv zE#ETv?97FWN!Lawg_6Z^lVua6tJHm~WAc$Sf|^vq5=xY3JgN060@dm`zif=pP8;(w zjBvWv + content-type: application/json types: Id: string diff --git a/seed/java-model/license/.github/workflows/ci.yml b/seed/java-model/license/.github/workflows/ci.yml new file mode 100644 index 00000000000..8598a73092a --- /dev/null +++ b/seed/java-model/license/.github/workflows/ci.yml @@ -0,0 +1,61 @@ +name: ci + +on: [push] + +jobs: + compile: + runs-on: ubuntu-latest + + steps: + - name: Checkout repo + uses: actions/checkout@v3 + + - name: Set up Java + id: setup-jre + uses: actions/setup-java@v1 + with: + java-version: "11" + architecture: x64 + + - name: Compile + run: ./gradlew compileJava + + test: + needs: [ compile ] + runs-on: ubuntu-latest + steps: + - name: Checkout repo + uses: actions/checkout@v3 + + - name: Set up Java + id: setup-jre + uses: actions/setup-java@v1 + with: + java-version: "11" + architecture: x64 + + - name: Test + run: ./gradlew test + publish: + needs: [ compile, test ] + if: github.event_name == 'push' && contains(github.ref, 'refs/tags/') + runs-on: ubuntu-latest + + steps: + - name: Checkout repo + uses: actions/checkout@v3 + + - name: Set up Java + id: setup-jre + uses: actions/setup-java@v1 + with: + java-version: "11" + architecture: x64 + + - name: Publish to maven + run: | + ./gradlew publish + env: + MAVEN_USERNAME: ${{ secrets.MAVEN_USERNAME }} + MAVEN_PASSWORD: ${{ secrets.MAVEN_PASSWORD }} + MAVEN_PUBLISH_REGISTRY_URL: "" diff --git a/seed/java-model/license/.gitignore b/seed/java-model/license/.gitignore new file mode 100644 index 00000000000..d4199abc2cd --- /dev/null +++ b/seed/java-model/license/.gitignore @@ -0,0 +1,24 @@ +*.class +.project +.gradle +? +.classpath +.checkstyle +.settings +.node +build + +# IntelliJ +*.iml +*.ipr +*.iws +.idea/ +out/ + +# Eclipse/IntelliJ APT +generated_src/ +generated_testSrc/ +generated/ + +bin +build \ No newline at end of file diff --git a/seed/java-model/license/.mock/definition/__package__.yml b/seed/java-model/license/.mock/definition/__package__.yml new file mode 100644 index 00000000000..b1e4d4a878f --- /dev/null +++ b/seed/java-model/license/.mock/definition/__package__.yml @@ -0,0 +1,13 @@ +types: + Type: + docs: A simple type with just a name. + properties: + name: string + +service: + auth: false + base-path: / + endpoints: + get: + path: "/" + method: GET diff --git a/seed/java-model/license/.mock/definition/api.yml b/seed/java-model/license/.mock/definition/api.yml new file mode 100644 index 00000000000..5523ff1f181 --- /dev/null +++ b/seed/java-model/license/.mock/definition/api.yml @@ -0,0 +1 @@ +name: license diff --git a/seed/java-model/license/.mock/fern.config.json b/seed/java-model/license/.mock/fern.config.json new file mode 100644 index 00000000000..4c8e54ac313 --- /dev/null +++ b/seed/java-model/license/.mock/fern.config.json @@ -0,0 +1 @@ +{"organization": "fern-test", "version": "*"} \ No newline at end of file diff --git a/seed/java-model/license/.mock/generators.yml b/seed/java-model/license/.mock/generators.yml new file mode 100644 index 00000000000..0967ef424bc --- /dev/null +++ b/seed/java-model/license/.mock/generators.yml @@ -0,0 +1 @@ +{} diff --git a/seed/java-model/license/build.gradle b/seed/java-model/license/build.gradle new file mode 100644 index 00000000000..7493b275aa8 --- /dev/null +++ b/seed/java-model/license/build.gradle @@ -0,0 +1,67 @@ +plugins { + id 'java-library' + id 'maven-publish' + id 'com.diffplug.spotless' version '6.11.0' +} + +repositories { + mavenCentral() + maven { + url 'https://s01.oss.sonatype.org/content/repositories/releases/' + } +} + +dependencies { + api 'com.fasterxml.jackson.core:jackson-databind:2.17.2' + api 'com.fasterxml.jackson.datatype:jackson-datatype-jdk8:2.17.2' + api 'com.fasterxml.jackson.datatype:jackson-datatype-jsr310:2.17.2' +} + + +sourceCompatibility = 1.8 +targetCompatibility = 1.8 + +spotless { + java { + palantirJavaFormat() + } +} + +java { + withSourcesJar() + withJavadocJar() +} + +test { + useJUnitPlatform() + testLogging { + showStandardStreams = true + } +} +publishing { + publications { + maven(MavenPublication) { + groupId = 'com.fern' + artifactId = 'license' + version = '0.0.1' + from components.java + pom { + scm { + connection = 'scm:git:git://github.com/license/fern.git' + developerConnection = 'scm:git:git://github.com/license/fern.git' + url = 'https://github.com/license/fern' + } + } + } + } + repositories { + maven { + url "$System.env.MAVEN_PUBLISH_REGISTRY_URL" + credentials { + username "$System.env.MAVEN_USERNAME" + password "$System.env.MAVEN_PASSWORD" + } + } + } +} + diff --git a/seed/java-model/license/settings.gradle b/seed/java-model/license/settings.gradle new file mode 100644 index 00000000000..e69de29bb2d diff --git a/seed/java-model/license/snippet-templates.json b/seed/java-model/license/snippet-templates.json new file mode 100644 index 00000000000..e69de29bb2d diff --git a/seed/java-model/license/snippet.json b/seed/java-model/license/snippet.json new file mode 100644 index 00000000000..e69de29bb2d diff --git a/seed/java-model/license/src/main/java/com/seed/license/core/DateTimeDeserializer.java b/seed/java-model/license/src/main/java/com/seed/license/core/DateTimeDeserializer.java new file mode 100644 index 00000000000..d40c7d4dcfe --- /dev/null +++ b/seed/java-model/license/src/main/java/com/seed/license/core/DateTimeDeserializer.java @@ -0,0 +1,55 @@ +/** + * This file was auto-generated by Fern from our API Definition. + */ +package com.seed.license.core; + +import com.fasterxml.jackson.core.JsonParser; +import com.fasterxml.jackson.core.JsonToken; +import com.fasterxml.jackson.databind.DeserializationContext; +import com.fasterxml.jackson.databind.JsonDeserializer; +import com.fasterxml.jackson.databind.module.SimpleModule; +import java.io.IOException; +import java.time.Instant; +import java.time.LocalDateTime; +import java.time.OffsetDateTime; +import java.time.ZoneOffset; +import java.time.format.DateTimeFormatter; +import java.time.temporal.TemporalAccessor; +import java.time.temporal.TemporalQueries; + +/** + * Custom deserializer that handles converting ISO8601 dates into {@link OffsetDateTime} objects. + */ +class DateTimeDeserializer extends JsonDeserializer { + private static final SimpleModule MODULE; + + static { + MODULE = new SimpleModule().addDeserializer(OffsetDateTime.class, new DateTimeDeserializer()); + } + + /** + * Gets a module wrapping this deserializer as an adapter for the Jackson ObjectMapper. + * + * @return A {@link SimpleModule} to be plugged onto Jackson ObjectMapper. + */ + public static SimpleModule getModule() { + return MODULE; + } + + @Override + public OffsetDateTime deserialize(JsonParser parser, DeserializationContext context) throws IOException { + JsonToken token = parser.currentToken(); + if (token == JsonToken.VALUE_NUMBER_INT) { + return OffsetDateTime.ofInstant(Instant.ofEpochSecond(parser.getValueAsLong()), ZoneOffset.UTC); + } else { + TemporalAccessor temporal = DateTimeFormatter.ISO_DATE_TIME.parseBest( + parser.getValueAsString(), OffsetDateTime::from, LocalDateTime::from); + + if (temporal.query(TemporalQueries.offset()) == null) { + return LocalDateTime.from(temporal).atOffset(ZoneOffset.UTC); + } else { + return OffsetDateTime.from(temporal); + } + } + } +} diff --git a/seed/java-model/license/src/main/java/com/seed/license/core/ObjectMappers.java b/seed/java-model/license/src/main/java/com/seed/license/core/ObjectMappers.java new file mode 100644 index 00000000000..8b4851fb4b6 --- /dev/null +++ b/seed/java-model/license/src/main/java/com/seed/license/core/ObjectMappers.java @@ -0,0 +1,36 @@ +/** + * This file was auto-generated by Fern from our API Definition. + */ +package com.seed.license.core; + +import com.fasterxml.jackson.annotation.JsonInclude; +import com.fasterxml.jackson.databind.DeserializationFeature; +import com.fasterxml.jackson.databind.ObjectMapper; +import com.fasterxml.jackson.databind.SerializationFeature; +import com.fasterxml.jackson.databind.json.JsonMapper; +import com.fasterxml.jackson.datatype.jdk8.Jdk8Module; +import com.fasterxml.jackson.datatype.jsr310.JavaTimeModule; +import java.io.IOException; + +public final class ObjectMappers { + public static final ObjectMapper JSON_MAPPER = JsonMapper.builder() + .addModule(new Jdk8Module()) + .addModule(new JavaTimeModule()) + .addModule(DateTimeDeserializer.getModule()) + .disable(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES) + .disable(SerializationFeature.WRITE_DATES_AS_TIMESTAMPS) + .build(); + + private ObjectMappers() {} + + public static String stringify(Object o) { + try { + return JSON_MAPPER + .setSerializationInclusion(JsonInclude.Include.ALWAYS) + .writerWithDefaultPrettyPrinter() + .writeValueAsString(o); + } catch (IOException e) { + return o.getClass().getName() + "@" + Integer.toHexString(o.hashCode()); + } + } +} diff --git a/seed/java-model/license/src/main/java/com/seed/license/model/Type.java b/seed/java-model/license/src/main/java/com/seed/license/model/Type.java new file mode 100644 index 00000000000..990813048a9 --- /dev/null +++ b/seed/java-model/license/src/main/java/com/seed/license/model/Type.java @@ -0,0 +1,86 @@ +/** + * This file was auto-generated by Fern from our API Definition. + */ +package com.seed.license.model; + +import com.fasterxml.jackson.annotation.JsonIgnoreProperties; +import com.fasterxml.jackson.annotation.JsonInclude; +import com.fasterxml.jackson.annotation.JsonProperty; +import com.fasterxml.jackson.annotation.JsonSetter; +import com.fasterxml.jackson.databind.annotation.JsonDeserialize; +import com.seed.license.core.ObjectMappers; +import java.util.Objects; + +@JsonInclude(JsonInclude.Include.NON_ABSENT) +@JsonDeserialize(builder = Type.Builder.class) +public final class Type { + private final String name; + + private Type(String name) { + this.name = name; + } + + @JsonProperty("name") + public String getName() { + return name; + } + + @java.lang.Override + public boolean equals(Object other) { + if (this == other) return true; + return other instanceof Type && equalTo((Type) other); + } + + private boolean equalTo(Type other) { + return name.equals(other.name); + } + + @java.lang.Override + public int hashCode() { + return Objects.hash(this.name); + } + + @java.lang.Override + public String toString() { + return ObjectMappers.stringify(this); + } + + public static NameStage builder() { + return new Builder(); + } + + public interface NameStage { + _FinalStage name(String name); + + Builder from(Type other); + } + + public interface _FinalStage { + Type build(); + } + + @JsonIgnoreProperties(ignoreUnknown = true) + public static final class Builder implements NameStage, _FinalStage { + private String name; + + private Builder() {} + + @java.lang.Override + public Builder from(Type other) { + name(other.getName()); + return this; + } + + @java.lang.Override + @JsonSetter("name") + public _FinalStage name(String name) { + this.name = Objects.requireNonNull(name, "name must not be null"); + return this; + } + + @java.lang.Override + public Type build() { + return new Type(name); + } + } +} diff --git a/seed/java-model/pagination/.mock/definition/users.yml b/seed/java-model/pagination/.mock/definition/users.yml index ecde10ef707..ddc0bc1848b 100644 --- a/seed/java-model/pagination/.mock/definition/users.yml +++ b/seed/java-model/pagination/.mock/definition/users.yml @@ -1,9 +1,9 @@ imports: root: __package__.yml -types: - Order: - enum: +types: + Order: + enum: - asc - desc @@ -15,8 +15,8 @@ types: properties: cursor: optional - UserListContainer: - properties: + UserListContainer: + properties: users: list UserPage: @@ -24,60 +24,59 @@ types: data: UserListContainer next: optional - UserOptionalListContainer: - properties: + UserOptionalListContainer: + properties: users: optional> UserOptionalListPage: properties: data: UserOptionalListContainer next: optional - UsernameContainer: properties: results: list - ListUsersExtendedResponse: + ListUsersExtendedResponse: extends: - UserPage properties: - total_count: + total_count: type: integer docs: The totall number of /users - ListUsersExtendedOptionalListResponse: + ListUsersExtendedOptionalListResponse: extends: - UserOptionalListPage properties: - total_count: + total_count: type: integer docs: The totall number of /users - - ListUsersPaginationResponse: - properties: + + ListUsersPaginationResponse: + properties: hasNextPage: optional page: optional - total_count: + total_count: type: integer docs: The totall number of /users data: list - Page: - properties: - page: + Page: + properties: + page: type: integer docs: The current page next: optional per_page: integer total_page: integer - NextPage: - properties: + NextPage: + properties: page: integer starting_after: string - User: - properties: + User: + properties: name: string id: integer @@ -86,7 +85,7 @@ service: base-path: /users endpoints: listWithCursorPagination: - pagination: + pagination: cursor: $request.starting_after next_cursor: $response.page.next.starting_after results: $response.data @@ -95,41 +94,41 @@ service: request: name: ListUsersCursorPaginationRequest query-parameters: - page: + page: type: optional docs: Defaults to first page - per_page: + per_page: type: optional docs: Defaults to per page - order: - type: optional - starting_after: + order: + type: optional + starting_after: type: optional - docs: | - The cursor used for pagination in order to fetch + docs: | + The cursor used for pagination in order to fetch the next page of results. response: ListUsersPaginationResponse listWithBodyCursorPagination: - pagination: + pagination: cursor: $request.pagination.cursor next_cursor: $response.page.next.starting_after results: $response.data method: POST path: "" - request: + request: name: ListUsersBodyCursorPaginationRequest - body: + body: properties: - pagination: + pagination: type: optional - docs: | + docs: | The object that contains the cursor used for pagination in order to fetch the next page of results. response: ListUsersPaginationResponse listWithOffsetPagination: - pagination: + pagination: offset: $request.page results: $response.data method: GET @@ -137,38 +136,37 @@ service: request: name: ListUsersOffsetPaginationRequest query-parameters: - page: + page: type: optional docs: Defaults to first page - per_page: + per_page: type: optional docs: Defaults to per page - order: - type: optional - starting_after: + order: + type: optional + starting_after: type: optional - docs: | - The cursor used for pagination in order to fetch + docs: | + The cursor used for pagination in order to fetch the next page of results. response: ListUsersPaginationResponse listWithBodyOffsetPagination: - pagination: + pagination: offset: $request.pagination.page results: $response.data method: POST path: "" - request: + request: name: ListUsersBodyOffsetPaginationRequest - body: + body: properties: - pagination: + pagination: type: optional - docs: | + docs: | The object that contains the offset used for pagination in order to fetch the next page of results. response: ListUsersPaginationResponse - listWithOffsetStepPagination: pagination: offset: $request.page @@ -191,8 +189,8 @@ service: order: type: optional response: ListUsersPaginationResponse - - listWithOffsetPaginationHasNextPage: + + listWithOffsetPaginationHasNextPage: pagination: offset: $request.page results: $response.data @@ -217,7 +215,7 @@ service: response: ListUsersPaginationResponse listWithExtendedResults: - pagination: + pagination: cursor: $request.cursor next_cursor: $response.next results: $response.data.users @@ -230,7 +228,7 @@ service: response: ListUsersExtendedResponse listWithExtendedResultsAndOptionalData: - pagination: + pagination: cursor: $request.cursor next_cursor: $response.next results: $response.data.users @@ -243,7 +241,7 @@ service: response: ListUsersExtendedOptionalListResponse listUsernames: - pagination: + pagination: cursor: $request.starting_after next_cursor: $response.cursor.after results: $response.cursor.data @@ -252,10 +250,10 @@ service: request: name: ListUsernamesRequest query-parameters: - starting_after: + starting_after: type: optional - docs: | - The cursor used for pagination in order to fetch + docs: | + The cursor used for pagination in order to fetch the next page of results. response: root.UsernameCursor @@ -266,6 +264,6 @@ service: request: name: ListWithGlobalConfigRequest query-parameters: - offset: + offset: type: optional response: UsernameContainer \ No newline at end of file diff --git a/seed/java-model/server-sent-event-examples/.github/workflows/ci.yml b/seed/java-model/server-sent-event-examples/.github/workflows/ci.yml new file mode 100644 index 00000000000..8598a73092a --- /dev/null +++ b/seed/java-model/server-sent-event-examples/.github/workflows/ci.yml @@ -0,0 +1,61 @@ +name: ci + +on: [push] + +jobs: + compile: + runs-on: ubuntu-latest + + steps: + - name: Checkout repo + uses: actions/checkout@v3 + + - name: Set up Java + id: setup-jre + uses: actions/setup-java@v1 + with: + java-version: "11" + architecture: x64 + + - name: Compile + run: ./gradlew compileJava + + test: + needs: [ compile ] + runs-on: ubuntu-latest + steps: + - name: Checkout repo + uses: actions/checkout@v3 + + - name: Set up Java + id: setup-jre + uses: actions/setup-java@v1 + with: + java-version: "11" + architecture: x64 + + - name: Test + run: ./gradlew test + publish: + needs: [ compile, test ] + if: github.event_name == 'push' && contains(github.ref, 'refs/tags/') + runs-on: ubuntu-latest + + steps: + - name: Checkout repo + uses: actions/checkout@v3 + + - name: Set up Java + id: setup-jre + uses: actions/setup-java@v1 + with: + java-version: "11" + architecture: x64 + + - name: Publish to maven + run: | + ./gradlew publish + env: + MAVEN_USERNAME: ${{ secrets.MAVEN_USERNAME }} + MAVEN_PASSWORD: ${{ secrets.MAVEN_PASSWORD }} + MAVEN_PUBLISH_REGISTRY_URL: "" diff --git a/seed/java-model/server-sent-event-examples/.gitignore b/seed/java-model/server-sent-event-examples/.gitignore new file mode 100644 index 00000000000..d4199abc2cd --- /dev/null +++ b/seed/java-model/server-sent-event-examples/.gitignore @@ -0,0 +1,24 @@ +*.class +.project +.gradle +? +.classpath +.checkstyle +.settings +.node +build + +# IntelliJ +*.iml +*.ipr +*.iws +.idea/ +out/ + +# Eclipse/IntelliJ APT +generated_src/ +generated_testSrc/ +generated/ + +bin +build \ No newline at end of file diff --git a/seed/java-model/server-sent-event-examples/.mock/definition/api.yml b/seed/java-model/server-sent-event-examples/.mock/definition/api.yml new file mode 100644 index 00000000000..80e84c41785 --- /dev/null +++ b/seed/java-model/server-sent-event-examples/.mock/definition/api.yml @@ -0,0 +1 @@ +name: server-sent-events diff --git a/seed/java-model/server-sent-event-examples/.mock/definition/completions.yml b/seed/java-model/server-sent-event-examples/.mock/definition/completions.yml new file mode 100644 index 00000000000..09a88253331 --- /dev/null +++ b/seed/java-model/server-sent-event-examples/.mock/definition/completions.yml @@ -0,0 +1,36 @@ +types: + StreamedCompletion: + properties: + delta: string + tokens: optional + +service: + auth: false + base-path: "" + endpoints: + stream: + method: POST + path: /stream + request: + name: StreamCompletionRequest + body: + properties: + query: string + response-stream: + type: StreamedCompletion + format: sse + terminator: "[[DONE]]" + examples: + - name: "Stream completions" + request: + query: "foo" + response: + stream: + - event: discriminant-1 + data: + delta: "foo" + tokens: 1 + - event: discriminant-2 + data: + delta: "bar" + tokens: 2 diff --git a/seed/java-model/server-sent-event-examples/.mock/fern.config.json b/seed/java-model/server-sent-event-examples/.mock/fern.config.json new file mode 100644 index 00000000000..4c8e54ac313 --- /dev/null +++ b/seed/java-model/server-sent-event-examples/.mock/fern.config.json @@ -0,0 +1 @@ +{"organization": "fern-test", "version": "*"} \ No newline at end of file diff --git a/seed/java-model/server-sent-event-examples/.mock/generators.yml b/seed/java-model/server-sent-event-examples/.mock/generators.yml new file mode 100644 index 00000000000..0967ef424bc --- /dev/null +++ b/seed/java-model/server-sent-event-examples/.mock/generators.yml @@ -0,0 +1 @@ +{} diff --git a/seed/java-model/server-sent-event-examples/build.gradle b/seed/java-model/server-sent-event-examples/build.gradle new file mode 100644 index 00000000000..9258eb95238 --- /dev/null +++ b/seed/java-model/server-sent-event-examples/build.gradle @@ -0,0 +1,67 @@ +plugins { + id 'java-library' + id 'maven-publish' + id 'com.diffplug.spotless' version '6.11.0' +} + +repositories { + mavenCentral() + maven { + url 'https://s01.oss.sonatype.org/content/repositories/releases/' + } +} + +dependencies { + api 'com.fasterxml.jackson.core:jackson-databind:2.17.2' + api 'com.fasterxml.jackson.datatype:jackson-datatype-jdk8:2.17.2' + api 'com.fasterxml.jackson.datatype:jackson-datatype-jsr310:2.17.2' +} + + +sourceCompatibility = 1.8 +targetCompatibility = 1.8 + +spotless { + java { + palantirJavaFormat() + } +} + +java { + withSourcesJar() + withJavadocJar() +} + +test { + useJUnitPlatform() + testLogging { + showStandardStreams = true + } +} +publishing { + publications { + maven(MavenPublication) { + groupId = 'com.fern' + artifactId = 'server-sent-event-examples' + version = '0.0.1' + from components.java + pom { + scm { + connection = 'scm:git:git://github.com/server-sent-event-examples/fern.git' + developerConnection = 'scm:git:git://github.com/server-sent-event-examples/fern.git' + url = 'https://github.com/server-sent-event-examples/fern' + } + } + } + } + repositories { + maven { + url "$System.env.MAVEN_PUBLISH_REGISTRY_URL" + credentials { + username "$System.env.MAVEN_USERNAME" + password "$System.env.MAVEN_PASSWORD" + } + } + } +} + diff --git a/seed/java-model/server-sent-event-examples/settings.gradle b/seed/java-model/server-sent-event-examples/settings.gradle new file mode 100644 index 00000000000..e69de29bb2d diff --git a/seed/java-model/server-sent-event-examples/snippet-templates.json b/seed/java-model/server-sent-event-examples/snippet-templates.json new file mode 100644 index 00000000000..e69de29bb2d diff --git a/seed/java-model/server-sent-event-examples/snippet.json b/seed/java-model/server-sent-event-examples/snippet.json new file mode 100644 index 00000000000..e69de29bb2d diff --git a/seed/java-model/server-sent-event-examples/src/main/java/com/seed/serverSentEvents/core/DateTimeDeserializer.java b/seed/java-model/server-sent-event-examples/src/main/java/com/seed/serverSentEvents/core/DateTimeDeserializer.java new file mode 100644 index 00000000000..180511c8a53 --- /dev/null +++ b/seed/java-model/server-sent-event-examples/src/main/java/com/seed/serverSentEvents/core/DateTimeDeserializer.java @@ -0,0 +1,55 @@ +/** + * This file was auto-generated by Fern from our API Definition. + */ +package com.seed.serverSentEvents.core; + +import com.fasterxml.jackson.core.JsonParser; +import com.fasterxml.jackson.core.JsonToken; +import com.fasterxml.jackson.databind.DeserializationContext; +import com.fasterxml.jackson.databind.JsonDeserializer; +import com.fasterxml.jackson.databind.module.SimpleModule; +import java.io.IOException; +import java.time.Instant; +import java.time.LocalDateTime; +import java.time.OffsetDateTime; +import java.time.ZoneOffset; +import java.time.format.DateTimeFormatter; +import java.time.temporal.TemporalAccessor; +import java.time.temporal.TemporalQueries; + +/** + * Custom deserializer that handles converting ISO8601 dates into {@link OffsetDateTime} objects. + */ +class DateTimeDeserializer extends JsonDeserializer { + private static final SimpleModule MODULE; + + static { + MODULE = new SimpleModule().addDeserializer(OffsetDateTime.class, new DateTimeDeserializer()); + } + + /** + * Gets a module wrapping this deserializer as an adapter for the Jackson ObjectMapper. + * + * @return A {@link SimpleModule} to be plugged onto Jackson ObjectMapper. + */ + public static SimpleModule getModule() { + return MODULE; + } + + @Override + public OffsetDateTime deserialize(JsonParser parser, DeserializationContext context) throws IOException { + JsonToken token = parser.currentToken(); + if (token == JsonToken.VALUE_NUMBER_INT) { + return OffsetDateTime.ofInstant(Instant.ofEpochSecond(parser.getValueAsLong()), ZoneOffset.UTC); + } else { + TemporalAccessor temporal = DateTimeFormatter.ISO_DATE_TIME.parseBest( + parser.getValueAsString(), OffsetDateTime::from, LocalDateTime::from); + + if (temporal.query(TemporalQueries.offset()) == null) { + return LocalDateTime.from(temporal).atOffset(ZoneOffset.UTC); + } else { + return OffsetDateTime.from(temporal); + } + } + } +} diff --git a/seed/java-model/server-sent-event-examples/src/main/java/com/seed/serverSentEvents/core/ObjectMappers.java b/seed/java-model/server-sent-event-examples/src/main/java/com/seed/serverSentEvents/core/ObjectMappers.java new file mode 100644 index 00000000000..f0bd140fc48 --- /dev/null +++ b/seed/java-model/server-sent-event-examples/src/main/java/com/seed/serverSentEvents/core/ObjectMappers.java @@ -0,0 +1,36 @@ +/** + * This file was auto-generated by Fern from our API Definition. + */ +package com.seed.serverSentEvents.core; + +import com.fasterxml.jackson.annotation.JsonInclude; +import com.fasterxml.jackson.databind.DeserializationFeature; +import com.fasterxml.jackson.databind.ObjectMapper; +import com.fasterxml.jackson.databind.SerializationFeature; +import com.fasterxml.jackson.databind.json.JsonMapper; +import com.fasterxml.jackson.datatype.jdk8.Jdk8Module; +import com.fasterxml.jackson.datatype.jsr310.JavaTimeModule; +import java.io.IOException; + +public final class ObjectMappers { + public static final ObjectMapper JSON_MAPPER = JsonMapper.builder() + .addModule(new Jdk8Module()) + .addModule(new JavaTimeModule()) + .addModule(DateTimeDeserializer.getModule()) + .disable(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES) + .disable(SerializationFeature.WRITE_DATES_AS_TIMESTAMPS) + .build(); + + private ObjectMappers() {} + + public static String stringify(Object o) { + try { + return JSON_MAPPER + .setSerializationInclusion(JsonInclude.Include.ALWAYS) + .writerWithDefaultPrettyPrinter() + .writeValueAsString(o); + } catch (IOException e) { + return o.getClass().getName() + "@" + Integer.toHexString(o.hashCode()); + } + } +} diff --git a/seed/java-model/server-sent-event-examples/src/main/java/com/seed/serverSentEvents/model/completions/StreamedCompletion.java b/seed/java-model/server-sent-event-examples/src/main/java/com/seed/serverSentEvents/model/completions/StreamedCompletion.java new file mode 100644 index 00000000000..b271add6f6f --- /dev/null +++ b/seed/java-model/server-sent-event-examples/src/main/java/com/seed/serverSentEvents/model/completions/StreamedCompletion.java @@ -0,0 +1,116 @@ +/** + * This file was auto-generated by Fern from our API Definition. + */ +package com.seed.serverSentEvents.model.completions; + +import com.fasterxml.jackson.annotation.JsonIgnoreProperties; +import com.fasterxml.jackson.annotation.JsonInclude; +import com.fasterxml.jackson.annotation.JsonProperty; +import com.fasterxml.jackson.annotation.JsonSetter; +import com.fasterxml.jackson.annotation.Nulls; +import com.fasterxml.jackson.databind.annotation.JsonDeserialize; +import com.seed.serverSentEvents.core.ObjectMappers; +import java.util.Objects; +import java.util.Optional; + +@JsonInclude(JsonInclude.Include.NON_ABSENT) +@JsonDeserialize(builder = StreamedCompletion.Builder.class) +public final class StreamedCompletion { + private final String delta; + + private final Optional tokens; + + private StreamedCompletion(String delta, Optional tokens) { + this.delta = delta; + this.tokens = tokens; + } + + @JsonProperty("delta") + public String getDelta() { + return delta; + } + + @JsonProperty("tokens") + public Optional getTokens() { + return tokens; + } + + @java.lang.Override + public boolean equals(Object other) { + if (this == other) return true; + return other instanceof StreamedCompletion && equalTo((StreamedCompletion) other); + } + + private boolean equalTo(StreamedCompletion other) { + return delta.equals(other.delta) && tokens.equals(other.tokens); + } + + @java.lang.Override + public int hashCode() { + return Objects.hash(this.delta, this.tokens); + } + + @java.lang.Override + public String toString() { + return ObjectMappers.stringify(this); + } + + public static DeltaStage builder() { + return new Builder(); + } + + public interface DeltaStage { + _FinalStage delta(String delta); + + Builder from(StreamedCompletion other); + } + + public interface _FinalStage { + StreamedCompletion build(); + + _FinalStage tokens(Optional tokens); + + _FinalStage tokens(Integer tokens); + } + + @JsonIgnoreProperties(ignoreUnknown = true) + public static final class Builder implements DeltaStage, _FinalStage { + private String delta; + + private Optional tokens = Optional.empty(); + + private Builder() {} + + @java.lang.Override + public Builder from(StreamedCompletion other) { + delta(other.getDelta()); + tokens(other.getTokens()); + return this; + } + + @java.lang.Override + @JsonSetter("delta") + public _FinalStage delta(String delta) { + this.delta = Objects.requireNonNull(delta, "delta must not be null"); + return this; + } + + @java.lang.Override + public _FinalStage tokens(Integer tokens) { + this.tokens = Optional.ofNullable(tokens); + return this; + } + + @java.lang.Override + @JsonSetter(value = "tokens", nulls = Nulls.SKIP) + public _FinalStage tokens(Optional tokens) { + this.tokens = tokens; + return this; + } + + @java.lang.Override + public StreamedCompletion build() { + return new StreamedCompletion(delta, tokens); + } + } +} diff --git a/seed/java-sdk/examples/.mock/definition/.service.yml.swp b/seed/java-sdk/examples/.mock/definition/.service.yml.swp new file mode 100644 index 0000000000000000000000000000000000000000..07f2f5e8b68e9f16be16aedf57b5772eadadacd1 GIT binary patch literal 12288 zcmeI2yK59d9LML<`G`hE8wDpCg3aDt6hYSqBp5=9BQa_aQDp9Ra<{lIcjsab(NyUy zY*bJy8ygEdA7Ei)C05#4q|v{?BDQ|_d6SFrz)txse6lz1-|w@t2S=t}ou97pljSPI zHN@D5rw5yRUws}pa=yfbBbVape%CnqMMh0DCVc;fF&p}2$8QK{!?3&Ygq4PG$;yHZ zz4VWgkuof~V0*T*eJ@IDMPNr2xg^}ckx`}FT#013Xg6fJ<8GXP!-7;n2FQSBV2~X< zI+ncZhYt<&J-aVyZS;{0kO4A42FL&zAOmE843L5U-GB;8Y#B)oWQm^0?xmi4R-_vl zAOmE843GgbKnBPF86X2>fDDiUGVl)?5Ef%2TNyjB4Z-98|M~C#pF0`*4!(h};3Iek zUV>-fK8V0oa0U#6U0`hoW1qlV@CZBvDfDDiU zGC&4&13bAx83j0(Dow6BfsD#?S()X{H`_SEnzv5a%}Gz$s*^PbLbXg@soPCM>h-Qv zE#ETv?97FWN!Lawg_6Z^lVua6tJHm~WAc$Sf|^vq5=xY3JgN060@dm`zif=pP8;(w zjBvWv - UserListContainer: - properties: + UserListContainer: + properties: users: list UserPage: @@ -24,60 +24,59 @@ types: data: UserListContainer next: optional - UserOptionalListContainer: - properties: + UserOptionalListContainer: + properties: users: optional> UserOptionalListPage: properties: data: UserOptionalListContainer next: optional - UsernameContainer: properties: results: list - ListUsersExtendedResponse: + ListUsersExtendedResponse: extends: - UserPage properties: - total_count: + total_count: type: integer docs: The totall number of /users - ListUsersExtendedOptionalListResponse: + ListUsersExtendedOptionalListResponse: extends: - UserOptionalListPage properties: - total_count: + total_count: type: integer docs: The totall number of /users - - ListUsersPaginationResponse: - properties: + + ListUsersPaginationResponse: + properties: hasNextPage: optional page: optional - total_count: + total_count: type: integer docs: The totall number of /users data: list - Page: - properties: - page: + Page: + properties: + page: type: integer docs: The current page next: optional per_page: integer total_page: integer - NextPage: - properties: + NextPage: + properties: page: integer starting_after: string - User: - properties: + User: + properties: name: string id: integer @@ -86,7 +85,7 @@ service: base-path: /users endpoints: listWithCursorPagination: - pagination: + pagination: cursor: $request.starting_after next_cursor: $response.page.next.starting_after results: $response.data @@ -95,41 +94,41 @@ service: request: name: ListUsersCursorPaginationRequest query-parameters: - page: + page: type: optional docs: Defaults to first page - per_page: + per_page: type: optional docs: Defaults to per page - order: - type: optional - starting_after: + order: + type: optional + starting_after: type: optional - docs: | - The cursor used for pagination in order to fetch + docs: | + The cursor used for pagination in order to fetch the next page of results. response: ListUsersPaginationResponse listWithBodyCursorPagination: - pagination: + pagination: cursor: $request.pagination.cursor next_cursor: $response.page.next.starting_after results: $response.data method: POST path: "" - request: + request: name: ListUsersBodyCursorPaginationRequest - body: + body: properties: - pagination: + pagination: type: optional - docs: | + docs: | The object that contains the cursor used for pagination in order to fetch the next page of results. response: ListUsersPaginationResponse listWithOffsetPagination: - pagination: + pagination: offset: $request.page results: $response.data method: GET @@ -137,38 +136,37 @@ service: request: name: ListUsersOffsetPaginationRequest query-parameters: - page: + page: type: optional docs: Defaults to first page - per_page: + per_page: type: optional docs: Defaults to per page - order: - type: optional - starting_after: + order: + type: optional + starting_after: type: optional - docs: | - The cursor used for pagination in order to fetch + docs: | + The cursor used for pagination in order to fetch the next page of results. response: ListUsersPaginationResponse listWithBodyOffsetPagination: - pagination: + pagination: offset: $request.pagination.page results: $response.data method: POST path: "" - request: + request: name: ListUsersBodyOffsetPaginationRequest - body: + body: properties: - pagination: + pagination: type: optional - docs: | + docs: | The object that contains the offset used for pagination in order to fetch the next page of results. response: ListUsersPaginationResponse - listWithOffsetStepPagination: pagination: offset: $request.page @@ -191,8 +189,8 @@ service: order: type: optional response: ListUsersPaginationResponse - - listWithOffsetPaginationHasNextPage: + + listWithOffsetPaginationHasNextPage: pagination: offset: $request.page results: $response.data @@ -217,7 +215,7 @@ service: response: ListUsersPaginationResponse listWithExtendedResults: - pagination: + pagination: cursor: $request.cursor next_cursor: $response.next results: $response.data.users @@ -230,7 +228,7 @@ service: response: ListUsersExtendedResponse listWithExtendedResultsAndOptionalData: - pagination: + pagination: cursor: $request.cursor next_cursor: $response.next results: $response.data.users @@ -243,7 +241,7 @@ service: response: ListUsersExtendedOptionalListResponse listUsernames: - pagination: + pagination: cursor: $request.starting_after next_cursor: $response.cursor.after results: $response.cursor.data @@ -252,10 +250,10 @@ service: request: name: ListUsernamesRequest query-parameters: - starting_after: + starting_after: type: optional - docs: | - The cursor used for pagination in order to fetch + docs: | + The cursor used for pagination in order to fetch the next page of results. response: root.UsernameCursor @@ -266,6 +264,6 @@ service: request: name: ListWithGlobalConfigRequest query-parameters: - offset: + offset: type: optional response: UsernameContainer \ No newline at end of file diff --git a/seed/postman/examples/.mock/definition/.service.yml.swp b/seed/postman/examples/.mock/definition/.service.yml.swp new file mode 100644 index 0000000000000000000000000000000000000000..07f2f5e8b68e9f16be16aedf57b5772eadadacd1 GIT binary patch literal 12288 zcmeI2yK59d9LML<`G`hE8wDpCg3aDt6hYSqBp5=9BQa_aQDp9Ra<{lIcjsab(NyUy zY*bJy8ygEdA7Ei)C05#4q|v{?BDQ|_d6SFrz)txse6lz1-|w@t2S=t}ou97pljSPI zHN@D5rw5yRUws}pa=yfbBbVape%CnqMMh0DCVc;fF&p}2$8QK{!?3&Ygq4PG$;yHZ zz4VWgkuof~V0*T*eJ@IDMPNr2xg^}ckx`}FT#013Xg6fJ<8GXP!-7;n2FQSBV2~X< zI+ncZhYt<&J-aVyZS;{0kO4A42FL&zAOmE843L5U-GB;8Y#B)oWQm^0?xmi4R-_vl zAOmE843GgbKnBPF86X2>fDDiUGVl)?5Ef%2TNyjB4Z-98|M~C#pF0`*4!(h};3Iek zUV>-fK8V0oa0U#6U0`hoW1qlV@CZBvDfDDiU zGC&4&13bAx83j0(Dow6BfsD#?S()X{H`_SEnzv5a%}Gz$s*^PbLbXg@soPCM>h-Qv zE#ETv?97FWN!Lawg_6Z^lVua6tJHm~WAc$Sf|^vq5=xY3JgN060@dm`zif=pP8;(w zjBvWv + content-type: application/json types: Id: string diff --git a/seed/postman/pagination/.mock/definition/users.yml b/seed/postman/pagination/.mock/definition/users.yml index ecde10ef707..ddc0bc1848b 100644 --- a/seed/postman/pagination/.mock/definition/users.yml +++ b/seed/postman/pagination/.mock/definition/users.yml @@ -1,9 +1,9 @@ imports: root: __package__.yml -types: - Order: - enum: +types: + Order: + enum: - asc - desc @@ -15,8 +15,8 @@ types: properties: cursor: optional - UserListContainer: - properties: + UserListContainer: + properties: users: list UserPage: @@ -24,60 +24,59 @@ types: data: UserListContainer next: optional - UserOptionalListContainer: - properties: + UserOptionalListContainer: + properties: users: optional> UserOptionalListPage: properties: data: UserOptionalListContainer next: optional - UsernameContainer: properties: results: list - ListUsersExtendedResponse: + ListUsersExtendedResponse: extends: - UserPage properties: - total_count: + total_count: type: integer docs: The totall number of /users - ListUsersExtendedOptionalListResponse: + ListUsersExtendedOptionalListResponse: extends: - UserOptionalListPage properties: - total_count: + total_count: type: integer docs: The totall number of /users - - ListUsersPaginationResponse: - properties: + + ListUsersPaginationResponse: + properties: hasNextPage: optional page: optional - total_count: + total_count: type: integer docs: The totall number of /users data: list - Page: - properties: - page: + Page: + properties: + page: type: integer docs: The current page next: optional per_page: integer total_page: integer - NextPage: - properties: + NextPage: + properties: page: integer starting_after: string - User: - properties: + User: + properties: name: string id: integer @@ -86,7 +85,7 @@ service: base-path: /users endpoints: listWithCursorPagination: - pagination: + pagination: cursor: $request.starting_after next_cursor: $response.page.next.starting_after results: $response.data @@ -95,41 +94,41 @@ service: request: name: ListUsersCursorPaginationRequest query-parameters: - page: + page: type: optional docs: Defaults to first page - per_page: + per_page: type: optional docs: Defaults to per page - order: - type: optional - starting_after: + order: + type: optional + starting_after: type: optional - docs: | - The cursor used for pagination in order to fetch + docs: | + The cursor used for pagination in order to fetch the next page of results. response: ListUsersPaginationResponse listWithBodyCursorPagination: - pagination: + pagination: cursor: $request.pagination.cursor next_cursor: $response.page.next.starting_after results: $response.data method: POST path: "" - request: + request: name: ListUsersBodyCursorPaginationRequest - body: + body: properties: - pagination: + pagination: type: optional - docs: | + docs: | The object that contains the cursor used for pagination in order to fetch the next page of results. response: ListUsersPaginationResponse listWithOffsetPagination: - pagination: + pagination: offset: $request.page results: $response.data method: GET @@ -137,38 +136,37 @@ service: request: name: ListUsersOffsetPaginationRequest query-parameters: - page: + page: type: optional docs: Defaults to first page - per_page: + per_page: type: optional docs: Defaults to per page - order: - type: optional - starting_after: + order: + type: optional + starting_after: type: optional - docs: | - The cursor used for pagination in order to fetch + docs: | + The cursor used for pagination in order to fetch the next page of results. response: ListUsersPaginationResponse listWithBodyOffsetPagination: - pagination: + pagination: offset: $request.pagination.page results: $response.data method: POST path: "" - request: + request: name: ListUsersBodyOffsetPaginationRequest - body: + body: properties: - pagination: + pagination: type: optional - docs: | + docs: | The object that contains the offset used for pagination in order to fetch the next page of results. response: ListUsersPaginationResponse - listWithOffsetStepPagination: pagination: offset: $request.page @@ -191,8 +189,8 @@ service: order: type: optional response: ListUsersPaginationResponse - - listWithOffsetPaginationHasNextPage: + + listWithOffsetPaginationHasNextPage: pagination: offset: $request.page results: $response.data @@ -217,7 +215,7 @@ service: response: ListUsersPaginationResponse listWithExtendedResults: - pagination: + pagination: cursor: $request.cursor next_cursor: $response.next results: $response.data.users @@ -230,7 +228,7 @@ service: response: ListUsersExtendedResponse listWithExtendedResultsAndOptionalData: - pagination: + pagination: cursor: $request.cursor next_cursor: $response.next results: $response.data.users @@ -243,7 +241,7 @@ service: response: ListUsersExtendedOptionalListResponse listUsernames: - pagination: + pagination: cursor: $request.starting_after next_cursor: $response.cursor.after results: $response.cursor.data @@ -252,10 +250,10 @@ service: request: name: ListUsernamesRequest query-parameters: - starting_after: + starting_after: type: optional - docs: | - The cursor used for pagination in order to fetch + docs: | + The cursor used for pagination in order to fetch the next page of results. response: root.UsernameCursor @@ -266,6 +264,6 @@ service: request: name: ListWithGlobalConfigRequest query-parameters: - offset: + offset: type: optional response: UsernameContainer \ No newline at end of file diff --git a/seed/postman/validation/collection.json b/seed/postman/validation/collection.json index 7fb804034f8..203bea9be51 100644 --- a/seed/postman/validation/collection.json +++ b/seed/postman/validation/collection.json @@ -40,7 +40,7 @@ "auth": null, "body": { "mode": "raw", - "raw": "{\n \"decimal\": 1.1,\n \"even\": 1,\n \"name\": \"name\",\n \"shape\": \"SQUARE\"\n}", + "raw": "{\n \"decimal\": 2.2,\n \"even\": 100,\n \"name\": \"foo\",\n \"shape\": \"SQUARE\"\n}", "options": { "raw": { "language": "json" @@ -77,7 +77,7 @@ "auth": null, "body": { "mode": "raw", - "raw": "{\n \"decimal\": 1.1,\n \"even\": 1,\n \"name\": \"name\",\n \"shape\": \"SQUARE\"\n}", + "raw": "{\n \"decimal\": 2.2,\n \"even\": 100,\n \"name\": \"foo\",\n \"shape\": \"SQUARE\"\n}", "options": { "raw": { "language": "json" @@ -86,7 +86,7 @@ } }, "description": null, - "body": "{\n \"decimal\": 1.1,\n \"even\": 1,\n \"name\": \"name\",\n \"shape\": \"SQUARE\"\n}", + "body": "{\n \"decimal\": 2.2,\n \"even\": 100,\n \"name\": \"foo\",\n \"shape\": \"SQUARE\"\n}", "_postman_previewlanguage": "json" } ] @@ -97,7 +97,7 @@ "request": { "description": null, "url": { - "raw": "{{baseUrl}}?decimal=1.1&even=1&name=name", + "raw": "{{baseUrl}}?decimal=2.2&even=100&name=foo", "host": [ "{{baseUrl}}" ], @@ -106,17 +106,17 @@ { "key": "decimal", "description": null, - "value": "1.1" + "value": "2.2" }, { "key": "even", "description": null, - "value": "1" + "value": "100" }, { "key": "name", "description": null, - "value": "name" + "value": "foo" } ], "variable": [] @@ -140,7 +140,7 @@ "originalRequest": { "description": null, "url": { - "raw": "{{baseUrl}}?decimal=1.1&even=1&name=name", + "raw": "{{baseUrl}}?decimal=2.2&even=100&name=foo", "host": [ "{{baseUrl}}" ], @@ -149,17 +149,17 @@ { "key": "decimal", "description": null, - "value": "1.1" + "value": "2.2" }, { "key": "even", "description": null, - "value": "1" + "value": "100" }, { "key": "name", "description": null, - "value": "name" + "value": "foo" } ], "variable": [] @@ -176,7 +176,7 @@ "body": null }, "description": null, - "body": "{\n \"decimal\": 1.1,\n \"even\": 1,\n \"name\": \"name\",\n \"shape\": \"SQUARE\"\n}", + "body": "{\n \"decimal\": 2.2,\n \"even\": 100,\n \"name\": \"foo\",\n \"shape\": \"SQUARE\"\n}", "_postman_previewlanguage": "json" } ] diff --git a/seed/ruby-sdk/examples/.mock/definition/.service.yml.swp b/seed/ruby-sdk/examples/.mock/definition/.service.yml.swp new file mode 100644 index 0000000000000000000000000000000000000000..07f2f5e8b68e9f16be16aedf57b5772eadadacd1 GIT binary patch literal 12288 zcmeI2yK59d9LML<`G`hE8wDpCg3aDt6hYSqBp5=9BQa_aQDp9Ra<{lIcjsab(NyUy zY*bJy8ygEdA7Ei)C05#4q|v{?BDQ|_d6SFrz)txse6lz1-|w@t2S=t}ou97pljSPI zHN@D5rw5yRUws}pa=yfbBbVape%CnqMMh0DCVc;fF&p}2$8QK{!?3&Ygq4PG$;yHZ zz4VWgkuof~V0*T*eJ@IDMPNr2xg^}ckx`}FT#013Xg6fJ<8GXP!-7;n2FQSBV2~X< zI+ncZhYt<&J-aVyZS;{0kO4A42FL&zAOmE843L5U-GB;8Y#B)oWQm^0?xmi4R-_vl zAOmE843GgbKnBPF86X2>fDDiUGVl)?5Ef%2TNyjB4Z-98|M~C#pF0`*4!(h};3Iek zUV>-fK8V0oa0U#6U0`hoW1qlV@CZBvDfDDiU zGC&4&13bAx83j0(Dow6BfsD#?S()X{H`_SEnzv5a%}Gz$s*^PbLbXg@soPCM>h-Qv zE#ETv?97FWN!Lawg_6Z^lVua6tJHm~WAc$Sf|^vq5=xY3JgN060@dm`zif=pP8;(w zjBvWv - UserListContainer: - properties: + UserListContainer: + properties: users: list UserPage: @@ -24,60 +24,59 @@ types: data: UserListContainer next: optional - UserOptionalListContainer: - properties: + UserOptionalListContainer: + properties: users: optional> UserOptionalListPage: properties: data: UserOptionalListContainer next: optional - UsernameContainer: properties: results: list - ListUsersExtendedResponse: + ListUsersExtendedResponse: extends: - UserPage properties: - total_count: + total_count: type: integer docs: The totall number of /users - ListUsersExtendedOptionalListResponse: + ListUsersExtendedOptionalListResponse: extends: - UserOptionalListPage properties: - total_count: + total_count: type: integer docs: The totall number of /users - - ListUsersPaginationResponse: - properties: + + ListUsersPaginationResponse: + properties: hasNextPage: optional page: optional - total_count: + total_count: type: integer docs: The totall number of /users data: list - Page: - properties: - page: + Page: + properties: + page: type: integer docs: The current page next: optional per_page: integer total_page: integer - NextPage: - properties: + NextPage: + properties: page: integer starting_after: string - User: - properties: + User: + properties: name: string id: integer @@ -86,7 +85,7 @@ service: base-path: /users endpoints: listWithCursorPagination: - pagination: + pagination: cursor: $request.starting_after next_cursor: $response.page.next.starting_after results: $response.data @@ -95,41 +94,41 @@ service: request: name: ListUsersCursorPaginationRequest query-parameters: - page: + page: type: optional docs: Defaults to first page - per_page: + per_page: type: optional docs: Defaults to per page - order: - type: optional - starting_after: + order: + type: optional + starting_after: type: optional - docs: | - The cursor used for pagination in order to fetch + docs: | + The cursor used for pagination in order to fetch the next page of results. response: ListUsersPaginationResponse listWithBodyCursorPagination: - pagination: + pagination: cursor: $request.pagination.cursor next_cursor: $response.page.next.starting_after results: $response.data method: POST path: "" - request: + request: name: ListUsersBodyCursorPaginationRequest - body: + body: properties: - pagination: + pagination: type: optional - docs: | + docs: | The object that contains the cursor used for pagination in order to fetch the next page of results. response: ListUsersPaginationResponse listWithOffsetPagination: - pagination: + pagination: offset: $request.page results: $response.data method: GET @@ -137,38 +136,37 @@ service: request: name: ListUsersOffsetPaginationRequest query-parameters: - page: + page: type: optional docs: Defaults to first page - per_page: + per_page: type: optional docs: Defaults to per page - order: - type: optional - starting_after: + order: + type: optional + starting_after: type: optional - docs: | - The cursor used for pagination in order to fetch + docs: | + The cursor used for pagination in order to fetch the next page of results. response: ListUsersPaginationResponse listWithBodyOffsetPagination: - pagination: + pagination: offset: $request.pagination.page results: $response.data method: POST path: "" - request: + request: name: ListUsersBodyOffsetPaginationRequest - body: + body: properties: - pagination: + pagination: type: optional - docs: | + docs: | The object that contains the offset used for pagination in order to fetch the next page of results. response: ListUsersPaginationResponse - listWithOffsetStepPagination: pagination: offset: $request.page @@ -191,8 +189,8 @@ service: order: type: optional response: ListUsersPaginationResponse - - listWithOffsetPaginationHasNextPage: + + listWithOffsetPaginationHasNextPage: pagination: offset: $request.page results: $response.data @@ -217,7 +215,7 @@ service: response: ListUsersPaginationResponse listWithExtendedResults: - pagination: + pagination: cursor: $request.cursor next_cursor: $response.next results: $response.data.users @@ -230,7 +228,7 @@ service: response: ListUsersExtendedResponse listWithExtendedResultsAndOptionalData: - pagination: + pagination: cursor: $request.cursor next_cursor: $response.next results: $response.data.users @@ -243,7 +241,7 @@ service: response: ListUsersExtendedOptionalListResponse listUsernames: - pagination: + pagination: cursor: $request.starting_after next_cursor: $response.cursor.after results: $response.cursor.data @@ -252,10 +250,10 @@ service: request: name: ListUsernamesRequest query-parameters: - starting_after: + starting_after: type: optional - docs: | - The cursor used for pagination in order to fetch + docs: | + The cursor used for pagination in order to fetch the next page of results. response: root.UsernameCursor @@ -266,6 +264,6 @@ service: request: name: ListWithGlobalConfigRequest query-parameters: - offset: + offset: type: optional response: UsernameContainer \ No newline at end of file diff --git a/seed/ruby-sdk/validation/lib/fern_validation.rb b/seed/ruby-sdk/validation/lib/fern_validation.rb index dcfbbb2245c..6333003628f 100644 --- a/seed/ruby-sdk/validation/lib/fern_validation.rb +++ b/seed/ruby-sdk/validation/lib/fern_validation.rb @@ -28,9 +28,9 @@ def initialize(base_url: nil, max_retries: nil, timeout_in_seconds: nil) # @example # validation = SeedValidationClient::Client.new(base_url: "https://api.example.com") # validation.create( - # decimal: 1.1, - # even: 1, - # name: "name", + # decimal: 2.2, + # even: 100, + # name: "foo", # shape: SQUARE # ) def create(decimal:, even:, name:, shape:, request_options: nil) @@ -64,9 +64,9 @@ def create(decimal:, even:, name:, shape:, request_options: nil) # @example # validation = SeedValidationClient::Client.new(base_url: "https://api.example.com") # validation.get( - # decimal: 1.1, - # even: 1, - # name: "name" + # decimal: 2.2, + # even: 100, + # name: "foo" # ) def get(decimal:, even:, name:, request_options: nil) response = @request_client.conn.get do |req| @@ -113,9 +113,9 @@ def initialize(base_url: nil, max_retries: nil, timeout_in_seconds: nil) # @example # validation = SeedValidationClient::Client.new(base_url: "https://api.example.com") # validation.create( - # decimal: 1.1, - # even: 1, - # name: "name", + # decimal: 2.2, + # even: 100, + # name: "foo", # shape: SQUARE # ) def create(decimal:, even:, name:, shape:, request_options: nil) @@ -149,9 +149,9 @@ def create(decimal:, even:, name:, shape:, request_options: nil) # @example # validation = SeedValidationClient::Client.new(base_url: "https://api.example.com") # validation.get( - # decimal: 1.1, - # even: 1, - # name: "name" + # decimal: 2.2, + # even: 100, + # name: "foo" # ) def get(decimal:, even:, name:, request_options: nil) response = @async_request_client.conn.get do |req| diff --git a/seed/ruby-sdk/validation/snippet.json b/seed/ruby-sdk/validation/snippet.json index 4b0e1af18fe..b30f304f21a 100644 --- a/seed/ruby-sdk/validation/snippet.json +++ b/seed/ruby-sdk/validation/snippet.json @@ -7,7 +7,7 @@ "identifierOverride": "endpoint_.create" }, "snippet": { - "client": "require \"fern_validation\"\n\nvalidation = SeedValidationClient::Client.new(base_url: \"https://api.example.com\")\nvalidation.create(\n decimal: 1.1,\n even: 1,\n name: \"name\",\n shape: SQUARE\n)", + "client": "require \"fern_validation\"\n\nvalidation = SeedValidationClient::Client.new(base_url: \"https://api.example.com\")\nvalidation.create(\n decimal: 2.2,\n even: 100,\n name: \"foo\",\n shape: SQUARE\n)", "type": "ruby" } }, @@ -18,7 +18,7 @@ "identifierOverride": "endpoint_.get" }, "snippet": { - "client": "require \"fern_validation\"\n\nvalidation = SeedValidationClient::Client.new(base_url: \"https://api.example.com\")\nvalidation.get(\n decimal: 1.1,\n even: 1,\n name: \"name\"\n)", + "client": "require \"fern_validation\"\n\nvalidation = SeedValidationClient::Client.new(base_url: \"https://api.example.com\")\nvalidation.get(\n decimal: 2.2,\n even: 100,\n name: \"foo\"\n)", "type": "ruby" } }, @@ -29,7 +29,7 @@ "identifierOverride": "endpoint_.create" }, "snippet": { - "client": "require \"fern_validation\"\n\nvalidation = SeedValidationClient::Client.new(base_url: \"https://api.example.com\")\nvalidation.create(\n decimal: 1.1,\n even: 1,\n name: \"name\",\n shape: SQUARE\n)", + "client": "require \"fern_validation\"\n\nvalidation = SeedValidationClient::Client.new(base_url: \"https://api.example.com\")\nvalidation.create(\n decimal: 2.2,\n even: 100,\n name: \"foo\",\n shape: SQUARE\n)", "type": "ruby" } }, @@ -40,7 +40,7 @@ "identifierOverride": "endpoint_.get" }, "snippet": { - "client": "require \"fern_validation\"\n\nvalidation = SeedValidationClient::Client.new(base_url: \"https://api.example.com\")\nvalidation.get(\n decimal: 1.1,\n even: 1,\n name: \"name\"\n)", + "client": "require \"fern_validation\"\n\nvalidation = SeedValidationClient::Client.new(base_url: \"https://api.example.com\")\nvalidation.get(\n decimal: 2.2,\n even: 100,\n name: \"foo\"\n)", "type": "ruby" } } diff --git a/seed/ts-sdk/examples/examples-with-api-reference/.mock/definition/.service.yml.swp b/seed/ts-sdk/examples/examples-with-api-reference/.mock/definition/.service.yml.swp new file mode 100644 index 0000000000000000000000000000000000000000..07f2f5e8b68e9f16be16aedf57b5772eadadacd1 GIT binary patch literal 12288 zcmeI2yK59d9LML<`G`hE8wDpCg3aDt6hYSqBp5=9BQa_aQDp9Ra<{lIcjsab(NyUy zY*bJy8ygEdA7Ei)C05#4q|v{?BDQ|_d6SFrz)txse6lz1-|w@t2S=t}ou97pljSPI zHN@D5rw5yRUws}pa=yfbBbVape%CnqMMh0DCVc;fF&p}2$8QK{!?3&Ygq4PG$;yHZ zz4VWgkuof~V0*T*eJ@IDMPNr2xg^}ckx`}FT#013Xg6fJ<8GXP!-7;n2FQSBV2~X< zI+ncZhYt<&J-aVyZS;{0kO4A42FL&zAOmE843L5U-GB;8Y#B)oWQm^0?xmi4R-_vl zAOmE843GgbKnBPF86X2>fDDiUGVl)?5Ef%2TNyjB4Z-98|M~C#pF0`*4!(h};3Iek zUV>-fK8V0oa0U#6U0`hoW1qlV@CZBvDfDDiU zGC&4&13bAx83j0(Dow6BfsD#?S()X{H`_SEnzv5a%}Gz$s*^PbLbXg@soPCM>h-Qv zE#ETv?97FWN!Lawg_6Z^lVua6tJHm~WAc$Sf|^vq5=xY3JgN060@dm`zif=pP8;(w zjBvWvfDDiUGVl)?5Ef%2TNyjB4Z-98|M~C#pF0`*4!(h};3Iek zUV>-fK8V0oa0U#6U0`hoW1qlV@CZBvDfDDiU zGC&4&13bAx83j0(Dow6BfsD#?S()X{H`_SEnzv5a%}Gz$s*^PbLbXg@soPCM>h-Qv zE#ETv?97FWN!Lawg_6Z^lVua6tJHm~WAc$Sf|^vq5=xY3JgN060@dm`zif=pP8;(w zjBvWv