From cc41f891c8634e3b9526790fa539a66f4a5a51bd Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Micha=C5=82=20Gutowski?= Date: Thu, 10 Oct 2024 19:06:38 +0200 Subject: [PATCH] Update project for Xcode 16 Includes: - Silenced "Extension declares a conformance of imported type 'CGSize' to imported protocol 'CustomStringConvertible'" warning; - Updated demo app; - Updated CI workflow; - Updated gems; - Updated README. --- .github/workflows/ci.yml | 21 +- DemoApp/DemoApp.xcodeproj/project.pbxproj | 216 ++---------------- .../xcshareddata/xcschemes/DemoApp.xcscheme | 2 +- .../AccentColor.colorset/Contents.json | 6 +- .../Contents.json | 0 .../fingerprint.png | Bin .../fingerprint@2x.png | Bin .../fingerprint@3x.png | Bin .../Contents.json | 38 --- DemoApp/DemoApp/DemoApp.swift | 2 +- .../FingerprintGeneratorView.swift | 36 ++- .../FingerprintGeneratorViewModel.swift | 26 +-- .../FingeprintGenerator/FingerprintView.swift | 6 +- .../FingerprintDetail/InfoTreeView.swift | 6 +- DemoApp/{ => DemoApp}/Launch.storyboard | 0 .../Preview Assets.xcassets/Contents.json | 6 - DemoApp/Podfile | 14 +- DemoApp/Podfile.lock | 14 +- Gemfile.lock | 139 +++++------ README.md | 7 +- .../CGSize+CustomStringConvertible.swift | 4 +- 21 files changed, 158 insertions(+), 385 deletions(-) rename DemoApp/DemoApp/Assets.xcassets/{fingerprint.imageset => FingerprintImage.imageset}/Contents.json (100%) rename DemoApp/DemoApp/Assets.xcassets/{fingerprint.imageset => FingerprintImage.imageset}/fingerprint.png (100%) rename DemoApp/DemoApp/Assets.xcassets/{fingerprint.imageset => FingerprintImage.imageset}/fingerprint@2x.png (100%) rename DemoApp/DemoApp/Assets.xcassets/{fingerprint.imageset => FingerprintImage.imageset}/fingerprint@3x.png (100%) delete mode 100644 DemoApp/DemoApp/Assets.xcassets/FingerprintJS Orange.colorset/Contents.json rename DemoApp/{ => DemoApp}/Launch.storyboard (100%) delete mode 100644 DemoApp/DemoApp/Preview Content/Preview Assets.xcassets/Contents.json diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 998a733..a79e979 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -24,9 +24,9 @@ concurrency: jobs: lint: name: Lint - runs-on: macos-13 + runs-on: macos-14 env: - DEVELOPER_DIR: "/Applications/Xcode_15.0.app/Contents/Developer" + DEVELOPER_DIR: "/Applications/Xcode_16.0.app/Contents/Developer" steps: - name: Checkout @@ -41,15 +41,22 @@ jobs: tests: name: Tests (Xcode ${{ matrix.xcode }}) needs: [lint] - runs-on: macos-13 + runs-on: macos-${{ matrix.macos }} env: DEVELOPER_DIR: "/Applications/Xcode_${{ matrix.xcode }}.app/Contents/Developer" strategy: matrix: - xcode: - - "14.1" # Swift 5.7 - - "14.3" # Swift 5.8 - - "15.0" # Swift 5.9 + include: + - macos: 13 + xcode: '14.1' # Swift 5.7 + - macos: 13 + xcode: '14.3.1' # Swift 5.8 + - macos: 14 + xcode: '15.0' # Swift 5.9 + - macos: 14 + xcode: '15.3' # Swift 5.10 + - macos: 14 + xcode: '16.0' # Swift 6.0 steps: - name: Runner Overview diff --git a/DemoApp/DemoApp.xcodeproj/project.pbxproj b/DemoApp/DemoApp.xcodeproj/project.pbxproj index 14e0fbb..0e1d134 100644 --- a/DemoApp/DemoApp.xcodeproj/project.pbxproj +++ b/DemoApp/DemoApp.xcodeproj/project.pbxproj @@ -8,10 +8,8 @@ /* Begin PBXBuildFile section */ 28CE603AFFFFFC5D7EB07D15 /* Pods_DemoApp.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 7AE7E8487643C0EF41FDB2D5 /* Pods_DemoApp.framework */; }; - 52327E28B86DE1925DE9E5EB /* Pods_DemoApp_DemoAppUITests.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D2A6936E645A9CFE1656F71F /* Pods_DemoApp_DemoAppUITests.framework */; }; 6A82A1C127DB71A2007C023F /* DemoApp.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6A82A1C027DB71A2007C023F /* DemoApp.swift */; }; 6A82A1C527DB71A3007C023F /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 6A82A1C427DB71A3007C023F /* Assets.xcassets */; }; - 6A82A1C827DB71A3007C023F /* Preview Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 6A82A1C727DB71A3007C023F /* Preview Assets.xcassets */; }; 6A82A1CF27DB72F6007C023F /* CollapsibleCard.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6A82A1CE27DB72F6007C023F /* CollapsibleCard.swift */; }; 6AAFE32127E7C2340052941A /* InfoTreeView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6AAFE32027E7C2340052941A /* InfoTreeView.swift */; }; 6AB3F90F283D048500FF0F03 /* PrivacyPolicyView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6AB3F90E283D048500FF0F03 /* PrivacyPolicyView.swift */; }; @@ -22,27 +20,14 @@ 6AB7146727EBBA3E004BBCF3 /* Launch.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 6AB7146627EBBA3E004BBCF3 /* Launch.storyboard */; }; 6AC03F4927DE509B00EF9DB7 /* FingerprintDetailView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6AC03F4827DE509B00EF9DB7 /* FingerprintDetailView.swift */; }; 6AC03F5027DF2DCC00EF9DB7 /* DeviceInfoItemView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6AC03F4F27DF2DCC00EF9DB7 /* DeviceInfoItemView.swift */; }; - 6AD70B1A281AF34E003657F6 /* DemoAppUITests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6AD70B19281AF34E003657F6 /* DemoAppUITests.swift */; }; - 6AD70B1C281AF34E003657F6 /* DemoAppUITestsLaunchTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6AD70B1B281AF34E003657F6 /* DemoAppUITestsLaunchTests.swift */; }; /* End PBXBuildFile section */ -/* Begin PBXContainerItemProxy section */ - 6AD70B1D281AF34E003657F6 /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = 6A82A1B527DB71A2007C023F /* Project object */; - proxyType = 1; - remoteGlobalIDString = 6A82A1BC27DB71A2007C023F; - remoteInfo = DemoApp; - }; -/* End PBXContainerItemProxy section */ - /* Begin PBXFileReference section */ 5AAA3DFCDA9325C2C1163E70 /* Pods-DemoApp.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-DemoApp.debug.xcconfig"; path = "Target Support Files/Pods-DemoApp/Pods-DemoApp.debug.xcconfig"; sourceTree = ""; }; 6A7D016027F329950037E190 /* FingerprintJS.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; path = FingerprintJS.framework; sourceTree = BUILT_PRODUCTS_DIR; }; 6A82A1BD27DB71A2007C023F /* DemoApp.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = DemoApp.app; sourceTree = BUILT_PRODUCTS_DIR; }; 6A82A1C027DB71A2007C023F /* DemoApp.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = DemoApp.swift; sourceTree = ""; }; 6A82A1C427DB71A3007C023F /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = ""; }; - 6A82A1C727DB71A3007C023F /* Preview Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = "Preview Assets.xcassets"; sourceTree = ""; }; 6A82A1CE27DB72F6007C023F /* CollapsibleCard.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CollapsibleCard.swift; sourceTree = ""; }; 6AAFE32027E7C2340052941A /* InfoTreeView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = InfoTreeView.swift; sourceTree = ""; }; 6AB3F90E283D048500FF0F03 /* PrivacyPolicyView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PrivacyPolicyView.swift; sourceTree = ""; }; @@ -55,14 +40,8 @@ 6AC03F4827DE509B00EF9DB7 /* FingerprintDetailView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = FingerprintDetailView.swift; sourceTree = ""; }; 6AC03F4D27DE7FC700EF9DB7 /* FingerprintKit.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; path = FingerprintKit.framework; sourceTree = BUILT_PRODUCTS_DIR; }; 6AC03F4F27DF2DCC00EF9DB7 /* DeviceInfoItemView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = DeviceInfoItemView.swift; sourceTree = ""; }; - 6AD70B17281AF34E003657F6 /* DemoAppUITests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = DemoAppUITests.xctest; sourceTree = BUILT_PRODUCTS_DIR; }; - 6AD70B19281AF34E003657F6 /* DemoAppUITests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = DemoAppUITests.swift; sourceTree = ""; }; - 6AD70B1B281AF34E003657F6 /* DemoAppUITestsLaunchTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = DemoAppUITestsLaunchTests.swift; sourceTree = ""; }; 7AE7E8487643C0EF41FDB2D5 /* Pods_DemoApp.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_DemoApp.framework; sourceTree = BUILT_PRODUCTS_DIR; }; - 9C2E08E7681B9F98E1C7413F /* Pods-DemoApp-DemoAppUITests.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-DemoApp-DemoAppUITests.debug.xcconfig"; path = "Target Support Files/Pods-DemoApp-DemoAppUITests/Pods-DemoApp-DemoAppUITests.debug.xcconfig"; sourceTree = ""; }; - B9C49F9C332D4B608E81FFE0 /* Pods-DemoApp-DemoAppUITests.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-DemoApp-DemoAppUITests.release.xcconfig"; path = "Target Support Files/Pods-DemoApp-DemoAppUITests/Pods-DemoApp-DemoAppUITests.release.xcconfig"; sourceTree = ""; }; D20F7CDCD8D7D0470AE07A88 /* Pods-DemoApp.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-DemoApp.release.xcconfig"; path = "Target Support Files/Pods-DemoApp/Pods-DemoApp.release.xcconfig"; sourceTree = ""; }; - D2A6936E645A9CFE1656F71F /* Pods_DemoApp_DemoAppUITests.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_DemoApp_DemoAppUITests.framework; sourceTree = BUILT_PRODUCTS_DIR; }; /* End PBXFileReference section */ /* Begin PBXFrameworksBuildPhase section */ @@ -74,23 +53,13 @@ ); runOnlyForDeploymentPostprocessing = 0; }; - 6AD70B14281AF34E003657F6 /* Frameworks */ = { - isa = PBXFrameworksBuildPhase; - buildActionMask = 2147483647; - files = ( - 52327E28B86DE1925DE9E5EB /* Pods_DemoApp_DemoAppUITests.framework in Frameworks */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; /* End PBXFrameworksBuildPhase section */ /* Begin PBXGroup section */ 6A82A1B427DB71A2007C023F = { isa = PBXGroup; children = ( - 6AB7146627EBBA3E004BBCF3 /* Launch.storyboard */, 6A82A1BF27DB71A2007C023F /* DemoApp */, - 6AD70B18281AF34E003657F6 /* DemoAppUITests */, 6A82A1BE27DB71A2007C023F /* Products */, 6AC03F4C27DE7FC700EF9DB7 /* Frameworks */, AA65AD507DDAF01FD5DD690B /* Pods */, @@ -101,7 +70,6 @@ isa = PBXGroup; children = ( 6A82A1BD27DB71A2007C023F /* DemoApp.app */, - 6AD70B17281AF34E003657F6 /* DemoAppUITests.xctest */, ); name = Products; sourceTree = ""; @@ -110,25 +78,17 @@ isa = PBXGroup; children = ( 6AB7146527EB8876004BBCF3 /* Info.plist */, + 6A82A1C027DB71A2007C023F /* DemoApp.swift */, + 6AB7146627EBBA3E004BBCF3 /* Launch.storyboard */, + 6A82A1C427DB71A3007C023F /* Assets.xcassets */, 6AB3F90D283D047100FF0F03 /* PrivacyPolicy */, 6AB7145827EA1888004BBCF3 /* FingerprintGenerator */, 6AC03F5227DF2F2700EF9DB7 /* CollapsibleCard */, 6AC03F5127DF2EFF00EF9DB7 /* FingerprintDetail */, - 6A82A1C027DB71A2007C023F /* DemoApp.swift */, - 6A82A1C427DB71A3007C023F /* Assets.xcassets */, - 6A82A1C627DB71A3007C023F /* Preview Content */, ); path = DemoApp; sourceTree = ""; }; - 6A82A1C627DB71A3007C023F /* Preview Content */ = { - isa = PBXGroup; - children = ( - 6A82A1C727DB71A3007C023F /* Preview Assets.xcassets */, - ); - path = "Preview Content"; - sourceTree = ""; - }; 6AB3F90D283D047100FF0F03 /* PrivacyPolicy */ = { isa = PBXGroup; children = ( @@ -155,7 +115,6 @@ 6A7D016027F329950037E190 /* FingerprintJS.framework */, 6AC03F4D27DE7FC700EF9DB7 /* FingerprintKit.framework */, 7AE7E8487643C0EF41FDB2D5 /* Pods_DemoApp.framework */, - D2A6936E645A9CFE1656F71F /* Pods_DemoApp_DemoAppUITests.framework */, ); name = Frameworks; sourceTree = ""; @@ -178,22 +137,11 @@ path = CollapsibleCard; sourceTree = ""; }; - 6AD70B18281AF34E003657F6 /* DemoAppUITests */ = { - isa = PBXGroup; - children = ( - 6AD70B19281AF34E003657F6 /* DemoAppUITests.swift */, - 6AD70B1B281AF34E003657F6 /* DemoAppUITestsLaunchTests.swift */, - ); - path = DemoAppUITests; - sourceTree = ""; - }; AA65AD507DDAF01FD5DD690B /* Pods */ = { isa = PBXGroup; children = ( 5AAA3DFCDA9325C2C1163E70 /* Pods-DemoApp.debug.xcconfig */, D20F7CDCD8D7D0470AE07A88 /* Pods-DemoApp.release.xcconfig */, - 9C2E08E7681B9F98E1C7413F /* Pods-DemoApp-DemoAppUITests.debug.xcconfig */, - B9C49F9C332D4B608E81FFE0 /* Pods-DemoApp-DemoAppUITests.release.xcconfig */, ); path = Pods; sourceTree = ""; @@ -220,26 +168,6 @@ productReference = 6A82A1BD27DB71A2007C023F /* DemoApp.app */; productType = "com.apple.product-type.application"; }; - 6AD70B16281AF34E003657F6 /* DemoAppUITests */ = { - isa = PBXNativeTarget; - buildConfigurationList = 6AD70B21281AF34E003657F6 /* Build configuration list for PBXNativeTarget "DemoAppUITests" */; - buildPhases = ( - D3E1B8235496A98BD297755D /* [CP] Check Pods Manifest.lock */, - 6AD70B13281AF34E003657F6 /* Sources */, - 6AD70B14281AF34E003657F6 /* Frameworks */, - 6AD70B15281AF34E003657F6 /* Resources */, - 2633846C42665907A3A5370E /* [CP] Embed Pods Frameworks */, - ); - buildRules = ( - ); - dependencies = ( - 6AD70B1E281AF34E003657F6 /* PBXTargetDependency */, - ); - name = DemoAppUITests; - productName = DemoAppUITests; - productReference = 6AD70B17281AF34E003657F6 /* DemoAppUITests.xctest */; - productType = "com.apple.product-type.bundle.ui-testing"; - }; /* End PBXNativeTarget section */ /* Begin PBXProject section */ @@ -248,15 +176,11 @@ attributes = { BuildIndependentTargetsInParallel = 1; LastSwiftUpdateCheck = 1330; - LastUpgradeCheck = 1320; + LastUpgradeCheck = 1600; TargetAttributes = { 6A82A1BC27DB71A2007C023F = { CreatedOnToolsVersion = 13.2.1; }; - 6AD70B16281AF34E003657F6 = { - CreatedOnToolsVersion = 13.3; - TestTargetID = 6A82A1BC27DB71A2007C023F; - }; }; }; buildConfigurationList = 6A82A1B827DB71A2007C023F /* Build configuration list for PBXProject "DemoApp" */; @@ -273,7 +197,6 @@ projectRoot = ""; targets = ( 6A82A1BC27DB71A2007C023F /* DemoApp */, - 6AD70B16281AF34E003657F6 /* DemoAppUITests */, ); }; /* End PBXProject section */ @@ -283,39 +206,14 @@ isa = PBXResourcesBuildPhase; buildActionMask = 2147483647; files = ( - 6A82A1C827DB71A3007C023F /* Preview Assets.xcassets in Resources */, 6A82A1C527DB71A3007C023F /* Assets.xcassets in Resources */, 6AB7146727EBBA3E004BBCF3 /* Launch.storyboard in Resources */, ); runOnlyForDeploymentPostprocessing = 0; }; - 6AD70B15281AF34E003657F6 /* Resources */ = { - isa = PBXResourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - ); - runOnlyForDeploymentPostprocessing = 0; - }; /* End PBXResourcesBuildPhase section */ /* Begin PBXShellScriptBuildPhase section */ - 2633846C42665907A3A5370E /* [CP] Embed Pods Frameworks */ = { - isa = PBXShellScriptBuildPhase; - buildActionMask = 2147483647; - files = ( - ); - inputFileListPaths = ( - "${PODS_ROOT}/Target Support Files/Pods-DemoApp-DemoAppUITests/Pods-DemoApp-DemoAppUITests-frameworks-${CONFIGURATION}-input-files.xcfilelist", - ); - name = "[CP] Embed Pods Frameworks"; - outputFileListPaths = ( - "${PODS_ROOT}/Target Support Files/Pods-DemoApp-DemoAppUITests/Pods-DemoApp-DemoAppUITests-frameworks-${CONFIGURATION}-output-files.xcfilelist", - ); - runOnlyForDeploymentPostprocessing = 0; - shellPath = /bin/sh; - shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-DemoApp-DemoAppUITests/Pods-DemoApp-DemoAppUITests-frameworks.sh\"\n"; - showEnvVarsInLog = 0; - }; 6DD8999B9BA68ABC4C7785D5 /* [CP] Check Pods Manifest.lock */ = { isa = PBXShellScriptBuildPhase; buildActionMask = 2147483647; @@ -338,28 +236,6 @@ shellScript = "diff \"${PODS_PODFILE_DIR_PATH}/Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [ $? != 0 ] ; then\n # print error to STDERR\n echo \"error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\" >&2\n exit 1\nfi\n# This output is used by Xcode 'outputs' to avoid re-running this script phase.\necho \"SUCCESS\" > \"${SCRIPT_OUTPUT_FILE_0}\"\n"; showEnvVarsInLog = 0; }; - D3E1B8235496A98BD297755D /* [CP] Check Pods Manifest.lock */ = { - isa = PBXShellScriptBuildPhase; - buildActionMask = 2147483647; - files = ( - ); - inputFileListPaths = ( - ); - inputPaths = ( - "${PODS_PODFILE_DIR_PATH}/Podfile.lock", - "${PODS_ROOT}/Manifest.lock", - ); - name = "[CP] Check Pods Manifest.lock"; - outputFileListPaths = ( - ); - outputPaths = ( - "$(DERIVED_FILE_DIR)/Pods-DemoApp-DemoAppUITests-checkManifestLockResult.txt", - ); - runOnlyForDeploymentPostprocessing = 0; - shellPath = /bin/sh; - shellScript = "diff \"${PODS_PODFILE_DIR_PATH}/Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [ $? != 0 ] ; then\n # print error to STDERR\n echo \"error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\" >&2\n exit 1\nfi\n# This output is used by Xcode 'outputs' to avoid re-running this script phase.\necho \"SUCCESS\" > \"${SCRIPT_OUTPUT_FILE_0}\"\n"; - showEnvVarsInLog = 0; - }; DDF3B46114FD4997AA2F5F10 /* [CP] Embed Pods Frameworks */ = { isa = PBXShellScriptBuildPhase; buildActionMask = 2147483647; @@ -397,25 +273,8 @@ ); runOnlyForDeploymentPostprocessing = 0; }; - 6AD70B13281AF34E003657F6 /* Sources */ = { - isa = PBXSourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - 6AD70B1A281AF34E003657F6 /* DemoAppUITests.swift in Sources */, - 6AD70B1C281AF34E003657F6 /* DemoAppUITestsLaunchTests.swift in Sources */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; /* End PBXSourcesBuildPhase section */ -/* Begin PBXTargetDependency section */ - 6AD70B1E281AF34E003657F6 /* PBXTargetDependency */ = { - isa = PBXTargetDependency; - target = 6A82A1BC27DB71A2007C023F /* DemoApp */; - targetProxy = 6AD70B1D281AF34E003657F6 /* PBXContainerItemProxy */; - }; -/* End PBXTargetDependency section */ - /* Begin XCBuildConfiguration section */ 6A82A1C927DB71A3007C023F /* Debug */ = { isa = XCBuildConfiguration; @@ -454,6 +313,7 @@ DEBUG_INFORMATION_FORMAT = dwarf; ENABLE_STRICT_OBJC_MSGSEND = YES; ENABLE_TESTABILITY = YES; + ENABLE_USER_SCRIPT_SANDBOXING = YES; GCC_C_LANGUAGE_STANDARD = gnu11; GCC_DYNAMIC_NO_PIC = NO; GCC_NO_COMMON_BLOCKS = YES; @@ -515,6 +375,7 @@ DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; ENABLE_NS_ASSERTIONS = NO; ENABLE_STRICT_OBJC_MSGSEND = YES; + ENABLE_USER_SCRIPT_SANDBOXING = YES; GCC_C_LANGUAGE_STANDARD = gnu11; GCC_NO_COMMON_BLOCKS = YES; GCC_WARN_64_TO_32_BIT_CONVERSION = YES; @@ -541,12 +402,14 @@ ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor; CODE_SIGN_STYLE = Automatic; CURRENT_PROJECT_VERSION = 5; - DEVELOPMENT_ASSET_PATHS = "\"DemoApp/Preview Content\""; + DEVELOPMENT_ASSET_PATHS = ""; DEVELOPMENT_TEAM = AQ93X82PXZ; ENABLE_PREVIEWS = YES; + ENABLE_USER_SCRIPT_SANDBOXING = NO; GENERATE_INFOPLIST_FILE = YES; INFOPLIST_FILE = DemoApp/Info.plist; INFOPLIST_KEY_CFBundleDisplayName = "FingerprintJS Showcase"; + INFOPLIST_KEY_LSApplicationCategoryType = "public.app-category.developer-tools"; INFOPLIST_KEY_UIApplicationSupportsIndirectInputEvents = YES; INFOPLIST_KEY_UILaunchStoryboardName = Launch; INFOPLIST_KEY_UIRequiresFullScreen = YES; @@ -562,6 +425,10 @@ MARKETING_VERSION = 1.0; PRODUCT_BUNDLE_IDENTIFIER = com.fingerprintjs.DemoApp; PRODUCT_NAME = "$(TARGET_NAME)"; + SUPPORTED_PLATFORMS = "iphoneos iphonesimulator"; + SUPPORTS_MACCATALYST = NO; + SUPPORTS_MAC_DESIGNED_FOR_IPHONE_IPAD = NO; + SUPPORTS_XR_DESIGNED_FOR_IPHONE_IPAD = NO; SWIFT_EMIT_LOC_STRINGS = YES; SWIFT_VERSION = 5.0; TARGETED_DEVICE_FAMILY = "1,2"; @@ -577,12 +444,14 @@ CODE_SIGN_IDENTITY = "iPhone Distribution"; CODE_SIGN_STYLE = Manual; CURRENT_PROJECT_VERSION = 5; - DEVELOPMENT_ASSET_PATHS = "\"DemoApp/Preview Content\""; + DEVELOPMENT_ASSET_PATHS = ""; DEVELOPMENT_TEAM = AQ93X82PXZ; ENABLE_PREVIEWS = YES; + ENABLE_USER_SCRIPT_SANDBOXING = NO; GENERATE_INFOPLIST_FILE = YES; INFOPLIST_FILE = DemoApp/Info.plist; INFOPLIST_KEY_CFBundleDisplayName = "FingerprintJS Showcase"; + INFOPLIST_KEY_LSApplicationCategoryType = "public.app-category.developer-tools"; INFOPLIST_KEY_UIApplicationSupportsIndirectInputEvents = YES; INFOPLIST_KEY_UILaunchStoryboardName = Launch; INFOPLIST_KEY_UIRequiresFullScreen = YES; @@ -599,52 +468,16 @@ PRODUCT_BUNDLE_IDENTIFIER = com.fingerprintjs.DemoApp; PRODUCT_NAME = "$(TARGET_NAME)"; PROVISIONING_PROFILE_SPECIFIER = "match AppStore com.fingerprintjs.DemoApp"; + SUPPORTED_PLATFORMS = "iphoneos iphonesimulator"; + SUPPORTS_MACCATALYST = NO; + SUPPORTS_MAC_DESIGNED_FOR_IPHONE_IPAD = NO; + SUPPORTS_XR_DESIGNED_FOR_IPHONE_IPAD = NO; SWIFT_EMIT_LOC_STRINGS = YES; SWIFT_VERSION = 5.0; TARGETED_DEVICE_FAMILY = "1,2"; }; name = Release; }; - 6AD70B1F281AF34E003657F6 /* Debug */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = 9C2E08E7681B9F98E1C7413F /* Pods-DemoApp-DemoAppUITests.debug.xcconfig */; - buildSettings = { - CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 1; - GENERATE_INFOPLIST_FILE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 15.4; - MARKETING_VERSION = 1.0; - PRODUCT_BUNDLE_IDENTIFIER = com.fingerprintjs.DemoAppUITests; - PRODUCT_NAME = "$(TARGET_NAME)"; - SWIFT_EMIT_LOC_STRINGS = NO; - SWIFT_VERSION = 5.0; - TARGETED_DEVICE_FAMILY = "1,2"; - TEST_TARGET_NAME = DemoApp; - }; - name = Debug; - }; - 6AD70B20281AF34E003657F6 /* Release */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = B9C49F9C332D4B608E81FFE0 /* Pods-DemoApp-DemoAppUITests.release.xcconfig */; - buildSettings = { - "CODE_SIGN_IDENTITY[sdk=macosx*]" = "-"; - CODE_SIGN_STYLE = Manual; - CURRENT_PROJECT_VERSION = 1; - DEVELOPMENT_TEAM = ""; - GENERATE_INFOPLIST_FILE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 15.4; - MARKETING_VERSION = 1.0; - PRODUCT_BUNDLE_IDENTIFIER = com.fingerprintjs.DemoAppUITests; - PRODUCT_NAME = "$(TARGET_NAME)"; - PROVISIONING_PROFILE_SPECIFIER = ""; - "PROVISIONING_PROFILE_SPECIFIER[sdk=macosx*]" = ""; - SWIFT_EMIT_LOC_STRINGS = NO; - SWIFT_VERSION = 5.0; - TARGETED_DEVICE_FAMILY = "1,2"; - TEST_TARGET_NAME = DemoApp; - }; - name = Release; - }; /* End XCBuildConfiguration section */ /* Begin XCConfigurationList section */ @@ -666,15 +499,6 @@ defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; }; - 6AD70B21281AF34E003657F6 /* Build configuration list for PBXNativeTarget "DemoAppUITests" */ = { - isa = XCConfigurationList; - buildConfigurations = ( - 6AD70B1F281AF34E003657F6 /* Debug */, - 6AD70B20281AF34E003657F6 /* Release */, - ); - defaultConfigurationIsVisible = 0; - defaultConfigurationName = Release; - }; /* End XCConfigurationList section */ }; rootObject = 6A82A1B527DB71A2007C023F /* Project object */; diff --git a/DemoApp/DemoApp.xcodeproj/xcshareddata/xcschemes/DemoApp.xcscheme b/DemoApp/DemoApp.xcodeproj/xcshareddata/xcschemes/DemoApp.xcscheme index d6a3d08..c3ed9c5 100644 --- a/DemoApp/DemoApp.xcodeproj/xcshareddata/xcschemes/DemoApp.xcscheme +++ b/DemoApp/DemoApp.xcodeproj/xcshareddata/xcschemes/DemoApp.xcscheme @@ -1,6 +1,6 @@ 1.0' - - target 'DemoAppUITests' do - # Pods for testing - end - + pod 'FingerprintJS', '~> 1.5' end diff --git a/DemoApp/Podfile.lock b/DemoApp/Podfile.lock index b8c7b3c..a3c8266 100644 --- a/DemoApp/Podfile.lock +++ b/DemoApp/Podfile.lock @@ -1,16 +1,20 @@ PODS: - - FingerprintJS (1.0.0) + - FingerprintJS (1.5.0): + - FingerprintJS/Core (= 1.5.0) + - FingerprintJS/Core (1.5.0): + - FingerprintJS/SystemControl + - FingerprintJS/SystemControl (1.5.0) DEPENDENCIES: - - FingerprintJS (~> 1.0) + - FingerprintJS (~> 1.5) SPEC REPOS: trunk: - FingerprintJS SPEC CHECKSUMS: - FingerprintJS: 2c0bae1d2f1b65c3c46098edbdefca4a0e72c76d + FingerprintJS: 96410117a394cca04d0f1e2374944c8697f2cceb -PODFILE CHECKSUM: f501a0d0aaa742f83340245876e881fc1d89f6c6 +PODFILE CHECKSUM: e711991b69c78b606d26a268b0e7878603d8626e -COCOAPODS: 1.11.3 +COCOAPODS: 1.15.2 diff --git a/Gemfile.lock b/Gemfile.lock index e7946e3..c447a8e 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -1,49 +1,52 @@ GEM remote: https://rubygems.org/ specs: - CFPropertyList (3.0.6) + CFPropertyList (3.0.7) + base64 + nkf rexml - activesupport (7.1.2) + activesupport (7.2.1) base64 bigdecimal - concurrent-ruby (~> 1.0, >= 1.0.2) + concurrent-ruby (~> 1.0, >= 1.3.1) connection_pool (>= 2.2.5) drb i18n (>= 1.6, < 2) + logger (>= 1.4.2) minitest (>= 5.1) - mutex_m - tzinfo (~> 2.0) - addressable (2.8.5) - public_suffix (>= 2.0.2, < 6.0) + securerandom (>= 0.3) + tzinfo (~> 2.0, >= 2.0.5) + addressable (2.8.7) + public_suffix (>= 2.0.2, < 7.0) algoliasearch (1.27.5) httpclient (~> 2.8, >= 2.8.3) json (>= 1.5.1) - artifactory (3.0.15) + artifactory (3.0.17) atomos (0.1.3) - aws-eventstream (1.2.0) - aws-partitions (1.854.0) - aws-sdk-core (3.187.1) - aws-eventstream (~> 1, >= 1.0.2) + aws-eventstream (1.3.0) + aws-partitions (1.988.0) + aws-sdk-core (3.209.1) + aws-eventstream (~> 1, >= 1.3.0) aws-partitions (~> 1, >= 1.651.0) - aws-sigv4 (~> 1.5) + aws-sigv4 (~> 1.9) jmespath (~> 1, >= 1.6.1) - aws-sdk-kms (1.72.0) - aws-sdk-core (~> 3, >= 3.184.0) - aws-sigv4 (~> 1.1) - aws-sdk-s3 (1.137.0) - aws-sdk-core (~> 3, >= 3.181.0) + aws-sdk-kms (1.94.0) + aws-sdk-core (~> 3, >= 3.207.0) + aws-sigv4 (~> 1.5) + aws-sdk-s3 (1.167.0) + aws-sdk-core (~> 3, >= 3.207.0) aws-sdk-kms (~> 1) - aws-sigv4 (~> 1.6) - aws-sigv4 (1.6.1) + aws-sigv4 (~> 1.5) + aws-sigv4 (1.10.0) aws-eventstream (~> 1, >= 1.0.2) babosa (1.0.4) base64 (0.2.0) - bigdecimal (3.1.4) + bigdecimal (3.1.8) claide (1.1.0) - cocoapods (1.14.3) + cocoapods (1.15.2) addressable (~> 2.8) claide (>= 1.0.2, < 2.0) - cocoapods-core (= 1.14.3) + cocoapods-core (= 1.15.2) cocoapods-deintegrate (>= 1.0.3, < 2.0) cocoapods-downloader (>= 2.1, < 3.0) cocoapods-plugins (>= 1.0.0, < 2.0) @@ -58,7 +61,7 @@ GEM nap (~> 1.0) ruby-macho (>= 2.3.0, < 3.0) xcodeproj (>= 1.23.0, < 2.0) - cocoapods-core (1.14.3) + cocoapods-core (1.15.2) activesupport (>= 5.0, < 8) addressable (~> 2.8) algoliasearch (~> 1.0) @@ -81,21 +84,20 @@ GEM colored2 (3.1.2) commander (4.6.0) highline (~> 2.0.0) - concurrent-ruby (1.2.2) + concurrent-ruby (1.3.4) connection_pool (2.4.1) declarative (0.0.20) digest-crc (0.6.5) rake (>= 12.0.0, < 14.0.0) - domain_name (0.6.20231109) + domain_name (0.6.20240107) dotenv (2.8.1) - drb (2.2.0) - ruby2_keywords + drb (2.2.1) emoji_regex (3.2.3) escape (0.0.4) ethon (0.16.0) ffi (>= 1.15.0) - excon (0.104.0) - faraday (1.10.3) + excon (0.112.0) + faraday (1.10.4) faraday-em_http (~> 1.0) faraday-em_synchrony (~> 1.0) faraday-excon (~> 1.1) @@ -116,22 +118,22 @@ GEM faraday-httpclient (1.0.1) faraday-multipart (1.0.4) multipart-post (~> 2) - faraday-net_http (1.0.1) + faraday-net_http (1.0.2) faraday-net_http_persistent (1.2.0) faraday-patron (1.0.0) faraday-rack (1.0.0) faraday-retry (1.0.3) - faraday_middleware (1.2.0) + faraday_middleware (1.2.1) faraday (~> 1.0) - fastimage (2.2.7) - fastlane (2.217.0) + fastimage (2.3.1) + fastlane (2.224.0) CFPropertyList (>= 2.3, < 4.0.0) addressable (>= 2.8, < 3.0.0) artifactory (~> 3.0) aws-sdk-s3 (~> 1.0) babosa (>= 1.0.3, < 2.0.0) bundler (>= 1.12.0, < 3.0.0) - colored + colored (~> 1.2) commander (~> 4.6) dotenv (>= 2.1.1, < 3.0.0) emoji_regex (>= 0.1, < 4.0) @@ -143,6 +145,7 @@ GEM gh_inspector (>= 1.1.2, < 2.0.0) google-apis-androidpublisher_v3 (~> 0.3) google-apis-playcustomapp_v1 (~> 0.1) + google-cloud-env (>= 1.6.0, < 2.0.0) google-cloud-storage (~> 1.31) highline (~> 2.0) http-cookie (~> 1.0.5) @@ -151,10 +154,10 @@ GEM mini_magick (>= 4.9.4, < 5.0.0) multipart-post (>= 2.0.0, < 3.0.0) naturally (~> 2.2) - optparse (~> 0.1.1) + optparse (>= 0.1.1, < 1.0.0) plist (>= 3.1.0, < 4.0.0) rubyzip (>= 2.0.0, < 3.0.0) - security (= 0.1.3) + security (= 0.1.5) simctl (~> 1.6.3) terminal-notifier (>= 2.0.0, < 3.0.0) terminal-table (~> 3) @@ -163,14 +166,15 @@ GEM word_wrap (~> 1.0.0) xcodeproj (>= 1.13.0, < 2.0.0) xcpretty (~> 0.3.0) - xcpretty-travis-formatter (>= 0.0.3) - ffi (1.16.3) + xcpretty-travis-formatter (>= 0.0.3, < 2.0.0) + ffi (1.17.0-arm64-darwin) + ffi (1.17.0-x86_64-darwin) fourflusher (2.3.1) fuzzy_match (2.0.4) gh_inspector (1.1.3) - google-apis-androidpublisher_v3 (0.53.0) + google-apis-androidpublisher_v3 (0.54.0) google-apis-core (>= 0.11.0, < 2.a) - google-apis-core (0.11.2) + google-apis-core (0.11.3) addressable (~> 2.5, >= 2.5.1) googleauth (>= 0.16.2, < 2.a) httpclient (>= 2.8.1, < 3.a) @@ -178,24 +182,23 @@ GEM representable (~> 3.0) retriable (>= 2.0, < 4.a) rexml - webrick google-apis-iamcredentials_v1 (0.17.0) google-apis-core (>= 0.11.0, < 2.a) google-apis-playcustomapp_v1 (0.13.0) google-apis-core (>= 0.11.0, < 2.a) - google-apis-storage_v1 (0.29.0) + google-apis-storage_v1 (0.31.0) google-apis-core (>= 0.11.0, < 2.a) - google-cloud-core (1.6.0) - google-cloud-env (~> 1.0) + google-cloud-core (1.7.1) + google-cloud-env (>= 1.0, < 3.a) google-cloud-errors (~> 1.0) google-cloud-env (1.6.0) faraday (>= 0.17.3, < 3.0) - google-cloud-errors (1.3.1) - google-cloud-storage (1.45.0) + google-cloud-errors (1.4.0) + google-cloud-storage (1.47.0) addressable (~> 2.8) digest-crc (~> 0.4) google-apis-iamcredentials_v1 (~> 0.1) - google-apis-storage_v1 (~> 0.29.0) + google-apis-storage_v1 (~> 0.31.0) google-cloud-core (~> 1.6) googleauth (>= 0.16.2, < 2.a) mini_mime (~> 1.0) @@ -206,42 +209,45 @@ GEM os (>= 0.9, < 2.0) signet (>= 0.16, < 2.a) highline (2.0.3) - http-cookie (1.0.5) + http-cookie (1.0.7) domain_name (~> 0.5) httpclient (2.8.3) - i18n (1.14.1) + i18n (1.14.6) concurrent-ruby (~> 1.0) jmespath (1.6.2) - json (2.6.3) - jwt (2.7.1) - mini_magick (4.12.0) + json (2.7.2) + jwt (2.9.3) + base64 + logger (1.6.1) + mini_magick (4.13.2) mini_mime (1.1.5) - minitest (5.20.0) + minitest (5.25.1) molinillo (0.8.0) multi_json (1.15.0) - multipart-post (2.3.0) - mutex_m (0.2.0) + multipart-post (2.4.1) nanaimo (0.3.0) nap (1.1.0) naturally (2.2.1) netrc (0.11.0) - optparse (0.1.1) + nkf (0.2.0) + optparse (0.5.0) os (1.1.4) - plist (3.7.0) + plist (3.7.1) public_suffix (4.0.7) - rake (13.1.0) + rake (13.2.1) representable (3.2.0) declarative (< 0.1.0) trailblazer-option (>= 0.1.1, < 0.2.0) uber (< 0.2.0) retriable (3.1.2) - rexml (3.2.6) + rexml (3.3.8) rouge (2.0.7) ruby-macho (2.5.1) ruby2_keywords (0.0.5) rubyzip (2.3.2) - security (0.1.3) - signet (0.18.0) + securerandom (0.3.1) + security (0.1.5) + signet (0.19.0) addressable (~> 2.8) faraday (>= 0.17.5, < 3.a) jwt (>= 1.5, < 3.0) @@ -254,7 +260,7 @@ GEM unicode-display_width (>= 1.1.1, < 3) trailblazer-option (0.1.2) tty-cursor (0.7.1) - tty-screen (0.8.1) + tty-screen (0.8.2) tty-spinner (0.9.3) tty-cursor (~> 0.7) typhoeus (1.4.1) @@ -262,16 +268,15 @@ GEM tzinfo (2.0.6) concurrent-ruby (~> 1.0) uber (0.1.0) - unicode-display_width (2.5.0) - webrick (1.8.1) + unicode-display_width (2.6.0) word_wrap (1.0.0) - xcodeproj (1.23.0) + xcodeproj (1.25.1) CFPropertyList (>= 2.3.3, < 4.0) atomos (~> 0.1.3) claide (>= 1.0.2, < 2.0) colored2 (~> 3.1) nanaimo (~> 0.3.0) - rexml (~> 3.2.4) + rexml (>= 3.3.6, < 4.0) xcpretty (0.3.0) rouge (~> 2.0.7) xcpretty-travis-formatter (1.0.1) diff --git a/README.md b/README.md index bc2ccf1..12f45e4 100644 --- a/README.md +++ b/README.md @@ -10,7 +10,7 @@ CI status - Supported Swift versions + Supported Swift versions Supported platforms @@ -127,10 +127,9 @@ let fingerprint = await fingerprinter.getFingerprint() // returns "42" Keep in mind that the change in the supplied hashing function will inevitably lead to the change of the output fingerprint. -## Android version - -- [Fingerprint Android - identification and fingerprinting in native apps](https://github.com/fingerprintjs/fingerprintjs-android) +## Android Version +- [Fingerprint Android - identification and fingerprinting in native apps](https://github.com/fingerprintjs/fingerprintjs-android) ## License diff --git a/Sources/FingerprintJS/Common/CGSize+CustomStringConvertible.swift b/Sources/FingerprintJS/Common/CGSize+CustomStringConvertible.swift index 3bfbbe2..572b0bd 100644 --- a/Sources/FingerprintJS/Common/CGSize+CustomStringConvertible.swift +++ b/Sources/FingerprintJS/Common/CGSize+CustomStringConvertible.swift @@ -1,7 +1,7 @@ import CoreGraphics -extension CGSize: CustomStringConvertible { +extension CoreGraphics.CGSize: Swift.CustomStringConvertible { public var description: String { - return "\(self.width)x\(self.height)" + return "\(width)x\(height)" } }