react-native-navigation 8.8.6-snapshot.2569 → 8.8.6-snapshot.2571

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 (76) hide show
  1. package/ios/ARCHITECTURE.md +5 -0
  2. package/ios/RNNAppDelegate.h +16 -0
  3. package/ios/RNNAppDelegate.mm +73 -0
  4. package/lib/module/ARCHITECTURE.md +30 -0
  5. package/lib/module/Navigation.js +34 -1
  6. package/lib/module/Navigation.js.map +1 -1
  7. package/lib/module/NavigationDelegate.js +21 -0
  8. package/lib/module/NavigationDelegate.js.map +1 -1
  9. package/lib/module/index.js +1 -0
  10. package/lib/module/index.js.map +1 -1
  11. package/lib/module/linking/DeferredLinkQueue.js +52 -0
  12. package/lib/module/linking/DeferredLinkQueue.js.map +1 -0
  13. package/lib/module/linking/DeferredLinkQueue.test.js +54 -0
  14. package/lib/module/linking/DeferredLinkQueue.test.js.map +1 -0
  15. package/lib/module/linking/LinkingHandler.js +139 -0
  16. package/lib/module/linking/LinkingHandler.js.map +1 -0
  17. package/lib/module/linking/LinkingHandler.test.js +384 -0
  18. package/lib/module/linking/LinkingHandler.test.js.map +1 -0
  19. package/lib/module/linking/ModalLayoutBuilder.js +56 -0
  20. package/lib/module/linking/ModalLayoutBuilder.js.map +1 -0
  21. package/lib/module/linking/ModalLayoutBuilder.test.js +154 -0
  22. package/lib/module/linking/ModalLayoutBuilder.test.js.map +1 -0
  23. package/lib/module/linking/RouteMatcher.js +104 -0
  24. package/lib/module/linking/RouteMatcher.js.map +1 -0
  25. package/lib/module/linking/RouteMatcher.test.js +164 -0
  26. package/lib/module/linking/RouteMatcher.test.js.map +1 -0
  27. package/lib/module/linking/URLParser.js +56 -0
  28. package/lib/module/linking/URLParser.js.map +1 -0
  29. package/lib/module/linking/URLParser.test.js +100 -0
  30. package/lib/module/linking/URLParser.test.js.map +1 -0
  31. package/lib/module/linking/types.js +4 -0
  32. package/lib/module/linking/types.js.map +1 -0
  33. package/lib/typescript/Navigation.d.ts +22 -0
  34. package/lib/typescript/Navigation.d.ts.map +1 -1
  35. package/lib/typescript/NavigationDelegate.d.ts +13 -0
  36. package/lib/typescript/NavigationDelegate.d.ts.map +1 -1
  37. package/lib/typescript/index.d.ts +1 -0
  38. package/lib/typescript/index.d.ts.map +1 -1
  39. package/lib/typescript/linking/DeferredLinkQueue.d.ts +26 -0
  40. package/lib/typescript/linking/DeferredLinkQueue.d.ts.map +1 -0
  41. package/lib/typescript/linking/DeferredLinkQueue.test.d.ts +2 -0
  42. package/lib/typescript/linking/DeferredLinkQueue.test.d.ts.map +1 -0
  43. package/lib/typescript/linking/LinkingHandler.d.ts +71 -0
  44. package/lib/typescript/linking/LinkingHandler.d.ts.map +1 -0
  45. package/lib/typescript/linking/LinkingHandler.test.d.ts +2 -0
  46. package/lib/typescript/linking/LinkingHandler.test.d.ts.map +1 -0
  47. package/lib/typescript/linking/ModalLayoutBuilder.d.ts +21 -0
  48. package/lib/typescript/linking/ModalLayoutBuilder.d.ts.map +1 -0
  49. package/lib/typescript/linking/ModalLayoutBuilder.test.d.ts +2 -0
  50. package/lib/typescript/linking/ModalLayoutBuilder.test.d.ts.map +1 -0
  51. package/lib/typescript/linking/RouteMatcher.d.ts +23 -0
  52. package/lib/typescript/linking/RouteMatcher.d.ts.map +1 -0
  53. package/lib/typescript/linking/RouteMatcher.test.d.ts +2 -0
  54. package/lib/typescript/linking/RouteMatcher.test.d.ts.map +1 -0
  55. package/lib/typescript/linking/URLParser.d.ts +16 -0
  56. package/lib/typescript/linking/URLParser.d.ts.map +1 -0
  57. package/lib/typescript/linking/URLParser.test.d.ts +2 -0
  58. package/lib/typescript/linking/URLParser.test.d.ts.map +1 -0
  59. package/lib/typescript/linking/types.d.ts +107 -0
  60. package/lib/typescript/linking/types.d.ts.map +1 -0
  61. package/package.json +1 -1
  62. package/src/ARCHITECTURE.md +30 -0
  63. package/src/Navigation.ts +36 -1
  64. package/src/NavigationDelegate.ts +22 -0
  65. package/src/index.ts +1 -0
  66. package/src/linking/DeferredLinkQueue.test.ts +60 -0
  67. package/src/linking/DeferredLinkQueue.ts +55 -0
  68. package/src/linking/LinkingHandler.test.ts +332 -0
  69. package/src/linking/LinkingHandler.ts +169 -0
  70. package/src/linking/ModalLayoutBuilder.test.ts +105 -0
  71. package/src/linking/ModalLayoutBuilder.ts +60 -0
  72. package/src/linking/RouteMatcher.test.ts +128 -0
  73. package/src/linking/RouteMatcher.ts +126 -0
  74. package/src/linking/URLParser.test.ts +105 -0
  75. package/src/linking/URLParser.ts +62 -0
  76. package/src/linking/types.ts +115 -0
