@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
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.iosServerUpdateRules = iosServerUpdateRules;
|
|
4
|
+
exports.resolveIOSWidgetServerUpdate = resolveIOSWidgetServerUpdate;
|
|
5
|
+
const expo_plugin_1 = require("@use-voltra/expo-plugin");
|
|
6
|
+
/**
|
|
7
|
+
* iOS payload widgets have always defaulted to 15 minutes and accepted anything down to 1, since
|
|
8
|
+
* WidgetKit stretches a timeline it cannot honour rather than refusing it. A widget with an
|
|
9
|
+
* `entry` follows ADR 0002 instead: default 15, floor 15 on both platforms.
|
|
10
|
+
*/
|
|
11
|
+
function iosServerUpdateRules(widget) {
|
|
12
|
+
return {
|
|
13
|
+
hasEntry: widget.entry !== undefined,
|
|
14
|
+
defaultIntervalMinutes: 15,
|
|
15
|
+
minimumIntervalMinutes: 1,
|
|
16
|
+
};
|
|
17
|
+
}
|
|
18
|
+
/** `serverUpdate` with defaults applied, as the plist and Swift generators consume it. */
|
|
19
|
+
function resolveIOSWidgetServerUpdate(widget) {
|
|
20
|
+
if (widget.serverUpdate === undefined) {
|
|
21
|
+
return undefined;
|
|
22
|
+
}
|
|
23
|
+
return (0, expo_plugin_1.resolveWidgetServerUpdate)(widget.serverUpdate, iosServerUpdateRules(widget));
|
|
24
|
+
}
|
|
25
|
+
//# sourceMappingURL=serverUpdate.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"serverUpdate.js","sourceRoot":"","sources":["../../../src/ios/serverUpdate.ts"],"names":[],"mappings":";;AAWA,oDAMC;AAGD,oEAQC;AA5BD,yDAAmE;AAMnE;;;;GAIG;AACH,SAAgB,oBAAoB,CAAC,MAAsC;IACzE,OAAO;QACL,QAAQ,EAAE,MAAM,CAAC,KAAK,KAAK,SAAS;QACpC,sBAAsB,EAAE,EAAE;QAC1B,sBAAsB,EAAE,CAAC;KAC1B,CAAA;AACH,CAAC;AAED,0FAA0F;AAC1F,SAAgB,4BAA4B,CAC1C,MAAuD;IAEvD,IAAI,MAAM,CAAC,YAAY,KAAK,SAAS,EAAE,CAAC;QACtC,OAAO,SAAS,CAAA;IAClB,CAAC;IAED,OAAO,IAAA,uCAAyB,EAAC,MAAM,CAAC,YAAY,EAAE,oBAAoB,CAAC,MAAM,CAAC,CAAC,CAAA;AACrF,CAAC"}
|
|
@@ -42,7 +42,8 @@ const expo_plugin_1 = require("@use-voltra/expo-plugin");
|
|
|
42
42
|
let hasWarnedExperimental = false;
|
|
43
43
|
/** Inspect every widget once and tag entry-backed widgets as Dynamic Widgets. */
|
|
44
44
|
function detectClientRenderedWidgets(widgets, projectRoot) {
|
|
45
|
-
const
|
|
45
|
+
const loader = (0, expo_plugin_1.createPrerenderWidgetModuleLoader)(projectRoot, 'ios');
|
|
46
|
+
const detected = widgets.map((widget) => detectSingleWidget(widget, projectRoot, loader));
|
|
46
47
|
if (!hasWarnedExperimental) {
|
|
47
48
|
const clientWidgetIds = detected.filter((widget) => widget.clientRendered).map((widget) => widget.id);
|
|
48
49
|
if (clientWidgetIds.length > 0) {
|
|
@@ -54,7 +55,7 @@ function detectClientRenderedWidgets(widgets, projectRoot) {
|
|
|
54
55
|
}
|
|
55
56
|
return detected;
|
|
56
57
|
}
|
|
57
|
-
function detectSingleWidget(widget, projectRoot) {
|
|
58
|
+
function detectSingleWidget(widget, projectRoot, loader) {
|
|
58
59
|
if (widget.entry === undefined) {
|
|
59
60
|
return {
|
|
60
61
|
...widget,
|
|
@@ -65,8 +66,7 @@ function detectSingleWidget(widget, projectRoot) {
|
|
|
65
66
|
if (!sourcePath || !fs.existsSync(sourcePath)) {
|
|
66
67
|
throw new Error(`[voltra] Dynamic Widget "${widget.id}" entry not found at ${path.relative(projectRoot, sourcePath ?? widget.entry)}`);
|
|
67
68
|
}
|
|
68
|
-
const
|
|
69
|
-
const widgetFn = widgetModule?.default ?? widgetModule;
|
|
69
|
+
const widgetFn = loader.loadDefaultExport(sourcePath);
|
|
70
70
|
if (typeof widgetFn !== 'function') {
|
|
71
71
|
throw new Error(`[voltra] Dynamic Widget "${widget.id}" at ${path.relative(projectRoot, sourcePath)} must default-export a function or component.`);
|
|
72
72
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"clientRendered.js","sourceRoot":"","sources":["../../../src/ios-widget/clientRendered.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA+BA,
|
|
1
|
+
{"version":3,"file":"clientRendered.js","sourceRoot":"","sources":["../../../src/ios-widget/clientRendered.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA+BA,kEAiBC;AAhDD,uCAAwB;AACxB,2CAA4B;AAE5B,yDAAoG;AAuBpG,8FAA8F;AAC9F,iBAAiB;AACjB,IAAI,qBAAqB,GAAG,KAAK,CAAA;AAEjC,iFAAiF;AACjF,SAAgB,2BAA2B,CAAC,OAA0B,EAAE,WAAmB;IACzF,MAAM,MAAM,GAAG,IAAA,+CAAiC,EAAC,WAAW,EAAE,KAAK,CAAC,CAAA;IACpE,MAAM,QAAQ,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,kBAAkB,CAAC,MAAM,EAAE,WAAW,EAAE,MAAM,CAAC,CAAC,CAAA;IAEzF,IAAI,CAAC,qBAAqB,EAAE,CAAC;QAC3B,MAAM,eAAe,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,cAAc,CAAC,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,EAAE,CAAC,CAAA;QACrG,IAAI,eAAe,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC/B,qBAAqB,GAAG,IAAI,CAAA;YAC5B,OAAO,CAAC,IAAI,CACV,8CAA8C,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK;gBAC3E,8FAA8F;gBAC9F,qFAAqF,CACxF,CAAA;QACH,CAAC;IACH,CAAC;IAED,OAAO,QAAQ,CAAA;AACjB,CAAC;AAED,SAAS,kBAAkB,CACzB,MAAuB,EACvB,WAAmB,EACnB,MAA0B;IAE1B,IAAI,MAAM,CAAC,KAAK,KAAK,SAAS,EAAE,CAAC;QAC/B,OAAO;YACL,GAAG,MAAM;YACT,cAAc,EAAE,KAAK;SACtB,CAAA;IACH,CAAC;IAED,MAAM,UAAU,GAAG,sBAAsB,CAAC,MAAM,CAAC,KAAK,EAAE,WAAW,CAAC,CAAA;IACpE,IAAI,CAAC,UAAU,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,UAAU,CAAC,EAAE,CAAC;QAC9C,MAAM,IAAI,KAAK,CACb,4BAA4B,MAAM,CAAC,EAAE,wBAAwB,IAAI,CAAC,QAAQ,CACxE,WAAW,EACX,UAAU,IAAI,MAAM,CAAC,KAAK,CAC3B,EAAE,CACJ,CAAA;IACH,CAAC;IAED,MAAM,QAAQ,GAAG,MAAM,CAAC,iBAAiB,CAAC,UAAU,CAAC,CAAA;IACrD,IAAI,OAAO,QAAQ,KAAK,UAAU,EAAE,CAAC;QACnC,MAAM,IAAI,KAAK,CACb,4BAA4B,MAAM,CAAC,EAAE,QAAQ,IAAI,CAAC,QAAQ,CACxD,WAAW,EACX,UAAU,CACX,+CAA+C,CACjD,CAAA;IACH,CAAC;IAED,OAAO;QACL,GAAG,MAAM;QACT,cAAc,EAAE,IAAI;QACpB,gBAAgB,EAAE,UAAU;KAC7B,CAAA;AACH,CAAC;AAED,SAAS,sBAAsB,CAAC,KAAa,EAAE,WAAmB;IAChE,OAAO,IAAI,CAAC,OAAO,CAAC,WAAW,EAAE,KAAK,CAAC,CAAA;AACzC,CAAC"}
|
|
@@ -62,7 +62,7 @@ const SINGLE_LOCALE_KEY = '__default';
|
|
|
62
62
|
* mirror `WidgetEnvironment` from packages/core/src/widget-environment.ts so the widget
|
|
63
63
|
* function sees the same shape it gets at runtime.
|
|
64
64
|
*/
|
|
65
|
-
function buildPlaceholderEnv() {
|
|
65
|
+
function buildPlaceholderEnv(voltraVersion) {
|
|
66
66
|
return {
|
|
67
67
|
date: Date.now(),
|
|
68
68
|
widgetFamily: 'systemMedium',
|
|
@@ -75,7 +75,7 @@ function buildPlaceholderEnv() {
|
|
|
75
75
|
isDev: false,
|
|
76
76
|
metroUrl: null,
|
|
77
77
|
appVersion: 'unknown',
|
|
78
|
-
voltraVersion
|
|
78
|
+
voltraVersion,
|
|
79
79
|
},
|
|
80
80
|
};
|
|
81
81
|
}
|
|
@@ -95,11 +95,11 @@ async function prerenderClientRenderedWidgets(widgets, projectRoot) {
|
|
|
95
95
|
// @use-voltra/android in a future phase.
|
|
96
96
|
const iosModuleId = '@use-voltra/ios';
|
|
97
97
|
const { renderVoltraVariantToJson } = (await Promise.resolve(`${iosModuleId}`).then(s => __importStar(require(s))));
|
|
98
|
-
const placeholderEnv = buildPlaceholderEnv();
|
|
98
|
+
const placeholderEnv = buildPlaceholderEnv((0, expo_plugin_1.resolveInstalledPackageVersion)(projectRoot, '@use-voltra/ios-client'));
|
|
99
|
+
const loader = (0, expo_plugin_1.createPrerenderWidgetModuleLoader)(projectRoot, 'ios');
|
|
99
100
|
for (const widget of clientWidgets) {
|
|
100
101
|
try {
|
|
101
|
-
const
|
|
102
|
-
const widgetFn = widgetModule?.default ?? widgetModule;
|
|
102
|
+
const widgetFn = loader.loadDefaultExport(widget.clientSourcePath);
|
|
103
103
|
if (typeof widgetFn !== 'function') {
|
|
104
104
|
throw new Error(`Expected the entry module at ${widget.clientSourcePath} to default-export a function or component.`);
|
|
105
105
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"clientRenderedPrerender.js","sourceRoot":"","sources":["../../../src/ios-widget/clientRenderedPrerender.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
|
1
|
+
{"version":3,"file":"clientRenderedPrerender.js","sourceRoot":"","sources":["../../../src/ios-widget/clientRenderedPrerender.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA6DA,wEA8CC;AA3GD,yDAKgC;AAIhC;;;;;;;;;;;;;;;;;;;GAmBG;AAEH,4FAA4F;AAC5F,MAAM,iBAAiB,GAAG,WAAW,CAAA;AAErC;;;;GAIG;AACH,SAAS,mBAAmB,CAAC,aAAqB;IAChD,OAAO;QACL,IAAI,EAAE,IAAI,CAAC,GAAG,EAAE;QAChB,YAAY,EAAE,cAAc;QAC5B,WAAW,EAAE,OAAO;QACpB,MAAM,EAAE,OAAO;QACf,mBAAmB,EAAE,WAAW;QAChC,8BAA8B,EAAE,IAAI;QACpC,aAAa,EAAE,SAAS;QACxB,KAAK,EAAE;YACL,KAAK,EAAE,KAAK;YACZ,QAAQ,EAAE,IAAI;YACd,UAAU,EAAE,SAAS;YACrB,aAAa;SACd;KACF,CAAA;AACH,CAAC;AAED;;;;GAIG;AACI,KAAK,UAAU,8BAA8B,CAClD,OAA4B,EAC5B,WAAmB;IAEnB,MAAM,OAAO,GAA4B,IAAI,GAAG,EAAE,CAAA;IAElD,MAAM,aAAa,GAAG,OAAO,CAAC,MAAM,CAClC,CAAC,CAAC,EAA6D,EAAE,CAAC,CAAC,CAAC,cAAc,CACnF,CAAA;IACD,IAAI,aAAa,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC/B,OAAO,OAAO,CAAA;IAChB,CAAC;IAED,kFAAkF;IAClF,kFAAkF;IAClF,yCAAyC;IACzC,MAAM,WAAW,GAAG,iBAAiB,CAAA;IACrC,MAAM,EAAE,yBAAyB,EAAE,GAAG,CAAC,yBAAa,WAAW,uCAAC,CAE/D,CAAA;IAED,MAAM,cAAc,GAAG,mBAAmB,CAAC,IAAA,4CAA8B,EAAC,WAAW,EAAE,wBAAwB,CAAC,CAAC,CAAA;IACjH,MAAM,MAAM,GAAG,IAAA,+CAAiC,EAAC,WAAW,EAAE,KAAK,CAAC,CAAA;IAEpE,KAAK,MAAM,MAAM,IAAI,aAAa,EAAE,CAAC;QACnC,IAAI,CAAC;YACH,MAAM,QAAQ,GAAG,MAAM,CAAC,iBAAiB,CAAC,MAAM,CAAC,gBAAgB,CAAC,CAAA;YAClE,IAAI,OAAO,QAAQ,KAAK,UAAU,EAAE,CAAC;gBACnC,MAAM,IAAI,KAAK,CACb,gCAAgC,MAAM,CAAC,gBAAgB,6CAA6C,CACrG,CAAA;YACH,CAAC;YAED,MAAM,OAAO,GAAG,QAAQ,CAAC,EAAE,EAAE,cAAc,CAAC,CAAA;YAC5C,MAAM,IAAI,GAAG,yBAAyB,CAAC,OAAO,CAAC,CAAA;YAC/C,MAAM,UAAU,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAA;YACvC,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,EAAE,IAAI,GAAG,CAAC,CAAC,CAAC,iBAAiB,EAAE,UAAU,CAAC,CAAC,CAAC,CAAC,CAAA;QACpE,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,IAAI,KAAK,CACb,uCAAuC,MAAM,CAAC,EAAE,MAAM,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAC/G,CAAA;QACH,CAAC;IACH,CAAC;IAED,oBAAM,CAAC,IAAI,CAAC,eAAe,aAAa,CAAC,MAAM,gCAAgC,CAAC,CAAA;IAChF,OAAO,OAAO,CAAA;AAChB,CAAC"}
|
|
@@ -0,0 +1,130 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.generateDynamicLiveActivityWidgetInstances = generateDynamicLiveActivityWidgetInstances;
|
|
7
|
+
exports.generateDynamicLiveActivityTypesSwift = generateDynamicLiveActivityTypesSwift;
|
|
8
|
+
exports.generateDynamicLiveActivitiesSwift = generateDynamicLiveActivitiesSwift;
|
|
9
|
+
const dedent_1 = __importDefault(require("dedent"));
|
|
10
|
+
const expo_plugin_1 = require("@use-voltra/expo-plugin");
|
|
11
|
+
const swift_utils_1 = require("../files/swift-utils");
|
|
12
|
+
function generateDynamicLiveActivityWidgetInstances(liveActivities) {
|
|
13
|
+
return sortedDefinitions(liveActivities)
|
|
14
|
+
.map((liveActivity) => `VoltraDynamicLiveActivity_${(0, expo_plugin_1.getDynamicLiveActivityAttributesType)(liveActivity.id)}()`)
|
|
15
|
+
.join('\n ');
|
|
16
|
+
}
|
|
17
|
+
/** Generates the Dynamic Live Activity types shared by the app and extension targets. */
|
|
18
|
+
function generateDynamicLiveActivityTypesSwift(liveActivities) {
|
|
19
|
+
const definitions = sortedDefinitions(liveActivities);
|
|
20
|
+
const typeDefinitions = definitions.map(generateDynamicLiveActivitySwift).map(normalizeIndent).join('\n\n');
|
|
21
|
+
const header = (0, dedent_1.default) `
|
|
22
|
+
//
|
|
23
|
+
// VoltraDynamicLiveActivityTypes.swift
|
|
24
|
+
//
|
|
25
|
+
// Auto-generated by Voltra config plugin. Do not edit.
|
|
26
|
+
//
|
|
27
|
+
|
|
28
|
+
import ActivityKit
|
|
29
|
+
import Foundation
|
|
30
|
+
|
|
31
|
+
import VoltraRuntime
|
|
32
|
+
|
|
33
|
+
@objc(VoltraGeneratedDynamicLiveActivityRegistration)
|
|
34
|
+
public final class VoltraGeneratedDynamicLiveActivityRegistration: NSObject {
|
|
35
|
+
@objc public static func registerDefinitions() {
|
|
36
|
+
${definitions
|
|
37
|
+
.map((liveActivity) => ` VoltraDynamicLiveActivityRegistry.shared.register(${(0, expo_plugin_1.getDynamicLiveActivityAttributesType)(liveActivity.id)}.self)`)
|
|
38
|
+
.join('\n')}
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
`;
|
|
43
|
+
return [header.trim(), typeDefinitions.trim()].filter(Boolean).join('\n\n');
|
|
44
|
+
}
|
|
45
|
+
/** Generates extension-only ActivityConfiguration declarations for Dynamic Live Activities. */
|
|
46
|
+
function generateDynamicLiveActivitiesSwift(liveActivities) {
|
|
47
|
+
const configurations = sortedDefinitions(liveActivities)
|
|
48
|
+
.map((liveActivity) => {
|
|
49
|
+
const attributesType = (0, expo_plugin_1.getDynamicLiveActivityAttributesType)(liveActivity.id);
|
|
50
|
+
const definitionId = (0, swift_utils_1.escapeForSwiftStringLiteral)(liveActivity.id);
|
|
51
|
+
return (0, dedent_1.default) `
|
|
52
|
+
public struct VoltraDynamicLiveActivity_${attributesType}: Widget {
|
|
53
|
+
public init() {}
|
|
54
|
+
|
|
55
|
+
public var body: some WidgetConfiguration {
|
|
56
|
+
if #available(iOS 18.0, *) {
|
|
57
|
+
return adaptiveConfig()
|
|
58
|
+
} else {
|
|
59
|
+
return defaultConfig()
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
|
|
63
|
+
@available(iOS 18.0, *)
|
|
64
|
+
private func adaptiveConfig() -> some WidgetConfiguration {
|
|
65
|
+
ActivityConfiguration(for: ${attributesType}.self) { context in
|
|
66
|
+
VoltraDynamicLiveActivityRenderer.lockScreen(definitionId: "${definitionId}", context: context)
|
|
67
|
+
} dynamicIsland: { context in
|
|
68
|
+
VoltraDynamicLiveActivityRenderer.dynamicIsland(definitionId: "${definitionId}", context: context)
|
|
69
|
+
}
|
|
70
|
+
.supplementalActivityFamilies([.small, .medium])
|
|
71
|
+
}
|
|
72
|
+
|
|
73
|
+
private func defaultConfig() -> some WidgetConfiguration {
|
|
74
|
+
ActivityConfiguration(for: ${attributesType}.self) { context in
|
|
75
|
+
VoltraDynamicLiveActivityRenderer.lockScreen(definitionId: "${definitionId}", context: context)
|
|
76
|
+
} dynamicIsland: { context in
|
|
77
|
+
VoltraDynamicLiveActivityRenderer.dynamicIsland(definitionId: "${definitionId}", context: context)
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
`;
|
|
82
|
+
})
|
|
83
|
+
.map(normalizeIndent)
|
|
84
|
+
.join('\n\n');
|
|
85
|
+
const header = (0, dedent_1.default) `
|
|
86
|
+
//
|
|
87
|
+
// VoltraDynamicLiveActivities.swift
|
|
88
|
+
//
|
|
89
|
+
// Auto-generated by Voltra config plugin. Do not edit.
|
|
90
|
+
//
|
|
91
|
+
|
|
92
|
+
import ActivityKit
|
|
93
|
+
import SwiftUI
|
|
94
|
+
import WidgetKit
|
|
95
|
+
import VoltraRuntime
|
|
96
|
+
|
|
97
|
+
`;
|
|
98
|
+
return [header.trim(), configurations.trim()].filter(Boolean).join('\n\n');
|
|
99
|
+
}
|
|
100
|
+
function generateDynamicLiveActivitySwift(liveActivity) {
|
|
101
|
+
const attributesType = (0, expo_plugin_1.getDynamicLiveActivityAttributesType)(liveActivity.id);
|
|
102
|
+
const definitionId = (0, swift_utils_1.escapeForSwiftStringLiteral)(liveActivity.id);
|
|
103
|
+
return (0, dedent_1.default) `
|
|
104
|
+
public struct ${attributesType}: ActivityAttributes {
|
|
105
|
+
public typealias ContentState = VoltraDynamicLiveActivityContentState
|
|
106
|
+
|
|
107
|
+
public let name: String
|
|
108
|
+
public let deepLinkUrl: String?
|
|
109
|
+
|
|
110
|
+
public init(name: String, deepLinkUrl: String?) {
|
|
111
|
+
self.name = name
|
|
112
|
+
self.deepLinkUrl = deepLinkUrl
|
|
113
|
+
}
|
|
114
|
+
}
|
|
115
|
+
|
|
116
|
+
extension ${attributesType}: VoltraDynamicLiveActivityDefinition {
|
|
117
|
+
public static let definitionId = "${definitionId}"
|
|
118
|
+
}
|
|
119
|
+
|
|
120
|
+
`;
|
|
121
|
+
}
|
|
122
|
+
function sortedDefinitions(liveActivities) {
|
|
123
|
+
return [...liveActivities].sort((left, right) => left.id.localeCompare(right.id));
|
|
124
|
+
}
|
|
125
|
+
function normalizeIndent(source) {
|
|
126
|
+
const lines = source.trim().split('\n');
|
|
127
|
+
const indent = Math.min(...lines.filter(Boolean).map((line) => line.match(/^\s*/)?.[0].length ?? 0));
|
|
128
|
+
return lines.map((line) => line.slice(indent)).join('\n');
|
|
129
|
+
}
|
|
130
|
+
//# sourceMappingURL=swift.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"swift.js","sourceRoot":"","sources":["../../../../src/ios-widget/dynamic-live-activity/swift.ts"],"names":[],"mappings":"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"}
|
|
@@ -55,7 +55,7 @@ const swift_1 = require("./swift");
|
|
|
55
55
|
* This should run before configureXcodeProject so the files exist when Xcode project is configured.
|
|
56
56
|
*/
|
|
57
57
|
const generateWidgetExtensionFiles = (config, props) => {
|
|
58
|
-
const { targetName, widgets, groupIdentifier, keychainGroup, version, buildNumber } = props;
|
|
58
|
+
const { targetName, widgets, liveActivities, groupIdentifier, keychainGroup, version, buildNumber, voltraVersion } = props;
|
|
59
59
|
return (0, config_plugins_1.withDangerousMod)(config, [
|
|
60
60
|
'ios',
|
|
61
61
|
async (config) => {
|
|
@@ -69,7 +69,7 @@ const generateWidgetExtensionFiles = (config, props) => {
|
|
|
69
69
|
fs.mkdirSync(targetPath, { recursive: true });
|
|
70
70
|
}
|
|
71
71
|
// Generate Info.plist
|
|
72
|
-
(0, infoPlist_1.generateInfoPlist)(targetPath, targetName, version, buildNumber);
|
|
72
|
+
(0, infoPlist_1.generateInfoPlist)(targetPath, targetName, version, buildNumber, voltraVersion);
|
|
73
73
|
// Generate Assets.xcassets and copy user images
|
|
74
74
|
(0, assets_1.generateAssets)({ targetPath });
|
|
75
75
|
// Generate Swift files (widget bundle, initial states)
|
|
@@ -77,12 +77,19 @@ const generateWidgetExtensionFiles = (config, props) => {
|
|
|
77
77
|
targetPath,
|
|
78
78
|
projectRoot,
|
|
79
79
|
widgets,
|
|
80
|
+
liveActivities,
|
|
80
81
|
});
|
|
81
82
|
// Write the iOS-owned Dynamic Widgets manifest for Metro to consume later.
|
|
82
83
|
(0, manifest_1.generateIOSDynamicWidgetsManifest)({
|
|
83
84
|
projectRoot,
|
|
84
85
|
widgets,
|
|
85
86
|
});
|
|
87
|
+
// Dynamic Live Activities have their own Metro manifest so their IDs may overlap with
|
|
88
|
+
// Dynamic Widgets and stale declarations never leak into a later prebuild.
|
|
89
|
+
(0, manifest_1.generateIOSDynamicLiveActivitiesManifest)({
|
|
90
|
+
projectRoot,
|
|
91
|
+
liveActivities,
|
|
92
|
+
});
|
|
86
93
|
// Generate entitlements file (may be empty if no groupIdentifier or keychainGroup)
|
|
87
94
|
(0, entitlements_1.generateEntitlements)({
|
|
88
95
|
targetPath,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/ios-widget/files/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,yDAAqE;AACrE,uCAAwB;AACxB,2CAA4B;AAG5B,qCAAyC;AACzC,iDAAqD;AACrD,2CAA+C;AAC/C,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/ios-widget/files/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,yDAAqE;AACrE,uCAAwB;AACxB,2CAA4B;AAG5B,qCAAyC;AACzC,iDAAqD;AACrD,2CAA+C;AAC/C,yCAAwG;AACxG,mCAA4C;AAa5C;;;;;;;;;;;GAWG;AACI,MAAM,4BAA4B,GAAoD,CAAC,MAAM,EAAE,KAAK,EAAE,EAAE;IAC7G,MAAM,EAAE,UAAU,EAAE,OAAO,EAAE,cAAc,EAAE,eAAe,EAAE,aAAa,EAAE,OAAO,EAAE,WAAW,EAAE,aAAa,EAAE,GAChH,KAAK,CAAA;IAEP,OAAO,IAAA,iCAAgB,EAAC,MAAM,EAAE;QAC9B,KAAK;QACL,KAAK,EAAE,MAAM,EAAE,EAAE;YACf,IAAI,MAAM,CAAC,UAAU,CAAC,UAAU,EAAE,CAAC;gBACjC,OAAO,MAAM,CAAA;YACf,CAAC;YAED,MAAM,EAAE,mBAAmB,EAAE,WAAW,EAAE,GAAG,MAAM,CAAC,UAAU,CAAA;YAC9D,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,mBAAmB,EAAE,UAAU,CAAC,CAAA;YAE7D,iCAAiC;YACjC,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,UAAU,CAAC,EAAE,CAAC;gBAC/B,EAAE,CAAC,SAAS,CAAC,UAAU,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAA;YAC/C,CAAC;YAED,sBAAsB;YACtB,IAAA,6BAAiB,EAAC,UAAU,EAAE,UAAU,EAAE,OAAO,EAAE,WAAW,EAAE,aAAa,CAAC,CAAA;YAE9E,gDAAgD;YAChD,IAAA,uBAAc,EAAC,EAAE,UAAU,EAAE,CAAC,CAAA;YAE9B,uDAAuD;YACvD,MAAM,IAAA,0BAAkB,EAAC;gBACvB,UAAU;gBACV,WAAW;gBACX,OAAO;gBACP,cAAc;aACf,CAAC,CAAA;YAEF,2EAA2E;YAC3E,IAAA,4CAAiC,EAAC;gBAChC,WAAW;gBACX,OAAO;aACR,CAAC,CAAA;YAEF,sFAAsF;YACtF,2EAA2E;YAC3E,IAAA,mDAAwC,EAAC;gBACvC,WAAW;gBACX,cAAc;aACf,CAAC,CAAA;YAEF,mFAAmF;YACnF,IAAA,mCAAoB,EAAC;gBACnB,UAAU;gBACV,UAAU;gBACV,eAAe;gBACf,aAAa;aACd,CAAC,CAAA;YAEF,OAAO,MAAM,CAAA;QACf,CAAC;KACF,CAAC,CAAA;AACJ,CAAC,CAAA;AAzDY,QAAA,4BAA4B,gCAyDxC"}
|
|
@@ -43,7 +43,7 @@ const expo_plugin_1 = require("@use-voltra/expo-plugin");
|
|
|
43
43
|
* This includes version information and the required WidgetKit extension point.
|
|
44
44
|
* Version keys are written directly to the plist following the Expo pattern.
|
|
45
45
|
*/
|
|
46
|
-
function generateInfoPlistContent(targetName, version, buildNumber) {
|
|
46
|
+
function generateInfoPlistContent(targetName, version, buildNumber, voltraVersion) {
|
|
47
47
|
return `<?xml version="1.0" encoding="UTF-8"?>
|
|
48
48
|
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
|
|
49
49
|
<plist version="1.0">
|
|
@@ -66,6 +66,8 @@ function generateInfoPlistContent(targetName, version, buildNumber) {
|
|
|
66
66
|
<string>${version}</string>
|
|
67
67
|
<key>CFBundleVersion</key>
|
|
68
68
|
<string>${buildNumber}</string>
|
|
69
|
+
<key>Voltra_Version</key>
|
|
70
|
+
<string>${voltraVersion}</string>
|
|
69
71
|
<key>NSExtension</key>
|
|
70
72
|
<dict>
|
|
71
73
|
<key>NSExtensionPointIdentifier</key>
|
|
@@ -82,10 +84,11 @@ function generateInfoPlistContent(targetName, version, buildNumber) {
|
|
|
82
84
|
* @param targetName - The widget extension target name (used for CFBundleDisplayName)
|
|
83
85
|
* @param version - The app version (CFBundleShortVersionString)
|
|
84
86
|
* @param buildNumber - The build number (CFBundleVersion)
|
|
87
|
+
* @param voltraVersion - The installed @use-voltra/ios-client package version
|
|
85
88
|
*/
|
|
86
|
-
function generateInfoPlist(targetPath, targetName, version, buildNumber) {
|
|
89
|
+
function generateInfoPlist(targetPath, targetName, version, buildNumber, voltraVersion) {
|
|
87
90
|
const infoPlistPath = path.join(targetPath, 'Info.plist');
|
|
88
|
-
fs.writeFileSync(infoPlistPath, generateInfoPlistContent(targetName, version, buildNumber));
|
|
91
|
+
fs.writeFileSync(infoPlistPath, generateInfoPlistContent(targetName, version, buildNumber, voltraVersion));
|
|
89
92
|
expo_plugin_1.logger.info('Generated Info.plist');
|
|
90
93
|
}
|
|
91
94
|
//# sourceMappingURL=infoPlist.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"infoPlist.js","sourceRoot":"","sources":["../../../../src/ios-widget/files/infoPlist.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
|
1
|
+
{"version":3,"file":"infoPlist.js","sourceRoot":"","sources":["../../../../src/ios-widget/files/infoPlist.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA4DA,8CAUC;AAtED,uCAAwB;AACxB,2CAA4B;AAE5B,yDAAgD;AAEhD;;;;;GAKG;AACH,SAAS,wBAAwB,CAC/B,UAAkB,EAClB,OAAe,EACf,WAAmB,EACnB,aAAqB;IAErB,OAAO;;;;;;;WAOE,UAAU;;;;;;;;;;;;WAYV,OAAO;;WAEP,WAAW;;WAEX,aAAa;;;;;;;;CAQvB,CAAA;AACD,CAAC;AAED;;;;;;;;GAQG;AACH,SAAgB,iBAAiB,CAC/B,UAAkB,EAClB,UAAkB,EAClB,OAAe,EACf,WAAmB,EACnB,aAAqB;IAErB,MAAM,aAAa,GAAG,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,YAAY,CAAC,CAAA;IACzD,EAAE,CAAC,aAAa,CAAC,aAAa,EAAE,wBAAwB,CAAC,UAAU,EAAE,OAAO,EAAE,WAAW,EAAE,aAAa,CAAC,CAAC,CAAA;IAC1G,oBAAM,CAAC,IAAI,CAAC,sBAAsB,CAAC,CAAA;AACrC,CAAC"}
|
|
@@ -34,11 +34,14 @@ var __importStar = (this && this.__importStar) || (function () {
|
|
|
34
34
|
})();
|
|
35
35
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
36
36
|
exports.createIOSDynamicWidgetsManifest = createIOSDynamicWidgetsManifest;
|
|
37
|
+
exports.createIOSDynamicLiveActivitiesManifest = createIOSDynamicLiveActivitiesManifest;
|
|
37
38
|
exports.generateIOSDynamicWidgetsManifest = generateIOSDynamicWidgetsManifest;
|
|
39
|
+
exports.generateIOSDynamicLiveActivitiesManifest = generateIOSDynamicLiveActivitiesManifest;
|
|
38
40
|
const fs = __importStar(require("fs"));
|
|
39
41
|
const path = __importStar(require("path"));
|
|
40
42
|
const expo_plugin_1 = require("@use-voltra/expo-plugin");
|
|
41
43
|
const MANIFEST_PATH = path.join('.voltra', 'manifest.ios.json');
|
|
44
|
+
const LIVE_ACTIVITIES_MANIFEST_PATH = path.join('.voltra', 'manifest.ios.live-activities.json');
|
|
42
45
|
function createIOSDynamicWidgetsManifest(projectRoot, widgets) {
|
|
43
46
|
const manifestWidgets = [];
|
|
44
47
|
for (const widget of widgets) {
|
|
@@ -56,6 +59,18 @@ function createIOSDynamicWidgetsManifest(projectRoot, widgets) {
|
|
|
56
59
|
widgets: manifestWidgets,
|
|
57
60
|
};
|
|
58
61
|
}
|
|
62
|
+
function createIOSDynamicLiveActivitiesManifest(projectRoot, liveActivities) {
|
|
63
|
+
return {
|
|
64
|
+
version: 1,
|
|
65
|
+
platform: 'ios',
|
|
66
|
+
liveActivities: [...liveActivities]
|
|
67
|
+
.sort((left, right) => left.id.localeCompare(right.id))
|
|
68
|
+
.map((liveActivity) => ({
|
|
69
|
+
id: liveActivity.id,
|
|
70
|
+
entry: (0, expo_plugin_1.validateWidgetEntry)(liveActivity.entry, liveActivity.id, projectRoot),
|
|
71
|
+
})),
|
|
72
|
+
};
|
|
73
|
+
}
|
|
59
74
|
function generateIOSDynamicWidgetsManifest(options) {
|
|
60
75
|
const { projectRoot, widgets } = options;
|
|
61
76
|
const manifestPath = path.join(projectRoot, MANIFEST_PATH);
|
|
@@ -64,4 +79,13 @@ function generateIOSDynamicWidgetsManifest(options) {
|
|
|
64
79
|
fs.writeFileSync(manifestPath, `${JSON.stringify(manifest, null, 2)}\n`);
|
|
65
80
|
expo_plugin_1.logger.info(`Generated ${MANIFEST_PATH}`);
|
|
66
81
|
}
|
|
82
|
+
/** Writes the dedicated Dynamic Live Activity manifest on every prebuild, including when empty. */
|
|
83
|
+
function generateIOSDynamicLiveActivitiesManifest(options) {
|
|
84
|
+
const { projectRoot, liveActivities } = options;
|
|
85
|
+
const manifestPath = path.join(projectRoot, LIVE_ACTIVITIES_MANIFEST_PATH);
|
|
86
|
+
const manifest = createIOSDynamicLiveActivitiesManifest(projectRoot, liveActivities ?? []);
|
|
87
|
+
fs.mkdirSync(path.dirname(manifestPath), { recursive: true });
|
|
88
|
+
fs.writeFileSync(manifestPath, `${JSON.stringify(manifest, null, 2)}\n`);
|
|
89
|
+
expo_plugin_1.logger.info(`Generated ${LIVE_ACTIVITIES_MANIFEST_PATH}`);
|
|
90
|
+
}
|
|
67
91
|
//# sourceMappingURL=manifest.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"manifest.js","sourceRoot":"","sources":["../../../../src/ios-widget/files/manifest.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
|
1
|
+
{"version":3,"file":"manifest.js","sourceRoot":"","sources":["../../../../src/ios-widget/files/manifest.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.escapeForSwiftStringLiteral = escapeForSwiftStringLiteral;
|
|
4
|
+
function escapeForSwiftStringLiteral(value) {
|
|
5
|
+
return value.replace(/\\/g, '\\\\').replace(/"/g, '\\"').replace(/\n/g, '\\n').replace(/\r/g, '\\r');
|
|
6
|
+
}
|
|
7
|
+
//# sourceMappingURL=swift-utils.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"swift-utils.js","sourceRoot":"","sources":["../../../../src/ios-widget/files/swift-utils.ts"],"names":[],"mappings":";;AAAA,kEAEC;AAFD,SAAgB,2BAA2B,CAAC,KAAa;IACvD,OAAO,KAAK,CAAC,OAAO,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC,OAAO,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,OAAO,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC,OAAO,CAAC,KAAK,EAAE,KAAK,CAAC,CAAA;AACtG,CAAC"}
|