build(deps): bump firebase-admin from 13.10.0 to 14.0.0 in /functions#4
Closed
dependabot[bot] wants to merge 1 commit into
Closed
Conversation
Author
LabelsThe following labels could not be found: Please fix the above issues or remove invalid values from |
41e753e to
83c182e
Compare
83c182e to
222d4c2
Compare
miningtheblocks
added a commit
that referenced
this pull request
Jun 17, 2026
…list + deep-link
Cierra Fase 2 del Audit Round 2. 6 items que comparten "infraestructura cross-cutting"
del frontend ↔ backend.
1. requireRegistered con whitelist explícito de providers.
Pre-fix: blacklist ("rechazar 'anonymous'"). Si Firebase habilita un
provider nuevo (Anonymous via Console, OIDC custom, beforeSignIn blocking
function que devuelve un provider desconocido), el flow lo aceptaba por
default. Whitelist = default-deny: solo password / google.com / apple.com
pasan. Provider desconocido → permission-denied:provider_not_allowed:{X}.
(Agente #6 CRIT)
2. notifyAllUsers FCM/Expo ramificación + token cleanup automático.
Pre-fix: TODOS los tokens iban al endpoint Expo Push API (incluyendo los
FCM nativos que el cliente registra desde V1.1.0+). Expo respondía error
sin tirar excepción → audit log decía "sent=N" cuando realmente fueron 0.
La única broadcast feature del producto NO entregaba mensajes y el admin
nunca se enteraba.
Fix: ramificar por pushTokenType. FCM via
getMessaging().sendEachForMulticast (hasta 500 tokens/call, devuelve
success/error por token). Expo legacy sigue por exp.host. Tokens con
responses "registration-token-not-registered" / "invalid-registration-token"
se borran en batch del user doc.
(Agente #10 CRIT-10-01 + CRIT-10-03)
3. sendPushToUser respeta settings.notify* del user + data payload + cleanup.
Pre-fix (Agente #4 + #10 CRIT-10-02): los toggles de Config.js
(notifyAdReady, notifyDaily, notifyRewards, notifyNewLayer) se persistían
en users/{uid}.settings.* pero el backend nunca los leía — dark pattern
explícito reportable a Play Store / GDPR.
Fix: signature ampliada a sendPushToUser(uid, titles, bodies, opts). Si
opts.notifyKey está y user.settings[notifyKey]===false, skip silencioso.
Default opt-in (undefined → enviar, conserva flow viejo).
3 call sites actualizados: mint complete + payment received + referral
bonus pasan { notifyKey: 'notifyRewards', data: { url: ... } }.
data payload + Object.fromEntries(String(v)) para que FCM acepte (FCM
exige todos los values como strings).
(Agente #10 CRIT-10-02 + CRIT-10-03 + HIGH-10-09)
4. t(key, vars) motor con interpolación + __DEV__ warnings.
Pre-fix: 17 call sites reimplementaban .replace('{x}', y) — riesgo de
reentrancia (si value contenía '{other}' el segundo .replace lo
interpretaba), keys faltantes mostraban el key literal al usuario.
Nuevo motor:
- t('msg', { name, h }) interpola {name} y {h} con String(v).
- En __DEV__ warna si la key no existe o un var declarado no fue provisto.
- Object.prototype.hasOwnProperty.call para evitar prototype pollution.
Profile.js migrado a la nueva API (las 2 sites con walletCooldown +
emailNotVerified). Los otros 15 call sites siguen funcionando con la
nueva t() porque vars es opcional (backwards-compat).
(Agente #10 CRIT-10-04 parcial — full migration de los 15 sites queda P2)
5. addNotificationResponseReceivedListener + DeepLinkHandler ampliado.
Pre-fix: push payload sin data → tap del push solo abre la app en la
última screen. User que recibe "Tu NFT llegó!" no llega a MyGems.
Fix: response listener en App.js dispara Linking.openURL(data.url) si
el push trae data.url con scheme conocido. DeepLinkHandler ampliado de
solo 'peaks' a peaks/gems/profile/buycredits/config/servers — alineado
con los modal keys del OverlayModalsProvider.
Subscription tracked en let-binding + cleanup en outer useEffect return
para evitar leak (paralelo al notifSetupTimer cleanup).
(Agente #10 HIGH-10-09 + HIGH-09-04 cross-ref)
Tests: 24/24 helpers tests pasan sin cambio. functions/index.js parsea OK.
Fase 2 cerrada (4 commits + Tier 1):
Tier 1: 1e1e160 (6 quick wins)
Commit A: d33f627 (schema + reorg + nonce lock)
Commit B: c9b2544 (wallet hot-swap + checkRevoked + password reset)
Commit C: 545c92c (effectiveSeed + payment checkpoint + markGemRedeemed)
Commit D: <hash> (push + i18n + providers + deep-link)
14 CRIT del Audit Round 2 cerrados. Próximo: Fase 3 (compliance + ops).
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
miningtheblocks
added a commit
that referenced
this pull request
Jun 17, 2026
… scrub PII) Cierra 4 items operacionales del Audit Round 2 que tenían en común "señales que existían pero nadie miraba" + leak de PII en logs. 1. maticBalanceCheckScheduled — alert proactivo de MATIC bajo. Pre-fix (Agente #11 CRIT-11-02 + #12 MED-11-49): mints fallaban silenciosamente cuando MATIC llegaba a 0. 5 retries × ~30s = 2-3h de holders esperando ANTES del email de fail (que solo se manda tras FALLAR 5 veces). Sin proactive alert. Nueva CF cada 6h: lee balance via Polygon RPC, compara contra threshold 2 MATIC (~50 mints futuros @ gas típico). Si < threshold: - dedupe via runtime/maticBalanceAlert.lastAlertAt (max 1/día). - email a NOTIFY_EMAIL con balance, threshold, instrucciones para top-up. 2. errorLogSummaryWeekly — digest semanal del errorLog Firestore. Pre-fix (Agente #11 HIGH-11-21): errorLog era write-only en regla; nadie lo leía programáticamente. El dev tenía que abrir Firebase Console manualmente y scrollear. Regresiones del cliente quedaban invisibles hasta que un user reportaba "la app me crashea" via reportProblem. Nueva CF every monday 08:00 ART: query últimos 7 días, agrupa por scope, email HTML con top 25 scopes ordenados por count + sample message. 3. adminActionsAnomalyWeekly — anomaly detection en adminActions. Pre-fix (Agente #11 HIGH-11-22): adminActions también write-only; nadie monitorea. Si un admin se compromete y hace 50 grant_admin + addServerCredit + notifyAllUsers, el log existe pero el operador no se entera hasta auditoría manual mensual (que no está agendada). Nueva CF every monday 08:30 ART: agrupa últimos 7 días por adminUid + action. Si CUALQUIER admin tuvo >50 ops/sem, marca⚠️ HIGH en la fila + subject line con flag. Email HTML con 2 tablas (by admin, by action). 4. PII scrub: a) sendVerificationEmail: pre-fix logueaba `prefix: verificationLink.slice(0, 80)` que incluye el oobCode (1h-valid password reset token) + email del user. Fix: usar URL parser para loguear solo protocol+host (suficiente para diagnóstico). (Agente #11 MED-11-25) b) src/utils/logError.js: pre-fix scrubeaba PII solo por nombre de key (_SENSITIVE_KEY_RE). Si un caller pasaba `{ formData: { email: 'a@b.com' } }`, el value leakeaba porque "formData" no matchea. Fix: scrub adicional por VALOR con 3 regex (email, wallet 0x{40}, phone +CC{8-15}) reemplazando por placeholders genéricos preservando el resto del contexto para debug. (Agente #4 MED-FE-23 + Agente #11 MED-11-41) Tests: 24/24 helpers pasan, functions/index.js parsea OK. Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
miningtheblocks
added a commit
that referenced
this pull request
Jun 17, 2026
…ecesarias) Cierra Agente #4 MED-FE-17 + Agente #5 MEDIUM (dead code confirmados por grep como NO importados desde ningún módulo activo). Archivos eliminados (verificados vía `grep -rn from.*Name` → 0 matches en src/ y App.js): - src/components/MassiveCube.js (169 LOC) — usaba @react-three/fiber - src/components/Layer100Renderer.js (250 LOC) — exp del renderer alterno - src/components/FaceGrid201.js (484 LOC) — renderer de cara alterno - src/utils/ThreeSetup.js (104 LOC) — helper de three.js sin uso - src/utils/CubeCalculations.js (150 LOC) — math helpers ahora en helpers.js backend - src/utils/ads.js ( 66 LOC) — RewardedAd manual; el flow real está inline en GetPeaks.js Total: ~1223 LOC eliminadas del bundle JS del cliente. Deps removidas de package.json (solo usadas por MassiveCube.js): - @react-three/fiber (^9.3.0) - @react-three/drei (^10.7.6) Reducción de bundle estimada: ~650KB (deps no minificadas) según Agente #4. APK más liviano → install rate más alto + cold-start más rápido. NO ELIMINADO (deferred por scope — refactor de DynamicCube201.js requiere test browser): - State `miningAnimations` + `setMiningAnimations` en DynamicCube201.js:1505 (state nunca actualizado pero referenciado en 4+ lugares — necesita revisión cuidadosa para evitar regresiones en animaciones). - Ref `minedPollRef` en DynamicCube201.js:1514 (mismo). Próximo paso operacional (no código): `npm install` para actualizar package-lock.json + sacar @react-three/{fiber,drei} de node_modules. Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
miningtheblocks
added a commit
that referenced
this pull request
Jun 17, 2026
…TURE.md 1. Pre-permission UI antes del system prompt nativo de notificaciones. Cierra CRIT (Agente #4 CRIT-FE-01 + Agente #10 HIGH-10-06): pre-fix, requestPermissionsAsync se disparaba auto a los 2s del login sin contexto. Apple HIG y Google Play recomiendan modal explicativo ANTES del prompt nativo — sin esto, el user rechaza por sorpresa y queda imposible de re-promptear sin deep-link a Settings. Flow nuevo (App.js useEffect [user]): 1. Cold start con user logueado → leer AsyncStorage NOTIFICATIONS_CONSENT. 2. Si 'yes' → setupPushToken directo. 3. Si 'no' → skip (respetar opt-out, NO volver a preguntar). 4. Si absent (primer login) → Alert.alert con: - Title: "¿Querés enterarte cuándo pasa algo?" - Body: explica los 3 tipos (NFT mint, payment credit, referral bonus) + nota "podés mutear cada categoría en Settings, sin spam". - Buttons: "Activar" / "No gracias" (cancelable:false). - On accept: setItem 'yes' + setupPushToken (que internamente llama requestPermissionsAsync). - On decline: setItem 'no' (final — no más prompts). StorageKeys.NOTIFICATIONS_CONSENT agregado a constants.js. i18n keys EN+ES agregadas (notificationsConsent{Title,Body,Accept,Decline}) para futuro uso si migran a un modal custom (esta versión usa Alert.alert nativo porque i18n context no es trivialmente accesible desde App.js). 2. ARCHITECTURE.md — visión técnica del sistema. Cierra Agente #11 MED-11-53 — single-operator hoy, pero si llega otro dev o pasan el proyecto, el ramp-up es muy duro sin documentación del por qué detrás del cómo. Contenido (~350 líneas): - Stack (RN+Expo+Firebase+Polygon+Ethereum tooling). - Diagrama ASCII de componentes principales. - Modelo de datos Firestore (colecciones + subcolecciones + runtime locks). - 3 flows críticos paso a paso (mineCube, crypto payment, NFT claim) con referencias a qué commits del Audit Round 2 cambiaron qué. - Modelo de seguridad: 5 capas de defense in depth con qué cubre cada una. - Secrets: tabla de 3 secrets, sus consumers, rotation procedure, blast radius si leak. - Tradeoffs documentados: por qué sideload, por qué FCM nativo, por qué soft-delete, por qué Polygon, por qué single-operator backend. - Code layout completo. - Roadmap operacional + code-only restantes. Complementa RUNBOOK.md (incident response) y reports de auditoría. Tests: App.js parsea OK. helpers tests no afectados (sin cambios funcionales en lógica que toquen). Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
miningtheblocks
added a commit
that referenced
this pull request
Jun 17, 2026
Cierra 6 hallazgos críticos pendientes pre-launch. Cambios localizados, sin refactor estructural. 1. activityFeed TTL `expiresAt` (Agente #12 + #11 HIGH-11-40). writeActivity ahora agrega expiresAt = now + 7d. Firestore TTL Console borrará docs viejos automáticamente (después de activar la policy — pendiente operacional en RUNBOOK). Pre-fix: feed crecía infinito → cost amplification + PII histórica. 2. mineCube docId `${K}_${cubeNumber}` (Agente #1 CRIT-1). Pre-fix: `mined/${cubeNumber}` colisionaba entre layers. K=100 mina N=5; cuando K decrementa a 99 y otro user mina N=5 en K=99, el docId "5" colisiona → data mixing. Pre-launch: 0 mines reales en producción → forward-only safe. 3. processPendingMints audit log en adminActions (Agente #6 HIGH). La invocación manual del cron de mints no quedaba en adminActions, solo en Cloud Logging (retención 30d). Para forensic post-incidente esencial. 4. Override global de console.log REMOVIDO (Agente #4 CRIT-FE-06). Pre-fix: console.log = wrapper que filtraba un warning de expo-gl. Anti-pattern: HMR re-importa el módulo → wrappea otra vez → cadena infinita de wrappers. Plus dead code en prod (babel strippea console.log). 5. miningAnimations dead state REMOVIDO (Agente #5). const [miningAnimations, setMiningAnimations] = useState(new Map()) declarado pero setMiningAnimations nunca se llamaba. 3 sites referenciaban este state muerto: useEffect cleanup forEach (no-op, removido), render loop check hasActiveAnimations (siempre false), comments documentan migración a useRef si vuelve la necesidad. 6. getFaceRange() lee del cache faceRangesRef (Agente #5 CRIT-4). Pre-fix: iteraba 240k cubeNumbers por call. JSX lo llamaba en cada re-render = 15-60×/seg × 240k = 14M iter/seg = stutter Android low-end. Fix: cache hit primero (faceRangesRef ya populated por recomputeFaceRanges en buildLayer). Loop solo en cache miss. Bonus: setCorsHeaders unused import removido (post Commit K). Tests: helpers OK, lint clean, parse OK. Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
miningtheblocks
added a commit
that referenced
this pull request
Jun 17, 2026
…, UpdateModal hardening, verifyBeforeUpdateEmail) Cierra 4 hallazgos del bloque auth/identity pendientes post Commit B. 1. mineCube + assertFreshToken (Agente #6 CRIT — deferred en Commit B). Commit B aplicó checkRevoked en claimGemNFT, createCryptoPayment, submitGemClaim pero defirió mineCube por costo (~100 Auth Admin calls por sesión típica de mineo). Re-evaluación: costo real ~$0-10/mes a <10k DAU. Aceptable para garantizar que tokens revocados (post password reset, post admin-suspensión, post deleteMyAccount) no puedan mintear gemas hasta que el JWT TTL natural (~60min) los pesque. 2. Login.js: clear password post-login (Agente #4 ALTO-FE-15). Pre-fix: tras `signInWithEmailAndPassword`, el password seguía en React state hasta unmount o next render. Si la app queda en background, otra app con memory dump capability puede leerlo. Best-effort en JS (no hay SecureString native) — `setPassword('')` después de éxito + después de "email no verificado + signOut". 3. UpdateModal: rechazar userinfo + custom port (Agente #4 ALTO-FE-11). Pre-fix: `new URL("https://attacker.com@miningtheblocks.com/evil.apk")` parsea hostname=miningtheblocks.com (passa el allowlist) pero algunos clientes Android Linking navegan al userinfo en lugar del host. Bypass de la última línea de defensa contra APK malicioso via downloadUrl. Fix: explícitamente reject `u.username`, `u.password`, `u.port !== 443`. 4. Registration.js: verifyBeforeUpdateEmail en lugar de updateEmail (Agente #6 HIGH-12). Pre-fix: `updateEmail(u, newEmail)` cambiaba el email inmediatamente + dejaba emailVerified=false silenciosamente → limbo (user cree email cambió; no puede recuperar password porque nuevo no está verified; viejo ya no funciona). Plus escalation vector en account takeover. Fix: `verifyBeforeUpdateEmail(u, newEmail)`. Manda email de verificación al NUEVO address; el email solo cambia cuando el user clickea el link. Hasta entonces puede seguir con el email viejo. API moderna de Firebase Auth v9+ que reemplaza updateEmail. Tests: parse OK + lint OK + 24/24 helpers tests. Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
miningtheblocks
added a commit
that referenced
this pull request
Jun 17, 2026
…rofile uid, audio dedupe) Cierra 3 hallazgos pendientes del Agente #4. 1. BuyCredits.js restore preserva amount + wallet (ALTO-FE-14). Pre-fix: cache guardaba solo {paymentId, expiresAt}; al restaurar tras crash/swipe, user veía timer corriendo pero amount=null y wallet=null → no sabía cuánto pagar ni a qué dirección. Fix: cachear también amount + wallet (devueltos por callCreateCryptoPayment). 2. Profile.js subscribe al uid actual via onAuthStateChanged (ALTO-FE-07). Pre-fix: useEffect deps=[] capturaba auth.currentUser al mount. Si el user cambiaba durante el componente lifetime (logout + login con otra cuenta), el listener servía data del uid VIEJO → cross-user data leak (mostraba wallet/email del primer user al segundo). Fix: subscribe a onAuthStateChanged; restart onSnapshot cuando uid cambia (incluye uid=null = signed out). Cleanup completo en unmount. 3. AudioManager double-unload warning (ALTO-FE-13). Pre-fix: cap eviction (line 165) llama oldest.unloadAsync(). Si el callback didJustFinish del oldest dispara después (race), llama unloadAsync de nuevo → "already unloaded" warning. Doble issue: también re-evalúa el indexOf que ya no existe. Fix: (a) clear setOnPlaybackStatusUpdate(null) ANTES del unload en eviction; (b) guard en el callback: solo unload si todavía está en activeSounds (defensive against race). Tests: parse OK. helpers no afectados (cliente only). Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
miningtheblocks
added a commit
that referenced
this pull request
Jun 17, 2026
…d dep, i18n hardcoded) 3 cleanups menores. 1. audioManager.cleanup() en signOut (Agente #4 MED-FE-21). Pre-fix: música seguía sonando después de signOut sobre la pantalla de Login. ~5MB residente + UX disonante. Fix: en App.js onAuthStateChanged, cuando u === null (signOut) llamamos audioManager.cleanup() antes de setUser(null). El cleanup es idempotente (resetea flags para que un re-init después funcione). Esto cubre TODOS los signOut paths (DrawerItem, ServerList session expired, cold-start con KEEP_SIGNED_IN=0, etc.) sin tener que modificar cada caller. 2. react-native-svg-transformer removido (Agente #9 MED-09-23). Verificado: 0 references en metro.config.js + 0 imports en src/. El transformer está instalado pero no se conecta — dead dep ~50KB. metro.config.js usa el default config sin transformer custom. Si en el futuro necesitan SVG como componentes (no como assets), re-instalar + agregar el transformer. 3. i18n key picksSuffix EN+ES en namespace profile (Agente #10 MED-10-25). GetPeaks.js:203 mostraba "picks" hardcoded en EN para todos los users. Usuarios en ES veían "picks" en lugar de "picos". Fix: key picksSuffix = "picks"/"picos" + GetPeaks usa t('profile.picksSuffix'). Tests: parse OK + JSON valid. Próximo paso operacional: `npm install` para sacar react-native-svg-transformer de node_modules + actualizar lockfile. Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
miningtheblocks
added a commit
that referenced
this pull request
Jun 23, 2026
Smart contract V2 (cierra CRIT-S1/S2/S3 + MED-S1 + HIGH-S1): - Deploy: 0x2933Ff14AdeC0a4D74aD8380E5c491321bBd3195 (Polygon mainnet, verified) - AccessControl 2-of-3 Safe (0x83a3F5...86aCD) ADMIN+PAUSER, EOA nftv2 MINTER - Supply caps inmutables por tier [1,1,5,50,100,500,1000,4000,10000] - tokenURI canónico por tier (caller no controla URI) - renounceRole(ADMIN) bloqueado (anti-bricking) - functions/index.js: ABI actualizado (mintGem 3 args sin tokenURI_) Backend fixes (batch 3): - #2 HIGH-1 cross-attribution USDC: senderWalletAddress opt-in + match con event.args.from - #4 HIGH-M1 gem-loss window: gem + pendingMint dentro del TX con docIds determinísticos - #4 HIGH-R1 cap referrer bonus: 50 invitados rewarded max (campo referralsRewarded) - #2 HIGH-2 rateLimits TTL: expiresAt usa Timestamp.fromMillis - #3 MED-4 Sentry PII scrubber: beforeSend + beforeBreadcrumb sobre email/wallet/phone Build / Deploy (batch 1): - #9 HIGH-1 credentialsSource:local en eas.json production - #9 HIGH-3 versionCode:5 en app.json - #9 HIGH-4 runtimeVersion appVersion en app.json - #9 HIGH-7 MTB-v1.1.0.apk.sha256 copiado a docs/ - #9 HIGH-8 download URL -> releases/latest Supply chain (batch 1+2): - #5 HIGH-2 nodemailer ^8.0.10 -> ^9.0.1 - #5 HIGH-3 npm overrides ws@^8.21.0 + undici@^6.27.0 - #5 HIGH-4 npm audit en root agregado al CI - #5 HIGH-5 @cyclonedx/cdxgen pinned a 11.5.0 (no @latest) Privacy / Legal (batch 1+2): - #8 HIGH-1 retention 5y AML/KYC explícito (EN + ES) - #8 HIGH-2 governing law: Argentina/Buenos Aires (EN + ES) - #8 HIGH-8 clarificado solo email+password sin OAuth Apple/Google (EN + ES) Frontend security (batch 2): - #3 HIGH-1 verify.html inline script -> public/verify.js + removido unsafe-inline - #3 HIGH-2 el() helper sin innerHTML Web / SEO / a11y (batch 1+2): - #10 HIGH-5 frame-buster JS anti-clickjacking - #10 HIGH-6 docs/robots.txt + docs/sitemap.xml - #10 HIGH-7 OG + Twitter Card + canonical en docs/index.html - #10 HIGH-8 label for=... en form inputs + .sr-only utility Smart contract tooling: - contracts/MTBGemsV2.sol (source) + contracts_build/ (hardhat 0.8.27 cancun, 17/17 tests) Pre-commit hook: refinado patrón anti-secret para no flagear tx hashes públicos en docs y constantes role de OpenZeppelin. Pendiente acción manual (documentado en PENDING_FIXES.md): - cd functions && npm install - firebase deploy --only functions / --only hosting - GitHub Settings -> Pages -> Enforce HTTPS - DNS records SPF/DMARC/CAA en Cloudflare Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
Bumps [firebase-admin](https://github.com/firebase/firebase-admin-node) from 13.10.0 to 14.0.0. - [Release notes](https://github.com/firebase/firebase-admin-node/releases) - [Changelog](https://github.com/firebase/firebase-admin-node/blob/main/CHANGELOG.md) - [Commits](firebase/firebase-admin-node@v13.10.0...v14.0.0) --- updated-dependencies: - dependency-name: firebase-admin dependency-version: 14.0.0 dependency-type: direct:production update-type: version-update:semver-major ... Signed-off-by: dependabot[bot] <support@github.com>
222d4c2 to
f507e6e
Compare
miningtheblocks
added a commit
that referenced
this pull request
Jun 23, 2026
- sentry.properties: defaults.org/project/url, auth.token vía env (commented) - .env.example: documenta SENTRY_AUTH_TOKEN con link al settings page Sentry - .easignore: + contracts_build/, audit_*/, RUNBOOK.md, *.sha256 (#6 Cleanup #4 bonus) SENTRY_AUTH_TOKEN ya registrado como sensitive EAS env var en environment production. Próximo `eas build --profile production` va a subir source maps automáticamente vía el plugin @sentry/react-native (configurado en app.json). Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
Author
|
Superseded by #28. |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Bumps firebase-admin from 13.10.0 to 14.0.0.
Release notes
Sourced from firebase-admin's releases.
Commits
4754a2f[chore] Release 14.0.0 (#3171)25285eebuild: upgrade compilation target and lib to ES2021 (#3172)d96319ebuild(deps): bump@tootallnate/oncefrom 2.0.0 to 2.0.1 (#3160)0c34e89build(deps): bump fast-uri from 3.1.0 to 3.1.2 (#3168)52d02f7build(deps): bump fast-xml-builder from 1.1.5 to 1.2.0 (#3169)dc788b2chore: fixed api docs typos and omissions (#3170)a39e897build(deps-dev): bump eslint from 10.3.0 to 10.4.1 (#3155)ce6c4dcMerge pull request #3162 from firebase/v14fe71c55fix(functions): storeCLOUD_TASKS_EMULATOR_HOSTat construction time (#3167)659c056change(instance-id): Remove deprecated Instance ID service (#3166)