@use-voltra/ios-client 2.0.0 → 2.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (100) hide show
  1. package/README.md +20 -1
  2. package/build/commonjs/index.js +8 -0
  3. package/build/commonjs/index.js.map +1 -1
  4. package/build/commonjs/utils/enableWidgetHotReload.js +39 -0
  5. package/build/commonjs/utils/enableWidgetHotReload.js.map +1 -0
  6. package/build/module/index.js +1 -0
  7. package/build/module/index.js.map +1 -1
  8. package/build/module/utils/enableWidgetHotReload.js +35 -0
  9. package/build/module/utils/enableWidgetHotReload.js.map +1 -0
  10. package/build/typescript/commonjs/index.d.ts +1 -0
  11. package/build/typescript/commonjs/index.d.ts.map +1 -1
  12. package/build/typescript/commonjs/utils/enableWidgetHotReload.d.ts +23 -0
  13. package/build/typescript/commonjs/utils/enableWidgetHotReload.d.ts.map +1 -0
  14. package/build/typescript/module/index.d.ts +1 -0
  15. package/build/typescript/module/index.d.ts.map +1 -1
  16. package/build/typescript/module/utils/enableWidgetHotReload.d.ts +23 -0
  17. package/build/typescript/module/utils/enableWidgetHotReload.d.ts.map +1 -0
  18. package/expo-plugin/build/cjs/index.js +2 -1
  19. package/expo-plugin/build/cjs/index.js.map +1 -1
  20. package/expo-plugin/build/cjs/ios-widget/clientRendered.js +82 -0
  21. package/expo-plugin/build/cjs/ios-widget/clientRendered.js.map +1 -0
  22. package/expo-plugin/build/cjs/ios-widget/clientRenderedPrerender.js +118 -0
  23. package/expo-plugin/build/cjs/ios-widget/clientRenderedPrerender.js.map +1 -0
  24. package/expo-plugin/build/cjs/ios-widget/files/index.js +6 -0
  25. package/expo-plugin/build/cjs/ios-widget/files/index.js.map +1 -1
  26. package/expo-plugin/build/cjs/ios-widget/files/manifest.js +67 -0
  27. package/expo-plugin/build/cjs/ios-widget/files/manifest.js.map +1 -0
  28. package/expo-plugin/build/cjs/ios-widget/files/swift.js +149 -12
  29. package/expo-plugin/build/cjs/ios-widget/files/swift.js.map +1 -1
  30. package/expo-plugin/build/cjs/ios-widget/index.js +1 -1
  31. package/expo-plugin/build/cjs/ios-widget/index.js.map +1 -1
  32. package/expo-plugin/build/cjs/ios-widget/widgetPlist.js +22 -0
  33. package/expo-plugin/build/cjs/ios-widget/widgetPlist.js.map +1 -1
  34. package/expo-plugin/build/cjs/ios-widget/xcode/buildPhases.js +88 -0
  35. package/expo-plugin/build/cjs/ios-widget/xcode/buildPhases.js.map +1 -1
  36. package/expo-plugin/build/cjs/ios-widget/xcode/index.js +12 -1
  37. package/expo-plugin/build/cjs/ios-widget/xcode/index.js.map +1 -1
  38. package/expo-plugin/build/cjs/validation.js +7 -4
  39. package/expo-plugin/build/cjs/validation.js.map +1 -1
  40. package/expo-plugin/build/esm/index.js +2 -1
  41. package/expo-plugin/build/esm/index.js.map +1 -1
  42. package/expo-plugin/build/esm/ios-widget/clientRendered.js +46 -0
  43. package/expo-plugin/build/esm/ios-widget/clientRendered.js.map +1 -0
  44. package/expo-plugin/build/esm/ios-widget/clientRenderedPrerender.js +82 -0
  45. package/expo-plugin/build/esm/ios-widget/clientRenderedPrerender.js.map +1 -0
  46. package/expo-plugin/build/esm/ios-widget/files/index.js +6 -0
  47. package/expo-plugin/build/esm/ios-widget/files/index.js.map +1 -1
  48. package/expo-plugin/build/esm/ios-widget/files/manifest.js +30 -0
  49. package/expo-plugin/build/esm/ios-widget/files/manifest.js.map +1 -0
  50. package/expo-plugin/build/esm/ios-widget/files/swift.js +149 -12
  51. package/expo-plugin/build/esm/ios-widget/files/swift.js.map +1 -1
  52. package/expo-plugin/build/esm/ios-widget/index.js +1 -1
  53. package/expo-plugin/build/esm/ios-widget/index.js.map +1 -1
  54. package/expo-plugin/build/esm/ios-widget/widgetPlist.js +22 -0
  55. package/expo-plugin/build/esm/ios-widget/widgetPlist.js.map +1 -1
  56. package/expo-plugin/build/esm/ios-widget/xcode/buildPhases.js +87 -0
  57. package/expo-plugin/build/esm/ios-widget/xcode/buildPhases.js.map +1 -1
  58. package/expo-plugin/build/esm/ios-widget/xcode/index.js +13 -2
  59. package/expo-plugin/build/esm/ios-widget/xcode/index.js.map +1 -1
  60. package/expo-plugin/build/esm/validation.js +8 -5
  61. package/expo-plugin/build/esm/validation.js.map +1 -1
  62. package/expo-plugin/build/types/index.d.ts.map +1 -1
  63. package/expo-plugin/build/types/ios-widget/clientRendered.d.ts +24 -0
  64. package/expo-plugin/build/types/ios-widget/clientRendered.d.ts.map +1 -0
  65. package/expo-plugin/build/types/ios-widget/clientRenderedPrerender.d.ts +9 -0
  66. package/expo-plugin/build/types/ios-widget/clientRenderedPrerender.d.ts.map +1 -0
  67. package/expo-plugin/build/types/ios-widget/files/index.d.ts.map +1 -1
  68. package/expo-plugin/build/types/ios-widget/files/manifest.d.ts +9 -0
  69. package/expo-plugin/build/types/ios-widget/files/manifest.d.ts.map +1 -0
  70. package/expo-plugin/build/types/ios-widget/files/swift.d.ts +6 -0
  71. package/expo-plugin/build/types/ios-widget/files/swift.d.ts.map +1 -1
  72. package/expo-plugin/build/types/ios-widget/widgetPlist.d.ts.map +1 -1
  73. package/expo-plugin/build/types/ios-widget/xcode/buildPhases.d.ts +5 -0
  74. package/expo-plugin/build/types/ios-widget/xcode/buildPhases.d.ts.map +1 -1
  75. package/expo-plugin/build/types/ios-widget/xcode/index.d.ts +2 -0
  76. package/expo-plugin/build/types/ios-widget/xcode/index.d.ts.map +1 -1
  77. package/expo-plugin/build/types/types.d.ts +30 -2
  78. package/expo-plugin/build/types/types.d.ts.map +1 -1
  79. package/expo-plugin/build/types/validation.d.ts +2 -2
  80. package/expo-plugin/build/types/validation.d.ts.map +1 -1
  81. package/expo-plugin/src/index.ts +3 -2
  82. package/expo-plugin/src/ios-widget/clientRendered.ts +88 -0
  83. package/expo-plugin/src/ios-widget/clientRenderedPrerender.ts +103 -0
  84. package/expo-plugin/src/ios-widget/files/index.ts +7 -0
  85. package/expo-plugin/src/ios-widget/files/manifest.ts +47 -0
  86. package/expo-plugin/src/ios-widget/files/swift.ts +166 -15
  87. package/expo-plugin/src/ios-widget/index.ts +1 -1
  88. package/expo-plugin/src/ios-widget/widgetPlist.ts +22 -0
  89. package/expo-plugin/src/ios-widget/xcode/buildPhases.ts +93 -0
  90. package/expo-plugin/src/ios-widget/xcode/index.ts +19 -2
  91. package/expo-plugin/src/types.ts +32 -2
  92. package/expo-plugin/src/validation.ts +14 -5
  93. package/ios/app/VoltraModuleImpl.swift +26 -1
  94. package/ios/shared/VoltraConstants.swift +4 -0
  95. package/ios/shared/VoltraJSRenderer.swift +201 -0
  96. package/ios/shared/VoltraWidgetDefaults.swift +14 -0
  97. package/ios/target/VoltraClientWidgetRuntime.swift +379 -0
  98. package/package.json +5 -16
  99. package/src/index.ts +1 -0
  100. package/src/utils/enableWidgetHotReload.ts +39 -0
