Skip to content

Remove all public const enums; export maps instead (with typings to strings) #5022

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 7 commits into from
Jun 18, 2021

Conversation

sam-gc
Copy link
Contributor

@sam-gc sam-gc commented Jun 14, 2021

This PR removes public const enums (which are inaccessible to JS anyway) and moves any (public) reference to those types to simply string. Instead, we export maps that can be used to reference acceptable values (but these are not used internally to aid tree shaking)

Fixes #5012

@changeset-bot
Copy link

changeset-bot bot commented Jun 14, 2021

⚠️ No Changeset found

Latest commit: 375c307

Merging this PR will not cause a version bump for any packages. If these changes should not result in a new version, you're good to go. If these changes should result in a version bump, you need to add a changeset.

This PR includes no changesets

When changesets are added to this PR, you'll see the packages that this PR includes changesets for and the associated semver types

Click here to learn what changesets are, and how to add one.

Click here if you're a maintainer who wants to add a changeset to this PR

@google-oss-bot
Copy link
Contributor

google-oss-bot commented Jun 14, 2021

Binary Size Report

Affected SDKs

  • @firebase/auth

    Type Base (5473957) Head (253e05d) Diff
    browser 181 kB 181 kB +109 B (+0.1%)
    main 181 kB 181 kB +109 B (+0.1%)
    module 181 kB 181 kB +109 B (+0.1%)
  • firebase

    Type Base (5473957) Head (253e05d) Diff
    firebase-auth.js 177 kB 177 kB +107 B (+0.1%)
    firebase.js 891 kB 891 kB +107 B (+0.0%)

Test Logs

@google-oss-bot
Copy link
Contributor

google-oss-bot commented Jun 14, 2021

Size Analysis Report

