expo-invoke 2.6.14 → 2.7.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (149) hide show
  1. package/android/src/main/java/expo/modules/invoke/ExpoInvokeModule.kt +35 -0
  2. package/android/src/main/java/expo/modules/invoke/InvokeSliceProvider.kt +9 -0
  3. package/build/plugin/codegen/generateSwiftIntents.js +22 -0
  4. package/build/plugin/codegen/generateSwiftIntents.js.map +1 -1
  5. package/build/plugin/codegen/generateSwiftLiveActivities.d.ts +17 -0
  6. package/build/plugin/codegen/generateSwiftLiveActivities.js +165 -0
  7. package/build/plugin/codegen/generateSwiftLiveActivities.js.map +1 -0
  8. package/build/plugin/codegen/generateSwiftWidget.d.ts +5 -0
  9. package/build/plugin/codegen/generateSwiftWidget.js.map +1 -1
  10. package/build/plugin/ios/widgets/withAppGroupEntitlements.d.ts +6 -0
  11. package/build/plugin/ios/widgets/withAppGroupEntitlements.js +27 -0
  12. package/build/plugin/ios/widgets/withAppGroupEntitlements.js.map +1 -0
  13. package/build/plugin/ios/widgets/withAppInfoPlist.d.ts +7 -0
  14. package/build/plugin/ios/widgets/withAppInfoPlist.js +12 -0
  15. package/build/plugin/ios/widgets/withAppInfoPlist.js.map +1 -0
  16. package/build/plugin/ios/widgets/withEasConfig.d.ts +8 -0
  17. package/build/plugin/ios/widgets/withEasConfig.js +52 -0
  18. package/build/plugin/ios/widgets/withEasConfig.js.map +1 -0
  19. package/build/plugin/ios/widgets/withIosWarning.d.ts +7 -0
  20. package/build/plugin/ios/widgets/withIosWarning.js +10 -0
  21. package/build/plugin/ios/widgets/withIosWarning.js.map +1 -0
  22. package/build/plugin/ios/widgets/withIosWidgets.d.ts +11 -0
  23. package/build/plugin/ios/widgets/withIosWidgets.js +83 -0
  24. package/build/plugin/ios/widgets/withIosWidgets.js.map +1 -0
  25. package/build/plugin/ios/widgets/withPodsLinking.d.ts +6 -0
  26. package/build/plugin/ios/widgets/withPodsLinking.js +102 -0
  27. package/build/plugin/ios/widgets/withPodsLinking.js.map +1 -0
  28. package/build/plugin/ios/widgets/withPushNotifications.d.ts +6 -0
  29. package/build/plugin/ios/widgets/withPushNotifications.js +12 -0
  30. package/build/plugin/ios/widgets/withPushNotifications.js.map +1 -0
  31. package/build/plugin/ios/widgets/withWidgetSourceFiles.d.ts +10 -0
  32. package/build/plugin/ios/widgets/withWidgetSourceFiles.js +379 -0
  33. package/build/plugin/ios/widgets/withWidgetSourceFiles.js.map +1 -0
  34. package/build/plugin/ios/widgets/xcode/addBuildPhases.d.ts +12 -0
  35. package/build/plugin/ios/widgets/xcode/addBuildPhases.js +41 -0
  36. package/build/plugin/ios/widgets/xcode/addBuildPhases.js.map +1 -0
  37. package/build/plugin/ios/widgets/xcode/addPbxGroup.d.ts +5 -0
  38. package/build/plugin/ios/widgets/xcode/addPbxGroup.js +20 -0
  39. package/build/plugin/ios/widgets/xcode/addPbxGroup.js.map +1 -0
  40. package/build/plugin/ios/widgets/xcode/addProductFile.d.ts +7 -0
  41. package/build/plugin/ios/widgets/xcode/addProductFile.js +41 -0
  42. package/build/plugin/ios/widgets/xcode/addProductFile.js.map +1 -0
  43. package/build/plugin/ios/widgets/xcode/addTargetDependency.d.ts +4 -0
  44. package/build/plugin/ios/widgets/xcode/addTargetDependency.js +17 -0
  45. package/build/plugin/ios/widgets/xcode/addTargetDependency.js.map +1 -0
  46. package/build/plugin/ios/widgets/xcode/addToPbxNativeTargetSection.d.ts +14 -0
  47. package/build/plugin/ios/widgets/xcode/addToPbxNativeTargetSection.js +29 -0
  48. package/build/plugin/ios/widgets/xcode/addToPbxNativeTargetSection.js.map +1 -0
  49. package/build/plugin/ios/widgets/xcode/addToPbxProjectSection.d.ts +4 -0
  50. package/build/plugin/ios/widgets/xcode/addToPbxProjectSection.js +20 -0
  51. package/build/plugin/ios/widgets/xcode/addToPbxProjectSection.js.map +1 -0
  52. package/build/plugin/ios/widgets/xcode/addXCConfigurationList.d.ts +11 -0
  53. package/build/plugin/ios/widgets/xcode/addXCConfigurationList.js +37 -0
  54. package/build/plugin/ios/widgets/xcode/addXCConfigurationList.js.map +1 -0
  55. package/build/plugin/ios/widgets/xcode/withTargetXcodeProject.d.ts +10 -0
  56. package/build/plugin/ios/widgets/xcode/withTargetXcodeProject.js +86 -0
  57. package/build/plugin/ios/widgets/xcode/withTargetXcodeProject.js.map +1 -0
  58. package/build/plugin/ios/withIOSInvoke.d.ts +6 -15
  59. package/build/plugin/ios/withIOSInvoke.js +54 -25
  60. package/build/plugin/ios/withIOSInvoke.js.map +1 -1
  61. package/build/plugin/ios/withWidgetExtension.d.ts +5 -0
  62. package/build/plugin/ios/withWidgetExtension.js +36 -6
  63. package/build/plugin/ios/withWidgetExtension.js.map +1 -1
  64. package/build/plugin/src/withInvoke.d.ts +34 -23
  65. package/build/plugin/src/withInvoke.js +16 -27
  66. package/build/plugin/src/withInvoke.js.map +1 -1
  67. package/build/plugin/types/WidgetConfig.type.d.ts +54 -0
  68. package/build/plugin/types/WidgetConfig.type.js +3 -0
  69. package/build/plugin/types/WidgetConfig.type.js.map +1 -0
  70. package/build/plugin/types/WidgetFamily.type.d.ts +10 -0
  71. package/build/plugin/types/WidgetFamily.type.js +13 -0
  72. package/build/plugin/types/WidgetFamily.type.js.map +1 -0
  73. package/build/src/hooks/useLiveActivity.d.ts +20 -10
  74. package/build/src/hooks/useLiveActivity.d.ts.map +1 -1
  75. package/build/src/hooks/useLiveActivity.js +20 -10
  76. package/build/src/hooks/useLiveActivity.js.map +1 -1
  77. package/build/src/index.d.ts +2 -0
  78. package/build/src/index.d.ts.map +1 -1
  79. package/build/src/index.js +5 -0
  80. package/build/src/index.js.map +1 -1
  81. package/build/src/module.d.ts +4 -0
  82. package/build/src/module.d.ts.map +1 -1
  83. package/build/src/module.js +8 -0
  84. package/build/src/module.js.map +1 -1
  85. package/build/src/web/index.d.ts +10 -1
  86. package/build/src/web/index.d.ts.map +1 -1
  87. package/build/src/web/index.js +4 -0
  88. package/build/src/web/index.js.map +1 -1
  89. package/build/src/widgets/ExpoWidgets.d.ts +12 -0
  90. package/build/src/widgets/ExpoWidgets.d.ts.map +1 -0
  91. package/build/src/widgets/ExpoWidgets.ios.d.ts +12 -0
  92. package/build/src/widgets/ExpoWidgets.ios.d.ts.map +1 -0
  93. package/build/src/widgets/ExpoWidgets.ios.js +3 -0
  94. package/build/src/widgets/ExpoWidgets.ios.js.map +1 -0
  95. package/build/src/widgets/ExpoWidgets.js +42 -0
  96. package/build/src/widgets/ExpoWidgets.js.map +1 -0
  97. package/build/src/widgets/Widgets.d.ts +119 -0
  98. package/build/src/widgets/Widgets.d.ts.map +1 -0
  99. package/build/src/widgets/Widgets.js +158 -0
  100. package/build/src/widgets/Widgets.js.map +1 -0
  101. package/build/src/widgets/Widgets.types.d.ts +263 -0
  102. package/build/src/widgets/Widgets.types.d.ts.map +1 -0
  103. package/build/src/widgets/Widgets.types.js +2 -0
  104. package/build/src/widgets/Widgets.types.js.map +1 -0
  105. package/build/src/widgets/index.d.ts +3 -0
  106. package/build/src/widgets/index.d.ts.map +1 -0
  107. package/build/src/widgets/index.js +2 -0
  108. package/build/src/widgets/index.js.map +1 -0
  109. package/bundle/__tests__/decorator.test.ts +89 -0
  110. package/bundle/decorator.ts +61 -0
  111. package/bundle/expo-modules-core-stub.ts +1 -0
  112. package/bundle/expo-stub.ts +15 -0
  113. package/bundle/index.ts +69 -0
  114. package/bundle/jsx-runtime-stub.ts +71 -0
  115. package/bundle/react-native-stub.ts +3 -0
  116. package/bundle/react-stub.ts +13 -0
  117. package/expo-module.config.json +1 -1
  118. package/ios/LiveActivity/LiveActivityManager.swift +15 -14
  119. package/ios/Module/ExpoInvokeModule.swift +124 -0
  120. package/ios/Widget/WidgetManager.swift +25 -8
  121. package/ios/Widgets/LiveActivity.swift +81 -0
  122. package/ios/Widgets/LiveActivityFactory.swift +49 -0
  123. package/ios/Widgets/Widget/AppIntent.swift +130 -0
  124. package/ios/Widgets/Widget/Buttons.swift +62 -0
  125. package/ios/Widgets/Widget/DynamicView.swift +161 -0
  126. package/ios/Widgets/Widget/EntryView.swift +36 -0
  127. package/ios/Widgets/Widget/Fragment.swift +13 -0
  128. package/ios/Widgets/Widget/LiveActivityBanner.swift +19 -0
  129. package/ios/Widgets/Widget/RedBoxView.swift +83 -0
  130. package/ios/Widgets/Widget/TimelineEntry.swift +8 -0
  131. package/ios/Widgets/Widget/TimelineProvider.swift +45 -0
  132. package/ios/Widgets/Widget/Type.swift +6 -0
  133. package/ios/Widgets/Widget/Utils.swift +116 -0
  134. package/ios/Widgets/Widget/WidgetLiveActivity.swift +104 -0
  135. package/ios/Widgets/Widget/WidgetsJSRuntime.swift +148 -0
  136. package/ios/Widgets/WidgetObject.swift +31 -0
  137. package/ios/Widgets/WidgetsContext.swift +7 -0
  138. package/ios/Widgets/WidgetsEvents.swift +16 -0
  139. package/ios/Widgets/WidgetsExceptions.swift +25 -0
  140. package/ios/Widgets/WidgetsModule.swift +149 -0
  141. package/ios/Widgets/WidgetsRecords.swift +22 -0
  142. package/ios/Widgets/WidgetsStorage.swift +58 -0
  143. package/metro.widget.config.js +76 -0
  144. package/package.json +11 -1
  145. package/scripts/autolinking.rb +34 -0
  146. package/scripts/build-bundle.mjs +69 -0
  147. package/scripts/with-node.sh +44 -0
  148. package/scripts/xcode-build-bundle.sh +23 -0
  149. package/spm.config.json +40 -0
