expo-invoke 2.8.0 → 2.8.2

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.
@@ -41,25 +41,32 @@ function swiftParamType(param) {
41
41
  }
42
42
  function paramToJSON(param) {
43
43
  const name = param.name;
44
+ const isOptional = param.optional !== false;
45
+ // Non-optional params cannot use `if let` — use direct assignment instead
46
+ const direct = (expr) => `params["${name}"] = ${expr}`;
47
+ const guarded = (expr) => `if let v = ${name} { params["${name}"] = ${expr} }`;
44
48
  switch (param.type) {
45
49
  case 'location':
46
- return `if let v = ${name} { params["${name}"] = v.toJSON() }`;
50
+ return isOptional ? guarded('v.toJSON()') : direct(`${name}.toJSON()`);
47
51
  case 'person':
48
- return `if let v = ${name} { params["${name}"] = v.toJSON() }`;
52
+ return isOptional ? guarded('v.toJSON()') : direct(`${name}.toJSON()`);
49
53
  case 'enum':
50
- return `if let v = ${name} { params["${name}"] = v.id }`;
54
+ return isOptional ? guarded('v.id') : direct(`${name}.id`);
51
55
  case 'date':
52
- return `if let v = ${name} { params["${name}"] = v.timeIntervalSince1970 * 1000 }`;
56
+ return isOptional
57
+ ? guarded('v.timeIntervalSince1970 * 1000')
58
+ : direct(`${name}.timeIntervalSince1970 * 1000`);
53
59
  case 'boolean':
54
- return `params["${name}"] = ${name}`;
60
+ // Bool is never optional in the generated code — always direct
61
+ return direct(name);
55
62
  case 'number':
56
- return `if let v = ${name} { params["${name}"] = v }`;
63
+ return isOptional ? guarded('v') : direct(name);
57
64
  case 'array':
58
- return `if let v = ${name} { params["${name}"] = v }`;
65
+ return isOptional ? guarded('v') : direct(name);
59
66
  case 'entity':
60
- return `if let v = ${name} { params["${name}"] = v.toJSON() }`;
67
+ return isOptional ? guarded('v.toJSON()') : direct(`${name}.toJSON()`);
61
68
  default:
62
- return `if let v = ${name} { params["${name}"] = v }`;
69
+ return isOptional ? guarded('v') : direct(name);
63
70
  }
64
71
  }
65
72
  function generateIntentStruct(intent) {
@@ -79,12 +86,40 @@ function generateIntentStruct(intent) {
79
86
  const orig = { ...p, name: swiftName };
80
87
  return ` ${paramToJSON(orig)}`;
81
88
  }).join('\n');
82
- const spokenResult = intent.spokenResponse
83
- ? `
84
- let spoken = "${escapeSwiftString(intent.spokenResponse)}"
85
- return .result(dialog: IntentDialog(full: .init(stringLiteral: spoken)))`
86
- : `
87
- return .result()`;
89
+ // Build spoken result — substitute ${paramName} placeholders with runtime values
90
+ const spokenResult = (() => {
91
+ if (!intent.spokenResponse)
92
+ return `\n return .result()`;
93
+ const template = escapeSwiftString(intent.spokenResponse);
94
+ // Find which params appear as ${name} in the template
95
+ const usedParams = params.filter((p) => intent.spokenResponse.includes(`\${${p.name}}`));
96
+ if (usedParams.length === 0) {
97
+ return `\n let spoken = "${template}"\n return .result(dialog: IntentDialog(full: .init(stringLiteral: spoken)))`;
98
+ }
99
+ // Generate individual replacingOccurrences calls for each used param.
100
+ // Uses String(format:) to build the "${key}" search token to avoid Swift/TS escaping conflicts.
101
+ const replacements = usedParams.map((p) => {
102
+ const camelName = toCamelCase(p.name);
103
+ const isOptional = p.optional !== false;
104
+ let cast;
105
+ if (p.type === 'number') {
106
+ cast = isOptional
107
+ ? `${camelName}.map { String(format: "%g", $0) } ?? ""`
108
+ : `String(format: "%g", ${camelName})`;
109
+ }
110
+ else if (p.type === 'boolean') {
111
+ cast = isOptional
112
+ ? `${camelName}.map { $0 ? "true" : "false" } ?? ""`
113
+ : `${camelName} ? "true" : "false"`;
114
+ }
115
+ else {
116
+ cast = isOptional ? `${camelName} ?? ""` : camelName;
117
+ }
118
+ // \${ + %@ + } generates "${paramName}" at runtime — \$ produces literal $ in the TS template
119
+ return ` spoken = spoken.replacingOccurrences(of: String(format: "\${%@}", "${p.name}"), with: ${cast})`;
120
+ }).join('\n');
121
+ return `\n var spoken = "${template}"\n${replacements}\n return .result(dialog: IntentDialog(full: .init(stringLiteral: spoken)))`;
122
+ })();
88
123
  const backgroundCall = intent.openAppWhenRun === false
