@multiplatform.one/core 6.7.0 → 7.0.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.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@multiplatform.one/core",
3
- "version": "6.7.0",
3
+ "version": "7.0.0",
4
4
  "description": "Core framework shell, provider composition, and layout factories for multiplatform.one",
5
5
  "keywords": [
6
6
  "app",
@@ -46,11 +46,11 @@
46
46
  "@tanstack/react-form-devtools": "0.2.22",
47
47
  "@tanstack/react-pacer-devtools": "^0.7.0",
48
48
  "react-cookie": "^8.1.2",
49
- "@multiplatform.one/store": "6.7.0",
50
- "@multiplatform.one/theme": "6.7.0",
51
- "@multiplatform.one/logger": "6.7.0",
52
- "@multiplatform.one/platform": "6.7.0",
53
- "@multiplatform.one/i18n": "6.7.0"
49
+ "@multiplatform.one/i18n": "7.0.0",
50
+ "@multiplatform.one/logger": "7.0.0",
51
+ "@multiplatform.one/platform": "7.0.0",
52
+ "@multiplatform.one/store": "7.0.0",
53
+ "@multiplatform.one/theme": "7.0.0"
54
54
  },
55
55
  "devDependencies": {
56
56
  "@sentry/react": "^10.51.0",
@@ -64,10 +64,10 @@
64
64
  "react-native": "0.83.2",
65
65
  "react-native-gesture-handler": "~2.31.1",
66
66
  "react-native-safe-area-context": "~5.7.0",
67
- "tamagui": "2.0.0-rc.41",
67
+ "tamagui": "2.7.6",
68
68
  "typescript": "~5.9.3",
69
- "@multiplatform.one/frappe": "6.7.0",
70
- "@multiplatform.one/web3": "6.7.0"
69
+ "@multiplatform.one/frappe": "7.0.0",
70
+ "@multiplatform.one/web3": "7.0.0"
71
71
  },
72
72
  "peerDependencies": {
73
73
  "@sentry/react": "^9.0.0",
@@ -83,10 +83,10 @@
83
83
  "react-native-gesture-handler": ">=2.0.0",
84
84
  "react-native-safe-area-context": ">=4.0.0",
85
85
  "tamagui": "^2.0.0-rc",
86
- "@multiplatform.one/frappe": "^6.7.0",
87
- "@multiplatform.one/web3": "^6.7.0",
88
- "@multiplatform.one/frappe-ui": "^6.7.0",
89
- "@multiplatform.one/keycloak": "^6.7.0"
86
+ "@multiplatform.one/frappe": "^7.0.0",
87
+ "@multiplatform.one/frappe-ui": "^7.0.0",
88
+ "@multiplatform.one/keycloak": "^7.0.0",
89
+ "@multiplatform.one/web3": "^7.0.0"
90
90
  },
91
91
  "peerDependenciesMeta": {
92
92
  "@multiplatform.one/web3": {
@@ -116,6 +116,7 @@
116
116
  },
117
117
  "scripts": {
118
118
  "typecheck": "tsgo --noEmit",
119
- "build": "rm -rf types 2>/dev/null && tsc -p tsconfig.build.json"
119
+ "build": "rm -rf types 2>/dev/null && tsc -p tsconfig.build.json",
120
+ "test": "vitest run"
120
121
  }
121
122
  }
@@ -11,6 +11,7 @@ import { config } from "@multiplatform.one/platform";
11
11
  import { createI18nConfig } from "@multiplatform.one/i18n";
12
12
  import { logger } from "@multiplatform.one/logger";
13
13
  import type { CreateRootLayoutConfig } from "./rootLayoutShared";
14
+ import { useNativeDeepLinks } from "./useNativeDeepLinks";
14
15
 
