customerio-expo-plugin 1.0.0-beta.1 → 1.0.0-beta.11

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.
Files changed (65) hide show
  1. package/README.md +5 -166
  2. package/lib/commonjs/android/withAndroidManifestUpdates.js +37 -0
  3. package/lib/commonjs/android/withAndroidManifestUpdates.js.map +1 -0
  4. package/lib/commonjs/android/withAppGoogleServices.js.map +1 -1
  5. package/lib/commonjs/android/withCIOAndroid.js +4 -0
  6. package/lib/commonjs/android/withCIOAndroid.js.map +1 -1
  7. package/lib/commonjs/android/withGistMavenRepository.js.map +1 -1
  8. package/lib/commonjs/android/withGoogleServicesJSON.js.map +1 -1
  9. package/lib/commonjs/android/withProjectGoogleServices.js.map +1 -1
  10. package/lib/commonjs/helpers/constants/android.js.map +1 -1
  11. package/lib/commonjs/helpers/constants/ios.js +25 -25
  12. package/lib/commonjs/helpers/constants/ios.js.map +1 -1
  13. package/lib/commonjs/helpers/native-files/ios/PushService.swift +1 -13
  14. package/lib/commonjs/helpers/utils/codeInjection.js.map +1 -1
  15. package/lib/commonjs/helpers/utils/fileManagement.js.map +1 -1
  16. package/lib/commonjs/helpers/utils/injectCIOPodfileCode.js +28 -15
  17. package/lib/commonjs/helpers/utils/injectCIOPodfileCode.js.map +1 -1
  18. package/lib/commonjs/index.js.map +1 -1
  19. package/lib/commonjs/ios/withAppDelegateModifications.js +8 -4
  20. package/lib/commonjs/ios/withAppDelegateModifications.js.map +1 -1
  21. package/lib/commonjs/ios/withCIOIos.js.map +1 -1
  22. package/lib/commonjs/ios/withNotificationsXcodeProject.js +48 -27
  23. package/lib/commonjs/ios/withNotificationsXcodeProject.js.map +1 -1
  24. package/lib/commonjs/ios/withXcodeProject.js.map +1 -1
  25. package/lib/commonjs/postInstall.js.map +1 -1
  26. package/lib/commonjs/postInstallHelper.js.map +1 -1
  27. package/lib/commonjs/types/cio-types.js.map +1 -1
  28. package/lib/module/android/withAndroidManifestUpdates.js +30 -0
  29. package/lib/module/android/withAndroidManifestUpdates.js.map +1 -0
  30. package/lib/module/android/withAppGoogleServices.js.map +1 -1
  31. package/lib/module/android/withCIOAndroid.js +4 -0
  32. package/lib/module/android/withCIOAndroid.js.map +1 -1
  33. package/lib/module/android/withGistMavenRepository.js.map +1 -1
  34. package/lib/module/android/withGoogleServicesJSON.js.map +1 -1
  35. package/lib/module/android/withProjectGoogleServices.js.map +1 -1
  36. package/lib/module/helpers/constants/ios.js +23 -16
  37. package/lib/module/helpers/constants/ios.js.map +1 -1
  38. package/lib/module/helpers/native-files/ios/PushService.swift +1 -13
  39. package/lib/module/helpers/utils/codeInjection.js.map +1 -1
  40. package/lib/module/helpers/utils/fileManagement.js.map +1 -1
  41. package/lib/module/helpers/utils/injectCIOPodfileCode.js +28 -15
  42. package/lib/module/helpers/utils/injectCIOPodfileCode.js.map +1 -1
  43. package/lib/module/index.js.map +1 -1
  44. package/lib/module/ios/withAppDelegateModifications.js +8 -4
  45. package/lib/module/ios/withAppDelegateModifications.js.map +1 -1
  46. package/lib/module/ios/withCIOIos.js.map +1 -1
  47. package/lib/module/ios/withNotificationsXcodeProject.js +49 -27
  48. package/lib/module/ios/withNotificationsXcodeProject.js.map +1 -1
  49. package/lib/module/ios/withXcodeProject.js.map +1 -1
  50. package/lib/module/postInstall.js.map +1 -1
  51. package/lib/module/postInstallHelper.js.map +1 -1
  52. package/lib/module/types/cio-types.js.map +1 -1
  53. package/lib/typescript/android/withAndroidManifestUpdates.d.ts +3 -0
  54. package/lib/typescript/helpers/constants/ios.d.ts +4 -11
  55. package/lib/typescript/ios/withAppDelegateModifications.d.ts +2 -1
  56. package/lib/typescript/types/cio-types.d.ts +2 -0
  57. package/package.json +5 -2
  58. package/src/android/withAndroidManifestUpdates.ts +49 -0
  59. package/src/android/withCIOAndroid.ts +4 -0
  60. package/src/helpers/constants/ios.ts +28 -16
  61. package/src/helpers/native-files/ios/PushService.swift +1 -13
  62. package/src/helpers/utils/injectCIOPodfileCode.ts +40 -32
  63. package/src/ios/withAppDelegateModifications.ts +14 -6
  64. package/src/ios/withNotificationsXcodeProject.ts +76 -28
  65. package/src/types/cio-types.ts +2 -0
@@ -1 +1 @@
1
- {"version":3,"names":["withCustomerIOPlugin","config","props","ios","withCIOIos","android","withCIOAndroid"],"sources":["index.ts"],"sourcesContent":["import type { ExpoConfig } from '@expo/config-types';\n\nimport { withCIOAndroid } from './android/withCIOAndroid';\nimport { withCIOIos } from './ios/withCIOIos';\nimport type { CustomerIOPluginOptions } from './types/cio-types';\n\n// Entry point for config plugin\nfunction withCustomerIOPlugin(\n config: ExpoConfig,\n props: CustomerIOPluginOptions\n) {\n if (props.ios) {\n config = withCIOIos(config, props.ios);\n }\n\n if (props.android) {\n config = withCIOAndroid(config, props.android);\n }\n\n return config;\n}\n\nexport default withCustomerIOPlugin;\n"],"mappings":";;;;;;AAEA;AACA;AAGA;AACA,SAASA,oBAAoB,CAC3BC,MAAkB,EAClBC,KAA8B,EAC9B;EACA,IAAIA,KAAK,CAACC,GAAG,EAAE;IACbF,MAAM,GAAG,IAAAG,sBAAU,EAACH,MAAM,EAAEC,KAAK,CAACC,GAAG,CAAC;EACxC;EAEA,IAAID,KAAK,CAACG,OAAO,EAAE;IACjBJ,MAAM,GAAG,IAAAK,8BAAc,EAACL,MAAM,EAAEC,KAAK,CAACG,OAAO,CAAC;EAChD;EAEA,OAAOJ,MAAM;AACf;AAAC,eAEcD,oBAAoB;AAAA"}
1
+ {"version":3,"names":["_withCIOAndroid","require","_withCIOIos","withCustomerIOPlugin","config","props","ios","withCIOIos","android","withCIOAndroid","_default","exports","default"],"sources":["index.ts"],"sourcesContent":["import type { ExpoConfig } from '@expo/config-types';\n\nimport { withCIOAndroid } from './android/withCIOAndroid';\nimport { withCIOIos } from './ios/withCIOIos';\nimport type { CustomerIOPluginOptions } from './types/cio-types';\n\n// Entry point for config plugin\nfunction withCustomerIOPlugin(\n config: ExpoConfig,\n props: CustomerIOPluginOptions\n) {\n if (props.ios) {\n config = withCIOIos(config, props.ios);\n }\n\n if (props.android) {\n config = withCIOAndroid(config, props.android);\n }\n\n return config;\n}\n\nexport default withCustomerIOPlugin;\n"],"mappings":";;;;;;AAEA,IAAAA,eAAA,GAAAC,OAAA;AACA,IAAAC,WAAA,GAAAD,OAAA;AAGA;AACA,SAASE,oBAAoBA,CAC3BC,MAAkB,EAClBC,KAA8B,EAC9B;EACA,IAAIA,KAAK,CAACC,GAAG,EAAE;IACbF,MAAM,GAAG,IAAAG,sBAAU,EAACH,MAAM,EAAEC,KAAK,CAACC,GAAG,CAAC;EACxC;EAEA,IAAID,KAAK,CAACG,OAAO,EAAE;IACjBJ,MAAM,GAAG,IAAAK,8BAAc,EAACL,MAAM,EAAEC,KAAK,CAACG,OAAO,CAAC;EAChD;EAEA,OAAOJ,MAAM;AACf;AAAC,IAAAM,QAAA,GAEcP,oBAAoB;AAAAQ,OAAA,CAAAC,OAAA,GAAAF,QAAA"}
@@ -39,7 +39,7 @@ const addDidFailToRegisterForRemoteNotificationsWithError = stringContents => {
39
39
  stringContents = (0, _codeInjection.injectCodeByMultiLineRegexAndReplaceLine)(stringContents, _ios.CIO_DIDFAILTOREGISTERFORREMOTENOTIFICATIONSWITHERROR_REGEX, _ios.CIO_DIDFAILTOREGISTERFORREMOTENOTIFICATIONSWITHERROR_SNIPPET);
40
40
  return stringContents;
41
41
  };
