Skip to content

fix(util): Use safevalues to sanitize HTML strings #9070

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

Draft
wants to merge 1 commit into
base: main
Choose a base branch
from

Conversation

dlarocque
Copy link
Contributor

Use https://www.npmjs.com/package/safevalues/v/0.3.1 to sanitize HTML strings that are potentially unsafe when attached to the DOM with innerHTML. This should fix JS conformance issues we're seeing when importing to google3.

Copy link

changeset-bot bot commented May 30, 2025

🦋 Changeset detected

Latest commit: 4d9e45f

The changes in this PR will be included in the next version bump.

This PR includes changesets to release 30 packages
Name Type
@firebase/util Patch
@firebase/ai Patch
@firebase/analytics-compat Patch
@firebase/analytics Patch
@firebase/app-check-compat Patch
@firebase/app-check Patch
@firebase/app-compat Patch
@firebase/app Patch
@firebase/auth-compat Patch
@firebase/auth Patch
@firebase/component Patch
@firebase/data-connect Patch
@firebase/database-compat Patch
@firebase/database-types Patch
@firebase/database Patch
firebase Patch
@firebase/firestore-compat Patch
@firebase/firestore Patch
@firebase/functions-compat Patch
@firebase/functions Patch
@firebase/installations-compat Patch
@firebase/installations Patch
@firebase/messaging-compat Patch
@firebase/messaging Patch
@firebase/performance-compat Patch
@firebase/performance Patch
@firebase/remote-config-compat Patch
@firebase/remote-config Patch
@firebase/storage-compat Patch
@firebase/storage Patch

Not sure what this means? Click here to learn what changesets are.

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

Copy link
Contributor

Vertex AI Mock Responses Check ⚠️

A newer major version of the mock responses for Vertex AI unit tests is available. update_vertexai_responses.sh should be updated to clone the latest version of the responses: v13.0

@google-oss-bot
Copy link
Contributor

google-oss-bot commented May 30, 2025

Size Analysis Report 1

