Conversation
This was referenced May 26, 2026
Welcome to Codecov 🎉Once you merge this PR into your default branch, you're all set! Codecov will compare coverage reports and display results in all future pull requests. Thanks for integrating Codecov - We've got you covered ☂️ |
This was referenced May 26, 2026
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Experimental Status
Experimental work: this PR is part of an exploratory contract/generated SDK effort, and is intentionally kept as a Draft while the approach is validated.
Why
This adds generated islands and checked-in devdock examples for the API2-owned TUS protocol client generator in tus-go-client. The goal is to prove that a non-TypeScript TUS client can consume the same raw protocol + feature-layer contract as tus-js-client without duplicating endpoint/header/status knowledge in the language generator.
What
protocol_generated.gowith the defaultTus-Resumablewire version.protocol_contract_generated_test.gowith TUS wire operations, response shapes, and client feature metadata.NewClientwithout changing behavior.Client.CreateUploadandUploadStream.Writefrom generated contract facts.serverCapabilities.extensionNamesandserverCapabilities.protocolVersionsfrom the contract scenario and only adapts those facts intotusgo.ServerCapabilities.endpointUrl,uploadUrl,overridePatchMethod, fingerprint, content, and server capabilities from scenario JSON, then provesHEADoffset recovery followed byPOSTwithX-HTTP-Method-Override: PATCH.relative-to-creation-request-url, so stored URLs, hooks, and subsequent upload requests all use the resolved absolute upload URL.Upload-Concatheader, checks request body starts and absent finalUpload-Length, and proves publicUploadWithURLStoragewithParallelUploads.ParallelUploadsplusUploadDataDuringCreationfails before any HTTP request.Client.ProtocolVersionselects request headers, upload body content type, and upload-complete headers, then proves draft-05 creation-with-upload sendsUpload-Draft-Interop-Version,Upload-Complete, andapplication/partial-uploadwhile omittingTus-Resumable.inputSource.contentinto a temporary file, passes an opened file through publicUploadWithURLStorage, and captures the contract-declared source-open/success/source-close events plus POST/PATCH request facts.DetailedErrorruntime support and a generated recorder transport to prove both response-status and request-error create-upload failures through publicUploadWithURLStorage.Verification
go test ./...go test -tags api2devdock ./examples/...git diff --checktusAbortUploadtusAbortUploadAfterStoredUrltusOverridePatchMethodtusRelativeLocationResolutiontusParallelUploadConcattusRetryStateTransitionstusStartOptionValidationParallelUploadsWithUploadDataDuringCreationtusProtocolVersionSelectionDraft05CreationWithUploadtusNodePathInputSourcetusDetailedCreateResponseErrortusDetailedCreateRequestErrorapi2/bin/cli.ts contracts sdks --no-motd --target tus --platform go --sdk-root ../tus-go-client --compare-existingapi2/bin/cli.ts contracts sdks qa --no-motd --target tus --platform go --dry-runcore/bin/devdock.ts exec tstrun system/sdk_examples/go-tus-transloadit-assembly-upload.test.ts -vv --max-time-per-test 900Companion PRs (tus org only)