42
- const AddDidRegisterForRemoteNotificationsWithDeviceToken = stringContents => {
42
+ const addDidRegisterForRemoteNotificationsWithDeviceToken = stringContents => {
43
43
  stringContents = (0, _codeInjection.injectCodeByMultiLineRegexAndReplaceLine)(stringContents, _ios.CIO_DIDREGISTERFORREMOTENOTIFICATIONSWITHDEVICETOKEN_REGEX, _ios.CIO_DIDREGISTERFORREMOTENOTIFICATIONSWITHDEVICETOKEN_SNIPPET);
44
44
  return stringContents;
45
45
  };
@@ -51,7 +51,7 @@ const addAppdelegateHeaderModification = stringContents => {
51
51
  stringContents = (0, _codeInjection.injectCodeByMultiLineRegexAndReplaceLine)(stringContents, _ios.CIO_APPDELEGATEHEADER_REGEX, _ios.CIO_APPDELEGATEHEADER_SNIPPET);
52
52
  return stringContents;
53
53
  };
54
- const withAppDelegateModifications = configOuter => {
54
+ const withAppDelegateModifications = (configOuter, props) => {
55
55
  return (0, _configPlugins.withAppDelegate)(configOuter, async config => {
56
56
  let stringContents = config.modResults.contents;
57
57
  const regex = new RegExp(`#import <${config.modRequest.projectName}-Swift.h>`);
@@ -63,10 +63,14 @@ const withAppDelegateModifications = configOuter => {
63
63
  _fileManagement.FileManagement.write(headerPath, headerContent);
64
64
  stringContents = addImport(stringContents, config.modRequest.projectName);
65
65
  stringContents = addNotificationHandlerDeclaration(stringContents);
66
- stringContents = addNotificationConfiguration(stringContents);
66
+
67
+ // any other value would be treated as true, it has to be explicitly false to disable
68
+ if (props.disableNotificationRegistration !== undefined && props.disableNotificationRegistration === false) {
69
+ stringContents = addNotificationConfiguration(stringContents);
70
+ }
67
71
  stringContents = addAdditionalMethodsForPushNotifications(stringContents);
68
72
  stringContents = addDidFailToRegisterForRemoteNotificationsWithError(stringContents);
69
- stringContents = AddDidRegisterForRemoteNotificationsWithDeviceToken(stringContents);
73
+ stringContents = addDidRegisterForRemoteNotificationsWithDeviceToken(stringContents);
70
74
  config.modResults.contents = stringContents;
71
75
  } else {
72
76
  console.log('Customerio AppDelegate changes already exist. Skipping...');
@@ -1 +1 @@
1
- {"version":3,"names":["pushCodeSnippets","CIO_DIDRECEIVENOTIFICATIONRESPONSEHANDLER_SNIPPET","CIO_WILLPRESENTNOTIFICATIONHANDLER_SNIPPET","additionalMethodsForPushNotifications","join","addImport","stringContents","appName","importRegex","addedImport","getImportSnippet","match","endOfMatchIndex","index","undefined","length","injectCodeByLineNumber","addNotificationHandlerDeclaration","injectCodeByMultiLineRegex","CIO_APPDELEGATEDECLARATION_REGEX","CIO_PUSHNOTIFICATIONHANDLERDECLARATION_SNIPPET","addNotificationConfiguration","CIO_DIDFINISHLAUNCHINGMETHOD_REGEX","CIO_CONFIGURECIOSDKPUSHNOTIFICATION_SNIPPET","addDidFailToRegisterForRemoteNotificationsWithError","injectCodeByMultiLineRegexAndReplaceLine","CIO_DIDFAILTOREGISTERFORREMOTENOTIFICATIONSWITHERROR_REGEX","CIO_DIDFAILTOREGISTERFORREMOTENOTIFICATIONSWITHERROR_SNIPPET","AddDidRegisterForRemoteNotificationsWithDeviceToken","CIO_DIDREGISTERFORREMOTENOTIFICATIONSWITHDEVICETOKEN_REGEX","CIO_DIDREGISTERFORREMOTENOTIFICATIONSWITHDEVICETOKEN_SNIPPET","addAdditionalMethodsForPushNotifications","CIO_DIDFAILTOREGISTERFORREMOTENOTIFICATIONSWITHERRORFULL_REGEX","addAppdelegateHeaderModification","CIO_APPDELEGATEHEADER_REGEX","CIO_APPDELEGATEHEADER_SNIPPET","withAppDelegateModifications","configOuter","withAppDelegate","config","modResults","contents","regex","RegExp","modRequest","projectName","headerPath","getAppDelegateHeaderFilePath","projectRoot","headerContent","FileManagement","read","write","console","log"],"sources":["withAppDelegateModifications.ts"],"sourcesContent":["import { ConfigPlugin, withAppDelegate } from '@expo/config-plugins';\nimport { getAppDelegateHeaderFilePath } from '@expo/config-plugins/build/ios/Paths';\n\nimport {\n CIO_APPDELEGATEDECLARATION_REGEX,\n CIO_APPDELEGATEHEADER_REGEX,\n CIO_APPDELEGATEHEADER_SNIPPET,\n CIO_CONFIGURECIOSDKPUSHNOTIFICATION_SNIPPET,\n CIO_DIDFAILTOREGISTERFORREMOTENOTIFICATIONSWITHERRORFULL_REGEX,\n CIO_DIDFAILTOREGISTERFORREMOTENOTIFICATIONSWITHERROR_REGEX,\n CIO_DIDFAILTOREGISTERFORREMOTENOTIFICATIONSWITHERROR_SNIPPET,\n CIO_DIDFINISHLAUNCHINGMETHOD_REGEX,\n CIO_DIDRECEIVENOTIFICATIONRESPONSEHANDLER_SNIPPET,\n CIO_DIDREGISTERFORREMOTENOTIFICATIONSWITHDEVICETOKEN_REGEX,\n CIO_DIDREGISTERFORREMOTENOTIFICATIONSWITHDEVICETOKEN_SNIPPET,\n CIO_PUSHNOTIFICATIONHANDLERDECLARATION_SNIPPET,\n CIO_WILLPRESENTNOTIFICATIONHANDLER_SNIPPET,\n} from '../helpers/constants/ios';\nimport {\n injectCodeByLineNumber,\n injectCodeByMultiLineRegex,\n injectCodeByMultiLineRegexAndReplaceLine,\n} from '../helpers/utils/codeInjection';\nimport { FileManagement } from '../helpers/utils/fileManagement';\n\nconst pushCodeSnippets = [\n CIO_DIDRECEIVENOTIFICATIONRESPONSEHANDLER_SNIPPET,\n CIO_WILLPRESENTNOTIFICATIONHANDLER_SNIPPET,\n];\n\nconst additionalMethodsForPushNotifications = `${pushCodeSnippets.join(\n '\\n'\n)}\\n`; // Join newlines and ensure a newline at the end.\n\nconst addImport = (stringContents: string, appName: string) => {\n const importRegex = /^(#import .*)\\n/gm;\n const addedImport = getImportSnippet(appName);\n\n const match = stringContents.match(importRegex);\n let endOfMatchIndex: number;\n if (!match || match.index === undefined) {\n // No imports found, just add to start of file:\n endOfMatchIndex = 0;\n } else {\n // Add after first import:\n endOfMatchIndex = match.index + match[0].length;\n }\n\n stringContents = injectCodeByLineNumber(\n stringContents,\n endOfMatchIndex,\n addedImport\n ).join('\\n');\n\n return stringContents;\n};\n\nconst addNotificationHandlerDeclaration = (stringContents: string) => {\n stringContents = injectCodeByMultiLineRegex(\n stringContents,\n CIO_APPDELEGATEDECLARATION_REGEX,\n CIO_PUSHNOTIFICATIONHANDLERDECLARATION_SNIPPET\n );\n\n return stringContents;\n};\n\nconst addNotificationConfiguration = (stringContents: string) => {\n stringContents = injectCodeByMultiLineRegex(\n stringContents,\n CIO_DIDFINISHLAUNCHINGMETHOD_REGEX,\n CIO_CONFIGURECIOSDKPUSHNOTIFICATION_SNIPPET\n );\n\n return stringContents;\n};\n\nconst addDidFailToRegisterForRemoteNotificationsWithError = (\n stringContents: string\n) => {\n stringContents = injectCodeByMultiLineRegexAndReplaceLine(\n stringContents,\n CIO_DIDFAILTOREGISTERFORREMOTENOTIFICATIONSWITHERROR_REGEX,\n CIO_DIDFAILTOREGISTERFORREMOTENOTIFICATIONSWITHERROR_SNIPPET\n );\n\n return stringContents;\n};\n\nconst AddDidRegisterForRemoteNotificationsWithDeviceToken = (\n stringContents: string\n) => {\n stringContents = injectCodeByMultiLineRegexAndReplaceLine(\n stringContents,\n CIO_DIDREGISTERFORREMOTENOTIFICATIONSWITHDEVICETOKEN_REGEX,\n CIO_DIDREGISTERFORREMOTENOTIFICATIONSWITHDEVICETOKEN_SNIPPET\n );\n\n return stringContents;\n};\n\nconst addAdditionalMethodsForPushNotifications = (stringContents: string) => {\n stringContents = injectCodeByMultiLineRegex(\n stringContents,\n CIO_DIDFAILTOREGISTERFORREMOTENOTIFICATIONSWITHERRORFULL_REGEX,\n additionalMethodsForPushNotifications\n );\n\n return stringContents;\n};\n\nconst addAppdelegateHeaderModification = (stringContents: string) => {\n stringContents = injectCodeByMultiLineRegexAndReplaceLine(\n stringContents,\n CIO_APPDELEGATEHEADER_REGEX,\n CIO_APPDELEGATEHEADER_SNIPPET\n );\n\n return stringContents;\n};\n\nexport const withAppDelegateModifications: ConfigPlugin<any> = (\n configOuter\n) => {\n return withAppDelegate(configOuter, async (config) => {\n let stringContents = config.modResults.contents;\n const regex = new RegExp(\n `#import <${config.modRequest.projectName}-Swift.h>`\n );\n const match = stringContents.match(regex);\n\n if (!match) {\n const headerPath = getAppDelegateHeaderFilePath(\n config.modRequest.projectRoot\n );\n let headerContent = await FileManagement.read(headerPath);\n headerContent = addAppdelegateHeaderModification(headerContent);\n FileManagement.write(headerPath, headerContent);\n\n stringContents = addImport(\n stringContents,\n config.modRequest.projectName as string\n );\n stringContents = addNotificationHandlerDeclaration(stringContents);\n stringContents = addNotificationConfiguration(stringContents);\n stringContents = addAdditionalMethodsForPushNotifications(stringContents);\n stringContents =\n addDidFailToRegisterForRemoteNotificationsWithError(stringContents);\n stringContents =\n AddDidRegisterForRemoteNotificationsWithDeviceToken(stringContents);\n\n config.modResults.contents = stringContents;\n } else {\n console.log('Customerio AppDelegate changes already exist. Skipping...');\n }\n\n return config;\n });\n};\nfunction getImportSnippet(appName: string) {\n return `\n// Add swift bridge imports\n#import <ExpoModulesCore-Swift.h>\n#import <${appName}-Swift.h>\n `;\n}\n"],"mappings":"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"}
1
+ {"version":3,"names":["_configPlugins","require","_Paths","_ios","_codeInjection","_fileManagement","pushCodeSnippets","CIO_DIDRECEIVENOTIFICATIONRESPONSEHANDLER_SNIPPET","CIO_WILLPRESENTNOTIFICATIONHANDLER_SNIPPET","additionalMethodsForPushNotifications","join","addImport","stringContents","appName","importRegex","addedImport","getImportSnippet","match","endOfMatchIndex","index","undefined","length","injectCodeByLineNumber","addNotificationHandlerDeclaration","injectCodeByMultiLineRegex","CIO_APPDELEGATEDECLARATION_REGEX","CIO_PUSHNOTIFICATIONHANDLERDECLARATION_SNIPPET","addNotificationConfiguration","CIO_DIDFINISHLAUNCHINGMETHOD_REGEX","CIO_CONFIGURECIOSDKPUSHNOTIFICATION_SNIPPET","addDidFailToRegisterForRemoteNotificationsWithError","injectCodeByMultiLineRegexAndReplaceLine","CIO_DIDFAILTOREGISTERFORREMOTENOTIFICATIONSWITHERROR_REGEX","CIO_DIDFAILTOREGISTERFORREMOTENOTIFICATIONSWITHERROR_SNIPPET","addDidRegisterForRemoteNotificationsWithDeviceToken","CIO_DIDREGISTERFORREMOTENOTIFICATIONSWITHDEVICETOKEN_REGEX","CIO_DIDREGISTERFORREMOTENOTIFICATIONSWITHDEVICETOKEN_SNIPPET","addAdditionalMethodsForPushNotifications","CIO_DIDFAILTOREGISTERFORREMOTENOTIFICATIONSWITHERRORFULL_REGEX","addAppdelegateHeaderModification","CIO_APPDELEGATEHEADER_REGEX","CIO_APPDELEGATEHEADER_SNIPPET","withAppDelegateModifications","configOuter","props","withAppDelegate","config","modResults","contents","regex","RegExp","modRequest","projectName","headerPath","getAppDelegateHeaderFilePath","projectRoot","headerContent","FileManagement","read","write","disableNotificationRegistration","console","log","exports"],"sources":["withAppDelegateModifications.ts"],"sourcesContent":["import { ConfigPlugin, withAppDelegate } from '@expo/config-plugins';\nimport { getAppDelegateHeaderFilePath } from '@expo/config-plugins/build/ios/Paths';\n\nimport {\n CIO_APPDELEGATEDECLARATION_REGEX,\n CIO_APPDELEGATEHEADER_REGEX,\n CIO_APPDELEGATEHEADER_SNIPPET,\n CIO_CONFIGURECIOSDKPUSHNOTIFICATION_SNIPPET,\n CIO_DIDFAILTOREGISTERFORREMOTENOTIFICATIONSWITHERRORFULL_REGEX,\n CIO_DIDFAILTOREGISTERFORREMOTENOTIFICATIONSWITHERROR_REGEX,\n CIO_DIDFAILTOREGISTERFORREMOTENOTIFICATIONSWITHERROR_SNIPPET,\n CIO_DIDFINISHLAUNCHINGMETHOD_REGEX,\n CIO_DIDRECEIVENOTIFICATIONRESPONSEHANDLER_SNIPPET,\n CIO_DIDREGISTERFORREMOTENOTIFICATIONSWITHDEVICETOKEN_REGEX,\n CIO_DIDREGISTERFORREMOTENOTIFICATIONSWITHDEVICETOKEN_SNIPPET,\n CIO_PUSHNOTIFICATIONHANDLERDECLARATION_SNIPPET,\n CIO_WILLPRESENTNOTIFICATIONHANDLER_SNIPPET,\n} from '../helpers/constants/ios';\nimport {\n injectCodeByLineNumber,\n injectCodeByMultiLineRegex,\n injectCodeByMultiLineRegexAndReplaceLine,\n} from '../helpers/utils/codeInjection';\nimport { FileManagement } from '../helpers/utils/fileManagement';\nimport type { CustomerIOPluginOptionsIOS } from '../types/cio-types';\n\nconst pushCodeSnippets = [\n CIO_DIDRECEIVENOTIFICATIONRESPONSEHANDLER_SNIPPET,\n CIO_WILLPRESENTNOTIFICATIONHANDLER_SNIPPET,\n];\n\nconst additionalMethodsForPushNotifications = `${pushCodeSnippets.join(\n '\\n'\n)}\\n`; // Join newlines and ensure a newline at the end.\n\nconst addImport = (stringContents: string, appName: string) => {\n const importRegex = /^(#import .*)\\n/gm;\n const addedImport = getImportSnippet(appName);\n\n const match = stringContents.match(importRegex);\n let endOfMatchIndex: number;\n if (!match || match.index === undefined) {\n // No imports found, just add to start of file:\n endOfMatchIndex = 0;\n } else {\n // Add after first import:\n endOfMatchIndex = match.index + match[0].length;\n }\n\n stringContents = injectCodeByLineNumber(\n stringContents,\n endOfMatchIndex,\n addedImport\n ).join('\\n');\n\n return stringContents;\n};\n\nconst addNotificationHandlerDeclaration = (stringContents: string) => {\n stringContents = injectCodeByMultiLineRegex(\n stringContents,\n CIO_APPDELEGATEDECLARATION_REGEX,\n CIO_PUSHNOTIFICATIONHANDLERDECLARATION_SNIPPET\n );\n\n return stringContents;\n};\n\nconst addNotificationConfiguration = (stringContents: string) => {\n stringContents = injectCodeByMultiLineRegex(\n stringContents,\n CIO_DIDFINISHLAUNCHINGMETHOD_REGEX,\n CIO_CONFIGURECIOSDKPUSHNOTIFICATION_SNIPPET\n );\n\n return stringContents;\n};\n\nconst addDidFailToRegisterForRemoteNotificationsWithError = (\n stringContents: string\n) => {\n stringContents = injectCodeByMultiLineRegexAndReplaceLine(\n stringContents,\n CIO_DIDFAILTOREGISTERFORREMOTENOTIFICATIONSWITHERROR_REGEX,\n CIO_DIDFAILTOREGISTERFORREMOTENOTIFICATIONSWITHERROR_SNIPPET\n );\n\n return stringContents;\n};\n\nconst addDidRegisterForRemoteNotificationsWithDeviceToken = (\n stringContents: string\n) => {\n stringContents = injectCodeByMultiLineRegexAndReplaceLine(\n stringContents,\n CIO_DIDREGISTERFORREMOTENOTIFICATIONSWITHDEVICETOKEN_REGEX,\n CIO_DIDREGISTERFORREMOTENOTIFICATIONSWITHDEVICETOKEN_SNIPPET\n );\n\n return stringContents;\n};\n\nconst addAdditionalMethodsForPushNotifications = (stringContents: string) => {\n stringContents = injectCodeByMultiLineRegex(\n stringContents,\n CIO_DIDFAILTOREGISTERFORREMOTENOTIFICATIONSWITHERRORFULL_REGEX,\n additionalMethodsForPushNotifications\n );\n\n return stringContents;\n};\n\nconst addAppdelegateHeaderModification = (stringContents: string) => {\n stringContents = injectCodeByMultiLineRegexAndReplaceLine(\n stringContents,\n CIO_APPDELEGATEHEADER_REGEX,\n CIO_APPDELEGATEHEADER_SNIPPET\n );\n\n return stringContents;\n};\n\nexport const withAppDelegateModifications: ConfigPlugin<\n CustomerIOPluginOptionsIOS\n> = (configOuter, props) => {\n return withAppDelegate(configOuter, async (config) => {\n let stringContents = config.modResults.contents;\n const regex = new RegExp(\n `#import <${config.modRequest.projectName}-Swift.h>`\n );\n const match = stringContents.match(regex);\n\n if (!match) {\n const headerPath = getAppDelegateHeaderFilePath(\n config.modRequest.projectRoot\n );\n let headerContent = await FileManagement.read(headerPath);\n headerContent = addAppdelegateHeaderModification(headerContent);\n FileManagement.write(headerPath, headerContent);\n\n stringContents = addImport(\n stringContents,\n config.modRequest.projectName as string\n );\n stringContents = addNotificationHandlerDeclaration(stringContents);\n\n // any other value would be treated as true, it has to be explicitly false to disable\n if (\n props.disableNotificationRegistration !== undefined &&\n props.disableNotificationRegistration === false\n ) {\n stringContents = addNotificationConfiguration(stringContents);\n }\n stringContents = addAdditionalMethodsForPushNotifications(stringContents);\n stringContents =\n addDidFailToRegisterForRemoteNotificationsWithError(stringContents);\n stringContents =\n addDidRegisterForRemoteNotificationsWithDeviceToken(stringContents);\n\n config.modResults.contents = stringContents;\n } else {\n console.log('Customerio AppDelegate changes already exist. Skipping...');\n }\n\n return config;\n });\n};\nfunction getImportSnippet(appName: string) {\n return `\n// Add swift bridge imports\n#import <ExpoModulesCore-Swift.h>\n#import <${appName}-Swift.h>\n `;\n}\n"],"mappings":";;;;;;AAAA,IAAAA,cAAA,GAAAC,OAAA;AACA,IAAAC,MAAA,GAAAD,OAAA;AAEA,IAAAE,IAAA,GAAAF,OAAA;AAeA,IAAAG,cAAA,GAAAH,OAAA;AAKA,IAAAI,eAAA,GAAAJ,OAAA;AAGA,MAAMK,gBAAgB,GAAG,CACvBC,sDAAiD,EACjDC,+CAA0C,CAC3C;AAED,MAAMC,qCAAqC,GAAI,GAAEH,gBAAgB,CAACI,IAAI,CACpE,IACF,CAAE,IAAG,CAAC,CAAC;;AAEP,MAAMC,SAAS,GAAGA,CAACC,cAAsB,EAAEC,OAAe,KAAK;EAC7D,MAAMC,WAAW,GAAG,mBAAmB;EACvC,MAAMC,WAAW,GAAGC,gBAAgB,CAACH,OAAO,CAAC;EAE7C,MAAMI,KAAK,GAAGL,cAAc,CAACK,KAAK,CAACH,WAAW,CAAC;EAC/C,IAAII,eAAuB;EAC3B,IAAI,CAACD,KAAK,IAAIA,KAAK,CAACE,KAAK,KAAKC,SAAS,EAAE;IACvC;IACAF,eAAe,GAAG,CAAC;EACrB,CAAC,MAAM;IACL;IACAA,eAAe,GAAGD,KAAK,CAACE,KAAK,GAAGF,KAAK,CAAC,CAAC,CAAC,CAACI,MAAM;EACjD;EAEAT,cAAc,GAAG,IAAAU,qCAAsB,EACrCV,cAAc,EACdM,eAAe,EACfH,WACF,CAAC,CAACL,IAAI,CAAC,IAAI,CAAC;EAEZ,OAAOE,cAAc;AACvB,CAAC;AAED,MAAMW,iCAAiC,GAAIX,cAAsB,IAAK;EACpEA,cAAc,GAAG,IAAAY,yCAA0B,EACzCZ,cAAc,EACda,qCAAgC,EAChCC,mDACF,CAAC;EAED,OAAOd,cAAc;AACvB,CAAC;AAED,MAAMe,4BAA4B,GAAIf,cAAsB,IAAK;EAC/DA,cAAc,GAAG,IAAAY,yCAA0B,EACzCZ,cAAc,EACdgB,uCAAkC,EAClCC,gDACF,CAAC;EAED,OAAOjB,cAAc;AACvB,CAAC;AAED,MAAMkB,mDAAmD,GACvDlB,cAAsB,IACnB;EACHA,cAAc,GAAG,IAAAmB,uDAAwC,EACvDnB,cAAc,EACdoB,+DAA0D,EAC1DC,iEACF,CAAC;EAED,OAAOrB,cAAc;AACvB,CAAC;AAED,MAAMsB,mDAAmD,GACvDtB,cAAsB,IACnB;EACHA,cAAc,GAAG,IAAAmB,uDAAwC,EACvDnB,cAAc,EACduB,+DAA0D,EAC1DC,iEACF,CAAC;EAED,OAAOxB,cAAc;AACvB,CAAC;AAED,MAAMyB,wCAAwC,GAAIzB,cAAsB,IAAK;EAC3EA,cAAc,GAAG,IAAAY,yCAA0B,EACzCZ,cAAc,EACd0B,mEAA8D,EAC9D7B,qCACF,CAAC;EAED,OAAOG,cAAc;AACvB,CAAC;AAED,MAAM2B,gCAAgC,GAAI3B,cAAsB,IAAK;EACnEA,cAAc,GAAG,IAAAmB,uDAAwC,EACvDnB,cAAc,EACd4B,gCAA2B,EAC3BC,kCACF,CAAC;EAED,OAAO7B,cAAc;AACvB,CAAC;AAEM,MAAM8B,4BAEZ,GAAGA,CAACC,WAAW,EAAEC,KAAK,KAAK;EAC1B,OAAO,IAAAC,8BAAe,EAACF,WAAW,EAAE,MAAOG,MAAM,IAAK;IACpD,IAAIlC,cAAc,GAAGkC,MAAM,CAACC,UAAU,CAACC,QAAQ;IAC/C,MAAMC,KAAK,GAAG,IAAIC,MAAM,CACrB,YAAWJ,MAAM,CAACK,UAAU,CAACC,WAAY,WAC5C,CAAC;IACD,MAAMnC,KAAK,GAAGL,cAAc,CAACK,KAAK,CAACgC,KAAK,CAAC;IAEzC,IAAI,CAAChC,KAAK,EAAE;MACV,MAAMoC,UAAU,GAAG,IAAAC,mCAA4B,EAC7CR,MAAM,CAACK,UAAU,CAACI,WACpB,CAAC;MACD,IAAIC,aAAa,GAAG,MAAMC,8BAAc,CAACC,IAAI,CAACL,UAAU,CAAC;MACzDG,aAAa,GAAGjB,gCAAgC,CAACiB,aAAa,CAAC;MAC/DC,8BAAc,CAACE,KAAK,CAACN,UAAU,EAAEG,aAAa,CAAC;MAE/C5C,cAAc,GAAGD,SAAS,CACxBC,cAAc,EACdkC,MAAM,CAACK,UAAU,CAACC,WACpB,CAAC;MACDxC,cAAc,GAAGW,iCAAiC,CAACX,cAAc,CAAC;;MAElE;MACA,IACEgC,KAAK,CAACgB,+BAA+B,KAAKxC,SAAS,IACnDwB,KAAK,CAACgB,+BAA+B,KAAK,KAAK,EAC/C;QACAhD,cAAc,GAAGe,4BAA4B,CAACf,cAAc,CAAC;MAC/D;MACAA,cAAc,GAAGyB,wCAAwC,CAACzB,cAAc,CAAC;MACzEA,cAAc,GACZkB,mDAAmD,CAAClB,cAAc,CAAC;MACrEA,cAAc,GACZsB,mDAAmD,CAACtB,cAAc,CAAC;MAErEkC,MAAM,CAACC,UAAU,CAACC,QAAQ,GAAGpC,cAAc;IAC7C,CAAC,MAAM;MACLiD,OAAO,CAACC,GAAG,CAAC,2DAA2D,CAAC;IAC1E;IAEA,OAAOhB,MAAM;EACf,CAAC,CAAC;AACJ,CAAC;AAACiB,OAAA,CAAArB,4BAAA,GAAAA,4BAAA;AACF,SAAS1B,gBAAgBA,CAACH,OAAe,EAAE;EACzC,OAAQ;AACV;AACA;AACA,WAAWA,OAAQ;AACnB,GAAG;AACH"}
@@ -1 +1 @@
1
- {"version":3,"names":["withCIOIos","config","props","pushNotification","withAppDelegateModifications","withCioNotificationsXcodeProject","withCioXcodeProject"],"sources":["withCIOIos.ts"],"sourcesContent":["import type { ExpoConfig } from '@expo/config-types';\n\nimport type { CustomerIOPluginOptionsIOS } from '../types/cio-types';\nimport { withAppDelegateModifications } from './withAppDelegateModifications';\nimport { withCioNotificationsXcodeProject } from './withNotificationsXcodeProject';\nimport { withCioXcodeProject } from './withXcodeProject';\n\nexport function withCIOIos(\n config: ExpoConfig,\n props: CustomerIOPluginOptionsIOS\n) {\n if (props.pushNotification) {\n config = withAppDelegateModifications(config, props);\n config = withCioNotificationsXcodeProject(config, props);\n config = withCioXcodeProject(config, props);\n }\n\n return config;\n}\n"],"mappings":";;;;;;AAGA;AACA;AACA;AAEO,SAASA,UAAU,CACxBC,MAAkB,EAClBC,KAAiC,EACjC;EACA,IAAIA,KAAK,CAACC,gBAAgB,EAAE;IAC1BF,MAAM,GAAG,IAAAG,0DAA4B,EAACH,MAAM,EAAEC,KAAK,CAAC;IACpDD,MAAM,GAAG,IAAAI,+DAAgC,EAACJ,MAAM,EAAEC,KAAK,CAAC;IACxDD,MAAM,GAAG,IAAAK,qCAAmB,EAACL,MAAM,EAAEC,KAAK,CAAC;EAC7C;EAEA,OAAOD,MAAM;AACf"}
1
+ {"version":3,"names":["_withAppDelegateModifications","require","_withNotificationsXcodeProject","_withXcodeProject","withCIOIos","config","props","pushNotification","withAppDelegateModifications","withCioNotificationsXcodeProject","withCioXcodeProject"],"sources":["withCIOIos.ts"],"sourcesContent":["import type { ExpoConfig } from '@expo/config-types';\n\nimport type { CustomerIOPluginOptionsIOS } from '../types/cio-types';\nimport { withAppDelegateModifications } from './withAppDelegateModifications';\nimport { withCioNotificationsXcodeProject } from './withNotificationsXcodeProject';\nimport { withCioXcodeProject } from './withXcodeProject';\n\nexport function withCIOIos(\n config: ExpoConfig,\n props: CustomerIOPluginOptionsIOS\n) {\n if (props.pushNotification) {\n config = withAppDelegateModifications(config, props);\n config = withCioNotificationsXcodeProject(config, props);\n config = withCioXcodeProject(config, props);\n }\n\n return config;\n}\n"],"mappings":";;;;;;AAGA,IAAAA,6BAAA,GAAAC,OAAA;AACA,IAAAC,8BAAA,GAAAD,OAAA;AACA,IAAAE,iBAAA,GAAAF,OAAA;AAEO,SAASG,UAAUA,CACxBC,MAAkB,EAClBC,KAAiC,EACjC;EACA,IAAIA,KAAK,CAACC,gBAAgB,EAAE;IAC1BF,MAAM,GAAG,IAAAG,0DAA4B,EAACH,MAAM,EAAEC,KAAK,CAAC;IACpDD,MAAM,GAAG,IAAAI,+DAAgC,EAACJ,MAAM,EAAEC,KAAK,CAAC;IACxDD,MAAM,GAAG,IAAAK,qCAAmB,EAACL,MAAM,EAAEC,KAAK,CAAC;EAC7C;EAEA,OAAOD,MAAM;AACf"}
@@ -5,37 +5,27 @@ Object.defineProperty(exports, "__esModule", {
5
5
  });
6
6
  exports.withCioNotificationsXcodeProject = void 0;
7
7
  var _configPlugins = require("@expo/config-plugins");
8
- var _xcode = _interopRequireDefault(require("xcode"));
9
8
  var _ios = require("../helpers/constants/ios");
10
9
  var _codeInjection = require("../helpers/utils/codeInjection");
11
10
  var _injectCIOPodfileCode = require("../helpers/utils/injectCIOPodfileCode");
12
11
  var _fileManagement = require("./../helpers/utils/fileManagement");
13
- function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
14
12
  const PLIST_FILENAME = `${_ios.CIO_NOTIFICATION_TARGET_NAME}-Info.plist`;
15
13
  const ENV_FILENAME = 'Env.swift';
16
14
  const TARGETED_DEVICE_FAMILY = `"1,2"`;
17
- const addNotificationServiceExtension = async options => {
18
- // iosPath and appName are predefined from Expo config.
19
- // See function withCioNotificationsXcodeProject to get where the variabes are pulled from.
20
- const {
21
- iosPath,
22
- appName
23
- } = options;
24
- const projPath = `${iosPath}/${appName}.xcodeproj/project.pbxproj`;
25
- const xcodeProject = _xcode.default.project(projPath);
26
- xcodeProject.parse(async function (err) {
15
+ const addNotificationServiceExtension = async (options, xcodeProject) => {
16
+ try {
27
17
  var _options$pushNotifica;
28
- if (err) {
29
- throw new Error(`Error parsing iOS project: ${JSON.stringify(err)}`);
30
- }
31
18
  if (options.pushNotification) {
32
19
  await addPushNotificationFile(options, xcodeProject);
33
20
  }
34
21
  if ((_options$pushNotifica = options.pushNotification) !== null && _options$pushNotifica !== void 0 && _options$pushNotifica.useRichPush) {
35
22
  await addRichPushXcodeProj(options, xcodeProject);
36
23
  }
37
- _fileManagement.FileManagement.writeFile(projPath, xcodeProject.writeSync());
38
- });
24
+ return xcodeProject;
25
+ } catch (error) {
26
+ console.error(error);
27
+ return null;
28
+ }
39
29
  };
40
30
  const withCioNotificationsXcodeProject = (configOuter, props) => {
41
31
  return (0, _configPlugins.withXcodeProject)(configOuter, async config => {
@@ -71,6 +61,7 @@ const withCioNotificationsXcodeProject = (configOuter, props) => {
71
61
  throw new Error('Adding NotificationServiceExtension failed: name missing from app.config.js or app.json');
72
62
  }
73
63
  const options = {
64
+ ...props,
74
65
  appleTeamId,
75
66
  bundleIdentifier,
76
67
  bundleShortVersion,
@@ -81,7 +72,10 @@ const withCioNotificationsXcodeProject = (configOuter, props) => {
81
72
  iosDeploymentTarget,
82
73
  pushNotification
83
74
  };
84
- await addNotificationServiceExtension(options);
75
+ const modifiedProjectFile = await addNotificationServiceExtension(options, config.modResults);
76
+ if (modifiedProjectFile) {
77
+ config.modResults = modifiedProjectFile;
78
+ }
85
79
  return config;
86
80
  });
87
81
  };
@@ -97,6 +91,13 @@ const addRichPushXcodeProj = async (options, xcodeProject) => {
97
91
  useFrameworks
98
92
  } = options;
99
93
  await (0, _injectCIOPodfileCode.injectCIONotificationPodfileCode)(iosPath, useFrameworks);
94
+
95
+ // Check if `CIO_NOTIFICATION_TARGET_NAME` group already exist in the project
96
+ // If true then skip creating a new group to avoid duplicate folders
97
+ if (xcodeProject.pbxTargetByName(_ios.CIO_NOTIFICATION_TARGET_NAME)) {
98
+ console.warn(`${_ios.CIO_NOTIFICATION_TARGET_NAME} already exists in project. Skipping...`);
99
+ return;
100
+ }
100
101
  const nsePath = `${iosPath}/${_ios.CIO_NOTIFICATION_TARGET_NAME}`;
101
102
  _fileManagement.FileManagement.mkdir(nsePath, {
102
103
  recursive: true
@@ -124,7 +125,7 @@ const addRichPushXcodeProj = async (options, xcodeProject) => {
124
125
  // files / folder appear in the file explorer in Xcode.
125
126
  const groups = xcodeProject.hash.project.objects['PBXGroup'];
126
127
  Object.keys(groups).forEach(key => {
127
- if (groups[key].name === undefined) {
128
+ if (groups[key].name === undefined && groups[key].path === undefined) {
128
129
  xcodeProject.addToPbxGroup(extGroup.uuid, key);
129
130
  }
130
131
  });
@@ -194,14 +195,19 @@ const updateNseEnv = (options, envFileName) => {
194
195
  envFileContent = (0, _codeInjection.replaceCodeByRegex)(envFileContent, API_KEY_RE, (_options$pushNotifica8 = options.pushNotification) === null || _options$pushNotifica8 === void 0 ? void 0 : (_options$pushNotifica9 = _options$pushNotifica8.env) === null || _options$pushNotifica9 === void 0 ? void 0 : _options$pushNotifica9.apiKey);
195
196
  }
196
197
  if ((_options$pushNotifica10 = options.pushNotification) !== null && _options$pushNotifica10 !== void 0 && (_options$pushNotifica11 = _options$pushNotifica10.env) !== null && _options$pushNotifica11 !== void 0 && _options$pushNotifica11.region) {
197
- var _options$pushNotifica12, _options$pushNotifica13, _options$pushNotifica14, _options$pushNotifica15;
198
- let region = '';
199
- if (((_options$pushNotifica12 = options.pushNotification) === null || _options$pushNotifica12 === void 0 ? void 0 : (_options$pushNotifica13 = _options$pushNotifica12.env) === null || _options$pushNotifica13 === void 0 ? void 0 : _options$pushNotifica13.region) === 'us') {
200
- region = 'Region.US';
201
- } else if (((_options$pushNotifica14 = options.pushNotification) === null || _options$pushNotifica14 === void 0 ? void 0 : (_options$pushNotifica15 = _options$pushNotifica14.env) === null || _options$pushNotifica15 === void 0 ? void 0 : _options$pushNotifica15.region) === 'eu') {
202
- region = 'Region.EU';
198
+ var _options$pushNotifica12, _options$pushNotifica13, _options$pushNotifica14;
199
+ const regionMap = {
200
+ us: 'Region.US',
201
+ eu: 'Region.EU'
202
+ };
203
+ const region = (_options$pushNotifica12 = options.pushNotification) === null || _options$pushNotifica12 === void 0 ? void 0 : (_options$pushNotifica13 = _options$pushNotifica12.env) === null || _options$pushNotifica13 === void 0 ? void 0 : (_options$pushNotifica14 = _options$pushNotifica13.region) === null || _options$pushNotifica14 === void 0 ? void 0 : _options$pushNotifica14.toLowerCase();
204
+ const mappedRegion = regionMap[region] || '';
205
+ if (!mappedRegion) {
206
+ var _options$pushNotifica15, _options$pushNotifica16;
207
+ console.warn(`${(_options$pushNotifica15 = options.pushNotification) === null || _options$pushNotifica15 === void 0 ? void 0 : (_options$pushNotifica16 = _options$pushNotifica15.env) === null || _options$pushNotifica16 === void 0 ? void 0 : _options$pushNotifica16.region} is an invalid region. Please use the values from the docs: https://customer.io/docs/sdk/expo/getting-started/#configure-the-plugin`);
208
+ } else {
209
+ envFileContent = (0, _codeInjection.replaceCodeByRegex)(envFileContent, REGION_RE, mappedRegion);
203
210
  }
204
- envFileContent = (0, _codeInjection.replaceCodeByRegex)(envFileContent, REGION_RE, region);
205
211
  }
206
212
  _fileManagement.FileManagement.writeFile(envFileName, envFileContent);
207
213
  };
@@ -213,15 +219,20 @@ async function addPushNotificationFile(options, xcodeProject) {
213
219
  const file = 'PushService.swift';
214
220
  const appPath = `${iosPath}/${appName}`;
215
221
  const getTargetFile = filename => `${appPath}/${filename}`;
222
+ const targetFile = getTargetFile(file);
223
+
224
+ // Check whether {file} exists in the project. If false, then add the file
225
+ // If {file} exists then skip and return
216
226
  if (!_fileManagement.FileManagement.exists(getTargetFile(file))) {
217
227
  _fileManagement.FileManagement.mkdir(appPath, {
218
228
  recursive: true
219
229
  });
220
- const targetFile = getTargetFile(file);
221
230
  _fileManagement.FileManagement.copyFile(`${_ios.LOCAL_PATH_TO_CIO_NSE_FILES}/${file}`, targetFile);
222
231
  } else {
223
232
  console.log(`${getTargetFile(file)} already exists. Skipping...`);
233
+ return;
224
234
  }
235
+ updatePushFile(options, targetFile);
225
236
  const group = xcodeProject.pbxCreateGroup('CustomerIONotifications');
226
237
  const classesKey = xcodeProject.findPBXGroupKey({
227
238
  name: `${appName}`
@@ -229,4 +240,14 @@ async function addPushNotificationFile(options, xcodeProject) {
229
240
  xcodeProject.addToPbxGroup(group, classesKey);
230
241
  xcodeProject.addSourceFile(`${appName}/${file}`, null, group);
231
242
  }
243
+ const updatePushFile = (options, envFileName) => {
244
+ const REGISTER_RE = /\{\{REGISTER_SNIPPET\}\}/;
245
+ let envFileContent = _fileManagement.FileManagement.readFile(envFileName);
246
+ let snippet = '';
247
+ if (options.disableNotificationRegistration !== undefined && options.disableNotificationRegistration === false) {
248
+ snippet = _ios.CIO_REGISTER_PUSHNOTIFICATION_SNIPPET;
249
+ }
250
+ envFileContent = (0, _codeInjection.replaceCodeByRegex)(envFileContent, REGISTER_RE, snippet);
251
+ _fileManagement.FileManagement.writeFile(envFileName, envFileContent);
252
+ };
232
253
  //# sourceMappingURL=withNotificationsXcodeProject.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["PLIST_FILENAME","CIO_NOTIFICATION_TARGET_NAME","ENV_FILENAME","TARGETED_DEVICE_FAMILY","addNotificationServiceExtension","options","iosPath","appName","projPath","xcodeProject","xcode","project","parse","err","Error","JSON","stringify","pushNotification","addPushNotificationFile","useRichPush","addRichPushXcodeProj","FileManagement","writeFile","writeSync","withCioNotificationsXcodeProject","configOuter","props","withXcodeProject","config","modRequest","ios","version","bundleShortVersion","appleTeamId","iosDeploymentTarget","useFrameworks","undefined","projectName","platformProjectRoot","bundleIdentifier","buildNumber","bundleVersion","DEFAULT_BUNDLE_VERSION","injectCIONotificationPodfileCode","nsePath","mkdir","recursive","files","getTargetFile","filename","forEach","targetFile","copyFile","LOCAL_PATH_TO_CIO_NSE_FILES","infoPlistTargetFile","updateNseInfoPlist","updateNseEnv","extGroup","addPbxGroup","groups","hash","objects","Object","keys","key","name","addToPbxGroup","uuid","projObjects","pbxTargetByName","console","warn","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","envFileName","SITE_ID_RE","API_KEY_RE","REGION_RE","envFileContent","env","siteId","apiKey","region","file","appPath","exists","log","group","pbxCreateGroup","classesKey","findPBXGroupKey","addSourceFile"],"sources":["withNotificationsXcodeProject.ts"],"sourcesContent":["import { ConfigPlugin, withXcodeProject } from '@expo/config-plugins';\nimport xcode from 'xcode';\n\nimport {\n CIO_NOTIFICATION_TARGET_NAME,\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) => {\n // iosPath and appName are predefined from Expo config.\n // See function withCioNotificationsXcodeProject to get where the variabes are pulled from.\n const { iosPath, appName } = options;\n\n const projPath = `${iosPath}/${appName}.xcodeproj/project.pbxproj`;\n\n const xcodeProject = xcode.project(projPath);\n\n xcodeProject.parse(async function (err: Error) {\n if (err) {\n throw new Error(`Error parsing iOS project: ${JSON.stringify(err)}`);\n }\n\n if (options.pushNotification) {\n await addPushNotificationFile(options, xcodeProject);\n }\n\n if (options.pushNotification?.useRichPush) {\n await addRichPushXcodeProj(options, xcodeProject);\n }\n\n FileManagement.writeFile(projPath, xcodeProject.writeSync());\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 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 await addNotificationServiceExtension(options);\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 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) {\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 let region = '';\n if (options.pushNotification?.env?.region === 'us') {\n region = 'Region.US';\n } else if (options.pushNotification?.env?.region === 'eu') {\n region = 'Region.EU';\n }\n envFileContent = replaceCodeByRegex(envFileContent, REGION_RE, region);\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\n if (!FileManagement.exists(getTargetFile(file))) {\n FileManagement.mkdir(appPath, {\n recursive: true,\n });\n\n const targetFile = getTargetFile(file);\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 }\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"],"mappings":";;;;;;AAAA;AACA;AAEA;AAKA;AACA;AAEA;AAAmE;AAEnE,MAAMA,cAAc,GAAI,GAAEC,iCAA6B,aAAY;AACnE,MAAMC,YAAY,GAAG,WAAW;AAEhC,MAAMC,sBAAsB,GAAI,OAAM;AAEtC,MAAMC,+BAA+B,GAAG,MACtCC,OAAmC,IAChC;EACH;EACA;EACA,MAAM;IAAEC,OAAO;IAAEC;EAAQ,CAAC,GAAGF,OAAO;EAEpC,MAAMG,QAAQ,GAAI,GAAEF,OAAQ,IAAGC,OAAQ,4BAA2B;EAElE,MAAME,YAAY,GAAGC,cAAK,CAACC,OAAO,CAACH,QAAQ,CAAC;EAE5CC,YAAY,CAACG,KAAK,CAAC,gBAAgBC,GAAU,EAAE;IAAA;IAC7C,IAAIA,GAAG,EAAE;MACP,MAAM,IAAIC,KAAK,CAAE,8BAA6BC,IAAI,CAACC,SAAS,CAACH,GAAG,CAAE,EAAC,CAAC;IACtE;IAEA,IAAIR,OAAO,CAACY,gBAAgB,EAAE;MAC5B,MAAMC,uBAAuB,CAACb,OAAO,EAAEI,YAAY,CAAC;IACtD;IAEA,6BAAIJ,OAAO,CAACY,gBAAgB,kDAAxB,sBAA0BE,WAAW,EAAE;MACzC,MAAMC,oBAAoB,CAACf,OAAO,EAAEI,YAAY,CAAC;IACnD;IAEAY,8BAAc,CAACC,SAAS,CAACd,QAAQ,EAAEC,YAAY,CAACc,SAAS,EAAE,CAAC;EAC9D,CAAC,CAAC;AACJ,CAAC;AAEM,MAAMC,gCAEZ,GAAG,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;MACnBjB,gBAAgB;MAChBkB;IACF,CAAC,GAAGT,KAAK;IAET,IAAII,GAAG,KAAKM,SAAS,EACnB,MAAM,IAAItB,KAAK,CACb,gGAAgG,CACjG;;IAEH;IACA,MAAM;MAAEuB,WAAW;MAAEC;IAAoB,CAAC,GAAGT,UAAU;IACvD,MAAM;MAAEU,gBAAgB;MAAEC;IAAY,CAAC,GAAGV,GAAG;IAE7C,IAAIE,kBAAkB,KAAKI,SAAS,EAAE;MACpC,MAAM,IAAItB,KAAK,CACb,4FAA4F,CAC7F;IACH;IAEA,IAAIyB,gBAAgB,KAAKH,SAAS,EAAE;MAClC,MAAM,IAAItB,KAAK,CACb,yGAAyG,CAC1G;IACH;IAEA,IAAIuB,WAAW,KAAKD,SAAS,EAAE;MAC7B,MAAM,IAAItB,KAAK,CACb,yFAAyF,CAC1F;IACH;IAEA,MAAMT,OAAO,GAAG;MACd4B,WAAW;MACXM,gBAAgB;MAChBP,kBAAkB;MAClBS,aAAa,EAAED,WAAW,IAAIE,2BAAsB;MACpDpC,OAAO,EAAEgC,mBAAmB;MAC5B/B,OAAO,EAAE8B,WAAW;MACpBF,aAAa;MACbD,mBAAmB;MACnBjB;IACF,CAAC;IAED,MAAMb,+BAA+B,CAACC,OAAO,CAAC;IAE9C,OAAOuB,MAAM;EACf,CAAC,CAAC;AACJ,CAAC;AAAC;AAEF,MAAMR,oBAAoB,GAAG,OAC3Bf,OAAmC,EACnCI,YAAiB,KACd;EACH,MAAM;IACJwB,WAAW;IACXM,gBAAgB;IAChBP,kBAAkB;IAClBS,aAAa;IACbnC,OAAO;IACP4B,mBAAmB;IACnBC;EACF,CAAC,GAAG9B,OAAO;EAEX,MAAM,IAAAsC,sDAAgC,EAACrC,OAAO,EAAE6B,aAAa,CAAC;EAE9D,MAAMS,OAAO,GAAI,GAAEtC,OAAQ,IAAGL,iCAA6B,EAAC;EAC5DoB,8BAAc,CAACwB,KAAK,CAACD,OAAO,EAAE;IAC5BE,SAAS,EAAE;EACb,CAAC,CAAC;EAEF,MAAMC,KAAK,GAAG,CACZ/C,cAAc,EACd,uBAAuB,EACvB,2BAA2B,EAC3B,uBAAuB,EACvBE,YAAY,CACb;EAED,MAAM8C,aAAa,GAAIC,QAAgB,IAAM,GAAEL,OAAQ,IAAGK,QAAS,EAAC;EAEpEF,KAAK,CAACG,OAAO,CAAED,QAAQ,IAAK;IAC1B,MAAME,UAAU,GAAGH,aAAa,CAACC,QAAQ,CAAC;IAC1C5B,8BAAc,CAAC+B,QAAQ,CACpB,GAAEC,gCAA4B,IAAGJ,QAAS,EAAC,EAC5CE,UAAU,CACX;EACH,CAAC,CAAC;;EAEF;EACA,MAAMG,mBAAmB,GAAGN,aAAa,CAAChD,cAAc,CAAC;EACzDuD,kBAAkB,CAAC;IACjBd,aAAa;IACbT,kBAAkB;IAClBsB;EACF,CAAC,CAAC;EACFE,YAAY,CAACnD,OAAO,EAAE2C,aAAa,CAAC9C,YAAY,CAAC,CAAC;;EAElD;EACA,MAAMuD,QAAQ,GAAGhD,YAAY,CAACiD,WAAW,CACvCX,KAAK,EACL9C,iCAA4B,EAC5BA,iCAA4B,CAC7B;;EAED;EACA;EACA,MAAM0D,MAAM,GAAGlD,YAAY,CAACmD,IAAI,CAACjD,OAAO,CAACkD,OAAO,CAAC,UAAU,CAAC;EAC5DC,MAAM,CAACC,IAAI,CAACJ,MAAM,CAAC,CAACT,OAAO,CAAEc,GAAG,IAAK;IACnC,IAAIL,MAAM,CAACK,GAAG,CAAC,CAACC,IAAI,KAAK7B,SAAS,EAAE;MAClC3B,YAAY,CAACyD,aAAa,CAACT,QAAQ,CAACU,IAAI,EAAEH,GAAG,CAAC;IAChD;EACF,CAAC,CAAC;;EAEF;EACA;EACA;EACA;EACA,MAAMI,WAAW,GAAG3D,YAAY,CAACmD,IAAI,CAACjD,OAAO,CAACkD,OAAO;EACrDO,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,IAAI3D,YAAY,CAAC4D,eAAe,CAACpE,iCAA4B,CAAC,EAAE;IAC9DqE,OAAO,CAACC,IAAI,CACT,GAAEtE,iCAA6B,yCAAwC,CACzE;IACD;EACF;;EAEA;EACA;EACA,MAAMuE,SAAS,GAAG/D,YAAY,CAACgE,SAAS,CACtCxE,iCAA4B,EAC5B,eAAe,EACfA,iCAA4B,EAC3B,GAAEsC,gBAAiB,WAAU,CAC/B;;EAED;EACA9B,YAAY,CAACiE,aAAa,CACxB,CAAC,uBAAuB,EAAE,2BAA2B,EAAE,WAAW,CAAC,EACnE,sBAAsB,EACtB,SAAS,EACTF,SAAS,CAACL,IAAI,CACf;EACD1D,YAAY,CAACiE,aAAa,CACxB,EAAE,EACF,wBAAwB,EACxB,WAAW,EACXF,SAAS,CAACL,IAAI,CACf;EAED1D,YAAY,CAACiE,aAAa,CACxB,EAAE,EACF,yBAAyB,EACzB,YAAY,EACZF,SAAS,CAACL,IAAI,CACf;;EAED;EACA,MAAMQ,cAAc,GAAGlE,YAAY,CAACmE,8BAA8B,EAAE;EACpE,KAAK,MAAMZ,GAAG,IAAIW,cAAc,EAAE;IAChC,IACE,OAAOA,cAAc,CAACX,GAAG,CAAC,CAACa,aAAa,KAAK,WAAW,IACxDF,cAAc,CAACX,GAAG,CAAC,CAACa,aAAa,CAACC,YAAY,KAC3C,IAAG7E,iCAA6B,GAAE,EACrC;MACA,MAAM8E,gBAAgB,GAAGJ,cAAc,CAACX,GAAG,CAAC,CAACa,aAAa;MAC1DE,gBAAgB,CAACC,gBAAgB,GAAG/C,WAAW;MAC/C8C,gBAAgB,CAACE,0BAA0B,GACzC/C,mBAAmB,IAAI,MAAM;MAC/B6C,gBAAgB,CAAC5E,sBAAsB,GAAGA,sBAAsB;MAChE4E,gBAAgB,CAACG,eAAe,GAAG,WAAW;MAC9CH,gBAAgB,CAACI,aAAa,GAAG,GAAG;IACtC;EACF;;EAEA;EACA1E,YAAY,CAAC2E,kBAAkB,CAAC,iBAAiB,EAAEnD,WAAW,EAAEuC,SAAS,CAAC;EAC1E/D,YAAY,CAAC2E,kBAAkB,CAAC,iBAAiB,EAAEnD,WAAW,CAAC;AACjE,CAAC;AAED,MAAMsB,kBAAkB,GAAI8B,OAI3B,IAAK;EACJ,MAAMC,uBAAuB,GAAG,8BAA8B;EAC9D,MAAMC,iBAAiB,GAAG,wBAAwB;EAElD,IAAIC,eAAe,GAAGnE,8BAAc,CAACoE,QAAQ,CAACJ,OAAO,CAAC/B,mBAAmB,CAAC;EAE1E,IAAI+B,OAAO,CAAC5C,aAAa,EAAE;IACzB+C,eAAe,GAAG,IAAAE,iCAAkB,EAClCF,eAAe,EACfD,iBAAiB,EACjBF,OAAO,CAAC5C,aAAa,CACtB;EACH;EAEA,IAAI4C,OAAO,CAACrD,kBAAkB,EAAE;IAC9BwD,eAAe,GAAG,IAAAE,iCAAkB,EAClCF,eAAe,EACfF,uBAAuB,EACvBD,OAAO,CAACrD,kBAAkB,CAC3B;EACH;EAEAX,8BAAc,CAACC,SAAS,CAAC+D,OAAO,CAAC/B,mBAAmB,EAAEkC,eAAe,CAAC;AACxE,CAAC;AAED,MAAMhC,YAAY,GAAG,CACnBnD,OAAmC,EACnCsF,WAAmB,KAChB;EAAA;EACH,MAAMC,UAAU,GAAG,iBAAiB;EACpC,MAAMC,UAAU,GAAG,iBAAiB;EACpC,MAAMC,SAAS,GAAG,gBAAgB;EAElC,IAAIC,cAAc,GAAG1E,8BAAc,CAACoE,QAAQ,CAACE,WAAW,CAAC;EAEzD,8BAAItF,OAAO,CAACY,gBAAgB,6EAAxB,uBAA0B+E,GAAG,mDAA7B,uBAA+BC,MAAM,EAAE;IAAA;IACzCF,cAAc,GAAG,IAAAL,iCAAkB,EACjCK,cAAc,EACdH,UAAU,4BACVvF,OAAO,CAACY,gBAAgB,qFAAxB,uBAA0B+E,GAAG,2DAA7B,uBAA+BC,MAAM,CACtC;EACH;EAEA,8BAAI5F,OAAO,CAACY,gBAAgB,6EAAxB,uBAA0B+E,GAAG,mDAA7B,uBAA+BE,MAAM,EAAE;IAAA;IACzCH,cAAc,GAAG,IAAAL,iCAAkB,EACjCK,cAAc,EACdF,UAAU,4BACVxF,OAAO,CAACY,gBAAgB,qFAAxB,uBAA0B+E,GAAG,2DAA7B,uBAA+BE,MAAM,CACtC;EACH;EAEA,+BAAI7F,OAAO,CAACY,gBAAgB,+EAAxB,wBAA0B+E,GAAG,oDAA7B,wBAA+BG,MAAM,EAAE;IAAA;IACzC,IAAIA,MAAM,GAAG,EAAE;IACf,IAAI,4BAAA9F,OAAO,CAACY,gBAAgB,uFAAxB,wBAA0B+E,GAAG,4DAA7B,wBAA+BG,MAAM,MAAK,IAAI,EAAE;MAClDA,MAAM,GAAG,WAAW;IACtB,CAAC,MAAM,IAAI,4BAAA9F,OAAO,CAACY,gBAAgB,uFAAxB,wBAA0B+E,GAAG,4DAA7B,wBAA+BG,MAAM,MAAK,IAAI,EAAE;MACzDA,MAAM,GAAG,WAAW;IACtB;IACAJ,cAAc,GAAG,IAAAL,iCAAkB,EAACK,cAAc,EAAED,SAAS,EAAEK,MAAM,CAAC;EACxE;EAEA9E,8BAAc,CAACC,SAAS,CAACqE,WAAW,EAAEI,cAAc,CAAC;AACvD,CAAC;AAED,eAAe7E,uBAAuB,CACpCb,OAAmC,EACnCI,YAAiB,EACjB;EACA,MAAM;IAAEH,OAAO;IAAEC;EAAQ,CAAC,GAAGF,OAAO;EACpC,MAAM+F,IAAI,GAAG,mBAAmB;EAChC,MAAMC,OAAO,GAAI,GAAE/F,OAAQ,IAAGC,OAAQ,EAAC;EACvC,MAAMyC,aAAa,GAAIC,QAAgB,IAAM,GAAEoD,OAAQ,IAAGpD,QAAS,EAAC;EAEpE,IAAI,CAAC5B,8BAAc,CAACiF,MAAM,CAACtD,aAAa,CAACoD,IAAI,CAAC,CAAC,EAAE;IAC/C/E,8BAAc,CAACwB,KAAK,CAACwD,OAAO,EAAE;MAC5BvD,SAAS,EAAE;IACb,CAAC,CAAC;IAEF,MAAMK,UAAU,GAAGH,aAAa,CAACoD,IAAI,CAAC;IACtC/E,8BAAc,CAAC+B,QAAQ,CACpB,GAAEC,gCAA4B,IAAG+C,IAAK,EAAC,EACxCjD,UAAU,CACX;EACH,CAAC,MAAM;IACLmB,OAAO,CAACiC,GAAG,CAAE,GAAEvD,aAAa,CAACoD,IAAI,CAAE,8BAA6B,CAAC;EACnE;EAEA,MAAMI,KAAK,GAAG/F,YAAY,CAACgG,cAAc,CAAC,yBAAyB,CAAC;EACpE,MAAMC,UAAU,GAAGjG,YAAY,CAACkG,eAAe,CAAC;IAAE1C,IAAI,EAAG,GAAE1D,OAAQ;EAAE,CAAC,CAAC;EACvEE,YAAY,CAACyD,aAAa,CAACsC,KAAK,EAAEE,UAAU,CAAC;EAE7CjG,YAAY,CAACmG,aAAa,CAAE,GAAErG,OAAQ,IAAG6F,IAAK,EAAC,EAAE,IAAI,EAAEI,KAAK,CAAC;AAC/D"}
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 +1 @@
1
- {"version":3,"names":["withCioXcodeProject","config","cioProps","withXcodeProject","props","options","iosPath","modRequest","platformProjectRoot","bundleIdentifier","ios","devTeam","bundleVersion","buildNumber","bundleShortVersion","version","iosDeploymentTarget","injectCIOPodfileCode"],"sources":["withXcodeProject.ts"],"sourcesContent":["import { ConfigPlugin, withXcodeProject } from '@expo/config-plugins';\n\nimport { injectCIOPodfileCode } from '../helpers/utils/injectCIOPodfileCode';\nimport type { CustomerIOPluginOptionsIOS } from '../types/cio-types';\n\nexport const withCioXcodeProject: ConfigPlugin<CustomerIOPluginOptionsIOS> = (\n config,\n cioProps\n) => {\n return withXcodeProject(config, async (props) => {\n const options: CustomerIOPluginOptionsIOS = {\n iosPath: props.modRequest.platformProjectRoot,\n bundleIdentifier: props.ios?.bundleIdentifier,\n devTeam: cioProps?.devTeam,\n bundleVersion: props.ios?.buildNumber,\n bundleShortVersion: props?.version,\n iosDeploymentTarget: cioProps?.iosDeploymentTarget,\n };\n const { iosPath } = options;\n\n await injectCIOPodfileCode(iosPath);\n\n return props;\n });\n};\n"],"mappings":";;;;;;AAAA;AAEA;AAGO,MAAMA,mBAA6D,GAAG,CAC3EC,MAAM,EACNC,QAAQ,KACL;EACH,OAAO,IAAAC,+BAAgB,EAACF,MAAM,EAAE,MAAOG,KAAK,IAAK;IAAA;IAC/C,MAAMC,OAAmC,GAAG;MAC1CC,OAAO,EAAEF,KAAK,CAACG,UAAU,CAACC,mBAAmB;MAC7CC,gBAAgB,gBAAEL,KAAK,CAACM,GAAG,+CAAT,WAAWD,gBAAgB;MAC7CE,OAAO,EAAET,QAAQ,aAARA,QAAQ,uBAARA,QAAQ,CAAES,OAAO;MAC1BC,aAAa,iBAAER,KAAK,CAACM,GAAG,gDAAT,YAAWG,WAAW;MACrCC,kBAAkB,EAAEV,KAAK,aAALA,KAAK,uBAALA,KAAK,CAAEW,OAAO;MAClCC,mBAAmB,EAAEd,QAAQ,aAARA,QAAQ,uBAARA,QAAQ,CAAEc;IACjC,CAAC;IACD,MAAM;MAAEV;IAAQ,CAAC,GAAGD,OAAO;IAE3B,MAAM,IAAAY,0CAAoB,EAACX,OAAO,CAAC;IAEnC,OAAOF,KAAK;EACd,CAAC,CAAC;AACJ,CAAC;AAAC"}
1
+ {"version":3,"names":["_configPlugins","require","_injectCIOPodfileCode","withCioXcodeProject","config","cioProps","withXcodeProject","props","_props$ios","_props$ios2","options","iosPath","modRequest","platformProjectRoot","bundleIdentifier","ios","devTeam","bundleVersion","buildNumber","bundleShortVersion","version","iosDeploymentTarget","injectCIOPodfileCode","exports"],"sources":["withXcodeProject.ts"],"sourcesContent":["import { ConfigPlugin, withXcodeProject } from '@expo/config-plugins';\n\nimport { injectCIOPodfileCode } from '../helpers/utils/injectCIOPodfileCode';\nimport type { CustomerIOPluginOptionsIOS } from '../types/cio-types';\n\nexport const withCioXcodeProject: ConfigPlugin<CustomerIOPluginOptionsIOS> = (\n config,\n cioProps\n) => {\n return withXcodeProject(config, async (props) => {\n const options: CustomerIOPluginOptionsIOS = {\n iosPath: props.modRequest.platformProjectRoot,\n bundleIdentifier: props.ios?.bundleIdentifier,\n devTeam: cioProps?.devTeam,\n bundleVersion: props.ios?.buildNumber,\n bundleShortVersion: props?.version,\n iosDeploymentTarget: cioProps?.iosDeploymentTarget,\n };\n const { iosPath } = options;\n\n await injectCIOPodfileCode(iosPath);\n\n return props;\n });\n};\n"],"mappings":";;;;;;AAAA,IAAAA,cAAA,GAAAC,OAAA;AAEA,IAAAC,qBAAA,GAAAD,OAAA;AAGO,MAAME,mBAA6D,GAAGA,CAC3EC,MAAM,EACNC,QAAQ,KACL;EACH,OAAO,IAAAC,+BAAgB,EAACF,MAAM,EAAE,MAAOG,KAAK,IAAK;IAAA,IAAAC,UAAA,EAAAC,WAAA;IAC/C,MAAMC,OAAmC,GAAG;MAC1CC,OAAO,EAAEJ,KAAK,CAACK,UAAU,CAACC,mBAAmB;MAC7CC,gBAAgB,GAAAN,UAAA,GAAED,KAAK,CAACQ,GAAG,cAAAP,UAAA,uBAATA,UAAA,CAAWM,gBAAgB;MAC7CE,OAAO,EAAEX,QAAQ,aAARA,QAAQ,uBAARA,QAAQ,CAAEW,OAAO;MAC1BC,aAAa,GAAAR,WAAA,GAAEF,KAAK,CAACQ,GAAG,cAAAN,WAAA,uBAATA,WAAA,CAAWS,WAAW;MACrCC,kBAAkB,EAAEZ,KAAK,aAALA,KAAK,uBAALA,KAAK,CAAEa,OAAO;MAClCC,mBAAmB,EAAEhB,QAAQ,aAARA,QAAQ,uBAARA,QAAQ,CAAEgB;IACjC,CAAC;IACD,MAAM;MAAEV;IAAQ,CAAC,GAAGD,OAAO;IAE3B,MAAM,IAAAY,0CAAoB,EAACX,OAAO,CAAC;IAEnC,OAAOJ,KAAK;EACd,CAAC,CAAC;AACJ,CAAC;AAACgB,OAAA,CAAApB,mBAAA,GAAAA,mBAAA"}
@@ -1 +1 @@
1
- {"version":3,"names":["ph","require","runPostInstall","error"],"sources":["postInstall.js"],"sourcesContent":["try {\n const ph = require('./postInstallHelper');\n\n ph.runPostInstall();\n} catch (error) {}\n"],"mappings":";;AAAA,IAAI;EACF,MAAMA,EAAE,GAAGC,OAAO,CAAC,qBAAqB,CAAC;EAEzCD,EAAE,CAACE,cAAc,EAAE;AACrB,CAAC,CAAC,OAAOC,KAAK,EAAE,CAAC"}
1
+ {"version":3,"names":["ph","require","runPostInstall","error"],"sources":["postInstall.js"],"sourcesContent":["try {\n const ph = require('./postInstallHelper');\n\n ph.runPostInstall();\n} catch (error) {}\n"],"mappings":";;AAAA,IAAI;EACF,MAAMA,EAAE,GAAGC,OAAO,CAAC,qBAAqB,CAAC;EAEzCD,EAAE,CAACE,cAAc,CAAC,CAAC;AACrB,CAAC,CAAC,OAAOC,KAAK,EAAE,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"names":["fs","require","runPostInstall","rnPjsonFile","__dirname","expoPjsonFile","existsSync","rnPJson","readFileSync","expoPjson","rnPackage","JSON","parse","expoVersion","version","writeFileSync","stringify","error","exports"],"sources":["postInstallHelper.js"],"sourcesContent":["const fs = require('fs');\n\nfunction runPostInstall() {\n // react native SDK package.json path\n const rnPjsonFile = `${__dirname}/../../customerio-reactnative/package.json`;\n const expoPjsonFile = `${__dirname}/../package.json`;\n try {\n // if react native SDK is installed\n if (fs.existsSync(rnPjsonFile)) {\n const rnPJson = fs.readFileSync(rnPjsonFile, 'utf8');\n expoPjson = require(expoPjsonFile);\n\n const rnPackage = JSON.parse(rnPJson);\n rnPackage.expoVersion = expoPjson.version;\n\n\n fs.writeFileSync(rnPjsonFile, JSON.stringify(rnPackage, null, 2));\n }\n } catch (error) {}\n}\n\nexports.runPostInstall = runPostInstall;"],"mappings":";;AAAA,MAAMA,EAAE,GAAGC,OAAO,CAAC,IAAI,CAAC;AAExB,SAASC,cAAc,GAAG;EACxB;EACA,MAAMC,WAAW,GAAI,GAAEC,SAAU,4CAA2C;EAC5E,MAAMC,aAAa,GAAI,GAAED,SAAU,kBAAiB;EACpD,IAAI;IACF;IACA,IAAIJ,EAAE,CAACM,UAAU,CAACH,WAAW,CAAC,EAAE;MAC9B,MAAMI,OAAO,GAAGP,EAAE,CAACQ,YAAY,CAACL,WAAW,EAAE,MAAM,CAAC;MACpDM,SAAS,GAAGR,OAAO,CAACI,aAAa,CAAC;MAElC,MAAMK,SAAS,GAAGC,IAAI,CAACC,KAAK,CAACL,OAAO,CAAC;MACrCG,SAAS,CAACG,WAAW,GAAGJ,SAAS,CAACK,OAAO;MAGzCd,EAAE,CAACe,aAAa,CAACZ,WAAW,EAAEQ,IAAI,CAACK,SAAS,CAACN,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;IACnE;EACF,CAAC,CAAC,OAAOO,KAAK,EAAE,CAAC;AACnB;AAEAC,OAAO,CAAChB,cAAc,GAAGA,cAAc"}
1
+ {"version":3,"names":["fs","require","runPostInstall","rnPjsonFile","__dirname","expoPjsonFile","existsSync","rnPJson","readFileSync","expoPjson","rnPackage","JSON","parse","expoVersion","version","writeFileSync","stringify","error","exports"],"sources":["postInstallHelper.js"],"sourcesContent":["const fs = require('fs');\n\nfunction runPostInstall() {\n // react native SDK package.json path\n const rnPjsonFile = `${__dirname}/../../customerio-reactnative/package.json`;\n const expoPjsonFile = `${__dirname}/../package.json`;\n try {\n // if react native SDK is installed\n if (fs.existsSync(rnPjsonFile)) {\n const rnPJson = fs.readFileSync(rnPjsonFile, 'utf8');\n expoPjson = require(expoPjsonFile);\n\n const rnPackage = JSON.parse(rnPJson);\n rnPackage.expoVersion = expoPjson.version;\n\n\n fs.writeFileSync(rnPjsonFile, JSON.stringify(rnPackage, null, 2));\n }\n } catch (error) {}\n}\n\nexports.runPostInstall = runPostInstall;"],"mappings":";;AAAA,MAAMA,EAAE,GAAGC,OAAO,CAAC,IAAI,CAAC;AAExB,SAASC,cAAcA,CAAA,EAAG;EACxB;EACA,MAAMC,WAAW,GAAI,GAAEC,SAAU,4CAA2C;EAC5E,MAAMC,aAAa,GAAI,GAAED,SAAU,kBAAiB;EACpD,IAAI;IACF;IACA,IAAIJ,EAAE,CAACM,UAAU,CAACH,WAAW,CAAC,EAAE;MAC9B,MAAMI,OAAO,GAAGP,EAAE,CAACQ,YAAY,CAACL,WAAW,EAAE,MAAM,CAAC;MACpDM,SAAS,GAAGR,OAAO,CAACI,aAAa,CAAC;MAElC,MAAMK,SAAS,GAAGC,IAAI,CAACC,KAAK,CAACL,OAAO,CAAC;MACrCG,SAAS,CAACG,WAAW,GAAGJ,SAAS,CAACK,OAAO;MAGzCd,EAAE,CAACe,aAAa,CAACZ,WAAW,EAAEQ,IAAI,CAACK,SAAS,CAACN,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;IACnE;EACF,CAAC,CAAC,OAAOO,KAAK,EAAE,CAAC;AACnB;AAEAC,OAAO,CAAChB,cAAc,GAAGA,cAAc"}
@@ -1 +1 @@
1
- {"version":3,"names":[],"sources":["cio-types.ts"],"sourcesContent":["// properties set by the user in their app config file (e.g: app.json or app.plugin.js)\nexport type CustomerIOPluginProperties = {\n // (iOS only) Environment name and bundle identifier\n devTeam: string;\n iosDeploymentTarget: string;\n};\n\n// Plugin options for pre-build\nexport type CustomerIOPluginOptionsIOS = {\n iosPath: string;\n devTeam?: string;\n bundleVersion?: string;\n bundleShortVersion?: string;\n bundleIdentifier?: string;\n iosDeploymentTarget?: string;\n appleTeamId?: string;\n appName?: string;\n useFrameworks?: 'static' | 'dynamic';\n pushNotification?: {\n useRichPush: boolean;\n env: {\n siteId: string;\n apiKey: string;\n region: string;\n };\n };\n};\n\nexport type CustomerIOPluginOptionsAndroid = {\n androidPath: string;\n googleServicesFile?: string;\n};\n\nexport type CustomerIOPluginOptions = {\n android: CustomerIOPluginOptionsAndroid;\n ios: CustomerIOPluginOptionsIOS;\n};\n"],"mappings":""}
1
+ {"version":3,"names":[],"sources":["cio-types.ts"],"sourcesContent":["// properties set by the user in their app config file (e.g: app.json or app.plugin.js)\nexport type CustomerIOPluginProperties = {\n // (iOS only) Environment name and bundle identifier\n devTeam: string;\n iosDeploymentTarget: string;\n};\n\n// Plugin options for pre-build\nexport type CustomerIOPluginOptionsIOS = {\n iosPath: string;\n devTeam?: string;\n bundleVersion?: string;\n bundleShortVersion?: string;\n bundleIdentifier?: string;\n iosDeploymentTarget?: string;\n appleTeamId?: string;\n appName?: string;\n disableNotificationRegistration?: boolean;\n useFrameworks?: 'static' | 'dynamic';\n pushNotification?: {\n useRichPush: boolean;\n env: {\n siteId: string;\n apiKey: string;\n region: string;\n };\n };\n};\n\nexport type CustomerIOPluginOptionsAndroid = {\n androidPath: string;\n googleServicesFile?: string;\n setHighPriorityPushHandler?: boolean;\n};\n\nexport type CustomerIOPluginOptions = {\n android: CustomerIOPluginOptionsAndroid;\n ios: CustomerIOPluginOptionsIOS;\n};\n"],"mappings":""}
@@ -0,0 +1,30 @@
1
+ import { withAndroidManifest } from '@expo/config-plugins';
2
+ export const withAndroidManifestUpdates = configOuter => {
3
+ return withAndroidManifest(configOuter, props => {
4
+ const application = props.modResults.manifest.application;
5
+ const customerIOMessagingpush = 'io.customer.messagingpush.CustomerIOFirebaseMessagingService';
6
+ if (!application[0]['service']) {
7
+ application[0]['service'] = [];
8
+ }
9
+ const hasService = application[0]['service'].some(service => service['$']['android:name'] === customerIOMessagingpush);
10
+ if (!hasService) {
11
+ application[0]['service'].push({
12
+ '$': {
13
+ 'android:name': customerIOMessagingpush,
14
+ 'android:exported': 'false'
15
+ },
16
+ 'intent-filter': [{
17
+ action: [{
18
+ $: {
19
+ 'android:name': 'com.google.firebase.MESSAGING_EVENT'
20
+ }
21
+ }]
22
+ }]
23
+ });
24
+ console.log('Successfully set CustomerIO push handler as priority in AndroidManifest.xml');
25
+ }
26
+ props.modResults.manifest.application = application;
27
+ return props;
28
+ });
29
+ };
30
+ //# sourceMappingURL=withAndroidManifestUpdates.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["withAndroidManifest","withAndroidManifestUpdates","configOuter","props","application","modResults","manifest","customerIOMessagingpush","hasService","some","service","push","action","$","console","log"],"sources":["withAndroidManifestUpdates.ts"],"sourcesContent":["import { ConfigPlugin, withAndroidManifest } from '@expo/config-plugins';\nimport type { ManifestApplication } from '@expo/config-plugins/build/android/Manifest';\n\nimport type { CustomerIOPluginOptionsAndroid } from '../types/cio-types';\n\nexport const withAndroidManifestUpdates: ConfigPlugin<\n CustomerIOPluginOptionsAndroid\n> = (configOuter) => {\n return withAndroidManifest(configOuter, (props) => {\n const application = props.modResults.manifest\n .application as ManifestApplication[];\n const customerIOMessagingpush =\n 'io.customer.messagingpush.CustomerIOFirebaseMessagingService';\n\n if (!application[0]['service']) {\n application[0]['service'] = [];\n }\n\n const hasService = application[0]['service'].some(\n (service) => service['$']['android:name'] === customerIOMessagingpush\n );\n\n if (!hasService) {\n application[0]['service'].push({\n '$': {\n 'android:name': customerIOMessagingpush,\n 'android:exported': 'false',\n },\n 'intent-filter': [\n {\n action: [\n {\n $: {\n 'android:name': 'com.google.firebase.MESSAGING_EVENT',\n },\n },\n ],\n },\n ],\n });\n console.log(\n 'Successfully set CustomerIO push handler as priority in AndroidManifest.xml'\n );\n }\n\n props.modResults.manifest.application = application;\n return props;\n });\n};\n"],"mappings":"AAAA,SAAuBA,mBAAmB,QAAQ,sBAAsB;AAKxE,OAAO,MAAMC,0BAEZ,GAAIC,WAAW,IAAK;EACnB,OAAOF,mBAAmB,CAACE,WAAW,EAAGC,KAAK,IAAK;IACjD,MAAMC,WAAW,GAAGD,KAAK,CAACE,UAAU,CAACC,QAAQ,CAC1CF,WAAoC;IACvC,MAAMG,uBAAuB,GAC3B,8DAA8D;IAEhE,IAAI,CAACH,WAAW,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,EAAE;MAC9BA,WAAW,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,GAAG,EAAE;IAChC;IAEA,MAAMI,UAAU,GAAGJ,WAAW,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAACK,IAAI,CAC9CC,OAAO,IAAKA,OAAO,CAAC,GAAG,CAAC,CAAC,cAAc,CAAC,KAAKH,uBAChD,CAAC;IAED,IAAI,CAACC,UAAU,EAAE;MACfJ,WAAW,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAACO,IAAI,CAAC;QAC7B,GAAG,EAAE;UACH,cAAc,EAAEJ,uBAAuB;UACvC,kBAAkB,EAAE;QACtB,CAAC;QACD,eAAe,EAAE,CACf;UACEK,MAAM,EAAE,CACN;YACEC,CAAC,EAAE;cACD,cAAc,EAAE;YAClB;UACF,CAAC;QAEL,CAAC;MAEL,CAAC,CAAC;MACFC,OAAO,CAACC,GAAG,CACT,6EACF,CAAC;IACH;IAEAZ,KAAK,CAACE,UAAU,CAACC,QAAQ,CAACF,WAAW,GAAGA,WAAW;IACnD,OAAOD,KAAK;EACd,CAAC,CAAC;AACJ,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"names":["withAppBuildGradle","CIO_APP_APPLY_REGEX","CIO_APP_GOOGLE_SNIPPET","withAppGoogleServices","configOuter","props","regex","RegExp","match","modResults","contents","replace","console","log"],"sources":["withAppGoogleServices.ts"],"sourcesContent":["import { ConfigPlugin, withAppBuildGradle } from '@expo/config-plugins';\n\nimport {\n CIO_APP_APPLY_REGEX,\n CIO_APP_GOOGLE_SNIPPET,\n} from '../helpers/constants/android';\nimport type { CustomerIOPluginOptionsAndroid } from '../types/cio-types';\n\nexport const withAppGoogleServices: ConfigPlugin<\n CustomerIOPluginOptionsAndroid\n> = (configOuter) => {\n return withAppBuildGradle(configOuter, (props) => {\n const regex = new RegExp(CIO_APP_GOOGLE_SNIPPET);\n const match = props.modResults.contents.match(regex);\n if (!match) {\n props.modResults.contents = props.modResults.contents.replace(\n CIO_APP_APPLY_REGEX,\n `$1\\n${CIO_APP_GOOGLE_SNIPPET}`\n );\n } else {\n console.log('app/build.gradle snippet already exists. Skipping...');\n }\n\n return props;\n });\n};\n"],"mappings":"AAAA,SAAuBA,kBAAkB,QAAQ,sBAAsB;AAEvE,SACEC,mBAAmB,EACnBC,sBAAsB,QACjB,8BAA8B;AAGrC,OAAO,MAAMC,qBAEZ,GAAIC,WAAW,IAAK;EACnB,OAAOJ,kBAAkB,CAACI,WAAW,EAAGC,KAAK,IAAK;IAChD,MAAMC,KAAK,GAAG,IAAIC,MAAM,CAACL,sBAAsB,CAAC;IAChD,MAAMM,KAAK,GAAGH,KAAK,CAACI,UAAU,CAACC,QAAQ,CAACF,KAAK,CAACF,KAAK,CAAC;IACpD,IAAI,CAACE,KAAK,EAAE;MACVH,KAAK,CAACI,UAAU,CAACC,QAAQ,GAAGL,KAAK,CAACI,UAAU,CAACC,QAAQ,CAACC,OAAO,CAC3DV,mBAAmB,EAClB,OAAMC,sBAAuB,EAAC,CAChC;IACH,CAAC,MAAM;MACLU,OAAO,CAACC,GAAG,CAAC,sDAAsD,CAAC;IACrE;IAEA,OAAOR,KAAK;EACd,CAAC,CAAC;AACJ,CAAC"}
1
+ {"version":3,"names":["withAppBuildGradle","CIO_APP_APPLY_REGEX","CIO_APP_GOOGLE_SNIPPET","withAppGoogleServices","configOuter","props","regex","RegExp","match","modResults","contents","replace","console","log"],"sources":["withAppGoogleServices.ts"],"sourcesContent":["import { ConfigPlugin, withAppBuildGradle } from '@expo/config-plugins';\n\nimport {\n CIO_APP_APPLY_REGEX,\n CIO_APP_GOOGLE_SNIPPET,\n} from '../helpers/constants/android';\nimport type { CustomerIOPluginOptionsAndroid } from '../types/cio-types';\n\nexport const withAppGoogleServices: ConfigPlugin<\n CustomerIOPluginOptionsAndroid\n> = (configOuter) => {\n return withAppBuildGradle(configOuter, (props) => {\n const regex = new RegExp(CIO_APP_GOOGLE_SNIPPET);\n const match = props.modResults.contents.match(regex);\n if (!match) {\n props.modResults.contents = props.modResults.contents.replace(\n CIO_APP_APPLY_REGEX,\n `$1\\n${CIO_APP_GOOGLE_SNIPPET}`\n );\n } else {\n console.log('app/build.gradle snippet already exists. Skipping...');\n }\n\n return props;\n });\n};\n"],"mappings":"AAAA,SAAuBA,kBAAkB,QAAQ,sBAAsB;AAEvE,SACEC,mBAAmB,EACnBC,sBAAsB,QACjB,8BAA8B;AAGrC,OAAO,MAAMC,qBAEZ,GAAIC,WAAW,IAAK;EACnB,OAAOJ,kBAAkB,CAACI,WAAW,EAAGC,KAAK,IAAK;IAChD,MAAMC,KAAK,GAAG,IAAIC,MAAM,CAACL,sBAAsB,CAAC;IAChD,MAAMM,KAAK,GAAGH,KAAK,CAACI,UAAU,CAACC,QAAQ,CAACF,KAAK,CAACF,KAAK,CAAC;IACpD,IAAI,CAACE,KAAK,EAAE;MACVH,KAAK,CAACI,UAAU,CAACC,QAAQ,GAAGL,KAAK,CAACI,UAAU,CAACC,QAAQ,CAACC,OAAO,CAC3DV,mBAAmB,EAClB,OAAMC,sBAAuB,EAChC,CAAC;IACH,CAAC,MAAM;MACLU,OAAO,CAACC,GAAG,CAAC,sDAAsD,CAAC;IACrE;IAEA,OAAOR,KAAK;EACd,CAAC,CAAC;AACJ,CAAC"}
@@ -1,3 +1,4 @@
1
+ import { withAndroidManifestUpdates } from './withAndroidManifestUpdates';
1
2
  import { withAppGoogleServices } from './withAppGoogleServices';
2
3
  import { withGistMavenRepository } from './withGistMavenRepository';
3
4
  import { withGoogleServicesJSON } from './withGoogleServicesJSON';
@@ -7,6 +8,9 @@ export function withCIOAndroid(config, props) {
7
8
  config = withProjectGoogleServices(config, props);
8
9
  config = withAppGoogleServices(config, props);
9
10
  config = withGoogleServicesJSON(config, props);
11
+ if (props.setHighPriorityPushHandler) {
12
+ config = withAndroidManifestUpdates(config, props);
13
+ }
10
14
  return config;
11
15
  }
12
16
  //# sourceMappingURL=withCIOAndroid.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["withAppGoogleServices","withGistMavenRepository","withGoogleServicesJSON","withProjectGoogleServices","withCIOAndroid","config","props"],"sources":["withCIOAndroid.ts"],"sourcesContent":["import type { ExpoConfig } from '@expo/config-types';\n\nimport type { CustomerIOPluginOptionsAndroid } from '../types/cio-types';\nimport { withAppGoogleServices } from './withAppGoogleServices';\nimport { withGistMavenRepository } from './withGistMavenRepository';\nimport { withGoogleServicesJSON } from './withGoogleServicesJSON';\nimport { withProjectGoogleServices } from './withProjectGoogleServices';\n\nexport function withCIOAndroid(\n config: ExpoConfig,\n props: CustomerIOPluginOptionsAndroid\n): ExpoConfig {\n config = withGistMavenRepository(config, props);\n config = withProjectGoogleServices(config, props);\n config = withAppGoogleServices(config, props);\n config = withGoogleServicesJSON(config, props);\n\n return config;\n}\n"],"mappings":"AAGA,SAASA,qBAAqB,QAAQ,yBAAyB;AAC/D,SAASC,uBAAuB,QAAQ,2BAA2B;AACnE,SAASC,sBAAsB,QAAQ,0BAA0B;AACjE,SAASC,yBAAyB,QAAQ,6BAA6B;AAEvE,OAAO,SAASC,cAAc,CAC5BC,MAAkB,EAClBC,KAAqC,EACzB;EACZD,MAAM,GAAGJ,uBAAuB,CAACI,MAAM,EAAEC,KAAK,CAAC;EAC/CD,MAAM,GAAGF,yBAAyB,CAACE,MAAM,EAAEC,KAAK,CAAC;EACjDD,MAAM,GAAGL,qBAAqB,CAACK,MAAM,EAAEC,KAAK,CAAC;EAC7CD,MAAM,GAAGH,sBAAsB,CAACG,MAAM,EAAEC,KAAK,CAAC;EAE9C,OAAOD,MAAM;AACf"}
1
+ {"version":3,"names":["withAndroidManifestUpdates","withAppGoogleServices","withGistMavenRepository","withGoogleServicesJSON","withProjectGoogleServices","withCIOAndroid","config","props","setHighPriorityPushHandler"],"sources":["withCIOAndroid.ts"],"sourcesContent":["import type { ExpoConfig } from '@expo/config-types';\n\nimport type { CustomerIOPluginOptionsAndroid } from '../types/cio-types';\nimport { withAndroidManifestUpdates } from './withAndroidManifestUpdates';\nimport { withAppGoogleServices } from './withAppGoogleServices';\nimport { withGistMavenRepository } from './withGistMavenRepository';\nimport { withGoogleServicesJSON } from './withGoogleServicesJSON';\nimport { withProjectGoogleServices } from './withProjectGoogleServices';\n\nexport function withCIOAndroid(\n config: ExpoConfig,\n props: CustomerIOPluginOptionsAndroid\n): ExpoConfig {\n config = withGistMavenRepository(config, props);\n config = withProjectGoogleServices(config, props);\n config = withAppGoogleServices(config, props);\n config = withGoogleServicesJSON(config, props);\n if (props.setHighPriorityPushHandler) {\n config = withAndroidManifestUpdates(config, props);\n }\n\n return config;\n}\n"],"mappings":"AAGA,SAASA,0BAA0B,QAAQ,8BAA8B;AACzE,SAASC,qBAAqB,QAAQ,yBAAyB;AAC/D,SAASC,uBAAuB,QAAQ,2BAA2B;AACnE,SAASC,sBAAsB,QAAQ,0BAA0B;AACjE,SAASC,yBAAyB,QAAQ,6BAA6B;AAEvE,OAAO,SAASC,cAAcA,CAC5BC,MAAkB,EAClBC,KAAqC,EACzB;EACZD,MAAM,GAAGJ,uBAAuB,CAACI,MAAM,EAAEC,KAAK,CAAC;EAC/CD,MAAM,GAAGF,yBAAyB,CAACE,MAAM,EAAEC,KAAK,CAAC;EACjDD,MAAM,GAAGL,qBAAqB,CAACK,MAAM,EAAEC,KAAK,CAAC;EAC7CD,MAAM,GAAGH,sBAAsB,CAACG,MAAM,EAAEC,KAAK,CAAC;EAC9C,IAAIA,KAAK,CAACC,0BAA0B,EAAE;IACpCF,MAAM,GAAGN,0BAA0B,CAACM,MAAM,EAAEC,KAAK,CAAC;EACpD;EAEA,OAAOD,MAAM;AACf"}
@@ -1 +1 @@
1
- {"version":3,"names":["withProjectBuildGradle","CIO_GIST_MAVEN_REGEX","CIO_PROJECT_ALLPROJECTS_REGEX","CIO_PROJECT_GIST_MAVEN_SNIPPET","withGistMavenRepository","configOuter","props","targetMatch","modResults","contents","match","replace","console","log"],"sources":["withGistMavenRepository.ts"],"sourcesContent":["import { withProjectBuildGradle, ConfigPlugin } from '@expo/config-plugins';\n\nimport {\n CIO_GIST_MAVEN_REGEX,\n CIO_PROJECT_ALLPROJECTS_REGEX,\n CIO_PROJECT_GIST_MAVEN_SNIPPET,\n} from '../helpers/constants/android';\nimport type { CustomerIOPluginOptionsAndroid } from './../types/cio-types';\n\nexport const withGistMavenRepository: ConfigPlugin<\n CustomerIOPluginOptionsAndroid\n> = (configOuter) => {\n return withProjectBuildGradle(configOuter, (props) => {\n const targetMatch = props.modResults.contents.match(CIO_GIST_MAVEN_REGEX);\n if (!targetMatch) {\n props.modResults.contents = props.modResults.contents.replace(\n CIO_PROJECT_ALLPROJECTS_REGEX,\n `$1\\n${CIO_PROJECT_GIST_MAVEN_SNIPPET}`\n );\n } else {\n console.log('build.gradle snippet alreade exists. Skipping...');\n }\n\n return props;\n });\n};\n"],"mappings":"AAAA,SAASA,sBAAsB,QAAsB,sBAAsB;AAE3E,SACEC,oBAAoB,EACpBC,6BAA6B,EAC7BC,8BAA8B,QACzB,8BAA8B;AAGrC,OAAO,MAAMC,uBAEZ,GAAIC,WAAW,IAAK;EACnB,OAAOL,sBAAsB,CAACK,WAAW,EAAGC,KAAK,IAAK;IACpD,MAAMC,WAAW,GAAGD,KAAK,CAACE,UAAU,CAACC,QAAQ,CAACC,KAAK,CAACT,oBAAoB,CAAC;IACzE,IAAI,CAACM,WAAW,EAAE;MAChBD,KAAK,CAACE,UAAU,CAACC,QAAQ,GAAGH,KAAK,CAACE,UAAU,CAACC,QAAQ,CAACE,OAAO,CAC3DT,6BAA6B,EAC5B,OAAMC,8BAA+B,EAAC,CACxC;IACH,CAAC,MAAM;MACLS,OAAO,CAACC,GAAG,CAAC,kDAAkD,CAAC;IACjE;IAEA,OAAOP,KAAK;EACd,CAAC,CAAC;AACJ,CAAC"}
1
+ {"version":3,"names":["withProjectBuildGradle","CIO_GIST_MAVEN_REGEX","CIO_PROJECT_ALLPROJECTS_REGEX","CIO_PROJECT_GIST_MAVEN_SNIPPET","withGistMavenRepository","configOuter","props","targetMatch","modResults","contents","match","replace","console","log"],"sources":["withGistMavenRepository.ts"],"sourcesContent":["import { withProjectBuildGradle, ConfigPlugin } from '@expo/config-plugins';\n\nimport {\n CIO_GIST_MAVEN_REGEX,\n CIO_PROJECT_ALLPROJECTS_REGEX,\n CIO_PROJECT_GIST_MAVEN_SNIPPET,\n} from '../helpers/constants/android';\nimport type { CustomerIOPluginOptionsAndroid } from './../types/cio-types';\n\nexport const withGistMavenRepository: ConfigPlugin<\n CustomerIOPluginOptionsAndroid\n> = (configOuter) => {\n return withProjectBuildGradle(configOuter, (props) => {\n const targetMatch = props.modResults.contents.match(CIO_GIST_MAVEN_REGEX);\n if (!targetMatch) {\n props.modResults.contents = props.modResults.contents.replace(\n CIO_PROJECT_ALLPROJECTS_REGEX,\n `$1\\n${CIO_PROJECT_GIST_MAVEN_SNIPPET}`\n );\n } else {\n console.log('build.gradle snippet alreade exists. Skipping...');\n }\n\n return props;\n });\n};\n"],"mappings":"AAAA,SAASA,sBAAsB,QAAsB,sBAAsB;AAE3E,SACEC,oBAAoB,EACpBC,6BAA6B,EAC7BC,8BAA8B,QACzB,8BAA8B;AAGrC,OAAO,MAAMC,uBAEZ,GAAIC,WAAW,IAAK;EACnB,OAAOL,sBAAsB,CAACK,WAAW,EAAGC,KAAK,IAAK;IACpD,MAAMC,WAAW,GAAGD,KAAK,CAACE,UAAU,CAACC,QAAQ,CAACC,KAAK,CAACT,oBAAoB,CAAC;IACzE,IAAI,CAACM,WAAW,EAAE;MAChBD,KAAK,CAACE,UAAU,CAACC,QAAQ,GAAGH,KAAK,CAACE,UAAU,CAACC,QAAQ,CAACE,OAAO,CAC3DT,6BAA6B,EAC5B,OAAMC,8BAA+B,EACxC,CAAC;IACH,CAAC,MAAM;MACLS,OAAO,CAACC,GAAG,CAAC,kDAAkD,CAAC;IACjE;IAEA,OAAOP,KAAK;EACd,CAAC,CAAC;AACJ,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"names":["withProjectBuildGradle","FileManagement","withGoogleServicesJSON","configOuter","cioProps","props","options","androidPath","modRequest","platformProjectRoot","googleServicesFile","exists","copyFile","e","console","log"],"sources":["withGoogleServicesJSON.ts"],"sourcesContent":["import { withProjectBuildGradle, ConfigPlugin } from '@expo/config-plugins';\n\nimport { FileManagement } from './../helpers/utils/fileManagement';\nimport type { CustomerIOPluginOptionsAndroid } from './../types/cio-types';\n\nexport const withGoogleServicesJSON: ConfigPlugin<\n CustomerIOPluginOptionsAndroid\n> = (configOuter, cioProps) => {\n return withProjectBuildGradle(configOuter, (props) => {\n const options: CustomerIOPluginOptionsAndroid = {\n androidPath: props.modRequest.platformProjectRoot,\n googleServicesFile: cioProps?.googleServicesFile,\n };\n const { androidPath, googleServicesFile } = options;\n if (!FileManagement.exists(`${androidPath}/app/google-services.json`)) {\n if (googleServicesFile && FileManagement.exists(googleServicesFile)) {\n try {\n FileManagement.copyFile(\n googleServicesFile,\n `${androidPath}/app/google-services.json`\n );\n } catch (e) {\n console.log(\n `There was an error copying your google-services.json file. You can copy it manually into ${androidPath}/app/google-services.json`\n );\n }\n } else {\n console.log(\n `The Google Services file provided in ${googleServicesFile} doesn't seem to exist. You can copy it manually into ${androidPath}/app/google-services.json`\n );\n }\n } else {\n console.log(\n `File already exists: ${androidPath}/app/google-services.json. Skipping...`\n );\n }\n\n return props;\n });\n};\n"],"mappings":"AAAA,SAASA,sBAAsB,QAAsB,sBAAsB;AAE3E,SAASC,cAAc,QAAQ,mCAAmC;AAGlE,OAAO,MAAMC,sBAEZ,GAAG,CAACC,WAAW,EAAEC,QAAQ,KAAK;EAC7B,OAAOJ,sBAAsB,CAACG,WAAW,EAAGE,KAAK,IAAK;IACpD,MAAMC,OAAuC,GAAG;MAC9CC,WAAW,EAAEF,KAAK,CAACG,UAAU,CAACC,mBAAmB;MACjDC,kBAAkB,EAAEN,QAAQ,aAARA,QAAQ,uBAARA,QAAQ,CAAEM;IAChC,CAAC;IACD,MAAM;MAAEH,WAAW;MAAEG;IAAmB,CAAC,GAAGJ,OAAO;IACnD,IAAI,CAACL,cAAc,CAACU,MAAM,CAAE,GAAEJ,WAAY,2BAA0B,CAAC,EAAE;MACrE,IAAIG,kBAAkB,IAAIT,cAAc,CAACU,MAAM,CAACD,kBAAkB,CAAC,EAAE;QACnE,IAAI;UACFT,cAAc,CAACW,QAAQ,CACrBF,kBAAkB,EACjB,GAAEH,WAAY,2BAA0B,CAC1C;QACH,CAAC,CAAC,OAAOM,CAAC,EAAE;UACVC,OAAO,CAACC,GAAG,CACR,4FAA2FR,WAAY,2BAA0B,CACnI;QACH;MACF,CAAC,MAAM;QACLO,OAAO,CAACC,GAAG,CACR,wCAAuCL,kBAAmB,yDAAwDH,WAAY,2BAA0B,CAC1J;MACH;IACF,CAAC,MAAM;MACLO,OAAO,CAACC,GAAG,CACR,wBAAuBR,WAAY,wCAAuC,CAC5E;IACH;IAEA,OAAOF,KAAK;EACd,CAAC,CAAC;AACJ,CAAC"}
1
+ {"version":3,"names":["withProjectBuildGradle","FileManagement","withGoogleServicesJSON","configOuter","cioProps","props","options","androidPath","modRequest","platformProjectRoot","googleServicesFile","exists","copyFile","e","console","log"],"sources":["withGoogleServicesJSON.ts"],"sourcesContent":["import { withProjectBuildGradle, ConfigPlugin } from '@expo/config-plugins';\n\nimport { FileManagement } from './../helpers/utils/fileManagement';\nimport type { CustomerIOPluginOptionsAndroid } from './../types/cio-types';\n\nexport const withGoogleServicesJSON: ConfigPlugin<\n CustomerIOPluginOptionsAndroid\n> = (configOuter, cioProps) => {\n return withProjectBuildGradle(configOuter, (props) => {\n const options: CustomerIOPluginOptionsAndroid = {\n androidPath: props.modRequest.platformProjectRoot,\n googleServicesFile: cioProps?.googleServicesFile,\n };\n const { androidPath, googleServicesFile } = options;\n if (!FileManagement.exists(`${androidPath}/app/google-services.json`)) {\n if (googleServicesFile && FileManagement.exists(googleServicesFile)) {\n try {\n FileManagement.copyFile(\n googleServicesFile,\n `${androidPath}/app/google-services.json`\n );\n } catch (e) {\n console.log(\n `There was an error copying your google-services.json file. You can copy it manually into ${androidPath}/app/google-services.json`\n );\n }\n } else {\n console.log(\n `The Google Services file provided in ${googleServicesFile} doesn't seem to exist. You can copy it manually into ${androidPath}/app/google-services.json`\n );\n }\n } else {\n console.log(\n `File already exists: ${androidPath}/app/google-services.json. Skipping...`\n );\n }\n\n return props;\n });\n};\n"],"mappings":"AAAA,SAASA,sBAAsB,QAAsB,sBAAsB;AAE3E,SAASC,cAAc,QAAQ,mCAAmC;AAGlE,OAAO,MAAMC,sBAEZ,GAAGA,CAACC,WAAW,EAAEC,QAAQ,KAAK;EAC7B,OAAOJ,sBAAsB,CAACG,WAAW,EAAGE,KAAK,IAAK;IACpD,MAAMC,OAAuC,GAAG;MAC9CC,WAAW,EAAEF,KAAK,CAACG,UAAU,CAACC,mBAAmB;MACjDC,kBAAkB,EAAEN,QAAQ,aAARA,QAAQ,uBAARA,QAAQ,CAAEM;IAChC,CAAC;IACD,MAAM;MAAEH,WAAW;MAAEG;IAAmB,CAAC,GAAGJ,OAAO;IACnD,IAAI,CAACL,cAAc,CAACU,MAAM,CAAE,GAAEJ,WAAY,2BAA0B,CAAC,EAAE;MACrE,IAAIG,kBAAkB,IAAIT,cAAc,CAACU,MAAM,CAACD,kBAAkB,CAAC,EAAE;QACnE,IAAI;UACFT,cAAc,CAACW,QAAQ,CACrBF,kBAAkB,EACjB,GAAEH,WAAY,2BACjB,CAAC;QACH,CAAC,CAAC,OAAOM,CAAC,EAAE;UACVC,OAAO,CAACC,GAAG,CACR,4FAA2FR,WAAY,2BAC1G,CAAC;QACH;MACF,CAAC,MAAM;QACLO,OAAO,CAACC,GAAG,CACR,wCAAuCL,kBAAmB,yDAAwDH,WAAY,2BACjI,CAAC;MACH;IACF,CAAC,MAAM;MACLO,OAAO,CAACC,GAAG,CACR,wBAAuBR,WAAY,wCACtC,CAAC;IACH;IAEA,OAAOF,KAAK;EACd,CAAC,CAAC;AACJ,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"names":["withProjectBuildGradle","CIO_PROJECT_BUILDSCRIPTS_REGEX","CIO_PROJECT_GOOGLE_SNIPPET","withProjectGoogleServices","configOuter","props","regex","RegExp","match","modResults","contents","replace"],"sources":["withProjectGoogleServices.ts"],"sourcesContent":["import { ConfigPlugin, withProjectBuildGradle } from '@expo/config-plugins';\n\nimport {\n CIO_PROJECT_BUILDSCRIPTS_REGEX,\n CIO_PROJECT_GOOGLE_SNIPPET,\n} from './../helpers/constants/android';\nimport type { CustomerIOPluginOptionsAndroid } from './../types/cio-types';\n\nexport const withProjectGoogleServices: ConfigPlugin<\n CustomerIOPluginOptionsAndroid\n> = (configOuter) => {\n return withProjectBuildGradle(configOuter, (props) => {\n const regex = new RegExp(CIO_PROJECT_GOOGLE_SNIPPET);\n const match = props.modResults.contents.match(regex);\n if (!match) {\n props.modResults.contents = props.modResults.contents.replace(\n CIO_PROJECT_BUILDSCRIPTS_REGEX,\n `$1\\n${CIO_PROJECT_GOOGLE_SNIPPET}`\n );\n }\n\n return props;\n });\n};\n"],"mappings":"AAAA,SAAuBA,sBAAsB,QAAQ,sBAAsB;AAE3E,SACEC,8BAA8B,EAC9BC,0BAA0B,QACrB,gCAAgC;AAGvC,OAAO,MAAMC,yBAEZ,GAAIC,WAAW,IAAK;EACnB,OAAOJ,sBAAsB,CAACI,WAAW,EAAGC,KAAK,IAAK;IACpD,MAAMC,KAAK,GAAG,IAAIC,MAAM,CAACL,0BAA0B,CAAC;IACpD,MAAMM,KAAK,GAAGH,KAAK,CAACI,UAAU,CAACC,QAAQ,CAACF,KAAK,CAACF,KAAK,CAAC;IACpD,IAAI,CAACE,KAAK,EAAE;MACVH,KAAK,CAACI,UAAU,CAACC,QAAQ,GAAGL,KAAK,CAACI,UAAU,CAACC,QAAQ,CAACC,OAAO,CAC3DV,8BAA8B,EAC7B,OAAMC,0BAA2B,EAAC,CACpC;IACH;IAEA,OAAOG,KAAK;EACd,CAAC,CAAC;AACJ,CAAC"}
1
+ {"version":3,"names":["withProjectBuildGradle","CIO_PROJECT_BUILDSCRIPTS_REGEX","CIO_PROJECT_GOOGLE_SNIPPET","withProjectGoogleServices","configOuter","props","regex","RegExp","match","modResults","contents","replace"],"sources":["withProjectGoogleServices.ts"],"sourcesContent":["import { ConfigPlugin, withProjectBuildGradle } from '@expo/config-plugins';\n\nimport {\n CIO_PROJECT_BUILDSCRIPTS_REGEX,\n CIO_PROJECT_GOOGLE_SNIPPET,\n} from './../helpers/constants/android';\nimport type { CustomerIOPluginOptionsAndroid } from './../types/cio-types';\n\nexport const withProjectGoogleServices: ConfigPlugin<\n CustomerIOPluginOptionsAndroid\n> = (configOuter) => {\n return withProjectBuildGradle(configOuter, (props) => {\n const regex = new RegExp(CIO_PROJECT_GOOGLE_SNIPPET);\n const match = props.modResults.contents.match(regex);\n if (!match) {\n props.modResults.contents = props.modResults.contents.replace(\n CIO_PROJECT_BUILDSCRIPTS_REGEX,\n `$1\\n${CIO_PROJECT_GOOGLE_SNIPPET}`\n );\n }\n\n return props;\n });\n};\n"],"mappings":"AAAA,SAAuBA,sBAAsB,QAAQ,sBAAsB;AAE3E,SACEC,8BAA8B,EAC9BC,0BAA0B,QACrB,gCAAgC;AAGvC,OAAO,MAAMC,yBAEZ,GAAIC,WAAW,IAAK;EACnB,OAAOJ,sBAAsB,CAACI,WAAW,EAAGC,KAAK,IAAK;IACpD,MAAMC,KAAK,GAAG,IAAIC,MAAM,CAACL,0BAA0B,CAAC;IACpD,MAAMM,KAAK,GAAGH,KAAK,CAACI,UAAU,CAACC,QAAQ,CAACF,KAAK,CAACF,KAAK,CAAC;IACpD,IAAI,CAACE,KAAK,EAAE;MACVH,KAAK,CAACI,UAAU,CAACC,QAAQ,GAAGL,KAAK,CAACI,UAAU,CAACC,QAAQ,CAACC,OAAO,CAC3DV,8BAA8B,EAC7B,OAAMC,0BAA2B,EACpC,CAAC;IACH;IAEA,OAAOG,KAAK;EACd,CAAC,CAAC;AACJ,CAAC"}
@@ -1,10 +1,11 @@
1
- export const LOCAL_PATH_TO_CIO_NSE_FILES = `node_modules/customerio-expo-plugin/src/helpers/native-files/ios`;
1
+ const finder = require('find-package-json');
2
+ const path = require('path');
3
+ const f = finder(__dirname);
4
+ let pluginPackageRoot = f.next().filename;
5
+ // This is the path to the root of the customerio-expo-plugin package
6
+ pluginPackageRoot = path.dirname(pluginPackageRoot);
7
+ export const LOCAL_PATH_TO_CIO_NSE_FILES = path.join(pluginPackageRoot, 'src/helpers/native-files/ios');
2
8
  export const IOS_DEPLOYMENT_TARGET = '13.0';
3
- export const CIO_SDK_VERSION = '~> 2.0.0';
4
- export const CIO_PODFILE_REGEX = /pod 'CustomerIO\/MessagingPushAPN'/;
5
- export const CIO_CIO_TARGET_REGEX = /cio_target_names/;
6
- export const CIO_PODFILE_NOTIFICATION_REGEX = /target 'NotificationService' do/;
7
- export const CIO_PODFILE_POST_INSTALL_REGEX = /post_install do \|installer\|/;
8
9
  export const GROUP_IDENTIFIER_TEMPLATE_REGEX = /{{GROUP_IDENTIFIER}}/gm;
9
10
  export const BUNDLE_SHORT_VERSION_TEMPLATE_REGEX = /{{BUNDLE_SHORT_VERSION}}/gm;
10
11
  export const BUNDLE_VERSION_TEMPLATE_REGEX = /{{BUNDLE_VERSION}}/gm;
@@ -27,9 +28,11 @@ export const CIO_PUSHNOTIFICATIONHANDLERDECLARATION_SNIPPET = `
27
28
  CIOAppPushNotificationsHandler* pnHandlerObj = [[CIOAppPushNotificationsHandler alloc] init];
28
29
  `;
29
30
  export const CIO_DIDFAILTOREGISTERFORREMOTENOTIFICATIONSWITHERROR_SNIPPET = `
31
+ [super application:application didFailToRegisterForRemoteNotificationsWithError:error];
30
32
  [pnHandlerObj application:application error:error];
31
33
  `;
32
34
  export const CIO_DIDREGISTERFORREMOTENOTIFICATIONSWITHDEVICETOKEN_SNIPPET = `
35
+ [super application:application didRegisterForRemoteNotificationsWithDeviceToken:deviceToken];
33
36
  return [pnHandlerObj application:application deviceToken:deviceToken];
34
37
  `;
35
38
  export const CIO_CONFIGURECIOSDKPUSHNOTIFICATION_SNIPPET = `
@@ -49,14 +52,18 @@ export const CIO_WILLPRESENTNOTIFICATIONHANDLER_SNIPPET = `
49
52
  - (void)userNotificationCenter:(UNUserNotificationCenter* )center willPresentNotification:(UNNotification* )notification withCompletionHandler:(void (^)(UNNotificationPresentationOptions options))completionHandler {
50
53
  completionHandler( UNNotificationPresentationOptionAlert + UNNotificationPresentationOptionSound);
51
54
  }`;
52
- export const CIO_PODFILE_SNIPPET = ` pod 'CustomerIO/MessagingPushAPN', '${CIO_SDK_VERSION}'`;
53
- export const CIO_PODFILE_NOTIFICATION_SNIPPET = `
54
- target '${CIO_NOTIFICATION_TARGET_NAME}' do
55
- ${CIO_PODFILE_SNIPPET}
56
- end`;
57
- export const CIO_PODFILE_NOTIFICATION_STATIC_FRAMEWORK_SNIPPET = `
58
- target '${CIO_NOTIFICATION_TARGET_NAME}' do
59
- use_frameworks! :linkage => :static
60
- ${CIO_PODFILE_SNIPPET}
61
- end`;
55
+ export const CIO_REGISTER_PUSHNOTIFICATION_SNIPPET = `
56
+ @objc(registerPushNotification:)
57
+ public func registerPushNotification(withNotificationDelegate notificationDelegate: UNUserNotificationCenterDelegate) {
58
+
59
+ let center = UNUserNotificationCenter.current()
60
+ center.delegate = notificationDelegate
61
+ center.requestAuthorization(options: [.sound, .alert, .badge]) { (granted, error) in
62
+ if error == nil{
63
+ DispatchQueue.main.async {
64
+ UIApplication.shared.registerForRemoteNotifications()
65
+ }
66
+ }
67
+ }
68
+ }`;
62
69
  //# sourceMappingURL=ios.js.map