@use-voltra/ios-client 2.1.1 → 2.2.0

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 (131) hide show
  1. package/README.md +61 -8
  2. package/build/commonjs/dynamic-widget/api.js +15 -0
  3. package/build/commonjs/dynamic-widget/api.js.map +1 -0
  4. package/build/commonjs/index.js +15 -7
  5. package/build/commonjs/index.js.map +1 -1
  6. package/build/commonjs/native/NativeVoltra.js.map +1 -1
  7. package/build/module/dynamic-widget/api.js +10 -0
  8. package/build/module/dynamic-widget/api.js.map +1 -0
  9. package/build/module/index.js +1 -0
  10. package/build/module/index.js.map +1 -1
  11. package/build/module/native/NativeVoltra.js.map +1 -1
  12. package/build/typescript/commonjs/dynamic-widget/api.d.ts +8 -0
  13. package/build/typescript/commonjs/dynamic-widget/api.d.ts.map +1 -0
  14. package/build/typescript/commonjs/index.d.ts +1 -0
  15. package/build/typescript/commonjs/index.d.ts.map +1 -1
  16. package/build/typescript/commonjs/native/NativeVoltra.d.ts +1 -0
  17. package/build/typescript/commonjs/native/NativeVoltra.d.ts.map +1 -1
  18. package/build/typescript/module/dynamic-widget/api.d.ts +8 -0
  19. package/build/typescript/module/dynamic-widget/api.d.ts.map +1 -0
  20. package/build/typescript/module/index.d.ts +1 -0
  21. package/build/typescript/module/index.d.ts.map +1 -1
  22. package/build/typescript/module/native/NativeVoltra.d.ts +1 -0
  23. package/build/typescript/module/native/NativeVoltra.d.ts.map +1 -1
  24. package/expo-plugin/build/cjs/index.js +3 -1
  25. package/expo-plugin/build/cjs/index.js.map +1 -1
  26. package/expo-plugin/build/cjs/ios-widget/index.js +1 -1
  27. package/expo-plugin/build/cjs/ios-widget/index.js.map +1 -1
  28. package/expo-plugin/build/cjs/ios-widget/podfile.js +38 -12
  29. package/expo-plugin/build/cjs/ios-widget/podfile.js.map +1 -1
  30. package/expo-plugin/build/cjs/ios-widget/xcode/buildPhases.js +143 -107
  31. package/expo-plugin/build/cjs/ios-widget/xcode/buildPhases.js.map +1 -1
  32. package/expo-plugin/build/cjs/ios-widget/xcode/configurationList.js +30 -22
  33. package/expo-plugin/build/cjs/ios-widget/xcode/configurationList.js.map +1 -1
  34. package/expo-plugin/build/cjs/ios-widget/xcode/fileReferences.js +50 -0
  35. package/expo-plugin/build/cjs/ios-widget/xcode/fileReferences.js.map +1 -0
  36. package/expo-plugin/build/cjs/ios-widget/xcode/groups.js +45 -43
  37. package/expo-plugin/build/cjs/ios-widget/xcode/groups.js.map +1 -1
  38. package/expo-plugin/build/cjs/ios-widget/xcode/index.js +77 -91
  39. package/expo-plugin/build/cjs/ios-widget/xcode/index.js.map +1 -1
  40. package/expo-plugin/build/cjs/ios-widget/xcode/mainAppSettings.js +41 -39
  41. package/expo-plugin/build/cjs/ios-widget/xcode/mainAppSettings.js.map +1 -1
  42. package/expo-plugin/build/cjs/ios-widget/xcode/productFile.js +2 -2
  43. package/expo-plugin/build/cjs/ios-widget/xcode/productFile.js.map +1 -1
  44. package/expo-plugin/build/cjs/ios-widget/xcode/target.js +29 -63
  45. package/expo-plugin/build/cjs/ios-widget/xcode/target.js.map +1 -1
  46. package/expo-plugin/build/esm/index.js +3 -1
  47. package/expo-plugin/build/esm/index.js.map +1 -1
  48. package/expo-plugin/build/esm/ios-widget/index.js +1 -1
  49. package/expo-plugin/build/esm/ios-widget/index.js.map +1 -1
  50. package/expo-plugin/build/esm/ios-widget/podfile.js +36 -11
  51. package/expo-plugin/build/esm/ios-widget/podfile.js.map +1 -1
  52. package/expo-plugin/build/esm/ios-widget/xcode/buildPhases.js +143 -106
  53. package/expo-plugin/build/esm/ios-widget/xcode/buildPhases.js.map +1 -1
  54. package/expo-plugin/build/esm/ios-widget/xcode/configurationList.js +31 -22
  55. package/expo-plugin/build/esm/ios-widget/xcode/configurationList.js.map +1 -1
  56. package/expo-plugin/build/esm/ios-widget/xcode/fileReferences.js +45 -0
  57. package/expo-plugin/build/esm/ios-widget/xcode/fileReferences.js.map +1 -0
  58. package/expo-plugin/build/esm/ios-widget/xcode/groups.js +45 -42
  59. package/expo-plugin/build/esm/ios-widget/xcode/groups.js.map +1 -1
  60. package/expo-plugin/build/esm/ios-widget/xcode/index.js +81 -96
  61. package/expo-plugin/build/esm/ios-widget/xcode/index.js.map +1 -1
  62. package/expo-plugin/build/esm/ios-widget/xcode/mainAppSettings.js +41 -39
  63. package/expo-plugin/build/esm/ios-widget/xcode/mainAppSettings.js.map +1 -1
  64. package/expo-plugin/build/esm/ios-widget/xcode/productFile.js +3 -2
  65. package/expo-plugin/build/esm/ios-widget/xcode/productFile.js.map +1 -1
  66. package/expo-plugin/build/esm/ios-widget/xcode/target.js +28 -62
  67. package/expo-plugin/build/esm/ios-widget/xcode/target.js.map +1 -1
  68. package/expo-plugin/build/types/index.d.ts.map +1 -1
  69. package/expo-plugin/build/types/ios-widget/podfile.d.ts +19 -1
  70. package/expo-plugin/build/types/ios-widget/podfile.d.ts.map +1 -1
  71. package/expo-plugin/build/types/ios-widget/xcode/buildPhases.d.ts +3 -7
  72. package/expo-plugin/build/types/ios-widget/xcode/buildPhases.d.ts.map +1 -1
  73. package/expo-plugin/build/types/ios-widget/xcode/configurationList.d.ts +15 -10
  74. package/expo-plugin/build/types/ios-widget/xcode/configurationList.d.ts.map +1 -1
  75. package/expo-plugin/build/types/ios-widget/xcode/fileReferences.d.ts +16 -0
  76. package/expo-plugin/build/types/ios-widget/xcode/fileReferences.d.ts.map +1 -0
  77. package/expo-plugin/build/types/ios-widget/xcode/groups.d.ts +0 -4
  78. package/expo-plugin/build/types/ios-widget/xcode/groups.d.ts.map +1 -1
  79. package/expo-plugin/build/types/ios-widget/xcode/index.d.ts +22 -3
  80. package/expo-plugin/build/types/ios-widget/xcode/index.d.ts.map +1 -1
  81. package/expo-plugin/build/types/ios-widget/xcode/mainAppSettings.d.ts +16 -4
  82. package/expo-plugin/build/types/ios-widget/xcode/mainAppSettings.d.ts.map +1 -1
  83. package/expo-plugin/build/types/ios-widget/xcode/productFile.d.ts +0 -4
  84. package/expo-plugin/build/types/ios-widget/xcode/productFile.d.ts.map +1 -1
  85. package/expo-plugin/build/types/ios-widget/xcode/target.d.ts +11 -26
  86. package/expo-plugin/build/types/ios-widget/xcode/target.d.ts.map +1 -1
  87. package/expo-plugin/src/index.ts +5 -1
  88. package/expo-plugin/src/ios-widget/index.ts +1 -1
  89. package/expo-plugin/src/ios-widget/podfile.ts +46 -13
  90. package/expo-plugin/src/ios-widget/xcode/__fixtures__/fresh.pbxproj +197 -0
  91. package/expo-plugin/src/ios-widget/xcode/__fixtures__/with-existing-extension.pbxproj +321 -0
  92. package/expo-plugin/src/ios-widget/xcode/__fixtures__/with-per-config-signing.pbxproj +203 -0
  93. package/expo-plugin/src/ios-widget/xcode/__snapshots__/applyXcodeChanges.node.test.ts.snap +357 -0
  94. package/expo-plugin/src/ios-widget/xcode/__tests__/pbxConsistency.ts +130 -0
  95. package/expo-plugin/src/ios-widget/xcode/buildPhases.ts +151 -152
  96. package/expo-plugin/src/ios-widget/xcode/configurationList.ts +52 -35
  97. package/expo-plugin/src/ios-widget/xcode/fileReferences.ts +51 -0
  98. package/expo-plugin/src/ios-widget/xcode/groups.ts +52 -54
  99. package/expo-plugin/src/ios-widget/xcode/index.ts +107 -119
  100. package/expo-plugin/src/ios-widget/xcode/mainAppSettings.ts +59 -54
  101. package/expo-plugin/src/ios-widget/xcode/productFile.ts +3 -2
  102. package/expo-plugin/src/ios-widget/xcode/target.ts +31 -83
  103. package/ios/Package.swift +7 -1
  104. package/ios/app/NativeVoltra.mm +19 -0
  105. package/ios/app/VoltraModule.swift +18 -0
  106. package/ios/app/VoltraModuleImpl.swift +16 -0
  107. package/ios/shared/DynamicWidgetPropsCodec.swift +51 -0
  108. package/ios/shared/DynamicWidgetPropsStorage.swift +53 -0
  109. package/ios/shared/DynamicWidgetPropsStore.swift +50 -0
  110. package/ios/shared/DynamicWidgetRenderCoordinator.swift +31 -0
  111. package/ios/shared/DynamicWidgetUpdater.swift +30 -0
  112. package/ios/shared/VoltraConstants.swift +4 -0
  113. package/ios/shared/VoltraJSRenderer.swift +3 -1
  114. package/ios/shared/VoltraNode.swift +6 -2
  115. package/ios/shared/VoltraWidgetDefaults.swift +9 -1
  116. package/ios/target/VoltraClientWidgetRuntime.swift +17 -5
  117. package/ios/target/VoltraHomeWidget.swift +6 -2
  118. package/ios/target/VoltraWidget.swift +3 -1
  119. package/ios/ui/Helpers/VoltraDeepLinkResolver.swift +3 -1
  120. package/ios/ui/Helpers/VoltraProgressDriver.swift +6 -2
  121. package/ios/ui/Layout/VoltraFlexStackLayout.swift +9 -3
  122. package/ios/ui/Style/JSColorParser.swift +24 -8
  123. package/ios/ui/Style/JSGradientParser.swift +36 -12
  124. package/ios/ui/Style/JSStyleParser.swift +36 -12
  125. package/ios/ui/Style/LayoutStyle.swift +12 -4
  126. package/ios/ui/Views/VoltraChart.swift +52 -16
  127. package/ios/ui/Views/VoltraLinearGradient.swift +6 -2
  128. package/package.json +5 -5
  129. package/src/dynamic-widget/api.ts +25 -0
  130. package/src/index.ts +1 -0
  131. package/src/native/NativeVoltra.ts +1 -0