@@ -0,0 +1,46 @@
1
+ import * as fs from 'fs';
2
+ import * as path from 'path';
3
+ import { evaluateWidgetModuleExports } from '@use-voltra/expo-plugin';
4
+ // Emit the experimental notice at most once per prebuild process (detection runs from several
5
+ // plugin steps).
6
+ let hasWarnedExperimental = false;
7
+ /** Inspect every widget once and tag entry-backed widgets as Dynamic Widgets. */
8
+ export function detectClientRenderedWidgets(widgets, projectRoot) {
9
+ const detected = widgets.map((widget) => detectSingleWidget(widget, projectRoot));
10
+ if (!hasWarnedExperimental) {
11
+ const clientWidgetIds = detected.filter((widget) => widget.clientRendered).map((widget) => widget.id);
12
+ if (clientWidgetIds.length > 0) {
13
+ hasWarnedExperimental = true;
14
+ console.warn(`[voltra] Dynamic Widgets are EXPERIMENTAL (${clientWidgetIds.join(', ')}). ` +
15
+ 'The widget JSX runs on-device in a separate JS engine; the API and build output may change, ' +
16
+ 'and production rendering should be verified on a real device. Use at your own risk.');
17
+ }
18
+ }
19
+ return detected;
20
+ }
21
+ function detectSingleWidget(widget, projectRoot) {
22
+ if (widget.entry === undefined) {
23
+ return {
24
+ ...widget,
25
+ clientRendered: false,
26
+ };
27
+ }
28
+ const sourcePath = resolveWidgetEntryPath(widget.entry, projectRoot);
29
+ if (!sourcePath || !fs.existsSync(sourcePath)) {
30
+ throw new Error(`[voltra] Dynamic Widget "${widget.id}" entry not found at ${path.relative(projectRoot, sourcePath ?? widget.entry)}`);
31
+ }
32
+ const widgetModule = evaluateWidgetModuleExports(projectRoot, sourcePath);
33
+ const widgetFn = widgetModule?.default ?? widgetModule;
34
+ if (typeof widgetFn !== 'function') {
35
+ throw new Error(`[voltra] Dynamic Widget "${widget.id}" at ${path.relative(projectRoot, sourcePath)} must default-export a function or component.`);
36
+ }
37
+ return {
38
+ ...widget,
39
+ clientRendered: true,
40
+ clientSourcePath: sourcePath,
41
+ };
42
+ }
43
+ function resolveWidgetEntryPath(entry, projectRoot) {
44
+ return path.resolve(projectRoot, entry);
45
+ }
46
+ //# sourceMappingURL=clientRendered.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"clientRendered.js","sourceRoot":"","sources":["../../../src/ios-widget/clientRendered.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,IAAI,CAAA;AACxB,OAAO,KAAK,IAAI,MAAM,MAAM,CAAA;AAE5B,OAAO,EAAE,2BAA2B,EAAE,MAAM,yBAAyB,CAAA;AAuBrE,8FAA8F;AAC9F,iBAAiB;AACjB,IAAI,qBAAqB,GAAG,KAAK,CAAA;AAEjC,iFAAiF;AACjF,MAAM,UAAU,2BAA2B,CAAC,OAA0B,EAAE,WAAmB;IACzF,MAAM,QAAQ,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,kBAAkB,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC,CAAA;IAEjF,IAAI,CAAC,qBAAqB,EAAE,CAAC;QAC3B,MAAM,eAAe,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,cAAc,CAAC,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,EAAE,CAAC,CAAA;QACrG,IAAI,eAAe,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC/B,qBAAqB,GAAG,IAAI,CAAA;YAC5B,OAAO,CAAC,IAAI,CACV,8CAA8C,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK;gBAC3E,8FAA8F;gBAC9F,qFAAqF,CACxF,CAAA;QACH,CAAC;IACH,CAAC;IAED,OAAO,QAAQ,CAAA;AACjB,CAAC;AAED,SAAS,kBAAkB,CAAC,MAAuB,EAAE,WAAmB;IACtE,IAAI,MAAM,CAAC,KAAK,KAAK,SAAS,EAAE,CAAC;QAC/B,OAAO;YACL,GAAG,MAAM;YACT,cAAc,EAAE,KAAK;SACtB,CAAA;IACH,CAAC;IAED,MAAM,UAAU,GAAG,sBAAsB,CAAC,MAAM,CAAC,KAAK,EAAE,WAAW,CAAC,CAAA;IACpE,IAAI,CAAC,UAAU,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,UAAU,CAAC,EAAE,CAAC;QAC9C,MAAM,IAAI,KAAK,CACb,4BAA4B,MAAM,CAAC,EAAE,wBAAwB,IAAI,CAAC,QAAQ,CACxE,WAAW,EACX,UAAU,IAAI,MAAM,CAAC,KAAK,CAC3B,EAAE,CACJ,CAAA;IACH,CAAC;IAED,MAAM,YAAY,GAAG,2BAA2B,CAAC,WAAW,EAAE,UAAU,CAAC,CAAA;IACzE,MAAM,QAAQ,GAAG,YAAY,EAAE,OAAO,IAAI,YAAY,CAAA;IACtD,IAAI,OAAO,QAAQ,KAAK,UAAU,EAAE,CAAC;QACnC,MAAM,IAAI,KAAK,CACb,4BAA4B,MAAM,CAAC,EAAE,QAAQ,IAAI,CAAC,QAAQ,CACxD,WAAW,EACX,UAAU,CACX,+CAA+C,CACjD,CAAA;IACH,CAAC;IAED,OAAO;QACL,GAAG,MAAM;QACT,cAAc,EAAE,IAAI;QACpB,gBAAgB,EAAE,UAAU;KAC7B,CAAA;AACH,CAAC;AAED,SAAS,sBAAsB,CAAC,KAAa,EAAE,WAAmB;IAChE,OAAO,IAAI,CAAC,OAAO,CAAC,WAAW,EAAE,KAAK,CAAC,CAAA;AACzC,CAAC"}
@@ -0,0 +1,82 @@
1
+ import { evaluateWidgetModuleExports, logger } from '@use-voltra/expo-plugin';
2
+ /**
3
+ * Initial-state prerender for Dynamic Widgets.
4
+ *
5
+ * For widgets with `initialStatePath`, the existing `prerenderWidgetState` in
6
+ * @use-voltra/expo-plugin loads the file and reads `exports.default` (a `WidgetVariants`
7
+ * object), then runs it through the multi-family `renderWidgetToString` to produce a
8
+ * per-family JSON payload that the runtime's `selectContentForFamily` will pick from.
9
+ *
10
+ * Dynamic Widgets work differently: the module referenced by `entry` default-exports a
11
+ * function or component, and the runtime calls it per-render with real env values. For the
12
+ * WidgetKit placeholder (`Provider.placeholder` and the widget gallery preview) ONE
13
+ * pre-rendered JSON entry is needed to display before any Metro fetch completes. That's
14
+ * generated here by calling the entry default export at prebuild with empty props + a
15
+ * minimal env, storing the compact `{t, c, p}` JSON in the existing `voltra_initial_states.json`.
16
+ *
17
+ * The placeholder's env values are fixed (`widgetFamily: 'systemMedium'`,
18
+ * `colorScheme: 'light'`, etc.) and may not match what the user actually sees the moment
19
+ * they add the widget — but the first real timeline tick replaces this entry within
20
+ * milliseconds, so the brief mismatch is invisible in practice.
21
+ */
22
+ /** Locale key used for non-localized prerendered states (mirrors prerender.ts behavior). */
23
+ const SINGLE_LOCALE_KEY = '__default';
24
+ /**
25
+ * Default env passed to Dynamic Widgets at prebuild for the placeholder render. Fields
26
+ * mirror `WidgetEnvironment` from packages/core/src/widget-environment.ts so the widget
27
+ * function sees the same shape it gets at runtime.
28
+ */
29
+ function buildPlaceholderEnv() {
30
+ return {
31
+ date: Date.now(),
32
+ widgetFamily: 'systemMedium',
33
+ colorScheme: 'light',
34
+ locale: 'en-US',
35
+ widgetRenderingMode: 'fullColor',
36
+ showsWidgetContainerBackground: true,
37
+ configuration: undefined,
38
+ build: {
39
+ isDev: false,
40
+ metroUrl: null,
41
+ appVersion: 'unknown',
42
+ voltraVersion: '1.4.1',
43
+ },
44
+ };
45
+ }
46
+ /**
47
+ * Prerender placeholder JSON for every Dynamic Widget. Returns a map shaped
48
+ * identically to `prerenderWidgetState`'s output so the two can be merged before
49
+ * generating `VoltraWidgetInitialStates.swift`.
50
+ */
51
+ export async function prerenderClientRenderedWidgets(widgets, projectRoot) {
52
+ const results = new Map();
53
+ const clientWidgets = widgets.filter((w) => w.clientRendered);
54
+ if (clientWidgets.length === 0) {
55
+ return results;
56
+ }
57
+ // Lazy-loaded so server-only projects never pull in @use-voltra/ios. The renderer
58
+ // is iOS-specific by design — the Android counterpart will use the same shape via
59
+ // @use-voltra/android in a future phase.
60
+ const iosModuleId = '@use-voltra/ios';
61
+ const { renderVoltraVariantToJson } = (await import(iosModuleId));
62
+ const placeholderEnv = buildPlaceholderEnv();
63
+ for (const widget of clientWidgets) {
64
+ try {
65
+ const widgetModule = evaluateWidgetModuleExports(projectRoot, widget.clientSourcePath);
66
+ const widgetFn = widgetModule?.default ?? widgetModule;
67
+ if (typeof widgetFn !== 'function') {
68
+ throw new Error(`Expected the entry module at ${widget.clientSourcePath} to default-export a function or component.`);
69
+ }
70
+ const element = widgetFn({}, placeholderEnv);
71
+ const json = renderVoltraVariantToJson(element);
72
+ const jsonString = JSON.stringify(json);
73
+ results.set(widget.id, new Map([[SINGLE_LOCALE_KEY, jsonString]]));
74
+ }
75
+ catch (error) {
76
+ throw new Error(`Failed to prerender Dynamic Widget "${widget.id}": ${error instanceof Error ? error.message : String(error)}`);
77
+ }
78
+ }
79
+ logger.info(`Prerendered ${clientWidgets.length} Dynamic Widget placeholder(s)`);
80
+ return results;
81
+ }
82
+ //# sourceMappingURL=clientRenderedPrerender.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"clientRenderedPrerender.js","sourceRoot":"","sources":["../../../src/ios-widget/clientRenderedPrerender.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,2BAA2B,EAAE,MAAM,EAAgC,MAAM,yBAAyB,CAAA;AAI3G;;;;;;;;;;;;;;;;;;;GAmBG;AAEH,4FAA4F;AAC5F,MAAM,iBAAiB,GAAG,WAAW,CAAA;AAErC;;;;GAIG;AACH,SAAS,mBAAmB;IAC1B,OAAO;QACL,IAAI,EAAE,IAAI,CAAC,GAAG,EAAE;QAChB,YAAY,EAAE,cAAc;QAC5B,WAAW,EAAE,OAAO;QACpB,MAAM,EAAE,OAAO;QACf,mBAAmB,EAAE,WAAW;QAChC,8BAA8B,EAAE,IAAI;QACpC,aAAa,EAAE,SAAS;QACxB,KAAK,EAAE;YACL,KAAK,EAAE,KAAK;YACZ,QAAQ,EAAE,IAAI;YACd,UAAU,EAAE,SAAS;YACrB,aAAa,EAAE,OAAO;SACvB;KACF,CAAA;AACH,CAAC;AAED;;;;GAIG;AACH,MAAM,CAAC,KAAK,UAAU,8BAA8B,CAClD,OAA4B,EAC5B,WAAmB;IAEnB,MAAM,OAAO,GAA4B,IAAI,GAAG,EAAE,CAAA;IAElD,MAAM,aAAa,GAAG,OAAO,CAAC,MAAM,CAClC,CAAC,CAAC,EAA6D,EAAE,CAAC,CAAC,CAAC,cAAc,CACnF,CAAA;IACD,IAAI,aAAa,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC/B,OAAO,OAAO,CAAA;IAChB,CAAC;IAED,kFAAkF;IAClF,kFAAkF;IAClF,yCAAyC;IACzC,MAAM,WAAW,GAAG,iBAAiB,CAAA;IACrC,MAAM,EAAE,yBAAyB,EAAE,GAAG,CAAC,MAAM,MAAM,CAAC,WAAW,CAAC,CAE/D,CAAA;IAED,MAAM,cAAc,GAAG,mBAAmB,EAAE,CAAA;IAE5C,KAAK,MAAM,MAAM,IAAI,aAAa,EAAE,CAAC;QACnC,IAAI,CAAC;YACH,MAAM,YAAY,GAAG,2BAA2B,CAAC,WAAW,EAAE,MAAM,CAAC,gBAAgB,CAAC,CAAA;YACtF,MAAM,QAAQ,GAAG,YAAY,EAAE,OAAO,IAAI,YAAY,CAAA;YACtD,IAAI,OAAO,QAAQ,KAAK,UAAU,EAAE,CAAC;gBACnC,MAAM,IAAI,KAAK,CACb,gCAAgC,MAAM,CAAC,gBAAgB,6CAA6C,CACrG,CAAA;YACH,CAAC;YAED,MAAM,OAAO,GAAG,QAAQ,CAAC,EAAE,EAAE,cAAc,CAAC,CAAA;YAC5C,MAAM,IAAI,GAAG,yBAAyB,CAAC,OAAO,CAAC,CAAA;YAC/C,MAAM,UAAU,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAA;YACvC,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,EAAE,IAAI,GAAG,CAAC,CAAC,CAAC,iBAAiB,EAAE,UAAU,CAAC,CAAC,CAAC,CAAC,CAAA;QACpE,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,IAAI,KAAK,CACb,uCAAuC,MAAM,CAAC,EAAE,MAAM,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAC/G,CAAA;QACH,CAAC;IACH,CAAC;IAED,MAAM,CAAC,IAAI,CAAC,eAAe,aAAa,CAAC,MAAM,gCAAgC,CAAC,CAAA;IAChF,OAAO,OAAO,CAAA;AAChB,CAAC"}
@@ -4,6 +4,7 @@ import * as path from 'path';
4
4
  import { generateAssets } from './assets';
