firebase / firebase-js-sdk
Duplication

Places in code with 6 or more lines that are exactly the same.

Intro
  • For duplication, we look at places in code where there are 6 or more lines of code that are exactly the same.
  • Before duplication is calculated, the code is cleaned to remove empty lines, comments, and frequently duplicated constructs such as imports.
  • You should aim at having as little as possible (<5%) of duplicated code as high-level of duplication can lead to maintenance difficulties, poor factoring, and logical contradictions.
Learn more...
Duplication Overall
  • 8% duplication:
    • 74,057 cleaned lines of cleaned code (without empty lines, comments, and frequently duplicated constructs such as imports)
    • 6,132 duplicated lines
  • 1,478 duplicates
system8% (6,132 lines)
Duplication per Extension
ts6% (4,219 lines)
js39% (1,531 lines)
proto11% (382 lines)
Duplication per Component (primary)
packages/firestore8% (2,383 lines)
packages/database7% (845 lines)
packages/storage8% (255 lines)
packages/analytics17% (230 lines)
packages/auth2% (229 lines)
repo-scripts/api-documenter9% (212 lines)
packages/firestore-compat14% (195 lines)
packages/database-compat20% (194 lines)
packages/app-check12% (143 lines)
packages/remote-config15% (122 lines)
packages/messaging6% (117 lines)
packages/util8% (100 lines)
packages/firebase23% (81 lines)
packages/app-compat19% (73 lines)
repo-scripts/size-analysis6% (71 lines)
packages/app16% (68 lines)
packages/installations6% (67 lines)
packages/functions11% (60 lines)
repo-scripts/prune-dts12% (59 lines)
packages/auth-compat5% (57 lines)
packages/messaging-compat33% (51 lines)
packages/performance3% (50 lines)
packages/app-check-compat30% (48 lines)
packages/storage-compat12% (46 lines)
packages/template84% (44 lines)
packages/analytics-compat30% (43 lines)
packages/remote-config-compat31% (42 lines)
packages/performance-compat47% (42 lines)
packages/functions-compat34% (40 lines)
packages/installations-compat28% (32 lines)
packages/component9% (31 lines)
packages/logger16% (31 lines)
scripts/extract-deps13% (14 lines)
scripts/release3% (13 lines)
scripts/size_report5% (12 lines)
config6% (12 lines)
scripts/build2% (7 lines)
scripts/format3% (7 lines)
packages/rules-unit-testing1% (6 lines)
scripts0% (0 lines)
scripts/docgen0% (0 lines)
scripts/docgen-compat0% (0 lines)
scripts/emulator-testing0% (0 lines)
scripts/ci0% (0 lines)
scripts/ci-test0% (0 lines)
tools0% (0 lines)
packages/webchannel-wrapper0% (0 lines)
repo-scripts/changelog-generator0% (0 lines)
integration/firestore0% (0 lines)
integration/compat-typings0% (0 lines)
integration/messaging0% (0 lines)
integration/compat-interop0% (0 lines)
config/functions0% (0 lines)

Duplication Between Components (50+ lines)

