googleapis / googleapis/google-cloud-node
refactor!: Revamp `apiEndpoint`
- 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
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