@use-voltra/expo-plugin 2.0.0-rc.4 → 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.
@@ -1,13 +1,15 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.widgetLabelEnglish = exports.isWidgetLocalizedMap = exports.prerenderWidgetState = exports.logger = exports.pickLocalizedValue = exports.normalizeLocaleTag = exports.resolveFontPaths = exports.addApplicationGroupsEntitlement = exports.validateWidgetLabel = exports.validateInitialStatePath = exports.validateHomeScreenWidgetId = exports.assertValidLocaleKey = exports.MODULE_EXTENSIONS = exports.MAX_IMAGE_SIZE_BYTES = void 0;
3
+ exports.widgetLabelEnglish = exports.isWidgetLocalizedMap = exports.prerenderWidgetState = exports.evaluateWidgetModuleExports = exports.evaluateWidgetModule = exports.logger = exports.pickLocalizedValue = exports.normalizeLocaleTag = exports.resolveFontPaths = exports.addApplicationGroupsEntitlement = exports.validateWidgetLabel = exports.validateWidgetEntry = exports.validateInitialStatePath = exports.validateHomeScreenWidgetId = exports.normalizeWidgetEntryPath = exports.assertValidLocaleKey = exports.MODULE_EXTENSIONS = exports.MAX_IMAGE_SIZE_BYTES = void 0;
4
4
  var constants_1 = require("./constants");
5
5
  Object.defineProperty(exports, "MAX_IMAGE_SIZE_BYTES", { enumerable: true, get: function () { return constants_1.MAX_IMAGE_SIZE_BYTES; } });
6
6
  Object.defineProperty(exports, "MODULE_EXTENSIONS", { enumerable: true, get: function () { return constants_1.MODULE_EXTENSIONS; } });
7
7
  var validation_1 = require("./validation");
8
8
  Object.defineProperty(exports, "assertValidLocaleKey", { enumerable: true, get: function () { return validation_1.assertValidLocaleKey; } });
9
+ Object.defineProperty(exports, "normalizeWidgetEntryPath", { enumerable: true, get: function () { return validation_1.normalizeWidgetEntryPath; } });
9
10
  Object.defineProperty(exports, "validateHomeScreenWidgetId", { enumerable: true, get: function () { return validation_1.validateHomeScreenWidgetId; } });
10
11
  Object.defineProperty(exports, "validateInitialStatePath", { enumerable: true, get: function () { return validation_1.validateInitialStatePath; } });
12
+ Object.defineProperty(exports, "validateWidgetEntry", { enumerable: true, get: function () { return validation_1.validateWidgetEntry; } });
11
13
  Object.defineProperty(exports, "validateWidgetLabel", { enumerable: true, get: function () { return validation_1.validateWidgetLabel; } });
12
14
  var entitlements_1 = require("./utils/entitlements");
13
15
  Object.defineProperty(exports, "addApplicationGroupsEntitlement", { enumerable: true, get: function () { return entitlements_1.addApplicationGroupsEntitlement; } });
@@ -19,6 +21,8 @@ Object.defineProperty(exports, "pickLocalizedValue", { enumerable: true, get: fu
19
21
  var logger_1 = require("./utils/logger");
20
22
  Object.defineProperty(exports, "logger", { enumerable: true, get: function () { return logger_1.logger; } });
21
23
  var prerender_1 = require("./utils/prerender");
24
+ Object.defineProperty(exports, "evaluateWidgetModule", { enumerable: true, get: function () { return prerender_1.evaluateWidgetModule; } });
25
+ Object.defineProperty(exports, "evaluateWidgetModuleExports", { enumerable: true, get: function () { return prerender_1.evaluateWidgetModuleExports; } });
22
26
  Object.defineProperty(exports, "prerenderWidgetState", { enumerable: true, get: function () { return prerender_1.prerenderWidgetState; } });
23
27
  var widgetLabel_1 = require("./utils/widgetLabel");
24
28
  Object.defineProperty(exports, "isWidgetLocalizedMap", { enumerable: true, get: function () { return widgetLabel_1.isWidgetLocalizedMap; } });
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":";;;AAAA,yCAAqE;AAA5D,iHAAA,oBAAoB,OAAA;AAAE,8GAAA,iBAAiB,OAAA;AAEhD,2CAKqB;AAJnB,kHAAA,oBAAoB,OAAA;AACpB,wHAAA,0BAA0B,OAAA;AAC1B,sHAAA,wBAAwB,OAAA;AACxB,iHAAA,mBAAmB,OAAA;AAErB,qDAAsE;AAA7D,+HAAA,+BAA+B,OAAA;AACxC,uCAAgD;AAAvC,yGAAA,gBAAgB,OAAA;AACzB,iDAA2E;AAAlE,gHAAA,kBAAkB,OAAA;AAAE,gHAAA,kBAAkB,OAAA;AAC/C,yCAAuC;AAA9B,gGAAA,MAAM,OAAA;AAEf,+CAAwD;AAA/C,iHAAA,oBAAoB,OAAA;AAC7B,mDAA8E;AAArE,mHAAA,oBAAoB,OAAA;AAAE,iHAAA,kBAAkB,OAAA"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":";;;AAAA,yCAAqE;AAA5D,iHAAA,oBAAoB,OAAA;AAAE,8GAAA,iBAAiB,OAAA;AAUhD,2CAOqB;AANnB,kHAAA,oBAAoB,OAAA;AACpB,sHAAA,wBAAwB,OAAA;AACxB,wHAAA,0BAA0B,OAAA;AAC1B,sHAAA,wBAAwB,OAAA;AACxB,iHAAA,mBAAmB,OAAA;AACnB,iHAAA,mBAAmB,OAAA;AAErB,qDAAsE;AAA7D,+HAAA,+BAA+B,OAAA;AACxC,uCAAgD;AAAvC,yGAAA,gBAAgB,OAAA;AACzB,iDAA2E;AAAlE,gHAAA,kBAAkB,OAAA;AAAE,gHAAA,kBAAkB,OAAA;AAC/C,yCAAuC;AAA9B,gGAAA,MAAM,OAAA;AAEf,+CAA2G;AAAlG,iHAAA,oBAAoB,OAAA;AAAE,wHAAA,2BAA2B,OAAA;AAAE,iHAAA,oBAAoB,OAAA;AAChF,mDAA8E;AAArE,mHAAA,oBAAoB,OAAA;AAAE,iHAAA,kBAAkB,OAAA"}
@@ -36,13 +36,21 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
36
36
  return (mod && mod.__esModule) ? mod : { "default": mod };
37
37
  };
38
38
  Object.defineProperty(exports, "__esModule", { value: true });
39
+ exports.evaluateWidgetModuleExports = evaluateWidgetModuleExports;
40
+ exports.evaluateWidgetModule = evaluateWidgetModule;
39
41
  exports.prerenderWidgetState = prerenderWidgetState;
40
42
  const node_fs_1 = __importDefault(require("node:fs"));
41
43
  const node_path_1 = __importDefault(require("node:path"));
44
+ const node_module_1 = require("node:module");
42
45
  const node_vm_1 = __importDefault(require("node:vm"));
43
46
  const babel = __importStar(require("@babel/core"));
44
47
  const constants_1 = require("../constants");
48
+ const logger_1 = require("./logger");
45
49
  const widgetLabel_1 = require("./widgetLabel");
50
+ const PRERENDER_PACKAGE_REDIRECTS = {
51
+ '@use-voltra/ios-client': '@use-voltra/ios',
52
+ '@use-voltra/android-client': '@use-voltra/android',
53
+ };
46
54
  /**
47
55
  * Check if a module specifier is a relative or absolute path (local file)
48
56
  */
