@ankhorage/navigator 0.1.1 → 1.1.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/CHANGELOG.md +12 -0
- package/README.md +3 -2
- package/dist/definitions/NavigatorPlan.d.ts +81 -7
- package/dist/definitions/NavigatorPlan.d.ts.map +1 -1
- package/dist/expo-router/createNavigatorPlan.d.ts +2 -1
- package/dist/expo-router/createNavigatorPlan.d.ts.map +1 -1
- package/dist/expo-router/createNavigatorPlan.js +176 -41
- package/dist/expo-router/createNavigatorPlan.js.map +1 -1
- package/dist/expo-router/resolveNavigatorConfig.d.ts +6 -0
- package/dist/expo-router/resolveNavigatorConfig.d.ts.map +1 -0
- package/dist/expo-router/resolveNavigatorConfig.js +48 -0
- package/dist/expo-router/resolveNavigatorConfig.js.map +1 -0
- package/dist/expo-router/resolveTabsNavigatorPlan.d.ts.map +1 -1
- package/dist/expo-router/resolveTabsNavigatorPlan.js +19 -6
- package/dist/expo-router/resolveTabsNavigatorPlan.js.map +1 -1
- package/dist/generation/generateNavigatorFiles.d.ts +4 -0
- package/dist/generation/generateNavigatorFiles.d.ts.map +1 -0
- package/dist/generation/generateNavigatorFiles.js +169 -0
- package/dist/generation/generateNavigatorFiles.js.map +1 -0
- package/dist/generation/generateTabsLayoutFile.d.ts +4 -0
- package/dist/generation/generateTabsLayoutFile.d.ts.map +1 -0
- package/dist/generation/generateTabsLayoutFile.js +137 -0
- package/dist/generation/generateTabsLayoutFile.js.map +1 -0
- package/dist/generation/generationSafety.d.ts +6 -0
- package/dist/generation/generationSafety.d.ts.map +1 -0
- package/dist/generation/generationSafety.js +18 -0
- package/dist/generation/generationSafety.js.map +1 -0
- package/dist/index.d.ts +3 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +2 -0
- package/dist/index.js.map +1 -1
- package/dist/metadata/index.d.ts +56 -3
- package/dist/metadata/index.d.ts.map +1 -1
- package/dist/metadata/index.js +24 -1
- package/dist/metadata/index.js.map +1 -1
- package/dist/tabs/CustomTabsLayout.d.ts +39 -0
- package/dist/tabs/CustomTabsLayout.d.ts.map +1 -0
- package/dist/tabs/CustomTabsLayout.js +122 -0
- package/dist/tabs/CustomTabsLayout.js.map +1 -0
- package/dist/tabs/index.d.ts +3 -0
- package/dist/tabs/index.d.ts.map +1 -0
- package/dist/tabs/index.js +2 -0
- package/dist/tabs/index.js.map +1 -0
- package/dist/tabs/nativeIconFamilies.d.ts +16 -0
- package/dist/tabs/nativeIconFamilies.d.ts.map +1 -0
- package/dist/tabs/nativeIconFamilies.js +24 -0
- package/dist/tabs/nativeIconFamilies.js.map +1 -0
- package/dist/topology/resolveNavigatorPreset.d.ts.map +1 -1
- package/dist/topology/resolveNavigatorPreset.js +6 -0
- package/dist/topology/resolveNavigatorPreset.js.map +1 -1
- package/dist/validation/validateNavigatorManifest.d.ts +5 -0
- package/dist/validation/validateNavigatorManifest.d.ts.map +1 -0
- package/dist/validation/validateNavigatorManifest.js +167 -0
- package/dist/validation/validateNavigatorManifest.js.map +1 -0
- package/dist/validation/validatePresetTopology.d.ts +5 -0
- package/dist/validation/validatePresetTopology.d.ts.map +1 -0
- package/dist/validation/validatePresetTopology.js +47 -0
- package/dist/validation/validatePresetTopology.js.map +1 -0
- package/dist/validation/validateTabsNavigator.d.ts +5 -0
- package/dist/validation/validateTabsNavigator.d.ts.map +1 -0
- package/dist/validation/validateTabsNavigator.js +140 -0
- package/dist/validation/validateTabsNavigator.js.map +1 -0
- package/package.json +37 -4
- package/dist/index.test.d.ts +0 -2
- package/dist/index.test.d.ts.map +0 -1
- package/dist/index.test.js +0 -107
- package/dist/index.test.js.map +0 -1
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,17 @@
|
|
|
1
1
|
# @ankhorage/navigator
|
|
2
2
|
|
|
3
|
+
## 1.1.0
|
|
4
|
+
|
|
5
|
+
### Minor Changes
|
|
6
|
+
|
|
7
|
+
- 11f9f2e: Add native, JavaScript, and responsive Surface-owned headless Tabs generation.
|
|
8
|
+
|
|
9
|
+
## 1.0.0
|
|
10
|
+
|
|
11
|
+
### Major Changes
|
|
12
|
+
|
|
13
|
+
- d4026a0: Add validated, deterministic Expo Router planning and file generation for Slot, native and JavaScript Stack, and Drawer navigators.
|
|
14
|
+
|
|
3
15
|
## 0.1.1
|
|
4
16
|
|
|
5
17
|
### Patch Changes
|
package/README.md
CHANGED
|
@@ -3,9 +3,9 @@
|
|
|
3
3
|
|
|
4
4
|
# NAVIGATOR
|
|
5
5
|
|
|
6
|
-
         
