@use-voltra/ios-client 2.0.0 → 2.1.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 +20 -1
- package/build/commonjs/index.js +8 -0
- package/build/commonjs/index.js.map +1 -1
- package/build/commonjs/utils/enableWidgetHotReload.js +39 -0
- package/build/commonjs/utils/enableWidgetHotReload.js.map +1 -0
- package/build/module/index.js +1 -0
- package/build/module/index.js.map +1 -1
- package/build/module/utils/enableWidgetHotReload.js +35 -0
- package/build/module/utils/enableWidgetHotReload.js.map +1 -0
- package/build/typescript/commonjs/index.d.ts +1 -0
- package/build/typescript/commonjs/index.d.ts.map +1 -1
- package/build/typescript/commonjs/utils/enableWidgetHotReload.d.ts +23 -0
- package/build/typescript/commonjs/utils/enableWidgetHotReload.d.ts.map +1 -0
- package/build/typescript/module/index.d.ts +1 -0
- package/build/typescript/module/index.d.ts.map +1 -1
- package/build/typescript/module/utils/enableWidgetHotReload.d.ts +23 -0
- package/build/typescript/module/utils/enableWidgetHotReload.d.ts.map +1 -0
- package/expo-plugin/build/cjs/index.js +2 -1
- package/expo-plugin/build/cjs/index.js.map +1 -1
- package/expo-plugin/build/cjs/ios-widget/clientRendered.js +82 -0
- package/expo-plugin/build/cjs/ios-widget/clientRendered.js.map +1 -0
- package/expo-plugin/build/cjs/ios-widget/clientRenderedPrerender.js +118 -0
- package/expo-plugin/build/cjs/ios-widget/clientRenderedPrerender.js.map +1 -0
- package/expo-plugin/build/cjs/ios-widget/files/index.js +6 -0
- package/expo-plugin/build/cjs/ios-widget/files/index.js.map +1 -1
- package/expo-plugin/build/cjs/ios-widget/files/manifest.js +67 -0
- package/expo-plugin/build/cjs/ios-widget/files/manifest.js.map +1 -0
- package/expo-plugin/build/cjs/ios-widget/files/swift.js +149 -12
- package/expo-plugin/build/cjs/ios-widget/files/swift.js.map +1 -1
- package/expo-plugin/build/cjs/ios-widget/index.js +1 -1
- package/expo-plugin/build/cjs/ios-widget/index.js.map +1 -1
- package/expo-plugin/build/cjs/ios-widget/widgetPlist.js +22 -0
- package/expo-plugin/build/cjs/ios-widget/widgetPlist.js.map +1 -1
- package/expo-plugin/build/cjs/ios-widget/xcode/buildPhases.js +88 -0
- package/expo-plugin/build/cjs/ios-widget/xcode/buildPhases.js.map +1 -1
- package/expo-plugin/build/cjs/ios-widget/xcode/index.js +12 -1
- package/expo-plugin/build/cjs/ios-widget/xcode/index.js.map +1 -1
- package/expo-plugin/build/cjs/validation.js +7 -4
- package/expo-plugin/build/cjs/validation.js.map +1 -1
- package/expo-plugin/build/esm/index.js +2 -1
- package/expo-plugin/build/esm/index.js.map +1 -1
- package/expo-plugin/build/esm/ios-widget/clientRendered.js +46 -0
- package/expo-plugin/build/esm/ios-widget/clientRendered.js.map +1 -0
- package/expo-plugin/build/esm/ios-widget/clientRenderedPrerender.js +82 -0
- package/expo-plugin/build/esm/ios-widget/clientRenderedPrerender.js.map +1 -0
- package/expo-plugin/build/esm/ios-widget/files/index.js +6 -0
- package/expo-plugin/build/esm/ios-widget/files/index.js.map +1 -1
- package/expo-plugin/build/esm/ios-widget/files/manifest.js +30 -0
- package/expo-plugin/build/esm/ios-widget/files/manifest.js.map +1 -0
- package/expo-plugin/build/esm/ios-widget/files/swift.js +149 -12
- package/expo-plugin/build/esm/ios-widget/files/swift.js.map +1 -1
- package/expo-plugin/build/esm/ios-widget/index.js +1 -1
- package/expo-plugin/build/esm/ios-widget/index.js.map +1 -1
- package/expo-plugin/build/esm/ios-widget/widgetPlist.js +22 -0
- package/expo-plugin/build/esm/ios-widget/widgetPlist.js.map +1 -1
- package/expo-plugin/build/esm/ios-widget/xcode/buildPhases.js +87 -0
- package/expo-plugin/build/esm/ios-widget/xcode/buildPhases.js.map +1 -1
- package/expo-plugin/build/esm/ios-widget/xcode/index.js +13 -2
- package/expo-plugin/build/esm/ios-widget/xcode/index.js.map +1 -1
- package/expo-plugin/build/esm/validation.js +8 -5
- package/expo-plugin/build/esm/validation.js.map +1 -1
- package/expo-plugin/build/types/index.d.ts.map +1 -1
- package/expo-plugin/build/types/ios-widget/clientRendered.d.ts +24 -0
- package/expo-plugin/build/types/ios-widget/clientRendered.d.ts.map +1 -0
- package/expo-plugin/build/types/ios-widget/clientRenderedPrerender.d.ts +9 -0
- package/expo-plugin/build/types/ios-widget/clientRenderedPrerender.d.ts.map +1 -0
- package/expo-plugin/build/types/ios-widget/files/index.d.ts.map +1 -1
- package/expo-plugin/build/types/ios-widget/files/manifest.d.ts +9 -0
- package/expo-plugin/build/types/ios-widget/files/manifest.d.ts.map +1 -0
- package/expo-plugin/build/types/ios-widget/files/swift.d.ts +6 -0
- package/expo-plugin/build/types/ios-widget/files/swift.d.ts.map +1 -1
- package/expo-plugin/build/types/ios-widget/widgetPlist.d.ts.map +1 -1
- package/expo-plugin/build/types/ios-widget/xcode/buildPhases.d.ts +5 -0
- package/expo-plugin/build/types/ios-widget/xcode/buildPhases.d.ts.map +1 -1
- package/expo-plugin/build/types/ios-widget/xcode/index.d.ts +2 -0
- package/expo-plugin/build/types/ios-widget/xcode/index.d.ts.map +1 -1
- package/expo-plugin/build/types/types.d.ts +30 -2
- package/expo-plugin/build/types/types.d.ts.map +1 -1
- package/expo-plugin/build/types/validation.d.ts +2 -2
- package/expo-plugin/build/types/validation.d.ts.map +1 -1
- package/expo-plugin/src/index.ts +3 -2
- package/expo-plugin/src/ios-widget/clientRendered.ts +88 -0
- package/expo-plugin/src/ios-widget/clientRenderedPrerender.ts +103 -0
- package/expo-plugin/src/ios-widget/files/index.ts +7 -0
- package/expo-plugin/src/ios-widget/files/manifest.ts +47 -0
- package/expo-plugin/src/ios-widget/files/swift.ts +166 -15
- package/expo-plugin/src/ios-widget/index.ts +1 -1
- package/expo-plugin/src/ios-widget/widgetPlist.ts +22 -0
- package/expo-plugin/src/ios-widget/xcode/buildPhases.ts +93 -0
- package/expo-plugin/src/ios-widget/xcode/index.ts +19 -2
- package/expo-plugin/src/types.ts +32 -2
- package/expo-plugin/src/validation.ts +14 -5
- package/ios/app/VoltraModuleImpl.swift +26 -1
- package/ios/shared/VoltraConstants.swift +4 -0
- package/ios/shared/VoltraJSRenderer.swift +201 -0
- package/ios/shared/VoltraWidgetDefaults.swift +14 -0
- package/ios/target/VoltraClientWidgetRuntime.swift +379 -0
- package/package.json +5 -16
- package/src/index.ts +1 -0
- package/src/utils/enableWidgetHotReload.ts +39 -0
|
@@ -1,5 +1,92 @@
|
|
|
1
1
|
import * as util from 'util';
|
|
2
2
|
const pbxFile = require('xcode/lib/pbxFile');
|
|
3
|
+
const WIDGET_BUNDLE_PHASE_NAME = 'Bundle Voltra Dynamic Widgets';
|
|
4
|
+
// Release-only build phase that bakes each Dynamic Widget's production JS bundle into the
|
|
5
|
+
// extension's resources. Debug builds fetch from Metro (and hot-reload), so this no-ops there. Runs
|
|
6
|
+
// the project's widget bundler with the extension's resources dir as the output, so each
|
|
7
|
+
// voltra-widget-<id>.bundle lands in the .appex (Bundle.main) where the runtime's release loader
|
|
8
|
+
// reads it. SRCROOT is the ios/ dir; the project root is one level up, matching how Expo's main
|
|
9
|
+
// "Bundle React Native code and images" phase resolves things.
|
|
10
|
+
const WIDGET_BUNDLE_SHELL_SCRIPT = `if [[ "$CONFIGURATION" == *Debug* ]]; then
|
|
11
|
+
echo "Voltra: Debug build — Dynamic Widgets load from Metro, skipping bundling"
|
|
12
|
+
exit 0
|
|
13
|
+
fi
|
|
14
|
+
|
|
15
|
+
if [[ -f "$SRCROOT/.xcode.env" ]]; then
|
|
16
|
+
source "$SRCROOT/.xcode.env"
|
|
17
|
+
fi
|
|
18
|
+
if [[ -f "$SRCROOT/.xcode.env.local" ]]; then
|
|
19
|
+
source "$SRCROOT/.xcode.env.local"
|
|
20
|
+
fi
|
|
21
|
+
|
|
22
|
+
export PROJECT_ROOT="\${PROJECT_ROOT:-$SRCROOT/..}"
|
|
23
|
+
NODE_BINARY="\${NODE_BINARY:-node}"
|
|
24
|
+
|
|
25
|
+
BUNDLER="$("$NODE_BINARY" - "$PROJECT_ROOT" <<'NODE'
|
|
26
|
+
const { createRequire } = require('node:module')
|
|
27
|
+
const path = require('node:path')
|
|
28
|
+
|
|
29
|
+
const projectRoot = process.argv[2]
|
|
30
|
+
const requireFromProject = createRequire(path.join(projectRoot, 'package.json'))
|
|
31
|
+
|
|
32
|
+
try {
|
|
33
|
+
const resolved = requireFromProject.resolve('@use-voltra/metro/bundle-widgets')
|
|
34
|
+
process.stdout.write(resolved)
|
|
35
|
+
} catch (error) {
|
|
36
|
+
console.error(
|
|
37
|
+
'error: Voltra widget bundler could not resolve @use-voltra/metro from ' +
|
|
38
|
+
projectRoot +
|
|
39
|
+
'. Install @use-voltra/metro in the app project so release widgets can be baked.'
|
|
40
|
+
)
|
|
41
|
+
console.error(error && error.message ? error.message : String(error))
|
|
42
|
+
process.exit(1)
|
|
43
|
+
}
|
|
44
|
+
NODE
|
|
45
|
+
)"
|
|
46
|
+
if [[ -z "$BUNDLER" ]]; then
|
|
47
|
+
echo "Voltra: resolver returned an empty string for @use-voltra/metro/bundle-widgets" >&2
|
|
48
|
+
exit 1
|
|
49
|
+
fi
|
|
50
|
+
|
|
51
|
+
echo "Voltra: widget bundler resolved to $BUNDLER"
|
|
52
|
+
"$NODE_BINARY" "$BUNDLER" --out-dir "$TARGET_BUILD_DIR/$UNLOCALIZED_RESOURCES_FOLDER_PATH" --platform ios --project-root "$PROJECT_ROOT"
|
|
53
|
+
`;
|
|
54
|
+
/**
|
|
55
|
+
* Adds (idempotently) the release-only shell-script phase that bakes Dynamic Widget
|
|
56
|
+
* bundles into the extension. Safe to call on every prebuild; only added when absent.
|
|
57
|
+
*/
|
|
58
|
+
export function ensureWidgetBundleScriptPhase(xcodeProject, targetUuid) {
|
|
59
|
+
const nativeTargets = xcodeProject.pbxNativeTargetSection();
|
|
60
|
+
const target = nativeTargets[targetUuid];
|
|
61
|
+
if (!target) {
|
|
62
|
+
return;
|
|
63
|
+
}
|
|
64
|
+
if (!target.buildPhases) {
|
|
65
|
+
target.buildPhases = [];
|
|
66
|
+
}
|
|
67
|
+
const shellPhases = xcodeProject.hash.project.objects.PBXShellScriptBuildPhase || {};
|
|
68
|
+
const quotedName = `"${WIDGET_BUNDLE_PHASE_NAME}"`;
|
|
69
|
+
const alreadyPresent = target.buildPhases.some((entry) => shellPhases[entry.value]?.name === quotedName);
|
|
70
|
+
if (alreadyPresent) {
|
|
71
|
+
return;
|
|
72
|
+
}
|
|
73
|
+
xcodeProject.addBuildPhase([], 'PBXShellScriptBuildPhase', WIDGET_BUNDLE_PHASE_NAME, targetUuid, {
|
|
74
|
+
shellPath: '/bin/sh',
|
|
75
|
+
shellScript: WIDGET_BUNDLE_SHELL_SCRIPT,
|
|
76
|
+
});
|
|
77
|
+
// The phase intentionally re-bakes on every release build (it can't statically enumerate every
|
|
78
|
+
// widget source as an input). Mark it always-out-of-date so Xcode doesn't warn about the missing
|
|
79
|
+
// input/output dependencies.
|
|
80
|
+
const shellPhasesAfter = xcodeProject.hash.project.objects.PBXShellScriptBuildPhase || {};
|
|
81
|
+
for (const key of Object.keys(shellPhasesAfter)) {
|
|
82
|
+
if (/_comment$/.test(key)) {
|
|
83
|
+
continue;
|
|
84
|
+
}
|
|
85
|
+
if (shellPhasesAfter[key]?.name === quotedName) {
|
|
86
|
+
shellPhasesAfter[key].alwaysOutOfDate = 1;
|
|
87
|
+
}
|
|
88
|
+
}
|
|
89
|
+
}
|
|
3
90
|
/**
|
|
4
91
|
* Adds all required build phases for the widget extension target.
|
|
5
92
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"buildPhases.js","sourceRoot":"","sources":["../../../../src/ios-widget/xcode/buildPhases.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"buildPhases.js","sourceRoot":"","sources":["../../../../src/ios-widget/xcode/buildPhases.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,7 +1,8 @@
|
|
|
1
1
|
import { withXcodeProject } from '@expo/config-plugins';
|
|
2
2
|
import * as path from 'path';
|
|
3
3
|
import { getIOSWidgetExtensionFiles } from '../../utils/fileDiscovery';
|
|
4
|
-
import {
|
|
4
|
+
import { detectClientRenderedWidgets } from '../clientRendered';
|
|
5
|
+
import { addBuildPhases, ensureBuildPhases, ensureWidgetBundleScriptPhase } from './buildPhases';
|
|
5
6
|
import { addXCConfigurationList, ensureXCConfigurationList } from './configurationList';
|
|
6
7
|
import { addPbxGroup, ensurePbxGroup } from './groups';
|
|
7
8
|
import { getMainAppTargetSettings } from './mainAppSettings';
|
|
@@ -20,13 +21,17 @@ import { configureTarget, ensureTargetAttributes, ensureTargetDependency } from
|
|
|
20
21
|
* This should run after generateWidgetExtensionFiles so the files exist.
|
|
21
22
|
*/
|
|
22
23
|
export const configureXcodeProject = (config, props) => {
|
|
23
|
-
const { targetName, bundleIdentifier, deploymentTarget } = props;
|
|
24
|
+
const { targetName, bundleIdentifier, deploymentTarget, widgets } = props;
|
|
24
25
|
return withXcodeProject(config, (config) => {
|
|
25
26
|
if (config.modRequest.introspect) {
|
|
26
27
|
return config;
|
|
27
28
|
}
|
|
28
29
|
const xcodeProject = config.modResults;
|
|
29
30
|
const groupName = 'Embed Foundation Extensions';
|
|
31
|
+
// The release widget-bundling phase is only needed when a widget is a Dynamic Widget (server
|
|
32
|
+
// widgets carry no JS bundle). Detect once so both the create and update paths agree.
|
|
33
|
+
const hasClientRenderedWidgets = !!widgets &&
|
|
34
|
+
detectClientRenderedWidgets(widgets, config.modRequest.projectRoot).some((widget) => widget.clientRendered);
|
|
30
35
|
// Check if target already exists
|
|
31
36
|
const nativeTargets = xcodeProject.pbxNativeTargetSection();
|
|
32
37
|
const existingTargetKey = xcodeProject.findTargetKey(targetName);
|
|
@@ -70,6 +75,9 @@ export const configureXcodeProject = (config, props) => {
|
|
|
70
75
|
widgetFiles,
|
|
71
76
|
mainTargetUuid: xcodeProject.getFirstTarget().uuid,
|
|
72
77
|
});
|
|
78
|
+
if (hasClientRenderedWidgets) {
|
|
79
|
+
ensureWidgetBundleScriptPhase(xcodeProject, existingTargetKey);
|
|
80
|
+
}
|
|
73
81
|
ensurePbxGroup(xcodeProject, {
|
|
74
82
|
targetName,
|
|
75
83
|
widgetFiles,
|
|
@@ -107,6 +115,9 @@ export const configureXcodeProject = (config, props) => {
|
|
|
107
115
|
productFile,
|
|
108
116
|
widgetFiles,
|
|
109
117
|
});
|
|
118
|
+
if (hasClientRenderedWidgets) {
|
|
119
|
+
ensureWidgetBundleScriptPhase(xcodeProject, targetUuid);
|
|
120
|
+
}
|
|
110
121
|
// Add PBX group
|
|
111
122
|
addPbxGroup(xcodeProject, {
|
|
112
123
|
targetName,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/ios-widget/xcode/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAgB,gBAAgB,EAAE,MAAM,sBAAsB,CAAA;AACrE,OAAO,KAAK,IAAI,MAAM,MAAM,CAAA;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/ios-widget/xcode/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { validateHomeScreenWidgetId, validateInitialStatePath, validateWidgetLabel } from '@use-voltra/expo-plugin';
|
|
1
|
+
import { validateHomeScreenWidgetId, validateInitialStatePath, validateWidgetEntry, validateWidgetLabel, } from '@use-voltra/expo-plugin';
|
|
2
2
|
const VALID_FAMILIES = new Set([
|
|
3
3
|
'systemSmall',
|
|
4
4
|
'systemMedium',
|
|
@@ -8,11 +8,14 @@ const VALID_FAMILIES = new Set([
|
|
|
8
8
|
'accessoryRectangular',
|
|
9
9
|
'accessoryInline',
|
|
10
10
|
]);
|
|
11
|
-
export function validateIOSWidgetConfig(widget) {
|
|
11
|
+
export function validateIOSWidgetConfig(widget, projectRoot) {
|
|
12
12
|
validateHomeScreenWidgetId(widget.id);
|
|
13
13
|
validateWidgetLabel(widget.displayName, widget.id, 'displayName');
|
|
14
14
|
validateWidgetLabel(widget.description, widget.id, 'description');
|
|
15
|
-
validateInitialStatePath(widget.initialStatePath, widget.id);
|
|
15
|
+
validateInitialStatePath(widget.initialStatePath, widget.id, projectRoot);
|
|
16
|
+
if (widget.entry !== undefined) {
|
|
17
|
+
validateWidgetEntry(widget.entry, widget.id, projectRoot);
|
|
18
|
+
}
|
|
16
19
|
if (widget.supportedFamilies) {
|
|
17
20
|
if (!Array.isArray(widget.supportedFamilies)) {
|
|
18
21
|
throw new Error(`Widget '${widget.id}': supportedFamilies must be an array`);
|
|
@@ -25,7 +28,7 @@ export function validateIOSWidgetConfig(widget) {
|
|
|
25
28
|
}
|
|
26
29
|
}
|
|
27
30
|
}
|
|
28
|
-
export function validateIOSConfigPluginProps(props) {
|
|
31
|
+
export function validateIOSConfigPluginProps(props, projectRoot) {
|
|
29
32
|
if (props.groupIdentifier !== undefined) {
|
|
30
33
|
if (typeof props.groupIdentifier !== 'string') {
|
|
31
34
|
throw new Error('groupIdentifier must be a string');
|
|
@@ -40,7 +43,7 @@ export function validateIOSConfigPluginProps(props) {
|
|
|
40
43
|
}
|
|
41
44
|
const seenIds = new Set();
|
|
42
45
|
for (const widget of props.widgets) {
|
|
43
|
-
validateIOSWidgetConfig(widget);
|
|
46
|
+
validateIOSWidgetConfig(widget, projectRoot);
|
|
44
47
|
if (seenIds.has(widget.id)) {
|
|
45
48
|
throw new Error(`Duplicate widget ID: '${widget.id}'`);
|
|
46
49
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"validation.js","sourceRoot":"","sources":["../../src/validation.ts"],"names":[],"mappings":"AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"validation.js","sourceRoot":"","sources":["../../src/validation.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,0BAA0B,EAC1B,wBAAwB,EACxB,mBAAmB,EACnB,mBAAmB,GACpB,MAAM,yBAAyB,CAAA;AAIhC,MAAM,cAAc,GAAyB,IAAI,GAAG,CAAC;IACnD,aAAa;IACb,cAAc;IACd,aAAa;IACb,kBAAkB;IAClB,mBAAmB;IACnB,sBAAsB;IACtB,iBAAiB;CAClB,CAAC,CAAA;AAEF,MAAM,UAAU,uBAAuB,CAAC,MAAuB,EAAE,WAAoB;IACnF,0BAA0B,CAAC,MAAM,CAAC,EAAE,CAAC,CAAA;IACrC,mBAAmB,CAAC,MAAM,CAAC,WAAW,EAAE,MAAM,CAAC,EAAE,EAAE,aAAa,CAAC,CAAA;IACjE,mBAAmB,CAAC,MAAM,CAAC,WAAW,EAAE,MAAM,CAAC,EAAE,EAAE,aAAa,CAAC,CAAA;IACjE,wBAAwB,CAAC,MAAM,CAAC,gBAAgB,EAAE,MAAM,CAAC,EAAE,EAAE,WAAW,CAAC,CAAA;IAEzE,IAAI,MAAM,CAAC,KAAK,KAAK,SAAS,EAAE,CAAC;QAC/B,mBAAmB,CAAC,MAAM,CAAC,KAAK,EAAE,MAAM,CAAC,EAAE,EAAE,WAAW,CAAC,CAAA;IAC3D,CAAC;IAED,IAAI,MAAM,CAAC,iBAAiB,EAAE,CAAC;QAC7B,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,iBAAiB,CAAC,EAAE,CAAC;YAC7C,MAAM,IAAI,KAAK,CAAC,WAAW,MAAM,CAAC,EAAE,uCAAuC,CAAC,CAAA;QAC9E,CAAC;QAED,KAAK,MAAM,MAAM,IAAI,MAAM,CAAC,iBAAiB,EAAE,CAAC;YAC9C,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC;gBAChC,MAAM,IAAI,KAAK,CACb,WAAW,MAAM,CAAC,EAAE,6BAA6B,MAAM,KAAK;oBAC1D,uBAAuB,KAAK,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CACjE,CAAA;YACH,CAAC;QACH,CAAC;IACH,CAAC;AACH,CAAC;AAED,MAAM,UAAU,4BAA4B,CAAC,KAA2B,EAAE,WAAoB;IAC5F,IAAI,KAAK,CAAC,eAAe,KAAK,SAAS,EAAE,CAAC;QACxC,IAAI,OAAO,KAAK,CAAC,eAAe,KAAK,QAAQ,EAAE,CAAC;YAC9C,MAAM,IAAI,KAAK,CAAC,kCAAkC,CAAC,CAAA;QACrD,CAAC;QAED,IAAI,CAAC,KAAK,CAAC,eAAe,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC;YAChD,MAAM,IAAI,KAAK,CAAC,oBAAoB,KAAK,CAAC,eAAe,4BAA4B,CAAC,CAAA;QACxF,CAAC;IACH,CAAC;IAED,IAAI,KAAK,CAAC,OAAO,KAAK,SAAS,EAAE,CAAC;QAChC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,EAAE,CAAC;YAClC,MAAM,IAAI,KAAK,CAAC,0BAA0B,CAAC,CAAA;QAC7C,CAAC;QAED,MAAM,OAAO,GAAG,IAAI,GAAG,EAAU,CAAA;QACjC,KAAK,MAAM,MAAM,IAAI,KAAK,CAAC,OAAO,EAAE,CAAC;YACnC,uBAAuB,CAAC,MAAM,EAAE,WAAW,CAAC,CAAA;YAE5C,IAAI,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,EAAE,CAAC;gBAC3B,MAAM,IAAI,KAAK,CAAC,yBAAyB,MAAM,CAAC,EAAE,GAAG,CAAC,CAAA;YACxD,CAAC;YACD,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,CAAA;QACxB,CAAC;IACH,CAAC;AACH,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,SAAS,CAAA;AAIpD;;;;GAIG;AACH,QAAA,MAAM,aAAa,EAAE,qBA6CpB,CAAA;AAED,eAAe,aAAa,CAAA;AAE5B,YAAY,EACV,oBAAoB,EACpB,qBAAqB,EACrB,eAAe,EACf,uBAAuB,EACvB,6BAA6B,EAC7B,eAAe,EACf,2BAA2B,EAC3B,qBAAqB,GACtB,MAAM,SAAS,CAAA"}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import type { IOSWidgetConfig } from '../types';
|
|
2
|
+
/**
|
|
3
|
+
* Dynamic Widget detection.
|
|
4
|
+
*
|
|
5
|
+
* Dynamic Widgets are detected from the module referenced by `entry`.
|
|
6
|
+
* A widget is treated as dynamic when its entry module default-exports a function or
|
|
7
|
+
* component. The widget id is independent from the exported symbol name.
|
|
8
|
+
*/
|
|
9
|
+
/**
|
|
10
|
+
* Widget config augmented with the prebuild-time derived rendering mode.
|
|
11
|
+
*
|
|
12
|
+
* `clientRendered: false` is the existing server-rendered path.
|
|
13
|
+
* `clientRendered: true` adds `clientSourcePath` (absolute path to the Dynamic Widget entry,
|
|
14
|
+
* used by the prerender step and by the generated Swift Provider's Metro URL).
|
|
15
|
+
*/
|
|
16
|
+
export type DetectedIOSWidget = (IOSWidgetConfig & {
|
|
17
|
+
clientRendered: false;
|
|
18
|
+
}) | (IOSWidgetConfig & {
|
|
19
|
+
clientRendered: true;
|
|
20
|
+
clientSourcePath: string;
|
|
21
|
+
});
|
|
22
|
+
/** Inspect every widget once and tag entry-backed widgets as Dynamic Widgets. */
|
|
23
|
+
export declare function detectClientRenderedWidgets(widgets: IOSWidgetConfig[], projectRoot: string): DetectedIOSWidget[];
|
|
24
|
+
//# sourceMappingURL=clientRendered.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"clientRendered.d.ts","sourceRoot":"","sources":["../../../src/ios-widget/clientRendered.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,UAAU,CAAA;AAE/C;;;;;;GAMG;AAEH;;;;;;GAMG;AACH,MAAM,MAAM,iBAAiB,GACzB,CAAC,eAAe,GAAG;IAAE,cAAc,EAAE,KAAK,CAAA;CAAE,CAAC,GAC7C,CAAC,eAAe,GAAG;IAAE,cAAc,EAAE,IAAI,CAAC;IAAC,gBAAgB,EAAE,MAAM,CAAA;CAAE,CAAC,CAAA;AAM1E,iFAAiF;AACjF,wBAAgB,2BAA2B,CAAC,OAAO,EAAE,eAAe,EAAE,EAAE,WAAW,EAAE,MAAM,GAAG,iBAAiB,EAAE,CAgBhH"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { type PrerenderedWidgetStates } from '@use-voltra/expo-plugin';
|
|
2
|
+
import type { DetectedIOSWidget } from './clientRendered';
|
|
3
|
+
/**
|
|
4
|
+
* Prerender placeholder JSON for every Dynamic Widget. Returns a map shaped
|
|
5
|
+
* identically to `prerenderWidgetState`'s output so the two can be merged before
|
|
6
|
+
* generating `VoltraWidgetInitialStates.swift`.
|
|
7
|
+
*/
|
|
8
|
+
export declare function prerenderClientRenderedWidgets(widgets: DetectedIOSWidget[], projectRoot: string): Promise<PrerenderedWidgetStates>;
|
|
9
|
+
//# sourceMappingURL=clientRenderedPrerender.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"clientRenderedPrerender.d.ts","sourceRoot":"","sources":["../../../src/ios-widget/clientRenderedPrerender.ts"],"names":[],"mappings":"AAAA,OAAO,EAAuC,KAAK,uBAAuB,EAAE,MAAM,yBAAyB,CAAA;AAE3G,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAA;AAiDzD;;;;GAIG;AACH,wBAAsB,8BAA8B,CAClD,OAAO,EAAE,iBAAiB,EAAE,EAC5B,WAAW,EAAE,MAAM,GAClB,OAAO,CAAC,uBAAuB,CAAC,CA2ClC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/ios-widget/files/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAoB,MAAM,sBAAsB,CAAA;AAIrE,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,aAAa,CAAA;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/ios-widget/files/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAoB,MAAM,sBAAsB,CAAA;AAIrE,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,aAAa,CAAA;AAOlD,MAAM,WAAW,iCAAiC;IAChD,UAAU,EAAE,MAAM,CAAA;IAClB,OAAO,CAAC,EAAE,eAAe,EAAE,CAAA;IAC3B,eAAe,CAAC,EAAE,MAAM,CAAA;IACxB,aAAa,CAAC,EAAE,MAAM,CAAA;IACtB,OAAO,EAAE,MAAM,CAAA;IACf,WAAW,EAAE,MAAM,CAAA;CACpB;AAED;;;;;;;;;;;GAWG;AACH,eAAO,MAAM,4BAA4B,EAAE,YAAY,CAAC,iCAAiC,CAgDxF,CAAA"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { type DynamicWidgetManifest } from '@use-voltra/expo-plugin';
|
|
2
|
+
import type { IOSWidgetConfig } from '../../types';
|
|
3
|
+
export interface GenerateIOSDynamicWidgetsManifestOptions {
|
|
4
|
+
projectRoot: string;
|
|
5
|
+
widgets?: IOSWidgetConfig[];
|
|
6
|
+
}
|
|
7
|
+
export declare function createIOSDynamicWidgetsManifest(projectRoot: string, widgets: IOSWidgetConfig[]): DynamicWidgetManifest;
|
|
8
|
+
export declare function generateIOSDynamicWidgetsManifest(options: GenerateIOSDynamicWidgetsManifestOptions): void;
|
|
9
|
+
//# sourceMappingURL=manifest.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"manifest.d.ts","sourceRoot":"","sources":["../../../../src/ios-widget/files/manifest.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,KAAK,qBAAqB,EAA+B,MAAM,yBAAyB,CAAA;AAEjG,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,aAAa,CAAA;AAIlD,MAAM,WAAW,wCAAwC;IACvD,WAAW,EAAE,MAAM,CAAA;IACnB,OAAO,CAAC,EAAE,eAAe,EAAE,CAAA;CAC5B;AAED,wBAAgB,+BAA+B,CAC7C,WAAW,EAAE,MAAM,EACnB,OAAO,EAAE,eAAe,EAAE,GACzB,qBAAqB,CAmBvB;AAED,wBAAgB,iCAAiC,CAAC,OAAO,EAAE,wCAAwC,GAAG,IAAI,CAQzG"}
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { type PrerenderedWidgetStates } from '@use-voltra/expo-plugin';
|
|
2
2
|
import type { IOSWidgetConfig } from '../../types';
|
|
3
|
+
import { type DetectedIOSWidget } from '../clientRendered';
|
|
3
4
|
export interface GenerateSwiftFilesOptions {
|
|
4
5
|
targetPath: string;
|
|
5
6
|
projectRoot: string;
|
|
@@ -13,12 +14,17 @@ export interface GenerateSwiftFilesOptions {
|
|
|
13
14
|
* - VoltraWidgetBundle.swift (widget bundle definition)
|
|
14
15
|
*/
|
|
15
16
|
export declare function generateSwiftFiles(options: GenerateSwiftFilesOptions): Promise<void>;
|
|
17
|
+
/**
|
|
18
|
+
* Generates the VoltraWidgetBundle.swift file content with configured widgets
|
|
19
|
+
*/
|
|
20
|
+
declare function generateWidgetBundleSwift(widgets: DetectedIOSWidget[]): string;
|
|
16
21
|
/**
|
|
17
22
|
* Generates Swift code that bundles pre-rendered widget initial states (per locale when configured).
|
|
18
23
|
*/
|
|
19
24
|
declare function generateInitialStatesSwift(prerenderedStates: PrerenderedWidgetStates): string;
|
|
20
25
|
export declare const __test__: {
|
|
21
26
|
generateInitialStatesSwift: typeof generateInitialStatesSwift;
|
|
27
|
+
generateWidgetBundleSwift: typeof generateWidgetBundleSwift;
|
|
22
28
|
};
|
|
23
29
|
export {};
|
|
24
30
|
//# sourceMappingURL=swift.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"swift.d.ts","sourceRoot":"","sources":["../../../../src/ios-widget/files/swift.ts"],"names":[],"mappings":"AAIA,OAAO,EAKL,KAAK,uBAAuB,EAE7B,MAAM,yBAAyB,CAAA;AAGhC,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,aAAa,CAAA;
|
|
1
|
+
{"version":3,"file":"swift.d.ts","sourceRoot":"","sources":["../../../../src/ios-widget/files/swift.ts"],"names":[],"mappings":"AAIA,OAAO,EAKL,KAAK,uBAAuB,EAE7B,MAAM,yBAAyB,CAAA;AAGhC,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,aAAa,CAAA;AAElD,OAAO,EAA+B,KAAK,iBAAiB,EAAE,MAAM,mBAAmB,CAAA;AAGvF,MAAM,WAAW,yBAAyB;IACxC,UAAU,EAAE,MAAM,CAAA;IAClB,WAAW,EAAE,MAAM,CAAA;IACnB,OAAO,CAAC,EAAE,eAAe,EAAE,CAAA;CAC5B;AAQD;;;;;;GAMG;AACH,wBAAsB,kBAAkB,CAAC,OAAO,EAAE,yBAAyB,GAAG,OAAO,CAAC,IAAI,CAAC,CA8C1F;AAsWD;;GAEG;AACH,iBAAS,yBAAyB,CAAC,OAAO,EAAE,iBAAiB,EAAE,GAAG,MAAM,CA+CvE;AAiCD;;GAEG;AACH,iBAAS,0BAA0B,CAAC,iBAAiB,EAAE,uBAAuB,GAAG,MAAM,CA8CtF;AAiDD,eAAO,MAAM,QAAQ;;;CAGpB,CAAA"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"widgetPlist.d.ts","sourceRoot":"","sources":["../../../src/ios-widget/widgetPlist.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAA+B,MAAM,sBAAsB,CAAA;AAKhF,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,UAAU,CAAA;
|
|
1
|
+
{"version":3,"file":"widgetPlist.d.ts","sourceRoot":"","sources":["../../../src/ios-widget/widgetPlist.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAA+B,MAAM,sBAAsB,CAAA;AAKhF,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,UAAU,CAAA;AAI/C,MAAM,WAAW,0BAA0B;IACzC,UAAU,EAAE,MAAM,CAAA;IAClB,eAAe,CAAC,EAAE,MAAM,CAAA;IACxB,OAAO,CAAC,EAAE,eAAe,EAAE,CAAA;IAC3B,aAAa,CAAC,EAAE,MAAM,CAAA;CACvB;AAED;;;;;;;;;GASG;AACH,eAAO,MAAM,6BAA6B,EAAE,YAAY,CAAC,0BAA0B,CA8G/E,CAAA"}
|
|
@@ -1,5 +1,10 @@
|
|
|
1
1
|
import { XcodeProject } from '@expo/config-plugins';
|
|
2
2
|
import type { IOSWidgetExtensionFiles } from '../../types';
|
|
3
|
+
/**
|
|
4
|
+
* Adds (idempotently) the release-only shell-script phase that bakes Dynamic Widget
|
|
5
|
+
* bundles into the extension. Safe to call on every prebuild; only added when absent.
|
|
6
|
+
*/
|
|
7
|
+
export declare function ensureWidgetBundleScriptPhase(xcodeProject: XcodeProject, targetUuid: string): void;
|
|
3
8
|
export interface AddBuildPhasesOptions {
|
|
4
9
|
targetUuid: string;
|
|
5
10
|
groupName: string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"buildPhases.d.ts","sourceRoot":"","sources":["../../../../src/ios-widget/xcode/buildPhases.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAA;AAGnD,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,aAAa,CAAA;
|
|
1
|
+
{"version":3,"file":"buildPhases.d.ts","sourceRoot":"","sources":["../../../../src/ios-widget/xcode/buildPhases.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAA;AAGnD,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,aAAa,CAAA;AAyD1D;;;GAGG;AACH,wBAAgB,6BAA6B,CAAC,YAAY,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,GAAG,IAAI,CAkClG;AAED,MAAM,WAAW,qBAAqB;IACpC,UAAU,EAAE,MAAM,CAAA;IAClB,SAAS,EAAE,MAAM,CAAA;IACjB,WAAW,EAAE;QACX,IAAI,EAAE,MAAM,CAAA;QACZ,MAAM,CAAC,EAAE,MAAM,CAAA;QACf,QAAQ,EAAE,MAAM,CAAA;QAChB,KAAK,EAAE,MAAM,CAAA;KACd,CAAA;IACD,WAAW,EAAE,uBAAuB,CAAA;CACrC;AAED,MAAM,WAAW,wBAAyB,SAAQ,qBAAqB;IACrE,cAAc,CAAC,EAAE,MAAM,CAAA;CACxB;AAED;;GAEG;AACH,wBAAgB,cAAc,CAAC,YAAY,EAAE,YAAY,EAAE,OAAO,EAAE,qBAAqB,GAAG,IAAI,CAuC/F;AAED;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,YAAY,EAAE,YAAY,EAAE,OAAO,EAAE,wBAAwB,GAAG,IAAI,CAuDrG"}
|
|
@@ -1,8 +1,10 @@
|
|
|
1
1
|
import { ConfigPlugin } from '@expo/config-plugins';
|
|
2
|
+
import type { IOSWidgetConfig } from '../../types';
|
|
2
3
|
export interface ConfigureXcodeProjectProps {
|
|
3
4
|
targetName: string;
|
|
4
5
|
bundleIdentifier: string;
|
|
5
6
|
deploymentTarget: string;
|
|
7
|
+
widgets?: IOSWidgetConfig[];
|
|
6
8
|
}
|
|
7
9
|
/**
|
|
8
10
|
* Plugin step that configures the Xcode project for the widget extension.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/ios-widget/xcode/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAoB,MAAM,sBAAsB,CAAA;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/ios-widget/xcode/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAoB,MAAM,sBAAsB,CAAA;AAGrE,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,aAAa,CAAA;AAUlD,MAAM,WAAW,0BAA0B;IACzC,UAAU,EAAE,MAAM,CAAA;IAClB,gBAAgB,EAAE,MAAM,CAAA;IACxB,gBAAgB,EAAE,MAAM,CAAA;IACxB,OAAO,CAAC,EAAE,eAAe,EAAE,CAAA;CAC5B;AAED;;;;;;;;;;;GAWG;AACH,eAAO,MAAM,qBAAqB,EAAE,YAAY,CAAC,0BAA0B,CAqI1E,CAAA"}
|
|
@@ -1,13 +1,34 @@
|
|
|
1
1
|
import type { ConfigPlugin } from '@expo/config-plugins';
|
|
2
|
-
import type { WidgetInitialStatePath, WidgetLabel } from '@use-voltra/expo-plugin';
|
|
2
|
+
import type { DynamicWidgetEntryConfig, WidgetInitialStatePath, WidgetLabel } from '@use-voltra/expo-plugin';
|
|
3
3
|
/**
|
|
4
4
|
* Supported iOS Home Screen widget size families.
|
|
5
5
|
*/
|
|
6
6
|
export type IOSWidgetFamily = 'systemSmall' | 'systemMedium' | 'systemLarge' | 'systemExtraLarge' | 'accessoryCircular' | 'accessoryRectangular' | 'accessoryInline';
|
|
7
|
+
/**
|
|
8
|
+
* A single user-configurable parameter exposed via AppIntent (the native "Edit Widget" sheet).
|
|
9
|
+
*/
|
|
10
|
+
export interface AppIntentParameter {
|
|
11
|
+
/** Swift property name + the key under `env.configuration`. */
|
|
12
|
+
name: string;
|
|
13
|
+
/** Label shown in the widget configuration sheet. */
|
|
14
|
+
title: string;
|
|
15
|
+
/** Default value used before the user configures the widget (the "from code" default). */
|
|
16
|
+
default?: string;
|
|
17
|
+
}
|
|
18
|
+
/**
|
|
19
|
+
* AppIntent configuration for a user-configurable widget (iOS 17+).
|
|
20
|
+
*/
|
|
21
|
+
export interface IOSWidgetAppIntentConfig {
|
|
22
|
+
/** Parameters the user can edit via "Edit Widget"; surfaced as `env.configuration`. */
|
|
23
|
+
parameters: AppIntentParameter[];
|
|
24
|
+
}
|
|
7
25
|
/**
|
|
8
26
|
* Configuration for a single iOS home screen widget.
|
|
27
|
+
*
|
|
28
|
+
* `entry` is required only for Dynamic Widgets. Widgets without `entry` remain server-rendered /
|
|
29
|
+
* server-updated legacy widgets and are excluded from the Dynamic Widgets manifest.
|
|
9
30
|
*/
|
|
10
|
-
export interface IOSWidgetConfig {
|
|
31
|
+
export interface IOSWidgetConfig extends DynamicWidgetEntryConfig {
|
|
11
32
|
/**
|
|
12
33
|
* Unique identifier for the widget (used as the widget kind and in JS API)
|
|
13
34
|
*/
|
|
@@ -18,6 +39,13 @@ export interface IOSWidgetConfig {
|
|
|
18
39
|
supportedFamilies?: IOSWidgetFamily[];
|
|
19
40
|
initialStatePath?: WidgetInitialStatePath;
|
|
20
41
|
serverUpdate?: IOSWidgetServerUpdateConfig;
|
|
42
|
+
/**
|
|
43
|
+
* AppIntent configuration (iOS 17+). When set on a Dynamic Widget, the plugin generates
|
|
44
|
+
* an `AppIntentConfiguration` so users configure parameters via the native "Edit Widget" sheet;
|
|
45
|
+
* defaults come from `parameters[].default`, and the configured values are passed into the
|
|
46
|
+
* widget's `env.configuration` on each render.
|
|
47
|
+
*/
|
|
48
|
+
appIntent?: IOSWidgetAppIntentConfig;
|
|
21
49
|
}
|
|
22
50
|
/**
|
|
23
51
|
* Server-driven iOS widget updates (WidgetKit background refresh).
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAA;AAExD,OAAO,KAAK,EAAE,sBAAsB,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAA;
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAA;AAExD,OAAO,KAAK,EAAE,wBAAwB,EAAE,sBAAsB,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAA;AAE5G;;GAEG;AACH,MAAM,MAAM,eAAe,GACvB,aAAa,GACb,cAAc,GACd,aAAa,GACb,kBAAkB,GAClB,mBAAmB,GACnB,sBAAsB,GACtB,iBAAiB,CAAA;AAErB;;GAEG;AACH,MAAM,WAAW,kBAAkB;IACjC,+DAA+D;IAC/D,IAAI,EAAE,MAAM,CAAA;IACZ,qDAAqD;IACrD,KAAK,EAAE,MAAM,CAAA;IACb,0FAA0F;IAC1F,OAAO,CAAC,EAAE,MAAM,CAAA;CACjB;AAED;;GAEG;AACH,MAAM,WAAW,wBAAwB;IACvC,uFAAuF;IACvF,UAAU,EAAE,kBAAkB,EAAE,CAAA;CACjC;AAED;;;;;GAKG;AACH,MAAM,WAAW,eAAgB,SAAQ,wBAAwB;IAC/D;;OAEG;IACH,EAAE,EAAE,MAAM,CAAA;IACV,WAAW,EAAE,WAAW,CAAA;IACxB,WAAW,EAAE,WAAW,CAAA;IACxB,8DAA8D;IAC9D,iBAAiB,CAAC,EAAE,eAAe,EAAE,CAAA;IACrC,gBAAgB,CAAC,EAAE,sBAAsB,CAAA;IACzC,YAAY,CAAC,EAAE,2BAA2B,CAAA;IAC1C;;;;;OAKG;IACH,SAAS,CAAC,EAAE,wBAAwB,CAAA;CACrC;AAED;;GAEG;AACH,MAAM,WAAW,2BAA2B;IAC1C,GAAG,EAAE,MAAM,CAAA;IACX,kBAAkB;IAClB,eAAe,CAAC,EAAE,MAAM,CAAA;IACxB,qBAAqB;IACrB,OAAO,CAAC,EAAE,OAAO,CAAA;CAClB;AAED;;GAEG;AACH,MAAM,WAAW,uBAAuB;IACtC,UAAU,EAAE,MAAM,EAAE,CAAA;IACpB,gBAAgB,EAAE,MAAM,EAAE,CAAA;IAC1B,UAAU,EAAE,MAAM,EAAE,CAAA;IACpB,gBAAgB,EAAE,MAAM,EAAE,CAAA;IAC1B,WAAW,EAAE,MAAM,EAAE,CAAA;IACrB,wFAAwF;IACxF,wBAAwB,EAAE,MAAM,EAAE,CAAA;CACnC;AAED;;GAEG;AACH,MAAM,WAAW,oBAAoB;IACnC,uBAAuB,CAAC,EAAE,OAAO,CAAA;IACjC,eAAe,CAAC,EAAE,MAAM,CAAA;IACxB,OAAO,CAAC,EAAE,eAAe,EAAE,CAAA;IAC3B,gBAAgB,CAAC,EAAE,MAAM,CAAA;IACzB,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,KAAK,CAAC,EAAE,MAAM,EAAE,CAAA;IAChB,aAAa,CAAC,EAAE,MAAM,CAAA;CACvB;AAED,MAAM,MAAM,qBAAqB,GAAG,YAAY,CAAC,oBAAoB,GAAG,SAAS,CAAC,CAAA;AAElF,MAAM,WAAW,qBAAqB;IACpC,eAAe,CAAC,EAAE,MAAM,CAAA;IACxB,SAAS,CAAC,EAAE,MAAM,EAAE,CAAA;IACpB,OAAO,CAAC,EAAE,eAAe,EAAE,CAAA;IAC3B,aAAa,CAAC,EAAE,MAAM,CAAA;CACvB;AAED,MAAM,WAAW,6BAA6B;IAC5C,UAAU,EAAE,MAAM,CAAA;IAClB,gBAAgB,EAAE,MAAM,CAAA;IACxB,gBAAgB,EAAE,MAAM,CAAA;IACxB,OAAO,CAAC,EAAE,eAAe,EAAE,CAAA;IAC3B,eAAe,CAAC,EAAE,MAAM,CAAA;IACxB,aAAa,CAAC,EAAE,MAAM,CAAA;IACtB,KAAK,CAAC,EAAE,MAAM,EAAE,CAAA;IAChB,OAAO,EAAE,MAAM,CAAA;IACf,WAAW,EAAE,MAAM,CAAA;CACpB"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
1
|
import type { IOSConfigPluginProps, IOSWidgetConfig } from './types';
|
|
2
|
-
export declare function validateIOSWidgetConfig(widget: IOSWidgetConfig): void;
|
|
3
|
-
export declare function validateIOSConfigPluginProps(props: IOSConfigPluginProps): void;
|
|
2
|
+
export declare function validateIOSWidgetConfig(widget: IOSWidgetConfig, projectRoot?: string): void;
|
|
3
|
+
export declare function validateIOSConfigPluginProps(props: IOSConfigPluginProps, projectRoot?: string): void;
|
|
4
4
|
//# sourceMappingURL=validation.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"validation.d.ts","sourceRoot":"","sources":["../../src/validation.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"validation.d.ts","sourceRoot":"","sources":["../../src/validation.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,oBAAoB,EAAE,eAAe,EAAmB,MAAM,SAAS,CAAA;AAYrF,wBAAgB,uBAAuB,CAAC,MAAM,EAAE,eAAe,EAAE,WAAW,CAAC,EAAE,MAAM,GAAG,IAAI,CAwB3F;AAED,wBAAgB,4BAA4B,CAAC,KAAK,EAAE,oBAAoB,EAAE,WAAW,CAAC,EAAE,MAAM,GAAG,IAAI,CA0BpG"}
|
package/expo-plugin/src/index.ts
CHANGED
|
@@ -3,7 +3,7 @@ import { IOSConfig } from 'expo/config-plugins'
|
|
|
3
3
|
import { IOS } from './constants'
|
|
4
4
|
import { withIOS, withPushNotifications } from './ios'
|
|
5
5
|
import { withIOS as withIOSWidget } from './ios-widget'
|
|
6
|
-
import type {
|
|
6
|
+
import type { VoltraIosConfigPlugin } from './types'
|
|
7
7
|
import { ensureURLScheme } from './utils/urlScheme'
|
|
8
8
|
import { validateIOSConfigPluginProps } from './validation'
|
|
9
9
|
|
|
@@ -13,7 +13,8 @@ import { validateIOSConfigPluginProps } from './validation'
|
|
|
13
13
|
* Configures Live Activities, the widget extension, and optional push-to-start support.
|
|
14
14
|
*/
|
|
15
15
|
const withVoltraIos: VoltraIosConfigPlugin = (config, props = {}) => {
|
|
16
|
-
|
|
16
|
+
const projectRoot = (config as { modRequest?: { projectRoot?: string } }).modRequest?.projectRoot
|
|
17
|
+
validateIOSConfigPluginProps(props, projectRoot)
|
|
17
18
|
|
|
18
19
|
const iosBundleIdentifier = config.ios?.bundleIdentifier
|
|
19
20
|
if (!iosBundleIdentifier) {
|
|
@@ -0,0 +1,88 @@
|
|
|
1
|
+
import * as fs from 'fs'
|
|
2
|
+
import * as path from 'path'
|
|
3
|
+
|
|
4
|
+
import { evaluateWidgetModuleExports } from '@use-voltra/expo-plugin'
|
|
5
|
+
|
|
6
|
+
import type { IOSWidgetConfig } from '../types'
|
|
7
|
+
|
|
8
|
+
/**
|
|
9
|
+
* Dynamic Widget detection.
|
|
10
|
+
*
|
|
11
|
+
* Dynamic Widgets are detected from the module referenced by `entry`.
|
|
12
|
+
* A widget is treated as dynamic when its entry module default-exports a function or
|
|
13
|
+
* component. The widget id is independent from the exported symbol name.
|
|
14
|
+
*/
|
|
15
|
+
|
|
16
|
+
/**
|
|
17
|
+
* Widget config augmented with the prebuild-time derived rendering mode.
|
|
18
|
+
*
|
|
19
|
+
* `clientRendered: false` is the existing server-rendered path.
|
|
20
|
+
* `clientRendered: true` adds `clientSourcePath` (absolute path to the Dynamic Widget entry,
|
|
21
|
+
* used by the prerender step and by the generated Swift Provider's Metro URL).
|
|
22
|
+
*/
|
|
23
|
+
export type DetectedIOSWidget =
|
|
24
|
+
| (IOSWidgetConfig & { clientRendered: false })
|
|
25
|
+
| (IOSWidgetConfig & { clientRendered: true; clientSourcePath: string })
|
|
26
|
+
|
|
27
|
+
// Emit the experimental notice at most once per prebuild process (detection runs from several
|
|
28
|
+
// plugin steps).
|
|
29
|
+
let hasWarnedExperimental = false
|
|
30
|
+
|
|
31
|
+
/** Inspect every widget once and tag entry-backed widgets as Dynamic Widgets. */
|
|
32
|
+
export function detectClientRenderedWidgets(widgets: IOSWidgetConfig[], projectRoot: string): DetectedIOSWidget[] {
|
|
33
|
+
const detected = widgets.map((widget) => detectSingleWidget(widget, projectRoot))
|
|
34
|
+
|
|
35
|
+
if (!hasWarnedExperimental) {
|
|
36
|
+
const clientWidgetIds = detected.filter((widget) => widget.clientRendered).map((widget) => widget.id)
|
|
37
|
+
if (clientWidgetIds.length > 0) {
|
|
38
|
+
hasWarnedExperimental = true
|
|
39
|
+
console.warn(
|
|
40
|
+
`[voltra] Dynamic Widgets are EXPERIMENTAL (${clientWidgetIds.join(', ')}). ` +
|
|
41
|
+
'The widget JSX runs on-device in a separate JS engine; the API and build output may change, ' +
|
|
42
|
+
'and production rendering should be verified on a real device. Use at your own risk.'
|
|
43
|
+
)
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
return detected
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
function detectSingleWidget(widget: IOSWidgetConfig, projectRoot: string): DetectedIOSWidget {
|
|
51
|
+
if (widget.entry === undefined) {
|
|
52
|
+
return {
|
|
53
|
+
...widget,
|
|
54
|
+
clientRendered: false,
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
|
|
58
|
+
const sourcePath = resolveWidgetEntryPath(widget.entry, projectRoot)
|
|
59
|
+
if (!sourcePath || !fs.existsSync(sourcePath)) {
|
|
60
|
+
throw new Error(
|
|
61
|
+
`[voltra] Dynamic Widget "${widget.id}" entry not found at ${path.relative(
|
|
62
|
+
projectRoot,
|
|
63
|
+
sourcePath ?? widget.entry
|
|
64
|
+
)}`
|
|
65
|
+
)
|
|
66
|
+
}
|
|
67
|
+
|
|
68
|
+
const widgetModule = evaluateWidgetModuleExports(projectRoot, sourcePath)
|
|
69
|
+
const widgetFn = widgetModule?.default ?? widgetModule
|
|
70
|
+
if (typeof widgetFn !== 'function') {
|
|
71
|
+
throw new Error(
|
|
72
|
+
`[voltra] Dynamic Widget "${widget.id}" at ${path.relative(
|
|
73
|
+
projectRoot,
|
|
74
|
+
sourcePath
|
|
75
|
+
)} must default-export a function or component.`
|
|
76
|
+
)
|
|
77
|
+
}
|
|
78
|
+
|
|
79
|
+
return {
|
|
80
|
+
...widget,
|
|
81
|
+
clientRendered: true,
|
|
82
|
+
clientSourcePath: sourcePath,
|
|
83
|
+
}
|
|
84
|
+
}
|
|
85
|
+
|
|
86
|
+
function resolveWidgetEntryPath(entry: string, projectRoot: string): string | null {
|
|
87
|
+
return path.resolve(projectRoot, entry)
|
|
88
|
+
}
|