5
5
  import { generateEntitlements } from './entitlements';
6
6
  import { generateInfoPlist } from './infoPlist';
7
+ import { generateIOSDynamicWidgetsManifest } from './manifest';
7
8
  import { generateSwiftFiles } from './swift';
8
9
  /**
9
10
  * Plugin step that generates all widget extension files.
@@ -41,6 +42,11 @@ export const generateWidgetExtensionFiles = (config, props) => {
41
42
  projectRoot,
42
43
  widgets,
43
44
  });
45
+ // Write the iOS-owned Dynamic Widgets manifest for Metro to consume later.
46
+ generateIOSDynamicWidgetsManifest({
47
+ projectRoot,
48
+ widgets,
49
+ });
44
50
  // Generate entitlements file (may be empty if no groupIdentifier or keychainGroup)
45
51
  generateEntitlements({
46
52
  targetPath,
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/ios-widget/files/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAgB,gBAAgB,EAAE,MAAM,sBAAsB,CAAA;AACrE,OAAO,KAAK,EAAE,MAAM,IAAI,CAAA;AACxB,OAAO,KAAK,IAAI,MAAM,MAAM,CAAA;AAG5B,OAAO,EAAE,cAAc,EAAE,MAAM,UAAU,CAAA;AACzC,OAAO,EAAE,oBAAoB,EAAE,MAAM,gBAAgB,CAAA;AACrD,OAAO,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAA;AAC/C,OAAO,EAAE,kBAAkB,EAAE,MAAM,SAAS,CAAA;AAW5C;;;;;;;;;;;GAWG;AACH,MAAM,CAAC,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,gBAAgB,CAAC,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,iBAAiB,CAAC,UAAU,EAAE,UAAU,EAAE,OAAO,EAAE,WAAW,CAAC,CAAA;YAE/D,gDAAgD;YAChD,cAAc,CAAC,EAAE,UAAU,EAAE,CAAC,CAAA;YAE9B,uDAAuD;YACvD,MAAM,kBAAkB,CAAC;gBACvB,UAAU;gBACV,WAAW;gBACX,OAAO;aACR,CAAC,CAAA;YAEF,mFAAmF;YACnF,oBAAoB,CAAC;gBACnB,UAAU;gBACV,UAAU;gBACV,eAAe;gBACf,aAAa;aACd,CAAC,CAAA;YAEF,OAAO,MAAM,CAAA;QACf,CAAC;KACF,CAAC,CAAA;AACJ,CAAC,CAAA"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/ios-widget/files/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAgB,gBAAgB,EAAE,MAAM,sBAAsB,CAAA;AACrE,OAAO,KAAK,EAAE,MAAM,IAAI,CAAA;AACxB,OAAO,KAAK,IAAI,MAAM,MAAM,CAAA;AAG5B,OAAO,EAAE,cAAc,EAAE,MAAM,UAAU,CAAA;AACzC,OAAO,EAAE,oBAAoB,EAAE,MAAM,gBAAgB,CAAA;AACrD,OAAO,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAA;AAC/C,OAAO,EAAE,iCAAiC,EAAE,MAAM,YAAY,CAAA;AAC9D,OAAO,EAAE,kBAAkB,EAAE,MAAM,SAAS,CAAA;AAW5C;;;;;;;;;;;GAWG;AACH,MAAM,CAAC,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,gBAAgB,CAAC,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,iBAAiB,CAAC,UAAU,EAAE,UAAU,EAAE,OAAO,EAAE,WAAW,CAAC,CAAA;YAE/D,gDAAgD;YAChD,cAAc,CAAC,EAAE,UAAU,EAAE,CAAC,CAAA;YAE9B,uDAAuD;YACvD,MAAM,kBAAkB,CAAC;gBACvB,UAAU;gBACV,WAAW;gBACX,OAAO;aACR,CAAC,CAAA;YAEF,2EAA2E;YAC3E,iCAAiC,CAAC;gBAChC,WAAW;gBACX,OAAO;aACR,CAAC,CAAA;YAEF,mFAAmF;YACnF,oBAAoB,CAAC;gBACnB,UAAU;gBACV,UAAU;gBACV,eAAe;gBACf,aAAa;aACd,CAAC,CAAA;YAEF,OAAO,MAAM,CAAA;QACf,CAAC;KACF,CAAC,CAAA;AACJ,CAAC,CAAA"}
@@ -0,0 +1,30 @@
1
+ import * as fs from 'fs';
2
+ import * as path from 'path';
3
+ import { logger, validateWidgetEntry } from '@use-voltra/expo-plugin';
4
+ const MANIFEST_PATH = path.join('.voltra', 'manifest.ios.json');
5
+ export function createIOSDynamicWidgetsManifest(projectRoot, widgets) {
6
+ const manifestWidgets = [];
7
+ for (const widget of widgets) {
8
+ if (widget.entry === undefined) {
9
+ continue;
10
+ }
11
+ manifestWidgets.push({
12
+ id: widget.id,
13
+ entry: validateWidgetEntry(widget.entry, widget.id, projectRoot),
14
+ });
15
+ }
16
+ return {
17
+ version: 1,
18
+ platform: 'ios',
19
+ widgets: manifestWidgets,
20
+ };
21
+ }
22
+ export function generateIOSDynamicWidgetsManifest(options) {
23
+ const { projectRoot, widgets } = options;
24
+ const manifestPath = path.join(projectRoot, MANIFEST_PATH);
25
+ const manifest = createIOSDynamicWidgetsManifest(projectRoot, widgets ?? []);
26
+ fs.mkdirSync(path.dirname(manifestPath), { recursive: true });
27
+ fs.writeFileSync(manifestPath, `${JSON.stringify(manifest, null, 2)}\n`);
28
+ logger.info(`Generated ${MANIFEST_PATH}`);
29
+ }
30
+ //# sourceMappingURL=manifest.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"manifest.js","sourceRoot":"","sources":["../../../../src/ios-widget/files/manifest.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,IAAI,CAAA;AACxB,OAAO,KAAK,IAAI,MAAM,MAAM,CAAA;AAE5B,OAAO,EAA8B,MAAM,EAAE,mBAAmB,EAAE,MAAM,yBAAyB,CAAA;AAIjG,MAAM,aAAa,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,mBAAmB,CAAC,CAAA;AAO/D,MAAM,UAAU,+BAA+B,CAC7C,WAAmB,EACnB,OAA0B;IAE1B,MAAM,eAAe,GAAqC,EAAE,CAAA;IAE5D,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE,CAAC;QAC7B,IAAI,MAAM,CAAC,KAAK,KAAK,SAAS,EAAE,CAAC;YAC/B,SAAQ;QACV,CAAC;QAED,eAAe,CAAC,IAAI,CAAC;YACnB,EAAE,EAAE,MAAM,CAAC,EAAE;YACb,KAAK,EAAE,mBAAmB,CAAC,MAAM,CAAC,KAAK,EAAE,MAAM,CAAC,EAAE,EAAE,WAAW,CAAC;SACjE,CAAC,CAAA;IACJ,CAAC;IAED,OAAO;QACL,OAAO,EAAE,CAAC;QACV,QAAQ,EAAE,KAAK;QACf,OAAO,EAAE,eAAe;KACzB,CAAA;AACH,CAAC;AAED,MAAM,UAAU,iCAAiC,CAAC,OAAiD;IACjG,MAAM,EAAE,WAAW,EAAE,OAAO,EAAE,GAAG,OAAO,CAAA;IACxC,MAAM,YAAY,GAAG,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,aAAa,CAAC,CAAA;IAC1D,MAAM,QAAQ,GAAG,+BAA+B,CAAC,WAAW,EAAE,OAAO,IAAI,EAAE,CAAC,CAAA;IAE5E,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAA;IAC7D,EAAE,CAAC,aAAa,CAAC,YAAY,EAAE,GAAG,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,CAAA;IACxE,MAAM,CAAC,IAAI,CAAC,aAAa,aAAa,EAAE,CAAC,CAAA;AAC3C,CAAC"}
@@ -4,6 +4,8 @@ import * as path from 'path';
4
4
  import { isWidgetLocalizedMap, logger, prerenderWidgetState, widgetLabelEnglish, } from '@use-voltra/expo-plugin';
5
5
  import { DEFAULT_WIDGET_FAMILIES, WIDGET_FAMILY_MAP } from '../../constants';
6
6
  import { VOLTRA_WIDGET_STRINGS_BASENAME } from '../../utils/fileDiscovery';
7
+ import { detectClientRenderedWidgets } from '../clientRendered';
8
+ import { prerenderClientRenderedWidgets } from '../clientRenderedPrerender';
7
9
  // ============================================================================
8
10
  // Main Function
9
11
  // ============================================================================
@@ -19,8 +21,22 @@ export async function generateSwiftFiles(options) {
19
21
  // Dynamic import keeps the plugin CommonJS-compatible while resolving the current package entry.
20
22
  const serverModuleId = '@use-voltra/ios/server';
21
23
  const { renderWidgetToString } = (await import(serverModuleId));
22
- // Prerender widget initial states if any widgets have initialStatePath configured
23
- const prerenderedStates = await prerenderWidgetState(widgets || [], projectRoot, renderWidgetToString);
24
+ // Tag each widget with its rendering mode (server vs Dynamic Widget) by inspecting the
25
+ // app.json entry module. See ../clientRendered.ts.
26
+ const detectedWidgets = detectClientRenderedWidgets(widgets || [], projectRoot);
27
+ const clientWidgetCount = detectedWidgets.filter((w) => w.clientRendered).length;
28
+ if (clientWidgetCount > 0) {
29
+ logger.info(`Detected ${clientWidgetCount} Dynamic Widget(s) — generating Provider scaffolding`);
30
+ }
31
+ // Prerender widget initial states. Widgets with `initialStatePath` go through the existing
32
+ // multi-family WidgetVariants → JSON path; Dynamic Widgets go through the entry-module path
33
+ // (call the default export with default props + minimal env, run renderVoltraVariantToJson,
34
+ // stringify). Both produce entries in the same map shape so
35
+ // VoltraWidgetInitialStates.swift can read either via the same lookup at runtime.
36
+ const serverWidgets = detectedWidgets.filter((w) => !w.clientRendered);
37
+ const serverStates = await prerenderWidgetState(serverWidgets, projectRoot, renderWidgetToString);
38
+ const clientStates = await prerenderClientRenderedWidgets(detectedWidgets, projectRoot);
39
+ const prerenderedStates = new Map([...serverStates, ...clientStates]);
24
40
  syncVoltraWidgetGalleryStrings(targetPath, widgets);
25
41
  // Generate the initial states Swift file
26
42
  const initialStatesContent = generateInitialStatesSwift(prerenderedStates);
@@ -28,7 +44,7 @@ export async function generateSwiftFiles(options) {
28
44
  fs.writeFileSync(initialStatesPath, initialStatesContent);
29
45
  logger.info(`Generated VoltraWidgetInitialStates.swift with ${prerenderedStates.size} widget(s) (localized initial states where configured)`);
30
46
  // Generate the widget bundle Swift file
31
- const widgetBundleContent = widgets && widgets.length > 0 ? generateWidgetBundleSwift(widgets) : generateDefaultWidgetBundleSwift();
47
+ const widgetBundleContent = detectedWidgets.length > 0 ? generateWidgetBundleSwift(detectedWidgets) : generateDefaultWidgetBundleSwift();
32
48
  const widgetBundlePath = path.join(targetPath, 'VoltraWidgetBundle.swift');
33
49
  fs.writeFileSync(widgetBundlePath, widgetBundleContent);
34
50
  logger.info(`Generated VoltraWidgetBundle.swift with ${widgets?.length ?? 0} home screen widgets`);
@@ -206,15 +222,47 @@ function iosWidgetGalleryLabelSwiftExpr(widgetId, field, label) {
206
222
  return `Text(LocalizedStringResource("${key}", defaultValue: String.LocalizationValue("${defaultEnglish}"), table: "VoltraWidgets"))`;
207
223
  }
208
224
  /**
209
- * Generates Swift code for a single widget struct
225
+ * Generates Swift code for a single widget struct. Dispatches on rendering mode:
226
+ * - server-rendered → `VoltraHomeWidgetProvider` + `VoltraHomeWidgetView` (existing path)
227
+ * - Dynamic Widget → `VoltraClientWidgetProvider` + `VoltraClientWidgetContentView`
228
+ * (the content view internally renders via VoltraHomeWidgetView so the UI layer is
229
+ * identical to the fallback state path — see VoltraClientWidgetRuntime.swift)
210
230
  */