|
|
7
7
|
|
|
8
|
-
Standalone
|
|
8
|
+
Standalone Navigator capability with topology configured independently from platform implementation and visual presentation. Adaptive tabs use Native Tabs on Android/iOS and one stable Expo Router headless topology with Surface-owned responsive presentation on Web.
|
|
9
9
|
|
|
10
10
|
## Generated documentation
|
|
11
11
|
|
|
@@ -15,5 +15,6 @@ Standalone manifest-driven navigator capability for Expo Router across React Nat
|
|
|
15
15
|
- [Architecture overview](././paradox/diagrams/architecture-overview.mmd)
|
|
16
16
|
- [Module relationships](././paradox/diagrams/module-relationships.mmd)
|
|
17
17
|
- [Export graph](././paradox/diagrams/export-graph.mmd)
|
|
18
|
+
- [CustomTabsLayout sequence](././paradox/diagrams/sequences/custom-tabs-layout.mmd)
|
|
18
19
|
- [resolveCustomTabsPresentation sequence](././paradox/diagrams/sequences/resolve-custom-tabs-presentation.mmd)
|
|
19
20
|
- [resolveTabsNavigatorPlan sequence](././paradox/diagrams/sequences/resolve-tabs-navigator-plan.mmd)
|
|
@@ -1,37 +1,111 @@
|
|
|
1
|
-
import type { NavigatorType } from '@ankhorage/contracts/navigator';
|
|
1
|
+
import type { CustomNavigatorNode, DrawerNavigatorOptions, NavigatorType, RouteDefinition, StackImplementation, StackScreenOptions } from '@ankhorage/contracts/navigator';
|
|
2
2
|
export type NavigatorRuntimePlatform = 'android' | 'ios' | 'web';
|
|
3
3
|
export type NavigatorResponsiveSize = 'compact' | 'medium' | 'expanded';
|
|
4
|
-
export type NavigatorApiStability = 'stable' | '
|
|
5
|
-
export type
|
|
4
|
+
export type NavigatorApiStability = 'stable' | 'alpha';
|
|
5
|
+
export type NavigatorSupportStatus = 'supported' | 'unavailable';
|
|
6
|
+
export type ExpoRouterNavigatorModule = 'expo-router' | 'expo-router/drawer' | 'expo-router/js-stack' | 'expo-router/js-tabs' | 'expo-router/js-top-tabs' | 'expo-router/ui' | 'expo-router/unstable-native-tabs';
|
|
7
|
+
export type NavigatorAdapterId = 'slot' | 'stack.native' | 'stack.javascript' | 'stack.experimental' | 'drawer' | 'tabs.native' | 'tabs.javascript' | 'tabs.custom' | 'split-view' | 'custom';
|
|
8
|
+
export interface NavigatorDiagnostic {
|
|
9
|
+
code: string;
|
|
10
|
+
severity: 'error' | 'warning';
|
|
11
|
+
path: string;
|
|
12
|
+
message: string;
|
|
13
|
+
}
|
|
14
|
+
export interface NavigatorValidationContext {
|
|
15
|
+
platform: NavigatorRuntimePlatform;
|
|
16
|
+
expoRouterVersion: string;
|
|
17
|
+
}
|
|
18
|
+
export interface NavigatorAdapterPlan {
|
|
19
|
+
id: NavigatorAdapterId;
|
|
20
|
+
module?: ExpoRouterNavigatorModule;
|
|
21
|
+
exportName?: string;
|
|
22
|
+
support: NavigatorSupportStatus;
|
|
23
|
+
stability: NavigatorApiStability;
|
|
24
|
+
limitations: readonly string[];
|
|
25
|
+
}
|
|
6
26
|
export type ResolvedTabsImplementation = 'custom' | 'javascript' | 'native';
|
|
7
27
|
export type ResolvedTabsPresentation = 'bottom' | 'top' | 'rail' | 'sidebar' | 'custom';
|
|
28
|
+
/**
|
|
29
|
+
* Disposable adapter plan for a `tabs` topology.
|
|
30
|
+
*
|
|
31
|
+
* The implementation selects the Router runtime. Presentation only selects its visual chrome and
|
|
32
|
+
* never creates another route topology.
|
|
33
|
+
*/
|
|
8
34
|
export interface TabsNavigatorPlan {
|
|
9
35
|
implementation: ResolvedTabsImplementation;
|
|
10
36
|
module: ExpoRouterNavigatorModule;
|
|
11
37
|
exportName: string;
|
|
12
38
|
stability: NavigatorApiStability;
|
|
13
39
|
presentation?: ResolvedTabsPresentation;
|
|
40
|
+
presentations?: Readonly<Record<NavigatorResponsiveSize, ResolvedTabsPresentation>>;
|
|
14
41
|
customPresentationId?: string;
|
|
42
|
+
minimizeBehavior?: 'automatic' | 'never' | 'onScrollDown' | 'onScrollUp';
|
|
43
|
+
bottomAccessoryScreenId?: string;
|
|
15
44
|
}
|
|
16
45
|
export interface NavigatorRoutePlan {
|
|
17
46
|
name: string;
|
|
18
47
|
path?: string;
|
|
48
|
+
label?: string;
|
|
49
|
+
icon?: RouteDefinition['icon'];
|
|
50
|
+
showInPrimaryNavigation?: boolean;
|
|
51
|
+
guards: readonly string[];
|
|
19
52
|
screenId?: string;
|
|
53
|
+
stackOptions?: StackScreenOptions;
|
|
20
54
|
navigator?: NavigatorNodePlan;
|
|
21
55
|
}
|
|
22
56
|
export interface NavigatorNodePlan {
|
|
23
57
|
type: NavigatorType;
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
58
|
+
pointer: string;
|
|
59
|
+
adapter: NavigatorAdapterPlan;
|
|
60
|
+
initialRouteName?: string;
|
|
61
|
+
routes: readonly NavigatorRoutePlan[];
|
|
62
|
+
stack?: {
|
|
63
|
+
implementation: StackImplementation;
|
|
64
|
+
options?: StackScreenOptions;
|
|
65
|
+
};
|
|
66
|
+
drawer?: {
|
|
67
|
+
options?: DrawerNavigatorOptions;
|
|
68
|
+
};
|
|
27
69
|
tabs?: TabsNavigatorPlan;
|
|
70
|
+
splitView?: {
|
|
71
|
+
columns: {
|
|
72
|
+
primary: string;
|
|
73
|
+
supplementary?: string;
|
|
74
|
+
};
|
|
75
|
+
inspector?: string;
|
|
76
|
+
topColumnForCollapsing?: 'primary' | 'secondary' | 'supplementary';
|
|
77
|
+
};
|
|
78
|
+
custom?: {
|
|
79
|
+
navigatorId: string;
|
|
80
|
+
config?: CustomNavigatorNode['config'];
|
|
81
|
+
};
|
|
28
82
|
}
|
|
29
83
|
export interface NavigatorPlan {
|
|
30
|
-
|
|
84
|
+
context: NavigatorValidationContext;
|
|
31
85
|
root: NavigatorNodePlan;
|
|
86
|
+
diagnostics: readonly NavigatorDiagnostic[];
|
|
87
|
+
supported: boolean;
|
|
32
88
|
flows: {
|
|
33
89
|
onboarding: boolean;
|
|
34
90
|
authentication: boolean;
|
|
35
91
|
};
|
|
36
92
|
}
|
|
93
|
+
export interface NavigatorScreenModule {
|
|
94
|
+
module: string;
|
|
95
|
+
exportName: string;
|
|
96
|
+
}
|
|
97
|
+
export interface NavigatorGenerationBindings {
|
|
98
|
+
screens: Readonly<Record<string, NavigatorScreenModule>>;
|
|
99
|
+
guards: Readonly<Record<string, NavigatorScreenModule>>;
|
|
100
|
+
iconSourceResolver?: NavigatorScreenModule;
|
|
101
|
+
flows?: {
|
|
102
|
+
onboardingRoute?: string;
|
|
103
|
+
authenticationRoute?: string;
|
|
104
|
+
};
|
|
105
|
+
tabPresentations?: Readonly<Record<string, NavigatorScreenModule>>;
|
|
106
|
+
}
|
|
107
|
+
export interface NavigatorGeneratedFile {
|
|
108
|
+
path: string;
|
|
109
|
+
contents: string;
|
|
110
|
+
}
|
|
37
111
|
//# sourceMappingURL=NavigatorPlan.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"NavigatorPlan.d.ts","sourceRoot":"","sources":["../../src/definitions/NavigatorPlan.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,
|
|
1
|
+
{"version":3,"file":"NavigatorPlan.d.ts","sourceRoot":"","sources":["../../src/definitions/NavigatorPlan.ts"],"names":[],"mappings":"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"}
|
|
@@ -2,8 +2,9 @@ import type { AppNavigatorManifest } from '@ankhorage/contracts/navigator';
|
|
|
2
2
|
import type { NavigatorPlan, NavigatorResponsiveSize, NavigatorRuntimePlatform } from '../definitions/NavigatorPlan';
|
|
3
3
|
export interface CreateNavigatorPlanOptions {
|
|
4
4
|
platform: NavigatorRuntimePlatform;
|
|
5
|
+
expoRouterVersion: string;
|
|
5
6
|
responsiveSize?: NavigatorResponsiveSize;
|
|
6
7
|
}
|
|
7
|
-
/*** Create
|
|
8
|
+
/*** Create a disposable, provider-aware plan from only the navigator desired-state slice. */
|
|
8
9
|
export declare function createNavigatorPlan(manifest: AppNavigatorManifest, options: CreateNavigatorPlanOptions): NavigatorPlan;
|
|
9
10
|
//# sourceMappingURL=createNavigatorPlan.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"createNavigatorPlan.d.ts","sourceRoot":"","sources":["../../src/expo-router/createNavigatorPlan.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,oBAAoB,
|
|
1
|
+
{"version":3,"file":"createNavigatorPlan.d.ts","sourceRoot":"","sources":["../../src/expo-router/createNavigatorPlan.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,oBAAoB,EAIrB,MAAM,gCAAgC,CAAC;AAExC,OAAO,KAAK,EAGV,aAAa,EACb,uBAAuB,EAEvB,wBAAwB,EAEzB,MAAM,8BAA8B,CAAC;AAStC,MAAM,WAAW,0BAA0B;IACzC,QAAQ,EAAE,wBAAwB,CAAC;IACnC,iBAAiB,EAAE,MAAM,CAAC;IAC1B,cAAc,CAAC,EAAE,uBAAuB,CAAC;CAC1C;AAkPD,6FAA6F;AAC7F,wBAAgB,mBAAmB,CACjC,QAAQ,EAAE,oBAAoB,EAC9B,OAAO,EAAE,0BAA0B,GAClC,aAAa,CAmBf"}
|
|
@@ -1,59 +1,194 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { validateNavigatorManifest } from '../validation/validateNavigatorManifest';
|
|
2
|
+
import { parseExpoRouterMajor, resolveEffectiveStackConfig, resolveEffectiveTabsConfig, } from './resolveNavigatorConfig';
|
|
2
3
|
import { resolveTabsNavigatorPlan } from './resolveTabsNavigatorPlan';
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
if (
|
|
6
|
-
return
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
case 'ios':
|
|
15
|
-
return platforms?.ios?.tabs;
|
|
16
|
-
case 'web':
|
|
17
|
-
return platforms?.web?.tabs;
|
|
4
|
+
function createStackAdapter(stack, routerMajor) {
|
|
5
|
+
const implementation = stack?.implementation ?? 'native';
|
|
6
|
+
if (implementation === 'javascript') {
|
|
7
|
+
return {
|
|
8
|
+
id: 'stack.javascript',
|
|
9
|
+
module: 'expo-router/js-stack',
|
|
10
|
+
exportName: 'Stack',
|
|
11
|
+
support: routerMajor !== undefined && routerMajor >= 56 ? 'supported' : 'unavailable',
|
|
12
|
+
stability: 'stable',
|
|
13
|
+
limitations: ['Requires Expo Router 56.0.0 or newer.'],
|
|
14
|
+
};
|
|
18
15
|
}
|
|
16
|
+
if (implementation === 'experimental') {
|
|
17
|
+
return {
|
|
18
|
+
id: 'stack.experimental',
|
|
19
|
+
support: 'unavailable',
|
|
20
|
+
stability: 'alpha',
|
|
21
|
+
limitations: ['Owned by the optional Experimental Stack adapter.'],
|
|
22
|
+
};
|
|
23
|
+
}
|
|
24
|
+
return {
|
|
25
|
+
id: 'stack.native',
|
|
26
|
+
module: 'expo-router',
|
|
27
|
+
exportName: 'Stack',
|
|
28
|
+
support: 'supported',
|
|
29
|
+
stability: 'stable',
|
|
30
|
+
limitations: [],
|
|
31
|
+
};
|
|
32
|
+
}
|
|
33
|
+
function createTabsAdapter(tabs, platform, routerMajor) {
|
|
34
|
+
const nativeUnavailable = tabs.implementation === 'native' &&
|
|
35
|
+
(platform === 'web' || routerMajor === undefined || routerMajor < 54);
|
|
36
|
+
const customUnavailable = tabs.implementation === 'custom' && platform !== 'web';
|
|
37
|
+
return {
|
|
38
|
+
id: `tabs.${tabs.implementation}`,
|
|
39
|
+
module: tabs.module,
|
|
40
|
+
exportName: tabs.exportName,
|
|
41
|
+
support: nativeUnavailable || customUnavailable ? 'unavailable' : 'supported',
|
|
42
|
+
stability: tabs.stability,
|
|
43
|
+
limitations: tabs.implementation === 'native'
|
|
44
|
+
? ['Alpha API; unavailable on web and requires Expo Router 54.0.0 or newer.']
|
|
45
|
+
: tabs.implementation === 'custom'
|
|
46
|
+
? ['Web-only Surface presentation over Expo Router headless tabs.']
|
|
47
|
+
: [],
|
|
48
|
+
};
|
|
49
|
+
}
|
|
50
|
+
function createAdapter(node, stack, tabs, platform, routerMajor) {
|
|
51
|
+
switch (node.type) {
|
|
52
|
+
case 'slot':
|
|
53
|
+
return {
|
|
54
|
+
id: 'slot',
|
|
55
|
+
module: 'expo-router',
|
|
56
|
+
exportName: 'Slot',
|
|
57
|
+
support: 'supported',
|
|
58
|
+
stability: 'stable',
|
|
59
|
+
limitations: [],
|
|
60
|
+
};
|
|
61
|
+
case 'stack':
|
|
62
|
+
return createStackAdapter(stack, routerMajor);
|
|
63
|
+
case 'drawer':
|
|
64
|
+
return {
|
|
65
|
+
id: 'drawer',
|
|
66
|
+
module: 'expo-router/drawer',
|
|
67
|
+
exportName: 'Drawer',
|
|
68
|
+
support: 'supported',
|
|
69
|
+
stability: 'stable',
|
|
70
|
+
limitations: [],
|
|
71
|
+
};
|
|
72
|
+
case 'tabs':
|
|
73
|
+
if (tabs === undefined)
|
|
74
|
+
throw new Error('Tabs planning did not resolve an adapter.');
|
|
75
|
+
return createTabsAdapter(tabs, platform, routerMajor);
|
|
76
|
+
case 'split-view':
|
|
77
|
+
return {
|
|
78
|
+
id: 'split-view',
|
|
79
|
+
support: 'unavailable',
|
|
80
|
+
stability: 'alpha',
|
|
81
|
+
limitations: ['Owned by the optional Split View adapter.'],
|
|
82
|
+
};
|
|
83
|
+
case 'custom':
|
|
84
|
+
return {
|
|
85
|
+
id: 'custom',
|
|
86
|
+
support: 'unavailable',
|
|
87
|
+
stability: 'stable',
|
|
88
|
+
limitations: ['Requires an explicitly composed custom adapter.'],
|
|
89
|
+
};
|
|
90
|
+
}
|
|
91
|
+
}
|
|
92
|
+
function resolveTabsPlan(config, platform, responsiveSize) {
|
|
93
|
+
if (config?.implementation === 'native' && platform === 'web') {
|
|
94
|
+
return {
|
|
95
|
+
implementation: 'native',
|
|
96
|
+
module: 'expo-router/unstable-native-tabs',
|
|
97
|
+
exportName: 'NativeTabs',
|
|
98
|
+
stability: 'alpha',
|
|
99
|
+
};
|
|
100
|
+
}
|
|
101
|
+
return resolveTabsNavigatorPlan(config, platform, responsiveSize);
|
|
19
102
|
}
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
103
|
+
function createNodeDetails(node, stack, tabs) {
|
|
104
|
+
switch (node.type) {
|
|
105
|
+
case 'stack':
|
|
106
|
+
return {
|
|
107
|
+
stack: {
|
|
108
|
+
implementation: stack?.implementation ?? 'native',
|
|
109
|
+
...(stack?.options === undefined ? {} : { options: stack.options }),
|
|
110
|
+
},
|
|
111
|
+
};
|
|
112
|
+
case 'drawer':
|
|
113
|
+
return { drawer: { ...(node.options === undefined ? {} : { options: node.options }) } };
|
|
114
|
+
case 'tabs':
|
|
115
|
+
return tabs === undefined ? {} : { tabs };
|
|
116
|
+
case 'split-view':
|
|
117
|
+
return {
|
|
118
|
+
splitView: {
|
|
119
|
+
columns: {
|
|
120
|
+
primary: node.columns.primary.screenId,
|
|
121
|
+
...(node.columns.supplementary === undefined
|
|
122
|
+
? {}
|
|
123
|
+
: { supplementary: node.columns.supplementary.screenId }),
|
|
124
|
+
},
|
|
125
|
+
...(node.inspector === undefined ? {} : { inspector: node.inspector.screenId }),
|
|
126
|
+
...(node.topColumnForCollapsing === undefined
|
|
127
|
+
? {}
|
|
128
|
+
: { topColumnForCollapsing: node.topColumnForCollapsing }),
|
|
129
|
+
},
|
|
130
|
+
};
|
|
131
|
+
case 'custom':
|
|
132
|
+
return {
|
|
133
|
+
custom: {
|
|
134
|
+
navigatorId: node.navigatorId,
|
|
135
|
+
...(node.config === undefined ? {} : { config: node.config }),
|
|
136
|
+
},
|
|
137
|
+
};
|
|
138
|
+
case 'slot':
|
|
139
|
+
return {};
|
|
140
|
+
}
|
|
25
141
|
}
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
const routes = node.routes.map((route) => ({
|
|
142
|
+
function createRoutePlan(manifest, route, pointer, options, responsiveSize) {
|
|
143
|
+
return {
|
|
29
144
|
name: route.name,
|
|
30
145
|
...(route.path === undefined ? {} : { path: route.path }),
|
|
146
|
+
...(route.label === undefined ? {} : { label: route.label }),
|
|
147
|
+
...(route.icon === undefined ? {} : { icon: route.icon }),
|
|
148
|
+
...(route.showInPrimaryNavigation === undefined
|
|
149
|
+
? {}
|
|
150
|
+
: { showInPrimaryNavigation: route.showInPrimaryNavigation }),
|
|
151
|
+
guards: route.guards ?? [],
|
|
31
152
|
...(route.screenId === undefined ? {} : { screenId: route.screenId }),
|
|
153
|
+
...(route.stackOptions === undefined ? {} : { stackOptions: route.stackOptions }),
|
|
32
154
|
...(route.navigator === undefined
|
|
33
155
|
? {}
|
|
34
|
-
: {
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
156
|
+
: {
|
|
157
|
+
navigator: createNodePlan(manifest, route.navigator, `${pointer}/navigator`, options, responsiveSize),
|
|
158
|
+
}),
|
|
159
|
+
};
|
|
160
|
+
}
|
|
161
|
+
function createNodePlan(manifest, node, pointer, options, responsiveSize) {
|
|
162
|
+
const stack = node.type === 'stack'
|
|
163
|
+
? resolveEffectiveStackConfig(manifest, node, options.platform)
|
|
164
|
+
: undefined;
|
|
165
|
+
const tabs = node.type === 'tabs'
|
|
166
|
+
? resolveTabsPlan(resolveEffectiveTabsConfig(manifest, node, options.platform), options.platform, responsiveSize)
|
|
167
|
+
: undefined;
|
|
168
|
+
const routes = node.routes.map((route, index) => createRoutePlan(manifest, route, `${pointer}/routes/${index}`, options, responsiveSize));
|
|
43
169
|
return {
|
|
44
|
-
type:
|
|
45
|
-
|
|
46
|
-
|
|
170
|
+
type: node.type,
|
|
171
|
+
pointer,
|
|
172
|
+
adapter: createAdapter(node, stack, tabs, options.platform, parseExpoRouterMajor(options.expoRouterVersion)),
|
|
173
|
+
...(node.initialRouteName === undefined ? {} : { initialRouteName: node.initialRouteName }),
|
|
47
174
|
routes,
|
|
48
|
-
tabs,
|
|
175
|
+
...createNodeDetails(node, stack, tabs),
|
|
49
176
|
};
|
|
50
177
|
}
|
|
51
|
-
/*** Create
|
|
178
|
+
/*** Create a disposable, provider-aware plan from only the navigator desired-state slice. */
|
|
52
179
|
export function createNavigatorPlan(manifest, options) {
|
|
53
|
-
const
|
|
180
|
+
const context = {
|
|
181
|
+
platform: options.platform,
|
|
182
|
+
expoRouterVersion: options.expoRouterVersion,
|
|
183
|
+
};
|
|
184
|
+
const diagnostics = validateNavigatorManifest(manifest, context);
|
|
185
|
+
const root = createNodePlan(manifest, manifest, '', options, options.responsiveSize ?? 'compact');
|
|
54
186
|
return {
|
|
55
|
-
|
|
56
|
-
root
|
|
187
|
+
context,
|
|
188
|
+
root,
|
|
189
|
+
diagnostics,
|
|
190
|
+
supported: diagnostics.every((diagnostic) => diagnostic.severity !== 'error') &&
|
|
191
|
+
root.adapter.support === 'supported',
|
|
57
192
|
flows: {
|
|
58
193
|
onboarding: manifest.flows?.onboarding ?? false,
|
|
59
194
|
authentication: manifest.flows?.authentication ?? false,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"createNavigatorPlan.js","sourceRoot":"","sources":["../../src/expo-router/createNavigatorPlan.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"createNavigatorPlan.js","sourceRoot":"","sources":["../../src/expo-router/createNavigatorPlan.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import type { AppNavigatorManifest, StackImplementationConfig, StackNavigatorNode, TabsImplementationConfig, TabsNavigatorNode } from '@ankhorage/contracts/navigator';
|
|
2
|
+
import type { NavigatorRuntimePlatform } from '../definitions/NavigatorPlan';
|
|
3
|
+
export declare function parseExpoRouterMajor(version: string): number | undefined;
|
|
4
|
+
export declare function resolveEffectiveStackConfig(manifest: AppNavigatorManifest, node: StackNavigatorNode, platform: NavigatorRuntimePlatform): StackImplementationConfig;
|
|
5
|
+
export declare function resolveEffectiveTabsConfig(manifest: AppNavigatorManifest, node: TabsNavigatorNode, platform: NavigatorRuntimePlatform): TabsImplementationConfig | undefined;
|
|
6
|
+
//# sourceMappingURL=resolveNavigatorConfig.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"resolveNavigatorConfig.d.ts","sourceRoot":"","sources":["../../src/expo-router/resolveNavigatorConfig.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,oBAAoB,EAEpB,yBAAyB,EACzB,kBAAkB,EAClB,wBAAwB,EACxB,iBAAiB,EAClB,MAAM,gCAAgC,CAAC;AAExC,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,8BAA8B,CAAC;AAE7E,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAGxE;AA2CD,wBAAgB,2BAA2B,CACzC,QAAQ,EAAE,oBAAoB,EAC9B,IAAI,EAAE,kBAAkB,EACxB,QAAQ,EAAE,wBAAwB,GACjC,yBAAyB,CAM3B;AAED,wBAAgB,0BAA0B,CACxC,QAAQ,EAAE,oBAAoB,EAC9B,IAAI,EAAE,iBAAiB,EACvB,QAAQ,EAAE,wBAAwB,GACjC,wBAAwB,GAAG,SAAS,CAMtC"}
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
export function parseExpoRouterMajor(version) {
|
|
2
|
+
const match = /^(\d+)\.\d+\.\d+(?:[-+].*)?$/u.exec(version);
|
|
3
|
+
return match?.[1] === undefined ? undefined : Number(match[1]);
|
|
4
|
+
}
|
|
5
|
+
function resolveNodeStackConfig(node) {
|
|
6
|
+
if (node.implementation === undefined && node.options === undefined)
|
|
7
|
+
return undefined;
|
|
8
|
+
return {
|
|
9
|
+
implementation: node.implementation ?? 'native',
|
|
10
|
+
...(node.options === undefined ? {} : { options: node.options }),
|
|
11
|
+
};
|
|
12
|
+
}
|
|
13
|
+
function resolveNodeTabsConfig(node) {
|
|
14
|
+
if (node.implementation !== undefined)
|
|
15
|
+
return node;
|
|
16
|
+
return node.native !== undefined || node.web !== undefined ? node : undefined;
|
|
17
|
+
}
|
|
18
|
+
function resolvePlatformStackConfig(platforms, platform) {
|
|
19
|
+
switch (platform) {
|
|
20
|
+
case 'android':
|
|
21
|
+
return platforms?.android?.stack;
|
|
22
|
+
case 'ios':
|
|
23
|
+
return platforms?.ios?.stack;
|
|
24
|
+
case 'web':
|
|
25
|
+
return platforms?.web?.stack;
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
function resolvePlatformTabsConfig(platforms, platform) {
|
|
29
|
+
switch (platform) {
|
|
30
|
+
case 'android':
|
|
31
|
+
return platforms?.android?.tabs;
|
|
32
|
+
case 'ios':
|
|
33
|
+
return platforms?.ios?.tabs;
|
|
34
|
+
case 'web':
|
|
35
|
+
return platforms?.web?.tabs;
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
export function resolveEffectiveStackConfig(manifest, node, platform) {
|
|
39
|
+
return (resolvePlatformStackConfig(manifest.platforms, platform) ??
|
|
40
|
+
resolveNodeStackConfig(node) ??
|
|
41
|
+
manifest.defaults?.stack ?? { implementation: 'native' });
|
|
42
|
+
}
|
|
43
|
+
export function resolveEffectiveTabsConfig(manifest, node, platform) {
|
|
44
|
+
return (resolvePlatformTabsConfig(manifest.platforms, platform) ??
|
|
45
|
+
resolveNodeTabsConfig(node) ??
|
|
46
|
+
manifest.defaults?.tabs);
|
|
47
|
+
}
|
|
48
|
+
//# sourceMappingURL=resolveNavigatorConfig.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"resolveNavigatorConfig.js","sourceRoot":"","sources":["../../src/expo-router/resolveNavigatorConfig.ts"],"names":[],"mappings":"AAWA,MAAM,UAAU,oBAAoB,CAAC,OAAe;IAClD,MAAM,KAAK,GAAG,+BAA+B,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IAC5D,OAAO,KAAK,EAAE,CAAC,CAAC,CAAC,KAAK,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;AACjE,CAAC;AAED,SAAS,sBAAsB,CAAC,IAAwB;IACtD,IAAI,IAAI,CAAC,cAAc,KAAK,SAAS,IAAI,IAAI,CAAC,OAAO,KAAK,SAAS;QAAE,OAAO,SAAS,CAAC;IACtF,OAAO;QACL,cAAc,EAAE,IAAI,CAAC,cAAc,IAAI,QAAQ;QAC/C,GAAG,CAAC,IAAI,CAAC,OAAO,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,IAAI,CAAC,OAAO,EAAE,CAAC;KACpC,CAAC;AACjC,CAAC;AAED,SAAS,qBAAqB,CAAC,IAAuB;IACpD,IAAI,IAAI,CAAC,cAAc,KAAK,SAAS;QAAE,OAAO,IAAI,CAAC;IACnD,OAAO,IAAI,CAAC,MAAM,KAAK,SAAS,IAAI,IAAI,CAAC,GAAG,KAAK,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC;AAChF,CAAC;AAED,SAAS,0BAA0B,CACjC,SAAyC,EACzC,QAAkC;IAElC,QAAQ,QAAQ,EAAE,CAAC;QACjB,KAAK,SAAS;YACZ,OAAO,SAAS,EAAE,OAAO,EAAE,KAAK,CAAC;QACnC,KAAK,KAAK;YACR,OAAO,SAAS,EAAE,GAAG,EAAE,KAAK,CAAC;QAC/B,KAAK,KAAK;YACR,OAAO,SAAS,EAAE,GAAG,EAAE,KAAK,CAAC;IACjC,CAAC;AACH,CAAC;AAED,SAAS,yBAAyB,CAChC,SAAyC,EACzC,QAAkC;IAElC,QAAQ,QAAQ,EAAE,CAAC;QACjB,KAAK,SAAS;YACZ,OAAO,SAAS,EAAE,OAAO,EAAE,IAAI,CAAC;QAClC,KAAK,KAAK;YACR,OAAO,SAAS,EAAE,GAAG,EAAE,IAAI,CAAC;QAC9B,KAAK,KAAK;YACR,OAAO,SAAS,EAAE,GAAG,EAAE,IAAI,CAAC;IAChC,CAAC;AACH,CAAC;AAED,MAAM,UAAU,2BAA2B,CACzC,QAA8B,EAC9B,IAAwB,EACxB,QAAkC;IAElC,OAAO,CACL,0BAA0B,CAAC,QAAQ,CAAC,SAAS,EAAE,QAAQ,CAAC;QACxD,sBAAsB,CAAC,IAAI,CAAC;QAC5B,QAAQ,CAAC,QAAQ,EAAE,KAAK,IAAI,EAAE,cAAc,EAAE,QAAQ,EAAE,CACzD,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,0BAA0B,CACxC,QAA8B,EAC9B,IAAuB,EACvB,QAAkC;IAElC,OAAO,CACL,yBAAyB,CAAC,QAAQ,CAAC,SAAS,EAAE,QAAQ,CAAC;QACvD,qBAAqB,CAAC,IAAI,CAAC;QAC3B,QAAQ,CAAC,QAAQ,EAAE,IAAI,CACxB,CAAC;AACJ,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"resolveTabsNavigatorPlan.d.ts","sourceRoot":"","sources":["../../src/expo-router/resolveTabsNavigatorPlan.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAIV,wBAAwB,EACzB,MAAM,gCAAgC,CAAC;AAExC,OAAO,KAAK,EACV,uBAAuB,EACvB,wBAAwB,EACxB,iBAAiB,EAClB,MAAM,8BAA8B,CAAC;
|
|
1
|
+
{"version":3,"file":"resolveTabsNavigatorPlan.d.ts","sourceRoot":"","sources":["../../src/expo-router/resolveTabsNavigatorPlan.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAIV,wBAAwB,EACzB,MAAM,gCAAgC,CAAC;AAExC,OAAO,KAAK,EACV,uBAAuB,EACvB,wBAAwB,EACxB,iBAAiB,EAClB,MAAM,8BAA8B,CAAC;AAsFtC,2FAA2F;AAC3F,wBAAgB,wBAAwB,CACtC,MAAM,EAAE,wBAAwB,GAAG,SAAS,EAC5C,QAAQ,EAAE,wBAAwB,EAClC,IAAI,EAAE,uBAAuB,GAC5B,iBAAiB,CAcnB"}
|
|
@@ -10,8 +10,8 @@ function resolveAdaptiveConfig(config) {
|
|
|
10
10
|
? config
|
|
11
11
|
: undefined;
|
|
12
12
|
}
|
|
13
|
-
/*** Create the
|
|
14
|
-
function createNativeTabsPlan(platform) {
|
|
13
|
+
/*** Create the alpha native-tabs plan and reject unsupported Web usage. */
|
|
14
|
+
function createNativeTabsPlan(platform, config) {
|
|
15
15
|
if (platform === 'web') {
|
|
16
16
|
throw new Error('Native tabs are not available for the Web navigator plan.');
|
|
17
17
|
}
|
|
@@ -19,7 +19,13 @@ function createNativeTabsPlan(platform) {
|
|
|
19
19
|
implementation: 'native',
|
|
20
20
|
module: 'expo-router/unstable-native-tabs',
|
|
21
21
|
exportName: 'NativeTabs',
|
|
22
|
-
stability: '
|
|
22
|
+
stability: 'alpha',
|
|
23
|
+
...(config?.minimizeBehavior === undefined
|
|
24
|
+
? {}
|
|
25
|
+
: { minimizeBehavior: config.minimizeBehavior }),
|
|
26
|
+
...(config?.bottomAccessory === undefined
|
|
27
|
+
? {}
|
|
28
|
+
: { bottomAccessoryScreenId: config.bottomAccessory.screenId }),
|
|
23
29
|
};
|
|
24
30
|
}
|
|
25
31
|
/*** Create the stable JavaScript tabs plan for bottom or top presentation. */
|
|
@@ -35,18 +41,25 @@ function createJavaScriptTabsPlan(config) {
|
|
|
35
41
|
}
|
|
36
42
|
/*** Create the stable headless custom-tabs plan for Web or explicit custom use. */
|
|
37
43
|
function createCustomTabsPlan(config, size) {
|
|
44
|
+
const resolved = resolveCustomTabsPresentation(config, size);
|
|
45
|
+
const presentations = {
|
|
46
|
+
compact: resolveCustomTabsPresentation(config, 'compact').presentation,
|
|
47
|
+
medium: resolveCustomTabsPresentation(config, 'medium').presentation,
|
|
48
|
+
expanded: resolveCustomTabsPresentation(config, 'expanded').presentation,
|
|
49
|
+
};
|
|
38
50
|
return {
|
|
39
51
|
implementation: 'custom',
|
|
40
52
|
module: 'expo-router/ui',
|
|
41
53
|
exportName: 'Tabs',
|
|
42
54
|
stability: 'stable',
|
|
43
|
-
...
|
|
55
|
+
...resolved,
|
|
56
|
+
presentations,
|
|
44
57
|
};
|
|
45
58
|
}
|
|
46
59
|
/*** Resolve the adaptive tabs plan for the selected runtime platform. */
|
|
47
60
|
function createAdaptiveTabsPlan(config, platform, size) {
|
|
48
61
|
if (platform !== 'web')
|
|
49
|
-
return createNativeTabsPlan(platform);
|
|
62
|
+
return createNativeTabsPlan(platform, resolveAdaptiveConfig(config)?.native);
|
|
50
63
|
return createCustomTabsPlan(resolveAdaptiveConfig(config)?.web ?? DEFAULT_WEB_CUSTOM_TABS, size);
|
|
51
64
|
}
|
|
52
65
|
/*** Resolve the Expo Router module/export and presentation for one tabs implementation. */
|
|
@@ -58,7 +71,7 @@ export function resolveTabsNavigatorPlan(config, platform, size) {
|
|
|
58
71
|
case 'adaptive':
|
|
59
72
|
return createAdaptiveTabsPlan(config, platform, size);
|
|
60
73
|
case 'native':
|
|
61
|
-
return createNativeTabsPlan(platform);
|
|
74
|
+
return createNativeTabsPlan(platform, config);
|
|
62
75
|
case 'javascript':
|
|
63
76
|
return createJavaScriptTabsPlan(config);
|
|
64
77
|
case 'custom':
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"resolveTabsNavigatorPlan.js","sourceRoot":"","sources":["../../src/expo-router/resolveTabsNavigatorPlan.ts"],"names":[],"mappings":"AAYA,OAAO,EAAE,6BAA6B,EAAE,MAAM,+CAA+C,CAAC;AAE9F,MAAM,uBAAuB,GAAG;IAC9B,YAAY,EAAE,YAAY;CAClB,CAAC;AAEX,mFAAmF;AACnF,SAAS,qBAAqB,CAC5B,MAA4C;IAE5C,IAAI,MAAM,KAAK,SAAS;QAAE,OAAO,SAAS,CAAC;IAC3C,OAAO,MAAM,CAAC,cAAc,KAAK,SAAS,IAAI,MAAM,CAAC,cAAc,KAAK,UAAU;QAChF,CAAC,CAAC,MAAM;QACR,CAAC,CAAC,SAAS,CAAC;AAChB,CAAC;AAED,
|
|
1
|
+
{"version":3,"file":"resolveTabsNavigatorPlan.js","sourceRoot":"","sources":["../../src/expo-router/resolveTabsNavigatorPlan.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import type { NavigatorGeneratedFile, NavigatorGenerationBindings, NavigatorPlan } from '../definitions/NavigatorPlan';
|
|
2
|
+
/*** Generate deterministic Expo Router files from a validated disposable plan and narrow bindings. */
|
|
3
|
+
export declare function generateNavigatorFiles(plan: NavigatorPlan, bindings: NavigatorGenerationBindings): readonly NavigatorGeneratedFile[];
|
|
4
|
+
//# sourceMappingURL=generateNavigatorFiles.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"generateNavigatorFiles.d.ts","sourceRoot":"","sources":["../../src/generation/generateNavigatorFiles.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,sBAAsB,EACtB,2BAA2B,EAE3B,aAAa,EAGd,MAAM,8BAA8B,CAAC;AAwMtC,sGAAsG;AACtG,wBAAgB,sBAAsB,CACpC,IAAI,EAAE,aAAa,EACnB,QAAQ,EAAE,2BAA2B,GACpC,SAAS,sBAAsB,EAAE,CAkBnC"}
|