Affected Products

  • @firebase/analytics-exp

    • getAnalytics

      Size Table

      TypeBase (5473957)Head (253e05d)Diff
      size
      9.10 kB
      9.58 kB
      +477 B (+5.2%)
      size-with-ext-deps
      27.8 kB
      28.2 kB
      +480 B (+1.7%)

      Dependency Table

      TypeBase (5473957)Head (253e05d)Diff
      functions

      22 dependencies

      attemptFetchDynamicConfigWithRetry
      factory
      fetchDynamicConfig
      fetchDynamicConfigWithRetry
      findGtagScriptOnPage
      getAnalytics
      getHeaders
      getOrCreateDataLayer
      gtagOnConfig
      gtagOnEvent
      initializeAnalytics
      insertScriptTag
      isRetriableError
      logEvent
      logEvent$1
      promiseAllSettled
      registerAnalytics
      setAbortableTimeout
      validateIndexedDB
      warnOnBrowserContextMismatch
      wrapGtag
      wrapOrCreateGtag
      

      23 dependencies

      attemptFetchDynamicConfigWithRetry
      factory
      fetchDynamicConfig
      fetchDynamicConfigWithRetry
      findGtagScriptOnPage
      getAnalytics
      getHeaders
      getOrCreateDataLayer
      gtagOnConfig
      gtagOnEvent
      initializeAnalytics
      initializeAnalytics$1
      insertScriptTag
      isRetriableError
      logEvent
      logEvent$1
      promiseAllSettled
      registerAnalytics
      setAbortableTimeout
      validateIndexedDB
      warnOnBrowserContextMismatch
      wrapGtag
      wrapOrCreateGtag
      

      + initializeAnalytics$1

    • initializeAnalytics

      Size Table

      TypeBase (5473957)Head (253e05d)Diff
      size
      ?
      9.47 kB
      ? (?)
      size-with-ext-deps
      ?
      27.5 kB
      ? (?)

      Dependency Table

      TypeBase (5473957)Head (253e05d)Diff
      functions
      ?

      21 dependencies

      attemptFetchDynamicConfigWithRetry
      factory
      fetchDynamicConfig
      fetchDynamicConfigWithRetry
      findGtagScriptOnPage
      getHeaders
      getOrCreateDataLayer
      gtagOnConfig
      gtagOnEvent
      initializeAnalytics
      insertScriptTag
      isRetriableError
      logEvent
      logEvent$1
      promiseAllSettled
      registerAnalytics
      setAbortableTimeout
      validateIndexedDB
      warnOnBrowserContextMismatch
      wrapGtag
      wrapOrCreateGtag
      

      ?
      classes
      ?

      AnalyticsAbortSignal
      AnalyticsService
      RetryData
      

      ?
      variables
      ?

      22 dependencies

      ANALYTICS_TYPE
      BASE_INTERVAL_MILLIS
      DYNAMIC_CONFIG_URL
      ERRORS
      ERROR_FACTORY
      FETCH_TIMEOUT_MILLIS
      GA_FID_KEY
      GTAG_URL
      LONG_RETRY_FACTOR
      ORIGIN_KEY
      dataLayerName
      defaultRetryData
      dynamicConfigPromisesList
      globalInitDone
      gtagCoreFunction
      gtagName
      initializationPromisesMap
      logger
      measurementIdToAppId
      name
      version
      wrappedGtagFunction
      

      ?
      enums
      ?
      ?

      External Dependency Table

      ModuleBase (5473957)Head (253e05d)Diff
      @firebase/app-exp
      ?

      _getProvider
      _registerComponent
      registerVersion
      

      ?
      @firebase/logger
      ?

      Logger
      

      ?
      @firebase/util
      ?

      ErrorFactory
      FirebaseError
      areCookiesEnabled
      calculateBackoffMillis
      getModularInstance
      isBrowserExtension
      isIndexedDBAvailable
      validateIndexedDBOpenable
      

      ?
      @firebase/component
      ?

      Component
      

      ?
    • isSupported

      Size Table

      TypeBase (5473957)Head (253e05d)Diff
      size
      9.13 kB
      9.45 kB
      +314 B (+3.4%)
      size-with-ext-deps
      27.2 kB
      27.5 kB
      +314 B (+1.2%)
    • logEvent

      Size Table

      TypeBase (5473957)Head (253e05d)Diff
      size
      8.99 kB
      9.30 kB
      +314 B (+3.5%)
      size-with-ext-deps
      27.1 kB
      27.4 kB
      +314 B (+1.2%)
    • setAnalyticsCollectionEnabled

      Size Table

      TypeBase (5473957)Head (253e05d)Diff
      size
      9.15 kB
      9.47 kB
      +314 B (+3.4%)
      size-with-ext-deps
      27.2 kB
      27.5 kB
      +314 B (+1.2%)
    • setCurrentScreen

      Size Table

      TypeBase (5473957)Head (253e05d)Diff
      size
      9.24 kB
      9.55 kB
      +314 B (+3.4%)
      size-with-ext-deps
      27.3 kB
      27.6 kB
      +314 B (+1.2%)
    • setUserId

      Size Table

      TypeBase (5473957)Head (253e05d)Diff
      size
      9.22 kB
      9.54 kB
      +314 B (+3.4%)
      size-with-ext-deps
      27.3 kB
      27.6 kB
      +314 B (+1.2%)
    • setUserProperties

      Size Table

      TypeBase (5473957)Head (253e05d)Diff
      size
      9.30 kB
      9.61 kB
      +314 B (+3.4%)
      size-with-ext-deps
      27.4 kB
      27.7 kB
      +314 B (+1.1%)
    • settings

      Size Table

      TypeBase (5473957)Head (253e05d)Diff
      size
      9.12 kB
      9.43 kB
      +314 B (+3.4%)
      size-with-ext-deps
      27.2 kB
      27.5 kB
      +314 B (+1.2%)
  • @firebase/auth-exp

    • ActionCodeOperation

      Size Table

      TypeBase (5473957)Head (253e05d)Diff
      size
      ?
      29.7 kB
      ? (?)
      size-with-ext-deps
      ?
      40.9 kB
      ? (?)

      Dependency Table

      TypeBase (5473957)Head (253e05d)Diff
      functions
      ?

      47 dependencies

      _assert
      _castAuth
      _createError
      _emulatorUrl
      _fail
      _getBrowserName
      _getClientVersion
      _getCurrentScheme
      _getFinalTarget
      _getInstance
      _getUserLanguage
      _initializeAuthInstance
      _isAndroid
      _isBlackBerry
      _isChromeIOS
      _isFirefox
      _isHttpOrHttps
      _isIEMobile
      _isOnline
      _isSafari
      _isWebOS
      _logError
      _logoutIfInvalidated
      _makeTaggedError
      _parseToken
      _performApiRequest
      _performFetchWithErrorHandling
      _persistenceKeyName
      _prodErrorMap
      _reloadWithoutSaving
      _tokenExpiresIn
      assertStringOrUndefined
      createErrorInternal
      debugAssert
      debugFail
      deleteAccount
      extractProviderData
      getAccountInfo
      getIdTokenResult
      getVersionForPlatform
      isUserInvalidated
      mergeProviderData
      registerAuth
      reload
      requestStsToken
      secondsStringToMilliseconds
      utcTimestampToDateString
      

      ?
      classes
      ?

      12 dependencies

      AuthImpl
      AuthInterop
      Delay
      FetchProvider
      InMemoryPersistence
      NetworkTimeout
      PersistenceUserManager
      ProactiveRefresh
      StsTokenManager
      Subscription
      UserImpl
      UserMetadata
      

      ?
      variables
      ?

      13 dependencies

      ActionCodeOperation
      DEFAULT_API_TIMEOUT_MS
      NETWORK_TIMEOUT
      NETWORK_TIMEOUT_DELAY
      PING_TIMEOUT
      SERVER_ERROR_MAP
      _DEFAULT_AUTH_ERROR_FACTORY
      _POLL_WINDOW_CLOSE_TIMEOUT
      inMemoryPersistence
      instanceCache
      logClient
      name
      version
      

      ?
      enums
      ?
      ?

      External Dependency Table

      ModuleBase (5473957)Head (253e05d)Diff
      @firebase/app-exp
      ?

      SDK_VERSION
      _registerComponent
      registerVersion
      

      ?
      @firebase/util
      ?

      ErrorFactory
      FirebaseError
      base64Decode
      createSubscribe
      getModularInstance
      getUA
      isBrowserExtension
      isMobileCordova
      isReactNative
      querystring
      

      ?
      @firebase/logger
      ?

      LogLevel
      Logger
      

      ?
      tslib
      ?

      __rest
      

      ?
      @firebase/component
      ?

      Component
      

      ?
    • FactorId

      Size Table

      TypeBase (5473957)Head (253e05d)Diff
      size
      ?
      29.5 kB
      ? (?)
      size-with-ext-deps
      ?
      40.7 kB
      ? (?)

      Dependency Table

      TypeBase (5473957)Head (253e05d)Diff
      functions
      ?

      47 dependencies

      _assert
      _castAuth
      _createError
      _emulatorUrl
      _fail
      _getBrowserName
      _getClientVersion
      _getCurrentScheme
      _getFinalTarget
      _getInstance
      _getUserLanguage
      _initializeAuthInstance
      _isAndroid
      _isBlackBerry
      _isChromeIOS
      _isFirefox
      _isHttpOrHttps
      _isIEMobile
      _isOnline
      _isSafari
      _isWebOS
      _logError
      _logoutIfInvalidated
      _makeTaggedError
      _parseToken
      _performApiRequest
      _performFetchWithErrorHandling
      _persistenceKeyName
      _prodErrorMap
      _reloadWithoutSaving
      _tokenExpiresIn
      assertStringOrUndefined
      createErrorInternal
      debugAssert
      debugFail
      deleteAccount
      extractProviderData
      getAccountInfo
      getIdTokenResult
      getVersionForPlatform
      isUserInvalidated
      mergeProviderData
      registerAuth
      reload
      requestStsToken
      secondsStringToMilliseconds
      utcTimestampToDateString
      

      ?
      classes
      ?

      12 dependencies

      AuthImpl
      AuthInterop
      Delay
      FetchProvider
      InMemoryPersistence
      NetworkTimeout
      PersistenceUserManager
      ProactiveRefresh
      StsTokenManager
      Subscription
      UserImpl
      UserMetadata
      

      ?
      variables
      ?

      13 dependencies

      DEFAULT_API_TIMEOUT_MS
      FactorId
      NETWORK_TIMEOUT
      NETWORK_TIMEOUT_DELAY
      PING_TIMEOUT
      SERVER_ERROR_MAP
      _DEFAULT_AUTH_ERROR_FACTORY
      _POLL_WINDOW_CLOSE_TIMEOUT
      inMemoryPersistence
      instanceCache
      logClient
      name
      version
      

      ?
      enums
      ?
      ?

      External Dependency Table

      ModuleBase (5473957)Head (253e05d)Diff
      @firebase/app-exp
      ?

      SDK_VERSION
      _registerComponent
      registerVersion
      

      ?
      @firebase/util
      ?

      ErrorFactory
      FirebaseError
      base64Decode
      createSubscribe
      getModularInstance
      getUA
      isBrowserExtension
      isMobileCordova
      isReactNative
      querystring
      

      ?
      @firebase/logger
      ?

      LogLevel
      Logger
      

      ?
      tslib
      ?

      __rest
      

      ?
      @firebase/component
      ?

      Component
      

      ?
    • OperationType

      Size Table

      TypeBase (5473957)Head (253e05d)Diff
      size
      ?
      29.5 kB
      ? (?)
      size-with-ext-deps
      ?
      40.7 kB
      ? (?)

      Dependency Table

      TypeBase (5473957)Head (253e05d)Diff
      functions
      ?

      47 dependencies

      _assert
      _castAuth
      _createError
      _emulatorUrl
      _fail
      _getBrowserName
      _getClientVersion
      _getCurrentScheme
      _getFinalTarget
      _getInstance
      _getUserLanguage
      _initializeAuthInstance
      _isAndroid
      _isBlackBerry
      _isChromeIOS
      _isFirefox
      _isHttpOrHttps
      _isIEMobile
      _isOnline
      _isSafari
      _isWebOS
      _logError
      _logoutIfInvalidated
      _makeTaggedError
      _parseToken
      _performApiRequest
      _performFetchWithErrorHandling
      _persistenceKeyName
      _prodErrorMap
      _reloadWithoutSaving
      _tokenExpiresIn
      assertStringOrUndefined
      createErrorInternal
      debugAssert
      debugFail
      deleteAccount
      extractProviderData
      getAccountInfo
      getIdTokenResult
      getVersionForPlatform
      isUserInvalidated
      mergeProviderData
      registerAuth
      reload
      requestStsToken
      secondsStringToMilliseconds
      utcTimestampToDateString
      

      ?
      classes
      ?

      12 dependencies

      AuthImpl
      AuthInterop
      Delay
      FetchProvider
      InMemoryPersistence
      NetworkTimeout
      PersistenceUserManager
      ProactiveRefresh
      StsTokenManager
      Subscription
      UserImpl
      UserMetadata
      

      ?
      variables
      ?

      13 dependencies

      DEFAULT_API_TIMEOUT_MS
      NETWORK_TIMEOUT
      NETWORK_TIMEOUT_DELAY
      OperationType
      PING_TIMEOUT
      SERVER_ERROR_MAP
      _DEFAULT_AUTH_ERROR_FACTORY
      _POLL_WINDOW_CLOSE_TIMEOUT
      inMemoryPersistence
      instanceCache
      logClient
      name
      version
      

      ?
      enums
      ?
      ?

      External Dependency Table

      ModuleBase (5473957)Head (253e05d)Diff
      @firebase/app-exp
      ?

      SDK_VERSION
      _registerComponent
      registerVersion
      

      ?
      @firebase/util
      ?

      ErrorFactory
      FirebaseError
      base64Decode
      createSubscribe
      getModularInstance
      getUA
      isBrowserExtension
      isMobileCordova
      isReactNative
      querystring
      

      ?
      @firebase/logger
      ?

      LogLevel
      Logger
      

      ?
      tslib
      ?

      __rest
      

      ?
      @firebase/component
      ?

      Component
      

      ?
    • ProviderId

      Size Table

      TypeBase (5473957)Head (253e05d)Diff
      size
      ?
      29.6 kB
      ? (?)
      size-with-ext-deps
      ?
      40.8 kB
      ? (?)

      Dependency Table

      TypeBase (5473957)Head (253e05d)Diff
      functions
      ?

      47 dependencies

      _assert
      _castAuth
      _createError
      _emulatorUrl
      _fail
      _getBrowserName
      _getClientVersion
      _getCurrentScheme
      _getFinalTarget
      _getInstance
      _getUserLanguage
      _initializeAuthInstance
      _isAndroid
      _isBlackBerry
      _isChromeIOS
      _isFirefox
      _isHttpOrHttps
      _isIEMobile
      _isOnline
      _isSafari
      _isWebOS
      _logError
      _logoutIfInvalidated
      _makeTaggedError
      _parseToken
      _performApiRequest
      _performFetchWithErrorHandling
      _persistenceKeyName
      _prodErrorMap
      _reloadWithoutSaving
      _tokenExpiresIn
      assertStringOrUndefined
      createErrorInternal
      debugAssert
      debugFail
      deleteAccount
      extractProviderData
      getAccountInfo
      getIdTokenResult
      getVersionForPlatform
      isUserInvalidated
      mergeProviderData
      registerAuth
      reload
      requestStsToken
      secondsStringToMilliseconds
      utcTimestampToDateString
      

      ?
      classes
      ?

      12 dependencies

      AuthImpl
      AuthInterop
      Delay
      FetchProvider
      InMemoryPersistence
      NetworkTimeout
      PersistenceUserManager
      ProactiveRefresh
      StsTokenManager
      Subscription
      UserImpl
      UserMetadata
      

      ?
      variables
      ?

      13 dependencies

      DEFAULT_API_TIMEOUT_MS
      NETWORK_TIMEOUT
      NETWORK_TIMEOUT_DELAY
      PING_TIMEOUT
      ProviderId
      SERVER_ERROR_MAP
      _DEFAULT_AUTH_ERROR_FACTORY
      _POLL_WINDOW_CLOSE_TIMEOUT
      inMemoryPersistence
      instanceCache
      logClient
      name
      version
      

      ?
      enums
      ?
      ?

      External Dependency Table

      ModuleBase (5473957)Head (253e05d)Diff
      @firebase/app-exp
      ?

      SDK_VERSION
      _registerComponent
      registerVersion
      

      ?
      @firebase/util
      ?

      ErrorFactory
      FirebaseError
      base64Decode
      createSubscribe
      getModularInstance
      getUA
      isBrowserExtension
      isMobileCordova
      isReactNative
      querystring
      

      ?
      @firebase/logger
      ?

      LogLevel
      Logger
      

      ?
      tslib
      ?

      __rest
      

      ?
      @firebase/component
      ?

      Component
      

      ?
    • SignInMethod

      Size Table

      TypeBase (5473957)Head (253e05d)Diff
      size
      ?
      29.6 kB
      ? (?)
      size-with-ext-deps
      ?
      40.8 kB
      ? (?)

      Dependency Table

      TypeBase (5473957)Head (253e05d)Diff
      functions
      ?

      47 dependencies

      _assert
      _castAuth
      _createError
      _emulatorUrl
      _fail
      _getBrowserName
      _getClientVersion
      _getCurrentScheme
      _getFinalTarget
      _getInstance
      _getUserLanguage
      _initializeAuthInstance
      _isAndroid
      _isBlackBerry
      _isChromeIOS
      _isFirefox
      _isHttpOrHttps
      _isIEMobile
      _isOnline
      _isSafari
      _isWebOS
      _logError
      _logoutIfInvalidated
      _makeTaggedError
      _parseToken
      _performApiRequest
      _performFetchWithErrorHandling
      _persistenceKeyName
      _prodErrorMap
      _reloadWithoutSaving
      _tokenExpiresIn
      assertStringOrUndefined
      createErrorInternal
      debugAssert
      debugFail
      deleteAccount
      extractProviderData
      getAccountInfo
      getIdTokenResult
      getVersionForPlatform
      isUserInvalidated
      mergeProviderData
      registerAuth
      reload
      requestStsToken
      secondsStringToMilliseconds
      utcTimestampToDateString
      

      ?
      classes
      ?

      12 dependencies

      AuthImpl
      AuthInterop
      Delay
      FetchProvider
      InMemoryPersistence
      NetworkTimeout
      PersistenceUserManager
      ProactiveRefresh
      StsTokenManager
      Subscription
      UserImpl
      UserMetadata
      

      ?
      variables
      ?

      13 dependencies

      DEFAULT_API_TIMEOUT_MS
      NETWORK_TIMEOUT
      NETWORK_TIMEOUT_DELAY
      PING_TIMEOUT
      SERVER_ERROR_MAP
      SignInMethod
      _DEFAULT_AUTH_ERROR_FACTORY
      _POLL_WINDOW_CLOSE_TIMEOUT
      inMemoryPersistence
      instanceCache
      logClient
      name
      version
      

      ?
      enums
      ?
      ?

      External Dependency Table

      ModuleBase (5473957)Head (253e05d)Diff
      @firebase/app-exp
      ?

      SDK_VERSION
      _registerComponent
      registerVersion
      

      ?
      @firebase/util
      ?

      ErrorFactory
      FirebaseError
      base64Decode
      createSubscribe
      getModularInstance
      getUA
      isBrowserExtension
      isMobileCordova
      isReactNative
      querystring
      

      ?
      @firebase/logger
      ?

      LogLevel
      Logger
      

      ?
      tslib
      ?

      __rest
      

      ?
      @firebase/component
      ?

      Component
      

      ?

@@ -20,18 +20,18 @@ export interface ActionCodeInfo {
multiFactorInfo?: MultiFactorInfo | null;
previousEmail?: string | null;
};
operation: ActionCodeOperation;
operation: string;
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

We can use string literal unions to make it more type safe, using something like

typeof ActionCodeOperation[keyof typeof ActionCodeOperation]

We can apply the same to other places.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Done (where appropriate)

ProviderId and SignInMethod should remain string. Updated the others.

@sam-gc sam-gc assigned Feiyang1 and unassigned sam-gc Jun 18, 2021
@Feiyang1 Feiyang1 merged commit be08d19 into master Jun 18, 2021
@Feiyang1 Feiyang1 deleted the sam-gc/enum branch June 18, 2021 18:45
@firebase firebase locked and limited conversation to collaborators Jul 19, 2021
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

Stop using const enums in the public API
5 participants