231
+ function widgetUsesAppIntent(widget) {
232
+ return widget.clientRendered && !!widget.appIntent && widget.appIntent.parameters.length > 0;
233
+ }
211
234
  function generateWidgetStruct(widget) {
235
+ // Client-rendered widgets with an appIntent config get a native "Edit Widget" sheet via
236
+ // AppIntentConfiguration; the configured params flow into env.configuration.
237
+ if (widgetUsesAppIntent(widget)) {
238
+ return generateClientAppIntentWidgetCode(widget);
239
+ }
212
240
  const families = widget.supportedFamilies ?? DEFAULT_WIDGET_FAMILIES;
213
241
  const familiesSwift = families.map((f) => WIDGET_FAMILY_MAP[f]).join(', ');
214
242
  // Sanitize the widget id for use as a Swift identifier
215
243
  const structName = `VoltraWidget_${widget.id}`;
216
244
  const displayNameExpr = iosWidgetGalleryLabelSwiftExpr(widget.id, 'displayName', widget.displayName);
217
245
  const descriptionExpr = iosWidgetGalleryLabelSwiftExpr(widget.id, 'description', widget.description);
246
+ const providerAndContent = widget.clientRendered
247
+ ? dedent `
248
+ provider: VoltraClientWidgetProvider(
249
+ widgetId: widgetId,
250
+ initialState: VoltraWidgetInitialStates.getInitialState(for: widgetId)
251
+ )
252
+ ) { entry in
253
+ VoltraClientWidgetContentView(
254
+ entry: entry,
255
+ initialState: VoltraWidgetInitialStates.getInitialState(for: widgetId)
256
+ )
257
+ }`
258
+ : dedent `
259
+ provider: VoltraHomeWidgetProvider(
260
+ widgetId: widgetId,
261
+ initialState: VoltraWidgetInitialStates.getInitialState(for: widgetId)
262
+ )
263
+ ) { entry in
264
+ VoltraHomeWidgetView(entry: entry)
265
+ }`;
218
266
  return dedent `
219
267
  public struct ${structName}: Widget {
220
268
  private let widgetId = "${widget.id}"
@@ -224,12 +272,91 @@ function generateWidgetStruct(widget) {
224
272
  public var body: some WidgetConfiguration {
225
273
  StaticConfiguration(
226
274
  kind: "Voltra_Widget_${widget.id}",
227
- provider: VoltraHomeWidgetProvider(
228
- widgetId: widgetId,
275
+ ${providerAndContent}
276
+ .configurationDisplayName(${displayNameExpr})
277
+ .description(${descriptionExpr})
278
+ .supportedFamilies([${familiesSwift}])
279
+ .contentMarginsDisabled()
280
+ }
281
+ }
282
+ `;
283
+ }
284
+ /**
285
+ * Generates a Dynamic Widget backed by AppIntentConfiguration (iOS 17+): a
286
+ * WidgetConfigurationIntent (params + code defaults), an AppIntentTimelineProvider that loads the
287
+ * bundle via the shared client runtime, and an AppIntentConfiguration widget. The configured
288
+ * params are passed into the render as env.configuration; the native "Edit Widget" sheet edits them.
289
+ */
290
+ function generateClientAppIntentWidgetCode(widget) {
291
+ const params = widget.appIntent.parameters;
292
+ const families = widget.supportedFamilies ?? DEFAULT_WIDGET_FAMILIES;
293
+ const familiesSwift = families.map((f) => WIDGET_FAMILY_MAP[f]).join(', ');
294
+ const intentName = `VoltraWidget_${widget.id}_Intent`;
295
+ const providerName = `VoltraWidget_${widget.id}_ClientProvider`;
296
+ const intentTitle = escapeForSwiftStringLiteral(`Configure ${widgetLabelEnglish(widget.displayName)}`);
297
+ const displayNameExpr = iosWidgetGalleryLabelSwiftExpr(widget.id, 'displayName', widget.displayName);
298
+ const descriptionExpr = iosWidgetGalleryLabelSwiftExpr(widget.id, 'description', widget.description);
299
+ const swiftDefault = (p) => `"${escapeForSwiftStringLiteral(p.default ?? '')}"`;
300
+ const dictLiteral = (entries) => (entries.length > 0 ? `[${entries.join(', ')}]` : '[:]');
301
+ const paramDecls = params
302
+ .map((p) => ` @Parameter(title: "${escapeForSwiftStringLiteral(p.title)}", default: ${swiftDefault(p)})\n var ${p.name}: String`)
303
+ .join('\n\n');
304
+ const initParams = params.map((p) => `${p.name}: String`).join(', ');
305
+ const initBody = params.map((p) => ` self.${p.name} = ${p.name}`).join('\n');
306
+ const configuredDict = dictLiteral(params.map((p) => `"${p.name}": configuration.${p.name}`));
307
+ const defaultDict = dictLiteral(params.map((p) => `"${p.name}": ${swiftDefault(p)}`));
308
+ return dedent `
309
+ // MARK: - Client-rendered AppIntent widget: ${widget.id}
310
+
311
+ @available(iOS 17.0, *)
312
+ struct ${intentName}: WidgetConfigurationIntent {
313
+ static var title: LocalizedStringResource = "${intentTitle}"
314
+
315
+ ${paramDecls}
316
+
317
+ init() {}
318
+ init(${initParams}) {
319
+ ${initBody}
320
+ }
321
+ }
322
+
323
+ @available(iOS 17.0, *)
324
+ private struct ${providerName}: AppIntentTimelineProvider {
325
+ typealias Intent = ${intentName}
326
+ typealias Entry = VoltraClientWidgetEntry
327
+
328
+ private let widgetId = "${widget.id}"
329
+
330
+ func placeholder(in _: Context) -> VoltraClientWidgetEntry {
331
+ VoltraClientWidgetEntry(date: Date(), widgetId: widgetId, bundleReady: false, configuration: ${defaultDict})
332
+ }
333
+
334
+ func snapshot(for configuration: ${intentName}, in _: Context) async -> VoltraClientWidgetEntry {
335
+ await VoltraClientWidgetProvider.loadEntry(widgetId: widgetId, configuration: ${configuredDict})
336
+ }
337
+
338
+ func timeline(for configuration: ${intentName}, in _: Context) async -> Timeline<VoltraClientWidgetEntry> {
339
+ let entry = await VoltraClientWidgetProvider.loadEntry(widgetId: widgetId, configuration: ${configuredDict})
340
+ return Timeline(entries: [entry], policy: .never)
341
+ }
342
+ }
343
+
344
+ @available(iOS 17.0, *)
345
+ public struct VoltraWidget_${widget.id}: Widget {
346
+ private let widgetId = "${widget.id}"
347
+
348
+ public init() {}
349
+
350
+ public var body: some WidgetConfiguration {
351
+ AppIntentConfiguration(
352
+ kind: "Voltra_Widget_${widget.id}",
353
+ intent: ${intentName}.self,
354
+ provider: ${providerName}()
355
+ ) { entry in
356
+ VoltraClientWidgetContentView(
357
+ entry: entry,
229
358
  initialState: VoltraWidgetInitialStates.getInitialState(for: widgetId)
230
359
  )
231
- ) { entry in
232
- VoltraHomeWidgetView(entry: entry)
233
360
  }
234
361
  .configurationDisplayName(${displayNameExpr})
235
362
  .description(${descriptionExpr})
@@ -244,11 +371,20 @@ function generateWidgetStruct(widget) {
244
371
  */
245
372
  function generateWidgetBundleSwift(widgets) {
246
373
  // Generate widget structs
247
- const widgetStructs = widgets.map(generateWidgetStruct).join('\n\n');
248
- // Generate widget bundle body entries
249
- const widgetInstances = widgets.map((w) => `VoltraWidget_${w.id}()`).join('\n ');
374
+ const widgetStructs = widgets.map((w) => generateWidgetStruct(w)).join('\n\n');
375
+ // AppIntent widgets are iOS 17+, so their bundle entries are gated behind #available.
376
+ const appIntentWidgets = widgets.filter(widgetUsesAppIntent);
377
+ const plainWidgets = widgets.filter((w) => !widgetUsesAppIntent(w));
378
+ const plainInstances = plainWidgets.map((w) => `VoltraWidget_${w.id}()`).join('\n ');
379
+ const appIntentInstances = appIntentWidgets.length > 0
380
+ ? `if #available(iOS 17.0, *) {\n ${appIntentWidgets
381
+ .map((w) => `VoltraWidget_${w.id}()`)
382
+ .join('\n ')}\n }`
383
+ : '';
384
+ const widgetInstances = [plainInstances, appIntentInstances].filter(Boolean).join('\n ');
250
385
  const needsFoundation = widgets.some(widgetUsesGalleryLocalization);
251
386
  const foundationImport = needsFoundation ? 'import Foundation\n' : '';
387
+ const appIntentsImport = appIntentWidgets.length > 0 ? 'import AppIntents\n' : '';
252
388
  return dedent `
