voltra 2.2.0 → 2.3.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.
Files changed (138) hide show
  1. package/build/cjs/apply/index.js +6 -1
  2. package/build/cjs/apply/index.js.map +1 -1
  3. package/build/cjs/config/normalize.js +150 -31
  4. package/build/cjs/config/normalize.js.map +1 -1
  5. package/build/cjs/config/perConfiguration.js +29 -0
  6. package/build/cjs/config/perConfiguration.js.map +1 -0
  7. package/build/cjs/config/serverUpdate.js +119 -0
  8. package/build/cjs/config/serverUpdate.js.map +1 -0
  9. package/build/cjs/config/widgetKind.js +25 -0
  10. package/build/cjs/config/widgetKind.js.map +1 -0
  11. package/build/cjs/dependencies/platformPackages.js +9 -0
  12. package/build/cjs/dependencies/platformPackages.js.map +1 -1
  13. package/build/cjs/discovery/ios.js +50 -31
  14. package/build/cjs/discovery/ios.js.map +1 -1
  15. package/build/cjs/discovery/metro.js +52 -0
  16. package/build/cjs/discovery/metro.js.map +1 -0
  17. package/build/cjs/index.js +6 -2
  18. package/build/cjs/index.js.map +1 -1
  19. package/build/cjs/platforms/android/generated.js +98 -40
  20. package/build/cjs/platforms/android/generated.js.map +1 -1
  21. package/build/cjs/platforms/android/widgetSizing.js +89 -0
  22. package/build/cjs/platforms/android/widgetSizing.js.map +1 -0
  23. package/build/cjs/platforms/ios/apply.js +21 -11
  24. package/build/cjs/platforms/ios/apply.js.map +1 -1
  25. package/build/cjs/platforms/ios/buildConfigurationValues.js +73 -0
  26. package/build/cjs/platforms/ios/buildConfigurationValues.js.map +1 -0
  27. package/build/cjs/platforms/ios/entitlements.js +34 -19
  28. package/build/cjs/platforms/ios/entitlements.js.map +1 -1
  29. package/build/cjs/platforms/ios/generated.js +79 -32
  30. package/build/cjs/platforms/ios/generated.js.map +1 -1
  31. package/build/cjs/platforms/ios/plist.js +22 -4
  32. package/build/cjs/platforms/ios/plist.js.map +1 -1
  33. package/build/cjs/platforms/ios/targetName.js.map +1 -1
  34. package/build/cjs/platforms/ios/xcodeTarget.js +166 -23
  35. package/build/cjs/platforms/ios/xcodeTarget.js.map +1 -1
  36. package/build/cjs/platforms/shared/widgetModule.js +18 -145
  37. package/build/cjs/platforms/shared/widgetModule.js.map +1 -1
  38. package/build/esm/apply/index.js +6 -1
  39. package/build/esm/apply/index.js.map +1 -1
  40. package/build/esm/config/normalize.js +150 -31
  41. package/build/esm/config/normalize.js.map +1 -1
  42. package/build/esm/config/perConfiguration.js +25 -0
  43. package/build/esm/config/perConfiguration.js.map +1 -0
  44. package/build/esm/config/serverUpdate.js +112 -0
  45. package/build/esm/config/serverUpdate.js.map +1 -0
  46. package/build/esm/config/widgetKind.js +20 -0
  47. package/build/esm/config/widgetKind.js.map +1 -0
  48. package/build/esm/dependencies/platformPackages.js +8 -0
  49. package/build/esm/dependencies/platformPackages.js.map +1 -1
  50. package/build/esm/discovery/ios.js +50 -31
  51. package/build/esm/discovery/ios.js.map +1 -1
  52. package/build/esm/discovery/metro.js +46 -0
  53. package/build/esm/discovery/metro.js.map +1 -0
  54. package/build/esm/index.js +1 -0
  55. package/build/esm/index.js.map +1 -1
  56. package/build/esm/platforms/android/generated.js +100 -42
  57. package/build/esm/platforms/android/generated.js.map +1 -1
  58. package/build/esm/platforms/android/widgetSizing.js +85 -0
  59. package/build/esm/platforms/android/widgetSizing.js.map +1 -0
  60. package/build/esm/platforms/ios/apply.js +21 -11
  61. package/build/esm/platforms/ios/apply.js.map +1 -1
  62. package/build/esm/platforms/ios/buildConfigurationValues.js +68 -0
  63. package/build/esm/platforms/ios/buildConfigurationValues.js.map +1 -0
  64. package/build/esm/platforms/ios/entitlements.js +34 -19
  65. package/build/esm/platforms/ios/entitlements.js.map +1 -1
  66. package/build/esm/platforms/ios/generated.js +80 -33
  67. package/build/esm/platforms/ios/generated.js.map +1 -1
  68. package/build/esm/platforms/ios/plist.js +22 -4
  69. package/build/esm/platforms/ios/plist.js.map +1 -1
  70. package/build/esm/platforms/ios/targetName.js.map +1 -1
  71. package/build/esm/platforms/ios/xcodeTarget.js +166 -23
  72. package/build/esm/platforms/ios/xcodeTarget.js.map +1 -1
  73. package/build/esm/platforms/shared/widgetModule.js +16 -107
  74. package/build/esm/platforms/shared/widgetModule.js.map +1 -1
  75. package/build/types/apply/index.d.ts.map +1 -1
  76. package/build/types/config/normalize.d.ts.map +1 -1
  77. package/build/types/config/perConfiguration.d.ts +18 -0
  78. package/build/types/config/perConfiguration.d.ts.map +1 -0
  79. package/build/types/config/serverUpdate.d.ts +80 -0
  80. package/build/types/config/serverUpdate.d.ts.map +1 -0
  81. package/build/types/config/types.d.ts +91 -30
  82. package/build/types/config/types.d.ts.map +1 -1
  83. package/build/types/config/widgetKind.d.ts +11 -0
  84. package/build/types/config/widgetKind.d.ts.map +1 -0
  85. package/build/types/dependencies/platformPackages.d.ts +1 -0
  86. package/build/types/dependencies/platformPackages.d.ts.map +1 -1
  87. package/build/types/discovery/ios.d.ts +10 -0
  88. package/build/types/discovery/ios.d.ts.map +1 -1
  89. package/build/types/discovery/metro.d.ts +21 -0
  90. package/build/types/discovery/metro.d.ts.map +1 -0
  91. package/build/types/index.d.ts +3 -1
  92. package/build/types/index.d.ts.map +1 -1
  93. package/build/types/platforms/android/generated.d.ts.map +1 -1
  94. package/build/types/platforms/android/widgetSizing.d.ts +50 -0
  95. package/build/types/platforms/android/widgetSizing.d.ts.map +1 -0
  96. package/build/types/platforms/ios/apply.d.ts.map +1 -1
  97. package/build/types/platforms/ios/buildConfigurationValues.d.ts +33 -0
  98. package/build/types/platforms/ios/buildConfigurationValues.d.ts.map +1 -0
  99. package/build/types/platforms/ios/entitlements.d.ts +4 -4
  100. package/build/types/platforms/ios/entitlements.d.ts.map +1 -1
  101. package/build/types/platforms/ios/generated.d.ts +14 -2
  102. package/build/types/platforms/ios/generated.d.ts.map +1 -1
  103. package/build/types/platforms/ios/plist.d.ts +3 -3
  104. package/build/types/platforms/ios/plist.d.ts.map +1 -1
  105. package/build/types/platforms/ios/podfile.d.ts +2 -2
  106. package/build/types/platforms/ios/podfile.d.ts.map +1 -1
  107. package/build/types/platforms/ios/targetName.d.ts +2 -2
  108. package/build/types/platforms/ios/targetName.d.ts.map +1 -1
  109. package/build/types/platforms/ios/xcodeTarget.d.ts +4 -2
  110. package/build/types/platforms/ios/xcodeTarget.d.ts.map +1 -1
  111. package/build/types/platforms/shared/widgetModule.d.ts +12 -3
  112. package/build/types/platforms/shared/widgetModule.d.ts.map +1 -1
  113. package/package.json +5 -5
  114. package/src/apply/index.ts +6 -1
  115. package/src/config/normalize.node.test.ts +105 -0
  116. package/src/config/normalize.ts +217 -45
  117. package/src/config/perConfiguration.ts +49 -0
  118. package/src/config/serverUpdate.ts +160 -0
  119. package/src/config/types.ts +97 -30
  120. package/src/config/widgetKind.node.test.ts +27 -0
  121. package/src/config/widgetKind.ts +27 -0
  122. package/src/dependencies/platformPackages.ts +11 -0
  123. package/src/discovery/ios.ts +104 -60
  124. package/src/discovery/metro.node.test.ts +91 -0
  125. package/src/discovery/metro.ts +54 -0
  126. package/src/index.ts +8 -0
  127. package/src/platforms/android/generated.ts +144 -47
  128. package/src/platforms/android/widgetSizing.ts +112 -0
  129. package/src/platforms/ios/apply.ts +21 -11
  130. package/src/platforms/ios/buildConfigurationValues.ts +105 -0
  131. package/src/platforms/ios/entitlements.ts +55 -31
  132. package/src/platforms/ios/generated.node.test.ts +61 -0
  133. package/src/platforms/ios/generated.ts +137 -38
  134. package/src/platforms/ios/plist.ts +36 -7
  135. package/src/platforms/ios/podfile.ts +2 -2
  136. package/src/platforms/ios/targetName.ts +2 -2
  137. package/src/platforms/ios/xcodeTarget.ts +248 -43
  138. package/src/platforms/shared/widgetModule.ts +22 -140
