nodejs-common icon indicating copy to clipboard operation
nodejs-common copied to clipboard

refactor!: Revamp `apiEndpoint`

Open danielbankhead opened this issue 8 months ago • 0 comments

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 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

danielbankhead avatar Jun 14 '24 18:06 danielbankhead