253
389
  //
254
390
  // VoltraWidgetBundle.swift
@@ -257,7 +393,7 @@ function generateWidgetBundleSwift(widgets) {
257
393
  // This file defines which Voltra widgets are available in your app.
258
394
  //
259
395
 
260
- ${foundationImport}import SwiftUI
396
+ ${foundationImport}${appIntentsImport}import SwiftUI
261
397
  import WidgetKit
262
398
  import VoltraWidget
263
399
 
@@ -399,5 +535,6 @@ function getSwiftRawStringDelimiter(str) {
399
535
  }
400
536
  export const __test__ = {
401
537
  generateInitialStatesSwift,
538
+ generateWidgetBundleSwift,
402
539
  };
403
540
  //# sourceMappingURL=swift.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"swift.js","sourceRoot":"","sources":["../../../../src/ios-widget/files/swift.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"swift.js","sourceRoot":"","sources":["../../../../src/ios-widget/files/swift.ts"],"names":[],"mappings":"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"}
@@ -27,7 +27,7 @@ export const withIOS = (config, props) => {
27
27
  // 1. Add custom fonts if provided
28
28
  ...(fonts && fonts.length > 0 ? [[withFonts, { fonts, targetName }]] : []),
29
29
  // 2. Configure Xcode project (creates the target - must run before fonts mod executes)
30
- [configureXcodeProject, { targetName, bundleIdentifier, deploymentTarget }],
30
+ [configureXcodeProject, { targetName, bundleIdentifier, deploymentTarget, widgets }],
31
31
  // 3. Configure Podfile for widget extension target
32
32
  [configurePodfile, { targetName }],
33
33
  // 4. Configure main app Info.plist (URL schemes, widget extension plist)
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/ios-widget/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAgB,WAAW,EAAE,MAAM,sBAAsB,CAAA;AAGhE,OAAO,EAAE,iBAAiB,EAAE,MAAM,OAAO,CAAA;AACzC,OAAO,EAAE,4BAA4B,EAAE,MAAM,SAAS,CAAA;AACtD,OAAO,EAAE,SAAS,EAAE,MAAM,SAAS,CAAA;AACnC,OAAO,EAAE,gBAAgB,EAAE,MAAM,WAAW,CAAA;AAC5C,OAAO,EAAE,6BAA6B,EAAE,MAAM,eAAe,CAAA;AAC7D,OAAO,EAAE,qBAAqB,EAAE,MAAM,SAAS,CAAA;AAc/C;;;;;;;;;;;;;;;GAeG;AACH,MAAM,CAAC,MAAM,OAAO,GAA+B,CAAC,MAAM,EAAE,KAAK,EAAE,EAAE;IACnE,MAAM,EACJ,UAAU,EACV,gBAAgB,EAChB,gBAAgB,EAChB,OAAO,EACP,eAAe,EACf,aAAa,EACb,KAAK,EACL,OAAO,EACP,WAAW,GACZ,GAAG,KAAK,CAAA;IAET,MAAM,OAAO,GAA+B;QAC1C,kCAAkC;QAClC,GAAG,CAAC,KAAK,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,EAAE,EAAE,KAAK,EAAE,UAAU,EAAE,CAA6B,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;QAEtG,uFAAuF;QACvF,CAAC,qBAAqB,EAAE,EAAE,UAAU,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,CAAC;QAE3E,mDAAmD;QACnD,CAAC,gBAAgB,EAAE,EAAE,UAAU,EAAE,CAAC;QAElC,yEAAyE;QACzE,CAAC,6BAA6B,EAAE,EAAE,UAAU,EAAE,eAAe,EAAE,OAAO,EAAE,aAAa,EAAE,CAAC;QAExF,kCAAkC;QAClC,CAAC,iBAAiB,EAAE,EAAE,UAAU,EAAE,gBAAgB,EAAE,eAAe,EAAE,CAAC;QAEtE,sFAAsF;QACtF,CAAC,4BAA4B,EAAE,EAAE,UAAU,EAAE,OAAO,EAAE,eAAe,EAAE,aAAa,EAAE,OAAO,EAAE,WAAW,EAAE,CAAC;KAC9G,CAAA;IAED,OAAO,WAAW,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;AACrC,CAAC,CAAA"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/ios-widget/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAgB,WAAW,EAAE,MAAM,sBAAsB,CAAA;AAGhE,OAAO,EAAE,iBAAiB,EAAE,MAAM,OAAO,CAAA;AACzC,OAAO,EAAE,4BAA4B,EAAE,MAAM,SAAS,CAAA;AACtD,OAAO,EAAE,SAAS,EAAE,MAAM,SAAS,CAAA;AACnC,OAAO,EAAE,gBAAgB,EAAE,MAAM,WAAW,CAAA;AAC5C,OAAO,EAAE,6BAA6B,EAAE,MAAM,eAAe,CAAA;AAC7D,OAAO,EAAE,qBAAqB,EAAE,MAAM,SAAS,CAAA;AAc/C;;;;;;;;;;;;;;;GAeG;AACH,MAAM,CAAC,MAAM,OAAO,GAA+B,CAAC,MAAM,EAAE,KAAK,EAAE,EAAE;IACnE,MAAM,EACJ,UAAU,EACV,gBAAgB,EAChB,gBAAgB,EAChB,OAAO,EACP,eAAe,EACf,aAAa,EACb,KAAK,EACL,OAAO,EACP,WAAW,GACZ,GAAG,KAAK,CAAA;IAET,MAAM,OAAO,GAA+B;QAC1C,kCAAkC;QAClC,GAAG,CAAC,KAAK,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,EAAE,EAAE,KAAK,EAAE,UAAU,EAAE,CAA6B,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;QAEtG,uFAAuF;QACvF,CAAC,qBAAqB,EAAE,EAAE,UAAU,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,OAAO,EAAE,CAAC;QAEpF,mDAAmD;QACnD,CAAC,gBAAgB,EAAE,EAAE,UAAU,EAAE,CAAC;QAElC,yEAAyE;QACzE,CAAC,6BAA6B,EAAE,EAAE,UAAU,EAAE,eAAe,EAAE,OAAO,EAAE,aAAa,EAAE,CAAC;QAExF,kCAAkC;QAClC,CAAC,iBAAiB,EAAE,EAAE,UAAU,EAAE,gBAAgB,EAAE,eAAe,EAAE,CAAC;QAEtE,sFAAsF;QACtF,CAAC,4BAA4B,EAAE,EAAE,UAAU,EAAE,OAAO,EAAE,eAAe,EAAE,aAAa,EAAE,OAAO,EAAE,WAAW,EAAE,CAAC;KAC9G,CAAA;IAED,OAAO,WAAW,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;AACrC,CAAC,CAAA"}
@@ -2,6 +2,7 @@ import { withDangerousMod } from '@expo/config-plugins';
2
2
  import plist from '@expo/plist';
3
3
  import { existsSync, readFileSync, writeFileSync } from 'fs';
4
4
  import { join as joinPath } from 'path';
5
+ import { detectClientRenderedWidgets } from './clientRendered';
5
6
  import { logger } from '@use-voltra/expo-plugin';
6
7
  /**
7
8
  * Plugin step that configures the Info.plist files.
@@ -28,6 +29,27 @@ export const configureWidgetExtensionPlist = (expoConfig, { targetName, groupIde
28
29
  return config;
29
30
  }
30
31
  const content = plist.parse(readFileSync(filePath, 'utf8'));
32
+ // Dynamic Widgets fetch their JS bundle from Metro at
33
+ // http://localhost:8081 in DEBUG builds. iOS requires an ATS exception for
34
+ // plaintext HTTP, scoped to localhost. The keys are only added when a
35
+ // Dynamic Widget actually exists, so server-only configurations
36
+ // keep their plist minimal.
37
+ if (widgets && widgets.length > 0) {
38
+ const detected = detectClientRenderedWidgets(widgets, config.modRequest.projectRoot);
39
+ const hasClientWidget = detected.some((w) => w.clientRendered);
40
+ if (hasClientWidget) {
41
+ ;
42
+ content['NSAppTransportSecurity'] = {
43
+ NSAllowsLocalNetworking: true,
44
+ NSExceptionDomains: {
45
+ localhost: {
46
+ NSExceptionAllowsInsecureHTTPLoads: true,
47
+ NSIncludesSubdomains: true,
48
+ },
49
+ },
50
+ };
51
+ }
52
+ }
31
53
  // WidgetKit extensions must NOT declare NSExtensionPrincipalClass/MainStoryboard.
32
54
  // The @main WidgetBundle in Swift is the entry point.
33
55
  const ext = content.NSExtension;
@@ -1 +1 @@
1
- {"version":3,"file":"widgetPlist.js","sourceRoot":"","sources":["../../../src/ios-widget/widgetPlist.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"widgetPlist.js","sourceRoot":"","sources":["../../../src/ios-widget/widgetPlist.ts"],"names":[],"mappings":"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"}