@@ -91,6 +91,41 @@ class ExpoInvokeModule : Module() {
91
91
  // ── Focus mode — no-op on Android ────────────────────────────────────────
92
92
  Function("getFocusMode") { null as String? }
93
93
 
94
+ // ── Widget reload — no-op (Android widgets update via AppWidgetProvider) ───
95
+ Function("reloadWidget") { _: String? -> Unit }
96
+
97
+ // ── Live Activity — no-op on Android (platform not supported) ─────────────
98
+ AsyncFunction("startLiveActivity") { _: String -> "" }
99
+ Function("updateLiveActivity") { _: String, _: String -> Unit }
100
+ Function("endLiveActivity") { _: String, _: String? -> Unit }
101
+ AsyncFunction("getLiveActivities") { -> "[]" }
102
+
103
+ // ── Focus filter result — no-op on Android ────────────────────────────────
104
+ Function("reportFocusFilterResult") { _: String, _: Boolean -> Unit }
105
+
106
+ // ── App Entities — no-op on Android ──────────────────────────────────────
107
+ Function("provideEntityResults") { _: String, _: String -> Unit }
108
+
109
+ // ── Background intent — no-op on Android (opens app instead) ─────────────
110
+ Function("registerBackgroundHandler") { _: String -> Unit }
111
+ Function("reportBackgroundResult") { _: String, _: String -> Unit }
112
+
113
+ // ── Push-to-Talk — no-op on Android ──────────────────────────────────────
114
+ AsyncFunction("startPTTSession") { _: String, _: String? -> Unit }
115
+ AsyncFunction("endPTTSession") { _: String -> Unit }
116
+ AsyncFunction("setTransmitting") { _: String, _: Boolean -> Unit }
117
+ AsyncFunction("getPTTState") { _: String -> "{\"isActive\":false,\"isTransmitting\":false}" }
118
+
119
+ // ── Android Slices — notify ContentResolver of fresh data ─────────────────
120
+ Function("notifySliceChange") { sliceId: String ->
121
+ val ctx = appContext.reactContext ?: return@Function Unit
122
+ InvokeSliceProvider.notifyChange(ctx, sliceId)
123
+ }
124
+
125
+ // ── Persistent analytics — managed in JS layer via expo-file-system ───────
126
+ AsyncFunction("getAnalyticsPersisted") { -> "{\"fired\":{},\"donated\":{},\"bySource\":{}}" }
127
+ AsyncFunction("clearAnalyticsPersisted") { -> Unit }
128
+
94
129
  // ── Warm start ────────────────────────────────────────────────────────────
95
130
  OnActivityEntersForeground {
96
131
  val p = prefs ?: return@OnActivityEntersForeground
@@ -66,6 +66,15 @@ class InvokeSliceProvider : SliceProvider() {
66
66
  } catch (_: JSONException) { null }
67
67
  }
68
68
 
69
+ companion object {
70
+ /** Call from ExpoInvokeModule.notifySliceChange() to push fresh data to Slice consumers. */
71
+ fun notifyChange(context: Context, sliceId: String) {
72
+ val pkg = context.packageName
73
+ val uri = Uri.parse("content://$pkg.invoke.slices/$sliceId")
74
+ context.contentResolver.notifyChange(uri, null)
75
+ }
76
+ }
77
+
69
78
  private fun buildTapIntent(context: Context, intentId: String): PendingIntent {
70
79
  val pkg = context.packageName
71
80
  val deepLink = "$pkg://invoke/$intentId"
@@ -145,6 +145,28 @@ function swiftWidgetFamily(size) {
145
145
  return (_a = WIDGET_SIZE_MAP[size]) !== null && _a !== void 0 ? _a : '.systemSmall';
146
146
  }
147
147
  function generateSwiftIntents(intents) {
148
+ // Warn developers about flags that are accepted in config but require additional
149
+ // manual setup beyond what expo-invoke auto-generates.
150
+ for (const intent of intents) {
151
+ if (intent.supportsControlCenter) {
152
+ console.warn(`[expo-invoke] Intent "${intent.id}" has supportsControlCenter: true.\n` +
153
+ ` Control Center tiles (iOS 18+) require a separate ControlWidget extension — they\n` +
154
+ ` cannot be auto-generated from AppIntent definitions. See:\n` +
155
+ ` https://developer.apple.com/documentation/widgetkit/adding-a-control-to-the-control-center`);
156
+ }
157
+ if (intent.supportsCarPlay) {
158
+ console.warn(`[expo-invoke] Intent "${intent.id}" has supportsCarPlay: true.\n` +
159
+ ` CarPlay integration requires CPApplicationDelegate setup in your AppDelegate and a\n` +
160
+ ` CarPlay entitlement. The AppIntent is generated but CarPlay scenes are not. See:\n` +
161
+ ` https://developer.apple.com/documentation/carplay`);
162
+ }
163
+ if (intent.supportsWatch) {
164
+ console.warn(`[expo-invoke] Intent "${intent.id}" has supportsWatch: true.\n` +
165
+ ` watchOS intents require a separate watchOS app target. The AppIntent is generated\n` +
166
+ ` for iOS; add it to your watch target manually. See:\n` +
167
+ ` https://developer.apple.com/documentation/watchos-apps`);
168
+ }
169
+ }
148
170
  const structs = intents.map(generateIntentStruct).join('\n\n');
149
171
  const provider = generateShortcutsProvider(intents);
150
172
  return `// AUTO-GENERATED by expo-invoke config plugin. Do not edit manually.
@@ -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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"}
@@ -0,0 +1,17 @@
1
+ /**
2
+ * generateSwiftLiveActivities.ts
3
+ *
4
+ * Generates InvokeLiveActivities.swift — the ActivityKit-backed implementation of
5
+ * LiveActivityRegistry and an extension on LiveActivityManager that actually creates
6
+ * Activity<ExpoInvokeActivityAttributes> objects at runtime.
7
+ *
8
+ * The generated file replaces the stub LiveActivityRegistry in LiveActivityManager.swift
9
+ * (which is guarded with `#if !canImport(ActivityKit)`) with a full implementation.
10
+ *
11
+ * All content state is JSON-encoded into a single `stateJson: String` field so that
12
+ * any shape of state can be used without requiring separate Swift codegen per activity type.
13
+ * The widget extension reads `stateJson` and decodes it to render the Live Activity view.
14
+ *
15
+ * Called by withIOSInvoke.ts when `enableLiveActivities: true` is set in the plugin config.
16
+ */
17
+ export declare function generateSwiftLiveActivities(liveActivityTypes: string[]): string;
@@ -0,0 +1,165 @@
1
+ "use strict";
2
+ /**
3
+ * generateSwiftLiveActivities.ts
4
+ *
5
+ * Generates InvokeLiveActivities.swift — the ActivityKit-backed implementation of
6
+ * LiveActivityRegistry and an extension on LiveActivityManager that actually creates
7
+ * Activity<ExpoInvokeActivityAttributes> objects at runtime.
8
+ *
9
+ * The generated file replaces the stub LiveActivityRegistry in LiveActivityManager.swift
10
+ * (which is guarded with `#if !canImport(ActivityKit)`) with a full implementation.
11
+ *
12
+ * All content state is JSON-encoded into a single `stateJson: String` field so that
13
+ * any shape of state can be used without requiring separate Swift codegen per activity type.
14
+ * The widget extension reads `stateJson` and decodes it to render the Live Activity view.
15
+ *
16
+ * Called by withIOSInvoke.ts when `enableLiveActivities: true` is set in the plugin config.
17
+ */
18
+ Object.defineProperty(exports, "__esModule", { value: true });
19
+ exports.generateSwiftLiveActivities = generateSwiftLiveActivities;
20
+ function generateSwiftLiveActivities(liveActivityTypes) {
21
+ const typeList = liveActivityTypes.length > 0
22
+ ? liveActivityTypes.map((t) => `// - ${t}`).join('\n')
23
+ : '// (none declared — using generic ExpoInvokeActivity)';
24
+ return `// InvokeLiveActivities.swift — Generated by expo-invoke. DO NOT EDIT.
25
+ // Regenerate via: npx expo prebuild
26
+ //
27
+ // Registered activity types:
28
+ ${typeList}
29
+ //
30
+ // All activity state is JSON-encoded so any shape of contentState can be used
31
+ // from JS without requiring per-type Swift structs.
32
+
33
+ #if canImport(ActivityKit)
34
+ import ActivityKit
35
+ import Foundation
36
+
37
+ // ─── ActivityAttributes ───────────────────────────────────────────────────────
38
+
39
+ /// Single ActivityAttributes type shared across all expo-invoke Live Activities.
40
+ /// The \`activityType\` field discriminates between different activity kinds at runtime.
41
+ /// Content state is stored as a JSON string so the widget extension can decode any shape.
42
+ @available(iOS 16.1, *)
43
+ struct ExpoInvokeActivityAttributes: ActivityAttributes {
44
+ public typealias ContentState = ExpoInvokeContentState
45
+
46
+ public struct ExpoInvokeContentState: Codable, Hashable {
47
+ /// JSON-encoded content state. Decode in your Live Activity view.
48
+ var stateJson: String
49
+ /// Optional stale date (ms since epoch). Nil means no stale threshold.
50
+ var staleDateMs: Double?
51
+ }
52
+
53
+ /// Matches the activityType passed to startLiveActivity() / useLiveActivity().
54
+ var activityType: String
55
+ }
56
+
57
+ // ─── LiveActivityRegistry (real implementation) ───────────────────────────────
58
+
59
+ /// Tracks active Activity<ExpoInvokeActivityAttributes> objects by their JS-facing activityId.
60
+ /// Replaces the stub in LiveActivityManager.swift (compiled only when ActivityKit is absent).
61
+ @available(iOS 16.1, *)
62
+ @objc public class LiveActivityRegistry: NSObject {
63
+
64
+ @objc public static let shared = LiveActivityRegistry()
65
+
66
+ private var activities: [String: Activity<ExpoInvokeActivityAttributes>] = [:]
67
+ private let lock = NSLock()
68
+
69
+ private override init() {}
70
+
71
+ // ── Called by ExpoInvokeModule / LiveActivityManager ──────────────────────
72
+
73
+ @objc public func update(activityId: String, contentStateJson: String) {
74
+ lock.lock()
75
+ let activity = activities[activityId]
76
+ lock.unlock()
77
+ guard let activity else { return }
78
+
79
+ let newState = ExpoInvokeActivityAttributes.ContentState(stateJson: contentStateJson)
80
+ Task {
81
+ await activity.update(using: newState)
82
+ }
83
+ }
84
+
85
+ @objc public func end(activityId: String, finalStateJson: String?) {
86
+ lock.lock()
87
+ let activity = activities.removeValue(forKey: activityId)
88
+ lock.unlock()
89
+ guard let activity else { return }
90
+
91
+ let finalState = finalStateJson.map {
92
+ ExpoInvokeActivityAttributes.ContentState(stateJson: $0)
93
+ }
94
+ Task {
95
+ await activity.end(using: finalState, dismissalPolicy: .default)
96
+ }
97
+ }
98
+
99
+ @objc public func listActivities() -> [[String: Any]] {
100
+ lock.lock()
101
+ let snapshot = activities
102
+ lock.unlock()
103
+
104
+ return snapshot.map { (activityId, activity) in
105
+ var info: [String: Any] = [
106
+ "activityId": activityId,
107
+ "activityType": activity.attributes.activityType,
108
+ "stateJson": activity.contentState.stateJson,
109
+ "isActive": activity.activityState != .ended,
110
+ ]
111
+ if case .stale = activity.activityState {
112
+ info["isStale"] = true
113
+ }
114
+ return info
115
+ }
116
+ }
117
+
118
+ // ── Called by LiveActivityManager extension below ────────────────────────
119
+
120
+ func register(activityId: String, activity: Activity<ExpoInvokeActivityAttributes>) {
121
+ lock.lock()
122
+ activities[activityId] = activity
123
+ lock.unlock()
124
+ }
125
+ }
126
+
127
+ // ─── LiveActivityManager extension ───────────────────────────────────────────
128
+
129
+ /// Provides the real ActivityKit activity creation, called from
130
+ /// LiveActivityManager.startActivity() via \`#if canImport(ActivityKit)\`.
131
+ @available(iOS 16.1, *)
132
+ extension LiveActivityManager {
133
+ func createActivity(activityId: String, config: [String: Any]) throws {
134
+ let activityType = config["activityType"] as? String ?? "ExpoInvokeActivity"
135
+
136
+ // Encode the contentState dict to a JSON string for the widget to decode.
137
+ let contentStateJson: String
138
+ if let cs = config["contentState"] as? [String: Any],
139
+ let data = try? JSONSerialization.data(withJSONObject: cs, options: []),
140
+ let json = String(data: data, encoding: .utf8) {
141
+ contentStateJson = json
142
+ } else {
143
+ contentStateJson = "{}"
144
+ }
145
+
146
+ let staleDateMs = config["staleDate"] as? Double
147
+ let initialState = ExpoInvokeActivityAttributes.ContentState(
148
+ stateJson: contentStateJson,
149
+ staleDateMs: staleDateMs
150
+ )
151
+ let attributes = ExpoInvokeActivityAttributes(activityType: activityType)
152
+
153
+ let activity = try Activity<ExpoInvokeActivityAttributes>.request(
154
+ attributes: attributes,
155
+ contentState: initialState,
156
+ pushType: nil
157
+ )
158
+
159
+ LiveActivityRegistry.shared.register(activityId: activityId, activity: activity)
160
+ }
161
+ }
162
+ #endif // canImport(ActivityKit)
163
+ `;
164
+ }
165
+ //# sourceMappingURL=generateSwiftLiveActivities.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"generateSwiftLiveActivities.js","sourceRoot":"","sources":["../../../plugin/codegen/generateSwiftLiveActivities.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;;GAeG;;AAEH,kEAiJC;AAjJD,SAAgB,2BAA2B,CAAC,iBAA2B;IACrE,MAAM,QAAQ,GAAG,iBAAiB,CAAC,MAAM,GAAG,CAAC;QAC3C,CAAC,CAAC,iBAAiB,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC;QACxD,CAAC,CAAC,yDAAyD,CAAC;IAE9D,OAAO;;;;EAIP,QAAQ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAuIT,CAAC;AACF,CAAC"}
@@ -1,3 +1,8 @@
1
+ /**
2
+ * @deprecated Swift code generation is superseded by the React-component-based widget engine.
3
+ * Use the `widgets` array option with createWidget()/createLiveActivity() instead.
4
+ * Will be removed in v3.
5
+ */
1
6
  export interface WidgetCodegenOptions {
2
7
  /** Display name shown in the widget picker */
3
8
  widgetTitle: string;
@@ -1 +1 @@
1
- {"version":3,"file":"generateSwiftWidget.js","sourceRoot":"","sources":["../../../plugin/codegen/generateSwiftWidget.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"generateSwiftWidget.js","sourceRoot":"","sources":["../../../plugin/codegen/generateSwiftWidget.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,6 @@
1
+ import { ConfigPlugin } from '@expo/config-plugins';
2
+ type AppGroupEntitlementsProps = {
3
+ groupIdentifier: string;
4
+ };
5
+ declare const withAppGroupEntitlements: ConfigPlugin<AppGroupEntitlementsProps>;
6
+ export default withAppGroupEntitlements;
@@ -0,0 +1,27 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const config_plugins_1 = require("@expo/config-plugins");
4
+ const withAppGroupEntitlements = (config, props) => (0, config_plugins_1.withEntitlementsPlist)(config, (config) => {
5
+ var _a, _b;
6
+ config.ios = {
7
+ ...config.ios,
8
+ entitlements: _addApplicationGroupsEntitlement((_b = (_a = config.ios) === null || _a === void 0 ? void 0 : _a.entitlements) !== null && _b !== void 0 ? _b : {}, props.groupIdentifier),
9
+ };
10
+ return config;
11
+ });
12
+ exports.default = withAppGroupEntitlements;
13
+ function _addApplicationGroupsEntitlement(entitlements, groupIdentifier) {
14
+ var _a;
15
+ if (!groupIdentifier) {
16
+ return entitlements;
17
+ }
18
+ const existingApplicationGroups = (_a = entitlements['com.apple.security.application-groups']) !== null && _a !== void 0 ? _a : [];
19
+ if (!existingApplicationGroups.includes(groupIdentifier)) {
20
+ entitlements['com.apple.security.application-groups'] = [
21
+ groupIdentifier,
22
+ ...existingApplicationGroups,
23
+ ];
24
+ }
25
+ return entitlements;
26
+ }
27
+ //# sourceMappingURL=withAppGroupEntitlements.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"withAppGroupEntitlements.js","sourceRoot":"","sources":["../../../../plugin/ios/widgets/withAppGroupEntitlements.ts"],"names":[],"mappings":";;AAAA,yDAAsF;AAMtF,MAAM,wBAAwB,GAA4C,CAAC,MAAM,EAAE,KAAK,EAAE,EAAE,CAC1F,IAAA,sCAAqB,EAAC,MAAM,EAAE,CAAC,MAAM,EAAE,EAAE;;IACvC,MAAM,CAAC,GAAG,GAAG;QACX,GAAG,MAAM,CAAC,GAAG;QACb,YAAY,EAAE,gCAAgC,CAC5C,MAAA,MAAA,MAAM,CAAC,GAAG,0CAAE,YAAY,mCAAI,EAAE,EAC9B,KAAK,CAAC,eAAe,CACtB;KACF,CAAC;IAEF,OAAO,MAAM,CAAC;AAChB,CAAC,CAAC,CAAC;AAEL,kBAAe,wBAAwB,CAAC;AAExC,SAAS,gCAAgC,CAAC,YAAuB,EAAE,eAAwB;;IACzF,IAAI,CAAC,eAAe,EAAE,CAAC;QACrB,OAAO,YAAY,CAAC;IACtB,CAAC;IAED,MAAM,yBAAyB,GAC7B,MAAC,YAAY,CAAC,uCAAuC,CAAc,mCAAI,EAAE,CAAC;IAE5E,IAAI,CAAC,yBAAyB,CAAC,QAAQ,CAAC,eAAe,CAAC,EAAE,CAAC;QACzD,YAAY,CAAC,uCAAuC,CAAC,GAAG;YACtD,eAAe;YACf,GAAG,yBAAyB;SAC7B,CAAC;IACJ,CAAC;IAED,OAAO,YAAY,CAAC;AACtB,CAAC"}
@@ -0,0 +1,7 @@
1
+ import { ConfigPlugin } from '@expo/config-plugins';
2
+ type withAppInfoPlistProps = {
3
+ frequentUpdates: boolean;
4
+ groupIdentifier: string;
5
+ };
6
+ declare const withAppInfoPlist: ConfigPlugin<withAppInfoPlistProps>;
7
+ export default withAppInfoPlist;
@@ -0,0 +1,12 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const config_plugins_1 = require("@expo/config-plugins");
4
+ const withAppInfoPlist = (config, { frequentUpdates, groupIdentifier }) => (0, config_plugins_1.withInfoPlist)(config, (config) => {
5
+ const infoPlist = config.modResults;
6
+ infoPlist.NSSupportsLiveActivities = true;
7
+ infoPlist.NSSupportsLiveActivitiesFrequentUpdates = frequentUpdates;
8
+ infoPlist.ExpoWidgetsAppGroupIdentifier = groupIdentifier;
9
+ return config;
10
+ });
11
+ exports.default = withAppInfoPlist;
12
+ //# sourceMappingURL=withAppInfoPlist.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"withAppInfoPlist.js","sourceRoot":"","sources":["../../../../plugin/ios/widgets/withAppInfoPlist.ts"],"names":[],"mappings":";;AAAA,yDAAmE;AAOnE,MAAM,gBAAgB,GAAwC,CAC5D,MAAM,EACN,EAAE,eAAe,EAAE,eAAe,EAAE,EACpC,EAAE,CACF,IAAA,8BAAa,EAAC,MAAM,EAAE,CAAC,MAAM,EAAE,EAAE;IAC/B,MAAM,SAAS,GAAG,MAAM,CAAC,UAAU,CAAC;IACpC,SAAS,CAAC,wBAAwB,GAAG,IAAI,CAAC;IAC1C,SAAS,CAAC,uCAAuC,GAAG,eAAe,CAAC;IACpE,SAAS,CAAC,6BAA6B,GAAG,eAAe,CAAC;IAC1D,OAAO,MAAM,CAAC;AAChB,CAAC,CAAC,CAAC;AAEL,kBAAe,gBAAgB,CAAC"}
@@ -0,0 +1,8 @@
1
+ import { ConfigPlugin } from '@expo/config-plugins';
2
+ type EasConfigProps = {
3
+ targetName: string;
4
+ bundleIdentifier: string;
5
+ groupIdentifier: string;
6
+ };
7
+ declare const withEasConfig: ConfigPlugin<EasConfigProps>;
8
+ export default withEasConfig;
@@ -0,0 +1,52 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const withEasConfig = (config, { targetName, bundleIdentifier, groupIdentifier }) => {
4
+ var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o, _p, _q, _r, _s, _t, _u, _v, _w, _x, _y, _z;
5
+ let configIndex = null;
6
+ (_f = (_e = (_d = (_c = (_b = (_a = config.extra) === null || _a === void 0 ? void 0 : _a.eas) === null || _b === void 0 ? void 0 : _b.build) === null || _c === void 0 ? void 0 : _c.experimental) === null || _d === void 0 ? void 0 : _d.ios) === null || _e === void 0 ? void 0 : _e.appExtensions) === null || _f === void 0 ? void 0 : _f.forEach((ext, index) => {
7
+ if (ext.targetName === targetName) {
8
+ configIndex = index;
9
+ }
10
+ });
11
+ if (configIndex === null) {
12
+ config.extra = {
13
+ ...config.extra,
14
+ eas: {
15
+ ...(_g = config.extra) === null || _g === void 0 ? void 0 : _g.eas,
16
+ build: {
17
+ ...(_j = (_h = config.extra) === null || _h === void 0 ? void 0 : _h.eas) === null || _j === void 0 ? void 0 : _j.build,
18
+ experimental: {
19
+ ...(_m = (_l = (_k = config.extra) === null || _k === void 0 ? void 0 : _k.eas) === null || _l === void 0 ? void 0 : _l.build) === null || _m === void 0 ? void 0 : _m.experimental,
20
+ ios: {
21
+ ...(_r = (_q = (_p = (_o = config.extra) === null || _o === void 0 ? void 0 : _o.eas) === null || _p === void 0 ? void 0 : _p.build) === null || _q === void 0 ? void 0 : _q.experimental) === null || _r === void 0 ? void 0 : _r.ios,
22
+ appExtensions: [
23
+ ...((_x = (_w = (_v = (_u = (_t = (_s = config.extra) === null || _s === void 0 ? void 0 : _s.eas) === null || _t === void 0 ? void 0 : _t.build) === null || _u === void 0 ? void 0 : _u.experimental) === null || _v === void 0 ? void 0 : _v.ios) === null || _w === void 0 ? void 0 : _w.appExtensions) !== null && _x !== void 0 ? _x : []),
24
+ {
25
+ targetName,
26
+ bundleIdentifier,
27
+ entitlements: {
28
+ 'com.apple.security.application-groups': [groupIdentifier],
29
+ },
30
+ },
31
+ ],
32
+ },
33
+ },
34
+ },
35
+ },
36
+ };
37
+ }
38
+ else if (config.extra) {
39
+ // Ensure the entitlements are up to date for an existing entry
40
+ const existingEntry = config.extra.eas.build.experimental.ios.appExtensions[configIndex];
41
+ const existingGroups = (_z = (_y = existingEntry.entitlements) === null || _y === void 0 ? void 0 : _y['com.apple.security.application-groups']) !== null && _z !== void 0 ? _z : [];
42
+ if (!existingGroups.includes(groupIdentifier)) {
43
+ existingEntry.entitlements = {
44
+ ...existingEntry.entitlements,
45
+ 'com.apple.security.application-groups': [groupIdentifier, ...existingGroups],
46
+ };
47
+ }
48
+ }
49
+ return config;
50
+ };
51
+ exports.default = withEasConfig;
52
+ //# sourceMappingURL=withEasConfig.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"withEasConfig.js","sourceRoot":"","sources":["../../../../plugin/ios/widgets/withEasConfig.ts"],"names":[],"mappings":";;AAQA,MAAM,aAAa,GAAiC,CAClD,MAAM,EACN,EAAE,UAAU,EAAE,gBAAgB,EAAE,eAAe,EAAE,EACjD,EAAE;;IACF,IAAI,WAAW,GAAkB,IAAI,CAAC;IACtC,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAM,CAAC,KAAK,0CAAE,GAAG,0CAAE,KAAK,0CAAE,YAAY,0CAAE,GAAG,0CAAE,aAAa,0CAAE,OAAO,CAAC,CAAC,GAAQ,EAAE,KAAa,EAAE,EAAE;QAC9F,IAAI,GAAG,CAAC,UAAU,KAAK,UAAU,EAAE,CAAC;YAClC,WAAW,GAAG,KAAK,CAAC;QACtB,CAAC;IACH,CAAC,CAAC,CAAC;IAEH,IAAI,WAAW,KAAK,IAAI,EAAE,CAAC;QACzB,MAAM,CAAC,KAAK,GAAG;YACb,GAAG,MAAM,CAAC,KAAK;YACf,GAAG,EAAE;gBACH,GAAG,MAAA,MAAM,CAAC,KAAK,0CAAE,GAAG;gBACpB,KAAK,EAAE;oBACL,GAAG,MAAA,MAAA,MAAM,CAAC,KAAK,0CAAE,GAAG,0CAAE,KAAK;oBAC3B,YAAY,EAAE;wBACZ,GAAG,MAAA,MAAA,MAAA,MAAM,CAAC,KAAK,0CAAE,GAAG,0CAAE,KAAK,0CAAE,YAAY;wBACzC,GAAG,EAAE;4BACH,GAAG,MAAA,MAAA,MAAA,MAAA,MAAM,CAAC,KAAK,0CAAE,GAAG,0CAAE,KAAK,0CAAE,YAAY,0CAAE,GAAG;4BAC9C,aAAa,EAAE;gCACb,GAAG,CAAC,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAM,CAAC,KAAK,0CAAE,GAAG,0CAAE,KAAK,0CAAE,YAAY,0CAAE,GAAG,0CAAE,aAAa,mCAAI,EAAE,CAAC;gCACrE;oCACE,UAAU;oCACV,gBAAgB;oCAChB,YAAY,EAAE;wCACZ,uCAAuC,EAAE,CAAC,eAAe,CAAC;qCAC3D;iCACF;6BACF;yBACF;qBACF;iBACF;aACF;SACF,CAAC;IACJ,CAAC;SAAM,IAAI,MAAM,CAAC,KAAK,EAAE,CAAC;QACxB,+DAA+D;QAC/D,MAAM,aAAa,GAAG,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,YAAY,CAAC,GAAG,CAAC,aAAa,CAAC,WAAW,CAAC,CAAC;QACzF,MAAM,cAAc,GAClB,MAAC,MAAA,aAAa,CAAC,YAAY,0CAAG,uCAAuC,CAAc,mCAAI,EAAE,CAAC;QAC5F,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,eAAe,CAAC,EAAE,CAAC;YAC9C,aAAa,CAAC,YAAY,GAAG;gBAC3B,GAAG,aAAa,CAAC,YAAY;gBAC7B,uCAAuC,EAAE,CAAC,eAAe,EAAE,GAAG,cAAc,CAAC;aAC9E,CAAC;QACJ,CAAC;IACH,CAAC;IAED,OAAO,MAAM,CAAC;AAChB,CAAC,CAAC;AAEF,kBAAe,aAAa,CAAC"}
@@ -0,0 +1,7 @@
1
+ import { ConfigPlugin } from '@expo/config-plugins';
2
+ type WithIosWarningProps = {
3
+ property: string;
4
+ warning: string;
5
+ };
6
+ declare const withIosWarning: ConfigPlugin<WithIosWarningProps>;
7
+ export default withIosWarning;
@@ -0,0 +1,10 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const config_plugins_1 = require("@expo/config-plugins");
4
+ // Hack to display the warning only once
5
+ const withIosWarning = (config, { property, warning }) => (0, config_plugins_1.withInfoPlist)(config, (config) => {
6
+ config_plugins_1.WarningAggregator.addWarningIOS(property, warning);
7
+ return config;
8
+ });
9
+ exports.default = withIosWarning;
10
+ //# sourceMappingURL=withIosWarning.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"withIosWarning.js","sourceRoot":"","sources":["../../../../plugin/ios/widgets/withIosWarning.ts"],"names":[],"mappings":";;AACA,yDAAsF;AAItF,wCAAwC;AACxC,MAAM,cAAc,GAAsC,CACxD,MAAkB,EAClB,EAAE,QAAQ,EAAE,OAAO,EAAuB,EAC1C,EAAE,CACF,IAAA,8BAAa,EAAC,MAAM,EAAE,CAAC,MAAM,EAAE,EAAE;IAC/B,kCAAiB,CAAC,aAAa,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;IACnD,OAAO,MAAM,CAAC;AAChB,CAAC,CAAC,CAAC;AAEL,kBAAe,cAAc,CAAC"}
@@ -0,0 +1,11 @@
1
+ import { ConfigPlugin } from '@expo/config-plugins';
2
+ import { WidgetConfig } from '../../types/WidgetConfig.type';
3
+ type IosWidgetsProps = {
4
+ bundleIdentifier?: string;
5
+ groupIdentifier?: string;
6
+ enablePushNotifications?: boolean;
7
+ frequentUpdates?: boolean;
8
+ widgets: WidgetConfig[];
9
+ };
10
+ declare const withIosWidgets: ConfigPlugin<IosWidgetsProps>;
11
+ export default withIosWidgets;
@@ -0,0 +1,83 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ const config_plugins_1 = require("@expo/config-plugins");
7
+ const withAppGroupEntitlements_1 = __importDefault(require("./withAppGroupEntitlements"));
8
+ const withAppInfoPlist_1 = __importDefault(require("./withAppInfoPlist"));
9
+ const withEasConfig_1 = __importDefault(require("./withEasConfig"));
10
+ const withIosWarning_1 = __importDefault(require("./withIosWarning"));
11
+ const withPodsLinking_1 = __importDefault(require("./withPodsLinking"));
12
+ const withPushNotifications_1 = __importDefault(require("./withPushNotifications"));
13
+ const withWidgetSourceFiles_1 = __importDefault(require("./withWidgetSourceFiles"));
14
+ const withTargetXcodeProject_1 = __importDefault(require("./xcode/withTargetXcodeProject"));
15
+ const withIosWidgets = (config, props) => {
16
+ var _a, _b, _c, _d, _e, _f, _g, _h;
17
+ const shouldConfigureIos = !!((_a = config.ios) === null || _a === void 0 ? void 0 : _a.bundleIdentifier) ||
18
+ !!props.bundleIdentifier ||
19
+ !!props.groupIdentifier ||
20
+ props.enablePushNotifications === true ||
21
+ props.frequentUpdates === true;
22
+ if (!shouldConfigureIos) {
23
+ return config;
24
+ }
25
+ let plugins = [];
26
+ const deploymentTarget = (_c = (_b = config.ios) === null || _b === void 0 ? void 0 : _b.deploymentTarget) !== null && _c !== void 0 ? _c : '16.4';
27
+ const targetName = 'ExpoWidgetsTarget';
28
+ const widgets = props.widgets.filter((widget) => widget.ios !== null);
29
+ const enablePushNotifications = (_d = props.enablePushNotifications) !== null && _d !== void 0 ? _d : false;
30
+ const frequentUpdates = (_e = props.frequentUpdates) !== null && _e !== void 0 ? _e : false;
31
+ let bundleIdentifier = props.bundleIdentifier;
32
+ if (!bundleIdentifier) {
33
+ bundleIdentifier = `${(_f = config.ios) === null || _f === void 0 ? void 0 : _f.bundleIdentifier}.${targetName}`;
34
+ plugins.push([
35
+ withIosWarning_1.default,
36
+ {
37
+ property: 'bundleIdentifier',
38
+ warning: `Expo Widgets: No bundle identifier provided, using fallback: ${bundleIdentifier}.`,
39
+ },
40
+ ]);
41
+ }
42
+ let groupIdentifier = props.groupIdentifier;
43
+ if (!groupIdentifier) {
44
+ if (!((_g = config.ios) === null || _g === void 0 ? void 0 : _g.bundleIdentifier)) {
45
+ throw new Error('iOS bundle identifier is required. Please set `ios.bundleIdentifier` in `app.json` or `app.config.js`');
46
+ }
47
+ groupIdentifier = `group.${config.ios.bundleIdentifier}`;
48
+ plugins.push([
49
+ withIosWarning_1.default,
50
+ {
51
+ property: 'groupIdentifier',
52
+ warning: `Expo Widgets: No group identifier provided, using fallback: ${groupIdentifier}.`,
53
+ },
54
+ ]);
55
+ }
56
+ let sharedFiles = [];
57
+ const setFiles = (files) => {
58
+ sharedFiles = [...sharedFiles, ...files];
59
+ };
60
+ const getFileUris = () => sharedFiles;
61
+ plugins = [
62
+ ...plugins,
63
+ [withEasConfig_1.default, { targetName, bundleIdentifier, groupIdentifier }],
64
+ [withPodsLinking_1.default, { targetName }],
65
+ [withWidgetSourceFiles_1.default, { targetName, widgets, groupIdentifier, onFilesGenerated: setFiles }],
66
+ [withAppInfoPlist_1.default, { frequentUpdates, groupIdentifier }],
67
+ [withPushNotifications_1.default, { enablePushNotifications }],
68
+ [withAppGroupEntitlements_1.default, { groupIdentifier }],
69
+ [
70
+ withTargetXcodeProject_1.default,
71
+ {
72
+ targetName,
73
+ bundleIdentifier,
74
+ deploymentTarget,
75
+ appleTeamId: (_h = config.ios) === null || _h === void 0 ? void 0 : _h.appleTeamId,
76
+ getFileUris,
77
+ },
78
+ ],
79
+ ];
80
+ return (0, config_plugins_1.withPlugins)(config, plugins);
81
+ };
82
+ exports.default = withIosWidgets;
83
+ //# sourceMappingURL=withIosWidgets.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"withIosWidgets.js","sourceRoot":"","sources":["../../../../plugin/ios/widgets/withIosWidgets.ts"],"names":[],"mappings":";;;;;AAAA,yDAA+E;AAE/E,0FAAkE;AAClE,0EAAkD;AAClD,oEAA4C;AAC5C,sEAA8C;AAC9C,wEAAgD;AAChD,oFAA4D;AAC5D,oFAA4D;AAE5D,4FAAoE;AAUpE,MAAM,cAAc,GAAkC,CAAC,MAAM,EAAE,KAAK,EAAE,EAAE;;IACtE,MAAM,kBAAkB,GACtB,CAAC,CAAC,CAAA,MAAA,MAAM,CAAC,GAAG,0CAAE,gBAAgB,CAAA;QAC9B,CAAC,CAAC,KAAK,CAAC,gBAAgB;QACxB,CAAC,CAAC,KAAK,CAAC,eAAe;QACvB,KAAK,CAAC,uBAAuB,KAAK,IAAI;QACtC,KAAK,CAAC,eAAe,KAAK,IAAI,CAAC;IAEjC,IAAI,CAAC,kBAAkB,EAAE,CAAC;QACxB,OAAO,MAAM,CAAC;IAChB,CAAC;IAED,IAAI,OAAO,GAA6C,EAAE,CAAC;IAC3D,MAAM,gBAAgB,GAAG,MAAA,MAAA,MAAM,CAAC,GAAG,0CAAE,gBAAgB,mCAAI,MAAM,CAAC;IAChE,MAAM,UAAU,GAAG,mBAAmB,CAAC;IACvC,MAAM,OAAO,GAAG,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,GAAG,KAAK,IAAI,CAAC,CAAC;IAEtE,MAAM,uBAAuB,GAAG,MAAA,KAAK,CAAC,uBAAuB,mCAAI,KAAK,CAAC;IACvE,MAAM,eAAe,GAAG,MAAA,KAAK,CAAC,eAAe,mCAAI,KAAK,CAAC;IAEvD,IAAI,gBAAgB,GAAG,KAAK,CAAC,gBAAgB,CAAC;IAC9C,IAAI,CAAC,gBAAgB,EAAE,CAAC;QACtB,gBAAgB,GAAG,GAAG,MAAA,MAAM,CAAC,GAAG,0CAAE,gBAAgB,IAAI,UAAU,EAAE,CAAC;QACnE,OAAO,CAAC,IAAI,CAAC;YACX,wBAAc;YACd;gBACE,QAAQ,EAAE,kBAAkB;gBAC5B,OAAO,EAAE,gEAAgE,gBAAgB,GAAG;aAC7F;SACF,CAAC,CAAC;IACL,CAAC;IAED,IAAI,eAAe,GAAG,KAAK,CAAC,eAAe,CAAC;IAC5C,IAAI,CAAC,eAAe,EAAE,CAAC;QACrB,IAAI,CAAC,CAAA,MAAA,MAAM,CAAC,GAAG,0CAAE,gBAAgB,CAAA,EAAE,CAAC;YAClC,MAAM,IAAI,KAAK,CACb,uGAAuG,CACxG,CAAC;QACJ,CAAC;QACD,eAAe,GAAG,SAAS,MAAM,CAAC,GAAG,CAAC,gBAAgB,EAAE,CAAC;QACzD,OAAO,CAAC,IAAI,CAAC;YACX,wBAAc;YACd;gBACE,QAAQ,EAAE,iBAAiB;gBAC3B,OAAO,EAAE,+DAA+D,eAAe,GAAG;aAC3F;SACF,CAAC,CAAC;IACL,CAAC;IAED,IAAI,WAAW,GAAa,EAAE,CAAC;IAC/B,MAAM,QAAQ,GAAG,CAAC,KAAe,EAAE,EAAE;QACnC,WAAW,GAAG,CAAC,GAAG,WAAW,EAAE,GAAG,KAAK,CAAC,CAAC;IAC3C,CAAC,CAAC;IACF,MAAM,WAAW,GAAG,GAAG,EAAE,CAAC,WAAW,CAAC;IAEtC,OAAO,GAAG;QACR,GAAG,OAAO;QACV,CAAC,uBAAa,EAAE,EAAE,UAAU,EAAE,gBAAgB,EAAE,eAAe,EAAE,CAAC;QAClE,CAAC,yBAAe,EAAE,EAAE,UAAU,EAAE,CAAC;QACjC,CAAC,+BAAqB,EAAE,EAAE,UAAU,EAAE,OAAO,EAAE,eAAe,EAAE,gBAAgB,EAAE,QAAQ,EAAE,CAAC;QAC7F,CAAC,0BAAgB,EAAE,EAAE,eAAe,EAAE,eAAe,EAAE,CAAC;QACxD,CAAC,+BAAqB,EAAE,EAAE,uBAAuB,EAAE,CAAC;QACpD,CAAC,kCAAwB,EAAE,EAAE,eAAe,EAAE,CAAC;QAC/C;YACE,gCAAsB;YACtB;gBACE,UAAU;gBACV,gBAAgB;gBAChB,gBAAgB;gBAChB,WAAW,EAAE,MAAA,MAAM,CAAC,GAAG,0CAAE,WAAW;gBACpC,WAAW;aACZ;SACF;KACF,CAAC;IAEF,OAAO,IAAA,4BAAW,EAAC,MAAM,EAAE,OAAO,CAAC,CAAC;AACtC,CAAC,CAAC;AAEF,kBAAe,cAAc,CAAC"}
@@ -0,0 +1,6 @@
1
+ import { ConfigPlugin } from '@expo/config-plugins';
2
+ interface PodsLinkingProps {
3
+ targetName: string;
4
+ }
5
+ declare const withPodsLinking: ConfigPlugin<PodsLinkingProps>;
6
+ export default withPodsLinking;