@use-voltra/ios-client 2.1.1 → 2.3.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.
- package/README.md +61 -8
- package/Voltra.podspec +1 -0
- package/build/commonjs/dynamic-widget/api.js +15 -0
- package/build/commonjs/dynamic-widget/api.js.map +1 -0
- package/build/commonjs/events.js +23 -0
- package/build/commonjs/events.js.map +1 -1
- package/build/commonjs/index.js +74 -7
- package/build/commonjs/index.js.map +1 -1
- package/build/commonjs/live-activity/api.js +3 -1
- package/build/commonjs/live-activity/api.js.map +1 -1
- package/build/commonjs/live-activity/dynamic-api.js +173 -0
- package/build/commonjs/live-activity/dynamic-api.js.map +1 -0
- package/build/commonjs/native/NativeVoltra.js.map +1 -1
- package/build/commonjs/utils/enableDynamicLiveActivityHotReload.js +47 -0
- package/build/commonjs/utils/enableDynamicLiveActivityHotReload.js.map +1 -0
- package/build/commonjs/utils/enableWidgetHotReload.js +8 -11
- package/build/commonjs/utils/enableWidgetHotReload.js.map +1 -1
- package/build/commonjs/utils/useUpdateOnHMR.js +3 -7
- package/build/commonjs/utils/useUpdateOnHMR.js.map +1 -1
- package/build/commonjs/widgets/server-credentials.js +9 -0
- package/build/commonjs/widgets/server-credentials.js.map +1 -1
- package/build/commonjs/widgets/server-update.js +78 -0
- package/build/commonjs/widgets/server-update.js.map +1 -0
- package/build/module/dynamic-widget/api.js +10 -0
- package/build/module/dynamic-widget/api.js.map +1 -0
- package/build/module/events.js +23 -0
- package/build/module/events.js.map +1 -1
- package/build/module/index.js +4 -0
- package/build/module/index.js.map +1 -1
- package/build/module/live-activity/api.js +2 -2
- package/build/module/live-activity/api.js.map +1 -1
- package/build/module/live-activity/dynamic-api.js +167 -0
- package/build/module/live-activity/dynamic-api.js.map +1 -0
- package/build/module/native/NativeVoltra.js.map +1 -1
- package/build/module/utils/enableDynamicLiveActivityHotReload.js +43 -0
- package/build/module/utils/enableDynamicLiveActivityHotReload.js.map +1 -0
- package/build/module/utils/enableWidgetHotReload.js +9 -11
- package/build/module/utils/enableWidgetHotReload.js.map +1 -1
- package/build/module/utils/useUpdateOnHMR.js +3 -7
- package/build/module/utils/useUpdateOnHMR.js.map +1 -1
- package/build/module/widgets/server-credentials.js +9 -0
- package/build/module/widgets/server-credentials.js.map +1 -1
- package/build/module/widgets/server-update.js +72 -0
- package/build/module/widgets/server-update.js.map +1 -0
- package/build/typescript/commonjs/dynamic-widget/api.d.ts +8 -0
- package/build/typescript/commonjs/dynamic-widget/api.d.ts.map +1 -0
- package/build/typescript/commonjs/events.d.ts +7 -0
- package/build/typescript/commonjs/events.d.ts.map +1 -1
- package/build/typescript/commonjs/index.d.ts +4 -0
- package/build/typescript/commonjs/index.d.ts.map +1 -1
- package/build/typescript/commonjs/live-activity/api.d.ts +7 -0
- package/build/typescript/commonjs/live-activity/api.d.ts.map +1 -1
- package/build/typescript/commonjs/live-activity/dynamic-api.d.ts +54 -0
- package/build/typescript/commonjs/live-activity/dynamic-api.d.ts.map +1 -0
- package/build/typescript/commonjs/native/NativeVoltra.d.ts +21 -0
- package/build/typescript/commonjs/native/NativeVoltra.d.ts.map +1 -1
- package/build/typescript/commonjs/types.d.ts +1 -1
- package/build/typescript/commonjs/types.d.ts.map +1 -1
- package/build/typescript/commonjs/utils/enableDynamicLiveActivityHotReload.d.ts +15 -0
- package/build/typescript/commonjs/utils/enableDynamicLiveActivityHotReload.d.ts.map +1 -0
- package/build/typescript/commonjs/utils/enableWidgetHotReload.d.ts +5 -7
- package/build/typescript/commonjs/utils/enableWidgetHotReload.d.ts.map +1 -1
- package/build/typescript/commonjs/utils/useUpdateOnHMR.d.ts +0 -3
- package/build/typescript/commonjs/utils/useUpdateOnHMR.d.ts.map +1 -1
- package/build/typescript/commonjs/widgets/server-credentials.d.ts +8 -0
- package/build/typescript/commonjs/widgets/server-credentials.d.ts.map +1 -1
- package/build/typescript/commonjs/widgets/server-update.d.ts +64 -0
- package/build/typescript/commonjs/widgets/server-update.d.ts.map +1 -0
- package/build/typescript/module/dynamic-widget/api.d.ts +8 -0
- package/build/typescript/module/dynamic-widget/api.d.ts.map +1 -0
- package/build/typescript/module/events.d.ts +7 -0
- package/build/typescript/module/events.d.ts.map +1 -1
- package/build/typescript/module/index.d.ts +4 -0
- package/build/typescript/module/index.d.ts.map +1 -1
- package/build/typescript/module/live-activity/api.d.ts +7 -0
- package/build/typescript/module/live-activity/api.d.ts.map +1 -1
- package/build/typescript/module/live-activity/dynamic-api.d.ts +54 -0
- package/build/typescript/module/live-activity/dynamic-api.d.ts.map +1 -0
- package/build/typescript/module/native/NativeVoltra.d.ts +21 -0
- package/build/typescript/module/native/NativeVoltra.d.ts.map +1 -1
- package/build/typescript/module/types.d.ts +1 -1
- package/build/typescript/module/types.d.ts.map +1 -1
- package/build/typescript/module/utils/enableDynamicLiveActivityHotReload.d.ts +15 -0
- package/build/typescript/module/utils/enableDynamicLiveActivityHotReload.d.ts.map +1 -0
- package/build/typescript/module/utils/enableWidgetHotReload.d.ts +5 -7
- package/build/typescript/module/utils/enableWidgetHotReload.d.ts.map +1 -1
- package/build/typescript/module/utils/useUpdateOnHMR.d.ts +0 -3
- package/build/typescript/module/utils/useUpdateOnHMR.d.ts.map +1 -1
- package/build/typescript/module/widgets/server-credentials.d.ts +8 -0
- package/build/typescript/module/widgets/server-credentials.d.ts.map +1 -1
- package/build/typescript/module/widgets/server-update.d.ts +64 -0
- package/build/typescript/module/widgets/server-update.d.ts.map +1 -0
- package/expo-plugin/build/cjs/constants.js +20 -1
- package/expo-plugin/build/cjs/constants.js.map +1 -1
- package/expo-plugin/build/cjs/index.js +9 -1
- package/expo-plugin/build/cjs/index.js.map +1 -1
- package/expo-plugin/build/cjs/ios/index.js +1 -0
- package/expo-plugin/build/cjs/ios/index.js.map +1 -1
- package/expo-plugin/build/cjs/ios/infoPlist.js +28 -5
- package/expo-plugin/build/cjs/ios/infoPlist.js.map +1 -1
- package/expo-plugin/build/cjs/ios/serverUpdate.js +25 -0
- package/expo-plugin/build/cjs/ios/serverUpdate.js.map +1 -0
- package/expo-plugin/build/cjs/ios-widget/clientRendered.js +4 -4
- package/expo-plugin/build/cjs/ios-widget/clientRendered.js.map +1 -1
- package/expo-plugin/build/cjs/ios-widget/clientRenderedPrerender.js +5 -5
- package/expo-plugin/build/cjs/ios-widget/clientRenderedPrerender.js.map +1 -1
- package/expo-plugin/build/cjs/ios-widget/dynamic-live-activity/swift.js +130 -0
- package/expo-plugin/build/cjs/ios-widget/dynamic-live-activity/swift.js.map +1 -0
- package/expo-plugin/build/cjs/ios-widget/files/index.js +9 -2
- package/expo-plugin/build/cjs/ios-widget/files/index.js.map +1 -1
- package/expo-plugin/build/cjs/ios-widget/files/infoPlist.js +6 -3
- package/expo-plugin/build/cjs/ios-widget/files/infoPlist.js.map +1 -1
- package/expo-plugin/build/cjs/ios-widget/files/manifest.js +24 -0
- package/expo-plugin/build/cjs/ios-widget/files/manifest.js.map +1 -1
- package/expo-plugin/build/cjs/ios-widget/files/swift-utils.js +7 -0
- package/expo-plugin/build/cjs/ios-widget/files/swift-utils.js.map +1 -0
- package/expo-plugin/build/cjs/ios-widget/files/swift.js +56 -26
- package/expo-plugin/build/cjs/ios-widget/files/swift.js.map +1 -1
- package/expo-plugin/build/cjs/ios-widget/index.js +9 -3
- package/expo-plugin/build/cjs/ios-widget/index.js.map +1 -1
- package/expo-plugin/build/cjs/ios-widget/podfile.js +38 -12
- package/expo-plugin/build/cjs/ios-widget/podfile.js.map +1 -1
- package/expo-plugin/build/cjs/ios-widget/widgetPlist.js +34 -22
- package/expo-plugin/build/cjs/ios-widget/widgetPlist.js.map +1 -1
- package/expo-plugin/build/cjs/ios-widget/xcode/buildPhases.js +194 -118
- package/expo-plugin/build/cjs/ios-widget/xcode/buildPhases.js.map +1 -1
- package/expo-plugin/build/cjs/ios-widget/xcode/configurationList.js +30 -22
- package/expo-plugin/build/cjs/ios-widget/xcode/configurationList.js.map +1 -1
- package/expo-plugin/build/cjs/ios-widget/xcode/fileReferences.js +50 -0
- package/expo-plugin/build/cjs/ios-widget/xcode/fileReferences.js.map +1 -0
- package/expo-plugin/build/cjs/ios-widget/xcode/groups.js +45 -43
- package/expo-plugin/build/cjs/ios-widget/xcode/groups.js.map +1 -1
- package/expo-plugin/build/cjs/ios-widget/xcode/index.js +93 -91
- package/expo-plugin/build/cjs/ios-widget/xcode/index.js.map +1 -1
- package/expo-plugin/build/cjs/ios-widget/xcode/mainAppSettings.js +41 -39
- package/expo-plugin/build/cjs/ios-widget/xcode/mainAppSettings.js.map +1 -1
- package/expo-plugin/build/cjs/ios-widget/xcode/productFile.js +2 -2
- package/expo-plugin/build/cjs/ios-widget/xcode/productFile.js.map +1 -1
- package/expo-plugin/build/cjs/ios-widget/xcode/target.js +29 -63
- package/expo-plugin/build/cjs/ios-widget/xcode/target.js.map +1 -1
- package/expo-plugin/build/cjs/utils/urlScheme.js +36 -14
- package/expo-plugin/build/cjs/utils/urlScheme.js.map +1 -1
- package/expo-plugin/build/cjs/validation.js +54 -0
- package/expo-plugin/build/cjs/validation.js.map +1 -1
- package/expo-plugin/build/esm/constants.js +17 -0
- package/expo-plugin/build/esm/constants.js.map +1 -1
- package/expo-plugin/build/esm/index.js +9 -1
- package/expo-plugin/build/esm/index.js.map +1 -1
- package/expo-plugin/build/esm/ios/index.js +1 -0
- package/expo-plugin/build/esm/ios/index.js.map +1 -1
- package/expo-plugin/build/esm/ios/infoPlist.js +28 -5
- package/expo-plugin/build/esm/ios/infoPlist.js.map +1 -1
- package/expo-plugin/build/esm/ios/serverUpdate.js +21 -0
- package/expo-plugin/build/esm/ios/serverUpdate.js.map +1 -0
- package/expo-plugin/build/esm/ios-widget/clientRendered.js +5 -5
- package/expo-plugin/build/esm/ios-widget/clientRendered.js.map +1 -1
- package/expo-plugin/build/esm/ios-widget/clientRenderedPrerender.js +6 -6
- package/expo-plugin/build/esm/ios-widget/clientRenderedPrerender.js.map +1 -1
- package/expo-plugin/build/esm/ios-widget/dynamic-live-activity/swift.js +122 -0
- package/expo-plugin/build/esm/ios-widget/dynamic-live-activity/swift.js.map +1 -0
- package/expo-plugin/build/esm/ios-widget/files/index.js +10 -3
- package/expo-plugin/build/esm/ios-widget/files/index.js.map +1 -1
- package/expo-plugin/build/esm/ios-widget/files/infoPlist.js +6 -3
- package/expo-plugin/build/esm/ios-widget/files/infoPlist.js.map +1 -1
- package/expo-plugin/build/esm/ios-widget/files/manifest.js +23 -1
- package/expo-plugin/build/esm/ios-widget/files/manifest.js.map +1 -1
- package/expo-plugin/build/esm/ios-widget/files/swift-utils.js +4 -0
- package/expo-plugin/build/esm/ios-widget/files/swift-utils.js.map +1 -0
- package/expo-plugin/build/esm/ios-widget/files/swift.js +50 -20
- package/expo-plugin/build/esm/ios-widget/files/swift.js.map +1 -1
- package/expo-plugin/build/esm/ios-widget/index.js +9 -3
- package/expo-plugin/build/esm/ios-widget/index.js.map +1 -1
- package/expo-plugin/build/esm/ios-widget/podfile.js +36 -11
- package/expo-plugin/build/esm/ios-widget/podfile.js.map +1 -1
- package/expo-plugin/build/esm/ios-widget/widgetPlist.js +34 -22
- package/expo-plugin/build/esm/ios-widget/widgetPlist.js.map +1 -1
- package/expo-plugin/build/esm/ios-widget/xcode/buildPhases.js +194 -117
- package/expo-plugin/build/esm/ios-widget/xcode/buildPhases.js.map +1 -1
- package/expo-plugin/build/esm/ios-widget/xcode/configurationList.js +31 -22
- package/expo-plugin/build/esm/ios-widget/xcode/configurationList.js.map +1 -1
- package/expo-plugin/build/esm/ios-widget/xcode/fileReferences.js +45 -0
- package/expo-plugin/build/esm/ios-widget/xcode/fileReferences.js.map +1 -0
- package/expo-plugin/build/esm/ios-widget/xcode/groups.js +45 -42
- package/expo-plugin/build/esm/ios-widget/xcode/groups.js.map +1 -1
- package/expo-plugin/build/esm/ios-widget/xcode/index.js +97 -96
- package/expo-plugin/build/esm/ios-widget/xcode/index.js.map +1 -1
- package/expo-plugin/build/esm/ios-widget/xcode/mainAppSettings.js +41 -39
- package/expo-plugin/build/esm/ios-widget/xcode/mainAppSettings.js.map +1 -1
- package/expo-plugin/build/esm/ios-widget/xcode/productFile.js +3 -2
- package/expo-plugin/build/esm/ios-widget/xcode/productFile.js.map +1 -1
- package/expo-plugin/build/esm/ios-widget/xcode/target.js +28 -62
- package/expo-plugin/build/esm/ios-widget/xcode/target.js.map +1 -1
- package/expo-plugin/build/esm/utils/urlScheme.js +34 -14
- package/expo-plugin/build/esm/utils/urlScheme.js.map +1 -1
- package/expo-plugin/build/esm/validation.js +54 -1
- package/expo-plugin/build/esm/validation.js.map +1 -1
- package/expo-plugin/build/types/constants.d.ts +10 -1
- package/expo-plugin/build/types/constants.d.ts.map +1 -1
- package/expo-plugin/build/types/index.d.ts +1 -1
- package/expo-plugin/build/types/index.d.ts.map +1 -1
- package/expo-plugin/build/types/ios/index.d.ts +2 -0
- package/expo-plugin/build/types/ios/index.d.ts.map +1 -1
- package/expo-plugin/build/types/ios/infoPlist.d.ts +2 -0
- package/expo-plugin/build/types/ios/infoPlist.d.ts.map +1 -1
- package/expo-plugin/build/types/ios/serverUpdate.d.ts +11 -0
- package/expo-plugin/build/types/ios/serverUpdate.d.ts.map +1 -0
- package/expo-plugin/build/types/ios-widget/clientRendered.d.ts.map +1 -1
- package/expo-plugin/build/types/ios-widget/clientRenderedPrerender.d.ts.map +1 -1
- package/expo-plugin/build/types/ios-widget/dynamic-live-activity/swift.d.ts +7 -0
- package/expo-plugin/build/types/ios-widget/dynamic-live-activity/swift.d.ts.map +1 -0
- package/expo-plugin/build/types/ios-widget/files/index.d.ts +3 -1
- package/expo-plugin/build/types/ios-widget/files/index.d.ts.map +1 -1
- package/expo-plugin/build/types/ios-widget/files/infoPlist.d.ts +2 -1
- package/expo-plugin/build/types/ios-widget/files/infoPlist.d.ts.map +1 -1
- package/expo-plugin/build/types/ios-widget/files/manifest.d.ts +9 -2
- package/expo-plugin/build/types/ios-widget/files/manifest.d.ts.map +1 -1
- package/expo-plugin/build/types/ios-widget/files/swift-utils.d.ts +2 -0
- package/expo-plugin/build/types/ios-widget/files/swift-utils.d.ts.map +1 -0
- package/expo-plugin/build/types/ios-widget/files/swift.d.ts +6 -2
- package/expo-plugin/build/types/ios-widget/files/swift.d.ts.map +1 -1
- package/expo-plugin/build/types/ios-widget/index.d.ts +3 -1
- package/expo-plugin/build/types/ios-widget/index.d.ts.map +1 -1
- package/expo-plugin/build/types/ios-widget/podfile.d.ts +19 -1
- package/expo-plugin/build/types/ios-widget/podfile.d.ts.map +1 -1
- package/expo-plugin/build/types/ios-widget/widgetPlist.d.ts.map +1 -1
- package/expo-plugin/build/types/ios-widget/xcode/buildPhases.d.ts +6 -8
- package/expo-plugin/build/types/ios-widget/xcode/buildPhases.d.ts.map +1 -1
- package/expo-plugin/build/types/ios-widget/xcode/configurationList.d.ts +15 -10
- package/expo-plugin/build/types/ios-widget/xcode/configurationList.d.ts.map +1 -1
- package/expo-plugin/build/types/ios-widget/xcode/fileReferences.d.ts +16 -0
- package/expo-plugin/build/types/ios-widget/xcode/fileReferences.d.ts.map +1 -0
- package/expo-plugin/build/types/ios-widget/xcode/groups.d.ts +0 -4
- package/expo-plugin/build/types/ios-widget/xcode/groups.d.ts.map +1 -1
- package/expo-plugin/build/types/ios-widget/xcode/index.d.ts +23 -3
- package/expo-plugin/build/types/ios-widget/xcode/index.d.ts.map +1 -1
- package/expo-plugin/build/types/ios-widget/xcode/mainAppSettings.d.ts +16 -4
- package/expo-plugin/build/types/ios-widget/xcode/mainAppSettings.d.ts.map +1 -1
- package/expo-plugin/build/types/ios-widget/xcode/productFile.d.ts +0 -4
- package/expo-plugin/build/types/ios-widget/xcode/productFile.d.ts.map +1 -1
- package/expo-plugin/build/types/ios-widget/xcode/target.d.ts +11 -26
- package/expo-plugin/build/types/ios-widget/xcode/target.d.ts.map +1 -1
- package/expo-plugin/build/types/types.d.ts +23 -4
- package/expo-plugin/build/types/types.d.ts.map +1 -1
- package/expo-plugin/build/types/utils/urlScheme.d.ts +16 -0
- package/expo-plugin/build/types/utils/urlScheme.d.ts.map +1 -1
- package/expo-plugin/build/types/validation.d.ts +2 -1
- package/expo-plugin/build/types/validation.d.ts.map +1 -1
- package/expo-plugin/src/constants.ts +24 -1
- package/expo-plugin/src/index.ts +14 -1
- package/expo-plugin/src/ios/index.ts +3 -0
- package/expo-plugin/src/ios/infoPlist.ts +33 -5
- package/expo-plugin/src/ios/serverUpdate.ts +29 -0
- package/expo-plugin/src/ios-widget/clientRendered.ts +9 -5
- package/expo-plugin/src/ios-widget/clientRenderedPrerender.ts +11 -6
- package/expo-plugin/src/ios-widget/dynamic-live-activity/swift.ts +138 -0
- package/expo-plugin/src/ios-widget/files/index.ts +15 -4
- package/expo-plugin/src/ios-widget/files/infoPlist.ts +17 -3
- package/expo-plugin/src/ios-widget/files/manifest.ts +42 -2
- package/expo-plugin/src/ios-widget/files/swift-utils.ts +3 -0
- package/expo-plugin/src/ios-widget/files/swift.ts +69 -22
- package/expo-plugin/src/ios-widget/index.ts +13 -3
- package/expo-plugin/src/ios-widget/podfile.ts +46 -13
- package/expo-plugin/src/ios-widget/widgetPlist.ts +37 -23
- package/expo-plugin/src/ios-widget/xcode/__fixtures__/fresh.pbxproj +197 -0
- package/expo-plugin/src/ios-widget/xcode/__fixtures__/with-existing-extension.pbxproj +321 -0
- package/expo-plugin/src/ios-widget/xcode/__fixtures__/with-per-config-signing.pbxproj +203 -0
- package/expo-plugin/src/ios-widget/xcode/__snapshots__/applyXcodeChanges.node.test.ts.snap +363 -0
- package/expo-plugin/src/ios-widget/xcode/__tests__/pbxConsistency.ts +130 -0
- package/expo-plugin/src/ios-widget/xcode/buildPhases.ts +210 -164
- package/expo-plugin/src/ios-widget/xcode/configurationList.ts +52 -35
- package/expo-plugin/src/ios-widget/xcode/fileReferences.ts +51 -0
- package/expo-plugin/src/ios-widget/xcode/groups.ts +52 -54
- package/expo-plugin/src/ios-widget/xcode/index.ts +124 -119
- package/expo-plugin/src/ios-widget/xcode/mainAppSettings.ts +59 -54
- package/expo-plugin/src/ios-widget/xcode/productFile.ts +3 -2
- package/expo-plugin/src/ios-widget/xcode/target.ts +31 -83
- package/expo-plugin/src/types.ts +28 -4
- package/expo-plugin/src/utils/urlScheme.ts +47 -17
- package/expo-plugin/src/validation.ts +76 -1
- package/ios/Package.swift +39 -4
- package/ios/VoltraWidget.podspec +1 -0
- package/ios/app/NativeVoltra.mm +126 -7
- package/ios/app/VoltraLiveActivityManager.swift +30 -0
- package/ios/app/VoltraLiveActivityService.swift +77 -5
- package/ios/app/VoltraModule.swift +117 -1
- package/ios/app/VoltraModuleImpl.swift +116 -2
- package/ios/app/VoltraViewComponentView.mm +3 -3
- package/ios/app/VoltraWidgetService.swift +147 -12
- package/ios/app/dynamic-live-activity/VoltraDynamicLiveActivityService.swift +97 -0
- package/ios/app/dynamic-live-activity/VoltraLiveActivityChronology.swift +68 -0
- package/ios/shared/DynamicWidgetPropsCodec.swift +51 -0
- package/ios/shared/DynamicWidgetPropsStorage.swift +53 -0
- package/ios/shared/DynamicWidgetPropsStore.swift +117 -0
- package/ios/shared/DynamicWidgetRenderCoordinator.swift +31 -0
- package/ios/shared/DynamicWidgetServerUpdate/DynamicWidgetServerFetchResolver.swift +34 -0
- package/ios/shared/DynamicWidgetServerUpdate/DynamicWidgetServerProps.swift +55 -0
- package/ios/shared/DynamicWidgetServerUpdate/DynamicWidgetServerPropsStore.swift +146 -0
- package/ios/shared/DynamicWidgetServerUpdate/DynamicWidgetServerUpdateRunner.swift +193 -0
- package/ios/shared/DynamicWidgetUpdater.swift +30 -0
- package/ios/shared/ServerWidgetContentResolver.swift +60 -0
- package/ios/shared/ServerWidgetResponseStore.swift +25 -0
- package/ios/shared/ShortNames.swift +6 -0
- package/ios/shared/VoltraConfig.swift +41 -0
- package/ios/shared/VoltraConstants.swift +19 -0
- package/ios/shared/VoltraElement.swift +127 -43
- package/ios/shared/VoltraEventBus.swift +52 -7
- package/ios/shared/VoltraJSRenderer.swift +93 -23
- package/ios/shared/VoltraNode.swift +7 -111
- package/ios/shared/VoltraRefreshIntent.swift +1 -1
- package/ios/shared/VoltraWidgetDefaults.swift +9 -1
- package/ios/shared/VoltraWidgetKind.swift +41 -0
- package/ios/shared/VoltraWidgetServerFetcher.swift +52 -107
- package/ios/shared/WidgetServer/VoltraWidgetAppearance.swift +17 -0
- package/ios/shared/WidgetServer/VoltraWidgetServer.swift +138 -0
- package/ios/shared/WidgetServer/WidgetCanonicalConfiguration.swift +77 -0
- package/ios/shared/WidgetServer/WidgetScope.swift +55 -0
- package/ios/shared/WidgetServer/WidgetServerEtagStore.swift +55 -0
- package/ios/shared/WidgetServer/WidgetServerFetcher.swift +179 -0
- package/ios/shared/WidgetServer/WidgetServerRequestBuilder.swift +114 -0
- package/ios/shared/WidgetServer/WidgetServerSettingsCodec.swift +47 -0
- package/ios/shared/WidgetServer/WidgetServerSettingsResolver.swift +129 -0
- package/ios/shared/WidgetServer/WidgetServerSettingsStore.swift +170 -0
- package/ios/shared/WidgetServer/WidgetServerSettingsValidator.swift +73 -0
- package/ios/shared/WidgetServer/WidgetServerUpdateSettings.swift +123 -0
- package/ios/shared/WidgetServer/WidgetServerUpdateSettingsJson.swift +115 -0
- package/ios/shared/dynamic-live-activity/DynamicLiveActivityPropsCodec.swift +13 -0
- package/ios/shared/dynamic-live-activity/VoltraDynamicLiveActivityBundleSource.swift +156 -0
- package/ios/shared/dynamic-live-activity/VoltraDynamicLiveActivityObserver.swift +97 -0
- package/ios/shared/dynamic-live-activity/VoltraDynamicLiveActivityOperations.swift +105 -0
- package/ios/shared/dynamic-live-activity/VoltraDynamicLiveActivityPayloadValidator.swift +55 -0
- package/ios/shared/dynamic-live-activity/VoltraDynamicLiveActivityRegistry.swift +143 -0
- package/ios/shared/dynamic-live-activity/VoltraDynamicLiveActivityRenderFailureQueue.swift +158 -0
- package/ios/shared/dynamic-live-activity/VoltraDynamicLiveActivityRenderFailureReporter.swift +120 -0
- package/ios/shared/dynamic-live-activity/VoltraDynamicLiveActivityRenderer.swift +370 -0
- package/ios/shared/dynamic-live-activity/VoltraDynamicLiveActivityTypes.swift +87 -0
- package/ios/shared/dynamic-live-activity/VoltraLiveActivityOrder.swift +19 -0
- package/ios/target/VoltraClientWidgetRuntime.swift +60 -10
- package/ios/target/VoltraDynamicWidgetServerUpdateProvider.swift +204 -0
- package/ios/target/VoltraHomeWidget.swift +91 -92
- package/ios/target/VoltraWidget.swift +3 -1
- package/ios/ui/Extensions/VoltraNode+View.swift +113 -0
- package/ios/ui/Generated/Parameters/ChartParameters.swift +3 -0
- package/ios/ui/Helpers/VoltraDeepLinkResolver.swift +5 -3
- package/ios/ui/Helpers/VoltraProgressDriver.swift +6 -2
- package/ios/ui/Layout/VoltraFlexStackLayout.swift +9 -3
- package/ios/ui/Style/JSColorParser.swift +24 -8
- package/ios/ui/Style/JSGradientParser.swift +36 -12
- package/ios/ui/Style/JSStyleParser.swift +36 -12
- package/ios/ui/Style/LayoutStyle.swift +12 -4
- package/ios/ui/Views/VoltraChart.swift +160 -16
- package/ios/ui/Views/VoltraLinearGradient.swift +6 -2
- package/package.json +5 -5
- package/src/dynamic-widget/api.ts +25 -0
- package/src/events.ts +34 -0
- package/src/index.ts +23 -0
- package/src/live-activity/api.ts +2 -2
- package/src/live-activity/dynamic-api.ts +240 -0
- package/src/native/NativeVoltra.ts +22 -0
- package/src/types.ts +4 -0
- package/src/utils/enableDynamicLiveActivityHotReload.ts +50 -0
- package/src/utils/enableWidgetHotReload.ts +9 -16
- package/src/utils/useUpdateOnHMR.ts +3 -12
- package/src/widgets/server-credentials.ts +8 -0
- package/src/widgets/server-update.ts +84 -0
- /package/ios/shared/{VoltraKeychainHelper.swift → WidgetServer/VoltraKeychainHelper.swift} +0 -0
|
@@ -34,18 +34,20 @@ var __importStar = (this && this.__importStar) || (function () {
|
|
|
34
34
|
})();
|
|
35
35
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
36
36
|
exports.ensureWidgetBundleScriptPhase = ensureWidgetBundleScriptPhase;
|
|
37
|
-
exports.addBuildPhases = addBuildPhases;
|
|
38
37
|
exports.ensureBuildPhases = ensureBuildPhases;
|
|
39
38
|
const util = __importStar(require("util"));
|
|
39
|
+
const fileReferences_1 = require("./fileReferences");
|
|
40
40
|
const pbxFile = require('xcode/lib/pbxFile');
|
|
41
|
-
const WIDGET_BUNDLE_PHASE_NAME = 'Bundle Voltra Dynamic
|
|
41
|
+
const WIDGET_BUNDLE_PHASE_NAME = 'Bundle Voltra Dynamic Content';
|
|
42
|
+
const LEGACY_WIDGET_BUNDLE_PHASE_NAME = 'Bundle Voltra Dynamic Widgets';
|
|
42
43
|
// Release-only build phase that bakes each Dynamic Widget's production JS bundle into the
|
|
43
44
|
// extension's resources. Debug builds fetch from Metro (and hot-reload), so this no-ops there. Runs
|
|
44
45
|
// the project's widget bundler with the extension's resources dir as the output, so each
|
|
45
46
|
// voltra-widget-<id>.bundle lands in the .appex (Bundle.main) where the runtime's release loader
|
|
46
47
|
// reads it. SRCROOT is the ios/ dir; the project root is one level up, matching how Expo's main
|
|
47
48
|
// "Bundle React Native code and images" phase resolves things.
|
|
48
|
-
|
|
49
|
+
function bundleShellScript(content) {
|
|
50
|
+
return `if [[ "$CONFIGURATION" == *Debug* ]]; then
|
|
49
51
|
echo "Voltra: Debug build — Dynamic Widgets load from Metro, skipping bundling"
|
|
50
52
|
exit 0
|
|
51
53
|
fi
|
|
@@ -79,6 +81,7 @@ try {
|
|
|
79
81
|
console.error(error && error.message ? error.message : String(error))
|
|
80
82
|
process.exit(1)
|
|
81
83
|
}
|
|
84
|
+
|
|
82
85
|
NODE
|
|
83
86
|
)"
|
|
84
87
|
if [[ -z "$BUNDLER" ]]; then
|
|
@@ -87,13 +90,17 @@ if [[ -z "$BUNDLER" ]]; then
|
|
|
87
90
|
fi
|
|
88
91
|
|
|
89
92
|
echo "Voltra: widget bundler resolved to $BUNDLER"
|
|
90
|
-
"$NODE_BINARY" "$BUNDLER" --out-dir "$TARGET_BUILD_DIR/$UNLOCALIZED_RESOURCES_FOLDER_PATH" --platform ios --project-root "$PROJECT_ROOT"
|
|
93
|
+
"$NODE_BINARY" "$BUNDLER" --out-dir "$TARGET_BUILD_DIR/$UNLOCALIZED_RESOURCES_FOLDER_PATH" --platform ios --project-root "$PROJECT_ROOT" --content ${content}
|
|
91
94
|
`;
|
|
95
|
+
}
|
|
96
|
+
function pbxQuotedShellScript(script) {
|
|
97
|
+
return `"${script.replace(/\\/g, '\\\\').replace(/"/g, '\\"').replace(/\n/g, '\\n')}"`;
|
|
98
|
+
}
|
|
92
99
|
/**
|
|
93
100
|
* Adds (idempotently) the release-only shell-script phase that bakes Dynamic Widget
|
|
94
101
|
* bundles into the extension. Safe to call on every prebuild; only added when absent.
|
|
95
102
|
*/
|
|
96
|
-
function ensureWidgetBundleScriptPhase(xcodeProject, targetUuid) {
|
|
103
|
+
function ensureWidgetBundleScriptPhase(xcodeProject, targetUuid, content = 'all') {
|
|
97
104
|
const nativeTargets = xcodeProject.pbxNativeTargetSection();
|
|
98
105
|
const target = nativeTargets[targetUuid];
|
|
99
106
|
if (!target) {
|
|
@@ -104,14 +111,37 @@ function ensureWidgetBundleScriptPhase(xcodeProject, targetUuid) {
|
|
|
104
111
|
}
|
|
105
112
|
const shellPhases = xcodeProject.hash.project.objects.PBXShellScriptBuildPhase || {};
|
|
106
113
|
const quotedName = `"${WIDGET_BUNDLE_PHASE_NAME}"`;
|
|
107
|
-
const
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
xcodeProject.addBuildPhase([], 'PBXShellScriptBuildPhase', WIDGET_BUNDLE_PHASE_NAME, targetUuid, {
|
|
112
|
-
shellPath: '/bin/sh',
|
|
113
|
-
shellScript: WIDGET_BUNDLE_SHELL_SCRIPT,
|
|
114
|
+
const quotedLegacyName = `"${LEGACY_WIDGET_BUNDLE_PHASE_NAME}"`;
|
|
115
|
+
const matchingEntries = target.buildPhases.filter((entry) => {
|
|
116
|
+
const name = shellPhases[entry.value]?.name;
|
|
117
|
+
return name === quotedName || name === quotedLegacyName;
|
|
114
118
|
});
|
|
119
|
+
let phase;
|
|
120
|
+
if (matchingEntries.length > 0) {
|
|
121
|
+
const retained = matchingEntries[0];
|
|
122
|
+
phase = shellPhases[retained.value];
|
|
123
|
+
phase.name = quotedName;
|
|
124
|
+
target.buildPhases = target.buildPhases.filter((entry) => {
|
|
125
|
+
if (entry === retained || !matchingEntries.includes(entry))
|
|
126
|
+
return true;
|
|
127
|
+
delete shellPhases[entry.value];
|
|
128
|
+
delete shellPhases[`${entry.value}_comment`];
|
|
129
|
+
return false;
|
|
130
|
+
});
|
|
131
|
+
}
|
|
132
|
+
else {
|
|
133
|
+
xcodeProject.addBuildPhase([], 'PBXShellScriptBuildPhase', WIDGET_BUNDLE_PHASE_NAME, targetUuid, {
|
|
134
|
+
shellPath: '/bin/sh',
|
|
135
|
+
shellScript: bundleShellScript(content),
|
|
136
|
+
});
|
|
137
|
+
phase = Object.values(xcodeProject.hash.project.objects.PBXShellScriptBuildPhase || {}).find((candidate) => candidate?.name === quotedName);
|
|
138
|
+
}
|
|
139
|
+
if (phase) {
|
|
140
|
+
// xcode's serializer expects an already PBX-quoted value when an existing
|
|
141
|
+
// phase is reconciled directly (addBuildPhase performs this for new ones).
|
|
142
|
+
phase.shellScript = pbxQuotedShellScript(bundleShellScript(content));
|
|
143
|
+
phase.alwaysOutOfDate = 1;
|
|
144
|
+
}
|
|
115
145
|
// The phase intentionally re-bakes on every release build (it can't statically enumerate every
|
|
116
146
|
// widget source as an input). Mark it always-out-of-date so Xcode doesn't warn about the missing
|
|
117
147
|
// input/output dependencies.
|
|
@@ -126,168 +156,204 @@ function ensureWidgetBundleScriptPhase(xcodeProject, targetUuid) {
|
|
|
126
156
|
}
|
|
127
157
|
}
|
|
128
158
|
/**
|
|
129
|
-
*
|
|
159
|
+
* Finds a `PBXCopyFilesBuildPhase` on the given target that embeds app extensions
|
|
160
|
+
* (`dstSubfolderSpec == 13`), regardless of its display name. Returns the phase object or null.
|
|
161
|
+
*
|
|
162
|
+
* A project that already contains another app extension (Share/Watch/expo-live-activity) will have
|
|
163
|
+
* such a phase — typically named "Embed App Extensions" — and the widget's product must be added to
|
|
164
|
+
* it rather than to a second, duplicate embed phase (issue #87).
|
|
130
165
|
*/
|
|
131
|
-
function
|
|
132
|
-
const
|
|
133
|
-
const
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
166
|
+
function findExistingEmbedExtensionsPhase(xcodeProject, targetUuid) {
|
|
167
|
+
const nativeTargets = xcodeProject.pbxNativeTargetSection();
|
|
168
|
+
const target = nativeTargets[targetUuid];
|
|
169
|
+
if (!target?.buildPhases) {
|
|
170
|
+
return null;
|
|
171
|
+
}
|
|
172
|
+
const copyFilesSection = xcodeProject.hash.project.objects['PBXCopyFilesBuildPhase'] || {};
|
|
173
|
+
for (const entry of target.buildPhases) {
|
|
174
|
+
const phase = copyFilesSection[(0, fileReferences_1.normalizeRef)(entry.value)];
|
|
175
|
+
if (phase && String(phase.dstSubfolderSpec) === '13') {
|
|
176
|
+
return phase;
|
|
177
|
+
}
|
|
178
|
+
}
|
|
179
|
+
return null;
|
|
180
|
+
}
|
|
181
|
+
/**
|
|
182
|
+
* Finds a target's build phase of the given pbx section type by walking the target's own
|
|
183
|
+
* `buildPhases` list and checking membership in the type's object section; the first match wins.
|
|
184
|
+
*
|
|
185
|
+
* This is deliberately semantic: pbxproj comments are decorative and other tools strip them, and
|
|
186
|
+
* the xcode lib's `buildPhaseObject` both relies on comments and silently falls back to a
|
|
187
|
+
* project-wide search that can return another target's phase (e.g. the main app's "Sources").
|
|
188
|
+
* The embed phase is the one exception with extra semantics — see
|
|
189
|
+
* {@link findExistingEmbedExtensionsPhase} (`dstSubfolderSpec == 13`).
|
|
190
|
+
*/
|
|
191
|
+
function findTargetPhaseByType(xcodeProject, targetUuid, phaseType) {
|
|
192
|
+
const target = xcodeProject.pbxNativeTargetSection()[targetUuid];
|
|
193
|
+
if (!target?.buildPhases) {
|
|
194
|
+
return null;
|
|
195
|
+
}
|
|
196
|
+
const phaseSection = xcodeProject.hash.project.objects[phaseType] || {};
|
|
197
|
+
for (const entry of target.buildPhases) {
|
|
198
|
+
const phase = phaseSection[(0, fileReferences_1.normalizeRef)(entry.value)];
|
|
199
|
+
if (phase) {
|
|
200
|
+
return phase;
|
|
201
|
+
}
|
|
202
|
+
}
|
|
203
|
+
return null;
|
|
150
204
|
}
|
|
151
205
|
/**
|
|
152
206
|
* Ensures all required build phases and files exist for the widget extension target.
|
|
153
207
|
*/
|
|
154
208
|
function ensureBuildPhases(xcodeProject, options) {
|
|
155
|
-
const { targetUuid, groupName, productFile, widgetFiles } = options;
|
|
209
|
+
const { targetUuid, targetName, groupName, productFile, widgetFiles } = options;
|
|
156
210
|
const buildPath = `""`;
|
|
157
211
|
const folderType = 'app_extension';
|
|
158
212
|
const mainTargetUuid = options.mainTargetUuid ?? xcodeProject.getFirstTarget().uuid;
|
|
159
213
|
const { swiftFiles, intentFiles, assetDirectories, localizedStringResources } = widgetFiles;
|
|
160
214
|
const resourcePaths = [...assetDirectories, ...localizedStringResources];
|
|
161
|
-
dedupeBuildPhasesForTarget(xcodeProject, targetUuid, 'PBXSourcesBuildPhase'
|
|
162
|
-
dedupeBuildPhasesForTarget(xcodeProject, targetUuid, 'PBXFrameworksBuildPhase'
|
|
163
|
-
|
|
215
|
+
dedupeBuildPhasesForTarget(xcodeProject, targetUuid, 'PBXSourcesBuildPhase');
|
|
216
|
+
dedupeBuildPhasesForTarget(xcodeProject, targetUuid, 'PBXFrameworksBuildPhase');
|
|
217
|
+
dedupeEmbedPhasesForTarget(xcodeProject, mainTargetUuid);
|
|
164
218
|
// Sources build phase
|
|
165
|
-
let sourcesPhase = xcodeProject
|
|
219
|
+
let sourcesPhase = findTargetPhaseByType(xcodeProject, targetUuid, 'PBXSourcesBuildPhase');
|
|
166
220
|
if (!sourcesPhase) {
|
|
167
|
-
xcodeProject.addBuildPhase([
|
|
168
|
-
sourcesPhase = xcodeProject
|
|
221
|
+
xcodeProject.addBuildPhase([], 'PBXSourcesBuildPhase', 'Sources', targetUuid, folderType, buildPath);
|
|
222
|
+
sourcesPhase = findTargetPhaseByType(xcodeProject, targetUuid, 'PBXSourcesBuildPhase');
|
|
169
223
|
}
|
|
170
224
|
if (sourcesPhase) {
|
|
171
|
-
ensureBuildPhaseFiles(xcodeProject, sourcesPhase, [...swiftFiles, ...intentFiles]);
|
|
225
|
+
ensureBuildPhaseFiles(xcodeProject, sourcesPhase, [...swiftFiles, ...intentFiles], targetName);
|
|
172
226
|
}
|
|
173
|
-
|
|
174
|
-
|
|
227
|
+
if (options.mainSwiftFiles && options.mainSwiftFiles.length > 0) {
|
|
228
|
+
let mainSourcesPhase = findTargetPhaseByType(xcodeProject, mainTargetUuid, 'PBXSourcesBuildPhase');
|
|
229
|
+
if (!mainSourcesPhase) {
|
|
230
|
+
xcodeProject.addBuildPhase([], 'PBXSourcesBuildPhase', 'Sources', mainTargetUuid, folderType, buildPath);
|
|
231
|
+
mainSourcesPhase = findTargetPhaseByType(xcodeProject, mainTargetUuid, 'PBXSourcesBuildPhase');
|
|
232
|
+
}
|
|
233
|
+
if (mainSourcesPhase) {
|
|
234
|
+
ensureBuildPhaseFiles(xcodeProject, mainSourcesPhase, options.mainSwiftFiles, targetName);
|
|
235
|
+
}
|
|
236
|
+
}
|
|
237
|
+
// Copy files build phase (embed extension into main app) — the embed phase is matched purely by
|
|
238
|
+
// its `dstSubfolderSpec == 13` semantics, both before and after creation
|
|
239
|
+
let copyFilesPhase = findExistingEmbedExtensionsPhase(xcodeProject, mainTargetUuid);
|
|
175
240
|
if (!copyFilesPhase) {
|
|
176
241
|
xcodeProject.addBuildPhase([], 'PBXCopyFilesBuildPhase', groupName, mainTargetUuid, folderType, buildPath);
|
|
177
|
-
copyFilesPhase = xcodeProject
|
|
242
|
+
copyFilesPhase = findExistingEmbedExtensionsPhase(xcodeProject, mainTargetUuid);
|
|
178
243
|
}
|
|
179
244
|
if (copyFilesPhase) {
|
|
180
245
|
ensureCopyFilesPhaseProduct(xcodeProject, copyFilesPhase, productFile);
|
|
181
246
|
}
|
|
182
247
|
// Frameworks build phase
|
|
183
|
-
const frameworksPhase = xcodeProject
|
|
248
|
+
const frameworksPhase = findTargetPhaseByType(xcodeProject, targetUuid, 'PBXFrameworksBuildPhase');
|
|
184
249
|
if (!frameworksPhase) {
|
|
185
250
|
xcodeProject.addBuildPhase([], 'PBXFrameworksBuildPhase', 'Frameworks', targetUuid, folderType, buildPath);
|
|
186
251
|
}
|
|
187
252
|
// Resources build phase
|
|
188
|
-
let resourcesPhase = xcodeProject
|
|
253
|
+
let resourcesPhase = findTargetPhaseByType(xcodeProject, targetUuid, 'PBXResourcesBuildPhase');
|
|
189
254
|
if (!resourcesPhase) {
|
|
190
|
-
xcodeProject.addBuildPhase([
|
|
191
|
-
resourcesPhase = xcodeProject
|
|
255
|
+
xcodeProject.addBuildPhase([], 'PBXResourcesBuildPhase', 'Resources', targetUuid);
|
|
256
|
+
resourcesPhase = findTargetPhaseByType(xcodeProject, targetUuid, 'PBXResourcesBuildPhase');
|
|
192
257
|
}
|
|
193
258
|
if (resourcesPhase) {
|
|
194
|
-
ensureBuildPhaseFiles(xcodeProject, resourcesPhase,
|
|
259
|
+
ensureBuildPhaseFiles(xcodeProject, resourcesPhase, resourcePaths, targetName);
|
|
195
260
|
}
|
|
196
261
|
}
|
|
197
|
-
|
|
262
|
+
/**
|
|
263
|
+
* Drops duplicate build phases of one pbx section type from a target, keeping the first phase in
|
|
264
|
+
* the target's `buildPhases` order. Membership in the type's object section is the only criterion —
|
|
265
|
+
* comments are decorative and other tools strip them. De-referenced phase objects are deleted so no
|
|
266
|
+
* orphans remain.
|
|
267
|
+
*/
|
|
268
|
+
function dedupeBuildPhasesForTarget(xcodeProject, targetUuid, phaseType) {
|
|
198
269
|
const nativeTargets = xcodeProject.pbxNativeTargetSection();
|
|
199
270
|
const target = nativeTargets[targetUuid];
|
|
200
271
|
if (!target?.buildPhases) {
|
|
201
272
|
return;
|
|
202
273
|
}
|
|
203
274
|
const phaseSection = xcodeProject.hash.project.objects[phaseType] || {};
|
|
204
|
-
const matching = target.buildPhases.filter((entry) => phaseSection[entry.value]);
|
|
275
|
+
const matching = target.buildPhases.filter((entry) => phaseSection[(0, fileReferences_1.normalizeRef)(entry.value)]);
|
|
205
276
|
if (matching.length <= 1) {
|
|
206
277
|
return;
|
|
207
278
|
}
|
|
208
|
-
const keep = matching
|
|
209
|
-
|
|
279
|
+
const keep = matching[0];
|
|
280
|
+
const removed = matching.filter((entry) => entry.value !== keep.value);
|
|
210
281
|
target.buildPhases = target.buildPhases.filter((entry) => {
|
|
211
|
-
if (!phaseSection[entry.value]) {
|
|
282
|
+
if (!phaseSection[(0, fileReferences_1.normalizeRef)(entry.value)]) {
|
|
212
283
|
return true;
|
|
213
284
|
}
|
|
214
285
|
return entry.value === keep.value;
|
|
215
286
|
});
|
|
287
|
+
deleteOrphanPhaseObjects(phaseSection, removed);
|
|
216
288
|
}
|
|
217
|
-
|
|
289
|
+
/**
|
|
290
|
+
* Drops duplicate embed-app-extensions copy-files phases (`dstSubfolderSpec == 13`) from a target,
|
|
291
|
+
* keeping the first one in the target's `buildPhases` order. Other copy-files phases (different
|
|
292
|
+
* `dstSubfolderSpec`) are left untouched. De-referenced phase objects are deleted so no orphans
|
|
293
|
+
* remain.
|
|
294
|
+
*/
|
|
295
|
+
function dedupeEmbedPhasesForTarget(xcodeProject, targetUuid) {
|
|
218
296
|
const nativeTargets = xcodeProject.pbxNativeTargetSection();
|
|
219
297
|
const target = nativeTargets[targetUuid];
|
|
220
298
|
if (!target?.buildPhases) {
|
|
221
299
|
return;
|
|
222
300
|
}
|
|
223
|
-
const phaseSection = xcodeProject.hash.project.objects[
|
|
224
|
-
const
|
|
301
|
+
const phaseSection = xcodeProject.hash.project.objects['PBXCopyFilesBuildPhase'] || {};
|
|
302
|
+
const isEmbedEntry = (entry) => {
|
|
303
|
+
const phase = phaseSection[(0, fileReferences_1.normalizeRef)(entry.value)];
|
|
304
|
+
return phase && String(phase.dstSubfolderSpec) === '13';
|
|
305
|
+
};
|
|
306
|
+
const matching = target.buildPhases.filter(isEmbedEntry);
|
|
225
307
|
if (matching.length <= 1) {
|
|
226
308
|
return;
|
|
227
309
|
}
|
|
228
310
|
const keep = matching[0];
|
|
311
|
+
const removed = matching.filter((entry) => entry.value !== keep.value);
|
|
229
312
|
target.buildPhases = target.buildPhases.filter((entry) => {
|
|
230
|
-
if (!
|
|
313
|
+
if (!isEmbedEntry(entry)) {
|
|
231
314
|
return true;
|
|
232
315
|
}
|
|
233
316
|
return entry.value === keep.value;
|
|
234
317
|
});
|
|
318
|
+
deleteOrphanPhaseObjects(phaseSection, removed);
|
|
235
319
|
}
|
|
236
|
-
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
|
|
242
|
-
|
|
243
|
-
|
|
244
|
-
|
|
245
|
-
|
|
246
|
-
if (/_comment$/.test(key)) {
|
|
247
|
-
continue;
|
|
248
|
-
}
|
|
249
|
-
const entry = fileReferenceSection[key];
|
|
250
|
-
const entryPath = normalizePath(entry?.path);
|
|
251
|
-
if (entryPath === normalizedPath) {
|
|
252
|
-
return key;
|
|
253
|
-
}
|
|
254
|
-
}
|
|
255
|
-
return null;
|
|
256
|
-
}
|
|
257
|
-
function findBuildFileKeyByFileRef(xcodeProject, fileRef) {
|
|
258
|
-
const buildFileSection = xcodeProject.pbxBuildFileSection();
|
|
259
|
-
for (const key of Object.keys(buildFileSection)) {
|
|
260
|
-
if (/_comment$/.test(key)) {
|
|
261
|
-
continue;
|
|
262
|
-
}
|
|
263
|
-
const entry = buildFileSection[key];
|
|
264
|
-
if (entry?.fileRef === fileRef) {
|
|
265
|
-
return key;
|
|
266
|
-
}
|
|
320
|
+
/**
|
|
321
|
+
* Deletes de-referenced build-phase objects (and their `_comment` keys) from a phase section, so
|
|
322
|
+
* dropping duplicate phase refs from a target does not leave orphan objects that fail the
|
|
323
|
+
* `[Xcodeproj]` consistency check.
|
|
324
|
+
*/
|
|
325
|
+
function deleteOrphanPhaseObjects(phaseSection, removedEntries) {
|
|
326
|
+
for (const entry of removedEntries) {
|
|
327
|
+
const key = (0, fileReferences_1.normalizeRef)(entry.value);
|
|
328
|
+
delete phaseSection[key];
|
|
329
|
+
delete phaseSection[`${key}_comment`];
|
|
267
330
|
}
|
|
268
|
-
return null;
|
|
269
331
|
}
|
|
270
|
-
|
|
271
|
-
|
|
332
|
+
/**
|
|
333
|
+
* Resolves (or creates) the PBXBuildFile for a widget file within a specific build phase.
|
|
334
|
+
*
|
|
335
|
+
* The lookup is scoped to the given phase's `files`: a PBXBuildFile is only reused when it is
|
|
336
|
+
* already part of THIS phase. This prevents adopting a build file that belongs to another target's
|
|
337
|
+
* phase — the same PBXFileReference (e.g. an asset catalog) may legitimately need its own build
|
|
338
|
+
* file per phase, and sharing one produces the "no parent for object" corruption (issue #87). When
|
|
339
|
+
* no match exists a new PBXBuildFile with a fresh UUID is created.
|
|
340
|
+
*/
|
|
341
|
+
function ensureBuildFile(xcodeProject, filePath, buildPhase, targetName) {
|
|
342
|
+
const fileRef = (0, fileReferences_1.ensureWidgetFileReference)(xcodeProject, filePath, targetName);
|
|
272
343
|
const file = new pbxFile(filePath);
|
|
273
|
-
if (
|
|
274
|
-
|
|
275
|
-
|
|
276
|
-
|
|
277
|
-
|
|
278
|
-
|
|
279
|
-
|
|
280
|
-
|
|
281
|
-
|
|
282
|
-
const existingBuildFile = findBuildFileKeyByFileRef(xcodeProject, fileReference.fileRef);
|
|
283
|
-
if (existingBuildFile) {
|
|
284
|
-
return { uuid: existingBuildFile, ...fileReference };
|
|
344
|
+
if (buildPhase?.files) {
|
|
345
|
+
const buildFileSection = xcodeProject.pbxBuildFileSection();
|
|
346
|
+
const existingInPhase = buildPhase.files.find((entry) => {
|
|
347
|
+
const buildFile = buildFileSection[(0, fileReferences_1.normalizeRef)(entry.value)];
|
|
348
|
+
return buildFile?.fileRef === fileRef;
|
|
349
|
+
});
|
|
350
|
+
if (existingInPhase) {
|
|
351
|
+
return { uuid: (0, fileReferences_1.normalizeRef)(existingInPhase.value), fileRef, basename: file.basename, group: file.group };
|
|
352
|
+
}
|
|
285
353
|
}
|
|
286
|
-
const
|
|
287
|
-
|
|
288
|
-
file.
|
|
289
|
-
xcodeProject.addToPbxBuildFileSection(file);
|
|
290
|
-
return { uuid: file.uuid, ...fileReference, group: file.group };
|
|
354
|
+
const uuid = xcodeProject.generateUuid();
|
|
355
|
+
xcodeProject.addToPbxBuildFileSection({ uuid, fileRef, basename: file.basename, group: file.group });
|
|
356
|
+
return { uuid, fileRef, basename: file.basename, group: file.group };
|
|
291
357
|
}
|
|
292
358
|
function buildPhaseHasFile(xcodeProject, buildPhase, fileRef) {
|
|
293
359
|
if (!buildPhase?.files) {
|
|
@@ -295,20 +361,20 @@ function buildPhaseHasFile(xcodeProject, buildPhase, fileRef) {
|
|
|
295
361
|
}
|
|
296
362
|
const buildFileSection = xcodeProject.pbxBuildFileSection();
|
|
297
363
|
return buildPhase.files.some((entry) => {
|
|
298
|
-
const buildFile = buildFileSection[entry.value];
|
|
364
|
+
const buildFile = buildFileSection[(0, fileReferences_1.normalizeRef)(entry.value)];
|
|
299
365
|
return buildFile?.fileRef === fileRef;
|
|
300
366
|
});
|
|
301
367
|
}
|
|
302
|
-
function ensureBuildPhaseFiles(xcodeProject, buildPhase, filePaths) {
|
|
368
|
+
function ensureBuildPhaseFiles(xcodeProject, buildPhase, filePaths, targetName) {
|
|
303
369
|
if (!buildPhase.files) {
|
|
304
370
|
buildPhase.files = [];
|
|
305
371
|
}
|
|
306
372
|
for (const filePath of filePaths) {
|
|
307
|
-
const
|
|
308
|
-
if (buildPhaseHasFile(xcodeProject, buildPhase,
|
|
373
|
+
const fileRef = (0, fileReferences_1.ensureWidgetFileReference)(xcodeProject, filePath, targetName);
|
|
374
|
+
if (buildPhaseHasFile(xcodeProject, buildPhase, fileRef)) {
|
|
309
375
|
continue;
|
|
310
376
|
}
|
|
311
|
-
const buildFile = ensureBuildFile(xcodeProject, filePath);
|
|
377
|
+
const buildFile = ensureBuildFile(xcodeProject, filePath, buildPhase, targetName);
|
|
312
378
|
buildPhase.files.push({
|
|
313
379
|
value: buildFile.uuid,
|
|
314
380
|
comment: util.format('%s in %s', buildFile.basename, buildFile.group),
|
|
@@ -319,16 +385,26 @@ function ensureCopyFilesPhaseProduct(xcodeProject, buildPhase, productFile) {
|
|
|
319
385
|
if (!buildPhase.files) {
|
|
320
386
|
buildPhase.files = [];
|
|
321
387
|
}
|
|
322
|
-
const
|
|
323
|
-
|
|
388
|
+
const buildFileSection = xcodeProject.pbxBuildFileSection();
|
|
389
|
+
const alreadyInPhase = buildPhase.files.some((entry) => {
|
|
390
|
+
const buildFile = buildFileSection[(0, fileReferences_1.normalizeRef)(entry.value)];
|
|
391
|
+
return buildFile?.fileRef === productFile.fileRef;
|
|
392
|
+
});
|
|
393
|
+
if (alreadyInPhase) {
|
|
324
394
|
return;
|
|
325
395
|
}
|
|
326
|
-
|
|
327
|
-
|
|
396
|
+
// Reuse the product's build-file UUID only if it isn't already registered by another phase;
|
|
397
|
+
// otherwise mint a fresh UUID so the two phases never share one PBXBuildFile (issue #87).
|
|
398
|
+
let useUuid = productFile.uuid;
|
|
399
|
+
if (buildFileSection[productFile.uuid]) {
|
|
400
|
+
useUuid = xcodeProject.generateUuid();
|
|
401
|
+
xcodeProject.addToPbxBuildFileSection({ ...productFile, uuid: useUuid });
|
|
402
|
+
}
|
|
403
|
+
else {
|
|
328
404
|
xcodeProject.addToPbxBuildFileSection(productFile);
|
|
329
405
|
}
|
|
330
406
|
buildPhase.files.push({
|
|
331
|
-
value:
|
|
407
|
+
value: useUuid,
|
|
332
408
|
comment: util.format('%s in %s', productFile.basename, productFile.group),
|
|
333
409
|
});
|
|
334
410
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"buildPhases.js","sourceRoot":"","sources":["../../../../src/ios-widget/xcode/buildPhases.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"buildPhases.js","sourceRoot":"","sources":["../../../../src/ios-widget/xcode/buildPhases.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,18 +1,28 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.addXCConfigurationList = addXCConfigurationList;
|
|
4
3
|
exports.ensureXCConfigurationList = ensureXCConfigurationList;
|
|
5
4
|
const constants_1 = require("../../constants");
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
5
|
+
/**
|
|
6
|
+
* Resolves the main app signing settings for a widget configuration name: an exact name match
|
|
7
|
+
* wins, otherwise the first available configuration's settings are used as fallback.
|
|
8
|
+
*/
|
|
9
|
+
function signingForConfiguration(mainAppSettings, configurationName) {
|
|
10
|
+
if (!mainAppSettings) {
|
|
11
|
+
return {};
|
|
12
|
+
}
|
|
13
|
+
return mainAppSettings.byConfigurationName[configurationName] ?? mainAppSettings.fallback;
|
|
14
|
+
}
|
|
15
|
+
function createBuildSettings(options, configurationName) {
|
|
16
|
+
const { targetName, bundleIdentifier, deploymentTarget, version, buildNumber, mainAppSettings } = options;
|
|
17
|
+
const { codeSignStyle, developmentTeam, provisioningProfileSpecifier } = signingForConfiguration(mainAppSettings, configurationName);
|
|
18
|
+
const buildSettings = {
|
|
9
19
|
PRODUCT_NAME: `"$(TARGET_NAME)"`,
|
|
10
20
|
SWIFT_VERSION: constants_1.IOS.SWIFT_VERSION,
|
|
11
21
|
TARGETED_DEVICE_FAMILY: `"${constants_1.IOS.DEVICE_FAMILY}"`,
|
|
12
22
|
INFOPLIST_FILE: `${targetName}/Info.plist`,
|
|
13
23
|
INFOPLIST_OUTPUT_FORMAT: `"xml"`,
|
|
14
|
-
CURRENT_PROJECT_VERSION: `"1"`,
|
|
15
|
-
MARKETING_VERSION: `"1.0"`,
|
|
24
|
+
CURRENT_PROJECT_VERSION: `"${buildNumber ?? '1'}"`,
|
|
25
|
+
MARKETING_VERSION: `"${version ?? '1.0'}"`,
|
|
16
26
|
IPHONEOS_DEPLOYMENT_TARGET: `"${deploymentTarget}"`,
|
|
17
27
|
PRODUCT_BUNDLE_IDENTIFIER: `"${bundleIdentifier}"`,
|
|
18
28
|
SWIFT_OPTIMIZATION_LEVEL: `"-Onone"`,
|
|
@@ -20,45 +30,43 @@ function createCommonBuildSettings(options) {
|
|
|
20
30
|
APPLICATION_EXTENSION_API_ONLY: '"YES"',
|
|
21
31
|
ASSETCATALOG_COMPILER_APPICON_NAME: '""',
|
|
22
32
|
};
|
|
23
|
-
// Synchronize code signing settings from main app target
|
|
33
|
+
// Synchronize code signing settings from the main app target's matching configuration
|
|
24
34
|
if (codeSignStyle) {
|
|
25
|
-
|
|
35
|
+
buildSettings.CODE_SIGN_STYLE = `"${codeSignStyle}"`;
|
|
26
36
|
}
|
|
27
37
|
if (developmentTeam) {
|
|
28
|
-
|
|
38
|
+
buildSettings.DEVELOPMENT_TEAM = `"${developmentTeam}"`;
|
|
29
39
|
}
|
|
30
40
|
if (provisioningProfileSpecifier) {
|
|
31
|
-
|
|
41
|
+
buildSettings.PROVISIONING_PROFILE_SPECIFIER = `"${provisioningProfileSpecifier}"`;
|
|
32
42
|
}
|
|
33
|
-
return
|
|
43
|
+
return buildSettings;
|
|
34
44
|
}
|
|
35
45
|
/**
|
|
36
|
-
* Adds
|
|
46
|
+
* Adds a fresh XCConfigurationList for the widget extension target. Internal create-only fallback
|
|
47
|
+
* for {@link ensureXCConfigurationList}; not part of the public pipeline.
|
|
37
48
|
*/
|
|
38
49
|
function addXCConfigurationList(xcodeProject, options) {
|
|
39
50
|
const { targetName } = options;
|
|
40
|
-
const commonBuildSettings = createCommonBuildSettings(options);
|
|
41
51
|
const buildConfigurationsList = [
|
|
42
52
|
{
|
|
43
53
|
name: 'Debug',
|
|
44
54
|
isa: 'XCBuildConfiguration',
|
|
45
|
-
buildSettings:
|
|
46
|
-
...commonBuildSettings,
|
|
47
|
-
},
|
|
55
|
+
buildSettings: createBuildSettings(options, 'Debug'),
|
|
48
56
|
},
|
|
49
57
|
{
|
|
50
58
|
name: 'Release',
|
|
51
59
|
isa: 'XCBuildConfiguration',
|
|
52
|
-
buildSettings:
|
|
53
|
-
...commonBuildSettings,
|
|
54
|
-
},
|
|
60
|
+
buildSettings: createBuildSettings(options, 'Release'),
|
|
55
61
|
},
|
|
56
62
|
];
|
|
57
63
|
const xCConfigurationList = xcodeProject.addXCConfigurationList(buildConfigurationsList, 'Release', `Build configuration list for PBXNativeTarget "${targetName}"`);
|
|
58
64
|
return xCConfigurationList;
|
|
59
65
|
}
|
|
60
66
|
/**
|
|
61
|
-
* Ensures an existing XCConfigurationList is updated, or adds a new one if missing.
|
|
67
|
+
* Ensures an existing XCConfigurationList is updated, or adds a new one if missing. Each widget
|
|
68
|
+
* configuration receives the build settings derived for its own name, so Debug and Release signing
|
|
69
|
+
* stay in sync with the main app's respective configurations.
|
|
62
70
|
*/
|
|
63
71
|
function ensureXCConfigurationList(xcodeProject, options, existingConfigurationListId) {
|
|
64
72
|
const configurationListId = typeof existingConfigurationListId === 'string'
|
|
@@ -69,7 +77,6 @@ function ensureXCConfigurationList(xcodeProject, options, existingConfigurationL
|
|
|
69
77
|
if (!configurationList || !configurationList.buildConfigurations) {
|
|
70
78
|
return addXCConfigurationList(xcodeProject, options);
|
|
71
79
|
}
|
|
72
|
-
const commonBuildSettings = createCommonBuildSettings(options);
|
|
73
80
|
const buildConfigurations = configurationList.buildConfigurations;
|
|
74
81
|
const buildConfigurationSection = xcodeProject.pbxXCBuildConfigurationSection();
|
|
75
82
|
for (const configRef of buildConfigurations) {
|
|
@@ -81,9 +88,10 @@ function ensureXCConfigurationList(xcodeProject, options, existingConfigurationL
|
|
|
81
88
|
if (!buildConfiguration) {
|
|
82
89
|
continue;
|
|
83
90
|
}
|
|
91
|
+
const configurationName = typeof buildConfiguration.name === 'string' ? buildConfiguration.name.replace(/^"|"$/g, '') : '';
|
|
84
92
|
buildConfiguration.buildSettings = {
|
|
85
93
|
...(buildConfiguration.buildSettings ?? {}),
|
|
86
|
-
...
|
|
94
|
+
...createBuildSettings(options, configurationName),
|
|
87
95
|
};
|
|
88
96
|
}
|
|
89
97
|
return { uuid: configurationListId };
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"configurationList.js","sourceRoot":"","sources":["../../../../src/ios-widget/xcode/configurationList.ts"],"names":[],"mappings":";;
|
|
1
|
+
{"version":3,"file":"configurationList.js","sourceRoot":"","sources":["../../../../src/ios-widget/xcode/configurationList.ts"],"names":[],"mappings":"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"}
|