@ankhorage/navigator 1.2.0 → 1.4.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/custom/CustomNavigatorRegistry.d.ts +25 -0
- package/dist/custom/CustomNavigatorRegistry.d.ts.map +1 -0
- package/dist/custom/CustomNavigatorRegistry.js +30 -0
- package/dist/custom/CustomNavigatorRegistry.js.map +1 -0
- package/dist/definitions/NavigatorPlan.d.ts +3 -2
- package/dist/definitions/NavigatorPlan.d.ts.map +1 -1
- package/dist/expo-router/createNavigatorPlan.d.ts +2 -0
- package/dist/expo-router/createNavigatorPlan.d.ts.map +1 -1
- package/dist/expo-router/createNavigatorPlan.js +7 -15
- package/dist/expo-router/createNavigatorPlan.js.map +1 -1
- package/dist/expo-router/resolveCustomNavigatorPlan.d.ts +6 -0
- package/dist/expo-router/resolveCustomNavigatorPlan.d.ts.map +1 -0
- package/dist/expo-router/resolveCustomNavigatorPlan.js +21 -0
- package/dist/expo-router/resolveCustomNavigatorPlan.js.map +1 -0
- package/dist/expo-router/resolveSplitViewNavigatorPlan.d.ts +4 -0
- package/dist/expo-router/resolveSplitViewNavigatorPlan.d.ts.map +1 -0
- package/dist/expo-router/resolveSplitViewNavigatorPlan.js +19 -0
- package/dist/expo-router/resolveSplitViewNavigatorPlan.js.map +1 -0
- package/dist/generation/generateNavigatorFiles.d.ts.map +1 -1
- package/dist/generation/generateNavigatorFiles.js +9 -2
- package/dist/generation/generateNavigatorFiles.js.map +1 -1
- package/dist/generation/generateSplitViewLayoutFile.d.ts +4 -0
- package/dist/generation/generateSplitViewLayoutFile.d.ts.map +1 -0
- package/dist/generation/generateSplitViewLayoutFile.js +58 -0
- package/dist/generation/generateSplitViewLayoutFile.js.map +1 -0
- package/dist/index.d.ts +2 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -0
- package/dist/index.js.map +1 -1
- package/dist/metadata/index.d.ts +16 -2
- package/dist/metadata/index.d.ts.map +1 -1
- package/dist/metadata/index.js +18 -2
- package/dist/metadata/index.js.map +1 -1
- package/dist/validation/validateCustomNavigator.d.ts +6 -0
- package/dist/validation/validateCustomNavigator.d.ts.map +1 -0
- package/dist/validation/validateCustomNavigator.js +106 -0
- package/dist/validation/validateCustomNavigator.js.map +1 -0
- package/dist/validation/validateNavigatorManifest.d.ts +2 -1
- package/dist/validation/validateNavigatorManifest.d.ts.map +1 -1
- package/dist/validation/validateNavigatorManifest.js +5 -9
- package/dist/validation/validateNavigatorManifest.js.map +1 -1
- package/dist/validation/validateSplitView.d.ts +5 -0
- package/dist/validation/validateSplitView.d.ts.map +1 -0
- package/dist/validation/validateSplitView.js +138 -0
- package/dist/validation/validateSplitView.js.map +1 -0
- package/package.json +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,17 @@
|
|
|
1
1
|
# @ankhorage/navigator
|
|
2
2
|
|
|
3
|
+
## 1.4.0
|
|
4
|
+
|
|
5
|
+
### Minor Changes
|
|
6
|
+
|
|
7
|
+
- 146ffe1: Add immutable custom navigator registration with JSON schema validation, platform gates, and safe standard-router generation bindings.
|
|
8
|
+
|
|
9
|
+
## 1.3.0
|
|
10
|
+
|
|
11
|
+
### Minor Changes
|
|
12
|
+
|
|
13
|
+
- 567c719: Add constrained Expo Router Split View planning and generation with registered column screens, iPhone collapse metadata, and explicit Slot fallbacks.
|
|
14
|
+
|
|
3
15
|
## 1.2.0
|
|
4
16
|
|
|
5
17
|
### Minor Changes
|
package/README.md
CHANGED
|
@@ -3,9 +3,9 @@
|
|
|
3
3
|
|
|
4
4
|
# NAVIGATOR
|
|
5
5
|
|
|
6
|
-
         