@@ -1,11 +1,23 @@
1
1
  import { ConfigPlugin, withPodfile as withExpoPodfile } from '@expo/config-plugins'
2
2
 
3
+ const BEGIN_MARKER = '# @voltra-widget-target BEGIN'
4
+ const END_MARKER = '# @voltra-widget-target END'
5
+
6
+ // Matches a legacy (pre-marker) block emitted by older plugin versions: a bare header comment
7
+ // followed directly by the `target '<name>' do ... end` block, with no surrounding markers.
8
+ // Non-greedy up to the first line-start `end` — our generated block never nests another
9
+ // `do...end`, so this always lands on the block's own closing `end`.
10
+ const LEGACY_BLOCK_RE =
11
+ /\n?# Voltra Widget Extension Target\n# DO NOT MODIFY THIS FILE - IT IS AUTO-GENERATED BY THE VOLTRA PLUGIN\ntarget '[^']*' do\n[\s\S]*?\nend/
12
+
13
+ // Matches a marked block (any target name) end-to-end, inclusive of both markers.
14
+ const MARKED_BLOCK_RE = new RegExp(`${BEGIN_MARKER}[\\s\\S]*?${END_MARKER}`)
15
+
3
16
  /**
4
- * Generates the Podfile target content for the widget extension.
17
+ * Generates the Podfile target content for the widget extension (unwrapped, no markers).
5
18
  */