@@ -1,6 +1,9 @@
1
1
  import path from 'node:path';
2
2
  import { resolveFromRoot } from '../fs/path';
3
3
  import { CLI_DEFAULTS } from './defaults';
4
+ import { isPerConfigurationMap } from './perConfiguration';
5
+ import { resolveServerUpdateInterval, resolveServerUpdateUrl, validateServerUpdateRefresh } from './serverUpdate';
6
+ import { iosWidgetKind } from './widgetKind';
4
7
  const VALID_IOS_WIDGET_FAMILIES = new Set([
5
8
  'systemSmall',
6
9
  'systemMedium',
@@ -30,6 +33,23 @@ function assertOptionalString(value, context) {
30
33
  throw new VoltraConfigNormalizationError(`${context} must be a string`);
31
34
  }
32
35
  }
36
+ function assertOptionalPerConfigurationString(value, context) {
37
+ if (value === undefined || typeof value === 'string') {
38
+ return;
39
+ }
40
+ if (!isPerConfigurationMap(value)) {
41
+ throw new VoltraConfigNormalizationError(`${context} must be a string, or an object of strings keyed by build configuration name`);
42
+ }
43
+ const entries = Object.entries(value);
44
+ if (entries.length === 0) {
45
+ throw new VoltraConfigNormalizationError(`${context} must not be an empty object`);
46
+ }
47
+ for (const [buildConfigurationName, configurationValue] of entries) {
48
+ if (typeof configurationValue !== 'string' || !configurationValue.trim()) {
49
+ throw new VoltraConfigNormalizationError(`${context}.${buildConfigurationName} must be a non-empty string`);
50
+ }
51
+ }
52
+ }
33
53
  function assertOptionalBoolean(value, context) {
34
54
  if (value !== undefined && typeof value !== 'boolean') {
35
55
  throw new VoltraConfigNormalizationError(`${context} must be a boolean`);
@@ -72,6 +92,18 @@ function resolveOptionalPathFromProjectRoot(projectRoot, filePath) {
72
92
  }
73
93
  return resolvePathFromProjectRoot(projectRoot, filePath);
74
94
  }
95
+ function resolveOptionalPerConfigurationPath(projectRoot, filePath) {
96
+ if (!filePath) {
97
+ return undefined;
98
+ }
99
+ if (!isPerConfigurationMap(filePath)) {
100
+ return resolvePathFromProjectRoot(projectRoot, filePath);
101
+ }
102
+ return Object.fromEntries(Object.entries(filePath).map(([buildConfigurationName, configurationPath]) => [
103
+ buildConfigurationName,
104
+ resolvePathFromProjectRoot(projectRoot, configurationPath),
105
+ ]));
106
+ }
75
107
  function isAbsoluteWidgetPath(value) {
76
108
  return path.isAbsolute(value) || path.win32.isAbsolute(value) || /^[a-zA-Z]:[\\/]/.test(value);
77
109
  }
@@ -201,30 +233,53 @@ function normalizeIOSAppIntent(value, context) {
201
233
  });
202
234
  return { parameters };
203
235
  }
