docs: add gaxios migration guide - #15
Open
thiyaguk09 wants to merge 53 commits into
Open
Conversation
There was a problem hiding this comment.
Code Review
This pull request introduces a migration guide for transitioning from @google-cloud/storage v7 to v8, detailing breaking changes such as the shift to standard Headers objects and updated URL resolution logic. The review feedback identifies syntax errors in the documentation's code examples where variable shadowing would cause a ReferenceError and suggests adding context regarding Node.js 18 requirements and its relationship to native web APIs.
thiyaguk09
force-pushed
the
docs/gaxios-migration-guide
branch
from
May 20, 2026 12:55
15bf4ba to
3b2a681
Compare
thiyaguk09
force-pushed
the
storage-node-18
branch
from
May 21, 2026 04:15
72c17d7 to
eacb087
Compare
thiyaguk09
force-pushed
the
storage-node-18
branch
3 times, most recently
from
May 27, 2026 04:55
fe44861 to
0a4f5ac
Compare
thiyaguk09
force-pushed
the
storage-node-18
branch
5 times, most recently
from
June 5, 2026 13:25
c0a6220 to
0f2652b
Compare
thiyaguk09
force-pushed
the
storage-node-18
branch
5 times, most recently
from
June 19, 2026 08:17
2c0e9c8 to
696a337
Compare
thiyaguk09
force-pushed
the
storage-node-18
branch
7 times, most recently
from
June 29, 2026 11:09
3217d07 to
0d373cf
Compare
thiyaguk09
force-pushed
the
storage-node-18
branch
3 times, most recently
from
July 7, 2026 06:45
f41a664 to
b4ac2f3
Compare
thiyaguk09
force-pushed
the
storage-node-18
branch
from
July 8, 2026 10:09
b4ac2f3 to
72b5e10
Compare
… use string | undefined
thiyaguk09
force-pushed
the
storage-gaxios-migration
branch
from
August 31, 2026 13:45
b541179 to
b2e9e05
Compare
…ad-Content-Length header
* fix(storage): standardize URL formatting and enhance transport retry * fix storage transport & retry issues * fix * Update handwritten/storage/src/file.ts Co-authored-by: gemini-code-assist[bot] <176961590+gemini-code-assist[bot]@users.noreply.github.com> * fix(storage): interceptors test * fix(storage): standardize URL formatting and enhance transport retry * refactor(storage): remove Service.ts and migrate logic to StorageTransport (googleapis#8283) - Remove Service.ts and common.ts files from handwritten/storage - Migrate remaining functionality to StorageTransport - chore(ci): upgrade conformance tests to Node 18 * fix(storage): standardize URL formatting and enhance transport retry * refactor(storage): remove Service.ts and migrate logic to StorageTransport (googleapis#8283) - Remove Service.ts and common.ts files from handwritten/storage - Migrate remaining functionality to StorageTransport - chore(ci): upgrade conformance tests to Node 18 * fix(storage): standardize URL formatting and enhance transport retry * refactor(storage): remove Service.ts and migrate logic to StorageTransport (googleapis#8283) - Remove Service.ts and common.ts files from handwritten/storage - Migrate remaining functionality to StorageTransport - chore(ci): upgrade conformance tests to Node 18 * fix(storage): standardize URL formatting and enhance transport retry * refactor(storage): remove Service.ts and migrate logic to StorageTransport (googleapis#8283) - Remove Service.ts and common.ts files from handwritten/storage - Migrate remaining functionality to StorageTransport - chore(ci): upgrade conformance tests to Node 18 * feat: implement robust storage conformance test retry framework with request interception and test bench integration * fix: correct response handler for binary/resumable uploads and improve etag check - Updated `responseHandler` to correctly handle different payload types: - Plain objects are mutated with `.headers` and `.status` and returned. - Binary payloads (Buffer/Stream) return raw data to prevent dangerous mutations. - Primitives (e.g., empty strings) return the full `GaxiosResponse` wrapper to preserve access to headers like `Location` for resumable upload initiation. - Fixed `hasPrecondition` logic to safely parse stringified JSON or inspect objects directly for an `etag` property. This prevents false positives on raw text payloads containing the word "etag" and false negatives on object payloads. * fix(storage): standardize URL formatting and enhance transport retry * refactor(storage): remove Service.ts and migrate logic to StorageTransport (googleapis#8283) - Remove Service.ts and common.ts files from handwritten/storage - Migrate remaining functionality to StorageTransport - chore(ci): upgrade conformance tests to Node 18 * fix(storage): standardize URL formatting and enhance transport retry * refactor(storage): remove Service.ts and migrate logic to StorageTransport (googleapis#8283) - Remove Service.ts and common.ts files from handwritten/storage - Migrate remaining functionality to StorageTransport - chore(ci): upgrade conformance tests to Node 18 * refactor(storage): replace constructor-based type checks with structural checks and decouple retry logic into idempotent and transient error utilities. * fix(storage): standardize URL formatting and enhance transport retry * refactor(storage): remove Service.ts and migrate logic to StorageTransport (googleapis#8283) - Remove Service.ts and common.ts files from handwritten/storage - Migrate remaining functionality to StorageTransport - chore(ci): upgrade conformance tests to Node 18 * refactor(storage): update storage-transport to return full GaxiosResponse and align downstream resource methods * fix: update file request URL construction to support custom protocol endpoints * fix(storage): standardize URL formatting and enhance transport retry * refactor(storage): remove Service.ts and migrate logic to StorageTransport (googleapis#8283) - Remove Service.ts and common.ts files from handwritten/storage - Migrate remaining functionality to StorageTransport - chore(ci): upgrade conformance tests to Node 18 * fix(storage): standardize URL formatting and enhance transport retry * refactor(storage): remove Service.ts and migrate logic to StorageTransport (googleapis#8283) - Remove Service.ts and common.ts files from handwritten/storage - Migrate remaining functionality to StorageTransport - chore(ci): upgrade conformance tests to Node 18 * refactor(storage): introduce ENCRYPTION_ALGORITHM_AES256 constant to replace hardcoded strings in File class * fix(storage): merge request headers correctly in file.ts and add missing linting suppressions to ServiceObject * fix(storage): standardize URL formatting and enhance transport retry * refactor(storage): remove Service.ts and migrate logic to StorageTransport (googleapis#8283) - Remove Service.ts and common.ts files from handwritten/storage - Migrate remaining functionality to StorageTransport - chore(ci): upgrade conformance tests to Node 18 * test: add bytes method to mock Gaxios responses in storage tests * fix(storage): standardize URL formatting and enhance transport retry * refactor(storage): remove Service.ts and migrate logic to StorageTransport (googleapis#8283) - Remove Service.ts and common.ts files from handwritten/storage - Migrate remaining functionality to StorageTransport - chore(ci): upgrade conformance tests to Node 18 * fix(storage): standardize URL formatting and enhance transport retry * refactor(storage): remove Service.ts and migrate logic to StorageTransport (googleapis#8283) - Remove Service.ts and common.ts files from handwritten/storage - Migrate remaining functionality to StorageTransport - chore(ci): upgrade conformance tests to Node 18 * fix(storage): standardize URL formatting and enhance transport retry * refactor(storage): remove Service.ts and migrate logic to StorageTransport (googleapis#8283) - Remove Service.ts and common.ts files from handwritten/storage - Migrate remaining functionality to StorageTransport - chore(ci): upgrade conformance tests to Node 18 * fix(storage): standardize URL formatting and enhance transport retry * refactor(storage): remove Service.ts and migrate logic to StorageTransport (googleapis#8283) - Remove Service.ts and common.ts files from handwritten/storage - Migrate remaining functionality to StorageTransport - chore(ci): upgrade conformance tests to Node 18 * test: add bytes method to mock Gaxios response in acl and headers tests * fix(storage): standardize URL formatting and enhance transport retry * refactor(storage): remove Service.ts and migrate logic to StorageTransport (googleapis#8283) - Remove Service.ts and common.ts files from handwritten/storage - Migrate remaining functionality to StorageTransport - chore(ci): upgrade conformance tests to Node 18 * test: add bytes method to mock Gaxios response in acl and headers tests * fix(storage): standardize URL formatting and enhance transport retry * refactor(storage): remove Service.ts and migrate logic to StorageTransport (googleapis#8283) - Remove Service.ts and common.ts files from handwritten/storage - Migrate remaining functionality to StorageTransport - chore(ci): upgrade conformance tests to Node 18 * test: add bytes method to mock Gaxios response in acl and headers tests * fix(storage): standardize URL formatting and enhance transport retry * refactor(storage): remove Service.ts and migrate logic to StorageTransport (googleapis#8283) - Remove Service.ts and common.ts files from handwritten/storage - Migrate remaining functionality to StorageTransport - chore(ci): upgrade conformance tests to Node 18 * test: add bytes method to mock Gaxios response in acl and headers tests * fix(storage): standardize URL formatting and enhance transport retry * refactor(storage): remove Service.ts and migrate logic to StorageTransport (googleapis#8283) - Remove Service.ts and common.ts files from handwritten/storage - Migrate remaining functionality to StorageTransport - chore(ci): upgrade conformance tests to Node 18 * fix(storage): standardize URL formatting and enhance transport retry * refactor(storage): remove Service.ts and migrate logic to StorageTransport (googleapis#8283) - Remove Service.ts and common.ts files from handwritten/storage - Migrate remaining functionality to StorageTransport - chore(ci): upgrade conformance tests to Node 18 * refactor: improve type safety and validation logic in isBucket helper function --------- Co-authored-by: gemini-code-assist[bot] <176961590+gemini-code-assist[bot]@users.noreply.github.com>
…es (googleapis#8190) Hoists the generation of `persistentInvocationId` to the beginning of the upload process in `Bucket.upload` and `File.save`. This ensures that retried multipart upload attempts reuse the same invocation ID in the `x-goog-api-client` header, rather than generating a new one for each attempt. Thank you for opening a Pull Request! Before submitting your PR, there are a few things you can do to make sure it goes smoothly: - [ ] Make sure to open an issue as a [bug/issue](https://github.com/googleapis/{{metadata['repo']['name']}}/issues) before writing your code! That way we can discuss the change, evaluate designs, and agree on the general idea - [ ] Ensure the tests and linter pass - [ ] Code coverage does not decrease (if any source code was changed) - [ ] Appropriate docs were updated (if necessary) Fixes #<issue_number_goes_here> 🦕 --------- Co-authored-by: gemini-code-assist[bot] <176961590+gemini-code-assist[bot]@users.noreply.github.com>
…nsistent trailing commas
…nsport and test suites
…to ensure streams are correctly piped before upload start
…o use storageTransport
… use string | undefined
thiyaguk09
force-pushed
the
storage-gaxios-migration
branch
from
September 1, 2026 03:41
b2e9e05 to
3ead0d8
Compare
* fix(storage): standardize URL formatting and enhance transport retry * fix storage transport & retry issues * fix * Update handwritten/storage/src/file.ts Co-authored-by: gemini-code-assist[bot] <176961590+gemini-code-assist[bot]@users.noreply.github.com> * fix(storage): interceptors test * fix(storage): standardize URL formatting and enhance transport retry * refactor(storage): remove Service.ts and migrate logic to StorageTransport (googleapis#8283) - Remove Service.ts and common.ts files from handwritten/storage - Migrate remaining functionality to StorageTransport - chore(ci): upgrade conformance tests to Node 18 * fix(storage): standardize URL formatting and enhance transport retry * refactor(storage): remove Service.ts and migrate logic to StorageTransport (googleapis#8283) - Remove Service.ts and common.ts files from handwritten/storage - Migrate remaining functionality to StorageTransport - chore(ci): upgrade conformance tests to Node 18 * fix(storage): standardize URL formatting and enhance transport retry * refactor(storage): remove Service.ts and migrate logic to StorageTransport (googleapis#8283) - Remove Service.ts and common.ts files from handwritten/storage - Migrate remaining functionality to StorageTransport - chore(ci): upgrade conformance tests to Node 18 * fix(storage): standardize URL formatting and enhance transport retry * refactor(storage): remove Service.ts and migrate logic to StorageTransport (googleapis#8283) - Remove Service.ts and common.ts files from handwritten/storage - Migrate remaining functionality to StorageTransport - chore(ci): upgrade conformance tests to Node 18 * feat: implement robust storage conformance test retry framework with request interception and test bench integration * fix: correct response handler for binary/resumable uploads and improve etag check - Updated `responseHandler` to correctly handle different payload types: - Plain objects are mutated with `.headers` and `.status` and returned. - Binary payloads (Buffer/Stream) return raw data to prevent dangerous mutations. - Primitives (e.g., empty strings) return the full `GaxiosResponse` wrapper to preserve access to headers like `Location` for resumable upload initiation. - Fixed `hasPrecondition` logic to safely parse stringified JSON or inspect objects directly for an `etag` property. This prevents false positives on raw text payloads containing the word "etag" and false negatives on object payloads. * fix(storage): standardize URL formatting and enhance transport retry * refactor(storage): remove Service.ts and migrate logic to StorageTransport (googleapis#8283) - Remove Service.ts and common.ts files from handwritten/storage - Migrate remaining functionality to StorageTransport - chore(ci): upgrade conformance tests to Node 18 * fix(storage): standardize URL formatting and enhance transport retry * refactor(storage): remove Service.ts and migrate logic to StorageTransport (googleapis#8283) - Remove Service.ts and common.ts files from handwritten/storage - Migrate remaining functionality to StorageTransport - chore(ci): upgrade conformance tests to Node 18 * refactor(storage): replace constructor-based type checks with structural checks and decouple retry logic into idempotent and transient error utilities. * fix(storage): standardize URL formatting and enhance transport retry * refactor(storage): remove Service.ts and migrate logic to StorageTransport (googleapis#8283) - Remove Service.ts and common.ts files from handwritten/storage - Migrate remaining functionality to StorageTransport - chore(ci): upgrade conformance tests to Node 18 * refactor(storage): update storage-transport to return full GaxiosResponse and align downstream resource methods * fix: update file request URL construction to support custom protocol endpoints * fix(storage): standardize URL formatting and enhance transport retry * refactor(storage): remove Service.ts and migrate logic to StorageTransport (googleapis#8283) - Remove Service.ts and common.ts files from handwritten/storage - Migrate remaining functionality to StorageTransport - chore(ci): upgrade conformance tests to Node 18 * fix(storage): standardize URL formatting and enhance transport retry * refactor(storage): remove Service.ts and migrate logic to StorageTransport (googleapis#8283) - Remove Service.ts and common.ts files from handwritten/storage - Migrate remaining functionality to StorageTransport - chore(ci): upgrade conformance tests to Node 18 * refactor(storage): introduce ENCRYPTION_ALGORITHM_AES256 constant to replace hardcoded strings in File class * fix(storage): merge request headers correctly in file.ts and add missing linting suppressions to ServiceObject * fix(storage): standardize URL formatting and enhance transport retry * refactor(storage): remove Service.ts and migrate logic to StorageTransport (googleapis#8283) - Remove Service.ts and common.ts files from handwritten/storage - Migrate remaining functionality to StorageTransport - chore(ci): upgrade conformance tests to Node 18 * test: add bytes method to mock Gaxios responses in storage tests * fix(storage): standardize URL formatting and enhance transport retry * refactor(storage): remove Service.ts and migrate logic to StorageTransport (googleapis#8283) - Remove Service.ts and common.ts files from handwritten/storage - Migrate remaining functionality to StorageTransport - chore(ci): upgrade conformance tests to Node 18 * fix(storage): standardize URL formatting and enhance transport retry * refactor(storage): remove Service.ts and migrate logic to StorageTransport (googleapis#8283) - Remove Service.ts and common.ts files from handwritten/storage - Migrate remaining functionality to StorageTransport - chore(ci): upgrade conformance tests to Node 18 * fix(storage): standardize URL formatting and enhance transport retry * refactor(storage): remove Service.ts and migrate logic to StorageTransport (googleapis#8283) - Remove Service.ts and common.ts files from handwritten/storage - Migrate remaining functionality to StorageTransport - chore(ci): upgrade conformance tests to Node 18 * fix(storage): standardize URL formatting and enhance transport retry * refactor(storage): remove Service.ts and migrate logic to StorageTransport (googleapis#8283) - Remove Service.ts and common.ts files from handwritten/storage - Migrate remaining functionality to StorageTransport - chore(ci): upgrade conformance tests to Node 18 * test: add bytes method to mock Gaxios response in acl and headers tests * fix(storage): standardize URL formatting and enhance transport retry * refactor(storage): remove Service.ts and migrate logic to StorageTransport (googleapis#8283) - Remove Service.ts and common.ts files from handwritten/storage - Migrate remaining functionality to StorageTransport - chore(ci): upgrade conformance tests to Node 18 * test: add bytes method to mock Gaxios response in acl and headers tests * fix(storage): standardize URL formatting and enhance transport retry * refactor(storage): remove Service.ts and migrate logic to StorageTransport (googleapis#8283) - Remove Service.ts and common.ts files from handwritten/storage - Migrate remaining functionality to StorageTransport - chore(ci): upgrade conformance tests to Node 18 * test: add bytes method to mock Gaxios response in acl and headers tests * fix(storage): standardize URL formatting and enhance transport retry * refactor(storage): remove Service.ts and migrate logic to StorageTransport (googleapis#8283) - Remove Service.ts and common.ts files from handwritten/storage - Migrate remaining functionality to StorageTransport - chore(ci): upgrade conformance tests to Node 18 * test: add bytes method to mock Gaxios response in acl and headers tests * fix(storage): standardize URL formatting and enhance transport retry * refactor(storage): remove Service.ts and migrate logic to StorageTransport (googleapis#8283) - Remove Service.ts and common.ts files from handwritten/storage - Migrate remaining functionality to StorageTransport - chore(ci): upgrade conformance tests to Node 18 * fix(storage): standardize URL formatting and enhance transport retry * refactor(storage): remove Service.ts and migrate logic to StorageTransport (googleapis#8283) - Remove Service.ts and common.ts files from handwritten/storage - Migrate remaining functionality to StorageTransport - chore(ci): upgrade conformance tests to Node 18 * refactor: improve type safety and validation logic in isBucket helper function --------- Co-authored-by: gemini-code-assist[bot] <176961590+gemini-code-assist[bot]@users.noreply.github.com>
…es (googleapis#8190) Hoists the generation of `persistentInvocationId` to the beginning of the upload process in `Bucket.upload` and `File.save`. This ensures that retried multipart upload attempts reuse the same invocation ID in the `x-goog-api-client` header, rather than generating a new one for each attempt. Thank you for opening a Pull Request! Before submitting your PR, there are a few things you can do to make sure it goes smoothly: - [ ] Make sure to open an issue as a [bug/issue](https://github.com/googleapis/{{metadata['repo']['name']}}/issues) before writing your code! That way we can discuss the change, evaluate designs, and agree on the general idea - [ ] Ensure the tests and linter pass - [ ] Code coverage does not decrease (if any source code was changed) - [ ] Appropriate docs were updated (if necessary) Fixes #<issue_number_goes_here> 🦕 --------- Co-authored-by: gemini-code-assist[bot] <176961590+gemini-code-assist[bot]@users.noreply.github.com>
…nsistent trailing commas
…nsport and test suites
…to ensure streams are correctly piped before upload start
…o use storageTransport
… use string | undefined
thiyaguk09
force-pushed
the
storage-gaxios-migration
branch
from
September 3, 2026 04:29
3ead0d8 to
3eb2445
Compare
thiyaguk09
force-pushed
the
storage-gaxios-migration
branch
from
September 4, 2026 07:17
3eb2445 to
d749fc2
Compare
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.
Thank you for opening a Pull Request! Before submitting your PR, there are a few things you can do to make sure it goes smoothly:
Fixes #<issue_number_goes_here> 🦕