🔥 A well-tested feature-rich modular Firebase implementation for React Native. Supports both iOS & Android platforms for all Firebase services.
This report presents the forensic synthetic code analysis of invertase/react-native-firebase, a TypeScript project with 12,288 GitHub stars. SynthScan v2.0 examined 220,061 lines of code across 1301 source files, recording 454 pattern matches distributed across 9 syntactic categories. The overall adjusted score of 13.1 places this repository in the Low AI signal band.
The scanner applied 160+ deterministic lexical heuristics, multi-line block detectors, abstract syntax tree depth profilers, and a cross-file Jaccard similarity matrix to construct a statistically normalised synthetic code estimate. All matches are individually weighted by severity coefficient and contextual multiplier before summation, and the resulting headline score is temporally discounted to account for the repository's development history relative to the commercial emergence of large language model coding tooling (November 2022 onward).
This chart maps the temporal evolution of the adjusted synthetic code score across successive scan runs. An upward trajectory indicates ongoing incorporation of AI-generated code or expanding LLM-assisted scaffolding; a stable or declining trajectory may reflect active human refactoring, code removal, or the adoption of stricter authorship policies. The dashed secondary line (right axis) independently tracks total raw pattern hit count, which can diverge from the normalised score when codebase size changes significantly between scans.
Classifies detected patterns by their diagnostic confidence and structural impact. CRITICAL patterns (coefficient 10) represent definitive synthetic signatures — hallucinated imports, explicit LLM attribution metadata — virtually never produced by human authors. HIGH (5) indicates strong structural tells such as cross-file repetition or cross-linguistic idioms. MEDIUM (2) covers recognisable conversational padding and AI-specific vocabulary. LOW (1) captures subtle indicators like tautological comments and generic boilerplate that require density to carry independent signal.
This horizontal bar chart decomposes the repository's raw synthetic code score by top-level directory, allowing you to pinpoint precisely which modules or components carry the highest AI authorship density. Directories with disproportionately high scores relative to their size warrant targeted manual review: concentrated AI signatures often trace back to mass-generated configuration layers, auto-ported test suites, LLM-scaffolded boilerplate classes, or entire subsystems authored under heavy copilot assistance. Use this view to prioritise your human code-review effort.
The scanner identified 454 distinct pattern matches across 9 syntactic categories. Each entry below represents a discrete location in the source code where the engine recorded a statistically significant AI authorship indicator. Expand any category row to inspect the individual file paths, line numbers, code snippets, and the lexical context (CODE, COMMENT, or STRING) in which each match was detected.
Reading the findings table: The Severity column indicates the diagnostic confidence level (CRITICAL / HIGH / MEDIUM / LOW). The Context column identifies whether the match occurred inside executable code, an inline comment, or a string literal — comment-context matches receive a ×1.5 weight because LLMs systematically over-annotate. The ⚡ bolt icon marks clustered matches: three or more patterns within a 10-line window, each receiving an additional ×1.5 density multiplier as dense clusters constitute far stronger evidence of synthetic authorship than isolated hits.
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| CRITICAL⚡ | packages/database/e2e/query/query.e2e.js | 23 | queryBefore._modifiers._modifiers.length.should.equal(0); | CODE |
| CRITICAL⚡ | packages/database/e2e/query/query.e2e.js | 26 | queryBefore._modifiers._modifiers.length.should.equal(0); | CODE |
| CRITICAL⚡ | packages/database/e2e/query/query.e2e.js | 27 | queryAfter._modifiers._modifiers.length.should.equal(1); | CODE |
| CRITICAL⚡ | packages/database/e2e/query/query.e2e.js | 30 | queryAfter._modifiers._modifiers.length.should.equal(1); | CODE |
| CRITICAL⚡ | packages/database/e2e/query/query.e2e.js | 31 | queryAfterAfter._modifiers._modifiers.length.should.equal(3); // adds startAt endAt internally | CODE |
| CRITICAL⚡ | packages/app/e2e/utilsStatics.e2e.js | 26 | FilePath.MAIN_BUNDLE.should.be.a.String(); | CODE |
| CRITICAL⚡ | packages/app/e2e/utilsStatics.e2e.js | 31 | FilePath.CACHES_DIRECTORY.should.be.a.String(); | CODE |
| CRITICAL⚡ | packages/app/e2e/utilsStatics.e2e.js | 32 | FilePath.DOCUMENT_DIRECTORY.should.be.a.String(); | CODE |
| CRITICAL⚡ | packages/app/e2e/utilsStatics.e2e.js | 35 | FilePath.EXTERNAL_DIRECTORY.should.be.a.String(); | CODE |
| CRITICAL⚡ | packages/app/e2e/utilsStatics.e2e.js | 41 | FilePath.EXTERNAL_STORAGE_DIRECTORY.should.be.a.String(); | CODE |
| CRITICAL⚡ | packages/app/e2e/utilsStatics.e2e.js | 46 | FilePath.TEMP_DIRECTORY.should.be.a.String(); | CODE |
| CRITICAL⚡ | packages/app/e2e/utilsStatics.e2e.js | 47 | FilePath.LIBRARY_DIRECTORY.should.be.a.String(); | CODE |
| CRITICAL⚡ | packages/app/e2e/utilsStatics.e2e.js | 48 | FilePath.PICTURES_DIRECTORY.should.be.a.String(); | CODE |
| CRITICAL⚡ | packages/app/e2e/utilsStatics.e2e.js | 49 | FilePath.MOVIES_DIRECTORY.should.be.a.String(); | CODE |
| CRITICAL | packages/app/e2e/app.e2e.js | 50 | modular.SDK_VERSION.should.be.a.String(); | CODE |
| CRITICAL⚡ | packages/app/e2e/app.constants.e2e.js | 44 | app.appConfig.should.be.a.Object(); | CODE |
| CRITICAL⚡ | packages/app/e2e/app.constants.e2e.js | 45 | app.appConfig.name.should.be.a.String(); | CODE |
| CRITICAL⚡ | packages/app/e2e/app.constants.e2e.js | 46 | app.options.should.be.a.Object(); | CODE |
| CRITICAL⚡ | packages/firestore/e2e/Pipeline.e2e.js | 183 | data.createdAt.constructor.name.should.equal('Timestamp'); | CODE |
| CRITICAL⚡ | packages/firestore/e2e/Pipeline.e2e.js | 189 | data.nested.updatedAt.constructor.name.should.equal('Timestamp'); | CODE |
| CRITICAL⚡ | packages/firestore/e2e/Pipeline.e2e.js | 190 | data.nested.updatedAt.seconds.should.equal(updatedAt.seconds); | CODE |
| CRITICAL⚡ | packages/firestore/e2e/Pipeline.e2e.js | 191 | data.nested.updatedAt.nanoseconds.should.equal(updatedAt.nanoseconds); | CODE |
| CRITICAL⚡ | packages/firestore/e2e/Pipeline.e2e.js | 192 | data.nested.linkedRef.path.should.equal(linkedRef.path); | CODE |
| CRITICAL⚡ | packages/firestore/e2e/Pipeline.e2e.js | 2649 | data.nextDay.constructor.name.should.equal('Timestamp'); | CODE |
| CRITICAL⚡ | packages/firestore/e2e/Pipeline.e2e.js | 2651 | data.prevHour.constructor.name.should.equal('Timestamp'); | CODE |
| CRITICAL⚡ | packages/firestore/e2e/Pipeline.e2e.js | 2653 | data.dayBucket.constructor.name.should.equal('Timestamp'); | CODE |
| CRITICAL⚡ | packages/firestore/e2e/Pipeline.e2e.js | 2654 | data.fromEpochMs.constructor.name.should.equal('Timestamp'); | CODE |
| CRITICAL⚡ | packages/firestore/e2e/Pipeline.e2e.js | 2694 | data.now.constructor.name.should.equal('Timestamp'); | CODE |
| CRITICAL⚡ | packages/firestore/e2e/Pipeline.e2e.js | 2696 | data.receiverNow.constructor.name.should.equal('Timestamp'); | CODE |
| CRITICAL⚡ | packages/firestore/e2e/Pipeline.e2e.js | 2699 | data.fromSec.constructor.name.should.equal('Timestamp'); | CODE |
| CRITICAL⚡ | packages/firestore/e2e/Pipeline.e2e.js | 2701 | data.fromMicros.constructor.name.should.equal('Timestamp'); | CODE |
| CRITICAL | packages/firestore/e2e/Pipeline.e2e.js | 1676 | data.randomValue.should.be.a.Number(); | CODE |
| CRITICAL | packages/firestore/e2e/Pipeline.e2e.js | 2269 | data.firstScore.should.be.a.Number(); | CODE |
| CRITICAL | packages/firestore/e2e/Pipeline.e2e.js | 2270 | data.lastScore.should.be.a.Number(); | CODE |
| CRITICAL | packages/firestore/e2e/Pipeline.e2e.js | 2338 | eng.firstName.should.be.a.String(); | CODE |
| CRITICAL | packages/firestore/e2e/Pipeline.e2e.js | 2339 | eng.lastName.should.be.a.String(); | CODE |
| CRITICAL | packages/firestore/e2e/Pipeline.e2e.js | 2439 | data.globalDayBucket.constructor.name.should.equal('Timestamp'); | CODE |
| CRITICAL | packages/firestore/e2e/Pipeline.e2e.js | 2440 | data.fluentDayBucket.constructor.name.should.equal('Timestamp'); | CODE |
| CRITICAL | packages/firestore/e2e/Pipeline.e2e.js | 2728 | data.numType.should.be.a.String(); | CODE |
| CRITICAL | packages/firestore/e2e/Pipeline.e2e.js | 2729 | data.collId.should.be.a.String(); | CODE |
| CRITICAL | packages/firestore/e2e/Pipeline.e2e.js | 3124 | snapshot.results.length.should.be.greaterThan(0); | CODE |
| CRITICAL | packages/firestore/e2e/Pipeline.e2e.js | 4132 | snapshot.results.length.should.be.greaterThan(0); | CODE |
| CRITICAL | packages/firestore/e2e/Pipeline.e2e.js | 4133 | snapshot.results.length.should.be.lessThanOrEqual(10); | CODE |
| CRITICAL | packages/firestore/e2e/SnapshotMetadata.e2e.js | 34 | colRef.metadata.fromCache.should.be.Boolean(); | CODE |
| CRITICAL | packages/firestore/e2e/SnapshotMetadata.e2e.js | 35 | docRef.metadata.fromCache.should.be.Boolean(); | CODE |
| CRITICAL | packages/firestore/e2e/SnapshotMetadata.e2e.js | 46 | colRef.metadata.hasPendingWrites.should.be.Boolean(); | CODE |
| CRITICAL | packages/firestore/e2e/SnapshotMetadata.e2e.js | 47 | docRef.metadata.hasPendingWrites.should.be.Boolean(); | CODE |
| CRITICAL | packages/firestore/e2e/FieldValue.e2e.js | 125 | snapshot.data().foo.seconds.should.be.a.Number(); | CODE |
| CRITICAL | packages/firestore/e2e/FieldValue.e2e.js | 137 | snapshot1.data().foo.nanoseconds.should.be.a.Number(); | CODE |
| CRITICAL | packages/firestore/e2e/FieldValue.e2e.js | 142 | snapshot2.data().foo.nanoseconds.should.be.a.Number(); | CODE |
| CRITICAL | packages/firestore/e2e/DocumentChange.e2e.js | 41 | docChange.doc.constructor.name.should.eql('DocumentSnapshot'); | CODE |
| CRITICAL | packages/firestore/e2e/QuerySnapshot.e2e.js | 51 | snapshot.docs.length.should.be.aboveOrEqual(1); | CODE |
| CRITICAL | packages/firestore/e2e/QuerySnapshot.e2e.js | 76 | snapshot.metadata.constructor.name.should.eql('SnapshotMetadata'); | CODE |
| CRITICAL | packages/firestore/e2e/QuerySnapshot.e2e.js | 83 | snapshot.query.constructor.name.should.eql('CollectionReference'); | CODE |
| CRITICAL | packages/firestore/e2e/withConverter.e2e.js | 65 | post.should.not.be.an.instanceof(Post); | CODE |
| CRITICAL | …es/firestore/e2e/CollectionReference/properties.e2e.js | 29 | instance.firestore.app.name.should.eql('[DEFAULT]'); | CODE |
| CRITICAL⚡ | packages/firestore/e2e/DocumentSnapshot/data.e2e.js | 93 | data.string.should.be.a.String(); | CODE |
| CRITICAL⚡ | packages/firestore/e2e/DocumentSnapshot/data.e2e.js | 95 | data.stringEmpty.should.be.a.String(); | CODE |
| CRITICAL⚡ | packages/firestore/e2e/DocumentSnapshot/data.e2e.js | 99 | data.number.should.be.a.Number(); | CODE |
| CRITICAL⚡ | packages/firestore/e2e/DocumentSnapshot/data.e2e.js | 108 | data.boolTrue.should.be.a.Boolean(); | CODE |
| 151 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | tests/app.js | 262 | after(async function flushNativeCoverageProfile() { | CODE |
| LOW | tests/local-tests/firestore/document-reference.tsx | 6 | export function DocumentReferenceTestComponent() { | CODE |
| LOW | tests/local-tests/firestore/onSnapshotInSync.js | 31 | export function FirestoreOnSnapshotInSyncTest() { | CODE |
| LOW | tests/local-tests/functions/https-callable.tsx | 14 | export function HttpsCallableTestComponent(): React.JSX.Element { | CODE |
| LOW | tests/local-tests/functions/streaming-callable.tsx | 14 | export function StreamingCallableTestComponent(): React.JSX.Element { | CODE |
| LOW | tests/scripts/pull-native-coverage.js | 38 | function androidCoverageFileExists(deviceId) { | CODE |
| LOW | tests/scripts/pull-native-coverage.js | 79 | async function pullAndroidCoverageWithRetry(deviceId, options = {}) { | CODE |
| LOW | tests/scripts/pull-native-coverage.js | 145 | function runJacocoAndroidTestReport() { | CODE |
| LOW | tests/scripts/pull-native-coverage.js | 163 | function deleteProcessedAndroidCoverageEc(ecFilePath) { | CODE |
| LOW | tests/e2e/firebase.test.js | 32 | function logCloudPressureAnalysisPointer(context) { | CODE |
| LOW | tests/e2e/firebase.test.js | 109 | function resolveDetoxConfigurationName() { | CODE |
| LOW | tests/e2e/firebase.test.js | 292 | function resolveAndroidEmulatorPort(serial) { | CODE |
| LOW | tests/e2e/firebase.test.js | 368 | function forceStopAndroidTestingApps(label) { | CODE |
| LOW | tests/e2e/firebase.test.js | 386 | async function waitForAndroidInstrumentationStopped(label, timeoutMs = 30000) { | CODE |
| LOW | tests/e2e/firebase.test.js | 408 | function clearStaleMacOsTestingForSharedJetPort(label) { | CODE |
| LOW | tests/e2e/firebase.test.js | 432 | async function ensureAndroidJetHostClear(label = 'android-jet-host-clear') { | CODE |
| LOW | tests/e2e/firebase.test.js | 489 | async function waitForAndroidEmulatorReady() { | CODE |
| LOW | tests/e2e/firebase.test.js | 718 | function isRetryableJetSessionFailure(output) { | CODE |
| LOW | tests/e2e/firebase.test.js | 742 | function isRetryableCloudQuotaFailure(jetOutput) { | CODE |
| LOW | packages/database/lib/index.ts | 291 | export function setPersistenceCacheSizeBytes(db: Database, bytes: number): Promise<void> { | CODE |
| LOW | packages/database/lib/web/RNFBDatabaseModule.ts | 81 | function snapshotWithPreviousChildToObject( | CODE |
| LOW | packages/database/lib/web/RNFBDatabaseModule.ts | 106 | function getCachedDatabaseInstance(appName: string, dbURL: string): WebDatabase { | CODE |
| LOW | packages/database/lib/web/RNFBDatabaseModule.ts | 123 | function getCachedOnDisconnectInstance(refValue: WebDatabaseReference): WebOnDisconnect { | CODE |
| LOW | packages/database/e2e/helpers.js | 110 | exports.waitForNativeDbListenerReady = async function waitForNativeDbListenerReady( | CODE |
| LOW | packages/database/e2e/helpers.js | 127 | exports.waitForNativeDbListenerRegistration = async function waitForNativeDbListenerRegistration( | CODE |
| LOW | packages/crashlytics/lib/index.ts | 186 | export function didCrashOnPreviousExecution(crashlytics: Crashlytics): Promise<boolean> { | CODE |
| LOW | packages/crashlytics/lib/index.ts | 221 | export function setCrashlyticsCollectionEnabled( | CODE |
| LOW | packages/app/__tests__/harnessCommittedDefaults.test.ts | 111 | function listTrackedHarnessTestSources(): string[] { | CODE |
| LOW | packages/app/__tests__/expoPluginPackageExports.test.ts | 26 | function discoverPackageNamesWithAppPlugin(): string[] { | CODE |
| LOW | packages/app/__tests__/specNativeParityHelper.ts | 120 | export function extractAndroidReactMethods(javaContent: string): string[] { | CODE |
| LOW | packages/app/__tests__/specNativeParityHelper.ts | 218 | export function discoverPackageSpecContexts( | CODE |
| LOW | packages/app/lib/modular.ts | 115 | export function setReactNativeAsyncStorage( | CODE |
| LOW | packages/app/lib/internal/asyncStorage.ts | 47 | export async function getReactNativeAsyncStorageInternal(): Promise<AsyncStorageStatic> { | CODE |
| LOW | packages/app/lib/internal/asyncStorage.ts | 52 | export function setReactNativeAsyncStorageInternal( | CODE |
| LOW | packages/app/lib/internal/web/structuredClone/index.js | 212 | export function makeStructuredCloneAvailable() { | CODE |
| LOW | packages/app/lib/internal/registry/modular.ts | 59 | export function getOrCreateModularInstance<T extends FirebaseModule>( | CODE |
| LOW | packages/app/lib/internal/registry/app.ts | 222 | export function setReactNativeAsyncStorage(asyncStorage: ReactNativeAsyncStorage): void { | CODE |
| LOW | packages/app/lib/internal/registry/nativeModule.ts | 52 | function nativeModuleMethodWrapped( | CODE |
| LOW | packages/app/lib/internal/registry/nativeModule.ts | 78 | function createRoutingCompositeProxy( | CODE |
| LOW | packages/app/lib/internal/registry/nativeModule.ts | 156 | function createSingleHostComposite( | CODE |
| LOW | packages/app/lib/internal/registry/nativeModule.ts | 245 | function subscribeToNativeModuleEvent(eventName: string): void { | CODE |
| LOW | packages/app/lib/common/validate.ts | 25 | export function objectKeyValuesAreStrings(object: unknown): boolean { | CODE |
| LOW | packages/app/lib/common/validate.ts | 209 | export function validateOptionalNativeDependencyExists( | CODE |
| LOW | packages/firestore/type-test.ts | 354 | function acceptRootDocumentSnapshot(_snap: FirestoreDocumentSnapshot<DocumentData>) {} | CODE |
| LOW | packages/firestore/type-test.ts | 607 | async function withTestDocAndInitialData( | CODE |
| LOW | packages/firestore/consumer-type-test.ts | 379 | function rootTransactionUpdateFunction(tx: Transaction): Promise<DocumentSnapshot<DocumentData>> { | CODE |
| LOW | packages/firestore/consumer-type-test.ts | 635 | async function withTestDocAndInitialData( | CODE |
| LOW | …tore/__tests__/pipelines-fluent-serialization-cases.ts | 804 | export function assertCoversAllExpressionMethods(cases: FluentParityCase[]): void { | CODE |
| LOW | packages/firestore/lib/modular.ts | 350 | export function clearIndexedDbPersistence(firestore: Firestore): Promise<void> { | CODE |
| LOW⚡ | packages/firestore/lib/modular.ts | 529 | export function getPersistentCacheIndexManager( | CODE |
| LOW⚡ | packages/firestore/lib/modular.ts | 535 | export function enablePersistentCacheIndexAutoCreation( | CODE |
| LOW⚡ | packages/firestore/lib/modular.ts | 541 | export function disablePersistentCacheIndexAutoCreation( | CODE |
| LOW⚡ | packages/firestore/lib/modular.ts | 547 | export function deleteAllPersistentCacheIndexes( | CODE |
| LOW | packages/firestore/lib/FieldPath.ts | 82 | export function fieldPathOrSegmentsToNative(fieldPath: FieldPath | string[]): string[] { | CODE |
| LOW | packages/firestore/lib/FirestoreDocumentReference.ts | 49 | export function provideCollectionReferenceClass( | CODE |
| LOW | packages/firestore/lib/FirestoreDocumentReference.ts | 67 | export function provideDocumentSnapshotClass( | CODE |
| LOW | packages/firestore/lib/web/RNFBFirestoreModule.ts | 131 | function getCachedFirestoreInstance(appName: string, databaseId: string): Firestore { | CODE |
| LOW | packages/firestore/lib/web/pipelines/pipeline.ts | 30 | async function executeWebSdkPipelineSnapshot( | CODE |
| LOW | …tore/lib/web/pipelines/pipeline_snapshot_serializer.ts | 113 | export function serializeWebSdkPipelineSnapshot( | CODE |
| LOW | …firestore/lib/web/pipelines/pipeline_bridge_factory.ts | 41 | function createPipelineRuntimeImportError(message: string): Error { | CODE |
| 110 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | scripts/run-full-tests.sh | 32 | # In case of error send output to console for agentic troubleshooting | COMMENT |
| MEDIUM | .github/workflows/scripts/android-e2e-detox.sh | 2 | # android-emulator-runner executes each script: line via sh -c; keep orchestration here. | COMMENT |
| MEDIUM | okf-bundle/new-architecture/migration-work-queue.md | 173 | | **3.5** | Guardrails — spec↔native parity + codegen-drift CI (**gates 4**) | **done** | all migrated packages — [§ Pha | CODE |
| MEDIUM | okf-bundle/testing/running-e2e.md | 61 | 6. **One e2e at a time** — never overlap `:test-cover` runs on one host. All platforms share Metro `:8081` and the test- | CODE |
| MEDIUM | okf-bundle/testing/running-e2e.md | 87 | #### Test-runner host orchestration (log triage only) | COMMENT |
| MEDIUM | okf-bundle/testing/running-e2e.md | 89 | **No commands to run from this section** — for interpreting `:test-cover` logs and CI artifacts only. Patch workflow: [d | CODE |
| MEDIUM | okf-bundle/testing/change-authoring-workflow.md | 261 | - **Evidence required:** [§ validation evidence](#validation-evidence-blocking) must be recorded before `commit_gate` cl | CODE |
| MEDIUM | okf-bundle/testing/coverage-design.md | 156 | - **Transfer:** patched test-runner/mocha-remote WS only (`coverage-ready` → `pull-coverage` → `coverage-data` → `covera | CODE |
| MEDIUM | okf-bundle/ci-workflows/android.md | 60 | | Defer `server.run()` until host `POST /launch-ready` on control port **8091** (`RNFB_JET_DEFER_RUN=1`) | Jet patch + ` | CODE |
| MEDIUM | okf-bundle/ci-workflows/detox-patches.md | 20 | Related patches: `jet`, `mocha-remote-client`, `mocha-remote-server` — WS reconnect grace, coverage handshake, client ke | CODE |
| MEDIUM | okf-bundle/ci-workflows/index.md | 15 | * [Test-runner orchestration (log triage)](../testing/running-e2e.md#test-runner-host-orchestration-log-triage-only) — p | COMMENT |
| MEDIUM | okf-bundle/ci-workflows/ios.md | 159 | ### E2E test app orchestration (Detox + Jet) | COMMENT |
| MEDIUM | okf-bundle/ci-workflows/ios.md | 200 | | Defer `server.run()` until host `POST /launch-ready` on control port **8091** (`RNFB_JET_DEFER_RUN=1`) | Jet patch + ` | CODE |
| MEDIUM | okf-bundle/ci-workflows/ios.md | 257 | # Detox orchestration inside the app process | COMMENT |
| MEDIUM | okf-bundle/ci-workflows/ios.md | 351 | # Disconnect resource context (+ orchestrate phase when defer-run enabled) | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | jest.config.js | 1 | module.exports = { | COMMENT |
| LOW | tests/globals.js | 21 | import shouldMatchers from 'should'; | COMMENT |
| LOW | tests/macos/io.invertase.testing-macOS/AppDelegate.mm | 61 | { | COMMENT |
| LOW | tests/local-tests/auth/gcloud-enable-totp-in-project.sh | 1 | #!/bin/bash | COMMENT |
| LOW | scripts/fetch_ai_mock_responses.ts | 1 | // Copyright (c) 2016-present Invertase Limited & Contributors | COMMENT |
| LOW | scripts/update-firebase-sdk-versions.sh | 1 | #!/usr/bin/env bash | COMMENT |
| LOW | scripts/repro-android-build-flake.sh | 1 | #!/bin/bash | COMMENT |
| LOW | packages/crashlytics/ios_config.sh | 1 | #!/usr/bin/env bash | COMMENT |
| LOW | …tics/ios/RNFBCrashlytics/RNFBCrashlyticsInitProvider.m | 21 | #import <FirebaseCoreExtension/FIRComponent.h> | COMMENT |
| LOW | packages/app/ios_config.sh | 1 | #!/usr/bin/env bash | COMMENT |
| LOW | packages/app/firebase_json.rb | 1 | # frozen_string_literal: true | COMMENT |
| LOW | packages/app/ios/RNFBApp/RNFBSharedUtils.h | 21 | #import <FirebaseCore/FirebaseCore.h> | COMMENT |
| LOW | packages/app/ios/RNFBApp/RNFBAppModule.mm | 21 | COMMENT | |
| LOW | packages/app/lib/internal/web/memidb/lib/scheduling.js | 1 | // When running within Node.js (including jsdom), we want to use setImmediate | COMMENT |
| LOW | …ore/ios/RNFBFirestore/RNFBFirestoreCollectionModule.mm | 21 | #import <RNFBFirestore/RNFBFirestore-Swift.h> | COMMENT |
| LOW | …va/io/invertase/firebase/auth/NativeRNFBTurboAuth.java | 1601 | public void onCodeSent( | COMMENT |
| LOW | packages/auth/e2e/auth.e2e.js | 1161 | // await firebase.auth().setTenantId('testTenantId'); | COMMENT |
| LOW | packages/storage/e2e/StorageTask.e2e.js | 381 | snapshotProperties(snapshot); | COMMENT |
| LOW | …ges/functions/ios/RNFBFunctions/RNFBFunctionsModule.mm | 21 | #import "RNFBApp/RCTConvert+FIRApp.h" | COMMENT |
| LOW | …ons/ios/RNFBFunctions/RNFBFunctionsStreamHandler.swift | 21 | COMMENT | |
| LOW | …tions/ios/RNFBFunctions/RNFBFunctionsCallHandler.swift | 21 | COMMENT | |
| LOW | packages/perf/e2e/Trace.e2e.js | 61 | const { getPerformance, trace } = perfModular; | COMMENT |
| LOW | packages/perf/e2e/Trace.e2e.js | 81 | // return Promise.resolve(); | COMMENT |
| LOW | packages/perf/e2e/HttpMetric.e2e.js | 101 | // } | COMMENT |
| LOW | packages/messaging/e2e/messaging.e2e.js | 21 | } | COMMENT |
| LOW | …ges/analytics/ios/RNFBAnalytics/RNFBAnalyticsModule.mm | 21 | #if __has_include(<RNFBAnalytics/RNFBAnalytics-Swift.h>) | COMMENT |
| LOW | packages/analytics/lib/web/api.ts | 21 | } from '../types/web'; | COMMENT |
| LOW | packages/analytics/lib/web/api.ts | 281 | COMMENT | |
| LOW | packages/analytics/lib/web/api.ts | 301 | // affiliation: 'af', | COMMENT |
| LOW | .github/reaction.yml | 1 | # Configuration for reaction-comments - https://github.com/dessant/reaction-comments | COMMENT |
| LOW | .github/reaction.yml | 21 | # pulls: | COMMENT |
| LOW | .github/workflows/create_test_patches.yml | 121 | # Then run the issue commenter that dynamically de-references the artifact on workflow_run | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | CONTRIBUTING.md | 103 | ### Step 1: Clone the repository | COMMENT |
| LOW | CONTRIBUTING.md | 110 | ### Step 2: Install test project dependencies | COMMENT |
| LOW | tests/README.md | 34 | ### Step 1: Install test project dependencies | COMMENT |
| LOW | tests/README.md | 44 | ### Step 2: Start Packager Script | COMMENT |
| LOW | tests/README.md | 60 | ### Step 3: Build Native App | COMMENT |
| LOW | tests/README.md | 81 | ### Step 4: Setting up android emulator and iOS simulator and Firestore emulator | COMMENT |
| LOW | tests/README.md | 97 | ### Step 5: Finally, run the tests | COMMENT |
| LOW | packages/auth/ios/RNFBAuth/RNFBAuthModule.mm | 719 | // NOTE: This variable has NO PURPOSE AT ALL, it is | COMMENT |
| LOW | packages/auth/ios/RNFBAuth/RNFBAuthModule.mm | 1388 | // NOTE: This variable has NO PURPOSE AT ALL, it is | COMMENT |
| LOW | packages/auth/ios/RNFBAuth/RNFBAuthModule.mm | 1520 | // NOTE: This variable has NO PURPOSE AT | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | packages/firestore/e2e/Pipeline.e2e.js | 1706 | phone: '555-0200', | CODE |
| LOW | packages/firestore/e2e/Pipeline.e2e.js | 1835 | data.fullName.should.equal('John Doe'); | CODE |
| LOW | packages/auth/__tests__/auth.test.ts | 258 | currentUser: { email: 'user@example.com' }, | CODE |
| LOW | packages/auth/__tests__/auth.test.ts | 266 | expect(generateQrCodeUrl).toHaveBeenCalledWith('secret-key', 'user@example.com', '[DEFAULT]'); | CODE |
| LOW | packages/auth/__tests__/auth.test.ts | 277 | currentUser: { email: 'user@example.com' }, | CODE |
| LOW | packages/auth/__tests__/auth.test.ts | 286 | 'user@example.com', | CODE |
| LOW | packages/auth/__tests__/auth.test.ts | 298 | currentUser: { email: 'user@example.com' }, | CODE |
| LOW⚡ | packages/auth/e2e/phone.e2e.js | 1 | // const TEST_EMAIL = 'test@test.com'; | COMMENT |
| LOW | packages/auth/e2e/user.e2e.js | 1 | const TEST_EMAIL = 'test@test.com'; | CODE |
| LOW | packages/analytics/type-test.ts | 150 | initiateOnDeviceConversionMeasurementWithEmailAddress(analytics, 'user@example.com'); | CODE |
| LOW | packages/analytics/lib/index.ts | 1813 | * @param {string} emailAddress - Email address, properly formatted complete with domain name e.g, 'user@example.com'. | COMMENT |
| LOW | packages/analytics/lib/index.ts | 1833 | * @param hashedEmailAddress sha256-hashed of normalized email address, properly formatted complete with domain name e.g | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | scripts/update-firebase-sdk-versions.sh | 9 | # Usage: | COMMENT |
| LOW | scripts/repro-android-build-flake.sh | 5 | # Usage: | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | packages/app/ios_config.sh | 23 | # This file is installed as an Xcode build script in the project file | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | …ive/java/io/invertase/firebase/common/SharedUtils.java | 116 | * We need to check if app is in foreground otherwise the app will crash. | COMMENT |