204
- function normalizeServerUpdate(serverUpdate, context, defaultIntervalMinutes, defaultRefresh, minimumIntervalMinutes) {
236
+ /**
237
+ * `appIntent` only reaches the generated project through the `clientRendered` branches, so on a
238
+ * widget with no `entry` every parameter is dropped: no configuration defaults are emitted, the
239
+ * receiver stays payload-driven, and `getWidgetConfiguration` rejects it at runtime. Generate time
240
+ * is the only place that can still say so.
241
+ */
242
+ function warnOnAppIntentWithoutEntry(appIntent, hasEntry, context, warnings) {
243
+ if (hasEntry || !appIntent || appIntent.parameters.length === 0) {
244
+ return;
245
+ }
246
+ warnings.push(`${context}.appIntent is ignored because the widget has no 'entry'. Configuration parameters ` +
247
+ `only apply to Dynamic Widgets. Add an 'entry' to make this one, or drop 'appIntent'.`);
248
+ }
249
+ function normalizeServerUpdate(serverUpdate, options) {
250
+ const { context, hasEntry, defaultIntervalMinutes, defaultRefresh, minimumIntervalMinutes, warnings } = options;
205
251
  assertObject(serverUpdate, context);
206
- assertNonEmptyString(serverUpdate.url, `${context}.url`);
207
- if (serverUpdate.intervalMinutes !== undefined) {
208
- if (typeof serverUpdate.intervalMinutes !== 'number' || !Number.isFinite(serverUpdate.intervalMinutes)) {
209
- throw new VoltraConfigNormalizationError(`${context}.intervalMinutes must be a number`);
210
- }
211
- if (!Number.isInteger(serverUpdate.intervalMinutes)) {
212
- throw new VoltraConfigNormalizationError(`${context}.intervalMinutes must be an integer`);
213
- }
214
- if (serverUpdate.intervalMinutes < minimumIntervalMinutes) {
215
- throw new VoltraConfigNormalizationError(`${context}.intervalMinutes must be at least ${minimumIntervalMinutes}`);
216
- }
252
+ const url = resolveServerUpdateUrl(serverUpdate.url, context);
253
+ if (url.kind === 'invalid') {
254
+ throw new VoltraConfigNormalizationError(url.error);
255
+ }
256
+ if (url.kind === 'insecure') {
257
+ warnings.push(url.warning);
258
+ }
259
+ const interval = resolveServerUpdateInterval({
260
+ intervalMinutes: serverUpdate.intervalMinutes,
261
+ context,
262
+ hasEntry,
263
+ defaultIntervalMinutes,
264
+ minimumIntervalMinutes,
265
+ });
266
+ if (interval.kind === 'invalid') {
267
+ throw new VoltraConfigNormalizationError(interval.error);
268
+ }
269
+ if (interval.kind === 'clamped') {
270
+ warnings.push(interval.warning);
217
271
  }
218
- if (serverUpdate.refresh !== undefined && typeof serverUpdate.refresh !== 'boolean') {
219
- throw new VoltraConfigNormalizationError(`${context}.refresh must be a boolean`);
272
+ const refreshError = validateServerUpdateRefresh(serverUpdate.refresh, context);
273
+ if (refreshError) {
274
+ throw new VoltraConfigNormalizationError(refreshError);
220
275
  }
221
276
  return {
222
277
  url: serverUpdate.url,
223
- intervalMinutes: serverUpdate.intervalMinutes ?? defaultIntervalMinutes,
278
+ intervalMinutes: interval.intervalMinutes,
224
279
  refresh: serverUpdate.refresh ?? defaultRefresh,
225
280
  };
226
281
  }
227
- function normalizeAndroidWidget(projectRoot, widget) {
282
+ function normalizeAndroidWidget(projectRoot, widget, warnings) {
228
283
  assertObject(widget, 'android.widgets[]');
229
284
  assertNonEmptyString(widget.id, 'android.widgets[].id');
230
285
  assertValidWidgetId(widget.id, 'android.widgets[].id');
@@ -232,6 +287,14 @@ function normalizeAndroidWidget(projectRoot, widget) {
232
287
  assertPositiveInteger(widget.targetCellHeight, `android.widgets[${widget.id}].targetCellHeight`);
233
288
  assertOptionalPositiveInteger(widget.minCellWidth, `android.widgets[${widget.id}].minCellWidth`);
234
289
  assertOptionalPositiveInteger(widget.minCellHeight, `android.widgets[${widget.id}].minCellHeight`);
290
+ assertOptionalPositiveInteger(widget.minWidth, `android.widgets[${widget.id}].minWidth`);
291
+ assertOptionalPositiveInteger(widget.minHeight, `android.widgets[${widget.id}].minHeight`);
292
+ assertOptionalPositiveInteger(widget.minResizeWidth, `android.widgets[${widget.id}].minResizeWidth`);
293
+ assertOptionalPositiveInteger(widget.minResizeHeight, `android.widgets[${widget.id}].minResizeHeight`);
294
+ assertOptionalPositiveInteger(widget.maxResizeWidth, `android.widgets[${widget.id}].maxResizeWidth`);
295
+ assertOptionalPositiveInteger(widget.maxResizeHeight, `android.widgets[${widget.id}].maxResizeHeight`);
296
+ const androidAppIntent = normalizeAndroidAppIntent(widget.appIntent, `android.widgets[${widget.id}].appIntent`);
297
+ warnOnAppIntentWithoutEntry(androidAppIntent, widget.entry !== undefined, `android.widgets[${widget.id}]`, warnings);
235
298
  return {
236
299
  ...widget,
237
300
  displayName: normalizeLabel(widget.displayName, `android.widgets[${widget.id}].displayName`),
@@ -240,16 +303,26 @@ function normalizeAndroidWidget(projectRoot, widget) {
240
303
  initialStatePath: normalizeInitialStatePath(projectRoot, widget.initialStatePath, `android.widgets[${widget.id}].initialStatePath`),
241
304
  previewImage: resolveOptionalPathFromProjectRoot(projectRoot, widget.previewImage),
242
305
  previewLayout: resolveOptionalPathFromProjectRoot(projectRoot, widget.previewLayout),
243
- appIntent: normalizeAndroidAppIntent(widget.appIntent, `android.widgets[${widget.id}].appIntent`),
306
+ appIntent: androidAppIntent,
244
307
  serverUpdate: widget.serverUpdate
245
- ? normalizeServerUpdate(widget.serverUpdate, `android.widgets[${widget.id}].serverUpdate`, CLI_DEFAULTS.android.serverUpdateIntervalMinutes, CLI_DEFAULTS.android.serverUpdateRefresh, 15)
308
+ ? normalizeServerUpdate(widget.serverUpdate, {
309
+ context: `android.widgets[${widget.id}].serverUpdate`,
310
+ hasEntry: widget.entry !== undefined,
311
+ defaultIntervalMinutes: CLI_DEFAULTS.android.serverUpdateIntervalMinutes,
312
+ defaultRefresh: CLI_DEFAULTS.android.serverUpdateRefresh,
313
+ minimumIntervalMinutes: 15,
314
+ warnings,
315
+ })
246
316
  : undefined,
247
317
  };
248
318
  }
249
- function normalizeIOSWidget(projectRoot, widget) {
319
+ function normalizeIOSWidget(projectRoot, widget, warnings) {
250
320
  assertObject(widget, 'ios.widgets[]');
251
321
  assertNonEmptyString(widget.id, 'ios.widgets[].id');
252
322
  assertValidWidgetId(widget.id, 'ios.widgets[].id');
323
+ if (widget.kind !== undefined) {
324
+ assertNonEmptyString(widget.kind, `ios.widgets[${widget.id}].kind`);
325
+ }
253
326
  if (widget.supportedFamilies !== undefined) {
254
327
  if (!Array.isArray(widget.supportedFamilies)) {
255
328
  throw new VoltraConfigNormalizationError(`ios.widgets[${widget.id}].supportedFamilies must be an array`);
@@ -260,6 +333,8 @@ function normalizeIOSWidget(projectRoot, widget) {
260
333
  }
261
334
  }
262
335
  }
336
+ const iosAppIntent = normalizeIOSAppIntent(widget.appIntent, `ios.widgets[${widget.id}].appIntent`);
337
+ warnOnAppIntentWithoutEntry(iosAppIntent, widget.entry !== undefined, `ios.widgets[${widget.id}]`, warnings);
263
338
  return {
264
339
  ...widget,
265
340
  displayName: normalizeLabel(widget.displayName, `ios.widgets[${widget.id}].displayName`),
@@ -267,9 +342,16 @@ function normalizeIOSWidget(projectRoot, widget) {
267
342
  supportedFamilies: widget.supportedFamilies ?? [...CLI_DEFAULTS.ios.widgetFamilies],
268
343
  entry: normalizeOptionalWidgetEntry(widget.entry, `ios.widgets[${widget.id}].entry`),
269
344
  initialStatePath: normalizeInitialStatePath(projectRoot, widget.initialStatePath, `ios.widgets[${widget.id}].initialStatePath`),
270
- appIntent: normalizeIOSAppIntent(widget.appIntent, `ios.widgets[${widget.id}].appIntent`),
345
+ appIntent: iosAppIntent,
271
346
  serverUpdate: widget.serverUpdate
272
- ? normalizeServerUpdate(widget.serverUpdate, `ios.widgets[${widget.id}].serverUpdate`, CLI_DEFAULTS.ios.serverUpdateIntervalMinutes, CLI_DEFAULTS.ios.serverUpdateRefresh, 1)
347
+ ? normalizeServerUpdate(widget.serverUpdate, {
348
+ context: `ios.widgets[${widget.id}].serverUpdate`,
349
+ hasEntry: widget.entry !== undefined,
350
+ defaultIntervalMinutes: CLI_DEFAULTS.ios.serverUpdateIntervalMinutes,
351
+ defaultRefresh: CLI_DEFAULTS.ios.serverUpdateRefresh,
352
+ minimumIntervalMinutes: 1,
353
+ warnings,
354
+ })
273
355
  : undefined,
274
356
  };
275
357
  }
@@ -282,6 +364,21 @@ function assertUniqueWidgetIds(widgetIds, context) {
282
364
  seen.add(widgetId);
283
365
  }
284
366
  }
367
+ /**
368
+ * WidgetKit identifies a placed widget by extension bundle id + kind, so two widgets sharing a kind
369
+ * would fight over the same Home Screen instances. Compared after defaulting, which also catches a
370
+ * custom kind that collides with another widget's `Voltra_Widget_<id>`.
371
+ */
372
+ function assertUniqueIOSWidgetKinds(widgets) {
373
+ const seen = new Set();
374
+ for (const widget of widgets) {
375
+ const kind = iosWidgetKind(widget);
376
+ if (seen.has(kind)) {
377
+ throw new VoltraConfigNormalizationError(`Duplicate ios widget kind '${kind}'`);
378
+ }
379
+ seen.add(kind);
380
+ }
381
+ }
285
382
  function assertValidWidgetId(widgetId, context) {
286
383
  if (!/^[a-zA-Z_][a-zA-Z0-9_]*$/.test(widgetId)) {
287
384
  throw new VoltraConfigNormalizationError(`${context} must start with a letter or underscore and contain only alphanumeric characters and underscores`);
@@ -292,7 +389,7 @@ function assertValidIOSTargetName(targetName, context) {
292
389
  throw new VoltraConfigNormalizationError(`${context} must start with a letter and contain only letters, numbers, and underscores`);
293
390
  }
294
391
  }
295
- function normalizeAndroidConfig(projectRoot, config) {
392
+ function normalizeAndroidConfig(warnings, projectRoot, config) {
296
393
  if (config === undefined) {
297
394
  return undefined;
298
395
  }
@@ -310,7 +407,7 @@ function normalizeAndroidConfig(projectRoot, config) {
310
407
  if (config.widgets !== undefined && !Array.isArray(config.widgets)) {
311
408
  throw new VoltraConfigNormalizationError('android.widgets must be an array');
312
409
  }
313
- const widgets = (config.widgets ?? []).map((widget) => normalizeAndroidWidget(projectRoot, widget));
410
+ const widgets = (config.widgets ?? []).map((widget) => normalizeAndroidWidget(projectRoot, widget, warnings));
314
411
  assertUniqueWidgetIds(widgets.map((widget) => widget.id), 'android');
315
412
  return {
316
413
  enableNotifications: config.enableNotifications ?? CLI_DEFAULTS.android.enableNotifications,
@@ -325,25 +422,25 @@ function normalizeAndroidConfig(projectRoot, config) {
325
422
  },
326
423
  };
327
424
  }
328
- function normalizeIOSConfig(projectRoot, config) {
425
+ function normalizeIOSConfig(warnings, projectRoot, config) {
329
426
  if (config === undefined) {
330
427
  return undefined;
331
428
  }
332
429
  assertObject(config, 'ios');
333
430
  assertOptionalBoolean(config.enablePushNotifications, 'ios.enablePushNotifications');
334
- assertOptionalString(config.groupIdentifier, 'ios.groupIdentifier');
431
+ assertOptionalPerConfigurationString(config.groupIdentifier, 'ios.groupIdentifier');
335
432
  assertOptionalString(config.deploymentTarget, 'ios.deploymentTarget');
336
433
  assertOptionalString(config.targetName, 'ios.targetName');
337
434
  assertOptionalStringArray(config.fonts, 'ios.fonts');
338
435
  assertOptionalString(config.userImagesPath, 'ios.userImagesPath');
339
- assertOptionalString(config.keychainGroup, 'ios.keychainGroup');
436
+ assertOptionalPerConfigurationString(config.keychainGroup, 'ios.keychainGroup');
340
437
  if (config.project !== undefined) {
341
438
  assertObject(config.project, 'ios.project');
342
439
  assertOptionalString(config.project.rootDir, 'ios.project.rootDir');
343
440
  assertOptionalString(config.project.xcodeprojPath, 'ios.project.xcodeprojPath');
344
441
  assertOptionalString(config.project.mainTargetName, 'ios.project.mainTargetName');
345
442
  assertOptionalString(config.project.infoPlistPath, 'ios.project.infoPlistPath');
346
- assertOptionalString(config.project.entitlementsPath, 'ios.project.entitlementsPath');
443
+ assertOptionalPerConfigurationString(config.project.entitlementsPath, 'ios.project.entitlementsPath');
347
444
  assertOptionalString(config.project.podfilePath, 'ios.project.podfilePath');
348
445
  }
349
446
  if (config.widgets !== undefined && !Array.isArray(config.widgets)) {
@@ -352,8 +449,9 @@ function normalizeIOSConfig(projectRoot, config) {
352
449
  if (config.targetName !== undefined) {
353
450
  assertValidIOSTargetName(config.targetName, 'ios.targetName');
354
451
  }
355
- const widgets = (config.widgets ?? []).map((widget) => normalizeIOSWidget(projectRoot, widget));
452
+ const widgets = (config.widgets ?? []).map((widget) => normalizeIOSWidget(projectRoot, widget, warnings));
356
453
  assertUniqueWidgetIds(widgets.map((widget) => widget.id), 'ios');
454
+ assertUniqueIOSWidgetKinds(widgets);
357
455
  return {
358
456
  enablePushNotifications: config.enablePushNotifications ?? CLI_DEFAULTS.ios.enablePushNotifications,
359
457
  groupIdentifier: config.groupIdentifier,
@@ -368,7 +466,7 @@ function normalizeIOSConfig(projectRoot, config) {
368
466
  xcodeprojPath: resolveOptionalPathFromProjectRoot(projectRoot, config.project?.xcodeprojPath),
369
467
  mainTargetName: config.project?.mainTargetName,
370
468
  infoPlistPath: resolveOptionalPathFromProjectRoot(projectRoot, config.project?.infoPlistPath),
371
- entitlementsPath: resolveOptionalPathFromProjectRoot(projectRoot, config.project?.entitlementsPath),
469
+ entitlementsPath: resolveOptionalPerConfigurationPath(projectRoot, config.project?.entitlementsPath),
372
470
  podfilePath: resolveOptionalPathFromProjectRoot(projectRoot, config.project?.podfilePath),
373
471
  },
374
472
  };
@@ -377,12 +475,33 @@ export function normalizeVoltraConfig(loadedConfig) {
377
475
  assertObject(loadedConfig.config, 'config');
378
476
  assertOptionalString(loadedConfig.config.projectRoot, 'projectRoot');
379
477
  const projectRoot = resolvePathFromProjectRoot(loadedConfig.configDir, loadedConfig.config.projectRoot ?? loadedConfig.configDir);
478
+ const warnings = [];
479
+ const android = normalizeAndroidConfig(warnings, projectRoot, loadedConfig.config.android);
480
+ const ios = normalizeIOSConfig(warnings, projectRoot, loadedConfig.config.ios);
481
+ assertServerDrivenDynamicWidgetsAreSupported(ios);
380
482
  return {
381
483
  configPath: loadedConfig.configPath,
382
484
  configDir: loadedConfig.configDir,
383
485
  projectRoot,
384
- android: normalizeAndroidConfig(projectRoot, loadedConfig.config.android),
385
- ios: normalizeIOSConfig(projectRoot, loadedConfig.config.ios),
486
+ android,
487
+ ios,
488
+ warnings,
386
489
  };
387
490
  }
491
+ /**
492
+ * A Dynamic Widget commits fetched props to the App Group so the widget extension can read them,
493
+ * so a server-driven one without a `groupIdentifier` would fetch and have nowhere to put the
494
+ * result.
495
+ */
496
+ function assertServerDrivenDynamicWidgetsAreSupported(ios) {
497
+ if (ios === undefined || ios.groupIdentifier !== undefined) {
498
+ return;
499
+ }
500
+ for (const widget of ios.widgets) {
501
+ if (widget.entry !== undefined && widget.serverUpdate !== undefined) {
502
+ throw new VoltraConfigNormalizationError(`ios.widgets[${widget.id}] has both entry and serverUpdate, which requires ios.groupIdentifier ` +
503
+ 'so fetched props can be shared with the widget extension.');
504
+ }
505
+ }
506
+ }
388
507
  //# sourceMappingURL=normalize.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"normalize.js","sourceRoot":"","sources":["../../../src/config/normalize.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"normalize.js","sourceRoot":"","sources":["../../../src/config/normalize.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,25 @@
1
+ export function isPerConfigurationMap(value) {
2
+ return typeof value === 'object' && value !== null && !Array.isArray(value);
3
+ }
4
+ /**
5
+ * Pairs a per-build-configuration value with the project's real build configurations, in the
6
+ * project's own order. Keys that name no build configuration, and build configurations the value
7
+ * does not cover, are reported before anything is written to the project.
8
+ */
9
+ export function getValuesByBuildConfiguration(value, buildConfigurationNames, context, createError) {
10
+ const knownNames = `This project has: ${buildConfigurationNames.join(', ')}.`;
11
+ const unknownNames = Object.keys(value).filter((name) => !buildConfigurationNames.includes(name));
12
+ if (unknownNames.length > 0) {
13
+ throw createError(`${context} names unknown build configurations: ${unknownNames.join(', ')}. ${knownNames}`);
14
+ }
15
+ const valuesByBuildConfiguration = new Map();
16
+ for (const buildConfigurationName of buildConfigurationNames) {
17
+ const configurationValue = value[buildConfigurationName];
18
+ if (configurationValue === undefined) {
19
+ throw createError(`${context} has no value for build configuration '${buildConfigurationName}'. ${knownNames}`);
20
+ }
21
+ valuesByBuildConfiguration.set(buildConfigurationName, configurationValue);
22
+ }
23
+ return valuesByBuildConfiguration;
24
+ }
25
+ //# sourceMappingURL=perConfiguration.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"perConfiguration.js","sourceRoot":"","sources":["../../../src/config/perConfiguration.ts"],"names":[],"mappings":"AAWA,MAAM,UAAU,qBAAqB,CACnC,KAA2C;IAE3C,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAA;AAC7E,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,6BAA6B,CAC3C,KAA6B,EAC7B,uBAAiC,EACjC,OAAe,EACf,WAAuC;IAEvC,MAAM,UAAU,GAAG,qBAAqB,uBAAuB,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAA;IAC7E,MAAM,YAAY,GAAG,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,uBAAuB,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAA;IAEjG,IAAI,YAAY,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC5B,MAAM,WAAW,CAAC,GAAG,OAAO,wCAAwC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,UAAU,EAAE,CAAC,CAAA;IAC/G,CAAC;IAED,MAAM,0BAA0B,GAAG,IAAI,GAAG,EAAkB,CAAA;IAE5D,KAAK,MAAM,sBAAsB,IAAI,uBAAuB,EAAE,CAAC;QAC7D,MAAM,kBAAkB,GAAG,KAAK,CAAC,sBAAsB,CAAC,CAAA;QAExD,IAAI,kBAAkB,KAAK,SAAS,EAAE,CAAC;YACrC,MAAM,WAAW,CAAC,GAAG,OAAO,0CAA0C,sBAAsB,MAAM,UAAU,EAAE,CAAC,CAAA;QACjH,CAAC;QAED,0BAA0B,CAAC,GAAG,CAAC,sBAAsB,EAAE,kBAAkB,CAAC,CAAA;IAC5E,CAAC;IAED,OAAO,0BAA0B,CAAA;AACnC,CAAC"}
@@ -0,0 +1,112 @@
1
+ /**
2
+ * Config rules for `serverUpdate`, shared by the Expo plugins and the `voltra` CLI.
3
+ *
4
+ * `serverUpdate` marks a widget as server-driven for both render engines. On a widget with
5
+ * `entry` the device fetches a JSON object and hands it to the bundled JS as props; without
6
+ * `entry` the server returns a full Voltra payload. Widgets without `entry` keep exactly the
7
+ * rules they had before ADR 0002, so no existing config breaks.
8
+ *
9
+ * `url` is optional. `serverUpdate: {}` means "server-driven, URL supplied at runtime" through
10
+ * `setWidgetServerUpdate`, which covers per-tenant backends whose URL is only known after login.
11
+ *
12
+ * These helpers report problems instead of throwing so each caller can raise its own error type.
13
+ *
14
+ * The `@use-voltra/expo-plugin` package holds the other copy of this module, shared by the
15
+ * Expo config plugins; keep the two in sync.
16
+ */
17
+ /**
18
+ * Interval floor and default for a widget with `entry`. WorkManager cannot run periodic work
19
+ * more often than every 15 minutes, and WidgetKit stretches timelines requested closer together
20
+ * than five minutes, so a smaller number would only mislead.
21
+ */
22
+ export const DYNAMIC_WIDGET_SERVER_UPDATE_INTERVAL_MINUTES = 15;
23
+ /** Hosts allowed over plain `http`, for talking to a dev server from a simulator or emulator. */
24
+ const LOCAL_HTTP_HOSTS = new Set(['localhost', '127.0.0.1', '::1', '10.0.2.2', '10.0.3.2']);
25
+ /**
26
+ * Resolves the interval a widget should be scheduled on.
27
+ *
28
+ * A widget with `entry` is clamped up to {@link DYNAMIC_WIDGET_SERVER_UPDATE_INTERVAL_MINUTES}
29
+ * with a warning, because a shorter interval is not something either platform can honour. A
30
+ * payload widget keeps the platform's existing rule and is rejected below the floor.
31
+ */
32
+ export function resolveServerUpdateInterval(options) {
33
+ const { intervalMinutes, context, hasEntry, defaultIntervalMinutes, minimumIntervalMinutes } = options;
34
+ const fallback = hasEntry ? DYNAMIC_WIDGET_SERVER_UPDATE_INTERVAL_MINUTES : defaultIntervalMinutes;
35
+ if (intervalMinutes === undefined) {
36
+ return { kind: 'ok', intervalMinutes: fallback };
37
+ }
38
+ if (typeof intervalMinutes !== 'number' || !Number.isFinite(intervalMinutes)) {
39
+ return { kind: 'invalid', error: `${context}.intervalMinutes must be a number` };
40
+ }
41
+ if (!Number.isInteger(intervalMinutes)) {
42
+ return { kind: 'invalid', error: `${context}.intervalMinutes must be an integer` };
43
+ }
44
+ if (hasEntry) {
45
+ if (intervalMinutes < DYNAMIC_WIDGET_SERVER_UPDATE_INTERVAL_MINUTES) {
46
+ return {
47
+ kind: 'clamped',
48
+ intervalMinutes: DYNAMIC_WIDGET_SERVER_UPDATE_INTERVAL_MINUTES,
49
+ warning: `${context}.intervalMinutes is ${intervalMinutes}, below the ` +
50
+ `${DYNAMIC_WIDGET_SERVER_UPDATE_INTERVAL_MINUTES} minute floor for widgets with an entry. ` +
51
+ `Using ${DYNAMIC_WIDGET_SERVER_UPDATE_INTERVAL_MINUTES}.`,
52
+ };
53
+ }
54
+ return { kind: 'ok', intervalMinutes };
55
+ }
56
+ if (intervalMinutes < minimumIntervalMinutes) {
57
+ return { kind: 'invalid', error: `${context}.intervalMinutes must be at least ${minimumIntervalMinutes}` };
58
+ }
59
+ return { kind: 'ok', intervalMinutes };
60
+ }
61
+ /**
62
+ * Checks `serverUpdate.url`. An absent URL is fine — the app supplies it at runtime through
63
+ * `setWidgetServerUpdate`.
64
+ *
65
+ * A URL that is not an absolute `http`/`https` URL is rejected: no platform HTTP stack here
66
+ * accepts one, so such a config could only ever have failed to fetch. Plain `http` to a
67
+ * non-local host is reported as insecure rather than rejected — App Transport Security and
68
+ * Android's cleartext policy already block it in a release build, and rejecting it outright
69
+ * would break configs that point at a LAN dev server.
70
+ */
71
+ export function resolveServerUpdateUrl(url, context) {
72
+ if (url === undefined) {
73
+ return { kind: 'ok' };
74
+ }
75
+ if (typeof url !== 'string' || !url.trim()) {
76
+ return { kind: 'invalid', error: `${context}.url must be a non-empty string` };
77
+ }
78
+ let parsed;
79
+ try {
80
+ parsed = new URL(url);
81
+ }
82
+ catch {
83
+ return { kind: 'invalid', error: `${context}.url must be an absolute http(s) URL, received '${url}'` };
84
+ }
85
+ if (parsed.protocol === 'https:') {
86
+ return { kind: 'ok' };
87
+ }
88
+ if (parsed.protocol !== 'http:') {
89
+ return { kind: 'invalid', error: `${context}.url must be an absolute http(s) URL, received '${url}'` };
90
+ }
91
+ if (isLocalHttpHost(parsed.hostname)) {
92
+ return { kind: 'ok' };
93
+ }
94
+ return {
95
+ kind: 'insecure',
96
+ warning: `${context}.url uses plain http ('${url}'). Release builds block cleartext traffic, so the ` +
97
+ 'widget will not fetch outside a development build. Use https, or a local dev host ' +
98
+ `(${[...LOCAL_HTTP_HOSTS].join(', ')}).`,
99
+ };
100
+ }
101
+ /** True for the hosts Voltra allows over plain `http` — dev servers reachable from a simulator. */
102
+ export function isLocalHttpHost(hostname) {
103
+ return LOCAL_HTTP_HOSTS.has(hostname.replace(/^\[|\]$/g, ''));
104
+ }
105
+ /** Validates `serverUpdate.refresh`. Returns an error message, or `undefined` when it is fine. */
106
+ export function validateServerUpdateRefresh(refresh, context) {
107
+ if (refresh !== undefined && typeof refresh !== 'boolean') {
108
+ return `${context}.refresh must be a boolean`;
109
+ }
110
+ return undefined;
111
+ }
112
+ //# sourceMappingURL=serverUpdate.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"serverUpdate.js","sourceRoot":"","sources":["../../../src/config/serverUpdate.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,20 @@
1
+ /** Default prefix of a widget's WidgetKit `kind`: `Voltra_Widget_<id>`. Mirrors `VoltraStorageKeys.widgetKindPrefix`. */
2
+ export const IOS_WIDGET_KIND_PREFIX = 'Voltra_Widget_';
3
+ /** WidgetKit `kind` of a widget: the `kind` option when set, else `Voltra_Widget_<id>`. */
4
+ export function iosWidgetKind(widget) {
5
+ return widget.kind ?? `${IOS_WIDGET_KIND_PREFIX}${widget.id}`;
6
+ }
7
+ /**
8
+ * `{ id: kind }` for the widgets that pin a custom `kind`, or undefined when none does.
9
+ * Written to both Info.plists (`Voltra_WidgetKinds`) so native code maps ids to kinds and back.
10
+ */
11
+ export function iosWidgetKindOverrides(widgets) {
12
+ const overrides = {};
13
+ for (const widget of widgets) {
14
+ if (widget.kind !== undefined) {
15
+ overrides[widget.id] = widget.kind;
16
+ }
17
+ }
18
+ return Object.keys(overrides).length > 0 ? overrides : undefined;
19
+ }
20
+ //# sourceMappingURL=widgetKind.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"widgetKind.js","sourceRoot":"","sources":["../../../src/config/widgetKind.ts"],"names":[],"mappings":"AAEA,yHAAyH;AACzH,MAAM,CAAC,MAAM,sBAAsB,GAAG,gBAAgB,CAAA;AAEtD,2FAA2F;AAC3F,MAAM,UAAU,aAAa,CAAC,MAA4C;IACxE,OAAO,MAAM,CAAC,IAAI,IAAI,GAAG,sBAAsB,GAAG,MAAM,CAAC,EAAE,EAAE,CAAA;AAC/D,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,sBAAsB,CACpC,OAA+C;IAE/C,MAAM,SAAS,GAA2B,EAAE,CAAA;IAE5C,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE,CAAC;QAC7B,IAAI,MAAM,CAAC,IAAI,KAAK,SAAS,EAAE,CAAC;YAC9B,SAAS,CAAC,MAAM,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC,IAAI,CAAA;QACpC,CAAC;IACH,CAAC;IAED,OAAO,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS,CAAA;AAClE,CAAC"}
@@ -25,6 +25,14 @@ export function getMissingPlatformPackages(projectRoot, platform) {
25
25
  export function requirePlatformPackage(projectRoot, platform) {
26
26
  return createProjectRequire(projectRoot)(getPlatformPackageName(platform));
27
27
  }
28
+ export function getPlatformClientPackageVersion(projectRoot, platform) {
29
+ const packageName = getPlatformClientPackageName(platform);
30
+ const manifest = createProjectRequire(projectRoot)(`${packageName}/package.json`);
31
+ if (typeof manifest.version !== 'string' || manifest.version.length === 0) {
32
+ throw new Error(`Package ${packageName} does not declare a valid version.`);
33
+ }
34
+ return manifest.version;
35
+ }
28
36
  export function getMissingPlatformPackageMessage(platform, packageNames = getRequiredPlatformPackageNames(platform)) {
29
37
  const packageLabel = packageNames.length === 1 ? 'package' : 'packages';
30
38
  const verb = packageNames.length === 1 ? 'is' : 'are';
@@ -1 +1 @@
1
- {"version":3,"file":"platformPackages.js","sourceRoot":"","sources":["../../../src/dependencies/platformPackages.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"platformPackages.js","sourceRoot":"","sources":["../../../src/dependencies/platformPackages.ts"],"names":[],"mappings":"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"}