@@ -28,6 +28,11 @@ Base class that user's AppDelegate must extend. Handles React Native and navigat
28
28
  - Creates `RCTRootViewFactory` and `ReactHost`
29
29
  - Calls `[ReactNativeNavigation bootstrapWithHost:]` to initialize navigation
30
30
  - Handles RN version differences (0.77, 0.78, 0.79+) via compile-time macros
31
+ - **Deep linking plumbing**:
32
+ - Implements `application:openURL:options:` and `application:continueUserActivity:restorationHandler:`; both call `-dispatchDeepLinkURL:`.
33
+ - `-dispatchDeepLinkURL:` posts `RCTOpenURLNotification` directly if the React runtime is ready, otherwise enqueues the URL.
34
+ - Observes `RCTContentDidAppearNotification` (the Fabric/bridgeless signal) to flush the queue. This solves the cold-start race where URLs (push notifications, OS link launches) arrive before `RCTLinkingManager` is listening.
35
+ - Subclasses can call `-dispatchDeepLinkURL:` manually from notification delegates or any other URL source; the queueing behavior is reused automatically.
31
36
 
32
37
  ### ReactNativeNavigation Bootstrap
33
38
  **File**: `ReactNativeNavigation.h/mm`
@@ -56,4 +56,20 @@
56
56
  @property(nonatomic) BOOL bridgelessEnabled;
57
57
  #endif
58
58
 
59
+ /**
60
+ * Dispatch a deep link URL through React Native's Linking module so JS
61
+ * subscribers (including RNN's built-in deep linking framework) receive it.
62
+ *
63
+ * Safe to call before the JS bridge is ready: URLs that arrive early
64
+ * (e.g. cold-start notification taps) are queued natively and flushed
65
+ * automatically once Fabric/React content first appears.
66
+ *
67
+ * Custom-scheme and universal-link openings dispatched by the OS are
68
+ * forwarded through this method automatically; call it manually only
69
+ * when your app receives a deep link from a source RNN can't intercept
70
+ * (e.g. a custom `UNUserNotificationCenterDelegate`, a third-party push
71
+ * SDK callback, etc.).
72
+ */
73
+ - (void)dispatchDeepLinkURL:(NSURL *)url;
74
+
59
75
  @end
@@ -8,6 +8,8 @@
8
8
  #import <React/RCTCxxBridgeDelegate.h>
9
9
  #endif
10
10
  #import <React/RCTLegacyViewManagerInteropComponentView.h>
11
+ #import <React/RCTLinkingManager.h>
12
+ #import <React/RCTRootView.h>
11
13
  #import <React/RCTSurfacePresenter.h>
12
14
  #if __has_include(<React/RCTSurfacePresenterStub.h>)
13
15
  #import <React/RCTSurfacePresenterStub.h>
@@ -36,6 +38,13 @@
36
38
 
37
39
  #import <React/RCTComponentViewFactory.h>
38
40
 
41
+ // Deep-link URLs that arrive (openURL, universal link, or external dispatch)
42
+ // before the React runtime is ready are queued here and flushed when Fabric
43
+ // posts `RCTContentDidAppearNotification` — by which point
44
+ // `RCTLinkingManager` is instantiated and JS subscribers are listening.
45
+ static NSMutableArray<NSURL *> *gRNNPendingDeepLinkURLs = nil;
46
+ static BOOL gRNNReactRuntimeReady = NO;
47
+
39
48
 
40
49
  static NSString *const kRNConcurrentRoot = @"concurrentRoot";
41
50
 
@@ -92,9 +101,73 @@ didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
92
101
  [ReactNativeNavigation bootstrapWithHost:self.reactNativeFactory.rootViewFactory.reactHost];
93
102
  #endif
94
103
 
104
+ [self rnn_installDeepLinkObservers];
105
+
95
106
  return YES;
96
107
  }
97
108
 