6
19
  function getTargetContent(targetName: string): string {
7
- return `
8
- # Voltra Widget Extension Target
20
+ return `# Voltra Widget Extension Target
9
21
  # DO NOT MODIFY THIS FILE - IT IS AUTO-GENERATED BY THE VOLTRA PLUGIN
10
22
  target '${targetName}' do
11
23
  use_frameworks! :linkage => podfile_properties['ios.useFrameworks'].to_sym if podfile_properties['ios.useFrameworks']
@@ -14,31 +26,52 @@ target '${targetName}' do
14
26
  require 'pathname'
15
27
  project_root = "#{Pod::Config.instance.installation_root}/.."
16
28
  voltra_client_root = \`node --print "require.resolve('@use-voltra/ios-client/package.json', {paths: ['#{project_root}']})" 2>/dev/null\`.strip.gsub('/package.json', '')
29
+ raise "Voltra: could not resolve @use-voltra/ios-client from #{project_root}. Is @use-voltra/ios-client installed, and is node on PATH for pod install?" if voltra_client_root.empty?
17
30
  voltra_widget_podspec_root = File.join(voltra_client_root, 'ios')
31
+ voltra_widget_podspec_root = File.realpath(voltra_widget_podspec_root) if File.exist?(voltra_widget_podspec_root)
18
32
  podspec_dir_path = Pathname.new(voltra_widget_podspec_root).relative_path_from(Pathname.new(__dir__)).to_path
19
33
 
20
34
  pod 'VoltraWidget', :path => podspec_dir_path
21
35
  end`
22
36
  }
23
37
 
38
+ function buildMarkedBlock(targetName: string): string {
39
+ return `${BEGIN_MARKER}\n${getTargetContent(targetName)}\n${END_MARKER}`
40
+ }
41
+
42
+ /**
43
+ * Idempotently inserts/upgrades the Voltra widget target block in Podfile contents:
44
+ * - marked block already present → replaced in place (covers renamed targets too, since the
45
+ * markers are name-agnostic)
46
+ * - legacy (pre-marker) block present → replaced with the new marked block
47
+ * - neither present → appended
48
+ */
49
+ export function upsertWidgetTarget(contents: string, targetName: string): string {
50
+ const markedBlock = buildMarkedBlock(targetName)
51
+
52
+ if (MARKED_BLOCK_RE.test(contents)) {
53
+ return contents.replace(MARKED_BLOCK_RE, markedBlock)
54
+ }
55
+
56
+ if (LEGACY_BLOCK_RE.test(contents)) {
57
+ return contents.replace(LEGACY_BLOCK_RE, `\n${markedBlock}`)
58
+ }
59
+
60
+ return `${contents.trimEnd()}\n\n${markedBlock}\n`
61
+ }
62
+
24
63
  export interface ConfigurePodfileProps {
25
64
  targetName: string
26
65
  }
27
66
 
28
67
  /**
29
- * Plugin step that adds the Podfile target for the widget extension.
68
+ * Plugin step that adds (or upgrades) the Podfile target for the widget extension.
30
69
  */
