customerio-expo-plugin 1.0.0-beta.11 → 1.0.0-beta.12
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/lib/commonjs/helpers/constants/ios.js +7 -1
- package/lib/commonjs/helpers/constants/ios.js.map +1 -1
- package/lib/commonjs/helpers/utils/injectCIOPodfileCode.js +3 -2
- package/lib/commonjs/helpers/utils/injectCIOPodfileCode.js.map +1 -1
- package/lib/commonjs/ios/withNotificationsXcodeProject.js +12 -12
- package/lib/commonjs/ios/withNotificationsXcodeProject.js.map +1 -1
- package/lib/module/helpers/constants/ios.js +4 -0
- package/lib/module/helpers/constants/ios.js.map +1 -1
- package/lib/module/helpers/utils/injectCIOPodfileCode.js +3 -2
- package/lib/module/helpers/utils/injectCIOPodfileCode.js.map +1 -1
- package/lib/module/ios/withNotificationsXcodeProject.js +12 -12
- package/lib/module/ios/withNotificationsXcodeProject.js.map +1 -1
- package/lib/typescript/helpers/constants/ios.d.ts +2 -0
- package/package.json +1 -1
- package/src/helpers/constants/ios.ts +10 -0
- package/src/helpers/utils/injectCIOPodfileCode.ts +3 -2
|
@@ -3,15 +3,21 @@
|
|
|
3
3
|
Object.defineProperty(exports, "__esModule", {
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
|
-
exports.LOCAL_PATH_TO_CIO_NSE_FILES = exports.IOS_DEPLOYMENT_TARGET = exports.GROUP_IDENTIFIER_TEMPLATE_REGEX = exports.DEFAULT_BUNDLE_VERSION = exports.DEFAULT_BUNDLE_SHORT_VERSION = exports.CIO_WILLPRESENTNOTIFICATIONHANDLER_SNIPPET = exports.CIO_TARGET_NAME = exports.CIO_REGISTER_PUSHNOTIFICATION_SNIPPET = exports.CIO_PUSHNOTIFICATIONHANDLERDECLARATION_SNIPPET = exports.CIO_NOTIFICATION_TARGET_NAME = exports.CIO_DIDREGISTERFORREMOTENOTIFICATIONSWITHDEVICETOKEN_SNIPPET = exports.CIO_DIDREGISTERFORREMOTENOTIFICATIONSWITHDEVICETOKEN_REGEX = exports.CIO_DIDRECEIVENOTIFICATIONRESPONSEHANDLER_SNIPPET = exports.CIO_DIDFINISHLAUNCHINGMETHOD_REGEX = exports.CIO_DIDFAILTOREGISTERFORREMOTENOTIFICATIONSWITHERROR_SNIPPET = exports.CIO_DIDFAILTOREGISTERFORREMOTENOTIFICATIONSWITHERROR_REGEX = exports.CIO_DIDFAILTOREGISTERFORREMOTENOTIFICATIONSWITHERRORFULL_REGEX = exports.CIO_CONFIGURECIOSDKPUSHNOTIFICATION_SNIPPET = exports.CIO_APPDELEGATEHEADER_SNIPPET = exports.CIO_APPDELEGATEHEADER_REGEX = exports.CIO_APPDELEGATEDECLARATION_REGEX = exports.BUNDLE_VERSION_TEMPLATE_REGEX = exports.BUNDLE_SHORT_VERSION_TEMPLATE_REGEX = void 0;
|
|
6
|
+
exports.LOCAL_PATH_TO_RN_SDK = exports.LOCAL_PATH_TO_CIO_NSE_FILES = exports.IOS_DEPLOYMENT_TARGET = exports.GROUP_IDENTIFIER_TEMPLATE_REGEX = exports.DEFAULT_BUNDLE_VERSION = exports.DEFAULT_BUNDLE_SHORT_VERSION = exports.CIO_WILLPRESENTNOTIFICATIONHANDLER_SNIPPET = exports.CIO_TARGET_NAME = exports.CIO_REGISTER_PUSHNOTIFICATION_SNIPPET = exports.CIO_PUSHNOTIFICATIONHANDLERDECLARATION_SNIPPET = exports.CIO_NOTIFICATION_TARGET_NAME = exports.CIO_DIDREGISTERFORREMOTENOTIFICATIONSWITHDEVICETOKEN_SNIPPET = exports.CIO_DIDREGISTERFORREMOTENOTIFICATIONSWITHDEVICETOKEN_REGEX = exports.CIO_DIDRECEIVENOTIFICATIONRESPONSEHANDLER_SNIPPET = exports.CIO_DIDFINISHLAUNCHINGMETHOD_REGEX = exports.CIO_DIDFAILTOREGISTERFORREMOTENOTIFICATIONSWITHERROR_SNIPPET = exports.CIO_DIDFAILTOREGISTERFORREMOTENOTIFICATIONSWITHERROR_REGEX = exports.CIO_DIDFAILTOREGISTERFORREMOTENOTIFICATIONSWITHERRORFULL_REGEX = exports.CIO_CONFIGURECIOSDKPUSHNOTIFICATION_SNIPPET = exports.CIO_APPDELEGATEHEADER_SNIPPET = exports.CIO_APPDELEGATEHEADER_REGEX = exports.CIO_APPDELEGATEDECLARATION_REGEX = exports.BUNDLE_VERSION_TEMPLATE_REGEX = exports.BUNDLE_SHORT_VERSION_TEMPLATE_REGEX = void 0;
|
|
7
|
+
exports.getRelativePathToRNSDK = getRelativePathToRNSDK;
|
|
7
8
|
const finder = require('find-package-json');
|
|
8
9
|
const path = require('path');
|
|
9
10
|
const f = finder(__dirname);
|
|
10
11
|
let pluginPackageRoot = f.next().filename;
|
|
11
12
|
// This is the path to the root of the customerio-expo-plugin package
|
|
12
13
|
pluginPackageRoot = path.dirname(pluginPackageRoot);
|
|
14
|
+
const LOCAL_PATH_TO_RN_SDK = path.join(pluginPackageRoot, '../customerio-reactnative');
|
|
15
|
+
exports.LOCAL_PATH_TO_RN_SDK = LOCAL_PATH_TO_RN_SDK;
|
|
13
16
|
const LOCAL_PATH_TO_CIO_NSE_FILES = path.join(pluginPackageRoot, 'src/helpers/native-files/ios');
|
|
14
17
|
exports.LOCAL_PATH_TO_CIO_NSE_FILES = LOCAL_PATH_TO_CIO_NSE_FILES;
|
|
18
|
+
function getRelativePathToRNSDK(currentFile) {
|
|
19
|
+
return path.relative(path.dirname(currentFile), LOCAL_PATH_TO_RN_SDK);
|
|
20
|
+
}
|
|
15
21
|
const IOS_DEPLOYMENT_TARGET = '13.0';
|
|
16
22
|
exports.IOS_DEPLOYMENT_TARGET = IOS_DEPLOYMENT_TARGET;
|
|
17
23
|
const GROUP_IDENTIFIER_TEMPLATE_REGEX = /{{GROUP_IDENTIFIER}}/gm;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["finder","require","path","f","__dirname","pluginPackageRoot","next","filename","dirname","
|
|
1
|
+
{"version":3,"names":["finder","require","path","f","__dirname","pluginPackageRoot","next","filename","dirname","LOCAL_PATH_TO_RN_SDK","join","exports","LOCAL_PATH_TO_CIO_NSE_FILES","getRelativePathToRNSDK","currentFile","relative","IOS_DEPLOYMENT_TARGET","GROUP_IDENTIFIER_TEMPLATE_REGEX","BUNDLE_SHORT_VERSION_TEMPLATE_REGEX","BUNDLE_VERSION_TEMPLATE_REGEX","CIO_DIDFINISHLAUNCHINGMETHOD_REGEX","CIO_DIDFAILTOREGISTERFORREMOTENOTIFICATIONSWITHERROR_REGEX","CIO_DIDFAILTOREGISTERFORREMOTENOTIFICATIONSWITHERRORFULL_REGEX","CIO_DIDREGISTERFORREMOTENOTIFICATIONSWITHDEVICETOKEN_REGEX","CIO_APPDELEGATEDECLARATION_REGEX","CIO_APPDELEGATEHEADER_REGEX","DEFAULT_BUNDLE_VERSION","DEFAULT_BUNDLE_SHORT_VERSION","CIO_TARGET_NAME","CIO_NOTIFICATION_TARGET_NAME","CIO_APPDELEGATEHEADER_SNIPPET","CIO_PUSHNOTIFICATIONHANDLERDECLARATION_SNIPPET","CIO_DIDFAILTOREGISTERFORREMOTENOTIFICATIONSWITHERROR_SNIPPET","CIO_DIDREGISTERFORREMOTENOTIFICATIONSWITHDEVICETOKEN_SNIPPET","CIO_CONFIGURECIOSDKPUSHNOTIFICATION_SNIPPET","CIO_DIDRECEIVENOTIFICATIONRESPONSEHANDLER_SNIPPET","CIO_WILLPRESENTNOTIFICATIONHANDLER_SNIPPET","CIO_REGISTER_PUSHNOTIFICATION_SNIPPET"],"sources":["ios.ts"],"sourcesContent":["const finder = require('find-package-json');\nconst path = require('path');\n\nconst f = finder(__dirname);\nlet pluginPackageRoot = f.next().filename;\n// This is the path to the root of the customerio-expo-plugin package\npluginPackageRoot = path.dirname(pluginPackageRoot);\n\nexport const LOCAL_PATH_TO_RN_SDK = path.join(\n pluginPackageRoot,\n '../customerio-reactnative'\n)\n\nexport const LOCAL_PATH_TO_CIO_NSE_FILES = path.join(\n pluginPackageRoot,\n 'src/helpers/native-files/ios'\n);\n\nexport function getRelativePathToRNSDK(currentFile: string) {\n return path.relative(path.dirname(currentFile), LOCAL_PATH_TO_RN_SDK);\n}\n\nexport const IOS_DEPLOYMENT_TARGET = '13.0';\nexport const GROUP_IDENTIFIER_TEMPLATE_REGEX = /{{GROUP_IDENTIFIER}}/gm;\nexport const BUNDLE_SHORT_VERSION_TEMPLATE_REGEX = /{{BUNDLE_SHORT_VERSION}}/gm;\nexport const BUNDLE_VERSION_TEMPLATE_REGEX = /{{BUNDLE_VERSION}}/gm;\nexport const CIO_DIDFINISHLAUNCHINGMETHOD_REGEX =\n /(- \\(BOOL\\)application:\\(UIApplication \\*\\)application didFinishLaunchingWithOptions:\\(NSDictionary \\*\\)launchOptions(\\s|\\n)*?\\{)((.|\\n)*)\\[super(\\s)application:application(\\s)didFinishLaunchingWithOptions:launchOptions\\];/;\n\nexport const CIO_DIDFAILTOREGISTERFORREMOTENOTIFICATIONSWITHERROR_REGEX =\n /return \\[super application:application didFailToRegisterForRemoteNotificationsWithError:error\\];/;\n\nexport const CIO_DIDFAILTOREGISTERFORREMOTENOTIFICATIONSWITHERRORFULL_REGEX =\n /(- \\(void\\)application:\\(UIApplication \\*\\)application didFailToRegisterForRemoteNotificationsWithError:\\(NSError \\*\\)error(\\s|\\n)*?\\{)(.|\\n){2}.*\\n\\}/;\n\nexport const CIO_DIDREGISTERFORREMOTENOTIFICATIONSWITHDEVICETOKEN_REGEX =\n /return \\[super application:application didRegisterForRemoteNotificationsWithDeviceToken:deviceToken\\];/;\n\nexport const CIO_APPDELEGATEDECLARATION_REGEX =\n /@implementation AppDelegate(.|\\n)/;\n\nexport const CIO_APPDELEGATEHEADER_REGEX =\n /@interface AppDelegate : EXAppDelegateWrapper <RCTBridgeDelegate>/;\nexport const DEFAULT_BUNDLE_VERSION = '1';\nexport const DEFAULT_BUNDLE_SHORT_VERSION = '1.0';\nexport const CIO_TARGET_NAME = 'CustomerIOSDK';\nexport const CIO_NOTIFICATION_TARGET_NAME = 'NotificationService';\nexport const CIO_APPDELEGATEHEADER_SNIPPET = `\n#import <UserNotifications/UserNotifications.h>\n\n@interface AppDelegate : EXAppDelegateWrapper <RCTBridgeDelegate, UNUserNotificationCenterDelegate>\n`;\n\nexport const CIO_PUSHNOTIFICATIONHANDLERDECLARATION_SNIPPET = `\nCIOAppPushNotificationsHandler* pnHandlerObj = [[CIOAppPushNotificationsHandler alloc] init];\n`;\n\nexport const CIO_DIDFAILTOREGISTERFORREMOTENOTIFICATIONSWITHERROR_SNIPPET = `\n [super application:application didFailToRegisterForRemoteNotificationsWithError:error];\n [pnHandlerObj application:application error:error];\n`;\n\nexport const CIO_DIDREGISTERFORREMOTENOTIFICATIONSWITHDEVICETOKEN_SNIPPET = `\n [super application:application didRegisterForRemoteNotificationsWithDeviceToken:deviceToken];\n return [pnHandlerObj application:application deviceToken:deviceToken];\n`;\n\nexport const CIO_CONFIGURECIOSDKPUSHNOTIFICATION_SNIPPET = `\n // Register for push notifications\n [pnHandlerObj registerPushNotification:self];\n`;\n\n// Enable push handling - notification response\nexport const CIO_DIDRECEIVENOTIFICATIONRESPONSEHANDLER_SNIPPET = `\n- (void)userNotificationCenter:(UNUserNotificationCenter *)center didReceiveNotificationResponse:(UNNotificationResponse *)response withCompletionHandler:(void(^)(void))completionHandler {\n [pnHandlerObj userNotificationCenter:center didReceiveNotificationResponse:response withCompletionHandler:completionHandler];\n}`;\n\n// Foreground push handling\nexport const CIO_WILLPRESENTNOTIFICATIONHANDLER_SNIPPET = `\n// show push when the app is in foreground\n- (void)userNotificationCenter:(UNUserNotificationCenter* )center willPresentNotification:(UNNotification* )notification withCompletionHandler:(void (^)(UNNotificationPresentationOptions options))completionHandler {\n completionHandler( UNNotificationPresentationOptionAlert + UNNotificationPresentationOptionSound);\n}`;\nexport const CIO_REGISTER_PUSHNOTIFICATION_SNIPPET = `\n@objc(registerPushNotification:)\n public func registerPushNotification(withNotificationDelegate notificationDelegate: UNUserNotificationCenterDelegate) {\n\n let center = UNUserNotificationCenter.current()\n center.delegate = notificationDelegate\n center.requestAuthorization(options: [.sound, .alert, .badge]) { (granted, error) in\n if error == nil{\n DispatchQueue.main.async {\n UIApplication.shared.registerForRemoteNotifications()\n }\n }\n }\n }`;\n"],"mappings":"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"}
|
|
@@ -5,6 +5,7 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
5
5
|
});
|
|
6
6
|
exports.injectCIONotificationPodfileCode = injectCIONotificationPodfileCode;
|
|
7
7
|
exports.injectCIOPodfileCode = injectCIOPodfileCode;
|
|
8
|
+
var _ios = require("../constants/ios");
|
|
8
9
|
var _codeInjection = require("./codeInjection");
|
|
9
10
|
var _fileManagement = require("./fileManagement");
|
|
10
11
|
async function injectCIOPodfileCode(iosPath) {
|
|
@@ -20,7 +21,7 @@ async function injectCIOPodfileCode(iosPath) {
|
|
|
20
21
|
const lineInPodfileToInjectSnippetBefore = /post_install do \|installer\|/;
|
|
21
22
|
const snippetToInjectInPodfile = `
|
|
22
23
|
${blockStart}
|
|
23
|
-
pod 'customerio-reactnative/apn', :path => '
|
|
24
|
+
pod 'customerio-reactnative/apn', :path => '${(0, _ios.getRelativePathToRNSDK)(filename)}'
|
|
24
25
|
${blockEnd}
|
|
25
26
|
`.trim();
|
|
26
27
|
_fileManagement.FileManagement.write(filename, (0, _codeInjection.injectCodeByRegex)(podfile, lineInPodfileToInjectSnippetBefore, snippetToInjectInPodfile).join('\n'));
|
|
@@ -39,7 +40,7 @@ async function injectCIONotificationPodfileCode(iosPath, useFrameworks) {
|
|
|
39
40
|
${blockStart}
|
|
40
41
|
target 'NotificationService' do
|
|
41
42
|
${useFrameworks === 'static' ? 'use_frameworks! :linkage => :static' : ''}
|
|
42
|
-
pod 'customerio-reactnative-richpush/apn', :path => '
|
|
43
|
+
pod 'customerio-reactnative-richpush/apn', :path => '${(0, _ios.getRelativePathToRNSDK)(filename)}'
|
|
43
44
|
end
|
|
44
45
|
${blockEnd}
|
|
45
46
|
`.trim();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["
|
|
1
|
+
{"version":3,"names":["_ios","require","_codeInjection","_fileManagement","injectCIOPodfileCode","iosPath","blockStart","blockEnd","filename","podfile","FileManagement","read","matches","match","RegExp","lineInPodfileToInjectSnippetBefore","snippetToInjectInPodfile","getRelativePathToRNSDK","trim","write","injectCodeByRegex","join","console","log","injectCIONotificationPodfileCode","useFrameworks","append"],"sources":["injectCIOPodfileCode.ts"],"sourcesContent":["import type { CustomerIOPluginOptionsIOS } from '../../types/cio-types';\nimport { getRelativePathToRNSDK } from '../constants/ios';\nimport { injectCodeByRegex } from './codeInjection';\nimport { FileManagement } from './fileManagement';\n\nexport async function injectCIOPodfileCode(iosPath: string) {\n const blockStart = '# --- CustomerIO Host App START ---';\n const blockEnd = '# --- CustomerIO Host App END ---';\n\n const filename = `${iosPath}/Podfile`;\n const podfile = await FileManagement.read(filename);\n const matches = podfile.match(new RegExp(blockStart));\n\n if (!matches) {\n // We need to decide what line of code in the Podfile to insert our native code.\n // The \"post_install\" line is always present in an Expo project Podfile so it's reliable.\n // Find that line in the Podfile and then we will insert our code above that line.\n const lineInPodfileToInjectSnippetBefore = /post_install do \\|installer\\|/;\n\n const snippetToInjectInPodfile = `\n${blockStart}\n pod 'customerio-reactnative/apn', :path => '${getRelativePathToRNSDK(filename)}'\n${blockEnd}\n`.trim();\n\n FileManagement.write(\n filename,\n injectCodeByRegex(\n podfile,\n lineInPodfileToInjectSnippetBefore,\n snippetToInjectInPodfile\n ).join('\\n')\n );\n } else {\n console.log('CustomerIO Podfile snippets already exists. Skipping...');\n }\n}\n\nexport async function injectCIONotificationPodfileCode(\n iosPath: string,\n useFrameworks: CustomerIOPluginOptionsIOS['useFrameworks']\n) {\n const filename = `${iosPath}/Podfile`;\n const podfile = await FileManagement.read(filename);\n\n const blockStart = '# --- CustomerIO Notification START ---';\n const blockEnd = '# --- CustomerIO Notification END ---';\n\n const matches = podfile.match(new RegExp(blockStart));\n\n if (!matches) {\n const snippetToInjectInPodfile = `\n${blockStart}\ntarget 'NotificationService' do\n ${useFrameworks === 'static' ? 'use_frameworks! :linkage => :static' : ''}\n pod 'customerio-reactnative-richpush/apn', :path => '${getRelativePathToRNSDK(filename)}'\nend\n${blockEnd}\n`.trim();\n\n FileManagement.append(filename, snippetToInjectInPodfile);\n }\n}\n"],"mappings":";;;;;;;AACA,IAAAA,IAAA,GAAAC,OAAA;AACA,IAAAC,cAAA,GAAAD,OAAA;AACA,IAAAE,eAAA,GAAAF,OAAA;AAEO,eAAeG,oBAAoBA,CAACC,OAAe,EAAE;EAC1D,MAAMC,UAAU,GAAG,qCAAqC;EACxD,MAAMC,QAAQ,GAAG,mCAAmC;EAEpD,MAAMC,QAAQ,GAAI,GAAEH,OAAQ,UAAS;EACrC,MAAMI,OAAO,GAAG,MAAMC,8BAAc,CAACC,IAAI,CAACH,QAAQ,CAAC;EACnD,MAAMI,OAAO,GAAGH,OAAO,CAACI,KAAK,CAAC,IAAIC,MAAM,CAACR,UAAU,CAAC,CAAC;EAErD,IAAI,CAACM,OAAO,EAAE;IACZ;IACA;IACA;IACA,MAAMG,kCAAkC,GAAG,+BAA+B;IAE1E,MAAMC,wBAAwB,GAAI;AACtC,EAAEV,UAAW;AACb,gDAAgD,IAAAW,2BAAsB,EAACT,QAAQ,CAAE;AACjF,EAAED,QAAS;AACX,CAAC,CAACW,IAAI,CAAC,CAAC;IAEJR,8BAAc,CAACS,KAAK,CAClBX,QAAQ,EACR,IAAAY,gCAAiB,EACfX,OAAO,EACPM,kCAAkC,EAClCC,wBACF,CAAC,CAACK,IAAI,CAAC,IAAI,CACb,CAAC;EACH,CAAC,MAAM;IACLC,OAAO,CAACC,GAAG,CAAC,yDAAyD,CAAC;EACxE;AACF;AAEO,eAAeC,gCAAgCA,CACpDnB,OAAe,EACfoB,aAA0D,EAC1D;EACA,MAAMjB,QAAQ,GAAI,GAAEH,OAAQ,UAAS;EACrC,MAAMI,OAAO,GAAG,MAAMC,8BAAc,CAACC,IAAI,CAACH,QAAQ,CAAC;EAEnD,MAAMF,UAAU,GAAG,yCAAyC;EAC5D,MAAMC,QAAQ,GAAG,uCAAuC;EAExD,MAAMK,OAAO,GAAGH,OAAO,CAACI,KAAK,CAAC,IAAIC,MAAM,CAACR,UAAU,CAAC,CAAC;EAErD,IAAI,CAACM,OAAO,EAAE;IACZ,MAAMI,wBAAwB,GAAI;AACtC,EAAEV,UAAW;AACb;AACA,IAAImB,aAAa,KAAK,QAAQ,GAAG,qCAAqC,GAAG,EAAG;AAC5E,yDAAyD,IAAAR,2BAAsB,EAACT,QAAQ,CAAE;AAC1F;AACA,EAAED,QAAS;AACX,CAAC,CAACW,IAAI,CAAC,CAAC;IAEJR,8BAAc,CAACgB,MAAM,CAAClB,QAAQ,EAAEQ,wBAAwB,CAAC;EAC3D;AACF"}
|
|
@@ -181,30 +181,30 @@ const updateNseInfoPlist = payload => {
|
|
|
181
181
|
_fileManagement.FileManagement.writeFile(payload.infoPlistTargetFile, plistFileString);
|
|
182
182
|
};
|
|
183
183
|
const updateNseEnv = (options, envFileName) => {
|
|
184
|
-
var _options$pushNotifica2, _options$
|
|
184
|
+
var _options$pushNotifica2, _options$pushNotifica4, _options$pushNotifica6;
|
|
185
185
|
const SITE_ID_RE = /\{\{SITE_ID\}\}/;
|
|
186
186
|
const API_KEY_RE = /\{\{API_KEY\}\}/;
|
|
187
187
|
const REGION_RE = /\{\{REGION\}\}/;
|
|
188
188
|
let envFileContent = _fileManagement.FileManagement.readFile(envFileName);
|
|
189
|
-
if ((_options$pushNotifica2 = options.pushNotification) !== null && _options$pushNotifica2 !== void 0 && (_options$
|
|
190
|
-
var _options$
|
|
191
|
-
envFileContent = (0, _codeInjection.replaceCodeByRegex)(envFileContent, SITE_ID_RE, (_options$
|
|
189
|
+
if ((_options$pushNotifica2 = options.pushNotification) !== null && _options$pushNotifica2 !== void 0 && (_options$pushNotifica2 = _options$pushNotifica2.env) !== null && _options$pushNotifica2 !== void 0 && _options$pushNotifica2.siteId) {
|
|
190
|
+
var _options$pushNotifica3;
|
|
191
|
+
envFileContent = (0, _codeInjection.replaceCodeByRegex)(envFileContent, SITE_ID_RE, (_options$pushNotifica3 = options.pushNotification) === null || _options$pushNotifica3 === void 0 || (_options$pushNotifica3 = _options$pushNotifica3.env) === null || _options$pushNotifica3 === void 0 ? void 0 : _options$pushNotifica3.siteId);
|
|
192
192
|
}
|
|
193
|
-
if ((_options$
|
|
194
|
-
var _options$
|
|
195
|
-
envFileContent = (0, _codeInjection.replaceCodeByRegex)(envFileContent, API_KEY_RE, (_options$
|
|
193
|
+
if ((_options$pushNotifica4 = options.pushNotification) !== null && _options$pushNotifica4 !== void 0 && (_options$pushNotifica4 = _options$pushNotifica4.env) !== null && _options$pushNotifica4 !== void 0 && _options$pushNotifica4.apiKey) {
|
|
194
|
+
var _options$pushNotifica5;
|
|
195
|
+
envFileContent = (0, _codeInjection.replaceCodeByRegex)(envFileContent, API_KEY_RE, (_options$pushNotifica5 = options.pushNotification) === null || _options$pushNotifica5 === void 0 || (_options$pushNotifica5 = _options$pushNotifica5.env) === null || _options$pushNotifica5 === void 0 ? void 0 : _options$pushNotifica5.apiKey);
|
|
196
196
|
}
|
|
197
|
-
if ((_options$
|
|
198
|
-
var _options$
|
|
197
|
+
if ((_options$pushNotifica6 = options.pushNotification) !== null && _options$pushNotifica6 !== void 0 && (_options$pushNotifica6 = _options$pushNotifica6.env) !== null && _options$pushNotifica6 !== void 0 && _options$pushNotifica6.region) {
|
|
198
|
+
var _options$pushNotifica7;
|
|
199
199
|
const regionMap = {
|
|
200
200
|
us: 'Region.US',
|
|
201
201
|
eu: 'Region.EU'
|
|
202
202
|
};
|
|
203
|
-
const region = (_options$
|
|
203
|
+
const region = (_options$pushNotifica7 = options.pushNotification) === null || _options$pushNotifica7 === void 0 || (_options$pushNotifica7 = _options$pushNotifica7.env) === null || _options$pushNotifica7 === void 0 || (_options$pushNotifica7 = _options$pushNotifica7.region) === null || _options$pushNotifica7 === void 0 ? void 0 : _options$pushNotifica7.toLowerCase();
|
|
204
204
|
const mappedRegion = regionMap[region] || '';
|
|
205
205
|
if (!mappedRegion) {
|
|
206
|
-
var _options$
|
|
207
|
-
console.warn(`${(_options$
|
|
206
|
+
var _options$pushNotifica8;
|
|
207
|
+
console.warn(`${(_options$pushNotifica8 = options.pushNotification) === null || _options$pushNotifica8 === void 0 || (_options$pushNotifica8 = _options$pushNotifica8.env) === null || _options$pushNotifica8 === void 0 ? void 0 : _options$pushNotifica8.region} is an invalid region. Please use the values from the docs: https://customer.io/docs/sdk/expo/getting-started/#configure-the-plugin`);
|
|
208
208
|
} else {
|
|
209
209
|
envFileContent = (0, _codeInjection.replaceCodeByRegex)(envFileContent, REGION_RE, mappedRegion);
|
|
210
210
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_configPlugins","require","_ios","_codeInjection","_injectCIOPodfileCode","_fileManagement","PLIST_FILENAME","CIO_NOTIFICATION_TARGET_NAME","ENV_FILENAME","TARGETED_DEVICE_FAMILY","addNotificationServiceExtension","options","xcodeProject","_options$pushNotifica","pushNotification","addPushNotificationFile","useRichPush","addRichPushXcodeProj","error","console","withCioNotificationsXcodeProject","configOuter","props","withXcodeProject","config","modRequest","ios","version","bundleShortVersion","appleTeamId","iosDeploymentTarget","useFrameworks","undefined","Error","projectName","platformProjectRoot","bundleIdentifier","buildNumber","bundleVersion","DEFAULT_BUNDLE_VERSION","iosPath","appName","modifiedProjectFile","modResults","exports","injectCIONotificationPodfileCode","pbxTargetByName","warn","nsePath","FileManagement","mkdir","recursive","files","getTargetFile","filename","forEach","targetFile","copyFile","LOCAL_PATH_TO_CIO_NSE_FILES","infoPlistTargetFile","updateNseInfoPlist","updateNseEnv","extGroup","addPbxGroup","groups","hash","project","objects","Object","keys","key","name","path","addToPbxGroup","uuid","projObjects","nseTarget","addTarget","addBuildPhase","configurations","pbxXCBuildConfigurationSection","buildSettings","PRODUCT_NAME","buildSettingsObj","DEVELOPMENT_TEAM","IPHONEOS_DEPLOYMENT_TARGET","CODE_SIGN_STYLE","SWIFT_VERSION","addTargetAttribute","payload","BUNDLE_SHORT_VERSION_RE","BUNDLE_VERSION_RE","plistFileString","readFile","replaceCodeByRegex","writeFile","envFileName","_options$pushNotifica2","_options$pushNotifica3","_options$pushNotifica6","_options$pushNotifica7","_options$pushNotifica10","_options$pushNotifica11","SITE_ID_RE","API_KEY_RE","REGION_RE","envFileContent","env","siteId","_options$pushNotifica4","_options$pushNotifica5","apiKey","_options$pushNotifica8","_options$pushNotifica9","region","_options$pushNotifica12","_options$pushNotifica13","_options$pushNotifica14","regionMap","us","eu","toLowerCase","mappedRegion","_options$pushNotifica15","_options$pushNotifica16","file","appPath","exists","log","updatePushFile","group","pbxCreateGroup","classesKey","findPBXGroupKey","addSourceFile","REGISTER_RE","snippet","disableNotificationRegistration","CIO_REGISTER_PUSHNOTIFICATION_SNIPPET"],"sources":["withNotificationsXcodeProject.ts"],"sourcesContent":["import {\n ConfigPlugin,\n XcodeProject,\n withXcodeProject,\n} from '@expo/config-plugins';\n\nimport {\n CIO_NOTIFICATION_TARGET_NAME,\n CIO_REGISTER_PUSHNOTIFICATION_SNIPPET,\n DEFAULT_BUNDLE_VERSION,\n LOCAL_PATH_TO_CIO_NSE_FILES,\n} from '../helpers/constants/ios';\nimport { replaceCodeByRegex } from '../helpers/utils/codeInjection';\nimport { injectCIONotificationPodfileCode } from '../helpers/utils/injectCIOPodfileCode';\nimport type { CustomerIOPluginOptionsIOS } from '../types/cio-types';\nimport { FileManagement } from './../helpers/utils/fileManagement';\n\nconst PLIST_FILENAME = `${CIO_NOTIFICATION_TARGET_NAME}-Info.plist`;\nconst ENV_FILENAME = 'Env.swift';\n\nconst TARGETED_DEVICE_FAMILY = `\"1,2\"`;\n\nconst addNotificationServiceExtension = async (\n options: CustomerIOPluginOptionsIOS,\n xcodeProject: XcodeProject\n) => {\n try {\n if (options.pushNotification) {\n await addPushNotificationFile(options, xcodeProject);\n }\n\n if (options.pushNotification?.useRichPush) {\n await addRichPushXcodeProj(options, xcodeProject);\n }\n return xcodeProject;\n } catch (error: any) {\n console.error(error);\n return null;\n }\n};\n\nexport const withCioNotificationsXcodeProject: ConfigPlugin<\n CustomerIOPluginOptionsIOS\n> = (configOuter, props) => {\n return withXcodeProject(configOuter, async (config) => {\n const { modRequest, ios, version: bundleShortVersion } = config;\n const {\n appleTeamId,\n iosDeploymentTarget,\n pushNotification,\n useFrameworks,\n } = props;\n\n if (ios === undefined)\n throw new Error(\n 'Adding NotificationServiceExtension failed: ios config missing from app.config.js or app.json.'\n );\n\n // projectName and platformProjectRoot translates to appName and iosPath in addNotificationServiceExtension()\n const { projectName, platformProjectRoot } = modRequest;\n const { bundleIdentifier, buildNumber } = ios;\n\n if (bundleShortVersion === undefined) {\n throw new Error(\n 'Adding NotificationServiceExtension failed: version missing from app.config.js or app.json'\n );\n }\n\n if (bundleIdentifier === undefined) {\n throw new Error(\n 'Adding NotificationServiceExtension failed: ios.bundleIdentifier missing from app.config.js or app.json'\n );\n }\n\n if (projectName === undefined) {\n throw new Error(\n 'Adding NotificationServiceExtension failed: name missing from app.config.js or app.json'\n );\n }\n\n const options = {\n ...props,\n appleTeamId,\n bundleIdentifier,\n bundleShortVersion,\n bundleVersion: buildNumber || DEFAULT_BUNDLE_VERSION,\n iosPath: platformProjectRoot,\n appName: projectName,\n useFrameworks,\n iosDeploymentTarget,\n pushNotification,\n };\n\n const modifiedProjectFile = await addNotificationServiceExtension(\n options,\n config.modResults\n );\n\n if (modifiedProjectFile) {\n config.modResults = modifiedProjectFile;\n }\n\n return config;\n });\n};\n\nconst addRichPushXcodeProj = async (\n options: CustomerIOPluginOptionsIOS,\n xcodeProject: any\n) => {\n const {\n appleTeamId,\n bundleIdentifier,\n bundleShortVersion,\n bundleVersion,\n iosPath,\n iosDeploymentTarget,\n useFrameworks,\n } = options;\n\n await injectCIONotificationPodfileCode(iosPath, useFrameworks);\n\n // Check if `CIO_NOTIFICATION_TARGET_NAME` group already exist in the project\n // If true then skip creating a new group to avoid duplicate folders\n if (xcodeProject.pbxTargetByName(CIO_NOTIFICATION_TARGET_NAME)) {\n console.warn(\n `${CIO_NOTIFICATION_TARGET_NAME} already exists in project. Skipping...`\n );\n return;\n }\n\n const nsePath = `${iosPath}/${CIO_NOTIFICATION_TARGET_NAME}`;\n FileManagement.mkdir(nsePath, {\n recursive: true,\n });\n\n const files = [\n PLIST_FILENAME,\n 'NotificationService.h',\n 'NotificationService.swift',\n 'NotificationService.m',\n ENV_FILENAME,\n ];\n\n const getTargetFile = (filename: string) => `${nsePath}/${filename}`;\n\n files.forEach((filename) => {\n const targetFile = getTargetFile(filename);\n FileManagement.copyFile(\n `${LOCAL_PATH_TO_CIO_NSE_FILES}/${filename}`,\n targetFile\n );\n });\n\n /* MODIFY COPIED EXTENSION FILES */\n const infoPlistTargetFile = getTargetFile(PLIST_FILENAME);\n updateNseInfoPlist({\n bundleVersion,\n bundleShortVersion,\n infoPlistTargetFile,\n });\n updateNseEnv(options, getTargetFile(ENV_FILENAME));\n\n // Create new PBXGroup for the extension\n const extGroup = xcodeProject.addPbxGroup(\n files,\n CIO_NOTIFICATION_TARGET_NAME,\n CIO_NOTIFICATION_TARGET_NAME\n );\n\n // Add the new PBXGroup to the top level group. This makes the\n // files / folder appear in the file explorer in Xcode.\n const groups = xcodeProject.hash.project.objects['PBXGroup'];\n Object.keys(groups).forEach((key) => {\n if (groups[key].name === undefined && groups[key].path === undefined) {\n xcodeProject.addToPbxGroup(extGroup.uuid, key);\n }\n });\n\n // WORK AROUND for codeProject.addTarget BUG\n // Xcode projects don't contain these if there is only one target\n // An upstream fix should be made to the code referenced in this link:\n // - https://github.com/apache/cordova-node-xcode/blob/8b98cabc5978359db88dc9ff2d4c015cba40f150/lib/pbxProject.js#L860\n const projObjects = xcodeProject.hash.project.objects;\n projObjects['PBXTargetDependency'] = projObjects['PBXTargetDependency'] || {};\n projObjects['PBXContainerItemProxy'] =\n projObjects['PBXTargetDependency'] || {};\n\n if (xcodeProject.pbxTargetByName(CIO_NOTIFICATION_TARGET_NAME)) {\n console.warn(\n `${CIO_NOTIFICATION_TARGET_NAME} already exists in project. Skipping...`\n );\n return;\n }\n\n // Add the NSE target\n // This also adds PBXTargetDependency and PBXContainerItemProxy\n const nseTarget = xcodeProject.addTarget(\n CIO_NOTIFICATION_TARGET_NAME,\n 'app_extension',\n CIO_NOTIFICATION_TARGET_NAME,\n `${bundleIdentifier}.richpush`\n );\n\n // Add build phases to the new target\n xcodeProject.addBuildPhase(\n ['NotificationService.m', 'NotificationService.swift', 'Env.swift'],\n 'PBXSourcesBuildPhase',\n 'Sources',\n nseTarget.uuid\n );\n xcodeProject.addBuildPhase(\n [],\n 'PBXResourcesBuildPhase',\n 'Resources',\n nseTarget.uuid\n );\n\n xcodeProject.addBuildPhase(\n [],\n 'PBXFrameworksBuildPhase',\n 'Frameworks',\n nseTarget.uuid\n );\n\n // Edit the Deployment info of the target\n const configurations = xcodeProject.pbxXCBuildConfigurationSection();\n for (const key in configurations) {\n if (\n typeof configurations[key].buildSettings !== 'undefined' &&\n configurations[key].buildSettings.PRODUCT_NAME ===\n `\"${CIO_NOTIFICATION_TARGET_NAME}\"`\n ) {\n const buildSettingsObj = configurations[key].buildSettings;\n buildSettingsObj.DEVELOPMENT_TEAM = appleTeamId;\n buildSettingsObj.IPHONEOS_DEPLOYMENT_TARGET =\n iosDeploymentTarget || '13.0';\n buildSettingsObj.TARGETED_DEVICE_FAMILY = TARGETED_DEVICE_FAMILY;\n buildSettingsObj.CODE_SIGN_STYLE = 'Automatic';\n buildSettingsObj.SWIFT_VERSION = 4.2;\n }\n }\n\n // Add development team to the target & the main\n xcodeProject.addTargetAttribute('DevelopmentTeam', appleTeamId, nseTarget);\n xcodeProject.addTargetAttribute('DevelopmentTeam', appleTeamId);\n};\n\nconst updateNseInfoPlist = (payload: {\n bundleVersion?: string;\n bundleShortVersion?: string;\n infoPlistTargetFile: string;\n}) => {\n const BUNDLE_SHORT_VERSION_RE = /\\{\\{BUNDLE_SHORT_VERSION\\}\\}/;\n const BUNDLE_VERSION_RE = /\\{\\{BUNDLE_VERSION\\}\\}/;\n\n let plistFileString = FileManagement.readFile(payload.infoPlistTargetFile);\n\n if (payload.bundleVersion) {\n plistFileString = replaceCodeByRegex(\n plistFileString,\n BUNDLE_VERSION_RE,\n payload.bundleVersion\n );\n }\n\n if (payload.bundleShortVersion) {\n plistFileString = replaceCodeByRegex(\n plistFileString,\n BUNDLE_SHORT_VERSION_RE,\n payload.bundleShortVersion\n );\n }\n\n FileManagement.writeFile(payload.infoPlistTargetFile, plistFileString);\n};\n\nconst updateNseEnv = (\n options: CustomerIOPluginOptionsIOS,\n envFileName: string\n) => {\n const SITE_ID_RE = /\\{\\{SITE_ID\\}\\}/;\n const API_KEY_RE = /\\{\\{API_KEY\\}\\}/;\n const REGION_RE = /\\{\\{REGION\\}\\}/;\n\n let envFileContent = FileManagement.readFile(envFileName);\n\n if (options.pushNotification?.env?.siteId) {\n envFileContent = replaceCodeByRegex(\n envFileContent,\n SITE_ID_RE,\n options.pushNotification?.env?.siteId\n );\n }\n\n if (options.pushNotification?.env?.apiKey) {\n envFileContent = replaceCodeByRegex(\n envFileContent,\n API_KEY_RE,\n options.pushNotification?.env?.apiKey\n );\n }\n\n if (options.pushNotification?.env?.region) {\n const regionMap = {\n us: 'Region.US',\n eu: 'Region.EU',\n };\n const region = options.pushNotification?.env?.region?.toLowerCase();\n const mappedRegion = (regionMap as any)[region] || '';\n if (!mappedRegion) {\n console.warn(\n `${options.pushNotification?.env?.region} is an invalid region. Please use the values from the docs: https://customer.io/docs/sdk/expo/getting-started/#configure-the-plugin`\n );\n } else {\n envFileContent = replaceCodeByRegex(\n envFileContent,\n REGION_RE,\n mappedRegion\n );\n }\n }\n\n FileManagement.writeFile(envFileName, envFileContent);\n};\n\nasync function addPushNotificationFile(\n options: CustomerIOPluginOptionsIOS,\n xcodeProject: any\n) {\n const { iosPath, appName } = options;\n const file = 'PushService.swift';\n const appPath = `${iosPath}/${appName}`;\n const getTargetFile = (filename: string) => `${appPath}/${filename}`;\n const targetFile = getTargetFile(file);\n\n // Check whether {file} exists in the project. If false, then add the file\n // If {file} exists then skip and return\n if (!FileManagement.exists(getTargetFile(file))) {\n FileManagement.mkdir(appPath, {\n recursive: true,\n });\n\n FileManagement.copyFile(\n `${LOCAL_PATH_TO_CIO_NSE_FILES}/${file}`,\n targetFile\n );\n } else {\n console.log(`${getTargetFile(file)} already exists. Skipping...`);\n return;\n }\n\n updatePushFile(options, targetFile);\n\n const group = xcodeProject.pbxCreateGroup('CustomerIONotifications');\n const classesKey = xcodeProject.findPBXGroupKey({ name: `${appName}` });\n xcodeProject.addToPbxGroup(group, classesKey);\n\n xcodeProject.addSourceFile(`${appName}/${file}`, null, group);\n}\n\nconst updatePushFile = (\n options: CustomerIOPluginOptionsIOS,\n envFileName: string\n) => {\n const REGISTER_RE = /\\{\\{REGISTER_SNIPPET\\}\\}/;\n\n let envFileContent = FileManagement.readFile(envFileName);\n\n let snippet = '';\n if (\n options.disableNotificationRegistration !== undefined &&\n options.disableNotificationRegistration === false\n ) {\n snippet = CIO_REGISTER_PUSHNOTIFICATION_SNIPPET;\n }\n\n envFileContent = replaceCodeByRegex(envFileContent, REGISTER_RE, snippet);\n\n FileManagement.writeFile(envFileName, envFileContent);\n};\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"names":["_configPlugins","require","_ios","_codeInjection","_injectCIOPodfileCode","_fileManagement","PLIST_FILENAME","CIO_NOTIFICATION_TARGET_NAME","ENV_FILENAME","TARGETED_DEVICE_FAMILY","addNotificationServiceExtension","options","xcodeProject","_options$pushNotifica","pushNotification","addPushNotificationFile","useRichPush","addRichPushXcodeProj","error","console","withCioNotificationsXcodeProject","configOuter","props","withXcodeProject","config","modRequest","ios","version","bundleShortVersion","appleTeamId","iosDeploymentTarget","useFrameworks","undefined","Error","projectName","platformProjectRoot","bundleIdentifier","buildNumber","bundleVersion","DEFAULT_BUNDLE_VERSION","iosPath","appName","modifiedProjectFile","modResults","exports","injectCIONotificationPodfileCode","pbxTargetByName","warn","nsePath","FileManagement","mkdir","recursive","files","getTargetFile","filename","forEach","targetFile","copyFile","LOCAL_PATH_TO_CIO_NSE_FILES","infoPlistTargetFile","updateNseInfoPlist","updateNseEnv","extGroup","addPbxGroup","groups","hash","project","objects","Object","keys","key","name","path","addToPbxGroup","uuid","projObjects","nseTarget","addTarget","addBuildPhase","configurations","pbxXCBuildConfigurationSection","buildSettings","PRODUCT_NAME","buildSettingsObj","DEVELOPMENT_TEAM","IPHONEOS_DEPLOYMENT_TARGET","CODE_SIGN_STYLE","SWIFT_VERSION","addTargetAttribute","payload","BUNDLE_SHORT_VERSION_RE","BUNDLE_VERSION_RE","plistFileString","readFile","replaceCodeByRegex","writeFile","envFileName","_options$pushNotifica2","_options$pushNotifica4","_options$pushNotifica6","SITE_ID_RE","API_KEY_RE","REGION_RE","envFileContent","env","siteId","_options$pushNotifica3","apiKey","_options$pushNotifica5","region","_options$pushNotifica7","regionMap","us","eu","toLowerCase","mappedRegion","_options$pushNotifica8","file","appPath","exists","log","updatePushFile","group","pbxCreateGroup","classesKey","findPBXGroupKey","addSourceFile","REGISTER_RE","snippet","disableNotificationRegistration","CIO_REGISTER_PUSHNOTIFICATION_SNIPPET"],"sources":["withNotificationsXcodeProject.ts"],"sourcesContent":["import {\n ConfigPlugin,\n XcodeProject,\n withXcodeProject,\n} from '@expo/config-plugins';\n\nimport {\n CIO_NOTIFICATION_TARGET_NAME,\n CIO_REGISTER_PUSHNOTIFICATION_SNIPPET,\n DEFAULT_BUNDLE_VERSION,\n LOCAL_PATH_TO_CIO_NSE_FILES,\n} from '../helpers/constants/ios';\nimport { replaceCodeByRegex } from '../helpers/utils/codeInjection';\nimport { injectCIONotificationPodfileCode } from '../helpers/utils/injectCIOPodfileCode';\nimport type { CustomerIOPluginOptionsIOS } from '../types/cio-types';\nimport { FileManagement } from './../helpers/utils/fileManagement';\n\nconst PLIST_FILENAME = `${CIO_NOTIFICATION_TARGET_NAME}-Info.plist`;\nconst ENV_FILENAME = 'Env.swift';\n\nconst TARGETED_DEVICE_FAMILY = `\"1,2\"`;\n\nconst addNotificationServiceExtension = async (\n options: CustomerIOPluginOptionsIOS,\n xcodeProject: XcodeProject\n) => {\n try {\n if (options.pushNotification) {\n await addPushNotificationFile(options, xcodeProject);\n }\n\n if (options.pushNotification?.useRichPush) {\n await addRichPushXcodeProj(options, xcodeProject);\n }\n return xcodeProject;\n } catch (error: any) {\n console.error(error);\n return null;\n }\n};\n\nexport const withCioNotificationsXcodeProject: ConfigPlugin<\n CustomerIOPluginOptionsIOS\n> = (configOuter, props) => {\n return withXcodeProject(configOuter, async (config) => {\n const { modRequest, ios, version: bundleShortVersion } = config;\n const {\n appleTeamId,\n iosDeploymentTarget,\n pushNotification,\n useFrameworks,\n } = props;\n\n if (ios === undefined)\n throw new Error(\n 'Adding NotificationServiceExtension failed: ios config missing from app.config.js or app.json.'\n );\n\n // projectName and platformProjectRoot translates to appName and iosPath in addNotificationServiceExtension()\n const { projectName, platformProjectRoot } = modRequest;\n const { bundleIdentifier, buildNumber } = ios;\n\n if (bundleShortVersion === undefined) {\n throw new Error(\n 'Adding NotificationServiceExtension failed: version missing from app.config.js or app.json'\n );\n }\n\n if (bundleIdentifier === undefined) {\n throw new Error(\n 'Adding NotificationServiceExtension failed: ios.bundleIdentifier missing from app.config.js or app.json'\n );\n }\n\n if (projectName === undefined) {\n throw new Error(\n 'Adding NotificationServiceExtension failed: name missing from app.config.js or app.json'\n );\n }\n\n const options = {\n ...props,\n appleTeamId,\n bundleIdentifier,\n bundleShortVersion,\n bundleVersion: buildNumber || DEFAULT_BUNDLE_VERSION,\n iosPath: platformProjectRoot,\n appName: projectName,\n useFrameworks,\n iosDeploymentTarget,\n pushNotification,\n };\n\n const modifiedProjectFile = await addNotificationServiceExtension(\n options,\n config.modResults\n );\n\n if (modifiedProjectFile) {\n config.modResults = modifiedProjectFile;\n }\n\n return config;\n });\n};\n\nconst addRichPushXcodeProj = async (\n options: CustomerIOPluginOptionsIOS,\n xcodeProject: any\n) => {\n const {\n appleTeamId,\n bundleIdentifier,\n bundleShortVersion,\n bundleVersion,\n iosPath,\n iosDeploymentTarget,\n useFrameworks,\n } = options;\n\n await injectCIONotificationPodfileCode(iosPath, useFrameworks);\n\n // Check if `CIO_NOTIFICATION_TARGET_NAME` group already exist in the project\n // If true then skip creating a new group to avoid duplicate folders\n if (xcodeProject.pbxTargetByName(CIO_NOTIFICATION_TARGET_NAME)) {\n console.warn(\n `${CIO_NOTIFICATION_TARGET_NAME} already exists in project. Skipping...`\n );\n return;\n }\n\n const nsePath = `${iosPath}/${CIO_NOTIFICATION_TARGET_NAME}`;\n FileManagement.mkdir(nsePath, {\n recursive: true,\n });\n\n const files = [\n PLIST_FILENAME,\n 'NotificationService.h',\n 'NotificationService.swift',\n 'NotificationService.m',\n ENV_FILENAME,\n ];\n\n const getTargetFile = (filename: string) => `${nsePath}/${filename}`;\n\n files.forEach((filename) => {\n const targetFile = getTargetFile(filename);\n FileManagement.copyFile(\n `${LOCAL_PATH_TO_CIO_NSE_FILES}/${filename}`,\n targetFile\n );\n });\n\n /* MODIFY COPIED EXTENSION FILES */\n const infoPlistTargetFile = getTargetFile(PLIST_FILENAME);\n updateNseInfoPlist({\n bundleVersion,\n bundleShortVersion,\n infoPlistTargetFile,\n });\n updateNseEnv(options, getTargetFile(ENV_FILENAME));\n\n // Create new PBXGroup for the extension\n const extGroup = xcodeProject.addPbxGroup(\n files,\n CIO_NOTIFICATION_TARGET_NAME,\n CIO_NOTIFICATION_TARGET_NAME\n );\n\n // Add the new PBXGroup to the top level group. This makes the\n // files / folder appear in the file explorer in Xcode.\n const groups = xcodeProject.hash.project.objects['PBXGroup'];\n Object.keys(groups).forEach((key) => {\n if (groups[key].name === undefined && groups[key].path === undefined) {\n xcodeProject.addToPbxGroup(extGroup.uuid, key);\n }\n });\n\n // WORK AROUND for codeProject.addTarget BUG\n // Xcode projects don't contain these if there is only one target\n // An upstream fix should be made to the code referenced in this link:\n // - https://github.com/apache/cordova-node-xcode/blob/8b98cabc5978359db88dc9ff2d4c015cba40f150/lib/pbxProject.js#L860\n const projObjects = xcodeProject.hash.project.objects;\n projObjects['PBXTargetDependency'] = projObjects['PBXTargetDependency'] || {};\n projObjects['PBXContainerItemProxy'] =\n projObjects['PBXTargetDependency'] || {};\n\n if (xcodeProject.pbxTargetByName(CIO_NOTIFICATION_TARGET_NAME)) {\n console.warn(\n `${CIO_NOTIFICATION_TARGET_NAME} already exists in project. Skipping...`\n );\n return;\n }\n\n // Add the NSE target\n // This also adds PBXTargetDependency and PBXContainerItemProxy\n const nseTarget = xcodeProject.addTarget(\n CIO_NOTIFICATION_TARGET_NAME,\n 'app_extension',\n CIO_NOTIFICATION_TARGET_NAME,\n `${bundleIdentifier}.richpush`\n );\n\n // Add build phases to the new target\n xcodeProject.addBuildPhase(\n ['NotificationService.m', 'NotificationService.swift', 'Env.swift'],\n 'PBXSourcesBuildPhase',\n 'Sources',\n nseTarget.uuid\n );\n xcodeProject.addBuildPhase(\n [],\n 'PBXResourcesBuildPhase',\n 'Resources',\n nseTarget.uuid\n );\n\n xcodeProject.addBuildPhase(\n [],\n 'PBXFrameworksBuildPhase',\n 'Frameworks',\n nseTarget.uuid\n );\n\n // Edit the Deployment info of the target\n const configurations = xcodeProject.pbxXCBuildConfigurationSection();\n for (const key in configurations) {\n if (\n typeof configurations[key].buildSettings !== 'undefined' &&\n configurations[key].buildSettings.PRODUCT_NAME ===\n `\"${CIO_NOTIFICATION_TARGET_NAME}\"`\n ) {\n const buildSettingsObj = configurations[key].buildSettings;\n buildSettingsObj.DEVELOPMENT_TEAM = appleTeamId;\n buildSettingsObj.IPHONEOS_DEPLOYMENT_TARGET =\n iosDeploymentTarget || '13.0';\n buildSettingsObj.TARGETED_DEVICE_FAMILY = TARGETED_DEVICE_FAMILY;\n buildSettingsObj.CODE_SIGN_STYLE = 'Automatic';\n buildSettingsObj.SWIFT_VERSION = 4.2;\n }\n }\n\n // Add development team to the target & the main\n xcodeProject.addTargetAttribute('DevelopmentTeam', appleTeamId, nseTarget);\n xcodeProject.addTargetAttribute('DevelopmentTeam', appleTeamId);\n};\n\nconst updateNseInfoPlist = (payload: {\n bundleVersion?: string;\n bundleShortVersion?: string;\n infoPlistTargetFile: string;\n}) => {\n const BUNDLE_SHORT_VERSION_RE = /\\{\\{BUNDLE_SHORT_VERSION\\}\\}/;\n const BUNDLE_VERSION_RE = /\\{\\{BUNDLE_VERSION\\}\\}/;\n\n let plistFileString = FileManagement.readFile(payload.infoPlistTargetFile);\n\n if (payload.bundleVersion) {\n plistFileString = replaceCodeByRegex(\n plistFileString,\n BUNDLE_VERSION_RE,\n payload.bundleVersion\n );\n }\n\n if (payload.bundleShortVersion) {\n plistFileString = replaceCodeByRegex(\n plistFileString,\n BUNDLE_SHORT_VERSION_RE,\n payload.bundleShortVersion\n );\n }\n\n FileManagement.writeFile(payload.infoPlistTargetFile, plistFileString);\n};\n\nconst updateNseEnv = (\n options: CustomerIOPluginOptionsIOS,\n envFileName: string\n) => {\n const SITE_ID_RE = /\\{\\{SITE_ID\\}\\}/;\n const API_KEY_RE = /\\{\\{API_KEY\\}\\}/;\n const REGION_RE = /\\{\\{REGION\\}\\}/;\n\n let envFileContent = FileManagement.readFile(envFileName);\n\n if (options.pushNotification?.env?.siteId) {\n envFileContent = replaceCodeByRegex(\n envFileContent,\n SITE_ID_RE,\n options.pushNotification?.env?.siteId\n );\n }\n\n if (options.pushNotification?.env?.apiKey) {\n envFileContent = replaceCodeByRegex(\n envFileContent,\n API_KEY_RE,\n options.pushNotification?.env?.apiKey\n );\n }\n\n if (options.pushNotification?.env?.region) {\n const regionMap = {\n us: 'Region.US',\n eu: 'Region.EU',\n };\n const region = options.pushNotification?.env?.region?.toLowerCase();\n const mappedRegion = (regionMap as any)[region] || '';\n if (!mappedRegion) {\n console.warn(\n `${options.pushNotification?.env?.region} is an invalid region. Please use the values from the docs: https://customer.io/docs/sdk/expo/getting-started/#configure-the-plugin`\n );\n } else {\n envFileContent = replaceCodeByRegex(\n envFileContent,\n REGION_RE,\n mappedRegion\n );\n }\n }\n\n FileManagement.writeFile(envFileName, envFileContent);\n};\n\nasync function addPushNotificationFile(\n options: CustomerIOPluginOptionsIOS,\n xcodeProject: any\n) {\n const { iosPath, appName } = options;\n const file = 'PushService.swift';\n const appPath = `${iosPath}/${appName}`;\n const getTargetFile = (filename: string) => `${appPath}/${filename}`;\n const targetFile = getTargetFile(file);\n\n // Check whether {file} exists in the project. If false, then add the file\n // If {file} exists then skip and return\n if (!FileManagement.exists(getTargetFile(file))) {\n FileManagement.mkdir(appPath, {\n recursive: true,\n });\n\n FileManagement.copyFile(\n `${LOCAL_PATH_TO_CIO_NSE_FILES}/${file}`,\n targetFile\n );\n } else {\n console.log(`${getTargetFile(file)} already exists. Skipping...`);\n return;\n }\n\n updatePushFile(options, targetFile);\n\n const group = xcodeProject.pbxCreateGroup('CustomerIONotifications');\n const classesKey = xcodeProject.findPBXGroupKey({ name: `${appName}` });\n xcodeProject.addToPbxGroup(group, classesKey);\n\n xcodeProject.addSourceFile(`${appName}/${file}`, null, group);\n}\n\nconst updatePushFile = (\n options: CustomerIOPluginOptionsIOS,\n envFileName: string\n) => {\n const REGISTER_RE = /\\{\\{REGISTER_SNIPPET\\}\\}/;\n\n let envFileContent = FileManagement.readFile(envFileName);\n\n let snippet = '';\n if (\n options.disableNotificationRegistration !== undefined &&\n options.disableNotificationRegistration === false\n ) {\n snippet = CIO_REGISTER_PUSHNOTIFICATION_SNIPPET;\n }\n\n envFileContent = replaceCodeByRegex(envFileContent, REGISTER_RE, snippet);\n\n FileManagement.writeFile(envFileName, envFileContent);\n};\n"],"mappings":";;;;;;AAAA,IAAAA,cAAA,GAAAC,OAAA;AAMA,IAAAC,IAAA,GAAAD,OAAA;AAMA,IAAAE,cAAA,GAAAF,OAAA;AACA,IAAAG,qBAAA,GAAAH,OAAA;AAEA,IAAAI,eAAA,GAAAJ,OAAA;AAEA,MAAMK,cAAc,GAAI,GAAEC,iCAA6B,aAAY;AACnE,MAAMC,YAAY,GAAG,WAAW;AAEhC,MAAMC,sBAAsB,GAAI,OAAM;AAEtC,MAAMC,+BAA+B,GAAG,MAAAA,CACtCC,OAAmC,EACnCC,YAA0B,KACvB;EACH,IAAI;IAAA,IAAAC,qBAAA;IACF,IAAIF,OAAO,CAACG,gBAAgB,EAAE;MAC5B,MAAMC,uBAAuB,CAACJ,OAAO,EAAEC,YAAY,CAAC;IACtD;IAEA,KAAAC,qBAAA,GAAIF,OAAO,CAACG,gBAAgB,cAAAD,qBAAA,eAAxBA,qBAAA,CAA0BG,WAAW,EAAE;MACzC,MAAMC,oBAAoB,CAACN,OAAO,EAAEC,YAAY,CAAC;IACnD;IACA,OAAOA,YAAY;EACrB,CAAC,CAAC,OAAOM,KAAU,EAAE;IACnBC,OAAO,CAACD,KAAK,CAACA,KAAK,CAAC;IACpB,OAAO,IAAI;EACb;AACF,CAAC;AAEM,MAAME,gCAEZ,GAAGA,CAACC,WAAW,EAAEC,KAAK,KAAK;EAC1B,OAAO,IAAAC,+BAAgB,EAACF,WAAW,EAAE,MAAOG,MAAM,IAAK;IACrD,MAAM;MAAEC,UAAU;MAAEC,GAAG;MAAEC,OAAO,EAAEC;IAAmB,CAAC,GAAGJ,MAAM;IAC/D,MAAM;MACJK,WAAW;MACXC,mBAAmB;MACnBhB,gBAAgB;MAChBiB;IACF,CAAC,GAAGT,KAAK;IAET,IAAII,GAAG,KAAKM,SAAS,EACnB,MAAM,IAAIC,KAAK,CACb,gGACF,CAAC;;IAEH;IACA,MAAM;MAAEC,WAAW;MAAEC;IAAoB,CAAC,GAAGV,UAAU;IACvD,MAAM;MAAEW,gBAAgB;MAAEC;IAAY,CAAC,GAAGX,GAAG;IAE7C,IAAIE,kBAAkB,KAAKI,SAAS,EAAE;MACpC,MAAM,IAAIC,KAAK,CACb,4FACF,CAAC;IACH;IAEA,IAAIG,gBAAgB,KAAKJ,SAAS,EAAE;MAClC,MAAM,IAAIC,KAAK,CACb,yGACF,CAAC;IACH;IAEA,IAAIC,WAAW,KAAKF,SAAS,EAAE;MAC7B,MAAM,IAAIC,KAAK,CACb,yFACF,CAAC;IACH;IAEA,MAAMtB,OAAO,GAAG;MACd,GAAGW,KAAK;MACRO,WAAW;MACXO,gBAAgB;MAChBR,kBAAkB;MAClBU,aAAa,EAAED,WAAW,IAAIE,2BAAsB;MACpDC,OAAO,EAAEL,mBAAmB;MAC5BM,OAAO,EAAEP,WAAW;MACpBH,aAAa;MACbD,mBAAmB;MACnBhB;IACF,CAAC;IAED,MAAM4B,mBAAmB,GAAG,MAAMhC,+BAA+B,CAC/DC,OAAO,EACPa,MAAM,CAACmB,UACT,CAAC;IAED,IAAID,mBAAmB,EAAE;MACvBlB,MAAM,CAACmB,UAAU,GAAGD,mBAAmB;IACzC;IAEA,OAAOlB,MAAM;EACf,CAAC,CAAC;AACJ,CAAC;AAACoB,OAAA,CAAAxB,gCAAA,GAAAA,gCAAA;AAEF,MAAMH,oBAAoB,GAAG,MAAAA,CAC3BN,OAAmC,EACnCC,YAAiB,KACd;EACH,MAAM;IACJiB,WAAW;IACXO,gBAAgB;IAChBR,kBAAkB;IAClBU,aAAa;IACbE,OAAO;IACPV,mBAAmB;IACnBC;EACF,CAAC,GAAGpB,OAAO;EAEX,MAAM,IAAAkC,sDAAgC,EAACL,OAAO,EAAET,aAAa,CAAC;;EAE9D;EACA;EACA,IAAInB,YAAY,CAACkC,eAAe,CAACvC,iCAA4B,CAAC,EAAE;IAC9DY,OAAO,CAAC4B,IAAI,CACT,GAAExC,iCAA6B,yCAClC,CAAC;IACD;EACF;EAEA,MAAMyC,OAAO,GAAI,GAAER,OAAQ,IAAGjC,iCAA6B,EAAC;EAC5D0C,8BAAc,CAACC,KAAK,CAACF,OAAO,EAAE;IAC5BG,SAAS,EAAE;EACb,CAAC,CAAC;EAEF,MAAMC,KAAK,GAAG,CACZ9C,cAAc,EACd,uBAAuB,EACvB,2BAA2B,EAC3B,uBAAuB,EACvBE,YAAY,CACb;EAED,MAAM6C,aAAa,GAAIC,QAAgB,IAAM,GAAEN,OAAQ,IAAGM,QAAS,EAAC;EAEpEF,KAAK,CAACG,OAAO,CAAED,QAAQ,IAAK;IAC1B,MAAME,UAAU,GAAGH,aAAa,CAACC,QAAQ,CAAC;IAC1CL,8BAAc,CAACQ,QAAQ,CACpB,GAAEC,gCAA4B,IAAGJ,QAAS,EAAC,EAC5CE,UACF,CAAC;EACH,CAAC,CAAC;;EAEF;EACA,MAAMG,mBAAmB,GAAGN,aAAa,CAAC/C,cAAc,CAAC;EACzDsD,kBAAkB,CAAC;IACjBtB,aAAa;IACbV,kBAAkB;IAClB+B;EACF,CAAC,CAAC;EACFE,YAAY,CAAClD,OAAO,EAAE0C,aAAa,CAAC7C,YAAY,CAAC,CAAC;;EAElD;EACA,MAAMsD,QAAQ,GAAGlD,YAAY,CAACmD,WAAW,CACvCX,KAAK,EACL7C,iCAA4B,EAC5BA,iCACF,CAAC;;EAED;EACA;EACA,MAAMyD,MAAM,GAAGpD,YAAY,CAACqD,IAAI,CAACC,OAAO,CAACC,OAAO,CAAC,UAAU,CAAC;EAC5DC,MAAM,CAACC,IAAI,CAACL,MAAM,CAAC,CAACT,OAAO,CAAEe,GAAG,IAAK;IACnC,IAAIN,MAAM,CAACM,GAAG,CAAC,CAACC,IAAI,KAAKvC,SAAS,IAAIgC,MAAM,CAACM,GAAG,CAAC,CAACE,IAAI,KAAKxC,SAAS,EAAE;MACpEpB,YAAY,CAAC6D,aAAa,CAACX,QAAQ,CAACY,IAAI,EAAEJ,GAAG,CAAC;IAChD;EACF,CAAC,CAAC;;EAEF;EACA;EACA;EACA;EACA,MAAMK,WAAW,GAAG/D,YAAY,CAACqD,IAAI,CAACC,OAAO,CAACC,OAAO;EACrDQ,WAAW,CAAC,qBAAqB,CAAC,GAAGA,WAAW,CAAC,qBAAqB,CAAC,IAAI,CAAC,CAAC;EAC7EA,WAAW,CAAC,uBAAuB,CAAC,GAClCA,WAAW,CAAC,qBAAqB,CAAC,IAAI,CAAC,CAAC;EAE1C,IAAI/D,YAAY,CAACkC,eAAe,CAACvC,iCAA4B,CAAC,EAAE;IAC9DY,OAAO,CAAC4B,IAAI,CACT,GAAExC,iCAA6B,yCAClC,CAAC;IACD;EACF;;EAEA;EACA;EACA,MAAMqE,SAAS,GAAGhE,YAAY,CAACiE,SAAS,CACtCtE,iCAA4B,EAC5B,eAAe,EACfA,iCAA4B,EAC3B,GAAE6B,gBAAiB,WACtB,CAAC;;EAED;EACAxB,YAAY,CAACkE,aAAa,CACxB,CAAC,uBAAuB,EAAE,2BAA2B,EAAE,WAAW,CAAC,EACnE,sBAAsB,EACtB,SAAS,EACTF,SAAS,CAACF,IACZ,CAAC;EACD9D,YAAY,CAACkE,aAAa,CACxB,EAAE,EACF,wBAAwB,EACxB,WAAW,EACXF,SAAS,CAACF,IACZ,CAAC;EAED9D,YAAY,CAACkE,aAAa,CACxB,EAAE,EACF,yBAAyB,EACzB,YAAY,EACZF,SAAS,CAACF,IACZ,CAAC;;EAED;EACA,MAAMK,cAAc,GAAGnE,YAAY,CAACoE,8BAA8B,CAAC,CAAC;EACpE,KAAK,MAAMV,GAAG,IAAIS,cAAc,EAAE;IAChC,IACE,OAAOA,cAAc,CAACT,GAAG,CAAC,CAACW,aAAa,KAAK,WAAW,IACxDF,cAAc,CAACT,GAAG,CAAC,CAACW,aAAa,CAACC,YAAY,KAC3C,IAAG3E,iCAA6B,GAAE,EACrC;MACA,MAAM4E,gBAAgB,GAAGJ,cAAc,CAACT,GAAG,CAAC,CAACW,aAAa;MAC1DE,gBAAgB,CAACC,gBAAgB,GAAGvD,WAAW;MAC/CsD,gBAAgB,CAACE,0BAA0B,GACzCvD,mBAAmB,IAAI,MAAM;MAC/BqD,gBAAgB,CAAC1E,sBAAsB,GAAGA,sBAAsB;MAChE0E,gBAAgB,CAACG,eAAe,GAAG,WAAW;MAC9CH,gBAAgB,CAACI,aAAa,GAAG,GAAG;IACtC;EACF;;EAEA;EACA3E,YAAY,CAAC4E,kBAAkB,CAAC,iBAAiB,EAAE3D,WAAW,EAAE+C,SAAS,CAAC;EAC1EhE,YAAY,CAAC4E,kBAAkB,CAAC,iBAAiB,EAAE3D,WAAW,CAAC;AACjE,CAAC;AAED,MAAM+B,kBAAkB,GAAI6B,OAI3B,IAAK;EACJ,MAAMC,uBAAuB,GAAG,8BAA8B;EAC9D,MAAMC,iBAAiB,GAAG,wBAAwB;EAElD,IAAIC,eAAe,GAAG3C,8BAAc,CAAC4C,QAAQ,CAACJ,OAAO,CAAC9B,mBAAmB,CAAC;EAE1E,IAAI8B,OAAO,CAACnD,aAAa,EAAE;IACzBsD,eAAe,GAAG,IAAAE,iCAAkB,EAClCF,eAAe,EACfD,iBAAiB,EACjBF,OAAO,CAACnD,aACV,CAAC;EACH;EAEA,IAAImD,OAAO,CAAC7D,kBAAkB,EAAE;IAC9BgE,eAAe,GAAG,IAAAE,iCAAkB,EAClCF,eAAe,EACfF,uBAAuB,EACvBD,OAAO,CAAC7D,kBACV,CAAC;EACH;EAEAqB,8BAAc,CAAC8C,SAAS,CAACN,OAAO,CAAC9B,mBAAmB,EAAEiC,eAAe,CAAC;AACxE,CAAC;AAED,MAAM/B,YAAY,GAAGA,CACnBlD,OAAmC,EACnCqF,WAAmB,KAChB;EAAA,IAAAC,sBAAA,EAAAC,sBAAA,EAAAC,sBAAA;EACH,MAAMC,UAAU,GAAG,iBAAiB;EACpC,MAAMC,UAAU,GAAG,iBAAiB;EACpC,MAAMC,SAAS,GAAG,gBAAgB;EAElC,IAAIC,cAAc,GAAGtD,8BAAc,CAAC4C,QAAQ,CAACG,WAAW,CAAC;EAEzD,KAAAC,sBAAA,GAAItF,OAAO,CAACG,gBAAgB,cAAAmF,sBAAA,gBAAAA,sBAAA,GAAxBA,sBAAA,CAA0BO,GAAG,cAAAP,sBAAA,eAA7BA,sBAAA,CAA+BQ,MAAM,EAAE;IAAA,IAAAC,sBAAA;IACzCH,cAAc,GAAG,IAAAT,iCAAkB,EACjCS,cAAc,EACdH,UAAU,GAAAM,sBAAA,GACV/F,OAAO,CAACG,gBAAgB,cAAA4F,sBAAA,gBAAAA,sBAAA,GAAxBA,sBAAA,CAA0BF,GAAG,cAAAE,sBAAA,uBAA7BA,sBAAA,CAA+BD,MACjC,CAAC;EACH;EAEA,KAAAP,sBAAA,GAAIvF,OAAO,CAACG,gBAAgB,cAAAoF,sBAAA,gBAAAA,sBAAA,GAAxBA,sBAAA,CAA0BM,GAAG,cAAAN,sBAAA,eAA7BA,sBAAA,CAA+BS,MAAM,EAAE;IAAA,IAAAC,sBAAA;IACzCL,cAAc,GAAG,IAAAT,iCAAkB,EACjCS,cAAc,EACdF,UAAU,GAAAO,sBAAA,GACVjG,OAAO,CAACG,gBAAgB,cAAA8F,sBAAA,gBAAAA,sBAAA,GAAxBA,sBAAA,CAA0BJ,GAAG,cAAAI,sBAAA,uBAA7BA,sBAAA,CAA+BD,MACjC,CAAC;EACH;EAEA,KAAAR,sBAAA,GAAIxF,OAAO,CAACG,gBAAgB,cAAAqF,sBAAA,gBAAAA,sBAAA,GAAxBA,sBAAA,CAA0BK,GAAG,cAAAL,sBAAA,eAA7BA,sBAAA,CAA+BU,MAAM,EAAE;IAAA,IAAAC,sBAAA;IACzC,MAAMC,SAAS,GAAG;MAChBC,EAAE,EAAE,WAAW;MACfC,EAAE,EAAE;IACN,CAAC;IACD,MAAMJ,MAAM,IAAAC,sBAAA,GAAGnG,OAAO,CAACG,gBAAgB,cAAAgG,sBAAA,gBAAAA,sBAAA,GAAxBA,sBAAA,CAA0BN,GAAG,cAAAM,sBAAA,gBAAAA,sBAAA,GAA7BA,sBAAA,CAA+BD,MAAM,cAAAC,sBAAA,uBAArCA,sBAAA,CAAuCI,WAAW,CAAC,CAAC;IACnE,MAAMC,YAAY,GAAIJ,SAAS,CAASF,MAAM,CAAC,IAAI,EAAE;IACrD,IAAI,CAACM,YAAY,EAAE;MAAA,IAAAC,sBAAA;MACjBjG,OAAO,CAAC4B,IAAI,CACT,IAAAqE,sBAAA,GAAEzG,OAAO,CAACG,gBAAgB,cAAAsG,sBAAA,gBAAAA,sBAAA,GAAxBA,sBAAA,CAA0BZ,GAAG,cAAAY,sBAAA,uBAA7BA,sBAAA,CAA+BP,MAAO,qIAC3C,CAAC;IACH,CAAC,MAAM;MACLN,cAAc,GAAG,IAAAT,iCAAkB,EACjCS,cAAc,EACdD,SAAS,EACTa,YACF,CAAC;IACH;EACF;EAEAlE,8BAAc,CAAC8C,SAAS,CAACC,WAAW,EAAEO,cAAc,CAAC;AACvD,CAAC;AAED,eAAexF,uBAAuBA,CACpCJ,OAAmC,EACnCC,YAAiB,EACjB;EACA,MAAM;IAAE4B,OAAO;IAAEC;EAAQ,CAAC,GAAG9B,OAAO;EACpC,MAAM0G,IAAI,GAAG,mBAAmB;EAChC,MAAMC,OAAO,GAAI,GAAE9E,OAAQ,IAAGC,OAAQ,EAAC;EACvC,MAAMY,aAAa,GAAIC,QAAgB,IAAM,GAAEgE,OAAQ,IAAGhE,QAAS,EAAC;EACpE,MAAME,UAAU,GAAGH,aAAa,CAACgE,IAAI,CAAC;;EAEtC;EACA;EACA,IAAI,CAACpE,8BAAc,CAACsE,MAAM,CAAClE,aAAa,CAACgE,IAAI,CAAC,CAAC,EAAE;IAC/CpE,8BAAc,CAACC,KAAK,CAACoE,OAAO,EAAE;MAC5BnE,SAAS,EAAE;IACb,CAAC,CAAC;IAEFF,8BAAc,CAACQ,QAAQ,CACpB,GAAEC,gCAA4B,IAAG2D,IAAK,EAAC,EACxC7D,UACF,CAAC;EACH,CAAC,MAAM;IACLrC,OAAO,CAACqG,GAAG,CAAE,GAAEnE,aAAa,CAACgE,IAAI,CAAE,8BAA6B,CAAC;IACjE;EACF;EAEAI,cAAc,CAAC9G,OAAO,EAAE6C,UAAU,CAAC;EAEnC,MAAMkE,KAAK,GAAG9G,YAAY,CAAC+G,cAAc,CAAC,yBAAyB,CAAC;EACpE,MAAMC,UAAU,GAAGhH,YAAY,CAACiH,eAAe,CAAC;IAAEtD,IAAI,EAAG,GAAE9B,OAAQ;EAAE,CAAC,CAAC;EACvE7B,YAAY,CAAC6D,aAAa,CAACiD,KAAK,EAAEE,UAAU,CAAC;EAE7ChH,YAAY,CAACkH,aAAa,CAAE,GAAErF,OAAQ,IAAG4E,IAAK,EAAC,EAAE,IAAI,EAAEK,KAAK,CAAC;AAC/D;AAEA,MAAMD,cAAc,GAAGA,CACrB9G,OAAmC,EACnCqF,WAAmB,KAChB;EACH,MAAM+B,WAAW,GAAG,0BAA0B;EAE9C,IAAIxB,cAAc,GAAGtD,8BAAc,CAAC4C,QAAQ,CAACG,WAAW,CAAC;EAEzD,IAAIgC,OAAO,GAAG,EAAE;EAChB,IACErH,OAAO,CAACsH,+BAA+B,KAAKjG,SAAS,IACrDrB,OAAO,CAACsH,+BAA+B,KAAK,KAAK,EACjD;IACAD,OAAO,GAAGE,0CAAqC;EACjD;EAEA3B,cAAc,GAAG,IAAAT,iCAAkB,EAACS,cAAc,EAAEwB,WAAW,EAAEC,OAAO,CAAC;EAEzE/E,8BAAc,CAAC8C,SAAS,CAACC,WAAW,EAAEO,cAAc,CAAC;AACvD,CAAC"}
|
|
@@ -4,7 +4,11 @@ const f = finder(__dirname);
|
|
|
4
4
|
let pluginPackageRoot = f.next().filename;
|
|
5
5
|
// This is the path to the root of the customerio-expo-plugin package
|
|
6
6
|
pluginPackageRoot = path.dirname(pluginPackageRoot);
|
|
7
|
+
export const LOCAL_PATH_TO_RN_SDK = path.join(pluginPackageRoot, '../customerio-reactnative');
|
|
7
8
|
export const LOCAL_PATH_TO_CIO_NSE_FILES = path.join(pluginPackageRoot, 'src/helpers/native-files/ios');
|
|
9
|
+
export function getRelativePathToRNSDK(currentFile) {
|
|
10
|
+
return path.relative(path.dirname(currentFile), LOCAL_PATH_TO_RN_SDK);
|
|
11
|
+
}
|
|
8
12
|
export const IOS_DEPLOYMENT_TARGET = '13.0';
|
|
9
13
|
export const GROUP_IDENTIFIER_TEMPLATE_REGEX = /{{GROUP_IDENTIFIER}}/gm;
|
|
10
14
|
export const BUNDLE_SHORT_VERSION_TEMPLATE_REGEX = /{{BUNDLE_SHORT_VERSION}}/gm;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["finder","require","path","f","__dirname","pluginPackageRoot","next","filename","dirname","
|
|
1
|
+
{"version":3,"names":["finder","require","path","f","__dirname","pluginPackageRoot","next","filename","dirname","LOCAL_PATH_TO_RN_SDK","join","LOCAL_PATH_TO_CIO_NSE_FILES","getRelativePathToRNSDK","currentFile","relative","IOS_DEPLOYMENT_TARGET","GROUP_IDENTIFIER_TEMPLATE_REGEX","BUNDLE_SHORT_VERSION_TEMPLATE_REGEX","BUNDLE_VERSION_TEMPLATE_REGEX","CIO_DIDFINISHLAUNCHINGMETHOD_REGEX","CIO_DIDFAILTOREGISTERFORREMOTENOTIFICATIONSWITHERROR_REGEX","CIO_DIDFAILTOREGISTERFORREMOTENOTIFICATIONSWITHERRORFULL_REGEX","CIO_DIDREGISTERFORREMOTENOTIFICATIONSWITHDEVICETOKEN_REGEX","CIO_APPDELEGATEDECLARATION_REGEX","CIO_APPDELEGATEHEADER_REGEX","DEFAULT_BUNDLE_VERSION","DEFAULT_BUNDLE_SHORT_VERSION","CIO_TARGET_NAME","CIO_NOTIFICATION_TARGET_NAME","CIO_APPDELEGATEHEADER_SNIPPET","CIO_PUSHNOTIFICATIONHANDLERDECLARATION_SNIPPET","CIO_DIDFAILTOREGISTERFORREMOTENOTIFICATIONSWITHERROR_SNIPPET","CIO_DIDREGISTERFORREMOTENOTIFICATIONSWITHDEVICETOKEN_SNIPPET","CIO_CONFIGURECIOSDKPUSHNOTIFICATION_SNIPPET","CIO_DIDRECEIVENOTIFICATIONRESPONSEHANDLER_SNIPPET","CIO_WILLPRESENTNOTIFICATIONHANDLER_SNIPPET","CIO_REGISTER_PUSHNOTIFICATION_SNIPPET"],"sources":["ios.ts"],"sourcesContent":["const finder = require('find-package-json');\nconst path = require('path');\n\nconst f = finder(__dirname);\nlet pluginPackageRoot = f.next().filename;\n// This is the path to the root of the customerio-expo-plugin package\npluginPackageRoot = path.dirname(pluginPackageRoot);\n\nexport const LOCAL_PATH_TO_RN_SDK = path.join(\n pluginPackageRoot,\n '../customerio-reactnative'\n)\n\nexport const LOCAL_PATH_TO_CIO_NSE_FILES = path.join(\n pluginPackageRoot,\n 'src/helpers/native-files/ios'\n);\n\nexport function getRelativePathToRNSDK(currentFile: string) {\n return path.relative(path.dirname(currentFile), LOCAL_PATH_TO_RN_SDK);\n}\n\nexport const IOS_DEPLOYMENT_TARGET = '13.0';\nexport const GROUP_IDENTIFIER_TEMPLATE_REGEX = /{{GROUP_IDENTIFIER}}/gm;\nexport const BUNDLE_SHORT_VERSION_TEMPLATE_REGEX = /{{BUNDLE_SHORT_VERSION}}/gm;\nexport const BUNDLE_VERSION_TEMPLATE_REGEX = /{{BUNDLE_VERSION}}/gm;\nexport const CIO_DIDFINISHLAUNCHINGMETHOD_REGEX =\n /(- \\(BOOL\\)application:\\(UIApplication \\*\\)application didFinishLaunchingWithOptions:\\(NSDictionary \\*\\)launchOptions(\\s|\\n)*?\\{)((.|\\n)*)\\[super(\\s)application:application(\\s)didFinishLaunchingWithOptions:launchOptions\\];/;\n\nexport const CIO_DIDFAILTOREGISTERFORREMOTENOTIFICATIONSWITHERROR_REGEX =\n /return \\[super application:application didFailToRegisterForRemoteNotificationsWithError:error\\];/;\n\nexport const CIO_DIDFAILTOREGISTERFORREMOTENOTIFICATIONSWITHERRORFULL_REGEX =\n /(- \\(void\\)application:\\(UIApplication \\*\\)application didFailToRegisterForRemoteNotificationsWithError:\\(NSError \\*\\)error(\\s|\\n)*?\\{)(.|\\n){2}.*\\n\\}/;\n\nexport const CIO_DIDREGISTERFORREMOTENOTIFICATIONSWITHDEVICETOKEN_REGEX =\n /return \\[super application:application didRegisterForRemoteNotificationsWithDeviceToken:deviceToken\\];/;\n\nexport const CIO_APPDELEGATEDECLARATION_REGEX =\n /@implementation AppDelegate(.|\\n)/;\n\nexport const CIO_APPDELEGATEHEADER_REGEX =\n /@interface AppDelegate : EXAppDelegateWrapper <RCTBridgeDelegate>/;\nexport const DEFAULT_BUNDLE_VERSION = '1';\nexport const DEFAULT_BUNDLE_SHORT_VERSION = '1.0';\nexport const CIO_TARGET_NAME = 'CustomerIOSDK';\nexport const CIO_NOTIFICATION_TARGET_NAME = 'NotificationService';\nexport const CIO_APPDELEGATEHEADER_SNIPPET = `\n#import <UserNotifications/UserNotifications.h>\n\n@interface AppDelegate : EXAppDelegateWrapper <RCTBridgeDelegate, UNUserNotificationCenterDelegate>\n`;\n\nexport const CIO_PUSHNOTIFICATIONHANDLERDECLARATION_SNIPPET = `\nCIOAppPushNotificationsHandler* pnHandlerObj = [[CIOAppPushNotificationsHandler alloc] init];\n`;\n\nexport const CIO_DIDFAILTOREGISTERFORREMOTENOTIFICATIONSWITHERROR_SNIPPET = `\n [super application:application didFailToRegisterForRemoteNotificationsWithError:error];\n [pnHandlerObj application:application error:error];\n`;\n\nexport const CIO_DIDREGISTERFORREMOTENOTIFICATIONSWITHDEVICETOKEN_SNIPPET = `\n [super application:application didRegisterForRemoteNotificationsWithDeviceToken:deviceToken];\n return [pnHandlerObj application:application deviceToken:deviceToken];\n`;\n\nexport const CIO_CONFIGURECIOSDKPUSHNOTIFICATION_SNIPPET = `\n // Register for push notifications\n [pnHandlerObj registerPushNotification:self];\n`;\n\n// Enable push handling - notification response\nexport const CIO_DIDRECEIVENOTIFICATIONRESPONSEHANDLER_SNIPPET = `\n- (void)userNotificationCenter:(UNUserNotificationCenter *)center didReceiveNotificationResponse:(UNNotificationResponse *)response withCompletionHandler:(void(^)(void))completionHandler {\n [pnHandlerObj userNotificationCenter:center didReceiveNotificationResponse:response withCompletionHandler:completionHandler];\n}`;\n\n// Foreground push handling\nexport const CIO_WILLPRESENTNOTIFICATIONHANDLER_SNIPPET = `\n// show push when the app is in foreground\n- (void)userNotificationCenter:(UNUserNotificationCenter* )center willPresentNotification:(UNNotification* )notification withCompletionHandler:(void (^)(UNNotificationPresentationOptions options))completionHandler {\n completionHandler( UNNotificationPresentationOptionAlert + UNNotificationPresentationOptionSound);\n}`;\nexport const CIO_REGISTER_PUSHNOTIFICATION_SNIPPET = `\n@objc(registerPushNotification:)\n public func registerPushNotification(withNotificationDelegate notificationDelegate: UNUserNotificationCenterDelegate) {\n\n let center = UNUserNotificationCenter.current()\n center.delegate = notificationDelegate\n center.requestAuthorization(options: [.sound, .alert, .badge]) { (granted, error) in\n if error == nil{\n DispatchQueue.main.async {\n UIApplication.shared.registerForRemoteNotifications()\n }\n }\n }\n }`;\n"],"mappings":"AAAA,MAAMA,MAAM,GAAGC,OAAO,CAAC,mBAAmB,CAAC;AAC3C,MAAMC,IAAI,GAAGD,OAAO,CAAC,MAAM,CAAC;AAE5B,MAAME,CAAC,GAAGH,MAAM,CAACI,SAAS,CAAC;AAC3B,IAAIC,iBAAiB,GAAGF,CAAC,CAACG,IAAI,CAAC,CAAC,CAACC,QAAQ;AACzC;AACAF,iBAAiB,GAAGH,IAAI,CAACM,OAAO,CAACH,iBAAiB,CAAC;AAEnD,OAAO,MAAMI,oBAAoB,GAAGP,IAAI,CAACQ,IAAI,CAC3CL,iBAAiB,EACjB,2BACF,CAAC;AAED,OAAO,MAAMM,2BAA2B,GAAGT,IAAI,CAACQ,IAAI,CAClDL,iBAAiB,EACjB,8BACF,CAAC;AAED,OAAO,SAASO,sBAAsBA,CAACC,WAAmB,EAAE;EAC1D,OAAOX,IAAI,CAACY,QAAQ,CAACZ,IAAI,CAACM,OAAO,CAACK,WAAW,CAAC,EAAEJ,oBAAoB,CAAC;AACvE;AAEA,OAAO,MAAMM,qBAAqB,GAAG,MAAM;AAC3C,OAAO,MAAMC,+BAA+B,GAAG,wBAAwB;AACvE,OAAO,MAAMC,mCAAmC,GAAG,4BAA4B;AAC/E,OAAO,MAAMC,6BAA6B,GAAG,sBAAsB;AACnE,OAAO,MAAMC,kCAAkC,GAC7C,gOAAgO;AAElO,OAAO,MAAMC,0DAA0D,GACrE,kGAAkG;AAEpG,OAAO,MAAMC,8DAA8D,GACzE,wJAAwJ;AAE1J,OAAO,MAAMC,0DAA0D,GACrE,wGAAwG;AAE1G,OAAO,MAAMC,gCAAgC,GAC3C,mCAAmC;AAErC,OAAO,MAAMC,2BAA2B,GACtC,mEAAmE;AACrE,OAAO,MAAMC,sBAAsB,GAAG,GAAG;AACzC,OAAO,MAAMC,4BAA4B,GAAG,KAAK;AACjD,OAAO,MAAMC,eAAe,GAAG,eAAe;AAC9C,OAAO,MAAMC,4BAA4B,GAAG,qBAAqB;AACjE,OAAO,MAAMC,6BAA6B,GAAI;AAC9C;AACA;AACA;AACA,CAAC;AAED,OAAO,MAAMC,8CAA8C,GAAI;AAC/D;AACA,CAAC;AAED,OAAO,MAAMC,4DAA4D,GAAI;AAC7E;AACA;AACA,CAAC;AAED,OAAO,MAAMC,4DAA4D,GAAI;AAC7E;AACA;AACA,CAAC;AAED,OAAO,MAAMC,2CAA2C,GAAI;AAC5D;AACA;AACA,CAAC;;AAED;AACA,OAAO,MAAMC,iDAAiD,GAAI;AAClE;AACA;AACA,EAAE;;AAEF;AACA,OAAO,MAAMC,0CAA0C,GAAI;AAC3D;AACA;AACA;AACA,EAAE;AACF,OAAO,MAAMC,qCAAqC,GAAI;AACtD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI"}
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { getRelativePathToRNSDK } from '../constants/ios';
|
|
1
2
|
import { injectCodeByRegex } from './codeInjection';
|
|
2
3
|
import { FileManagement } from './fileManagement';
|
|
3
4
|
export async function injectCIOPodfileCode(iosPath) {
|
|
@@ -13,7 +14,7 @@ export async function injectCIOPodfileCode(iosPath) {
|
|
|
13
14
|
const lineInPodfileToInjectSnippetBefore = /post_install do \|installer\|/;
|
|
14
15
|
const snippetToInjectInPodfile = `
|
|
15
16
|
${blockStart}
|
|
16
|
-
pod 'customerio-reactnative/apn', :path => '
|
|
17
|
+
pod 'customerio-reactnative/apn', :path => '${getRelativePathToRNSDK(filename)}'
|
|
17
18
|
${blockEnd}
|
|
18
19
|
`.trim();
|
|
19
20
|
FileManagement.write(filename, injectCodeByRegex(podfile, lineInPodfileToInjectSnippetBefore, snippetToInjectInPodfile).join('\n'));
|
|
@@ -32,7 +33,7 @@ export async function injectCIONotificationPodfileCode(iosPath, useFrameworks) {
|
|
|
32
33
|
${blockStart}
|
|
33
34
|
target 'NotificationService' do
|
|
34
35
|
${useFrameworks === 'static' ? 'use_frameworks! :linkage => :static' : ''}
|
|
35
|
-
pod 'customerio-reactnative-richpush/apn', :path => '
|
|
36
|
+
pod 'customerio-reactnative-richpush/apn', :path => '${getRelativePathToRNSDK(filename)}'
|
|
36
37
|
end
|
|
37
38
|
${blockEnd}
|
|
38
39
|
`.trim();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["injectCodeByRegex","FileManagement","injectCIOPodfileCode","iosPath","blockStart","blockEnd","filename","podfile","read","matches","match","RegExp","lineInPodfileToInjectSnippetBefore","snippetToInjectInPodfile","trim","write","join","console","log","injectCIONotificationPodfileCode","useFrameworks","append"],"sources":["injectCIOPodfileCode.ts"],"sourcesContent":["import type { CustomerIOPluginOptionsIOS } from '../../types/cio-types';\nimport { injectCodeByRegex } from './codeInjection';\nimport { FileManagement } from './fileManagement';\n\nexport async function injectCIOPodfileCode(iosPath: string) {\n const blockStart = '# --- CustomerIO Host App START ---';\n const blockEnd = '# --- CustomerIO Host App END ---';\n\n const filename = `${iosPath}/Podfile`;\n const podfile = await FileManagement.read(filename);\n const matches = podfile.match(new RegExp(blockStart));\n\n if (!matches) {\n // We need to decide what line of code in the Podfile to insert our native code.\n // The \"post_install\" line is always present in an Expo project Podfile so it's reliable.\n // Find that line in the Podfile and then we will insert our code above that line.\n const lineInPodfileToInjectSnippetBefore = /post_install do \\|installer\\|/;\n\n const snippetToInjectInPodfile = `\n${blockStart}\n pod 'customerio-reactnative/apn', :path => '
|
|
1
|
+
{"version":3,"names":["getRelativePathToRNSDK","injectCodeByRegex","FileManagement","injectCIOPodfileCode","iosPath","blockStart","blockEnd","filename","podfile","read","matches","match","RegExp","lineInPodfileToInjectSnippetBefore","snippetToInjectInPodfile","trim","write","join","console","log","injectCIONotificationPodfileCode","useFrameworks","append"],"sources":["injectCIOPodfileCode.ts"],"sourcesContent":["import type { CustomerIOPluginOptionsIOS } from '../../types/cio-types';\nimport { getRelativePathToRNSDK } from '../constants/ios';\nimport { injectCodeByRegex } from './codeInjection';\nimport { FileManagement } from './fileManagement';\n\nexport async function injectCIOPodfileCode(iosPath: string) {\n const blockStart = '# --- CustomerIO Host App START ---';\n const blockEnd = '# --- CustomerIO Host App END ---';\n\n const filename = `${iosPath}/Podfile`;\n const podfile = await FileManagement.read(filename);\n const matches = podfile.match(new RegExp(blockStart));\n\n if (!matches) {\n // We need to decide what line of code in the Podfile to insert our native code.\n // The \"post_install\" line is always present in an Expo project Podfile so it's reliable.\n // Find that line in the Podfile and then we will insert our code above that line.\n const lineInPodfileToInjectSnippetBefore = /post_install do \\|installer\\|/;\n\n const snippetToInjectInPodfile = `\n${blockStart}\n pod 'customerio-reactnative/apn', :path => '${getRelativePathToRNSDK(filename)}'\n${blockEnd}\n`.trim();\n\n FileManagement.write(\n filename,\n injectCodeByRegex(\n podfile,\n lineInPodfileToInjectSnippetBefore,\n snippetToInjectInPodfile\n ).join('\\n')\n );\n } else {\n console.log('CustomerIO Podfile snippets already exists. Skipping...');\n }\n}\n\nexport async function injectCIONotificationPodfileCode(\n iosPath: string,\n useFrameworks: CustomerIOPluginOptionsIOS['useFrameworks']\n) {\n const filename = `${iosPath}/Podfile`;\n const podfile = await FileManagement.read(filename);\n\n const blockStart = '# --- CustomerIO Notification START ---';\n const blockEnd = '# --- CustomerIO Notification END ---';\n\n const matches = podfile.match(new RegExp(blockStart));\n\n if (!matches) {\n const snippetToInjectInPodfile = `\n${blockStart}\ntarget 'NotificationService' do\n ${useFrameworks === 'static' ? 'use_frameworks! :linkage => :static' : ''}\n pod 'customerio-reactnative-richpush/apn', :path => '${getRelativePathToRNSDK(filename)}'\nend\n${blockEnd}\n`.trim();\n\n FileManagement.append(filename, snippetToInjectInPodfile);\n }\n}\n"],"mappings":"AACA,SAASA,sBAAsB,QAAQ,kBAAkB;AACzD,SAASC,iBAAiB,QAAQ,iBAAiB;AACnD,SAASC,cAAc,QAAQ,kBAAkB;AAEjD,OAAO,eAAeC,oBAAoBA,CAACC,OAAe,EAAE;EAC1D,MAAMC,UAAU,GAAG,qCAAqC;EACxD,MAAMC,QAAQ,GAAG,mCAAmC;EAEpD,MAAMC,QAAQ,GAAI,GAAEH,OAAQ,UAAS;EACrC,MAAMI,OAAO,GAAG,MAAMN,cAAc,CAACO,IAAI,CAACF,QAAQ,CAAC;EACnD,MAAMG,OAAO,GAAGF,OAAO,CAACG,KAAK,CAAC,IAAIC,MAAM,CAACP,UAAU,CAAC,CAAC;EAErD,IAAI,CAACK,OAAO,EAAE;IACZ;IACA;IACA;IACA,MAAMG,kCAAkC,GAAG,+BAA+B;IAE1E,MAAMC,wBAAwB,GAAI;AACtC,EAAET,UAAW;AACb,gDAAgDL,sBAAsB,CAACO,QAAQ,CAAE;AACjF,EAAED,QAAS;AACX,CAAC,CAACS,IAAI,CAAC,CAAC;IAEJb,cAAc,CAACc,KAAK,CAClBT,QAAQ,EACRN,iBAAiB,CACfO,OAAO,EACPK,kCAAkC,EAClCC,wBACF,CAAC,CAACG,IAAI,CAAC,IAAI,CACb,CAAC;EACH,CAAC,MAAM;IACLC,OAAO,CAACC,GAAG,CAAC,yDAAyD,CAAC;EACxE;AACF;AAEA,OAAO,eAAeC,gCAAgCA,CACpDhB,OAAe,EACfiB,aAA0D,EAC1D;EACA,MAAMd,QAAQ,GAAI,GAAEH,OAAQ,UAAS;EACrC,MAAMI,OAAO,GAAG,MAAMN,cAAc,CAACO,IAAI,CAACF,QAAQ,CAAC;EAEnD,MAAMF,UAAU,GAAG,yCAAyC;EAC5D,MAAMC,QAAQ,GAAG,uCAAuC;EAExD,MAAMI,OAAO,GAAGF,OAAO,CAACG,KAAK,CAAC,IAAIC,MAAM,CAACP,UAAU,CAAC,CAAC;EAErD,IAAI,CAACK,OAAO,EAAE;IACZ,MAAMI,wBAAwB,GAAI;AACtC,EAAET,UAAW;AACb;AACA,IAAIgB,aAAa,KAAK,QAAQ,GAAG,qCAAqC,GAAG,EAAG;AAC5E,yDAAyDrB,sBAAsB,CAACO,QAAQ,CAAE;AAC1F;AACA,EAAED,QAAS;AACX,CAAC,CAACS,IAAI,CAAC,CAAC;IAEJb,cAAc,CAACoB,MAAM,CAACf,QAAQ,EAAEO,wBAAwB,CAAC;EAC3D;AACF"}
|
|
@@ -174,30 +174,30 @@ const updateNseInfoPlist = payload => {
|
|
|
174
174
|
FileManagement.writeFile(payload.infoPlistTargetFile, plistFileString);
|
|
175
175
|
};
|
|
176
176
|
const updateNseEnv = (options, envFileName) => {
|
|
177
|
-
var _options$pushNotifica2, _options$
|
|
177
|
+
var _options$pushNotifica2, _options$pushNotifica4, _options$pushNotifica6;
|
|
178
178
|
const SITE_ID_RE = /\{\{SITE_ID\}\}/;
|
|
179
179
|
const API_KEY_RE = /\{\{API_KEY\}\}/;
|
|
180
180
|
const REGION_RE = /\{\{REGION\}\}/;
|
|
181
181
|
let envFileContent = FileManagement.readFile(envFileName);
|
|
182
|
-
if ((_options$pushNotifica2 = options.pushNotification) !== null && _options$pushNotifica2 !== void 0 && (_options$
|
|
183
|
-
var _options$
|
|
184
|
-
envFileContent = replaceCodeByRegex(envFileContent, SITE_ID_RE, (_options$
|
|
182
|
+
if ((_options$pushNotifica2 = options.pushNotification) !== null && _options$pushNotifica2 !== void 0 && (_options$pushNotifica2 = _options$pushNotifica2.env) !== null && _options$pushNotifica2 !== void 0 && _options$pushNotifica2.siteId) {
|
|
183
|
+
var _options$pushNotifica3;
|
|
184
|
+
envFileContent = replaceCodeByRegex(envFileContent, SITE_ID_RE, (_options$pushNotifica3 = options.pushNotification) === null || _options$pushNotifica3 === void 0 || (_options$pushNotifica3 = _options$pushNotifica3.env) === null || _options$pushNotifica3 === void 0 ? void 0 : _options$pushNotifica3.siteId);
|
|
185
185
|
}
|
|
186
|
-
if ((_options$
|
|
187
|
-
var _options$
|
|
188
|
-
envFileContent = replaceCodeByRegex(envFileContent, API_KEY_RE, (_options$
|
|
186
|
+
if ((_options$pushNotifica4 = options.pushNotification) !== null && _options$pushNotifica4 !== void 0 && (_options$pushNotifica4 = _options$pushNotifica4.env) !== null && _options$pushNotifica4 !== void 0 && _options$pushNotifica4.apiKey) {
|
|
187
|
+
var _options$pushNotifica5;
|
|
188
|
+
envFileContent = replaceCodeByRegex(envFileContent, API_KEY_RE, (_options$pushNotifica5 = options.pushNotification) === null || _options$pushNotifica5 === void 0 || (_options$pushNotifica5 = _options$pushNotifica5.env) === null || _options$pushNotifica5 === void 0 ? void 0 : _options$pushNotifica5.apiKey);
|
|
189
189
|
}
|
|
190
|
-
if ((_options$
|
|
191
|
-
var _options$
|
|
190
|
+
if ((_options$pushNotifica6 = options.pushNotification) !== null && _options$pushNotifica6 !== void 0 && (_options$pushNotifica6 = _options$pushNotifica6.env) !== null && _options$pushNotifica6 !== void 0 && _options$pushNotifica6.region) {
|
|
191
|
+
var _options$pushNotifica7;
|
|
192
192
|
const regionMap = {
|
|
193
193
|
us: 'Region.US',
|
|
194
194
|
eu: 'Region.EU'
|
|
195
195
|
};
|
|
196
|
-
const region = (_options$
|
|
196
|
+
const region = (_options$pushNotifica7 = options.pushNotification) === null || _options$pushNotifica7 === void 0 || (_options$pushNotifica7 = _options$pushNotifica7.env) === null || _options$pushNotifica7 === void 0 || (_options$pushNotifica7 = _options$pushNotifica7.region) === null || _options$pushNotifica7 === void 0 ? void 0 : _options$pushNotifica7.toLowerCase();
|
|
197
197
|
const mappedRegion = regionMap[region] || '';
|
|
198
198
|
if (!mappedRegion) {
|
|
199
|
-
var _options$
|
|
200
|
-
console.warn(`${(_options$
|
|
199
|
+
var _options$pushNotifica8;
|
|
200
|
+
console.warn(`${(_options$pushNotifica8 = options.pushNotification) === null || _options$pushNotifica8 === void 0 || (_options$pushNotifica8 = _options$pushNotifica8.env) === null || _options$pushNotifica8 === void 0 ? void 0 : _options$pushNotifica8.region} is an invalid region. Please use the values from the docs: https://customer.io/docs/sdk/expo/getting-started/#configure-the-plugin`);
|
|
201
201
|
} else {
|
|
202
202
|
envFileContent = replaceCodeByRegex(envFileContent, REGION_RE, mappedRegion);
|
|
203
203
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["withXcodeProject","CIO_NOTIFICATION_TARGET_NAME","CIO_REGISTER_PUSHNOTIFICATION_SNIPPET","DEFAULT_BUNDLE_VERSION","LOCAL_PATH_TO_CIO_NSE_FILES","replaceCodeByRegex","injectCIONotificationPodfileCode","FileManagement","PLIST_FILENAME","ENV_FILENAME","TARGETED_DEVICE_FAMILY","addNotificationServiceExtension","options","xcodeProject","_options$pushNotifica","pushNotification","addPushNotificationFile","useRichPush","addRichPushXcodeProj","error","console","withCioNotificationsXcodeProject","configOuter","props","config","modRequest","ios","version","bundleShortVersion","appleTeamId","iosDeploymentTarget","useFrameworks","undefined","Error","projectName","platformProjectRoot","bundleIdentifier","buildNumber","bundleVersion","iosPath","appName","modifiedProjectFile","modResults","pbxTargetByName","warn","nsePath","mkdir","recursive","files","getTargetFile","filename","forEach","targetFile","copyFile","infoPlistTargetFile","updateNseInfoPlist","updateNseEnv","extGroup","addPbxGroup","groups","hash","project","objects","Object","keys","key","name","path","addToPbxGroup","uuid","projObjects","nseTarget","addTarget","addBuildPhase","configurations","pbxXCBuildConfigurationSection","buildSettings","PRODUCT_NAME","buildSettingsObj","DEVELOPMENT_TEAM","IPHONEOS_DEPLOYMENT_TARGET","CODE_SIGN_STYLE","SWIFT_VERSION","addTargetAttribute","payload","BUNDLE_SHORT_VERSION_RE","BUNDLE_VERSION_RE","plistFileString","readFile","writeFile","envFileName","_options$pushNotifica2","_options$pushNotifica3","_options$pushNotifica6","_options$pushNotifica7","_options$pushNotifica10","_options$pushNotifica11","SITE_ID_RE","API_KEY_RE","REGION_RE","envFileContent","env","siteId","_options$pushNotifica4","_options$pushNotifica5","apiKey","_options$pushNotifica8","_options$pushNotifica9","region","_options$pushNotifica12","_options$pushNotifica13","_options$pushNotifica14","regionMap","us","eu","toLowerCase","mappedRegion","_options$pushNotifica15","_options$pushNotifica16","file","appPath","exists","log","updatePushFile","group","pbxCreateGroup","classesKey","findPBXGroupKey","addSourceFile","REGISTER_RE","snippet","disableNotificationRegistration"],"sources":["withNotificationsXcodeProject.ts"],"sourcesContent":["import {\n ConfigPlugin,\n XcodeProject,\n withXcodeProject,\n} from '@expo/config-plugins';\n\nimport {\n CIO_NOTIFICATION_TARGET_NAME,\n CIO_REGISTER_PUSHNOTIFICATION_SNIPPET,\n DEFAULT_BUNDLE_VERSION,\n LOCAL_PATH_TO_CIO_NSE_FILES,\n} from '../helpers/constants/ios';\nimport { replaceCodeByRegex } from '../helpers/utils/codeInjection';\nimport { injectCIONotificationPodfileCode } from '../helpers/utils/injectCIOPodfileCode';\nimport type { CustomerIOPluginOptionsIOS } from '../types/cio-types';\nimport { FileManagement } from './../helpers/utils/fileManagement';\n\nconst PLIST_FILENAME = `${CIO_NOTIFICATION_TARGET_NAME}-Info.plist`;\nconst ENV_FILENAME = 'Env.swift';\n\nconst TARGETED_DEVICE_FAMILY = `\"1,2\"`;\n\nconst addNotificationServiceExtension = async (\n options: CustomerIOPluginOptionsIOS,\n xcodeProject: XcodeProject\n) => {\n try {\n if (options.pushNotification) {\n await addPushNotificationFile(options, xcodeProject);\n }\n\n if (options.pushNotification?.useRichPush) {\n await addRichPushXcodeProj(options, xcodeProject);\n }\n return xcodeProject;\n } catch (error: any) {\n console.error(error);\n return null;\n }\n};\n\nexport const withCioNotificationsXcodeProject: ConfigPlugin<\n CustomerIOPluginOptionsIOS\n> = (configOuter, props) => {\n return withXcodeProject(configOuter, async (config) => {\n const { modRequest, ios, version: bundleShortVersion } = config;\n const {\n appleTeamId,\n iosDeploymentTarget,\n pushNotification,\n useFrameworks,\n } = props;\n\n if (ios === undefined)\n throw new Error(\n 'Adding NotificationServiceExtension failed: ios config missing from app.config.js or app.json.'\n );\n\n // projectName and platformProjectRoot translates to appName and iosPath in addNotificationServiceExtension()\n const { projectName, platformProjectRoot } = modRequest;\n const { bundleIdentifier, buildNumber } = ios;\n\n if (bundleShortVersion === undefined) {\n throw new Error(\n 'Adding NotificationServiceExtension failed: version missing from app.config.js or app.json'\n );\n }\n\n if (bundleIdentifier === undefined) {\n throw new Error(\n 'Adding NotificationServiceExtension failed: ios.bundleIdentifier missing from app.config.js or app.json'\n );\n }\n\n if (projectName === undefined) {\n throw new Error(\n 'Adding NotificationServiceExtension failed: name missing from app.config.js or app.json'\n );\n }\n\n const options = {\n ...props,\n appleTeamId,\n bundleIdentifier,\n bundleShortVersion,\n bundleVersion: buildNumber || DEFAULT_BUNDLE_VERSION,\n iosPath: platformProjectRoot,\n appName: projectName,\n useFrameworks,\n iosDeploymentTarget,\n pushNotification,\n };\n\n const modifiedProjectFile = await addNotificationServiceExtension(\n options,\n config.modResults\n );\n\n if (modifiedProjectFile) {\n config.modResults = modifiedProjectFile;\n }\n\n return config;\n });\n};\n\nconst addRichPushXcodeProj = async (\n options: CustomerIOPluginOptionsIOS,\n xcodeProject: any\n) => {\n const {\n appleTeamId,\n bundleIdentifier,\n bundleShortVersion,\n bundleVersion,\n iosPath,\n iosDeploymentTarget,\n useFrameworks,\n } = options;\n\n await injectCIONotificationPodfileCode(iosPath, useFrameworks);\n\n // Check if `CIO_NOTIFICATION_TARGET_NAME` group already exist in the project\n // If true then skip creating a new group to avoid duplicate folders\n if (xcodeProject.pbxTargetByName(CIO_NOTIFICATION_TARGET_NAME)) {\n console.warn(\n `${CIO_NOTIFICATION_TARGET_NAME} already exists in project. Skipping...`\n );\n return;\n }\n\n const nsePath = `${iosPath}/${CIO_NOTIFICATION_TARGET_NAME}`;\n FileManagement.mkdir(nsePath, {\n recursive: true,\n });\n\n const files = [\n PLIST_FILENAME,\n 'NotificationService.h',\n 'NotificationService.swift',\n 'NotificationService.m',\n ENV_FILENAME,\n ];\n\n const getTargetFile = (filename: string) => `${nsePath}/${filename}`;\n\n files.forEach((filename) => {\n const targetFile = getTargetFile(filename);\n FileManagement.copyFile(\n `${LOCAL_PATH_TO_CIO_NSE_FILES}/${filename}`,\n targetFile\n );\n });\n\n /* MODIFY COPIED EXTENSION FILES */\n const infoPlistTargetFile = getTargetFile(PLIST_FILENAME);\n updateNseInfoPlist({\n bundleVersion,\n bundleShortVersion,\n infoPlistTargetFile,\n });\n updateNseEnv(options, getTargetFile(ENV_FILENAME));\n\n // Create new PBXGroup for the extension\n const extGroup = xcodeProject.addPbxGroup(\n files,\n CIO_NOTIFICATION_TARGET_NAME,\n CIO_NOTIFICATION_TARGET_NAME\n );\n\n // Add the new PBXGroup to the top level group. This makes the\n // files / folder appear in the file explorer in Xcode.\n const groups = xcodeProject.hash.project.objects['PBXGroup'];\n Object.keys(groups).forEach((key) => {\n if (groups[key].name === undefined && groups[key].path === undefined) {\n xcodeProject.addToPbxGroup(extGroup.uuid, key);\n }\n });\n\n // WORK AROUND for codeProject.addTarget BUG\n // Xcode projects don't contain these if there is only one target\n // An upstream fix should be made to the code referenced in this link:\n // - https://github.com/apache/cordova-node-xcode/blob/8b98cabc5978359db88dc9ff2d4c015cba40f150/lib/pbxProject.js#L860\n const projObjects = xcodeProject.hash.project.objects;\n projObjects['PBXTargetDependency'] = projObjects['PBXTargetDependency'] || {};\n projObjects['PBXContainerItemProxy'] =\n projObjects['PBXTargetDependency'] || {};\n\n if (xcodeProject.pbxTargetByName(CIO_NOTIFICATION_TARGET_NAME)) {\n console.warn(\n `${CIO_NOTIFICATION_TARGET_NAME} already exists in project. Skipping...`\n );\n return;\n }\n\n // Add the NSE target\n // This also adds PBXTargetDependency and PBXContainerItemProxy\n const nseTarget = xcodeProject.addTarget(\n CIO_NOTIFICATION_TARGET_NAME,\n 'app_extension',\n CIO_NOTIFICATION_TARGET_NAME,\n `${bundleIdentifier}.richpush`\n );\n\n // Add build phases to the new target\n xcodeProject.addBuildPhase(\n ['NotificationService.m', 'NotificationService.swift', 'Env.swift'],\n 'PBXSourcesBuildPhase',\n 'Sources',\n nseTarget.uuid\n );\n xcodeProject.addBuildPhase(\n [],\n 'PBXResourcesBuildPhase',\n 'Resources',\n nseTarget.uuid\n );\n\n xcodeProject.addBuildPhase(\n [],\n 'PBXFrameworksBuildPhase',\n 'Frameworks',\n nseTarget.uuid\n );\n\n // Edit the Deployment info of the target\n const configurations = xcodeProject.pbxXCBuildConfigurationSection();\n for (const key in configurations) {\n if (\n typeof configurations[key].buildSettings !== 'undefined' &&\n configurations[key].buildSettings.PRODUCT_NAME ===\n `\"${CIO_NOTIFICATION_TARGET_NAME}\"`\n ) {\n const buildSettingsObj = configurations[key].buildSettings;\n buildSettingsObj.DEVELOPMENT_TEAM = appleTeamId;\n buildSettingsObj.IPHONEOS_DEPLOYMENT_TARGET =\n iosDeploymentTarget || '13.0';\n buildSettingsObj.TARGETED_DEVICE_FAMILY = TARGETED_DEVICE_FAMILY;\n buildSettingsObj.CODE_SIGN_STYLE = 'Automatic';\n buildSettingsObj.SWIFT_VERSION = 4.2;\n }\n }\n\n // Add development team to the target & the main\n xcodeProject.addTargetAttribute('DevelopmentTeam', appleTeamId, nseTarget);\n xcodeProject.addTargetAttribute('DevelopmentTeam', appleTeamId);\n};\n\nconst updateNseInfoPlist = (payload: {\n bundleVersion?: string;\n bundleShortVersion?: string;\n infoPlistTargetFile: string;\n}) => {\n const BUNDLE_SHORT_VERSION_RE = /\\{\\{BUNDLE_SHORT_VERSION\\}\\}/;\n const BUNDLE_VERSION_RE = /\\{\\{BUNDLE_VERSION\\}\\}/;\n\n let plistFileString = FileManagement.readFile(payload.infoPlistTargetFile);\n\n if (payload.bundleVersion) {\n plistFileString = replaceCodeByRegex(\n plistFileString,\n BUNDLE_VERSION_RE,\n payload.bundleVersion\n );\n }\n\n if (payload.bundleShortVersion) {\n plistFileString = replaceCodeByRegex(\n plistFileString,\n BUNDLE_SHORT_VERSION_RE,\n payload.bundleShortVersion\n );\n }\n\n FileManagement.writeFile(payload.infoPlistTargetFile, plistFileString);\n};\n\nconst updateNseEnv = (\n options: CustomerIOPluginOptionsIOS,\n envFileName: string\n) => {\n const SITE_ID_RE = /\\{\\{SITE_ID\\}\\}/;\n const API_KEY_RE = /\\{\\{API_KEY\\}\\}/;\n const REGION_RE = /\\{\\{REGION\\}\\}/;\n\n let envFileContent = FileManagement.readFile(envFileName);\n\n if (options.pushNotification?.env?.siteId) {\n envFileContent = replaceCodeByRegex(\n envFileContent,\n SITE_ID_RE,\n options.pushNotification?.env?.siteId\n );\n }\n\n if (options.pushNotification?.env?.apiKey) {\n envFileContent = replaceCodeByRegex(\n envFileContent,\n API_KEY_RE,\n options.pushNotification?.env?.apiKey\n );\n }\n\n if (options.pushNotification?.env?.region) {\n const regionMap = {\n us: 'Region.US',\n eu: 'Region.EU',\n };\n const region = options.pushNotification?.env?.region?.toLowerCase();\n const mappedRegion = (regionMap as any)[region] || '';\n if (!mappedRegion) {\n console.warn(\n `${options.pushNotification?.env?.region} is an invalid region. Please use the values from the docs: https://customer.io/docs/sdk/expo/getting-started/#configure-the-plugin`\n );\n } else {\n envFileContent = replaceCodeByRegex(\n envFileContent,\n REGION_RE,\n mappedRegion\n );\n }\n }\n\n FileManagement.writeFile(envFileName, envFileContent);\n};\n\nasync function addPushNotificationFile(\n options: CustomerIOPluginOptionsIOS,\n xcodeProject: any\n) {\n const { iosPath, appName } = options;\n const file = 'PushService.swift';\n const appPath = `${iosPath}/${appName}`;\n const getTargetFile = (filename: string) => `${appPath}/${filename}`;\n const targetFile = getTargetFile(file);\n\n // Check whether {file} exists in the project. If false, then add the file\n // If {file} exists then skip and return\n if (!FileManagement.exists(getTargetFile(file))) {\n FileManagement.mkdir(appPath, {\n recursive: true,\n });\n\n FileManagement.copyFile(\n `${LOCAL_PATH_TO_CIO_NSE_FILES}/${file}`,\n targetFile\n );\n } else {\n console.log(`${getTargetFile(file)} already exists. Skipping...`);\n return;\n }\n\n updatePushFile(options, targetFile);\n\n const group = xcodeProject.pbxCreateGroup('CustomerIONotifications');\n const classesKey = xcodeProject.findPBXGroupKey({ name: `${appName}` });\n xcodeProject.addToPbxGroup(group, classesKey);\n\n xcodeProject.addSourceFile(`${appName}/${file}`, null, group);\n}\n\nconst updatePushFile = (\n options: CustomerIOPluginOptionsIOS,\n envFileName: string\n) => {\n const REGISTER_RE = /\\{\\{REGISTER_SNIPPET\\}\\}/;\n\n let envFileContent = FileManagement.readFile(envFileName);\n\n let snippet = '';\n if (\n options.disableNotificationRegistration !== undefined &&\n options.disableNotificationRegistration === false\n ) {\n snippet = CIO_REGISTER_PUSHNOTIFICATION_SNIPPET;\n }\n\n envFileContent = replaceCodeByRegex(envFileContent, REGISTER_RE, snippet);\n\n FileManagement.writeFile(envFileName, envFileContent);\n};\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"names":["withXcodeProject","CIO_NOTIFICATION_TARGET_NAME","CIO_REGISTER_PUSHNOTIFICATION_SNIPPET","DEFAULT_BUNDLE_VERSION","LOCAL_PATH_TO_CIO_NSE_FILES","replaceCodeByRegex","injectCIONotificationPodfileCode","FileManagement","PLIST_FILENAME","ENV_FILENAME","TARGETED_DEVICE_FAMILY","addNotificationServiceExtension","options","xcodeProject","_options$pushNotifica","pushNotification","addPushNotificationFile","useRichPush","addRichPushXcodeProj","error","console","withCioNotificationsXcodeProject","configOuter","props","config","modRequest","ios","version","bundleShortVersion","appleTeamId","iosDeploymentTarget","useFrameworks","undefined","Error","projectName","platformProjectRoot","bundleIdentifier","buildNumber","bundleVersion","iosPath","appName","modifiedProjectFile","modResults","pbxTargetByName","warn","nsePath","mkdir","recursive","files","getTargetFile","filename","forEach","targetFile","copyFile","infoPlistTargetFile","updateNseInfoPlist","updateNseEnv","extGroup","addPbxGroup","groups","hash","project","objects","Object","keys","key","name","path","addToPbxGroup","uuid","projObjects","nseTarget","addTarget","addBuildPhase","configurations","pbxXCBuildConfigurationSection","buildSettings","PRODUCT_NAME","buildSettingsObj","DEVELOPMENT_TEAM","IPHONEOS_DEPLOYMENT_TARGET","CODE_SIGN_STYLE","SWIFT_VERSION","addTargetAttribute","payload","BUNDLE_SHORT_VERSION_RE","BUNDLE_VERSION_RE","plistFileString","readFile","writeFile","envFileName","_options$pushNotifica2","_options$pushNotifica4","_options$pushNotifica6","SITE_ID_RE","API_KEY_RE","REGION_RE","envFileContent","env","siteId","_options$pushNotifica3","apiKey","_options$pushNotifica5","region","_options$pushNotifica7","regionMap","us","eu","toLowerCase","mappedRegion","_options$pushNotifica8","file","appPath","exists","log","updatePushFile","group","pbxCreateGroup","classesKey","findPBXGroupKey","addSourceFile","REGISTER_RE","snippet","disableNotificationRegistration"],"sources":["withNotificationsXcodeProject.ts"],"sourcesContent":["import {\n ConfigPlugin,\n XcodeProject,\n withXcodeProject,\n} from '@expo/config-plugins';\n\nimport {\n CIO_NOTIFICATION_TARGET_NAME,\n CIO_REGISTER_PUSHNOTIFICATION_SNIPPET,\n DEFAULT_BUNDLE_VERSION,\n LOCAL_PATH_TO_CIO_NSE_FILES,\n} from '../helpers/constants/ios';\nimport { replaceCodeByRegex } from '../helpers/utils/codeInjection';\nimport { injectCIONotificationPodfileCode } from '../helpers/utils/injectCIOPodfileCode';\nimport type { CustomerIOPluginOptionsIOS } from '../types/cio-types';\nimport { FileManagement } from './../helpers/utils/fileManagement';\n\nconst PLIST_FILENAME = `${CIO_NOTIFICATION_TARGET_NAME}-Info.plist`;\nconst ENV_FILENAME = 'Env.swift';\n\nconst TARGETED_DEVICE_FAMILY = `\"1,2\"`;\n\nconst addNotificationServiceExtension = async (\n options: CustomerIOPluginOptionsIOS,\n xcodeProject: XcodeProject\n) => {\n try {\n if (options.pushNotification) {\n await addPushNotificationFile(options, xcodeProject);\n }\n\n if (options.pushNotification?.useRichPush) {\n await addRichPushXcodeProj(options, xcodeProject);\n }\n return xcodeProject;\n } catch (error: any) {\n console.error(error);\n return null;\n }\n};\n\nexport const withCioNotificationsXcodeProject: ConfigPlugin<\n CustomerIOPluginOptionsIOS\n> = (configOuter, props) => {\n return withXcodeProject(configOuter, async (config) => {\n const { modRequest, ios, version: bundleShortVersion } = config;\n const {\n appleTeamId,\n iosDeploymentTarget,\n pushNotification,\n useFrameworks,\n } = props;\n\n if (ios === undefined)\n throw new Error(\n 'Adding NotificationServiceExtension failed: ios config missing from app.config.js or app.json.'\n );\n\n // projectName and platformProjectRoot translates to appName and iosPath in addNotificationServiceExtension()\n const { projectName, platformProjectRoot } = modRequest;\n const { bundleIdentifier, buildNumber } = ios;\n\n if (bundleShortVersion === undefined) {\n throw new Error(\n 'Adding NotificationServiceExtension failed: version missing from app.config.js or app.json'\n );\n }\n\n if (bundleIdentifier === undefined) {\n throw new Error(\n 'Adding NotificationServiceExtension failed: ios.bundleIdentifier missing from app.config.js or app.json'\n );\n }\n\n if (projectName === undefined) {\n throw new Error(\n 'Adding NotificationServiceExtension failed: name missing from app.config.js or app.json'\n );\n }\n\n const options = {\n ...props,\n appleTeamId,\n bundleIdentifier,\n bundleShortVersion,\n bundleVersion: buildNumber || DEFAULT_BUNDLE_VERSION,\n iosPath: platformProjectRoot,\n appName: projectName,\n useFrameworks,\n iosDeploymentTarget,\n pushNotification,\n };\n\n const modifiedProjectFile = await addNotificationServiceExtension(\n options,\n config.modResults\n );\n\n if (modifiedProjectFile) {\n config.modResults = modifiedProjectFile;\n }\n\n return config;\n });\n};\n\nconst addRichPushXcodeProj = async (\n options: CustomerIOPluginOptionsIOS,\n xcodeProject: any\n) => {\n const {\n appleTeamId,\n bundleIdentifier,\n bundleShortVersion,\n bundleVersion,\n iosPath,\n iosDeploymentTarget,\n useFrameworks,\n } = options;\n\n await injectCIONotificationPodfileCode(iosPath, useFrameworks);\n\n // Check if `CIO_NOTIFICATION_TARGET_NAME` group already exist in the project\n // If true then skip creating a new group to avoid duplicate folders\n if (xcodeProject.pbxTargetByName(CIO_NOTIFICATION_TARGET_NAME)) {\n console.warn(\n `${CIO_NOTIFICATION_TARGET_NAME} already exists in project. Skipping...`\n );\n return;\n }\n\n const nsePath = `${iosPath}/${CIO_NOTIFICATION_TARGET_NAME}`;\n FileManagement.mkdir(nsePath, {\n recursive: true,\n });\n\n const files = [\n PLIST_FILENAME,\n 'NotificationService.h',\n 'NotificationService.swift',\n 'NotificationService.m',\n ENV_FILENAME,\n ];\n\n const getTargetFile = (filename: string) => `${nsePath}/${filename}`;\n\n files.forEach((filename) => {\n const targetFile = getTargetFile(filename);\n FileManagement.copyFile(\n `${LOCAL_PATH_TO_CIO_NSE_FILES}/${filename}`,\n targetFile\n );\n });\n\n /* MODIFY COPIED EXTENSION FILES */\n const infoPlistTargetFile = getTargetFile(PLIST_FILENAME);\n updateNseInfoPlist({\n bundleVersion,\n bundleShortVersion,\n infoPlistTargetFile,\n });\n updateNseEnv(options, getTargetFile(ENV_FILENAME));\n\n // Create new PBXGroup for the extension\n const extGroup = xcodeProject.addPbxGroup(\n files,\n CIO_NOTIFICATION_TARGET_NAME,\n CIO_NOTIFICATION_TARGET_NAME\n );\n\n // Add the new PBXGroup to the top level group. This makes the\n // files / folder appear in the file explorer in Xcode.\n const groups = xcodeProject.hash.project.objects['PBXGroup'];\n Object.keys(groups).forEach((key) => {\n if (groups[key].name === undefined && groups[key].path === undefined) {\n xcodeProject.addToPbxGroup(extGroup.uuid, key);\n }\n });\n\n // WORK AROUND for codeProject.addTarget BUG\n // Xcode projects don't contain these if there is only one target\n // An upstream fix should be made to the code referenced in this link:\n // - https://github.com/apache/cordova-node-xcode/blob/8b98cabc5978359db88dc9ff2d4c015cba40f150/lib/pbxProject.js#L860\n const projObjects = xcodeProject.hash.project.objects;\n projObjects['PBXTargetDependency'] = projObjects['PBXTargetDependency'] || {};\n projObjects['PBXContainerItemProxy'] =\n projObjects['PBXTargetDependency'] || {};\n\n if (xcodeProject.pbxTargetByName(CIO_NOTIFICATION_TARGET_NAME)) {\n console.warn(\n `${CIO_NOTIFICATION_TARGET_NAME} already exists in project. Skipping...`\n );\n return;\n }\n\n // Add the NSE target\n // This also adds PBXTargetDependency and PBXContainerItemProxy\n const nseTarget = xcodeProject.addTarget(\n CIO_NOTIFICATION_TARGET_NAME,\n 'app_extension',\n CIO_NOTIFICATION_TARGET_NAME,\n `${bundleIdentifier}.richpush`\n );\n\n // Add build phases to the new target\n xcodeProject.addBuildPhase(\n ['NotificationService.m', 'NotificationService.swift', 'Env.swift'],\n 'PBXSourcesBuildPhase',\n 'Sources',\n nseTarget.uuid\n );\n xcodeProject.addBuildPhase(\n [],\n 'PBXResourcesBuildPhase',\n 'Resources',\n nseTarget.uuid\n );\n\n xcodeProject.addBuildPhase(\n [],\n 'PBXFrameworksBuildPhase',\n 'Frameworks',\n nseTarget.uuid\n );\n\n // Edit the Deployment info of the target\n const configurations = xcodeProject.pbxXCBuildConfigurationSection();\n for (const key in configurations) {\n if (\n typeof configurations[key].buildSettings !== 'undefined' &&\n configurations[key].buildSettings.PRODUCT_NAME ===\n `\"${CIO_NOTIFICATION_TARGET_NAME}\"`\n ) {\n const buildSettingsObj = configurations[key].buildSettings;\n buildSettingsObj.DEVELOPMENT_TEAM = appleTeamId;\n buildSettingsObj.IPHONEOS_DEPLOYMENT_TARGET =\n iosDeploymentTarget || '13.0';\n buildSettingsObj.TARGETED_DEVICE_FAMILY = TARGETED_DEVICE_FAMILY;\n buildSettingsObj.CODE_SIGN_STYLE = 'Automatic';\n buildSettingsObj.SWIFT_VERSION = 4.2;\n }\n }\n\n // Add development team to the target & the main\n xcodeProject.addTargetAttribute('DevelopmentTeam', appleTeamId, nseTarget);\n xcodeProject.addTargetAttribute('DevelopmentTeam', appleTeamId);\n};\n\nconst updateNseInfoPlist = (payload: {\n bundleVersion?: string;\n bundleShortVersion?: string;\n infoPlistTargetFile: string;\n}) => {\n const BUNDLE_SHORT_VERSION_RE = /\\{\\{BUNDLE_SHORT_VERSION\\}\\}/;\n const BUNDLE_VERSION_RE = /\\{\\{BUNDLE_VERSION\\}\\}/;\n\n let plistFileString = FileManagement.readFile(payload.infoPlistTargetFile);\n\n if (payload.bundleVersion) {\n plistFileString = replaceCodeByRegex(\n plistFileString,\n BUNDLE_VERSION_RE,\n payload.bundleVersion\n );\n }\n\n if (payload.bundleShortVersion) {\n plistFileString = replaceCodeByRegex(\n plistFileString,\n BUNDLE_SHORT_VERSION_RE,\n payload.bundleShortVersion\n );\n }\n\n FileManagement.writeFile(payload.infoPlistTargetFile, plistFileString);\n};\n\nconst updateNseEnv = (\n options: CustomerIOPluginOptionsIOS,\n envFileName: string\n) => {\n const SITE_ID_RE = /\\{\\{SITE_ID\\}\\}/;\n const API_KEY_RE = /\\{\\{API_KEY\\}\\}/;\n const REGION_RE = /\\{\\{REGION\\}\\}/;\n\n let envFileContent = FileManagement.readFile(envFileName);\n\n if (options.pushNotification?.env?.siteId) {\n envFileContent = replaceCodeByRegex(\n envFileContent,\n SITE_ID_RE,\n options.pushNotification?.env?.siteId\n );\n }\n\n if (options.pushNotification?.env?.apiKey) {\n envFileContent = replaceCodeByRegex(\n envFileContent,\n API_KEY_RE,\n options.pushNotification?.env?.apiKey\n );\n }\n\n if (options.pushNotification?.env?.region) {\n const regionMap = {\n us: 'Region.US',\n eu: 'Region.EU',\n };\n const region = options.pushNotification?.env?.region?.toLowerCase();\n const mappedRegion = (regionMap as any)[region] || '';\n if (!mappedRegion) {\n console.warn(\n `${options.pushNotification?.env?.region} is an invalid region. Please use the values from the docs: https://customer.io/docs/sdk/expo/getting-started/#configure-the-plugin`\n );\n } else {\n envFileContent = replaceCodeByRegex(\n envFileContent,\n REGION_RE,\n mappedRegion\n );\n }\n }\n\n FileManagement.writeFile(envFileName, envFileContent);\n};\n\nasync function addPushNotificationFile(\n options: CustomerIOPluginOptionsIOS,\n xcodeProject: any\n) {\n const { iosPath, appName } = options;\n const file = 'PushService.swift';\n const appPath = `${iosPath}/${appName}`;\n const getTargetFile = (filename: string) => `${appPath}/${filename}`;\n const targetFile = getTargetFile(file);\n\n // Check whether {file} exists in the project. If false, then add the file\n // If {file} exists then skip and return\n if (!FileManagement.exists(getTargetFile(file))) {\n FileManagement.mkdir(appPath, {\n recursive: true,\n });\n\n FileManagement.copyFile(\n `${LOCAL_PATH_TO_CIO_NSE_FILES}/${file}`,\n targetFile\n );\n } else {\n console.log(`${getTargetFile(file)} already exists. Skipping...`);\n return;\n }\n\n updatePushFile(options, targetFile);\n\n const group = xcodeProject.pbxCreateGroup('CustomerIONotifications');\n const classesKey = xcodeProject.findPBXGroupKey({ name: `${appName}` });\n xcodeProject.addToPbxGroup(group, classesKey);\n\n xcodeProject.addSourceFile(`${appName}/${file}`, null, group);\n}\n\nconst updatePushFile = (\n options: CustomerIOPluginOptionsIOS,\n envFileName: string\n) => {\n const REGISTER_RE = /\\{\\{REGISTER_SNIPPET\\}\\}/;\n\n let envFileContent = FileManagement.readFile(envFileName);\n\n let snippet = '';\n if (\n options.disableNotificationRegistration !== undefined &&\n options.disableNotificationRegistration === false\n ) {\n snippet = CIO_REGISTER_PUSHNOTIFICATION_SNIPPET;\n }\n\n envFileContent = replaceCodeByRegex(envFileContent, REGISTER_RE, snippet);\n\n FileManagement.writeFile(envFileName, envFileContent);\n};\n"],"mappings":"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"}
|
|
@@ -1,4 +1,6 @@
|
|
|
1
|
+
export declare const LOCAL_PATH_TO_RN_SDK: any;
|
|
1
2
|
export declare const LOCAL_PATH_TO_CIO_NSE_FILES: any;
|
|
3
|
+
export declare function getRelativePathToRNSDK(currentFile: string): any;
|
|
2
4
|
export declare const IOS_DEPLOYMENT_TARGET = "13.0";
|
|
3
5
|
export declare const GROUP_IDENTIFIER_TEMPLATE_REGEX: RegExp;
|
|
4
6
|
export declare const BUNDLE_SHORT_VERSION_TEMPLATE_REGEX: RegExp;
|
package/package.json
CHANGED
|
@@ -6,10 +6,20 @@ let pluginPackageRoot = f.next().filename;
|
|
|
6
6
|
// This is the path to the root of the customerio-expo-plugin package
|
|
7
7
|
pluginPackageRoot = path.dirname(pluginPackageRoot);
|
|
8
8
|
|
|
9
|
+
export const LOCAL_PATH_TO_RN_SDK = path.join(
|
|
10
|
+
pluginPackageRoot,
|
|
11
|
+
'../customerio-reactnative'
|
|
12
|
+
)
|
|
13
|
+
|
|
9
14
|
export const LOCAL_PATH_TO_CIO_NSE_FILES = path.join(
|
|
10
15
|
pluginPackageRoot,
|
|
11
16
|
'src/helpers/native-files/ios'
|
|
12
17
|
);
|
|
18
|
+
|
|
19
|
+
export function getRelativePathToRNSDK(currentFile: string) {
|
|
20
|
+
return path.relative(path.dirname(currentFile), LOCAL_PATH_TO_RN_SDK);
|
|
21
|
+
}
|
|
22
|
+
|
|
13
23
|
export const IOS_DEPLOYMENT_TARGET = '13.0';
|
|
14
24
|
export const GROUP_IDENTIFIER_TEMPLATE_REGEX = /{{GROUP_IDENTIFIER}}/gm;
|
|
15
25
|
export const BUNDLE_SHORT_VERSION_TEMPLATE_REGEX = /{{BUNDLE_SHORT_VERSION}}/gm;
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import type { CustomerIOPluginOptionsIOS } from '../../types/cio-types';
|
|
2
|
+
import { getRelativePathToRNSDK } from '../constants/ios';
|
|
2
3
|
import { injectCodeByRegex } from './codeInjection';
|
|
3
4
|
import { FileManagement } from './fileManagement';
|
|
4
5
|
|
|
@@ -18,7 +19,7 @@ export async function injectCIOPodfileCode(iosPath: string) {
|
|
|
18
19
|
|
|
19
20
|
const snippetToInjectInPodfile = `
|
|
20
21
|
${blockStart}
|
|
21
|
-
pod 'customerio-reactnative/apn', :path => '
|
|
22
|
+
pod 'customerio-reactnative/apn', :path => '${getRelativePathToRNSDK(filename)}'
|
|
22
23
|
${blockEnd}
|
|
23
24
|
`.trim();
|
|
24
25
|
|
|
@@ -52,7 +53,7 @@ export async function injectCIONotificationPodfileCode(
|
|
|
52
53
|
${blockStart}
|
|
53
54
|
target 'NotificationService' do
|
|
54
55
|
${useFrameworks === 'static' ? 'use_frameworks! :linkage => :static' : ''}
|
|
55
|
-
pod 'customerio-reactnative-richpush/apn', :path => '
|
|
56
|
+
pod 'customerio-reactnative-richpush/apn', :path => '${getRelativePathToRNSDK(filename)}'
|
|
56
57
|
end
|
|
57
58
|
${blockEnd}
|
|
58
59
|
`.trim();
|