guardian / mobile-purchases
File Change Frequency

File change frequency (churn) shows the distribution of file updates (days with at least one commit).

Overview
File Change Frequency Overall
  • There are 83 files with 8,941 lines of code.
    • 1 file changed more than 100 times (1,654 lines of code)
    • 4 files changed 51-100 times (482 lines of code)
    • 16 files changed 21-50 times (1,838 lines of code)
    • 38 files changed 6-20 times (3,478 lines of code)
    • 24 files changed 1-5 times (1,489 lines of code)
18% | 5% | 20% | 38% | 16%
Legend:
101+
51-100
21-50
6-20
1-5

explore: grouped by folders | grouped by update frequency | data
Contributors Count Frequency Overall
  • There are 83 files with 8,941 lines of code.
    • 0 files changed by more than 25 contributors (0 lines of code)
    • 6 files changed by 11-25 contributors (2,333 lines of code)
    • 15 files changed by 6-10 contributors (1,910 lines of code)
    • 58 files changed by 2-5 contributors (4,566 lines of code)
    • 4 files changed by 1 contributor (132 lines of code)
0% | 26% | 21% | 51% | 1%
Legend:
26+
11-25
6-10
2-5
1

explore: grouped by folders | grouped by contributors count | data
File Change Frequency per File Extension
ts, scala, md, json, yaml, gitignore, js, xml, sbt, sh, py, cjs, txt, eslintignore, properties, snap, prettierignore
File Change Frequency per Extension
The number of recorded file updates
101+
51-100
21-50
6-20
1-5
yaml58% | 6% | 7% | 12% | 15%
ts0% | 4% | 30% | 57% | 7%
sbt0% | 94% | 0% | 5% | 0%
scala0% | 0% | 0% | 0% | 100%
py0% | 0% | 0% | 0% | 100%
xml0% | 0% | 0% | 0% | 100%
cjs0% | 0% | 0% | 0% | 100%
File Change Frequency per Logical Decomposition
primary
primary (file change frequency)
The number of recorded file updates
101+
51-100
21-50
6-20
1-5
ROOT54% | 8% | 6% | 11% | 18%
typescript0% | 4% | 30% | 58% | 7%
project0% | 0% | 0% | 15% | 84%
scala0% | 0% | 0% | 0% | 100%
adjust_report_etl0% | 0% | 0% | 0% | 100%
cdk0% | 0% | 0% | 0% | 100%
Most Frequently Changed Files (Top 50)

See data for all files...

File# lines# unitscreatedlast modified# changes
(days)
# contributorsfirst
contributor
latest
contributor
1654 - 2018-04-03 2025-04-08 155 25 mark.richards@guardian.co.uk john.duffell@guardian.co.uk
build.sbt
in root
87 2 2018-03-27 2025-01-31 89 17 mark.richards@guardian.co.uk pascal.honore@gmail.com
apple.ts
in typescript/src/pubsub
102 3 2019-06-03 2025-05-02 65 12 alex.dufournet@guardian.co.uk pascal@alseyn.net
link.ts
in typescript/src/link
120 5 2019-07-09 2025-01-13 59 12 nathaniel.bennett@guardian.... pascal.honore@gmail.com
173 - 2018-04-03 2024-09-27 59 16 37694514+markrichardsg@user... michael.mcnamara@theguardia...
aws.ts
in typescript/src/utils
174 8 2019-06-19 2025-01-13 45 10 nathaniel.bennett@guardian.... pascal.honore@gmail.com
197 - 2018-04-20 2024-03-22 45 13 37694514+markrichardsg@user... pascal.honore@gmail.com
apple.ts
in typescript/src/update-subs
68 3 2019-08-08 2025-05-02 37 4 alex.dufournet@guardian.co.uk pascal@alseyn.net
google.ts
in typescript/src/pubsub
20 1 2019-06-03 2025-05-02 36 8 alex.dufournet@guardian.co.uk pascal@alseyn.net
appleValidateReceipts.ts
in typescript/src/services
285 8 2019-09-04 2025-01-13 32 8 alex.dufournet@guardian.co.uk pascal.honore@gmail.com
guIdentityApi.ts
in typescript/src/utils
100 6 2019-07-17 2025-04-24 31 10 nathaniel.bennett@guardian.... pascal@alseyn.net
subscription.ts
in typescript/src/models
92 1 2019-06-19 2025-05-02 30 5 nathaniel.bennett@guardian.... pascal@alseyn.net
googleSubStatus.ts
in typescript/src/subscription-status
187 8 2019-09-06 2025-01-13 30 9 alex.dufournet@guardian.co.uk pascal.honore@gmail.com
pubsub.ts
in typescript/src/pubsub
76 3 2019-06-03 2025-05-02 29 6 alex.dufournet@guardian.co.uk pascal@alseyn.net
apple.ts
in typescript/src/link
39 3 2019-07-09 2025-01-13 27 8 nathaniel.bennett@guardian.... pascal.honore@gmail.com
google.ts
in typescript/src/update-subs
116 2 2019-08-08 2025-01-13 27 5 alex.dufournet@guardian.co.uk pascal.honore@gmail.com
updatesub.ts
in typescript/src/update-subs
62 4 2019-08-08 2025-01-13 26 5 alex.dufournet@guardian.co.uk pascal.honore@gmail.com
deleteLink.ts
in typescript/src/link
106 8 2019-09-03 2025-01-13 25 6 alex.dufournet@guardian.co.uk pascal.honore@gmail.com
acquisitions.ts
in typescript/src/soft-opt-ins
52 1 2023-03-27 2025-01-13 24 4 jon.flynn@guardian.co.uk pascal.honore@gmail.com
user.ts
in typescript/src/user
127 7 2019-07-17 2025-01-13 23 6 nathaniel.bennett@guardian.... pascal.honore@gmail.com
apple.ts
in typescript/src/feast/acquisition-events
137 - 2024-09-27 2025-05-02 21 3 michael.mcnamara@theguardia... pascal@alseyn.net
google.ts
in typescript/src/feast/acquisition-events
272 - 2024-09-27 2025-01-13 19 3 michael.mcnamara@theguardia... pascal.honore@gmail.com
google.ts
in typescript/src/link
63 5 2019-07-09 2025-01-13 18 5 nathaniel.bennett@guardian.... pascal.honore@gmail.com
subscriptionEvent.ts
in typescript/src/models
106 1 2019-06-03 2025-05-01 16 3 alex.dufournet@guardian.co.uk pascal@alseyn.net
appleRevalidateReceipts.ts
in typescript/src/revalidate-receipts
111 2 2020-02-03 2025-01-13 16 6 francesca.hammond@guardian.... pascal.honore@gmail.com
userSubscription.ts
in typescript/src/models
32 1 2019-07-08 2025-01-13 15 4 nathaniel.bennett@guardian.... pascal.honore@gmail.com
appleSubStatus.ts
in typescript/src/subscription-status
93 3 2019-09-06 2025-01-13 15 3 alex.dufournet@guardian.co.uk pascal.honore@gmail.com
google.ts
in typescript/src/feast/update-subs
142 - 2024-06-03 2025-03-24 14 7 michael.jacobson@guardian.c... tom.forbes@theguardian.com
processSubscription.ts
in typescript/src/soft-opt-ins
173 8 2023-06-14 2025-01-13 14 5 jon.flynn@guardian.co.uk pascal.honore@gmail.com
dates.ts
in typescript/src/utils
18 1 2019-08-08 2025-01-13 13 4 alex.dufournet@guardian.co.uk pascal.honore@gmail.com
359 - 2019-10-10 2024-11-13 13 8 alex.dufournet@guardian.co.uk pascal.honore@gmail.com
apiGatewayHttp.ts
in typescript/src/models
27 - 2019-06-03 2025-01-13 12 5 alex.dufournet@guardian.co.uk pascal.honore@gmail.com
exportHistoricalData.ts
in typescript/src/export
140 7 2019-10-15 2025-01-13 12 4 alex.dufournet@guardian.co.uk pascal.honore@gmail.com
plugins.sbt
in project
5 - 2018-03-27 2023-10-03 11 5 mark.richards@guardian.co.uk andrea.diotallevi@guardian....
platform.ts
in typescript/src/models
11 - 2019-06-14 2025-01-13 11 6 alex.dufournet@guardian.co.uk pascal.honore@gmail.com
test-launcher.ts
in typescript/src/test-launcher
20 - 2019-06-28 2025-01-13 11 6 nathaniel.bennett@guardian.... pascal.honore@gmail.com
productBillingPeriod.ts
in typescript/src/services
37 - 2020-02-26 2025-01-27 11 4 alex.dufournet@guardian.co.uk pascal.honore@gmail.com
google.ts
in typescript/src/feast/pubsub
72 1 2024-05-01 2025-05-02 11 4 99180049+maelgnm@users.nore... pascal@alseyn.net
endTimestampFilter.ts
in typescript/src/models
40 1 2020-02-05 2025-01-13 10 4 francesca.hammond@guardian.... pascal.honore@gmail.com
exportSubscriptions.ts
in typescript/src/export
41 1 2019-08-29 2025-01-13 10 5 alex.dufournet@guardian.co.uk pascal.honore@gmail.com
exportEvents.ts
in typescript/src/export
46 2 2019-08-30 2025-01-13 10 4 alex.dufournet@guardian.co.uk pascal.honore@gmail.com
appleFetchOfferDetails.ts
in typescript/src/promotional-offers
79 2 2023-08-30 2025-01-13 10 2 pascal@alseyn.net pascal.honore@gmail.com
router.ts
in typescript/src/feast/acquisition-events
98 - 2024-09-27 2025-01-13 9 3 michael.mcnamara@theguardia... pascal.honore@gmail.com
apple.ts
in typescript/src/feast/update-subs
153 1 2024-04-29 2025-05-02 9 7 99180049+maelgnm@users.nore... pascal@alseyn.net
google-common.ts
in typescript/src/pubsub
178 5 2024-05-15 2025-05-02 9 3 99180049+maelgnm@users.nore... pascal@alseyn.net
appToPlatform.ts
in typescript/src/services
22 2 2020-02-20 2025-01-13 8 5 alex.dufournet@guardian.co.uk pascal.honore@gmail.com
google-play-v2.ts
in typescript/src/services
144 13 2024-02-15 2025-01-13 8 4 3607811+tomwadeson@users.no... pascal.honore@gmail.com
apple-common.ts
in typescript/src/pubsub
505 16 2024-03-18 2025-04-28 8 3 tom.wey@theguardian.com pascal.honore@gmail.com
restClient.ts
in typescript/src/utils
7 - 2020-02-20 2025-01-13 7 3 alex.dufournet@guardian.co.uk pascal.honore@gmail.com
common.ts
in typescript/src/feast/update-subs
24 2 2024-06-12 2025-01-13 7 4 tom.wey@theguardian.com pascal.honore@gmail.com
Files With Most Contributors (Top 50)
Based on the number of unique email addresses found in commits.

See data for all files...

File# lines# unitscreatedlast modified# changes
(days)
# contributorsfirst
contributor
latest
contributor
1654 - 2018-04-03 2025-04-08 155 25 mark.richards@guardian.co.uk john.duffell@guardian.co.uk
build.sbt
in root
87 2 2018-03-27 2025-01-31 89 17 mark.richards@guardian.co.uk pascal.honore@gmail.com
173 - 2018-04-03 2024-09-27 59 16 37694514+markrichardsg@user... michael.mcnamara@theguardia...
197 - 2018-04-20 2024-03-22 45 13 37694514+markrichardsg@user... pascal.honore@gmail.com
apple.ts
in typescript/src/pubsub
102 3 2019-06-03 2025-05-02 65 12 alex.dufournet@guardian.co.uk pascal@alseyn.net
link.ts
in typescript/src/link
120 5 2019-07-09 2025-01-13 59 12 nathaniel.bennett@guardian.... pascal.honore@gmail.com
aws.ts
in typescript/src/utils
174 8 2019-06-19 2025-01-13 45 10 nathaniel.bennett@guardian.... pascal.honore@gmail.com
guIdentityApi.ts
in typescript/src/utils
100 6 2019-07-17 2025-04-24 31 10 nathaniel.bennett@guardian.... pascal@alseyn.net
googleSubStatus.ts
in typescript/src/subscription-status
187 8 2019-09-06 2025-01-13 30 9 alex.dufournet@guardian.co.uk pascal.honore@gmail.com
google.ts
in typescript/src/pubsub
20 1 2019-06-03 2025-05-02 36 8 alex.dufournet@guardian.co.uk pascal@alseyn.net
appleValidateReceipts.ts
in typescript/src/services
285 8 2019-09-04 2025-01-13 32 8 alex.dufournet@guardian.co.uk pascal.honore@gmail.com
apple.ts
in typescript/src/link
39 3 2019-07-09 2025-01-13 27 8 nathaniel.bennett@guardian.... pascal.honore@gmail.com
359 - 2019-10-10 2024-11-13 13 8 alex.dufournet@guardian.co.uk pascal.honore@gmail.com
google.ts
in typescript/src/feast/update-subs
142 - 2024-06-03 2025-03-24 14 7 michael.jacobson@guardian.c... tom.forbes@theguardian.com
apple.ts
in typescript/src/feast/update-subs
153 1 2024-04-29 2025-05-02 9 7 99180049+maelgnm@users.nore... pascal@alseyn.net
pubsub.ts
in typescript/src/pubsub
76 3 2019-06-03 2025-05-02 29 6 alex.dufournet@guardian.co.uk pascal@alseyn.net
deleteLink.ts
in typescript/src/link
106 8 2019-09-03 2025-01-13 25 6 alex.dufournet@guardian.co.uk pascal.honore@gmail.com
user.ts
in typescript/src/user
127 7 2019-07-17 2025-01-13 23 6 nathaniel.bennett@guardian.... pascal.honore@gmail.com
appleRevalidateReceipts.ts
in typescript/src/revalidate-receipts
111 2 2020-02-03 2025-01-13 16 6 francesca.hammond@guardian.... pascal.honore@gmail.com
platform.ts
in typescript/src/models
11 - 2019-06-14 2025-01-13 11 6 alex.dufournet@guardian.co.uk pascal.honore@gmail.com
test-launcher.ts
in typescript/src/test-launcher
20 - 2019-06-28 2025-01-13 11 6 nathaniel.bennett@guardian.... pascal.honore@gmail.com
subscription.ts
in typescript/src/models
92 1 2019-06-19 2025-05-02 30 5 nathaniel.bennett@guardian.... pascal@alseyn.net
google.ts
in typescript/src/update-subs
116 2 2019-08-08 2025-01-13 27 5 alex.dufournet@guardian.co.uk pascal.honore@gmail.com
updatesub.ts
in typescript/src/update-subs
62 4 2019-08-08 2025-01-13 26 5 alex.dufournet@guardian.co.uk pascal.honore@gmail.com
google.ts
in typescript/src/link
63 5 2019-07-09 2025-01-13 18 5 nathaniel.bennett@guardian.... pascal.honore@gmail.com
processSubscription.ts
in typescript/src/soft-opt-ins
173 8 2023-06-14 2025-01-13 14 5 jon.flynn@guardian.co.uk pascal.honore@gmail.com
apiGatewayHttp.ts
in typescript/src/models
27 - 2019-06-03 2025-01-13 12 5 alex.dufournet@guardian.co.uk pascal.honore@gmail.com
plugins.sbt
in project
5 - 2018-03-27 2023-10-03 11 5 mark.richards@guardian.co.uk andrea.diotallevi@guardian....
exportSubscriptions.ts
in typescript/src/export
41 1 2019-08-29 2025-01-13 10 5 alex.dufournet@guardian.co.uk pascal.honore@gmail.com
appToPlatform.ts
in typescript/src/services
22 2 2020-02-20 2025-01-13 8 5 alex.dufournet@guardian.co.uk pascal.honore@gmail.com
apple.ts
in typescript/src/update-subs
68 3 2019-08-08 2025-05-02 37 4 alex.dufournet@guardian.co.uk pascal@alseyn.net
acquisitions.ts
in typescript/src/soft-opt-ins
52 1 2023-03-27 2025-01-13 24 4 jon.flynn@guardian.co.uk pascal.honore@gmail.com
userSubscription.ts
in typescript/src/models
32 1 2019-07-08 2025-01-13 15 4 nathaniel.bennett@guardian.... pascal.honore@gmail.com
dates.ts
in typescript/src/utils
18 1 2019-08-08 2025-01-13 13 4 alex.dufournet@guardian.co.uk pascal.honore@gmail.com
exportHistoricalData.ts
in typescript/src/export
140 7 2019-10-15 2025-01-13 12 4 alex.dufournet@guardian.co.uk pascal.honore@gmail.com
google.ts
in typescript/src/feast/pubsub
72 1 2024-05-01 2025-05-02 11 4 99180049+maelgnm@users.nore... pascal@alseyn.net
productBillingPeriod.ts
in typescript/src/services
37 - 2020-02-26 2025-01-27 11 4 alex.dufournet@guardian.co.uk pascal.honore@gmail.com
endTimestampFilter.ts
in typescript/src/models
40 1 2020-02-05 2025-01-13 10 4 francesca.hammond@guardian.... pascal.honore@gmail.com
exportEvents.ts
in typescript/src/export
46 2 2019-08-30 2025-01-13 10 4 alex.dufournet@guardian.co.uk pascal.honore@gmail.com
google-play-v2.ts
in typescript/src/services
144 13 2024-02-15 2025-01-13 8 4 3607811+tomwadeson@users.no... pascal.honore@gmail.com
dlq-processor.ts
in typescript/src/soft-opt-ins
86 3 2023-06-15 2025-01-13 7 4 jon.flynn@guardian.co.uk pascal.honore@gmail.com
common.ts
in typescript/src/feast/update-subs
24 2 2024-06-12 2025-01-13 7 4 tom.wey@theguardian.com pascal.honore@gmail.com
braze.ts
in typescript/src/services
40 2 2024-03-25 2025-03-24 7 4 3607811+tomwadeson@users.no... tom.forbes@theguardian.com
softOptIns.ts
in typescript/src/utils
13 - 2024-05-22 2025-01-13 6 4 tom.wey@theguardian.com pascal.honore@gmail.com
apple-utils.ts
in typescript/src/link
37 2 2023-03-01 2025-01-13 6 4 pgithub5@gmail.com pascal.honore@gmail.com
apple.ts
in typescript/src/feast/pubsub
63 1 2024-04-29 2025-05-02 6 4 99180049+maelgnm@users.nore... pascal@alseyn.net
GoogleOAuth.scala
in scala/google-oauth/src/main/scala/com.gu.mobilepurchases.googleoauth/lambda
62 5 2019-06-03 2023-01-31 5 4 alex.dufournet@guardian.co.uk pascal@alseyn.net
apple.ts
in typescript/src/feast/acquisition-events
137 - 2024-09-27 2025-05-02 21 3 michael.mcnamara@theguardia... pascal@alseyn.net
google.ts
in typescript/src/feast/acquisition-events
272 - 2024-09-27 2025-01-13 19 3 michael.mcnamara@theguardia... pascal.honore@gmail.com
subscriptionEvent.ts
in typescript/src/models
106 1 2019-06-03 2025-05-01 16 3 alex.dufournet@guardian.co.uk pascal@alseyn.net
Files With Least Contributors (Top 50)
Based on the number of unique email addresses found in commits.

See data for all files...

File# lines# unitscreatedlast modified# changes
(days)
# contributorsfirst
contributor
latest
contributor
LambdaApiGateway.scala
in scala/common/src/main/scala/com/gu/mobilepurchases/shared/lambda
92 7 2019-06-03 2019-06-03 1 1 alex.dufournet@guardian.co.uk alex.dufournet@guardian.co.uk
AwsLambda.scala
in scala/common/src/main/scala/com/gu/mobilepurchases/shared/lambda
17 1 2019-06-03 2019-06-03 1 1 alex.dufournet@guardian.co.uk alex.dufournet@guardian.co.uk
log4j2.xml
in scala/google-oauth/src/main/resources
15 - 2019-06-03 2019-06-03 1 1 alex.dufournet@guardian.co.uk alex.dufournet@guardian.co.uk
8 1 2024-03-06 2024-03-06 1 1 michael.jacobson@guardian.c... michael.jacobson@guardian.c...
connector.py
in adjust_report_etl
249 2 2024-11-11 2025-03-04 5 2 36296660+david-pepper@users... andrea.diotallevi@guardian....
api-storekit.ts
in typescript/src/services
134 - 2025-04-29 2025-05-02 4 2 pascal@alseyn.net pascal.honore@gmail.com
117 - 2018-04-03 2018-04-03 1 2 37694514+markrichardsg@user... mark.richards@guardian.co.uk
apple-mappings.ts
in typescript/src/services
117 - 2025-04-29 2025-04-29 1 2 pascal.honore@gmail.com pascal@alseyn.net
appleFetchOfferDetails.ts
in typescript/src/promotional-offers
79 2 2023-08-30 2025-01-13 10 2 pascal@alseyn.net pascal.honore@gmail.com
common.ts
in typescript/src/feast/acquisition-events
57 - 2024-12-16 2025-01-13 6 2 pascal@alseyn.net pascal.honore@gmail.com
apple-json-web-tokens.ts
in typescript/src/services
23 - 2025-04-29 2025-05-01 2 2 pascal.honore@gmail.com pascal@alseyn.net
18 1 2018-03-29 2018-04-03 2 2 mark.richards@guardian.co.uk mark.richards@guardian.co.uk
10 1 2018-03-29 2018-04-03 2 2 mark.richards@guardian.co.uk mark.richards@guardian.co.uk
7 - 2025-01-10 2025-01-13 2 2 pascal@alseyn.net pascal@alseyn.net
apple-common.ts
in typescript/src/pubsub
505 16 2024-03-18 2025-04-28 8 3 tom.wey@theguardian.com pascal.honore@gmail.com
429 - 2024-09-27 2024-11-21 5 3 michael.mcnamara@theguardia... pascal@alseyn.net
google.ts
in typescript/src/feast/acquisition-events
272 - 2024-09-27 2025-01-13 19 3 michael.mcnamara@theguardia... pascal.honore@gmail.com
google-common.ts
in typescript/src/pubsub
178 5 2024-05-15 2025-05-02 9 3 99180049+maelgnm@users.nore... pascal@alseyn.net
apple.ts
in typescript/src/feast/acquisition-events
137 - 2024-09-27 2025-05-02 21 3 michael.mcnamara@theguardia... pascal@alseyn.net
subscriptionEvent.ts
in typescript/src/models
106 1 2019-06-03 2025-05-01 16 3 alex.dufournet@guardian.co.uk pascal@alseyn.net
router.ts
in typescript/src/feast/acquisition-events
98 - 2024-09-27 2025-01-13 9 3 michael.mcnamara@theguardia... pascal.honore@gmail.com
appleSubStatus.ts
in typescript/src/subscription-status
93 3 2019-09-06 2025-01-13 15 3 alex.dufournet@guardian.co.uk pascal.honore@gmail.com
Cloudwatch.scala
in scala/common/src/main/scala/com/gu/mobilepurchases/shared/cloudwatch
78 7 2019-06-03 2023-01-31 2 3 alex.dufournet@guardian.co.uk pascal@alseyn.net
google-play.ts
in typescript/src/services
65 4 2020-02-20 2025-01-13 7 3 alex.dufournet@guardian.co.uk pascal.honore@gmail.com
ssmConfig.ts
in typescript/src/utils
60 3 2019-08-21 2025-01-13 7 3 alex.dufournet@guardian.co.uk pascal.honore@gmail.com
exportSubscriptions-v2.ts
in typescript/src/export
56 3 2021-08-25 2025-01-13 4 3 marjan.kalanaki@guardian.co.uk pascal.honore@gmail.com
dynamoStream.ts
in typescript/src/export
39 1 2019-08-29 2025-01-13 7 3 alex.dufournet@guardian.co.uk pascal.honore@gmail.com
mapAndroidProductId.ts
in typescript/src/utils
15 - 2024-06-14 2025-01-13 5 3 tom.wey@theguardian.com pascal.honore@gmail.com
processingError.ts
in typescript/src/models
9 1 2019-08-15 2025-01-13 5 3 alex.dufournet@guardian.co.uk pascal.honore@gmail.com
subscriptionReference.ts
in typescript/src/models
9 - 2019-08-22 2025-01-13 5 3 alex.dufournet@guardian.co.uk pascal.honore@gmail.com
GracefulProcessingError.ts
in typescript/src/models
7 1 2021-01-26 2025-01-13 4 3 marjan.kalanaki@guardian.co.uk pascal.honore@gmail.com
restClient.ts
in typescript/src/utils
7 - 2020-02-20 2025-01-13 7 3 alex.dufournet@guardian.co.uk pascal.honore@gmail.com
app.ts
in typescript/src/models
6 - 2024-03-21 2025-01-13 5 3 3607811+tomwadeson@users.no... pascal.honore@gmail.com
ignorable.ts
in typescript/src/pubsub
6 1 2024-04-29 2025-01-13 4 3 tom.wey@theguardian.com pascal.honore@gmail.com
appIdentity.ts
in typescript/src/utils
4 - 2019-06-03 2025-01-10 5 3 alex.dufournet@guardian.co.uk pascal.honore@gmail.com
option.ts
in typescript/src/utils
1 - 2019-08-21 2025-01-10 4 3 alex.dufournet@guardian.co.uk pascal.honore@gmail.com
google-play-v2.ts
in typescript/src/services
144 13 2024-02-15 2025-01-13 8 4 3607811+tomwadeson@users.no... pascal.honore@gmail.com
exportHistoricalData.ts
in typescript/src/export
140 7 2019-10-15 2025-01-13 12 4 alex.dufournet@guardian.co.uk pascal.honore@gmail.com
dlq-processor.ts
in typescript/src/soft-opt-ins
86 3 2023-06-15 2025-01-13 7 4 jon.flynn@guardian.co.uk pascal.honore@gmail.com
google.ts
in typescript/src/feast/pubsub
72 1 2024-05-01 2025-05-02 11 4 99180049+maelgnm@users.nore... pascal@alseyn.net
apple.ts
in typescript/src/update-subs
68 3 2019-08-08 2025-05-02 37 4 alex.dufournet@guardian.co.uk pascal@alseyn.net
apple.ts
in typescript/src/feast/pubsub
63 1 2024-04-29 2025-05-02 6 4 99180049+maelgnm@users.nore... pascal@alseyn.net
GoogleOAuth.scala
in scala/google-oauth/src/main/scala/com.gu.mobilepurchases.googleoauth/lambda
62 5 2019-06-03 2023-01-31 5 4 alex.dufournet@guardian.co.uk pascal@alseyn.net
acquisitions.ts
in typescript/src/soft-opt-ins
52 1 2023-03-27 2025-01-13 24 4 jon.flynn@guardian.co.uk pascal.honore@gmail.com
exportEvents.ts
in typescript/src/export
46 2 2019-08-30 2025-01-13 10 4 alex.dufournet@guardian.co.uk pascal.honore@gmail.com
endTimestampFilter.ts
in typescript/src/models
40 1 2020-02-05 2025-01-13 10 4 francesca.hammond@guardian.... pascal.honore@gmail.com
braze.ts
in typescript/src/services
40 2 2024-03-25 2025-03-24 7 4 3607811+tomwadeson@users.no... tom.forbes@theguardian.com
apple-utils.ts
in typescript/src/link
37 2 2023-03-01 2025-01-13 6 4 pgithub5@gmail.com pascal.honore@gmail.com
productBillingPeriod.ts
in typescript/src/services
37 - 2020-02-26 2025-01-27 11 4 alex.dufournet@guardian.co.uk pascal.honore@gmail.com
userSubscription.ts
in typescript/src/models
32 1 2019-07-08 2025-01-13 15 4 nathaniel.bennett@guardian.... pascal.honore@gmail.com
Correlations

File Size vs. Number of Changes: 83 points

typescript/src/feast/acquisition-events/apple.ts x: 137 lines of code y: 21 # changes typescript/src/feast/update-subs/apple.ts x: 153 lines of code y: 9 # changes typescript/src/models/subscription.ts x: 92 lines of code y: 30 # changes typescript/src/update-subs/apple.ts x: 68 lines of code y: 37 # changes typescript/src/feast/pubsub/apple.ts x: 63 lines of code y: 6 # changes typescript/src/feast/pubsub/google.ts x: 72 lines of code y: 11 # changes typescript/src/pubsub/apple.ts x: 102 lines of code y: 65 # changes typescript/src/pubsub/google-common.ts x: 178 lines of code y: 9 # changes typescript/src/pubsub/google.ts x: 20 lines of code y: 36 # changes typescript/src/pubsub/pubsub.ts x: 76 lines of code y: 29 # changes typescript/src/services/api-storekit.ts x: 134 lines of code y: 4 # changes typescript/src/services/apple-json-web-tokens.ts x: 23 lines of code y: 2 # changes typescript/src/models/subscriptionEvent.ts x: 106 lines of code y: 16 # changes typescript/src/services/apple-mappings.ts x: 117 lines of code y: 1 # changes typescript/src/pubsub/apple-common.ts x: 505 lines of code y: 8 # changes typescript/src/utils/guIdentityApi.ts x: 100 lines of code y: 31 # changes cloudformation.yaml x: 1654 lines of code y: 155 # changes typescript/src/feast/update-subs/google.ts x: 142 lines of code y: 14 # changes typescript/src/services/braze.ts x: 40 lines of code y: 7 # changes adjust_report_etl/connector.py x: 249 lines of code y: 5 # changes build.sbt x: 87 lines of code y: 89 # changes typescript/src/services/productBillingPeriod.ts x: 37 lines of code y: 11 # changes prettier.config.cjs x: 7 lines of code y: 2 # changes typescript/src/export/exportEvents.ts x: 46 lines of code y: 10 # changes typescript/src/export/exportHistoricalData.ts x: 140 lines of code y: 12 # changes typescript/src/export/exportSubscriptions-v2.ts x: 56 lines of code y: 4 # changes typescript/src/export/exportSubscriptions.ts x: 41 lines of code y: 10 # changes typescript/src/feast/acquisition-events/common.ts x: 57 lines of code y: 6 # changes typescript/src/feast/acquisition-events/google.ts x: 272 lines of code y: 19 # changes typescript/src/feast/acquisition-events/router.ts x: 98 lines of code y: 9 # changes typescript/src/feast/update-subs/common.ts x: 24 lines of code y: 7 # changes typescript/src/link/apple-utils.ts x: 37 lines of code y: 6 # changes typescript/src/link/apple.ts x: 39 lines of code y: 27 # changes typescript/src/link/deleteLink.ts x: 106 lines of code y: 25 # changes typescript/src/link/google.ts x: 63 lines of code y: 18 # changes typescript/src/link/link.ts x: 120 lines of code y: 59 # changes typescript/src/models/GracefulProcessingError.ts x: 7 lines of code y: 4 # changes typescript/src/models/apiGatewayHttp.ts x: 27 lines of code y: 12 # changes typescript/src/models/app.ts x: 6 lines of code y: 5 # changes typescript/src/models/platform.ts x: 11 lines of code y: 11 # changes typescript/src/models/processingError.ts x: 9 lines of code y: 5 # changes typescript/src/models/userSubscription.ts x: 32 lines of code y: 15 # changes typescript/src/promotional-offers/appleFetchOfferDetails.ts x: 79 lines of code y: 10 # changes typescript/src/revalidate-receipts/appleRevalidateReceipts.ts x: 111 lines of code y: 16 # changes typescript/src/services/appToPlatform.ts x: 22 lines of code y: 8 # changes typescript/src/services/appleValidateReceipts.ts x: 285 lines of code y: 32 # changes typescript/src/services/google-play-v2.ts x: 144 lines of code y: 8 # changes typescript/src/services/google-play.ts x: 65 lines of code y: 7 # changes typescript/src/soft-opt-ins/acquisitions.ts x: 52 lines of code y: 24 # changes typescript/src/soft-opt-ins/dlq-processor.ts x: 86 lines of code y: 7 # changes typescript/src/soft-opt-ins/processSubscription.ts x: 173 lines of code y: 14 # changes typescript/src/subscription-status/appleSubStatus.ts x: 93 lines of code y: 15 # changes typescript/src/subscription-status/googleSubStatus.ts x: 187 lines of code y: 30 # changes typescript/src/test-launcher/test-launcher.ts x: 20 lines of code y: 11 # changes typescript/src/update-subs/google.ts x: 116 lines of code y: 27 # changes typescript/src/update-subs/updatesub.ts x: 62 lines of code y: 26 # changes typescript/src/user/user.ts x: 127 lines of code y: 23 # changes typescript/src/utils/aws.ts x: 174 lines of code y: 45 # changes typescript/src/utils/dates.ts x: 18 lines of code y: 13 # changes typescript/src/utils/mapAndroidProductId.ts x: 15 lines of code y: 5 # changes typescript/src/utils/restClient.ts x: 7 lines of code y: 7 # changes typescript/src/utils/softOptIns.ts x: 13 lines of code y: 6 # changes typescript/src/utils/ssmConfig.ts x: 60 lines of code y: 7 # changes typescript/src/utils/appIdentity.ts x: 4 lines of code y: 5 # changes typescript/src/utils/option.ts x: 1 lines of code y: 4 # changes feast-acquisition-events.cloudformation.yaml x: 429 lines of code y: 5 # changes exports-cloudformation.yaml x: 359 lines of code y: 13 # changes riff-raff.yaml x: 173 lines of code y: 59 # changes dynamo.cloudformation.yaml x: 197 lines of code y: 45 # changes cdk/lib/mobile-purchases-feast.ts x: 8 lines of code y: 1 # changes project/plugins.sbt x: 5 lines of code y: 11 # changes scala/common/src/main/scala/com/gu/mobilepurchases/shared/cloudwatch/Cloudwatch.scala x: 78 lines of code y: 2 # changes scala/google-oauth/src/main/scala/com.gu.mobilepurchases.googleoauth/lambda/GoogleOAuth.scala x: 62 lines of code y: 5 # changes scala/common/src/main/scala/com/gu/mobilepurchases/shared/lambda/AwsLambda.scala x: 17 lines of code y: 1 # changes scala/common/src/main/scala/com/gu/mobilepurchases/shared/lambda/LambdaApiGateway.scala x: 92 lines of code y: 1 # changes project/FromJarStrategy.scala x: 10 lines of code y: 2 # changes project/MergeFilesStrategy.scala x: 18 lines of code y: 2 # changes
155.0
# changes
  min: 1.0
  average: 16.71
  25th percentile: 5.0
  median: 10.0
  75th percentile: 21.0
  max: 155.0
0 1654.0
lines of code
min: 1.0 | average: 107.72 | 25th percentile: 20.0 | median: 63.0 | 75th percentile: 120.0 | max: 1654.0

Number of Contributors vs. Number of Changes: 83 points

typescript/src/feast/acquisition-events/apple.ts x: 3 # contributors y: 21 # changes typescript/src/feast/update-subs/apple.ts x: 7 # contributors y: 9 # changes typescript/src/models/subscription.ts x: 5 # contributors y: 30 # changes typescript/src/update-subs/apple.ts x: 4 # contributors y: 37 # changes typescript/src/feast/pubsub/apple.ts x: 4 # contributors y: 6 # changes typescript/src/feast/pubsub/google.ts x: 4 # contributors y: 11 # changes typescript/src/pubsub/apple.ts x: 12 # contributors y: 65 # changes typescript/src/pubsub/google-common.ts x: 3 # contributors y: 9 # changes typescript/src/pubsub/google.ts x: 8 # contributors y: 36 # changes typescript/src/pubsub/pubsub.ts x: 6 # contributors y: 29 # changes typescript/src/services/api-storekit.ts x: 2 # contributors y: 4 # changes typescript/src/services/apple-json-web-tokens.ts x: 2 # contributors y: 2 # changes typescript/src/models/subscriptionEvent.ts x: 3 # contributors y: 16 # changes typescript/src/services/apple-mappings.ts x: 2 # contributors y: 1 # changes typescript/src/pubsub/apple-common.ts x: 3 # contributors y: 8 # changes typescript/src/utils/guIdentityApi.ts x: 10 # contributors y: 31 # changes cloudformation.yaml x: 25 # contributors y: 155 # changes typescript/src/feast/update-subs/google.ts x: 7 # contributors y: 14 # changes typescript/src/services/braze.ts x: 4 # contributors y: 7 # changes adjust_report_etl/connector.py x: 2 # contributors y: 5 # changes build.sbt x: 17 # contributors y: 89 # changes typescript/src/export/dynamoStream.ts x: 3 # contributors y: 7 # changes typescript/src/export/exportEvents.ts x: 4 # contributors y: 10 # changes typescript/src/export/exportHistoricalData.ts x: 4 # contributors y: 12 # changes typescript/src/export/exportSubscriptions-v2.ts x: 3 # contributors y: 4 # changes typescript/src/export/exportSubscriptions.ts x: 5 # contributors y: 10 # changes typescript/src/feast/acquisition-events/common.ts x: 2 # contributors y: 6 # changes typescript/src/feast/acquisition-events/google.ts x: 3 # contributors y: 19 # changes typescript/src/link/apple.ts x: 8 # contributors y: 27 # changes typescript/src/link/deleteLink.ts x: 6 # contributors y: 25 # changes typescript/src/link/google.ts x: 5 # contributors y: 18 # changes typescript/src/link/link.ts x: 12 # contributors y: 59 # changes typescript/src/models/apiGatewayHttp.ts x: 5 # contributors y: 12 # changes typescript/src/models/app.ts x: 3 # contributors y: 5 # changes typescript/src/models/platform.ts x: 6 # contributors y: 11 # changes typescript/src/models/userSubscription.ts x: 4 # contributors y: 15 # changes typescript/src/promotional-offers/appleFetchOfferDetails.ts x: 2 # contributors y: 10 # changes typescript/src/revalidate-receipts/appleRevalidateReceipts.ts x: 6 # contributors y: 16 # changes typescript/src/services/appToPlatform.ts x: 5 # contributors y: 8 # changes typescript/src/services/appleValidateReceipts.ts x: 8 # contributors y: 32 # changes typescript/src/services/google-play-v2.ts x: 4 # contributors y: 8 # changes typescript/src/soft-opt-ins/acquisitions.ts x: 4 # contributors y: 24 # changes typescript/src/soft-opt-ins/processSubscription.ts x: 5 # contributors y: 14 # changes typescript/src/subscription-status/appleSubStatus.ts x: 3 # contributors y: 15 # changes typescript/src/subscription-status/googleSubStatus.ts x: 9 # contributors y: 30 # changes typescript/src/update-subs/google.ts x: 5 # contributors y: 27 # changes typescript/src/update-subs/updatesub.ts x: 5 # contributors y: 26 # changes typescript/src/user/user.ts x: 6 # contributors y: 23 # changes typescript/src/utils/aws.ts x: 10 # contributors y: 45 # changes typescript/src/utils/dates.ts x: 4 # contributors y: 13 # changes exports-cloudformation.yaml x: 8 # contributors y: 13 # changes riff-raff.yaml x: 16 # contributors y: 59 # changes dynamo.cloudformation.yaml x: 13 # contributors y: 45 # changes cdk/lib/mobile-purchases-feast.ts x: 1 # contributors y: 1 # changes project/plugins.sbt x: 5 # contributors y: 11 # changes scala/common/src/main/scala/com/gu/mobilepurchases/shared/cloudwatch/Cloudwatch.scala x: 3 # contributors y: 2 # changes scala/google-oauth/src/main/scala/com.gu.mobilepurchases.googleoauth/lambda/GoogleOAuth.scala x: 4 # contributors y: 5 # changes
155.0
# changes
  min: 1.0
  average: 16.71
  25th percentile: 5.0
  median: 10.0
  75th percentile: 21.0
  max: 155.0
0 25.0
# contributors
min: 1.0 | average: 4.93 | 25th percentile: 3.0 | median: 4.0 | 75th percentile: 6.0 | max: 25.0

Number of Contributors vs. File Size: 83 points

typescript/src/feast/acquisition-events/apple.ts x: 3 # contributors y: 137 lines of code typescript/src/feast/update-subs/apple.ts x: 7 # contributors y: 153 lines of code typescript/src/models/subscription.ts x: 5 # contributors y: 92 lines of code typescript/src/update-subs/apple.ts x: 4 # contributors y: 68 lines of code typescript/src/feast/pubsub/apple.ts x: 4 # contributors y: 63 lines of code typescript/src/feast/pubsub/google.ts x: 4 # contributors y: 72 lines of code typescript/src/pubsub/apple.ts x: 12 # contributors y: 102 lines of code typescript/src/pubsub/google-common.ts x: 3 # contributors y: 178 lines of code typescript/src/pubsub/google.ts x: 8 # contributors y: 20 lines of code typescript/src/pubsub/pubsub.ts x: 6 # contributors y: 76 lines of code typescript/src/services/api-storekit.ts x: 2 # contributors y: 134 lines of code typescript/src/services/apple-json-web-tokens.ts x: 2 # contributors y: 23 lines of code typescript/src/models/subscriptionEvent.ts x: 3 # contributors y: 106 lines of code typescript/src/services/apple-mappings.ts x: 2 # contributors y: 117 lines of code typescript/src/pubsub/apple-common.ts x: 3 # contributors y: 505 lines of code typescript/src/utils/guIdentityApi.ts x: 10 # contributors y: 100 lines of code cloudformation.yaml x: 25 # contributors y: 1654 lines of code typescript/src/feast/update-subs/google.ts x: 7 # contributors y: 142 lines of code typescript/src/services/braze.ts x: 4 # contributors y: 40 lines of code adjust_report_etl/connector.py x: 2 # contributors y: 249 lines of code build.sbt x: 17 # contributors y: 87 lines of code typescript/src/services/productBillingPeriod.ts x: 4 # contributors y: 37 lines of code prettier.config.cjs x: 2 # contributors y: 7 lines of code typescript/src/export/dynamoStream.ts x: 3 # contributors y: 39 lines of code typescript/src/export/exportEvents.ts x: 4 # contributors y: 46 lines of code typescript/src/export/exportHistoricalData.ts x: 4 # contributors y: 140 lines of code typescript/src/export/exportSubscriptions-v2.ts x: 3 # contributors y: 56 lines of code typescript/src/export/exportSubscriptions.ts x: 5 # contributors y: 41 lines of code typescript/src/feast/acquisition-events/common.ts x: 2 # contributors y: 57 lines of code typescript/src/feast/acquisition-events/google.ts x: 3 # contributors y: 272 lines of code typescript/src/feast/acquisition-events/router.ts x: 3 # contributors y: 98 lines of code typescript/src/feast/update-subs/common.ts x: 4 # contributors y: 24 lines of code typescript/src/link/apple.ts x: 8 # contributors y: 39 lines of code typescript/src/link/deleteLink.ts x: 6 # contributors y: 106 lines of code typescript/src/link/google.ts x: 5 # contributors y: 63 lines of code typescript/src/link/link.ts x: 12 # contributors y: 120 lines of code typescript/src/models/GracefulProcessingError.ts x: 3 # contributors y: 7 lines of code typescript/src/models/apiGatewayHttp.ts x: 5 # contributors y: 27 lines of code typescript/src/models/app.ts x: 3 # contributors y: 6 lines of code typescript/src/models/platform.ts x: 6 # contributors y: 11 lines of code typescript/src/models/userSubscription.ts x: 4 # contributors y: 32 lines of code typescript/src/promotional-offers/appleFetchOfferDetails.ts x: 2 # contributors y: 79 lines of code typescript/src/revalidate-receipts/appleRevalidateReceipts.ts x: 6 # contributors y: 111 lines of code typescript/src/services/appToPlatform.ts x: 5 # contributors y: 22 lines of code typescript/src/services/appleValidateReceipts.ts x: 8 # contributors y: 285 lines of code typescript/src/services/google-play-v2.ts x: 4 # contributors y: 144 lines of code typescript/src/services/google-play.ts x: 3 # contributors y: 65 lines of code typescript/src/soft-opt-ins/dlq-processor.ts x: 4 # contributors y: 86 lines of code typescript/src/soft-opt-ins/processSubscription.ts x: 5 # contributors y: 173 lines of code typescript/src/subscription-status/appleSubStatus.ts x: 3 # contributors y: 93 lines of code typescript/src/subscription-status/googleSubStatus.ts x: 9 # contributors y: 187 lines of code typescript/src/test-launcher/test-launcher.ts x: 6 # contributors y: 20 lines of code typescript/src/update-subs/google.ts x: 5 # contributors y: 116 lines of code typescript/src/user/user.ts x: 6 # contributors y: 127 lines of code typescript/src/utils/aws.ts x: 10 # contributors y: 174 lines of code typescript/src/utils/dates.ts x: 4 # contributors y: 18 lines of code typescript/src/utils/mapAndroidProductId.ts x: 3 # contributors y: 15 lines of code typescript/src/utils/softOptIns.ts x: 4 # contributors y: 13 lines of code feast-acquisition-events.cloudformation.yaml x: 3 # contributors y: 429 lines of code exports-cloudformation.yaml x: 8 # contributors y: 359 lines of code riff-raff.yaml x: 16 # contributors y: 173 lines of code dynamo.cloudformation.yaml x: 13 # contributors y: 197 lines of code cdk/lib/mobile-purchases-feast.ts x: 1 # contributors y: 8 lines of code project/plugins.sbt x: 5 # contributors y: 5 lines of code scala/common/src/main/scala/com/gu/mobilepurchases/shared/cloudwatch/Cloudwatch.scala x: 3 # contributors y: 78 lines of code scala/common/src/main/scala/com/gu/mobilepurchases/shared/lambda/AwsLambda.scala x: 1 # contributors y: 17 lines of code scala/common/src/main/scala/com/gu/mobilepurchases/shared/lambda/LambdaApiGateway.scala x: 1 # contributors y: 92 lines of code project/MergeFilesStrategy.scala x: 2 # contributors y: 18 lines of code
1654.0
lines of code
  min: 1.0
  average: 107.72
  25th percentile: 20.0
  median: 63.0
  75th percentile: 120.0
  max: 1654.0
0 25.0
# contributors
min: 1.0 | average: 4.93 | 25th percentile: 3.0 | median: 4.0 | 75th percentile: 6.0 | max: 25.0