G packages/database packages/database packages/firestore packages/firestore packages/database--packages/firestore 168 packages/storage packages/storage packages/firestore--packages/storage 128 packages/analytics packages/analytics packages/remote-config packages/remote-config packages/analytics--packages/remote-config 158 packages/app packages/app packages/analytics--packages/app 82 packages/installations packages/installations packages/analytics--packages/installations 84 packages/functions packages/functions packages/analytics--packages/functions 75 packages/messaging packages/messaging packages/analytics--packages/messaging 60 packages/performance packages/performance packages/analytics--packages/performance 74 packages/firestore-compat packages/firestore-compat packages/firestore-compat--packages/firestore 156 packages/firestore-compat--packages/storage 60 packages/database-compat packages/database-compat packages/database-compat--packages/database 119 packages/database-compat--packages/firestore 60 packages/template packages/template packages/util packages/util packages/template--packages/util 88 packages/app--packages/remote-config 88 packages/app--packages/installations 70 packages/performance-compat packages/performance-compat packages/app--packages/performance-compat 60 packages/remote-config-compat packages/remote-config-compat packages/app--packages/remote-config-compat 60 packages/app--packages/functions 54 packages/analytics-compat packages/analytics-compat packages/app-check-compat packages/app-check-compat packages/analytics-compat--packages/app-check-compat 87 packages/analytics-compat--packages/performance-compat 64 packages/analytics-compat--packages/remote-config-compat 64 packages/app-check packages/app-check packages/analytics-compat--packages/app-check 71 packages/app-check-compat--packages/remote-config 56 packages/app-check-compat--packages/performance-compat 78 packages/app-check-compat--packages/remote-config-compat 78 packages/app-check-compat--packages/app-check 80 packages/messaging-compat packages/messaging-compat packages/app-check-compat--packages/messaging-compat 56 packages/app-check-compat--packages/messaging 56 packages/installations-compat packages/installations-compat packages/app-check-compat--packages/installations-compat 62 packages/installations--packages/remote-config 84 packages/installations--packages/performance 76 packages/performance-compat--packages/remote-config-compat 84 packages/functions--packages/remote-config 81 packages/functions--packages/installations 63 packages/app-check--packages/remote-config 70 packages/app-check--packages/performance-compat 78 packages/app-check--packages/remote-config-compat 78 packages/app-check--packages/messaging-compat 56 packages/app-check--packages/messaging 56 packages/app-check--packages/installations-compat 62 packages/messaging-compat--packages/remote-config 54 packages/messaging-compat--packages/messaging 80 packages/messaging--packages/remote-config 66 packages/performance--packages/remote-config 74 packages/app-compat packages/app-compat packages/app-compat--packages/app 64 packages/app-compat--packages/messaging-compat 61 packages/installations-compat--packages/performance-compat 60 packages/installations-compat--packages/remote-config-compat 60 packages/functions-compat packages/functions-compat packages/functions-compat--packages/util 54 packages/functions-compat--packages/functions 54

Download: SVG DOT (open online Graphviz editor)

Open 3D force graph...

