googleapis / googleapis/google-cloud-node

refactor!: Revamp `apiEndpoint`

Open
#7,828 0 comments 0 reactions 0 assignees View on GitHub
api: common priority: p2 type: feature request
Dominant language
TypeScript
Stars
3.2k
Forks
712
Avg merge
2d 9h
Merged PRs (30d)
104

Description

With the advent of TPC and PSC, there’s a lot of complexity with apiEndpoints. To improve, we should:
- expose an `async Storage#getEndpoint()` method
- make the `apiEndpoint` property private
- remove the `useAuthWithCustomEndpoint` parameter/property
- remove the internal `customEndpoint` parameter/property

Additionally, if `STORAGE_EMULATOR_HOST` is detected and used the [`PassThrough`](https://github.com/googleapis/google-auth-library-nodejs/blob/b070ffbfeb35a7f4552e86bf1840645096951b58/src/auth/passthrough.ts#L19-L26) `AuthClient` should be used by default (which can be overwritten via the existing `authClient` parameter) - removing the need for the `useAuthWithCustomEndpoint` parameter.

This will greatly clean-up the code base as:
- Customers will not be required to manually provide the `universeDomain` - as we can determine it asynchronously via `GoogleAuth#getUniverseDomain`. This is a **major** convenience for TPC customers.
- We can offer a predictable, secure experience by not disabling auth by default when an `apiEndpoint` has been provided
- Classes will no longer have to distinguish between auth and non-auth contexts - we can simply use `auth` everywhere uniformly

Related:
- https://github.com/googleapis/nodejs-storage/issues/2400
- https://github.com/googleapis/nodejs-storage/issues/2092
- https://github.com/googleapis/google-auth-library-nodejs/pull/1771

We this change we can remove the following:

https://github.com/googleapis/nodejs-common/blob/0b4380af5e347ef0855d1e0ad45e055a2a9c6120/src/util.ts#L140-L148

https://github.com/googleapis/nodejs-common/blob/0b4380af5e347ef0855d1e0ad45e055a2a9c6120/src/util.ts#L766-L777

Contributor guide

Open the contributing guide

Research direction

Start by tracing the Storage API and its apiEndpoint, useAuthWithCustomEndpoint, and customEndpoint parameters and properties. Read the linked nodejs-common src/util.ts ranges and the related storage issues and auth-library pull request for context. Done means getEndpoint() is exposed, apiEndpoint is private, the obsolete parameters are removed, and emulator auth defaults to PassThrough with authClient still overridable.

Written by the indexing model from the issue text.

Assessment

Tech stack
gcp, nodejs, typescript
Domain
api, backend, cloud
Issue type
Refactor
Difficulty
5/5
Estimated time
Over a week
Activity status
Stale
Clarity
Mostly clear
Newbie friendliness
25/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.