31
70
  export const configurePodfile: ConfigPlugin<ConfigurePodfileProps> = (config, { targetName }) => {
32
71
  return withExpoPodfile(config, (podfile) => {
33
- const targetContent = getTargetContent(targetName)
34
-
35
- // Check if target already exists (avoid duplicates)
36
- const targetMarker = "target '" + targetName + "'"
37
- if (podfile.modResults.contents.includes(targetMarker)) {
38
- return podfile
39
- }
40
-
41
- podfile.modResults.contents = podfile.modResults.contents + '\n' + targetContent
72
+ podfile.modResults.contents = upsertWidgetTarget(podfile.modResults.contents, targetName)
42
73
  return podfile
43
74
  })
44
75
  }
76
+
77
+ export const __test__ = { BEGIN_MARKER, END_MARKER, getTargetContent }
@@ -0,0 +1,197 @@
1
+ // !$*UTF8*$!
2
+ {
3
+ archiveVersion = 1;
4
+ classes = {
5
+ };
6
+ objectVersion = 54;
7
+ objects = {
8
+
9
+ /* Begin PBXBuildFile section */
10
+ 13B07FBF1A68108700A75B9A /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 13B07FB01A68108700A75B9A /* AppDelegate.swift */; };
11
+ 13B07FC11A68108700A75B9A /* Images.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 13B07FB51A68108700A75B9A /* Images.xcassets */; };
12
+ 13B07FC21A68108700A75B9A /* Info.plist in Resources */ = {isa = PBXBuildFile; fileRef = 13B07FB61A68108700A75B9A /* Info.plist */; };
13
+ /* End PBXBuildFile section */
14
+
15
+ /* Begin PBXFileReference section */
16
+ 13B07F961A680F5B00A75B9A /* voltraexample.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = voltraexample.app; sourceTree = BUILT_PRODUCTS_DIR; };
17
+ 13B07FB01A68108700A75B9A /* AppDelegate.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; name = AppDelegate.swift; path = voltraexample/AppDelegate.swift; sourceTree = "<group>"; };
18
+ 13B07FB51A68108700A75B9A /* Images.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; name = Images.xcassets; path = voltraexample/Images.xcassets; sourceTree = "<group>"; };
19
+ 13B07FB61A68108700A75B9A /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; name = Info.plist; path = voltraexample/Info.plist; sourceTree = "<group>"; };
20
+ /* End PBXFileReference section */
21
+
22
+ /* Begin PBXFrameworksBuildPhase section */
23
+ 13B07F8C1A680F5B00A75B9A /* Frameworks */ = {
24
+ isa = PBXFrameworksBuildPhase;
25
+ buildActionMask = 2147483647;
26
+ files = (
27
+ );
28
+ runOnlyForDeploymentPostprocessing = 0;
29
+ };
30
+ /* End PBXFrameworksBuildPhase section */
31
+
32
+ /* Begin PBXGroup section */
33
+ 83CBB9F61A601CBA00E9B192 = {
34
+ isa = PBXGroup;
35
+ children = (
36
+ 13B07FAE1A68108700A75B9A /* voltraexample */,
37
+ 83CBBA001A601CBA00E9B192 /* Products */,
38
+ );
39
+ indentWidth = 2;
40
+ sourceTree = "<group>";
41
+ tabWidth = 2;
42
+ usesTabs = 0;
43
+ };
44
+ 13B07FAE1A68108700A75B9A /* voltraexample */ = {
45
+ isa = PBXGroup;
46
+ children = (
47
+ 13B07FB01A68108700A75B9A /* AppDelegate.swift */,
48
+ 13B07FB51A68108700A75B9A /* Images.xcassets */,
49
+ 13B07FB61A68108700A75B9A /* Info.plist */,
50
+ );
51
+ name = voltraexample;
52
+ sourceTree = "<group>";
53
+ };
54
+ 83CBBA001A601CBA00E9B192 /* Products */ = {
55
+ isa = PBXGroup;
56
+ children = (
57
+ 13B07F961A680F5B00A75B9A /* voltraexample.app */,
58
+ );
59
+ name = Products;
60
+ sourceTree = "<group>";
61
+ };
62
+ /* End PBXGroup section */
63
+
64
+ /* Begin PBXNativeTarget section */
65
+ 13B07F861A680F5B00A75B9A /* voltraexample */ = {
66
+ isa = PBXNativeTarget;
67
+ buildConfigurationList = 13B07F931A680F5B00A75B9A /* Build configuration list for PBXNativeTarget "voltraexample" */;
68
+ buildPhases = (
69
+ 13B07F871A680F5B00A75B9A /* Sources */,
70
+ 13B07F8C1A680F5B00A75B9A /* Frameworks */,
71
+ 13B07F8E1A680F5B00A75B9A /* Resources */,
72
+ );
73
+ buildRules = (
74
+ );
75
+ dependencies = (
76
+ );
77
+ name = voltraexample;
78
+ productName = voltraexample;
79
+ productReference = 13B07F961A680F5B00A75B9A /* voltraexample.app */;
80
+ productType = "com.apple.product-type.application";
81
+ };
82
+ /* End PBXNativeTarget section */
83
+
84
+ /* Begin PBXProject section */
85
+ 83CBB9F71A601CBA00E9B192 /* Project object */ = {
86
+ isa = PBXProject;
87
+ attributes = {
88
+ LastUpgradeCheck = 1210;
89
+ TargetAttributes = {
90
+ 13B07F861A680F5B00A75B9A = {
91
+ LastSwiftMigration = 1250;
92
+ };
93
+ };
94
+ };
95
+ buildConfigurationList = 83CBB9FA1A601CBA00E9B192 /* Build configuration list for PBXProject "voltraexample" */;
96
+ compatibilityVersion = "Xcode 12.0";
97
+ developmentRegion = en;
98
+ hasScannedForEncodings = 0;
99
+ knownRegions = (
100
+ en,
101
+ Base,
102
+ );
103
+ mainGroup = 83CBB9F61A601CBA00E9B192;
104
+ productRefGroup = 83CBBA001A601CBA00E9B192 /* Products */;
105
+ projectDirPath = "";
106
+ projectRoot = "";
107
+ targets = (
108
+ 13B07F861A680F5B00A75B9A /* voltraexample */,
109
+ );
110
+ };
111
+ /* End PBXProject section */
112
+
113
+ /* Begin PBXResourcesBuildPhase section */
114
+ 13B07F8E1A680F5B00A75B9A /* Resources */ = {
115
+ isa = PBXResourcesBuildPhase;
116
+ buildActionMask = 2147483647;
117
+ files = (
118
+ 13B07FC11A68108700A75B9A /* Images.xcassets in Resources */,
119
+ 13B07FC21A68108700A75B9A /* Info.plist in Resources */,
120
+ );
121
+ runOnlyForDeploymentPostprocessing = 0;
122
+ };
123
+ /* End PBXResourcesBuildPhase section */
124
+
125
+ /* Begin PBXSourcesBuildPhase section */
126
+ 13B07F871A680F5B00A75B9A /* Sources */ = {
127
+ isa = PBXSourcesBuildPhase;
128
+ buildActionMask = 2147483647;
129
+ files = (
130
+ 13B07FBF1A68108700A75B9A /* AppDelegate.swift in Sources */,
131
+ );
132
+ runOnlyForDeploymentPostprocessing = 0;
133
+ };
134
+ /* End PBXSourcesBuildPhase section */
135
+
136
+ /* Begin XCBuildConfiguration section */
137
+ 13B07F941A680F5B00A75B9A /* Debug */ = {
138
+ isa = XCBuildConfiguration;
139
+ buildSettings = {
140
+ INFOPLIST_FILE = voltraexample/Info.plist;
141
+ PRODUCT_BUNDLE_IDENTIFIER = com.voltra.example;
142
+ PRODUCT_NAME = voltraexample;
143
+ SWIFT_VERSION = 5.0;
144
+ };
145
+ name = Debug;
146
+ };
147
+ 13B07F951A680F5B00A75B9A /* Release */ = {
148
+ isa = XCBuildConfiguration;
149
+ buildSettings = {
150
+ INFOPLIST_FILE = voltraexample/Info.plist;
151
+ PRODUCT_BUNDLE_IDENTIFIER = com.voltra.example;
152
+ PRODUCT_NAME = voltraexample;
153
+ SWIFT_VERSION = 5.0;
154
+ };
155
+ name = Release;
156
+ };
157
+ 83CBBA201A601CBA00E9B192 /* Debug */ = {
158
+ isa = XCBuildConfiguration;
159
+ buildSettings = {
160
+ IPHONEOS_DEPLOYMENT_TARGET = 15.1;
161
+ SDKROOT = iphoneos;
162
+ };
163
+ name = Debug;
164
+ };
165
+ 83CBBA211A601CBA00E9B192 /* Release */ = {
166
+ isa = XCBuildConfiguration;
167
+ buildSettings = {
168
+ IPHONEOS_DEPLOYMENT_TARGET = 15.1;
169
+ SDKROOT = iphoneos;
170
+ };
171
+ name = Release;
172
+ };
173
+ /* End XCBuildConfiguration section */
174
+
175
+ /* Begin XCConfigurationList section */
176
+ 13B07F931A680F5B00A75B9A /* Build configuration list for PBXNativeTarget "voltraexample" */ = {
177
+ isa = XCConfigurationList;
178
+ buildConfigurations = (
179
+ 13B07F941A680F5B00A75B9A /* Debug */,
180
+ 13B07F951A680F5B00A75B9A /* Release */,
181
+ );
182
+ defaultConfigurationIsVisible = 0;
183
+ defaultConfigurationName = Release;
184
+ };
185
+ 83CBB9FA1A601CBA00E9B192 /* Build configuration list for PBXProject "voltraexample" */ = {
186
+ isa = XCConfigurationList;
187
+ buildConfigurations = (
188
+ 83CBBA201A601CBA00E9B192 /* Debug */,
189
+ 83CBBA211A601CBA00E9B192 /* Release */,
190
+ );
191
+ defaultConfigurationIsVisible = 0;
192
+ defaultConfigurationName = Release;
193
+ };
194
+ /* End XCConfigurationList section */
195
+ };
196
+ rootObject = 83CBB9F71A601CBA00E9B192 /* Project object */;
197
+ }
@@ -0,0 +1,321 @@
1
+ // !$*UTF8*$!
2
+ {
3
+ archiveVersion = 1;
4
+ classes = {
5
+ };
6
+ objectVersion = 54;
7
+ objects = {
8
+
9
+ /* Begin PBXBuildFile section */
10
+ 13B07FBF1A68108700A75B9A /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 13B07FB01A68108700A75B9A /* AppDelegate.swift */; };
11
+ 13B07FC11A68108700A75B9A /* Images.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 13B07FB51A68108700A75B9A /* Images.xcassets */; };
12
+ 13B07FC21A68108700A75B9A /* Info.plist in Resources */ = {isa = PBXBuildFile; fileRef = 13B07FB61A68108700A75B9A /* Info.plist */; };
13
+ AC710000000000000000000C /* LiveActivity.swift in Sources */ = {isa = PBXBuildFile; fileRef = AC710000000000000000000B /* LiveActivity.swift */; };
14
+ AC710000000000000000000A /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = AC7100000000000000000008 /* Assets.xcassets */; };
15
+ AC7100000000000000000004 /* ABRPLiveActivity.appex in Embed App Extensions */ = {isa = PBXBuildFile; fileRef = AC7100000000000000000002 /* ABRPLiveActivity.appex */; settings = {ATTRIBUTES = (RemoveHeadersOnCopy, ); }; };
16
+ /* End PBXBuildFile section */
17
+
18
+ /* Begin PBXCopyFilesBuildPhase section */
19
+ AC7100000000000000000003 /* Embed App Extensions */ = {
20
+ isa = PBXCopyFilesBuildPhase;
21
+ buildActionMask = 2147483647;
22
+ dstPath = "";
23
+ dstSubfolderSpec = 13;
24
+ files = (
25
+ AC7100000000000000000004 /* ABRPLiveActivity.appex in Embed App Extensions */,
26
+ );
27
+ name = "Embed App Extensions";
28
+ runOnlyForDeploymentPostprocessing = 0;
29
+ };
30
+ /* End PBXCopyFilesBuildPhase section */
31
+
32
+ /* Begin PBXFileReference section */
33
+ 13B07F961A680F5B00A75B9A /* voltraexample.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = voltraexample.app; sourceTree = BUILT_PRODUCTS_DIR; };
34
+ 13B07FB01A68108700A75B9A /* AppDelegate.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; name = AppDelegate.swift; path = voltraexample/AppDelegate.swift; sourceTree = "<group>"; };
35
+ 13B07FB51A68108700A75B9A /* Images.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; name = Images.xcassets; path = voltraexample/Images.xcassets; sourceTree = "<group>"; };
36
+ 13B07FB61A68108700A75B9A /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; name = Info.plist; path = voltraexample/Info.plist; sourceTree = "<group>"; };
37
+ AC7100000000000000000002 /* ABRPLiveActivity.appex */ = {isa = PBXFileReference; explicitFileType = "wrapper.app-extension"; includeInIndex = 0; path = ABRPLiveActivity.appex; sourceTree = BUILT_PRODUCTS_DIR; };
38
+ AC710000000000000000000B /* LiveActivity.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = LiveActivity.swift; sourceTree = "<group>"; };
39
+ AC7100000000000000000008 /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = "<group>"; };
40
+ /* End PBXFileReference section */
41
+
42
+ /* Begin PBXFrameworksBuildPhase section */
43
+ 13B07F8C1A680F5B00A75B9A /* Frameworks */ = {
44
+ isa = PBXFrameworksBuildPhase;
45
+ buildActionMask = 2147483647;
46
+ files = (
47
+ );
48
+ runOnlyForDeploymentPostprocessing = 0;
49
+ };
50
+ AC7100000000000000000006 /* Frameworks */ = {
51
+ isa = PBXFrameworksBuildPhase;
52
+ buildActionMask = 2147483647;
53
+ files = (
54
+ );
55
+ runOnlyForDeploymentPostprocessing = 0;
56
+ };
57
+ /* End PBXFrameworksBuildPhase section */
58
+
59
+ /* Begin PBXGroup section */
60
+ 83CBB9F61A601CBA00E9B192 = {
61
+ isa = PBXGroup;
62
+ children = (
63
+ 13B07FAE1A68108700A75B9A /* voltraexample */,
64
+ AC710000000000000000000A /* ABRPLiveActivity */,
65
+ 83CBBA001A601CBA00E9B192 /* Products */,
66
+ );
67
+ indentWidth = 2;
68
+ sourceTree = "<group>";
69
+ tabWidth = 2;
70
+ usesTabs = 0;
71
+ };
72
+ 13B07FAE1A68108700A75B9A /* voltraexample */ = {
73
+ isa = PBXGroup;
74
+ children = (
75
+ 13B07FB01A68108700A75B9A /* AppDelegate.swift */,
76
+ 13B07FB51A68108700A75B9A /* Images.xcassets */,
77
+ 13B07FB61A68108700A75B9A /* Info.plist */,
78
+ );
79
+ name = voltraexample;
80
+ sourceTree = "<group>";
81
+ };
82
+ AC710000000000000000000A /* ABRPLiveActivity */ = {
83
+ isa = PBXGroup;
84
+ children = (
85
+ AC710000000000000000000B /* LiveActivity.swift */,
86
+ AC7100000000000000000008 /* Assets.xcassets */,
87
+ );
88
+ path = ABRPLiveActivity;
89
+ sourceTree = "<group>";
90
+ };
91
+ 83CBBA001A601CBA00E9B192 /* Products */ = {
92
+ isa = PBXGroup;
93
+ children = (
94
+ 13B07F961A680F5B00A75B9A /* voltraexample.app */,
95
+ AC7100000000000000000002 /* ABRPLiveActivity.appex */,
96
+ );
97
+ name = Products;
98
+ sourceTree = "<group>";
99
+ };
100
+ /* End PBXGroup section */
101
+
102
+ /* Begin PBXNativeTarget section */
103
+ 13B07F861A680F5B00A75B9A /* voltraexample */ = {
104
+ isa = PBXNativeTarget;
105
+ buildConfigurationList = 13B07F931A680F5B00A75B9A /* Build configuration list for PBXNativeTarget "voltraexample" */;
106
+ buildPhases = (
107
+ 13B07F871A680F5B00A75B9A /* Sources */,
108
+ 13B07F8C1A680F5B00A75B9A /* Frameworks */,
109
+ 13B07F8E1A680F5B00A75B9A /* Resources */,
110
+ AC7100000000000000000003 /* Embed App Extensions */,
111
+ );
112
+ buildRules = (
113
+ );
114
+ dependencies = (
115
+ AC7100000000000000000010 /* PBXTargetDependency */,
116
+ );
117
+ name = voltraexample;
118
+ productName = voltraexample;
119
+ productReference = 13B07F961A680F5B00A75B9A /* voltraexample.app */;
120
+ productType = "com.apple.product-type.application";
121
+ };
122
+ AC7100000000000000000001 /* ABRPLiveActivity */ = {
123
+ isa = PBXNativeTarget;
124
+ buildConfigurationList = AC710000000000000000000D /* Build configuration list for PBXNativeTarget "ABRPLiveActivity" */;
125
+ buildPhases = (
126
+ AC7100000000000000000005 /* Sources */,
127
+ AC7100000000000000000006 /* Frameworks */,
128
+ AC7100000000000000000007 /* Resources */,
129
+ );
130
+ buildRules = (
131
+ );
132
+ dependencies = (
133
+ );
134
+ name = ABRPLiveActivity;
135
+ productName = ABRPLiveActivity;
136
+ productReference = AC7100000000000000000002 /* ABRPLiveActivity.appex */;
137
+ productType = "com.apple.product-type.app-extension";
138
+ };
139
+ /* End PBXNativeTarget section */
140
+
141
+ /* Begin PBXProject section */
142
+ 83CBB9F71A601CBA00E9B192 /* Project object */ = {
143
+ isa = PBXProject;
144
+ attributes = {
145
+ LastUpgradeCheck = 1210;
146
+ TargetAttributes = {
147
+ 13B07F861A680F5B00A75B9A = {
148
+ LastSwiftMigration = 1250;
149
+ };
150
+ AC7100000000000000000001 = {
151
+ LastSwiftMigration = 1250;
152
+ };
153
+ };
154
+ };
155
+ buildConfigurationList = 83CBB9FA1A601CBA00E9B192 /* Build configuration list for PBXProject "voltraexample" */;
156
+ compatibilityVersion = "Xcode 12.0";
157
+ developmentRegion = en;
158
+ hasScannedForEncodings = 0;
159
+ knownRegions = (
160
+ en,
161
+ Base,
162
+ );
163
+ mainGroup = 83CBB9F61A601CBA00E9B192;
164
+ productRefGroup = 83CBBA001A601CBA00E9B192 /* Products */;
165
+ projectDirPath = "";
166
+ projectRoot = "";
167
+ targets = (
168
+ 13B07F861A680F5B00A75B9A /* voltraexample */,
169
+ AC7100000000000000000001 /* ABRPLiveActivity */,
170
+ );
171
+ };
172
+ /* End PBXProject section */
173
+
174
+ /* Begin PBXResourcesBuildPhase section */
175
+ 13B07F8E1A680F5B00A75B9A /* Resources */ = {
176
+ isa = PBXResourcesBuildPhase;
177
+ buildActionMask = 2147483647;
178
+ files = (
179
+ 13B07FC11A68108700A75B9A /* Images.xcassets in Resources */,
180
+ 13B07FC21A68108700A75B9A /* Info.plist in Resources */,
181
+ );
182
+ runOnlyForDeploymentPostprocessing = 0;
183
+ };
184
+ AC7100000000000000000007 /* Resources */ = {
185
+ isa = PBXResourcesBuildPhase;
186
+ buildActionMask = 2147483647;
187
+ files = (
188
+ AC710000000000000000000A /* Assets.xcassets in Resources */,
189
+ );
190
+ runOnlyForDeploymentPostprocessing = 0;
191
+ };
192
+ /* End PBXResourcesBuildPhase section */
193
+
194
+ /* Begin PBXSourcesBuildPhase section */
195
+ 13B07F871A680F5B00A75B9A /* Sources */ = {
196
+ isa = PBXSourcesBuildPhase;
197
+ buildActionMask = 2147483647;
198
+ files = (
199
+ 13B07FBF1A68108700A75B9A /* AppDelegate.swift in Sources */,
200
+ );
201
+ runOnlyForDeploymentPostprocessing = 0;
202
+ };
203
+ AC7100000000000000000005 /* Sources */ = {
204
+ isa = PBXSourcesBuildPhase;
205
+ buildActionMask = 2147483647;
206
+ files = (
207
+ AC710000000000000000000C /* LiveActivity.swift in Sources */,
208
+ );
209
+ runOnlyForDeploymentPostprocessing = 0;
210
+ };
211
+ /* End PBXSourcesBuildPhase section */
212
+
213
+ /* Begin PBXTargetDependency section */
214
+ AC7100000000000000000010 /* PBXTargetDependency */ = {
215
+ isa = PBXTargetDependency;
216
+ target = AC7100000000000000000001 /* ABRPLiveActivity */;
217
+ targetProxy = AC7100000000000000000011 /* PBXContainerItemProxy */;
218
+ };
219
+ /* End PBXTargetDependency section */
220
+
221
+ /* Begin PBXContainerItemProxy section */
222
+ AC7100000000000000000011 /* PBXContainerItemProxy */ = {
223
+ isa = PBXContainerItemProxy;
224
+ containerPortal = 83CBB9F71A601CBA00E9B192 /* Project object */;
225
+ proxyType = 1;
226
+ remoteGlobalIDString = AC7100000000000000000001;
227
+ remoteInfo = ABRPLiveActivity;
228
+ };
229
+ /* End PBXContainerItemProxy section */
230
+
231
+ /* Begin XCBuildConfiguration section */
232
+ 13B07F941A680F5B00A75B9A /* Debug */ = {
233
+ isa = XCBuildConfiguration;
234
+ buildSettings = {
235
+ INFOPLIST_FILE = voltraexample/Info.plist;
236
+ PRODUCT_BUNDLE_IDENTIFIER = com.voltra.example;
237
+ PRODUCT_NAME = voltraexample;
238
+ SWIFT_VERSION = 5.0;
239
+ };
240
+ name = Debug;
241
+ };
242
+ 13B07F951A680F5B00A75B9A /* Release */ = {
243
+ isa = XCBuildConfiguration;
244
+ buildSettings = {
245
+ INFOPLIST_FILE = voltraexample/Info.plist;
246
+ PRODUCT_BUNDLE_IDENTIFIER = com.voltra.example;
247
+ PRODUCT_NAME = voltraexample;
248
+ SWIFT_VERSION = 5.0;
249
+ };
250
+ name = Release;
251
+ };
252
+ AC710000000000000000000E /* Debug */ = {
253
+ isa = XCBuildConfiguration;
254
+ buildSettings = {
255
+ INFOPLIST_FILE = ABRPLiveActivity/Info.plist;
256
+ PRODUCT_BUNDLE_IDENTIFIER = com.voltra.example.ABRPLiveActivity;
257
+ PRODUCT_NAME = ABRPLiveActivity;
258
+ SWIFT_VERSION = 5.0;
259
+ };
260
+ name = Debug;
261
+ };
262
+ AC710000000000000000000F /* Release */ = {
263
+ isa = XCBuildConfiguration;
264
+ buildSettings = {
265
+ INFOPLIST_FILE = ABRPLiveActivity/Info.plist;
266
+ PRODUCT_BUNDLE_IDENTIFIER = com.voltra.example.ABRPLiveActivity;
267
+ PRODUCT_NAME = ABRPLiveActivity;
268
+ SWIFT_VERSION = 5.0;
269
+ };
270
+ name = Release;
271
+ };
272
+ 83CBBA201A601CBA00E9B192 /* Debug */ = {
273
+ isa = XCBuildConfiguration;
274
+ buildSettings = {
275
+ IPHONEOS_DEPLOYMENT_TARGET = 15.1;
276
+ SDKROOT = iphoneos;
277
+ };
278
+ name = Debug;
279
+ };
280
+ 83CBBA211A601CBA00E9B192 /* Release */ = {
281
+ isa = XCBuildConfiguration;
282
+ buildSettings = {
283
+ IPHONEOS_DEPLOYMENT_TARGET = 15.1;
284
+ SDKROOT = iphoneos;
285
+ };
286
+ name = Release;
287
+ };
288
+ /* End XCBuildConfiguration section */
289
+
290
+ /* Begin XCConfigurationList section */
291
+ 13B07F931A680F5B00A75B9A /* Build configuration list for PBXNativeTarget "voltraexample" */ = {
292
+ isa = XCConfigurationList;
293
+ buildConfigurations = (
294
+ 13B07F941A680F5B00A75B9A /* Debug */,
295
+ 13B07F951A680F5B00A75B9A /* Release */,
296
+ );
297
+ defaultConfigurationIsVisible = 0;
298
+ defaultConfigurationName = Release;
299
+ };
300
+ AC710000000000000000000D /* Build configuration list for PBXNativeTarget "ABRPLiveActivity" */ = {
301
+ isa = XCConfigurationList;
302
+ buildConfigurations = (
303
+ AC710000000000000000000E /* Debug */,
304
+ AC710000000000000000000F /* Release */,
305
+ );
306
+ defaultConfigurationIsVisible = 0;
307
+ defaultConfigurationName = Release;
308
+ };
309
+ 83CBB9FA1A601CBA00E9B192 /* Build configuration list for PBXProject "voltraexample" */ = {
310
+ isa = XCConfigurationList;
311
+ buildConfigurations = (
312
+ 83CBBA201A601CBA00E9B192 /* Debug */,
313
+ 83CBBA211A601CBA00E9B192 /* Release */,
314
+ );
315
+ defaultConfigurationIsVisible = 0;
316
+ defaultConfigurationName = Release;
317
+ };
318
+ /* End XCConfigurationList section */
319
+ };
320
+ rootObject = 83CBB9F71A601CBA00E9B192 /* Project object */;
321
+ }