89
124
  ? ` await ExpoInvokeBackgroundBridge.shared.dispatch(intentId: "${escapeSwiftString(intent.id)}", parameters: params)`
90
125
  : ` ExpoInvokeModule.writePendingIntent(
@@ -1 +1 @@
1
- {"version":3,"file":"generateSwiftIntents.js","sourceRoot":"","sources":["../../../plugin/codegen/generateSwiftIntents.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"generateSwiftIntents.js","sourceRoot":"","sources":["../../../plugin/codegen/generateSwiftIntents.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.0');
65
+ exports.default = (0, config_plugins_1.createRunOncePlugin)(withInvoke, 'expo-invoke', '2.8.2');
66
66
  //# sourceMappingURL=withInvoke.js.map
@@ -47,7 +47,7 @@ function decorateNode(
47
47
  }
48
48
 
49
49
  function isReactElementNode(node: unknown): node is ReactElementNode {
50
- return Boolean(node) && typeof node === 'object' && 'type' in node && 'props' in node;
50
+ return node !== null && typeof node === 'object' && 'type' in node && 'props' in node;
51
51
  }
52
52
 
53
53
  function buildButtonTargetId(index: number, parentKey: string | null) {
package/bundle/index.ts CHANGED
@@ -11,7 +11,7 @@ import * as React from './react-stub';
11
11
  type Dictionary = Record<string, unknown>;
12
12
 
13
13
  declare global {
14
- var __expoWidgetLayout: (props: Dictionary, environment: Dictionary) => Dictionary;
14
+ var __expoWidgetLayout: ((props: Dictionary, environment: Dictionary) => Dictionary) | undefined;
15
15
  var __expoWidgetRender: (props: Dictionary, environment: Dictionary) => Dictionary;
16
16
  var __expoWidgetHandlePress: (
17
17
  props: Dictionary,
@@ -26,7 +26,7 @@ const __expoWidgetRender = function (props: Dictionary, environment: Dictionary)
26
26
  decoratedEnvironment.date = new Date(timestamp as number);
27
27
  }
28
28
 
29
- return decorateInteractiveTargets(globalThis.__expoWidgetLayout(props, decoratedEnvironment));
29
+ return decorateInteractiveTargets(globalThis.__expoWidgetLayout!(props, decoratedEnvironment));
30
30
  };
31
31
 
32
32
  const __expoWidgetHandlePress = function (
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "expo-invoke",
3
- "version": "2.8.0",
3
+ "version": "2.8.2",
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",
@@ -13,7 +13,8 @@
13
13
  "types": "./build/src/index.d.ts"
14
14
  },
15
15
  "./app.plugin": "./app.plugin.js",
16
- "./app.plugin.js": "./app.plugin.js"
16
+ "./app.plugin.js": "./app.plugin.js",
17
+ "./package.json": "./package.json"
17
18
  },
18
19
  "expo": {
19
20
  "plugin": "./build/plugin/src/withInvoke"
@@ -120,7 +121,8 @@
120
121
  "testEnvironment": "node",
121
122
  "moduleNameMapper": {
122
123
  "^react-native$": "<rootDir>/node_modules/react-native/jest/setup.js",
123
- "^expo-modules-core$": "<rootDir>/__mocks__/expo-modules-core.ts"
124
+ "^expo-modules-core$": "<rootDir>/__mocks__/expo-modules-core.ts",
125
+ "^@expo/ui(.*)$": "<rootDir>/__mocks__/expo-ui.ts"
124
126
  },
125
127
  "testMatch": [
126
128
  "**/__tests__/**/*.test.ts"