From 6573b5d1df2b4f09e5163406579f87d75719fd50 Mon Sep 17 00:00:00 2001 From: Rehan Date: Mon, 1 Apr 2024 05:43:23 +0500 Subject: [PATCH 01/11] updated opened metrics check --- src/doctor/checks/ios.ts | 73 ++++++++++++++++++++++------------------ 1 file changed, 41 insertions(+), 32 deletions(-) diff --git a/src/doctor/checks/ios.ts b/src/doctor/checks/ios.ts index f9f656a..06a0888 100644 --- a/src/doctor/checks/ios.ts +++ b/src/doctor/checks/ios.ts @@ -35,7 +35,7 @@ export async function runChecks(group: CheckGroup): Promise { case CheckGroup.PushSetup: await runCatching(validatePushEntitlements)(project); await runCatching(analyzeNotificationServiceExtensionProperties)(project); - await runCatching(validateUserNotificationCenterDelegate)(project); + await runCatching(validateMessagingPushInitialization)(project); break; case CheckGroup.Dependencies: @@ -274,43 +274,52 @@ function getDeploymentTargetVersion( return null; } -async function validateUserNotificationCenterDelegate( +async function validateMessagingPushInitialization( project: iOSProject ): Promise { - let allRequirementsMet = false; - const userNotificationCenterPatternSwift = - /func\s+userNotificationCenter\(\s*_[^:]*:\s*UNUserNotificationCenter,\s*didReceive[^:]*:\s*UNNotificationResponse,\s*withCompletionHandler[^:]*:\s*@?escaping\s*\(?\)?\s*->\s*Void\s*\)?/; - const userNotificationCenterPatternObjC = - /-\s*\(\s*void\s*\)\s*userNotificationCenter:\s*\(\s*UNUserNotificationCenter\s*\s*\*\s*\)\s*[^:]*\s*didReceiveNotificationResponse:\s*\(\s*UNNotificationResponse\s*\*\s*\)\s*[^:]*\s*withCompletionHandler:\s*\(\s*void\s*\(\s*\^\s*\)\(\s*void\s*\)\s*\)\s*[^;]*;?/; + logger.debug(`Checking for MessagingPush Initialization in iOS`); + + // Search for any of the following patterns in the project files: + // - MessagingPush.initialize + // - MessagingPushAPN.initialize + // - MessagingPushFCM.initialize + const moduleInitializationPattern = /MessagingPush\w*\.initialize/; + const moduleInitializationFiles = searchFilesForCode( + { + codePatternByExtension: { + '.swift': moduleInitializationPattern, + '.m': moduleInitializationPattern, + '.mm': moduleInitializationPattern, + }, + ignoreDirectories: ['Images.xcassets'], + targetFileNames: ['AppDelegate'], + targetFilePatterns: ['cio', 'customerio', 'notification', 'push'], + }, + project.iOSProjectPath + ); - for (const appDelegateFile of project.appDelegateFiles) { - logger.debug( - `Checking AppDelegate at path: ${appDelegateFile.readablePath}` + if (moduleInitializationFiles.matchedFiles.length > 0) { + logger.success( + `MessagingPush Initialization found in ${moduleInitializationFiles.formattedMatchedFiles}` ); - const extension = appDelegateFile.args.get('extension'); - let pattern: RegExp; - switch (extension) { - case 'swift': - pattern = userNotificationCenterPatternSwift; - break; - case 'Objective-C': - case 'Objective-C++': - pattern = userNotificationCenterPatternObjC; - break; - default: - continue; - } - - allRequirementsMet = - allRequirementsMet || pattern.test(appDelegateFile.content!); - } - - if (allRequirementsMet) { - logger.success(`“Opened” metric tracking enabled`); } else { - logger.failure( - `Missing method in AppDelegate for tracking push "opened" metrics` + logger.debug(`Search Criteria:`); + logger.debug( + `Searching files with names: ${moduleInitializationFiles.formattedTargetFileNames}` + ); + logger.debug( + `Searching files with keywords: ${moduleInitializationFiles.formattedTargetPatterns}` ); + logger.debug( + `Looked into the following files: ${moduleInitializationFiles.formattedSearchedFiles}` + ); + if (logger.isDebug()) { + logger.failure('MessagingPush Module Initialization not found'); + } else { + logger.failure( + 'MessagingPush Module Initialization not found. For more details, run the script with the -v flag' + ); + } } } From 57e130aec853855e2f8d6b590f1beba93d4f1f78 Mon Sep 17 00:00:00 2001 From: Rehan Date: Mon, 1 Apr 2024 06:16:24 +0500 Subject: [PATCH 02/11] constant --- src/doctor/constants/sdk.ts | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/doctor/constants/sdk.ts b/src/doctor/constants/sdk.ts index 1b3f483..94360a4 100644 --- a/src/doctor/constants/sdk.ts +++ b/src/doctor/constants/sdk.ts @@ -7,3 +7,6 @@ export const POD_MESSAGING_IN_APP = 'CustomerIOMessagingInApp'; export const POD_MESSAGING_PUSH = 'CustomerIOMessagingPush'; export const POD_MESSAGING_PUSH_APN = 'CustomerIOMessagingPushAPN'; export const POD_MESSAGING_PUSH_FCM = 'CustomerIOMessagingPushFCM'; + +// Specific versions of SDKs for which we have special handling in doctor tool +export const iOS_SDK_WITH_PUSH_SWIZZLING_SUPPORT = '2.11'; From 8dc790ddb0e679538de0283fd9640ed8c8de11d3 Mon Sep 17 00:00:00 2001 From: Rehan Date: Mon, 1 Apr 2024 06:19:02 +0500 Subject: [PATCH 03/11] util functions for versiona --- src/doctor/utils/version.ts | 49 +++++++++++++++++++++++++++++++++++++ 1 file changed, 49 insertions(+) diff --git a/src/doctor/utils/version.ts b/src/doctor/utils/version.ts index fa501b4..53afa7c 100644 --- a/src/doctor/utils/version.ts +++ b/src/doctor/utils/version.ts @@ -105,3 +105,52 @@ export function fetchLatestGitHubRelease( request.on('error', (error) => reject(error)); }); } + +/** + * Extracts the first semantic version number from a string that may contain multiple versions separated by commas. + * + * @param versions input containing multiple versions + * @returns First semantic version found in the string, or undefined if no version is found or input is undefined. + */ +export function extractSemanticVersion( + versions: string | undefined +): string | undefined { + if (versions === undefined) return undefined; + + // Regex pattern to match a semantic version number + const versionPattern = /\b\d+\.\d+(\.\d+)?\b/; + const match = versions.match(versionPattern); + return match ? match[0] : undefined; +} + +/** + * Compares two semantic version strings. + * + * @param version1 The first version string to compare. + * @param version2 The second version string to compare. + * @returns -1 if version1 is less than version2, 1 if version1 is greater than version2, and 0 if they are equal. + */ +export function compareSemanticVersions( + version1: string | undefined, + version2: string | undefined +): number { + // Handle undefined values + if (version1 === undefined && version2 === undefined) return 0; + if (version1 === undefined) return -1; + if (version2 === undefined) return 1; + + const v1Parts = version1.split('.').map(Number); + const v2Parts = version2.split('.').map(Number); + + // Compare each part of the version numbers + for (let i = 0; i < Math.max(v1Parts.length, v2Parts.length); i++) { + const part1 = v1Parts[i] ?? 0; // Use 0 for missing parts + const part2 = v2Parts[i] ?? 0; // Use 0 for missing parts + + if (part1 > part2) return 1; + if (part1 < part2) return -1; + } + + // If all parts are equal, return 0 + return 0; +} From 869b1af3853193293d95263fa83d26fb41df386a Mon Sep 17 00:00:00 2001 From: Rehan Date: Mon, 1 Apr 2024 06:20:45 +0500 Subject: [PATCH 04/11] added check --- src/doctor/checks/ios.ts | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/src/doctor/checks/ios.ts b/src/doctor/checks/ios.ts index 06a0888..eb4aefc 100644 --- a/src/doctor/checks/ios.ts +++ b/src/doctor/checks/ios.ts @@ -6,10 +6,13 @@ import { POD_MESSAGING_PUSH_FCM, POD_TRACKING, iOS_DEPLOYMENT_TARGET_MIN_REQUIRED, + iOS_SDK_WITH_PUSH_SWIZZLING_SUPPORT, } from '../constants'; import { Context, iOSProject } from '../core'; import { CheckGroup } from '../types'; import { + compareSemanticVersions, + extractSemanticVersion, extractVersionFromPodLock, getReadablePath, logger, @@ -441,6 +444,18 @@ async function extractPodVersions(project: iOSProject): Promise { if (podVersions) { logger.success(`${podName}: ${podVersions}`); + + // Check if the pod version is lower than recommended for improved push notification tracking + if ( + compareSemanticVersions( + extractSemanticVersion(podVersions), + iOS_SDK_WITH_PUSH_SWIZZLING_SUPPORT + ) < 0 + ) { + logger.alert( + `Please update ${podName} to latest version following the documentation for improved tracking of push notification metrics` + ); + } } else if (!optional) { logger.failure(`${podName} module not found`); } From 63355f0cef86680993947ea7e5f6e21d577e3b07 Mon Sep 17 00:00:00 2001 From: Rehan Date: Mon, 1 Apr 2024 15:53:29 +0500 Subject: [PATCH 05/11] support for data pipeline pod --- src/doctor/checks/ios.ts | 25 +++++++++++++++++++++++-- src/doctor/constants/sdk.ts | 1 + 2 files changed, 24 insertions(+), 2 deletions(-) diff --git a/src/doctor/checks/ios.ts b/src/doctor/checks/ios.ts index eb4aefc..711a900 100644 --- a/src/doctor/checks/ios.ts +++ b/src/doctor/checks/ios.ts @@ -1,6 +1,7 @@ import * as path from 'path'; import { Conflicts, + POD_DATA_PIPELINE, POD_MESSAGING_IN_APP, POD_MESSAGING_PUSH_APN, POD_MESSAGING_PUSH_FCM, @@ -436,10 +437,30 @@ async function extractPodVersions(project: iOSProject): Promise { const podfileLock = project.podfileLock; const podfileLockContent = podfileLock.content; - const validatePod = (podName: string, optional: boolean = false): boolean => { + const validatePod = ( + podNameActual: string, + optional: boolean = false, + podNameAliases: string[] = [] + ): boolean => { + let podName: string = podNameActual; + let podVersions: string | undefined; if (podfileLockContent) { podVersions = extractVersionFromPodLock(podfileLockContent, podName); + + let index = 0; + while (!podVersions && index < podNameAliases.length) { + podVersions = extractVersionFromPodLock( + podfileLockContent, + podNameAliases[index] + ); + + if (podVersions) { + podName = podNameAliases[index]; + } + + index++; + } } if (podVersions) { @@ -462,7 +483,7 @@ async function extractPodVersions(project: iOSProject): Promise { return podVersions !== undefined; }; - validatePod(POD_TRACKING); + validatePod(POD_TRACKING, false, [POD_DATA_PIPELINE]); validatePod(POD_MESSAGING_IN_APP); const pushMessagingAPNPod = validatePod(POD_MESSAGING_PUSH_APN, true); diff --git a/src/doctor/constants/sdk.ts b/src/doctor/constants/sdk.ts index 94360a4..4f4d572 100644 --- a/src/doctor/constants/sdk.ts +++ b/src/doctor/constants/sdk.ts @@ -2,6 +2,7 @@ export const iOS_DEPLOYMENT_TARGET_MIN_REQUIRED = 13.0; export const GITHUB_ORG_NAME_CUSTOMER_IO = 'customerio'; export const PACKAGE_NAME_REACT_NATIVE = 'customerio-reactnative'; export const POD_COMMON = 'CustomerIOCommon'; +export const POD_DATA_PIPELINE = 'CustomerIODataPipelines'; export const POD_TRACKING = 'CustomerIOTracking'; export const POD_MESSAGING_IN_APP = 'CustomerIOMessagingInApp'; export const POD_MESSAGING_PUSH = 'CustomerIOMessagingPush'; From 853c68f1fbce09d4b6e781db7796a5ac4da33c48 Mon Sep 17 00:00:00 2001 From: Rehan Date: Mon, 1 Apr 2024 16:01:13 +0500 Subject: [PATCH 06/11] framework check --- src/doctor/checks/ios.ts | 28 ++++++---------------------- 1 file changed, 6 insertions(+), 22 deletions(-) diff --git a/src/doctor/checks/ios.ts b/src/doctor/checks/ios.ts index 711a900..0938162 100644 --- a/src/doctor/checks/ios.ts +++ b/src/doctor/checks/ios.ts @@ -437,30 +437,10 @@ async function extractPodVersions(project: iOSProject): Promise { const podfileLock = project.podfileLock; const podfileLockContent = podfileLock.content; - const validatePod = ( - podNameActual: string, - optional: boolean = false, - podNameAliases: string[] = [] - ): boolean => { - let podName: string = podNameActual; - + const validatePod = (podName: string, optional: boolean = false): boolean => { let podVersions: string | undefined; if (podfileLockContent) { podVersions = extractVersionFromPodLock(podfileLockContent, podName); - - let index = 0; - while (!podVersions && index < podNameAliases.length) { - podVersions = extractVersionFromPodLock( - podfileLockContent, - podNameAliases[index] - ); - - if (podVersions) { - podName = podNameAliases[index]; - } - - index++; - } } if (podVersions) { @@ -483,7 +463,11 @@ async function extractPodVersions(project: iOSProject): Promise { return podVersions !== undefined; }; - validatePod(POD_TRACKING, false, [POD_DATA_PIPELINE]); + if (project.framework == 'iOS') { + validatePod(POD_DATA_PIPELINE); + } else { + validatePod(POD_TRACKING); + } validatePod(POD_MESSAGING_IN_APP); const pushMessagingAPNPod = validatePod(POD_MESSAGING_PUSH_APN, true); From 527583a6381afa8dafac535f0d1c1936e5ba2b4f Mon Sep 17 00:00:00 2001 From: Rehan Date: Mon, 1 Apr 2024 16:23:11 +0500 Subject: [PATCH 07/11] push pod fixes --- src/doctor/checks/ios.ts | 36 +++++++++++++++++++++++++++++------- 1 file changed, 29 insertions(+), 7 deletions(-) diff --git a/src/doctor/checks/ios.ts b/src/doctor/checks/ios.ts index 0938162..af3c14e 100644 --- a/src/doctor/checks/ios.ts +++ b/src/doctor/checks/ios.ts @@ -437,7 +437,14 @@ async function extractPodVersions(project: iOSProject): Promise { const podfileLock = project.podfileLock; const podfileLockContent = podfileLock.content; - const validatePod = (podName: string, optional: boolean = false): boolean => { + const validatePod = ( + podName: string, + optional: boolean = false, + // Minimum required version for new features + minRequiredVersion: string | undefined = undefined, + // Message to display when the pod needs to be updated for new features + updatePodMessage: string = `Please update ${podName} to latest version following our documentation` + ): boolean => { let podVersions: string | undefined; if (podfileLockContent) { podVersions = extractVersionFromPodLock(podfileLockContent, podName); @@ -448,14 +455,13 @@ async function extractPodVersions(project: iOSProject): Promise { // Check if the pod version is lower than recommended for improved push notification tracking if ( + minRequiredVersion && compareSemanticVersions( extractSemanticVersion(podVersions), - iOS_SDK_WITH_PUSH_SWIZZLING_SUPPORT + minRequiredVersion ) < 0 ) { - logger.alert( - `Please update ${podName} to latest version following the documentation for improved tracking of push notification metrics` - ); + logger.alert(updatePodMessage); } } else if (!optional) { logger.failure(`${podName} module not found`); @@ -464,14 +470,30 @@ async function extractPodVersions(project: iOSProject): Promise { }; if (project.framework == 'iOS') { + // Since iOS SDK 3.0.0, we have removed Tracking module and apps should use Data Pipeline module now + // Validate Data Pipeline module for native iOS apps validatePod(POD_DATA_PIPELINE); } else { + // For other frameworks, validate Tracking module since Data Pipeline is not currently supported for them validatePod(POD_TRACKING); } validatePod(POD_MESSAGING_IN_APP); - const pushMessagingAPNPod = validatePod(POD_MESSAGING_PUSH_APN, true); - const pushMessagingFCMPod = validatePod(POD_MESSAGING_PUSH_FCM, true); + // Alert message for updating Push Messaging pods + const pushMessagingPodUpdateMessage = (podName: string) => + `Please update ${podName} to latest version following the documentation for improved tracking of push notification metrics`; + const pushMessagingAPNPod = validatePod( + POD_MESSAGING_PUSH_APN, + true, + iOS_SDK_WITH_PUSH_SWIZZLING_SUPPORT, + pushMessagingPodUpdateMessage(POD_MESSAGING_PUSH_APN) + ); + const pushMessagingFCMPod = validatePod( + POD_MESSAGING_PUSH_FCM, + true, + iOS_SDK_WITH_PUSH_SWIZZLING_SUPPORT, + pushMessagingPodUpdateMessage(POD_MESSAGING_PUSH_FCM) + ); if (pushMessagingAPNPod && pushMessagingFCMPod) { logger.error( From ae27131ec06784fd5afef7a2fc8e6f42be9b6dd4 Mon Sep 17 00:00:00 2001 From: Rehan Date: Mon, 1 Apr 2024 16:24:53 +0500 Subject: [PATCH 08/11] minor fix --- src/doctor/checks/ios.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/doctor/checks/ios.ts b/src/doctor/checks/ios.ts index af3c14e..26b48d8 100644 --- a/src/doctor/checks/ios.ts +++ b/src/doctor/checks/ios.ts @@ -481,7 +481,7 @@ async function extractPodVersions(project: iOSProject): Promise { // Alert message for updating Push Messaging pods const pushMessagingPodUpdateMessage = (podName: string) => - `Please update ${podName} to latest version following the documentation for improved tracking of push notification metrics`; + `Please update ${podName} to latest version following our documentation for improved tracking of push notification metrics`; const pushMessagingAPNPod = validatePod( POD_MESSAGING_PUSH_APN, true, From df9bef6e40634b160444d513289cf117f46432a6 Mon Sep 17 00:00:00 2001 From: Rehan Date: Mon, 1 Apr 2024 16:33:58 +0500 Subject: [PATCH 09/11] doc fixes --- src/doctor/utils/version.ts | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/doctor/utils/version.ts b/src/doctor/utils/version.ts index 53afa7c..b8dcc7f 100644 --- a/src/doctor/utils/version.ts +++ b/src/doctor/utils/version.ts @@ -109,7 +109,7 @@ export function fetchLatestGitHubRelease( /** * Extracts the first semantic version number from a string that may contain multiple versions separated by commas. * - * @param versions input containing multiple versions + * @param versions String containing multiple versions * @returns First semantic version found in the string, or undefined if no version is found or input is undefined. */ export function extractSemanticVersion( @@ -126,8 +126,8 @@ export function extractSemanticVersion( /** * Compares two semantic version strings. * - * @param version1 The first version string to compare. - * @param version2 The second version string to compare. + * @param version1 First version string to compare. + * @param version2 Second version string to compare. * @returns -1 if version1 is less than version2, 1 if version1 is greater than version2, and 0 if they are equal. */ export function compareSemanticVersions( From 9f62d13fa401ac55951972aead54806c7926dc8b Mon Sep 17 00:00:00 2001 From: Rehan Date: Mon, 1 Apr 2024 17:48:41 +0500 Subject: [PATCH 10/11] comment updates --- src/doctor/checks/ios.ts | 11 ++++++----- src/doctor/constants/sdk.ts | 8 +++++--- 2 files changed, 11 insertions(+), 8 deletions(-) diff --git a/src/doctor/checks/ios.ts b/src/doctor/checks/ios.ts index 26b48d8..db1a09f 100644 --- a/src/doctor/checks/ios.ts +++ b/src/doctor/checks/ios.ts @@ -7,7 +7,7 @@ import { POD_MESSAGING_PUSH_FCM, POD_TRACKING, iOS_DEPLOYMENT_TARGET_MIN_REQUIRED, - iOS_SDK_WITH_PUSH_SWIZZLING_SUPPORT, + iOS_SDK_PUSH_SWIZZLE_VERSION, } from '../constants'; import { Context, iOSProject } from '../core'; import { CheckGroup } from '../types'; @@ -453,7 +453,8 @@ async function extractPodVersions(project: iOSProject): Promise { if (podVersions) { logger.success(`${podName}: ${podVersions}`); - // Check if the pod version is lower than recommended for improved push notification tracking + // Check if the pod version is below the minimum required version + // If so, alert the user to update the pod for new features if ( minRequiredVersion && compareSemanticVersions( @@ -474,7 +475,7 @@ async function extractPodVersions(project: iOSProject): Promise { // Validate Data Pipeline module for native iOS apps validatePod(POD_DATA_PIPELINE); } else { - // For other frameworks, validate Tracking module since Data Pipeline is not currently supported for them + // For other frameworks, validate Tracking module since Data Pipeline is not currently supported by them validatePod(POD_TRACKING); } validatePod(POD_MESSAGING_IN_APP); @@ -485,13 +486,13 @@ async function extractPodVersions(project: iOSProject): Promise { const pushMessagingAPNPod = validatePod( POD_MESSAGING_PUSH_APN, true, - iOS_SDK_WITH_PUSH_SWIZZLING_SUPPORT, + iOS_SDK_PUSH_SWIZZLE_VERSION, pushMessagingPodUpdateMessage(POD_MESSAGING_PUSH_APN) ); const pushMessagingFCMPod = validatePod( POD_MESSAGING_PUSH_FCM, true, - iOS_SDK_WITH_PUSH_SWIZZLING_SUPPORT, + iOS_SDK_PUSH_SWIZZLE_VERSION, pushMessagingPodUpdateMessage(POD_MESSAGING_PUSH_FCM) ); diff --git a/src/doctor/constants/sdk.ts b/src/doctor/constants/sdk.ts index 4f4d572..f149df0 100644 --- a/src/doctor/constants/sdk.ts +++ b/src/doctor/constants/sdk.ts @@ -8,6 +8,8 @@ export const POD_MESSAGING_IN_APP = 'CustomerIOMessagingInApp'; export const POD_MESSAGING_PUSH = 'CustomerIOMessagingPush'; export const POD_MESSAGING_PUSH_APN = 'CustomerIOMessagingPushAPN'; export const POD_MESSAGING_PUSH_FCM = 'CustomerIOMessagingPushFCM'; - -// Specific versions of SDKs for which we have special handling in doctor tool -export const iOS_SDK_WITH_PUSH_SWIZZLING_SUPPORT = '2.11'; +/** + * Specific versions of SDKs for which we have special handling in doctor tool + */ +// iOS SDK version that introduced support for swizzling in push module +export const iOS_SDK_PUSH_SWIZZLE_VERSION = '2.11'; From 8d0204d64baf2d119060245fe8002e08cf0599e3 Mon Sep 17 00:00:00 2001 From: Rehan Date: Wed, 3 Apr 2024 13:39:32 +0500 Subject: [PATCH 11/11] removed v3 explicit support --- src/doctor/checks/ios.ts | 10 +--------- src/doctor/constants/sdk.ts | 1 - 2 files changed, 1 insertion(+), 10 deletions(-) diff --git a/src/doctor/checks/ios.ts b/src/doctor/checks/ios.ts index db1a09f..0722faf 100644 --- a/src/doctor/checks/ios.ts +++ b/src/doctor/checks/ios.ts @@ -1,7 +1,6 @@ import * as path from 'path'; import { Conflicts, - POD_DATA_PIPELINE, POD_MESSAGING_IN_APP, POD_MESSAGING_PUSH_APN, POD_MESSAGING_PUSH_FCM, @@ -470,14 +469,7 @@ async function extractPodVersions(project: iOSProject): Promise { return podVersions !== undefined; }; - if (project.framework == 'iOS') { - // Since iOS SDK 3.0.0, we have removed Tracking module and apps should use Data Pipeline module now - // Validate Data Pipeline module for native iOS apps - validatePod(POD_DATA_PIPELINE); - } else { - // For other frameworks, validate Tracking module since Data Pipeline is not currently supported by them - validatePod(POD_TRACKING); - } + validatePod(POD_TRACKING); validatePod(POD_MESSAGING_IN_APP); // Alert message for updating Push Messaging pods diff --git a/src/doctor/constants/sdk.ts b/src/doctor/constants/sdk.ts index f149df0..6f7b136 100644 --- a/src/doctor/constants/sdk.ts +++ b/src/doctor/constants/sdk.ts @@ -2,7 +2,6 @@ export const iOS_DEPLOYMENT_TARGET_MIN_REQUIRED = 13.0; export const GITHUB_ORG_NAME_CUSTOMER_IO = 'customerio'; export const PACKAGE_NAME_REACT_NATIVE = 'customerio-reactnative'; export const POD_COMMON = 'CustomerIOCommon'; -export const POD_DATA_PIPELINE = 'CustomerIODataPipelines'; export const POD_TRACKING = 'CustomerIOTracking'; export const POD_MESSAGING_IN_APP = 'CustomerIOMessagingInApp'; export const POD_MESSAGING_PUSH = 'CustomerIOMessagingPush';