109
+ #pragma mark - Deep linking
110
+
111
+ // Forward OS-delivered custom-scheme URLs to React Native's Linking module.
112
+ - (BOOL)application:(UIApplication *)application
113
+ openURL:(NSURL *)url
114
+ options:(NSDictionary<UIApplicationOpenURLOptionsKey, id> *)options {
115
+ [self dispatchDeepLinkURL:url];
116
+ return YES;
117
+ }
118
+
119
+ // Forward universal links (associated domains) to React Native's Linking
120
+ // module by extracting the underlying https URL and routing it through the
121
+ // same pre-bridge queue as everything else.
122
+ - (BOOL)application:(UIApplication *)application
123
+ continueUserActivity:(NSUserActivity *)userActivity
124
+ restorationHandler:
125
+ (void (^)(NSArray<id<UIUserActivityRestoring>> *_Nullable))restorationHandler {
126
+ if ([userActivity.activityType isEqualToString:NSUserActivityTypeBrowsingWeb]) {
127
+ [self dispatchDeepLinkURL:userActivity.webpageURL];
128
+ return YES;
129
+ }
130
+ return NO;
131
+ }
132
+
133
+ - (void)dispatchDeepLinkURL:(NSURL *)url {
134
+ if (url == nil) {
135
+ return;
136
+ }
137
+ if (gRNNReactRuntimeReady) {
138
+ [RCTLinkingManager application:[UIApplication sharedApplication]
139
+ openURL:url
140
+ options:@{}];
141
+ return;
142
+ }
143
+ if (gRNNPendingDeepLinkURLs == nil) {
144
+ gRNNPendingDeepLinkURLs = [NSMutableArray array];
145
+ }
146
+ [gRNNPendingDeepLinkURLs addObject:url];
147
+ }
148
+
149
+ - (void)rnn_installDeepLinkObservers {
150
+ // `RCTContentDidAppearNotification` is posted by Fabric's root view
151
+ // once content has rendered. RNN forces bridgeless/new-arch, so the
152
+ // legacy `RCTJavaScriptDidLoadNotification` never fires; we rely on
153
+ // this Fabric signal exclusively.
154
+ [[NSNotificationCenter defaultCenter] addObserver:self
155
+ selector:@selector(rnn_handleReactRuntimeReady:)
156
+ name:RCTContentDidAppearNotification
157
+ object:nil];
158
+ }
159
+
160
+ - (void)rnn_handleReactRuntimeReady:(NSNotification *)notification {
161
+ gRNNReactRuntimeReady = YES;
162
+ NSArray<NSURL *> *pending = [gRNNPendingDeepLinkURLs copy];
163
+ [gRNNPendingDeepLinkURLs removeAllObjects];
164
+ for (NSURL *url in pending) {
165
+ [RCTLinkingManager application:[UIApplication sharedApplication]
166
+ openURL:url
167
+ options:@{}];
168
+ }
169
+ }
170
+
98
171
 
99
172
  #if !RNN_RN_VERSION_79_OR_NEWER