15
16
  export type {
16
17
  CreateRootLayoutConfig,
@@ -48,6 +49,15 @@ export function createRootLayout(cfg: CreateRootLayoutConfig): ComponentType {
48
49
 
49
50
  const fontsMap = cfg.fonts ?? {};
50
51
 
52
+ // Rendered inside the mounted tree (after the fonts gate) so the router
53
+ // context is live when the bridge navigates — mirrors the position the
54
+ // consumer-app bridges proved out.
55
+ function DeepLinkBridge() {
56
+ useNativeDeepLinks();
57
+ return null;
58
+ }
59
+ DeepLinkBridge.displayName = "DeepLinkBridge";
60
+
51
61
  function Layout() {
52
62
  const [fontsLoaded, fontError] = useFonts(fontsMap);
53
63
  // Gate on fonts being ready, but never block forever: if font loading
@@ -59,6 +69,7 @@ export function createRootLayout(cfg: CreateRootLayoutConfig): ComponentType {
59
69
  <SafeAreaProvider>
60
70
  <SchemeProvider>
61
71
  <NativeRootProvider>
72
+ {cfg.deepLinks !== false && <DeepLinkBridge />}
62
73
  <RootLayout>
63
74
  <Slot />
64
75
  </RootLayout>
@@ -16,7 +16,8 @@ export type {
16
16
  } from "./rootLayoutShared";
17
17
 
18
18
  /**
19
- * Creates a root layout component (universal fallback for Tauri / desktop).
19
+ * Creates a root layout component (universal fallback for non-web hosts
20
+ * Tauri, GNOME, extensions).
20
21
  *
21
22
  * Handles i18n initialization, color-scheme detection via `matchMedia`,
22
23
  * and wraps content in `LoadProgressBar` → `AppProvider` → `RootLayout` → `<Slot />`.
@@ -0,0 +1,43 @@
1
+ /**
2
+ * @vitest-environment node
3
+ */
4
+
5
+ import { describe, expect, it } from "vitest";
6
+ import { deepLinkUrlToPath } from "./deepLinkPath";
7
+
8
+ describe("deepLinkUrlToPath", () => {
9
+ it("maps a scheme host to the first path segment", () => {
10
+ expect(deepLinkUrlToPath("myapp://pos")).toBe("/pos");
11
+ });
12
+
13
+ it("keeps nested paths and query strings", () => {
14
+ expect(deepLinkUrlToPath("myapp://order/123?tab=items")).toBe("/order/123?tab=items");
15
+ });
16
+
17
+ it("strips trailing slashes", () => {
18
+ expect(deepLinkUrlToPath("myapp://kds/")).toBe("/kds");
19
+ expect(deepLinkUrlToPath("myapp://kds///")).toBe("/kds");
20
+ });
21
+
22
+ it("supports dotted/plus/hyphen scheme names", () => {
23
+ expect(deepLinkUrlToPath("com.example.app://board")).toBe("/board");
24
+ expect(deepLinkUrlToPath("my-app+beta://menu")).toBe("/menu");
25
+ });
26
+
27
+ it("handles the scheme://host/path shape from https-style links", () => {
28
+ expect(deepLinkUrlToPath("https://example.com/admin")).toBe("/example.com/admin");
29
+ });
30
+
31
+ it("returns null for root-only or empty URLs (no-op, keep current route)", () => {
32
+ expect(deepLinkUrlToPath("myapp://")).toBeNull();
33
+ expect(deepLinkUrlToPath("myapp:///")).toBeNull();
34
+ expect(deepLinkUrlToPath("")).toBeNull();
35
+ expect(deepLinkUrlToPath(null)).toBeNull();
36
+ expect(deepLinkUrlToPath(undefined)).toBeNull();
37
+ });
38
+
39
+ it("returns null for non-URL strings", () => {
40
+ expect(deepLinkUrlToPath("not a url")).toBeNull();
41
+ expect(deepLinkUrlToPath("/already/a/path")).toBeNull();
42
+ });
43
+ });
@@ -0,0 +1,20 @@
1
+ /**
2
+ * Pure deep-link URL → router path mapping (platform-free, unit-tested).
3
+ *
4
+ * One's built-in NavigationContainer linking never applies scheme URLs on
5
+ * native — the router is always initialized with location "/" (one's
6
+ * Root.native pins initialLocation, ignoring the launch URL) and warm url
7
+ * events don't dispatch — so OS URLs are mapped to router navigation by the
8
+ * native root layout instead (see useNativeDeepLinks).
9
+ *
10
+ * `scheme://host/path?query` → `/host/path?query` (the scheme's "host" is
11
+ * the first path segment: `myapp://pos` → `/pos`). Returns null for empty /
12
+ * root-only URLs so callers can no-op instead of clobbering the current
13
+ * route.
14
+ */
15
+ export function deepLinkUrlToPath(url: string | null | undefined): string | null {
16
+ const rest = url?.match(/^[\w.+-]+:\/\/+(.*)$/)?.[1];
17
+ if (!rest) return null;
18
+ const path = `/${rest.replace(/\/+$/, "")}`;
19
+ return path === "/" ? null : path;
20
+ }
package/src/app/index.ts CHANGED
@@ -19,6 +19,7 @@
19
19
  * `.ios.tsx` > `.native.tsx` > `.tsx` (on iOS)
20
20
  * `.web.tsx` > `.tsx` (on web)
21
21
  * `.tauri.tsx` > `.tsx` (on Tauri)
22
+ * `.native.tsx` > `.tsx` (on GNOME — see apps/one/vite.config.gnome.ts)
22
23
  *
23
24
  * When creating platform-specific variants, always keep a universal
24
25
  * fallback file (e.g. `index.ts`) that exports the default API.
@@ -68,4 +68,13 @@ export interface CreateRootLayoutConfig {
68
68
  * Ignored on web (fonts are loaded via CSS side-effect imports).
69
69
  */
70
70
  fonts?: Record<string, number>;
71
+ /**
72
+ * Native deep-link bridge (default true; ignored on web). One's built-in
73
+ * NavigationContainer linking never applies scheme URLs on native (the
74
+ * Root pins initialLocation to "/" and warm url events don't dispatch), so
75
+ * the root layout maps them itself: cold-start launch URL →
76
+ * `router.replace`, warm url events → `router.push`
77
+ * (`myapp://pos` → `/pos`). Set false for apps that own their own linking.
78
+ */
79
+ deepLinks?: boolean;
71
80
  }
@@ -0,0 +1,36 @@
1
+ import { useEffect } from "react";
2
+ import { Linking } from "react-native";
3
+ import type { Href } from "one";
4
+ import { useRouter } from "one";
5
+ import { deepLinkUrlToPath } from "./deepLinkPath";
6
+
7
+ /**
8
+ * Deep-link bridge (native): One's built-in NavigationContainer linking
9
+ * never applies scheme URLs — the router is always initialized with
10
+ * location "/" (one's Root.native pins initialLocation, so the launch URL
11
+ * is ignored) and warm url events never dispatch. Map OS URLs to router
12
+ * navigation instead: the cold-start launch URL replaces (so back doesn't
13
+ * land on the ignored "/") and warm url events push.
14
+ *
15
+ * Wired by createRootLayout's native Layout; opt out with
16
+ * `createRootLayout({ deepLinks: false, ... })`.
17
+ */
18
+ export function useNativeDeepLinks(): void {
19
+ const router = useRouter();
20
+ useEffect(() => {
21
+ let cancelled = false;
22
+ Linking.getInitialURL().then((url) => {
23
+ if (cancelled) return;
24
+ const path = deepLinkUrlToPath(url);
25
+ if (path) router.replace(path as Href);
26
+ });
27
+ const subscription = Linking.addEventListener("url", ({ url }) => {
28
+ const path = deepLinkUrlToPath(url);
29
+ if (path) router.push(path as Href);
30
+ });
31
+ return () => {
32
+ cancelled = true;
33
+ subscription.remove();
34
+ };
35
+ }, [router]);
36
+ }
@@ -0,0 +1,8 @@
1
+ /**
2
+ * Web / type-resolution twin of useNativeDeepLinks.native.ts — deep links on
3
+ * web are just URLs, the browser and One's web router already apply them.
4
+ * Only the `.native` sibling does anything.
5
+ */
6
+ export function useNativeDeepLinks(): void {
7
+ // no-op on web
8
+ }
@@ -2,7 +2,8 @@ import { type ComponentType } from "react";
2
2
  import type { CreateRootLayoutConfig } from "./rootLayoutShared";
3
3
  export type { CreateRootLayoutConfig, HeadConfig, RootLayoutProps, RootLoaderData, SentryConfig, } from "./rootLayoutShared";
4
4
  /**
5
- * Creates a root layout component (universal fallback for Tauri / desktop).
5
+ * Creates a root layout component (universal fallback for non-web hosts
6
+ * Tauri, GNOME, extensions).
6
7
  *
7
8
  * Handles i18n initialization, color-scheme detection via `matchMedia`,
8
9
  * and wraps content in `LoadProgressBar` → `AppProvider` → `RootLayout` → `<Slot />`.
@@ -1 +1 @@
1
- {"version":3,"file":"CreateRootLayout.d.ts","sourceRoot":"","sources":["../../src/app/CreateRootLayout.tsx"],"names":[],"mappings":"AAEA,OAAO,EAAuB,KAAK,aAAa,EAAkB,MAAM,OAAO,CAAC;AAKhF,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,oBAAoB,CAAC;AAEjE,YAAY,EACV,sBAAsB,EACtB,UAAU,EACV,eAAe,EACf,cAAc,EACd,YAAY,GACb,MAAM,oBAAoB,CAAC;AAE5B;;;;;;;GAOG;AACH,wBAAgB,gBAAgB,CAAC,GAAG,EAAE,sBAAsB,GAAG,aAAa,CAwC3E"}
1
+ {"version":3,"file":"CreateRootLayout.d.ts","sourceRoot":"","sources":["../../src/app/CreateRootLayout.tsx"],"names":[],"mappings":"AAEA,OAAO,EAAuB,KAAK,aAAa,EAAkB,MAAM,OAAO,CAAC;AAKhF,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,oBAAoB,CAAC;AAEjE,YAAY,EACV,sBAAsB,EACtB,UAAU,EACV,eAAe,EACf,cAAc,EACd,YAAY,GACb,MAAM,oBAAoB,CAAC;AAE5B;;;;;;;;GAQG;AACH,wBAAgB,gBAAgB,CAAC,GAAG,EAAE,sBAAsB,GAAG,aAAa,CAwC3E"}
@@ -1 +1 @@
1
- {"version":3,"file":"CreateRootLayout.native.d.ts","sourceRoot":"","sources":["../../src/app/CreateRootLayout.native.tsx"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,aAAa,EAAa,MAAM,OAAO,CAAC;AAQtD,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,oBAAoB,CAAC;AAEjE,YAAY,EACV,sBAAsB,EACtB,UAAU,EACV,eAAe,EACf,cAAc,EACd,YAAY,GACb,MAAM,oBAAoB,CAAC;AAM5B;;;;;;;;GAQG;AACH,wBAAgB,gBAAgB,CAAC,GAAG,EAAE,sBAAsB,GAAG,aAAa,CAsC3E"}
1
+ {"version":3,"file":"CreateRootLayout.native.d.ts","sourceRoot":"","sources":["../../src/app/CreateRootLayout.native.tsx"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,aAAa,EAAa,MAAM,OAAO,CAAC;AAQtD,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,oBAAoB,CAAC;AAGjE,YAAY,EACV,sBAAsB,EACtB,UAAU,EACV,eAAe,EACf,cAAc,EACd,YAAY,GACb,MAAM,oBAAoB,CAAC;AAM5B;;;;;;;;GAQG;AACH,wBAAgB,gBAAgB,CAAC,GAAG,EAAE,sBAAsB,GAAG,aAAa,CAgD3E"}
@@ -0,0 +1,16 @@
1
+ /**
2
+ * Pure deep-link URL → router path mapping (platform-free, unit-tested).
3
+ *
4
+ * One's built-in NavigationContainer linking never applies scheme URLs on
5
+ * native — the router is always initialized with location "/" (one's
6
+ * Root.native pins initialLocation, ignoring the launch URL) and warm url
7
+ * events don't dispatch — so OS URLs are mapped to router navigation by the
8
+ * native root layout instead (see useNativeDeepLinks).
9
+ *
10
+ * `scheme://host/path?query` → `/host/path?query` (the scheme's "host" is
11
+ * the first path segment: `myapp://pos` → `/pos`). Returns null for empty /
12
+ * root-only URLs so callers can no-op instead of clobbering the current
13
+ * route.
14
+ */
15
+ export declare function deepLinkUrlToPath(url: string | null | undefined): string | null;
16
+ //# sourceMappingURL=deepLinkPath.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"deepLinkPath.d.ts","sourceRoot":"","sources":["../../src/app/deepLinkPath.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AACH,wBAAgB,iBAAiB,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,GAAG,MAAM,GAAG,IAAI,CAK/E"}
@@ -19,6 +19,7 @@
19
19
  * `.ios.tsx` > `.native.tsx` > `.tsx` (on iOS)
20
20
  * `.web.tsx` > `.tsx` (on web)
21
21
  * `.tauri.tsx` > `.tsx` (on Tauri)
22
+ * `.native.tsx` > `.tsx` (on GNOME — see apps/one/vite.config.gnome.ts)
22
23
  *
23
24
  * When creating platform-specific variants, always keep a universal
24
25
  * fallback file (e.g. `index.ts`) that exports the default API.
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/app/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AACH,cAAc,aAAa,CAAC;AAC5B,cAAc,oBAAoB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/app/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AACH,cAAc,aAAa,CAAC;AAC5B,cAAc,oBAAoB,CAAC"}
@@ -63,5 +63,14 @@ export interface CreateRootLayoutConfig {
63
63
  * Ignored on web (fonts are loaded via CSS side-effect imports).
64
64
  */
65
65
  fonts?: Record<string, number>;
66
+ /**
67
+ * Native deep-link bridge (default true; ignored on web). One's built-in
68
+ * NavigationContainer linking never applies scheme URLs on native (the
69
+ * Root pins initialLocation to "/" and warm url events don't dispatch), so
70
+ * the root layout maps them itself: cold-start launch URL →
71
+ * `router.replace`, warm url events → `router.push`
72
+ * (`myapp://pos` → `/pos`). Set false for apps that own their own linking.
73
+ */
74
+ deepLinks?: boolean;
66
75
  }
67
76
  //# sourceMappingURL=rootLayoutShared.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"rootLayoutShared.d.ts","sourceRoot":"","sources":["../../src/app/rootLayoutShared.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,iBAAiB,EAAE,MAAM,OAAO,CAAC;AAC9D,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAC;AACjE,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAEpD,MAAM,WAAW,UAAU;IACzB,6CAA6C;IAC7C,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB;;;;;;;;;OASG;IACH,UAAU,CAAC,EAAE,OAAO,CAAC;CACtB;AAED,MAAM,WAAW,YAAY;IAC3B,0EAA0E;IAC1E,GAAG,CAAC,EAAE,MAAM,CAAC;CACd;AAED,qEAAqE;AACrE,MAAM,WAAW,cAAc;IAC7B,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,yEAAyE;IACzE,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,yEAAyE;IACzE,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;CACxB;AAED;;;;;;GAMG;AACH,MAAM,WAAW,eAAgB,SAAQ,iBAAiB;IACxD,6DAA6D;IAC7D,UAAU,CAAC,EAAE,OAAO,CAAC;CACtB;AAED;;;;;GAKG;AACH,MAAM,WAAW,sBAAsB;IACrC,6DAA6D;IAC7D,WAAW,EAAE,aAAa,CAAC,gBAAgB,CAAC,CAAC;IAC7C,oFAAoF;IACpF,UAAU,EAAE,aAAa,CAAC,eAAe,CAAC,CAAC;IAC3C,8FAA8F;IAC9F,IAAI,EAAE,iBAAiB,CAAC;IACxB,qDAAqD;IACrD,IAAI,CAAC,EAAE,UAAU,CAAC;IAClB,oFAAoF;IACpF,MAAM,CAAC,EAAE,YAAY,CAAC;IACtB;;;;OAIG;IACH,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CAChC"}
1
+ {"version":3,"file":"rootLayoutShared.d.ts","sourceRoot":"","sources":["../../src/app/rootLayoutShared.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,iBAAiB,EAAE,MAAM,OAAO,CAAC;AAC9D,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAC;AACjE,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAEpD,MAAM,WAAW,UAAU;IACzB,6CAA6C;IAC7C,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB;;;;;;;;;OASG;IACH,UAAU,CAAC,EAAE,OAAO,CAAC;CACtB;AAED,MAAM,WAAW,YAAY;IAC3B,0EAA0E;IAC1E,GAAG,CAAC,EAAE,MAAM,CAAC;CACd;AAED,qEAAqE;AACrE,MAAM,WAAW,cAAc;IAC7B,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,yEAAyE;IACzE,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,yEAAyE;IACzE,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;CACxB;AAED;;;;;;GAMG;AACH,MAAM,WAAW,eAAgB,SAAQ,iBAAiB;IACxD,6DAA6D;IAC7D,UAAU,CAAC,EAAE,OAAO,CAAC;CACtB;AAED;;;;;GAKG;AACH,MAAM,WAAW,sBAAsB;IACrC,6DAA6D;IAC7D,WAAW,EAAE,aAAa,CAAC,gBAAgB,CAAC,CAAC;IAC7C,oFAAoF;IACpF,UAAU,EAAE,aAAa,CAAC,eAAe,CAAC,CAAC;IAC3C,8FAA8F;IAC9F,IAAI,EAAE,iBAAiB,CAAC;IACxB,qDAAqD;IACrD,IAAI,CAAC,EAAE,UAAU,CAAC;IAClB,oFAAoF;IACpF,MAAM,CAAC,EAAE,YAAY,CAAC;IACtB;;;;OAIG;IACH,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC/B;;;;;;;OAOG;IACH,SAAS,CAAC,EAAE,OAAO,CAAC;CACrB"}
@@ -0,0 +1,7 @@
1
+ /**
2
+ * Web / type-resolution twin of useNativeDeepLinks.native.ts — deep links on
3
+ * web are just URLs, the browser and One's web router already apply them.
4
+ * Only the `.native` sibling does anything.
5
+ */
6
+ export declare function useNativeDeepLinks(): void;
7
+ //# sourceMappingURL=useNativeDeepLinks.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useNativeDeepLinks.d.ts","sourceRoot":"","sources":["../../src/app/useNativeDeepLinks.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,wBAAgB,kBAAkB,IAAI,IAAI,CAEzC"}
@@ -0,0 +1,13 @@
1
+ /**
2
+ * Deep-link bridge (native): One's built-in NavigationContainer linking
3
+ * never applies scheme URLs — the router is always initialized with
4
+ * location "/" (one's Root.native pins initialLocation, so the launch URL
5
+ * is ignored) and warm url events never dispatch. Map OS URLs to router
6
+ * navigation instead: the cold-start launch URL replaces (so back doesn't
7
+ * land on the ignored "/") and warm url events push.
8
+ *
9
+ * Wired by createRootLayout's native Layout; opt out with
10
+ * `createRootLayout({ deepLinks: false, ... })`.
11
+ */
12
+ export declare function useNativeDeepLinks(): void;
13
+ //# sourceMappingURL=useNativeDeepLinks.native.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useNativeDeepLinks.native.d.ts","sourceRoot":"","sources":["../../src/app/useNativeDeepLinks.native.ts"],"names":[],"mappings":"AAMA;;;;;;;;;;GAUG;AACH,wBAAgB,kBAAkB,IAAI,IAAI,CAkBzC"}