@use-voltra/expo-plugin 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 +9 -29
- package/build/cjs/constants.js +3 -43
- package/build/cjs/constants.js.map +1 -1
- package/build/cjs/index.js +23 -69
- package/build/cjs/index.js.map +1 -1
- package/build/cjs/types.js +4 -0
- package/build/cjs/types.js.map +1 -1
- package/build/cjs/utils/localePick.js +48 -0
- package/build/cjs/utils/localePick.js.map +1 -0
- package/build/cjs/utils/prerender.js +15 -9
- package/build/cjs/utils/prerender.js.map +1 -1
- package/build/cjs/utils/widgetLabel.js +19 -0
- package/build/cjs/utils/widgetLabel.js.map +1 -0
- package/build/cjs/validation.js +75 -166
- package/build/cjs/validation.js.map +1 -1
- package/build/esm/constants.js +2 -42
- package/build/esm/constants.js.map +1 -1
- package/build/esm/index.js +8 -69
- package/build/esm/index.js.map +1 -1
- package/build/esm/types.js +4 -0
- package/build/esm/types.js.map +1 -1
- package/build/esm/utils/localePick.js +44 -0
- package/build/esm/utils/localePick.js.map +1 -0
- package/build/esm/utils/prerender.js +15 -9
- package/build/esm/utils/prerender.js.map +1 -1
- package/build/esm/utils/widgetLabel.js +15 -0
- package/build/esm/utils/widgetLabel.js.map +1 -0
- package/build/esm/validation.js +71 -163
- package/build/esm/validation.js.map +1 -1
- package/build/types/constants.d.ts +2 -26
- package/build/types/constants.d.ts.map +1 -1
- package/build/types/index.d.ts +10 -12
- package/build/types/index.d.ts.map +1 -1
- package/build/types/types.d.ts +9 -260
- package/build/types/types.d.ts.map +1 -1
- package/build/types/utils/localePick.d.ts +7 -0
- package/build/types/utils/localePick.d.ts.map +1 -0
- package/build/types/utils/prerender.d.ts +6 -3
- package/build/types/utils/prerender.d.ts.map +1 -1
- package/build/types/utils/widgetLabel.d.ts +8 -0
- package/build/types/utils/widgetLabel.d.ts.map +1 -0
- package/build/types/validation.d.ts +6 -14
- package/build/types/validation.d.ts.map +1 -1
- package/package.json +11 -11
- package/build/cjs/android/files/assets.js +0 -259
- package/build/cjs/android/files/assets.js.map +0 -1
- package/build/cjs/android/files/fonts.js +0 -69
- package/build/cjs/android/files/fonts.js.map +0 -1
- package/build/cjs/android/files/index.js +0 -81
- package/build/cjs/android/files/index.js.map +0 -1
- package/build/cjs/android/files/initialStates.js +0 -83
- package/build/cjs/android/files/initialStates.js.map +0 -1
- package/build/cjs/android/files/kotlin.js +0 -142
- package/build/cjs/android/files/kotlin.js.map +0 -1
- package/build/cjs/android/files/xml.js +0 -247
- package/build/cjs/android/files/xml.js.map +0 -1
- package/build/cjs/android/index.js +0 -33
- package/build/cjs/android/index.js.map +0 -1
- package/build/cjs/android/manifest.js +0 -92
- package/build/cjs/android/manifest.js.map +0 -1
- package/build/cjs/ios/eas.js +0 -28
- package/build/cjs/ios/eas.js.map +0 -1
- package/build/cjs/ios/entitlements.js +0 -46
- package/build/cjs/ios/entitlements.js.map +0 -1
- package/build/cjs/ios/index.js +0 -39
- package/build/cjs/ios/index.js.map +0 -1
- package/build/cjs/ios/infoPlist.js +0 -51
- package/build/cjs/ios/infoPlist.js.map +0 -1
- package/build/cjs/ios/pushNotifications.js +0 -22
- package/build/cjs/ios/pushNotifications.js.map +0 -1
- package/build/cjs/ios-widget/eas.js +0 -66
- package/build/cjs/ios-widget/eas.js.map +0 -1
- package/build/cjs/ios-widget/files/assets.js +0 -199
- package/build/cjs/ios-widget/files/assets.js.map +0 -1
- package/build/cjs/ios-widget/files/entitlements.js +0 -77
- package/build/cjs/ios-widget/files/entitlements.js.map +0 -1
- package/build/cjs/ios-widget/files/index.js +0 -92
- package/build/cjs/ios-widget/files/index.js.map +0 -1
- package/build/cjs/ios-widget/files/infoPlist.js +0 -91
- package/build/cjs/ios-widget/files/infoPlist.js.map +0 -1
- package/build/cjs/ios-widget/files/swift.js +0 -256
- package/build/cjs/ios-widget/files/swift.js.map +0 -1
- package/build/cjs/ios-widget/fonts.js +0 -151
- package/build/cjs/ios-widget/fonts.js.map +0 -1
- package/build/cjs/ios-widget/index.js +0 -46
- package/build/cjs/ios-widget/index.js.map +0 -1
- package/build/cjs/ios-widget/podfile.js +0 -43
- package/build/cjs/ios-widget/podfile.js.map +0 -1
- package/build/cjs/ios-widget/widgetPlist.js +0 -99
- package/build/cjs/ios-widget/widgetPlist.js.map +0 -1
- package/build/cjs/ios-widget/xcode/buildPhases.js +0 -245
- package/build/cjs/ios-widget/xcode/buildPhases.js.map +0 -1
- package/build/cjs/ios-widget/xcode/configurationList.js +0 -91
- package/build/cjs/ios-widget/xcode/configurationList.js.map +0 -1
- package/build/cjs/ios-widget/xcode/groups.js +0 -65
- package/build/cjs/ios-widget/xcode/groups.js.map +0 -1
- package/build/cjs/ios-widget/xcode/index.js +0 -155
- package/build/cjs/ios-widget/xcode/index.js.map +0 -1
- package/build/cjs/ios-widget/xcode/mainAppSettings.js +0 -71
- package/build/cjs/ios-widget/xcode/mainAppSettings.js.map +0 -1
- package/build/cjs/ios-widget/xcode/productFile.js +0 -74
- package/build/cjs/ios-widget/xcode/productFile.js.map +0 -1
- package/build/cjs/ios-widget/xcode/target.js +0 -113
- package/build/cjs/ios-widget/xcode/target.js.map +0 -1
- package/build/cjs/utils/fileDiscovery.js +0 -107
- package/build/cjs/utils/fileDiscovery.js.map +0 -1
- package/build/cjs/utils/urlScheme.js +0 -40
- package/build/cjs/utils/urlScheme.js.map +0 -1
- package/build/esm/android/files/assets.js +0 -223
- package/build/esm/android/files/assets.js.map +0 -1
- package/build/esm/android/files/fonts.js +0 -33
- package/build/esm/android/files/fonts.js.map +0 -1
- package/build/esm/android/files/index.js +0 -77
- package/build/esm/android/files/index.js.map +0 -1
- package/build/esm/android/files/initialStates.js +0 -44
- package/build/esm/android/files/initialStates.js.map +0 -1
- package/build/esm/android/files/kotlin.js +0 -103
- package/build/esm/android/files/kotlin.js.map +0 -1
- package/build/esm/android/files/xml.js +0 -206
- package/build/esm/android/files/xml.js.map +0 -1
- package/build/esm/android/index.js +0 -29
- package/build/esm/android/index.js.map +0 -1
- package/build/esm/android/manifest.js +0 -88
- package/build/esm/android/manifest.js.map +0 -1
- package/build/esm/ios/eas.js +0 -24
- package/build/esm/ios/eas.js.map +0 -1
- package/build/esm/ios/entitlements.js +0 -42
- package/build/esm/ios/entitlements.js.map +0 -1
- package/build/esm/ios/index.js +0 -34
- package/build/esm/ios/index.js.map +0 -1
- package/build/esm/ios/infoPlist.js +0 -47
- package/build/esm/ios/infoPlist.js.map +0 -1
- package/build/esm/ios/pushNotifications.js +0 -18
- package/build/esm/ios/pushNotifications.js.map +0 -1
- package/build/esm/ios-widget/eas.js +0 -62
- package/build/esm/ios-widget/eas.js.map +0 -1
- package/build/esm/ios-widget/files/assets.js +0 -163
- package/build/esm/ios-widget/files/assets.js.map +0 -1
- package/build/esm/ios-widget/files/entitlements.js +0 -37
- package/build/esm/ios-widget/files/entitlements.js.map +0 -1
- package/build/esm/ios-widget/files/index.js +0 -55
- package/build/esm/ios-widget/files/index.js.map +0 -1
- package/build/esm/ios-widget/files/infoPlist.js +0 -55
- package/build/esm/ios-widget/files/infoPlist.js.map +0 -1
- package/build/esm/ios-widget/files/swift.js +0 -217
- package/build/esm/ios-widget/files/swift.js.map +0 -1
- package/build/esm/ios-widget/fonts.js +0 -111
- package/build/esm/ios-widget/fonts.js.map +0 -1
- package/build/esm/ios-widget/index.js +0 -42
- package/build/esm/ios-widget/index.js.map +0 -1
- package/build/esm/ios-widget/podfile.js +0 -39
- package/build/esm/ios-widget/podfile.js.map +0 -1
- package/build/esm/ios-widget/widgetPlist.js +0 -92
- package/build/esm/ios-widget/widgetPlist.js.map +0 -1
- package/build/esm/ios-widget/xcode/buildPhases.js +0 -208
- package/build/esm/ios-widget/xcode/buildPhases.js.map +0 -1
- package/build/esm/ios-widget/xcode/configurationList.js +0 -87
- package/build/esm/ios-widget/xcode/configurationList.js.map +0 -1
- package/build/esm/ios-widget/xcode/groups.js +0 -61
- package/build/esm/ios-widget/xcode/groups.js.map +0 -1
- package/build/esm/ios-widget/xcode/index.js +0 -118
- package/build/esm/ios-widget/xcode/index.js.map +0 -1
- package/build/esm/ios-widget/xcode/mainAppSettings.js +0 -68
- package/build/esm/ios-widget/xcode/mainAppSettings.js.map +0 -1
- package/build/esm/ios-widget/xcode/productFile.js +0 -70
- package/build/esm/ios-widget/xcode/productFile.js.map +0 -1
- package/build/esm/ios-widget/xcode/target.js +0 -108
- package/build/esm/ios-widget/xcode/target.js.map +0 -1
- package/build/esm/utils/fileDiscovery.js +0 -71
- package/build/esm/utils/fileDiscovery.js.map +0 -1
- package/build/esm/utils/urlScheme.js +0 -37
- package/build/esm/utils/urlScheme.js.map +0 -1
- package/build/types/android/files/assets.d.ts +0 -26
- package/build/types/android/files/assets.d.ts.map +0 -1
- package/build/types/android/files/fonts.d.ts +0 -19
- package/build/types/android/files/fonts.d.ts.map +0 -1
- package/build/types/android/files/index.d.ts +0 -21
- package/build/types/android/files/index.d.ts.map +0 -1
- package/build/types/android/files/initialStates.d.ts +0 -14
- package/build/types/android/files/initialStates.d.ts.map +0 -1
- package/build/types/android/files/kotlin.d.ts +0 -11
- package/build/types/android/files/kotlin.d.ts.map +0 -1
- package/build/types/android/files/xml.d.ts +0 -25
- package/build/types/android/files/xml.d.ts.map +0 -1
- package/build/types/android/index.d.ts +0 -12
- package/build/types/android/index.d.ts.map +0 -1
- package/build/types/android/manifest.d.ts +0 -16
- package/build/types/android/manifest.d.ts.map +0 -1
- package/build/types/ios/eas.d.ts +0 -12
- package/build/types/ios/eas.d.ts.map +0 -1
- package/build/types/ios/entitlements.d.ts +0 -14
- package/build/types/ios/entitlements.d.ts.map +0 -1
- package/build/types/ios/index.d.ts +0 -19
- package/build/types/ios/index.d.ts.map +0 -1
- package/build/types/ios/infoPlist.d.ts +0 -21
- package/build/types/ios/infoPlist.d.ts.map +0 -1
- package/build/types/ios/pushNotifications.d.ts +0 -10
- package/build/types/ios/pushNotifications.d.ts.map +0 -1
- package/build/types/ios-widget/eas.d.ts +0 -15
- package/build/types/ios-widget/eas.d.ts.map +0 -1
- package/build/types/ios-widget/files/assets.d.ts +0 -13
- package/build/types/ios-widget/files/assets.d.ts.map +0 -1
- package/build/types/ios-widget/files/entitlements.d.ts +0 -17
- package/build/types/ios-widget/files/entitlements.d.ts.map +0 -1
- package/build/types/ios-widget/files/index.d.ts +0 -24
- package/build/types/ios-widget/files/index.d.ts.map +0 -1
- package/build/types/ios-widget/files/infoPlist.d.ts +0 -10
- package/build/types/ios-widget/files/infoPlist.d.ts.map +0 -1
- package/build/types/ios-widget/files/swift.d.ts +0 -15
- package/build/types/ios-widget/files/swift.d.ts.map +0 -1
- package/build/types/ios-widget/fonts.d.ts +0 -22
- package/build/types/ios-widget/fonts.d.ts.map +0 -1
- package/build/types/ios-widget/index.d.ts +0 -31
- package/build/types/ios-widget/index.d.ts.map +0 -1
- package/build/types/ios-widget/podfile.d.ts +0 -9
- package/build/types/ios-widget/podfile.d.ts.map +0 -1
- package/build/types/ios-widget/widgetPlist.d.ts +0 -20
- package/build/types/ios-widget/widgetPlist.d.ts.map +0 -1
- package/build/types/ios-widget/xcode/buildPhases.d.ts +0 -25
- package/build/types/ios-widget/xcode/buildPhases.d.ts.map +0 -1
- package/build/types/ios-widget/xcode/configurationList.d.ts +0 -20
- package/build/types/ios-widget/xcode/configurationList.d.ts.map +0 -1
- package/build/types/ios-widget/xcode/groups.d.ts +0 -15
- package/build/types/ios-widget/xcode/groups.d.ts.map +0 -1
- package/build/types/ios-widget/xcode/index.d.ts +0 -20
- package/build/types/ios-widget/xcode/index.d.ts.map +0 -1
- package/build/types/ios-widget/xcode/mainAppSettings.d.ts +0 -15
- package/build/types/ios-widget/xcode/mainAppSettings.d.ts.map +0 -1
- package/build/types/ios-widget/xcode/productFile.d.ts +0 -14
- package/build/types/ios-widget/xcode/productFile.d.ts.map +0 -1
- package/build/types/ios-widget/xcode/target.d.ts +0 -42
- package/build/types/ios-widget/xcode/target.d.ts.map +0 -1
- package/build/types/utils/fileDiscovery.d.ts +0 -13
- package/build/types/utils/fileDiscovery.d.ts.map +0 -1
- package/build/types/utils/urlScheme.d.ts +0 -10
- package/build/types/utils/urlScheme.d.ts.map +0 -1
package/build/types/types.d.ts
CHANGED
|
@@ -1,267 +1,16 @@
|
|
|
1
|
-
import { ConfigPlugin } from '@expo/config-plugins';
|
|
2
1
|
/**
|
|
3
|
-
*
|
|
2
|
+
* Types shared by iOS and Android Voltra config plugins.
|
|
3
|
+
* Platform widget config types live in each client's expo-plugin package.
|
|
4
4
|
*/
|
|
5
5
|
/**
|
|
6
|
-
*
|
|
6
|
+
* Per-locale strings for widget picker/gallery labels (`displayName`, `description`).
|
|
7
|
+
* Keys should be BCP-47-style locale tags (e.g. `en`, `pl`, `pt-BR`). Plain `string` is still allowed for a single-language setup.
|
|
7
8
|
*/
|
|
8
|
-
export type
|
|
9
|
+
export type WidgetLocalizedCopy = Record<string, string>;
|
|
10
|
+
export type WidgetLabel = string | WidgetLocalizedCopy;
|
|
9
11
|
/**
|
|
10
|
-
*
|
|
12
|
+
* Build-time widget initial state source: a single file path, or per-locale paths (same key rules as `WidgetLocalizedCopy`).
|
|
13
|
+
* Each path must point to a module that exports the widget variants / default export for prerendering.
|
|
11
14
|
*/
|
|
12
|
-
export
|
|
13
|
-
/**
|
|
14
|
-
* Unique identifier for the widget (used as the widget kind and in JS API)
|
|
15
|
-
* Must be alphanumeric with underscores only
|
|
16
|
-
*/
|
|
17
|
-
id: string;
|
|
18
|
-
/**
|
|
19
|
-
* Display name shown in the widget gallery
|
|
20
|
-
*/
|
|
21
|
-
displayName: string;
|
|
22
|
-
/**
|
|
23
|
-
* Description shown in the widget gallery
|
|
24
|
-
*/
|
|
25
|
-
description: string;
|
|
26
|
-
/**
|
|
27
|
-
* Supported widget sizes
|
|
28
|
-
* @default ['systemSmall', 'systemMedium', 'systemLarge']
|
|
29
|
-
*/
|
|
30
|
-
supportedFamilies?: WidgetFamily[];
|
|
31
|
-
/**
|
|
32
|
-
* Path to a file that default exports a WidgetVariants object for initial widget state.
|
|
33
|
-
* This will be pre-rendered at build time and bundled into the iOS app.
|
|
34
|
-
*/
|
|
35
|
-
initialStatePath?: string;
|
|
36
|
-
/**
|
|
37
|
-
* Configuration for server-driven widget updates.
|
|
38
|
-
* When configured, the widget will periodically fetch new content from a remote server
|
|
39
|
-
* running Voltra SSR, without requiring the user to open the app.
|
|
40
|
-
*/
|
|
41
|
-
serverUpdate?: WidgetServerUpdateConfig;
|
|
42
|
-
}
|
|
43
|
-
/**
|
|
44
|
-
* Configuration for server-driven widget updates.
|
|
45
|
-
* Enables widgets to pull updates from a remote Voltra SSR service.
|
|
46
|
-
*/
|
|
47
|
-
export interface WidgetServerUpdateConfig {
|
|
48
|
-
/**
|
|
49
|
-
* The URL of the Voltra SSR endpoint that returns widget JSON.
|
|
50
|
-
* The widget ID and family will be appended as query parameters.
|
|
51
|
-
*/
|
|
52
|
-
url: string;
|
|
53
|
-
/**
|
|
54
|
-
* How often the widget should fetch updates, in minutes.
|
|
55
|
-
* iOS WidgetKit may throttle requests; minimum effective interval is ~15 minutes.
|
|
56
|
-
* @default 15
|
|
57
|
-
*/
|
|
58
|
-
intervalMinutes?: number;
|
|
59
|
-
/**
|
|
60
|
-
* Whether to show a native refresh button in the top-right corner of the widget.
|
|
61
|
-
* When tapped, triggers an immediate server update.
|
|
62
|
-
* @default false
|
|
63
|
-
*/
|
|
64
|
-
refresh?: boolean;
|
|
65
|
-
}
|
|
66
|
-
/**
|
|
67
|
-
* Structure describing the files in a widget extension target.
|
|
68
|
-
* Used for configuring Xcode build phases and groups.
|
|
69
|
-
*/
|
|
70
|
-
export interface WidgetFiles {
|
|
71
|
-
swiftFiles: string[];
|
|
72
|
-
entitlementFiles: string[];
|
|
73
|
-
plistFiles: string[];
|
|
74
|
-
assetDirectories: string[];
|
|
75
|
-
intentFiles: string[];
|
|
76
|
-
}
|
|
77
|
-
/**
|
|
78
|
-
* Configuration for a single Android widget
|
|
79
|
-
*/
|
|
80
|
-
export interface AndroidWidgetConfig {
|
|
81
|
-
/**
|
|
82
|
-
* Unique identifier for the widget
|
|
83
|
-
*/
|
|
84
|
-
id: string;
|
|
85
|
-
/**
|
|
86
|
-
* Display name shown in the widget picker
|
|
87
|
-
*/
|
|
88
|
-
displayName: string;
|
|
89
|
-
/**
|
|
90
|
-
* Description shown in the widget picker
|
|
91
|
-
*/
|
|
92
|
-
description: string;
|
|
93
|
-
/**
|
|
94
|
-
* Minimum width in dp. If provided, takes precedence over minCellWidth.
|
|
95
|
-
*/
|
|
96
|
-
minWidth?: number;
|
|
97
|
-
/**
|
|
98
|
-
* Minimum height in dp. If provided, takes precedence over minCellHeight.
|
|
99
|
-
*/
|
|
100
|
-
minHeight?: number;
|
|
101
|
-
/**
|
|
102
|
-
* Minimum width in cells. Used to derive minWidth if not provided: (N * 70) - 30
|
|
103
|
-
*/
|
|
104
|
-
minCellWidth?: number;
|
|
105
|
-
/**
|
|
106
|
-
* Minimum height in cells. Used to derive minHeight if not provided: (N * 70) - 30
|
|
107
|
-
*/
|
|
108
|
-
minCellHeight?: number;
|
|
109
|
-
/**
|
|
110
|
-
* Target cell width (Android 12+, 1-5 cells)
|
|
111
|
-
*/
|
|
112
|
-
targetCellWidth: number;
|
|
113
|
-
/**
|
|
114
|
-
* Target cell height (Android 12+, 1-5 cells)
|
|
115
|
-
*/
|
|
116
|
-
targetCellHeight: number;
|
|
117
|
-
/**
|
|
118
|
-
* Whether the widget can be resized
|
|
119
|
-
* @default 'horizontal|vertical'
|
|
120
|
-
*/
|
|
121
|
-
resizeMode?: 'none' | 'horizontal' | 'vertical' | 'horizontal|vertical';
|
|
122
|
-
/**
|
|
123
|
-
* Widget category
|
|
124
|
-
* @default 'home_screen'
|
|
125
|
-
*/
|
|
126
|
-
widgetCategory?: 'home_screen' | 'keyguard' | 'home_screen|keyguard';
|
|
127
|
-
/**
|
|
128
|
-
* Path to a file that default exports a WidgetVariants object for initial widget state.
|
|
129
|
-
* This will be pre-rendered at build time and bundled into the app.
|
|
130
|
-
*/
|
|
131
|
-
initialStatePath?: string;
|
|
132
|
-
/**
|
|
133
|
-
* Configuration for server-driven widget updates.
|
|
134
|
-
* When configured, the widget will periodically fetch new content from a remote server
|
|
135
|
-
* running Voltra SSR, without requiring the user to open the app.
|
|
136
|
-
*/
|
|
137
|
-
serverUpdate?: AndroidWidgetServerUpdateConfig;
|
|
138
|
-
/**
|
|
139
|
-
* Path to preview image for widget picker (PNG/JPG/WebP).
|
|
140
|
-
* Sets android:previewImage attribute. Works on all Android versions.
|
|
141
|
-
* On Android 12+, combine with previewLayout for better results.
|
|
142
|
-
*/
|
|
143
|
-
previewImage?: string;
|
|
144
|
-
/**
|
|
145
|
-
* Path to custom XML layout for RemoteViews preview (Android 12+).
|
|
146
|
-
* Sets android:previewLayout attribute for scalable previews.
|
|
147
|
-
* If not provided but previewImage is set, an auto-layout will be generated.
|
|
148
|
-
*/
|
|
149
|
-
previewLayout?: string;
|
|
150
|
-
}
|
|
151
|
-
/**
|
|
152
|
-
* Configuration for server-driven Android widget updates.
|
|
153
|
-
*/
|
|
154
|
-
export interface AndroidWidgetServerUpdateConfig {
|
|
155
|
-
/**
|
|
156
|
-
* The URL of the Voltra SSR endpoint that returns widget JSON.
|
|
157
|
-
* The widget ID will be appended as a query parameter.
|
|
158
|
-
* Example: "https://api.example.com/widgets/render"
|
|
159
|
-
*/
|
|
160
|
-
url: string;
|
|
161
|
-
/**
|
|
162
|
-
* How often the widget should fetch updates, in minutes.
|
|
163
|
-
* Uses WorkManager PeriodicWorkRequest; minimum interval is 15 minutes.
|
|
164
|
-
* @default 60
|
|
165
|
-
*/
|
|
166
|
-
intervalMinutes?: number;
|
|
167
|
-
/**
|
|
168
|
-
* Whether to show a native refresh button in the top-right corner of the widget.
|
|
169
|
-
* When tapped, triggers an immediate server update.
|
|
170
|
-
* @default false
|
|
171
|
-
*/
|
|
172
|
-
refresh?: boolean;
|
|
173
|
-
}
|
|
174
|
-
/**
|
|
175
|
-
* Android-specific plugin configuration
|
|
176
|
-
*/
|
|
177
|
-
export interface AndroidPluginConfig {
|
|
178
|
-
/**
|
|
179
|
-
* Enable Android notification-related manifest plumbing used by Voltra features
|
|
180
|
-
* such as Live Updates.
|
|
181
|
-
*/
|
|
182
|
-
enableNotifications?: boolean;
|
|
183
|
-
/**
|
|
184
|
-
* Android home screen widgets
|
|
185
|
-
* Separate from iOS widgets to allow platform-specific configurations
|
|
186
|
-
*/
|
|
187
|
-
widgets?: AndroidWidgetConfig[];
|
|
188
|
-
}
|
|
189
|
-
/**
|
|
190
|
-
* Props for the Voltra config plugin
|
|
191
|
-
*/
|
|
192
|
-
export interface ConfigPluginProps {
|
|
193
|
-
/**
|
|
194
|
-
* Enable push notification support for Live Activities
|
|
195
|
-
*/
|
|
196
|
-
enablePushNotifications?: boolean;
|
|
197
|
-
/**
|
|
198
|
-
* App group identifier for sharing data between app and widget extension
|
|
199
|
-
*/
|
|
200
|
-
groupIdentifier?: string;
|
|
201
|
-
/**
|
|
202
|
-
* Configuration for iOS home screen widgets (uses WidgetFamily sizing)
|
|
203
|
-
* Each widget will be available in the widget gallery
|
|
204
|
-
*/
|
|
205
|
-
widgets?: WidgetConfig[];
|
|
206
|
-
/**
|
|
207
|
-
* iOS deployment target version for the widget extension
|
|
208
|
-
* If not provided, will use the main app's deployment target or fall back to the default
|
|
209
|
-
*/
|
|
210
|
-
deploymentTarget?: string;
|
|
211
|
-
/**
|
|
212
|
-
* Custom target name for the widget extension
|
|
213
|
-
* If not provided, defaults to "{AppName}LiveActivity"
|
|
214
|
-
* Useful for matching existing provisioning profiles or credentials
|
|
215
|
-
*/
|
|
216
|
-
targetName?: string;
|
|
217
|
-
/**
|
|
218
|
-
* Custom fonts to include in the Live Activity extension.
|
|
219
|
-
* Provide an array of font module specifiers, file paths, or directories containing fonts.
|
|
220
|
-
* Supports .ttf, .otf, .woff, and .woff2 formats.
|
|
221
|
-
*
|
|
222
|
-
* This is equivalent to expo-font but for the Live Activity extension.
|
|
223
|
-
* @see https://docs.expo.dev/versions/latest/sdk/font/
|
|
224
|
-
*/
|
|
225
|
-
fonts?: string[];
|
|
226
|
-
/**
|
|
227
|
-
* Keychain Access Group for sharing credentials between the main app and widget extension.
|
|
228
|
-
* Required when using server-driven widget updates with authentication.
|
|
229
|
-
* This should match a Keychain Sharing capability group configured in your Apple Developer account.
|
|
230
|
-
* Example: "$(AppIdentifierPrefix)com.example.shared"
|
|
231
|
-
*
|
|
232
|
-
* If not provided and any widget has `serverUpdate` configured, defaults to
|
|
233
|
-
* `$(AppIdentifierPrefix)<bundleIdentifier>` (the app's own keychain access group).
|
|
234
|
-
*/
|
|
235
|
-
keychainGroup?: string;
|
|
236
|
-
/**
|
|
237
|
-
* Android-specific configuration
|
|
238
|
-
*/
|
|
239
|
-
android?: AndroidPluginConfig;
|
|
240
|
-
}
|
|
241
|
-
/**
|
|
242
|
-
* The main Voltra config plugin type
|
|
243
|
-
*/
|
|
244
|
-
export type VoltraConfigPlugin = ConfigPlugin<ConfigPluginProps | undefined>;
|
|
245
|
-
/**
|
|
246
|
-
* Props passed to iOS-related plugins
|
|
247
|
-
*/
|
|
248
|
-
export interface IOSPluginProps {
|
|
249
|
-
targetName: string;
|
|
250
|
-
bundleIdentifier: string;
|
|
251
|
-
deploymentTarget: string;
|
|
252
|
-
widgets?: WidgetConfig[];
|
|
253
|
-
groupIdentifier?: string;
|
|
254
|
-
projectRoot: string;
|
|
255
|
-
platformProjectRoot: string;
|
|
256
|
-
fonts?: string[];
|
|
257
|
-
}
|
|
258
|
-
/**
|
|
259
|
-
* Props passed to Android-related plugins
|
|
260
|
-
*/
|
|
261
|
-
export interface AndroidPluginProps {
|
|
262
|
-
enableNotifications?: boolean;
|
|
263
|
-
widgets: AndroidWidgetConfig[];
|
|
264
|
-
userImagesPath?: string;
|
|
265
|
-
fonts?: string[];
|
|
266
|
-
}
|
|
15
|
+
export type WidgetInitialStatePath = string | WidgetLocalizedCopy;
|
|
267
16
|
//# sourceMappingURL=types.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/types.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/types.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH;;;GAGG;AACH,MAAM,MAAM,mBAAmB,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;AAExD,MAAM,MAAM,WAAW,GAAG,MAAM,GAAG,mBAAmB,CAAA;AAEtD;;;GAGG;AACH,MAAM,MAAM,sBAAsB,GAAG,MAAM,GAAG,mBAAmB,CAAA"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Picks a localized string value from a locale-keyed map using the same fallback rules as iOS/Android runtimes:
|
|
3
|
+
* preferred language tags (full match, then language-only), then `en`, then `__default`, then first value.
|
|
4
|
+
*/
|
|
5
|
+
export declare function normalizeLocaleTag(tag: string): string;
|
|
6
|
+
export declare function pickLocalizedValue(perLocale: Record<string, string>, preferredLanguages: string[]): string | undefined;
|
|
7
|
+
//# sourceMappingURL=localePick.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"localePick.d.ts","sourceRoot":"","sources":["../../../src/utils/localePick.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,wBAAgB,kBAAkB,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAEtD;AAED,wBAAgB,kBAAkB,CAChC,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,EACjC,kBAAkB,EAAE,MAAM,EAAE,GAC3B,MAAM,GAAG,SAAS,CAyCpB"}
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import type { WidgetInitialStatePath } from '../types';
|
|
1
2
|
/**
|
|
2
3
|
* Type for the widget renderer function
|
|
3
4
|
*/
|
|
@@ -7,8 +8,10 @@ export type WidgetRenderer = (variants: any) => string;
|
|
|
7
8
|
*/
|
|
8
9
|
export interface PrerenderableWidget {
|
|
9
10
|
id: string;
|
|
10
|
-
initialStatePath?:
|
|
11
|
+
initialStatePath?: WidgetInitialStatePath;
|
|
11
12
|
}
|
|
13
|
+
/** widgetId -> locale key -> prerendered JSON string (single-file widgets use `__default`) */
|
|
14
|
+
export type PrerenderedWidgetStates = Map<string, Map<string, string>>;
|
|
12
15
|
/**
|
|
13
16
|
* Prerender widget initial states for build-time inclusion.
|
|
14
17
|
*
|
|
@@ -19,7 +22,7 @@ export interface PrerenderableWidget {
|
|
|
19
22
|
* @param widgets - Array of widget configurations
|
|
20
23
|
* @param projectRoot - Root directory of the Expo project
|
|
21
24
|
* @param renderer - The renderer function to use (voltra/server or voltra/android/server)
|
|
22
|
-
* @returns Map of widgetId ->
|
|
25
|
+
* @returns Map of widgetId -> (locale key -> prerendered JSON string)
|
|
23
26
|
*/
|
|
24
|
-
export declare function prerenderWidgetState(widgets: PrerenderableWidget[], projectRoot: string, renderer: WidgetRenderer): Promise<
|
|
27
|
+
export declare function prerenderWidgetState(widgets: PrerenderableWidget[], projectRoot: string, renderer: WidgetRenderer): Promise<PrerenderedWidgetStates>;
|
|
25
28
|
//# sourceMappingURL=prerender.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"prerender.d.ts","sourceRoot":"","sources":["../../../src/utils/prerender.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"prerender.d.ts","sourceRoot":"","sources":["../../../src/utils/prerender.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,sBAAsB,EAAe,MAAM,UAAU,CAAA;AAGnE;;GAEG;AACH,MAAM,MAAM,cAAc,GAAG,CAAC,QAAQ,EAAE,GAAG,KAAK,MAAM,CAAA;AAEtD;;GAEG;AACH,MAAM,WAAW,mBAAmB;IAClC,EAAE,EAAE,MAAM,CAAA;IACV,gBAAgB,CAAC,EAAE,sBAAsB,CAAA;CAC1C;AAED,8FAA8F;AAC9F,MAAM,MAAM,uBAAuB,GAAG,GAAG,CAAC,MAAM,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAA;AA6ItE;;;;;;;;;;;GAWG;AACH,wBAAsB,oBAAoB,CACxC,OAAO,EAAE,mBAAmB,EAAE,EAC9B,WAAW,EAAE,MAAM,EACnB,QAAQ,EAAE,cAAc,GACvB,OAAO,CAAC,uBAAuB,CAAC,CA+BlC"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import type { WidgetLabel, WidgetLocalizedCopy } from '../types';
|
|
2
|
+
export declare function isWidgetLocalizedMap(label: WidgetLabel): label is WidgetLocalizedCopy;
|
|
3
|
+
/**
|
|
4
|
+
* Development / fallback English copy for LocalizedStringResource.defaultValue.
|
|
5
|
+
* Prefers `en`, then `en-*`, then default fallback order from locale picking.
|
|
6
|
+
*/
|
|
7
|
+
export declare function widgetLabelEnglish(label: WidgetLabel): string;
|
|
8
|
+
//# sourceMappingURL=widgetLabel.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"widgetLabel.d.ts","sourceRoot":"","sources":["../../../src/utils/widgetLabel.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,mBAAmB,EAAE,MAAM,UAAU,CAAA;AAIhE,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,WAAW,GAAG,KAAK,IAAI,mBAAmB,CAErF;AAED;;;GAGG;AACH,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,WAAW,GAAG,MAAM,CAM7D"}
|
|
@@ -1,17 +1,9 @@
|
|
|
1
|
-
import type {
|
|
1
|
+
import type { WidgetInitialStatePath } from './types';
|
|
2
|
+
export declare function validateHomeScreenWidgetId(widgetId: unknown): asserts widgetId is string;
|
|
3
|
+
export declare function assertValidLocaleKey(localeKey: string, widgetId: string, fieldName: string): void;
|
|
4
|
+
export declare function validateWidgetLabel(value: unknown, widgetId: string, fieldName: string): void;
|
|
2
5
|
/**
|
|
3
|
-
* Validates
|
|
4
|
-
* Throws an error if validation fails.
|
|
6
|
+
* Validates optional initialStatePath: plain string or locale map of project-relative file paths.
|
|
5
7
|
*/
|
|
6
|
-
export declare function
|
|
7
|
-
/**
|
|
8
|
-
* Validates an Android widget configuration.
|
|
9
|
-
* Throws an error if validation fails.
|
|
10
|
-
*/
|
|
11
|
-
export declare function validateAndroidWidgetConfig(widget: AndroidWidgetConfig, projectRoot?: string): void;
|
|
12
|
-
/**
|
|
13
|
-
* Validates the plugin props at entry point.
|
|
14
|
-
* Throws an error if validation fails.
|
|
15
|
-
*/
|
|
16
|
-
export declare function validateProps(props: ConfigPluginProps): void;
|
|
8
|
+
export declare function validateInitialStatePath(value: WidgetInitialStatePath | undefined, widgetId: string, projectRoot?: string): void;
|
|
17
9
|
//# sourceMappingURL=validation.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"validation.d.ts","sourceRoot":"","sources":["../../src/validation.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,
|
|
1
|
+
{"version":3,"file":"validation.d.ts","sourceRoot":"","sources":["../../src/validation.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,SAAS,CAAA;AAYrD,wBAAgB,0BAA0B,CAAC,QAAQ,EAAE,OAAO,GAAG,OAAO,CAAC,QAAQ,IAAI,MAAM,CAWxF;AAED,wBAAgB,oBAAoB,CAAC,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,IAAI,CAuBjG;AAED,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,IAAI,CAmC7F;AAED;;GAEG;AACH,wBAAgB,wBAAwB,CACtC,KAAK,EAAE,sBAAsB,GAAG,SAAS,EACzC,QAAQ,EAAE,MAAM,EAChB,WAAW,CAAC,EAAE,MAAM,GACnB,IAAI,CAkDN"}
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@use-voltra/expo-plugin",
|
|
3
|
-
"version": "
|
|
4
|
-
"description": "
|
|
3
|
+
"version": "2.0.0-rc.1",
|
|
4
|
+
"description": "Shared utilities for Voltra Expo config plugins",
|
|
5
5
|
"main": "build/cjs/index.js",
|
|
6
6
|
"module": "build/esm/index.js",
|
|
7
7
|
"types": "build/types/index.d.ts",
|
|
@@ -22,22 +22,16 @@
|
|
|
22
22
|
"build": "node ../../scripts/build-package.mjs packages/expo-plugin",
|
|
23
23
|
"clean": "rm -rf build",
|
|
24
24
|
"lint": "oxlint src",
|
|
25
|
+
"test": "jest --config jest.config.js",
|
|
25
26
|
"typecheck": "tsc -p tsconfig.typecheck.json --noEmit"
|
|
26
27
|
},
|
|
27
28
|
"dependencies": {
|
|
28
|
-
"@babel/core": "^7.27.4"
|
|
29
|
-
"@expo/config-plugins": "~10.1.2",
|
|
30
|
-
"@expo/plist": "^0.3.5",
|
|
31
|
-
"dedent": "^1.7.1",
|
|
32
|
-
"vd-tool": "^4.0.2",
|
|
33
|
-
"xcode": "^3.0.1"
|
|
29
|
+
"@babel/core": "^7.27.4"
|
|
34
30
|
},
|
|
35
31
|
"keywords": [
|
|
36
32
|
"voltra",
|
|
37
33
|
"expo",
|
|
38
|
-
"plugin"
|
|
39
|
-
"ios",
|
|
40
|
-
"android"
|
|
34
|
+
"plugin"
|
|
41
35
|
],
|
|
42
36
|
"author": "Saúl Sharma (https://x.com/saul_sharma), Szymon Chmal (https://x.com/chmalszymon)",
|
|
43
37
|
"repository": {
|
|
@@ -54,5 +48,11 @@
|
|
|
54
48
|
"expo": "*",
|
|
55
49
|
"react": "*",
|
|
56
50
|
"react-native": "*"
|
|
51
|
+
},
|
|
52
|
+
"devDependencies": {
|
|
53
|
+
"@types/jest": "^29.5.14",
|
|
54
|
+
"@types/node": "^20.19.25",
|
|
55
|
+
"jest": "^29.7.0",
|
|
56
|
+
"ts-jest": "^29.3.4"
|
|
57
57
|
}
|
|
58
58
|
}
|