@use-voltra/ios-client 1.4.0 → 2.0.0-rc.1
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 +113 -0
- package/Voltra.podspec +28 -0
- package/build/commonjs/VoltraModule.js +13 -0
- package/build/commonjs/VoltraModule.js.map +1 -0
- package/build/commonjs/components/VoltraLiveActivityPreview.js +30 -0
- package/build/commonjs/components/VoltraLiveActivityPreview.js.map +1 -0
- package/build/commonjs/components/VoltraView.js +50 -0
- package/build/commonjs/components/VoltraView.js.map +1 -0
- package/build/commonjs/components/VoltraWidgetPreview.js +58 -0
- package/build/commonjs/components/VoltraWidgetPreview.js.map +1 -0
- package/build/commonjs/events.js +32 -0
- package/build/commonjs/events.js.map +1 -0
- package/build/commonjs/helpers.js +26 -0
- package/build/commonjs/helpers.js.map +1 -0
- package/build/commonjs/index.js +226 -0
- package/build/commonjs/index.js.map +1 -0
- package/build/commonjs/live-activity/api.js +168 -0
- package/build/commonjs/live-activity/api.js.map +1 -0
- package/build/commonjs/logger.js +39 -0
- package/build/commonjs/logger.js.map +1 -0
- package/build/commonjs/native/NativeVoltra.js +15 -0
- package/build/commonjs/native/NativeVoltra.js.map +1 -0
- package/build/commonjs/native/VoltraRNNativeComponent.ts +9 -0
- package/build/commonjs/package.json +1 -0
- package/build/commonjs/preload.js +54 -0
- package/build/commonjs/preload.js.map +1 -0
- package/build/commonjs/types.js +2 -0
- package/build/commonjs/types.js.map +1 -0
- package/build/commonjs/utils/assertRunningOnApple.js +16 -0
- package/build/commonjs/utils/assertRunningOnApple.js.map +1 -0
- package/build/commonjs/utils/helpers.js +19 -0
- package/build/commonjs/utils/helpers.js.map +1 -0
- package/build/commonjs/utils/index.js +28 -0
- package/build/commonjs/utils/index.js.map +1 -0
- package/build/commonjs/utils/useUpdateOnHMR.js +25 -0
- package/build/commonjs/utils/useUpdateOnHMR.js.map +1 -0
- package/build/commonjs/widgets/server-credentials.js +18 -0
- package/build/commonjs/widgets/server-credentials.js.map +1 -0
- package/build/commonjs/widgets/widget-api.js +55 -0
- package/build/commonjs/widgets/widget-api.js.map +1 -0
- package/build/module/VoltraModule.js +4 -0
- package/build/module/VoltraModule.js.map +1 -0
- package/build/module/components/VoltraLiveActivityPreview.js +25 -0
- package/build/module/components/VoltraLiveActivityPreview.js.map +1 -0
- package/build/module/components/VoltraView.js +44 -0
- package/build/module/components/VoltraView.js.map +1 -0
- package/build/module/components/VoltraWidgetPreview.js +53 -0
- package/build/module/components/VoltraWidgetPreview.js.map +1 -0
- package/build/module/events.js +28 -0
- package/build/module/events.js.map +1 -0
- package/build/module/helpers.js +21 -0
- package/build/module/helpers.js.map +1 -0
- package/build/module/index.js +17 -0
- package/build/module/index.js.map +1 -0
- package/build/module/live-activity/api.js +158 -0
- package/build/module/live-activity/api.js.map +1 -0
- package/build/module/logger.js +35 -0
- package/build/module/logger.js.map +1 -0
- package/build/module/native/NativeVoltra.js +11 -0
- package/build/module/native/NativeVoltra.js.map +1 -0
- package/build/module/native/VoltraRNNativeComponent.ts +9 -0
- package/build/module/package.json +1 -0
- package/build/module/preload.js +48 -0
- package/build/module/preload.js.map +1 -0
- package/build/module/types.js +2 -0
- package/build/module/types.js.map +1 -0
- package/build/module/utils/assertRunningOnApple.js +11 -0
- package/build/module/utils/assertRunningOnApple.js.map +1 -0
- package/build/module/utils/helpers.js +4 -0
- package/build/module/utils/helpers.js.map +1 -0
- package/build/module/utils/index.js +5 -0
- package/build/module/utils/index.js.map +1 -0
- package/build/module/utils/useUpdateOnHMR.js +20 -0
- package/build/module/utils/useUpdateOnHMR.js.map +1 -0
- package/build/module/widgets/server-credentials.js +13 -0
- package/build/module/widgets/server-credentials.js.map +1 -0
- package/build/module/widgets/widget-api.js +45 -0
- package/build/module/widgets/widget-api.js.map +1 -0
- package/build/typescript/commonjs/VoltraModule.d.ts +3 -0
- package/build/typescript/commonjs/VoltraModule.d.ts.map +1 -0
- package/build/typescript/commonjs/components/VoltraLiveActivityPreview.d.ts.map +1 -0
- package/build/typescript/commonjs/components/VoltraView.d.ts.map +1 -0
- package/build/typescript/commonjs/components/VoltraWidgetPreview.d.ts.map +1 -0
- package/build/typescript/commonjs/events.d.ts.map +1 -0
- package/build/typescript/commonjs/helpers.d.ts.map +1 -0
- package/build/{types → typescript/commonjs}/index.d.ts +5 -0
- package/build/typescript/commonjs/index.d.ts.map +1 -0
- package/build/typescript/commonjs/live-activity/api.d.ts.map +1 -0
- package/build/typescript/commonjs/logger.d.ts.map +1 -0
- package/build/typescript/commonjs/native/NativeVoltra.d.ts +100 -0
- package/build/typescript/commonjs/native/NativeVoltra.d.ts.map +1 -0
- package/build/typescript/commonjs/native/VoltraRNNativeComponent.d.ts +8 -0
- package/build/typescript/commonjs/native/VoltraRNNativeComponent.d.ts.map +1 -0
- package/build/typescript/commonjs/package.json +1 -0
- package/build/typescript/commonjs/preload.d.ts.map +1 -0
- package/build/typescript/commonjs/types.d.ts.map +1 -0
- package/build/typescript/commonjs/utils/assertRunningOnApple.d.ts.map +1 -0
- package/build/typescript/commonjs/utils/helpers.d.ts.map +1 -0
- package/build/typescript/commonjs/utils/index.d.ts.map +1 -0
- package/build/typescript/commonjs/utils/useUpdateOnHMR.d.ts.map +1 -0
- package/build/typescript/commonjs/widgets/server-credentials.d.ts.map +1 -0
- package/build/typescript/commonjs/widgets/widget-api.d.ts.map +1 -0
- package/build/typescript/module/VoltraModule.d.ts +3 -0
- package/build/typescript/module/VoltraModule.d.ts.map +1 -0
- package/build/typescript/module/components/VoltraLiveActivityPreview.d.ts +7 -0
- package/build/typescript/module/components/VoltraLiveActivityPreview.d.ts.map +1 -0
- package/build/typescript/module/components/VoltraView.d.ts +12 -0
- package/build/typescript/module/components/VoltraView.d.ts.map +1 -0
- package/build/typescript/module/components/VoltraWidgetPreview.d.ts +9 -0
- package/build/typescript/module/components/VoltraWidgetPreview.d.ts.map +1 -0
- package/build/typescript/module/events.d.ts +33 -0
- package/build/typescript/module/events.d.ts.map +1 -0
- package/build/typescript/module/helpers.d.ts +3 -0
- package/build/typescript/module/helpers.d.ts.map +1 -0
- package/build/typescript/module/index.d.ts +18 -0
- package/build/typescript/module/index.d.ts.map +1 -0
- package/build/typescript/module/live-activity/api.d.ts +35 -0
- package/build/typescript/module/live-activity/api.d.ts.map +1 -0
- package/build/typescript/module/logger.d.ts +16 -0
- package/build/typescript/module/logger.d.ts.map +1 -0
- package/build/typescript/module/native/NativeVoltra.d.ts +100 -0
- package/build/typescript/module/native/NativeVoltra.d.ts.map +1 -0
- package/build/typescript/module/native/VoltraRNNativeComponent.d.ts +8 -0
- package/build/typescript/module/native/VoltraRNNativeComponent.d.ts.map +1 -0
- package/build/typescript/module/package.json +1 -0
- package/build/typescript/module/preload.d.ts +6 -0
- package/build/typescript/module/preload.d.ts.map +1 -0
- package/build/typescript/module/types.d.ts +2 -0
- package/build/typescript/module/types.d.ts.map +1 -0
- package/build/typescript/module/utils/assertRunningOnApple.d.ts +2 -0
- package/build/typescript/module/utils/assertRunningOnApple.d.ts.map +1 -0
- package/build/{esm/utils/helpers.js → typescript/module/utils/helpers.d.ts} +1 -1
- package/build/typescript/module/utils/helpers.d.ts.map +1 -0
- package/build/{esm/utils/index.js → typescript/module/utils/index.d.ts} +1 -1
- package/build/typescript/module/utils/index.d.ts.map +1 -0
- package/build/typescript/module/utils/useUpdateOnHMR.d.ts +5 -0
- package/build/typescript/module/utils/useUpdateOnHMR.d.ts.map +1 -0
- package/build/typescript/module/widgets/server-credentials.d.ts +5 -0
- package/build/typescript/module/widgets/server-credentials.d.ts.map +1 -0
- package/build/typescript/module/widgets/widget-api.d.ts +11 -0
- package/build/typescript/module/widgets/widget-api.d.ts.map +1 -0
- package/expo-plugin/app.plugin.js +3 -0
- package/expo-plugin/build/cjs/constants.js +23 -0
- package/expo-plugin/build/cjs/constants.js.map +1 -0
- package/expo-plugin/build/cjs/index.js +51 -0
- package/expo-plugin/build/cjs/index.js.map +1 -0
- package/expo-plugin/build/cjs/ios/eas.js +28 -0
- package/expo-plugin/build/cjs/ios/eas.js.map +1 -0
- package/expo-plugin/build/cjs/ios/entitlements.js +46 -0
- package/expo-plugin/build/cjs/ios/entitlements.js.map +1 -0
- package/expo-plugin/build/cjs/ios/index.js +39 -0
- package/expo-plugin/build/cjs/ios/index.js.map +1 -0
- package/expo-plugin/build/cjs/ios/infoPlist.js +51 -0
- package/expo-plugin/build/cjs/ios/infoPlist.js.map +1 -0
- package/expo-plugin/build/cjs/ios/pushNotifications.js +22 -0
- package/expo-plugin/build/cjs/ios/pushNotifications.js.map +1 -0
- package/expo-plugin/build/cjs/ios-widget/eas.js +66 -0
- package/expo-plugin/build/cjs/ios-widget/eas.js.map +1 -0
- package/expo-plugin/build/cjs/ios-widget/files/assets.js +199 -0
- package/expo-plugin/build/cjs/ios-widget/files/assets.js.map +1 -0
- package/expo-plugin/build/cjs/ios-widget/files/entitlements.js +77 -0
- package/expo-plugin/build/cjs/ios-widget/files/entitlements.js.map +1 -0
- package/expo-plugin/build/cjs/ios-widget/files/index.js +92 -0
- package/expo-plugin/build/cjs/ios-widget/files/index.js.map +1 -0
- package/expo-plugin/build/cjs/ios-widget/files/infoPlist.js +91 -0
- package/expo-plugin/build/cjs/ios-widget/files/infoPlist.js.map +1 -0
- package/expo-plugin/build/cjs/ios-widget/files/swift.js +443 -0
- package/expo-plugin/build/cjs/ios-widget/files/swift.js.map +1 -0
- package/expo-plugin/build/cjs/ios-widget/fonts.js +151 -0
- package/expo-plugin/build/cjs/ios-widget/fonts.js.map +1 -0
- package/expo-plugin/build/cjs/ios-widget/index.js +46 -0
- package/expo-plugin/build/cjs/ios-widget/index.js.map +1 -0
- package/expo-plugin/build/cjs/ios-widget/podfile.js +41 -0
- package/expo-plugin/build/cjs/ios-widget/podfile.js.map +1 -0
- package/expo-plugin/build/cjs/ios-widget/widgetPlist.js +99 -0
- package/expo-plugin/build/cjs/ios-widget/widgetPlist.js.map +1 -0
- package/expo-plugin/build/cjs/ios-widget/xcode/buildPhases.js +247 -0
- package/expo-plugin/build/cjs/ios-widget/xcode/buildPhases.js.map +1 -0
- package/expo-plugin/build/cjs/ios-widget/xcode/configurationList.js +91 -0
- package/expo-plugin/build/cjs/ios-widget/xcode/configurationList.js.map +1 -0
- package/expo-plugin/build/cjs/ios-widget/xcode/groups.js +79 -0
- package/expo-plugin/build/cjs/ios-widget/xcode/groups.js.map +1 -0
- package/expo-plugin/build/cjs/ios-widget/xcode/index.js +155 -0
- package/expo-plugin/build/cjs/ios-widget/xcode/index.js.map +1 -0
- package/expo-plugin/build/cjs/ios-widget/xcode/mainAppSettings.js +71 -0
- package/expo-plugin/build/cjs/ios-widget/xcode/mainAppSettings.js.map +1 -0
- package/expo-plugin/build/cjs/ios-widget/xcode/productFile.js +74 -0
- package/expo-plugin/build/cjs/ios-widget/xcode/productFile.js.map +1 -0
- package/expo-plugin/build/cjs/ios-widget/xcode/target.js +113 -0
- package/expo-plugin/build/cjs/ios-widget/xcode/target.js.map +1 -0
- package/expo-plugin/build/cjs/utils/fileDiscovery.js +120 -0
- package/expo-plugin/build/cjs/utils/fileDiscovery.js.map +1 -0
- package/expo-plugin/build/cjs/utils/urlScheme.js +40 -0
- package/expo-plugin/build/cjs/utils/urlScheme.js.map +1 -0
- package/expo-plugin/build/cjs/validation.js +55 -0
- package/expo-plugin/build/cjs/validation.js.map +1 -0
- package/expo-plugin/build/esm/constants.js +20 -0
- package/expo-plugin/build/esm/constants.js.map +1 -0
- package/expo-plugin/build/esm/index.js +49 -0
- package/expo-plugin/build/esm/index.js.map +1 -0
- package/expo-plugin/build/esm/ios/eas.js +24 -0
- package/expo-plugin/build/esm/ios/eas.js.map +1 -0
- package/expo-plugin/build/esm/ios/entitlements.js +42 -0
- package/expo-plugin/build/esm/ios/entitlements.js.map +1 -0
- package/expo-plugin/build/esm/ios/index.js +34 -0
- package/expo-plugin/build/esm/ios/index.js.map +1 -0
- package/expo-plugin/build/esm/ios/infoPlist.js +47 -0
- package/expo-plugin/build/esm/ios/infoPlist.js.map +1 -0
- package/expo-plugin/build/esm/ios/pushNotifications.js +18 -0
- package/expo-plugin/build/esm/ios/pushNotifications.js.map +1 -0
- package/expo-plugin/build/esm/ios-widget/eas.js +62 -0
- package/expo-plugin/build/esm/ios-widget/eas.js.map +1 -0
- package/expo-plugin/build/esm/ios-widget/files/assets.js +163 -0
- package/expo-plugin/build/esm/ios-widget/files/assets.js.map +1 -0
- package/expo-plugin/build/esm/ios-widget/files/entitlements.js +37 -0
- package/expo-plugin/build/esm/ios-widget/files/entitlements.js.map +1 -0
- package/expo-plugin/build/esm/ios-widget/files/index.js +55 -0
- package/expo-plugin/build/esm/ios-widget/files/index.js.map +1 -0
- package/expo-plugin/build/esm/ios-widget/files/infoPlist.js +55 -0
- package/expo-plugin/build/esm/ios-widget/files/infoPlist.js.map +1 -0
- package/expo-plugin/build/esm/ios-widget/files/swift.js +403 -0
- package/expo-plugin/build/esm/ios-widget/files/swift.js.map +1 -0
- package/expo-plugin/build/esm/ios-widget/fonts.js +111 -0
- package/expo-plugin/build/esm/ios-widget/fonts.js.map +1 -0
- package/expo-plugin/build/esm/ios-widget/index.js +42 -0
- package/expo-plugin/build/esm/ios-widget/index.js.map +1 -0
- package/expo-plugin/build/esm/ios-widget/podfile.js +37 -0
- package/expo-plugin/build/esm/ios-widget/podfile.js.map +1 -0
- package/expo-plugin/build/esm/ios-widget/widgetPlist.js +92 -0
- package/expo-plugin/build/esm/ios-widget/widgetPlist.js.map +1 -0
- package/expo-plugin/build/esm/ios-widget/xcode/buildPhases.js +210 -0
- package/expo-plugin/build/esm/ios-widget/xcode/buildPhases.js.map +1 -0
- package/expo-plugin/build/esm/ios-widget/xcode/configurationList.js +87 -0
- package/expo-plugin/build/esm/ios-widget/xcode/configurationList.js.map +1 -0
- package/expo-plugin/build/esm/ios-widget/xcode/groups.js +75 -0
- package/expo-plugin/build/esm/ios-widget/xcode/groups.js.map +1 -0
- package/expo-plugin/build/esm/ios-widget/xcode/index.js +118 -0
- package/expo-plugin/build/esm/ios-widget/xcode/index.js.map +1 -0
- package/expo-plugin/build/esm/ios-widget/xcode/mainAppSettings.js +68 -0
- package/expo-plugin/build/esm/ios-widget/xcode/mainAppSettings.js.map +1 -0
- package/expo-plugin/build/esm/ios-widget/xcode/productFile.js +70 -0
- package/expo-plugin/build/esm/ios-widget/xcode/productFile.js.map +1 -0
- package/expo-plugin/build/esm/ios-widget/xcode/target.js +108 -0
- package/expo-plugin/build/esm/ios-widget/xcode/target.js.map +1 -0
- package/expo-plugin/build/esm/utils/fileDiscovery.js +83 -0
- package/expo-plugin/build/esm/utils/fileDiscovery.js.map +1 -0
- package/expo-plugin/build/esm/utils/urlScheme.js +37 -0
- package/expo-plugin/build/esm/utils/urlScheme.js.map +1 -0
- package/expo-plugin/build/esm/validation.js +51 -0
- package/expo-plugin/build/esm/validation.js.map +1 -0
- package/expo-plugin/build/types/constants.d.ts +13 -0
- package/expo-plugin/build/types/constants.d.ts.map +1 -0
- package/expo-plugin/build/types/index.d.ts +10 -0
- package/expo-plugin/build/types/index.d.ts.map +1 -0
- package/expo-plugin/build/types/ios/eas.d.ts +12 -0
- package/expo-plugin/build/types/ios/eas.d.ts.map +1 -0
- package/expo-plugin/build/types/ios/entitlements.d.ts +14 -0
- package/expo-plugin/build/types/ios/entitlements.d.ts.map +1 -0
- package/expo-plugin/build/types/ios/index.d.ts +19 -0
- package/expo-plugin/build/types/ios/index.d.ts.map +1 -0
- package/expo-plugin/build/types/ios/infoPlist.d.ts +21 -0
- package/expo-plugin/build/types/ios/infoPlist.d.ts.map +1 -0
- package/expo-plugin/build/types/ios/pushNotifications.d.ts +10 -0
- package/expo-plugin/build/types/ios/pushNotifications.d.ts.map +1 -0
- package/expo-plugin/build/types/ios-widget/eas.d.ts +15 -0
- package/expo-plugin/build/types/ios-widget/eas.d.ts.map +1 -0
- package/expo-plugin/build/types/ios-widget/files/assets.d.ts +13 -0
- package/expo-plugin/build/types/ios-widget/files/assets.d.ts.map +1 -0
- package/expo-plugin/build/types/ios-widget/files/entitlements.d.ts +17 -0
- package/expo-plugin/build/types/ios-widget/files/entitlements.d.ts.map +1 -0
- package/expo-plugin/build/types/ios-widget/files/index.d.ts +24 -0
- package/expo-plugin/build/types/ios-widget/files/index.d.ts.map +1 -0
- package/expo-plugin/build/types/ios-widget/files/infoPlist.d.ts +10 -0
- package/expo-plugin/build/types/ios-widget/files/infoPlist.d.ts.map +1 -0
- package/expo-plugin/build/types/ios-widget/files/swift.d.ts +24 -0
- package/expo-plugin/build/types/ios-widget/files/swift.d.ts.map +1 -0
- package/expo-plugin/build/types/ios-widget/fonts.d.ts +22 -0
- package/expo-plugin/build/types/ios-widget/fonts.d.ts.map +1 -0
- package/expo-plugin/build/types/ios-widget/index.d.ts +31 -0
- package/expo-plugin/build/types/ios-widget/index.d.ts.map +1 -0
- package/expo-plugin/build/types/ios-widget/podfile.d.ts +9 -0
- package/expo-plugin/build/types/ios-widget/podfile.d.ts.map +1 -0
- package/expo-plugin/build/types/ios-widget/widgetPlist.d.ts +20 -0
- package/expo-plugin/build/types/ios-widget/widgetPlist.d.ts.map +1 -0
- package/expo-plugin/build/types/ios-widget/xcode/buildPhases.d.ts +25 -0
- package/expo-plugin/build/types/ios-widget/xcode/buildPhases.d.ts.map +1 -0
- package/expo-plugin/build/types/ios-widget/xcode/configurationList.d.ts +20 -0
- package/expo-plugin/build/types/ios-widget/xcode/configurationList.d.ts.map +1 -0
- package/expo-plugin/build/types/ios-widget/xcode/groups.d.ts +15 -0
- package/expo-plugin/build/types/ios-widget/xcode/groups.d.ts.map +1 -0
- package/expo-plugin/build/types/ios-widget/xcode/index.d.ts +20 -0
- package/expo-plugin/build/types/ios-widget/xcode/index.d.ts.map +1 -0
- package/expo-plugin/build/types/ios-widget/xcode/mainAppSettings.d.ts +15 -0
- package/expo-plugin/build/types/ios-widget/xcode/mainAppSettings.d.ts.map +1 -0
- package/expo-plugin/build/types/ios-widget/xcode/productFile.d.ts +14 -0
- package/expo-plugin/build/types/ios-widget/xcode/productFile.d.ts.map +1 -0
- package/expo-plugin/build/types/ios-widget/xcode/target.d.ts +42 -0
- package/expo-plugin/build/types/ios-widget/xcode/target.d.ts.map +1 -0
- package/expo-plugin/build/types/types.d.ts +74 -0
- package/expo-plugin/build/types/types.d.ts.map +1 -0
- package/expo-plugin/build/types/utils/fileDiscovery.d.ts +15 -0
- package/expo-plugin/build/types/utils/fileDiscovery.d.ts.map +1 -0
- package/expo-plugin/build/types/utils/urlScheme.d.ts +10 -0
- package/expo-plugin/build/types/utils/urlScheme.d.ts.map +1 -0
- package/expo-plugin/build/types/validation.d.ts +4 -0
- package/expo-plugin/build/types/validation.d.ts.map +1 -0
- package/expo-plugin/jest.config.js +18 -0
- package/expo-plugin/src/constants.ts +25 -0
- package/expo-plugin/src/index.ts +72 -0
- package/expo-plugin/src/ios/eas.ts +33 -0
- package/expo-plugin/src/ios/entitlements.ts +59 -0
- package/expo-plugin/src/ios/index.ts +47 -0
- package/expo-plugin/src/ios/infoPlist.ts +63 -0
- package/expo-plugin/src/ios/pushNotifications.ts +22 -0
- package/expo-plugin/src/ios-widget/eas.ts +79 -0
- package/expo-plugin/src/ios-widget/files/assets.ts +201 -0
- package/expo-plugin/src/ios-widget/files/entitlements.ts +48 -0
- package/expo-plugin/src/ios-widget/files/index.ts +74 -0
- package/expo-plugin/src/ios-widget/files/infoPlist.ts +57 -0
- package/expo-plugin/src/ios-widget/files/swift.node.test.ts +22 -0
- package/expo-plugin/src/ios-widget/files/swift.ts +476 -0
- package/expo-plugin/src/ios-widget/fonts.ts +132 -0
- package/expo-plugin/src/ios-widget/index.ts +73 -0
- package/expo-plugin/src/ios-widget/podfile.ts +44 -0
- package/expo-plugin/src/ios-widget/widgetPlist.ts +115 -0
- package/expo-plugin/src/ios-widget/xcode/buildPhases.ts +301 -0
- package/expo-plugin/src/ios-widget/xcode/configurationList.ts +127 -0
- package/expo-plugin/src/ios-widget/xcode/groups.ts +101 -0
- package/expo-plugin/src/ios-widget/xcode/index.ts +149 -0
- package/expo-plugin/src/ios-widget/xcode/mainAppSettings.ts +95 -0
- package/expo-plugin/src/ios-widget/xcode/productFile.ts +91 -0
- package/expo-plugin/src/ios-widget/xcode/target.ts +148 -0
- package/expo-plugin/src/types.ts +89 -0
- package/expo-plugin/src/utils/fileDiscovery.ts +96 -0
- package/expo-plugin/src/utils/urlScheme.ts +45 -0
- package/expo-plugin/src/validation.node.test.ts +19 -0
- package/expo-plugin/src/validation.ts +63 -0
- package/expo-plugin/tsconfig.base.json +17 -0
- package/expo-plugin/tsconfig.cjs.json +9 -0
- package/expo-plugin/tsconfig.esm.json +9 -0
- package/expo-plugin/tsconfig.jest.json +8 -0
- package/expo-plugin/tsconfig.typecheck.json +12 -0
- package/expo-plugin/tsconfig.types.json +10 -0
- package/ios/Package.swift +68 -0
- package/ios/Tests/JSGradientParserTests.swift +201 -0
- package/ios/Tests/VoltraSharedTests/SmokeTests.swift +8 -0
- package/ios/VoltraWidget.podspec +30 -0
- package/ios/app/NativeVoltra.h +5 -0
- package/ios/app/NativeVoltra.mm +211 -0
- package/ios/app/VoltraActivity.swift +5 -0
- package/ios/app/VoltraImagePreload.swift +154 -0
- package/ios/app/VoltraLiveActivityManager.swift +228 -0
- package/ios/app/VoltraLiveActivityService.swift +306 -0
- package/ios/app/VoltraModule.swift +215 -0
- package/ios/app/VoltraModuleImpl.swift +331 -0
- package/ios/app/VoltraOptions.swift +27 -0
- package/ios/app/VoltraViewComponentView.h +10 -0
- package/ios/app/VoltraViewComponentView.mm +67 -0
- package/ios/app/VoltraViewRoot.swift +63 -0
- package/ios/app/VoltraWidgetService.swift +154 -0
- package/ios/shared/BrotliCompression.swift +81 -0
- package/ios/shared/ComponentTypeID.swift +117 -0
- package/ios/shared/Data+hexString.swift +8 -0
- package/ios/shared/Date+toTimerInterval.swift +25 -0
- package/ios/shared/JSONValue.swift +128 -0
- package/ios/shared/ShortNames.swift +180 -0
- package/ios/shared/VoltraAttributes.swift +58 -0
- package/ios/shared/VoltraConfig.swift +18 -0
- package/ios/shared/VoltraConstants.swift +45 -0
- package/ios/shared/VoltraElement.swift +153 -0
- package/ios/shared/VoltraEvent.swift +72 -0
- package/ios/shared/VoltraEventBus.swift +80 -0
- package/ios/shared/VoltraImageStore.swift +119 -0
- package/ios/shared/VoltraInitialStateLocale.swift +54 -0
- package/ios/shared/VoltraInteractionIntent.swift +39 -0
- package/ios/shared/VoltraKeychainHelper.swift +178 -0
- package/ios/shared/VoltraLiveActivityPayload.swift +113 -0
- package/ios/shared/VoltraLogger.swift +30 -0
- package/ios/shared/VoltraNode.swift +194 -0
- package/ios/shared/VoltraPayloadMigrator.swift +63 -0
- package/ios/shared/VoltraPersistentEventQueue.swift +67 -0
- package/ios/shared/VoltraRefreshIntent.swift +29 -0
- package/ios/shared/VoltraRegion.swift +37 -0
- package/ios/shared/VoltraWidgetDefaults.swift +114 -0
- package/ios/shared/VoltraWidgetServerFetcher.swift +166 -0
- package/ios/target/VoltraHomeWidget.swift +508 -0
- package/ios/target/VoltraWidget.swift +158 -0
- package/ios/ui/Extensions/View.modifiers.swift +28 -0
- package/ios/ui/Extensions/VoltraNode+Parameters.swift +18 -0
- package/ios/ui/Generated/Parameters/.generated +8 -0
- package/ios/ui/Generated/Parameters/ButtonParameters.swift +15 -0
- package/ios/ui/Generated/Parameters/ChartParameters.swift +33 -0
- package/ios/ui/Generated/Parameters/CircularProgressViewParameters.swift +59 -0
- package/ios/ui/Generated/Parameters/ComponentParameters.swift +12 -0
- package/ios/ui/Generated/Parameters/DividerParameters.swift +12 -0
- package/ios/ui/Generated/Parameters/GaugeParameters.swift +54 -0
- package/ios/ui/Generated/Parameters/GlassContainerParameters.swift +15 -0
- package/ios/ui/Generated/Parameters/GroupBoxParameters.swift +12 -0
- package/ios/ui/Generated/Parameters/HStackParameters.swift +34 -0
- package/ios/ui/Generated/Parameters/ImageParameters.swift +29 -0
- package/ios/ui/Generated/Parameters/LabelParameters.swift +18 -0
- package/ios/ui/Generated/Parameters/LinearGradientParameters.swift +27 -0
- package/ios/ui/Generated/Parameters/LinearProgressViewParameters.swift +64 -0
- package/ios/ui/Generated/Parameters/LinkParameters.swift +15 -0
- package/ios/ui/Generated/Parameters/MaskParameters.swift +12 -0
- package/ios/ui/Generated/Parameters/SpacerParameters.swift +15 -0
- package/ios/ui/Generated/Parameters/SymbolParameters.swift +59 -0
- package/ios/ui/Generated/Parameters/TextParameters.swift +18 -0
- package/ios/ui/Generated/Parameters/TimerParameters.swift +54 -0
- package/ios/ui/Generated/Parameters/ToggleParameters.swift +24 -0
- package/ios/ui/Generated/Parameters/VStackParameters.swift +34 -0
- package/ios/ui/Generated/Parameters/ViewParameters.swift +12 -0
- package/ios/ui/Generated/Parameters/ZStackParameters.swift +15 -0
- package/ios/ui/Helpers/VoltraDeepLinkResolver.swift +43 -0
- package/ios/ui/Helpers/VoltraProgressDriver.swift +52 -0
- package/ios/ui/Layout/FlexContainerHelper.swift +114 -0
- package/ios/ui/Layout/VoltraFlexStackLayout.swift +417 -0
- package/ios/ui/Protocols/VoltraView.swift +29 -0
- package/ios/ui/Style/BackgroundValue.swift +27 -0
- package/ios/ui/Style/CompositeStyle.swift +81 -0
- package/ios/ui/Style/DecorationStyle.swift +207 -0
- package/ios/ui/Style/FlexEnvironment.swift +35 -0
- package/ios/ui/Style/FontVariant.swift +4 -0
- package/ios/ui/Style/GlassEffect.swift +6 -0
- package/ios/ui/Style/JSColorParser.swift +517 -0
- package/ios/ui/Style/JSGradientParser.swift +674 -0
- package/ios/ui/Style/JSStyleParser.swift +223 -0
- package/ios/ui/Style/LayoutStyle.swift +184 -0
- package/ios/ui/Style/Overflow.swift +4 -0
- package/ios/ui/Style/RenderingStyle.swift +33 -0
- package/ios/ui/Style/StyleConverter.swift +202 -0
- package/ios/ui/Style/TextDecoration.swift +6 -0
- package/ios/ui/Style/TextStyle.swift +50 -0
- package/ios/ui/Style/View+applyStyle.swift +38 -0
- package/ios/ui/Views/VoltraButton.swift +57 -0
- package/ios/ui/Views/VoltraChart.swift +840 -0
- package/ios/ui/Views/VoltraCircularProgressView.swift +103 -0
- package/ios/ui/Views/VoltraDivider.swift +16 -0
- package/ios/ui/Views/VoltraFlexView.swift +33 -0
- package/ios/ui/Views/VoltraGauge.swift +65 -0
- package/ios/ui/Views/VoltraGlassContainer.swift +29 -0
- package/ios/ui/Views/VoltraGroupBox.swift +26 -0
- package/ios/ui/Views/VoltraHStack.swift +70 -0
- package/ios/ui/Views/VoltraImage.swift +109 -0
- package/ios/ui/Views/VoltraLabel.swift +24 -0
- package/ios/ui/Views/VoltraLinearGradient.swift +115 -0
- package/ios/ui/Views/VoltraLinearProgressView.swift +118 -0
- package/ios/ui/Views/VoltraLink.swift +25 -0
- package/ios/ui/Views/VoltraMask.swift +23 -0
- package/ios/ui/Views/VoltraSpacer.swift +16 -0
- package/ios/ui/Views/VoltraSymbol.swift +160 -0
- package/ios/ui/Views/VoltraText.swift +87 -0
- package/ios/ui/Views/VoltraTimer.swift +131 -0
- package/ios/ui/Views/VoltraToggle.swift +39 -0
- package/ios/ui/Views/VoltraVStack.swift +68 -0
- package/ios/ui/Views/VoltraZStack.swift +33 -0
- package/ios/ui/Voltra.swift +86 -0
- package/package.json +91 -18
- package/build/cjs/VoltraModule.js +0 -6
- package/build/cjs/VoltraModule.js.map +0 -1
- package/build/cjs/components/VoltraLiveActivityPreview.js +0 -20
- package/build/cjs/components/VoltraLiveActivityPreview.js.map +0 -1
- package/build/cjs/components/VoltraView.js +0 -37
- package/build/cjs/components/VoltraView.js.map +0 -1
- package/build/cjs/components/VoltraWidgetPreview.js +0 -26
- package/build/cjs/components/VoltraWidgetPreview.js.map +0 -1
- package/build/cjs/events.js +0 -19
- package/build/cjs/events.js.map +0 -1
- package/build/cjs/helpers.js +0 -30
- package/build/cjs/helpers.js.map +0 -1
- package/build/cjs/index.js +0 -49
- package/build/cjs/index.js.map +0 -1
- package/build/cjs/live-activity/api.js +0 -158
- package/build/cjs/live-activity/api.js.map +0 -1
- package/build/cjs/logger.js +0 -36
- package/build/cjs/logger.js.map +0 -1
- package/build/cjs/preload.js +0 -54
- package/build/cjs/preload.js.map +0 -1
- package/build/cjs/utils/assertRunningOnApple.js +0 -13
- package/build/cjs/utils/assertRunningOnApple.js.map +0 -1
- package/build/cjs/utils/helpers.js +0 -7
- package/build/cjs/utils/helpers.js.map +0 -1
- package/build/cjs/utils/index.js +0 -19
- package/build/cjs/utils/index.js.map +0 -1
- package/build/cjs/utils/useUpdateOnHMR.js +0 -22
- package/build/cjs/utils/useUpdateOnHMR.js.map +0 -1
- package/build/cjs/widgets/server-credentials.js +0 -18
- package/build/cjs/widgets/server-credentials.js.map +0 -1
- package/build/cjs/widgets/widget-api.js +0 -59
- package/build/cjs/widgets/widget-api.js.map +0 -1
- package/build/esm/VoltraModule.js +0 -4
- package/build/esm/VoltraModule.js.map +0 -1
- package/build/esm/components/VoltraLiveActivityPreview.js +0 -17
- package/build/esm/components/VoltraLiveActivityPreview.js.map +0 -1
- package/build/esm/components/VoltraView.js +0 -34
- package/build/esm/components/VoltraView.js.map +0 -1
- package/build/esm/components/VoltraWidgetPreview.js +0 -23
- package/build/esm/components/VoltraWidgetPreview.js.map +0 -1
- package/build/esm/events.js +0 -13
- package/build/esm/events.js.map +0 -1
- package/build/esm/helpers.js +0 -23
- package/build/esm/helpers.js.map +0 -1
- package/build/esm/index.js +0 -10
- package/build/esm/index.js.map +0 -1
- package/build/esm/live-activity/api.js +0 -146
- package/build/esm/live-activity/api.js.map +0 -1
- package/build/esm/logger.js +0 -33
- package/build/esm/logger.js.map +0 -1
- package/build/esm/preload.js +0 -46
- package/build/esm/preload.js.map +0 -1
- package/build/esm/utils/assertRunningOnApple.js +0 -9
- package/build/esm/utils/assertRunningOnApple.js.map +0 -1
- package/build/esm/utils/helpers.js.map +0 -1
- package/build/esm/utils/index.js.map +0 -1
- package/build/esm/utils/useUpdateOnHMR.js +0 -18
- package/build/esm/utils/useUpdateOnHMR.js.map +0 -1
- package/build/esm/widgets/server-credentials.js +0 -11
- package/build/esm/widgets/server-credentials.js.map +0 -1
- package/build/esm/widgets/widget-api.js +0 -47
- package/build/esm/widgets/widget-api.js.map +0 -1
- package/build/types/VoltraModule.d.ts +0 -44
- package/build/types/VoltraModule.d.ts.map +0 -1
- package/build/types/components/VoltraLiveActivityPreview.d.ts.map +0 -1
- package/build/types/components/VoltraView.d.ts.map +0 -1
- package/build/types/components/VoltraWidgetPreview.d.ts.map +0 -1
- package/build/types/events.d.ts.map +0 -1
- package/build/types/helpers.d.ts.map +0 -1
- package/build/types/index.d.ts.map +0 -1
- package/build/types/live-activity/api.d.ts.map +0 -1
- package/build/types/logger.d.ts.map +0 -1
- package/build/types/preload.d.ts.map +0 -1
- package/build/types/types.d.ts.map +0 -1
- package/build/types/utils/assertRunningOnApple.d.ts.map +0 -1
- package/build/types/utils/helpers.d.ts.map +0 -1
- package/build/types/utils/index.d.ts.map +0 -1
- package/build/types/utils/useUpdateOnHMR.d.ts.map +0 -1
- package/build/types/widgets/server-credentials.d.ts.map +0 -1
- package/build/types/widgets/widget-api.d.ts.map +0 -1
- /package/build/{types → typescript/commonjs}/components/VoltraLiveActivityPreview.d.ts +0 -0
- /package/build/{types → typescript/commonjs}/components/VoltraView.d.ts +0 -0
- /package/build/{types → typescript/commonjs}/components/VoltraWidgetPreview.d.ts +0 -0
- /package/build/{types → typescript/commonjs}/events.d.ts +0 -0
- /package/build/{types → typescript/commonjs}/helpers.d.ts +0 -0
- /package/build/{types → typescript/commonjs}/live-activity/api.d.ts +0 -0
- /package/build/{types → typescript/commonjs}/logger.d.ts +0 -0
- /package/build/{types → typescript/commonjs}/preload.d.ts +0 -0
- /package/build/{types → typescript/commonjs}/types.d.ts +0 -0
- /package/build/{types → typescript/commonjs}/utils/assertRunningOnApple.d.ts +0 -0
- /package/build/{types → typescript/commonjs}/utils/helpers.d.ts +0 -0
- /package/build/{types → typescript/commonjs}/utils/index.d.ts +0 -0
- /package/build/{types → typescript/commonjs}/utils/useUpdateOnHMR.d.ts +0 -0
- /package/build/{types → typescript/commonjs}/widgets/server-credentials.d.ts +0 -0
- /package/build/{types → typescript/commonjs}/widgets/widget-api.d.ts +0 -0
- /package/{build → expo-plugin/build}/cjs/package.json +0 -0
- /package/{build → expo-plugin/build}/cjs/types.js +0 -0
- /package/{build → expo-plugin/build}/cjs/types.js.map +0 -0
- /package/{build → expo-plugin/build}/esm/package.json +0 -0
- /package/{build → expo-plugin/build}/esm/types.js +0 -0
- /package/{build → expo-plugin/build}/esm/types.js.map +0 -0
|
@@ -0,0 +1,92 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
+
}) : function(o, v) {
|
|
16
|
+
o["default"] = v;
|
|
17
|
+
});
|
|
18
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
19
|
+
var ownKeys = function(o) {
|
|
20
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
21
|
+
var ar = [];
|
|
22
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
23
|
+
return ar;
|
|
24
|
+
};
|
|
25
|
+
return ownKeys(o);
|
|
26
|
+
};
|
|
27
|
+
return function (mod) {
|
|
28
|
+
if (mod && mod.__esModule) return mod;
|
|
29
|
+
var result = {};
|
|
30
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
31
|
+
__setModuleDefault(result, mod);
|
|
32
|
+
return result;
|
|
33
|
+
};
|
|
34
|
+
})();
|
|
35
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
36
|
+
exports.generateWidgetExtensionFiles = void 0;
|
|
37
|
+
const config_plugins_1 = require("@expo/config-plugins");
|
|
38
|
+
const fs = __importStar(require("fs"));
|
|
39
|
+
const path = __importStar(require("path"));
|
|
40
|
+
const assets_1 = require("./assets");
|
|
41
|
+
const entitlements_1 = require("./entitlements");
|
|
42
|
+
const infoPlist_1 = require("./infoPlist");
|
|
43
|
+
const swift_1 = require("./swift");
|
|
44
|
+
/**
|
|
45
|
+
* Plugin step that generates all widget extension files.
|
|
46
|
+
*
|
|
47
|
+
* This creates:
|
|
48
|
+
* - Info.plist (required extension manifest)
|
|
49
|
+
* - Assets.xcassets/ (asset catalog with user images)
|
|
50
|
+
* - VoltraWidgetBundle.swift (widget bundle definition)
|
|
51
|
+
* - VoltraWidgetInitialStates.swift (pre-rendered widget states)
|
|
52
|
+
* - {targetName}.entitlements (entitlements file)
|
|
53
|
+
*
|
|
54
|
+
* This should run before configureXcodeProject so the files exist when Xcode project is configured.
|
|
55
|
+
*/
|
|
56
|
+
const generateWidgetExtensionFiles = (config, props) => {
|
|
57
|
+
const { targetName, widgets, groupIdentifier, keychainGroup, version, buildNumber } = props;
|
|
58
|
+
return (0, config_plugins_1.withDangerousMod)(config, [
|
|
59
|
+
'ios',
|
|
60
|
+
async (config) => {
|
|
61
|
+
if (config.modRequest.introspect) {
|
|
62
|
+
return config;
|
|
63
|
+
}
|
|
64
|
+
const { platformProjectRoot, projectRoot } = config.modRequest;
|
|
65
|
+
const targetPath = path.join(platformProjectRoot, targetName);
|
|
66
|
+
// Ensure target directory exists
|
|
67
|
+
if (!fs.existsSync(targetPath)) {
|
|
68
|
+
fs.mkdirSync(targetPath, { recursive: true });
|
|
69
|
+
}
|
|
70
|
+
// Generate Info.plist
|
|
71
|
+
(0, infoPlist_1.generateInfoPlist)(targetPath, targetName, version, buildNumber);
|
|
72
|
+
// Generate Assets.xcassets and copy user images
|
|
73
|
+
(0, assets_1.generateAssets)({ targetPath });
|
|
74
|
+
// Generate Swift files (widget bundle, initial states)
|
|
75
|
+
await (0, swift_1.generateSwiftFiles)({
|
|
76
|
+
targetPath,
|
|
77
|
+
projectRoot,
|
|
78
|
+
widgets,
|
|
79
|
+
});
|
|
80
|
+
// Generate entitlements file (may be empty if no groupIdentifier or keychainGroup)
|
|
81
|
+
(0, entitlements_1.generateEntitlements)({
|
|
82
|
+
targetPath,
|
|
83
|
+
targetName,
|
|
84
|
+
groupIdentifier,
|
|
85
|
+
keychainGroup,
|
|
86
|
+
});
|
|
87
|
+
return config;
|
|
88
|
+
},
|
|
89
|
+
]);
|
|
90
|
+
};
|
|
91
|
+
exports.generateWidgetExtensionFiles = generateWidgetExtensionFiles;
|
|
92
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +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,mCAA4C;AAW5C;;;;;;;;;;;GAWG;AACI,MAAM,4BAA4B,GAAoD,CAAC,MAAM,EAAE,KAAK,EAAE,EAAE;IAC7G,MAAM,EAAE,UAAU,EAAE,OAAO,EAAE,eAAe,EAAE,aAAa,EAAE,OAAO,EAAE,WAAW,EAAE,GAAG,KAAK,CAAA;IAE3F,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,CAAC,CAAA;YAE/D,gDAAgD;YAChD,IAAA,uBAAc,EAAC,EAAE,UAAU,EAAE,CAAC,CAAA;YAE9B,uDAAuD;YACvD,MAAM,IAAA,0BAAkB,EAAC;gBACvB,UAAU;gBACV,WAAW;gBACX,OAAO;aACR,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;AA1CY,QAAA,4BAA4B,gCA0CxC"}
|
|
@@ -0,0 +1,91 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
+
}) : function(o, v) {
|
|
16
|
+
o["default"] = v;
|
|
17
|
+
});
|
|
18
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
19
|
+
var ownKeys = function(o) {
|
|
20
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
21
|
+
var ar = [];
|
|
22
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
23
|
+
return ar;
|
|
24
|
+
};
|
|
25
|
+
return ownKeys(o);
|
|
26
|
+
};
|
|
27
|
+
return function (mod) {
|
|
28
|
+
if (mod && mod.__esModule) return mod;
|
|
29
|
+
var result = {};
|
|
30
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
31
|
+
__setModuleDefault(result, mod);
|
|
32
|
+
return result;
|
|
33
|
+
};
|
|
34
|
+
})();
|
|
35
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
36
|
+
exports.generateInfoPlist = generateInfoPlist;
|
|
37
|
+
const fs = __importStar(require("fs"));
|
|
38
|
+
const path = __importStar(require("path"));
|
|
39
|
+
const expo_plugin_1 = require("@use-voltra/expo-plugin");
|
|
40
|
+
/**
|
|
41
|
+
* Generates the Info.plist content for a WidgetKit extension.
|
|
42
|
+
*
|
|
43
|
+
* This includes version information and the required WidgetKit extension point.
|
|
44
|
+
* Version keys are written directly to the plist following the Expo pattern.
|
|
45
|
+
*/
|
|
46
|
+
function generateInfoPlistContent(targetName, version, buildNumber) {
|
|
47
|
+
return `<?xml version="1.0" encoding="UTF-8"?>
|
|
48
|
+
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
|
|
49
|
+
<plist version="1.0">
|
|
50
|
+
<dict>
|
|
51
|
+
<key>CFBundleDevelopmentRegion</key>
|
|
52
|
+
<string>$(DEVELOPMENT_LANGUAGE)</string>
|
|
53
|
+
<key>CFBundleDisplayName</key>
|
|
54
|
+
<string>${targetName}</string>
|
|
55
|
+
<key>CFBundleExecutable</key>
|
|
56
|
+
<string>$(EXECUTABLE_NAME)</string>
|
|
57
|
+
<key>CFBundleIdentifier</key>
|
|
58
|
+
<string>$(PRODUCT_BUNDLE_IDENTIFIER)</string>
|
|
59
|
+
<key>CFBundleInfoDictionaryVersion</key>
|
|
60
|
+
<string>6.0</string>
|
|
61
|
+
<key>CFBundleName</key>
|
|
62
|
+
<string>$(PRODUCT_NAME)</string>
|
|
63
|
+
<key>CFBundlePackageType</key>
|
|
64
|
+
<string>$(PRODUCT_BUNDLE_PACKAGE_TYPE)</string>
|
|
65
|
+
<key>CFBundleShortVersionString</key>
|
|
66
|
+
<string>${version}</string>
|
|
67
|
+
<key>CFBundleVersion</key>
|
|
68
|
+
<string>${buildNumber}</string>
|
|
69
|
+
<key>NSExtension</key>
|
|
70
|
+
<dict>
|
|
71
|
+
<key>NSExtensionPointIdentifier</key>
|
|
72
|
+
<string>com.apple.widgetkit-extension</string>
|
|
73
|
+
</dict>
|
|
74
|
+
</dict>
|
|
75
|
+
</plist>
|
|
76
|
+
`;
|
|
77
|
+
}
|
|
78
|
+
/**
|
|
79
|
+
* Generates the Info.plist file for the widget extension.
|
|
80
|
+
*
|
|
81
|
+
* @param targetPath - Path to the widget extension target directory
|
|
82
|
+
* @param targetName - The widget extension target name (used for CFBundleDisplayName)
|
|
83
|
+
* @param version - The app version (CFBundleShortVersionString)
|
|
84
|
+
* @param buildNumber - The build number (CFBundleVersion)
|
|
85
|
+
*/
|
|
86
|
+
function generateInfoPlist(targetPath, targetName, version, buildNumber) {
|
|
87
|
+
const infoPlistPath = path.join(targetPath, 'Info.plist');
|
|
88
|
+
fs.writeFileSync(infoPlistPath, generateInfoPlistContent(targetName, version, buildNumber));
|
|
89
|
+
expo_plugin_1.logger.info('Generated Info.plist');
|
|
90
|
+
}
|
|
91
|
+
//# sourceMappingURL=infoPlist.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"infoPlist.js","sourceRoot":"","sources":["../../../../src/ios-widget/files/infoPlist.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAoDA,8CAIC;AAxDD,uCAAwB;AACxB,2CAA4B;AAE5B,yDAAgD;AAEhD;;;;;GAKG;AACH,SAAS,wBAAwB,CAAC,UAAkB,EAAE,OAAe,EAAE,WAAmB;IACxF,OAAO;;;;;;;WAOE,UAAU;;;;;;;;;;;;WAYV,OAAO;;WAEP,WAAW;;;;;;;;CAQrB,CAAA;AACD,CAAC;AAED;;;;;;;GAOG;AACH,SAAgB,iBAAiB,CAAC,UAAkB,EAAE,UAAkB,EAAE,OAAe,EAAE,WAAmB;IAC5G,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,CAAC,CAAC,CAAA;IAC3F,oBAAM,CAAC,IAAI,CAAC,sBAAsB,CAAC,CAAA;AACrC,CAAC"}
|
|
@@ -0,0 +1,443 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
+
}) : function(o, v) {
|
|
16
|
+
o["default"] = v;
|
|
17
|
+
});
|
|
18
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
19
|
+
var ownKeys = function(o) {
|
|
20
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
21
|
+
var ar = [];
|
|
22
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
23
|
+
return ar;
|
|
24
|
+
};
|
|
25
|
+
return ownKeys(o);
|
|
26
|
+
};
|
|
27
|
+
return function (mod) {
|
|
28
|
+
if (mod && mod.__esModule) return mod;
|
|
29
|
+
var result = {};
|
|
30
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
31
|
+
__setModuleDefault(result, mod);
|
|
32
|
+
return result;
|
|
33
|
+
};
|
|
34
|
+
})();
|
|
35
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
36
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
37
|
+
};
|
|
38
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
39
|
+
exports.__test__ = void 0;
|
|
40
|
+
exports.generateSwiftFiles = generateSwiftFiles;
|
|
41
|
+
const dedent_1 = __importDefault(require("dedent"));
|
|
42
|
+
const fs = __importStar(require("fs"));
|
|
43
|
+
const path = __importStar(require("path"));
|
|
44
|
+
const expo_plugin_1 = require("@use-voltra/expo-plugin");
|
|
45
|
+
const constants_1 = require("../../constants");
|
|
46
|
+
const fileDiscovery_1 = require("../../utils/fileDiscovery");
|
|
47
|
+
// ============================================================================
|
|
48
|
+
// Main Function
|
|
49
|
+
// ============================================================================
|
|
50
|
+
/**
|
|
51
|
+
* Generates all Swift files for the widget extension.
|
|
52
|
+
*
|
|
53
|
+
* This creates:
|
|
54
|
+
* - VoltraWidgetInitialStates.swift (pre-rendered widget states)
|
|
55
|
+
* - VoltraWidgetBundle.swift (widget bundle definition)
|
|
56
|
+
*/
|
|
57
|
+
async function generateSwiftFiles(options) {
|
|
58
|
+
const { targetPath, projectRoot, widgets } = options;
|
|
59
|
+
// Dynamic import keeps the plugin CommonJS-compatible while resolving the current package entry.
|
|
60
|
+
const serverModuleId = '@use-voltra/ios/server';
|
|
61
|
+
const { renderWidgetToString } = (await Promise.resolve(`${serverModuleId}`).then(s => __importStar(require(s))));
|
|
62
|
+
// Prerender widget initial states if any widgets have initialStatePath configured
|
|
63
|
+
const prerenderedStates = await (0, expo_plugin_1.prerenderWidgetState)(widgets || [], projectRoot, renderWidgetToString);
|
|
64
|
+
syncVoltraWidgetGalleryStrings(targetPath, widgets);
|
|
65
|
+
// Generate the initial states Swift file
|
|
66
|
+
const initialStatesContent = generateInitialStatesSwift(prerenderedStates);
|
|
67
|
+
const initialStatesPath = path.join(targetPath, 'VoltraWidgetInitialStates.swift');
|
|
68
|
+
fs.writeFileSync(initialStatesPath, initialStatesContent);
|
|
69
|
+
expo_plugin_1.logger.info(`Generated VoltraWidgetInitialStates.swift with ${prerenderedStates.size} widget(s) (localized initial states where configured)`);
|
|
70
|
+
// Generate the widget bundle Swift file
|
|
71
|
+
const widgetBundleContent = widgets && widgets.length > 0 ? generateWidgetBundleSwift(widgets) : generateDefaultWidgetBundleSwift();
|
|
72
|
+
const widgetBundlePath = path.join(targetPath, 'VoltraWidgetBundle.swift');
|
|
73
|
+
fs.writeFileSync(widgetBundlePath, widgetBundleContent);
|
|
74
|
+
expo_plugin_1.logger.info(`Generated VoltraWidgetBundle.swift with ${widgets?.length ?? 0} home screen widgets`);
|
|
75
|
+
}
|
|
76
|
+
const GENERATED_INITIAL_STATE_LOCALE_HELPER = (0, dedent_1.default) `
|
|
77
|
+
private enum VoltraGeneratedInitialStateLocale {
|
|
78
|
+
static func pickJson(from perLocale: [String: String], preferredLanguages: [String]) -> String? {
|
|
79
|
+
let entries = perLocale.filter { !$0.value.isEmpty }
|
|
80
|
+
if entries.isEmpty {
|
|
81
|
+
return nil
|
|
82
|
+
}
|
|
83
|
+
|
|
84
|
+
func normalize(_ tag: String) -> String {
|
|
85
|
+
tag.trimmingCharacters(in: .whitespacesAndNewlines)
|
|
86
|
+
.lowercased()
|
|
87
|
+
.replacingOccurrences(of: "_", with: "-")
|
|
88
|
+
}
|
|
89
|
+
|
|
90
|
+
var byNorm: [String: String] = [:]
|
|
91
|
+
for (k, v) in entries {
|
|
92
|
+
byNorm[normalize(k)] = v
|
|
93
|
+
}
|
|
94
|
+
|
|
95
|
+
for pref in preferredLanguages {
|
|
96
|
+
let n = normalize(pref)
|
|
97
|
+
if let direct = byNorm[n] {
|
|
98
|
+
return direct
|
|
99
|
+
}
|
|
100
|
+
let lang = n.split(separator: "-").first.map(String.init) ?? n
|
|
101
|
+
for (key, val) in entries {
|
|
102
|
+
let kn = normalize(key)
|
|
103
|
+
let keyLang = kn.split(separator: "-").first.map(String.init) ?? kn
|
|
104
|
+
if keyLang == lang {
|
|
105
|
+
return val
|
|
106
|
+
}
|
|
107
|
+
}
|
|
108
|
+
}
|
|
109
|
+
|
|
110
|
+
if let en = byNorm["en"] {
|
|
111
|
+
return en
|
|
112
|
+
}
|
|
113
|
+
if let englishFamily = entries.keys.sorted().first(where: {
|
|
114
|
+
let normalized = normalize($0)
|
|
115
|
+
return normalized == "en" || normalized.hasPrefix("en-")
|
|
116
|
+
}) {
|
|
117
|
+
return entries[englishFamily]
|
|
118
|
+
}
|
|
119
|
+
if let def = byNorm["__default"] {
|
|
120
|
+
return def
|
|
121
|
+
}
|
|
122
|
+
|
|
123
|
+
let sorted = entries.keys.sorted()
|
|
124
|
+
guard let firstKey = sorted.first else {
|
|
125
|
+
return nil
|
|
126
|
+
}
|
|
127
|
+
return entries[firstKey]
|
|
128
|
+
}
|
|
129
|
+
|
|
130
|
+
static func preferredLanguageTags() -> [String] {
|
|
131
|
+
Locale.preferredLanguages
|
|
132
|
+
}
|
|
133
|
+
}
|
|
134
|
+
`;
|
|
135
|
+
// ============================================================================
|
|
136
|
+
// Widget gallery localization: *.lproj/VoltraWidgets.strings + LocalizedStringResource
|
|
137
|
+
//
|
|
138
|
+
// We use classic .strings tables (not .xcstrings): the `xcode` npm library assigns
|
|
139
|
+
// unknown lastKnownFileType to .xcstrings, so Xcode may not treat them as string tables
|
|
140
|
+
// and lookups fall back to English defaultValue.
|
|
141
|
+
//
|
|
142
|
+
// LocalizedStringResource is still appropriate for extensions (deferred resolution).
|
|
143
|
+
// https://developer.apple.com/documentation/foundation/localizedstringresource
|
|
144
|
+
// ============================================================================
|
|
145
|
+
function escapeForSwiftStringLiteral(s) {
|
|
146
|
+
return s.replace(/\\/g, '\\\\').replace(/"/g, '\\"').replace(/\n/g, '\\n').replace(/\r/g, '\\r');
|
|
147
|
+
}
|
|
148
|
+
function escapeDotStringsValue(s) {
|
|
149
|
+
return escapeForSwiftStringLiteral(s);
|
|
150
|
+
}
|
|
151
|
+
function collectGalleryStringsByLocale(widgets) {
|
|
152
|
+
const byLocale = new Map();
|
|
153
|
+
const add = (locale, key, value) => {
|
|
154
|
+
let bucket = byLocale.get(locale);
|
|
155
|
+
if (!bucket) {
|
|
156
|
+
bucket = {};
|
|
157
|
+
byLocale.set(locale, bucket);
|
|
158
|
+
}
|
|
159
|
+
bucket[key] = value;
|
|
160
|
+
};
|
|
161
|
+
for (const w of widgets) {
|
|
162
|
+
if ((0, expo_plugin_1.isWidgetLocalizedMap)(w.displayName)) {
|
|
163
|
+
const key = `voltra_widget_${w.id}_displayName`;
|
|
164
|
+
for (const [locale, val] of Object.entries(w.displayName)) {
|
|
165
|
+
if (typeof val === 'string' && val.trim()) {
|
|
166
|
+
add(locale, key, val);
|
|
167
|
+
}
|
|
168
|
+
}
|
|
169
|
+
}
|
|
170
|
+
if ((0, expo_plugin_1.isWidgetLocalizedMap)(w.description)) {
|
|
171
|
+
const key = `voltra_widget_${w.id}_description`;
|
|
172
|
+
for (const [locale, val] of Object.entries(w.description)) {
|
|
173
|
+
if (typeof val === 'string' && val.trim()) {
|
|
174
|
+
add(locale, key, val);
|
|
175
|
+
}
|
|
176
|
+
}
|
|
177
|
+
}
|
|
178
|
+
}
|
|
179
|
+
return byLocale;
|
|
180
|
+
}
|
|
181
|
+
function formatVoltraWidgetsStringsFile(entries) {
|
|
182
|
+
const sortedKeys = Object.keys(entries).sort();
|
|
183
|
+
const lines = sortedKeys.map((k) => `"${k}" = "${escapeDotStringsValue(entries[k])}";`);
|
|
184
|
+
return `/* Voltra widget gallery strings (auto-generated) */\n${lines.join('\n')}\n`;
|
|
185
|
+
}
|
|
186
|
+
/** Remove generated gallery strings and obsolete string catalog before rewriting. */
|
|
187
|
+
function clearVoltraWidgetGalleryStringArtifacts(targetPath) {
|
|
188
|
+
const catalogPath = path.join(targetPath, 'VoltraWidgets.xcstrings');
|
|
189
|
+
if (fs.existsSync(catalogPath)) {
|
|
190
|
+
fs.unlinkSync(catalogPath);
|
|
191
|
+
}
|
|
192
|
+
if (!fs.existsSync(targetPath)) {
|
|
193
|
+
return;
|
|
194
|
+
}
|
|
195
|
+
for (const entry of fs.readdirSync(targetPath)) {
|
|
196
|
+
if (!entry.endsWith('.lproj')) {
|
|
197
|
+
continue;
|
|
198
|
+
}
|
|
199
|
+
const stringsPath = path.join(targetPath, entry, fileDiscovery_1.VOLTRA_WIDGET_STRINGS_BASENAME);
|
|
200
|
+
if (fs.existsSync(stringsPath)) {
|
|
201
|
+
fs.unlinkSync(stringsPath);
|
|
202
|
+
}
|
|
203
|
+
const dirPath = path.join(targetPath, entry);
|
|
204
|
+
try {
|
|
205
|
+
if (fs.existsSync(dirPath) && fs.readdirSync(dirPath).length === 0) {
|
|
206
|
+
fs.rmdirSync(dirPath);
|
|
207
|
+
}
|
|
208
|
+
}
|
|
209
|
+
catch {
|
|
210
|
+
/* ignore */
|
|
211
|
+
}
|
|
212
|
+
}
|
|
213
|
+
}
|
|
214
|
+
/**
|
|
215
|
+
* Writes `<locale>.lproj/VoltraWidgets.strings` for locale-map gallery labels.
|
|
216
|
+
*/
|
|
217
|
+
function syncVoltraWidgetGalleryStrings(targetPath, widgets) {
|
|
218
|
+
const list = widgets ?? [];
|
|
219
|
+
clearVoltraWidgetGalleryStringArtifacts(targetPath);
|
|
220
|
+
if (list.length === 0) {
|
|
221
|
+
return;
|
|
222
|
+
}
|
|
223
|
+
const byLocale = collectGalleryStringsByLocale(list);
|
|
224
|
+
if (byLocale.size === 0) {
|
|
225
|
+
return;
|
|
226
|
+
}
|
|
227
|
+
for (const [locale, kv] of byLocale) {
|
|
228
|
+
const lproj = path.join(targetPath, `${locale}.lproj`);
|
|
229
|
+
fs.mkdirSync(lproj, { recursive: true });
|
|
230
|
+
fs.writeFileSync(path.join(lproj, fileDiscovery_1.VOLTRA_WIDGET_STRINGS_BASENAME), formatVoltraWidgetsStringsFile(kv), 'utf8');
|
|
231
|
+
}
|
|
232
|
+
}
|
|
233
|
+
function widgetUsesGalleryLocalization(widget) {
|
|
234
|
+
return (0, expo_plugin_1.isWidgetLocalizedMap)(widget.displayName) || (0, expo_plugin_1.isWidgetLocalizedMap)(widget.description);
|
|
235
|
+
}
|
|
236
|
+
/**
|
|
237
|
+
* Widget gallery title / description: deferred lookup via LocalizedStringResource when using a locale map
|
|
238
|
+
* (recommended for extensions); plain Text for single-string config.
|
|
239
|
+
*/
|
|
240
|
+
function iosWidgetGalleryLabelSwiftExpr(widgetId, field, label) {
|
|
241
|
+
if (!(0, expo_plugin_1.isWidgetLocalizedMap)(label)) {
|
|
242
|
+
return `Text("${escapeForSwiftStringLiteral(label)}")`;
|
|
243
|
+
}
|
|
244
|
+
const key = `voltra_widget_${widgetId}_${field}`;
|
|
245
|
+
const defaultEnglish = escapeForSwiftStringLiteral((0, expo_plugin_1.widgetLabelEnglish)(label));
|
|
246
|
+
return `Text(LocalizedStringResource("${key}", defaultValue: String.LocalizationValue("${defaultEnglish}"), table: "VoltraWidgets"))`;
|
|
247
|
+
}
|
|
248
|
+
/**
|
|
249
|
+
* Generates Swift code for a single widget struct
|
|
250
|
+
*/
|
|
251
|
+
function generateWidgetStruct(widget) {
|
|
252
|
+
const families = widget.supportedFamilies ?? constants_1.DEFAULT_WIDGET_FAMILIES;
|
|
253
|
+
const familiesSwift = families.map((f) => constants_1.WIDGET_FAMILY_MAP[f]).join(', ');
|
|
254
|
+
// Sanitize the widget id for use as a Swift identifier
|
|
255
|
+
const structName = `VoltraWidget_${widget.id}`;
|
|
256
|
+
const displayNameExpr = iosWidgetGalleryLabelSwiftExpr(widget.id, 'displayName', widget.displayName);
|
|
257
|
+
const descriptionExpr = iosWidgetGalleryLabelSwiftExpr(widget.id, 'description', widget.description);
|
|
258
|
+
return (0, dedent_1.default) `
|
|
259
|
+
public struct ${structName}: Widget {
|
|
260
|
+
private let widgetId = "${widget.id}"
|
|
261
|
+
|
|
262
|
+
public init() {}
|
|
263
|
+
|
|
264
|
+
public var body: some WidgetConfiguration {
|
|
265
|
+
StaticConfiguration(
|
|
266
|
+
kind: "Voltra_Widget_${widget.id}",
|
|
267
|
+
provider: VoltraHomeWidgetProvider(
|
|
268
|
+
widgetId: widgetId,
|
|
269
|
+
initialState: VoltraWidgetInitialStates.getInitialState(for: widgetId)
|
|
270
|
+
)
|
|
271
|
+
) { entry in
|
|
272
|
+
VoltraHomeWidgetView(entry: entry)
|
|
273
|
+
}
|
|
274
|
+
.configurationDisplayName(${displayNameExpr})
|
|
275
|
+
.description(${descriptionExpr})
|
|
276
|
+
.supportedFamilies([${familiesSwift}])
|
|
277
|
+
.contentMarginsDisabled()
|
|
278
|
+
}
|
|
279
|
+
}
|
|
280
|
+
`;
|
|
281
|
+
}
|
|
282
|
+
/**
|
|
283
|
+
* Generates the VoltraWidgetBundle.swift file content with configured widgets
|
|
284
|
+
*/
|
|
285
|
+
function generateWidgetBundleSwift(widgets) {
|
|
286
|
+
// Generate widget structs
|
|
287
|
+
const widgetStructs = widgets.map(generateWidgetStruct).join('\n\n');
|
|
288
|
+
// Generate widget bundle body entries
|
|
289
|
+
const widgetInstances = widgets.map((w) => `VoltraWidget_${w.id}()`).join('\n ');
|
|
290
|
+
const needsFoundation = widgets.some(widgetUsesGalleryLocalization);
|
|
291
|
+
const foundationImport = needsFoundation ? 'import Foundation\n' : '';
|
|
292
|
+
return (0, dedent_1.default) `
|
|
293
|
+
//
|
|
294
|
+
// VoltraWidgetBundle.swift
|
|
295
|
+
//
|
|
296
|
+
// Auto-generated by Voltra config plugin.
|
|
297
|
+
// This file defines which Voltra widgets are available in your app.
|
|
298
|
+
//
|
|
299
|
+
|
|
300
|
+
${foundationImport}import SwiftUI
|
|
301
|
+
import WidgetKit
|
|
302
|
+
import VoltraWidget
|
|
303
|
+
|
|
304
|
+
@main
|
|
305
|
+
struct VoltraWidgetBundle: WidgetBundle {
|
|
306
|
+
var body: some Widget {
|
|
307
|
+
// Live Activity (with Watch/CarPlay support)
|
|
308
|
+
VoltraWidget()
|
|
309
|
+
|
|
310
|
+
// Home Screen Widgets
|
|
311
|
+
${widgetInstances}
|
|
312
|
+
}
|
|
313
|
+
}
|
|
314
|
+
|
|
315
|
+
// MARK: - Home Screen Widget Definitions
|
|
316
|
+
|
|
317
|
+
${widgetStructs}
|
|
318
|
+
`;
|
|
319
|
+
}
|
|
320
|
+
/**
|
|
321
|
+
* Generates the VoltraWidgetBundle.swift file content when no widgets are configured
|
|
322
|
+
* (only Live Activities)
|
|
323
|
+
*/
|
|
324
|
+
function generateDefaultWidgetBundleSwift() {
|
|
325
|
+
return (0, dedent_1.default) `
|
|
326
|
+
//
|
|
327
|
+
// VoltraWidgetBundle.swift
|
|
328
|
+
//
|
|
329
|
+
// This file defines which Voltra widgets are available in your app.
|
|
330
|
+
// You can customize which widgets to include by adding or removing them below.
|
|
331
|
+
//
|
|
332
|
+
|
|
333
|
+
import SwiftUI
|
|
334
|
+
import WidgetKit
|
|
335
|
+
import VoltraWidget // Import Voltra widgets
|
|
336
|
+
|
|
337
|
+
@main
|
|
338
|
+
struct VoltraWidgetBundle: WidgetBundle {
|
|
339
|
+
var body: some Widget {
|
|
340
|
+
// Live Activity (with Watch/CarPlay support)
|
|
341
|
+
VoltraWidget()
|
|
342
|
+
}
|
|
343
|
+
}
|
|
344
|
+
`;
|
|
345
|
+
}
|
|
346
|
+
// ============================================================================
|
|
347
|
+
// Initial States
|
|
348
|
+
// ============================================================================
|
|
349
|
+
/**
|
|
350
|
+
* Generates Swift code that bundles pre-rendered widget initial states (per locale when configured).
|
|
351
|
+
*/
|
|
352
|
+
function generateInitialStatesSwift(prerenderedStates) {
|
|
353
|
+
if (prerenderedStates.size === 0) {
|
|
354
|
+
return generateEmptyInitialStatesSwift();
|
|
355
|
+
}
|
|
356
|
+
const widgetEntries = Array.from(prerenderedStates.entries())
|
|
357
|
+
.map(([widgetId, perLocale]) => {
|
|
358
|
+
const localeEntries = Array.from(perLocale.entries())
|
|
359
|
+
.map(([localeKey, json]) => {
|
|
360
|
+
const delimiter = getSwiftRawStringDelimiter(json);
|
|
361
|
+
return `"${escapeForSwiftStringLiteral(localeKey)}": ${delimiter}"${json}"${delimiter}`;
|
|
362
|
+
})
|
|
363
|
+
.join(',\n ');
|
|
364
|
+
return `"${widgetId}": [\n ${localeEntries}\n ]`;
|
|
365
|
+
})
|
|
366
|
+
.join(',\n ');
|
|
367
|
+
return (0, dedent_1.default) `
|
|
368
|
+
//
|
|
369
|
+
// VoltraWidgetInitialStates.swift
|
|
370
|
+
//
|
|
371
|
+
// Auto-generated by Voltra config plugin.
|
|
372
|
+
// Contains pre-rendered initial states for home screen widgets.
|
|
373
|
+
//
|
|
374
|
+
|
|
375
|
+
import Foundation
|
|
376
|
+
|
|
377
|
+
${GENERATED_INITIAL_STATE_LOCALE_HELPER}
|
|
378
|
+
|
|
379
|
+
public enum VoltraWidgetInitialStates {
|
|
380
|
+
private static let bundledLocalizedStates: [String: [String: String]] = [
|
|
381
|
+
${widgetEntries}
|
|
382
|
+
]
|
|
383
|
+
|
|
384
|
+
/// Get the bundled initial state JSON for a widget, matching the device locale when multiple locales were built.
|
|
385
|
+
/// Returns nil if no initial state was configured for the widget.
|
|
386
|
+
public static func getInitialState(for widgetId: String) -> Data? {
|
|
387
|
+
guard let perLocale = bundledLocalizedStates[widgetId] else { return nil }
|
|
388
|
+
let tags = VoltraGeneratedInitialStateLocale.preferredLanguageTags()
|
|
389
|
+
guard let jsonString = VoltraGeneratedInitialStateLocale.pickJson(from: perLocale, preferredLanguages: tags) else {
|
|
390
|
+
return nil
|
|
391
|
+
}
|
|
392
|
+
return jsonString.data(using: .utf8)
|
|
393
|
+
}
|
|
394
|
+
}
|
|
395
|
+
`;
|
|
396
|
+
}
|
|
397
|
+
/**
|
|
398
|
+
* Generates empty Swift code when no widgets have initial states configured.
|
|
399
|
+
*/
|
|
400
|
+
function generateEmptyInitialStatesSwift() {
|
|
401
|
+
return (0, dedent_1.default) `
|
|
402
|
+
//
|
|
403
|
+
// VoltraWidgetInitialStates.swift
|
|
404
|
+
//
|
|
405
|
+
// Auto-generated by Voltra config plugin.
|
|
406
|
+
// No widget initial states configured.
|
|
407
|
+
//
|
|
408
|
+
|
|
409
|
+
import Foundation
|
|
410
|
+
|
|
411
|
+
public enum VoltraWidgetInitialStates {
|
|
412
|
+
/// Get the bundled initial state JSON for a widget.
|
|
413
|
+
/// Always returns nil since no initial states are configured.
|
|
414
|
+
public static func getInitialState(for widgetId: String) -> Data? {
|
|
415
|
+
return nil
|
|
416
|
+
}
|
|
417
|
+
}
|
|
418
|
+
`;
|
|
419
|
+
}
|
|
420
|
+
/**
|
|
421
|
+
* Determines the appropriate Swift raw string delimiter for a given string.
|
|
422
|
+
* Counts the maximum consecutive '#' characters after a '"' in the content
|
|
423
|
+
* and returns a delimiter with one more '#' than that maximum.
|
|
424
|
+
*
|
|
425
|
+
* For example:
|
|
426
|
+
* - Content has no '"#' → returns '#'
|
|
427
|
+
* - Content has '"#' (1 hash) → returns '##'
|
|
428
|
+
* - Content has '"##' (2 hashes) → returns '###'
|
|
429
|
+
*/
|
|
430
|
+
function getSwiftRawStringDelimiter(str) {
|
|
431
|
+
// Find all sequences of '#' that follow a '"'
|
|
432
|
+
const matches = str.match(/"#+/g);
|
|
433
|
+
if (!matches) {
|
|
434
|
+
return '#';
|
|
435
|
+
}
|
|
436
|
+
// Find the maximum number of consecutive '#' after a '"'
|
|
437
|
+
const maxHashes = Math.max(...matches.map((m) => m.length - 1)); // -1 to exclude the '"'
|
|
438
|
+
return '#'.repeat(maxHashes + 1);
|
|
439
|
+
}
|
|
440
|
+
exports.__test__ = {
|
|
441
|
+
generateInitialStatesSwift,
|
|
442
|
+
};
|
|
443
|
+
//# sourceMappingURL=swift.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"swift.js","sourceRoot":"","sources":["../../../../src/ios-widget/files/swift.ts"],"names":[],"mappings":"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"}
|