on main help sign in
Merge pull request #231 from charmbracelet/unvendor

chore: unvendor crush

commit1fe561ce2de6e18147fccc47386321f0a485381b authorKujtim Hoxha <kujtimii.h@gmail.com> dateFri 18 Jul 2025, 10:07 (1 year ago) parenta700b64909bb21
3951 files changed+11−1261801
go.mod+4−8 go.sum+6−6 internal/tui/components/chat/messages/renderer.go+1 vendor/cloud.google.com/go/LICENSE−202 vendor/cloud.google.com/go/auth/CHANGES.md−368 vendor/cloud.google.com/go/auth/LICENSE−202 vendor/cloud.google.com/go/auth/README.md−40 vendor/cloud.google.com/go/auth/auth.go−618 vendor/cloud.google.com/go/auth/credentials/compute.go−90 vendor/cloud.google.com/go/auth/credentials/detect.go−279 vendor/cloud.google.com/go/auth/credentials/doc.go−45 vendor/cloud.google.com/go/auth/credentials/filetypes.go−231 vendor/cloud.google.com/go/auth/credentials/internal/externalaccount/aws_provider.go−531 vendor/cloud.google.com/go/auth/credentials/internal/externalaccount/executable_provider.go−284 vendor/cloud.google.com/go/auth/credentials/internal/externalaccount/externalaccount.go−428 vendor/cloud.google.com/go/auth/credentials/internal/externalaccount/file_provider.go−78 vendor/cloud.google.com/go/auth/credentials/internal/externalaccount/info.go−74 vendor/cloud.google.com/go/auth/credentials/internal/externalaccount/programmatic_provider.go−30 vendor/cloud.google.com/go/auth/credentials/internal/externalaccount/url_provider.go−93 vendor/cloud.google.com/go/auth/credentials/internal/externalaccount/x509_provider.go−63 vendor/cloud.google.com/go/auth/credentials/internal/externalaccountuser/externalaccountuser.go−115 vendor/cloud.google.com/go/auth/credentials/internal/gdch/gdch.go−191 vendor/cloud.google.com/go/auth/credentials/internal/impersonate/impersonate.go−156 vendor/cloud.google.com/go/auth/credentials/internal/stsexchange/sts_exchange.go−167 vendor/cloud.google.com/go/auth/credentials/selfsignedjwt.go−89 vendor/cloud.google.com/go/auth/httptransport/httptransport.go−247 vendor/cloud.google.com/go/auth/httptransport/transport.go−234 vendor/cloud.google.com/go/auth/internal/credsfile/credsfile.go−107 vendor/cloud.google.com/go/auth/internal/credsfile/filetype.go−157 vendor/cloud.google.com/go/auth/internal/credsfile/parse.go−98 vendor/cloud.google.com/go/auth/internal/internal.go−219 vendor/cloud.google.com/go/auth/internal/jwt/jwt.go−171 vendor/cloud.google.com/go/auth/internal/transport/cba.go−368 vendor/cloud.google.com/go/auth/internal/transport/cert/default_cert.go−65 vendor/cloud.google.com/go/auth/internal/transport/cert/enterprise_cert.go−54 vendor/cloud.google.com/go/auth/internal/transport/cert/secureconnect_cert.go−124 vendor/cloud.google.com/go/auth/internal/transport/cert/workload_cert.go−114 vendor/cloud.google.com/go/auth/internal/transport/s2a.go−138 vendor/cloud.google.com/go/auth/internal/transport/transport.go−106 vendor/cloud.google.com/go/auth/threelegged.go−382 vendor/cloud.google.com/go/civil/civil.go−350 vendor/cloud.google.com/go/compute/metadata/CHANGES.md−66 vendor/cloud.google.com/go/compute/metadata/LICENSE−202 vendor/cloud.google.com/go/compute/metadata/README.md−27 vendor/cloud.google.com/go/compute/metadata/log.go−149 vendor/cloud.google.com/go/compute/metadata/metadata.go−872 vendor/cloud.google.com/go/compute/metadata/retry.go−114 vendor/cloud.google.com/go/compute/metadata/retry_linux.go−31 vendor/cloud.google.com/go/compute/metadata/syscheck.go−26 vendor/cloud.google.com/go/compute/metadata/syscheck_linux.go−28 vendor/cloud.google.com/go/compute/metadata/syscheck_windows.go−38 vendor/github.com/Azure/azure-sdk-for-go/sdk/azcore/CHANGELOG.md−849 vendor/github.com/Azure/azure-sdk-for-go/sdk/azcore/LICENSE.txt−21 vendor/github.com/Azure/azure-sdk-for-go/sdk/azcore/README.md−39 vendor/github.com/Azure/azure-sdk-for-go/sdk/azcore/arm/internal/resource/resource_identifier.go−239 vendor/github.com/Azure/azure-sdk-for-go/sdk/azcore/arm/internal/resource/resource_type.go−114 vendor/github.com/Azure/azure-sdk-for-go/sdk/azcore/arm/policy/policy.go−108 vendor/github.com/Azure/azure-sdk-for-go/sdk/azcore/arm/runtime/pipeline.go−70 vendor/github.com/Azure/azure-sdk-for-go/sdk/azcore/arm/runtime/policy_bearer_token.go−102 vendor/github.com/Azure/azure-sdk-for-go/sdk/azcore/arm/runtime/policy_register_rp.go−322 vendor/github.com/Azure/azure-sdk-for-go/sdk/azcore/arm/runtime/policy_trace_namespace.go−30 vendor/github.com/Azure/azure-sdk-for-go/sdk/azcore/arm/runtime/runtime.go−24 vendor/github.com/Azure/azure-sdk-for-go/sdk/azcore/ci.yml−29 vendor/github.com/Azure/azure-sdk-for-go/sdk/azcore/cloud/cloud.go−44 vendor/github.com/Azure/azure-sdk-for-go/sdk/azcore/cloud/doc.go−53 vendor/github.com/Azure/azure-sdk-for-go/sdk/azcore/core.go−173 vendor/github.com/Azure/azure-sdk-for-go/sdk/azcore/doc.go−264 vendor/github.com/Azure/azure-sdk-for-go/sdk/azcore/errors.go−17 vendor/github.com/Azure/azure-sdk-for-go/sdk/azcore/etag.go−57 vendor/github.com/Azure/azure-sdk-for-go/sdk/azcore/internal/exported/exported.go−175 vendor/github.com/Azure/azure-sdk-for-go/sdk/azcore/internal/exported/pipeline.go−77 vendor/github.com/Azure/azure-sdk-for-go/sdk/azcore/internal/exported/request.go−260 vendor/github.com/Azure/azure-sdk-for-go/sdk/azcore/internal/exported/response_error.go−201 vendor/github.com/Azure/azure-sdk-for-go/sdk/azcore/internal/log/log.go−50 vendor/github.com/Azure/azure-sdk-for-go/sdk/azcore/internal/pollers/async/async.go−159 vendor/github.com/Azure/azure-sdk-for-go/sdk/azcore/internal/pollers/body/body.go−135 vendor/github.com/Azure/azure-sdk-for-go/sdk/azcore/internal/pollers/fake/fake.go−133 vendor/github.com/Azure/azure-sdk-for-go/sdk/azcore/internal/pollers/loc/loc.go−123 vendor/github.com/Azure/azure-sdk-for-go/sdk/azcore/internal/pollers/op/op.go−148 vendor/github.com/Azure/azure-sdk-for-go/sdk/azcore/internal/pollers/poller.go−24 vendor/github.com/Azure/azure-sdk-for-go/sdk/azcore/internal/pollers/util.go−212 vendor/github.com/Azure/azure-sdk-for-go/sdk/azcore/internal/shared/constants.go−44 vendor/github.com/Azure/azure-sdk-for-go/sdk/azcore/internal/shared/shared.go−149 vendor/github.com/Azure/azure-sdk-for-go/sdk/azcore/log/doc.go−10 vendor/github.com/Azure/azure-sdk-for-go/sdk/azcore/log/log.go−55 vendor/github.com/Azure/azure-sdk-for-go/sdk/azcore/policy/doc.go−10 vendor/github.com/Azure/azure-sdk-for-go/sdk/azcore/policy/policy.go−198 vendor/github.com/Azure/azure-sdk-for-go/sdk/azcore/runtime/doc.go−10 vendor/github.com/Azure/azure-sdk-for-go/sdk/azcore/runtime/errors.go−27 vendor/github.com/Azure/azure-sdk-for-go/sdk/azcore/runtime/pager.go−138 vendor/github.com/Azure/azure-sdk-for-go/sdk/azcore/runtime/pipeline.go−94 vendor/github.com/Azure/azure-sdk-for-go/sdk/azcore/runtime/policy_api_version.go−75 vendor/github.com/Azure/azure-sdk-for-go/sdk/azcore/runtime/policy_bearer_token.go−236 vendor/github.com/Azure/azure-sdk-for-go/sdk/azcore/runtime/policy_body_download.go−72 vendor/github.com/Azure/azure-sdk-for-go/sdk/azcore/runtime/policy_http_header.go−40 vendor/github.com/Azure/azure-sdk-for-go/sdk/azcore/runtime/policy_http_trace.go−154 vendor/github.com/Azure/azure-sdk-for-go/sdk/azcore/runtime/policy_include_response.go−35 vendor/github.com/Azure/azure-sdk-for-go/sdk/azcore/runtime/policy_key_credential.go−64 vendor/github.com/Azure/azure-sdk-for-go/sdk/azcore/runtime/policy_logging.go−264 vendor/github.com/Azure/azure-sdk-for-go/sdk/azcore/runtime/policy_request_id.go−34 vendor/github.com/Azure/azure-sdk-for-go/sdk/azcore/runtime/policy_retry.go−276 vendor/github.com/Azure/azure-sdk-for-go/sdk/azcore/runtime/policy_sas_credential.go−55 vendor/github.com/Azure/azure-sdk-for-go/sdk/azcore/runtime/policy_telemetry.go−83 vendor/github.com/Azure/azure-sdk-for-go/sdk/azcore/runtime/poller.go−396 vendor/github.com/Azure/azure-sdk-for-go/sdk/azcore/runtime/request.go−281 vendor/github.com/Azure/azure-sdk-for-go/sdk/azcore/runtime/response.go−109 vendor/github.com/Azure/azure-sdk-for-go/sdk/azcore/runtime/transport_default_dialer_other.go−15 vendor/github.com/Azure/azure-sdk-for-go/sdk/azcore/runtime/transport_default_dialer_wasm.go−15 vendor/github.com/Azure/azure-sdk-for-go/sdk/azcore/runtime/transport_default_http_client.go−48 vendor/github.com/Azure/azure-sdk-for-go/sdk/azcore/streaming/doc.go−9 vendor/github.com/Azure/azure-sdk-for-go/sdk/azcore/streaming/progress.go−89 vendor/github.com/Azure/azure-sdk-for-go/sdk/azcore/tracing/constants.go−41 vendor/github.com/Azure/azure-sdk-for-go/sdk/azcore/tracing/tracing.go−191 vendor/github.com/Azure/azure-sdk-for-go/sdk/azidentity/.gitignore−4 vendor/github.com/Azure/azure-sdk-for-go/sdk/azidentity/CHANGELOG.md−575 vendor/github.com/Azure/azure-sdk-for-go/sdk/azidentity/LICENSE.txt−21 vendor/github.com/Azure/azure-sdk-for-go/sdk/azidentity/MIGRATION.md−307 vendor/github.com/Azure/azure-sdk-for-go/sdk/azidentity/README.md−258 vendor/github.com/Azure/azure-sdk-for-go/sdk/azidentity/TOKEN_CACHING.MD−71 vendor/github.com/Azure/azure-sdk-for-go/sdk/azidentity/TROUBLESHOOTING.md−241 vendor/github.com/Azure/azure-sdk-for-go/sdk/azidentity/assets.json−6 vendor/github.com/Azure/azure-sdk-for-go/sdk/azidentity/authentication_record.go−95 vendor/github.com/Azure/azure-sdk-for-go/sdk/azidentity/azidentity.go−190 vendor/github.com/Azure/azure-sdk-for-go/sdk/azidentity/azure_cli_credential.go−190 vendor/github.com/Azure/azure-sdk-for-go/sdk/azidentity/azure_developer_cli_credential.go−169 vendor/github.com/Azure/azure-sdk-for-go/sdk/azidentity/azure_pipelines_credential.go−140 vendor/github.com/Azure/azure-sdk-for-go/sdk/azidentity/chained_token_credential.go−138 vendor/github.com/Azure/azure-sdk-for-go/sdk/azidentity/ci.yml−46 vendor/github.com/Azure/azure-sdk-for-go/sdk/azidentity/client_assertion_credential.go−85 vendor/github.com/Azure/azure-sdk-for-go/sdk/azidentity/client_certificate_credential.go−174 vendor/github.com/Azure/azure-sdk-for-go/sdk/azidentity/client_secret_credential.go−75 vendor/github.com/Azure/azure-sdk-for-go/sdk/azidentity/confidential_client.go−184 vendor/github.com/Azure/azure-sdk-for-go/sdk/azidentity/default_azure_credential.go−165 vendor/github.com/Azure/azure-sdk-for-go/sdk/azidentity/developer_credential_util.go−38 vendor/github.com/Azure/azure-sdk-for-go/sdk/azidentity/device_code_credential.go−138 vendor/github.com/Azure/azure-sdk-for-go/sdk/azidentity/environment_credential.go−167 vendor/github.com/Azure/azure-sdk-for-go/sdk/azidentity/errors.go−170 vendor/github.com/Azure/azure-sdk-for-go/sdk/azidentity/interactive_browser_credential.go−118 vendor/github.com/Azure/azure-sdk-for-go/sdk/azidentity/internal/exported.go−18 vendor/github.com/Azure/azure-sdk-for-go/sdk/azidentity/internal/internal.go−31 vendor/github.com/Azure/azure-sdk-for-go/sdk/azidentity/logging.go−14 vendor/github.com/Azure/azure-sdk-for-go/sdk/azidentity/managed-identity-matrix.json−17 vendor/github.com/Azure/azure-sdk-for-go/sdk/azidentity/managed_identity_client.go−501 vendor/github.com/Azure/azure-sdk-for-go/sdk/azidentity/managed_identity_credential.go−128 vendor/github.com/Azure/azure-sdk-for-go/sdk/azidentity/on_behalf_of_credential.go−113 vendor/github.com/Azure/azure-sdk-for-go/sdk/azidentity/public_client.go−273 vendor/github.com/Azure/azure-sdk-for-go/sdk/azidentity/test-resources-post.ps1−112 vendor/github.com/Azure/azure-sdk-for-go/sdk/azidentity/test-resources-pre.ps1−44 vendor/github.com/Azure/azure-sdk-for-go/sdk/azidentity/test-resources.bicep−219 vendor/github.com/Azure/azure-sdk-for-go/sdk/azidentity/username_password_credential.go−90 vendor/github.com/Azure/azure-sdk-for-go/sdk/azidentity/version.go−18 vendor/github.com/Azure/azure-sdk-for-go/sdk/azidentity/workload_identity.go−131 vendor/github.com/Azure/azure-sdk-for-go/sdk/internal/LICENSE.txt−21 vendor/github.com/Azure/azure-sdk-for-go/sdk/internal/diag/diag.go−51 vendor/github.com/Azure/azure-sdk-for-go/sdk/internal/diag/doc.go−7 vendor/github.com/Azure/azure-sdk-for-go/sdk/internal/errorinfo/doc.go−7 vendor/github.com/Azure/azure-sdk-for-go/sdk/internal/errorinfo/errorinfo.go−46 vendor/github.com/Azure/azure-sdk-for-go/sdk/internal/exported/exported.go−129 vendor/github.com/Azure/azure-sdk-for-go/sdk/internal/log/doc.go−7 vendor/github.com/Azure/azure-sdk-for-go/sdk/internal/log/log.go−104 vendor/github.com/Azure/azure-sdk-for-go/sdk/internal/poller/util.go−155 vendor/github.com/Azure/azure-sdk-for-go/sdk/internal/temporal/resource.go−123 vendor/github.com/Azure/azure-sdk-for-go/sdk/internal/uuid/doc.go−7 vendor/github.com/Azure/azure-sdk-for-go/sdk/internal/uuid/uuid.go−76 vendor/github.com/AzureAD/microsoft-authentication-library-for-go/LICENSE−21 vendor/github.com/AzureAD/microsoft-authentication-library-for-go/apps/cache/cache.go−54 vendor/github.com/AzureAD/microsoft-authentication-library-for-go/apps/confidential/confidential.go−719 vendor/github.com/AzureAD/microsoft-authentication-library-for-go/apps/errors/error_design.md−111 vendor/github.com/AzureAD/microsoft-authentication-library-for-go/apps/errors/errors.go−89 vendor/github.com/AzureAD/microsoft-authentication-library-for-go/apps/internal/base/base.go−477 vendor/github.com/AzureAD/microsoft-authentication-library-for-go/apps/internal/base/internal/storage/items.go−213 vendor/github.com/AzureAD/microsoft-authentication-library-for-go/apps/internal/base/internal/storage/partitioned_storage.go−442 vendor/github.com/AzureAD/microsoft-authentication-library-for-go/apps/internal/base/internal/storage/storage.go−583 vendor/github.com/AzureAD/microsoft-authentication-library-for-go/apps/internal/exported/exported.go−34 vendor/github.com/AzureAD/microsoft-authentication-library-for-go/apps/internal/json/design.md−140 vendor/github.com/AzureAD/microsoft-authentication-library-for-go/apps/internal/json/json.go−184 vendor/github.com/AzureAD/microsoft-authentication-library-for-go/apps/internal/json/mapslice.go−333 vendor/github.com/AzureAD/microsoft-authentication-library-for-go/apps/internal/json/marshal.go−346 vendor/github.com/AzureAD/microsoft-authentication-library-for-go/apps/internal/json/struct.go−290 vendor/github.com/AzureAD/microsoft-authentication-library-for-go/apps/internal/json/types/time/time.go−70 vendor/github.com/AzureAD/microsoft-authentication-library-for-go/apps/internal/local/server.go−177 vendor/github.com/AzureAD/microsoft-authentication-library-for-go/apps/internal/oauth/oauth.go−354 vendor/github.com/AzureAD/microsoft-authentication-library-for-go/apps/internal/oauth/ops/accesstokens/accesstokens.go−457 vendor/github.com/AzureAD/microsoft-authentication-library-for-go/apps/internal/oauth/ops/accesstokens/apptype_string.go−25 vendor/github.com/AzureAD/microsoft-authentication-library-for-go/apps/internal/oauth/ops/accesstokens/tokens.go−339 vendor/github.com/AzureAD/microsoft-authentication-library-for-go/apps/internal/oauth/ops/authority/authority.go−589 vendor/github.com/AzureAD/microsoft-authentication-library-for-go/apps/internal/oauth/ops/authority/authorizetype_string.go−30 vendor/github.com/AzureAD/microsoft-authentication-library-for-go/apps/internal/oauth/ops/internal/comm/comm.go−320 vendor/github.com/AzureAD/microsoft-authentication-library-for-go/apps/internal/oauth/ops/internal/comm/compress.go−33 vendor/github.com/AzureAD/microsoft-authentication-library-for-go/apps/internal/oauth/ops/internal/grant/grant.go−17 vendor/github.com/AzureAD/microsoft-authentication-library-for-go/apps/internal/oauth/ops/ops.go−56 vendor/github.com/AzureAD/microsoft-authentication-library-for-go/apps/internal/oauth/ops/wstrust/defs/endpointtype_string.go−25 vendor/github.com/AzureAD/microsoft-authentication-library-for-go/apps/internal/oauth/ops/wstrust/defs/mex_document_definitions.go−394 vendor/github.com/AzureAD/microsoft-authentication-library-for-go/apps/internal/oauth/ops/wstrust/defs/saml_assertion_definitions.go−230 vendor/github.com/AzureAD/microsoft-authentication-library-for-go/apps/internal/oauth/ops/wstrust/defs/version_string.go−25 vendor/github.com/AzureAD/microsoft-authentication-library-for-go/apps/internal/oauth/ops/wstrust/defs/wstrust_endpoint.go−199 vendor/github.com/AzureAD/microsoft-authentication-library-for-go/apps/internal/oauth/ops/wstrust/defs/wstrust_mex_document.go−159 vendor/github.com/AzureAD/microsoft-authentication-library-for-go/apps/internal/oauth/ops/wstrust/wstrust.go−136 vendor/github.com/AzureAD/microsoft-authentication-library-for-go/apps/internal/oauth/resolvers.go−149 vendor/github.com/AzureAD/microsoft-authentication-library-for-go/apps/internal/options/options.go−52 vendor/github.com/AzureAD/microsoft-authentication-library-for-go/apps/internal/shared/shared.go−72 vendor/github.com/AzureAD/microsoft-authentication-library-for-go/apps/internal/version/version.go−8 vendor/github.com/AzureAD/microsoft-authentication-library-for-go/apps/public/public.go−756 vendor/github.com/JohannesKaufmann/html-to-markdown/.gitignore−14 vendor/github.com/JohannesKaufmann/html-to-markdown/CONTRIBUTING.md vendor/github.com/JohannesKaufmann/html-to-markdown/LICENSE−21 vendor/github.com/JohannesKaufmann/html-to-markdown/README.md−242 vendor/github.com/JohannesKaufmann/html-to-markdown/SECURITY.md−6 vendor/github.com/JohannesKaufmann/html-to-markdown/commonmark.go−393 vendor/github.com/JohannesKaufmann/html-to-markdown/escape/escape.go−65 vendor/github.com/JohannesKaufmann/html-to-markdown/from.go−464 vendor/github.com/JohannesKaufmann/html-to-markdown/logo_five_years.png vendor/github.com/JohannesKaufmann/html-to-markdown/markdown.go−212 vendor/github.com/JohannesKaufmann/html-to-markdown/utils.go−533 vendor/github.com/MakeNowJust/heredoc/LICENSE−21 vendor/github.com/MakeNowJust/heredoc/README.md−52 vendor/github.com/MakeNowJust/heredoc/heredoc.go−105 vendor/github.com/PuerkitoBio/goquery/.gitattributes−1 vendor/github.com/PuerkitoBio/goquery/.gitignore−16 vendor/github.com/PuerkitoBio/goquery/LICENSE−12 vendor/github.com/PuerkitoBio/goquery/README.md−202 vendor/github.com/PuerkitoBio/goquery/array.go−124 vendor/github.com/PuerkitoBio/goquery/doc.go−123 vendor/github.com/PuerkitoBio/goquery/expand.go−70 vendor/github.com/PuerkitoBio/goquery/filter.go−163 vendor/github.com/PuerkitoBio/goquery/iteration.go−47 vendor/github.com/PuerkitoBio/goquery/manipulation.go−679 vendor/github.com/PuerkitoBio/goquery/property.go−275 vendor/github.com/PuerkitoBio/goquery/query.go−49 vendor/github.com/PuerkitoBio/goquery/traversal.go−704 vendor/github.com/PuerkitoBio/goquery/type.go−203 vendor/github.com/PuerkitoBio/goquery/utilities.go−178 vendor/github.com/alecthomas/chroma/v2/.editorconfig−17 vendor/github.com/alecthomas/chroma/v2/.gitignore−25 vendor/github.com/alecthomas/chroma/v2/.golangci.yml−95 vendor/github.com/alecthomas/chroma/v2/.goreleaser.yml−37 vendor/github.com/alecthomas/chroma/v2/Bitfile−24 vendor/github.com/alecthomas/chroma/v2/COPYING−19 vendor/github.com/alecthomas/chroma/v2/Makefile−23 vendor/github.com/alecthomas/chroma/v2/README.md−297 vendor/github.com/alecthomas/chroma/v2/coalesce.go−35 vendor/github.com/alecthomas/chroma/v2/colour.go−192 vendor/github.com/alecthomas/chroma/v2/delegate.go−152 vendor/github.com/alecthomas/chroma/v2/doc.go−7 vendor/github.com/alecthomas/chroma/v2/emitters.go−218 vendor/github.com/alecthomas/chroma/v2/formatter.go−43 vendor/github.com/alecthomas/chroma/v2/formatters/api.go−57 vendor/github.com/alecthomas/chroma/v2/formatters/html/html.go−623 vendor/github.com/alecthomas/chroma/v2/formatters/json.go−39 vendor/github.com/alecthomas/chroma/v2/formatters/svg/font_liberation_mono.go−51 vendor/github.com/alecthomas/chroma/v2/formatters/svg/svg.go−222 vendor/github.com/alecthomas/chroma/v2/formatters/tokens.go−18 vendor/github.com/alecthomas/chroma/v2/formatters/tty_indexed.go−284 vendor/github.com/alecthomas/chroma/v2/formatters/tty_truecolour.go−76 vendor/github.com/alecthomas/chroma/v2/iterator.go−76 vendor/github.com/alecthomas/chroma/v2/lexer.go−162 vendor/github.com/alecthomas/chroma/v2/lexers/README.md−46 vendor/github.com/alecthomas/chroma/v2/lexers/caddyfile.go−275 vendor/github.com/alecthomas/chroma/v2/lexers/cl.go−243 vendor/github.com/alecthomas/chroma/v2/lexers/dns.go−17 vendor/github.com/alecthomas/chroma/v2/lexers/emacs.go−533 vendor/github.com/alecthomas/chroma/v2/lexers/embedded/abap.xml−154 vendor/github.com/alecthomas/chroma/v2/lexers/embedded/abnf.xml−66 vendor/github.com/alecthomas/chroma/v2/lexers/embedded/actionscript.xml−68 vendor/github.com/alecthomas/chroma/v2/lexers/embedded/actionscript_3.xml−163 vendor/github.com/alecthomas/chroma/v2/lexers/embedded/ada.xml−321 vendor/github.com/alecthomas/chroma/v2/lexers/embedded/agda.xml−66 vendor/github.com/alecthomas/chroma/v2/lexers/embedded/al.xml−75 vendor/github.com/alecthomas/chroma/v2/lexers/embedded/alloy.xml−58 vendor/github.com/alecthomas/chroma/v2/lexers/embedded/angular2.xml−108 vendor/github.com/alecthomas/chroma/v2/lexers/embedded/antlr.xml−317 vendor/github.com/alecthomas/chroma/v2/lexers/embedded/apacheconf.xml−74 vendor/github.com/alecthomas/chroma/v2/lexers/embedded/apl.xml−59 vendor/github.com/alecthomas/chroma/v2/lexers/embedded/applescript.xml−130 vendor/github.com/alecthomas/chroma/v2/lexers/embedded/arangodb_aql.xml−174 vendor/github.com/alecthomas/chroma/v2/lexers/embedded/arduino.xml−309 vendor/github.com/alecthomas/chroma/v2/lexers/embedded/armasm.xml−126 vendor/github.com/alecthomas/chroma/v2/lexers/embedded/atl.xml−165 vendor/github.com/alecthomas/chroma/v2/lexers/embedded/autohotkey.xml−78 vendor/github.com/alecthomas/chroma/v2/lexers/embedded/autoit.xml−70 vendor/github.com/alecthomas/chroma/v2/lexers/embedded/awk.xml−95 vendor/github.com/alecthomas/chroma/v2/lexers/embedded/ballerina.xml−97 vendor/github.com/alecthomas/chroma/v2/lexers/embedded/bash.xml−220 vendor/github.com/alecthomas/chroma/v2/lexers/embedded/bash_session.xml−25 vendor/github.com/alecthomas/chroma/v2/lexers/embedded/batchfile.xml−660 vendor/github.com/alecthomas/chroma/v2/lexers/embedded/beef.xml−120 vendor/github.com/alecthomas/chroma/v2/lexers/embedded/bibtex.xml−152 vendor/github.com/alecthomas/chroma/v2/lexers/embedded/bicep.xml−84 vendor/github.com/alecthomas/chroma/v2/lexers/embedded/blitzbasic.xml−141 vendor/github.com/alecthomas/chroma/v2/lexers/embedded/bnf.xml−28 vendor/github.com/alecthomas/chroma/v2/lexers/embedded/bqn.xml−83 vendor/github.com/alecthomas/chroma/v2/lexers/embedded/brainfuck.xml−51 vendor/github.com/alecthomas/chroma/v2/lexers/embedded/c#.xml−121 vendor/github.com/alecthomas/chroma/v2/lexers/embedded/c++.xml−331 vendor/github.com/alecthomas/chroma/v2/lexers/embedded/c.xml−260 vendor/github.com/alecthomas/chroma/v2/lexers/embedded/cap_n_proto.xml−122 vendor/github.com/alecthomas/chroma/v2/lexers/embedded/cassandra_cql.xml−137 vendor/github.com/alecthomas/chroma/v2/lexers/embedded/ceylon.xml−151 vendor/github.com/alecthomas/chroma/v2/lexers/embedded/cfengine3.xml−197 vendor/github.com/alecthomas/chroma/v2/lexers/embedded/cfstatement.xml−92 vendor/github.com/alecthomas/chroma/v2/lexers/embedded/chaiscript.xml−134 vendor/github.com/alecthomas/chroma/v2/lexers/embedded/chapel.xml−143 vendor/github.com/alecthomas/chroma/v2/lexers/embedded/cheetah.xml−55 vendor/github.com/alecthomas/chroma/v2/lexers/embedded/clojure.xml−71 vendor/github.com/alecthomas/chroma/v2/lexers/embedded/cmake.xml−90 vendor/github.com/alecthomas/chroma/v2/lexers/embedded/cobol.xml−90 vendor/github.com/alecthomas/chroma/v2/lexers/embedded/coffeescript.xml−210 vendor/github.com/alecthomas/chroma/v2/lexers/embedded/common_lisp.xml−184 vendor/github.com/alecthomas/chroma/v2/lexers/embedded/coq.xml−136 vendor/github.com/alecthomas/chroma/v2/lexers/embedded/crystal.xml−762 vendor/github.com/alecthomas/chroma/v2/lexers/embedded/css.xml−323 vendor/github.com/alecthomas/chroma/v2/lexers/embedded/csv.xml−53 vendor/github.com/alecthomas/chroma/v2/lexers/embedded/cue.xml−85 vendor/github.com/alecthomas/chroma/v2/lexers/embedded/cython.xml−372 vendor/github.com/alecthomas/chroma/v2/lexers/embedded/d.xml−133 vendor/github.com/alecthomas/chroma/v2/lexers/embedded/dart.xml−213 vendor/github.com/alecthomas/chroma/v2/lexers/embedded/dax.xml−39 vendor/github.com/alecthomas/chroma/v2/lexers/embedded/desktop_entry.xml−17 vendor/github.com/alecthomas/chroma/v2/lexers/embedded/diff.xml−52 vendor/github.com/alecthomas/chroma/v2/lexers/embedded/django_jinja.xml−153 vendor/github.com/alecthomas/chroma/v2/lexers/embedded/dns.xml−44 vendor/github.com/alecthomas/chroma/v2/lexers/embedded/docker.xml−57 vendor/github.com/alecthomas/chroma/v2/lexers/embedded/dtd.xml−168 vendor/github.com/alecthomas/chroma/v2/lexers/embedded/dylan.xml−176 vendor/github.com/alecthomas/chroma/v2/lexers/embedded/ebnf.xml−90 vendor/github.com/alecthomas/chroma/v2/lexers/embedded/elixir.xml−744 vendor/github.com/alecthomas/chroma/v2/lexers/embedded/elm.xml−119 vendor/github.com/alecthomas/chroma/v2/lexers/embedded/emacslisp.xml−132 vendor/github.com/alecthomas/chroma/v2/lexers/embedded/erlang.xml−166 vendor/github.com/alecthomas/chroma/v2/lexers/embedded/factor.xml−412 vendor/github.com/alecthomas/chroma/v2/lexers/embedded/fennel.xml−68 vendor/github.com/alecthomas/chroma/v2/lexers/embedded/fish.xml−159 vendor/github.com/alecthomas/chroma/v2/lexers/embedded/forth.xml−78 vendor/github.com/alecthomas/chroma/v2/lexers/embedded/fortran.xml−102 vendor/github.com/alecthomas/chroma/v2/lexers/embedded/fortranfixed.xml−71 vendor/github.com/alecthomas/chroma/v2/lexers/embedded/fsharp.xml−245 vendor/github.com/alecthomas/chroma/v2/lexers/embedded/gas.xml−150 vendor/github.com/alecthomas/chroma/v2/lexers/embedded/gdscript.xml−259 vendor/github.com/alecthomas/chroma/v2/lexers/embedded/gdscript3.xml−270 vendor/github.com/alecthomas/chroma/v2/lexers/embedded/gherkin.xml−263 vendor/github.com/alecthomas/chroma/v2/lexers/embedded/gleam.xml−117 vendor/github.com/alecthomas/chroma/v2/lexers/embedded/glsl.xml−65 vendor/github.com/alecthomas/chroma/v2/lexers/embedded/gnuplot.xml−289 vendor/github.com/alecthomas/chroma/v2/lexers/embedded/go_template.xml−114 vendor/github.com/alecthomas/chroma/v2/lexers/embedded/graphql.xml−88 vendor/github.com/alecthomas/chroma/v2/lexers/embedded/groff.xml−90 vendor/github.com/alecthomas/chroma/v2/lexers/embedded/groovy.xml−135 vendor/github.com/alecthomas/chroma/v2/lexers/embedded/handlebars.xml−147 vendor/github.com/alecthomas/chroma/v2/lexers/embedded/hare.xml−98 vendor/github.com/alecthomas/chroma/v2/lexers/embedded/haskell.xml−275 vendor/github.com/alecthomas/chroma/v2/lexers/embedded/hcl.xml−143 vendor/github.com/alecthomas/chroma/v2/lexers/embedded/hexdump.xml−189 vendor/github.com/alecthomas/chroma/v2/lexers/embedded/hlb.xml−149 vendor/github.com/alecthomas/chroma/v2/lexers/embedded/hlsl.xml−110 vendor/github.com/alecthomas/chroma/v2/lexers/embedded/holyc.xml−252 vendor/github.com/alecthomas/chroma/v2/lexers/embedded/html.xml−159 vendor/github.com/alecthomas/chroma/v2/lexers/embedded/hy.xml−104 vendor/github.com/alecthomas/chroma/v2/lexers/embedded/idris.xml−216 vendor/github.com/alecthomas/chroma/v2/lexers/embedded/igor.xml−47 vendor/github.com/alecthomas/chroma/v2/lexers/embedded/ini.xml−45 vendor/github.com/alecthomas/chroma/v2/lexers/embedded/io.xml−71 vendor/github.com/alecthomas/chroma/v2/lexers/embedded/iscdhcpd.xml−96 vendor/github.com/alecthomas/chroma/v2/lexers/embedded/j.xml−157 vendor/github.com/alecthomas/chroma/v2/lexers/embedded/java.xml−193 vendor/github.com/alecthomas/chroma/v2/lexers/embedded/javascript.xml−160 vendor/github.com/alecthomas/chroma/v2/lexers/embedded/json.xml−112 vendor/github.com/alecthomas/chroma/v2/lexers/embedded/jsonata.xml−83 vendor/github.com/alecthomas/chroma/v2/lexers/embedded/jsonnet.xml−138 vendor/github.com/alecthomas/chroma/v2/lexers/embedded/julia.xml−400 vendor/github.com/alecthomas/chroma/v2/lexers/embedded/jungle.xml−98 vendor/github.com/alecthomas/chroma/v2/lexers/embedded/kotlin.xml−223 vendor/github.com/alecthomas/chroma/v2/lexers/embedded/lighttpd_configuration_file.xml−42 vendor/github.com/alecthomas/chroma/v2/lexers/embedded/llvm.xml−73 vendor/github.com/alecthomas/chroma/v2/lexers/embedded/lua.xml−158 vendor/github.com/alecthomas/chroma/v2/lexers/embedded/makefile.xml−131 vendor/github.com/alecthomas/chroma/v2/lexers/embedded/mako.xml−120 vendor/github.com/alecthomas/chroma/v2/lexers/embedded/mason.xml−89 vendor/github.com/alecthomas/chroma/v2/lexers/embedded/materialize_sql_dialect.xml−155 vendor/github.com/alecthomas/chroma/v2/lexers/embedded/mathematica.xml−60 vendor/github.com/alecthomas/chroma/v2/lexers/embedded/matlab.xml−114 vendor/github.com/alecthomas/chroma/v2/lexers/embedded/mcfunction.xml−138 vendor/github.com/alecthomas/chroma/v2/lexers/embedded/meson.xml−85 vendor/github.com/alecthomas/chroma/v2/lexers/embedded/metal.xml−270 vendor/github.com/alecthomas/chroma/v2/lexers/embedded/minizinc.xml−82 vendor/github.com/alecthomas/chroma/v2/lexers/embedded/mlir.xml−73 vendor/github.com/alecthomas/chroma/v2/lexers/embedded/modula-2.xml−245 vendor/github.com/alecthomas/chroma/v2/lexers/embedded/monkeyc.xml−153 vendor/github.com/alecthomas/chroma/v2/lexers/embedded/morrowindscript.xml−90 vendor/github.com/alecthomas/chroma/v2/lexers/embedded/myghty.xml−77 vendor/github.com/alecthomas/chroma/v2/lexers/embedded/mysql.xml−121 vendor/github.com/alecthomas/chroma/v2/lexers/embedded/nasm.xml−126 vendor/github.com/alecthomas/chroma/v2/lexers/embedded/natural.xml−143 vendor/github.com/alecthomas/chroma/v2/lexers/embedded/ndisasm.xml−123 vendor/github.com/alecthomas/chroma/v2/lexers/embedded/newspeak.xml−121 vendor/github.com/alecthomas/chroma/v2/lexers/embedded/nginx_configuration_file.xml−98 vendor/github.com/alecthomas/chroma/v2/lexers/embedded/nim.xml−211 vendor/github.com/alecthomas/chroma/v2/lexers/embedded/nix.xml−258 vendor/github.com/alecthomas/chroma/v2/lexers/embedded/nsis.xml−59 vendor/github.com/alecthomas/chroma/v2/lexers/embedded/objective-c.xml−510 vendor/github.com/alecthomas/chroma/v2/lexers/embedded/objectpascal.xml−145 vendor/github.com/alecthomas/chroma/v2/lexers/embedded/ocaml.xml−145 vendor/github.com/alecthomas/chroma/v2/lexers/embedded/octave.xml−101 vendor/github.com/alecthomas/chroma/v2/lexers/embedded/odin.xml−113 vendor/github.com/alecthomas/chroma/v2/lexers/embedded/onesenterprise.xml−92 vendor/github.com/alecthomas/chroma/v2/lexers/embedded/openedge_abl.xml−101 vendor/github.com/alecthomas/chroma/v2/lexers/embedded/openscad.xml−96 vendor/github.com/alecthomas/chroma/v2/lexers/embedded/org_mode.xml−329 vendor/github.com/alecthomas/chroma/v2/lexers/embedded/pacmanconf.xml−37 vendor/github.com/alecthomas/chroma/v2/lexers/embedded/perl.xml−400 vendor/github.com/alecthomas/chroma/v2/lexers/embedded/php.xml−212 vendor/github.com/alecthomas/chroma/v2/lexers/embedded/pig.xml−105 vendor/github.com/alecthomas/chroma/v2/lexers/embedded/pkgconfig.xml−73 vendor/github.com/alecthomas/chroma/v2/lexers/embedded/pl_pgsql.xml−119 vendor/github.com/alecthomas/chroma/v2/lexers/embedded/plaintext.xml−21 vendor/github.com/alecthomas/chroma/v2/lexers/embedded/plutus_core.xml−105 vendor/github.com/alecthomas/chroma/v2/lexers/embedded/pony.xml−135 vendor/github.com/alecthomas/chroma/v2/lexers/embedded/postgresql_sql_dialect.xml−155 vendor/github.com/alecthomas/chroma/v2/lexers/embedded/postscript.xml−89 vendor/github.com/alecthomas/chroma/v2/lexers/embedded/povray.xml−58 vendor/github.com/alecthomas/chroma/v2/lexers/embedded/powerquery.xml−51 vendor/github.com/alecthomas/chroma/v2/lexers/embedded/powershell.xml−230 vendor/github.com/alecthomas/chroma/v2/lexers/embedded/prolog.xml−115 vendor/github.com/alecthomas/chroma/v2/lexers/embedded/promela.xml−119 vendor/github.com/alecthomas/chroma/v2/lexers/embedded/promql.xml−123 vendor/github.com/alecthomas/chroma/v2/lexers/embedded/properties.xml−45 vendor/github.com/alecthomas/chroma/v2/lexers/embedded/protocol_buffer.xml−118 vendor/github.com/alecthomas/chroma/v2/lexers/embedded/prql.xml−161 vendor/github.com/alecthomas/chroma/v2/lexers/embedded/psl.xml−213 vendor/github.com/alecthomas/chroma/v2/lexers/embedded/puppet.xml−100 vendor/github.com/alecthomas/chroma/v2/lexers/embedded/python.xml−593 vendor/github.com/alecthomas/chroma/v2/lexers/embedded/python_2.xml−356 vendor/github.com/alecthomas/chroma/v2/lexers/embedded/qbasic.xml−173 vendor/github.com/alecthomas/chroma/v2/lexers/embedded/qml.xml−113 vendor/github.com/alecthomas/chroma/v2/lexers/embedded/r.xml−128 vendor/github.com/alecthomas/chroma/v2/lexers/embedded/racket.xml−260 vendor/github.com/alecthomas/chroma/v2/lexers/embedded/ragel.xml−149 vendor/github.com/alecthomas/chroma/v2/lexers/embedded/react.xml−236 vendor/github.com/alecthomas/chroma/v2/lexers/embedded/reasonml.xml−147 vendor/github.com/alecthomas/chroma/v2/lexers/embedded/reg.xml−68 vendor/github.com/alecthomas/chroma/v2/lexers/embedded/rego.xml−94 vendor/github.com/alecthomas/chroma/v2/lexers/embedded/rexx.xml−127 vendor/github.com/alecthomas/chroma/v2/lexers/embedded/rpm_spec.xml−58 vendor/github.com/alecthomas/chroma/v2/lexers/embedded/ruby.xml−724 vendor/github.com/alecthomas/chroma/v2/lexers/embedded/rust.xml−375 vendor/github.com/alecthomas/chroma/v2/lexers/embedded/sas.xml−191 vendor/github.com/alecthomas/chroma/v2/lexers/embedded/sass.xml−362 vendor/github.com/alecthomas/chroma/v2/lexers/embedded/scala.xml−274 vendor/github.com/alecthomas/chroma/v2/lexers/embedded/scheme.xml−106 vendor/github.com/alecthomas/chroma/v2/lexers/embedded/scilab.xml−98 vendor/github.com/alecthomas/chroma/v2/lexers/embedded/scss.xml−373 vendor/github.com/alecthomas/chroma/v2/lexers/embedded/sed.xml−28 vendor/github.com/alecthomas/chroma/v2/lexers/embedded/sieve.xml−61 vendor/github.com/alecthomas/chroma/v2/lexers/embedded/smali.xml−73 vendor/github.com/alecthomas/chroma/v2/lexers/embedded/smalltalk.xml−294 vendor/github.com/alecthomas/chroma/v2/lexers/embedded/smarty.xml−79 vendor/github.com/alecthomas/chroma/v2/lexers/embedded/snbt.xml−58 vendor/github.com/alecthomas/chroma/v2/lexers/embedded/snobol.xml−95 vendor/github.com/alecthomas/chroma/v2/lexers/embedded/solidity.xml−279 vendor/github.com/alecthomas/chroma/v2/lexers/embedded/sourcepawn.xml−59 vendor/github.com/alecthomas/chroma/v2/lexers/embedded/sparql.xml−160 vendor/github.com/alecthomas/chroma/v2/lexers/embedded/sql.xml−90 vendor/github.com/alecthomas/chroma/v2/lexers/embedded/squidconf.xml−63 vendor/github.com/alecthomas/chroma/v2/lexers/embedded/standard_ml.xml−548 vendor/github.com/alecthomas/chroma/v2/lexers/embedded/stas.xml−85 vendor/github.com/alecthomas/chroma/v2/lexers/embedded/stylus.xml−132 vendor/github.com/alecthomas/chroma/v2/lexers/embedded/swift.xml−207 vendor/github.com/alecthomas/chroma/v2/lexers/embedded/systemd.xml−63 vendor/github.com/alecthomas/chroma/v2/lexers/embedded/systemverilog.xml−181 vendor/github.com/alecthomas/chroma/v2/lexers/embedded/tablegen.xml−69 vendor/github.com/alecthomas/chroma/v2/lexers/embedded/tal.xml−43 vendor/github.com/alecthomas/chroma/v2/lexers/embedded/tasm.xml−135 vendor/github.com/alecthomas/chroma/v2/lexers/embedded/tcl.xml−272 vendor/github.com/alecthomas/chroma/v2/lexers/embedded/tcsh.xml−121 vendor/github.com/alecthomas/chroma/v2/lexers/embedded/termcap.xml−75 vendor/github.com/alecthomas/chroma/v2/lexers/embedded/terminfo.xml−84 vendor/github.com/alecthomas/chroma/v2/lexers/embedded/terraform.xml−140 vendor/github.com/alecthomas/chroma/v2/lexers/embedded/tex.xml−113 vendor/github.com/alecthomas/chroma/v2/lexers/embedded/thrift.xml−154 vendor/github.com/alecthomas/chroma/v2/lexers/embedded/toml.xml−44 vendor/github.com/alecthomas/chroma/v2/lexers/embedded/tradingview.xml−81 vendor/github.com/alecthomas/chroma/v2/lexers/embedded/transact-sql.xml−137 vendor/github.com/alecthomas/chroma/v2/lexers/embedded/turing.xml−82 vendor/github.com/alecthomas/chroma/v2/lexers/embedded/turtle.xml−170 vendor/github.com/alecthomas/chroma/v2/lexers/embedded/twig.xml−155 vendor/github.com/alecthomas/chroma/v2/lexers/embedded/typescript.xml−295 vendor/github.com/alecthomas/chroma/v2/lexers/embedded/typoscript.xml−178 vendor/github.com/alecthomas/chroma/v2/lexers/embedded/typoscriptcssdata.xml−52 vendor/github.com/alecthomas/chroma/v2/lexers/embedded/typoscripthtmldata.xml−52 vendor/github.com/alecthomas/chroma/v2/lexers/embedded/typst.xml−108 vendor/github.com/alecthomas/chroma/v2/lexers/embedded/ucode.xml−147 vendor/github.com/alecthomas/chroma/v2/lexers/embedded/v.xml−355 vendor/github.com/alecthomas/chroma/v2/lexers/embedded/v_shell.xml−365 vendor/github.com/alecthomas/chroma/v2/lexers/embedded/vala.xml−72 vendor/github.com/alecthomas/chroma/v2/lexers/embedded/vb_net.xml−162 vendor/github.com/alecthomas/chroma/v2/lexers/embedded/verilog.xml−158 vendor/github.com/alecthomas/chroma/v2/lexers/embedded/vhdl.xml−171 vendor/github.com/alecthomas/chroma/v2/lexers/embedded/vhs.xml−48 vendor/github.com/alecthomas/chroma/v2/lexers/embedded/viml.xml−85 vendor/github.com/alecthomas/chroma/v2/lexers/embedded/vue.xml−307 vendor/github.com/alecthomas/chroma/v2/lexers/embedded/wdte.xml−43 vendor/github.com/alecthomas/chroma/v2/lexers/embedded/webgpu_shading_language.xml−142 vendor/github.com/alecthomas/chroma/v2/lexers/embedded/webvtt.xml−283 vendor/github.com/alecthomas/chroma/v2/lexers/embedded/whiley.xml−57 vendor/github.com/alecthomas/chroma/v2/lexers/embedded/xml.xml−95 vendor/github.com/alecthomas/chroma/v2/lexers/embedded/xorg.xml−35 vendor/github.com/alecthomas/chroma/v2/lexers/embedded/yaml.xml−122 vendor/github.com/alecthomas/chroma/v2/lexers/embedded/yang.xml−99 vendor/github.com/alecthomas/chroma/v2/lexers/embedded/z80_assembly.xml−74 vendor/github.com/alecthomas/chroma/v2/lexers/embedded/zed.xml−51 vendor/github.com/alecthomas/chroma/v2/lexers/embedded/zig.xml−112 vendor/github.com/alecthomas/chroma/v2/lexers/genshi.go−118 vendor/github.com/alecthomas/chroma/v2/lexers/go.go−81 vendor/github.com/alecthomas/chroma/v2/lexers/haxe.go−647 vendor/github.com/alecthomas/chroma/v2/lexers/html.go−8 vendor/github.com/alecthomas/chroma/v2/lexers/http.go−131 vendor/github.com/alecthomas/chroma/v2/lexers/lexers.go−79 vendor/github.com/alecthomas/chroma/v2/lexers/markdown.go−46 vendor/github.com/alecthomas/chroma/v2/lexers/mysql.go−33 vendor/github.com/alecthomas/chroma/v2/lexers/php.go−37 vendor/github.com/alecthomas/chroma/v2/lexers/raku.go−1721 vendor/github.com/alecthomas/chroma/v2/lexers/rst.go−89 vendor/github.com/alecthomas/chroma/v2/lexers/svelte.go−70 vendor/github.com/alecthomas/chroma/v2/lexers/typoscript.go−85 vendor/github.com/alecthomas/chroma/v2/lexers/zed.go−24 vendor/github.com/alecthomas/chroma/v2/mutators.go−201 vendor/github.com/alecthomas/chroma/v2/pygments-lexers.txt−322 vendor/github.com/alecthomas/chroma/v2/quick/quick.go−44 vendor/github.com/alecthomas/chroma/v2/regexp.go−489 vendor/github.com/alecthomas/chroma/v2/registry.go−210 vendor/github.com/alecthomas/chroma/v2/remap.go−94 vendor/github.com/alecthomas/chroma/v2/renovate.json5−18 vendor/github.com/alecthomas/chroma/v2/serialise.go−479 vendor/github.com/alecthomas/chroma/v2/style.go−481 vendor/github.com/alecthomas/chroma/v2/styles/abap.xml−11 vendor/github.com/alecthomas/chroma/v2/styles/algol.xml−18 vendor/github.com/alecthomas/chroma/v2/styles/algol_nu.xml−18 vendor/github.com/alecthomas/chroma/v2/styles/api.go−65 vendor/github.com/alecthomas/chroma/v2/styles/arduino.xml−18 vendor/github.com/alecthomas/chroma/v2/styles/autumn.xml−36 vendor/github.com/alecthomas/chroma/v2/styles/average.xml−74 vendor/github.com/alecthomas/chroma/v2/styles/base16-snazzy.xml−74 vendor/github.com/alecthomas/chroma/v2/styles/borland.xml−26 vendor/github.com/alecthomas/chroma/v2/styles/bw.xml−23 vendor/github.com/alecthomas/chroma/v2/styles/catppuccin-frappe.xml−83 vendor/github.com/alecthomas/chroma/v2/styles/catppuccin-latte.xml−83 vendor/github.com/alecthomas/chroma/v2/styles/catppuccin-macchiato.xml−83 vendor/github.com/alecthomas/chroma/v2/styles/catppuccin-mocha.xml−83 vendor/github.com/alecthomas/chroma/v2/styles/colorful.xml−52 vendor/github.com/alecthomas/chroma/v2/styles/compat.go−66 vendor/github.com/alecthomas/chroma/v2/styles/doom-one.xml−51 vendor/github.com/alecthomas/chroma/v2/styles/doom-one2.xml−64 vendor/github.com/alecthomas/chroma/v2/styles/dracula.xml−74 vendor/github.com/alecthomas/chroma/v2/styles/emacs.xml−44 vendor/github.com/alecthomas/chroma/v2/styles/evergarden.xml−33 vendor/github.com/alecthomas/chroma/v2/styles/friendly.xml−44 vendor/github.com/alecthomas/chroma/v2/styles/fruity.xml−19 vendor/github.com/alecthomas/chroma/v2/styles/github-dark.xml−45 vendor/github.com/alecthomas/chroma/v2/styles/github.xml−39 vendor/github.com/alecthomas/chroma/v2/styles/gruvbox-light.xml−33 vendor/github.com/alecthomas/chroma/v2/styles/gruvbox.xml−33 vendor/github.com/alecthomas/chroma/v2/styles/hr_high_contrast.xml−12 vendor/github.com/alecthomas/chroma/v2/styles/hrdark.xml−10 vendor/github.com/alecthomas/chroma/v2/styles/igor.xml−9 vendor/github.com/alecthomas/chroma/v2/styles/lovelace.xml−53 vendor/github.com/alecthomas/chroma/v2/styles/manni.xml−44 vendor/github.com/alecthomas/chroma/v2/styles/modus-operandi.xml−13 vendor/github.com/alecthomas/chroma/v2/styles/modus-vivendi.xml−13 vendor/github.com/alecthomas/chroma/v2/styles/monokai.xml−29 vendor/github.com/alecthomas/chroma/v2/styles/monokailight.xml−26 vendor/github.com/alecthomas/chroma/v2/styles/murphy.xml−52 vendor/github.com/alecthomas/chroma/v2/styles/native.xml−35 vendor/github.com/alecthomas/chroma/v2/styles/nord.xml−46 vendor/github.com/alecthomas/chroma/v2/styles/nordic.xml−46 vendor/github.com/alecthomas/chroma/v2/styles/onedark.xml−25 vendor/github.com/alecthomas/chroma/v2/styles/onesenterprise.xml−10 vendor/github.com/alecthomas/chroma/v2/styles/paraiso-dark.xml−37 vendor/github.com/alecthomas/chroma/v2/styles/paraiso-light.xml−37 vendor/github.com/alecthomas/chroma/v2/styles/pastie.xml−45 vendor/github.com/alecthomas/chroma/v2/styles/perldoc.xml−37 vendor/github.com/alecthomas/chroma/v2/styles/pygments.xml−42 vendor/github.com/alecthomas/chroma/v2/styles/rainbow_dash.xml−40 vendor/github.com/alecthomas/chroma/v2/styles/rose-pine-dawn.xml−29 vendor/github.com/alecthomas/chroma/v2/styles/rose-pine-moon.xml−29 vendor/github.com/alecthomas/chroma/v2/styles/rose-pine.xml−29 vendor/github.com/alecthomas/chroma/v2/styles/rrt.xml−13 vendor/github.com/alecthomas/chroma/v2/styles/solarized-dark.xml−39 vendor/github.com/alecthomas/chroma/v2/styles/solarized-dark256.xml−41 vendor/github.com/alecthomas/chroma/v2/styles/solarized-light.xml−17 vendor/github.com/alecthomas/chroma/v2/styles/swapoff.xml−18 vendor/github.com/alecthomas/chroma/v2/styles/tango.xml−72 vendor/github.com/alecthomas/chroma/v2/styles/tokyonight-day.xml−83 vendor/github.com/alecthomas/chroma/v2/styles/tokyonight-moon.xml−83 vendor/github.com/alecthomas/chroma/v2/styles/tokyonight-night.xml−83 vendor/github.com/alecthomas/chroma/v2/styles/tokyonight-storm.xml−83 vendor/github.com/alecthomas/chroma/v2/styles/trac.xml−35 vendor/github.com/alecthomas/chroma/v2/styles/vim.xml−29 vendor/github.com/alecthomas/chroma/v2/styles/vs.xml−16 vendor/github.com/alecthomas/chroma/v2/styles/vulcan.xml−74 vendor/github.com/alecthomas/chroma/v2/styles/witchhazel.xml−31 vendor/github.com/alecthomas/chroma/v2/styles/xcode-dark.xml−31 vendor/github.com/alecthomas/chroma/v2/styles/xcode.xml−22 vendor/github.com/alecthomas/chroma/v2/table.py−31 vendor/github.com/alecthomas/chroma/v2/tokentype_enumer.go−583 vendor/github.com/alecthomas/chroma/v2/types.go−343 vendor/github.com/andybalholm/cascadia/.travis.yml−14 vendor/github.com/andybalholm/cascadia/LICENSE−24 vendor/github.com/andybalholm/cascadia/README.md−144 vendor/github.com/andybalholm/cascadia/parser.go−889 vendor/github.com/andybalholm/cascadia/pseudo_classes.go−458 vendor/github.com/andybalholm/cascadia/selector.go−586 vendor/github.com/andybalholm/cascadia/serialize.go−176 vendor/github.com/andybalholm/cascadia/specificity.go−26 vendor/github.com/anthropics/anthropic-sdk-go/.gitignore−4 vendor/github.com/anthropics/anthropic-sdk-go/.release-please-manifest.json−3 vendor/github.com/anthropics/anthropic-sdk-go/.stats.yml−4 vendor/github.com/anthropics/anthropic-sdk-go/Brewfile−1 vendor/github.com/anthropics/anthropic-sdk-go/CHANGELOG.md−240 vendor/github.com/anthropics/anthropic-sdk-go/CONTRIBUTING.md−66 vendor/github.com/anthropics/anthropic-sdk-go/LICENSE−8 vendor/github.com/anthropics/anthropic-sdk-go/README.md−876 vendor/github.com/anthropics/anthropic-sdk-go/SECURITY.md−27 vendor/github.com/anthropics/anthropic-sdk-go/aliases.go−50 vendor/github.com/anthropics/anthropic-sdk-go/api.md−329 vendor/github.com/anthropics/anthropic-sdk-go/bedrock/bedrock.go−245 vendor/github.com/anthropics/anthropic-sdk-go/beta.go−364 vendor/github.com/anthropics/anthropic-sdk-go/betafile.go−270 vendor/github.com/anthropics/anthropic-sdk-go/betamessage.go−5823 vendor/github.com/anthropics/anthropic-sdk-go/betamessagebatch.go−879 vendor/github.com/anthropics/anthropic-sdk-go/betamodel.go−149 vendor/github.com/anthropics/anthropic-sdk-go/client.go−126 vendor/github.com/anthropics/anthropic-sdk-go/completion.go−194 vendor/github.com/anthropics/anthropic-sdk-go/field.go−45 vendor/github.com/anthropics/anthropic-sdk-go/internal/apierror/apierror.go−50 vendor/github.com/anthropics/anthropic-sdk-go/internal/apiform/encoder.go−465 vendor/github.com/anthropics/anthropic-sdk-go/internal/apiform/form.go−5 vendor/github.com/anthropics/anthropic-sdk-go/internal/apiform/richparam.go−20 vendor/github.com/anthropics/anthropic-sdk-go/internal/apiform/tag.go−51 vendor/github.com/anthropics/anthropic-sdk-go/internal/apijson/decoder.go−691 vendor/github.com/anthropics/anthropic-sdk-go/internal/apijson/encoder.go−392 vendor/github.com/anthropics/anthropic-sdk-go/internal/apijson/enum.go−145 vendor/github.com/anthropics/anthropic-sdk-go/internal/apijson/field.go−23 vendor/github.com/anthropics/anthropic-sdk-go/internal/apijson/port.go−120 vendor/github.com/anthropics/anthropic-sdk-go/internal/apijson/registry.go−51 vendor/github.com/anthropics/anthropic-sdk-go/internal/apijson/subfield.go−67 vendor/github.com/anthropics/anthropic-sdk-go/internal/apijson/tag.go−47 vendor/github.com/anthropics/anthropic-sdk-go/internal/apijson/union.go−202 vendor/github.com/anthropics/anthropic-sdk-go/internal/apiquery/encoder.go−415 vendor/github.com/anthropics/anthropic-sdk-go/internal/apiquery/query.go−55 vendor/github.com/anthropics/anthropic-sdk-go/internal/apiquery/richparam.go−19 vendor/github.com/anthropics/anthropic-sdk-go/internal/apiquery/tag.go−44 vendor/github.com/anthropics/anthropic-sdk-go/internal/encoding/json/decode.go−1324 vendor/github.com/anthropics/anthropic-sdk-go/internal/encoding/json/encode.go−1398 vendor/github.com/anthropics/anthropic-sdk-go/internal/encoding/json/fold.go−48 vendor/github.com/anthropics/anthropic-sdk-go/internal/encoding/json/indent.go−182 vendor/github.com/anthropics/anthropic-sdk-go/internal/encoding/json/scanner.go−610 vendor/github.com/anthropics/anthropic-sdk-go/internal/encoding/json/sentinel/null.go−57 vendor/github.com/anthropics/anthropic-sdk-go/internal/encoding/json/shims/shims.go−111 vendor/github.com/anthropics/anthropic-sdk-go/internal/encoding/json/stream.go−512 vendor/github.com/anthropics/anthropic-sdk-go/internal/encoding/json/tables.go−218 vendor/github.com/anthropics/anthropic-sdk-go/internal/encoding/json/tags.go−38 vendor/github.com/anthropics/anthropic-sdk-go/internal/encoding/json/time.go−61 vendor/github.com/anthropics/anthropic-sdk-go/internal/paramutil/field.go−30 vendor/github.com/anthropics/anthropic-sdk-go/internal/paramutil/sentinel.go−31 vendor/github.com/anthropics/anthropic-sdk-go/internal/paramutil/union.go−48 vendor/github.com/anthropics/anthropic-sdk-go/internal/requestconfig/requestconfig.go−629 vendor/github.com/anthropics/anthropic-sdk-go/internal/version.go−5 vendor/github.com/anthropics/anthropic-sdk-go/message.go−4562 vendor/github.com/anthropics/anthropic-sdk-go/messagebatch.go−825 vendor/github.com/anthropics/anthropic-sdk-go/model.go−149 vendor/github.com/anthropics/anthropic-sdk-go/option/requestoption.go−284 vendor/github.com/anthropics/anthropic-sdk-go/packages/jsonl/jsonl.go−57 vendor/github.com/anthropics/anthropic-sdk-go/packages/pagination/pagination.go−134 vendor/github.com/anthropics/anthropic-sdk-go/packages/param/encoder.go−101 vendor/github.com/anthropics/anthropic-sdk-go/packages/param/option.go−121 vendor/github.com/anthropics/anthropic-sdk-go/packages/param/param.go−158 vendor/github.com/anthropics/anthropic-sdk-go/packages/respjson/respjson.go−88 vendor/github.com/anthropics/anthropic-sdk-go/packages/ssestream/ssestream.go−198 vendor/github.com/anthropics/anthropic-sdk-go/release-please-config.json−67 vendor/github.com/anthropics/anthropic-sdk-go/shared/constant/constants.go−304 vendor/github.com/anthropics/anthropic-sdk-go/shared/shared.go−334 vendor/github.com/atotto/clipboard/.travis.yml−22 vendor/github.com/atotto/clipboard/LICENSE−27 vendor/github.com/atotto/clipboard/README.md−48 vendor/github.com/atotto/clipboard/clipboard.go−20 vendor/github.com/atotto/clipboard/clipboard_darwin.go−52 vendor/github.com/atotto/clipboard/clipboard_plan9.go−42 vendor/github.com/atotto/clipboard/clipboard_unix.go−149 vendor/github.com/atotto/clipboard/clipboard_windows.go−157 vendor/github.com/aws/aws-sdk-go-v2/LICENSE.txt−202 vendor/github.com/aws/aws-sdk-go-v2/NOTICE.txt−3 vendor/github.com/aws/aws-sdk-go-v2/aws/accountid_endpoint_mode.go−18 vendor/github.com/aws/aws-sdk-go-v2/aws/config.go−211 vendor/github.com/aws/aws-sdk-go-v2/aws/context.go−22 vendor/github.com/aws/aws-sdk-go-v2/aws/credential_cache.go−224 vendor/github.com/aws/aws-sdk-go-v2/aws/credentials.go−173 vendor/github.com/aws/aws-sdk-go-v2/aws/defaults/auto.go−38 vendor/github.com/aws/aws-sdk-go-v2/aws/defaults/configuration.go−43 vendor/github.com/aws/aws-sdk-go-v2/aws/defaults/defaults.go−50 vendor/github.com/aws/aws-sdk-go-v2/aws/defaults/doc.go−2 vendor/github.com/aws/aws-sdk-go-v2/aws/defaultsmode.go−95 vendor/github.com/aws/aws-sdk-go-v2/aws/doc.go−62 vendor/github.com/aws/aws-sdk-go-v2/aws/endpoints.go−247 vendor/github.com/aws/aws-sdk-go-v2/aws/errors.go−9 vendor/github.com/aws/aws-sdk-go-v2/aws/from_ptr.go−365 vendor/github.com/aws/aws-sdk-go-v2/aws/go_module_metadata.go−6 vendor/github.com/aws/aws-sdk-go-v2/aws/logging.go−119 vendor/github.com/aws/aws-sdk-go-v2/aws/logging_generate.go−95 vendor/github.com/aws/aws-sdk-go-v2/aws/middleware/metadata.go−213 vendor/github.com/aws/aws-sdk-go-v2/aws/middleware/middleware.go−168 vendor/github.com/aws/aws-sdk-go-v2/aws/middleware/osname.go−24 vendor/github.com/aws/aws-sdk-go-v2/aws/middleware/osname_go115.go−24 vendor/github.com/aws/aws-sdk-go-v2/aws/middleware/private/metrics/metrics.go−320 vendor/github.com/aws/aws-sdk-go-v2/aws/middleware/recursion_detection.go−94 vendor/github.com/aws/aws-sdk-go-v2/aws/middleware/request_id.go−27 vendor/github.com/aws/aws-sdk-go-v2/aws/middleware/request_id_retriever.go−53 vendor/github.com/aws/aws-sdk-go-v2/aws/middleware/user_agent.go−305 vendor/github.com/aws/aws-sdk-go-v2/aws/protocol/eventstream/CHANGELOG.md−114 vendor/github.com/aws/aws-sdk-go-v2/aws/protocol/eventstream/LICENSE.txt−202 vendor/github.com/aws/aws-sdk-go-v2/aws/protocol/eventstream/debug.go−144 vendor/github.com/aws/aws-sdk-go-v2/aws/protocol/eventstream/decode.go−218 vendor/github.com/aws/aws-sdk-go-v2/aws/protocol/eventstream/encode.go−167 vendor/github.com/aws/aws-sdk-go-v2/aws/protocol/eventstream/error.go−23 vendor/github.com/aws/aws-sdk-go-v2/aws/protocol/eventstream/eventstreamapi/headers.go−24 vendor/github.com/aws/aws-sdk-go-v2/aws/protocol/eventstream/eventstreamapi/middleware.go−71 vendor/github.com/aws/aws-sdk-go-v2/aws/protocol/eventstream/eventstreamapi/transport.go−13 vendor/github.com/aws/aws-sdk-go-v2/aws/protocol/eventstream/eventstreamapi/transport_go117.go−12 vendor/github.com/aws/aws-sdk-go-v2/aws/protocol/eventstream/go_module_metadata.go−6 vendor/github.com/aws/aws-sdk-go-v2/aws/protocol/eventstream/header.go−175 vendor/github.com/aws/aws-sdk-go-v2/aws/protocol/eventstream/header_value.go−521 vendor/github.com/aws/aws-sdk-go-v2/aws/protocol/eventstream/message.go−117 vendor/github.com/aws/aws-sdk-go-v2/aws/protocol/query/array.go−72 vendor/github.com/aws/aws-sdk-go-v2/aws/protocol/query/encoder.go−80 vendor/github.com/aws/aws-sdk-go-v2/aws/protocol/query/map.go−78 vendor/github.com/aws/aws-sdk-go-v2/aws/protocol/query/middleware.go−62 vendor/github.com/aws/aws-sdk-go-v2/aws/protocol/query/object.go−69 vendor/github.com/aws/aws-sdk-go-v2/aws/protocol/query/value.go−115 vendor/github.com/aws/aws-sdk-go-v2/aws/protocol/restjson/decoder_util.go−85 vendor/github.com/aws/aws-sdk-go-v2/aws/protocol/xml/error_utils.go−48 vendor/github.com/aws/aws-sdk-go-v2/aws/ratelimit/none.go−20 vendor/github.com/aws/aws-sdk-go-v2/aws/ratelimit/token_bucket.go−96 vendor/github.com/aws/aws-sdk-go-v2/aws/ratelimit/token_rate_limit.go−83 vendor/github.com/aws/aws-sdk-go-v2/aws/request.go−25 vendor/github.com/aws/aws-sdk-go-v2/aws/retry/adaptive.go−156 vendor/github.com/aws/aws-sdk-go-v2/aws/retry/adaptive_ratelimit.go−158 vendor/github.com/aws/aws-sdk-go-v2/aws/retry/adaptive_token_bucket.go−83 vendor/github.com/aws/aws-sdk-go-v2/aws/retry/doc.go−80 vendor/github.com/aws/aws-sdk-go-v2/aws/retry/errors.go−20 vendor/github.com/aws/aws-sdk-go-v2/aws/retry/jitter_backoff.go−49 vendor/github.com/aws/aws-sdk-go-v2/aws/retry/metadata.go−52 vendor/github.com/aws/aws-sdk-go-v2/aws/retry/middleware.go−383 vendor/github.com/aws/aws-sdk-go-v2/aws/retry/retry.go−90 vendor/github.com/aws/aws-sdk-go-v2/aws/retry/retryable_error.go−222 vendor/github.com/aws/aws-sdk-go-v2/aws/retry/standard.go−269 vendor/github.com/aws/aws-sdk-go-v2/aws/retry/throttle_error.go−60 vendor/github.com/aws/aws-sdk-go-v2/aws/retry/timeout_error.go−52 vendor/github.com/aws/aws-sdk-go-v2/aws/retryer.go−127 vendor/github.com/aws/aws-sdk-go-v2/aws/runtime.go−14 vendor/github.com/aws/aws-sdk-go-v2/aws/signer/internal/v4/cache.go−115 vendor/github.com/aws/aws-sdk-go-v2/aws/signer/internal/v4/const.go−40 vendor/github.com/aws/aws-sdk-go-v2/aws/signer/internal/v4/header_rules.go−82 vendor/github.com/aws/aws-sdk-go-v2/aws/signer/internal/v4/headers.go−70 vendor/github.com/aws/aws-sdk-go-v2/aws/signer/internal/v4/hmac.go−13 vendor/github.com/aws/aws-sdk-go-v2/aws/signer/internal/v4/host.go−75 vendor/github.com/aws/aws-sdk-go-v2/aws/signer/internal/v4/scope.go−13 vendor/github.com/aws/aws-sdk-go-v2/aws/signer/internal/v4/time.go−36 vendor/github.com/aws/aws-sdk-go-v2/aws/signer/internal/v4/util.go−80 vendor/github.com/aws/aws-sdk-go-v2/aws/signer/v4/middleware.go−414 vendor/github.com/aws/aws-sdk-go-v2/aws/signer/v4/presign_middleware.go−127 vendor/github.com/aws/aws-sdk-go-v2/aws/signer/v4/stream.go−86 vendor/github.com/aws/aws-sdk-go-v2/aws/signer/v4/v4.go−559 vendor/github.com/aws/aws-sdk-go-v2/aws/to_ptr.go−297 vendor/github.com/aws/aws-sdk-go-v2/aws/transport/http/client.go−310 vendor/github.com/aws/aws-sdk-go-v2/aws/transport/http/content_type.go−42 vendor/github.com/aws/aws-sdk-go-v2/aws/transport/http/response_error.go−33 vendor/github.com/aws/aws-sdk-go-v2/aws/transport/http/response_error_middleware.go−56 vendor/github.com/aws/aws-sdk-go-v2/aws/transport/http/timeout_read_closer.go−104 vendor/github.com/aws/aws-sdk-go-v2/aws/types.go−42 vendor/github.com/aws/aws-sdk-go-v2/aws/version.go−8 vendor/github.com/aws/aws-sdk-go-v2/config/CHANGELOG.md−678 vendor/github.com/aws/aws-sdk-go-v2/config/LICENSE.txt−202 vendor/github.com/aws/aws-sdk-go-v2/config/config.go−222 vendor/github.com/aws/aws-sdk-go-v2/config/defaultsmode.go−47 vendor/github.com/aws/aws-sdk-go-v2/config/doc.go−20 vendor/github.com/aws/aws-sdk-go-v2/config/env_config.go−856 vendor/github.com/aws/aws-sdk-go-v2/config/generate.go−4 vendor/github.com/aws/aws-sdk-go-v2/config/go_module_metadata.go−6 vendor/github.com/aws/aws-sdk-go-v2/config/load_options.go−1141 vendor/github.com/aws/aws-sdk-go-v2/config/local.go−51 vendor/github.com/aws/aws-sdk-go-v2/config/provider.go−721 vendor/github.com/aws/aws-sdk-go-v2/config/resolve.go−383 vendor/github.com/aws/aws-sdk-go-v2/config/resolve_bearer_token.go−122 vendor/github.com/aws/aws-sdk-go-v2/config/resolve_credentials.go−566 vendor/github.com/aws/aws-sdk-go-v2/config/shared_config.go−1618 vendor/github.com/aws/aws-sdk-go-v2/credentials/CHANGELOG.md−591 vendor/github.com/aws/aws-sdk-go-v2/credentials/LICENSE.txt−202 vendor/github.com/aws/aws-sdk-go-v2/credentials/doc.go−4 vendor/github.com/aws/aws-sdk-go-v2/credentials/ec2rolecreds/doc.go−58 vendor/github.com/aws/aws-sdk-go-v2/credentials/ec2rolecreds/provider.go−229 vendor/github.com/aws/aws-sdk-go-v2/credentials/endpointcreds/internal/client/auth.go−48 vendor/github.com/aws/aws-sdk-go-v2/credentials/endpointcreds/internal/client/client.go−165 vendor/github.com/aws/aws-sdk-go-v2/credentials/endpointcreds/internal/client/endpoints.go−20 vendor/github.com/aws/aws-sdk-go-v2/credentials/endpointcreds/internal/client/middleware.go−164 vendor/github.com/aws/aws-sdk-go-v2/credentials/endpointcreds/provider.go−193 vendor/github.com/aws/aws-sdk-go-v2/credentials/go_module_metadata.go−6 vendor/github.com/aws/aws-sdk-go-v2/credentials/processcreds/doc.go−92 vendor/github.com/aws/aws-sdk-go-v2/credentials/processcreds/provider.go−285 vendor/github.com/aws/aws-sdk-go-v2/credentials/ssocreds/doc.go−81 vendor/github.com/aws/aws-sdk-go-v2/credentials/ssocreds/sso_cached_token.go−233 vendor/github.com/aws/aws-sdk-go-v2/credentials/ssocreds/sso_credentials_provider.go−153 vendor/github.com/aws/aws-sdk-go-v2/credentials/ssocreds/sso_token_provider.go−147 vendor/github.com/aws/aws-sdk-go-v2/credentials/static_provider.go−53 vendor/github.com/aws/aws-sdk-go-v2/credentials/stscreds/assume_role_provider.go−326 vendor/github.com/aws/aws-sdk-go-v2/credentials/stscreds/web_identity_provider.go−169 vendor/github.com/aws/aws-sdk-go-v2/feature/ec2/imds/CHANGELOG.md−355 vendor/github.com/aws/aws-sdk-go-v2/feature/ec2/imds/LICENSE.txt−202 vendor/github.com/aws/aws-sdk-go-v2/feature/ec2/imds/api_client.go−352 vendor/github.com/aws/aws-sdk-go-v2/feature/ec2/imds/api_op_GetDynamicData.go−77 vendor/github.com/aws/aws-sdk-go-v2/feature/ec2/imds/api_op_GetIAMInfo.go−103 vendor/github.com/aws/aws-sdk-go-v2/feature/ec2/imds/api_op_GetInstanceIdentityDocument.go−110 vendor/github.com/aws/aws-sdk-go-v2/feature/ec2/imds/api_op_GetMetadata.go−77 vendor/github.com/aws/aws-sdk-go-v2/feature/ec2/imds/api_op_GetRegion.go−73 vendor/github.com/aws/aws-sdk-go-v2/feature/ec2/imds/api_op_GetToken.go−119 vendor/github.com/aws/aws-sdk-go-v2/feature/ec2/imds/api_op_GetUserData.go−61 vendor/github.com/aws/aws-sdk-go-v2/feature/ec2/imds/auth.go−48 vendor/github.com/aws/aws-sdk-go-v2/feature/ec2/imds/doc.go−12 vendor/github.com/aws/aws-sdk-go-v2/feature/ec2/imds/endpoints.go−20 vendor/github.com/aws/aws-sdk-go-v2/feature/ec2/imds/go_module_metadata.go−6 vendor/github.com/aws/aws-sdk-go-v2/feature/ec2/imds/internal/config/resolvers.go−114 vendor/github.com/aws/aws-sdk-go-v2/feature/ec2/imds/request_middleware.go−313 vendor/github.com/aws/aws-sdk-go-v2/feature/ec2/imds/token_provider.go−261 vendor/github.com/aws/aws-sdk-go-v2/internal/auth/auth.go−45 vendor/github.com/aws/aws-sdk-go-v2/internal/auth/scheme.go−191 vendor/github.com/aws/aws-sdk-go-v2/internal/auth/smithy/bearer_token_adapter.go−43 vendor/github.com/aws/aws-sdk-go-v2/internal/auth/smithy/bearer_token_signer_adapter.go−35 vendor/github.com/aws/aws-sdk-go-v2/internal/auth/smithy/credentials_adapter.go−46 vendor/github.com/aws/aws-sdk-go-v2/internal/auth/smithy/smithy.go−2 vendor/github.com/aws/aws-sdk-go-v2/internal/auth/smithy/v4signer_adapter.go−57 vendor/github.com/aws/aws-sdk-go-v2/internal/configsources/CHANGELOG.md−320 vendor/github.com/aws/aws-sdk-go-v2/internal/configsources/LICENSE.txt−202 vendor/github.com/aws/aws-sdk-go-v2/internal/configsources/config.go−65 vendor/github.com/aws/aws-sdk-go-v2/internal/configsources/endpoints.go−57 vendor/github.com/aws/aws-sdk-go-v2/internal/configsources/go_module_metadata.go−6 vendor/github.com/aws/aws-sdk-go-v2/internal/context/context.go−52 vendor/github.com/aws/aws-sdk-go-v2/internal/endpoints/awsrulesfn/arn.go−94 vendor/github.com/aws/aws-sdk-go-v2/internal/endpoints/awsrulesfn/doc.go−3 vendor/github.com/aws/aws-sdk-go-v2/internal/endpoints/awsrulesfn/generate.go−7 vendor/github.com/aws/aws-sdk-go-v2/internal/endpoints/awsrulesfn/host.go−51 vendor/github.com/aws/aws-sdk-go-v2/internal/endpoints/awsrulesfn/partition.go−76 vendor/github.com/aws/aws-sdk-go-v2/internal/endpoints/awsrulesfn/partitions.go−403 vendor/github.com/aws/aws-sdk-go-v2/internal/endpoints/awsrulesfn/partitions.json−220 vendor/github.com/aws/aws-sdk-go-v2/internal/endpoints/endpoints.go−201 vendor/github.com/aws/aws-sdk-go-v2/internal/endpoints/v2/CHANGELOG.md−294 vendor/github.com/aws/aws-sdk-go-v2/internal/endpoints/v2/LICENSE.txt−202 vendor/github.com/aws/aws-sdk-go-v2/internal/endpoints/v2/endpoints.go−302 vendor/github.com/aws/aws-sdk-go-v2/internal/endpoints/v2/go_module_metadata.go−6 vendor/github.com/aws/aws-sdk-go-v2/internal/ini/CHANGELOG.md−271 vendor/github.com/aws/aws-sdk-go-v2/internal/ini/LICENSE.txt−202 vendor/github.com/aws/aws-sdk-go-v2/internal/ini/errors.go−22 vendor/github.com/aws/aws-sdk-go-v2/internal/ini/go_module_metadata.go−6 vendor/github.com/aws/aws-sdk-go-v2/internal/ini/ini.go−56 vendor/github.com/aws/aws-sdk-go-v2/internal/ini/parse.go−109 vendor/github.com/aws/aws-sdk-go-v2/internal/ini/sections.go−157 vendor/github.com/aws/aws-sdk-go-v2/internal/ini/strings.go−89 vendor/github.com/aws/aws-sdk-go-v2/internal/ini/token.go−32 vendor/github.com/aws/aws-sdk-go-v2/internal/ini/tokenize.go−92 vendor/github.com/aws/aws-sdk-go-v2/internal/ini/value.go−93 vendor/github.com/aws/aws-sdk-go-v2/internal/middleware/middleware.go−42 vendor/github.com/aws/aws-sdk-go-v2/internal/rand/rand.go−33 vendor/github.com/aws/aws-sdk-go-v2/internal/sdk/interfaces.go−9 vendor/github.com/aws/aws-sdk-go-v2/internal/sdk/time.go−74 vendor/github.com/aws/aws-sdk-go-v2/internal/sdkio/byte.go−12 vendor/github.com/aws/aws-sdk-go-v2/internal/shareddefaults/shared_config.go−47 vendor/github.com/aws/aws-sdk-go-v2/internal/strings/strings.go−11 vendor/github.com/aws/aws-sdk-go-v2/internal/sync/singleflight/LICENSE−28 vendor/github.com/aws/aws-sdk-go-v2/internal/sync/singleflight/docs.go−7 vendor/github.com/aws/aws-sdk-go-v2/internal/sync/singleflight/singleflight.go−210 vendor/github.com/aws/aws-sdk-go-v2/internal/timeconv/duration.go−13 vendor/github.com/aws/aws-sdk-go-v2/service/internal/accept-encoding/CHANGELOG.md−140 vendor/github.com/aws/aws-sdk-go-v2/service/internal/accept-encoding/LICENSE.txt−202 vendor/github.com/aws/aws-sdk-go-v2/service/internal/accept-encoding/accept_encoding_gzip.go−176 vendor/github.com/aws/aws-sdk-go-v2/service/internal/accept-encoding/doc.go−22 vendor/github.com/aws/aws-sdk-go-v2/service/internal/accept-encoding/go_module_metadata.go−6 vendor/github.com/aws/aws-sdk-go-v2/service/internal/presigned-url/CHANGELOG.md−346 vendor/github.com/aws/aws-sdk-go-v2/service/internal/presigned-url/LICENSE.txt−202 vendor/github.com/aws/aws-sdk-go-v2/service/internal/presigned-url/context.go−56 vendor/github.com/aws/aws-sdk-go-v2/service/internal/presigned-url/doc.go−3 vendor/github.com/aws/aws-sdk-go-v2/service/internal/presigned-url/go_module_metadata.go−6 vendor/github.com/aws/aws-sdk-go-v2/service/internal/presigned-url/middleware.go−110 vendor/github.com/aws/aws-sdk-go-v2/service/sso/CHANGELOG.md−475 vendor/github.com/aws/aws-sdk-go-v2/service/sso/LICENSE.txt−202 vendor/github.com/aws/aws-sdk-go-v2/service/sso/api_client.go−627 vendor/github.com/aws/aws-sdk-go-v2/service/sso/api_op_GetRoleCredentials.go−153 vendor/github.com/aws/aws-sdk-go-v2/service/sso/api_op_ListAccountRoles.go−251 vendor/github.com/aws/aws-sdk-go-v2/service/sso/api_op_ListAccounts.go−249 vendor/github.com/aws/aws-sdk-go-v2/service/sso/api_op_Logout.go−152 vendor/github.com/aws/aws-sdk-go-v2/service/sso/auth.go−308 vendor/github.com/aws/aws-sdk-go-v2/service/sso/deserializers.go−1161 vendor/github.com/aws/aws-sdk-go-v2/service/sso/doc.go−27 vendor/github.com/aws/aws-sdk-go-v2/service/sso/endpoints.go−550 vendor/github.com/aws/aws-sdk-go-v2/service/sso/generated.json−35 vendor/github.com/aws/aws-sdk-go-v2/service/sso/go_module_metadata.go−6 vendor/github.com/aws/aws-sdk-go-v2/service/sso/internal/endpoints/endpoints.go−566 vendor/github.com/aws/aws-sdk-go-v2/service/sso/options.go−227 vendor/github.com/aws/aws-sdk-go-v2/service/sso/serializers.go−284 vendor/github.com/aws/aws-sdk-go-v2/service/sso/types/errors.go−115 vendor/github.com/aws/aws-sdk-go-v2/service/sso/types/types.go−63 vendor/github.com/aws/aws-sdk-go-v2/service/sso/validators.go−175 vendor/github.com/aws/aws-sdk-go-v2/service/ssooidc/CHANGELOG.md−469 vendor/github.com/aws/aws-sdk-go-v2/service/ssooidc/LICENSE.txt−202 vendor/github.com/aws/aws-sdk-go-v2/service/ssooidc/api_client.go−627 vendor/github.com/aws/aws-sdk-go-v2/service/ssooidc/api_op_CreateToken.go−225 vendor/github.com/aws/aws-sdk-go-v2/service/ssooidc/api_op_CreateTokenWithIAM.go−256 vendor/github.com/aws/aws-sdk-go-v2/service/ssooidc/api_op_RegisterClient.go−186 vendor/github.com/aws/aws-sdk-go-v2/service/ssooidc/api_op_StartDeviceAuthorization.go−176 vendor/github.com/aws/aws-sdk-go-v2/service/ssooidc/auth.go−302 vendor/github.com/aws/aws-sdk-go-v2/service/ssooidc/deserializers.go−2167 vendor/github.com/aws/aws-sdk-go-v2/service/ssooidc/doc.go−46 vendor/github.com/aws/aws-sdk-go-v2/service/ssooidc/endpoints.go−550 vendor/github.com/aws/aws-sdk-go-v2/service/ssooidc/generated.json−35 vendor/github.com/aws/aws-sdk-go-v2/service/ssooidc/go_module_metadata.go−6 vendor/github.com/aws/aws-sdk-go-v2/service/ssooidc/internal/endpoints/endpoints.go−566 vendor/github.com/aws/aws-sdk-go-v2/service/ssooidc/options.go−227 vendor/github.com/aws/aws-sdk-go-v2/service/ssooidc/serializers.go−487 vendor/github.com/aws/aws-sdk-go-v2/service/ssooidc/types/errors.go−428 vendor/github.com/aws/aws-sdk-go-v2/service/ssooidc/types/types.go−9 vendor/github.com/aws/aws-sdk-go-v2/service/ssooidc/validators.go−184 vendor/github.com/aws/aws-sdk-go-v2/service/sts/CHANGELOG.md−493 vendor/github.com/aws/aws-sdk-go-v2/service/sts/LICENSE.txt−202 vendor/github.com/aws/aws-sdk-go-v2/service/sts/api_client.go−779 vendor/github.com/aws/aws-sdk-go-v2/service/sts/api_op_AssumeRole.go−520 vendor/github.com/aws/aws-sdk-go-v2/service/sts/api_op_AssumeRoleWithSAML.go−436 vendor/github.com/aws/aws-sdk-go-v2/service/sts/api_op_AssumeRoleWithWebIdentity.go−447 vendor/github.com/aws/aws-sdk-go-v2/service/sts/api_op_DecodeAuthorizationMessage.go−177 vendor/github.com/aws/aws-sdk-go-v2/service/sts/api_op_GetAccessKeyInfo.go−168 vendor/github.com/aws/aws-sdk-go-v2/service/sts/api_op_GetCallerIdentity.go−180 vendor/github.com/aws/aws-sdk-go-v2/service/sts/api_op_GetFederationToken.go−381 vendor/github.com/aws/aws-sdk-go-v2/service/sts/api_op_GetSessionToken.go−227 vendor/github.com/aws/aws-sdk-go-v2/service/sts/auth.go−296 vendor/github.com/aws/aws-sdk-go-v2/service/sts/deserializers.go−2516 vendor/github.com/aws/aws-sdk-go-v2/service/sts/doc.go−13 vendor/github.com/aws/aws-sdk-go-v2/service/sts/endpoints.go−1130 vendor/github.com/aws/aws-sdk-go-v2/service/sts/generated.json−41 vendor/github.com/aws/aws-sdk-go-v2/service/sts/go_module_metadata.go−6 vendor/github.com/aws/aws-sdk-go-v2/service/sts/internal/endpoints/endpoints.go−512 vendor/github.com/aws/aws-sdk-go-v2/service/sts/options.go−227 vendor/github.com/aws/aws-sdk-go-v2/service/sts/serializers.go−862 vendor/github.com/aws/aws-sdk-go-v2/service/sts/types/errors.go−248 vendor/github.com/aws/aws-sdk-go-v2/service/sts/types/types.go−144 vendor/github.com/aws/aws-sdk-go-v2/service/sts/validators.go−305 vendor/github.com/aws/smithy-go/.gitignore−29 vendor/github.com/aws/smithy-go/.travis.yml−28 vendor/github.com/aws/smithy-go/CHANGELOG.md−239 vendor/github.com/aws/smithy-go/CODE_OF_CONDUCT.md−4 vendor/github.com/aws/smithy-go/CONTRIBUTING.md−59 vendor/github.com/aws/smithy-go/LICENSE−175 vendor/github.com/aws/smithy-go/Makefile−102 vendor/github.com/aws/smithy-go/NOTICE−1 vendor/github.com/aws/smithy-go/README.md−27 vendor/github.com/aws/smithy-go/auth/auth.go−3 vendor/github.com/aws/smithy-go/auth/bearer/docs.go−3 vendor/github.com/aws/smithy-go/auth/bearer/middleware.go−104 vendor/github.com/aws/smithy-go/auth/bearer/token.go−50 vendor/github.com/aws/smithy-go/auth/bearer/token_cache.go−208 vendor/github.com/aws/smithy-go/auth/identity.go−47 vendor/github.com/aws/smithy-go/auth/option.go−25 vendor/github.com/aws/smithy-go/auth/scheme_id.go−20 vendor/github.com/aws/smithy-go/context/suppress_expired.go−81 vendor/github.com/aws/smithy-go/doc.go−2 vendor/github.com/aws/smithy-go/document.go−10 vendor/github.com/aws/smithy-go/document/doc.go−12 vendor/github.com/aws/smithy-go/document/document.go−153 vendor/github.com/aws/smithy-go/document/errors.go−75 vendor/github.com/aws/smithy-go/encoding/doc.go−4 vendor/github.com/aws/smithy-go/encoding/encoding.go−40 vendor/github.com/aws/smithy-go/encoding/httpbinding/encode.go−123 vendor/github.com/aws/smithy-go/encoding/httpbinding/header.go−122 vendor/github.com/aws/smithy-go/encoding/httpbinding/path_replace.go−108 vendor/github.com/aws/smithy-go/encoding/httpbinding/query.go−107 vendor/github.com/aws/smithy-go/encoding/httpbinding/uri.go−111 vendor/github.com/aws/smithy-go/encoding/json/array.go−35 vendor/github.com/aws/smithy-go/encoding/json/constants.go−15 vendor/github.com/aws/smithy-go/encoding/json/decoder_util.go−139 vendor/github.com/aws/smithy-go/encoding/json/encoder.go−30 vendor/github.com/aws/smithy-go/encoding/json/escape.go−198 vendor/github.com/aws/smithy-go/encoding/json/object.go−40 vendor/github.com/aws/smithy-go/encoding/json/value.go−149 vendor/github.com/aws/smithy-go/encoding/xml/array.go−49 vendor/github.com/aws/smithy-go/encoding/xml/constants.go−10 vendor/github.com/aws/smithy-go/encoding/xml/doc.go−49 vendor/github.com/aws/smithy-go/encoding/xml/element.go−91 vendor/github.com/aws/smithy-go/encoding/xml/encoder.go−51 vendor/github.com/aws/smithy-go/encoding/xml/error_utils.go−51 vendor/github.com/aws/smithy-go/encoding/xml/escape.go−137 vendor/github.com/aws/smithy-go/encoding/xml/map.go−53 vendor/github.com/aws/smithy-go/encoding/xml/value.go−302 vendor/github.com/aws/smithy-go/encoding/xml/xml_decoder.go−154 vendor/github.com/aws/smithy-go/endpoints/endpoint.go−23 vendor/github.com/aws/smithy-go/errors.go−137 vendor/github.com/aws/smithy-go/go_module_metadata.go−6 vendor/github.com/aws/smithy-go/internal/sync/singleflight/LICENSE−28 vendor/github.com/aws/smithy-go/internal/sync/singleflight/docs.go−8 vendor/github.com/aws/smithy-go/internal/sync/singleflight/singleflight.go−210 vendor/github.com/aws/smithy-go/io/byte.go−12 vendor/github.com/aws/smithy-go/io/doc.go−2 vendor/github.com/aws/smithy-go/io/reader.go−16 vendor/github.com/aws/smithy-go/io/ringbuffer.go−94 vendor/github.com/aws/smithy-go/local-mod-replace.sh−39 vendor/github.com/aws/smithy-go/logging/logger.go−82 vendor/github.com/aws/smithy-go/middleware/doc.go−67 vendor/github.com/aws/smithy-go/middleware/logging.go−46 vendor/github.com/aws/smithy-go/middleware/metadata.go−65 vendor/github.com/aws/smithy-go/middleware/middleware.go−71 vendor/github.com/aws/smithy-go/middleware/ordered_group.go−268 vendor/github.com/aws/smithy-go/middleware/stack.go−209 vendor/github.com/aws/smithy-go/middleware/stack_values.go−100 vendor/github.com/aws/smithy-go/middleware/step_build.go−211 vendor/github.com/aws/smithy-go/middleware/step_deserialize.go−217 vendor/github.com/aws/smithy-go/middleware/step_finalize.go−211 vendor/github.com/aws/smithy-go/middleware/step_initialize.go−211 vendor/github.com/aws/smithy-go/middleware/step_serialize.go−219 vendor/github.com/aws/smithy-go/modman.toml−10 vendor/github.com/aws/smithy-go/private/requestcompression/gzip.go−30 vendor/github.com/aws/smithy-go/private/requestcompression/middleware_capture_request_compression.go−52 vendor/github.com/aws/smithy-go/private/requestcompression/request_compression.go−103 vendor/github.com/aws/smithy-go/properties.go−62 vendor/github.com/aws/smithy-go/ptr/doc.go−5 vendor/github.com/aws/smithy-go/ptr/from_ptr.go−601 vendor/github.com/aws/smithy-go/ptr/gen_scalars.go−83 vendor/github.com/aws/smithy-go/ptr/to_ptr.go−499 vendor/github.com/aws/smithy-go/rand/doc.go−3 vendor/github.com/aws/smithy-go/rand/rand.go−31 vendor/github.com/aws/smithy-go/rand/uuid.go−87 vendor/github.com/aws/smithy-go/time/time.go−134 vendor/github.com/aws/smithy-go/transport/http/auth.go−21 vendor/github.com/aws/smithy-go/transport/http/auth_schemes.go−45 vendor/github.com/aws/smithy-go/transport/http/checksum_middleware.go−70 vendor/github.com/aws/smithy-go/transport/http/client.go−120 vendor/github.com/aws/smithy-go/transport/http/doc.go−5 vendor/github.com/aws/smithy-go/transport/http/headerlist.go−163 vendor/github.com/aws/smithy-go/transport/http/host.go−89 vendor/github.com/aws/smithy-go/transport/http/internal/io/safe.go−75 vendor/github.com/aws/smithy-go/transport/http/md5_checksum.go−25 vendor/github.com/aws/smithy-go/transport/http/middleware_close_response_body.go−79 vendor/github.com/aws/smithy-go/transport/http/middleware_content_length.go−84 vendor/github.com/aws/smithy-go/transport/http/middleware_header_comment.go−81 vendor/github.com/aws/smithy-go/transport/http/middleware_headers.go−167 vendor/github.com/aws/smithy-go/transport/http/middleware_http_logging.go−75 vendor/github.com/aws/smithy-go/transport/http/middleware_metadata.go−51 vendor/github.com/aws/smithy-go/transport/http/middleware_min_proto.go−79 vendor/github.com/aws/smithy-go/transport/http/properties.go−80 vendor/github.com/aws/smithy-go/transport/http/request.go−189 vendor/github.com/aws/smithy-go/transport/http/response.go−34 vendor/github.com/aws/smithy-go/transport/http/time.go−13 vendor/github.com/aws/smithy-go/transport/http/url.go−44 vendor/github.com/aws/smithy-go/transport/http/user_agent.go−37 vendor/github.com/aws/smithy-go/validation.go−140 vendor/github.com/aymanbagabas/go-osc52/v2/LICENSE−21 vendor/github.com/aymanbagabas/go-osc52/v2/README.md−83 vendor/github.com/aymanbagabas/go-osc52/v2/osc52.go−305 vendor/github.com/aymanbagabas/go-udiff/LICENSE-BSD−27 vendor/github.com/aymanbagabas/go-udiff/LICENSE-MIT−21 vendor/github.com/aymanbagabas/go-udiff/README.md−142 vendor/github.com/aymanbagabas/go-udiff/diff.go−177 vendor/github.com/aymanbagabas/go-udiff/export.go−16 vendor/github.com/aymanbagabas/go-udiff/lcs/common.go−179 vendor/github.com/aymanbagabas/go-udiff/lcs/doc.go−156 vendor/github.com/aymanbagabas/go-udiff/lcs/git.sh−33 vendor/github.com/aymanbagabas/go-udiff/lcs/labels.go−55 vendor/github.com/aymanbagabas/go-udiff/lcs/old.go−478 vendor/github.com/aymanbagabas/go-udiff/lcs/sequence.go−113 vendor/github.com/aymanbagabas/go-udiff/merge.go−81 vendor/github.com/aymanbagabas/go-udiff/ndiff.go−99 vendor/github.com/aymanbagabas/go-udiff/unified.go−251 vendor/github.com/aymerick/douceur/LICENSE−22 vendor/github.com/aymerick/douceur/css/declaration.go−60 vendor/github.com/aymerick/douceur/css/rule.go−230 vendor/github.com/aymerick/douceur/css/stylesheet.go−25 vendor/github.com/aymerick/douceur/parser/parser.go−409 vendor/github.com/bmatcuk/doublestar/v4/.codecov.yml−10 vendor/github.com/bmatcuk/doublestar/v4/.gitignore−32 vendor/github.com/bmatcuk/doublestar/v4/LICENSE−22 vendor/github.com/bmatcuk/doublestar/v4/README.md−433 vendor/github.com/bmatcuk/doublestar/v4/UPGRADING.md−63 vendor/github.com/bmatcuk/doublestar/v4/doublestar.go−13 vendor/github.com/bmatcuk/doublestar/v4/glob.go−472 vendor/github.com/bmatcuk/doublestar/v4/globoptions.go−144 vendor/github.com/bmatcuk/doublestar/v4/globwalk.go−414 vendor/github.com/bmatcuk/doublestar/v4/match.go−403 vendor/github.com/bmatcuk/doublestar/v4/utils.go−160 vendor/github.com/bmatcuk/doublestar/v4/validate.go−82 vendor/github.com/charlievieth/fastwalk/.gitignore−2 vendor/github.com/charlievieth/fastwalk/LICENSE−21 vendor/github.com/charlievieth/fastwalk/Makefile−101 vendor/github.com/charlievieth/fastwalk/README.md−193 vendor/github.com/charlievieth/fastwalk/adapters.go−102 vendor/github.com/charlievieth/fastwalk/dirent.go−73 vendor/github.com/charlievieth/fastwalk/dirent_portable.go−134 vendor/github.com/charlievieth/fastwalk/dirent_unix.go−146 vendor/github.com/charlievieth/fastwalk/entry_filter_portable.go−37 vendor/github.com/charlievieth/fastwalk/entry_filter_unix.go−59 vendor/github.com/charlievieth/fastwalk/entry_filter_windows.go−156 vendor/github.com/charlievieth/fastwalk/fastwalk.go−697 vendor/github.com/charlievieth/fastwalk/fastwalk_darwin.go−122 vendor/github.com/charlievieth/fastwalk/fastwalk_portable.go−65 vendor/github.com/charlievieth/fastwalk/fastwalk_unix.go−131 vendor/github.com/charlievieth/fastwalk/go.LICENSE−27 vendor/github.com/charlievieth/fastwalk/internal/dirent/dirent.go−109 vendor/github.com/charlievieth/fastwalk/internal/dirent/dirent_aix.go−29 vendor/github.com/charlievieth/fastwalk/internal/dirent/dirent_dragonfly.go−54 vendor/github.com/charlievieth/fastwalk/internal/dirent/dirent_freebsd.go−46 vendor/github.com/charlievieth/fastwalk/internal/dirent/dirent_js.go−27 vendor/github.com/charlievieth/fastwalk/internal/dirent/dirent_linux.go−50 vendor/github.com/charlievieth/fastwalk/internal/dirent/dirent_netbsd.go−46 vendor/github.com/charlievieth/fastwalk/internal/dirent/dirent_openbsd.go−46 vendor/github.com/charlievieth/fastwalk/internal/dirent/dirent_solaris.go−29 vendor/github.com/charlievieth/fastwalk/internal/dirent/doc.go−2 vendor/github.com/charlievieth/fastwalk/internal/dirent/endian_big.go−9 vendor/github.com/charlievieth/fastwalk/internal/dirent/endian_little.go−9 vendor/github.com/charlievieth/fastwalk/internal/fmtdirent/fmtdirent_go120.go−31 vendor/github.com/charlievieth/fastwalk/internal/fmtdirent/fmtdirent_go121.go−15 vendor/github.com/charlievieth/fastwalk/zsyscall_darwin.go−93 vendor/github.com/charlievieth/fastwalk/zsyscall_darwin_amd64.1_13.s−22 vendor/github.com/charlievieth/fastwalk/zsyscall_darwin_arm64.1_13.s−22 vendor/github.com/charmbracelet/bubbles/v2/LICENSE−21 vendor/github.com/charmbracelet/bubbles/v2/cursor/cursor.go−241 vendor/github.com/charmbracelet/bubbles/v2/filepicker/filepicker.go−526 vendor/github.com/charmbracelet/bubbles/v2/filepicker/hidden_unix.go−11 vendor/github.com/charmbracelet/bubbles/v2/filepicker/hidden_windows.go−21 vendor/github.com/charmbracelet/bubbles/v2/help/help.go−243 vendor/github.com/charmbracelet/bubbles/v2/internal/memoization/memoization.go−125 vendor/github.com/charmbracelet/bubbles/v2/internal/runeutil/runeutil.go−102 vendor/github.com/charmbracelet/bubbles/v2/key/key.go−140 vendor/github.com/charmbracelet/bubbles/v2/spinner/spinner.go−211 vendor/github.com/charmbracelet/bubbles/v2/textarea/textarea.go−1727 vendor/github.com/charmbracelet/bubbles/v2/textinput/styles.go−96 vendor/github.com/charmbracelet/bubbles/v2/textinput/textinput.go−968 vendor/github.com/charmbracelet/bubbles/v2/viewport/highlight.go−141 vendor/github.com/charmbracelet/bubbles/v2/viewport/keymap.go−58 vendor/github.com/charmbracelet/bubbles/v2/viewport/viewport.go−754 vendor/github.com/charmbracelet/bubbletea/v2/.gitattributes−1 vendor/github.com/charmbracelet/bubbletea/v2/.gitignore−23 vendor/github.com/charmbracelet/bubbletea/v2/.golangci.yml−40 vendor/github.com/charmbracelet/bubbletea/v2/.goreleaser.yml−5 vendor/github.com/charmbracelet/bubbletea/v2/LICENSE−21 vendor/github.com/charmbracelet/bubbletea/v2/README.md−411 vendor/github.com/charmbracelet/bubbletea/v2/Taskfile.yaml−14 vendor/github.com/charmbracelet/bubbletea/v2/clipboard.go−69 vendor/github.com/charmbracelet/bubbletea/v2/color.go−121 vendor/github.com/charmbracelet/bubbletea/v2/commands.go−186 vendor/github.com/charmbracelet/bubbletea/v2/cursed_renderer.go−465 vendor/github.com/charmbracelet/bubbletea/v2/cursor.go−26 vendor/github.com/charmbracelet/bubbletea/v2/environ.go−34 vendor/github.com/charmbracelet/bubbletea/v2/exec.go−133 vendor/github.com/charmbracelet/bubbletea/v2/focus.go−9 vendor/github.com/charmbracelet/bubbletea/v2/input.go−67 vendor/github.com/charmbracelet/bubbletea/v2/key.go−371 vendor/github.com/charmbracelet/bubbletea/v2/keyboard.go−160 vendor/github.com/charmbracelet/bubbletea/v2/logging.go−53 vendor/github.com/charmbracelet/bubbletea/v2/mod.go−27 vendor/github.com/charmbracelet/bubbletea/v2/mode.go−8 vendor/github.com/charmbracelet/bubbletea/v2/mouse.go−144 vendor/github.com/charmbracelet/bubbletea/v2/nil_renderer.go−71 vendor/github.com/charmbracelet/bubbletea/v2/options.go−302 vendor/github.com/charmbracelet/bubbletea/v2/paste.go−13 vendor/github.com/charmbracelet/bubbletea/v2/profile.go−15 vendor/github.com/charmbracelet/bubbletea/v2/raw.go−37 vendor/github.com/charmbracelet/bubbletea/v2/renderer.go−127 vendor/github.com/charmbracelet/bubbletea/v2/screen.go−154 vendor/github.com/charmbracelet/bubbletea/v2/signals_unix.go−33 vendor/github.com/charmbracelet/bubbletea/v2/signals_windows.go−10 vendor/github.com/charmbracelet/bubbletea/v2/standard_renderer.go−387 vendor/github.com/charmbracelet/bubbletea/v2/tea.go−1492 vendor/github.com/charmbracelet/bubbletea/v2/termcap.go−41 vendor/github.com/charmbracelet/bubbletea/v2/termios_bsd.go−13 vendor/github.com/charmbracelet/bubbletea/v2/termios_other.go−8 vendor/github.com/charmbracelet/bubbletea/v2/termios_unix.go−14 vendor/github.com/charmbracelet/bubbletea/v2/tty.go−179 vendor/github.com/charmbracelet/bubbletea/v2/tty_unix.go−54 vendor/github.com/charmbracelet/bubbletea/v2/tty_windows.go−74 vendor/github.com/charmbracelet/bubbletea/v2/util.go−8 vendor/github.com/charmbracelet/bubbletea/v2/xterm.go−14 vendor/github.com/charmbracelet/colorprofile/.golangci.yml−41 vendor/github.com/charmbracelet/colorprofile/.goreleaser.yml−6 vendor/github.com/charmbracelet/colorprofile/LICENSE−21 vendor/github.com/charmbracelet/colorprofile/README.md−103 vendor/github.com/charmbracelet/colorprofile/doc.go−4 vendor/github.com/charmbracelet/colorprofile/env.go−293 vendor/github.com/charmbracelet/colorprofile/env_other.go−8 vendor/github.com/charmbracelet/colorprofile/env_windows.go−45 vendor/github.com/charmbracelet/colorprofile/profile.go−399 vendor/github.com/charmbracelet/colorprofile/writer.go−169 vendor/github.com/charmbracelet/fang/.gitignore−2 vendor/github.com/charmbracelet/fang/.golangci.yml−40 vendor/github.com/charmbracelet/fang/.goreleaser.yml−5 vendor/github.com/charmbracelet/fang/LICENSE.md−21 vendor/github.com/charmbracelet/fang/README.md−92 vendor/github.com/charmbracelet/fang/Taskfile.yml−7 vendor/github.com/charmbracelet/fang/fang.go−212 vendor/github.com/charmbracelet/fang/help.go−458 vendor/github.com/charmbracelet/fang/theme.go−208 vendor/github.com/charmbracelet/glamour/v2/.editorconfig−18 vendor/github.com/charmbracelet/glamour/v2/.gitattributes−2 vendor/github.com/charmbracelet/glamour/v2/.gitignore−2 vendor/github.com/charmbracelet/glamour/v2/.golangci.yml−49 vendor/github.com/charmbracelet/glamour/v2/.goreleaser.yml−6 vendor/github.com/charmbracelet/glamour/v2/CONTRIBUTING.md−23 vendor/github.com/charmbracelet/glamour/v2/LICENSE−21 vendor/github.com/charmbracelet/glamour/v2/README.md−96 vendor/github.com/charmbracelet/glamour/v2/Taskfile.yml−25 vendor/github.com/charmbracelet/glamour/v2/ansi/ansi.go−3 vendor/github.com/charmbracelet/glamour/v2/ansi/baseelement.go−157 vendor/github.com/charmbracelet/glamour/v2/ansi/blockelement.go−65 vendor/github.com/charmbracelet/glamour/v2/ansi/blockstack.go−95 vendor/github.com/charmbracelet/glamour/v2/ansi/codeblock.go−150 vendor/github.com/charmbracelet/glamour/v2/ansi/codespan.go−15 vendor/github.com/charmbracelet/glamour/v2/ansi/context.go−38 vendor/github.com/charmbracelet/glamour/v2/ansi/elements.go−479 vendor/github.com/charmbracelet/glamour/v2/ansi/emphasis.go−47 vendor/github.com/charmbracelet/glamour/v2/ansi/heading.go−79 vendor/github.com/charmbracelet/glamour/v2/ansi/image.go−57 vendor/github.com/charmbracelet/glamour/v2/ansi/link.go−112 vendor/github.com/charmbracelet/glamour/v2/ansi/listitem.go−29 vendor/github.com/charmbracelet/glamour/v2/ansi/margin.go−189 vendor/github.com/charmbracelet/glamour/v2/ansi/paragraph.go−62 vendor/github.com/charmbracelet/glamour/v2/ansi/renderer.go−166 vendor/github.com/charmbracelet/glamour/v2/ansi/style.go−252 vendor/github.com/charmbracelet/glamour/v2/ansi/table.go−205 vendor/github.com/charmbracelet/glamour/v2/ansi/table_links.go−234 vendor/github.com/charmbracelet/glamour/v2/ansi/task.go−27 vendor/github.com/charmbracelet/glamour/v2/ansi/templatehelper.go−86 vendor/github.com/charmbracelet/glamour/v2/examples.sh−19 vendor/github.com/charmbracelet/glamour/v2/gallery.sh−23 vendor/github.com/charmbracelet/glamour/v2/glamour.go−294 vendor/github.com/charmbracelet/glamour/v2/internal/autolink/autolink.go−55 vendor/github.com/charmbracelet/glamour/v2/styles/README.md−565 vendor/github.com/charmbracelet/glamour/v2/styles/ascii.json−83 vendor/github.com/charmbracelet/glamour/v2/styles/dark.json−191 vendor/github.com/charmbracelet/glamour/v2/styles/dracula.go−216 vendor/github.com/charmbracelet/glamour/v2/styles/dracula.json−188 vendor/github.com/charmbracelet/glamour/v2/styles/light.json−190 vendor/github.com/charmbracelet/glamour/v2/styles/notty.json−83 vendor/github.com/charmbracelet/glamour/v2/styles/pink.json−90 vendor/github.com/charmbracelet/glamour/v2/styles/styles.go−680 vendor/github.com/charmbracelet/glamour/v2/styles/tokyo-night.go−209 vendor/github.com/charmbracelet/glamour/v2/styles/tokyo_night.json−182 vendor/github.com/charmbracelet/lipgloss/v2/.editorconfig−18 vendor/github.com/charmbracelet/lipgloss/v2/.gitattributes−1 vendor/github.com/charmbracelet/lipgloss/v2/.gitignore−2 vendor/github.com/charmbracelet/lipgloss/v2/.golangci.yml−49 vendor/github.com/charmbracelet/lipgloss/v2/.goreleaser.yml−5 vendor/github.com/charmbracelet/lipgloss/v2/LICENSE−21 vendor/github.com/charmbracelet/lipgloss/v2/README.md−792 vendor/github.com/charmbracelet/lipgloss/v2/Taskfile.yaml−19 vendor/github.com/charmbracelet/lipgloss/v2/align.go−82 vendor/github.com/charmbracelet/lipgloss/v2/ansi_unix.go−9 vendor/github.com/charmbracelet/lipgloss/v2/ansi_windows.go−31 vendor/github.com/charmbracelet/lipgloss/v2/borders.go−489 vendor/github.com/charmbracelet/lipgloss/v2/canvas.go−298 vendor/github.com/charmbracelet/lipgloss/v2/color.go−227 vendor/github.com/charmbracelet/lipgloss/v2/get.go−604 vendor/github.com/charmbracelet/lipgloss/v2/join.go−175 vendor/github.com/charmbracelet/lipgloss/v2/lipgloss.go−3 vendor/github.com/charmbracelet/lipgloss/v2/position.go−134 vendor/github.com/charmbracelet/lipgloss/v2/query.go−89 vendor/github.com/charmbracelet/lipgloss/v2/ranges.go−48 vendor/github.com/charmbracelet/lipgloss/v2/runes.go−43 vendor/github.com/charmbracelet/lipgloss/v2/set.go−822 vendor/github.com/charmbracelet/lipgloss/v2/size.go−40 vendor/github.com/charmbracelet/lipgloss/v2/style.go−581 vendor/github.com/charmbracelet/lipgloss/v2/table/resizing.go−481 vendor/github.com/charmbracelet/lipgloss/v2/table/rows.go−130 vendor/github.com/charmbracelet/lipgloss/v2/table/table.go−561 vendor/github.com/charmbracelet/lipgloss/v2/table/util.go−44 vendor/github.com/charmbracelet/lipgloss/v2/terminal.go−114 vendor/github.com/charmbracelet/lipgloss/v2/tree/children.go−100 vendor/github.com/charmbracelet/lipgloss/v2/tree/enumerator.go−74 vendor/github.com/charmbracelet/lipgloss/v2/tree/renderer.go−142 vendor/github.com/charmbracelet/lipgloss/v2/tree/tree.go−369 vendor/github.com/charmbracelet/lipgloss/v2/unset.go−338 vendor/github.com/charmbracelet/lipgloss/v2/whitespace.go−69 vendor/github.com/charmbracelet/lipgloss/v2/writer.go−160 vendor/github.com/charmbracelet/log/v2/.gitignore−17 vendor/github.com/charmbracelet/log/v2/.golangci-soft.yml−40 vendor/github.com/charmbracelet/log/v2/.golangci.yml−28 vendor/github.com/charmbracelet/log/v2/.goreleaser.yml−3 vendor/github.com/charmbracelet/log/v2/LICENSE−21 vendor/github.com/charmbracelet/log/v2/README.md−367 vendor/github.com/charmbracelet/log/v2/context.go−23 vendor/github.com/charmbracelet/log/v2/formatter.go−27 vendor/github.com/charmbracelet/log/v2/json.go−151 vendor/github.com/charmbracelet/log/v2/level.go−65 vendor/github.com/charmbracelet/log/v2/logfmt.go−32 vendor/github.com/charmbracelet/log/v2/logger.go−411 vendor/github.com/charmbracelet/log/v2/logger_121.go−71 vendor/github.com/charmbracelet/log/v2/logger_no121.go−68 vendor/github.com/charmbracelet/log/v2/options.go−61 vendor/github.com/charmbracelet/log/v2/pkg.go−248 vendor/github.com/charmbracelet/log/v2/stdlog.go−67 vendor/github.com/charmbracelet/log/v2/styles.go−83 vendor/github.com/charmbracelet/log/v2/text.go−272 vendor/github.com/charmbracelet/ultraviolet/.gitattributes−1 vendor/github.com/charmbracelet/ultraviolet/.golangci.yml−40 vendor/github.com/charmbracelet/ultraviolet/.goreleaser.yml−5 vendor/github.com/charmbracelet/ultraviolet/LICENSE−5 vendor/github.com/charmbracelet/ultraviolet/README.md−27 vendor/github.com/charmbracelet/ultraviolet/TUTORIAL.md−207 vendor/github.com/charmbracelet/ultraviolet/border.go−231 vendor/github.com/charmbracelet/ultraviolet/buffer.go−612 vendor/github.com/charmbracelet/ultraviolet/cancelreader_other.go−14 vendor/github.com/charmbracelet/ultraviolet/cancelreader_windows.go−135 vendor/github.com/charmbracelet/ultraviolet/cell.go−519 vendor/github.com/charmbracelet/ultraviolet/doc.go−6 vendor/github.com/charmbracelet/ultraviolet/environ.go−32 vendor/github.com/charmbracelet/ultraviolet/event.go−479 vendor/github.com/charmbracelet/ultraviolet/input.go−89 vendor/github.com/charmbracelet/ultraviolet/key.go−766 vendor/github.com/charmbracelet/ultraviolet/key_table.go−664 vendor/github.com/charmbracelet/ultraviolet/mouse.go−86 vendor/github.com/charmbracelet/ultraviolet/parse.go−1768 vendor/github.com/charmbracelet/ultraviolet/styled.go−292 vendor/github.com/charmbracelet/ultraviolet/tabstop.go−142 vendor/github.com/charmbracelet/ultraviolet/terminal.go−1097 vendor/github.com/charmbracelet/ultraviolet/terminal_other.go−17 vendor/github.com/charmbracelet/ultraviolet/terminal_reader.go−366 vendor/github.com/charmbracelet/ultraviolet/terminal_reader_other.go−18 vendor/github.com/charmbracelet/ultraviolet/terminal_reader_windows.go−660 vendor/github.com/charmbracelet/ultraviolet/terminal_renderer.go−1584 vendor/github.com/charmbracelet/ultraviolet/terminal_renderer_hardscroll.go−275 vendor/github.com/charmbracelet/ultraviolet/terminal_renderer_hashmap.go−294 vendor/github.com/charmbracelet/ultraviolet/terminal_unix.go−72 vendor/github.com/charmbracelet/ultraviolet/terminal_windows.go−93 vendor/github.com/charmbracelet/ultraviolet/tty.go−18 vendor/github.com/charmbracelet/ultraviolet/tty_other.go−14 vendor/github.com/charmbracelet/ultraviolet/tty_unix.go−28 vendor/github.com/charmbracelet/ultraviolet/tty_windows.go−27 vendor/github.com/charmbracelet/ultraviolet/utils.go−15 vendor/github.com/charmbracelet/ultraviolet/uv.go−52 vendor/github.com/charmbracelet/ultraviolet/winch.go−29 vendor/github.com/charmbracelet/ultraviolet/winch_other.go−15 vendor/github.com/charmbracelet/ultraviolet/winch_unix.go−65 vendor/github.com/charmbracelet/x/ansi/LICENSE−21 vendor/github.com/charmbracelet/x/ansi/ansi.go−11 vendor/github.com/charmbracelet/x/ansi/ascii.go−8 vendor/github.com/charmbracelet/x/ansi/background.go−178 vendor/github.com/charmbracelet/x/ansi/c0.go−79 vendor/github.com/charmbracelet/x/ansi/c1.go−72 vendor/github.com/charmbracelet/x/ansi/charset.go−55 vendor/github.com/charmbracelet/x/ansi/clipboard.go−75 vendor/github.com/charmbracelet/x/ansi/color.go−784 vendor/github.com/charmbracelet/x/ansi/ctrl.go−156 vendor/github.com/charmbracelet/x/ansi/cursor.go−635 vendor/github.com/charmbracelet/x/ansi/cwd.go−26 vendor/github.com/charmbracelet/x/ansi/doc.go−7 vendor/github.com/charmbracelet/x/ansi/finalterm.go−67 vendor/github.com/charmbracelet/x/ansi/focus.go−9 vendor/github.com/charmbracelet/x/ansi/graphics.go−237 vendor/github.com/charmbracelet/x/ansi/hyperlink.go−28 vendor/github.com/charmbracelet/x/ansi/iterm2.go−18 vendor/github.com/charmbracelet/x/ansi/keypad.go−28 vendor/github.com/charmbracelet/x/ansi/kitty.go−90 vendor/github.com/charmbracelet/x/ansi/kitty/decoder.go−85 vendor/github.com/charmbracelet/x/ansi/kitty/encoder.go−64 vendor/github.com/charmbracelet/x/ansi/kitty/graphics.go−414 vendor/github.com/charmbracelet/x/ansi/kitty/options.go−367 vendor/github.com/charmbracelet/x/ansi/method.go−172 vendor/github.com/charmbracelet/x/ansi/mode.go−778 vendor/github.com/charmbracelet/x/ansi/modes.go−65 vendor/github.com/charmbracelet/x/ansi/mouse.go−172 vendor/github.com/charmbracelet/x/ansi/notification.go−13 vendor/github.com/charmbracelet/x/ansi/parser.go−417 vendor/github.com/charmbracelet/x/ansi/parser/const.go−78 vendor/github.com/charmbracelet/x/ansi/parser/seq.go−136 vendor/github.com/charmbracelet/x/ansi/parser/transition_table.go−273 vendor/github.com/charmbracelet/x/ansi/parser_decode.go−524 vendor/github.com/charmbracelet/x/ansi/parser_handler.go−60 vendor/github.com/charmbracelet/x/ansi/parser_sync.go−29 vendor/github.com/charmbracelet/x/ansi/passthrough.go−60 vendor/github.com/charmbracelet/x/ansi/paste.go−7 vendor/github.com/charmbracelet/x/ansi/reset.go−11 vendor/github.com/charmbracelet/x/ansi/screen.go−410 vendor/github.com/charmbracelet/x/ansi/sgr.go−79 vendor/github.com/charmbracelet/x/ansi/status.go−144 vendor/github.com/charmbracelet/x/ansi/style.go−673 vendor/github.com/charmbracelet/x/ansi/termcap.go−41 vendor/github.com/charmbracelet/x/ansi/title.go−48 vendor/github.com/charmbracelet/x/ansi/truncate.go−299 vendor/github.com/charmbracelet/x/ansi/util.go−106 vendor/github.com/charmbracelet/x/ansi/width.go−113 vendor/github.com/charmbracelet/x/ansi/winop.go−53 vendor/github.com/charmbracelet/x/ansi/wrap.go−474 vendor/github.com/charmbracelet/x/ansi/xterm.go−138 vendor/github.com/charmbracelet/x/cellbuf/LICENSE−21 vendor/github.com/charmbracelet/x/cellbuf/buffer.go−473 vendor/github.com/charmbracelet/x/cellbuf/cell.go−508 vendor/github.com/charmbracelet/x/cellbuf/errors.go−6 vendor/github.com/charmbracelet/x/cellbuf/geom.go−21 vendor/github.com/charmbracelet/x/cellbuf/hardscroll.go−273 vendor/github.com/charmbracelet/x/cellbuf/hashmap.go−301 vendor/github.com/charmbracelet/x/cellbuf/link.go−14 vendor/github.com/charmbracelet/x/cellbuf/pen.go−88 vendor/github.com/charmbracelet/x/cellbuf/screen.go−1506 vendor/github.com/charmbracelet/x/cellbuf/sequence.go−131 vendor/github.com/charmbracelet/x/cellbuf/style.go−31 vendor/github.com/charmbracelet/x/cellbuf/tabstop.go−137 vendor/github.com/charmbracelet/x/cellbuf/utils.go−38 vendor/github.com/charmbracelet/x/cellbuf/wrap.go−194 vendor/github.com/charmbracelet/x/cellbuf/writer.go−339 vendor/github.com/charmbracelet/x/exp/charmtone/LICENSE−21 vendor/github.com/charmbracelet/x/exp/charmtone/charmtone.go−408 vendor/github.com/charmbracelet/x/exp/golden/LICENSE−21 vendor/github.com/charmbracelet/x/exp/golden/golden.go−82 vendor/github.com/charmbracelet/x/exp/slice/LICENSE−21 vendor/github.com/charmbracelet/x/exp/slice/slice.go−120 vendor/github.com/charmbracelet/x/term/LICENSE−21 vendor/github.com/charmbracelet/x/term/term.go−49 vendor/github.com/charmbracelet/x/term/term_other.go−39 vendor/github.com/charmbracelet/x/term/term_unix.go−96 vendor/github.com/charmbracelet/x/term/term_unix_bsd.go−11 vendor/github.com/charmbracelet/x/term/term_unix_other.go−11 vendor/github.com/charmbracelet/x/term/term_windows.go−87 vendor/github.com/charmbracelet/x/term/terminal.go−12 vendor/github.com/charmbracelet/x/term/util.go−47 vendor/github.com/charmbracelet/x/termios/LICENSE−21 vendor/github.com/charmbracelet/x/termios/bit_bsd.go−7 vendor/github.com/charmbracelet/x/termios/bit_darwin.go−7 vendor/github.com/charmbracelet/x/termios/bit_other.go−7 vendor/github.com/charmbracelet/x/termios/syscalls_bsd.go−11 vendor/github.com/charmbracelet/x/termios/syscalls_darwin.go−10 vendor/github.com/charmbracelet/x/termios/syscalls_linux.go−14 vendor/github.com/charmbracelet/x/termios/termios.go−249 vendor/github.com/charmbracelet/x/termios/termios_bsd.go−13 vendor/github.com/charmbracelet/x/termios/termios_linux.go−13 vendor/github.com/charmbracelet/x/termios/termios_other.go−15 vendor/github.com/charmbracelet/x/termios/termios_solaris.go−26 vendor/github.com/charmbracelet/x/windows/LICENSE−21 vendor/github.com/charmbracelet/x/windows/doc.go−3 vendor/github.com/charmbracelet/x/windows/syscall_windows.go−12 vendor/github.com/charmbracelet/x/windows/types_windows.go−351 vendor/github.com/charmbracelet/x/windows/zsyscall_windows.go−77 vendor/github.com/davecgh/go-spew/LICENSE−15 vendor/github.com/davecgh/go-spew/spew/bypass.go−145 vendor/github.com/davecgh/go-spew/spew/bypasssafe.go−38 vendor/github.com/davecgh/go-spew/spew/common.go−341 vendor/github.com/davecgh/go-spew/spew/config.go−306 vendor/github.com/davecgh/go-spew/spew/doc.go−211 vendor/github.com/davecgh/go-spew/spew/dump.go−509 vendor/github.com/davecgh/go-spew/spew/format.go−419 vendor/github.com/davecgh/go-spew/spew/spew.go−148 vendor/github.com/disintegration/gift/.travis.yml−17 vendor/github.com/disintegration/gift/LICENSE−21 vendor/github.com/disintegration/gift/README.md−251 vendor/github.com/disintegration/gift/colors.go−511 vendor/github.com/disintegration/gift/convolution.go−578 vendor/github.com/disintegration/gift/effects.go−87 vendor/github.com/disintegration/gift/gift.go−219 vendor/github.com/disintegration/gift/pixels.go−493 vendor/github.com/disintegration/gift/rank.go−223 vendor/github.com/disintegration/gift/resize.go−462 vendor/github.com/disintegration/gift/transform.go−498 vendor/github.com/disintegration/gift/utils.go−242 vendor/github.com/disintegration/imageorient/LICENSE−21 vendor/github.com/disintegration/imageorient/README.md−61 vendor/github.com/disintegration/imageorient/imageorient.go−209 vendor/github.com/dlclark/regexp2/.gitignore−27 vendor/github.com/dlclark/regexp2/.travis.yml−7 vendor/github.com/dlclark/regexp2/ATTRIB−133 vendor/github.com/dlclark/regexp2/LICENSE−21 vendor/github.com/dlclark/regexp2/README.md−174 vendor/github.com/dlclark/regexp2/fastclock.go−129 vendor/github.com/dlclark/regexp2/match.go−349 vendor/github.com/dlclark/regexp2/regexp.go−395 vendor/github.com/dlclark/regexp2/replace.go−177 vendor/github.com/dlclark/regexp2/runner.go−1613 vendor/github.com/dlclark/regexp2/syntax/charclass.go−865 vendor/github.com/dlclark/regexp2/syntax/code.go−274 vendor/github.com/dlclark/regexp2/syntax/escape.go−94 vendor/github.com/dlclark/regexp2/syntax/fuzz.go−20 vendor/github.com/dlclark/regexp2/syntax/parser.go−2262 vendor/github.com/dlclark/regexp2/syntax/prefix.go−896 vendor/github.com/dlclark/regexp2/syntax/replacerdata.go−87 vendor/github.com/dlclark/regexp2/syntax/tree.go−654 vendor/github.com/dlclark/regexp2/syntax/writer.go−500 vendor/github.com/dlclark/regexp2/testoutput1−7061 vendor/github.com/dustin/go-humanize/.travis.yml−21 vendor/github.com/dustin/go-humanize/LICENSE−21 vendor/github.com/dustin/go-humanize/README.markdown−124 vendor/github.com/dustin/go-humanize/big.go−31 vendor/github.com/dustin/go-humanize/bigbytes.go−189 vendor/github.com/dustin/go-humanize/bytes.go−143 vendor/github.com/dustin/go-humanize/comma.go−116 vendor/github.com/dustin/go-humanize/commaf.go−41 vendor/github.com/dustin/go-humanize/ftoa.go−49 vendor/github.com/dustin/go-humanize/humanize.go−8 vendor/github.com/dustin/go-humanize/number.go−192 vendor/github.com/dustin/go-humanize/ordinals.go−25 vendor/github.com/dustin/go-humanize/si.go−127 vendor/github.com/dustin/go-humanize/times.go−117 vendor/github.com/felixge/httpsnoop/.gitignore vendor/github.com/felixge/httpsnoop/LICENSE.txt−19 vendor/github.com/felixge/httpsnoop/Makefile−10 vendor/github.com/felixge/httpsnoop/README.md−95 vendor/github.com/felixge/httpsnoop/capture_metrics.go−86 vendor/github.com/felixge/httpsnoop/docs.go−10 vendor/github.com/felixge/httpsnoop/wrap_generated_gteq_1.8.go−436 vendor/github.com/felixge/httpsnoop/wrap_generated_lt_1.8.go−278 vendor/github.com/fsnotify/fsnotify/.cirrus.yml−14 vendor/github.com/fsnotify/fsnotify/.gitignore−10 vendor/github.com/fsnotify/fsnotify/.mailmap−2 vendor/github.com/fsnotify/fsnotify/CHANGELOG.md−569 vendor/github.com/fsnotify/fsnotify/CONTRIBUTING.md−144 vendor/github.com/fsnotify/fsnotify/LICENSE−25 vendor/github.com/fsnotify/fsnotify/README.md−184 vendor/github.com/fsnotify/fsnotify/backend_fen.go−484 vendor/github.com/fsnotify/fsnotify/backend_inotify.go−658 vendor/github.com/fsnotify/fsnotify/backend_kqueue.go−733 vendor/github.com/fsnotify/fsnotify/backend_other.go−23 vendor/github.com/fsnotify/fsnotify/backend_windows.go−682 vendor/github.com/fsnotify/fsnotify/fsnotify.go−494 vendor/github.com/fsnotify/fsnotify/internal/darwin.go−39 vendor/github.com/fsnotify/fsnotify/internal/debug_darwin.go−57 vendor/github.com/fsnotify/fsnotify/internal/debug_dragonfly.go−33 vendor/github.com/fsnotify/fsnotify/internal/debug_freebsd.go−42 vendor/github.com/fsnotify/fsnotify/internal/debug_kqueue.go−32 vendor/github.com/fsnotify/fsnotify/internal/debug_linux.go−56 vendor/github.com/fsnotify/fsnotify/internal/debug_netbsd.go−25 vendor/github.com/fsnotify/fsnotify/internal/debug_openbsd.go−28 vendor/github.com/fsnotify/fsnotify/internal/debug_solaris.go−45 vendor/github.com/fsnotify/fsnotify/internal/debug_windows.go−40 vendor/github.com/fsnotify/fsnotify/internal/freebsd.go−31 vendor/github.com/fsnotify/fsnotify/internal/internal.go−2 vendor/github.com/fsnotify/fsnotify/internal/unix.go−31 vendor/github.com/fsnotify/fsnotify/internal/unix2.go−7 vendor/github.com/fsnotify/fsnotify/internal/windows.go−41 vendor/github.com/fsnotify/fsnotify/system_bsd.go−7 vendor/github.com/fsnotify/fsnotify/system_darwin.go−8 vendor/github.com/go-logfmt/logfmt/.gitignore−1 vendor/github.com/go-logfmt/logfmt/CHANGELOG.md−82 vendor/github.com/go-logfmt/logfmt/LICENSE−22 vendor/github.com/go-logfmt/logfmt/README.md−41 vendor/github.com/go-logfmt/logfmt/decode.go−254 vendor/github.com/go-logfmt/logfmt/doc.go−6 vendor/github.com/go-logfmt/logfmt/encode.go−322 vendor/github.com/go-logfmt/logfmt/jsonstring.go−277 vendor/github.com/go-logr/logr/.golangci.yaml−26 vendor/github.com/go-logr/logr/CHANGELOG.md−6 vendor/github.com/go-logr/logr/CONTRIBUTING.md−17 vendor/github.com/go-logr/logr/LICENSE−201 vendor/github.com/go-logr/logr/README.md−407 vendor/github.com/go-logr/logr/SECURITY.md−18 vendor/github.com/go-logr/logr/context.go−33 vendor/github.com/go-logr/logr/context_noslog.go−49 vendor/github.com/go-logr/logr/context_slog.go−83 vendor/github.com/go-logr/logr/discard.go−24 vendor/github.com/go-logr/logr/funcr/funcr.go−914 vendor/github.com/go-logr/logr/funcr/slogsink.go−105 vendor/github.com/go-logr/logr/logr.go−520 vendor/github.com/go-logr/logr/sloghandler.go−192 vendor/github.com/go-logr/logr/slogr.go−100 vendor/github.com/go-logr/logr/slogsink.go−120 vendor/github.com/go-logr/stdr/LICENSE−201 vendor/github.com/go-logr/stdr/README.md−6 vendor/github.com/go-logr/stdr/stdr.go−170 vendor/github.com/golang-jwt/jwt/v5/.gitignore−4 vendor/github.com/golang-jwt/jwt/v5/LICENSE−9 vendor/github.com/golang-jwt/jwt/v5/MIGRATION_GUIDE.md−195 vendor/github.com/golang-jwt/jwt/v5/README.md−167 vendor/github.com/golang-jwt/jwt/v5/SECURITY.md−19 vendor/github.com/golang-jwt/jwt/v5/VERSION_HISTORY.md−137 vendor/github.com/golang-jwt/jwt/v5/claims.go−16 vendor/github.com/golang-jwt/jwt/v5/doc.go−4 vendor/github.com/golang-jwt/jwt/v5/ecdsa.go−134 vendor/github.com/golang-jwt/jwt/v5/ecdsa_utils.go−69 vendor/github.com/golang-jwt/jwt/v5/ed25519.go−79 vendor/github.com/golang-jwt/jwt/v5/ed25519_utils.go−64 vendor/github.com/golang-jwt/jwt/v5/errors.go−49 vendor/github.com/golang-jwt/jwt/v5/errors_go1_20.go−47 vendor/github.com/golang-jwt/jwt/v5/errors_go_other.go−78 vendor/github.com/golang-jwt/jwt/v5/hmac.go−104 vendor/github.com/golang-jwt/jwt/v5/map_claims.go−109 vendor/github.com/golang-jwt/jwt/v5/none.go−50 vendor/github.com/golang-jwt/jwt/v5/parser.go−268 vendor/github.com/golang-jwt/jwt/v5/parser_option.go−128 vendor/github.com/golang-jwt/jwt/v5/registered_claims.go−63 vendor/github.com/golang-jwt/jwt/v5/rsa.go−93 vendor/github.com/golang-jwt/jwt/v5/rsa_pss.go−135 vendor/github.com/golang-jwt/jwt/v5/rsa_utils.go−107 vendor/github.com/golang-jwt/jwt/v5/signing_method.go−49 vendor/github.com/golang-jwt/jwt/v5/staticcheck.conf−1 vendor/github.com/golang-jwt/jwt/v5/token.go−100 vendor/github.com/golang-jwt/jwt/v5/token_option.go−5 vendor/github.com/golang-jwt/jwt/v5/types.go−149 vendor/github.com/golang-jwt/jwt/v5/validator.go−316 vendor/github.com/google/go-cmp/LICENSE−27 vendor/github.com/google/go-cmp/cmp/compare.go−671 vendor/github.com/google/go-cmp/cmp/export.go−31 vendor/github.com/google/go-cmp/cmp/internal/diff/debug_disable.go−18 vendor/github.com/google/go-cmp/cmp/internal/diff/debug_enable.go−123 vendor/github.com/google/go-cmp/cmp/internal/diff/diff.go−402 vendor/github.com/google/go-cmp/cmp/internal/flags/flags.go−9 vendor/github.com/google/go-cmp/cmp/internal/function/func.go−106 vendor/github.com/google/go-cmp/cmp/internal/value/name.go−164 vendor/github.com/google/go-cmp/cmp/internal/value/pointer.go−34 vendor/github.com/google/go-cmp/cmp/internal/value/sort.go−106 vendor/github.com/google/go-cmp/cmp/options.go−562 vendor/github.com/google/go-cmp/cmp/path.go−390 vendor/github.com/google/go-cmp/cmp/report.go−54 vendor/github.com/google/go-cmp/cmp/report_compare.go−433 vendor/github.com/google/go-cmp/cmp/report_references.go−264 vendor/github.com/google/go-cmp/cmp/report_reflect.go−414 vendor/github.com/google/go-cmp/cmp/report_slices.go−614 vendor/github.com/google/go-cmp/cmp/report_text.go−432 vendor/github.com/google/go-cmp/cmp/report_value.go−121 vendor/github.com/google/s2a-go/.gitignore−6 vendor/github.com/google/s2a-go/CODE_OF_CONDUCT.md−93 vendor/github.com/google/s2a-go/CONTRIBUTING.md−29 vendor/github.com/google/s2a-go/LICENSE.md−202 vendor/github.com/google/s2a-go/README.md−14 vendor/github.com/google/s2a-go/fallback/s2a_fallback.go−167 vendor/github.com/google/s2a-go/internal/authinfo/authinfo.go−119 vendor/github.com/google/s2a-go/internal/handshaker/handshaker.go−438 vendor/github.com/google/s2a-go/internal/handshaker/service/service.go−66 vendor/github.com/google/s2a-go/internal/proto/common_go_proto/common.pb.go−388 vendor/github.com/google/s2a-go/internal/proto/s2a_context_go_proto/s2a_context.pb.go−267 vendor/github.com/google/s2a-go/internal/proto/s2a_go_proto/s2a.pb.go−1377 vendor/github.com/google/s2a-go/internal/proto/s2a_go_proto/s2a_grpc.pb.go−174 vendor/github.com/google/s2a-go/internal/proto/v2/common_go_proto/common.pb.go−549 vendor/github.com/google/s2a-go/internal/proto/v2/s2a_context_go_proto/s2a_context.pb.go−249 vendor/github.com/google/s2a-go/internal/proto/v2/s2a_go_proto/s2a.pb.go−2512 vendor/github.com/google/s2a-go/internal/proto/v2/s2a_go_proto/s2a_grpc.pb.go−160 vendor/github.com/google/s2a-go/internal/record/internal/aeadcrypter/aeadcrypter.go−34 vendor/github.com/google/s2a-go/internal/record/internal/aeadcrypter/aesgcm.go−70 vendor/github.com/google/s2a-go/internal/record/internal/aeadcrypter/chachapoly.go−67 vendor/github.com/google/s2a-go/internal/record/internal/aeadcrypter/common.go−92 vendor/github.com/google/s2a-go/internal/record/internal/halfconn/ciphersuite.go−98 vendor/github.com/google/s2a-go/internal/record/internal/halfconn/counter.go−60 vendor/github.com/google/s2a-go/internal/record/internal/halfconn/expander.go−59 vendor/github.com/google/s2a-go/internal/record/internal/halfconn/halfconn.go−193 vendor/github.com/google/s2a-go/internal/record/record.go−729 vendor/github.com/google/s2a-go/internal/record/ticketsender.go−178 vendor/github.com/google/s2a-go/internal/tokenmanager/tokenmanager.go−79 vendor/github.com/google/s2a-go/internal/v2/README.md−1 vendor/github.com/google/s2a-go/internal/v2/certverifier/certverifier.go−122 vendor/github.com/google/s2a-go/internal/v2/remotesigner/remotesigner.go−186 vendor/github.com/google/s2a-go/internal/v2/s2av2.go−379 vendor/github.com/google/s2a-go/internal/v2/tlsconfigstore/tlsconfigstore.go−403 vendor/github.com/google/s2a-go/retry/retry.go−144 vendor/github.com/google/s2a-go/s2a.go−442 vendor/github.com/google/s2a-go/s2a_options.go−235 vendor/github.com/google/s2a-go/s2a_utils.go−79 vendor/github.com/google/s2a-go/stream/s2a_stream.go−34 vendor/github.com/google/uuid/CHANGELOG.md−41 vendor/github.com/google/uuid/CONTRIBUTING.md−26 vendor/github.com/google/uuid/CONTRIBUTORS−9 vendor/github.com/google/uuid/LICENSE−27 vendor/github.com/google/uuid/README.md−21 vendor/github.com/google/uuid/dce.go−80 vendor/github.com/google/uuid/doc.go−12 vendor/github.com/google/uuid/hash.go−59 vendor/github.com/google/uuid/marshal.go−38 vendor/github.com/google/uuid/node.go−90 vendor/github.com/google/uuid/node_js.go−12 vendor/github.com/google/uuid/node_net.go−33 vendor/github.com/google/uuid/null.go−118 vendor/github.com/google/uuid/sql.go−59 vendor/github.com/google/uuid/time.go−134 vendor/github.com/google/uuid/util.go−43 vendor/github.com/google/uuid/uuid.go−365 vendor/github.com/google/uuid/version1.go−44 vendor/github.com/google/uuid/version4.go−76 vendor/github.com/google/uuid/version6.go−56 vendor/github.com/google/uuid/version7.go−104 vendor/github.com/googleapis/enterprise-certificate-proxy/LICENSE−202 vendor/github.com/googleapis/enterprise-certificate-proxy/client/client.go−219 vendor/github.com/googleapis/enterprise-certificate-proxy/client/util/util.go−100 vendor/github.com/googleapis/gax-go/v2/LICENSE−27 vendor/github.com/googleapis/gax-go/v2/internallog/internal/internal.go−134 vendor/github.com/googleapis/gax-go/v2/internallog/internallog.go−154 vendor/github.com/gorilla/css/LICENSE−28 vendor/github.com/gorilla/css/scanner/doc.go−33 vendor/github.com/gorilla/css/scanner/scanner.go−360 vendor/github.com/gorilla/websocket/.gitignore−25 vendor/github.com/gorilla/websocket/AUTHORS−9 vendor/github.com/gorilla/websocket/LICENSE−22 vendor/github.com/gorilla/websocket/README.md−33 vendor/github.com/gorilla/websocket/client.go−434 vendor/github.com/gorilla/websocket/compression.go−148 vendor/github.com/gorilla/websocket/conn.go−1238 vendor/github.com/gorilla/websocket/doc.go−227 vendor/github.com/gorilla/websocket/join.go−42 vendor/github.com/gorilla/websocket/json.go−60 vendor/github.com/gorilla/websocket/mask.go−55 vendor/github.com/gorilla/websocket/mask_safe.go−16 vendor/github.com/gorilla/websocket/prepared.go−102 vendor/github.com/gorilla/websocket/proxy.go−77 vendor/github.com/gorilla/websocket/server.go−365 vendor/github.com/gorilla/websocket/tls_handshake.go−21 vendor/github.com/gorilla/websocket/tls_handshake_116.go−21 vendor/github.com/gorilla/websocket/util.go−298 vendor/github.com/gorilla/websocket/x_net_proxy.go−473 vendor/github.com/inconshreveable/mousetrap/LICENSE−201 vendor/github.com/inconshreveable/mousetrap/README.md−23 vendor/github.com/inconshreveable/mousetrap/trap_others.go−16 vendor/github.com/inconshreveable/mousetrap/trap_windows.go−42 vendor/github.com/joho/godotenv/.gitignore−1 vendor/github.com/joho/godotenv/LICENCE−23 vendor/github.com/joho/godotenv/README.md−202 vendor/github.com/joho/godotenv/autoload/autoload.go−15 vendor/github.com/joho/godotenv/godotenv.go−228 vendor/github.com/joho/godotenv/parser.go−271 vendor/github.com/kylelemons/godebug/LICENSE−202 vendor/github.com/kylelemons/godebug/diff/diff.go−186 vendor/github.com/kylelemons/godebug/pretty/.gitignore−5 vendor/github.com/kylelemons/godebug/pretty/doc.go−25 vendor/github.com/kylelemons/godebug/pretty/public.go−188 vendor/github.com/kylelemons/godebug/pretty/reflect.go−241 vendor/github.com/kylelemons/godebug/pretty/structure.go−223 vendor/github.com/lucasb-eyer/go-colorful/.gitignore−101 vendor/github.com/lucasb-eyer/go-colorful/CHANGELOG.md−42 vendor/github.com/lucasb-eyer/go-colorful/LICENSE−7 vendor/github.com/lucasb-eyer/go-colorful/README.md−482 vendor/github.com/lucasb-eyer/go-colorful/colorgens.go−55 vendor/github.com/lucasb-eyer/go-colorful/colors.go−979 vendor/github.com/lucasb-eyer/go-colorful/happy_palettegen.go−25 vendor/github.com/lucasb-eyer/go-colorful/hexcolor.go−67 vendor/github.com/lucasb-eyer/go-colorful/hsluv-snapshot-rev4.json−1 vendor/github.com/lucasb-eyer/go-colorful/hsluv.go−207 vendor/github.com/lucasb-eyer/go-colorful/soft_palettegen.go−185 vendor/github.com/lucasb-eyer/go-colorful/warm_palettegen.go−25 vendor/github.com/mark3labs/mcp-go/LICENSE−21 vendor/github.com/mark3labs/mcp-go/client/client.go−534 vendor/github.com/mark3labs/mcp-go/client/http.go−22 vendor/github.com/mark3labs/mcp-go/client/inprocess.go−12 vendor/github.com/mark3labs/mcp-go/client/interface.go−109 vendor/github.com/mark3labs/mcp-go/client/oauth.go−76 vendor/github.com/mark3labs/mcp-go/client/sampling.go−20 vendor/github.com/mark3labs/mcp-go/client/sse.go−42 vendor/github.com/mark3labs/mcp-go/client/stdio.go−59 vendor/github.com/mark3labs/mcp-go/client/transport/inprocess.go−74 vendor/github.com/mark3labs/mcp-go/client/transport/interface.go−66 vendor/github.com/mark3labs/mcp-go/client/transport/oauth.go−650 vendor/github.com/mark3labs/mcp-go/client/transport/oauth_utils.go−68 vendor/github.com/mark3labs/mcp-go/client/transport/sse.go−528 vendor/github.com/mark3labs/mcp-go/client/transport/stdio.go−466 vendor/github.com/mark3labs/mcp-go/client/transport/streamable_http.go−628 vendor/github.com/mark3labs/mcp-go/mcp/prompts.go−170 vendor/github.com/mark3labs/mcp-go/mcp/resources.go−99 vendor/github.com/mark3labs/mcp-go/mcp/tools.go−1078 vendor/github.com/mark3labs/mcp-go/mcp/typed_tools.go−20 vendor/github.com/mark3labs/mcp-go/mcp/types.go−1065 vendor/github.com/mark3labs/mcp-go/mcp/utils.go−819 vendor/github.com/mark3labs/mcp-go/server/errors.go−34 vendor/github.com/mark3labs/mcp-go/server/hooks.go−532 vendor/github.com/mark3labs/mcp-go/server/http_transport_options.go−11 vendor/github.com/mark3labs/mcp-go/server/request_handler.go−320 vendor/github.com/mark3labs/mcp-go/server/sampling.go−37 vendor/github.com/mark3labs/mcp-go/server/server.go−1079 vendor/github.com/mark3labs/mcp-go/server/session.go−380 vendor/github.com/mark3labs/mcp-go/server/sse.go−736 vendor/github.com/mark3labs/mcp-go/server/stdio.go−482 vendor/github.com/mark3labs/mcp-go/server/streamable_http.go−655 vendor/github.com/mark3labs/mcp-go/util/logger.go−33 vendor/github.com/mattn/go-isatty/LICENSE−9 vendor/github.com/mattn/go-isatty/README.md−50 vendor/github.com/mattn/go-isatty/doc.go−2 vendor/github.com/mattn/go-isatty/go.test.sh−12 vendor/github.com/mattn/go-isatty/isatty_bsd.go−20 vendor/github.com/mattn/go-isatty/isatty_others.go−17 vendor/github.com/mattn/go-isatty/isatty_plan9.go−23 vendor/github.com/mattn/go-isatty/isatty_solaris.go−21 vendor/github.com/mattn/go-isatty/isatty_tcgets.go−20 vendor/github.com/mattn/go-isatty/isatty_windows.go−125 vendor/github.com/mattn/go-runewidth/LICENSE−21 vendor/github.com/mattn/go-runewidth/README.md−27 vendor/github.com/mattn/go-runewidth/runewidth.go−358 vendor/github.com/mattn/go-runewidth/runewidth_appengine.go−9 vendor/github.com/mattn/go-runewidth/runewidth_js.go−9 vendor/github.com/mattn/go-runewidth/runewidth_posix.go−81 vendor/github.com/mattn/go-runewidth/runewidth_table.go−450 vendor/github.com/mattn/go-runewidth/runewidth_windows.go−28 vendor/github.com/mfridman/interpolate/LICENSE.txt−24 vendor/github.com/mfridman/interpolate/README.md−85 vendor/github.com/mfridman/interpolate/env.go−53 vendor/github.com/mfridman/interpolate/interpolate.go−213 vendor/github.com/mfridman/interpolate/parser.go−281 vendor/github.com/microcosm-cc/bluemonday/CONTRIBUTING.md−50 vendor/github.com/microcosm-cc/bluemonday/CREDITS.md−8 vendor/github.com/microcosm-cc/bluemonday/LICENSE.md−28 vendor/github.com/microcosm-cc/bluemonday/README.md−386 vendor/github.com/microcosm-cc/bluemonday/SECURITY.md−13 vendor/github.com/microcosm-cc/bluemonday/css/handlers.go−2016 vendor/github.com/microcosm-cc/bluemonday/doc.go−104 vendor/github.com/microcosm-cc/bluemonday/helpers.go−300 vendor/github.com/microcosm-cc/bluemonday/policies.go−253 vendor/github.com/microcosm-cc/bluemonday/policy.go−990 vendor/github.com/microcosm-cc/bluemonday/sanitize.go−1096 vendor/github.com/muesli/cancelreader/.gitignore−15 vendor/github.com/muesli/cancelreader/.golangci-soft.yml−47 vendor/github.com/muesli/cancelreader/.golangci.yml−29 vendor/github.com/muesli/cancelreader/LICENSE−21 vendor/github.com/muesli/cancelreader/README.md−64 vendor/github.com/muesli/cancelreader/cancelreader.go−93 vendor/github.com/muesli/cancelreader/cancelreader_bsd.go−146 vendor/github.com/muesli/cancelreader/cancelreader_default.go−12 vendor/github.com/muesli/cancelreader/cancelreader_linux.go−154 vendor/github.com/muesli/cancelreader/cancelreader_select.go−136 vendor/github.com/muesli/cancelreader/cancelreader_unix.go−18 vendor/github.com/muesli/cancelreader/cancelreader_windows.go−244 vendor/github.com/muesli/mango-cobra/.gitignore−17 vendor/github.com/muesli/mango-cobra/.golangci-soft.yml−47 vendor/github.com/muesli/mango-cobra/.golangci.yml−29 vendor/github.com/muesli/mango-cobra/LICENSE−21 vendor/github.com/muesli/mango-cobra/README.md−39 vendor/github.com/muesli/mango-cobra/mcobra.go−61 vendor/github.com/muesli/mango-pflag/.gitignore−17 vendor/github.com/muesli/mango-pflag/.golangci-soft.yml−47 vendor/github.com/muesli/mango-pflag/.golangci.yml−29 vendor/github.com/muesli/mango-pflag/LICENSE−21 vendor/github.com/muesli/mango-pflag/README.md−33 vendor/github.com/muesli/mango-pflag/mpflag.go−30 vendor/github.com/muesli/mango/.gitignore−19 vendor/github.com/muesli/mango/.golangci-soft.yml−47 vendor/github.com/muesli/mango/.golangci.yml−29 vendor/github.com/muesli/mango/LICENSE−21 vendor/github.com/muesli/mango/README.md−150 vendor/github.com/muesli/mango/builder.go−21 vendor/github.com/muesli/mango/mango.go−221 vendor/github.com/muesli/mango/mango.png vendor/github.com/muesli/roff/.gitignore−15 vendor/github.com/muesli/roff/.golangci-soft.yml−47 vendor/github.com/muesli/roff/.golangci.yml−29 vendor/github.com/muesli/roff/LICENSE−21 vendor/github.com/muesli/roff/README.md−65 vendor/github.com/muesli/roff/roff.go−163 vendor/github.com/muesli/termenv/.gitignore−15 vendor/github.com/muesli/termenv/.golangci-soft.yml−43 vendor/github.com/muesli/termenv/.golangci.yml−28 vendor/github.com/muesli/termenv/LICENSE−21 vendor/github.com/muesli/termenv/README.md−431 vendor/github.com/muesli/termenv/ansi_compat.md−65 vendor/github.com/muesli/termenv/ansicolors.go−281 vendor/github.com/muesli/termenv/color.go−205 vendor/github.com/muesli/termenv/constants_linux.go−8 vendor/github.com/muesli/termenv/constants_solaris.go−8 vendor/github.com/muesli/termenv/constants_unix.go−13 vendor/github.com/muesli/termenv/constants_zos.go−8 vendor/github.com/muesli/termenv/copy.go−37 vendor/github.com/muesli/termenv/hyperlink.go−11 vendor/github.com/muesli/termenv/notification.go−11 vendor/github.com/muesli/termenv/output.go−205 vendor/github.com/muesli/termenv/profile.go−112 vendor/github.com/muesli/termenv/screen.go−590 vendor/github.com/muesli/termenv/style.go−126 vendor/github.com/muesli/termenv/templatehelper.go−88 vendor/github.com/muesli/termenv/termenv.go−115 vendor/github.com/muesli/termenv/termenv_other.go−30 vendor/github.com/muesli/termenv/termenv_posix.go−17 vendor/github.com/muesli/termenv/termenv_solaris.go−22 vendor/github.com/muesli/termenv/termenv_unix.go−301 vendor/github.com/muesli/termenv/termenv_windows.go−140 vendor/github.com/ncruces/go-sqlite3/.gitignore−23 vendor/github.com/ncruces/go-sqlite3/LICENSE−21 vendor/github.com/ncruces/go-sqlite3/README.md−121 vendor/github.com/ncruces/go-sqlite3/backup.go−134 vendor/github.com/ncruces/go-sqlite3/blob.go−266 vendor/github.com/ncruces/go-sqlite3/config.go−397 vendor/github.com/ncruces/go-sqlite3/conn.go−496 vendor/github.com/ncruces/go-sqlite3/const.go−425 vendor/github.com/ncruces/go-sqlite3/context.go−234 vendor/github.com/ncruces/go-sqlite3/driver/driver.go−821 vendor/github.com/ncruces/go-sqlite3/driver/savepoint.go−40 vendor/github.com/ncruces/go-sqlite3/driver/time.go−32 vendor/github.com/ncruces/go-sqlite3/driver/util.go−74 vendor/github.com/ncruces/go-sqlite3/embed/README.md−41 vendor/github.com/ncruces/go-sqlite3/embed/build.sh−33 vendor/github.com/ncruces/go-sqlite3/embed/exports.txt−141 vendor/github.com/ncruces/go-sqlite3/embed/init.go−21 vendor/github.com/ncruces/go-sqlite3/embed/sqlite3.wasm vendor/github.com/ncruces/go-sqlite3/error.go−164 vendor/github.com/ncruces/go-sqlite3/func.go−319 vendor/github.com/ncruces/go-sqlite3/internal/alloc/alloc_other.go−24 vendor/github.com/ncruces/go-sqlite3/internal/alloc/alloc_unix.go−67 vendor/github.com/ncruces/go-sqlite3/internal/alloc/alloc_windows.go−74 vendor/github.com/ncruces/go-sqlite3/internal/dotlk/dotlk.go−29 vendor/github.com/ncruces/go-sqlite3/internal/dotlk/dotlk_other.go−13 vendor/github.com/ncruces/go-sqlite3/internal/dotlk/dotlk_unix.go−50 vendor/github.com/ncruces/go-sqlite3/internal/util/const.go−117 vendor/github.com/ncruces/go-sqlite3/internal/util/error.go−116 vendor/github.com/ncruces/go-sqlite3/internal/util/func.go−202 vendor/github.com/ncruces/go-sqlite3/internal/util/handle.go−70 vendor/github.com/ncruces/go-sqlite3/internal/util/json.go−50 vendor/github.com/ncruces/go-sqlite3/internal/util/math.go−29 vendor/github.com/ncruces/go-sqlite3/internal/util/mem.go−153 vendor/github.com/ncruces/go-sqlite3/internal/util/mmap_other.go−5 vendor/github.com/ncruces/go-sqlite3/internal/util/mmap_unix.go−87 vendor/github.com/ncruces/go-sqlite3/internal/util/mmap_windows.go−51 vendor/github.com/ncruces/go-sqlite3/internal/util/module.go−25 vendor/github.com/ncruces/go-sqlite3/internal/util/pointer.go−11 vendor/github.com/ncruces/go-sqlite3/internal/util/reflect.go−10 vendor/github.com/ncruces/go-sqlite3/internal/util/set.go−12 vendor/github.com/ncruces/go-sqlite3/json.go−12 vendor/github.com/ncruces/go-sqlite3/pointer.go−13 vendor/github.com/ncruces/go-sqlite3/quote.go−140 vendor/github.com/ncruces/go-sqlite3/registry.go−30 vendor/github.com/ncruces/go-sqlite3/sqlite.go−344 vendor/github.com/ncruces/go-sqlite3/stmt.go−756 vendor/github.com/ncruces/go-sqlite3/time.go−357 vendor/github.com/ncruces/go-sqlite3/txn.go−301 vendor/github.com/ncruces/go-sqlite3/util/sql3util/README.md−9 vendor/github.com/ncruces/go-sqlite3/util/sql3util/arg.go−65 vendor/github.com/ncruces/go-sqlite3/util/sql3util/const.go−61 vendor/github.com/ncruces/go-sqlite3/util/sql3util/parse.go−210 vendor/github.com/ncruces/go-sqlite3/util/sql3util/sql3util.go−9 vendor/github.com/ncruces/go-sqlite3/util/sql3util/wasm/sql3parse_table.wasm vendor/github.com/ncruces/go-sqlite3/value.go−241 vendor/github.com/ncruces/go-sqlite3/vfs/README.md−124 vendor/github.com/ncruces/go-sqlite3/vfs/api.go−216 vendor/github.com/ncruces/go-sqlite3/vfs/cksm.go−168 vendor/github.com/ncruces/go-sqlite3/vfs/const.go−251 vendor/github.com/ncruces/go-sqlite3/vfs/file.go−247 vendor/github.com/ncruces/go-sqlite3/vfs/filename.go−179 vendor/github.com/ncruces/go-sqlite3/vfs/lock.go−128 vendor/github.com/ncruces/go-sqlite3/vfs/lock_other.go−23 vendor/github.com/ncruces/go-sqlite3/vfs/os_bsd.go−110 vendor/github.com/ncruces/go-sqlite3/vfs/os_darwin.go−107 vendor/github.com/ncruces/go-sqlite3/vfs/os_dotlk.go−143 vendor/github.com/ncruces/go-sqlite3/vfs/os_f2fs_linux.go−37 vendor/github.com/ncruces/go-sqlite3/vfs/os_linux.go−86 vendor/github.com/ncruces/go-sqlite3/vfs/os_ofd.go−59 vendor/github.com/ncruces/go-sqlite3/vfs/os_std.go−50 vendor/github.com/ncruces/go-sqlite3/vfs/os_std_alloc.go−19 vendor/github.com/ncruces/go-sqlite3/vfs/os_std_atomic.go−9 vendor/github.com/ncruces/go-sqlite3/vfs/os_std_rw.go−13 vendor/github.com/ncruces/go-sqlite3/vfs/os_std_sync.go−9 vendor/github.com/ncruces/go-sqlite3/vfs/os_unix.go−103 vendor/github.com/ncruces/go-sqlite3/vfs/os_windows.go−179 vendor/github.com/ncruces/go-sqlite3/vfs/registry.go−48 vendor/github.com/ncruces/go-sqlite3/vfs/shm.go−26 vendor/github.com/ncruces/go-sqlite3/vfs/shm_bsd.go−249 vendor/github.com/ncruces/go-sqlite3/vfs/shm_copy.go−87 vendor/github.com/ncruces/go-sqlite3/vfs/shm_dotlk.go−178 vendor/github.com/ncruces/go-sqlite3/vfs/shm_memlk.go−53 vendor/github.com/ncruces/go-sqlite3/vfs/shm_ofd.go−176 vendor/github.com/ncruces/go-sqlite3/vfs/shm_other.go−21 vendor/github.com/ncruces/go-sqlite3/vfs/shm_windows.go−175 vendor/github.com/ncruces/go-sqlite3/vfs/vfs.go−462 vendor/github.com/ncruces/go-sqlite3/vtab.go−689 vendor/github.com/ncruces/julianday/.gitignore−15 vendor/github.com/ncruces/julianday/LICENSE−21 vendor/github.com/ncruces/julianday/README.md−9 vendor/github.com/ncruces/julianday/julianday.go−124 vendor/github.com/nfnt/resize/.travis.yml−7 vendor/github.com/nfnt/resize/LICENSE−13 vendor/github.com/nfnt/resize/README.md−151 vendor/github.com/nfnt/resize/converter.go−438 vendor/github.com/nfnt/resize/filters.go−143 vendor/github.com/nfnt/resize/nearest.go−318 vendor/github.com/nfnt/resize/resize.go−620 vendor/github.com/nfnt/resize/thumbnail.go−55 vendor/github.com/nfnt/resize/ycc.go−387 vendor/github.com/nxadm/tail/.cirrus.yml−8 vendor/github.com/nxadm/tail/.gitignore−2 vendor/github.com/nxadm/tail/CHANGES.md−64 vendor/github.com/nxadm/tail/CONTRIBUTING.md−5 vendor/github.com/nxadm/tail/Dockerfile−19 vendor/github.com/nxadm/tail/LICENSE−21 vendor/github.com/nxadm/tail/README.md−45 vendor/github.com/nxadm/tail/ratelimiter/Licence−7 vendor/github.com/nxadm/tail/ratelimiter/leakybucket.go−97 vendor/github.com/nxadm/tail/ratelimiter/memory.go−60 vendor/github.com/nxadm/tail/ratelimiter/storage.go−6 vendor/github.com/nxadm/tail/tail.go−481 vendor/github.com/nxadm/tail/tail_posix.go−17 vendor/github.com/nxadm/tail/tail_windows.go−19 vendor/github.com/nxadm/tail/util/util.go−49 vendor/github.com/nxadm/tail/watch/filechanges.go−37 vendor/github.com/nxadm/tail/watch/inotify.go−136 vendor/github.com/nxadm/tail/watch/inotify_tracker.go−249 vendor/github.com/nxadm/tail/watch/polling.go−119 vendor/github.com/nxadm/tail/watch/watch.go−21 vendor/github.com/nxadm/tail/winfile/winfile.go−93 vendor/github.com/openai/openai-go/.gitignore−4 vendor/github.com/openai/openai-go/.release-please-manifest.json−3 vendor/github.com/openai/openai-go/.stats.yml−4 vendor/github.com/openai/openai-go/Brewfile−1 vendor/github.com/openai/openai-go/CHANGELOG.md−392 vendor/github.com/openai/openai-go/CONTRIBUTING.md−66 vendor/github.com/openai/openai-go/LICENSE−201 vendor/github.com/openai/openai-go/MIGRATION.md−284 vendor/github.com/openai/openai-go/README.md−948 vendor/github.com/openai/openai-go/SECURITY.md−29 vendor/github.com/openai/openai-go/aliases.go−440 vendor/github.com/openai/openai-go/api.md−785 vendor/github.com/openai/openai-go/audio.go−53 vendor/github.com/openai/openai-go/audiospeech.go−129 vendor/github.com/openai/openai-go/audiotranscription.go−654 vendor/github.com/openai/openai-go/audiotranslation.go−117 vendor/github.com/openai/openai-go/azure/azure.go−237 vendor/github.com/openai/openai-go/batch.go−343 vendor/github.com/openai/openai-go/beta.go−31 vendor/github.com/openai/openai-go/betaassistant.go−2246 vendor/github.com/openai/openai-go/betathread.go−1564 vendor/github.com/openai/openai-go/betathreadmessage.go−1712 vendor/github.com/openai/openai-go/betathreadrun.go−960 vendor/github.com/openai/openai-go/betathreadrunstep.go−1393 vendor/github.com/openai/openai-go/chat.go−28 vendor/github.com/openai/openai-go/chatcompletion.go−2592 vendor/github.com/openai/openai-go/chatcompletionmessage.go−96 vendor/github.com/openai/openai-go/client.go−161 vendor/github.com/openai/openai-go/completion.go−426 vendor/github.com/openai/openai-go/container.go−352 vendor/github.com/openai/openai-go/containerfile.go−286 vendor/github.com/openai/openai-go/containerfilecontent.go−49 vendor/github.com/openai/openai-go/embedding.go−203 vendor/github.com/openai/openai-go/field.go−45 vendor/github.com/openai/openai-go/file.go−313 vendor/github.com/openai/openai-go/finetuning.go−34 vendor/github.com/openai/openai-go/finetuningalpha.go−28 vendor/github.com/openai/openai-go/finetuningalphagrader.go−672 vendor/github.com/openai/openai-go/finetuningcheckpoint.go−28 vendor/github.com/openai/openai-go/finetuningcheckpointpermission.go−254 vendor/github.com/openai/openai-go/finetuningjob.go−880 vendor/github.com/openai/openai-go/finetuningjobcheckpoint.go−149 vendor/github.com/openai/openai-go/finetuningmethod.go−1487 vendor/github.com/openai/openai-go/grader.go−28 vendor/github.com/openai/openai-go/gradergradermodel.go−1179 vendor/github.com/openai/openai-go/image.go−645 vendor/github.com/openai/openai-go/internal/apierror/apierror.go−58 vendor/github.com/openai/openai-go/internal/apiform/encoder.go−465 vendor/github.com/openai/openai-go/internal/apiform/form.go−5 vendor/github.com/openai/openai-go/internal/apiform/richparam.go−20 vendor/github.com/openai/openai-go/internal/apiform/tag.go−51 vendor/github.com/openai/openai-go/internal/apijson/decoder.go−691 vendor/github.com/openai/openai-go/internal/apijson/encoder.go−392 vendor/github.com/openai/openai-go/internal/apijson/enum.go−145 vendor/github.com/openai/openai-go/internal/apijson/field.go−23 vendor/github.com/openai/openai-go/internal/apijson/port.go−120 vendor/github.com/openai/openai-go/internal/apijson/registry.go−51 vendor/github.com/openai/openai-go/internal/apijson/subfield.go−67 vendor/github.com/openai/openai-go/internal/apijson/tag.go−47 vendor/github.com/openai/openai-go/internal/apijson/union.go−202 vendor/github.com/openai/openai-go/internal/apiquery/encoder.go−415 vendor/github.com/openai/openai-go/internal/apiquery/query.go−55 vendor/github.com/openai/openai-go/internal/apiquery/richparam.go−20 vendor/github.com/openai/openai-go/internal/apiquery/tag.go−44 vendor/github.com/openai/openai-go/internal/encoding/json/decode.go−1324 vendor/github.com/openai/openai-go/internal/encoding/json/encode.go−1391 vendor/github.com/openai/openai-go/internal/encoding/json/fold.go−48 vendor/github.com/openai/openai-go/internal/encoding/json/indent.go−182 vendor/github.com/openai/openai-go/internal/encoding/json/scanner.go−610 vendor/github.com/openai/openai-go/internal/encoding/json/sentinel/null.go−46 vendor/github.com/openai/openai-go/internal/encoding/json/shims/shims.go−111 vendor/github.com/openai/openai-go/internal/encoding/json/stream.go−512 vendor/github.com/openai/openai-go/internal/encoding/json/tables.go−218 vendor/github.com/openai/openai-go/internal/encoding/json/tags.go−38 vendor/github.com/openai/openai-go/internal/encoding/json/time.go−61 vendor/github.com/openai/openai-go/internal/paramutil/field.go−30 vendor/github.com/openai/openai-go/internal/paramutil/union.go−48 vendor/github.com/openai/openai-go/internal/requestconfig/requestconfig.go−635 vendor/github.com/openai/openai-go/internal/version.go−5 vendor/github.com/openai/openai-go/model.go−134 vendor/github.com/openai/openai-go/moderation.go−485 vendor/github.com/openai/openai-go/option/middleware.go−38 vendor/github.com/openai/openai-go/option/requestoption.go−298 vendor/github.com/openai/openai-go/packages/pagination/pagination.go−223 vendor/github.com/openai/openai-go/packages/param/encoder.go−101 vendor/github.com/openai/openai-go/packages/param/null.go−19 vendor/github.com/openai/openai-go/packages/param/option.go−121 vendor/github.com/openai/openai-go/packages/param/param.go−168 vendor/github.com/openai/openai-go/packages/respjson/respjson.go−88 vendor/github.com/openai/openai-go/packages/ssestream/ssestream.go−216 vendor/github.com/openai/openai-go/polling.go−95 vendor/github.com/openai/openai-go/release-please-config.json−67 vendor/github.com/openai/openai-go/responses/aliases.go−440 vendor/github.com/openai/openai-go/responses/inputitem.go−136 vendor/github.com/openai/openai-go/responses/response.go−12897 vendor/github.com/openai/openai-go/shared/constant/constants.go−721 vendor/github.com/openai/openai-go/shared/shared.go−796 vendor/github.com/openai/openai-go/streamaccumulator.go−195 vendor/github.com/openai/openai-go/upload.go−201 vendor/github.com/openai/openai-go/uploadpart.go−112 vendor/github.com/openai/openai-go/vectorstore.go−905 vendor/github.com/openai/openai-go/vectorstorefile.go−534 vendor/github.com/openai/openai-go/vectorstorefilebatch.go−364 vendor/github.com/openai/openai-go/webhooks/aliases.go−440 vendor/github.com/openai/openai-go/webhooks/webhook.go−1208 vendor/github.com/pkg/browser/LICENSE−23 vendor/github.com/pkg/browser/README.md−55 vendor/github.com/pkg/browser/browser.go−57 vendor/github.com/pkg/browser/browser_darwin.go−5 vendor/github.com/pkg/browser/browser_freebsd.go−14 vendor/github.com/pkg/browser/browser_linux.go−21 vendor/github.com/pkg/browser/browser_netbsd.go−14 vendor/github.com/pkg/browser/browser_openbsd.go−14 vendor/github.com/pkg/browser/browser_unsupported.go−12 vendor/github.com/pkg/browser/browser_windows.go−7 vendor/github.com/pmezard/go-difflib/LICENSE−27 vendor/github.com/pmezard/go-difflib/difflib/difflib.go−772 vendor/github.com/pressly/goose/v3/.gitignore−18 vendor/github.com/pressly/goose/v3/.golangci.yaml−31 vendor/github.com/pressly/goose/v3/.goreleaser.yaml−36 vendor/github.com/pressly/goose/v3/CHANGELOG.md−291 vendor/github.com/pressly/goose/v3/LICENSE−22 vendor/github.com/pressly/goose/v3/Makefile−144 vendor/github.com/pressly/goose/v3/README.md−493 vendor/github.com/pressly/goose/v3/create.go−120 vendor/github.com/pressly/goose/v3/database/dialect.go−172 vendor/github.com/pressly/goose/v3/database/doc.go−14 vendor/github.com/pressly/goose/v3/database/sql_extended.go−23 vendor/github.com/pressly/goose/v3/database/store.go−66 vendor/github.com/pressly/goose/v3/database/store_extended.go−33 vendor/github.com/pressly/goose/v3/db.go−46 vendor/github.com/pressly/goose/v3/dialect.go−64 vendor/github.com/pressly/goose/v3/down.go−107 vendor/github.com/pressly/goose/v3/fix.go−54 vendor/github.com/pressly/goose/v3/globals.go−104 vendor/github.com/pressly/goose/v3/goose.go−141 vendor/github.com/pressly/goose/v3/helpers.go−84 vendor/github.com/pressly/goose/v3/install.sh−37 vendor/github.com/pressly/goose/v3/internal/controller/controller.go−37 vendor/github.com/pressly/goose/v3/internal/dialect/dialectquery/clickhouse.go−44 vendor/github.com/pressly/goose/v3/internal/dialect/dialectquery/dialectquery.go−59 vendor/github.com/pressly/goose/v3/internal/dialect/dialectquery/mysql.go−53 vendor/github.com/pressly/goose/v3/internal/dialect/dialectquery/postgres.go−54 vendor/github.com/pressly/goose/v3/internal/dialect/dialectquery/redshift.go−43 vendor/github.com/pressly/goose/v3/internal/dialect/dialectquery/sqlite3.go−42 vendor/github.com/pressly/goose/v3/internal/dialect/dialectquery/sqlserver.go−42 vendor/github.com/pressly/goose/v3/internal/dialect/dialectquery/starrocks.go−45 vendor/github.com/pressly/goose/v3/internal/dialect/dialectquery/tidb.go−43 vendor/github.com/pressly/goose/v3/internal/dialect/dialectquery/turso.go−7 vendor/github.com/pressly/goose/v3/internal/dialect/dialectquery/vertica.go−43 vendor/github.com/pressly/goose/v3/internal/dialect/dialectquery/ydb.go−53 vendor/github.com/pressly/goose/v3/internal/dialect/dialects.go−18 vendor/github.com/pressly/goose/v3/internal/dialect/store.go−169 vendor/github.com/pressly/goose/v3/internal/gooseutil/resolve.go−124 vendor/github.com/pressly/goose/v3/internal/sqlparser/parse.go−59 vendor/github.com/pressly/goose/v3/internal/sqlparser/parser.go−394 vendor/github.com/pressly/goose/v3/lock/postgres.go−118 vendor/github.com/pressly/goose/v3/lock/session_locker.go−23 vendor/github.com/pressly/goose/v3/lock/session_locker_options.go−98 vendor/github.com/pressly/goose/v3/log.go−36 vendor/github.com/pressly/goose/v3/migrate.go−378 vendor/github.com/pressly/goose/v3/migration.go−398 vendor/github.com/pressly/goose/v3/migration_sql.go−115 vendor/github.com/pressly/goose/v3/osfs.go−28 vendor/github.com/pressly/goose/v3/provider.go−650 vendor/github.com/pressly/goose/v3/provider_collect.go−196 vendor/github.com/pressly/goose/v3/provider_errors.go−48 vendor/github.com/pressly/goose/v3/provider_options.go−203 vendor/github.com/pressly/goose/v3/provider_run.go−453 vendor/github.com/pressly/goose/v3/provider_types.go−91 vendor/github.com/pressly/goose/v3/redo.go−51 vendor/github.com/pressly/goose/v3/register.go−133 vendor/github.com/pressly/goose/v3/reset.go−64 vendor/github.com/pressly/goose/v3/status.go−64 vendor/github.com/pressly/goose/v3/up.go−221 vendor/github.com/pressly/goose/v3/version.go−52 vendor/github.com/qjebbs/go-jsons/.gitignore−86 vendor/github.com/qjebbs/go-jsons/LICENSE−21 vendor/github.com/qjebbs/go-jsons/Makefile−9 vendor/github.com/qjebbs/go-jsons/common.go−19 vendor/github.com/qjebbs/go-jsons/formats.go−10 vendor/github.com/qjebbs/go-jsons/jsons.go−32 vendor/github.com/qjebbs/go-jsons/loader.go−101 vendor/github.com/qjebbs/go-jsons/merge/map.go−55 vendor/github.com/qjebbs/go-jsons/merger.go−170 vendor/github.com/qjebbs/go-jsons/merger_extensions.go−27 vendor/github.com/qjebbs/go-jsons/merger_loader.go−28 vendor/github.com/qjebbs/go-jsons/readme.md−152 vendor/github.com/qjebbs/go-jsons/rule/field.go−57 vendor/github.com/qjebbs/go-jsons/rule/merge.go−75 vendor/github.com/qjebbs/go-jsons/rule/rule.go−93 vendor/github.com/qjebbs/go-jsons/rule/sort.go−95 vendor/github.com/rivo/uniseg/LICENSE.txt−21 vendor/github.com/rivo/uniseg/README.md−137 vendor/github.com/rivo/uniseg/doc.go−108 vendor/github.com/rivo/uniseg/eastasianwidth.go−2588 vendor/github.com/rivo/uniseg/emojipresentation.go−295 vendor/github.com/rivo/uniseg/gen_breaktest.go−215 vendor/github.com/rivo/uniseg/gen_properties.go−261 vendor/github.com/rivo/uniseg/grapheme.go−331 vendor/github.com/rivo/uniseg/graphemeproperties.go−1915 vendor/github.com/rivo/uniseg/graphemerules.go−176 vendor/github.com/rivo/uniseg/line.go−134 vendor/github.com/rivo/uniseg/lineproperties.go−3554 vendor/github.com/rivo/uniseg/linerules.go−626 vendor/github.com/rivo/uniseg/properties.go−208 vendor/github.com/rivo/uniseg/sentence.go−90 vendor/github.com/rivo/uniseg/sentenceproperties.go−2845 vendor/github.com/rivo/uniseg/sentencerules.go−276 vendor/github.com/rivo/uniseg/step.go−242 vendor/github.com/rivo/uniseg/width.go−61 vendor/github.com/rivo/uniseg/word.go−89 vendor/github.com/rivo/uniseg/wordproperties.go−1883 vendor/github.com/rivo/uniseg/wordrules.go−282 vendor/github.com/sabhiram/go-gitignore/.gitignore−28 vendor/github.com/sabhiram/go-gitignore/LICENSE−22 vendor/github.com/sabhiram/go-gitignore/README.md−15 vendor/github.com/sabhiram/go-gitignore/ignore.go−239 vendor/github.com/sabhiram/go-gitignore/version_gen.go−12 vendor/github.com/sahilm/fuzzy/.editorconfig−18 vendor/github.com/sahilm/fuzzy/.gitignore−2 vendor/github.com/sahilm/fuzzy/.travis.yml−8 vendor/github.com/sahilm/fuzzy/CONTRIBUTING.md−1 vendor/github.com/sahilm/fuzzy/Gopkg.lock−20 vendor/github.com/sahilm/fuzzy/Gopkg.toml−4 vendor/github.com/sahilm/fuzzy/LICENSE−21 vendor/github.com/sahilm/fuzzy/Makefile−57 vendor/github.com/sahilm/fuzzy/README.md−186 vendor/github.com/sahilm/fuzzy/fuzzy.go−254 vendor/github.com/sethvargo/go-retry/LICENSE−202 vendor/github.com/sethvargo/go-retry/README.md−185 vendor/github.com/sethvargo/go-retry/backoff.go−134 vendor/github.com/sethvargo/go-retry/backoff_constant.go−25 vendor/github.com/sethvargo/go-retry/backoff_exponential.go−47 vendor/github.com/sethvargo/go-retry/backoff_fibonacci.go−56 vendor/github.com/sethvargo/go-retry/rand.go−54 vendor/github.com/sethvargo/go-retry/retry.go−104 vendor/github.com/spf13/cast/.gitignore−25 vendor/github.com/spf13/cast/LICENSE−21 vendor/github.com/spf13/cast/Makefile−40 vendor/github.com/spf13/cast/README.md−75 vendor/github.com/spf13/cast/cast.go−176 vendor/github.com/spf13/cast/caste.go−1510 vendor/github.com/spf13/cast/timeformattype_string.go−27 vendor/github.com/spf13/cobra/.gitignore−39 vendor/github.com/spf13/cobra/.golangci.yml−57 vendor/github.com/spf13/cobra/.mailmap−3 vendor/github.com/spf13/cobra/CONDUCT.md−37 vendor/github.com/spf13/cobra/CONTRIBUTING.md−50 vendor/github.com/spf13/cobra/LICENSE.txt−174 vendor/github.com/spf13/cobra/MAINTAINERS−13 vendor/github.com/spf13/cobra/Makefile−35 vendor/github.com/spf13/cobra/README.md−113 vendor/github.com/spf13/cobra/active_help.go−60 vendor/github.com/spf13/cobra/args.go−131 vendor/github.com/spf13/cobra/bash_completions.go−709 vendor/github.com/spf13/cobra/bash_completionsV2.go−484 vendor/github.com/spf13/cobra/cobra.go−246 vendor/github.com/spf13/cobra/command.go−2067 vendor/github.com/spf13/cobra/command_notwin.go−20 vendor/github.com/spf13/cobra/command_win.go−41 vendor/github.com/spf13/cobra/completions.go−1005 vendor/github.com/spf13/cobra/fish_completions.go−292 vendor/github.com/spf13/cobra/flag_groups.go−290 vendor/github.com/spf13/cobra/powershell_completions.go−350 vendor/github.com/spf13/cobra/shell_completions.go−98 vendor/github.com/spf13/cobra/zsh_completions.go−308 vendor/github.com/spf13/pflag/.editorconfig−12 vendor/github.com/spf13/pflag/.gitignore−2 vendor/github.com/spf13/pflag/.golangci.yaml−4 vendor/github.com/spf13/pflag/.travis.yml−22 vendor/github.com/spf13/pflag/LICENSE−28 vendor/github.com/spf13/pflag/README.md−296 vendor/github.com/spf13/pflag/bool.go−94 vendor/github.com/spf13/pflag/bool_slice.go−185 vendor/github.com/spf13/pflag/bytes.go−209 vendor/github.com/spf13/pflag/count.go−96 vendor/github.com/spf13/pflag/duration.go−86 vendor/github.com/spf13/pflag/duration_slice.go−166 vendor/github.com/spf13/pflag/flag.go−1246 vendor/github.com/spf13/pflag/float32.go−88 vendor/github.com/spf13/pflag/float32_slice.go−174 vendor/github.com/spf13/pflag/float64.go−84 vendor/github.com/spf13/pflag/float64_slice.go−166 vendor/github.com/spf13/pflag/golangflag.go−105 vendor/github.com/spf13/pflag/int.go−84 vendor/github.com/spf13/pflag/int16.go−88 vendor/github.com/spf13/pflag/int32.go−88 vendor/github.com/spf13/pflag/int32_slice.go−174 vendor/github.com/spf13/pflag/int64.go−84 vendor/github.com/spf13/pflag/int64_slice.go−166 vendor/github.com/spf13/pflag/int8.go−88 vendor/github.com/spf13/pflag/int_slice.go−158 vendor/github.com/spf13/pflag/ip.go−97 vendor/github.com/spf13/pflag/ip_slice.go−186 vendor/github.com/spf13/pflag/ipmask.go−122 vendor/github.com/spf13/pflag/ipnet.go−98 vendor/github.com/spf13/pflag/ipnet_slice.go−147 vendor/github.com/spf13/pflag/string.go−80 vendor/github.com/spf13/pflag/string_array.go−125 vendor/github.com/spf13/pflag/string_slice.go−163 vendor/github.com/spf13/pflag/string_to_int.go−149 vendor/github.com/spf13/pflag/string_to_int64.go−149 vendor/github.com/spf13/pflag/string_to_string.go−160 vendor/github.com/spf13/pflag/uint.go−88 vendor/github.com/spf13/pflag/uint16.go−88 vendor/github.com/spf13/pflag/uint32.go−88 vendor/github.com/spf13/pflag/uint64.go−88 vendor/github.com/spf13/pflag/uint8.go−88 vendor/github.com/spf13/pflag/uint_slice.go−168 vendor/github.com/srwiley/oksvg/.gitignore−2 vendor/github.com/srwiley/oksvg/LICENSE−29 vendor/github.com/srwiley/oksvg/README.md−49 vendor/github.com/srwiley/oksvg/definitions.go−16 vendor/github.com/srwiley/oksvg/draw.go−392 vendor/github.com/srwiley/oksvg/icon_cursor.go−391 vendor/github.com/srwiley/oksvg/path_cursor.go−397 vendor/github.com/srwiley/oksvg/path_style.go−35 vendor/github.com/srwiley/oksvg/public.go−287 vendor/github.com/srwiley/oksvg/svg_icon.go−37 vendor/github.com/srwiley/oksvg/svg_path.go−109 vendor/github.com/srwiley/oksvg/utils.go−172 vendor/github.com/srwiley/rasterx/LICENSE−29 vendor/github.com/srwiley/rasterx/README.md−84 vendor/github.com/srwiley/rasterx/dash.go−202 vendor/github.com/srwiley/rasterx/fill.go−241 vendor/github.com/srwiley/rasterx/geomx.go−306 vendor/github.com/srwiley/rasterx/gradient.go−310 vendor/github.com/srwiley/rasterx/matrix.go−191 vendor/github.com/srwiley/rasterx/scan.go−181 vendor/github.com/srwiley/rasterx/shapes.go−221 vendor/github.com/srwiley/rasterx/stroke.go−677 vendor/github.com/stretchr/testify/LICENSE−21 vendor/github.com/stretchr/testify/assert/assertion_compare.go−489 vendor/github.com/stretchr/testify/assert/assertion_format.go−841 vendor/github.com/stretchr/testify/assert/assertion_format.go.tmpl−5 vendor/github.com/stretchr/testify/assert/assertion_forward.go−1673 vendor/github.com/stretchr/testify/assert/assertion_forward.go.tmpl−5 vendor/github.com/stretchr/testify/assert/assertion_order.go−81 vendor/github.com/stretchr/testify/assert/assertions.go−2184 vendor/github.com/stretchr/testify/assert/doc.go−46 vendor/github.com/stretchr/testify/assert/errors.go−10 vendor/github.com/stretchr/testify/assert/forward_assertions.go−16 vendor/github.com/stretchr/testify/assert/http_assertions.go−165 vendor/github.com/stretchr/testify/assert/yaml/yaml_custom.go−25 vendor/github.com/stretchr/testify/assert/yaml/yaml_default.go−37 vendor/github.com/stretchr/testify/assert/yaml/yaml_fail.go−18 vendor/github.com/stretchr/testify/require/doc.go−29 vendor/github.com/stretchr/testify/require/forward_requirements.go−16 vendor/github.com/stretchr/testify/require/require.go−2124 vendor/github.com/stretchr/testify/require/require.go.tmpl−6 vendor/github.com/stretchr/testify/require/require_forward.go−1674 vendor/github.com/stretchr/testify/require/require_forward.go.tmpl−5 vendor/github.com/stretchr/testify/require/requirements.go−29 vendor/github.com/tetratelabs/wazero/.editorconfig−7 vendor/github.com/tetratelabs/wazero/.gitattributes−2 vendor/github.com/tetratelabs/wazero/.gitignore−46 vendor/github.com/tetratelabs/wazero/.gitmodules−3 vendor/github.com/tetratelabs/wazero/CONTRIBUTING.md−75 vendor/github.com/tetratelabs/wazero/LICENSE−201 vendor/github.com/tetratelabs/wazero/Makefile−364 vendor/github.com/tetratelabs/wazero/NOTICE−2 vendor/github.com/tetratelabs/wazero/RATIONALE.md−1587 vendor/github.com/tetratelabs/wazero/README.md−139 vendor/github.com/tetratelabs/wazero/api/features.go−214 vendor/github.com/tetratelabs/wazero/api/wasm.go−766 vendor/github.com/tetratelabs/wazero/builder.go−367 vendor/github.com/tetratelabs/wazero/cache.go−123 vendor/github.com/tetratelabs/wazero/codecov.yml−9 vendor/github.com/tetratelabs/wazero/config.go−899 vendor/github.com/tetratelabs/wazero/experimental/checkpoint.go−35 vendor/github.com/tetratelabs/wazero/experimental/close.go−63 vendor/github.com/tetratelabs/wazero/experimental/experimental.go−41 vendor/github.com/tetratelabs/wazero/experimental/features.go−15 vendor/github.com/tetratelabs/wazero/experimental/importresolver.go−19 vendor/github.com/tetratelabs/wazero/experimental/listener.go−324 vendor/github.com/tetratelabs/wazero/experimental/memory.go−52 vendor/github.com/tetratelabs/wazero/experimental/sys/dir.go−92 vendor/github.com/tetratelabs/wazero/experimental/sys/errno.go−98 vendor/github.com/tetratelabs/wazero/experimental/sys/error.go−45 vendor/github.com/tetratelabs/wazero/experimental/sys/file.go−316 vendor/github.com/tetratelabs/wazero/experimental/sys/fs.go−292 vendor/github.com/tetratelabs/wazero/experimental/sys/oflag.go−70 vendor/github.com/tetratelabs/wazero/experimental/sys/syscall_errno.go−106 vendor/github.com/tetratelabs/wazero/experimental/sys/syscall_errno_notwindows.go−13 vendor/github.com/tetratelabs/wazero/experimental/sys/syscall_errno_unsupported.go−7 vendor/github.com/tetratelabs/wazero/experimental/sys/syscall_errno_windows.go−66 vendor/github.com/tetratelabs/wazero/experimental/sys/time.go−10 vendor/github.com/tetratelabs/wazero/experimental/sys/unimplemented.go−160 vendor/github.com/tetratelabs/wazero/fsconfig.go−213 vendor/github.com/tetratelabs/wazero/internal/descriptor/table.go−149 vendor/github.com/tetratelabs/wazero/internal/engine/interpreter/compiler.go−3632 vendor/github.com/tetratelabs/wazero/internal/engine/interpreter/format.go−22 vendor/github.com/tetratelabs/wazero/internal/engine/interpreter/interpreter.go−4596 vendor/github.com/tetratelabs/wazero/internal/engine/interpreter/operations.go−2812 vendor/github.com/tetratelabs/wazero/internal/engine/interpreter/signature.go−767 vendor/github.com/tetratelabs/wazero/internal/engine/wazevo/backend/abi.go−170 vendor/github.com/tetratelabs/wazero/internal/engine/wazevo/backend/backend.go−3 vendor/github.com/tetratelabs/wazero/internal/engine/wazevo/backend/compiler.go−399 vendor/github.com/tetratelabs/wazero/internal/engine/wazevo/backend/compiler_lower.go−226 vendor/github.com/tetratelabs/wazero/internal/engine/wazevo/backend/go_call.go−33 vendor/github.com/tetratelabs/wazero/internal/engine/wazevo/backend/isa/amd64/abi.go−186 vendor/github.com/tetratelabs/wazero/internal/engine/wazevo/backend/isa/amd64/abi_entry_amd64.go−9 vendor/github.com/tetratelabs/wazero/internal/engine/wazevo/backend/isa/amd64/abi_entry_amd64.s−29 vendor/github.com/tetratelabs/wazero/internal/engine/wazevo/backend/isa/amd64/abi_entry_preamble.go−248 vendor/github.com/tetratelabs/wazero/internal/engine/wazevo/backend/isa/amd64/abi_go_call.go−440 vendor/github.com/tetratelabs/wazero/internal/engine/wazevo/backend/isa/amd64/cond.go−168 vendor/github.com/tetratelabs/wazero/internal/engine/wazevo/backend/isa/amd64/ext.go−35 vendor/github.com/tetratelabs/wazero/internal/engine/wazevo/backend/isa/amd64/instr.go−2447 vendor/github.com/tetratelabs/wazero/internal/engine/wazevo/backend/isa/amd64/instr_encoding.go−1683 vendor/github.com/tetratelabs/wazero/internal/engine/wazevo/backend/isa/amd64/lower_constant.go−71 vendor/github.com/tetratelabs/wazero/internal/engine/wazevo/backend/isa/amd64/lower_mem.go−187 vendor/github.com/tetratelabs/wazero/internal/engine/wazevo/backend/isa/amd64/machine.go−3733 vendor/github.com/tetratelabs/wazero/internal/engine/wazevo/backend/isa/amd64/machine_pro_epi_logue.go−303 vendor/github.com/tetratelabs/wazero/internal/engine/wazevo/backend/isa/amd64/machine_regalloc.go−352 vendor/github.com/tetratelabs/wazero/internal/engine/wazevo/backend/isa/amd64/machine_vec.go−992 vendor/github.com/tetratelabs/wazero/internal/engine/wazevo/backend/isa/amd64/operands.go−336 vendor/github.com/tetratelabs/wazero/internal/engine/wazevo/backend/isa/amd64/reg.go−181 vendor/github.com/tetratelabs/wazero/internal/engine/wazevo/backend/isa/amd64/stack.go−130 vendor/github.com/tetratelabs/wazero/internal/engine/wazevo/backend/isa/arm64/abi.go−333 vendor/github.com/tetratelabs/wazero/internal/engine/wazevo/backend/isa/arm64/abi_entry_arm64.go−9 vendor/github.com/tetratelabs/wazero/internal/engine/wazevo/backend/isa/arm64/abi_entry_arm64.s−29 vendor/github.com/tetratelabs/wazero/internal/engine/wazevo/backend/isa/arm64/abi_entry_preamble.go−233 vendor/github.com/tetratelabs/wazero/internal/engine/wazevo/backend/isa/arm64/abi_go_call.go−430 vendor/github.com/tetratelabs/wazero/internal/engine/wazevo/backend/isa/arm64/cond.go−215 vendor/github.com/tetratelabs/wazero/internal/engine/wazevo/backend/isa/arm64/instr.go−2534 vendor/github.com/tetratelabs/wazero/internal/engine/wazevo/backend/isa/arm64/instr_encoding.go−2351 vendor/github.com/tetratelabs/wazero/internal/engine/wazevo/backend/isa/arm64/lower_constant.go−301 vendor/github.com/tetratelabs/wazero/internal/engine/wazevo/backend/isa/arm64/lower_instr.go−2224 vendor/github.com/tetratelabs/wazero/internal/engine/wazevo/backend/isa/arm64/lower_instr_operands.go−340 vendor/github.com/tetratelabs/wazero/internal/engine/wazevo/backend/isa/arm64/lower_mem.go−451 vendor/github.com/tetratelabs/wazero/internal/engine/wazevo/backend/isa/arm64/machine.go−631 vendor/github.com/tetratelabs/wazero/internal/engine/wazevo/backend/isa/arm64/machine_pro_epi_logue.go−467 vendor/github.com/tetratelabs/wazero/internal/engine/wazevo/backend/isa/arm64/machine_regalloc.go−351 vendor/github.com/tetratelabs/wazero/internal/engine/wazevo/backend/isa/arm64/machine_relocation.go−122 vendor/github.com/tetratelabs/wazero/internal/engine/wazevo/backend/isa/arm64/reg.go−397 vendor/github.com/tetratelabs/wazero/internal/engine/wazevo/backend/isa/arm64/unwind_stack.go−84 vendor/github.com/tetratelabs/wazero/internal/engine/wazevo/backend/machine.go−119 vendor/github.com/tetratelabs/wazero/internal/engine/wazevo/backend/regalloc/api.go−124 vendor/github.com/tetratelabs/wazero/internal/engine/wazevo/backend/regalloc/reg.go−123 vendor/github.com/tetratelabs/wazero/internal/engine/wazevo/backend/regalloc/regalloc.go−1189 vendor/github.com/tetratelabs/wazero/internal/engine/wazevo/backend/regalloc/regset.go−96 vendor/github.com/tetratelabs/wazero/internal/engine/wazevo/backend/vdef.go−19 vendor/github.com/tetratelabs/wazero/internal/engine/wazevo/call_engine.go−708 vendor/github.com/tetratelabs/wazero/internal/engine/wazevo/engine.go−843 vendor/github.com/tetratelabs/wazero/internal/engine/wazevo/engine_cache.go−303 vendor/github.com/tetratelabs/wazero/internal/engine/wazevo/entrypoint_amd64.go−15 vendor/github.com/tetratelabs/wazero/internal/engine/wazevo/entrypoint_arm64.go−15 vendor/github.com/tetratelabs/wazero/internal/engine/wazevo/entrypoint_others.go−15 vendor/github.com/tetratelabs/wazero/internal/engine/wazevo/frontend/frontend.go−567 vendor/github.com/tetratelabs/wazero/internal/engine/wazevo/frontend/lower.go−4261 vendor/github.com/tetratelabs/wazero/internal/engine/wazevo/frontend/misc.go−10 vendor/github.com/tetratelabs/wazero/internal/engine/wazevo/frontend/sort_id.go−13 vendor/github.com/tetratelabs/wazero/internal/engine/wazevo/hostmodule.go−88 vendor/github.com/tetratelabs/wazero/internal/engine/wazevo/isa_amd64.go−30 vendor/github.com/tetratelabs/wazero/internal/engine/wazevo/isa_arm64.go−32 vendor/github.com/tetratelabs/wazero/internal/engine/wazevo/isa_other.go−29 vendor/github.com/tetratelabs/wazero/internal/engine/wazevo/memmove.go−11 vendor/github.com/tetratelabs/wazero/internal/engine/wazevo/module_engine.go−331 vendor/github.com/tetratelabs/wazero/internal/engine/wazevo/ssa/basic_block.go−379 vendor/github.com/tetratelabs/wazero/internal/engine/wazevo/ssa/basic_block_sort.go−32 vendor/github.com/tetratelabs/wazero/internal/engine/wazevo/ssa/builder.go−790 vendor/github.com/tetratelabs/wazero/internal/engine/wazevo/ssa/cmp.go−107 vendor/github.com/tetratelabs/wazero/internal/engine/wazevo/ssa/funcref.go−12 vendor/github.com/tetratelabs/wazero/internal/engine/wazevo/ssa/instructions.go−2976 vendor/github.com/tetratelabs/wazero/internal/engine/wazevo/ssa/pass.go−393 vendor/github.com/tetratelabs/wazero/internal/engine/wazevo/ssa/pass_blk_layouts.go−334 vendor/github.com/tetratelabs/wazero/internal/engine/wazevo/ssa/pass_cfg.go−313 vendor/github.com/tetratelabs/wazero/internal/engine/wazevo/ssa/signature.go−49 vendor/github.com/tetratelabs/wazero/internal/engine/wazevo/ssa/ssa.go−14 vendor/github.com/tetratelabs/wazero/internal/engine/wazevo/ssa/type.go−115 vendor/github.com/tetratelabs/wazero/internal/engine/wazevo/ssa/vs.go−114 vendor/github.com/tetratelabs/wazero/internal/engine/wazevo/wazevoapi/debug_options.go−196 vendor/github.com/tetratelabs/wazero/internal/engine/wazevo/wazevoapi/exitcode.go−109 vendor/github.com/tetratelabs/wazero/internal/engine/wazevo/wazevoapi/offsetdata.go−216 vendor/github.com/tetratelabs/wazero/internal/engine/wazevo/wazevoapi/perfmap.go−96 vendor/github.com/tetratelabs/wazero/internal/engine/wazevo/wazevoapi/perfmap_disabled.go−5 vendor/github.com/tetratelabs/wazero/internal/engine/wazevo/wazevoapi/perfmap_enabled.go−5 vendor/github.com/tetratelabs/wazero/internal/engine/wazevo/wazevoapi/pool.go−215 vendor/github.com/tetratelabs/wazero/internal/engine/wazevo/wazevoapi/ptr.go−15 vendor/github.com/tetratelabs/wazero/internal/engine/wazevo/wazevoapi/queue.go−26 vendor/github.com/tetratelabs/wazero/internal/engine/wazevo/wazevoapi/resetmap.go−11 vendor/github.com/tetratelabs/wazero/internal/expctxkeys/checkpoint.go−10 vendor/github.com/tetratelabs/wazero/internal/expctxkeys/close.go−5 vendor/github.com/tetratelabs/wazero/internal/expctxkeys/expctxkeys.go−2 vendor/github.com/tetratelabs/wazero/internal/expctxkeys/importresolver.go−6 vendor/github.com/tetratelabs/wazero/internal/expctxkeys/listener.go−7 vendor/github.com/tetratelabs/wazero/internal/expctxkeys/memory.go−4 vendor/github.com/tetratelabs/wazero/internal/filecache/compilationcache.go−42 vendor/github.com/tetratelabs/wazero/internal/filecache/file_cache.go−76 vendor/github.com/tetratelabs/wazero/internal/fsapi/file.go−69 vendor/github.com/tetratelabs/wazero/internal/fsapi/poll.go−20 vendor/github.com/tetratelabs/wazero/internal/fsapi/unimplemented.go−27 vendor/github.com/tetratelabs/wazero/internal/ieee754/ieee754.go−29 vendor/github.com/tetratelabs/wazero/internal/internalapi/internal.go−9 vendor/github.com/tetratelabs/wazero/internal/leb128/leb128.go−285 vendor/github.com/tetratelabs/wazero/internal/moremath/moremath.go−271 vendor/github.com/tetratelabs/wazero/internal/platform/cpuid.go−35 vendor/github.com/tetratelabs/wazero/internal/platform/cpuid_amd64.go−80 vendor/github.com/tetratelabs/wazero/internal/platform/cpuid_amd64.s−16 vendor/github.com/tetratelabs/wazero/internal/platform/cpuid_arm64.go−71 vendor/github.com/tetratelabs/wazero/internal/platform/cpuid_arm64.s−21 vendor/github.com/tetratelabs/wazero/internal/platform/cpuid_unsupported.go−17 vendor/github.com/tetratelabs/wazero/internal/platform/crypto.go−17 vendor/github.com/tetratelabs/wazero/internal/platform/mmap_linux.go−76 vendor/github.com/tetratelabs/wazero/internal/platform/mmap_other.go−18 vendor/github.com/tetratelabs/wazero/internal/platform/mmap_unix.go−32 vendor/github.com/tetratelabs/wazero/internal/platform/mmap_unsupported.go−26 vendor/github.com/tetratelabs/wazero/internal/platform/mmap_windows.go−95 vendor/github.com/tetratelabs/wazero/internal/platform/mprotect_bsd.go−22 vendor/github.com/tetratelabs/wazero/internal/platform/mprotect_syscall.go−10 vendor/github.com/tetratelabs/wazero/internal/platform/mprotect_unsupported.go−9 vendor/github.com/tetratelabs/wazero/internal/platform/path.go−6 vendor/github.com/tetratelabs/wazero/internal/platform/path_windows.go−17 vendor/github.com/tetratelabs/wazero/internal/platform/platform.go−56 vendor/github.com/tetratelabs/wazero/internal/platform/time.go−76 vendor/github.com/tetratelabs/wazero/internal/platform/time_cgo.go−11 vendor/github.com/tetratelabs/wazero/internal/platform/time_notcgo.go−7 vendor/github.com/tetratelabs/wazero/internal/platform/time_windows.go−40 vendor/github.com/tetratelabs/wazero/internal/sock/sock.go−89 vendor/github.com/tetratelabs/wazero/internal/sock/sock_supported.go−11 vendor/github.com/tetratelabs/wazero/internal/sock/sock_unsupported.go−10 vendor/github.com/tetratelabs/wazero/internal/sys/fs.go−457 vendor/github.com/tetratelabs/wazero/internal/sys/lazy.go−151 vendor/github.com/tetratelabs/wazero/internal/sys/stdio.go−128 vendor/github.com/tetratelabs/wazero/internal/sys/sys.go−228 vendor/github.com/tetratelabs/wazero/internal/sysfs/adapter.go−105 vendor/github.com/tetratelabs/wazero/internal/sysfs/datasync_linux.go−14 vendor/github.com/tetratelabs/wazero/internal/sysfs/datasync_tinygo.go−13 vendor/github.com/tetratelabs/wazero/internal/sysfs/datasync_unsupported.go−14 vendor/github.com/tetratelabs/wazero/internal/sysfs/dir.go−24 vendor/github.com/tetratelabs/wazero/internal/sysfs/dirfs.go−99 vendor/github.com/tetratelabs/wazero/internal/sysfs/dirfs_supported.go−48 vendor/github.com/tetratelabs/wazero/internal/sysfs/dirfs_unsupported.go−34 vendor/github.com/tetratelabs/wazero/internal/sysfs/file.go−523 vendor/github.com/tetratelabs/wazero/internal/sysfs/file_unix.go−39 vendor/github.com/tetratelabs/wazero/internal/sysfs/file_unsupported.go−28 vendor/github.com/tetratelabs/wazero/internal/sysfs/file_windows.go−175 vendor/github.com/tetratelabs/wazero/internal/sysfs/futimens.go−37 vendor/github.com/tetratelabs/wazero/internal/sysfs/futimens_darwin.go−51 vendor/github.com/tetratelabs/wazero/internal/sysfs/futimens_darwin.s−8 vendor/github.com/tetratelabs/wazero/internal/sysfs/futimens_linux.go−49 vendor/github.com/tetratelabs/wazero/internal/sysfs/futimens_unsupported.go−18 vendor/github.com/tetratelabs/wazero/internal/sysfs/futimens_windows.go−42 vendor/github.com/tetratelabs/wazero/internal/sysfs/ino.go−22 vendor/github.com/tetratelabs/wazero/internal/sysfs/ino_plan9.go−15 vendor/github.com/tetratelabs/wazero/internal/sysfs/ino_tinygo.go−14 vendor/github.com/tetratelabs/wazero/internal/sysfs/ino_windows.go−28 vendor/github.com/tetratelabs/wazero/internal/sysfs/nonblock_unix.go−17 vendor/github.com/tetratelabs/wazero/internal/sysfs/nonblock_unsupported.go−13 vendor/github.com/tetratelabs/wazero/internal/sysfs/nonblock_windows.go−23 vendor/github.com/tetratelabs/wazero/internal/sysfs/oflag.go−38 vendor/github.com/tetratelabs/wazero/internal/sysfs/open_file_darwin.go−26 vendor/github.com/tetratelabs/wazero/internal/sysfs/open_file_freebsd.go−24 vendor/github.com/tetratelabs/wazero/internal/sysfs/open_file_linux.go−30 vendor/github.com/tetratelabs/wazero/internal/sysfs/open_file_notwindows.go−20 vendor/github.com/tetratelabs/wazero/internal/sysfs/open_file_sun.go−31 vendor/github.com/tetratelabs/wazero/internal/sysfs/open_file_tinygo.go−25 vendor/github.com/tetratelabs/wazero/internal/sysfs/open_file_unsupported.go−18 vendor/github.com/tetratelabs/wazero/internal/sysfs/open_file_windows.go−161 vendor/github.com/tetratelabs/wazero/internal/sysfs/osfile.go−319 vendor/github.com/tetratelabs/wazero/internal/sysfs/poll.go−18 vendor/github.com/tetratelabs/wazero/internal/sysfs/poll_darwin.go−55 vendor/github.com/tetratelabs/wazero/internal/sysfs/poll_darwin.s−8 vendor/github.com/tetratelabs/wazero/internal/sysfs/poll_linux.go−59 vendor/github.com/tetratelabs/wazero/internal/sysfs/poll_unsupported.go−13 vendor/github.com/tetratelabs/wazero/internal/sysfs/poll_windows.go−224 vendor/github.com/tetratelabs/wazero/internal/sysfs/readfs.go−117 vendor/github.com/tetratelabs/wazero/internal/sysfs/rename.go−16 vendor/github.com/tetratelabs/wazero/internal/sysfs/rename_plan9.go−14 vendor/github.com/tetratelabs/wazero/internal/sysfs/rename_windows.go−55 vendor/github.com/tetratelabs/wazero/internal/sysfs/sock.go−187 vendor/github.com/tetratelabs/wazero/internal/sysfs/sock_supported.go−77 vendor/github.com/tetratelabs/wazero/internal/sysfs/sock_unix.go−49 vendor/github.com/tetratelabs/wazero/internal/sysfs/sock_unsupported.go−81 vendor/github.com/tetratelabs/wazero/internal/sysfs/sock_windows.go−80 vendor/github.com/tetratelabs/wazero/internal/sysfs/stat.go−16 vendor/github.com/tetratelabs/wazero/internal/sysfs/stat_bsd.go−37 vendor/github.com/tetratelabs/wazero/internal/sysfs/stat_linux.go−40 vendor/github.com/tetratelabs/wazero/internal/sysfs/stat_unsupported.go−40 vendor/github.com/tetratelabs/wazero/internal/sysfs/stat_windows.go−120 vendor/github.com/tetratelabs/wazero/internal/sysfs/sync.go−13 vendor/github.com/tetratelabs/wazero/internal/sysfs/sync_windows.go−20 vendor/github.com/tetratelabs/wazero/internal/sysfs/syscall6_darwin.go−13 vendor/github.com/tetratelabs/wazero/internal/sysfs/sysfs.go−6 vendor/github.com/tetratelabs/wazero/internal/sysfs/unlink.go−17 vendor/github.com/tetratelabs/wazero/internal/sysfs/unlink_plan9.go−12 vendor/github.com/tetratelabs/wazero/internal/sysfs/unlink_windows.go−25 vendor/github.com/tetratelabs/wazero/internal/u32/u32.go−11 vendor/github.com/tetratelabs/wazero/internal/u64/u64.go−15 vendor/github.com/tetratelabs/wazero/internal/version/version.go−52 vendor/github.com/tetratelabs/wazero/internal/wasm/binary/code.go−100 vendor/github.com/tetratelabs/wazero/internal/wasm/binary/const_expr.go−105 vendor/github.com/tetratelabs/wazero/internal/wasm/binary/custom.go−22 vendor/github.com/tetratelabs/wazero/internal/wasm/binary/data.go−79 vendor/github.com/tetratelabs/wazero/internal/wasm/binary/decoder.go−193 vendor/github.com/tetratelabs/wazero/internal/wasm/binary/element.go−269 vendor/github.com/tetratelabs/wazero/internal/wasm/binary/errors.go−11 vendor/github.com/tetratelabs/wazero/internal/wasm/binary/export.go−32 vendor/github.com/tetratelabs/wazero/internal/wasm/binary/function.go−56 vendor/github.com/tetratelabs/wazero/internal/wasm/binary/global.go−50 vendor/github.com/tetratelabs/wazero/internal/wasm/binary/header.go−9 vendor/github.com/tetratelabs/wazero/internal/wasm/binary/import.go−52 vendor/github.com/tetratelabs/wazero/internal/wasm/binary/limits.go−47 vendor/github.com/tetratelabs/wazero/internal/wasm/binary/memory.go−42 vendor/github.com/tetratelabs/wazero/internal/wasm/binary/names.go−151 vendor/github.com/tetratelabs/wazero/internal/wasm/binary/section.go−226 vendor/github.com/tetratelabs/wazero/internal/wasm/binary/table.go−43 vendor/github.com/tetratelabs/wazero/internal/wasm/binary/value.go−59 vendor/github.com/tetratelabs/wazero/internal/wasm/counts.go−51 vendor/github.com/tetratelabs/wazero/internal/wasm/engine.go−76 vendor/github.com/tetratelabs/wazero/internal/wasm/func_validation.go−2336 vendor/github.com/tetratelabs/wazero/internal/wasm/function_definition.go−188 vendor/github.com/tetratelabs/wazero/internal/wasm/global.go−55 vendor/github.com/tetratelabs/wazero/internal/wasm/gofunc.go−279 vendor/github.com/tetratelabs/wazero/internal/wasm/host.go−179 vendor/github.com/tetratelabs/wazero/internal/wasm/instruction.go−1866 vendor/github.com/tetratelabs/wazero/internal/wasm/memory.go−476 vendor/github.com/tetratelabs/wazero/internal/wasm/memory_definition.go−128 vendor/github.com/tetratelabs/wazero/internal/wasm/module.go−1078 vendor/github.com/tetratelabs/wazero/internal/wasm/module_instance.go−251 vendor/github.com/tetratelabs/wazero/internal/wasm/module_instance_lookup.go−73 vendor/github.com/tetratelabs/wazero/internal/wasm/store.go−679 vendor/github.com/tetratelabs/wazero/internal/wasm/store_module_list.go−95 vendor/github.com/tetratelabs/wazero/internal/wasm/table.go−339 vendor/github.com/tetratelabs/wazero/internal/wasmdebug/debug.go−170 vendor/github.com/tetratelabs/wazero/internal/wasmdebug/dwarf.go−225 vendor/github.com/tetratelabs/wazero/internal/wasmruntime/errors.go−50 vendor/github.com/tetratelabs/wazero/netlify.toml−15 vendor/github.com/tetratelabs/wazero/runtime.go−399 vendor/github.com/tetratelabs/wazero/sys/clock.go−26 vendor/github.com/tetratelabs/wazero/sys/error.go−83 vendor/github.com/tetratelabs/wazero/sys/stat.go−105 vendor/github.com/tetratelabs/wazero/sys/stat_bsd.go−29 vendor/github.com/tetratelabs/wazero/sys/stat_linux.go−32 vendor/github.com/tetratelabs/wazero/sys/stat_unsupported.go−14 vendor/github.com/tetratelabs/wazero/sys/stat_windows.go−26 vendor/github.com/tidwall/gjson/LICENSE−20 vendor/github.com/tidwall/gjson/README.md−492 vendor/github.com/tidwall/gjson/SYNTAX.md−360 vendor/github.com/tidwall/gjson/gjson.go−3603 vendor/github.com/tidwall/match/LICENSE−20 vendor/github.com/tidwall/match/README.md−29 vendor/github.com/tidwall/match/match.go−237 vendor/github.com/tidwall/pretty/LICENSE−20 vendor/github.com/tidwall/pretty/README.md−122 vendor/github.com/tidwall/pretty/pretty.go−682 vendor/github.com/tidwall/sjson/LICENSE−21 vendor/github.com/tidwall/sjson/README.md−278 vendor/github.com/tidwall/sjson/logo.png vendor/github.com/tidwall/sjson/sjson.go−737 vendor/github.com/xo/terminfo/.gitignore−9 vendor/github.com/xo/terminfo/LICENSE−21 vendor/github.com/xo/terminfo/README.md−139 vendor/github.com/xo/terminfo/caps.go−31 vendor/github.com/xo/terminfo/capvals.go−1525 vendor/github.com/xo/terminfo/color.go−88 vendor/github.com/xo/terminfo/dec.go−245 vendor/github.com/xo/terminfo/load.go−64 vendor/github.com/xo/terminfo/param.go−405 vendor/github.com/xo/terminfo/stack.go−48 vendor/github.com/xo/terminfo/terminfo.go−479 vendor/github.com/yosida95/uritemplate/v3/LICENSE−25 vendor/github.com/yosida95/uritemplate/v3/README.rst−46 vendor/github.com/yosida95/uritemplate/v3/compile.go−224 vendor/github.com/yosida95/uritemplate/v3/equals.go−53 vendor/github.com/yosida95/uritemplate/v3/error.go−16 vendor/github.com/yosida95/uritemplate/v3/escape.go−190 vendor/github.com/yosida95/uritemplate/v3/expression.go−173 vendor/github.com/yosida95/uritemplate/v3/machine.go−23 vendor/github.com/yosida95/uritemplate/v3/match.go−213 vendor/github.com/yosida95/uritemplate/v3/parse.go−277 vendor/github.com/yosida95/uritemplate/v3/prog.go−130 vendor/github.com/yosida95/uritemplate/v3/uritemplate.go−116 vendor/github.com/yosida95/uritemplate/v3/value.go−216 vendor/github.com/yuin/goldmark-emoji/.gitignore−15 vendor/github.com/yuin/goldmark-emoji/LICENSE−21 vendor/github.com/yuin/goldmark-emoji/README.md−70 vendor/github.com/yuin/goldmark-emoji/ast/emoji.go−42 vendor/github.com/yuin/goldmark-emoji/definition/definition.go−106 vendor/github.com/yuin/goldmark-emoji/definition/github.go−1889 vendor/github.com/yuin/goldmark-emoji/emoji.go−360 vendor/github.com/yuin/goldmark/.gitignore−19 vendor/github.com/yuin/goldmark/.golangci.yml−105 vendor/github.com/yuin/goldmark/LICENSE−21 vendor/github.com/yuin/goldmark/Makefile−13 vendor/github.com/yuin/goldmark/README.md−568 vendor/github.com/yuin/goldmark/ast/ast.go−521 vendor/github.com/yuin/goldmark/ast/block.go−547 vendor/github.com/yuin/goldmark/ast/inline.go−573 vendor/github.com/yuin/goldmark/extension/ast/definition_list.go−83 vendor/github.com/yuin/goldmark/extension/ast/footnote.go−138 vendor/github.com/yuin/goldmark/extension/ast/strikethrough.go−29 vendor/github.com/yuin/goldmark/extension/ast/table.go−158 vendor/github.com/yuin/goldmark/extension/ast/tasklist.go−35 vendor/github.com/yuin/goldmark/extension/cjk.go−72 vendor/github.com/yuin/goldmark/extension/definition_list.go−274 vendor/github.com/yuin/goldmark/extension/footnote.go−691 vendor/github.com/yuin/goldmark/extension/gfm.go−18 vendor/github.com/yuin/goldmark/extension/linkify.go−322 vendor/github.com/yuin/goldmark/extension/package.go−2 vendor/github.com/yuin/goldmark/extension/strikethrough.go−118 vendor/github.com/yuin/goldmark/extension/table.go−564 vendor/github.com/yuin/goldmark/extension/tasklist.go−120 vendor/github.com/yuin/goldmark/extension/typographer.go−348 vendor/github.com/yuin/goldmark/markdown.go−141 vendor/github.com/yuin/goldmark/parser/attribute.go−329 vendor/github.com/yuin/goldmark/parser/atx_heading.go−248 vendor/github.com/yuin/goldmark/parser/auto_link.go−42 vendor/github.com/yuin/goldmark/parser/blockquote.go−70 vendor/github.com/yuin/goldmark/parser/code_block.go−102 vendor/github.com/yuin/goldmark/parser/code_span.go−84 vendor/github.com/yuin/goldmark/parser/delimiter.go−238 vendor/github.com/yuin/goldmark/parser/emphasis.go−50 vendor/github.com/yuin/goldmark/parser/fcode_block.go−122 vendor/github.com/yuin/goldmark/parser/html_block.go−229 vendor/github.com/yuin/goldmark/parser/link.go−449 vendor/github.com/yuin/goldmark/parser/link_ref.go−152 vendor/github.com/yuin/goldmark/parser/list.go−287 vendor/github.com/yuin/goldmark/parser/list_item.go−90 vendor/github.com/yuin/goldmark/parser/paragraph.go−72 vendor/github.com/yuin/goldmark/parser/parser.go−1261 vendor/github.com/yuin/goldmark/parser/raw_html.go−153 vendor/github.com/yuin/goldmark/parser/setext_headings.go−126 vendor/github.com/yuin/goldmark/parser/thematic_break.go−75 vendor/github.com/yuin/goldmark/renderer/html/html.go−1021 vendor/github.com/yuin/goldmark/renderer/renderer.go−174 vendor/github.com/yuin/goldmark/text/package.go−2 vendor/github.com/yuin/goldmark/text/reader.go−660 vendor/github.com/yuin/goldmark/text/segment.go−239 vendor/github.com/yuin/goldmark/util/html5entities.go−2155 vendor/github.com/yuin/goldmark/util/unicode_case_folding.go−1535 vendor/github.com/yuin/goldmark/util/util.go−988 vendor/github.com/yuin/goldmark/util/util_cjk.go−469 vendor/github.com/yuin/goldmark/util/util_safe.go−14 vendor/github.com/yuin/goldmark/util/util_unsafe_go120.go−24 vendor/github.com/yuin/goldmark/util/util_unsafe_go121.go−18 vendor/go.opentelemetry.io/auto/sdk/CONTRIBUTING.md−27 vendor/go.opentelemetry.io/auto/sdk/LICENSE−201 vendor/go.opentelemetry.io/auto/sdk/VERSIONING.md−15 vendor/go.opentelemetry.io/auto/sdk/doc.go−14 vendor/go.opentelemetry.io/auto/sdk/internal/telemetry/attr.go−58 vendor/go.opentelemetry.io/auto/sdk/internal/telemetry/doc.go−8 vendor/go.opentelemetry.io/auto/sdk/internal/telemetry/id.go−103 vendor/go.opentelemetry.io/auto/sdk/internal/telemetry/number.go−67 vendor/go.opentelemetry.io/auto/sdk/internal/telemetry/resource.go−66 vendor/go.opentelemetry.io/auto/sdk/internal/telemetry/scope.go−67 vendor/go.opentelemetry.io/auto/sdk/internal/telemetry/span.go−456 vendor/go.opentelemetry.io/auto/sdk/internal/telemetry/status.go−40 vendor/go.opentelemetry.io/auto/sdk/internal/telemetry/traces.go−189 vendor/go.opentelemetry.io/auto/sdk/internal/telemetry/value.go−452 vendor/go.opentelemetry.io/auto/sdk/limit.go−94 vendor/go.opentelemetry.io/auto/sdk/span.go−432 vendor/go.opentelemetry.io/auto/sdk/tracer.go−124 vendor/go.opentelemetry.io/auto/sdk/tracer_provider.go−33 vendor/go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp/LICENSE−201 vendor/go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp/client.go−50 vendor/go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp/common.go−34 vendor/go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp/config.go−207 vendor/go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp/doc.go−7 vendor/go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp/handler.go−217 vendor/go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp/internal/request/body_wrapper.go−75 vendor/go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp/internal/request/resp_writer_wrapper.go−112 vendor/go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp/internal/semconv/env.go−165 vendor/go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp/internal/semconv/httpconv.go−348 vendor/go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp/internal/semconv/util.go−98 vendor/go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp/internal/semconv/v1.20.0.go−192 vendor/go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp/internal/semconvutil/gen.go−10 vendor/go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp/internal/semconvutil/httpconv.go−575 vendor/go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp/internal/semconvutil/netconv.go−205 vendor/go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp/labeler.go−58 vendor/go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp/transport.go−295 vendor/go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp/version.go−17 vendor/go.opentelemetry.io/otel/.codespellignore−9 vendor/go.opentelemetry.io/otel/.codespellrc−10 vendor/go.opentelemetry.io/otel/.gitattributes−3 vendor/go.opentelemetry.io/otel/.gitignore−15 vendor/go.opentelemetry.io/otel/.golangci.yml−252 vendor/go.opentelemetry.io/otel/.lycheeignore−6 vendor/go.opentelemetry.io/otel/.markdownlint.yaml−29 vendor/go.opentelemetry.io/otel/CHANGELOG.md−3344 vendor/go.opentelemetry.io/otel/CODEOWNERS−17 vendor/go.opentelemetry.io/otel/CONTRIBUTING.md−676 vendor/go.opentelemetry.io/otel/LICENSE−201 vendor/go.opentelemetry.io/otel/Makefile−328 vendor/go.opentelemetry.io/otel/README.md−120 vendor/go.opentelemetry.io/otel/RELEASING.md−132 vendor/go.opentelemetry.io/otel/VERSIONING.md−224 vendor/go.opentelemetry.io/otel/attribute/README.md−3 vendor/go.opentelemetry.io/otel/attribute/doc.go−5 vendor/go.opentelemetry.io/otel/attribute/encoder.go−135 vendor/go.opentelemetry.io/otel/attribute/filter.go−49 vendor/go.opentelemetry.io/otel/attribute/iterator.go−150 vendor/go.opentelemetry.io/otel/attribute/key.go−123 vendor/go.opentelemetry.io/otel/attribute/kv.go−75 vendor/go.opentelemetry.io/otel/attribute/set.go−411 vendor/go.opentelemetry.io/otel/attribute/type_string.go−31 vendor/go.opentelemetry.io/otel/attribute/value.go−271 vendor/go.opentelemetry.io/otel/baggage/README.md−3 vendor/go.opentelemetry.io/otel/baggage/baggage.go−1018 vendor/go.opentelemetry.io/otel/baggage/context.go−28 vendor/go.opentelemetry.io/otel/baggage/doc.go−9 vendor/go.opentelemetry.io/otel/codes/README.md−3 vendor/go.opentelemetry.io/otel/codes/codes.go−106 vendor/go.opentelemetry.io/otel/codes/doc.go−10 vendor/go.opentelemetry.io/otel/dependencies.Dockerfile−3 vendor/go.opentelemetry.io/otel/doc.go−25 vendor/go.opentelemetry.io/otel/error_handler.go−27 vendor/go.opentelemetry.io/otel/get_main_pkgs.sh−30 vendor/go.opentelemetry.io/otel/handler.go−33 vendor/go.opentelemetry.io/otel/internal/attribute/attribute.go−96 vendor/go.opentelemetry.io/otel/internal/baggage/baggage.go−32 vendor/go.opentelemetry.io/otel/internal/baggage/context.go−81 vendor/go.opentelemetry.io/otel/internal/gen.go−18 vendor/go.opentelemetry.io/otel/internal/global/handler.go−36 vendor/go.opentelemetry.io/otel/internal/global/instruments.go−412 vendor/go.opentelemetry.io/otel/internal/global/internal_logging.go−62 vendor/go.opentelemetry.io/otel/internal/global/meter.go−598 vendor/go.opentelemetry.io/otel/internal/global/propagator.go−71 vendor/go.opentelemetry.io/otel/internal/global/state.go−199 vendor/go.opentelemetry.io/otel/internal/global/trace.go−220 vendor/go.opentelemetry.io/otel/internal/rawhelpers.go−48 vendor/go.opentelemetry.io/otel/internal_logging.go−15 vendor/go.opentelemetry.io/otel/metric.go−42 vendor/go.opentelemetry.io/otel/metric/LICENSE−201 vendor/go.opentelemetry.io/otel/metric/README.md−3 vendor/go.opentelemetry.io/otel/metric/asyncfloat64.go−260 vendor/go.opentelemetry.io/otel/metric/asyncint64.go−258 vendor/go.opentelemetry.io/otel/metric/config.go−81 vendor/go.opentelemetry.io/otel/metric/doc.go−177 vendor/go.opentelemetry.io/otel/metric/embedded/README.md−3 vendor/go.opentelemetry.io/otel/metric/embedded/embedded.go−243 vendor/go.opentelemetry.io/otel/metric/instrument.go−368 vendor/go.opentelemetry.io/otel/metric/meter.go−278 vendor/go.opentelemetry.io/otel/metric/noop/README.md−3 vendor/go.opentelemetry.io/otel/metric/noop/noop.go−281 vendor/go.opentelemetry.io/otel/metric/syncfloat64.go−226 vendor/go.opentelemetry.io/otel/metric/syncint64.go−226 vendor/go.opentelemetry.io/otel/propagation.go−20 vendor/go.opentelemetry.io/otel/propagation/README.md−3 vendor/go.opentelemetry.io/otel/propagation/baggage.go−47 vendor/go.opentelemetry.io/otel/propagation/doc.go−13 vendor/go.opentelemetry.io/otel/propagation/propagation.go−142 vendor/go.opentelemetry.io/otel/propagation/trace_context.go−156 vendor/go.opentelemetry.io/otel/renovate.json−30 vendor/go.opentelemetry.io/otel/requirements.txt−1 vendor/go.opentelemetry.io/otel/semconv/v1.20.0/README.md−3 vendor/go.opentelemetry.io/otel/semconv/v1.20.0/attribute_group.go−1198 vendor/go.opentelemetry.io/otel/semconv/v1.20.0/doc.go−9 vendor/go.opentelemetry.io/otel/semconv/v1.20.0/event.go−188 vendor/go.opentelemetry.io/otel/semconv/v1.20.0/exception.go−9 vendor/go.opentelemetry.io/otel/semconv/v1.20.0/http.go−10 vendor/go.opentelemetry.io/otel/semconv/v1.20.0/resource.go−2060 vendor/go.opentelemetry.io/otel/semconv/v1.20.0/schema.go−9 vendor/go.opentelemetry.io/otel/semconv/v1.20.0/trace.go−2599 vendor/go.opentelemetry.io/otel/semconv/v1.26.0/README.md−3 vendor/go.opentelemetry.io/otel/semconv/v1.26.0/attribute_group.go−8996 vendor/go.opentelemetry.io/otel/semconv/v1.26.0/doc.go−9 vendor/go.opentelemetry.io/otel/semconv/v1.26.0/exception.go−9 vendor/go.opentelemetry.io/otel/semconv/v1.26.0/metric.go−1307 vendor/go.opentelemetry.io/otel/semconv/v1.26.0/schema.go−9 vendor/go.opentelemetry.io/otel/trace.go−36 vendor/go.opentelemetry.io/otel/trace/LICENSE−201 vendor/go.opentelemetry.io/otel/trace/README.md−3 vendor/go.opentelemetry.io/otel/trace/auto.go−661 vendor/go.opentelemetry.io/otel/trace/config.go−323 vendor/go.opentelemetry.io/otel/trace/context.go−50 vendor/go.opentelemetry.io/otel/trace/doc.go−119 vendor/go.opentelemetry.io/otel/trace/embedded/README.md−3 vendor/go.opentelemetry.io/otel/trace/embedded/embedded.go−45 vendor/go.opentelemetry.io/otel/trace/internal/telemetry/attr.go−58 vendor/go.opentelemetry.io/otel/trace/internal/telemetry/doc.go−8 vendor/go.opentelemetry.io/otel/trace/internal/telemetry/id.go−103 vendor/go.opentelemetry.io/otel/trace/internal/telemetry/number.go−67 vendor/go.opentelemetry.io/otel/trace/internal/telemetry/resource.go−66 vendor/go.opentelemetry.io/otel/trace/internal/telemetry/scope.go−67 vendor/go.opentelemetry.io/otel/trace/internal/telemetry/span.go−460 vendor/go.opentelemetry.io/otel/trace/internal/telemetry/status.go−40 vendor/go.opentelemetry.io/otel/trace/internal/telemetry/traces.go−189 vendor/go.opentelemetry.io/otel/trace/internal/telemetry/value.go−453 vendor/go.opentelemetry.io/otel/trace/nonrecording.go−16 vendor/go.opentelemetry.io/otel/trace/noop.go−103 vendor/go.opentelemetry.io/otel/trace/noop/README.md−3 vendor/go.opentelemetry.io/otel/trace/noop/noop.go−112 vendor/go.opentelemetry.io/otel/trace/provider.go−59 vendor/go.opentelemetry.io/otel/trace/span.go−177 vendor/go.opentelemetry.io/otel/trace/trace.go−323 vendor/go.opentelemetry.io/otel/trace/tracer.go−37 vendor/go.opentelemetry.io/otel/trace/tracestate.go−330 vendor/go.opentelemetry.io/otel/verify_readmes.sh−21 vendor/go.opentelemetry.io/otel/verify_released_changelog.sh−42 vendor/go.opentelemetry.io/otel/version.go−9 vendor/go.opentelemetry.io/otel/versions.yaml−43 vendor/go.uber.org/multierr/.codecov.yml−15 vendor/go.uber.org/multierr/.gitignore−4 vendor/go.uber.org/multierr/CHANGELOG.md−95 vendor/go.uber.org/multierr/LICENSE.txt−19 vendor/go.uber.org/multierr/Makefile−38 vendor/go.uber.org/multierr/README.md−43 vendor/go.uber.org/multierr/error.go−646 vendor/go.uber.org/multierr/error_post_go120.go−48 vendor/go.uber.org/multierr/error_pre_go120.go−79 vendor/golang.org/x/crypto/LICENSE−27 vendor/golang.org/x/crypto/PATENTS−22 vendor/golang.org/x/crypto/chacha20/chacha_arm64.go−16 vendor/golang.org/x/crypto/chacha20/chacha_arm64.s−307 vendor/golang.org/x/crypto/chacha20/chacha_generic.go−398 vendor/golang.org/x/crypto/chacha20/chacha_noasm.go−13 vendor/golang.org/x/crypto/chacha20/chacha_ppc64x.go−16 vendor/golang.org/x/crypto/chacha20/chacha_ppc64x.s−501 vendor/golang.org/x/crypto/chacha20/chacha_s390x.go−27 vendor/golang.org/x/crypto/chacha20/chacha_s390x.s−224 vendor/golang.org/x/crypto/chacha20/xor.go−42 vendor/golang.org/x/crypto/chacha20poly1305/chacha20poly1305.go−98 vendor/golang.org/x/crypto/chacha20poly1305/chacha20poly1305_amd64.go−86 vendor/golang.org/x/crypto/chacha20poly1305/chacha20poly1305_amd64.s−9762 vendor/golang.org/x/crypto/chacha20poly1305/chacha20poly1305_generic.go−81 vendor/golang.org/x/crypto/chacha20poly1305/chacha20poly1305_noasm.go−15 vendor/golang.org/x/crypto/chacha20poly1305/xchacha20poly1305.go−86 vendor/golang.org/x/crypto/cryptobyte/asn1.go−825 vendor/golang.org/x/crypto/cryptobyte/asn1/asn1.go−46 vendor/golang.org/x/crypto/cryptobyte/builder.go−350 vendor/golang.org/x/crypto/cryptobyte/string.go−183 vendor/golang.org/x/crypto/hkdf/hkdf.go−95 vendor/golang.org/x/crypto/internal/alias/alias.go−31 vendor/golang.org/x/crypto/internal/alias/alias_purego.go−34 vendor/golang.org/x/crypto/internal/poly1305/mac_noasm.go−9 vendor/golang.org/x/crypto/internal/poly1305/poly1305.go−99 vendor/golang.org/x/crypto/internal/poly1305/sum_amd64.s−93 vendor/golang.org/x/crypto/internal/poly1305/sum_asm.go−47 vendor/golang.org/x/crypto/internal/poly1305/sum_generic.go−312 vendor/golang.org/x/crypto/internal/poly1305/sum_loong64.s−123 vendor/golang.org/x/crypto/internal/poly1305/sum_ppc64x.s−187 vendor/golang.org/x/crypto/internal/poly1305/sum_s390x.go−76 vendor/golang.org/x/crypto/internal/poly1305/sum_s390x.s−503 vendor/golang.org/x/crypto/pkcs12/bmp-string.go−50 vendor/golang.org/x/crypto/pkcs12/crypto.go−131 vendor/golang.org/x/crypto/pkcs12/errors.go−23 vendor/golang.org/x/crypto/pkcs12/internal/rc2/rc2.go−268 vendor/golang.org/x/crypto/pkcs12/mac.go−45 vendor/golang.org/x/crypto/pkcs12/pbkdf.go−170 vendor/golang.org/x/crypto/pkcs12/pkcs12.go−360 vendor/golang.org/x/crypto/pkcs12/safebags.go−57 vendor/golang.org/x/exp/LICENSE−27 vendor/golang.org/x/exp/PATENTS−22 vendor/golang.org/x/exp/slices/slices.go−182 vendor/golang.org/x/exp/slices/sort.go−115 vendor/golang.org/x/exp/slog/attr.go−102 vendor/golang.org/x/exp/slog/doc.go−316 vendor/golang.org/x/exp/slog/handler.go−577 vendor/golang.org/x/exp/slog/internal/buffer/buffer.go−84 vendor/golang.org/x/exp/slog/internal/ignorepc.go−9 vendor/golang.org/x/exp/slog/json_handler.go−336 vendor/golang.org/x/exp/slog/level.go−201 vendor/golang.org/x/exp/slog/logger.go−343 vendor/golang.org/x/exp/slog/noplog.bench−36 vendor/golang.org/x/exp/slog/record.go−207 vendor/golang.org/x/exp/slog/text_handler.go−161 vendor/golang.org/x/exp/slog/value.go−456 vendor/golang.org/x/exp/slog/value_119.go−53 vendor/golang.org/x/exp/slog/value_120.go−39 vendor/golang.org/x/image/LICENSE−27 vendor/golang.org/x/image/PATENTS−22 vendor/golang.org/x/image/colornames/colornames.go−10 vendor/golang.org/x/image/colornames/table.go−457 vendor/golang.org/x/image/math/fixed/fixed.go−410 vendor/golang.org/x/image/vector/acc_amd64.go−29 vendor/golang.org/x/image/vector/acc_amd64.s−1028 vendor/golang.org/x/image/vector/acc_other.go−16 vendor/golang.org/x/image/vector/gen_acc_amd64.s.tmpl−170 vendor/golang.org/x/image/vector/raster_fixed.go−330 vendor/golang.org/x/image/vector/raster_floating.go−220 vendor/golang.org/x/image/vector/vector.go−472 vendor/golang.org/x/net/LICENSE−27 vendor/golang.org/x/net/PATENTS−22 vendor/golang.org/x/net/html/atom/atom.go−78 vendor/golang.org/x/net/html/atom/table.go−785 vendor/golang.org/x/net/html/charset/charset.go−257 vendor/golang.org/x/net/html/const.go−111 vendor/golang.org/x/net/html/doc.go−122 vendor/golang.org/x/net/html/doctype.go−156 vendor/golang.org/x/net/html/entity.go−2253 vendor/golang.org/x/net/html/escape.go−339 vendor/golang.org/x/net/html/foreign.go−221 vendor/golang.org/x/net/html/iter.go−56 vendor/golang.org/x/net/html/node.go−229 vendor/golang.org/x/net/html/parse.go−2464 vendor/golang.org/x/net/html/render.go−293 vendor/golang.org/x/net/html/token.go−1286 vendor/golang.org/x/net/http/httpguts/guts.go−50 vendor/golang.org/x/net/http/httpguts/httplex.go−347 vendor/golang.org/x/net/http2/.gitignore−2 vendor/golang.org/x/net/http2/ascii.go−53 vendor/golang.org/x/net/http2/ciphers.go−641 vendor/golang.org/x/net/http2/client_conn_pool.go−311 vendor/golang.org/x/net/http2/config.go−122 vendor/golang.org/x/net/http2/config_go124.go−61 vendor/golang.org/x/net/http2/config_pre_go124.go−16 vendor/golang.org/x/net/http2/databuffer.go−149 vendor/golang.org/x/net/http2/errors.go−145 vendor/golang.org/x/net/http2/flow.go−120 vendor/golang.org/x/net/http2/frame.go−1702 vendor/golang.org/x/net/http2/gotrack.go−170 vendor/golang.org/x/net/http2/hpack/encode.go−245 vendor/golang.org/x/net/http2/hpack/hpack.go−523 vendor/golang.org/x/net/http2/hpack/huffman.go−226 vendor/golang.org/x/net/http2/hpack/static_table.go−188 vendor/golang.org/x/net/http2/hpack/tables.go−403 vendor/golang.org/x/net/http2/http2.go−432 vendor/golang.org/x/net/http2/pipe.go−184 vendor/golang.org/x/net/http2/server.go−3350 vendor/golang.org/x/net/http2/timer.go−20 vendor/golang.org/x/net/http2/transport.go−3287 vendor/golang.org/x/net/http2/unencrypted.go−32 vendor/golang.org/x/net/http2/write.go−381 vendor/golang.org/x/net/http2/writesched.go−251 vendor/golang.org/x/net/http2/writesched_priority.go−451 vendor/golang.org/x/net/http2/writesched_random.go−77 vendor/golang.org/x/net/http2/writesched_roundrobin.go−119 vendor/golang.org/x/net/idna/go118.go−13

951 more files changed are not listed.

go.mod+4−8
@@ -2,10 +2,6 @@ module github.com/charmbracelet/crush
22
33go 1.24.3
44
5−replace github.com/charmbracelet/bubbletea/v2 => github.com/charmbracelet/bubbletea-internal/v2 v2.0.0-20250716142813-5d1379f56ba2
6−
7−replace github.com/charmbracelet/lipgloss/v2 => github.com/charmbracelet/lipgloss-internal/v2 v2.0.0-20250716143013-48f34cb75679
8−
95require (
106 github.com/Azure/azure-sdk-for-go/sdk/azidentity v1.7.0
117 github.com/JohannesKaufmann/html-to-markdown v1.6.0
@@ -17,10 +13,10 @@ require (
1713 github.com/bmatcuk/doublestar/v4 v4.8.1
1814 github.com/charlievieth/fastwalk v1.0.11
1915 github.com/charmbracelet/bubbles/v2 v2.0.0-beta.1.0.20250716191546-1e2ffbbcf5c5
20− github.com/charmbracelet/bubbletea/v2 v2.0.0-beta.1
16+ github.com/charmbracelet/bubbletea/v2 v2.0.0-beta.4.0.20250717140350-bb75e8f6b6ac
2117 github.com/charmbracelet/fang v0.3.1-0.20250711140230-d5ebb8c1d674
2218 github.com/charmbracelet/glamour/v2 v2.0.0-20250516160903-6f1e2c8f9ebe
23− github.com/charmbracelet/lipgloss/v2 v2.0.0-beta.3
19+ github.com/charmbracelet/lipgloss/v2 v2.0.0-beta.3.0.20250716211347-10c048e36112
2420 github.com/charmbracelet/log/v2 v2.0.0-20250226163916-c379e29ff706
2521 github.com/charmbracelet/x/ansi v0.9.3
2622 github.com/charmbracelet/x/exp/charmtone v0.0.0-20250708181618-a60a724ba6c3
@@ -75,7 +71,7 @@ require (
7571 github.com/aymanbagabas/go-osc52/v2 v2.0.1 // indirect
7672 github.com/aymerick/douceur v0.2.0 // indirect
7773 github.com/charmbracelet/colorprofile v0.3.1 // indirect
78− github.com/charmbracelet/ultraviolet v0.0.0-20250716141307-2fae2b322afb // indirect
74+ github.com/charmbracelet/ultraviolet v0.0.0-20250716174340-af8be4955d67 // indirect
7975 github.com/charmbracelet/x/cellbuf v0.0.14-0.20250516160309-24eee56f89fa // indirect
8076 github.com/charmbracelet/x/exp/slice v0.0.0-20250611152503-f53cdd7e01ef
8177 github.com/charmbracelet/x/term v0.2.1
@@ -136,7 +132,7 @@ require (
136132 golang.org/x/sync v0.16.0 // indirect
137133 golang.org/x/sys v0.34.0 // indirect
138134 golang.org/x/term v0.31.0 // indirect
139− golang.org/x/text v0.24.0 // indirect
135+ golang.org/x/text v0.24.0
140136 google.golang.org/genai v1.3.0
141137 google.golang.org/genproto/googleapis/rpc v0.0.0-20250324211829-b45e905df463 // indirect
142138 google.golang.org/grpc v1.71.0 // indirect
go.sum+6−6
@@ -70,20 +70,20 @@ github.com/charlievieth/fastwalk v1.0.11 h1:5sLT/q9+d9xMdpKExawLppqvXFZCVKf6JHnr
7070github.com/charlievieth/fastwalk v1.0.11/go.mod h1:yGy1zbxog41ZVMcKA/i8ojXLFsuayX5VvwhQVoj9PBI=
7171github.com/charmbracelet/bubbles/v2 v2.0.0-beta.1.0.20250716191546-1e2ffbbcf5c5 h1:GTcMIfDQJKyNKS+xVt7GkNIwz+tBuQtIuiP50WpzNgs=
7272github.com/charmbracelet/bubbles/v2 v2.0.0-beta.1.0.20250716191546-1e2ffbbcf5c5/go.mod h1:6HamsBKWqEC/FVHuQMHgQL+knPyvHH55HwJDHl/adMw=
73−github.com/charmbracelet/bubbletea-internal/v2 v2.0.0-20250716142813-5d1379f56ba2 h1:Gj/vSk7h96TxUU/GSuwbYkr9H0ze+ElAQjcl25wB0+U=
74−github.com/charmbracelet/bubbletea-internal/v2 v2.0.0-20250716142813-5d1379f56ba2/go.mod h1:m240IQxo1/eDQ7klblSzOCAUyc3LddHcV3Rc/YEGAgw=
73+github.com/charmbracelet/bubbletea/v2 v2.0.0-beta.4.0.20250717140350-bb75e8f6b6ac h1:murtkvFYxZ/73vk4Z/tpE4biB+WDZcFmmBp8je/yV6M=
74+github.com/charmbracelet/bubbletea/v2 v2.0.0-beta.4.0.20250717140350-bb75e8f6b6ac/go.mod h1:m240IQxo1/eDQ7klblSzOCAUyc3LddHcV3Rc/YEGAgw=
7575github.com/charmbracelet/colorprofile v0.3.1 h1:k8dTHMd7fgw4bnFd7jXTLZrSU/CQrKnL3m+AxCzDz40=
7676github.com/charmbracelet/colorprofile v0.3.1/go.mod h1:/GkGusxNs8VB/RSOh3fu0TJmQ4ICMMPApIIVn0KszZ0=
7777github.com/charmbracelet/fang v0.3.1-0.20250711140230-d5ebb8c1d674 h1:+Cz+VfxD5DO+JT1LlswXWhre0HYLj6l2HW8HVGfMuC0=
7878github.com/charmbracelet/fang v0.3.1-0.20250711140230-d5ebb8c1d674/go.mod h1:9gCUAHmVx5BwSafeyNr3GI0GgvlB1WYjL21SkPp1jyU=
7979github.com/charmbracelet/glamour/v2 v2.0.0-20250516160903-6f1e2c8f9ebe h1:i6ce4CcAlPpTj2ER69m1DBeLZ3RRcHnKExuwhKa3GfY=
8080github.com/charmbracelet/glamour/v2 v2.0.0-20250516160903-6f1e2c8f9ebe/go.mod h1:p3Q+aN4eQKeM5jhrmXPMgPrlKbmc59rWSnMsSA3udhk=
81−github.com/charmbracelet/lipgloss-internal/v2 v2.0.0-20250716143013-48f34cb75679 h1:z0og40Sck650PjX51SmiTP8Div2OSugiZJBPZyJInOg=
82−github.com/charmbracelet/lipgloss-internal/v2 v2.0.0-20250716143013-48f34cb75679/go.mod h1:BXY7j7rZgAprFwzNcO698++5KTd6GKI6lU83Pr4o0r0=
81+github.com/charmbracelet/lipgloss/v2 v2.0.0-beta.3.0.20250716211347-10c048e36112 h1:SyZEoqRe2oiKZI+h93lgJYXtcBgcS/OsJIOYC7KbR7s=
82+github.com/charmbracelet/lipgloss/v2 v2.0.0-beta.3.0.20250716211347-10c048e36112/go.mod h1:BXY7j7rZgAprFwzNcO698++5KTd6GKI6lU83Pr4o0r0=
8383github.com/charmbracelet/log/v2 v2.0.0-20250226163916-c379e29ff706 h1:WkwO6Ks3mSIGnGuSdKl9qDSyfbYK50z2wc2gGMggegE=
8484github.com/charmbracelet/log/v2 v2.0.0-20250226163916-c379e29ff706/go.mod h1:mjJGp00cxcfvD5xdCa+bso251Jt4owrQvuimJtVmEmM=
85−github.com/charmbracelet/ultraviolet v0.0.0-20250716141307-2fae2b322afb h1:fMyaSpuEyPP+uuTu98Wx2S/7OY52uhjF+kYfM5w7x+s=
86−github.com/charmbracelet/ultraviolet v0.0.0-20250716141307-2fae2b322afb/go.mod h1:XrrgNFfXLrFAyd9DUmrqVc3yQFVv8Uk+okj4PsNNzpc=
85+github.com/charmbracelet/ultraviolet v0.0.0-20250716174340-af8be4955d67 h1:xNokz27Oc/twLt8ePjDMIhbwNFQp3HGsILlv+6Zy0eA=
86+github.com/charmbracelet/ultraviolet v0.0.0-20250716174340-af8be4955d67/go.mod h1:XrrgNFfXLrFAyd9DUmrqVc3yQFVv8Uk+okj4PsNNzpc=
8787github.com/charmbracelet/x/ansi v0.9.3 h1:BXt5DHS/MKF+LjuK4huWrC6NCvHtexww7dMayh6GXd0=
8888github.com/charmbracelet/x/ansi v0.9.3/go.mod h1:3RQDQ6lDnROptfpWuUVIUG64bD2g2BgntdxH0Ya5TeE=
8989github.com/charmbracelet/x/cellbuf v0.0.14-0.20250516160309-24eee56f89fa h1:lphz0Z3rsiOtMYiz8axkT24i9yFiueDhJbzyNUADmME=
internal/tui/components/chat/messages/renderer.go+1
@@ -656,6 +656,7 @@ func joinHeaderBody(header, body string) string {
656656func renderPlainContent(v *toolCallCmp, content string) string {
657657 t := styles.CurrentTheme()
658658 content = strings.ReplaceAll(content, "\r\n", "\n") // Normalize line endings
659+ content = strings.ReplaceAll(content, "\t", " ") // Replace tabs with spaces
659660 content = strings.TrimSpace(content)
660661 lines := strings.Split(content, "\n")
661662
vendor/cloud.google.com/go/LICENSEdeleted−202
@@ -1,202 +0,0 @@
1−
2− Apache License
3− Version 2.0, January 2004
4− http://www.apache.org/licenses/
5−
6− TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
7−
8− 1. Definitions.
9−
10− "License" shall mean the terms and conditions for use, reproduction,
11− and distribution as defined by Sections 1 through 9 of this document.
12−
13− "Licensor" shall mean the copyright owner or entity authorized by
14− the copyright owner that is granting the License.
15−
16− "Legal Entity" shall mean the union of the acting entity and all
17− other entities that control, are controlled by, or are under common
18− control with that entity. For the purposes of this definition,
19− "control" means (i) the power, direct or indirect, to cause the
20− direction or management of such entity, whether by contract or
21− otherwise, or (ii) ownership of fifty percent (50%) or more of the
22− outstanding shares, or (iii) beneficial ownership of such entity.
23−
24− "You" (or "Your") shall mean an individual or Legal Entity
25− exercising permissions granted by this License.
26−
27− "Source" form shall mean the preferred form for making modifications,
28− including but not limited to software source code, documentation
29− source, and configuration files.
30−
31− "Object" form shall mean any form resulting from mechanical
32− transformation or translation of a Source form, including but
33− not limited to compiled object code, generated documentation,
34− and conversions to other media types.
35−
36− "Work" shall mean the work of authorship, whether in Source or
37− Object form, made available under the License, as indicated by a
38− copyright notice that is included in or attached to the work
39− (an example is provided in the Appendix below).
40−
41− "Derivative Works" shall mean any work, whether in Source or Object
42− form, that is based on (or derived from) the Work and for which the
43− editorial revisions, annotations, elaborations, or other modifications
44− represent, as a whole, an original work of authorship. For the purposes
45− of this License, Derivative Works shall not include works that remain
46− separable from, or merely link (or bind by name) to the interfaces of,
47− the Work and Derivative Works thereof.
48−
49− "Contribution" shall mean any work of authorship, including
50− the original version of the Work and any modifications or additions
51− to that Work or Derivative Works thereof, that is intentionally
52− submitted to Licensor for inclusion in the Work by the copyright owner
53− or by an individual or Legal Entity authorized to submit on behalf of
54− the copyright owner. For the purposes of this definition, "submitted"
55− means any form of electronic, verbal, or written communication sent
56− to the Licensor or its representatives, including but not limited to
57− communication on electronic mailing lists, source code control systems,
58− and issue tracking systems that are managed by, or on behalf of, the
59− Licensor for the purpose of discussing and improving the Work, but
60− excluding communication that is conspicuously marked or otherwise
61− designated in writing by the copyright owner as "Not a Contribution."
62−
63− "Contributor" shall mean Licensor and any individual or Legal Entity
64− on behalf of whom a Contribution has been received by Licensor and
65− subsequently incorporated within the Work.
66−
67− 2. Grant of Copyright License. Subject to the terms and conditions of
68− this License, each Contributor hereby grants to You a perpetual,
69− worldwide, non-exclusive, no-charge, royalty-free, irrevocable
70− copyright license to reproduce, prepare Derivative Works of,
71− publicly display, publicly perform, sublicense, and distribute the
72− Work and such Derivative Works in Source or Object form.
73−
74− 3. Grant of Patent License. Subject to the terms and conditions of
75− this License, each Contributor hereby grants to You a perpetual,
76− worldwide, non-exclusive, no-charge, royalty-free, irrevocable
77− (except as stated in this section) patent license to make, have made,
78− use, offer to sell, sell, import, and otherwise transfer the Work,
79− where such license applies only to those patent claims licensable
80− by such Contributor that are necessarily infringed by their
81− Contribution(s) alone or by combination of their Contribution(s)
82− with the Work to which such Contribution(s) was submitted. If You
83− institute patent litigation against any entity (including a
84− cross-claim or counterclaim in a lawsuit) alleging that the Work
85− or a Contribution incorporated within the Work constitutes direct
86− or contributory patent infringement, then any patent licenses
87− granted to You under this License for that Work shall terminate
88− as of the date such litigation is filed.
89−
90− 4. Redistribution. You may reproduce and distribute copies of the
91− Work or Derivative Works thereof in any medium, with or without
92− modifications, and in Source or Object form, provided that You
93− meet the following conditions:
94−
95− (a) You must give any other recipients of the Work or
96− Derivative Works a copy of this License; and
97−
98− (b) You must cause any modified files to carry prominent notices
99− stating that You changed the files; and
100−
101− (c) You must retain, in the Source form of any Derivative Works
102− that You distribute, all copyright, patent, trademark, and
103− attribution notices from the Source form of the Work,
104− excluding those notices that do not pertain to any part of
105− the Derivative Works; and
106−
107− (d) If the Work includes a "NOTICE" text file as part of its
108− distribution, then any Derivative Works that You distribute must
109− include a readable copy of the attribution notices contained
110− within such NOTICE file, excluding those notices that do not
111− pertain to any part of the Derivative Works, in at least one
112− of the following places: within a NOTICE text file distributed
113− as part of the Derivative Works; within the Source form or
114− documentation, if provided along with the Derivative Works; or,
115− within a display generated by the Derivative Works, if and
116− wherever such third-party notices normally appear. The contents
117− of the NOTICE file are for informational purposes only and
118− do not modify the License. You may add Your own attribution
119− notices within Derivative Works that You distribute, alongside
120− or as an addendum to the NOTICE text from the Work, provided
121− that such additional attribution notices cannot be construed
122− as modifying the License.
123−
124− You may add Your own copyright statement to Your modifications and
125− may provide additional or different license terms and conditions
126− for use, reproduction, or distribution of Your modifications, or
127− for any such Derivative Works as a whole, provided Your use,
128− reproduction, and distribution of the Work otherwise complies with
129− the conditions stated in this License.
130−
131− 5. Submission of Contributions. Unless You explicitly state otherwise,
132− any Contribution intentionally submitted for inclusion in the Work
133− by You to the Licensor shall be under the terms and conditions of
134− this License, without any additional terms or conditions.
135− Notwithstanding the above, nothing herein shall supersede or modify
136− the terms of any separate license agreement you may have executed
137− with Licensor regarding such Contributions.
138−
139− 6. Trademarks. This License does not grant permission to use the trade
140− names, trademarks, service marks, or product names of the Licensor,
141− except as required for reasonable and customary use in describing the
142− origin of the Work and reproducing the content of the NOTICE file.
143−
144− 7. Disclaimer of Warranty. Unless required by applicable law or
145− agreed to in writing, Licensor provides the Work (and each
146− Contributor provides its Contributions) on an "AS IS" BASIS,
147− WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
148− implied, including, without limitation, any warranties or conditions
149− of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
150− PARTICULAR PURPOSE. You are solely responsible for determining the
151− appropriateness of using or redistributing the Work and assume any
152− risks associated with Your exercise of permissions under this License.
153−
154− 8. Limitation of Liability. In no event and under no legal theory,
155− whether in tort (including negligence), contract, or otherwise,
156− unless required by applicable law (such as deliberate and grossly
157− negligent acts) or agreed to in writing, shall any Contributor be
158− liable to You for damages, including any direct, indirect, special,
159− incidental, or consequential damages of any character arising as a
160− result of this License or out of the use or inability to use the
161− Work (including but not limited to damages for loss of goodwill,
162− work stoppage, computer failure or malfunction, or any and all
163− other commercial damages or losses), even if such Contributor
164− has been advised of the possibility of such damages.
165−
166− 9. Accepting Warranty or Additional Liability. While redistributing
167− the Work or Derivative Works thereof, You may choose to offer,
168− and charge a fee for, acceptance of support, warranty, indemnity,
169− or other liability obligations and/or rights consistent with this
170− License. However, in accepting such obligations, You may act only
171− on Your own behalf and on Your sole responsibility, not on behalf
172− of any other Contributor, and only if You agree to indemnify,
173− defend, and hold each Contributor harmless for any liability
174− incurred by, or claims asserted against, such Contributor by reason
175− of your accepting any such warranty or additional liability.
176−
177− END OF TERMS AND CONDITIONS
178−
179− APPENDIX: How to apply the Apache License to your work.
180−
181− To apply the Apache License to your work, attach the following
182− boilerplate notice, with the fields enclosed by brackets "[]"
183− replaced with your own identifying information. (Don't include
184− the brackets!) The text should be enclosed in the appropriate
185− comment syntax for the file format. We also recommend that a
186− file or class name and description of purpose be included on the
187− same "printed page" as the copyright notice for easier
188− identification within third-party archives.
189−
190− Copyright [yyyy] [name of copyright owner]
191−
192− Licensed under the Apache License, Version 2.0 (the "License");
193− you may not use this file except in compliance with the License.
194− You may obtain a copy of the License at
195−
196− http://www.apache.org/licenses/LICENSE-2.0
197−
198− Unless required by applicable law or agreed to in writing, software
199− distributed under the License is distributed on an "AS IS" BASIS,
200− WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
201− See the License for the specific language governing permissions and
202− limitations under the License.
vendor/cloud.google.com/go/auth/CHANGES.mddeleted−368
@@ -1,368 +0,0 @@
1−# Changelog
2−
3−## [0.13.0](https://github.com/googleapis/google-cloud-go/compare/auth/v0.12.1...auth/v0.13.0) (2024-12-13)
4−
5−
6−### Features
7−
8−* **auth:** Add logging support ([#11079](https://github.com/googleapis/google-cloud-go/issues/11079)) ([c80e31d](https://github.com/googleapis/google-cloud-go/commit/c80e31df5ecb33a810be3dfb9d9e27ac531aa91d))
9−* **auth:** Pass logger from auth layer to metadata package ([#11288](https://github.com/googleapis/google-cloud-go/issues/11288)) ([b552efd](https://github.com/googleapis/google-cloud-go/commit/b552efd6ab34e5dfded18438e0fbfd925805614f))
10−
11−
12−### Bug Fixes
13−
14−* **auth:** Check compute cred type before non-default flag for DP ([#11255](https://github.com/googleapis/google-cloud-go/issues/11255)) ([4347ca1](https://github.com/googleapis/google-cloud-go/commit/4347ca141892be8ae813399b4b437662a103bc90))
15−
16−## [0.12.1](https://github.com/googleapis/google-cloud-go/compare/auth/v0.12.0...auth/v0.12.1) (2024-12-10)
17−
18−
19−### Bug Fixes
20−
21−* **auth:** Correct typo in link ([#11160](https://github.com/googleapis/google-cloud-go/issues/11160)) ([af6fb46](https://github.com/googleapis/google-cloud-go/commit/af6fb46d7cd694ddbe8c9d63bc4cdcd62b9fb2c1))
22−
23−## [0.12.0](https://github.com/googleapis/google-cloud-go/compare/auth/v0.11.0...auth/v0.12.0) (2024-12-04)
24−
25−
26−### Features
27−
28−* **auth:** Add support for providing custom certificate URL ([#11006](https://github.com/googleapis/google-cloud-go/issues/11006)) ([ebf3657](https://github.com/googleapis/google-cloud-go/commit/ebf36579724afb375d3974cf1da38f703e3b7dbc)), refs [#11005](https://github.com/googleapis/google-cloud-go/issues/11005)
29−
30−
31−### Bug Fixes
32−
33−* **auth:** Ensure endpoints are present in Validator ([#11209](https://github.com/googleapis/google-cloud-go/issues/11209)) ([106cd53](https://github.com/googleapis/google-cloud-go/commit/106cd53309facaef1b8ea78376179f523f6912b9)), refs [#11006](https://github.com/googleapis/google-cloud-go/issues/11006) [#11190](https://github.com/googleapis/google-cloud-go/issues/11190) [#11189](https://github.com/googleapis/google-cloud-go/issues/11189) [#11188](https://github.com/googleapis/google-cloud-go/issues/11188)
34−
35−## [0.11.0](https://github.com/googleapis/google-cloud-go/compare/auth/v0.10.2...auth/v0.11.0) (2024-11-21)
36−
37−
38−### Features
39−
40−* **auth:** Add universe domain support to mTLS ([#11159](https://github.com/googleapis/google-cloud-go/issues/11159)) ([117748b](https://github.com/googleapis/google-cloud-go/commit/117748ba1cfd4ae62a6a4feb7e30951cb2bc9344))
41−
42−## [0.10.2](https://github.com/googleapis/google-cloud-go/compare/auth/v0.10.1...auth/v0.10.2) (2024-11-12)
43−
44−
45−### Bug Fixes
46−
47−* **auth:** Restore use of grpc.Dial ([#11118](https://github.com/googleapis/google-cloud-go/issues/11118)) ([2456b94](https://github.com/googleapis/google-cloud-go/commit/2456b943b7b8aaabd4d8bfb7572c0f477ae0db45)), refs [#7556](https://github.com/googleapis/google-cloud-go/issues/7556)
48−
49−## [0.10.1](https://github.com/googleapis/google-cloud-go/compare/auth/v0.10.0...auth/v0.10.1) (2024-11-06)
50−
51−
52−### Bug Fixes
53−
54−* **auth:** Restore Application Default Credentials support to idtoken ([#11083](https://github.com/googleapis/google-cloud-go/issues/11083)) ([8771f2e](https://github.com/googleapis/google-cloud-go/commit/8771f2ea9807ab822083808e0678392edff3b4f2))
55−* **auth:** Skip impersonate universe domain check if empty ([#11086](https://github.com/googleapis/google-cloud-go/issues/11086)) ([87159c1](https://github.com/googleapis/google-cloud-go/commit/87159c1059d4a18d1367ce62746a838a94964ab6))
56−
57−## [0.10.0](https://github.com/googleapis/google-cloud-go/compare/auth/v0.9.9...auth/v0.10.0) (2024-10-30)
58−
59−
60−### Features
61−
62−* **auth:** Add universe domain support to credentials/impersonate ([#10953](https://github.com/googleapis/google-cloud-go/issues/10953)) ([e06cb64](https://github.com/googleapis/google-cloud-go/commit/e06cb6499f7eda3aef08ab18ff197016f667684b))
63−
64−## [0.9.9](https://github.com/googleapis/google-cloud-go/compare/auth/v0.9.8...auth/v0.9.9) (2024-10-22)
65−
66−
67−### Bug Fixes
68−
69−* **auth:** Fallback cert lookups for missing files ([#11013](https://github.com/googleapis/google-cloud-go/issues/11013)) ([bd76695](https://github.com/googleapis/google-cloud-go/commit/bd766957ec238b7c40ddbabb369e612dc9b07313)), refs [#10844](https://github.com/googleapis/google-cloud-go/issues/10844)
70−* **auth:** Replace MDS endpoint universe_domain with universe-domain ([#11000](https://github.com/googleapis/google-cloud-go/issues/11000)) ([6a1586f](https://github.com/googleapis/google-cloud-go/commit/6a1586f2ce9974684affaea84e7b629313b4d114))
71−
72−## [0.9.8](https://github.com/googleapis/google-cloud-go/compare/auth/v0.9.7...auth/v0.9.8) (2024-10-09)
73−
74−
75−### Bug Fixes
76−
77−* **auth:** Restore OpenTelemetry handling in transports ([#10968](https://github.com/googleapis/google-cloud-go/issues/10968)) ([08c6d04](https://github.com/googleapis/google-cloud-go/commit/08c6d04901c1a20e219b2d86df41dbaa6d7d7b55)), refs [#10962](https://github.com/googleapis/google-cloud-go/issues/10962)
78−* **auth:** Try talk to plaintext S2A if credentials can not be found for mTLS-S2A ([#10941](https://github.com/googleapis/google-cloud-go/issues/10941)) ([0f0bf2d](https://github.com/googleapis/google-cloud-go/commit/0f0bf2d18c97dd8b65bcf0099f0802b5631c6287))
79−
80−## [0.9.7](https://github.com/googleapis/google-cloud-go/compare/auth/v0.9.6...auth/v0.9.7) (2024-10-01)
81−
82−
83−### Bug Fixes
84−
85−* **auth:** Restore support for non-default service accounts for DirectPath ([#10937](https://github.com/googleapis/google-cloud-go/issues/10937)) ([a38650e](https://github.com/googleapis/google-cloud-go/commit/a38650edbf420223077498cafa537aec74b37aad)), refs [#10907](https://github.com/googleapis/google-cloud-go/issues/10907)
86−
87−## [0.9.6](https://github.com/googleapis/google-cloud-go/compare/auth/v0.9.5...auth/v0.9.6) (2024-09-30)
88−
89−
90−### Bug Fixes
91−
92−* **auth:** Make aws credentials provider retrieve fresh credentials ([#10920](https://github.com/googleapis/google-cloud-go/issues/10920)) ([250fbf8](https://github.com/googleapis/google-cloud-go/commit/250fbf87d858d865e399a241b7e537c4ff0c3dd8))
93−
94−## [0.9.5](https://github.com/googleapis/google-cloud-go/compare/auth/v0.9.4...auth/v0.9.5) (2024-09-25)
95−
96−
97−### Bug Fixes
98−
99−* **auth:** Restore support for GOOGLE_CLOUD_UNIVERSE_DOMAIN env ([#10915](https://github.com/googleapis/google-cloud-go/issues/10915)) ([94caaaa](https://github.com/googleapis/google-cloud-go/commit/94caaaa061362d0e00ef6214afcc8a0a3e7ebfb2))
100−* **auth:** Skip directpath credentials overwrite when it's not on GCE ([#10833](https://github.com/googleapis/google-cloud-go/issues/10833)) ([7e5e8d1](https://github.com/googleapis/google-cloud-go/commit/7e5e8d10b761b0a6e43e19a028528db361bc07b1))
101−* **auth:** Use new context for non-blocking token refresh ([#10919](https://github.com/googleapis/google-cloud-go/issues/10919)) ([cf7102d](https://github.com/googleapis/google-cloud-go/commit/cf7102d33a21be1e5a9d47a49456b3a57c43b350))
102−
103−## [0.9.4](https://github.com/googleapis/google-cloud-go/compare/auth/v0.9.3...auth/v0.9.4) (2024-09-11)
104−
105−
106−### Bug Fixes
107−
108−* **auth:** Enable self-signed JWT for non-GDU universe domain ([#10831](https://github.com/googleapis/google-cloud-go/issues/10831)) ([f9869f7](https://github.com/googleapis/google-cloud-go/commit/f9869f7903cfd34d1b97c25d0dc5669d2c5138e6))
109−
110−## [0.9.3](https://github.com/googleapis/google-cloud-go/compare/auth/v0.9.2...auth/v0.9.3) (2024-09-03)
111−
112−
113−### Bug Fixes
114−
115−* **auth:** Choose quota project envvar over file when both present ([#10807](https://github.com/googleapis/google-cloud-go/issues/10807)) ([2d8dd77](https://github.com/googleapis/google-cloud-go/commit/2d8dd7700eff92d4b95027be55e26e1e7aa79181)), refs [#10804](https://github.com/googleapis/google-cloud-go/issues/10804)
116−
117−## [0.9.2](https://github.com/googleapis/google-cloud-go/compare/auth/v0.9.1...auth/v0.9.2) (2024-08-30)
118−
119−
120−### Bug Fixes
121−
122−* **auth:** Handle non-Transport DefaultTransport ([#10733](https://github.com/googleapis/google-cloud-go/issues/10733)) ([98d91dc](https://github.com/googleapis/google-cloud-go/commit/98d91dc8316b247498fab41ab35e57a0446fe556)), refs [#10742](https://github.com/googleapis/google-cloud-go/issues/10742)
123−* **auth:** Make sure quota option takes precedence over env/file ([#10797](https://github.com/googleapis/google-cloud-go/issues/10797)) ([f1b050d](https://github.com/googleapis/google-cloud-go/commit/f1b050d56d804b245cab048c2980d32b0eaceb4e)), refs [#10795](https://github.com/googleapis/google-cloud-go/issues/10795)
124−
125−
126−### Documentation
127−
128−* **auth:** Fix Go doc comment link ([#10751](https://github.com/googleapis/google-cloud-go/issues/10751)) ([015acfa](https://github.com/googleapis/google-cloud-go/commit/015acfab4d172650928bb1119bc2cd6307b9a437))
129−
130−## [0.9.1](https://github.com/googleapis/google-cloud-go/compare/auth/v0.9.0...auth/v0.9.1) (2024-08-22)
131−
132−
133−### Bug Fixes
134−
135−* **auth:** Setting expireEarly to default when the value is 0 ([#10732](https://github.com/googleapis/google-cloud-go/issues/10732)) ([5e67869](https://github.com/googleapis/google-cloud-go/commit/5e67869a31e9e8ecb4eeebd2cfa11a761c3b1948))
136−
137−## [0.9.0](https://github.com/googleapis/google-cloud-go/compare/auth/v0.8.1...auth/v0.9.0) (2024-08-16)
138−
139−
140−### Features
141−
142−* **auth:** Auth library can talk to S2A over mTLS ([#10634](https://github.com/googleapis/google-cloud-go/issues/10634)) ([5250a13](https://github.com/googleapis/google-cloud-go/commit/5250a13ec95b8d4eefbe0158f82857ff2189cb45))
143−
144−## [0.8.1](https://github.com/googleapis/google-cloud-go/compare/auth/v0.8.0...auth/v0.8.1) (2024-08-13)
145−
146−
147−### Bug Fixes
148−
149−* **auth:** Make default client creation more lenient ([#10669](https://github.com/googleapis/google-cloud-go/issues/10669)) ([1afb9ee](https://github.com/googleapis/google-cloud-go/commit/1afb9ee1ee9de9810722800018133304a0ca34d1)), refs [#10638](https://github.com/googleapis/google-cloud-go/issues/10638)
150−
151−## [0.8.0](https://github.com/googleapis/google-cloud-go/compare/auth/v0.7.3...auth/v0.8.0) (2024-08-07)
152−
153−
154−### Features
155−
156−* **auth:** Adds support for X509 workload identity federation ([#10373](https://github.com/googleapis/google-cloud-go/issues/10373)) ([5d07505](https://github.com/googleapis/google-cloud-go/commit/5d075056cbe27bb1da4072a26070c41f8999eb9b))
157−
158−## [0.7.3](https://github.com/googleapis/google-cloud-go/compare/auth/v0.7.2...auth/v0.7.3) (2024-08-01)
159−
160−
161−### Bug Fixes
162−
163−* **auth/oauth2adapt:** Update dependencies ([257c40b](https://github.com/googleapis/google-cloud-go/commit/257c40bd6d7e59730017cf32bda8823d7a232758))
164−* **auth:** Disable automatic universe domain check for MDS ([#10620](https://github.com/googleapis/google-cloud-go/issues/10620)) ([7cea5ed](https://github.com/googleapis/google-cloud-go/commit/7cea5edd5a0c1e6bca558696f5607879141910e8))
165−* **auth:** Update dependencies ([257c40b](https://github.com/googleapis/google-cloud-go/commit/257c40bd6d7e59730017cf32bda8823d7a232758))
166−
167−## [0.7.2](https://github.com/googleapis/google-cloud-go/compare/auth/v0.7.1...auth/v0.7.2) (2024-07-22)
168−
169−
170−### Bug Fixes
171−
172−* **auth:** Use default client for universe metadata lookup ([#10551](https://github.com/googleapis/google-cloud-go/issues/10551)) ([d9046fd](https://github.com/googleapis/google-cloud-go/commit/d9046fdd1435d1ce48f374806c1def4cb5ac6cd3)), refs [#10544](https://github.com/googleapis/google-cloud-go/issues/10544)
173−
174−## [0.7.1](https://github.com/googleapis/google-cloud-go/compare/auth/v0.7.0...auth/v0.7.1) (2024-07-10)
175−
176−
177−### Bug Fixes
178−
179−* **auth:** Bump google.golang.org/grpc@v1.64.1 ([8ecc4e9](https://github.com/googleapis/google-cloud-go/commit/8ecc4e9622e5bbe9b90384d5848ab816027226c5))
180−
181−## [0.7.0](https://github.com/googleapis/google-cloud-go/compare/auth/v0.6.1...auth/v0.7.0) (2024-07-09)
182−
183−
184−### Features
185−
186−* **auth:** Add workload X509 cert provider as a default cert provider ([#10479](https://github.com/googleapis/google-cloud-go/issues/10479)) ([c51ee6c](https://github.com/googleapis/google-cloud-go/commit/c51ee6cf65ce05b4d501083e49d468c75ac1ea63))
187−
188−
189−### Bug Fixes
190−
191−* **auth/oauth2adapt:** Bump google.golang.org/api@v0.187.0 ([8fa9e39](https://github.com/googleapis/google-cloud-go/commit/8fa9e398e512fd8533fd49060371e61b5725a85b))
192−* **auth:** Bump google.golang.org/api@v0.187.0 ([8fa9e39](https://github.com/googleapis/google-cloud-go/commit/8fa9e398e512fd8533fd49060371e61b5725a85b))
193−* **auth:** Check len of slices, not non-nil ([#10483](https://github.com/googleapis/google-cloud-go/issues/10483)) ([0a966a1](https://github.com/googleapis/google-cloud-go/commit/0a966a183e5f0e811977216d736d875b7233e942))
194−
195−## [0.6.1](https://github.com/googleapis/google-cloud-go/compare/auth/v0.6.0...auth/v0.6.1) (2024-07-01)
196−
197−
198−### Bug Fixes
199−
200−* **auth:** Support gRPC API keys ([#10460](https://github.com/googleapis/google-cloud-go/issues/10460)) ([daa6646](https://github.com/googleapis/google-cloud-go/commit/daa6646d2af5d7fb5b30489f4934c7db89868c7c))
201−* **auth:** Update http and grpc transports to support token exchange over mTLS ([#10397](https://github.com/googleapis/google-cloud-go/issues/10397)) ([c6dfdcf](https://github.com/googleapis/google-cloud-go/commit/c6dfdcf893c3f971eba15026c12db0a960ae81f2))
202−
203−## [0.6.0](https://github.com/googleapis/google-cloud-go/compare/auth/v0.5.2...auth/v0.6.0) (2024-06-25)
204−
205−
206−### Features
207−
208−* **auth:** Add non-blocking token refresh for compute MDS ([#10263](https://github.com/googleapis/google-cloud-go/issues/10263)) ([9ac350d](https://github.com/googleapis/google-cloud-go/commit/9ac350da11a49b8e2174d3fc5b1a5070fec78b4e))
209−
210−
211−### Bug Fixes
212−
213−* **auth:** Return error if envvar detected file returns an error ([#10431](https://github.com/googleapis/google-cloud-go/issues/10431)) ([e52b9a7](https://github.com/googleapis/google-cloud-go/commit/e52b9a7c45468827f5d220ab00965191faeb9d05))
214−
215−## [0.5.2](https://github.com/googleapis/google-cloud-go/compare/auth/v0.5.1...auth/v0.5.2) (2024-06-24)
216−
217−
218−### Bug Fixes
219−
220−* **auth:** Fetch initial token when CachedTokenProviderOptions.DisableAutoRefresh is true ([#10415](https://github.com/googleapis/google-cloud-go/issues/10415)) ([3266763](https://github.com/googleapis/google-cloud-go/commit/32667635ca2efad05cd8c087c004ca07d7406913)), refs [#10414](https://github.com/googleapis/google-cloud-go/issues/10414)
221−
222−## [0.5.1](https://github.com/googleapis/google-cloud-go/compare/auth/v0.5.0...auth/v0.5.1) (2024-05-31)
223−
224−
225−### Bug Fixes
226−
227−* **auth:** Pass through client to 2LO and 3LO flows ([#10290](https://github.com/googleapis/google-cloud-go/issues/10290)) ([685784e](https://github.com/googleapis/google-cloud-go/commit/685784ea84358c15e9214bdecb307d37aa3b6d2f))
228−
229−## [0.5.0](https://github.com/googleapis/google-cloud-go/compare/auth/v0.4.2...auth/v0.5.0) (2024-05-28)
230−
231−
232−### Features
233−
234−* **auth:** Adds X509 workload certificate provider ([#10233](https://github.com/googleapis/google-cloud-go/issues/10233)) ([17a9db7](https://github.com/googleapis/google-cloud-go/commit/17a9db73af35e3d1a7a25ac4fd1377a103de6150))
235−
236−## [0.4.2](https://github.com/googleapis/google-cloud-go/compare/auth/v0.4.1...auth/v0.4.2) (2024-05-16)
237−
238−
239−### Bug Fixes
240−
241−* **auth:** Enable client certificates by default only for GDU ([#10151](https://github.com/googleapis/google-cloud-go/issues/10151)) ([7c52978](https://github.com/googleapis/google-cloud-go/commit/7c529786275a39b7e00525f7d5e7be0d963e9e15))
242−* **auth:** Handle non-Transport DefaultTransport ([#10162](https://github.com/googleapis/google-cloud-go/issues/10162)) ([fa3bfdb](https://github.com/googleapis/google-cloud-go/commit/fa3bfdb23aaa45b34394a8b61e753b3587506782)), refs [#10159](https://github.com/googleapis/google-cloud-go/issues/10159)
243−* **auth:** Have refresh time match docs ([#10147](https://github.com/googleapis/google-cloud-go/issues/10147)) ([bcb5568](https://github.com/googleapis/google-cloud-go/commit/bcb5568c07a54dd3d2e869d15f502b0741a609e8))
244−* **auth:** Update compute token fetching error with named prefix ([#10180](https://github.com/googleapis/google-cloud-go/issues/10180)) ([4573504](https://github.com/googleapis/google-cloud-go/commit/4573504828d2928bebedc875d87650ba227829ea))
245−
246−## [0.4.1](https://github.com/googleapis/google-cloud-go/compare/auth/v0.4.0...auth/v0.4.1) (2024-05-09)
247−
248−
249−### Bug Fixes
250−
251−* **auth:** Don't try to detect default creds it opt configured ([#10143](https://github.com/googleapis/google-cloud-go/issues/10143)) ([804632e](https://github.com/googleapis/google-cloud-go/commit/804632e7c5b0b85ff522f7951114485e256eb5bc))
252−
253−## [0.4.0](https://github.com/googleapis/google-cloud-go/compare/auth/v0.3.0...auth/v0.4.0) (2024-05-07)
254−
255−
256−### Features
257−
258−* **auth:** Enable client certificates by default ([#10102](https://github.com/googleapis/google-cloud-go/issues/10102)) ([9013e52](https://github.com/googleapis/google-cloud-go/commit/9013e5200a6ec0f178ed91acb255481ffb073a2c))
259−
260−
261−### Bug Fixes
262−
263−* **auth:** Get s2a logic up to date ([#10093](https://github.com/googleapis/google-cloud-go/issues/10093)) ([4fe9ae4](https://github.com/googleapis/google-cloud-go/commit/4fe9ae4b7101af2a5221d6d6b2e77b479305bb06))
264−
265−## [0.3.0](https://github.com/googleapis/google-cloud-go/compare/auth/v0.2.2...auth/v0.3.0) (2024-04-23)
266−
267−
268−### Features
269−
270−* **auth/httptransport:** Add ability to customize transport ([#10023](https://github.com/googleapis/google-cloud-go/issues/10023)) ([72c7f6b](https://github.com/googleapis/google-cloud-go/commit/72c7f6bbec3136cc7a62788fc7186bc33ef6c3b3)), refs [#9812](https://github.com/googleapis/google-cloud-go/issues/9812) [#9814](https://github.com/googleapis/google-cloud-go/issues/9814)
271−
272−
273−### Bug Fixes
274−
275−* **auth/credentials:** Error on bad file name if explicitly set ([#10018](https://github.com/googleapis/google-cloud-go/issues/10018)) ([55beaa9](https://github.com/googleapis/google-cloud-go/commit/55beaa993aaf052d8be39766afc6777c3c2a0bdd)), refs [#9809](https://github.com/googleapis/google-cloud-go/issues/9809)
276−
277−## [0.2.2](https://github.com/googleapis/google-cloud-go/compare/auth/v0.2.1...auth/v0.2.2) (2024-04-19)
278−
279−
280−### Bug Fixes
281−
282−* **auth:** Add internal opt to skip validation on transports ([#9999](https://github.com/googleapis/google-cloud-go/issues/9999)) ([9e20ef8](https://github.com/googleapis/google-cloud-go/commit/9e20ef89f6287d6bd03b8697d5898dc43b4a77cf)), refs [#9823](https://github.com/googleapis/google-cloud-go/issues/9823)
283−* **auth:** Set secure flag for gRPC conn pools ([#10002](https://github.com/googleapis/google-cloud-go/issues/10002)) ([14e3956](https://github.com/googleapis/google-cloud-go/commit/14e3956dfd736399731b5ee8d9b178ae085cf7ba)), refs [#9833](https://github.com/googleapis/google-cloud-go/issues/9833)
284−
285−## [0.2.1](https://github.com/googleapis/google-cloud-go/compare/auth/v0.2.0...auth/v0.2.1) (2024-04-18)
286−
287−
288−### Bug Fixes
289−
290−* **auth:** Default gRPC token type to Bearer if not set ([#9800](https://github.com/googleapis/google-cloud-go/issues/9800)) ([5284066](https://github.com/googleapis/google-cloud-go/commit/5284066670b6fe65d79089cfe0199c9660f87fc7))
291−
292−## [0.2.0](https://github.com/googleapis/google-cloud-go/compare/auth/v0.1.1...auth/v0.2.0) (2024-04-15)
293−
294−### Breaking Changes
295−
296−In the below mentioned commits there were a few large breaking changes since the
297−last release of the module.
298−
299−1. The `Credentials` type has been moved to the root of the module as it is
300− becoming the core abstraction for the whole module.
301−2. Because of the above mentioned change many functions that previously
302− returned a `TokenProvider` now return `Credentials`. Similarly, these
303− functions have been renamed to be more specific.
304−3. Most places that used to take an optional `TokenProvider` now accept
305− `Credentials`. You can make a `Credentials` from a `TokenProvider` using the
306− constructor found in the `auth` package.
307−4. The `detect` package has been renamed to `credentials`. With this change some
308− function signatures were also updated for better readability.
309−5. Derivative auth flows like `impersonate` and `downscope` have been moved to
310− be under the new `credentials` package.
311−
312−Although these changes are disruptive we think that they are for the best of the
313−long-term health of the module. We do not expect any more large breaking changes
314−like these in future revisions, even before 1.0.0. This version will be the
315−first version of the auth library that our client libraries start to use and
316−depend on.
317−
318−### Features
319−
320−* **auth/credentials/externalaccount:** Add default TokenURL ([#9700](https://github.com/googleapis/google-cloud-go/issues/9700)) ([81830e6](https://github.com/googleapis/google-cloud-go/commit/81830e6848ceefd055aa4d08f933d1154455a0f6))
321−* **auth:** Add downscope.Options.UniverseDomain ([#9634](https://github.com/googleapis/google-cloud-go/issues/9634)) ([52cf7d7](https://github.com/googleapis/google-cloud-go/commit/52cf7d780853594291c4e34302d618299d1f5a1d))
322−* **auth:** Add universe domain to grpctransport and httptransport ([#9663](https://github.com/googleapis/google-cloud-go/issues/9663)) ([67d353b](https://github.com/googleapis/google-cloud-go/commit/67d353beefe3b607c08c891876fbd95ab89e5fe3)), refs [#9670](https://github.com/googleapis/google-cloud-go/issues/9670)
323−* **auth:** Add UniverseDomain to DetectOptions ([#9536](https://github.com/googleapis/google-cloud-go/issues/9536)) ([3618d3f](https://github.com/googleapis/google-cloud-go/commit/3618d3f7061615c0e189f376c75abc201203b501))
324−* **auth:** Make package externalaccount public ([#9633](https://github.com/googleapis/google-cloud-go/issues/9633)) ([a0978d8](https://github.com/googleapis/google-cloud-go/commit/a0978d8e96968399940ebd7d092539772bf9caac))
325−* **auth:** Move credentials to base auth package ([#9590](https://github.com/googleapis/google-cloud-go/issues/9590)) ([1a04baf](https://github.com/googleapis/google-cloud-go/commit/1a04bafa83c27342b9308d785645e1e5423ea10d))
326−* **auth:** Refactor public sigs to use Credentials ([#9603](https://github.com/googleapis/google-cloud-go/issues/9603)) ([69cb240](https://github.com/googleapis/google-cloud-go/commit/69cb240c530b1f7173a9af2555c19e9a1beb56c5))
327−
328−
329−### Bug Fixes
330−
331−* **auth/oauth2adapt:** Update protobuf dep to v1.33.0 ([30b038d](https://github.com/googleapis/google-cloud-go/commit/30b038d8cac0b8cd5dd4761c87f3f298760dd33a))
332−* **auth:** Fix uint32 conversion ([9221c7f](https://github.com/googleapis/google-cloud-go/commit/9221c7fa12cef9d5fb7ddc92f41f1d6204971c7b))
333−* **auth:** Port sts expires fix ([#9618](https://github.com/googleapis/google-cloud-go/issues/9618)) ([7bec97b](https://github.com/googleapis/google-cloud-go/commit/7bec97b2f51ed3ac4f9b88bf100d301da3f5d1bd))
334−* **auth:** Read universe_domain from all credentials files ([#9632](https://github.com/googleapis/google-cloud-go/issues/9632)) ([16efbb5](https://github.com/googleapis/google-cloud-go/commit/16efbb52e39ea4a319e5ee1e95c0e0305b6d9824))
335−* **auth:** Remove content-type header from idms get requests ([#9508](https://github.com/googleapis/google-cloud-go/issues/9508)) ([8589f41](https://github.com/googleapis/google-cloud-go/commit/8589f41599d265d7c3d46a3d86c9fab2329cbdd9))
336−* **auth:** Update protobuf dep to v1.33.0 ([30b038d](https://github.com/googleapis/google-cloud-go/commit/30b038d8cac0b8cd5dd4761c87f3f298760dd33a))
337−
338−## [0.1.1](https://github.com/googleapis/google-cloud-go/compare/auth/v0.1.0...auth/v0.1.1) (2024-03-10)
339−
340−
341−### Bug Fixes
342−
343−* **auth/impersonate:** Properly send default detect params ([#9529](https://github.com/googleapis/google-cloud-go/issues/9529)) ([5b6b8be](https://github.com/googleapis/google-cloud-go/commit/5b6b8bef577f82707e51f5cc5d258d5bdf90218f)), refs [#9136](https://github.com/googleapis/google-cloud-go/issues/9136)
344−* **auth:** Update grpc-go to v1.56.3 ([343cea8](https://github.com/googleapis/google-cloud-go/commit/343cea8c43b1e31ae21ad50ad31d3b0b60143f8c))
345−* **auth:** Update grpc-go to v1.59.0 ([81a97b0](https://github.com/googleapis/google-cloud-go/commit/81a97b06cb28b25432e4ece595c55a9857e960b7))
346−
347−## 0.1.0 (2023-10-18)
348−
349−
350−### Features
351−
352−* **auth:** Add base auth package ([#8465](https://github.com/googleapis/google-cloud-go/issues/8465)) ([6a45f26](https://github.com/googleapis/google-cloud-go/commit/6a45f26b809b64edae21f312c18d4205f96b180e))
353−* **auth:** Add cert support to httptransport ([#8569](https://github.com/googleapis/google-cloud-go/issues/8569)) ([37e3435](https://github.com/googleapis/google-cloud-go/commit/37e3435f8e98595eafab481bdfcb31a4c56fa993))
354−* **auth:** Add Credentials.UniverseDomain() ([#8654](https://github.com/googleapis/google-cloud-go/issues/8654)) ([af0aa1e](https://github.com/googleapis/google-cloud-go/commit/af0aa1ed8015bc8fe0dd87a7549ae029107cbdb8))
355−* **auth:** Add detect package ([#8491](https://github.com/googleapis/google-cloud-go/issues/8491)) ([d977419](https://github.com/googleapis/google-cloud-go/commit/d977419a3269f6acc193df77a2136a6eb4b4add7))
356−* **auth:** Add downscope package ([#8532](https://github.com/googleapis/google-cloud-go/issues/8532)) ([dda9bff](https://github.com/googleapis/google-cloud-go/commit/dda9bff8ec70e6d104901b4105d13dcaa4e2404c))
357−* **auth:** Add grpctransport package ([#8625](https://github.com/googleapis/google-cloud-go/issues/8625)) ([69a8347](https://github.com/googleapis/google-cloud-go/commit/69a83470bdcc7ed10c6c36d1abc3b7cfdb8a0ee5))
358−* **auth:** Add httptransport package ([#8567](https://github.com/googleapis/google-cloud-go/issues/8567)) ([6898597](https://github.com/googleapis/google-cloud-go/commit/6898597d2ea95d630fcd00fd15c58c75ea843bff))
359−* **auth:** Add idtoken package ([#8580](https://github.com/googleapis/google-cloud-go/issues/8580)) ([a79e693](https://github.com/googleapis/google-cloud-go/commit/a79e693e97e4e3e1c6742099af3dbc58866d88fe))
360−* **auth:** Add impersonate package ([#8578](https://github.com/googleapis/google-cloud-go/issues/8578)) ([e29ba0c](https://github.com/googleapis/google-cloud-go/commit/e29ba0cb7bd3888ab9e808087027dc5a32474c04))
361−* **auth:** Add support for external accounts in detect ([#8508](https://github.com/googleapis/google-cloud-go/issues/8508)) ([62210d5](https://github.com/googleapis/google-cloud-go/commit/62210d5d3e56e8e9f35db8e6ac0defec19582507))
362−* **auth:** Port external account changes ([#8697](https://github.com/googleapis/google-cloud-go/issues/8697)) ([5823db5](https://github.com/googleapis/google-cloud-go/commit/5823db5d633069999b58b9131a7f9cd77e82c899))
363−
364−
365−### Bug Fixes
366−
367−* **auth/oauth2adapt:** Update golang.org/x/net to v0.17.0 ([174da47](https://github.com/googleapis/google-cloud-go/commit/174da47254fefb12921bbfc65b7829a453af6f5d))
368−* **auth:** Update golang.org/x/net to v0.17.0 ([174da47](https://github.com/googleapis/google-cloud-go/commit/174da47254fefb12921bbfc65b7829a453af6f5d))
vendor/cloud.google.com/go/auth/LICENSEdeleted−202
@@ -1,202 +0,0 @@
1−
2− Apache License
3− Version 2.0, January 2004
4− http://www.apache.org/licenses/
5−
6− TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
7−
8− 1. Definitions.
9−
10− "License" shall mean the terms and conditions for use, reproduction,
11− and distribution as defined by Sections 1 through 9 of this document.
12−
13− "Licensor" shall mean the copyright owner or entity authorized by
14− the copyright owner that is granting the License.
15−
16− "Legal Entity" shall mean the union of the acting entity and all
17− other entities that control, are controlled by, or are under common
18− control with that entity. For the purposes of this definition,
19− "control" means (i) the power, direct or indirect, to cause the
20− direction or management of such entity, whether by contract or
21− otherwise, or (ii) ownership of fifty percent (50%) or more of the
22− outstanding shares, or (iii) beneficial ownership of such entity.
23−
24− "You" (or "Your") shall mean an individual or Legal Entity
25− exercising permissions granted by this License.
26−
27− "Source" form shall mean the preferred form for making modifications,
28− including but not limited to software source code, documentation
29− source, and configuration files.
30−
31− "Object" form shall mean any form resulting from mechanical
32− transformation or translation of a Source form, including but
33− not limited to compiled object code, generated documentation,
34− and conversions to other media types.
35−
36− "Work" shall mean the work of authorship, whether in Source or
37− Object form, made available under the License, as indicated by a
38− copyright notice that is included in or attached to the work
39− (an example is provided in the Appendix below).
40−
41− "Derivative Works" shall mean any work, whether in Source or Object
42− form, that is based on (or derived from) the Work and for which the
43− editorial revisions, annotations, elaborations, or other modifications
44− represent, as a whole, an original work of authorship. For the purposes
45− of this License, Derivative Works shall not include works that remain
46− separable from, or merely link (or bind by name) to the interfaces of,
47− the Work and Derivative Works thereof.
48−
49− "Contribution" shall mean any work of authorship, including
50− the original version of the Work and any modifications or additions
51− to that Work or Derivative Works thereof, that is intentionally
52− submitted to Licensor for inclusion in the Work by the copyright owner
53− or by an individual or Legal Entity authorized to submit on behalf of
54− the copyright owner. For the purposes of this definition, "submitted"
55− means any form of electronic, verbal, or written communication sent
56− to the Licensor or its representatives, including but not limited to
57− communication on electronic mailing lists, source code control systems,
58− and issue tracking systems that are managed by, or on behalf of, the
59− Licensor for the purpose of discussing and improving the Work, but
60− excluding communication that is conspicuously marked or otherwise
61− designated in writing by the copyright owner as "Not a Contribution."
62−
63− "Contributor" shall mean Licensor and any individual or Legal Entity
64− on behalf of whom a Contribution has been received by Licensor and
65− subsequently incorporated within the Work.
66−
67− 2. Grant of Copyright License. Subject to the terms and conditions of
68− this License, each Contributor hereby grants to You a perpetual,
69− worldwide, non-exclusive, no-charge, royalty-free, irrevocable
70− copyright license to reproduce, prepare Derivative Works of,
71− publicly display, publicly perform, sublicense, and distribute the
72− Work and such Derivative Works in Source or Object form.
73−
74− 3. Grant of Patent License. Subject to the terms and conditions of
75− this License, each Contributor hereby grants to You a perpetual,
76− worldwide, non-exclusive, no-charge, royalty-free, irrevocable
77− (except as stated in this section) patent license to make, have made,
78− use, offer to sell, sell, import, and otherwise transfer the Work,
79− where such license applies only to those patent claims licensable
80− by such Contributor that are necessarily infringed by their
81− Contribution(s) alone or by combination of their Contribution(s)
82− with the Work to which such Contribution(s) was submitted. If You
83− institute patent litigation against any entity (including a
84− cross-claim or counterclaim in a lawsuit) alleging that the Work
85− or a Contribution incorporated within the Work constitutes direct
86− or contributory patent infringement, then any patent licenses
87− granted to You under this License for that Work shall terminate
88− as of the date such litigation is filed.
89−
90− 4. Redistribution. You may reproduce and distribute copies of the
91− Work or Derivative Works thereof in any medium, with or without
92− modifications, and in Source or Object form, provided that You
93− meet the following conditions:
94−
95− (a) You must give any other recipients of the Work or
96− Derivative Works a copy of this License; and
97−
98− (b) You must cause any modified files to carry prominent notices
99− stating that You changed the files; and
100−
101− (c) You must retain, in the Source form of any Derivative Works
102− that You distribute, all copyright, patent, trademark, and
103− attribution notices from the Source form of the Work,
104− excluding those notices that do not pertain to any part of
105− the Derivative Works; and
106−
107− (d) If the Work includes a "NOTICE" text file as part of its
108− distribution, then any Derivative Works that You distribute must
109− include a readable copy of the attribution notices contained
110− within such NOTICE file, excluding those notices that do not
111− pertain to any part of the Derivative Works, in at least one
112− of the following places: within a NOTICE text file distributed
113− as part of the Derivative Works; within the Source form or
114− documentation, if provided along with the Derivative Works; or,
115− within a display generated by the Derivative Works, if and
116− wherever such third-party notices normally appear. The contents
117− of the NOTICE file are for informational purposes only and
118− do not modify the License. You may add Your own attribution
119− notices within Derivative Works that You distribute, alongside
120− or as an addendum to the NOTICE text from the Work, provided
121− that such additional attribution notices cannot be construed
122− as modifying the License.
123−
124− You may add Your own copyright statement to Your modifications and
125− may provide additional or different license terms and conditions
126− for use, reproduction, or distribution of Your modifications, or
127− for any such Derivative Works as a whole, provided Your use,
128− reproduction, and distribution of the Work otherwise complies with
129− the conditions stated in this License.
130−
131− 5. Submission of Contributions. Unless You explicitly state otherwise,
132− any Contribution intentionally submitted for inclusion in the Work
133− by You to the Licensor shall be under the terms and conditions of
134− this License, without any additional terms or conditions.
135− Notwithstanding the above, nothing herein shall supersede or modify
136− the terms of any separate license agreement you may have executed
137− with Licensor regarding such Contributions.
138−
139− 6. Trademarks. This License does not grant permission to use the trade
140− names, trademarks, service marks, or product names of the Licensor,
141− except as required for reasonable and customary use in describing the
142− origin of the Work and reproducing the content of the NOTICE file.
143−
144− 7. Disclaimer of Warranty. Unless required by applicable law or
145− agreed to in writing, Licensor provides the Work (and each
146− Contributor provides its Contributions) on an "AS IS" BASIS,
147− WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
148− implied, including, without limitation, any warranties or conditions
149− of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
150− PARTICULAR PURPOSE. You are solely responsible for determining the
151− appropriateness of using or redistributing the Work and assume any
152− risks associated with Your exercise of permissions under this License.
153−
154− 8. Limitation of Liability. In no event and under no legal theory,
155− whether in tort (including negligence), contract, or otherwise,
156− unless required by applicable law (such as deliberate and grossly
157− negligent acts) or agreed to in writing, shall any Contributor be
158− liable to You for damages, including any direct, indirect, special,
159− incidental, or consequential damages of any character arising as a
160− result of this License or out of the use or inability to use the
161− Work (including but not limited to damages for loss of goodwill,
162− work stoppage, computer failure or malfunction, or any and all
163− other commercial damages or losses), even if such Contributor
164− has been advised of the possibility of such damages.
165−
166− 9. Accepting Warranty or Additional Liability. While redistributing
167− the Work or Derivative Works thereof, You may choose to offer,
168− and charge a fee for, acceptance of support, warranty, indemnity,
169− or other liability obligations and/or rights consistent with this
170− License. However, in accepting such obligations, You may act only
171− on Your own behalf and on Your sole responsibility, not on behalf
172− of any other Contributor, and only if You agree to indemnify,
173− defend, and hold each Contributor harmless for any liability
174− incurred by, or claims asserted against, such Contributor by reason
175− of your accepting any such warranty or additional liability.
176−
177− END OF TERMS AND CONDITIONS
178−
179− APPENDIX: How to apply the Apache License to your work.
180−
181− To apply the Apache License to your work, attach the following
182− boilerplate notice, with the fields enclosed by brackets "[]"
183− replaced with your own identifying information. (Don't include
184− the brackets!) The text should be enclosed in the appropriate
185− comment syntax for the file format. We also recommend that a
186− file or class name and description of purpose be included on the
187− same "printed page" as the copyright notice for easier
188− identification within third-party archives.
189−
190− Copyright [yyyy] [name of copyright owner]
191−
192− Licensed under the Apache License, Version 2.0 (the "License");
193− you may not use this file except in compliance with the License.
194− You may obtain a copy of the License at
195−
196− http://www.apache.org/licenses/LICENSE-2.0
197−
198− Unless required by applicable law or agreed to in writing, software
199− distributed under the License is distributed on an "AS IS" BASIS,
200− WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
201− See the License for the specific language governing permissions and
202− limitations under the License.
vendor/cloud.google.com/go/auth/README.mddeleted−40
@@ -1,40 +0,0 @@
1−# Google Auth Library for Go
2−
3−[![Go Reference](https://pkg.go.dev/badge/cloud.google.com/go/auth.svg)](https://pkg.go.dev/cloud.google.com/go/auth)
4−
5−## Install
6−
7−``` bash
8−go get cloud.google.com/go/auth@latest
9−```
10−
11−## Usage
12−
13−The most common way this library is used is transitively, by default, from any
14−of our Go client libraries.
15−
16−### Notable use-cases
17−
18−- To create a credential directly please see examples in the
19− [credentials](https://pkg.go.dev/cloud.google.com/go/auth/credentials)
20− package.
21−- To create a authenticated HTTP client please see examples in the
22− [httptransport](https://pkg.go.dev/cloud.google.com/go/auth/httptransport)
23− package.
24−- To create a authenticated gRPC connection please see examples in the
25− [grpctransport](https://pkg.go.dev/cloud.google.com/go/auth/grpctransport)
26− package.
27−- To create an ID token please see examples in the
28− [idtoken](https://pkg.go.dev/cloud.google.com/go/auth/credentials/idtoken)
29− package.
30−
31−## Contributing
32−
33−Contributions are welcome. Please, see the
34−[CONTRIBUTING](https://github.com/GoogleCloudPlatform/google-cloud-go/blob/main/CONTRIBUTING.md)
35−document for details.
36−
37−Please note that this project is released with a Contributor Code of Conduct.
38−By participating in this project you agree to abide by its terms.
39−See [Contributor Code of Conduct](https://github.com/GoogleCloudPlatform/google-cloud-go/blob/main/CONTRIBUTING.md#contributor-code-of-conduct)
40−for more information.
vendor/cloud.google.com/go/auth/auth.godeleted−618
@@ -1,618 +0,0 @@
1−// Copyright 2023 Google LLC
2−//
3−// Licensed under the Apache License, Version 2.0 (the "License");
4−// you may not use this file except in compliance with the License.
5−// You may obtain a copy of the License at
6−//
7−// http://www.apache.org/licenses/LICENSE-2.0
8−//
9−// Unless required by applicable law or agreed to in writing, software
10−// distributed under the License is distributed on an "AS IS" BASIS,
11−// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12−// See the License for the specific language governing permissions and
13−// limitations under the License.
14−
15−// Package auth provides utilities for managing Google Cloud credentials,
16−// including functionality for creating, caching, and refreshing OAuth2 tokens.
17−// It offers customizable options for different OAuth2 flows, such as 2-legged
18−// (2LO) and 3-legged (3LO) OAuth, along with support for PKCE and automatic
19−// token management.
20−package auth
21−
22−import (
23− "context"
24− "encoding/json"
25− "errors"
26− "fmt"
27− "log/slog"
28− "net/http"
29− "net/url"
30− "strings"
31− "sync"
32− "time"
33−
34− "cloud.google.com/go/auth/internal"
35− "cloud.google.com/go/auth/internal/jwt"
36− "github.com/googleapis/gax-go/v2/internallog"
37−)
38−
39−const (
40− // Parameter keys for AuthCodeURL method to support PKCE.
41− codeChallengeKey = "code_challenge"
42− codeChallengeMethodKey = "code_challenge_method"
43−
44− // Parameter key for Exchange method to support PKCE.
45− codeVerifierKey = "code_verifier"
46−
47− // 3 minutes and 45 seconds before expiration. The shortest MDS cache is 4 minutes,
48− // so we give it 15 seconds to refresh it's cache before attempting to refresh a token.
49− defaultExpiryDelta = 225 * time.Second
50−
51− universeDomainDefault = "googleapis.com"
52−)
53−
54−// tokenState represents different states for a [Token].
55−type tokenState int
56−
57−const (
58− // fresh indicates that the [Token] is valid. It is not expired or close to
59− // expired, or the token has no expiry.
60− fresh tokenState = iota
61− // stale indicates that the [Token] is close to expired, and should be
62− // refreshed. The token can be used normally.
63− stale
64− // invalid indicates that the [Token] is expired or invalid. The token
65− // cannot be used for a normal operation.
66− invalid
67−)
68−
69−var (
70− defaultGrantType = "urn:ietf:params:oauth:grant-type:jwt-bearer"
71− defaultHeader = &jwt.Header{Algorithm: jwt.HeaderAlgRSA256, Type: jwt.HeaderType}
72−
73− // for testing
74− timeNow = time.Now
75−)
76−
77−// TokenProvider specifies an interface for anything that can return a token.
78−type TokenProvider interface {
79− // Token returns a Token or an error.
80− // The Token returned must be safe to use
81− // concurrently.
82− // The returned Token must not be modified.
83− // The context provided must be sent along to any requests that are made in
84− // the implementing code.
85− Token(context.Context) (*Token, error)
86−}
87−
88−// Token holds the credential token used to authorized requests. All fields are
89−// considered read-only.
90−type Token struct {
91− // Value is the token used to authorize requests. It is usually an access
92− // token but may be other types of tokens such as ID tokens in some flows.
93− Value string
94− // Type is the type of token Value is. If uninitialized, it should be
95− // assumed to be a "Bearer" token.
96− Type string
97− // Expiry is the time the token is set to expire.
98− Expiry time.Time
99− // Metadata may include, but is not limited to, the body of the token
100− // response returned by the server.
101− Metadata map[string]interface{} // TODO(codyoss): maybe make a method to flatten metadata to avoid []string for url.Values
102−}
103−
104−// IsValid reports that a [Token] is non-nil, has a [Token.Value], and has not
105−// expired. A token is considered expired if [Token.Expiry] has passed or will
106−// pass in the next 225 seconds.
107−func (t *Token) IsValid() bool {
108− return t.isValidWithEarlyExpiry(defaultExpiryDelta)
109−}
110−
111−// MetadataString is a convenience method for accessing string values in the
112−// token's metadata. Returns an empty string if the metadata is nil or the value
113−// for the given key cannot be cast to a string.
114−func (t *Token) MetadataString(k string) string {
115− if t.Metadata == nil {
116− return ""
117− }
118− s, ok := t.Metadata[k].(string)
119− if !ok {
120− return ""
121− }
122− return s
123−}
124−
125−func (t *Token) isValidWithEarlyExpiry(earlyExpiry time.Duration) bool {
126− if t.isEmpty() {
127− return false
128− }
129− if t.Expiry.IsZero() {
130− return true
131− }
132− return !t.Expiry.Round(0).Add(-earlyExpiry).Before(timeNow())
133−}
134−
135−func (t *Token) isEmpty() bool {
136− return t == nil || t.Value == ""
137−}
138−
139−// Credentials holds Google credentials, including
140−// [Application Default Credentials].
141−//
142−// [Application Default Credentials]: https://developers.google.com/accounts/docs/application-default-credentials
143−type Credentials struct {
144− json []byte
145− projectID CredentialsPropertyProvider
146− quotaProjectID CredentialsPropertyProvider
147− // universeDomain is the default service domain for a given Cloud universe.
148− universeDomain CredentialsPropertyProvider
149−
150− TokenProvider
151−}
152−
153−// JSON returns the bytes associated with the the file used to source
154−// credentials if one was used.
155−func (c *Credentials) JSON() []byte {
156− return c.json
157−}
158−
159−// ProjectID returns the associated project ID from the underlying file or
160−// environment.
161−func (c *Credentials) ProjectID(ctx context.Context) (string, error) {
162− if c.projectID == nil {
163− return internal.GetProjectID(c.json, ""), nil
164− }
165− v, err := c.projectID.GetProperty(ctx)
166− if err != nil {
167− return "", err
168− }
169− return internal.GetProjectID(c.json, v), nil
170−}
171−
172−// QuotaProjectID returns the associated quota project ID from the underlying
173−// file or environment.
174−func (c *Credentials) QuotaProjectID(ctx context.Context) (string, error) {
175− if c.quotaProjectID == nil {
176− return internal.GetQuotaProject(c.json, ""), nil
177− }
178− v, err := c.quotaProjectID.GetProperty(ctx)
179− if err != nil {
180− return "", err
181− }
182− return internal.GetQuotaProject(c.json, v), nil
183−}
184−
185−// UniverseDomain returns the default service domain for a given Cloud universe.
186−// The default value is "googleapis.com".
187−func (c *Credentials) UniverseDomain(ctx context.Context) (string, error) {
188− if c.universeDomain == nil {
189− return universeDomainDefault, nil
190− }
191− v, err := c.universeDomain.GetProperty(ctx)
192− if err != nil {
193− return "", err
194− }
195− if v == "" {
196− return universeDomainDefault, nil
197− }
198− return v, err
199−}
200−
201−// CredentialsPropertyProvider provides an implementation to fetch a property
202−// value for [Credentials].
203−type CredentialsPropertyProvider interface {
204− GetProperty(context.Context) (string, error)
205−}
206−
207−// CredentialsPropertyFunc is a type adapter to allow the use of ordinary
208−// functions as a [CredentialsPropertyProvider].
209−type CredentialsPropertyFunc func(context.Context) (string, error)
210−
211−// GetProperty loads the properly value provided the given context.
212−func (p CredentialsPropertyFunc) GetProperty(ctx context.Context) (string, error) {
213− return p(ctx)
214−}
215−
216−// CredentialsOptions are used to configure [Credentials].
217−type CredentialsOptions struct {
218− // TokenProvider is a means of sourcing a token for the credentials. Required.
219− TokenProvider TokenProvider
220− // JSON is the raw contents of the credentials file if sourced from a file.
221− JSON []byte
222− // ProjectIDProvider resolves the project ID associated with the
223− // credentials.
224− ProjectIDProvider CredentialsPropertyProvider
225− // QuotaProjectIDProvider resolves the quota project ID associated with the
226− // credentials.
227− QuotaProjectIDProvider CredentialsPropertyProvider
228− // UniverseDomainProvider resolves the universe domain with the credentials.
229− UniverseDomainProvider CredentialsPropertyProvider
230−}
231−
232−// NewCredentials returns new [Credentials] from the provided options.
233−func NewCredentials(opts *CredentialsOptions) *Credentials {
234− creds := &Credentials{
235− TokenProvider: opts.TokenProvider,
236− json: opts.JSON,
237− projectID: opts.ProjectIDProvider,
238− quotaProjectID: opts.QuotaProjectIDProvider,
239− universeDomain: opts.UniverseDomainProvider,
240− }
241−
242− return creds
243−}
244−
245−// CachedTokenProviderOptions provides options for configuring a cached
246−// [TokenProvider].
247−type CachedTokenProviderOptions struct {
248− // DisableAutoRefresh makes the TokenProvider always return the same token,
249− // even if it is expired. The default is false. Optional.
250− DisableAutoRefresh bool
251− // ExpireEarly configures the amount of time before a token expires, that it
252− // should be refreshed. If unset, the default value is 3 minutes and 45
253− // seconds. Optional.
254− ExpireEarly time.Duration
255− // DisableAsyncRefresh configures a synchronous workflow that refreshes
256− // tokens in a blocking manner. The default is false. Optional.
257− DisableAsyncRefresh bool
258−}
259−
260−func (ctpo *CachedTokenProviderOptions) autoRefresh() bool {
261− if ctpo == nil {
262− return true
263− }
264− return !ctpo.DisableAutoRefresh
265−}
266−
267−func (ctpo *CachedTokenProviderOptions) expireEarly() time.Duration {
268− if ctpo == nil || ctpo.ExpireEarly == 0 {
269− return defaultExpiryDelta
270− }
271− return ctpo.ExpireEarly
272−}
273−
274−func (ctpo *CachedTokenProviderOptions) blockingRefresh() bool {
275− if ctpo == nil {
276− return false
277− }
278− return ctpo.DisableAsyncRefresh
279−}
280−
281−// NewCachedTokenProvider wraps a [TokenProvider] to cache the tokens returned
282−// by the underlying provider. By default it will refresh tokens asynchronously
283−// a few minutes before they expire.
284−func NewCachedTokenProvider(tp TokenProvider, opts *CachedTokenProviderOptions) TokenProvider {
285− if ctp, ok := tp.(*cachedTokenProvider); ok {
286− return ctp
287− }
288− return &cachedTokenProvider{
289− tp: tp,
290− autoRefresh: opts.autoRefresh(),
291− expireEarly: opts.expireEarly(),
292− blockingRefresh: opts.blockingRefresh(),
293− }
294−}
295−
296−type cachedTokenProvider struct {
297− tp TokenProvider
298− autoRefresh bool
299− expireEarly time.Duration
300− blockingRefresh bool
301−
302− mu sync.Mutex
303− cachedToken *Token
304− // isRefreshRunning ensures that the non-blocking refresh will only be
305− // attempted once, even if multiple callers enter the Token method.
306− isRefreshRunning bool
307− // isRefreshErr ensures that the non-blocking refresh will only be attempted
308− // once per refresh window if an error is encountered.
309− isRefreshErr bool
310−}
311−
312−func (c *cachedTokenProvider) Token(ctx context.Context) (*Token, error) {
313− if c.blockingRefresh {
314− return c.tokenBlocking(ctx)
315− }
316− return c.tokenNonBlocking(ctx)
317−}
318−
319−func (c *cachedTokenProvider) tokenNonBlocking(ctx context.Context) (*Token, error) {
320− switch c.tokenState() {
321− case fresh:
322− c.mu.Lock()
323− defer c.mu.Unlock()
324− return c.cachedToken, nil
325− case stale:
326− // Call tokenAsync with a new Context because the user-provided context
327− // may have a short timeout incompatible with async token refresh.
328− c.tokenAsync(context.Background())
329− // Return the stale token immediately to not block customer requests to Cloud services.
330− c.mu.Lock()
331− defer c.mu.Unlock()
332− return c.cachedToken, nil
333− default: // invalid
334− return c.tokenBlocking(ctx)
335− }
336−}
337−
338−// tokenState reports the token's validity.
339−func (c *cachedTokenProvider) tokenState() tokenState {
340− c.mu.Lock()
341− defer c.mu.Unlock()
342− t := c.cachedToken
343− now := timeNow()
344− if t == nil || t.Value == "" {
345− return invalid
346− } else if t.Expiry.IsZero() {
347− return fresh
348− } else if now.After(t.Expiry.Round(0)) {
349− return invalid
350− } else if now.After(t.Expiry.Round(0).Add(-c.expireEarly)) {
351− return stale
352− }
353− return fresh
354−}
355−
356−// tokenAsync uses a bool to ensure that only one non-blocking token refresh
357−// happens at a time, even if multiple callers have entered this function
358−// concurrently. This avoids creating an arbitrary number of concurrent
359−// goroutines. Retries should be attempted and managed within the Token method.
360−// If the refresh attempt fails, no further attempts are made until the refresh
361−// window expires and the token enters the invalid state, at which point the
362−// blocking call to Token should likely return the same error on the main goroutine.
363−func (c *cachedTokenProvider) tokenAsync(ctx context.Context) {
364− fn := func() {
365− c.mu.Lock()
366− c.isRefreshRunning = true
367− c.mu.Unlock()
368− t, err := c.tp.Token(ctx)
369− c.mu.Lock()
370− defer c.mu.Unlock()
371− c.isRefreshRunning = false
372− if err != nil {
373− // Discard errors from the non-blocking refresh, but prevent further
374− // attempts.
375− c.isRefreshErr = true
376− return
377− }
378− c.cachedToken = t
379− }
380− c.mu.Lock()
381− defer c.mu.Unlock()
382− if !c.isRefreshRunning && !c.isRefreshErr {
383− go fn()
384− }
385−}
386−
387−func (c *cachedTokenProvider) tokenBlocking(ctx context.Context) (*Token, error) {
388− c.mu.Lock()
389− defer c.mu.Unlock()
390− c.isRefreshErr = false
391− if c.cachedToken.IsValid() || (!c.autoRefresh && !c.cachedToken.isEmpty()) {
392− return c.cachedToken, nil
393− }
394− t, err := c.tp.Token(ctx)
395− if err != nil {
396− return nil, err
397− }
398− c.cachedToken = t
399− return t, nil
400−}
401−
402−// Error is a error associated with retrieving a [Token]. It can hold useful
403−// additional details for debugging.
404−type Error struct {
405− // Response is the HTTP response associated with error. The body will always
406− // be already closed and consumed.
407− Response *http.Response
408− // Body is the HTTP response body.
409− Body []byte
410− // Err is the underlying wrapped error.
411− Err error
412−
413− // code returned in the token response
414− code string
415− // description returned in the token response
416− description string
417− // uri returned in the token response
418− uri string
419−}
420−
421−func (e *Error) Error() string {
422− if e.code != "" {
423− s := fmt.Sprintf("auth: %q", e.code)
424− if e.description != "" {
425− s += fmt.Sprintf(" %q", e.description)
426− }
427− if e.uri != "" {
428− s += fmt.Sprintf(" %q", e.uri)
429− }
430− return s
431− }
432− return fmt.Sprintf("auth: cannot fetch token: %v\nResponse: %s", e.Response.StatusCode, e.Body)
433−}
434−
435−// Temporary returns true if the error is considered temporary and may be able
436−// to be retried.
437−func (e *Error) Temporary() bool {
438− if e.Response == nil {
439− return false
440− }
441− sc := e.Response.StatusCode
442− return sc == http.StatusInternalServerError || sc == http.StatusServiceUnavailable || sc == http.StatusRequestTimeout || sc == http.StatusTooManyRequests
443−}
444−
445−func (e *Error) Unwrap() error {
446− return e.Err
447−}
448−
449−// Style describes how the token endpoint wants to receive the ClientID and
450−// ClientSecret.
451−type Style int
452−
453−const (
454− // StyleUnknown means the value has not been initiated. Sending this in
455− // a request will cause the token exchange to fail.
456− StyleUnknown Style = iota
457− // StyleInParams sends client info in the body of a POST request.
458− StyleInParams
459− // StyleInHeader sends client info using Basic Authorization header.
460− StyleInHeader
461−)
462−
463−// Options2LO is the configuration settings for doing a 2-legged JWT OAuth2 flow.
464−type Options2LO struct {
465− // Email is the OAuth2 client ID. This value is set as the "iss" in the
466− // JWT.
467− Email string
468− // PrivateKey contains the contents of an RSA private key or the
469− // contents of a PEM file that contains a private key. It is used to sign
470− // the JWT created.
471− PrivateKey []byte
472− // TokenURL is th URL the JWT is sent to. Required.
473− TokenURL string
474− // PrivateKeyID is the ID of the key used to sign the JWT. It is used as the
475− // "kid" in the JWT header. Optional.
476− PrivateKeyID string
477− // Subject is the used for to impersonate a user. It is used as the "sub" in
478− // the JWT.m Optional.
479− Subject string
480− // Scopes specifies requested permissions for the token. Optional.
481− Scopes []string
482− // Expires specifies the lifetime of the token. Optional.
483− Expires time.Duration
484− // Audience specifies the "aud" in the JWT. Optional.
485− Audience string
486− // PrivateClaims allows specifying any custom claims for the JWT. Optional.
487− PrivateClaims map[string]interface{}
488−
489− // Client is the client to be used to make the underlying token requests.
490− // Optional.
491− Client *http.Client
492− // UseIDToken requests that the token returned be an ID token if one is
493− // returned from the server. Optional.
494− UseIDToken bool
495− // Logger is used for debug logging. If provided, logging will be enabled
496− // at the loggers configured level. By default logging is disabled unless
497− // enabled by setting GOOGLE_SDK_GO_LOGGING_LEVEL in which case a default
498− // logger will be used. Optional.
499− Logger *slog.Logger
500−}
501−
502−func (o *Options2LO) client() *http.Client {
503− if o.Client != nil {
504− return o.Client
505− }
506− return internal.DefaultClient()
507−}
508−
509−func (o *Options2LO) validate() error {
510− if o == nil {
511− return errors.New("auth: options must be provided")
512− }
513− if o.Email == "" {
514− return errors.New("auth: email must be provided")
515− }
516− if len(o.PrivateKey) == 0 {
517− return errors.New("auth: private key must be provided")
518− }
519− if o.TokenURL == "" {
520− return errors.New("auth: token URL must be provided")
521− }
522− return nil
523−}
524−
525−// New2LOTokenProvider returns a [TokenProvider] from the provided options.
526−func New2LOTokenProvider(opts *Options2LO) (TokenProvider, error) {
527− if err := opts.validate(); err != nil {
528− return nil, err
529− }
530− return tokenProvider2LO{opts: opts, Client: opts.client(), logger: internallog.New(opts.Logger)}, nil
531−}
532−
533−type tokenProvider2LO struct {
534− opts *Options2LO
535− Client *http.Client
536− logger *slog.Logger
537−}
538−
539−func (tp tokenProvider2LO) Token(ctx context.Context) (*Token, error) {
540− pk, err := internal.ParseKey(tp.opts.PrivateKey)
541− if err != nil {
542− return nil, err
543− }
544− claimSet := &jwt.Claims{
545− Iss: tp.opts.Email,
546− Scope: strings.Join(tp.opts.Scopes, " "),
547− Aud: tp.opts.TokenURL,
548− AdditionalClaims: tp.opts.PrivateClaims,
549− Sub: tp.opts.Subject,
550− }
551− if t := tp.opts.Expires; t > 0 {
552− claimSet.Exp = time.Now().Add(t).Unix()
553− }
554− if aud := tp.opts.Audience; aud != "" {
555− claimSet.Aud = aud
556− }
557− h := *defaultHeader
558− h.KeyID = tp.opts.PrivateKeyID
559− payload, err := jwt.EncodeJWS(&h, claimSet, pk)
560− if err != nil {
561− return nil, err
562− }
563− v := url.Values{}
564− v.Set("grant_type", defaultGrantType)
565− v.Set("assertion", payload)
566− req, err := http.NewRequestWithContext(ctx, "POST", tp.opts.TokenURL, strings.NewReader(v.Encode()))
567− if err != nil {
568− return nil, err
569− }
570− req.Header.Set("Content-Type", "application/x-www-form-urlencoded")
571− tp.logger.DebugContext(ctx, "2LO token request", "request", internallog.HTTPRequest(req, []byte(v.Encode())))
572− resp, body, err := internal.DoRequest(tp.Client, req)
573− if err != nil {
574− return nil, fmt.Errorf("auth: cannot fetch token: %w", err)
575− }
576− tp.logger.DebugContext(ctx, "2LO token response", "response", internallog.HTTPResponse(resp, body))
577− if c := resp.StatusCode; c < http.StatusOK || c >= http.StatusMultipleChoices {
578− return nil, &Error{
579− Response: resp,
580− Body: body,
581− }
582− }
583− // tokenRes is the JSON response body.
584− var tokenRes struct {
585− AccessToken string `json:"access_token"`
586− TokenType string `json:"token_type"`
587− IDToken string `json:"id_token"`
588− ExpiresIn int64 `json:"expires_in"`
589− }
590− if err := json.Unmarshal(body, &tokenRes); err != nil {
591− return nil, fmt.Errorf("auth: cannot fetch token: %w", err)
592− }
593− token := &Token{
594− Value: tokenRes.AccessToken,
595− Type: tokenRes.TokenType,
596− }
597− token.Metadata = make(map[string]interface{})
598− json.Unmarshal(body, &token.Metadata) // no error checks for optional fields
599−
600− if secs := tokenRes.ExpiresIn; secs > 0 {
601− token.Expiry = time.Now().Add(time.Duration(secs) * time.Second)
602− }
603− if v := tokenRes.IDToken; v != "" {
604− // decode returned id token to get expiry
605− claimSet, err := jwt.DecodeJWS(v)
606− if err != nil {
607− return nil, fmt.Errorf("auth: error decoding JWT token: %w", err)
608− }
609− token.Expiry = time.Unix(claimSet.Exp, 0)
610− }
611− if tp.opts.UseIDToken {
612− if tokenRes.IDToken == "" {
613− return nil, fmt.Errorf("auth: response doesn't have JWT token")
614− }
615− token.Value = tokenRes.IDToken
616− }
617− return token, nil
618−}
vendor/cloud.google.com/go/auth/credentials/compute.godeleted−90
@@ -1,90 +0,0 @@
1−// Copyright 2023 Google LLC
2−//
3−// Licensed under the Apache License, Version 2.0 (the "License");
4−// you may not use this file except in compliance with the License.
5−// You may obtain a copy of the License at
6−//
7−// http://www.apache.org/licenses/LICENSE-2.0
8−//
9−// Unless required by applicable law or agreed to in writing, software
10−// distributed under the License is distributed on an "AS IS" BASIS,
11−// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12−// See the License for the specific language governing permissions and
13−// limitations under the License.
14−
15−package credentials
16−
17−import (
18− "context"
19− "encoding/json"
20− "errors"
21− "fmt"
22− "net/url"
23− "strings"
24− "time"
25−
26− "cloud.google.com/go/auth"
27− "cloud.google.com/go/compute/metadata"
28−)
29−
30−var (
31− computeTokenMetadata = map[string]interface{}{
32− "auth.google.tokenSource": "compute-metadata",
33− "auth.google.serviceAccount": "default",
34− }
35− computeTokenURI = "instance/service-accounts/default/token"
36−)
37−
38−// computeTokenProvider creates a [cloud.google.com/go/auth.TokenProvider] that
39−// uses the metadata service to retrieve tokens.
40−func computeTokenProvider(opts *DetectOptions, client *metadata.Client) auth.TokenProvider {
41− return auth.NewCachedTokenProvider(&computeProvider{
42− scopes: opts.Scopes,
43− client: client,
44− }, &auth.CachedTokenProviderOptions{
45− ExpireEarly: opts.EarlyTokenRefresh,
46− DisableAsyncRefresh: opts.DisableAsyncRefresh,
47− })
48−}
49−
50−// computeProvider fetches tokens from the google cloud metadata service.
51−type computeProvider struct {
52− scopes []string
53− client *metadata.Client
54−}
55−
56−type metadataTokenResp struct {
57− AccessToken string `json:"access_token"`
58− ExpiresInSec int `json:"expires_in"`
59− TokenType string `json:"token_type"`
60−}
61−
62−func (cs *computeProvider) Token(ctx context.Context) (*auth.Token, error) {
63− tokenURI, err := url.Parse(computeTokenURI)
64− if err != nil {
65− return nil, err
66− }
67− if len(cs.scopes) > 0 {
68− v := url.Values{}
69− v.Set("scopes", strings.Join(cs.scopes, ","))
70− tokenURI.RawQuery = v.Encode()
71− }
72− tokenJSON, err := cs.client.GetWithContext(ctx, tokenURI.String())
73− if err != nil {
74− return nil, fmt.Errorf("credentials: cannot fetch token: %w", err)
75− }
76− var res metadataTokenResp
77− if err := json.NewDecoder(strings.NewReader(tokenJSON)).Decode(&res); err != nil {
78− return nil, fmt.Errorf("credentials: invalid token JSON from metadata: %w", err)
79− }
80− if res.ExpiresInSec == 0 || res.AccessToken == "" {
81− return nil, errors.New("credentials: incomplete token received from metadata")
82− }
83− return &auth.Token{
84− Value: res.AccessToken,
85− Type: res.TokenType,
86− Expiry: time.Now().Add(time.Duration(res.ExpiresInSec) * time.Second),
87− Metadata: computeTokenMetadata,
88− }, nil
89−
90−}
vendor/cloud.google.com/go/auth/credentials/detect.godeleted−279
@@ -1,279 +0,0 @@
1−// Copyright 2023 Google LLC
2−//
3−// Licensed under the Apache License, Version 2.0 (the "License");
4−// you may not use this file except in compliance with the License.
5−// You may obtain a copy of the License at
6−//
7−// http://www.apache.org/licenses/LICENSE-2.0
8−//
9−// Unless required by applicable law or agreed to in writing, software
10−// distributed under the License is distributed on an "AS IS" BASIS,
11−// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12−// See the License for the specific language governing permissions and
13−// limitations under the License.
14−
15−package credentials
16−
17−import (
18− "context"
19− "encoding/json"
20− "errors"
21− "fmt"
22− "log/slog"
23− "net/http"
24− "os"
25− "time"
26−
27− "cloud.google.com/go/auth"
28− "cloud.google.com/go/auth/internal"
29− "cloud.google.com/go/auth/internal/credsfile"
30− "cloud.google.com/go/compute/metadata"
31− "github.com/googleapis/gax-go/v2/internallog"
32−)
33−
34−const (
35− // jwtTokenURL is Google's OAuth 2.0 token URL to use with the JWT(2LO) flow.
36− jwtTokenURL = "https://oauth2.googleapis.com/token"
37−
38− // Google's OAuth 2.0 default endpoints.
39− googleAuthURL = "https://accounts.google.com/o/oauth2/auth"
40− googleTokenURL = "https://oauth2.googleapis.com/token"
41−
42− // GoogleMTLSTokenURL is Google's default OAuth2.0 mTLS endpoint.
43− GoogleMTLSTokenURL = "https://oauth2.mtls.googleapis.com/token"
44−
45− // Help on default credentials
46− adcSetupURL = "https://cloud.google.com/docs/authentication/external/set-up-adc"
47−)
48−
49−var (
50− // for testing
51− allowOnGCECheck = true
52−)
53−
54−// OnGCE reports whether this process is running in Google Cloud.
55−func OnGCE() bool {
56− // TODO(codyoss): once all libs use this auth lib move metadata check here
57− return allowOnGCECheck && metadata.OnGCE()
58−}
59−
60−// DetectDefault searches for "Application Default Credentials" and returns
61−// a credential based on the [DetectOptions] provided.
62−//
63−// It looks for credentials in the following places, preferring the first
64−// location found:
65−//
66−// - A JSON file whose path is specified by the GOOGLE_APPLICATION_CREDENTIALS
67−// environment variable. For workload identity federation, refer to
68−// https://cloud.google.com/iam/docs/how-to#using-workload-identity-federation
69−// on how to generate the JSON configuration file for on-prem/non-Google
70−// cloud platforms.
71−// - A JSON file in a location known to the gcloud command-line tool. On
72−// Windows, this is %APPDATA%/gcloud/application_default_credentials.json. On
73−// other systems, $HOME/.config/gcloud/application_default_credentials.json.
74−// - On Google Compute Engine, Google App Engine standard second generation
75−// runtimes, and Google App Engine flexible environment, it fetches
76−// credentials from the metadata server.
77−func DetectDefault(opts *DetectOptions) (*auth.Credentials, error) {
78− if err := opts.validate(); err != nil {
79− return nil, err
80− }
81− if len(opts.CredentialsJSON) > 0 {
82− return readCredentialsFileJSON(opts.CredentialsJSON, opts)
83− }
84− if opts.CredentialsFile != "" {
85− return readCredentialsFile(opts.CredentialsFile, opts)
86− }
87− if filename := os.Getenv(credsfile.GoogleAppCredsEnvVar); filename != "" {
88− creds, err := readCredentialsFile(filename, opts)
89− if err != nil {
90− return nil, err
91− }
92− return creds, nil
93− }
94−
95− fileName := credsfile.GetWellKnownFileName()
96− if b, err := os.ReadFile(fileName); err == nil {
97− return readCredentialsFileJSON(b, opts)
98− }
99−
100− if OnGCE() {
101− metadataClient := metadata.NewWithOptions(&metadata.Options{
102− Logger: opts.logger(),
103− })
104− return auth.NewCredentials(&auth.CredentialsOptions{
105− TokenProvider: computeTokenProvider(opts, metadataClient),
106− ProjectIDProvider: auth.CredentialsPropertyFunc(func(ctx context.Context) (string, error) {
107− return metadataClient.ProjectIDWithContext(ctx)
108− }),
109− UniverseDomainProvider: &internal.ComputeUniverseDomainProvider{
110− MetadataClient: metadataClient,
111− },
112− }), nil
113− }
114−
115− return nil, fmt.Errorf("credentials: could not find default credentials. See %v for more information", adcSetupURL)
116−}
117−
118−// DetectOptions provides configuration for [DetectDefault].
119−type DetectOptions struct {
120− // Scopes that credentials tokens should have. Example:
121− // https://www.googleapis.com/auth/cloud-platform. Required if Audience is
122− // not provided.
123− Scopes []string
124− // Audience that credentials tokens should have. Only applicable for 2LO
125− // flows with service accounts. If specified, scopes should not be provided.
126− Audience string
127− // Subject is the user email used for [domain wide delegation](https://developers.google.com/identity/protocols/oauth2/service-account#delegatingauthority).
128− // Optional.
129− Subject string
130− // EarlyTokenRefresh configures how early before a token expires that it
131− // should be refreshed. Once the token’s time until expiration has entered
132− // this refresh window the token is considered valid but stale. If unset,
133− // the default value is 3 minutes and 45 seconds. Optional.
134− EarlyTokenRefresh time.Duration
135− // DisableAsyncRefresh configures a synchronous workflow that refreshes
136− // stale tokens while blocking. The default is false. Optional.
137− DisableAsyncRefresh bool
138− // AuthHandlerOptions configures an authorization handler and other options
139− // for 3LO flows. It is required, and only used, for client credential
140− // flows.
141− AuthHandlerOptions *auth.AuthorizationHandlerOptions
142− // TokenURL allows to set the token endpoint for user credential flows. If
143− // unset the default value is: https://oauth2.googleapis.com/token.
144− // Optional.
145− TokenURL string
146− // STSAudience is the audience sent to when retrieving an STS token.
147− // Currently this only used for GDCH auth flow, for which it is required.
148− STSAudience string
149− // CredentialsFile overrides detection logic and sources a credential file
150− // from the provided filepath. If provided, CredentialsJSON must not be.
151− // Optional.
152− CredentialsFile string
153− // CredentialsJSON overrides detection logic and uses the JSON bytes as the
154− // source for the credential. If provided, CredentialsFile must not be.
155− // Optional.
156− CredentialsJSON []byte
157− // UseSelfSignedJWT directs service account based credentials to create a
158− // self-signed JWT with the private key found in the file, skipping any
159− // network requests that would normally be made. Optional.
160− UseSelfSignedJWT bool
161− // Client configures the underlying client used to make network requests
162− // when fetching tokens. Optional.
163− Client *http.Client
164− // UniverseDomain is the default service domain for a given Cloud universe.
165− // The default value is "googleapis.com". This option is ignored for
166− // authentication flows that do not support universe domain. Optional.
167− UniverseDomain string
168− // Logger is used for debug logging. If provided, logging will be enabled
169− // at the loggers configured level. By default logging is disabled unless
170− // enabled by setting GOOGLE_SDK_GO_LOGGING_LEVEL in which case a default
171− // logger will be used. Optional.
172− Logger *slog.Logger
173−}
174−
175−func (o *DetectOptions) validate() error {
176− if o == nil {
177− return errors.New("credentials: options must be provided")
178− }
179− if len(o.Scopes) > 0 && o.Audience != "" {
180− return errors.New("credentials: both scopes and audience were provided")
181− }
182− if len(o.CredentialsJSON) > 0 && o.CredentialsFile != "" {
183− return errors.New("credentials: both credentials file and JSON were provided")
184− }
185− return nil
186−}
187−
188−func (o *DetectOptions) tokenURL() string {
189− if o.TokenURL != "" {
190− return o.TokenURL
191− }
192− return googleTokenURL
193−}
194−
195−func (o *DetectOptions) scopes() []string {
196− scopes := make([]string, len(o.Scopes))
197− copy(scopes, o.Scopes)
198− return scopes
199−}
200−
201−func (o *DetectOptions) client() *http.Client {
202− if o.Client != nil {
203− return o.Client
204− }
205− return internal.DefaultClient()
206−}
207−
208−func (o *DetectOptions) logger() *slog.Logger {
209− return internallog.New(o.Logger)
210−}
211−
212−func readCredentialsFile(filename string, opts *DetectOptions) (*auth.Credentials, error) {
213− b, err := os.ReadFile(filename)
214− if err != nil {
215− return nil, err
216− }
217− return readCredentialsFileJSON(b, opts)
218−}
219−
220−func readCredentialsFileJSON(b []byte, opts *DetectOptions) (*auth.Credentials, error) {
221− // attempt to parse jsonData as a Google Developers Console client_credentials.json.
222− config := clientCredConfigFromJSON(b, opts)
223− if config != nil {
224− if config.AuthHandlerOpts == nil {
225− return nil, errors.New("credentials: auth handler must be specified for this credential filetype")
226− }
227− tp, err := auth.New3LOTokenProvider(config)
228− if err != nil {
229− return nil, err
230− }
231− return auth.NewCredentials(&auth.CredentialsOptions{
232− TokenProvider: tp,
233− JSON: b,
234− }), nil
235− }
236− return fileCredentials(b, opts)
237−}
238−
239−func clientCredConfigFromJSON(b []byte, opts *DetectOptions) *auth.Options3LO {
240− var creds credsfile.ClientCredentialsFile
241− var c *credsfile.Config3LO
242− if err := json.Unmarshal(b, &creds); err != nil {
243− return nil
244− }
245− switch {
246− case creds.Web != nil:
247− c = creds.Web
248− case creds.Installed != nil:
249− c = creds.Installed
250− default:
251− return nil
252− }
253− if len(c.RedirectURIs) < 1 {
254− return nil
255− }
256− var handleOpts *auth.AuthorizationHandlerOptions
257− if opts.AuthHandlerOptions != nil {
258− handleOpts = &auth.AuthorizationHandlerOptions{
259− Handler: opts.AuthHandlerOptions.Handler,
260− State: opts.AuthHandlerOptions.State,
261− PKCEOpts: opts.AuthHandlerOptions.PKCEOpts,
262− }
263− }
264− return &auth.Options3LO{
265− ClientID: c.ClientID,
266− ClientSecret: c.ClientSecret,
267− RedirectURL: c.RedirectURIs[0],
268− Scopes: opts.scopes(),
269− AuthURL: c.AuthURI,
270− TokenURL: c.TokenURI,
271− Client: opts.client(),
272− Logger: opts.logger(),
273− EarlyTokenExpiry: opts.EarlyTokenRefresh,
274− AuthHandlerOpts: handleOpts,
275− // TODO(codyoss): refactor this out. We need to add in auto-detection
276− // for this use case.
277− AuthStyle: auth.StyleInParams,
278− }
279−}
vendor/cloud.google.com/go/auth/credentials/doc.godeleted−45
@@ -1,45 +0,0 @@
1−// Copyright 2023 Google LLC
2−//
3−// Licensed under the Apache License, Version 2.0 (the "License");
4−// you may not use this file except in compliance with the License.
5−// You may obtain a copy of the License at
6−//
7−// http://www.apache.org/licenses/LICENSE-2.0
8−//
9−// Unless required by applicable law or agreed to in writing, software
10−// distributed under the License is distributed on an "AS IS" BASIS,
11−// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12−// See the License for the specific language governing permissions and
13−// limitations under the License.
14−
15−// Package credentials provides support for making OAuth2 authorized and
16−// authenticated HTTP requests to Google APIs. It supports the Web server flow,
17−// client-side credentials, service accounts, Google Compute Engine service
18−// accounts, Google App Engine service accounts and workload identity federation
19−// from non-Google cloud platforms.
20−//
21−// A brief overview of the package follows. For more information, please read
22−// https://developers.google.com/accounts/docs/OAuth2
23−// and
24−// https://developers.google.com/accounts/docs/application-default-credentials.
25−// For more information on using workload identity federation, refer to
26−// https://cloud.google.com/iam/docs/how-to#using-workload-identity-federation.
27−//
28−// # Credentials
29−//
30−// The [cloud.google.com/go/auth.Credentials] type represents Google
31−// credentials, including Application Default Credentials.
32−//
33−// Use [DetectDefault] to obtain Application Default Credentials.
34−//
35−// Application Default Credentials support workload identity federation to
36−// access Google Cloud resources from non-Google Cloud platforms including Amazon
37−// Web Services (AWS), Microsoft Azure or any identity provider that supports
38−// OpenID Connect (OIDC). Workload identity federation is recommended for
39−// non-Google Cloud environments as it avoids the need to download, manage, and
40−// store service account private keys locally.
41−//
42−// # Workforce Identity Federation
43−//
44−// For more information on this feature see [cloud.google.com/go/auth/credentials/externalaccount].
45−package credentials
vendor/cloud.google.com/go/auth/credentials/filetypes.godeleted−231
@@ -1,231 +0,0 @@
1−// Copyright 2023 Google LLC
2−//
3−// Licensed under the Apache License, Version 2.0 (the "License");
4−// you may not use this file except in compliance with the License.
5−// You may obtain a copy of the License at
6−//
7−// http://www.apache.org/licenses/LICENSE-2.0
8−//
9−// Unless required by applicable law or agreed to in writing, software
10−// distributed under the License is distributed on an "AS IS" BASIS,
11−// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12−// See the License for the specific language governing permissions and
13−// limitations under the License.
14−
15−package credentials
16−
17−import (
18− "errors"
19− "fmt"
20−
21− "cloud.google.com/go/auth"
22− "cloud.google.com/go/auth/credentials/internal/externalaccount"
23− "cloud.google.com/go/auth/credentials/internal/externalaccountuser"
24− "cloud.google.com/go/auth/credentials/internal/gdch"
25− "cloud.google.com/go/auth/credentials/internal/impersonate"
26− internalauth "cloud.google.com/go/auth/internal"
27− "cloud.google.com/go/auth/internal/credsfile"
28−)
29−
30−func fileCredentials(b []byte, opts *DetectOptions) (*auth.Credentials, error) {
31− fileType, err := credsfile.ParseFileType(b)
32− if err != nil {
33− return nil, err
34− }
35−
36− var projectID, universeDomain string
37− var tp auth.TokenProvider
38− switch fileType {
39− case credsfile.ServiceAccountKey:
40− f, err := credsfile.ParseServiceAccount(b)
41− if err != nil {
42− return nil, err
43− }
44− tp, err = handleServiceAccount(f, opts)
45− if err != nil {
46− return nil, err
47− }
48− projectID = f.ProjectID
49− universeDomain = resolveUniverseDomain(opts.UniverseDomain, f.UniverseDomain)
50− case credsfile.UserCredentialsKey:
51− f, err := credsfile.ParseUserCredentials(b)
52− if err != nil {
53− return nil, err
54− }
55− tp, err = handleUserCredential(f, opts)
56− if err != nil {
57− return nil, err
58− }
59− universeDomain = f.UniverseDomain
60− case credsfile.ExternalAccountKey:
61− f, err := credsfile.ParseExternalAccount(b)
62− if err != nil {
63− return nil, err
64− }
65− tp, err = handleExternalAccount(f, opts)
66− if err != nil {
67− return nil, err
68− }
69− universeDomain = resolveUniverseDomain(opts.UniverseDomain, f.UniverseDomain)
70− case credsfile.ExternalAccountAuthorizedUserKey:
71− f, err := credsfile.ParseExternalAccountAuthorizedUser(b)
72− if err != nil {
73− return nil, err
74− }
75− tp, err = handleExternalAccountAuthorizedUser(f, opts)
76− if err != nil {
77− return nil, err
78− }
79− universeDomain = f.UniverseDomain
80− case credsfile.ImpersonatedServiceAccountKey:
81− f, err := credsfile.ParseImpersonatedServiceAccount(b)
82− if err != nil {
83− return nil, err
84− }
85− tp, err = handleImpersonatedServiceAccount(f, opts)
86− if err != nil {
87− return nil, err
88− }
89− universeDomain = resolveUniverseDomain(opts.UniverseDomain, f.UniverseDomain)
90− case credsfile.GDCHServiceAccountKey:
91− f, err := credsfile.ParseGDCHServiceAccount(b)
92− if err != nil {
93− return nil, err
94− }
95− tp, err = handleGDCHServiceAccount(f, opts)
96− if err != nil {
97− return nil, err
98− }
99− projectID = f.Project
100− universeDomain = f.UniverseDomain
101− default:
102− return nil, fmt.Errorf("credentials: unsupported filetype %q", fileType)
103− }
104− return auth.NewCredentials(&auth.CredentialsOptions{
105− TokenProvider: auth.NewCachedTokenProvider(tp, &auth.CachedTokenProviderOptions{
106− ExpireEarly: opts.EarlyTokenRefresh,
107− }),
108− JSON: b,
109− ProjectIDProvider: internalauth.StaticCredentialsProperty(projectID),
110− // TODO(codyoss): only set quota project here if there was a user override
111− UniverseDomainProvider: internalauth.StaticCredentialsProperty(universeDomain),
112− }), nil
113−}
114−
115−// resolveUniverseDomain returns optsUniverseDomain if non-empty, in order to
116−// support configuring universe-specific credentials in code. Auth flows
117−// unsupported for universe domain should not use this func, but should instead
118−// simply set the file universe domain on the credentials.
119−func resolveUniverseDomain(optsUniverseDomain, fileUniverseDomain string) string {
120− if optsUniverseDomain != "" {
121− return optsUniverseDomain
122− }
123− return fileUniverseDomain
124−}
125−
126−func handleServiceAccount(f *credsfile.ServiceAccountFile, opts *DetectOptions) (auth.TokenProvider, error) {
127− ud := resolveUniverseDomain(opts.UniverseDomain, f.UniverseDomain)
128− if opts.UseSelfSignedJWT {
129− return configureSelfSignedJWT(f, opts)
130− } else if ud != "" && ud != internalauth.DefaultUniverseDomain {
131− // For non-GDU universe domains, token exchange is impossible and services
132− // must support self-signed JWTs.
133− opts.UseSelfSignedJWT = true
134− return configureSelfSignedJWT(f, opts)
135− }
136− opts2LO := &auth.Options2LO{
137− Email: f.ClientEmail,
138− PrivateKey: []byte(f.PrivateKey),
139− PrivateKeyID: f.PrivateKeyID,
140− Scopes: opts.scopes(),
141− TokenURL: f.TokenURL,
142− Subject: opts.Subject,
143− Client: opts.client(),
144− Logger: opts.logger(),
145− }
146− if opts2LO.TokenURL == "" {
147− opts2LO.TokenURL = jwtTokenURL
148− }
149− return auth.New2LOTokenProvider(opts2LO)
150−}
151−
152−func handleUserCredential(f *credsfile.UserCredentialsFile, opts *DetectOptions) (auth.TokenProvider, error) {
153− opts3LO := &auth.Options3LO{
154− ClientID: f.ClientID,
155− ClientSecret: f.ClientSecret,
156− Scopes: opts.scopes(),
157− AuthURL: googleAuthURL,
158− TokenURL: opts.tokenURL(),
159− AuthStyle: auth.StyleInParams,
160− EarlyTokenExpiry: opts.EarlyTokenRefresh,
161− RefreshToken: f.RefreshToken,
162− Client: opts.client(),
163− Logger: opts.logger(),
164− }
165− return auth.New3LOTokenProvider(opts3LO)
166−}
167−
168−func handleExternalAccount(f *credsfile.ExternalAccountFile, opts *DetectOptions) (auth.TokenProvider, error) {
169− externalOpts := &externalaccount.Options{
170− Audience: f.Audience,
171− SubjectTokenType: f.SubjectTokenType,
172− TokenURL: f.TokenURL,
173− TokenInfoURL: f.TokenInfoURL,
174− ServiceAccountImpersonationURL: f.ServiceAccountImpersonationURL,
175− ClientSecret: f.ClientSecret,
176− ClientID: f.ClientID,
177− CredentialSource: f.CredentialSource,
178− QuotaProjectID: f.QuotaProjectID,
179− Scopes: opts.scopes(),
180− WorkforcePoolUserProject: f.WorkforcePoolUserProject,
181− Client: opts.client(),
182− Logger: opts.logger(),
183− IsDefaultClient: opts.Client == nil,
184− }
185− if f.ServiceAccountImpersonation != nil {
186− externalOpts.ServiceAccountImpersonationLifetimeSeconds = f.ServiceAccountImpersonation.TokenLifetimeSeconds
187− }
188− return externalaccount.NewTokenProvider(externalOpts)
189−}
190−
191−func handleExternalAccountAuthorizedUser(f *credsfile.ExternalAccountAuthorizedUserFile, opts *DetectOptions) (auth.TokenProvider, error) {
192− externalOpts := &externalaccountuser.Options{
193− Audience: f.Audience,
194− RefreshToken: f.RefreshToken,
195− TokenURL: f.TokenURL,
196− TokenInfoURL: f.TokenInfoURL,
197− ClientID: f.ClientID,
198− ClientSecret: f.ClientSecret,
199− Scopes: opts.scopes(),
200− Client: opts.client(),
201− Logger: opts.logger(),
202− }
203− return externalaccountuser.NewTokenProvider(externalOpts)
204−}
205−
206−func handleImpersonatedServiceAccount(f *credsfile.ImpersonatedServiceAccountFile, opts *DetectOptions) (auth.TokenProvider, error) {
207− if f.ServiceAccountImpersonationURL == "" || f.CredSource == nil {
208− return nil, errors.New("missing 'source_credentials' field or 'service_account_impersonation_url' in credentials")
209− }
210−
211− tp, err := fileCredentials(f.CredSource, opts)
212− if err != nil {
213− return nil, err
214− }
215− return impersonate.NewTokenProvider(&impersonate.Options{
216− URL: f.ServiceAccountImpersonationURL,
217− Scopes: opts.scopes(),
218− Tp: tp,
219− Delegates: f.Delegates,
220− Client: opts.client(),
221− Logger: opts.logger(),
222− })
223−}
224−
225−func handleGDCHServiceAccount(f *credsfile.GDCHServiceAccountFile, opts *DetectOptions) (auth.TokenProvider, error) {
226− return gdch.NewTokenProvider(f, &gdch.Options{
227− STSAudience: opts.STSAudience,
228− Client: opts.client(),
229− Logger: opts.logger(),
230− })
231−}
vendor/cloud.google.com/go/auth/credentials/internal/externalaccount/aws_provider.godeleted−531
@@ -1,531 +0,0 @@
1−// Copyright 2023 Google LLC
2−//
3−// Licensed under the Apache License, Version 2.0 (the "License");
4−// you may not use this file except in compliance with the License.
5−// You may obtain a copy of the License at
6−//
7−// http://www.apache.org/licenses/LICENSE-2.0
8−//
9−// Unless required by applicable law or agreed to in writing, software
10−// distributed under the License is distributed on an "AS IS" BASIS,
11−// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12−// See the License for the specific language governing permissions and
13−// limitations under the License.
14−
15−package externalaccount
16−
17−import (
18− "bytes"
19− "context"
20− "crypto/hmac"
21− "crypto/sha256"
22− "encoding/hex"
23− "encoding/json"
24− "errors"
25− "fmt"
26− "log/slog"
27− "net/http"
28− "net/url"
29− "os"
30− "path"
31− "sort"
32− "strings"
33− "time"
34−
35− "cloud.google.com/go/auth/internal"
36− "github.com/googleapis/gax-go/v2/internallog"
37−)
38−
39−var (
40− // getenv aliases os.Getenv for testing
41− getenv = os.Getenv
42−)
43−
44−const (
45− // AWS Signature Version 4 signing algorithm identifier.
46− awsAlgorithm = "AWS4-HMAC-SHA256"
47−
48− // The termination string for the AWS credential scope value as defined in
49− // https://docs.aws.amazon.com/general/latest/gr/sigv4-create-string-to-sign.html
50− awsRequestType = "aws4_request"
51−
52− // The AWS authorization header name for the security session token if available.
53− awsSecurityTokenHeader = "x-amz-security-token"
54−
55− // The name of the header containing the session token for metadata endpoint calls
56− awsIMDSv2SessionTokenHeader = "X-aws-ec2-metadata-token"
57−
58− awsIMDSv2SessionTTLHeader = "X-aws-ec2-metadata-token-ttl-seconds"
59−
60− awsIMDSv2SessionTTL = "300"
61−
62− // The AWS authorization header name for the auto-generated date.
63− awsDateHeader = "x-amz-date"
64−
65− defaultRegionalCredentialVerificationURL = "https://sts.{region}.amazonaws.com?Action=GetCallerIdentity&Version=2011-06-15"
66−
67− // Supported AWS configuration environment variables.
68− awsAccessKeyIDEnvVar = "AWS_ACCESS_KEY_ID"
69− awsDefaultRegionEnvVar = "AWS_DEFAULT_REGION"
70− awsRegionEnvVar = "AWS_REGION"
71− awsSecretAccessKeyEnvVar = "AWS_SECRET_ACCESS_KEY"
72− awsSessionTokenEnvVar = "AWS_SESSION_TOKEN"
73−
74− awsTimeFormatLong = "20060102T150405Z"
75− awsTimeFormatShort = "20060102"
76− awsProviderType = "aws"
77−)
78−
79−type awsSubjectProvider struct {
80− EnvironmentID string
81− RegionURL string
82− RegionalCredVerificationURL string
83− CredVerificationURL string
84− IMDSv2SessionTokenURL string
85− TargetResource string
86− requestSigner *awsRequestSigner
87− region string
88− securityCredentialsProvider AwsSecurityCredentialsProvider
89− reqOpts *RequestOptions
90−
91− Client *http.Client
92− logger *slog.Logger
93−}
94−
95−func (sp *awsSubjectProvider) subjectToken(ctx context.Context) (string, error) {
96− // Set Defaults
97− if sp.RegionalCredVerificationURL == "" {
98− sp.RegionalCredVerificationURL = defaultRegionalCredentialVerificationURL
99− }
100− headers := make(map[string]string)
101− if sp.shouldUseMetadataServer() {
102− awsSessionToken, err := sp.getAWSSessionToken(ctx)
103− if err != nil {
104− return "", err
105− }
106−
107− if awsSessionToken != "" {
108− headers[awsIMDSv2SessionTokenHeader] = awsSessionToken
109− }
110− }
111−
112− awsSecurityCredentials, err := sp.getSecurityCredentials(ctx, headers)
113− if err != nil {
114− return "", err
115− }
116− if sp.region, err = sp.getRegion(ctx, headers); err != nil {
117− return "", err
118− }
119− sp.requestSigner = &awsRequestSigner{
120− RegionName: sp.region,
121− AwsSecurityCredentials: awsSecurityCredentials,
122− }
123−
124− // Generate the signed request to AWS STS GetCallerIdentity API.
125− // Use the required regional endpoint. Otherwise, the request will fail.
126− req, err := http.NewRequestWithContext(ctx, "POST", strings.Replace(sp.RegionalCredVerificationURL, "{region}", sp.region, 1), nil)
127− if err != nil {
128− return "", err
129− }
130− // The full, canonical resource name of the workload identity pool
131− // provider, with or without the HTTPS prefix.
132− // Including this header as part of the signature is recommended to
133− // ensure data integrity.
134− if sp.TargetResource != "" {
135− req.Header.Set("x-goog-cloud-target-resource", sp.TargetResource)
136− }
137− sp.requestSigner.signRequest(req)
138−
139− /*
140− The GCP STS endpoint expects the headers to be formatted as:
141− # [
142− # {key: 'x-amz-date', value: '...'},
143− # {key: 'Authorization', value: '...'},
144− # ...
145− # ]
146− # And then serialized as:
147− # quote(json.dumps({
148− # url: '...',
149− # method: 'POST',
150− # headers: [{key: 'x-amz-date', value: '...'}, ...]
151− # }))
152− */
153−
154− awsSignedReq := awsRequest{
155− URL: req.URL.String(),
156− Method: "POST",
157− }
158− for headerKey, headerList := range req.Header {
159− for _, headerValue := range headerList {
160− awsSignedReq.Headers = append(awsSignedReq.Headers, awsRequestHeader{
161− Key: headerKey,
162− Value: headerValue,
163− })
164− }
165− }
166− sort.Slice(awsSignedReq.Headers, func(i, j int) bool {
167− headerCompare := strings.Compare(awsSignedReq.Headers[i].Key, awsSignedReq.Headers[j].Key)
168− if headerCompare == 0 {
169− return strings.Compare(awsSignedReq.Headers[i].Value, awsSignedReq.Headers[j].Value) < 0
170− }
171− return headerCompare < 0
172− })
173−
174− result, err := json.Marshal(awsSignedReq)
175− if err != nil {
176− return "", err
177− }
178− return url.QueryEscape(string(result)), nil
179−}
180−
181−func (sp *awsSubjectProvider) providerType() string {
182− if sp.securityCredentialsProvider != nil {
183− return programmaticProviderType
184− }
185− return awsProviderType
186−}
187−
188−func (sp *awsSubjectProvider) getAWSSessionToken(ctx context.Context) (string, error) {
189− if sp.IMDSv2SessionTokenURL == "" {
190− return "", nil
191− }
192− req, err := http.NewRequestWithContext(ctx, "PUT", sp.IMDSv2SessionTokenURL, nil)
193− if err != nil {
194− return "", err
195− }
196− req.Header.Set(awsIMDSv2SessionTTLHeader, awsIMDSv2SessionTTL)
197−
198− sp.logger.DebugContext(ctx, "aws session token request", "request", internallog.HTTPRequest(req, nil))
199− resp, body, err := internal.DoRequest(sp.Client, req)
200− if err != nil {
201− return "", err
202− }
203− sp.logger.DebugContext(ctx, "aws session token response", "response", internallog.HTTPResponse(resp, body))
204− if resp.StatusCode != http.StatusOK {
205− return "", fmt.Errorf("credentials: unable to retrieve AWS session token: %s", body)
206− }
207− return string(body), nil
208−}
209−
210−func (sp *awsSubjectProvider) getRegion(ctx context.Context, headers map[string]string) (string, error) {
211− if sp.securityCredentialsProvider != nil {
212− return sp.securityCredentialsProvider.AwsRegion(ctx, sp.reqOpts)
213− }
214− if canRetrieveRegionFromEnvironment() {
215− if envAwsRegion := getenv(awsRegionEnvVar); envAwsRegion != "" {
216− return envAwsRegion, nil
217− }
218− return getenv(awsDefaultRegionEnvVar), nil
219− }
220−
221− if sp.RegionURL == "" {
222− return "", errors.New("credentials: unable to determine AWS region")
223− }
224−
225− req, err := http.NewRequestWithContext(ctx, "GET", sp.RegionURL, nil)
226− if err != nil {
227− return "", err
228− }
229−
230− for name, value := range headers {
231− req.Header.Add(name, value)
232− }
233− sp.logger.DebugContext(ctx, "aws region request", "request", internallog.HTTPRequest(req, nil))
234− resp, body, err := internal.DoRequest(sp.Client, req)
235− if err != nil {
236− return "", err
237− }
238− sp.logger.DebugContext(ctx, "aws region response", "response", internallog.HTTPResponse(resp, body))
239− if resp.StatusCode != http.StatusOK {
240− return "", fmt.Errorf("credentials: unable to retrieve AWS region - %s", body)
241− }
242−
243− // This endpoint will return the region in format: us-east-2b.
244− // Only the us-east-2 part should be used.
245− bodyLen := len(body)
246− if bodyLen == 0 {
247− return "", nil
248− }
249− return string(body[:bodyLen-1]), nil
250−}
251−
252−func (sp *awsSubjectProvider) getSecurityCredentials(ctx context.Context, headers map[string]string) (result *AwsSecurityCredentials, err error) {
253− if sp.securityCredentialsProvider != nil {
254− return sp.securityCredentialsProvider.AwsSecurityCredentials(ctx, sp.reqOpts)
255− }
256− if canRetrieveSecurityCredentialFromEnvironment() {
257− return &AwsSecurityCredentials{
258− AccessKeyID: getenv(awsAccessKeyIDEnvVar),
259− SecretAccessKey: getenv(awsSecretAccessKeyEnvVar),
260− SessionToken: getenv(awsSessionTokenEnvVar),
261− }, nil
262− }
263−
264− roleName, err := sp.getMetadataRoleName(ctx, headers)
265− if err != nil {
266− return
267− }
268− credentials, err := sp.getMetadataSecurityCredentials(ctx, roleName, headers)
269− if err != nil {
270− return
271− }
272−
273− if credentials.AccessKeyID == "" {
274− return result, errors.New("credentials: missing AccessKeyId credential")
275− }
276− if credentials.SecretAccessKey == "" {
277− return result, errors.New("credentials: missing SecretAccessKey credential")
278− }
279−
280− return credentials, nil
281−}
282−
283−func (sp *awsSubjectProvider) getMetadataSecurityCredentials(ctx context.Context, roleName string, headers map[string]string) (*AwsSecurityCredentials, error) {
284− var result *AwsSecurityCredentials
285−
286− req, err := http.NewRequestWithContext(ctx, "GET", fmt.Sprintf("%s/%s", sp.CredVerificationURL, roleName), nil)
287− if err != nil {
288− return result, err
289− }
290− for name, value := range headers {
291− req.Header.Add(name, value)
292− }
293− sp.logger.DebugContext(ctx, "aws security credential request", "request", internallog.HTTPRequest(req, nil))
294− resp, body, err := internal.DoRequest(sp.Client, req)
295− if err != nil {
296− return result, err
297− }
298− sp.logger.DebugContext(ctx, "aws security credential response", "response", internallog.HTTPResponse(resp, body))
299− if resp.StatusCode != http.StatusOK {
300− return result, fmt.Errorf("credentials: unable to retrieve AWS security credentials - %s", body)
301− }
302− if err := json.Unmarshal(body, &result); err != nil {
303− return nil, err
304− }
305− return result, nil
306−}
307−
308−func (sp *awsSubjectProvider) getMetadataRoleName(ctx context.Context, headers map[string]string) (string, error) {
309− if sp.CredVerificationURL == "" {
310− return "", errors.New("credentials: unable to determine the AWS metadata server security credentials endpoint")
311− }
312− req, err := http.NewRequestWithContext(ctx, "GET", sp.CredVerificationURL, nil)
313− if err != nil {
314− return "", err
315− }
316− for name, value := range headers {
317− req.Header.Add(name, value)
318− }
319−
320− sp.logger.DebugContext(ctx, "aws metadata role request", "request", internallog.HTTPRequest(req, nil))
321− resp, body, err := internal.DoRequest(sp.Client, req)
322− if err != nil {
323− return "", err
324− }
325− sp.logger.DebugContext(ctx, "aws metadata role response", "response", internallog.HTTPResponse(resp, body))
326− if resp.StatusCode != http.StatusOK {
327− return "", fmt.Errorf("credentials: unable to retrieve AWS role name - %s", body)
328− }
329− return string(body), nil
330−}
331−
332−// awsRequestSigner is a utility class to sign http requests using a AWS V4 signature.
333−type awsRequestSigner struct {
334− RegionName string
335− AwsSecurityCredentials *AwsSecurityCredentials
336−}
337−
338−// signRequest adds the appropriate headers to an http.Request
339−// or returns an error if something prevented this.
340−func (rs *awsRequestSigner) signRequest(req *http.Request) error {
341− // req is assumed non-nil
342− signedRequest := cloneRequest(req)
343− timestamp := Now()
344− signedRequest.Header.Set("host", requestHost(req))
345− if rs.AwsSecurityCredentials.SessionToken != "" {
346− signedRequest.Header.Set(awsSecurityTokenHeader, rs.AwsSecurityCredentials.SessionToken)
347− }
348− if signedRequest.Header.Get("date") == "" {
349− signedRequest.Header.Set(awsDateHeader, timestamp.Format(awsTimeFormatLong))
350− }
351− authorizationCode, err := rs.generateAuthentication(signedRequest, timestamp)
352− if err != nil {
353− return err
354− }
355− signedRequest.Header.Set("Authorization", authorizationCode)
356− req.Header = signedRequest.Header
357− return nil
358−}
359−
360−func (rs *awsRequestSigner) generateAuthentication(req *http.Request, timestamp time.Time) (string, error) {
361− canonicalHeaderColumns, canonicalHeaderData := canonicalHeaders(req)
362− dateStamp := timestamp.Format(awsTimeFormatShort)
363− serviceName := ""
364−
365− if splitHost := strings.Split(requestHost(req), "."); len(splitHost) > 0 {
366− serviceName = splitHost[0]
367− }
368− credentialScope := strings.Join([]string{dateStamp, rs.RegionName, serviceName, awsRequestType}, "/")
369− requestString, err := canonicalRequest(req, canonicalHeaderColumns, canonicalHeaderData)
370− if err != nil {
371− return "", err
372− }
373− requestHash, err := getSha256([]byte(requestString))
374− if err != nil {
375− return "", err
376− }
377−
378− stringToSign := strings.Join([]string{awsAlgorithm, timestamp.Format(awsTimeFormatLong), credentialScope, requestHash}, "\n")
379− signingKey := []byte("AWS4" + rs.AwsSecurityCredentials.SecretAccessKey)
380− for _, signingInput := range []string{
381− dateStamp, rs.RegionName, serviceName, awsRequestType, stringToSign,
382− } {
383− signingKey, err = getHmacSha256(signingKey, []byte(signingInput))
384− if err != nil {
385− return "", err
386− }
387− }
388−
389− return fmt.Sprintf("%s Credential=%s/%s, SignedHeaders=%s, Signature=%s", awsAlgorithm, rs.AwsSecurityCredentials.AccessKeyID, credentialScope, canonicalHeaderColumns, hex.EncodeToString(signingKey)), nil
390−}
391−
392−func getSha256(input []byte) (string, error) {
393− hash := sha256.New()
394− if _, err := hash.Write(input); err != nil {
395− return "", err
396− }
397− return hex.EncodeToString(hash.Sum(nil)), nil
398−}
399−
400−func getHmacSha256(key, input []byte) ([]byte, error) {
401− hash := hmac.New(sha256.New, key)
402− if _, err := hash.Write(input); err != nil {
403− return nil, err
404− }
405− return hash.Sum(nil), nil
406−}
407−
408−func cloneRequest(r *http.Request) *http.Request {
409− r2 := new(http.Request)
410− *r2 = *r
411− if r.Header != nil {
412− r2.Header = make(http.Header, len(r.Header))
413−
414− // Find total number of values.
415− headerCount := 0
416− for _, headerValues := range r.Header {
417− headerCount += len(headerValues)
418− }
419− copiedHeaders := make([]string, headerCount) // shared backing array for headers' values
420−
421− for headerKey, headerValues := range r.Header {
422− headerCount = copy(copiedHeaders, headerValues)
423− r2.Header[headerKey] = copiedHeaders[:headerCount:headerCount]
424− copiedHeaders = copiedHeaders[headerCount:]
425− }
426− }
427− return r2
428−}
429−
430−func canonicalPath(req *http.Request) string {
431− result := req.URL.EscapedPath()
432− if result == "" {
433− return "/"
434− }
435− return path.Clean(result)
436−}
437−
438−func canonicalQuery(req *http.Request) string {
439− queryValues := req.URL.Query()
440− for queryKey := range queryValues {
441− sort.Strings(queryValues[queryKey])
442− }
443− return queryValues.Encode()
444−}
445−
446−func canonicalHeaders(req *http.Request) (string, string) {
447− // Header keys need to be sorted alphabetically.
448− var headers []string
449− lowerCaseHeaders := make(http.Header)
450− for k, v := range req.Header {
451− k := strings.ToLower(k)
452− if _, ok := lowerCaseHeaders[k]; ok {
453− // include additional values
454− lowerCaseHeaders[k] = append(lowerCaseHeaders[k], v...)
455− } else {
456− headers = append(headers, k)
457− lowerCaseHeaders[k] = v
458− }
459− }
460− sort.Strings(headers)
461−
462− var fullHeaders bytes.Buffer
463− for _, header := range headers {
464− headerValue := strings.Join(lowerCaseHeaders[header], ",")
465− fullHeaders.WriteString(header)
466− fullHeaders.WriteRune(':')
467− fullHeaders.WriteString(headerValue)
468− fullHeaders.WriteRune('\n')
469− }
470−
471− return strings.Join(headers, ";"), fullHeaders.String()
472−}
473−
474−func requestDataHash(req *http.Request) (string, error) {
475− var requestData []byte
476− if req.Body != nil {
477− requestBody, err := req.GetBody()
478− if err != nil {
479− return "", err
480− }
481− defer requestBody.Close()
482−
483− requestData, err = internal.ReadAll(requestBody)
484− if err != nil {
485− return "", err
486− }
487− }
488−
489− return getSha256(requestData)
490−}
491−
492−func requestHost(req *http.Request) string {
493− if req.Host != "" {
494− return req.Host
495− }
496− return req.URL.Host
497−}
498−
499−func canonicalRequest(req *http.Request, canonicalHeaderColumns, canonicalHeaderData string) (string, error) {
500− dataHash, err := requestDataHash(req)
501− if err != nil {
502− return "", err
503− }
504− return fmt.Sprintf("%s\n%s\n%s\n%s\n%s\n%s", req.Method, canonicalPath(req), canonicalQuery(req), canonicalHeaderData, canonicalHeaderColumns, dataHash), nil
505−}
506−
507−type awsRequestHeader struct {
508− Key string `json:"key"`
509− Value string `json:"value"`
510−}
511−
512−type awsRequest struct {
513− URL string `json:"url"`
514− Method string `json:"method"`
515− Headers []awsRequestHeader `json:"headers"`
516−}
517−
518−// The AWS region can be provided through AWS_REGION or AWS_DEFAULT_REGION. Only one is
519−// required.
520−func canRetrieveRegionFromEnvironment() bool {
521− return getenv(awsRegionEnvVar) != "" || getenv(awsDefaultRegionEnvVar) != ""
522−}
523−
524−// Check if both AWS_ACCESS_KEY_ID and AWS_SECRET_ACCESS_KEY are available.
525−func canRetrieveSecurityCredentialFromEnvironment() bool {
526− return getenv(awsAccessKeyIDEnvVar) != "" && getenv(awsSecretAccessKeyEnvVar) != ""
527−}
528−
529−func (sp *awsSubjectProvider) shouldUseMetadataServer() bool {
530− return sp.securityCredentialsProvider == nil && (!canRetrieveRegionFromEnvironment() || !canRetrieveSecurityCredentialFromEnvironment())
531−}
vendor/cloud.google.com/go/auth/credentials/internal/externalaccount/executable_provider.godeleted−284
@@ -1,284 +0,0 @@
1−// Copyright 2023 Google LLC
2−//
3−// Licensed under the Apache License, Version 2.0 (the "License");
4−// you may not use this file except in compliance with the License.
5−// You may obtain a copy of the License at
6−//
7−// http://www.apache.org/licenses/LICENSE-2.0
8−//
9−// Unless required by applicable law or agreed to in writing, software
10−// distributed under the License is distributed on an "AS IS" BASIS,
11−// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12−// See the License for the specific language governing permissions and
13−// limitations under the License.
14−
15−package externalaccount
16−
17−import (
18− "bytes"
19− "context"
20− "encoding/json"
21− "errors"
22− "fmt"
23− "net/http"
24− "os"
25− "os/exec"
26− "regexp"
27− "strings"
28− "time"
29−
30− "cloud.google.com/go/auth/internal"
31−)
32−
33−const (
34− executableSupportedMaxVersion = 1
35− executableDefaultTimeout = 30 * time.Second
36− executableSource = "response"
37− executableProviderType = "executable"
38− outputFileSource = "output file"
39−
40− allowExecutablesEnvVar = "GOOGLE_EXTERNAL_ACCOUNT_ALLOW_EXECUTABLES"
41−
42− jwtTokenType = "urn:ietf:params:oauth:token-type:jwt"
43− idTokenType = "urn:ietf:params:oauth:token-type:id_token"
44− saml2TokenType = "urn:ietf:params:oauth:token-type:saml2"
45−)
46−
47−var (
48− serviceAccountImpersonationRE = regexp.MustCompile(`https://iamcredentials..+/v1/projects/-/serviceAccounts/(.*@.*):generateAccessToken`)
49−)
50−
51−type nonCacheableError struct {
52− message string
53−}
54−
55−func (nce nonCacheableError) Error() string {
56− return nce.message
57−}
58−
59−// environment is a contract for testing
60−type environment interface {
61− existingEnv() []string
62− getenv(string) string
63− run(ctx context.Context, command string, env []string) ([]byte, error)
64− now() time.Time
65−}
66−
67−type runtimeEnvironment struct{}
68−
69−func (r runtimeEnvironment) existingEnv() []string {
70− return os.Environ()
71−}
72−func (r runtimeEnvironment) getenv(key string) string {
73− return os.Getenv(key)
74−}
75−func (r runtimeEnvironment) now() time.Time {
76− return time.Now().UTC()
77−}
78−
79−func (r runtimeEnvironment) run(ctx context.Context, command string, env []string) ([]byte, error) {
80− splitCommand := strings.Fields(command)
81− cmd := exec.CommandContext(ctx, splitCommand[0], splitCommand[1:]...)
82− cmd.Env = env
83−
84− var stdout, stderr bytes.Buffer
85− cmd.Stdout = &stdout
86− cmd.Stderr = &stderr
87−
88− if err := cmd.Run(); err != nil {
89− if ctx.Err() == context.DeadlineExceeded {
90− return nil, context.DeadlineExceeded
91− }
92− if exitError, ok := err.(*exec.ExitError); ok {
93− return nil, exitCodeError(exitError)
94− }
95− return nil, executableError(err)
96− }
97−
98− bytesStdout := bytes.TrimSpace(stdout.Bytes())
99− if len(bytesStdout) > 0 {
100− return bytesStdout, nil
101− }
102− return bytes.TrimSpace(stderr.Bytes()), nil
103−}
104−
105−type executableSubjectProvider struct {
106− Command string
107− Timeout time.Duration
108− OutputFile string
109− client *http.Client
110− opts *Options
111− env environment
112−}
113−
114−type executableResponse struct {
115− Version int `json:"version,omitempty"`
116− Success *bool `json:"success,omitempty"`
117− TokenType string `json:"token_type,omitempty"`
118− ExpirationTime int64 `json:"expiration_time,omitempty"`
119− IDToken string `json:"id_token,omitempty"`
120− SamlResponse string `json:"saml_response,omitempty"`
121− Code string `json:"code,omitempty"`
122− Message string `json:"message,omitempty"`
123−}
124−
125−func (sp *executableSubjectProvider) parseSubjectTokenFromSource(response []byte, source string, now int64) (string, error) {
126− var result executableResponse
127− if err := json.Unmarshal(response, &result); err != nil {
128− return "", jsonParsingError(source, string(response))
129− }
130− // Validate
131− if result.Version == 0 {
132− return "", missingFieldError(source, "version")
133− }
134− if result.Success == nil {
135− return "", missingFieldError(source, "success")
136− }
137− if !*result.Success {
138− if result.Code == "" || result.Message == "" {
139− return "", malformedFailureError()
140− }
141− return "", userDefinedError(result.Code, result.Message)
142− }
143− if result.Version > executableSupportedMaxVersion || result.Version < 0 {
144− return "", unsupportedVersionError(source, result.Version)
145− }
146− if result.ExpirationTime == 0 && sp.OutputFile != "" {
147− return "", missingFieldError(source, "expiration_time")
148− }
149− if result.TokenType == "" {
150− return "", missingFieldError(source, "token_type")
151− }
152− if result.ExpirationTime != 0 && result.ExpirationTime < now {
153− return "", tokenExpiredError()
154− }
155−
156− switch result.TokenType {
157− case jwtTokenType, idTokenType:
158− if result.IDToken == "" {
159− return "", missingFieldError(source, "id_token")
160− }
161− return result.IDToken, nil
162− case saml2TokenType:
163− if result.SamlResponse == "" {
164− return "", missingFieldError(source, "saml_response")
165− }
166− return result.SamlResponse, nil
167− default:
168− return "", tokenTypeError(source)
169− }
170−}
171−
172−func (sp *executableSubjectProvider) subjectToken(ctx context.Context) (string, error) {
173− if token, err := sp.getTokenFromOutputFile(); token != "" || err != nil {
174− return token, err
175− }
176− return sp.getTokenFromExecutableCommand(ctx)
177−}
178−
179−func (sp *executableSubjectProvider) providerType() string {
180− return executableProviderType
181−}
182−
183−func (sp *executableSubjectProvider) getTokenFromOutputFile() (token string, err error) {
184− if sp.OutputFile == "" {
185− // This ExecutableCredentialSource doesn't use an OutputFile.
186− return "", nil
187− }
188−
189− file, err := os.Open(sp.OutputFile)
190− if err != nil {
191− // No OutputFile found. Hasn't been created yet, so skip it.
192− return "", nil
193− }
194− defer file.Close()
195−
196− data, err := internal.ReadAll(file)
197− if err != nil || len(data) == 0 {
198− // Cachefile exists, but no data found. Get new credential.
199− return "", nil
200− }
201−
202− token, err = sp.parseSubjectTokenFromSource(data, outputFileSource, sp.env.now().Unix())
203− if err != nil {
204− if _, ok := err.(nonCacheableError); ok {
205− // If the cached token is expired we need a new token,
206− // and if the cache contains a failure, we need to try again.
207− return "", nil
208− }
209−
210− // There was an error in the cached token, and the developer should be aware of it.
211− return "", err
212− }
213− // Token parsing succeeded. Use found token.
214− return token, nil
215−}
216−
217−func (sp *executableSubjectProvider) executableEnvironment() []string {
218− result := sp.env.existingEnv()
219− result = append(result, fmt.Sprintf("GOOGLE_EXTERNAL_ACCOUNT_AUDIENCE=%v", sp.opts.Audience))
220− result = append(result, fmt.Sprintf("GOOGLE_EXTERNAL_ACCOUNT_TOKEN_TYPE=%v", sp.opts.SubjectTokenType))
221− result = append(result, "GOOGLE_EXTERNAL_ACCOUNT_INTERACTIVE=0")
222− if sp.opts.ServiceAccountImpersonationURL != "" {
223− matches := serviceAccountImpersonationRE.FindStringSubmatch(sp.opts.ServiceAccountImpersonationURL)
224− if matches != nil {
225− result = append(result, fmt.Sprintf("GOOGLE_EXTERNAL_ACCOUNT_IMPERSONATED_EMAIL=%v", matches[1]))
226− }
227− }
228− if sp.OutputFile != "" {
229− result = append(result, fmt.Sprintf("GOOGLE_EXTERNAL_ACCOUNT_OUTPUT_FILE=%v", sp.OutputFile))
230− }
231− return result
232−}
233−
234−func (sp *executableSubjectProvider) getTokenFromExecutableCommand(ctx context.Context) (string, error) {
235− // For security reasons, we need our consumers to set this environment variable to allow executables to be run.
236− if sp.env.getenv(allowExecutablesEnvVar) != "1" {
237− return "", errors.New("credentials: executables need to be explicitly allowed (set GOOGLE_EXTERNAL_ACCOUNT_ALLOW_EXECUTABLES to '1') to run")
238− }
239−
240− ctx, cancel := context.WithDeadline(ctx, sp.env.now().Add(sp.Timeout))
241− defer cancel()
242−
243− output, err := sp.env.run(ctx, sp.Command, sp.executableEnvironment())
244− if err != nil {
245− return "", err
246− }
247− return sp.parseSubjectTokenFromSource(output, executableSource, sp.env.now().Unix())
248−}
249−
250−func missingFieldError(source, field string) error {
251− return fmt.Errorf("credentials: %q missing %q field", source, field)
252−}
253−
254−func jsonParsingError(source, data string) error {
255− return fmt.Errorf("credentials: unable to parse %q: %v", source, data)
256−}
257−
258−func malformedFailureError() error {
259− return nonCacheableError{"credentials: response must include `error` and `message` fields when unsuccessful"}
260−}
261−
262−func userDefinedError(code, message string) error {
263− return nonCacheableError{fmt.Sprintf("credentials: response contains unsuccessful response: (%v) %v", code, message)}
264−}
265−
266−func unsupportedVersionError(source string, version int) error {
267− return fmt.Errorf("credentials: %v contains unsupported version: %v", source, version)
268−}
269−
270−func tokenExpiredError() error {
271− return nonCacheableError{"credentials: the token returned by the executable is expired"}
272−}
273−
274−func tokenTypeError(source string) error {
275− return fmt.Errorf("credentials: %v contains unsupported token type", source)
276−}
277−
278−func exitCodeError(err *exec.ExitError) error {
279− return fmt.Errorf("credentials: executable command failed with exit code %v: %w", err.ExitCode(), err)
280−}
281−
282−func executableError(err error) error {
283− return fmt.Errorf("credentials: executable command failed: %w", err)
284−}
vendor/cloud.google.com/go/auth/credentials/internal/externalaccount/externalaccount.godeleted−428
@@ -1,428 +0,0 @@
1−// Copyright 2023 Google LLC
2−//
3−// Licensed under the Apache License, Version 2.0 (the "License");
4−// you may not use this file except in compliance with the License.
5−// You may obtain a copy of the License at
6−//
7−// http://www.apache.org/licenses/LICENSE-2.0
8−//
9−// Unless required by applicable law or agreed to in writing, software
10−// distributed under the License is distributed on an "AS IS" BASIS,
11−// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12−// See the License for the specific language governing permissions and
13−// limitations under the License.
14−
15−package externalaccount
16−
17−import (
18− "context"
19− "errors"
20− "fmt"
21− "log/slog"
22− "net/http"
23− "regexp"
24− "strconv"
25− "strings"
26− "time"
27−
28− "cloud.google.com/go/auth"
29− "cloud.google.com/go/auth/credentials/internal/impersonate"
30− "cloud.google.com/go/auth/credentials/internal/stsexchange"
31− "cloud.google.com/go/auth/internal/credsfile"
32− "github.com/googleapis/gax-go/v2/internallog"
33−)
34−
35−const (
36− timeoutMinimum = 5 * time.Second
37− timeoutMaximum = 120 * time.Second
38−
39− universeDomainPlaceholder = "UNIVERSE_DOMAIN"
40− defaultTokenURL = "https://sts.UNIVERSE_DOMAIN/v1/token"
41− defaultUniverseDomain = "googleapis.com"
42−)
43−
44−var (
45− // Now aliases time.Now for testing
46− Now = func() time.Time {
47− return time.Now().UTC()
48− }
49− validWorkforceAudiencePattern *regexp.Regexp = regexp.MustCompile(`//iam\.googleapis\.com/locations/[^/]+/workforcePools/`)
50−)
51−
52−// Options stores the configuration for fetching tokens with external credentials.
53−type Options struct {
54− // Audience is the Secure Token Service (STS) audience which contains the resource name for the workload
55− // identity pool or the workforce pool and the provider identifier in that pool.
56− Audience string
57− // SubjectTokenType is the STS token type based on the Oauth2.0 token exchange spec
58− // e.g. `urn:ietf:params:oauth:token-type:jwt`.
59− SubjectTokenType string
60− // TokenURL is the STS token exchange endpoint.
61− TokenURL string
62− // TokenInfoURL is the token_info endpoint used to retrieve the account related information (
63− // user attributes like account identifier, eg. email, username, uid, etc). This is
64− // needed for gCloud session account identification.
65− TokenInfoURL string
66− // ServiceAccountImpersonationURL is the URL for the service account impersonation request. This is only
67− // required for workload identity pools when APIs to be accessed have not integrated with UberMint.
68− ServiceAccountImpersonationURL string
69− // ServiceAccountImpersonationLifetimeSeconds is the number of seconds the service account impersonation
70− // token will be valid for.
71− ServiceAccountImpersonationLifetimeSeconds int
72− // ClientSecret is currently only required if token_info endpoint also
73− // needs to be called with the generated GCP access token. When provided, STS will be
74− // called with additional basic authentication using client_id as username and client_secret as password.
75− ClientSecret string
76− // ClientID is only required in conjunction with ClientSecret, as described above.
77− ClientID string
78− // CredentialSource contains the necessary information to retrieve the token itself, as well
79− // as some environmental information.
80− CredentialSource *credsfile.CredentialSource
81− // QuotaProjectID is injected by gCloud. If the value is non-empty, the Auth libraries
82− // will set the x-goog-user-project which overrides the project associated with the credentials.
83− QuotaProjectID string
84− // Scopes contains the desired scopes for the returned access token.
85− Scopes []string
86− // WorkforcePoolUserProject should be set when it is a workforce pool and
87− // not a workload identity pool. The underlying principal must still have
88− // serviceusage.services.use IAM permission to use the project for
89− // billing/quota. Optional.
90− WorkforcePoolUserProject string
91− // UniverseDomain is the default service domain for a given Cloud universe.
92− // This value will be used in the default STS token URL. The default value
93− // is "googleapis.com". It will not be used if TokenURL is set. Optional.
94− UniverseDomain string
95− // SubjectTokenProvider is an optional token provider for OIDC/SAML
96− // credentials. One of SubjectTokenProvider, AWSSecurityCredentialProvider
97− // or CredentialSource must be provided. Optional.
98− SubjectTokenProvider SubjectTokenProvider
99− // AwsSecurityCredentialsProvider is an AWS Security Credential provider
100− // for AWS credentials. One of SubjectTokenProvider,
101− // AWSSecurityCredentialProvider or CredentialSource must be provided. Optional.
102− AwsSecurityCredentialsProvider AwsSecurityCredentialsProvider
103− // Client for token request.
104− Client *http.Client
105− // IsDefaultClient marks whether the client passed in is a default client that can be overriden.
106− // This is important for X509 credentials which should create a new client if the default was used
107− // but should respect a client explicitly passed in by the user.
108− IsDefaultClient bool
109− // Logger is used for debug logging. If provided, logging will be enabled
110− // at the loggers configured level. By default logging is disabled unless
111− // enabled by setting GOOGLE_SDK_GO_LOGGING_LEVEL in which case a default
112− // logger will be used. Optional.
113− Logger *slog.Logger
114−}
115−
116−// SubjectTokenProvider can be used to supply a subject token to exchange for a
117−// GCP access token.
118−type SubjectTokenProvider interface {
119− // SubjectToken should return a valid subject token or an error.
120− // The external account token provider does not cache the returned subject
121− // token, so caching logic should be implemented in the provider to prevent
122− // multiple requests for the same subject token.
123− SubjectToken(ctx context.Context, opts *RequestOptions) (string, error)
124−}
125−
126−// RequestOptions contains information about the requested subject token or AWS
127−// security credentials from the Google external account credential.
128−type RequestOptions struct {
129− // Audience is the requested audience for the external account credential.
130− Audience string
131− // Subject token type is the requested subject token type for the external
132− // account credential. Expected values include:
133− // “urn:ietf:params:oauth:token-type:jwt”
134− // “urn:ietf:params:oauth:token-type:id-token”
135− // “urn:ietf:params:oauth:token-type:saml2”
136− // “urn:ietf:params:aws:token-type:aws4_request”
137− SubjectTokenType string
138−}
139−
140−// AwsSecurityCredentialsProvider can be used to supply AwsSecurityCredentials
141−// and an AWS Region to exchange for a GCP access token.
142−type AwsSecurityCredentialsProvider interface {
143− // AwsRegion should return the AWS region or an error.
144− AwsRegion(ctx context.Context, opts *RequestOptions) (string, error)
145− // GetAwsSecurityCredentials should return a valid set of
146− // AwsSecurityCredentials or an error. The external account token provider
147− // does not cache the returned security credentials, so caching logic should
148− // be implemented in the provider to prevent multiple requests for the
149− // same security credentials.
150− AwsSecurityCredentials(ctx context.Context, opts *RequestOptions) (*AwsSecurityCredentials, error)
151−}
152−
153−// AwsSecurityCredentials models AWS security credentials.
154−type AwsSecurityCredentials struct {
155− // AccessKeyId is the AWS Access Key ID - Required.
156− AccessKeyID string `json:"AccessKeyID"`
157− // SecretAccessKey is the AWS Secret Access Key - Required.
158− SecretAccessKey string `json:"SecretAccessKey"`
159− // SessionToken is the AWS Session token. This should be provided for
160− // temporary AWS security credentials - Optional.
161− SessionToken string `json:"Token"`
162−}
163−
164−func (o *Options) validate() error {
165− if o.Audience == "" {
166− return fmt.Errorf("externalaccount: Audience must be set")
167− }
168− if o.SubjectTokenType == "" {
169− return fmt.Errorf("externalaccount: Subject token type must be set")
170− }
171− if o.WorkforcePoolUserProject != "" {
172− if valid := validWorkforceAudiencePattern.MatchString(o.Audience); !valid {
173− return fmt.Errorf("externalaccount: workforce_pool_user_project should not be set for non-workforce pool credentials")
174− }
175− }
176− count := 0
177− if o.CredentialSource != nil {
178− count++
179− }
180− if o.SubjectTokenProvider != nil {
181− count++
182− }
183− if o.AwsSecurityCredentialsProvider != nil {
184− count++
185− }
186− if count == 0 {
187− return fmt.Errorf("externalaccount: one of CredentialSource, SubjectTokenProvider, or AwsSecurityCredentialsProvider must be set")
188− }
189− if count > 1 {
190− return fmt.Errorf("externalaccount: only one of CredentialSource, SubjectTokenProvider, or AwsSecurityCredentialsProvider must be set")
191− }
192− return nil
193−}
194−
195−// client returns the http client that should be used for the token exchange. If a non-default client
196−// is provided, then the client configured in the options will always be returned. If a default client
197−// is provided and the options are configured for X509 credentials, a new client will be created.
198−func (o *Options) client() (*http.Client, error) {
199− // If a client was provided and no override certificate config location was provided, use the provided client.
200− if o.CredentialSource == nil || o.CredentialSource.Certificate == nil || (!o.IsDefaultClient && o.CredentialSource.Certificate.CertificateConfigLocation == "") {
201− return o.Client, nil
202− }
203−
204− // If a new client should be created, validate and use the certificate source to create a new mTLS client.
205− cert := o.CredentialSource.Certificate
206− if !cert.UseDefaultCertificateConfig && cert.CertificateConfigLocation == "" {
207− return nil, errors.New("credentials: \"certificate\" object must either specify a certificate_config_location or use_default_certificate_config should be true")
208− }
209− if cert.UseDefaultCertificateConfig && cert.CertificateConfigLocation != "" {
210− return nil, errors.New("credentials: \"certificate\" object cannot specify both a certificate_config_location and use_default_certificate_config=true")
211− }
212− return createX509Client(cert.CertificateConfigLocation)
213−}
214−
215−// resolveTokenURL sets the default STS token endpoint with the configured
216−// universe domain.
217−func (o *Options) resolveTokenURL() {
218− if o.TokenURL != "" {
219− return
220− } else if o.UniverseDomain != "" {
221− o.TokenURL = strings.Replace(defaultTokenURL, universeDomainPlaceholder, o.UniverseDomain, 1)
222− } else {
223− o.TokenURL = strings.Replace(defaultTokenURL, universeDomainPlaceholder, defaultUniverseDomain, 1)
224− }
225−}
226−
227−// NewTokenProvider returns a [cloud.google.com/go/auth.TokenProvider]
228−// configured with the provided options.
229−func NewTokenProvider(opts *Options) (auth.TokenProvider, error) {
230− if err := opts.validate(); err != nil {
231− return nil, err
232− }
233− opts.resolveTokenURL()
234− logger := internallog.New(opts.Logger)
235− stp, err := newSubjectTokenProvider(opts)
236− if err != nil {
237− return nil, err
238− }
239−
240− client, err := opts.client()
241− if err != nil {
242− return nil, err
243− }
244−
245− tp := &tokenProvider{
246− client: client,
247− opts: opts,
248− stp: stp,
249− logger: logger,
250− }
251−
252− if opts.ServiceAccountImpersonationURL == "" {
253− return auth.NewCachedTokenProvider(tp, nil), nil
254− }
255−
256− scopes := make([]string, len(opts.Scopes))
257− copy(scopes, opts.Scopes)
258− // needed for impersonation
259− tp.opts.Scopes = []string{"https://www.googleapis.com/auth/cloud-platform"}
260− imp, err := impersonate.NewTokenProvider(&impersonate.Options{
261− Client: client,
262− URL: opts.ServiceAccountImpersonationURL,
263− Scopes: scopes,
264− Tp: auth.NewCachedTokenProvider(tp, nil),
265− TokenLifetimeSeconds: opts.ServiceAccountImpersonationLifetimeSeconds,
266− Logger: logger,
267− })
268− if err != nil {
269− return nil, err
270− }
271− return auth.NewCachedTokenProvider(imp, nil), nil
272−}
273−
274−type subjectTokenProvider interface {
275− subjectToken(ctx context.Context) (string, error)
276− providerType() string
277−}
278−
279−// tokenProvider is the provider that handles external credentials. It is used to retrieve Tokens.
280−type tokenProvider struct {
281− client *http.Client
282− logger *slog.Logger
283− opts *Options
284− stp subjectTokenProvider
285−}
286−
287−func (tp *tokenProvider) Token(ctx context.Context) (*auth.Token, error) {
288− subjectToken, err := tp.stp.subjectToken(ctx)
289− if err != nil {
290− return nil, err
291− }
292−
293− stsRequest := &stsexchange.TokenRequest{
294− GrantType: stsexchange.GrantType,
295− Audience: tp.opts.Audience,
296− Scope: tp.opts.Scopes,
297− RequestedTokenType: stsexchange.TokenType,
298− SubjectToken: subjectToken,
299− SubjectTokenType: tp.opts.SubjectTokenType,
300− }
301− header := make(http.Header)
302− header.Set("Content-Type", "application/x-www-form-urlencoded")
303− header.Add("x-goog-api-client", getGoogHeaderValue(tp.opts, tp.stp))
304− clientAuth := stsexchange.ClientAuthentication{
305− AuthStyle: auth.StyleInHeader,
306− ClientID: tp.opts.ClientID,
307− ClientSecret: tp.opts.ClientSecret,
308− }
309− var options map[string]interface{}
310− // Do not pass workforce_pool_user_project when client authentication is used.
311− // The client ID is sufficient for determining the user project.
312− if tp.opts.WorkforcePoolUserProject != "" && tp.opts.ClientID == "" {
313− options = map[string]interface{}{
314− "userProject": tp.opts.WorkforcePoolUserProject,
315− }
316− }
317− stsResp, err := stsexchange.ExchangeToken(ctx, &stsexchange.Options{
318− Client: tp.client,
319− Endpoint: tp.opts.TokenURL,
320− Request: stsRequest,
321− Authentication: clientAuth,
322− Headers: header,
323− ExtraOpts: options,
324− Logger: tp.logger,
325− })
326− if err != nil {
327− return nil, err
328− }
329−
330− tok := &auth.Token{
331− Value: stsResp.AccessToken,
332− Type: stsResp.TokenType,
333− }
334− // The RFC8693 doesn't define the explicit 0 of "expires_in" field behavior.
335− if stsResp.ExpiresIn <= 0 {
336− return nil, fmt.Errorf("credentials: got invalid expiry from security token service")
337− }
338− tok.Expiry = Now().Add(time.Duration(stsResp.ExpiresIn) * time.Second)
339− return tok, nil
340−}
341−
342−// newSubjectTokenProvider determines the type of credsfile.CredentialSource needed to create a
343−// subjectTokenProvider
344−func newSubjectTokenProvider(o *Options) (subjectTokenProvider, error) {
345− logger := internallog.New(o.Logger)
346− reqOpts := &RequestOptions{Audience: o.Audience, SubjectTokenType: o.SubjectTokenType}
347− if o.AwsSecurityCredentialsProvider != nil {
348− return &awsSubjectProvider{
349− securityCredentialsProvider: o.AwsSecurityCredentialsProvider,
350− TargetResource: o.Audience,
351− reqOpts: reqOpts,
352− logger: logger,
353− }, nil
354− } else if o.SubjectTokenProvider != nil {
355− return &programmaticProvider{stp: o.SubjectTokenProvider, opts: reqOpts}, nil
356− } else if len(o.CredentialSource.EnvironmentID) > 3 && o.CredentialSource.EnvironmentID[:3] == "aws" {
357− if awsVersion, err := strconv.Atoi(o.CredentialSource.EnvironmentID[3:]); err == nil {
358− if awsVersion != 1 {
359− return nil, fmt.Errorf("credentials: aws version '%d' is not supported in the current build", awsVersion)
360− }
361−
362− awsProvider := &awsSubjectProvider{
363− EnvironmentID: o.CredentialSource.EnvironmentID,
364− RegionURL: o.CredentialSource.RegionURL,
365− RegionalCredVerificationURL: o.CredentialSource.RegionalCredVerificationURL,
366− CredVerificationURL: o.CredentialSource.URL,
367− TargetResource: o.Audience,
368− Client: o.Client,
369− logger: logger,
370− }
371− if o.CredentialSource.IMDSv2SessionTokenURL != "" {
372− awsProvider.IMDSv2SessionTokenURL = o.CredentialSource.IMDSv2SessionTokenURL
373− }
374−
375− return awsProvider, nil
376− }
377− } else if o.CredentialSource.File != "" {
378− return &fileSubjectProvider{File: o.CredentialSource.File, Format: o.CredentialSource.Format}, nil
379− } else if o.CredentialSource.URL != "" {
380− return &urlSubjectProvider{
381− URL: o.CredentialSource.URL,
382− Headers: o.CredentialSource.Headers,
383− Format: o.CredentialSource.Format,
384− Client: o.Client,
385− Logger: logger,
386− }, nil
387− } else if o.CredentialSource.Executable != nil {
388− ec := o.CredentialSource.Executable
389− if ec.Command == "" {
390− return nil, errors.New("credentials: missing `command` field — executable command must be provided")
391− }
392−
393− execProvider := &executableSubjectProvider{}
394− execProvider.Command = ec.Command
395− if ec.TimeoutMillis == 0 {
396− execProvider.Timeout = executableDefaultTimeout
397− } else {
398− execProvider.Timeout = time.Duration(ec.TimeoutMillis) * time.Millisecond
399− if execProvider.Timeout < timeoutMinimum || execProvider.Timeout > timeoutMaximum {
400− return nil, fmt.Errorf("credentials: invalid `timeout_millis` field — executable timeout must be between %v and %v seconds", timeoutMinimum.Seconds(), timeoutMaximum.Seconds())
401− }
402− }
403− execProvider.OutputFile = ec.OutputFile
404− execProvider.client = o.Client
405− execProvider.opts = o
406− execProvider.env = runtimeEnvironment{}
407− return execProvider, nil
408− } else if o.CredentialSource.Certificate != nil {
409− cert := o.CredentialSource.Certificate
410− if !cert.UseDefaultCertificateConfig && cert.CertificateConfigLocation == "" {
411− return nil, errors.New("credentials: \"certificate\" object must either specify a certificate_config_location or use_default_certificate_config should be true")
412− }
413− if cert.UseDefaultCertificateConfig && cert.CertificateConfigLocation != "" {
414− return nil, errors.New("credentials: \"certificate\" object cannot specify both a certificate_config_location and use_default_certificate_config=true")
415− }
416− return &x509Provider{}, nil
417− }
418− return nil, errors.New("credentials: unable to parse credential source")
419−}
420−
421−func getGoogHeaderValue(conf *Options, p subjectTokenProvider) string {
422− return fmt.Sprintf("gl-go/%s auth/%s google-byoid-sdk source/%s sa-impersonation/%t config-lifetime/%t",
423− goVersion(),
424− "unknown",
425− p.providerType(),
426− conf.ServiceAccountImpersonationURL != "",
427− conf.ServiceAccountImpersonationLifetimeSeconds != 0)
428−}
vendor/cloud.google.com/go/auth/credentials/internal/externalaccount/file_provider.godeleted−78
@@ -1,78 +0,0 @@
1−// Copyright 2023 Google LLC
2−//
3−// Licensed under the Apache License, Version 2.0 (the "License");
4−// you may not use this file except in compliance with the License.
5−// You may obtain a copy of the License at
6−//
7−// http://www.apache.org/licenses/LICENSE-2.0
8−//
9−// Unless required by applicable law or agreed to in writing, software
10−// distributed under the License is distributed on an "AS IS" BASIS,
11−// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12−// See the License for the specific language governing permissions and
13−// limitations under the License.
14−
15−package externalaccount
16−
17−import (
18− "bytes"
19− "context"
20− "encoding/json"
21− "errors"
22− "fmt"
23− "os"
24−
25− "cloud.google.com/go/auth/internal"
26− "cloud.google.com/go/auth/internal/credsfile"
27−)
28−
29−const (
30− fileProviderType = "file"
31−)
32−
33−type fileSubjectProvider struct {
34− File string
35− Format *credsfile.Format
36−}
37−
38−func (sp *fileSubjectProvider) subjectToken(context.Context) (string, error) {
39− tokenFile, err := os.Open(sp.File)
40− if err != nil {
41− return "", fmt.Errorf("credentials: failed to open credential file %q: %w", sp.File, err)
42− }
43− defer tokenFile.Close()
44− tokenBytes, err := internal.ReadAll(tokenFile)
45− if err != nil {
46− return "", fmt.Errorf("credentials: failed to read credential file: %w", err)
47− }
48− tokenBytes = bytes.TrimSpace(tokenBytes)
49−
50− if sp.Format == nil {
51− return string(tokenBytes), nil
52− }
53− switch sp.Format.Type {
54− case fileTypeJSON:
55− jsonData := make(map[string]interface{})
56− err = json.Unmarshal(tokenBytes, &jsonData)
57− if err != nil {
58− return "", fmt.Errorf("credentials: failed to unmarshal subject token file: %w", err)
59− }
60− val, ok := jsonData[sp.Format.SubjectTokenFieldName]
61− if !ok {
62− return "", errors.New("credentials: provided subject_token_field_name not found in credentials")
63− }
64− token, ok := val.(string)
65− if !ok {
66− return "", errors.New("credentials: improperly formatted subject token")
67− }
68− return token, nil
69− case fileTypeText:
70− return string(tokenBytes), nil
71− default:
72− return "", errors.New("credentials: invalid credential_source file format type: " + sp.Format.Type)
73− }
74−}
75−
76−func (sp *fileSubjectProvider) providerType() string {
77− return fileProviderType
78−}
vendor/cloud.google.com/go/auth/credentials/internal/externalaccount/info.godeleted−74
@@ -1,74 +0,0 @@
1−// Copyright 2023 Google LLC
2−//
3−// Licensed under the Apache License, Version 2.0 (the "License");
4−// you may not use this file except in compliance with the License.
5−// You may obtain a copy of the License at
6−//
7−// http://www.apache.org/licenses/LICENSE-2.0
8−//
9−// Unless required by applicable law or agreed to in writing, software
10−// distributed under the License is distributed on an "AS IS" BASIS,
11−// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12−// See the License for the specific language governing permissions and
13−// limitations under the License.
14−
15−package externalaccount
16−
17−import (
18− "runtime"
19− "strings"
20− "unicode"
21−)
22−
23−var (
24− // version is a package internal global variable for testing purposes.
25− version = runtime.Version
26−)
27−
28−// versionUnknown is only used when the runtime version cannot be determined.
29−const versionUnknown = "UNKNOWN"
30−
31−// goVersion returns a Go runtime version derived from the runtime environment
32−// that is modified to be suitable for reporting in a header, meaning it has no
33−// whitespace. If it is unable to determine the Go runtime version, it returns
34−// versionUnknown.
35−func goVersion() string {
36− const develPrefix = "devel +"
37−
38− s := version()
39− if strings.HasPrefix(s, develPrefix) {
40− s = s[len(develPrefix):]
41− if p := strings.IndexFunc(s, unicode.IsSpace); p >= 0 {
42− s = s[:p]
43− }
44− return s
45− } else if p := strings.IndexFunc(s, unicode.IsSpace); p >= 0 {
46− s = s[:p]
47− }
48−
49− notSemverRune := func(r rune) bool {
50− return !strings.ContainsRune("0123456789.", r)
51− }
52−
53− if strings.HasPrefix(s, "go1") {
54− s = s[2:]
55− var prerelease string
56− if p := strings.IndexFunc(s, notSemverRune); p >= 0 {
57− s, prerelease = s[:p], s[p:]
58− }
59− if strings.HasSuffix(s, ".") {
60− s += "0"
61− } else if strings.Count(s, ".") < 2 {
62− s += ".0"
63− }
64− if prerelease != "" {
65− // Some release candidates already have a dash in them.
66− if !strings.HasPrefix(prerelease, "-") {
67− prerelease = "-" + prerelease
68− }
69− s += prerelease
70− }
71− return s
72− }
73− return versionUnknown
74−}
vendor/cloud.google.com/go/auth/credentials/internal/externalaccount/programmatic_provider.godeleted−30
@@ -1,30 +0,0 @@
1−// Copyright 2024 Google LLC
2−//
3−// Licensed under the Apache License, Version 2.0 (the "License");
4−// you may not use this file except in compliance with the License.
5−// You may obtain a copy of the License at
6−//
7−// http://www.apache.org/licenses/LICENSE-2.0
8−//
9−// Unless required by applicable law or agreed to in writing, software
10−// distributed under the License is distributed on an "AS IS" BASIS,
11−// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12−// See the License for the specific language governing permissions and
13−// limitations under the License.
14−
15−package externalaccount
16−
17−import "context"
18−
19−type programmaticProvider struct {
20− opts *RequestOptions
21− stp SubjectTokenProvider
22−}
23−
24−func (pp *programmaticProvider) providerType() string {
25− return programmaticProviderType
26−}
27−
28−func (pp *programmaticProvider) subjectToken(ctx context.Context) (string, error) {
29− return pp.stp.SubjectToken(ctx, pp.opts)
30−}
vendor/cloud.google.com/go/auth/credentials/internal/externalaccount/url_provider.godeleted−93
@@ -1,93 +0,0 @@
1−// Copyright 2023 Google LLC
2−//
3−// Licensed under the Apache License, Version 2.0 (the "License");
4−// you may not use this file except in compliance with the License.
5−// You may obtain a copy of the License at
6−//
7−// http://www.apache.org/licenses/LICENSE-2.0
8−//
9−// Unless required by applicable law or agreed to in writing, software
10−// distributed under the License is distributed on an "AS IS" BASIS,
11−// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12−// See the License for the specific language governing permissions and
13−// limitations under the License.
14−
15−package externalaccount
16−
17−import (
18− "context"
19− "encoding/json"
20− "errors"
21− "fmt"
22− "log/slog"
23− "net/http"
24−
25− "cloud.google.com/go/auth/internal"
26− "cloud.google.com/go/auth/internal/credsfile"
27− "github.com/googleapis/gax-go/v2/internallog"
28−)
29−
30−const (
31− fileTypeText = "text"
32− fileTypeJSON = "json"
33− urlProviderType = "url"
34− programmaticProviderType = "programmatic"
35− x509ProviderType = "x509"
36−)
37−
38−type urlSubjectProvider struct {
39− URL string
40− Headers map[string]string
41− Format *credsfile.Format
42− Client *http.Client
43− Logger *slog.Logger
44−}
45−
46−func (sp *urlSubjectProvider) subjectToken(ctx context.Context) (string, error) {
47− req, err := http.NewRequestWithContext(ctx, "GET", sp.URL, nil)
48− if err != nil {
49− return "", fmt.Errorf("credentials: HTTP request for URL-sourced credential failed: %w", err)
50− }
51−
52− for key, val := range sp.Headers {
53− req.Header.Add(key, val)
54− }
55− sp.Logger.DebugContext(ctx, "url subject token request", "request", internallog.HTTPRequest(req, nil))
56− resp, body, err := internal.DoRequest(sp.Client, req)
57− if err != nil {
58− return "", fmt.Errorf("credentials: invalid response when retrieving subject token: %w", err)
59− }
60− sp.Logger.DebugContext(ctx, "url subject token response", "response", internallog.HTTPResponse(resp, body))
61− if c := resp.StatusCode; c < http.StatusOK || c >= http.StatusMultipleChoices {
62− return "", fmt.Errorf("credentials: status code %d: %s", c, body)
63− }
64−
65− if sp.Format == nil {
66− return string(body), nil
67− }
68− switch sp.Format.Type {
69− case "json":
70− jsonData := make(map[string]interface{})
71− err = json.Unmarshal(body, &jsonData)
72− if err != nil {
73− return "", fmt.Errorf("credentials: failed to unmarshal subject token file: %w", err)
74− }
75− val, ok := jsonData[sp.Format.SubjectTokenFieldName]
76− if !ok {
77− return "", errors.New("credentials: provided subject_token_field_name not found in credentials")
78− }
79− token, ok := val.(string)
80− if !ok {
81− return "", errors.New("credentials: improperly formatted subject token")
82− }
83− return token, nil
84− case fileTypeText:
85− return string(body), nil
86− default:
87− return "", errors.New("credentials: invalid credential_source file format type: " + sp.Format.Type)
88− }
89−}
90−
91−func (sp *urlSubjectProvider) providerType() string {
92− return urlProviderType
93−}
vendor/cloud.google.com/go/auth/credentials/internal/externalaccount/x509_provider.godeleted−63
@@ -1,63 +0,0 @@
1−// Copyright 2024 Google LLC
2−//
3−// Licensed under the Apache License, Version 2.0 (the "License");
4−// you may not use this file except in compliance with the License.
5−// You may obtain a copy of the License at
6−//
7−// http://www.apache.org/licenses/LICENSE-2.0
8−//
9−// Unless required by applicable law or agreed to in writing, software
10−// distributed under the License is distributed on an "AS IS" BASIS,
11−// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12−// See the License for the specific language governing permissions and
13−// limitations under the License.
14−
15−package externalaccount
16−
17−import (
18− "context"
19− "crypto/tls"
20− "net/http"
21− "time"
22−
23− "cloud.google.com/go/auth/internal/transport/cert"
24−)
25−
26−// x509Provider implements the subjectTokenProvider type for
27−// x509 workload identity credentials. Because x509 credentials
28−// rely on an mTLS connection to represent the 3rd party identity
29−// rather than a subject token, this provider will always return
30−// an empty string when a subject token is requested by the external account
31−// token provider.
32−type x509Provider struct {
33−}
34−
35−func (xp *x509Provider) providerType() string {
36− return x509ProviderType
37−}
38−
39−func (xp *x509Provider) subjectToken(ctx context.Context) (string, error) {
40− return "", nil
41−}
42−
43−// createX509Client creates a new client that is configured with mTLS, using the
44−// certificate configuration specified in the credential source.
45−func createX509Client(certificateConfigLocation string) (*http.Client, error) {
46− certProvider, err := cert.NewWorkloadX509CertProvider(certificateConfigLocation)
47− if err != nil {
48− return nil, err
49− }
50− trans := http.DefaultTransport.(*http.Transport).Clone()
51−
52− trans.TLSClientConfig = &tls.Config{
53− GetClientCertificate: certProvider,
54− }
55−
56− // Create a client with default settings plus the X509 workload cert and key.
57− client := &http.Client{
58− Transport: trans,
59− Timeout: 30 * time.Second,
60− }
61−
62− return client, nil
63−}
vendor/cloud.google.com/go/auth/credentials/internal/externalaccountuser/externalaccountuser.godeleted−115
@@ -1,115 +0,0 @@
1−// Copyright 2023 Google LLC
2−//
3−// Licensed under the Apache License, Version 2.0 (the "License");
4−// you may not use this file except in compliance with the License.
5−// You may obtain a copy of the License at
6−//
7−// http://www.apache.org/licenses/LICENSE-2.0
8−//
9−// Unless required by applicable law or agreed to in writing, software
10−// distributed under the License is distributed on an "AS IS" BASIS,
11−// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12−// See the License for the specific language governing permissions and
13−// limitations under the License.
14−
15−package externalaccountuser
16−
17−import (
18− "context"
19− "errors"
20− "log/slog"
21− "net/http"
22− "time"
23−
24− "cloud.google.com/go/auth"
25− "cloud.google.com/go/auth/credentials/internal/stsexchange"
26− "cloud.google.com/go/auth/internal"
27− "github.com/googleapis/gax-go/v2/internallog"
28−)
29−
30−// Options stores the configuration for fetching tokens with external authorized
31−// user credentials.
32−type Options struct {
33− // Audience is the Secure Token Service (STS) audience which contains the
34− // resource name for the workforce pool and the provider identifier in that
35− // pool.
36− Audience string
37− // RefreshToken is the OAuth 2.0 refresh token.
38− RefreshToken string
39− // TokenURL is the STS token exchange endpoint for refresh.
40− TokenURL string
41− // TokenInfoURL is the STS endpoint URL for token introspection. Optional.
42− TokenInfoURL string
43− // ClientID is only required in conjunction with ClientSecret, as described
44− // below.
45− ClientID string
46− // ClientSecret is currently only required if token_info endpoint also needs
47− // to be called with the generated a cloud access token. When provided, STS
48− // will be called with additional basic authentication using client_id as
49− // username and client_secret as password.
50− ClientSecret string
51− // Scopes contains the desired scopes for the returned access token.
52− Scopes []string
53−
54− // Client for token request.
55− Client *http.Client
56− // Logger for logging.
57− Logger *slog.Logger
58−}
59−
60−func (c *Options) validate() bool {
61− return c.ClientID != "" && c.ClientSecret != "" && c.RefreshToken != "" && c.TokenURL != ""
62−}
63−
64−// NewTokenProvider returns a [cloud.google.com/go/auth.TokenProvider]
65−// configured with the provided options.
66−func NewTokenProvider(opts *Options) (auth.TokenProvider, error) {
67− if !opts.validate() {
68− return nil, errors.New("credentials: invalid external_account_authorized_user configuration")
69− }
70−
71− tp := &tokenProvider{
72− o: opts,
73− }
74− return auth.NewCachedTokenProvider(tp, nil), nil
75−}
76−
77−type tokenProvider struct {
78− o *Options
79−}
80−
81−func (tp *tokenProvider) Token(ctx context.Context) (*auth.Token, error) {
82− opts := tp.o
83−
84− clientAuth := stsexchange.ClientAuthentication{
85− AuthStyle: auth.StyleInHeader,
86− ClientID: opts.ClientID,
87− ClientSecret: opts.ClientSecret,
88− }
89− headers := make(http.Header)
90− headers.Set("Content-Type", "application/x-www-form-urlencoded")
91− stsResponse, err := stsexchange.RefreshAccessToken(ctx, &stsexchange.Options{
92− Client: opts.Client,
93− Endpoint: opts.TokenURL,
94− RefreshToken: opts.RefreshToken,
95− Authentication: clientAuth,
96− Headers: headers,
97− Logger: internallog.New(tp.o.Logger),
98− })
99− if err != nil {
100− return nil, err
101− }
102− if stsResponse.ExpiresIn < 0 {
103− return nil, errors.New("credentials: invalid expiry from security token service")
104− }
105−
106− // guarded by the wrapping with CachedTokenProvider
107− if stsResponse.RefreshToken != "" {
108− opts.RefreshToken = stsResponse.RefreshToken
109− }
110− return &auth.Token{
111− Value: stsResponse.AccessToken,
112− Expiry: time.Now().UTC().Add(time.Duration(stsResponse.ExpiresIn) * time.Second),
113− Type: internal.TokenTypeBearer,
114− }, nil
115−}
vendor/cloud.google.com/go/auth/credentials/internal/gdch/gdch.godeleted−191
@@ -1,191 +0,0 @@
1−// Copyright 2023 Google LLC
2−//
3−// Licensed under the Apache License, Version 2.0 (the "License");
4−// you may not use this file except in compliance with the License.
5−// You may obtain a copy of the License at
6−//
7−// http://www.apache.org/licenses/LICENSE-2.0
8−//
9−// Unless required by applicable law or agreed to in writing, software
10−// distributed under the License is distributed on an "AS IS" BASIS,
11−// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12−// See the License for the specific language governing permissions and
13−// limitations under the License.
14−
15−package gdch
16−
17−import (
18− "context"
19− "crypto"
20− "crypto/tls"
21− "crypto/x509"
22− "encoding/json"
23− "errors"
24− "fmt"
25− "log/slog"
26− "net/http"
27− "net/url"
28− "os"
29− "strings"
30− "time"
31−
32− "cloud.google.com/go/auth"
33− "cloud.google.com/go/auth/internal"
34− "cloud.google.com/go/auth/internal/credsfile"
35− "cloud.google.com/go/auth/internal/jwt"
36− "github.com/googleapis/gax-go/v2/internallog"
37−)
38−
39−const (
40− // GrantType is the grant type for the token request.
41− GrantType = "urn:ietf:params:oauth:token-type:token-exchange"
42− requestTokenType = "urn:ietf:params:oauth:token-type:access_token"
43− subjectTokenType = "urn:k8s:params:oauth:token-type:serviceaccount"
44−)
45−
46−var (
47− gdchSupportFormatVersions map[string]bool = map[string]bool{
48− "1": true,
49− }
50−)
51−
52−// Options for [NewTokenProvider].
53−type Options struct {
54− STSAudience string
55− Client *http.Client
56− Logger *slog.Logger
57−}
58−
59−// NewTokenProvider returns a [cloud.google.com/go/auth.TokenProvider] from a
60−// GDCH cred file.
61−func NewTokenProvider(f *credsfile.GDCHServiceAccountFile, o *Options) (auth.TokenProvider, error) {
62− if !gdchSupportFormatVersions[f.FormatVersion] {
63− return nil, fmt.Errorf("credentials: unsupported gdch_service_account format %q", f.FormatVersion)
64− }
65− if o.STSAudience == "" {
66− return nil, errors.New("credentials: STSAudience must be set for the GDCH auth flows")
67− }
68− signer, err := internal.ParseKey([]byte(f.PrivateKey))
69− if err != nil {
70− return nil, err
71− }
72− certPool, err := loadCertPool(f.CertPath)
73− if err != nil {
74− return nil, err
75− }
76−
77− tp := gdchProvider{
78− serviceIdentity: fmt.Sprintf("system:serviceaccount:%s:%s", f.Project, f.Name),
79− tokenURL: f.TokenURL,
80− aud: o.STSAudience,
81− signer: signer,
82− pkID: f.PrivateKeyID,
83− certPool: certPool,
84− client: o.Client,
85− logger: internallog.New(o.Logger),
86− }
87− return tp, nil
88−}
89−
90−func loadCertPool(path string) (*x509.CertPool, error) {
91− pool := x509.NewCertPool()
92− pem, err := os.ReadFile(path)
93− if err != nil {
94− return nil, fmt.Errorf("credentials: failed to read certificate: %w", err)
95− }
96− pool.AppendCertsFromPEM(pem)
97− return pool, nil
98−}
99−
100−type gdchProvider struct {
101− serviceIdentity string
102− tokenURL string
103− aud string
104− signer crypto.Signer
105− pkID string
106− certPool *x509.CertPool
107−
108− client *http.Client
109− logger *slog.Logger
110−}
111−
112−func (g gdchProvider) Token(ctx context.Context) (*auth.Token, error) {
113− addCertToTransport(g.client, g.certPool)
114− iat := time.Now()
115− exp := iat.Add(time.Hour)
116− claims := jwt.Claims{
117− Iss: g.serviceIdentity,
118− Sub: g.serviceIdentity,
119− Aud: g.tokenURL,
120− Iat: iat.Unix(),
121− Exp: exp.Unix(),
122− }
123− h := jwt.Header{
124− Algorithm: jwt.HeaderAlgRSA256,
125− Type: jwt.HeaderType,
126− KeyID: string(g.pkID),
127− }
128− payload, err := jwt.EncodeJWS(&h, &claims, g.signer)
129− if err != nil {
130− return nil, err
131− }
132− v := url.Values{}
133− v.Set("grant_type", GrantType)
134− v.Set("audience", g.aud)
135− v.Set("requested_token_type", requestTokenType)
136− v.Set("subject_token", payload)
137− v.Set("subject_token_type", subjectTokenType)
138−
139− req, err := http.NewRequestWithContext(ctx, "POST", g.tokenURL, strings.NewReader(v.Encode()))
140− if err != nil {
141− return nil, err
142− }
143− req.Header.Set("Content-Type", "application/x-www-form-urlencoded")
144− g.logger.DebugContext(ctx, "gdch token request", "request", internallog.HTTPRequest(req, []byte(v.Encode())))
145− resp, body, err := internal.DoRequest(g.client, req)
146− if err != nil {
147− return nil, fmt.Errorf("credentials: cannot fetch token: %w", err)
148− }
149− g.logger.DebugContext(ctx, "gdch token response", "response", internallog.HTTPResponse(resp, body))
150− if c := resp.StatusCode; c < http.StatusOK || c > http.StatusMultipleChoices {
151− return nil, &auth.Error{
152− Response: resp,
153− Body: body,
154− }
155− }
156−
157− var tokenRes struct {
158− AccessToken string `json:"access_token"`
159− TokenType string `json:"token_type"`
160− ExpiresIn int64 `json:"expires_in"` // relative seconds from now
161− }
162− if err := json.Unmarshal(body, &tokenRes); err != nil {
163− return nil, fmt.Errorf("credentials: cannot fetch token: %w", err)
164− }
165− token := &auth.Token{
166− Value: tokenRes.AccessToken,
167− Type: tokenRes.TokenType,
168− }
169− raw := make(map[string]interface{})
170− json.Unmarshal(body, &raw) // no error checks for optional fields
171− token.Metadata = raw
172−
173− if secs := tokenRes.ExpiresIn; secs > 0 {
174− token.Expiry = time.Now().Add(time.Duration(secs) * time.Second)
175− }
176− return token, nil
177−}
178−
179−// addCertToTransport makes a best effort attempt at adding in the cert info to
180−// the client. It tries to keep all configured transport settings if the
181−// underlying transport is an http.Transport. Or else it overwrites the
182−// transport with defaults adding in the certs.
183−func addCertToTransport(hc *http.Client, certPool *x509.CertPool) {
184− trans, ok := hc.Transport.(*http.Transport)
185− if !ok {
186− trans = http.DefaultTransport.(*http.Transport).Clone()
187− }
188− trans.TLSClientConfig = &tls.Config{
189− RootCAs: certPool,
190− }
191−}
vendor/cloud.google.com/go/auth/credentials/internal/impersonate/impersonate.godeleted−156
@@ -1,156 +0,0 @@
1−// Copyright 2023 Google LLC
2−//
3−// Licensed under the Apache License, Version 2.0 (the "License");
4−// you may not use this file except in compliance with the License.
5−// You may obtain a copy of the License at
6−//
7−// http://www.apache.org/licenses/LICENSE-2.0
8−//
9−// Unless required by applicable law or agreed to in writing, software
10−// distributed under the License is distributed on an "AS IS" BASIS,
11−// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12−// See the License for the specific language governing permissions and
13−// limitations under the License.
14−
15−package impersonate
16−
17−import (
18− "bytes"
19− "context"
20− "encoding/json"
21− "errors"
22− "fmt"
23− "log/slog"
24− "net/http"
25− "time"
26−
27− "cloud.google.com/go/auth"
28− "cloud.google.com/go/auth/internal"
29− "github.com/googleapis/gax-go/v2/internallog"
30−)
31−
32−const (
33− defaultTokenLifetime = "3600s"
34− authHeaderKey = "Authorization"
35−)
36−
37−// generateAccesstokenReq is used for service account impersonation
38−type generateAccessTokenReq struct {
39− Delegates []string `json:"delegates,omitempty"`
40− Lifetime string `json:"lifetime,omitempty"`
41− Scope []string `json:"scope,omitempty"`
42−}
43−
44−type impersonateTokenResponse struct {
45− AccessToken string `json:"accessToken"`
46− ExpireTime string `json:"expireTime"`
47−}
48−
49−// NewTokenProvider uses a source credential, stored in Ts, to request an access token to the provided URL.
50−// Scopes can be defined when the access token is requested.
51−func NewTokenProvider(opts *Options) (auth.TokenProvider, error) {
52− if err := opts.validate(); err != nil {
53− return nil, err
54− }
55− return opts, nil
56−}
57−
58−// Options for [NewTokenProvider].
59−type Options struct {
60− // Tp is the source credential used to generate a token on the
61− // impersonated service account. Required.
62− Tp auth.TokenProvider
63−
64− // URL is the endpoint to call to generate a token
65− // on behalf of the service account. Required.
66− URL string
67− // Scopes that the impersonated credential should have. Required.
68− Scopes []string
69− // Delegates are the service account email addresses in a delegation chain.
70− // Each service account must be granted roles/iam.serviceAccountTokenCreator
71− // on the next service account in the chain. Optional.
72− Delegates []string
73− // TokenLifetimeSeconds is the number of seconds the impersonation token will
74− // be valid for. Defaults to 1 hour if unset. Optional.
75− TokenLifetimeSeconds int
76− // Client configures the underlying client used to make network requests
77− // when fetching tokens. Required.
78− Client *http.Client
79− // Logger is used for debug logging. If provided, logging will be enabled
80− // at the loggers configured level. By default logging is disabled unless
81− // enabled by setting GOOGLE_SDK_GO_LOGGING_LEVEL in which case a default
82− // logger will be used. Optional.
83− Logger *slog.Logger
84−}
85−
86−func (o *Options) validate() error {
87− if o.Tp == nil {
88− return errors.New("credentials: missing required 'source_credentials' field in impersonated credentials")
89− }
90− if o.URL == "" {
91− return errors.New("credentials: missing required 'service_account_impersonation_url' field in impersonated credentials")
92− }
93− return nil
94−}
95−
96−// Token performs the exchange to get a temporary service account token to allow access to GCP.
97−func (o *Options) Token(ctx context.Context) (*auth.Token, error) {
98− logger := internallog.New(o.Logger)
99− lifetime := defaultTokenLifetime
100− if o.TokenLifetimeSeconds != 0 {
101− lifetime = fmt.Sprintf("%ds", o.TokenLifetimeSeconds)
102− }
103− reqBody := generateAccessTokenReq{
104− Lifetime: lifetime,
105− Scope: o.Scopes,
106− Delegates: o.Delegates,
107− }
108− b, err := json.Marshal(reqBody)
109− if err != nil {
110− return nil, fmt.Errorf("credentials: unable to marshal request: %w", err)
111− }
112− req, err := http.NewRequestWithContext(ctx, "POST", o.URL, bytes.NewReader(b))
113− if err != nil {
114− return nil, fmt.Errorf("credentials: unable to create impersonation request: %w", err)
115− }
116− req.Header.Set("Content-Type", "application/json")
117− if err := setAuthHeader(ctx, o.Tp, req); err != nil {
118− return nil, err
119− }
120− logger.DebugContext(ctx, "impersonated token request", "request", internallog.HTTPRequest(req, b))
121− resp, body, err := internal.DoRequest(o.Client, req)
122− if err != nil {
123− return nil, fmt.Errorf("credentials: unable to generate access token: %w", err)
124− }
125− logger.DebugContext(ctx, "impersonated token response", "response", internallog.HTTPResponse(resp, body))
126− if c := resp.StatusCode; c < http.StatusOK || c >= http.StatusMultipleChoices {
127− return nil, fmt.Errorf("credentials: status code %d: %s", c, body)
128− }
129−
130− var accessTokenResp impersonateTokenResponse
131− if err := json.Unmarshal(body, &accessTokenResp); err != nil {
132− return nil, fmt.Errorf("credentials: unable to parse response: %w", err)
133− }
134− expiry, err := time.Parse(time.RFC3339, accessTokenResp.ExpireTime)
135− if err != nil {
136− return nil, fmt.Errorf("credentials: unable to parse expiry: %w", err)
137− }
138− return &auth.Token{
139− Value: accessTokenResp.AccessToken,
140− Expiry: expiry,
141− Type: internal.TokenTypeBearer,
142− }, nil
143−}
144−
145−func setAuthHeader(ctx context.Context, tp auth.TokenProvider, r *http.Request) error {
146− t, err := tp.Token(ctx)
147− if err != nil {
148− return err
149− }
150− typ := t.Type
151− if typ == "" {
152− typ = internal.TokenTypeBearer
153− }
154− r.Header.Set(authHeaderKey, typ+" "+t.Value)
155− return nil
156−}
vendor/cloud.google.com/go/auth/credentials/internal/stsexchange/sts_exchange.godeleted−167
@@ -1,167 +0,0 @@
1−// Copyright 2023 Google LLC
2−//
3−// Licensed under the Apache License, Version 2.0 (the "License");
4−// you may not use this file except in compliance with the License.
5−// You may obtain a copy of the License at
6−//
7−// http://www.apache.org/licenses/LICENSE-2.0
8−//
9−// Unless required by applicable law or agreed to in writing, software
10−// distributed under the License is distributed on an "AS IS" BASIS,
11−// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12−// See the License for the specific language governing permissions and
13−// limitations under the License.
14−
15−package stsexchange
16−
17−import (
18− "context"
19− "encoding/base64"
20− "encoding/json"
21− "fmt"
22− "log/slog"
23− "net/http"
24− "net/url"
25− "strconv"
26− "strings"
27−
28− "cloud.google.com/go/auth"
29− "cloud.google.com/go/auth/internal"
30− "github.com/googleapis/gax-go/v2/internallog"
31−)
32−
33−const (
34− // GrantType for a sts exchange.
35− GrantType = "urn:ietf:params:oauth:grant-type:token-exchange"
36− // TokenType for a sts exchange.
37− TokenType = "urn:ietf:params:oauth:token-type:access_token"
38−
39− jwtTokenType = "urn:ietf:params:oauth:token-type:jwt"
40−)
41−
42−// Options stores the configuration for making an sts exchange request.
43−type Options struct {
44− Client *http.Client
45− Logger *slog.Logger
46− Endpoint string
47− Request *TokenRequest
48− Authentication ClientAuthentication
49− Headers http.Header
50− // ExtraOpts are optional fields marshalled into the `options` field of the
51− // request body.
52− ExtraOpts map[string]interface{}
53− RefreshToken string
54−}
55−
56−// RefreshAccessToken performs the token exchange using a refresh token flow.
57−func RefreshAccessToken(ctx context.Context, opts *Options) (*TokenResponse, error) {
58− data := url.Values{}
59− data.Set("grant_type", "refresh_token")
60− data.Set("refresh_token", opts.RefreshToken)
61− return doRequest(ctx, opts, data)
62−}
63−
64−// ExchangeToken performs an oauth2 token exchange with the provided endpoint.
65−func ExchangeToken(ctx context.Context, opts *Options) (*TokenResponse, error) {
66− data := url.Values{}
67− data.Set("audience", opts.Request.Audience)
68− data.Set("grant_type", GrantType)
69− data.Set("requested_token_type", TokenType)
70− data.Set("subject_token_type", opts.Request.SubjectTokenType)
71− data.Set("subject_token", opts.Request.SubjectToken)
72− data.Set("scope", strings.Join(opts.Request.Scope, " "))
73− if opts.ExtraOpts != nil {
74− opts, err := json.Marshal(opts.ExtraOpts)
75− if err != nil {
76− return nil, fmt.Errorf("credentials: failed to marshal additional options: %w", err)
77− }
78− data.Set("options", string(opts))
79− }
80− return doRequest(ctx, opts, data)
81−}
82−
83−func doRequest(ctx context.Context, opts *Options, data url.Values) (*TokenResponse, error) {
84− opts.Authentication.InjectAuthentication(data, opts.Headers)
85− encodedData := data.Encode()
86− logger := internallog.New(opts.Logger)
87−
88− req, err := http.NewRequestWithContext(ctx, "POST", opts.Endpoint, strings.NewReader(encodedData))
89− if err != nil {
90− return nil, fmt.Errorf("credentials: failed to properly build http request: %w", err)
91−
92− }
93− for key, list := range opts.Headers {
94− for _, val := range list {
95− req.Header.Add(key, val)
96− }
97− }
98− req.Header.Set("Content-Length", strconv.Itoa(len(encodedData)))
99−
100− logger.DebugContext(ctx, "sts token request", "request", internallog.HTTPRequest(req, []byte(encodedData)))
101− resp, body, err := internal.DoRequest(opts.Client, req)
102− if err != nil {
103− return nil, fmt.Errorf("credentials: invalid response from Secure Token Server: %w", err)
104− }
105− logger.DebugContext(ctx, "sts token response", "response", internallog.HTTPResponse(resp, body))
106− if c := resp.StatusCode; c < http.StatusOK || c > http.StatusMultipleChoices {
107− return nil, fmt.Errorf("credentials: status code %d: %s", c, body)
108− }
109− var stsResp TokenResponse
110− if err := json.Unmarshal(body, &stsResp); err != nil {
111− return nil, fmt.Errorf("credentials: failed to unmarshal response body from Secure Token Server: %w", err)
112− }
113−
114− return &stsResp, nil
115−}
116−
117−// TokenRequest contains fields necessary to make an oauth2 token
118−// exchange.
119−type TokenRequest struct {
120− ActingParty struct {
121− ActorToken string
122− ActorTokenType string
123− }
124− GrantType string
125− Resource string
126− Audience string
127− Scope []string
128− RequestedTokenType string
129− SubjectToken string
130− SubjectTokenType string
131−}
132−
133−// TokenResponse is used to decode the remote server response during
134−// an oauth2 token exchange.
135−type TokenResponse struct {
136− AccessToken string `json:"access_token"`
137− IssuedTokenType string `json:"issued_token_type"`
138− TokenType string `json:"token_type"`
139− ExpiresIn int `json:"expires_in"`
140− Scope string `json:"scope"`
141− RefreshToken string `json:"refresh_token"`
142−}
143−
144−// ClientAuthentication represents an OAuth client ID and secret and the
145−// mechanism for passing these credentials as stated in rfc6749#2.3.1.
146−type ClientAuthentication struct {
147− AuthStyle auth.Style
148− ClientID string
149− ClientSecret string
150−}
151−
152−// InjectAuthentication is used to add authentication to a Secure Token Service
153−// exchange request. It modifies either the passed url.Values or http.Header
154−// depending on the desired authentication format.
155−func (c *ClientAuthentication) InjectAuthentication(values url.Values, headers http.Header) {
156− if c.ClientID == "" || c.ClientSecret == "" || values == nil || headers == nil {
157− return
158− }
159− switch c.AuthStyle {
160− case auth.StyleInHeader:
161− plainHeader := c.ClientID + ":" + c.ClientSecret
162− headers.Set("Authorization", "Basic "+base64.StdEncoding.EncodeToString([]byte(plainHeader)))
163− default:
164− values.Set("client_id", c.ClientID)
165− values.Set("client_secret", c.ClientSecret)
166− }
167−}
vendor/cloud.google.com/go/auth/credentials/selfsignedjwt.godeleted−89
@@ -1,89 +0,0 @@
1−// Copyright 2023 Google LLC
2−//
3−// Licensed under the Apache License, Version 2.0 (the "License");
4−// you may not use this file except in compliance with the License.
5−// You may obtain a copy of the License at
6−//
7−// http://www.apache.org/licenses/LICENSE-2.0
8−//
9−// Unless required by applicable law or agreed to in writing, software
10−// distributed under the License is distributed on an "AS IS" BASIS,
11−// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12−// See the License for the specific language governing permissions and
13−// limitations under the License.
14−
15−package credentials
16−
17−import (
18− "context"
19− "crypto"
20− "errors"
21− "fmt"
22− "log/slog"
23− "strings"
24− "time"
25−
26− "cloud.google.com/go/auth"
27− "cloud.google.com/go/auth/internal"
28− "cloud.google.com/go/auth/internal/credsfile"
29− "cloud.google.com/go/auth/internal/jwt"
30−)
31−
32−var (
33− // for testing
34− now func() time.Time = time.Now
35−)
36−
37−// configureSelfSignedJWT uses the private key in the service account to create
38−// a JWT without making a network call.
39−func configureSelfSignedJWT(f *credsfile.ServiceAccountFile, opts *DetectOptions) (auth.TokenProvider, error) {
40− if len(opts.scopes()) == 0 && opts.Audience == "" {
41− return nil, errors.New("credentials: both scopes and audience are empty")
42− }
43− signer, err := internal.ParseKey([]byte(f.PrivateKey))
44− if err != nil {
45− return nil, fmt.Errorf("credentials: could not parse key: %w", err)
46− }
47− return &selfSignedTokenProvider{
48− email: f.ClientEmail,
49− audience: opts.Audience,
50− scopes: opts.scopes(),
51− signer: signer,
52− pkID: f.PrivateKeyID,
53− logger: opts.logger(),
54− }, nil
55−}
56−
57−type selfSignedTokenProvider struct {
58− email string
59− audience string
60− scopes []string
61− signer crypto.Signer
62− pkID string
63− logger *slog.Logger
64−}
65−
66−func (tp *selfSignedTokenProvider) Token(context.Context) (*auth.Token, error) {
67− iat := now()
68− exp := iat.Add(time.Hour)
69− scope := strings.Join(tp.scopes, " ")
70− c := &jwt.Claims{
71− Iss: tp.email,
72− Sub: tp.email,
73− Aud: tp.audience,
74− Scope: scope,
75− Iat: iat.Unix(),
76− Exp: exp.Unix(),
77− }
78− h := &jwt.Header{
79− Algorithm: jwt.HeaderAlgRSA256,
80− Type: jwt.HeaderType,
81− KeyID: string(tp.pkID),
82− }
83− tok, err := jwt.EncodeJWS(h, c, tp.signer)
84− if err != nil {
85− return nil, fmt.Errorf("credentials: could not encode JWT: %w", err)
86− }
87− tp.logger.Debug("created self-signed JWT", "token", tok)
88− return &auth.Token{Value: tok, Type: internal.TokenTypeBearer, Expiry: exp}, nil
89−}
vendor/cloud.google.com/go/auth/httptransport/httptransport.godeleted−247
@@ -1,247 +0,0 @@
1−// Copyright 2023 Google LLC
2−//
3−// Licensed under the Apache License, Version 2.0 (the "License");
4−// you may not use this file except in compliance with the License.
5−// You may obtain a copy of the License at
6−//
7−// http://www.apache.org/licenses/LICENSE-2.0
8−//
9−// Unless required by applicable law or agreed to in writing, software
10−// distributed under the License is distributed on an "AS IS" BASIS,
11−// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12−// See the License for the specific language governing permissions and
13−// limitations under the License.
14−
15−// Package httptransport provides functionality for managing HTTP client
16−// connections to Google Cloud services.
17−package httptransport
18−
19−import (
20− "crypto/tls"
21− "errors"
22− "fmt"
23− "log/slog"
24− "net/http"
25−
26− "cloud.google.com/go/auth"
27− detect "cloud.google.com/go/auth/credentials"
28− "cloud.google.com/go/auth/internal"
29− "cloud.google.com/go/auth/internal/transport"
30− "github.com/googleapis/gax-go/v2/internallog"
31−)
32−
33−// ClientCertProvider is a function that returns a TLS client certificate to be
34−// used when opening TLS connections. It follows the same semantics as
35−// [crypto/tls.Config.GetClientCertificate].
36−type ClientCertProvider = func(*tls.CertificateRequestInfo) (*tls.Certificate, error)
37−
38−// Options used to configure a [net/http.Client] from [NewClient].
39−type Options struct {
40− // DisableTelemetry disables default telemetry (OpenTelemetry). An example
41− // reason to do so would be to bind custom telemetry that overrides the
42− // defaults.
43− DisableTelemetry bool
44− // DisableAuthentication specifies that no authentication should be used. It
45− // is suitable only for testing and for accessing public resources, like
46− // public Google Cloud Storage buckets.
47− DisableAuthentication bool
48− // Headers are extra HTTP headers that will be appended to every outgoing
49− // request.
50− Headers http.Header
51− // BaseRoundTripper overrides the base transport used for serving requests.
52− // If specified ClientCertProvider is ignored.
53− BaseRoundTripper http.RoundTripper
54− // Endpoint overrides the default endpoint to be used for a service.
55− Endpoint string
56− // APIKey specifies an API key to be used as the basis for authentication.
57− // If set DetectOpts are ignored.
58− APIKey string
59− // Credentials used to add Authorization header to all requests. If set
60− // DetectOpts are ignored.
61− Credentials *auth.Credentials
62− // ClientCertProvider is a function that returns a TLS client certificate to
63− // be used when opening TLS connections. It follows the same semantics as
64− // crypto/tls.Config.GetClientCertificate.
65− ClientCertProvider ClientCertProvider
66− // DetectOpts configures settings for detect Application Default
67− // Credentials.
68− DetectOpts *detect.DetectOptions
69− // UniverseDomain is the default service domain for a given Cloud universe.
70− // The default value is "googleapis.com". This is the universe domain
71− // configured for the client, which will be compared to the universe domain
72− // that is separately configured for the credentials.
73− UniverseDomain string
74− // Logger is used for debug logging. If provided, logging will be enabled
75− // at the loggers configured level. By default logging is disabled unless
76− // enabled by setting GOOGLE_SDK_GO_LOGGING_LEVEL in which case a default
77− // logger will be used. Optional.
78− Logger *slog.Logger
79−
80− // InternalOptions are NOT meant to be set directly by consumers of this
81− // package, they should only be set by generated client code.
82− InternalOptions *InternalOptions
83−}
84−
85−func (o *Options) validate() error {
86− if o == nil {
87− return errors.New("httptransport: opts required to be non-nil")
88− }
89− if o.InternalOptions != nil && o.InternalOptions.SkipValidation {
90− return nil
91− }
92− hasCreds := o.APIKey != "" ||
93− o.Credentials != nil ||
94− (o.DetectOpts != nil && len(o.DetectOpts.CredentialsJSON) > 0) ||
95− (o.DetectOpts != nil && o.DetectOpts.CredentialsFile != "")
96− if o.DisableAuthentication && hasCreds {
97− return errors.New("httptransport: DisableAuthentication is incompatible with options that set or detect credentials")
98− }
99− return nil
100−}
101−
102−// client returns the client a user set for the detect options or nil if one was
103−// not set.
104−func (o *Options) client() *http.Client {
105− if o.DetectOpts != nil && o.DetectOpts.Client != nil {
106− return o.DetectOpts.Client
107− }
108− return nil
109−}
110−
111−func (o *Options) logger() *slog.Logger {
112− return internallog.New(o.Logger)
113−}
114−
115−func (o *Options) resolveDetectOptions() *detect.DetectOptions {
116− io := o.InternalOptions
117− // soft-clone these so we are not updating a ref the user holds and may reuse
118− do := transport.CloneDetectOptions(o.DetectOpts)
119−
120− // If scoped JWTs are enabled user provided an aud, allow self-signed JWT.
121− if (io != nil && io.EnableJWTWithScope) || do.Audience != "" {
122− do.UseSelfSignedJWT = true
123− }
124− // Only default scopes if user did not also set an audience.
125− if len(do.Scopes) == 0 && do.Audience == "" && io != nil && len(io.DefaultScopes) > 0 {
126− do.Scopes = make([]string, len(io.DefaultScopes))
127− copy(do.Scopes, io.DefaultScopes)
128− }
129− if len(do.Scopes) == 0 && do.Audience == "" && io != nil {
130− do.Audience = o.InternalOptions.DefaultAudience
131− }
132− if o.ClientCertProvider != nil {
133− tlsConfig := &tls.Config{
134− GetClientCertificate: o.ClientCertProvider,
135− }
136− do.Client = transport.DefaultHTTPClientWithTLS(tlsConfig)
137− do.TokenURL = detect.GoogleMTLSTokenURL
138− }
139− if do.Logger == nil {
140− do.Logger = o.logger()
141− }
142− return do
143−}
144−
145−// InternalOptions are only meant to be set by generated client code. These are
146−// not meant to be set directly by consumers of this package. Configuration in
147−// this type is considered EXPERIMENTAL and may be removed at any time in the
148−// future without warning.
149−type InternalOptions struct {
150− // EnableJWTWithScope specifies if scope can be used with self-signed JWT.
151− EnableJWTWithScope bool
152− // DefaultAudience specifies a default audience to be used as the audience
153− // field ("aud") for the JWT token authentication.
154− DefaultAudience string
155− // DefaultEndpointTemplate combined with UniverseDomain specifies the
156− // default endpoint.
157− DefaultEndpointTemplate string
158− // DefaultMTLSEndpoint specifies the default mTLS endpoint.
159− DefaultMTLSEndpoint string
160− // DefaultScopes specifies the default OAuth2 scopes to be used for a
161− // service.
162− DefaultScopes []string
163− // SkipValidation bypasses validation on Options. It should only be used
164− // internally for clients that need more control over their transport.
165− SkipValidation bool
166− // SkipUniverseDomainValidation skips the verification that the universe
167− // domain configured for the client matches the universe domain configured
168− // for the credentials. It should only be used internally for clients that
169− // need more control over their transport. The default is false.
170− SkipUniverseDomainValidation bool
171−}
172−
173−// AddAuthorizationMiddleware adds a middleware to the provided client's
174−// transport that sets the Authorization header with the value produced by the
175−// provided [cloud.google.com/go/auth.Credentials]. An error is returned only
176−// if client or creds is nil.
177−//
178−// This function does not support setting a universe domain value on the client.
179−func AddAuthorizationMiddleware(client *http.Client, creds *auth.Credentials) error {
180− if client == nil || creds == nil {
181− return fmt.Errorf("httptransport: client and tp must not be nil")
182− }
183− base := client.Transport
184− if base == nil {
185− if dt, ok := http.DefaultTransport.(*http.Transport); ok {
186− base = dt.Clone()
187− } else {
188− // Directly reuse the DefaultTransport if the application has
189− // replaced it with an implementation of RoundTripper other than
190− // http.Transport.
191− base = http.DefaultTransport
192− }
193− }
194− client.Transport = &authTransport{
195− creds: creds,
196− base: base,
197− }
198− return nil
199−}
200−
201−// NewClient returns a [net/http.Client] that can be used to communicate with a
202−// Google cloud service, configured with the provided [Options]. It
203−// automatically appends Authorization headers to all outgoing requests.
204−func NewClient(opts *Options) (*http.Client, error) {
205− if err := opts.validate(); err != nil {
206− return nil, err
207− }
208−
209− tOpts := &transport.Options{
210− Endpoint: opts.Endpoint,
211− ClientCertProvider: opts.ClientCertProvider,
212− Client: opts.client(),
213− UniverseDomain: opts.UniverseDomain,
214− Logger: opts.logger(),
215− }
216− if io := opts.InternalOptions; io != nil {
217− tOpts.DefaultEndpointTemplate = io.DefaultEndpointTemplate
218− tOpts.DefaultMTLSEndpoint = io.DefaultMTLSEndpoint
219− }
220− clientCertProvider, dialTLSContext, err := transport.GetHTTPTransportConfig(tOpts)
221− if err != nil {
222− return nil, err
223− }
224− baseRoundTripper := opts.BaseRoundTripper
225− if baseRoundTripper == nil {
226− baseRoundTripper = defaultBaseTransport(clientCertProvider, dialTLSContext)
227− }
228− // Ensure the token exchange transport uses the same ClientCertProvider as the API transport.
229− opts.ClientCertProvider = clientCertProvider
230− trans, err := newTransport(baseRoundTripper, opts)
231− if err != nil {
232− return nil, err
233− }
234− return &http.Client{
235− Transport: trans,
236− }, nil
237−}
238−
239−// SetAuthHeader uses the provided token to set the Authorization header on a
240−// request. If the token.Type is empty, the type is assumed to be Bearer.
241−func SetAuthHeader(token *auth.Token, req *http.Request) {
242− typ := token.Type
243− if typ == "" {
244− typ = internal.TokenTypeBearer
245− }
246− req.Header.Set("Authorization", typ+" "+token.Value)
247−}
vendor/cloud.google.com/go/auth/httptransport/transport.godeleted−234
@@ -1,234 +0,0 @@
1−// Copyright 2023 Google LLC
2−//
3−// Licensed under the Apache License, Version 2.0 (the "License");
4−// you may not use this file except in compliance with the License.
5−// You may obtain a copy of the License at
6−//
7−// http://www.apache.org/licenses/LICENSE-2.0
8−//
9−// Unless required by applicable law or agreed to in writing, software
10−// distributed under the License is distributed on an "AS IS" BASIS,
11−// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12−// See the License for the specific language governing permissions and
13−// limitations under the License.
14−
15−package httptransport
16−
17−import (
18− "context"
19− "crypto/tls"
20− "net"
21− "net/http"
22− "os"
23− "time"
24−
25− "cloud.google.com/go/auth"
26− "cloud.google.com/go/auth/credentials"
27− "cloud.google.com/go/auth/internal"
28− "cloud.google.com/go/auth/internal/transport"
29− "cloud.google.com/go/auth/internal/transport/cert"
30− "go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp"
31− "golang.org/x/net/http2"
32−)
33−
34−const (
35− quotaProjectHeaderKey = "X-goog-user-project"
36−)
37−
38−func newTransport(base http.RoundTripper, opts *Options) (http.RoundTripper, error) {
39− var headers = opts.Headers
40− ht := &headerTransport{
41− base: base,
42− headers: headers,
43− }
44− var trans http.RoundTripper = ht
45− trans = addOpenTelemetryTransport(trans, opts)
46− switch {
47− case opts.DisableAuthentication:
48− // Do nothing.
49− case opts.APIKey != "":
50− qp := internal.GetQuotaProject(nil, opts.Headers.Get(quotaProjectHeaderKey))
51− if qp != "" {
52− if headers == nil {
53− headers = make(map[string][]string, 1)
54− }
55− headers.Set(quotaProjectHeaderKey, qp)
56− }
57− trans = &apiKeyTransport{
58− Transport: trans,
59− Key: opts.APIKey,
60− }
61− default:
62− var creds *auth.Credentials
63− if opts.Credentials != nil {
64− creds = opts.Credentials
65− } else {
66− var err error
67− creds, err = credentials.DetectDefault(opts.resolveDetectOptions())
68− if err != nil {
69− return nil, err
70− }
71− }
72− qp, err := creds.QuotaProjectID(context.Background())
73− if err != nil {
74− return nil, err
75− }
76− if qp != "" {
77− if headers == nil {
78− headers = make(map[string][]string, 1)
79− }
80− // Don't overwrite user specified quota
81− if v := headers.Get(quotaProjectHeaderKey); v == "" {
82− headers.Set(quotaProjectHeaderKey, qp)
83− }
84− }
85− var skipUD bool
86− if iOpts := opts.InternalOptions; iOpts != nil {
87− skipUD = iOpts.SkipUniverseDomainValidation
88− }
89− creds.TokenProvider = auth.NewCachedTokenProvider(creds.TokenProvider, nil)
90− trans = &authTransport{
91− base: trans,
92− creds: creds,
93− clientUniverseDomain: opts.UniverseDomain,
94− skipUniverseDomainValidation: skipUD,
95− }
96− }
97− return trans, nil
98−}
99−
100−// defaultBaseTransport returns the base HTTP transport.
101−// On App Engine, this is urlfetch.Transport.
102−// Otherwise, use a default transport, taking most defaults from
103−// http.DefaultTransport.
104−// If TLSCertificate is available, set TLSClientConfig as well.
105−func defaultBaseTransport(clientCertSource cert.Provider, dialTLSContext func(context.Context, string, string) (net.Conn, error)) http.RoundTripper {
106− defaultTransport, ok := http.DefaultTransport.(*http.Transport)
107− if !ok {
108− defaultTransport = transport.BaseTransport()
109− }
110− trans := defaultTransport.Clone()
111− trans.MaxIdleConnsPerHost = 100
112−
113− if clientCertSource != nil {
114− trans.TLSClientConfig = &tls.Config{
115− GetClientCertificate: clientCertSource,
116− }
117− }
118− if dialTLSContext != nil {
119− // If DialTLSContext is set, TLSClientConfig wil be ignored
120− trans.DialTLSContext = dialTLSContext
121− }
122−
123− // Configures the ReadIdleTimeout HTTP/2 option for the
124− // transport. This allows broken idle connections to be pruned more quickly,
125− // preventing the client from attempting to re-use connections that will no
126− // longer work.
127− http2Trans, err := http2.ConfigureTransports(trans)
128− if err == nil {
129− http2Trans.ReadIdleTimeout = time.Second * 31
130− }
131−
132− return trans
133−}
134−
135−type apiKeyTransport struct {
136− // Key is the API Key to set on requests.
137− Key string
138− // Transport is the underlying HTTP transport.
139− // If nil, http.DefaultTransport is used.
140− Transport http.RoundTripper
141−}
142−
143−func (t *apiKeyTransport) RoundTrip(req *http.Request) (*http.Response, error) {
144− newReq := *req
145− args := newReq.URL.Query()
146− args.Set("key", t.Key)
147− newReq.URL.RawQuery = args.Encode()
148− return t.Transport.RoundTrip(&newReq)
149−}
150−
151−type headerTransport struct {
152− headers http.Header
153− base http.RoundTripper
154−}
155−
156−func (t *headerTransport) RoundTrip(req *http.Request) (*http.Response, error) {
157− rt := t.base
158− newReq := *req
159− newReq.Header = make(http.Header)
160− for k, vv := range req.Header {
161− newReq.Header[k] = vv
162− }
163−
164− for k, v := range t.headers {
165− newReq.Header[k] = v
166− }
167−
168− return rt.RoundTrip(&newReq)
169−}
170−
171−func addOpenTelemetryTransport(trans http.RoundTripper, opts *Options) http.RoundTripper {
172− if opts.DisableTelemetry {
173− return trans
174− }
175− return otelhttp.NewTransport(trans)
176−}
177−
178−type authTransport struct {
179− creds *auth.Credentials
180− base http.RoundTripper
181− clientUniverseDomain string
182− skipUniverseDomainValidation bool
183−}
184−
185−// getClientUniverseDomain returns the default service domain for a given Cloud
186−// universe, with the following precedence:
187−//
188−// 1. A non-empty option.WithUniverseDomain or similar client option.
189−// 2. A non-empty environment variable GOOGLE_CLOUD_UNIVERSE_DOMAIN.
190−// 3. The default value "googleapis.com".
191−//
192−// This is the universe domain configured for the client, which will be compared
193−// to the universe domain that is separately configured for the credentials.
194−func (t *authTransport) getClientUniverseDomain() string {
195− if t.clientUniverseDomain != "" {
196− return t.clientUniverseDomain
197− }
198− if envUD := os.Getenv(internal.UniverseDomainEnvVar); envUD != "" {
199− return envUD
200− }
201− return internal.DefaultUniverseDomain
202−}
203−
204−// RoundTrip authorizes and authenticates the request with an
205−// access token from Transport's Source. Per the RoundTripper contract we must
206−// not modify the initial request, so we clone it, and we must close the body
207−// on any errors that happens during our token logic.
208−func (t *authTransport) RoundTrip(req *http.Request) (*http.Response, error) {
209− reqBodyClosed := false
210− if req.Body != nil {
211− defer func() {
212− if !reqBodyClosed {
213− req.Body.Close()
214− }
215− }()
216− }
217− token, err := t.creds.Token(req.Context())
218− if err != nil {
219− return nil, err
220− }
221− if !t.skipUniverseDomainValidation && token.MetadataString("auth.google.tokenSource") != "compute-metadata" {
222− credentialsUniverseDomain, err := t.creds.UniverseDomain(req.Context())
223− if err != nil {
224− return nil, err
225− }
226− if err := transport.ValidateUniverseDomain(t.getClientUniverseDomain(), credentialsUniverseDomain); err != nil {
227− return nil, err
228− }
229− }
230− req2 := req.Clone(req.Context())
231− SetAuthHeader(token, req2)
232− reqBodyClosed = true
233− return t.base.RoundTrip(req2)
234−}
vendor/cloud.google.com/go/auth/internal/credsfile/credsfile.godeleted−107
@@ -1,107 +0,0 @@
1−// Copyright 2023 Google LLC
2−//
3−// Licensed under the Apache License, Version 2.0 (the "License");
4−// you may not use this file except in compliance with the License.
5−// You may obtain a copy of the License at
6−//
7−// http://www.apache.org/licenses/LICENSE-2.0
8−//
9−// Unless required by applicable law or agreed to in writing, software
10−// distributed under the License is distributed on an "AS IS" BASIS,
11−// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12−// See the License for the specific language governing permissions and
13−// limitations under the License.
14−
15−// Package credsfile is meant to hide implementation details from the pubic
16−// surface of the detect package. It should not import any other packages in
17−// this module. It is located under the main internal package so other
18−// sub-packages can use these parsed types as well.
19−package credsfile
20−
21−import (
22− "os"
23− "os/user"
24− "path/filepath"
25− "runtime"
26−)
27−
28−const (
29− // GoogleAppCredsEnvVar is the environment variable for setting the
30− // application default credentials.
31− GoogleAppCredsEnvVar = "GOOGLE_APPLICATION_CREDENTIALS"
32− userCredsFilename = "application_default_credentials.json"
33−)
34−
35−// CredentialType represents different credential filetypes Google credentials
36−// can be.
37−type CredentialType int
38−
39−const (
40− // UnknownCredType is an unidentified file type.
41− UnknownCredType CredentialType = iota
42− // UserCredentialsKey represents a user creds file type.
43− UserCredentialsKey
44− // ServiceAccountKey represents a service account file type.
45− ServiceAccountKey
46− // ImpersonatedServiceAccountKey represents a impersonated service account
47− // file type.
48− ImpersonatedServiceAccountKey
49− // ExternalAccountKey represents a external account file type.
50− ExternalAccountKey
51− // GDCHServiceAccountKey represents a GDCH file type.
52− GDCHServiceAccountKey
53− // ExternalAccountAuthorizedUserKey represents a external account authorized
54− // user file type.
55− ExternalAccountAuthorizedUserKey
56−)
57−
58−// parseCredentialType returns the associated filetype based on the parsed
59−// typeString provided.
60−func parseCredentialType(typeString string) CredentialType {
61− switch typeString {
62− case "service_account":
63− return ServiceAccountKey
64− case "authorized_user":
65− return UserCredentialsKey
66− case "impersonated_service_account":
67− return ImpersonatedServiceAccountKey
68− case "external_account":
69− return ExternalAccountKey
70− case "external_account_authorized_user":
71− return ExternalAccountAuthorizedUserKey
72− case "gdch_service_account":
73− return GDCHServiceAccountKey
74− default:
75− return UnknownCredType
76− }
77−}
78−
79−// GetFileNameFromEnv returns the override if provided or detects a filename
80−// from the environment.
81−func GetFileNameFromEnv(override string) string {
82− if override != "" {
83− return override
84− }
85− return os.Getenv(GoogleAppCredsEnvVar)
86−}
87−
88−// GetWellKnownFileName tries to locate the filepath for the user credential
89−// file based on the environment.
90−func GetWellKnownFileName() string {
91− if runtime.GOOS == "windows" {
92− return filepath.Join(os.Getenv("APPDATA"), "gcloud", userCredsFilename)
93− }
94− return filepath.Join(guessUnixHomeDir(), ".config", "gcloud", userCredsFilename)
95−}
96−
97−// guessUnixHomeDir default to checking for HOME, but not all unix systems have
98−// this set, do have a fallback.
99−func guessUnixHomeDir() string {
100− if v := os.Getenv("HOME"); v != "" {
101− return v
102− }
103− if u, err := user.Current(); err == nil {
104− return u.HomeDir
105− }
106− return ""
107−}
vendor/cloud.google.com/go/auth/internal/credsfile/filetype.godeleted−157
@@ -1,157 +0,0 @@
1−// Copyright 2023 Google LLC
2−//
3−// Licensed under the Apache License, Version 2.0 (the "License");
4−// you may not use this file except in compliance with the License.
5−// You may obtain a copy of the License at
6−//
7−// http://www.apache.org/licenses/LICENSE-2.0
8−//
9−// Unless required by applicable law or agreed to in writing, software
10−// distributed under the License is distributed on an "AS IS" BASIS,
11−// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12−// See the License for the specific language governing permissions and
13−// limitations under the License.
14−
15−package credsfile
16−
17−import (
18− "encoding/json"
19−)
20−
21−// Config3LO is the internals of a client creds file.
22−type Config3LO struct {
23− ClientID string `json:"client_id"`
24− ClientSecret string `json:"client_secret"`
25− RedirectURIs []string `json:"redirect_uris"`
26− AuthURI string `json:"auth_uri"`
27− TokenURI string `json:"token_uri"`
28−}
29−
30−// ClientCredentialsFile representation.
31−type ClientCredentialsFile struct {
32− Web *Config3LO `json:"web"`
33− Installed *Config3LO `json:"installed"`
34− UniverseDomain string `json:"universe_domain"`
35−}
36−
37−// ServiceAccountFile representation.
38−type ServiceAccountFile struct {
39− Type string `json:"type"`
40− ProjectID string `json:"project_id"`
41− PrivateKeyID string `json:"private_key_id"`
42− PrivateKey string `json:"private_key"`
43− ClientEmail string `json:"client_email"`
44− ClientID string `json:"client_id"`
45− AuthURL string `json:"auth_uri"`
46− TokenURL string `json:"token_uri"`
47− UniverseDomain string `json:"universe_domain"`
48−}
49−
50−// UserCredentialsFile representation.
51−type UserCredentialsFile struct {
52− Type string `json:"type"`
53− ClientID string `json:"client_id"`
54− ClientSecret string `json:"client_secret"`
55− QuotaProjectID string `json:"quota_project_id"`
56− RefreshToken string `json:"refresh_token"`
57− UniverseDomain string `json:"universe_domain"`
58−}
59−
60−// ExternalAccountFile representation.
61−type ExternalAccountFile struct {
62− Type string `json:"type"`
63− ClientID string `json:"client_id"`
64− ClientSecret string `json:"client_secret"`
65− Audience string `json:"audience"`
66− SubjectTokenType string `json:"subject_token_type"`
67− ServiceAccountImpersonationURL string `json:"service_account_impersonation_url"`
68− TokenURL string `json:"token_url"`
69− CredentialSource *CredentialSource `json:"credential_source,omitempty"`
70− TokenInfoURL string `json:"token_info_url"`
71− ServiceAccountImpersonation *ServiceAccountImpersonationInfo `json:"service_account_impersonation,omitempty"`
72− QuotaProjectID string `json:"quota_project_id"`
73− WorkforcePoolUserProject string `json:"workforce_pool_user_project"`
74− UniverseDomain string `json:"universe_domain"`
75−}
76−
77−// ExternalAccountAuthorizedUserFile representation.
78−type ExternalAccountAuthorizedUserFile struct {
79− Type string `json:"type"`
80− Audience string `json:"audience"`
81− ClientID string `json:"client_id"`
82− ClientSecret string `json:"client_secret"`
83− RefreshToken string `json:"refresh_token"`
84− TokenURL string `json:"token_url"`
85− TokenInfoURL string `json:"token_info_url"`
86− RevokeURL string `json:"revoke_url"`
87− QuotaProjectID string `json:"quota_project_id"`
88− UniverseDomain string `json:"universe_domain"`
89−}
90−
91−// CredentialSource stores the information necessary to retrieve the credentials for the STS exchange.
92−//
93−// One field amongst File, URL, Certificate, and Executable should be filled, depending on the kind of credential in question.
94−// The EnvironmentID should start with AWS if being used for an AWS credential.
95−type CredentialSource struct {
96− File string `json:"file"`
97− URL string `json:"url"`
98− Headers map[string]string `json:"headers"`
99− Executable *ExecutableConfig `json:"executable,omitempty"`
100− Certificate *CertificateConfig `json:"certificate"`
101− EnvironmentID string `json:"environment_id"` // TODO: Make type for this
102− RegionURL string `json:"region_url"`
103− RegionalCredVerificationURL string `json:"regional_cred_verification_url"`
104− CredVerificationURL string `json:"cred_verification_url"`
105− IMDSv2SessionTokenURL string `json:"imdsv2_session_token_url"`
106− Format *Format `json:"format,omitempty"`
107−}
108−
109−// Format describes the format of a [CredentialSource].
110−type Format struct {
111− // Type is either "text" or "json". When not provided "text" type is assumed.
112− Type string `json:"type"`
113− // SubjectTokenFieldName is only required for JSON format. This would be "access_token" for azure.
114− SubjectTokenFieldName string `json:"subject_token_field_name"`
115−}
116−
117−// ExecutableConfig represents the command to run for an executable
118−// [CredentialSource].
119−type ExecutableConfig struct {
120− Command string `json:"command"`
121− TimeoutMillis int `json:"timeout_millis"`
122− OutputFile string `json:"output_file"`
123−}
124−
125−// CertificateConfig represents the options used to set up X509 based workload
126−// [CredentialSource]
127−type CertificateConfig struct {
128− UseDefaultCertificateConfig bool `json:"use_default_certificate_config"`
129− CertificateConfigLocation string `json:"certificate_config_location"`
130−}
131−
132−// ServiceAccountImpersonationInfo has impersonation configuration.
133−type ServiceAccountImpersonationInfo struct {
134− TokenLifetimeSeconds int `json:"token_lifetime_seconds"`
135−}
136−
137−// ImpersonatedServiceAccountFile representation.
138−type ImpersonatedServiceAccountFile struct {
139− Type string `json:"type"`
140− ServiceAccountImpersonationURL string `json:"service_account_impersonation_url"`
141− Delegates []string `json:"delegates"`
142− CredSource json.RawMessage `json:"source_credentials"`
143− UniverseDomain string `json:"universe_domain"`
144−}
145−
146−// GDCHServiceAccountFile represents the Google Distributed Cloud Hosted (GDCH) service identity file.
147−type GDCHServiceAccountFile struct {
148− Type string `json:"type"`
149− FormatVersion string `json:"format_version"`
150− Project string `json:"project"`
151− Name string `json:"name"`
152− CertPath string `json:"ca_cert_path"`
153− PrivateKeyID string `json:"private_key_id"`
154− PrivateKey string `json:"private_key"`
155− TokenURL string `json:"token_uri"`
156− UniverseDomain string `json:"universe_domain"`
157−}
vendor/cloud.google.com/go/auth/internal/credsfile/parse.godeleted−98
@@ -1,98 +0,0 @@
1−// Copyright 2023 Google LLC
2−//
3−// Licensed under the Apache License, Version 2.0 (the "License");
4−// you may not use this file except in compliance with the License.
5−// You may obtain a copy of the License at
6−//
7−// http://www.apache.org/licenses/LICENSE-2.0
8−//
9−// Unless required by applicable law or agreed to in writing, software
10−// distributed under the License is distributed on an "AS IS" BASIS,
11−// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12−// See the License for the specific language governing permissions and
13−// limitations under the License.
14−
15−package credsfile
16−
17−import (
18− "encoding/json"
19−)
20−
21−// ParseServiceAccount parses bytes into a [ServiceAccountFile].
22−func ParseServiceAccount(b []byte) (*ServiceAccountFile, error) {
23− var f *ServiceAccountFile
24− if err := json.Unmarshal(b, &f); err != nil {
25− return nil, err
26− }
27− return f, nil
28−}
29−
30−// ParseClientCredentials parses bytes into a
31−// [credsfile.ClientCredentialsFile].
32−func ParseClientCredentials(b []byte) (*ClientCredentialsFile, error) {
33− var f *ClientCredentialsFile
34− if err := json.Unmarshal(b, &f); err != nil {
35− return nil, err
36− }
37− return f, nil
38−}
39−
40−// ParseUserCredentials parses bytes into a [UserCredentialsFile].
41−func ParseUserCredentials(b []byte) (*UserCredentialsFile, error) {
42− var f *UserCredentialsFile
43− if err := json.Unmarshal(b, &f); err != nil {
44− return nil, err
45− }
46− return f, nil
47−}
48−
49−// ParseExternalAccount parses bytes into a [ExternalAccountFile].
50−func ParseExternalAccount(b []byte) (*ExternalAccountFile, error) {
51− var f *ExternalAccountFile
52− if err := json.Unmarshal(b, &f); err != nil {
53− return nil, err
54− }
55− return f, nil
56−}
57−
58−// ParseExternalAccountAuthorizedUser parses bytes into a
59−// [ExternalAccountAuthorizedUserFile].
60−func ParseExternalAccountAuthorizedUser(b []byte) (*ExternalAccountAuthorizedUserFile, error) {
61− var f *ExternalAccountAuthorizedUserFile
62− if err := json.Unmarshal(b, &f); err != nil {
63− return nil, err
64− }
65− return f, nil
66−}
67−
68−// ParseImpersonatedServiceAccount parses bytes into a
69−// [ImpersonatedServiceAccountFile].
70−func ParseImpersonatedServiceAccount(b []byte) (*ImpersonatedServiceAccountFile, error) {
71− var f *ImpersonatedServiceAccountFile
72− if err := json.Unmarshal(b, &f); err != nil {
73− return nil, err
74− }
75− return f, nil
76−}
77−
78−// ParseGDCHServiceAccount parses bytes into a [GDCHServiceAccountFile].
79−func ParseGDCHServiceAccount(b []byte) (*GDCHServiceAccountFile, error) {
80− var f *GDCHServiceAccountFile
81− if err := json.Unmarshal(b, &f); err != nil {
82− return nil, err
83− }
84− return f, nil
85−}
86−
87−type fileTypeChecker struct {
88− Type string `json:"type"`
89−}
90−
91−// ParseFileType determines the [CredentialType] based on bytes provided.
92−func ParseFileType(b []byte) (CredentialType, error) {
93− var f fileTypeChecker
94− if err := json.Unmarshal(b, &f); err != nil {
95− return 0, err
96− }
97− return parseCredentialType(f.Type), nil
98−}
vendor/cloud.google.com/go/auth/internal/internal.godeleted−219
@@ -1,219 +0,0 @@
1−// Copyright 2023 Google LLC
2−//
3−// Licensed under the Apache License, Version 2.0 (the "License");
4−// you may not use this file except in compliance with the License.
5−// You may obtain a copy of the License at
6−//
7−// http://www.apache.org/licenses/LICENSE-2.0
8−//
9−// Unless required by applicable law or agreed to in writing, software
10−// distributed under the License is distributed on an "AS IS" BASIS,
11−// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12−// See the License for the specific language governing permissions and
13−// limitations under the License.
14−
15−package internal
16−
17−import (
18− "context"
19− "crypto"
20− "crypto/x509"
21− "encoding/json"
22− "encoding/pem"
23− "errors"
24− "fmt"
25− "io"
26− "net/http"
27− "os"
28− "sync"
29− "time"
30−
31− "cloud.google.com/go/compute/metadata"
32−)
33−
34−const (
35− // TokenTypeBearer is the auth header prefix for bearer tokens.
36− TokenTypeBearer = "Bearer"
37−
38− // QuotaProjectEnvVar is the environment variable for setting the quota
39− // project.
40− QuotaProjectEnvVar = "GOOGLE_CLOUD_QUOTA_PROJECT"
41− // UniverseDomainEnvVar is the environment variable for setting the default
42− // service domain for a given Cloud universe.
43− UniverseDomainEnvVar = "GOOGLE_CLOUD_UNIVERSE_DOMAIN"
44− projectEnvVar = "GOOGLE_CLOUD_PROJECT"
45− maxBodySize = 1 << 20
46−
47− // DefaultUniverseDomain is the default value for universe domain.
48− // Universe domain is the default service domain for a given Cloud universe.
49− DefaultUniverseDomain = "googleapis.com"
50−)
51−
52−type clonableTransport interface {
53− Clone() *http.Transport
54−}
55−
56−// DefaultClient returns an [http.Client] with some defaults set. If
57−// the current [http.DefaultTransport] is a [clonableTransport], as
58−// is the case for an [*http.Transport], the clone will be used.
59−// Otherwise the [http.DefaultTransport] is used directly.
60−func DefaultClient() *http.Client {
61− if transport, ok := http.DefaultTransport.(clonableTransport); ok {
62− return &http.Client{
63− Transport: transport.Clone(),
64− Timeout: 30 * time.Second,
65− }
66− }
67−
68− return &http.Client{
69− Transport: http.DefaultTransport,
70− Timeout: 30 * time.Second,
71− }
72−}
73−
74−// ParseKey converts the binary contents of a private key file
75−// to an crypto.Signer. It detects whether the private key is in a
76−// PEM container or not. If so, it extracts the the private key
77−// from PEM container before conversion. It only supports PEM
78−// containers with no passphrase.
79−func ParseKey(key []byte) (crypto.Signer, error) {
80− block, _ := pem.Decode(key)
81− if block != nil {
82− key = block.Bytes
83− }
84− var parsedKey crypto.PrivateKey
85− var err error
86− parsedKey, err = x509.ParsePKCS8PrivateKey(key)
87− if err != nil {
88− parsedKey, err = x509.ParsePKCS1PrivateKey(key)
89− if err != nil {
90− return nil, fmt.Errorf("private key should be a PEM or plain PKCS1 or PKCS8: %w", err)
91− }
92− }
93− parsed, ok := parsedKey.(crypto.Signer)
94− if !ok {
95− return nil, errors.New("private key is not a signer")
96− }
97− return parsed, nil
98−}
99−
100−// GetQuotaProject retrieves quota project with precedence being: override,
101−// environment variable, creds json file.
102−func GetQuotaProject(b []byte, override string) string {
103− if override != "" {
104− return override
105− }
106− if env := os.Getenv(QuotaProjectEnvVar); env != "" {
107− return env
108− }
109− if b == nil {
110− return ""
111− }
112− var v struct {
113− QuotaProject string `json:"quota_project_id"`
114− }
115− if err := json.Unmarshal(b, &v); err != nil {
116− return ""
117− }
118− return v.QuotaProject
119−}
120−
121−// GetProjectID retrieves project with precedence being: override,
122−// environment variable, creds json file.
123−func GetProjectID(b []byte, override string) string {
124− if override != "" {
125− return override
126− }
127− if env := os.Getenv(projectEnvVar); env != "" {
128− return env
129− }
130− if b == nil {
131− return ""
132− }
133− var v struct {
134− ProjectID string `json:"project_id"` // standard service account key
135− Project string `json:"project"` // gdch key
136− }
137− if err := json.Unmarshal(b, &v); err != nil {
138− return ""
139− }
140− if v.ProjectID != "" {
141− return v.ProjectID
142− }
143− return v.Project
144−}
145−
146−// DoRequest executes the provided req with the client. It reads the response
147−// body, closes it, and returns it.
148−func DoRequest(client *http.Client, req *http.Request) (*http.Response, []byte, error) {
149− resp, err := client.Do(req)
150− if err != nil {
151− return nil, nil, err
152− }
153− defer resp.Body.Close()
154− body, err := ReadAll(io.LimitReader(resp.Body, maxBodySize))
155− if err != nil {
156− return nil, nil, err
157− }
158− return resp, body, nil
159−}
160−
161−// ReadAll consumes the whole reader and safely reads the content of its body
162−// with some overflow protection.
163−func ReadAll(r io.Reader) ([]byte, error) {
164− return io.ReadAll(io.LimitReader(r, maxBodySize))
165−}
166−
167−// StaticCredentialsProperty is a helper for creating static credentials
168−// properties.
169−func StaticCredentialsProperty(s string) StaticProperty {
170− return StaticProperty(s)
171−}
172−
173−// StaticProperty always returns that value of the underlying string.
174−type StaticProperty string
175−
176−// GetProperty loads the properly value provided the given context.
177−func (p StaticProperty) GetProperty(context.Context) (string, error) {
178− return string(p), nil
179−}
180−
181−// ComputeUniverseDomainProvider fetches the credentials universe domain from
182−// the google cloud metadata service.
183−type ComputeUniverseDomainProvider struct {
184− MetadataClient *metadata.Client
185− universeDomainOnce sync.Once
186− universeDomain string
187− universeDomainErr error
188−}
189−
190−// GetProperty fetches the credentials universe domain from the google cloud
191−// metadata service.
192−func (c *ComputeUniverseDomainProvider) GetProperty(ctx context.Context) (string, error) {
193− c.universeDomainOnce.Do(func() {
194− c.universeDomain, c.universeDomainErr = getMetadataUniverseDomain(ctx, c.MetadataClient)
195− })
196− if c.universeDomainErr != nil {
197− return "", c.universeDomainErr
198− }
199− return c.universeDomain, nil
200−}
201−
202−// httpGetMetadataUniverseDomain is a package var for unit test substitution.
203−var httpGetMetadataUniverseDomain = func(ctx context.Context, client *metadata.Client) (string, error) {
204− ctx, cancel := context.WithTimeout(ctx, 1*time.Second)
205− defer cancel()
206− return client.GetWithContext(ctx, "universe/universe-domain")
207−}
208−
209−func getMetadataUniverseDomain(ctx context.Context, client *metadata.Client) (string, error) {
210− universeDomain, err := httpGetMetadataUniverseDomain(ctx, client)
211− if err == nil {
212− return universeDomain, nil
213− }
214− if _, ok := err.(metadata.NotDefinedError); ok {
215− // http.StatusNotFound (404)
216− return DefaultUniverseDomain, nil
217− }
218− return "", err
219−}
vendor/cloud.google.com/go/auth/internal/jwt/jwt.godeleted−171
@@ -1,171 +0,0 @@
1−// Copyright 2023 Google LLC
2−//
3−// Licensed under the Apache License, Version 2.0 (the "License");
4−// you may not use this file except in compliance with the License.
5−// You may obtain a copy of the License at
6−//
7−// http://www.apache.org/licenses/LICENSE-2.0
8−//
9−// Unless required by applicable law or agreed to in writing, software
10−// distributed under the License is distributed on an "AS IS" BASIS,
11−// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12−// See the License for the specific language governing permissions and
13−// limitations under the License.
14−
15−package jwt
16−
17−import (
18− "bytes"
19− "crypto"
20− "crypto/rand"
21− "crypto/rsa"
22− "crypto/sha256"
23− "encoding/base64"
24− "encoding/json"
25− "errors"
26− "fmt"
27− "strings"
28− "time"
29−)
30−
31−const (
32− // HeaderAlgRSA256 is the RS256 [Header.Algorithm].
33− HeaderAlgRSA256 = "RS256"
34− // HeaderAlgES256 is the ES256 [Header.Algorithm].
35− HeaderAlgES256 = "ES256"
36− // HeaderType is the standard [Header.Type].
37− HeaderType = "JWT"
38−)
39−
40−// Header represents a JWT header.
41−type Header struct {
42− Algorithm string `json:"alg"`
43− Type string `json:"typ"`
44− KeyID string `json:"kid"`
45−}
46−
47−func (h *Header) encode() (string, error) {
48− b, err := json.Marshal(h)
49− if err != nil {
50− return "", err
51− }
52− return base64.RawURLEncoding.EncodeToString(b), nil
53−}
54−
55−// Claims represents the claims set of a JWT.
56−type Claims struct {
57− // Iss is the issuer JWT claim.
58− Iss string `json:"iss"`
59− // Scope is the scope JWT claim.
60− Scope string `json:"scope,omitempty"`
61− // Exp is the expiry JWT claim. If unset, default is in one hour from now.
62− Exp int64 `json:"exp"`
63− // Iat is the subject issued at claim. If unset, default is now.
64− Iat int64 `json:"iat"`
65− // Aud is the audience JWT claim. Optional.
66− Aud string `json:"aud"`
67− // Sub is the subject JWT claim. Optional.
68− Sub string `json:"sub,omitempty"`
69− // AdditionalClaims contains any additional non-standard JWT claims. Optional.
70− AdditionalClaims map[string]interface{} `json:"-"`
71−}
72−
73−func (c *Claims) encode() (string, error) {
74− // Compensate for skew
75− now := time.Now().Add(-10 * time.Second)
76− if c.Iat == 0 {
77− c.Iat = now.Unix()
78− }
79− if c.Exp == 0 {
80− c.Exp = now.Add(time.Hour).Unix()
81− }
82− if c.Exp < c.Iat {
83− return "", fmt.Errorf("jwt: invalid Exp = %d; must be later than Iat = %d", c.Exp, c.Iat)
84− }
85−
86− b, err := json.Marshal(c)
87− if err != nil {
88− return "", err
89− }
90−
91− if len(c.AdditionalClaims) == 0 {
92− return base64.RawURLEncoding.EncodeToString(b), nil
93− }
94−
95− // Marshal private claim set and then append it to b.
96− prv, err := json.Marshal(c.AdditionalClaims)
97− if err != nil {
98− return "", fmt.Errorf("invalid map of additional claims %v: %w", c.AdditionalClaims, err)
99− }
100−
101− // Concatenate public and private claim JSON objects.
102− if !bytes.HasSuffix(b, []byte{'}'}) {
103− return "", fmt.Errorf("invalid JSON %s", b)
104− }
105− if !bytes.HasPrefix(prv, []byte{'{'}) {
106− return "", fmt.Errorf("invalid JSON %s", prv)
107− }
108− b[len(b)-1] = ',' // Replace closing curly brace with a comma.
109− b = append(b, prv[1:]...) // Append private claims.
110− return base64.RawURLEncoding.EncodeToString(b), nil
111−}
112−
113−// EncodeJWS encodes the data using the provided key as a JSON web signature.
114−func EncodeJWS(header *Header, c *Claims, signer crypto.Signer) (string, error) {
115− head, err := header.encode()
116− if err != nil {
117− return "", err
118− }
119− claims, err := c.encode()
120− if err != nil {
121− return "", err
122− }
123− ss := fmt.Sprintf("%s.%s", head, claims)
124− h := sha256.New()
125− h.Write([]byte(ss))
126− sig, err := signer.Sign(rand.Reader, h.Sum(nil), crypto.SHA256)
127− if err != nil {
128− return "", err
129− }
130− return fmt.Sprintf("%s.%s", ss, base64.RawURLEncoding.EncodeToString(sig)), nil
131−}
132−
133−// DecodeJWS decodes a claim set from a JWS payload.
134−func DecodeJWS(payload string) (*Claims, error) {
135− // decode returned id token to get expiry
136− s := strings.Split(payload, ".")
137− if len(s) < 2 {
138− return nil, errors.New("invalid token received")
139− }
140− decoded, err := base64.RawURLEncoding.DecodeString(s[1])
141− if err != nil {
142− return nil, err
143− }
144− c := &Claims{}
145− if err := json.NewDecoder(bytes.NewBuffer(decoded)).Decode(c); err != nil {
146− return nil, err
147− }
148− if err := json.NewDecoder(bytes.NewBuffer(decoded)).Decode(&c.AdditionalClaims); err != nil {
149− return nil, err
150− }
151− return c, err
152−}
153−
154−// VerifyJWS tests whether the provided JWT token's signature was produced by
155−// the private key associated with the provided public key.
156−func VerifyJWS(token string, key *rsa.PublicKey) error {
157− parts := strings.Split(token, ".")
158− if len(parts) != 3 {
159− return errors.New("jwt: invalid token received, token must have 3 parts")
160− }
161−
162− signedContent := parts[0] + "." + parts[1]
163− signatureString, err := base64.RawURLEncoding.DecodeString(parts[2])
164− if err != nil {
165− return err
166− }
167−
168− h := sha256.New()
169− h.Write([]byte(signedContent))
170− return rsa.VerifyPKCS1v15(key, crypto.SHA256, h.Sum(nil), signatureString)
171−}
vendor/cloud.google.com/go/auth/internal/transport/cba.godeleted−368
@@ -1,368 +0,0 @@
1−// Copyright 2023 Google LLC
2−//
3−// Licensed under the Apache License, Version 2.0 (the "License");
4−// you may not use this file except in compliance with the License.
5−// You may obtain a copy of the License at
6−//
7−// http://www.apache.org/licenses/LICENSE-2.0
8−//
9−// Unless required by applicable law or agreed to in writing, software
10−// distributed under the License is distributed on an "AS IS" BASIS,
11−// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12−// See the License for the specific language governing permissions and
13−// limitations under the License.
14−
15−package transport
16−
17−import (
18− "context"
19− "crypto/tls"
20− "crypto/x509"
21− "errors"
22− "log"
23− "log/slog"
24− "net"
25− "net/http"
26− "net/url"
27− "os"
28− "strconv"
29− "strings"
30−
31− "cloud.google.com/go/auth/internal"
32− "cloud.google.com/go/auth/internal/transport/cert"
33− "github.com/google/s2a-go"
34− "github.com/google/s2a-go/fallback"
35− "google.golang.org/grpc/credentials"
36−)
37−
38−const (
39− mTLSModeAlways = "always"
40− mTLSModeNever = "never"
41− mTLSModeAuto = "auto"
42−
43− // Experimental: if true, the code will try MTLS with S2A as the default for transport security. Default value is false.
44− googleAPIUseS2AEnv = "EXPERIMENTAL_GOOGLE_API_USE_S2A"
45− googleAPIUseCertSource = "GOOGLE_API_USE_CLIENT_CERTIFICATE"
46− googleAPIUseMTLS = "GOOGLE_API_USE_MTLS_ENDPOINT"
47− googleAPIUseMTLSOld = "GOOGLE_API_USE_MTLS"
48−
49− universeDomainPlaceholder = "UNIVERSE_DOMAIN"
50−
51− mtlsMDSRoot = "/run/google-mds-mtls/root.crt"
52− mtlsMDSKey = "/run/google-mds-mtls/client.key"
53−)
54−
55−// Options is a struct that is duplicated information from the individual
56−// transport packages in order to avoid cyclic deps. It correlates 1:1 with
57−// fields on httptransport.Options and grpctransport.Options.
58−type Options struct {
59− Endpoint string
60− DefaultEndpointTemplate string
61− DefaultMTLSEndpoint string
62− ClientCertProvider cert.Provider
63− Client *http.Client
64− UniverseDomain string
65− EnableDirectPath bool
66− EnableDirectPathXds bool
67− Logger *slog.Logger
68−}
69−
70−// getUniverseDomain returns the default service domain for a given Cloud
71−// universe.
72−func (o *Options) getUniverseDomain() string {
73− if o.UniverseDomain == "" {
74− return internal.DefaultUniverseDomain
75− }
76− return o.UniverseDomain
77−}
78−
79−// isUniverseDomainGDU returns true if the universe domain is the default Google
80−// universe.
81−func (o *Options) isUniverseDomainGDU() bool {
82− return o.getUniverseDomain() == internal.DefaultUniverseDomain
83−}
84−
85−// defaultEndpoint returns the DefaultEndpointTemplate merged with the
86−// universe domain if the DefaultEndpointTemplate is set, otherwise returns an
87−// empty string.
88−func (o *Options) defaultEndpoint() string {
89− if o.DefaultEndpointTemplate == "" {
90− return ""
91− }
92− return strings.Replace(o.DefaultEndpointTemplate, universeDomainPlaceholder, o.getUniverseDomain(), 1)
93−}
94−
95−// defaultMTLSEndpoint returns the DefaultMTLSEndpointTemplate merged with the
96−// universe domain if the DefaultMTLSEndpointTemplate is set, otherwise returns an
97−// empty string.
98−func (o *Options) defaultMTLSEndpoint() string {
99− if o.DefaultMTLSEndpoint == "" {
100− return ""
101− }
102− return strings.Replace(o.DefaultMTLSEndpoint, universeDomainPlaceholder, o.getUniverseDomain(), 1)
103−}
104−
105−// mergedEndpoint merges a user-provided Endpoint of format host[:port] with the
106−// default endpoint.
107−func (o *Options) mergedEndpoint() (string, error) {
108− defaultEndpoint := o.defaultEndpoint()
109− u, err := url.Parse(fixScheme(defaultEndpoint))
110− if err != nil {
111− return "", err
112− }
113− return strings.Replace(defaultEndpoint, u.Host, o.Endpoint, 1), nil
114−}
115−
116−func fixScheme(baseURL string) string {
117− if !strings.Contains(baseURL, "://") {
118− baseURL = "https://" + baseURL
119− }
120− return baseURL
121−}
122−
123−// GetGRPCTransportCredsAndEndpoint returns an instance of
124−// [google.golang.org/grpc/credentials.TransportCredentials], and the
125−// corresponding endpoint to use for GRPC client.
126−func GetGRPCTransportCredsAndEndpoint(opts *Options) (credentials.TransportCredentials, string, error) {
127− config, err := getTransportConfig(opts)
128− if err != nil {
129− return nil, "", err
130− }
131−
132− defaultTransportCreds := credentials.NewTLS(&tls.Config{
133− GetClientCertificate: config.clientCertSource,
134− })
135−
136− var s2aAddr string
137− var transportCredsForS2A credentials.TransportCredentials
138−
139− if config.mtlsS2AAddress != "" {
140− s2aAddr = config.mtlsS2AAddress
141− transportCredsForS2A, err = loadMTLSMDSTransportCreds(mtlsMDSRoot, mtlsMDSKey)
142− if err != nil {
143− log.Printf("Loading MTLS MDS credentials failed: %v", err)
144− if config.s2aAddress != "" {
145− s2aAddr = config.s2aAddress
146− } else {
147− return defaultTransportCreds, config.endpoint, nil
148− }
149− }
150− } else if config.s2aAddress != "" {
151− s2aAddr = config.s2aAddress
152− } else {
153− return defaultTransportCreds, config.endpoint, nil
154− }
155−
156− var fallbackOpts *s2a.FallbackOptions
157− // In case of S2A failure, fall back to the endpoint that would've been used without S2A.
158− if fallbackHandshake, err := fallback.DefaultFallbackClientHandshakeFunc(config.endpoint); err == nil {
159− fallbackOpts = &s2a.FallbackOptions{
160− FallbackClientHandshakeFunc: fallbackHandshake,
161− }
162− }
163−
164− s2aTransportCreds, err := s2a.NewClientCreds(&s2a.ClientOptions{
165− S2AAddress: s2aAddr,
166− TransportCreds: transportCredsForS2A,
167− FallbackOpts: fallbackOpts,
168− })
169− if err != nil {
170− // Use default if we cannot initialize S2A client transport credentials.
171− return defaultTransportCreds, config.endpoint, nil
172− }
173− return s2aTransportCreds, config.s2aMTLSEndpoint, nil
174−}
175−
176−// GetHTTPTransportConfig returns a client certificate source and a function for
177−// dialing MTLS with S2A.
178−func GetHTTPTransportConfig(opts *Options) (cert.Provider, func(context.Context, string, string) (net.Conn, error), error) {
179− config, err := getTransportConfig(opts)
180− if err != nil {
181− return nil, nil, err
182− }
183−
184− var s2aAddr string
185− var transportCredsForS2A credentials.TransportCredentials
186−
187− if config.mtlsS2AAddress != "" {
188− s2aAddr = config.mtlsS2AAddress
189− transportCredsForS2A, err = loadMTLSMDSTransportCreds(mtlsMDSRoot, mtlsMDSKey)
190− if err != nil {
191− log.Printf("Loading MTLS MDS credentials failed: %v", err)
192− if config.s2aAddress != "" {
193− s2aAddr = config.s2aAddress
194− } else {
195− return config.clientCertSource, nil, nil
196− }
197− }
198− } else if config.s2aAddress != "" {
199− s2aAddr = config.s2aAddress
200− } else {
201− return config.clientCertSource, nil, nil
202− }
203−
204− var fallbackOpts *s2a.FallbackOptions
205− // In case of S2A failure, fall back to the endpoint that would've been used without S2A.
206− if fallbackURL, err := url.Parse(config.endpoint); err == nil {
207− if fallbackDialer, fallbackServerAddr, err := fallback.DefaultFallbackDialerAndAddress(fallbackURL.Hostname()); err == nil {
208− fallbackOpts = &s2a.FallbackOptions{
209− FallbackDialer: &s2a.FallbackDialer{
210− Dialer: fallbackDialer,
211− ServerAddr: fallbackServerAddr,
212− },
213− }
214− }
215− }
216−
217− dialTLSContextFunc := s2a.NewS2ADialTLSContextFunc(&s2a.ClientOptions{
218− S2AAddress: s2aAddr,
219− TransportCreds: transportCredsForS2A,
220− FallbackOpts: fallbackOpts,
221− })
222− return nil, dialTLSContextFunc, nil
223−}
224−
225−func loadMTLSMDSTransportCreds(mtlsMDSRootFile, mtlsMDSKeyFile string) (credentials.TransportCredentials, error) {
226− rootPEM, err := os.ReadFile(mtlsMDSRootFile)
227− if err != nil {
228− return nil, err
229− }
230− caCertPool := x509.NewCertPool()
231− ok := caCertPool.AppendCertsFromPEM(rootPEM)
232− if !ok {
233− return nil, errors.New("failed to load MTLS MDS root certificate")
234− }
235− // The mTLS MDS credentials are formatted as the concatenation of a PEM-encoded certificate chain
236− // followed by a PEM-encoded private key. For this reason, the concatenation is passed in to the
237− // tls.X509KeyPair function as both the certificate chain and private key arguments.
238− cert, err := tls.LoadX509KeyPair(mtlsMDSKeyFile, mtlsMDSKeyFile)
239− if err != nil {
240− return nil, err
241− }
242− tlsConfig := tls.Config{
243− RootCAs: caCertPool,
244− Certificates: []tls.Certificate{cert},
245− MinVersion: tls.VersionTLS13,
246− }
247− return credentials.NewTLS(&tlsConfig), nil
248−}
249−
250−func getTransportConfig(opts *Options) (*transportConfig, error) {
251− clientCertSource, err := GetClientCertificateProvider(opts)
252− if err != nil {
253− return nil, err
254− }
255− endpoint, err := getEndpoint(opts, clientCertSource)
256− if err != nil {
257− return nil, err
258− }
259− defaultTransportConfig := transportConfig{
260− clientCertSource: clientCertSource,
261− endpoint: endpoint,
262− }
263−
264− if !shouldUseS2A(clientCertSource, opts) {
265− return &defaultTransportConfig, nil
266− }
267−
268− s2aAddress := GetS2AAddress(opts.Logger)
269− mtlsS2AAddress := GetMTLSS2AAddress(opts.Logger)
270− if s2aAddress == "" && mtlsS2AAddress == "" {
271− return &defaultTransportConfig, nil
272− }
273− return &transportConfig{
274− clientCertSource: clientCertSource,
275− endpoint: endpoint,
276− s2aAddress: s2aAddress,
277− mtlsS2AAddress: mtlsS2AAddress,
278− s2aMTLSEndpoint: opts.defaultMTLSEndpoint(),
279− }, nil
280−}
281−
282−// GetClientCertificateProvider returns a default client certificate source, if
283−// not provided by the user.
284−//
285−// A nil default source can be returned if the source does not exist. Any exceptions
286−// encountered while initializing the default source will be reported as client
287−// error (ex. corrupt metadata file).
288−func GetClientCertificateProvider(opts *Options) (cert.Provider, error) {
289− if !isClientCertificateEnabled(opts) {
290− return nil, nil
291− } else if opts.ClientCertProvider != nil {
292− return opts.ClientCertProvider, nil
293− }
294− return cert.DefaultProvider()
295−
296−}
297−
298−// isClientCertificateEnabled returns true by default for all GDU universe domain, unless explicitly overridden by env var
299−func isClientCertificateEnabled(opts *Options) bool {
300− if value, ok := os.LookupEnv(googleAPIUseCertSource); ok {
301− // error as false is OK
302− b, _ := strconv.ParseBool(value)
303− return b
304− }
305− return opts.isUniverseDomainGDU()
306−}
307−
308−type transportConfig struct {
309− // The client certificate source.
310− clientCertSource cert.Provider
311− // The corresponding endpoint to use based on client certificate source.
312− endpoint string
313− // The plaintext S2A address if it can be used, otherwise an empty string.
314− s2aAddress string
315− // The MTLS S2A address if it can be used, otherwise an empty string.
316− mtlsS2AAddress string
317− // The MTLS endpoint to use with S2A.
318− s2aMTLSEndpoint string
319−}
320−
321−// getEndpoint returns the endpoint for the service, taking into account the
322−// user-provided endpoint override "settings.Endpoint".
323−//
324−// If no endpoint override is specified, we will either return the default
325−// endpoint or the default mTLS endpoint if a client certificate is available.
326−//
327−// You can override the default endpoint choice (mTLS vs. regular) by setting
328−// the GOOGLE_API_USE_MTLS_ENDPOINT environment variable.
329−//
330−// If the endpoint override is an address (host:port) rather than full base
331−// URL (ex. https://...), then the user-provided address will be merged into
332−// the default endpoint. For example, WithEndpoint("myhost:8000") and
333−// DefaultEndpointTemplate("https://UNIVERSE_DOMAIN/bar/baz") will return
334−// "https://myhost:8080/bar/baz". Note that this does not apply to the mTLS
335−// endpoint.
336−func getEndpoint(opts *Options, clientCertSource cert.Provider) (string, error) {
337− if opts.Endpoint == "" {
338− mtlsMode := getMTLSMode()
339− if mtlsMode == mTLSModeAlways || (clientCertSource != nil && mtlsMode == mTLSModeAuto) {
340− return opts.defaultMTLSEndpoint(), nil
341− }
342− return opts.defaultEndpoint(), nil
343− }
344− if strings.Contains(opts.Endpoint, "://") {
345− // User passed in a full URL path, use it verbatim.
346− return opts.Endpoint, nil
347− }
348− if opts.defaultEndpoint() == "" {
349− // If DefaultEndpointTemplate is not configured,
350− // use the user provided endpoint verbatim. This allows a naked
351− // "host[:port]" URL to be used with GRPC Direct Path.
352− return opts.Endpoint, nil
353− }
354−
355− // Assume user-provided endpoint is host[:port], merge it with the default endpoint.
356− return opts.mergedEndpoint()
357−}
358−
359−func getMTLSMode() string {
360− mode := os.Getenv(googleAPIUseMTLS)
361− if mode == "" {
362− mode = os.Getenv(googleAPIUseMTLSOld) // Deprecated.
363− }
364− if mode == "" {
365− return mTLSModeAuto
366− }
367− return strings.ToLower(mode)
368−}
vendor/cloud.google.com/go/auth/internal/transport/cert/default_cert.godeleted−65
@@ -1,65 +0,0 @@
1−// Copyright 2023 Google LLC
2−//
3−// Licensed under the Apache License, Version 2.0 (the "License");
4−// you may not use this file except in compliance with the License.
5−// You may obtain a copy of the License at
6−//
7−// http://www.apache.org/licenses/LICENSE-2.0
8−//
9−// Unless required by applicable law or agreed to in writing, software
10−// distributed under the License is distributed on an "AS IS" BASIS,
11−// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12−// See the License for the specific language governing permissions and
13−// limitations under the License.
14−
15−package cert
16−
17−import (
18− "crypto/tls"
19− "errors"
20− "sync"
21−)
22−
23−// defaultCertData holds all the variables pertaining to
24−// the default certificate provider created by [DefaultProvider].
25−//
26−// A singleton model is used to allow the provider to be reused
27−// by the transport layer. As mentioned in [DefaultProvider] (provider nil, nil)
28−// may be returned to indicate a default provider could not be found, which
29−// will skip extra tls config in the transport layer .
30−type defaultCertData struct {
31− once sync.Once
32− provider Provider
33− err error
34−}
35−
36−var (
37− defaultCert defaultCertData
38−)
39−
40−// Provider is a function that can be passed into crypto/tls.Config.GetClientCertificate.
41−type Provider func(*tls.CertificateRequestInfo) (*tls.Certificate, error)
42−
43−// errSourceUnavailable is a sentinel error to indicate certificate source is unavailable.
44−var errSourceUnavailable = errors.New("certificate source is unavailable")
45−
46−// DefaultProvider returns a certificate source using the preferred EnterpriseCertificateProxySource.
47−// If EnterpriseCertificateProxySource is not available, fall back to the legacy SecureConnectSource.
48−//
49−// If neither source is available (due to missing configurations), a nil Source and a nil Error are
50−// returned to indicate that a default certificate source is unavailable.
51−func DefaultProvider() (Provider, error) {
52− defaultCert.once.Do(func() {
53− defaultCert.provider, defaultCert.err = NewWorkloadX509CertProvider("")
54− if errors.Is(defaultCert.err, errSourceUnavailable) {
55− defaultCert.provider, defaultCert.err = NewEnterpriseCertificateProxyProvider("")
56− if errors.Is(defaultCert.err, errSourceUnavailable) {
57− defaultCert.provider, defaultCert.err = NewSecureConnectProvider("")
58− if errors.Is(defaultCert.err, errSourceUnavailable) {
59− defaultCert.provider, defaultCert.err = nil, nil
60− }
61− }
62− }
63− })
64− return defaultCert.provider, defaultCert.err
65−}
vendor/cloud.google.com/go/auth/internal/transport/cert/enterprise_cert.godeleted−54
@@ -1,54 +0,0 @@
1−// Copyright 2023 Google LLC
2−//
3−// Licensed under the Apache License, Version 2.0 (the "License");
4−// you may not use this file except in compliance with the License.
5−// You may obtain a copy of the License at
6−//
7−// http://www.apache.org/licenses/LICENSE-2.0
8−//
9−// Unless required by applicable law or agreed to in writing, software
10−// distributed under the License is distributed on an "AS IS" BASIS,
11−// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12−// See the License for the specific language governing permissions and
13−// limitations under the License.
14−
15−package cert
16−
17−import (
18− "crypto/tls"
19−
20− "github.com/googleapis/enterprise-certificate-proxy/client"
21−)
22−
23−type ecpSource struct {
24− key *client.Key
25−}
26−
27−// NewEnterpriseCertificateProxyProvider creates a certificate source
28−// using the Enterprise Certificate Proxy client, which delegates
29−// certifcate related operations to an OS-specific "signer binary"
30−// that communicates with the native keystore (ex. keychain on MacOS).
31−//
32−// The configFilePath points to a config file containing relevant parameters
33−// such as the certificate issuer and the location of the signer binary.
34−// If configFilePath is empty, the client will attempt to load the config from
35−// a well-known gcloud location.
36−func NewEnterpriseCertificateProxyProvider(configFilePath string) (Provider, error) {
37− key, err := client.Cred(configFilePath)
38− if err != nil {
39− // TODO(codyoss): once this is fixed upstream can handle this error a
40− // little better here. But be safe for now and assume unavailable.
41− return nil, errSourceUnavailable
42− }
43−
44− return (&ecpSource{
45− key: key,
46− }).getClientCertificate, nil
47−}
48−
49−func (s *ecpSource) getClientCertificate(info *tls.CertificateRequestInfo) (*tls.Certificate, error) {
50− var cert tls.Certificate
51− cert.PrivateKey = s.key
52− cert.Certificate = s.key.CertificateChain()
53− return &cert, nil
54−}
vendor/cloud.google.com/go/auth/internal/transport/cert/secureconnect_cert.godeleted−124
@@ -1,124 +0,0 @@
1−// Copyright 2023 Google LLC
2−//
3−// Licensed under the Apache License, Version 2.0 (the "License");
4−// you may not use this file except in compliance with the License.
5−// You may obtain a copy of the License at
6−//
7−// http://www.apache.org/licenses/LICENSE-2.0
8−//
9−// Unless required by applicable law or agreed to in writing, software
10−// distributed under the License is distributed on an "AS IS" BASIS,
11−// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12−// See the License for the specific language governing permissions and
13−// limitations under the License.
14−
15−package cert
16−
17−import (
18− "crypto/tls"
19− "crypto/x509"
20− "encoding/json"
21− "errors"
22− "fmt"
23− "os"
24− "os/exec"
25− "os/user"
26− "path/filepath"
27− "sync"
28− "time"
29−)
30−
31−const (
32− metadataPath = ".secureConnect"
33− metadataFile = "context_aware_metadata.json"
34−)
35−
36−type secureConnectSource struct {
37− metadata secureConnectMetadata
38−
39− // Cache the cert to avoid executing helper command repeatedly.
40− cachedCertMutex sync.Mutex
41− cachedCert *tls.Certificate
42−}
43−
44−type secureConnectMetadata struct {
45− Cmd []string `json:"cert_provider_command"`
46−}
47−
48−// NewSecureConnectProvider creates a certificate source using
49−// the Secure Connect Helper and its associated metadata file.
50−//
51−// The configFilePath points to the location of the context aware metadata file.
52−// If configFilePath is empty, use the default context aware metadata location.
53−func NewSecureConnectProvider(configFilePath string) (Provider, error) {
54− if configFilePath == "" {
55− user, err := user.Current()
56− if err != nil {
57− // Error locating the default config means Secure Connect is not supported.
58− return nil, errSourceUnavailable
59− }
60− configFilePath = filepath.Join(user.HomeDir, metadataPath, metadataFile)
61− }
62−
63− file, err := os.ReadFile(configFilePath)
64− if err != nil {
65− // Config file missing means Secure Connect is not supported.
66− // There are non-os.ErrNotExist errors that may be returned.
67− // (e.g. if the home directory is /dev/null, *nix systems will
68− // return ENOTDIR instead of ENOENT)
69− return nil, errSourceUnavailable
70− }
71−
72− var metadata secureConnectMetadata
73− if err := json.Unmarshal(file, &metadata); err != nil {
74− return nil, fmt.Errorf("cert: could not parse JSON in %q: %w", configFilePath, err)
75− }
76− if err := validateMetadata(metadata); err != nil {
77− return nil, fmt.Errorf("cert: invalid config in %q: %w", configFilePath, err)
78− }
79− return (&secureConnectSource{
80− metadata: metadata,
81− }).getClientCertificate, nil
82−}
83−
84−func validateMetadata(metadata secureConnectMetadata) error {
85− if len(metadata.Cmd) == 0 {
86− return errors.New("empty cert_provider_command")
87− }
88− return nil
89−}
90−
91−func (s *secureConnectSource) getClientCertificate(info *tls.CertificateRequestInfo) (*tls.Certificate, error) {
92− s.cachedCertMutex.Lock()
93− defer s.cachedCertMutex.Unlock()
94− if s.cachedCert != nil && !isCertificateExpired(s.cachedCert) {
95− return s.cachedCert, nil
96− }
97− // Expand OS environment variables in the cert provider command such as "$HOME".
98− for i := 0; i < len(s.metadata.Cmd); i++ {
99− s.metadata.Cmd[i] = os.ExpandEnv(s.metadata.Cmd[i])
100− }
101− command := s.metadata.Cmd
102− data, err := exec.Command(command[0], command[1:]...).Output()
103− if err != nil {
104− return nil, err
105− }
106− cert, err := tls.X509KeyPair(data, data)
107− if err != nil {
108− return nil, err
109− }
110− s.cachedCert = &cert
111− return &cert, nil
112−}
113−
114−// isCertificateExpired returns true if the given cert is expired or invalid.
115−func isCertificateExpired(cert *tls.Certificate) bool {
116− if len(cert.Certificate) == 0 {
117− return true
118− }
119− parsed, err := x509.ParseCertificate(cert.Certificate[0])
120− if err != nil {
121− return true
122− }
123− return time.Now().After(parsed.NotAfter)
124−}
vendor/cloud.google.com/go/auth/internal/transport/cert/workload_cert.godeleted−114
@@ -1,114 +0,0 @@
1−// Copyright 2024 Google LLC
2−//
3−// Licensed under the Apache License, Version 2.0 (the "License");
4−// you may not use this file except in compliance with the License.
5−// You may obtain a copy of the License at
6−//
7−// http://www.apache.org/licenses/LICENSE-2.0
8−//
9−// Unless required by applicable law or agreed to in writing, software
10−// distributed under the License is distributed on an "AS IS" BASIS,
11−// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12−// See the License for the specific language governing permissions and
13−// limitations under the License.
14−
15−package cert
16−
17−import (
18− "crypto/tls"
19− "encoding/json"
20− "errors"
21− "io"
22− "os"
23−
24− "github.com/googleapis/enterprise-certificate-proxy/client/util"
25−)
26−
27−type certConfigs struct {
28− Workload *workloadSource `json:"workload"`
29−}
30−
31−type workloadSource struct {
32− CertPath string `json:"cert_path"`
33− KeyPath string `json:"key_path"`
34−}
35−
36−type certificateConfig struct {
37− CertConfigs certConfigs `json:"cert_configs"`
38−}
39−
40−// NewWorkloadX509CertProvider creates a certificate source
41−// that reads a certificate and private key file from the local file system.
42−// This is intended to be used for workload identity federation.
43−//
44−// The configFilePath points to a config file containing relevant parameters
45−// such as the certificate and key file paths.
46−// If configFilePath is empty, the client will attempt to load the config from
47−// a well-known gcloud location.
48−func NewWorkloadX509CertProvider(configFilePath string) (Provider, error) {
49− if configFilePath == "" {
50− envFilePath := util.GetConfigFilePathFromEnv()
51− if envFilePath != "" {
52− configFilePath = envFilePath
53− } else {
54− configFilePath = util.GetDefaultConfigFilePath()
55− }
56− }
57−
58− certFile, keyFile, err := getCertAndKeyFiles(configFilePath)
59− if err != nil {
60− return nil, err
61− }
62−
63− source := &workloadSource{
64− CertPath: certFile,
65− KeyPath: keyFile,
66− }
67− return source.getClientCertificate, nil
68−}
69−
70−// getClientCertificate attempts to load the certificate and key from the files specified in the
71−// certificate config.
72−func (s *workloadSource) getClientCertificate(info *tls.CertificateRequestInfo) (*tls.Certificate, error) {
73− cert, err := tls.LoadX509KeyPair(s.CertPath, s.KeyPath)
74− if err != nil {
75− return nil, err
76− }
77− return &cert, nil
78−}
79−
80−// getCertAndKeyFiles attempts to read the provided config file and return the certificate and private
81−// key file paths.
82−func getCertAndKeyFiles(configFilePath string) (string, string, error) {
83− jsonFile, err := os.Open(configFilePath)
84− if err != nil {
85− return "", "", errSourceUnavailable
86− }
87−
88− byteValue, err := io.ReadAll(jsonFile)
89− if err != nil {
90− return "", "", err
91− }
92−
93− var config certificateConfig
94− if err := json.Unmarshal(byteValue, &config); err != nil {
95− return "", "", err
96− }
97−
98− if config.CertConfigs.Workload == nil {
99− return "", "", errSourceUnavailable
100− }
101−
102− certFile := config.CertConfigs.Workload.CertPath
103− keyFile := config.CertConfigs.Workload.KeyPath
104−
105− if certFile == "" {
106− return "", "", errors.New("certificate configuration is missing the certificate file location")
107− }
108−
109− if keyFile == "" {
110− return "", "", errors.New("certificate configuration is missing the key file location")
111− }
112−
113− return certFile, keyFile, nil
114−}
vendor/cloud.google.com/go/auth/internal/transport/s2a.godeleted−138
@@ -1,138 +0,0 @@
1−// Copyright 2023 Google LLC
2−//
3−// Licensed under the Apache License, Version 2.0 (the "License");
4−// you may not use this file except in compliance with the License.
5−// You may obtain a copy of the License at
6−//
7−// http://www.apache.org/licenses/LICENSE-2.0
8−//
9−// Unless required by applicable law or agreed to in writing, software
10−// distributed under the License is distributed on an "AS IS" BASIS,
11−// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12−// See the License for the specific language governing permissions and
13−// limitations under the License.
14−
15−package transport
16−
17−import (
18− "context"
19− "encoding/json"
20− "fmt"
21− "log"
22− "log/slog"
23− "os"
24− "strconv"
25− "sync"
26−
27− "cloud.google.com/go/auth/internal/transport/cert"
28− "cloud.google.com/go/compute/metadata"
29−)
30−
31−const (
32− configEndpointSuffix = "instance/platform-security/auto-mtls-configuration"
33−)
34−
35−var (
36− mtlsConfiguration *mtlsConfig
37−
38− mtlsOnce sync.Once
39−)
40−
41−// GetS2AAddress returns the S2A address to be reached via plaintext connection.
42−// Returns empty string if not set or invalid.
43−func GetS2AAddress(logger *slog.Logger) string {
44− getMetadataMTLSAutoConfig(logger)
45− if !mtlsConfiguration.valid() {
46− return ""
47− }
48− return mtlsConfiguration.S2A.PlaintextAddress
49−}
50−
51−// GetMTLSS2AAddress returns the S2A address to be reached via MTLS connection.
52−// Returns empty string if not set or invalid.
53−func GetMTLSS2AAddress(logger *slog.Logger) string {
54− getMetadataMTLSAutoConfig(logger)
55− if !mtlsConfiguration.valid() {
56− return ""
57− }
58− return mtlsConfiguration.S2A.MTLSAddress
59−}
60−
61−// mtlsConfig contains the configuration for establishing MTLS connections with Google APIs.
62−type mtlsConfig struct {
63− S2A *s2aAddresses `json:"s2a"`
64−}
65−
66−func (c *mtlsConfig) valid() bool {
67− return c != nil && c.S2A != nil
68−}
69−
70−// s2aAddresses contains the plaintext and/or MTLS S2A addresses.
71−type s2aAddresses struct {
72− // PlaintextAddress is the plaintext address to reach S2A
73− PlaintextAddress string `json:"plaintext_address"`
74− // MTLSAddress is the MTLS address to reach S2A
75− MTLSAddress string `json:"mtls_address"`
76−}
77−
78−func getMetadataMTLSAutoConfig(logger *slog.Logger) {
79− var err error
80− mtlsOnce.Do(func() {
81− mtlsConfiguration, err = queryConfig(logger)
82− if err != nil {
83− log.Printf("Getting MTLS config failed: %v", err)
84− }
85− })
86−}
87−
88−var httpGetMetadataMTLSConfig = func(logger *slog.Logger) (string, error) {
89− metadataClient := metadata.NewWithOptions(&metadata.Options{
90− Logger: logger,
91− })
92− return metadataClient.GetWithContext(context.Background(), configEndpointSuffix)
93−}
94−
95−func queryConfig(logger *slog.Logger) (*mtlsConfig, error) {
96− resp, err := httpGetMetadataMTLSConfig(logger)
97− if err != nil {
98− return nil, fmt.Errorf("querying MTLS config from MDS endpoint failed: %w", err)
99− }
100− var config mtlsConfig
101− err = json.Unmarshal([]byte(resp), &config)
102− if err != nil {
103− return nil, fmt.Errorf("unmarshalling MTLS config from MDS endpoint failed: %w", err)
104− }
105− if config.S2A == nil {
106− return nil, fmt.Errorf("returned MTLS config from MDS endpoint is invalid: %v", config)
107− }
108− return &config, nil
109−}
110−
111−func shouldUseS2A(clientCertSource cert.Provider, opts *Options) bool {
112− // If client cert is found, use that over S2A.
113− if clientCertSource != nil {
114− return false
115− }
116− // If EXPERIMENTAL_GOOGLE_API_USE_S2A is not set to true, skip S2A.
117− if !isGoogleS2AEnabled() {
118− return false
119− }
120− // If DefaultMTLSEndpoint is not set or has endpoint override, skip S2A.
121− if opts.DefaultMTLSEndpoint == "" || opts.Endpoint != "" {
122− return false
123− }
124− // If custom HTTP client is provided, skip S2A.
125− if opts.Client != nil {
126− return false
127− }
128− // If directPath is enabled, skip S2A.
129− return !opts.EnableDirectPath && !opts.EnableDirectPathXds
130−}
131−
132−func isGoogleS2AEnabled() bool {
133− b, err := strconv.ParseBool(os.Getenv(googleAPIUseS2AEnv))
134− if err != nil {
135− return false
136− }
137− return b
138−}
vendor/cloud.google.com/go/auth/internal/transport/transport.godeleted−106
@@ -1,106 +0,0 @@
1−// Copyright 2023 Google LLC
2−//
3−// Licensed under the Apache License, Version 2.0 (the "License");
4−// you may not use this file except in compliance with the License.
5−// You may obtain a copy of the License at
6−//
7−// http://www.apache.org/licenses/LICENSE-2.0
8−//
9−// Unless required by applicable law or agreed to in writing, software
10−// distributed under the License is distributed on an "AS IS" BASIS,
11−// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12−// See the License for the specific language governing permissions and
13−// limitations under the License.
14−
15−// Package transport provided internal helpers for the two transport packages
16−// (grpctransport and httptransport).
17−package transport
18−
19−import (
20− "crypto/tls"
21− "fmt"
22− "net"
23− "net/http"
24− "time"
25−
26− "cloud.google.com/go/auth/credentials"
27−)
28−
29−// CloneDetectOptions clones a user set detect option into some new memory that
30−// we can internally manipulate before sending onto the detect package.
31−func CloneDetectOptions(oldDo *credentials.DetectOptions) *credentials.DetectOptions {
32− if oldDo == nil {
33− // it is valid for users not to set this, but we will need to to default
34− // some options for them in this case so return some initialized memory
35− // to work with.
36− return &credentials.DetectOptions{}
37− }
38− newDo := &credentials.DetectOptions{
39− // Simple types
40− Audience: oldDo.Audience,
41− Subject: oldDo.Subject,
42− EarlyTokenRefresh: oldDo.EarlyTokenRefresh,
43− TokenURL: oldDo.TokenURL,
44− STSAudience: oldDo.STSAudience,
45− CredentialsFile: oldDo.CredentialsFile,
46− UseSelfSignedJWT: oldDo.UseSelfSignedJWT,
47− UniverseDomain: oldDo.UniverseDomain,
48−
49− // These fields are are pointer types that we just want to use exactly
50− // as the user set, copy the ref
51− Client: oldDo.Client,
52− Logger: oldDo.Logger,
53− AuthHandlerOptions: oldDo.AuthHandlerOptions,
54− }
55−
56− // Smartly size this memory and copy below.
57− if len(oldDo.CredentialsJSON) > 0 {
58− newDo.CredentialsJSON = make([]byte, len(oldDo.CredentialsJSON))
59− copy(newDo.CredentialsJSON, oldDo.CredentialsJSON)
60− }
61− if len(oldDo.Scopes) > 0 {
62− newDo.Scopes = make([]string, len(oldDo.Scopes))
63− copy(newDo.Scopes, oldDo.Scopes)
64− }
65−
66− return newDo
67−}
68−
69−// ValidateUniverseDomain verifies that the universe domain configured for the
70−// client matches the universe domain configured for the credentials.
71−func ValidateUniverseDomain(clientUniverseDomain, credentialsUniverseDomain string) error {
72− if clientUniverseDomain != credentialsUniverseDomain {
73− return fmt.Errorf(
74− "the configured universe domain (%q) does not match the universe "+
75− "domain found in the credentials (%q). If you haven't configured "+
76− "the universe domain explicitly, \"googleapis.com\" is the default",
77− clientUniverseDomain,
78− credentialsUniverseDomain)
79− }
80− return nil
81−}
82−
83−// DefaultHTTPClientWithTLS constructs an HTTPClient using the provided tlsConfig, to support mTLS.
84−func DefaultHTTPClientWithTLS(tlsConfig *tls.Config) *http.Client {
85− trans := BaseTransport()
86− trans.TLSClientConfig = tlsConfig
87− return &http.Client{Transport: trans}
88−}
89−
90−// BaseTransport returns a default [http.Transport] which can be used if
91−// [http.DefaultTransport] has been overwritten.
92−func BaseTransport() *http.Transport {
93− return &http.Transport{
94− Proxy: http.ProxyFromEnvironment,
95− DialContext: (&net.Dialer{
96− Timeout: 30 * time.Second,
97− KeepAlive: 30 * time.Second,
98− DualStack: true,
99− }).DialContext,
100− MaxIdleConns: 100,
101− MaxIdleConnsPerHost: 100,
102− IdleConnTimeout: 90 * time.Second,
103− TLSHandshakeTimeout: 10 * time.Second,
104− ExpectContinueTimeout: 1 * time.Second,
105− }
106−}
vendor/cloud.google.com/go/auth/threelegged.godeleted−382
@@ -1,382 +0,0 @@
1−// Copyright 2023 Google LLC
2−//
3−// Licensed under the Apache License, Version 2.0 (the "License");
4−// you may not use this file except in compliance with the License.
5−// You may obtain a copy of the License at
6−//
7−// http://www.apache.org/licenses/LICENSE-2.0
8−//
9−// Unless required by applicable law or agreed to in writing, software
10−// distributed under the License is distributed on an "AS IS" BASIS,
11−// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12−// See the License for the specific language governing permissions and
13−// limitations under the License.
14−
15−package auth
16−
17−import (
18− "bytes"
19− "context"
20− "encoding/json"
21− "errors"
22− "fmt"
23− "log/slog"
24− "mime"
25− "net/http"
26− "net/url"
27− "strconv"
28− "strings"
29− "time"
30−
31− "cloud.google.com/go/auth/internal"
32− "github.com/googleapis/gax-go/v2/internallog"
33−)
34−
35−// AuthorizationHandler is a 3-legged-OAuth helper that prompts the user for
36−// OAuth consent at the specified auth code URL and returns an auth code and
37−// state upon approval.
38−type AuthorizationHandler func(authCodeURL string) (code string, state string, err error)
39−
40−// Options3LO are the options for doing a 3-legged OAuth2 flow.
41−type Options3LO struct {
42− // ClientID is the application's ID.
43− ClientID string
44− // ClientSecret is the application's secret. Not required if AuthHandlerOpts
45− // is set.
46− ClientSecret string
47− // AuthURL is the URL for authenticating.
48− AuthURL string
49− // TokenURL is the URL for retrieving a token.
50− TokenURL string
51− // AuthStyle is used to describe how to client info in the token request.
52− AuthStyle Style
53− // RefreshToken is the token used to refresh the credential. Not required
54− // if AuthHandlerOpts is set.
55− RefreshToken string
56− // RedirectURL is the URL to redirect users to. Optional.
57− RedirectURL string
58− // Scopes specifies requested permissions for the Token. Optional.
59− Scopes []string
60−
61− // URLParams are the set of values to apply to the token exchange. Optional.
62− URLParams url.Values
63− // Client is the client to be used to make the underlying token requests.
64− // Optional.
65− Client *http.Client
66− // EarlyTokenExpiry is the time before the token expires that it should be
67− // refreshed. If not set the default value is 3 minutes and 45 seconds.
68− // Optional.
69− EarlyTokenExpiry time.Duration
70−
71− // AuthHandlerOpts provides a set of options for doing a
72− // 3-legged OAuth2 flow with a custom [AuthorizationHandler]. Optional.
73− AuthHandlerOpts *AuthorizationHandlerOptions
74− // Logger is used for debug logging. If provided, logging will be enabled
75− // at the loggers configured level. By default logging is disabled unless
76− // enabled by setting GOOGLE_SDK_GO_LOGGING_LEVEL in which case a default
77− // logger will be used. Optional.
78− Logger *slog.Logger
79−}
80−
81−func (o *Options3LO) validate() error {
82− if o == nil {
83− return errors.New("auth: options must be provided")
84− }
85− if o.ClientID == "" {
86− return errors.New("auth: client ID must be provided")
87− }
88− if o.AuthHandlerOpts == nil && o.ClientSecret == "" {
89− return errors.New("auth: client secret must be provided")
90− }
91− if o.AuthURL == "" {
92− return errors.New("auth: auth URL must be provided")
93− }
94− if o.TokenURL == "" {
95− return errors.New("auth: token URL must be provided")
96− }
97− if o.AuthStyle == StyleUnknown {
98− return errors.New("auth: auth style must be provided")
99− }
100− if o.AuthHandlerOpts == nil && o.RefreshToken == "" {
101− return errors.New("auth: refresh token must be provided")
102− }
103− return nil
104−}
105−
106−func (o *Options3LO) logger() *slog.Logger {
107− return internallog.New(o.Logger)
108−}
109−
110−// PKCEOptions holds parameters to support PKCE.
111−type PKCEOptions struct {
112− // Challenge is the un-padded, base64-url-encoded string of the encrypted code verifier.
113− Challenge string // The un-padded, base64-url-encoded string of the encrypted code verifier.
114− // ChallengeMethod is the encryption method (ex. S256).
115− ChallengeMethod string
116− // Verifier is the original, non-encrypted secret.
117− Verifier string // The original, non-encrypted secret.
118−}
119−
120−type tokenJSON struct {
121− AccessToken string `json:"access_token"`
122− TokenType string `json:"token_type"`
123− RefreshToken string `json:"refresh_token"`
124− ExpiresIn int `json:"expires_in"`
125− // error fields
126− ErrorCode string `json:"error"`
127− ErrorDescription string `json:"error_description"`
128− ErrorURI string `json:"error_uri"`
129−}
130−
131−func (e *tokenJSON) expiry() (t time.Time) {
132− if v := e.ExpiresIn; v != 0 {
133− return time.Now().Add(time.Duration(v) * time.Second)
134− }
135− return
136−}
137−
138−func (o *Options3LO) client() *http.Client {
139− if o.Client != nil {
140− return o.Client
141− }
142− return internal.DefaultClient()
143−}
144−
145−// authCodeURL returns a URL that points to a OAuth2 consent page.
146−func (o *Options3LO) authCodeURL(state string, values url.Values) string {
147− var buf bytes.Buffer
148− buf.WriteString(o.AuthURL)
149− v := url.Values{
150− "response_type": {"code"},
151− "client_id": {o.ClientID},
152− }
153− if o.RedirectURL != "" {
154− v.Set("redirect_uri", o.RedirectURL)
155− }
156− if len(o.Scopes) > 0 {
157− v.Set("scope", strings.Join(o.Scopes, " "))
158− }
159− if state != "" {
160− v.Set("state", state)
161− }
162− if o.AuthHandlerOpts != nil {
163− if o.AuthHandlerOpts.PKCEOpts != nil &&
164− o.AuthHandlerOpts.PKCEOpts.Challenge != "" {
165− v.Set(codeChallengeKey, o.AuthHandlerOpts.PKCEOpts.Challenge)
166− }
167− if o.AuthHandlerOpts.PKCEOpts != nil &&
168− o.AuthHandlerOpts.PKCEOpts.ChallengeMethod != "" {
169− v.Set(codeChallengeMethodKey, o.AuthHandlerOpts.PKCEOpts.ChallengeMethod)
170− }
171− }
172− for k := range values {
173− v.Set(k, v.Get(k))
174− }
175− if strings.Contains(o.AuthURL, "?") {
176− buf.WriteByte('&')
177− } else {
178− buf.WriteByte('?')
179− }
180− buf.WriteString(v.Encode())
181− return buf.String()
182−}
183−
184−// New3LOTokenProvider returns a [TokenProvider] based on the 3-legged OAuth2
185−// configuration. The TokenProvider is caches and auto-refreshes tokens by
186−// default.
187−func New3LOTokenProvider(opts *Options3LO) (TokenProvider, error) {
188− if err := opts.validate(); err != nil {
189− return nil, err
190− }
191− if opts.AuthHandlerOpts != nil {
192− return new3LOTokenProviderWithAuthHandler(opts), nil
193− }
194− return NewCachedTokenProvider(&tokenProvider3LO{opts: opts, refreshToken: opts.RefreshToken, client: opts.client()}, &CachedTokenProviderOptions{
195− ExpireEarly: opts.EarlyTokenExpiry,
196− }), nil
197−}
198−
199−// AuthorizationHandlerOptions provides a set of options to specify for doing a
200−// 3-legged OAuth2 flow with a custom [AuthorizationHandler].
201−type AuthorizationHandlerOptions struct {
202− // AuthorizationHandler specifies the handler used to for the authorization
203− // part of the flow.
204− Handler AuthorizationHandler
205− // State is used verify that the "state" is identical in the request and
206− // response before exchanging the auth code for OAuth2 token.
207− State string
208− // PKCEOpts allows setting configurations for PKCE. Optional.
209− PKCEOpts *PKCEOptions
210−}
211−
212−func new3LOTokenProviderWithAuthHandler(opts *Options3LO) TokenProvider {
213− return NewCachedTokenProvider(&tokenProviderWithHandler{opts: opts, state: opts.AuthHandlerOpts.State}, &CachedTokenProviderOptions{
214− ExpireEarly: opts.EarlyTokenExpiry,
215− })
216−}
217−
218−// exchange handles the final exchange portion of the 3lo flow. Returns a Token,
219−// refreshToken, and error.
220−func (o *Options3LO) exchange(ctx context.Context, code string) (*Token, string, error) {
221− // Build request
222− v := url.Values{
223− "grant_type": {"authorization_code"},
224− "code": {code},
225− }
226− if o.RedirectURL != "" {
227− v.Set("redirect_uri", o.RedirectURL)
228− }
229− if o.AuthHandlerOpts != nil &&
230− o.AuthHandlerOpts.PKCEOpts != nil &&
231− o.AuthHandlerOpts.PKCEOpts.Verifier != "" {
232− v.Set(codeVerifierKey, o.AuthHandlerOpts.PKCEOpts.Verifier)
233− }
234− for k := range o.URLParams {
235− v.Set(k, o.URLParams.Get(k))
236− }
237− return fetchToken(ctx, o, v)
238−}
239−
240−// This struct is not safe for concurrent access alone, but the way it is used
241−// in this package by wrapping it with a cachedTokenProvider makes it so.
242−type tokenProvider3LO struct {
243− opts *Options3LO
244− client *http.Client
245− refreshToken string
246−}
247−
248−func (tp *tokenProvider3LO) Token(ctx context.Context) (*Token, error) {
249− if tp.refreshToken == "" {
250− return nil, errors.New("auth: token expired and refresh token is not set")
251− }
252− v := url.Values{
253− "grant_type": {"refresh_token"},
254− "refresh_token": {tp.refreshToken},
255− }
256− for k := range tp.opts.URLParams {
257− v.Set(k, tp.opts.URLParams.Get(k))
258− }
259−
260− tk, rt, err := fetchToken(ctx, tp.opts, v)
261− if err != nil {
262− return nil, err
263− }
264− if tp.refreshToken != rt && rt != "" {
265− tp.refreshToken = rt
266− }
267− return tk, err
268−}
269−
270−type tokenProviderWithHandler struct {
271− opts *Options3LO
272− state string
273−}
274−
275−func (tp tokenProviderWithHandler) Token(ctx context.Context) (*Token, error) {
276− url := tp.opts.authCodeURL(tp.state, nil)
277− code, state, err := tp.opts.AuthHandlerOpts.Handler(url)
278− if err != nil {
279− return nil, err
280− }
281− if state != tp.state {
282− return nil, errors.New("auth: state mismatch in 3-legged-OAuth flow")
283− }
284− tok, _, err := tp.opts.exchange(ctx, code)
285− return tok, err
286−}
287−
288−// fetchToken returns a Token, refresh token, and/or an error.
289−func fetchToken(ctx context.Context, o *Options3LO, v url.Values) (*Token, string, error) {
290− var refreshToken string
291− if o.AuthStyle == StyleInParams {
292− if o.ClientID != "" {
293− v.Set("client_id", o.ClientID)
294− }
295− if o.ClientSecret != "" {
296− v.Set("client_secret", o.ClientSecret)
297− }
298− }
299− req, err := http.NewRequestWithContext(ctx, "POST", o.TokenURL, strings.NewReader(v.Encode()))
300− if err != nil {
301− return nil, refreshToken, err
302− }
303− req.Header.Set("Content-Type", "application/x-www-form-urlencoded")
304− if o.AuthStyle == StyleInHeader {
305− req.SetBasicAuth(url.QueryEscape(o.ClientID), url.QueryEscape(o.ClientSecret))
306− }
307− logger := o.logger()
308−
309− logger.DebugContext(ctx, "3LO token request", "request", internallog.HTTPRequest(req, []byte(v.Encode())))
310− // Make request
311− resp, body, err := internal.DoRequest(o.client(), req)
312− if err != nil {
313− return nil, refreshToken, err
314− }
315− logger.DebugContext(ctx, "3LO token response", "response", internallog.HTTPResponse(resp, body))
316− failureStatus := resp.StatusCode < 200 || resp.StatusCode > 299
317− tokError := &Error{
318− Response: resp,
319− Body: body,
320− }
321−
322− var token *Token
323− // errors ignored because of default switch on content
324− content, _, _ := mime.ParseMediaType(resp.Header.Get("Content-Type"))
325− switch content {
326− case "application/x-www-form-urlencoded", "text/plain":
327− // some endpoints return a query string
328− vals, err := url.ParseQuery(string(body))
329− if err != nil {
330− if failureStatus {
331− return nil, refreshToken, tokError
332− }
333− return nil, refreshToken, fmt.Errorf("auth: cannot parse response: %w", err)
334− }
335− tokError.code = vals.Get("error")
336− tokError.description = vals.Get("error_description")
337− tokError.uri = vals.Get("error_uri")
338− token = &Token{
339− Value: vals.Get("access_token"),
340− Type: vals.Get("token_type"),
341− Metadata: make(map[string]interface{}, len(vals)),
342− }
343− for k, v := range vals {
344− token.Metadata[k] = v
345− }
346− refreshToken = vals.Get("refresh_token")
347− e := vals.Get("expires_in")
348− expires, _ := strconv.Atoi(e)
349− if expires != 0 {
350− token.Expiry = time.Now().Add(time.Duration(expires) * time.Second)
351− }
352− default:
353− var tj tokenJSON
354− if err = json.Unmarshal(body, &tj); err != nil {
355− if failureStatus {
356− return nil, refreshToken, tokError
357− }
358− return nil, refreshToken, fmt.Errorf("auth: cannot parse json: %w", err)
359− }
360− tokError.code = tj.ErrorCode
361− tokError.description = tj.ErrorDescription
362− tokError.uri = tj.ErrorURI
363− token = &Token{
364− Value: tj.AccessToken,
365− Type: tj.TokenType,
366− Expiry: tj.expiry(),
367− Metadata: make(map[string]interface{}),
368− }
369− json.Unmarshal(body, &token.Metadata) // optional field, skip err check
370− refreshToken = tj.RefreshToken
371− }
372− // according to spec, servers should respond status 400 in error case
373− // https://www.rfc-editor.org/rfc/rfc6749#section-5.2
374− // but some unorthodox servers respond 200 in error case
375− if failureStatus || tokError.code != "" {
376− return nil, refreshToken, tokError
377− }
378− if token.Value == "" {
379− return nil, refreshToken, errors.New("auth: server response missing access_token")
380− }
381− return token, refreshToken, nil
382−}
vendor/cloud.google.com/go/civil/civil.godeleted−350
@@ -1,350 +0,0 @@
1−// Copyright 2016 Google LLC
2−//
3−// Licensed under the Apache License, Version 2.0 (the "License");
4−// you may not use this file except in compliance with the License.
5−// You may obtain a copy of the License at
6−//
7−// http://www.apache.org/licenses/LICENSE-2.0
8−//
9−// Unless required by applicable law or agreed to in writing, software
10−// distributed under the License is distributed on an "AS IS" BASIS,
11−// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12−// See the License for the specific language governing permissions and
13−// limitations under the License.
14−
15−// Package civil implements types for civil time, a time-zone-independent
16−// representation of time that follows the rules of the proleptic
17−// Gregorian calendar with exactly 24-hour days, 60-minute hours, and 60-second
18−// minutes.
19−//
20−// Because they lack location information, these types do not represent unique
21−// moments or intervals of time. Use time.Time for that purpose.
22−package civil
23−
24−import (
25− "fmt"
26− "time"
27−)
28−
29−// A Date represents a date (year, month, day).
30−//
31−// This type does not include location information, and therefore does not
32−// describe a unique 24-hour timespan.
33−type Date struct {
34− Year int // Year (e.g., 2014).
35− Month time.Month // Month of the year (January = 1, ...).
36− Day int // Day of the month, starting at 1.
37−}
38−
39−// DateOf returns the Date in which a time occurs in that time's location.
40−func DateOf(t time.Time) Date {
41− var d Date
42− d.Year, d.Month, d.Day = t.Date()
43− return d
44−}
45−
46−// ParseDate parses a string in RFC3339 full-date format and returns the date value it represents.
47−func ParseDate(s string) (Date, error) {
48− t, err := time.Parse("2006-01-02", s)
49− if err != nil {
50− return Date{}, err
51− }
52− return DateOf(t), nil
53−}
54−
55−// String returns the date in RFC3339 full-date format.
56−func (d Date) String() string {
57− return fmt.Sprintf("%04d-%02d-%02d", d.Year, d.Month, d.Day)
58−}
59−
60−// IsValid reports whether the date is valid.
61−func (d Date) IsValid() bool {
62− return DateOf(d.In(time.UTC)) == d
63−}
64−
65−// In returns the time corresponding to time 00:00:00 of the date in the location.
66−//
67−// In is always consistent with time.Date, even when time.Date returns a time
68−// on a different day. For example, if loc is America/Indiana/Vincennes, then both
69−//
70−// time.Date(1955, time.May, 1, 0, 0, 0, 0, loc)
71−//
72−// and
73−//
74−// civil.Date{Year: 1955, Month: time.May, Day: 1}.In(loc)
75−//
76−// return 23:00:00 on April 30, 1955.
77−//
78−// In panics if loc is nil.
79−func (d Date) In(loc *time.Location) time.Time {
80− return time.Date(d.Year, d.Month, d.Day, 0, 0, 0, 0, loc)
81−}
82−
83−// AddDays returns the date that is n days in the future.
84−// n can also be negative to go into the past.
85−func (d Date) AddDays(n int) Date {
86− return DateOf(d.In(time.UTC).AddDate(0, 0, n))
87−}
88−
89−// DaysSince returns the signed number of days between the date and s, not including the end day.
90−// This is the inverse operation to AddDays.
91−func (d Date) DaysSince(s Date) (days int) {
92− // We convert to Unix time so we do not have to worry about leap seconds:
93− // Unix time increases by exactly 86400 seconds per day.
94− deltaUnix := d.In(time.UTC).Unix() - s.In(time.UTC).Unix()
95− return int(deltaUnix / 86400)
96−}
97−
98−// Before reports whether d occurs before d2.
99−func (d Date) Before(d2 Date) bool {
100− if d.Year != d2.Year {
101− return d.Year < d2.Year
102− }
103− if d.Month != d2.Month {
104− return d.Month < d2.Month
105− }
106− return d.Day < d2.Day
107−}
108−
109−// After reports whether d occurs after d2.
110−func (d Date) After(d2 Date) bool {
111− return d2.Before(d)
112−}
113−
114−// Compare compares d and d2. If d is before d2, it returns -1;
115−// if d is after d2, it returns +1; otherwise it returns 0.
116−func (d Date) Compare(d2 Date) int {
117− if d.Before(d2) {
118− return -1
119− } else if d.After(d2) {
120− return +1
121− }
122− return 0
123−}
124−
125−// IsZero reports whether date fields are set to their default value.
126−func (d Date) IsZero() bool {
127− return (d.Year == 0) && (int(d.Month) == 0) && (d.Day == 0)
128−}
129−
130−// MarshalText implements the encoding.TextMarshaler interface.
131−// The output is the result of d.String().
132−func (d Date) MarshalText() ([]byte, error) {
133− return []byte(d.String()), nil
134−}
135−
136−// UnmarshalText implements the encoding.TextUnmarshaler interface.
137−// The date is expected to be a string in a format accepted by ParseDate.
138−func (d *Date) UnmarshalText(data []byte) error {
139− var err error
140− *d, err = ParseDate(string(data))
141− return err
142−}
143−
144−// A Time represents a time with nanosecond precision.
145−//
146−// This type does not include location information, and therefore does not
147−// describe a unique moment in time.
148−//
149−// This type exists to represent the TIME type in storage-based APIs like BigQuery.
150−// Most operations on Times are unlikely to be meaningful. Prefer the DateTime type.
151−type Time struct {
152− Hour int // The hour of the day in 24-hour format; range [0-23]
153− Minute int // The minute of the hour; range [0-59]
154− Second int // The second of the minute; range [0-59]
155− Nanosecond int // The nanosecond of the second; range [0-999999999]
156−}
157−
158−// TimeOf returns the Time representing the time of day in which a time occurs
159−// in that time's location. It ignores the date.
160−func TimeOf(t time.Time) Time {
161− var tm Time
162− tm.Hour, tm.Minute, tm.Second = t.Clock()
163− tm.Nanosecond = t.Nanosecond()
164− return tm
165−}
166−
167−// ParseTime parses a string and returns the time value it represents.
168−// ParseTime accepts an extended form of the RFC3339 partial-time format. After
169−// the HH:MM:SS part of the string, an optional fractional part may appear,
170−// consisting of a decimal point followed by one to nine decimal digits.
171−// (RFC3339 admits only one digit after the decimal point).
172−func ParseTime(s string) (Time, error) {
173− t, err := time.Parse("15:04:05.999999999", s)
174− if err != nil {
175− return Time{}, err
176− }
177− return TimeOf(t), nil
178−}
179−
180−// String returns the date in the format described in ParseTime. If Nanoseconds
181−// is zero, no fractional part will be generated. Otherwise, the result will
182−// end with a fractional part consisting of a decimal point and nine digits.
183−func (t Time) String() string {
184− s := fmt.Sprintf("%02d:%02d:%02d", t.Hour, t.Minute, t.Second)
185− if t.Nanosecond == 0 {
186− return s
187− }
188− return s + fmt.Sprintf(".%09d", t.Nanosecond)
189−}
190−
191−// IsValid reports whether the time is valid.
192−func (t Time) IsValid() bool {
193− // Construct a non-zero time.
194− tm := time.Date(2, 2, 2, t.Hour, t.Minute, t.Second, t.Nanosecond, time.UTC)
195− return TimeOf(tm) == t
196−}
197−
198−// IsZero reports whether time fields are set to their default value.
199−func (t Time) IsZero() bool {
200− return (t.Hour == 0) && (t.Minute == 0) && (t.Second == 0) && (t.Nanosecond == 0)
201−}
202−
203−// Before reports whether t occurs before t2.
204−func (t Time) Before(t2 Time) bool {
205− if t.Hour != t2.Hour {
206− return t.Hour < t2.Hour
207− }
208− if t.Minute != t2.Minute {
209− return t.Minute < t2.Minute
210− }
211− if t.Second != t2.Second {
212− return t.Second < t2.Second
213− }
214−
215− return t.Nanosecond < t2.Nanosecond
216−}
217−
218−// After reports whether t occurs after t2.
219−func (t Time) After(t2 Time) bool {
220− return t2.Before(t)
221−}
222−
223−// Compare compares t and t2. If t is before t2, it returns -1;
224−// if t is after t2, it returns +1; otherwise it returns 0.
225−func (t Time) Compare(t2 Time) int {
226− if t.Before(t2) {
227− return -1
228− } else if t.After(t2) {
229− return +1
230− }
231− return 0
232−}
233−
234−// MarshalText implements the encoding.TextMarshaler interface.
235−// The output is the result of t.String().
236−func (t Time) MarshalText() ([]byte, error) {
237− return []byte(t.String()), nil
238−}
239−
240−// UnmarshalText implements the encoding.TextUnmarshaler interface.
241−// The time is expected to be a string in a format accepted by ParseTime.
242−func (t *Time) UnmarshalText(data []byte) error {
243− var err error
244− *t, err = ParseTime(string(data))
245− return err
246−}
247−
248−// A DateTime represents a date and time.
249−//
250−// This type does not include location information, and therefore does not
251−// describe a unique moment in time.
252−type DateTime struct {
253− Date Date
254− Time Time
255−}
256−
257−// Note: We deliberately do not embed Date into DateTime, to avoid promoting AddDays and Sub.
258−
259−// DateTimeOf returns the DateTime in which a time occurs in that time's location.
260−func DateTimeOf(t time.Time) DateTime {
261− return DateTime{
262− Date: DateOf(t),
263− Time: TimeOf(t),
264− }
265−}
266−
267−// ParseDateTime parses a string and returns the DateTime it represents.
268−// ParseDateTime accepts a variant of the RFC3339 date-time format that omits
269−// the time offset but includes an optional fractional time, as described in
270−// ParseTime. Informally, the accepted format is
271−//
272−// YYYY-MM-DDTHH:MM:SS[.FFFFFFFFF]
273−//
274−// where the 'T' may be a lower-case 't'.
275−func ParseDateTime(s string) (DateTime, error) {
276− t, err := time.Parse("2006-01-02T15:04:05.999999999", s)
277− if err != nil {
278− t, err = time.Parse("2006-01-02t15:04:05.999999999", s)
279− if err != nil {
280− return DateTime{}, err
281− }
282− }
283− return DateTimeOf(t), nil
284−}
285−
286−// String returns the date in the format described in ParseDate.
287−func (dt DateTime) String() string {
288− return dt.Date.String() + "T" + dt.Time.String()
289−}
290−
291−// IsValid reports whether the datetime is valid.
292−func (dt DateTime) IsValid() bool {
293− return dt.Date.IsValid() && dt.Time.IsValid()
294−}
295−
296−// In returns the time corresponding to the DateTime in the given location.
297−//
298−// If the time is missing or ambigous at the location, In returns the same
299−// result as time.Date. For example, if loc is America/Indiana/Vincennes, then
300−// both
301−//
302−// time.Date(1955, time.May, 1, 0, 30, 0, 0, loc)
303−//
304−// and
305−//
306−// civil.DateTime{
307−// civil.Date{Year: 1955, Month: time.May, Day: 1}},
308−// civil.Time{Minute: 30}}.In(loc)
309−//
310−// return 23:30:00 on April 30, 1955.
311−//
312−// In panics if loc is nil.
313−func (dt DateTime) In(loc *time.Location) time.Time {
314− return time.Date(dt.Date.Year, dt.Date.Month, dt.Date.Day, dt.Time.Hour, dt.Time.Minute, dt.Time.Second, dt.Time.Nanosecond, loc)
315−}
316−
317−// Before reports whether dt occurs before dt2.
318−func (dt DateTime) Before(dt2 DateTime) bool {
319− return dt.In(time.UTC).Before(dt2.In(time.UTC))
320−}
321−
322−// After reports whether dt occurs after dt2.
323−func (dt DateTime) After(dt2 DateTime) bool {
324− return dt2.Before(dt)
325−}
326−
327−// Compare compares dt and dt2. If dt is before dt2, it returns -1;
328−// if dt is after dt2, it returns +1; otherwise it returns 0.
329−func (dt DateTime) Compare(dt2 DateTime) int {
330− return dt.In(time.UTC).Compare(dt2.In(time.UTC))
331−}
332−
333−// IsZero reports whether datetime fields are set to their default value.
334−func (dt DateTime) IsZero() bool {
335− return dt.Date.IsZero() && dt.Time.IsZero()
336−}
337−
338−// MarshalText implements the encoding.TextMarshaler interface.
339−// The output is the result of dt.String().
340−func (dt DateTime) MarshalText() ([]byte, error) {
341− return []byte(dt.String()), nil
342−}
343−
344−// UnmarshalText implements the encoding.TextUnmarshaler interface.
345−// The datetime is expected to be a string in a format accepted by ParseDateTime
346−func (dt *DateTime) UnmarshalText(data []byte) error {
347− var err error
348− *dt, err = ParseDateTime(string(data))
349− return err
350−}
vendor/cloud.google.com/go/compute/metadata/CHANGES.mddeleted−66
@@ -1,66 +0,0 @@
1−# Changes
2−
3−## [0.6.0](https://github.com/googleapis/google-cloud-go/compare/compute/metadata/v0.5.2...compute/metadata/v0.6.0) (2024-12-13)
4−
5−
6−### Features
7−
8−* **compute/metadata:** Add debug logging ([#11078](https://github.com/googleapis/google-cloud-go/issues/11078)) ([a816814](https://github.com/googleapis/google-cloud-go/commit/a81681463906e4473570a2f426eb0dc2de64e53f))
9−
10−## [0.5.2](https://github.com/googleapis/google-cloud-go/compare/compute/metadata/v0.5.1...compute/metadata/v0.5.2) (2024-09-20)
11−
12−
13−### Bug Fixes
14−
15−* **compute/metadata:** Close Response Body for failed request ([#10891](https://github.com/googleapis/google-cloud-go/issues/10891)) ([e91d45e](https://github.com/googleapis/google-cloud-go/commit/e91d45e4757a9e354114509ba9800085d9e0ff1f))
16−
17−## [0.5.1](https://github.com/googleapis/google-cloud-go/compare/compute/metadata/v0.5.0...compute/metadata/v0.5.1) (2024-09-12)
18−
19−
20−### Bug Fixes
21−
22−* **compute/metadata:** Check error chain for retryable error ([#10840](https://github.com/googleapis/google-cloud-go/issues/10840)) ([2bdedef](https://github.com/googleapis/google-cloud-go/commit/2bdedeff621b223d63cebc4355fcf83bc68412cd))
23−
24−## [0.5.0](https://github.com/googleapis/google-cloud-go/compare/compute/metadata/v0.4.0...compute/metadata/v0.5.0) (2024-07-10)
25−
26−
27−### Features
28−
29−* **compute/metadata:** Add sys check for windows OnGCE ([#10521](https://github.com/googleapis/google-cloud-go/issues/10521)) ([3b9a830](https://github.com/googleapis/google-cloud-go/commit/3b9a83063960d2a2ac20beb47cc15818a68bd302))
30−
31−## [0.4.0](https://github.com/googleapis/google-cloud-go/compare/compute/metadata/v0.3.0...compute/metadata/v0.4.0) (2024-07-01)
32−
33−
34−### Features
35−
36−* **compute/metadata:** Add context for all functions/methods ([#10370](https://github.com/googleapis/google-cloud-go/issues/10370)) ([66b8efe](https://github.com/googleapis/google-cloud-go/commit/66b8efe7ad877e052b2987bb4475477e38c67bb3))
37−
38−
39−### Documentation
40−
41−* **compute/metadata:** Update OnGCE description ([#10408](https://github.com/googleapis/google-cloud-go/issues/10408)) ([6a46dca](https://github.com/googleapis/google-cloud-go/commit/6a46dca4eae4f88ec6f88822e01e5bf8aeca787f))
42−
43−## [0.3.0](https://github.com/googleapis/google-cloud-go/compare/compute/metadata/v0.2.3...compute/metadata/v0.3.0) (2024-04-15)
44−
45−
46−### Features
47−
48−* **compute/metadata:** Add context aware functions ([#9733](https://github.com/googleapis/google-cloud-go/issues/9733)) ([e4eb5b4](https://github.com/googleapis/google-cloud-go/commit/e4eb5b46ee2aec9d2fc18300bfd66015e25a0510))
49−
50−## [0.2.3](https://github.com/googleapis/google-cloud-go/compare/compute/metadata/v0.2.2...compute/metadata/v0.2.3) (2022-12-15)
51−
52−
53−### Bug Fixes
54−
55−* **compute/metadata:** Switch DNS lookup to an absolute lookup ([119b410](https://github.com/googleapis/google-cloud-go/commit/119b41060c7895e45e48aee5621ad35607c4d021)), refs [#7165](https://github.com/googleapis/google-cloud-go/issues/7165)
56−
57−## [0.2.2](https://github.com/googleapis/google-cloud-go/compare/compute/metadata/v0.2.1...compute/metadata/v0.2.2) (2022-12-01)
58−
59−
60−### Bug Fixes
61−
62−* **compute/metadata:** Set IdleConnTimeout for http.Client ([#7084](https://github.com/googleapis/google-cloud-go/issues/7084)) ([766516a](https://github.com/googleapis/google-cloud-go/commit/766516aaf3816bfb3159efeea65aa3d1d205a3e2)), refs [#5430](https://github.com/googleapis/google-cloud-go/issues/5430)
63−
64−## [0.1.0] (2022-10-26)
65−
66−Initial release of metadata being it's own module.
vendor/cloud.google.com/go/compute/metadata/LICENSEdeleted−202
@@ -1,202 +0,0 @@
1−
2− Apache License
3− Version 2.0, January 2004
4− http://www.apache.org/licenses/
5−
6− TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
7−
8− 1. Definitions.
9−
10− "License" shall mean the terms and conditions for use, reproduction,
11− and distribution as defined by Sections 1 through 9 of this document.
12−
13− "Licensor" shall mean the copyright owner or entity authorized by
14− the copyright owner that is granting the License.
15−
16− "Legal Entity" shall mean the union of the acting entity and all
17− other entities that control, are controlled by, or are under common
18− control with that entity. For the purposes of this definition,
19− "control" means (i) the power, direct or indirect, to cause the
20− direction or management of such entity, whether by contract or
21− otherwise, or (ii) ownership of fifty percent (50%) or more of the
22− outstanding shares, or (iii) beneficial ownership of such entity.
23−
24− "You" (or "Your") shall mean an individual or Legal Entity
25− exercising permissions granted by this License.
26−
27− "Source" form shall mean the preferred form for making modifications,
28− including but not limited to software source code, documentation
29− source, and configuration files.
30−
31− "Object" form shall mean any form resulting from mechanical
32− transformation or translation of a Source form, including but
33− not limited to compiled object code, generated documentation,
34− and conversions to other media types.
35−
36− "Work" shall mean the work of authorship, whether in Source or
37− Object form, made available under the License, as indicated by a
38− copyright notice that is included in or attached to the work
39− (an example is provided in the Appendix below).
40−
41− "Derivative Works" shall mean any work, whether in Source or Object
42− form, that is based on (or derived from) the Work and for which the
43− editorial revisions, annotations, elaborations, or other modifications
44− represent, as a whole, an original work of authorship. For the purposes
45− of this License, Derivative Works shall not include works that remain
46− separable from, or merely link (or bind by name) to the interfaces of,
47− the Work and Derivative Works thereof.
48−
49− "Contribution" shall mean any work of authorship, including
50− the original version of the Work and any modifications or additions
51− to that Work or Derivative Works thereof, that is intentionally
52− submitted to Licensor for inclusion in the Work by the copyright owner
53− or by an individual or Legal Entity authorized to submit on behalf of
54− the copyright owner. For the purposes of this definition, "submitted"
55− means any form of electronic, verbal, or written communication sent
56− to the Licensor or its representatives, including but not limited to
57− communication on electronic mailing lists, source code control systems,
58− and issue tracking systems that are managed by, or on behalf of, the
59− Licensor for the purpose of discussing and improving the Work, but
60− excluding communication that is conspicuously marked or otherwise
61− designated in writing by the copyright owner as "Not a Contribution."
62−
63− "Contributor" shall mean Licensor and any individual or Legal Entity
64− on behalf of whom a Contribution has been received by Licensor and
65− subsequently incorporated within the Work.
66−
67− 2. Grant of Copyright License. Subject to the terms and conditions of
68− this License, each Contributor hereby grants to You a perpetual,
69− worldwide, non-exclusive, no-charge, royalty-free, irrevocable
70− copyright license to reproduce, prepare Derivative Works of,
71− publicly display, publicly perform, sublicense, and distribute the
72− Work and such Derivative Works in Source or Object form.
73−
74− 3. Grant of Patent License. Subject to the terms and conditions of
75− this License, each Contributor hereby grants to You a perpetual,
76− worldwide, non-exclusive, no-charge, royalty-free, irrevocable
77− (except as stated in this section) patent license to make, have made,
78− use, offer to sell, sell, import, and otherwise transfer the Work,
79− where such license applies only to those patent claims licensable
80− by such Contributor that are necessarily infringed by their
81− Contribution(s) alone or by combination of their Contribution(s)
82− with the Work to which such Contribution(s) was submitted. If You
83− institute patent litigation against any entity (including a
84− cross-claim or counterclaim in a lawsuit) alleging that the Work
85− or a Contribution incorporated within the Work constitutes direct
86− or contributory patent infringement, then any patent licenses
87− granted to You under this License for that Work shall terminate
88− as of the date such litigation is filed.
89−
90− 4. Redistribution. You may reproduce and distribute copies of the
91− Work or Derivative Works thereof in any medium, with or without
92− modifications, and in Source or Object form, provided that You
93− meet the following conditions:
94−
95− (a) You must give any other recipients of the Work or
96− Derivative Works a copy of this License; and
97−
98− (b) You must cause any modified files to carry prominent notices
99− stating that You changed the files; and
100−
101− (c) You must retain, in the Source form of any Derivative Works
102− that You distribute, all copyright, patent, trademark, and
103− attribution notices from the Source form of the Work,
104− excluding those notices that do not pertain to any part of
105− the Derivative Works; and
106−
107− (d) If the Work includes a "NOTICE" text file as part of its
108− distribution, then any Derivative Works that You distribute must
109− include a readable copy of the attribution notices contained
110− within such NOTICE file, excluding those notices that do not
111− pertain to any part of the Derivative Works, in at least one
112− of the following places: within a NOTICE text file distributed
113− as part of the Derivative Works; within the Source form or
114− documentation, if provided along with the Derivative Works; or,
115− within a display generated by the Derivative Works, if and
116− wherever such third-party notices normally appear. The contents
117− of the NOTICE file are for informational purposes only and
118− do not modify the License. You may add Your own attribution
119− notices within Derivative Works that You distribute, alongside
120− or as an addendum to the NOTICE text from the Work, provided
121− that such additional attribution notices cannot be construed
122− as modifying the License.
123−
124− You may add Your own copyright statement to Your modifications and
125− may provide additional or different license terms and conditions
126− for use, reproduction, or distribution of Your modifications, or
127− for any such Derivative Works as a whole, provided Your use,
128− reproduction, and distribution of the Work otherwise complies with
129− the conditions stated in this License.
130−
131− 5. Submission of Contributions. Unless You explicitly state otherwise,
132− any Contribution intentionally submitted for inclusion in the Work
133− by You to the Licensor shall be under the terms and conditions of
134− this License, without any additional terms or conditions.
135− Notwithstanding the above, nothing herein shall supersede or modify
136− the terms of any separate license agreement you may have executed
137− with Licensor regarding such Contributions.
138−
139− 6. Trademarks. This License does not grant permission to use the trade
140− names, trademarks, service marks, or product names of the Licensor,
141− except as required for reasonable and customary use in describing the
142− origin of the Work and reproducing the content of the NOTICE file.
143−
144− 7. Disclaimer of Warranty. Unless required by applicable law or
145− agreed to in writing, Licensor provides the Work (and each
146− Contributor provides its Contributions) on an "AS IS" BASIS,
147− WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
148− implied, including, without limitation, any warranties or conditions
149− of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
150− PARTICULAR PURPOSE. You are solely responsible for determining the
151− appropriateness of using or redistributing the Work and assume any
152− risks associated with Your exercise of permissions under this License.
153−
154− 8. Limitation of Liability. In no event and under no legal theory,
155− whether in tort (including negligence), contract, or otherwise,
156− unless required by applicable law (such as deliberate and grossly
157− negligent acts) or agreed to in writing, shall any Contributor be
158− liable to You for damages, including any direct, indirect, special,
159− incidental, or consequential damages of any character arising as a
160− result of this License or out of the use or inability to use the
161− Work (including but not limited to damages for loss of goodwill,
162− work stoppage, computer failure or malfunction, or any and all
163− other commercial damages or losses), even if such Contributor
164− has been advised of the possibility of such damages.
165−
166− 9. Accepting Warranty or Additional Liability. While redistributing
167− the Work or Derivative Works thereof, You may choose to offer,
168− and charge a fee for, acceptance of support, warranty, indemnity,
169− or other liability obligations and/or rights consistent with this
170− License. However, in accepting such obligations, You may act only
171− on Your own behalf and on Your sole responsibility, not on behalf
172− of any other Contributor, and only if You agree to indemnify,
173− defend, and hold each Contributor harmless for any liability
174− incurred by, or claims asserted against, such Contributor by reason
175− of your accepting any such warranty or additional liability.
176−
177− END OF TERMS AND CONDITIONS
178−
179− APPENDIX: How to apply the Apache License to your work.
180−
181− To apply the Apache License to your work, attach the following
182− boilerplate notice, with the fields enclosed by brackets "[]"
183− replaced with your own identifying information. (Don't include
184− the brackets!) The text should be enclosed in the appropriate
185− comment syntax for the file format. We also recommend that a
186− file or class name and description of purpose be included on the
187− same "printed page" as the copyright notice for easier
188− identification within third-party archives.
189−
190− Copyright [yyyy] [name of copyright owner]
191−
192− Licensed under the Apache License, Version 2.0 (the "License");
193− you may not use this file except in compliance with the License.
194− You may obtain a copy of the License at
195−
196− http://www.apache.org/licenses/LICENSE-2.0
197−
198− Unless required by applicable law or agreed to in writing, software
199− distributed under the License is distributed on an "AS IS" BASIS,
200− WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
201− See the License for the specific language governing permissions and
202− limitations under the License.
vendor/cloud.google.com/go/compute/metadata/README.mddeleted−27
@@ -1,27 +0,0 @@
1−# Compute API
2−
3−[![Go Reference](https://pkg.go.dev/badge/cloud.google.com/go/compute.svg)](https://pkg.go.dev/cloud.google.com/go/compute/metadata)
4−
5−This is a utility library for communicating with Google Cloud metadata service
6−on Google Cloud.
7−
8−## Install
9−
10−```bash
11−go get cloud.google.com/go/compute/metadata
12−```
13−
14−## Go Version Support
15−
16−See the [Go Versions Supported](https://github.com/googleapis/google-cloud-go#go-versions-supported)
17−section in the root directory's README.
18−
19−## Contributing
20−
21−Contributions are welcome. Please, see the [CONTRIBUTING](https://github.com/GoogleCloudPlatform/google-cloud-go/blob/main/CONTRIBUTING.md)
22−document for details.
23−
24−Please note that this project is released with a Contributor Code of Conduct.
25−By participating in this project you agree to abide by its terms. See
26−[Contributor Code of Conduct](https://github.com/GoogleCloudPlatform/google-cloud-go/blob/main/CONTRIBUTING.md#contributor-code-of-conduct)
27−for more information.
vendor/cloud.google.com/go/compute/metadata/log.godeleted−149
@@ -1,149 +0,0 @@
1−// Copyright 2024 Google LLC
2−//
3−// Licensed under the Apache License, Version 2.0 (the "License");
4−// you may not use this file except in compliance with the License.
5−// You may obtain a copy of the License at
6−//
7−// http://www.apache.org/licenses/LICENSE-2.0
8−//
9−// Unless required by applicable law or agreed to in writing, software
10−// distributed under the License is distributed on an "AS IS" BASIS,
11−// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12−// See the License for the specific language governing permissions and
13−// limitations under the License.
14−
15−package metadata
16−
17−import (
18− "bytes"
19− "context"
20− "encoding/json"
21− "fmt"
22− "log/slog"
23− "net/http"
24− "strings"
25−)
26−
27−// Code below this point is copied from github.com/googleapis/gax-go/v2/internallog
28−// to avoid the dependency. The compute/metadata module is used by too many
29−// non-client library modules that can't justify the dependency.
30−
31−// The handler returned if logging is not enabled.
32−type noOpHandler struct{}
33−
34−func (h noOpHandler) Enabled(_ context.Context, _ slog.Level) bool {
35− return false
36−}
37−
38−func (h noOpHandler) Handle(_ context.Context, _ slog.Record) error {
39− return nil
40−}
41−
42−func (h noOpHandler) WithAttrs(_ []slog.Attr) slog.Handler {
43− return h
44−}
45−
46−func (h noOpHandler) WithGroup(_ string) slog.Handler {
47− return h
48−}
49−
50−// httpRequest returns a lazily evaluated [slog.LogValuer] for a
51−// [http.Request] and the associated body.
52−func httpRequest(req *http.Request, body []byte) slog.LogValuer {
53− return &request{
54− req: req,
55− payload: body,
56− }
57−}
58−
59−type request struct {
60− req *http.Request
61− payload []byte
62−}
63−
64−func (r *request) LogValue() slog.Value {
65− if r == nil || r.req == nil {
66− return slog.Value{}
67− }
68− var groupValueAttrs []slog.Attr
69− groupValueAttrs = append(groupValueAttrs, slog.String("method", r.req.Method))
70− groupValueAttrs = append(groupValueAttrs, slog.String("url", r.req.URL.String()))
71−
72− var headerAttr []slog.Attr
73− for k, val := range r.req.Header {
74− headerAttr = append(headerAttr, slog.String(k, strings.Join(val, ",")))
75− }
76− if len(headerAttr) > 0 {
77− groupValueAttrs = append(groupValueAttrs, slog.Any("headers", headerAttr))
78− }
79−
80− if len(r.payload) > 0 {
81− if attr, ok := processPayload(r.payload); ok {
82− groupValueAttrs = append(groupValueAttrs, attr)
83− }
84− }
85− return slog.GroupValue(groupValueAttrs...)
86−}
87−
88−// httpResponse returns a lazily evaluated [slog.LogValuer] for a
89−// [http.Response] and the associated body.
90−func httpResponse(resp *http.Response, body []byte) slog.LogValuer {
91− return &response{
92− resp: resp,
93− payload: body,
94− }
95−}
96−
97−type response struct {
98− resp *http.Response
99− payload []byte
100−}
101−
102−func (r *response) LogValue() slog.Value {
103− if r == nil {
104− return slog.Value{}
105− }
106− var groupValueAttrs []slog.Attr
107− groupValueAttrs = append(groupValueAttrs, slog.String("status", fmt.Sprint(r.resp.StatusCode)))
108−
109− var headerAttr []slog.Attr
110− for k, val := range r.resp.Header {
111− headerAttr = append(headerAttr, slog.String(k, strings.Join(val, ",")))
112− }
113− if len(headerAttr) > 0 {
114− groupValueAttrs = append(groupValueAttrs, slog.Any("headers", headerAttr))
115− }
116−
117− if len(r.payload) > 0 {
118− if attr, ok := processPayload(r.payload); ok {
119− groupValueAttrs = append(groupValueAttrs, attr)
120− }
121− }
122− return slog.GroupValue(groupValueAttrs...)
123−}
124−
125−func processPayload(payload []byte) (slog.Attr, bool) {
126− peekChar := payload[0]
127− if peekChar == '{' {
128− // JSON object
129− var m map[string]any
130− if err := json.Unmarshal(payload, &m); err == nil {
131− return slog.Any("payload", m), true
132− }
133− } else if peekChar == '[' {
134− // JSON array
135− var m []any
136− if err := json.Unmarshal(payload, &m); err == nil {
137− return slog.Any("payload", m), true
138− }
139− } else {
140− // Everything else
141− buf := &bytes.Buffer{}
142− if err := json.Compact(buf, payload); err != nil {
143− // Write raw payload incase of error
144− buf.Write(payload)
145− }
146− return slog.String("payload", buf.String()), true
147− }
148− return slog.Attr{}, false
149−}
vendor/cloud.google.com/go/compute/metadata/metadata.godeleted−872
@@ -1,872 +0,0 @@
1−// Copyright 2014 Google LLC
2−//
3−// Licensed under the Apache License, Version 2.0 (the "License");
4−// you may not use this file except in compliance with the License.
5−// You may obtain a copy of the License at
6−//
7−// http://www.apache.org/licenses/LICENSE-2.0
8−//
9−// Unless required by applicable law or agreed to in writing, software
10−// distributed under the License is distributed on an "AS IS" BASIS,
11−// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12−// See the License for the specific language governing permissions and
13−// limitations under the License.
14−
15−// Package metadata provides access to Google Compute Engine (GCE)
16−// metadata and API service accounts.
17−//
18−// This package is a wrapper around the GCE metadata service,
19−// as documented at https://cloud.google.com/compute/docs/metadata/overview.
20−package metadata // import "cloud.google.com/go/compute/metadata"
21−
22−import (
23− "context"
24− "encoding/json"
25− "fmt"
26− "io"
27− "log/slog"
28− "net"
29− "net/http"
30− "net/url"
31− "os"
32− "strings"
33− "sync"
34− "time"
35−)
36−
37−const (
38− // metadataIP is the documented metadata server IP address.
39− metadataIP = "169.254.169.254"
40−
41− // metadataHostEnv is the environment variable specifying the
42− // GCE metadata hostname. If empty, the default value of
43− // metadataIP ("169.254.169.254") is used instead.
44− // This is variable name is not defined by any spec, as far as
45− // I know; it was made up for the Go package.
46− metadataHostEnv = "GCE_METADATA_HOST"
47−
48− userAgent = "gcloud-golang/0.1"
49−)
50−
51−type cachedValue struct {
52− k string
53− trim bool
54− mu sync.Mutex
55− v string
56−}
57−
58−var (
59− projID = &cachedValue{k: "project/project-id", trim: true}
60− projNum = &cachedValue{k: "project/numeric-project-id", trim: true}
61− instID = &cachedValue{k: "instance/id", trim: true}
62−)
63−
64−var defaultClient = &Client{
65− hc: newDefaultHTTPClient(),
66− logger: slog.New(noOpHandler{}),
67−}
68−
69−func newDefaultHTTPClient() *http.Client {
70− return &http.Client{
71− Transport: &http.Transport{
72− Dial: (&net.Dialer{
73− Timeout: 2 * time.Second,
74− KeepAlive: 30 * time.Second,
75− }).Dial,
76− IdleConnTimeout: 60 * time.Second,
77− },
78− Timeout: 5 * time.Second,
79− }
80−}
81−
82−// NotDefinedError is returned when requested metadata is not defined.
83−//
84−// The underlying string is the suffix after "/computeMetadata/v1/".
85−//
86−// This error is not returned if the value is defined to be the empty
87−// string.
88−type NotDefinedError string
89−
90−func (suffix NotDefinedError) Error() string {
91− return fmt.Sprintf("metadata: GCE metadata %q not defined", string(suffix))
92−}
93−
94−func (c *cachedValue) get(ctx context.Context, cl *Client) (v string, err error) {
95− defer c.mu.Unlock()
96− c.mu.Lock()
97− if c.v != "" {
98− return c.v, nil
99− }
100− if c.trim {
101− v, err = cl.getTrimmed(ctx, c.k)
102− } else {
103− v, err = cl.GetWithContext(ctx, c.k)
104− }
105− if err == nil {
106− c.v = v
107− }
108− return
109−}
110−
111−var (
112− onGCEOnce sync.Once
113− onGCE bool
114−)
115−
116−// OnGCE reports whether this process is running on Google Compute Platforms.
117−// NOTE: True returned from `OnGCE` does not guarantee that the metadata server
118−// is accessible from this process and have all the metadata defined.
119−func OnGCE() bool {
120− onGCEOnce.Do(initOnGCE)
121− return onGCE
122−}
123−
124−func initOnGCE() {
125− onGCE = testOnGCE()
126−}
127−
128−func testOnGCE() bool {
129− // The user explicitly said they're on GCE, so trust them.
130− if os.Getenv(metadataHostEnv) != "" {
131− return true
132− }
133−
134− ctx, cancel := context.WithCancel(context.Background())
135− defer cancel()
136−
137− resc := make(chan bool, 2)
138−
139− // Try two strategies in parallel.
140− // See https://github.com/googleapis/google-cloud-go/issues/194
141− go func() {
142− req, _ := http.NewRequest("GET", "http://"+metadataIP, nil)
143− req.Header.Set("User-Agent", userAgent)
144− res, err := newDefaultHTTPClient().Do(req.WithContext(ctx))
145− if err != nil {
146− resc <- false
147− return
148− }
149− defer res.Body.Close()
150− resc <- res.Header.Get("Metadata-Flavor") == "Google"
151− }()
152−
153− go func() {
154− resolver := &net.Resolver{}
155− addrs, err := resolver.LookupHost(ctx, "metadata.google.internal.")
156− if err != nil || len(addrs) == 0 {
157− resc <- false
158− return
159− }
160− resc <- strsContains(addrs, metadataIP)
161− }()
162−
163− tryHarder := systemInfoSuggestsGCE()
164− if tryHarder {
165− res := <-resc
166− if res {
167− // The first strategy succeeded, so let's use it.
168− return true
169− }
170− // Wait for either the DNS or metadata server probe to
171− // contradict the other one and say we are running on
172− // GCE. Give it a lot of time to do so, since the system
173− // info already suggests we're running on a GCE BIOS.
174− timer := time.NewTimer(5 * time.Second)
175− defer timer.Stop()
176− select {
177− case res = <-resc:
178− return res
179− case <-timer.C:
180− // Too slow. Who knows what this system is.
181− return false
182− }
183− }
184−
185− // There's no hint from the system info that we're running on
186− // GCE, so use the first probe's result as truth, whether it's
187− // true or false. The goal here is to optimize for speed for
188− // users who are NOT running on GCE. We can't assume that
189− // either a DNS lookup or an HTTP request to a blackholed IP
190− // address is fast. Worst case this should return when the
191− // metaClient's Transport.ResponseHeaderTimeout or
192− // Transport.Dial.Timeout fires (in two seconds).
193− return <-resc
194−}
195−
196−// Subscribe calls Client.SubscribeWithContext on the default client.
197−//
198−// Deprecated: Please use the context aware variant [SubscribeWithContext].
199−func Subscribe(suffix string, fn func(v string, ok bool) error) error {
200− return defaultClient.SubscribeWithContext(context.Background(), suffix, func(ctx context.Context, v string, ok bool) error { return fn(v, ok) })
201−}
202−
203−// SubscribeWithContext calls Client.SubscribeWithContext on the default client.
204−func SubscribeWithContext(ctx context.Context, suffix string, fn func(ctx context.Context, v string, ok bool) error) error {
205− return defaultClient.SubscribeWithContext(ctx, suffix, fn)
206−}
207−
208−// Get calls Client.GetWithContext on the default client.
209−//
210−// Deprecated: Please use the context aware variant [GetWithContext].
211−func Get(suffix string) (string, error) {
212− return defaultClient.GetWithContext(context.Background(), suffix)
213−}
214−
215−// GetWithContext calls Client.GetWithContext on the default client.
216−func GetWithContext(ctx context.Context, suffix string) (string, error) {
217− return defaultClient.GetWithContext(ctx, suffix)
218−}
219−
220−// ProjectID returns the current instance's project ID string.
221−//
222−// Deprecated: Please use the context aware variant [ProjectIDWithContext].
223−func ProjectID() (string, error) {
224− return defaultClient.ProjectIDWithContext(context.Background())
225−}
226−
227−// ProjectIDWithContext returns the current instance's project ID string.
228−func ProjectIDWithContext(ctx context.Context) (string, error) {
229− return defaultClient.ProjectIDWithContext(ctx)
230−}
231−
232−// NumericProjectID returns the current instance's numeric project ID.
233−//
234−// Deprecated: Please use the context aware variant [NumericProjectIDWithContext].
235−func NumericProjectID() (string, error) {
236− return defaultClient.NumericProjectIDWithContext(context.Background())
237−}
238−
239−// NumericProjectIDWithContext returns the current instance's numeric project ID.
240−func NumericProjectIDWithContext(ctx context.Context) (string, error) {
241− return defaultClient.NumericProjectIDWithContext(ctx)
242−}
243−
244−// InternalIP returns the instance's primary internal IP address.
245−//
246−// Deprecated: Please use the context aware variant [InternalIPWithContext].
247−func InternalIP() (string, error) {
248− return defaultClient.InternalIPWithContext(context.Background())
249−}
250−
251−// InternalIPWithContext returns the instance's primary internal IP address.
252−func InternalIPWithContext(ctx context.Context) (string, error) {
253− return defaultClient.InternalIPWithContext(ctx)
254−}
255−
256−// ExternalIP returns the instance's primary external (public) IP address.
257−//
258−// Deprecated: Please use the context aware variant [ExternalIPWithContext].
259−func ExternalIP() (string, error) {
260− return defaultClient.ExternalIPWithContext(context.Background())
261−}
262−
263−// ExternalIPWithContext returns the instance's primary external (public) IP address.
264−func ExternalIPWithContext(ctx context.Context) (string, error) {
265− return defaultClient.ExternalIPWithContext(ctx)
266−}
267−
268−// Email calls Client.EmailWithContext on the default client.
269−//
270−// Deprecated: Please use the context aware variant [EmailWithContext].
271−func Email(serviceAccount string) (string, error) {
272− return defaultClient.EmailWithContext(context.Background(), serviceAccount)
273−}
274−
275−// EmailWithContext calls Client.EmailWithContext on the default client.
276−func EmailWithContext(ctx context.Context, serviceAccount string) (string, error) {
277− return defaultClient.EmailWithContext(ctx, serviceAccount)
278−}
279−
280−// Hostname returns the instance's hostname. This will be of the form
281−// "<instanceID>.c.<projID>.internal".
282−//
283−// Deprecated: Please use the context aware variant [HostnameWithContext].
284−func Hostname() (string, error) {
285− return defaultClient.HostnameWithContext(context.Background())
286−}
287−
288−// HostnameWithContext returns the instance's hostname. This will be of the form
289−// "<instanceID>.c.<projID>.internal".
290−func HostnameWithContext(ctx context.Context) (string, error) {
291− return defaultClient.HostnameWithContext(ctx)
292−}
293−
294−// InstanceTags returns the list of user-defined instance tags,
295−// assigned when initially creating a GCE instance.
296−//
297−// Deprecated: Please use the context aware variant [InstanceTagsWithContext].
298−func InstanceTags() ([]string, error) {
299− return defaultClient.InstanceTagsWithContext(context.Background())
300−}
301−
302−// InstanceTagsWithContext returns the list of user-defined instance tags,
303−// assigned when initially creating a GCE instance.
304−func InstanceTagsWithContext(ctx context.Context) ([]string, error) {
305− return defaultClient.InstanceTagsWithContext(ctx)
306−}
307−
308−// InstanceID returns the current VM's numeric instance ID.
309−//
310−// Deprecated: Please use the context aware variant [InstanceIDWithContext].
311−func InstanceID() (string, error) {
312− return defaultClient.InstanceIDWithContext(context.Background())
313−}
314−
315−// InstanceIDWithContext returns the current VM's numeric instance ID.
316−func InstanceIDWithContext(ctx context.Context) (string, error) {
317− return defaultClient.InstanceIDWithContext(ctx)
318−}
319−
320−// InstanceName returns the current VM's instance ID string.
321−//
322−// Deprecated: Please use the context aware variant [InstanceNameWithContext].
323−func InstanceName() (string, error) {
324− return defaultClient.InstanceNameWithContext(context.Background())
325−}
326−
327−// InstanceNameWithContext returns the current VM's instance ID string.
328−func InstanceNameWithContext(ctx context.Context) (string, error) {
329− return defaultClient.InstanceNameWithContext(ctx)
330−}
331−
332−// Zone returns the current VM's zone, such as "us-central1-b".
333−//
334−// Deprecated: Please use the context aware variant [ZoneWithContext].
335−func Zone() (string, error) {
336− return defaultClient.ZoneWithContext(context.Background())
337−}
338−
339−// ZoneWithContext returns the current VM's zone, such as "us-central1-b".
340−func ZoneWithContext(ctx context.Context) (string, error) {
341− return defaultClient.ZoneWithContext(ctx)
342−}
343−
344−// InstanceAttributes calls Client.InstanceAttributesWithContext on the default client.
345−//
346−// Deprecated: Please use the context aware variant [InstanceAttributesWithContext.
347−func InstanceAttributes() ([]string, error) {
348− return defaultClient.InstanceAttributesWithContext(context.Background())
349−}
350−
351−// InstanceAttributesWithContext calls Client.ProjectAttributesWithContext on the default client.
352−func InstanceAttributesWithContext(ctx context.Context) ([]string, error) {
353− return defaultClient.InstanceAttributesWithContext(ctx)
354−}
355−
356−// ProjectAttributes calls Client.ProjectAttributesWithContext on the default client.
357−//
358−// Deprecated: Please use the context aware variant [ProjectAttributesWithContext].
359−func ProjectAttributes() ([]string, error) {
360− return defaultClient.ProjectAttributesWithContext(context.Background())
361−}
362−
363−// ProjectAttributesWithContext calls Client.ProjectAttributesWithContext on the default client.
364−func ProjectAttributesWithContext(ctx context.Context) ([]string, error) {
365− return defaultClient.ProjectAttributesWithContext(ctx)
366−}
367−
368−// InstanceAttributeValue calls Client.InstanceAttributeValueWithContext on the default client.
369−//
370−// Deprecated: Please use the context aware variant [InstanceAttributeValueWithContext].
371−func InstanceAttributeValue(attr string) (string, error) {
372− return defaultClient.InstanceAttributeValueWithContext(context.Background(), attr)
373−}
374−
375−// InstanceAttributeValueWithContext calls Client.InstanceAttributeValueWithContext on the default client.
376−func InstanceAttributeValueWithContext(ctx context.Context, attr string) (string, error) {
377− return defaultClient.InstanceAttributeValueWithContext(ctx, attr)
378−}
379−
380−// ProjectAttributeValue calls Client.ProjectAttributeValueWithContext on the default client.
381−//
382−// Deprecated: Please use the context aware variant [ProjectAttributeValueWithContext].
383−func ProjectAttributeValue(attr string) (string, error) {
384− return defaultClient.ProjectAttributeValueWithContext(context.Background(), attr)
385−}
386−
387−// ProjectAttributeValueWithContext calls Client.ProjectAttributeValueWithContext on the default client.
388−func ProjectAttributeValueWithContext(ctx context.Context, attr string) (string, error) {
389− return defaultClient.ProjectAttributeValueWithContext(ctx, attr)
390−}
391−
392−// Scopes calls Client.ScopesWithContext on the default client.
393−//
394−// Deprecated: Please use the context aware variant [ScopesWithContext].
395−func Scopes(serviceAccount string) ([]string, error) {
396− return defaultClient.ScopesWithContext(context.Background(), serviceAccount)
397−}
398−
399−// ScopesWithContext calls Client.ScopesWithContext on the default client.
400−func ScopesWithContext(ctx context.Context, serviceAccount string) ([]string, error) {
401− return defaultClient.ScopesWithContext(ctx, serviceAccount)
402−}
403−
404−func strsContains(ss []string, s string) bool {
405− for _, v := range ss {
406− if v == s {
407− return true
408− }
409− }
410− return false
411−}
412−
413−// A Client provides metadata.
414−type Client struct {
415− hc *http.Client
416− logger *slog.Logger
417−}
418−
419−// Options for configuring a [Client].
420−type Options struct {
421− // Client is the HTTP client used to make requests. Optional.
422− Client *http.Client
423− // Logger is used to log information about HTTP request and responses.
424− // If not provided, nothing will be logged. Optional.
425− Logger *slog.Logger
426−}
427−
428−// NewClient returns a Client that can be used to fetch metadata.
429−// Returns the client that uses the specified http.Client for HTTP requests.
430−// If nil is specified, returns the default client.
431−func NewClient(c *http.Client) *Client {
432− return NewWithOptions(&Options{
433− Client: c,
434− })
435−}
436−
437−// NewWithOptions returns a Client that is configured with the provided Options.
438−func NewWithOptions(opts *Options) *Client {
439− if opts == nil {
440− return defaultClient
441− }
442− client := opts.Client
443− if client == nil {
444− client = newDefaultHTTPClient()
445− }
446− logger := opts.Logger
447− if logger == nil {
448− logger = slog.New(noOpHandler{})
449− }
450− return &Client{hc: client, logger: logger}
451−}
452−
453−// getETag returns a value from the metadata service as well as the associated ETag.
454−// This func is otherwise equivalent to Get.
455−func (c *Client) getETag(ctx context.Context, suffix string) (value, etag string, err error) {
456− // Using a fixed IP makes it very difficult to spoof the metadata service in
457− // a container, which is an important use-case for local testing of cloud
458− // deployments. To enable spoofing of the metadata service, the environment
459− // variable GCE_METADATA_HOST is first inspected to decide where metadata
460− // requests shall go.
461− host := os.Getenv(metadataHostEnv)
462− if host == "" {
463− // Using 169.254.169.254 instead of "metadata" here because Go
464− // binaries built with the "netgo" tag and without cgo won't
465− // know the search suffix for "metadata" is
466− // ".google.internal", and this IP address is documented as
467− // being stable anyway.
468− host = metadataIP
469− }
470− suffix = strings.TrimLeft(suffix, "/")
471− u := "http://" + host + "/computeMetadata/v1/" + suffix
472− req, err := http.NewRequestWithContext(ctx, "GET", u, nil)
473− if err != nil {
474− return "", "", err
475− }
476− req.Header.Set("Metadata-Flavor", "Google")
477− req.Header.Set("User-Agent", userAgent)
478− var res *http.Response
479− var reqErr error
480− var body []byte
481− retryer := newRetryer()
482− for {
483− c.logger.DebugContext(ctx, "metadata request", "request", httpRequest(req, nil))
484− res, reqErr = c.hc.Do(req)
485− var code int
486− if res != nil {
487− code = res.StatusCode
488− body, err = io.ReadAll(res.Body)
489− if err != nil {
490− res.Body.Close()
491− return "", "", err
492− }
493− c.logger.DebugContext(ctx, "metadata response", "response", httpResponse(res, body))
494− res.Body.Close()
495− }
496− if delay, shouldRetry := retryer.Retry(code, reqErr); shouldRetry {
497− if res != nil && res.Body != nil {
498− res.Body.Close()
499− }
500− if err := sleep(ctx, delay); err != nil {
501− return "", "", err
502− }
503− continue
504− }
505− break
506− }
507− if reqErr != nil {
508− return "", "", reqErr
509− }
510− if res.StatusCode == http.StatusNotFound {
511− return "", "", NotDefinedError(suffix)
512− }
513− if res.StatusCode != 200 {
514− return "", "", &Error{Code: res.StatusCode, Message: string(body)}
515− }
516− return string(body), res.Header.Get("Etag"), nil
517−}
518−
519−// Get returns a value from the metadata service.
520−// The suffix is appended to "http://${GCE_METADATA_HOST}/computeMetadata/v1/".
521−//
522−// If the GCE_METADATA_HOST environment variable is not defined, a default of
523−// 169.254.169.254 will be used instead.
524−//
525−// If the requested metadata is not defined, the returned error will
526−// be of type NotDefinedError.
527−//
528−// Deprecated: Please use the context aware variant [Client.GetWithContext].
529−func (c *Client) Get(suffix string) (string, error) {
530− return c.GetWithContext(context.Background(), suffix)
531−}
532−
533−// GetWithContext returns a value from the metadata service.
534−// The suffix is appended to "http://${GCE_METADATA_HOST}/computeMetadata/v1/".
535−//
536−// If the GCE_METADATA_HOST environment variable is not defined, a default of
537−// 169.254.169.254 will be used instead.
538−//
539−// If the requested metadata is not defined, the returned error will
540−// be of type NotDefinedError.
541−//
542−// NOTE: Without an extra deadline in the context this call can take in the
543−// worst case, with internal backoff retries, up to 15 seconds (e.g. when server
544−// is responding slowly). Pass context with additional timeouts when needed.
545−func (c *Client) GetWithContext(ctx context.Context, suffix string) (string, error) {
546− val, _, err := c.getETag(ctx, suffix)
547− return val, err
548−}
549−
550−func (c *Client) getTrimmed(ctx context.Context, suffix string) (s string, err error) {
551− s, err = c.GetWithContext(ctx, suffix)
552− s = strings.TrimSpace(s)
553− return
554−}
555−
556−func (c *Client) lines(ctx context.Context, suffix string) ([]string, error) {
557− j, err := c.GetWithContext(ctx, suffix)
558− if err != nil {
559− return nil, err
560− }
561− s := strings.Split(strings.TrimSpace(j), "\n")
562− for i := range s {
563− s[i] = strings.TrimSpace(s[i])
564− }
565− return s, nil
566−}
567−
568−// ProjectID returns the current instance's project ID string.
569−//
570−// Deprecated: Please use the context aware variant [Client.ProjectIDWithContext].
571−func (c *Client) ProjectID() (string, error) { return c.ProjectIDWithContext(context.Background()) }
572−
573−// ProjectIDWithContext returns the current instance's project ID string.
574−func (c *Client) ProjectIDWithContext(ctx context.Context) (string, error) { return projID.get(ctx, c) }
575−
576−// NumericProjectID returns the current instance's numeric project ID.
577−//
578−// Deprecated: Please use the context aware variant [Client.NumericProjectIDWithContext].
579−func (c *Client) NumericProjectID() (string, error) {
580− return c.NumericProjectIDWithContext(context.Background())
581−}
582−
583−// NumericProjectIDWithContext returns the current instance's numeric project ID.
584−func (c *Client) NumericProjectIDWithContext(ctx context.Context) (string, error) {
585− return projNum.get(ctx, c)
586−}
587−
588−// InstanceID returns the current VM's numeric instance ID.
589−//
590−// Deprecated: Please use the context aware variant [Client.InstanceIDWithContext].
591−func (c *Client) InstanceID() (string, error) {
592− return c.InstanceIDWithContext(context.Background())
593−}
594−
595−// InstanceIDWithContext returns the current VM's numeric instance ID.
596−func (c *Client) InstanceIDWithContext(ctx context.Context) (string, error) {
597− return instID.get(ctx, c)
598−}
599−
600−// InternalIP returns the instance's primary internal IP address.
601−//
602−// Deprecated: Please use the context aware variant [Client.InternalIPWithContext].
603−func (c *Client) InternalIP() (string, error) {
604− return c.InternalIPWithContext(context.Background())
605−}
606−
607−// InternalIPWithContext returns the instance's primary internal IP address.
608−func (c *Client) InternalIPWithContext(ctx context.Context) (string, error) {
609− return c.getTrimmed(ctx, "instance/network-interfaces/0/ip")
610−}
611−
612−// Email returns the email address associated with the service account.
613−//
614−// Deprecated: Please use the context aware variant [Client.EmailWithContext].
615−func (c *Client) Email(serviceAccount string) (string, error) {
616− return c.EmailWithContext(context.Background(), serviceAccount)
617−}
618−
619−// EmailWithContext returns the email address associated with the service account.
620−// The serviceAccount parameter default value (empty string or "default" value)
621−// will use the instance's main account.
622−func (c *Client) EmailWithContext(ctx context.Context, serviceAccount string) (string, error) {
623− if serviceAccount == "" {
624− serviceAccount = "default"
625− }
626− return c.getTrimmed(ctx, "instance/service-accounts/"+serviceAccount+"/email")
627−}
628−
629−// ExternalIP returns the instance's primary external (public) IP address.
630−//
631−// Deprecated: Please use the context aware variant [Client.ExternalIPWithContext].
632−func (c *Client) ExternalIP() (string, error) {
633− return c.ExternalIPWithContext(context.Background())
634−}
635−
636−// ExternalIPWithContext returns the instance's primary external (public) IP address.
637−func (c *Client) ExternalIPWithContext(ctx context.Context) (string, error) {
638− return c.getTrimmed(ctx, "instance/network-interfaces/0/access-configs/0/external-ip")
639−}
640−
641−// Hostname returns the instance's hostname. This will be of the form
642−// "<instanceID>.c.<projID>.internal".
643−//
644−// Deprecated: Please use the context aware variant [Client.HostnameWithContext].
645−func (c *Client) Hostname() (string, error) {
646− return c.HostnameWithContext(context.Background())
647−}
648−
649−// HostnameWithContext returns the instance's hostname. This will be of the form
650−// "<instanceID>.c.<projID>.internal".
651−func (c *Client) HostnameWithContext(ctx context.Context) (string, error) {
652− return c.getTrimmed(ctx, "instance/hostname")
653−}
654−
655−// InstanceTags returns the list of user-defined instance tags.
656−//
657−// Deprecated: Please use the context aware variant [Client.InstanceTagsWithContext].
658−func (c *Client) InstanceTags() ([]string, error) {
659− return c.InstanceTagsWithContext(context.Background())
660−}
661−
662−// InstanceTagsWithContext returns the list of user-defined instance tags,
663−// assigned when initially creating a GCE instance.
664−func (c *Client) InstanceTagsWithContext(ctx context.Context) ([]string, error) {
665− var s []string
666− j, err := c.GetWithContext(ctx, "instance/tags")
667− if err != nil {
668− return nil, err
669− }
670− if err := json.NewDecoder(strings.NewReader(j)).Decode(&s); err != nil {
671− return nil, err
672− }
673− return s, nil
674−}
675−
676−// InstanceName returns the current VM's instance ID string.
677−//
678−// Deprecated: Please use the context aware variant [Client.InstanceNameWithContext].
679−func (c *Client) InstanceName() (string, error) {
680− return c.InstanceNameWithContext(context.Background())
681−}
682−
683−// InstanceNameWithContext returns the current VM's instance ID string.
684−func (c *Client) InstanceNameWithContext(ctx context.Context) (string, error) {
685− return c.getTrimmed(ctx, "instance/name")
686−}
687−
688−// Zone returns the current VM's zone, such as "us-central1-b".
689−//
690−// Deprecated: Please use the context aware variant [Client.ZoneWithContext].
691−func (c *Client) Zone() (string, error) {
692− return c.ZoneWithContext(context.Background())
693−}
694−
695−// ZoneWithContext returns the current VM's zone, such as "us-central1-b".
696−func (c *Client) ZoneWithContext(ctx context.Context) (string, error) {
697− zone, err := c.getTrimmed(ctx, "instance/zone")
698− // zone is of the form "projects/<projNum>/zones/<zoneName>".
699− if err != nil {
700− return "", err
701− }
702− return zone[strings.LastIndex(zone, "/")+1:], nil
703−}
704−
705−// InstanceAttributes returns the list of user-defined attributes,
706−// assigned when initially creating a GCE VM instance. The value of an
707−// attribute can be obtained with InstanceAttributeValue.
708−//
709−// Deprecated: Please use the context aware variant [Client.InstanceAttributesWithContext].
710−func (c *Client) InstanceAttributes() ([]string, error) {
711− return c.InstanceAttributesWithContext(context.Background())
712−}
713−
714−// InstanceAttributesWithContext returns the list of user-defined attributes,
715−// assigned when initially creating a GCE VM instance. The value of an
716−// attribute can be obtained with InstanceAttributeValue.
717−func (c *Client) InstanceAttributesWithContext(ctx context.Context) ([]string, error) {
718− return c.lines(ctx, "instance/attributes/")
719−}
720−
721−// ProjectAttributes returns the list of user-defined attributes
722−// applying to the project as a whole, not just this VM. The value of
723−// an attribute can be obtained with ProjectAttributeValue.
724−//
725−// Deprecated: Please use the context aware variant [Client.ProjectAttributesWithContext].
726−func (c *Client) ProjectAttributes() ([]string, error) {
727− return c.ProjectAttributesWithContext(context.Background())
728−}
729−
730−// ProjectAttributesWithContext returns the list of user-defined attributes
731−// applying to the project as a whole, not just this VM. The value of
732−// an attribute can be obtained with ProjectAttributeValue.
733−func (c *Client) ProjectAttributesWithContext(ctx context.Context) ([]string, error) {
734− return c.lines(ctx, "project/attributes/")
735−}
736−
737−// InstanceAttributeValue returns the value of the provided VM
738−// instance attribute.
739−//
740−// If the requested attribute is not defined, the returned error will
741−// be of type NotDefinedError.
742−//
743−// InstanceAttributeValue may return ("", nil) if the attribute was
744−// defined to be the empty string.
745−//
746−// Deprecated: Please use the context aware variant [Client.InstanceAttributeValueWithContext].
747−func (c *Client) InstanceAttributeValue(attr string) (string, error) {
748− return c.InstanceAttributeValueWithContext(context.Background(), attr)
749−}
750−
751−// InstanceAttributeValueWithContext returns the value of the provided VM
752−// instance attribute.
753−//
754−// If the requested attribute is not defined, the returned error will
755−// be of type NotDefinedError.
756−//
757−// InstanceAttributeValue may return ("", nil) if the attribute was
758−// defined to be the empty string.
759−func (c *Client) InstanceAttributeValueWithContext(ctx context.Context, attr string) (string, error) {
760− return c.GetWithContext(ctx, "instance/attributes/"+attr)
761−}
762−
763−// ProjectAttributeValue returns the value of the provided
764−// project attribute.
765−//
766−// If the requested attribute is not defined, the returned error will
767−// be of type NotDefinedError.
768−//
769−// ProjectAttributeValue may return ("", nil) if the attribute was
770−// defined to be the empty string.
771−//
772−// Deprecated: Please use the context aware variant [Client.ProjectAttributeValueWithContext].
773−func (c *Client) ProjectAttributeValue(attr string) (string, error) {
774− return c.ProjectAttributeValueWithContext(context.Background(), attr)
775−}
776−
777−// ProjectAttributeValueWithContext returns the value of the provided
778−// project attribute.
779−//
780−// If the requested attribute is not defined, the returned error will
781−// be of type NotDefinedError.
782−//
783−// ProjectAttributeValue may return ("", nil) if the attribute was
784−// defined to be the empty string.
785−func (c *Client) ProjectAttributeValueWithContext(ctx context.Context, attr string) (string, error) {
786− return c.GetWithContext(ctx, "project/attributes/"+attr)
787−}
788−
789−// Scopes returns the service account scopes for the given account.
790−// The account may be empty or the string "default" to use the instance's
791−// main account.
792−//
793−// Deprecated: Please use the context aware variant [Client.ScopesWithContext].
794−func (c *Client) Scopes(serviceAccount string) ([]string, error) {
795− return c.ScopesWithContext(context.Background(), serviceAccount)
796−}
797−
798−// ScopesWithContext returns the service account scopes for the given account.
799−// The account may be empty or the string "default" to use the instance's
800−// main account.
801−func (c *Client) ScopesWithContext(ctx context.Context, serviceAccount string) ([]string, error) {
802− if serviceAccount == "" {
803− serviceAccount = "default"
804− }
805− return c.lines(ctx, "instance/service-accounts/"+serviceAccount+"/scopes")
806−}
807−
808−// Subscribe subscribes to a value from the metadata service.
809−// The suffix is appended to "http://${GCE_METADATA_HOST}/computeMetadata/v1/".
810−// The suffix may contain query parameters.
811−//
812−// Deprecated: Please use the context aware variant [Client.SubscribeWithContext].
813−func (c *Client) Subscribe(suffix string, fn func(v string, ok bool) error) error {
814− return c.SubscribeWithContext(context.Background(), suffix, func(ctx context.Context, v string, ok bool) error { return fn(v, ok) })
815−}
816−
817−// SubscribeWithContext subscribes to a value from the metadata service.
818−// The suffix is appended to "http://${GCE_METADATA_HOST}/computeMetadata/v1/".
819−// The suffix may contain query parameters.
820−//
821−// SubscribeWithContext calls fn with the latest metadata value indicated by the
822−// provided suffix. If the metadata value is deleted, fn is called with the
823−// empty string and ok false. Subscribe blocks until fn returns a non-nil error
824−// or the value is deleted. Subscribe returns the error value returned from the
825−// last call to fn, which may be nil when ok == false.
826−func (c *Client) SubscribeWithContext(ctx context.Context, suffix string, fn func(ctx context.Context, v string, ok bool) error) error {
827− const failedSubscribeSleep = time.Second * 5
828−
829− // First check to see if the metadata value exists at all.
830− val, lastETag, err := c.getETag(ctx, suffix)
831− if err != nil {
832− return err
833− }
834−
835− if err := fn(ctx, val, true); err != nil {
836− return err
837− }
838−
839− ok := true
840− if strings.ContainsRune(suffix, '?') {
841− suffix += "&wait_for_change=true&last_etag="
842− } else {
843− suffix += "?wait_for_change=true&last_etag="
844− }
845− for {
846− val, etag, err := c.getETag(ctx, suffix+url.QueryEscape(lastETag))
847− if err != nil {
848− if _, deleted := err.(NotDefinedError); !deleted {
849− time.Sleep(failedSubscribeSleep)
850− continue // Retry on other errors.
851− }
852− ok = false
853− }
854− lastETag = etag
855−
856− if err := fn(ctx, val, ok); err != nil || !ok {
857− return err
858− }
859− }
860−}
861−
862−// Error contains an error response from the server.
863−type Error struct {
864− // Code is the HTTP response status code.
865− Code int
866− // Message is the server response message.
867− Message string
868−}
869−
870−func (e *Error) Error() string {
871− return fmt.Sprintf("compute: Received %d `%s`", e.Code, e.Message)
872−}
vendor/cloud.google.com/go/compute/metadata/retry.godeleted−114
@@ -1,114 +0,0 @@
1−// Copyright 2021 Google LLC
2−//
3−// Licensed under the Apache License, Version 2.0 (the "License");
4−// you may not use this file except in compliance with the License.
5−// You may obtain a copy of the License at
6−//
7−// http://www.apache.org/licenses/LICENSE-2.0
8−//
9−// Unless required by applicable law or agreed to in writing, software
10−// distributed under the License is distributed on an "AS IS" BASIS,
11−// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12−// See the License for the specific language governing permissions and
13−// limitations under the License.
14−
15−package metadata
16−
17−import (
18− "context"
19− "io"
20− "math/rand"
21− "net/http"
22− "time"
23−)
24−
25−const (
26− maxRetryAttempts = 5
27−)
28−
29−var (
30− syscallRetryable = func(error) bool { return false }
31−)
32−
33−// defaultBackoff is basically equivalent to gax.Backoff without the need for
34−// the dependency.
35−type defaultBackoff struct {
36− max time.Duration
37− mul float64
38− cur time.Duration
39−}
40−
41−func (b *defaultBackoff) Pause() time.Duration {
42− d := time.Duration(1 + rand.Int63n(int64(b.cur)))
43− b.cur = time.Duration(float64(b.cur) * b.mul)
44− if b.cur > b.max {
45− b.cur = b.max
46− }
47− return d
48−}
49−
50−// sleep is the equivalent of gax.Sleep without the need for the dependency.
51−func sleep(ctx context.Context, d time.Duration) error {
52− t := time.NewTimer(d)
53− select {
54− case <-ctx.Done():
55− t.Stop()
56− return ctx.Err()
57− case <-t.C:
58− return nil
59− }
60−}
61−
62−func newRetryer() *metadataRetryer {
63− return &metadataRetryer{bo: &defaultBackoff{
64− cur: 100 * time.Millisecond,
65− max: 30 * time.Second,
66− mul: 2,
67− }}
68−}
69−
70−type backoff interface {
71− Pause() time.Duration
72−}
73−
74−type metadataRetryer struct {
75− bo backoff
76− attempts int
77−}
78−
79−func (r *metadataRetryer) Retry(status int, err error) (time.Duration, bool) {
80− if status == http.StatusOK {
81− return 0, false
82− }
83− retryOk := shouldRetry(status, err)
84− if !retryOk {
85− return 0, false
86− }
87− if r.attempts == maxRetryAttempts {
88− return 0, false
89− }
90− r.attempts++
91− return r.bo.Pause(), true
92−}
93−
94−func shouldRetry(status int, err error) bool {
95− if 500 <= status && status <= 599 {
96− return true
97− }
98− if err == io.ErrUnexpectedEOF {
99− return true
100− }
101− // Transient network errors should be retried.
102− if syscallRetryable(err) {
103− return true
104− }
105− if err, ok := err.(interface{ Temporary() bool }); ok {
106− if err.Temporary() {
107− return true
108− }
109− }
110− if err, ok := err.(interface{ Unwrap() error }); ok {
111− return shouldRetry(status, err.Unwrap())
112− }
113− return false
114−}
vendor/cloud.google.com/go/compute/metadata/retry_linux.godeleted−31
@@ -1,31 +0,0 @@
1−// Copyright 2021 Google LLC
2−//
3−// Licensed under the Apache License, Version 2.0 (the "License");
4−// you may not use this file except in compliance with the License.
5−// You may obtain a copy of the License at
6−//
7−// http://www.apache.org/licenses/LICENSE-2.0
8−//
9−// Unless required by applicable law or agreed to in writing, software
10−// distributed under the License is distributed on an "AS IS" BASIS,
11−// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12−// See the License for the specific language governing permissions and
13−// limitations under the License.
14−
15−//go:build linux
16−// +build linux
17−
18−package metadata
19−
20−import (
21− "errors"
22− "syscall"
23−)
24−
25−func init() {
26− // Initialize syscallRetryable to return true on transient socket-level
27− // errors. These errors are specific to Linux.
28− syscallRetryable = func(err error) bool {
29− return errors.Is(err, syscall.ECONNRESET) || errors.Is(err, syscall.ECONNREFUSED)
30− }
31−}
vendor/cloud.google.com/go/compute/metadata/syscheck.godeleted−26
@@ -1,26 +0,0 @@
1−// Copyright 2024 Google LLC
2−//
3−// Licensed under the Apache License, Version 2.0 (the "License");
4−// you may not use this file except in compliance with the License.
5−// You may obtain a copy of the License at
6−//
7−// http://www.apache.org/licenses/LICENSE-2.0
8−//
9−// Unless required by applicable law or agreed to in writing, software
10−// distributed under the License is distributed on an "AS IS" BASIS,
11−// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12−// See the License for the specific language governing permissions and
13−// limitations under the License.
14−
15−//go:build !windows && !linux
16−
17−package metadata
18−
19−// systemInfoSuggestsGCE reports whether the local system (without
20−// doing network requests) suggests that we're running on GCE. If this
21−// returns true, testOnGCE tries a bit harder to reach its metadata
22−// server.
23−func systemInfoSuggestsGCE() bool {
24− // We don't currently have checks for other GOOS
25− return false
26−}
vendor/cloud.google.com/go/compute/metadata/syscheck_linux.godeleted−28
@@ -1,28 +0,0 @@
1−// Copyright 2024 Google LLC
2−//
3−// Licensed under the Apache License, Version 2.0 (the "License");
4−// you may not use this file except in compliance with the License.
5−// You may obtain a copy of the License at
6−//
7−// http://www.apache.org/licenses/LICENSE-2.0
8−//
9−// Unless required by applicable law or agreed to in writing, software
10−// distributed under the License is distributed on an "AS IS" BASIS,
11−// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12−// See the License for the specific language governing permissions and
13−// limitations under the License.
14−
15−//go:build linux
16−
17−package metadata
18−
19−import (
20− "os"
21− "strings"
22−)
23−
24−func systemInfoSuggestsGCE() bool {
25− b, _ := os.ReadFile("/sys/class/dmi/id/product_name")
26− name := strings.TrimSpace(string(b))
27− return name == "Google" || name == "Google Compute Engine"
28−}
vendor/cloud.google.com/go/compute/metadata/syscheck_windows.godeleted−38
@@ -1,38 +0,0 @@
1−// Copyright 2024 Google LLC
2−//
3−// Licensed under the Apache License, Version 2.0 (the "License");
4−// you may not use this file except in compliance with the License.
5−// You may obtain a copy of the License at
6−//
7−// http://www.apache.org/licenses/LICENSE-2.0
8−//
9−// Unless required by applicable law or agreed to in writing, software
10−// distributed under the License is distributed on an "AS IS" BASIS,
11−// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12−// See the License for the specific language governing permissions and
13−// limitations under the License.
14−
15−//go:build windows
16−
17−package metadata
18−
19−import (
20− "strings"
21−
22− "golang.org/x/sys/windows/registry"
23−)
24−
25−func systemInfoSuggestsGCE() bool {
26− k, err := registry.OpenKey(registry.LOCAL_MACHINE, `SYSTEM\HardwareConfig\Current`, registry.QUERY_VALUE)
27− if err != nil {
28− return false
29− }
30− defer k.Close()
31−
32− s, _, err := k.GetStringValue("SystemProductName")
33− if err != nil {
34− return false
35− }
36− s = strings.TrimSpace(s)
37− return strings.HasPrefix(s, "Google")
38−}
vendor/github.com/Azure/azure-sdk-for-go/sdk/azcore/CHANGELOG.mddeleted−849
@@ -1,849 +0,0 @@
1−# Release History
2−
3−## 1.17.0 (2025-01-07)
4−
5−### Features Added
6−
7−* Added field `OperationLocationResultPath` to `runtime.NewPollerOptions[T]` for LROs that use the `Operation-Location` pattern.
8−* Support `encoding.TextMarshaler` and `encoding.TextUnmarshaler` interfaces in `arm.ResourceID`.
9−
10−## 1.16.0 (2024-10-17)
11−
12−### Features Added
13−
14−* Added field `Kind` to `runtime.StartSpanOptions` to allow a kind to be set when starting a span.
15−
16−### Bugs Fixed
17−
18−* `BearerTokenPolicy` now rewinds request bodies before retrying
19−
20−## 1.15.0 (2024-10-14)
21−
22−### Features Added
23−
24−* `BearerTokenPolicy` handles CAE claims challenges
25−
26−### Bugs Fixed
27−
28−* Omit the `ResponseError.RawResponse` field from JSON marshaling so instances can be marshaled.
29−* Fixed an integer overflow in the retry policy.
30−
31−### Other Changes
32−
33−* Update dependencies.
34−
35−## 1.14.0 (2024-08-07)
36−
37−### Features Added
38−
39−* Added field `Attributes` to `runtime.StartSpanOptions` to simplify creating spans with attributes.
40−
41−### Other Changes
42−
43−* Include the HTTP verb and URL in `log.EventRetryPolicy` log entries so it's clear which operation is being retried.
44−
45−## 1.13.0 (2024-07-16)
46−
47−### Features Added
48−
49−- Added runtime.NewRequestFromRequest(), allowing for a policy.Request to be created from an existing *http.Request.
50−
51−## 1.12.0 (2024-06-06)
52−
53−### Features Added
54−
55−* Added field `StatusCodes` to `runtime.FetcherForNextLinkOptions` allowing for additional HTTP status codes indicating success.
56−* Added func `NewUUID` to the `runtime` package for generating UUIDs.
57−
58−### Bugs Fixed
59−
60−* Fixed an issue that prevented pollers using the `Operation-Location` strategy from unmarshaling the final result in some cases.
61−
62−### Other Changes
63−
64−* Updated dependencies.
65−
66−## 1.11.1 (2024-04-02)
67−
68−### Bugs Fixed
69−
70−* Pollers that use the `Location` header won't consider `http.StatusRequestTimeout` a terminal failure.
71−* `runtime.Poller[T].Result` won't consider non-terminal error responses as terminal.
72−
73−## 1.11.0 (2024-04-01)
74−
75−### Features Added
76−
77−* Added `StatusCodes` to `arm/policy.RegistrationOptions` to allow supporting non-standard HTTP status codes during registration.
78−* Added field `InsecureAllowCredentialWithHTTP` to `azcore.ClientOptions` and dependent authentication pipeline policies.
79−* Added type `MultipartContent` to the `streaming` package to support multipart/form payloads with custom Content-Type and file name.
80−
81−### Bugs Fixed
82−
83−* `runtime.SetMultipartFormData` won't try to stringify `[]byte` values.
84−* Pollers that use the `Location` header won't consider `http.StatusTooManyRequests` a terminal failure.
85−
86−### Other Changes
87−
88−* Update dependencies.
89−
90−## 1.10.0 (2024-02-29)
91−
92−### Features Added
93−
94−* Added logging event `log.EventResponseError` that will contain the contents of `ResponseError.Error()` whenever an `azcore.ResponseError` is created.
95−* Added `runtime.NewResponseErrorWithErrorCode` for creating an `azcore.ResponseError` with a caller-supplied error code.
96−* Added type `MatchConditions` for use in conditional requests.
97−
98−### Bugs Fixed
99−
100−* Fixed a potential race condition between `NullValue` and `IsNullValue`.
101−* `runtime.EncodeQueryParams` will escape semicolons before calling `url.ParseQuery`.
102−
103−### Other Changes
104−
105−* Update dependencies.
106−
107−## 1.9.2 (2024-02-06)
108−
109−### Bugs Fixed
110−
111−* `runtime.MarshalAsByteArray` and `runtime.MarshalAsJSON` will preserve the preexisting value of the `Content-Type` header.
112−
113−### Other Changes
114−
115−* Update to latest version of `internal`.
116−
117−## 1.9.1 (2023-12-11)
118−
119−### Bugs Fixed
120−
121−* The `retry-after-ms` and `x-ms-retry-after-ms` headers weren't being checked during retries.
122−
123−### Other Changes
124−
125−* Update dependencies.
126−
127−## 1.9.0 (2023-11-06)
128−
129−### Breaking Changes
130−> These changes affect only code written against previous beta versions of `v1.7.0` and `v1.8.0`
131−* The function `NewTokenCredential` has been removed from the `fake` package. Use a literal `&fake.TokenCredential{}` instead.
132−* The field `TracingNamespace` in `runtime.PipelineOptions` has been replaced by `TracingOptions`.
133−
134−### Bugs Fixed
135−
136−* Fixed an issue that could cause some allowed HTTP header values to not show up in logs.
137−* Include error text instead of error type in traces when the transport returns an error.
138−* Fixed an issue that could cause an HTTP/2 request to hang when the TCP connection becomes unresponsive.
139−* Block key and SAS authentication for non TLS protected endpoints.
140−* Passing a `nil` credential value will no longer cause a panic. Instead, the authentication is skipped.
141−* Calling `Error` on a zero-value `azcore.ResponseError` will no longer panic.
142−* Fixed an issue in `fake.PagerResponder[T]` that would cause a trailing error to be omitted when iterating over pages.
143−* Context values created by `azcore` will no longer flow across disjoint HTTP requests.
144−
145−### Other Changes
146−
147−* Skip generating trace info for no-op tracers.
148−* The `clientName` paramater in client constructors has been renamed to `moduleName`.
149−
150−## 1.9.0-beta.1 (2023-10-05)
151−
152−### Other Changes
153−
154−* The beta features for tracing and fakes have been reinstated.
155−
156−## 1.8.0 (2023-10-05)
157−
158−### Features Added
159−
160−* This includes the following features from `v1.8.0-beta.N` releases.
161− * Claims and CAE for authentication.
162− * New `messaging` package.
163− * Various helpers in the `runtime` package.
164− * Deprecation of `runtime.With*` funcs and their replacements in the `policy` package.
165−* Added types `KeyCredential` and `SASCredential` to the `azcore` package.
166− * Includes their respective constructor functions.
167−* Added types `KeyCredentialPolicy` and `SASCredentialPolicy` to the `azcore/runtime` package.
168− * Includes their respective constructor functions and options types.
169−
170−### Breaking Changes
171−> These changes affect only code written against beta versions of `v1.8.0`
172−* The beta features for tracing and fakes have been omitted for this release.
173−
174−### Bugs Fixed
175−
176−* Fixed an issue that could cause some ARM RPs to not be automatically registered.
177−* Block bearer token authentication for non TLS protected endpoints.
178−
179−### Other Changes
180−
181−* Updated dependencies.
182−
183−## 1.8.0-beta.3 (2023-09-07)
184−
185−### Features Added
186−
187−* Added function `FetcherForNextLink` and `FetcherForNextLinkOptions` to the `runtime` package to centralize creation of `Pager[T].Fetcher` from a next link URL.
188−
189−### Bugs Fixed
190−
191−* Suppress creating spans for nested SDK API calls. The HTTP span will be a child of the outer API span.
192−
193−### Other Changes
194−
195−* The following functions in the `runtime` package are now exposed from the `policy` package, and the `runtime` versions have been deprecated.
196− * `WithCaptureResponse`
197− * `WithHTTPHeader`
198− * `WithRetryOptions`
199−
200−## 1.7.2 (2023-09-06)
201−
202−### Bugs Fixed
203−
204−* Fix default HTTP transport to work in WASM modules.
205−
206−## 1.8.0-beta.2 (2023-08-14)
207−
208−### Features Added
209−
210−* Added function `SanitizePagerPollerPath` to the `server` package to centralize sanitization and formalize the contract.
211−* Added `TokenRequestOptions.EnableCAE` to indicate whether to request a CAE token.
212−
213−### Breaking Changes
214−
215−> This change affects only code written against beta version `v1.8.0-beta.1`.
216−* `messaging.CloudEvent` deserializes JSON objects as `[]byte`, instead of `json.RawMessage`. See the documentation for CloudEvent.Data for more information.
217−
218−> This change affects only code written against beta versions `v1.7.0-beta.2` and `v1.8.0-beta.1`.
219−* Removed parameter from method `Span.End()` and its type `tracing.SpanEndOptions`. This API GA'ed in `v1.2.0` so we cannot change it.
220−
221−### Bugs Fixed
222−
223−* Propagate any query parameters when constructing a fake poller and/or injecting next links.
224−
225−## 1.7.1 (2023-08-14)
226−
227−## Bugs Fixed
228−
229−* Enable TLS renegotiation in the default transport policy.
230−
231−## 1.8.0-beta.1 (2023-07-12)
232−
233−### Features Added
234−
235−- `messaging/CloudEvent` allows you to serialize/deserialize CloudEvents, as described in the CloudEvents 1.0 specification: [link](https://github.com/cloudevents/spec)
236−
237−### Other Changes
238−
239−* The beta features for CAE, tracing, and fakes have been reinstated.
240−
241−## 1.7.0 (2023-07-12)
242−
243−### Features Added
244−* Added method `WithClientName()` to type `azcore.Client` to support shallow cloning of a client with a new name used for tracing.
245−
246−### Breaking Changes
247−> These changes affect only code written against beta versions v1.7.0-beta.1 or v1.7.0-beta.2
248−* The beta features for CAE, tracing, and fakes have been omitted for this release.
249−
250−## 1.7.0-beta.2 (2023-06-06)
251−
252−### Breaking Changes
253−> These changes affect only code written against beta version v1.7.0-beta.1
254−* Method `SpanFromContext()` on type `tracing.Tracer` had the `bool` return value removed.
255− * This includes the field `SpanFromContext` in supporting type `tracing.TracerOptions`.
256−* Method `AddError()` has been removed from type `tracing.Span`.
257−* Method `Span.End()` now requires an argument of type `*tracing.SpanEndOptions`.
258−
259−## 1.6.1 (2023-06-06)
260−
261−### Bugs Fixed
262−* Fixed an issue in `azcore.NewClient()` and `arm.NewClient()` that could cause an incorrect module name to be used in telemetry.
263−
264−### Other Changes
265−* This version contains all bug fixes from `v1.7.0-beta.1`
266−
267−## 1.7.0-beta.1 (2023-05-24)
268−
269−### Features Added
270−* Restored CAE support for ARM clients.
271−* Added supporting features to enable distributed tracing.
272− * Added func `runtime.StartSpan()` for use by SDKs to start spans.
273− * Added method `WithContext()` to `runtime.Request` to support shallow cloning with a new context.
274− * Added field `TracingNamespace` to `runtime.PipelineOptions`.
275− * Added field `Tracer` to `runtime.NewPollerOptions` and `runtime.NewPollerFromResumeTokenOptions` types.
276− * Added field `SpanFromContext` to `tracing.TracerOptions`.
277− * Added methods `Enabled()`, `SetAttributes()`, and `SpanFromContext()` to `tracing.Tracer`.
278− * Added supporting pipeline policies to include HTTP spans when creating clients.
279−* Added package `fake` to support generated fakes packages in SDKs.
280− * The package contains public surface area exposed by fake servers and supporting APIs intended only for use by the fake server implementations.
281− * Added an internal fake poller implementation.
282−
283−### Bugs Fixed
284−* Retry policy always clones the underlying `*http.Request` before invoking the next policy.
285−* Added some non-standard error codes to the list of error codes for unregistered resource providers.
286−
287−## 1.6.0 (2023-05-04)
288−
289−### Features Added
290−* Added support for ARM cross-tenant authentication. Set the `AuxiliaryTenants` field of `arm.ClientOptions` to enable.
291−* Added `TenantID` field to `policy.TokenRequestOptions`.
292−
293−## 1.5.0 (2023-04-06)
294−
295−### Features Added
296−* Added `ShouldRetry` to `policy.RetryOptions` for finer-grained control over when to retry.
297−
298−### Breaking Changes
299−> These changes affect only code written against a beta version such as v1.5.0-beta.1
300−> These features will return in v1.6.0-beta.1.
301−* Removed `TokenRequestOptions.Claims` and `.TenantID`
302−* Removed ARM client support for CAE and cross-tenant auth.
303−
304−### Bugs Fixed
305−* Added non-conformant LRO terminal states `Cancelled` and `Completed`.
306−
307−### Other Changes
308−* Updated to latest `internal` module.
309−
310−## 1.5.0-beta.1 (2023-03-02)
311−
312−### Features Added
313−* This release includes the features added in v1.4.0-beta.1
314−
315−## 1.4.0 (2023-03-02)
316−> This release doesn't include features added in v1.4.0-beta.1. They will return in v1.5.0-beta.1.
317−
318−### Features Added
319−* Add `Clone()` method for `arm/policy.ClientOptions`.
320−
321−### Bugs Fixed
322−* ARM's RP registration policy will no longer swallow unrecognized errors.
323−* Fixed an issue in `runtime.NewPollerFromResumeToken()` when resuming a `Poller` with a custom `PollingHandler`.
324−* Fixed wrong policy copy in `arm/runtime.NewPipeline()`.
325−
326−## 1.4.0-beta.1 (2023-02-02)
327−
328−### Features Added
329−* Added support for ARM cross-tenant authentication. Set the `AuxiliaryTenants` field of `arm.ClientOptions` to enable.
330−* Added `Claims` and `TenantID` fields to `policy.TokenRequestOptions`.
331−* ARM bearer token policy handles CAE challenges.
332−
333−## 1.3.1 (2023-02-02)
334−
335−### Other Changes
336−* Update dependencies to latest versions.
337−
338−## 1.3.0 (2023-01-06)
339−
340−### Features Added
341−* Added `BearerTokenOptions.AuthorizationHandler` to enable extending `runtime.BearerTokenPolicy`
342− with custom authorization logic
343−* Added `Client` types and matching constructors to the `azcore` and `arm` packages. These represent a basic client for HTTP and ARM respectively.
344−
345−### Other Changes
346−* Updated `internal` module to latest version.
347−* `policy/Request.SetBody()` allows replacing a request's body with an empty one
348−
349−## 1.2.0 (2022-11-04)
350−
351−### Features Added
352−* Added `ClientOptions.APIVersion` field, which overrides the default version a client
353− requests of the service, if the client supports this (all ARM clients do).
354−* Added package `tracing` that contains the building blocks for distributed tracing.
355−* Added field `TracingProvider` to type `policy.ClientOptions` that will be used to set the per-client tracing implementation.
356−
357−### Bugs Fixed
358−* Fixed an issue in `runtime.SetMultipartFormData` to properly handle slices of `io.ReadSeekCloser`.
359−* Fixed the MaxRetryDelay default to be 60s.
360−* Failure to poll the state of an LRO will now return an `*azcore.ResponseError` for poller types that require this behavior.
361−* Fixed a bug in `runtime.NewPipeline` that would cause pipeline-specified allowed headers and query parameters to be lost.
362−
363−### Other Changes
364−* Retain contents of read-only fields when sending requests.
365−
366−## 1.1.4 (2022-10-06)
367−
368−### Bugs Fixed
369−* Don't retry a request if the `Retry-After` delay is greater than the configured `RetryOptions.MaxRetryDelay`.
370−* `runtime.JoinPaths`: do not unconditionally add a forward slash before the query string
371−
372−### Other Changes
373−* Removed logging URL from retry policy as it's redundant.
374−* Retry policy logs when it exits due to a non-retriable status code.
375−
376−## 1.1.3 (2022-09-01)
377−
378−### Bugs Fixed
379−* Adjusted the initial retry delay to 800ms per the Azure SDK guidelines.
380−
381−## 1.1.2 (2022-08-09)
382−
383−### Other Changes
384−* Fixed various doc bugs.
385−
386−## 1.1.1 (2022-06-30)
387−
388−### Bugs Fixed
389−* Avoid polling when a RELO LRO synchronously terminates.
390−
391−## 1.1.0 (2022-06-03)
392−
393−### Other Changes
394−* The one-second floor for `Frequency` when calling `PollUntilDone()` has been removed when running tests.
395−
396−## 1.0.0 (2022-05-12)
397−
398−### Features Added
399−* Added interface `runtime.PollingHandler` to support custom poller implementations.
400− * Added field `PollingHandler` of this type to `runtime.NewPollerOptions[T]` and `runtime.NewPollerFromResumeTokenOptions[T]`.
401−
402−### Breaking Changes
403−* Renamed `cloud.Configuration.LoginEndpoint` to `.ActiveDirectoryAuthorityHost`
404−* Renamed `cloud.AzurePublicCloud` to `cloud.AzurePublic`
405−* Removed `AuxiliaryTenants` field from `arm/ClientOptions` and `arm/policy/BearerTokenOptions`
406−* Removed `TokenRequestOptions.TenantID`
407−* `Poller[T].PollUntilDone()` now takes an `options *PollUntilDoneOptions` param instead of `freq time.Duration`
408−* Removed `arm/runtime.Poller[T]`, `arm/runtime.NewPoller[T]()` and `arm/runtime.NewPollerFromResumeToken[T]()`
409−* Removed `arm/runtime.FinalStateVia` and related `const` values
410−* Renamed `runtime.PageProcessor` to `runtime.PagingHandler`
411−* The `arm/runtime.ProviderRepsonse` and `arm/runtime.Provider` types are no longer exported.
412−* Renamed `NewRequestIdPolicy()` to `NewRequestIDPolicy()`
413−* `TokenCredential.GetToken` now returns `AccessToken` by value.
414−
415−### Bugs Fixed
416−* When per-try timeouts are enabled, only cancel the context after the body has been read and closed.
417−* The `Operation-Location` poller now properly handles `final-state-via` values.
418−* Improvements in `runtime.Poller[T]`
419− * `Poll()` shouldn't cache errors, allowing for additional retries when in a non-terminal state.
420− * `Result()` will cache the terminal result or error but not transient errors, allowing for additional retries.
421−
422−### Other Changes
423−* Updated to latest `internal` module and absorbed breaking changes.
424− * Use `temporal.Resource` and deleted copy.
425−* The internal poller implementation has been refactored.
426− * The implementation in `internal/pollers/poller.go` has been merged into `runtime/poller.go` with some slight modification.
427− * The internal poller types had their methods updated to conform to the `runtime.PollingHandler` interface.
428− * The creation of resume tokens has been refactored so that implementers of `runtime.PollingHandler` don't need to know about it.
429−* `NewPipeline()` places policies from `ClientOptions` after policies from `PipelineOptions`
430−* Default User-Agent headers no longer include `azcore` version information
431−
432−## 0.23.1 (2022-04-14)
433−
434−### Bugs Fixed
435−* Include XML header when marshalling XML content.
436−* Handle XML namespaces when searching for error code.
437−* Handle `odata.error` when searching for error code.
438−
439−## 0.23.0 (2022-04-04)
440−
441−### Features Added
442−* Added `runtime.Pager[T any]` and `runtime.Poller[T any]` supporting types for central, generic, implementations.
443−* Added `cloud` package with a new API for cloud configuration
444−* Added `FinalStateVia` field to `runtime.NewPollerOptions[T any]` type.
445−
446−### Breaking Changes
447−* Removed the `Poller` type-alias to the internal poller implementation.
448−* Added `Ptr[T any]` and `SliceOfPtrs[T any]` in the `to` package and removed all non-generic implementations.
449−* `NullValue` and `IsNullValue` now take a generic type parameter instead of an interface func parameter.
450−* Replaced `arm.Endpoint` with `cloud` API
451− * Removed the `endpoint` parameter from `NewRPRegistrationPolicy()`
452− * `arm/runtime.NewPipeline()` and `.NewRPRegistrationPolicy()` now return an `error`
453−* Refactored `NewPoller` and `NewPollerFromResumeToken` funcs in `arm/runtime` and `runtime` packages.
454− * Removed the `pollerID` parameter as it's no longer required.
455− * Created optional parameter structs and moved optional parameters into them.
456−* Changed `FinalStateVia` field to a `const` type.
457−
458−### Other Changes
459−* Converted expiring resource and dependent types to use generics.
460−
461−## 0.22.0 (2022-03-03)
462−
463−### Features Added
464−* Added header `WWW-Authenticate` to the default allow-list of headers for logging.
465−* Added a pipeline policy that enables the retrieval of HTTP responses from API calls.
466− * Added `runtime.WithCaptureResponse` to enable the policy at the API level (off by default).
467−
468−### Breaking Changes
469−* Moved `WithHTTPHeader` and `WithRetryOptions` from the `policy` package to the `runtime` package.
470−
471−## 0.21.1 (2022-02-04)
472−
473−### Bugs Fixed
474−* Restore response body after reading in `Poller.FinalResponse()`. (#16911)
475−* Fixed bug in `NullValue` that could lead to incorrect comparisons for empty maps/slices (#16969)
476−
477−### Other Changes
478−* `BearerTokenPolicy` is more resilient to transient authentication failures. (#16789)
479−
480−## 0.21.0 (2022-01-11)
481−
482−### Features Added
483−* Added `AllowedHeaders` and `AllowedQueryParams` to `policy.LogOptions` to control which headers and query parameters are written to the logger.
484−* Added `azcore.ResponseError` type which is returned from APIs when a non-success HTTP status code is received.
485−
486−### Breaking Changes
487−* Moved `[]policy.Policy` parameters of `arm/runtime.NewPipeline` and `runtime.NewPipeline` into a new struct, `runtime.PipelineOptions`
488−* Renamed `arm/ClientOptions.Host` to `.Endpoint`
489−* Moved `Request.SkipBodyDownload` method to function `runtime.SkipBodyDownload`
490−* Removed `azcore.HTTPResponse` interface type
491−* `arm.NewPoller()` and `runtime.NewPoller()` no longer require an `eu` parameter
492−* `runtime.NewResponseError()` no longer requires an `error` parameter
493−
494−## 0.20.0 (2021-10-22)
495−
496−### Breaking Changes
497−* Removed `arm.Connection`
498−* Removed `azcore.Credential` and `.NewAnonymousCredential()`
499− * `NewRPRegistrationPolicy` now requires an `azcore.TokenCredential`
500−* `runtime.NewPipeline` has a new signature that simplifies implementing custom authentication
501−* `arm/runtime.RegistrationOptions` embeds `policy.ClientOptions`
502−* Contents in the `log` package have been slightly renamed.
503−* Removed `AuthenticationOptions` in favor of `policy.BearerTokenOptions`
504−* Changed parameters for `NewBearerTokenPolicy()`
505−* Moved policy config options out of `arm/runtime` and into `arm/policy`
506−
507−### Features Added
508−* Updating Documentation
509−* Added string typdef `arm.Endpoint` to provide a hint toward expected ARM client endpoints
510−* `azcore.ClientOptions` contains common pipeline configuration settings
511−* Added support for multi-tenant authorization in `arm/runtime`
512−* Require one second minimum when calling `PollUntilDone()`
513−
514−### Bug Fixes
515−* Fixed a potential panic when creating the default Transporter.
516−* Close LRO initial response body when creating a poller.
517−* Fixed a panic when recursively cloning structs that contain time.Time.
518−
519−## 0.19.0 (2021-08-25)
520−
521−### Breaking Changes
522−* Split content out of `azcore` into various packages. The intent is to separate content based on its usage (common, uncommon, SDK authors).
523− * `azcore` has all core functionality.
524− * `log` contains facilities for configuring in-box logging.
525− * `policy` is used for configuring pipeline options and creating custom pipeline policies.
526− * `runtime` contains various helpers used by SDK authors and generated content.
527− * `streaming` has helpers for streaming IO operations.
528−* `NewTelemetryPolicy()` now requires module and version parameters and the `Value` option has been removed.
529− * As a result, the `Request.Telemetry()` method has been removed.
530−* The telemetry policy now includes the SDK prefix `azsdk-go-` so callers no longer need to provide it.
531−* The `*http.Request` in `runtime.Request` is no longer anonymously embedded. Use the `Raw()` method to access it.
532−* The `UserAgent` and `Version` constants have been made internal, `Module` and `Version` respectively.
533−
534−### Bug Fixes
535−* Fixed an issue in the retry policy where the request body could be overwritten after a rewind.
536−
537−### Other Changes
538−* Moved modules `armcore` and `to` content into `arm` and `to` packages respectively.
539− * The `Pipeline()` method on `armcore.Connection` has been replaced by `NewPipeline()` in `arm.Connection`. It takes module and version parameters used by the telemetry policy.
540−* Poller logic has been consolidated across ARM and core implementations.
541− * This required some changes to the internal interfaces for core pollers.
542−* The core poller types have been improved, including more logging and test coverage.
543−
544−## 0.18.1 (2021-08-20)
545−
546−### Features Added
547−* Adds an `ETag` type for comparing etags and handling etags on requests
548−* Simplifies the `requestBodyProgess` and `responseBodyProgress` into a single `progress` object
549−
550−### Bugs Fixed
551−* `JoinPaths` will preserve query parameters encoded in the `root` url.
552−
553−### Other Changes
554−* Bumps dependency on `internal` module to the latest version (v0.7.0)
555−
556−## 0.18.0 (2021-07-29)
557−### Features Added
558−* Replaces methods from Logger type with two package methods for interacting with the logging functionality.
559−* `azcore.SetClassifications` replaces `azcore.Logger().SetClassifications`
560−* `azcore.SetListener` replaces `azcore.Logger().SetListener`
561−
562−### Breaking Changes
563−* Removes `Logger` type from `azcore`
564−
565−
566−## 0.17.0 (2021-07-27)
567−### Features Added
568−* Adding TenantID to TokenRequestOptions (https://github.com/Azure/azure-sdk-for-go/pull/14879)
569−* Adding AuxiliaryTenants to AuthenticationOptions (https://github.com/Azure/azure-sdk-for-go/pull/15123)
570−
571−### Breaking Changes
572−* Rename `AnonymousCredential` to `NewAnonymousCredential` (https://github.com/Azure/azure-sdk-for-go/pull/15104)
573−* rename `AuthenticationPolicyOptions` to `AuthenticationOptions` (https://github.com/Azure/azure-sdk-for-go/pull/15103)
574−* Make Header constants private (https://github.com/Azure/azure-sdk-for-go/pull/15038)
575−
576−
577−## 0.16.2 (2021-05-26)
578−### Features Added
579−* Improved support for byte arrays [#14715](https://github.com/Azure/azure-sdk-for-go/pull/14715)
580−
581−
582−## 0.16.1 (2021-05-19)
583−### Features Added
584−* Add license.txt to azcore module [#14682](https://github.com/Azure/azure-sdk-for-go/pull/14682)
585−
586−
587−## 0.16.0 (2021-05-07)
588−### Features Added
589−* Remove extra `*` in UnmarshalAsByteArray() [#14642](https://github.com/Azure/azure-sdk-for-go/pull/14642)
590−
591−
592−## 0.15.1 (2021-05-06)
593−### Features Added
594−* Cache the original request body on Request [#14634](https://github.com/Azure/azure-sdk-for-go/pull/14634)
595−
596−
597−## 0.15.0 (2021-05-05)
598−### Features Added
599−* Add support for null map and slice
600−* Export `Response.Payload` method
601−
602−### Breaking Changes
603−* remove `Response.UnmarshalError` as it's no longer required
604−
605−
606−## 0.14.5 (2021-04-23)
607−### Features Added
608−* Add `UnmarshalError()` on `azcore.Response`
609−
610−
611−## 0.14.4 (2021-04-22)
612−### Features Added
613−* Support for basic LRO polling
614−* Added type `LROPoller` and supporting types for basic polling on long running operations.
615−* rename poller param and added doc comment
616−
617−### Bugs Fixed
618−* Fixed content type detection bug in logging.
619−
620−
621−## 0.14.3 (2021-03-29)
622−### Features Added
623−* Add support for multi-part form data
624−* Added method `WriteMultipartFormData()` to Request.
625−
626−
627−## 0.14.2 (2021-03-17)
628−### Features Added
629−* Add support for encoding JSON null values
630−* Adds `NullValue()` and `IsNullValue()` functions for setting and detecting sentinel values used for encoding a JSON null.
631−* Documentation fixes
632−
633−### Bugs Fixed
634−* Fixed improper error wrapping
635−
636−
637−## 0.14.1 (2021-02-08)
638−### Features Added
639−* Add `Pager` and `Poller` interfaces to azcore
640−
641−
642−## 0.14.0 (2021-01-12)
643−### Features Added
644−* Accept zero-value options for default values
645−* Specify zero-value options structs to accept default values.
646−* Remove `DefaultXxxOptions()` methods.
647−* Do not silently change TryTimeout on negative values
648−* make per-try timeout opt-in
649−
650−
651−## 0.13.4 (2020-11-20)
652−### Features Added
653−* Include telemetry string in User Agent
654−
655−
656−## 0.13.3 (2020-11-20)
657−### Features Added
658−* Updating response body handling on `azcore.Response`
659−
660−
661−## 0.13.2 (2020-11-13)
662−### Features Added
663−* Remove implementation of stateless policies as first-class functions.
664−
665−
666−## 0.13.1 (2020-11-05)
667−### Features Added
668−* Add `Telemetry()` method to `azcore.Request()`
669−
670−
671−## 0.13.0 (2020-10-14)
672−### Features Added
673−* Rename `log` to `logger` to avoid name collision with the log package.
674−* Documentation improvements
675−* Simplified `DefaultHTTPClientTransport()` implementation
676−
677−
678−## 0.12.1 (2020-10-13)
679−### Features Added
680−* Update `internal` module dependence to `v0.5.0`
681−
682−
683−## 0.12.0 (2020-10-08)
684−### Features Added
685−* Removed storage specific content
686−* Removed internal content to prevent API clutter
687−* Refactored various policy options to conform with our options pattern
688−
689−
690−## 0.11.0 (2020-09-22)
691−### Features Added
692−
693−* Removed `LogError` and `LogSlowResponse`.
694−* Renamed `options` in `RequestLogOptions`.
695−* Updated `NewRequestLogPolicy()` to follow standard pattern for options.
696−* Refactored `requestLogPolicy.Do()` per above changes.
697−* Cleaned up/added logging in retry policy.
698−* Export `NewResponseError()`
699−* Fix `RequestLogOptions` comment
700−
701−
702−## 0.10.1 (2020-09-17)
703−### Features Added
704−* Add default console logger
705−* Default console logger writes to stderr. To enable it, set env var `AZURE_SDK_GO_LOGGING` to the value 'all'.
706−* Added `Logger.Writef()` to reduce the need for `ShouldLog()` checks.
707−* Add `LogLongRunningOperation`
708−
709−
710−## 0.10.0 (2020-09-10)
711−### Features Added
712−* The `request` and `transport` interfaces have been refactored to align with the patterns in the standard library.
713−* `NewRequest()` now uses `http.NewRequestWithContext()` and performs additional validation, it also requires a context parameter.
714−* The `Policy` and `Transport` interfaces have had their context parameter removed as the context is associated with the underlying `http.Request`.
715−* `Pipeline.Do()` will validate the HTTP request before sending it through the pipeline, avoiding retries on a malformed request.
716−* The `Retrier` interface has been replaced with the `NonRetriableError` interface, and the retry policy updated to test for this.
717−* `Request.SetBody()` now requires a content type parameter for setting the request's MIME type.
718−* moved path concatenation into `JoinPaths()` func
719−
720−
721−## 0.9.6 (2020-08-18)
722−### Features Added
723−* Improvements to body download policy
724−* Always download the response body for error responses, i.e. HTTP status codes >= 400.
725−* Simplify variable declarations
726−
727−
728−## 0.9.5 (2020-08-11)
729−### Features Added
730−* Set the Content-Length header in `Request.SetBody`
731−
732−
733−## 0.9.4 (2020-08-03)
734−### Features Added
735−* Fix cancellation of per try timeout
736−* Per try timeout is used to ensure that an HTTP operation doesn't take too long, e.g. that a GET on some URL doesn't take an inordinant amount of time.
737−* Once the HTTP request returns, the per try timeout should be cancelled, not when the response has been read to completion.
738−* Do not drain response body if there are no more retries
739−* Do not retry non-idempotent operations when body download fails
740−
741−
742−## 0.9.3 (2020-07-28)
743−### Features Added
744−* Add support for custom HTTP request headers
745−* Inserts an internal policy into the pipeline that can extract HTTP header values from the caller's context, adding them to the request.
746−* Use `azcore.WithHTTPHeader` to add HTTP headers to a context.
747−* Remove method specific to Go 1.14
748−
749−
750−## 0.9.2 (2020-07-28)
751−### Features Added
752−* Omit read-only content from request payloads
753−* If any field in a payload's object graph contains `azure:"ro"`, make a clone of the object graph, omitting all fields with this annotation.
754−* Verify no fields were dropped
755−* Handle embedded struct types
756−* Added test for cloning by value
757−* Add messages to failures
758−
759−
760−## 0.9.1 (2020-07-22)
761−### Features Added
762−* Updated dependency on internal module to fix race condition.
763−
764−
765−## 0.9.0 (2020-07-09)
766−### Features Added
767−* Add `HTTPResponse` interface to be used by callers to access the raw HTTP response from an error in the event of an API call failure.
768−* Updated `sdk/internal` dependency to latest version.
769−* Rename package alias
770−
771−
772−## 0.8.2 (2020-06-29)
773−### Features Added
774−* Added missing documentation comments
775−
776−### Bugs Fixed
777−* Fixed a bug in body download policy.
778−
779−
780−## 0.8.1 (2020-06-26)
781−### Features Added
782−* Miscellaneous clean-up reported by linters
783−
784−
785−## 0.8.0 (2020-06-01)
786−### Features Added
787−* Differentiate between standard and URL encoding.
788−
789−
790−## 0.7.1 (2020-05-27)
791−### Features Added
792−* Add support for for base64 encoding and decoding of payloads.
793−
794−
795−## 0.7.0 (2020-05-12)
796−### Features Added
797−* Change `RetryAfter()` to a function.
798−
799−
800−## 0.6.0 (2020-04-29)
801−### Features Added
802−* Updating `RetryAfter` to only return the detaion in the RetryAfter header
803−
804−
805−## 0.5.0 (2020-03-23)
806−### Features Added
807−* Export `TransportFunc`
808−
809−### Breaking Changes
810−* Removed `IterationDone`
811−
812−
813−## 0.4.1 (2020-02-25)
814−### Features Added
815−* Ensure per-try timeout is properly cancelled
816−* Explicitly call cancel the per-try timeout when the response body has been read/closed by the body download policy.
817−* When the response body is returned to the caller for reading/closing, wrap it in a `responseBodyReader` that will cancel the timeout when the body is closed.
818−* `Logger.Should()` will return false if no listener is set.
819−
820−
821−## 0.4.0 (2020-02-18)
822−### Features Added
823−* Enable custom `RetryOptions` to be specified per API call
824−* Added `WithRetryOptions()` that adds a custom `RetryOptions` to the provided context, allowing custom settings per API call.
825−* Remove 429 from the list of default HTTP status codes for retry.
826−* Change StatusCodesForRetry to a slice so consumers can append to it.
827−* Added support for retry-after in HTTP-date format.
828−* Cleaned up some comments specific to storage.
829−* Remove `Request.SetQueryParam()`
830−* Renamed `MaxTries` to `MaxRetries`
831−
832−## 0.3.0 (2020-01-16)
833−### Features Added
834−* Added `DefaultRetryOptions` to create initialized default options.
835−
836−### Breaking Changes
837−* Removed `Response.CheckStatusCode()`
838−
839−
840−## 0.2.0 (2020-01-15)
841−### Features Added
842−* Add support for marshalling and unmarshalling JSON
843−* Removed `Response.Payload` field
844−* Exit early when unmarsahlling if there is no payload
845−
846−
847−## 0.1.0 (2020-01-10)
848−### Features Added
849−* Initial release
vendor/github.com/Azure/azure-sdk-for-go/sdk/azcore/LICENSE.txtdeleted−21
@@ -1,21 +0,0 @@
1−MIT License
2−
3−Copyright (c) Microsoft Corporation.
4−
5−Permission is hereby granted, free of charge, to any person obtaining a copy
6−of this software and associated documentation files (the "Software"), to deal
7−in the Software without restriction, including without limitation the rights
8−to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9−copies of the Software, and to permit persons to whom the Software is
10−furnished to do so, subject to the following conditions:
11−
12−The above copyright notice and this permission notice shall be included in all
13−copies or substantial portions of the Software.
14−
15−THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16−IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17−FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18−AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19−LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20−OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21−SOFTWARE
vendor/github.com/Azure/azure-sdk-for-go/sdk/azcore/README.mddeleted−39
@@ -1,39 +0,0 @@
1−# Azure Core Client Module for Go
2−
3−[![PkgGoDev](https://pkg.go.dev/badge/github.com/Azure/azure-sdk-for-go/sdk/azcore)](https://pkg.go.dev/github.com/Azure/azure-sdk-for-go/sdk/azcore)
4−[![Build Status](https://dev.azure.com/azure-sdk/public/_apis/build/status/go/go%20-%20azcore%20-%20ci?branchName=main)](https://dev.azure.com/azure-sdk/public/_build/latest?definitionId=1843&branchName=main)
5−[![Code Coverage](https://img.shields.io/azure-devops/coverage/azure-sdk/public/1843/main)](https://img.shields.io/azure-devops/coverage/azure-sdk/public/1843/main)
6−
7−The `azcore` module provides a set of common interfaces and types for Go SDK client modules.
8−These modules follow the [Azure SDK Design Guidelines for Go](https://azure.github.io/azure-sdk/golang_introduction.html).
9−
10−## Getting started
11−
12−This project uses [Go modules](https://github.com/golang/go/wiki/Modules) for versioning and dependency management.
13−
14−Typically, you will not need to explicitly install `azcore` as it will be installed as a client module dependency.
15−To add the latest version to your `go.mod` file, execute the following command.
16−
17−```bash
18−go get github.com/Azure/azure-sdk-for-go/sdk/azcore
19−```
20−
21−General documentation and examples can be found on [pkg.go.dev](https://pkg.go.dev/github.com/Azure/azure-sdk-for-go/sdk/azcore).
22−
23−## Contributing
24−This project welcomes contributions and suggestions. Most contributions require
25−you to agree to a Contributor License Agreement (CLA) declaring that you have
26−the right to, and actually do, grant us the rights to use your contribution.
27−For details, visit [https://cla.microsoft.com](https://cla.microsoft.com).
28−
29−When you submit a pull request, a CLA-bot will automatically determine whether
30−you need to provide a CLA and decorate the PR appropriately (e.g., label,
31−comment). Simply follow the instructions provided by the bot. You will only
32−need to do this once across all repos using our CLA.
33−
34−This project has adopted the
35−[Microsoft Open Source Code of Conduct](https://opensource.microsoft.com/codeofconduct/).
36−For more information, see the
37−[Code of Conduct FAQ](https://opensource.microsoft.com/codeofconduct/faq/)
38−or contact [opencode@microsoft.com](mailto:opencode@microsoft.com) with any
39−additional questions or comments.
vendor/github.com/Azure/azure-sdk-for-go/sdk/azcore/arm/internal/resource/resource_identifier.godeleted−239
@@ -1,239 +0,0 @@
1−//go:build go1.18
2−// +build go1.18
3−
4−// Copyright (c) Microsoft Corporation. All rights reserved.
5−// Licensed under the MIT License.
6−
7−package resource
8−
9−import (
10− "fmt"
11− "strings"
12−)
13−
14−const (
15− providersKey = "providers"
16− subscriptionsKey = "subscriptions"
17− resourceGroupsLowerKey = "resourcegroups"
18− locationsKey = "locations"
19− builtInResourceNamespace = "Microsoft.Resources"
20−)
21−
22−// RootResourceID defines the tenant as the root parent of all other ResourceID.
23−var RootResourceID = &ResourceID{
24− Parent: nil,
25− ResourceType: TenantResourceType,
26− Name: "",
27−}
28−
29−// ResourceID represents a resource ID such as `/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/myRg`.
30−// Don't create this type directly, use ParseResourceID instead.
31−type ResourceID struct {
32− // Parent is the parent ResourceID of this instance.
33− // Can be nil if there is no parent.
34− Parent *ResourceID
35−
36− // SubscriptionID is the subscription ID in this resource ID.
37− // The value can be empty if the resource ID does not contain a subscription ID.
38− SubscriptionID string
39−
40− // ResourceGroupName is the resource group name in this resource ID.
41− // The value can be empty if the resource ID does not contain a resource group name.
42− ResourceGroupName string
43−
44− // Provider represents the provider name in this resource ID.
45− // This is only valid when the resource ID represents a resource provider.
46− // Example: `/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Insights`
47− Provider string
48−
49− // Location is the location in this resource ID.
50− // The value can be empty if the resource ID does not contain a location name.
51− Location string
52−
53− // ResourceType represents the type of this resource ID.
54− ResourceType ResourceType
55−
56− // Name is the resource name of this resource ID.
57− Name string
58−
59− isChild bool
60− stringValue string
61−}
62−
63−// ParseResourceID parses a string to an instance of ResourceID
64−func ParseResourceID(id string) (*ResourceID, error) {
65− if len(id) == 0 {
66− return nil, fmt.Errorf("invalid resource ID: id cannot be empty")
67− }
68−
69− if !strings.HasPrefix(id, "/") {
70− return nil, fmt.Errorf("invalid resource ID: resource id '%s' must start with '/'", id)
71− }
72−
73− parts := splitStringAndOmitEmpty(id, "/")
74−
75− if len(parts) < 2 {
76− return nil, fmt.Errorf("invalid resource ID: %s", id)
77− }
78−
79− if !strings.EqualFold(parts[0], subscriptionsKey) && !strings.EqualFold(parts[0], providersKey) {
80− return nil, fmt.Errorf("invalid resource ID: %s", id)
81− }
82−
83− return appendNext(RootResourceID, parts, id)
84−}
85−
86−// String returns the string of the ResourceID
87−func (id *ResourceID) String() string {
88− if len(id.stringValue) > 0 {
89− return id.stringValue
90− }
91−
92− if id.Parent == nil {
93− return ""
94− }
95−
96− builder := strings.Builder{}
97− builder.WriteString(id.Parent.String())
98−
99− if id.isChild {
100− builder.WriteString(fmt.Sprintf("/%s", id.ResourceType.lastType()))
101− if len(id.Name) > 0 {
102− builder.WriteString(fmt.Sprintf("/%s", id.Name))
103− }
104− } else {
105− builder.WriteString(fmt.Sprintf("/providers/%s/%s/%s", id.ResourceType.Namespace, id.ResourceType.Type, id.Name))
106− }
107−
108− id.stringValue = builder.String()
109−
110− return id.stringValue
111−}
112−
113−// MarshalText returns a textual representation of the ResourceID
114−func (id *ResourceID) MarshalText() ([]byte, error) {
115− return []byte(id.String()), nil
116−}
117−
118−// UnmarshalText decodes the textual representation of a ResourceID
119−func (id *ResourceID) UnmarshalText(text []byte) error {
120− newId, err := ParseResourceID(string(text))
121− if err != nil {
122− return err
123− }
124− *id = *newId
125− return nil
126−}
127−
128−func newResourceID(parent *ResourceID, resourceTypeName string, resourceName string) *ResourceID {
129− id := &ResourceID{}
130− id.init(parent, chooseResourceType(resourceTypeName, parent), resourceName, true)
131− return id
132−}
133−
134−func newResourceIDWithResourceType(parent *ResourceID, resourceType ResourceType, resourceName string) *ResourceID {
135− id := &ResourceID{}
136− id.init(parent, resourceType, resourceName, true)
137− return id
138−}
139−
140−func newResourceIDWithProvider(parent *ResourceID, providerNamespace, resourceTypeName, resourceName string) *ResourceID {
141− id := &ResourceID{}
142− id.init(parent, NewResourceType(providerNamespace, resourceTypeName), resourceName, false)
143− return id
144−}
145−
146−func chooseResourceType(resourceTypeName string, parent *ResourceID) ResourceType {
147− if strings.EqualFold(resourceTypeName, resourceGroupsLowerKey) {
148− return ResourceGroupResourceType
149− } else if strings.EqualFold(resourceTypeName, subscriptionsKey) && parent != nil && parent.ResourceType.String() == TenantResourceType.String() {
150− return SubscriptionResourceType
151− }
152−
153− return parent.ResourceType.AppendChild(resourceTypeName)
154−}
155−
156−func (id *ResourceID) init(parent *ResourceID, resourceType ResourceType, name string, isChild bool) {
157− if parent != nil {
158− id.Provider = parent.Provider
159− id.SubscriptionID = parent.SubscriptionID
160− id.ResourceGroupName = parent.ResourceGroupName
161− id.Location = parent.Location
162− }
163−
164− if resourceType.String() == SubscriptionResourceType.String() {
165− id.SubscriptionID = name
166− }
167−
168− if resourceType.lastType() == locationsKey {
169− id.Location = name
170− }
171−
172− if resourceType.String() == ResourceGroupResourceType.String() {
173− id.ResourceGroupName = name
174− }
175−
176− if resourceType.String() == ProviderResourceType.String() {
177− id.Provider = name
178− }
179−
180− if parent == nil {
181− id.Parent = RootResourceID
182− } else {
183− id.Parent = parent
184− }
185− id.isChild = isChild
186− id.ResourceType = resourceType
187− id.Name = name
188−}
189−
190−func appendNext(parent *ResourceID, parts []string, id string) (*ResourceID, error) {
191− if len(parts) == 0 {
192− return parent, nil
193− }
194−
195− if len(parts) == 1 {
196− // subscriptions and resourceGroups are not valid ids without their names
197− if strings.EqualFold(parts[0], subscriptionsKey) || strings.EqualFold(parts[0], resourceGroupsLowerKey) {
198− return nil, fmt.Errorf("invalid resource ID: %s", id)
199− }
200−
201− // resourceGroup must contain either child or provider resource type
202− if parent.ResourceType.String() == ResourceGroupResourceType.String() {
203− return nil, fmt.Errorf("invalid resource ID: %s", id)
204− }
205−
206− return newResourceID(parent, parts[0], ""), nil
207− }
208−
209− if strings.EqualFold(parts[0], providersKey) && (len(parts) == 2 || strings.EqualFold(parts[2], providersKey)) {
210− // provider resource can only be on a tenant or a subscription parent
211− if parent.ResourceType.String() != SubscriptionResourceType.String() && parent.ResourceType.String() != TenantResourceType.String() {
212− return nil, fmt.Errorf("invalid resource ID: %s", id)
213− }
214−
215− return appendNext(newResourceIDWithResourceType(parent, ProviderResourceType, parts[1]), parts[2:], id)
216− }
217−
218− if len(parts) > 3 && strings.EqualFold(parts[0], providersKey) {
219− return appendNext(newResourceIDWithProvider(parent, parts[1], parts[2], parts[3]), parts[4:], id)
220− }
221−
222− if len(parts) > 1 && !strings.EqualFold(parts[0], providersKey) {
223− return appendNext(newResourceID(parent, parts[0], parts[1]), parts[2:], id)
224− }
225−
226− return nil, fmt.Errorf("invalid resource ID: %s", id)
227−}
228−
229−func splitStringAndOmitEmpty(v, sep string) []string {
230− r := make([]string, 0)
231− for _, s := range strings.Split(v, sep) {
232− if len(s) == 0 {
233− continue
234− }
235− r = append(r, s)
236− }
237−
238− return r
239−}
vendor/github.com/Azure/azure-sdk-for-go/sdk/azcore/arm/internal/resource/resource_type.godeleted−114
@@ -1,114 +0,0 @@
1−//go:build go1.18
2−// +build go1.18
3−
4−// Copyright (c) Microsoft Corporation. All rights reserved.
5−// Licensed under the MIT License.
6−
7−package resource
8−
9−import (
10− "fmt"
11− "strings"
12−)
13−
14−// SubscriptionResourceType is the ResourceType of a subscription
15−var SubscriptionResourceType = NewResourceType(builtInResourceNamespace, "subscriptions")
16−
17−// ResourceGroupResourceType is the ResourceType of a resource group
18−var ResourceGroupResourceType = NewResourceType(builtInResourceNamespace, "resourceGroups")
19−
20−// TenantResourceType is the ResourceType of a tenant
21−var TenantResourceType = NewResourceType(builtInResourceNamespace, "tenants")
22−
23−// ProviderResourceType is the ResourceType of a provider
24−var ProviderResourceType = NewResourceType(builtInResourceNamespace, "providers")
25−
26−// ResourceType represents an Azure resource type, e.g. "Microsoft.Network/virtualNetworks/subnets".
27−// Don't create this type directly, use ParseResourceType or NewResourceType instead.
28−type ResourceType struct {
29− // Namespace is the namespace of the resource type.
30− // e.g. "Microsoft.Network" in resource type "Microsoft.Network/virtualNetworks/subnets"
31− Namespace string
32−
33− // Type is the full type name of the resource type.
34− // e.g. "virtualNetworks/subnets" in resource type "Microsoft.Network/virtualNetworks/subnets"
35− Type string
36−
37− // Types is the slice of all the sub-types of this resource type.
38− // e.g. ["virtualNetworks", "subnets"] in resource type "Microsoft.Network/virtualNetworks/subnets"
39− Types []string
40−
41− stringValue string
42−}
43−
44−// String returns the string of the ResourceType
45−func (t ResourceType) String() string {
46− return t.stringValue
47−}
48−
49−// IsParentOf returns true when the receiver is the parent resource type of the child.
50−func (t ResourceType) IsParentOf(child ResourceType) bool {
51− if !strings.EqualFold(t.Namespace, child.Namespace) {
52− return false
53− }
54− if len(t.Types) >= len(child.Types) {
55− return false
56− }
57− for i := range t.Types {
58− if !strings.EqualFold(t.Types[i], child.Types[i]) {
59− return false
60− }
61− }
62−
63− return true
64−}
65−
66−// AppendChild creates an instance of ResourceType using the receiver as the parent with childType appended to it.
67−func (t ResourceType) AppendChild(childType string) ResourceType {
68− return NewResourceType(t.Namespace, fmt.Sprintf("%s/%s", t.Type, childType))
69−}
70−
71−// NewResourceType creates an instance of ResourceType using a provider namespace
72−// such as "Microsoft.Network" and type such as "virtualNetworks/subnets".
73−func NewResourceType(providerNamespace, typeName string) ResourceType {
74− return ResourceType{
75− Namespace: providerNamespace,
76− Type: typeName,
77− Types: splitStringAndOmitEmpty(typeName, "/"),
78− stringValue: fmt.Sprintf("%s/%s", providerNamespace, typeName),
79− }
80−}
81−
82−// ParseResourceType parses the ResourceType from a resource type string (e.g. Microsoft.Network/virtualNetworks/subsets)
83−// or a resource identifier string.
84−// e.g. /subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/myRg/providers/Microsoft.Network/virtualNetworks/vnet/subnets/mySubnet)
85−func ParseResourceType(resourceIDOrType string) (ResourceType, error) {
86− // split the path into segments
87− parts := splitStringAndOmitEmpty(resourceIDOrType, "/")
88−
89− // There must be at least a namespace and type name
90− if len(parts) < 1 {
91− return ResourceType{}, fmt.Errorf("invalid resource ID or type: %s", resourceIDOrType)
92− }
93−
94− // if the type is just subscriptions, it is a built-in type in the Microsoft.Resources namespace
95− if len(parts) == 1 {
96− // Simple resource type
97− return NewResourceType(builtInResourceNamespace, parts[0]), nil
98− } else if strings.Contains(parts[0], ".") {
99− // Handle resource types (Microsoft.Compute/virtualMachines, Microsoft.Network/virtualNetworks/subnets)
100− // it is a full type name
101− return NewResourceType(parts[0], strings.Join(parts[1:], "/")), nil
102− } else {
103− // Check if ResourceID
104− id, err := ParseResourceID(resourceIDOrType)
105− if err != nil {
106− return ResourceType{}, err
107− }
108− return NewResourceType(id.ResourceType.Namespace, id.ResourceType.Type), nil
109− }
110−}
111−
112−func (t ResourceType) lastType() string {
113− return t.Types[len(t.Types)-1]
114−}
vendor/github.com/Azure/azure-sdk-for-go/sdk/azcore/arm/policy/policy.godeleted−108
@@ -1,108 +0,0 @@
1−//go:build go1.18
2−// +build go1.18
3−
4−// Copyright (c) Microsoft Corporation. All rights reserved.
5−// Licensed under the MIT License.
6−
7−package policy
8−
9−import (
10− "time"
11−
12− "github.com/Azure/azure-sdk-for-go/sdk/azcore/policy"
13−)
14−
15−// BearerTokenOptions configures the bearer token policy's behavior.
16−type BearerTokenOptions struct {
17− // AuxiliaryTenants are additional tenant IDs for authenticating cross-tenant requests.
18− // The policy will add a token from each of these tenants to every request. The
19− // authenticating user or service principal must be a guest in these tenants, and the
20− // policy's credential must support multitenant authentication.
21− AuxiliaryTenants []string
22−
23− // InsecureAllowCredentialWithHTTP enables authenticated requests over HTTP.
24− // By default, authenticated requests to an HTTP endpoint are rejected by the client.
25− // WARNING: setting this to true will allow sending the authentication key in clear text. Use with caution.
26− InsecureAllowCredentialWithHTTP bool
27−
28− // Scopes contains the list of permission scopes required for the token.
29− Scopes []string
30−}
31−
32−// RegistrationOptions configures the registration policy's behavior.
33−// All zero-value fields will be initialized with their default values.
34−type RegistrationOptions struct {
35− policy.ClientOptions
36−
37− // MaxAttempts is the total number of times to attempt automatic registration
38− // in the event that an attempt fails.
39− // The default value is 3.
40− // Set to a value less than zero to disable the policy.
41− MaxAttempts int
42−
43− // PollingDelay is the amount of time to sleep between polling intervals.
44− // The default value is 15 seconds.
45− // A value less than zero means no delay between polling intervals (not recommended).
46− PollingDelay time.Duration
47−
48− // PollingDuration is the amount of time to wait before abandoning polling.
49− // The default valule is 5 minutes.
50− // NOTE: Setting this to a small value might cause the policy to prematurely fail.
51− PollingDuration time.Duration
52−
53− // StatusCodes contains the slice of custom HTTP status codes to use instead
54− // of the default http.StatusConflict. This should only be set if a service
55− // returns a non-standard HTTP status code when unregistered.
56− StatusCodes []int
57−}
58−
59−// ClientOptions contains configuration settings for a client's pipeline.
60−type ClientOptions struct {
61− policy.ClientOptions
62−
63− // AuxiliaryTenants are additional tenant IDs for authenticating cross-tenant requests.
64− // The client will add a token from each of these tenants to every request. The
65− // authenticating user or service principal must be a guest in these tenants, and the
66− // client's credential must support multitenant authentication.
67− AuxiliaryTenants []string
68−
69− // DisableRPRegistration disables the auto-RP registration policy. Defaults to false.
70− DisableRPRegistration bool
71−}
72−
73−// Clone return a deep copy of the current options.
74−func (o *ClientOptions) Clone() *ClientOptions {
75− if o == nil {
76− return nil
77− }
78− copiedOptions := *o
79− copiedOptions.Cloud.Services = copyMap(copiedOptions.Cloud.Services)
80− copiedOptions.Logging.AllowedHeaders = copyArray(copiedOptions.Logging.AllowedHeaders)
81− copiedOptions.Logging.AllowedQueryParams = copyArray(copiedOptions.Logging.AllowedQueryParams)
82− copiedOptions.Retry.StatusCodes = copyArray(copiedOptions.Retry.StatusCodes)
83− copiedOptions.PerRetryPolicies = copyArray(copiedOptions.PerRetryPolicies)
84− copiedOptions.PerCallPolicies = copyArray(copiedOptions.PerCallPolicies)
85− return &copiedOptions
86−}
87−
88−// copyMap return a new map with all the key value pair in the src map
89−func copyMap[K comparable, V any](src map[K]V) map[K]V {
90− if src == nil {
91− return nil
92− }
93− copiedMap := make(map[K]V)
94− for k, v := range src {
95− copiedMap[k] = v
96− }
97− return copiedMap
98−}
99−
100−// copyMap return a new array with all the elements in the src array
101−func copyArray[T any](src []T) []T {
102− if src == nil {
103− return nil
104− }
105− copiedArray := make([]T, len(src))
106− copy(copiedArray, src)
107− return copiedArray
108−}
vendor/github.com/Azure/azure-sdk-for-go/sdk/azcore/arm/runtime/pipeline.godeleted−70
@@ -1,70 +0,0 @@
1−//go:build go1.18
2−// +build go1.18
3−
4−// Copyright (c) Microsoft Corporation. All rights reserved.
5−// Licensed under the MIT License.
6−
7−package runtime
8−
9−import (
10− "errors"
11− "reflect"
12−
13− "github.com/Azure/azure-sdk-for-go/sdk/azcore"
14− armpolicy "github.com/Azure/azure-sdk-for-go/sdk/azcore/arm/policy"
15− "github.com/Azure/azure-sdk-for-go/sdk/azcore/cloud"
16− "github.com/Azure/azure-sdk-for-go/sdk/azcore/internal/exported"
17− azpolicy "github.com/Azure/azure-sdk-for-go/sdk/azcore/policy"
18− azruntime "github.com/Azure/azure-sdk-for-go/sdk/azcore/runtime"
19−)
20−
21−// NewPipeline creates a pipeline from connection options. Policies from ClientOptions are
22−// placed after policies from PipelineOptions. The telemetry policy, when enabled, will
23−// use the specified module and version info.
24−func NewPipeline(module, version string, cred azcore.TokenCredential, plOpts azruntime.PipelineOptions, options *armpolicy.ClientOptions) (azruntime.Pipeline, error) {
25− if options == nil {
26− options = &armpolicy.ClientOptions{}
27− }
28− conf, err := getConfiguration(&options.ClientOptions)
29− if err != nil {
30− return azruntime.Pipeline{}, err
31− }
32− authPolicy := NewBearerTokenPolicy(cred, &armpolicy.BearerTokenOptions{
33− AuxiliaryTenants: options.AuxiliaryTenants,
34− InsecureAllowCredentialWithHTTP: options.InsecureAllowCredentialWithHTTP,
35− Scopes: []string{conf.Audience + "/.default"},
36− })
37− // we don't want to modify the underlying array in plOpts.PerRetry
38− perRetry := make([]azpolicy.Policy, len(plOpts.PerRetry), len(plOpts.PerRetry)+1)
39− copy(perRetry, plOpts.PerRetry)
40− perRetry = append(perRetry, authPolicy, exported.PolicyFunc(httpTraceNamespacePolicy))
41− plOpts.PerRetry = perRetry
42− if !options.DisableRPRegistration {
43− regRPOpts := armpolicy.RegistrationOptions{ClientOptions: options.ClientOptions}
44− regPolicy, err := NewRPRegistrationPolicy(cred, &regRPOpts)
45− if err != nil {
46− return azruntime.Pipeline{}, err
47− }
48− // we don't want to modify the underlying array in plOpts.PerCall
49− perCall := make([]azpolicy.Policy, len(plOpts.PerCall), len(plOpts.PerCall)+1)
50− copy(perCall, plOpts.PerCall)
51− perCall = append(perCall, regPolicy)
52− plOpts.PerCall = perCall
53− }
54− if plOpts.APIVersion.Name == "" {
55− plOpts.APIVersion.Name = "api-version"
56− }
57− return azruntime.NewPipeline(module, version, plOpts, &options.ClientOptions), nil
58−}
59−
60−func getConfiguration(o *azpolicy.ClientOptions) (cloud.ServiceConfiguration, error) {
61− c := cloud.AzurePublic
62− if !reflect.ValueOf(o.Cloud).IsZero() {
63− c = o.Cloud
64− }
65− if conf, ok := c.Services[cloud.ResourceManager]; ok && conf.Endpoint != "" && conf.Audience != "" {
66− return conf, nil
67− } else {
68− return conf, errors.New("provided Cloud field is missing Azure Resource Manager configuration")
69− }
70−}
vendor/github.com/Azure/azure-sdk-for-go/sdk/azcore/arm/runtime/policy_bearer_token.godeleted−102
@@ -1,102 +0,0 @@
1−// Copyright (c) Microsoft Corporation. All rights reserved.
2−// Licensed under the MIT License.
3−
4−package runtime
5−
6−import (
7− "context"
8− "fmt"
9− "net/http"
10− "strings"
11− "time"
12−
13− "github.com/Azure/azure-sdk-for-go/sdk/azcore"
14− armpolicy "github.com/Azure/azure-sdk-for-go/sdk/azcore/arm/policy"
15− "github.com/Azure/azure-sdk-for-go/sdk/azcore/internal/shared"
16− azpolicy "github.com/Azure/azure-sdk-for-go/sdk/azcore/policy"
17− azruntime "github.com/Azure/azure-sdk-for-go/sdk/azcore/runtime"
18− "github.com/Azure/azure-sdk-for-go/sdk/internal/temporal"
19−)
20−
21−const headerAuxiliaryAuthorization = "x-ms-authorization-auxiliary"
22−
23−// acquiringResourceState holds data for an auxiliary token request
24−type acquiringResourceState struct {
25− ctx context.Context
26− p *BearerTokenPolicy
27− tenant string
28−}
29−
30−// acquireAuxToken acquires a token from an auxiliary tenant. Only one thread/goroutine at a time ever calls this function.
31−func acquireAuxToken(state acquiringResourceState) (newResource azcore.AccessToken, newExpiration time.Time, err error) {
32− tk, err := state.p.cred.GetToken(state.ctx, azpolicy.TokenRequestOptions{
33− EnableCAE: true,
34− Scopes: state.p.scopes,
35− TenantID: state.tenant,
36− })
37− if err != nil {
38− return azcore.AccessToken{}, time.Time{}, err
39− }
40− return tk, tk.ExpiresOn, nil
41−}
42−
43−// BearerTokenPolicy authorizes requests with bearer tokens acquired from a TokenCredential.
44−type BearerTokenPolicy struct {
45− auxResources map[string]*temporal.Resource[azcore.AccessToken, acquiringResourceState]
46− btp *azruntime.BearerTokenPolicy
47− cred azcore.TokenCredential
48− scopes []string
49−}
50−
51−// NewBearerTokenPolicy creates a policy object that authorizes requests with bearer tokens.
52−// cred: an azcore.TokenCredential implementation such as a credential object from azidentity
53−// opts: optional settings. Pass nil to accept default values; this is the same as passing a zero-value options.
54−func NewBearerTokenPolicy(cred azcore.TokenCredential, opts *armpolicy.BearerTokenOptions) *BearerTokenPolicy {
55− if opts == nil {
56− opts = &armpolicy.BearerTokenOptions{}
57− }
58− p := &BearerTokenPolicy{cred: cred}
59− p.auxResources = make(map[string]*temporal.Resource[azcore.AccessToken, acquiringResourceState], len(opts.AuxiliaryTenants))
60− for _, t := range opts.AuxiliaryTenants {
61− p.auxResources[t] = temporal.NewResource(acquireAuxToken)
62− }
63− p.scopes = make([]string, len(opts.Scopes))
64− copy(p.scopes, opts.Scopes)
65− p.btp = azruntime.NewBearerTokenPolicy(cred, opts.Scopes, &azpolicy.BearerTokenOptions{
66− InsecureAllowCredentialWithHTTP: opts.InsecureAllowCredentialWithHTTP,
67− AuthorizationHandler: azpolicy.AuthorizationHandler{
68− OnRequest: p.onRequest,
69− },
70− })
71− return p
72−}
73−
74−// onRequest authorizes requests with one or more bearer tokens
75−func (b *BearerTokenPolicy) onRequest(req *azpolicy.Request, authNZ func(azpolicy.TokenRequestOptions) error) error {
76− // authorize the request with a token for the primary tenant
77− err := authNZ(azpolicy.TokenRequestOptions{Scopes: b.scopes})
78− if err != nil || len(b.auxResources) == 0 {
79− return err
80− }
81− // add tokens for auxiliary tenants
82− as := acquiringResourceState{
83− ctx: req.Raw().Context(),
84− p: b,
85− }
86− auxTokens := make([]string, 0, len(b.auxResources))
87− for tenant, er := range b.auxResources {
88− as.tenant = tenant
89− auxTk, err := er.Get(as)
90− if err != nil {
91− return err
92− }
93− auxTokens = append(auxTokens, fmt.Sprintf("%s%s", shared.BearerTokenPrefix, auxTk.Token))
94− }
95− req.Raw().Header.Set(headerAuxiliaryAuthorization, strings.Join(auxTokens, ", "))
96− return nil
97−}
98−
99−// Do authorizes a request with a bearer token
100−func (b *BearerTokenPolicy) Do(req *azpolicy.Request) (*http.Response, error) {
101− return b.btp.Do(req)
102−}
vendor/github.com/Azure/azure-sdk-for-go/sdk/azcore/arm/runtime/policy_register_rp.godeleted−322
@@ -1,322 +0,0 @@
1−//go:build go1.18
2−// +build go1.18
3−
4−// Copyright (c) Microsoft Corporation. All rights reserved.
5−// Licensed under the MIT License.
6−
7−package runtime
8−
9−import (
10− "context"
11− "fmt"
12− "net/http"
13− "net/url"
14− "strings"
15− "time"
16−
17− "github.com/Azure/azure-sdk-for-go/sdk/azcore"
18− "github.com/Azure/azure-sdk-for-go/sdk/azcore/arm/internal/resource"
19− armpolicy "github.com/Azure/azure-sdk-for-go/sdk/azcore/arm/policy"
20− "github.com/Azure/azure-sdk-for-go/sdk/azcore/internal/exported"
21− "github.com/Azure/azure-sdk-for-go/sdk/azcore/internal/shared"
22− azpolicy "github.com/Azure/azure-sdk-for-go/sdk/azcore/policy"
23− "github.com/Azure/azure-sdk-for-go/sdk/azcore/runtime"
24− "github.com/Azure/azure-sdk-for-go/sdk/internal/log"
25−)
26−
27−const (
28− // LogRPRegistration entries contain information specific to the automatic registration of an RP.
29− // Entries of this classification are written IFF the policy needs to take any action.
30− LogRPRegistration log.Event = "RPRegistration"
31−)
32−
33−// init sets any default values
34−func setDefaults(r *armpolicy.RegistrationOptions) {
35− if r.MaxAttempts == 0 {
36− r.MaxAttempts = 3
37− } else if r.MaxAttempts < 0 {
38− r.MaxAttempts = 0
39− }
40− if r.PollingDelay == 0 {
41− r.PollingDelay = 15 * time.Second
42− } else if r.PollingDelay < 0 {
43− r.PollingDelay = 0
44− }
45− if r.PollingDuration == 0 {
46− r.PollingDuration = 5 * time.Minute
47− }
48− if len(r.StatusCodes) == 0 {
49− r.StatusCodes = []int{http.StatusConflict}
50− }
51−}
52−
53−// NewRPRegistrationPolicy creates a policy object configured using the specified options.
54−// The policy controls whether an unregistered resource provider should automatically be
55−// registered. See https://aka.ms/rps-not-found for more information.
56−func NewRPRegistrationPolicy(cred azcore.TokenCredential, o *armpolicy.RegistrationOptions) (azpolicy.Policy, error) {
57− if o == nil {
58− o = &armpolicy.RegistrationOptions{}
59− }
60− conf, err := getConfiguration(&o.ClientOptions)
61− if err != nil {
62− return nil, err
63− }
64− authPolicy := NewBearerTokenPolicy(cred, &armpolicy.BearerTokenOptions{Scopes: []string{conf.Audience + "/.default"}})
65− p := &rpRegistrationPolicy{
66− endpoint: conf.Endpoint,
67− pipeline: runtime.NewPipeline(shared.Module, shared.Version, runtime.PipelineOptions{PerRetry: []azpolicy.Policy{authPolicy}}, &o.ClientOptions),
68− options: *o,
69− }
70− // init the copy
71− setDefaults(&p.options)
72− return p, nil
73−}
74−
75−type rpRegistrationPolicy struct {
76− endpoint string
77− pipeline runtime.Pipeline
78− options armpolicy.RegistrationOptions
79−}
80−
81−func (r *rpRegistrationPolicy) Do(req *azpolicy.Request) (*http.Response, error) {
82− if r.options.MaxAttempts == 0 {
83− // policy is disabled
84− return req.Next()
85− }
86− const registeredState = "Registered"
87− var rp string
88− var resp *http.Response
89− for attempts := 0; attempts < r.options.MaxAttempts; attempts++ {
90− var err error
91− // make the original request
92− resp, err = req.Next()
93− // getting a 409 is the first indication that the RP might need to be registered, check error response
94− if err != nil || !runtime.HasStatusCode(resp, r.options.StatusCodes...) {
95− return resp, err
96− }
97− var reqErr requestError
98− if err = runtime.UnmarshalAsJSON(resp, &reqErr); err != nil {
99− return resp, err
100− }
101− if reqErr.ServiceError == nil {
102− // missing service error info. just return the response
103− // to the caller so its error unmarshalling will kick in
104− return resp, err
105− }
106− if !isUnregisteredRPCode(reqErr.ServiceError.Code) {
107− // not a 409 due to unregistered RP. just return the response
108− // to the caller so its error unmarshalling will kick in
109− return resp, err
110− }
111− res, err := resource.ParseResourceID(req.Raw().URL.Path)
112− if err != nil {
113− return resp, err
114− }
115− rp = res.ResourceType.Namespace
116− logRegistrationExit := func(v any) {
117− log.Writef(LogRPRegistration, "END registration for %s: %v", rp, v)
118− }
119− log.Writef(LogRPRegistration, "BEGIN registration for %s", rp)
120− // create client and make the registration request
121− // we use the scheme and host from the original request
122− rpOps := &providersOperations{
123− p: r.pipeline,
124− u: r.endpoint,
125− subID: res.SubscriptionID,
126− }
127− if _, err = rpOps.Register(&shared.ContextWithDeniedValues{Context: req.Raw().Context()}, rp); err != nil {
128− logRegistrationExit(err)
129− return resp, err
130− }
131−
132− // RP was registered, however we need to wait for the registration to complete
133− pollCtx, pollCancel := context.WithTimeout(&shared.ContextWithDeniedValues{Context: req.Raw().Context()}, r.options.PollingDuration)
134− var lastRegState string
135− for {
136− // get the current registration state
137− getResp, err := rpOps.Get(pollCtx, rp)
138− if err != nil {
139− pollCancel()
140− logRegistrationExit(err)
141− return resp, err
142− }
143− if getResp.Provider.RegistrationState != nil && !strings.EqualFold(*getResp.Provider.RegistrationState, lastRegState) {
144− // registration state has changed, or was updated for the first time
145− lastRegState = *getResp.Provider.RegistrationState
146− log.Writef(LogRPRegistration, "registration state is %s", lastRegState)
147− }
148− if strings.EqualFold(lastRegState, registeredState) {
149− // registration complete
150− pollCancel()
151− logRegistrationExit(lastRegState)
152− break
153− }
154− // wait before trying again
155− select {
156− case <-time.After(r.options.PollingDelay):
157− // continue polling
158− case <-pollCtx.Done():
159− pollCancel()
160− logRegistrationExit(pollCtx.Err())
161− return resp, pollCtx.Err()
162− }
163− }
164− // RP was successfully registered, retry the original request
165− err = req.RewindBody()
166− if err != nil {
167− return resp, err
168− }
169− }
170− // if we get here it means we exceeded the number of attempts
171− return resp, fmt.Errorf("exceeded attempts to register %s", rp)
172−}
173−
174−var unregisteredRPCodes = []string{
175− "MissingSubscriptionRegistration",
176− "MissingRegistrationForResourceProvider",
177− "Subscription Not Registered",
178− "SubscriptionNotRegistered",
179−}
180−
181−func isUnregisteredRPCode(errorCode string) bool {
182− for _, code := range unregisteredRPCodes {
183− if strings.EqualFold(errorCode, code) {
184− return true
185− }
186− }
187− return false
188−}
189−
190−// minimal error definitions to simplify detection
191−type requestError struct {
192− ServiceError *serviceError `json:"error"`
193−}
194−
195−type serviceError struct {
196− Code string `json:"code"`
197−}
198−
199−///////////////////////////////////////////////////////////////////////////////////////////////
200−// the following code was copied from module armresources, providers.go and models.go
201−// only the minimum amount of code was copied to get this working and some edits were made.
202−///////////////////////////////////////////////////////////////////////////////////////////////
203−
204−type providersOperations struct {
205− p runtime.Pipeline
206− u string
207− subID string
208−}
209−
210−// Get - Gets the specified resource provider.
211−func (client *providersOperations) Get(ctx context.Context, resourceProviderNamespace string) (providerResponse, error) {
212− req, err := client.getCreateRequest(ctx, resourceProviderNamespace)
213− if err != nil {
214− return providerResponse{}, err
215− }
216− resp, err := client.p.Do(req)
217− if err != nil {
218− return providerResponse{}, err
219− }
220− result, err := client.getHandleResponse(resp)
221− if err != nil {
222− return providerResponse{}, err
223− }
224− return result, nil
225−}
226−
227−// getCreateRequest creates the Get request.
228−func (client *providersOperations) getCreateRequest(ctx context.Context, resourceProviderNamespace string) (*azpolicy.Request, error) {
229− urlPath := "/subscriptions/{subscriptionId}/providers/{resourceProviderNamespace}"
230− urlPath = strings.ReplaceAll(urlPath, "{resourceProviderNamespace}", url.PathEscape(resourceProviderNamespace))
231− urlPath = strings.ReplaceAll(urlPath, "{subscriptionId}", url.PathEscape(client.subID))
232− req, err := runtime.NewRequest(ctx, http.MethodGet, runtime.JoinPaths(client.u, urlPath))
233− if err != nil {
234− return nil, err
235− }
236− query := req.Raw().URL.Query()
237− query.Set("api-version", "2019-05-01")
238− req.Raw().URL.RawQuery = query.Encode()
239− return req, nil
240−}
241−
242−// getHandleResponse handles the Get response.
243−func (client *providersOperations) getHandleResponse(resp *http.Response) (providerResponse, error) {
244− if !runtime.HasStatusCode(resp, http.StatusOK) {
245− return providerResponse{}, exported.NewResponseError(resp)
246− }
247− result := providerResponse{RawResponse: resp}
248− err := runtime.UnmarshalAsJSON(resp, &result.Provider)
249− if err != nil {
250− return providerResponse{}, err
251− }
252− return result, err
253−}
254−
255−// Register - Registers a subscription with a resource provider.
256−func (client *providersOperations) Register(ctx context.Context, resourceProviderNamespace string) (providerResponse, error) {
257− req, err := client.registerCreateRequest(ctx, resourceProviderNamespace)
258− if err != nil {
259− return providerResponse{}, err
260− }
261− resp, err := client.p.Do(req)
262− if err != nil {
263− return providerResponse{}, err
264− }
265− result, err := client.registerHandleResponse(resp)
266− if err != nil {
267− return providerResponse{}, err
268− }
269− return result, nil
270−}
271−
272−// registerCreateRequest creates the Register request.
273−func (client *providersOperations) registerCreateRequest(ctx context.Context, resourceProviderNamespace string) (*azpolicy.Request, error) {
274− urlPath := "/subscriptions/{subscriptionId}/providers/{resourceProviderNamespace}/register"
275− urlPath = strings.ReplaceAll(urlPath, "{resourceProviderNamespace}", url.PathEscape(resourceProviderNamespace))
276− urlPath = strings.ReplaceAll(urlPath, "{subscriptionId}", url.PathEscape(client.subID))
277− req, err := runtime.NewRequest(ctx, http.MethodPost, runtime.JoinPaths(client.u, urlPath))
278− if err != nil {
279− return nil, err
280− }
281− query := req.Raw().URL.Query()
282− query.Set("api-version", "2019-05-01")
283− req.Raw().URL.RawQuery = query.Encode()
284− return req, nil
285−}
286−
287−// registerHandleResponse handles the Register response.
288−func (client *providersOperations) registerHandleResponse(resp *http.Response) (providerResponse, error) {
289− if !runtime.HasStatusCode(resp, http.StatusOK) {
290− return providerResponse{}, exported.NewResponseError(resp)
291− }
292− result := providerResponse{RawResponse: resp}
293− err := runtime.UnmarshalAsJSON(resp, &result.Provider)
294− if err != nil {
295− return providerResponse{}, err
296− }
297− return result, err
298−}
299−
300−// ProviderResponse is the response envelope for operations that return a Provider type.
301−type providerResponse struct {
302− // Resource provider information.
303− Provider *provider
304−
305− // RawResponse contains the underlying HTTP response.
306− RawResponse *http.Response
307−}
308−
309−// Provider - Resource provider information.
310−type provider struct {
311− // The provider ID.
312− ID *string `json:"id,omitempty"`
313−
314− // The namespace of the resource provider.
315− Namespace *string `json:"namespace,omitempty"`
316−
317− // The registration policy of the resource provider.
318− RegistrationPolicy *string `json:"registrationPolicy,omitempty"`
319−
320− // The registration state of the resource provider.
321− RegistrationState *string `json:"registrationState,omitempty"`
322−}
vendor/github.com/Azure/azure-sdk-for-go/sdk/azcore/arm/runtime/policy_trace_namespace.godeleted−30
@@ -1,30 +0,0 @@
1−//go:build go1.18
2−// +build go1.18
3−
4−// Copyright (c) Microsoft Corporation. All rights reserved.
5−// Licensed under the MIT License.
6−
7−package runtime
8−
9−import (
10− "net/http"
11−
12− "github.com/Azure/azure-sdk-for-go/sdk/azcore/arm/internal/resource"
13− "github.com/Azure/azure-sdk-for-go/sdk/azcore/internal/shared"
14− "github.com/Azure/azure-sdk-for-go/sdk/azcore/policy"
15− "github.com/Azure/azure-sdk-for-go/sdk/azcore/tracing"
16−)
17−
18−// httpTraceNamespacePolicy is a policy that adds the az.namespace attribute to the current Span
19−func httpTraceNamespacePolicy(req *policy.Request) (resp *http.Response, err error) {
20− rawTracer := req.Raw().Context().Value(shared.CtxWithTracingTracer{})
21− if tracer, ok := rawTracer.(tracing.Tracer); ok && tracer.Enabled() {
22− rt, err := resource.ParseResourceType(req.Raw().URL.Path)
23− if err == nil {
24− // add the namespace attribute to the current span
25− span := tracer.SpanFromContext(req.Raw().Context())
26− span.SetAttributes(tracing.Attribute{Key: shared.TracingNamespaceAttrName, Value: rt.Namespace})
27− }
28− }
29− return req.Next()
30−}
vendor/github.com/Azure/azure-sdk-for-go/sdk/azcore/arm/runtime/runtime.godeleted−24
@@ -1,24 +0,0 @@
1−//go:build go1.16
2−// +build go1.16
3−
4−// Copyright (c) Microsoft Corporation. All rights reserved.
5−// Licensed under the MIT License.
6−
7−package runtime
8−
9−import "github.com/Azure/azure-sdk-for-go/sdk/azcore/cloud"
10−
11−func init() {
12− cloud.AzureChina.Services[cloud.ResourceManager] = cloud.ServiceConfiguration{
13− Audience: "https://management.core.chinacloudapi.cn",
14− Endpoint: "https://management.chinacloudapi.cn",
15− }
16− cloud.AzureGovernment.Services[cloud.ResourceManager] = cloud.ServiceConfiguration{
17− Audience: "https://management.core.usgovcloudapi.net",
18− Endpoint: "https://management.usgovcloudapi.net",
19− }
20− cloud.AzurePublic.Services[cloud.ResourceManager] = cloud.ServiceConfiguration{
21− Audience: "https://management.core.windows.net/",
22− Endpoint: "https://management.azure.com",
23− }
24−}
vendor/github.com/Azure/azure-sdk-for-go/sdk/azcore/ci.ymldeleted−29
@@ -1,29 +0,0 @@
1−# NOTE: Please refer to https://aka.ms/azsdk/engsys/ci-yaml before editing this file.
2−trigger:
3− branches:
4− include:
5− - main
6− - feature/*
7− - hotfix/*
8− - release/*
9− paths:
10− include:
11− - sdk/azcore/
12− - eng/
13−
14−pr:
15− branches:
16− include:
17− - main
18− - feature/*
19− - hotfix/*
20− - release/*
21− paths:
22− include:
23− - sdk/azcore/
24− - eng/
25−
26−extends:
27− template: /eng/pipelines/templates/jobs/archetype-sdk-client.yml
28− parameters:
29− ServiceDirectory: azcore
vendor/github.com/Azure/azure-sdk-for-go/sdk/azcore/cloud/cloud.godeleted−44
@@ -1,44 +0,0 @@
1−//go:build go1.18
2−// +build go1.18
3−
4−// Copyright (c) Microsoft Corporation. All rights reserved.
5−// Licensed under the MIT License.
6−
7−package cloud
8−
9−var (
10− // AzureChina contains configuration for Azure China.
11− AzureChina = Configuration{
12− ActiveDirectoryAuthorityHost: "https://login.chinacloudapi.cn/", Services: map[ServiceName]ServiceConfiguration{},
13− }
14− // AzureGovernment contains configuration for Azure Government.
15− AzureGovernment = Configuration{
16− ActiveDirectoryAuthorityHost: "https://login.microsoftonline.us/", Services: map[ServiceName]ServiceConfiguration{},
17− }
18− // AzurePublic contains configuration for Azure Public Cloud.
19− AzurePublic = Configuration{
20− ActiveDirectoryAuthorityHost: "https://login.microsoftonline.com/", Services: map[ServiceName]ServiceConfiguration{},
21− }
22−)
23−
24−// ServiceName identifies a cloud service.
25−type ServiceName string
26−
27−// ResourceManager is a global constant identifying Azure Resource Manager.
28−const ResourceManager ServiceName = "resourceManager"
29−
30−// ServiceConfiguration configures a specific cloud service such as Azure Resource Manager.
31−type ServiceConfiguration struct {
32− // Audience is the audience the client will request for its access tokens.
33− Audience string
34− // Endpoint is the service's base URL.
35− Endpoint string
36−}
37−
38−// Configuration configures a cloud.
39−type Configuration struct {
40− // ActiveDirectoryAuthorityHost is the base URL of the cloud's Azure Active Directory.
41− ActiveDirectoryAuthorityHost string
42− // Services contains configuration for the cloud's services.
43− Services map[ServiceName]ServiceConfiguration
44−}
vendor/github.com/Azure/azure-sdk-for-go/sdk/azcore/cloud/doc.godeleted−53
@@ -1,53 +0,0 @@
1−//go:build go1.16
2−// +build go1.16
3−
4−// Copyright (c) Microsoft Corporation. All rights reserved.
5−// Licensed under the MIT License.
6−
7−/*
8−Package cloud implements a configuration API for applications deployed to sovereign or private Azure clouds.
9−
10−Azure SDK client configuration defaults are appropriate for Azure Public Cloud (sometimes referred to as
11−"Azure Commercial" or simply "Microsoft Azure"). This package enables applications deployed to other
12−Azure Clouds to configure clients appropriately.
13−
14−This package contains predefined configuration for well-known sovereign clouds such as Azure Government and
15−Azure China. Azure SDK clients accept this configuration via the Cloud field of azcore.ClientOptions. For
16−example, configuring a credential and ARM client for Azure Government:
17−
18− opts := azcore.ClientOptions{Cloud: cloud.AzureGovernment}
19− cred, err := azidentity.NewDefaultAzureCredential(
20− &azidentity.DefaultAzureCredentialOptions{ClientOptions: opts},
21− )
22− handle(err)
23−
24− client, err := armsubscription.NewClient(
25− cred, &arm.ClientOptions{ClientOptions: opts},
26− )
27− handle(err)
28−
29−Applications deployed to a private cloud such as Azure Stack create a Configuration object with
30−appropriate values:
31−
32− c := cloud.Configuration{
33− ActiveDirectoryAuthorityHost: "https://...",
34− Services: map[cloud.ServiceName]cloud.ServiceConfiguration{
35− cloud.ResourceManager: {
36− Audience: "...",
37− Endpoint: "https://...",
38− },
39− },
40− }
41− opts := azcore.ClientOptions{Cloud: c}
42−
43− cred, err := azidentity.NewDefaultAzureCredential(
44− &azidentity.DefaultAzureCredentialOptions{ClientOptions: opts},
45− )
46− handle(err)
47−
48− client, err := armsubscription.NewClient(
49− cred, &arm.ClientOptions{ClientOptions: opts},
50− )
51− handle(err)
52−*/
53−package cloud
vendor/github.com/Azure/azure-sdk-for-go/sdk/azcore/core.godeleted−173
@@ -1,173 +0,0 @@
1−//go:build go1.18
2−// +build go1.18
3−
4−// Copyright (c) Microsoft Corporation. All rights reserved.
5−// Licensed under the MIT License.
6−
7−package azcore
8−
9−import (
10− "reflect"
11− "sync"
12−
13− "github.com/Azure/azure-sdk-for-go/sdk/azcore/internal/exported"
14− "github.com/Azure/azure-sdk-for-go/sdk/azcore/internal/shared"
15− "github.com/Azure/azure-sdk-for-go/sdk/azcore/policy"
16− "github.com/Azure/azure-sdk-for-go/sdk/azcore/runtime"
17− "github.com/Azure/azure-sdk-for-go/sdk/azcore/tracing"
18−)
19−
20−// AccessToken represents an Azure service bearer access token with expiry information.
21−type AccessToken = exported.AccessToken
22−
23−// TokenCredential represents a credential capable of providing an OAuth token.
24−type TokenCredential = exported.TokenCredential
25−
26−// KeyCredential contains an authentication key used to authenticate to an Azure service.
27−type KeyCredential = exported.KeyCredential
28−
29−// NewKeyCredential creates a new instance of [KeyCredential] with the specified values.
30−// - key is the authentication key
31−func NewKeyCredential(key string) *KeyCredential {
32− return exported.NewKeyCredential(key)
33−}
34−
35−// SASCredential contains a shared access signature used to authenticate to an Azure service.
36−type SASCredential = exported.SASCredential
37−
38−// NewSASCredential creates a new instance of [SASCredential] with the specified values.
39−// - sas is the shared access signature
40−func NewSASCredential(sas string) *SASCredential {
41− return exported.NewSASCredential(sas)
42−}
43−
44−// holds sentinel values used to send nulls
45−var nullables map[reflect.Type]any = map[reflect.Type]any{}
46−var nullablesMu sync.RWMutex
47−
48−// NullValue is used to send an explicit 'null' within a request.
49−// This is typically used in JSON-MERGE-PATCH operations to delete a value.
50−func NullValue[T any]() T {
51− t := shared.TypeOfT[T]()
52−
53− nullablesMu.RLock()
54− v, found := nullables[t]
55− nullablesMu.RUnlock()
56−
57− if found {
58− // return the sentinel object
59− return v.(T)
60− }
61−
62− // promote to exclusive lock and check again (double-checked locking pattern)
63− nullablesMu.Lock()
64− defer nullablesMu.Unlock()
65− v, found = nullables[t]
66−
67− if !found {
68− var o reflect.Value
69− if k := t.Kind(); k == reflect.Map {
70− o = reflect.MakeMap(t)
71− } else if k == reflect.Slice {
72− // empty slices appear to all point to the same data block
73− // which causes comparisons to become ambiguous. so we create
74− // a slice with len/cap of one which ensures a unique address.
75− o = reflect.MakeSlice(t, 1, 1)
76− } else {
77− o = reflect.New(t.Elem())
78− }
79− v = o.Interface()
80− nullables[t] = v
81− }
82− // return the sentinel object
83− return v.(T)
84−}
85−
86−// IsNullValue returns true if the field contains a null sentinel value.
87−// This is used by custom marshallers to properly encode a null value.
88−func IsNullValue[T any](v T) bool {
89− // see if our map has a sentinel object for this *T
90− t := reflect.TypeOf(v)
91− nullablesMu.RLock()
92− defer nullablesMu.RUnlock()
93−
94− if o, found := nullables[t]; found {
95− o1 := reflect.ValueOf(o)
96− v1 := reflect.ValueOf(v)
97− // we found it; return true if v points to the sentinel object.
98− // NOTE: maps and slices can only be compared to nil, else you get
99− // a runtime panic. so we compare addresses instead.
100− return o1.Pointer() == v1.Pointer()
101− }
102− // no sentinel object for this *t
103− return false
104−}
105−
106−// ClientOptions contains optional settings for a client's pipeline.
107−// Instances can be shared across calls to SDK client constructors when uniform configuration is desired.
108−// Zero-value fields will have their specified default values applied during use.
109−type ClientOptions = policy.ClientOptions
110−
111−// Client is a basic HTTP client. It consists of a pipeline and tracing provider.
112−type Client struct {
113− pl runtime.Pipeline
114− tr tracing.Tracer
115−
116− // cached on the client to support shallow copying with new values
117− tp tracing.Provider
118− modVer string
119− namespace string
120−}
121−
122−// NewClient creates a new Client instance with the provided values.
123−// - moduleName - the fully qualified name of the module where the client is defined; used by the telemetry policy and tracing provider.
124−// - moduleVersion - the semantic version of the module; used by the telemetry policy and tracing provider.
125−// - plOpts - pipeline configuration options; can be the zero-value
126−// - options - optional client configurations; pass nil to accept the default values
127−func NewClient(moduleName, moduleVersion string, plOpts runtime.PipelineOptions, options *ClientOptions) (*Client, error) {
128− if options == nil {
129− options = &ClientOptions{}
130− }
131−
132− if !options.Telemetry.Disabled {
133− if err := shared.ValidateModVer(moduleVersion); err != nil {
134− return nil, err
135− }
136− }
137−
138− pl := runtime.NewPipeline(moduleName, moduleVersion, plOpts, options)
139−
140− tr := options.TracingProvider.NewTracer(moduleName, moduleVersion)
141− if tr.Enabled() && plOpts.Tracing.Namespace != "" {
142− tr.SetAttributes(tracing.Attribute{Key: shared.TracingNamespaceAttrName, Value: plOpts.Tracing.Namespace})
143− }
144−
145− return &Client{
146− pl: pl,
147− tr: tr,
148− tp: options.TracingProvider,
149− modVer: moduleVersion,
150− namespace: plOpts.Tracing.Namespace,
151− }, nil
152−}
153−
154−// Pipeline returns the pipeline for this client.
155−func (c *Client) Pipeline() runtime.Pipeline {
156− return c.pl
157−}
158−
159−// Tracer returns the tracer for this client.
160−func (c *Client) Tracer() tracing.Tracer {
161− return c.tr
162−}
163−
164−// WithClientName returns a shallow copy of the Client with its tracing client name changed to clientName.
165−// Note that the values for module name and version will be preserved from the source Client.
166−// - clientName - the fully qualified name of the client ("package.Client"); this is used by the tracing provider when creating spans
167−func (c *Client) WithClientName(clientName string) *Client {
168− tr := c.tp.NewTracer(clientName, c.modVer)
169− if tr.Enabled() && c.namespace != "" {
170− tr.SetAttributes(tracing.Attribute{Key: shared.TracingNamespaceAttrName, Value: c.namespace})
171− }
172− return &Client{pl: c.pl, tr: tr, tp: c.tp, modVer: c.modVer, namespace: c.namespace}
173−}
vendor/github.com/Azure/azure-sdk-for-go/sdk/azcore/doc.godeleted−264
@@ -1,264 +0,0 @@
1−//go:build go1.18
2−// +build go1.18
3−
4−// Copyright 2017 Microsoft Corporation. All rights reserved.
5−// Use of this source code is governed by an MIT
6−// license that can be found in the LICENSE file.
7−
8−/*
9−Package azcore implements an HTTP request/response middleware pipeline used by Azure SDK clients.
10−
11−The middleware consists of three components.
12−
13− - One or more Policy instances.
14− - A Transporter instance.
15− - A Pipeline instance that combines the Policy and Transporter instances.
16−
17−# Implementing the Policy Interface
18−
19−A Policy can be implemented in two ways; as a first-class function for a stateless Policy, or as
20−a method on a type for a stateful Policy. Note that HTTP requests made via the same pipeline share
21−the same Policy instances, so if a Policy mutates its state it MUST be properly synchronized to
22−avoid race conditions.
23−
24−A Policy's Do method is called when an HTTP request wants to be sent over the network. The Do method can
25−perform any operation(s) it desires. For example, it can log the outgoing request, mutate the URL, headers,
26−and/or query parameters, inject a failure, etc. Once the Policy has successfully completed its request
27−work, it must call the Next() method on the *policy.Request instance in order to pass the request to the
28−next Policy in the chain.
29−
30−When an HTTP response comes back, the Policy then gets a chance to process the response/error. The Policy instance
31−can log the response, retry the operation if it failed due to a transient error or timeout, unmarshal the response
32−body, etc. Once the Policy has successfully completed its response work, it must return the *http.Response
33−and error instances to its caller.
34−
35−Template for implementing a stateless Policy:
36−
37− type policyFunc func(*policy.Request) (*http.Response, error)
38−
39− // Do implements the Policy interface on policyFunc.
40− func (pf policyFunc) Do(req *policy.Request) (*http.Response, error) {
41− return pf(req)
42− }
43−
44− func NewMyStatelessPolicy() policy.Policy {
45− return policyFunc(func(req *policy.Request) (*http.Response, error) {
46− // TODO: mutate/process Request here
47−
48− // forward Request to next Policy & get Response/error
49− resp, err := req.Next()
50−
51− // TODO: mutate/process Response/error here
52−
53− // return Response/error to previous Policy
54− return resp, err
55− })
56− }
57−
58−Template for implementing a stateful Policy:
59−
60− type MyStatefulPolicy struct {
61− // TODO: add configuration/setting fields here
62− }
63−
64− // TODO: add initialization args to NewMyStatefulPolicy()
65− func NewMyStatefulPolicy() policy.Policy {
66− return &MyStatefulPolicy{
67− // TODO: initialize configuration/setting fields here
68− }
69− }
70−
71− func (p *MyStatefulPolicy) Do(req *policy.Request) (resp *http.Response, err error) {
72− // TODO: mutate/process Request here
73−
74− // forward Request to next Policy & get Response/error
75− resp, err := req.Next()
76−
77− // TODO: mutate/process Response/error here
78−
79− // return Response/error to previous Policy
80− return resp, err
81− }
82−
83−# Implementing the Transporter Interface
84−
85−The Transporter interface is responsible for sending the HTTP request and returning the corresponding
86−HTTP response or error. The Transporter is invoked by the last Policy in the chain. The default Transporter
87−implementation uses a shared http.Client from the standard library.
88−
89−The same stateful/stateless rules for Policy implementations apply to Transporter implementations.
90−
91−# Using Policy and Transporter Instances Via a Pipeline
92−
93−To use the Policy and Transporter instances, an application passes them to the runtime.NewPipeline function.
94−
95− func NewPipeline(transport Transporter, policies ...Policy) Pipeline
96−
97−The specified Policy instances form a chain and are invoked in the order provided to NewPipeline
98−followed by the Transporter.
99−
100−Once the Pipeline has been created, create a runtime.Request instance and pass it to Pipeline's Do method.
101−
102− func NewRequest(ctx context.Context, httpMethod string, endpoint string) (*Request, error)
103−
104− func (p Pipeline) Do(req *Request) (*http.Request, error)
105−
106−The Pipeline.Do method sends the specified Request through the chain of Policy and Transporter
107−instances. The response/error is then sent through the same chain of Policy instances in reverse
108−order. For example, assuming there are Policy types PolicyA, PolicyB, and PolicyC along with
109−TransportA.
110−
111− pipeline := NewPipeline(TransportA, PolicyA, PolicyB, PolicyC)
112−
113−The flow of Request and Response looks like the following:
114−
115− policy.Request -> PolicyA -> PolicyB -> PolicyC -> TransportA -----+
116− |
117− HTTP(S) endpoint
118− |
119− caller <--------- PolicyA <- PolicyB <- PolicyC <- http.Response-+
120−
121−# Creating a Request Instance
122−
123−The Request instance passed to Pipeline's Do method is a wrapper around an *http.Request. It also
124−contains some internal state and provides various convenience methods. You create a Request instance
125−by calling the runtime.NewRequest function:
126−
127− func NewRequest(ctx context.Context, httpMethod string, endpoint string) (*Request, error)
128−
129−If the Request should contain a body, call the SetBody method.
130−
131− func (req *Request) SetBody(body ReadSeekCloser, contentType string) error
132−
133−A seekable stream is required so that upon retry, the retry Policy instance can seek the stream
134−back to the beginning before retrying the network request and re-uploading the body.
135−
136−# Sending an Explicit Null
137−
138−Operations like JSON-MERGE-PATCH send a JSON null to indicate a value should be deleted.
139−
140− {
141− "delete-me": null
142− }
143−
144−This requirement conflicts with the SDK's default marshalling that specifies "omitempty" as
145−a means to resolve the ambiguity between a field to be excluded and its zero-value.
146−
147− type Widget struct {
148− Name *string `json:",omitempty"`
149− Count *int `json:",omitempty"`
150− }
151−
152−In the above example, Name and Count are defined as pointer-to-type to disambiguate between
153−a missing value (nil) and a zero-value (0) which might have semantic differences.
154−
155−In a PATCH operation, any fields left as nil are to have their values preserved. When updating
156−a Widget's count, one simply specifies the new value for Count, leaving Name nil.
157−
158−To fulfill the requirement for sending a JSON null, the NullValue() function can be used.
159−
160− w := Widget{
161− Count: azcore.NullValue[*int](),
162− }
163−
164−This sends an explict "null" for Count, indicating that any current value for Count should be deleted.
165−
166−# Processing the Response
167−
168−When the HTTP response is received, the *http.Response is returned directly. Each Policy instance
169−can inspect/mutate the *http.Response.
170−
171−# Built-in Logging
172−
173−To enable logging, set environment variable AZURE_SDK_GO_LOGGING to "all" before executing your program.
174−
175−By default the logger writes to stderr. This can be customized by calling log.SetListener, providing
176−a callback that writes to the desired location. Any custom logging implementation MUST provide its
177−own synchronization to handle concurrent invocations.
178−
179−See the docs for the log package for further details.
180−
181−# Pageable Operations
182−
183−Pageable operations return potentially large data sets spread over multiple GET requests. The result of
184−each GET is a "page" of data consisting of a slice of items.
185−
186−Pageable operations can be identified by their New*Pager naming convention and return type of *runtime.Pager[T].
187−
188− func (c *WidgetClient) NewListWidgetsPager(o *Options) *runtime.Pager[PageResponse]
189−
190−The call to WidgetClient.NewListWidgetsPager() returns an instance of *runtime.Pager[T] for fetching pages
191−and determining if there are more pages to fetch. No IO calls are made until the NextPage() method is invoked.
192−
193− pager := widgetClient.NewListWidgetsPager(nil)
194− for pager.More() {
195− page, err := pager.NextPage(context.TODO())
196− // handle err
197− for _, widget := range page.Values {
198− // process widget
199− }
200− }
201−
202−# Long-Running Operations
203−
204−Long-running operations (LROs) are operations consisting of an initial request to start the operation followed
205−by polling to determine when the operation has reached a terminal state. An LRO's terminal state is one
206−of the following values.
207−
208− - Succeeded - the LRO completed successfully
209− - Failed - the LRO failed to complete
210− - Canceled - the LRO was canceled
211−
212−LROs can be identified by their Begin* prefix and their return type of *runtime.Poller[T].
213−
214− func (c *WidgetClient) BeginCreateOrUpdate(ctx context.Context, w Widget, o *Options) (*runtime.Poller[Response], error)
215−
216−When a call to WidgetClient.BeginCreateOrUpdate() returns a nil error, it means that the LRO has started.
217−It does _not_ mean that the widget has been created or updated (or failed to be created/updated).
218−
219−The *runtime.Poller[T] provides APIs for determining the state of the LRO. To wait for the LRO to complete,
220−call the PollUntilDone() method.
221−
222− poller, err := widgetClient.BeginCreateOrUpdate(context.TODO(), Widget{}, nil)
223− // handle err
224− result, err := poller.PollUntilDone(context.TODO(), nil)
225− // handle err
226− // use result
227−
228−The call to PollUntilDone() will block the current goroutine until the LRO has reached a terminal state or the
229−context is canceled/timed out.
230−
231−Note that LROs can take anywhere from several seconds to several minutes. The duration is operation-dependent. Due to
232−this variant behavior, pollers do _not_ have a preconfigured time-out. Use a context with the appropriate cancellation
233−mechanism as required.
234−
235−# Resume Tokens
236−
237−Pollers provide the ability to serialize their state into a "resume token" which can be used by another process to
238−recreate the poller. This is achieved via the runtime.Poller[T].ResumeToken() method.
239−
240− token, err := poller.ResumeToken()
241− // handle error
242−
243−Note that a token can only be obtained for a poller that's in a non-terminal state. Also note that any subsequent calls
244−to poller.Poll() might change the poller's state. In this case, a new token should be created.
245−
246−After the token has been obtained, it can be used to recreate an instance of the originating poller.
247−
248− poller, err := widgetClient.BeginCreateOrUpdate(nil, Widget{}, &Options{
249− ResumeToken: token,
250− })
251−
252−When resuming a poller, no IO is performed, and zero-value arguments can be used for everything but the Options.ResumeToken.
253−
254−Resume tokens are unique per service client and operation. Attempting to resume a poller for LRO BeginB() with a token from LRO
255−BeginA() will result in an error.
256−
257−# Fakes
258−
259−The fake package contains types used for constructing in-memory fake servers used in unit tests.
260−This allows writing tests to cover various success/error conditions without the need for connecting to a live service.
261−
262−Please see https://github.com/Azure/azure-sdk-for-go/tree/main/sdk/samples/fakes for details and examples on how to use fakes.
263−*/
264−package azcore
vendor/github.com/Azure/azure-sdk-for-go/sdk/azcore/errors.godeleted−17
@@ -1,17 +0,0 @@
1−//go:build go1.18
2−// +build go1.18
3−
4−// Copyright (c) Microsoft Corporation. All rights reserved.
5−// Licensed under the MIT License.
6−
7−package azcore
8−
9−import "github.com/Azure/azure-sdk-for-go/sdk/azcore/internal/exported"
10−
11−// ResponseError is returned when a request is made to a service and
12−// the service returns a non-success HTTP status code.
13−// Use errors.As() to access this type in the error chain.
14−//
15−// When marshaling instances, the RawResponse field will be omitted.
16−// However, the contents returned by Error() will be preserved.
17−type ResponseError = exported.ResponseError
vendor/github.com/Azure/azure-sdk-for-go/sdk/azcore/etag.godeleted−57
@@ -1,57 +0,0 @@
1−//go:build go1.18
2−// +build go1.18
3−
4−// Copyright (c) Microsoft Corporation. All rights reserved.
5−// Licensed under the MIT License.
6−
7−package azcore
8−
9−import (
10− "strings"
11−)
12−
13−// ETag is a property used for optimistic concurrency during updates
14−// ETag is a validator based on https://tools.ietf.org/html/rfc7232#section-2.3.2
15−// An ETag can be empty ("").
16−type ETag string
17−
18−// ETagAny is an ETag that represents everything, the value is "*"
19−const ETagAny ETag = "*"
20−
21−// Equals does a strong comparison of two ETags. Equals returns true when both
22−// ETags are not weak and the values of the underlying strings are equal.
23−func (e ETag) Equals(other ETag) bool {
24− return !e.IsWeak() && !other.IsWeak() && e == other
25−}
26−
27−// WeakEquals does a weak comparison of two ETags. Two ETags are equivalent if their opaque-tags match
28−// character-by-character, regardless of either or both being tagged as "weak".
29−func (e ETag) WeakEquals(other ETag) bool {
30− getStart := func(e1 ETag) int {
31− if e1.IsWeak() {
32− return 2
33− }
34− return 0
35− }
36− aStart := getStart(e)
37− bStart := getStart(other)
38−
39− aVal := e[aStart:]
40− bVal := other[bStart:]
41−
42− return aVal == bVal
43−}
44−
45−// IsWeak specifies whether the ETag is strong or weak.
46−func (e ETag) IsWeak() bool {
47− return len(e) >= 4 && strings.HasPrefix(string(e), "W/\"") && strings.HasSuffix(string(e), "\"")
48−}
49−
50−// MatchConditions specifies HTTP options for conditional requests.
51−type MatchConditions struct {
52− // Optionally limit requests to resources that have a matching ETag.
53− IfMatch *ETag
54−
55− // Optionally limit requests to resources that do not match the ETag.
56− IfNoneMatch *ETag
57−}
vendor/github.com/Azure/azure-sdk-for-go/sdk/azcore/internal/exported/exported.godeleted−175
@@ -1,175 +0,0 @@
1−//go:build go1.18
2−// +build go1.18
3−
4−// Copyright (c) Microsoft Corporation. All rights reserved.
5−// Licensed under the MIT License.
6−
7−package exported
8−
9−import (
10− "context"
11− "encoding/base64"
12− "fmt"
13− "io"
14− "net/http"
15− "sync/atomic"
16− "time"
17−)
18−
19−type nopCloser struct {
20− io.ReadSeeker
21−}
22−
23−func (n nopCloser) Close() error {
24− return nil
25−}
26−
27−// NopCloser returns a ReadSeekCloser with a no-op close method wrapping the provided io.ReadSeeker.
28−// Exported as streaming.NopCloser().
29−func NopCloser(rs io.ReadSeeker) io.ReadSeekCloser {
30− return nopCloser{rs}
31−}
32−
33−// HasStatusCode returns true if the Response's status code is one of the specified values.
34−// Exported as runtime.HasStatusCode().
35−func HasStatusCode(resp *http.Response, statusCodes ...int) bool {
36− if resp == nil {
37− return false
38− }
39− for _, sc := range statusCodes {
40− if resp.StatusCode == sc {
41− return true
42− }
43− }
44− return false
45−}
46−
47−// AccessToken represents an Azure service bearer access token with expiry information.
48−// Exported as azcore.AccessToken.
49−type AccessToken struct {
50− Token string
51− ExpiresOn time.Time
52−}
53−
54−// TokenRequestOptions contain specific parameter that may be used by credentials types when attempting to get a token.
55−// Exported as policy.TokenRequestOptions.
56−type TokenRequestOptions struct {
57− // Claims are any additional claims required for the token to satisfy a conditional access policy, such as a
58− // service may return in a claims challenge following an authorization failure. If a service returned the
59− // claims value base64 encoded, it must be decoded before setting this field.
60− Claims string
61−
62− // EnableCAE indicates whether to enable Continuous Access Evaluation (CAE) for the requested token. When true,
63− // azidentity credentials request CAE tokens for resource APIs supporting CAE. Clients are responsible for
64− // handling CAE challenges. If a client that doesn't handle CAE challenges receives a CAE token, it may end up
65− // in a loop retrying an API call with a token that has been revoked due to CAE.
66− EnableCAE bool
67−
68− // Scopes contains the list of permission scopes required for the token.
69− Scopes []string
70−
71− // TenantID identifies the tenant from which to request the token. azidentity credentials authenticate in
72− // their configured default tenants when this field isn't set.
73− TenantID string
74−}
75−
76−// TokenCredential represents a credential capable of providing an OAuth token.
77−// Exported as azcore.TokenCredential.
78−type TokenCredential interface {
79− // GetToken requests an access token for the specified set of scopes.
80− GetToken(ctx context.Context, options TokenRequestOptions) (AccessToken, error)
81−}
82−
83−// DecodeByteArray will base-64 decode the provided string into v.
84−// Exported as runtime.DecodeByteArray()
85−func DecodeByteArray(s string, v *[]byte, format Base64Encoding) error {
86− if len(s) == 0 {
87− return nil
88− }
89− payload := string(s)
90− if payload[0] == '"' {
91− // remove surrounding quotes
92− payload = payload[1 : len(payload)-1]
93− }
94− switch format {
95− case Base64StdFormat:
96− decoded, err := base64.StdEncoding.DecodeString(payload)
97− if err == nil {
98− *v = decoded
99− return nil
100− }
101− return err
102− case Base64URLFormat:
103− // use raw encoding as URL format should not contain any '=' characters
104− decoded, err := base64.RawURLEncoding.DecodeString(payload)
105− if err == nil {
106− *v = decoded
107− return nil
108− }
109− return err
110− default:
111− return fmt.Errorf("unrecognized byte array format: %d", format)
112− }
113−}
114−
115−// KeyCredential contains an authentication key used to authenticate to an Azure service.
116−// Exported as azcore.KeyCredential.
117−type KeyCredential struct {
118− cred *keyCredential
119−}
120−
121−// NewKeyCredential creates a new instance of [KeyCredential] with the specified values.
122−// - key is the authentication key
123−func NewKeyCredential(key string) *KeyCredential {
124− return &KeyCredential{cred: newKeyCredential(key)}
125−}
126−
127−// Update replaces the existing key with the specified value.
128−func (k *KeyCredential) Update(key string) {
129− k.cred.Update(key)
130−}
131−
132−// SASCredential contains a shared access signature used to authenticate to an Azure service.
133−// Exported as azcore.SASCredential.
134−type SASCredential struct {
135− cred *keyCredential
136−}
137−
138−// NewSASCredential creates a new instance of [SASCredential] with the specified values.
139−// - sas is the shared access signature
140−func NewSASCredential(sas string) *SASCredential {
141− return &SASCredential{cred: newKeyCredential(sas)}
142−}
143−
144−// Update replaces the existing shared access signature with the specified value.
145−func (k *SASCredential) Update(sas string) {
146− k.cred.Update(sas)
147−}
148−
149−// KeyCredentialGet returns the key for cred.
150−func KeyCredentialGet(cred *KeyCredential) string {
151− return cred.cred.Get()
152−}
153−
154−// SASCredentialGet returns the shared access sig for cred.
155−func SASCredentialGet(cred *SASCredential) string {
156− return cred.cred.Get()
157−}
158−
159−type keyCredential struct {
160− key atomic.Value // string
161−}
162−
163−func newKeyCredential(key string) *keyCredential {
164− keyCred := keyCredential{}
165− keyCred.key.Store(key)
166− return &keyCred
167−}
168−
169−func (k *keyCredential) Get() string {
170− return k.key.Load().(string)
171−}
172−
173−func (k *keyCredential) Update(key string) {
174− k.key.Store(key)
175−}
vendor/github.com/Azure/azure-sdk-for-go/sdk/azcore/internal/exported/pipeline.godeleted−77
@@ -1,77 +0,0 @@
1−//go:build go1.18
2−// +build go1.18
3−
4−// Copyright (c) Microsoft Corporation. All rights reserved.
5−// Licensed under the MIT License.
6−
7−package exported
8−
9−import (
10− "errors"
11− "net/http"
12−)
13−
14−// Policy represents an extensibility point for the Pipeline that can mutate the specified
15−// Request and react to the received Response.
16−// Exported as policy.Policy.
17−type Policy interface {
18− // Do applies the policy to the specified Request. When implementing a Policy, mutate the
19− // request before calling req.Next() to move on to the next policy, and respond to the result
20− // before returning to the caller.
21− Do(req *Request) (*http.Response, error)
22−}
23−
24−// Pipeline represents a primitive for sending HTTP requests and receiving responses.
25−// Its behavior can be extended by specifying policies during construction.
26−// Exported as runtime.Pipeline.
27−type Pipeline struct {
28− policies []Policy
29−}
30−
31−// Transporter represents an HTTP pipeline transport used to send HTTP requests and receive responses.
32−// Exported as policy.Transporter.
33−type Transporter interface {
34− // Do sends the HTTP request and returns the HTTP response or error.
35− Do(req *http.Request) (*http.Response, error)
36−}
37−
38−// used to adapt a TransportPolicy to a Policy
39−type transportPolicy struct {
40− trans Transporter
41−}
42−
43−func (tp transportPolicy) Do(req *Request) (*http.Response, error) {
44− if tp.trans == nil {
45− return nil, errors.New("missing transporter")
46− }
47− resp, err := tp.trans.Do(req.Raw())
48− if err != nil {
49− return nil, err
50− } else if resp == nil {
51− // there was no response and no error (rare but can happen)
52− // this ensures the retry policy will retry the request
53− return nil, errors.New("received nil response")
54− }
55− return resp, nil
56−}
57−
58−// NewPipeline creates a new Pipeline object from the specified Policies.
59−// Not directly exported, but used as part of runtime.NewPipeline().
60−func NewPipeline(transport Transporter, policies ...Policy) Pipeline {
61− // transport policy must always be the last in the slice
62− policies = append(policies, transportPolicy{trans: transport})
63− return Pipeline{
64− policies: policies,
65− }
66−}
67−
68−// Do is called for each and every HTTP request. It passes the request through all
69−// the Policy objects (which can transform the Request's URL/query parameters/headers)
70−// and ultimately sends the transformed HTTP request over the network.
71−func (p Pipeline) Do(req *Request) (*http.Response, error) {
72− if req == nil {
73− return nil, errors.New("request cannot be nil")
74− }
75− req.policies = p.policies
76− return req.Next()
77−}
vendor/github.com/Azure/azure-sdk-for-go/sdk/azcore/internal/exported/request.godeleted−260
@@ -1,260 +0,0 @@
1−//go:build go1.18
2−// +build go1.18
3−
4−// Copyright (c) Microsoft Corporation. All rights reserved.
5−// Licensed under the MIT License.
6−
7−package exported
8−
9−import (
10− "bytes"
11− "context"
12− "encoding/base64"
13− "errors"
14− "fmt"
15− "io"
16− "net/http"
17− "reflect"
18− "strconv"
19−
20− "github.com/Azure/azure-sdk-for-go/sdk/azcore/internal/shared"
21−)
22−
23−// Base64Encoding is usesd to specify which base-64 encoder/decoder to use when
24−// encoding/decoding a slice of bytes to/from a string.
25−// Exported as runtime.Base64Encoding
26−type Base64Encoding int
27−
28−const (
29− // Base64StdFormat uses base64.StdEncoding for encoding and decoding payloads.
30− Base64StdFormat Base64Encoding = 0
31−
32− // Base64URLFormat uses base64.RawURLEncoding for encoding and decoding payloads.
33− Base64URLFormat Base64Encoding = 1
34−)
35−
36−// EncodeByteArray will base-64 encode the byte slice v.
37−// Exported as runtime.EncodeByteArray()
38−func EncodeByteArray(v []byte, format Base64Encoding) string {
39− if format == Base64URLFormat {
40− return base64.RawURLEncoding.EncodeToString(v)
41− }
42− return base64.StdEncoding.EncodeToString(v)
43−}
44−
45−// Request is an abstraction over the creation of an HTTP request as it passes through the pipeline.
46−// Don't use this type directly, use NewRequest() instead.
47−// Exported as policy.Request.
48−type Request struct {
49− req *http.Request
50− body io.ReadSeekCloser
51− policies []Policy
52− values opValues
53−}
54−
55−type opValues map[reflect.Type]any
56−
57−// Set adds/changes a value
58−func (ov opValues) set(value any) {
59− ov[reflect.TypeOf(value)] = value
60−}
61−
62−// Get looks for a value set by SetValue first
63−func (ov opValues) get(value any) bool {
64− v, ok := ov[reflect.ValueOf(value).Elem().Type()]
65− if ok {
66− reflect.ValueOf(value).Elem().Set(reflect.ValueOf(v))
67− }
68− return ok
69−}
70−
71−// NewRequestFromRequest creates a new policy.Request with an existing *http.Request
72−// Exported as runtime.NewRequestFromRequest().
73−func NewRequestFromRequest(req *http.Request) (*Request, error) {
74− policyReq := &Request{req: req}
75−
76− if req.Body != nil {
77− // we can avoid a body copy here if the underlying stream is already a
78− // ReadSeekCloser.
79− readSeekCloser, isReadSeekCloser := req.Body.(io.ReadSeekCloser)
80−
81− if !isReadSeekCloser {
82− // since this is an already populated http.Request we want to copy
83− // over its body, if it has one.
84− bodyBytes, err := io.ReadAll(req.Body)
85−
86− if err != nil {
87− return nil, err
88− }
89−
90− if err := req.Body.Close(); err != nil {
91− return nil, err
92− }
93−
94− readSeekCloser = NopCloser(bytes.NewReader(bodyBytes))
95− }
96−
97− // SetBody also takes care of updating the http.Request's body
98− // as well, so they should stay in-sync from this point.
99− if err := policyReq.SetBody(readSeekCloser, req.Header.Get("Content-Type")); err != nil {
100− return nil, err
101− }
102− }
103−
104− return policyReq, nil
105−}
106−
107−// NewRequest creates a new Request with the specified input.
108−// Exported as runtime.NewRequest().
109−func NewRequest(ctx context.Context, httpMethod string, endpoint string) (*Request, error) {
110− req, err := http.NewRequestWithContext(ctx, httpMethod, endpoint, nil)
111− if err != nil {
112− return nil, err
113− }
114− if req.URL.Host == "" {
115− return nil, errors.New("no Host in request URL")
116− }
117− if !(req.URL.Scheme == "http" || req.URL.Scheme == "https") {
118− return nil, fmt.Errorf("unsupported protocol scheme %s", req.URL.Scheme)
119− }
120− return &Request{req: req}, nil
121−}
122−
123−// Body returns the original body specified when the Request was created.
124−func (req *Request) Body() io.ReadSeekCloser {
125− return req.body
126−}
127−
128−// Raw returns the underlying HTTP request.
129−func (req *Request) Raw() *http.Request {
130− return req.req
131−}
132−
133−// Next calls the next policy in the pipeline.
134−// If there are no more policies, nil and an error are returned.
135−// This method is intended to be called from pipeline policies.
136−// To send a request through a pipeline call Pipeline.Do().
137−func (req *Request) Next() (*http.Response, error) {
138− if len(req.policies) == 0 {
139− return nil, errors.New("no more policies")
140− }
141− nextPolicy := req.policies[0]
142− nextReq := *req
143− nextReq.policies = nextReq.policies[1:]
144− return nextPolicy.Do(&nextReq)
145−}
146−
147−// SetOperationValue adds/changes a mutable key/value associated with a single operation.
148−func (req *Request) SetOperationValue(value any) {
149− if req.values == nil {
150− req.values = opValues{}
151− }
152− req.values.set(value)
153−}
154−
155−// OperationValue looks for a value set by SetOperationValue().
156−func (req *Request) OperationValue(value any) bool {
157− if req.values == nil {
158− return false
159− }
160− return req.values.get(value)
161−}
162−
163−// SetBody sets the specified ReadSeekCloser as the HTTP request body, and sets Content-Type and Content-Length
164−// accordingly. If the ReadSeekCloser is nil or empty, Content-Length won't be set. If contentType is "",
165−// Content-Type won't be set, and if it was set, will be deleted.
166−// Use streaming.NopCloser to turn an io.ReadSeeker into an io.ReadSeekCloser.
167−func (req *Request) SetBody(body io.ReadSeekCloser, contentType string) error {
168− // clobber the existing Content-Type to preserve behavior
169− return SetBody(req, body, contentType, true)
170−}
171−
172−// RewindBody seeks the request's Body stream back to the beginning so it can be resent when retrying an operation.
173−func (req *Request) RewindBody() error {
174− if req.body != nil {
175− // Reset the stream back to the beginning and restore the body
176− _, err := req.body.Seek(0, io.SeekStart)
177− req.req.Body = req.body
178− return err
179− }
180− return nil
181−}
182−
183−// Close closes the request body.
184−func (req *Request) Close() error {
185− if req.body == nil {
186− return nil
187− }
188− return req.body.Close()
189−}
190−
191−// Clone returns a deep copy of the request with its context changed to ctx.
192−func (req *Request) Clone(ctx context.Context) *Request {
193− r2 := *req
194− r2.req = req.req.Clone(ctx)
195− return &r2
196−}
197−
198−// WithContext returns a shallow copy of the request with its context changed to ctx.
199−func (req *Request) WithContext(ctx context.Context) *Request {
200− r2 := new(Request)
201− *r2 = *req
202− r2.req = r2.req.WithContext(ctx)
203− return r2
204−}
205−
206−// not exported but dependent on Request
207−
208−// PolicyFunc is a type that implements the Policy interface.
209−// Use this type when implementing a stateless policy as a first-class function.
210−type PolicyFunc func(*Request) (*http.Response, error)
211−
212−// Do implements the Policy interface on policyFunc.
213−func (pf PolicyFunc) Do(req *Request) (*http.Response, error) {
214− return pf(req)
215−}
216−
217−// SetBody sets the specified ReadSeekCloser as the HTTP request body, and sets Content-Type and Content-Length accordingly.
218−// - req is the request to modify
219−// - body is the request body; if nil or empty, Content-Length won't be set
220−// - contentType is the value for the Content-Type header; if empty, Content-Type will be deleted
221−// - clobberContentType when true, will overwrite the existing value of Content-Type with contentType
222−func SetBody(req *Request, body io.ReadSeekCloser, contentType string, clobberContentType bool) error {
223− var err error
224− var size int64
225− if body != nil {
226− size, err = body.Seek(0, io.SeekEnd) // Seek to the end to get the stream's size
227− if err != nil {
228− return err
229− }
230− }
231− if size == 0 {
232− // treat an empty stream the same as a nil one: assign req a nil body
233− body = nil
234− // RFC 9110 specifies a client shouldn't set Content-Length on a request containing no content
235− // (Del is a no-op when the header has no value)
236− req.req.Header.Del(shared.HeaderContentLength)
237− } else {
238− _, err = body.Seek(0, io.SeekStart)
239− if err != nil {
240− return err
241− }
242− req.req.Header.Set(shared.HeaderContentLength, strconv.FormatInt(size, 10))
243− req.Raw().GetBody = func() (io.ReadCloser, error) {
244− _, err := body.Seek(0, io.SeekStart) // Seek back to the beginning of the stream
245− return body, err
246− }
247− }
248− // keep a copy of the body argument. this is to handle cases
249− // where req.Body is replaced, e.g. httputil.DumpRequest and friends.
250− req.body = body
251− req.req.Body = body
252− req.req.ContentLength = size
253− if contentType == "" {
254− // Del is a no-op when the header has no value
255− req.req.Header.Del(shared.HeaderContentType)
256− } else if req.req.Header.Get(shared.HeaderContentType) == "" || clobberContentType {
257− req.req.Header.Set(shared.HeaderContentType, contentType)
258− }
259− return nil
260−}
vendor/github.com/Azure/azure-sdk-for-go/sdk/azcore/internal/exported/response_error.godeleted−201
@@ -1,201 +0,0 @@
1−//go:build go1.18
2−// +build go1.18
3−
4−// Copyright (c) Microsoft Corporation. All rights reserved.
5−// Licensed under the MIT License.
6−
7−package exported
8−
9−import (
10− "bytes"
11− "encoding/json"
12− "fmt"
13− "net/http"
14− "regexp"
15−
16− "github.com/Azure/azure-sdk-for-go/sdk/azcore/internal/log"
17− "github.com/Azure/azure-sdk-for-go/sdk/azcore/internal/shared"
18− "github.com/Azure/azure-sdk-for-go/sdk/internal/exported"
19−)
20−
21−// NewResponseError creates a new *ResponseError from the provided HTTP response.
22−// Exported as runtime.NewResponseError().
23−func NewResponseError(resp *http.Response) error {
24− // prefer the error code in the response header
25− if ec := resp.Header.Get(shared.HeaderXMSErrorCode); ec != "" {
26− return NewResponseErrorWithErrorCode(resp, ec)
27− }
28−
29− // if we didn't get x-ms-error-code, check in the response body
30− body, err := exported.Payload(resp, nil)
31− if err != nil {
32− // since we're not returning the ResponseError in this
33− // case we also don't want to write it to the log.
34− return err
35− }
36−
37− var errorCode string
38− if len(body) > 0 {
39− if fromJSON := extractErrorCodeJSON(body); fromJSON != "" {
40− errorCode = fromJSON
41− } else if fromXML := extractErrorCodeXML(body); fromXML != "" {
42− errorCode = fromXML
43− }
44− }
45−
46− return NewResponseErrorWithErrorCode(resp, errorCode)
47−}
48−
49−// NewResponseErrorWithErrorCode creates an *azcore.ResponseError from the provided HTTP response and errorCode.
50−// Exported as runtime.NewResponseErrorWithErrorCode().
51−func NewResponseErrorWithErrorCode(resp *http.Response, errorCode string) error {
52− respErr := &ResponseError{
53− ErrorCode: errorCode,
54− StatusCode: resp.StatusCode,
55− RawResponse: resp,
56− }
57− log.Write(log.EventResponseError, respErr.Error())
58− return respErr
59−}
60−
61−func extractErrorCodeJSON(body []byte) string {
62− var rawObj map[string]any
63− if err := json.Unmarshal(body, &rawObj); err != nil {
64− // not a JSON object
65− return ""
66− }
67−
68− // check if this is a wrapped error, i.e. { "error": { ... } }
69− // if so then unwrap it
70− if wrapped, ok := rawObj["error"]; ok {
71− unwrapped, ok := wrapped.(map[string]any)
72− if !ok {
73− return ""
74− }
75− rawObj = unwrapped
76− } else if wrapped, ok := rawObj["odata.error"]; ok {
77− // check if this a wrapped odata error, i.e. { "odata.error": { ... } }
78− unwrapped, ok := wrapped.(map[string]any)
79− if !ok {
80− return ""
81− }
82− rawObj = unwrapped
83− }
84−
85− // now check for the error code
86− code, ok := rawObj["code"]
87− if !ok {
88− return ""
89− }
90− codeStr, ok := code.(string)
91− if !ok {
92− return ""
93− }
94− return codeStr
95−}
96−
97−func extractErrorCodeXML(body []byte) string {
98− // regular expression is much easier than dealing with the XML parser
99− rx := regexp.MustCompile(`<(?:\w+:)?[c|C]ode>\s*(\w+)\s*<\/(?:\w+:)?[c|C]ode>`)
100− res := rx.FindStringSubmatch(string(body))
101− if len(res) != 2 {
102− return ""
103− }
104− // first submatch is the entire thing, second one is the captured error code
105− return res[1]
106−}
107−
108−// ResponseError is returned when a request is made to a service and
109−// the service returns a non-success HTTP status code.
110−// Use errors.As() to access this type in the error chain.
111−// Exported as azcore.ResponseError.
112−type ResponseError struct {
113− // ErrorCode is the error code returned by the resource provider if available.
114− ErrorCode string
115−
116− // StatusCode is the HTTP status code as defined in https://pkg.go.dev/net/http#pkg-constants.
117− StatusCode int
118−
119− // RawResponse is the underlying HTTP response.
120− RawResponse *http.Response `json:"-"`
121−
122− errMsg string
123−}
124−
125−// Error implements the error interface for type ResponseError.
126−// Note that the message contents are not contractual and can change over time.
127−func (e *ResponseError) Error() string {
128− if e.errMsg != "" {
129− return e.errMsg
130− }
131−
132− const separator = "--------------------------------------------------------------------------------"
133− // write the request method and URL with response status code
134− msg := &bytes.Buffer{}
135− if e.RawResponse != nil {
136− if e.RawResponse.Request != nil {
137− fmt.Fprintf(msg, "%s %s://%s%s\n", e.RawResponse.Request.Method, e.RawResponse.Request.URL.Scheme, e.RawResponse.Request.URL.Host, e.RawResponse.Request.URL.Path)
138− } else {
139− fmt.Fprintln(msg, "Request information not available")
140− }
141− fmt.Fprintln(msg, separator)
142− fmt.Fprintf(msg, "RESPONSE %d: %s\n", e.RawResponse.StatusCode, e.RawResponse.Status)
143− } else {
144− fmt.Fprintln(msg, "Missing RawResponse")
145− fmt.Fprintln(msg, separator)
146− }
147− if e.ErrorCode != "" {
148− fmt.Fprintf(msg, "ERROR CODE: %s\n", e.ErrorCode)
149− } else {
150− fmt.Fprintln(msg, "ERROR CODE UNAVAILABLE")
151− }
152− if e.RawResponse != nil {
153− fmt.Fprintln(msg, separator)
154− body, err := exported.Payload(e.RawResponse, nil)
155− if err != nil {
156− // this really shouldn't fail at this point as the response
157− // body is already cached (it was read in NewResponseError)
158− fmt.Fprintf(msg, "Error reading response body: %v", err)
159− } else if len(body) > 0 {
160− if err := json.Indent(msg, body, "", " "); err != nil {
161− // failed to pretty-print so just dump it verbatim
162− fmt.Fprint(msg, string(body))
163− }
164− // the standard library doesn't have a pretty-printer for XML
165− fmt.Fprintln(msg)
166− } else {
167− fmt.Fprintln(msg, "Response contained no body")
168− }
169− }
170− fmt.Fprintln(msg, separator)
171−
172− e.errMsg = msg.String()
173− return e.errMsg
174−}
175−
176−// internal type used for marshaling/unmarshaling
177−type responseError struct {
178− ErrorCode string `json:"errorCode"`
179− StatusCode int `json:"statusCode"`
180− ErrorMessage string `json:"errorMessage"`
181−}
182−
183−func (e ResponseError) MarshalJSON() ([]byte, error) {
184− return json.Marshal(responseError{
185− ErrorCode: e.ErrorCode,
186− StatusCode: e.StatusCode,
187− ErrorMessage: e.Error(),
188− })
189−}
190−
191−func (e *ResponseError) UnmarshalJSON(data []byte) error {
192− re := responseError{}
193− if err := json.Unmarshal(data, &re); err != nil {
194− return err
195− }
196−
197− e.ErrorCode = re.ErrorCode
198− e.StatusCode = re.StatusCode
199− e.errMsg = re.ErrorMessage
200− return nil
201−}
vendor/github.com/Azure/azure-sdk-for-go/sdk/azcore/internal/log/log.godeleted−50
@@ -1,50 +0,0 @@
1−//go:build go1.18
2−// +build go1.18
3−
4−// Copyright (c) Microsoft Corporation. All rights reserved.
5−// Licensed under the MIT License.
6−
7−// This is an internal helper package to combine the complete logging APIs.
8−package log
9−
10−import (
11− azlog "github.com/Azure/azure-sdk-for-go/sdk/azcore/log"
12− "github.com/Azure/azure-sdk-for-go/sdk/internal/log"
13−)
14−
15−type Event = log.Event
16−
17−const (
18− EventRequest = azlog.EventRequest
19− EventResponse = azlog.EventResponse
20− EventResponseError = azlog.EventResponseError
21− EventRetryPolicy = azlog.EventRetryPolicy
22− EventLRO = azlog.EventLRO
23−)
24−
25−// Write invokes the underlying listener with the specified event and message.
26−// If the event shouldn't be logged or there is no listener then Write does nothing.
27−func Write(cls log.Event, msg string) {
28− log.Write(cls, msg)
29−}
30−
31−// Writef invokes the underlying listener with the specified event and formatted message.
32−// If the event shouldn't be logged or there is no listener then Writef does nothing.
33−func Writef(cls log.Event, format string, a ...any) {
34− log.Writef(cls, format, a...)
35−}
36−
37−// SetListener will set the Logger to write to the specified listener.
38−func SetListener(lst func(Event, string)) {
39− log.SetListener(lst)
40−}
41−
42−// Should returns true if the specified log event should be written to the log.
43−// By default all log events will be logged. Call SetEvents() to limit
44−// the log events for logging.
45−// If no listener has been set this will return false.
46−// Calling this method is useful when the message to log is computationally expensive
47−// and you want to avoid the overhead if its log event is not enabled.
48−func Should(cls log.Event) bool {
49− return log.Should(cls)
50−}
vendor/github.com/Azure/azure-sdk-for-go/sdk/azcore/internal/pollers/async/async.godeleted−159
@@ -1,159 +0,0 @@
1−//go:build go1.18
2−// +build go1.18
3−
4−// Copyright (c) Microsoft Corporation. All rights reserved.
5−// Licensed under the MIT License.
6−
7−package async
8−
9−import (
10− "context"
11− "errors"
12− "fmt"
13− "net/http"
14−
15− "github.com/Azure/azure-sdk-for-go/sdk/azcore/internal/exported"
16− "github.com/Azure/azure-sdk-for-go/sdk/azcore/internal/log"
17− "github.com/Azure/azure-sdk-for-go/sdk/azcore/internal/pollers"
18− "github.com/Azure/azure-sdk-for-go/sdk/azcore/internal/shared"
19− "github.com/Azure/azure-sdk-for-go/sdk/internal/poller"
20−)
21−
22−// see https://github.com/Azure/azure-resource-manager-rpc/blob/master/v1.0/async-api-reference.md
23−
24−// Applicable returns true if the LRO is using Azure-AsyncOperation.
25−func Applicable(resp *http.Response) bool {
26− return resp.Header.Get(shared.HeaderAzureAsync) != ""
27−}
28−
29−// CanResume returns true if the token can rehydrate this poller type.
30−func CanResume(token map[string]any) bool {
31− _, ok := token["asyncURL"]
32− return ok
33−}
34−
35−// Poller is an LRO poller that uses the Azure-AsyncOperation pattern.
36−type Poller[T any] struct {
37− pl exported.Pipeline
38−
39− resp *http.Response
40−
41− // The URL from Azure-AsyncOperation header.
42− AsyncURL string `json:"asyncURL"`
43−
44− // The URL from Location header.
45− LocURL string `json:"locURL"`
46−
47− // The URL from the initial LRO request.
48− OrigURL string `json:"origURL"`
49−
50− // The HTTP method from the initial LRO request.
51− Method string `json:"method"`
52−
53− // The value of final-state-via from swagger, can be the empty string.
54− FinalState pollers.FinalStateVia `json:"finalState"`
55−
56− // The LRO's current state.
57− CurState string `json:"state"`
58−}
59−
60−// New creates a new Poller from the provided initial response and final-state type.
61−// Pass nil for response to create an empty Poller for rehydration.
62−func New[T any](pl exported.Pipeline, resp *http.Response, finalState pollers.FinalStateVia) (*Poller[T], error) {
63− if resp == nil {
64− log.Write(log.EventLRO, "Resuming Azure-AsyncOperation poller.")
65− return &Poller[T]{pl: pl}, nil
66− }
67− log.Write(log.EventLRO, "Using Azure-AsyncOperation poller.")
68− asyncURL := resp.Header.Get(shared.HeaderAzureAsync)
69− if asyncURL == "" {
70− return nil, errors.New("response is missing Azure-AsyncOperation header")
71− }
72− if !poller.IsValidURL(asyncURL) {
73− return nil, fmt.Errorf("invalid polling URL %s", asyncURL)
74− }
75− // check for provisioning state. if the operation is a RELO
76− // and terminates synchronously this will prevent extra polling.
77− // it's ok if there's no provisioning state.
78− state, _ := poller.GetProvisioningState(resp)
79− if state == "" {
80− state = poller.StatusInProgress
81− }
82− p := &Poller[T]{
83− pl: pl,
84− resp: resp,
85− AsyncURL: asyncURL,
86− LocURL: resp.Header.Get(shared.HeaderLocation),
87− OrigURL: resp.Request.URL.String(),
88− Method: resp.Request.Method,
89− FinalState: finalState,
90− CurState: state,
91− }
92− return p, nil
93−}
94−
95−// Done returns true if the LRO is in a terminal state.
96−func (p *Poller[T]) Done() bool {
97− return poller.IsTerminalState(p.CurState)
98−}
99−
100−// Poll retrieves the current state of the LRO.
101−func (p *Poller[T]) Poll(ctx context.Context) (*http.Response, error) {
102− err := pollers.PollHelper(ctx, p.AsyncURL, p.pl, func(resp *http.Response) (string, error) {
103− if !poller.StatusCodeValid(resp) {
104− p.resp = resp
105− return "", exported.NewResponseError(resp)
106− }
107− state, err := poller.GetStatus(resp)
108− if err != nil {
109− return "", err
110− } else if state == "" {
111− return "", errors.New("the response did not contain a status")
112− }
113− p.resp = resp
114− p.CurState = state
115− return p.CurState, nil
116− })
117− if err != nil {
118− return nil, err
119− }
120− return p.resp, nil
121−}
122−
123−func (p *Poller[T]) Result(ctx context.Context, out *T) error {
124− if p.resp.StatusCode == http.StatusNoContent {
125− return nil
126− } else if poller.Failed(p.CurState) {
127− return exported.NewResponseError(p.resp)
128− }
129− var req *exported.Request
130− var err error
131− if p.Method == http.MethodPatch || p.Method == http.MethodPut {
132− // for PATCH and PUT, the final GET is on the original resource URL
133− req, err = exported.NewRequest(ctx, http.MethodGet, p.OrigURL)
134− } else if p.Method == http.MethodPost {
135− if p.FinalState == pollers.FinalStateViaAzureAsyncOp {
136− // no final GET required
137− } else if p.FinalState == pollers.FinalStateViaOriginalURI {
138− req, err = exported.NewRequest(ctx, http.MethodGet, p.OrigURL)
139− } else if p.LocURL != "" {
140− // ideally FinalState would be set to "location" but it isn't always.
141− // must check last due to more permissive condition.
142− req, err = exported.NewRequest(ctx, http.MethodGet, p.LocURL)
143− }
144− }
145− if err != nil {
146− return err
147− }
148−
149− // if a final GET request has been created, execute it
150− if req != nil {
151− resp, err := p.pl.Do(req)
152− if err != nil {
153− return err
154− }
155− p.resp = resp
156− }
157−
158− return pollers.ResultHelper(p.resp, poller.Failed(p.CurState), "", out)
159−}
vendor/github.com/Azure/azure-sdk-for-go/sdk/azcore/internal/pollers/body/body.godeleted−135
@@ -1,135 +0,0 @@
1−//go:build go1.18
2−// +build go1.18
3−
4−// Copyright (c) Microsoft Corporation. All rights reserved.
5−// Licensed under the MIT License.
6−
7−package body
8−
9−import (
10− "context"
11− "errors"
12− "net/http"
13−
14− "github.com/Azure/azure-sdk-for-go/sdk/azcore/internal/exported"
15− "github.com/Azure/azure-sdk-for-go/sdk/azcore/internal/log"
16− "github.com/Azure/azure-sdk-for-go/sdk/azcore/internal/pollers"
17− "github.com/Azure/azure-sdk-for-go/sdk/internal/poller"
18−)
19−
20−// Kind is the identifier of this type in a resume token.
21−const kind = "body"
22−
23−// Applicable returns true if the LRO is using no headers, just provisioning state.
24−// This is only applicable to PATCH and PUT methods and assumes no polling headers.
25−func Applicable(resp *http.Response) bool {
26− // we can't check for absense of headers due to some misbehaving services
27− // like redis that return a Location header but don't actually use that protocol
28− return resp.Request.Method == http.MethodPatch || resp.Request.Method == http.MethodPut
29−}
30−
31−// CanResume returns true if the token can rehydrate this poller type.
32−func CanResume(token map[string]any) bool {
33− t, ok := token["type"]
34− if !ok {
35− return false
36− }
37− tt, ok := t.(string)
38− if !ok {
39− return false
40− }
41− return tt == kind
42−}
43−
44−// Poller is an LRO poller that uses the Body pattern.
45−type Poller[T any] struct {
46− pl exported.Pipeline
47−
48− resp *http.Response
49−
50− // The poller's type, used for resume token processing.
51− Type string `json:"type"`
52−
53− // The URL for polling.
54− PollURL string `json:"pollURL"`
55−
56− // The LRO's current state.
57− CurState string `json:"state"`
58−}
59−
60−// New creates a new Poller from the provided initial response.
61−// Pass nil for response to create an empty Poller for rehydration.
62−func New[T any](pl exported.Pipeline, resp *http.Response) (*Poller[T], error) {
63− if resp == nil {
64− log.Write(log.EventLRO, "Resuming Body poller.")
65− return &Poller[T]{pl: pl}, nil
66− }
67− log.Write(log.EventLRO, "Using Body poller.")
68− p := &Poller[T]{
69− pl: pl,
70− resp: resp,
71− Type: kind,
72− PollURL: resp.Request.URL.String(),
73− }
74− // default initial state to InProgress. depending on the HTTP
75− // status code and provisioning state, we might change the value.
76− curState := poller.StatusInProgress
77− provState, err := poller.GetProvisioningState(resp)
78− if err != nil && !errors.Is(err, poller.ErrNoBody) {
79− return nil, err
80− }
81− if resp.StatusCode == http.StatusCreated && provState != "" {
82− // absense of provisioning state is ok for a 201, means the operation is in progress
83− curState = provState
84− } else if resp.StatusCode == http.StatusOK {
85− if provState != "" {
86− curState = provState
87− } else if provState == "" {
88− // for a 200, absense of provisioning state indicates success
89− curState = poller.StatusSucceeded
90− }
91− } else if resp.StatusCode == http.StatusNoContent {
92− curState = poller.StatusSucceeded
93− }
94− p.CurState = curState
95− return p, nil
96−}
97−
98−func (p *Poller[T]) Done() bool {
99− return poller.IsTerminalState(p.CurState)
100−}
101−
102−func (p *Poller[T]) Poll(ctx context.Context) (*http.Response, error) {
103− err := pollers.PollHelper(ctx, p.PollURL, p.pl, func(resp *http.Response) (string, error) {
104− if !poller.StatusCodeValid(resp) {
105− p.resp = resp
106− return "", exported.NewResponseError(resp)
107− }
108− if resp.StatusCode == http.StatusNoContent {
109− p.resp = resp
110− p.CurState = poller.StatusSucceeded
111− return p.CurState, nil
112− }
113− state, err := poller.GetProvisioningState(resp)
114− if errors.Is(err, poller.ErrNoBody) {
115− // a missing response body in non-204 case is an error
116− return "", err
117− } else if state == "" {
118− // a response body without provisioning state is considered terminal success
119− state = poller.StatusSucceeded
120− } else if err != nil {
121− return "", err
122− }
123− p.resp = resp
124− p.CurState = state
125− return p.CurState, nil
126− })
127− if err != nil {
128− return nil, err
129− }
130− return p.resp, nil
131−}
132−
133−func (p *Poller[T]) Result(ctx context.Context, out *T) error {
134− return pollers.ResultHelper(p.resp, poller.Failed(p.CurState), "", out)
135−}
vendor/github.com/Azure/azure-sdk-for-go/sdk/azcore/internal/pollers/fake/fake.godeleted−133
@@ -1,133 +0,0 @@
1−//go:build go1.18
2−// +build go1.18
3−
4−// Copyright (c) Microsoft Corporation. All rights reserved.
5−// Licensed under the MIT License.
6−
7−package fake
8−
9−import (
10− "context"
11− "errors"
12− "fmt"
13− "net/http"
14− "strings"
15−
16− "github.com/Azure/azure-sdk-for-go/sdk/azcore/internal/exported"
17− "github.com/Azure/azure-sdk-for-go/sdk/azcore/internal/log"
18− "github.com/Azure/azure-sdk-for-go/sdk/azcore/internal/pollers"
19− "github.com/Azure/azure-sdk-for-go/sdk/azcore/internal/shared"
20− "github.com/Azure/azure-sdk-for-go/sdk/internal/poller"
21−)
22−
23−// Applicable returns true if the LRO is a fake.
24−func Applicable(resp *http.Response) bool {
25− return resp.Header.Get(shared.HeaderFakePollerStatus) != ""
26−}
27−
28−// CanResume returns true if the token can rehydrate this poller type.
29−func CanResume(token map[string]any) bool {
30− _, ok := token["fakeURL"]
31− return ok
32−}
33−
34−// Poller is an LRO poller that uses the Core-Fake-Poller pattern.
35−type Poller[T any] struct {
36− pl exported.Pipeline
37−
38− resp *http.Response
39−
40− // The API name from CtxAPINameKey
41− APIName string `json:"apiName"`
42−
43− // The URL from Core-Fake-Poller header.
44− FakeURL string `json:"fakeURL"`
45−
46− // The LRO's current state.
47− FakeStatus string `json:"status"`
48−}
49−
50−// lroStatusURLSuffix is the URL path suffix for a faked LRO.
51−const lroStatusURLSuffix = "/get/fake/status"
52−
53−// New creates a new Poller from the provided initial response.
54−// Pass nil for response to create an empty Poller for rehydration.
55−func New[T any](pl exported.Pipeline, resp *http.Response) (*Poller[T], error) {
56− if resp == nil {
57− log.Write(log.EventLRO, "Resuming Core-Fake-Poller poller.")
58− return &Poller[T]{pl: pl}, nil
59− }
60−
61− log.Write(log.EventLRO, "Using Core-Fake-Poller poller.")
62− fakeStatus := resp.Header.Get(shared.HeaderFakePollerStatus)
63− if fakeStatus == "" {
64− return nil, errors.New("response is missing Fake-Poller-Status header")
65− }
66−
67− ctxVal := resp.Request.Context().Value(shared.CtxAPINameKey{})
68− if ctxVal == nil {
69− return nil, errors.New("missing value for CtxAPINameKey")
70− }
71−
72− apiName, ok := ctxVal.(string)
73− if !ok {
74− return nil, fmt.Errorf("expected string for CtxAPINameKey, the type was %T", ctxVal)
75− }
76−
77− qp := ""
78− if resp.Request.URL.RawQuery != "" {
79− qp = "?" + resp.Request.URL.RawQuery
80− }
81−
82− p := &Poller[T]{
83− pl: pl,
84− resp: resp,
85− APIName: apiName,
86− // NOTE: any changes to this path format MUST be reflected in SanitizePollerPath()
87− FakeURL: fmt.Sprintf("%s://%s%s%s%s", resp.Request.URL.Scheme, resp.Request.URL.Host, resp.Request.URL.Path, lroStatusURLSuffix, qp),
88− FakeStatus: fakeStatus,
89− }
90− return p, nil
91−}
92−
93−// Done returns true if the LRO is in a terminal state.
94−func (p *Poller[T]) Done() bool {
95− return poller.IsTerminalState(p.FakeStatus)
96−}
97−
98−// Poll retrieves the current state of the LRO.
99−func (p *Poller[T]) Poll(ctx context.Context) (*http.Response, error) {
100− ctx = context.WithValue(ctx, shared.CtxAPINameKey{}, p.APIName)
101− err := pollers.PollHelper(ctx, p.FakeURL, p.pl, func(resp *http.Response) (string, error) {
102− if !poller.StatusCodeValid(resp) {
103− p.resp = resp
104− return "", exported.NewResponseError(resp)
105− }
106− fakeStatus := resp.Header.Get(shared.HeaderFakePollerStatus)
107− if fakeStatus == "" {
108− return "", errors.New("response is missing Fake-Poller-Status header")
109− }
110− p.resp = resp
111− p.FakeStatus = fakeStatus
112− return p.FakeStatus, nil
113− })
114− if err != nil {
115− return nil, err
116− }
117− return p.resp, nil
118−}
119−
120−func (p *Poller[T]) Result(ctx context.Context, out *T) error {
121− if p.resp.StatusCode == http.StatusNoContent {
122− return nil
123− } else if poller.Failed(p.FakeStatus) {
124− return exported.NewResponseError(p.resp)
125− }
126−
127− return pollers.ResultHelper(p.resp, poller.Failed(p.FakeStatus), "", out)
128−}
129−
130−// SanitizePollerPath removes any fake-appended suffix from a URL's path.
131−func SanitizePollerPath(path string) string {
132− return strings.TrimSuffix(path, lroStatusURLSuffix)
133−}
vendor/github.com/Azure/azure-sdk-for-go/sdk/azcore/internal/pollers/loc/loc.godeleted−123
@@ -1,123 +0,0 @@
1−//go:build go1.18
2−// +build go1.18
3−
4−// Copyright (c) Microsoft Corporation. All rights reserved.
5−// Licensed under the MIT License.
6−
7−package loc
8−
9−import (
10− "context"
11− "errors"
12− "fmt"
13− "net/http"
14−
15− "github.com/Azure/azure-sdk-for-go/sdk/azcore/internal/exported"
16− "github.com/Azure/azure-sdk-for-go/sdk/azcore/internal/log"
17− "github.com/Azure/azure-sdk-for-go/sdk/azcore/internal/pollers"
18− "github.com/Azure/azure-sdk-for-go/sdk/azcore/internal/shared"
19− "github.com/Azure/azure-sdk-for-go/sdk/internal/poller"
20−)
21−
22−// Kind is the identifier of this type in a resume token.
23−const kind = "loc"
24−
25−// Applicable returns true if the LRO is using Location.
26−func Applicable(resp *http.Response) bool {
27− return resp.Header.Get(shared.HeaderLocation) != ""
28−}
29−
30−// CanResume returns true if the token can rehydrate this poller type.
31−func CanResume(token map[string]any) bool {
32− t, ok := token["type"]
33− if !ok {
34− return false
35− }
36− tt, ok := t.(string)
37− if !ok {
38− return false
39− }
40− return tt == kind
41−}
42−
43−// Poller is an LRO poller that uses the Location pattern.
44−type Poller[T any] struct {
45− pl exported.Pipeline
46− resp *http.Response
47−
48− Type string `json:"type"`
49− PollURL string `json:"pollURL"`
50− CurState string `json:"state"`
51−}
52−
53−// New creates a new Poller from the provided initial response.
54−// Pass nil for response to create an empty Poller for rehydration.
55−func New[T any](pl exported.Pipeline, resp *http.Response) (*Poller[T], error) {
56− if resp == nil {
57− log.Write(log.EventLRO, "Resuming Location poller.")
58− return &Poller[T]{pl: pl}, nil
59− }
60− log.Write(log.EventLRO, "Using Location poller.")
61− locURL := resp.Header.Get(shared.HeaderLocation)
62− if locURL == "" {
63− return nil, errors.New("response is missing Location header")
64− }
65− if !poller.IsValidURL(locURL) {
66− return nil, fmt.Errorf("invalid polling URL %s", locURL)
67− }
68− // check for provisioning state. if the operation is a RELO
69− // and terminates synchronously this will prevent extra polling.
70− // it's ok if there's no provisioning state.
71− state, _ := poller.GetProvisioningState(resp)
72− if state == "" {
73− state = poller.StatusInProgress
74− }
75− return &Poller[T]{
76− pl: pl,
77− resp: resp,
78− Type: kind,
79− PollURL: locURL,
80− CurState: state,
81− }, nil
82−}
83−
84−func (p *Poller[T]) Done() bool {
85− return poller.IsTerminalState(p.CurState)
86−}
87−
88−func (p *Poller[T]) Poll(ctx context.Context) (*http.Response, error) {
89− err := pollers.PollHelper(ctx, p.PollURL, p.pl, func(resp *http.Response) (string, error) {
90− // location polling can return an updated polling URL
91− if h := resp.Header.Get(shared.HeaderLocation); h != "" {
92− p.PollURL = h
93− }
94− // if provisioning state is available, use that. this is only
95− // for some ARM LRO scenarios (e.g. DELETE with a Location header)
96− // so if it's missing then use HTTP status code.
97− provState, _ := poller.GetProvisioningState(resp)
98− p.resp = resp
99− if provState != "" {
100− p.CurState = provState
101− } else if resp.StatusCode == http.StatusAccepted {
102− p.CurState = poller.StatusInProgress
103− } else if resp.StatusCode > 199 && resp.StatusCode < 300 {
104− // any 2xx other than a 202 indicates success
105− p.CurState = poller.StatusSucceeded
106− } else if pollers.IsNonTerminalHTTPStatusCode(resp) {
107− // the request timed out or is being throttled.
108− // DO NOT include this as a terminal failure. preserve
109− // the existing state and return the response.
110− } else {
111− p.CurState = poller.StatusFailed
112− }
113− return p.CurState, nil
114− })
115− if err != nil {
116− return nil, err
117− }
118− return p.resp, nil
119−}
120−
121−func (p *Poller[T]) Result(ctx context.Context, out *T) error {
122− return pollers.ResultHelper(p.resp, poller.Failed(p.CurState), "", out)
123−}
vendor/github.com/Azure/azure-sdk-for-go/sdk/azcore/internal/pollers/op/op.godeleted−148
@@ -1,148 +0,0 @@
1−//go:build go1.18
2−// +build go1.18
3−
4−// Copyright (c) Microsoft Corporation. All rights reserved.
5−// Licensed under the MIT License.
6−
7−package op
8−
9−import (
10− "context"
11− "errors"
12− "fmt"
13− "net/http"
14−
15− "github.com/Azure/azure-sdk-for-go/sdk/azcore/internal/exported"
16− "github.com/Azure/azure-sdk-for-go/sdk/azcore/internal/log"
17− "github.com/Azure/azure-sdk-for-go/sdk/azcore/internal/pollers"
18− "github.com/Azure/azure-sdk-for-go/sdk/azcore/internal/shared"
19− "github.com/Azure/azure-sdk-for-go/sdk/internal/poller"
20−)
21−
22−// Applicable returns true if the LRO is using Operation-Location.
23−func Applicable(resp *http.Response) bool {
24− return resp.Header.Get(shared.HeaderOperationLocation) != ""
25−}
26−
27−// CanResume returns true if the token can rehydrate this poller type.
28−func CanResume(token map[string]any) bool {
29− _, ok := token["oplocURL"]
30− return ok
31−}
32−
33−// Poller is an LRO poller that uses the Operation-Location pattern.
34−type Poller[T any] struct {
35− pl exported.Pipeline
36− resp *http.Response
37−
38− OpLocURL string `json:"oplocURL"`
39− LocURL string `json:"locURL"`
40− OrigURL string `json:"origURL"`
41− Method string `json:"method"`
42− FinalState pollers.FinalStateVia `json:"finalState"`
43− ResultPath string `json:"resultPath"`
44− CurState string `json:"state"`
45−}
46−
47−// New creates a new Poller from the provided initial response.
48−// Pass nil for response to create an empty Poller for rehydration.
49−func New[T any](pl exported.Pipeline, resp *http.Response, finalState pollers.FinalStateVia, resultPath string) (*Poller[T], error) {
50− if resp == nil {
51− log.Write(log.EventLRO, "Resuming Operation-Location poller.")
52− return &Poller[T]{pl: pl}, nil
53− }
54− log.Write(log.EventLRO, "Using Operation-Location poller.")
55− opURL := resp.Header.Get(shared.HeaderOperationLocation)
56− if opURL == "" {
57− return nil, errors.New("response is missing Operation-Location header")
58− }
59− if !poller.IsValidURL(opURL) {
60− return nil, fmt.Errorf("invalid Operation-Location URL %s", opURL)
61− }
62− locURL := resp.Header.Get(shared.HeaderLocation)
63− // Location header is optional
64− if locURL != "" && !poller.IsValidURL(locURL) {
65− return nil, fmt.Errorf("invalid Location URL %s", locURL)
66− }
67− // default initial state to InProgress. if the
68− // service sent us a status then use that instead.
69− curState := poller.StatusInProgress
70− status, err := poller.GetStatus(resp)
71− if err != nil && !errors.Is(err, poller.ErrNoBody) {
72− return nil, err
73− }
74− if status != "" {
75− curState = status
76− }
77−
78− return &Poller[T]{
79− pl: pl,
80− resp: resp,
81− OpLocURL: opURL,
82− LocURL: locURL,
83− OrigURL: resp.Request.URL.String(),
84− Method: resp.Request.Method,
85− FinalState: finalState,
86− ResultPath: resultPath,
87− CurState: curState,
88− }, nil
89−}
90−
91−func (p *Poller[T]) Done() bool {
92− return poller.IsTerminalState(p.CurState)
93−}
94−
95−func (p *Poller[T]) Poll(ctx context.Context) (*http.Response, error) {
96− err := pollers.PollHelper(ctx, p.OpLocURL, p.pl, func(resp *http.Response) (string, error) {
97− if !poller.StatusCodeValid(resp) {
98− p.resp = resp
99− return "", exported.NewResponseError(resp)
100− }
101− state, err := poller.GetStatus(resp)
102− if err != nil {
103− return "", err
104− } else if state == "" {
105− return "", errors.New("the response did not contain a status")
106− }
107− p.resp = resp
108− p.CurState = state
109− return p.CurState, nil
110− })
111− if err != nil {
112− return nil, err
113− }
114− return p.resp, nil
115−}
116−
117−func (p *Poller[T]) Result(ctx context.Context, out *T) error {
118− var req *exported.Request
119− var err error
120−
121− if p.FinalState == pollers.FinalStateViaLocation && p.LocURL != "" {
122− req, err = exported.NewRequest(ctx, http.MethodGet, p.LocURL)
123− } else if rl, rlErr := poller.GetResourceLocation(p.resp); rlErr != nil && !errors.Is(rlErr, poller.ErrNoBody) {
124− return rlErr
125− } else if rl != "" {
126− req, err = exported.NewRequest(ctx, http.MethodGet, rl)
127− } else if p.Method == http.MethodPatch || p.Method == http.MethodPut {
128− req, err = exported.NewRequest(ctx, http.MethodGet, p.OrigURL)
129− } else if p.Method == http.MethodPost && p.LocURL != "" {
130− req, err = exported.NewRequest(ctx, http.MethodGet, p.LocURL)
131− }
132− if err != nil {
133− return err
134− }
135−
136− // if a final GET request has been created, execute it
137− if req != nil {
138− // no JSON path when making a final GET request
139− p.ResultPath = ""
140− resp, err := p.pl.Do(req)
141− if err != nil {
142− return err
143− }
144− p.resp = resp
145− }
146−
147− return pollers.ResultHelper(p.resp, poller.Failed(p.CurState), p.ResultPath, out)
148−}
vendor/github.com/Azure/azure-sdk-for-go/sdk/azcore/internal/pollers/poller.godeleted−24
@@ -1,24 +0,0 @@
1−//go:build go1.18
2−// +build go1.18
3−
4−// Copyright (c) Microsoft Corporation. All rights reserved.
5−// Licensed under the MIT License.
6−
7−package pollers
8−
9−// FinalStateVia is the enumerated type for the possible final-state-via values.
10−type FinalStateVia string
11−
12−const (
13− // FinalStateViaAzureAsyncOp indicates the final payload comes from the Azure-AsyncOperation URL.
14− FinalStateViaAzureAsyncOp FinalStateVia = "azure-async-operation"
15−
16− // FinalStateViaLocation indicates the final payload comes from the Location URL.
17− FinalStateViaLocation FinalStateVia = "location"
18−
19− // FinalStateViaOriginalURI indicates the final payload comes from the original URL.
20− FinalStateViaOriginalURI FinalStateVia = "original-uri"
21−
22− // FinalStateViaOpLocation indicates the final payload comes from the Operation-Location URL.
23− FinalStateViaOpLocation FinalStateVia = "operation-location"
24−)
vendor/github.com/Azure/azure-sdk-for-go/sdk/azcore/internal/pollers/util.godeleted−212
@@ -1,212 +0,0 @@
1−//go:build go1.18
2−// +build go1.18
3−
4−// Copyright (c) Microsoft Corporation. All rights reserved.
5−// Licensed under the MIT License.
6−
7−package pollers
8−
9−import (
10− "context"
11− "encoding/json"
12− "errors"
13− "fmt"
14− "net/http"
15− "reflect"
16−
17− azexported "github.com/Azure/azure-sdk-for-go/sdk/azcore/internal/exported"
18− "github.com/Azure/azure-sdk-for-go/sdk/azcore/internal/log"
19− "github.com/Azure/azure-sdk-for-go/sdk/azcore/internal/shared"
20− "github.com/Azure/azure-sdk-for-go/sdk/internal/exported"
21− "github.com/Azure/azure-sdk-for-go/sdk/internal/poller"
22−)
23−
24−// getTokenTypeName creates a type name from the type parameter T.
25−func getTokenTypeName[T any]() (string, error) {
26− tt := shared.TypeOfT[T]()
27− var n string
28− if tt.Kind() == reflect.Pointer {
29− n = "*"
30− tt = tt.Elem()
31− }
32− n += tt.Name()
33− if n == "" {
34− return "", errors.New("nameless types are not allowed")
35− }
36− return n, nil
37−}
38−
39−type resumeTokenWrapper[T any] struct {
40− Type string `json:"type"`
41− Token T `json:"token"`
42−}
43−
44−// NewResumeToken creates a resume token from the specified type.
45−// An error is returned if the generic type has no name (e.g. struct{}).
46−func NewResumeToken[TResult, TSource any](from TSource) (string, error) {
47− n, err := getTokenTypeName[TResult]()
48− if err != nil {
49− return "", err
50− }
51− b, err := json.Marshal(resumeTokenWrapper[TSource]{
52− Type: n,
53− Token: from,
54− })
55− if err != nil {
56− return "", err
57− }
58− return string(b), nil
59−}
60−
61−// ExtractToken returns the poller-specific token information from the provided token value.
62−func ExtractToken(token string) ([]byte, error) {
63− raw := map[string]json.RawMessage{}
64− if err := json.Unmarshal([]byte(token), &raw); err != nil {
65− return nil, err
66− }
67− // this is dependent on the type resumeTokenWrapper[T]
68− tk, ok := raw["token"]
69− if !ok {
70− return nil, errors.New("missing token value")
71− }
72− return tk, nil
73−}
74−
75−// IsTokenValid returns an error if the specified token isn't applicable for generic type T.
76−func IsTokenValid[T any](token string) error {
77− raw := map[string]any{}
78− if err := json.Unmarshal([]byte(token), &raw); err != nil {
79− return err
80− }
81− t, ok := raw["type"]
82− if !ok {
83− return errors.New("missing type value")
84− }
85− tt, ok := t.(string)
86− if !ok {
87− return fmt.Errorf("invalid type format %T", t)
88− }
89− n, err := getTokenTypeName[T]()
90− if err != nil {
91− return err
92− }
93− if tt != n {
94− return fmt.Errorf("cannot resume from this poller token. token is for type %s, not %s", tt, n)
95− }
96− return nil
97−}
98−
99−// used if the operation synchronously completed
100−type NopPoller[T any] struct {
101− resp *http.Response
102− result T
103−}
104−
105−// NewNopPoller creates a NopPoller from the provided response.
106−// It unmarshals the response body into an instance of T.
107−func NewNopPoller[T any](resp *http.Response) (*NopPoller[T], error) {
108− np := &NopPoller[T]{resp: resp}
109− if resp.StatusCode == http.StatusNoContent {
110− return np, nil
111− }
112− payload, err := exported.Payload(resp, nil)
113− if err != nil {
114− return nil, err
115− }
116− if len(payload) == 0 {
117− return np, nil
118− }
119− if err = json.Unmarshal(payload, &np.result); err != nil {
120− return nil, err
121− }
122− return np, nil
123−}
124−
125−func (*NopPoller[T]) Done() bool {
126− return true
127−}
128−
129−func (p *NopPoller[T]) Poll(context.Context) (*http.Response, error) {
130− return p.resp, nil
131−}
132−
133−func (p *NopPoller[T]) Result(ctx context.Context, out *T) error {
134− *out = p.result
135− return nil
136−}
137−
138−// PollHelper creates and executes the request, calling update() with the response.
139−// If the request fails, the update func is not called.
140−// The update func returns the state of the operation for logging purposes or an error
141−// if it fails to extract the required state from the response.
142−func PollHelper(ctx context.Context, endpoint string, pl azexported.Pipeline, update func(resp *http.Response) (string, error)) error {
143− req, err := azexported.NewRequest(ctx, http.MethodGet, endpoint)
144− if err != nil {
145− return err
146− }
147− resp, err := pl.Do(req)
148− if err != nil {
149− return err
150− }
151− state, err := update(resp)
152− if err != nil {
153− return err
154− }
155− log.Writef(log.EventLRO, "State %s", state)
156− return nil
157−}
158−
159−// ResultHelper processes the response as success or failure.
160−// In the success case, it unmarshals the payload into either a new instance of T or out.
161−// In the failure case, it creates an *azcore.Response error from the response.
162−func ResultHelper[T any](resp *http.Response, failed bool, jsonPath string, out *T) error {
163− // short-circuit the simple success case with no response body to unmarshal
164− if resp.StatusCode == http.StatusNoContent {
165− return nil
166− }
167−
168− defer resp.Body.Close()
169− if !poller.StatusCodeValid(resp) || failed {
170− // the LRO failed. unmarshall the error and update state
171− return azexported.NewResponseError(resp)
172− }
173−
174− // success case
175− payload, err := exported.Payload(resp, nil)
176− if err != nil {
177− return err
178− }
179−
180− if jsonPath != "" && len(payload) > 0 {
181− // extract the payload from the specified JSON path.
182− // do this before the zero-length check in case there
183− // is no payload.
184− jsonBody := map[string]json.RawMessage{}
185− if err = json.Unmarshal(payload, &jsonBody); err != nil {
186− return err
187− }
188− payload = jsonBody[jsonPath]
189− }
190−
191− if len(payload) == 0 {
192− return nil
193− }
194−
195− if err = json.Unmarshal(payload, out); err != nil {
196− return err
197− }
198− return nil
199−}
200−
201−// IsNonTerminalHTTPStatusCode returns true if the HTTP status code should be
202−// considered non-terminal thus eligible for retry.
203−func IsNonTerminalHTTPStatusCode(resp *http.Response) bool {
204− return exported.HasStatusCode(resp,
205− http.StatusRequestTimeout, // 408
206− http.StatusTooManyRequests, // 429
207− http.StatusInternalServerError, // 500
208− http.StatusBadGateway, // 502
209− http.StatusServiceUnavailable, // 503
210− http.StatusGatewayTimeout, // 504
211− )
212−}
vendor/github.com/Azure/azure-sdk-for-go/sdk/azcore/internal/shared/constants.godeleted−44
@@ -1,44 +0,0 @@
1−//go:build go1.18
2−// +build go1.18
3−
4−// Copyright (c) Microsoft Corporation. All rights reserved.
5−// Licensed under the MIT License.
6−
7−package shared
8−
9−const (
10− ContentTypeAppJSON = "application/json"
11− ContentTypeAppXML = "application/xml"
12− ContentTypeTextPlain = "text/plain"
13−)
14−
15−const (
16− HeaderAuthorization = "Authorization"
17− HeaderAuxiliaryAuthorization = "x-ms-authorization-auxiliary"
18− HeaderAzureAsync = "Azure-AsyncOperation"
19− HeaderContentLength = "Content-Length"
20− HeaderContentType = "Content-Type"
21− HeaderFakePollerStatus = "Fake-Poller-Status"
22− HeaderLocation = "Location"
23− HeaderOperationLocation = "Operation-Location"
24− HeaderRetryAfter = "Retry-After"
25− HeaderRetryAfterMS = "Retry-After-Ms"
26− HeaderUserAgent = "User-Agent"
27− HeaderWWWAuthenticate = "WWW-Authenticate"
28− HeaderXMSClientRequestID = "x-ms-client-request-id"
29− HeaderXMSRequestID = "x-ms-request-id"
30− HeaderXMSErrorCode = "x-ms-error-code"
31− HeaderXMSRetryAfterMS = "x-ms-retry-after-ms"
32−)
33−
34−const BearerTokenPrefix = "Bearer "
35−
36−const TracingNamespaceAttrName = "az.namespace"
37−
38−const (
39− // Module is the name of the calling module used in telemetry data.
40− Module = "azcore"
41−
42− // Version is the semantic version (see http://semver.org) of this module.
43− Version = "v1.17.0"
44−)
vendor/github.com/Azure/azure-sdk-for-go/sdk/azcore/internal/shared/shared.godeleted−149
@@ -1,149 +0,0 @@
1−//go:build go1.18
2−// +build go1.18
3−
4−// Copyright (c) Microsoft Corporation. All rights reserved.
5−// Licensed under the MIT License.
6−
7−package shared
8−
9−import (
10− "context"
11− "fmt"
12− "net/http"
13− "reflect"
14− "regexp"
15− "strconv"
16− "time"
17−)
18−
19−// NOTE: when adding a new context key type, it likely needs to be
20−// added to the deny-list of key types in ContextWithDeniedValues
21−
22−// CtxWithHTTPHeaderKey is used as a context key for adding/retrieving http.Header.
23−type CtxWithHTTPHeaderKey struct{}
24−
25−// CtxWithRetryOptionsKey is used as a context key for adding/retrieving RetryOptions.
26−type CtxWithRetryOptionsKey struct{}
27−
28−// CtxWithCaptureResponse is used as a context key for retrieving the raw response.
29−type CtxWithCaptureResponse struct{}
30−
31−// CtxWithTracingTracer is used as a context key for adding/retrieving tracing.Tracer.
32−type CtxWithTracingTracer struct{}
33−
34−// CtxAPINameKey is used as a context key for adding/retrieving the API name.
35−type CtxAPINameKey struct{}
36−
37−// Delay waits for the duration to elapse or the context to be cancelled.
38−func Delay(ctx context.Context, delay time.Duration) error {
39− select {
40− case <-time.After(delay):
41− return nil
42− case <-ctx.Done():
43− return ctx.Err()
44− }
45−}
46−
47−// RetryAfter returns non-zero if the response contains one of the headers with a "retry after" value.
48−// Headers are checked in the following order: retry-after-ms, x-ms-retry-after-ms, retry-after
49−func RetryAfter(resp *http.Response) time.Duration {
50− if resp == nil {
51− return 0
52− }
53−
54− type retryData struct {
55− header string
56− units time.Duration
57−
58− // custom is used when the regular algorithm failed and is optional.
59− // the returned duration is used verbatim (units is not applied).
60− custom func(string) time.Duration
61− }
62−
63− nop := func(string) time.Duration { return 0 }
64−
65− // the headers are listed in order of preference
66− retries := []retryData{
67− {
68− header: HeaderRetryAfterMS,
69− units: time.Millisecond,
70− custom: nop,
71− },
72− {
73− header: HeaderXMSRetryAfterMS,
74− units: time.Millisecond,
75− custom: nop,
76− },
77− {
78− header: HeaderRetryAfter,
79− units: time.Second,
80−
81− // retry-after values are expressed in either number of
82− // seconds or an HTTP-date indicating when to try again
83− custom: func(ra string) time.Duration {
84− t, err := time.Parse(time.RFC1123, ra)
85− if err != nil {
86− return 0
87− }
88− return time.Until(t)
89− },
90− },
91− }
92−
93− for _, retry := range retries {
94− v := resp.Header.Get(retry.header)
95− if v == "" {
96− continue
97− }
98− if retryAfter, _ := strconv.Atoi(v); retryAfter > 0 {
99− return time.Duration(retryAfter) * retry.units
100− } else if d := retry.custom(v); d > 0 {
101− return d
102− }
103− }
104−
105− return 0
106−}
107−
108−// TypeOfT returns the type of the generic type param.
109−func TypeOfT[T any]() reflect.Type {
110− // you can't, at present, obtain the type of
111− // a type parameter, so this is the trick
112− return reflect.TypeOf((*T)(nil)).Elem()
113−}
114−
115−// TransportFunc is a helper to use a first-class func to satisfy the Transporter interface.
116−type TransportFunc func(*http.Request) (*http.Response, error)
117−
118−// Do implements the Transporter interface for the TransportFunc type.
119−func (pf TransportFunc) Do(req *http.Request) (*http.Response, error) {
120− return pf(req)
121−}
122−
123−// ValidateModVer verifies that moduleVersion is a valid semver 2.0 string.
124−func ValidateModVer(moduleVersion string) error {
125− modVerRegx := regexp.MustCompile(`^v\d+\.\d+\.\d+(?:-[a-zA-Z0-9_.-]+)?$`)
126− if !modVerRegx.MatchString(moduleVersion) {
127− return fmt.Errorf("malformed moduleVersion param value %s", moduleVersion)
128− }
129− return nil
130−}
131−
132−// ContextWithDeniedValues wraps an existing [context.Context], denying access to certain context values.
133−// Pipeline policies that create new requests to be sent down their own pipeline MUST wrap the caller's
134−// context with an instance of this type. This is to prevent context values from flowing across disjoint
135−// requests which can have unintended side-effects.
136−type ContextWithDeniedValues struct {
137− context.Context
138−}
139−
140−// Value implements part of the [context.Context] interface.
141−// It acts as a deny-list for certain context keys.
142−func (c *ContextWithDeniedValues) Value(key any) any {
143− switch key.(type) {
144− case CtxAPINameKey, CtxWithCaptureResponse, CtxWithHTTPHeaderKey, CtxWithRetryOptionsKey, CtxWithTracingTracer:
145− return nil
146− default:
147− return c.Context.Value(key)
148− }
149−}
vendor/github.com/Azure/azure-sdk-for-go/sdk/azcore/log/doc.godeleted−10
@@ -1,10 +0,0 @@
1−//go:build go1.18
2−// +build go1.18
3−
4−// Copyright 2017 Microsoft Corporation. All rights reserved.
5−// Use of this source code is governed by an MIT
6−// license that can be found in the LICENSE file.
7−
8−// Package log contains functionality for configuring logging behavior.
9−// Default logging to stderr can be enabled by setting environment variable AZURE_SDK_GO_LOGGING to "all".
10−package log
vendor/github.com/Azure/azure-sdk-for-go/sdk/azcore/log/log.godeleted−55
@@ -1,55 +0,0 @@
1−//go:build go1.18
2−// +build go1.18
3−
4−// Copyright (c) Microsoft Corporation. All rights reserved.
5−// Licensed under the MIT License.
6−
7−// Package log provides functionality for configuring logging facilities.
8−package log
9−
10−import (
11− "github.com/Azure/azure-sdk-for-go/sdk/internal/log"
12−)
13−
14−// Event is used to group entries. Each group can be toggled on or off.
15−type Event = log.Event
16−
17−const (
18− // EventRequest entries contain information about HTTP requests.
19− // This includes information like the URL, query parameters, and headers.
20− EventRequest Event = "Request"
21−
22− // EventResponse entries contain information about HTTP responses.
23− // This includes information like the HTTP status code, headers, and request URL.
24− EventResponse Event = "Response"
25−
26− // EventResponseError entries contain information about HTTP responses that returned
27− // an *azcore.ResponseError (i.e. responses with a non 2xx HTTP status code).
28− // This includes the contents of ResponseError.Error().
29− EventResponseError Event = "ResponseError"
30−
31− // EventRetryPolicy entries contain information specific to the retry policy in use.
32− EventRetryPolicy Event = "Retry"
33−
34− // EventLRO entries contain information specific to long-running operations.
35− // This includes information like polling location, operation state, and sleep intervals.
36− EventLRO Event = "LongRunningOperation"
37−)
38−
39−// SetEvents is used to control which events are written to
40−// the log. By default all log events are writen.
41−// NOTE: this is not goroutine safe and should be called before using SDK clients.
42−func SetEvents(cls ...Event) {
43− log.SetEvents(cls...)
44−}
45−
46−// SetListener will set the Logger to write to the specified Listener.
47−// NOTE: this is not goroutine safe and should be called before using SDK clients.
48−func SetListener(lst func(Event, string)) {
49− log.SetListener(lst)
50−}
51−
52−// for testing purposes
53−func resetEvents() {
54− log.TestResetEvents()
55−}
vendor/github.com/Azure/azure-sdk-for-go/sdk/azcore/policy/doc.godeleted−10
@@ -1,10 +0,0 @@
1−//go:build go1.18
2−// +build go1.18
3−
4−// Copyright 2017 Microsoft Corporation. All rights reserved.
5−// Use of this source code is governed by an MIT
6−// license that can be found in the LICENSE file.
7−
8−// Package policy contains the definitions needed for configuring in-box pipeline policies
9−// and creating custom policies.
10−package policy
vendor/github.com/Azure/azure-sdk-for-go/sdk/azcore/policy/policy.godeleted−198
@@ -1,198 +0,0 @@
1−//go:build go1.18
2−// +build go1.18
3−
4−// Copyright (c) Microsoft Corporation. All rights reserved.
5−// Licensed under the MIT License.
6−
7−package policy
8−
9−import (
10− "context"
11− "net/http"
12− "time"
13−
14− "github.com/Azure/azure-sdk-for-go/sdk/azcore/cloud"
15− "github.com/Azure/azure-sdk-for-go/sdk/azcore/internal/exported"
16− "github.com/Azure/azure-sdk-for-go/sdk/azcore/internal/shared"
17− "github.com/Azure/azure-sdk-for-go/sdk/azcore/tracing"
18−)
19−
20−// Policy represents an extensibility point for the Pipeline that can mutate the specified
21−// Request and react to the received Response.
22−type Policy = exported.Policy
23−
24−// Transporter represents an HTTP pipeline transport used to send HTTP requests and receive responses.
25−type Transporter = exported.Transporter
26−
27−// Request is an abstraction over the creation of an HTTP request as it passes through the pipeline.
28−// Don't use this type directly, use runtime.NewRequest() instead.
29−type Request = exported.Request
30−
31−// ClientOptions contains optional settings for a client's pipeline.
32−// Instances can be shared across calls to SDK client constructors when uniform configuration is desired.
33−// Zero-value fields will have their specified default values applied during use.
34−type ClientOptions struct {
35− // APIVersion overrides the default version requested of the service.
36− // Set with caution as this package version has not been tested with arbitrary service versions.
37− APIVersion string
38−
39− // Cloud specifies a cloud for the client. The default is Azure Public Cloud.
40− Cloud cloud.Configuration
41−
42− // InsecureAllowCredentialWithHTTP enables authenticated requests over HTTP.
43− // By default, authenticated requests to an HTTP endpoint are rejected by the client.
44− // WARNING: setting this to true will allow sending the credential in clear text. Use with caution.
45− InsecureAllowCredentialWithHTTP bool
46−
47− // Logging configures the built-in logging policy.
48− Logging LogOptions
49−
50− // Retry configures the built-in retry policy.
51− Retry RetryOptions
52−
53− // Telemetry configures the built-in telemetry policy.
54− Telemetry TelemetryOptions
55−
56− // TracingProvider configures the tracing provider.
57− // It defaults to a no-op tracer.
58− TracingProvider tracing.Provider
59−
60− // Transport sets the transport for HTTP requests.
61− Transport Transporter
62−
63− // PerCallPolicies contains custom policies to inject into the pipeline.
64− // Each policy is executed once per request.
65− PerCallPolicies []Policy
66−
67− // PerRetryPolicies contains custom policies to inject into the pipeline.
68− // Each policy is executed once per request, and for each retry of that request.
69− PerRetryPolicies []Policy
70−}
71−
72−// LogOptions configures the logging policy's behavior.
73−type LogOptions struct {
74− // IncludeBody indicates if request and response bodies should be included in logging.
75− // The default value is false.
76− // NOTE: enabling this can lead to disclosure of sensitive information, use with care.
77− IncludeBody bool
78−
79− // AllowedHeaders is the slice of headers to log with their values intact.
80− // All headers not in the slice will have their values REDACTED.
81− // Applies to request and response headers.
82− AllowedHeaders []string
83−
84− // AllowedQueryParams is the slice of query parameters to log with their values intact.
85− // All query parameters not in the slice will have their values REDACTED.
86− AllowedQueryParams []string
87−}
88−
89−// RetryOptions configures the retry policy's behavior.
90−// Zero-value fields will have their specified default values applied during use.
91−// This allows for modification of a subset of fields.
92−type RetryOptions struct {
93− // MaxRetries specifies the maximum number of attempts a failed operation will be retried
94− // before producing an error.
95− // The default value is three. A value less than zero means one try and no retries.
96− MaxRetries int32
97−
98− // TryTimeout indicates the maximum time allowed for any single try of an HTTP request.
99− // This is disabled by default. Specify a value greater than zero to enable.
100− // NOTE: Setting this to a small value might cause premature HTTP request time-outs.
101− TryTimeout time.Duration
102−
103− // RetryDelay specifies the initial amount of delay to use before retrying an operation.
104− // The value is used only if the HTTP response does not contain a Retry-After header.
105− // The delay increases exponentially with each retry up to the maximum specified by MaxRetryDelay.
106− // The default value is four seconds. A value less than zero means no delay between retries.
107− RetryDelay time.Duration
108−
109− // MaxRetryDelay specifies the maximum delay allowed before retrying an operation.
110− // Typically the value is greater than or equal to the value specified in RetryDelay.
111− // The default Value is 60 seconds. A value less than zero means there is no cap.
112− MaxRetryDelay time.Duration
113−
114− // StatusCodes specifies the HTTP status codes that indicate the operation should be retried.
115− // A nil slice will use the following values.
116− // http.StatusRequestTimeout 408
117− // http.StatusTooManyRequests 429
118− // http.StatusInternalServerError 500
119− // http.StatusBadGateway 502
120− // http.StatusServiceUnavailable 503
121− // http.StatusGatewayTimeout 504
122− // Specifying values will replace the default values.
123− // Specifying an empty slice will disable retries for HTTP status codes.
124− StatusCodes []int
125−
126− // ShouldRetry evaluates if the retry policy should retry the request.
127− // When specified, the function overrides comparison against the list of
128− // HTTP status codes and error checking within the retry policy. Context
129− // and NonRetriable errors remain evaluated before calling ShouldRetry.
130− // The *http.Response and error parameters are mutually exclusive, i.e.
131− // if one is nil, the other is not nil.
132− // A return value of true means the retry policy should retry.
133− ShouldRetry func(*http.Response, error) bool
134−}
135−
136−// TelemetryOptions configures the telemetry policy's behavior.
137−type TelemetryOptions struct {
138− // ApplicationID is an application-specific identification string to add to the User-Agent.
139− // It has a maximum length of 24 characters and must not contain any spaces.
140− ApplicationID string
141−
142− // Disabled will prevent the addition of any telemetry data to the User-Agent.
143− Disabled bool
144−}
145−
146−// TokenRequestOptions contain specific parameter that may be used by credentials types when attempting to get a token.
147−type TokenRequestOptions = exported.TokenRequestOptions
148−
149−// BearerTokenOptions configures the bearer token policy's behavior.
150−type BearerTokenOptions struct {
151− // AuthorizationHandler allows SDK developers to run client-specific logic when BearerTokenPolicy must authorize a request.
152− // When this field isn't set, the policy follows its default behavior of authorizing every request with a bearer token from
153− // its given credential.
154− AuthorizationHandler AuthorizationHandler
155−
156− // InsecureAllowCredentialWithHTTP enables authenticated requests over HTTP.
157− // By default, authenticated requests to an HTTP endpoint are rejected by the client.
158− // WARNING: setting this to true will allow sending the bearer token in clear text. Use with caution.
159− InsecureAllowCredentialWithHTTP bool
160−}
161−
162−// AuthorizationHandler allows SDK developers to insert custom logic that runs when BearerTokenPolicy must authorize a request.
163−type AuthorizationHandler struct {
164− // OnRequest provides TokenRequestOptions the policy can use to acquire a token for a request. The policy calls OnRequest
165− // whenever it needs a token and may call it multiple times for the same request. Its func parameter authorizes the request
166− // with a token from the policy's credential. Implementations that need to perform I/O should use the Request's context,
167− // available from Request.Raw().Context(). When OnRequest returns an error, the policy propagates that error and doesn't send
168− // the request. When OnRequest is nil, the policy follows its default behavior, which is to authorize the request with a token
169− // from its credential according to its configuration.
170− OnRequest func(*Request, func(TokenRequestOptions) error) error
171−
172− // OnChallenge allows clients to implement custom HTTP authentication challenge handling. BearerTokenPolicy calls it upon
173− // receiving a 401 response containing multiple Bearer challenges or a challenge BearerTokenPolicy itself can't handle.
174− // OnChallenge is responsible for parsing challenge(s) (the Response's WWW-Authenticate header) and reauthorizing the
175− // Request accordingly. Its func argument authorizes the Request with a token from the policy's credential using the given
176− // TokenRequestOptions. OnChallenge should honor the Request's context, available from Request.Raw().Context(). When
177− // OnChallenge returns nil, the policy will send the Request again.
178− OnChallenge func(*Request, *http.Response, func(TokenRequestOptions) error) error
179−}
180−
181−// WithCaptureResponse applies the HTTP response retrieval annotation to the parent context.
182−// The resp parameter will contain the HTTP response after the request has completed.
183−func WithCaptureResponse(parent context.Context, resp **http.Response) context.Context {
184− return context.WithValue(parent, shared.CtxWithCaptureResponse{}, resp)
185−}
186−
187−// WithHTTPHeader adds the specified http.Header to the parent context.
188−// Use this to specify custom HTTP headers at the API-call level.
189−// Any overlapping headers will have their values replaced with the values specified here.
190−func WithHTTPHeader(parent context.Context, header http.Header) context.Context {
191− return context.WithValue(parent, shared.CtxWithHTTPHeaderKey{}, header)
192−}
193−
194−// WithRetryOptions adds the specified RetryOptions to the parent context.
195−// Use this to specify custom RetryOptions at the API-call level.
196−func WithRetryOptions(parent context.Context, options RetryOptions) context.Context {
197− return context.WithValue(parent, shared.CtxWithRetryOptionsKey{}, options)
198−}
vendor/github.com/Azure/azure-sdk-for-go/sdk/azcore/runtime/doc.godeleted−10
@@ -1,10 +0,0 @@
1−//go:build go1.18
2−// +build go1.18
3−
4−// Copyright 2017 Microsoft Corporation. All rights reserved.
5−// Use of this source code is governed by an MIT
6−// license that can be found in the LICENSE file.
7−
8−// Package runtime contains various facilities for creating requests and handling responses.
9−// The content is intended for SDK authors.
10−package runtime
vendor/github.com/Azure/azure-sdk-for-go/sdk/azcore/runtime/errors.godeleted−27
@@ -1,27 +0,0 @@
1−//go:build go1.18
2−// +build go1.18
3−
4−// Copyright (c) Microsoft Corporation. All rights reserved.
5−// Licensed under the MIT License.
6−
7−package runtime
8−
9−import (
10− "net/http"
11−
12− "github.com/Azure/azure-sdk-for-go/sdk/azcore/internal/exported"
13−)
14−
15−// NewResponseError creates an *azcore.ResponseError from the provided HTTP response.
16−// Call this when a service request returns a non-successful status code.
17−// The error code will be extracted from the *http.Response, either from the x-ms-error-code
18−// header (preferred) or attempted to be parsed from the response body.
19−func NewResponseError(resp *http.Response) error {
20− return exported.NewResponseError(resp)
21−}
22−
23−// NewResponseErrorWithErrorCode creates an *azcore.ResponseError from the provided HTTP response and errorCode.
24−// Use this variant when the error code is in a non-standard location.
25−func NewResponseErrorWithErrorCode(resp *http.Response, errorCode string) error {
26− return exported.NewResponseErrorWithErrorCode(resp, errorCode)
27−}
vendor/github.com/Azure/azure-sdk-for-go/sdk/azcore/runtime/pager.godeleted−138
@@ -1,138 +0,0 @@
1−//go:build go1.18
2−// +build go1.18
3−
4−// Copyright (c) Microsoft Corporation. All rights reserved.
5−// Licensed under the MIT License.
6−
7−package runtime
8−
9−import (
10− "context"
11− "encoding/json"
12− "errors"
13− "fmt"
14− "net/http"
15− "reflect"
16−
17− "github.com/Azure/azure-sdk-for-go/sdk/azcore/policy"
18− "github.com/Azure/azure-sdk-for-go/sdk/azcore/tracing"
19−)
20−
21−// PagingHandler contains the required data for constructing a Pager.
22−type PagingHandler[T any] struct {
23− // More returns a boolean indicating if there are more pages to fetch.
24− // It uses the provided page to make the determination.
25− More func(T) bool
26−
27− // Fetcher fetches the first and subsequent pages.
28− Fetcher func(context.Context, *T) (T, error)
29−
30− // Tracer contains the Tracer from the client that's creating the Pager.
31− Tracer tracing.Tracer
32−}
33−
34−// Pager provides operations for iterating over paged responses.
35−// Methods on this type are not safe for concurrent use.
36−type Pager[T any] struct {
37− current *T
38− handler PagingHandler[T]
39− tracer tracing.Tracer
40− firstPage bool
41−}
42−
43−// NewPager creates an instance of Pager using the specified PagingHandler.
44−// Pass a non-nil T for firstPage if the first page has already been retrieved.
45−func NewPager[T any](handler PagingHandler[T]) *Pager[T] {
46− return &Pager[T]{
47− handler: handler,
48− tracer: handler.Tracer,
49− firstPage: true,
50− }
51−}
52−
53−// More returns true if there are more pages to retrieve.
54−func (p *Pager[T]) More() bool {
55− if p.current != nil {
56− return p.handler.More(*p.current)
57− }
58− return true
59−}
60−
61−// NextPage advances the pager to the next page.
62−func (p *Pager[T]) NextPage(ctx context.Context) (T, error) {
63− if p.current != nil {
64− if p.firstPage {
65− // we get here if it's an LRO-pager, we already have the first page
66− p.firstPage = false
67− return *p.current, nil
68− } else if !p.handler.More(*p.current) {
69− return *new(T), errors.New("no more pages")
70− }
71− } else {
72− // non-LRO case, first page
73− p.firstPage = false
74− }
75−
76− var err error
77− ctx, endSpan := StartSpan(ctx, fmt.Sprintf("%s.NextPage", shortenTypeName(reflect.TypeOf(*p).Name())), p.tracer, nil)
78− defer func() { endSpan(err) }()
79−
80− resp, err := p.handler.Fetcher(ctx, p.current)
81− if err != nil {
82− return *new(T), err
83− }
84− p.current = &resp
85− return *p.current, nil
86−}
87−
88−// UnmarshalJSON implements the json.Unmarshaler interface for Pager[T].
89−func (p *Pager[T]) UnmarshalJSON(data []byte) error {
90− return json.Unmarshal(data, &p.current)
91−}
92−
93−// FetcherForNextLinkOptions contains the optional values for [FetcherForNextLink].
94−type FetcherForNextLinkOptions struct {
95− // NextReq is the func to be called when requesting subsequent pages.
96− // Used for paged operations that have a custom next link operation.
97− NextReq func(context.Context, string) (*policy.Request, error)
98−
99− // StatusCodes contains additional HTTP status codes indicating success.
100− // The default value is http.StatusOK.
101− StatusCodes []int
102−}
103−
104−// FetcherForNextLink is a helper containing boilerplate code to simplify creating a PagingHandler[T].Fetcher from a next link URL.
105−// - ctx is the [context.Context] controlling the lifetime of the HTTP operation
106−// - pl is the [Pipeline] used to dispatch the HTTP request
107−// - nextLink is the URL used to fetch the next page. the empty string indicates the first page is to be requested
108−// - firstReq is the func to be called when creating the request for the first page
109−// - options contains any optional parameters, pass nil to accept the default values
110−func FetcherForNextLink(ctx context.Context, pl Pipeline, nextLink string, firstReq func(context.Context) (*policy.Request, error), options *FetcherForNextLinkOptions) (*http.Response, error) {
111− var req *policy.Request
112− var err error
113− if options == nil {
114− options = &FetcherForNextLinkOptions{}
115− }
116− if nextLink == "" {
117− req, err = firstReq(ctx)
118− } else if nextLink, err = EncodeQueryParams(nextLink); err == nil {
119− if options.NextReq != nil {
120− req, err = options.NextReq(ctx, nextLink)
121− } else {
122− req, err = NewRequest(ctx, http.MethodGet, nextLink)
123− }
124− }
125− if err != nil {
126− return nil, err
127− }
128− resp, err := pl.Do(req)
129− if err != nil {
130− return nil, err
131− }
132− successCodes := []int{http.StatusOK}
133− successCodes = append(successCodes, options.StatusCodes...)
134− if !HasStatusCode(resp, successCodes...) {
135− return nil, NewResponseError(resp)
136− }
137− return resp, nil
138−}
vendor/github.com/Azure/azure-sdk-for-go/sdk/azcore/runtime/pipeline.godeleted−94
@@ -1,94 +0,0 @@
1−//go:build go1.18
2−// +build go1.18
3−
4−// Copyright (c) Microsoft Corporation. All rights reserved.
5−// Licensed under the MIT License.
6−
7−package runtime
8−
9−import (
10− "github.com/Azure/azure-sdk-for-go/sdk/azcore/internal/exported"
11− "github.com/Azure/azure-sdk-for-go/sdk/azcore/policy"
12−)
13−
14−// PipelineOptions contains Pipeline options for SDK developers
15−type PipelineOptions struct {
16− // AllowedHeaders is the slice of headers to log with their values intact.
17− // All headers not in the slice will have their values REDACTED.
18− // Applies to request and response headers.
19− AllowedHeaders []string
20−
21− // AllowedQueryParameters is the slice of query parameters to log with their values intact.
22− // All query parameters not in the slice will have their values REDACTED.
23− AllowedQueryParameters []string
24−
25− // APIVersion overrides the default version requested of the service.
26− // Set with caution as this package version has not been tested with arbitrary service versions.
27− APIVersion APIVersionOptions
28−
29− // PerCall contains custom policies to inject into the pipeline.
30− // Each policy is executed once per request.
31− PerCall []policy.Policy
32−
33− // PerRetry contains custom policies to inject into the pipeline.
34− // Each policy is executed once per request, and for each retry of that request.
35− PerRetry []policy.Policy
36−
37− // Tracing contains options used to configure distributed tracing.
38− Tracing TracingOptions
39−}
40−
41−// TracingOptions contains tracing options for SDK developers.
42−type TracingOptions struct {
43− // Namespace contains the value to use for the az.namespace span attribute.
44− Namespace string
45−}
46−
47−// Pipeline represents a primitive for sending HTTP requests and receiving responses.
48−// Its behavior can be extended by specifying policies during construction.
49−type Pipeline = exported.Pipeline
50−
51−// NewPipeline creates a pipeline from connection options, with any additional policies as specified.
52−// Policies from ClientOptions are placed after policies from PipelineOptions.
53−// The module and version parameters are used by the telemetry policy, when enabled.
54−func NewPipeline(module, version string, plOpts PipelineOptions, options *policy.ClientOptions) Pipeline {
55− cp := policy.ClientOptions{}
56− if options != nil {
57− cp = *options
58− }
59− if len(plOpts.AllowedHeaders) > 0 {
60− headers := make([]string, len(plOpts.AllowedHeaders)+len(cp.Logging.AllowedHeaders))
61− copy(headers, plOpts.AllowedHeaders)
62− headers = append(headers, cp.Logging.AllowedHeaders...)
63− cp.Logging.AllowedHeaders = headers
64− }
65− if len(plOpts.AllowedQueryParameters) > 0 {
66− qp := make([]string, len(plOpts.AllowedQueryParameters)+len(cp.Logging.AllowedQueryParams))
67− copy(qp, plOpts.AllowedQueryParameters)
68− qp = append(qp, cp.Logging.AllowedQueryParams...)
69− cp.Logging.AllowedQueryParams = qp
70− }
71− // we put the includeResponsePolicy at the very beginning so that the raw response
72− // is populated with the final response (some policies might mutate the response)
73− policies := []policy.Policy{exported.PolicyFunc(includeResponsePolicy)}
74− if cp.APIVersion != "" {
75− policies = append(policies, newAPIVersionPolicy(cp.APIVersion, &plOpts.APIVersion))
76− }
77− if !cp.Telemetry.Disabled {
78− policies = append(policies, NewTelemetryPolicy(module, version, &cp.Telemetry))
79− }
80− policies = append(policies, plOpts.PerCall...)
81− policies = append(policies, cp.PerCallPolicies...)
82− policies = append(policies, NewRetryPolicy(&cp.Retry))
83− policies = append(policies, plOpts.PerRetry...)
84− policies = append(policies, cp.PerRetryPolicies...)
85− policies = append(policies, exported.PolicyFunc(httpHeaderPolicy))
86− policies = append(policies, newHTTPTracePolicy(cp.Logging.AllowedQueryParams))
87− policies = append(policies, NewLogPolicy(&cp.Logging))
88− policies = append(policies, exported.PolicyFunc(bodyDownloadPolicy))
89− transport := cp.Transport
90− if transport == nil {
91− transport = defaultHTTPClient
92− }
93− return exported.NewPipeline(transport, policies...)
94−}
vendor/github.com/Azure/azure-sdk-for-go/sdk/azcore/runtime/policy_api_version.godeleted−75
@@ -1,75 +0,0 @@
1−//go:build go1.18
2−// +build go1.18
3−
4−// Copyright (c) Microsoft Corporation. All rights reserved.
5−// Licensed under the MIT License.
6−
7−package runtime
8−
9−import (
10− "errors"
11− "fmt"
12− "net/http"
13−
14− "github.com/Azure/azure-sdk-for-go/sdk/azcore/policy"
15−)
16−
17−// APIVersionOptions contains options for API versions
18−type APIVersionOptions struct {
19− // Location indicates where to set the version on a request, for example in a header or query param
20− Location APIVersionLocation
21− // Name is the name of the header or query parameter, for example "api-version"
22− Name string
23−}
24−
25−// APIVersionLocation indicates which part of a request identifies the service version
26−type APIVersionLocation int
27−
28−const (
29− // APIVersionLocationQueryParam indicates a query parameter
30− APIVersionLocationQueryParam = 0
31− // APIVersionLocationHeader indicates a header
32− APIVersionLocationHeader = 1
33−)
34−
35−// newAPIVersionPolicy constructs an APIVersionPolicy. If version is "", Do will be a no-op. If version
36−// isn't empty and opts.Name is empty, Do will return an error.
37−func newAPIVersionPolicy(version string, opts *APIVersionOptions) *apiVersionPolicy {
38− if opts == nil {
39− opts = &APIVersionOptions{}
40− }
41− return &apiVersionPolicy{location: opts.Location, name: opts.Name, version: version}
42−}
43−
44−// apiVersionPolicy enables users to set the API version of every request a client sends.
45−type apiVersionPolicy struct {
46− // location indicates whether "name" refers to a query parameter or header.
47− location APIVersionLocation
48−
49− // name of the query param or header whose value should be overridden; provided by the client.
50− name string
51−
52− // version is the value (provided by the user) that replaces the default version value.
53− version string
54−}
55−
56−// Do sets the request's API version, if the policy is configured to do so, replacing any prior value.
57−func (a *apiVersionPolicy) Do(req *policy.Request) (*http.Response, error) {
58− if a.version != "" {
59− if a.name == "" {
60− // user set ClientOptions.APIVersion but the client ctor didn't set PipelineOptions.APIVersionOptions
61− return nil, errors.New("this client doesn't support overriding its API version")
62− }
63− switch a.location {
64− case APIVersionLocationHeader:
65− req.Raw().Header.Set(a.name, a.version)
66− case APIVersionLocationQueryParam:
67− q := req.Raw().URL.Query()
68− q.Set(a.name, a.version)
69− req.Raw().URL.RawQuery = q.Encode()
70− default:
71− return nil, fmt.Errorf("unknown APIVersionLocation %d", a.location)
72− }
73− }
74− return req.Next()
75−}
vendor/github.com/Azure/azure-sdk-for-go/sdk/azcore/runtime/policy_bearer_token.godeleted−236
@@ -1,236 +0,0 @@
1−// Copyright (c) Microsoft Corporation. All rights reserved.
2−// Licensed under the MIT License.
3−
4−package runtime
5−
6−import (
7− "encoding/base64"
8− "errors"
9− "net/http"
10− "regexp"
11− "strings"
12− "sync"
13− "time"
14−
15− "github.com/Azure/azure-sdk-for-go/sdk/azcore/internal/exported"
16− "github.com/Azure/azure-sdk-for-go/sdk/azcore/internal/shared"
17− "github.com/Azure/azure-sdk-for-go/sdk/azcore/policy"
18− "github.com/Azure/azure-sdk-for-go/sdk/internal/errorinfo"
19− "github.com/Azure/azure-sdk-for-go/sdk/internal/temporal"
20−)
21−
22−// BearerTokenPolicy authorizes requests with bearer tokens acquired from a TokenCredential.
23−// It handles [Continuous Access Evaluation] (CAE) challenges. Clients needing to handle
24−// additional authentication challenges, or needing more control over authorization, should
25−// provide a [policy.AuthorizationHandler] in [policy.BearerTokenOptions].
26−//
27−// [Continuous Access Evaluation]: https://learn.microsoft.com/entra/identity/conditional-access/concept-continuous-access-evaluation
28−type BearerTokenPolicy struct {
29− // mainResource is the resource to be retreived using the tenant specified in the credential
30− mainResource *temporal.Resource[exported.AccessToken, acquiringResourceState]
31− // the following fields are read-only
32− authzHandler policy.AuthorizationHandler
33− cred exported.TokenCredential
34− scopes []string
35− allowHTTP bool
36−}
37−
38−type acquiringResourceState struct {
39− req *policy.Request
40− p *BearerTokenPolicy
41− tro policy.TokenRequestOptions
42−}
43−
44−// acquire acquires or updates the resource; only one
45−// thread/goroutine at a time ever calls this function
46−func acquire(state acquiringResourceState) (newResource exported.AccessToken, newExpiration time.Time, err error) {
47− tk, err := state.p.cred.GetToken(&shared.ContextWithDeniedValues{Context: state.req.Raw().Context()}, state.tro)
48− if err != nil {
49− return exported.AccessToken{}, time.Time{}, err
50− }
51− return tk, tk.ExpiresOn, nil
52−}
53−
54−// NewBearerTokenPolicy creates a policy object that authorizes requests with bearer tokens.
55−// cred: an azcore.TokenCredential implementation such as a credential object from azidentity
56−// scopes: the list of permission scopes required for the token.
57−// opts: optional settings. Pass nil to accept default values; this is the same as passing a zero-value options.
58−func NewBearerTokenPolicy(cred exported.TokenCredential, scopes []string, opts *policy.BearerTokenOptions) *BearerTokenPolicy {
59− if opts == nil {
60− opts = &policy.BearerTokenOptions{}
61− }
62− ah := opts.AuthorizationHandler
63− if ah.OnRequest == nil {
64− // Set a default OnRequest that simply requests a token with the given scopes. OnChallenge
65− // doesn't get a default so the policy can use a nil check to determine whether the caller
66− // provided an implementation.
67− ah.OnRequest = func(_ *policy.Request, authNZ func(policy.TokenRequestOptions) error) error {
68− // authNZ sets EnableCAE: true in all cases, no need to duplicate that here
69− return authNZ(policy.TokenRequestOptions{Scopes: scopes})
70− }
71− }
72− return &BearerTokenPolicy{
73− authzHandler: ah,
74− cred: cred,
75− scopes: scopes,
76− mainResource: temporal.NewResource(acquire),
77− allowHTTP: opts.InsecureAllowCredentialWithHTTP,
78− }
79−}
80−
81−// authenticateAndAuthorize returns a function which authorizes req with a token from the policy's credential
82−func (b *BearerTokenPolicy) authenticateAndAuthorize(req *policy.Request) func(policy.TokenRequestOptions) error {
83− return func(tro policy.TokenRequestOptions) error {
84− tro.EnableCAE = true
85− as := acquiringResourceState{p: b, req: req, tro: tro}
86− tk, err := b.mainResource.Get(as)
87− if err != nil {
88− return err
89− }
90− req.Raw().Header.Set(shared.HeaderAuthorization, shared.BearerTokenPrefix+tk.Token)
91− return nil
92− }
93−}
94−
95−// Do authorizes a request with a bearer token
96−func (b *BearerTokenPolicy) Do(req *policy.Request) (*http.Response, error) {
97− // skip adding the authorization header if no TokenCredential was provided.
98− // this prevents a panic that might be hard to diagnose and allows testing
99− // against http endpoints that don't require authentication.
100− if b.cred == nil {
101− return req.Next()
102− }
103−
104− if err := checkHTTPSForAuth(req, b.allowHTTP); err != nil {
105− return nil, err
106− }
107−
108− err := b.authzHandler.OnRequest(req, b.authenticateAndAuthorize(req))
109− if err != nil {
110− return nil, errorinfo.NonRetriableError(err)
111− }
112−
113− res, err := req.Next()
114− if err != nil {
115− return nil, err
116− }
117−
118− res, err = b.handleChallenge(req, res, false)
119− return res, err
120−}
121−
122−// handleChallenge handles authentication challenges either directly (for CAE challenges) or by calling
123−// the AuthorizationHandler. It's a no-op when the response doesn't include an authentication challenge.
124−// It will recurse at most once, to handle a CAE challenge following a non-CAE challenge handled by the
125−// AuthorizationHandler.
126−func (b *BearerTokenPolicy) handleChallenge(req *policy.Request, res *http.Response, recursed bool) (*http.Response, error) {
127− var err error
128− if res.StatusCode == http.StatusUnauthorized {
129− b.mainResource.Expire()
130− if res.Header.Get(shared.HeaderWWWAuthenticate) != "" {
131− caeChallenge, parseErr := parseCAEChallenge(res)
132− if parseErr != nil {
133− return res, parseErr
134− }
135− switch {
136− case caeChallenge != nil:
137− authNZ := func(tro policy.TokenRequestOptions) error {
138− // Take the TokenRequestOptions provided by OnRequest and add the challenge claims. The value
139− // will be empty at time of writing because CAE is the only feature involving claims. If in
140− // the future some client needs to specify unrelated claims, this function may need to merge
141− // them with the challenge claims.
142− tro.Claims = caeChallenge.params["claims"]
143− return b.authenticateAndAuthorize(req)(tro)
144− }
145− if err = b.authzHandler.OnRequest(req, authNZ); err == nil {
146− if err = req.RewindBody(); err == nil {
147− res, err = req.Next()
148− }
149− }
150− case b.authzHandler.OnChallenge != nil && !recursed:
151− if err = b.authzHandler.OnChallenge(req, res, b.authenticateAndAuthorize(req)); err == nil {
152− if err = req.RewindBody(); err == nil {
153− if res, err = req.Next(); err == nil {
154− res, err = b.handleChallenge(req, res, true)
155− }
156− }
157− } else {
158− // don't retry challenge handling errors
159− err = errorinfo.NonRetriableError(err)
160− }
161− default:
162− // return the response to the pipeline
163− }
164− }
165− }
166− return res, err
167−}
168−
169−func checkHTTPSForAuth(req *policy.Request, allowHTTP bool) error {
170− if strings.ToLower(req.Raw().URL.Scheme) != "https" && !allowHTTP {
171− return errorinfo.NonRetriableError(errors.New("authenticated requests are not permitted for non TLS protected (https) endpoints"))
172− }
173− return nil
174−}
175−
176−// parseCAEChallenge returns a *authChallenge representing Response's CAE challenge (nil when Response has none).
177−// If Response includes a CAE challenge having invalid claims, it returns a NonRetriableError.
178−func parseCAEChallenge(res *http.Response) (*authChallenge, error) {
179− var (
180− caeChallenge *authChallenge
181− err error
182− )
183− for _, c := range parseChallenges(res) {
184− if c.scheme == "Bearer" {
185− if claims := c.params["claims"]; claims != "" && c.params["error"] == "insufficient_claims" {
186− if b, de := base64.StdEncoding.DecodeString(claims); de == nil {
187− c.params["claims"] = string(b)
188− caeChallenge = &c
189− } else {
190− // don't include the decoding error because it's something
191− // unhelpful like "illegal base64 data at input byte 42"
192− err = errorinfo.NonRetriableError(errors.New("authentication challenge contains invalid claims: " + claims))
193− }
194− break
195− }
196− }
197− }
198− return caeChallenge, err
199−}
200−
201−var (
202− challenge, challengeParams *regexp.Regexp
203− once = &sync.Once{}
204−)
205−
206−type authChallenge struct {
207− scheme string
208− params map[string]string
209−}
210−
211−// parseChallenges assumes authentication challenges have quoted parameter values
212−func parseChallenges(res *http.Response) []authChallenge {
213− once.Do(func() {
214− // matches challenges having quoted parameters, capturing scheme and parameters
215− challenge = regexp.MustCompile(`(?:(\w+) ((?:\w+="[^"]*",?\s*)+))`)
216− // captures parameter names and values in a match of the above expression
217− challengeParams = regexp.MustCompile(`(\w+)="([^"]*)"`)
218− })
219− parsed := []authChallenge{}
220− // WWW-Authenticate can have multiple values, each containing multiple challenges
221− for _, h := range res.Header.Values(shared.HeaderWWWAuthenticate) {
222− for _, sm := range challenge.FindAllStringSubmatch(h, -1) {
223− // sm is [challenge, scheme, params] (see regexp documentation on submatches)
224− c := authChallenge{
225− params: make(map[string]string),
226− scheme: sm[1],
227− }
228− for _, sm := range challengeParams.FindAllStringSubmatch(sm[2], -1) {
229− // sm is [key="value", key, value] (see regexp documentation on submatches)
230− c.params[sm[1]] = sm[2]
231− }
232− parsed = append(parsed, c)
233− }
234− }
235− return parsed
236−}
vendor/github.com/Azure/azure-sdk-for-go/sdk/azcore/runtime/policy_body_download.godeleted−72
@@ -1,72 +0,0 @@
1−//go:build go1.18
2−// +build go1.18
3−
4−// Copyright (c) Microsoft Corporation. All rights reserved.
5−// Licensed under the MIT License.
6−
7−package runtime
8−
9−import (
10− "fmt"
11− "net/http"
12− "strings"
13−
14− "github.com/Azure/azure-sdk-for-go/sdk/azcore/policy"
15− "github.com/Azure/azure-sdk-for-go/sdk/internal/errorinfo"
16−)
17−
18−// bodyDownloadPolicy creates a policy object that downloads the response's body to a []byte.
19−func bodyDownloadPolicy(req *policy.Request) (*http.Response, error) {
20− resp, err := req.Next()
21− if err != nil {
22− return resp, err
23− }
24− var opValues bodyDownloadPolicyOpValues
25− // don't skip downloading error response bodies
26− if req.OperationValue(&opValues); opValues.Skip && resp.StatusCode < 400 {
27− return resp, err
28− }
29− // Either bodyDownloadPolicyOpValues was not specified (so skip is false)
30− // or it was specified and skip is false: don't skip downloading the body
31− _, err = Payload(resp)
32− if err != nil {
33− return resp, newBodyDownloadError(err, req)
34− }
35− return resp, err
36−}
37−
38−// bodyDownloadPolicyOpValues is the struct containing the per-operation values
39−type bodyDownloadPolicyOpValues struct {
40− Skip bool
41−}
42−
43−type bodyDownloadError struct {
44− err error
45−}
46−
47−func newBodyDownloadError(err error, req *policy.Request) error {
48− // on failure, only retry the request for idempotent operations.
49− // we currently identify them as DELETE, GET, and PUT requests.
50− if m := strings.ToUpper(req.Raw().Method); m == http.MethodDelete || m == http.MethodGet || m == http.MethodPut {
51− // error is safe for retry
52− return err
53− }
54− // wrap error to avoid retries
55− return &bodyDownloadError{
56− err: err,
57− }
58−}
59−
60−func (b *bodyDownloadError) Error() string {
61− return fmt.Sprintf("body download policy: %s", b.err.Error())
62−}
63−
64−func (b *bodyDownloadError) NonRetriable() {
65− // marker method
66−}
67−
68−func (b *bodyDownloadError) Unwrap() error {
69− return b.err
70−}
71−
72−var _ errorinfo.NonRetriable = (*bodyDownloadError)(nil)
vendor/github.com/Azure/azure-sdk-for-go/sdk/azcore/runtime/policy_http_header.godeleted−40
@@ -1,40 +0,0 @@
1−//go:build go1.18
2−// +build go1.18
3−
4−// Copyright (c) Microsoft Corporation. All rights reserved.
5−// Licensed under the MIT License.
6−
7−package runtime
8−
9−import (
10− "context"
11− "net/http"
12−
13− "github.com/Azure/azure-sdk-for-go/sdk/azcore/internal/shared"
14− "github.com/Azure/azure-sdk-for-go/sdk/azcore/policy"
15−)
16−
17−// newHTTPHeaderPolicy creates a policy object that adds custom HTTP headers to a request
18−func httpHeaderPolicy(req *policy.Request) (*http.Response, error) {
19− // check if any custom HTTP headers have been specified
20− if header := req.Raw().Context().Value(shared.CtxWithHTTPHeaderKey{}); header != nil {
21− for k, v := range header.(http.Header) {
22− // use Set to replace any existing value
23− // it also canonicalizes the header key
24− req.Raw().Header.Set(k, v[0])
25− // add any remaining values
26− for i := 1; i < len(v); i++ {
27− req.Raw().Header.Add(k, v[i])
28− }
29− }
30− }
31− return req.Next()
32−}
33−
34−// WithHTTPHeader adds the specified http.Header to the parent context.
35−// Use this to specify custom HTTP headers at the API-call level.
36−// Any overlapping headers will have their values replaced with the values specified here.
37−// Deprecated: use [policy.WithHTTPHeader] instead.
38−func WithHTTPHeader(parent context.Context, header http.Header) context.Context {
39− return policy.WithHTTPHeader(parent, header)
40−}
vendor/github.com/Azure/azure-sdk-for-go/sdk/azcore/runtime/policy_http_trace.godeleted−154
@@ -1,154 +0,0 @@
1−//go:build go1.18
2−// +build go1.18
3−
4−// Copyright (c) Microsoft Corporation. All rights reserved.
5−// Licensed under the MIT License.
6−
7−package runtime
8−
9−import (
10− "context"
11− "errors"
12− "fmt"
13− "net/http"
14− "net/url"
15− "strings"
16−
17− "github.com/Azure/azure-sdk-for-go/sdk/azcore/internal/exported"
18− "github.com/Azure/azure-sdk-for-go/sdk/azcore/internal/shared"
19− "github.com/Azure/azure-sdk-for-go/sdk/azcore/policy"
20− "github.com/Azure/azure-sdk-for-go/sdk/azcore/tracing"
21−)
22−
23−const (
24− attrHTTPMethod = "http.method"
25− attrHTTPURL = "http.url"
26− attrHTTPUserAgent = "http.user_agent"
27− attrHTTPStatusCode = "http.status_code"
28−
29− attrAZClientReqID = "az.client_request_id"
30− attrAZServiceReqID = "az.service_request_id"
31−
32− attrNetPeerName = "net.peer.name"
33−)
34−
35−// newHTTPTracePolicy creates a new instance of the httpTracePolicy.
36−// - allowedQueryParams contains the user-specified query parameters that don't need to be redacted from the trace
37−func newHTTPTracePolicy(allowedQueryParams []string) exported.Policy {
38− return &httpTracePolicy{allowedQP: getAllowedQueryParams(allowedQueryParams)}
39−}
40−
41−// httpTracePolicy is a policy that creates a trace for the HTTP request and its response
42−type httpTracePolicy struct {
43− allowedQP map[string]struct{}
44−}
45−
46−// Do implements the pipeline.Policy interfaces for the httpTracePolicy type.
47−func (h *httpTracePolicy) Do(req *policy.Request) (resp *http.Response, err error) {
48− rawTracer := req.Raw().Context().Value(shared.CtxWithTracingTracer{})
49− if tracer, ok := rawTracer.(tracing.Tracer); ok && tracer.Enabled() {
50− attributes := []tracing.Attribute{
51− {Key: attrHTTPMethod, Value: req.Raw().Method},
52− {Key: attrHTTPURL, Value: getSanitizedURL(*req.Raw().URL, h.allowedQP)},
53− {Key: attrNetPeerName, Value: req.Raw().URL.Host},
54− }
55−
56− if ua := req.Raw().Header.Get(shared.HeaderUserAgent); ua != "" {
57− attributes = append(attributes, tracing.Attribute{Key: attrHTTPUserAgent, Value: ua})
58− }
59− if reqID := req.Raw().Header.Get(shared.HeaderXMSClientRequestID); reqID != "" {
60− attributes = append(attributes, tracing.Attribute{Key: attrAZClientReqID, Value: reqID})
61− }
62−
63− ctx := req.Raw().Context()
64− ctx, span := tracer.Start(ctx, "HTTP "+req.Raw().Method, &tracing.SpanOptions{
65− Kind: tracing.SpanKindClient,
66− Attributes: attributes,
67− })
68−
69− defer func() {
70− if resp != nil {
71− span.SetAttributes(tracing.Attribute{Key: attrHTTPStatusCode, Value: resp.StatusCode})
72− if resp.StatusCode > 399 {
73− span.SetStatus(tracing.SpanStatusError, resp.Status)
74− }
75− if reqID := resp.Header.Get(shared.HeaderXMSRequestID); reqID != "" {
76− span.SetAttributes(tracing.Attribute{Key: attrAZServiceReqID, Value: reqID})
77− }
78− } else if err != nil {
79− var urlErr *url.Error
80− if errors.As(err, &urlErr) {
81− // calling *url.Error.Error() will include the unsanitized URL
82− // which we don't want. in addition, we already have the HTTP verb
83− // and sanitized URL in the trace so we aren't losing any info
84− err = urlErr.Err
85− }
86− span.SetStatus(tracing.SpanStatusError, err.Error())
87− }
88− span.End()
89− }()
90−
91− req = req.WithContext(ctx)
92− }
93− resp, err = req.Next()
94− return
95−}
96−
97−// StartSpanOptions contains the optional values for StartSpan.
98−type StartSpanOptions struct {
99− // Kind indicates the kind of Span.
100− Kind tracing.SpanKind
101− // Attributes contains key-value pairs of attributes for the span.
102− Attributes []tracing.Attribute
103−}
104−
105−// StartSpan starts a new tracing span.
106−// You must call the returned func to terminate the span. Pass the applicable error
107−// if the span will exit with an error condition.
108−// - ctx is the parent context of the newly created context
109−// - name is the name of the span. this is typically the fully qualified name of an API ("Client.Method")
110−// - tracer is the client's Tracer for creating spans
111−// - options contains optional values. pass nil to accept any default values
112−func StartSpan(ctx context.Context, name string, tracer tracing.Tracer, options *StartSpanOptions) (context.Context, func(error)) {
113− if !tracer.Enabled() {
114− return ctx, func(err error) {}
115− }
116−
117− // we MUST propagate the active tracer before returning so that the trace policy can access it
118− ctx = context.WithValue(ctx, shared.CtxWithTracingTracer{}, tracer)
119−
120− if activeSpan := ctx.Value(ctxActiveSpan{}); activeSpan != nil {
121− // per the design guidelines, if a SDK method Foo() calls SDK method Bar(),
122− // then the span for Bar() must be suppressed. however, if Bar() makes a REST
123− // call, then Bar's HTTP span must be a child of Foo's span.
124− // however, there is an exception to this rule. if the SDK method Foo() is a
125− // messaging producer/consumer, and it takes a callback that's a SDK method
126− // Bar(), then the span for Bar() must _not_ be suppressed.
127− if kind := activeSpan.(tracing.SpanKind); kind == tracing.SpanKindClient || kind == tracing.SpanKindInternal {
128− return ctx, func(err error) {}
129− }
130− }
131−
132− if options == nil {
133− options = &StartSpanOptions{}
134− }
135− if options.Kind == 0 {
136− options.Kind = tracing.SpanKindInternal
137− }
138−
139− ctx, span := tracer.Start(ctx, name, &tracing.SpanOptions{
140− Kind: options.Kind,
141− Attributes: options.Attributes,
142− })
143− ctx = context.WithValue(ctx, ctxActiveSpan{}, options.Kind)
144− return ctx, func(err error) {
145− if err != nil {
146− errType := strings.Replace(fmt.Sprintf("%T", err), "*exported.", "*azcore.", 1)
147− span.SetStatus(tracing.SpanStatusError, fmt.Sprintf("%s:\n%s", errType, err.Error()))
148− }
149− span.End()
150− }
151−}
152−
153−// ctxActiveSpan is used as a context key for indicating a SDK client span is in progress.
154−type ctxActiveSpan struct{}
vendor/github.com/Azure/azure-sdk-for-go/sdk/azcore/runtime/policy_include_response.godeleted−35
@@ -1,35 +0,0 @@
1−//go:build go1.16
2−// +build go1.16
3−
4−// Copyright (c) Microsoft Corporation. All rights reserved.
5−// Licensed under the MIT License.
6−
7−package runtime
8−
9−import (
10− "context"
11− "net/http"
12−
13− "github.com/Azure/azure-sdk-for-go/sdk/azcore/internal/shared"
14− "github.com/Azure/azure-sdk-for-go/sdk/azcore/policy"
15−)
16−
17−// includeResponsePolicy creates a policy that retrieves the raw HTTP response upon request
18−func includeResponsePolicy(req *policy.Request) (*http.Response, error) {
19− resp, err := req.Next()
20− if resp == nil {
21− return resp, err
22− }
23− if httpOutRaw := req.Raw().Context().Value(shared.CtxWithCaptureResponse{}); httpOutRaw != nil {
24− httpOut := httpOutRaw.(**http.Response)
25− *httpOut = resp
26− }
27− return resp, err
28−}
29−
30−// WithCaptureResponse applies the HTTP response retrieval annotation to the parent context.
31−// The resp parameter will contain the HTTP response after the request has completed.
32−// Deprecated: use [policy.WithCaptureResponse] instead.
33−func WithCaptureResponse(parent context.Context, resp **http.Response) context.Context {
34− return policy.WithCaptureResponse(parent, resp)
35−}
vendor/github.com/Azure/azure-sdk-for-go/sdk/azcore/runtime/policy_key_credential.godeleted−64
@@ -1,64 +0,0 @@
1−// Copyright (c) Microsoft Corporation. All rights reserved.
2−// Licensed under the MIT License.
3−
4−package runtime
5−
6−import (
7− "net/http"
8−
9− "github.com/Azure/azure-sdk-for-go/sdk/azcore/internal/exported"
10− "github.com/Azure/azure-sdk-for-go/sdk/azcore/policy"
11−)
12−
13−// KeyCredentialPolicy authorizes requests with a [azcore.KeyCredential].
14−type KeyCredentialPolicy struct {
15− cred *exported.KeyCredential
16− header string
17− prefix string
18− allowHTTP bool
19−}
20−
21−// KeyCredentialPolicyOptions contains the optional values configuring [KeyCredentialPolicy].
22−type KeyCredentialPolicyOptions struct {
23− // InsecureAllowCredentialWithHTTP enables authenticated requests over HTTP.
24− // By default, authenticated requests to an HTTP endpoint are rejected by the client.
25− // WARNING: setting this to true will allow sending the authentication key in clear text. Use with caution.
26− InsecureAllowCredentialWithHTTP bool
27−
28− // Prefix is used if the key requires a prefix before it's inserted into the HTTP request.
29− Prefix string
30−}
31−
32−// NewKeyCredentialPolicy creates a new instance of [KeyCredentialPolicy].
33−// - cred is the [azcore.KeyCredential] used to authenticate with the service
34−// - header is the name of the HTTP request header in which the key is placed
35−// - options contains optional configuration, pass nil to accept the default values
36−func NewKeyCredentialPolicy(cred *exported.KeyCredential, header string, options *KeyCredentialPolicyOptions) *KeyCredentialPolicy {
37− if options == nil {
38− options = &KeyCredentialPolicyOptions{}
39− }
40− return &KeyCredentialPolicy{
41− cred: cred,
42− header: header,
43− prefix: options.Prefix,
44− allowHTTP: options.InsecureAllowCredentialWithHTTP,
45− }
46−}
47−
48−// Do implementes the Do method on the [policy.Polilcy] interface.
49−func (k *KeyCredentialPolicy) Do(req *policy.Request) (*http.Response, error) {
50− // skip adding the authorization header if no KeyCredential was provided.
51− // this prevents a panic that might be hard to diagnose and allows testing
52− // against http endpoints that don't require authentication.
53− if k.cred != nil {
54− if err := checkHTTPSForAuth(req, k.allowHTTP); err != nil {
55− return nil, err
56− }
57− val := exported.KeyCredentialGet(k.cred)
58− if k.prefix != "" {
59− val = k.prefix + val
60− }
61− req.Raw().Header.Add(k.header, val)
62− }
63− return req.Next()
64−}
vendor/github.com/Azure/azure-sdk-for-go/sdk/azcore/runtime/policy_logging.godeleted−264
@@ -1,264 +0,0 @@
1−//go:build go1.18
2−// +build go1.18
3−
4−// Copyright (c) Microsoft Corporation. All rights reserved.
5−// Licensed under the MIT License.
6−
7−package runtime
8−
9−import (
10− "bytes"
11− "fmt"
12− "io"
13− "net/http"
14− "net/url"
15− "sort"
16− "strings"
17− "time"
18−
19− "github.com/Azure/azure-sdk-for-go/sdk/azcore/internal/log"
20− "github.com/Azure/azure-sdk-for-go/sdk/azcore/internal/shared"
21− "github.com/Azure/azure-sdk-for-go/sdk/azcore/policy"
22− "github.com/Azure/azure-sdk-for-go/sdk/internal/diag"
23−)
24−
25−type logPolicy struct {
26− includeBody bool
27− allowedHeaders map[string]struct{}
28− allowedQP map[string]struct{}
29−}
30−
31−// NewLogPolicy creates a request/response logging policy object configured using the specified options.
32−// Pass nil to accept the default values; this is the same as passing a zero-value options.
33−func NewLogPolicy(o *policy.LogOptions) policy.Policy {
34− if o == nil {
35− o = &policy.LogOptions{}
36− }
37− // construct default hash set of allowed headers
38− allowedHeaders := map[string]struct{}{
39− "accept": {},
40− "cache-control": {},
41− "connection": {},
42− "content-length": {},
43− "content-type": {},
44− "date": {},
45− "etag": {},
46− "expires": {},
47− "if-match": {},
48− "if-modified-since": {},
49− "if-none-match": {},
50− "if-unmodified-since": {},
51− "last-modified": {},
52− "ms-cv": {},
53− "pragma": {},
54− "request-id": {},
55− "retry-after": {},
56− "server": {},
57− "traceparent": {},
58− "transfer-encoding": {},
59− "user-agent": {},
60− "www-authenticate": {},
61− "x-ms-request-id": {},
62− "x-ms-client-request-id": {},
63− "x-ms-return-client-request-id": {},
64− }
65− // add any caller-specified allowed headers to the set
66− for _, ah := range o.AllowedHeaders {
67− allowedHeaders[strings.ToLower(ah)] = struct{}{}
68− }
69− // now do the same thing for query params
70− allowedQP := getAllowedQueryParams(o.AllowedQueryParams)
71− return &logPolicy{
72− includeBody: o.IncludeBody,
73− allowedHeaders: allowedHeaders,
74− allowedQP: allowedQP,
75− }
76−}
77−
78−// getAllowedQueryParams merges the default set of allowed query parameters
79−// with a custom set (usually comes from client options).
80−func getAllowedQueryParams(customAllowedQP []string) map[string]struct{} {
81− allowedQP := map[string]struct{}{
82− "api-version": {},
83− }
84− for _, qp := range customAllowedQP {
85− allowedQP[strings.ToLower(qp)] = struct{}{}
86− }
87− return allowedQP
88−}
89−
90−// logPolicyOpValues is the struct containing the per-operation values
91−type logPolicyOpValues struct {
92− try int32
93− start time.Time
94−}
95−
96−func (p *logPolicy) Do(req *policy.Request) (*http.Response, error) {
97− // Get the per-operation values. These are saved in the Message's map so that they persist across each retry calling into this policy object.
98− var opValues logPolicyOpValues
99− if req.OperationValue(&opValues); opValues.start.IsZero() {
100− opValues.start = time.Now() // If this is the 1st try, record this operation's start time
101− }
102− opValues.try++ // The first try is #1 (not #0)
103− req.SetOperationValue(opValues)
104−
105− // Log the outgoing request as informational
106− if log.Should(log.EventRequest) {
107− b := &bytes.Buffer{}
108− fmt.Fprintf(b, "==> OUTGOING REQUEST (Try=%d)\n", opValues.try)
109− p.writeRequestWithResponse(b, req, nil, nil)
110− var err error
111− if p.includeBody {
112− err = writeReqBody(req, b)
113− }
114− log.Write(log.EventRequest, b.String())
115− if err != nil {
116− return nil, err
117− }
118− }
119−
120− // Set the time for this particular retry operation and then Do the operation.
121− tryStart := time.Now()
122− response, err := req.Next() // Make the request
123− tryEnd := time.Now()
124− tryDuration := tryEnd.Sub(tryStart)
125− opDuration := tryEnd.Sub(opValues.start)
126−
127− if log.Should(log.EventResponse) {
128− // We're going to log this; build the string to log
129− b := &bytes.Buffer{}
130− fmt.Fprintf(b, "==> REQUEST/RESPONSE (Try=%d/%v, OpTime=%v) -- ", opValues.try, tryDuration, opDuration)
131− if err != nil { // This HTTP request did not get a response from the service
132− fmt.Fprint(b, "REQUEST ERROR\n")
133− } else {
134− fmt.Fprint(b, "RESPONSE RECEIVED\n")
135− }
136−
137− p.writeRequestWithResponse(b, req, response, err)
138− if err != nil {
139− // skip frames runtime.Callers() and runtime.StackTrace()
140− b.WriteString(diag.StackTrace(2, 32))
141− } else if p.includeBody {
142− err = writeRespBody(response, b)
143− }
144− log.Write(log.EventResponse, b.String())
145− }
146− return response, err
147−}
148−
149−const redactedValue = "REDACTED"
150−
151−// getSanitizedURL returns a sanitized string for the provided url.URL
152−func getSanitizedURL(u url.URL, allowedQueryParams map[string]struct{}) string {
153− // redact applicable query params
154− qp := u.Query()
155− for k := range qp {
156− if _, ok := allowedQueryParams[strings.ToLower(k)]; !ok {
157− qp.Set(k, redactedValue)
158− }
159− }
160− u.RawQuery = qp.Encode()
161− return u.String()
162−}
163−
164−// writeRequestWithResponse appends a formatted HTTP request into a Buffer. If request and/or err are
165−// not nil, then these are also written into the Buffer.
166−func (p *logPolicy) writeRequestWithResponse(b *bytes.Buffer, req *policy.Request, resp *http.Response, err error) {
167− // Write the request into the buffer.
168− fmt.Fprint(b, " "+req.Raw().Method+" "+getSanitizedURL(*req.Raw().URL, p.allowedQP)+"\n")
169− p.writeHeader(b, req.Raw().Header)
170− if resp != nil {
171− fmt.Fprintln(b, " --------------------------------------------------------------------------------")
172− fmt.Fprint(b, " RESPONSE Status: "+resp.Status+"\n")
173− p.writeHeader(b, resp.Header)
174− }
175− if err != nil {
176− fmt.Fprintln(b, " --------------------------------------------------------------------------------")
177− fmt.Fprint(b, " ERROR:\n"+err.Error()+"\n")
178− }
179−}
180−
181−// formatHeaders appends an HTTP request's or response's header into a Buffer.
182−func (p *logPolicy) writeHeader(b *bytes.Buffer, header http.Header) {
183− if len(header) == 0 {
184− b.WriteString(" (no headers)\n")
185− return
186− }
187− keys := make([]string, 0, len(header))
188− // Alphabetize the headers
189− for k := range header {
190− keys = append(keys, k)
191− }
192− sort.Strings(keys)
193− for _, k := range keys {
194− // don't use Get() as it will canonicalize k which might cause a mismatch
195− value := header[k][0]
196− // redact all header values not in the allow-list
197− if _, ok := p.allowedHeaders[strings.ToLower(k)]; !ok {
198− value = redactedValue
199− }
200− fmt.Fprintf(b, " %s: %+v\n", k, value)
201− }
202−}
203−
204−// returns true if the request/response body should be logged.
205−// this is determined by looking at the content-type header value.
206−func shouldLogBody(b *bytes.Buffer, contentType string) bool {
207− contentType = strings.ToLower(contentType)
208− if strings.HasPrefix(contentType, "text") ||
209− strings.Contains(contentType, "json") ||
210− strings.Contains(contentType, "xml") {
211− return true
212− }
213− fmt.Fprintf(b, " Skip logging body for %s\n", contentType)
214− return false
215−}
216−
217−// writes to a buffer, used for logging purposes
218−func writeReqBody(req *policy.Request, b *bytes.Buffer) error {
219− if req.Raw().Body == nil {
220− fmt.Fprint(b, " Request contained no body\n")
221− return nil
222− }
223− if ct := req.Raw().Header.Get(shared.HeaderContentType); !shouldLogBody(b, ct) {
224− return nil
225− }
226− body, err := io.ReadAll(req.Raw().Body)
227− if err != nil {
228− fmt.Fprintf(b, " Failed to read request body: %s\n", err.Error())
229− return err
230− }
231− if err := req.RewindBody(); err != nil {
232− return err
233− }
234− logBody(b, body)
235− return nil
236−}
237−
238−// writes to a buffer, used for logging purposes
239−func writeRespBody(resp *http.Response, b *bytes.Buffer) error {
240− ct := resp.Header.Get(shared.HeaderContentType)
241− if ct == "" {
242− fmt.Fprint(b, " Response contained no body\n")
243− return nil
244− } else if !shouldLogBody(b, ct) {
245− return nil
246− }
247− body, err := Payload(resp)
248− if err != nil {
249− fmt.Fprintf(b, " Failed to read response body: %s\n", err.Error())
250− return err
251− }
252− if len(body) > 0 {
253− logBody(b, body)
254− } else {
255− fmt.Fprint(b, " Response contained no body\n")
256− }
257− return nil
258−}
259−
260−func logBody(b *bytes.Buffer, body []byte) {
261− fmt.Fprintln(b, " --------------------------------------------------------------------------------")
262− fmt.Fprintln(b, string(body))
263− fmt.Fprintln(b, " --------------------------------------------------------------------------------")
264−}
vendor/github.com/Azure/azure-sdk-for-go/sdk/azcore/runtime/policy_request_id.godeleted−34
@@ -1,34 +0,0 @@
1−//go:build go1.18
2−// +build go1.18
3−
4−// Copyright (c) Microsoft Corporation. All rights reserved.
5−// Licensed under the MIT License.
6−
7−package runtime
8−
9−import (
10− "net/http"
11−
12− "github.com/Azure/azure-sdk-for-go/sdk/azcore/internal/shared"
13− "github.com/Azure/azure-sdk-for-go/sdk/azcore/policy"
14− "github.com/Azure/azure-sdk-for-go/sdk/internal/uuid"
15−)
16−
17−type requestIDPolicy struct{}
18−
19−// NewRequestIDPolicy returns a policy that add the x-ms-client-request-id header
20−func NewRequestIDPolicy() policy.Policy {
21− return &requestIDPolicy{}
22−}
23−
24−func (r *requestIDPolicy) Do(req *policy.Request) (*http.Response, error) {
25− if req.Raw().Header.Get(shared.HeaderXMSClientRequestID) == "" {
26− id, err := uuid.New()
27− if err != nil {
28− return nil, err
29− }
30− req.Raw().Header.Set(shared.HeaderXMSClientRequestID, id.String())
31− }
32−
33− return req.Next()
34−}
vendor/github.com/Azure/azure-sdk-for-go/sdk/azcore/runtime/policy_retry.godeleted−276
@@ -1,276 +0,0 @@
1−//go:build go1.18
2−// +build go1.18
3−
4−// Copyright (c) Microsoft Corporation. All rights reserved.
5−// Licensed under the MIT License.
6−
7−package runtime
8−
9−import (
10− "context"
11− "errors"
12− "io"
13− "math"
14− "math/rand"
15− "net/http"
16− "time"
17−
18− "github.com/Azure/azure-sdk-for-go/sdk/azcore/internal/log"
19− "github.com/Azure/azure-sdk-for-go/sdk/azcore/internal/shared"
20− "github.com/Azure/azure-sdk-for-go/sdk/azcore/policy"
21− "github.com/Azure/azure-sdk-for-go/sdk/internal/errorinfo"
22− "github.com/Azure/azure-sdk-for-go/sdk/internal/exported"
23−)
24−
25−const (
26− defaultMaxRetries = 3
27−)
28−
29−func setDefaults(o *policy.RetryOptions) {
30− if o.MaxRetries == 0 {
31− o.MaxRetries = defaultMaxRetries
32− } else if o.MaxRetries < 0 {
33− o.MaxRetries = 0
34− }
35−
36− // SDK guidelines specify the default MaxRetryDelay is 60 seconds
37− if o.MaxRetryDelay == 0 {
38− o.MaxRetryDelay = 60 * time.Second
39− } else if o.MaxRetryDelay < 0 {
40− // not really an unlimited cap, but sufficiently large enough to be considered as such
41− o.MaxRetryDelay = math.MaxInt64
42− }
43− if o.RetryDelay == 0 {
44− o.RetryDelay = 800 * time.Millisecond
45− } else if o.RetryDelay < 0 {
46− o.RetryDelay = 0
47− }
48− if o.StatusCodes == nil {
49− // NOTE: if you change this list, you MUST update the docs in policy/policy.go
50− o.StatusCodes = []int{
51− http.StatusRequestTimeout, // 408
52− http.StatusTooManyRequests, // 429
53− http.StatusInternalServerError, // 500
54− http.StatusBadGateway, // 502
55− http.StatusServiceUnavailable, // 503
56− http.StatusGatewayTimeout, // 504
57− }
58− }
59−}
60−
61−func calcDelay(o policy.RetryOptions, try int32) time.Duration { // try is >=1; never 0
62− // avoid overflow when shifting left
63− factor := time.Duration(math.MaxInt64)
64− if try < 63 {
65− factor = time.Duration(int64(1<<try) - 1)
66− }
67−
68− delay := factor * o.RetryDelay
69− if delay < factor {
70− // overflow has happened so set to max value
71− delay = time.Duration(math.MaxInt64)
72− }
73−
74− // Introduce jitter: [0.0, 1.0) / 2 = [0.0, 0.5) + 0.8 = [0.8, 1.3)
75− jitterMultiplier := rand.Float64()/2 + 0.8 // NOTE: We want math/rand; not crypto/rand
76−
77− delayFloat := float64(delay) * jitterMultiplier
78− if delayFloat > float64(math.MaxInt64) {
79− // the jitter pushed us over MaxInt64, so just use MaxInt64
80− delay = time.Duration(math.MaxInt64)
81− } else {
82− delay = time.Duration(delayFloat)
83− }
84−
85− if delay > o.MaxRetryDelay { // MaxRetryDelay is backfilled with non-negative value
86− delay = o.MaxRetryDelay
87− }
88−
89− return delay
90−}
91−
92−// NewRetryPolicy creates a policy object configured using the specified options.
93−// Pass nil to accept the default values; this is the same as passing a zero-value options.
94−func NewRetryPolicy(o *policy.RetryOptions) policy.Policy {
95− if o == nil {
96− o = &policy.RetryOptions{}
97− }
98− p := &retryPolicy{options: *o}
99− return p
100−}
101−
102−type retryPolicy struct {
103− options policy.RetryOptions
104−}
105−
106−func (p *retryPolicy) Do(req *policy.Request) (resp *http.Response, err error) {
107− options := p.options
108− // check if the retry options have been overridden for this call
109− if override := req.Raw().Context().Value(shared.CtxWithRetryOptionsKey{}); override != nil {
110− options = override.(policy.RetryOptions)
111− }
112− setDefaults(&options)
113− // Exponential retry algorithm: ((2 ^ attempt) - 1) * delay * random(0.8, 1.2)
114− // When to retry: connection failure or temporary/timeout.
115− var rwbody *retryableRequestBody
116− if req.Body() != nil {
117− // wrap the body so we control when it's actually closed.
118− // do this outside the for loop so defers don't accumulate.
119− rwbody = &retryableRequestBody{body: req.Body()}
120− defer rwbody.realClose()
121− }
122− try := int32(1)
123− for {
124− resp = nil // reset
125− // unfortunately we don't have access to the custom allow-list of query params, so we'll redact everything but the default allowed QPs
126− log.Writef(log.EventRetryPolicy, "=====> Try=%d for %s %s", try, req.Raw().Method, getSanitizedURL(*req.Raw().URL, getAllowedQueryParams(nil)))
127−
128− // For each try, seek to the beginning of the Body stream. We do this even for the 1st try because
129− // the stream may not be at offset 0 when we first get it and we want the same behavior for the
130− // 1st try as for additional tries.
131− err = req.RewindBody()
132− if err != nil {
133− return
134− }
135− // RewindBody() restores Raw().Body to its original state, so set our rewindable after
136− if rwbody != nil {
137− req.Raw().Body = rwbody
138− }
139−
140− if options.TryTimeout == 0 {
141− clone := req.Clone(req.Raw().Context())
142− resp, err = clone.Next()
143− } else {
144− // Set the per-try time for this particular retry operation and then Do the operation.
145− tryCtx, tryCancel := context.WithTimeout(req.Raw().Context(), options.TryTimeout)
146− clone := req.Clone(tryCtx)
147− resp, err = clone.Next() // Make the request
148− // if the body was already downloaded or there was an error it's safe to cancel the context now
149− if err != nil {
150− tryCancel()
151− } else if exported.PayloadDownloaded(resp) {
152− tryCancel()
153− } else {
154− // must cancel the context after the body has been read and closed
155− resp.Body = &contextCancelReadCloser{cf: tryCancel, body: resp.Body}
156− }
157− }
158− if err == nil {
159− log.Writef(log.EventRetryPolicy, "response %d", resp.StatusCode)
160− } else {
161− log.Writef(log.EventRetryPolicy, "error %v", err)
162− }
163−
164− if ctxErr := req.Raw().Context().Err(); ctxErr != nil {
165− // don't retry if the parent context has been cancelled or its deadline exceeded
166− err = ctxErr
167− log.Writef(log.EventRetryPolicy, "abort due to %v", err)
168− return
169− }
170−
171− // check if the error is not retriable
172− var nre errorinfo.NonRetriable
173− if errors.As(err, &nre) {
174− // the error says it's not retriable so don't retry
175− log.Writef(log.EventRetryPolicy, "non-retriable error %T", nre)
176− return
177− }
178−
179− if options.ShouldRetry != nil {
180− // a non-nil ShouldRetry overrides our HTTP status code check
181− if !options.ShouldRetry(resp, err) {
182− // predicate says we shouldn't retry
183− log.Write(log.EventRetryPolicy, "exit due to ShouldRetry")
184− return
185− }
186− } else if err == nil && !HasStatusCode(resp, options.StatusCodes...) {
187− // if there is no error and the response code isn't in the list of retry codes then we're done.
188− log.Write(log.EventRetryPolicy, "exit due to non-retriable status code")
189− return
190− }
191−
192− if try == options.MaxRetries+1 {
193− // max number of tries has been reached, don't sleep again
194− log.Writef(log.EventRetryPolicy, "MaxRetries %d exceeded", options.MaxRetries)
195− return
196− }
197−
198− // use the delay from retry-after if available
199− delay := shared.RetryAfter(resp)
200− if delay <= 0 {
201− delay = calcDelay(options, try)
202− } else if delay > options.MaxRetryDelay {
203− // the retry-after delay exceeds the the cap so don't retry
204− log.Writef(log.EventRetryPolicy, "Retry-After delay %s exceeds MaxRetryDelay of %s", delay, options.MaxRetryDelay)
205− return
206− }
207−
208− // drain before retrying so nothing is leaked
209− Drain(resp)
210−
211− log.Writef(log.EventRetryPolicy, "End Try #%d, Delay=%v", try, delay)
212− select {
213− case <-time.After(delay):
214− try++
215− case <-req.Raw().Context().Done():
216− err = req.Raw().Context().Err()
217− log.Writef(log.EventRetryPolicy, "abort due to %v", err)
218− return
219− }
220− }
221−}
222−
223−// WithRetryOptions adds the specified RetryOptions to the parent context.
224−// Use this to specify custom RetryOptions at the API-call level.
225−// Deprecated: use [policy.WithRetryOptions] instead.
226−func WithRetryOptions(parent context.Context, options policy.RetryOptions) context.Context {
227− return policy.WithRetryOptions(parent, options)
228−}
229−
230−// ********** The following type/methods implement the retryableRequestBody (a ReadSeekCloser)
231−
232−// This struct is used when sending a body to the network
233−type retryableRequestBody struct {
234− body io.ReadSeeker // Seeking is required to support retries
235−}
236−
237−// Read reads a block of data from an inner stream and reports progress
238−func (b *retryableRequestBody) Read(p []byte) (n int, err error) {
239− return b.body.Read(p)
240−}
241−
242−func (b *retryableRequestBody) Seek(offset int64, whence int) (offsetFromStart int64, err error) {
243− return b.body.Seek(offset, whence)
244−}
245−
246−func (b *retryableRequestBody) Close() error {
247− // We don't want the underlying transport to close the request body on transient failures so this is a nop.
248− // The retry policy closes the request body upon success.
249− return nil
250−}
251−
252−func (b *retryableRequestBody) realClose() error {
253− if c, ok := b.body.(io.Closer); ok {
254− return c.Close()
255− }
256− return nil
257−}
258−
259−// ********** The following type/methods implement the contextCancelReadCloser
260−
261−// contextCancelReadCloser combines an io.ReadCloser with a cancel func.
262−// it ensures the cancel func is invoked once the body has been read and closed.
263−type contextCancelReadCloser struct {
264− cf context.CancelFunc
265− body io.ReadCloser
266−}
267−
268−func (rc *contextCancelReadCloser) Read(p []byte) (n int, err error) {
269− return rc.body.Read(p)
270−}
271−
272−func (rc *contextCancelReadCloser) Close() error {
273− err := rc.body.Close()
274− rc.cf()
275− return err
276−}
vendor/github.com/Azure/azure-sdk-for-go/sdk/azcore/runtime/policy_sas_credential.godeleted−55
@@ -1,55 +0,0 @@
1−// Copyright (c) Microsoft Corporation. All rights reserved.
2−// Licensed under the MIT License.
3−
4−package runtime
5−
6−import (
7− "net/http"
8−
9− "github.com/Azure/azure-sdk-for-go/sdk/azcore/internal/exported"
10− "github.com/Azure/azure-sdk-for-go/sdk/azcore/policy"
11−)
12−
13−// SASCredentialPolicy authorizes requests with a [azcore.SASCredential].
14−type SASCredentialPolicy struct {
15− cred *exported.SASCredential
16− header string
17− allowHTTP bool
18−}
19−
20−// SASCredentialPolicyOptions contains the optional values configuring [SASCredentialPolicy].
21−type SASCredentialPolicyOptions struct {
22− // InsecureAllowCredentialWithHTTP enables authenticated requests over HTTP.
23− // By default, authenticated requests to an HTTP endpoint are rejected by the client.
24− // WARNING: setting this to true will allow sending the authentication key in clear text. Use with caution.
25− InsecureAllowCredentialWithHTTP bool
26−}
27−
28−// NewSASCredentialPolicy creates a new instance of [SASCredentialPolicy].
29−// - cred is the [azcore.SASCredential] used to authenticate with the service
30−// - header is the name of the HTTP request header in which the shared access signature is placed
31−// - options contains optional configuration, pass nil to accept the default values
32−func NewSASCredentialPolicy(cred *exported.SASCredential, header string, options *SASCredentialPolicyOptions) *SASCredentialPolicy {
33− if options == nil {
34− options = &SASCredentialPolicyOptions{}
35− }
36− return &SASCredentialPolicy{
37− cred: cred,
38− header: header,
39− allowHTTP: options.InsecureAllowCredentialWithHTTP,
40− }
41−}
42−
43−// Do implementes the Do method on the [policy.Polilcy] interface.
44−func (k *SASCredentialPolicy) Do(req *policy.Request) (*http.Response, error) {
45− // skip adding the authorization header if no SASCredential was provided.
46− // this prevents a panic that might be hard to diagnose and allows testing
47− // against http endpoints that don't require authentication.
48− if k.cred != nil {
49− if err := checkHTTPSForAuth(req, k.allowHTTP); err != nil {
50− return nil, err
51− }
52− req.Raw().Header.Add(k.header, exported.SASCredentialGet(k.cred))
53− }
54− return req.Next()
55−}
vendor/github.com/Azure/azure-sdk-for-go/sdk/azcore/runtime/policy_telemetry.godeleted−83
@@ -1,83 +0,0 @@
1−//go:build go1.18
2−// +build go1.18
3−
4−// Copyright (c) Microsoft Corporation. All rights reserved.
5−// Licensed under the MIT License.
6−
7−package runtime
8−
9−import (
10− "bytes"
11− "fmt"
12− "net/http"
13− "os"
14− "runtime"
15− "strings"
16−
17− "github.com/Azure/azure-sdk-for-go/sdk/azcore/internal/shared"
18− "github.com/Azure/azure-sdk-for-go/sdk/azcore/policy"
19−)
20−
21−type telemetryPolicy struct {
22− telemetryValue string
23−}
24−
25−// NewTelemetryPolicy creates a telemetry policy object that adds telemetry information to outgoing HTTP requests.
26−// The format is [<application_id> ]azsdk-go-<mod>/<ver> <platform_info>.
27−// Pass nil to accept the default values; this is the same as passing a zero-value options.
28−func NewTelemetryPolicy(mod, ver string, o *policy.TelemetryOptions) policy.Policy {
29− if o == nil {
30− o = &policy.TelemetryOptions{}
31− }
32− tp := telemetryPolicy{}
33− if o.Disabled {
34− return &tp
35− }
36− b := &bytes.Buffer{}
37− // normalize ApplicationID
38− if o.ApplicationID != "" {
39− o.ApplicationID = strings.ReplaceAll(o.ApplicationID, " ", "/")
40− if len(o.ApplicationID) > 24 {
41− o.ApplicationID = o.ApplicationID[:24]
42− }
43− b.WriteString(o.ApplicationID)
44− b.WriteRune(' ')
45− }
46− // mod might be the fully qualified name. in that case, we just want the package name
47− if i := strings.LastIndex(mod, "/"); i > -1 {
48− mod = mod[i+1:]
49− }
50− b.WriteString(formatTelemetry(mod, ver))
51− b.WriteRune(' ')
52− b.WriteString(platformInfo)
53− tp.telemetryValue = b.String()
54− return &tp
55−}
56−
57−func formatTelemetry(comp, ver string) string {
58− return fmt.Sprintf("azsdk-go-%s/%s", comp, ver)
59−}
60−
61−func (p telemetryPolicy) Do(req *policy.Request) (*http.Response, error) {
62− if p.telemetryValue == "" {
63− return req.Next()
64− }
65− // preserve the existing User-Agent string
66− if ua := req.Raw().Header.Get(shared.HeaderUserAgent); ua != "" {
67− p.telemetryValue = fmt.Sprintf("%s %s", p.telemetryValue, ua)
68− }
69− req.Raw().Header.Set(shared.HeaderUserAgent, p.telemetryValue)
70− return req.Next()
71−}
72−
73−// NOTE: the ONLY function that should write to this variable is this func
74−var platformInfo = func() string {
75− operatingSystem := runtime.GOOS // Default OS string
76− switch operatingSystem {
77− case "windows":
78− operatingSystem = os.Getenv("OS") // Get more specific OS information
79− case "linux": // accept default OS info
80− case "freebsd": // accept default OS info
81− }
82− return fmt.Sprintf("(%s; %s)", runtime.Version(), operatingSystem)
83−}()
vendor/github.com/Azure/azure-sdk-for-go/sdk/azcore/runtime/poller.godeleted−396
@@ -1,396 +0,0 @@
1−//go:build go1.18
2−// +build go1.18
3−
4−// Copyright (c) Microsoft Corporation. All rights reserved.
5−// Licensed under the MIT License.
6−
7−package runtime
8−
9−import (
10− "context"
11− "encoding/json"
12− "errors"
13− "flag"
14− "fmt"
15− "net/http"
16− "reflect"
17− "strings"
18− "time"
19−
20− "github.com/Azure/azure-sdk-for-go/sdk/azcore/internal/exported"
21− "github.com/Azure/azure-sdk-for-go/sdk/azcore/internal/log"
22− "github.com/Azure/azure-sdk-for-go/sdk/azcore/internal/pollers"
23− "github.com/Azure/azure-sdk-for-go/sdk/azcore/internal/pollers/async"
24− "github.com/Azure/azure-sdk-for-go/sdk/azcore/internal/pollers/body"
25− "github.com/Azure/azure-sdk-for-go/sdk/azcore/internal/pollers/fake"
26− "github.com/Azure/azure-sdk-for-go/sdk/azcore/internal/pollers/loc"
27− "github.com/Azure/azure-sdk-for-go/sdk/azcore/internal/pollers/op"
28− "github.com/Azure/azure-sdk-for-go/sdk/azcore/internal/shared"
29− "github.com/Azure/azure-sdk-for-go/sdk/azcore/tracing"
30− "github.com/Azure/azure-sdk-for-go/sdk/internal/poller"
31−)
32−
33−// FinalStateVia is the enumerated type for the possible final-state-via values.
34−type FinalStateVia = pollers.FinalStateVia
35−
36−const (
37− // FinalStateViaAzureAsyncOp indicates the final payload comes from the Azure-AsyncOperation URL.
38− FinalStateViaAzureAsyncOp = pollers.FinalStateViaAzureAsyncOp
39−
40− // FinalStateViaLocation indicates the final payload comes from the Location URL.
41− FinalStateViaLocation = pollers.FinalStateViaLocation
42−
43− // FinalStateViaOriginalURI indicates the final payload comes from the original URL.
44− FinalStateViaOriginalURI = pollers.FinalStateViaOriginalURI
45−
46− // FinalStateViaOpLocation indicates the final payload comes from the Operation-Location URL.
47− FinalStateViaOpLocation = pollers.FinalStateViaOpLocation
48−)
49−
50−// NewPollerOptions contains the optional parameters for NewPoller.
51−type NewPollerOptions[T any] struct {
52− // FinalStateVia contains the final-state-via value for the LRO.
53− // NOTE: used only for Azure-AsyncOperation and Operation-Location LROs.
54− FinalStateVia FinalStateVia
55−
56− // OperationLocationResultPath contains the JSON path to the result's
57− // payload when it's included with the terminal success response.
58− // NOTE: only used for Operation-Location LROs.
59− OperationLocationResultPath string
60−
61− // Response contains a preconstructed response type.
62− // The final payload will be unmarshaled into it and returned.
63− Response *T
64−
65− // Handler[T] contains a custom polling implementation.
66− Handler PollingHandler[T]
67−
68− // Tracer contains the Tracer from the client that's creating the Poller.
69− Tracer tracing.Tracer
70−}
71−
72−// NewPoller creates a Poller based on the provided initial response.
73−func NewPoller[T any](resp *http.Response, pl exported.Pipeline, options *NewPollerOptions[T]) (*Poller[T], error) {
74− if options == nil {
75− options = &NewPollerOptions[T]{}
76− }
77− result := options.Response
78− if result == nil {
79− result = new(T)
80− }
81− if options.Handler != nil {
82− return &Poller[T]{
83− op: options.Handler,
84− resp: resp,
85− result: result,
86− tracer: options.Tracer,
87− }, nil
88− }
89−
90− defer resp.Body.Close()
91− // this is a back-stop in case the swagger is incorrect (i.e. missing one or more status codes for success).
92− // ideally the codegen should return an error if the initial response failed and not even create a poller.
93− if !poller.StatusCodeValid(resp) {
94− return nil, errors.New("the operation failed or was cancelled")
95− }
96−
97− // determine the polling method
98− var opr PollingHandler[T]
99− var err error
100− if fake.Applicable(resp) {
101− opr, err = fake.New[T](pl, resp)
102− } else if async.Applicable(resp) {
103− // async poller must be checked first as it can also have a location header
104− opr, err = async.New[T](pl, resp, options.FinalStateVia)
105− } else if op.Applicable(resp) {
106− // op poller must be checked before loc as it can also have a location header
107− opr, err = op.New[T](pl, resp, options.FinalStateVia, options.OperationLocationResultPath)
108− } else if loc.Applicable(resp) {
109− opr, err = loc.New[T](pl, resp)
110− } else if body.Applicable(resp) {
111− // must test body poller last as it's a subset of the other pollers.
112− // TODO: this is ambiguous for PATCH/PUT if it returns a 200 with no polling headers (sync completion)
113− opr, err = body.New[T](pl, resp)
114− } else if m := resp.Request.Method; resp.StatusCode == http.StatusAccepted && (m == http.MethodDelete || m == http.MethodPost) {
115− // if we get here it means we have a 202 with no polling headers.
116− // for DELETE and POST this is a hard error per ARM RPC spec.
117− return nil, errors.New("response is missing polling URL")
118− } else {
119− opr, err = pollers.NewNopPoller[T](resp)
120− }
121−
122− if err != nil {
123− return nil, err
124− }
125− return &Poller[T]{
126− op: opr,
127− resp: resp,
128− result: result,
129− tracer: options.Tracer,
130− }, nil
131−}
132−
133−// NewPollerFromResumeTokenOptions contains the optional parameters for NewPollerFromResumeToken.
134−type NewPollerFromResumeTokenOptions[T any] struct {
135− // Response contains a preconstructed response type.
136− // The final payload will be unmarshaled into it and returned.
137− Response *T
138−
139− // Handler[T] contains a custom polling implementation.
140− Handler PollingHandler[T]
141−
142− // Tracer contains the Tracer from the client that's creating the Poller.
143− Tracer tracing.Tracer
144−}
145−
146−// NewPollerFromResumeToken creates a Poller from a resume token string.
147−func NewPollerFromResumeToken[T any](token string, pl exported.Pipeline, options *NewPollerFromResumeTokenOptions[T]) (*Poller[T], error) {
148− if options == nil {
149− options = &NewPollerFromResumeTokenOptions[T]{}
150− }
151− result := options.Response
152− if result == nil {
153− result = new(T)
154− }
155−
156− if err := pollers.IsTokenValid[T](token); err != nil {
157− return nil, err
158− }
159− raw, err := pollers.ExtractToken(token)
160− if err != nil {
161− return nil, err
162− }
163− var asJSON map[string]any
164− if err := json.Unmarshal(raw, &asJSON); err != nil {
165− return nil, err
166− }
167−
168− opr := options.Handler
169− // now rehydrate the poller based on the encoded poller type
170− if fake.CanResume(asJSON) {
171− opr, _ = fake.New[T](pl, nil)
172− } else if opr != nil {
173− log.Writef(log.EventLRO, "Resuming custom poller %T.", opr)
174− } else if async.CanResume(asJSON) {
175− opr, _ = async.New[T](pl, nil, "")
176− } else if body.CanResume(asJSON) {
177− opr, _ = body.New[T](pl, nil)
178− } else if loc.CanResume(asJSON) {
179− opr, _ = loc.New[T](pl, nil)
180− } else if op.CanResume(asJSON) {
181− opr, _ = op.New[T](pl, nil, "", "")
182− } else {
183− return nil, fmt.Errorf("unhandled poller token %s", string(raw))
184− }
185− if err := json.Unmarshal(raw, &opr); err != nil {
186− return nil, err
187− }
188− return &Poller[T]{
189− op: opr,
190− result: result,
191− tracer: options.Tracer,
192− }, nil
193−}
194−
195−// PollingHandler[T] abstracts the differences among poller implementations.
196−type PollingHandler[T any] interface {
197− // Done returns true if the LRO has reached a terminal state.
198− Done() bool
199−
200− // Poll fetches the latest state of the LRO.
201− Poll(context.Context) (*http.Response, error)
202−
203− // Result is called once the LRO has reached a terminal state. It populates the out parameter
204− // with the result of the operation.
205− Result(ctx context.Context, out *T) error
206−}
207−
208−// Poller encapsulates a long-running operation, providing polling facilities until the operation reaches a terminal state.
209−// Methods on this type are not safe for concurrent use.
210−type Poller[T any] struct {
211− op PollingHandler[T]
212− resp *http.Response
213− err error
214− result *T
215− tracer tracing.Tracer
216− done bool
217−}
218−
219−// PollUntilDoneOptions contains the optional values for the Poller[T].PollUntilDone() method.
220−type PollUntilDoneOptions struct {
221− // Frequency is the time to wait between polling intervals in absence of a Retry-After header. Allowed minimum is one second.
222− // Pass zero to accept the default value (30s).
223− Frequency time.Duration
224−}
225−
226−// PollUntilDone will poll the service endpoint until a terminal state is reached, an error is received, or the context expires.
227−// It internally uses Poll(), Done(), and Result() in its polling loop, sleeping for the specified duration between intervals.
228−// options: pass nil to accept the default values.
229−// NOTE: the default polling frequency is 30 seconds which works well for most operations. However, some operations might
230−// benefit from a shorter or longer duration.
231−func (p *Poller[T]) PollUntilDone(ctx context.Context, options *PollUntilDoneOptions) (res T, err error) {
232− if options == nil {
233− options = &PollUntilDoneOptions{}
234− }
235− cp := *options
236− if cp.Frequency == 0 {
237− cp.Frequency = 30 * time.Second
238− }
239−
240− ctx, endSpan := StartSpan(ctx, fmt.Sprintf("%s.PollUntilDone", shortenTypeName(reflect.TypeOf(*p).Name())), p.tracer, nil)
241− defer func() { endSpan(err) }()
242−
243− // skip the floor check when executing tests so they don't take so long
244− if isTest := flag.Lookup("test.v"); isTest == nil && cp.Frequency < time.Second {
245− err = errors.New("polling frequency minimum is one second")
246− return
247− }
248−
249− start := time.Now()
250− logPollUntilDoneExit := func(v any) {
251− log.Writef(log.EventLRO, "END PollUntilDone() for %T: %v, total time: %s", p.op, v, time.Since(start))
252− }
253− log.Writef(log.EventLRO, "BEGIN PollUntilDone() for %T", p.op)
254− if p.resp != nil {
255− // initial check for a retry-after header existing on the initial response
256− if retryAfter := shared.RetryAfter(p.resp); retryAfter > 0 {
257− log.Writef(log.EventLRO, "initial Retry-After delay for %s", retryAfter.String())
258− if err = shared.Delay(ctx, retryAfter); err != nil {
259− logPollUntilDoneExit(err)
260− return
261− }
262− }
263− }
264− // begin polling the endpoint until a terminal state is reached
265− for {
266− var resp *http.Response
267− resp, err = p.Poll(ctx)
268− if err != nil {
269− logPollUntilDoneExit(err)
270− return
271− }
272− if p.Done() {
273− logPollUntilDoneExit("succeeded")
274− res, err = p.Result(ctx)
275− return
276− }
277− d := cp.Frequency
278− if retryAfter := shared.RetryAfter(resp); retryAfter > 0 {
279− log.Writef(log.EventLRO, "Retry-After delay for %s", retryAfter.String())
280− d = retryAfter
281− } else {
282− log.Writef(log.EventLRO, "delay for %s", d.String())
283− }
284− if err = shared.Delay(ctx, d); err != nil {
285− logPollUntilDoneExit(err)
286− return
287− }
288− }
289−}
290−
291−// Poll fetches the latest state of the LRO. It returns an HTTP response or error.
292−// If Poll succeeds, the poller's state is updated and the HTTP response is returned.
293−// If Poll fails, the poller's state is unmodified and the error is returned.
294−// Calling Poll on an LRO that has reached a terminal state will return the last HTTP response.
295−func (p *Poller[T]) Poll(ctx context.Context) (resp *http.Response, err error) {
296− if p.Done() {
297− // the LRO has reached a terminal state, don't poll again
298− resp = p.resp
299− return
300− }
301−
302− ctx, endSpan := StartSpan(ctx, fmt.Sprintf("%s.Poll", shortenTypeName(reflect.TypeOf(*p).Name())), p.tracer, nil)
303− defer func() { endSpan(err) }()
304−
305− resp, err = p.op.Poll(ctx)
306− if err != nil {
307− return
308− }
309− p.resp = resp
310− return
311−}
312−
313−// Done returns true if the LRO has reached a terminal state.
314−// Once a terminal state is reached, call Result().
315−func (p *Poller[T]) Done() bool {
316− return p.op.Done()
317−}
318−
319−// Result returns the result of the LRO and is meant to be used in conjunction with Poll and Done.
320−// If the LRO completed successfully, a populated instance of T is returned.
321−// If the LRO failed or was canceled, an *azcore.ResponseError error is returned.
322−// Calling this on an LRO in a non-terminal state will return an error.
323−func (p *Poller[T]) Result(ctx context.Context) (res T, err error) {
324− if !p.Done() {
325− err = errors.New("poller is in a non-terminal state")
326− return
327− }
328− if p.done {
329− // the result has already been retrieved, return the cached value
330− if p.err != nil {
331− err = p.err
332− return
333− }
334− res = *p.result
335− return
336− }
337−
338− ctx, endSpan := StartSpan(ctx, fmt.Sprintf("%s.Result", shortenTypeName(reflect.TypeOf(*p).Name())), p.tracer, nil)
339− defer func() { endSpan(err) }()
340−
341− err = p.op.Result(ctx, p.result)
342− var respErr *exported.ResponseError
343− if errors.As(err, &respErr) {
344− if pollers.IsNonTerminalHTTPStatusCode(respErr.RawResponse) {
345− // the request failed in a non-terminal way.
346− // don't cache the error or mark the Poller as done
347− return
348− }
349− // the LRO failed. record the error
350− p.err = err
351− } else if err != nil {
352− // the call to Result failed, don't cache anything in this case
353− return
354− }
355− p.done = true
356− if p.err != nil {
357− err = p.err
358− return
359− }
360− res = *p.result
361− return
362−}
363−
364−// ResumeToken returns a value representing the poller that can be used to resume
365−// the LRO at a later time. ResumeTokens are unique per service operation.
366−// The token's format should be considered opaque and is subject to change.
367−// Calling this on an LRO in a terminal state will return an error.
368−func (p *Poller[T]) ResumeToken() (string, error) {
369− if p.Done() {
370− return "", errors.New("poller is in a terminal state")
371− }
372− tk, err := pollers.NewResumeToken[T](p.op)
373− if err != nil {
374− return "", err
375− }
376− return tk, err
377−}
378−
379−// extracts the type name from the string returned from reflect.Value.Name()
380−func shortenTypeName(s string) string {
381− // the value is formatted as follows
382− // Poller[module/Package.Type].Method
383− // we want to shorten the generic type parameter string to Type
384− // anything we don't recognize will be left as-is
385− begin := strings.Index(s, "[")
386− end := strings.Index(s, "]")
387− if begin == -1 || end == -1 {
388− return s
389− }
390−
391− typeName := s[begin+1 : end]
392− if i := strings.LastIndex(typeName, "."); i > -1 {
393− typeName = typeName[i+1:]
394− }
395− return s[:begin+1] + typeName + s[end:]
396−}
vendor/github.com/Azure/azure-sdk-for-go/sdk/azcore/runtime/request.godeleted−281
@@ -1,281 +0,0 @@
1−//go:build go1.18
2−// +build go1.18
3−
4−// Copyright (c) Microsoft Corporation. All rights reserved.
5−// Licensed under the MIT License.
6−
7−package runtime
8−
9−import (
10− "bytes"
11− "context"
12− "encoding/json"
13− "encoding/xml"
14− "errors"
15− "fmt"
16− "io"
17− "mime/multipart"
18− "net/http"
19− "net/textproto"
20− "net/url"
21− "path"
22− "strings"
23−
24− "github.com/Azure/azure-sdk-for-go/sdk/azcore/internal/exported"
25− "github.com/Azure/azure-sdk-for-go/sdk/azcore/internal/shared"
26− "github.com/Azure/azure-sdk-for-go/sdk/azcore/policy"
27− "github.com/Azure/azure-sdk-for-go/sdk/azcore/streaming"
28− "github.com/Azure/azure-sdk-for-go/sdk/internal/uuid"
29−)
30−
31−// Base64Encoding is usesd to specify which base-64 encoder/decoder to use when
32−// encoding/decoding a slice of bytes to/from a string.
33−type Base64Encoding = exported.Base64Encoding
34−
35−const (
36− // Base64StdFormat uses base64.StdEncoding for encoding and decoding payloads.
37− Base64StdFormat Base64Encoding = exported.Base64StdFormat
38−
39− // Base64URLFormat uses base64.RawURLEncoding for encoding and decoding payloads.
40− Base64URLFormat Base64Encoding = exported.Base64URLFormat
41−)
42−
43−// NewRequest creates a new policy.Request with the specified input.
44−// The endpoint MUST be properly encoded before calling this function.
45−func NewRequest(ctx context.Context, httpMethod string, endpoint string) (*policy.Request, error) {
46− return exported.NewRequest(ctx, httpMethod, endpoint)
47−}
48−
49−// NewRequestFromRequest creates a new policy.Request with an existing *http.Request
50−func NewRequestFromRequest(req *http.Request) (*policy.Request, error) {
51− return exported.NewRequestFromRequest(req)
52−}
53−
54−// EncodeQueryParams will parse and encode any query parameters in the specified URL.
55−// Any semicolons will automatically be escaped.
56−func EncodeQueryParams(u string) (string, error) {
57− before, after, found := strings.Cut(u, "?")
58− if !found {
59− return u, nil
60− }
61− // starting in Go 1.17, url.ParseQuery will reject semicolons in query params.
62− // so, we must escape them first. note that this assumes that semicolons aren't
63− // being used as query param separators which is per the current RFC.
64− // for more info:
65− // https://github.com/golang/go/issues/25192
66− // https://github.com/golang/go/issues/50034
67− qp, err := url.ParseQuery(strings.ReplaceAll(after, ";", "%3B"))
68− if err != nil {
69− return "", err
70− }
71− return before + "?" + qp.Encode(), nil
72−}
73−
74−// JoinPaths concatenates multiple URL path segments into one path,
75−// inserting path separation characters as required. JoinPaths will preserve
76−// query parameters in the root path
77−func JoinPaths(root string, paths ...string) string {
78− if len(paths) == 0 {
79− return root
80− }
81−
82− qps := ""
83− if strings.Contains(root, "?") {
84− splitPath := strings.Split(root, "?")
85− root, qps = splitPath[0], splitPath[1]
86− }
87−
88− p := path.Join(paths...)
89− // path.Join will remove any trailing slashes.
90− // if one was provided, preserve it.
91− if strings.HasSuffix(paths[len(paths)-1], "/") && !strings.HasSuffix(p, "/") {
92− p += "/"
93− }
94−
95− if qps != "" {
96− p = p + "?" + qps
97− }
98−
99− if strings.HasSuffix(root, "/") && strings.HasPrefix(p, "/") {
100− root = root[:len(root)-1]
101− } else if !strings.HasSuffix(root, "/") && !strings.HasPrefix(p, "/") {
102− p = "/" + p
103− }
104− return root + p
105−}
106−
107−// EncodeByteArray will base-64 encode the byte slice v.
108−func EncodeByteArray(v []byte, format Base64Encoding) string {
109− return exported.EncodeByteArray(v, format)
110−}
111−
112−// MarshalAsByteArray will base-64 encode the byte slice v, then calls SetBody.
113−// The encoded value is treated as a JSON string.
114−func MarshalAsByteArray(req *policy.Request, v []byte, format Base64Encoding) error {
115− // send as a JSON string
116− encode := fmt.Sprintf("\"%s\"", EncodeByteArray(v, format))
117− // tsp generated code can set Content-Type so we must prefer that
118− return exported.SetBody(req, exported.NopCloser(strings.NewReader(encode)), shared.ContentTypeAppJSON, false)
119−}
120−
121−// MarshalAsJSON calls json.Marshal() to get the JSON encoding of v then calls SetBody.
122−func MarshalAsJSON(req *policy.Request, v any) error {
123− b, err := json.Marshal(v)
124− if err != nil {
125− return fmt.Errorf("error marshalling type %T: %s", v, err)
126− }
127− // tsp generated code can set Content-Type so we must prefer that
128− return exported.SetBody(req, exported.NopCloser(bytes.NewReader(b)), shared.ContentTypeAppJSON, false)
129−}
130−
131−// MarshalAsXML calls xml.Marshal() to get the XML encoding of v then calls SetBody.
132−func MarshalAsXML(req *policy.Request, v any) error {
133− b, err := xml.Marshal(v)
134− if err != nil {
135− return fmt.Errorf("error marshalling type %T: %s", v, err)
136− }
137− // inclue the XML header as some services require it
138− b = []byte(xml.Header + string(b))
139− return req.SetBody(exported.NopCloser(bytes.NewReader(b)), shared.ContentTypeAppXML)
140−}
141−
142−// SetMultipartFormData writes the specified keys/values as multi-part form fields with the specified value.
143−// File content must be specified as an [io.ReadSeekCloser] or [streaming.MultipartContent].
144−// Byte slices will be treated as JSON. All other values are treated as string values.
145−func SetMultipartFormData(req *policy.Request, formData map[string]any) error {
146− body := bytes.Buffer{}
147− writer := multipart.NewWriter(&body)
148−
149− writeContent := func(fieldname, filename string, src io.Reader) error {
150− fd, err := writer.CreateFormFile(fieldname, filename)
151− if err != nil {
152− return err
153− }
154− // copy the data to the form file
155− if _, err = io.Copy(fd, src); err != nil {
156− return err
157− }
158− return nil
159− }
160−
161− quoteEscaper := strings.NewReplacer("\\", "\\\\", `"`, "\\\"")
162−
163− writeMultipartContent := func(fieldname string, mpc streaming.MultipartContent) error {
164− if mpc.Body == nil {
165− return errors.New("streaming.MultipartContent.Body cannot be nil")
166− }
167−
168− // use fieldname for the file name when unspecified
169− filename := fieldname
170−
171− if mpc.ContentType == "" && mpc.Filename == "" {
172− return writeContent(fieldname, filename, mpc.Body)
173− }
174− if mpc.Filename != "" {
175− filename = mpc.Filename
176− }
177− // this is pretty much copied from multipart.Writer.CreateFormFile
178− // but lets us set the caller provided Content-Type and filename
179− h := make(textproto.MIMEHeader)
180− h.Set("Content-Disposition",
181− fmt.Sprintf(`form-data; name="%s"; filename="%s"`,
182− quoteEscaper.Replace(fieldname), quoteEscaper.Replace(filename)))
183− contentType := "application/octet-stream"
184− if mpc.ContentType != "" {
185− contentType = mpc.ContentType
186− }
187− h.Set("Content-Type", contentType)
188− fd, err := writer.CreatePart(h)
189− if err != nil {
190− return err
191− }
192− // copy the data to the form file
193− if _, err = io.Copy(fd, mpc.Body); err != nil {
194− return err
195− }
196− return nil
197− }
198−
199− // the same as multipart.Writer.WriteField but lets us specify the Content-Type
200− writeField := func(fieldname, contentType string, value string) error {
201− h := make(textproto.MIMEHeader)
202− h.Set("Content-Disposition",
203− fmt.Sprintf(`form-data; name="%s"`, quoteEscaper.Replace(fieldname)))
204− h.Set("Content-Type", contentType)
205− fd, err := writer.CreatePart(h)
206− if err != nil {
207− return err
208− }
209− if _, err = fd.Write([]byte(value)); err != nil {
210− return err
211− }
212− return nil
213− }
214−
215− for k, v := range formData {
216− if rsc, ok := v.(io.ReadSeekCloser); ok {
217− if err := writeContent(k, k, rsc); err != nil {
218− return err
219− }
220− continue
221− } else if rscs, ok := v.([]io.ReadSeekCloser); ok {
222− for _, rsc := range rscs {
223− if err := writeContent(k, k, rsc); err != nil {
224− return err
225− }
226− }
227− continue
228− } else if mpc, ok := v.(streaming.MultipartContent); ok {
229− if err := writeMultipartContent(k, mpc); err != nil {
230− return err
231− }
232− continue
233− } else if mpcs, ok := v.([]streaming.MultipartContent); ok {
234− for _, mpc := range mpcs {
235− if err := writeMultipartContent(k, mpc); err != nil {
236− return err
237− }
238− }
239− continue
240− }
241−
242− var content string
243− contentType := shared.ContentTypeTextPlain
244− switch tt := v.(type) {
245− case []byte:
246− // JSON, don't quote it
247− content = string(tt)
248− contentType = shared.ContentTypeAppJSON
249− case string:
250− content = tt
251− default:
252− // ensure the value is in string format
253− content = fmt.Sprintf("%v", v)
254− }
255−
256− if err := writeField(k, contentType, content); err != nil {
257− return err
258− }
259− }
260− if err := writer.Close(); err != nil {
261− return err
262− }
263− return req.SetBody(exported.NopCloser(bytes.NewReader(body.Bytes())), writer.FormDataContentType())
264−}
265−
266−// SkipBodyDownload will disable automatic downloading of the response body.
267−func SkipBodyDownload(req *policy.Request) {
268− req.SetOperationValue(bodyDownloadPolicyOpValues{Skip: true})
269−}
270−
271−// CtxAPINameKey is used as a context key for adding/retrieving the API name.
272−type CtxAPINameKey = shared.CtxAPINameKey
273−
274−// NewUUID returns a new UUID using the RFC4122 algorithm.
275−func NewUUID() (string, error) {
276− u, err := uuid.New()
277− if err != nil {
278− return "", err
279− }
280− return u.String(), nil
281−}
vendor/github.com/Azure/azure-sdk-for-go/sdk/azcore/runtime/response.godeleted−109
@@ -1,109 +0,0 @@
1−//go:build go1.18
2−// +build go1.18
3−
4−// Copyright (c) Microsoft Corporation. All rights reserved.
5−// Licensed under the MIT License.
6−
7−package runtime
8−
9−import (
10− "bytes"
11− "encoding/json"
12− "encoding/xml"
13− "fmt"
14− "io"
15− "net/http"
16−
17− azexported "github.com/Azure/azure-sdk-for-go/sdk/azcore/internal/exported"
18− "github.com/Azure/azure-sdk-for-go/sdk/internal/exported"
19−)
20−
21−// Payload reads and returns the response body or an error.
22−// On a successful read, the response body is cached.
23−// Subsequent reads will access the cached value.
24−func Payload(resp *http.Response) ([]byte, error) {
25− return exported.Payload(resp, nil)
26−}
27−
28−// HasStatusCode returns true if the Response's status code is one of the specified values.
29−func HasStatusCode(resp *http.Response, statusCodes ...int) bool {
30− return exported.HasStatusCode(resp, statusCodes...)
31−}
32−
33−// UnmarshalAsByteArray will base-64 decode the received payload and place the result into the value pointed to by v.
34−func UnmarshalAsByteArray(resp *http.Response, v *[]byte, format Base64Encoding) error {
35− p, err := Payload(resp)
36− if err != nil {
37− return err
38− }
39− return DecodeByteArray(string(p), v, format)
40−}
41−
42−// UnmarshalAsJSON calls json.Unmarshal() to unmarshal the received payload into the value pointed to by v.
43−func UnmarshalAsJSON(resp *http.Response, v any) error {
44− payload, err := Payload(resp)
45− if err != nil {
46− return err
47− }
48− // TODO: verify early exit is correct
49− if len(payload) == 0 {
50− return nil
51− }
52− err = removeBOM(resp)
53− if err != nil {
54− return err
55− }
56− err = json.Unmarshal(payload, v)
57− if err != nil {
58− err = fmt.Errorf("unmarshalling type %T: %s", v, err)
59− }
60− return err
61−}
62−
63−// UnmarshalAsXML calls xml.Unmarshal() to unmarshal the received payload into the value pointed to by v.
64−func UnmarshalAsXML(resp *http.Response, v any) error {
65− payload, err := Payload(resp)
66− if err != nil {
67− return err
68− }
69− // TODO: verify early exit is correct
70− if len(payload) == 0 {
71− return nil
72− }
73− err = removeBOM(resp)
74− if err != nil {
75− return err
76− }
77− err = xml.Unmarshal(payload, v)
78− if err != nil {
79− err = fmt.Errorf("unmarshalling type %T: %s", v, err)
80− }
81− return err
82−}
83−
84−// Drain reads the response body to completion then closes it. The bytes read are discarded.
85−func Drain(resp *http.Response) {
86− if resp != nil && resp.Body != nil {
87− _, _ = io.Copy(io.Discard, resp.Body)
88− resp.Body.Close()
89− }
90−}
91−
92−// removeBOM removes any byte-order mark prefix from the payload if present.
93−func removeBOM(resp *http.Response) error {
94− _, err := exported.Payload(resp, &exported.PayloadOptions{
95− BytesModifier: func(b []byte) []byte {
96− // UTF8
97− return bytes.TrimPrefix(b, []byte("\xef\xbb\xbf"))
98− },
99− })
100− if err != nil {
101− return err
102− }
103− return nil
104−}
105−
106−// DecodeByteArray will base-64 decode the provided string into v.
107−func DecodeByteArray(s string, v *[]byte, format Base64Encoding) error {
108− return azexported.DecodeByteArray(s, v, format)
109−}
vendor/github.com/Azure/azure-sdk-for-go/sdk/azcore/runtime/transport_default_dialer_other.godeleted−15
@@ -1,15 +0,0 @@
1−//go:build !wasm
2−
3−// Copyright (c) Microsoft Corporation. All rights reserved.
4−// Licensed under the MIT License.
5−
6−package runtime
7−
8−import (
9− "context"
10− "net"
11−)
12−
13−func defaultTransportDialContext(dialer *net.Dialer) func(context.Context, string, string) (net.Conn, error) {
14− return dialer.DialContext
15−}
vendor/github.com/Azure/azure-sdk-for-go/sdk/azcore/runtime/transport_default_dialer_wasm.godeleted−15
@@ -1,15 +0,0 @@
1−//go:build (js && wasm) || wasip1
2−
3−// Copyright (c) Microsoft Corporation. All rights reserved.
4−// Licensed under the MIT License.
5−
6−package runtime
7−
8−import (
9− "context"
10− "net"
11−)
12−
13−func defaultTransportDialContext(dialer *net.Dialer) func(context.Context, string, string) (net.Conn, error) {
14− return nil
15−}
vendor/github.com/Azure/azure-sdk-for-go/sdk/azcore/runtime/transport_default_http_client.godeleted−48
@@ -1,48 +0,0 @@
1−//go:build go1.18
2−// +build go1.18
3−
4−// Copyright (c) Microsoft Corporation. All rights reserved.
5−// Licensed under the MIT License.
6−
7−package runtime
8−
9−import (
10− "crypto/tls"
11− "net"
12− "net/http"
13− "time"
14−
15− "golang.org/x/net/http2"
16−)
17−
18−var defaultHTTPClient *http.Client
19−
20−func init() {
21− defaultTransport := &http.Transport{
22− Proxy: http.ProxyFromEnvironment,
23− DialContext: defaultTransportDialContext(&net.Dialer{
24− Timeout: 30 * time.Second,
25− KeepAlive: 30 * time.Second,
26− }),
27− ForceAttemptHTTP2: true,
28− MaxIdleConns: 100,
29− MaxIdleConnsPerHost: 10,
30− IdleConnTimeout: 90 * time.Second,
31− TLSHandshakeTimeout: 10 * time.Second,
32− ExpectContinueTimeout: 1 * time.Second,
33− TLSClientConfig: &tls.Config{
34− MinVersion: tls.VersionTLS12,
35− Renegotiation: tls.RenegotiateFreelyAsClient,
36− },
37− }
38− // TODO: evaluate removing this once https://github.com/golang/go/issues/59690 has been fixed
39− if http2Transport, err := http2.ConfigureTransports(defaultTransport); err == nil {
40− // if the connection has been idle for 10 seconds, send a ping frame for a health check
41− http2Transport.ReadIdleTimeout = 10 * time.Second
42− // if there's no response to the ping within the timeout, the connection will be closed
43− http2Transport.PingTimeout = 5 * time.Second
44− }
45− defaultHTTPClient = &http.Client{
46− Transport: defaultTransport,
47− }
48−}
vendor/github.com/Azure/azure-sdk-for-go/sdk/azcore/streaming/doc.godeleted−9
@@ -1,9 +0,0 @@
1−//go:build go1.18
2−// +build go1.18
3−
4−// Copyright 2017 Microsoft Corporation. All rights reserved.
5−// Use of this source code is governed by an MIT
6−// license that can be found in the LICENSE file.
7−
8−// Package streaming contains helpers for streaming IO operations and progress reporting.
9−package streaming
vendor/github.com/Azure/azure-sdk-for-go/sdk/azcore/streaming/progress.godeleted−89
@@ -1,89 +0,0 @@
1−//go:build go1.18
2−// +build go1.18
3−
4−// Copyright (c) Microsoft Corporation. All rights reserved.
5−// Licensed under the MIT License.
6−
7−package streaming
8−
9−import (
10− "io"
11−
12− "github.com/Azure/azure-sdk-for-go/sdk/azcore/internal/exported"
13−)
14−
15−type progress struct {
16− rc io.ReadCloser
17− rsc io.ReadSeekCloser
18− pr func(bytesTransferred int64)
19− offset int64
20−}
21−
22−// NopCloser returns a ReadSeekCloser with a no-op close method wrapping the provided io.ReadSeeker.
23−// In addition to adding a Close method to an io.ReadSeeker, this can also be used to wrap an
24−// io.ReadSeekCloser with a no-op Close method to allow explicit control of when the io.ReedSeekCloser
25−// has its underlying stream closed.
26−func NopCloser(rs io.ReadSeeker) io.ReadSeekCloser {
27− return exported.NopCloser(rs)
28−}
29−
30−// NewRequestProgress adds progress reporting to an HTTP request's body stream.
31−func NewRequestProgress(body io.ReadSeekCloser, pr func(bytesTransferred int64)) io.ReadSeekCloser {
32− return &progress{
33− rc: body,
34− rsc: body,
35− pr: pr,
36− offset: 0,
37− }
38−}
39−
40−// NewResponseProgress adds progress reporting to an HTTP response's body stream.
41−func NewResponseProgress(body io.ReadCloser, pr func(bytesTransferred int64)) io.ReadCloser {
42− return &progress{
43− rc: body,
44− rsc: nil,
45− pr: pr,
46− offset: 0,
47− }
48−}
49−
50−// Read reads a block of data from an inner stream and reports progress
51−func (p *progress) Read(b []byte) (n int, err error) {
52− n, err = p.rc.Read(b)
53− if err != nil && err != io.EOF {
54− return
55− }
56− p.offset += int64(n)
57− // Invokes the user's callback method to report progress
58− p.pr(p.offset)
59− return
60−}
61−
62−// Seek only expects a zero or from beginning.
63−func (p *progress) Seek(offset int64, whence int) (int64, error) {
64− // This should only ever be called with offset = 0 and whence = io.SeekStart
65− n, err := p.rsc.Seek(offset, whence)
66− if err == nil {
67− p.offset = int64(n)
68− }
69− return n, err
70−}
71−
72−// requestBodyProgress supports Close but the underlying stream may not; if it does, Close will close it.
73−func (p *progress) Close() error {
74− return p.rc.Close()
75−}
76−
77−// MultipartContent contains streaming content used in multipart/form payloads.
78−type MultipartContent struct {
79− // Body contains the required content body.
80− Body io.ReadSeekCloser
81−
82− // ContentType optionally specifies the HTTP Content-Type for this Body.
83− // The default value is application/octet-stream.
84− ContentType string
85−
86− // Filename optionally specifies the filename for this Body.
87− // The default value is the field name for the multipart/form section.
88− Filename string
89−}
vendor/github.com/Azure/azure-sdk-for-go/sdk/azcore/tracing/constants.godeleted−41
@@ -1,41 +0,0 @@
1−//go:build go1.18
2−// +build go1.18
3−
4−// Copyright (c) Microsoft Corporation. All rights reserved.
5−// Licensed under the MIT License.
6−
7−package tracing
8−
9−// SpanKind represents the role of a Span inside a Trace. Often, this defines how a Span will be processed and visualized by various backends.
10−type SpanKind int
11−
12−const (
13− // SpanKindInternal indicates the span represents an internal operation within an application.
14− SpanKindInternal SpanKind = 1
15−
16− // SpanKindServer indicates the span covers server-side handling of a request.
17− SpanKindServer SpanKind = 2
18−
19− // SpanKindClient indicates the span describes a request to a remote service.
20− SpanKindClient SpanKind = 3
21−
22− // SpanKindProducer indicates the span was created by a messaging producer.
23− SpanKindProducer SpanKind = 4
24−
25− // SpanKindConsumer indicates the span was created by a messaging consumer.
26− SpanKindConsumer SpanKind = 5
27−)
28−
29−// SpanStatus represents the status of a span.
30−type SpanStatus int
31−
32−const (
33− // SpanStatusUnset is the default status code.
34− SpanStatusUnset SpanStatus = 0
35−
36− // SpanStatusError indicates the operation contains an error.
37− SpanStatusError SpanStatus = 1
38−
39− // SpanStatusOK indicates the operation completed successfully.
40− SpanStatusOK SpanStatus = 2
41−)
vendor/github.com/Azure/azure-sdk-for-go/sdk/azcore/tracing/tracing.godeleted−191
@@ -1,191 +0,0 @@
1−//go:build go1.18
2−// +build go1.18
3−
4−// Copyright (c) Microsoft Corporation. All rights reserved.
5−// Licensed under the MIT License.
6−
7−// Package tracing contains the definitions needed to support distributed tracing.
8−package tracing
9−
10−import (
11− "context"
12−)
13−
14−// ProviderOptions contains the optional values when creating a Provider.
15−type ProviderOptions struct {
16− // for future expansion
17−}
18−
19−// NewProvider creates a new Provider with the specified values.
20−// - newTracerFn is the underlying implementation for creating Tracer instances
21−// - options contains optional values; pass nil to accept the default value
22−func NewProvider(newTracerFn func(name, version string) Tracer, options *ProviderOptions) Provider {
23− return Provider{
24− newTracerFn: newTracerFn,
25− }
26−}
27−
28−// Provider is the factory that creates Tracer instances.
29−// It defaults to a no-op provider.
30−type Provider struct {
31− newTracerFn func(name, version string) Tracer
32−}
33−
34−// NewTracer creates a new Tracer for the specified module name and version.
35−// - module - the fully qualified name of the module
36−// - version - the version of the module
37−func (p Provider) NewTracer(module, version string) (tracer Tracer) {
38− if p.newTracerFn != nil {
39− tracer = p.newTracerFn(module, version)
40− }
41− return
42−}
43−
44−/////////////////////////////////////////////////////////////////////////////////////////////////////////////
45−
46−// TracerOptions contains the optional values when creating a Tracer.
47−type TracerOptions struct {
48− // SpanFromContext contains the implementation for the Tracer.SpanFromContext method.
49− SpanFromContext func(context.Context) Span
50−}
51−
52−// NewTracer creates a Tracer with the specified values.
53−// - newSpanFn is the underlying implementation for creating Span instances
54−// - options contains optional values; pass nil to accept the default value
55−func NewTracer(newSpanFn func(ctx context.Context, spanName string, options *SpanOptions) (context.Context, Span), options *TracerOptions) Tracer {
56− if options == nil {
57− options = &TracerOptions{}
58− }
59− return Tracer{
60− newSpanFn: newSpanFn,
61− spanFromContextFn: options.SpanFromContext,
62− }
63−}
64−
65−// Tracer is the factory that creates Span instances.
66−type Tracer struct {
67− attrs []Attribute
68− newSpanFn func(ctx context.Context, spanName string, options *SpanOptions) (context.Context, Span)
69− spanFromContextFn func(ctx context.Context) Span
70−}
71−
72−// Start creates a new span and a context.Context that contains it.
73−// - ctx is the parent context for this span. If it contains a Span, the newly created span will be a child of that span, else it will be a root span
74−// - spanName identifies the span within a trace, it's typically the fully qualified API name
75−// - options contains optional values for the span, pass nil to accept any defaults
76−func (t Tracer) Start(ctx context.Context, spanName string, options *SpanOptions) (context.Context, Span) {
77− if t.newSpanFn != nil {
78− opts := SpanOptions{}
79− if options != nil {
80− opts = *options
81− }
82− opts.Attributes = append(opts.Attributes, t.attrs...)
83− return t.newSpanFn(ctx, spanName, &opts)
84− }
85− return ctx, Span{}
86−}
87−
88−// SetAttributes sets attrs to be applied to each Span. If a key from attrs
89−// already exists for an attribute of the Span it will be overwritten with
90−// the value contained in attrs.
91−func (t *Tracer) SetAttributes(attrs ...Attribute) {
92− t.attrs = append(t.attrs, attrs...)
93−}
94−
95−// Enabled returns true if this Tracer is capable of creating Spans.
96−func (t Tracer) Enabled() bool {
97− return t.newSpanFn != nil
98−}
99−
100−// SpanFromContext returns the Span associated with the current context.
101−// If the provided context has no Span, false is returned.
102−func (t Tracer) SpanFromContext(ctx context.Context) Span {
103− if t.spanFromContextFn != nil {
104− return t.spanFromContextFn(ctx)
105− }
106− return Span{}
107−}
108−
109−// SpanOptions contains optional settings for creating a span.
110−type SpanOptions struct {
111− // Kind indicates the kind of Span.
112− Kind SpanKind
113−
114− // Attributes contains key-value pairs of attributes for the span.
115− Attributes []Attribute
116−}
117−
118−/////////////////////////////////////////////////////////////////////////////////////////////////////////////
119−
120−// SpanImpl abstracts the underlying implementation for Span,
121−// allowing it to work with various tracing implementations.
122−// Any zero-values will have their default, no-op behavior.
123−type SpanImpl struct {
124− // End contains the implementation for the Span.End method.
125− End func()
126−
127− // SetAttributes contains the implementation for the Span.SetAttributes method.
128− SetAttributes func(...Attribute)
129−
130− // AddEvent contains the implementation for the Span.AddEvent method.
131− AddEvent func(string, ...Attribute)
132−
133− // SetStatus contains the implementation for the Span.SetStatus method.
134− SetStatus func(SpanStatus, string)
135−}
136−
137−// NewSpan creates a Span with the specified implementation.
138−func NewSpan(impl SpanImpl) Span {
139− return Span{
140− impl: impl,
141− }
142−}
143−
144−// Span is a single unit of a trace. A trace can contain multiple spans.
145−// A zero-value Span provides a no-op implementation.
146−type Span struct {
147− impl SpanImpl
148−}
149−
150−// End terminates the span and MUST be called before the span leaves scope.
151−// Any further updates to the span will be ignored after End is called.
152−func (s Span) End() {
153− if s.impl.End != nil {
154− s.impl.End()
155− }
156−}
157−
158−// SetAttributes sets the specified attributes on the Span.
159−// Any existing attributes with the same keys will have their values overwritten.
160−func (s Span) SetAttributes(attrs ...Attribute) {
161− if s.impl.SetAttributes != nil {
162− s.impl.SetAttributes(attrs...)
163− }
164−}
165−
166−// AddEvent adds a named event with an optional set of attributes to the span.
167−func (s Span) AddEvent(name string, attrs ...Attribute) {
168− if s.impl.AddEvent != nil {
169− s.impl.AddEvent(name, attrs...)
170− }
171−}
172−
173−// SetStatus sets the status on the span along with a description.
174−func (s Span) SetStatus(code SpanStatus, desc string) {
175− if s.impl.SetStatus != nil {
176− s.impl.SetStatus(code, desc)
177− }
178−}
179−
180−/////////////////////////////////////////////////////////////////////////////////////////////////////////////
181−
182−// Attribute is a key-value pair.
183−type Attribute struct {
184− // Key is the name of the attribute.
185− Key string
186−
187− // Value is the attribute's value.
188− // Types that are natively supported include int64, float64, int, bool, string.
189− // Any other type will be formatted per rules of fmt.Sprintf("%v").
190− Value any
191−}
vendor/github.com/Azure/azure-sdk-for-go/sdk/azidentity/.gitignoredeleted−4
@@ -1,4 +0,0 @@
1−# live test artifacts
2−Dockerfile
3−k8s.yaml
4−sshkey*
vendor/github.com/Azure/azure-sdk-for-go/sdk/azidentity/CHANGELOG.mddeleted−575
@@ -1,575 +0,0 @@
1−# Release History
2−
3−## 1.7.0 (2024-06-20)
4−
5−### Features Added
6−* `AzurePipelinesCredential` authenticates an Azure Pipelines service connection with
7− workload identity federation
8−
9−### Breaking Changes
10−> These changes affect only code written against a beta version such as v1.7.0-beta.1
11−* Removed the persistent token caching API. It will return in v1.8.0-beta.1
12−
13−## 1.7.0-beta.1 (2024-06-10)
14−
15−### Features Added
16−* Restored `AzurePipelinesCredential` and persistent token caching API
17−
18−## Breaking Changes
19−> These changes affect only code written against a beta version such as v1.6.0-beta.4
20−* Values which `NewAzurePipelinesCredential` read from environment variables in
21− prior versions are now parameters
22−* Renamed `AzurePipelinesServiceConnectionCredentialOptions` to `AzurePipelinesCredentialOptions`
23−
24−### Bugs Fixed
25−* Managed identity bug fixes
26−
27−## 1.6.0 (2024-06-10)
28−
29−### Features Added
30−* `NewOnBehalfOfCredentialWithClientAssertions` creates an on-behalf-of credential
31− that authenticates with client assertions such as federated credentials
32−
33−### Breaking Changes
34−> These changes affect only code written against a beta version such as v1.6.0-beta.4
35−* Removed `AzurePipelinesCredential` and the persistent token caching API.
36− They will return in v1.7.0-beta.1
37−
38−### Bugs Fixed
39−* Managed identity bug fixes
40−
41−## 1.6.0-beta.4 (2024-05-14)
42−
43−### Features Added
44−* `AzurePipelinesCredential` authenticates an Azure Pipeline service connection with
45− workload identity federation
46−
47−## 1.6.0-beta.3 (2024-04-09)
48−
49−### Breaking Changes
50−* `DefaultAzureCredential` now sends a probe request with no retries for IMDS managed identity
51− environments to avoid excessive retry delays when the IMDS endpoint is not available. This
52− should improve credential chain resolution for local development scenarios.
53−
54−### Bugs Fixed
55−* `ManagedIdentityCredential` now specifies resource IDs correctly for Azure Container Instances
56−
57−## 1.5.2 (2024-04-09)
58−
59−### Bugs Fixed
60−* `ManagedIdentityCredential` now specifies resource IDs correctly for Azure Container Instances
61−
62−### Other Changes
63−* Restored v1.4.0 error behavior for empty tenant IDs
64−* Upgraded dependencies
65−
66−## 1.6.0-beta.2 (2024-02-06)
67−
68−### Breaking Changes
69−> These changes affect only code written against a beta version such as v1.6.0-beta.1
70−* Replaced `ErrAuthenticationRequired` with `AuthenticationRequiredError`, a struct
71− type that carries the `TokenRequestOptions` passed to the `GetToken` call which
72− returned the error.
73−
74−### Bugs Fixed
75−* Fixed more cases in which credential chains like `DefaultAzureCredential`
76− should try their next credential after attempting managed identity
77− authentication in a Docker Desktop container
78−
79−### Other Changes
80−* `AzureCLICredential` uses the CLI's `expires_on` value for token expiration
81−
82−## 1.6.0-beta.1 (2024-01-17)
83−
84−### Features Added
85−* Restored persistent token caching API first added in v1.5.0-beta.1
86−* Added `AzureCLICredentialOptions.Subscription`
87−
88−## 1.5.1 (2024-01-17)
89−
90−### Bugs Fixed
91−* `InteractiveBrowserCredential` handles `AdditionallyAllowedTenants` correctly
92−
93−## 1.5.0 (2024-01-16)
94−
95−### Breaking Changes
96−> These changes affect only code written against a beta version such as v1.5.0-beta.1
97−* Removed persistent token caching. It will return in v1.6.0-beta.1
98−
99−### Bugs Fixed
100−* Credentials now preserve MSAL headers e.g. X-Client-Sku
101−
102−### Other Changes
103−* Upgraded dependencies
104−
105−## 1.5.0-beta.2 (2023-11-07)
106−
107−### Features Added
108−* `DefaultAzureCredential` and `ManagedIdentityCredential` support Azure ML managed identity
109−* Added spans for distributed tracing.
110−
111−## 1.5.0-beta.1 (2023-10-10)
112−
113−### Features Added
114−* Optional persistent token caching for most credentials. Set `TokenCachePersistenceOptions`
115− on a credential's options to enable and configure this. See the package documentation for
116− this version and [TOKEN_CACHING.md](https://aka.ms/azsdk/go/identity/caching) for more
117− details.
118−* `AzureDeveloperCLICredential` authenticates with the Azure Developer CLI (`azd`). This
119− credential is also part of the `DefaultAzureCredential` authentication flow.
120−
121−## 1.4.0 (2023-10-10)
122−
123−### Bugs Fixed
124−* `ManagedIdentityCredential` will now retry when IMDS responds 410 or 503
125−
126−## 1.4.0-beta.5 (2023-09-12)
127−
128−### Features Added
129−* Service principal credentials can request CAE tokens
130−
131−### Breaking Changes
132−> These changes affect only code written against a beta version such as v1.4.0-beta.4
133−* Whether `GetToken` requests a CAE token is now determined by `TokenRequestOptions.EnableCAE`. Azure
134− SDK clients which support CAE will set this option automatically. Credentials no longer request CAE
135− tokens by default or observe the environment variable "AZURE_IDENTITY_DISABLE_CP1".
136−
137−### Bugs Fixed
138−* Credential chains such as `DefaultAzureCredential` now try their next credential, if any, when
139− managed identity authentication fails in a Docker Desktop container
140− ([#21417](https://github.com/Azure/azure-sdk-for-go/issues/21417))
141−
142−## 1.4.0-beta.4 (2023-08-16)
143−
144−### Other Changes
145−* Upgraded dependencies
146−
147−## 1.3.1 (2023-08-16)
148−
149−### Other Changes
150−* Upgraded dependencies
151−
152−## 1.4.0-beta.3 (2023-08-08)
153−
154−### Bugs Fixed
155−* One invocation of `AzureCLICredential.GetToken()` and `OnBehalfOfCredential.GetToken()`
156− can no longer make two authentication attempts
157−
158−## 1.4.0-beta.2 (2023-07-14)
159−
160−### Other Changes
161−* `DefaultAzureCredentialOptions.TenantID` applies to workload identity authentication
162−* Upgraded dependencies
163−
164−## 1.4.0-beta.1 (2023-06-06)
165−
166−### Other Changes
167−* Re-enabled CAE support as in v1.3.0-beta.3
168−
169−## 1.3.0 (2023-05-09)
170−
171−### Breaking Changes
172−> These changes affect only code written against a beta version such as v1.3.0-beta.5
173−* Renamed `NewOnBehalfOfCredentialFromCertificate` to `NewOnBehalfOfCredentialWithCertificate`
174−* Renamed `NewOnBehalfOfCredentialFromSecret` to `NewOnBehalfOfCredentialWithSecret`
175−
176−### Other Changes
177−* Upgraded to MSAL v1.0.0
178−
179−## 1.3.0-beta.5 (2023-04-11)
180−
181−### Breaking Changes
182−> These changes affect only code written against a beta version such as v1.3.0-beta.4
183−* Moved `NewWorkloadIdentityCredential()` parameters into `WorkloadIdentityCredentialOptions`.
184− The constructor now reads default configuration from environment variables set by the Azure
185− workload identity webhook by default.
186− ([#20478](https://github.com/Azure/azure-sdk-for-go/pull/20478))
187−* Removed CAE support. It will return in v1.4.0-beta.1
188− ([#20479](https://github.com/Azure/azure-sdk-for-go/pull/20479))
189−
190−### Bugs Fixed
191−* Fixed an issue in `DefaultAzureCredential` that could cause the managed identity endpoint check to fail in rare circumstances.
192−
193−## 1.3.0-beta.4 (2023-03-08)
194−
195−### Features Added
196−* Added `WorkloadIdentityCredentialOptions.AdditionallyAllowedTenants` and `.DisableInstanceDiscovery`
197−
198−### Bugs Fixed
199−* Credentials now synchronize within `GetToken()` so a single instance can be shared among goroutines
200− ([#20044](https://github.com/Azure/azure-sdk-for-go/issues/20044))
201−
202−### Other Changes
203−* Upgraded dependencies
204−
205−## 1.2.2 (2023-03-07)
206−
207−### Other Changes
208−* Upgraded dependencies
209−
210−## 1.3.0-beta.3 (2023-02-07)
211−
212−### Features Added
213−* By default, credentials set client capability "CP1" to enable support for
214− [Continuous Access Evaluation (CAE)](https://learn.microsoft.com/entra/identity-platform/app-resilience-continuous-access-evaluation).
215− This indicates to Microsoft Entra ID that your application can handle CAE claims challenges.
216− You can disable this behavior by setting the environment variable "AZURE_IDENTITY_DISABLE_CP1" to "true".
217−* `InteractiveBrowserCredentialOptions.LoginHint` enables pre-populating the login
218− prompt with a username ([#15599](https://github.com/Azure/azure-sdk-for-go/pull/15599))
219−* Service principal and user credentials support ADFS authentication on Azure Stack.
220− Specify "adfs" as the credential's tenant.
221−* Applications running in private or disconnected clouds can prevent credentials from
222− requesting Microsoft Entra instance metadata by setting the `DisableInstanceDiscovery`
223− field on credential options.
224−* Many credentials can now be configured to authenticate in multiple tenants. The
225− options types for these credentials have an `AdditionallyAllowedTenants` field
226− that specifies additional tenants in which the credential may authenticate.
227−
228−## 1.3.0-beta.2 (2023-01-10)
229−
230−### Features Added
231−* Added `OnBehalfOfCredential` to support the on-behalf-of flow
232− ([#16642](https://github.com/Azure/azure-sdk-for-go/issues/16642))
233−
234−### Bugs Fixed
235−* `AzureCLICredential` reports token expiration in local time (should be UTC)
236−
237−### Other Changes
238−* `AzureCLICredential` imposes its default timeout only when the `Context`
239− passed to `GetToken()` has no deadline
240−* Added `NewCredentialUnavailableError()`. This function constructs an error indicating
241− a credential can't authenticate and an encompassing `ChainedTokenCredential` should
242− try its next credential, if any.
243−
244−## 1.3.0-beta.1 (2022-12-13)
245−
246−### Features Added
247−* `WorkloadIdentityCredential` and `DefaultAzureCredential` support
248− Workload Identity Federation on Kubernetes. `DefaultAzureCredential`
249− support requires environment variable configuration as set by the
250− Workload Identity webhook.
251− ([#15615](https://github.com/Azure/azure-sdk-for-go/issues/15615))
252−
253−## 1.2.0 (2022-11-08)
254−
255−### Other Changes
256−* This version includes all fixes and features from 1.2.0-beta.*
257−
258−## 1.2.0-beta.3 (2022-10-11)
259−
260−### Features Added
261−* `ManagedIdentityCredential` caches tokens in memory
262−
263−### Bugs Fixed
264−* `ClientCertificateCredential` sends only the leaf cert for SNI authentication
265−
266−## 1.2.0-beta.2 (2022-08-10)
267−
268−### Features Added
269−* Added `ClientAssertionCredential` to enable applications to authenticate
270− with custom client assertions
271−
272−### Other Changes
273−* Updated AuthenticationFailedError with links to TROUBLESHOOTING.md for relevant errors
274−* Upgraded `microsoft-authentication-library-for-go` requirement to v0.6.0
275−
276−## 1.2.0-beta.1 (2022-06-07)
277−
278−### Features Added
279−* `EnvironmentCredential` reads certificate passwords from `AZURE_CLIENT_CERTIFICATE_PASSWORD`
280− ([#17099](https://github.com/Azure/azure-sdk-for-go/pull/17099))
281−
282−## 1.1.0 (2022-06-07)
283−
284−### Features Added
285−* `ClientCertificateCredential` and `ClientSecretCredential` support ESTS-R. First-party
286− applications can set environment variable `AZURE_REGIONAL_AUTHORITY_NAME` with a
287− region name.
288− ([#15605](https://github.com/Azure/azure-sdk-for-go/issues/15605))
289−
290−## 1.0.1 (2022-06-07)
291−
292−### Other Changes
293−* Upgrade `microsoft-authentication-library-for-go` requirement to v0.5.1
294− ([#18176](https://github.com/Azure/azure-sdk-for-go/issues/18176))
295−
296−## 1.0.0 (2022-05-12)
297−
298−### Features Added
299−* `DefaultAzureCredential` reads environment variable `AZURE_CLIENT_ID` for the
300− client ID of a user-assigned managed identity
301− ([#17293](https://github.com/Azure/azure-sdk-for-go/pull/17293))
302−
303−### Breaking Changes
304−* Removed `AuthorizationCodeCredential`. Use `InteractiveBrowserCredential` instead
305− to authenticate a user with the authorization code flow.
306−* Instances of `AuthenticationFailedError` are now returned by pointer.
307−* `GetToken()` returns `azcore.AccessToken` by value
308−
309−### Bugs Fixed
310−* `AzureCLICredential` panics after receiving an unexpected error type
311− ([#17490](https://github.com/Azure/azure-sdk-for-go/issues/17490))
312−
313−### Other Changes
314−* `GetToken()` returns an error when the caller specifies no scope
315−* Updated to the latest versions of `golang.org/x/crypto`, `azcore` and `internal`
316−
317−## 0.14.0 (2022-04-05)
318−
319−### Breaking Changes
320−* This module now requires Go 1.18
321−* Removed `AuthorityHost`. Credentials are now configured for sovereign or private
322− clouds with the API in `azcore/cloud`, for example:
323− ```go
324− // before
325− opts := azidentity.ClientSecretCredentialOptions{AuthorityHost: azidentity.AzureGovernment}
326− cred, err := azidentity.NewClientSecretCredential(tenantID, clientID, secret, &opts)
327−
328− // after
329− import "github.com/Azure/azure-sdk-for-go/sdk/azcore/cloud"
330−
331− opts := azidentity.ClientSecretCredentialOptions{}
332− opts.Cloud = cloud.AzureGovernment
333− cred, err := azidentity.NewClientSecretCredential(tenantID, clientID, secret, &opts)
334− ```
335−
336−## 0.13.2 (2022-03-08)
337−
338−### Bugs Fixed
339−* Prevented a data race in `DefaultAzureCredential` and `ChainedTokenCredential`
340− ([#17144](https://github.com/Azure/azure-sdk-for-go/issues/17144))
341−
342−### Other Changes
343−* Upgraded App Service managed identity version from 2017-09-01 to 2019-08-01
344− ([#17086](https://github.com/Azure/azure-sdk-for-go/pull/17086))
345−
346−## 0.13.1 (2022-02-08)
347−
348−### Features Added
349−* `EnvironmentCredential` supports certificate SNI authentication when
350− `AZURE_CLIENT_SEND_CERTIFICATE_CHAIN` is "true".
351− ([#16851](https://github.com/Azure/azure-sdk-for-go/pull/16851))
352−
353−### Bugs Fixed
354−* `ManagedIdentityCredential.GetToken()` now returns an error when configured for
355− a user assigned identity in Azure Cloud Shell (which doesn't support such identities)
356− ([#16946](https://github.com/Azure/azure-sdk-for-go/pull/16946))
357−
358−### Other Changes
359−* `NewDefaultAzureCredential()` logs non-fatal errors. These errors are also included in the
360− error returned by `DefaultAzureCredential.GetToken()` when it's unable to acquire a token
361− from any source. ([#15923](https://github.com/Azure/azure-sdk-for-go/issues/15923))
362−
363−## 0.13.0 (2022-01-11)
364−
365−### Breaking Changes
366−* Replaced `AuthenticationFailedError.RawResponse()` with a field having the same name
367−* Unexported `CredentialUnavailableError`
368−* Instances of `ChainedTokenCredential` will now skip looping through the list of source credentials and re-use the first successful credential on subsequent calls to `GetToken`.
369− * If `ChainedTokenCredentialOptions.RetrySources` is true, `ChainedTokenCredential` will continue to try all of the originally provided credentials each time the `GetToken` method is called.
370− * `ChainedTokenCredential.successfulCredential` will contain a reference to the last successful credential.
371− * `DefaultAzureCredenial` will also re-use the first successful credential on subsequent calls to `GetToken`.
372− * `DefaultAzureCredential.chain.successfulCredential` will also contain a reference to the last successful credential.
373−
374−### Other Changes
375−* `ManagedIdentityCredential` no longer probes IMDS before requesting a token
376− from it. Also, an error response from IMDS no longer disables a credential
377− instance. Following an error, a credential instance will continue to send
378− requests to IMDS as necessary.
379−* Adopted MSAL for user and service principal authentication
380−* Updated `azcore` requirement to 0.21.0
381−
382−## 0.12.0 (2021-11-02)
383−### Breaking Changes
384−* Raised minimum go version to 1.16
385−* Removed `NewAuthenticationPolicy()` from credentials. Clients should instead use azcore's
386− `runtime.NewBearerTokenPolicy()` to construct a bearer token authorization policy.
387−* The `AuthorityHost` field in credential options structs is now a custom type,
388− `AuthorityHost`, with underlying type `string`
389−* `NewChainedTokenCredential` has a new signature to accommodate a placeholder
390− options struct:
391− ```go
392− // before
393− cred, err := NewChainedTokenCredential(credA, credB)
394−
395− // after
396− cred, err := NewChainedTokenCredential([]azcore.TokenCredential{credA, credB}, nil)
397− ```
398−* Removed `ExcludeAzureCLICredential`, `ExcludeEnvironmentCredential`, and `ExcludeMSICredential`
399− from `DefaultAzureCredentialOptions`
400−* `NewClientCertificateCredential` requires a `[]*x509.Certificate` and `crypto.PrivateKey` instead of
401− a path to a certificate file. Added `ParseCertificates` to simplify getting these in common cases:
402− ```go
403− // before
404− cred, err := NewClientCertificateCredential("tenant", "client-id", "/cert.pem", nil)
405−
406− // after
407− certData, err := os.ReadFile("/cert.pem")
408− certs, key, err := ParseCertificates(certData, password)
409− cred, err := NewClientCertificateCredential(tenantID, clientID, certs, key, nil)
410− ```
411−* Removed `InteractiveBrowserCredentialOptions.ClientSecret` and `.Port`
412−* Removed `AADAuthenticationFailedError`
413−* Removed `id` parameter of `NewManagedIdentityCredential()`. User assigned identities are now
414− specified by `ManagedIdentityCredentialOptions.ID`:
415− ```go
416− // before
417− cred, err := NewManagedIdentityCredential("client-id", nil)
418− // or, for a resource ID
419− opts := &ManagedIdentityCredentialOptions{ID: ResourceID}
420− cred, err := NewManagedIdentityCredential("/subscriptions/...", opts)
421−
422− // after
423− clientID := ClientID("7cf7db0d-...")
424− opts := &ManagedIdentityCredentialOptions{ID: clientID}
425− // or, for a resource ID
426− resID: ResourceID("/subscriptions/...")
427− opts := &ManagedIdentityCredentialOptions{ID: resID}
428− cred, err := NewManagedIdentityCredential(opts)
429− ```
430−* `DeviceCodeCredentialOptions.UserPrompt` has a new type: `func(context.Context, DeviceCodeMessage) error`
431−* Credential options structs now embed `azcore.ClientOptions`. In addition to changing literal initialization
432− syntax, this change renames `HTTPClient` fields to `Transport`.
433−* Renamed `LogCredential` to `EventCredential`
434−* `AzureCLICredential` no longer reads the environment variable `AZURE_CLI_PATH`
435−* `NewManagedIdentityCredential` no longer reads environment variables `AZURE_CLIENT_ID` and
436− `AZURE_RESOURCE_ID`. Use `ManagedIdentityCredentialOptions.ID` instead.
437−* Unexported `AuthenticationFailedError` and `CredentialUnavailableError` structs. In their place are two
438− interfaces having the same names.
439−
440−### Bugs Fixed
441−* `AzureCLICredential.GetToken` no longer mutates its `opts.Scopes`
442−
443−### Features Added
444−* Added connection configuration options to `DefaultAzureCredentialOptions`
445−* `AuthenticationFailedError.RawResponse()` returns the HTTP response motivating the error,
446− if available
447−
448−### Other Changes
449−* `NewDefaultAzureCredential()` returns `*DefaultAzureCredential` instead of `*ChainedTokenCredential`
450−* Added `TenantID` field to `DefaultAzureCredentialOptions` and `AzureCLICredentialOptions`
451−
452−## 0.11.0 (2021-09-08)
453−### Breaking Changes
454−* Unexported `AzureCLICredentialOptions.TokenProvider` and its type,
455− `AzureCLITokenProvider`
456−
457−### Bug Fixes
458−* `ManagedIdentityCredential.GetToken` returns `CredentialUnavailableError`
459− when IMDS has no assigned identity, signaling `DefaultAzureCredential` to
460− try other credentials
461−
462−
463−## 0.10.0 (2021-08-30)
464−### Breaking Changes
465−* Update based on `azcore` refactor [#15383](https://github.com/Azure/azure-sdk-for-go/pull/15383)
466−
467−## 0.9.3 (2021-08-20)
468−
469−### Bugs Fixed
470−* `ManagedIdentityCredential.GetToken` no longer mutates its `opts.Scopes`
471−
472−### Other Changes
473−* Bumps version of `azcore` to `v0.18.1`
474−
475−
476−## 0.9.2 (2021-07-23)
477−### Features Added
478−* Adding support for Service Fabric environment in `ManagedIdentityCredential`
479−* Adding an option for using a resource ID instead of client ID in `ManagedIdentityCredential`
480−
481−
482−## 0.9.1 (2021-05-24)
483−### Features Added
484−* Add LICENSE.txt and bump version information
485−
486−
487−## 0.9.0 (2021-05-21)
488−### Features Added
489−* Add support for authenticating in Azure Stack environments
490−* Enable user assigned identities for the IMDS scenario in `ManagedIdentityCredential`
491−* Add scope to resource conversion in `GetToken()` on `ManagedIdentityCredential`
492−
493−
494−## 0.8.0 (2021-01-20)
495−### Features Added
496−* Updating documentation
497−
498−
499−## 0.7.1 (2021-01-04)
500−### Features Added
501−* Adding port option to `InteractiveBrowserCredential`
502−
503−
504−## 0.7.0 (2020-12-11)
505−### Features Added
506−* Add `redirectURI` parameter back to authentication code flow
507−
508−
509−## 0.6.1 (2020-12-09)
510−### Features Added
511−* Updating query parameter in `ManagedIdentityCredential` and updating datetime string for parsing managed identity access tokens.
512−
513−
514−## 0.6.0 (2020-11-16)
515−### Features Added
516−* Remove `RedirectURL` parameter from auth code flow to align with the MSAL implementation which relies on the native client redirect URL.
517−
518−
519−## 0.5.0 (2020-10-30)
520−### Features Added
521−* Flattening credential options
522−
523−
524−## 0.4.3 (2020-10-21)
525−### Features Added
526−* Adding Azure Arc support in `ManagedIdentityCredential`
527−
528−
529−## 0.4.2 (2020-10-16)
530−### Features Added
531−* Typo fixes
532−
533−
534−## 0.4.1 (2020-10-16)
535−### Features Added
536−* Ensure authority hosts are only HTTPs
537−
538−
539−## 0.4.0 (2020-10-16)
540−### Features Added
541−* Adding options structs for credentials
542−
543−
544−## 0.3.0 (2020-10-09)
545−### Features Added
546−* Update `DeviceCodeCredential` callback
547−
548−
549−## 0.2.2 (2020-10-09)
550−### Features Added
551−* Add `AuthorizationCodeCredential`
552−
553−
554−## 0.2.1 (2020-10-06)
555−### Features Added
556−* Add `InteractiveBrowserCredential`
557−
558−
559−## 0.2.0 (2020-09-11)
560−### Features Added
561−* Refactor `azidentity` on top of `azcore` refactor
562−* Updated policies to conform to `policy.Policy` interface changes.
563−* Updated non-retriable errors to conform to `azcore.NonRetriableError`.
564−* Fixed calls to `Request.SetBody()` to include content type.
565−* Switched endpoints to string types and removed extra parsing code.
566−
567−
568−## 0.1.1 (2020-09-02)
569−### Features Added
570−* Add `AzureCLICredential` to `DefaultAzureCredential` chain
571−
572−
573−## 0.1.0 (2020-07-23)
574−### Features Added
575−* Initial Release. Azure Identity library that provides Microsoft Entra token authentication support for the SDK.
vendor/github.com/Azure/azure-sdk-for-go/sdk/azidentity/LICENSE.txtdeleted−21
@@ -1,21 +0,0 @@
1−MIT License
2−
3−Copyright (c) Microsoft Corporation.
4−
5−Permission is hereby granted, free of charge, to any person obtaining a copy
6−of this software and associated documentation files (the "Software"), to deal
7−in the Software without restriction, including without limitation the rights
8−to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9−copies of the Software, and to permit persons to whom the Software is
10−furnished to do so, subject to the following conditions:
11−
12−The above copyright notice and this permission notice shall be included in all
13−copies or substantial portions of the Software.
14−
15−THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16−IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17−FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18−AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19−LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20−OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21−SOFTWARE
vendor/github.com/Azure/azure-sdk-for-go/sdk/azidentity/MIGRATION.mddeleted−307
@@ -1,307 +0,0 @@
1−# Migrating from autorest/adal to azidentity
2−
3−`azidentity` provides Microsoft Entra ID ([formerly Azure Active Directory](https://learn.microsoft.com/entra/fundamentals/new-name)) authentication for the newest Azure SDK modules (`github.com/azure-sdk-for-go/sdk/...`). Older Azure SDK packages (`github.com/azure-sdk-for-go/services/...`) use types from `github.com/go-autorest/autorest/adal` instead.
4−
5−This guide shows common authentication code using `autorest/adal` and its equivalent using `azidentity`.
6−
7−## Table of contents
8−
9−- [Acquire a token](#acquire-a-token)
10−- [Client certificate authentication](#client-certificate-authentication)
11−- [Client secret authentication](#client-secret-authentication)
12−- [Configuration](#configuration)
13−- [Device code authentication](#device-code-authentication)
14−- [Managed identity](#managed-identity)
15−- [Use azidentity credentials with older packages](#use-azidentity-credentials-with-older-packages)
16−
17−## Configuration
18−
19−### `autorest/adal`
20−
21−Token providers require a token audience (resource identifier) and an instance of `adal.OAuthConfig`, which requires a Microsoft Entra endpoint and tenant:
22−
23−```go
24−import "github.com/Azure/go-autorest/autorest/adal"
25−
26−oauthCfg, err := adal.NewOAuthConfig("https://login.chinacloudapi.cn", tenantID)
27−handle(err)
28−
29−spt, err := adal.NewServicePrincipalTokenWithSecret(
30− *oauthCfg, clientID, "https://management.chinacloudapi.cn/", &adal.ServicePrincipalTokenSecret{ClientSecret: secret},
31−)
32−```
33−
34−### `azidentity`
35−
36−A credential instance can acquire tokens for any audience. The audience for each token is determined by the client requesting it. Credentials require endpoint configuration only for sovereign or private clouds. The `azcore/cloud` package has predefined configuration for sovereign clouds such as Azure China:
37−
38−```go
39−import (
40− "github.com/Azure/azure-sdk-for-go/sdk/azcore/cloud"
41− "github.com/Azure/azure-sdk-for-go/sdk/azidentity"
42−)
43−
44−clientOpts := azcore.ClientOptions{Cloud: cloud.AzureChina}
45−
46−cred, err := azidentity.NewClientSecretCredential(
47− tenantID, clientID, secret, &azidentity.ClientSecretCredentialOptions{ClientOptions: clientOpts},
48−)
49−handle(err)
50−```
51−
52−## Client secret authentication
53−
54−### `autorest/adal`
55−
56−```go
57−import (
58− "github.com/Azure/azure-sdk-for-go/services/resources/mgmt/2018-06-01/subscriptions"
59− "github.com/Azure/go-autorest/autorest"
60− "github.com/Azure/go-autorest/autorest/adal"
61−)
62−
63−oauthCfg, err := adal.NewOAuthConfig("https://login.microsoftonline.com", tenantID)
64−handle(err)
65−spt, err := adal.NewServicePrincipalTokenWithSecret(
66− *oauthCfg, clientID, "https://management.azure.com/", &adal.ServicePrincipalTokenSecret{ClientSecret: secret},
67−)
68−handle(err)
69−
70−client := subscriptions.NewClient()
71−client.Authorizer = autorest.NewBearerAuthorizer(spt)
72−```
73−
74−### `azidentity`
75−
76−```go
77−import (
78− "github.com/Azure/azure-sdk-for-go/sdk/azidentity"
79− "github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/resources/armsubscriptions"
80−)
81−
82−cred, err := azidentity.NewClientSecretCredential(tenantID, clientID, secret, nil)
83−handle(err)
84−
85−client, err := armsubscriptions.NewClient(cred, nil)
86−handle(err)
87−```
88−
89−## Client certificate authentication
90−
91−### `autorest/adal`
92−
93−```go
94−import (
95− "os"
96−
97− "github.com/Azure/azure-sdk-for-go/services/resources/mgmt/2018-06-01/subscriptions"
98− "github.com/Azure/go-autorest/autorest"
99− "github.com/Azure/go-autorest/autorest/adal"
100−)
101−certData, err := os.ReadFile("./example.pfx")
102−handle(err)
103−
104−certificate, rsaPrivateKey, err := decodePkcs12(certData, "")
105−handle(err)
106−
107−oauthCfg, err := adal.NewOAuthConfig("https://login.microsoftonline.com", tenantID)
108−handle(err)
109−
110−spt, err := adal.NewServicePrincipalTokenFromCertificate(
111− *oauthConfig, clientID, certificate, rsaPrivateKey, "https://management.azure.com/",
112−)
113−
114−client := subscriptions.NewClient()
115−client.Authorizer = autorest.NewBearerAuthorizer(spt)
116−```
117−
118−### `azidentity`
119−
120−```go
121−import (
122− "os"
123−
124− "github.com/Azure/azure-sdk-for-go/sdk/azidentity"
125− "github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/resources/armsubscriptions"
126−)
127−
128−certData, err := os.ReadFile("./example.pfx")
129−handle(err)
130−
131−certs, key, err := azidentity.ParseCertificates(certData, nil)
132−handle(err)
133−
134−cred, err = azidentity.NewClientCertificateCredential(tenantID, clientID, certs, key, nil)
135−handle(err)
136−
137−client, err := armsubscriptions.NewClient(cred, nil)
138−handle(err)
139−```
140−
141−## Managed identity
142−
143−### `autorest/adal`
144−
145−```go
146−import (
147− "github.com/Azure/azure-sdk-for-go/services/resources/mgmt/2018-06-01/subscriptions"
148− "github.com/Azure/go-autorest/autorest"
149− "github.com/Azure/go-autorest/autorest/adal"
150−)
151−
152−spt, err := adal.NewServicePrincipalTokenFromManagedIdentity("https://management.azure.com/", nil)
153−handle(err)
154−
155−client := subscriptions.NewClient()
156−client.Authorizer = autorest.NewBearerAuthorizer(spt)
157−```
158−
159−### `azidentity`
160−
161−```go
162−import (
163− "github.com/Azure/azure-sdk-for-go/sdk/azidentity"
164− "github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/resources/armsubscriptions"
165−)
166−
167−cred, err := azidentity.NewManagedIdentityCredential(nil)
168−handle(err)
169−
170−client, err := armsubscriptions.NewClient(cred, nil)
171−handle(err)
172−```
173−
174−### User-assigned identities
175−
176−`autorest/adal`:
177−
178−```go
179−import "github.com/Azure/go-autorest/autorest/adal"
180−
181−opts := &adal.ManagedIdentityOptions{ClientID: "..."}
182−spt, err := adal.NewServicePrincipalTokenFromManagedIdentity("https://management.azure.com/")
183−handle(err)
184−```
185−
186−`azidentity`:
187−
188−```go
189−import "github.com/Azure/azure-sdk-for-go/sdk/azidentity"
190−
191−opts := azidentity.ManagedIdentityCredentialOptions{ID: azidentity.ClientID("...")}
192−cred, err := azidentity.NewManagedIdentityCredential(&opts)
193−handle(err)
194−```
195−
196−## Device code authentication
197−
198−### `autorest/adal`
199−
200−```go
201−import (
202− "fmt"
203− "net/http"
204−
205− "github.com/Azure/azure-sdk-for-go/services/resources/mgmt/2018-06-01/subscriptions"
206− "github.com/Azure/go-autorest/autorest"
207− "github.com/Azure/go-autorest/autorest/adal"
208−)
209−
210−oauthClient := &http.Client{}
211−oauthCfg, err := adal.NewOAuthConfig("https://login.microsoftonline.com", tenantID)
212−handle(err)
213−resource := "https://management.azure.com/"
214−deviceCode, err := adal.InitiateDeviceAuth(oauthClient, *oauthCfg, clientID, resource)
215−handle(err)
216−
217−// display instructions, wait for the user to authenticate
218−fmt.Println(*deviceCode.Message)
219−token, err := adal.WaitForUserCompletion(oauthClient, deviceCode)
220−handle(err)
221−
222−spt, err := adal.NewServicePrincipalTokenFromManualToken(*oauthCfg, clientID, resource, *token)
223−handle(err)
224−
225−client := subscriptions.NewClient()
226−client.Authorizer = autorest.NewBearerAuthorizer(spt)
227−```
228−
229−### `azidentity`
230−
231−```go
232−import (
233− "github.com/Azure/azure-sdk-for-go/sdk/azidentity"
234− "github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/resources/armsubscriptions"
235−)
236−
237−cred, err := azidentity.NewDeviceCodeCredential(nil)
238−handle(err)
239−
240−client, err := armsubscriptions.NewSubscriptionsClient(cred, nil)
241−handle(err)
242−```
243−
244−`azidentity.DeviceCodeCredential` will guide a user through authentication, printing instructions to the console by default. The user prompt is customizable. For more information, see the [package documentation](https://pkg.go.dev/github.com/Azure/azure-sdk-for-go/sdk/azidentity#DeviceCodeCredential).
245−
246−## Acquire a token
247−
248−### `autorest/adal`
249−
250−```go
251−import "github.com/Azure/go-autorest/autorest/adal"
252−
253−oauthCfg, err := adal.NewOAuthConfig("https://login.microsoftonline.com", tenantID)
254−handle(err)
255−
256−spt, err := adal.NewServicePrincipalTokenWithSecret(
257− *oauthCfg, clientID, "https://vault.azure.net", &adal.ServicePrincipalTokenSecret{ClientSecret: secret},
258−)
259−
260−err = spt.Refresh()
261−if err == nil {
262− token := spt.Token
263−}
264−```
265−
266−### `azidentity`
267−
268−In ordinary usage, application code doesn't need to request tokens from credentials directly. Azure SDK clients handle token acquisition and refreshing internally. However, applications may call `GetToken()` to do so. All credential types have this method.
269−
270−```go
271−import (
272− "github.com/Azure/azure-sdk-for-go/sdk/azcore/policy"
273− "github.com/Azure/azure-sdk-for-go/sdk/azidentity"
274−)
275−
276−cred, err := azidentity.NewClientSecretCredential(tenantID, clientID, secret, nil)
277−handle(err)
278−
279−tk, err := cred.GetToken(
280− context.TODO(), policy.TokenRequestOptions{Scopes: []string{"https://vault.azure.net/.default"}},
281−)
282−if err == nil {
283− token := tk.Token
284−}
285−```
286−
287−Note that `azidentity` credentials use the Microsoft Entra endpoint, which requires OAuth 2 scopes instead of the resource identifiers `autorest/adal` expects. For more information, see [Microsoft Entra ID documentation](https://learn.microsoft.com/entra/identity-platform/permissions-consent-overview).
288−
289−## Use azidentity credentials with older packages
290−
291−The [azidext module](https://pkg.go.dev/github.com/jongio/azidext/go/azidext) provides an adapter for `azidentity` credential types. The adapter enables using the credential types with older Azure SDK clients. For example:
292−
293−```go
294−import (
295− "github.com/Azure/azure-sdk-for-go/sdk/azidentity"
296− "github.com/Azure/azure-sdk-for-go/services/resources/mgmt/2018-06-01/subscriptions"
297− "github.com/jongio/azidext/go/azidext"
298−)
299−
300−cred, err := azidentity.NewClientSecretCredential(tenantID, clientID, secret, nil)
301−handle(err)
302−
303−client := subscriptions.NewClient()
304−client.Authorizer = azidext.NewTokenCredentialAdapter(cred, []string{"https://management.azure.com//.default"})
305−```
306−
307−![Impressions](https://azure-sdk-impressions.azurewebsites.net/api/impressions/azure-sdk-for-go%2Fsdk%2Fazidentity%2FMIGRATION.png)
vendor/github.com/Azure/azure-sdk-for-go/sdk/azidentity/README.mddeleted−258
@@ -1,258 +0,0 @@
1−# Azure Identity Client Module for Go
2−
3−The Azure Identity module provides Microsoft Entra ID ([formerly Azure Active Directory](https://learn.microsoft.com/entra/fundamentals/new-name)) token authentication support across the Azure SDK. It includes a set of `TokenCredential` implementations, which can be used with Azure SDK clients supporting token authentication.
4−
5−[![PkgGoDev](https://pkg.go.dev/badge/github.com/Azure/azure-sdk-for-go/sdk/azidentity)](https://pkg.go.dev/github.com/Azure/azure-sdk-for-go/sdk/azidentity)
6−| [Microsoft Entra ID documentation](https://learn.microsoft.com/entra/identity/)
7−| [Source code](https://github.com/Azure/azure-sdk-for-go/tree/main/sdk/azidentity)
8−
9−# Getting started
10−
11−## Install the module
12−
13−This project uses [Go modules](https://github.com/golang/go/wiki/Modules) for versioning and dependency management.
14−
15−Install the Azure Identity module:
16−
17−```sh
18−go get -u github.com/Azure/azure-sdk-for-go/sdk/azidentity
19−```
20−
21−## Prerequisites
22−
23−- an [Azure subscription](https://azure.microsoft.com/free/)
24−- Go 1.18
25−
26−### Authenticating during local development
27−
28−When debugging and executing code locally, developers typically use their own accounts to authenticate calls to Azure services. The `azidentity` module supports authenticating through developer tools to simplify local development.
29−
30−#### Authenticating via the Azure CLI
31−
32−`DefaultAzureCredential` and `AzureCLICredential` can authenticate as the user
33−signed in to the [Azure CLI](https://learn.microsoft.com/cli/azure). To sign in to the Azure CLI, run `az login`. On a system with a default web browser, the Azure CLI will launch the browser to authenticate a user.
34−
35−When no default browser is available, `az login` will use the device code
36−authentication flow. This can also be selected manually by running `az login --use-device-code`.
37−
38−#### Authenticate via the Azure Developer CLI
39−
40−Developers coding outside of an IDE can also use the [Azure Developer CLI](https://aka.ms/azure-dev) to authenticate. Applications using the `DefaultAzureCredential` or the `AzureDeveloperCLICredential` can use the account logged in to the Azure Developer CLI to authenticate calls in their application when running locally.
41−
42−To authenticate with the Azure Developer CLI, run `azd auth login`. On a system with a default web browser, `azd` will launch the browser to authenticate. On systems without a default web browser, run `azd auth login --use-device-code` to use the device code authentication flow.
43−
44−## Key concepts
45−
46−### Credentials
47−
48−A credential is a type which contains or can obtain the data needed for a
49−service client to authenticate requests. Service clients across the Azure SDK
50−accept a credential instance when they are constructed, and use that credential
51−to authenticate requests.
52−
53−The `azidentity` module focuses on OAuth authentication with Microsoft Entra ID. It offers a variety of credential types capable of acquiring a Microsoft Entra access token. See [Credential Types](#credential-types "Credential Types") for a list of this module's credential types.
54−
55−### DefaultAzureCredential
56−
57−`DefaultAzureCredential` is appropriate for most apps that will be deployed to Azure. It combines common production credentials with development credentials. It attempts to authenticate via the following mechanisms in this order, stopping when one succeeds:
58−
59−![DefaultAzureCredential authentication flow](img/mermaidjs/DefaultAzureCredentialAuthFlow.svg)
60−
61−1. **Environment** - `DefaultAzureCredential` will read account information specified via [environment variables](#environment-variables) and use it to authenticate.
62−1. **Workload Identity** - If the app is deployed on Kubernetes with environment variables set by the workload identity webhook, `DefaultAzureCredential` will authenticate the configured identity.
63−1. **Managed Identity** - If the app is deployed to an Azure host with managed identity enabled, `DefaultAzureCredential` will authenticate with it.
64−1. **Azure CLI** - If a user or service principal has authenticated via the Azure CLI `az login` command, `DefaultAzureCredential` will authenticate that identity.
65−1. **Azure Developer CLI** - If the developer has authenticated via the Azure Developer CLI `azd auth login` command, the `DefaultAzureCredential` will authenticate with that account.
66−
67−> Note: `DefaultAzureCredential` is intended to simplify getting started with the SDK by handling common scenarios with reasonable default behaviors. Developers who want more control or whose scenario isn't served by the default settings should use other credential types.
68−
69−## Managed Identity
70−
71−`DefaultAzureCredential` and `ManagedIdentityCredential` support
72−[managed identity authentication](https://learn.microsoft.com/entra/identity/managed-identities-azure-resources/overview)
73−in any hosting environment which supports managed identities, such as (this list is not exhaustive):
74−* [Azure App Service](https://learn.microsoft.com/azure/app-service/overview-managed-identity)
75−* [Azure Arc](https://learn.microsoft.com/azure/azure-arc/servers/managed-identity-authentication)
76−* [Azure Cloud Shell](https://learn.microsoft.com/azure/cloud-shell/msi-authorization)
77−* [Azure Kubernetes Service](https://learn.microsoft.com/azure/aks/use-managed-identity)
78−* [Azure Service Fabric](https://learn.microsoft.com/azure/service-fabric/concepts-managed-identity)
79−* [Azure Virtual Machines](https://learn.microsoft.com/entra/identity/managed-identities-azure-resources/how-to-use-vm-token)
80−
81−## Examples
82−
83−- [Authenticate with DefaultAzureCredential](#authenticate-with-defaultazurecredential "Authenticate with DefaultAzureCredential")
84−- [Define a custom authentication flow with ChainedTokenCredential](#define-a-custom-authentication-flow-with-chainedtokencredential "Define a custom authentication flow with ChainedTokenCredential")
85−- [Specify a user-assigned managed identity for DefaultAzureCredential](#specify-a-user-assigned-managed-identity-for-defaultazurecredential)
86−
87−### Authenticate with DefaultAzureCredential
88−
89−This example demonstrates authenticating a client from the `armresources` module with `DefaultAzureCredential`.
90−
91−```go
92−cred, err := azidentity.NewDefaultAzureCredential(nil)
93−if err != nil {
94− // handle error
95−}
96−
97−client := armresources.NewResourceGroupsClient("subscription ID", cred, nil)
98−```
99−
100−### Specify a user-assigned managed identity for DefaultAzureCredential
101−
102−To configure `DefaultAzureCredential` to authenticate a user-assigned managed identity, set the environment variable `AZURE_CLIENT_ID` to the identity's client ID.
103−
104−### Define a custom authentication flow with `ChainedTokenCredential`
105−
106−`DefaultAzureCredential` is generally the quickest way to get started developing apps for Azure. For more advanced scenarios, `ChainedTokenCredential` links multiple credential instances to be tried sequentially when authenticating. It will try each chained credential in turn until one provides a token or fails to authenticate due to an error.
107−
108−The following example demonstrates creating a credential, which will attempt to authenticate using managed identity. It will fall back to authenticating via the Azure CLI when a managed identity is unavailable.
109−
110−```go
111−managed, err := azidentity.NewManagedIdentityCredential(nil)
112−if err != nil {
113− // handle error
114−}
115−azCLI, err := azidentity.NewAzureCLICredential(nil)
116−if err != nil {
117− // handle error
118−}
119−chain, err := azidentity.NewChainedTokenCredential([]azcore.TokenCredential{managed, azCLI}, nil)
120−if err != nil {
121− // handle error
122−}
123−
124−client := armresources.NewResourceGroupsClient("subscription ID", chain, nil)
125−```
126−
127−## Credential Types
128−
129−### Authenticating Azure Hosted Applications
130−
131−|Credential|Usage
132−|-|-
133−|[DefaultAzureCredential](https://pkg.go.dev/github.com/Azure/azure-sdk-for-go/sdk/azidentity#DefaultAzureCredential)|Simplified authentication experience for getting started developing Azure apps
134−|[ChainedTokenCredential](https://pkg.go.dev/github.com/Azure/azure-sdk-for-go/sdk/azidentity#ChainedTokenCredential)|Define custom authentication flows, composing multiple credentials
135−|[EnvironmentCredential](https://pkg.go.dev/github.com/Azure/azure-sdk-for-go/sdk/azidentity#EnvironmentCredential)|Authenticate a service principal or user configured by environment variables
136−|[ManagedIdentityCredential](https://pkg.go.dev/github.com/Azure/azure-sdk-for-go/sdk/azidentity#ManagedIdentityCredential)|Authenticate the managed identity of an Azure resource
137−|[WorkloadIdentityCredential](https://pkg.go.dev/github.com/Azure/azure-sdk-for-go/sdk/azidentity#WorkloadIdentityCredential)|Authenticate a workload identity on Kubernetes
138−
139−### Authenticating Service Principals
140−
141−|Credential|Usage
142−|-|-
143−|[AzurePipelinesCredential](https://pkg.go.dev/github.com/Azure/azure-sdk-for-go/sdk/azidentity#AzurePipelinesCredential)|Authenticate an Azure Pipelines [service connection](https://learn.microsoft.com/azure/devops/pipelines/library/service-endpoints?view=azure-devops&tabs=yaml)
144−|[ClientAssertionCredential](https://pkg.go.dev/github.com/Azure/azure-sdk-for-go/sdk/azidentity#ClientAssertionCredential)|Authenticate a service principal with a signed client assertion
145−|[ClientCertificateCredential](https://pkg.go.dev/github.com/Azure/azure-sdk-for-go/sdk/azidentity#ClientCertificateCredential)|Authenticate a service principal with a certificate
146−|[ClientSecretCredential](https://pkg.go.dev/github.com/Azure/azure-sdk-for-go/sdk/azidentity#ClientSecretCredential)|Authenticate a service principal with a secret
147−
148−### Authenticating Users
149−
150−|Credential|Usage
151−|-|-
152−|[InteractiveBrowserCredential](https://pkg.go.dev/github.com/Azure/azure-sdk-for-go/sdk/azidentity#InteractiveBrowserCredential)|Interactively authenticate a user with the default web browser
153−|[DeviceCodeCredential](https://pkg.go.dev/github.com/Azure/azure-sdk-for-go/sdk/azidentity#DeviceCodeCredential)|Interactively authenticate a user on a device with limited UI
154−|[UsernamePasswordCredential](https://pkg.go.dev/github.com/Azure/azure-sdk-for-go/sdk/azidentity#UsernamePasswordCredential)|Authenticate a user with a username and password
155−
156−### Authenticating via Development Tools
157−
158−|Credential|Usage
159−|-|-
160−|[AzureCLICredential](https://pkg.go.dev/github.com/Azure/azure-sdk-for-go/sdk/azidentity#AzureCLICredential)|Authenticate as the user signed in to the Azure CLI
161−|[`AzureDeveloperCLICredential`](https://pkg.go.dev/github.com/Azure/azure-sdk-for-go/sdk/azidentity#AzureDeveloperCLICredential)|Authenticates as the user signed in to the Azure Developer CLI
162−
163−## Environment Variables
164−
165−`DefaultAzureCredential` and `EnvironmentCredential` can be configured with environment variables. Each type of authentication requires values for specific variables:
166−
167−#### Service principal with secret
168−
169−|variable name|value
170−|-|-
171−|`AZURE_CLIENT_ID`|ID of a Microsoft Entra application
172−|`AZURE_TENANT_ID`|ID of the application's Microsoft Entra tenant
173−|`AZURE_CLIENT_SECRET`|one of the application's client secrets
174−
175−#### Service principal with certificate
176−
177−|variable name|value
178−|-|-
179−|`AZURE_CLIENT_ID`|ID of a Microsoft Entra application
180−|`AZURE_TENANT_ID`|ID of the application's Microsoft Entra tenant
181−|`AZURE_CLIENT_CERTIFICATE_PATH`|path to a certificate file including private key
182−|`AZURE_CLIENT_CERTIFICATE_PASSWORD`|password of the certificate file, if any
183−
184−#### Username and password
185−
186−|variable name|value
187−|-|-
188−|`AZURE_CLIENT_ID`|ID of a Microsoft Entra application
189−|`AZURE_USERNAME`|a username (usually an email address)
190−|`AZURE_PASSWORD`|that user's password
191−
192−Configuration is attempted in the above order. For example, if values for a
193−client secret and certificate are both present, the client secret will be used.
194−
195−## Token caching
196−
197−Token caching is an `azidentity` feature that allows apps to:
198−
199−* Cache tokens in memory (default) or on disk (opt-in).
200−* Improve resilience and performance.
201−* Reduce the number of requests made to Microsoft Entra ID to obtain access tokens.
202−
203−For more details, see the [token caching documentation](https://aka.ms/azsdk/go/identity/caching).
204−
205−## Troubleshooting
206−
207−### Error Handling
208−
209−Credentials return an `error` when they fail to authenticate or lack data they require to authenticate. For guidance on resolving errors from specific credential types, see the [troubleshooting guide](https://aka.ms/azsdk/go/identity/troubleshoot).
210−
211−For more details on handling specific Microsoft Entra errors, see the Microsoft Entra [error code documentation](https://learn.microsoft.com/entra/identity-platform/reference-error-codes).
212−
213−### Logging
214−
215−This module uses the classification-based logging implementation in `azcore`. To enable console logging for all SDK modules, set `AZURE_SDK_GO_LOGGING` to `all`. Use the `azcore/log` package to control log event output or to enable logs for `azidentity` only. For example:
216−```go
217−import azlog "github.com/Azure/azure-sdk-for-go/sdk/azcore/log"
218−
219−// print log output to stdout
220−azlog.SetListener(func(event azlog.Event, s string) {
221− fmt.Println(s)
222−})
223−
224−// include only azidentity credential logs
225−azlog.SetEvents(azidentity.EventAuthentication)
226−```
227−
228−Credentials log basic information only, such as `GetToken` success or failure and errors. These log entries don't contain authentication secrets but may contain sensitive information.
229−
230−## Next steps
231−
232−Client and management modules listed on the [Azure SDK releases page](https://azure.github.io/azure-sdk/releases/latest/go.html) support authenticating with `azidentity` credential types. You can learn more about using these libraries in their documentation, which is linked from the release page.
233−
234−## Provide Feedback
235−
236−If you encounter bugs or have suggestions, please
237−[open an issue](https://github.com/Azure/azure-sdk-for-go/issues).
238−
239−## Contributing
240−
241−This project welcomes contributions and suggestions. Most contributions require
242−you to agree to a Contributor License Agreement (CLA) declaring that you have
243−the right to, and actually do, grant us the rights to use your contribution.
244−For details, visit [https://cla.microsoft.com](https://cla.microsoft.com).
245−
246−When you submit a pull request, a CLA-bot will automatically determine whether
247−you need to provide a CLA and decorate the PR appropriately (e.g., label,
248−comment). Simply follow the instructions provided by the bot. You will only
249−need to do this once across all repos using our CLA.
250−
251−This project has adopted the
252−[Microsoft Open Source Code of Conduct](https://opensource.microsoft.com/codeofconduct/).
253−For more information, see the
254−[Code of Conduct FAQ](https://opensource.microsoft.com/codeofconduct/faq/)
255−or contact [opencode@microsoft.com](mailto:opencode@microsoft.com) with any
256−additional questions or comments.
257−
258−![Impressions](https://azure-sdk-impressions.azurewebsites.net/api/impressions/azure-sdk-for-go%2Fsdk%2Fazidentity%2FREADME.png)
vendor/github.com/Azure/azure-sdk-for-go/sdk/azidentity/TOKEN_CACHING.MDdeleted−71
@@ -1,71 +0,0 @@
1−## Token caching in the Azure Identity client module
2−
3−*Token caching* is a feature provided by the Azure Identity library that allows apps to:
4−
5−- Improve their resilience and performance.
6−- Reduce the number of requests made to Microsoft Entra ID to obtain access tokens.
7−- Reduce the number of times the user is prompted to authenticate.
8−
9−When an app needs to access a protected Azure resource, it typically needs to obtain an access token from Entra ID. Obtaining that token involves sending a request to Entra ID and may also involve prompting the user. Entra ID then validates the credentials provided in the request and issues an access token.
10−
11−Token caching, via the Azure Identity library, allows the app to store this access token [in memory](#in-memory-token-caching), where it's accessible to the current process, or [on disk](#persistent-token-caching) where it can be accessed across application or process invocations. The token can then be retrieved quickly and easily the next time the app needs to access the same resource. The app can avoid making another request to Entra ID, which reduces network traffic and improves resilience. Additionally, in scenarios where the app is authenticating users, token caching also avoids prompting the user each time new tokens are requested.
12−
13−### In-memory token caching
14−
15−*In-memory token caching* is the default option provided by the Azure Identity library. This caching approach allows apps to store access tokens in memory. With in-memory token caching, the library first determines if a valid access token for the requested resource is already stored in memory. If a valid token is found, it's returned to the app without the need to make another request to Entra ID. If a valid token isn't found, the library will automatically acquire a token by sending a request to Entra ID. The in-memory token cache provided by the Azure Identity library is thread-safe.
16−
17−**Note:** When Azure Identity library credentials are used with Azure service libraries (for example, Azure Blob Storage), the in-memory token caching is active in the `Pipeline` layer as well. All `TokenCredential` implementations are supported there, including custom implementations external to the Azure Identity library.
18−
19−#### Caching cannot be disabled
20−
21−As there are many levels of caching, it's not possible disable in-memory caching. However, the in-memory cache may be cleared by creating a new credential instance.
22−
23−### Persistent token caching
24−
25−> Only azidentity v1.5.0-beta versions support persistent token caching
26−
27−*Persistent disk token caching* is an opt-in feature in the Azure Identity library. The feature allows apps to cache access tokens in an encrypted, persistent storage mechanism. As indicated in the following table, the storage mechanism differs across operating systems.
28−
29−| Operating system | Storage mechanism |
30−|------------------|---------------------------------------|
31−| Linux | kernel key retention service (keyctl) |
32−| macOS | Keychain |
33−| Windows | DPAPI |
34−
35−By default the token cache will protect any data which is persisted using the user data protection APIs available on the current platform.
36−However, there are cases where no data protection is available, and applications may choose to allow storing the token cache in an unencrypted state by setting `TokenCachePersistenceOptions.AllowUnencryptedStorage` to `true`. This allows a credential to fall back to unencrypted storage if it can't encrypt the cache. However, we do not recommend using this storage method due to its significantly lower security measures. In addition, tokens are not encrypted solely to the current user, which could potentially allow unauthorized access to the cache by individuals with machine access.
37−
38−With persistent disk token caching enabled, the library first determines if a valid access token for the requested resource is already stored in the persistent cache. If a valid token is found, it's returned to the app without the need to make another request to Entra ID. Additionally, the tokens are preserved across app runs, which:
39−
40−- Makes the app more resilient to failures.
41−- Ensures the app can continue to function during an Entra ID outage or disruption.
42−- Avoids having to prompt users to authenticate each time the process is restarted.
43−
44−>IMPORTANT! The token cache contains sensitive data and **MUST** be protected to prevent compromising accounts. All application decisions regarding the persistence of the token cache must consider that a breach of its content will fully compromise all the accounts it contains.
45−
46−#### Example code
47−
48−See the [package documentation](https://pkg.go.dev/github.com/Azure/azure-sdk-for-go/sdk/azidentity@v1.6.0-beta.2#pkg-overview) for example code demonstrating how to configure persistent caching and access cached data.
49−
50−### Credentials supporting token caching
51−
52−The following table indicates the state of in-memory and persistent caching in each credential type.
53−
54−**Note:** In-memory caching is activated by default. Persistent token caching needs to be enabled as shown in [this example](https://pkg.go.dev/github.com/Azure/azure-sdk-for-go/sdk/azidentity@v1.5.0-beta.1#example-package-PersistentCache).
55−
56−| Credential | In-memory token caching | Persistent token caching |
57−|--------------------------------|---------------------------------------------------------------------|--------------------------|
58−| `AzureCLICredential` | Not Supported | Not Supported |
59−| `AzureDeveloperCLICredential` | Not Supported | Not Supported |
60−| `AzurePipelinesCredential` | Supported | Supported |
61−| `ClientAssertionCredential` | Supported | Supported |
62−| `ClientCertificateCredential` | Supported | Supported |
63−| `ClientSecretCredential` | Supported | Supported |
64−| `DefaultAzureCredential` | Supported if the target credential in the default chain supports it | Not Supported |
65−| `DeviceCodeCredential` | Supported | Supported |
66−| `EnvironmentCredential` | Supported | Not Supported |
67−| `InteractiveBrowserCredential` | Supported | Supported |
68−| `ManagedIdentityCredential` | Supported | Not Supported |
69−| `OnBehalfOfCredential` | Supported | Supported |
70−| `UsernamePasswordCredential` | Supported | Supported |
71−| `WorkloadIdentityCredential` | Supported | Supported |
vendor/github.com/Azure/azure-sdk-for-go/sdk/azidentity/TROUBLESHOOTING.mddeleted−241
@@ -1,241 +0,0 @@
1−# Troubleshoot Azure Identity authentication issues
2−
3−This troubleshooting guide covers failure investigation techniques, common errors for the credential types in the `azidentity` module, and mitigation steps to resolve these errors.
4−
5−## Table of contents
6−
7−- [Handle azidentity errors](#handle-azidentity-errors)
8− - [Permission issues](#permission-issues)
9−- [Find relevant information in errors](#find-relevant-information-in-errors)
10−- [Enable and configure logging](#enable-and-configure-logging)
11−- [Troubleshoot AzureCLICredential authentication issues](#troubleshoot-azureclicredential-authentication-issues)
12−- [Troubleshoot AzureDeveloperCLICredential authentication issues](#troubleshoot-azuredeveloperclicredential-authentication-issues)
13−- [Troubleshoot AzurePipelinesCredential authentication issues](#troubleshoot-azurepipelinescredential-authentication-issues)
14−- [Troubleshoot ClientCertificateCredential authentication issues](#troubleshoot-clientcertificatecredential-authentication-issues)
15−- [Troubleshoot ClientSecretCredential authentication issues](#troubleshoot-clientsecretcredential-authentication-issues)
16−- [Troubleshoot DefaultAzureCredential authentication issues](#troubleshoot-defaultazurecredential-authentication-issues)
17−- [Troubleshoot EnvironmentCredential authentication issues](#troubleshoot-environmentcredential-authentication-issues)
18−- [Troubleshoot ManagedIdentityCredential authentication issues](#troubleshoot-managedidentitycredential-authentication-issues)
19− - [Azure App Service and Azure Functions managed identity](#azure-app-service-and-azure-functions-managed-identity)
20− - [Azure Kubernetes Service managed identity](#azure-kubernetes-service-managed-identity)
21− - [Azure Virtual Machine managed identity](#azure-virtual-machine-managed-identity)
22−- [Troubleshoot UsernamePasswordCredential authentication issues](#troubleshoot-usernamepasswordcredential-authentication-issues)
23−- [Troubleshoot WorkloadIdentityCredential authentication issues](#troubleshoot-workloadidentitycredential-authentication-issues)
24−- [Get additional help](#get-additional-help)
25−
26−## Handle azidentity errors
27−
28−Any service client method that makes a request to the service may return an error due to authentication failure. This is because the credential authenticates on the first call to the service and on any subsequent call that needs to refresh an access token. Authentication errors include a description of the failure and possibly an error message from Microsoft Entra ID. Depending on the application, these errors may or may not be recoverable.
29−
30−### Permission issues
31−
32−Service client errors with a status code of 401 or 403 often indicate that authentication succeeded but the caller doesn't have permission to access the specified API. Check the service documentation to determine which RBAC roles are needed for the request, and ensure the authenticated user or service principal has the appropriate role assignments.
33−
34−## Find relevant information in errors
35−
36−Authentication errors can include responses from Microsoft Entra ID and often contain information helpful in diagnosis. Consider the following error message:
37−
38−```
39−ClientSecretCredential authentication failed
40−POST https://login.microsoftonline.com/3c631bb7-a9f7-4343-a5ba-a615913/oauth2/v2.0/token
41−--------------------------------------------------------------------------------
42−RESPONSE 401 Unauthorized
43−--------------------------------------------------------------------------------
44−{
45− "error": "invalid_client",
46− "error_description": "AADSTS7000215: Invalid client secret provided. Ensure the secret being sent in the request is the client secret value, not the client secret ID, for a secret added to app '86be4c01-505b-45e9-bfc0-9b825fd84'.\r\nTrace ID: 03da4b8e-5ffe-48ca-9754-aff4276f0100\r\nCorrelation ID: 7b12f9bb-2eef-42e3-ad75-eee69ec9088d\r\nTimestamp: 2022-03-02 18:25:26Z",
47− "error_codes": [
48− 7000215
49− ],
50− "timestamp": "2022-03-02 18:25:26Z",
51− "trace_id": "03da4b8e-5ffe-48ca-9754-aff4276f0100",
52− "correlation_id": "7b12f9bb-2eef-42e3-ad75-eee69ec9088d",
53− "error_uri": "https://login.microsoftonline.com/error?code=7000215"
54−}
55−--------------------------------------------------------------------------------
56−```
57−
58−This error contains several pieces of information:
59−
60−- __Failing Credential Type__: The type of credential that failed to authenticate. This can be helpful when diagnosing issues with chained credential types such as `DefaultAzureCredential` or `ChainedTokenCredential`.
61−
62−- __Microsoft Entra ID Error Code and Message__: The error code and message returned by Microsoft Entra ID. This can give insight into the specific reason the request failed. For instance, in this case authentication failed because the provided client secret is incorrect. [Microsoft Entra ID documentation](https://learn.microsoft.com/entra/identity-platform/reference-error-codes#aadsts-error-codes) has more information on AADSTS error codes.
63−
64−- __Correlation ID and Timestamp__: The correlation ID and timestamp identify the request in server-side logs. This information can be useful to support engineers diagnosing unexpected Microsoft Entra failures.
65−
66−### Enable and configure logging
67−
68−`azidentity` provides the same logging capabilities as the rest of the Azure SDK. The simplest way to see the logs to help debug authentication issues is to print credential logs to the console.
69−```go
70−import azlog "github.com/Azure/azure-sdk-for-go/sdk/azcore/log"
71−
72−// print log output to stdout
73−azlog.SetListener(func(event azlog.Event, s string) {
74− fmt.Println(s)
75−})
76−
77−// include only azidentity credential logs
78−azlog.SetEvents(azidentity.EventAuthentication)
79−```
80−
81−<a id="dac"></a>
82−## Troubleshoot DefaultAzureCredential authentication issues
83−
84−| Error |Description| Mitigation |
85−|---|---|---|
86−|"DefaultAzureCredential failed to acquire a token"|No credential in the `DefaultAzureCredential` chain provided a token|<ul><li>[Enable logging](#enable-and-configure-logging) to get further diagnostic information.</li><li>Consult the troubleshooting guide for underlying credential types for more information.</li><ul><li>[EnvironmentCredential](#troubleshoot-environmentcredential-authentication-issues)</li><li>[ManagedIdentityCredential](#troubleshoot-managedidentitycredential-authentication-issues)</li><li>[AzureCLICredential](#troubleshoot-azureclicredential-authentication-issues)</li></ul>|
87−|Error from the client with a status code of 401 or 403|Authentication succeeded but the authorizing Azure service responded with a 401 (Unauthorized), or 403 (Forbidden) status code|<ul><li>[Enable logging](#enable-and-configure-logging) to determine which credential in the chain returned the authenticating token.</li><li>If an unexpected credential is returning a token, check application configuration such as environment variables.</li><li>Ensure the correct role is assigned to the authenticated identity. For example, a service specific role rather than the subscription Owner role.</li></ul>|
88−|"managed identity timed out"|`DefaultAzureCredential` sets a short timeout on its first managed identity authentication attempt to prevent very long timeouts during local development when no managed identity is available. That timeout causes this error in production when an application requests a token before the hosting environment is ready to provide one.|Use [ManagedIdentityCredential](https://pkg.go.dev/github.com/Azure/azure-sdk-for-go/sdk/azidentity#ManagedIdentityCredential) directly, at least in production. It doesn't set a timeout on its authentication attempts.|
89−
90−## Troubleshoot EnvironmentCredential authentication issues
91−
92−| Error Message |Description| Mitigation |
93−|---|---|---|
94−|Missing or incomplete environment variable configuration|A valid combination of environment variables wasn't set|Ensure the appropriate environment variables are set for the intended authentication method as described in the [module documentation](https://pkg.go.dev/github.com/Azure/azure-sdk-for-go/sdk/azidentity#EnvironmentCredential)|
95−
96−<a id="client-secret"></a>
97−## Troubleshoot ClientSecretCredential authentication issues
98−
99−| Error Code | Issue | Mitigation |
100−|---|---|---|
101−|AADSTS7000215|An invalid client secret was provided.|Ensure the secret provided to the credential constructor is valid. If unsure, create a new client secret using the Azure portal. Details on creating a new client secret are in [Microsoft Entra ID documentation](https://learn.microsoft.com/entra/identity-platform/howto-create-service-principal-portal#option-2-create-a-new-application-secret).|
102−|AADSTS7000222|An expired client secret was provided.|Create a new client secret using the Azure portal. Details on creating a new client secret are in [Microsoft Entra ID documentation](https://learn.microsoft.com/entra/identity-platform/howto-create-service-principal-portal#option-2-create-a-new-application-secret).|
103−|AADSTS700016|The specified application wasn't found in the specified tenant.|Ensure the client and tenant IDs provided to the credential constructor are correct for your application registration. For multi-tenant apps, ensure the application has been added to the desired tenant by a tenant admin. To add a new application in the desired tenant, follow the [Microsoft Entra ID instructions](https://learn.microsoft.com/entra/identity-platform/howto-create-service-principal-portal).|
104−
105−<a id="client-cert"></a>
106−## Troubleshoot ClientCertificateCredential authentication issues
107−
108−| Error Code | Description | Mitigation |
109−|---|---|---|
110−|AADSTS700027|Client assertion contains an invalid signature.|Ensure the specified certificate has been uploaded to the application registration as described in [Microsoft Entra ID documentation](https://learn.microsoft.com/entra/identity-platform/howto-create-service-principal-portal#option-1-upload-a-certificate).|
111−|AADSTS700016|The specified application wasn't found in the specified tenant.|Ensure the client and tenant IDs provided to the credential constructor are correct for your application registration. For multi-tenant apps, ensure the application has been added to the desired tenant by a tenant admin. To add a new application in the desired tenant, follow the [Microsoft Entra ID instructions](https://learn.microsoft.com/entra/identity-platform/howto-create-service-principal-portal).|
112−
113−<a id="username-password"></a>
114−## Troubleshoot UsernamePasswordCredential authentication issues
115−
116−| Error Code | Issue | Mitigation |
117−|---|---|---|
118−|AADSTS50126|The provided username or password is invalid.|Ensure the username and password provided to the credential constructor are valid.|
119−
120−<a id="managed-id"></a>
121−## Troubleshoot ManagedIdentityCredential authentication issues
122−
123−`ManagedIdentityCredential` is designed to work on a variety of Azure hosts support managed identity. Configuration and troubleshooting vary from host to host. The below table lists the Azure hosts that can be assigned a managed identity and are supported by `ManagedIdentityCredential`.
124−
125−|Host Environment| | |
126−|---|---|---|
127−|Azure Virtual Machines and Scale Sets|[Configuration](https://learn.microsoft.com/entra/identity/managed-identities-azure-resources/qs-configure-portal-windows-vm)|[Troubleshooting](#azure-virtual-machine-managed-identity)|
128−|Azure App Service and Azure Functions|[Configuration](https://learn.microsoft.com/azure/app-service/overview-managed-identity)|[Troubleshooting](#azure-app-service-and-azure-functions-managed-identity)|
129−|Azure Kubernetes Service|[Configuration](https://azure.github.io/aad-pod-identity/docs/)|[Troubleshooting](#azure-kubernetes-service-managed-identity)|
130−|Azure Arc|[Configuration](https://learn.microsoft.com/azure/azure-arc/servers/managed-identity-authentication)||
131−|Azure Service Fabric|[Configuration](https://learn.microsoft.com/azure/service-fabric/concepts-managed-identity)||
132−
133−### Azure Virtual Machine managed identity
134−
135−| Error Message |Description| Mitigation |
136−|---|---|---|
137−|The requested identity hasn’t been assigned to this resource.|The IMDS endpoint responded with a status code of 400, indicating the requested identity isn’t assigned to the VM.|If using a user assigned identity, ensure the specified ID is correct.<p/><p/>If using a system assigned identity, make sure it has been enabled as described in [managed identity documentation](https://learn.microsoft.com/entra/identity/managed-identities-azure-resources/qs-configure-portal-windows-vm#enable-system-assigned-managed-identity-on-an-existing-vm).|
138−|The request failed due to a gateway error.|The request to the IMDS endpoint failed due to a gateway error, 502 or 504 status code.|IMDS doesn't support requests via proxy or gateway. Disable proxies or gateways running on the VM for requests to the IMDS endpoint `http://169.254.169.254`|
139−|No response received from the managed identity endpoint.|No response was received for the request to IMDS or the request timed out.|<ul><li>Ensure the VM is configured for managed identity as described in [managed identity documentation](https://learn.microsoft.com/entra/identity/managed-identities-azure-resources/qs-configure-portal-windows-vm).</li><li>Verify the IMDS endpoint is reachable on the VM. See [below](#verify-imds-is-available-on-the-vm) for instructions.</li></ul>|
140−|Multiple attempts failed to obtain a token from the managed identity endpoint.|The credential has exhausted its retries for a token request.|<ul><li>Refer to the error message for more details on specific failures.<li>Ensure the VM is configured for managed identity as described in [managed identity documentation](https://learn.microsoft.com/entra/identity/managed-identities-azure-resources/qs-configure-portal-windows-vm).</li><li>Verify the IMDS endpoint is reachable on the VM. See [below](#verify-imds-is-available-on-the-vm) for instructions.</li></ul>|
141−
142−#### Verify IMDS is available on the VM
143−
144−If you have access to the VM, you can use `curl` to verify the managed identity endpoint is available.
145−
146−```sh
147−curl 'http://169.254.169.254/metadata/identity/oauth2/token?resource=https://management.core.windows.net&api-version=2018-02-01' -H "Metadata: true"
148−```
149−
150−> This command's output will contain an access token and SHOULD NOT BE SHARED, to avoid compromising account security.
151−
152−### Azure App Service and Azure Functions managed identity
153−
154−| Error Message |Description| Mitigation |
155−|---|---|---|
156−|Get "`http://169.254.169.254/...`" i/o timeout|The App Service host hasn't set environment variables for managed identity configuration.|<ul><li>Ensure the App Service is configured for managed identity as described in [App Service documentation](https://learn.microsoft.com/azure/app-service/overview-managed-identity).</li><li>Verify the App Service environment is properly configured and the managed identity endpoint is available. See [below](#verify-the-app-service-managed-identity-endpoint-is-available) for instructions.</li></ul>|
157−
158−#### Verify the App Service managed identity endpoint is available
159−
160−If you can SSH into the App Service, you can verify managed identity is available in the environment. First ensure the environment variables `IDENTITY_ENDPOINT` and `IDENTITY_SECRET` are set. Then you can verify the managed identity endpoint is available using `curl`.
161−
162−```sh
163−curl "$IDENTITY_ENDPOINT?resource=https://management.core.windows.net&api-version=2019-08-01" -H "X-IDENTITY-HEADER: $IDENTITY_HEADER"
164−```
165−
166−> This command's output will contain an access token and SHOULD NOT BE SHARED, to avoid compromising account security.
167−
168−### Azure Kubernetes Service managed identity
169−
170−#### Pod Identity
171−
172−| Error Message |Description| Mitigation |
173−|---|---|---|
174−|"no azure identity found for request clientID"|The application attempted to authenticate before an identity was assigned to its pod|Verify the pod is labeled correctly. This also occurs when a correctly labeled pod authenticates before the identity is ready. To prevent initialization races, configure NMI to set the Retry-After header in its responses as described in [Pod Identity documentation](https://azure.github.io/aad-pod-identity/docs/configure/feature_flags/#set-retry-after-header-in-nmi-response).
175−
176−<a id="azure-cli"></a>
177−## Troubleshoot AzureCLICredential authentication issues
178−
179−| Error Message |Description| Mitigation |
180−|---|---|---|
181−|Azure CLI not found on path|The Azure CLI isn’t installed or isn't on the application's path.|<ul><li>Ensure the Azure CLI is installed as described in [Azure CLI documentation](https://learn.microsoft.com/cli/azure/install-azure-cli).</li><li>Validate the installation location is in the application's `PATH` environment variable.</li></ul>|
182−|Please run 'az login' to set up account|No account is currently logged into the Azure CLI, or the login has expired.|<ul><li>Run `az login` to log into the Azure CLI. More information about Azure CLI authentication is available in the [Azure CLI documentation](https://learn.microsoft.com/cli/azure/authenticate-azure-cli).</li><li>Verify that the Azure CLI can obtain tokens. See [below](#verify-the-azure-cli-can-obtain-tokens) for instructions.</li></ul>|
183−
184−#### Verify the Azure CLI can obtain tokens
185−
186−You can manually verify that the Azure CLI can authenticate and obtain tokens. First, use the `account` command to verify the logged in account.
187−
188−```azurecli
189−az account show
190−```
191−
192−Once you've verified the Azure CLI is using the correct account, you can validate that it's able to obtain tokens for that account.
193−
194−```azurecli
195−az account get-access-token --output json --resource https://management.core.windows.net
196−```
197−
198−> This command's output will contain an access token and SHOULD NOT BE SHARED, to avoid compromising account security.
199−
200−<a id="azd"></a>
201−## Troubleshoot AzureDeveloperCLICredential authentication issues
202−
203−| Error Message |Description| Mitigation |
204−|---|---|---|
205−|Azure Developer CLI not found on path|The Azure Developer CLI isn't installed or couldn't be found.|<ul><li>Ensure the Azure Developer CLI is properly installed. See the installation instructions at [Install or update the Azure Developer CLI](https://learn.microsoft.com/azure/developer/azure-developer-cli/install-azd).</li><li>Validate the installation location has been added to the `PATH` environment variable.</li></ul>|
206−|Please run "azd auth login"|No account is logged into the Azure Developer CLI, or the login has expired.|<ul><li>Log in to the Azure Developer CLI using the `azd login` command.</li><li>Validate that the Azure Developer CLI can obtain tokens. For instructions, see [Verify the Azure Developer CLI can obtain tokens](#verify-the-azure-developer-cli-can-obtain-tokens).</li></ul>|
207−
208−#### Verify the Azure Developer CLI can obtain tokens
209−
210−You can manually verify that the Azure Developer CLI is properly authenticated and can obtain tokens. First, use the `config` command to verify the account that is currently logged in to the Azure Developer CLI.
211−
212−```sh
213−azd config list
214−```
215−
216−Once you've verified the Azure Developer CLI is using correct account, you can validate that it's able to obtain tokens for this account.
217−
218−```sh
219−azd auth token --output json --scope https://management.core.windows.net/.default
220−```
221−>Note that output of this command will contain a valid access token, and SHOULD NOT BE SHARED to avoid compromising account security.
222−
223−<a id="workload"></a>
224−## Troubleshoot `WorkloadIdentityCredential` authentication issues
225−
226−| Error Message |Description| Mitigation |
227−|---|---|---|
228−|no client ID/tenant ID/token file specified|Incomplete configuration|In most cases these values are provided via environment variables set by Azure Workload Identity.<ul><li>If your application runs on Azure Kubernetes Servide (AKS) or a cluster that has deployed the Azure Workload Identity admission webhook, check pod labels and service account configuration. See the [AKS documentation](https://learn.microsoft.com/azure/aks/workload-identity-deploy-cluster#disable-workload-identity) and [Azure Workload Identity troubleshooting guide](https://azure.github.io/azure-workload-identity/docs/troubleshooting.html) for more details.<li>If your application isn't running on AKS or your cluster hasn't deployed the Workload Identity admission webhook, set these values in `WorkloadIdentityCredentialOptions`
229−
230−<a id="apc"></a>
231−## Troubleshoot AzurePipelinesCredential authentication issues
232−
233−| Error Message |Description| Mitigation |
234−|---|---|---|
235−| AADSTS900023: Specified tenant identifier 'some tenant ID' is neither a valid DNS name, nor a valid external domain.|The `tenantID` argument to `NewAzurePipelinesCredential` is incorrect| Verify the tenant ID. It must identify the tenant of the user-assigned managed identity or service principal configured for the service connection.|
236−| No service connection found with identifier |The `serviceConnectionID` argument to `NewAzurePipelinesCredential` is incorrect| Verify the service connection ID. This parameter refers to the `resourceId` of the Azure Service Connection. It can also be found in the query string of the service connection's configuration in Azure DevOps. [Azure Pipelines documentation](https://learn.microsoft.com/azure/devops/pipelines/library/service-endpoints?view=azure-devops&tabs=yaml) has more information about service connections.|
237−|302 (Found) response from OIDC endpoint|The `systemAccessToken` argument to `NewAzurePipelinesCredential` is incorrect|Check pipeline configuration. This value comes from the predefined variable `System.AccessToken` [as described in Azure Pipelines documentation](https://learn.microsoft.com/azure/devops/pipelines/build/variables?view=azure-devops&tabs=yaml#systemaccesstoken).|
238−
239−## Get additional help
240−
241−Additional information on ways to reach out for support can be found in [SUPPORT.md](https://github.com/Azure/azure-sdk-for-go/blob/main/SUPPORT.md).
vendor/github.com/Azure/azure-sdk-for-go/sdk/azidentity/assets.jsondeleted−6
@@ -1,6 +0,0 @@
1−{
2− "AssetsRepo": "Azure/azure-sdk-assets",
3− "AssetsRepoPrefixPath": "go",
4− "TagPrefix": "go/azidentity",
5− "Tag": "go/azidentity_087379b475"
6−}
vendor/github.com/Azure/azure-sdk-for-go/sdk/azidentity/authentication_record.godeleted−95
@@ -1,95 +0,0 @@
1−//go:build go1.18
2−// +build go1.18
3−
4−// Copyright (c) Microsoft Corporation. All rights reserved.
5−// Licensed under the MIT License.
6−
7−package azidentity
8−
9−import (
10− "encoding/json"
11− "errors"
12− "fmt"
13− "net/url"
14− "strings"
15−
16− "github.com/AzureAD/microsoft-authentication-library-for-go/apps/public"
17−)
18−
19−var supportedAuthRecordVersions = []string{"1.0"}
20−
21−// authenticationRecord is non-secret account information about an authenticated user that user credentials such as
22−// [DeviceCodeCredential] and [InteractiveBrowserCredential] can use to access previously cached authentication
23−// data. Call these credentials' Authenticate method to get an authenticationRecord for a user.
24−type authenticationRecord struct {
25− // Authority is the URL of the authority that issued the token.
26− Authority string `json:"authority"`
27−
28− // ClientID is the ID of the application that authenticated the user.
29− ClientID string `json:"clientId"`
30−
31− // HomeAccountID uniquely identifies the account.
32− HomeAccountID string `json:"homeAccountId"`
33−
34− // TenantID identifies the tenant in which the user authenticated.
35− TenantID string `json:"tenantId"`
36−
37− // Username is the user's preferred username.
38− Username string `json:"username"`
39−
40− // Version of the AuthenticationRecord.
41− Version string `json:"version"`
42−}
43−
44−// UnmarshalJSON implements json.Unmarshaler for AuthenticationRecord
45−func (a *authenticationRecord) UnmarshalJSON(b []byte) error {
46− // Default unmarshaling is fine but we want to return an error if the record's version isn't supported i.e., we
47− // want to inspect the unmarshalled values before deciding whether to return an error. Unmarshaling a formally
48− // different type enables this by assigning all the fields without recursing into this method.
49− type r authenticationRecord
50− err := json.Unmarshal(b, (*r)(a))
51− if err != nil {
52− return err
53− }
54− if a.Version == "" {
55− return errors.New("AuthenticationRecord must have a version")
56− }
57− for _, v := range supportedAuthRecordVersions {
58− if a.Version == v {
59− return nil
60− }
61− }
62− return fmt.Errorf("unsupported AuthenticationRecord version %q. This module supports %v", a.Version, supportedAuthRecordVersions)
63−}
64−
65−// account returns the AuthenticationRecord as an MSAL Account. The account is zero-valued when the AuthenticationRecord is zero-valued.
66−func (a *authenticationRecord) account() public.Account {
67− return public.Account{
68− Environment: a.Authority,
69− HomeAccountID: a.HomeAccountID,
70− PreferredUsername: a.Username,
71− }
72−}
73−
74−func newAuthenticationRecord(ar public.AuthResult) (authenticationRecord, error) {
75− u, err := url.Parse(ar.IDToken.Issuer)
76− if err != nil {
77− return authenticationRecord{}, fmt.Errorf("Authenticate expected a URL issuer but got %q", ar.IDToken.Issuer)
78− }
79− tenant := ar.IDToken.TenantID
80− if tenant == "" {
81− tenant = strings.Trim(u.Path, "/")
82− }
83− username := ar.IDToken.PreferredUsername
84− if username == "" {
85− username = ar.IDToken.UPN
86− }
87− return authenticationRecord{
88− Authority: fmt.Sprintf("%s://%s", u.Scheme, u.Host),
89− ClientID: ar.IDToken.Audience,
90− HomeAccountID: ar.Account.HomeAccountID,
91− TenantID: tenant,
92− Username: username,
93− Version: "1.0",
94− }, nil
95−}
vendor/github.com/Azure/azure-sdk-for-go/sdk/azidentity/azidentity.godeleted−190
@@ -1,190 +0,0 @@
1−//go:build go1.18
2−// +build go1.18
3−
4−// Copyright (c) Microsoft Corporation. All rights reserved.
5−// Licensed under the MIT License.
6−
7−package azidentity
8−
9−import (
10− "bytes"
11− "context"
12− "errors"
13− "fmt"
14− "io"
15− "net/http"
16− "net/url"
17− "os"
18−
19− "github.com/Azure/azure-sdk-for-go/sdk/azcore"
20− "github.com/Azure/azure-sdk-for-go/sdk/azcore/cloud"
21− "github.com/Azure/azure-sdk-for-go/sdk/azcore/runtime"
22− "github.com/Azure/azure-sdk-for-go/sdk/azcore/streaming"
23− "github.com/Azure/azure-sdk-for-go/sdk/azidentity/internal"
24− "github.com/AzureAD/microsoft-authentication-library-for-go/apps/confidential"
25− "github.com/AzureAD/microsoft-authentication-library-for-go/apps/public"
26−)
27−
28−const (
29− azureAdditionallyAllowedTenants = "AZURE_ADDITIONALLY_ALLOWED_TENANTS"
30− azureAuthorityHost = "AZURE_AUTHORITY_HOST"
31− azureClientCertificatePassword = "AZURE_CLIENT_CERTIFICATE_PASSWORD"
32− azureClientCertificatePath = "AZURE_CLIENT_CERTIFICATE_PATH"
33− azureClientID = "AZURE_CLIENT_ID"
34− azureClientSecret = "AZURE_CLIENT_SECRET"
35− azureFederatedTokenFile = "AZURE_FEDERATED_TOKEN_FILE"
36− azurePassword = "AZURE_PASSWORD"
37− azureRegionalAuthorityName = "AZURE_REGIONAL_AUTHORITY_NAME"
38− azureTenantID = "AZURE_TENANT_ID"
39− azureUsername = "AZURE_USERNAME"
40−
41− organizationsTenantID = "organizations"
42− developerSignOnClientID = "04b07795-8ddb-461a-bbee-02f9e1bf7b46"
43− defaultSuffix = "/.default"
44−
45− traceNamespace = "Microsoft.Entra"
46− traceOpGetToken = "GetToken"
47− traceOpAuthenticate = "Authenticate"
48−)
49−
50−var (
51− // capability CP1 indicates the client application is capable of handling CAE claims challenges
52− cp1 = []string{"CP1"}
53− errInvalidTenantID = errors.New("invalid tenantID. You can locate your tenantID by following the instructions listed here: https://learn.microsoft.com/partner-center/find-ids-and-domain-names")
54−)
55−
56−// tokenCachePersistenceOptions contains options for persistent token caching
57−type tokenCachePersistenceOptions = internal.TokenCachePersistenceOptions
58−
59−// setAuthorityHost initializes the authority host for credentials. Precedence is:
60−// 1. cloud.Configuration.ActiveDirectoryAuthorityHost value set by user
61−// 2. value of AZURE_AUTHORITY_HOST
62−// 3. default: Azure Public Cloud
63−func setAuthorityHost(cc cloud.Configuration) (string, error) {
64− host := cc.ActiveDirectoryAuthorityHost
65− if host == "" {
66− if len(cc.Services) > 0 {
67− return "", errors.New("missing ActiveDirectoryAuthorityHost for specified cloud")
68− }
69− host = cloud.AzurePublic.ActiveDirectoryAuthorityHost
70− if envAuthorityHost := os.Getenv(azureAuthorityHost); envAuthorityHost != "" {
71− host = envAuthorityHost
72− }
73− }
74− u, err := url.Parse(host)
75− if err != nil {
76− return "", err
77− }
78− if u.Scheme != "https" {
79− return "", errors.New("cannot use an authority host without https")
80− }
81− return host, nil
82−}
83−
84−// resolveAdditionalTenants returns a copy of tenants, simplified when tenants contains a wildcard
85−func resolveAdditionalTenants(tenants []string) []string {
86− if len(tenants) == 0 {
87− return nil
88− }
89− for _, t := range tenants {
90− // a wildcard makes all other values redundant
91− if t == "*" {
92− return []string{"*"}
93− }
94− }
95− cp := make([]string, len(tenants))
96− copy(cp, tenants)
97− return cp
98−}
99−
100−// resolveTenant returns the correct tenant for a token request
101−func resolveTenant(defaultTenant, specified, credName string, additionalTenants []string) (string, error) {
102− if specified == "" || specified == defaultTenant {
103− return defaultTenant, nil
104− }
105− if defaultTenant == "adfs" {
106− return "", errors.New("ADFS doesn't support tenants")
107− }
108− if !validTenantID(specified) {
109− return "", errInvalidTenantID
110− }
111− for _, t := range additionalTenants {
112− if t == "*" || t == specified {
113− return specified, nil
114− }
115− }
116− return "", fmt.Errorf(`%s isn't configured to acquire tokens for tenant %q. To enable acquiring tokens for this tenant add it to the AdditionallyAllowedTenants on the credential options, or add "*" to allow acquiring tokens for any tenant`, credName, specified)
117−}
118−
119−func alphanumeric(r rune) bool {
120− return ('0' <= r && r <= '9') || ('a' <= r && r <= 'z') || ('A' <= r && r <= 'Z')
121−}
122−
123−func validTenantID(tenantID string) bool {
124− if len(tenantID) < 1 {
125− return false
126− }
127− for _, r := range tenantID {
128− if !(alphanumeric(r) || r == '.' || r == '-') {
129− return false
130− }
131− }
132− return true
133−}
134−
135−func doForClient(client *azcore.Client, r *http.Request) (*http.Response, error) {
136− req, err := runtime.NewRequest(r.Context(), r.Method, r.URL.String())
137− if err != nil {
138− return nil, err
139− }
140− if r.Body != nil && r.Body != http.NoBody {
141− // create a rewindable body from the existing body as required
142− var body io.ReadSeekCloser
143− if rsc, ok := r.Body.(io.ReadSeekCloser); ok {
144− body = rsc
145− } else {
146− b, err := io.ReadAll(r.Body)
147− if err != nil {
148− return nil, err
149− }
150− body = streaming.NopCloser(bytes.NewReader(b))
151− }
152− err = req.SetBody(body, r.Header.Get("Content-Type"))
153− if err != nil {
154− return nil, err
155− }
156− }
157−
158− // copy headers to the new request, ignoring any for which the new request has a value
159− h := req.Raw().Header
160− for key, vals := range r.Header {
161− if _, has := h[key]; !has {
162− for _, val := range vals {
163− h.Add(key, val)
164− }
165− }
166− }
167−
168− resp, err := client.Pipeline().Do(req)
169− if err != nil {
170− return nil, err
171− }
172− return resp, err
173−}
174−
175−// enables fakes for test scenarios
176−type msalConfidentialClient interface {
177− AcquireTokenSilent(ctx context.Context, scopes []string, options ...confidential.AcquireSilentOption) (confidential.AuthResult, error)
178− AcquireTokenByAuthCode(ctx context.Context, code string, redirectURI string, scopes []string, options ...confidential.AcquireByAuthCodeOption) (confidential.AuthResult, error)
179− AcquireTokenByCredential(ctx context.Context, scopes []string, options ...confidential.AcquireByCredentialOption) (confidential.AuthResult, error)
180− AcquireTokenOnBehalfOf(ctx context.Context, userAssertion string, scopes []string, options ...confidential.AcquireOnBehalfOfOption) (confidential.AuthResult, error)
181−}
182−
183−// enables fakes for test scenarios
184−type msalPublicClient interface {
185− AcquireTokenSilent(ctx context.Context, scopes []string, options ...public.AcquireSilentOption) (public.AuthResult, error)
186− AcquireTokenByUsernamePassword(ctx context.Context, scopes []string, username string, password string, options ...public.AcquireByUsernamePasswordOption) (public.AuthResult, error)
187− AcquireTokenByDeviceCode(ctx context.Context, scopes []string, options ...public.AcquireByDeviceCodeOption) (public.DeviceCode, error)
188− AcquireTokenByAuthCode(ctx context.Context, code string, redirectURI string, scopes []string, options ...public.AcquireByAuthCodeOption) (public.AuthResult, error)
189− AcquireTokenInteractive(ctx context.Context, scopes []string, options ...public.AcquireInteractiveOption) (public.AuthResult, error)
190−}
vendor/github.com/Azure/azure-sdk-for-go/sdk/azidentity/azure_cli_credential.godeleted−190
@@ -1,190 +0,0 @@
1−//go:build go1.18
2−// +build go1.18
3−
4−// Copyright (c) Microsoft Corporation. All rights reserved.
5−// Licensed under the MIT License.
6−
7−package azidentity
8−
9−import (
10− "bytes"
11− "context"
12− "encoding/json"
13− "errors"
14− "fmt"
15− "os"
16− "os/exec"
17− "runtime"
18− "strings"
19− "sync"
20− "time"
21−
22− "github.com/Azure/azure-sdk-for-go/sdk/azcore"
23− "github.com/Azure/azure-sdk-for-go/sdk/azcore/policy"
24− "github.com/Azure/azure-sdk-for-go/sdk/internal/log"
25−)
26−
27−const credNameAzureCLI = "AzureCLICredential"
28−
29−type azTokenProvider func(ctx context.Context, scopes []string, tenant, subscription string) ([]byte, error)
30−
31−// AzureCLICredentialOptions contains optional parameters for AzureCLICredential.
32−type AzureCLICredentialOptions struct {
33− // AdditionallyAllowedTenants specifies tenants for which the credential may acquire tokens, in addition
34− // to TenantID. Add the wildcard value "*" to allow the credential to acquire tokens for any tenant the
35− // logged in account can access.
36− AdditionallyAllowedTenants []string
37−
38− // Subscription is the name or ID of a subscription. Set this to acquire tokens for an account other
39− // than the Azure CLI's current account.
40− Subscription string
41−
42− // TenantID identifies the tenant the credential should authenticate in.
43− // Defaults to the CLI's default tenant, which is typically the home tenant of the logged in user.
44− TenantID string
45−
46− // inDefaultChain is true when the credential is part of DefaultAzureCredential
47− inDefaultChain bool
48− // tokenProvider is used by tests to fake invoking az
49− tokenProvider azTokenProvider
50−}
51−
52−// init returns an instance of AzureCLICredentialOptions initialized with default values.
53−func (o *AzureCLICredentialOptions) init() {
54− if o.tokenProvider == nil {
55− o.tokenProvider = defaultAzTokenProvider
56− }
57−}
58−
59−// AzureCLICredential authenticates as the identity logged in to the Azure CLI.
60−type AzureCLICredential struct {
61− mu *sync.Mutex
62− opts AzureCLICredentialOptions
63−}
64−
65−// NewAzureCLICredential constructs an AzureCLICredential. Pass nil to accept default options.
66−func NewAzureCLICredential(options *AzureCLICredentialOptions) (*AzureCLICredential, error) {
67− cp := AzureCLICredentialOptions{}
68− if options != nil {
69− cp = *options
70− }
71− for _, r := range cp.Subscription {
72− if !(alphanumeric(r) || r == '-' || r == '_' || r == ' ' || r == '.') {
73− return nil, fmt.Errorf("%s: invalid Subscription %q", credNameAzureCLI, cp.Subscription)
74− }
75− }
76− if cp.TenantID != "" && !validTenantID(cp.TenantID) {
77− return nil, errInvalidTenantID
78− }
79− cp.init()
80− cp.AdditionallyAllowedTenants = resolveAdditionalTenants(cp.AdditionallyAllowedTenants)
81− return &AzureCLICredential{mu: &sync.Mutex{}, opts: cp}, nil
82−}
83−
84−// GetToken requests a token from the Azure CLI. This credential doesn't cache tokens, so every call invokes the CLI.
85−// This method is called automatically by Azure SDK clients.
86−func (c *AzureCLICredential) GetToken(ctx context.Context, opts policy.TokenRequestOptions) (azcore.AccessToken, error) {
87− at := azcore.AccessToken{}
88− if len(opts.Scopes) != 1 {
89− return at, errors.New(credNameAzureCLI + ": GetToken() requires exactly one scope")
90− }
91− if !validScope(opts.Scopes[0]) {
92− return at, fmt.Errorf("%s.GetToken(): invalid scope %q", credNameAzureCLI, opts.Scopes[0])
93− }
94− tenant, err := resolveTenant(c.opts.TenantID, opts.TenantID, credNameAzureCLI, c.opts.AdditionallyAllowedTenants)
95− if err != nil {
96− return at, err
97− }
98− c.mu.Lock()
99− defer c.mu.Unlock()
100− b, err := c.opts.tokenProvider(ctx, opts.Scopes, tenant, c.opts.Subscription)
101− if err == nil {
102− at, err = c.createAccessToken(b)
103− }
104− if err != nil {
105− err = unavailableIfInChain(err, c.opts.inDefaultChain)
106− return at, err
107− }
108− msg := fmt.Sprintf("%s.GetToken() acquired a token for scope %q", credNameAzureCLI, strings.Join(opts.Scopes, ", "))
109− log.Write(EventAuthentication, msg)
110− return at, nil
111−}
112−
113−// defaultAzTokenProvider invokes the Azure CLI to acquire a token. It assumes
114−// callers have verified that all string arguments are safe to pass to the CLI.
115−var defaultAzTokenProvider azTokenProvider = func(ctx context.Context, scopes []string, tenantID, subscription string) ([]byte, error) {
116− // pass the CLI a Microsoft Entra ID v1 resource because we don't know which CLI version is installed and older ones don't support v2 scopes
117− resource := strings.TrimSuffix(scopes[0], defaultSuffix)
118− // set a default timeout for this authentication iff the application hasn't done so already
119− var cancel context.CancelFunc
120− if _, hasDeadline := ctx.Deadline(); !hasDeadline {
121− ctx, cancel = context.WithTimeout(ctx, cliTimeout)
122− defer cancel()
123− }
124− commandLine := "az account get-access-token -o json --resource " + resource
125− if tenantID != "" {
126− commandLine += " --tenant " + tenantID
127− }
128− if subscription != "" {
129− // subscription needs quotes because it may contain spaces
130− commandLine += ` --subscription "` + subscription + `"`
131− }
132− var cliCmd *exec.Cmd
133− if runtime.GOOS == "windows" {
134− dir := os.Getenv("SYSTEMROOT")
135− if dir == "" {
136− return nil, newCredentialUnavailableError(credNameAzureCLI, "environment variable 'SYSTEMROOT' has no value")
137− }
138− cliCmd = exec.CommandContext(ctx, "cmd.exe", "/c", commandLine)
139− cliCmd.Dir = dir
140− } else {
141− cliCmd = exec.CommandContext(ctx, "/bin/sh", "-c", commandLine)
142− cliCmd.Dir = "/bin"
143− }
144− cliCmd.Env = os.Environ()
145− var stderr bytes.Buffer
146− cliCmd.Stderr = &stderr
147−
148− output, err := cliCmd.Output()
149− if err != nil {
150− msg := stderr.String()
151− var exErr *exec.ExitError
152− if errors.As(err, &exErr) && exErr.ExitCode() == 127 || strings.HasPrefix(msg, "'az' is not recognized") {
153− msg = "Azure CLI not found on path"
154− }
155− if msg == "" {
156− msg = err.Error()
157− }
158− return nil, newCredentialUnavailableError(credNameAzureCLI, msg)
159− }
160−
161− return output, nil
162−}
163−
164−func (c *AzureCLICredential) createAccessToken(tk []byte) (azcore.AccessToken, error) {
165− t := struct {
166− AccessToken string `json:"accessToken"`
167− Expires_On int64 `json:"expires_on"`
168− ExpiresOn string `json:"expiresOn"`
169− }{}
170− err := json.Unmarshal(tk, &t)
171− if err != nil {
172− return azcore.AccessToken{}, err
173− }
174−
175− exp := time.Unix(t.Expires_On, 0)
176− if t.Expires_On == 0 {
177− exp, err = time.ParseInLocation("2006-01-02 15:04:05.999999", t.ExpiresOn, time.Local)
178− if err != nil {
179− return azcore.AccessToken{}, fmt.Errorf("%s: error parsing token expiration time %q: %v", credNameAzureCLI, t.ExpiresOn, err)
180− }
181− }
182−
183− converted := azcore.AccessToken{
184− Token: t.AccessToken,
185− ExpiresOn: exp.UTC(),
186− }
187− return converted, nil
188−}
189−
190−var _ azcore.TokenCredential = (*AzureCLICredential)(nil)
vendor/github.com/Azure/azure-sdk-for-go/sdk/azidentity/azure_developer_cli_credential.godeleted−169
@@ -1,169 +0,0 @@
1−//go:build go1.18
2−// +build go1.18
3−
4−// Copyright (c) Microsoft Corporation. All rights reserved.
5−// Licensed under the MIT License.
6−
7−package azidentity
8−
9−import (
10− "bytes"
11− "context"
12− "encoding/json"
13− "errors"
14− "fmt"
15− "os"
16− "os/exec"
17− "runtime"
18− "strings"
19− "sync"
20− "time"
21−
22− "github.com/Azure/azure-sdk-for-go/sdk/azcore"
23− "github.com/Azure/azure-sdk-for-go/sdk/azcore/policy"
24− "github.com/Azure/azure-sdk-for-go/sdk/internal/log"
25−)
26−
27−const credNameAzureDeveloperCLI = "AzureDeveloperCLICredential"
28−
29−type azdTokenProvider func(ctx context.Context, scopes []string, tenant string) ([]byte, error)
30−
31−// AzureDeveloperCLICredentialOptions contains optional parameters for AzureDeveloperCLICredential.
32−type AzureDeveloperCLICredentialOptions struct {
33− // AdditionallyAllowedTenants specifies tenants for which the credential may acquire tokens, in addition
34− // to TenantID. Add the wildcard value "*" to allow the credential to acquire tokens for any tenant the
35− // logged in account can access.
36− AdditionallyAllowedTenants []string
37−
38− // TenantID identifies the tenant the credential should authenticate in. Defaults to the azd environment,
39− // which is the tenant of the selected Azure subscription.
40− TenantID string
41−
42− // inDefaultChain is true when the credential is part of DefaultAzureCredential
43− inDefaultChain bool
44− // tokenProvider is used by tests to fake invoking azd
45− tokenProvider azdTokenProvider
46−}
47−
48−// AzureDeveloperCLICredential authenticates as the identity logged in to the [Azure Developer CLI].
49−//
50−// [Azure Developer CLI]: https://learn.microsoft.com/azure/developer/azure-developer-cli/overview
51−type AzureDeveloperCLICredential struct {
52− mu *sync.Mutex
53− opts AzureDeveloperCLICredentialOptions
54−}
55−
56−// NewAzureDeveloperCLICredential constructs an AzureDeveloperCLICredential. Pass nil to accept default options.
57−func NewAzureDeveloperCLICredential(options *AzureDeveloperCLICredentialOptions) (*AzureDeveloperCLICredential, error) {
58− cp := AzureDeveloperCLICredentialOptions{}
59− if options != nil {
60− cp = *options
61− }
62− if cp.TenantID != "" && !validTenantID(cp.TenantID) {
63− return nil, errInvalidTenantID
64− }
65− if cp.tokenProvider == nil {
66− cp.tokenProvider = defaultAzdTokenProvider
67− }
68− return &AzureDeveloperCLICredential{mu: &sync.Mutex{}, opts: cp}, nil
69−}
70−
71−// GetToken requests a token from the Azure Developer CLI. This credential doesn't cache tokens, so every call invokes azd.
72−// This method is called automatically by Azure SDK clients.
73−func (c *AzureDeveloperCLICredential) GetToken(ctx context.Context, opts policy.TokenRequestOptions) (azcore.AccessToken, error) {
74− at := azcore.AccessToken{}
75− if len(opts.Scopes) == 0 {
76− return at, errors.New(credNameAzureDeveloperCLI + ": GetToken() requires at least one scope")
77− }
78− for _, scope := range opts.Scopes {
79− if !validScope(scope) {
80− return at, fmt.Errorf("%s.GetToken(): invalid scope %q", credNameAzureDeveloperCLI, scope)
81− }
82− }
83− tenant, err := resolveTenant(c.opts.TenantID, opts.TenantID, credNameAzureDeveloperCLI, c.opts.AdditionallyAllowedTenants)
84− if err != nil {
85− return at, err
86− }
87− c.mu.Lock()
88− defer c.mu.Unlock()
89− b, err := c.opts.tokenProvider(ctx, opts.Scopes, tenant)
90− if err == nil {
91− at, err = c.createAccessToken(b)
92− }
93− if err != nil {
94− err = unavailableIfInChain(err, c.opts.inDefaultChain)
95− return at, err
96− }
97− msg := fmt.Sprintf("%s.GetToken() acquired a token for scope %q", credNameAzureDeveloperCLI, strings.Join(opts.Scopes, ", "))
98− log.Write(EventAuthentication, msg)
99− return at, nil
100−}
101−
102−// defaultAzTokenProvider invokes the Azure Developer CLI to acquire a token. It assumes
103−// callers have verified that all string arguments are safe to pass to the CLI.
104−var defaultAzdTokenProvider azdTokenProvider = func(ctx context.Context, scopes []string, tenant string) ([]byte, error) {
105− // set a default timeout for this authentication iff the application hasn't done so already
106− var cancel context.CancelFunc
107− if _, hasDeadline := ctx.Deadline(); !hasDeadline {
108− ctx, cancel = context.WithTimeout(ctx, cliTimeout)
109− defer cancel()
110− }
111− commandLine := "azd auth token -o json"
112− if tenant != "" {
113− commandLine += " --tenant-id " + tenant
114− }
115− for _, scope := range scopes {
116− commandLine += " --scope " + scope
117− }
118− var cliCmd *exec.Cmd
119− if runtime.GOOS == "windows" {
120− dir := os.Getenv("SYSTEMROOT")
121− if dir == "" {
122− return nil, newCredentialUnavailableError(credNameAzureDeveloperCLI, "environment variable 'SYSTEMROOT' has no value")
123− }
124− cliCmd = exec.CommandContext(ctx, "cmd.exe", "/c", commandLine)
125− cliCmd.Dir = dir
126− } else {
127− cliCmd = exec.CommandContext(ctx, "/bin/sh", "-c", commandLine)
128− cliCmd.Dir = "/bin"
129− }
130− cliCmd.Env = os.Environ()
131− var stderr bytes.Buffer
132− cliCmd.Stderr = &stderr
133− output, err := cliCmd.Output()
134− if err != nil {
135− msg := stderr.String()
136− var exErr *exec.ExitError
137− if errors.As(err, &exErr) && exErr.ExitCode() == 127 || strings.HasPrefix(msg, "'azd' is not recognized") {
138− msg = "Azure Developer CLI not found on path"
139− } else if strings.Contains(msg, "azd auth login") {
140− msg = `please run "azd auth login" from a command prompt to authenticate before using this credential`
141− }
142− if msg == "" {
143− msg = err.Error()
144− }
145− return nil, newCredentialUnavailableError(credNameAzureDeveloperCLI, msg)
146− }
147− return output, nil
148−}
149−
150−func (c *AzureDeveloperCLICredential) createAccessToken(tk []byte) (azcore.AccessToken, error) {
151− t := struct {
152− AccessToken string `json:"token"`
153− ExpiresOn string `json:"expiresOn"`
154− }{}
155− err := json.Unmarshal(tk, &t)
156− if err != nil {
157− return azcore.AccessToken{}, err
158− }
159− exp, err := time.Parse("2006-01-02T15:04:05Z", t.ExpiresOn)
160− if err != nil {
161− return azcore.AccessToken{}, fmt.Errorf("error parsing token expiration time %q: %v", t.ExpiresOn, err)
162− }
163− return azcore.AccessToken{
164− ExpiresOn: exp.UTC(),
165− Token: t.AccessToken,
166− }, nil
167−}
168−
169−var _ azcore.TokenCredential = (*AzureDeveloperCLICredential)(nil)
vendor/github.com/Azure/azure-sdk-for-go/sdk/azidentity/azure_pipelines_credential.godeleted−140
@@ -1,140 +0,0 @@
1−// Copyright (c) Microsoft Corporation. All rights reserved.
2−// Licensed under the MIT License.
3−
4−package azidentity
5−
6−import (
7− "context"
8− "encoding/json"
9− "errors"
10− "fmt"
11− "net/http"
12− "os"
13−
14− "github.com/Azure/azure-sdk-for-go/sdk/azcore"
15− "github.com/Azure/azure-sdk-for-go/sdk/azcore/policy"
16− "github.com/Azure/azure-sdk-for-go/sdk/azcore/runtime"
17−)
18−
19−const (
20− credNameAzurePipelines = "AzurePipelinesCredential"
21− oidcAPIVersion = "7.1"
22− systemOIDCRequestURI = "SYSTEM_OIDCREQUESTURI"
23−)
24−
25−// AzurePipelinesCredential authenticates with workload identity federation in an Azure Pipeline. See
26−// [Azure Pipelines documentation] for more information.
27−//
28−// [Azure Pipelines documentation]: https://learn.microsoft.com/azure/devops/pipelines/library/connect-to-azure?view=azure-devops#create-an-azure-resource-manager-service-connection-that-uses-workload-identity-federation
29−type AzurePipelinesCredential struct {
30− connectionID, oidcURI, systemAccessToken string
31− cred *ClientAssertionCredential
32−}
33−
34−// AzurePipelinesCredentialOptions contains optional parameters for AzurePipelinesCredential.
35−type AzurePipelinesCredentialOptions struct {
36− azcore.ClientOptions
37−
38− // AdditionallyAllowedTenants specifies additional tenants for which the credential may acquire tokens.
39− // Add the wildcard value "*" to allow the credential to acquire tokens for any tenant in which the
40− // application is registered.
41− AdditionallyAllowedTenants []string
42−
43− // DisableInstanceDiscovery should be set true only by applications authenticating in disconnected clouds, or
44− // private clouds such as Azure Stack. It determines whether the credential requests Microsoft Entra instance metadata
45− // from https://login.microsoft.com before authenticating. Setting this to true will skip this request, making
46− // the application responsible for ensuring the configured authority is valid and trustworthy.
47− DisableInstanceDiscovery bool
48−}
49−
50−// NewAzurePipelinesCredential is the constructor for AzurePipelinesCredential.
51−//
52−// - tenantID: tenant ID of the service principal federated with the service connection
53−// - clientID: client ID of that service principal
54−// - serviceConnectionID: ID of the service connection to authenticate
55−// - systemAccessToken: security token for the running build. See [Azure Pipelines documentation] for
56−// an example showing how to get this value.
57−//
58−// [Azure Pipelines documentation]: https://learn.microsoft.com/azure/devops/pipelines/build/variables?view=azure-devops&tabs=yaml#systemaccesstoken
59−func NewAzurePipelinesCredential(tenantID, clientID, serviceConnectionID, systemAccessToken string, options *AzurePipelinesCredentialOptions) (*AzurePipelinesCredential, error) {
60− if !validTenantID(tenantID) {
61− return nil, errInvalidTenantID
62− }
63− if clientID == "" {
64− return nil, errors.New("no client ID specified")
65− }
66− if serviceConnectionID == "" {
67− return nil, errors.New("no service connection ID specified")
68− }
69− if systemAccessToken == "" {
70− return nil, errors.New("no system access token specified")
71− }
72− u := os.Getenv(systemOIDCRequestURI)
73− if u == "" {
74− return nil, fmt.Errorf("no value for environment variable %s. This should be set by Azure Pipelines", systemOIDCRequestURI)
75− }
76− a := AzurePipelinesCredential{
77− connectionID: serviceConnectionID,
78− oidcURI: u,
79− systemAccessToken: systemAccessToken,
80− }
81− if options == nil {
82− options = &AzurePipelinesCredentialOptions{}
83− }
84− caco := ClientAssertionCredentialOptions{
85− AdditionallyAllowedTenants: options.AdditionallyAllowedTenants,
86− ClientOptions: options.ClientOptions,
87− DisableInstanceDiscovery: options.DisableInstanceDiscovery,
88− }
89− cred, err := NewClientAssertionCredential(tenantID, clientID, a.getAssertion, &caco)
90− if err != nil {
91− return nil, err
92− }
93− cred.client.name = credNameAzurePipelines
94− a.cred = cred
95− return &a, nil
96−}
97−
98−// GetToken requests an access token from Microsoft Entra ID. Azure SDK clients call this method automatically.
99−func (a *AzurePipelinesCredential) GetToken(ctx context.Context, opts policy.TokenRequestOptions) (azcore.AccessToken, error) {
100− var err error
101− ctx, endSpan := runtime.StartSpan(ctx, credNameAzurePipelines+"."+traceOpGetToken, a.cred.client.azClient.Tracer(), nil)
102− defer func() { endSpan(err) }()
103− tk, err := a.cred.GetToken(ctx, opts)
104− return tk, err
105−}
106−
107−func (a *AzurePipelinesCredential) getAssertion(ctx context.Context) (string, error) {
108− url := a.oidcURI + "?api-version=" + oidcAPIVersion + "&serviceConnectionId=" + a.connectionID
109− url, err := runtime.EncodeQueryParams(url)
110− if err != nil {
111− return "", newAuthenticationFailedError(credNameAzurePipelines, "couldn't encode OIDC URL: "+err.Error(), nil, nil)
112− }
113− req, err := http.NewRequestWithContext(ctx, http.MethodPost, url, nil)
114− if err != nil {
115− return "", newAuthenticationFailedError(credNameAzurePipelines, "couldn't create OIDC token request: "+err.Error(), nil, nil)
116− }
117− req.Header.Set("Authorization", "Bearer "+a.systemAccessToken)
118− res, err := doForClient(a.cred.client.azClient, req)
119− if err != nil {
120− return "", newAuthenticationFailedError(credNameAzurePipelines, "couldn't send OIDC token request: "+err.Error(), nil, nil)
121− }
122− if res.StatusCode != http.StatusOK {
123− msg := res.Status + " response from the OIDC endpoint. Check service connection ID and Pipeline configuration"
124− // include the response because its body, if any, probably contains an error message.
125− // OK responses aren't included with errors because they probably contain secrets
126− return "", newAuthenticationFailedError(credNameAzurePipelines, msg, res, nil)
127− }
128− b, err := runtime.Payload(res)
129− if err != nil {
130− return "", newAuthenticationFailedError(credNameAzurePipelines, "couldn't read OIDC response content: "+err.Error(), nil, nil)
131− }
132− var r struct {
133− OIDCToken string `json:"oidcToken"`
134− }
135− err = json.Unmarshal(b, &r)
136− if err != nil {
137− return "", newAuthenticationFailedError(credNameAzurePipelines, "unexpected response from OIDC endpoint", nil, nil)
138− }
139− return r.OIDCToken, nil
140−}
vendor/github.com/Azure/azure-sdk-for-go/sdk/azidentity/chained_token_credential.godeleted−138
@@ -1,138 +0,0 @@
1−//go:build go1.18
2−// +build go1.18
3−
4−// Copyright (c) Microsoft Corporation. All rights reserved.
5−// Licensed under the MIT License.
6−
7−package azidentity
8−
9−import (
10− "context"
11− "errors"
12− "fmt"
13− "strings"
14− "sync"
15−
16− "github.com/Azure/azure-sdk-for-go/sdk/azcore"
17− "github.com/Azure/azure-sdk-for-go/sdk/azcore/policy"
18− "github.com/Azure/azure-sdk-for-go/sdk/internal/log"
19−)
20−
21−// ChainedTokenCredentialOptions contains optional parameters for ChainedTokenCredential.
22−type ChainedTokenCredentialOptions struct {
23− // RetrySources configures how the credential uses its sources. When true, the credential always attempts to
24− // authenticate through each source in turn, stopping when one succeeds. When false, the credential authenticates
25− // only through this first successful source--it never again tries the sources which failed.
26− RetrySources bool
27−}
28−
29−// ChainedTokenCredential links together multiple credentials and tries them sequentially when authenticating. By default,
30−// it tries all the credentials until one authenticates, after which it always uses that credential.
31−type ChainedTokenCredential struct {
32− cond *sync.Cond
33− iterating bool
34− name string
35− retrySources bool
36− sources []azcore.TokenCredential
37− successfulCredential azcore.TokenCredential
38−}
39−
40−// NewChainedTokenCredential creates a ChainedTokenCredential. Pass nil for options to accept defaults.
41−func NewChainedTokenCredential(sources []azcore.TokenCredential, options *ChainedTokenCredentialOptions) (*ChainedTokenCredential, error) {
42− if len(sources) == 0 {
43− return nil, errors.New("sources must contain at least one TokenCredential")
44− }
45− for _, source := range sources {
46− if source == nil { // cannot have a nil credential in the chain or else the application will panic when GetToken() is called on nil
47− return nil, errors.New("sources cannot contain nil")
48− }
49− }
50− cp := make([]azcore.TokenCredential, len(sources))
51− copy(cp, sources)
52− if options == nil {
53− options = &ChainedTokenCredentialOptions{}
54− }
55− return &ChainedTokenCredential{
56− cond: sync.NewCond(&sync.Mutex{}),
57− name: "ChainedTokenCredential",
58− retrySources: options.RetrySources,
59− sources: cp,
60− }, nil
61−}
62−
63−// GetToken calls GetToken on the chained credentials in turn, stopping when one returns a token.
64−// This method is called automatically by Azure SDK clients.
65−func (c *ChainedTokenCredential) GetToken(ctx context.Context, opts policy.TokenRequestOptions) (azcore.AccessToken, error) {
66− if !c.retrySources {
67− // ensure only one goroutine at a time iterates the sources and perhaps sets c.successfulCredential
68− c.cond.L.Lock()
69− for {
70− if c.successfulCredential != nil {
71− c.cond.L.Unlock()
72− return c.successfulCredential.GetToken(ctx, opts)
73− }
74− if !c.iterating {
75− c.iterating = true
76− // allow other goroutines to wait while this one iterates
77− c.cond.L.Unlock()
78− break
79− }
80− c.cond.Wait()
81− }
82− }
83−
84− var (
85− err error
86− errs []error
87− successfulCredential azcore.TokenCredential
88− token azcore.AccessToken
89− unavailableErr credentialUnavailable
90− )
91− for _, cred := range c.sources {
92− token, err = cred.GetToken(ctx, opts)
93− if err == nil {
94− log.Writef(EventAuthentication, "%s authenticated with %s", c.name, extractCredentialName(cred))
95− successfulCredential = cred
96− break
97− }
98− errs = append(errs, err)
99− // continue to the next source iff this one returned credentialUnavailableError
100− if !errors.As(err, &unavailableErr) {
101− break
102− }
103− }
104− if c.iterating {
105− c.cond.L.Lock()
106− // this is nil when all credentials returned an error
107− c.successfulCredential = successfulCredential
108− c.iterating = false
109− c.cond.L.Unlock()
110− c.cond.Broadcast()
111− }
112− // err is the error returned by the last GetToken call. It will be nil when that call succeeds
113− if err != nil {
114− // return credentialUnavailableError iff all sources did so; return AuthenticationFailedError otherwise
115− msg := createChainedErrorMessage(errs)
116− if errors.As(err, &unavailableErr) {
117− err = newCredentialUnavailableError(c.name, msg)
118− } else {
119− res := getResponseFromError(err)
120− err = newAuthenticationFailedError(c.name, msg, res, err)
121− }
122− }
123− return token, err
124−}
125−
126−func createChainedErrorMessage(errs []error) string {
127− msg := "failed to acquire a token.\nAttempted credentials:"
128− for _, err := range errs {
129− msg += fmt.Sprintf("\n\t%s", err.Error())
130− }
131− return msg
132−}
133−
134−func extractCredentialName(credential azcore.TokenCredential) string {
135− return strings.TrimPrefix(fmt.Sprintf("%T", credential), "*azidentity.")
136−}
137−
138−var _ azcore.TokenCredential = (*ChainedTokenCredential)(nil)
vendor/github.com/Azure/azure-sdk-for-go/sdk/azidentity/ci.ymldeleted−46
@@ -1,46 +0,0 @@
1−# NOTE: Please refer to https://aka.ms/azsdk/engsys/ci-yaml before editing this file.
2−trigger:
3− branches:
4− include:
5− - main
6− - feature/*
7− - hotfix/*
8− - release/*
9− paths:
10− include:
11− - sdk/azidentity/
12−
13−pr:
14− branches:
15− include:
16− - main
17− - feature/*
18− - hotfix/*
19− - release/*
20− paths:
21− include:
22− - sdk/azidentity/
23−
24−extends:
25− template: /eng/pipelines/templates/jobs/archetype-sdk-client.yml
26− parameters:
27− CloudConfig:
28− Public:
29− SubscriptionConfigurations:
30− - $(sub-config-azure-cloud-test-resources)
31− - $(sub-config-identity-test-resources)
32− EnvVars:
33− SYSTEM_ACCESSTOKEN: $(System.AccessToken)
34− RunLiveTests: true
35− ServiceDirectory: azidentity
36− UsePipelineProxy: false
37−
38− ${{ if endsWith(variables['Build.DefinitionName'], 'weekly') }}:
39− MatrixConfigs:
40− - Name: managed_identity_matrix
41− GenerateVMJobs: true
42− Path: sdk/azidentity/managed-identity-matrix.json
43− Selection: sparse
44− MatrixReplace:
45− - Pool=.*LINUXPOOL.*/azsdk-pool-mms-ubuntu-2204-identitymsi
46− - OSVmImage=.*LINUXNEXTVMIMAGE.*/azsdk-pool-mms-ubuntu-2204-1espt
vendor/github.com/Azure/azure-sdk-for-go/sdk/azidentity/client_assertion_credential.godeleted−85
@@ -1,85 +0,0 @@
1−//go:build go1.18
2−// +build go1.18
3−
4−// Copyright (c) Microsoft Corporation. All rights reserved.
5−// Licensed under the MIT License.
6−
7−package azidentity
8−
9−import (
10− "context"
11− "errors"
12−
13− "github.com/Azure/azure-sdk-for-go/sdk/azcore"
14− "github.com/Azure/azure-sdk-for-go/sdk/azcore/policy"
15− "github.com/Azure/azure-sdk-for-go/sdk/azcore/runtime"
16− "github.com/AzureAD/microsoft-authentication-library-for-go/apps/confidential"
17−)
18−
19−const credNameAssertion = "ClientAssertionCredential"
20−
21−// ClientAssertionCredential authenticates an application with assertions provided by a callback function.
22−// This credential is for advanced scenarios. [ClientCertificateCredential] has a more convenient API for
23−// the most common assertion scenario, authenticating a service principal with a certificate. See
24−// [Microsoft Entra ID documentation] for details of the assertion format.
25−//
26−// [Microsoft Entra ID documentation]: https://learn.microsoft.com/entra/identity-platform/certificate-credentials#assertion-format
27−type ClientAssertionCredential struct {
28− client *confidentialClient
29−}
30−
31−// ClientAssertionCredentialOptions contains optional parameters for ClientAssertionCredential.
32−type ClientAssertionCredentialOptions struct {
33− azcore.ClientOptions
34−
35− // AdditionallyAllowedTenants specifies additional tenants for which the credential may acquire tokens.
36− // Add the wildcard value "*" to allow the credential to acquire tokens for any tenant in which the
37− // application is registered.
38− AdditionallyAllowedTenants []string
39−
40− // DisableInstanceDiscovery should be set true only by applications authenticating in disconnected clouds, or
41− // private clouds such as Azure Stack. It determines whether the credential requests Microsoft Entra instance metadata
42− // from https://login.microsoft.com before authenticating. Setting this to true will skip this request, making
43− // the application responsible for ensuring the configured authority is valid and trustworthy.
44− DisableInstanceDiscovery bool
45−
46− // tokenCachePersistenceOptions enables persistent token caching when not nil.
47− tokenCachePersistenceOptions *tokenCachePersistenceOptions
48−}
49−
50−// NewClientAssertionCredential constructs a ClientAssertionCredential. The getAssertion function must be thread safe. Pass nil for options to accept defaults.
51−func NewClientAssertionCredential(tenantID, clientID string, getAssertion func(context.Context) (string, error), options *ClientAssertionCredentialOptions) (*ClientAssertionCredential, error) {
52− if getAssertion == nil {
53− return nil, errors.New("getAssertion must be a function that returns assertions")
54− }
55− if options == nil {
56− options = &ClientAssertionCredentialOptions{}
57− }
58− cred := confidential.NewCredFromAssertionCallback(
59− func(ctx context.Context, _ confidential.AssertionRequestOptions) (string, error) {
60− return getAssertion(ctx)
61− },
62− )
63− msalOpts := confidentialClientOptions{
64− AdditionallyAllowedTenants: options.AdditionallyAllowedTenants,
65− ClientOptions: options.ClientOptions,
66− DisableInstanceDiscovery: options.DisableInstanceDiscovery,
67− tokenCachePersistenceOptions: options.tokenCachePersistenceOptions,
68− }
69− c, err := newConfidentialClient(tenantID, clientID, credNameAssertion, cred, msalOpts)
70− if err != nil {
71− return nil, err
72− }
73− return &ClientAssertionCredential{client: c}, nil
74−}
75−
76−// GetToken requests an access token from Microsoft Entra ID. This method is called automatically by Azure SDK clients.
77−func (c *ClientAssertionCredential) GetToken(ctx context.Context, opts policy.TokenRequestOptions) (azcore.AccessToken, error) {
78− var err error
79− ctx, endSpan := runtime.StartSpan(ctx, credNameAssertion+"."+traceOpGetToken, c.client.azClient.Tracer(), nil)
80− defer func() { endSpan(err) }()
81− tk, err := c.client.GetToken(ctx, opts)
82− return tk, err
83−}
84−
85−var _ azcore.TokenCredential = (*ClientAssertionCredential)(nil)
vendor/github.com/Azure/azure-sdk-for-go/sdk/azidentity/client_certificate_credential.godeleted−174
@@ -1,174 +0,0 @@
1−//go:build go1.18
2−// +build go1.18
3−
4−// Copyright (c) Microsoft Corporation. All rights reserved.
5−// Licensed under the MIT License.
6−
7−package azidentity
8−
9−import (
10− "context"
11− "crypto"
12− "crypto/x509"
13− "encoding/pem"
14− "errors"
15−
16− "github.com/Azure/azure-sdk-for-go/sdk/azcore"
17− "github.com/Azure/azure-sdk-for-go/sdk/azcore/policy"
18− "github.com/Azure/azure-sdk-for-go/sdk/azcore/runtime"
19− "github.com/AzureAD/microsoft-authentication-library-for-go/apps/confidential"
20− "golang.org/x/crypto/pkcs12"
21−)
22−
23−const credNameCert = "ClientCertificateCredential"
24−
25−// ClientCertificateCredentialOptions contains optional parameters for ClientCertificateCredential.
26−type ClientCertificateCredentialOptions struct {
27− azcore.ClientOptions
28−
29− // AdditionallyAllowedTenants specifies additional tenants for which the credential may acquire tokens.
30− // Add the wildcard value "*" to allow the credential to acquire tokens for any tenant in which the
31− // application is registered.
32− AdditionallyAllowedTenants []string
33−
34− // DisableInstanceDiscovery should be set true only by applications authenticating in disconnected clouds, or
35− // private clouds such as Azure Stack. It determines whether the credential requests Microsoft Entra instance metadata
36− // from https://login.microsoft.com before authenticating. Setting this to true will skip this request, making
37− // the application responsible for ensuring the configured authority is valid and trustworthy.
38− DisableInstanceDiscovery bool
39−
40− // SendCertificateChain controls whether the credential sends the public certificate chain in the x5c
41− // header of each token request's JWT. This is required for Subject Name/Issuer (SNI) authentication.
42− // Defaults to False.
43− SendCertificateChain bool
44−
45− // tokenCachePersistenceOptions enables persistent token caching when not nil.
46− tokenCachePersistenceOptions *tokenCachePersistenceOptions
47−}
48−
49−// ClientCertificateCredential authenticates a service principal with a certificate.
50−type ClientCertificateCredential struct {
51− client *confidentialClient
52−}
53−
54−// NewClientCertificateCredential constructs a ClientCertificateCredential. Pass nil for options to accept defaults. See
55−// [ParseCertificates] for help loading a certificate.
56−func NewClientCertificateCredential(tenantID string, clientID string, certs []*x509.Certificate, key crypto.PrivateKey, options *ClientCertificateCredentialOptions) (*ClientCertificateCredential, error) {
57− if len(certs) == 0 {
58− return nil, errors.New("at least one certificate is required")
59− }
60− if options == nil {
61− options = &ClientCertificateCredentialOptions{}
62− }
63− cred, err := confidential.NewCredFromCert(certs, key)
64− if err != nil {
65− return nil, err
66− }
67− msalOpts := confidentialClientOptions{
68− AdditionallyAllowedTenants: options.AdditionallyAllowedTenants,
69− ClientOptions: options.ClientOptions,
70− DisableInstanceDiscovery: options.DisableInstanceDiscovery,
71− SendX5C: options.SendCertificateChain,
72− tokenCachePersistenceOptions: options.tokenCachePersistenceOptions,
73− }
74− c, err := newConfidentialClient(tenantID, clientID, credNameCert, cred, msalOpts)
75− if err != nil {
76− return nil, err
77− }
78− return &ClientCertificateCredential{client: c}, nil
79−}
80−
81−// GetToken requests an access token from Microsoft Entra ID. This method is called automatically by Azure SDK clients.
82−func (c *ClientCertificateCredential) GetToken(ctx context.Context, opts policy.TokenRequestOptions) (azcore.AccessToken, error) {
83− var err error
84− ctx, endSpan := runtime.StartSpan(ctx, credNameCert+"."+traceOpGetToken, c.client.azClient.Tracer(), nil)
85− defer func() { endSpan(err) }()
86− tk, err := c.client.GetToken(ctx, opts)
87− return tk, err
88−}
89−
90−// ParseCertificates loads certificates and a private key, in PEM or PKCS#12 format, for use with [NewClientCertificateCredential].
91−// Pass nil for password if the private key isn't encrypted. This function has limitations, for example it can't decrypt keys in
92−// PEM format or PKCS#12 certificates that use SHA256 for message authentication. If you encounter such limitations, consider
93−// using another module to load the certificate and private key.
94−func ParseCertificates(certData []byte, password []byte) ([]*x509.Certificate, crypto.PrivateKey, error) {
95− var blocks []*pem.Block
96− var err error
97− if len(password) == 0 {
98− blocks, err = loadPEMCert(certData)
99− }
100− if len(blocks) == 0 || err != nil {
101− blocks, err = loadPKCS12Cert(certData, string(password))
102− }
103− if err != nil {
104− return nil, nil, err
105− }
106− var certs []*x509.Certificate
107− var pk crypto.PrivateKey
108− for _, block := range blocks {
109− switch block.Type {
110− case "CERTIFICATE":
111− c, err := x509.ParseCertificate(block.Bytes)
112− if err != nil {
113− return nil, nil, err
114− }
115− certs = append(certs, c)
116− case "PRIVATE KEY":
117− if pk != nil {
118− return nil, nil, errors.New("certData contains multiple private keys")
119− }
120− pk, err = x509.ParsePKCS8PrivateKey(block.Bytes)
121− if err != nil {
122− pk, err = x509.ParsePKCS1PrivateKey(block.Bytes)
123− }
124− if err != nil {
125− return nil, nil, err
126− }
127− case "RSA PRIVATE KEY":
128− if pk != nil {
129− return nil, nil, errors.New("certData contains multiple private keys")
130− }
131− pk, err = x509.ParsePKCS1PrivateKey(block.Bytes)
132− if err != nil {
133− return nil, nil, err
134− }
135− }
136− }
137− if len(certs) == 0 {
138− return nil, nil, errors.New("found no certificate")
139− }
140− if pk == nil {
141− return nil, nil, errors.New("found no private key")
142− }
143− return certs, pk, nil
144−}
145−
146−func loadPEMCert(certData []byte) ([]*pem.Block, error) {
147− blocks := []*pem.Block{}
148− for {
149− var block *pem.Block
150− block, certData = pem.Decode(certData)
151− if block == nil {
152− break
153− }
154− blocks = append(blocks, block)
155− }
156− if len(blocks) == 0 {
157− return nil, errors.New("didn't find any PEM blocks")
158− }
159− return blocks, nil
160−}
161−
162−func loadPKCS12Cert(certData []byte, password string) ([]*pem.Block, error) {
163− blocks, err := pkcs12.ToPEM(certData, password)
164− if err != nil {
165− return nil, err
166− }
167− if len(blocks) == 0 {
168− // not mentioning PKCS12 in this message because we end up here when certData is garbage
169− return nil, errors.New("didn't find any certificate content")
170− }
171− return blocks, err
172−}
173−
174−var _ azcore.TokenCredential = (*ClientCertificateCredential)(nil)
vendor/github.com/Azure/azure-sdk-for-go/sdk/azidentity/client_secret_credential.godeleted−75
@@ -1,75 +0,0 @@
1−//go:build go1.18
2−// +build go1.18
3−
4−// Copyright (c) Microsoft Corporation. All rights reserved.
5−// Licensed under the MIT License.
6−
7−package azidentity
8−
9−import (
10− "context"
11−
12− "github.com/Azure/azure-sdk-for-go/sdk/azcore"
13− "github.com/Azure/azure-sdk-for-go/sdk/azcore/policy"
14− "github.com/Azure/azure-sdk-for-go/sdk/azcore/runtime"
15− "github.com/AzureAD/microsoft-authentication-library-for-go/apps/confidential"
16−)
17−
18−const credNameSecret = "ClientSecretCredential"
19−
20−// ClientSecretCredentialOptions contains optional parameters for ClientSecretCredential.
21−type ClientSecretCredentialOptions struct {
22− azcore.ClientOptions
23−
24− // AdditionallyAllowedTenants specifies additional tenants for which the credential may acquire tokens.
25− // Add the wildcard value "*" to allow the credential to acquire tokens for any tenant in which the
26− // application is registered.
27− AdditionallyAllowedTenants []string
28−
29− // DisableInstanceDiscovery should be set true only by applications authenticating in disconnected clouds, or
30− // private clouds such as Azure Stack. It determines whether the credential requests Microsoft Entra instance metadata
31− // from https://login.microsoft.com before authenticating. Setting this to true will skip this request, making
32− // the application responsible for ensuring the configured authority is valid and trustworthy.
33− DisableInstanceDiscovery bool
34−
35− // tokenCachePersistenceOptions enables persistent token caching when not nil.
36− tokenCachePersistenceOptions *tokenCachePersistenceOptions
37−}
38−
39−// ClientSecretCredential authenticates an application with a client secret.
40−type ClientSecretCredential struct {
41− client *confidentialClient
42−}
43−
44−// NewClientSecretCredential constructs a ClientSecretCredential. Pass nil for options to accept defaults.
45−func NewClientSecretCredential(tenantID string, clientID string, clientSecret string, options *ClientSecretCredentialOptions) (*ClientSecretCredential, error) {
46− if options == nil {
47− options = &ClientSecretCredentialOptions{}
48− }
49− cred, err := confidential.NewCredFromSecret(clientSecret)
50− if err != nil {
51− return nil, err
52− }
53− msalOpts := confidentialClientOptions{
54− AdditionallyAllowedTenants: options.AdditionallyAllowedTenants,
55− ClientOptions: options.ClientOptions,
56− DisableInstanceDiscovery: options.DisableInstanceDiscovery,
57− tokenCachePersistenceOptions: options.tokenCachePersistenceOptions,
58− }
59− c, err := newConfidentialClient(tenantID, clientID, credNameSecret, cred, msalOpts)
60− if err != nil {
61− return nil, err
62− }
63− return &ClientSecretCredential{client: c}, nil
64−}
65−
66−// GetToken requests an access token from Microsoft Entra ID. This method is called automatically by Azure SDK clients.
67−func (c *ClientSecretCredential) GetToken(ctx context.Context, opts policy.TokenRequestOptions) (azcore.AccessToken, error) {
68− var err error
69− ctx, endSpan := runtime.StartSpan(ctx, credNameSecret+"."+traceOpGetToken, c.client.azClient.Tracer(), nil)
70− defer func() { endSpan(err) }()
71− tk, err := c.client.GetToken(ctx, opts)
72− return tk, err
73−}
74−
75−var _ azcore.TokenCredential = (*ClientSecretCredential)(nil)
vendor/github.com/Azure/azure-sdk-for-go/sdk/azidentity/confidential_client.godeleted−184
@@ -1,184 +0,0 @@
1−//go:build go1.18
2−// +build go1.18
3−
4−// Copyright (c) Microsoft Corporation. All rights reserved.
5−// Licensed under the MIT License.
6−
7−package azidentity
8−
9−import (
10− "context"
11− "errors"
12− "fmt"
13− "net/http"
14− "os"
15− "strings"
16− "sync"
17−
18− "github.com/Azure/azure-sdk-for-go/sdk/azcore"
19− "github.com/Azure/azure-sdk-for-go/sdk/azcore/policy"
20− "github.com/Azure/azure-sdk-for-go/sdk/azcore/runtime"
21− "github.com/Azure/azure-sdk-for-go/sdk/azidentity/internal"
22− "github.com/Azure/azure-sdk-for-go/sdk/internal/log"
23− "github.com/AzureAD/microsoft-authentication-library-for-go/apps/confidential"
24−)
25−
26−type confidentialClientOptions struct {
27− azcore.ClientOptions
28−
29− AdditionallyAllowedTenants []string
30− // Assertion for on-behalf-of authentication
31− Assertion string
32− DisableInstanceDiscovery, SendX5C bool
33− tokenCachePersistenceOptions *tokenCachePersistenceOptions
34−}
35−
36−// confidentialClient wraps the MSAL confidential client
37−type confidentialClient struct {
38− cae, noCAE msalConfidentialClient
39− caeMu, noCAEMu, clientMu *sync.Mutex
40− clientID, tenantID string
41− cred confidential.Credential
42− host string
43− name string
44− opts confidentialClientOptions
45− region string
46− azClient *azcore.Client
47−}
48−
49−func newConfidentialClient(tenantID, clientID, name string, cred confidential.Credential, opts confidentialClientOptions) (*confidentialClient, error) {
50− if !validTenantID(tenantID) {
51− return nil, errInvalidTenantID
52− }
53− host, err := setAuthorityHost(opts.Cloud)
54− if err != nil {
55− return nil, err
56− }
57− client, err := azcore.NewClient(module, version, runtime.PipelineOptions{
58− Tracing: runtime.TracingOptions{
59− Namespace: traceNamespace,
60− },
61− }, &opts.ClientOptions)
62− if err != nil {
63− return nil, err
64− }
65− opts.AdditionallyAllowedTenants = resolveAdditionalTenants(opts.AdditionallyAllowedTenants)
66− return &confidentialClient{
67− caeMu: &sync.Mutex{},
68− clientID: clientID,
69− clientMu: &sync.Mutex{},
70− cred: cred,
71− host: host,
72− name: name,
73− noCAEMu: &sync.Mutex{},
74− opts: opts,
75− region: os.Getenv(azureRegionalAuthorityName),
76− tenantID: tenantID,
77− azClient: client,
78− }, nil
79−}
80−
81−// GetToken requests an access token from MSAL, checking the cache first.
82−func (c *confidentialClient) GetToken(ctx context.Context, tro policy.TokenRequestOptions) (azcore.AccessToken, error) {
83− if len(tro.Scopes) < 1 {
84− return azcore.AccessToken{}, fmt.Errorf("%s.GetToken() requires at least one scope", c.name)
85− }
86− // we don't resolve the tenant for managed identities because they acquire tokens only from their home tenants
87− if c.name != credNameManagedIdentity {
88− tenant, err := c.resolveTenant(tro.TenantID)
89− if err != nil {
90− return azcore.AccessToken{}, err
91− }
92− tro.TenantID = tenant
93− }
94− client, mu, err := c.client(tro)
95− if err != nil {
96− return azcore.AccessToken{}, err
97− }
98− mu.Lock()
99− defer mu.Unlock()
100− var ar confidential.AuthResult
101− if c.opts.Assertion != "" {
102− ar, err = client.AcquireTokenOnBehalfOf(ctx, c.opts.Assertion, tro.Scopes, confidential.WithClaims(tro.Claims), confidential.WithTenantID(tro.TenantID))
103− } else {
104− ar, err = client.AcquireTokenSilent(ctx, tro.Scopes, confidential.WithClaims(tro.Claims), confidential.WithTenantID(tro.TenantID))
105− if err != nil {
106− ar, err = client.AcquireTokenByCredential(ctx, tro.Scopes, confidential.WithClaims(tro.Claims), confidential.WithTenantID(tro.TenantID))
107− }
108− }
109− if err != nil {
110− // We could get a credentialUnavailableError from managed identity authentication because in that case the error comes from our code.
111− // We return it directly because it affects the behavior of credential chains. Otherwise, we return AuthenticationFailedError.
112− var unavailableErr credentialUnavailable
113− if !errors.As(err, &unavailableErr) {
114− res := getResponseFromError(err)
115− err = newAuthenticationFailedError(c.name, err.Error(), res, err)
116− }
117− } else {
118− msg := fmt.Sprintf("%s.GetToken() acquired a token for scope %q", c.name, strings.Join(ar.GrantedScopes, ", "))
119− log.Write(EventAuthentication, msg)
120− }
121− return azcore.AccessToken{Token: ar.AccessToken, ExpiresOn: ar.ExpiresOn.UTC()}, err
122−}
123−
124−func (c *confidentialClient) client(tro policy.TokenRequestOptions) (msalConfidentialClient, *sync.Mutex, error) {
125− c.clientMu.Lock()
126− defer c.clientMu.Unlock()
127− if tro.EnableCAE {
128− if c.cae == nil {
129− client, err := c.newMSALClient(true)
130− if err != nil {
131− return nil, nil, err
132− }
133− c.cae = client
134− }
135− return c.cae, c.caeMu, nil
136− }
137− if c.noCAE == nil {
138− client, err := c.newMSALClient(false)
139− if err != nil {
140− return nil, nil, err
141− }
142− c.noCAE = client
143− }
144− return c.noCAE, c.noCAEMu, nil
145−}
146−
147−func (c *confidentialClient) newMSALClient(enableCAE bool) (msalConfidentialClient, error) {
148− cache, err := internal.NewCache(c.opts.tokenCachePersistenceOptions, enableCAE)
149− if err != nil {
150− return nil, err
151− }
152− authority := runtime.JoinPaths(c.host, c.tenantID)
153− o := []confidential.Option{
154− confidential.WithAzureRegion(c.region),
155− confidential.WithCache(cache),
156− confidential.WithHTTPClient(c),
157− }
158− if enableCAE {
159− o = append(o, confidential.WithClientCapabilities(cp1))
160− }
161− if c.opts.SendX5C {
162− o = append(o, confidential.WithX5C())
163− }
164− if c.opts.DisableInstanceDiscovery || strings.ToLower(c.tenantID) == "adfs" {
165− o = append(o, confidential.WithInstanceDiscovery(false))
166− }
167− return confidential.New(authority, c.clientID, c.cred, o...)
168−}
169−
170−// resolveTenant returns the correct WithTenantID() argument for a token request given the client's
171−// configuration, or an error when that configuration doesn't allow the specified tenant
172−func (c *confidentialClient) resolveTenant(specified string) (string, error) {
173− return resolveTenant(c.tenantID, specified, c.name, c.opts.AdditionallyAllowedTenants)
174−}
175−
176−// these methods satisfy the MSAL ops.HTTPClient interface
177−
178−func (c *confidentialClient) CloseIdleConnections() {
179− // do nothing
180−}
181−
182−func (c *confidentialClient) Do(r *http.Request) (*http.Response, error) {
183− return doForClient(c.azClient, r)
184−}
vendor/github.com/Azure/azure-sdk-for-go/sdk/azidentity/default_azure_credential.godeleted−165
@@ -1,165 +0,0 @@
1−//go:build go1.18
2−// +build go1.18
3−
4−// Copyright (c) Microsoft Corporation. All rights reserved.
5−// Licensed under the MIT License.
6−
7−package azidentity
8−
9−import (
10− "context"
11− "os"
12− "strings"
13−
14− "github.com/Azure/azure-sdk-for-go/sdk/azcore"
15− "github.com/Azure/azure-sdk-for-go/sdk/azcore/policy"
16− "github.com/Azure/azure-sdk-for-go/sdk/internal/log"
17−)
18−
19−// DefaultAzureCredentialOptions contains optional parameters for DefaultAzureCredential.
20−// These options may not apply to all credentials in the chain.
21−type DefaultAzureCredentialOptions struct {
22− // ClientOptions has additional options for credentials that use an Azure SDK HTTP pipeline. These options don't apply
23− // to credential types that authenticate via external tools such as the Azure CLI.
24− azcore.ClientOptions
25−
26− // AdditionallyAllowedTenants specifies additional tenants for which the credential may acquire tokens. Add
27− // the wildcard value "*" to allow the credential to acquire tokens for any tenant. This value can also be
28− // set as a semicolon delimited list of tenants in the environment variable AZURE_ADDITIONALLY_ALLOWED_TENANTS.
29− AdditionallyAllowedTenants []string
30− // DisableInstanceDiscovery should be set true only by applications authenticating in disconnected clouds, or
31− // private clouds such as Azure Stack. It determines whether the credential requests Microsoft Entra instance metadata
32− // from https://login.microsoft.com before authenticating. Setting this to true will skip this request, making
33− // the application responsible for ensuring the configured authority is valid and trustworthy.
34− DisableInstanceDiscovery bool
35− // TenantID sets the default tenant for authentication via the Azure CLI and workload identity.
36− TenantID string
37−}
38−
39−// DefaultAzureCredential is a default credential chain for applications that will deploy to Azure.
40−// It combines credentials suitable for deployment with credentials suitable for local development.
41−// It attempts to authenticate with each of these credential types, in the following order, stopping
42−// when one provides a token:
43−//
44−// - [EnvironmentCredential]
45−// - [WorkloadIdentityCredential], if environment variable configuration is set by the Azure workload
46−// identity webhook. Use [WorkloadIdentityCredential] directly when not using the webhook or needing
47−// more control over its configuration.
48−// - [ManagedIdentityCredential]
49−// - [AzureCLICredential]
50−// - [AzureDeveloperCLICredential]
51−//
52−// Consult the documentation for these credential types for more information on how they authenticate.
53−// Once a credential has successfully authenticated, DefaultAzureCredential will use that credential for
54−// every subsequent authentication.
55−type DefaultAzureCredential struct {
56− chain *ChainedTokenCredential
57−}
58−
59−// NewDefaultAzureCredential creates a DefaultAzureCredential. Pass nil for options to accept defaults.
60−func NewDefaultAzureCredential(options *DefaultAzureCredentialOptions) (*DefaultAzureCredential, error) {
61− var creds []azcore.TokenCredential
62− var errorMessages []string
63−
64− if options == nil {
65− options = &DefaultAzureCredentialOptions{}
66− }
67− additionalTenants := options.AdditionallyAllowedTenants
68− if len(additionalTenants) == 0 {
69− if tenants := os.Getenv(azureAdditionallyAllowedTenants); tenants != "" {
70− additionalTenants = strings.Split(tenants, ";")
71− }
72− }
73−
74− envCred, err := NewEnvironmentCredential(&EnvironmentCredentialOptions{
75− ClientOptions: options.ClientOptions,
76− DisableInstanceDiscovery: options.DisableInstanceDiscovery,
77− additionallyAllowedTenants: additionalTenants,
78− })
79− if err == nil {
80− creds = append(creds, envCred)
81− } else {
82− errorMessages = append(errorMessages, "EnvironmentCredential: "+err.Error())
83− creds = append(creds, &defaultCredentialErrorReporter{credType: "EnvironmentCredential", err: err})
84− }
85−
86− wic, err := NewWorkloadIdentityCredential(&WorkloadIdentityCredentialOptions{
87− AdditionallyAllowedTenants: additionalTenants,
88− ClientOptions: options.ClientOptions,
89− DisableInstanceDiscovery: options.DisableInstanceDiscovery,
90− TenantID: options.TenantID,
91− })
92− if err == nil {
93− creds = append(creds, wic)
94− } else {
95− errorMessages = append(errorMessages, credNameWorkloadIdentity+": "+err.Error())
96− creds = append(creds, &defaultCredentialErrorReporter{credType: credNameWorkloadIdentity, err: err})
97− }
98−
99− o := &ManagedIdentityCredentialOptions{ClientOptions: options.ClientOptions, dac: true}
100− if ID, ok := os.LookupEnv(azureClientID); ok {
101− o.ID = ClientID(ID)
102− }
103− miCred, err := NewManagedIdentityCredential(o)
104− if err == nil {
105− creds = append(creds, miCred)
106− } else {
107− errorMessages = append(errorMessages, credNameManagedIdentity+": "+err.Error())
108− creds = append(creds, &defaultCredentialErrorReporter{credType: credNameManagedIdentity, err: err})
109− }
110−
111− cliCred, err := NewAzureCLICredential(&AzureCLICredentialOptions{AdditionallyAllowedTenants: additionalTenants, TenantID: options.TenantID})
112− if err == nil {
113− creds = append(creds, cliCred)
114− } else {
115− errorMessages = append(errorMessages, credNameAzureCLI+": "+err.Error())
116− creds = append(creds, &defaultCredentialErrorReporter{credType: credNameAzureCLI, err: err})
117− }
118−
119− azdCred, err := NewAzureDeveloperCLICredential(&AzureDeveloperCLICredentialOptions{
120− AdditionallyAllowedTenants: additionalTenants,
121− TenantID: options.TenantID,
122− })
123− if err == nil {
124− creds = append(creds, azdCred)
125− } else {
126− errorMessages = append(errorMessages, credNameAzureDeveloperCLI+": "+err.Error())
127− creds = append(creds, &defaultCredentialErrorReporter{credType: credNameAzureDeveloperCLI, err: err})
128− }
129−
130− if len(errorMessages) > 0 {
131− log.Writef(EventAuthentication, "NewDefaultAzureCredential failed to initialize some credentials:\n\t%s", strings.Join(errorMessages, "\n\t"))
132− }
133−
134− chain, err := NewChainedTokenCredential(creds, nil)
135− if err != nil {
136− return nil, err
137− }
138− chain.name = "DefaultAzureCredential"
139− return &DefaultAzureCredential{chain: chain}, nil
140−}
141−
142−// GetToken requests an access token from Microsoft Entra ID. This method is called automatically by Azure SDK clients.
143−func (c *DefaultAzureCredential) GetToken(ctx context.Context, opts policy.TokenRequestOptions) (azcore.AccessToken, error) {
144− return c.chain.GetToken(ctx, opts)
145−}
146−
147−var _ azcore.TokenCredential = (*DefaultAzureCredential)(nil)
148−
149−// defaultCredentialErrorReporter is a substitute for credentials that couldn't be constructed.
150−// Its GetToken method always returns a credentialUnavailableError having the same message as
151−// the error that prevented constructing the credential. This ensures the message is present
152−// in the error returned by ChainedTokenCredential.GetToken()
153−type defaultCredentialErrorReporter struct {
154− credType string
155− err error
156−}
157−
158−func (d *defaultCredentialErrorReporter) GetToken(ctx context.Context, opts policy.TokenRequestOptions) (azcore.AccessToken, error) {
159− if _, ok := d.err.(credentialUnavailable); ok {
160− return azcore.AccessToken{}, d.err
161− }
162− return azcore.AccessToken{}, newCredentialUnavailableError(d.credType, d.err.Error())
163−}
164−
165−var _ azcore.TokenCredential = (*defaultCredentialErrorReporter)(nil)
vendor/github.com/Azure/azure-sdk-for-go/sdk/azidentity/developer_credential_util.godeleted−38
@@ -1,38 +0,0 @@
1−//go:build go1.18
2−// +build go1.18
3−
4−// Copyright (c) Microsoft Corporation. All rights reserved.
5−// Licensed under the MIT License.
6−
7−package azidentity
8−
9−import (
10− "errors"
11− "time"
12−)
13−
14−// cliTimeout is the default timeout for authentication attempts via CLI tools
15−const cliTimeout = 10 * time.Second
16−
17−// unavailableIfInChain returns err or, if the credential was invoked by DefaultAzureCredential, a
18−// credentialUnavailableError having the same message. This ensures DefaultAzureCredential will try
19−// the next credential in its chain (another developer credential).
20−func unavailableIfInChain(err error, inDefaultChain bool) error {
21− if err != nil && inDefaultChain {
22− var unavailableErr credentialUnavailable
23− if !errors.As(err, &unavailableErr) {
24− err = newCredentialUnavailableError(credNameAzureDeveloperCLI, err.Error())
25− }
26− }
27− return err
28−}
29−
30−// validScope is for credentials authenticating via external tools. The authority validates scopes for all other credentials.
31−func validScope(scope string) bool {
32− for _, r := range scope {
33− if !(alphanumeric(r) || r == '.' || r == '-' || r == '_' || r == '/' || r == ':') {
34− return false
35− }
36− }
37− return true
38−}
vendor/github.com/Azure/azure-sdk-for-go/sdk/azidentity/device_code_credential.godeleted−138
@@ -1,138 +0,0 @@
1−//go:build go1.18
2−// +build go1.18
3−
4−// Copyright (c) Microsoft Corporation. All rights reserved.
5−// Licensed under the MIT License.
6−
7−package azidentity
8−
9−import (
10− "context"
11− "fmt"
12−
13− "github.com/Azure/azure-sdk-for-go/sdk/azcore"
14− "github.com/Azure/azure-sdk-for-go/sdk/azcore/policy"
15− "github.com/Azure/azure-sdk-for-go/sdk/azcore/runtime"
16−)
17−
18−const credNameDeviceCode = "DeviceCodeCredential"
19−
20−// DeviceCodeCredentialOptions contains optional parameters for DeviceCodeCredential.
21−type DeviceCodeCredentialOptions struct {
22− azcore.ClientOptions
23−
24− // AdditionallyAllowedTenants specifies additional tenants for which the credential may acquire
25− // tokens. Add the wildcard value "*" to allow the credential to acquire tokens for any tenant.
26− AdditionallyAllowedTenants []string
27−
28− // authenticationRecord returned by a call to a credential's Authenticate method. Set this option
29− // to enable the credential to use data from a previous authentication.
30− authenticationRecord authenticationRecord
31−
32− // ClientID is the ID of the application users will authenticate to.
33− // Defaults to the ID of an Azure development application.
34− ClientID string
35−
36− // disableAutomaticAuthentication prevents the credential from automatically prompting the user to authenticate.
37− // When this option is true, GetToken will return authenticationRequiredError when user interaction is necessary
38− // to acquire a token.
39− disableAutomaticAuthentication bool
40−
41− // DisableInstanceDiscovery should be set true only by applications authenticating in disconnected clouds, or
42− // private clouds such as Azure Stack. It determines whether the credential requests Microsoft Entra instance metadata
43− // from https://login.microsoft.com before authenticating. Setting this to true will skip this request, making
44− // the application responsible for ensuring the configured authority is valid and trustworthy.
45− DisableInstanceDiscovery bool
46−
47− // TenantID is the Microsoft Entra tenant the credential authenticates in. Defaults to the
48− // "organizations" tenant, which can authenticate work and school accounts. Required for single-tenant
49− // applications.
50− TenantID string
51−
52− // tokenCachePersistenceOptions enables persistent token caching when not nil.
53− tokenCachePersistenceOptions *tokenCachePersistenceOptions
54−
55− // UserPrompt controls how the credential presents authentication instructions. The credential calls
56− // this function with authentication details when it receives a device code. By default, the credential
57− // prints these details to stdout.
58− UserPrompt func(context.Context, DeviceCodeMessage) error
59−}
60−
61−func (o *DeviceCodeCredentialOptions) init() {
62− if o.TenantID == "" {
63− o.TenantID = organizationsTenantID
64− }
65− if o.ClientID == "" {
66− o.ClientID = developerSignOnClientID
67− }
68− if o.UserPrompt == nil {
69− o.UserPrompt = func(ctx context.Context, dc DeviceCodeMessage) error {
70− fmt.Println(dc.Message)
71− return nil
72− }
73− }
74−}
75−
76−// DeviceCodeMessage contains the information a user needs to complete authentication.
77−type DeviceCodeMessage struct {
78− // UserCode is the user code returned by the service.
79− UserCode string `json:"user_code"`
80− // VerificationURL is the URL at which the user must authenticate.
81− VerificationURL string `json:"verification_uri"`
82− // Message is user instruction from Microsoft Entra ID.
83− Message string `json:"message"`
84−}
85−
86−// DeviceCodeCredential acquires tokens for a user via the device code flow, which has the
87−// user browse to a Microsoft Entra URL, enter a code, and authenticate. It's useful
88−// for authenticating a user in an environment without a web browser, such as an SSH session.
89−// If a web browser is available, [InteractiveBrowserCredential] is more convenient because it
90−// automatically opens a browser to the login page.
91−type DeviceCodeCredential struct {
92− client *publicClient
93−}
94−
95−// NewDeviceCodeCredential creates a DeviceCodeCredential. Pass nil to accept default options.
96−func NewDeviceCodeCredential(options *DeviceCodeCredentialOptions) (*DeviceCodeCredential, error) {
97− cp := DeviceCodeCredentialOptions{}
98− if options != nil {
99− cp = *options
100− }
101− cp.init()
102− msalOpts := publicClientOptions{
103− AdditionallyAllowedTenants: cp.AdditionallyAllowedTenants,
104− ClientOptions: cp.ClientOptions,
105− DeviceCodePrompt: cp.UserPrompt,
106− DisableAutomaticAuthentication: cp.disableAutomaticAuthentication,
107− DisableInstanceDiscovery: cp.DisableInstanceDiscovery,
108− Record: cp.authenticationRecord,
109− TokenCachePersistenceOptions: cp.tokenCachePersistenceOptions,
110− }
111− c, err := newPublicClient(cp.TenantID, cp.ClientID, credNameDeviceCode, msalOpts)
112− if err != nil {
113− return nil, err
114− }
115− c.name = credNameDeviceCode
116− return &DeviceCodeCredential{client: c}, nil
117−}
118−
119−// Authenticate a user via the device code flow. Subsequent calls to GetToken will automatically use the returned AuthenticationRecord.
120−func (c *DeviceCodeCredential) authenticate(ctx context.Context, opts *policy.TokenRequestOptions) (authenticationRecord, error) {
121− var err error
122− ctx, endSpan := runtime.StartSpan(ctx, credNameDeviceCode+"."+traceOpAuthenticate, c.client.azClient.Tracer(), nil)
123− defer func() { endSpan(err) }()
124− tk, err := c.client.Authenticate(ctx, opts)
125− return tk, err
126−}
127−
128−// GetToken requests an access token from Microsoft Entra ID. It will begin the device code flow and poll until the user completes authentication.
129−// This method is called automatically by Azure SDK clients.
130−func (c *DeviceCodeCredential) GetToken(ctx context.Context, opts policy.TokenRequestOptions) (azcore.AccessToken, error) {
131− var err error
132− ctx, endSpan := runtime.StartSpan(ctx, credNameDeviceCode+"."+traceOpGetToken, c.client.azClient.Tracer(), nil)
133− defer func() { endSpan(err) }()
134− tk, err := c.client.GetToken(ctx, opts)
135− return tk, err
136−}
137−
138−var _ azcore.TokenCredential = (*DeviceCodeCredential)(nil)
vendor/github.com/Azure/azure-sdk-for-go/sdk/azidentity/environment_credential.godeleted−167
@@ -1,167 +0,0 @@
1−//go:build go1.18
2−// +build go1.18
3−
4−// Copyright (c) Microsoft Corporation. All rights reserved.
5−// Licensed under the MIT License.
6−
7−package azidentity
8−
9−import (
10− "context"
11− "errors"
12− "fmt"
13− "os"
14− "strings"
15−
16− "github.com/Azure/azure-sdk-for-go/sdk/azcore"
17− "github.com/Azure/azure-sdk-for-go/sdk/azcore/policy"
18− "github.com/Azure/azure-sdk-for-go/sdk/internal/log"
19−)
20−
21−const envVarSendCertChain = "AZURE_CLIENT_SEND_CERTIFICATE_CHAIN"
22−
23−// EnvironmentCredentialOptions contains optional parameters for EnvironmentCredential
24−type EnvironmentCredentialOptions struct {
25− azcore.ClientOptions
26−
27− // DisableInstanceDiscovery should be set true only by applications authenticating in disconnected clouds, or
28− // private clouds such as Azure Stack. It determines whether the credential requests Microsoft Entra instance metadata
29− // from https://login.microsoft.com before authenticating. Setting this to true will skip this request, making
30− // the application responsible for ensuring the configured authority is valid and trustworthy.
31− DisableInstanceDiscovery bool
32− // additionallyAllowedTenants is used only by NewDefaultAzureCredential() to enable that constructor's explicit
33− // option to override the value of AZURE_ADDITIONALLY_ALLOWED_TENANTS. Applications using EnvironmentCredential
34− // directly should set that variable instead. This field should remain unexported to preserve this credential's
35− // unambiguous "all configuration from environment variables" design.
36− additionallyAllowedTenants []string
37−}
38−
39−// EnvironmentCredential authenticates a service principal with a secret or certificate, or a user with a password, depending
40−// on environment variable configuration. It reads configuration from these variables, in the following order:
41−//
42−// # Service principal with client secret
43−//
44−// AZURE_TENANT_ID: ID of the service principal's tenant. Also called its "directory" ID.
45−//
46−// AZURE_CLIENT_ID: the service principal's client ID
47−//
48−// AZURE_CLIENT_SECRET: one of the service principal's client secrets
49−//
50−// # Service principal with certificate
51−//
52−// AZURE_TENANT_ID: ID of the service principal's tenant. Also called its "directory" ID.
53−//
54−// AZURE_CLIENT_ID: the service principal's client ID
55−//
56−// AZURE_CLIENT_CERTIFICATE_PATH: path to a PEM or PKCS12 certificate file including the private key.
57−//
58−// AZURE_CLIENT_CERTIFICATE_PASSWORD: (optional) password for the certificate file.
59−//
60−// Note that this credential uses [ParseCertificates] to load the certificate and key from the file. If this
61−// function isn't able to parse your certificate, use [ClientCertificateCredential] instead.
62−//
63−// # User with username and password
64−//
65−// AZURE_TENANT_ID: (optional) tenant to authenticate in. Defaults to "organizations".
66−//
67−// AZURE_CLIENT_ID: client ID of the application the user will authenticate to
68−//
69−// AZURE_USERNAME: a username (usually an email address)
70−//
71−// AZURE_PASSWORD: the user's password
72−//
73−// # Configuration for multitenant applications
74−//
75−// To enable multitenant authentication, set AZURE_ADDITIONALLY_ALLOWED_TENANTS with a semicolon delimited list of tenants
76−// the credential may request tokens from in addition to the tenant specified by AZURE_TENANT_ID. Set
77−// AZURE_ADDITIONALLY_ALLOWED_TENANTS to "*" to enable the credential to request a token from any tenant.
78−type EnvironmentCredential struct {
79− cred azcore.TokenCredential
80−}
81−
82−// NewEnvironmentCredential creates an EnvironmentCredential. Pass nil to accept default options.
83−func NewEnvironmentCredential(options *EnvironmentCredentialOptions) (*EnvironmentCredential, error) {
84− if options == nil {
85− options = &EnvironmentCredentialOptions{}
86− }
87− tenantID := os.Getenv(azureTenantID)
88− if tenantID == "" {
89− return nil, errors.New("missing environment variable AZURE_TENANT_ID")
90− }
91− clientID := os.Getenv(azureClientID)
92− if clientID == "" {
93− return nil, errors.New("missing environment variable " + azureClientID)
94− }
95− // tenants set by NewDefaultAzureCredential() override the value of AZURE_ADDITIONALLY_ALLOWED_TENANTS
96− additionalTenants := options.additionallyAllowedTenants
97− if len(additionalTenants) == 0 {
98− if tenants := os.Getenv(azureAdditionallyAllowedTenants); tenants != "" {
99− additionalTenants = strings.Split(tenants, ";")
100− }
101− }
102− if clientSecret := os.Getenv(azureClientSecret); clientSecret != "" {
103− log.Write(EventAuthentication, "EnvironmentCredential will authenticate with ClientSecretCredential")
104− o := &ClientSecretCredentialOptions{
105− AdditionallyAllowedTenants: additionalTenants,
106− ClientOptions: options.ClientOptions,
107− DisableInstanceDiscovery: options.DisableInstanceDiscovery,
108− }
109− cred, err := NewClientSecretCredential(tenantID, clientID, clientSecret, o)
110− if err != nil {
111− return nil, err
112− }
113− return &EnvironmentCredential{cred: cred}, nil
114− }
115− if certPath := os.Getenv(azureClientCertificatePath); certPath != "" {
116− log.Write(EventAuthentication, "EnvironmentCredential will authenticate with ClientCertificateCredential")
117− certData, err := os.ReadFile(certPath)
118− if err != nil {
119− return nil, fmt.Errorf(`failed to read certificate file "%s": %v`, certPath, err)
120− }
121− var password []byte
122− if v := os.Getenv(azureClientCertificatePassword); v != "" {
123− password = []byte(v)
124− }
125− certs, key, err := ParseCertificates(certData, password)
126− if err != nil {
127− return nil, fmt.Errorf("failed to parse %q due to error %q. This may be due to a limitation of this module's certificate loader. Consider calling NewClientCertificateCredential instead", certPath, err.Error())
128− }
129− o := &ClientCertificateCredentialOptions{
130− AdditionallyAllowedTenants: additionalTenants,
131− ClientOptions: options.ClientOptions,
132− DisableInstanceDiscovery: options.DisableInstanceDiscovery,
133− }
134− if v, ok := os.LookupEnv(envVarSendCertChain); ok {
135− o.SendCertificateChain = v == "1" || strings.ToLower(v) == "true"
136− }
137− cred, err := NewClientCertificateCredential(tenantID, clientID, certs, key, o)
138− if err != nil {
139− return nil, err
140− }
141− return &EnvironmentCredential{cred: cred}, nil
142− }
143− if username := os.Getenv(azureUsername); username != "" {
144− if password := os.Getenv(azurePassword); password != "" {
145− log.Write(EventAuthentication, "EnvironmentCredential will authenticate with UsernamePasswordCredential")
146− o := &UsernamePasswordCredentialOptions{
147− AdditionallyAllowedTenants: additionalTenants,
148− ClientOptions: options.ClientOptions,
149− DisableInstanceDiscovery: options.DisableInstanceDiscovery,
150− }
151− cred, err := NewUsernamePasswordCredential(tenantID, clientID, username, password, o)
152− if err != nil {
153− return nil, err
154− }
155− return &EnvironmentCredential{cred: cred}, nil
156− }
157− return nil, errors.New("no value for AZURE_PASSWORD")
158− }
159− return nil, errors.New("incomplete environment variable configuration. Only AZURE_TENANT_ID and AZURE_CLIENT_ID are set")
160−}
161−
162−// GetToken requests an access token from Microsoft Entra ID. This method is called automatically by Azure SDK clients.
163−func (c *EnvironmentCredential) GetToken(ctx context.Context, opts policy.TokenRequestOptions) (azcore.AccessToken, error) {
164− return c.cred.GetToken(ctx, opts)
165−}
166−
167−var _ azcore.TokenCredential = (*EnvironmentCredential)(nil)
vendor/github.com/Azure/azure-sdk-for-go/sdk/azidentity/errors.godeleted−170

This diff is too big to show here.

vendor/github.com/Azure/azure-sdk-for-go/sdk/azidentity/interactive_browser_credential.godeleted−118

This diff is too big to show here.

vendor/github.com/Azure/azure-sdk-for-go/sdk/azidentity/internal/exported.godeleted−18

This diff is too big to show here.

vendor/github.com/Azure/azure-sdk-for-go/sdk/azidentity/internal/internal.godeleted−31

This diff is too big to show here.

vendor/github.com/Azure/azure-sdk-for-go/sdk/azidentity/logging.godeleted−14

This diff is too big to show here.

vendor/github.com/Azure/azure-sdk-for-go/sdk/azidentity/managed-identity-matrix.jsondeleted−17

This diff is too big to show here.

vendor/github.com/Azure/azure-sdk-for-go/sdk/azidentity/managed_identity_client.godeleted−501

This diff is too big to show here.

vendor/github.com/Azure/azure-sdk-for-go/sdk/azidentity/managed_identity_credential.godeleted−128

This diff is too big to show here.

vendor/github.com/Azure/azure-sdk-for-go/sdk/azidentity/on_behalf_of_credential.godeleted−113

This diff is too big to show here.

vendor/github.com/Azure/azure-sdk-for-go/sdk/azidentity/public_client.godeleted−273

This diff is too big to show here.

vendor/github.com/Azure/azure-sdk-for-go/sdk/azidentity/test-resources-post.ps1deleted−112

This diff is too big to show here.

vendor/github.com/Azure/azure-sdk-for-go/sdk/azidentity/test-resources-pre.ps1deleted−44

This diff is too big to show here.

vendor/github.com/Azure/azure-sdk-for-go/sdk/azidentity/test-resources.bicepdeleted−219

This diff is too big to show here.

vendor/github.com/Azure/azure-sdk-for-go/sdk/azidentity/username_password_credential.godeleted−90

This diff is too big to show here.

vendor/github.com/Azure/azure-sdk-for-go/sdk/azidentity/version.godeleted−18

This diff is too big to show here.

vendor/github.com/Azure/azure-sdk-for-go/sdk/azidentity/workload_identity.godeleted−131

This diff is too big to show here.

vendor/github.com/Azure/azure-sdk-for-go/sdk/internal/LICENSE.txtdeleted−21

This diff is too big to show here.

vendor/github.com/Azure/azure-sdk-for-go/sdk/internal/diag/diag.godeleted−51

This diff is too big to show here.

vendor/github.com/Azure/azure-sdk-for-go/sdk/internal/diag/doc.godeleted−7

This diff is too big to show here.

vendor/github.com/Azure/azure-sdk-for-go/sdk/internal/errorinfo/doc.godeleted−7

This diff is too big to show here.

vendor/github.com/Azure/azure-sdk-for-go/sdk/internal/errorinfo/errorinfo.godeleted−46

This diff is too big to show here.

vendor/github.com/Azure/azure-sdk-for-go/sdk/internal/exported/exported.godeleted−129

This diff is too big to show here.

vendor/github.com/Azure/azure-sdk-for-go/sdk/internal/log/doc.godeleted−7

This diff is too big to show here.

vendor/github.com/Azure/azure-sdk-for-go/sdk/internal/log/log.godeleted−104

This diff is too big to show here.

vendor/github.com/Azure/azure-sdk-for-go/sdk/internal/poller/util.godeleted−155

This diff is too big to show here.

vendor/github.com/Azure/azure-sdk-for-go/sdk/internal/temporal/resource.godeleted−123

This diff is too big to show here.

vendor/github.com/Azure/azure-sdk-for-go/sdk/internal/uuid/doc.godeleted−7

This diff is too big to show here.

vendor/github.com/Azure/azure-sdk-for-go/sdk/internal/uuid/uuid.godeleted−76

This diff is too big to show here.

vendor/github.com/AzureAD/microsoft-authentication-library-for-go/LICENSEdeleted−21

This diff is too big to show here.

vendor/github.com/AzureAD/microsoft-authentication-library-for-go/apps/cache/cache.godeleted−54

This diff is too big to show here.

vendor/github.com/AzureAD/microsoft-authentication-library-for-go/apps/confidential/confidential.godeleted−719

This diff is too big to show here.

vendor/github.com/AzureAD/microsoft-authentication-library-for-go/apps/errors/error_design.mddeleted−111

This diff is too big to show here.

vendor/github.com/AzureAD/microsoft-authentication-library-for-go/apps/errors/errors.godeleted−89

This diff is too big to show here.

vendor/github.com/AzureAD/microsoft-authentication-library-for-go/apps/internal/base/base.godeleted−477

This diff is too big to show here.

vendor/github.com/AzureAD/microsoft-authentication-library-for-go/apps/internal/base/internal/storage/items.godeleted−213

This diff is too big to show here.

vendor/github.com/AzureAD/microsoft-authentication-library-for-go/apps/internal/base/internal/storage/partitioned_storage.godeleted−442

This diff is too big to show here.

vendor/github.com/AzureAD/microsoft-authentication-library-for-go/apps/internal/base/internal/storage/storage.godeleted−583

This diff is too big to show here.

vendor/github.com/AzureAD/microsoft-authentication-library-for-go/apps/internal/exported/exported.godeleted−34

This diff is too big to show here.

vendor/github.com/AzureAD/microsoft-authentication-library-for-go/apps/internal/json/design.mddeleted−140

This diff is too big to show here.

vendor/github.com/AzureAD/microsoft-authentication-library-for-go/apps/internal/json/json.godeleted−184

This diff is too big to show here.

vendor/github.com/AzureAD/microsoft-authentication-library-for-go/apps/internal/json/mapslice.godeleted−333

This diff is too big to show here.

vendor/github.com/AzureAD/microsoft-authentication-library-for-go/apps/internal/json/marshal.godeleted−346

This diff is too big to show here.

vendor/github.com/AzureAD/microsoft-authentication-library-for-go/apps/internal/json/struct.godeleted−290

This diff is too big to show here.

vendor/github.com/AzureAD/microsoft-authentication-library-for-go/apps/internal/json/types/time/time.godeleted−70

This diff is too big to show here.

vendor/github.com/AzureAD/microsoft-authentication-library-for-go/apps/internal/local/server.godeleted−177

This diff is too big to show here.

vendor/github.com/AzureAD/microsoft-authentication-library-for-go/apps/internal/oauth/oauth.godeleted−354

This diff is too big to show here.

vendor/github.com/AzureAD/microsoft-authentication-library-for-go/apps/internal/oauth/ops/accesstokens/accesstokens.godeleted−457

This diff is too big to show here.

vendor/github.com/AzureAD/microsoft-authentication-library-for-go/apps/internal/oauth/ops/accesstokens/apptype_string.godeleted−25

This diff is too big to show here.

vendor/github.com/AzureAD/microsoft-authentication-library-for-go/apps/internal/oauth/ops/accesstokens/tokens.godeleted−339

This diff is too big to show here.

vendor/github.com/AzureAD/microsoft-authentication-library-for-go/apps/internal/oauth/ops/authority/authority.godeleted−589

This diff is too big to show here.

vendor/github.com/AzureAD/microsoft-authentication-library-for-go/apps/internal/oauth/ops/authority/authorizetype_string.godeleted−30

This diff is too big to show here.

vendor/github.com/AzureAD/microsoft-authentication-library-for-go/apps/internal/oauth/ops/internal/comm/comm.godeleted−320

This diff is too big to show here.

vendor/github.com/AzureAD/microsoft-authentication-library-for-go/apps/internal/oauth/ops/internal/comm/compress.godeleted−33

This diff is too big to show here.

vendor/github.com/AzureAD/microsoft-authentication-library-for-go/apps/internal/oauth/ops/internal/grant/grant.godeleted−17

This diff is too big to show here.

vendor/github.com/AzureAD/microsoft-authentication-library-for-go/apps/internal/oauth/ops/ops.godeleted−56

This diff is too big to show here.

vendor/github.com/AzureAD/microsoft-authentication-library-for-go/apps/internal/oauth/ops/wstrust/defs/endpointtype_string.godeleted−25

This diff is too big to show here.

vendor/github.com/AzureAD/microsoft-authentication-library-for-go/apps/internal/oauth/ops/wstrust/defs/mex_document_definitions.godeleted−394

This diff is too big to show here.

vendor/github.com/AzureAD/microsoft-authentication-library-for-go/apps/internal/oauth/ops/wstrust/defs/saml_assertion_definitions.godeleted−230

This diff is too big to show here.

vendor/github.com/AzureAD/microsoft-authentication-library-for-go/apps/internal/oauth/ops/wstrust/defs/version_string.godeleted−25

This diff is too big to show here.

vendor/github.com/AzureAD/microsoft-authentication-library-for-go/apps/internal/oauth/ops/wstrust/defs/wstrust_endpoint.godeleted−199

This diff is too big to show here.

vendor/github.com/AzureAD/microsoft-authentication-library-for-go/apps/internal/oauth/ops/wstrust/defs/wstrust_mex_document.godeleted−159

This diff is too big to show here.

vendor/github.com/AzureAD/microsoft-authentication-library-for-go/apps/internal/oauth/ops/wstrust/wstrust.godeleted−136

This diff is too big to show here.

vendor/github.com/AzureAD/microsoft-authentication-library-for-go/apps/internal/oauth/resolvers.godeleted−149

This diff is too big to show here.

vendor/github.com/AzureAD/microsoft-authentication-library-for-go/apps/internal/options/options.godeleted−52

This diff is too big to show here.

vendor/github.com/AzureAD/microsoft-authentication-library-for-go/apps/internal/shared/shared.godeleted−72

This diff is too big to show here.

vendor/github.com/AzureAD/microsoft-authentication-library-for-go/apps/internal/version/version.godeleted−8

This diff is too big to show here.

vendor/github.com/AzureAD/microsoft-authentication-library-for-go/apps/public/public.godeleted−756

This diff is too big to show here.

vendor/github.com/JohannesKaufmann/html-to-markdown/.gitignoredeleted−14

This diff is too big to show here.

vendor/github.com/JohannesKaufmann/html-to-markdown/CONTRIBUTING.mddeleted

No changes to the content.

vendor/github.com/JohannesKaufmann/html-to-markdown/LICENSEdeleted−21

This diff is too big to show here.

vendor/github.com/JohannesKaufmann/html-to-markdown/README.mddeleted−242

This diff is too big to show here.

vendor/github.com/JohannesKaufmann/html-to-markdown/SECURITY.mddeleted−6

This diff is too big to show here.

vendor/github.com/JohannesKaufmann/html-to-markdown/commonmark.godeleted−393

This diff is too big to show here.

vendor/github.com/JohannesKaufmann/html-to-markdown/escape/escape.godeleted−65

This diff is too big to show here.

vendor/github.com/JohannesKaufmann/html-to-markdown/from.godeleted−464

This diff is too big to show here.

vendor/github.com/JohannesKaufmann/html-to-markdown/logo_five_years.pngdeleted

Binary file not shown.

vendor/github.com/JohannesKaufmann/html-to-markdown/markdown.godeleted−212

This diff is too big to show here.

vendor/github.com/JohannesKaufmann/html-to-markdown/utils.godeleted−533

This diff is too big to show here.

vendor/github.com/MakeNowJust/heredoc/LICENSEdeleted−21

This diff is too big to show here.

vendor/github.com/MakeNowJust/heredoc/README.mddeleted−52

This diff is too big to show here.

vendor/github.com/MakeNowJust/heredoc/heredoc.godeleted−105

This diff is too big to show here.

vendor/github.com/PuerkitoBio/goquery/.gitattributesdeleted−1

This diff is too big to show here.

vendor/github.com/PuerkitoBio/goquery/.gitignoredeleted−16

This diff is too big to show here.

vendor/github.com/PuerkitoBio/goquery/LICENSEdeleted−12

This diff is too big to show here.

vendor/github.com/PuerkitoBio/goquery/README.mddeleted−202

This diff is too big to show here.

vendor/github.com/PuerkitoBio/goquery/array.godeleted−124

This diff is too big to show here.

vendor/github.com/PuerkitoBio/goquery/doc.godeleted−123

This diff is too big to show here.

vendor/github.com/PuerkitoBio/goquery/expand.godeleted−70

This diff is too big to show here.

vendor/github.com/PuerkitoBio/goquery/filter.godeleted−163

This diff is too big to show here.

vendor/github.com/PuerkitoBio/goquery/iteration.godeleted−47

This diff is too big to show here.

vendor/github.com/PuerkitoBio/goquery/manipulation.godeleted−679

This diff is too big to show here.

vendor/github.com/PuerkitoBio/goquery/property.godeleted−275

This diff is too big to show here.

vendor/github.com/PuerkitoBio/goquery/query.godeleted−49

This diff is too big to show here.

vendor/github.com/PuerkitoBio/goquery/traversal.godeleted−704

This diff is too big to show here.

vendor/github.com/PuerkitoBio/goquery/type.godeleted−203

This diff is too big to show here.

vendor/github.com/PuerkitoBio/goquery/utilities.godeleted−178

This diff is too big to show here.

vendor/github.com/alecthomas/chroma/v2/.editorconfigdeleted−17

This diff is too big to show here.

vendor/github.com/alecthomas/chroma/v2/.gitignoredeleted−25

This diff is too big to show here.

vendor/github.com/alecthomas/chroma/v2/.golangci.ymldeleted−95

This diff is too big to show here.

vendor/github.com/alecthomas/chroma/v2/.goreleaser.ymldeleted−37

This diff is too big to show here.

vendor/github.com/alecthomas/chroma/v2/Bitfiledeleted−24

This diff is too big to show here.

vendor/github.com/alecthomas/chroma/v2/COPYINGdeleted−19

This diff is too big to show here.

vendor/github.com/alecthomas/chroma/v2/Makefiledeleted−23

This diff is too big to show here.

vendor/github.com/alecthomas/chroma/v2/README.mddeleted−297

This diff is too big to show here.

vendor/github.com/alecthomas/chroma/v2/coalesce.godeleted−35

This diff is too big to show here.

vendor/github.com/alecthomas/chroma/v2/colour.godeleted−192

This diff is too big to show here.

vendor/github.com/alecthomas/chroma/v2/delegate.godeleted−152

This diff is too big to show here.

vendor/github.com/alecthomas/chroma/v2/doc.godeleted−7

This diff is too big to show here.

vendor/github.com/alecthomas/chroma/v2/emitters.godeleted−218

This diff is too big to show here.

vendor/github.com/alecthomas/chroma/v2/formatter.godeleted−43

This diff is too big to show here.

vendor/github.com/alecthomas/chroma/v2/formatters/api.godeleted−57

This diff is too big to show here.

vendor/github.com/alecthomas/chroma/v2/formatters/html/html.godeleted−623

This diff is too big to show here.

vendor/github.com/alecthomas/chroma/v2/formatters/json.godeleted−39

This diff is too big to show here.

vendor/github.com/alecthomas/chroma/v2/formatters/svg/font_liberation_mono.godeleted−51

This diff is too big to show here.

vendor/github.com/alecthomas/chroma/v2/formatters/svg/svg.godeleted−222

This diff is too big to show here.

vendor/github.com/alecthomas/chroma/v2/formatters/tokens.godeleted−18

This diff is too big to show here.

vendor/github.com/alecthomas/chroma/v2/formatters/tty_indexed.godeleted−284

This diff is too big to show here.

vendor/github.com/alecthomas/chroma/v2/formatters/tty_truecolour.godeleted−76

This diff is too big to show here.

vendor/github.com/alecthomas/chroma/v2/iterator.godeleted−76

This diff is too big to show here.

vendor/github.com/alecthomas/chroma/v2/lexer.godeleted−162

This diff is too big to show here.

vendor/github.com/alecthomas/chroma/v2/lexers/README.mddeleted−46

This diff is too big to show here.

vendor/github.com/alecthomas/chroma/v2/lexers/caddyfile.godeleted−275

This diff is too big to show here.

vendor/github.com/alecthomas/chroma/v2/lexers/cl.godeleted−243

This diff is too big to show here.

vendor/github.com/alecthomas/chroma/v2/lexers/dns.godeleted−17

This diff is too big to show here.

vendor/github.com/alecthomas/chroma/v2/lexers/emacs.godeleted−533

This diff is too big to show here.

vendor/github.com/alecthomas/chroma/v2/lexers/embedded/abap.xmldeleted−154

This diff is too big to show here.

vendor/github.com/alecthomas/chroma/v2/lexers/embedded/abnf.xmldeleted−66

This diff is too big to show here.

vendor/github.com/alecthomas/chroma/v2/lexers/embedded/actionscript.xmldeleted−68

This diff is too big to show here.

vendor/github.com/alecthomas/chroma/v2/lexers/embedded/actionscript_3.xmldeleted−163

This diff is too big to show here.

vendor/github.com/alecthomas/chroma/v2/lexers/embedded/ada.xmldeleted−321

This diff is too big to show here.

vendor/github.com/alecthomas/chroma/v2/lexers/embedded/agda.xmldeleted−66

This diff is too big to show here.

vendor/github.com/alecthomas/chroma/v2/lexers/embedded/al.xmldeleted−75

This diff is too big to show here.

vendor/github.com/alecthomas/chroma/v2/lexers/embedded/alloy.xmldeleted−58

This diff is too big to show here.

vendor/github.com/alecthomas/chroma/v2/lexers/embedded/angular2.xmldeleted−108

This diff is too big to show here.

vendor/github.com/alecthomas/chroma/v2/lexers/embedded/antlr.xmldeleted−317

This diff is too big to show here.

vendor/github.com/alecthomas/chroma/v2/lexers/embedded/apacheconf.xmldeleted−74

This diff is too big to show here.

vendor/github.com/alecthomas/chroma/v2/lexers/embedded/apl.xmldeleted−59

This diff is too big to show here.

vendor/github.com/alecthomas/chroma/v2/lexers/embedded/applescript.xmldeleted−130

This diff is too big to show here.

vendor/github.com/alecthomas/chroma/v2/lexers/embedded/arangodb_aql.xmldeleted−174

This diff is too big to show here.

vendor/github.com/alecthomas/chroma/v2/lexers/embedded/arduino.xmldeleted−309

This diff is too big to show here.

vendor/github.com/alecthomas/chroma/v2/lexers/embedded/armasm.xmldeleted−126

This diff is too big to show here.

vendor/github.com/alecthomas/chroma/v2/lexers/embedded/atl.xmldeleted−165

This diff is too big to show here.

vendor/github.com/alecthomas/chroma/v2/lexers/embedded/autohotkey.xmldeleted−78

This diff is too big to show here.

vendor/github.com/alecthomas/chroma/v2/lexers/embedded/autoit.xmldeleted−70

This diff is too big to show here.

vendor/github.com/alecthomas/chroma/v2/lexers/embedded/awk.xmldeleted−95

This diff is too big to show here.

vendor/github.com/alecthomas/chroma/v2/lexers/embedded/ballerina.xmldeleted−97

This diff is too big to show here.

vendor/github.com/alecthomas/chroma/v2/lexers/embedded/bash.xmldeleted−220

This diff is too big to show here.

vendor/github.com/alecthomas/chroma/v2/lexers/embedded/bash_session.xmldeleted−25

This diff is too big to show here.

vendor/github.com/alecthomas/chroma/v2/lexers/embedded/batchfile.xmldeleted−660

This diff is too big to show here.

vendor/github.com/alecthomas/chroma/v2/lexers/embedded/beef.xmldeleted−120

This diff is too big to show here.

vendor/github.com/alecthomas/chroma/v2/lexers/embedded/bibtex.xmldeleted−152

This diff is too big to show here.

vendor/github.com/alecthomas/chroma/v2/lexers/embedded/bicep.xmldeleted−84

This diff is too big to show here.

vendor/github.com/alecthomas/chroma/v2/lexers/embedded/blitzbasic.xmldeleted−141

This diff is too big to show here.

vendor/github.com/alecthomas/chroma/v2/lexers/embedded/bnf.xmldeleted−28

This diff is too big to show here.

vendor/github.com/alecthomas/chroma/v2/lexers/embedded/bqn.xmldeleted−83

This diff is too big to show here.

vendor/github.com/alecthomas/chroma/v2/lexers/embedded/brainfuck.xmldeleted−51

This diff is too big to show here.

vendor/github.com/alecthomas/chroma/v2/lexers/embedded/c#.xmldeleted−121

This diff is too big to show here.

vendor/github.com/alecthomas/chroma/v2/lexers/embedded/c++.xmldeleted−331

This diff is too big to show here.

vendor/github.com/alecthomas/chroma/v2/lexers/embedded/c.xmldeleted−260

This diff is too big to show here.

vendor/github.com/alecthomas/chroma/v2/lexers/embedded/cap_n_proto.xmldeleted−122

This diff is too big to show here.

vendor/github.com/alecthomas/chroma/v2/lexers/embedded/cassandra_cql.xmldeleted−137

This diff is too big to show here.

vendor/github.com/alecthomas/chroma/v2/lexers/embedded/ceylon.xmldeleted−151

This diff is too big to show here.

vendor/github.com/alecthomas/chroma/v2/lexers/embedded/cfengine3.xmldeleted−197

This diff is too big to show here.

vendor/github.com/alecthomas/chroma/v2/lexers/embedded/cfstatement.xmldeleted−92

This diff is too big to show here.

vendor/github.com/alecthomas/chroma/v2/lexers/embedded/chaiscript.xmldeleted−134

This diff is too big to show here.

vendor/github.com/alecthomas/chroma/v2/lexers/embedded/chapel.xmldeleted−143

This diff is too big to show here.

vendor/github.com/alecthomas/chroma/v2/lexers/embedded/cheetah.xmldeleted−55

This diff is too big to show here.

vendor/github.com/alecthomas/chroma/v2/lexers/embedded/clojure.xmldeleted−71

This diff is too big to show here.

vendor/github.com/alecthomas/chroma/v2/lexers/embedded/cmake.xmldeleted−90

This diff is too big to show here.

vendor/github.com/alecthomas/chroma/v2/lexers/embedded/cobol.xmldeleted−90

This diff is too big to show here.

vendor/github.com/alecthomas/chroma/v2/lexers/embedded/coffeescript.xmldeleted−210

This diff is too big to show here.

vendor/github.com/alecthomas/chroma/v2/lexers/embedded/common_lisp.xmldeleted−184

This diff is too big to show here.

vendor/github.com/alecthomas/chroma/v2/lexers/embedded/coq.xmldeleted−136

This diff is too big to show here.

vendor/github.com/alecthomas/chroma/v2/lexers/embedded/crystal.xmldeleted−762

This diff is too big to show here.

vendor/github.com/alecthomas/chroma/v2/lexers/embedded/css.xmldeleted−323

This diff is too big to show here.

vendor/github.com/alecthomas/chroma/v2/lexers/embedded/csv.xmldeleted−53

This diff is too big to show here.

vendor/github.com/alecthomas/chroma/v2/lexers/embedded/cue.xmldeleted−85

This diff is too big to show here.

vendor/github.com/alecthomas/chroma/v2/lexers/embedded/cython.xmldeleted−372

This diff is too big to show here.

vendor/github.com/alecthomas/chroma/v2/lexers/embedded/d.xmldeleted−133

This diff is too big to show here.

vendor/github.com/alecthomas/chroma/v2/lexers/embedded/dart.xmldeleted−213

This diff is too big to show here.

vendor/github.com/alecthomas/chroma/v2/lexers/embedded/dax.xmldeleted−39

This diff is too big to show here.

vendor/github.com/alecthomas/chroma/v2/lexers/embedded/desktop_entry.xmldeleted−17

This diff is too big to show here.

vendor/github.com/alecthomas/chroma/v2/lexers/embedded/diff.xmldeleted−52

This diff is too big to show here.

vendor/github.com/alecthomas/chroma/v2/lexers/embedded/django_jinja.xmldeleted−153

This diff is too big to show here.

vendor/github.com/alecthomas/chroma/v2/lexers/embedded/dns.xmldeleted−44

This diff is too big to show here.

vendor/github.com/alecthomas/chroma/v2/lexers/embedded/docker.xmldeleted−57

This diff is too big to show here.

vendor/github.com/alecthomas/chroma/v2/lexers/embedded/dtd.xmldeleted−168

This diff is too big to show here.

vendor/github.com/alecthomas/chroma/v2/lexers/embedded/dylan.xmldeleted−176

This diff is too big to show here.

vendor/github.com/alecthomas/chroma/v2/lexers/embedded/ebnf.xmldeleted−90

This diff is too big to show here.

vendor/github.com/alecthomas/chroma/v2/lexers/embedded/elixir.xmldeleted−744

This diff is too big to show here.

vendor/github.com/alecthomas/chroma/v2/lexers/embedded/elm.xmldeleted−119

This diff is too big to show here.

vendor/github.com/alecthomas/chroma/v2/lexers/embedded/emacslisp.xmldeleted−132

This diff is too big to show here.

vendor/github.com/alecthomas/chroma/v2/lexers/embedded/erlang.xmldeleted−166

This diff is too big to show here.

vendor/github.com/alecthomas/chroma/v2/lexers/embedded/factor.xmldeleted−412

This diff is too big to show here.

vendor/github.com/alecthomas/chroma/v2/lexers/embedded/fennel.xmldeleted−68

This diff is too big to show here.

vendor/github.com/alecthomas/chroma/v2/lexers/embedded/fish.xmldeleted−159

This diff is too big to show here.

vendor/github.com/alecthomas/chroma/v2/lexers/embedded/forth.xmldeleted−78

This diff is too big to show here.

vendor/github.com/alecthomas/chroma/v2/lexers/embedded/fortran.xmldeleted−102

This diff is too big to show here.

vendor/github.com/alecthomas/chroma/v2/lexers/embedded/fortranfixed.xmldeleted−71

This diff is too big to show here.

vendor/github.com/alecthomas/chroma/v2/lexers/embedded/fsharp.xmldeleted−245

This diff is too big to show here.

vendor/github.com/alecthomas/chroma/v2/lexers/embedded/gas.xmldeleted−150

This diff is too big to show here.

vendor/github.com/alecthomas/chroma/v2/lexers/embedded/gdscript.xmldeleted−259

This diff is too big to show here.

vendor/github.com/alecthomas/chroma/v2/lexers/embedded/gdscript3.xmldeleted−270

This diff is too big to show here.

vendor/github.com/alecthomas/chroma/v2/lexers/embedded/gherkin.xmldeleted−263

This diff is too big to show here.

vendor/github.com/alecthomas/chroma/v2/lexers/embedded/gleam.xmldeleted−117

This diff is too big to show here.

vendor/github.com/alecthomas/chroma/v2/lexers/embedded/glsl.xmldeleted−65

This diff is too big to show here.

vendor/github.com/alecthomas/chroma/v2/lexers/embedded/gnuplot.xmldeleted−289

This diff is too big to show here.

vendor/github.com/alecthomas/chroma/v2/lexers/embedded/go_template.xmldeleted−114

This diff is too big to show here.

vendor/github.com/alecthomas/chroma/v2/lexers/embedded/graphql.xmldeleted−88

This diff is too big to show here.

vendor/github.com/alecthomas/chroma/v2/lexers/embedded/groff.xmldeleted−90

This diff is too big to show here.

vendor/github.com/alecthomas/chroma/v2/lexers/embedded/groovy.xmldeleted−135

This diff is too big to show here.

vendor/github.com/alecthomas/chroma/v2/lexers/embedded/handlebars.xmldeleted−147

This diff is too big to show here.

vendor/github.com/alecthomas/chroma/v2/lexers/embedded/hare.xmldeleted−98

This diff is too big to show here.

vendor/github.com/alecthomas/chroma/v2/lexers/embedded/haskell.xmldeleted−275

This diff is too big to show here.

vendor/github.com/alecthomas/chroma/v2/lexers/embedded/hcl.xmldeleted−143

This diff is too big to show here.

vendor/github.com/alecthomas/chroma/v2/lexers/embedded/hexdump.xmldeleted−189

This diff is too big to show here.

vendor/github.com/alecthomas/chroma/v2/lexers/embedded/hlb.xmldeleted−149

This diff is too big to show here.

vendor/github.com/alecthomas/chroma/v2/lexers/embedded/hlsl.xmldeleted−110

This diff is too big to show here.

vendor/github.com/alecthomas/chroma/v2/lexers/embedded/holyc.xmldeleted−252

This diff is too big to show here.

vendor/github.com/alecthomas/chroma/v2/lexers/embedded/html.xmldeleted−159

This diff is too big to show here.

vendor/github.com/alecthomas/chroma/v2/lexers/embedded/hy.xmldeleted−104

This diff is too big to show here.

vendor/github.com/alecthomas/chroma/v2/lexers/embedded/idris.xmldeleted−216

This diff is too big to show here.

vendor/github.com/alecthomas/chroma/v2/lexers/embedded/igor.xmldeleted−47

This diff is too big to show here.

vendor/github.com/alecthomas/chroma/v2/lexers/embedded/ini.xmldeleted−45

This diff is too big to show here.

vendor/github.com/alecthomas/chroma/v2/lexers/embedded/io.xmldeleted−71

This diff is too big to show here.

vendor/github.com/alecthomas/chroma/v2/lexers/embedded/iscdhcpd.xmldeleted−96

This diff is too big to show here.

vendor/github.com/alecthomas/chroma/v2/lexers/embedded/j.xmldeleted−157

This diff is too big to show here.

vendor/github.com/alecthomas/chroma/v2/lexers/embedded/java.xmldeleted−193

This diff is too big to show here.

vendor/github.com/alecthomas/chroma/v2/lexers/embedded/javascript.xmldeleted−160

This diff is too big to show here.

vendor/github.com/alecthomas/chroma/v2/lexers/embedded/json.xmldeleted−112

This diff is too big to show here.

vendor/github.com/alecthomas/chroma/v2/lexers/embedded/jsonata.xmldeleted−83

This diff is too big to show here.

vendor/github.com/alecthomas/chroma/v2/lexers/embedded/jsonnet.xmldeleted−138

This diff is too big to show here.

vendor/github.com/alecthomas/chroma/v2/lexers/embedded/julia.xmldeleted−400

This diff is too big to show here.

vendor/github.com/alecthomas/chroma/v2/lexers/embedded/jungle.xmldeleted−98

This diff is too big to show here.

vendor/github.com/alecthomas/chroma/v2/lexers/embedded/kotlin.xmldeleted−223

This diff is too big to show here.

vendor/github.com/alecthomas/chroma/v2/lexers/embedded/lighttpd_configuration_file.xmldeleted−42

This diff is too big to show here.

vendor/github.com/alecthomas/chroma/v2/lexers/embedded/llvm.xmldeleted−73

This diff is too big to show here.

vendor/github.com/alecthomas/chroma/v2/lexers/embedded/lua.xmldeleted−158

This diff is too big to show here.

vendor/github.com/alecthomas/chroma/v2/lexers/embedded/makefile.xmldeleted−131

This diff is too big to show here.

vendor/github.com/alecthomas/chroma/v2/lexers/embedded/mako.xmldeleted−120

This diff is too big to show here.

vendor/github.com/alecthomas/chroma/v2/lexers/embedded/mason.xmldeleted−89

This diff is too big to show here.

vendor/github.com/alecthomas/chroma/v2/lexers/embedded/materialize_sql_dialect.xmldeleted−155

This diff is too big to show here.

vendor/github.com/alecthomas/chroma/v2/lexers/embedded/mathematica.xmldeleted−60

This diff is too big to show here.

vendor/github.com/alecthomas/chroma/v2/lexers/embedded/matlab.xmldeleted−114

This diff is too big to show here.

vendor/github.com/alecthomas/chroma/v2/lexers/embedded/mcfunction.xmldeleted−138

This diff is too big to show here.

vendor/github.com/alecthomas/chroma/v2/lexers/embedded/meson.xmldeleted−85

This diff is too big to show here.

vendor/github.com/alecthomas/chroma/v2/lexers/embedded/metal.xmldeleted−270

This diff is too big to show here.

vendor/github.com/alecthomas/chroma/v2/lexers/embedded/minizinc.xmldeleted−82

This diff is too big to show here.

vendor/github.com/alecthomas/chroma/v2/lexers/embedded/mlir.xmldeleted−73

This diff is too big to show here.

vendor/github.com/alecthomas/chroma/v2/lexers/embedded/modula-2.xmldeleted−245

This diff is too big to show here.

vendor/github.com/alecthomas/chroma/v2/lexers/embedded/monkeyc.xmldeleted−153

This diff is too big to show here.

vendor/github.com/alecthomas/chroma/v2/lexers/embedded/morrowindscript.xmldeleted−90

This diff is too big to show here.

vendor/github.com/alecthomas/chroma/v2/lexers/embedded/myghty.xmldeleted−77

This diff is too big to show here.

vendor/github.com/alecthomas/chroma/v2/lexers/embedded/mysql.xmldeleted−121

This diff is too big to show here.

vendor/github.com/alecthomas/chroma/v2/lexers/embedded/nasm.xmldeleted−126

This diff is too big to show here.

vendor/github.com/alecthomas/chroma/v2/lexers/embedded/natural.xmldeleted−143

This diff is too big to show here.

vendor/github.com/alecthomas/chroma/v2/lexers/embedded/ndisasm.xmldeleted−123

This diff is too big to show here.

vendor/github.com/alecthomas/chroma/v2/lexers/embedded/newspeak.xmldeleted−121

This diff is too big to show here.

vendor/github.com/alecthomas/chroma/v2/lexers/embedded/nginx_configuration_file.xmldeleted−98

This diff is too big to show here.

vendor/github.com/alecthomas/chroma/v2/lexers/embedded/nim.xmldeleted−211

This diff is too big to show here.

vendor/github.com/alecthomas/chroma/v2/lexers/embedded/nix.xmldeleted−258

This diff is too big to show here.

vendor/github.com/alecthomas/chroma/v2/lexers/embedded/nsis.xmldeleted−59

This diff is too big to show here.

vendor/github.com/alecthomas/chroma/v2/lexers/embedded/objective-c.xmldeleted−510

This diff is too big to show here.

vendor/github.com/alecthomas/chroma/v2/lexers/embedded/objectpascal.xmldeleted−145

This diff is too big to show here.

vendor/github.com/alecthomas/chroma/v2/lexers/embedded/ocaml.xmldeleted−145

This diff is too big to show here.

vendor/github.com/alecthomas/chroma/v2/lexers/embedded/octave.xmldeleted−101

This diff is too big to show here.

vendor/github.com/alecthomas/chroma/v2/lexers/embedded/odin.xmldeleted−113

This diff is too big to show here.

vendor/github.com/alecthomas/chroma/v2/lexers/embedded/onesenterprise.xmldeleted−92

This diff is too big to show here.

vendor/github.com/alecthomas/chroma/v2/lexers/embedded/openedge_abl.xmldeleted−101

This diff is too big to show here.

vendor/github.com/alecthomas/chroma/v2/lexers/embedded/openscad.xmldeleted−96

This diff is too big to show here.

vendor/github.com/alecthomas/chroma/v2/lexers/embedded/org_mode.xmldeleted−329

This diff is too big to show here.

vendor/github.com/alecthomas/chroma/v2/lexers/embedded/pacmanconf.xmldeleted−37

This diff is too big to show here.

vendor/github.com/alecthomas/chroma/v2/lexers/embedded/perl.xmldeleted−400

This diff is too big to show here.

vendor/github.com/alecthomas/chroma/v2/lexers/embedded/php.xmldeleted−212

This diff is too big to show here.

vendor/github.com/alecthomas/chroma/v2/lexers/embedded/pig.xmldeleted−105

This diff is too big to show here.

vendor/github.com/alecthomas/chroma/v2/lexers/embedded/pkgconfig.xmldeleted−73

This diff is too big to show here.

vendor/github.com/alecthomas/chroma/v2/lexers/embedded/pl_pgsql.xmldeleted−119

This diff is too big to show here.

vendor/github.com/alecthomas/chroma/v2/lexers/embedded/plaintext.xmldeleted−21

This diff is too big to show here.

vendor/github.com/alecthomas/chroma/v2/lexers/embedded/plutus_core.xmldeleted−105

This diff is too big to show here.

vendor/github.com/alecthomas/chroma/v2/lexers/embedded/pony.xmldeleted−135

This diff is too big to show here.

vendor/github.com/alecthomas/chroma/v2/lexers/embedded/postgresql_sql_dialect.xmldeleted−155

This diff is too big to show here.

vendor/github.com/alecthomas/chroma/v2/lexers/embedded/postscript.xmldeleted−89

This diff is too big to show here.

vendor/github.com/alecthomas/chroma/v2/lexers/embedded/povray.xmldeleted−58

This diff is too big to show here.

vendor/github.com/alecthomas/chroma/v2/lexers/embedded/powerquery.xmldeleted−51

This diff is too big to show here.

vendor/github.com/alecthomas/chroma/v2/lexers/embedded/powershell.xmldeleted−230

This diff is too big to show here.

vendor/github.com/alecthomas/chroma/v2/lexers/embedded/prolog.xmldeleted−115

This diff is too big to show here.

vendor/github.com/alecthomas/chroma/v2/lexers/embedded/promela.xmldeleted−119

This diff is too big to show here.

vendor/github.com/alecthomas/chroma/v2/lexers/embedded/promql.xmldeleted−123

This diff is too big to show here.

vendor/github.com/alecthomas/chroma/v2/lexers/embedded/properties.xmldeleted−45

This diff is too big to show here.

vendor/github.com/alecthomas/chroma/v2/lexers/embedded/protocol_buffer.xmldeleted−118

This diff is too big to show here.

vendor/github.com/alecthomas/chroma/v2/lexers/embedded/prql.xmldeleted−161

This diff is too big to show here.

vendor/github.com/alecthomas/chroma/v2/lexers/embedded/psl.xmldeleted−213

This diff is too big to show here.

vendor/github.com/alecthomas/chroma/v2/lexers/embedded/puppet.xmldeleted−100

This diff is too big to show here.

vendor/github.com/alecthomas/chroma/v2/lexers/embedded/python.xmldeleted−593

This diff is too big to show here.

vendor/github.com/alecthomas/chroma/v2/lexers/embedded/python_2.xmldeleted−356

This diff is too big to show here.

vendor/github.com/alecthomas/chroma/v2/lexers/embedded/qbasic.xmldeleted−173

This diff is too big to show here.

vendor/github.com/alecthomas/chroma/v2/lexers/embedded/qml.xmldeleted−113

This diff is too big to show here.

vendor/github.com/alecthomas/chroma/v2/lexers/embedded/r.xmldeleted−128

This diff is too big to show here.

vendor/github.com/alecthomas/chroma/v2/lexers/embedded/racket.xmldeleted−260

This diff is too big to show here.

vendor/github.com/alecthomas/chroma/v2/lexers/embedded/ragel.xmldeleted−149

This diff is too big to show here.

vendor/github.com/alecthomas/chroma/v2/lexers/embedded/react.xmldeleted−236

This diff is too big to show here.

vendor/github.com/alecthomas/chroma/v2/lexers/embedded/reasonml.xmldeleted−147

This diff is too big to show here.

vendor/github.com/alecthomas/chroma/v2/lexers/embedded/reg.xmldeleted−68

This diff is too big to show here.

vendor/github.com/alecthomas/chroma/v2/lexers/embedded/rego.xmldeleted−94

This diff is too big to show here.

vendor/github.com/alecthomas/chroma/v2/lexers/embedded/rexx.xmldeleted−127

This diff is too big to show here.

vendor/github.com/alecthomas/chroma/v2/lexers/embedded/rpm_spec.xmldeleted−58

This diff is too big to show here.

vendor/github.com/alecthomas/chroma/v2/lexers/embedded/ruby.xmldeleted−724

This diff is too big to show here.

vendor/github.com/alecthomas/chroma/v2/lexers/embedded/rust.xmldeleted−375

This diff is too big to show here.

vendor/github.com/alecthomas/chroma/v2/lexers/embedded/sas.xmldeleted−191

This diff is too big to show here.

vendor/github.com/alecthomas/chroma/v2/lexers/embedded/sass.xmldeleted−362

This diff is too big to show here.

vendor/github.com/alecthomas/chroma/v2/lexers/embedded/scala.xmldeleted−274

This diff is too big to show here.

vendor/github.com/alecthomas/chroma/v2/lexers/embedded/scheme.xmldeleted−106

This diff is too big to show here.

vendor/github.com/alecthomas/chroma/v2/lexers/embedded/scilab.xmldeleted−98

This diff is too big to show here.

vendor/github.com/alecthomas/chroma/v2/lexers/embedded/scss.xmldeleted−373

This diff is too big to show here.

vendor/github.com/alecthomas/chroma/v2/lexers/embedded/sed.xmldeleted−28

This diff is too big to show here.

vendor/github.com/alecthomas/chroma/v2/lexers/embedded/sieve.xmldeleted−61

This diff is too big to show here.

vendor/github.com/alecthomas/chroma/v2/lexers/embedded/smali.xmldeleted−73

This diff is too big to show here.

vendor/github.com/alecthomas/chroma/v2/lexers/embedded/smalltalk.xmldeleted−294

This diff is too big to show here.

vendor/github.com/alecthomas/chroma/v2/lexers/embedded/smarty.xmldeleted−79

This diff is too big to show here.

vendor/github.com/alecthomas/chroma/v2/lexers/embedded/snbt.xmldeleted−58

This diff is too big to show here.

vendor/github.com/alecthomas/chroma/v2/lexers/embedded/snobol.xmldeleted−95

This diff is too big to show here.

vendor/github.com/alecthomas/chroma/v2/lexers/embedded/solidity.xmldeleted−279

This diff is too big to show here.

vendor/github.com/alecthomas/chroma/v2/lexers/embedded/sourcepawn.xmldeleted−59

This diff is too big to show here.

vendor/github.com/alecthomas/chroma/v2/lexers/embedded/sparql.xmldeleted−160

This diff is too big to show here.

vendor/github.com/alecthomas/chroma/v2/lexers/embedded/sql.xmldeleted−90

This diff is too big to show here.

vendor/github.com/alecthomas/chroma/v2/lexers/embedded/squidconf.xmldeleted−63

This diff is too big to show here.

vendor/github.com/alecthomas/chroma/v2/lexers/embedded/standard_ml.xmldeleted−548

This diff is too big to show here.

vendor/github.com/alecthomas/chroma/v2/lexers/embedded/stas.xmldeleted−85

This diff is too big to show here.

vendor/github.com/alecthomas/chroma/v2/lexers/embedded/stylus.xmldeleted−132

This diff is too big to show here.

vendor/github.com/alecthomas/chroma/v2/lexers/embedded/swift.xmldeleted−207

This diff is too big to show here.

vendor/github.com/alecthomas/chroma/v2/lexers/embedded/systemd.xmldeleted−63

This diff is too big to show here.

vendor/github.com/alecthomas/chroma/v2/lexers/embedded/systemverilog.xmldeleted−181

This diff is too big to show here.

vendor/github.com/alecthomas/chroma/v2/lexers/embedded/tablegen.xmldeleted−69

This diff is too big to show here.

vendor/github.com/alecthomas/chroma/v2/lexers/embedded/tal.xmldeleted−43

This diff is too big to show here.

vendor/github.com/alecthomas/chroma/v2/lexers/embedded/tasm.xmldeleted−135

This diff is too big to show here.

vendor/github.com/alecthomas/chroma/v2/lexers/embedded/tcl.xmldeleted−272

This diff is too big to show here.

vendor/github.com/alecthomas/chroma/v2/lexers/embedded/tcsh.xmldeleted−121

This diff is too big to show here.

vendor/github.com/alecthomas/chroma/v2/lexers/embedded/termcap.xmldeleted−75

This diff is too big to show here.

vendor/github.com/alecthomas/chroma/v2/lexers/embedded/terminfo.xmldeleted−84

This diff is too big to show here.

vendor/github.com/alecthomas/chroma/v2/lexers/embedded/terraform.xmldeleted−140

This diff is too big to show here.

vendor/github.com/alecthomas/chroma/v2/lexers/embedded/tex.xmldeleted−113

This diff is too big to show here.

vendor/github.com/alecthomas/chroma/v2/lexers/embedded/thrift.xmldeleted−154

This diff is too big to show here.

vendor/github.com/alecthomas/chroma/v2/lexers/embedded/toml.xmldeleted−44

This diff is too big to show here.

vendor/github.com/alecthomas/chroma/v2/lexers/embedded/tradingview.xmldeleted−81

This diff is too big to show here.

vendor/github.com/alecthomas/chroma/v2/lexers/embedded/transact-sql.xmldeleted−137

This diff is too big to show here.

vendor/github.com/alecthomas/chroma/v2/lexers/embedded/turing.xmldeleted−82

This diff is too big to show here.

vendor/github.com/alecthomas/chroma/v2/lexers/embedded/turtle.xmldeleted−170

This diff is too big to show here.

vendor/github.com/alecthomas/chroma/v2/lexers/embedded/twig.xmldeleted−155

This diff is too big to show here.

vendor/github.com/alecthomas/chroma/v2/lexers/embedded/typescript.xmldeleted−295

This diff is too big to show here.

vendor/github.com/alecthomas/chroma/v2/lexers/embedded/typoscript.xmldeleted−178

This diff is too big to show here.

vendor/github.com/alecthomas/chroma/v2/lexers/embedded/typoscriptcssdata.xmldeleted−52

This diff is too big to show here.

vendor/github.com/alecthomas/chroma/v2/lexers/embedded/typoscripthtmldata.xmldeleted−52

This diff is too big to show here.

vendor/github.com/alecthomas/chroma/v2/lexers/embedded/typst.xmldeleted−108

This diff is too big to show here.

vendor/github.com/alecthomas/chroma/v2/lexers/embedded/ucode.xmldeleted−147

This diff is too big to show here.

vendor/github.com/alecthomas/chroma/v2/lexers/embedded/v.xmldeleted−355

This diff is too big to show here.

vendor/github.com/alecthomas/chroma/v2/lexers/embedded/v_shell.xmldeleted−365

This diff is too big to show here.

vendor/github.com/alecthomas/chroma/v2/lexers/embedded/vala.xmldeleted−72

This diff is too big to show here.

vendor/github.com/alecthomas/chroma/v2/lexers/embedded/vb_net.xmldeleted−162

This diff is too big to show here.

vendor/github.com/alecthomas/chroma/v2/lexers/embedded/verilog.xmldeleted−158

This diff is too big to show here.

vendor/github.com/alecthomas/chroma/v2/lexers/embedded/vhdl.xmldeleted−171

This diff is too big to show here.

vendor/github.com/alecthomas/chroma/v2/lexers/embedded/vhs.xmldeleted−48

This diff is too big to show here.

vendor/github.com/alecthomas/chroma/v2/lexers/embedded/viml.xmldeleted−85

This diff is too big to show here.

vendor/github.com/alecthomas/chroma/v2/lexers/embedded/vue.xmldeleted−307

This diff is too big to show here.

vendor/github.com/alecthomas/chroma/v2/lexers/embedded/wdte.xmldeleted−43

This diff is too big to show here.

vendor/github.com/alecthomas/chroma/v2/lexers/embedded/webgpu_shading_language.xmldeleted−142

This diff is too big to show here.

vendor/github.com/alecthomas/chroma/v2/lexers/embedded/webvtt.xmldeleted−283

This diff is too big to show here.

vendor/github.com/alecthomas/chroma/v2/lexers/embedded/whiley.xmldeleted−57

This diff is too big to show here.

vendor/github.com/alecthomas/chroma/v2/lexers/embedded/xml.xmldeleted−95

This diff is too big to show here.

vendor/github.com/alecthomas/chroma/v2/lexers/embedded/xorg.xmldeleted−35

This diff is too big to show here.

vendor/github.com/alecthomas/chroma/v2/lexers/embedded/yaml.xmldeleted−122

This diff is too big to show here.

vendor/github.com/alecthomas/chroma/v2/lexers/embedded/yang.xmldeleted−99

This diff is too big to show here.

vendor/github.com/alecthomas/chroma/v2/lexers/embedded/z80_assembly.xmldeleted−74

This diff is too big to show here.

vendor/github.com/alecthomas/chroma/v2/lexers/embedded/zed.xmldeleted−51

This diff is too big to show here.

vendor/github.com/alecthomas/chroma/v2/lexers/embedded/zig.xmldeleted−112

This diff is too big to show here.

vendor/github.com/alecthomas/chroma/v2/lexers/genshi.godeleted−118

This diff is too big to show here.

vendor/github.com/alecthomas/chroma/v2/lexers/go.godeleted−81

This diff is too big to show here.

vendor/github.com/alecthomas/chroma/v2/lexers/haxe.godeleted−647

This diff is too big to show here.

vendor/github.com/alecthomas/chroma/v2/lexers/html.godeleted−8

This diff is too big to show here.

vendor/github.com/alecthomas/chroma/v2/lexers/http.godeleted−131

This diff is too big to show here.

vendor/github.com/alecthomas/chroma/v2/lexers/lexers.godeleted−79

This diff is too big to show here.

vendor/github.com/alecthomas/chroma/v2/lexers/markdown.godeleted−46

This diff is too big to show here.

vendor/github.com/alecthomas/chroma/v2/lexers/mysql.godeleted−33

This diff is too big to show here.

vendor/github.com/alecthomas/chroma/v2/lexers/php.godeleted−37

This diff is too big to show here.

vendor/github.com/alecthomas/chroma/v2/lexers/raku.godeleted−1721

This diff is too big to show here.

vendor/github.com/alecthomas/chroma/v2/lexers/rst.godeleted−89

This diff is too big to show here.

vendor/github.com/alecthomas/chroma/v2/lexers/svelte.godeleted−70

This diff is too big to show here.

vendor/github.com/alecthomas/chroma/v2/lexers/typoscript.godeleted−85

This diff is too big to show here.

vendor/github.com/alecthomas/chroma/v2/lexers/zed.godeleted−24

This diff is too big to show here.

vendor/github.com/alecthomas/chroma/v2/mutators.godeleted−201

This diff is too big to show here.

vendor/github.com/alecthomas/chroma/v2/pygments-lexers.txtdeleted−322

This diff is too big to show here.

vendor/github.com/alecthomas/chroma/v2/quick/quick.godeleted−44

This diff is too big to show here.

vendor/github.com/alecthomas/chroma/v2/regexp.godeleted−489

This diff is too big to show here.

vendor/github.com/alecthomas/chroma/v2/registry.godeleted−210

This diff is too big to show here.

vendor/github.com/alecthomas/chroma/v2/remap.godeleted−94

This diff is too big to show here.

vendor/github.com/alecthomas/chroma/v2/renovate.json5deleted−18

This diff is too big to show here.

vendor/github.com/alecthomas/chroma/v2/serialise.godeleted−479

This diff is too big to show here.

vendor/github.com/alecthomas/chroma/v2/style.godeleted−481

This diff is too big to show here.

vendor/github.com/alecthomas/chroma/v2/styles/abap.xmldeleted−11

This diff is too big to show here.

vendor/github.com/alecthomas/chroma/v2/styles/algol.xmldeleted−18

This diff is too big to show here.

vendor/github.com/alecthomas/chroma/v2/styles/algol_nu.xmldeleted−18

This diff is too big to show here.

vendor/github.com/alecthomas/chroma/v2/styles/api.godeleted−65

This diff is too big to show here.

vendor/github.com/alecthomas/chroma/v2/styles/arduino.xmldeleted−18

This diff is too big to show here.

vendor/github.com/alecthomas/chroma/v2/styles/autumn.xmldeleted−36

This diff is too big to show here.

vendor/github.com/alecthomas/chroma/v2/styles/average.xmldeleted−74

This diff is too big to show here.

vendor/github.com/alecthomas/chroma/v2/styles/base16-snazzy.xmldeleted−74

This diff is too big to show here.

vendor/github.com/alecthomas/chroma/v2/styles/borland.xmldeleted−26

This diff is too big to show here.

vendor/github.com/alecthomas/chroma/v2/styles/bw.xmldeleted−23

This diff is too big to show here.

vendor/github.com/alecthomas/chroma/v2/styles/catppuccin-frappe.xmldeleted−83

This diff is too big to show here.

vendor/github.com/alecthomas/chroma/v2/styles/catppuccin-latte.xmldeleted−83

This diff is too big to show here.

vendor/github.com/alecthomas/chroma/v2/styles/catppuccin-macchiato.xmldeleted−83

This diff is too big to show here.

vendor/github.com/alecthomas/chroma/v2/styles/catppuccin-mocha.xmldeleted−83

This diff is too big to show here.

vendor/github.com/alecthomas/chroma/v2/styles/colorful.xmldeleted−52

This diff is too big to show here.

vendor/github.com/alecthomas/chroma/v2/styles/compat.godeleted−66

This diff is too big to show here.

vendor/github.com/alecthomas/chroma/v2/styles/doom-one.xmldeleted−51

This diff is too big to show here.

vendor/github.com/alecthomas/chroma/v2/styles/doom-one2.xmldeleted−64

This diff is too big to show here.

vendor/github.com/alecthomas/chroma/v2/styles/dracula.xmldeleted−74

This diff is too big to show here.

vendor/github.com/alecthomas/chroma/v2/styles/emacs.xmldeleted−44

This diff is too big to show here.

vendor/github.com/alecthomas/chroma/v2/styles/evergarden.xmldeleted−33

This diff is too big to show here.

vendor/github.com/alecthomas/chroma/v2/styles/friendly.xmldeleted−44

This diff is too big to show here.

vendor/github.com/alecthomas/chroma/v2/styles/fruity.xmldeleted−19

This diff is too big to show here.

vendor/github.com/alecthomas/chroma/v2/styles/github-dark.xmldeleted−45

This diff is too big to show here.

vendor/github.com/alecthomas/chroma/v2/styles/github.xmldeleted−39

This diff is too big to show here.

vendor/github.com/alecthomas/chroma/v2/styles/gruvbox-light.xmldeleted−33

This diff is too big to show here.

vendor/github.com/alecthomas/chroma/v2/styles/gruvbox.xmldeleted−33

This diff is too big to show here.

vendor/github.com/alecthomas/chroma/v2/styles/hr_high_contrast.xmldeleted−12

This diff is too big to show here.

vendor/github.com/alecthomas/chroma/v2/styles/hrdark.xmldeleted−10

This diff is too big to show here.

vendor/github.com/alecthomas/chroma/v2/styles/igor.xmldeleted−9

This diff is too big to show here.

vendor/github.com/alecthomas/chroma/v2/styles/lovelace.xmldeleted−53

This diff is too big to show here.

vendor/github.com/alecthomas/chroma/v2/styles/manni.xmldeleted−44

This diff is too big to show here.

vendor/github.com/alecthomas/chroma/v2/styles/modus-operandi.xmldeleted−13

This diff is too big to show here.

vendor/github.com/alecthomas/chroma/v2/styles/modus-vivendi.xmldeleted−13

This diff is too big to show here.

vendor/github.com/alecthomas/chroma/v2/styles/monokai.xmldeleted−29

This diff is too big to show here.

vendor/github.com/alecthomas/chroma/v2/styles/monokailight.xmldeleted−26

This diff is too big to show here.

vendor/github.com/alecthomas/chroma/v2/styles/murphy.xmldeleted−52

This diff is too big to show here.

vendor/github.com/alecthomas/chroma/v2/styles/native.xmldeleted−35

This diff is too big to show here.

vendor/github.com/alecthomas/chroma/v2/styles/nord.xmldeleted−46

This diff is too big to show here.

vendor/github.com/alecthomas/chroma/v2/styles/nordic.xmldeleted−46

This diff is too big to show here.

vendor/github.com/alecthomas/chroma/v2/styles/onedark.xmldeleted−25

This diff is too big to show here.

vendor/github.com/alecthomas/chroma/v2/styles/onesenterprise.xmldeleted−10

This diff is too big to show here.

vendor/github.com/alecthomas/chroma/v2/styles/paraiso-dark.xmldeleted−37

This diff is too big to show here.

vendor/github.com/alecthomas/chroma/v2/styles/paraiso-light.xmldeleted−37

This diff is too big to show here.

vendor/github.com/alecthomas/chroma/v2/styles/pastie.xmldeleted−45

This diff is too big to show here.

vendor/github.com/alecthomas/chroma/v2/styles/perldoc.xmldeleted−37

This diff is too big to show here.

vendor/github.com/alecthomas/chroma/v2/styles/pygments.xmldeleted−42

This diff is too big to show here.

vendor/github.com/alecthomas/chroma/v2/styles/rainbow_dash.xmldeleted−40

This diff is too big to show here.

vendor/github.com/alecthomas/chroma/v2/styles/rose-pine-dawn.xmldeleted−29

This diff is too big to show here.

vendor/github.com/alecthomas/chroma/v2/styles/rose-pine-moon.xmldeleted−29

This diff is too big to show here.

vendor/github.com/alecthomas/chroma/v2/styles/rose-pine.xmldeleted−29

This diff is too big to show here.

vendor/github.com/alecthomas/chroma/v2/styles/rrt.xmldeleted−13

This diff is too big to show here.

vendor/github.com/alecthomas/chroma/v2/styles/solarized-dark.xmldeleted−39

This diff is too big to show here.

vendor/github.com/alecthomas/chroma/v2/styles/solarized-dark256.xmldeleted−41

This diff is too big to show here.

vendor/github.com/alecthomas/chroma/v2/styles/solarized-light.xmldeleted−17

This diff is too big to show here.

vendor/github.com/alecthomas/chroma/v2/styles/swapoff.xmldeleted−18

This diff is too big to show here.

vendor/github.com/alecthomas/chroma/v2/styles/tango.xmldeleted−72

This diff is too big to show here.

vendor/github.com/alecthomas/chroma/v2/styles/tokyonight-day.xmldeleted−83

This diff is too big to show here.

vendor/github.com/alecthomas/chroma/v2/styles/tokyonight-moon.xmldeleted−83

This diff is too big to show here.

vendor/github.com/alecthomas/chroma/v2/styles/tokyonight-night.xmldeleted−83

This diff is too big to show here.

vendor/github.com/alecthomas/chroma/v2/styles/tokyonight-storm.xmldeleted−83

This diff is too big to show here.

vendor/github.com/alecthomas/chroma/v2/styles/trac.xmldeleted−35

This diff is too big to show here.

vendor/github.com/alecthomas/chroma/v2/styles/vim.xmldeleted−29

This diff is too big to show here.

vendor/github.com/alecthomas/chroma/v2/styles/vs.xmldeleted−16

This diff is too big to show here.

vendor/github.com/alecthomas/chroma/v2/styles/vulcan.xmldeleted−74

This diff is too big to show here.

vendor/github.com/alecthomas/chroma/v2/styles/witchhazel.xmldeleted−31

This diff is too big to show here.

vendor/github.com/alecthomas/chroma/v2/styles/xcode-dark.xmldeleted−31

This diff is too big to show here.

vendor/github.com/alecthomas/chroma/v2/styles/xcode.xmldeleted−22

This diff is too big to show here.

vendor/github.com/alecthomas/chroma/v2/table.pydeleted−31

This diff is too big to show here.

vendor/github.com/alecthomas/chroma/v2/tokentype_enumer.godeleted−583

This diff is too big to show here.

vendor/github.com/alecthomas/chroma/v2/types.godeleted−343

This diff is too big to show here.

vendor/github.com/andybalholm/cascadia/.travis.ymldeleted−14

This diff is too big to show here.

vendor/github.com/andybalholm/cascadia/LICENSEdeleted−24

This diff is too big to show here.

vendor/github.com/andybalholm/cascadia/README.mddeleted−144

This diff is too big to show here.

vendor/github.com/andybalholm/cascadia/parser.godeleted−889

This diff is too big to show here.

vendor/github.com/andybalholm/cascadia/pseudo_classes.godeleted−458

This diff is too big to show here.

vendor/github.com/andybalholm/cascadia/selector.godeleted−586

This diff is too big to show here.

vendor/github.com/andybalholm/cascadia/serialize.godeleted−176

This diff is too big to show here.

vendor/github.com/andybalholm/cascadia/specificity.godeleted−26

This diff is too big to show here.

vendor/github.com/anthropics/anthropic-sdk-go/.gitignoredeleted−4

This diff is too big to show here.

vendor/github.com/anthropics/anthropic-sdk-go/.release-please-manifest.jsondeleted−3

This diff is too big to show here.

vendor/github.com/anthropics/anthropic-sdk-go/.stats.ymldeleted−4

This diff is too big to show here.

vendor/github.com/anthropics/anthropic-sdk-go/Brewfiledeleted−1

This diff is too big to show here.

vendor/github.com/anthropics/anthropic-sdk-go/CHANGELOG.mddeleted−240

This diff is too big to show here.

vendor/github.com/anthropics/anthropic-sdk-go/CONTRIBUTING.mddeleted−66

This diff is too big to show here.

vendor/github.com/anthropics/anthropic-sdk-go/LICENSEdeleted−8

This diff is too big to show here.

vendor/github.com/anthropics/anthropic-sdk-go/README.mddeleted−876

This diff is too big to show here.

vendor/github.com/anthropics/anthropic-sdk-go/SECURITY.mddeleted−27

This diff is too big to show here.

vendor/github.com/anthropics/anthropic-sdk-go/aliases.godeleted−50

This diff is too big to show here.

vendor/github.com/anthropics/anthropic-sdk-go/api.mddeleted−329

This diff is too big to show here.

vendor/github.com/anthropics/anthropic-sdk-go/bedrock/bedrock.godeleted−245

This diff is too big to show here.

vendor/github.com/anthropics/anthropic-sdk-go/beta.godeleted−364

This diff is too big to show here.

vendor/github.com/anthropics/anthropic-sdk-go/betafile.godeleted−270

This diff is too big to show here.

vendor/github.com/anthropics/anthropic-sdk-go/betamessage.godeleted−5823

This diff is too big to show here.

vendor/github.com/anthropics/anthropic-sdk-go/betamessagebatch.godeleted−879

This diff is too big to show here.

vendor/github.com/anthropics/anthropic-sdk-go/betamodel.godeleted−149

This diff is too big to show here.

vendor/github.com/anthropics/anthropic-sdk-go/client.godeleted−126

This diff is too big to show here.

vendor/github.com/anthropics/anthropic-sdk-go/completion.godeleted−194

This diff is too big to show here.

vendor/github.com/anthropics/anthropic-sdk-go/field.godeleted−45

This diff is too big to show here.

vendor/github.com/anthropics/anthropic-sdk-go/internal/apierror/apierror.godeleted−50

This diff is too big to show here.

vendor/github.com/anthropics/anthropic-sdk-go/internal/apiform/encoder.godeleted−465

This diff is too big to show here.

vendor/github.com/anthropics/anthropic-sdk-go/internal/apiform/form.godeleted−5

This diff is too big to show here.

vendor/github.com/anthropics/anthropic-sdk-go/internal/apiform/richparam.godeleted−20

This diff is too big to show here.

vendor/github.com/anthropics/anthropic-sdk-go/internal/apiform/tag.godeleted−51

This diff is too big to show here.

vendor/github.com/anthropics/anthropic-sdk-go/internal/apijson/decoder.godeleted−691

This diff is too big to show here.

vendor/github.com/anthropics/anthropic-sdk-go/internal/apijson/encoder.godeleted−392

This diff is too big to show here.

vendor/github.com/anthropics/anthropic-sdk-go/internal/apijson/enum.godeleted−145

This diff is too big to show here.

vendor/github.com/anthropics/anthropic-sdk-go/internal/apijson/field.godeleted−23

This diff is too big to show here.

vendor/github.com/anthropics/anthropic-sdk-go/internal/apijson/port.godeleted−120

This diff is too big to show here.

vendor/github.com/anthropics/anthropic-sdk-go/internal/apijson/registry.godeleted−51

This diff is too big to show here.

vendor/github.com/anthropics/anthropic-sdk-go/internal/apijson/subfield.godeleted−67

This diff is too big to show here.

vendor/github.com/anthropics/anthropic-sdk-go/internal/apijson/tag.godeleted−47

This diff is too big to show here.

vendor/github.com/anthropics/anthropic-sdk-go/internal/apijson/union.godeleted−202

This diff is too big to show here.

vendor/github.com/anthropics/anthropic-sdk-go/internal/apiquery/encoder.godeleted−415

This diff is too big to show here.

vendor/github.com/anthropics/anthropic-sdk-go/internal/apiquery/query.godeleted−55

This diff is too big to show here.

vendor/github.com/anthropics/anthropic-sdk-go/internal/apiquery/richparam.godeleted−19

This diff is too big to show here.

vendor/github.com/anthropics/anthropic-sdk-go/internal/apiquery/tag.godeleted−44

This diff is too big to show here.

vendor/github.com/anthropics/anthropic-sdk-go/internal/encoding/json/decode.godeleted−1324

This diff is too big to show here.

vendor/github.com/anthropics/anthropic-sdk-go/internal/encoding/json/encode.godeleted−1398

This diff is too big to show here.

vendor/github.com/anthropics/anthropic-sdk-go/internal/encoding/json/fold.godeleted−48

This diff is too big to show here.

vendor/github.com/anthropics/anthropic-sdk-go/internal/encoding/json/indent.godeleted−182

This diff is too big to show here.

vendor/github.com/anthropics/anthropic-sdk-go/internal/encoding/json/scanner.godeleted−610

This diff is too big to show here.

vendor/github.com/anthropics/anthropic-sdk-go/internal/encoding/json/sentinel/null.godeleted−57

This diff is too big to show here.

vendor/github.com/anthropics/anthropic-sdk-go/internal/encoding/json/shims/shims.godeleted−111

This diff is too big to show here.

vendor/github.com/anthropics/anthropic-sdk-go/internal/encoding/json/stream.godeleted−512

This diff is too big to show here.

vendor/github.com/anthropics/anthropic-sdk-go/internal/encoding/json/tables.godeleted−218

This diff is too big to show here.

vendor/github.com/anthropics/anthropic-sdk-go/internal/encoding/json/tags.godeleted−38

This diff is too big to show here.

vendor/github.com/anthropics/anthropic-sdk-go/internal/encoding/json/time.godeleted−61

This diff is too big to show here.

vendor/github.com/anthropics/anthropic-sdk-go/internal/paramutil/field.godeleted−30

This diff is too big to show here.

vendor/github.com/anthropics/anthropic-sdk-go/internal/paramutil/sentinel.godeleted−31

This diff is too big to show here.

vendor/github.com/anthropics/anthropic-sdk-go/internal/paramutil/union.godeleted−48

This diff is too big to show here.

vendor/github.com/anthropics/anthropic-sdk-go/internal/requestconfig/requestconfig.godeleted−629

This diff is too big to show here.

vendor/github.com/anthropics/anthropic-sdk-go/internal/version.godeleted−5

This diff is too big to show here.

vendor/github.com/anthropics/anthropic-sdk-go/message.godeleted−4562

This diff is too big to show here.

vendor/github.com/anthropics/anthropic-sdk-go/messagebatch.godeleted−825

This diff is too big to show here.

vendor/github.com/anthropics/anthropic-sdk-go/model.godeleted−149

This diff is too big to show here.

vendor/github.com/anthropics/anthropic-sdk-go/option/requestoption.godeleted−284

This diff is too big to show here.

vendor/github.com/anthropics/anthropic-sdk-go/packages/jsonl/jsonl.godeleted−57

This diff is too big to show here.

vendor/github.com/anthropics/anthropic-sdk-go/packages/pagination/pagination.godeleted−134

This diff is too big to show here.

vendor/github.com/anthropics/anthropic-sdk-go/packages/param/encoder.godeleted−101

This diff is too big to show here.

vendor/github.com/anthropics/anthropic-sdk-go/packages/param/option.godeleted−121

This diff is too big to show here.

vendor/github.com/anthropics/anthropic-sdk-go/packages/param/param.godeleted−158

This diff is too big to show here.

vendor/github.com/anthropics/anthropic-sdk-go/packages/respjson/respjson.godeleted−88

This diff is too big to show here.

vendor/github.com/anthropics/anthropic-sdk-go/packages/ssestream/ssestream.godeleted−198

This diff is too big to show here.

vendor/github.com/anthropics/anthropic-sdk-go/release-please-config.jsondeleted−67

This diff is too big to show here.

vendor/github.com/anthropics/anthropic-sdk-go/shared/constant/constants.godeleted−304

This diff is too big to show here.

vendor/github.com/anthropics/anthropic-sdk-go/shared/shared.godeleted−334

This diff is too big to show here.

vendor/github.com/atotto/clipboard/.travis.ymldeleted−22

This diff is too big to show here.

vendor/github.com/atotto/clipboard/LICENSEdeleted−27

This diff is too big to show here.

vendor/github.com/atotto/clipboard/README.mddeleted−48

This diff is too big to show here.

vendor/github.com/atotto/clipboard/clipboard.godeleted−20

This diff is too big to show here.

vendor/github.com/atotto/clipboard/clipboard_darwin.godeleted−52

This diff is too big to show here.

vendor/github.com/atotto/clipboard/clipboard_plan9.godeleted−42

This diff is too big to show here.

vendor/github.com/atotto/clipboard/clipboard_unix.godeleted−149

This diff is too big to show here.

vendor/github.com/atotto/clipboard/clipboard_windows.godeleted−157

This diff is too big to show here.

vendor/github.com/aws/aws-sdk-go-v2/LICENSE.txtdeleted−202

This diff is too big to show here.

vendor/github.com/aws/aws-sdk-go-v2/NOTICE.txtdeleted−3

This diff is too big to show here.

vendor/github.com/aws/aws-sdk-go-v2/aws/accountid_endpoint_mode.godeleted−18

This diff is too big to show here.

vendor/github.com/aws/aws-sdk-go-v2/aws/config.godeleted−211

This diff is too big to show here.

vendor/github.com/aws/aws-sdk-go-v2/aws/context.godeleted−22

This diff is too big to show here.

vendor/github.com/aws/aws-sdk-go-v2/aws/credential_cache.godeleted−224

This diff is too big to show here.

vendor/github.com/aws/aws-sdk-go-v2/aws/credentials.godeleted−173

This diff is too big to show here.

vendor/github.com/aws/aws-sdk-go-v2/aws/defaults/auto.godeleted−38

This diff is too big to show here.

vendor/github.com/aws/aws-sdk-go-v2/aws/defaults/configuration.godeleted−43

This diff is too big to show here.

vendor/github.com/aws/aws-sdk-go-v2/aws/defaults/defaults.godeleted−50

This diff is too big to show here.

vendor/github.com/aws/aws-sdk-go-v2/aws/defaults/doc.godeleted−2

This diff is too big to show here.

vendor/github.com/aws/aws-sdk-go-v2/aws/defaultsmode.godeleted−95

This diff is too big to show here.

vendor/github.com/aws/aws-sdk-go-v2/aws/doc.godeleted−62

This diff is too big to show here.

vendor/github.com/aws/aws-sdk-go-v2/aws/endpoints.godeleted−247

This diff is too big to show here.

vendor/github.com/aws/aws-sdk-go-v2/aws/errors.godeleted−9

This diff is too big to show here.

vendor/github.com/aws/aws-sdk-go-v2/aws/from_ptr.godeleted−365

This diff is too big to show here.

vendor/github.com/aws/aws-sdk-go-v2/aws/go_module_metadata.godeleted−6

This diff is too big to show here.

vendor/github.com/aws/aws-sdk-go-v2/aws/logging.godeleted−119

This diff is too big to show here.

vendor/github.com/aws/aws-sdk-go-v2/aws/logging_generate.godeleted−95

This diff is too big to show here.

vendor/github.com/aws/aws-sdk-go-v2/aws/middleware/metadata.godeleted−213

This diff is too big to show here.

vendor/github.com/aws/aws-sdk-go-v2/aws/middleware/middleware.godeleted−168

This diff is too big to show here.

vendor/github.com/aws/aws-sdk-go-v2/aws/middleware/osname.godeleted−24

This diff is too big to show here.

vendor/github.com/aws/aws-sdk-go-v2/aws/middleware/osname_go115.godeleted−24

This diff is too big to show here.

vendor/github.com/aws/aws-sdk-go-v2/aws/middleware/private/metrics/metrics.godeleted−320

This diff is too big to show here.

vendor/github.com/aws/aws-sdk-go-v2/aws/middleware/recursion_detection.godeleted−94

This diff is too big to show here.

vendor/github.com/aws/aws-sdk-go-v2/aws/middleware/request_id.godeleted−27

This diff is too big to show here.

vendor/github.com/aws/aws-sdk-go-v2/aws/middleware/request_id_retriever.godeleted−53

This diff is too big to show here.

vendor/github.com/aws/aws-sdk-go-v2/aws/middleware/user_agent.godeleted−305

This diff is too big to show here.

vendor/github.com/aws/aws-sdk-go-v2/aws/protocol/eventstream/CHANGELOG.mddeleted−114

This diff is too big to show here.

vendor/github.com/aws/aws-sdk-go-v2/aws/protocol/eventstream/LICENSE.txtdeleted−202

This diff is too big to show here.

vendor/github.com/aws/aws-sdk-go-v2/aws/protocol/eventstream/debug.godeleted−144

This diff is too big to show here.

vendor/github.com/aws/aws-sdk-go-v2/aws/protocol/eventstream/decode.godeleted−218

This diff is too big to show here.

vendor/github.com/aws/aws-sdk-go-v2/aws/protocol/eventstream/encode.godeleted−167

This diff is too big to show here.

vendor/github.com/aws/aws-sdk-go-v2/aws/protocol/eventstream/error.godeleted−23

This diff is too big to show here.

vendor/github.com/aws/aws-sdk-go-v2/aws/protocol/eventstream/eventstreamapi/headers.godeleted−24

This diff is too big to show here.

vendor/github.com/aws/aws-sdk-go-v2/aws/protocol/eventstream/eventstreamapi/middleware.godeleted−71

This diff is too big to show here.

vendor/github.com/aws/aws-sdk-go-v2/aws/protocol/eventstream/eventstreamapi/transport.godeleted−13

This diff is too big to show here.

vendor/github.com/aws/aws-sdk-go-v2/aws/protocol/eventstream/eventstreamapi/transport_go117.godeleted−12

This diff is too big to show here.

vendor/github.com/aws/aws-sdk-go-v2/aws/protocol/eventstream/go_module_metadata.godeleted−6

This diff is too big to show here.

vendor/github.com/aws/aws-sdk-go-v2/aws/protocol/eventstream/header.godeleted−175

This diff is too big to show here.

vendor/github.com/aws/aws-sdk-go-v2/aws/protocol/eventstream/header_value.godeleted−521

This diff is too big to show here.

vendor/github.com/aws/aws-sdk-go-v2/aws/protocol/eventstream/message.godeleted−117

This diff is too big to show here.

vendor/github.com/aws/aws-sdk-go-v2/aws/protocol/query/array.godeleted−72

This diff is too big to show here.

vendor/github.com/aws/aws-sdk-go-v2/aws/protocol/query/encoder.godeleted−80

This diff is too big to show here.

vendor/github.com/aws/aws-sdk-go-v2/aws/protocol/query/map.godeleted−78

This diff is too big to show here.

vendor/github.com/aws/aws-sdk-go-v2/aws/protocol/query/middleware.godeleted−62

This diff is too big to show here.

vendor/github.com/aws/aws-sdk-go-v2/aws/protocol/query/object.godeleted−69

This diff is too big to show here.

vendor/github.com/aws/aws-sdk-go-v2/aws/protocol/query/value.godeleted−115

This diff is too big to show here.

vendor/github.com/aws/aws-sdk-go-v2/aws/protocol/restjson/decoder_util.godeleted−85

This diff is too big to show here.

vendor/github.com/aws/aws-sdk-go-v2/aws/protocol/xml/error_utils.godeleted−48

This diff is too big to show here.

vendor/github.com/aws/aws-sdk-go-v2/aws/ratelimit/none.godeleted−20

This diff is too big to show here.

vendor/github.com/aws/aws-sdk-go-v2/aws/ratelimit/token_bucket.godeleted−96

This diff is too big to show here.

vendor/github.com/aws/aws-sdk-go-v2/aws/ratelimit/token_rate_limit.godeleted−83

This diff is too big to show here.

vendor/github.com/aws/aws-sdk-go-v2/aws/request.godeleted−25

This diff is too big to show here.

vendor/github.com/aws/aws-sdk-go-v2/aws/retry/adaptive.godeleted−156

This diff is too big to show here.

vendor/github.com/aws/aws-sdk-go-v2/aws/retry/adaptive_ratelimit.godeleted−158

This diff is too big to show here.

vendor/github.com/aws/aws-sdk-go-v2/aws/retry/adaptive_token_bucket.godeleted−83

This diff is too big to show here.

vendor/github.com/aws/aws-sdk-go-v2/aws/retry/doc.godeleted−80

This diff is too big to show here.

vendor/github.com/aws/aws-sdk-go-v2/aws/retry/errors.godeleted−20

This diff is too big to show here.

vendor/github.com/aws/aws-sdk-go-v2/aws/retry/jitter_backoff.godeleted−49

This diff is too big to show here.

vendor/github.com/aws/aws-sdk-go-v2/aws/retry/metadata.godeleted−52

This diff is too big to show here.

vendor/github.com/aws/aws-sdk-go-v2/aws/retry/middleware.godeleted−383

This diff is too big to show here.

vendor/github.com/aws/aws-sdk-go-v2/aws/retry/retry.godeleted−90

This diff is too big to show here.

vendor/github.com/aws/aws-sdk-go-v2/aws/retry/retryable_error.godeleted−222

This diff is too big to show here.

vendor/github.com/aws/aws-sdk-go-v2/aws/retry/standard.godeleted−269

This diff is too big to show here.

vendor/github.com/aws/aws-sdk-go-v2/aws/retry/throttle_error.godeleted−60

This diff is too big to show here.

vendor/github.com/aws/aws-sdk-go-v2/aws/retry/timeout_error.godeleted−52

This diff is too big to show here.

vendor/github.com/aws/aws-sdk-go-v2/aws/retryer.godeleted−127

This diff is too big to show here.

vendor/github.com/aws/aws-sdk-go-v2/aws/runtime.godeleted−14

This diff is too big to show here.

vendor/github.com/aws/aws-sdk-go-v2/aws/signer/internal/v4/cache.godeleted−115

This diff is too big to show here.

vendor/github.com/aws/aws-sdk-go-v2/aws/signer/internal/v4/const.godeleted−40

This diff is too big to show here.

vendor/github.com/aws/aws-sdk-go-v2/aws/signer/internal/v4/header_rules.godeleted−82

This diff is too big to show here.

vendor/github.com/aws/aws-sdk-go-v2/aws/signer/internal/v4/headers.godeleted−70

This diff is too big to show here.

vendor/github.com/aws/aws-sdk-go-v2/aws/signer/internal/v4/hmac.godeleted−13

This diff is too big to show here.

vendor/github.com/aws/aws-sdk-go-v2/aws/signer/internal/v4/host.godeleted−75

This diff is too big to show here.

vendor/github.com/aws/aws-sdk-go-v2/aws/signer/internal/v4/scope.godeleted−13

This diff is too big to show here.

vendor/github.com/aws/aws-sdk-go-v2/aws/signer/internal/v4/time.godeleted−36

This diff is too big to show here.

vendor/github.com/aws/aws-sdk-go-v2/aws/signer/internal/v4/util.godeleted−80

This diff is too big to show here.

vendor/github.com/aws/aws-sdk-go-v2/aws/signer/v4/middleware.godeleted−414

This diff is too big to show here.

vendor/github.com/aws/aws-sdk-go-v2/aws/signer/v4/presign_middleware.godeleted−127

This diff is too big to show here.

vendor/github.com/aws/aws-sdk-go-v2/aws/signer/v4/stream.godeleted−86

This diff is too big to show here.

vendor/github.com/aws/aws-sdk-go-v2/aws/signer/v4/v4.godeleted−559

This diff is too big to show here.

vendor/github.com/aws/aws-sdk-go-v2/aws/to_ptr.godeleted−297

This diff is too big to show here.

vendor/github.com/aws/aws-sdk-go-v2/aws/transport/http/client.godeleted−310

This diff is too big to show here.

vendor/github.com/aws/aws-sdk-go-v2/aws/transport/http/content_type.godeleted−42

This diff is too big to show here.

vendor/github.com/aws/aws-sdk-go-v2/aws/transport/http/response_error.godeleted−33

This diff is too big to show here.

vendor/github.com/aws/aws-sdk-go-v2/aws/transport/http/response_error_middleware.godeleted−56

This diff is too big to show here.

vendor/github.com/aws/aws-sdk-go-v2/aws/transport/http/timeout_read_closer.godeleted−104

This diff is too big to show here.

vendor/github.com/aws/aws-sdk-go-v2/aws/types.godeleted−42

This diff is too big to show here.

vendor/github.com/aws/aws-sdk-go-v2/aws/version.godeleted−8

This diff is too big to show here.

vendor/github.com/aws/aws-sdk-go-v2/config/CHANGELOG.mddeleted−678

This diff is too big to show here.

vendor/github.com/aws/aws-sdk-go-v2/config/LICENSE.txtdeleted−202

This diff is too big to show here.

vendor/github.com/aws/aws-sdk-go-v2/config/config.godeleted−222

This diff is too big to show here.

vendor/github.com/aws/aws-sdk-go-v2/config/defaultsmode.godeleted−47

This diff is too big to show here.

vendor/github.com/aws/aws-sdk-go-v2/config/doc.godeleted−20

This diff is too big to show here.

vendor/github.com/aws/aws-sdk-go-v2/config/env_config.godeleted−856

This diff is too big to show here.

vendor/github.com/aws/aws-sdk-go-v2/config/generate.godeleted−4

This diff is too big to show here.

vendor/github.com/aws/aws-sdk-go-v2/config/go_module_metadata.godeleted−6

This diff is too big to show here.

vendor/github.com/aws/aws-sdk-go-v2/config/load_options.godeleted−1141

This diff is too big to show here.

vendor/github.com/aws/aws-sdk-go-v2/config/local.godeleted−51

This diff is too big to show here.

vendor/github.com/aws/aws-sdk-go-v2/config/provider.godeleted−721

This diff is too big to show here.

vendor/github.com/aws/aws-sdk-go-v2/config/resolve.godeleted−383

This diff is too big to show here.

vendor/github.com/aws/aws-sdk-go-v2/config/resolve_bearer_token.godeleted−122

This diff is too big to show here.

vendor/github.com/aws/aws-sdk-go-v2/config/resolve_credentials.godeleted−566

This diff is too big to show here.

vendor/github.com/aws/aws-sdk-go-v2/config/shared_config.godeleted−1618

This diff is too big to show here.

vendor/github.com/aws/aws-sdk-go-v2/credentials/CHANGELOG.mddeleted−591

This diff is too big to show here.

vendor/github.com/aws/aws-sdk-go-v2/credentials/LICENSE.txtdeleted−202

This diff is too big to show here.

vendor/github.com/aws/aws-sdk-go-v2/credentials/doc.godeleted−4

This diff is too big to show here.

vendor/github.com/aws/aws-sdk-go-v2/credentials/ec2rolecreds/doc.godeleted−58

This diff is too big to show here.

vendor/github.com/aws/aws-sdk-go-v2/credentials/ec2rolecreds/provider.godeleted−229

This diff is too big to show here.

vendor/github.com/aws/aws-sdk-go-v2/credentials/endpointcreds/internal/client/auth.godeleted−48

This diff is too big to show here.

vendor/github.com/aws/aws-sdk-go-v2/credentials/endpointcreds/internal/client/client.godeleted−165

This diff is too big to show here.

vendor/github.com/aws/aws-sdk-go-v2/credentials/endpointcreds/internal/client/endpoints.godeleted−20

This diff is too big to show here.

vendor/github.com/aws/aws-sdk-go-v2/credentials/endpointcreds/internal/client/middleware.godeleted−164

This diff is too big to show here.

vendor/github.com/aws/aws-sdk-go-v2/credentials/endpointcreds/provider.godeleted−193

This diff is too big to show here.

vendor/github.com/aws/aws-sdk-go-v2/credentials/go_module_metadata.godeleted−6

This diff is too big to show here.

vendor/github.com/aws/aws-sdk-go-v2/credentials/processcreds/doc.godeleted−92

This diff is too big to show here.

vendor/github.com/aws/aws-sdk-go-v2/credentials/processcreds/provider.godeleted−285

This diff is too big to show here.

vendor/github.com/aws/aws-sdk-go-v2/credentials/ssocreds/doc.godeleted−81

This diff is too big to show here.

vendor/github.com/aws/aws-sdk-go-v2/credentials/ssocreds/sso_cached_token.godeleted−233

This diff is too big to show here.

vendor/github.com/aws/aws-sdk-go-v2/credentials/ssocreds/sso_credentials_provider.godeleted−153

This diff is too big to show here.

vendor/github.com/aws/aws-sdk-go-v2/credentials/ssocreds/sso_token_provider.godeleted−147

This diff is too big to show here.

vendor/github.com/aws/aws-sdk-go-v2/credentials/static_provider.godeleted−53

This diff is too big to show here.

vendor/github.com/aws/aws-sdk-go-v2/credentials/stscreds/assume_role_provider.godeleted−326

This diff is too big to show here.

vendor/github.com/aws/aws-sdk-go-v2/credentials/stscreds/web_identity_provider.godeleted−169

This diff is too big to show here.

vendor/github.com/aws/aws-sdk-go-v2/feature/ec2/imds/CHANGELOG.mddeleted−355

This diff is too big to show here.

vendor/github.com/aws/aws-sdk-go-v2/feature/ec2/imds/LICENSE.txtdeleted−202

This diff is too big to show here.

vendor/github.com/aws/aws-sdk-go-v2/feature/ec2/imds/api_client.godeleted−352

This diff is too big to show here.

vendor/github.com/aws/aws-sdk-go-v2/feature/ec2/imds/api_op_GetDynamicData.godeleted−77

This diff is too big to show here.

vendor/github.com/aws/aws-sdk-go-v2/feature/ec2/imds/api_op_GetIAMInfo.godeleted−103

This diff is too big to show here.

vendor/github.com/aws/aws-sdk-go-v2/feature/ec2/imds/api_op_GetInstanceIdentityDocument.godeleted−110

This diff is too big to show here.

vendor/github.com/aws/aws-sdk-go-v2/feature/ec2/imds/api_op_GetMetadata.godeleted−77

This diff is too big to show here.

vendor/github.com/aws/aws-sdk-go-v2/feature/ec2/imds/api_op_GetRegion.godeleted−73

This diff is too big to show here.

vendor/github.com/aws/aws-sdk-go-v2/feature/ec2/imds/api_op_GetToken.godeleted−119

This diff is too big to show here.

vendor/github.com/aws/aws-sdk-go-v2/feature/ec2/imds/api_op_GetUserData.godeleted−61

This diff is too big to show here.

vendor/github.com/aws/aws-sdk-go-v2/feature/ec2/imds/auth.godeleted−48

This diff is too big to show here.

vendor/github.com/aws/aws-sdk-go-v2/feature/ec2/imds/doc.godeleted−12

This diff is too big to show here.

vendor/github.com/aws/aws-sdk-go-v2/feature/ec2/imds/endpoints.godeleted−20

This diff is too big to show here.

vendor/github.com/aws/aws-sdk-go-v2/feature/ec2/imds/go_module_metadata.godeleted−6

This diff is too big to show here.

vendor/github.com/aws/aws-sdk-go-v2/feature/ec2/imds/internal/config/resolvers.godeleted−114

This diff is too big to show here.

vendor/github.com/aws/aws-sdk-go-v2/feature/ec2/imds/request_middleware.godeleted−313

This diff is too big to show here.

vendor/github.com/aws/aws-sdk-go-v2/feature/ec2/imds/token_provider.godeleted−261

This diff is too big to show here.

vendor/github.com/aws/aws-sdk-go-v2/internal/auth/auth.godeleted−45

This diff is too big to show here.

vendor/github.com/aws/aws-sdk-go-v2/internal/auth/scheme.godeleted−191

This diff is too big to show here.

vendor/github.com/aws/aws-sdk-go-v2/internal/auth/smithy/bearer_token_adapter.godeleted−43

This diff is too big to show here.

vendor/github.com/aws/aws-sdk-go-v2/internal/auth/smithy/bearer_token_signer_adapter.godeleted−35

This diff is too big to show here.

vendor/github.com/aws/aws-sdk-go-v2/internal/auth/smithy/credentials_adapter.godeleted−46

This diff is too big to show here.

vendor/github.com/aws/aws-sdk-go-v2/internal/auth/smithy/smithy.godeleted−2

This diff is too big to show here.

vendor/github.com/aws/aws-sdk-go-v2/internal/auth/smithy/v4signer_adapter.godeleted−57

This diff is too big to show here.

vendor/github.com/aws/aws-sdk-go-v2/internal/configsources/CHANGELOG.mddeleted−320

This diff is too big to show here.

vendor/github.com/aws/aws-sdk-go-v2/internal/configsources/LICENSE.txtdeleted−202

This diff is too big to show here.

vendor/github.com/aws/aws-sdk-go-v2/internal/configsources/config.godeleted−65

This diff is too big to show here.

vendor/github.com/aws/aws-sdk-go-v2/internal/configsources/endpoints.godeleted−57

This diff is too big to show here.

vendor/github.com/aws/aws-sdk-go-v2/internal/configsources/go_module_metadata.godeleted−6

This diff is too big to show here.

vendor/github.com/aws/aws-sdk-go-v2/internal/context/context.godeleted−52

This diff is too big to show here.

vendor/github.com/aws/aws-sdk-go-v2/internal/endpoints/awsrulesfn/arn.godeleted−94

This diff is too big to show here.

vendor/github.com/aws/aws-sdk-go-v2/internal/endpoints/awsrulesfn/doc.godeleted−3

This diff is too big to show here.

vendor/github.com/aws/aws-sdk-go-v2/internal/endpoints/awsrulesfn/generate.godeleted−7

This diff is too big to show here.

vendor/github.com/aws/aws-sdk-go-v2/internal/endpoints/awsrulesfn/host.godeleted−51

This diff is too big to show here.

vendor/github.com/aws/aws-sdk-go-v2/internal/endpoints/awsrulesfn/partition.godeleted−76

This diff is too big to show here.

vendor/github.com/aws/aws-sdk-go-v2/internal/endpoints/awsrulesfn/partitions.godeleted−403

This diff is too big to show here.

vendor/github.com/aws/aws-sdk-go-v2/internal/endpoints/awsrulesfn/partitions.jsondeleted−220

This diff is too big to show here.

vendor/github.com/aws/aws-sdk-go-v2/internal/endpoints/endpoints.godeleted−201

This diff is too big to show here.

vendor/github.com/aws/aws-sdk-go-v2/internal/endpoints/v2/CHANGELOG.mddeleted−294

This diff is too big to show here.

vendor/github.com/aws/aws-sdk-go-v2/internal/endpoints/v2/LICENSE.txtdeleted−202

This diff is too big to show here.

vendor/github.com/aws/aws-sdk-go-v2/internal/endpoints/v2/endpoints.godeleted−302

This diff is too big to show here.

vendor/github.com/aws/aws-sdk-go-v2/internal/endpoints/v2/go_module_metadata.godeleted−6

This diff is too big to show here.

vendor/github.com/aws/aws-sdk-go-v2/internal/ini/CHANGELOG.mddeleted−271

This diff is too big to show here.

vendor/github.com/aws/aws-sdk-go-v2/internal/ini/LICENSE.txtdeleted−202

This diff is too big to show here.

vendor/github.com/aws/aws-sdk-go-v2/internal/ini/errors.godeleted−22

This diff is too big to show here.

vendor/github.com/aws/aws-sdk-go-v2/internal/ini/go_module_metadata.godeleted−6

This diff is too big to show here.

vendor/github.com/aws/aws-sdk-go-v2/internal/ini/ini.godeleted−56

This diff is too big to show here.

vendor/github.com/aws/aws-sdk-go-v2/internal/ini/parse.godeleted−109

This diff is too big to show here.

vendor/github.com/aws/aws-sdk-go-v2/internal/ini/sections.godeleted−157

This diff is too big to show here.

vendor/github.com/aws/aws-sdk-go-v2/internal/ini/strings.godeleted−89

This diff is too big to show here.

vendor/github.com/aws/aws-sdk-go-v2/internal/ini/token.godeleted−32

This diff is too big to show here.

vendor/github.com/aws/aws-sdk-go-v2/internal/ini/tokenize.godeleted−92

This diff is too big to show here.

vendor/github.com/aws/aws-sdk-go-v2/internal/ini/value.godeleted−93

This diff is too big to show here.

vendor/github.com/aws/aws-sdk-go-v2/internal/middleware/middleware.godeleted−42

This diff is too big to show here.

vendor/github.com/aws/aws-sdk-go-v2/internal/rand/rand.godeleted−33

This diff is too big to show here.

vendor/github.com/aws/aws-sdk-go-v2/internal/sdk/interfaces.godeleted−9

This diff is too big to show here.

vendor/github.com/aws/aws-sdk-go-v2/internal/sdk/time.godeleted−74

This diff is too big to show here.

vendor/github.com/aws/aws-sdk-go-v2/internal/sdkio/byte.godeleted−12

This diff is too big to show here.

vendor/github.com/aws/aws-sdk-go-v2/internal/shareddefaults/shared_config.godeleted−47

This diff is too big to show here.

vendor/github.com/aws/aws-sdk-go-v2/internal/strings/strings.godeleted−11

This diff is too big to show here.

vendor/github.com/aws/aws-sdk-go-v2/internal/sync/singleflight/LICENSEdeleted−28

This diff is too big to show here.

vendor/github.com/aws/aws-sdk-go-v2/internal/sync/singleflight/docs.godeleted−7

This diff is too big to show here.

vendor/github.com/aws/aws-sdk-go-v2/internal/sync/singleflight/singleflight.godeleted−210

This diff is too big to show here.

vendor/github.com/aws/aws-sdk-go-v2/internal/timeconv/duration.godeleted−13

This diff is too big to show here.

vendor/github.com/aws/aws-sdk-go-v2/service/internal/accept-encoding/CHANGELOG.mddeleted−140

This diff is too big to show here.

vendor/github.com/aws/aws-sdk-go-v2/service/internal/accept-encoding/LICENSE.txtdeleted−202

This diff is too big to show here.

vendor/github.com/aws/aws-sdk-go-v2/service/internal/accept-encoding/accept_encoding_gzip.godeleted−176

This diff is too big to show here.

vendor/github.com/aws/aws-sdk-go-v2/service/internal/accept-encoding/doc.godeleted−22

This diff is too big to show here.

vendor/github.com/aws/aws-sdk-go-v2/service/internal/accept-encoding/go_module_metadata.godeleted−6

This diff is too big to show here.

vendor/github.com/aws/aws-sdk-go-v2/service/internal/presigned-url/CHANGELOG.mddeleted−346

This diff is too big to show here.

vendor/github.com/aws/aws-sdk-go-v2/service/internal/presigned-url/LICENSE.txtdeleted−202

This diff is too big to show here.

vendor/github.com/aws/aws-sdk-go-v2/service/internal/presigned-url/context.godeleted−56

This diff is too big to show here.

vendor/github.com/aws/aws-sdk-go-v2/service/internal/presigned-url/doc.godeleted−3

This diff is too big to show here.

vendor/github.com/aws/aws-sdk-go-v2/service/internal/presigned-url/go_module_metadata.godeleted−6

This diff is too big to show here.

vendor/github.com/aws/aws-sdk-go-v2/service/internal/presigned-url/middleware.godeleted−110

This diff is too big to show here.

vendor/github.com/aws/aws-sdk-go-v2/service/sso/CHANGELOG.mddeleted−475

This diff is too big to show here.

vendor/github.com/aws/aws-sdk-go-v2/service/sso/LICENSE.txtdeleted−202

This diff is too big to show here.

vendor/github.com/aws/aws-sdk-go-v2/service/sso/api_client.godeleted−627

This diff is too big to show here.

vendor/github.com/aws/aws-sdk-go-v2/service/sso/api_op_GetRoleCredentials.godeleted−153

This diff is too big to show here.

vendor/github.com/aws/aws-sdk-go-v2/service/sso/api_op_ListAccountRoles.godeleted−251

This diff is too big to show here.

vendor/github.com/aws/aws-sdk-go-v2/service/sso/api_op_ListAccounts.godeleted−249

This diff is too big to show here.

vendor/github.com/aws/aws-sdk-go-v2/service/sso/api_op_Logout.godeleted−152

This diff is too big to show here.

vendor/github.com/aws/aws-sdk-go-v2/service/sso/auth.godeleted−308

This diff is too big to show here.

vendor/github.com/aws/aws-sdk-go-v2/service/sso/deserializers.godeleted−1161

This diff is too big to show here.

vendor/github.com/aws/aws-sdk-go-v2/service/sso/doc.godeleted−27

This diff is too big to show here.

vendor/github.com/aws/aws-sdk-go-v2/service/sso/endpoints.godeleted−550

This diff is too big to show here.

vendor/github.com/aws/aws-sdk-go-v2/service/sso/generated.jsondeleted−35

This diff is too big to show here.

vendor/github.com/aws/aws-sdk-go-v2/service/sso/go_module_metadata.godeleted−6

This diff is too big to show here.

vendor/github.com/aws/aws-sdk-go-v2/service/sso/internal/endpoints/endpoints.godeleted−566

This diff is too big to show here.

vendor/github.com/aws/aws-sdk-go-v2/service/sso/options.godeleted−227

This diff is too big to show here.

vendor/github.com/aws/aws-sdk-go-v2/service/sso/serializers.godeleted−284

This diff is too big to show here.

vendor/github.com/aws/aws-sdk-go-v2/service/sso/types/errors.godeleted−115

This diff is too big to show here.

vendor/github.com/aws/aws-sdk-go-v2/service/sso/types/types.godeleted−63

This diff is too big to show here.

vendor/github.com/aws/aws-sdk-go-v2/service/sso/validators.godeleted−175

This diff is too big to show here.

vendor/github.com/aws/aws-sdk-go-v2/service/ssooidc/CHANGELOG.mddeleted−469

This diff is too big to show here.

vendor/github.com/aws/aws-sdk-go-v2/service/ssooidc/LICENSE.txtdeleted−202

This diff is too big to show here.

vendor/github.com/aws/aws-sdk-go-v2/service/ssooidc/api_client.godeleted−627

This diff is too big to show here.

vendor/github.com/aws/aws-sdk-go-v2/service/ssooidc/api_op_CreateToken.godeleted−225

This diff is too big to show here.

vendor/github.com/aws/aws-sdk-go-v2/service/ssooidc/api_op_CreateTokenWithIAM.godeleted−256

This diff is too big to show here.

vendor/github.com/aws/aws-sdk-go-v2/service/ssooidc/api_op_RegisterClient.godeleted−186

This diff is too big to show here.

vendor/github.com/aws/aws-sdk-go-v2/service/ssooidc/api_op_StartDeviceAuthorization.godeleted−176

This diff is too big to show here.

vendor/github.com/aws/aws-sdk-go-v2/service/ssooidc/auth.godeleted−302

This diff is too big to show here.

vendor/github.com/aws/aws-sdk-go-v2/service/ssooidc/deserializers.godeleted−2167

This diff is too big to show here.

vendor/github.com/aws/aws-sdk-go-v2/service/ssooidc/doc.godeleted−46

This diff is too big to show here.

vendor/github.com/aws/aws-sdk-go-v2/service/ssooidc/endpoints.godeleted−550

This diff is too big to show here.

vendor/github.com/aws/aws-sdk-go-v2/service/ssooidc/generated.jsondeleted−35

This diff is too big to show here.

vendor/github.com/aws/aws-sdk-go-v2/service/ssooidc/go_module_metadata.godeleted−6

This diff is too big to show here.

vendor/github.com/aws/aws-sdk-go-v2/service/ssooidc/internal/endpoints/endpoints.godeleted−566

This diff is too big to show here.

vendor/github.com/aws/aws-sdk-go-v2/service/ssooidc/options.godeleted−227

This diff is too big to show here.

vendor/github.com/aws/aws-sdk-go-v2/service/ssooidc/serializers.godeleted−487

This diff is too big to show here.

vendor/github.com/aws/aws-sdk-go-v2/service/ssooidc/types/errors.godeleted−428

This diff is too big to show here.

vendor/github.com/aws/aws-sdk-go-v2/service/ssooidc/types/types.godeleted−9

This diff is too big to show here.

vendor/github.com/aws/aws-sdk-go-v2/service/ssooidc/validators.godeleted−184

This diff is too big to show here.

vendor/github.com/aws/aws-sdk-go-v2/service/sts/CHANGELOG.mddeleted−493

This diff is too big to show here.

vendor/github.com/aws/aws-sdk-go-v2/service/sts/LICENSE.txtdeleted−202

This diff is too big to show here.

vendor/github.com/aws/aws-sdk-go-v2/service/sts/api_client.godeleted−779

This diff is too big to show here.

vendor/github.com/aws/aws-sdk-go-v2/service/sts/api_op_AssumeRole.godeleted−520

This diff is too big to show here.

vendor/github.com/aws/aws-sdk-go-v2/service/sts/api_op_AssumeRoleWithSAML.godeleted−436

This diff is too big to show here.

vendor/github.com/aws/aws-sdk-go-v2/service/sts/api_op_AssumeRoleWithWebIdentity.godeleted−447

This diff is too big to show here.

vendor/github.com/aws/aws-sdk-go-v2/service/sts/api_op_DecodeAuthorizationMessage.godeleted−177

This diff is too big to show here.

vendor/github.com/aws/aws-sdk-go-v2/service/sts/api_op_GetAccessKeyInfo.godeleted−168

This diff is too big to show here.

vendor/github.com/aws/aws-sdk-go-v2/service/sts/api_op_GetCallerIdentity.godeleted−180

This diff is too big to show here.

vendor/github.com/aws/aws-sdk-go-v2/service/sts/api_op_GetFederationToken.godeleted−381

This diff is too big to show here.

vendor/github.com/aws/aws-sdk-go-v2/service/sts/api_op_GetSessionToken.godeleted−227

This diff is too big to show here.

vendor/github.com/aws/aws-sdk-go-v2/service/sts/auth.godeleted−296

This diff is too big to show here.

vendor/github.com/aws/aws-sdk-go-v2/service/sts/deserializers.godeleted−2516

This diff is too big to show here.

vendor/github.com/aws/aws-sdk-go-v2/service/sts/doc.godeleted−13

This diff is too big to show here.

vendor/github.com/aws/aws-sdk-go-v2/service/sts/endpoints.godeleted−1130

This diff is too big to show here.

vendor/github.com/aws/aws-sdk-go-v2/service/sts/generated.jsondeleted−41

This diff is too big to show here.

vendor/github.com/aws/aws-sdk-go-v2/service/sts/go_module_metadata.godeleted−6

This diff is too big to show here.

vendor/github.com/aws/aws-sdk-go-v2/service/sts/internal/endpoints/endpoints.godeleted−512

This diff is too big to show here.

vendor/github.com/aws/aws-sdk-go-v2/service/sts/options.godeleted−227

This diff is too big to show here.

vendor/github.com/aws/aws-sdk-go-v2/service/sts/serializers.godeleted−862

This diff is too big to show here.

vendor/github.com/aws/aws-sdk-go-v2/service/sts/types/errors.godeleted−248

This diff is too big to show here.

vendor/github.com/aws/aws-sdk-go-v2/service/sts/types/types.godeleted−144

This diff is too big to show here.

vendor/github.com/aws/aws-sdk-go-v2/service/sts/validators.godeleted−305

This diff is too big to show here.

vendor/github.com/aws/smithy-go/.gitignoredeleted−29

This diff is too big to show here.

vendor/github.com/aws/smithy-go/.travis.ymldeleted−28

This diff is too big to show here.

vendor/github.com/aws/smithy-go/CHANGELOG.mddeleted−239

This diff is too big to show here.

vendor/github.com/aws/smithy-go/CODE_OF_CONDUCT.mddeleted−4

This diff is too big to show here.

vendor/github.com/aws/smithy-go/CONTRIBUTING.mddeleted−59

This diff is too big to show here.

vendor/github.com/aws/smithy-go/LICENSEdeleted−175

This diff is too big to show here.

vendor/github.com/aws/smithy-go/Makefiledeleted−102

This diff is too big to show here.

vendor/github.com/aws/smithy-go/NOTICEdeleted−1

This diff is too big to show here.

vendor/github.com/aws/smithy-go/README.mddeleted−27

This diff is too big to show here.

vendor/github.com/aws/smithy-go/auth/auth.godeleted−3

This diff is too big to show here.

vendor/github.com/aws/smithy-go/auth/bearer/docs.godeleted−3

This diff is too big to show here.

vendor/github.com/aws/smithy-go/auth/bearer/middleware.godeleted−104

This diff is too big to show here.

vendor/github.com/aws/smithy-go/auth/bearer/token.godeleted−50

This diff is too big to show here.

vendor/github.com/aws/smithy-go/auth/bearer/token_cache.godeleted−208

This diff is too big to show here.

vendor/github.com/aws/smithy-go/auth/identity.godeleted−47

This diff is too big to show here.

vendor/github.com/aws/smithy-go/auth/option.godeleted−25

This diff is too big to show here.

vendor/github.com/aws/smithy-go/auth/scheme_id.godeleted−20

This diff is too big to show here.

vendor/github.com/aws/smithy-go/context/suppress_expired.godeleted−81

This diff is too big to show here.

vendor/github.com/aws/smithy-go/doc.godeleted−2

This diff is too big to show here.

vendor/github.com/aws/smithy-go/document.godeleted−10

This diff is too big to show here.

vendor/github.com/aws/smithy-go/document/doc.godeleted−12

This diff is too big to show here.

vendor/github.com/aws/smithy-go/document/document.godeleted−153

This diff is too big to show here.

vendor/github.com/aws/smithy-go/document/errors.godeleted−75

This diff is too big to show here.

vendor/github.com/aws/smithy-go/encoding/doc.godeleted−4

This diff is too big to show here.

vendor/github.com/aws/smithy-go/encoding/encoding.godeleted−40

This diff is too big to show here.

vendor/github.com/aws/smithy-go/encoding/httpbinding/encode.godeleted−123

This diff is too big to show here.

vendor/github.com/aws/smithy-go/encoding/httpbinding/header.godeleted−122

This diff is too big to show here.

vendor/github.com/aws/smithy-go/encoding/httpbinding/path_replace.godeleted−108

This diff is too big to show here.

vendor/github.com/aws/smithy-go/encoding/httpbinding/query.godeleted−107

This diff is too big to show here.

vendor/github.com/aws/smithy-go/encoding/httpbinding/uri.godeleted−111

This diff is too big to show here.

vendor/github.com/aws/smithy-go/encoding/json/array.godeleted−35

This diff is too big to show here.

vendor/github.com/aws/smithy-go/encoding/json/constants.godeleted−15

This diff is too big to show here.

vendor/github.com/aws/smithy-go/encoding/json/decoder_util.godeleted−139

This diff is too big to show here.

vendor/github.com/aws/smithy-go/encoding/json/encoder.godeleted−30

This diff is too big to show here.

vendor/github.com/aws/smithy-go/encoding/json/escape.godeleted−198

This diff is too big to show here.

vendor/github.com/aws/smithy-go/encoding/json/object.godeleted−40

This diff is too big to show here.

vendor/github.com/aws/smithy-go/encoding/json/value.godeleted−149

This diff is too big to show here.

vendor/github.com/aws/smithy-go/encoding/xml/array.godeleted−49

This diff is too big to show here.

vendor/github.com/aws/smithy-go/encoding/xml/constants.godeleted−10

This diff is too big to show here.

vendor/github.com/aws/smithy-go/encoding/xml/doc.godeleted−49

This diff is too big to show here.

vendor/github.com/aws/smithy-go/encoding/xml/element.godeleted−91

This diff is too big to show here.

vendor/github.com/aws/smithy-go/encoding/xml/encoder.godeleted−51

This diff is too big to show here.

vendor/github.com/aws/smithy-go/encoding/xml/error_utils.godeleted−51

This diff is too big to show here.

vendor/github.com/aws/smithy-go/encoding/xml/escape.godeleted−137

This diff is too big to show here.

vendor/github.com/aws/smithy-go/encoding/xml/map.godeleted−53

This diff is too big to show here.

vendor/github.com/aws/smithy-go/encoding/xml/value.godeleted−302

This diff is too big to show here.

vendor/github.com/aws/smithy-go/encoding/xml/xml_decoder.godeleted−154

This diff is too big to show here.

vendor/github.com/aws/smithy-go/endpoints/endpoint.godeleted−23

This diff is too big to show here.

vendor/github.com/aws/smithy-go/errors.godeleted−137

This diff is too big to show here.

vendor/github.com/aws/smithy-go/go_module_metadata.godeleted−6

This diff is too big to show here.

vendor/github.com/aws/smithy-go/internal/sync/singleflight/LICENSEdeleted−28

This diff is too big to show here.

vendor/github.com/aws/smithy-go/internal/sync/singleflight/docs.godeleted−8

This diff is too big to show here.

vendor/github.com/aws/smithy-go/internal/sync/singleflight/singleflight.godeleted−210

This diff is too big to show here.

vendor/github.com/aws/smithy-go/io/byte.godeleted−12

This diff is too big to show here.

vendor/github.com/aws/smithy-go/io/doc.godeleted−2

This diff is too big to show here.

vendor/github.com/aws/smithy-go/io/reader.godeleted−16

This diff is too big to show here.

vendor/github.com/aws/smithy-go/io/ringbuffer.godeleted−94

This diff is too big to show here.

vendor/github.com/aws/smithy-go/local-mod-replace.shdeleted−39

This diff is too big to show here.

vendor/github.com/aws/smithy-go/logging/logger.godeleted−82

This diff is too big to show here.

vendor/github.com/aws/smithy-go/middleware/doc.godeleted−67

This diff is too big to show here.

vendor/github.com/aws/smithy-go/middleware/logging.godeleted−46

This diff is too big to show here.

vendor/github.com/aws/smithy-go/middleware/metadata.godeleted−65

This diff is too big to show here.

vendor/github.com/aws/smithy-go/middleware/middleware.godeleted−71

This diff is too big to show here.

vendor/github.com/aws/smithy-go/middleware/ordered_group.godeleted−268

This diff is too big to show here.

vendor/github.com/aws/smithy-go/middleware/stack.godeleted−209

This diff is too big to show here.

vendor/github.com/aws/smithy-go/middleware/stack_values.godeleted−100

This diff is too big to show here.

vendor/github.com/aws/smithy-go/middleware/step_build.godeleted−211

This diff is too big to show here.

vendor/github.com/aws/smithy-go/middleware/step_deserialize.godeleted−217

This diff is too big to show here.

vendor/github.com/aws/smithy-go/middleware/step_finalize.godeleted−211

This diff is too big to show here.

vendor/github.com/aws/smithy-go/middleware/step_initialize.godeleted−211

This diff is too big to show here.

vendor/github.com/aws/smithy-go/middleware/step_serialize.godeleted−219

This diff is too big to show here.

vendor/github.com/aws/smithy-go/modman.tomldeleted−10

This diff is too big to show here.

vendor/github.com/aws/smithy-go/private/requestcompression/gzip.godeleted−30

This diff is too big to show here.

vendor/github.com/aws/smithy-go/private/requestcompression/middleware_capture_request_compression.godeleted−52

This diff is too big to show here.

vendor/github.com/aws/smithy-go/private/requestcompression/request_compression.godeleted−103

This diff is too big to show here.

vendor/github.com/aws/smithy-go/properties.godeleted−62

This diff is too big to show here.

vendor/github.com/aws/smithy-go/ptr/doc.godeleted−5

This diff is too big to show here.

vendor/github.com/aws/smithy-go/ptr/from_ptr.godeleted−601

This diff is too big to show here.

vendor/github.com/aws/smithy-go/ptr/gen_scalars.godeleted−83

This diff is too big to show here.

vendor/github.com/aws/smithy-go/ptr/to_ptr.godeleted−499

This diff is too big to show here.

vendor/github.com/aws/smithy-go/rand/doc.godeleted−3

This diff is too big to show here.

vendor/github.com/aws/smithy-go/rand/rand.godeleted−31

This diff is too big to show here.

vendor/github.com/aws/smithy-go/rand/uuid.godeleted−87

This diff is too big to show here.

vendor/github.com/aws/smithy-go/time/time.godeleted−134

This diff is too big to show here.

vendor/github.com/aws/smithy-go/transport/http/auth.godeleted−21

This diff is too big to show here.

vendor/github.com/aws/smithy-go/transport/http/auth_schemes.godeleted−45

This diff is too big to show here.

vendor/github.com/aws/smithy-go/transport/http/checksum_middleware.godeleted−70

This diff is too big to show here.

vendor/github.com/aws/smithy-go/transport/http/client.godeleted−120

This diff is too big to show here.

vendor/github.com/aws/smithy-go/transport/http/doc.godeleted−5

This diff is too big to show here.

vendor/github.com/aws/smithy-go/transport/http/headerlist.godeleted−163

This diff is too big to show here.

vendor/github.com/aws/smithy-go/transport/http/host.godeleted−89

This diff is too big to show here.

vendor/github.com/aws/smithy-go/transport/http/internal/io/safe.godeleted−75

This diff is too big to show here.

vendor/github.com/aws/smithy-go/transport/http/md5_checksum.godeleted−25

This diff is too big to show here.

vendor/github.com/aws/smithy-go/transport/http/middleware_close_response_body.godeleted−79

This diff is too big to show here.

vendor/github.com/aws/smithy-go/transport/http/middleware_content_length.godeleted−84

This diff is too big to show here.

vendor/github.com/aws/smithy-go/transport/http/middleware_header_comment.godeleted−81

This diff is too big to show here.

vendor/github.com/aws/smithy-go/transport/http/middleware_headers.godeleted−167

This diff is too big to show here.

vendor/github.com/aws/smithy-go/transport/http/middleware_http_logging.godeleted−75

This diff is too big to show here.

vendor/github.com/aws/smithy-go/transport/http/middleware_metadata.godeleted−51

This diff is too big to show here.

vendor/github.com/aws/smithy-go/transport/http/middleware_min_proto.godeleted−79

This diff is too big to show here.

vendor/github.com/aws/smithy-go/transport/http/properties.godeleted−80

This diff is too big to show here.

vendor/github.com/aws/smithy-go/transport/http/request.godeleted−189

This diff is too big to show here.

vendor/github.com/aws/smithy-go/transport/http/response.godeleted−34

This diff is too big to show here.

vendor/github.com/aws/smithy-go/transport/http/time.godeleted−13

This diff is too big to show here.

vendor/github.com/aws/smithy-go/transport/http/url.godeleted−44

This diff is too big to show here.

vendor/github.com/aws/smithy-go/transport/http/user_agent.godeleted−37

This diff is too big to show here.

vendor/github.com/aws/smithy-go/validation.godeleted−140

This diff is too big to show here.

vendor/github.com/aymanbagabas/go-osc52/v2/LICENSEdeleted−21

This diff is too big to show here.

vendor/github.com/aymanbagabas/go-osc52/v2/README.mddeleted−83

This diff is too big to show here.

vendor/github.com/aymanbagabas/go-osc52/v2/osc52.godeleted−305

This diff is too big to show here.

vendor/github.com/aymanbagabas/go-udiff/LICENSE-BSDdeleted−27

This diff is too big to show here.

vendor/github.com/aymanbagabas/go-udiff/LICENSE-MITdeleted−21

This diff is too big to show here.

vendor/github.com/aymanbagabas/go-udiff/README.mddeleted−142

This diff is too big to show here.

vendor/github.com/aymanbagabas/go-udiff/diff.godeleted−177

This diff is too big to show here.

vendor/github.com/aymanbagabas/go-udiff/export.godeleted−16

This diff is too big to show here.

vendor/github.com/aymanbagabas/go-udiff/lcs/common.godeleted−179

This diff is too big to show here.

vendor/github.com/aymanbagabas/go-udiff/lcs/doc.godeleted−156

This diff is too big to show here.

vendor/github.com/aymanbagabas/go-udiff/lcs/git.shdeleted−33

This diff is too big to show here.

vendor/github.com/aymanbagabas/go-udiff/lcs/labels.godeleted−55

This diff is too big to show here.

vendor/github.com/aymanbagabas/go-udiff/lcs/old.godeleted−478

This diff is too big to show here.

vendor/github.com/aymanbagabas/go-udiff/lcs/sequence.godeleted−113

This diff is too big to show here.

vendor/github.com/aymanbagabas/go-udiff/merge.godeleted−81

This diff is too big to show here.

vendor/github.com/aymanbagabas/go-udiff/ndiff.godeleted−99

This diff is too big to show here.

vendor/github.com/aymanbagabas/go-udiff/unified.godeleted−251

This diff is too big to show here.

vendor/github.com/aymerick/douceur/LICENSEdeleted−22

This diff is too big to show here.

vendor/github.com/aymerick/douceur/css/declaration.godeleted−60

This diff is too big to show here.

vendor/github.com/aymerick/douceur/css/rule.godeleted−230

This diff is too big to show here.

vendor/github.com/aymerick/douceur/css/stylesheet.godeleted−25

This diff is too big to show here.

vendor/github.com/aymerick/douceur/parser/parser.godeleted−409

This diff is too big to show here.

vendor/github.com/bmatcuk/doublestar/v4/.codecov.ymldeleted−10

This diff is too big to show here.

vendor/github.com/bmatcuk/doublestar/v4/.gitignoredeleted−32

This diff is too big to show here.

vendor/github.com/bmatcuk/doublestar/v4/LICENSEdeleted−22

This diff is too big to show here.

vendor/github.com/bmatcuk/doublestar/v4/README.mddeleted−433

This diff is too big to show here.

vendor/github.com/bmatcuk/doublestar/v4/UPGRADING.mddeleted−63

This diff is too big to show here.

vendor/github.com/bmatcuk/doublestar/v4/doublestar.godeleted−13

This diff is too big to show here.

vendor/github.com/bmatcuk/doublestar/v4/glob.godeleted−472

This diff is too big to show here.

vendor/github.com/bmatcuk/doublestar/v4/globoptions.godeleted−144

This diff is too big to show here.

vendor/github.com/bmatcuk/doublestar/v4/globwalk.godeleted−414

This diff is too big to show here.

vendor/github.com/bmatcuk/doublestar/v4/match.godeleted−403

This diff is too big to show here.

vendor/github.com/bmatcuk/doublestar/v4/utils.godeleted−160

This diff is too big to show here.

vendor/github.com/bmatcuk/doublestar/v4/validate.godeleted−82

This diff is too big to show here.

vendor/github.com/charlievieth/fastwalk/.gitignoredeleted−2

This diff is too big to show here.

vendor/github.com/charlievieth/fastwalk/LICENSEdeleted−21

This diff is too big to show here.

vendor/github.com/charlievieth/fastwalk/Makefiledeleted−101

This diff is too big to show here.

vendor/github.com/charlievieth/fastwalk/README.mddeleted−193

This diff is too big to show here.

vendor/github.com/charlievieth/fastwalk/adapters.godeleted−102

This diff is too big to show here.

vendor/github.com/charlievieth/fastwalk/dirent.godeleted−73

This diff is too big to show here.

vendor/github.com/charlievieth/fastwalk/dirent_portable.godeleted−134

This diff is too big to show here.

vendor/github.com/charlievieth/fastwalk/dirent_unix.godeleted−146

This diff is too big to show here.

vendor/github.com/charlievieth/fastwalk/entry_filter_portable.godeleted−37

This diff is too big to show here.

vendor/github.com/charlievieth/fastwalk/entry_filter_unix.godeleted−59

This diff is too big to show here.

vendor/github.com/charlievieth/fastwalk/entry_filter_windows.godeleted−156

This diff is too big to show here.

vendor/github.com/charlievieth/fastwalk/fastwalk.godeleted−697

This diff is too big to show here.

vendor/github.com/charlievieth/fastwalk/fastwalk_darwin.godeleted−122

This diff is too big to show here.

vendor/github.com/charlievieth/fastwalk/fastwalk_portable.godeleted−65

This diff is too big to show here.

vendor/github.com/charlievieth/fastwalk/fastwalk_unix.godeleted−131

This diff is too big to show here.

vendor/github.com/charlievieth/fastwalk/go.LICENSEdeleted−27

This diff is too big to show here.

vendor/github.com/charlievieth/fastwalk/internal/dirent/dirent.godeleted−109

This diff is too big to show here.

vendor/github.com/charlievieth/fastwalk/internal/dirent/dirent_aix.godeleted−29

This diff is too big to show here.

vendor/github.com/charlievieth/fastwalk/internal/dirent/dirent_dragonfly.godeleted−54

This diff is too big to show here.

vendor/github.com/charlievieth/fastwalk/internal/dirent/dirent_freebsd.godeleted−46

This diff is too big to show here.

vendor/github.com/charlievieth/fastwalk/internal/dirent/dirent_js.godeleted−27

This diff is too big to show here.

vendor/github.com/charlievieth/fastwalk/internal/dirent/dirent_linux.godeleted−50

This diff is too big to show here.

vendor/github.com/charlievieth/fastwalk/internal/dirent/dirent_netbsd.godeleted−46

This diff is too big to show here.

vendor/github.com/charlievieth/fastwalk/internal/dirent/dirent_openbsd.godeleted−46

This diff is too big to show here.

vendor/github.com/charlievieth/fastwalk/internal/dirent/dirent_solaris.godeleted−29

This diff is too big to show here.

vendor/github.com/charlievieth/fastwalk/internal/dirent/doc.godeleted−2

This diff is too big to show here.

vendor/github.com/charlievieth/fastwalk/internal/dirent/endian_big.godeleted−9

This diff is too big to show here.

vendor/github.com/charlievieth/fastwalk/internal/dirent/endian_little.godeleted−9

This diff is too big to show here.

vendor/github.com/charlievieth/fastwalk/internal/fmtdirent/fmtdirent_go120.godeleted−31

This diff is too big to show here.

vendor/github.com/charlievieth/fastwalk/internal/fmtdirent/fmtdirent_go121.godeleted−15

This diff is too big to show here.

vendor/github.com/charlievieth/fastwalk/zsyscall_darwin.godeleted−93

This diff is too big to show here.

vendor/github.com/charlievieth/fastwalk/zsyscall_darwin_amd64.1_13.sdeleted−22

This diff is too big to show here.

vendor/github.com/charlievieth/fastwalk/zsyscall_darwin_arm64.1_13.sdeleted−22

This diff is too big to show here.

vendor/github.com/charmbracelet/bubbles/v2/LICENSEdeleted−21

This diff is too big to show here.

vendor/github.com/charmbracelet/bubbles/v2/cursor/cursor.godeleted−241

This diff is too big to show here.

vendor/github.com/charmbracelet/bubbles/v2/filepicker/filepicker.godeleted−526

This diff is too big to show here.

vendor/github.com/charmbracelet/bubbles/v2/filepicker/hidden_unix.godeleted−11

This diff is too big to show here.

vendor/github.com/charmbracelet/bubbles/v2/filepicker/hidden_windows.godeleted−21

This diff is too big to show here.

vendor/github.com/charmbracelet/bubbles/v2/help/help.godeleted−243

This diff is too big to show here.

vendor/github.com/charmbracelet/bubbles/v2/internal/memoization/memoization.godeleted−125

This diff is too big to show here.

vendor/github.com/charmbracelet/bubbles/v2/internal/runeutil/runeutil.godeleted−102

This diff is too big to show here.

vendor/github.com/charmbracelet/bubbles/v2/key/key.godeleted−140

This diff is too big to show here.

vendor/github.com/charmbracelet/bubbles/v2/spinner/spinner.godeleted−211

This diff is too big to show here.

vendor/github.com/charmbracelet/bubbles/v2/textarea/textarea.godeleted−1727

This diff is too big to show here.

vendor/github.com/charmbracelet/bubbles/v2/textinput/styles.godeleted−96

This diff is too big to show here.

vendor/github.com/charmbracelet/bubbles/v2/textinput/textinput.godeleted−968

This diff is too big to show here.

vendor/github.com/charmbracelet/bubbles/v2/viewport/highlight.godeleted−141

This diff is too big to show here.

vendor/github.com/charmbracelet/bubbles/v2/viewport/keymap.godeleted−58

This diff is too big to show here.

vendor/github.com/charmbracelet/bubbles/v2/viewport/viewport.godeleted−754

This diff is too big to show here.

vendor/github.com/charmbracelet/bubbletea/v2/.gitattributesdeleted−1

This diff is too big to show here.

vendor/github.com/charmbracelet/bubbletea/v2/.gitignoredeleted−23

This diff is too big to show here.

vendor/github.com/charmbracelet/bubbletea/v2/.golangci.ymldeleted−40

This diff is too big to show here.

vendor/github.com/charmbracelet/bubbletea/v2/.goreleaser.ymldeleted−5

This diff is too big to show here.

vendor/github.com/charmbracelet/bubbletea/v2/LICENSEdeleted−21

This diff is too big to show here.

vendor/github.com/charmbracelet/bubbletea/v2/README.mddeleted−411

This diff is too big to show here.

vendor/github.com/charmbracelet/bubbletea/v2/Taskfile.yamldeleted−14

This diff is too big to show here.

vendor/github.com/charmbracelet/bubbletea/v2/clipboard.godeleted−69

This diff is too big to show here.

vendor/github.com/charmbracelet/bubbletea/v2/color.godeleted−121

This diff is too big to show here.

vendor/github.com/charmbracelet/bubbletea/v2/commands.godeleted−186

This diff is too big to show here.

vendor/github.com/charmbracelet/bubbletea/v2/cursed_renderer.godeleted−465

This diff is too big to show here.

vendor/github.com/charmbracelet/bubbletea/v2/cursor.godeleted−26

This diff is too big to show here.

vendor/github.com/charmbracelet/bubbletea/v2/environ.godeleted−34

This diff is too big to show here.

vendor/github.com/charmbracelet/bubbletea/v2/exec.godeleted−133

This diff is too big to show here.

vendor/github.com/charmbracelet/bubbletea/v2/focus.godeleted−9

This diff is too big to show here.

vendor/github.com/charmbracelet/bubbletea/v2/input.godeleted−67

This diff is too big to show here.

vendor/github.com/charmbracelet/bubbletea/v2/key.godeleted−371

This diff is too big to show here.

vendor/github.com/charmbracelet/bubbletea/v2/keyboard.godeleted−160

This diff is too big to show here.

vendor/github.com/charmbracelet/bubbletea/v2/logging.godeleted−53

This diff is too big to show here.

vendor/github.com/charmbracelet/bubbletea/v2/mod.godeleted−27

This diff is too big to show here.

vendor/github.com/charmbracelet/bubbletea/v2/mode.godeleted−8

This diff is too big to show here.

vendor/github.com/charmbracelet/bubbletea/v2/mouse.godeleted−144

This diff is too big to show here.

vendor/github.com/charmbracelet/bubbletea/v2/nil_renderer.godeleted−71

This diff is too big to show here.

vendor/github.com/charmbracelet/bubbletea/v2/options.godeleted−302

This diff is too big to show here.

vendor/github.com/charmbracelet/bubbletea/v2/paste.godeleted−13

This diff is too big to show here.

vendor/github.com/charmbracelet/bubbletea/v2/profile.godeleted−15

This diff is too big to show here.

vendor/github.com/charmbracelet/bubbletea/v2/raw.godeleted−37

This diff is too big to show here.

vendor/github.com/charmbracelet/bubbletea/v2/renderer.godeleted−127

This diff is too big to show here.

vendor/github.com/charmbracelet/bubbletea/v2/screen.godeleted−154

This diff is too big to show here.

vendor/github.com/charmbracelet/bubbletea/v2/signals_unix.godeleted−33

This diff is too big to show here.

vendor/github.com/charmbracelet/bubbletea/v2/signals_windows.godeleted−10

This diff is too big to show here.

vendor/github.com/charmbracelet/bubbletea/v2/standard_renderer.godeleted−387

This diff is too big to show here.

vendor/github.com/charmbracelet/bubbletea/v2/tea.godeleted−1492

This diff is too big to show here.

vendor/github.com/charmbracelet/bubbletea/v2/termcap.godeleted−41

This diff is too big to show here.

vendor/github.com/charmbracelet/bubbletea/v2/termios_bsd.godeleted−13

This diff is too big to show here.

vendor/github.com/charmbracelet/bubbletea/v2/termios_other.godeleted−8

This diff is too big to show here.

vendor/github.com/charmbracelet/bubbletea/v2/termios_unix.godeleted−14

This diff is too big to show here.

vendor/github.com/charmbracelet/bubbletea/v2/tty.godeleted−179

This diff is too big to show here.

vendor/github.com/charmbracelet/bubbletea/v2/tty_unix.godeleted−54

This diff is too big to show here.

vendor/github.com/charmbracelet/bubbletea/v2/tty_windows.godeleted−74

This diff is too big to show here.

vendor/github.com/charmbracelet/bubbletea/v2/util.godeleted−8

This diff is too big to show here.

vendor/github.com/charmbracelet/bubbletea/v2/xterm.godeleted−14

This diff is too big to show here.

vendor/github.com/charmbracelet/colorprofile/.golangci.ymldeleted−41

This diff is too big to show here.

vendor/github.com/charmbracelet/colorprofile/.goreleaser.ymldeleted−6

This diff is too big to show here.

vendor/github.com/charmbracelet/colorprofile/LICENSEdeleted−21

This diff is too big to show here.

vendor/github.com/charmbracelet/colorprofile/README.mddeleted−103

This diff is too big to show here.

vendor/github.com/charmbracelet/colorprofile/doc.godeleted−4

This diff is too big to show here.

vendor/github.com/charmbracelet/colorprofile/env.godeleted−293

This diff is too big to show here.

vendor/github.com/charmbracelet/colorprofile/env_other.godeleted−8

This diff is too big to show here.

vendor/github.com/charmbracelet/colorprofile/env_windows.godeleted−45

This diff is too big to show here.

vendor/github.com/charmbracelet/colorprofile/profile.godeleted−399

This diff is too big to show here.

vendor/github.com/charmbracelet/colorprofile/writer.godeleted−169

This diff is too big to show here.

vendor/github.com/charmbracelet/fang/.gitignoredeleted−2

This diff is too big to show here.

vendor/github.com/charmbracelet/fang/.golangci.ymldeleted−40

This diff is too big to show here.

vendor/github.com/charmbracelet/fang/.goreleaser.ymldeleted−5

This diff is too big to show here.

vendor/github.com/charmbracelet/fang/LICENSE.mddeleted−21

This diff is too big to show here.

vendor/github.com/charmbracelet/fang/README.mddeleted−92

This diff is too big to show here.

vendor/github.com/charmbracelet/fang/Taskfile.ymldeleted−7

This diff is too big to show here.

vendor/github.com/charmbracelet/fang/fang.godeleted−212

This diff is too big to show here.

vendor/github.com/charmbracelet/fang/help.godeleted−458

This diff is too big to show here.

vendor/github.com/charmbracelet/fang/theme.godeleted−208

This diff is too big to show here.

vendor/github.com/charmbracelet/glamour/v2/.editorconfigdeleted−18

This diff is too big to show here.

vendor/github.com/charmbracelet/glamour/v2/.gitattributesdeleted−2

This diff is too big to show here.

vendor/github.com/charmbracelet/glamour/v2/.gitignoredeleted−2

This diff is too big to show here.

vendor/github.com/charmbracelet/glamour/v2/.golangci.ymldeleted−49

This diff is too big to show here.

vendor/github.com/charmbracelet/glamour/v2/.goreleaser.ymldeleted−6

This diff is too big to show here.

vendor/github.com/charmbracelet/glamour/v2/CONTRIBUTING.mddeleted−23

This diff is too big to show here.

vendor/github.com/charmbracelet/glamour/v2/LICENSEdeleted−21

This diff is too big to show here.

vendor/github.com/charmbracelet/glamour/v2/README.mddeleted−96

This diff is too big to show here.

vendor/github.com/charmbracelet/glamour/v2/Taskfile.ymldeleted−25

This diff is too big to show here.

vendor/github.com/charmbracelet/glamour/v2/ansi/ansi.godeleted−3

This diff is too big to show here.

vendor/github.com/charmbracelet/glamour/v2/ansi/baseelement.godeleted−157

This diff is too big to show here.

vendor/github.com/charmbracelet/glamour/v2/ansi/blockelement.godeleted−65

This diff is too big to show here.

vendor/github.com/charmbracelet/glamour/v2/ansi/blockstack.godeleted−95

This diff is too big to show here.

vendor/github.com/charmbracelet/glamour/v2/ansi/codeblock.godeleted−150

This diff is too big to show here.

vendor/github.com/charmbracelet/glamour/v2/ansi/codespan.godeleted−15

This diff is too big to show here.

vendor/github.com/charmbracelet/glamour/v2/ansi/context.godeleted−38

This diff is too big to show here.

vendor/github.com/charmbracelet/glamour/v2/ansi/elements.godeleted−479

This diff is too big to show here.

vendor/github.com/charmbracelet/glamour/v2/ansi/emphasis.godeleted−47

This diff is too big to show here.

vendor/github.com/charmbracelet/glamour/v2/ansi/heading.godeleted−79

This diff is too big to show here.

vendor/github.com/charmbracelet/glamour/v2/ansi/image.godeleted−57

This diff is too big to show here.

vendor/github.com/charmbracelet/glamour/v2/ansi/link.godeleted−112

This diff is too big to show here.

vendor/github.com/charmbracelet/glamour/v2/ansi/listitem.godeleted−29

This diff is too big to show here.

vendor/github.com/charmbracelet/glamour/v2/ansi/margin.godeleted−189

This diff is too big to show here.

vendor/github.com/charmbracelet/glamour/v2/ansi/paragraph.godeleted−62

This diff is too big to show here.

vendor/github.com/charmbracelet/glamour/v2/ansi/renderer.godeleted−166

This diff is too big to show here.

vendor/github.com/charmbracelet/glamour/v2/ansi/style.godeleted−252

This diff is too big to show here.

vendor/github.com/charmbracelet/glamour/v2/ansi/table.godeleted−205

This diff is too big to show here.

vendor/github.com/charmbracelet/glamour/v2/ansi/table_links.godeleted−234

This diff is too big to show here.

vendor/github.com/charmbracelet/glamour/v2/ansi/task.godeleted−27

This diff is too big to show here.

vendor/github.com/charmbracelet/glamour/v2/ansi/templatehelper.godeleted−86

This diff is too big to show here.

vendor/github.com/charmbracelet/glamour/v2/examples.shdeleted−19

This diff is too big to show here.

vendor/github.com/charmbracelet/glamour/v2/gallery.shdeleted−23

This diff is too big to show here.

vendor/github.com/charmbracelet/glamour/v2/glamour.godeleted−294

This diff is too big to show here.

vendor/github.com/charmbracelet/glamour/v2/internal/autolink/autolink.godeleted−55

This diff is too big to show here.

vendor/github.com/charmbracelet/glamour/v2/styles/README.mddeleted−565

This diff is too big to show here.

vendor/github.com/charmbracelet/glamour/v2/styles/ascii.jsondeleted−83

This diff is too big to show here.

vendor/github.com/charmbracelet/glamour/v2/styles/dark.jsondeleted−191

This diff is too big to show here.

vendor/github.com/charmbracelet/glamour/v2/styles/dracula.godeleted−216

This diff is too big to show here.

vendor/github.com/charmbracelet/glamour/v2/styles/dracula.jsondeleted−188

This diff is too big to show here.

vendor/github.com/charmbracelet/glamour/v2/styles/light.jsondeleted−190

This diff is too big to show here.

vendor/github.com/charmbracelet/glamour/v2/styles/notty.jsondeleted−83

This diff is too big to show here.

vendor/github.com/charmbracelet/glamour/v2/styles/pink.jsondeleted−90

This diff is too big to show here.

vendor/github.com/charmbracelet/glamour/v2/styles/styles.godeleted−680

This diff is too big to show here.

vendor/github.com/charmbracelet/glamour/v2/styles/tokyo-night.godeleted−209

This diff is too big to show here.

vendor/github.com/charmbracelet/glamour/v2/styles/tokyo_night.jsondeleted−182

This diff is too big to show here.

vendor/github.com/charmbracelet/lipgloss/v2/.editorconfigdeleted−18

This diff is too big to show here.

vendor/github.com/charmbracelet/lipgloss/v2/.gitattributesdeleted−1

This diff is too big to show here.

vendor/github.com/charmbracelet/lipgloss/v2/.gitignoredeleted−2

This diff is too big to show here.

vendor/github.com/charmbracelet/lipgloss/v2/.golangci.ymldeleted−49

This diff is too big to show here.

vendor/github.com/charmbracelet/lipgloss/v2/.goreleaser.ymldeleted−5

This diff is too big to show here.

vendor/github.com/charmbracelet/lipgloss/v2/LICENSEdeleted−21

This diff is too big to show here.

vendor/github.com/charmbracelet/lipgloss/v2/README.mddeleted−792

This diff is too big to show here.

vendor/github.com/charmbracelet/lipgloss/v2/Taskfile.yamldeleted−19

This diff is too big to show here.

vendor/github.com/charmbracelet/lipgloss/v2/align.godeleted−82

This diff is too big to show here.

vendor/github.com/charmbracelet/lipgloss/v2/ansi_unix.godeleted−9

This diff is too big to show here.

vendor/github.com/charmbracelet/lipgloss/v2/ansi_windows.godeleted−31

This diff is too big to show here.

vendor/github.com/charmbracelet/lipgloss/v2/borders.godeleted−489

This diff is too big to show here.

vendor/github.com/charmbracelet/lipgloss/v2/canvas.godeleted−298

This diff is too big to show here.

vendor/github.com/charmbracelet/lipgloss/v2/color.godeleted−227

This diff is too big to show here.

vendor/github.com/charmbracelet/lipgloss/v2/get.godeleted−604

This diff is too big to show here.

vendor/github.com/charmbracelet/lipgloss/v2/join.godeleted−175

This diff is too big to show here.

vendor/github.com/charmbracelet/lipgloss/v2/lipgloss.godeleted−3

This diff is too big to show here.

vendor/github.com/charmbracelet/lipgloss/v2/position.godeleted−134

This diff is too big to show here.

vendor/github.com/charmbracelet/lipgloss/v2/query.godeleted−89

This diff is too big to show here.

vendor/github.com/charmbracelet/lipgloss/v2/ranges.godeleted−48

This diff is too big to show here.

vendor/github.com/charmbracelet/lipgloss/v2/runes.godeleted−43

This diff is too big to show here.

vendor/github.com/charmbracelet/lipgloss/v2/set.godeleted−822

This diff is too big to show here.

vendor/github.com/charmbracelet/lipgloss/v2/size.godeleted−40

This diff is too big to show here.

vendor/github.com/charmbracelet/lipgloss/v2/style.godeleted−581

This diff is too big to show here.

vendor/github.com/charmbracelet/lipgloss/v2/table/resizing.godeleted−481

This diff is too big to show here.

vendor/github.com/charmbracelet/lipgloss/v2/table/rows.godeleted−130

This diff is too big to show here.

vendor/github.com/charmbracelet/lipgloss/v2/table/table.godeleted−561

This diff is too big to show here.

vendor/github.com/charmbracelet/lipgloss/v2/table/util.godeleted−44

This diff is too big to show here.

vendor/github.com/charmbracelet/lipgloss/v2/terminal.godeleted−114

This diff is too big to show here.

vendor/github.com/charmbracelet/lipgloss/v2/tree/children.godeleted−100

This diff is too big to show here.

vendor/github.com/charmbracelet/lipgloss/v2/tree/enumerator.godeleted−74

This diff is too big to show here.

vendor/github.com/charmbracelet/lipgloss/v2/tree/renderer.godeleted−142

This diff is too big to show here.

vendor/github.com/charmbracelet/lipgloss/v2/tree/tree.godeleted−369

This diff is too big to show here.

vendor/github.com/charmbracelet/lipgloss/v2/unset.godeleted−338

This diff is too big to show here.

vendor/github.com/charmbracelet/lipgloss/v2/whitespace.godeleted−69

This diff is too big to show here.

vendor/github.com/charmbracelet/lipgloss/v2/writer.godeleted−160

This diff is too big to show here.

vendor/github.com/charmbracelet/log/v2/.gitignoredeleted−17

This diff is too big to show here.

vendor/github.com/charmbracelet/log/v2/.golangci-soft.ymldeleted−40

This diff is too big to show here.

vendor/github.com/charmbracelet/log/v2/.golangci.ymldeleted−28

This diff is too big to show here.

vendor/github.com/charmbracelet/log/v2/.goreleaser.ymldeleted−3

This diff is too big to show here.

vendor/github.com/charmbracelet/log/v2/LICENSEdeleted−21

This diff is too big to show here.

vendor/github.com/charmbracelet/log/v2/README.mddeleted−367

This diff is too big to show here.

vendor/github.com/charmbracelet/log/v2/context.godeleted−23

This diff is too big to show here.

vendor/github.com/charmbracelet/log/v2/formatter.godeleted−27

This diff is too big to show here.

vendor/github.com/charmbracelet/log/v2/json.godeleted−151

This diff is too big to show here.

vendor/github.com/charmbracelet/log/v2/level.godeleted−65

This diff is too big to show here.

vendor/github.com/charmbracelet/log/v2/logfmt.godeleted−32

This diff is too big to show here.

vendor/github.com/charmbracelet/log/v2/logger.godeleted−411

This diff is too big to show here.

vendor/github.com/charmbracelet/log/v2/logger_121.godeleted−71

This diff is too big to show here.

vendor/github.com/charmbracelet/log/v2/logger_no121.godeleted−68

This diff is too big to show here.

vendor/github.com/charmbracelet/log/v2/options.godeleted−61

This diff is too big to show here.

vendor/github.com/charmbracelet/log/v2/pkg.godeleted−248

This diff is too big to show here.

vendor/github.com/charmbracelet/log/v2/stdlog.godeleted−67

This diff is too big to show here.

vendor/github.com/charmbracelet/log/v2/styles.godeleted−83

This diff is too big to show here.

vendor/github.com/charmbracelet/log/v2/text.godeleted−272

This diff is too big to show here.

vendor/github.com/charmbracelet/ultraviolet/.gitattributesdeleted−1

This diff is too big to show here.

vendor/github.com/charmbracelet/ultraviolet/.golangci.ymldeleted−40

This diff is too big to show here.

vendor/github.com/charmbracelet/ultraviolet/.goreleaser.ymldeleted−5

This diff is too big to show here.

vendor/github.com/charmbracelet/ultraviolet/LICENSEdeleted−5

This diff is too big to show here.

vendor/github.com/charmbracelet/ultraviolet/README.mddeleted−27

This diff is too big to show here.

vendor/github.com/charmbracelet/ultraviolet/TUTORIAL.mddeleted−207

This diff is too big to show here.

vendor/github.com/charmbracelet/ultraviolet/border.godeleted−231

This diff is too big to show here.

vendor/github.com/charmbracelet/ultraviolet/buffer.godeleted−612

This diff is too big to show here.

vendor/github.com/charmbracelet/ultraviolet/cancelreader_other.godeleted−14

This diff is too big to show here.

vendor/github.com/charmbracelet/ultraviolet/cancelreader_windows.godeleted−135

This diff is too big to show here.

vendor/github.com/charmbracelet/ultraviolet/cell.godeleted−519

This diff is too big to show here.

vendor/github.com/charmbracelet/ultraviolet/doc.godeleted−6

This diff is too big to show here.

vendor/github.com/charmbracelet/ultraviolet/environ.godeleted−32

This diff is too big to show here.

vendor/github.com/charmbracelet/ultraviolet/event.godeleted−479

This diff is too big to show here.

vendor/github.com/charmbracelet/ultraviolet/input.godeleted−89

This diff is too big to show here.

vendor/github.com/charmbracelet/ultraviolet/key.godeleted−766

This diff is too big to show here.

vendor/github.com/charmbracelet/ultraviolet/key_table.godeleted−664

This diff is too big to show here.

vendor/github.com/charmbracelet/ultraviolet/mouse.godeleted−86

This diff is too big to show here.

vendor/github.com/charmbracelet/ultraviolet/parse.go−1768

This diff is too big to show here.

vendor/github.com/charmbracelet/ultraviolet/styled.go−292

This diff is too big to show here.

vendor/github.com/charmbracelet/ultraviolet/tabstop.go−142

This diff is too big to show here.

vendor/github.com/charmbracelet/ultraviolet/terminal.go−1097

This diff is too big to show here.

vendor/github.com/charmbracelet/ultraviolet/terminal_other.go−17

This diff is too big to show here.

vendor/github.com/charmbracelet/ultraviolet/terminal_reader.go−366

This diff is too big to show here.

vendor/github.com/charmbracelet/ultraviolet/terminal_reader_other.go−18

This diff is too big to show here.

vendor/github.com/charmbracelet/ultraviolet/terminal_reader_windows.go−660

This diff is too big to show here.

vendor/github.com/charmbracelet/ultraviolet/terminal_renderer.go−1584

This diff is too big to show here.

vendor/github.com/charmbracelet/ultraviolet/terminal_renderer_hardscroll.go−275

This diff is too big to show here.

vendor/github.com/charmbracelet/ultraviolet/terminal_renderer_hashmap.go−294

This diff is too big to show here.

vendor/github.com/charmbracelet/ultraviolet/terminal_unix.go−72

This diff is too big to show here.

vendor/github.com/charmbracelet/ultraviolet/terminal_windows.go−93

This diff is too big to show here.

vendor/github.com/charmbracelet/ultraviolet/tty.go−18

This diff is too big to show here.

vendor/github.com/charmbracelet/ultraviolet/tty_other.go−14

This diff is too big to show here.

vendor/github.com/charmbracelet/ultraviolet/tty_unix.go−28

This diff is too big to show here.

vendor/github.com/charmbracelet/ultraviolet/tty_windows.go−27

This diff is too big to show here.

vendor/github.com/charmbracelet/ultraviolet/utils.go−15

This diff is too big to show here.

vendor/github.com/charmbracelet/ultraviolet/uv.go−52

This diff is too big to show here.

vendor/github.com/charmbracelet/ultraviolet/winch.go−29

This diff is too big to show here.

vendor/github.com/charmbracelet/ultraviolet/winch_other.go−15

This diff is too big to show here.

vendor/github.com/charmbracelet/ultraviolet/winch_unix.go−65

This diff is too big to show here.

vendor/github.com/charmbracelet/x/ansi/LICENSE−21

This diff is too big to show here.

vendor/github.com/charmbracelet/x/ansi/ansi.go−11

This diff is too big to show here.

vendor/github.com/charmbracelet/x/ansi/ascii.go−8

This diff is too big to show here.

vendor/github.com/charmbracelet/x/ansi/background.go−178

This diff is too big to show here.

vendor/github.com/charmbracelet/x/ansi/c0.go−79

This diff is too big to show here.

vendor/github.com/charmbracelet/x/ansi/c1.go−72

This diff is too big to show here.

vendor/github.com/charmbracelet/x/ansi/charset.go−55

This diff is too big to show here.

vendor/github.com/charmbracelet/x/ansi/clipboard.go−75

This diff is too big to show here.

vendor/github.com/charmbracelet/x/ansi/color.go−784

This diff is too big to show here.

vendor/github.com/charmbracelet/x/ansi/ctrl.go−156

This diff is too big to show here.

vendor/github.com/charmbracelet/x/ansi/cursor.go−635

This diff is too big to show here.

vendor/github.com/charmbracelet/x/ansi/cwd.go−26

This diff is too big to show here.

vendor/github.com/charmbracelet/x/ansi/doc.go−7

This diff is too big to show here.

vendor/github.com/charmbracelet/x/ansi/finalterm.go−67

This diff is too big to show here.

vendor/github.com/charmbracelet/x/ansi/focus.go−9

This diff is too big to show here.

vendor/github.com/charmbracelet/x/ansi/graphics.go−237

This diff is too big to show here.

vendor/github.com/charmbracelet/x/ansi/hyperlink.go−28

This diff is too big to show here.

vendor/github.com/charmbracelet/x/ansi/iterm2.go−18

This diff is too big to show here.

vendor/github.com/charmbracelet/x/ansi/keypad.go−28

This diff is too big to show here.

vendor/github.com/charmbracelet/x/ansi/kitty.go−90

This diff is too big to show here.

vendor/github.com/charmbracelet/x/ansi/kitty/decoder.go−85

This diff is too big to show here.

vendor/github.com/charmbracelet/x/ansi/kitty/encoder.go−64

This diff is too big to show here.

vendor/github.com/charmbracelet/x/ansi/kitty/graphics.go−414

This diff is too big to show here.

vendor/github.com/charmbracelet/x/ansi/kitty/options.go−367

This diff is too big to show here.

vendor/github.com/charmbracelet/x/ansi/method.go−172

This diff is too big to show here.

vendor/github.com/charmbracelet/x/ansi/mode.go−778

This diff is too big to show here.

vendor/github.com/charmbracelet/x/ansi/modes.go−65

This diff is too big to show here.

vendor/github.com/charmbracelet/x/ansi/mouse.go−172

This diff is too big to show here.

vendor/github.com/charmbracelet/x/ansi/notification.go−13

This diff is too big to show here.

vendor/github.com/charmbracelet/x/ansi/parser.go−417

This diff is too big to show here.

vendor/github.com/charmbracelet/x/ansi/parser/const.go−78

This diff is too big to show here.

vendor/github.com/charmbracelet/x/ansi/parser/seq.go−136

This diff is too big to show here.

vendor/github.com/charmbracelet/x/ansi/parser/transition_table.go−273

This diff is too big to show here.

vendor/github.com/charmbracelet/x/ansi/parser_decode.go−524

This diff is too big to show here.

vendor/github.com/charmbracelet/x/ansi/parser_handler.go−60

This diff is too big to show here.

vendor/github.com/charmbracelet/x/ansi/parser_sync.go−29

This diff is too big to show here.

vendor/github.com/charmbracelet/x/ansi/passthrough.go−60

This diff is too big to show here.

vendor/github.com/charmbracelet/x/ansi/paste.go−7

This diff is too big to show here.

vendor/github.com/charmbracelet/x/ansi/reset.go−11

This diff is too big to show here.

vendor/github.com/charmbracelet/x/ansi/screen.go−410

This diff is too big to show here.

vendor/github.com/charmbracelet/x/ansi/sgr.go−79

This diff is too big to show here.

vendor/github.com/charmbracelet/x/ansi/status.go−144

This diff is too big to show here.

vendor/github.com/charmbracelet/x/ansi/style.go−673

This diff is too big to show here.

vendor/github.com/charmbracelet/x/ansi/termcap.go−41

This diff is too big to show here.

vendor/github.com/charmbracelet/x/ansi/title.go−48

This diff is too big to show here.

vendor/github.com/charmbracelet/x/ansi/truncate.go−299

This diff is too big to show here.

vendor/github.com/charmbracelet/x/ansi/util.go−106

This diff is too big to show here.

vendor/github.com/charmbracelet/x/ansi/width.go−113

This diff is too big to show here.

vendor/github.com/charmbracelet/x/ansi/winop.go−53

This diff is too big to show here.

vendor/github.com/charmbracelet/x/ansi/wrap.go−474

This diff is too big to show here.

vendor/github.com/charmbracelet/x/ansi/xterm.go−138

This diff is too big to show here.

vendor/github.com/charmbracelet/x/cellbuf/LICENSE−21

This diff is too big to show here.

vendor/github.com/charmbracelet/x/cellbuf/buffer.go−473

This diff is too big to show here.

vendor/github.com/charmbracelet/x/cellbuf/cell.go−508

This diff is too big to show here.

vendor/github.com/charmbracelet/x/cellbuf/errors.go−6

This diff is too big to show here.

vendor/github.com/charmbracelet/x/cellbuf/geom.go−21

This diff is too big to show here.

vendor/github.com/charmbracelet/x/cellbuf/hardscroll.go−273

This diff is too big to show here.

vendor/github.com/charmbracelet/x/cellbuf/hashmap.go−301

This diff is too big to show here.

vendor/github.com/charmbracelet/x/cellbuf/link.go−14

This diff is too big to show here.

vendor/github.com/charmbracelet/x/cellbuf/pen.go−88

This diff is too big to show here.

vendor/github.com/charmbracelet/x/cellbuf/screen.go−1506

This diff is too big to show here.

vendor/github.com/charmbracelet/x/cellbuf/sequence.go−131

This diff is too big to show here.

vendor/github.com/charmbracelet/x/cellbuf/style.go−31

This diff is too big to show here.

vendor/github.com/charmbracelet/x/cellbuf/tabstop.go−137

This diff is too big to show here.

vendor/github.com/charmbracelet/x/cellbuf/utils.go−38

This diff is too big to show here.

vendor/github.com/charmbracelet/x/cellbuf/wrap.go−194

This diff is too big to show here.

vendor/github.com/charmbracelet/x/cellbuf/writer.go−339

This diff is too big to show here.

vendor/github.com/charmbracelet/x/exp/charmtone/LICENSE−21

This diff is too big to show here.

vendor/github.com/charmbracelet/x/exp/charmtone/charmtone.go−408

This diff is too big to show here.

vendor/github.com/charmbracelet/x/exp/golden/LICENSE−21

This diff is too big to show here.

vendor/github.com/charmbracelet/x/exp/golden/golden.go−82

This diff is too big to show here.

vendor/github.com/charmbracelet/x/exp/slice/LICENSE−21

This diff is too big to show here.

vendor/github.com/charmbracelet/x/exp/slice/slice.go−120

This diff is too big to show here.

vendor/github.com/charmbracelet/x/term/LICENSE−21

This diff is too big to show here.

vendor/github.com/charmbracelet/x/term/term.go−49

This diff is too big to show here.

vendor/github.com/charmbracelet/x/term/term_other.go−39

This diff is too big to show here.

vendor/github.com/charmbracelet/x/term/term_unix.go−96

This diff is too big to show here.

vendor/github.com/charmbracelet/x/term/term_unix_bsd.go−11

This diff is too big to show here.

vendor/github.com/charmbracelet/x/term/term_unix_other.go−11

This diff is too big to show here.

vendor/github.com/charmbracelet/x/term/term_windows.go−87

This diff is too big to show here.

vendor/github.com/charmbracelet/x/term/terminal.go−12

This diff is too big to show here.

vendor/github.com/charmbracelet/x/term/util.go−47

This diff is too big to show here.

vendor/github.com/charmbracelet/x/termios/LICENSE−21

This diff is too big to show here.

vendor/github.com/charmbracelet/x/termios/bit_bsd.go−7

This diff is too big to show here.

vendor/github.com/charmbracelet/x/termios/bit_darwin.go−7

This diff is too big to show here.

vendor/github.com/charmbracelet/x/termios/bit_other.go−7

This diff is too big to show here.

vendor/github.com/charmbracelet/x/termios/syscalls_bsd.go−11

This diff is too big to show here.

vendor/github.com/charmbracelet/x/termios/syscalls_darwin.go−10

This diff is too big to show here.

vendor/github.com/charmbracelet/x/termios/syscalls_linux.go−14

This diff is too big to show here.

vendor/github.com/charmbracelet/x/termios/termios.go−249

This diff is too big to show here.

vendor/github.com/charmbracelet/x/termios/termios_bsd.go−13

This diff is too big to show here.

vendor/github.com/charmbracelet/x/termios/termios_linux.go−13

This diff is too big to show here.

vendor/github.com/charmbracelet/x/termios/termios_other.go−15

This diff is too big to show here.

vendor/github.com/charmbracelet/x/termios/termios_solaris.go−26

This diff is too big to show here.

vendor/github.com/charmbracelet/x/windows/LICENSE−21

This diff is too big to show here.

vendor/github.com/charmbracelet/x/windows/doc.go−3

This diff is too big to show here.

vendor/github.com/charmbracelet/x/windows/syscall_windows.go−12

This diff is too big to show here.

vendor/github.com/charmbracelet/x/windows/types_windows.go−351

This diff is too big to show here.

vendor/github.com/charmbracelet/x/windows/zsyscall_windows.go−77

This diff is too big to show here.

vendor/github.com/davecgh/go-spew/LICENSE−15

This diff is too big to show here.

vendor/github.com/davecgh/go-spew/spew/bypass.go−145

This diff is too big to show here.

vendor/github.com/davecgh/go-spew/spew/bypasssafe.go−38

This diff is too big to show here.

vendor/github.com/davecgh/go-spew/spew/common.go−341

This diff is too big to show here.

vendor/github.com/davecgh/go-spew/spew/config.go−306

This diff is too big to show here.

vendor/github.com/davecgh/go-spew/spew/doc.go−211

This diff is too big to show here.

vendor/github.com/davecgh/go-spew/spew/dump.go−509

This diff is too big to show here.

vendor/github.com/davecgh/go-spew/spew/format.go−419

This diff is too big to show here.

vendor/github.com/davecgh/go-spew/spew/spew.go−148

This diff is too big to show here.

vendor/github.com/disintegration/gift/.travis.yml−17

This diff is too big to show here.

vendor/github.com/disintegration/gift/LICENSE−21

This diff is too big to show here.

vendor/github.com/disintegration/gift/README.md−251

This diff is too big to show here.

vendor/github.com/disintegration/gift/colors.go−511

This diff is too big to show here.

vendor/github.com/disintegration/gift/convolution.go−578

This diff is too big to show here.

vendor/github.com/disintegration/gift/effects.go−87

This diff is too big to show here.

vendor/github.com/disintegration/gift/gift.go−219

This diff is too big to show here.

vendor/github.com/disintegration/gift/pixels.go−493

This diff is too big to show here.

vendor/github.com/disintegration/gift/rank.go−223

This diff is too big to show here.

vendor/github.com/disintegration/gift/resize.go−462

This diff is too big to show here.

vendor/github.com/disintegration/gift/transform.go−498

This diff is too big to show here.

vendor/github.com/disintegration/gift/utils.go−242

This diff is too big to show here.

vendor/github.com/disintegration/imageorient/LICENSE−21

This diff is too big to show here.

vendor/github.com/disintegration/imageorient/README.md−61

This diff is too big to show here.

vendor/github.com/disintegration/imageorient/imageorient.go−209

This diff is too big to show here.

vendor/github.com/dlclark/regexp2/.gitignore−27

This diff is too big to show here.

vendor/github.com/dlclark/regexp2/.travis.yml−7

This diff is too big to show here.

vendor/github.com/dlclark/regexp2/ATTRIB−133

This diff is too big to show here.

vendor/github.com/dlclark/regexp2/LICENSE−21

This diff is too big to show here.

vendor/github.com/dlclark/regexp2/README.md−174

This diff is too big to show here.

vendor/github.com/dlclark/regexp2/fastclock.go−129

This diff is too big to show here.

vendor/github.com/dlclark/regexp2/match.go−349

This diff is too big to show here.

vendor/github.com/dlclark/regexp2/regexp.go−395

This diff is too big to show here.

vendor/github.com/dlclark/regexp2/replace.go−177

This diff is too big to show here.

vendor/github.com/dlclark/regexp2/runner.go−1613

This diff is too big to show here.

vendor/github.com/dlclark/regexp2/syntax/charclass.go−865

This diff is too big to show here.

vendor/github.com/dlclark/regexp2/syntax/code.go−274

This diff is too big to show here.

vendor/github.com/dlclark/regexp2/syntax/escape.go−94

This diff is too big to show here.

vendor/github.com/dlclark/regexp2/syntax/fuzz.go−20

This diff is too big to show here.

vendor/github.com/dlclark/regexp2/syntax/parser.go−2262

This diff is too big to show here.

vendor/github.com/dlclark/regexp2/syntax/prefix.go−896

This diff is too big to show here.

vendor/github.com/dlclark/regexp2/syntax/replacerdata.go−87

This diff is too big to show here.

vendor/github.com/dlclark/regexp2/syntax/tree.go−654

This diff is too big to show here.

vendor/github.com/dlclark/regexp2/syntax/writer.go−500

This diff is too big to show here.

vendor/github.com/dlclark/regexp2/testoutput1−7061

This diff is too big to show here.

vendor/github.com/dustin/go-humanize/.travis.yml−21

This diff is too big to show here.

vendor/github.com/dustin/go-humanize/LICENSE−21

This diff is too big to show here.

vendor/github.com/dustin/go-humanize/README.markdown−124

This diff is too big to show here.

vendor/github.com/dustin/go-humanize/big.go−31

This diff is too big to show here.

vendor/github.com/dustin/go-humanize/bigbytes.go−189

This diff is too big to show here.

vendor/github.com/dustin/go-humanize/bytes.go−143

This diff is too big to show here.

vendor/github.com/dustin/go-humanize/comma.go−116

This diff is too big to show here.

vendor/github.com/dustin/go-humanize/commaf.go−41

This diff is too big to show here.

vendor/github.com/dustin/go-humanize/ftoa.go−49

This diff is too big to show here.

vendor/github.com/dustin/go-humanize/humanize.go−8

This diff is too big to show here.

vendor/github.com/dustin/go-humanize/number.go−192

This diff is too big to show here.

vendor/github.com/dustin/go-humanize/ordinals.go−25

This diff is too big to show here.

vendor/github.com/dustin/go-humanize/si.go−127

This diff is too big to show here.

vendor/github.com/dustin/go-humanize/times.go−117

This diff is too big to show here.

vendor/github.com/felixge/httpsnoop/.gitignore

This diff is too big to show here.

vendor/github.com/felixge/httpsnoop/LICENSE.txt−19

This diff is too big to show here.

vendor/github.com/felixge/httpsnoop/Makefile−10

This diff is too big to show here.

vendor/github.com/felixge/httpsnoop/README.md−95

This diff is too big to show here.

vendor/github.com/felixge/httpsnoop/capture_metrics.go−86

This diff is too big to show here.

vendor/github.com/felixge/httpsnoop/docs.go−10

This diff is too big to show here.

vendor/github.com/felixge/httpsnoop/wrap_generated_gteq_1.8.go−436

This diff is too big to show here.

vendor/github.com/felixge/httpsnoop/wrap_generated_lt_1.8.go−278

This diff is too big to show here.

vendor/github.com/fsnotify/fsnotify/.cirrus.yml−14

This diff is too big to show here.

vendor/github.com/fsnotify/fsnotify/.gitignore−10

This diff is too big to show here.

vendor/github.com/fsnotify/fsnotify/.mailmap−2

This diff is too big to show here.

vendor/github.com/fsnotify/fsnotify/CHANGELOG.md−569

This diff is too big to show here.

vendor/github.com/fsnotify/fsnotify/CONTRIBUTING.md−144

This diff is too big to show here.

vendor/github.com/fsnotify/fsnotify/LICENSE−25

This diff is too big to show here.

vendor/github.com/fsnotify/fsnotify/README.md−184

This diff is too big to show here.

vendor/github.com/fsnotify/fsnotify/backend_fen.go−484

This diff is too big to show here.

vendor/github.com/fsnotify/fsnotify/backend_inotify.go−658

This diff is too big to show here.

vendor/github.com/fsnotify/fsnotify/backend_kqueue.go−733

This diff is too big to show here.

vendor/github.com/fsnotify/fsnotify/backend_other.go−23

This diff is too big to show here.

vendor/github.com/fsnotify/fsnotify/backend_windows.go−682

This diff is too big to show here.

vendor/github.com/fsnotify/fsnotify/fsnotify.go−494

This diff is too big to show here.

vendor/github.com/fsnotify/fsnotify/internal/darwin.go−39

This diff is too big to show here.

vendor/github.com/fsnotify/fsnotify/internal/debug_darwin.go−57

This diff is too big to show here.

vendor/github.com/fsnotify/fsnotify/internal/debug_dragonfly.go−33

This diff is too big to show here.

vendor/github.com/fsnotify/fsnotify/internal/debug_freebsd.go−42

This diff is too big to show here.

vendor/github.com/fsnotify/fsnotify/internal/debug_kqueue.go−32

This diff is too big to show here.

vendor/github.com/fsnotify/fsnotify/internal/debug_linux.go−56

This diff is too big to show here.

vendor/github.com/fsnotify/fsnotify/internal/debug_netbsd.go−25

This diff is too big to show here.

vendor/github.com/fsnotify/fsnotify/internal/debug_openbsd.go−28

This diff is too big to show here.

vendor/github.com/fsnotify/fsnotify/internal/debug_solaris.go−45

This diff is too big to show here.

vendor/github.com/fsnotify/fsnotify/internal/debug_windows.go−40

This diff is too big to show here.

vendor/github.com/fsnotify/fsnotify/internal/freebsd.go−31

This diff is too big to show here.

vendor/github.com/fsnotify/fsnotify/internal/internal.go−2

This diff is too big to show here.

vendor/github.com/fsnotify/fsnotify/internal/unix.go−31

This diff is too big to show here.

vendor/github.com/fsnotify/fsnotify/internal/unix2.go−7

This diff is too big to show here.

vendor/github.com/fsnotify/fsnotify/internal/windows.go−41

This diff is too big to show here.

vendor/github.com/fsnotify/fsnotify/system_bsd.go−7

This diff is too big to show here.

vendor/github.com/fsnotify/fsnotify/system_darwin.go−8

This diff is too big to show here.

vendor/github.com/go-logfmt/logfmt/.gitignore−1

This diff is too big to show here.

vendor/github.com/go-logfmt/logfmt/CHANGELOG.md−82

This diff is too big to show here.

vendor/github.com/go-logfmt/logfmt/LICENSE−22

This diff is too big to show here.

vendor/github.com/go-logfmt/logfmt/README.md−41

This diff is too big to show here.

vendor/github.com/go-logfmt/logfmt/decode.go−254

This diff is too big to show here.

vendor/github.com/go-logfmt/logfmt/doc.go−6

This diff is too big to show here.

vendor/github.com/go-logfmt/logfmt/encode.go−322

This diff is too big to show here.

vendor/github.com/go-logfmt/logfmt/jsonstring.go−277

This diff is too big to show here.

vendor/github.com/go-logr/logr/.golangci.yaml−26

This diff is too big to show here.

vendor/github.com/go-logr/logr/CHANGELOG.md−6

This diff is too big to show here.

vendor/github.com/go-logr/logr/CONTRIBUTING.md−17

This diff is too big to show here.

vendor/github.com/go-logr/logr/LICENSE−201

This diff is too big to show here.

vendor/github.com/go-logr/logr/README.md−407

This diff is too big to show here.

vendor/github.com/go-logr/logr/SECURITY.md−18

This diff is too big to show here.

vendor/github.com/go-logr/logr/context.go−33

This diff is too big to show here.

vendor/github.com/go-logr/logr/context_noslog.go−49

This diff is too big to show here.

vendor/github.com/go-logr/logr/context_slog.go−83

This diff is too big to show here.

vendor/github.com/go-logr/logr/discard.go−24

This diff is too big to show here.

vendor/github.com/go-logr/logr/funcr/funcr.go−914

This diff is too big to show here.

vendor/github.com/go-logr/logr/funcr/slogsink.go−105

This diff is too big to show here.

vendor/github.com/go-logr/logr/logr.go−520

This diff is too big to show here.

vendor/github.com/go-logr/logr/sloghandler.go−192

This diff is too big to show here.

vendor/github.com/go-logr/logr/slogr.go−100

This diff is too big to show here.

vendor/github.com/go-logr/logr/slogsink.go−120

This diff is too big to show here.

vendor/github.com/go-logr/stdr/LICENSE−201

This diff is too big to show here.

vendor/github.com/go-logr/stdr/README.md−6

This diff is too big to show here.

vendor/github.com/go-logr/stdr/stdr.go−170

This diff is too big to show here.

vendor/github.com/golang-jwt/jwt/v5/.gitignore−4

This diff is too big to show here.

vendor/github.com/golang-jwt/jwt/v5/LICENSE−9

This diff is too big to show here.

vendor/github.com/golang-jwt/jwt/v5/MIGRATION_GUIDE.md−195

This diff is too big to show here.

vendor/github.com/golang-jwt/jwt/v5/README.md−167

This diff is too big to show here.

vendor/github.com/golang-jwt/jwt/v5/SECURITY.md−19

This diff is too big to show here.

vendor/github.com/golang-jwt/jwt/v5/VERSION_HISTORY.md−137

This diff is too big to show here.

vendor/github.com/golang-jwt/jwt/v5/claims.go−16

This diff is too big to show here.

vendor/github.com/golang-jwt/jwt/v5/doc.go−4

This diff is too big to show here.

vendor/github.com/golang-jwt/jwt/v5/ecdsa.go−134

This diff is too big to show here.

vendor/github.com/golang-jwt/jwt/v5/ecdsa_utils.go−69

This diff is too big to show here.

vendor/github.com/golang-jwt/jwt/v5/ed25519.go−79

This diff is too big to show here.

vendor/github.com/golang-jwt/jwt/v5/ed25519_utils.go−64

This diff is too big to show here.

vendor/github.com/golang-jwt/jwt/v5/errors.go−49

This diff is too big to show here.

vendor/github.com/golang-jwt/jwt/v5/errors_go1_20.go−47

This diff is too big to show here.

vendor/github.com/golang-jwt/jwt/v5/errors_go_other.go−78

This diff is too big to show here.

vendor/github.com/golang-jwt/jwt/v5/hmac.go−104

This diff is too big to show here.

vendor/github.com/golang-jwt/jwt/v5/map_claims.go−109

This diff is too big to show here.

vendor/github.com/golang-jwt/jwt/v5/none.go−50

This diff is too big to show here.

vendor/github.com/golang-jwt/jwt/v5/parser.go−268

This diff is too big to show here.

vendor/github.com/golang-jwt/jwt/v5/parser_option.go−128

This diff is too big to show here.

vendor/github.com/golang-jwt/jwt/v5/registered_claims.go−63

This diff is too big to show here.

vendor/github.com/golang-jwt/jwt/v5/rsa.go−93

This diff is too big to show here.

vendor/github.com/golang-jwt/jwt/v5/rsa_pss.go−135

This diff is too big to show here.

vendor/github.com/golang-jwt/jwt/v5/rsa_utils.go−107

This diff is too big to show here.

vendor/github.com/golang-jwt/jwt/v5/signing_method.go−49

This diff is too big to show here.

vendor/github.com/golang-jwt/jwt/v5/staticcheck.conf−1

This diff is too big to show here.

vendor/github.com/golang-jwt/jwt/v5/token.go−100

This diff is too big to show here.

vendor/github.com/golang-jwt/jwt/v5/token_option.go−5

This diff is too big to show here.

vendor/github.com/golang-jwt/jwt/v5/types.go−149

This diff is too big to show here.

vendor/github.com/golang-jwt/jwt/v5/validator.go−316

This diff is too big to show here.

vendor/github.com/google/go-cmp/LICENSE−27

This diff is too big to show here.

vendor/github.com/google/go-cmp/cmp/compare.go−671

This diff is too big to show here.

vendor/github.com/google/go-cmp/cmp/export.go−31

This diff is too big to show here.

vendor/github.com/google/go-cmp/cmp/internal/diff/debug_disable.go−18

This diff is too big to show here.

vendor/github.com/google/go-cmp/cmp/internal/diff/debug_enable.go−123

This diff is too big to show here.

vendor/github.com/google/go-cmp/cmp/internal/diff/diff.go−402

This diff is too big to show here.

vendor/github.com/google/go-cmp/cmp/internal/flags/flags.go−9

This diff is too big to show here.

vendor/github.com/google/go-cmp/cmp/internal/function/func.go−106

This diff is too big to show here.

vendor/github.com/google/go-cmp/cmp/internal/value/name.go−164

This diff is too big to show here.

vendor/github.com/google/go-cmp/cmp/internal/value/pointer.go−34

This diff is too big to show here.

vendor/github.com/google/go-cmp/cmp/internal/value/sort.go−106

This diff is too big to show here.

vendor/github.com/google/go-cmp/cmp/options.go−562

This diff is too big to show here.

vendor/github.com/google/go-cmp/cmp/path.go−390

This diff is too big to show here.

vendor/github.com/google/go-cmp/cmp/report.go−54

This diff is too big to show here.

vendor/github.com/google/go-cmp/cmp/report_compare.go−433

This diff is too big to show here.

vendor/github.com/google/go-cmp/cmp/report_references.go−264

This diff is too big to show here.

vendor/github.com/google/go-cmp/cmp/report_reflect.go−414

This diff is too big to show here.

vendor/github.com/google/go-cmp/cmp/report_slices.go−614

This diff is too big to show here.

vendor/github.com/google/go-cmp/cmp/report_text.go−432

This diff is too big to show here.

vendor/github.com/google/go-cmp/cmp/report_value.go−121

This diff is too big to show here.

vendor/github.com/google/s2a-go/.gitignore−6

This diff is too big to show here.

vendor/github.com/google/s2a-go/CODE_OF_CONDUCT.md−93

This diff is too big to show here.

vendor/github.com/google/s2a-go/CONTRIBUTING.md−29

This diff is too big to show here.

vendor/github.com/google/s2a-go/LICENSE.md−202

This diff is too big to show here.

vendor/github.com/google/s2a-go/README.md−14

This diff is too big to show here.

vendor/github.com/google/s2a-go/fallback/s2a_fallback.go−167

This diff is too big to show here.

vendor/github.com/google/s2a-go/internal/authinfo/authinfo.go−119

This diff is too big to show here.

vendor/github.com/google/s2a-go/internal/handshaker/handshaker.go−438

This diff is too big to show here.

vendor/github.com/google/s2a-go/internal/handshaker/service/service.go−66

This diff is too big to show here.

vendor/github.com/google/s2a-go/internal/proto/common_go_proto/common.pb.go−388

This diff is too big to show here.

vendor/github.com/google/s2a-go/internal/proto/s2a_context_go_proto/s2a_context.pb.go−267

This diff is too big to show here.

vendor/github.com/google/s2a-go/internal/proto/s2a_go_proto/s2a.pb.go−1377

This diff is too big to show here.

vendor/github.com/google/s2a-go/internal/proto/s2a_go_proto/s2a_grpc.pb.go−174

This diff is too big to show here.

vendor/github.com/google/s2a-go/internal/proto/v2/common_go_proto/common.pb.go−549

This diff is too big to show here.

vendor/github.com/google/s2a-go/internal/proto/v2/s2a_context_go_proto/s2a_context.pb.go−249

This diff is too big to show here.

vendor/github.com/google/s2a-go/internal/proto/v2/s2a_go_proto/s2a.pb.go−2512

This diff is too big to show here.

vendor/github.com/google/s2a-go/internal/proto/v2/s2a_go_proto/s2a_grpc.pb.go−160

This diff is too big to show here.

vendor/github.com/google/s2a-go/internal/record/internal/aeadcrypter/aeadcrypter.go−34

This diff is too big to show here.

vendor/github.com/google/s2a-go/internal/record/internal/aeadcrypter/aesgcm.go−70

This diff is too big to show here.

vendor/github.com/google/s2a-go/internal/record/internal/aeadcrypter/chachapoly.go−67

This diff is too big to show here.

vendor/github.com/google/s2a-go/internal/record/internal/aeadcrypter/common.go−92

This diff is too big to show here.

vendor/github.com/google/s2a-go/internal/record/internal/halfconn/ciphersuite.go−98

This diff is too big to show here.

vendor/github.com/google/s2a-go/internal/record/internal/halfconn/counter.go−60

This diff is too big to show here.

vendor/github.com/google/s2a-go/internal/record/internal/halfconn/expander.go−59

This diff is too big to show here.

vendor/github.com/google/s2a-go/internal/record/internal/halfconn/halfconn.go−193

This diff is too big to show here.

vendor/github.com/google/s2a-go/internal/record/record.go−729

This diff is too big to show here.

vendor/github.com/google/s2a-go/internal/record/ticketsender.go−178

This diff is too big to show here.

vendor/github.com/google/s2a-go/internal/tokenmanager/tokenmanager.go−79

This diff is too big to show here.

vendor/github.com/google/s2a-go/internal/v2/README.md−1

This diff is too big to show here.

vendor/github.com/google/s2a-go/internal/v2/certverifier/certverifier.go−122

This diff is too big to show here.

vendor/github.com/google/s2a-go/internal/v2/remotesigner/remotesigner.go−186

This diff is too big to show here.

vendor/github.com/google/s2a-go/internal/v2/s2av2.go−379

This diff is too big to show here.

vendor/github.com/google/s2a-go/internal/v2/tlsconfigstore/tlsconfigstore.go−403

This diff is too big to show here.

vendor/github.com/google/s2a-go/retry/retry.go−144

This diff is too big to show here.

vendor/github.com/google/s2a-go/s2a.go−442

This diff is too big to show here.

vendor/github.com/google/s2a-go/s2a_options.go−235

This diff is too big to show here.

vendor/github.com/google/s2a-go/s2a_utils.go−79

This diff is too big to show here.

vendor/github.com/google/s2a-go/stream/s2a_stream.go−34

This diff is too big to show here.

vendor/github.com/google/uuid/CHANGELOG.md−41

This diff is too big to show here.

vendor/github.com/google/uuid/CONTRIBUTING.md−26

This diff is too big to show here.

vendor/github.com/google/uuid/CONTRIBUTORS−9

This diff is too big to show here.

vendor/github.com/google/uuid/LICENSE−27

This diff is too big to show here.

vendor/github.com/google/uuid/README.md−21

This diff is too big to show here.

vendor/github.com/google/uuid/dce.go−80

This diff is too big to show here.

vendor/github.com/google/uuid/doc.go−12

This diff is too big to show here.

vendor/github.com/google/uuid/hash.go−59

This diff is too big to show here.

vendor/github.com/google/uuid/marshal.go−38

This diff is too big to show here.

vendor/github.com/google/uuid/node.go−90

This diff is too big to show here.

vendor/github.com/google/uuid/node_js.go−12

This diff is too big to show here.

vendor/github.com/google/uuid/node_net.go−33

This diff is too big to show here.

vendor/github.com/google/uuid/null.go−118

This diff is too big to show here.

vendor/github.com/google/uuid/sql.go−59

This diff is too big to show here.

vendor/github.com/google/uuid/time.go−134

This diff is too big to show here.

vendor/github.com/google/uuid/util.go−43

This diff is too big to show here.

vendor/github.com/google/uuid/uuid.go−365

This diff is too big to show here.

vendor/github.com/google/uuid/version1.go−44

This diff is too big to show here.

vendor/github.com/google/uuid/version4.go−76

This diff is too big to show here.

vendor/github.com/google/uuid/version6.go−56

This diff is too big to show here.

vendor/github.com/google/uuid/version7.go−104

This diff is too big to show here.

vendor/github.com/googleapis/enterprise-certificate-proxy/LICENSE−202

This diff is too big to show here.

vendor/github.com/googleapis/enterprise-certificate-proxy/client/client.go−219

This diff is too big to show here.

vendor/github.com/googleapis/enterprise-certificate-proxy/client/util/util.go−100

This diff is too big to show here.

vendor/github.com/googleapis/gax-go/v2/LICENSE−27

This diff is too big to show here.

vendor/github.com/googleapis/gax-go/v2/internallog/internal/internal.go−134

This diff is too big to show here.

vendor/github.com/googleapis/gax-go/v2/internallog/internallog.go−154

This diff is too big to show here.

vendor/github.com/gorilla/css/LICENSE−28

This diff is too big to show here.

vendor/github.com/gorilla/css/scanner/doc.go−33

This diff is too big to show here.

vendor/github.com/gorilla/css/scanner/scanner.go−360

This diff is too big to show here.

vendor/github.com/gorilla/websocket/.gitignore−25

This diff is too big to show here.

vendor/github.com/gorilla/websocket/AUTHORS−9

This diff is too big to show here.

vendor/github.com/gorilla/websocket/LICENSE−22

This diff is too big to show here.

vendor/github.com/gorilla/websocket/README.md−33

This diff is too big to show here.

vendor/github.com/gorilla/websocket/client.go−434

This diff is too big to show here.

vendor/github.com/gorilla/websocket/compression.go−148

This diff is too big to show here.

vendor/github.com/gorilla/websocket/conn.go−1238

This diff is too big to show here.

vendor/github.com/gorilla/websocket/doc.go−227

This diff is too big to show here.

vendor/github.com/gorilla/websocket/join.go−42

This diff is too big to show here.

vendor/github.com/gorilla/websocket/json.go−60

This diff is too big to show here.

vendor/github.com/gorilla/websocket/mask.go−55

This diff is too big to show here.

vendor/github.com/gorilla/websocket/mask_safe.go−16

This diff is too big to show here.

vendor/github.com/gorilla/websocket/prepared.go−102

This diff is too big to show here.

vendor/github.com/gorilla/websocket/proxy.go−77

This diff is too big to show here.

vendor/github.com/gorilla/websocket/server.go−365

This diff is too big to show here.

vendor/github.com/gorilla/websocket/tls_handshake.go−21

This diff is too big to show here.

vendor/github.com/gorilla/websocket/tls_handshake_116.go−21

This diff is too big to show here.

vendor/github.com/gorilla/websocket/util.go−298

This diff is too big to show here.

vendor/github.com/gorilla/websocket/x_net_proxy.go−473

This diff is too big to show here.

vendor/github.com/inconshreveable/mousetrap/LICENSE−201

This diff is too big to show here.

vendor/github.com/inconshreveable/mousetrap/README.md−23

This diff is too big to show here.

vendor/github.com/inconshreveable/mousetrap/trap_others.go−16

This diff is too big to show here.

vendor/github.com/inconshreveable/mousetrap/trap_windows.go−42

This diff is too big to show here.

vendor/github.com/joho/godotenv/.gitignore−1

This diff is too big to show here.

vendor/github.com/joho/godotenv/LICENCE−23

This diff is too big to show here.

vendor/github.com/joho/godotenv/README.md−202

This diff is too big to show here.

vendor/github.com/joho/godotenv/autoload/autoload.go−15

This diff is too big to show here.

vendor/github.com/joho/godotenv/godotenv.go−228

This diff is too big to show here.

vendor/github.com/joho/godotenv/parser.go−271

This diff is too big to show here.

vendor/github.com/kylelemons/godebug/LICENSE−202

This diff is too big to show here.

vendor/github.com/kylelemons/godebug/diff/diff.go−186

This diff is too big to show here.

vendor/github.com/kylelemons/godebug/pretty/.gitignore−5

This diff is too big to show here.

vendor/github.com/kylelemons/godebug/pretty/doc.go−25

This diff is too big to show here.

vendor/github.com/kylelemons/godebug/pretty/public.go−188

This diff is too big to show here.

vendor/github.com/kylelemons/godebug/pretty/reflect.go−241

This diff is too big to show here.

vendor/github.com/kylelemons/godebug/pretty/structure.go−223

This diff is too big to show here.

vendor/github.com/lucasb-eyer/go-colorful/.gitignore−101

This diff is too big to show here.

vendor/github.com/lucasb-eyer/go-colorful/CHANGELOG.md−42

This diff is too big to show here.

vendor/github.com/lucasb-eyer/go-colorful/LICENSE−7

This diff is too big to show here.

vendor/github.com/lucasb-eyer/go-colorful/README.md−482

This diff is too big to show here.

vendor/github.com/lucasb-eyer/go-colorful/colorgens.go−55

This diff is too big to show here.

vendor/github.com/lucasb-eyer/go-colorful/colors.go−979

This diff is too big to show here.

vendor/github.com/lucasb-eyer/go-colorful/happy_palettegen.go−25

This diff is too big to show here.

vendor/github.com/lucasb-eyer/go-colorful/hexcolor.go−67

This diff is too big to show here.

vendor/github.com/lucasb-eyer/go-colorful/hsluv-snapshot-rev4.json−1

This diff is too big to show here.

vendor/github.com/lucasb-eyer/go-colorful/hsluv.go−207

This diff is too big to show here.

vendor/github.com/lucasb-eyer/go-colorful/soft_palettegen.go−185

This diff is too big to show here.

vendor/github.com/lucasb-eyer/go-colorful/warm_palettegen.go−25

This diff is too big to show here.

vendor/github.com/mark3labs/mcp-go/LICENSE−21

This diff is too big to show here.

vendor/github.com/mark3labs/mcp-go/client/client.go−534

This diff is too big to show here.

vendor/github.com/mark3labs/mcp-go/client/http.go−22

This diff is too big to show here.

vendor/github.com/mark3labs/mcp-go/client/inprocess.go−12

This diff is too big to show here.

vendor/github.com/mark3labs/mcp-go/client/interface.go−109

This diff is too big to show here.

vendor/github.com/mark3labs/mcp-go/client/oauth.go−76

This diff is too big to show here.

vendor/github.com/mark3labs/mcp-go/client/sampling.go−20

This diff is too big to show here.

vendor/github.com/mark3labs/mcp-go/client/sse.go−42

This diff is too big to show here.

vendor/github.com/mark3labs/mcp-go/client/stdio.go−59

This diff is too big to show here.

vendor/github.com/mark3labs/mcp-go/client/transport/inprocess.go−74

This diff is too big to show here.

vendor/github.com/mark3labs/mcp-go/client/transport/interface.go−66

This diff is too big to show here.

vendor/github.com/mark3labs/mcp-go/client/transport/oauth.go−650

This diff is too big to show here.

vendor/github.com/mark3labs/mcp-go/client/transport/oauth_utils.go−68

This diff is too big to show here.

vendor/github.com/mark3labs/mcp-go/client/transport/sse.go−528

This diff is too big to show here.

vendor/github.com/mark3labs/mcp-go/client/transport/stdio.go−466

This diff is too big to show here.

vendor/github.com/mark3labs/mcp-go/client/transport/streamable_http.go−628

This diff is too big to show here.

vendor/github.com/mark3labs/mcp-go/mcp/prompts.go−170

This diff is too big to show here.

vendor/github.com/mark3labs/mcp-go/mcp/resources.go−99

This diff is too big to show here.

vendor/github.com/mark3labs/mcp-go/mcp/tools.go−1078

This diff is too big to show here.

vendor/github.com/mark3labs/mcp-go/mcp/typed_tools.go−20

This diff is too big to show here.

vendor/github.com/mark3labs/mcp-go/mcp/types.go−1065

This diff is too big to show here.

vendor/github.com/mark3labs/mcp-go/mcp/utils.go−819

This diff is too big to show here.

vendor/github.com/mark3labs/mcp-go/server/errors.go−34

This diff is too big to show here.

vendor/github.com/mark3labs/mcp-go/server/hooks.go−532

This diff is too big to show here.

vendor/github.com/mark3labs/mcp-go/server/http_transport_options.go−11

This diff is too big to show here.

vendor/github.com/mark3labs/mcp-go/server/request_handler.go−320

This diff is too big to show here.

vendor/github.com/mark3labs/mcp-go/server/sampling.go−37

This diff is too big to show here.

vendor/github.com/mark3labs/mcp-go/server/server.go−1079

This diff is too big to show here.

vendor/github.com/mark3labs/mcp-go/server/session.go−380

This diff is too big to show here.

vendor/github.com/mark3labs/mcp-go/server/sse.go−736

This diff is too big to show here.

vendor/github.com/mark3labs/mcp-go/server/stdio.go−482

This diff is too big to show here.

vendor/github.com/mark3labs/mcp-go/server/streamable_http.go−655

This diff is too big to show here.

vendor/github.com/mark3labs/mcp-go/util/logger.go−33

This diff is too big to show here.

vendor/github.com/mattn/go-isatty/LICENSE−9

This diff is too big to show here.

vendor/github.com/mattn/go-isatty/README.md−50

This diff is too big to show here.

vendor/github.com/mattn/go-isatty/doc.go−2

This diff is too big to show here.

vendor/github.com/mattn/go-isatty/go.test.sh−12

This diff is too big to show here.

vendor/github.com/mattn/go-isatty/isatty_bsd.go−20

This diff is too big to show here.

vendor/github.com/mattn/go-isatty/isatty_others.go−17

This diff is too big to show here.

vendor/github.com/mattn/go-isatty/isatty_plan9.go−23

This diff is too big to show here.

vendor/github.com/mattn/go-isatty/isatty_solaris.go−21

This diff is too big to show here.

vendor/github.com/mattn/go-isatty/isatty_tcgets.go−20

This diff is too big to show here.

vendor/github.com/mattn/go-isatty/isatty_windows.go−125

This diff is too big to show here.

vendor/github.com/mattn/go-runewidth/LICENSE−21

This diff is too big to show here.

vendor/github.com/mattn/go-runewidth/README.md−27

This diff is too big to show here.

vendor/github.com/mattn/go-runewidth/runewidth.go−358

This diff is too big to show here.

vendor/github.com/mattn/go-runewidth/runewidth_appengine.go−9

This diff is too big to show here.

vendor/github.com/mattn/go-runewidth/runewidth_js.go−9

This diff is too big to show here.

vendor/github.com/mattn/go-runewidth/runewidth_posix.go−81

This diff is too big to show here.

vendor/github.com/mattn/go-runewidth/runewidth_table.go−450

This diff is too big to show here.

vendor/github.com/mattn/go-runewidth/runewidth_windows.go−28

This diff is too big to show here.

vendor/github.com/mfridman/interpolate/LICENSE.txt−24

This diff is too big to show here.

vendor/github.com/mfridman/interpolate/README.md−85

This diff is too big to show here.

vendor/github.com/mfridman/interpolate/env.go−53

This diff is too big to show here.

vendor/github.com/mfridman/interpolate/interpolate.go−213

This diff is too big to show here.

vendor/github.com/mfridman/interpolate/parser.go−281

This diff is too big to show here.

vendor/github.com/microcosm-cc/bluemonday/CONTRIBUTING.md−50

This diff is too big to show here.

vendor/github.com/microcosm-cc/bluemonday/CREDITS.md−8

This diff is too big to show here.

vendor/github.com/microcosm-cc/bluemonday/LICENSE.md−28

This diff is too big to show here.

vendor/github.com/microcosm-cc/bluemonday/README.md−386

This diff is too big to show here.

vendor/github.com/microcosm-cc/bluemonday/SECURITY.md−13

This diff is too big to show here.

vendor/github.com/microcosm-cc/bluemonday/css/handlers.go−2016

This diff is too big to show here.

vendor/github.com/microcosm-cc/bluemonday/doc.go−104

This diff is too big to show here.

vendor/github.com/microcosm-cc/bluemonday/helpers.go−300

This diff is too big to show here.

vendor/github.com/microcosm-cc/bluemonday/policies.go−253

This diff is too big to show here.

vendor/github.com/microcosm-cc/bluemonday/policy.go−990

This diff is too big to show here.

vendor/github.com/microcosm-cc/bluemonday/sanitize.go−1096

This diff is too big to show here.

vendor/github.com/muesli/cancelreader/.gitignore−15

This diff is too big to show here.

vendor/github.com/muesli/cancelreader/.golangci-soft.yml−47

This diff is too big to show here.

vendor/github.com/muesli/cancelreader/.golangci.yml−29

This diff is too big to show here.

vendor/github.com/muesli/cancelreader/LICENSE−21

This diff is too big to show here.

vendor/github.com/muesli/cancelreader/README.md−64

This diff is too big to show here.

vendor/github.com/muesli/cancelreader/cancelreader.go−93

This diff is too big to show here.

vendor/github.com/muesli/cancelreader/cancelreader_bsd.go−146

This diff is too big to show here.

vendor/github.com/muesli/cancelreader/cancelreader_default.go−12

This diff is too big to show here.

vendor/github.com/muesli/cancelreader/cancelreader_linux.go−154

This diff is too big to show here.

vendor/github.com/muesli/cancelreader/cancelreader_select.go−136

This diff is too big to show here.

vendor/github.com/muesli/cancelreader/cancelreader_unix.go−18

This diff is too big to show here.

vendor/github.com/muesli/cancelreader/cancelreader_windows.go−244

This diff is too big to show here.

vendor/github.com/muesli/mango-cobra/.gitignore−17

This diff is too big to show here.

vendor/github.com/muesli/mango-cobra/.golangci-soft.yml−47

This diff is too big to show here.

vendor/github.com/muesli/mango-cobra/.golangci.yml−29

This diff is too big to show here.

vendor/github.com/muesli/mango-cobra/LICENSE−21

This diff is too big to show here.

vendor/github.com/muesli/mango-cobra/README.md−39

This diff is too big to show here.

vendor/github.com/muesli/mango-cobra/mcobra.go−61

This diff is too big to show here.

vendor/github.com/muesli/mango-pflag/.gitignore−17

This diff is too big to show here.

vendor/github.com/muesli/mango-pflag/.golangci-soft.yml−47

This diff is too big to show here.

vendor/github.com/muesli/mango-pflag/.golangci.yml−29

This diff is too big to show here.

vendor/github.com/muesli/mango-pflag/LICENSE−21

This diff is too big to show here.

vendor/github.com/muesli/mango-pflag/README.md−33

This diff is too big to show here.

vendor/github.com/muesli/mango-pflag/mpflag.go−30

This diff is too big to show here.

vendor/github.com/muesli/mango/.gitignore−19

This diff is too big to show here.

vendor/github.com/muesli/mango/.golangci-soft.yml−47

This diff is too big to show here.

vendor/github.com/muesli/mango/.golangci.yml−29

This diff is too big to show here.

vendor/github.com/muesli/mango/LICENSE−21

This diff is too big to show here.

vendor/github.com/muesli/mango/README.md−150

This diff is too big to show here.

vendor/github.com/muesli/mango/builder.go−21

This diff is too big to show here.

vendor/github.com/muesli/mango/mango.go−221

This diff is too big to show here.

vendor/github.com/muesli/mango/mango.png

This diff is too big to show here.

vendor/github.com/muesli/roff/.gitignore−15

This diff is too big to show here.

vendor/github.com/muesli/roff/.golangci-soft.yml−47

This diff is too big to show here.

vendor/github.com/muesli/roff/.golangci.yml−29

This diff is too big to show here.

vendor/github.com/muesli/roff/LICENSE−21

This diff is too big to show here.

vendor/github.com/muesli/roff/README.md−65

This diff is too big to show here.

vendor/github.com/muesli/roff/roff.go−163

This diff is too big to show here.

vendor/github.com/muesli/termenv/.gitignore−15

This diff is too big to show here.

vendor/github.com/muesli/termenv/.golangci-soft.yml−43

This diff is too big to show here.

vendor/github.com/muesli/termenv/.golangci.yml−28

This diff is too big to show here.

vendor/github.com/muesli/termenv/LICENSE−21

This diff is too big to show here.

vendor/github.com/muesli/termenv/README.md−431

This diff is too big to show here.

vendor/github.com/muesli/termenv/ansi_compat.md−65

This diff is too big to show here.

vendor/github.com/muesli/termenv/ansicolors.go−281

This diff is too big to show here.

vendor/github.com/muesli/termenv/color.go−205

This diff is too big to show here.

vendor/github.com/muesli/termenv/constants_linux.go−8

This diff is too big to show here.

vendor/github.com/muesli/termenv/constants_solaris.go−8

This diff is too big to show here.

vendor/github.com/muesli/termenv/constants_unix.go−13

This diff is too big to show here.

vendor/github.com/muesli/termenv/constants_zos.go−8

This diff is too big to show here.

vendor/github.com/muesli/termenv/copy.go−37

This diff is too big to show here.

vendor/github.com/muesli/termenv/hyperlink.go−11

This diff is too big to show here.

vendor/github.com/muesli/termenv/notification.go−11

This diff is too big to show here.

vendor/github.com/muesli/termenv/output.go−205

This diff is too big to show here.

vendor/github.com/muesli/termenv/profile.go−112

This diff is too big to show here.

vendor/github.com/muesli/termenv/screen.go−590

This diff is too big to show here.

vendor/github.com/muesli/termenv/style.go−126

This diff is too big to show here.

vendor/github.com/muesli/termenv/templatehelper.go−88

This diff is too big to show here.

vendor/github.com/muesli/termenv/termenv.go−115

This diff is too big to show here.

vendor/github.com/muesli/termenv/termenv_other.go−30

This diff is too big to show here.

vendor/github.com/muesli/termenv/termenv_posix.go−17

This diff is too big to show here.

vendor/github.com/muesli/termenv/termenv_solaris.go−22

This diff is too big to show here.

vendor/github.com/muesli/termenv/termenv_unix.go−301

This diff is too big to show here.

vendor/github.com/muesli/termenv/termenv_windows.go−140

This diff is too big to show here.

vendor/github.com/ncruces/go-sqlite3/.gitignore−23

This diff is too big to show here.

vendor/github.com/ncruces/go-sqlite3/LICENSE−21

This diff is too big to show here.

vendor/github.com/ncruces/go-sqlite3/README.md−121

This diff is too big to show here.

vendor/github.com/ncruces/go-sqlite3/backup.go−134

This diff is too big to show here.

vendor/github.com/ncruces/go-sqlite3/blob.go−266

This diff is too big to show here.

vendor/github.com/ncruces/go-sqlite3/config.go−397

This diff is too big to show here.

vendor/github.com/ncruces/go-sqlite3/conn.go−496

This diff is too big to show here.

vendor/github.com/ncruces/go-sqlite3/const.go−425

This diff is too big to show here.

vendor/github.com/ncruces/go-sqlite3/context.go−234

This diff is too big to show here.

vendor/github.com/ncruces/go-sqlite3/driver/driver.go−821

This diff is too big to show here.

vendor/github.com/ncruces/go-sqlite3/driver/savepoint.go−40

This diff is too big to show here.

vendor/github.com/ncruces/go-sqlite3/driver/time.go−32

This diff is too big to show here.

vendor/github.com/ncruces/go-sqlite3/driver/util.go−74

This diff is too big to show here.

vendor/github.com/ncruces/go-sqlite3/embed/README.md−41

This diff is too big to show here.

vendor/github.com/ncruces/go-sqlite3/embed/build.sh−33

This diff is too big to show here.

vendor/github.com/ncruces/go-sqlite3/embed/exports.txt−141

This diff is too big to show here.

vendor/github.com/ncruces/go-sqlite3/embed/init.go−21

This diff is too big to show here.

vendor/github.com/ncruces/go-sqlite3/embed/sqlite3.wasm

This diff is too big to show here.

vendor/github.com/ncruces/go-sqlite3/error.go−164

This diff is too big to show here.

vendor/github.com/ncruces/go-sqlite3/func.go−319

This diff is too big to show here.

vendor/github.com/ncruces/go-sqlite3/internal/alloc/alloc_other.go−24

This diff is too big to show here.

vendor/github.com/ncruces/go-sqlite3/internal/alloc/alloc_unix.go−67

This diff is too big to show here.

vendor/github.com/ncruces/go-sqlite3/internal/alloc/alloc_windows.go−74

This diff is too big to show here.

vendor/github.com/ncruces/go-sqlite3/internal/dotlk/dotlk.go−29

This diff is too big to show here.

vendor/github.com/ncruces/go-sqlite3/internal/dotlk/dotlk_other.go−13

This diff is too big to show here.

vendor/github.com/ncruces/go-sqlite3/internal/dotlk/dotlk_unix.go−50

This diff is too big to show here.

vendor/github.com/ncruces/go-sqlite3/internal/util/const.go−117

This diff is too big to show here.

vendor/github.com/ncruces/go-sqlite3/internal/util/error.go−116

This diff is too big to show here.

vendor/github.com/ncruces/go-sqlite3/internal/util/func.go−202

This diff is too big to show here.

vendor/github.com/ncruces/go-sqlite3/internal/util/handle.go−70

This diff is too big to show here.

vendor/github.com/ncruces/go-sqlite3/internal/util/json.go−50

This diff is too big to show here.

vendor/github.com/ncruces/go-sqlite3/internal/util/math.go−29

This diff is too big to show here.

vendor/github.com/ncruces/go-sqlite3/internal/util/mem.go−153

This diff is too big to show here.

vendor/github.com/ncruces/go-sqlite3/internal/util/mmap_other.go−5

This diff is too big to show here.

vendor/github.com/ncruces/go-sqlite3/internal/util/mmap_unix.go−87

This diff is too big to show here.

vendor/github.com/ncruces/go-sqlite3/internal/util/mmap_windows.go−51

This diff is too big to show here.

vendor/github.com/ncruces/go-sqlite3/internal/util/module.go−25

This diff is too big to show here.

vendor/github.com/ncruces/go-sqlite3/internal/util/pointer.go−11

This diff is too big to show here.

vendor/github.com/ncruces/go-sqlite3/internal/util/reflect.go−10

This diff is too big to show here.

vendor/github.com/ncruces/go-sqlite3/internal/util/set.go−12

This diff is too big to show here.

vendor/github.com/ncruces/go-sqlite3/json.go−12

This diff is too big to show here.

vendor/github.com/ncruces/go-sqlite3/pointer.go−13

This diff is too big to show here.

vendor/github.com/ncruces/go-sqlite3/quote.go−140

This diff is too big to show here.

vendor/github.com/ncruces/go-sqlite3/registry.go−30

This diff is too big to show here.

vendor/github.com/ncruces/go-sqlite3/sqlite.go−344

This diff is too big to show here.

vendor/github.com/ncruces/go-sqlite3/stmt.go−756

This diff is too big to show here.

vendor/github.com/ncruces/go-sqlite3/time.go−357

This diff is too big to show here.

vendor/github.com/ncruces/go-sqlite3/txn.go−301

This diff is too big to show here.

vendor/github.com/ncruces/go-sqlite3/util/sql3util/README.md−9

This diff is too big to show here.

vendor/github.com/ncruces/go-sqlite3/util/sql3util/arg.go−65

This diff is too big to show here.

vendor/github.com/ncruces/go-sqlite3/util/sql3util/const.go−61

This diff is too big to show here.

vendor/github.com/ncruces/go-sqlite3/util/sql3util/parse.go−210

This diff is too big to show here.

vendor/github.com/ncruces/go-sqlite3/util/sql3util/sql3util.go−9

This diff is too big to show here.

vendor/github.com/ncruces/go-sqlite3/util/sql3util/wasm/sql3parse_table.wasm

This diff is too big to show here.

vendor/github.com/ncruces/go-sqlite3/value.go−241

This diff is too big to show here.

vendor/github.com/ncruces/go-sqlite3/vfs/README.md−124

This diff is too big to show here.

vendor/github.com/ncruces/go-sqlite3/vfs/api.go−216

This diff is too big to show here.

vendor/github.com/ncruces/go-sqlite3/vfs/cksm.go−168

This diff is too big to show here.

vendor/github.com/ncruces/go-sqlite3/vfs/const.go−251

This diff is too big to show here.

vendor/github.com/ncruces/go-sqlite3/vfs/file.go−247

This diff is too big to show here.

vendor/github.com/ncruces/go-sqlite3/vfs/filename.go−179

This diff is too big to show here.

vendor/github.com/ncruces/go-sqlite3/vfs/lock.go−128

This diff is too big to show here.

vendor/github.com/ncruces/go-sqlite3/vfs/lock_other.go−23

This diff is too big to show here.

vendor/github.com/ncruces/go-sqlite3/vfs/os_bsd.go−110

This diff is too big to show here.

vendor/github.com/ncruces/go-sqlite3/vfs/os_darwin.go−107

This diff is too big to show here.

vendor/github.com/ncruces/go-sqlite3/vfs/os_dotlk.go−143

This diff is too big to show here.

vendor/github.com/ncruces/go-sqlite3/vfs/os_f2fs_linux.go−37

This diff is too big to show here.

vendor/github.com/ncruces/go-sqlite3/vfs/os_linux.go−86

This diff is too big to show here.

vendor/github.com/ncruces/go-sqlite3/vfs/os_ofd.go−59

This diff is too big to show here.

vendor/github.com/ncruces/go-sqlite3/vfs/os_std.go−50

This diff is too big to show here.

vendor/github.com/ncruces/go-sqlite3/vfs/os_std_alloc.go−19

This diff is too big to show here.

vendor/github.com/ncruces/go-sqlite3/vfs/os_std_atomic.go−9

This diff is too big to show here.

vendor/github.com/ncruces/go-sqlite3/vfs/os_std_rw.go−13

This diff is too big to show here.

vendor/github.com/ncruces/go-sqlite3/vfs/os_std_sync.go−9

This diff is too big to show here.

vendor/github.com/ncruces/go-sqlite3/vfs/os_unix.go−103

This diff is too big to show here.

vendor/github.com/ncruces/go-sqlite3/vfs/os_windows.go−179

This diff is too big to show here.

vendor/github.com/ncruces/go-sqlite3/vfs/registry.go−48

This diff is too big to show here.

vendor/github.com/ncruces/go-sqlite3/vfs/shm.go−26

This diff is too big to show here.

vendor/github.com/ncruces/go-sqlite3/vfs/shm_bsd.go−249

This diff is too big to show here.

vendor/github.com/ncruces/go-sqlite3/vfs/shm_copy.go−87

This diff is too big to show here.

vendor/github.com/ncruces/go-sqlite3/vfs/shm_dotlk.go−178

This diff is too big to show here.

vendor/github.com/ncruces/go-sqlite3/vfs/shm_memlk.go−53

This diff is too big to show here.

vendor/github.com/ncruces/go-sqlite3/vfs/shm_ofd.go−176

This diff is too big to show here.

vendor/github.com/ncruces/go-sqlite3/vfs/shm_other.go−21

This diff is too big to show here.

vendor/github.com/ncruces/go-sqlite3/vfs/shm_windows.go−175

This diff is too big to show here.

vendor/github.com/ncruces/go-sqlite3/vfs/vfs.go−462

This diff is too big to show here.

vendor/github.com/ncruces/go-sqlite3/vtab.go−689

This diff is too big to show here.

vendor/github.com/ncruces/julianday/.gitignore−15

This diff is too big to show here.

vendor/github.com/ncruces/julianday/LICENSE−21

This diff is too big to show here.

vendor/github.com/ncruces/julianday/README.md−9

This diff is too big to show here.

vendor/github.com/ncruces/julianday/julianday.go−124

This diff is too big to show here.

vendor/github.com/nfnt/resize/.travis.yml−7

This diff is too big to show here.

vendor/github.com/nfnt/resize/LICENSE−13

This diff is too big to show here.

vendor/github.com/nfnt/resize/README.md−151

This diff is too big to show here.

vendor/github.com/nfnt/resize/converter.go−438

This diff is too big to show here.

vendor/github.com/nfnt/resize/filters.go−143

This diff is too big to show here.

vendor/github.com/nfnt/resize/nearest.go−318

This diff is too big to show here.

vendor/github.com/nfnt/resize/resize.go−620

This diff is too big to show here.

vendor/github.com/nfnt/resize/thumbnail.go−55

This diff is too big to show here.

vendor/github.com/nfnt/resize/ycc.go−387

This diff is too big to show here.

vendor/github.com/nxadm/tail/.cirrus.yml−8

This diff is too big to show here.

vendor/github.com/nxadm/tail/.gitignore−2

This diff is too big to show here.

vendor/github.com/nxadm/tail/CHANGES.md−64

This diff is too big to show here.

vendor/github.com/nxadm/tail/CONTRIBUTING.md−5

This diff is too big to show here.

vendor/github.com/nxadm/tail/Dockerfile−19

This diff is too big to show here.

vendor/github.com/nxadm/tail/LICENSE−21

This diff is too big to show here.

vendor/github.com/nxadm/tail/README.md−45

This diff is too big to show here.

vendor/github.com/nxadm/tail/ratelimiter/Licence−7

This diff is too big to show here.

vendor/github.com/nxadm/tail/ratelimiter/leakybucket.go−97

This diff is too big to show here.

vendor/github.com/nxadm/tail/ratelimiter/memory.go−60

This diff is too big to show here.

vendor/github.com/nxadm/tail/ratelimiter/storage.go−6

This diff is too big to show here.

vendor/github.com/nxadm/tail/tail.go−481

This diff is too big to show here.

vendor/github.com/nxadm/tail/tail_posix.go−17

This diff is too big to show here.

vendor/github.com/nxadm/tail/tail_windows.go−19

This diff is too big to show here.

vendor/github.com/nxadm/tail/util/util.go−49

This diff is too big to show here.

vendor/github.com/nxadm/tail/watch/filechanges.go−37

This diff is too big to show here.

vendor/github.com/nxadm/tail/watch/inotify.go−136

This diff is too big to show here.

vendor/github.com/nxadm/tail/watch/inotify_tracker.go−249

This diff is too big to show here.

vendor/github.com/nxadm/tail/watch/polling.go−119

This diff is too big to show here.

vendor/github.com/nxadm/tail/watch/watch.go−21

This diff is too big to show here.

vendor/github.com/nxadm/tail/winfile/winfile.go−93

This diff is too big to show here.

vendor/github.com/openai/openai-go/.gitignore−4

This diff is too big to show here.

vendor/github.com/openai/openai-go/.release-please-manifest.json−3

This diff is too big to show here.

vendor/github.com/openai/openai-go/.stats.yml−4

This diff is too big to show here.

vendor/github.com/openai/openai-go/Brewfile−1

This diff is too big to show here.

vendor/github.com/openai/openai-go/CHANGELOG.md−392

This diff is too big to show here.

vendor/github.com/openai/openai-go/CONTRIBUTING.md−66

This diff is too big to show here.

vendor/github.com/openai/openai-go/LICENSE−201

This diff is too big to show here.

vendor/github.com/openai/openai-go/MIGRATION.md−284

This diff is too big to show here.

vendor/github.com/openai/openai-go/README.md−948

This diff is too big to show here.

vendor/github.com/openai/openai-go/SECURITY.md−29

This diff is too big to show here.

vendor/github.com/openai/openai-go/aliases.go−440

This diff is too big to show here.

vendor/github.com/openai/openai-go/api.md−785

This diff is too big to show here.

vendor/github.com/openai/openai-go/audio.go−53

This diff is too big to show here.

vendor/github.com/openai/openai-go/audiospeech.go−129

This diff is too big to show here.

vendor/github.com/openai/openai-go/audiotranscription.go−654

This diff is too big to show here.

vendor/github.com/openai/openai-go/audiotranslation.go−117

This diff is too big to show here.

vendor/github.com/openai/openai-go/azure/azure.go−237

This diff is too big to show here.

vendor/github.com/openai/openai-go/batch.go−343

This diff is too big to show here.

vendor/github.com/openai/openai-go/beta.go−31

This diff is too big to show here.

vendor/github.com/openai/openai-go/betaassistant.go−2246

This diff is too big to show here.

vendor/github.com/openai/openai-go/betathread.go−1564

This diff is too big to show here.

vendor/github.com/openai/openai-go/betathreadmessage.go−1712

This diff is too big to show here.

vendor/github.com/openai/openai-go/betathreadrun.go−960

This diff is too big to show here.

vendor/github.com/openai/openai-go/betathreadrunstep.go−1393

This diff is too big to show here.

vendor/github.com/openai/openai-go/chat.go−28

This diff is too big to show here.

vendor/github.com/openai/openai-go/chatcompletion.go−2592

This diff is too big to show here.

vendor/github.com/openai/openai-go/chatcompletionmessage.go−96

This diff is too big to show here.

vendor/github.com/openai/openai-go/client.go−161

This diff is too big to show here.

vendor/github.com/openai/openai-go/completion.go−426

This diff is too big to show here.

vendor/github.com/openai/openai-go/container.go−352

This diff is too big to show here.

vendor/github.com/openai/openai-go/containerfile.go−286

This diff is too big to show here.

vendor/github.com/openai/openai-go/containerfilecontent.go−49

This diff is too big to show here.

vendor/github.com/openai/openai-go/embedding.go−203

This diff is too big to show here.

vendor/github.com/openai/openai-go/field.go−45

This diff is too big to show here.

vendor/github.com/openai/openai-go/file.go−313

This diff is too big to show here.

vendor/github.com/openai/openai-go/finetuning.go−34

This diff is too big to show here.

vendor/github.com/openai/openai-go/finetuningalpha.go−28

This diff is too big to show here.

vendor/github.com/openai/openai-go/finetuningalphagrader.go−672

This diff is too big to show here.

vendor/github.com/openai/openai-go/finetuningcheckpoint.go−28

This diff is too big to show here.

vendor/github.com/openai/openai-go/finetuningcheckpointpermission.go−254

This diff is too big to show here.

vendor/github.com/openai/openai-go/finetuningjob.go−880

This diff is too big to show here.

vendor/github.com/openai/openai-go/finetuningjobcheckpoint.go−149

This diff is too big to show here.

vendor/github.com/openai/openai-go/finetuningmethod.go−1487

This diff is too big to show here.

vendor/github.com/openai/openai-go/grader.go−28

This diff is too big to show here.

vendor/github.com/openai/openai-go/gradergradermodel.go−1179

This diff is too big to show here.

vendor/github.com/openai/openai-go/image.go−645

This diff is too big to show here.

vendor/github.com/openai/openai-go/internal/apierror/apierror.go−58

This diff is too big to show here.

vendor/github.com/openai/openai-go/internal/apiform/encoder.go−465

This diff is too big to show here.

vendor/github.com/openai/openai-go/internal/apiform/form.go−5

This diff is too big to show here.

vendor/github.com/openai/openai-go/internal/apiform/richparam.go−20

This diff is too big to show here.

vendor/github.com/openai/openai-go/internal/apiform/tag.go−51

This diff is too big to show here.

vendor/github.com/openai/openai-go/internal/apijson/decoder.go−691

This diff is too big to show here.

vendor/github.com/openai/openai-go/internal/apijson/encoder.go−392

This diff is too big to show here.

vendor/github.com/openai/openai-go/internal/apijson/enum.go−145

This diff is too big to show here.

vendor/github.com/openai/openai-go/internal/apijson/field.go−23

This diff is too big to show here.

vendor/github.com/openai/openai-go/internal/apijson/port.go−120

This diff is too big to show here.

vendor/github.com/openai/openai-go/internal/apijson/registry.go−51

This diff is too big to show here.

vendor/github.com/openai/openai-go/internal/apijson/subfield.go−67

This diff is too big to show here.

vendor/github.com/openai/openai-go/internal/apijson/tag.go−47

This diff is too big to show here.

vendor/github.com/openai/openai-go/internal/apijson/union.go−202

This diff is too big to show here.

vendor/github.com/openai/openai-go/internal/apiquery/encoder.go−415

This diff is too big to show here.

vendor/github.com/openai/openai-go/internal/apiquery/query.go−55

This diff is too big to show here.

vendor/github.com/openai/openai-go/internal/apiquery/richparam.go−20

This diff is too big to show here.

vendor/github.com/openai/openai-go/internal/apiquery/tag.go−44

This diff is too big to show here.

vendor/github.com/openai/openai-go/internal/encoding/json/decode.go−1324

This diff is too big to show here.

vendor/github.com/openai/openai-go/internal/encoding/json/encode.go−1391

This diff is too big to show here.

vendor/github.com/openai/openai-go/internal/encoding/json/fold.go−48

This diff is too big to show here.

vendor/github.com/openai/openai-go/internal/encoding/json/indent.go−182

This diff is too big to show here.

vendor/github.com/openai/openai-go/internal/encoding/json/scanner.go−610

This diff is too big to show here.

vendor/github.com/openai/openai-go/internal/encoding/json/sentinel/null.go−46

This diff is too big to show here.

vendor/github.com/openai/openai-go/internal/encoding/json/shims/shims.go−111

This diff is too big to show here.

vendor/github.com/openai/openai-go/internal/encoding/json/stream.go−512

This diff is too big to show here.

vendor/github.com/openai/openai-go/internal/encoding/json/tables.go−218

This diff is too big to show here.

vendor/github.com/openai/openai-go/internal/encoding/json/tags.go−38

This diff is too big to show here.

vendor/github.com/openai/openai-go/internal/encoding/json/time.go−61

This diff is too big to show here.

vendor/github.com/openai/openai-go/internal/paramutil/field.go−30

This diff is too big to show here.

vendor/github.com/openai/openai-go/internal/paramutil/union.go−48

This diff is too big to show here.

vendor/github.com/openai/openai-go/internal/requestconfig/requestconfig.go−635

This diff is too big to show here.

vendor/github.com/openai/openai-go/internal/version.go−5

This diff is too big to show here.

vendor/github.com/openai/openai-go/model.go−134

This diff is too big to show here.

vendor/github.com/openai/openai-go/moderation.go−485

This diff is too big to show here.

vendor/github.com/openai/openai-go/option/middleware.go−38

This diff is too big to show here.

vendor/github.com/openai/openai-go/option/requestoption.go−298

This diff is too big to show here.

vendor/github.com/openai/openai-go/packages/pagination/pagination.go−223

This diff is too big to show here.

vendor/github.com/openai/openai-go/packages/param/encoder.go−101

This diff is too big to show here.

vendor/github.com/openai/openai-go/packages/param/null.go−19

This diff is too big to show here.

vendor/github.com/openai/openai-go/packages/param/option.go−121

This diff is too big to show here.

vendor/github.com/openai/openai-go/packages/param/param.go−168

This diff is too big to show here.

vendor/github.com/openai/openai-go/packages/respjson/respjson.go−88

This diff is too big to show here.

vendor/github.com/openai/openai-go/packages/ssestream/ssestream.go−216

This diff is too big to show here.

vendor/github.com/openai/openai-go/polling.go−95

This diff is too big to show here.

vendor/github.com/openai/openai-go/release-please-config.json−67

This diff is too big to show here.

vendor/github.com/openai/openai-go/responses/aliases.go−440

This diff is too big to show here.

vendor/github.com/openai/openai-go/responses/inputitem.go−136

This diff is too big to show here.

vendor/github.com/openai/openai-go/responses/response.go−12897

This diff is too big to show here.

vendor/github.com/openai/openai-go/shared/constant/constants.go−721

This diff is too big to show here.

vendor/github.com/openai/openai-go/shared/shared.go−796

This diff is too big to show here.

vendor/github.com/openai/openai-go/streamaccumulator.go−195

This diff is too big to show here.

vendor/github.com/openai/openai-go/upload.go−201

This diff is too big to show here.

vendor/github.com/openai/openai-go/uploadpart.go−112

This diff is too big to show here.

vendor/github.com/openai/openai-go/vectorstore.go−905

This diff is too big to show here.

vendor/github.com/openai/openai-go/vectorstorefile.go−534

This diff is too big to show here.

vendor/github.com/openai/openai-go/vectorstorefilebatch.go−364

This diff is too big to show here.

vendor/github.com/openai/openai-go/webhooks/aliases.go−440

This diff is too big to show here.

vendor/github.com/openai/openai-go/webhooks/webhook.go−1208

This diff is too big to show here.

vendor/github.com/pkg/browser/LICENSE−23

This diff is too big to show here.

vendor/github.com/pkg/browser/README.md−55

This diff is too big to show here.

vendor/github.com/pkg/browser/browser.go−57

This diff is too big to show here.

vendor/github.com/pkg/browser/browser_darwin.go−5

This diff is too big to show here.

vendor/github.com/pkg/browser/browser_freebsd.go−14

This diff is too big to show here.

vendor/github.com/pkg/browser/browser_linux.go−21

This diff is too big to show here.

vendor/github.com/pkg/browser/browser_netbsd.go−14

This diff is too big to show here.

vendor/github.com/pkg/browser/browser_openbsd.go−14

This diff is too big to show here.

vendor/github.com/pkg/browser/browser_unsupported.go−12

This diff is too big to show here.

vendor/github.com/pkg/browser/browser_windows.go−7

This diff is too big to show here.

vendor/github.com/pmezard/go-difflib/LICENSE−27

This diff is too big to show here.

vendor/github.com/pmezard/go-difflib/difflib/difflib.go−772

This diff is too big to show here.

vendor/github.com/pressly/goose/v3/.gitignore−18

This diff is too big to show here.

vendor/github.com/pressly/goose/v3/.golangci.yaml−31

This diff is too big to show here.

vendor/github.com/pressly/goose/v3/.goreleaser.yaml−36

This diff is too big to show here.

vendor/github.com/pressly/goose/v3/CHANGELOG.md−291

This diff is too big to show here.

vendor/github.com/pressly/goose/v3/LICENSE−22

This diff is too big to show here.

vendor/github.com/pressly/goose/v3/Makefile−144

This diff is too big to show here.

vendor/github.com/pressly/goose/v3/README.md−493

This diff is too big to show here.

vendor/github.com/pressly/goose/v3/create.go−120

This diff is too big to show here.

vendor/github.com/pressly/goose/v3/database/dialect.go−172

This diff is too big to show here.

vendor/github.com/pressly/goose/v3/database/doc.go−14

This diff is too big to show here.

vendor/github.com/pressly/goose/v3/database/sql_extended.go−23

This diff is too big to show here.

vendor/github.com/pressly/goose/v3/database/store.go−66

This diff is too big to show here.

vendor/github.com/pressly/goose/v3/database/store_extended.go−33

This diff is too big to show here.

vendor/github.com/pressly/goose/v3/db.go−46

This diff is too big to show here.

vendor/github.com/pressly/goose/v3/dialect.go−64

This diff is too big to show here.

vendor/github.com/pressly/goose/v3/down.go−107

This diff is too big to show here.

vendor/github.com/pressly/goose/v3/fix.go−54

This diff is too big to show here.

vendor/github.com/pressly/goose/v3/globals.go−104

This diff is too big to show here.

vendor/github.com/pressly/goose/v3/goose.go−141

This diff is too big to show here.

vendor/github.com/pressly/goose/v3/helpers.go−84

This diff is too big to show here.

vendor/github.com/pressly/goose/v3/install.sh−37

This diff is too big to show here.

vendor/github.com/pressly/goose/v3/internal/controller/controller.go−37

This diff is too big to show here.

vendor/github.com/pressly/goose/v3/internal/dialect/dialectquery/clickhouse.go−44

This diff is too big to show here.

vendor/github.com/pressly/goose/v3/internal/dialect/dialectquery/dialectquery.go−59

This diff is too big to show here.

vendor/github.com/pressly/goose/v3/internal/dialect/dialectquery/mysql.go−53

This diff is too big to show here.

vendor/github.com/pressly/goose/v3/internal/dialect/dialectquery/postgres.go−54

This diff is too big to show here.

vendor/github.com/pressly/goose/v3/internal/dialect/dialectquery/redshift.go−43

This diff is too big to show here.

vendor/github.com/pressly/goose/v3/internal/dialect/dialectquery/sqlite3.go−42

This diff is too big to show here.

vendor/github.com/pressly/goose/v3/internal/dialect/dialectquery/sqlserver.go−42

This diff is too big to show here.

vendor/github.com/pressly/goose/v3/internal/dialect/dialectquery/starrocks.go−45

This diff is too big to show here.

vendor/github.com/pressly/goose/v3/internal/dialect/dialectquery/tidb.go−43

This diff is too big to show here.

vendor/github.com/pressly/goose/v3/internal/dialect/dialectquery/turso.go−7

This diff is too big to show here.

vendor/github.com/pressly/goose/v3/internal/dialect/dialectquery/vertica.go−43

This diff is too big to show here.

vendor/github.com/pressly/goose/v3/internal/dialect/dialectquery/ydb.go−53

This diff is too big to show here.

vendor/github.com/pressly/goose/v3/internal/dialect/dialects.go−18

This diff is too big to show here.

vendor/github.com/pressly/goose/v3/internal/dialect/store.go−169

This diff is too big to show here.

vendor/github.com/pressly/goose/v3/internal/gooseutil/resolve.go−124

This diff is too big to show here.

vendor/github.com/pressly/goose/v3/internal/sqlparser/parse.go−59

This diff is too big to show here.

vendor/github.com/pressly/goose/v3/internal/sqlparser/parser.go−394

This diff is too big to show here.

vendor/github.com/pressly/goose/v3/lock/postgres.go−118

This diff is too big to show here.

vendor/github.com/pressly/goose/v3/lock/session_locker.go−23

This diff is too big to show here.

vendor/github.com/pressly/goose/v3/lock/session_locker_options.go−98

This diff is too big to show here.

vendor/github.com/pressly/goose/v3/log.go−36

This diff is too big to show here.

vendor/github.com/pressly/goose/v3/migrate.go−378

This diff is too big to show here.

vendor/github.com/pressly/goose/v3/migration.go−398

This diff is too big to show here.

vendor/github.com/pressly/goose/v3/migration_sql.go−115

This diff is too big to show here.

vendor/github.com/pressly/goose/v3/osfs.go−28

This diff is too big to show here.

vendor/github.com/pressly/goose/v3/provider.go−650

This diff is too big to show here.

vendor/github.com/pressly/goose/v3/provider_collect.go−196

This diff is too big to show here.

vendor/github.com/pressly/goose/v3/provider_errors.go−48

This diff is too big to show here.

vendor/github.com/pressly/goose/v3/provider_options.go−203

This diff is too big to show here.

vendor/github.com/pressly/goose/v3/provider_run.go−453

This diff is too big to show here.

vendor/github.com/pressly/goose/v3/provider_types.go−91

This diff is too big to show here.

vendor/github.com/pressly/goose/v3/redo.go−51

This diff is too big to show here.

vendor/github.com/pressly/goose/v3/register.go−133

This diff is too big to show here.

vendor/github.com/pressly/goose/v3/reset.go−64

This diff is too big to show here.

vendor/github.com/pressly/goose/v3/status.go−64

This diff is too big to show here.

vendor/github.com/pressly/goose/v3/up.go−221

This diff is too big to show here.

vendor/github.com/pressly/goose/v3/version.go−52

This diff is too big to show here.

vendor/github.com/qjebbs/go-jsons/.gitignore−86

This diff is too big to show here.

vendor/github.com/qjebbs/go-jsons/LICENSE−21

This diff is too big to show here.

vendor/github.com/qjebbs/go-jsons/Makefile−9

This diff is too big to show here.

vendor/github.com/qjebbs/go-jsons/common.go−19

This diff is too big to show here.

vendor/github.com/qjebbs/go-jsons/formats.go−10

This diff is too big to show here.

vendor/github.com/qjebbs/go-jsons/jsons.go−32

This diff is too big to show here.

vendor/github.com/qjebbs/go-jsons/loader.go−101

This diff is too big to show here.

vendor/github.com/qjebbs/go-jsons/merge/map.go−55

This diff is too big to show here.

vendor/github.com/qjebbs/go-jsons/merger.go−170

This diff is too big to show here.

vendor/github.com/qjebbs/go-jsons/merger_extensions.go−27

This diff is too big to show here.

vendor/github.com/qjebbs/go-jsons/merger_loader.go−28

This diff is too big to show here.

vendor/github.com/qjebbs/go-jsons/readme.md−152

This diff is too big to show here.

vendor/github.com/qjebbs/go-jsons/rule/field.go−57

This diff is too big to show here.

vendor/github.com/qjebbs/go-jsons/rule/merge.go−75

This diff is too big to show here.

vendor/github.com/qjebbs/go-jsons/rule/rule.go−93

This diff is too big to show here.

vendor/github.com/qjebbs/go-jsons/rule/sort.go−95

This diff is too big to show here.

vendor/github.com/rivo/uniseg/LICENSE.txt−21

This diff is too big to show here.

vendor/github.com/rivo/uniseg/README.md−137

This diff is too big to show here.

vendor/github.com/rivo/uniseg/doc.go−108

This diff is too big to show here.

vendor/github.com/rivo/uniseg/eastasianwidth.go−2588

This diff is too big to show here.

vendor/github.com/rivo/uniseg/emojipresentation.go−295

This diff is too big to show here.

vendor/github.com/rivo/uniseg/gen_breaktest.go−215

This diff is too big to show here.

vendor/github.com/rivo/uniseg/gen_properties.go−261

This diff is too big to show here.

vendor/github.com/rivo/uniseg/grapheme.go−331

This diff is too big to show here.

vendor/github.com/rivo/uniseg/graphemeproperties.go−1915

This diff is too big to show here.

vendor/github.com/rivo/uniseg/graphemerules.go−176

This diff is too big to show here.

vendor/github.com/rivo/uniseg/line.go−134

This diff is too big to show here.

vendor/github.com/rivo/uniseg/lineproperties.go−3554

This diff is too big to show here.

vendor/github.com/rivo/uniseg/linerules.go−626

This diff is too big to show here.

vendor/github.com/rivo/uniseg/properties.go−208

This diff is too big to show here.

vendor/github.com/rivo/uniseg/sentence.go−90

This diff is too big to show here.

vendor/github.com/rivo/uniseg/sentenceproperties.go−2845

This diff is too big to show here.

vendor/github.com/rivo/uniseg/sentencerules.go−276

This diff is too big to show here.

vendor/github.com/rivo/uniseg/step.go−242

This diff is too big to show here.

vendor/github.com/rivo/uniseg/width.go−61

This diff is too big to show here.

vendor/github.com/rivo/uniseg/word.go−89

This diff is too big to show here.

vendor/github.com/rivo/uniseg/wordproperties.go−1883

This diff is too big to show here.

vendor/github.com/rivo/uniseg/wordrules.go−282

This diff is too big to show here.

vendor/github.com/sabhiram/go-gitignore/.gitignore−28

This diff is too big to show here.

vendor/github.com/sabhiram/go-gitignore/LICENSE−22

This diff is too big to show here.

vendor/github.com/sabhiram/go-gitignore/README.md−15

This diff is too big to show here.

vendor/github.com/sabhiram/go-gitignore/ignore.go−239

This diff is too big to show here.

vendor/github.com/sabhiram/go-gitignore/version_gen.go−12

This diff is too big to show here.

vendor/github.com/sahilm/fuzzy/.editorconfig−18

This diff is too big to show here.

vendor/github.com/sahilm/fuzzy/.gitignore−2

This diff is too big to show here.

vendor/github.com/sahilm/fuzzy/.travis.yml−8

This diff is too big to show here.

vendor/github.com/sahilm/fuzzy/CONTRIBUTING.md−1

This diff is too big to show here.

vendor/github.com/sahilm/fuzzy/Gopkg.lock−20

This diff is too big to show here.

vendor/github.com/sahilm/fuzzy/Gopkg.toml−4

This diff is too big to show here.

vendor/github.com/sahilm/fuzzy/LICENSE−21

This diff is too big to show here.

vendor/github.com/sahilm/fuzzy/Makefile−57

This diff is too big to show here.

vendor/github.com/sahilm/fuzzy/README.md−186

This diff is too big to show here.

vendor/github.com/sahilm/fuzzy/fuzzy.go−254

This diff is too big to show here.

vendor/github.com/sethvargo/go-retry/LICENSE−202

This diff is too big to show here.

vendor/github.com/sethvargo/go-retry/README.md−185

This diff is too big to show here.

vendor/github.com/sethvargo/go-retry/backoff.go−134

This diff is too big to show here.

vendor/github.com/sethvargo/go-retry/backoff_constant.go−25

This diff is too big to show here.

vendor/github.com/sethvargo/go-retry/backoff_exponential.go−47

This diff is too big to show here.

vendor/github.com/sethvargo/go-retry/backoff_fibonacci.go−56

This diff is too big to show here.

vendor/github.com/sethvargo/go-retry/rand.go−54

This diff is too big to show here.

vendor/github.com/sethvargo/go-retry/retry.go−104

This diff is too big to show here.

vendor/github.com/spf13/cast/.gitignore−25

This diff is too big to show here.

vendor/github.com/spf13/cast/LICENSE−21

This diff is too big to show here.

vendor/github.com/spf13/cast/Makefile−40

This diff is too big to show here.

vendor/github.com/spf13/cast/README.md−75

This diff is too big to show here.

vendor/github.com/spf13/cast/cast.go−176

This diff is too big to show here.

vendor/github.com/spf13/cast/caste.go−1510

This diff is too big to show here.

vendor/github.com/spf13/cast/timeformattype_string.go−27

This diff is too big to show here.

vendor/github.com/spf13/cobra/.gitignore−39

This diff is too big to show here.

vendor/github.com/spf13/cobra/.golangci.yml−57

This diff is too big to show here.

vendor/github.com/spf13/cobra/.mailmap−3

This diff is too big to show here.

vendor/github.com/spf13/cobra/CONDUCT.md−37

This diff is too big to show here.

vendor/github.com/spf13/cobra/CONTRIBUTING.md−50

This diff is too big to show here.

vendor/github.com/spf13/cobra/LICENSE.txt−174

This diff is too big to show here.

vendor/github.com/spf13/cobra/MAINTAINERS−13

This diff is too big to show here.

vendor/github.com/spf13/cobra/Makefile−35

This diff is too big to show here.

vendor/github.com/spf13/cobra/README.md−113

This diff is too big to show here.

vendor/github.com/spf13/cobra/active_help.go−60

This diff is too big to show here.

vendor/github.com/spf13/cobra/args.go−131

This diff is too big to show here.

vendor/github.com/spf13/cobra/bash_completions.go−709

This diff is too big to show here.

vendor/github.com/spf13/cobra/bash_completionsV2.go−484

This diff is too big to show here.

vendor/github.com/spf13/cobra/cobra.go−246

This diff is too big to show here.

vendor/github.com/spf13/cobra/command.go−2067

This diff is too big to show here.

vendor/github.com/spf13/cobra/command_notwin.go−20

This diff is too big to show here.

vendor/github.com/spf13/cobra/command_win.go−41

This diff is too big to show here.

vendor/github.com/spf13/cobra/completions.go−1005

This diff is too big to show here.

vendor/github.com/spf13/cobra/fish_completions.go−292

This diff is too big to show here.

vendor/github.com/spf13/cobra/flag_groups.go−290

This diff is too big to show here.

vendor/github.com/spf13/cobra/powershell_completions.go−350

This diff is too big to show here.

vendor/github.com/spf13/cobra/shell_completions.go−98

This diff is too big to show here.

vendor/github.com/spf13/cobra/zsh_completions.go−308

This diff is too big to show here.

vendor/github.com/spf13/pflag/.editorconfig−12

This diff is too big to show here.

vendor/github.com/spf13/pflag/.gitignore−2

This diff is too big to show here.

vendor/github.com/spf13/pflag/.golangci.yaml−4

This diff is too big to show here.

vendor/github.com/spf13/pflag/.travis.yml−22

This diff is too big to show here.

vendor/github.com/spf13/pflag/LICENSE−28

This diff is too big to show here.

vendor/github.com/spf13/pflag/README.md−296

This diff is too big to show here.

vendor/github.com/spf13/pflag/bool.go−94

This diff is too big to show here.

vendor/github.com/spf13/pflag/bool_slice.go−185

This diff is too big to show here.

vendor/github.com/spf13/pflag/bytes.go−209

This diff is too big to show here.

vendor/github.com/spf13/pflag/count.go−96

This diff is too big to show here.

vendor/github.com/spf13/pflag/duration.go−86

This diff is too big to show here.

vendor/github.com/spf13/pflag/duration_slice.go−166

This diff is too big to show here.

vendor/github.com/spf13/pflag/flag.go−1246

This diff is too big to show here.

vendor/github.com/spf13/pflag/float32.go−88

This diff is too big to show here.

vendor/github.com/spf13/pflag/float32_slice.go−174

This diff is too big to show here.

vendor/github.com/spf13/pflag/float64.go−84

This diff is too big to show here.

vendor/github.com/spf13/pflag/float64_slice.go−166

This diff is too big to show here.

vendor/github.com/spf13/pflag/golangflag.go−105

This diff is too big to show here.

vendor/github.com/spf13/pflag/int.go−84

This diff is too big to show here.

vendor/github.com/spf13/pflag/int16.go−88

This diff is too big to show here.

vendor/github.com/spf13/pflag/int32.go−88

This diff is too big to show here.

vendor/github.com/spf13/pflag/int32_slice.go−174

This diff is too big to show here.

vendor/github.com/spf13/pflag/int64.go−84

This diff is too big to show here.

vendor/github.com/spf13/pflag/int64_slice.go−166

This diff is too big to show here.

vendor/github.com/spf13/pflag/int8.go−88

This diff is too big to show here.

vendor/github.com/spf13/pflag/int_slice.go−158

This diff is too big to show here.

vendor/github.com/spf13/pflag/ip.go−97

This diff is too big to show here.

vendor/github.com/spf13/pflag/ip_slice.go−186

This diff is too big to show here.

vendor/github.com/spf13/pflag/ipmask.go−122

This diff is too big to show here.

vendor/github.com/spf13/pflag/ipnet.go−98

This diff is too big to show here.

vendor/github.com/spf13/pflag/ipnet_slice.go−147

This diff is too big to show here.

vendor/github.com/spf13/pflag/string.go−80

This diff is too big to show here.

vendor/github.com/spf13/pflag/string_array.go−125

This diff is too big to show here.

vendor/github.com/spf13/pflag/string_slice.go−163

This diff is too big to show here.

vendor/github.com/spf13/pflag/string_to_int.go−149

This diff is too big to show here.

vendor/github.com/spf13/pflag/string_to_int64.go−149

This diff is too big to show here.

vendor/github.com/spf13/pflag/string_to_string.go−160

This diff is too big to show here.

vendor/github.com/spf13/pflag/uint.go−88

This diff is too big to show here.

vendor/github.com/spf13/pflag/uint16.go−88

This diff is too big to show here.

vendor/github.com/spf13/pflag/uint32.go−88

This diff is too big to show here.

vendor/github.com/spf13/pflag/uint64.go−88

This diff is too big to show here.

vendor/github.com/spf13/pflag/uint8.go−88

This diff is too big to show here.

vendor/github.com/spf13/pflag/uint_slice.go−168

This diff is too big to show here.

vendor/github.com/srwiley/oksvg/.gitignore−2

This diff is too big to show here.

vendor/github.com/srwiley/oksvg/LICENSE−29

This diff is too big to show here.

vendor/github.com/srwiley/oksvg/README.md−49

This diff is too big to show here.

vendor/github.com/srwiley/oksvg/definitions.go−16

This diff is too big to show here.

vendor/github.com/srwiley/oksvg/draw.go−392

This diff is too big to show here.

vendor/github.com/srwiley/oksvg/icon_cursor.go−391

This diff is too big to show here.

vendor/github.com/srwiley/oksvg/path_cursor.go−397

This diff is too big to show here.

vendor/github.com/srwiley/oksvg/path_style.go−35

This diff is too big to show here.

vendor/github.com/srwiley/oksvg/public.go−287

This diff is too big to show here.

vendor/github.com/srwiley/oksvg/svg_icon.go−37

This diff is too big to show here.

vendor/github.com/srwiley/oksvg/svg_path.go−109

This diff is too big to show here.

vendor/github.com/srwiley/oksvg/utils.go−172

This diff is too big to show here.

vendor/github.com/srwiley/rasterx/LICENSE−29

This diff is too big to show here.

vendor/github.com/srwiley/rasterx/README.md−84

This diff is too big to show here.

vendor/github.com/srwiley/rasterx/dash.go−202

This diff is too big to show here.

vendor/github.com/srwiley/rasterx/fill.go−241

This diff is too big to show here.

vendor/github.com/srwiley/rasterx/geomx.go−306

This diff is too big to show here.

vendor/github.com/srwiley/rasterx/gradient.go−310

This diff is too big to show here.

vendor/github.com/srwiley/rasterx/matrix.go−191

This diff is too big to show here.

vendor/github.com/srwiley/rasterx/scan.go−181

This diff is too big to show here.

vendor/github.com/srwiley/rasterx/shapes.go−221

This diff is too big to show here.

vendor/github.com/srwiley/rasterx/stroke.go−677

This diff is too big to show here.

vendor/github.com/stretchr/testify/LICENSE−21

This diff is too big to show here.

vendor/github.com/stretchr/testify/assert/assertion_compare.go−489

This diff is too big to show here.

vendor/github.com/stretchr/testify/assert/assertion_format.go−841

This diff is too big to show here.

vendor/github.com/stretchr/testify/assert/assertion_format.go.tmpl−5

This diff is too big to show here.

vendor/github.com/stretchr/testify/assert/assertion_forward.go−1673

This diff is too big to show here.

vendor/github.com/stretchr/testify/assert/assertion_forward.go.tmpl−5

This diff is too big to show here.

vendor/github.com/stretchr/testify/assert/assertion_order.go−81

This diff is too big to show here.

vendor/github.com/stretchr/testify/assert/assertions.go−2184

This diff is too big to show here.

vendor/github.com/stretchr/testify/assert/doc.go−46

This diff is too big to show here.

vendor/github.com/stretchr/testify/assert/errors.go−10

This diff is too big to show here.

vendor/github.com/stretchr/testify/assert/forward_assertions.go−16

This diff is too big to show here.

vendor/github.com/stretchr/testify/assert/http_assertions.go−165

This diff is too big to show here.

vendor/github.com/stretchr/testify/assert/yaml/yaml_custom.go−25

This diff is too big to show here.

vendor/github.com/stretchr/testify/assert/yaml/yaml_default.go−37

This diff is too big to show here.

vendor/github.com/stretchr/testify/assert/yaml/yaml_fail.go−18

This diff is too big to show here.

vendor/github.com/stretchr/testify/require/doc.go−29

This diff is too big to show here.

vendor/github.com/stretchr/testify/require/forward_requirements.go−16

This diff is too big to show here.

vendor/github.com/stretchr/testify/require/require.go−2124

This diff is too big to show here.

vendor/github.com/stretchr/testify/require/require.go.tmpl−6

This diff is too big to show here.

vendor/github.com/stretchr/testify/require/require_forward.go−1674

This diff is too big to show here.

vendor/github.com/stretchr/testify/require/require_forward.go.tmpl−5

This diff is too big to show here.

vendor/github.com/stretchr/testify/require/requirements.go−29

This diff is too big to show here.

vendor/github.com/tetratelabs/wazero/.editorconfig−7

This diff is too big to show here.

vendor/github.com/tetratelabs/wazero/.gitattributes−2

This diff is too big to show here.

vendor/github.com/tetratelabs/wazero/.gitignore−46

This diff is too big to show here.

vendor/github.com/tetratelabs/wazero/.gitmodules−3

This diff is too big to show here.

vendor/github.com/tetratelabs/wazero/CONTRIBUTING.md−75

This diff is too big to show here.

vendor/github.com/tetratelabs/wazero/LICENSE−201

This diff is too big to show here.

vendor/github.com/tetratelabs/wazero/Makefile−364

This diff is too big to show here.

vendor/github.com/tetratelabs/wazero/NOTICE−2

This diff is too big to show here.

vendor/github.com/tetratelabs/wazero/RATIONALE.md−1587

This diff is too big to show here.

vendor/github.com/tetratelabs/wazero/README.md−139

This diff is too big to show here.

vendor/github.com/tetratelabs/wazero/api/features.go−214

This diff is too big to show here.

vendor/github.com/tetratelabs/wazero/api/wasm.go−766

This diff is too big to show here.

vendor/github.com/tetratelabs/wazero/builder.go−367

This diff is too big to show here.

vendor/github.com/tetratelabs/wazero/cache.go−123

This diff is too big to show here.

vendor/github.com/tetratelabs/wazero/codecov.yml−9

This diff is too big to show here.

vendor/github.com/tetratelabs/wazero/config.go−899

This diff is too big to show here.

vendor/github.com/tetratelabs/wazero/experimental/checkpoint.go−35

This diff is too big to show here.

vendor/github.com/tetratelabs/wazero/experimental/close.go−63

This diff is too big to show here.

vendor/github.com/tetratelabs/wazero/experimental/experimental.go−41

This diff is too big to show here.

vendor/github.com/tetratelabs/wazero/experimental/features.go−15

This diff is too big to show here.

vendor/github.com/tetratelabs/wazero/experimental/importresolver.go−19

This diff is too big to show here.

vendor/github.com/tetratelabs/wazero/experimental/listener.go−324

This diff is too big to show here.

vendor/github.com/tetratelabs/wazero/experimental/memory.go−52

This diff is too big to show here.

vendor/github.com/tetratelabs/wazero/experimental/sys/dir.go−92

This diff is too big to show here.

vendor/github.com/tetratelabs/wazero/experimental/sys/errno.go−98

This diff is too big to show here.

vendor/github.com/tetratelabs/wazero/experimental/sys/error.go−45

This diff is too big to show here.

vendor/github.com/tetratelabs/wazero/experimental/sys/file.go−316

This diff is too big to show here.

vendor/github.com/tetratelabs/wazero/experimental/sys/fs.go−292

This diff is too big to show here.

vendor/github.com/tetratelabs/wazero/experimental/sys/oflag.go−70

This diff is too big to show here.

vendor/github.com/tetratelabs/wazero/experimental/sys/syscall_errno.go−106

This diff is too big to show here.

vendor/github.com/tetratelabs/wazero/experimental/sys/syscall_errno_notwindows.go−13

This diff is too big to show here.

vendor/github.com/tetratelabs/wazero/experimental/sys/syscall_errno_unsupported.go−7

This diff is too big to show here.

vendor/github.com/tetratelabs/wazero/experimental/sys/syscall_errno_windows.go−66

This diff is too big to show here.

vendor/github.com/tetratelabs/wazero/experimental/sys/time.go−10

This diff is too big to show here.

vendor/github.com/tetratelabs/wazero/experimental/sys/unimplemented.go−160

This diff is too big to show here.

vendor/github.com/tetratelabs/wazero/fsconfig.go−213

This diff is too big to show here.

vendor/github.com/tetratelabs/wazero/internal/descriptor/table.go−149

This diff is too big to show here.

vendor/github.com/tetratelabs/wazero/internal/engine/interpreter/compiler.go−3632

This diff is too big to show here.

vendor/github.com/tetratelabs/wazero/internal/engine/interpreter/format.go−22

This diff is too big to show here.

vendor/github.com/tetratelabs/wazero/internal/engine/interpreter/interpreter.go−4596

This diff is too big to show here.

vendor/github.com/tetratelabs/wazero/internal/engine/interpreter/operations.go−2812

This diff is too big to show here.

vendor/github.com/tetratelabs/wazero/internal/engine/interpreter/signature.go−767

This diff is too big to show here.

vendor/github.com/tetratelabs/wazero/internal/engine/wazevo/backend/abi.go−170

This diff is too big to show here.

vendor/github.com/tetratelabs/wazero/internal/engine/wazevo/backend/backend.go−3

This diff is too big to show here.

vendor/github.com/tetratelabs/wazero/internal/engine/wazevo/backend/compiler.go−399

This diff is too big to show here.

vendor/github.com/tetratelabs/wazero/internal/engine/wazevo/backend/compiler_lower.go−226

This diff is too big to show here.

vendor/github.com/tetratelabs/wazero/internal/engine/wazevo/backend/go_call.go−33

This diff is too big to show here.

vendor/github.com/tetratelabs/wazero/internal/engine/wazevo/backend/isa/amd64/abi.go−186

This diff is too big to show here.

vendor/github.com/tetratelabs/wazero/internal/engine/wazevo/backend/isa/amd64/abi_entry_amd64.go−9

This diff is too big to show here.

vendor/github.com/tetratelabs/wazero/internal/engine/wazevo/backend/isa/amd64/abi_entry_amd64.s−29

This diff is too big to show here.

vendor/github.com/tetratelabs/wazero/internal/engine/wazevo/backend/isa/amd64/abi_entry_preamble.go−248

This diff is too big to show here.

vendor/github.com/tetratelabs/wazero/internal/engine/wazevo/backend/isa/amd64/abi_go_call.go−440

This diff is too big to show here.

vendor/github.com/tetratelabs/wazero/internal/engine/wazevo/backend/isa/amd64/cond.go−168

This diff is too big to show here.

vendor/github.com/tetratelabs/wazero/internal/engine/wazevo/backend/isa/amd64/ext.go−35

This diff is too big to show here.

vendor/github.com/tetratelabs/wazero/internal/engine/wazevo/backend/isa/amd64/instr.go−2447

This diff is too big to show here.

vendor/github.com/tetratelabs/wazero/internal/engine/wazevo/backend/isa/amd64/instr_encoding.go−1683

This diff is too big to show here.

vendor/github.com/tetratelabs/wazero/internal/engine/wazevo/backend/isa/amd64/lower_constant.go−71

This diff is too big to show here.

vendor/github.com/tetratelabs/wazero/internal/engine/wazevo/backend/isa/amd64/lower_mem.go−187

This diff is too big to show here.

vendor/github.com/tetratelabs/wazero/internal/engine/wazevo/backend/isa/amd64/machine.go−3733

This diff is too big to show here.

vendor/github.com/tetratelabs/wazero/internal/engine/wazevo/backend/isa/amd64/machine_pro_epi_logue.go−303

This diff is too big to show here.

vendor/github.com/tetratelabs/wazero/internal/engine/wazevo/backend/isa/amd64/machine_regalloc.go−352

This diff is too big to show here.

vendor/github.com/tetratelabs/wazero/internal/engine/wazevo/backend/isa/amd64/machine_vec.go−992

This diff is too big to show here.

vendor/github.com/tetratelabs/wazero/internal/engine/wazevo/backend/isa/amd64/operands.go−336

This diff is too big to show here.

vendor/github.com/tetratelabs/wazero/internal/engine/wazevo/backend/isa/amd64/reg.go−181

This diff is too big to show here.

vendor/github.com/tetratelabs/wazero/internal/engine/wazevo/backend/isa/amd64/stack.go−130

This diff is too big to show here.

vendor/github.com/tetratelabs/wazero/internal/engine/wazevo/backend/isa/arm64/abi.go−333

This diff is too big to show here.

vendor/github.com/tetratelabs/wazero/internal/engine/wazevo/backend/isa/arm64/abi_entry_arm64.go−9

This diff is too big to show here.

vendor/github.com/tetratelabs/wazero/internal/engine/wazevo/backend/isa/arm64/abi_entry_arm64.s−29

This diff is too big to show here.

vendor/github.com/tetratelabs/wazero/internal/engine/wazevo/backend/isa/arm64/abi_entry_preamble.go−233

This diff is too big to show here.

vendor/github.com/tetratelabs/wazero/internal/engine/wazevo/backend/isa/arm64/abi_go_call.go−430

This diff is too big to show here.

vendor/github.com/tetratelabs/wazero/internal/engine/wazevo/backend/isa/arm64/cond.go−215

This diff is too big to show here.

vendor/github.com/tetratelabs/wazero/internal/engine/wazevo/backend/isa/arm64/instr.go−2534

This diff is too big to show here.

vendor/github.com/tetratelabs/wazero/internal/engine/wazevo/backend/isa/arm64/instr_encoding.go−2351

This diff is too big to show here.

vendor/github.com/tetratelabs/wazero/internal/engine/wazevo/backend/isa/arm64/lower_constant.go−301

This diff is too big to show here.

vendor/github.com/tetratelabs/wazero/internal/engine/wazevo/backend/isa/arm64/lower_instr.go−2224

This diff is too big to show here.

vendor/github.com/tetratelabs/wazero/internal/engine/wazevo/backend/isa/arm64/lower_instr_operands.go−340

This diff is too big to show here.

vendor/github.com/tetratelabs/wazero/internal/engine/wazevo/backend/isa/arm64/lower_mem.go−451

This diff is too big to show here.

vendor/github.com/tetratelabs/wazero/internal/engine/wazevo/backend/isa/arm64/machine.go−631

This diff is too big to show here.

vendor/github.com/tetratelabs/wazero/internal/engine/wazevo/backend/isa/arm64/machine_pro_epi_logue.go−467

This diff is too big to show here.

vendor/github.com/tetratelabs/wazero/internal/engine/wazevo/backend/isa/arm64/machine_regalloc.go−351

This diff is too big to show here.

vendor/github.com/tetratelabs/wazero/internal/engine/wazevo/backend/isa/arm64/machine_relocation.go−122

This diff is too big to show here.

vendor/github.com/tetratelabs/wazero/internal/engine/wazevo/backend/isa/arm64/reg.go−397

This diff is too big to show here.

vendor/github.com/tetratelabs/wazero/internal/engine/wazevo/backend/isa/arm64/unwind_stack.go−84

This diff is too big to show here.

vendor/github.com/tetratelabs/wazero/internal/engine/wazevo/backend/machine.go−119

This diff is too big to show here.

vendor/github.com/tetratelabs/wazero/internal/engine/wazevo/backend/regalloc/api.go−124

This diff is too big to show here.

vendor/github.com/tetratelabs/wazero/internal/engine/wazevo/backend/regalloc/reg.go−123

This diff is too big to show here.

vendor/github.com/tetratelabs/wazero/internal/engine/wazevo/backend/regalloc/regalloc.go−1189

This diff is too big to show here.

vendor/github.com/tetratelabs/wazero/internal/engine/wazevo/backend/regalloc/regset.go−96

This diff is too big to show here.

vendor/github.com/tetratelabs/wazero/internal/engine/wazevo/backend/vdef.go−19

This diff is too big to show here.

vendor/github.com/tetratelabs/wazero/internal/engine/wazevo/call_engine.go−708

This diff is too big to show here.

vendor/github.com/tetratelabs/wazero/internal/engine/wazevo/engine.go−843

This diff is too big to show here.

vendor/github.com/tetratelabs/wazero/internal/engine/wazevo/engine_cache.go−303

This diff is too big to show here.

vendor/github.com/tetratelabs/wazero/internal/engine/wazevo/entrypoint_amd64.go−15

This diff is too big to show here.

vendor/github.com/tetratelabs/wazero/internal/engine/wazevo/entrypoint_arm64.go−15

This diff is too big to show here.

vendor/github.com/tetratelabs/wazero/internal/engine/wazevo/entrypoint_others.go−15

This diff is too big to show here.

vendor/github.com/tetratelabs/wazero/internal/engine/wazevo/frontend/frontend.go−567

This diff is too big to show here.

vendor/github.com/tetratelabs/wazero/internal/engine/wazevo/frontend/lower.go−4261

This diff is too big to show here.

vendor/github.com/tetratelabs/wazero/internal/engine/wazevo/frontend/misc.go−10

This diff is too big to show here.

vendor/github.com/tetratelabs/wazero/internal/engine/wazevo/frontend/sort_id.go−13

This diff is too big to show here.

vendor/github.com/tetratelabs/wazero/internal/engine/wazevo/hostmodule.go−88

This diff is too big to show here.

vendor/github.com/tetratelabs/wazero/internal/engine/wazevo/isa_amd64.go−30

This diff is too big to show here.

vendor/github.com/tetratelabs/wazero/internal/engine/wazevo/isa_arm64.go−32

This diff is too big to show here.

vendor/github.com/tetratelabs/wazero/internal/engine/wazevo/isa_other.go−29

This diff is too big to show here.

vendor/github.com/tetratelabs/wazero/internal/engine/wazevo/memmove.go−11

This diff is too big to show here.

vendor/github.com/tetratelabs/wazero/internal/engine/wazevo/module_engine.go−331

This diff is too big to show here.

vendor/github.com/tetratelabs/wazero/internal/engine/wazevo/ssa/basic_block.go−379

This diff is too big to show here.

vendor/github.com/tetratelabs/wazero/internal/engine/wazevo/ssa/basic_block_sort.go−32

This diff is too big to show here.

vendor/github.com/tetratelabs/wazero/internal/engine/wazevo/ssa/builder.go−790

This diff is too big to show here.

vendor/github.com/tetratelabs/wazero/internal/engine/wazevo/ssa/cmp.go−107

This diff is too big to show here.

vendor/github.com/tetratelabs/wazero/internal/engine/wazevo/ssa/funcref.go−12

This diff is too big to show here.

vendor/github.com/tetratelabs/wazero/internal/engine/wazevo/ssa/instructions.go−2976

This diff is too big to show here.

vendor/github.com/tetratelabs/wazero/internal/engine/wazevo/ssa/pass.go−393

This diff is too big to show here.

vendor/github.com/tetratelabs/wazero/internal/engine/wazevo/ssa/pass_blk_layouts.go−334

This diff is too big to show here.

vendor/github.com/tetratelabs/wazero/internal/engine/wazevo/ssa/pass_cfg.go−313

This diff is too big to show here.

vendor/github.com/tetratelabs/wazero/internal/engine/wazevo/ssa/signature.go−49

This diff is too big to show here.

vendor/github.com/tetratelabs/wazero/internal/engine/wazevo/ssa/ssa.go−14

This diff is too big to show here.

vendor/github.com/tetratelabs/wazero/internal/engine/wazevo/ssa/type.go−115

This diff is too big to show here.

vendor/github.com/tetratelabs/wazero/internal/engine/wazevo/ssa/vs.go−114

This diff is too big to show here.

vendor/github.com/tetratelabs/wazero/internal/engine/wazevo/wazevoapi/debug_options.go−196

This diff is too big to show here.

vendor/github.com/tetratelabs/wazero/internal/engine/wazevo/wazevoapi/exitcode.go−109

This diff is too big to show here.

vendor/github.com/tetratelabs/wazero/internal/engine/wazevo/wazevoapi/offsetdata.go−216

This diff is too big to show here.

vendor/github.com/tetratelabs/wazero/internal/engine/wazevo/wazevoapi/perfmap.go−96

This diff is too big to show here.

vendor/github.com/tetratelabs/wazero/internal/engine/wazevo/wazevoapi/perfmap_disabled.go−5

This diff is too big to show here.

vendor/github.com/tetratelabs/wazero/internal/engine/wazevo/wazevoapi/perfmap_enabled.go−5

This diff is too big to show here.

vendor/github.com/tetratelabs/wazero/internal/engine/wazevo/wazevoapi/pool.go−215

This diff is too big to show here.

vendor/github.com/tetratelabs/wazero/internal/engine/wazevo/wazevoapi/ptr.go−15

This diff is too big to show here.

vendor/github.com/tetratelabs/wazero/internal/engine/wazevo/wazevoapi/queue.go−26

This diff is too big to show here.

vendor/github.com/tetratelabs/wazero/internal/engine/wazevo/wazevoapi/resetmap.go−11

This diff is too big to show here.

vendor/github.com/tetratelabs/wazero/internal/expctxkeys/checkpoint.go−10

This diff is too big to show here.

vendor/github.com/tetratelabs/wazero/internal/expctxkeys/close.go−5

This diff is too big to show here.

vendor/github.com/tetratelabs/wazero/internal/expctxkeys/expctxkeys.go−2

This diff is too big to show here.

vendor/github.com/tetratelabs/wazero/internal/expctxkeys/importresolver.go−6

This diff is too big to show here.

vendor/github.com/tetratelabs/wazero/internal/expctxkeys/listener.go−7

This diff is too big to show here.

vendor/github.com/tetratelabs/wazero/internal/expctxkeys/memory.go−4

This diff is too big to show here.

vendor/github.com/tetratelabs/wazero/internal/filecache/compilationcache.go−42

This diff is too big to show here.

vendor/github.com/tetratelabs/wazero/internal/filecache/file_cache.go−76

This diff is too big to show here.

vendor/github.com/tetratelabs/wazero/internal/fsapi/file.go−69

This diff is too big to show here.

vendor/github.com/tetratelabs/wazero/internal/fsapi/poll.go−20

This diff is too big to show here.

vendor/github.com/tetratelabs/wazero/internal/fsapi/unimplemented.go−27

This diff is too big to show here.

vendor/github.com/tetratelabs/wazero/internal/ieee754/ieee754.go−29

This diff is too big to show here.

vendor/github.com/tetratelabs/wazero/internal/internalapi/internal.go−9

This diff is too big to show here.

vendor/github.com/tetratelabs/wazero/internal/leb128/leb128.go−285

This diff is too big to show here.

vendor/github.com/tetratelabs/wazero/internal/moremath/moremath.go−271

This diff is too big to show here.

vendor/github.com/tetratelabs/wazero/internal/platform/cpuid.go−35

This diff is too big to show here.

vendor/github.com/tetratelabs/wazero/internal/platform/cpuid_amd64.go−80

This diff is too big to show here.

vendor/github.com/tetratelabs/wazero/internal/platform/cpuid_amd64.s−16

This diff is too big to show here.

vendor/github.com/tetratelabs/wazero/internal/platform/cpuid_arm64.go−71

This diff is too big to show here.

vendor/github.com/tetratelabs/wazero/internal/platform/cpuid_arm64.s−21

This diff is too big to show here.

vendor/github.com/tetratelabs/wazero/internal/platform/cpuid_unsupported.go−17

This diff is too big to show here.

vendor/github.com/tetratelabs/wazero/internal/platform/crypto.go−17

This diff is too big to show here.

vendor/github.com/tetratelabs/wazero/internal/platform/mmap_linux.go−76

This diff is too big to show here.

vendor/github.com/tetratelabs/wazero/internal/platform/mmap_other.go−18

This diff is too big to show here.

vendor/github.com/tetratelabs/wazero/internal/platform/mmap_unix.go−32

This diff is too big to show here.

vendor/github.com/tetratelabs/wazero/internal/platform/mmap_unsupported.go−26

This diff is too big to show here.

vendor/github.com/tetratelabs/wazero/internal/platform/mmap_windows.go−95

This diff is too big to show here.

vendor/github.com/tetratelabs/wazero/internal/platform/mprotect_bsd.go−22

This diff is too big to show here.

vendor/github.com/tetratelabs/wazero/internal/platform/mprotect_syscall.go−10

This diff is too big to show here.

vendor/github.com/tetratelabs/wazero/internal/platform/mprotect_unsupported.go−9

This diff is too big to show here.

vendor/github.com/tetratelabs/wazero/internal/platform/path.go−6

This diff is too big to show here.

vendor/github.com/tetratelabs/wazero/internal/platform/path_windows.go−17

This diff is too big to show here.

vendor/github.com/tetratelabs/wazero/internal/platform/platform.go−56

This diff is too big to show here.

vendor/github.com/tetratelabs/wazero/internal/platform/time.go−76

This diff is too big to show here.

vendor/github.com/tetratelabs/wazero/internal/platform/time_cgo.go−11

This diff is too big to show here.

vendor/github.com/tetratelabs/wazero/internal/platform/time_notcgo.go−7

This diff is too big to show here.

vendor/github.com/tetratelabs/wazero/internal/platform/time_windows.go−40

This diff is too big to show here.

vendor/github.com/tetratelabs/wazero/internal/sock/sock.go−89

This diff is too big to show here.

vendor/github.com/tetratelabs/wazero/internal/sock/sock_supported.go−11

This diff is too big to show here.

vendor/github.com/tetratelabs/wazero/internal/sock/sock_unsupported.go−10

This diff is too big to show here.

vendor/github.com/tetratelabs/wazero/internal/sys/fs.go−457

This diff is too big to show here.

vendor/github.com/tetratelabs/wazero/internal/sys/lazy.go−151

This diff is too big to show here.

vendor/github.com/tetratelabs/wazero/internal/sys/stdio.go−128

This diff is too big to show here.

vendor/github.com/tetratelabs/wazero/internal/sys/sys.go−228

This diff is too big to show here.

vendor/github.com/tetratelabs/wazero/internal/sysfs/adapter.go−105

This diff is too big to show here.

vendor/github.com/tetratelabs/wazero/internal/sysfs/datasync_linux.go−14

This diff is too big to show here.

vendor/github.com/tetratelabs/wazero/internal/sysfs/datasync_tinygo.go−13

This diff is too big to show here.

vendor/github.com/tetratelabs/wazero/internal/sysfs/datasync_unsupported.go−14

This diff is too big to show here.

vendor/github.com/tetratelabs/wazero/internal/sysfs/dir.go−24

This diff is too big to show here.

vendor/github.com/tetratelabs/wazero/internal/sysfs/dirfs.go−99

This diff is too big to show here.

vendor/github.com/tetratelabs/wazero/internal/sysfs/dirfs_supported.go−48

This diff is too big to show here.

vendor/github.com/tetratelabs/wazero/internal/sysfs/dirfs_unsupported.go−34

This diff is too big to show here.

vendor/github.com/tetratelabs/wazero/internal/sysfs/file.go−523

This diff is too big to show here.

vendor/github.com/tetratelabs/wazero/internal/sysfs/file_unix.go−39

This diff is too big to show here.

vendor/github.com/tetratelabs/wazero/internal/sysfs/file_unsupported.go−28

This diff is too big to show here.

vendor/github.com/tetratelabs/wazero/internal/sysfs/file_windows.go−175

This diff is too big to show here.

vendor/github.com/tetratelabs/wazero/internal/sysfs/futimens.go−37

This diff is too big to show here.

vendor/github.com/tetratelabs/wazero/internal/sysfs/futimens_darwin.go−51

This diff is too big to show here.

vendor/github.com/tetratelabs/wazero/internal/sysfs/futimens_darwin.s−8

This diff is too big to show here.

vendor/github.com/tetratelabs/wazero/internal/sysfs/futimens_linux.go−49

This diff is too big to show here.

vendor/github.com/tetratelabs/wazero/internal/sysfs/futimens_unsupported.go−18

This diff is too big to show here.

vendor/github.com/tetratelabs/wazero/internal/sysfs/futimens_windows.go−42

This diff is too big to show here.

vendor/github.com/tetratelabs/wazero/internal/sysfs/ino.go−22

This diff is too big to show here.

vendor/github.com/tetratelabs/wazero/internal/sysfs/ino_plan9.go−15

This diff is too big to show here.

vendor/github.com/tetratelabs/wazero/internal/sysfs/ino_tinygo.go−14

This diff is too big to show here.

vendor/github.com/tetratelabs/wazero/internal/sysfs/ino_windows.go−28

This diff is too big to show here.

vendor/github.com/tetratelabs/wazero/internal/sysfs/nonblock_unix.go−17

This diff is too big to show here.

vendor/github.com/tetratelabs/wazero/internal/sysfs/nonblock_unsupported.go−13

This diff is too big to show here.

vendor/github.com/tetratelabs/wazero/internal/sysfs/nonblock_windows.go−23

This diff is too big to show here.

vendor/github.com/tetratelabs/wazero/internal/sysfs/oflag.go−38

This diff is too big to show here.

vendor/github.com/tetratelabs/wazero/internal/sysfs/open_file_darwin.go−26

This diff is too big to show here.

vendor/github.com/tetratelabs/wazero/internal/sysfs/open_file_freebsd.go−24

This diff is too big to show here.

vendor/github.com/tetratelabs/wazero/internal/sysfs/open_file_linux.go−30

This diff is too big to show here.

vendor/github.com/tetratelabs/wazero/internal/sysfs/open_file_notwindows.go−20

This diff is too big to show here.

vendor/github.com/tetratelabs/wazero/internal/sysfs/open_file_sun.go−31

This diff is too big to show here.

vendor/github.com/tetratelabs/wazero/internal/sysfs/open_file_tinygo.go−25

This diff is too big to show here.

vendor/github.com/tetratelabs/wazero/internal/sysfs/open_file_unsupported.go−18

This diff is too big to show here.

vendor/github.com/tetratelabs/wazero/internal/sysfs/open_file_windows.go−161

This diff is too big to show here.

vendor/github.com/tetratelabs/wazero/internal/sysfs/osfile.go−319

This diff is too big to show here.

vendor/github.com/tetratelabs/wazero/internal/sysfs/poll.go−18

This diff is too big to show here.

vendor/github.com/tetratelabs/wazero/internal/sysfs/poll_darwin.go−55

This diff is too big to show here.

vendor/github.com/tetratelabs/wazero/internal/sysfs/poll_darwin.s−8

This diff is too big to show here.

vendor/github.com/tetratelabs/wazero/internal/sysfs/poll_linux.go−59

This diff is too big to show here.

vendor/github.com/tetratelabs/wazero/internal/sysfs/poll_unsupported.go−13

This diff is too big to show here.

vendor/github.com/tetratelabs/wazero/internal/sysfs/poll_windows.go−224

This diff is too big to show here.

vendor/github.com/tetratelabs/wazero/internal/sysfs/readfs.go−117

This diff is too big to show here.

vendor/github.com/tetratelabs/wazero/internal/sysfs/rename.go−16

This diff is too big to show here.

vendor/github.com/tetratelabs/wazero/internal/sysfs/rename_plan9.go−14

This diff is too big to show here.

vendor/github.com/tetratelabs/wazero/internal/sysfs/rename_windows.go−55

This diff is too big to show here.

vendor/github.com/tetratelabs/wazero/internal/sysfs/sock.go−187

This diff is too big to show here.

vendor/github.com/tetratelabs/wazero/internal/sysfs/sock_supported.go−77

This diff is too big to show here.

vendor/github.com/tetratelabs/wazero/internal/sysfs/sock_unix.go−49

This diff is too big to show here.

vendor/github.com/tetratelabs/wazero/internal/sysfs/sock_unsupported.go−81

This diff is too big to show here.

vendor/github.com/tetratelabs/wazero/internal/sysfs/sock_windows.go−80

This diff is too big to show here.

vendor/github.com/tetratelabs/wazero/internal/sysfs/stat.go−16

This diff is too big to show here.

vendor/github.com/tetratelabs/wazero/internal/sysfs/stat_bsd.go−37

This diff is too big to show here.

vendor/github.com/tetratelabs/wazero/internal/sysfs/stat_linux.go−40

This diff is too big to show here.

vendor/github.com/tetratelabs/wazero/internal/sysfs/stat_unsupported.go−40

This diff is too big to show here.

vendor/github.com/tetratelabs/wazero/internal/sysfs/stat_windows.go−120

This diff is too big to show here.

vendor/github.com/tetratelabs/wazero/internal/sysfs/sync.go−13

This diff is too big to show here.

vendor/github.com/tetratelabs/wazero/internal/sysfs/sync_windows.go−20

This diff is too big to show here.

vendor/github.com/tetratelabs/wazero/internal/sysfs/syscall6_darwin.go−13

This diff is too big to show here.

vendor/github.com/tetratelabs/wazero/internal/sysfs/sysfs.go−6

This diff is too big to show here.

vendor/github.com/tetratelabs/wazero/internal/sysfs/unlink.go−17

This diff is too big to show here.

vendor/github.com/tetratelabs/wazero/internal/sysfs/unlink_plan9.go−12

This diff is too big to show here.

vendor/github.com/tetratelabs/wazero/internal/sysfs/unlink_windows.go−25

This diff is too big to show here.

vendor/github.com/tetratelabs/wazero/internal/u32/u32.go−11

This diff is too big to show here.

vendor/github.com/tetratelabs/wazero/internal/u64/u64.go−15

This diff is too big to show here.

vendor/github.com/tetratelabs/wazero/internal/version/version.go−52

This diff is too big to show here.

vendor/github.com/tetratelabs/wazero/internal/wasm/binary/code.go−100

This diff is too big to show here.

vendor/github.com/tetratelabs/wazero/internal/wasm/binary/const_expr.go−105

This diff is too big to show here.

vendor/github.com/tetratelabs/wazero/internal/wasm/binary/custom.go−22

This diff is too big to show here.

vendor/github.com/tetratelabs/wazero/internal/wasm/binary/data.go−79

This diff is too big to show here.

vendor/github.com/tetratelabs/wazero/internal/wasm/binary/decoder.go−193

This diff is too big to show here.

vendor/github.com/tetratelabs/wazero/internal/wasm/binary/element.go−269

This diff is too big to show here.

vendor/github.com/tetratelabs/wazero/internal/wasm/binary/errors.go−11

This diff is too big to show here.

vendor/github.com/tetratelabs/wazero/internal/wasm/binary/export.go−32

This diff is too big to show here.

vendor/github.com/tetratelabs/wazero/internal/wasm/binary/function.go−56

This diff is too big to show here.

vendor/github.com/tetratelabs/wazero/internal/wasm/binary/global.go−50

This diff is too big to show here.

vendor/github.com/tetratelabs/wazero/internal/wasm/binary/header.go−9

This diff is too big to show here.

vendor/github.com/tetratelabs/wazero/internal/wasm/binary/import.go−52

This diff is too big to show here.

vendor/github.com/tetratelabs/wazero/internal/wasm/binary/limits.go−47

This diff is too big to show here.

vendor/github.com/tetratelabs/wazero/internal/wasm/binary/memory.go−42

This diff is too big to show here.

vendor/github.com/tetratelabs/wazero/internal/wasm/binary/names.go−151

This diff is too big to show here.

vendor/github.com/tetratelabs/wazero/internal/wasm/binary/section.go−226

This diff is too big to show here.

vendor/github.com/tetratelabs/wazero/internal/wasm/binary/table.go−43

This diff is too big to show here.

vendor/github.com/tetratelabs/wazero/internal/wasm/binary/value.go−59

This diff is too big to show here.

vendor/github.com/tetratelabs/wazero/internal/wasm/counts.go−51

This diff is too big to show here.

vendor/github.com/tetratelabs/wazero/internal/wasm/engine.go−76

This diff is too big to show here.

vendor/github.com/tetratelabs/wazero/internal/wasm/func_validation.go−2336

This diff is too big to show here.

vendor/github.com/tetratelabs/wazero/internal/wasm/function_definition.go−188

This diff is too big to show here.

vendor/github.com/tetratelabs/wazero/internal/wasm/global.go−55

This diff is too big to show here.

vendor/github.com/tetratelabs/wazero/internal/wasm/gofunc.go−279

This diff is too big to show here.

vendor/github.com/tetratelabs/wazero/internal/wasm/host.go−179

This diff is too big to show here.

vendor/github.com/tetratelabs/wazero/internal/wasm/instruction.go−1866

This diff is too big to show here.

vendor/github.com/tetratelabs/wazero/internal/wasm/memory.go−476

This diff is too big to show here.

vendor/github.com/tetratelabs/wazero/internal/wasm/memory_definition.go−128

This diff is too big to show here.

vendor/github.com/tetratelabs/wazero/internal/wasm/module.go−1078

This diff is too big to show here.

vendor/github.com/tetratelabs/wazero/internal/wasm/module_instance.go−251

This diff is too big to show here.

vendor/github.com/tetratelabs/wazero/internal/wasm/module_instance_lookup.go−73

This diff is too big to show here.

vendor/github.com/tetratelabs/wazero/internal/wasm/store.go−679

This diff is too big to show here.

vendor/github.com/tetratelabs/wazero/internal/wasm/store_module_list.go−95

This diff is too big to show here.

vendor/github.com/tetratelabs/wazero/internal/wasm/table.go−339

This diff is too big to show here.

vendor/github.com/tetratelabs/wazero/internal/wasmdebug/debug.go−170

This diff is too big to show here.

vendor/github.com/tetratelabs/wazero/internal/wasmdebug/dwarf.go−225

This diff is too big to show here.

vendor/github.com/tetratelabs/wazero/internal/wasmruntime/errors.go−50

This diff is too big to show here.

vendor/github.com/tetratelabs/wazero/netlify.toml−15

This diff is too big to show here.

vendor/github.com/tetratelabs/wazero/runtime.go−399

This diff is too big to show here.

vendor/github.com/tetratelabs/wazero/sys/clock.go−26

This diff is too big to show here.

vendor/github.com/tetratelabs/wazero/sys/error.go−83

This diff is too big to show here.

vendor/github.com/tetratelabs/wazero/sys/stat.go−105

This diff is too big to show here.

vendor/github.com/tetratelabs/wazero/sys/stat_bsd.go−29

This diff is too big to show here.

vendor/github.com/tetratelabs/wazero/sys/stat_linux.go−32

This diff is too big to show here.

vendor/github.com/tetratelabs/wazero/sys/stat_unsupported.go−14

This diff is too big to show here.

vendor/github.com/tetratelabs/wazero/sys/stat_windows.go−26

This diff is too big to show here.

vendor/github.com/tidwall/gjson/LICENSE−20

This diff is too big to show here.

vendor/github.com/tidwall/gjson/README.md−492

This diff is too big to show here.

vendor/github.com/tidwall/gjson/SYNTAX.md−360

This diff is too big to show here.

vendor/github.com/tidwall/gjson/gjson.go−3603

This diff is too big to show here.

vendor/github.com/tidwall/match/LICENSE−20

This diff is too big to show here.

vendor/github.com/tidwall/match/README.md−29

This diff is too big to show here.

vendor/github.com/tidwall/match/match.go−237

This diff is too big to show here.

vendor/github.com/tidwall/pretty/LICENSE−20

This diff is too big to show here.

vendor/github.com/tidwall/pretty/README.md−122

This diff is too big to show here.

vendor/github.com/tidwall/pretty/pretty.go−682

This diff is too big to show here.

vendor/github.com/tidwall/sjson/LICENSE−21

This diff is too big to show here.

vendor/github.com/tidwall/sjson/README.md−278

This diff is too big to show here.

vendor/github.com/tidwall/sjson/logo.png

This diff is too big to show here.

vendor/github.com/tidwall/sjson/sjson.go−737

This diff is too big to show here.

vendor/github.com/xo/terminfo/.gitignore−9

This diff is too big to show here.

vendor/github.com/xo/terminfo/LICENSE−21

This diff is too big to show here.

vendor/github.com/xo/terminfo/README.md−139

This diff is too big to show here.

vendor/github.com/xo/terminfo/caps.go−31

This diff is too big to show here.

vendor/github.com/xo/terminfo/capvals.go−1525

This diff is too big to show here.

vendor/github.com/xo/terminfo/color.go−88

This diff is too big to show here.

vendor/github.com/xo/terminfo/dec.go−245

This diff is too big to show here.

vendor/github.com/xo/terminfo/load.go−64

This diff is too big to show here.

vendor/github.com/xo/terminfo/param.go−405

This diff is too big to show here.

vendor/github.com/xo/terminfo/stack.go−48

This diff is too big to show here.

vendor/github.com/xo/terminfo/terminfo.go−479

This diff is too big to show here.

vendor/github.com/yosida95/uritemplate/v3/LICENSE−25

This diff is too big to show here.

vendor/github.com/yosida95/uritemplate/v3/README.rst−46

This diff is too big to show here.

vendor/github.com/yosida95/uritemplate/v3/compile.go−224

This diff is too big to show here.

vendor/github.com/yosida95/uritemplate/v3/equals.go−53

This diff is too big to show here.

vendor/github.com/yosida95/uritemplate/v3/error.go−16

This diff is too big to show here.

vendor/github.com/yosida95/uritemplate/v3/escape.go−190

This diff is too big to show here.

vendor/github.com/yosida95/uritemplate/v3/expression.go−173

This diff is too big to show here.

vendor/github.com/yosida95/uritemplate/v3/machine.go−23

This diff is too big to show here.

vendor/github.com/yosida95/uritemplate/v3/match.go−213

This diff is too big to show here.

vendor/github.com/yosida95/uritemplate/v3/parse.go−277

This diff is too big to show here.

vendor/github.com/yosida95/uritemplate/v3/prog.go−130

This diff is too big to show here.

vendor/github.com/yosida95/uritemplate/v3/uritemplate.go−116

This diff is too big to show here.

vendor/github.com/yosida95/uritemplate/v3/value.go−216

This diff is too big to show here.

vendor/github.com/yuin/goldmark-emoji/.gitignore−15

This diff is too big to show here.

vendor/github.com/yuin/goldmark-emoji/LICENSE−21

This diff is too big to show here.

vendor/github.com/yuin/goldmark-emoji/README.md−70

This diff is too big to show here.

vendor/github.com/yuin/goldmark-emoji/ast/emoji.go−42

This diff is too big to show here.

vendor/github.com/yuin/goldmark-emoji/definition/definition.go−106

This diff is too big to show here.

vendor/github.com/yuin/goldmark-emoji/definition/github.go−1889

This diff is too big to show here.

vendor/github.com/yuin/goldmark-emoji/emoji.go−360

This diff is too big to show here.

vendor/github.com/yuin/goldmark/.gitignore−19

This diff is too big to show here.

vendor/github.com/yuin/goldmark/.golangci.yml−105

This diff is too big to show here.

vendor/github.com/yuin/goldmark/LICENSE−21

This diff is too big to show here.

vendor/github.com/yuin/goldmark/Makefile−13

This diff is too big to show here.

vendor/github.com/yuin/goldmark/README.md−568

This diff is too big to show here.

vendor/github.com/yuin/goldmark/ast/ast.go−521

This diff is too big to show here.

vendor/github.com/yuin/goldmark/ast/block.go−547

This diff is too big to show here.

vendor/github.com/yuin/goldmark/ast/inline.go−573

This diff is too big to show here.

vendor/github.com/yuin/goldmark/extension/ast/definition_list.go−83

This diff is too big to show here.

vendor/github.com/yuin/goldmark/extension/ast/footnote.go−138

This diff is too big to show here.

vendor/github.com/yuin/goldmark/extension/ast/strikethrough.go−29

This diff is too big to show here.

vendor/github.com/yuin/goldmark/extension/ast/table.go−158

This diff is too big to show here.

vendor/github.com/yuin/goldmark/extension/ast/tasklist.go−35

This diff is too big to show here.

vendor/github.com/yuin/goldmark/extension/cjk.go−72

This diff is too big to show here.

vendor/github.com/yuin/goldmark/extension/definition_list.go−274

This diff is too big to show here.

vendor/github.com/yuin/goldmark/extension/footnote.go−691

This diff is too big to show here.

vendor/github.com/yuin/goldmark/extension/gfm.go−18

This diff is too big to show here.

vendor/github.com/yuin/goldmark/extension/linkify.go−322

This diff is too big to show here.

vendor/github.com/yuin/goldmark/extension/package.go−2

This diff is too big to show here.

vendor/github.com/yuin/goldmark/extension/strikethrough.go−118

This diff is too big to show here.

vendor/github.com/yuin/goldmark/extension/table.go−564

This diff is too big to show here.

vendor/github.com/yuin/goldmark/extension/tasklist.go−120

This diff is too big to show here.

vendor/github.com/yuin/goldmark/extension/typographer.go−348

This diff is too big to show here.

vendor/github.com/yuin/goldmark/markdown.go−141

This diff is too big to show here.

vendor/github.com/yuin/goldmark/parser/attribute.go−329

This diff is too big to show here.

vendor/github.com/yuin/goldmark/parser/atx_heading.go−248

This diff is too big to show here.

vendor/github.com/yuin/goldmark/parser/auto_link.go−42

This diff is too big to show here.

vendor/github.com/yuin/goldmark/parser/blockquote.go−70

This diff is too big to show here.

vendor/github.com/yuin/goldmark/parser/code_block.go−102

This diff is too big to show here.

vendor/github.com/yuin/goldmark/parser/code_span.go−84

This diff is too big to show here.

vendor/github.com/yuin/goldmark/parser/delimiter.go−238

This diff is too big to show here.

vendor/github.com/yuin/goldmark/parser/emphasis.go−50

This diff is too big to show here.

vendor/github.com/yuin/goldmark/parser/fcode_block.go−122

This diff is too big to show here.

vendor/github.com/yuin/goldmark/parser/html_block.go−229

This diff is too big to show here.

vendor/github.com/yuin/goldmark/parser/link.go−449

This diff is too big to show here.

vendor/github.com/yuin/goldmark/parser/link_ref.go−152

This diff is too big to show here.

vendor/github.com/yuin/goldmark/parser/list.go−287

This diff is too big to show here.

vendor/github.com/yuin/goldmark/parser/list_item.go−90

This diff is too big to show here.

vendor/github.com/yuin/goldmark/parser/paragraph.go−72

This diff is too big to show here.

vendor/github.com/yuin/goldmark/parser/parser.go−1261

This diff is too big to show here.

vendor/github.com/yuin/goldmark/parser/raw_html.go−153

This diff is too big to show here.

vendor/github.com/yuin/goldmark/parser/setext_headings.go−126

This diff is too big to show here.

vendor/github.com/yuin/goldmark/parser/thematic_break.go−75

This diff is too big to show here.

vendor/github.com/yuin/goldmark/renderer/html/html.go−1021

This diff is too big to show here.

vendor/github.com/yuin/goldmark/renderer/renderer.go−174

This diff is too big to show here.

vendor/github.com/yuin/goldmark/text/package.go−2

This diff is too big to show here.

vendor/github.com/yuin/goldmark/text/reader.go−660

This diff is too big to show here.

vendor/github.com/yuin/goldmark/text/segment.go−239

This diff is too big to show here.

vendor/github.com/yuin/goldmark/util/html5entities.go−2155

This diff is too big to show here.

vendor/github.com/yuin/goldmark/util/unicode_case_folding.go−1535

This diff is too big to show here.

vendor/github.com/yuin/goldmark/util/util.go−988

This diff is too big to show here.

vendor/github.com/yuin/goldmark/util/util_cjk.go−469

This diff is too big to show here.

vendor/github.com/yuin/goldmark/util/util_safe.go−14

This diff is too big to show here.

vendor/github.com/yuin/goldmark/util/util_unsafe_go120.go−24

This diff is too big to show here.

vendor/github.com/yuin/goldmark/util/util_unsafe_go121.go−18

This diff is too big to show here.

vendor/go.opentelemetry.io/auto/sdk/CONTRIBUTING.md−27

This diff is too big to show here.

vendor/go.opentelemetry.io/auto/sdk/LICENSE−201

This diff is too big to show here.

vendor/go.opentelemetry.io/auto/sdk/VERSIONING.md−15

This diff is too big to show here.

vendor/go.opentelemetry.io/auto/sdk/doc.go−14

This diff is too big to show here.

vendor/go.opentelemetry.io/auto/sdk/internal/telemetry/attr.go−58

This diff is too big to show here.

vendor/go.opentelemetry.io/auto/sdk/internal/telemetry/doc.go−8

This diff is too big to show here.

vendor/go.opentelemetry.io/auto/sdk/internal/telemetry/id.go−103

This diff is too big to show here.

vendor/go.opentelemetry.io/auto/sdk/internal/telemetry/number.go−67

This diff is too big to show here.

vendor/go.opentelemetry.io/auto/sdk/internal/telemetry/resource.go−66

This diff is too big to show here.

vendor/go.opentelemetry.io/auto/sdk/internal/telemetry/scope.go−67

This diff is too big to show here.

vendor/go.opentelemetry.io/auto/sdk/internal/telemetry/span.go−456

This diff is too big to show here.

vendor/go.opentelemetry.io/auto/sdk/internal/telemetry/status.go−40

This diff is too big to show here.

vendor/go.opentelemetry.io/auto/sdk/internal/telemetry/traces.go−189

This diff is too big to show here.

vendor/go.opentelemetry.io/auto/sdk/internal/telemetry/value.go−452

This diff is too big to show here.

vendor/go.opentelemetry.io/auto/sdk/limit.go−94

This diff is too big to show here.

vendor/go.opentelemetry.io/auto/sdk/span.go−432

This diff is too big to show here.

vendor/go.opentelemetry.io/auto/sdk/tracer.go−124

This diff is too big to show here.

vendor/go.opentelemetry.io/auto/sdk/tracer_provider.go−33

This diff is too big to show here.

vendor/go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp/LICENSE−201

This diff is too big to show here.

vendor/go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp/client.go−50

This diff is too big to show here.

vendor/go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp/common.go−34

This diff is too big to show here.

vendor/go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp/config.go−207

This diff is too big to show here.

vendor/go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp/doc.go−7

This diff is too big to show here.

vendor/go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp/handler.go−217

This diff is too big to show here.

vendor/go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp/internal/request/body_wrapper.go−75

This diff is too big to show here.

vendor/go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp/internal/request/resp_writer_wrapper.go−112

This diff is too big to show here.

vendor/go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp/internal/semconv/env.go−165

This diff is too big to show here.

vendor/go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp/internal/semconv/httpconv.go−348

This diff is too big to show here.

vendor/go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp/internal/semconv/util.go−98

This diff is too big to show here.

vendor/go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp/internal/semconv/v1.20.0.go−192

This diff is too big to show here.

vendor/go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp/internal/semconvutil/gen.go−10

This diff is too big to show here.

vendor/go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp/internal/semconvutil/httpconv.go−575

This diff is too big to show here.

vendor/go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp/internal/semconvutil/netconv.go−205

This diff is too big to show here.

vendor/go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp/labeler.go−58

This diff is too big to show here.

vendor/go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp/transport.go−295

This diff is too big to show here.

vendor/go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp/version.go−17

This diff is too big to show here.

vendor/go.opentelemetry.io/otel/.codespellignore−9

This diff is too big to show here.

vendor/go.opentelemetry.io/otel/.codespellrc−10

This diff is too big to show here.

vendor/go.opentelemetry.io/otel/.gitattributes−3

This diff is too big to show here.

vendor/go.opentelemetry.io/otel/.gitignore−15

This diff is too big to show here.

vendor/go.opentelemetry.io/otel/.golangci.yml−252

This diff is too big to show here.

vendor/go.opentelemetry.io/otel/.lycheeignore−6

This diff is too big to show here.

vendor/go.opentelemetry.io/otel/.markdownlint.yaml−29

This diff is too big to show here.

vendor/go.opentelemetry.io/otel/CHANGELOG.md−3344

This diff is too big to show here.

vendor/go.opentelemetry.io/otel/CODEOWNERS−17

This diff is too big to show here.

vendor/go.opentelemetry.io/otel/CONTRIBUTING.md−676

This diff is too big to show here.

vendor/go.opentelemetry.io/otel/LICENSE−201

This diff is too big to show here.

vendor/go.opentelemetry.io/otel/Makefile−328

This diff is too big to show here.

vendor/go.opentelemetry.io/otel/README.md−120

This diff is too big to show here.

vendor/go.opentelemetry.io/otel/RELEASING.md−132

This diff is too big to show here.

vendor/go.opentelemetry.io/otel/VERSIONING.md−224

This diff is too big to show here.

vendor/go.opentelemetry.io/otel/attribute/README.md−3

This diff is too big to show here.

vendor/go.opentelemetry.io/otel/attribute/doc.go−5

This diff is too big to show here.

vendor/go.opentelemetry.io/otel/attribute/encoder.go−135

This diff is too big to show here.

vendor/go.opentelemetry.io/otel/attribute/filter.go−49

This diff is too big to show here.

vendor/go.opentelemetry.io/otel/attribute/iterator.go−150

This diff is too big to show here.

vendor/go.opentelemetry.io/otel/attribute/key.go−123

This diff is too big to show here.

vendor/go.opentelemetry.io/otel/attribute/kv.go−75

This diff is too big to show here.

vendor/go.opentelemetry.io/otel/attribute/set.go−411

This diff is too big to show here.

vendor/go.opentelemetry.io/otel/attribute/type_string.go−31

This diff is too big to show here.

vendor/go.opentelemetry.io/otel/attribute/value.go−271

This diff is too big to show here.

vendor/go.opentelemetry.io/otel/baggage/README.md−3

This diff is too big to show here.

vendor/go.opentelemetry.io/otel/baggage/baggage.go−1018

This diff is too big to show here.

vendor/go.opentelemetry.io/otel/baggage/context.go−28

This diff is too big to show here.

vendor/go.opentelemetry.io/otel/baggage/doc.go−9

This diff is too big to show here.

vendor/go.opentelemetry.io/otel/codes/README.md−3

This diff is too big to show here.

vendor/go.opentelemetry.io/otel/codes/codes.go−106

This diff is too big to show here.

vendor/go.opentelemetry.io/otel/codes/doc.go−10

This diff is too big to show here.

vendor/go.opentelemetry.io/otel/dependencies.Dockerfile−3

This diff is too big to show here.

vendor/go.opentelemetry.io/otel/doc.go−25

This diff is too big to show here.

vendor/go.opentelemetry.io/otel/error_handler.go−27

This diff is too big to show here.

vendor/go.opentelemetry.io/otel/get_main_pkgs.sh−30

This diff is too big to show here.

vendor/go.opentelemetry.io/otel/handler.go−33

This diff is too big to show here.

vendor/go.opentelemetry.io/otel/internal/attribute/attribute.go−96

This diff is too big to show here.

vendor/go.opentelemetry.io/otel/internal/baggage/baggage.go−32

This diff is too big to show here.

vendor/go.opentelemetry.io/otel/internal/baggage/context.go−81

This diff is too big to show here.

vendor/go.opentelemetry.io/otel/internal/gen.go−18

This diff is too big to show here.

vendor/go.opentelemetry.io/otel/internal/global/handler.go−36

This diff is too big to show here.

vendor/go.opentelemetry.io/otel/internal/global/instruments.go−412

This diff is too big to show here.

vendor/go.opentelemetry.io/otel/internal/global/internal_logging.go−62

This diff is too big to show here.

vendor/go.opentelemetry.io/otel/internal/global/meter.go−598

This diff is too big to show here.

vendor/go.opentelemetry.io/otel/internal/global/propagator.go−71

This diff is too big to show here.

vendor/go.opentelemetry.io/otel/internal/global/state.go−199

This diff is too big to show here.

vendor/go.opentelemetry.io/otel/internal/global/trace.go−220

This diff is too big to show here.

vendor/go.opentelemetry.io/otel/internal/rawhelpers.go−48

This diff is too big to show here.

vendor/go.opentelemetry.io/otel/internal_logging.go−15

This diff is too big to show here.

vendor/go.opentelemetry.io/otel/metric.go−42

This diff is too big to show here.

vendor/go.opentelemetry.io/otel/metric/LICENSE−201

This diff is too big to show here.

vendor/go.opentelemetry.io/otel/metric/README.md−3

This diff is too big to show here.

vendor/go.opentelemetry.io/otel/metric/asyncfloat64.go−260

This diff is too big to show here.

vendor/go.opentelemetry.io/otel/metric/asyncint64.go−258

This diff is too big to show here.

vendor/go.opentelemetry.io/otel/metric/config.go−81

This diff is too big to show here.

vendor/go.opentelemetry.io/otel/metric/doc.go−177

This diff is too big to show here.

vendor/go.opentelemetry.io/otel/metric/embedded/README.md−3

This diff is too big to show here.

vendor/go.opentelemetry.io/otel/metric/embedded/embedded.go−243

This diff is too big to show here.

vendor/go.opentelemetry.io/otel/metric/instrument.go−368

This diff is too big to show here.

vendor/go.opentelemetry.io/otel/metric/meter.go−278

This diff is too big to show here.

vendor/go.opentelemetry.io/otel/metric/noop/README.md−3

This diff is too big to show here.

vendor/go.opentelemetry.io/otel/metric/noop/noop.go−281

This diff is too big to show here.

vendor/go.opentelemetry.io/otel/metric/syncfloat64.go−226

This diff is too big to show here.

vendor/go.opentelemetry.io/otel/metric/syncint64.go−226

This diff is too big to show here.

vendor/go.opentelemetry.io/otel/propagation.go−20

This diff is too big to show here.

vendor/go.opentelemetry.io/otel/propagation/README.md−3

This diff is too big to show here.

vendor/go.opentelemetry.io/otel/propagation/baggage.go−47

This diff is too big to show here.

vendor/go.opentelemetry.io/otel/propagation/doc.go−13

This diff is too big to show here.

vendor/go.opentelemetry.io/otel/propagation/propagation.go−142

This diff is too big to show here.

vendor/go.opentelemetry.io/otel/propagation/trace_context.go−156

This diff is too big to show here.

vendor/go.opentelemetry.io/otel/renovate.json−30

This diff is too big to show here.

vendor/go.opentelemetry.io/otel/requirements.txt−1

This diff is too big to show here.

vendor/go.opentelemetry.io/otel/semconv/v1.20.0/README.md−3

This diff is too big to show here.

vendor/go.opentelemetry.io/otel/semconv/v1.20.0/attribute_group.go−1198

This diff is too big to show here.

vendor/go.opentelemetry.io/otel/semconv/v1.20.0/doc.go−9

This diff is too big to show here.

vendor/go.opentelemetry.io/otel/semconv/v1.20.0/event.go−188

This diff is too big to show here.

vendor/go.opentelemetry.io/otel/semconv/v1.20.0/exception.go−9

This diff is too big to show here.

vendor/go.opentelemetry.io/otel/semconv/v1.20.0/http.go−10

This diff is too big to show here.

vendor/go.opentelemetry.io/otel/semconv/v1.20.0/resource.go−2060

This diff is too big to show here.

vendor/go.opentelemetry.io/otel/semconv/v1.20.0/schema.go−9

This diff is too big to show here.

vendor/go.opentelemetry.io/otel/semconv/v1.20.0/trace.go−2599

This diff is too big to show here.

vendor/go.opentelemetry.io/otel/semconv/v1.26.0/README.md−3

This diff is too big to show here.

vendor/go.opentelemetry.io/otel/semconv/v1.26.0/attribute_group.go−8996

This diff is too big to show here.

vendor/go.opentelemetry.io/otel/semconv/v1.26.0/doc.go−9

This diff is too big to show here.

vendor/go.opentelemetry.io/otel/semconv/v1.26.0/exception.go−9

This diff is too big to show here.

vendor/go.opentelemetry.io/otel/semconv/v1.26.0/metric.go−1307

This diff is too big to show here.

vendor/go.opentelemetry.io/otel/semconv/v1.26.0/schema.go−9

This diff is too big to show here.

vendor/go.opentelemetry.io/otel/trace.go−36

This diff is too big to show here.

vendor/go.opentelemetry.io/otel/trace/LICENSE−201

This diff is too big to show here.

vendor/go.opentelemetry.io/otel/trace/README.md−3

This diff is too big to show here.

vendor/go.opentelemetry.io/otel/trace/auto.go−661

This diff is too big to show here.

vendor/go.opentelemetry.io/otel/trace/config.go−323

This diff is too big to show here.

vendor/go.opentelemetry.io/otel/trace/context.go−50

This diff is too big to show here.

vendor/go.opentelemetry.io/otel/trace/doc.go−119

This diff is too big to show here.

vendor/go.opentelemetry.io/otel/trace/embedded/README.md−3

This diff is too big to show here.

vendor/go.opentelemetry.io/otel/trace/embedded/embedded.go−45

This diff is too big to show here.

vendor/go.opentelemetry.io/otel/trace/internal/telemetry/attr.go−58

This diff is too big to show here.

vendor/go.opentelemetry.io/otel/trace/internal/telemetry/doc.go−8

This diff is too big to show here.

vendor/go.opentelemetry.io/otel/trace/internal/telemetry/id.go−103

This diff is too big to show here.

vendor/go.opentelemetry.io/otel/trace/internal/telemetry/number.go−67

This diff is too big to show here.

vendor/go.opentelemetry.io/otel/trace/internal/telemetry/resource.go−66

This diff is too big to show here.

vendor/go.opentelemetry.io/otel/trace/internal/telemetry/scope.go−67

This diff is too big to show here.

vendor/go.opentelemetry.io/otel/trace/internal/telemetry/span.go−460

This diff is too big to show here.

vendor/go.opentelemetry.io/otel/trace/internal/telemetry/status.go−40

This diff is too big to show here.

vendor/go.opentelemetry.io/otel/trace/internal/telemetry/traces.go−189

This diff is too big to show here.

vendor/go.opentelemetry.io/otel/trace/internal/telemetry/value.go−453

This diff is too big to show here.

vendor/go.opentelemetry.io/otel/trace/nonrecording.go−16

This diff is too big to show here.

vendor/go.opentelemetry.io/otel/trace/noop.go−103

This diff is too big to show here.

vendor/go.opentelemetry.io/otel/trace/noop/README.md−3

This diff is too big to show here.

vendor/go.opentelemetry.io/otel/trace/noop/noop.go−112

This diff is too big to show here.

vendor/go.opentelemetry.io/otel/trace/provider.go−59

This diff is too big to show here.

vendor/go.opentelemetry.io/otel/trace/span.go−177

This diff is too big to show here.

vendor/go.opentelemetry.io/otel/trace/trace.go−323

This diff is too big to show here.

vendor/go.opentelemetry.io/otel/trace/tracer.go−37

This diff is too big to show here.

vendor/go.opentelemetry.io/otel/trace/tracestate.go−330

This diff is too big to show here.

vendor/go.opentelemetry.io/otel/verify_readmes.sh−21

This diff is too big to show here.

vendor/go.opentelemetry.io/otel/verify_released_changelog.sh−42

This diff is too big to show here.

vendor/go.opentelemetry.io/otel/version.go−9

This diff is too big to show here.

vendor/go.opentelemetry.io/otel/versions.yaml−43

This diff is too big to show here.

vendor/go.uber.org/multierr/.codecov.yml−15

This diff is too big to show here.

vendor/go.uber.org/multierr/.gitignore−4

This diff is too big to show here.

vendor/go.uber.org/multierr/CHANGELOG.md−95

This diff is too big to show here.

vendor/go.uber.org/multierr/LICENSE.txt−19

This diff is too big to show here.

vendor/go.uber.org/multierr/Makefile−38

This diff is too big to show here.

vendor/go.uber.org/multierr/README.md−43

This diff is too big to show here.

vendor/go.uber.org/multierr/error.go−646

This diff is too big to show here.

vendor/go.uber.org/multierr/error_post_go120.go−48

This diff is too big to show here.

vendor/go.uber.org/multierr/error_pre_go120.go−79

This diff is too big to show here.

vendor/golang.org/x/crypto/LICENSE−27

This diff is too big to show here.

vendor/golang.org/x/crypto/PATENTS−22

This diff is too big to show here.

vendor/golang.org/x/crypto/chacha20/chacha_arm64.go−16

This diff is too big to show here.

vendor/golang.org/x/crypto/chacha20/chacha_arm64.s−307

This diff is too big to show here.

vendor/golang.org/x/crypto/chacha20/chacha_generic.go−398

This diff is too big to show here.

vendor/golang.org/x/crypto/chacha20/chacha_noasm.go−13

This diff is too big to show here.

vendor/golang.org/x/crypto/chacha20/chacha_ppc64x.go−16

This diff is too big to show here.

vendor/golang.org/x/crypto/chacha20/chacha_ppc64x.s−501

This diff is too big to show here.

vendor/golang.org/x/crypto/chacha20/chacha_s390x.go−27

This diff is too big to show here.

vendor/golang.org/x/crypto/chacha20/chacha_s390x.s−224

This diff is too big to show here.

vendor/golang.org/x/crypto/chacha20/xor.go−42

This diff is too big to show here.

vendor/golang.org/x/crypto/chacha20poly1305/chacha20poly1305.go−98

This diff is too big to show here.

vendor/golang.org/x/crypto/chacha20poly1305/chacha20poly1305_amd64.go−86

This diff is too big to show here.

vendor/golang.org/x/crypto/chacha20poly1305/chacha20poly1305_amd64.s−9762

This diff is too big to show here.

vendor/golang.org/x/crypto/chacha20poly1305/chacha20poly1305_generic.go−81

This diff is too big to show here.

vendor/golang.org/x/crypto/chacha20poly1305/chacha20poly1305_noasm.go−15

This diff is too big to show here.

vendor/golang.org/x/crypto/chacha20poly1305/xchacha20poly1305.go−86

This diff is too big to show here.

vendor/golang.org/x/crypto/cryptobyte/asn1.go−825

This diff is too big to show here.

vendor/golang.org/x/crypto/cryptobyte/asn1/asn1.go−46

This diff is too big to show here.

vendor/golang.org/x/crypto/cryptobyte/builder.go−350

This diff is too big to show here.

vendor/golang.org/x/crypto/cryptobyte/string.go−183

This diff is too big to show here.

vendor/golang.org/x/crypto/hkdf/hkdf.go−95

This diff is too big to show here.

vendor/golang.org/x/crypto/internal/alias/alias.go−31

This diff is too big to show here.

vendor/golang.org/x/crypto/internal/alias/alias_purego.go−34

This diff is too big to show here.

vendor/golang.org/x/crypto/internal/poly1305/mac_noasm.go−9

This diff is too big to show here.

vendor/golang.org/x/crypto/internal/poly1305/poly1305.go−99

This diff is too big to show here.

vendor/golang.org/x/crypto/internal/poly1305/sum_amd64.s−93

This diff is too big to show here.

vendor/golang.org/x/crypto/internal/poly1305/sum_asm.go−47

This diff is too big to show here.

vendor/golang.org/x/crypto/internal/poly1305/sum_generic.go−312

This diff is too big to show here.

vendor/golang.org/x/crypto/internal/poly1305/sum_loong64.s−123

This diff is too big to show here.

vendor/golang.org/x/crypto/internal/poly1305/sum_ppc64x.s−187

This diff is too big to show here.

vendor/golang.org/x/crypto/internal/poly1305/sum_s390x.go−76

This diff is too big to show here.

vendor/golang.org/x/crypto/internal/poly1305/sum_s390x.s−503

This diff is too big to show here.

vendor/golang.org/x/crypto/pkcs12/bmp-string.go−50

This diff is too big to show here.

vendor/golang.org/x/crypto/pkcs12/crypto.go−131

This diff is too big to show here.

vendor/golang.org/x/crypto/pkcs12/errors.go−23

This diff is too big to show here.

vendor/golang.org/x/crypto/pkcs12/internal/rc2/rc2.go−268

This diff is too big to show here.

vendor/golang.org/x/crypto/pkcs12/mac.go−45

This diff is too big to show here.

vendor/golang.org/x/crypto/pkcs12/pbkdf.go−170

This diff is too big to show here.

vendor/golang.org/x/crypto/pkcs12/pkcs12.go−360

This diff is too big to show here.

vendor/golang.org/x/crypto/pkcs12/safebags.go−57

This diff is too big to show here.

vendor/golang.org/x/exp/LICENSE−27

This diff is too big to show here.

vendor/golang.org/x/exp/PATENTS−22

This diff is too big to show here.

vendor/golang.org/x/exp/slices/slices.go−182

This diff is too big to show here.

vendor/golang.org/x/exp/slices/sort.go−115

This diff is too big to show here.

vendor/golang.org/x/exp/slog/attr.go−102

This diff is too big to show here.

vendor/golang.org/x/exp/slog/doc.go−316

This diff is too big to show here.

vendor/golang.org/x/exp/slog/handler.go−577

This diff is too big to show here.

vendor/golang.org/x/exp/slog/internal/buffer/buffer.go−84

This diff is too big to show here.

vendor/golang.org/x/exp/slog/internal/ignorepc.go−9

This diff is too big to show here.

vendor/golang.org/x/exp/slog/json_handler.go−336

This diff is too big to show here.

vendor/golang.org/x/exp/slog/level.go−201

This diff is too big to show here.

vendor/golang.org/x/exp/slog/logger.go−343

This diff is too big to show here.

vendor/golang.org/x/exp/slog/noplog.bench−36

This diff is too big to show here.

vendor/golang.org/x/exp/slog/record.go−207

This diff is too big to show here.

vendor/golang.org/x/exp/slog/text_handler.go−161

This diff is too big to show here.

vendor/golang.org/x/exp/slog/value.go−456

This diff is too big to show here.

vendor/golang.org/x/exp/slog/value_119.go−53

This diff is too big to show here.

vendor/golang.org/x/exp/slog/value_120.go−39

This diff is too big to show here.

vendor/golang.org/x/image/LICENSE−27

This diff is too big to show here.

vendor/golang.org/x/image/PATENTS−22

This diff is too big to show here.

vendor/golang.org/x/image/colornames/colornames.go−10

This diff is too big to show here.

vendor/golang.org/x/image/colornames/table.go−457

This diff is too big to show here.

vendor/golang.org/x/image/math/fixed/fixed.go−410

This diff is too big to show here.

vendor/golang.org/x/image/vector/acc_amd64.go−29

This diff is too big to show here.

vendor/golang.org/x/image/vector/acc_amd64.s−1028

This diff is too big to show here.

vendor/golang.org/x/image/vector/acc_other.go−16

This diff is too big to show here.

vendor/golang.org/x/image/vector/gen_acc_amd64.s.tmpl−170

This diff is too big to show here.

vendor/golang.org/x/image/vector/raster_fixed.go−330

This diff is too big to show here.

vendor/golang.org/x/image/vector/raster_floating.go−220

This diff is too big to show here.

vendor/golang.org/x/image/vector/vector.go−472

This diff is too big to show here.

vendor/golang.org/x/net/LICENSE−27

This diff is too big to show here.

vendor/golang.org/x/net/PATENTS−22

This diff is too big to show here.

vendor/golang.org/x/net/html/atom/atom.go−78

This diff is too big to show here.

vendor/golang.org/x/net/html/atom/table.go−785

This diff is too big to show here.

vendor/golang.org/x/net/html/charset/charset.go−257

This diff is too big to show here.

vendor/golang.org/x/net/html/const.go−111

This diff is too big to show here.

vendor/golang.org/x/net/html/doc.go−122

This diff is too big to show here.

vendor/golang.org/x/net/html/doctype.go−156

This diff is too big to show here.

vendor/golang.org/x/net/html/entity.go−2253

This diff is too big to show here.

vendor/golang.org/x/net/html/escape.go−339

This diff is too big to show here.

vendor/golang.org/x/net/html/foreign.go−221

This diff is too big to show here.

vendor/golang.org/x/net/html/iter.go−56

This diff is too big to show here.

vendor/golang.org/x/net/html/node.go−229

This diff is too big to show here.

vendor/golang.org/x/net/html/parse.go−2464

This diff is too big to show here.

vendor/golang.org/x/net/html/render.go−293

This diff is too big to show here.

vendor/golang.org/x/net/html/token.go−1286

This diff is too big to show here.

vendor/golang.org/x/net/http/httpguts/guts.go−50

This diff is too big to show here.

vendor/golang.org/x/net/http/httpguts/httplex.go−347

This diff is too big to show here.

vendor/golang.org/x/net/http2/.gitignore−2

This diff is too big to show here.

vendor/golang.org/x/net/http2/ascii.go−53

This diff is too big to show here.

vendor/golang.org/x/net/http2/ciphers.go−641

This diff is too big to show here.

vendor/golang.org/x/net/http2/client_conn_pool.go−311

This diff is too big to show here.

vendor/golang.org/x/net/http2/config.go−122

This diff is too big to show here.

vendor/golang.org/x/net/http2/config_go124.go−61

This diff is too big to show here.

vendor/golang.org/x/net/http2/config_pre_go124.go−16

This diff is too big to show here.

vendor/golang.org/x/net/http2/databuffer.go−149

This diff is too big to show here.

vendor/golang.org/x/net/http2/errors.go−145

This diff is too big to show here.

vendor/golang.org/x/net/http2/flow.go−120

This diff is too big to show here.

vendor/golang.org/x/net/http2/frame.go−1702

This diff is too big to show here.

vendor/golang.org/x/net/http2/gotrack.go−170

This diff is too big to show here.

vendor/golang.org/x/net/http2/hpack/encode.go−245

This diff is too big to show here.

vendor/golang.org/x/net/http2/hpack/hpack.go−523

This diff is too big to show here.

vendor/golang.org/x/net/http2/hpack/huffman.go−226

This diff is too big to show here.

vendor/golang.org/x/net/http2/hpack/static_table.go−188

This diff is too big to show here.

vendor/golang.org/x/net/http2/hpack/tables.go−403

This diff is too big to show here.

vendor/golang.org/x/net/http2/http2.go−432

This diff is too big to show here.

vendor/golang.org/x/net/http2/pipe.go−184

This diff is too big to show here.

vendor/golang.org/x/net/http2/server.go−3350

This diff is too big to show here.

vendor/golang.org/x/net/http2/timer.go−20

This diff is too big to show here.

vendor/golang.org/x/net/http2/transport.go−3287

This diff is too big to show here.

vendor/golang.org/x/net/http2/unencrypted.go−32

This diff is too big to show here.

vendor/golang.org/x/net/http2/write.go−381

This diff is too big to show here.

vendor/golang.org/x/net/http2/writesched.go−251

This diff is too big to show here.

vendor/golang.org/x/net/http2/writesched_priority.go−451

This diff is too big to show here.

vendor/golang.org/x/net/http2/writesched_random.go−77

This diff is too big to show here.

vendor/golang.org/x/net/http2/writesched_roundrobin.go−119

This diff is too big to show here.

vendor/golang.org/x/net/idna/go118.go−13

This diff is too big to show here.