expo-invoke 2.8.3 → 2.8.4

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.
@@ -2,6 +2,7 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.addBuildPhases = addBuildPhases;
4
4
  function addBuildPhases(xcodeProject, { targetUuid, groupName, productFile, widgetFiles, }) {
5
+ var _a;
5
6
  const buildPath = `""`;
6
7
  const folderType = 'app_extension';
7
8
  const mainTargetUuid = xcodeProject.getFirstTarget().uuid;
@@ -28,6 +29,48 @@ function addBuildPhases(xcodeProject, { targetUuid, groupName, productFile, widg
28
29
  if (!getBuildPhaseObject(xcodeProject, 'PBXFrameworksBuildPhase', targetUuid)) {
29
30
  xcodeProject.addBuildPhase([], 'PBXFrameworksBuildPhase', 'Frameworks', targetUuid, folderType, buildPath);
30
31
  }
32
+ // Shell script build phase — builds ExpoWidgets.bundle into the widget extension's output
33
+ if (!getBuildPhaseObject(xcodeProject, 'PBXShellScriptBuildPhase', targetUuid, 'Build ExpoWidgets Bundle')) {
34
+ const scriptPhaseUuid = xcodeProject.generateUuid();
35
+ const shellScript = [
36
+ '#!/bin/sh',
37
+ 'set -eo pipefail',
38
+ 'NODE_BINARY=${NODE_BINARY:-node}',
39
+ 'EXPO_INVOKE_DIR=$(${NODE_BINARY} --print "path.dirname(require.resolve(\'expo-invoke/package.json\'))" 2>/dev/null || echo "")',
40
+ 'if [ -z "$EXPO_INVOKE_DIR" ]; then',
41
+ ' echo "warning: [expo-invoke] Could not resolve expo-invoke package — widget bundle not built"',
42
+ ' exit 0',
43
+ 'fi',
44
+ // ExpoWidgets.bundle must be a directory bundle (outer), containing ExpoWidgets.bundle (inner JS file).
45
+ // WidgetsJSRuntime.swift uses Bundle(url:) which requires a directory.
46
+ 'BUNDLE_DIR="${TARGET_BUILD_DIR}/${CONTENTS_FOLDER_PATH}/ExpoWidgets.bundle"',
47
+ 'TEMP_JS="${TARGET_TEMP_DIR}/expo-invoke-widget-bundle.js"',
48
+ 'mkdir -p "$(dirname "${TEMP_JS}")"',
49
+ '"${EXPO_INVOKE_DIR}/scripts/with-node.sh" "${EXPO_INVOKE_DIR}/scripts/build-bundle.mjs" "${SRCROOT}/.." ios "${TEMP_JS}"',
50
+ 'rm -rf "${BUNDLE_DIR}"',
51
+ 'mkdir -p "${BUNDLE_DIR}"',
52
+ 'cp "${TEMP_JS}" "${BUNDLE_DIR}/ExpoWidgets.bundle"',
53
+ ].join('\n');
54
+ const shellScriptPhase = {
55
+ isa: 'PBXShellScriptBuildPhase',
56
+ buildActionMask: '2147483647',
57
+ files: '(\n\t\t)',
58
+ inputPaths: '(\n\t\t)',
59
+ name: '"Build ExpoWidgets Bundle"',
60
+ outputPaths: '(\n\t\t)',
61
+ runOnlyForDeploymentPostprocessing: '0',
62
+ shellPath: '/bin/sh',
63
+ shellScript: JSON.stringify(shellScript),
64
+ showEnvVarsInLog: '0',
65
+ };
66
+ xcodeProject.hash.project.objects['PBXShellScriptBuildPhase'] =
67
+ (_a = xcodeProject.hash.project.objects['PBXShellScriptBuildPhase']) !== null && _a !== void 0 ? _a : {};
68
+ xcodeProject.hash.project.objects['PBXShellScriptBuildPhase'][scriptPhaseUuid] = shellScriptPhase;
69
+ const target = xcodeProject.pbxNativeTargetSection()[targetUuid];
70
+ if (target === null || target === void 0 ? void 0 : target.buildPhases) {
71
+ target.buildPhases.push({ value: scriptPhaseUuid, comment: 'Build ExpoWidgets Bundle' });
72
+ }
73
+ }
31
74
  }
32
75
  function getBuildPhaseObject(xcodeProject, buildPhaseType, targetUuid, comment) {
33
76
  const buildPhaseSection = xcodeProject.hash.project.objects[buildPhaseType];
@@ -1 +1 @@
1
- {"version":3,"file":"addBuildPhases.js","sourceRoot":"","sources":["../../../../../plugin/ios/widgets/xcode/addBuildPhases.ts"],"names":[],"mappings":";;AAEA,wCA6EC;AA7ED,SAAgB,cAAc,CAC5B,YAA0B,EAC1B,EACE,UAAU,EACV,SAAS,EACT,WAAW,EACX,WAAW,GAWZ;IAED,MAAM,SAAS,GAAG,IAAI,CAAC;IACvB,MAAM,UAAU,GAAG,eAAe,CAAC;IACnC,MAAM,cAAc,GAAG,YAAY,CAAC,cAAc,EAAE,CAAC,IAAI,CAAC;IAE1D,sBAAsB;IACtB,IAAI,CAAC,mBAAmB,CAAC,YAAY,EAAE,sBAAsB,EAAE,UAAU,CAAC,EAAE,CAAC;QAC3E,YAAY,CAAC,aAAa,CACxB,CAAC,GAAG,WAAW,CAAC,EAChB,sBAAsB,EACtB,SAAS,EACT,UAAU,EACV,UAAU,EACV,SAAS,CACV,CAAC;IACJ,CAAC;IAED,yBAAyB;IACzB,IAAI,CAAC,mBAAmB,CAAC,YAAY,EAAE,wBAAwB,EAAE,cAAc,EAAE,SAAS,CAAC,EAAE,CAAC;QAC5F,YAAY,CAAC,aAAa,CACxB,EAAE,EACF,wBAAwB,EACxB,SAAS,EACT,cAAc,EACd,UAAU,EACV,SAAS,CACV,CAAC;IACJ,CAAC;IAED,MAAM,mBAAmB,GAAG,mBAAmB,CAC7C,YAAY,EACZ,wBAAwB,EACxB,cAAc,EACd,SAAS,CACV,CAAC;IACF,IACE,mBAAmB;QACnB,CAAC,mBAAmB,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,IAAuB,EAAE,EAAE,CAAC,IAAI,CAAC,KAAK,KAAK,WAAW,CAAC,IAAI,CAAC,EAC7F,CAAC;QACD,mBAAmB,CAAC,KAAK,CAAC,IAAI,CAAC;YAC7B,KAAK,EAAE,WAAW,CAAC,IAAI;YACvB,OAAO,EAAE,GAAG,WAAW,CAAC,QAAQ,OAAO,WAAW,CAAC,KAAK,EAAE;SAC3D,CAAC,CAAC;IACL,CAAC;IACD,IAAI,CAAC,YAAY,CAAC,mBAAmB,EAAE,CAAC,WAAW,CAAC,IAAI,CAAC,EAAE,CAAC;QAC1D,YAAY,CAAC,wBAAwB,CAAC,WAAW,CAAC,CAAC;IACrD,CAAC;IAED,yBAAyB;IACzB,IAAI,CAAC,mBAAmB,CAAC,YAAY,EAAE,yBAAyB,EAAE,UAAU,CAAC,EAAE,CAAC;QAC9E,YAAY,CAAC,aAAa,CACxB,EAAE,EACF,yBAAyB,EACzB,YAAY,EACZ,UAAU,EACV,UAAU,EACV,SAAS,CACV,CAAC;IACJ,CAAC;AACH,CAAC;AAED,SAAS,mBAAmB,CAC1B,YAA0B,EAC1B,cAAsB,EACtB,UAAkB,EAClB,OAAgB;IAEhB,MAAM,iBAAiB,GAAG,YAAY,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,cAAc,CAAC,CAAC;IAC5E,MAAM,MAAM,GAAG,YAAY,CAAC,sBAAsB,EAAE,CAAC,UAAU,CAAC,CAAC;IACjE,IAAI,CAAC,iBAAiB,IAAI,CAAC,CAAA,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,WAAW,CAAA,EAAE,CAAC;QAC/C,OAAO,IAAI,CAAC;IACd,CAAC;IAED,MAAM,UAAU,GAAG,MAAM,CAAC,WAAW,CAAC,IAAI,CACxC,CAAC,UAA8C,EAAE,EAAE,CACjD,CAAC,CAAC,OAAO,IAAI,UAAU,CAAC,OAAO,KAAK,OAAO,CAAC,IAAI,iBAAiB,CAAC,UAAU,CAAC,KAAK,CAAC,CACtF,CAAC;IAEF,OAAO,UAAU,CAAC,CAAC,CAAC,iBAAiB,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;AACjE,CAAC"}
1
+ {"version":3,"file":"addBuildPhases.js","sourceRoot":"","sources":["../../../../../plugin/ios/widgets/xcode/addBuildPhases.ts"],"names":[],"mappings":"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"}
@@ -62,5 +62,5 @@ const withInvoke = (config, options) => {
62
62
  });
63
63
  return config;
64
64
  };
65
- exports.default = (0, config_plugins_1.createRunOncePlugin)(withInvoke, 'expo-invoke', '2.8.3');
65
+ exports.default = (0, config_plugins_1.createRunOncePlugin)(withInvoke, 'expo-invoke', '2.8.4');
66
66
  //# sourceMappingURL=withInvoke.js.map
@@ -0,0 +1,24 @@
1
+ require 'json'
2
+
3
+ package = JSON.parse(File.read(File.join(__dir__, 'package.json')))
4
+
5
+ Pod::Spec.new do |s|
6
+ s.name = 'ExpoInvoke'
7
+ s.version = package['version']
8
+ s.summary = package['description']
9
+ s.license = package['license']
10
+ s.authors = package['author']
11
+ s.homepage = package['homepage']
12
+ s.platforms = { :ios => '16.0' }
13
+ s.source = { :git => '' }
14
+ s.static_framework = true
15
+
16
+ s.source_files = 'ios/**/*.{h,m,mm,swift}'
17
+
18
+ s.dependency 'ExpoModulesCore'
19
+ s.dependency 'React-Core'
20
+
21
+ # ExpoUI is an optional peer — only link it if the app has it installed.
22
+ # expo_widgets_post_install sets APPLICATION_EXTENSION_API_ONLY=No for this pod.
23
+ s.weak_frameworks = 'WidgetKit', 'ActivityKit'
24
+ end
@@ -1,7 +1,8 @@
1
1
  {
2
2
  "platforms": ["ios", "android"],
3
3
  "ios": {
4
- "modules": ["ExpoInvokeModule", "WidgetsModule"]
4
+ "modules": ["ExpoInvokeModule", "WidgetsModule"],
5
+ "podspecPath": "expo-invoke.podspec"
5
6
  },
6
7
  "android": {
7
8
  "modules": ["expo.modules.invoke.ExpoInvokeModule"]
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "expo-invoke",
3
- "version": "2.8.3",
3
+ "version": "2.8.4",
4
4
  "description": "The complete native-surface-to-JS bridge for Expo. One intent config → Siri, Google Assistant, home screen widgets, Dynamic Island, app icon menus, notification actions, NFC, QR, deep links and more — all through a single useInvoke() hook.",
5
5
  "main": "build/src/index.js",
6
6
  "module": "build/src/index.js",
@@ -30,6 +30,7 @@
30
30
  "metro.widget.config.js",
31
31
  "spm.config.json",
32
32
  "expo-module.config.json",
33
+ "expo-invoke.podspec",
33
34
  "README.md",
34
35
  "MIGRATION.md",
35
36
  "SECURITY.md"
@@ -25,7 +25,7 @@ end
25
25
 
26
26
  def expo_widgets_post_install(installer)
27
27
  installer.pods_project.targets.each do |target|
28
- if target.name == 'ExpoModulesCore' || target.name == 'ExpoUI' || target.name.start_with?('React-')
28
+ if target.name == 'ExpoModulesCore' || target.name == 'ExpoUI' || target.name == 'ExpoInvoke' || target.name.start_with?('React-')
29
29
  target.build_configurations.each do |config|
30
30
  config.build_settings['APPLICATION_EXTENSION_API_ONLY'] = 'No'
31
31
  end
package/spm.config.json CHANGED
@@ -2,8 +2,8 @@
2
2
  "$schema": "../../tools/src/prebuilds/schemas/spm.config.schema.json",
3
3
  "products": [
4
4
  {
5
- "name": "ExpoWidgets",
6
- "podName": "ExpoWidgets",
5
+ "name": "ExpoInvoke",
6
+ "podName": "ExpoInvoke",
7
7
  "platforms": [
8
8
  "iOS(.v16)"
9
9
  ],
@@ -18,7 +18,7 @@
18
18
  "targets": [
19
19
  {
20
20
  "type": "swift",
21
- "name": "ExpoWidgets",
21
+ "name": "ExpoInvoke",
22
22
  "path": "ios",
23
23
  "pattern": "**/*.swift",
24
24
  "dependencies": [