Show more details on duplication between components...
Longest Duplicates
The list of 20 longest duplicates.
See data for all 1,478 duplicates...
Size#FoldersFilesLinesCode
48 x 2 packages/analytics
packages/remote-config
rollup.config.js
rollup.config.js
30:94 (94%)
32:93 (94%)
view
42 x 2 packages/analytics
packages/installations
rollup.config.js
rollup.config.js
37:94 (82%)
30:81 (95%)
view
42 x 2 packages/installations
packages/remote-config
rollup.config.js
rollup.config.js
30:81 (95%)
39:93 (82%)
view
42 x 2 packages/performance-compat
packages/remote-config-compat
rollup.config.js
rollup.config.js
24:77 (100%)
24:77 (100%)
view
41 x 2 packages/firestore/src/local
packages/firestore/src/local
indexeddb_index_manager.ts
memory_index_manager.ts
113:175 (43%)
56:118 (48%)
view
40 x 2 packages/app-check-compat
packages/app-check
rollup.config.js
rollup.config.js
24:75 (100%)
24:75 (100%)
view
34 x 2 packages/template
packages/util
rollup.config.js
rollup.config.js
23:66 (75%)
23:66 (75%)
view
33 x 2 packages/firestore/src/protos/google/protobuf
packages/firestore/src/protos/google/protobuf
proto
struct.proto
timestamp.proto
1:36 (37%)
1:36 (25%)
view
32 x 2 packages/firestore/src/protos/google/protobuf
packages/firestore/src/protos/google/protobuf
proto
any.proto
empty.proto
1:35 (21%)
1:35 (66%)
view
32 x 2 packages/firestore/src/protos/google/protobuf
packages/firestore/src/protos/google/protobuf
proto
empty.proto
struct.proto
1:35 (66%)
1:35 (36%)
view
32 x 2 packages/firestore/src/protos/google/protobuf
packages/firestore/src/protos/google/protobuf
proto
any.proto
struct.proto
1:35 (21%)
1:35 (36%)
view
32 x 2 packages/firestore/src/protos/google/protobuf
packages/firestore/src/protos/google/protobuf
proto
any.proto
timestamp.proto
1:35 (21%)
1:35 (24%)
view
32 x 2 packages/firestore/src/protos/google/protobuf
packages/firestore/src/protos/google/protobuf
proto
empty.proto
timestamp.proto
1:35 (66%)
1:35 (24%)
view
31 x 2 packages/app-check
packages/installations-compat
rollup.config.js
rollup.config.js
35:75 (77%)
27:67 (93%)
view
31 x 2 packages/app-check-compat
packages/installations-compat
rollup.config.js
rollup.config.js
35:75 (77%)
27:67 (93%)
view
29 x 2 packages/firestore/src/protos/google/protobuf
packages/firestore/src/protos/google/protobuf
proto
timestamp.proto
wrappers.proto
1:29 (22%)
1:29 (26%)
view
29 x 2 packages/firestore/src/protos/google/protobuf
packages/firestore/src/protos/google/protobuf
proto
descriptor.proto
empty.proto
1:29 (3%)
1:29 (60%)
view
29 x 2 packages/firestore/src/protos/google/protobuf
packages/firestore/src/protos/google/protobuf
proto
empty.proto
wrappers.proto
1:29 (60%)
1:29 (26%)
view
29 x 2 packages/firestore/src/protos/google/protobuf
packages/firestore/src/protos/google/protobuf
proto
descriptor.proto
wrappers.proto
1:29 (3%)
1:29 (26%)
view
29 x 2 packages/firestore/src/protos/google/protobuf
packages/firestore/src/protos/google/protobuf
proto
descriptor.proto
timestamp.proto
1:29 (3%)
1:29 (22%)
view
Duplicated Units
The list of top 17 duplicated units.
See data for all 17 unit duplicates...
Size#FoldersFilesLinesCode
16 x 2 packages/firestore
packages/firestore
rollup.config.lite.js
rollup.config.js
50:66 
53:69 
view
16 x 2 packages/database/src/api
packages/database/src/api
Reference_impl.ts
Reference_impl.ts
1207:1223 
1336:1352 
view
13 x 2 packages/database/src/api
packages/database/src/api
Reference_impl.ts
Reference_impl.ts
1084:1097 
1585:1598 
view
11 x 2 packages/analytics/src
packages/remote-config/src/client
get-config.ts
retrying_client.ts
288:302 
68:82 
view
10 x 2 packages/messaging/src/internals
packages/installations/src/helpers
idb-manager.ts
idb-manager.ts
30:44 
29:44 
view
10 x 2 packages/installations/src/helpers
packages/messaging/src/internals
idb-manager.ts
idb-manager.ts
29:44 
30:44 
view
9 x 2 packages/firestore
packages/storage
rollup.shared.js
rollup.config.js
65:74 
27:36 
view
9 x 2 packages/firestore/src/remote
packages/firestore/src/remote
persistent_stream.ts
persistent_stream.ts
627:636 
771:780 
view
8 x 2 packages/analytics/src
packages/analytics/src
api.ts
api.ts
510:518 
655:663 
view
8 x 2 packages/database/src/core
packages/database/src/core
SyncPoint.ts
SyncTree.ts
67:75 
76:84 
view
7 x 2 packages/firestore/src/local
packages/firestore/src/local
memory_persistence.ts
indexeddb_lru_delegate_impl.ts
376:383 
64:71 
view
7 x 2 packages/firestore-compat/src
packages/firestore-compat/src
index.rn.ts
index.node.ts
30:37 
31:38 
view
6 x 2 scripts/build
repo-scripts/prune-dts
create-overloads.ts
prune-dts.ts
198:204 
516:522 
view
6 x 2 packages/firestore/src/remote
packages/firestore/src/remote
serializer.ts
serializer.ts
1137:1143 
1153:1159 
view
6 x 2 packages/auth/src/platform_cordova/strategies
packages/auth/src/platform_browser/strategies
redirect.ts
redirect.ts
30:36 
79:85 
view
6 x 2 packages/auth/src/platform_cordova/strategies
packages/auth/src/platform_browser/strategies
redirect.ts
redirect.ts
46:52 
188:194 
view
6 x 2 packages/analytics/src
packages/analytics/src
api.ts
api.ts
386:392 
593:599 
view