100
173
  - (NSURL *)sourceURLForBridge:(RCTBridge *)bridge {
@@ -18,6 +18,7 @@ src/
18
18
  ├── components/ # React component management
19
19
  ├── events/ # Event system
20
20
  ├── interfaces/ # TypeScript type definitions
21
+ ├── linking/ # Deep-linking framework (URL → command)
21
22
  └── processors/ # Extensibility hooks
22
23
  ```
23
24
 
@@ -207,6 +208,35 @@ Notifies listeners of command lifecycle (start, complete).
207
208
  | `RNN.PreviewCompleted` | 3D Touch preview completed |
208
209
  | `RNN.CommandCompleted` | Navigation command finished |
209
210
 
211
+ ## Linking Layer
212
+
213
+ Implements URL-to-screen routing on top of the standard command pipeline. The whole feature is JS-only; it consumes URLs from RN's `Linking` module and dispatches `showModal` (or a user-supplied command) when a match is found.
214
+
215
+ **Public surface** (proxied through `NavigationDelegate`):
216
+ - `Navigation.setLinking(config)` — configure prefixes, screen map, and customization hooks
217
+ - `Navigation.handleDeepLink(url)` — manually feed a URL (push notifications, branch.io, App Clips)
218
+ - `Navigation.setLinkingReady(ready)` — user-controlled gate for deferred deep links
219
+
220
+ **Internal modules** (`src/linking/`):
221
+
222
+ | File | Purpose |
223
+ |------|---------|
224
+ | `LinkingHandler.ts` | Orchestrator. Subscribes to `Linking.url`/`getInitialURL`, drives the queue, dispatches matches. Instantiated by `NavigationRoot`. |
225
+ | `URLParser.ts` | Strips prefix (longest match), removes fragment, decodes path segments + query params. |
226
+ | `RouteMatcher.ts` | Compiles `ScreensConfig` into a `RouteNode` tree; matches paths to screen chains with parameter extraction. |
227
+ | `DeferredLinkQueue.ts` | FIFO queue. Holds URLs until both gates open (root-ready + user-ready). |
228
+ | `ModalLayoutBuilder.ts` | Default presentation: wraps the matched chain in a `stack`, merges params into `passProps`, filters React-reserved keys (`ref`, `key`). |
229
+ | `types.ts` | Public types: `LinkingConfig`, `RouteMatch`, `ScreensConfig`, etc. (re-exported via `src/index.ts`). |
230
+
231
+ **Readiness gates** — a URL is dispatched only when both are true:
232
+ 1. **Root-ready** (automatic): the first `Navigation.setRoot()` has resolved. `NavigationRoot.setRoot` calls `linkingHandler.setRootReady()` after the promise resolves.
233
+ 2. **User-ready** (optional): `config.isReady()` returns `true`, or `setLinkingReady(true)` was called.
234
+
235
+ **Resolution priority** when a match is found:
236
+ 1. `config.onLink(match)` — full escape hatch, RNN does nothing else
237
+ 2. `config.getModal(match)` — custom modal layout
238
+ 3. Default `ModalLayoutBuilder` output
239
+
210
240
  ## Processors Layer
211
241
 
212
242
  ### OptionProcessorsStore
@@ -21,6 +21,7 @@ import { Deprecations } from "./commands/Deprecations.js";
21
21
  import { LayoutProcessor } from "./processors/LayoutProcessor.js";
22
22
  import { LayoutProcessorsStore } from "./processors/LayoutProcessorsStore.js";
23
23
  import { OptionsCrawler } from "./commands/OptionsCrawler.js";
24
+ import { LinkingHandler } from "./linking/LinkingHandler.js";
24
25
  export class NavigationRoot {
25
26
  TouchablePreview = TouchablePreview;
26
27
  constructor(nativeCommandsSender, nativeEventsReceiver, appRegistryService) {
@@ -42,6 +43,7 @@ export class NavigationRoot {
42
43
  this.optionsCrawler = new OptionsCrawler(this.store, this.uniqueIdProvider);
43
44
  this.commands = new Commands(this.store, this.nativeCommandsSender, this.layoutTreeParser, this.layoutTreeCrawler, this.commandsObserver, this.uniqueIdProvider, optionsProcessor, layoutProcessor, this.optionsCrawler);
44
45
  this.eventsRegistry = new EventsRegistry(this.nativeEventsReceiver, this.commandsObserver, this.componentEventsObserver);
46
+ this.linkingHandler = new LinkingHandler(layout => this.commands.showModal(layout));
45
47
  this.componentEventsObserver.registerOnceForAllComponentEvents();
46
48
  }
47
49
 
@@ -84,7 +86,9 @@ export class NavigationRoot {
84
86
  * Reset the app to a new layout
85
87
  */
86
88
  setRoot(layout) {
87
- return this.commands.setRoot(layout);
89
+ const result = this.commands.setRoot(layout);
90
+ result.then(() => this.linkingHandler.setRootReady()).catch(() => {});
91
+ return result;
88
92
  }
89
93
 
90
94
  /**
@@ -193,6 +197,35 @@ export class NavigationRoot {
193
197
  return this.commands.getLaunchArgs();
194
198
  }
195
199
 
200
+ /**
201
+ * Configure deep link handling. Maps URL prefixes and path patterns to
202
+ * RNN components. By default each matched link is presented as a modal
203
+ * (wrapped in a stack so a topBar close button can be configured); supply
204
+ * `getModal` to customize the modal layout or `onLink` to bypass the
205
+ * default behavior entirely.
206
+ */
207
+ setLinking(config) {
208
+ this.linkingHandler.configure(config);
209
+ }
210
+
211
+ /**
212
+ * Manually run a URL through the deep link pipeline as if it had been
213
+ * delivered by the OS. Useful for URLs received from push notifications
214
+ * or other non-`Linking` sources.
215
+ */
216
+ handleDeepLink(url) {
217
+ this.linkingHandler.handleURL(url);
218
+ }
219
+
220
+ /**
221
+ * Signal that the app is ready to process deep links (e.g. after the
222
+ * user has authenticated). When set to `true`, any links that were
223
+ * queued while not ready are replayed in order.
224
+ */
225
+ setLinkingReady(ready) {
226
+ this.linkingHandler.setLinkingReady(ready);
227
+ }
228
+
196
229
  /**
197
230
  * Obtain the events registry instance
198
231
  */
@@ -1 +1 @@
1
- {"version":3,"names":["isArray","UniqueIdProvider","Store","OptionProcessorsStore","ComponentRegistry","Commands","LayoutTreeParser","LayoutTreeCrawler","EventsRegistry","CommandsObserver","Constants","ComponentEventsObserver","TouchablePreview","ComponentWrapper","OptionsProcessor","ColorService","AssetService","Deprecations","LayoutProcessor","LayoutProcessorsStore","OptionsCrawler","NavigationRoot","constructor","nativeCommandsSender","nativeEventsReceiver","appRegistryService","componentWrapper","store","optionProcessorsStore","layoutProcessorsStore","uniqueIdProvider","componentEventsObserver","componentRegistry","layoutTreeParser","optionsProcessor","layoutProcessor","layoutTreeCrawler","commandsObserver","optionsCrawler","commands","eventsRegistry","registerOnceForAllComponentEvents","registerComponent","componentName","componentProvider","concreteComponentProvider","addOptionProcessor","optionPath","processor","addProcessor","addLayoutProcessor","setLazyComponentRegistrator","lazyRegistratorFn","registerComponentWithRedux","getComponentClassFunc","ReduxProvider","reduxStore","console","warn","undefined","setRoot","layout","setDefaultOptions","options","mergeOptions","componentId","updateProps","props","callback","showModal","dismissModal","dismissAllModals","push","pop","popTo","popToRoot","setStackRoot","children","showOverlay","dismissOverlay","dismissAllOverlays","getLaunchArgs","events","constants","get","constantsSync","getSync"],"sourceRoot":"../../src","sources":["Navigation.ts"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["isArray","UniqueIdProvider","Store","OptionProcessorsStore","ComponentRegistry","Commands","LayoutTreeParser","LayoutTreeCrawler","EventsRegistry","CommandsObserver","Constants","ComponentEventsObserver","TouchablePreview","ComponentWrapper","OptionsProcessor","ColorService","AssetService","Deprecations","LayoutProcessor","LayoutProcessorsStore","OptionsCrawler","LinkingHandler","NavigationRoot","constructor","nativeCommandsSender","nativeEventsReceiver","appRegistryService","componentWrapper","store","optionProcessorsStore","layoutProcessorsStore","uniqueIdProvider","componentEventsObserver","componentRegistry","layoutTreeParser","optionsProcessor","layoutProcessor","layoutTreeCrawler","commandsObserver","optionsCrawler","commands","eventsRegistry","linkingHandler","layout","showModal","registerOnceForAllComponentEvents","registerComponent","componentName","componentProvider","concreteComponentProvider","addOptionProcessor","optionPath","processor","addProcessor","addLayoutProcessor","setLazyComponentRegistrator","lazyRegistratorFn","registerComponentWithRedux","getComponentClassFunc","ReduxProvider","reduxStore","console","warn","undefined","setRoot","result","then","setRootReady","catch","setDefaultOptions","options","mergeOptions","componentId","updateProps","props","callback","dismissModal","dismissAllModals","push","pop","popTo","popToRoot","setStackRoot","children","showOverlay","dismissOverlay","dismissAllOverlays","getLaunchArgs","setLinking","config","configure","handleDeepLink","url","handleURL","setLinkingReady","ready","events","constants","get","constantsSync","getSync"],"sourceRoot":"../../src","sources":["Navigation.ts"],"mappings":"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","ignoreList":[]}
@@ -158,6 +158,27 @@ export class NavigationDelegate {
158
158
  return this.concreteNavigation.getLaunchArgs();
159
159
  }
160
160
 
161
+ /**
162
+ * Configure deep link handling.
163
+ */
164
+ setLinking(config) {
165
+ this.concreteNavigation.setLinking(config);
166
+ }
167
+
168
+ /**
169
+ * Manually feed a URL into the deep link pipeline.
170
+ */
171
+ handleDeepLink(url) {
172
+ this.concreteNavigation.handleDeepLink(url);
173
+ }
174
+
175
+ /**
176
+ * Signal readiness to process deep links. Flushes any queued links.
177
+ */
178
+ setLinkingReady(ready) {
179
+ this.concreteNavigation.setLinkingReady(ready);
180
+ }
181
+
161
182
  /**
162
183
  * Obtain the events registry instance
163
184
  */
@@ -1 +1 @@
1
- {"version":3,"names":["NavigationRoot","NativeCommandsSender","NativeEventsReceiver","AppRegistryService","NavigationDelegate","constructor","concreteNavigation","createConcreteNavigation","nativeCommandsSender","nativeEventsReceiver","appRegistryService","registerComponent","componentName","componentProvider","concreteComponentProvider","addOptionProcessor","optionPath","processor","addLayoutProcessor","setLazyComponentRegistrator","lazyRegistratorFn","registerComponentWithRedux","getComponentClassFunc","ReduxProvider","reduxStore","setRoot","layout","setDefaultOptions","options","mergeOptions","componentId","updateProps","props","callback","showModal","dismissModal","dismissAllModals","push","pop","popTo","popToRoot","setStackRoot","showOverlay","dismissOverlay","dismissAllOverlays","getLaunchArgs","events","constants","constantsSync","TouchablePreview","mockNativeComponents","mockedNativeCommandsSender","mockedNativeEventsReceiver","mockedAppRegistryService","mock","store"],"sourceRoot":"../../src","sources":["NavigationDelegate.ts"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["NavigationRoot","NativeCommandsSender","NativeEventsReceiver","AppRegistryService","NavigationDelegate","constructor","concreteNavigation","createConcreteNavigation","nativeCommandsSender","nativeEventsReceiver","appRegistryService","registerComponent","componentName","componentProvider","concreteComponentProvider","addOptionProcessor","optionPath","processor","addLayoutProcessor","setLazyComponentRegistrator","lazyRegistratorFn","registerComponentWithRedux","getComponentClassFunc","ReduxProvider","reduxStore","setRoot","layout","setDefaultOptions","options","mergeOptions","componentId","updateProps","props","callback","showModal","dismissModal","dismissAllModals","push","pop","popTo","popToRoot","setStackRoot","showOverlay","dismissOverlay","dismissAllOverlays","getLaunchArgs","setLinking","config","handleDeepLink","url","setLinkingReady","ready","events","constants","constantsSync","TouchablePreview","mockNativeComponents","mockedNativeCommandsSender","mockedNativeEventsReceiver","mockedAppRegistryService","mock","store"],"sourceRoot":"../../src","sources":["NavigationDelegate.ts"],"mappings":"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","ignoreList":[]}
@@ -18,4 +18,5 @@ export * from "./interfaces/NavigationFunctionComponent.js";
18
18
  export * from "./interfaces/CommandName.js";
19
19
  export * from "./interfaces/Processors.js";
20
20
  export * from "./interfaces/ProcessorSubscription.js";
21
+ export * from "./linking/types.js";
21
22
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["NavigationDelegate","navigationDelegate","Navigation"],"sourceRoot":"../../src","sources":["index.ts"],"mappings":";;AAAA,SAASA,kBAAkB,QAAQ,yBAAsB;AACzD,MAAMC,kBAAkB,GAAG,IAAID,kBAAkB,CAAC,CAAC;AACnD,OAAO,MAAME,UAAU,GAAGD,kBAAkB;AAC5C,cAAc,uBAAoB;AAClC,cAAc,4BAAyB;AACvC,cAAc,yBAAsB;AACpC,cAAc,iCAA8B;AAC5C,cAAc,wBAAqB;AACnC,cAAc,mCAAgC;AAC9C,cAAc,wBAAqB;AACnC,cAAc,yBAAsB;AACpC,cAAc,qCAAkC;AAChD,cAAc,0CAAuC;AACrD,cAAc,6CAA0C;AACxD,cAAc,6CAA0C;AACxD,cAAc,6BAA0B;AACxC,cAAc,4BAAyB;AACvC,cAAc,uCAAoC","ignoreList":[]}
1
+ {"version":3,"names":["NavigationDelegate","navigationDelegate","Navigation"],"sourceRoot":"../../src","sources":["index.ts"],"mappings":";;AAAA,SAASA,kBAAkB,QAAQ,yBAAsB;AACzD,MAAMC,kBAAkB,GAAG,IAAID,kBAAkB,CAAC,CAAC;AACnD,OAAO,MAAME,UAAU,GAAGD,kBAAkB;AAC5C,cAAc,uBAAoB;AAClC,cAAc,4BAAyB;AACvC,cAAc,yBAAsB;AACpC,cAAc,iCAA8B;AAC5C,cAAc,wBAAqB;AACnC,cAAc,mCAAgC;AAC9C,cAAc,wBAAqB;AACnC,cAAc,yBAAsB;AACpC,cAAc,qCAAkC;AAChD,cAAc,0CAAuC;AACrD,cAAc,6CAA0C;AACxD,cAAc,6CAA0C;AACxD,cAAc,6BAA0B;AACxC,cAAc,4BAAyB;AACvC,cAAc,uCAAoC;AAClD,cAAc,oBAAiB","ignoreList":[]}
@@ -0,0 +1,52 @@
1
+ "use strict";
2
+
3
+ /**
4
+ * Holds URLs while the linking pipeline is not ready and replays them in
5
+ * order once it becomes ready.
6
+ *
7
+ * Readiness is set by the owning `LinkingHandler` and reflects the combined
8
+ * state of:
9
+ * - whether the first `setRoot` has resolved (so a modal can be presented),
10
+ * - whether the user-supplied `isReady` predicate (if any) returns `true`.
11
+ */
12
+ export class DeferredLinkQueue {
13
+ queue = [];
14
+ ready = false;
15
+ flushCallback = null;
16
+ setFlushCallback(callback) {
17
+ this.flushCallback = callback;
18
+ }
19
+ setReady(ready) {
20
+ const becameReady = !this.ready && ready;
21
+ this.ready = ready;
22
+ if (becameReady) {
23
+ this.flush();
24
+ }
25
+ }
26
+ isReady() {
27
+ return this.ready;
28
+ }
29
+
30
+ /**
31
+ * Enqueue a URL for later processing. Should only be called when the
32
+ * queue is not ready; the handler decides when to enqueue vs process.
33
+ */
34
+ enqueue(url) {
35
+ this.queue.push(url);
36
+ }
37
+ flush() {
38
+ if (!this.flushCallback) return;
39
+ const pending = [...this.queue];
40
+ this.queue = [];
41
+ for (const url of pending) {
42
+ this.flushCallback(url);
43
+ }
44
+ }
45
+ clear() {
46
+ this.queue = [];
47
+ }
48
+ pending() {
49
+ return [...this.queue];
50
+ }
51
+ }
52
+ //# sourceMappingURL=DeferredLinkQueue.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["DeferredLinkQueue","queue","ready","flushCallback","setFlushCallback","callback","setReady","becameReady","flush","isReady","enqueue","url","push","pending","clear"],"sourceRoot":"../../../src","sources":["linking/DeferredLinkQueue.ts"],"mappings":";;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,MAAMA,iBAAiB,CAAC;EACrBC,KAAK,GAAa,EAAE;EACpBC,KAAK,GAAG,KAAK;EACbC,aAAa,GAAmC,IAAI;EAErDC,gBAAgBA,CAACC,QAA+B,EAAQ;IAC7D,IAAI,CAACF,aAAa,GAAGE,QAAQ;EAC/B;EAEOC,QAAQA,CAACJ,KAAc,EAAQ;IACpC,MAAMK,WAAW,GAAG,CAAC,IAAI,CAACL,KAAK,IAAIA,KAAK;IACxC,IAAI,CAACA,KAAK,GAAGA,KAAK;IAClB,IAAIK,WAAW,EAAE;MACf,IAAI,CAACC,KAAK,CAAC,CAAC;IACd;EACF;EAEOC,OAAOA,CAAA,EAAY;IACxB,OAAO,IAAI,CAACP,KAAK;EACnB;;EAEA;AACF;AACA;AACA;EACSQ,OAAOA,CAACC,GAAW,EAAQ;IAChC,IAAI,CAACV,KAAK,CAACW,IAAI,CAACD,GAAG,CAAC;EACtB;EAEOH,KAAKA,CAAA,EAAS;IACnB,IAAI,CAAC,IAAI,CAACL,aAAa,EAAE;IACzB,MAAMU,OAAO,GAAG,CAAC,GAAG,IAAI,CAACZ,KAAK,CAAC;IAC/B,IAAI,CAACA,KAAK,GAAG,EAAE;IACf,KAAK,MAAMU,GAAG,IAAIE,OAAO,EAAE;MACzB,IAAI,CAACV,aAAa,CAACQ,GAAG,CAAC;IACzB;EACF;EAEOG,KAAKA,CAAA,EAAS;IACnB,IAAI,CAACb,KAAK,GAAG,EAAE;EACjB;EAEOY,OAAOA,CAAA,EAAa;IACzB,OAAO,CAAC,GAAG,IAAI,CAACZ,KAAK,CAAC;EACxB;AACF","ignoreList":[]}
@@ -0,0 +1,54 @@
1
+ "use strict";
2
+
3
+ import { DeferredLinkQueue } from "./DeferredLinkQueue.js";
4
+ describe('DeferredLinkQueue', () => {
5
+ let uut;
6
+ let flushed;
7
+ beforeEach(() => {
8
+ uut = new DeferredLinkQueue();
9
+ flushed = [];
10
+ uut.setFlushCallback(url => flushed.push(url));
11
+ });
12
+ it('starts not ready', () => {
13
+ expect(uut.isReady()).toBe(false);
14
+ });
15
+ it('enqueues URLs while not ready', () => {
16
+ uut.enqueue('myapp://a');
17
+ uut.enqueue('myapp://b');
18
+ expect(uut.pending()).toEqual(['myapp://a', 'myapp://b']);
19
+ expect(flushed).toEqual([]);
20
+ });
21
+ it('flushes queued URLs in order when becoming ready', () => {
22
+ uut.enqueue('myapp://a');
23
+ uut.enqueue('myapp://b');
24
+ uut.setReady(true);
25
+ expect(flushed).toEqual(['myapp://a', 'myapp://b']);
26
+ expect(uut.pending()).toEqual([]);
27
+ });
28
+ it('does not re-flush when already ready', () => {
29
+ uut.setReady(true);
30
+ uut.enqueue('myapp://a');
31
+ uut.setReady(true);
32
+ expect(flushed).toEqual([]);
33
+ expect(uut.pending()).toEqual(['myapp://a']);
34
+ });
35
+ it('flushes again after toggling not-ready → ready', () => {
36
+ uut.setReady(true);
37
+ uut.setReady(false);
38
+ uut.enqueue('myapp://x');
39
+ uut.setReady(true);
40
+ expect(flushed).toEqual(['myapp://x']);
41
+ });
42
+ it('clear() drops pending URLs', () => {
43
+ uut.enqueue('myapp://a');
44
+ uut.clear();
45
+ uut.setReady(true);
46
+ expect(flushed).toEqual([]);
47
+ });
48
+ it('flush() is a no-op when no callback is registered', () => {
49
+ const fresh = new DeferredLinkQueue();
50
+ fresh.enqueue('myapp://a');
51
+ expect(() => fresh.flush()).not.toThrow();
52
+ });
53
+ });
54
+ //# sourceMappingURL=DeferredLinkQueue.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["DeferredLinkQueue","describe","uut","flushed","beforeEach","setFlushCallback","url","push","it","expect","isReady","toBe","enqueue","pending","toEqual","setReady","clear","fresh","flush","not","toThrow"],"sourceRoot":"../../../src","sources":["linking/DeferredLinkQueue.test.ts"],"mappings":"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","ignoreList":[]}
@@ -0,0 +1,139 @@
1
+ "use strict";
2
+
3
+ import { Linking } from 'react-native';
4
+ import { URLParser } from "./URLParser.js";
5
+ import { RouteMatcher } from "./RouteMatcher.js";
6
+ import { DeferredLinkQueue } from "./DeferredLinkQueue.js";
7
+ import { ModalLayoutBuilder } from "./ModalLayoutBuilder.js";
8
+
9
+ /** A function that shows a layout as a modal. Mirrors `Commands.showModal`. */
10
+
11
+ /**
12
+ * Minimal abstraction over React Native's `Linking` module so the handler
13
+ * can be tested without touching native bindings.
14
+ */
15
+
16
+ /**
17
+ * Orchestrates deep linking:
18
+ *
19
+ * 1. Subscribes to URL events from `Linking` and the initial URL.
20
+ * 2. Parses + matches each URL against the configured `screens` tree.
21
+ * 3. Defers processing until both:
22
+ * - the first `setRoot` has resolved (so a modal can be presented), and
23
+ * - the user-supplied `isReady` predicate (if any) returns `true`.
24
+ * 4. Resolves matches in this order:
25
+ * - `onLink(match)` if provided (full escape hatch), else
26
+ * - `getModal(match)` if provided, else
27
+ * - the default `ModalLayoutBuilder` output.
28
+ * Result is presented via `showModal`.
29
+ * 5. Calls `fallback(url)` when a URL has no matching prefix or route.
30
+ */
31
+ export class LinkingHandler {
32
+ config = null;
33
+ linkingSubscription = null;
34
+ rootReady = false;
35
+ userReadyOverride = null;
36
+ constructor(showModal, linkingAPI) {
37
+ this.urlParser = new URLParser();
38
+ this.routeMatcher = new RouteMatcher();
39
+ this.deferredQueue = new DeferredLinkQueue();
40
+ this.modalLayoutBuilder = new ModalLayoutBuilder();
41
+ this.showModal = showModal;
42
+ this.linkingAPI = linkingAPI || Linking;
43
+ this.deferredQueue.setFlushCallback(url => this.processURL(url));
44
+ }
45
+ configure(config) {
46
+ this.teardown();
47
+ this.config = config;
48
+ const tree = this.routeMatcher.buildRouteTree(config.config.screens);
49
+ this.routeMatcher.setRouteTree(tree);
50
+ this.refreshReady();
51
+ this.subscribe();
52
+ }
53
+
54
+ /**
55
+ * Manually feed a URL into the pipeline as if it came from the OS.
56
+ * Useful for URLs received from push notifications or other sources.
57
+ */
58
+ handleURL(url) {
59
+ if (!this.config) return;
60
+ if (!this.isReady()) {
61
+ this.deferredQueue.enqueue(url);
62
+ return;
63
+ }
64
+ this.processURL(url);
65
+ }
66
+
67
+ /**
68
+ * Called by `NavigationRoot` after the first `setRoot` resolves. Subsequent
69
+ * calls are no-ops.
70
+ */
71
+ setRootReady() {
72
+ if (this.rootReady) return;
73
+ this.rootReady = true;
74
+ this.refreshReady();
75
+ }
76
+
77
+ /**
78
+ * Public toggle for the app-supplied readiness gate. Overrides the
79
+ * `config.isReady` predicate from the moment it's first called.
80
+ */
81
+ setLinkingReady(ready) {
82
+ this.userReadyOverride = ready;
83
+ this.refreshReady();
84
+ }
85
+
86
+ /**
87
+ * Resolve a URL to a `RouteMatch` without side effects. Returns `null`
88
+ * when the URL doesn't match any configured prefix or route.
89
+ */
90
+ resolve(url) {
91
+ if (!this.config) return null;
92
+ const parsed = this.urlParser.parse(url, this.config.prefixes);
93
+ if (!parsed) return null;
94
+ return this.routeMatcher.match(parsed.path, url, parsed.queryParams);
95
+ }
96
+ teardown() {
97
+ if (this.linkingSubscription) {
98
+ this.linkingSubscription.remove();
99
+ this.linkingSubscription = null;
100
+ }
101
+ this.deferredQueue.clear();
102
+ this.config = null;
103
+ this.userReadyOverride = null;
104
+ }
105
+ subscribe() {
106
+ this.linkingSubscription = this.linkingAPI.addEventListener('url', event => {
107
+ this.handleURL(event.url);
108
+ });
109
+ this.linkingAPI.getInitialURL().then(url => {
110
+ if (url) this.handleURL(url);
111
+ });
112
+ }
113
+ processURL(url) {
114
+ if (!this.config) return;
115
+ const match = this.resolve(url);
116
+ if (!match) {
117
+ this.config.fallback?.(url);
118
+ return;
119
+ }
120
+ if (this.config.onLink) {
121
+ this.config.onLink(match);
122
+ return;
123
+ }
124
+ const layout = this.config.getModal ? this.config.getModal(match) : this.modalLayoutBuilder.build(match);
125
+ if (layout) {
126
+ this.showModal(layout);
127
+ }
128
+ }
129
+ isReady() {
130
+ if (!this.rootReady) return false;
131
+ if (this.userReadyOverride !== null) return this.userReadyOverride;
132
+ if (this.config?.isReady) return this.config.isReady();
133
+ return true;
134
+ }
135
+ refreshReady() {
136
+ this.deferredQueue.setReady(this.isReady());
137
+ }
138
+ }
139
+ //# sourceMappingURL=LinkingHandler.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["Linking","URLParser","RouteMatcher","DeferredLinkQueue","ModalLayoutBuilder","LinkingHandler","config","linkingSubscription","rootReady","userReadyOverride","constructor","showModal","linkingAPI","urlParser","routeMatcher","deferredQueue","modalLayoutBuilder","setFlushCallback","url","processURL","configure","teardown","tree","buildRouteTree","screens","setRouteTree","refreshReady","subscribe","handleURL","isReady","enqueue","setRootReady","setLinkingReady","ready","resolve","parsed","parse","prefixes","match","path","queryParams","remove","clear","addEventListener","event","getInitialURL","then","fallback","onLink","layout","getModal","build","setReady"],"sourceRoot":"../../../src","sources":["linking/LinkingHandler.ts"],"mappings":"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","ignoreList":[]}