@@ -104,17 +112,30 @@ function transpileFile(filePath, projectRoot) {
104
112
  * Evaluate a widget module using Babel transpilation and Node.js VM.
105
113
  * This allows executing widget code that uses JSX and React components.
106
114
  * Local module dependencies are also transpiled with the same Babel settings.
115
+ *
116
+ * Exported so platform-specific prerender flows can reuse the same module loader rather
117
+ * than duplicating the Babel + VM scaffolding. The returned value is the module's exports
118
+ * object — callers decide whether to read `.default`, a named export, etc.
107
119
  */
108
- function evaluateWidgetModule(projectRoot, filePath) {
120
+ function evaluateWidgetModuleExports(projectRoot, filePath, warnedRedirects = new Set()) {
109
121
  // Cache for already-evaluated modules to handle circular dependencies
110
122
  const moduleCache = new Map();
123
+ const projectRequire = (0, node_module_1.createRequire)(node_path_1.default.join(projectRoot, 'package.json'));
111
124
  /**
112
125
  * Custom require that transpiles local modules with Babel
113
126
  */
114
127
  function customRequire(moduleSpecifier, currentDir) {
115
128
  // For non-local modules (npm packages), use native require
116
129
  if (!isLocalModule(moduleSpecifier)) {
117
- return require(moduleSpecifier);
130
+ const redirectedSpecifier = PRERENDER_PACKAGE_REDIRECTS[moduleSpecifier];
131
+ if (redirectedSpecifier) {
132
+ if (!warnedRedirects.has(moduleSpecifier)) {
133
+ warnedRedirects.add(moduleSpecifier);
134
+ logger_1.logger.warn(`Prerendering initial state imported '${moduleSpecifier}'. Using '${redirectedSpecifier}' instead.`);
135
+ }
136
+ return projectRequire(redirectedSpecifier);
137
+ }
138
+ return projectRequire(moduleSpecifier);
118
139
  }
119
140
  // Resolve the local module path
120
141
  const resolvedPath = resolveModulePath(moduleSpecifier, currentDir);
@@ -148,8 +169,13 @@ function evaluateWidgetModule(projectRoot, filePath) {
148
169
  moduleCache.set(resolvedPath, mockModule.exports);
149
170
  return mockModule.exports;
150
171
  }
151
- // Evaluate the entry module
152
- const exports = customRequire(filePath, node_path_1.default.dirname(filePath));
172
+ return customRequire(filePath, node_path_1.default.dirname(filePath));
173
+ }
174
+ /**
175
+ * Evaluate a widget file as a server-style WidgetVariants module and return its object export.
176
+ */
177
+ function evaluateWidgetModule(projectRoot, filePath, warnedRedirects = new Set()) {
178
+ const exports = evaluateWidgetModuleExports(projectRoot, filePath, warnedRedirects);
153
179
  const widgetVariants = exports.default || exports;
154
180
  if (!widgetVariants || typeof widgetVariants !== 'object') {
155
181
  throw new Error('Widget file must export a WidgetVariants object or have a default export of WidgetVariants');
@@ -170,6 +196,7 @@ function evaluateWidgetModule(projectRoot, filePath) {
170
196
  */
171
197
  async function prerenderWidgetState(widgets, projectRoot, renderer) {
172
198
  const prerenderedStates = new Map();
199
+ const warnedRedirects = new Set();
173
200
  for (const widget of widgets) {
174
201
  if (!widget.initialStatePath) {
175
202
  continue;
@@ -182,7 +209,7 @@ async function prerenderWidgetState(widgets, projectRoot, renderer) {
182
209
  try {
183
210
  for (const [localeKey, relativePath] of Object.entries(perLocalePaths)) {
184
211
  const absoluteWidgetPath = node_path_1.default.resolve(projectRoot, relativePath);
185
- const widgetVariants = evaluateWidgetModule(projectRoot, absoluteWidgetPath);
212
+ const widgetVariants = evaluateWidgetModule(projectRoot, absoluteWidgetPath, warnedRedirects);
186
213
  const prerenderedState = renderer(widgetVariants);
187
214
  inner.set(localeKey, prerenderedState);
188
215
  }
@@ -1 +1 @@
1
- {"version":3,"file":"prerender.js","sourceRoot":"","sources":["../../../src/utils/prerender.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAiLA,oDAmCC;AApND,sDAAwB;AACxB,0DAA4B;AAC5B,sDAAwB;AAExB,mDAAoC;AAEpC,4CAAgD;AAEhD,+CAAoD;AAkBpD;;GAEG;AACH,SAAS,aAAa,CAAC,eAAuB;IAC5C,OAAO,eAAe,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,eAAe,CAAC,UAAU,CAAC,GAAG,CAAC,CAAA;AAC3E,CAAC;AAED;;GAEG;AACH,SAAS,iBAAiB,CAAC,eAAuB,EAAE,OAAe;IACjE,MAAM,QAAQ,GAAG,mBAAI,CAAC,OAAO,CAAC,OAAO,EAAE,eAAe,CAAC,CAAA;IAEvD,KAAK,MAAM,GAAG,IAAI,6BAAiB,EAAE,CAAC;QACpC,MAAM,QAAQ,GAAG,QAAQ,GAAG,GAAG,CAAA;QAC/B,IAAI,iBAAE,CAAC,UAAU,CAAC,QAAQ,CAAC,IAAI,iBAAE,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC;YAC9D,OAAO,QAAQ,CAAA;QACjB,CAAC;IACH,CAAC;IAED,sCAAsC;IACtC,IAAI,iBAAE,CAAC,UAAU,CAAC,QAAQ,CAAC,IAAI,iBAAE,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,WAAW,EAAE,EAAE,CAAC;QACnE,KAAK,MAAM,GAAG,IAAI,6BAAiB,EAAE,CAAC;YACpC,MAAM,SAAS,GAAG,mBAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,OAAO,GAAG,GAAG,CAAC,CAAA;YACpD,IAAI,iBAAE,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE,CAAC;gBAC7B,OAAO,SAAS,CAAA;YAClB,CAAC;QACH,CAAC;IACH,CAAC;IAED,OAAO,IAAI,CAAA;AACb,CAAC;AAED,SAAS,yBAAyB,CAAC,WAAmB;IACpD,MAAM,UAAU,GAAG,mBAAI,CAAC,IAAI,CAAC,WAAW,EAAE,iBAAiB,CAAC,CAAA;IAC5D,OAAO,iBAAE,CAAC,UAAU,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,IAAI,CAAA;AACtD,CAAC;AAED,SAAS,qBAAqB,CAAC,WAAmB;IAChD,OAAO,OAAO,CAAC,OAAO,CAAC,mBAAmB,EAAE,EAAE,KAAK,EAAE,CAAC,WAAW,CAAC,EAAE,CAAC,CAAA;AACvE,CAAC;AAED;;GAEG;AACH,SAAS,aAAa,CAAC,QAAgB,EAAE,WAAmB;IAC1D,MAAM,IAAI,GAAG,iBAAE,CAAC,YAAY,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAA;IAC9C,MAAM,sBAAsB,GAAG,yBAAyB,CAAC,WAAW,CAAC,CAAA;IAErE,MAAM,MAAM,GAAG,KAAK,CAAC,aAAa,CAAC,IAAI,EAAE;QACvC,GAAG,EAAE,WAAW;QAChB,QAAQ,EAAE,QAAQ;QAClB,GAAG,CAAC,sBAAsB;YACxB,CAAC,CAAC,EAAE,UAAU,EAAE,sBAAsB,EAAE;YACxC,CAAC,CAAC;gBACE,OAAO,EAAE,KAAK;gBACd,UAAU,EAAE,KAAK;gBACjB,OAAO,EAAE,CAAC,qBAAqB,CAAC,WAAW,CAAC,CAAC;aAC9C,CAAC;KACP,CAAC,CAAA;IAEF,IAAI,CAAC,MAAM,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC;QAC5B,MAAM,IAAI,KAAK,CAAC,kCAAkC,QAAQ,EAAE,CAAC,CAAA;IAC/D,CAAC;IAED,OAAO,MAAM,CAAC,IAAI,CAAA;AACpB,CAAC;AAED;;;;GAIG;AACH,SAAS,oBAAoB,CAAC,WAAmB,EAAE,QAAgB;IACjE,sEAAsE;IACtE,MAAM,WAAW,GAAG,IAAI,GAAG,EAAe,CAAA;IAE1C;;OAEG;IACH,SAAS,aAAa,CAAC,eAAuB,EAAE,UAAkB;QAChE,2DAA2D;QAC3D,IAAI,CAAC,aAAa,CAAC,eAAe,CAAC,EAAE,CAAC;YACpC,OAAO,OAAO,CAAC,eAAe,CAAC,CAAA;QACjC,CAAC;QAED,gCAAgC;QAChC,MAAM,YAAY,GAAG,iBAAiB,CAAC,eAAe,EAAE,UAAU,CAAC,CAAA;QACnE,IAAI,CAAC,YAAY,EAAE,CAAC;YAClB,MAAM,IAAI,KAAK,CAAC,0BAA0B,eAAe,WAAW,UAAU,GAAG,CAAC,CAAA;QACpF,CAAC;QAED,4CAA4C;QAC5C,IAAI,WAAW,CAAC,GAAG,CAAC,YAAY,CAAC,EAAE,CAAC;YAClC,OAAO,WAAW,CAAC,GAAG,CAAC,YAAY,CAAC,CAAA;QACtC,CAAC;QAED,oCAAoC;QACpC,MAAM,cAAc,GAAG,aAAa,CAAC,YAAY,EAAE,WAAW,CAAC,CAAA;QAC/D,MAAM,SAAS,GAAG,mBAAI,CAAC,OAAO,CAAC,YAAY,CAAC,CAAA;QAE5C,MAAM,UAAU,GAAG,EAAE,OAAO,EAAE,EAAS,EAAE,CAAA;QAEzC,0DAA0D;QAC1D,MAAM,YAAY,GAAG,CAAC,IAAY,EAAE,EAAE,CAAC,aAAa,CAAC,IAAI,EAAE,SAAS,CAAC,CAAA;QAErE,MAAM,OAAO,GAAG,iBAAE,CAAC,aAAa,CAAC;YAC/B,OAAO,EAAE,UAAU,CAAC,OAAO;YAC3B,MAAM,EAAE,UAAU;YAClB,OAAO,EAAE,YAAY;YACrB,UAAU,EAAE,YAAY;YACxB,SAAS,EAAE,SAAS;YACpB,OAAO,EAAE,OAAO;YAChB,OAAO,EAAE,OAAO;SACjB,CAAC,CAAA;QAEF,0DAA0D;QAC1D,WAAW,CAAC,GAAG,CAAC,YAAY,EAAE,UAAU,CAAC,OAAO,CAAC,CAAA;QAEjD,MAAM,MAAM,GAAG,IAAI,iBAAE,CAAC,MAAM,CAAC,cAAc,EAAE,EAAE,QAAQ,EAAE,YAAY,EAAE,CAAC,CAAA;QACxE,MAAM,CAAC,YAAY,CAAC,OAAO,CAAC,CAAA;QAE5B,0EAA0E;QAC1E,WAAW,CAAC,GAAG,CAAC,YAAY,EAAE,UAAU,CAAC,OAAO,CAAC,CAAA;QAEjD,OAAO,UAAU,CAAC,OAAO,CAAA;IAC3B,CAAC;IAED,4BAA4B;IAC5B,MAAM,OAAO,GAAG,aAAa,CAAC,QAAQ,EAAE,mBAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAA;IAC/D,MAAM,cAAc,GAAQ,OAAO,CAAC,OAAO,IAAI,OAAO,CAAA;IAEtD,IAAI,CAAC,cAAc,IAAI,OAAO,cAAc,KAAK,QAAQ,EAAE,CAAC;QAC1D,MAAM,IAAI,KAAK,CAAC,4FAA4F,CAAC,CAAA;IAC/G,CAAC;IAED,OAAO,cAAc,CAAA;AACvB,CAAC;AAED;;;;;;;;;;;GAWG;AACI,KAAK,UAAU,oBAAoB,CACxC,OAA8B,EAC9B,WAAmB,EACnB,QAAwB;IAExB,MAAM,iBAAiB,GAA4B,IAAI,GAAG,EAAE,CAAA;IAE5D,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE,CAAC;QAC7B,IAAI,CAAC,MAAM,CAAC,gBAAgB,EAAE,CAAC;YAC7B,SAAQ;QACV,CAAC;QAED,MAAM,QAAQ,GAAG,MAAM,CAAC,gBAAgB,CAAA;QACxC,MAAM,cAAc,GAA2B,IAAA,kCAAoB,EAAC,QAAuB,CAAC;YAC1F,CAAC,CAAE,QAAmC;YACtC,CAAC,CAAC,EAAE,SAAS,EAAE,QAAkB,EAAE,CAAA;QAErC,MAAM,KAAK,GAAG,IAAI,GAAG,EAAkB,CAAA;QAEvC,IAAI,CAAC;YACH,KAAK,MAAM,CAAC,SAAS,EAAE,YAAY,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,cAAc,CAAC,EAAE,CAAC;gBACvE,MAAM,kBAAkB,GAAG,mBAAI,CAAC,OAAO,CAAC,WAAW,EAAE,YAAY,CAAC,CAAA;gBAClE,MAAM,cAAc,GAAG,oBAAoB,CAAC,WAAW,EAAE,kBAAkB,CAAC,CAAA;gBAC5E,MAAM,gBAAgB,GAAG,QAAQ,CAAC,cAAc,CAAC,CAAA;gBACjD,KAAK,CAAC,GAAG,CAAC,SAAS,EAAE,gBAAgB,CAAC,CAAA;YACxC,CAAC;YACD,iBAAiB,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,EAAE,KAAK,CAAC,CAAA;QACzC,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,IAAI,KAAK,CACb,wCAAwC,MAAM,CAAC,EAAE,KAAK,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,OAAO,iBAAiB,CAAA;AAC1B,CAAC"}
1
+ {"version":3,"file":"prerender.js","sourceRoot":"","sources":["../../../src/utils/prerender.ts"],"names":[],"mappings":"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"}
@@ -36,6 +36,8 @@ Object.defineProperty(exports, "__esModule", { value: true });
36
36
  exports.validateHomeScreenWidgetId = validateHomeScreenWidgetId;
37
37
  exports.assertValidLocaleKey = assertValidLocaleKey;
38
38
  exports.validateWidgetLabel = validateWidgetLabel;
39
+ exports.normalizeWidgetEntryPath = normalizeWidgetEntryPath;
40
+ exports.validateWidgetEntry = validateWidgetEntry;
39
41
  exports.validateInitialStatePath = validateInitialStatePath;
40
42
  const fs = __importStar(require("fs"));
41
43
  const path = __importStar(require("path"));
@@ -46,6 +48,17 @@ const WIDGET_ID_PATTERN = /^[a-zA-Z_][a-zA-Z0-9_]*$/;
46
48
  */
47
49
  const LOCALE_KEY_PATTERN = /^[a-zA-Z][a-zA-Z0-9]*([_-][a-zA-Z0-9]+)*$/;
48
50
  const MAX_LOCALE_KEY_LENGTH = 32;
51
+ const WIDGET_ENTRY_EXTENSIONS = new Set(['.js', '.jsx', '.ts', '.tsx', '.mjs', '.cjs']);
52
+ const WIDGET_ENTRY_FIELD_NAME = 'entry';
53
+ function isAbsoluteWidgetPath(value) {
54
+ return path.isAbsolute(value) || path.win32.isAbsolute(value) || /^[a-zA-Z]:[\\/]/.test(value);
55
+ }
56
+ function normalizeWidgetEntry(entry) {
57
+ return path.posix.normalize(entry.replace(/\\/g, '/'));
58
+ }
59
+ function widgetEntryExtension(entry) {
60
+ return path.posix.extname(entry);
61
+ }
49
62
  function validateHomeScreenWidgetId(widgetId) {
50
63
  if (!widgetId || typeof widgetId !== 'string') {
51
64
  throw new Error('Widget ID is required and must be a string');
@@ -97,6 +110,48 @@ function validateWidgetLabel(value, widgetId, fieldName) {
97
110
  }
98
111
  }
99
112
  }
113
+ function normalizeWidgetEntryPath(entry, projectRoot) {
114
+ const normalizedInput = normalizeWidgetEntry(entry);
115
+ if (projectRoot) {
116
+ const absolutePath = path.resolve(projectRoot, normalizedInput);
117
+ const relativePath = path.relative(projectRoot, absolutePath);
118
+ return normalizeWidgetEntry(relativePath);
119
+ }
120
+ return normalizedInput;
121
+ }
122
+ function validateWidgetEntry(value, widgetId, projectRoot) {
123
+ if (typeof value !== 'string' || !value.trim()) {
124
+ throw new Error(`Widget '${widgetId}': ${WIDGET_ENTRY_FIELD_NAME} is required`);
125
+ }
126
+ if (isAbsoluteWidgetPath(value)) {
127
+ throw new Error(`Widget '${widgetId}': ${WIDGET_ENTRY_FIELD_NAME} must be a relative path, not an absolute path`);
128
+ }
129
+ const normalizedEntry = normalizeWidgetEntryPath(value);
130
+ if (!normalizedEntry || normalizedEntry === '.') {
131
+ throw new Error(`Widget '${widgetId}': ${WIDGET_ENTRY_FIELD_NAME} must point to a file inside the project root`);
132
+ }
133
+ if (normalizedEntry === '..' || normalizedEntry.startsWith('../')) {
134
+ throw new Error(`Widget '${widgetId}': ${WIDGET_ENTRY_FIELD_NAME} must stay within the project root after normalization`);
135
+ }
136
+ const extension = widgetEntryExtension(normalizedEntry);
137
+ if (!WIDGET_ENTRY_EXTENSIONS.has(extension)) {
138
+ throw new Error(`Widget '${widgetId}': ${WIDGET_ENTRY_FIELD_NAME} must use a Metro-importable source extension ` +
139
+ `(${Array.from(WIDGET_ENTRY_EXTENSIONS).join(', ')}); received '${extension || '(none)'}'`);
140
+ }
141
+ if (!projectRoot) {
142
+ return normalizedEntry;
143
+ }
144
+ const normalizedInput = normalizeWidgetEntry(value);
145
+ const absolutePath = path.resolve(projectRoot, normalizedInput);
146
+ const normalizedProjectRelativePath = normalizeWidgetEntryPath(normalizedInput, projectRoot);
147
+ if (normalizedProjectRelativePath === '..' || normalizedProjectRelativePath.startsWith('../')) {
148
+ throw new Error(`Widget '${widgetId}': ${WIDGET_ENTRY_FIELD_NAME} must stay within the project root after normalization`);
149
+ }
150
+ if (!fs.existsSync(absolutePath) || !fs.statSync(absolutePath).isFile()) {
151
+ throw new Error(`Widget '${widgetId}': ${WIDGET_ENTRY_FIELD_NAME} file not found at ${normalizedProjectRelativePath}`);
152
+ }
153
+ return normalizedProjectRelativePath;
154
+ }
100
155
  /**
101
156
  * Validates optional initialStatePath: plain string or locale map of project-relative file paths.
102
157
  */
@@ -1 +1 @@
1
- {"version":3,"file":"validation.js","sourceRoot":"","sources":["../../src/validation.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"validation.js","sourceRoot":"","sources":["../../src/validation.ts"],"names":[],"mappings":"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"}
@@ -1,9 +1,9 @@
1
1
  export { MAX_IMAGE_SIZE_BYTES, MODULE_EXTENSIONS } from './constants';
2
- export { assertValidLocaleKey, validateHomeScreenWidgetId, validateInitialStatePath, validateWidgetLabel, } from './validation';
2
+ export { assertValidLocaleKey, normalizeWidgetEntryPath, validateHomeScreenWidgetId, validateInitialStatePath, validateWidgetEntry, validateWidgetLabel, } from './validation';
3
3
  export { addApplicationGroupsEntitlement } from './utils/entitlements';
4
4
  export { resolveFontPaths } from './utils/fonts';
5
5
  export { normalizeLocaleTag, pickLocalizedValue } from './utils/localePick';
6
6
  export { logger } from './utils/logger';
7
- export { prerenderWidgetState } from './utils/prerender';
7
+ export { evaluateWidgetModule, evaluateWidgetModuleExports, prerenderWidgetState } from './utils/prerender';
8
8
  export { isWidgetLocalizedMap, widgetLabelEnglish } from './utils/widgetLabel';
9
9
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,oBAAoB,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAA;AAErE,OAAO,EACL,oBAAoB,EACpB,0BAA0B,EAC1B,wBAAwB,EACxB,mBAAmB,GACpB,MAAM,cAAc,CAAA;AACrB,OAAO,EAAE,+BAA+B,EAAE,MAAM,sBAAsB,CAAA;AACtE,OAAO,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAA;AAChD,OAAO,EAAE,kBAAkB,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAA;AAC3E,OAAO,EAAE,MAAM,EAAE,MAAM,gBAAgB,CAAA;AAEvC,OAAO,EAAE,oBAAoB,EAAE,MAAM,mBAAmB,CAAA;AACxD,OAAO,EAAE,oBAAoB,EAAE,kBAAkB,EAAE,MAAM,qBAAqB,CAAA"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,oBAAoB,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAA;AAUrE,OAAO,EACL,oBAAoB,EACpB,wBAAwB,EACxB,0BAA0B,EAC1B,wBAAwB,EACxB,mBAAmB,EACnB,mBAAmB,GACpB,MAAM,cAAc,CAAA;AACrB,OAAO,EAAE,+BAA+B,EAAE,MAAM,sBAAsB,CAAA;AACtE,OAAO,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAA;AAChD,OAAO,EAAE,kBAAkB,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAA;AAC3E,OAAO,EAAE,MAAM,EAAE,MAAM,gBAAgB,CAAA;AAEvC,OAAO,EAAE,oBAAoB,EAAE,2BAA2B,EAAE,oBAAoB,EAAE,MAAM,mBAAmB,CAAA;AAC3G,OAAO,EAAE,oBAAoB,EAAE,kBAAkB,EAAE,MAAM,qBAAqB,CAAA"}
@@ -1,9 +1,15 @@
1
1
  import fs from 'node:fs';
2
2
  import path from 'node:path';
3
+ import { createRequire } from 'node:module';
3
4
  import vm from 'node:vm';
4
5
  import * as babel from '@babel/core';
5
6
  import { MODULE_EXTENSIONS } from '../constants';
7
+ import { logger } from './logger';
6
8
  import { isWidgetLocalizedMap } from './widgetLabel';
9
+ const PRERENDER_PACKAGE_REDIRECTS = {
10
+ '@use-voltra/ios-client': '@use-voltra/ios',
11
+ '@use-voltra/android-client': '@use-voltra/android',
12
+ };
7
13
  /**
8
14
  * Check if a module specifier is a relative or absolute path (local file)
9
15
  */
@@ -65,17 +71,30 @@ function transpileFile(filePath, projectRoot) {
65
71
  * Evaluate a widget module using Babel transpilation and Node.js VM.
66
72
  * This allows executing widget code that uses JSX and React components.
67
73
  * Local module dependencies are also transpiled with the same Babel settings.
74
+ *
75
+ * Exported so platform-specific prerender flows can reuse the same module loader rather
76
+ * than duplicating the Babel + VM scaffolding. The returned value is the module's exports
77
+ * object — callers decide whether to read `.default`, a named export, etc.
68
78
  */
69
- function evaluateWidgetModule(projectRoot, filePath) {
79
+ export function evaluateWidgetModuleExports(projectRoot, filePath, warnedRedirects = new Set()) {
70
80
  // Cache for already-evaluated modules to handle circular dependencies
71
81
  const moduleCache = new Map();
82
+ const projectRequire = createRequire(path.join(projectRoot, 'package.json'));
72
83
  /**
73
84
  * Custom require that transpiles local modules with Babel
74
85
  */
75
86
  function customRequire(moduleSpecifier, currentDir) {
76
87
  // For non-local modules (npm packages), use native require
77
88
  if (!isLocalModule(moduleSpecifier)) {
78
- return require(moduleSpecifier);
89
+ const redirectedSpecifier = PRERENDER_PACKAGE_REDIRECTS[moduleSpecifier];
90
+ if (redirectedSpecifier) {
91
+ if (!warnedRedirects.has(moduleSpecifier)) {
92
+ warnedRedirects.add(moduleSpecifier);
93
+ logger.warn(`Prerendering initial state imported '${moduleSpecifier}'. Using '${redirectedSpecifier}' instead.`);
94
+ }
95
+ return projectRequire(redirectedSpecifier);
96
+ }
97
+ return projectRequire(moduleSpecifier);
79
98
  }
80
99
  // Resolve the local module path
81
100
  const resolvedPath = resolveModulePath(moduleSpecifier, currentDir);
@@ -109,8 +128,13 @@ function evaluateWidgetModule(projectRoot, filePath) {
109
128
  moduleCache.set(resolvedPath, mockModule.exports);
110
129
  return mockModule.exports;
111
130
  }
112
- // Evaluate the entry module
113
- const exports = customRequire(filePath, path.dirname(filePath));
131
+ return customRequire(filePath, path.dirname(filePath));
132
+ }
133
+ /**
134
+ * Evaluate a widget file as a server-style WidgetVariants module and return its object export.
135
+ */
136
+ export function evaluateWidgetModule(projectRoot, filePath, warnedRedirects = new Set()) {
137
+ const exports = evaluateWidgetModuleExports(projectRoot, filePath, warnedRedirects);
114
138
  const widgetVariants = exports.default || exports;
115
139
  if (!widgetVariants || typeof widgetVariants !== 'object') {
116
140
  throw new Error('Widget file must export a WidgetVariants object or have a default export of WidgetVariants');
@@ -131,6 +155,7 @@ function evaluateWidgetModule(projectRoot, filePath) {
131
155
  */
132
156
  export async function prerenderWidgetState(widgets, projectRoot, renderer) {
133
157
  const prerenderedStates = new Map();
158
+ const warnedRedirects = new Set();
134
159
  for (const widget of widgets) {
135
160
  if (!widget.initialStatePath) {
136
161
  continue;
@@ -143,7 +168,7 @@ export async function prerenderWidgetState(widgets, projectRoot, renderer) {
143
168
  try {
144
169
  for (const [localeKey, relativePath] of Object.entries(perLocalePaths)) {
145
170
  const absoluteWidgetPath = path.resolve(projectRoot, relativePath);
146
- const widgetVariants = evaluateWidgetModule(projectRoot, absoluteWidgetPath);
171
+ const widgetVariants = evaluateWidgetModule(projectRoot, absoluteWidgetPath, warnedRedirects);
147
172
  const prerenderedState = renderer(widgetVariants);
148
173
  inner.set(localeKey, prerenderedState);
149
174
  }
@@ -1 +1 @@
1
- {"version":3,"file":"prerender.js","sourceRoot":"","sources":["../../../src/utils/prerender.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"prerender.js","sourceRoot":"","sources":["../../../src/utils/prerender.ts"],"names":[],"mappings":"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"}
@@ -7,6 +7,17 @@ const WIDGET_ID_PATTERN = /^[a-zA-Z_][a-zA-Z0-9_]*$/;
7
7
  */
8
8
  const LOCALE_KEY_PATTERN = /^[a-zA-Z][a-zA-Z0-9]*([_-][a-zA-Z0-9]+)*$/;
9
9
  const MAX_LOCALE_KEY_LENGTH = 32;
10
+ const WIDGET_ENTRY_EXTENSIONS = new Set(['.js', '.jsx', '.ts', '.tsx', '.mjs', '.cjs']);
11
+ const WIDGET_ENTRY_FIELD_NAME = 'entry';
12
+ function isAbsoluteWidgetPath(value) {
13
+ return path.isAbsolute(value) || path.win32.isAbsolute(value) || /^[a-zA-Z]:[\\/]/.test(value);
14
+ }
15
+ function normalizeWidgetEntry(entry) {
16
+ return path.posix.normalize(entry.replace(/\\/g, '/'));
17
+ }
18
+ function widgetEntryExtension(entry) {
19
+ return path.posix.extname(entry);
20
+ }
10
21
  export function validateHomeScreenWidgetId(widgetId) {
11
22
  if (!widgetId || typeof widgetId !== 'string') {
12
23
  throw new Error('Widget ID is required and must be a string');
@@ -58,6 +69,48 @@ export function validateWidgetLabel(value, widgetId, fieldName) {
58
69
  }
59
70
  }
60
71
  }
72
+ export function normalizeWidgetEntryPath(entry, projectRoot) {
73
+ const normalizedInput = normalizeWidgetEntry(entry);
74
+ if (projectRoot) {
75
+ const absolutePath = path.resolve(projectRoot, normalizedInput);
76
+ const relativePath = path.relative(projectRoot, absolutePath);
77
+ return normalizeWidgetEntry(relativePath);
78
+ }
79
+ return normalizedInput;
80
+ }
81
+ export function validateWidgetEntry(value, widgetId, projectRoot) {
82
+ if (typeof value !== 'string' || !value.trim()) {
83
+ throw new Error(`Widget '${widgetId}': ${WIDGET_ENTRY_FIELD_NAME} is required`);
84
+ }
85
+ if (isAbsoluteWidgetPath(value)) {
86
+ throw new Error(`Widget '${widgetId}': ${WIDGET_ENTRY_FIELD_NAME} must be a relative path, not an absolute path`);
87
+ }
88
+ const normalizedEntry = normalizeWidgetEntryPath(value);
89
+ if (!normalizedEntry || normalizedEntry === '.') {
90
+ throw new Error(`Widget '${widgetId}': ${WIDGET_ENTRY_FIELD_NAME} must point to a file inside the project root`);
91
+ }
92
+ if (normalizedEntry === '..' || normalizedEntry.startsWith('../')) {
93
+ throw new Error(`Widget '${widgetId}': ${WIDGET_ENTRY_FIELD_NAME} must stay within the project root after normalization`);
94
+ }
95
+ const extension = widgetEntryExtension(normalizedEntry);
96
+ if (!WIDGET_ENTRY_EXTENSIONS.has(extension)) {
97
+ throw new Error(`Widget '${widgetId}': ${WIDGET_ENTRY_FIELD_NAME} must use a Metro-importable source extension ` +
98
+ `(${Array.from(WIDGET_ENTRY_EXTENSIONS).join(', ')}); received '${extension || '(none)'}'`);
99
+ }
100
+ if (!projectRoot) {
101
+ return normalizedEntry;
102
+ }
103
+ const normalizedInput = normalizeWidgetEntry(value);
104
+ const absolutePath = path.resolve(projectRoot, normalizedInput);
105
+ const normalizedProjectRelativePath = normalizeWidgetEntryPath(normalizedInput, projectRoot);
106
+ if (normalizedProjectRelativePath === '..' || normalizedProjectRelativePath.startsWith('../')) {
107
+ throw new Error(`Widget '${widgetId}': ${WIDGET_ENTRY_FIELD_NAME} must stay within the project root after normalization`);
108
+ }
109
+ if (!fs.existsSync(absolutePath) || !fs.statSync(absolutePath).isFile()) {
110
+ throw new Error(`Widget '${widgetId}': ${WIDGET_ENTRY_FIELD_NAME} file not found at ${normalizedProjectRelativePath}`);
111
+ }
112
+ return normalizedProjectRelativePath;
113
+ }
61
114
  /**
62
115
  * Validates optional initialStatePath: plain string or locale map of project-relative file paths.
63
116
  */
@@ -1 +1 @@
1
- {"version":3,"file":"validation.js","sourceRoot":"","sources":["../../src/validation.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"validation.js","sourceRoot":"","sources":["../../src/validation.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,IAAI,CAAA;AACxB,OAAO,KAAK,IAAI,MAAM,MAAM,CAAA;AAI5B,mFAAmF;AACnF,MAAM,iBAAiB,GAAG,0BAA0B,CAAA;AAEpD;;GAEG;AACH,MAAM,kBAAkB,GAAG,2CAA2C,CAAA;AAEtE,MAAM,qBAAqB,GAAG,EAAE,CAAA;AAChC,MAAM,uBAAuB,GAAG,IAAI,GAAG,CAAC,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC,CAAA;AACvF,MAAM,uBAAuB,GAAG,OAAO,CAAA;AAEvC,SAAS,oBAAoB,CAAC,KAAa;IACzC,OAAO,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,IAAI,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,KAAK,CAAC,IAAI,iBAAiB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;AAChG,CAAC;AAED,SAAS,oBAAoB,CAAC,KAAa;IACzC,OAAO,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC,CAAA;AACxD,CAAC;AAED,SAAS,oBAAoB,CAAC,KAAa;IACzC,OAAO,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAA;AAClC,CAAC;AAED,MAAM,UAAU,0BAA0B,CAAC,QAAiB;IAC1D,IAAI,CAAC,QAAQ,IAAI,OAAO,QAAQ,KAAK,QAAQ,EAAE,CAAC;QAC9C,MAAM,IAAI,KAAK,CAAC,4CAA4C,CAAC,CAAA;IAC/D,CAAC;IAED,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC;QACtC,MAAM,IAAI,KAAK,CACb,cAAc,QAAQ,gBAAgB;YACpC,kGAAkG,CACrG,CAAA;IACH,CAAC;AACH,CAAC;AAED,MAAM,UAAU,oBAAoB,CAAC,SAAiB,EAAE,QAAgB,EAAE,SAAiB;IACzF,IAAI,SAAS,CAAC,IAAI,EAAE,KAAK,SAAS,EAAE,CAAC;QACnC,MAAM,IAAI,KAAK,CACb,WAAW,QAAQ,MAAM,SAAS,gBAAgB,SAAS,gDAAgD,CAC5G,CAAA;IACH,CAAC;IAED,IAAI,CAAC,SAAS,EAAE,CAAC;QACf,MAAM,IAAI,KAAK,CAAC,WAAW,QAAQ,MAAM,SAAS,0CAA0C,CAAC,CAAA;IAC/F,CAAC;IAED,IAAI,SAAS,CAAC,MAAM,GAAG,qBAAqB,EAAE,CAAC;QAC7C,MAAM,IAAI,KAAK,CACb,WAAW,QAAQ,MAAM,SAAS,gBAAgB,SAAS,aAAa,qBAAqB,aAAa,CAC3G,CAAA;IACH,CAAC;IAED,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,CAAC;QACxC,MAAM,IAAI,KAAK,CACb,WAAW,QAAQ,MAAM,SAAS,gBAAgB,SAAS,gBAAgB;YACzE,sGAAsG,CACzG,CAAA;IACH,CAAC;AACH,CAAC;AAED,MAAM,UAAU,mBAAmB,CAAC,KAAc,EAAE,QAAgB,EAAE,SAAiB;IACrF,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;QAC9B,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,EAAE,CAAC;YAClB,MAAM,IAAI,KAAK,CAAC,WAAW,QAAQ,MAAM,SAAS,cAAc,CAAC,CAAA;QACnE,CAAC;QACD,OAAM;IACR,CAAC;IAED,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;QACxE,MAAM,IAAI,KAAK,CACb,WAAW,QAAQ,MAAM,SAAS,uEAAuE,CAC1G,CAAA;IACH,CAAC;IAED,MAAM,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC,KAAgC,CAAC,CAAA;IAChE,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACzB,MAAM,IAAI,KAAK,CAAC,WAAW,QAAQ,MAAM,SAAS,+BAA+B,CAAC,CAAA;IACpF,CAAC;IAED,MAAM,UAAU,GAAG,IAAI,GAAG,EAAU,CAAA;IACpC,KAAK,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC,IAAI,OAAO,EAAE,CAAC;QAClC,oBAAoB,CAAC,MAAM,EAAE,QAAQ,EAAE,SAAS,CAAC,CAAA;QAEjD,MAAM,UAAU,GAAG,MAAM,CAAC,WAAW,EAAE,CAAC,OAAO,CAAC,IAAI,EAAE,GAAG,CAAC,CAAA;QAC1D,IAAI,UAAU,CAAC,GAAG,CAAC,UAAU,CAAC,EAAE,CAAC;YAC/B,MAAM,IAAI,KAAK,CACb,WAAW,QAAQ,MAAM,SAAS,uBAAuB,MAAM,wEAAwE,CACxI,CAAA;QACH,CAAC;QACD,UAAU,CAAC,GAAG,CAAC,UAAU,CAAC,CAAA;QAE1B,IAAI,OAAO,CAAC,KAAK,QAAQ,IAAI,CAAC,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC;YACvC,MAAM,IAAI,KAAK,CAAC,WAAW,QAAQ,MAAM,SAAS,IAAI,MAAM,6BAA6B,CAAC,CAAA;QAC5F,CAAC;IACH,CAAC;AACH,CAAC;AAED,MAAM,UAAU,wBAAwB,CAAC,KAAa,EAAE,WAAoB;IAC1E,MAAM,eAAe,GAAG,oBAAoB,CAAC,KAAK,CAAC,CAAA;IAEnD,IAAI,WAAW,EAAE,CAAC;QAChB,MAAM,YAAY,GAAG,IAAI,CAAC,OAAO,CAAC,WAAW,EAAE,eAAe,CAAC,CAAA;QAC/D,MAAM,YAAY,GAAG,IAAI,CAAC,QAAQ,CAAC,WAAW,EAAE,YAAY,CAAC,CAAA;QAC7D,OAAO,oBAAoB,CAAC,YAAY,CAAC,CAAA;IAC3C,CAAC;IAED,OAAO,eAAe,CAAA;AACxB,CAAC;AAED,MAAM,UAAU,mBAAmB,CAAC,KAAc,EAAE,QAAgB,EAAE,WAAoB;IACxF,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,EAAE,CAAC;QAC/C,MAAM,IAAI,KAAK,CAAC,WAAW,QAAQ,MAAM,uBAAuB,cAAc,CAAC,CAAA;IACjF,CAAC;IAED,IAAI,oBAAoB,CAAC,KAAK,CAAC,EAAE,CAAC;QAChC,MAAM,IAAI,KAAK,CAAC,WAAW,QAAQ,MAAM,uBAAuB,gDAAgD,CAAC,CAAA;IACnH,CAAC;IAED,MAAM,eAAe,GAAG,wBAAwB,CAAC,KAAK,CAAC,CAAA;IACvD,IAAI,CAAC,eAAe,IAAI,eAAe,KAAK,GAAG,EAAE,CAAC;QAChD,MAAM,IAAI,KAAK,CAAC,WAAW,QAAQ,MAAM,uBAAuB,+CAA+C,CAAC,CAAA;IAClH,CAAC;IAED,IAAI,eAAe,KAAK,IAAI,IAAI,eAAe,CAAC,UAAU,CAAC,KAAK,CAAC,EAAE,CAAC;QAClE,MAAM,IAAI,KAAK,CACb,WAAW,QAAQ,MAAM,uBAAuB,wDAAwD,CACzG,CAAA;IACH,CAAC;IAED,MAAM,SAAS,GAAG,oBAAoB,CAAC,eAAe,CAAC,CAAA;IACvD,IAAI,CAAC,uBAAuB,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE,CAAC;QAC5C,MAAM,IAAI,KAAK,CACb,WAAW,QAAQ,MAAM,uBAAuB,gDAAgD;YAC9F,IAAI,KAAK,CAAC,IAAI,CAAC,uBAAuB,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,gBAAgB,SAAS,IAAI,QAAQ,GAAG,CAC7F,CAAA;IACH,CAAC;IAED,IAAI,CAAC,WAAW,EAAE,CAAC;QACjB,OAAO,eAAe,CAAA;IACxB,CAAC;IAED,MAAM,eAAe,GAAG,oBAAoB,CAAC,KAAK,CAAC,CAAA;IACnD,MAAM,YAAY,GAAG,IAAI,CAAC,OAAO,CAAC,WAAW,EAAE,eAAe,CAAC,CAAA;IAC/D,MAAM,6BAA6B,GAAG,wBAAwB,CAAC,eAAe,EAAE,WAAW,CAAC,CAAA;IAE5F,IAAI,6BAA6B,KAAK,IAAI,IAAI,6BAA6B,CAAC,UAAU,CAAC,KAAK,CAAC,EAAE,CAAC;QAC9F,MAAM,IAAI,KAAK,CACb,WAAW,QAAQ,MAAM,uBAAuB,wDAAwD,CACzG,CAAA;IACH,CAAC;IAED,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,YAAY,CAAC,IAAI,CAAC,EAAE,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC;QACxE,MAAM,IAAI,KAAK,CACb,WAAW,QAAQ,MAAM,uBAAuB,sBAAsB,6BAA6B,EAAE,CACtG,CAAA;IACH,CAAC;IAED,OAAO,6BAA6B,CAAA;AACtC,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,wBAAwB,CACtC,KAAyC,EACzC,QAAgB,EAChB,WAAoB;IAEpB,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;QACxB,OAAM;IACR,CAAC;IAED,MAAM,gBAAgB,GAAG,CAAC,YAAoB,EAAE,GAAW,EAAE,EAAE;QAC7D,IAAI,CAAC,YAAY,CAAC,IAAI,EAAE,EAAE,CAAC;YACzB,MAAM,IAAI,KAAK,CAAC,WAAW,QAAQ,uBAAuB,GAAG,2BAA2B,CAAC,CAAA;QAC3F,CAAC;QACD,IAAI,WAAW,EAAE,CAAC;YAChB,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,YAAY,CAAC,CAAA;YACrD,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC;gBAC7B,MAAM,IAAI,KAAK,CAAC,WAAW,QAAQ,yCAAyC,YAAY,EAAE,CAAC,CAAA;YAC7F,CAAC;QACH,CAAC;IACH,CAAC,CAAA;IAED,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;QAC9B,gBAAgB,CAAC,KAAK,EAAE,EAAE,CAAC,CAAA;QAC3B,OAAM;IACR,CAAC;IAED,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;QACxE,MAAM,IAAI,KAAK,CACb,WAAW,QAAQ,6HAA6H,CACjJ,CAAA;IACH,CAAC;IAED,MAAM,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC,KAAgC,CAAC,CAAA;IAChE,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACzB,MAAM,IAAI,KAAK,CAAC,WAAW,QAAQ,kDAAkD,CAAC,CAAA;IACxF,CAAC;IAED,MAAM,UAAU,GAAG,IAAI,GAAG,EAAU,CAAA;IACpC,KAAK,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC,IAAI,OAAO,EAAE,CAAC;QAClC,oBAAoB,CAAC,MAAM,EAAE,QAAQ,EAAE,kBAAkB,CAAC,CAAA;QAE1D,MAAM,UAAU,GAAG,MAAM,CAAC,WAAW,EAAE,CAAC,OAAO,CAAC,IAAI,EAAE,GAAG,CAAC,CAAA;QAC1D,IAAI,UAAU,CAAC,GAAG,CAAC,UAAU,CAAC,EAAE,CAAC;YAC/B,MAAM,IAAI,KAAK,CACb,WAAW,QAAQ,0CAA0C,MAAM,mDAAmD,CACvH,CAAA;QACH,CAAC;QACD,UAAU,CAAC,GAAG,CAAC,UAAU,CAAC,CAAA;QAE1B,IAAI,OAAO,CAAC,KAAK,QAAQ,IAAI,CAAC,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC;YACvC,MAAM,IAAI,KAAK,CAAC,WAAW,QAAQ,uBAAuB,MAAM,kCAAkC,CAAC,CAAA;QACrG,CAAC;QACD,gBAAgB,CAAC,CAAC,EAAE,IAAI,MAAM,EAAE,CAAC,CAAA;IACnC,CAAC;AACH,CAAC"}
@@ -1,11 +1,11 @@
1
1
  export { MAX_IMAGE_SIZE_BYTES, MODULE_EXTENSIONS } from './constants';
2
- export type { WidgetInitialStatePath, WidgetLabel, WidgetLocalizedCopy } from './types';
3
- export { assertValidLocaleKey, validateHomeScreenWidgetId, validateInitialStatePath, validateWidgetLabel, } from './validation';
2
+ export type { DynamicWidgetEntryConfig, DynamicWidgetManifest, DynamicWidgetManifestWidget, DynamicWidgetPlatform, WidgetInitialStatePath, WidgetLabel, WidgetLocalizedCopy, } from './types';
3
+ export { assertValidLocaleKey, normalizeWidgetEntryPath, validateHomeScreenWidgetId, validateInitialStatePath, validateWidgetEntry, validateWidgetLabel, } from './validation';
4
4
  export { addApplicationGroupsEntitlement } from './utils/entitlements';
5
5
  export { resolveFontPaths } from './utils/fonts';
6
6
  export { normalizeLocaleTag, pickLocalizedValue } from './utils/localePick';
7
7
  export { logger } from './utils/logger';
8
8
  export type { PrerenderableWidget, PrerenderedWidgetStates, WidgetRenderer } from './utils/prerender';
9
- export { prerenderWidgetState } from './utils/prerender';
9
+ export { evaluateWidgetModule, evaluateWidgetModuleExports, prerenderWidgetState } from './utils/prerender';
10
10
  export { isWidgetLocalizedMap, widgetLabelEnglish } from './utils/widgetLabel';
11
11
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,oBAAoB,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAA;AACrE,YAAY,EAAE,sBAAsB,EAAE,WAAW,EAAE,mBAAmB,EAAE,MAAM,SAAS,CAAA;AACvF,OAAO,EACL,oBAAoB,EACpB,0BAA0B,EAC1B,wBAAwB,EACxB,mBAAmB,GACpB,MAAM,cAAc,CAAA;AACrB,OAAO,EAAE,+BAA+B,EAAE,MAAM,sBAAsB,CAAA;AACtE,OAAO,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAA;AAChD,OAAO,EAAE,kBAAkB,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAA;AAC3E,OAAO,EAAE,MAAM,EAAE,MAAM,gBAAgB,CAAA;AACvC,YAAY,EAAE,mBAAmB,EAAE,uBAAuB,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAA;AACrG,OAAO,EAAE,oBAAoB,EAAE,MAAM,mBAAmB,CAAA;AACxD,OAAO,EAAE,oBAAoB,EAAE,kBAAkB,EAAE,MAAM,qBAAqB,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,oBAAoB,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAA;AACrE,YAAY,EACV,wBAAwB,EACxB,qBAAqB,EACrB,2BAA2B,EAC3B,qBAAqB,EACrB,sBAAsB,EACtB,WAAW,EACX,mBAAmB,GACpB,MAAM,SAAS,CAAA;AAChB,OAAO,EACL,oBAAoB,EACpB,wBAAwB,EACxB,0BAA0B,EAC1B,wBAAwB,EACxB,mBAAmB,EACnB,mBAAmB,GACpB,MAAM,cAAc,CAAA;AACrB,OAAO,EAAE,+BAA+B,EAAE,MAAM,sBAAsB,CAAA;AACtE,OAAO,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAA;AAChD,OAAO,EAAE,kBAAkB,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAA;AAC3E,OAAO,EAAE,MAAM,EAAE,MAAM,gBAAgB,CAAA;AACvC,YAAY,EAAE,mBAAmB,EAAE,uBAAuB,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAA;AACrG,OAAO,EAAE,oBAAoB,EAAE,2BAA2B,EAAE,oBAAoB,EAAE,MAAM,mBAAmB,CAAA;AAC3G,OAAO,EAAE,oBAAoB,EAAE,kBAAkB,EAAE,MAAM,qBAAqB,CAAA"}
@@ -2,6 +2,25 @@
2
2
  * Types shared by iOS and Android Voltra config plugins.
3
3
  * Platform widget config types live in each client's expo-plugin package.
4
4
  */
5
+ export type DynamicWidgetPlatform = 'ios' | 'android';
6
+ /**
7
+ * Shared app.json entry contract for Dynamic Widgets.
8
+ *
9
+ * `entry` stays optional during rollout so platform packages can adopt the shared contract
10
+ * incrementally, but validation should require it for real widget declarations.
11
+ */
12
+ export interface DynamicWidgetEntryConfig {
13
+ entry?: string;
14
+ }
15
+ export interface DynamicWidgetManifestWidget {
16
+ id: string;
17
+ entry: string;
18
+ }
19
+ export interface DynamicWidgetManifest {
20
+ version: 1;
21
+ platform: DynamicWidgetPlatform;
22
+ widgets: DynamicWidgetManifestWidget[];
23
+ }
5
24
  /**
6
25
  * Per-locale strings for widget picker/gallery labels (`displayName`, `description`).
7
26
  * Keys should be BCP-47-style locale tags (e.g. `en`, `pl`, `pt-BR`). Plain `string` is still allowed for a single-language setup.
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/types.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH;;;GAGG;AACH,MAAM,MAAM,mBAAmB,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;AAExD,MAAM,MAAM,WAAW,GAAG,MAAM,GAAG,mBAAmB,CAAA;AAEtD;;;GAGG;AACH,MAAM,MAAM,sBAAsB,GAAG,MAAM,GAAG,mBAAmB,CAAA"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/types.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,MAAM,MAAM,qBAAqB,GAAG,KAAK,GAAG,SAAS,CAAA;AAErD;;;;;GAKG;AACH,MAAM,WAAW,wBAAwB;IACvC,KAAK,CAAC,EAAE,MAAM,CAAA;CACf;AAED,MAAM,WAAW,2BAA2B;IAC1C,EAAE,EAAE,MAAM,CAAA;IACV,KAAK,EAAE,MAAM,CAAA;CACd;AAED,MAAM,WAAW,qBAAqB;IACpC,OAAO,EAAE,CAAC,CAAA;IACV,QAAQ,EAAE,qBAAqB,CAAA;IAC/B,OAAO,EAAE,2BAA2B,EAAE,CAAA;CACvC;AAED;;;GAGG;AACH,MAAM,MAAM,mBAAmB,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;AAExD,MAAM,MAAM,WAAW,GAAG,MAAM,GAAG,mBAAmB,CAAA;AAEtD;;;GAGG;AACH,MAAM,MAAM,sBAAsB,GAAG,MAAM,GAAG,mBAAmB,CAAA"}
@@ -12,6 +12,20 @@ export interface PrerenderableWidget {
12
12
  }
13
13
  /** widgetId -> locale key -> prerendered JSON string (single-file widgets use `__default`) */
14
14
  export type PrerenderedWidgetStates = Map<string, Map<string, string>>;
15
+ /**
16
+ * Evaluate a widget module using Babel transpilation and Node.js VM.
17
+ * This allows executing widget code that uses JSX and React components.
18
+ * Local module dependencies are also transpiled with the same Babel settings.
19
+ *
20
+ * Exported so platform-specific prerender flows can reuse the same module loader rather
21
+ * than duplicating the Babel + VM scaffolding. The returned value is the module's exports
22
+ * object — callers decide whether to read `.default`, a named export, etc.
23
+ */
24
+ export declare function evaluateWidgetModuleExports(projectRoot: string, filePath: string, warnedRedirects?: Set<string>): any;
25
+ /**
26
+ * Evaluate a widget file as a server-style WidgetVariants module and return its object export.
27
+ */
28
+ export declare function evaluateWidgetModule(projectRoot: string, filePath: string, warnedRedirects?: Set<string>): any;
15
29
  /**
16
30
  * Prerender widget initial states for build-time inclusion.
17
31
  *
@@ -1 +1 @@
1
- {"version":3,"file":"prerender.d.ts","sourceRoot":"","sources":["../../../src/utils/prerender.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,sBAAsB,EAAe,MAAM,UAAU,CAAA;AAGnE;;GAEG;AACH,MAAM,MAAM,cAAc,GAAG,CAAC,QAAQ,EAAE,GAAG,KAAK,MAAM,CAAA;AAEtD;;GAEG;AACH,MAAM,WAAW,mBAAmB;IAClC,EAAE,EAAE,MAAM,CAAA;IACV,gBAAgB,CAAC,EAAE,sBAAsB,CAAA;CAC1C;AAED,8FAA8F;AAC9F,MAAM,MAAM,uBAAuB,GAAG,GAAG,CAAC,MAAM,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAA;AA6ItE;;;;;;;;;;;GAWG;AACH,wBAAsB,oBAAoB,CACxC,OAAO,EAAE,mBAAmB,EAAE,EAC9B,WAAW,EAAE,MAAM,EACnB,QAAQ,EAAE,cAAc,GACvB,OAAO,CAAC,uBAAuB,CAAC,CA+BlC"}
1
+ {"version":3,"file":"prerender.d.ts","sourceRoot":"","sources":["../../../src/utils/prerender.ts"],"names":[],"mappings":"AAQA,OAAO,KAAK,EAAE,sBAAsB,EAAe,MAAM,UAAU,CAAA;AAInE;;GAEG;AACH,MAAM,MAAM,cAAc,GAAG,CAAC,QAAQ,EAAE,GAAG,KAAK,MAAM,CAAA;AAEtD;;GAEG;AACH,MAAM,WAAW,mBAAmB;IAClC,EAAE,EAAE,MAAM,CAAA;IACV,gBAAgB,CAAC,EAAE,sBAAsB,CAAA;CAC1C;AAED,8FAA8F;AAC9F,MAAM,MAAM,uBAAuB,GAAG,GAAG,CAAC,MAAM,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAA;AA2EtE;;;;;;;;GAQG;AACH,wBAAgB,2BAA2B,CACzC,WAAW,EAAE,MAAM,EACnB,QAAQ,EAAE,MAAM,EAChB,eAAe,cAAoB,GAClC,GAAG,CAsEL;AAED;;GAEG;AACH,wBAAgB,oBAAoB,CAAC,WAAW,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,eAAe,cAAoB,GAAG,GAAG,CASpH;AAED;;;;;;;;;;;GAWG;AACH,wBAAsB,oBAAoB,CACxC,OAAO,EAAE,mBAAmB,EAAE,EAC9B,WAAW,EAAE,MAAM,EACnB,QAAQ,EAAE,cAAc,GACvB,OAAO,CAAC,uBAAuB,CAAC,CAgClC"}
@@ -2,6 +2,8 @@ import type { WidgetInitialStatePath } from './types';
2
2
  export declare function validateHomeScreenWidgetId(widgetId: unknown): asserts widgetId is string;
3
3
  export declare function assertValidLocaleKey(localeKey: string, widgetId: string, fieldName: string): void;
4
4
  export declare function validateWidgetLabel(value: unknown, widgetId: string, fieldName: string): void;
5
+ export declare function normalizeWidgetEntryPath(entry: string, projectRoot?: string): string;
6
+ export declare function validateWidgetEntry(value: unknown, widgetId: string, projectRoot?: string): string;
5
7
  /**
6
8
  * Validates optional initialStatePath: plain string or locale map of project-relative file paths.
7
9
  */
@@ -1 +1 @@
1
- {"version":3,"file":"validation.d.ts","sourceRoot":"","sources":["../../src/validation.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,SAAS,CAAA;AAYrD,wBAAgB,0BAA0B,CAAC,QAAQ,EAAE,OAAO,GAAG,OAAO,CAAC,QAAQ,IAAI,MAAM,CAWxF;AAED,wBAAgB,oBAAoB,CAAC,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,IAAI,CAuBjG;AAED,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,IAAI,CAmC7F;AAED;;GAEG;AACH,wBAAgB,wBAAwB,CACtC,KAAK,EAAE,sBAAsB,GAAG,SAAS,EACzC,QAAQ,EAAE,MAAM,EAChB,WAAW,CAAC,EAAE,MAAM,GACnB,IAAI,CAkDN"}
1
+ {"version":3,"file":"validation.d.ts","sourceRoot":"","sources":["../../src/validation.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,SAAS,CAAA;AA0BrD,wBAAgB,0BAA0B,CAAC,QAAQ,EAAE,OAAO,GAAG,OAAO,CAAC,QAAQ,IAAI,MAAM,CAWxF;AAED,wBAAgB,oBAAoB,CAAC,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,IAAI,CAuBjG;AAED,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,IAAI,CAmC7F;AAED,wBAAgB,wBAAwB,CAAC,KAAK,EAAE,MAAM,EAAE,WAAW,CAAC,EAAE,MAAM,GAAG,MAAM,CAUpF;AAED,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,WAAW,CAAC,EAAE,MAAM,GAAG,MAAM,CAiDlG;AAED;;GAEG;AACH,wBAAgB,wBAAwB,CACtC,KAAK,EAAE,sBAAsB,GAAG,SAAS,EACzC,QAAQ,EAAE,MAAM,EAChB,WAAW,CAAC,EAAE,MAAM,GACnB,IAAI,CAkDN"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@use-voltra/expo-plugin",
3
- "version": "2.0.0-rc.4",
3
+ "version": "2.1.0",
4
4
  "description": "Shared utilities for Voltra Expo config plugins",
5
5
  "main": "build/cjs/index.js",
6
6
  "module": "build/esm/index.js",
@@ -16,6 +16,7 @@
16
16
  },
17
17
  "files": [
18
18
  "build",
19
+ "src",
19
20
  "README.md"
20
21
  ],
21
22
  "dependencies": {
@@ -0,0 +1,5 @@
1
+ /** Extensions to try when resolving module paths for pre-rendering */
2
+ export const MODULE_EXTENSIONS = ['.ts', '.tsx', '.js', '.jsx', '']
3
+
4
+ /** Maximum image size in bytes for widget / Live Activity assets (4KB limit) */
5
+ export const MAX_IMAGE_SIZE_BYTES = 4096