Affected Products

  • @firebase/auth

    • connectAuthEmulator

      Size

      TypeBase (1933324)Merge (33dabb0)Diff
      size-with-ext-deps69.2 kB80.7 kB+11.5 kB (+16.7%)
    • getAuth

      Size

      TypeBase (1933324)Merge (33dabb0)Diff
      size-with-ext-deps109 kB120 kB+11.6 kB (+10.7%)
  • @firebase/data-connect

    • connectDataConnectEmulator

      Size

      TypeBase (1933324)Merge (33dabb0)Diff
      size-with-ext-deps35.5 kB47.1 kB+11.5 kB (+32.5%)
  • @firebase/database

    • connectDatabaseEmulator

      Size

      TypeBase (1933324)Merge (33dabb0)Diff
      size-with-ext-deps145 kB156 kB+11.6 kB (+8.0%)
    • getDatabase

      Size

      TypeBase (1933324)Merge (33dabb0)Diff
      size-with-ext-deps152 kB164 kB+11.5 kB (+7.6%)
  • @firebase/firestore

    • connectFirestoreEmulator

      Size

      TypeBase (1933324)Merge (33dabb0)Diff
      size-with-ext-deps93.3 kB105 kB+11.5 kB (+12.4%)
    • getFirestore

      Size

      TypeBase (1933324)Merge (33dabb0)Diff
      size-with-ext-deps101 kB112 kB+11.5 kB (+11.4%)
  • @firebase/functions

    • connectFunctionsEmulator

      Size

      TypeBase (1933324)Merge (33dabb0)Diff
      size-with-ext-deps25.3 kB36.9 kB+11.5 kB (+45.5%)
    • getFunctions

      Size

      TypeBase (1933324)Merge (33dabb0)Diff
      size-with-ext-deps33.2 kB44.7 kB+11.5 kB (+34.7%)
  • @firebase/storage

    • connectStorageEmulator

      Size

      TypeBase (1933324)Merge (33dabb0)Diff
      size-with-ext-deps34.8 kB46.3 kB+11.5 kB (+33.1%)
    • getStorage

      Size

      TypeBase (1933324)Merge (33dabb0)Diff
      size-with-ext-deps42.7 kB54.2 kB+11.5 kB (+27.0%)
  • @firebase/util

    • CONSTANTS

      Size

      TypeBase (1933324)Merge (33dabb0)Diff
      size100 B142 B+42 B (+42.0%)
    • DecodeBase64StringError

      Size

      TypeBase (1933324)Merge (33dabb0)Diff
      size130 B172 B+42 B (+32.3%)
    • Deferred

      Size

      TypeBase (1933324)Merge (33dabb0)Diff
      size314 B356 B+42 B (+13.4%)
    • ErrorFactory

      Size

      TypeBase (1933324)Merge (33dabb0)Diff
      size641 B683 B+42 B (+6.6%)
    • FirebaseError

      Size

      TypeBase (1933324)Merge (33dabb0)Diff
      size642 B684 B+42 B (+6.5%)
    • MAX_VALUE_MILLIS

      Size

      TypeBase (1933324)Merge (33dabb0)Diff
      size50 B92 B+42 B (+84.0%)
    • RANDOM_FACTOR

      Size

      TypeBase (1933324)Merge (33dabb0)Diff
      size38 B80 B+42 B (+110.5%)
    • Sha1

      Size

      TypeBase (1933324)Merge (33dabb0)Diff
      size2.08 kB2.13 kB+42 B (+2.0%)
    • areCookiesEnabled

      Size

      TypeBase (1933324)Merge (33dabb0)Diff
      size130 B172 B+42 B (+32.3%)
    • assert

      Size

      TypeBase (1933324)Merge (33dabb0)Diff
      size245 B287 B+42 B (+17.1%)
    • assertionError

      Size

      TypeBase (1933324)Merge (33dabb0)Diff
      size211 B253 B+42 B (+19.9%)
    • async

      Size

      TypeBase (1933324)Merge (33dabb0)Diff
      size121 B163 B+42 B (+34.7%)
    • base64

      Size

      TypeBase (1933324)Merge (33dabb0)Diff
      size3.11 kB3.15 kB+42 B (+1.4%)
    • base64Decode

      Size

      TypeBase (1933324)Merge (33dabb0)Diff
      size3.23 kB3.27 kB+42 B (+1.3%)
    • base64Encode

      Size

      TypeBase (1933324)Merge (33dabb0)Diff
      size3.18 kB3.22 kB+42 B (+1.3%)
    • base64urlEncodeWithoutPadding

      Size

      TypeBase (1933324)Merge (33dabb0)Diff
      size3.25 kB3.29 kB+42 B (+1.3%)
    • calculateBackoffMillis

      Size

      TypeBase (1933324)Merge (33dabb0)Diff
      size203 B245 B+42 B (+20.7%)
    • contains

      Size

      TypeBase (1933324)Merge (33dabb0)Diff
      size87 B129 B+42 B (+48.3%)
    • createMockUserToken

      Size

      TypeBase (1933324)Merge (33dabb0)Diff
      size3.82 kB3.86 kB+42 B (+1.1%)
    • createSubscribe

      Size

      TypeBase (1933324)Merge (33dabb0)Diff
      size1.85 kB1.89 kB+42 B (+2.3%)
    • decode

      Size

      TypeBase (1933324)Merge (33dabb0)Diff
      size3.45 kB3.49 kB+42 B (+1.2%)
    • deepCopy

      Size

      TypeBase (1933324)Merge (33dabb0)Diff
      size384 B426 B+42 B (+10.9%)
    • deepEqual

      Size

      TypeBase (1933324)Merge (33dabb0)Diff
      size367 B409 B+42 B (+11.4%)
    • deepExtend

      Size

      TypeBase (1933324)Merge (33dabb0)Diff
      size350 B392 B+42 B (+12.0%)
    • errorPrefix

      Size

      TypeBase (1933324)Merge (33dabb0)Diff
      size77 B119 B+42 B (+54.5%)
    • extractQuerystring

      Size

      TypeBase (1933324)Merge (33dabb0)Diff
      size148 B190 B+42 B (+28.4%)
    • getDefaultAppConfig

      Size

      TypeBase (1933324)Merge (33dabb0)Diff
      size4.03 kB4.07 kB+42 B (+1.0%)
    • getDefaultEmulatorHost

      Size

      TypeBase (1933324)Merge (33dabb0)Diff
      size4.08 kB4.12 kB+42 B (+1.0%)
    • getDefaultEmulatorHostnameAndPort

      Size

      TypeBase (1933324)Merge (33dabb0)Diff
      size4.38 kB4.42 kB+42 B (+1.0%)
    • getDefaults

      Size

      TypeBase (1933324)Merge (33dabb0)Diff
      size3.95 kB3.99 kB+42 B (+1.1%)
    • getExperimentalSetting

      Size

      TypeBase (1933324)Merge (33dabb0)Diff
      size4.03 kB4.08 kB+42 B (+1.0%)
    • getGlobal

      Size

      TypeBase (1933324)Merge (33dabb0)Diff
      size221 B263 B+42 B (+19.0%)
    • getModularInstance

      Size

      TypeBase (1933324)Merge (33dabb0)Diff
      size99 B141 B+42 B (+42.4%)
    • getUA

      Size

      TypeBase (1933324)Merge (33dabb0)Diff
      size154 B196 B+42 B (+27.3%)
    • isAdmin

      Size

      TypeBase (1933324)Merge (33dabb0)Diff
      size3.54 kB3.58 kB+42 B (+1.2%)
    • isBrowser

      Size

      TypeBase (1933324)Merge (33dabb0)Diff
      size197 B239 B+42 B (+21.3%)
    • isBrowserExtension

      Size

      TypeBase (1933324)Merge (33dabb0)Diff
      size190 B232 B+42 B (+22.1%)
    • isCloudWorkstation

      Size

      TypeBase (1933324)Merge (33dabb0)Diff
      size90 B132 B+42 B (+46.7%)
    • isCloudflareWorker

      Size

      TypeBase (1933324)Merge (33dabb0)Diff
      size127 B169 B+42 B (+33.1%)
    • isElectron

      Size

      TypeBase (1933324)Merge (33dabb0)Diff
      size207 B249 B+42 B (+20.3%)
    • isEmpty

      Size

      TypeBase (1933324)Merge (33dabb0)Diff
      size125 B167 B+42 B (+33.6%)
    • isIE

      Size

      TypeBase (1933324)Merge (33dabb0)Diff
      size233 B275 B+42 B (+18.0%)
    • isIndexedDBAvailable

      Size

      TypeBase (1933324)Merge (33dabb0)Diff
      size109 B151 B+42 B (+38.5%)
    • isMobileCordova

      Size

      TypeBase (1933324)Merge (33dabb0)Diff
      size338 B380 B+42 B (+12.4%)
    • isNode

      Size

      TypeBase (1933324)Merge (33dabb0)Diff
      size4.19 kB4.23 kB+42 B (+1.0%)
    • isNodeSdk

      Size

      TypeBase (1933324)Merge (33dabb0)Diff
      size140 B182 B+42 B (+30.0%)
    • isReactNative

      Size

      TypeBase (1933324)Merge (33dabb0)Diff
      size113 B155 B+42 B (+37.2%)
    • isSafari

      Size

      TypeBase (1933324)Merge (33dabb0)Diff
      size4.32 kB4.36 kB+42 B (+1.0%)
    • isSafariOrWebkit

      Size

      TypeBase (1933324)Merge (33dabb0)Diff
      size4.37 kB4.41 kB+42 B (+1.0%)
    • isUWP

      Size

      TypeBase (1933324)Merge (33dabb0)Diff
      size203 B245 B+42 B (+20.7%)
    • isValidFormat

      Size

      TypeBase (1933324)Merge (33dabb0)Diff
      size3.56 kB3.60 kB+42 B (+1.2%)
    • isValidTimestamp

      Size

      TypeBase (1933324)Merge (33dabb0)Diff
      size3.75 kB3.80 kB+42 B (+1.1%)
    • isWebWorker

      Size

      TypeBase (1933324)Merge (33dabb0)Diff
      size146 B188 B+42 B (+28.8%)
    • issuedAtTime

      Size

      TypeBase (1933324)Merge (33dabb0)Diff
      size3.58 kB3.62 kB+42 B (+1.2%)
    • jsonEval

      Size

      TypeBase (1933324)Merge (33dabb0)Diff
      size57 B99 B+42 B (+73.7%)
    • map

      Size

      TypeBase (1933324)Merge (33dabb0)Diff
      size144 B186 B+42 B (+29.2%)
    • ordinal

      Size

      TypeBase (1933324)Merge (33dabb0)Diff
      size243 B285 B+42 B (+17.3%)
    • pingServer

      Size

      TypeBase (1933324)Merge (33dabb0)Diff
      size103 B145 B+42 B (+40.8%)
    • promiseWithTimeout

      Size

      TypeBase (1933324)Merge (33dabb0)Diff
      size443 B485 B+42 B (+9.5%)
    • querystring

      Size

      TypeBase (1933324)Merge (33dabb0)Diff
      size278 B320 B+42 B (+15.1%)
    • querystringDecode

      Size

      TypeBase (1933324)Merge (33dabb0)Diff
      size200 B242 B+42 B (+21.0%)
    • safeGet

      Size

      TypeBase (1933324)Merge (33dabb0)Diff
      size118 B160 B+42 B (+35.6%)
    • stringLength

      Size

      TypeBase (1933324)Merge (33dabb0)Diff
      size199 B241 B+42 B (+21.1%)
    • stringToByteArray

      Size

      TypeBase (1933324)Merge (33dabb0)Diff
      size716 B758 B+42 B (+5.9%)
    • stringify

      Size

      TypeBase (1933324)Merge (33dabb0)Diff
      size62 B104 B+42 B (+67.7%)
    • updateEmulatorBanner

      Size

      TypeBase (1933324)Merge (33dabb0)Diff
      size4.42 kB4.50 kB+83 B (+1.9%)
      size-with-ext-deps4.42 kB15.8 kB+11.4 kB (+257.6%)

      External Dependency

      ModuleBase (1933324)Merge (33dabb0)Diff
      safevalues

      sanitizeHtml

      + sanitizeHtml

      safevalues/dom

      setElementInnerHtml

      + setElementInnerHtml

    • validateArgCount

      Size

      TypeBase (1933324)Merge (33dabb0)Diff
      size252 B294 B+42 B (+16.7%)
    • validateCallback

      Size

      TypeBase (1933324)Merge (33dabb0)Diff
      size198 B240 B+42 B (+21.2%)
    • validateContextObject

      Size

      TypeBase (1933324)Merge (33dabb0)Diff
      size217 B259 B+42 B (+19.4%)
    • validateIndexedDBOpenable

      Size

      TypeBase (1933324)Merge (33dabb0)Diff
      size404 B446 B+42 B (+10.4%)
    • validateNamespace

      Size

      TypeBase (1933324)Merge (33dabb0)Diff
      size215 B257 B+42 B (+19.5%)