|
|
7
7
|
|
|
8
|
-
Standalone Navigator capability with topology configured independently from platform implementation and visual presentation. Adaptive tabs provide native and responsive web adapters;
|
|
8
|
+
Standalone Navigator capability with topology configured independently from platform implementation and visual presentation. Adaptive tabs provide native and responsive web adapters; experimental Stack and Split View stay testing-only with validated upstream fallbacks.
|
|
9
9
|
|
|
10
10
|
## Generated documentation
|
|
11
11
|
|
|
@@ -16,5 +16,6 @@ Standalone Navigator capability with topology configured independently from plat
|
|
|
16
16
|
- [Module relationships](././paradox/diagrams/module-relationships.mmd)
|
|
17
17
|
- [Export graph](././paradox/diagrams/export-graph.mmd)
|
|
18
18
|
- [CustomTabsLayout sequence](././paradox/diagrams/sequences/custom-tabs-layout.mmd)
|
|
19
|
+
- [defineCustomNavigatorRegistry sequence](././paradox/diagrams/sequences/define-custom-navigator-registry.mmd)
|
|
19
20
|
- [resolveCustomTabsPresentation sequence](././paradox/diagrams/sequences/resolve-custom-tabs-presentation.mmd)
|
|
20
21
|
- [resolveTabsNavigatorPlan sequence](././paradox/diagrams/sequences/resolve-tabs-navigator-plan.mmd)
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import type { CustomNavigatorNode } from '@ankhorage/contracts/navigator';
|
|
2
|
+
import type { NavigatorApiStability, NavigatorRuntimePlatform } from '../definitions/NavigatorPlan';
|
|
3
|
+
export interface CustomNavigatorConfigIssue {
|
|
4
|
+
code: string;
|
|
5
|
+
message: string;
|
|
6
|
+
path?: string;
|
|
7
|
+
}
|
|
8
|
+
export interface CustomNavigatorRegistration {
|
|
9
|
+
readonly id: string;
|
|
10
|
+
readonly platforms: readonly NavigatorRuntimePlatform[];
|
|
11
|
+
readonly stability: NavigatorApiStability;
|
|
12
|
+
readonly integration: 'expo-router-standard';
|
|
13
|
+
readonly router: 'stack' | 'tab';
|
|
14
|
+
readonly module: string;
|
|
15
|
+
readonly exportName: string;
|
|
16
|
+
readonly validateConfig: (config: CustomNavigatorNode['config']) => readonly CustomNavigatorConfigIssue[];
|
|
17
|
+
}
|
|
18
|
+
declare const CUSTOM_NAVIGATOR_REGISTRY: unique symbol;
|
|
19
|
+
export type CustomNavigatorRegistry = Readonly<Record<string, CustomNavigatorRegistration>> & {
|
|
20
|
+
readonly [CUSTOM_NAVIGATOR_REGISTRY]: true;
|
|
21
|
+
};
|
|
22
|
+
/*** Define an immutable, duplicate-free custom navigator registry for one composition boundary. */
|
|
23
|
+
export declare function defineCustomNavigatorRegistry(registrations: readonly CustomNavigatorRegistration[]): CustomNavigatorRegistry;
|
|
24
|
+
export {};
|
|
25
|
+
//# sourceMappingURL=CustomNavigatorRegistry.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"CustomNavigatorRegistry.d.ts","sourceRoot":"","sources":["../../src/custom/CustomNavigatorRegistry.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,gCAAgC,CAAC;AAE1E,OAAO,KAAK,EAAE,qBAAqB,EAAE,wBAAwB,EAAE,MAAM,8BAA8B,CAAC;AAGpG,MAAM,WAAW,0BAA0B;IACzC,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED,MAAM,WAAW,2BAA2B;IAC1C,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,SAAS,EAAE,SAAS,wBAAwB,EAAE,CAAC;IACxD,QAAQ,CAAC,SAAS,EAAE,qBAAqB,CAAC;IAC1C,QAAQ,CAAC,WAAW,EAAE,sBAAsB,CAAC;IAC7C,QAAQ,CAAC,MAAM,EAAE,OAAO,GAAG,KAAK,CAAC;IACjC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,cAAc,EAAE,CACvB,MAAM,EAAE,mBAAmB,CAAC,QAAQ,CAAC,KAClC,SAAS,0BAA0B,EAAE,CAAC;CAC5C;AAED,OAAO,CAAC,MAAM,yBAAyB,EAAE,OAAO,MAAM,CAAC;AAEvD,MAAM,MAAM,uBAAuB,GAAG,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,2BAA2B,CAAC,CAAC,GAAG;IAC5F,QAAQ,CAAC,CAAC,yBAAyB,CAAC,EAAE,IAAI,CAAC;CAC5C,CAAC;AAKF,mGAAmG;AACnG,wBAAgB,6BAA6B,CAC3C,aAAa,EAAE,SAAS,2BAA2B,EAAE,GACpD,uBAAuB,CAkCzB"}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import { assertModuleBinding } from '../generation/generationSafety';
|
|
2
|
+
const REGISTRATION_ID = /^[A-Za-z][A-Za-z0-9._-]*$/u;
|
|
3
|
+
const RUNTIME_PLATFORMS = new Set(['android', 'ios', 'web']);
|
|
4
|
+
/*** Define an immutable, duplicate-free custom navigator registry for one composition boundary. */
|
|
5
|
+
export function defineCustomNavigatorRegistry(registrations) {
|
|
6
|
+
const registry = Object.create(null);
|
|
7
|
+
for (const registration of registrations) {
|
|
8
|
+
if (!REGISTRATION_ID.test(registration.id)) {
|
|
9
|
+
throw new Error(`Invalid custom navigator registration id ${JSON.stringify(registration.id)}.`);
|
|
10
|
+
}
|
|
11
|
+
if (Object.hasOwn(registry, registration.id)) {
|
|
12
|
+
throw new Error(`Duplicate custom navigator registration id ${JSON.stringify(registration.id)}.`);
|
|
13
|
+
}
|
|
14
|
+
if (registration.platforms.length === 0 ||
|
|
15
|
+
new Set(registration.platforms).size !== registration.platforms.length ||
|
|
16
|
+
registration.platforms.some((platform) => !RUNTIME_PLATFORMS.has(platform))) {
|
|
17
|
+
throw new Error(`Custom navigator ${JSON.stringify(registration.id)} must declare unique supported platforms.`);
|
|
18
|
+
}
|
|
19
|
+
if (typeof registration.validateConfig !== 'function') {
|
|
20
|
+
throw new Error(`Custom navigator ${JSON.stringify(registration.id)} must provide a config validator.`);
|
|
21
|
+
}
|
|
22
|
+
assertModuleBinding(registration, `Custom navigator ${JSON.stringify(registration.id)}`);
|
|
23
|
+
registry[registration.id] = Object.freeze({
|
|
24
|
+
...registration,
|
|
25
|
+
platforms: Object.freeze([...registration.platforms]),
|
|
26
|
+
});
|
|
27
|
+
}
|
|
28
|
+
return Object.freeze(registry);
|
|
29
|
+
}
|
|
30
|
+
//# sourceMappingURL=CustomNavigatorRegistry.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"CustomNavigatorRegistry.js","sourceRoot":"","sources":["../../src/custom/CustomNavigatorRegistry.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,mBAAmB,EAAE,MAAM,gCAAgC,CAAC;AA2BrE,MAAM,eAAe,GAAG,4BAA4B,CAAC;AACrD,MAAM,iBAAiB,GAAG,IAAI,GAAG,CAA2B,CAAC,SAAS,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC;AAEvF,mGAAmG;AACnG,MAAM,UAAU,6BAA6B,CAC3C,aAAqD;IAErD,MAAM,QAAQ,GAAG,MAAM,CAAC,MAAM,CAAC,IAAI,CAAgD,CAAC;IACpF,KAAK,MAAM,YAAY,IAAI,aAAa,EAAE,CAAC;QACzC,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,YAAY,CAAC,EAAE,CAAC,EAAE,CAAC;YAC3C,MAAM,IAAI,KAAK,CACb,4CAA4C,IAAI,CAAC,SAAS,CAAC,YAAY,CAAC,EAAE,CAAC,GAAG,CAC/E,CAAC;QACJ,CAAC;QACD,IAAI,MAAM,CAAC,MAAM,CAAC,QAAQ,EAAE,YAAY,CAAC,EAAE,CAAC,EAAE,CAAC;YAC7C,MAAM,IAAI,KAAK,CACb,8CAA8C,IAAI,CAAC,SAAS,CAAC,YAAY,CAAC,EAAE,CAAC,GAAG,CACjF,CAAC;QACJ,CAAC;QACD,IACE,YAAY,CAAC,SAAS,CAAC,MAAM,KAAK,CAAC;YACnC,IAAI,GAAG,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC,IAAI,KAAK,YAAY,CAAC,SAAS,CAAC,MAAM;YACtE,YAAY,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC,iBAAiB,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,EAC3E,CAAC;YACD,MAAM,IAAI,KAAK,CACb,oBAAoB,IAAI,CAAC,SAAS,CAAC,YAAY,CAAC,EAAE,CAAC,2CAA2C,CAC/F,CAAC;QACJ,CAAC;QACD,IAAI,OAAO,YAAY,CAAC,cAAc,KAAK,UAAU,EAAE,CAAC;YACtD,MAAM,IAAI,KAAK,CACb,oBAAoB,IAAI,CAAC,SAAS,CAAC,YAAY,CAAC,EAAE,CAAC,mCAAmC,CACvF,CAAC;QACJ,CAAC;QACD,mBAAmB,CAAC,YAAY,EAAE,oBAAoB,IAAI,CAAC,SAAS,CAAC,YAAY,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;QACzF,QAAQ,CAAC,YAAY,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC,MAAM,CAAC;YACxC,GAAG,YAAY;YACf,SAAS,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC,GAAG,YAAY,CAAC,SAAS,CAAC,CAAC;SACtD,CAAC,CAAC;IACL,CAAC;IACD,OAAO,MAAM,CAAC,MAAM,CAAC,QAAQ,CAA4B,CAAC;AAC5D,CAAC"}
|
|
@@ -3,7 +3,7 @@ export type NavigatorRuntimePlatform = 'android' | 'ios' | 'web';
|
|
|
3
3
|
export type NavigatorResponsiveSize = 'compact' | 'medium' | 'expanded';
|
|
4
4
|
export type NavigatorApiStability = 'stable' | 'alpha';
|
|
5
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';
|
|
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-split-view' | 'expo-router/unstable-native-tabs';
|
|
7
7
|
export type NavigatorAdapterId = 'slot' | 'stack.native' | 'stack.javascript' | 'stack.experimental' | 'drawer' | 'tabs.native' | 'tabs.javascript' | 'tabs.custom' | 'split-view' | 'custom';
|
|
8
8
|
export interface NavigatorDiagnostic {
|
|
9
9
|
code: string;
|
|
@@ -17,7 +17,8 @@ export interface NavigatorValidationContext {
|
|
|
17
17
|
}
|
|
18
18
|
export interface NavigatorAdapterPlan {
|
|
19
19
|
id: NavigatorAdapterId;
|
|
20
|
-
module
|
|
20
|
+
/** Built-in Expo Router entry point or an explicitly registered custom module. */
|
|
21
|
+
module?: string;
|
|
21
22
|
exportName?: string;
|
|
22
23
|
support: NavigatorSupportStatus;
|
|
23
24
|
stability: NavigatorApiStability;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"NavigatorPlan.d.ts","sourceRoot":"","sources":["../../src/definitions/NavigatorPlan.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,mBAAmB,EACnB,sBAAsB,EACtB,aAAa,EACb,eAAe,EACf,mBAAmB,EACnB,kBAAkB,EACnB,MAAM,gCAAgC,CAAC;AAExC,MAAM,MAAM,wBAAwB,GAAG,SAAS,GAAG,KAAK,GAAG,KAAK,CAAC;AACjE,MAAM,MAAM,uBAAuB,GAAG,SAAS,GAAG,QAAQ,GAAG,UAAU,CAAC;AACxE,MAAM,MAAM,qBAAqB,GAAG,QAAQ,GAAG,OAAO,CAAC;AACvD,MAAM,MAAM,sBAAsB,GAAG,WAAW,GAAG,aAAa,CAAC;AAEjE,MAAM,MAAM,yBAAyB,GACjC,aAAa,GACb,oBAAoB,GACpB,sBAAsB,GACtB,qBAAqB,GACrB,yBAAyB,GACzB,gBAAgB,GAChB,kCAAkC,CAAC;AAEvC,MAAM,MAAM,kBAAkB,GAC1B,MAAM,GACN,cAAc,GACd,kBAAkB,GAClB,oBAAoB,GACpB,QAAQ,GACR,aAAa,GACb,iBAAiB,GACjB,aAAa,GACb,YAAY,GACZ,QAAQ,CAAC;AAEb,MAAM,WAAW,mBAAmB;IAClC,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,OAAO,GAAG,SAAS,CAAC;IAC9B,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,0BAA0B;IACzC,QAAQ,EAAE,wBAAwB,CAAC;IACnC,iBAAiB,EAAE,MAAM,CAAC;CAC3B;AAED,MAAM,WAAW,oBAAoB;IACnC,EAAE,EAAE,kBAAkB,CAAC;IACvB,MAAM,CAAC,EAAE,
|
|
1
|
+
{"version":3,"file":"NavigatorPlan.d.ts","sourceRoot":"","sources":["../../src/definitions/NavigatorPlan.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,9 +1,11 @@
|
|
|
1
1
|
import type { AppNavigatorManifest } from '@ankhorage/contracts/navigator';
|
|
2
|
+
import type { CustomNavigatorRegistry } from '../custom/CustomNavigatorRegistry';
|
|
2
3
|
import type { NavigatorPlan, NavigatorResponsiveSize, NavigatorRuntimePlatform } from '../definitions/NavigatorPlan';
|
|
3
4
|
export interface CreateNavigatorPlanOptions {
|
|
4
5
|
platform: NavigatorRuntimePlatform;
|
|
5
6
|
expoRouterVersion: string;
|
|
6
7
|
responsiveSize?: NavigatorResponsiveSize;
|
|
8
|
+
customNavigators?: CustomNavigatorRegistry;
|
|
7
9
|
}
|
|
8
10
|
/*** Create a disposable, provider-aware plan from only the navigator desired-state slice. */
|
|
9
11
|
export declare function createNavigatorPlan(manifest: AppNavigatorManifest, options: CreateNavigatorPlanOptions): NavigatorPlan;
|
|
@@ -1 +1 @@
|
|
|
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;
|
|
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,EAAE,uBAAuB,EAAE,MAAM,mCAAmC,CAAC;AACjF,OAAO,KAAK,EAGV,aAAa,EACb,uBAAuB,EAEvB,wBAAwB,EAEzB,MAAM,8BAA8B,CAAC;AAWtC,MAAM,WAAW,0BAA0B;IACzC,QAAQ,EAAE,wBAAwB,CAAC;IACnC,iBAAiB,EAAE,MAAM,CAAC;IAC1B,cAAc,CAAC,EAAE,uBAAuB,CAAC;IACzC,gBAAgB,CAAC,EAAE,uBAAuB,CAAC;CAC5C;AAyPD,6FAA6F;AAC7F,wBAAgB,mBAAmB,CACjC,QAAQ,EAAE,oBAAoB,EAC9B,OAAO,EAAE,0BAA0B,GAClC,aAAa,CAmBf"}
|
|
@@ -1,5 +1,7 @@
|
|
|
1
1
|
import { validateNavigatorManifest } from '../validation/validateNavigatorManifest';
|
|
2
|
+
import { resolveCustomNavigatorAdapterPlan } from './resolveCustomNavigatorPlan';
|
|
2
3
|
import { parseExpoRouterMajor, resolveEffectiveStackConfig, resolveEffectiveTabsConfig, } from './resolveNavigatorConfig';
|
|
4
|
+
import { resolveSplitViewAdapterPlan } from './resolveSplitViewNavigatorPlan';
|
|
3
5
|
import { resolveTabsNavigatorPlan } from './resolveTabsNavigatorPlan';
|
|
4
6
|
/*** Resolve a Stack implementation to its version- and platform-aware Expo Router adapter. */
|
|
5
7
|
function createStackAdapter(stack, platform, routerMajor) {
|
|
@@ -60,7 +62,7 @@ function createTabsAdapter(tabs, platform, routerMajor) {
|
|
|
60
62
|
: [],
|
|
61
63
|
};
|
|
62
64
|
}
|
|
63
|
-
function createAdapter(node, stack, tabs, platform, routerMajor) {
|
|
65
|
+
function createAdapter(node, stack, tabs, platform, routerMajor, customNavigators) {
|
|
64
66
|
switch (node.type) {
|
|
65
67
|
case 'slot':
|
|
66
68
|
return {
|
|
@@ -87,19 +89,9 @@ function createAdapter(node, stack, tabs, platform, routerMajor) {
|
|
|
87
89
|
throw new Error('Tabs planning did not resolve an adapter.');
|
|
88
90
|
return createTabsAdapter(tabs, platform, routerMajor);
|
|
89
91
|
case 'split-view':
|
|
90
|
-
return
|
|
91
|
-
id: 'split-view',
|
|
92
|
-
support: 'unavailable',
|
|
93
|
-
stability: 'alpha',
|
|
94
|
-
limitations: ['Owned by the optional Split View adapter.'],
|
|
95
|
-
};
|
|
92
|
+
return resolveSplitViewAdapterPlan(platform, routerMajor);
|
|
96
93
|
case 'custom':
|
|
97
|
-
return
|
|
98
|
-
id: 'custom',
|
|
99
|
-
support: 'unavailable',
|
|
100
|
-
stability: 'stable',
|
|
101
|
-
limitations: ['Requires an explicitly composed custom adapter.'],
|
|
102
|
-
};
|
|
94
|
+
return resolveCustomNavigatorAdapterPlan(node, platform, routerMajor, customNavigators);
|
|
103
95
|
}
|
|
104
96
|
}
|
|
105
97
|
function resolveTabsPlan(config, platform, responsiveSize) {
|
|
@@ -182,7 +174,7 @@ function createNodePlan(manifest, node, pointer, options, responsiveSize) {
|
|
|
182
174
|
return {
|
|
183
175
|
type: node.type,
|
|
184
176
|
pointer,
|
|
185
|
-
adapter: createAdapter(node, stack, tabs, options.platform, parseExpoRouterMajor(options.expoRouterVersion)),
|
|
177
|
+
adapter: createAdapter(node, stack, tabs, options.platform, parseExpoRouterMajor(options.expoRouterVersion), options.customNavigators),
|
|
186
178
|
...(node.initialRouteName === undefined ? {} : { initialRouteName: node.initialRouteName }),
|
|
187
179
|
routes,
|
|
188
180
|
...createNodeDetails(node, stack, tabs),
|
|
@@ -194,7 +186,7 @@ export function createNavigatorPlan(manifest, options) {
|
|
|
194
186
|
platform: options.platform,
|
|
195
187
|
expoRouterVersion: options.expoRouterVersion,
|
|
196
188
|
};
|
|
197
|
-
const diagnostics = validateNavigatorManifest(manifest, context);
|
|
189
|
+
const diagnostics = validateNavigatorManifest(manifest, context, options.customNavigators);
|
|
198
190
|
const root = createNodePlan(manifest, manifest, '', options, options.responsiveSize ?? 'compact');
|
|
199
191
|
return {
|
|
200
192
|
context,
|
|
@@ -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 { CustomNavigatorNode } from '@ankhorage/contracts/navigator';
|
|
2
|
+
import type { CustomNavigatorRegistry } from '../custom/CustomNavigatorRegistry';
|
|
3
|
+
import type { NavigatorAdapterPlan, NavigatorRuntimePlatform } from '../definitions/NavigatorPlan';
|
|
4
|
+
/*** Resolve a registered standard-router integration without materializing executable manifest data. */
|
|
5
|
+
export declare function resolveCustomNavigatorAdapterPlan(node: CustomNavigatorNode, platform: NavigatorRuntimePlatform, routerMajor: number | undefined, registry: CustomNavigatorRegistry | undefined): NavigatorAdapterPlan;
|
|
6
|
+
//# sourceMappingURL=resolveCustomNavigatorPlan.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"resolveCustomNavigatorPlan.d.ts","sourceRoot":"","sources":["../../src/expo-router/resolveCustomNavigatorPlan.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,gCAAgC,CAAC;AAE1E,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,mCAAmC,CAAC;AACjF,OAAO,KAAK,EAAE,oBAAoB,EAAE,wBAAwB,EAAE,MAAM,8BAA8B,CAAC;AAEnG,wGAAwG;AACxG,wBAAgB,iCAAiC,CAC/C,IAAI,EAAE,mBAAmB,EACzB,QAAQ,EAAE,wBAAwB,EAClC,WAAW,EAAE,MAAM,GAAG,SAAS,EAC/B,QAAQ,EAAE,uBAAuB,GAAG,SAAS,GAC5C,oBAAoB,CAmBtB"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
/*** Resolve a registered standard-router integration without materializing executable manifest data. */
|
|
2
|
+
export function resolveCustomNavigatorAdapterPlan(node, platform, routerMajor, registry) {
|
|
3
|
+
const registration = registry?.[node.navigatorId];
|
|
4
|
+
const supported = registration !== undefined &&
|
|
5
|
+
registration.platforms.includes(platform) &&
|
|
6
|
+
routerMajor !== undefined &&
|
|
7
|
+
routerMajor >= 56;
|
|
8
|
+
return {
|
|
9
|
+
id: 'custom',
|
|
10
|
+
...(registration === undefined
|
|
11
|
+
? {}
|
|
12
|
+
: { module: registration.module, exportName: registration.exportName }),
|
|
13
|
+
support: supported ? 'supported' : 'unavailable',
|
|
14
|
+
stability: registration?.stability ?? 'alpha',
|
|
15
|
+
limitations: [
|
|
16
|
+
'Requires an immutable registered expo-router-standard integration.',
|
|
17
|
+
'Expo Router 56.0.0 or newer owns route state, params, deep links, and history.',
|
|
18
|
+
],
|
|
19
|
+
};
|
|
20
|
+
}
|
|
21
|
+
//# sourceMappingURL=resolveCustomNavigatorPlan.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"resolveCustomNavigatorPlan.js","sourceRoot":"","sources":["../../src/expo-router/resolveCustomNavigatorPlan.ts"],"names":[],"mappings":"AAKA,wGAAwG;AACxG,MAAM,UAAU,iCAAiC,CAC/C,IAAyB,EACzB,QAAkC,EAClC,WAA+B,EAC/B,QAA6C;IAE7C,MAAM,YAAY,GAAG,QAAQ,EAAE,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;IAClD,MAAM,SAAS,GACb,YAAY,KAAK,SAAS;QAC1B,YAAY,CAAC,SAAS,CAAC,QAAQ,CAAC,QAAQ,CAAC;QACzC,WAAW,KAAK,SAAS;QACzB,WAAW,IAAI,EAAE,CAAC;IACpB,OAAO;QACL,EAAE,EAAE,QAAQ;QACZ,GAAG,CAAC,YAAY,KAAK,SAAS;YAC5B,CAAC,CAAC,EAAE;YACJ,CAAC,CAAC,EAAE,MAAM,EAAE,YAAY,CAAC,MAAM,EAAE,UAAU,EAAE,YAAY,CAAC,UAAU,EAAE,CAAC;QACzE,OAAO,EAAE,SAAS,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,aAAa;QAChD,SAAS,EAAE,YAAY,EAAE,SAAS,IAAI,OAAO;QAC7C,WAAW,EAAE;YACX,oEAAoE;YACpE,gFAAgF;SACjF;KACF,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import type { NavigatorAdapterPlan, NavigatorRuntimePlatform } from '../definitions/NavigatorPlan';
|
|
2
|
+
/*** Resolve the upstream iOS Split View adapter and its honest cross-platform Slot fallback. */
|
|
3
|
+
export declare function resolveSplitViewAdapterPlan(platform: NavigatorRuntimePlatform, routerMajor: number | undefined): NavigatorAdapterPlan;
|
|
4
|
+
//# sourceMappingURL=resolveSplitViewNavigatorPlan.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"resolveSplitViewNavigatorPlan.d.ts","sourceRoot":"","sources":["../../src/expo-router/resolveSplitViewNavigatorPlan.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,oBAAoB,EAAE,wBAAwB,EAAE,MAAM,8BAA8B,CAAC;AAEnG,gGAAgG;AAChG,wBAAgB,2BAA2B,CACzC,QAAQ,EAAE,wBAAwB,EAClC,WAAW,EAAE,MAAM,GAAG,SAAS,GAC9B,oBAAoB,CAiBtB"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
/*** Resolve the upstream iOS Split View adapter and its honest cross-platform Slot fallback. */
|
|
2
|
+
export function resolveSplitViewAdapterPlan(platform, routerMajor) {
|
|
3
|
+
return {
|
|
4
|
+
id: 'split-view',
|
|
5
|
+
module: 'expo-router/unstable-split-view',
|
|
6
|
+
exportName: 'SplitView',
|
|
7
|
+
support: routerMajor !== undefined && routerMajor >= 55 ? 'supported' : 'unavailable',
|
|
8
|
+
stability: 'alpha',
|
|
9
|
+
limitations: platform === 'ios'
|
|
10
|
+
? [
|
|
11
|
+
'Testing-only iOS API; iPhone collapses columns through upstream navigation state.',
|
|
12
|
+
'Inspector requires iOS 26 or newer.',
|
|
13
|
+
]
|
|
14
|
+
: [
|
|
15
|
+
'Expo Router renders a Slot fallback; split-pane presentation is unavailable on this platform.',
|
|
16
|
+
],
|
|
17
|
+
};
|
|
18
|
+
}
|
|
19
|
+
//# sourceMappingURL=resolveSplitViewNavigatorPlan.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"resolveSplitViewNavigatorPlan.js","sourceRoot":"","sources":["../../src/expo-router/resolveSplitViewNavigatorPlan.ts"],"names":[],"mappings":"AAEA,gGAAgG;AAChG,MAAM,UAAU,2BAA2B,CACzC,QAAkC,EAClC,WAA+B;IAE/B,OAAO;QACL,EAAE,EAAE,YAAY;QAChB,MAAM,EAAE,iCAAiC;QACzC,UAAU,EAAE,WAAW;QACvB,OAAO,EAAE,WAAW,KAAK,SAAS,IAAI,WAAW,IAAI,EAAE,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,aAAa;QACrF,SAAS,EAAE,OAAO;QAClB,WAAW,EACT,QAAQ,KAAK,KAAK;YAChB,CAAC,CAAC;gBACE,mFAAmF;gBACnF,qCAAqC;aACtC;YACH,CAAC,CAAC;gBACE,+FAA+F;aAChG;KACR,CAAC;AACJ,CAAC"}
|
|
@@ -1 +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;
|
|
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;AA8MtC,sGAAsG;AACtG,wBAAgB,sBAAsB,CACpC,IAAI,EAAE,aAAa,EACnB,QAAQ,EAAE,2BAA2B,GACpC,SAAS,sBAAsB,EAAE,CAkBnC"}
|
|
@@ -1,7 +1,8 @@
|
|
|
1
|
-
|
|
2
|
-
const SAFE_ROUTE_NAME = /^[A-Za-z0-9_.()[\]-]+$/u;
|
|
1
|
+
import { generateSplitViewLayoutFile } from './generateSplitViewLayoutFile';
|
|
3
2
|
import { generateTabsLayoutFile } from './generateTabsLayoutFile';
|
|
4
3
|
import { assertModuleBinding, quote } from './generationSafety';
|
|
4
|
+
const APP_DIRECTORY = 'src/app';
|
|
5
|
+
const SAFE_ROUTE_NAME = /^[A-Za-z0-9_.()[\]-]+$/u;
|
|
5
6
|
function assertRouteName(name) {
|
|
6
7
|
if (!SAFE_ROUTE_NAME.test(name) || name === '.' || name === '..') {
|
|
7
8
|
throw new Error(`Route name ${JSON.stringify(name)} is not a safe generated file segment.`);
|
|
@@ -65,6 +66,9 @@ function createNavigatorContents(node, componentName, imports, guardAliases) {
|
|
|
65
66
|
navigatorOptions === undefined
|
|
66
67
|
? undefined
|
|
67
68
|
: `screenOptions={${JSON.stringify(navigatorOptions)}}`,
|
|
69
|
+
node.type === 'custom' && node.custom?.config !== undefined
|
|
70
|
+
? `{...${JSON.stringify(node.custom.config)}}`
|
|
71
|
+
: undefined,
|
|
68
72
|
].filter((value) => value !== undefined);
|
|
69
73
|
const openingTag = `<${componentName}${props.length === 0 ? '' : ` ${props.join(' ')}`}>`;
|
|
70
74
|
const screens = node.routes
|
|
@@ -81,6 +85,9 @@ function createLayoutFile(node, directory, bindings) {
|
|
|
81
85
|
const tabsLayout = generateTabsLayoutFile(node, directory, bindings);
|
|
82
86
|
if (tabsLayout !== undefined)
|
|
83
87
|
return tabsLayout;
|
|
88
|
+
const splitViewLayout = generateSplitViewLayoutFile(node, directory, bindings);
|
|
89
|
+
if (splitViewLayout !== undefined)
|
|
90
|
+
return splitViewLayout;
|
|
84
91
|
const componentName = node.adapter.exportName;
|
|
85
92
|
assertModuleBinding({ module: node.adapter.module, exportName: componentName }, `Adapter ${JSON.stringify(node.adapter.id)}`);
|
|
86
93
|
const guardAliases = new Map();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"generateNavigatorFiles.js","sourceRoot":"","sources":["../../src/generation/generateNavigatorFiles.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"generateNavigatorFiles.js","sourceRoot":"","sources":["../../src/generation/generateNavigatorFiles.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import type { NavigatorGeneratedFile, NavigatorGenerationBindings, NavigatorNodePlan } from '../definitions/NavigatorPlan';
|
|
2
|
+
/*** Generate a Split View layout while leaving the routed main column to Expo Router's Slot. */
|
|
3
|
+
export declare function generateSplitViewLayoutFile(node: NavigatorNodePlan, directory: string, bindings: NavigatorGenerationBindings): NavigatorGeneratedFile | undefined;
|
|
4
|
+
//# sourceMappingURL=generateSplitViewLayoutFile.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"generateSplitViewLayoutFile.d.ts","sourceRoot":"","sources":["../../src/generation/generateSplitViewLayoutFile.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,sBAAsB,EACtB,2BAA2B,EAC3B,iBAAiB,EAElB,MAAM,8BAA8B,CAAC;AAiEtC,gGAAgG;AAChG,wBAAgB,2BAA2B,CACzC,IAAI,EAAE,iBAAiB,EACvB,SAAS,EAAE,MAAM,EACjB,QAAQ,EAAE,2BAA2B,GACpC,sBAAsB,GAAG,SAAS,CAmBpC"}
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
import { assertModuleBinding, quote } from './generationSafety';
|
|
2
|
+
/*** Resolve one Split View screen reference through the narrow generated-screen binding port. */
|
|
3
|
+
function resolveSplitViewBinding(bindings, screenId, role, element) {
|
|
4
|
+
const module = Reflect.get(bindings.screens, screenId);
|
|
5
|
+
if (module === undefined) {
|
|
6
|
+
throw new Error(`Missing Split View ${role} screen binding for ${JSON.stringify(screenId)}.`);
|
|
7
|
+
}
|
|
8
|
+
assertModuleBinding(module, `Split View ${role} screen ${JSON.stringify(screenId)}`);
|
|
9
|
+
const alias = `Navigator${role[0]?.toUpperCase()}${role.slice(1)}Screen`;
|
|
10
|
+
return { alias, element, module };
|
|
11
|
+
}
|
|
12
|
+
/*** Render deterministic imports for referenced Split View column and inspector screens. */
|
|
13
|
+
function renderSplitViewImports(bindings) {
|
|
14
|
+
return bindings
|
|
15
|
+
.map(({ alias, module }) => `import { ${module.exportName} as ${alias} } from ${quote(module.module)};`)
|
|
16
|
+
.join('\n');
|
|
17
|
+
}
|
|
18
|
+
/*** Render one referenced screen as an upstream Split View child. */
|
|
19
|
+
function renderSplitViewChild(binding) {
|
|
20
|
+
return ` <SplitView.${binding.element}>\n <${binding.alias} />\n </SplitView.${binding.element}>`;
|
|
21
|
+
}
|
|
22
|
+
/*** Resolve the ordered primary, supplementary, and inspector bindings for one Split View. */
|
|
23
|
+
function collectSplitViewBindings(splitView, bindings) {
|
|
24
|
+
return [
|
|
25
|
+
resolveSplitViewBinding(bindings, splitView.columns.primary, 'primary', 'Column'),
|
|
26
|
+
...(splitView.columns.supplementary === undefined
|
|
27
|
+
? []
|
|
28
|
+
: [
|
|
29
|
+
resolveSplitViewBinding(bindings, splitView.columns.supplementary, 'supplementary', 'Column'),
|
|
30
|
+
]),
|
|
31
|
+
...(splitView.inspector === undefined
|
|
32
|
+
? []
|
|
33
|
+
: [resolveSplitViewBinding(bindings, splitView.inspector, 'inspector', 'Inspector')]),
|
|
34
|
+
];
|
|
35
|
+
}
|
|
36
|
+
/*** Generate a Split View layout while leaving the routed main column to Expo Router's Slot. */
|
|
37
|
+
export function generateSplitViewLayoutFile(node, directory, bindings) {
|
|
38
|
+
if (node.type !== 'split-view' || node.splitView === undefined)
|
|
39
|
+
return undefined;
|
|
40
|
+
const referencedScreens = collectSplitViewBindings(node.splitView, bindings);
|
|
41
|
+
const props = [
|
|
42
|
+
node.splitView.topColumnForCollapsing === undefined
|
|
43
|
+
? undefined
|
|
44
|
+
: `topColumnForCollapsing=${quote(node.splitView.topColumnForCollapsing)}`,
|
|
45
|
+
node.splitView.inspector === undefined ? undefined : 'showInspector',
|
|
46
|
+
].filter((value) => value !== undefined);
|
|
47
|
+
const openingTag = `<SplitView${props.length === 0 ? '' : ` ${props.join(' ')}`}>`;
|
|
48
|
+
const imports = [
|
|
49
|
+
'import { SplitView } from "expo-router/unstable-split-view";',
|
|
50
|
+
renderSplitViewImports(referencedScreens),
|
|
51
|
+
].join('\n');
|
|
52
|
+
const children = referencedScreens.map(renderSplitViewChild).join('\n');
|
|
53
|
+
return {
|
|
54
|
+
path: `${directory}/_layout.tsx`,
|
|
55
|
+
contents: `${imports}\n\nexport default function NavigatorLayout() {\n return (\n ${openingTag}\n${children}\n </SplitView>\n );\n}\n`,
|
|
56
|
+
};
|
|
57
|
+
}
|
|
58
|
+
//# sourceMappingURL=generateSplitViewLayoutFile.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"generateSplitViewLayoutFile.js","sourceRoot":"","sources":["../../src/generation/generateSplitViewLayoutFile.ts"],"names":[],"mappings":"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"}
|
package/dist/index.d.ts
CHANGED
|
@@ -1,3 +1,5 @@
|
|
|
1
|
+
export type { CustomNavigatorConfigIssue, CustomNavigatorRegistration, CustomNavigatorRegistry, } from './custom/CustomNavigatorRegistry';
|
|
2
|
+
export { defineCustomNavigatorRegistry } from './custom/CustomNavigatorRegistry';
|
|
1
3
|
export type { ExpoRouterNavigatorModule, NavigatorAdapterId, NavigatorAdapterPlan, NavigatorApiStability, NavigatorDiagnostic, NavigatorGeneratedFile, NavigatorGenerationBindings, NavigatorNodePlan, NavigatorPlan, NavigatorResponsiveSize, NavigatorRoutePlan, NavigatorRuntimePlatform, NavigatorScreenModule, NavigatorSupportStatus, NavigatorValidationContext, ResolvedTabsImplementation, ResolvedTabsPresentation, TabsNavigatorPlan, } from './definitions/NavigatorPlan';
|
|
2
4
|
export type { CreateNavigatorPlanOptions } from './expo-router/createNavigatorPlan';
|
|
3
5
|
export { createNavigatorPlan } from './expo-router/createNavigatorPlan';
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,YAAY,EACV,yBAAyB,EACzB,kBAAkB,EAClB,oBAAoB,EACpB,qBAAqB,EACrB,mBAAmB,EACnB,sBAAsB,EACtB,2BAA2B,EAC3B,iBAAiB,EACjB,aAAa,EACb,uBAAuB,EACvB,kBAAkB,EAClB,wBAAwB,EACxB,qBAAqB,EACrB,sBAAsB,EACtB,0BAA0B,EAC1B,0BAA0B,EAC1B,wBAAwB,EACxB,iBAAiB,GAClB,MAAM,6BAA6B,CAAC;AACrC,YAAY,EAAE,0BAA0B,EAAE,MAAM,mCAAmC,CAAC;AACpF,OAAO,EAAE,mBAAmB,EAAE,MAAM,mCAAmC,CAAC;AACxE,OAAO,EAAE,wBAAwB,EAAE,MAAM,wCAAwC,CAAC;AAClF,OAAO,EAAE,sBAAsB,EAAE,MAAM,qCAAqC,CAAC;AAC7E,YAAY,EAAE,8BAA8B,EAAE,MAAM,8CAA8C,CAAC;AACnG,OAAO,EAAE,6BAA6B,EAAE,MAAM,8CAA8C,CAAC;AAC7F,OAAO,EAAE,sBAAsB,EAAE,MAAM,mCAAmC,CAAC;AAC3E,OAAO,EAAE,yBAAyB,EAAE,MAAM,wCAAwC,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,YAAY,EACV,0BAA0B,EAC1B,2BAA2B,EAC3B,uBAAuB,GACxB,MAAM,kCAAkC,CAAC;AAC1C,OAAO,EAAE,6BAA6B,EAAE,MAAM,kCAAkC,CAAC;AACjF,YAAY,EACV,yBAAyB,EACzB,kBAAkB,EAClB,oBAAoB,EACpB,qBAAqB,EACrB,mBAAmB,EACnB,sBAAsB,EACtB,2BAA2B,EAC3B,iBAAiB,EACjB,aAAa,EACb,uBAAuB,EACvB,kBAAkB,EAClB,wBAAwB,EACxB,qBAAqB,EACrB,sBAAsB,EACtB,0BAA0B,EAC1B,0BAA0B,EAC1B,wBAAwB,EACxB,iBAAiB,GAClB,MAAM,6BAA6B,CAAC;AACrC,YAAY,EAAE,0BAA0B,EAAE,MAAM,mCAAmC,CAAC;AACpF,OAAO,EAAE,mBAAmB,EAAE,MAAM,mCAAmC,CAAC;AACxE,OAAO,EAAE,wBAAwB,EAAE,MAAM,wCAAwC,CAAC;AAClF,OAAO,EAAE,sBAAsB,EAAE,MAAM,qCAAqC,CAAC;AAC7E,YAAY,EAAE,8BAA8B,EAAE,MAAM,8CAA8C,CAAC;AACnG,OAAO,EAAE,6BAA6B,EAAE,MAAM,8CAA8C,CAAC;AAC7F,OAAO,EAAE,sBAAsB,EAAE,MAAM,mCAAmC,CAAC;AAC3E,OAAO,EAAE,yBAAyB,EAAE,MAAM,wCAAwC,CAAC"}
|
package/dist/index.js
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
export { defineCustomNavigatorRegistry } from './custom/CustomNavigatorRegistry';
|
|
1
2
|
export { createNavigatorPlan } from './expo-router/createNavigatorPlan';
|
|
2
3
|
export { resolveTabsNavigatorPlan } from './expo-router/resolveTabsNavigatorPlan';
|
|
3
4
|
export { generateNavigatorFiles } from './generation/generateNavigatorFiles';
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,6BAA6B,EAAE,MAAM,kCAAkC,CAAC;AAsBjF,OAAO,EAAE,mBAAmB,EAAE,MAAM,mCAAmC,CAAC;AACxE,OAAO,EAAE,wBAAwB,EAAE,MAAM,wCAAwC,CAAC;AAClF,OAAO,EAAE,sBAAsB,EAAE,MAAM,qCAAqC,CAAC;AAE7E,OAAO,EAAE,6BAA6B,EAAE,MAAM,8CAA8C,CAAC;AAC7F,OAAO,EAAE,sBAAsB,EAAE,MAAM,mCAAmC,CAAC;AAC3E,OAAO,EAAE,yBAAyB,EAAE,MAAM,wCAAwC,CAAC"}
|
package/dist/metadata/index.d.ts
CHANGED
|
@@ -59,11 +59,25 @@ export declare const NAVIGATOR_PACKAGE_METADATA: {
|
|
|
59
59
|
};
|
|
60
60
|
};
|
|
61
61
|
readonly splitView: {
|
|
62
|
-
readonly support: "
|
|
62
|
+
readonly support: "supported";
|
|
63
63
|
readonly stability: "alpha";
|
|
64
|
+
readonly status: "testing-only";
|
|
65
|
+
readonly minimumExpoRouterVersion: "55.0.0";
|
|
66
|
+
readonly module: "expo-router/unstable-split-view";
|
|
67
|
+
readonly platforms: readonly ["ios"];
|
|
68
|
+
readonly fallback: {
|
|
69
|
+
readonly android: "slot";
|
|
70
|
+
readonly web: "slot";
|
|
71
|
+
};
|
|
72
|
+
readonly maximumAdditionalColumns: 2;
|
|
73
|
+
readonly inspectorMinimumIosVersion: 26;
|
|
64
74
|
};
|
|
65
75
|
readonly custom: {
|
|
66
|
-
readonly support: "
|
|
76
|
+
readonly support: "registered";
|
|
77
|
+
readonly minimumExpoRouterVersion: "56.0.0";
|
|
78
|
+
readonly integration: "expo-router-standard";
|
|
79
|
+
readonly routerOwner: "expo-router";
|
|
80
|
+
readonly config: "schema-validated-json";
|
|
67
81
|
};
|
|
68
82
|
};
|
|
69
83
|
readonly tabs: {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/metadata/index.ts"],"names":[],"mappings":"AAOA,eAAO,MAAM,0BAA0B
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/metadata/index.ts"],"names":[],"mappings":"AAOA,eAAO,MAAM,0BAA0B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA+E7B,CAAC"}
|
package/dist/metadata/index.js
CHANGED
|
@@ -37,8 +37,24 @@ export const NAVIGATOR_PACKAGE_METADATA = {
|
|
|
37
37
|
appConfigRequirement: 'android.predictiveBackGestureEnabled',
|
|
38
38
|
},
|
|
39
39
|
},
|
|
40
|
-
splitView: {
|
|
41
|
-
|
|
40
|
+
splitView: {
|
|
41
|
+
support: 'supported',
|
|
42
|
+
stability: 'alpha',
|
|
43
|
+
status: 'testing-only',
|
|
44
|
+
minimumExpoRouterVersion: '55.0.0',
|
|
45
|
+
module: 'expo-router/unstable-split-view',
|
|
46
|
+
platforms: ['ios'],
|
|
47
|
+
fallback: { android: 'slot', web: 'slot' },
|
|
48
|
+
maximumAdditionalColumns: 2,
|
|
49
|
+
inspectorMinimumIosVersion: 26,
|
|
50
|
+
},
|
|
51
|
+
custom: {
|
|
52
|
+
support: 'registered',
|
|
53
|
+
minimumExpoRouterVersion: '56.0.0',
|
|
54
|
+
integration: 'expo-router-standard',
|
|
55
|
+
routerOwner: 'expo-router',
|
|
56
|
+
config: 'schema-validated-json',
|
|
57
|
+
},
|
|
42
58
|
},
|
|
43
59
|
tabs: {
|
|
44
60
|
implementations: ['adaptive', 'javascript', 'native', 'custom'],
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/metadata/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,yBAAyB,EACzB,+BAA+B,EAC/B,iBAAiB,EACjB,eAAe,GAChB,MAAM,gCAAgC,CAAC;AAExC,MAAM,CAAC,MAAM,0BAA0B,GAAG;IACxC,WAAW,EAAE,sBAAsB;IACnC,gBAAgB,EAAE,WAAW;IAC7B,eAAe,EAAE,gCAAgC;IACjD,cAAc,EAAE,eAAe;IAC/B,OAAO,EAAE,iBAAiB;IAC1B,UAAU,EAAE,CAAC,mBAAmB,EAAE,oBAAoB,EAAE,kBAAkB,EAAE,gBAAgB,CAAC;IAC7F,YAAY,EAAE;QACZ,IAAI,EAAE,EAAE,OAAO,EAAE,WAAW,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,EAAE,aAAa,EAAE;QAC1E,WAAW,EAAE,EAAE,OAAO,EAAE,WAAW,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,EAAE,aAAa,EAAE;QACjF,eAAe,EAAE;YACf,OAAO,EAAE,WAAW;YACpB,SAAS,EAAE,QAAQ;YACnB,MAAM,EAAE,sBAAsB;YAC9B,wBAAwB,EAAE,QAAQ;SACnC;QACD,MAAM,EAAE,EAAE,OAAO,EAAE,WAAW,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,EAAE,oBAAoB,EAAE;KACpF;IACD,gBAAgB,EAAE;QAChB,IAAI,EAAE;YACJ,OAAO,EAAE,WAAW;YACpB,MAAM,EAAE,EAAE,SAAS,EAAE,CAAC,SAAS,EAAE,KAAK,CAAC,EAAE,SAAS,EAAE,OAAO,EAAE;YAC7D,UAAU,EAAE,EAAE,SAAS,EAAE,CAAC,SAAS,EAAE,KAAK,EAAE,KAAK,CAAC,EAAE,SAAS,EAAE,QAAQ,EAAE;YACzE,MAAM,EAAE,EAAE,SAAS,EAAE,CAAC,KAAK,CAAC,EAAE,SAAS,EAAE,QAAQ,EAAE,iBAAiB,EAAE,oBAAoB,EAAE;SAC7F;QACD,iBAAiB,EAAE;YACjB,OAAO,EAAE,WAAW;YACpB,SAAS,EAAE,OAAO;YAClB,wBAAwB,EAAE,QAAQ;YAClC,SAAS,EAAE,CAAC,SAAS,EAAE,KAAK,CAAC;YAC7B,WAAW,EAAE,cAAc;YAC3B,MAAM,EAAE,cAAc;YACtB,gBAAgB,EAAE,CAAC,OAAO,EAAE,aAAa,EAAE,mBAAmB,EAAE,mBAAmB,CAAC;YACpF,OAAO,EAAE;gBACP,aAAa,EAAE,cAAc;gBAC7B,oBAAoB,EAAE,sCAAsC;aAC7D;SACF;QACD,SAAS,EAAE,EAAE,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/metadata/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import type { AppNavigatorManifest } from '@ankhorage/contracts/navigator';
|
|
2
|
+
import type { CustomNavigatorRegistry } from '../custom/CustomNavigatorRegistry';
|
|
3
|
+
import type { NavigatorDiagnostic, NavigatorValidationContext } from '../definitions/NavigatorPlan';
|
|
4
|
+
/*** Validate all deliberately registered custom navigator extension nodes. */
|
|
5
|
+
export declare function addCustomNavigatorDiagnostics(diagnostics: NavigatorDiagnostic[], manifest: AppNavigatorManifest, context: NavigatorValidationContext, routerMajor: number | undefined, registry: CustomNavigatorRegistry | undefined): void;
|
|
6
|
+
//# sourceMappingURL=validateCustomNavigator.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"validateCustomNavigator.d.ts","sourceRoot":"","sources":["../../src/validation/validateCustomNavigator.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,oBAAoB,EAAiB,MAAM,gCAAgC,CAAC;AAE1F,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,mCAAmC,CAAC;AACjF,OAAO,KAAK,EAAE,mBAAmB,EAAE,0BAA0B,EAAE,MAAM,8BAA8B,CAAC;AAwIpG,8EAA8E;AAC9E,wBAAgB,6BAA6B,CAC3C,WAAW,EAAE,mBAAmB,EAAE,EAClC,QAAQ,EAAE,oBAAoB,EAC9B,OAAO,EAAE,0BAA0B,EACnC,WAAW,EAAE,MAAM,GAAG,SAAS,EAC/B,QAAQ,EAAE,uBAAuB,GAAG,SAAS,GAC5C,IAAI,CAEN"}
|
|
@@ -0,0 +1,106 @@
|
|
|
1
|
+
/*** Validate finite JSON manifest data without accepting functions, symbols, cycles, or prototypes. */
|
|
2
|
+
function isPortableConfig(value, ancestors) {
|
|
3
|
+
if (value === null || typeof value === 'string' || typeof value === 'boolean')
|
|
4
|
+
return true;
|
|
5
|
+
if (typeof value === 'number')
|
|
6
|
+
return Number.isFinite(value);
|
|
7
|
+
if (typeof value !== 'object' || ancestors.has(value))
|
|
8
|
+
return false;
|
|
9
|
+
if (Array.isArray(value)) {
|
|
10
|
+
if (Object.keys(value).length !== value.length ||
|
|
11
|
+
Object.getOwnPropertySymbols(value).length > 0) {
|
|
12
|
+
return false;
|
|
13
|
+
}
|
|
14
|
+
}
|
|
15
|
+
else {
|
|
16
|
+
const prototype = Object.getPrototypeOf(value);
|
|
17
|
+
if (prototype !== Object.prototype && prototype !== null)
|
|
18
|
+
return false;
|
|
19
|
+
if (Reflect.ownKeys(value).some((key) => typeof key !== 'string'))
|
|
20
|
+
return false;
|
|
21
|
+
}
|
|
22
|
+
ancestors.add(value);
|
|
23
|
+
const valid = Object.values(value).every((entry) => isPortableConfig(entry, ancestors));
|
|
24
|
+
ancestors.delete(value);
|
|
25
|
+
return valid;
|
|
26
|
+
}
|
|
27
|
+
/*** Add platform and Expo Router compatibility diagnostics for one registered extension. */
|
|
28
|
+
function addCompatibilityDiagnostics(diagnostics, node, pointer, context, routerMajor, registration) {
|
|
29
|
+
if (!registration.platforms.includes(context.platform)) {
|
|
30
|
+
diagnostics.push({
|
|
31
|
+
code: 'unsupported-custom-navigator-platform',
|
|
32
|
+
severity: 'error',
|
|
33
|
+
path: `${pointer}/navigatorId`,
|
|
34
|
+
message: `Custom navigator ${JSON.stringify(node.navigatorId)} does not support ${context.platform}.`,
|
|
35
|
+
});
|
|
36
|
+
}
|
|
37
|
+
if (routerMajor !== undefined && routerMajor < 56) {
|
|
38
|
+
diagnostics.push({
|
|
39
|
+
code: 'unsupported-expo-router-version',
|
|
40
|
+
severity: 'error',
|
|
41
|
+
path: `${pointer}/navigatorId`,
|
|
42
|
+
message: 'Registered custom navigators require Expo Router 56.0.0 or newer.',
|
|
43
|
+
});
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
/*** Run one registration's schema-specific validator after the portable JSON boundary. */
|
|
47
|
+
function addConfigDiagnostics(diagnostics, node, pointer, registration) {
|
|
48
|
+
if (!isPortableConfig(node.config ?? {}, new Set())) {
|
|
49
|
+
diagnostics.push({
|
|
50
|
+
code: 'invalid-custom-navigator-config',
|
|
51
|
+
severity: 'error',
|
|
52
|
+
path: `${pointer}/config`,
|
|
53
|
+
message: 'Custom navigator config must contain finite JSON data only.',
|
|
54
|
+
});
|
|
55
|
+
return;
|
|
56
|
+
}
|
|
57
|
+
try {
|
|
58
|
+
for (const issue of registration.validateConfig(node.config)) {
|
|
59
|
+
diagnostics.push({
|
|
60
|
+
code: issue.code,
|
|
61
|
+
severity: 'error',
|
|
62
|
+
path: `${pointer}/config${issue.path ?? ''}`,
|
|
63
|
+
message: issue.message,
|
|
64
|
+
});
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
catch (error) {
|
|
68
|
+
diagnostics.push({
|
|
69
|
+
code: 'custom-navigator-validator-failed',
|
|
70
|
+
severity: 'error',
|
|
71
|
+
path: `${pointer}/config`,
|
|
72
|
+
message: `Custom navigator config validator failed: ${error instanceof Error ? error.message : String(error)}`,
|
|
73
|
+
});
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
/*** Add registry, platform, version, and schema diagnostics for one custom navigator node. */
|
|
77
|
+
function addCustomNodeDiagnostics(diagnostics, node, pointer, context, routerMajor, registry) {
|
|
78
|
+
const registration = registry?.[node.navigatorId];
|
|
79
|
+
if (registration === undefined) {
|
|
80
|
+
diagnostics.push({
|
|
81
|
+
code: 'unregistered-custom-navigator',
|
|
82
|
+
severity: 'error',
|
|
83
|
+
path: `${pointer}/navigatorId`,
|
|
84
|
+
message: `Custom navigator ${JSON.stringify(node.navigatorId)} is not registered.`,
|
|
85
|
+
});
|
|
86
|
+
return;
|
|
87
|
+
}
|
|
88
|
+
addCompatibilityDiagnostics(diagnostics, node, pointer, context, routerMajor, registration);
|
|
89
|
+
addConfigDiagnostics(diagnostics, node, pointer, registration);
|
|
90
|
+
}
|
|
91
|
+
/*** Traverse custom navigator extensions independently from built-in navigator option policy. */
|
|
92
|
+
function validateCustomTree(diagnostics, node, pointer, context, routerMajor, registry) {
|
|
93
|
+
if (node.type === 'custom') {
|
|
94
|
+
addCustomNodeDiagnostics(diagnostics, node, pointer, context, routerMajor, registry);
|
|
95
|
+
}
|
|
96
|
+
for (const [index, route] of node.routes.entries()) {
|
|
97
|
+
if (route.navigator !== undefined) {
|
|
98
|
+
validateCustomTree(diagnostics, route.navigator, `${pointer}/routes/${index}/navigator`, context, routerMajor, registry);
|
|
99
|
+
}
|
|
100
|
+
}
|
|
101
|
+
}
|
|
102
|
+
/*** Validate all deliberately registered custom navigator extension nodes. */
|
|
103
|
+
export function addCustomNavigatorDiagnostics(diagnostics, manifest, context, routerMajor, registry) {
|
|
104
|
+
validateCustomTree(diagnostics, manifest, '', context, routerMajor, registry);
|
|
105
|
+
}
|
|
106
|
+
//# sourceMappingURL=validateCustomNavigator.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"validateCustomNavigator.js","sourceRoot":"","sources":["../../src/validation/validateCustomNavigator.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import type { AppNavigatorManifest } from '@ankhorage/contracts/navigator';
|
|
2
|
+
import type { CustomNavigatorRegistry } from '../custom/CustomNavigatorRegistry';
|
|
2
3
|
import type { NavigatorDiagnostic, NavigatorValidationContext } from '../definitions/NavigatorPlan';
|
|
3
4
|
/*** Validate one navigator desired-state slice for a concrete Expo Router target. */
|
|
4
|
-
export declare function validateNavigatorManifest(manifest: AppNavigatorManifest, context: NavigatorValidationContext): readonly NavigatorDiagnostic[];
|
|
5
|
+
export declare function validateNavigatorManifest(manifest: AppNavigatorManifest, context: NavigatorValidationContext, customNavigators?: CustomNavigatorRegistry): readonly NavigatorDiagnostic[];
|
|
5
6
|
//# sourceMappingURL=validateNavigatorManifest.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"validateNavigatorManifest.d.ts","sourceRoot":"","sources":["../../src/validation/validateNavigatorManifest.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,oBAAoB,EAIrB,MAAM,gCAAgC,CAAC;AAExC,OAAO,KAAK,EAAE,mBAAmB,EAAE,0BAA0B,EAAE,MAAM,8BAA8B,CAAC;
|
|
1
|
+
{"version":3,"file":"validateNavigatorManifest.d.ts","sourceRoot":"","sources":["../../src/validation/validateNavigatorManifest.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,oBAAoB,EAIrB,MAAM,gCAAgC,CAAC;AAExC,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,mCAAmC,CAAC;AACjF,OAAO,KAAK,EAAE,mBAAmB,EAAE,0BAA0B,EAAE,MAAM,8BAA8B,CAAC;AAwNpG,qFAAqF;AACrF,wBAAgB,yBAAyB,CACvC,QAAQ,EAAE,oBAAoB,EAC9B,OAAO,EAAE,0BAA0B,EACnC,gBAAgB,CAAC,EAAE,uBAAuB,GACzC,SAAS,mBAAmB,EAAE,CAsBhC"}
|
|
@@ -1,6 +1,8 @@
|
|
|
1
1
|
import { parseExpoRouterMajor, resolveEffectiveStackConfig, } from '../expo-router/resolveNavigatorConfig';
|
|
2
|
+
import { addCustomNavigatorDiagnostics } from './validateCustomNavigator';
|
|
2
3
|
import { addExperimentalStackDiagnostics } from './validateExperimentalStack';
|
|
3
4
|
import { validatePresetTopology } from './validatePresetTopology';
|
|
5
|
+
import { addSplitViewDiagnostics } from './validateSplitView';
|
|
4
6
|
import { addTabsAdapterDiagnostics } from './validateTabsNavigator';
|
|
5
7
|
function addStackAdapterDiagnostics(diagnostics, manifest, node, pointer, context, routerMajor) {
|
|
6
8
|
const config = resolveEffectiveStackConfig(manifest, node, context.platform);
|
|
@@ -21,14 +23,6 @@ function addUnsupportedAdapterDiagnostics(diagnostics, manifest, node, pointer,
|
|
|
21
23
|
if (node.type === 'tabs') {
|
|
22
24
|
addTabsAdapterDiagnostics(diagnostics, manifest, node, pointer, context, routerMajor);
|
|
23
25
|
}
|
|
24
|
-
if (node.type === 'split-view' || node.type === 'custom') {
|
|
25
|
-
diagnostics.push({
|
|
26
|
-
code: 'adapter-unavailable',
|
|
27
|
-
severity: 'error',
|
|
28
|
-
path: pointer,
|
|
29
|
-
message: `${node.type === 'split-view' ? 'Split View' : 'Custom navigator'} is not available in the core Navigator release.`,
|
|
30
|
-
});
|
|
31
|
-
}
|
|
32
26
|
}
|
|
33
27
|
function validateInitialRoute(diagnostics, node, pointer) {
|
|
34
28
|
if (node.type === 'slot' && node.initialRouteName !== undefined) {
|
|
@@ -142,7 +136,7 @@ function validateNode(diagnostics, manifest, node, pointer, context, routerMajor
|
|
|
142
136
|
}
|
|
143
137
|
}
|
|
144
138
|
/*** Validate one navigator desired-state slice for a concrete Expo Router target. */
|
|
145
|
-
export function validateNavigatorManifest(manifest, context) {
|
|
139
|
+
export function validateNavigatorManifest(manifest, context, customNavigators) {
|
|
146
140
|
const diagnostics = [];
|
|
147
141
|
const routerMajor = parseExpoRouterMajor(context.expoRouterVersion);
|
|
148
142
|
if (routerMajor === undefined) {
|
|
@@ -156,6 +150,8 @@ export function validateNavigatorManifest(manifest, context) {
|
|
|
156
150
|
validatePresetTopology(diagnostics, manifest);
|
|
157
151
|
validateNode(diagnostics, manifest, manifest, '', context, routerMajor);
|
|
158
152
|
addExperimentalStackDiagnostics(diagnostics, manifest, context, routerMajor);
|
|
153
|
+
addSplitViewDiagnostics(diagnostics, manifest, context, routerMajor);
|
|
154
|
+
addCustomNavigatorDiagnostics(diagnostics, manifest, context, routerMajor, customNavigators);
|
|
159
155
|
return diagnostics.sort((left, right) => `${left.path}\0${left.code}\0${left.message}`.localeCompare(`${right.path}\0${right.code}\0${right.message}`));
|
|
160
156
|
}
|
|
161
157
|
//# sourceMappingURL=validateNavigatorManifest.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"validateNavigatorManifest.js","sourceRoot":"","sources":["../../src/validation/validateNavigatorManifest.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"validateNavigatorManifest.js","sourceRoot":"","sources":["../../src/validation/validateNavigatorManifest.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import type { AppNavigatorManifest } from '@ankhorage/contracts/navigator';
|
|
2
|
+
import type { NavigatorDiagnostic, NavigatorValidationContext } from '../definitions/NavigatorPlan';
|
|
3
|
+
/*** Add constrained placement, binding, flow, version, and fallback diagnostics for Split View. */
|
|
4
|
+
export declare function addSplitViewDiagnostics(diagnostics: NavigatorDiagnostic[], manifest: AppNavigatorManifest, context: NavigatorValidationContext, routerMajor: number | undefined): void;
|
|
5
|
+
//# sourceMappingURL=validateSplitView.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"validateSplitView.d.ts","sourceRoot":"","sources":["../../src/validation/validateSplitView.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,oBAAoB,EAIrB,MAAM,gCAAgC,CAAC;AAExC,OAAO,KAAK,EAAE,mBAAmB,EAAE,0BAA0B,EAAE,MAAM,8BAA8B,CAAC;AA8HpG,mGAAmG;AACnG,wBAAgB,uBAAuB,CACrC,WAAW,EAAE,mBAAmB,EAAE,EAClC,QAAQ,EAAE,oBAAoB,EAC9B,OAAO,EAAE,0BAA0B,EACnC,WAAW,EAAE,MAAM,GAAG,SAAS,GAC9B,IAAI,CAwCN"}
|
|
@@ -0,0 +1,138 @@
|
|
|
1
|
+
const COLLAPSE_COLUMNS = new Set(['primary', 'supplementary', 'secondary']);
|
|
2
|
+
/*** Collect every Split View together with its parent topology and manifest pointer. */
|
|
3
|
+
function collectSplitViews(node, pointer, ancestors) {
|
|
4
|
+
const current = node.type === 'split-view' ? [{ ancestors, node, pointer }] : [];
|
|
5
|
+
return [
|
|
6
|
+
...current,
|
|
7
|
+
...node.routes.flatMap((route, index) => route.navigator === undefined
|
|
8
|
+
? []
|
|
9
|
+
: collectSplitViews(route.navigator, `${pointer}/routes/${index}/navigator`, [
|
|
10
|
+
...ancestors,
|
|
11
|
+
node.type,
|
|
12
|
+
])),
|
|
13
|
+
];
|
|
14
|
+
}
|
|
15
|
+
/*** Reject invalid or unavailable iPhone collapse-column selections. */
|
|
16
|
+
function addCollapseColumnDiagnostics(diagnostics, { node, pointer }) {
|
|
17
|
+
const collapseColumn = node.topColumnForCollapsing;
|
|
18
|
+
if (collapseColumn !== undefined && !COLLAPSE_COLUMNS.has(collapseColumn)) {
|
|
19
|
+
diagnostics.push({
|
|
20
|
+
code: 'invalid-split-view-collapse-column',
|
|
21
|
+
severity: 'error',
|
|
22
|
+
path: `${pointer}/topColumnForCollapsing`,
|
|
23
|
+
message: 'Split View collapse column must be primary, supplementary, or secondary.',
|
|
24
|
+
});
|
|
25
|
+
}
|
|
26
|
+
if (collapseColumn === 'supplementary' && node.columns.supplementary === undefined) {
|
|
27
|
+
diagnostics.push({
|
|
28
|
+
code: 'missing-split-view-collapse-column',
|
|
29
|
+
severity: 'error',
|
|
30
|
+
path: `${pointer}/topColumnForCollapsing`,
|
|
31
|
+
message: 'topColumnForCollapsing cannot select supplementary without that column.',
|
|
32
|
+
});
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
/*** Reject unresolved, duplicated, or incompatible Split View column references. */
|
|
36
|
+
function addColumnDiagnostics(diagnostics, { node, pointer }) {
|
|
37
|
+
const references = [
|
|
38
|
+
['primary', node.columns.primary.screenId],
|
|
39
|
+
...(node.columns.supplementary === undefined
|
|
40
|
+
? []
|
|
41
|
+
: [['supplementary', node.columns.supplementary.screenId]]),
|
|
42
|
+
...(node.inspector === undefined ? [] : [['inspector', node.inspector.screenId]]),
|
|
43
|
+
];
|
|
44
|
+
const seen = new Set();
|
|
45
|
+
for (const [name, screenId] of references) {
|
|
46
|
+
if (screenId.trim().length === 0) {
|
|
47
|
+
diagnostics.push({
|
|
48
|
+
code: 'invalid-split-view-screen-reference',
|
|
49
|
+
severity: 'error',
|
|
50
|
+
path: `${pointer}/${name === 'inspector' ? 'inspector' : `columns/${name}`}/screenId`,
|
|
51
|
+
message: 'Split View screen references must use a non-empty registered screen id.',
|
|
52
|
+
});
|
|
53
|
+
}
|
|
54
|
+
if (seen.has(screenId)) {
|
|
55
|
+
diagnostics.push({
|
|
56
|
+
code: 'duplicate-split-view-screen-reference',
|
|
57
|
+
severity: 'error',
|
|
58
|
+
path: `${pointer}/${name === 'inspector' ? 'inspector' : `columns/${name}`}/screenId`,
|
|
59
|
+
message: `Split View screen reference ${JSON.stringify(screenId)} is already used by another column.`,
|
|
60
|
+
});
|
|
61
|
+
}
|
|
62
|
+
seen.add(screenId);
|
|
63
|
+
}
|
|
64
|
+
addCollapseColumnDiagnostics(diagnostics, { node, pointer });
|
|
65
|
+
}
|
|
66
|
+
/*** Reject Split View placement and route declarations unsupported by its Slot-based topology. */
|
|
67
|
+
function addTopologyDiagnostics(diagnostics, location) {
|
|
68
|
+
const { ancestors, node, pointer } = location;
|
|
69
|
+
if (ancestors.some((type) => type !== 'slot')) {
|
|
70
|
+
diagnostics.push({
|
|
71
|
+
code: 'invalid-split-view-placement',
|
|
72
|
+
severity: 'error',
|
|
73
|
+
path: pointer,
|
|
74
|
+
message: 'Split View is allowed only at the root or beneath Slot-only ancestry with no other navigator.',
|
|
75
|
+
});
|
|
76
|
+
}
|
|
77
|
+
if (node.initialRouteName !== undefined) {
|
|
78
|
+
diagnostics.push({
|
|
79
|
+
code: 'unsupported-split-view-initial-route',
|
|
80
|
+
severity: 'error',
|
|
81
|
+
path: `${pointer}/initialRouteName`,
|
|
82
|
+
message: 'Split View delegates its routed main content to Slot and cannot set initialRouteName.',
|
|
83
|
+
});
|
|
84
|
+
}
|
|
85
|
+
for (const [index, route] of node.routes.entries()) {
|
|
86
|
+
if ((route.guards ?? []).length === 0)
|
|
87
|
+
continue;
|
|
88
|
+
diagnostics.push({
|
|
89
|
+
code: 'unsupported-split-view-guard',
|
|
90
|
+
severity: 'error',
|
|
91
|
+
path: `${pointer}/routes/${index}/guards`,
|
|
92
|
+
message: 'Split View uses a Slot fallback and cannot register protected route entries.',
|
|
93
|
+
});
|
|
94
|
+
}
|
|
95
|
+
}
|
|
96
|
+
/*** Add constrained placement, binding, flow, version, and fallback diagnostics for Split View. */
|
|
97
|
+
export function addSplitViewDiagnostics(diagnostics, manifest, context, routerMajor) {
|
|
98
|
+
const locations = collectSplitViews(manifest, '', []);
|
|
99
|
+
if (locations.length === 0)
|
|
100
|
+
return;
|
|
101
|
+
for (const location of locations) {
|
|
102
|
+
addTopologyDiagnostics(diagnostics, location);
|
|
103
|
+
addColumnDiagnostics(diagnostics, location);
|
|
104
|
+
}
|
|
105
|
+
for (const location of locations.slice(1)) {
|
|
106
|
+
diagnostics.push({
|
|
107
|
+
code: 'multiple-split-views',
|
|
108
|
+
severity: 'error',
|
|
109
|
+
path: location.pointer,
|
|
110
|
+
message: 'Only one Split View may exist in the app navigator hierarchy.',
|
|
111
|
+
});
|
|
112
|
+
}
|
|
113
|
+
if (manifest.flows?.authentication === true || manifest.flows?.onboarding === true) {
|
|
114
|
+
diagnostics.push({
|
|
115
|
+
code: 'unsupported-split-view-flow-wrapper',
|
|
116
|
+
severity: 'error',
|
|
117
|
+
path: '/flows',
|
|
118
|
+
message: 'Split View cannot synthesize a root Stack wrapper for onboarding or authentication.',
|
|
119
|
+
});
|
|
120
|
+
}
|
|
121
|
+
if (routerMajor !== undefined && routerMajor < 55) {
|
|
122
|
+
diagnostics.push({
|
|
123
|
+
code: 'unsupported-expo-router-version',
|
|
124
|
+
severity: 'error',
|
|
125
|
+
path: locations[0]?.pointer ?? '',
|
|
126
|
+
message: 'Split View requires Expo Router 55.0.0 or newer.',
|
|
127
|
+
});
|
|
128
|
+
}
|
|
129
|
+
if (context.platform !== 'ios') {
|
|
130
|
+
diagnostics.push({
|
|
131
|
+
code: 'split-view-slot-fallback',
|
|
132
|
+
severity: 'warning',
|
|
133
|
+
path: locations[0]?.pointer ?? '',
|
|
134
|
+
message: `Split View renders Expo Router Slot on ${context.platform}; URLs and history remain routed without split-pane presentation.`,
|
|
135
|
+
});
|
|
136
|
+
}
|
|
137
|
+
}
|
|
138
|
+
//# sourceMappingURL=validateSplitView.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"validateSplitView.js","sourceRoot":"","sources":["../../src/validation/validateSplitView.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED