├── .secret ├── .keep └── canary │ └── .keep ├── ci └── match │ ├── match_version.txt │ └── README.md ├── bin ├── gyb ├── pact │ ├── resolve-directory │ ├── stop-mock-server │ ├── teardown-build-environment │ ├── start-mock-server │ ├── setup-build-environment │ └── setup ├── make-environment ├── bump-build-version ├── trigger-deploys ├── setup-match ├── create-deployment ├── trigger-generate-release-note ├── is-deployed ├── embed_build_info ├── plist2csv.sh ├── remove-pact-tag.sh └── pu.sh ├── Reporting ├── Sources │ ├── Reporter │ │ └── main.swift │ └── Reporting │ │ ├── ReportModel │ │ ├── ReportAttachment.swift │ │ ├── ReportContent.swift │ │ ├── ReportSection.swift │ │ ├── ReportPage.swift │ │ ├── ReportList.swift │ │ ├── Report.swift │ │ └── ReportTable.swift │ │ ├── Artefact │ │ ├── Asset.swift │ │ ├── Decoded.swift │ │ ├── IntegrityCheck.swift │ │ └── ArtefactReporter.swift │ │ ├── Utilities │ │ ├── Sequence.swift │ │ ├── CustomError.swift │ │ ├── String.swift │ │ └── Bash.swift │ │ ├── Commands │ │ ├── run.swift │ │ ├── ArchiveReportCommand.swift │ │ └── IPAReportCommand.swift │ │ └── Sonar.swift ├── Tests │ └── ReportingTests │ │ └── ReportingTests.swift ├── Package.resolved ├── README.md └── Package.swift ├── Sonar ├── Assets.xcassets │ ├── Contents.json │ ├── NHSLogo.imageset │ │ ├── nhs 1.png │ │ ├── nhs 1@2x.png │ │ ├── nhs 1@3x.png │ │ └── Contents.json │ ├── NHSLogoAlt.imageset │ │ ├── NHS1.png │ │ ├── NHS1@2x.png │ │ └── Contents.json │ ├── bluetooth.imageset │ │ ├── Vector.png │ │ ├── Vector@2x.png │ │ ├── Vector@3x.png │ │ └── Contents.json │ ├── Onboarding_area.imageset │ │ ├── Area@1x.png │ │ ├── Area@2x.png │ │ └── Contents.json │ ├── Linking_ID.imageset │ │ ├── Linking_Id_1x.png │ │ ├── Linking_Id_2x.png │ │ └── Contents.json │ ├── Onboarding_protect.imageset │ │ ├── Protect@1x.png │ │ ├── Protect@2x.png │ │ └── Contents.json │ ├── Onboarding_bluetooth.imageset │ │ ├── Bluetooth@1x.png │ │ ├── Bluetooth@2x.png │ │ └── Contents.json │ ├── splash_logo.imageset │ │ ├── Launch-Screen-Logo@1x.png │ │ ├── Launch-Screen-Logo@2x.png │ │ ├── Launch-Screen-Logo@3x.png │ │ └── Contents.json │ ├── Registration_status_failure.imageset │ │ ├── Circle.pdf │ │ └── Contents.json │ ├── Info.imageset │ │ └── Contents.json │ ├── NHS_Logo.imageset │ │ └── Contents.json │ ├── News_Covid.imageset │ │ └── Contents.json │ ├── Arrow_Highlight.imageset │ │ ├── Contents.json │ │ └── Arrow-highlight.pdf │ ├── Spinner.imageset │ │ ├── Contents.json │ │ └── Circle.pdf │ ├── Test_Tubes.imageset │ │ └── Contents.json │ ├── Bell ringing.imageset │ │ └── Contents.json │ ├── Disclosure_Indicator.imageset │ │ ├── Contents.json │ │ └── Fill.pdf │ ├── External_Link.imageset │ │ └── Contents.json │ ├── Registration_status_ok.imageset │ │ ├── Contents.json │ │ └── Circle.pdf │ ├── Background_Curve.imageset │ │ └── Contents.json │ ├── Workplace_Guidance.imageset │ │ └── Contents.json │ ├── NHS-Logo-Template.imageset │ │ └── Contents.json │ ├── Notice badge.imageset │ │ ├── Contents.json │ │ └── Notice badge.pdf │ ├── Error Grey.colorset │ │ └── Contents.json │ ├── Controls_RadioButton_Selected.imageset │ │ ├── Contents.json │ │ └── radio_button_checked_24px.pdf │ └── Controls_RadioButton_Unselected.imageset │ │ ├── Contents.json │ │ └── radio_button_unchecked_24px.pdf ├── NHS Colors.xcassets │ ├── Contents.json │ ├── NHS Button.colorset │ │ └── Contents.json │ ├── NHS Dark Pink.colorset │ │ └── Contents.json │ ├── NHS Error.colorset │ │ └── Contents.json │ ├── NHS Green.colorset │ │ └── Contents.json │ ├── NHS Grey 1.colorset │ │ └── Contents.json │ ├── NHS Grey 2.colorset │ │ └── Contents.json │ ├── NHS Grey 3.colorset │ │ └── Contents.json │ ├── NHS Purple.colorset │ │ └── Contents.json │ ├── NHS Red.colorset │ │ └── Contents.json │ ├── NHS White.colorset │ │ └── Contents.json │ ├── NHS Yellow.colorset │ │ └── Contents.json │ ├── NHS Blue.colorset │ │ └── Contents.json │ ├── NHS Grey 4.colorset │ │ └── Contents.json │ ├── NHS Grey 5.colorset │ │ └── Contents.json │ ├── NHS Link.colorset │ │ └── Contents.json │ ├── NHS Pale Yellow.colorset │ │ └── Contents.json │ ├── NHS Text.colorset │ │ └── Contents.json │ ├── NHS Warm Yellow.colorset │ │ └── Contents.json │ ├── NHS Dark Blue.colorset │ │ └── Contents.json │ ├── NHS Highlight.colorset │ │ └── Contents.json │ ├── NHS Secondary Button.colorset │ │ └── Contents.json │ ├── NHS Secondary Text.colorset │ │ └── Contents.json │ └── NHS Error Background.colorset │ │ └── Contents.json ├── Resources │ ├── AppIcon.xcassets │ │ ├── Contents.json │ │ ├── AppIcon.appiconset │ │ │ ├── App-Store-Icon.png │ │ │ ├── AppIcon20x20@2x.png │ │ │ ├── AppIcon20x20@3x.png │ │ │ ├── AppIcon29x29@2x.png │ │ │ ├── AppIcon29x29@3x.png │ │ │ ├── AppIcon40x40@2x.png │ │ │ ├── AppIcon40x40@3x.png │ │ │ ├── AppIcon60x60@2x.png │ │ │ └── AppIcon60x60@3x.png │ │ ├── AppIcon.beta.appiconset │ │ │ ├── App-Store-Icon.png │ │ │ ├── AppIcon20x20@2x.png │ │ │ ├── AppIcon20x20@3x.png │ │ │ ├── AppIcon29x29@2x.png │ │ │ ├── AppIcon29x29@3x.png │ │ │ ├── AppIcon40x40@2x.png │ │ │ ├── AppIcon40x40@3x.png │ │ │ ├── AppIcon60x60@2x.png │ │ │ └── AppIcon60x60@3x.png │ │ └── AppIcon.internal.appiconset │ │ │ ├── App-Store-Icon.png │ │ │ ├── AppIcon20x20@2x.png │ │ │ ├── AppIcon20x20@3x.png │ │ │ ├── AppIcon29x29@2x.png │ │ │ ├── AppIcon29x29@3x.png │ │ │ ├── AppIcon40x40@2x.png │ │ │ ├── AppIcon40x40@3x.png │ │ │ ├── AppIcon60x60@2x.png │ │ │ └── AppIcon60x60@3x.png │ └── Settings.bundle │ │ ├── en.lproj │ │ └── Root.strings │ │ └── Root.plist ├── Environments │ ├── Sonar.xcconfig.sample │ ├── production.xcconfig │ ├── beta.xcconfig │ ├── internal.xcconfig │ ├── environment.json │ └── Environment.swift.erb ├── Sonar-Bridging-Header.h ├── Sonar.entitlements ├── Base.xcconfig ├── Appearance │ └── Colors.swift ├── AppDelegate.swift └── Info.plist ├── Frameworks ├── Firebase.framework │ ├── Modules │ │ └── module.modulemap │ ├── Firebase │ └── Info.plist ├── nanopb.framework │ ├── nanopb │ ├── Modules │ │ └── module.modulemap │ ├── Headers │ │ ├── nanopb-umbrella.h │ │ └── pb_common.h │ └── Info.plist ├── Protobuf.framework │ ├── Protobuf │ ├── Modules │ │ └── module.modulemap │ ├── Info.plist │ └── Headers │ │ ├── Protobuf-umbrella.h │ │ ├── GPBProtocolBuffers_RuntimeSupport.h │ │ ├── GPBRootObject_PackagePrivate.h │ │ ├── GPBUnknownField_PackagePrivate.h │ │ ├── Empty.pbobjc.h │ │ ├── GPBRootObject.h │ │ └── SourceContext.pbobjc.h ├── FirebaseCore.framework │ ├── FirebaseCore │ ├── Modules │ │ └── module.modulemap │ ├── Headers │ │ ├── FirebaseCore-umbrella.h │ │ ├── FirebaseCore.h │ │ ├── FIRLoggerLevel.h │ │ └── FIRConfiguration.h │ └── Info.plist ├── PromisesObjC.framework │ ├── PromisesObjC │ ├── Modules │ │ └── module.modulemap │ ├── Info.plist │ └── Headers │ │ ├── PromisesObjC-umbrella.h │ │ ├── FBLPromises.h │ │ ├── FBLPromise+Await.h │ │ ├── FBLPromiseError.h │ │ ├── FBLPromise+Do.h │ │ ├── FBLPromise+Always.h │ │ ├── FBLPromise+Timeout.h │ │ ├── FBLPromise+Delay.h │ │ ├── FBLPromise+Catch.h │ │ ├── FBLPromise+Recover.h │ │ ├── FBLPromise+Testing.h │ │ ├── FBLPromise+Async.h │ │ └── FBLPromise+Validate.h ├── GoogleUtilities.framework │ ├── GoogleUtilities │ ├── Modules │ │ └── module.modulemap │ ├── Headers │ │ ├── GoogleUtilities-umbrella.h │ │ ├── GULLoggerLevel.h │ │ └── GULNSData+zlib.h │ └── Info.plist ├── FirebaseInstanceID.framework │ ├── FirebaseInstanceID │ ├── Modules │ │ └── module.modulemap │ ├── Headers │ │ ├── FirebaseInstanceID-umbrella.h │ │ └── FirebaseInstanceID.h │ └── Info.plist ├── FirebaseMessaging.framework │ ├── FirebaseMessaging │ ├── Modules │ │ └── module.modulemap │ ├── Headers │ │ ├── FirebaseMessaging-umbrella.h │ │ ├── FirebaseMessaging.h │ │ └── FIRMessagingExtensionHelper.h │ └── Info.plist ├── GoogleDataTransport.framework │ ├── GoogleDataTransport │ ├── Modules │ │ └── module.modulemap │ ├── Info.plist │ └── Headers │ │ ├── GoogleDataTransport-umbrella.h │ │ ├── GoogleDataTransport.h │ │ ├── GDTCORReachability.h │ │ ├── GDTCOREventDataObject.h │ │ ├── GDTCORTargets.h │ │ ├── GDTCOREventTransformer.h │ │ ├── GDTCORUploader.h │ │ ├── GDTCORRegistrar.h │ │ ├── GDTCORClock.h │ │ └── GDTCORLifecycle.h ├── FirebaseInstallations.framework │ ├── FirebaseInstallations │ ├── Modules │ │ └── module.modulemap │ ├── Headers │ │ ├── FirebaseInstallations-umbrella.h │ │ ├── FIRInstallationsVersion.h │ │ ├── FirebaseInstallations.h │ │ ├── FIRInstallationsAuthTokenResult.h │ │ └── FIRInstallationsErrors.h │ └── Info.plist └── FirebaseCoreDiagnostics.framework │ ├── FirebaseCoreDiagnostics │ ├── Modules │ └── module.modulemap │ ├── Headers │ └── FirebaseCoreDiagnostics-umbrella.h │ └── Info.plist ├── Example Notifications └── 5_canary.apns ├── Sonar.xcodeproj ├── project.xcworkspace │ ├── contents.xcworkspacedata │ └── xcshareddata │ │ ├── IDEWorkspaceChecks.plist │ │ ├── WorkspaceSettings.xcsettings │ │ └── swiftpm │ │ └── Package.resolved └── xcshareddata │ └── IDETemplateMacros.plist ├── fastlane ├── Appfile ├── README.md └── Fastfile ├── Configurations ├── Release.xcconfig ├── Debug.xcconfig └── Project.xcconfig ├── .github ├── workflows │ ├── clean-artifacts.yml │ ├── remove-tag.yml │ └── generate-release-note.yml └── ISSUE_TEMPLATE │ └── bug_report.md └── LICENSE /.secret/.keep: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /.secret/canary/.keep: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /ci/match/match_version.txt: -------------------------------------------------------------------------------- 1 | 2.144.0 -------------------------------------------------------------------------------- /bin/gyb: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env python2.7 2 | import gyb 3 | gyb.main() 4 | -------------------------------------------------------------------------------- /Reporting/Sources/Reporter/main.swift: -------------------------------------------------------------------------------- 1 | import Foundation 2 | import Reporting 3 | 4 | Reporting.run() 5 | -------------------------------------------------------------------------------- /Sonar/Assets.xcassets/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "info" : { 3 | "version" : 1, 4 | "author" : "xcode" 5 | } 6 | } -------------------------------------------------------------------------------- /Sonar/NHS Colors.xcassets/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "info" : { 3 | "version" : 1, 4 | "author" : "xcode" 5 | } 6 | } -------------------------------------------------------------------------------- /Frameworks/Firebase.framework/Modules/module.modulemap: -------------------------------------------------------------------------------- 1 | framework module Firebase { 2 | header "Firebase.h" 3 | export * 4 | } -------------------------------------------------------------------------------- /Sonar/Resources/AppIcon.xcassets/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "info" : { 3 | "author" : "xcode", 4 | "version" : 1 5 | } 6 | } 7 | -------------------------------------------------------------------------------- /Example Notifications/5_canary.apns: -------------------------------------------------------------------------------- 1 | { 2 | "aps": { 3 | "content-available": 1 4 | }, 5 | 6 | "canary": "true" 7 | } 8 | -------------------------------------------------------------------------------- /Frameworks/nanopb.framework/nanopb: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ukhsa-collaboration/COVID-19-app-iOS-BETA/HEAD/Frameworks/nanopb.framework/nanopb -------------------------------------------------------------------------------- /Frameworks/Firebase.framework/Firebase: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ukhsa-collaboration/COVID-19-app-iOS-BETA/HEAD/Frameworks/Firebase.framework/Firebase -------------------------------------------------------------------------------- /Frameworks/Protobuf.framework/Protobuf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ukhsa-collaboration/COVID-19-app-iOS-BETA/HEAD/Frameworks/Protobuf.framework/Protobuf -------------------------------------------------------------------------------- /bin/pact/resolve-directory: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | 3 | resolve-directory() 4 | { 5 | cd "$1" 2> /dev/null || return $? 6 | echo "`pwd -P`" 7 | } 8 | -------------------------------------------------------------------------------- /Frameworks/nanopb.framework/Modules/module.modulemap: -------------------------------------------------------------------------------- 1 | framework module nanopb { 2 | umbrella header "nanopb-umbrella.h" 3 | export * 4 | module * { export * } 5 | } 6 | -------------------------------------------------------------------------------- /Frameworks/FirebaseCore.framework/FirebaseCore: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ukhsa-collaboration/COVID-19-app-iOS-BETA/HEAD/Frameworks/FirebaseCore.framework/FirebaseCore -------------------------------------------------------------------------------- /Frameworks/PromisesObjC.framework/PromisesObjC: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ukhsa-collaboration/COVID-19-app-iOS-BETA/HEAD/Frameworks/PromisesObjC.framework/PromisesObjC -------------------------------------------------------------------------------- /Frameworks/Protobuf.framework/Modules/module.modulemap: -------------------------------------------------------------------------------- 1 | framework module Protobuf { 2 | umbrella header "Protobuf-umbrella.h" 3 | export * 4 | module * { export * } 5 | } 6 | -------------------------------------------------------------------------------- /Sonar/Assets.xcassets/NHSLogo.imageset/nhs 1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ukhsa-collaboration/COVID-19-app-iOS-BETA/HEAD/Sonar/Assets.xcassets/NHSLogo.imageset/nhs 1.png -------------------------------------------------------------------------------- /Sonar/Environments/Sonar.xcconfig.sample: -------------------------------------------------------------------------------- 1 | #include "Sonar/Environments/internal.xcconfig" 2 | 3 | SWIFT_ACTIVE_COMPILATION_CONDITIONS = BLE_LOGLEVEL_NODEBUG $(inherited) 4 | -------------------------------------------------------------------------------- /Reporting/Sources/Reporting/ReportModel/ReportAttachment.swift: -------------------------------------------------------------------------------- 1 | import Foundation 2 | 3 | struct ReportAttachment { 4 | var name: String 5 | var source: URL 6 | } 7 | -------------------------------------------------------------------------------- /Sonar/Assets.xcassets/NHSLogoAlt.imageset/NHS1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ukhsa-collaboration/COVID-19-app-iOS-BETA/HEAD/Sonar/Assets.xcassets/NHSLogoAlt.imageset/NHS1.png -------------------------------------------------------------------------------- /Sonar/Sonar-Bridging-Header.h: -------------------------------------------------------------------------------- 1 | // 2 | // Use this file to import your target's public headers that you would like to expose to Swift. 3 | // 4 | 5 | #import "Firebase.h" 6 | -------------------------------------------------------------------------------- /Frameworks/GoogleUtilities.framework/GoogleUtilities: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ukhsa-collaboration/COVID-19-app-iOS-BETA/HEAD/Frameworks/GoogleUtilities.framework/GoogleUtilities -------------------------------------------------------------------------------- /Sonar/Assets.xcassets/NHSLogo.imageset/nhs 1@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ukhsa-collaboration/COVID-19-app-iOS-BETA/HEAD/Sonar/Assets.xcassets/NHSLogo.imageset/nhs 1@2x.png -------------------------------------------------------------------------------- /Sonar/Assets.xcassets/NHSLogo.imageset/nhs 1@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ukhsa-collaboration/COVID-19-app-iOS-BETA/HEAD/Sonar/Assets.xcassets/NHSLogo.imageset/nhs 1@3x.png -------------------------------------------------------------------------------- /Sonar/Assets.xcassets/NHSLogoAlt.imageset/NHS1@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ukhsa-collaboration/COVID-19-app-iOS-BETA/HEAD/Sonar/Assets.xcassets/NHSLogoAlt.imageset/NHS1@2x.png -------------------------------------------------------------------------------- /Sonar/Assets.xcassets/bluetooth.imageset/Vector.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ukhsa-collaboration/COVID-19-app-iOS-BETA/HEAD/Sonar/Assets.xcassets/bluetooth.imageset/Vector.png -------------------------------------------------------------------------------- /Sonar/Resources/Settings.bundle/en.lproj/Root.strings: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ukhsa-collaboration/COVID-19-app-iOS-BETA/HEAD/Sonar/Resources/Settings.bundle/en.lproj/Root.strings -------------------------------------------------------------------------------- /Frameworks/PromisesObjC.framework/Modules/module.modulemap: -------------------------------------------------------------------------------- 1 | framework module PromisesObjC { 2 | umbrella header "PromisesObjC-umbrella.h" 3 | export * 4 | module * { export * } 5 | } 6 | -------------------------------------------------------------------------------- /Sonar/Assets.xcassets/bluetooth.imageset/Vector@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ukhsa-collaboration/COVID-19-app-iOS-BETA/HEAD/Sonar/Assets.xcassets/bluetooth.imageset/Vector@2x.png -------------------------------------------------------------------------------- /Sonar/Assets.xcassets/bluetooth.imageset/Vector@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ukhsa-collaboration/COVID-19-app-iOS-BETA/HEAD/Sonar/Assets.xcassets/bluetooth.imageset/Vector@3x.png -------------------------------------------------------------------------------- /Frameworks/FirebaseInstanceID.framework/FirebaseInstanceID: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ukhsa-collaboration/COVID-19-app-iOS-BETA/HEAD/Frameworks/FirebaseInstanceID.framework/FirebaseInstanceID -------------------------------------------------------------------------------- /Frameworks/FirebaseMessaging.framework/FirebaseMessaging: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ukhsa-collaboration/COVID-19-app-iOS-BETA/HEAD/Frameworks/FirebaseMessaging.framework/FirebaseMessaging -------------------------------------------------------------------------------- /Sonar/Assets.xcassets/Onboarding_area.imageset/Area@1x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ukhsa-collaboration/COVID-19-app-iOS-BETA/HEAD/Sonar/Assets.xcassets/Onboarding_area.imageset/Area@1x.png -------------------------------------------------------------------------------- /Sonar/Assets.xcassets/Onboarding_area.imageset/Area@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ukhsa-collaboration/COVID-19-app-iOS-BETA/HEAD/Sonar/Assets.xcassets/Onboarding_area.imageset/Area@2x.png -------------------------------------------------------------------------------- /Frameworks/GoogleDataTransport.framework/GoogleDataTransport: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ukhsa-collaboration/COVID-19-app-iOS-BETA/HEAD/Frameworks/GoogleDataTransport.framework/GoogleDataTransport -------------------------------------------------------------------------------- /Sonar/Assets.xcassets/Linking_ID.imageset/Linking_Id_1x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ukhsa-collaboration/COVID-19-app-iOS-BETA/HEAD/Sonar/Assets.xcassets/Linking_ID.imageset/Linking_Id_1x.png -------------------------------------------------------------------------------- /Sonar/Assets.xcassets/Linking_ID.imageset/Linking_Id_2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ukhsa-collaboration/COVID-19-app-iOS-BETA/HEAD/Sonar/Assets.xcassets/Linking_ID.imageset/Linking_Id_2x.png -------------------------------------------------------------------------------- /Frameworks/FirebaseInstallations.framework/FirebaseInstallations: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ukhsa-collaboration/COVID-19-app-iOS-BETA/HEAD/Frameworks/FirebaseInstallations.framework/FirebaseInstallations -------------------------------------------------------------------------------- /Sonar/Assets.xcassets/Onboarding_protect.imageset/Protect@1x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ukhsa-collaboration/COVID-19-app-iOS-BETA/HEAD/Sonar/Assets.xcassets/Onboarding_protect.imageset/Protect@1x.png -------------------------------------------------------------------------------- /Sonar/Assets.xcassets/Onboarding_protect.imageset/Protect@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ukhsa-collaboration/COVID-19-app-iOS-BETA/HEAD/Sonar/Assets.xcassets/Onboarding_protect.imageset/Protect@2x.png -------------------------------------------------------------------------------- /Frameworks/FirebaseCoreDiagnostics.framework/FirebaseCoreDiagnostics: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ukhsa-collaboration/COVID-19-app-iOS-BETA/HEAD/Frameworks/FirebaseCoreDiagnostics.framework/FirebaseCoreDiagnostics -------------------------------------------------------------------------------- /Sonar/Assets.xcassets/Onboarding_bluetooth.imageset/Bluetooth@1x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ukhsa-collaboration/COVID-19-app-iOS-BETA/HEAD/Sonar/Assets.xcassets/Onboarding_bluetooth.imageset/Bluetooth@1x.png -------------------------------------------------------------------------------- /Sonar/Assets.xcassets/Onboarding_bluetooth.imageset/Bluetooth@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ukhsa-collaboration/COVID-19-app-iOS-BETA/HEAD/Sonar/Assets.xcassets/Onboarding_bluetooth.imageset/Bluetooth@2x.png -------------------------------------------------------------------------------- /Sonar/Assets.xcassets/splash_logo.imageset/Launch-Screen-Logo@1x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ukhsa-collaboration/COVID-19-app-iOS-BETA/HEAD/Sonar/Assets.xcassets/splash_logo.imageset/Launch-Screen-Logo@1x.png -------------------------------------------------------------------------------- /Sonar/Assets.xcassets/splash_logo.imageset/Launch-Screen-Logo@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ukhsa-collaboration/COVID-19-app-iOS-BETA/HEAD/Sonar/Assets.xcassets/splash_logo.imageset/Launch-Screen-Logo@2x.png -------------------------------------------------------------------------------- /Sonar/Assets.xcassets/splash_logo.imageset/Launch-Screen-Logo@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ukhsa-collaboration/COVID-19-app-iOS-BETA/HEAD/Sonar/Assets.xcassets/splash_logo.imageset/Launch-Screen-Logo@3x.png -------------------------------------------------------------------------------- /Sonar/Assets.xcassets/Registration_status_failure.imageset/Circle.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ukhsa-collaboration/COVID-19-app-iOS-BETA/HEAD/Sonar/Assets.xcassets/Registration_status_failure.imageset/Circle.pdf -------------------------------------------------------------------------------- /Sonar/Resources/AppIcon.xcassets/AppIcon.appiconset/App-Store-Icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ukhsa-collaboration/COVID-19-app-iOS-BETA/HEAD/Sonar/Resources/AppIcon.xcassets/AppIcon.appiconset/App-Store-Icon.png -------------------------------------------------------------------------------- /Reporting/Tests/ReportingTests/ReportingTests.swift: -------------------------------------------------------------------------------- 1 | import XCTest 2 | @testable import Reporting 3 | 4 | final class ReportingTests: XCTestCase { 5 | func testExample() { 6 | XCTAssert(true) 7 | } 8 | } 9 | -------------------------------------------------------------------------------- /Sonar.xcodeproj/project.xcworkspace/contents.xcworkspacedata: -------------------------------------------------------------------------------- 1 | 2 | 4 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /Sonar/Resources/AppIcon.xcassets/AppIcon.appiconset/AppIcon20x20@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ukhsa-collaboration/COVID-19-app-iOS-BETA/HEAD/Sonar/Resources/AppIcon.xcassets/AppIcon.appiconset/AppIcon20x20@2x.png -------------------------------------------------------------------------------- /Sonar/Resources/AppIcon.xcassets/AppIcon.appiconset/AppIcon20x20@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ukhsa-collaboration/COVID-19-app-iOS-BETA/HEAD/Sonar/Resources/AppIcon.xcassets/AppIcon.appiconset/AppIcon20x20@3x.png -------------------------------------------------------------------------------- /Sonar/Resources/AppIcon.xcassets/AppIcon.appiconset/AppIcon29x29@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ukhsa-collaboration/COVID-19-app-iOS-BETA/HEAD/Sonar/Resources/AppIcon.xcassets/AppIcon.appiconset/AppIcon29x29@2x.png -------------------------------------------------------------------------------- /Sonar/Resources/AppIcon.xcassets/AppIcon.appiconset/AppIcon29x29@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ukhsa-collaboration/COVID-19-app-iOS-BETA/HEAD/Sonar/Resources/AppIcon.xcassets/AppIcon.appiconset/AppIcon29x29@3x.png -------------------------------------------------------------------------------- /Sonar/Resources/AppIcon.xcassets/AppIcon.appiconset/AppIcon40x40@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ukhsa-collaboration/COVID-19-app-iOS-BETA/HEAD/Sonar/Resources/AppIcon.xcassets/AppIcon.appiconset/AppIcon40x40@2x.png -------------------------------------------------------------------------------- /Sonar/Resources/AppIcon.xcassets/AppIcon.appiconset/AppIcon40x40@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ukhsa-collaboration/COVID-19-app-iOS-BETA/HEAD/Sonar/Resources/AppIcon.xcassets/AppIcon.appiconset/AppIcon40x40@3x.png -------------------------------------------------------------------------------- /Sonar/Resources/AppIcon.xcassets/AppIcon.appiconset/AppIcon60x60@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ukhsa-collaboration/COVID-19-app-iOS-BETA/HEAD/Sonar/Resources/AppIcon.xcassets/AppIcon.appiconset/AppIcon60x60@2x.png -------------------------------------------------------------------------------- /Sonar/Resources/AppIcon.xcassets/AppIcon.appiconset/AppIcon60x60@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ukhsa-collaboration/COVID-19-app-iOS-BETA/HEAD/Sonar/Resources/AppIcon.xcassets/AppIcon.appiconset/AppIcon60x60@3x.png -------------------------------------------------------------------------------- /Sonar/Resources/AppIcon.xcassets/AppIcon.beta.appiconset/App-Store-Icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ukhsa-collaboration/COVID-19-app-iOS-BETA/HEAD/Sonar/Resources/AppIcon.xcassets/AppIcon.beta.appiconset/App-Store-Icon.png -------------------------------------------------------------------------------- /Sonar/Resources/AppIcon.xcassets/AppIcon.beta.appiconset/AppIcon20x20@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ukhsa-collaboration/COVID-19-app-iOS-BETA/HEAD/Sonar/Resources/AppIcon.xcassets/AppIcon.beta.appiconset/AppIcon20x20@2x.png -------------------------------------------------------------------------------- /Sonar/Resources/AppIcon.xcassets/AppIcon.beta.appiconset/AppIcon20x20@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ukhsa-collaboration/COVID-19-app-iOS-BETA/HEAD/Sonar/Resources/AppIcon.xcassets/AppIcon.beta.appiconset/AppIcon20x20@3x.png -------------------------------------------------------------------------------- /Sonar/Resources/AppIcon.xcassets/AppIcon.beta.appiconset/AppIcon29x29@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ukhsa-collaboration/COVID-19-app-iOS-BETA/HEAD/Sonar/Resources/AppIcon.xcassets/AppIcon.beta.appiconset/AppIcon29x29@2x.png -------------------------------------------------------------------------------- /Sonar/Resources/AppIcon.xcassets/AppIcon.beta.appiconset/AppIcon29x29@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ukhsa-collaboration/COVID-19-app-iOS-BETA/HEAD/Sonar/Resources/AppIcon.xcassets/AppIcon.beta.appiconset/AppIcon29x29@3x.png -------------------------------------------------------------------------------- /Sonar/Resources/AppIcon.xcassets/AppIcon.beta.appiconset/AppIcon40x40@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ukhsa-collaboration/COVID-19-app-iOS-BETA/HEAD/Sonar/Resources/AppIcon.xcassets/AppIcon.beta.appiconset/AppIcon40x40@2x.png -------------------------------------------------------------------------------- /Sonar/Resources/AppIcon.xcassets/AppIcon.beta.appiconset/AppIcon40x40@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ukhsa-collaboration/COVID-19-app-iOS-BETA/HEAD/Sonar/Resources/AppIcon.xcassets/AppIcon.beta.appiconset/AppIcon40x40@3x.png -------------------------------------------------------------------------------- /Sonar/Resources/AppIcon.xcassets/AppIcon.beta.appiconset/AppIcon60x60@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ukhsa-collaboration/COVID-19-app-iOS-BETA/HEAD/Sonar/Resources/AppIcon.xcassets/AppIcon.beta.appiconset/AppIcon60x60@2x.png -------------------------------------------------------------------------------- /Sonar/Resources/AppIcon.xcassets/AppIcon.beta.appiconset/AppIcon60x60@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ukhsa-collaboration/COVID-19-app-iOS-BETA/HEAD/Sonar/Resources/AppIcon.xcassets/AppIcon.beta.appiconset/AppIcon60x60@3x.png -------------------------------------------------------------------------------- /Sonar/Environments/production.xcconfig: -------------------------------------------------------------------------------- 1 | #include "Sonar/Base.xcconfig" 2 | 3 | ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon 4 | PRODUCT_BUNDLE_IDENTIFIER = uk.nhs.nhsx.sonar 5 | SWIFT_ACTIVE_COMPILATION_CONDITIONS = PILOT $(inherited) 6 | -------------------------------------------------------------------------------- /Sonar/Resources/AppIcon.xcassets/AppIcon.internal.appiconset/App-Store-Icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ukhsa-collaboration/COVID-19-app-iOS-BETA/HEAD/Sonar/Resources/AppIcon.xcassets/AppIcon.internal.appiconset/App-Store-Icon.png -------------------------------------------------------------------------------- /Sonar/Resources/AppIcon.xcassets/AppIcon.internal.appiconset/AppIcon20x20@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ukhsa-collaboration/COVID-19-app-iOS-BETA/HEAD/Sonar/Resources/AppIcon.xcassets/AppIcon.internal.appiconset/AppIcon20x20@2x.png -------------------------------------------------------------------------------- /Sonar/Resources/AppIcon.xcassets/AppIcon.internal.appiconset/AppIcon20x20@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ukhsa-collaboration/COVID-19-app-iOS-BETA/HEAD/Sonar/Resources/AppIcon.xcassets/AppIcon.internal.appiconset/AppIcon20x20@3x.png -------------------------------------------------------------------------------- /Sonar/Resources/AppIcon.xcassets/AppIcon.internal.appiconset/AppIcon29x29@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ukhsa-collaboration/COVID-19-app-iOS-BETA/HEAD/Sonar/Resources/AppIcon.xcassets/AppIcon.internal.appiconset/AppIcon29x29@2x.png -------------------------------------------------------------------------------- /Sonar/Resources/AppIcon.xcassets/AppIcon.internal.appiconset/AppIcon29x29@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ukhsa-collaboration/COVID-19-app-iOS-BETA/HEAD/Sonar/Resources/AppIcon.xcassets/AppIcon.internal.appiconset/AppIcon29x29@3x.png -------------------------------------------------------------------------------- /Sonar/Resources/AppIcon.xcassets/AppIcon.internal.appiconset/AppIcon40x40@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ukhsa-collaboration/COVID-19-app-iOS-BETA/HEAD/Sonar/Resources/AppIcon.xcassets/AppIcon.internal.appiconset/AppIcon40x40@2x.png -------------------------------------------------------------------------------- /Sonar/Resources/AppIcon.xcassets/AppIcon.internal.appiconset/AppIcon40x40@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ukhsa-collaboration/COVID-19-app-iOS-BETA/HEAD/Sonar/Resources/AppIcon.xcassets/AppIcon.internal.appiconset/AppIcon40x40@3x.png -------------------------------------------------------------------------------- /Sonar/Resources/AppIcon.xcassets/AppIcon.internal.appiconset/AppIcon60x60@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ukhsa-collaboration/COVID-19-app-iOS-BETA/HEAD/Sonar/Resources/AppIcon.xcassets/AppIcon.internal.appiconset/AppIcon60x60@2x.png -------------------------------------------------------------------------------- /Sonar/Resources/AppIcon.xcassets/AppIcon.internal.appiconset/AppIcon60x60@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ukhsa-collaboration/COVID-19-app-iOS-BETA/HEAD/Sonar/Resources/AppIcon.xcassets/AppIcon.internal.appiconset/AppIcon60x60@3x.png -------------------------------------------------------------------------------- /Sonar/Environments/beta.xcconfig: -------------------------------------------------------------------------------- 1 | #include "Sonar/Base.xcconfig" 2 | 3 | ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon.beta 4 | PRODUCT_BUNDLE_IDENTIFIER = uk.nhs.nhsx.beta.CoLocate 5 | SWIFT_ACTIVE_COMPILATION_CONDITIONS = INTERNAL $(inherited) 6 | -------------------------------------------------------------------------------- /Reporting/Sources/Reporting/Artefact/Asset.swift: -------------------------------------------------------------------------------- 1 | import Foundation 2 | 3 | enum Asset { 4 | case storyboard(String) 5 | case nib(String) 6 | case strings(String) 7 | case plist(String) 8 | case bundle(String) 9 | } 10 | -------------------------------------------------------------------------------- /Reporting/Sources/Reporting/Utilities/Sequence.swift: -------------------------------------------------------------------------------- 1 | import Foundation 2 | 3 | extension Sequence { 4 | 5 | func count(where isIncluded: (Element) -> Bool) -> Int { 6 | self.lazy.filter(isIncluded).count 7 | } 8 | 9 | } 10 | -------------------------------------------------------------------------------- /Sonar/Environments/internal.xcconfig: -------------------------------------------------------------------------------- 1 | #include "Sonar/Base.xcconfig" 2 | 3 | ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon.internal 4 | PRODUCT_BUNDLE_IDENTIFIER = uk.nhs.nhsx.sonar.internal 5 | SWIFT_ACTIVE_COMPILATION_CONDITIONS = INTERNAL PILOT $(inherited) 6 | -------------------------------------------------------------------------------- /Sonar/Assets.xcassets/Info.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "filename" : "Group 163.pdf", 5 | "idiom" : "universal" 6 | } 7 | ], 8 | "info" : { 9 | "author" : "xcode", 10 | "version" : 1 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /Sonar/Assets.xcassets/NHS_Logo.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "filename" : "Group 87.pdf", 5 | "idiom" : "universal" 6 | } 7 | ], 8 | "info" : { 9 | "author" : "xcode", 10 | "version" : 1 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /bin/make-environment: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env ruby 2 | 3 | require "erb" 4 | require "json" 5 | 6 | template = ERB.new(File.read("#{__dir__}/../Sonar/Environments/Environment.swift.erb")) 7 | json = JSON.parse(ARGF.read) 8 | 9 | puts template.result_with_hash(json) 10 | -------------------------------------------------------------------------------- /Frameworks/GoogleDataTransport.framework/Modules/module.modulemap: -------------------------------------------------------------------------------- 1 | framework module GoogleDataTransport { 2 | umbrella header "GoogleDataTransport.h" 3 | export * 4 | module * { export * } 5 | link framework "CoreTelephony" 6 | link framework "SystemConfiguration" 7 | } 8 | -------------------------------------------------------------------------------- /Sonar/Assets.xcassets/News_Covid.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "filename" : "News-covid.pdf", 5 | "idiom" : "universal" 6 | } 7 | ], 8 | "info" : { 9 | "author" : "xcode", 10 | "version" : 1 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /Frameworks/GoogleUtilities.framework/Modules/module.modulemap: -------------------------------------------------------------------------------- 1 | framework module GoogleUtilities { 2 | umbrella header "GoogleUtilities-umbrella.h" 3 | export * 4 | module * { export * } 5 | link framework "Security" 6 | link framework "SystemConfiguration" 7 | link "z" 8 | } 9 | -------------------------------------------------------------------------------- /Reporting/Sources/Reporting/Utilities/CustomError.swift: -------------------------------------------------------------------------------- 1 | import Foundation 2 | 3 | struct CustomError: Error, CustomStringConvertible { 4 | var description: String 5 | 6 | init(_ description: String) { 7 | self.description = description 8 | } 9 | } 10 | -------------------------------------------------------------------------------- /Sonar/Assets.xcassets/Arrow_Highlight.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "filename" : "Arrow-highlight.pdf", 5 | "idiom" : "universal" 6 | } 7 | ], 8 | "info" : { 9 | "author" : "xcode", 10 | "version" : 1 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /Reporting/Sources/Reporting/Utilities/String.swift: -------------------------------------------------------------------------------- 1 | 2 | import Foundation 3 | 4 | extension String { 5 | 6 | func matches(_ pattern: String) -> Bool { 7 | return range(of: "^\(pattern)$", options: .regularExpression, range: nil, locale: nil) != nil 8 | } 9 | 10 | } 11 | -------------------------------------------------------------------------------- /Sonar/Sonar.entitlements: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | aps-environment 6 | development 7 | 8 | 9 | -------------------------------------------------------------------------------- /Reporting/Sources/Reporting/ReportModel/ReportContent.swift: -------------------------------------------------------------------------------- 1 | import Foundation 2 | 3 | protocol ReportContent { 4 | var markdownBody: String { get } 5 | } 6 | 7 | extension String: ReportContent { 8 | 9 | var markdownBody: String { 10 | return self 11 | } 12 | 13 | } 14 | -------------------------------------------------------------------------------- /bin/bump-build-version: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | 3 | set -euo pipefail 4 | 5 | PLIST=Sonar/Info.plist 6 | 7 | current_version=$(/usr/libexec/PlistBuddy -c "Print CFBundleVersion" "$PLIST") 8 | next_version="$((current_version + 1))" 9 | plutil -replace CFBundleVersion -string "$next_version" "$PLIST" 10 | -------------------------------------------------------------------------------- /fastlane/Appfile: -------------------------------------------------------------------------------- 1 | app_identifier("uk.nhs.nhsx.sonar.internal") # The bundle identifier of your app 2 | 3 | itc_team_id("121237496") # App Store Connect Team ID 4 | team_id("877YMUFLMF") # Developer Portal Team ID 5 | 6 | # For more information about the Appfile, see: 7 | # https://docs.fastlane.tools/advanced/#appfile 8 | -------------------------------------------------------------------------------- /Sonar.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | IDEDidComputeMac32BitWarning 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /Frameworks/FirebaseCore.framework/Modules/module.modulemap: -------------------------------------------------------------------------------- 1 | framework module FirebaseCore { 2 | umbrella header "FirebaseCore.h" 3 | export * 4 | module * { export * } 5 | link framework "CoreTelephony" 6 | link framework "Foundation" 7 | link framework "SystemConfiguration" 8 | link framework "UIKit" 9 | link "z" 10 | } 11 | -------------------------------------------------------------------------------- /Sonar/Assets.xcassets/Spinner.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "filename" : "Circle.pdf", 5 | "idiom" : "universal" 6 | } 7 | ], 8 | "info" : { 9 | "author" : "xcode", 10 | "version" : 1 11 | }, 12 | "properties" : { 13 | "preserves-vector-representation" : true 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /Frameworks/FirebaseCoreDiagnostics.framework/Modules/module.modulemap: -------------------------------------------------------------------------------- 1 | framework module FirebaseCoreDiagnostics { 2 | umbrella header "FirebaseCoreDiagnostics-umbrella.h" 3 | export * 4 | module * { export * } 5 | link framework "CoreTelephony" 6 | link framework "Foundation" 7 | link framework "SystemConfiguration" 8 | link "z" 9 | } 10 | -------------------------------------------------------------------------------- /Sonar/Assets.xcassets/Test_Tubes.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "filename" : "TestTubes.pdf", 5 | "idiom" : "universal" 6 | } 7 | ], 8 | "info" : { 9 | "author" : "xcode", 10 | "version" : 1 11 | }, 12 | "properties" : { 13 | "preserves-vector-representation" : true 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /Sonar/Assets.xcassets/Bell ringing.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "filename" : "Bell ringing.pdf", 5 | "idiom" : "universal" 6 | } 7 | ], 8 | "info" : { 9 | "author" : "xcode", 10 | "version" : 1 11 | }, 12 | "properties" : { 13 | "preserves-vector-representation" : true 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /Sonar/Assets.xcassets/Disclosure_Indicator.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "filename" : "Fill.pdf", 5 | "idiom" : "universal" 6 | } 7 | ], 8 | "info" : { 9 | "author" : "xcode", 10 | "version" : 1 11 | }, 12 | "properties" : { 13 | "preserves-vector-representation" : true 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /Sonar/Assets.xcassets/External_Link.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "filename" : "External_Link.pdf", 5 | "idiom" : "universal" 6 | } 7 | ], 8 | "info" : { 9 | "author" : "xcode", 10 | "version" : 1 11 | }, 12 | "properties" : { 13 | "preserves-vector-representation" : true 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /Sonar/Assets.xcassets/Registration_status_ok.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "filename" : "Circle.pdf", 5 | "idiom" : "universal" 6 | } 7 | ], 8 | "info" : { 9 | "author" : "xcode", 10 | "version" : 1 11 | }, 12 | "properties" : { 13 | "preserves-vector-representation" : true 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /Sonar.xcodeproj/project.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | IDEWorkspaceSharedSettings_AutocreateContextsIfNeeded 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /Sonar/Assets.xcassets/Background_Curve.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "filename" : "Background_Curve.pdf", 5 | "idiom" : "universal" 6 | } 7 | ], 8 | "info" : { 9 | "author" : "xcode", 10 | "version" : 1 11 | }, 12 | "properties" : { 13 | "preserves-vector-representation" : true 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /Sonar/Assets.xcassets/Registration_status_failure.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "filename" : "Circle.pdf", 5 | "idiom" : "universal" 6 | } 7 | ], 8 | "info" : { 9 | "author" : "xcode", 10 | "version" : 1 11 | }, 12 | "properties" : { 13 | "preserves-vector-representation" : true 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /Reporting/Sources/Reporting/ReportModel/ReportSection.swift: -------------------------------------------------------------------------------- 1 | import Foundation 2 | 3 | struct ReportSection: ReportContent { 4 | var title: String 5 | var content: ReportContent 6 | 7 | var markdownBody: String { 8 | return """ 9 | ### \(title) 10 | 11 | \(content.markdownBody) 12 | """ 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /Sonar/Assets.xcassets/Workplace_Guidance.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "filename" : "Workplace_Guidance.pdf", 5 | "idiom" : "universal" 6 | } 7 | ], 8 | "info" : { 9 | "author" : "xcode", 10 | "version" : 1 11 | }, 12 | "properties" : { 13 | "preserves-vector-representation" : true 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /Frameworks/FirebaseInstanceID.framework/Modules/module.modulemap: -------------------------------------------------------------------------------- 1 | framework module FirebaseInstanceID { 2 | umbrella header "FirebaseInstanceID.h" 3 | export * 4 | module * { export * } 5 | link framework "CoreTelephony" 6 | link framework "Foundation" 7 | link framework "Security" 8 | link framework "SystemConfiguration" 9 | link framework "UIKit" 10 | link "z" 11 | } 12 | -------------------------------------------------------------------------------- /Frameworks/FirebaseInstallations.framework/Modules/module.modulemap: -------------------------------------------------------------------------------- 1 | framework module FirebaseInstallations { 2 | umbrella header "FirebaseInstallations.h" 3 | export * 4 | module * { export * } 5 | link framework "CoreTelephony" 6 | link framework "Foundation" 7 | link framework "Security" 8 | link framework "SystemConfiguration" 9 | link framework "UIKit" 10 | link "z" 11 | } 12 | -------------------------------------------------------------------------------- /Frameworks/FirebaseMessaging.framework/Modules/module.modulemap: -------------------------------------------------------------------------------- 1 | framework module FirebaseMessaging { 2 | umbrella header "FirebaseMessaging.h" 3 | export * 4 | module * { export * } 5 | link framework "CoreTelephony" 6 | link framework "Foundation" 7 | link framework "Security" 8 | link framework "SystemConfiguration" 9 | link framework "UIKit" 10 | link "sqlite3" 11 | link "z" 12 | } 13 | -------------------------------------------------------------------------------- /Reporting/Sources/Reporting/Artefact/Decoded.swift: -------------------------------------------------------------------------------- 1 | import Foundation 2 | 3 | enum Decoded: Decodable { 4 | case some(Wrapped) 5 | case error(Error) 6 | 7 | init(from decoder: Decoder) throws { 8 | do { 9 | self = .some(try Wrapped(from: decoder)) 10 | } catch { 11 | self = .error(error) 12 | } 13 | } 14 | 15 | } 16 | -------------------------------------------------------------------------------- /Sonar/Assets.xcassets/NHS-Logo-Template.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "filename" : "LogoTemplate.pdf", 5 | "idiom" : "universal" 6 | } 7 | ], 8 | "info" : { 9 | "author" : "xcode", 10 | "version" : 1 11 | }, 12 | "properties" : { 13 | "preserves-vector-representation" : true, 14 | "template-rendering-intent" : "template" 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /bin/trigger-deploys: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | 3 | set -euo pipefail 4 | 5 | DATA=$(cat < 2 | 3 | 4 | 5 | FILEHEADER 6 | 7 | // ___FILENAME___ 8 | // ___PACKAGENAME___ 9 | // 10 | // Created by NHSX. 11 | // ___COPYRIGHT___ 12 | // 13 | 14 | 15 | -------------------------------------------------------------------------------- /Reporting/Package.resolved: -------------------------------------------------------------------------------- 1 | { 2 | "object": { 3 | "pins": [ 4 | { 5 | "package": "swift-argument-parser", 6 | "repositoryURL": "https://github.com/apple/swift-argument-parser", 7 | "state": { 8 | "branch": null, 9 | "revision": "8d31a0905c346a45c87773ad50862b5b3df8dff6", 10 | "version": "0.0.4" 11 | } 12 | } 13 | ] 14 | }, 15 | "version": 1 16 | } 17 | -------------------------------------------------------------------------------- /bin/setup-match: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | 3 | set -euo pipefail 4 | 5 | echo "$MATCH" | base64 -d | tar xvz 6 | 7 | uuidgen > ci/match/gen # A file that is guaranteed to exist, so commit is not empty if repo exists. 8 | 9 | ( 10 | cd ci/match; 11 | git init; 12 | git add certs profiles gen; 13 | git commit --message="[fastlane] Updated appstore and platform ios" --author="GitHub Actions " 14 | ) 15 | -------------------------------------------------------------------------------- /Configurations/Debug.xcconfig: -------------------------------------------------------------------------------- 1 | 2 | #include "Project.xcconfig" 3 | 4 | ONLY_ACTIVE_ARCH = YES 5 | ENABLE_TESTABILITY = YES 6 | DEBUG_INFORMATION_FORMAT = dwarf 7 | SWIFT_OPTIMIZATION_LEVEL = -Onone 8 | SWIFT_ACTIVE_COMPILATION_CONDITIONS = DEBUG 9 | 10 | // Other configs: 11 | 12 | MTL_ENABLE_DEBUG_INFO = INCLUDE_SOURCE 13 | GCC_PREPROCESSOR_DEFINITIONS = DEBUG=1 $(inherited) 14 | GCC_DYNAMIC_NO_PIC = NO 15 | GCC_OPTIMIZATION_LEVEL = 0 16 | -------------------------------------------------------------------------------- /.github/workflows/clean-artifacts.yml: -------------------------------------------------------------------------------- 1 | name: clean-artifacts 2 | 3 | on: 4 | schedule: 5 | - cron: 0 0 * * * 6 | 7 | jobs: 8 | clean-artifacts: 9 | runs-on: 10 | - macos-10.15 11 | timeout-minutes: 10 12 | steps: 13 | - name: Remove old artifacts 14 | uses: c-hive/gha-remove-artifacts@24dc233 # v1.2.0 15 | with: 16 | age: 7 days 17 | skip-tags: true 18 | continue-on-error: true 19 | -------------------------------------------------------------------------------- /Sonar/Assets.xcassets/Notice badge.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "filename" : "Notice badge.pdf", 5 | "idiom" : "universal", 6 | "scale" : "1x" 7 | }, 8 | { 9 | "idiom" : "universal", 10 | "scale" : "2x" 11 | }, 12 | { 13 | "idiom" : "universal", 14 | "scale" : "3x" 15 | } 16 | ], 17 | "info" : { 18 | "author" : "xcode", 19 | "version" : 1 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /Sonar/Assets.xcassets/Error Grey.colorset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "colors" : [ 3 | { 4 | "color" : { 5 | "color-space" : "srgb", 6 | "components" : { 7 | "alpha" : "1.000", 8 | "blue" : "48", 9 | "green" : "43", 10 | "red" : "37" 11 | } 12 | }, 13 | "idiom" : "universal" 14 | } 15 | ], 16 | "info" : { 17 | "author" : "xcode", 18 | "version" : 1 19 | } 20 | } 21 | -------------------------------------------------------------------------------- /Sonar/NHS Colors.xcassets/NHS Button.colorset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "info" : { 3 | "version" : 1, 4 | "author" : "xcode" 5 | }, 6 | "colors" : [ 7 | { 8 | "idiom" : "universal", 9 | "color" : { 10 | "color-space" : "srgb", 11 | "components" : { 12 | "red" : "0x00", 13 | "alpha" : "1.000", 14 | "blue" : "0x3B", 15 | "green" : "0x7F" 16 | } 17 | } 18 | } 19 | ] 20 | } -------------------------------------------------------------------------------- /Sonar/NHS Colors.xcassets/NHS Dark Pink.colorset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "info" : { 3 | "version" : 1, 4 | "author" : "xcode" 5 | }, 6 | "colors" : [ 7 | { 8 | "idiom" : "universal", 9 | "color" : { 10 | "color-space" : "srgb", 11 | "components" : { 12 | "red" : "0x7C", 13 | "alpha" : "1.000", 14 | "blue" : "0x55", 15 | "green" : "0x28" 16 | } 17 | } 18 | } 19 | ] 20 | } -------------------------------------------------------------------------------- /Sonar/NHS Colors.xcassets/NHS Error.colorset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "info" : { 3 | "version" : 1, 4 | "author" : "xcode" 5 | }, 6 | "colors" : [ 7 | { 8 | "idiom" : "universal", 9 | "color" : { 10 | "color-space" : "srgb", 11 | "components" : { 12 | "red" : "0xD5", 13 | "alpha" : "1.000", 14 | "blue" : "0x1B", 15 | "green" : "0x28" 16 | } 17 | } 18 | } 19 | ] 20 | } -------------------------------------------------------------------------------- /Sonar/NHS Colors.xcassets/NHS Green.colorset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "info" : { 3 | "version" : 1, 4 | "author" : "xcode" 5 | }, 6 | "colors" : [ 7 | { 8 | "idiom" : "universal", 9 | "color" : { 10 | "color-space" : "srgb", 11 | "components" : { 12 | "red" : "0x00", 13 | "alpha" : "1.000", 14 | "blue" : "0x3B", 15 | "green" : "0x7F" 16 | } 17 | } 18 | } 19 | ] 20 | } -------------------------------------------------------------------------------- /Sonar/NHS Colors.xcassets/NHS Grey 1.colorset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "info" : { 3 | "version" : 1, 4 | "author" : "xcode" 5 | }, 6 | "colors" : [ 7 | { 8 | "idiom" : "universal", 9 | "color" : { 10 | "color-space" : "srgb", 11 | "components" : { 12 | "red" : "0x4C", 13 | "alpha" : "1.000", 14 | "blue" : "0x72", 15 | "green" : "0x62" 16 | } 17 | } 18 | } 19 | ] 20 | } -------------------------------------------------------------------------------- /Sonar/NHS Colors.xcassets/NHS Grey 2.colorset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "info" : { 3 | "version" : 1, 4 | "author" : "xcode" 5 | }, 6 | "colors" : [ 7 | { 8 | "idiom" : "universal", 9 | "color" : { 10 | "color-space" : "srgb", 11 | "components" : { 12 | "red" : "0x76", 13 | "alpha" : "1.000", 14 | "blue" : "0x92", 15 | "green" : "0x86" 16 | } 17 | } 18 | } 19 | ] 20 | } -------------------------------------------------------------------------------- /Sonar/NHS Colors.xcassets/NHS Grey 3.colorset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "info" : { 3 | "version" : 1, 4 | "author" : "xcode" 5 | }, 6 | "colors" : [ 7 | { 8 | "idiom" : "universal", 9 | "color" : { 10 | "color-space" : "srgb", 11 | "components" : { 12 | "red" : "0xAE", 13 | "alpha" : "1.000", 14 | "blue" : "0xBD", 15 | "green" : "0xB7" 16 | } 17 | } 18 | } 19 | ] 20 | } -------------------------------------------------------------------------------- /Sonar/NHS Colors.xcassets/NHS Purple.colorset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "info" : { 3 | "version" : 1, 4 | "author" : "xcode" 5 | }, 6 | "colors" : [ 7 | { 8 | "idiom" : "universal", 9 | "color" : { 10 | "color-space" : "srgb", 11 | "components" : { 12 | "red" : "0x33", 13 | "alpha" : "1.000", 14 | "blue" : "0x72", 15 | "green" : "0x00" 16 | } 17 | } 18 | } 19 | ] 20 | } -------------------------------------------------------------------------------- /Sonar/NHS Colors.xcassets/NHS Red.colorset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "colors" : [ 3 | { 4 | "color" : { 5 | "color-space" : "srgb", 6 | "components" : { 7 | "alpha" : "1.000", 8 | "blue" : "0x1B", 9 | "green" : "0x28", 10 | "red" : "0xD5" 11 | } 12 | }, 13 | "idiom" : "universal" 14 | } 15 | ], 16 | "info" : { 17 | "author" : "xcode", 18 | "version" : 1 19 | } 20 | } 21 | -------------------------------------------------------------------------------- /Sonar/NHS Colors.xcassets/NHS White.colorset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "info" : { 3 | "version" : 1, 4 | "author" : "xcode" 5 | }, 6 | "colors" : [ 7 | { 8 | "idiom" : "universal", 9 | "color" : { 10 | "color-space" : "srgb", 11 | "components" : { 12 | "red" : "0xFF", 13 | "alpha" : "1.000", 14 | "blue" : "0xFF", 15 | "green" : "0xFF" 16 | } 17 | } 18 | } 19 | ] 20 | } -------------------------------------------------------------------------------- /Sonar/NHS Colors.xcassets/NHS Yellow.colorset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "info" : { 3 | "version" : 1, 4 | "author" : "xcode" 5 | }, 6 | "colors" : [ 7 | { 8 | "idiom" : "universal", 9 | "color" : { 10 | "color-space" : "srgb", 11 | "components" : { 12 | "red" : "0xFF", 13 | "alpha" : "1.000", 14 | "blue" : "0x3B", 15 | "green" : "0xEB" 16 | } 17 | } 18 | } 19 | ] 20 | } -------------------------------------------------------------------------------- /Sonar/NHS Colors.xcassets/NHS Blue.colorset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "colors" : [ 3 | { 4 | "color" : { 5 | "color-space" : "srgb", 6 | "components" : { 7 | "alpha" : "1.000", 8 | "blue" : "0xB8", 9 | "green" : "0x5E", 10 | "red" : "0x00" 11 | } 12 | }, 13 | "idiom" : "universal" 14 | } 15 | ], 16 | "info" : { 17 | "author" : "xcode", 18 | "version" : 1 19 | } 20 | } 21 | -------------------------------------------------------------------------------- /Sonar/NHS Colors.xcassets/NHS Grey 4.colorset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "colors" : [ 3 | { 4 | "color" : { 5 | "color-space" : "srgb", 6 | "components" : { 7 | "alpha" : "1.000", 8 | "blue" : "0xE0", 9 | "green" : "0xDD", 10 | "red" : "0xD8" 11 | } 12 | }, 13 | "idiom" : "universal" 14 | } 15 | ], 16 | "info" : { 17 | "author" : "xcode", 18 | "version" : 1 19 | } 20 | } 21 | -------------------------------------------------------------------------------- /Sonar/NHS Colors.xcassets/NHS Grey 5.colorset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "colors" : [ 3 | { 4 | "color" : { 5 | "color-space" : "srgb", 6 | "components" : { 7 | "alpha" : "1.000", 8 | "blue" : "0xF5", 9 | "green" : "0xF4", 10 | "red" : "0xF0" 11 | } 12 | }, 13 | "idiom" : "universal" 14 | } 15 | ], 16 | "info" : { 17 | "author" : "xcode", 18 | "version" : 1 19 | } 20 | } 21 | -------------------------------------------------------------------------------- /Sonar/NHS Colors.xcassets/NHS Link.colorset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "colors" : [ 3 | { 4 | "color" : { 5 | "color-space" : "srgb", 6 | "components" : { 7 | "alpha" : "1.000", 8 | "blue" : "0xB8", 9 | "green" : "0x5E", 10 | "red" : "0x00" 11 | } 12 | }, 13 | "idiom" : "universal" 14 | } 15 | ], 16 | "info" : { 17 | "author" : "xcode", 18 | "version" : 1 19 | } 20 | } 21 | -------------------------------------------------------------------------------- /Sonar/NHS Colors.xcassets/NHS Pale Yellow.colorset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "info" : { 3 | "version" : 1, 4 | "author" : "xcode" 5 | }, 6 | "colors" : [ 7 | { 8 | "idiom" : "universal", 9 | "color" : { 10 | "color-space" : "srgb", 11 | "components" : { 12 | "red" : "0xFF", 13 | "alpha" : "1.000", 14 | "blue" : "0xC4", 15 | "green" : "0xF9" 16 | } 17 | } 18 | } 19 | ] 20 | } -------------------------------------------------------------------------------- /Sonar/NHS Colors.xcassets/NHS Text.colorset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "colors" : [ 3 | { 4 | "color" : { 5 | "color-space" : "srgb", 6 | "components" : { 7 | "alpha" : "1.000", 8 | "blue" : "0.196", 9 | "green" : "0.169", 10 | "red" : "0.129" 11 | } 12 | }, 13 | "idiom" : "universal" 14 | } 15 | ], 16 | "info" : { 17 | "author" : "xcode", 18 | "version" : 1 19 | } 20 | } 21 | -------------------------------------------------------------------------------- /Sonar/NHS Colors.xcassets/NHS Warm Yellow.colorset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "info" : { 3 | "version" : 1, 4 | "author" : "xcode" 5 | }, 6 | "colors" : [ 7 | { 8 | "idiom" : "universal", 9 | "color" : { 10 | "color-space" : "srgb", 11 | "components" : { 12 | "red" : "0xFF", 13 | "alpha" : "1.000", 14 | "blue" : "0x1C", 15 | "green" : "0xB8" 16 | } 17 | } 18 | } 19 | ] 20 | } -------------------------------------------------------------------------------- /Sonar/NHS Colors.xcassets/NHS Dark Blue.colorset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "colors" : [ 3 | { 4 | "color" : { 5 | "color-space" : "srgb", 6 | "components" : { 7 | "alpha" : "1.000", 8 | "blue" : "0xB2", 9 | "green" : "0x5F", 10 | "red" : "0x23" 11 | } 12 | }, 13 | "idiom" : "universal" 14 | } 15 | ], 16 | "info" : { 17 | "author" : "xcode", 18 | "version" : 1 19 | } 20 | } 21 | -------------------------------------------------------------------------------- /Sonar/NHS Colors.xcassets/NHS Highlight.colorset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "colors" : [ 3 | { 4 | "color" : { 5 | "color-space" : "srgb", 6 | "components" : { 7 | "alpha" : "1.000", 8 | "blue" : "0.722", 9 | "green" : "0.369", 10 | "red" : "0.000" 11 | } 12 | }, 13 | "idiom" : "universal" 14 | } 15 | ], 16 | "info" : { 17 | "author" : "xcode", 18 | "version" : 1 19 | } 20 | } 21 | -------------------------------------------------------------------------------- /Sonar/NHS Colors.xcassets/NHS Secondary Button.colorset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "info" : { 3 | "version" : 1, 4 | "author" : "xcode" 5 | }, 6 | "colors" : [ 7 | { 8 | "idiom" : "universal", 9 | "color" : { 10 | "color-space" : "srgb", 11 | "components" : { 12 | "red" : "0x4C", 13 | "alpha" : "1.000", 14 | "blue" : "0x72", 15 | "green" : "0x62" 16 | } 17 | } 18 | } 19 | ] 20 | } -------------------------------------------------------------------------------- /Sonar/NHS Colors.xcassets/NHS Secondary Text.colorset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "colors" : [ 3 | { 4 | "color" : { 5 | "color-space" : "srgb", 6 | "components" : { 7 | "alpha" : "1.000", 8 | "blue" : "114", 9 | "green" : "98", 10 | "red" : "76" 11 | } 12 | }, 13 | "idiom" : "universal" 14 | } 15 | ], 16 | "info" : { 17 | "author" : "xcode", 18 | "version" : 1 19 | } 20 | } 21 | -------------------------------------------------------------------------------- /Sonar/NHS Colors.xcassets/NHS Error Background.colorset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "colors" : [ 3 | { 4 | "color" : { 5 | "color-space" : "srgb", 6 | "components" : { 7 | "alpha" : "1.000", 8 | "blue" : "0xF4", 9 | "green" : "0xF4", 10 | "red" : "0xFD" 11 | } 12 | }, 13 | "idiom" : "universal" 14 | } 15 | ], 16 | "info" : { 17 | "author" : "xcode", 18 | "version" : 1 19 | } 20 | } 21 | -------------------------------------------------------------------------------- /Sonar/Assets.xcassets/NHSLogoAlt.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "filename" : "NHS1.png", 5 | "idiom" : "universal", 6 | "scale" : "1x" 7 | }, 8 | { 9 | "filename" : "NHS1@2x.png", 10 | "idiom" : "universal", 11 | "scale" : "2x" 12 | }, 13 | { 14 | "idiom" : "universal", 15 | "scale" : "3x" 16 | } 17 | ], 18 | "info" : { 19 | "author" : "xcode", 20 | "version" : 1 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /Sonar/Assets.xcassets/Onboarding_area.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "filename" : "Area@1x.png", 5 | "idiom" : "universal", 6 | "scale" : "1x" 7 | }, 8 | { 9 | "filename" : "Area@2x.png", 10 | "idiom" : "universal", 11 | "scale" : "2x" 12 | }, 13 | { 14 | "idiom" : "universal", 15 | "scale" : "3x" 16 | } 17 | ], 18 | "info" : { 19 | "author" : "xcode", 20 | "version" : 1 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /Sonar/Assets.xcassets/Linking_ID.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "filename" : "Linking_Id_1x.png", 5 | "idiom" : "universal", 6 | "scale" : "1x" 7 | }, 8 | { 9 | "filename" : "Linking_Id_2x.png", 10 | "idiom" : "universal", 11 | "scale" : "2x" 12 | }, 13 | { 14 | "idiom" : "universal", 15 | "scale" : "3x" 16 | } 17 | ], 18 | "info" : { 19 | "author" : "xcode", 20 | "version" : 1 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /Sonar/Assets.xcassets/Onboarding_protect.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "filename" : "Protect@1x.png", 5 | "idiom" : "universal", 6 | "scale" : "1x" 7 | }, 8 | { 9 | "filename" : "Protect@2x.png", 10 | "idiom" : "universal", 11 | "scale" : "2x" 12 | }, 13 | { 14 | "idiom" : "universal", 15 | "scale" : "3x" 16 | } 17 | ], 18 | "info" : { 19 | "author" : "xcode", 20 | "version" : 1 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /Sonar/Assets.xcassets/Onboarding_bluetooth.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "filename" : "Bluetooth@1x.png", 5 | "idiom" : "universal", 6 | "scale" : "1x" 7 | }, 8 | { 9 | "filename" : "Bluetooth@2x.png", 10 | "idiom" : "universal", 11 | "scale" : "2x" 12 | }, 13 | { 14 | "idiom" : "universal", 15 | "scale" : "3x" 16 | } 17 | ], 18 | "info" : { 19 | "author" : "xcode", 20 | "version" : 1 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /Frameworks/FirebaseCoreDiagnostics.framework/Headers/FirebaseCoreDiagnostics-umbrella.h: -------------------------------------------------------------------------------- 1 | #ifdef __OBJC__ 2 | #import 3 | #else 4 | #ifndef FOUNDATION_EXPORT 5 | #if defined(__cplusplus) 6 | #define FOUNDATION_EXPORT extern "C" 7 | #else 8 | #define FOUNDATION_EXPORT extern 9 | #endif 10 | #endif 11 | #endif 12 | 13 | #import "firebasecore.nanopb.h" 14 | 15 | FOUNDATION_EXPORT double FirebaseCoreDiagnosticsVersionNumber; 16 | FOUNDATION_EXPORT const unsigned char FirebaseCoreDiagnosticsVersionString[]; 17 | 18 | -------------------------------------------------------------------------------- /Sonar/Assets.xcassets/NHSLogo.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "filename" : "nhs 1.png", 5 | "idiom" : "universal", 6 | "scale" : "1x" 7 | }, 8 | { 9 | "filename" : "nhs 1@2x.png", 10 | "idiom" : "universal", 11 | "scale" : "2x" 12 | }, 13 | { 14 | "filename" : "nhs 1@3x.png", 15 | "idiom" : "universal", 16 | "scale" : "3x" 17 | } 18 | ], 19 | "info" : { 20 | "author" : "xcode", 21 | "version" : 1 22 | } 23 | } 24 | -------------------------------------------------------------------------------- /.github/workflows/remove-tag.yml: -------------------------------------------------------------------------------- 1 | name: Remove Tag 2 | 3 | on: 4 | repository_dispatch: 5 | types: [remove-tag] 6 | 7 | jobs: 8 | 9 | publish: 10 | runs-on: 11 | - linux 12 | - aws 13 | 14 | steps: 15 | - name: Remove tag in pact broker 16 | id: removetag 17 | run: curl -v -XDELETE https://sonar-pact-broker-app.apps.nonprod.aws.cp.data.england.nhs.uk/pacticipants/iOS%20App/versions/${{ github.event.client_payload.version }}/tags/${{ github.event.client_payload.tag }} 18 | 19 | -------------------------------------------------------------------------------- /Sonar/Assets.xcassets/bluetooth.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "filename" : "Vector.png", 5 | "idiom" : "universal", 6 | "scale" : "1x" 7 | }, 8 | { 9 | "filename" : "Vector@2x.png", 10 | "idiom" : "universal", 11 | "scale" : "2x" 12 | }, 13 | { 14 | "filename" : "Vector@3x.png", 15 | "idiom" : "universal", 16 | "scale" : "3x" 17 | } 18 | ], 19 | "info" : { 20 | "author" : "xcode", 21 | "version" : 1 22 | } 23 | } 24 | -------------------------------------------------------------------------------- /Frameworks/FirebaseInstanceID.framework/Headers/FirebaseInstanceID-umbrella.h: -------------------------------------------------------------------------------- 1 | #ifdef __OBJC__ 2 | #import 3 | #else 4 | #ifndef FOUNDATION_EXPORT 5 | #if defined(__cplusplus) 6 | #define FOUNDATION_EXPORT extern "C" 7 | #else 8 | #define FOUNDATION_EXPORT extern 9 | #endif 10 | #endif 11 | #endif 12 | 13 | #import "FirebaseInstanceID.h" 14 | #import "FIRInstanceID.h" 15 | 16 | FOUNDATION_EXPORT double FirebaseInstanceIDVersionNumber; 17 | FOUNDATION_EXPORT const unsigned char FirebaseInstanceIDVersionString[]; 18 | 19 | -------------------------------------------------------------------------------- /Sonar/Environments/environment.json: -------------------------------------------------------------------------------- 1 | { 2 | "api_endpoint": "https://localhost:1234", 3 | "app_center_key": "an-api-key", 4 | "sonar_header_value": "a-header-value", 5 | "sonar_service_uuid": "an-uuid", 6 | "sonar_id_characteristic_uuid": "another-uuid", 7 | "sonar_keepalive_characteristic_uuid": "yet-another-uuid", 8 | "debug": { 9 | "registration_id": "an-uuid", 10 | "registration_secret_key": "a-base46-secret-key", 11 | "registration_broadcast_rotation_key": "a-base64-broadcast-rotation-key" 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /Frameworks/GoogleUtilities.framework/Headers/GoogleUtilities-umbrella.h: -------------------------------------------------------------------------------- 1 | #ifdef __OBJC__ 2 | #import 3 | #else 4 | #ifndef FOUNDATION_EXPORT 5 | #if defined(__cplusplus) 6 | #define FOUNDATION_EXPORT extern "C" 7 | #else 8 | #define FOUNDATION_EXPORT extern 9 | #endif 10 | #endif 11 | #endif 12 | 13 | #import "GULLoggerLevel.h" 14 | #import "GULLoggerCodes.h" 15 | #import "GULNSData+zlib.h" 16 | 17 | FOUNDATION_EXPORT double GoogleUtilitiesVersionNumber; 18 | FOUNDATION_EXPORT const unsigned char GoogleUtilitiesVersionString[]; 19 | 20 | -------------------------------------------------------------------------------- /Sonar/Assets.xcassets/splash_logo.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "filename" : "Launch-Screen-Logo@1x.png", 5 | "idiom" : "universal", 6 | "scale" : "1x" 7 | }, 8 | { 9 | "filename" : "Launch-Screen-Logo@2x.png", 10 | "idiom" : "universal", 11 | "scale" : "2x" 12 | }, 13 | { 14 | "filename" : "Launch-Screen-Logo@3x.png", 15 | "idiom" : "universal", 16 | "scale" : "3x" 17 | } 18 | ], 19 | "info" : { 20 | "author" : "xcode", 21 | "version" : 1 22 | } 23 | } 24 | -------------------------------------------------------------------------------- /Frameworks/FirebaseMessaging.framework/Headers/FirebaseMessaging-umbrella.h: -------------------------------------------------------------------------------- 1 | #ifdef __OBJC__ 2 | #import 3 | #else 4 | #ifndef FOUNDATION_EXPORT 5 | #if defined(__cplusplus) 6 | #define FOUNDATION_EXPORT extern "C" 7 | #else 8 | #define FOUNDATION_EXPORT extern 9 | #endif 10 | #endif 11 | #endif 12 | 13 | #import "FirebaseMessaging.h" 14 | #import "FIRMessaging.h" 15 | #import "FIRMessagingExtensionHelper.h" 16 | 17 | FOUNDATION_EXPORT double FirebaseMessagingVersionNumber; 18 | FOUNDATION_EXPORT const unsigned char FirebaseMessagingVersionString[]; 19 | 20 | -------------------------------------------------------------------------------- /Sonar/Assets.xcassets/Controls_RadioButton_Selected.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "filename" : "radio_button_checked_24px.pdf", 5 | "idiom" : "universal" 6 | }, 7 | { 8 | "appearances" : [ 9 | { 10 | "appearance" : "luminosity", 11 | "value" : "dark" 12 | } 13 | ], 14 | "idiom" : "universal" 15 | } 16 | ], 17 | "info" : { 18 | "author" : "xcode", 19 | "version" : 1 20 | }, 21 | "properties" : { 22 | "preserves-vector-representation" : true 23 | } 24 | } 25 | -------------------------------------------------------------------------------- /Sonar/Assets.xcassets/Controls_RadioButton_Unselected.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "filename" : "radio_button_unchecked_24px.pdf", 5 | "idiom" : "universal" 6 | }, 7 | { 8 | "appearances" : [ 9 | { 10 | "appearance" : "luminosity", 11 | "value" : "dark" 12 | } 13 | ], 14 | "idiom" : "universal" 15 | } 16 | ], 17 | "info" : { 18 | "author" : "xcode", 19 | "version" : 1 20 | }, 21 | "properties" : { 22 | "preserves-vector-representation" : true 23 | } 24 | } 25 | -------------------------------------------------------------------------------- /Frameworks/FirebaseCore.framework/Headers/FirebaseCore-umbrella.h: -------------------------------------------------------------------------------- 1 | #ifdef __OBJC__ 2 | #import 3 | #else 4 | #ifndef FOUNDATION_EXPORT 5 | #if defined(__cplusplus) 6 | #define FOUNDATION_EXPORT extern "C" 7 | #else 8 | #define FOUNDATION_EXPORT extern 9 | #endif 10 | #endif 11 | #endif 12 | 13 | #import "FIRApp.h" 14 | #import "FIRConfiguration.h" 15 | #import "FirebaseCore.h" 16 | #import "FIRLoggerLevel.h" 17 | #import "FIROptions.h" 18 | 19 | FOUNDATION_EXPORT double FirebaseCoreVersionNumber; 20 | FOUNDATION_EXPORT const unsigned char FirebaseCoreVersionString[]; 21 | 22 | -------------------------------------------------------------------------------- /bin/create-deployment: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | 3 | set -euo pipefail 4 | 5 | DATA=$(cat < Never { 5 | ReportCommand.main() 6 | } 7 | 8 | struct ReportCommand: ParsableCommand { 9 | static var configuration = CommandConfiguration( 10 | commandName: "report", 11 | abstract: "A tool for producing reports from iOS app bundles.", 12 | subcommands: [ 13 | ArchiveReportCommand.self, 14 | IPAReportCommand.self, 15 | ProjectReportCommand.self, 16 | ] 17 | ) 18 | 19 | func run() throws { 20 | print("running") 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /Frameworks/nanopb.framework/Headers/nanopb-umbrella.h: -------------------------------------------------------------------------------- 1 | #ifdef __OBJC__ 2 | #import 3 | #else 4 | #ifndef FOUNDATION_EXPORT 5 | #if defined(__cplusplus) 6 | #define FOUNDATION_EXPORT extern "C" 7 | #else 8 | #define FOUNDATION_EXPORT extern 9 | #endif 10 | #endif 11 | #endif 12 | 13 | #import "pb.h" 14 | #import "pb_common.h" 15 | #import "pb_decode.h" 16 | #import "pb_encode.h" 17 | #import "pb.h" 18 | #import "pb_decode.h" 19 | #import "pb_common.h" 20 | #import "pb.h" 21 | #import "pb_encode.h" 22 | #import "pb_common.h" 23 | 24 | FOUNDATION_EXPORT double nanopbVersionNumber; 25 | FOUNDATION_EXPORT const unsigned char nanopbVersionString[]; 26 | 27 | -------------------------------------------------------------------------------- /Frameworks/FirebaseInstallations.framework/Headers/FirebaseInstallations-umbrella.h: -------------------------------------------------------------------------------- 1 | #ifdef __OBJC__ 2 | #import 3 | #else 4 | #ifndef FOUNDATION_EXPORT 5 | #if defined(__cplusplus) 6 | #define FOUNDATION_EXPORT extern "C" 7 | #else 8 | #define FOUNDATION_EXPORT extern 9 | #endif 10 | #endif 11 | #endif 12 | 13 | #import "FirebaseInstallations.h" 14 | #import "FIRInstallations.h" 15 | #import "FIRInstallationsAuthTokenResult.h" 16 | #import "FIRInstallationsErrors.h" 17 | #import "FIRInstallationsVersion.h" 18 | 19 | FOUNDATION_EXPORT double FirebaseInstallationsVersionNumber; 20 | FOUNDATION_EXPORT const unsigned char FirebaseInstallationsVersionString[]; 21 | 22 | -------------------------------------------------------------------------------- /Sonar/Base.xcconfig: -------------------------------------------------------------------------------- 1 | DISPLAY_NAME = NHS COVID-19 2 | PRODUCT_BUNDLE_IDENTIFIER = uk.nhs.nhsx.beta.Sonar 3 | INFOPLIST_FILE = Sonar/Info.plist 4 | CODE_SIGN_ENTITLEMENTS = Sonar/Sonar.entitlements 5 | ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon 6 | SWIFT_OBJC_BRIDGING_HEADER = Sonar/Sonar-Bridging-Header.h 7 | 8 | CODE_SIGN_IDENTITY = Apple Development 9 | CODE_SIGN_STYLE = Automatic 10 | 11 | OTHER_LDFLAGS = -ObjC -all_load 12 | LD_RUNPATH_SEARCH_PATHS = $(inherited) @executable_path/Frameworks 13 | PRODUCT_NAME = $(TARGET_NAME) 14 | FRAMEWORK_SEARCH_PATHS = $(inherited) $(PROJECT_DIR)/Frameworks 15 | HEADER_SEARCH_PATHS = $PROJECT_DIR/Frameworks 16 | CLANG_ENABLE_MODULES = YES 17 | -------------------------------------------------------------------------------- /bin/trigger-generate-release-note: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | 3 | set -euo pipefail 4 | 5 | DATA=$(cat < 2 | 3 | 4 | 5 | CFBundleExecutable 6 | nanopb 7 | CFBundleIdentifier 8 | com.firebase.Firebase 9 | CFBundleInfoDictionaryVersion 10 | 6.0 11 | CFBundleName 12 | nanopb 13 | CFBundlePackageType 14 | FMWK 15 | CFBundleVersion 16 | 1 17 | DTSDKName 18 | iphonesimulator11.2 19 | 20 | 21 | -------------------------------------------------------------------------------- /Frameworks/Firebase.framework/Info.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | CFBundleExecutable 6 | Firebase 7 | CFBundleIdentifier 8 | com.firebase.Firebase 9 | CFBundleInfoDictionaryVersion 10 | 6.0 11 | CFBundleName 12 | Firebase 13 | CFBundlePackageType 14 | FMWK 15 | CFBundleVersion 16 | 1 17 | DTSDKName 18 | iphonesimulator11.2 19 | 20 | 21 | -------------------------------------------------------------------------------- /Frameworks/Protobuf.framework/Info.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | CFBundleExecutable 6 | Protobuf 7 | CFBundleIdentifier 8 | com.firebase.Firebase 9 | CFBundleInfoDictionaryVersion 10 | 6.0 11 | CFBundleName 12 | Protobuf 13 | CFBundlePackageType 14 | FMWK 15 | CFBundleVersion 16 | 1 17 | DTSDKName 18 | iphonesimulator11.2 19 | 20 | 21 | -------------------------------------------------------------------------------- /Frameworks/FirebaseCore.framework/Info.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | CFBundleExecutable 6 | FirebaseCore 7 | CFBundleIdentifier 8 | com.firebase.Firebase 9 | CFBundleInfoDictionaryVersion 10 | 6.0 11 | CFBundleName 12 | FirebaseCore 13 | CFBundlePackageType 14 | FMWK 15 | CFBundleVersion 16 | 1 17 | DTSDKName 18 | iphonesimulator11.2 19 | 20 | 21 | -------------------------------------------------------------------------------- /Frameworks/PromisesObjC.framework/Info.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | CFBundleExecutable 6 | PromisesObjC 7 | CFBundleIdentifier 8 | com.firebase.Firebase 9 | CFBundleInfoDictionaryVersion 10 | 6.0 11 | CFBundleName 12 | PromisesObjC 13 | CFBundlePackageType 14 | FMWK 15 | CFBundleVersion 16 | 1 17 | DTSDKName 18 | iphonesimulator11.2 19 | 20 | 21 | -------------------------------------------------------------------------------- /Frameworks/GoogleUtilities.framework/Info.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | CFBundleExecutable 6 | GoogleUtilities 7 | CFBundleIdentifier 8 | com.firebase.Firebase 9 | CFBundleInfoDictionaryVersion 10 | 6.0 11 | CFBundleName 12 | GoogleUtilities 13 | CFBundlePackageType 14 | FMWK 15 | CFBundleVersion 16 | 1 17 | DTSDKName 18 | iphonesimulator11.2 19 | 20 | 21 | -------------------------------------------------------------------------------- /Frameworks/FirebaseInstanceID.framework/Info.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | CFBundleExecutable 6 | FirebaseInstanceID 7 | CFBundleIdentifier 8 | com.firebase.Firebase 9 | CFBundleInfoDictionaryVersion 10 | 6.0 11 | CFBundleName 12 | FirebaseInstanceID 13 | CFBundlePackageType 14 | FMWK 15 | CFBundleVersion 16 | 1 17 | DTSDKName 18 | iphonesimulator11.2 19 | 20 | 21 | -------------------------------------------------------------------------------- /Frameworks/FirebaseMessaging.framework/Info.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | CFBundleExecutable 6 | FirebaseMessaging 7 | CFBundleIdentifier 8 | com.firebase.Firebase 9 | CFBundleInfoDictionaryVersion 10 | 6.0 11 | CFBundleName 12 | FirebaseMessaging 13 | CFBundlePackageType 14 | FMWK 15 | CFBundleVersion 16 | 1 17 | DTSDKName 18 | iphonesimulator11.2 19 | 20 | 21 | -------------------------------------------------------------------------------- /Frameworks/FirebaseInstanceID.framework/Headers/FirebaseInstanceID.h: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2019 Google 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | 17 | #import "FIRInstanceID.h" 18 | -------------------------------------------------------------------------------- /Frameworks/GoogleDataTransport.framework/Info.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | CFBundleExecutable 6 | GoogleDataTransport 7 | CFBundleIdentifier 8 | com.firebase.Firebase 9 | CFBundleInfoDictionaryVersion 10 | 6.0 11 | CFBundleName 12 | GoogleDataTransport 13 | CFBundlePackageType 14 | FMWK 15 | CFBundleVersion 16 | 1 17 | DTSDKName 18 | iphonesimulator11.2 19 | 20 | 21 | -------------------------------------------------------------------------------- /Frameworks/FirebaseInstallations.framework/Info.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | CFBundleExecutable 6 | FirebaseInstallations 7 | CFBundleIdentifier 8 | com.firebase.Firebase 9 | CFBundleInfoDictionaryVersion 10 | 6.0 11 | CFBundleName 12 | FirebaseInstallations 13 | CFBundlePackageType 14 | FMWK 15 | CFBundleVersion 16 | 1 17 | DTSDKName 18 | iphonesimulator11.2 19 | 20 | 21 | -------------------------------------------------------------------------------- /Frameworks/FirebaseCoreDiagnostics.framework/Info.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | CFBundleExecutable 6 | FirebaseCoreDiagnostics 7 | CFBundleIdentifier 8 | com.firebase.Firebase 9 | CFBundleInfoDictionaryVersion 10 | 6.0 11 | CFBundleName 12 | FirebaseCoreDiagnostics 13 | CFBundlePackageType 14 | FMWK 15 | CFBundleVersion 16 | 1 17 | DTSDKName 18 | iphonesimulator11.2 19 | 20 | 21 | -------------------------------------------------------------------------------- /bin/is-deployed: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env ruby 2 | 3 | require "json" 4 | require "net/http" 5 | 6 | environment = ARGV.fetch(0) 7 | 8 | github_repository = ENV.fetch("GITHUB_REPOSITORY") 9 | github_token = ENV.fetch("GITHUB_TOKEN") 10 | 11 | sha = `git rev-parse HEAD` 12 | 13 | uri = URI("https://api.github.com/repos/#{github_repository}/deployments?environment=#{environment}&sha=#{sha}") 14 | headers = { 15 | "Authorization" => "Bearer #{github_token}", 16 | "Content-Type" => "application/json", 17 | } 18 | 19 | Net::HTTP.start(uri.host, uri.port, use_ssl: true) do |http| 20 | resp = http.get(uri, headers) 21 | unless Net::HTTPOK === resp 22 | $stderr.puts resp 23 | exit 0 24 | end 25 | 26 | json = JSON.parse(resp.body) 27 | exit json.empty? ? 1 : 0 28 | end 29 | -------------------------------------------------------------------------------- /Reporting/Sources/Reporting/ReportModel/ReportList.swift: -------------------------------------------------------------------------------- 1 | import Foundation 2 | 3 | struct ReportList: ReportContent { 4 | 5 | enum Kind { 6 | case ordered 7 | case unordered 8 | 9 | fileprivate var tag: String { 10 | switch self { 11 | case .ordered: 12 | return "ol" 13 | case .unordered: 14 | return "ul" 15 | } 16 | } 17 | } 18 | 19 | var kind: Kind 20 | var items: [ReportContent] 21 | 22 | var markdownBody: String { 23 | let tag = kind.tag 24 | let listItems = items.lazy.map { "
  • \($0)
  • "}.joined(separator: "") 25 | 26 | return "<\(tag)>\(listItems)" 27 | } 28 | 29 | } 30 | -------------------------------------------------------------------------------- /Frameworks/FirebaseCore.framework/Headers/FirebaseCore.h: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2017 Google 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | 17 | #import "FIRApp.h" 18 | #import "FIRConfiguration.h" 19 | #import "FIRLoggerLevel.h" 20 | #import "FIROptions.h" 21 | -------------------------------------------------------------------------------- /Frameworks/FirebaseMessaging.framework/Headers/FirebaseMessaging.h: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2017 Google 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | 17 | #import 18 | #import 19 | -------------------------------------------------------------------------------- /Frameworks/FirebaseInstallations.framework/Headers/FIRInstallationsVersion.h: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2019 Google 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | 17 | #import 18 | 19 | FOUNDATION_EXPORT const char *const FIRInstallationsVersionStr; 20 | -------------------------------------------------------------------------------- /bin/pact/stop-mock-server: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | 3 | set -eo pipefail 4 | 5 | SRCROOT=${SRCROOT:-"$(dirname "$0")/../.."} 6 | PACT_SETUP_LOG="$SRCROOT/SonarPactTests/Setup/mock-server.log" 7 | 8 | check_for_failure() { 9 | if [[ $? != 0 ]]; then 10 | echo "######################## PACT TEST TEARDOWN FAILED ########################" 11 | echo 12 | cat "$PACT_SETUP_LOG" 13 | echo 14 | echo "######################## PACT TEST TEARDOWN FAILED ########################" 15 | fi 16 | } 17 | 18 | trap "check_for_failure" EXIT 19 | 20 | if [[ -z "$(command -v pact-mock-service)" ]]; then 21 | echo "You do not have pact mock service installed. Please run bin/setup-pact." >> $PACT_SETUP_LOG 22 | exit 1 23 | fi 24 | 25 | echo "Stopping pact mock service..." 26 | pact-mock-service stop >> "$PACT_SETUP_LOG" 2>&1 27 | echo "Done." 28 | -------------------------------------------------------------------------------- /fastlane/README.md: -------------------------------------------------------------------------------- 1 | fastlane documentation 2 | ================ 3 | # Installation 4 | 5 | Make sure you have the latest version of the Xcode command line tools installed: 6 | 7 | ``` 8 | xcode-select --install 9 | ``` 10 | 11 | Install _fastlane_ using 12 | ``` 13 | [sudo] gem install fastlane -NV 14 | ``` 15 | or alternatively using `brew cask install fastlane` 16 | 17 | # Available Actions 18 | ## iOS 19 | ### ios release 20 | ``` 21 | fastlane ios release 22 | ``` 23 | Cut a release for Test Flight 24 | 25 | ---- 26 | 27 | This README.md is auto-generated and will be re-generated every time [fastlane](https://fastlane.tools) is run. 28 | More information about fastlane can be found on [fastlane.tools](https://fastlane.tools). 29 | The documentation of fastlane can be found on [docs.fastlane.tools](https://docs.fastlane.tools). 30 | -------------------------------------------------------------------------------- /Frameworks/FirebaseInstallations.framework/Headers/FirebaseInstallations.h: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2019 Google 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | 17 | #import "FIRInstallations.h" 18 | #import "FIRInstallationsAuthTokenResult.h" 19 | #import "FIRInstallationsErrors.h" 20 | #import "FIRInstallationsVersion.h" 21 | -------------------------------------------------------------------------------- /Sonar/Resources/Settings.bundle/Root.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | StringsTable 6 | Root 7 | PreferenceSpecifiers 8 | 9 | 10 | DefaultValue 11 | 0 12 | Key 13 | app_version_constant 14 | Title 15 | Version 16 | Type 17 | PSTitleValueSpecifier 18 | 19 | 20 | DefaultValue 21 | 0 22 | Key 23 | app_build_constant 24 | Title 25 | Build 26 | Type 27 | PSTitleValueSpecifier 28 | 29 | 30 | 31 | 32 | -------------------------------------------------------------------------------- /bin/pact/teardown-build-environment: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | 3 | set -eo pipefail 4 | 5 | SRCROOT=${SRCROOT:-"$(dirname "$0")/../.."} 6 | PACT_SETUP_LOG="$SRCROOT/SonarPactTests/Setup/build-environment-setup.log" 7 | 8 | check_for_failure() { 9 | if [[ $? != 0 ]]; then 10 | echo "######################## PACT TEST TEARDOWN FAILED ########################" 11 | echo 12 | cat "$PACT_SETUP_LOG" 13 | echo 14 | echo "######################## PACT TEST TEARDOWN FAILED ########################" 15 | fi 16 | } 17 | 18 | trap "check_for_failure" EXIT 19 | 20 | echo "Reinstantiating environment file after pact testing..." 21 | ENVIRONMENT_FILE_PATH="${SRCROOT}/.secret/Environment.swift" 22 | if [[ -f "$ENVIRONMENT_FILE_PATH.backup" ]]; then 23 | mv "$ENVIRONMENT_FILE_PATH.backup" "$ENVIRONMENT_FILE_PATH" >> "$PACT_SETUP_LOG" 2>&1 24 | else 25 | echo "No backup file detected at $ENVIRONMENT_FILE_PATH.backup..." 26 | fi 27 | echo "Done." 28 | -------------------------------------------------------------------------------- /.github/ISSUE_TEMPLATE/bug_report.md: -------------------------------------------------------------------------------- 1 | --- 2 | name: Bug report 3 | about: Create a report to help us improve 4 | title: '' 5 | labels: '' 6 | assignees: '' 7 | 8 | --- 9 | 10 | **Describe the bug** 11 | A clear and concise description of what the bug is. 12 | 13 | **To Reproduce** 14 | Steps to reproduce the behaviour: 15 | 1. Go to '...' 16 | 2. Click on '....' 17 | 3. Scroll down to '....' 18 | 4. See error 19 | 20 | **Expected behaviour** 21 | A clear and concise description of what you expected to happen. 22 | 23 | **Screenshots** 24 | If applicable, add screenshots to help explain your problem. 25 | 26 | **Desktop (please complete the following information):** 27 | - OS: [e.g. iOS] 28 | - Version [e.g. 22] 29 | 30 | **Smartphone (please complete the following information):** 31 | - Device: [e.g. iPhone6] 32 | - OS: [e.g. iOS8.1] 33 | - Version [e.g. 22] 34 | 35 | **Additional context** 36 | Add any other context about the problem here. 37 | -------------------------------------------------------------------------------- /Reporting/README.md: -------------------------------------------------------------------------------- 1 | # Reporting 2 | 3 | A package used for running / reporting automated tests. 4 | 5 | You can run integrity checks in different wasy 6 | 7 | ### From an archive 8 | 9 | ```bash 10 | swift run Reporter archive $ARCHIVE_PATH --output $REPORT_PATH 11 | ``` 12 | 13 | ### From an ipa 14 | 15 | ```bash 16 | swift run Reporter ipa $IPA_PATH --output $REPORT_PATH 17 | ``` 18 | 19 | ### From an Xcode project 20 | 21 | ```bash 22 | swift run Reporter project $PROJECT_PATH --scheme $SCHEME --method archive --output AppReport 23 | ``` 24 | 25 | or 26 | 27 | ```bash 28 | swift run Reporter project $PROJECT_PATH --scheme $SCHEME --method build --output AppReport 29 | ``` 30 | 31 | Using the archive method produces a more accurate result, but requires correct profiles / certificates to already be in place. 32 | 33 | ## Development 34 | 35 | Note that Xcode runs the executable in a sandbox, so even though it can *run* the executable, it may not behave as expected. 36 | -------------------------------------------------------------------------------- /bin/embed_build_info: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | 3 | INFO_PLIST="$TARGET_BUILD_DIR/$INFOPLIST_PATH" 4 | SETTINGS_PLIST="$TARGET_BUILD_DIR/$UNLOCALIZED_RESOURCES_FOLDER_PATH/Settings.bundle/Root.plist" 5 | 6 | cd $PROJECT_DIR 7 | status=$(git status --porcelain 2> /dev/null) 8 | if [[ "$status" != "" ]]; then 9 | STATUS_FLAG='-M' 10 | else 11 | STATUS_FLAG='' 12 | fi 13 | COMMIT=$(git rev-parse HEAD | cut -c 1-7) 14 | cd - 15 | 16 | VERSION_STRING=$(/usr/libexec/PlistBuddy -c "Print CFBundleShortVersionString" "$INFO_PLIST") 17 | BUILD_NUMBER=$(/usr/libexec/PlistBuddy -c "Print CFBundleVersion" "$INFO_PLIST") 18 | 19 | BUILD_STRING="$BUILD_NUMBER ($COMMIT$STATUS_FLAG)" 20 | 21 | # This is fragile since we’re relying on positions in the list. 22 | # Keeping this simple intentionally. 23 | /usr/libexec/PlistBuddy -c "Set :PreferenceSpecifiers:0:DefaultValue $VERSION_STRING" "$SETTINGS_PLIST" 24 | /usr/libexec/PlistBuddy -c "Set :PreferenceSpecifiers:1:DefaultValue $BUILD_STRING" "$SETTINGS_PLIST" 25 | -------------------------------------------------------------------------------- /Frameworks/GoogleDataTransport.framework/Headers/GoogleDataTransport-umbrella.h: -------------------------------------------------------------------------------- 1 | #ifdef __OBJC__ 2 | #import 3 | #else 4 | #ifndef FOUNDATION_EXPORT 5 | #if defined(__cplusplus) 6 | #define FOUNDATION_EXPORT extern "C" 7 | #else 8 | #define FOUNDATION_EXPORT extern 9 | #endif 10 | #endif 11 | #endif 12 | 13 | #import "GDTCORAssert.h" 14 | #import "GDTCORClock.h" 15 | #import "GDTCORConsoleLogger.h" 16 | #import "GDTCOREvent.h" 17 | #import "GDTCOREventDataObject.h" 18 | #import "GDTCOREventTransformer.h" 19 | #import "GDTCORLifecycle.h" 20 | #import "GDTCORPlatform.h" 21 | #import "GDTCORPrioritizer.h" 22 | #import "GDTCORReachability.h" 23 | #import "GDTCORRegistrar.h" 24 | #import "GDTCORTargets.h" 25 | #import "GDTCORTransport.h" 26 | #import "GDTCORUploader.h" 27 | #import "GDTCORUploadPackage.h" 28 | #import "GoogleDataTransport.h" 29 | 30 | FOUNDATION_EXPORT double GoogleDataTransportVersionNumber; 31 | FOUNDATION_EXPORT const unsigned char GoogleDataTransportVersionString[]; 32 | 33 | -------------------------------------------------------------------------------- /bin/plist2csv.sh: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | # 3 | # Converts the (binary) Plist files exported from the app debug screen to CSV 4 | # 5 | 6 | set -o pipefail 7 | i=0 8 | j=1 9 | echo "Broadcast ID, Timestamp, Duration, Peripheral ID, RSSI values, RSSI intervals" 10 | while true ; do 11 | PERIPHERAL_ID=$(/usr/libexec/PlistBuddy -c "Print $i" $1 | tr -d '\n') 12 | if [ ${PIPESTATUS[0]} -ne 0 ]; then 13 | echo $i 14 | break 15 | fi 16 | 17 | TIMESTAMP=$(/usr/libexec/PlistBuddy -c "Print $j:timestamp" $1 | tr -d '\n') 18 | BROADCAST_ID=$(/usr/libexec/PlistBuddy -c "Print $j:encryptedRemoteContactId" $1 | base64) 19 | RSSI_VALUES=$(/usr/libexec/PlistBuddy -c "Print $j:rssiValues" $1 | tr -d ' Array{}' | tr '\n' ':') 20 | RSSI_INTERVALS=$(/usr/libexec/PlistBuddy -c "Print $j:rssiIntervals" $1 | tr -d ' Array{}' | tr '\n' ':') 21 | DURATION=$(/usr/libexec/PlistBuddy -c "Print $j:duration" $1 | tr -d '\n') 22 | echo "$BROADCAST_ID, $TIMESTAMP, $DURATION, $PERIPHERAL_ID, $RSSI_VALUES, $RSSI_INTERVALS" 23 | i=$[i+2] 24 | j=$[j+2] 25 | done 26 | 27 | -------------------------------------------------------------------------------- /Sonar.xcodeproj/project.xcworkspace/xcshareddata/swiftpm/Package.resolved: -------------------------------------------------------------------------------- 1 | { 2 | "object": { 3 | "pins": [ 4 | { 5 | "package": "Nimble", 6 | "repositoryURL": "https://github.com/Quick/Nimble.git", 7 | "state": { 8 | "branch": null, 9 | "revision": "72f5a90d573f7f7d70aa6b8ad84b3e1e02eabb4d", 10 | "version": "8.0.9" 11 | } 12 | }, 13 | { 14 | "package": "PactConsumerSwift", 15 | "repositoryURL": "https://github.com/DiUS/pact-consumer-swift", 16 | "state": { 17 | "branch": null, 18 | "revision": "bbe2c1f46763c16b5e7250fe18778b66cfc79bc8", 19 | "version": "0.8.1" 20 | } 21 | }, 22 | { 23 | "package": "swift-log", 24 | "repositoryURL": "https://github.com/apple/swift-log.git", 25 | "state": { 26 | "branch": null, 27 | "revision": "74d7b91ceebc85daf387ebb206003f78813f71aa", 28 | "version": "1.2.0" 29 | } 30 | } 31 | ] 32 | }, 33 | "version": 1 34 | } 35 | -------------------------------------------------------------------------------- /Frameworks/PromisesObjC.framework/Headers/PromisesObjC-umbrella.h: -------------------------------------------------------------------------------- 1 | #ifdef __OBJC__ 2 | #import 3 | #else 4 | #ifndef FOUNDATION_EXPORT 5 | #if defined(__cplusplus) 6 | #define FOUNDATION_EXPORT extern "C" 7 | #else 8 | #define FOUNDATION_EXPORT extern 9 | #endif 10 | #endif 11 | #endif 12 | 13 | #import "FBLPromise+All.h" 14 | #import "FBLPromise+Always.h" 15 | #import "FBLPromise+Any.h" 16 | #import "FBLPromise+Async.h" 17 | #import "FBLPromise+Await.h" 18 | #import "FBLPromise+Catch.h" 19 | #import "FBLPromise+Delay.h" 20 | #import "FBLPromise+Do.h" 21 | #import "FBLPromise+Race.h" 22 | #import "FBLPromise+Recover.h" 23 | #import "FBLPromise+Reduce.h" 24 | #import "FBLPromise+Retry.h" 25 | #import "FBLPromise+Testing.h" 26 | #import "FBLPromise+Then.h" 27 | #import "FBLPromise+Timeout.h" 28 | #import "FBLPromise+Validate.h" 29 | #import "FBLPromise+Wrap.h" 30 | #import "FBLPromise.h" 31 | #import "FBLPromiseError.h" 32 | #import "FBLPromises.h" 33 | 34 | FOUNDATION_EXPORT double FBLPromisesVersionNumber; 35 | FOUNDATION_EXPORT const unsigned char FBLPromisesVersionString[]; 36 | 37 | -------------------------------------------------------------------------------- /Frameworks/GoogleDataTransport.framework/Headers/GoogleDataTransport.h: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2018 Google 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | 17 | #import "GDTCORClock.h" 18 | #import "GDTCORConsoleLogger.h" 19 | #import "GDTCOREvent.h" 20 | #import "GDTCOREventDataObject.h" 21 | #import "GDTCOREventTransformer.h" 22 | #import "GDTCORLifecycle.h" 23 | #import "GDTCORPrioritizer.h" 24 | #import "GDTCORRegistrar.h" 25 | #import "GDTCORTargets.h" 26 | #import "GDTCORTransport.h" 27 | #import "GDTCORUploadPackage.h" 28 | #import "GDTCORUploader.h" 29 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2020 NHSX 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | -------------------------------------------------------------------------------- /.github/workflows/generate-release-note.yml: -------------------------------------------------------------------------------- 1 | name: generate-release-note 2 | 3 | on: 4 | repository_dispatch: 5 | types: [generate-release-note] 6 | 7 | jobs: 8 | generate-release-note: 9 | runs-on: 10 | - linux 11 | - aws 12 | steps: 13 | - name: Checkout 14 | id: checkout 15 | uses: actions/checkout@v2 16 | with: 17 | fetch-depth: 0 # checkout full repo with all tags 18 | 19 | - name: Checkout ci tools 20 | id: checkout-ci-tools 21 | uses: actions/checkout@v2 22 | with: 23 | token: ${{ secrets.DEPLOYMENT_TOKEN }} 24 | repository: nhsx/sonar-ci-tools 25 | path: ci-tools 26 | ref: v0.2.0 27 | 28 | - name: Generate release notes 29 | id: generate_release_notes 30 | uses: ./ci-tools/.github/actions/generate-release-notes 31 | with: 32 | tracker_token: ${{ secrets.tracker_api_token }} 33 | revision_range: ${{ github.event.client_payload.revision_range }} 34 | 35 | - name: Print release notes 36 | run: echo "${{ steps.generate_release_notes.outputs.release_notes }}" 37 | -------------------------------------------------------------------------------- /Reporting/Sources/Reporting/Utilities/Bash.swift: -------------------------------------------------------------------------------- 1 | import Foundation 2 | 3 | struct Bash { 4 | static func run(_ command: String) throws { 5 | print("$", command) 6 | let process = Process() 7 | process.launchPath = "/bin/bash" 8 | process.arguments = ["-c", command] 9 | 10 | process.launch() 11 | process.waitUntilExit() 12 | } 13 | 14 | static func run(_ commandParts: String...) throws { 15 | try run(commandParts.joined(separator: " ")) 16 | } 17 | 18 | static func runAndCapture(_ command: String) throws -> Data { 19 | print("$", command) 20 | let process = Process() 21 | process.launchPath = "/bin/bash" 22 | process.arguments = ["-c", command] 23 | 24 | let pipe = Pipe() 25 | process.standardOutput = pipe 26 | process.launch() 27 | process.waitUntilExit() 28 | return pipe.fileHandleForReading.readDataToEndOfFile() 29 | } 30 | 31 | static func runAndCapture(_ commandParts: String...) throws -> Data { 32 | try runAndCapture(commandParts.joined(separator: " ")) 33 | } 34 | 35 | } 36 | -------------------------------------------------------------------------------- /Reporting/Sources/Reporting/ReportModel/Report.swift: -------------------------------------------------------------------------------- 1 | import Foundation 2 | 3 | struct Report { 4 | var pages: [ReportPage] 5 | var attachments: [ReportAttachment] 6 | } 7 | 8 | extension Report { 9 | 10 | func save(to reportFolder: URL) throws { 11 | let fileManager = FileManager() 12 | if fileManager.fileExists(atPath: reportFolder.path) { 13 | try fileManager.removeItem(at: reportFolder) 14 | } 15 | 16 | try fileManager.createDirectory(at: reportFolder, withIntermediateDirectories: true) 17 | try pages.forEach { 18 | try $0.save(in: reportFolder) 19 | } 20 | 21 | if !attachments.isEmpty { 22 | let attachmentsFolder = reportFolder.appendingPathComponent("Attachments", isDirectory: true) 23 | try fileManager.createDirectory(at: attachmentsFolder, withIntermediateDirectories: true) 24 | try attachments.forEach { 25 | let destination = attachmentsFolder.appendingPathComponent($0.name) 26 | try fileManager.copyItem(at: $0.source, to: destination) 27 | } 28 | } 29 | } 30 | 31 | } 32 | -------------------------------------------------------------------------------- /Frameworks/GoogleDataTransport.framework/Headers/GDTCORReachability.h: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2019 Google 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | 17 | #import 18 | 19 | #if !TARGET_OS_WATCH 20 | #import 21 | #endif 22 | 23 | NS_ASSUME_NONNULL_BEGIN 24 | 25 | /** This class helps determine upload conditions by determining connectivity. */ 26 | @interface GDTCORReachability : NSObject 27 | #if !TARGET_OS_WATCH 28 | /** The current set flags indicating network conditions */ 29 | + (SCNetworkReachabilityFlags)currentFlags; 30 | #endif 31 | 32 | @end 33 | 34 | NS_ASSUME_NONNULL_END 35 | -------------------------------------------------------------------------------- /Frameworks/PromisesObjC.framework/Headers/FBLPromises.h: -------------------------------------------------------------------------------- 1 | /** 2 | Copyright 2018 Google Inc. All rights reserved. 3 | 4 | Licensed under the Apache License, Version 2.0 (the "License"); 5 | you may not use this file except in compliance with the License. 6 | You may obtain a copy of the License at: 7 | 8 | http://www.apache.org/licenses/LICENSE-2.0 9 | 10 | Unless required by applicable law or agreed to in writing, software 11 | distributed under the License is distributed on an "AS IS" BASIS, 12 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | See the License for the specific language governing permissions and 14 | limitations under the License. 15 | */ 16 | 17 | #import "FBLPromise+All.h" 18 | #import "FBLPromise+Always.h" 19 | #import "FBLPromise+Any.h" 20 | #import "FBLPromise+Async.h" 21 | #import "FBLPromise+Await.h" 22 | #import "FBLPromise+Catch.h" 23 | #import "FBLPromise+Delay.h" 24 | #import "FBLPromise+Do.h" 25 | #import "FBLPromise+Race.h" 26 | #import "FBLPromise+Recover.h" 27 | #import "FBLPromise+Reduce.h" 28 | #import "FBLPromise+Retry.h" 29 | #import "FBLPromise+Then.h" 30 | #import "FBLPromise+Timeout.h" 31 | #import "FBLPromise+Validate.h" 32 | #import "FBLPromise+Wrap.h" 33 | -------------------------------------------------------------------------------- /Reporting/Package.swift: -------------------------------------------------------------------------------- 1 | // swift-tools-version:5.2 2 | // The swift-tools-version declares the minimum version of Swift required to build this package. 3 | 4 | import PackageDescription 5 | 6 | let package = Package( 7 | name: "Reporting", 8 | platforms: [ 9 | .macOS(.v10_15), 10 | ], 11 | products: [ 12 | .library( 13 | name: "Reporting", 14 | targets: ["Reporting"] 15 | ), 16 | .executable( 17 | name: "Reporter", 18 | targets: ["Reporter"] 19 | ), 20 | ], 21 | dependencies: [ 22 | .package(url: "https://github.com/apple/swift-argument-parser", from: "0.0.4") 23 | ], 24 | targets: [ 25 | .target( 26 | name: "Reporting", 27 | dependencies: [ 28 | .product(name: "ArgumentParser", package: "swift-argument-parser"), 29 | ] 30 | ), 31 | .target( 32 | name: "Reporter", 33 | dependencies: [ 34 | "Reporting", 35 | ] 36 | ), 37 | .testTarget( 38 | name: "ReportingTests", 39 | dependencies: [ 40 | "Reporting", 41 | ]), 42 | ] 43 | ) 44 | -------------------------------------------------------------------------------- /Frameworks/FirebaseInstallations.framework/Headers/FIRInstallationsAuthTokenResult.h: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2019 Google 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | 17 | #import 18 | 19 | NS_ASSUME_NONNULL_BEGIN 20 | 21 | /** The class represents a result of the auth token request. */ 22 | NS_SWIFT_NAME(InstallationsAuthTokenResult) 23 | @interface FIRInstallationsAuthTokenResult : NSObject 24 | 25 | /** The authorization token string. */ 26 | @property(nonatomic, readonly) NSString *authToken; 27 | 28 | /** The auth token expiration date. */ 29 | @property(nonatomic, readonly) NSDate *expirationDate; 30 | 31 | @end 32 | 33 | NS_ASSUME_NONNULL_END 34 | -------------------------------------------------------------------------------- /Reporting/Sources/Reporting/Artefact/IntegrityCheck.swift: -------------------------------------------------------------------------------- 1 | import Foundation 2 | 3 | struct IntegrityCheck { 4 | 5 | enum Result { 6 | case passed 7 | case failed(message: String) 8 | } 9 | 10 | var name: String 11 | var result: Result 12 | 13 | var passed: Bool { 14 | switch result { 15 | case .passed: 16 | return true 17 | case .failed: 18 | return false 19 | } 20 | } 21 | 22 | var errorMessage: String? { 23 | switch result { 24 | case .passed: 25 | return nil 26 | case .failed(let message): 27 | return message 28 | } 29 | } 30 | } 31 | 32 | extension ReportTable where Row == IntegrityCheck { 33 | 34 | init(checks: [IntegrityCheck]) { 35 | self.init( 36 | rows: checks, 37 | columns: [ 38 | ReportColumnAdapter(title: "Check", makeContent: { $0.name }), 39 | ReportColumnAdapter(title: "Passed?", makeContent: { $0.passed ? "✅" : "❌" }), 40 | ReportColumnAdapter(title: "Notes", makeContent: { $0.errorMessage ?? "" }), 41 | ] 42 | ) 43 | } 44 | 45 | } 46 | -------------------------------------------------------------------------------- /bin/remove-pact-tag.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | set -e 3 | 4 | function main() { 5 | 6 | version=$1 7 | version=$2 8 | 9 | validate "$version" "version" 10 | validate "$tag" "tag" 11 | validate "$GITHUB_USER_TOKEN" "GITHUB_USER_TOKEN" 12 | 13 | echo "" 14 | echo "You are about to remove pact tag '$tag' for version '$version'" 15 | echo "" 16 | read -p "Are you sure? " -n 1 -r 17 | echo "" 18 | 19 | if [[ ! $REPLY =~ ^[Yy]$ ]]; then 20 | exit 1 21 | fi 22 | 23 | echo "" 24 | read -p "Are you really sure? " -n 1 -r 25 | echo "" 26 | 27 | if [[ ! $REPLY =~ ^[Yy]$ ]]; then 28 | exit 1 29 | fi 30 | 31 | url="https://api.github.com/repos/nhsx/sonar-ios/dispatches" 32 | contentType="Content-Type: application/json" 33 | payload="{\"event_type\": \"remove-tag\", \"client_payload\": {\"version\": \"$version\", \"tag\": \"$tag\"}}" 34 | 35 | echo "" 36 | echo "Dispatching event: $payload" 37 | echo "" 38 | 39 | curl -i -u "$GITHUB_USER_TOKEN" -H "$contentType" -d "$payload" "$url" 40 | 41 | } 42 | 43 | function validate() { 44 | if [[ -z "$1" ]]; then 45 | >&2 echo "Unable to find the '$2'." 46 | 47 | usage 48 | 49 | exit 1 50 | fi 51 | } 52 | 53 | function usage() { 54 | echo "" 55 | echo "Usage: $0 " 56 | echo "" 57 | } 58 | 59 | main "$1" 60 | 61 | -------------------------------------------------------------------------------- /Frameworks/GoogleDataTransport.framework/Headers/GDTCOREventDataObject.h: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2018 Google 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | 17 | #import 18 | 19 | NS_ASSUME_NONNULL_BEGIN 20 | 21 | /** This protocol defines the common interface that event protos should implement regardless of the 22 | * underlying transport technology (protobuf, nanopb, etc). 23 | */ 24 | @protocol GDTCOREventDataObject 25 | 26 | @required 27 | 28 | /** Returns the serialized proto bytes of the implementing event proto. 29 | * 30 | * @return the serialized proto bytes of the implementing event proto. 31 | */ 32 | - (NSData *)transportBytes; 33 | 34 | @end 35 | 36 | NS_ASSUME_NONNULL_END 37 | -------------------------------------------------------------------------------- /Sonar/Assets.xcassets/Disclosure_Indicator.imageset/Fill.pdf: -------------------------------------------------------------------------------- 1 | %PDF-1.7 2 | 3 | 1 0 obj 4 | << >> 5 | endobj 6 | 7 | 2 0 obj 8 | << /Length 3 0 R >> 9 | stream 10 | /DeviceRGB CS 11 | /DeviceRGB cs 12 | q 13 | 1.000000 0.000000 -0.000000 1.000000 8.589844 5.250000 cm 14 | 0.298039 0.384314 0.447059 scn 15 | 0.000000 1.410000 m 16 | 4.580000 6.000000 l 17 | 0.000000 10.590000 l 18 | 1.410000 12.000000 l 19 | 7.410000 6.000000 l 20 | 1.410000 0.000000 l 21 | 0.000000 1.410000 l 22 | h 23 | f 24 | n 25 | Q 26 | 27 | endstream 28 | endobj 29 | 30 | 3 0 obj 31 | 269 32 | endobj 33 | 34 | 4 0 obj 35 | << /Annots [] 36 | /Type /Page 37 | /MediaBox [ 0.000000 0.000000 24.000000 24.000000 ] 38 | /Resources 1 0 R 39 | /Contents 2 0 R 40 | /Parent 5 0 R 41 | >> 42 | endobj 43 | 44 | 5 0 obj 45 | << /Kids [ 4 0 R ] 46 | /Count 1 47 | /Type /Pages 48 | >> 49 | endobj 50 | 51 | 6 0 obj 52 | << /Type /Catalog 53 | /Pages 5 0 R 54 | >> 55 | endobj 56 | 57 | xref 58 | 0 7 59 | 0000000000 65535 f 60 | 0000000010 00000 n 61 | 0000000034 00000 n 62 | 0000000359 00000 n 63 | 0000000381 00000 n 64 | 0000000554 00000 n 65 | 0000000628 00000 n 66 | trailer 67 | << /ID [ (some) (id) ] 68 | /Root 6 0 R 69 | /Size 7 70 | >> 71 | startxref 72 | 687 73 | %%EOF -------------------------------------------------------------------------------- /Sonar/Environments/Environment.swift.erb: -------------------------------------------------------------------------------- 1 | // 2 | // Environment.swift 3 | // Sonar 4 | // 5 | // Created by NHSX on 4/23/20. 6 | // Copyright © 2020 NHSX. All rights reserved. 7 | // 8 | 9 | import CoreBluetooth 10 | import Foundation 11 | 12 | struct Environment { 13 | struct Debug { 14 | let registrationId: String 15 | let registrationSecretKey: String 16 | let registrationBroadcastRotationKey: String 17 | } 18 | 19 | static let apiEndpoint = "<%= api_endpoint %>" 20 | static let sonarHeaderValue = "<%= sonar_header_value %>" 21 | static let sonarServiceUUID = CBUUID(string: "<%= sonar_service_uuid %>") 22 | static let sonarIdCharacteristicUUID = CBUUID(string: "<%= sonar_id_characteristic_uuid %>") 23 | static let keepaliveCharacteristicUUID = CBUUID(string: "<%= sonar_keepalive_characteristic_uuid %>") 24 | 25 | <% if defined? debug %> 26 | static let debug: Debug? = Debug( 27 | registrationId: "<%= debug.fetch("registration_id") %>", 28 | registrationSecretKey: "<%= debug.fetch("registration_secret_key") %>", 29 | registrationBroadcastRotationKey: "<%= debug.fetch("registration_broadcast_rotation_key") %>" 30 | ) 31 | <% else %> 32 | static let debug: Debug? = nil 33 | <% end %> 34 | } 35 | -------------------------------------------------------------------------------- /bin/pact/start-mock-server: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | 3 | set -eo pipefail 4 | 5 | SRCROOT=${SRCROOT:-"$(dirname "$0")/../.."} 6 | PACT_SETUP_LOG="$SRCROOT/SonarPactTests/Setup/mock-server.log" 7 | env > "$PACT_SETUP_LOG" 8 | 9 | check_for_failure() { 10 | if [[ $? != 0 ]]; then 11 | echo "######################## PACT TEST SETUP FAILED ########################" 12 | echo 13 | cat "$PACT_SETUP_LOG" 14 | echo 15 | echo 16 | echo "######################## PACT TEST SETUP FAILED ########################" 17 | fi 18 | } 19 | 20 | trap "check_for_failure" EXIT 21 | 22 | if [[ -z "$(command -v "pact-mock-service")" ]]; then 23 | echo "You do not have pact mock service installed. Please run bin/setup-pact." >> $PACT_SETUP_LOG 24 | exit 1 25 | fi 26 | 27 | echo 28 | echo "Starting pact mock service..." 29 | CERTIFICATES_DIRECTORY="${SRCROOT}/SonarPactTests/Certificates" 30 | PACTS_DIRECTORY="${SRCROOT}/Pacts" 31 | pact-mock-service start \ 32 | --pact-specification-version 2.0.0 \ 33 | --log "${SRCROOT}/SonarPactTests/mock-server-run.log" \ 34 | --pact-dir "$PACTS_DIRECTORY" \ 35 | -p 1234 \ 36 | --ssl \ 37 | --sslkey "$CERTIFICATES_DIRECTORY/localhost.key" \ 38 | --sslcert "$CERTIFICATES_DIRECTORY/localhost.crt" \ 39 | >> "$PACT_SETUP_LOG" 2>&1 40 | 41 | echo "Done." 42 | 43 | -------------------------------------------------------------------------------- /Frameworks/GoogleDataTransport.framework/Headers/GDTCORTargets.h: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2019 Google 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | 17 | #import 18 | 19 | /** The list of targets supported by the shared transport infrastructure. If adding a new target, 20 | * please use the previous value +1. 21 | */ 22 | typedef NS_ENUM(NSInteger, GDTCORTarget) { 23 | 24 | /** A target only used in testing. */ 25 | kGDTCORTargetTest = 999, 26 | 27 | /** The CCT target. */ 28 | kGDTCORTargetCCT = 1000, 29 | 30 | /** The FLL target. */ 31 | kGDTCORTargetFLL = 1001, 32 | 33 | /** The CSH target. The CSH target is a special-purpose backend. Please do not use it without 34 | * permission. 35 | */ 36 | kGDTCORTargetCSH = 1002 37 | }; 38 | -------------------------------------------------------------------------------- /Reporting/Sources/Reporting/ReportModel/ReportTable.swift: -------------------------------------------------------------------------------- 1 | import Foundation 2 | 3 | struct ReportColumnAdapter { 4 | var title: String 5 | var _makeContent: (Row) -> ReportContent 6 | 7 | init(title: String, makeContent: @escaping (Row) -> ReportContent) { 8 | self.title = title 9 | self._makeContent = makeContent 10 | } 11 | 12 | func makeContent(for data: Row) -> ReportContent { 13 | return _makeContent(data) 14 | } 15 | } 16 | 17 | struct ReportTable: ReportContent { 18 | var rows: [Row] 19 | var columns: [ReportColumnAdapter] 20 | 21 | var markdownBody: String { 22 | let titles = columns.map { $0.title }.tableRow 23 | let separator = Array(repeating: "-", count: columns.count).tableRow 24 | let dataRows = rows.map { entry -> String in 25 | return columns.map { $0.makeContent(for: entry).markdownBody }.tableRow 26 | }.joined(separator: "\n") 27 | 28 | return """ 29 | \(titles) 30 | \(separator) 31 | \(dataRows) 32 | """ 33 | } 34 | } 35 | 36 | private extension Sequence where Element == String { 37 | 38 | var tableRow: String { 39 | let inner = self.lazy.map { $0.markdownBody }.joined(separator: "|") 40 | return "|\(inner)|" 41 | } 42 | 43 | } 44 | -------------------------------------------------------------------------------- /Frameworks/GoogleDataTransport.framework/Headers/GDTCOREventTransformer.h: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2018 Google 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | 17 | #import 18 | 19 | @class GDTCOREvent; 20 | 21 | NS_ASSUME_NONNULL_BEGIN 22 | 23 | /** Defines the API that event transformers must adopt. */ 24 | @protocol GDTCOREventTransformer 25 | 26 | @required 27 | 28 | /** Transforms an event by applying some logic to it. Events returned can be nil, for example, in 29 | * instances where the event should be sampled. 30 | * 31 | * @param event The event to transform. 32 | * @return A transformed event, or nil if the transformation dropped the event. 33 | */ 34 | - (nullable GDTCOREvent *)transform:(GDTCOREvent *)event; 35 | 36 | @end 37 | 38 | NS_ASSUME_NONNULL_END 39 | -------------------------------------------------------------------------------- /Frameworks/PromisesObjC.framework/Headers/FBLPromise+Await.h: -------------------------------------------------------------------------------- 1 | /** 2 | Copyright 2018 Google Inc. All rights reserved. 3 | 4 | Licensed under the Apache License, Version 2.0 (the "License"); 5 | you may not use this file except in compliance with the License. 6 | You may obtain a copy of the License at: 7 | 8 | http://www.apache.org/licenses/LICENSE-2.0 9 | 10 | Unless required by applicable law or agreed to in writing, software 11 | distributed under the License is distributed on an "AS IS" BASIS, 12 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | See the License for the specific language governing permissions and 14 | limitations under the License. 15 | */ 16 | 17 | #import "FBLPromise.h" 18 | 19 | NS_ASSUME_NONNULL_BEGIN 20 | 21 | /** 22 | Waits for promise resolution. The current thread blocks until the promise is resolved. 23 | 24 | @param promise Promise to wait for. 25 | @param error Error the promise was rejected with, or `nil` if the promise was fulfilled. 26 | @return Value the promise was fulfilled with. If the promise was rejected, the return value 27 | is always `nil`, but the error out arg is not. 28 | */ 29 | FOUNDATION_EXTERN id __nullable FBLPromiseAwait(FBLPromise *promise, 30 | NSError **error) NS_REFINED_FOR_SWIFT; 31 | 32 | NS_ASSUME_NONNULL_END 33 | -------------------------------------------------------------------------------- /bin/pu.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | # Original implementation: https://github.com/tsif/pu.sh 4 | 5 | set -eo pipefail 6 | 7 | # Required environment variables: 8 | # 9 | # - TEAMID 10 | # - KEYID 11 | # - SECRET 12 | # - BUNDLEID 13 | # - DEVICETOKEN 14 | 15 | PAYLOAD="" 16 | 17 | if [ -z "$1" ] 18 | then 19 | PAYLOAD="{\"aps\":{\"content-available\" : 1, \"foo\":\"bar\"}}" 20 | else 21 | PAYLOAD=$(<"$1") 22 | fi 23 | 24 | function base64URLSafe { 25 | openssl base64 -e -A | tr -- '+/' '-_' | tr -d = 26 | } 27 | 28 | function sign { 29 | printf "$1"| openssl dgst -binary -sha256 -sign "$SECRET" | base64URLSafe 30 | } 31 | 32 | time=$(date +%s) 33 | header=$(printf '{ "alg": "ES256", "kid": "%s" }' "$KEYID" | base64URLSafe) 34 | claims=$(printf '{ "iss": "%s", "iat": %d }' "$TEAMID" "$time" | base64URLSafe) 35 | jwt="$header.$claims.$(sign $header.$claims)" 36 | 37 | # Development server: api.sandbox.push.apple.com:443 38 | # 39 | # Production server: api.push.apple.com:443 40 | 41 | ENDPOINT=https://api.sandbox.push.apple.com:443 42 | URLPATH=/3/device/ 43 | 44 | URL=$ENDPOINT$URLPATH$DEVICETOKEN 45 | 46 | curl -v \ 47 | --http2 \ 48 | --header "authorization: bearer $jwt" \ 49 | --header "apns-topic: ${BUNDLEID}" \ 50 | --header "apns-push-type: background" \ 51 | --header "apns-priority: 5" \ 52 | --data "${PAYLOAD}" \ 53 | "${URL}" 54 | -------------------------------------------------------------------------------- /Sonar/Assets.xcassets/Notice badge.imageset/Notice badge.pdf: -------------------------------------------------------------------------------- 1 | %PDF-1.7 2 | 3 | 1 0 obj 4 | << >> 5 | endobj 6 | 7 | 2 0 obj 8 | << /Length 3 0 R >> 9 | stream 10 | /DeviceRGB CS 11 | /DeviceRGB cs 12 | q 13 | 1.000000 0.000000 -0.000000 1.000000 0.000000 0.000000 cm 14 | 1.000000 0.721569 0.109804 scn 15 | 14.000000 7.000000 m 16 | 14.000000 3.134007 10.865993 0.000000 7.000000 0.000000 c 17 | 3.134007 0.000000 0.000000 3.134007 0.000000 7.000000 c 18 | 0.000000 10.865993 3.134007 14.000000 7.000000 14.000000 c 19 | 10.865993 14.000000 14.000000 10.865993 14.000000 7.000000 c 20 | h 21 | f 22 | n 23 | Q 24 | 25 | endstream 26 | endobj 27 | 28 | 3 0 obj 29 | 382 30 | endobj 31 | 32 | 4 0 obj 33 | << /Annots [] 34 | /Type /Page 35 | /MediaBox [ 0.000000 0.000000 14.000000 14.000000 ] 36 | /Resources 1 0 R 37 | /Contents 2 0 R 38 | /Parent 5 0 R 39 | >> 40 | endobj 41 | 42 | 5 0 obj 43 | << /Kids [ 4 0 R ] 44 | /Count 1 45 | /Type /Pages 46 | >> 47 | endobj 48 | 49 | 6 0 obj 50 | << /Type /Catalog 51 | /Pages 5 0 R 52 | >> 53 | endobj 54 | 55 | xref 56 | 0 7 57 | 0000000000 65535 f 58 | 0000000010 00000 n 59 | 0000000034 00000 n 60 | 0000000472 00000 n 61 | 0000000494 00000 n 62 | 0000000667 00000 n 63 | 0000000741 00000 n 64 | trailer 65 | << /ID [ (some) (id) ] 66 | /Root 6 0 R 67 | /Size 7 68 | >> 69 | startxref 70 | 800 71 | %%EOF -------------------------------------------------------------------------------- /Sonar/Appearance/Colors.swift: -------------------------------------------------------------------------------- 1 | // 2 | // Colors.swift 3 | // Sonar 4 | // 5 | // Created by NHSX on 03/06/2020 6 | // Copyright © 2020 NHSX. All rights reserved. 7 | // 8 | 9 | import UIKit 10 | 11 | extension UIColor { 12 | private static let grey = (one: UIColor(named: "NHS Grey 1"), 13 | two: UIColor(named: "NHS Grey 2"), 14 | three: UIColor(named: "NHS Grey 3"), 15 | four: UIColor(named: "NHS Grey 4"), 16 | five: UIColor(named: "NHS Grey 5")) 17 | 18 | static let nhs = (error: UIColor(named: "NHS Error"), 19 | button: UIColor(named: "NHS Button"), 20 | errorBackground: UIColor(named: "NHS Error Background"), 21 | text: UIColor(named: "NHS Text"), 22 | secondaryText: UIColor(named: "NHS Secondary Text"), 23 | blue: UIColor(named: "NHS Blue"), 24 | link: UIColor(named: "NHS Link"), 25 | darkBlue: UIColor(named: "NHS Dark Blue"), 26 | white: UIColor(named: "NHS White"), 27 | highlight: UIColor(named: "NHS Highlight"), 28 | grey: grey, 29 | errorGrey: UIColor(named: "Error Grey"), 30 | warmYellow: UIColor(named: "NHS Warm Yellow")) 31 | } 32 | -------------------------------------------------------------------------------- /Frameworks/FirebaseInstallations.framework/Headers/FIRInstallationsErrors.h: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2019 Google 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | 17 | #import 18 | 19 | extern NSString *const kFirebaseInstallationsErrorDomain; 20 | 21 | typedef NS_ENUM(NSUInteger, FIRInstallationsErrorCode) { 22 | /** Unknown error. See `userInfo` for details. */ 23 | FIRInstallationsErrorCodeUnknown = 0, 24 | 25 | /** Keychain error. See `userInfo` for details. */ 26 | FIRInstallationsErrorCodeKeychain = 1, 27 | 28 | /** Server unreachable. A network error or server is unavailable. See `userInfo` for details. */ 29 | FIRInstallationsErrorCodeServerUnreachable = 2, 30 | 31 | /** FirebaseApp configuration issues e.g. invalid GMP-App-ID, etc. See `userInfo` for details. */ 32 | FIRInstallationsErrorCodeInvalidConfiguration = 3, 33 | 34 | } NS_SWIFT_NAME(InstallationsErrorCode); 35 | -------------------------------------------------------------------------------- /Frameworks/GoogleUtilities.framework/Headers/GULLoggerLevel.h: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2018 Google 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | 17 | #import 18 | 19 | /** 20 | * The log levels used by internal logging. 21 | */ 22 | typedef NS_ENUM(NSInteger, GULLoggerLevel) { 23 | /** Error level, matches ASL_LEVEL_ERR. */ 24 | GULLoggerLevelError = 3, 25 | /** Warning level, matches ASL_LEVEL_WARNING. */ 26 | GULLoggerLevelWarning = 4, 27 | /** Notice level, matches ASL_LEVEL_NOTICE. */ 28 | GULLoggerLevelNotice = 5, 29 | /** Info level, matches ASL_LEVEL_INFO. */ 30 | GULLoggerLevelInfo = 6, 31 | /** Debug level, matches ASL_LEVEL_DEBUG. */ 32 | GULLoggerLevelDebug = 7, 33 | /** Minimum log level. */ 34 | GULLoggerLevelMin = GULLoggerLevelError, 35 | /** Maximum log level. */ 36 | GULLoggerLevelMax = GULLoggerLevelDebug 37 | } NS_SWIFT_NAME(GoogleLoggerLevel); 38 | -------------------------------------------------------------------------------- /ci/match/README.md: -------------------------------------------------------------------------------- 1 | ## [fastlane match](https://docs.fastlane.tools/actions/match/) 2 | 3 | This repository contains all your certificates and provisioning profiles needed to build and sign your applications. They are encrypted using OpenSSL via a passphrase. 4 | 5 | **Important:** Make sure this repository is set to private and only your team members have access to this repo. 6 | 7 | Do not modify this file, as it gets overwritten every time you run _match_. 8 | 9 | ### Installation 10 | 11 | Make sure you have the latest version of the Xcode command line tools installed: 12 | 13 | ``` 14 | xcode-select --install 15 | ``` 16 | 17 | Install _fastlane_ using 18 | 19 | ``` 20 | [sudo] gem install fastlane -NV 21 | ``` 22 | 23 | or alternatively using `brew cask install fastlane` 24 | 25 | ### Usage 26 | 27 | Navigate to your project folder and run 28 | 29 | ``` 30 | fastlane match appstore 31 | ``` 32 | ``` 33 | fastlane match adhoc 34 | ``` 35 | ``` 36 | fastlane match development 37 | ``` 38 | ``` 39 | fastlane match enterprise 40 | ``` 41 | 42 | For more information open [fastlane match git repo](https://docs.fastlane.tools/actions/match/) 43 | 44 | ### Content 45 | 46 | #### certs 47 | 48 | This directory contains all your certificates with their private keys 49 | 50 | #### profiles 51 | 52 | This directory contains all provisioning profiles 53 | 54 | ------------------------------------ 55 | 56 | For more information open [fastlane match git repo](https://docs.fastlane.tools/actions/match/) 57 | -------------------------------------------------------------------------------- /Frameworks/FirebaseCore.framework/Headers/FIRLoggerLevel.h: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2017 Google 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | 17 | // Note that importing GULLoggerLevel.h will lead to a non-modular header 18 | // import error. 19 | 20 | /** 21 | * The log levels used by internal logging. 22 | */ 23 | typedef NS_ENUM(NSInteger, FIRLoggerLevel) { 24 | /** Error level, matches ASL_LEVEL_ERR. */ 25 | FIRLoggerLevelError = 3, 26 | /** Warning level, matches ASL_LEVEL_WARNING. */ 27 | FIRLoggerLevelWarning = 4, 28 | /** Notice level, matches ASL_LEVEL_NOTICE. */ 29 | FIRLoggerLevelNotice = 5, 30 | /** Info level, matches ASL_LEVEL_INFO. */ 31 | FIRLoggerLevelInfo = 6, 32 | /** Debug level, matches ASL_LEVEL_DEBUG. */ 33 | FIRLoggerLevelDebug = 7, 34 | /** Minimum log level. */ 35 | FIRLoggerLevelMin = FIRLoggerLevelError, 36 | /** Maximum log level. */ 37 | FIRLoggerLevelMax = FIRLoggerLevelDebug 38 | } NS_SWIFT_NAME(FirebaseLoggerLevel); 39 | -------------------------------------------------------------------------------- /Sonar/Assets.xcassets/Spinner.imageset/Circle.pdf: -------------------------------------------------------------------------------- 1 | %PDF-1.7 2 | 3 | 1 0 obj 4 | << >> 5 | endobj 6 | 7 | 2 0 obj 8 | << /Length 3 0 R >> 9 | stream 10 | /DeviceRGB CS 11 | /DeviceRGB cs 12 | q 13 | 1.000000 0.000000 -0.000000 1.000000 2.000000 2.000000 cm 14 | 0.129412 0.168627 0.196078 scn 15 | 10.000000 0.000000 m 16 | 15.522848 0.000000 20.000000 4.477152 20.000000 10.000000 c 17 | 20.000000 15.522848 15.522848 20.000000 10.000000 20.000000 c 18 | 10.000002 18.181818 l 19 | 14.518697 18.181818 18.181822 14.518694 18.181822 10.000000 c 20 | 18.181822 5.481307 14.518697 1.818182 10.000002 1.818182 c 21 | 5.481307 1.818182 1.818182 5.481307 1.818182 10.000000 c 22 | 0.000000 10.000000 l 23 | 0.000000 4.477152 4.477152 0.000000 10.000000 0.000000 c 24 | h 25 | f* 26 | n 27 | Q 28 | 29 | endstream 30 | endobj 31 | 32 | 3 0 obj 33 | 549 34 | endobj 35 | 36 | 4 0 obj 37 | << /Annots [] 38 | /Type /Page 39 | /MediaBox [ 0.000000 0.000000 24.000000 24.000000 ] 40 | /Resources 1 0 R 41 | /Contents 2 0 R 42 | /Parent 5 0 R 43 | >> 44 | endobj 45 | 46 | 5 0 obj 47 | << /Kids [ 4 0 R ] 48 | /Count 1 49 | /Type /Pages 50 | >> 51 | endobj 52 | 53 | 6 0 obj 54 | << /Type /Catalog 55 | /Pages 5 0 R 56 | >> 57 | endobj 58 | 59 | xref 60 | 0 7 61 | 0000000000 65535 f 62 | 0000000010 00000 n 63 | 0000000034 00000 n 64 | 0000000639 00000 n 65 | 0000000661 00000 n 66 | 0000000834 00000 n 67 | 0000000908 00000 n 68 | trailer 69 | << /ID [ (some) (id) ] 70 | /Root 6 0 R 71 | /Size 7 72 | >> 73 | startxref 74 | 967 75 | %%EOF -------------------------------------------------------------------------------- /bin/pact/setup-build-environment: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | 3 | set -eo pipefail 4 | 5 | SRCROOT=${SRCROOT:-"$(dirname "$0")/../.."} 6 | PACT_SETUP_LOG="$SRCROOT/SonarPactTests/Setup/build-environment-setup.log" 7 | echo $XCTestConfigurationFilePath > "$PACT_SETUP_LOG" 8 | 9 | check_for_failure() { 10 | if [[ $? != 0 ]]; then 11 | echo "######################## PACT TEST SETUP FAILED ########################" 12 | echo 13 | cat "$PACT_SETUP_LOG" 14 | echo 15 | echo "Reinstantiating environment file..." 16 | ENVIRONMENT_FILE_PATH="${SRCROOT}/.secret/Environment.swift" 17 | if [[ -f "$ENVIRONMENT_FILE_PATH.backup" ]]; then 18 | mv "$ENVIRONMENT_FILE_PATH.backup" \ 19 | "$ENVIRONMENT_FILE_PATH" >> "$PACT_SETUP_LOG" 2>&1 20 | else 21 | echo "No backup file detected at $ENVIRONMENT_FILE_PATH.backup..." 22 | fi 23 | echo "Done." 24 | echo 25 | echo "######################## PACT TEST SETUP FAILED ########################" 26 | fi 27 | } 28 | 29 | trap "check_for_failure" EXIT 30 | 31 | echo "Rewriting environment file for pact testing..." 32 | ENVIRONMENT_FILE_PATH="${SRCROOT}/.secret/Environment.swift" 33 | if [[ -f "$ENVIRONMENT_FILE_PATH" ]]; then 34 | mv "$ENVIRONMENT_FILE_PATH" "$ENVIRONMENT_FILE_PATH.backup" >> "$PACT_SETUP_LOG" 2>&1 35 | else 36 | echo "You do not seem to have an environment file setup at \ 37 | $ENVIRONMENT_FILE_PATH, skipping backup..." >> "$PACT_SETUP_LOG" 2>&1 38 | fi 39 | 40 | cat "${SRCROOT}/SonarPactTests/Environment/environment.json" \ 41 | | "${SRCROOT}/bin/make-environment" \ 42 | > "$ENVIRONMENT_FILE_PATH" 43 | -------------------------------------------------------------------------------- /bin/pact/setup: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | 3 | set -eo pipefail 4 | 5 | ROOT_DIR="$(dirname "$0")/../.." 6 | pushd "$ROOT_DIR" > /dev/null 7 | 8 | INSTALL_LOG="./SonarPactTests/Setup/install.log" 9 | touch "$INSTALL_LOG" 10 | 11 | check_for_failure() { 12 | if [[ $? != 0 ]]; then 13 | echo 14 | echo "Something seems to have gone wrong, here are the log contents:" 15 | cat "$INSTALL_LOG" 16 | fi 17 | } 18 | 19 | trap "check_for_failure" EXIT 20 | 21 | if [[ -t 1 ]] && [[ -z "$(xcode-select --print-path | grep -E "/[^/.]+.app/")" ]]; then 22 | echo "You currently have no XCode version selected for developer tools." 23 | echo "Resetting to the default XCode version..." 24 | echo "You may be asked for your password:" 25 | sudo xcode-select --reset > $INSTALL_LOG 2>&1 26 | echo "Done" 27 | fi 28 | 29 | if [[ -z "$(command -v pact-mock-service)" ]]; then 30 | [[ -t 1 ]] && echo "You may be asked for your password:" 31 | echo "Installing pact mock service..." 32 | sudo gem install --no-doc pact-mock_service > $INSTALL_LOG 2>&1 33 | echo "Done" 34 | echo 35 | fi 36 | 37 | if [[ -z "$(command -v pact-broker)" ]]; then 38 | [[ -t 1 ]] && echo "You may be asked for your password:" 39 | echo "Installing pact broker client..." 40 | sudo gem install --no-doc pact_broker-client > $INSTALL_LOG 2>&1 41 | echo "Done" 42 | echo 43 | fi 44 | 45 | echo "Installing Sonar CA certificate as root certificate in booted simulators..." 46 | xcrun simctl keychain booted add-root-cert SonarPactTests/Certificates/sonar.ca.cer > $INSTALL_LOG 2>&1 47 | echo "Done" 48 | echo 49 | 50 | popd > /dev/null 51 | 52 | -------------------------------------------------------------------------------- /Frameworks/nanopb.framework/Headers/pb_common.h: -------------------------------------------------------------------------------- 1 | /* pb_common.h: Common support functions for pb_encode.c and pb_decode.c. 2 | * These functions are rarely needed by applications directly. 3 | */ 4 | 5 | #ifndef PB_COMMON_H_INCLUDED 6 | #define PB_COMMON_H_INCLUDED 7 | 8 | #include "pb.h" 9 | 10 | #ifdef __cplusplus 11 | extern "C" { 12 | #endif 13 | 14 | /* Iterator for pb_field_t list */ 15 | struct pb_field_iter_s { 16 | const pb_field_t *start; /* Start of the pb_field_t array */ 17 | const pb_field_t *pos; /* Current position of the iterator */ 18 | unsigned required_field_index; /* Zero-based index that counts only the required fields */ 19 | void *dest_struct; /* Pointer to start of the structure */ 20 | void *pData; /* Pointer to current field value */ 21 | void *pSize; /* Pointer to count/has field */ 22 | }; 23 | typedef struct pb_field_iter_s pb_field_iter_t; 24 | 25 | /* Initialize the field iterator structure to beginning. 26 | * Returns false if the message type is empty. */ 27 | bool pb_field_iter_begin(pb_field_iter_t *iter, const pb_field_t *fields, void *dest_struct); 28 | 29 | /* Advance the iterator to the next field. 30 | * Returns false when the iterator wraps back to the first field. */ 31 | bool pb_field_iter_next(pb_field_iter_t *iter); 32 | 33 | /* Advance the iterator until it points at a field with the given tag. 34 | * Returns false if no such field exists. */ 35 | bool pb_field_iter_find(pb_field_iter_t *iter, uint32_t tag); 36 | 37 | #ifdef __cplusplus 38 | } /* extern "C" */ 39 | #endif 40 | 41 | #endif 42 | 43 | -------------------------------------------------------------------------------- /Reporting/Sources/Reporting/Sonar.swift: -------------------------------------------------------------------------------- 1 | import Foundation 2 | 3 | struct Sonar { 4 | static let compilationRequirements: [CompilationRequirement] = [ 5 | MinimumOSCompilationRequirement.macOS10_15_4, 6 | MinimumXcodeCompilationRequirement.xcode11, 7 | MinimumPlatformCompilationRequirement.ios13, 8 | CompilerCompilationRequirement.clang1, 9 | PlatformCompilationRequirement.iOSDevice, 10 | ] 11 | 12 | #warning("These need to be removed.") 13 | // These assets ideally should not be part of the final artefact 14 | // We’re accepting their existence for now 15 | static let acceptedUnwantedAssets: [Asset] = [ 16 | .storyboard("Debug"), 17 | ] 18 | 19 | static let requiredAssets: [Asset] = [ 20 | .storyboard("Onboarding"), 21 | .storyboard("SelfDiagnosis"), 22 | .storyboard("Status"), 23 | .storyboard("LinkingId"), 24 | .storyboard("Advice"), 25 | .storyboard("BookTest"), 26 | .storyboard("CheckinDrawer"), 27 | .storyboard("Drawer"), 28 | .storyboard("ReferenceCode"), 29 | .storyboard("RegistrationStatus"), 30 | .storyboard("SetStatusState"), 31 | .storyboard("TestingInfo"), 32 | .storyboard("WorkplaceGuidance"), 33 | .nib("LogoStrapline"), 34 | .nib("OnboardingLogoStrapline"), 35 | .nib("ErrorView"), 36 | .strings("Localizable"), 37 | .plist("GoogleService-Info"), 38 | .plist("URLs"), 39 | .bundle("Settings"), 40 | ] 41 | 42 | static let knownAssets = Self.requiredAssets + Self.acceptedUnwantedAssets 43 | } 44 | -------------------------------------------------------------------------------- /Frameworks/PromisesObjC.framework/Headers/FBLPromiseError.h: -------------------------------------------------------------------------------- 1 | /** 2 | Copyright 2018 Google Inc. All rights reserved. 3 | 4 | Licensed under the Apache License, Version 2.0 (the "License"); 5 | you may not use this file except in compliance with the License. 6 | You may obtain a copy of the License at: 7 | 8 | http://www.apache.org/licenses/LICENSE-2.0 9 | 10 | Unless required by applicable law or agreed to in writing, software 11 | distributed under the License is distributed on an "AS IS" BASIS, 12 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | See the License for the specific language governing permissions and 14 | limitations under the License. 15 | */ 16 | 17 | #import 18 | 19 | NS_ASSUME_NONNULL_BEGIN 20 | 21 | FOUNDATION_EXTERN NSErrorDomain const FBLPromiseErrorDomain NS_REFINED_FOR_SWIFT; 22 | 23 | /** 24 | Possible error codes in `FBLPromiseErrorDomain`. 25 | */ 26 | typedef NS_ENUM(NSInteger, FBLPromiseErrorCode) { 27 | /** Promise failed to resolve in time. */ 28 | FBLPromiseErrorCodeTimedOut = 1, 29 | /** Validation predicate returned false. */ 30 | FBLPromiseErrorCodeValidationFailure = 2, 31 | } NS_REFINED_FOR_SWIFT; 32 | 33 | NS_INLINE BOOL FBLPromiseErrorIsTimedOut(NSError *error) NS_SWIFT_UNAVAILABLE("") { 34 | return error.domain == FBLPromiseErrorDomain && 35 | error.code == FBLPromiseErrorCodeTimedOut; 36 | } 37 | 38 | NS_INLINE BOOL FBLPromiseErrorIsValidationFailure(NSError *error) NS_SWIFT_UNAVAILABLE("") { 39 | return error.domain == FBLPromiseErrorDomain && 40 | error.code == FBLPromiseErrorCodeValidationFailure; 41 | } 42 | 43 | NS_ASSUME_NONNULL_END 44 | -------------------------------------------------------------------------------- /Sonar/Assets.xcassets/Controls_RadioButton_Unselected.imageset/radio_button_unchecked_24px.pdf: -------------------------------------------------------------------------------- 1 | %PDF-1.7 2 | 3 | 1 0 obj 4 | << /ExtGState << /E1 << /ca 0.540000 >> >> >> 5 | endobj 6 | 7 | 2 0 obj 8 | << /Length 3 0 R >> 9 | stream 10 | /DeviceRGB CS 11 | /DeviceRGB cs 12 | q 13 | /E1 gs 14 | 1.000000 0.000000 -0.000000 1.000000 2.000000 2.000000 cm 15 | 0.000000 0.000000 0.000000 scn 16 | 0.000000 10.000000 m 17 | 0.000000 15.520000 4.480000 20.000000 10.000000 20.000000 c 18 | 15.520000 20.000000 20.000000 15.520000 20.000000 10.000000 c 19 | 20.000000 4.480000 15.520000 0.000000 10.000000 0.000000 c 20 | 4.480000 0.000000 0.000000 4.480000 0.000000 10.000000 c 21 | h 22 | 2.000000 10.000000 m 23 | 2.000000 5.580000 5.580000 2.000000 10.000000 2.000000 c 24 | 14.420000 2.000000 18.000000 5.580000 18.000000 10.000000 c 25 | 18.000000 14.420000 14.420000 18.000000 10.000000 18.000000 c 26 | 5.580000 18.000000 2.000000 14.420000 2.000000 10.000000 c 27 | h 28 | f* 29 | n 30 | Q 31 | 32 | endstream 33 | endobj 34 | 35 | 3 0 obj 36 | 655 37 | endobj 38 | 39 | 4 0 obj 40 | << /Annots [] 41 | /Type /Page 42 | /MediaBox [ 0.000000 0.000000 24.000000 24.000000 ] 43 | /Resources 1 0 R 44 | /Contents 2 0 R 45 | /Parent 5 0 R 46 | >> 47 | endobj 48 | 49 | 5 0 obj 50 | << /Kids [ 4 0 R ] 51 | /Count 1 52 | /Type /Pages 53 | >> 54 | endobj 55 | 56 | 6 0 obj 57 | << /Type /Catalog 58 | /Pages 5 0 R 59 | >> 60 | endobj 61 | 62 | xref 63 | 0 7 64 | 0000000000 65535 f 65 | 0000000010 00000 n 66 | 0000000074 00000 n 67 | 0000000785 00000 n 68 | 0000000807 00000 n 69 | 0000000980 00000 n 70 | 0000001054 00000 n 71 | trailer 72 | << /ID [ (some) (id) ] 73 | /Root 6 0 R 74 | /Size 7 75 | >> 76 | startxref 77 | 1113 78 | %%EOF -------------------------------------------------------------------------------- /Sonar/Assets.xcassets/Arrow_Highlight.imageset/Arrow-highlight.pdf: -------------------------------------------------------------------------------- 1 | %PDF-1.7 2 | 3 | 1 0 obj 4 | << >> 5 | endobj 6 | 7 | 2 0 obj 8 | << /Length 3 0 R >> 9 | stream 10 | /DeviceRGB CS 11 | /DeviceRGB cs 12 | q 13 | 1.000000 0.000000 -0.000000 1.000000 0.000000 0.000000 cm 14 | 0.000000 0.447059 0.807843 scn 15 | 28.000000 14.000000 m 16 | 28.000000 6.268013 21.731987 0.000000 14.000000 0.000000 c 17 | 6.268013 0.000000 0.000000 6.268013 0.000000 14.000000 c 18 | 0.000000 21.731987 6.268013 28.000000 14.000000 28.000000 c 19 | 21.731987 28.000000 28.000000 21.731987 28.000000 14.000000 c 20 | h 21 | f 22 | n 23 | Q 24 | q 25 | -1.000000 -0.000000 0.000000 -1.000000 21.999998 22.000000 cm 26 | 1.000000 1.000000 1.000000 scn 27 | 16.000000 9.000000 m 28 | 3.830000 9.000000 l 29 | 9.420000 14.590000 l 30 | 8.000000 16.000000 l 31 | 0.000000 8.000000 l 32 | 8.000000 0.000000 l 33 | 9.410000 1.410000 l 34 | 3.830000 7.000000 l 35 | 16.000000 7.000000 l 36 | 16.000000 9.000000 l 37 | h 38 | f 39 | n 40 | Q 41 | 42 | endstream 43 | endobj 44 | 45 | 3 0 obj 46 | 695 47 | endobj 48 | 49 | 4 0 obj 50 | << /Annots [] 51 | /Type /Page 52 | /MediaBox [ 0.000000 0.000000 28.000000 28.000000 ] 53 | /Resources 1 0 R 54 | /Contents 2 0 R 55 | /Parent 5 0 R 56 | >> 57 | endobj 58 | 59 | 5 0 obj 60 | << /Kids [ 4 0 R ] 61 | /Count 1 62 | /Type /Pages 63 | >> 64 | endobj 65 | 66 | 6 0 obj 67 | << /Type /Catalog 68 | /Pages 5 0 R 69 | >> 70 | endobj 71 | 72 | xref 73 | 0 7 74 | 0000000000 65535 f 75 | 0000000010 00000 n 76 | 0000000034 00000 n 77 | 0000000785 00000 n 78 | 0000000807 00000 n 79 | 0000000980 00000 n 80 | 0000001054 00000 n 81 | trailer 82 | << /ID [ (some) (id) ] 83 | /Root 6 0 R 84 | /Size 7 85 | >> 86 | startxref 87 | 1113 88 | %%EOF -------------------------------------------------------------------------------- /Frameworks/FirebaseCore.framework/Headers/FIRConfiguration.h: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2017 Google 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | 17 | #import 18 | 19 | #import 20 | 21 | NS_ASSUME_NONNULL_BEGIN 22 | 23 | /** 24 | * This interface provides global level properties that the developer can tweak. 25 | */ 26 | NS_SWIFT_NAME(FirebaseConfiguration) 27 | @interface FIRConfiguration : NSObject 28 | 29 | /** Returns the shared configuration object. */ 30 | @property(class, nonatomic, readonly) FIRConfiguration *sharedInstance NS_SWIFT_NAME(shared); 31 | 32 | /** 33 | * Sets the logging level for internal Firebase logging. Firebase will only log messages 34 | * that are logged at or below loggerLevel. The messages are logged both to the Xcode 35 | * console and to the device's log. Note that if an app is running from AppStore, it will 36 | * never log above FIRLoggerLevelNotice even if loggerLevel is set to a higher (more verbose) 37 | * setting. 38 | * 39 | * @param loggerLevel The maximum logging level. The default level is set to FIRLoggerLevelNotice. 40 | */ 41 | - (void)setLoggerLevel:(FIRLoggerLevel)loggerLevel; 42 | 43 | @end 44 | 45 | NS_ASSUME_NONNULL_END 46 | -------------------------------------------------------------------------------- /Frameworks/Protobuf.framework/Headers/Protobuf-umbrella.h: -------------------------------------------------------------------------------- 1 | #ifdef __OBJC__ 2 | #import 3 | #else 4 | #ifndef FOUNDATION_EXPORT 5 | #if defined(__cplusplus) 6 | #define FOUNDATION_EXPORT extern "C" 7 | #else 8 | #define FOUNDATION_EXPORT extern 9 | #endif 10 | #endif 11 | #endif 12 | 13 | #import "GPBArray.h" 14 | #import "GPBArray_PackagePrivate.h" 15 | #import "GPBBootstrap.h" 16 | #import "GPBCodedInputStream.h" 17 | #import "GPBCodedInputStream_PackagePrivate.h" 18 | #import "GPBCodedOutputStream.h" 19 | #import "GPBCodedOutputStream_PackagePrivate.h" 20 | #import "GPBDescriptor.h" 21 | #import "GPBDescriptor_PackagePrivate.h" 22 | #import "GPBDictionary.h" 23 | #import "GPBDictionary_PackagePrivate.h" 24 | #import "GPBExtensionInternals.h" 25 | #import "GPBExtensionRegistry.h" 26 | #import "GPBMessage.h" 27 | #import "GPBMessage_PackagePrivate.h" 28 | #import "GPBProtocolBuffers.h" 29 | #import "GPBProtocolBuffers_RuntimeSupport.h" 30 | #import "GPBRootObject.h" 31 | #import "GPBRootObject_PackagePrivate.h" 32 | #import "GPBRuntimeTypes.h" 33 | #import "GPBUnknownField.h" 34 | #import "GPBUnknownFieldSet.h" 35 | #import "GPBUnknownFieldSet_PackagePrivate.h" 36 | #import "GPBUnknownField_PackagePrivate.h" 37 | #import "GPBUtilities.h" 38 | #import "GPBUtilities_PackagePrivate.h" 39 | #import "GPBWellKnownTypes.h" 40 | #import "GPBWireFormat.h" 41 | #import "Any.pbobjc.h" 42 | #import "Api.pbobjc.h" 43 | #import "Duration.pbobjc.h" 44 | #import "Empty.pbobjc.h" 45 | #import "FieldMask.pbobjc.h" 46 | #import "SourceContext.pbobjc.h" 47 | #import "Struct.pbobjc.h" 48 | #import "Timestamp.pbobjc.h" 49 | #import "Type.pbobjc.h" 50 | #import "Wrappers.pbobjc.h" 51 | 52 | FOUNDATION_EXPORT double protobufVersionNumber; 53 | FOUNDATION_EXPORT const unsigned char protobufVersionString[]; 54 | 55 | -------------------------------------------------------------------------------- /Sonar/AppDelegate.swift: -------------------------------------------------------------------------------- 1 | // 2 | // AppDelegate.swift 3 | // Sonar 4 | // 5 | // Created by NHSX on 09/03/2020. 6 | // Copyright © 2020 NHSX. All rights reserved. 7 | // 8 | 9 | import UIKit 10 | import CoreData 11 | import Firebase 12 | 13 | @UIApplicationMain 14 | class AppDelegate: UIResponder, UIApplicationDelegate, UNUserNotificationCenterDelegate, MessagingDelegate { 15 | var window: UIWindow? 16 | 17 | func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool { 18 | FirebaseApp.configure() 19 | Messaging.messaging().delegate = self 20 | 21 | if #available(iOS 10.0, *) { 22 | // For iOS 10 display notification (sent via APNS) 23 | UNUserNotificationCenter.current().delegate = self 24 | 25 | let authOptions: UNAuthorizationOptions = [.alert, .badge, .sound] 26 | UNUserNotificationCenter.current().requestAuthorization( 27 | options: authOptions, 28 | completionHandler: {_, _ in }) 29 | } else { 30 | let settings: UIUserNotificationSettings = 31 | UIUserNotificationSettings(types: [.alert, .badge, .sound], categories: nil) 32 | application.registerUserNotificationSettings(settings) 33 | } 34 | 35 | application.registerForRemoteNotifications() 36 | 37 | let rootViewController = RootViewController() 38 | 39 | window = UIWindow(frame: UIScreen.main.bounds) 40 | window?.rootViewController = rootViewController 41 | window?.makeKeyAndVisible() 42 | return true 43 | } 44 | 45 | func messaging(_ messaging: Messaging, didReceiveRegistrationToken fcmToken: String) { 46 | print("fcmToken: \(fcmToken)") 47 | } 48 | } 49 | -------------------------------------------------------------------------------- /Configurations/Project.xcconfig: -------------------------------------------------------------------------------- 1 | 2 | SDKROOT = iphoneos 3 | IPHONEOS_DEPLOYMENT_TARGET = 11.0 4 | TARGETED_DEVICE_FAMILY = 1 5 | SWIFT_VERSION = 5.0 6 | 7 | CODE_SIGN_IDENTITY = iPhone Developer 8 | DEVELOPMENT_TEAM = 877YMUFLMF 9 | 10 | // Xcode default flags: 11 | 12 | COPY_PHASE_STRIP = NO 13 | ALWAYS_SEARCH_USER_PATHS = NO 14 | GCC_NO_COMMON_BLOCKS = YES 15 | GCC_C_LANGUAGE_STANDARD = gnu11 16 | CLANG_CXX_LANGUAGE_STANDARD = gnu++14 17 | CLANG_CXX_LIBRARY = libc++ 18 | CLANG_ENABLE_MODULES = YES 19 | CLANG_ENABLE_OBJC_ARC = YES 20 | CLANG_ENABLE_OBJC_WEAK = YES 21 | ENABLE_STRICT_OBJC_MSGSEND = YES 22 | CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES 23 | CLANG_WARN_DOCUMENTATION_COMMENTS = YES 24 | CLANG_WARN_EMPTY_BODY = YES 25 | CLANG_WARN_BOOL_CONVERSION = YES 26 | CLANG_WARN_CONSTANT_CONVERSION = YES 27 | GCC_WARN_64_TO_32_BIT_CONVERSION = YES 28 | CLANG_WARN_ENUM_CONVERSION = YES 29 | CLANG_WARN_INT_CONVERSION = YES 30 | CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES 31 | CLANG_WARN_INFINITE_RECURSION = YES 32 | GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR 33 | CLANG_WARN_STRICT_PROTOTYPES = YES 34 | CLANG_WARN_COMMA = YES 35 | CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE 36 | GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE 37 | CLANG_WARN_UNREACHABLE_CODE = YES 38 | GCC_WARN_UNUSED_FUNCTION = YES 39 | GCC_WARN_UNUSED_VARIABLE = YES 40 | CLANG_WARN_RANGE_LOOP_ANALYSIS = YES 41 | CLANG_WARN_SUSPICIOUS_MOVE = YES 42 | CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR 43 | CLANG_WARN__DUPLICATE_METHOD_MATCH = YES 44 | CLANG_WARN_OBJC_LITERAL_CONVERSION = YES 45 | CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES 46 | GCC_WARN_UNDECLARED_SELECTOR = YES 47 | CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR 48 | CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES 49 | CLANG_ANALYZER_NONNULL = YES 50 | CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE 51 | MTL_FAST_MATH = YES 52 | -------------------------------------------------------------------------------- /Sonar/Assets.xcassets/Registration_status_ok.imageset/Circle.pdf: -------------------------------------------------------------------------------- 1 | %PDF-1.7 2 | 3 | 1 0 obj 4 | << >> 5 | endobj 6 | 7 | 2 0 obj 8 | << /Length 3 0 R >> 9 | stream 10 | /DeviceRGB CS 11 | /DeviceRGB cs 12 | q 13 | 1.000000 0.000000 -0.000000 1.000000 1.000000 1.000000 cm 14 | 0.129412 0.168627 0.196078 scn 15 | 11.000000 22.000000 m 16 | 4.927715 22.000000 0.000000 17.072285 0.000000 11.000000 c 17 | 0.000000 4.927715 4.927715 0.000000 11.000000 0.000000 c 18 | 17.072285 0.000000 22.000000 4.927715 22.000000 11.000000 c 19 | 22.000000 17.072285 17.072285 22.000000 11.000000 22.000000 c 20 | h 21 | 11.000000 21.000000 m 22 | 5.480000 21.000000 1.000000 16.520000 1.000000 11.000000 c 23 | 1.000000 5.480000 5.480000 1.000000 11.000000 1.000000 c 24 | 16.520000 1.000000 21.000000 5.480000 21.000000 11.000000 c 25 | 21.000000 16.520000 16.520000 21.000000 11.000000 21.000000 c 26 | h 27 | 4.000000 11.000000 m 28 | 9.000000 6.000000 l 29 | 18.000000 15.000000 l 30 | 16.590000 16.420000 l 31 | 9.000000 8.830000 l 32 | 5.410000 12.410000 l 33 | 4.000000 11.000000 l 34 | h 35 | f* 36 | n 37 | Q 38 | 39 | endstream 40 | endobj 41 | 42 | 3 0 obj 43 | 799 44 | endobj 45 | 46 | 4 0 obj 47 | << /Annots [] 48 | /Type /Page 49 | /MediaBox [ 0.000000 0.000000 24.000000 24.000000 ] 50 | /Resources 1 0 R 51 | /Contents 2 0 R 52 | /Parent 5 0 R 53 | >> 54 | endobj 55 | 56 | 5 0 obj 57 | << /Kids [ 4 0 R ] 58 | /Count 1 59 | /Type /Pages 60 | >> 61 | endobj 62 | 63 | 6 0 obj 64 | << /Type /Catalog 65 | /Pages 5 0 R 66 | >> 67 | endobj 68 | 69 | xref 70 | 0 7 71 | 0000000000 65535 f 72 | 0000000010 00000 n 73 | 0000000034 00000 n 74 | 0000000889 00000 n 75 | 0000000911 00000 n 76 | 0000001084 00000 n 77 | 0000001158 00000 n 78 | trailer 79 | << /ID [ (some) (id) ] 80 | /Root 6 0 R 81 | /Size 7 82 | >> 83 | startxref 84 | 1217 85 | %%EOF -------------------------------------------------------------------------------- /Frameworks/FirebaseMessaging.framework/Headers/FIRMessagingExtensionHelper.h: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2019 Google 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | 17 | #if __IPHONE_OS_VERSION_MAX_ALLOWED >= __IPHONE_10_0 || \ 18 | __MAC_OS_X_VERSION_MAX_ALLOWED >= __MAC_10_14 19 | #import 20 | #endif 21 | 22 | NS_ASSUME_NONNULL_BEGIN 23 | 24 | /// This class is used to automatically populate a notification with an image if it is 25 | /// specified in the notification body via the `image` parameter. Images and other 26 | /// rich content can be populated manually without the use of this class. See the 27 | /// `UNNotificationServiceExtension` type for more details. 28 | __IOS_AVAILABLE(10.0) __OSX_AVAILABLE(10.14) @interface FIRMessagingExtensionHelper : NSObject 29 | 30 | /// Call this API to complete your notification content modification. If you like to 31 | /// overwrite some properties of the content instead of using the default payload, 32 | /// make sure to make your customized motification to the content before passing it to 33 | /// this call. 34 | - (void)populateNotificationContent:(UNMutableNotificationContent *)content 35 | withContentHandler:(void (^)(UNNotificationContent *_Nonnull))contentHandler; 36 | 37 | @end 38 | 39 | NS_ASSUME_NONNULL_END 40 | -------------------------------------------------------------------------------- /Sonar/Info.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | CFBundleDevelopmentRegion 6 | $(DEVELOPMENT_LANGUAGE) 7 | CFBundleExecutable 8 | $(EXECUTABLE_NAME) 9 | CFBundleIdentifier 10 | $(PRODUCT_BUNDLE_IDENTIFIER) 11 | CFBundleInfoDictionaryVersion 12 | 6.0 13 | CFBundleName 14 | $(DISPLAY_NAME) 15 | CFBundlePackageType 16 | APPL 17 | CFBundleShortVersionString 18 | 2.0.0 19 | CFBundleVersion 20 | 632 21 | ITSAppUsesNonExemptEncryption 22 | 23 | LSApplicationCategoryType 24 | 25 | LSRequiresIPhoneOS 26 | 27 | UIBackgroundModes 28 | 29 | remote-notification 30 | 31 | UILaunchStoryboardName 32 | LaunchScreen 33 | UIRequiredDeviceCapabilities 34 | 35 | armv7 36 | 37 | UISupportedInterfaceOrientations 38 | 39 | UIInterfaceOrientationPortrait 40 | UIInterfaceOrientationLandscapeLeft 41 | UIInterfaceOrientationLandscapeRight 42 | 43 | UISupportedInterfaceOrientations~ipad 44 | 45 | UIInterfaceOrientationPortrait 46 | UIInterfaceOrientationPortraitUpsideDown 47 | UIInterfaceOrientationLandscapeLeft 48 | UIInterfaceOrientationLandscapeRight 49 | 50 | UIUserInterfaceStyle 51 | Light 52 | 53 | 54 | -------------------------------------------------------------------------------- /Reporting/Sources/Reporting/Commands/ArchiveReportCommand.swift: -------------------------------------------------------------------------------- 1 | import Foundation 2 | import ArgumentParser 3 | 4 | struct ArchiveReportCommand: ParsableCommand { 5 | static var configuration = CommandConfiguration( 6 | commandName: "archive", 7 | abstract: "Produces report from an Xcode archive." 8 | ) 9 | 10 | @Argument(help: "Path to the archive to make a report for.") 11 | var archive: String 12 | 13 | @Option(help: "Path to use for the output.") 14 | var output: String 15 | 16 | func run() throws { 17 | let fileManager = FileManager() 18 | 19 | let currentDirectory = URL(fileURLWithPath: fileManager.currentDirectoryPath) 20 | let reportFolder = URL(fileURLWithPath: output, relativeTo: currentDirectory) 21 | 22 | try fileManager.createDirectory(at: reportFolder, withIntermediateDirectories: true, attributes: nil) 23 | 24 | let appURL = try findApplication() 25 | let reporter = ArtefactReporter(appURL: appURL, reportFolder: reportFolder) 26 | try reporter.run() 27 | } 28 | 29 | private func findApplication() throws -> URL { 30 | let fileManager = FileManager() 31 | 32 | let currentDirectory = URL(fileURLWithPath: fileManager.currentDirectoryPath) 33 | let archiveFolder = URL(fileURLWithPath: archive, relativeTo: currentDirectory) 34 | 35 | let applicationsFolder = archiveFolder 36 | .appendingPathComponent("Products") 37 | .appendingPathComponent("Applications") 38 | 39 | guard let app = try fileManager.contentsOfDirectory(atPath: applicationsFolder.path).first(where: { $0.hasSuffix(".app") }) else { 40 | throw CustomError("Could not find an app in archive \(archiveFolder)") 41 | } 42 | 43 | return applicationsFolder.appendingPathComponent(app) 44 | } 45 | 46 | } 47 | 48 | -------------------------------------------------------------------------------- /Frameworks/GoogleDataTransport.framework/Headers/GDTCORUploader.h: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2018 Google 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | 17 | #import 18 | 19 | #import 20 | #import 21 | #import 22 | #import 23 | #import 24 | 25 | NS_ASSUME_NONNULL_BEGIN 26 | 27 | /** This protocol defines the common interface for uploader implementations. */ 28 | @protocol GDTCORUploader 29 | 30 | @required 31 | 32 | /** Returns YES if the uploader can make an upload attempt, NO otherwise. 33 | * 34 | * @param target The target being checked. 35 | * @param conditions The conditions that the upload attempt is likely to occur under. 36 | * @return YES if the uploader can make an upload attempt, NO otherwise. 37 | */ 38 | - (BOOL)readyToUploadTarget:(GDTCORTarget)target conditions:(GDTCORUploadConditions)conditions; 39 | 40 | /** Uploads events to the backend using this specific backend's chosen format. 41 | * 42 | * @param package The event package to upload. Make sure to call -completeDelivery. 43 | */ 44 | - (void)uploadPackage:(GDTCORUploadPackage *)package; 45 | 46 | @end 47 | 48 | NS_ASSUME_NONNULL_END 49 | -------------------------------------------------------------------------------- /Frameworks/GoogleDataTransport.framework/Headers/GDTCORRegistrar.h: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2018 Google 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | 17 | #import 18 | 19 | #import 20 | #import 21 | #import 22 | 23 | NS_ASSUME_NONNULL_BEGIN 24 | 25 | /** Manages the registration of targets with the transport SDK. */ 26 | @interface GDTCORRegistrar : NSObject 27 | 28 | /** Creates and/or returns the singleton instance. 29 | * 30 | * @return The singleton instance of this class. 31 | */ 32 | + (instancetype)sharedInstance; 33 | 34 | /** Registers a backend implementation with the GoogleDataTransport infrastructure. 35 | * 36 | * @param backend The backend object to register. 37 | * @param target The target this backend object will be responsible for. 38 | */ 39 | - (void)registerUploader:(id)backend target:(GDTCORTarget)target; 40 | 41 | /** Registers a event prioritizer implementation with the GoogleDataTransport infrastructure. 42 | * 43 | * @param prioritizer The prioritizer object to register. 44 | * @param target The target this prioritizer object will be responsible for. 45 | */ 46 | - (void)registerPrioritizer:(id)prioritizer target:(GDTCORTarget)target; 47 | 48 | @end 49 | 50 | NS_ASSUME_NONNULL_END 51 | -------------------------------------------------------------------------------- /Sonar/Assets.xcassets/Controls_RadioButton_Selected.imageset/radio_button_checked_24px.pdf: -------------------------------------------------------------------------------- 1 | %PDF-1.7 2 | 3 | 1 0 obj 4 | << >> 5 | endobj 6 | 7 | 2 0 obj 8 | << /Length 3 0 R >> 9 | stream 10 | /DeviceRGB CS 11 | /DeviceRGB cs 12 | q 13 | 1.000000 0.000000 -0.000000 1.000000 2.000000 2.000000 cm 14 | 0.000000 0.368627 0.721569 scn 15 | 10.000000 20.000000 m 16 | 4.480000 20.000000 0.000000 15.520000 0.000000 10.000000 c 17 | 0.000000 4.480000 4.480000 0.000000 10.000000 0.000000 c 18 | 15.520000 0.000000 20.000000 4.480000 20.000000 10.000000 c 19 | 20.000000 15.520000 15.520000 20.000000 10.000000 20.000000 c 20 | h 21 | 10.000000 2.000000 m 22 | 5.580000 2.000000 2.000000 5.580000 2.000000 10.000000 c 23 | 2.000000 14.420000 5.580000 18.000000 10.000000 18.000000 c 24 | 14.420000 18.000000 18.000000 14.420000 18.000000 10.000000 c 25 | 18.000000 5.580000 14.420000 2.000000 10.000000 2.000000 c 26 | h 27 | 5.000000 10.000000 m 28 | 5.000000 12.761424 7.238576 15.000000 10.000000 15.000000 c 29 | 12.761424 15.000000 15.000000 12.761424 15.000000 10.000000 c 30 | 15.000000 7.238576 12.761424 5.000000 10.000000 5.000000 c 31 | 7.238576 5.000000 5.000000 7.238576 5.000000 10.000000 c 32 | h 33 | f* 34 | n 35 | Q 36 | 37 | endstream 38 | endobj 39 | 40 | 3 0 obj 41 | 910 42 | endobj 43 | 44 | 4 0 obj 45 | << /Annots [] 46 | /Type /Page 47 | /MediaBox [ 0.000000 0.000000 24.000000 24.000000 ] 48 | /Resources 1 0 R 49 | /Contents 2 0 R 50 | /Parent 5 0 R 51 | >> 52 | endobj 53 | 54 | 5 0 obj 55 | << /Kids [ 4 0 R ] 56 | /Count 1 57 | /Type /Pages 58 | >> 59 | endobj 60 | 61 | 6 0 obj 62 | << /Type /Catalog 63 | /Pages 5 0 R 64 | >> 65 | endobj 66 | 67 | xref 68 | 0 7 69 | 0000000000 65535 f 70 | 0000000010 00000 n 71 | 0000000034 00000 n 72 | 0000001000 00000 n 73 | 0000001022 00000 n 74 | 0000001195 00000 n 75 | 0000001269 00000 n 76 | trailer 77 | << /ID [ (some) (id) ] 78 | /Root 6 0 R 79 | /Size 7 80 | >> 81 | startxref 82 | 1328 83 | %%EOF -------------------------------------------------------------------------------- /Frameworks/PromisesObjC.framework/Headers/FBLPromise+Do.h: -------------------------------------------------------------------------------- 1 | /** 2 | Copyright 2018 Google Inc. All rights reserved. 3 | 4 | Licensed under the Apache License, Version 2.0 (the "License"); 5 | you may not use this file except in compliance with the License. 6 | You may obtain a copy of the License at: 7 | 8 | http://www.apache.org/licenses/LICENSE-2.0 9 | 10 | Unless required by applicable law or agreed to in writing, software 11 | distributed under the License is distributed on an "AS IS" BASIS, 12 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | See the License for the specific language governing permissions and 14 | limitations under the License. 15 | */ 16 | 17 | #import "FBLPromise.h" 18 | 19 | NS_ASSUME_NONNULL_BEGIN 20 | 21 | @interface FBLPromise(DoAdditions) 22 | 23 | typedef id __nullable (^FBLPromiseDoWorkBlock)(void) NS_SWIFT_UNAVAILABLE(""); 24 | 25 | /** 26 | Creates a pending promise and executes `work` block asynchronously. 27 | 28 | @param work A block that returns a value or an error used to resolve the promise. 29 | @return A new pending promise. 30 | */ 31 | + (instancetype)do:(FBLPromiseDoWorkBlock)work NS_SWIFT_UNAVAILABLE(""); 32 | 33 | /** 34 | Creates a pending promise and executes `work` block asynchronously on the given queue. 35 | 36 | @param queue A queue to invoke the `work` block on. 37 | @param work A block that returns a value or an error used to resolve the promise. 38 | @return A new pending promise. 39 | */ 40 | + (instancetype)onQueue:(dispatch_queue_t)queue do:(FBLPromiseDoWorkBlock)work NS_REFINED_FOR_SWIFT; 41 | 42 | @end 43 | 44 | /** 45 | Convenience dot-syntax wrappers for `FBLPromise` `do` operators. 46 | Usage: FBLPromise.doOn(queue, ^(NSError *error) { ... }) 47 | */ 48 | @interface FBLPromise(DotSyntax_DoAdditions) 49 | 50 | + (FBLPromise * (^)(dispatch_queue_t, FBLPromiseDoWorkBlock))doOn FBL_PROMISES_DOT_SYNTAX 51 | NS_SWIFT_UNAVAILABLE(""); 52 | 53 | @end 54 | 55 | NS_ASSUME_NONNULL_END 56 | -------------------------------------------------------------------------------- /Frameworks/PromisesObjC.framework/Headers/FBLPromise+Always.h: -------------------------------------------------------------------------------- 1 | /** 2 | Copyright 2018 Google Inc. All rights reserved. 3 | 4 | Licensed under the Apache License, Version 2.0 (the "License"); 5 | you may not use this file except in compliance with the License. 6 | You may obtain a copy of the License at: 7 | 8 | http://www.apache.org/licenses/LICENSE-2.0 9 | 10 | Unless required by applicable law or agreed to in writing, software 11 | distributed under the License is distributed on an "AS IS" BASIS, 12 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | See the License for the specific language governing permissions and 14 | limitations under the License. 15 | */ 16 | 17 | #import "FBLPromise.h" 18 | 19 | NS_ASSUME_NONNULL_BEGIN 20 | 21 | @interface FBLPromise(AlwaysAdditions) 22 | 23 | typedef void (^FBLPromiseAlwaysWorkBlock)(void) NS_SWIFT_UNAVAILABLE(""); 24 | 25 | /** 26 | @param work A block that always executes, no matter if the receiver is rejected or fulfilled. 27 | @return A new pending promise to be resolved with same resolution as the receiver. 28 | */ 29 | - (FBLPromise *)always:(FBLPromiseAlwaysWorkBlock)work NS_SWIFT_UNAVAILABLE(""); 30 | 31 | /** 32 | @param queue A queue to dispatch on. 33 | @param work A block that always executes, no matter if the receiver is rejected or fulfilled. 34 | @return A new pending promise to be resolved with same resolution as the receiver. 35 | */ 36 | - (FBLPromise *)onQueue:(dispatch_queue_t)queue 37 | always:(FBLPromiseAlwaysWorkBlock)work NS_REFINED_FOR_SWIFT; 38 | 39 | @end 40 | 41 | /** 42 | Convenience dot-syntax wrappers for `FBLPromise` `always` operators. 43 | Usage: promise.always(^{...}) 44 | */ 45 | @interface FBLPromise(DotSyntax_AlwaysAdditions) 46 | 47 | - (FBLPromise* (^)(FBLPromiseAlwaysWorkBlock))always FBL_PROMISES_DOT_SYNTAX 48 | NS_SWIFT_UNAVAILABLE(""); 49 | - (FBLPromise* (^)(dispatch_queue_t, FBLPromiseAlwaysWorkBlock))alwaysOn FBL_PROMISES_DOT_SYNTAX 50 | NS_SWIFT_UNAVAILABLE(""); 51 | 52 | @end 53 | 54 | NS_ASSUME_NONNULL_END 55 | -------------------------------------------------------------------------------- /Reporting/Sources/Reporting/Artefact/ArtefactReporter.swift: -------------------------------------------------------------------------------- 1 | import Foundation 2 | 3 | struct ArtefactReporter { 4 | 5 | var appURL: URL 6 | 7 | var reportFolder: URL 8 | 9 | func run() throws { 10 | let report = try self.report(for: appURL) 11 | try report.save(to: reportFolder) 12 | } 13 | 14 | private func report(for appURL: URL) throws -> Report { 15 | 16 | let infoURL = appURL.appendingPathComponent("Info.plist") 17 | 18 | let data = try Data(contentsOf: infoURL) 19 | let appInfo = try PropertyListDecoder().decode(AppInfo.self, from: data) 20 | 21 | let appInfoReporter = AppInfoReporter(compilationRequirements: Sonar.compilationRequirements) 22 | let appFilesReporter = AppFilesReporter() 23 | 24 | return Report( 25 | pages: [ 26 | ReportPage( 27 | name: "Overview", 28 | sections: [ 29 | [ 30 | ReportSection( 31 | title: "App Icon", 32 | content: "![App icon](Attachments/Icon.png)"), 33 | ], 34 | appInfoReporter.overviewSections(for: appInfo), 35 | [ 36 | ReportSection( 37 | title: "Integrity Checks", 38 | content: "See [Integrity Checks](IntegrityChecks.md) for more technical reports."), 39 | ], 40 | ].flatMap { $0 } 41 | ), 42 | ReportPage( 43 | name: "IntegrityChecks", 44 | sections: [ 45 | appInfoReporter.technicalSections(for: appInfo), 46 | appFilesReporter.reportSections(forAppAt: appURL, info: appInfo), 47 | ].flatMap { $0 } 48 | ), 49 | ], 50 | attachments: appFilesReporter.attachments(forAppAt: appURL, info: appInfo) 51 | ) 52 | } 53 | } 54 | 55 | -------------------------------------------------------------------------------- /Reporting/Sources/Reporting/Commands/IPAReportCommand.swift: -------------------------------------------------------------------------------- 1 | import Foundation 2 | import ArgumentParser 3 | 4 | struct IPAReportCommand: ParsableCommand { 5 | static var configuration = CommandConfiguration( 6 | commandName: "ipa", 7 | abstract: "Produces report from an ipa file." 8 | ) 9 | 10 | @Argument(help: "Path to the ipa to make a report for.") 11 | var ipa: String 12 | 13 | @Option(help: "Path to use for the output.") 14 | var output: String 15 | 16 | func run() throws { 17 | let fileManager = FileManager() 18 | 19 | let currentDirectory = URL(fileURLWithPath: fileManager.currentDirectoryPath) 20 | let reportFolder = URL(fileURLWithPath: output, relativeTo: currentDirectory) 21 | 22 | try fileManager.createDirectory(at: reportFolder, withIntermediateDirectories: true, attributes: nil) 23 | 24 | try withApplication { appURL in 25 | let reporter = ArtefactReporter(appURL: appURL, reportFolder: reportFolder) 26 | try reporter.run() 27 | } 28 | } 29 | 30 | private func withApplication(perform work: (URL) throws -> Void) throws { 31 | let fileManager = FileManager() 32 | 33 | let currentDirectory = URL(fileURLWithPath: fileManager.currentDirectoryPath) 34 | let ipaURL = URL(fileURLWithPath: ipa, relativeTo: currentDirectory) 35 | 36 | let temp = try fileManager.url(for: .itemReplacementDirectory, in: .userDomainMask, appropriateFor: ipaURL, create: true) 37 | defer { try? fileManager.removeItem(at: temp) } 38 | 39 | try Bash.run("unzip", ipa, "-d", "'\(temp.path)'") 40 | 41 | let applicationsFolder = temp 42 | .appendingPathComponent("Payload") 43 | 44 | guard let app = try fileManager.contentsOfDirectory(atPath: applicationsFolder.path).first(where: { $0.hasSuffix(".app") }) else { 45 | throw CustomError("Could not extract an app from \(ipa)") 46 | } 47 | 48 | try work(applicationsFolder.appendingPathComponent(app)) 49 | } 50 | 51 | } 52 | 53 | -------------------------------------------------------------------------------- /Frameworks/PromisesObjC.framework/Headers/FBLPromise+Timeout.h: -------------------------------------------------------------------------------- 1 | /** 2 | Copyright 2018 Google Inc. All rights reserved. 3 | 4 | Licensed under the Apache License, Version 2.0 (the "License"); 5 | you may not use this file except in compliance with the License. 6 | You may obtain a copy of the License at: 7 | 8 | http://www.apache.org/licenses/LICENSE-2.0 9 | 10 | Unless required by applicable law or agreed to in writing, software 11 | distributed under the License is distributed on an "AS IS" BASIS, 12 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | See the License for the specific language governing permissions and 14 | limitations under the License. 15 | */ 16 | 17 | #import "FBLPromise.h" 18 | 19 | NS_ASSUME_NONNULL_BEGIN 20 | 21 | @interface FBLPromise(TimeoutAdditions) 22 | 23 | /** 24 | Waits for a promise with the specified `timeout`. 25 | 26 | @param interval Time to wait in seconds. 27 | @return A new pending promise that gets either resolved with same resolution as the receiver or 28 | rejected with `FBLPromiseErrorCodeTimedOut` error code in `FBLPromiseErrorDomain`. 29 | */ 30 | - (FBLPromise *)timeout:(NSTimeInterval)interval NS_SWIFT_UNAVAILABLE(""); 31 | 32 | /** 33 | Waits for a promise with the specified `timeout`. 34 | 35 | @param queue A queue to dispatch on. 36 | @param interval Time to wait in seconds. 37 | @return A new pending promise that gets either resolved with same resolution as the receiver or 38 | rejected with `FBLPromiseErrorCodeTimedOut` error code in `FBLPromiseErrorDomain`. 39 | */ 40 | - (FBLPromise *)onQueue:(dispatch_queue_t)queue 41 | timeout:(NSTimeInterval)interval NS_REFINED_FOR_SWIFT; 42 | 43 | @end 44 | 45 | /** 46 | Convenience dot-syntax wrappers for `FBLPromise` `timeout` operators. 47 | Usage: promise.timeout(...) 48 | */ 49 | @interface FBLPromise(DotSyntax_TimeoutAdditions) 50 | 51 | - (FBLPromise* (^)(NSTimeInterval))timeout FBL_PROMISES_DOT_SYNTAX NS_SWIFT_UNAVAILABLE(""); 52 | - (FBLPromise* (^)(dispatch_queue_t, NSTimeInterval))timeoutOn FBL_PROMISES_DOT_SYNTAX 53 | NS_SWIFT_UNAVAILABLE(""); 54 | 55 | @end 56 | 57 | NS_ASSUME_NONNULL_END 58 | -------------------------------------------------------------------------------- /Frameworks/GoogleDataTransport.framework/Headers/GDTCORClock.h: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2018 Google 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | 17 | #import 18 | 19 | NS_ASSUME_NONNULL_BEGIN 20 | 21 | /** This class manages the device clock and produces snapshots of the current time. */ 22 | @interface GDTCORClock : NSObject 23 | 24 | /** The wallclock time, UTC, in milliseconds. */ 25 | @property(nonatomic, readonly) int64_t timeMillis; 26 | 27 | /** The offset from UTC in seconds. */ 28 | @property(nonatomic, readonly) int64_t timezoneOffsetSeconds; 29 | 30 | /** The kernel boot time when this clock was created. */ 31 | @property(nonatomic, readonly) int64_t kernelBootTime; 32 | 33 | /** The device uptime when this clock was created. */ 34 | @property(nonatomic, readonly) int64_t uptime; 35 | 36 | /** Creates a GDTCORClock object using the current time and offsets. 37 | * 38 | * @return A new GDTCORClock object representing the current time state. 39 | */ 40 | + (instancetype)snapshot; 41 | 42 | /** Creates a GDTCORClock object representing a time in the future, relative to now. 43 | * 44 | * @param millisInTheFuture The millis in the future from now this clock should represent. 45 | * @return An instance representing a future time. 46 | */ 47 | + (instancetype)clockSnapshotInTheFuture:(uint64_t)millisInTheFuture; 48 | 49 | /** Compares one clock with another, returns YES if the caller is after the parameter. 50 | * 51 | * @return YES if the calling clock's time is after the given clock's time. 52 | */ 53 | - (BOOL)isAfter:(GDTCORClock *)otherClock; 54 | 55 | @end 56 | 57 | NS_ASSUME_NONNULL_END 58 | -------------------------------------------------------------------------------- /Frameworks/Protobuf.framework/Headers/GPBProtocolBuffers_RuntimeSupport.h: -------------------------------------------------------------------------------- 1 | // Protocol Buffers - Google's data interchange format 2 | // Copyright 2008 Google Inc. All rights reserved. 3 | // https://developers.google.com/protocol-buffers/ 4 | // 5 | // Redistribution and use in source and binary forms, with or without 6 | // modification, are permitted provided that the following conditions are 7 | // met: 8 | // 9 | // * Redistributions of source code must retain the above copyright 10 | // notice, this list of conditions and the following disclaimer. 11 | // * Redistributions in binary form must reproduce the above 12 | // copyright notice, this list of conditions and the following disclaimer 13 | // in the documentation and/or other materials provided with the 14 | // distribution. 15 | // * Neither the name of Google Inc. nor the names of its 16 | // contributors may be used to endorse or promote products derived from 17 | // this software without specific prior written permission. 18 | // 19 | // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 20 | // "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 21 | // LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR 22 | // A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT 23 | // OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, 24 | // SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT 25 | // LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, 26 | // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY 27 | // THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 28 | // (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 29 | // OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 30 | 31 | // This header is meant to only be used by the generated source, it should not 32 | // be included in code using protocol buffers. 33 | 34 | #import "GPBBootstrap.h" 35 | 36 | #import "GPBDescriptor_PackagePrivate.h" 37 | #import "GPBExtensionInternals.h" 38 | #import "GPBMessage_PackagePrivate.h" 39 | #import "GPBRootObject_PackagePrivate.h" 40 | #import "GPBUtilities_PackagePrivate.h" 41 | -------------------------------------------------------------------------------- /Frameworks/Protobuf.framework/Headers/GPBRootObject_PackagePrivate.h: -------------------------------------------------------------------------------- 1 | // Protocol Buffers - Google's data interchange format 2 | // Copyright 2008 Google Inc. All rights reserved. 3 | // https://developers.google.com/protocol-buffers/ 4 | // 5 | // Redistribution and use in source and binary forms, with or without 6 | // modification, are permitted provided that the following conditions are 7 | // met: 8 | // 9 | // * Redistributions of source code must retain the above copyright 10 | // notice, this list of conditions and the following disclaimer. 11 | // * Redistributions in binary form must reproduce the above 12 | // copyright notice, this list of conditions and the following disclaimer 13 | // in the documentation and/or other materials provided with the 14 | // distribution. 15 | // * Neither the name of Google Inc. nor the names of its 16 | // contributors may be used to endorse or promote products derived from 17 | // this software without specific prior written permission. 18 | // 19 | // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 20 | // "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 21 | // LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR 22 | // A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT 23 | // OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, 24 | // SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT 25 | // LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, 26 | // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY 27 | // THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 28 | // (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 29 | // OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 30 | 31 | #import 32 | 33 | #import "GPBRootObject.h" 34 | 35 | @class GPBExtensionDescriptor; 36 | 37 | @interface GPBRootObject () 38 | 39 | // Globally register. 40 | + (void)globallyRegisterExtension:(GPBExtensionDescriptor *)field; 41 | 42 | @end 43 | 44 | // Returns YES if the selector was resolved and added to the class, 45 | // NO otherwise. 46 | BOOL GPBResolveExtensionClassMethod(Class self, SEL sel); 47 | -------------------------------------------------------------------------------- /Frameworks/PromisesObjC.framework/Headers/FBLPromise+Delay.h: -------------------------------------------------------------------------------- 1 | /** 2 | Copyright 2018 Google Inc. All rights reserved. 3 | 4 | Licensed under the Apache License, Version 2.0 (the "License"); 5 | you may not use this file except in compliance with the License. 6 | You may obtain a copy of the License at: 7 | 8 | http://www.apache.org/licenses/LICENSE-2.0 9 | 10 | Unless required by applicable law or agreed to in writing, software 11 | distributed under the License is distributed on an "AS IS" BASIS, 12 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | See the License for the specific language governing permissions and 14 | limitations under the License. 15 | */ 16 | 17 | #import "FBLPromise.h" 18 | 19 | NS_ASSUME_NONNULL_BEGIN 20 | 21 | @interface FBLPromise(DelayAdditions) 22 | 23 | /** 24 | Creates a new pending promise that fulfills with the same value as `self` after the `delay`, or 25 | rejects with the same error immediately. 26 | 27 | @param interval Time to wait in seconds. 28 | @return A new pending promise that fulfills at least `delay` seconds later than `self`, or rejects 29 | with the same error immediately. 30 | */ 31 | - (FBLPromise *)delay:(NSTimeInterval)interval NS_SWIFT_UNAVAILABLE(""); 32 | 33 | /** 34 | Creates a new pending promise that fulfills with the same value as `self` after the `delay`, or 35 | rejects with the same error immediately. 36 | 37 | @param queue A queue to dispatch on. 38 | @param interval Time to wait in seconds. 39 | @return A new pending promise that fulfills at least `delay` seconds later than `self`, or rejects 40 | with the same error immediately. 41 | */ 42 | - (FBLPromise *)onQueue:(dispatch_queue_t)queue 43 | delay:(NSTimeInterval)interval NS_REFINED_FOR_SWIFT; 44 | 45 | @end 46 | 47 | /** 48 | Convenience dot-syntax wrappers for `FBLPromise` `delay` operators. 49 | Usage: promise.delay(...) 50 | */ 51 | @interface FBLPromise(DotSyntax_DelayAdditions) 52 | 53 | - (FBLPromise * (^)(NSTimeInterval))delay FBL_PROMISES_DOT_SYNTAX NS_SWIFT_UNAVAILABLE(""); 54 | - (FBLPromise * (^)(dispatch_queue_t, NSTimeInterval))delayOn FBL_PROMISES_DOT_SYNTAX 55 | NS_SWIFT_UNAVAILABLE(""); 56 | 57 | @end 58 | 59 | NS_ASSUME_NONNULL_END 60 | -------------------------------------------------------------------------------- /Frameworks/Protobuf.framework/Headers/GPBUnknownField_PackagePrivate.h: -------------------------------------------------------------------------------- 1 | // Protocol Buffers - Google's data interchange format 2 | // Copyright 2008 Google Inc. All rights reserved. 3 | // https://developers.google.com/protocol-buffers/ 4 | // 5 | // Redistribution and use in source and binary forms, with or without 6 | // modification, are permitted provided that the following conditions are 7 | // met: 8 | // 9 | // * Redistributions of source code must retain the above copyright 10 | // notice, this list of conditions and the following disclaimer. 11 | // * Redistributions in binary form must reproduce the above 12 | // copyright notice, this list of conditions and the following disclaimer 13 | // in the documentation and/or other materials provided with the 14 | // distribution. 15 | // * Neither the name of Google Inc. nor the names of its 16 | // contributors may be used to endorse or promote products derived from 17 | // this software without specific prior written permission. 18 | // 19 | // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 20 | // "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 21 | // LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR 22 | // A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT 23 | // OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, 24 | // SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT 25 | // LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, 26 | // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY 27 | // THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 28 | // (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 29 | // OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 30 | 31 | #import 32 | 33 | #import "GPBUnknownField.h" 34 | 35 | @class GPBCodedOutputStream; 36 | 37 | @interface GPBUnknownField () 38 | 39 | - (void)writeToOutput:(GPBCodedOutputStream *)output; 40 | - (size_t)serializedSize; 41 | 42 | - (void)writeAsMessageSetExtensionToOutput:(GPBCodedOutputStream *)output; 43 | - (size_t)serializedSizeAsMessageSetExtension; 44 | 45 | - (void)mergeFromField:(GPBUnknownField *)other; 46 | 47 | @end 48 | -------------------------------------------------------------------------------- /Frameworks/GoogleUtilities.framework/Headers/GULNSData+zlib.h: -------------------------------------------------------------------------------- 1 | // Copyright 2018 Google 2 | // 3 | // Licensed under the Apache License, Version 2.0 (the "License"); 4 | // you may not use this file except in compliance with the License. 5 | // You may obtain a copy of the License at 6 | // 7 | // http://www.apache.org/licenses/LICENSE-2.0 8 | // 9 | // Unless required by applicable law or agreed to in writing, software 10 | // distributed under the License is distributed on an "AS IS" BASIS, 11 | // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 | // See the License for the specific language governing permissions and 13 | // limitations under the License. 14 | 15 | #import 16 | 17 | /// This is a copy of Google Toolbox for Mac library to avoid creating an extra framework. 18 | 19 | // NOTE: For 64bit, none of these apis handle input sizes >32bits, they will return nil when given 20 | // such data. To handle data of that size you really should be streaming it rather then doing it all 21 | // in memory. 22 | 23 | @interface NSData (GULGzip) 24 | 25 | /// Returns an data as the result of decompressing the payload of |data|.The data to decompress must 26 | /// be a gzipped payloads. 27 | + (NSData *)gul_dataByInflatingGzippedData:(NSData *)data error:(NSError **)error; 28 | 29 | /// Returns an compressed data with the result of gzipping the payload of |data|. Uses the default 30 | /// compression level. 31 | + (NSData *)gul_dataByGzippingData:(NSData *)data error:(NSError **)error; 32 | 33 | FOUNDATION_EXPORT NSString *const GULNSDataZlibErrorDomain; 34 | FOUNDATION_EXPORT NSString *const GULNSDataZlibErrorKey; // NSNumber 35 | FOUNDATION_EXPORT NSString *const GULNSDataZlibRemainingBytesKey; // NSNumber 36 | 37 | typedef NS_ENUM(NSInteger, GULNSDataZlibError) { 38 | GULNSDataZlibErrorGreaterThan32BitsToCompress = 1024, 39 | // An internal zlib error. 40 | // GULNSDataZlibErrorKey will contain the error value. 41 | // NSLocalizedDescriptionKey may contain an error string from zlib. 42 | // Look in zlib.h for list of errors. 43 | GULNSDataZlibErrorInternal, 44 | // There was left over data in the buffer that was not used. 45 | // GULNSDataZlibRemainingBytesKey will contain number of remaining bytes. 46 | GULNSDataZlibErrorDataRemaining 47 | }; 48 | 49 | @end 50 | -------------------------------------------------------------------------------- /fastlane/Fastfile: -------------------------------------------------------------------------------- 1 | # vim: ft=ruby: 2 | 3 | require "fileutils" 4 | 5 | default_platform(:ios) 6 | 7 | platform :ios do 8 | # This was a bear to get working and I'm not entirely convinced that we 9 | # won't need this command again in the future, so I'm leaving this command 10 | # here for posterity. 11 | # 12 | # security set-key-partition-list -S apple-tool:,apple: -s -k "" \ 13 | # ~/Library/Keychains/fastlane_tmp_keychain-db 14 | 15 | module Sonar 16 | Config = Struct.new(:bundle_id, :apple_id, keyword_init: true) 17 | 18 | CONFIGS = { 19 | beta: Config.new( 20 | bundle_id: "uk.nhs.nhsx.beta.CoLocate", 21 | apple_id: 1504244021, 22 | ), 23 | internal: Config.new( 24 | bundle_id: "uk.nhs.nhsx.sonar.internal", 25 | apple_id: 1507438009, 26 | ), 27 | production: Config.new( 28 | bundle_id: "uk.nhs.nhsx.sonar", 29 | apple_id: 1507396059, 30 | ), 31 | } 32 | end 33 | 34 | desc "Cut a release for Test Flight" 35 | lane :release do |options| 36 | sonar_env = options.fetch(:sonar_env).to_sym 37 | sonar_config = Sonar::CONFIGS.fetch(sonar_env) 38 | 39 | setup_ci() 40 | 41 | sync_code_signing( 42 | type: "appstore", 43 | readonly: true, 44 | app_identifier: sonar_config.bundle_id, 45 | git_url: "./ci/match", 46 | ) 47 | 48 | update_code_signing_settings( 49 | use_automatic_signing: false, 50 | path: "./Sonar.xcodeproj", 51 | targets: ["Sonar"], 52 | code_sign_identity: "iPhone Distribution", 53 | profile_name: "match AppStore #{sonar_config.bundle_id}", 54 | ) 55 | 56 | Dir.chdir ".." do 57 | File.write(".secret/Sonar.xcconfig", <<~XCCONFIG) 58 | #include "Sonar/Environments/#{sonar_env}.xcconfig" 59 | XCCONFIG 60 | sh "./bin/make-environment <<< $ENVIRONMENT_JSON_#{sonar_env.upcase} > .secret/Environment.swift" 61 | File.write(".secret/GoogleService-Info.plist", ENV.fetch("GOOGLE_SERVICE_INFO_PLIST_#{sonar_env.upcase}")) 62 | end 63 | 64 | build_app( 65 | scheme: "Sonar", 66 | ) 67 | 68 | upload_to_testflight( 69 | username: ENV.fetch("APPLE_USERNAME"), 70 | apple_id: sonar_config.apple_id.to_s, 71 | skip_waiting_for_build_processing: true, 72 | ) 73 | end 74 | end 75 | -------------------------------------------------------------------------------- /Frameworks/GoogleDataTransport.framework/Headers/GDTCORLifecycle.h: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2019 Google 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | 17 | #import 18 | 19 | #import 20 | 21 | @class GDTCOREvent; 22 | 23 | NS_ASSUME_NONNULL_BEGIN 24 | 25 | /** A protocol defining the lifecycle events objects in the library must respond to immediately. */ 26 | @protocol GDTCORLifecycleProtocol 27 | 28 | @optional 29 | 30 | /** Indicates an imminent app termination in the rare occurrence when -applicationWillTerminate: has 31 | * been called. 32 | * 33 | * @param app The GDTCORApplication instance. 34 | */ 35 | - (void)appWillTerminate:(GDTCORApplication *)app; 36 | 37 | /** Indicates that the app is moving to background and eventual suspension or the current UIScene is 38 | * deactivating. 39 | * 40 | * @param app The GDTCORApplication instance. 41 | */ 42 | - (void)appWillBackground:(GDTCORApplication *)app; 43 | 44 | /** Indicates that the app is resuming operation or a UIScene is activating. 45 | * 46 | * @param app The GDTCORApplication instance. 47 | */ 48 | - (void)appWillForeground:(GDTCORApplication *)app; 49 | 50 | @end 51 | 52 | /** This class manages the library's response to app lifecycle events. 53 | * 54 | * When backgrounding, the library doesn't stop processing events, it's just that several background 55 | * tasks will end up being created for every event that's sent, and the stateful objects of the 56 | * library (GDTCORStorage and GDTCORUploadCoordinator singletons) will deserialize themselves from 57 | * and to disk before and after every operation, respectively. 58 | */ 59 | @interface GDTCORLifecycle : NSObject 60 | 61 | @end 62 | 63 | NS_ASSUME_NONNULL_END 64 | -------------------------------------------------------------------------------- /Frameworks/PromisesObjC.framework/Headers/FBLPromise+Catch.h: -------------------------------------------------------------------------------- 1 | /** 2 | Copyright 2018 Google Inc. All rights reserved. 3 | 4 | Licensed under the Apache License, Version 2.0 (the "License"); 5 | you may not use this file except in compliance with the License. 6 | You may obtain a copy of the License at: 7 | 8 | http://www.apache.org/licenses/LICENSE-2.0 9 | 10 | Unless required by applicable law or agreed to in writing, software 11 | distributed under the License is distributed on an "AS IS" BASIS, 12 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | See the License for the specific language governing permissions and 14 | limitations under the License. 15 | */ 16 | 17 | #import "FBLPromise.h" 18 | 19 | NS_ASSUME_NONNULL_BEGIN 20 | 21 | @interface FBLPromise(CatchAdditions) 22 | 23 | typedef void (^FBLPromiseCatchWorkBlock)(NSError *error) NS_SWIFT_UNAVAILABLE(""); 24 | 25 | /** 26 | Creates a pending promise which eventually gets resolved with same resolution as the receiver. 27 | If receiver is rejected, then `reject` block is executed asynchronously. 28 | 29 | @param reject A block to handle the error that receiver was rejected with. 30 | @return A new pending promise. 31 | */ 32 | - (FBLPromise *)catch:(FBLPromiseCatchWorkBlock)reject NS_SWIFT_UNAVAILABLE(""); 33 | 34 | /** 35 | Creates a pending promise which eventually gets resolved with same resolution as the receiver. 36 | If receiver is rejected, then `reject` block is executed asynchronously on the given queue. 37 | 38 | @param queue A queue to invoke the `reject` block on. 39 | @param reject A block to handle the error that receiver was rejected with. 40 | @return A new pending promise. 41 | */ 42 | - (FBLPromise *)onQueue:(dispatch_queue_t)queue 43 | catch:(FBLPromiseCatchWorkBlock)reject NS_REFINED_FOR_SWIFT; 44 | 45 | @end 46 | 47 | /** 48 | Convenience dot-syntax wrappers for `FBLPromise` `catch` operators. 49 | Usage: promise.catch(^(NSError *error) { ... }) 50 | */ 51 | @interface FBLPromise(DotSyntax_CatchAdditions) 52 | 53 | - (FBLPromise* (^)(FBLPromiseCatchWorkBlock))catch FBL_PROMISES_DOT_SYNTAX NS_SWIFT_UNAVAILABLE(""); 54 | - (FBLPromise* (^)(dispatch_queue_t, FBLPromiseCatchWorkBlock))catchOn FBL_PROMISES_DOT_SYNTAX 55 | NS_SWIFT_UNAVAILABLE(""); 56 | 57 | @end 58 | 59 | NS_ASSUME_NONNULL_END 60 | -------------------------------------------------------------------------------- /Frameworks/Protobuf.framework/Headers/Empty.pbobjc.h: -------------------------------------------------------------------------------- 1 | // Generated by the protocol buffer compiler. DO NOT EDIT! 2 | // source: google/protobuf/empty.proto 3 | 4 | // This CPP symbol can be defined to use imports that match up to the framework 5 | // imports needed when using CocoaPods. 6 | #if !defined(GPB_USE_PROTOBUF_FRAMEWORK_IMPORTS) 7 | #define GPB_USE_PROTOBUF_FRAMEWORK_IMPORTS 0 8 | #endif 9 | 10 | #if GPB_USE_PROTOBUF_FRAMEWORK_IMPORTS 11 | #import 12 | #import 13 | #import 14 | #else 15 | #import "GPBDescriptor.h" 16 | #import "GPBMessage.h" 17 | #import "GPBRootObject.h" 18 | #endif 19 | 20 | #if GOOGLE_PROTOBUF_OBJC_VERSION < 30002 21 | #error This file was generated by a newer version of protoc which is incompatible with your Protocol Buffer library sources. 22 | #endif 23 | #if 30002 < GOOGLE_PROTOBUF_OBJC_MIN_SUPPORTED_VERSION 24 | #error This file was generated by an older version of protoc which is incompatible with your Protocol Buffer library sources. 25 | #endif 26 | 27 | // @@protoc_insertion_point(imports) 28 | 29 | #pragma clang diagnostic push 30 | #pragma clang diagnostic ignored "-Wdeprecated-declarations" 31 | 32 | CF_EXTERN_C_BEGIN 33 | 34 | NS_ASSUME_NONNULL_BEGIN 35 | 36 | #pragma mark - GPBEmptyRoot 37 | 38 | /** 39 | * Exposes the extension registry for this file. 40 | * 41 | * The base class provides: 42 | * @code 43 | * + (GPBExtensionRegistry *)extensionRegistry; 44 | * @endcode 45 | * which is a @c GPBExtensionRegistry that includes all the extensions defined by 46 | * this file and all files that it depends on. 47 | **/ 48 | @interface GPBEmptyRoot : GPBRootObject 49 | @end 50 | 51 | #pragma mark - GPBEmpty 52 | 53 | /** 54 | * A generic empty message that you can re-use to avoid defining duplicated 55 | * empty messages in your APIs. A typical example is to use it as the request 56 | * or the response type of an API method. For instance: 57 | * 58 | * service Foo { 59 | * rpc Bar(google.protobuf.Empty) returns (google.protobuf.Empty); 60 | * } 61 | * 62 | * The JSON representation for `Empty` is empty JSON object `{}`. 63 | **/ 64 | @interface GPBEmpty : GPBMessage 65 | 66 | @end 67 | 68 | NS_ASSUME_NONNULL_END 69 | 70 | CF_EXTERN_C_END 71 | 72 | #pragma clang diagnostic pop 73 | 74 | // @@protoc_insertion_point(global_scope) 75 | -------------------------------------------------------------------------------- /Frameworks/Protobuf.framework/Headers/GPBRootObject.h: -------------------------------------------------------------------------------- 1 | // Protocol Buffers - Google's data interchange format 2 | // Copyright 2008 Google Inc. All rights reserved. 3 | // https://developers.google.com/protocol-buffers/ 4 | // 5 | // Redistribution and use in source and binary forms, with or without 6 | // modification, are permitted provided that the following conditions are 7 | // met: 8 | // 9 | // * Redistributions of source code must retain the above copyright 10 | // notice, this list of conditions and the following disclaimer. 11 | // * Redistributions in binary form must reproduce the above 12 | // copyright notice, this list of conditions and the following disclaimer 13 | // in the documentation and/or other materials provided with the 14 | // distribution. 15 | // * Neither the name of Google Inc. nor the names of its 16 | // contributors may be used to endorse or promote products derived from 17 | // this software without specific prior written permission. 18 | // 19 | // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 20 | // "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 21 | // LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR 22 | // A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT 23 | // OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, 24 | // SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT 25 | // LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, 26 | // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY 27 | // THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 28 | // (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 29 | // OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 30 | 31 | #import 32 | 33 | @class GPBExtensionRegistry; 34 | 35 | NS_ASSUME_NONNULL_BEGIN 36 | 37 | /** 38 | * Every generated proto file defines a local "Root" class that exposes a 39 | * GPBExtensionRegistry for all the extensions defined by that file and 40 | * the files it depends on. 41 | **/ 42 | @interface GPBRootObject : NSObject 43 | 44 | /** 45 | * @return An extension registry for the given file and all the files it depends 46 | * on. 47 | **/ 48 | + (GPBExtensionRegistry *)extensionRegistry; 49 | 50 | @end 51 | 52 | NS_ASSUME_NONNULL_END 53 | -------------------------------------------------------------------------------- /Frameworks/PromisesObjC.framework/Headers/FBLPromise+Recover.h: -------------------------------------------------------------------------------- 1 | /** 2 | Copyright 2018 Google Inc. All rights reserved. 3 | 4 | Licensed under the Apache License, Version 2.0 (the "License"); 5 | you may not use this file except in compliance with the License. 6 | You may obtain a copy of the License at: 7 | 8 | http://www.apache.org/licenses/LICENSE-2.0 9 | 10 | Unless required by applicable law or agreed to in writing, software 11 | distributed under the License is distributed on an "AS IS" BASIS, 12 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | See the License for the specific language governing permissions and 14 | limitations under the License. 15 | */ 16 | 17 | #import "FBLPromise.h" 18 | 19 | NS_ASSUME_NONNULL_BEGIN 20 | 21 | @interface FBLPromise(RecoverAdditions) 22 | 23 | typedef id __nullable (^FBLPromiseRecoverWorkBlock)(NSError *error) NS_SWIFT_UNAVAILABLE(""); 24 | 25 | /** 26 | Provides a new promise to recover in case the receiver gets rejected. 27 | 28 | @param recovery A block to handle the error that the receiver was rejected with. 29 | @return A new pending promise to use instead of the rejected one that gets resolved with resolution 30 | returned from `recovery` block. 31 | */ 32 | - (FBLPromise *)recover:(FBLPromiseRecoverWorkBlock)recovery NS_SWIFT_UNAVAILABLE(""); 33 | 34 | /** 35 | Provides a new promise to recover in case the receiver gets rejected. 36 | 37 | @param queue A queue to dispatch on. 38 | @param recovery A block to handle the error that the receiver was rejected with. 39 | @return A new pending promise to use instead of the rejected one that gets resolved with resolution 40 | returned from `recovery` block. 41 | */ 42 | - (FBLPromise *)onQueue:(dispatch_queue_t)queue 43 | recover:(FBLPromiseRecoverWorkBlock)recovery NS_REFINED_FOR_SWIFT; 44 | 45 | @end 46 | 47 | /** 48 | Convenience dot-syntax wrappers for `FBLPromise` `recover` operators. 49 | Usage: promise.recover(^id(NSError *error) {...}) 50 | */ 51 | @interface FBLPromise(DotSyntax_RecoverAdditions) 52 | 53 | - (FBLPromise * (^)(FBLPromiseRecoverWorkBlock))recover FBL_PROMISES_DOT_SYNTAX 54 | NS_SWIFT_UNAVAILABLE(""); 55 | - (FBLPromise * (^)(dispatch_queue_t, FBLPromiseRecoverWorkBlock))recoverOn FBL_PROMISES_DOT_SYNTAX 56 | NS_SWIFT_UNAVAILABLE(""); 57 | 58 | @end 59 | 60 | NS_ASSUME_NONNULL_END 61 | -------------------------------------------------------------------------------- /Frameworks/PromisesObjC.framework/Headers/FBLPromise+Testing.h: -------------------------------------------------------------------------------- 1 | /** 2 | Copyright 2018 Google Inc. All rights reserved. 3 | 4 | Licensed under the Apache License, Version 2.0 (the "License"); 5 | you may not use this file except in compliance with the License. 6 | You may obtain a copy of the License at: 7 | 8 | http://www.apache.org/licenses/LICENSE-2.0 9 | 10 | Unless required by applicable law or agreed to in writing, software 11 | distributed under the License is distributed on an "AS IS" BASIS, 12 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | See the License for the specific language governing permissions and 14 | limitations under the License. 15 | */ 16 | 17 | #import "FBLPromise.h" 18 | 19 | NS_ASSUME_NONNULL_BEGIN 20 | 21 | /** 22 | Waits for all scheduled promises blocks. 23 | 24 | @param timeout Maximum time to wait. 25 | @return YES if all promises blocks have completed before the timeout and NO otherwise. 26 | */ 27 | FOUNDATION_EXTERN BOOL FBLWaitForPromisesWithTimeout(NSTimeInterval timeout) NS_REFINED_FOR_SWIFT; 28 | 29 | @interface FBLPromise(TestingAdditions) 30 | 31 | /** 32 | Dispatch group for promises that is typically used to wait for all scheduled blocks. 33 | */ 34 | @property(class, nonatomic, readonly) dispatch_group_t dispatchGroup NS_REFINED_FOR_SWIFT; 35 | 36 | /** 37 | Properties to get the current state of the promise. 38 | */ 39 | @property(nonatomic, readonly) BOOL isPending NS_REFINED_FOR_SWIFT; 40 | @property(nonatomic, readonly) BOOL isFulfilled NS_REFINED_FOR_SWIFT; 41 | @property(nonatomic, readonly) BOOL isRejected NS_REFINED_FOR_SWIFT; 42 | 43 | /** 44 | Set of arbitrary objects to keep strongly while the promise is pending. 45 | Becomes nil after the promise has been resolved. 46 | */ 47 | @property(nonatomic, readonly, nullable) NSMutableSet *pendingObjects NS_REFINED_FOR_SWIFT; 48 | 49 | /** 50 | Value the promise was fulfilled with. 51 | Can be nil if the promise is still pending, was resolved with nil or after it has been rejected. 52 | */ 53 | @property(nonatomic, readonly, nullable) Value value NS_REFINED_FOR_SWIFT; 54 | 55 | /** 56 | Error the promise was rejected with. 57 | Can be nil if the promise is still pending or after it has been fulfilled. 58 | */ 59 | @property(nonatomic, readonly, nullable) NSError *error NS_REFINED_FOR_SWIFT; 60 | 61 | @end 62 | 63 | NS_ASSUME_NONNULL_END 64 | -------------------------------------------------------------------------------- /Frameworks/PromisesObjC.framework/Headers/FBLPromise+Async.h: -------------------------------------------------------------------------------- 1 | /** 2 | Copyright 2018 Google Inc. All rights reserved. 3 | 4 | Licensed under the Apache License, Version 2.0 (the "License"); 5 | you may not use this file except in compliance with the License. 6 | You may obtain a copy of the License at: 7 | 8 | http://www.apache.org/licenses/LICENSE-2.0 9 | 10 | Unless required by applicable law or agreed to in writing, software 11 | distributed under the License is distributed on an "AS IS" BASIS, 12 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | See the License for the specific language governing permissions and 14 | limitations under the License. 15 | */ 16 | 17 | #import "FBLPromise.h" 18 | 19 | NS_ASSUME_NONNULL_BEGIN 20 | 21 | @interface FBLPromise(AsyncAdditions) 22 | 23 | typedef void (^FBLPromiseFulfillBlock)(Value __nullable value) NS_SWIFT_UNAVAILABLE(""); 24 | typedef void (^FBLPromiseRejectBlock)(NSError *error) NS_SWIFT_UNAVAILABLE(""); 25 | typedef void (^FBLPromiseAsyncWorkBlock)(FBLPromiseFulfillBlock fulfill, 26 | FBLPromiseRejectBlock reject) NS_SWIFT_UNAVAILABLE(""); 27 | 28 | /** 29 | Creates a pending promise and executes `work` block asynchronously. 30 | 31 | @param work A block to perform any operations needed to resolve the promise. 32 | @return A new pending promise. 33 | */ 34 | + (instancetype)async:(FBLPromiseAsyncWorkBlock)work NS_SWIFT_UNAVAILABLE(""); 35 | 36 | /** 37 | Creates a pending promise and executes `work` block asynchronously on the given queue. 38 | 39 | @param queue A queue to invoke the `work` block on. 40 | @param work A block to perform any operations needed to resolve the promise. 41 | @return A new pending promise. 42 | */ 43 | + (instancetype)onQueue:(dispatch_queue_t)queue 44 | async:(FBLPromiseAsyncWorkBlock)work NS_REFINED_FOR_SWIFT; 45 | 46 | @end 47 | 48 | /** 49 | Convenience dot-syntax wrappers for `FBLPromise` `async` operators. 50 | Usage: FBLPromise.async(^(FBLPromiseFulfillBlock fulfill, FBLPromiseRejectBlock reject) { ... }) 51 | */ 52 | @interface FBLPromise(DotSyntax_AsyncAdditions) 53 | 54 | + (FBLPromise* (^)(FBLPromiseAsyncWorkBlock))async FBL_PROMISES_DOT_SYNTAX NS_SWIFT_UNAVAILABLE(""); 55 | + (FBLPromise* (^)(dispatch_queue_t, FBLPromiseAsyncWorkBlock))asyncOn FBL_PROMISES_DOT_SYNTAX 56 | NS_SWIFT_UNAVAILABLE(""); 57 | 58 | @end 59 | 60 | NS_ASSUME_NONNULL_END 61 | -------------------------------------------------------------------------------- /Frameworks/PromisesObjC.framework/Headers/FBLPromise+Validate.h: -------------------------------------------------------------------------------- 1 | /** 2 | Copyright 2018 Google Inc. All rights reserved. 3 | 4 | Licensed under the Apache License, Version 2.0 (the "License"); 5 | you may not use this file except in compliance with the License. 6 | You may obtain a copy of the License at: 7 | 8 | http://www.apache.org/licenses/LICENSE-2.0 9 | 10 | Unless required by applicable law or agreed to in writing, software 11 | distributed under the License is distributed on an "AS IS" BASIS, 12 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | See the License for the specific language governing permissions and 14 | limitations under the License. 15 | */ 16 | 17 | #import "FBLPromise.h" 18 | 19 | NS_ASSUME_NONNULL_BEGIN 20 | 21 | @interface FBLPromise(ValidateAdditions) 22 | 23 | typedef BOOL (^FBLPromiseValidateWorkBlock)(Value __nullable value) NS_SWIFT_UNAVAILABLE(""); 24 | 25 | /** 26 | Validates a fulfilled value or rejects the value if it can not be validated. 27 | 28 | @param predicate An expression to validate. 29 | @return A new pending promise that gets either resolved with same resolution as the receiver or 30 | rejected with `FBLPromiseErrorCodeValidationFailure` error code in `FBLPromiseErrorDomain`. 31 | */ 32 | - (FBLPromise *)validate:(FBLPromiseValidateWorkBlock)predicate NS_SWIFT_UNAVAILABLE(""); 33 | 34 | /** 35 | Validates a fulfilled value or rejects the value if it can not be validated. 36 | 37 | @param queue A queue to dispatch on. 38 | @param predicate An expression to validate. 39 | @return A new pending promise that gets either resolved with same resolution as the receiver or 40 | rejected with `FBLPromiseErrorCodeValidationFailure` error code in `FBLPromiseErrorDomain`. 41 | */ 42 | - (FBLPromise *)onQueue:(dispatch_queue_t)queue 43 | validate:(FBLPromiseValidateWorkBlock)predicate NS_REFINED_FOR_SWIFT; 44 | 45 | @end 46 | 47 | /** 48 | Convenience dot-syntax wrappers for `FBLPromise` `validate` operators. 49 | Usage: promise.validate(^BOOL(id value) { ... }) 50 | */ 51 | @interface FBLPromise(DotSyntax_ValidateAdditions) 52 | 53 | - (FBLPromise * (^)(FBLPromiseValidateWorkBlock))validate FBL_PROMISES_DOT_SYNTAX 54 | NS_SWIFT_UNAVAILABLE(""); 55 | - (FBLPromise * (^)(dispatch_queue_t, FBLPromiseValidateWorkBlock))validateOn 56 | FBL_PROMISES_DOT_SYNTAX NS_SWIFT_UNAVAILABLE(""); 57 | 58 | @end 59 | 60 | NS_ASSUME_NONNULL_END 61 | -------------------------------------------------------------------------------- /Frameworks/Protobuf.framework/Headers/SourceContext.pbobjc.h: -------------------------------------------------------------------------------- 1 | // Generated by the protocol buffer compiler. DO NOT EDIT! 2 | // source: google/protobuf/source_context.proto 3 | 4 | // This CPP symbol can be defined to use imports that match up to the framework 5 | // imports needed when using CocoaPods. 6 | #if !defined(GPB_USE_PROTOBUF_FRAMEWORK_IMPORTS) 7 | #define GPB_USE_PROTOBUF_FRAMEWORK_IMPORTS 0 8 | #endif 9 | 10 | #if GPB_USE_PROTOBUF_FRAMEWORK_IMPORTS 11 | #import 12 | #import 13 | #import 14 | #else 15 | #import "GPBDescriptor.h" 16 | #import "GPBMessage.h" 17 | #import "GPBRootObject.h" 18 | #endif 19 | 20 | #if GOOGLE_PROTOBUF_OBJC_VERSION < 30002 21 | #error This file was generated by a newer version of protoc which is incompatible with your Protocol Buffer library sources. 22 | #endif 23 | #if 30002 < GOOGLE_PROTOBUF_OBJC_MIN_SUPPORTED_VERSION 24 | #error This file was generated by an older version of protoc which is incompatible with your Protocol Buffer library sources. 25 | #endif 26 | 27 | // @@protoc_insertion_point(imports) 28 | 29 | #pragma clang diagnostic push 30 | #pragma clang diagnostic ignored "-Wdeprecated-declarations" 31 | 32 | CF_EXTERN_C_BEGIN 33 | 34 | NS_ASSUME_NONNULL_BEGIN 35 | 36 | #pragma mark - GPBSourceContextRoot 37 | 38 | /** 39 | * Exposes the extension registry for this file. 40 | * 41 | * The base class provides: 42 | * @code 43 | * + (GPBExtensionRegistry *)extensionRegistry; 44 | * @endcode 45 | * which is a @c GPBExtensionRegistry that includes all the extensions defined by 46 | * this file and all files that it depends on. 47 | **/ 48 | @interface GPBSourceContextRoot : GPBRootObject 49 | @end 50 | 51 | #pragma mark - GPBSourceContext 52 | 53 | typedef GPB_ENUM(GPBSourceContext_FieldNumber) { 54 | GPBSourceContext_FieldNumber_FileName = 1, 55 | }; 56 | 57 | /** 58 | * `SourceContext` represents information about the source of a 59 | * protobuf element, like the file in which it is defined. 60 | **/ 61 | @interface GPBSourceContext : GPBMessage 62 | 63 | /** 64 | * The path-qualified name of the .proto file that contained the associated 65 | * protobuf element. For example: `"google/protobuf/source_context.proto"`. 66 | **/ 67 | @property(nonatomic, readwrite, copy, null_resettable) NSString *fileName; 68 | 69 | @end 70 | 71 | NS_ASSUME_NONNULL_END 72 | 73 | CF_EXTERN_C_END 74 | 75 | #pragma clang diagnostic pop 76 | 77 | // @@protoc_insertion_point(global_scope) 78 | --------------------------------------------------------------------------------