Test Logs

  1. https://storage.googleapis.com/firebase-sdk-metric-reports/IYVhFQRgTX.html
@dlarocque dlarocque force-pushed the dl/safevalues-emu branch from 6d33591 to 5116fde Compare May 30, 2025 18:23
@dlarocque dlarocque force-pushed the dl/safevalues-emu branch from 5116fde to 4d9e45f Compare May 30, 2025 18:24
@google-oss-bot
Copy link
Contributor

google-oss-bot commented May 30, 2025

Size Report 1

Affected Products

  • @firebase/util

    TypeBase (1933324)Merge (ae35123)Diff
    browser29.3 kB29.4 kB+160 B (+0.5%)
    main35.7 kB35.9 kB+239 B (+0.7%)
    module29.3 kB29.4 kB+160 B (+0.5%)
  • bundle

    34 size changes

    TypeBase (1933324)Merge (ae35123)Diff
    auth (GoogleFBTwitterGitHubPopup)109 kB121 kB+11.6 kB (+10.6%)
    database (Append to a list of data)154 kB166 kB+11.5 kB (+7.5%)
    database (Filtering data)153 kB165 kB+11.5 kB (+7.5%)
    database (Listen for child events)170 kB181 kB+11.5 kB (+6.8%)
    database (Listen for value events + Detach listeners)170 kB181 kB+11.5 kB (+6.8%)
    database (Listen for value events)170 kB181 kB+11.5 kB (+6.8%)
    database (Read data once)169 kB181 kB+11.5 kB (+6.8%)
    database (Save data as transactions)172 kB183 kB+11.5 kB (+6.7%)
    database (Sort data)155 kB166 kB+11.5 kB (+7.4%)
    database (Write data)154 kB165 kB+11.5 kB (+7.5%)
    firestore (CSI Auto Indexing Disable and Delete)280 kB291 kB+11.5 kB (+4.1%)
    firestore (CSI Auto Indexing Enable)280 kB291 kB+11.5 kB (+4.1%)
    firestore (Persistence)311 kB323 kB+11.5 kB (+3.7%)
    firestore (Query Cursors)256 kB268 kB+11.5 kB (+4.5%)
    firestore (Query)254 kB265 kB+11.5 kB (+4.5%)
    firestore (Read data once)242 kB253 kB+11.5 kB (+4.8%)
    firestore (Read Write w Persistence)336 kB347 kB+11.5 kB (+3.4%)
    firestore (Realtime updates)244 kB255 kB+11.5 kB (+4.7%)
    firestore (Transaction)221 kB233 kB+11.5 kB (+5.2%)
    firestore (Write data)220 kB232 kB+11.5 kB (+5.2%)
    firestore-lite (Query Cursors)109 kB121 kB+11.5 kB (+10.6%)
    firestore-lite (Query)105 kB117 kB+11.5 kB (+11.0%)
    firestore-lite (Read data once)80.6 kB92.1 kB+11.5 kB (+14.3%)
    firestore-lite (Transaction)106 kB118 kB+11.5 kB (+10.9%)
    firestore-lite (Write data)90.2 kB102 kB+11.5 kB (+12.8%)
    functions (call)39.4 kB50.9 kB+11.5 kB (+29.3%)
    storage (getBytes)47.2 kB58.7 kB+11.5 kB (+24.4%)
    storage (getDownloadURL)49.2 kB60.8 kB+11.5 kB (+23.4%)
    storage (getMetadata)48.7 kB60.2 kB+11.5 kB (+23.7%)
    storage (list + listAll)48.1 kB59.6 kB+11.5 kB (+24.0%)
    storage (updateMetadata)49.0 kB60.5 kB+11.5 kB (+23.6%)
    storage (uploadBytes)53.8 kB65.3 kB+11.5 kB (+21.4%)
    storage (uploadBytesResumable)63.8 kB75.3 kB+11.5 kB (+18.1%)
    storage (uploadString)54.0 kB65.5 kB+11.5 kB (+21.3%)

  • firebase

    15 size changes

    TypeBase (1933324)Merge (ae35123)Diff
    firebase-auth-compat.js145 kB156 kB+10.6 kB (+7.3%)
    firebase-auth-cordova.js142 kB154 kB+11.8 kB (+8.3%)
    firebase-auth-web-extension.js125 kB137 kB+11.8 kB (+9.4%)
    firebase-auth.js163 kB175 kB+11.8 kB (+7.3%)
    firebase-compat.js802 kB813 kB+10.7 kB (+1.3%)
    firebase-data-connect.js22.7 kB34.5 kB+11.8 kB (+52.0%)
    firebase-database-compat.js168 kB179 kB+10.6 kB (+6.3%)
    firebase-database.js192 kB204 kB+11.9 kB (+6.2%)
    firebase-firestore-compat.js347 kB358 kB+10.6 kB (+3.1%)
    firebase-firestore-lite.js137 kB149 kB+11.8 kB (+8.6%)
    firebase-firestore.js449 kB461 kB+11.9 kB (+2.6%)
    firebase-functions-compat.js14.7 kB25.3 kB+10.6 kB (+72.0%)
    firebase-functions.js19.5 kB31.3 kB+11.8 kB (+60.6%)
    firebase-storage-compat.js44.2 kB54.8 kB+10.6 kB (+24.0%)
    firebase-storage.js51.1 kB62.9 kB+11.8 kB (+23.1%)

Test Logs

  1. https://storage.googleapis.com/firebase-sdk-metric-reports/B1reB3gzII.html
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
2 participants