@ankhorage/contracts 9.0.0 → 10.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 +13 -0
- package/dist/appManifest/icon.d.ts +3 -0
- package/dist/appManifest/icon.d.ts.map +1 -0
- package/dist/appManifest/icon.js +20 -0
- package/dist/appManifest/icon.js.map +1 -0
- package/dist/appManifest/infra.d.ts.map +1 -1
- package/dist/appManifest/infra.js +1 -9
- package/dist/appManifest/infra.js.map +1 -1
- package/dist/appManifest/screens.d.ts +2 -1
- package/dist/appManifest/screens.d.ts.map +1 -1
- package/dist/appManifest/screens.js +101 -16
- package/dist/appManifest/screens.js.map +1 -1
- package/dist/appManifest.js +2 -2
- package/dist/appManifest.js.map +1 -1
- package/dist/index.d.ts +1 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -0
- package/dist/index.js.map +1 -1
- package/dist/navigator.d.ts +96 -0
- package/dist/navigator.d.ts.map +1 -0
- package/dist/navigator.js +24 -0
- package/dist/navigator.js.map +1 -0
- package/dist/types.d.ts +16 -30
- package/dist/types.d.ts.map +1 -1
- package/dist/types.js +0 -1
- package/dist/types.js.map +1 -1
- package/package.json +6 -1
- package/src/appManifest/icon.ts +26 -0
- package/src/appManifest/infra.ts +1 -12
- package/src/appManifest/screens.ts +140 -16
- package/src/appManifest.ts +2 -2
- package/src/index.ts +1 -0
- package/src/navigator.test.ts +144 -0
- package/src/navigator.ts +136 -0
- package/src/types.ts +18 -33
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,18 @@
|
|
|
1
1
|
# @ankhorage/contracts
|
|
2
2
|
|
|
3
|
+
## 10.1.0
|
|
4
|
+
|
|
5
|
+
### Minor Changes
|
|
6
|
+
|
|
7
|
+
- 958b0a2: Allow manifest icon specifications to reference SVG media assets through a mutually exclusive
|
|
8
|
+
`source` branch.
|
|
9
|
+
|
|
10
|
+
## 10.0.0
|
|
11
|
+
|
|
12
|
+
### Major Changes
|
|
13
|
+
|
|
14
|
+
- 8835ea2: Replace the legacy `NavigatorSpec` contract with the focused `AppNavigatorManifest` slice, publish it through `@ankhorage/contracts/navigator`, and add typed topology presets plus adaptive, JavaScript, native, and custom tab implementation/presentation desired state.
|
|
15
|
+
|
|
3
16
|
## 9.0.0
|
|
4
17
|
|
|
5
18
|
### Major Changes
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"icon.d.ts","sourceRoot":"","sources":["../../src/appManifest/icon.ts"],"names":[],"mappings":"AAGA,4FAA4F;AAC5F,wBAAgB,UAAU,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO,CAqBlD"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import { isMediaAssetReference } from '../media';
|
|
2
|
+
import { isOptionalString, isRecord } from './shared';
|
|
3
|
+
/*** Validate a serializable icon as either a named font glyph or an SVG media reference. */
|
|
4
|
+
export function isIconSpec(value) {
|
|
5
|
+
if (!isRecord(value))
|
|
6
|
+
return false;
|
|
7
|
+
const hasValidPresentation = (value.size === undefined ||
|
|
8
|
+
typeof value.size === 'string' ||
|
|
9
|
+
typeof value.size === 'number') &&
|
|
10
|
+
isOptionalString(value.color);
|
|
11
|
+
if (!hasValidPresentation)
|
|
12
|
+
return false;
|
|
13
|
+
if ('source' in value) {
|
|
14
|
+
return (isMediaAssetReference(value.source) &&
|
|
15
|
+
value.name === undefined &&
|
|
16
|
+
value.provider === undefined);
|
|
17
|
+
}
|
|
18
|
+
return (typeof value.name === 'string' && isOptionalString(value.provider) && value.source === undefined);
|
|
19
|
+
}
|
|
20
|
+
//# sourceMappingURL=icon.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"icon.js","sourceRoot":"","sources":["../../src/appManifest/icon.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,qBAAqB,EAAE,MAAM,UAAU,CAAC;AACjD,OAAO,EAAE,gBAAgB,EAAE,QAAQ,EAAE,MAAM,UAAU,CAAC;AAEtD,4FAA4F;AAC5F,MAAM,UAAU,UAAU,CAAC,KAAc;IACvC,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC;QAAE,OAAO,KAAK,CAAC;IAEnC,MAAM,oBAAoB,GACxB,CAAC,KAAK,CAAC,IAAI,KAAK,SAAS;QACvB,OAAO,KAAK,CAAC,IAAI,KAAK,QAAQ;QAC9B,OAAO,KAAK,CAAC,IAAI,KAAK,QAAQ,CAAC;QACjC,gBAAgB,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;IAChC,IAAI,CAAC,oBAAoB;QAAE,OAAO,KAAK,CAAC;IAExC,IAAI,QAAQ,IAAI,KAAK,EAAE,CAAC;QACtB,OAAO,CACL,qBAAqB,CAAC,KAAK,CAAC,MAAM,CAAC;YACnC,KAAK,CAAC,IAAI,KAAK,SAAS;YACxB,KAAK,CAAC,QAAQ,KAAK,SAAS,CAC7B,CAAC;IACJ,CAAC;IAED,OAAO,CACL,OAAO,KAAK,CAAC,IAAI,KAAK,QAAQ,IAAI,gBAAgB,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,KAAK,CAAC,MAAM,KAAK,SAAS,CACjG,CAAC;AACJ,CAAC","sourcesContent":["import { isMediaAssetReference } from '../media';\nimport { isOptionalString, isRecord } from './shared';\n\n/*** Validate a serializable icon as either a named font glyph or an SVG media reference. */\nexport function isIconSpec(value: unknown): boolean {\n if (!isRecord(value)) return false;\n\n const hasValidPresentation =\n (value.size === undefined ||\n typeof value.size === 'string' ||\n typeof value.size === 'number') &&\n isOptionalString(value.color);\n if (!hasValidPresentation) return false;\n\n if ('source' in value) {\n return (\n isMediaAssetReference(value.source) &&\n value.name === undefined &&\n value.provider === undefined\n );\n }\n\n return (\n typeof value.name === 'string' && isOptionalString(value.provider) && value.source === undefined\n );\n}\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"infra.d.ts","sourceRoot":"","sources":["../../src/appManifest/infra.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"infra.d.ts","sourceRoot":"","sources":["../../src/appManifest/infra.ts"],"names":[],"mappings":"AAqCA,wBAAgB,eAAe,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO,CAgBvD"}
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { AUTH_OAUTH_PROVIDER_IDS } from '../auth';
|
|
2
2
|
import { AUTH_PROFILE_CREATE_STRATEGIES, AUTH_PROFILE_PRIMARY_KEY_STRATEGIES, AUTH_PROFILE_UPDATE_STRATEGIES, AUTH_SCOPES, AUTH_SIGN_IN_IDENTIFIERS, AUTH_SIGN_UP_POLICIES, AUTHZ_ENGINES, AUTHZ_KINDS, DATABASE_TIERS, STATE_PERSISTENCE_MODES, STORAGE_PROVIDERS, } from '../types';
|
|
3
3
|
import { isApiDefinitionList } from './apis';
|
|
4
|
+
import { isIconSpec } from './icon';
|
|
4
5
|
import { isOptionalBoolean, isOptionalString, isRecord, isStringArray, isStringRecord, } from './shared';
|
|
5
6
|
const AUTH_OAUTH_PROVIDER_SET = new Set(AUTH_OAUTH_PROVIDER_IDS);
|
|
6
7
|
const AUTH_PROFILE_CREATE_STRATEGY_SET = new Set(AUTH_PROFILE_CREATE_STRATEGIES);
|
|
@@ -126,13 +127,4 @@ function isAuthProfileSpec(value) {
|
|
|
126
127
|
(typeof value.updateStrategy === 'string' &&
|
|
127
128
|
AUTH_PROFILE_UPDATE_STRATEGY_SET.has(value.updateStrategy))));
|
|
128
129
|
}
|
|
129
|
-
function isIconSpec(value) {
|
|
130
|
-
return (isRecord(value) &&
|
|
131
|
-
typeof value.name === 'string' &&
|
|
132
|
-
isOptionalString(value.provider) &&
|
|
133
|
-
(value.size === undefined ||
|
|
134
|
-
typeof value.size === 'string' ||
|
|
135
|
-
typeof value.size === 'number') &&
|
|
136
|
-
isOptionalString(value.color));
|
|
137
|
-
}
|
|
138
130
|
//# sourceMappingURL=infra.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"infra.js","sourceRoot":"","sources":["../../src/appManifest/infra.ts"],"names":[],"mappings":"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","sourcesContent":["import { AUTH_OAUTH_PROVIDER_IDS } from '../auth';\nimport {\n AUTH_PROFILE_CREATE_STRATEGIES,\n AUTH_PROFILE_PRIMARY_KEY_STRATEGIES,\n AUTH_PROFILE_UPDATE_STRATEGIES,\n AUTH_SCOPES,\n AUTH_SIGN_IN_IDENTIFIERS,\n AUTH_SIGN_UP_POLICIES,\n AUTHZ_ENGINES,\n AUTHZ_KINDS,\n DATABASE_TIERS,\n STATE_PERSISTENCE_MODES,\n STORAGE_PROVIDERS,\n} from '../types';\nimport { isApiDefinitionList } from './apis';\nimport {\n isOptionalBoolean,\n isOptionalString,\n isRecord,\n isStringArray,\n isStringRecord,\n} from './shared';\n\nconst AUTH_OAUTH_PROVIDER_SET = new Set<string>(AUTH_OAUTH_PROVIDER_IDS);\nconst AUTH_PROFILE_CREATE_STRATEGY_SET = new Set<string>(AUTH_PROFILE_CREATE_STRATEGIES);\nconst AUTH_PROFILE_PRIMARY_KEY_STRATEGY_SET = new Set<string>(AUTH_PROFILE_PRIMARY_KEY_STRATEGIES);\nconst AUTH_PROFILE_UPDATE_STRATEGY_SET = new Set<string>(AUTH_PROFILE_UPDATE_STRATEGIES);\nconst AUTH_SCOPE_SET = new Set<string>(AUTH_SCOPES);\nconst AUTH_SIGN_IN_IDENTIFIER_SET = new Set<string>(AUTH_SIGN_IN_IDENTIFIERS);\nconst AUTH_SIGN_UP_POLICY_SET = new Set<string>(AUTH_SIGN_UP_POLICIES);\nconst AUTHZ_ENGINE_SET = new Set<string>(AUTHZ_ENGINES);\nconst AUTHZ_KIND_SET = new Set<string>(AUTHZ_KINDS);\nconst DATABASE_TIER_SET = new Set<string>(DATABASE_TIERS);\nconst STATE_PERSISTENCE_MODE_SET = new Set<string>(STATE_PERSISTENCE_MODES);\nconst STORAGE_PROVIDER_SET = new Set<string>(STORAGE_PROVIDERS);\n\nexport function isInfraManifest(value: unknown): boolean {\n return (\n isRecord(value) &&\n (value.deployment === undefined || isDeploymentSpec(value.deployment)) &&\n (value.auth === undefined || isAuthSpec(value.auth)) &&\n (value.database === undefined || isDatabaseSpec(value.database)) &&\n (value.storage === undefined || isStorageSpec(value.storage)) &&\n (value.state === undefined || isStateSpec(value.state)) &&\n (value.networking === undefined || isNetworkingSpec(value.networking)) &&\n (value.apis === undefined || isApiDefinitionList(value.apis)) &&\n Array.isArray(value.modules) &&\n value.modules.every((moduleId) => typeof moduleId === 'string') &&\n (value.modulesConfig === undefined || isRecord(value.modulesConfig)) &&\n !('plugins' in value) &&\n !('pluginsConfig' in value)\n );\n}\n\nfunction isDeploymentSpec(value: unknown): boolean {\n return (\n isRecord(value) && typeof value.target === 'string' && typeof value.monitoring === 'boolean'\n );\n}\n\nfunction isDatabaseSpec(value: unknown): boolean {\n return (\n isRecord(value) &&\n typeof value.provider === 'string' &&\n typeof value.tier === 'string' &&\n DATABASE_TIER_SET.has(value.tier)\n );\n}\n\nfunction isStorageSpec(value: unknown): boolean {\n return (\n isRecord(value) &&\n typeof value.provider === 'string' &&\n STORAGE_PROVIDER_SET.has(value.provider) &&\n isStringArray(value.buckets)\n );\n}\n\nfunction isStateSpec(value: unknown): boolean {\n return (\n isRecord(value) &&\n typeof value.provider === 'string' &&\n (value.persistence === undefined ||\n (typeof value.persistence === 'string' && STATE_PERSISTENCE_MODE_SET.has(value.persistence)))\n );\n}\n\nfunction isNetworkingSpec(value: unknown): boolean {\n return isRecord(value) && isOptionalString(value.domain) && typeof value.cdn === 'boolean';\n}\n\nfunction isAuthSpec(value: unknown): boolean {\n return (\n isRecord(value) &&\n typeof value.scope === 'string' &&\n AUTH_SCOPE_SET.has(value.scope) &&\n typeof value.provider === 'string' &&\n (value.authorization === undefined || isAuthzSpec(value.authorization)) &&\n (value.flow === undefined || isAuthFlow(value.flow)) &&\n (value.signIn === undefined || isAuthSignInSpec(value.signIn)) &&\n (value.signUp === undefined || isAuthSignUpSpec(value.signUp)) &&\n (value.oauth === undefined || isAuthOAuthConfig(value.oauth)) &&\n (value.profile === undefined || isAuthProfileSpec(value.profile))\n );\n}\n\nfunction isAuthzSpec(value: unknown): boolean {\n return (\n isRecord(value) &&\n typeof value.kind === 'string' &&\n AUTHZ_KIND_SET.has(value.kind) &&\n typeof value.engine === 'string' &&\n AUTHZ_ENGINE_SET.has(value.engine)\n );\n}\n\nfunction isAuthFlow(value: unknown): boolean {\n return (\n isRecord(value) &&\n typeof value.signInRoute === 'string' &&\n isOptionalString(value.signUpRoute) &&\n isOptionalString(value.signOutRoute) &&\n isOptionalString(value.forgotPasswordRoute) &&\n isOptionalString(value.otpRoute) &&\n typeof value.postSignInRoute === 'string' &&\n isOptionalString(value.unauthorizedRoute)\n );\n}\n\nfunction isAuthSignInSpec(value: unknown): boolean {\n return (\n isRecord(value) &&\n Array.isArray(value.identifiers) &&\n value.identifiers.every(\n (identifier) => typeof identifier === 'string' && AUTH_SIGN_IN_IDENTIFIER_SET.has(identifier),\n )\n );\n}\n\nfunction isAuthSignUpSpec(value: unknown): boolean {\n return (\n isRecord(value) &&\n isStringArray(value.requiredFields) &&\n (value.optionalFields === undefined || isStringArray(value.optionalFields)) &&\n (value.signUpPolicy === undefined ||\n (typeof value.signUpPolicy === 'string' && AUTH_SIGN_UP_POLICY_SET.has(value.signUpPolicy)))\n );\n}\n\nfunction isAuthOAuthConfig(value: unknown): boolean {\n return (\n isRecord(value) &&\n typeof value.enabled === 'boolean' &&\n typeof value.callbackRoute === 'string' &&\n Array.isArray(value.providers) &&\n value.providers.every(isAuthOAuthProviderConfig)\n );\n}\n\nfunction isAuthOAuthProviderConfig(value: unknown): boolean {\n return (\n isRecord(value) &&\n typeof value.id === 'string' &&\n (AUTH_OAUTH_PROVIDER_SET.has(value.id) || value.id.length > 0) &&\n isOptionalString(value.label) &&\n isOptionalBoolean(value.enabled) &&\n (value.scopes === undefined || isStringArray(value.scopes)) &&\n (value.queryParams === undefined || isStringRecord(value.queryParams)) &&\n (value.icon === undefined || isIconSpec(value.icon)) &&\n (value.credentialsRef === undefined || typeof value.credentialsRef === 'string')\n );\n}\n\nfunction isAuthProfileSpec(value: unknown): boolean {\n return (\n isRecord(value) &&\n isStringArray(value.fields) &&\n isOptionalString(value.table) &&\n (value.primaryKey === undefined ||\n (typeof value.primaryKey === 'string' &&\n AUTH_PROFILE_PRIMARY_KEY_STRATEGY_SET.has(value.primaryKey))) &&\n (value.createStrategy === undefined ||\n (typeof value.createStrategy === 'string' &&\n AUTH_PROFILE_CREATE_STRATEGY_SET.has(value.createStrategy))) &&\n (value.updateStrategy === undefined ||\n (typeof value.updateStrategy === 'string' &&\n AUTH_PROFILE_UPDATE_STRATEGY_SET.has(value.updateStrategy)))\n );\n}\n\nfunction isIconSpec(value: unknown): boolean {\n return (\n isRecord(value) &&\n typeof value.name === 'string' &&\n isOptionalString(value.provider) &&\n (value.size === undefined ||\n typeof value.size === 'string' ||\n typeof value.size === 'number') &&\n isOptionalString(value.color)\n );\n}\n"]}
|
|
1
|
+
{"version":3,"file":"infra.js","sourceRoot":"","sources":["../../src/appManifest/infra.ts"],"names":[],"mappings":"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","sourcesContent":["import { AUTH_OAUTH_PROVIDER_IDS } from '../auth';\nimport {\n AUTH_PROFILE_CREATE_STRATEGIES,\n AUTH_PROFILE_PRIMARY_KEY_STRATEGIES,\n AUTH_PROFILE_UPDATE_STRATEGIES,\n AUTH_SCOPES,\n AUTH_SIGN_IN_IDENTIFIERS,\n AUTH_SIGN_UP_POLICIES,\n AUTHZ_ENGINES,\n AUTHZ_KINDS,\n DATABASE_TIERS,\n STATE_PERSISTENCE_MODES,\n STORAGE_PROVIDERS,\n} from '../types';\nimport { isApiDefinitionList } from './apis';\nimport { isIconSpec } from './icon';\nimport {\n isOptionalBoolean,\n isOptionalString,\n isRecord,\n isStringArray,\n isStringRecord,\n} from './shared';\n\nconst AUTH_OAUTH_PROVIDER_SET = new Set<string>(AUTH_OAUTH_PROVIDER_IDS);\nconst AUTH_PROFILE_CREATE_STRATEGY_SET = new Set<string>(AUTH_PROFILE_CREATE_STRATEGIES);\nconst AUTH_PROFILE_PRIMARY_KEY_STRATEGY_SET = new Set<string>(AUTH_PROFILE_PRIMARY_KEY_STRATEGIES);\nconst AUTH_PROFILE_UPDATE_STRATEGY_SET = new Set<string>(AUTH_PROFILE_UPDATE_STRATEGIES);\nconst AUTH_SCOPE_SET = new Set<string>(AUTH_SCOPES);\nconst AUTH_SIGN_IN_IDENTIFIER_SET = new Set<string>(AUTH_SIGN_IN_IDENTIFIERS);\nconst AUTH_SIGN_UP_POLICY_SET = new Set<string>(AUTH_SIGN_UP_POLICIES);\nconst AUTHZ_ENGINE_SET = new Set<string>(AUTHZ_ENGINES);\nconst AUTHZ_KIND_SET = new Set<string>(AUTHZ_KINDS);\nconst DATABASE_TIER_SET = new Set<string>(DATABASE_TIERS);\nconst STATE_PERSISTENCE_MODE_SET = new Set<string>(STATE_PERSISTENCE_MODES);\nconst STORAGE_PROVIDER_SET = new Set<string>(STORAGE_PROVIDERS);\n\nexport function isInfraManifest(value: unknown): boolean {\n return (\n isRecord(value) &&\n (value.deployment === undefined || isDeploymentSpec(value.deployment)) &&\n (value.auth === undefined || isAuthSpec(value.auth)) &&\n (value.database === undefined || isDatabaseSpec(value.database)) &&\n (value.storage === undefined || isStorageSpec(value.storage)) &&\n (value.state === undefined || isStateSpec(value.state)) &&\n (value.networking === undefined || isNetworkingSpec(value.networking)) &&\n (value.apis === undefined || isApiDefinitionList(value.apis)) &&\n Array.isArray(value.modules) &&\n value.modules.every((moduleId) => typeof moduleId === 'string') &&\n (value.modulesConfig === undefined || isRecord(value.modulesConfig)) &&\n !('plugins' in value) &&\n !('pluginsConfig' in value)\n );\n}\n\nfunction isDeploymentSpec(value: unknown): boolean {\n return (\n isRecord(value) && typeof value.target === 'string' && typeof value.monitoring === 'boolean'\n );\n}\n\nfunction isDatabaseSpec(value: unknown): boolean {\n return (\n isRecord(value) &&\n typeof value.provider === 'string' &&\n typeof value.tier === 'string' &&\n DATABASE_TIER_SET.has(value.tier)\n );\n}\n\nfunction isStorageSpec(value: unknown): boolean {\n return (\n isRecord(value) &&\n typeof value.provider === 'string' &&\n STORAGE_PROVIDER_SET.has(value.provider) &&\n isStringArray(value.buckets)\n );\n}\n\nfunction isStateSpec(value: unknown): boolean {\n return (\n isRecord(value) &&\n typeof value.provider === 'string' &&\n (value.persistence === undefined ||\n (typeof value.persistence === 'string' && STATE_PERSISTENCE_MODE_SET.has(value.persistence)))\n );\n}\n\nfunction isNetworkingSpec(value: unknown): boolean {\n return isRecord(value) && isOptionalString(value.domain) && typeof value.cdn === 'boolean';\n}\n\nfunction isAuthSpec(value: unknown): boolean {\n return (\n isRecord(value) &&\n typeof value.scope === 'string' &&\n AUTH_SCOPE_SET.has(value.scope) &&\n typeof value.provider === 'string' &&\n (value.authorization === undefined || isAuthzSpec(value.authorization)) &&\n (value.flow === undefined || isAuthFlow(value.flow)) &&\n (value.signIn === undefined || isAuthSignInSpec(value.signIn)) &&\n (value.signUp === undefined || isAuthSignUpSpec(value.signUp)) &&\n (value.oauth === undefined || isAuthOAuthConfig(value.oauth)) &&\n (value.profile === undefined || isAuthProfileSpec(value.profile))\n );\n}\n\nfunction isAuthzSpec(value: unknown): boolean {\n return (\n isRecord(value) &&\n typeof value.kind === 'string' &&\n AUTHZ_KIND_SET.has(value.kind) &&\n typeof value.engine === 'string' &&\n AUTHZ_ENGINE_SET.has(value.engine)\n );\n}\n\nfunction isAuthFlow(value: unknown): boolean {\n return (\n isRecord(value) &&\n typeof value.signInRoute === 'string' &&\n isOptionalString(value.signUpRoute) &&\n isOptionalString(value.signOutRoute) &&\n isOptionalString(value.forgotPasswordRoute) &&\n isOptionalString(value.otpRoute) &&\n typeof value.postSignInRoute === 'string' &&\n isOptionalString(value.unauthorizedRoute)\n );\n}\n\nfunction isAuthSignInSpec(value: unknown): boolean {\n return (\n isRecord(value) &&\n Array.isArray(value.identifiers) &&\n value.identifiers.every(\n (identifier) => typeof identifier === 'string' && AUTH_SIGN_IN_IDENTIFIER_SET.has(identifier),\n )\n );\n}\n\nfunction isAuthSignUpSpec(value: unknown): boolean {\n return (\n isRecord(value) &&\n isStringArray(value.requiredFields) &&\n (value.optionalFields === undefined || isStringArray(value.optionalFields)) &&\n (value.signUpPolicy === undefined ||\n (typeof value.signUpPolicy === 'string' && AUTH_SIGN_UP_POLICY_SET.has(value.signUpPolicy)))\n );\n}\n\nfunction isAuthOAuthConfig(value: unknown): boolean {\n return (\n isRecord(value) &&\n typeof value.enabled === 'boolean' &&\n typeof value.callbackRoute === 'string' &&\n Array.isArray(value.providers) &&\n value.providers.every(isAuthOAuthProviderConfig)\n );\n}\n\nfunction isAuthOAuthProviderConfig(value: unknown): boolean {\n return (\n isRecord(value) &&\n typeof value.id === 'string' &&\n (AUTH_OAUTH_PROVIDER_SET.has(value.id) || value.id.length > 0) &&\n isOptionalString(value.label) &&\n isOptionalBoolean(value.enabled) &&\n (value.scopes === undefined || isStringArray(value.scopes)) &&\n (value.queryParams === undefined || isStringRecord(value.queryParams)) &&\n (value.icon === undefined || isIconSpec(value.icon)) &&\n (value.credentialsRef === undefined || typeof value.credentialsRef === 'string')\n );\n}\n\nfunction isAuthProfileSpec(value: unknown): boolean {\n return (\n isRecord(value) &&\n isStringArray(value.fields) &&\n isOptionalString(value.table) &&\n (value.primaryKey === undefined ||\n (typeof value.primaryKey === 'string' &&\n AUTH_PROFILE_PRIMARY_KEY_STRATEGY_SET.has(value.primaryKey))) &&\n (value.createStrategy === undefined ||\n (typeof value.createStrategy === 'string' &&\n AUTH_PROFILE_CREATE_STRATEGY_SET.has(value.createStrategy))) &&\n (value.updateStrategy === undefined ||\n (typeof value.updateStrategy === 'string' &&\n AUTH_PROFILE_UPDATE_STRATEGY_SET.has(value.updateStrategy)))\n );\n}\n"]}
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
export declare function isManifestMetadata(value: unknown): boolean;
|
|
2
2
|
export declare function isThemeConfig(value: unknown): boolean;
|
|
3
|
-
|
|
3
|
+
/*** Validate the complete serialized `AppManifest.navigator` slice. */
|
|
4
|
+
export declare function isAppNavigatorManifest(value: unknown): boolean;
|
|
4
5
|
export declare function isScreenRegistry(value: unknown): boolean;
|
|
5
6
|
export declare function isSplashScreenSpec(value: unknown): boolean;
|
|
6
7
|
//# sourceMappingURL=screens.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"screens.d.ts","sourceRoot":"","sources":["../../src/appManifest/screens.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"screens.d.ts","sourceRoot":"","sources":["../../src/appManifest/screens.ts"],"names":[],"mappings":"AA6BA,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO,CAY1D;AAED,wBAAgB,aAAa,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO,CAQrD;AAED,uEAAuE;AACvE,wBAAgB,sBAAsB,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO,CAU9D;AAED,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO,CAQxD;AAED,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO,CAM1D"}
|
|
@@ -1,9 +1,15 @@
|
|
|
1
1
|
import { COLOR_HARMONIES } from '@ankhorage/color-theory';
|
|
2
|
-
import {
|
|
2
|
+
import { CUSTOM_TABS_PRESENTATIONS, FIXED_CUSTOM_TABS_PRESENTATIONS, JAVASCRIPT_TABS_PRESENTATIONS, NAVIGATOR_PRESETS, NAVIGATOR_TYPES, } from '../navigator';
|
|
3
|
+
import { APP_CATEGORIES } from '../types';
|
|
3
4
|
import { isBindingValueSource, isScreenDataLoaderDefinition } from './bindings';
|
|
5
|
+
import { isIconSpec } from './icon';
|
|
4
6
|
import { isOptionalBoolean, isOptionalNumber, isOptionalString, isRecord, isStringArray, } from './shared';
|
|
5
7
|
const APP_CATEGORY_SET = new Set(APP_CATEGORIES);
|
|
6
8
|
const COLOR_HARMONY_SET = new Set(COLOR_HARMONIES);
|
|
9
|
+
const CUSTOM_TABS_PRESENTATION_SET = new Set(CUSTOM_TABS_PRESENTATIONS);
|
|
10
|
+
const FIXED_CUSTOM_TABS_PRESENTATION_SET = new Set(FIXED_CUSTOM_TABS_PRESENTATIONS);
|
|
11
|
+
const JAVASCRIPT_TABS_PRESENTATION_SET = new Set(JAVASCRIPT_TABS_PRESENTATIONS);
|
|
12
|
+
const NAVIGATOR_PRESET_SET = new Set(NAVIGATOR_PRESETS);
|
|
7
13
|
const NAVIGATOR_TYPE_SET = new Set(NAVIGATOR_TYPES);
|
|
8
14
|
const SPLASH_SCREEN_RESIZE_MODE_SET = new Set(['contain', 'cover', 'native']);
|
|
9
15
|
export function isManifestMetadata(value) {
|
|
@@ -24,14 +30,15 @@ export function isThemeConfig(value) {
|
|
|
24
30
|
isThemeModeConfig(value.light) &&
|
|
25
31
|
isThemeModeConfig(value.dark));
|
|
26
32
|
}
|
|
27
|
-
|
|
33
|
+
/*** Validate the complete serialized `AppManifest.navigator` slice. */
|
|
34
|
+
export function isAppNavigatorManifest(value) {
|
|
28
35
|
return (isRecord(value) &&
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
value.
|
|
34
|
-
(value.
|
|
36
|
+
isNavigatorNode(value) &&
|
|
37
|
+
(value.preset === undefined ||
|
|
38
|
+
(typeof value.preset === 'string' && NAVIGATOR_PRESET_SET.has(value.preset))) &&
|
|
39
|
+
(value.flows === undefined || isNavigatorFlows(value.flows)) &&
|
|
40
|
+
(value.defaults === undefined || isNavigatorDefaults(value.defaults)) &&
|
|
41
|
+
(value.platforms === undefined || isNavigatorPlatforms(value.platforms)));
|
|
35
42
|
}
|
|
36
43
|
export function isScreenRegistry(value) {
|
|
37
44
|
return (isRecord(value) &&
|
|
@@ -78,6 +85,17 @@ function isScreenSpec(value) {
|
|
|
78
85
|
(value.requires === undefined || isScreenRequirements(value.requires)) &&
|
|
79
86
|
isUiNode(value.root));
|
|
80
87
|
}
|
|
88
|
+
/*** Validate one nested navigator node independently from app-level authoring metadata. */
|
|
89
|
+
function isNavigatorNode(value) {
|
|
90
|
+
return (isRecord(value) &&
|
|
91
|
+
typeof value.type === 'string' &&
|
|
92
|
+
NAVIGATOR_TYPE_SET.has(value.type) &&
|
|
93
|
+
isOptionalString(value.initialRouteName) &&
|
|
94
|
+
Array.isArray(value.routes) &&
|
|
95
|
+
value.routes.every(isRouteDefinition) &&
|
|
96
|
+
(value.options === undefined || isRecord(value.options)) &&
|
|
97
|
+
(value.type !== 'tabs' || isTabsImplementationConfig(value)));
|
|
98
|
+
}
|
|
81
99
|
function isRouteDefinition(value) {
|
|
82
100
|
return (isRecord(value) &&
|
|
83
101
|
typeof value.name === 'string' &&
|
|
@@ -87,16 +105,83 @@ function isRouteDefinition(value) {
|
|
|
87
105
|
isOptionalBoolean(value.showInPrimaryNavigation) &&
|
|
88
106
|
(value.guards === undefined || isStringArray(value.guards)) &&
|
|
89
107
|
isOptionalString(value.screenId) &&
|
|
90
|
-
(value.navigator === undefined ||
|
|
108
|
+
(value.navigator === undefined || isNavigatorNode(value.navigator)));
|
|
109
|
+
}
|
|
110
|
+
/*** Validate tabs implementation desired state, with omitted implementation meaning adaptive. */
|
|
111
|
+
function isTabsImplementationConfig(value) {
|
|
112
|
+
if (value.implementation === undefined || value.implementation === 'adaptive') {
|
|
113
|
+
return ((value.native === undefined || isNativeTabsConfig(value.native)) &&
|
|
114
|
+
(value.web === undefined || isCustomTabsWebConfig(value.web)));
|
|
115
|
+
}
|
|
116
|
+
if (value.implementation === 'native')
|
|
117
|
+
return true;
|
|
118
|
+
if (value.implementation === 'javascript') {
|
|
119
|
+
return (value.presentation === undefined ||
|
|
120
|
+
(typeof value.presentation === 'string' &&
|
|
121
|
+
JAVASCRIPT_TABS_PRESENTATION_SET.has(value.presentation)));
|
|
122
|
+
}
|
|
123
|
+
return value.implementation === 'custom' && isCustomTabsConfig(value);
|
|
91
124
|
}
|
|
92
|
-
|
|
125
|
+
/*** Validate the native branch used by adaptive tabs. */
|
|
126
|
+
function isNativeTabsConfig(value) {
|
|
127
|
+
return isRecord(value) && value.implementation === 'native';
|
|
128
|
+
}
|
|
129
|
+
/*** Validate a full custom-tabs implementation config. */
|
|
130
|
+
function isCustomTabsConfig(value) {
|
|
131
|
+
return value.implementation === 'custom' && isCustomTabsPresentationConfig(value);
|
|
132
|
+
}
|
|
133
|
+
/*** Validate the implementation-free custom-tabs Web branch inside adaptive tabs. */
|
|
134
|
+
function isCustomTabsWebConfig(value) {
|
|
135
|
+
return (isRecord(value) && value.implementation === undefined && isCustomTabsPresentationConfig(value));
|
|
136
|
+
}
|
|
137
|
+
/*** Validate custom-tab presentation and its conditional serializable configuration. */
|
|
138
|
+
function isCustomTabsPresentationConfig(value) {
|
|
139
|
+
if (typeof value.presentation !== 'string' ||
|
|
140
|
+
!CUSTOM_TABS_PRESENTATION_SET.has(value.presentation)) {
|
|
141
|
+
return false;
|
|
142
|
+
}
|
|
143
|
+
if (value.responsive !== undefined && !isResponsiveTabsPresentation(value.responsive)) {
|
|
144
|
+
return false;
|
|
145
|
+
}
|
|
146
|
+
if (!isOptionalString(value.customPresentationId))
|
|
147
|
+
return false;
|
|
148
|
+
if (value.presentation === 'responsive' && value.responsive === undefined)
|
|
149
|
+
return false;
|
|
150
|
+
return (value.presentation !== 'custom' ||
|
|
151
|
+
(typeof value.customPresentationId === 'string' && value.customPresentationId.length > 0));
|
|
152
|
+
}
|
|
153
|
+
/*** Validate semantic compact/medium/expanded custom-tab presentation mapping. */
|
|
154
|
+
function isResponsiveTabsPresentation(value) {
|
|
93
155
|
return (isRecord(value) &&
|
|
94
|
-
typeof value.
|
|
95
|
-
|
|
96
|
-
(value.
|
|
97
|
-
typeof value.
|
|
98
|
-
|
|
99
|
-
|
|
156
|
+
typeof value.compact === 'string' &&
|
|
157
|
+
FIXED_CUSTOM_TABS_PRESENTATION_SET.has(value.compact) &&
|
|
158
|
+
(value.medium === undefined ||
|
|
159
|
+
(typeof value.medium === 'string' && FIXED_CUSTOM_TABS_PRESENTATION_SET.has(value.medium))) &&
|
|
160
|
+
typeof value.expanded === 'string' &&
|
|
161
|
+
FIXED_CUSTOM_TABS_PRESENTATION_SET.has(value.expanded));
|
|
162
|
+
}
|
|
163
|
+
/*** Validate optional app-level navigator flow intent. */
|
|
164
|
+
function isNavigatorFlows(value) {
|
|
165
|
+
return (isRecord(value) &&
|
|
166
|
+
isOptionalBoolean(value.onboarding) &&
|
|
167
|
+
isOptionalBoolean(value.authentication));
|
|
168
|
+
}
|
|
169
|
+
/*** Validate package-owned navigator defaults without requiring a navigator node type. */
|
|
170
|
+
function isNavigatorDefaults(value) {
|
|
171
|
+
return (isRecord(value) &&
|
|
172
|
+
(value.tabs === undefined || (isRecord(value.tabs) && isTabsImplementationConfig(value.tabs))));
|
|
173
|
+
}
|
|
174
|
+
/*** Validate per-platform navigator implementation overrides. */
|
|
175
|
+
function isNavigatorPlatforms(value) {
|
|
176
|
+
return (isRecord(value) &&
|
|
177
|
+
(value.android === undefined || isNavigatorPlatformConfig(value.android)) &&
|
|
178
|
+
(value.ios === undefined || isNavigatorPlatformConfig(value.ios)) &&
|
|
179
|
+
(value.web === undefined || isNavigatorPlatformConfig(value.web)));
|
|
180
|
+
}
|
|
181
|
+
/*** Validate one platform-specific navigator override slice. */
|
|
182
|
+
function isNavigatorPlatformConfig(value) {
|
|
183
|
+
return (isRecord(value) &&
|
|
184
|
+
(value.tabs === undefined || (isRecord(value.tabs) && isTabsImplementationConfig(value.tabs))));
|
|
100
185
|
}
|
|
101
186
|
function isSplashScreenModeSpec(value) {
|
|
102
187
|
return (isRecord(value) &&
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"screens.js","sourceRoot":"","sources":["../../src/appManifest/screens.ts"],"names":[],"mappings":"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","sourcesContent":["import { COLOR_HARMONIES } from '@ankhorage/color-theory';\n\nimport { APP_CATEGORIES, NAVIGATOR_TYPES } from '../types';\nimport { isBindingValueSource, isScreenDataLoaderDefinition } from './bindings';\nimport {\n isOptionalBoolean,\n isOptionalNumber,\n isOptionalString,\n isRecord,\n isStringArray,\n} from './shared';\n\nconst APP_CATEGORY_SET = new Set<string>(APP_CATEGORIES);\nconst COLOR_HARMONY_SET = new Set<string>(COLOR_HARMONIES);\nconst NAVIGATOR_TYPE_SET = new Set<string>(NAVIGATOR_TYPES);\nconst SPLASH_SCREEN_RESIZE_MODE_SET = new Set<string>(['contain', 'cover', 'native']);\n\nexport function isManifestMetadata(value: unknown): boolean {\n return (\n isRecord(value) &&\n typeof value.name === 'string' &&\n typeof value.slug === 'string' &&\n typeof value.version === 'string' &&\n typeof value.category === 'string' &&\n APP_CATEGORY_SET.has(value.category) &&\n typeof value.themeId === 'string' &&\n isOptionalString(value.created) &&\n isOptionalString(value.updated)\n );\n}\n\nexport function isThemeConfig(value: unknown): boolean {\n return (\n isRecord(value) &&\n typeof value.id === 'string' &&\n typeof value.name === 'string' &&\n isThemeModeConfig(value.light) &&\n isThemeModeConfig(value.dark)\n );\n}\n\nexport function isNavigatorSpec(value: unknown): boolean {\n return (\n isRecord(value) &&\n typeof value.type === 'string' &&\n NAVIGATOR_TYPE_SET.has(value.type) &&\n isOptionalString(value.initialRouteName) &&\n Array.isArray(value.routes) &&\n value.routes.every(isRouteDefinition) &&\n (value.options === undefined || isRecord(value.options))\n );\n}\n\nexport function isScreenRegistry(value: unknown): boolean {\n return (\n isRecord(value) &&\n Object.entries(value).every(\n ([registryKey, screen]) =>\n isScreenSpec(screen) && isRecord(screen) && registryKey === screen.id,\n )\n );\n}\n\nexport function isSplashScreenSpec(value: unknown): boolean {\n return (\n isSplashScreenModeSpec(value) &&\n isRecord(value) &&\n (value.dark === undefined || isSplashScreenModeSpec(value.dark))\n );\n}\n\nfunction isThemeModeConfig(value: unknown): boolean {\n return (\n isRecord(value) &&\n typeof value.primaryColor === 'string' &&\n typeof value.harmony === 'string' &&\n COLOR_HARMONY_SET.has(value.harmony)\n );\n}\n\nfunction isUiNode(value: unknown): boolean {\n return (\n isRecord(value) &&\n typeof value.id === 'string' &&\n typeof value.type === 'string' &&\n isOptionalString(value.alias) &&\n (value.props === undefined || isRecord(value.props)) &&\n (value.style === undefined || isRecord(value.style)) &&\n (value.repeat === undefined || isUiNodeRepeatSpec(value.repeat)) &&\n (value.children === undefined ||\n (Array.isArray(value.children) && value.children.every(isUiNode)))\n );\n}\n\nfunction isUiNodeRepeatSpec(value: unknown): boolean {\n return (\n isRecord(value) &&\n isBindingValueSource(value.source) &&\n isOptionalString(value.itemAlias) &&\n isOptionalString(value.keyPath) &&\n (value.empty === undefined || (Array.isArray(value.empty) && value.empty.every(isUiNode)))\n );\n}\n\nfunction isScreenSpec(value: unknown): boolean {\n return (\n isRecord(value) &&\n typeof value.id === 'string' &&\n typeof value.name === 'string' &&\n isOptionalString(value.title) &&\n isOptionalString(value.description) &&\n (value.dataLoaders === undefined ||\n (Array.isArray(value.dataLoaders) &&\n value.dataLoaders.every(isScreenDataLoaderDefinition))) &&\n (value.requires === undefined || isScreenRequirements(value.requires)) &&\n isUiNode(value.root)\n );\n}\n\nfunction isRouteDefinition(value: unknown): boolean {\n return (\n isRecord(value) &&\n typeof value.name === 'string' &&\n isOptionalString(value.path) &&\n isOptionalString(value.label) &&\n (value.icon === undefined || isIconSpec(value.icon)) &&\n isOptionalBoolean(value.showInPrimaryNavigation) &&\n (value.guards === undefined || isStringArray(value.guards)) &&\n isOptionalString(value.screenId) &&\n (value.navigator === undefined || isNavigatorSpec(value.navigator))\n );\n}\n\nfunction isIconSpec(value: unknown): boolean {\n return (\n isRecord(value) &&\n typeof value.name === 'string' &&\n isOptionalString(value.provider) &&\n (value.size === undefined ||\n typeof value.size === 'string' ||\n typeof value.size === 'number') &&\n isOptionalString(value.color)\n );\n}\n\nfunction isSplashScreenModeSpec(value: unknown): boolean {\n return (\n isRecord(value) &&\n isOptionalString(value.image) &&\n isOptionalNumber(value.imageWidth) &&\n (value.resizeMode === undefined ||\n (typeof value.resizeMode === 'string' &&\n SPLASH_SCREEN_RESIZE_MODE_SET.has(value.resizeMode))) &&\n isOptionalString(value.backgroundColor)\n );\n}\n\nfunction isScreenRequirements(value: unknown): boolean {\n return (\n isRecord(value) &&\n (value.permissions === undefined || isRequirementArray(value.permissions, 'permission')) &&\n (value.capabilities === undefined || isRequirementArray(value.capabilities, 'capability'))\n );\n}\n\nfunction isRequirementArray(value: unknown, key: 'capability' | 'permission'): boolean {\n return (\n Array.isArray(value) &&\n value.every((entry) => isRecord(entry) && typeof entry[key] === 'string')\n );\n}\n"]}
|
|
1
|
+
{"version":3,"file":"screens.js","sourceRoot":"","sources":["../../src/appManifest/screens.ts"],"names":[],"mappings":"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","sourcesContent":["import { COLOR_HARMONIES } from '@ankhorage/color-theory';\n\nimport {\n CUSTOM_TABS_PRESENTATIONS,\n FIXED_CUSTOM_TABS_PRESENTATIONS,\n JAVASCRIPT_TABS_PRESENTATIONS,\n NAVIGATOR_PRESETS,\n NAVIGATOR_TYPES,\n} from '../navigator';\nimport { APP_CATEGORIES } from '../types';\nimport { isBindingValueSource, isScreenDataLoaderDefinition } from './bindings';\nimport { isIconSpec } from './icon';\nimport {\n isOptionalBoolean,\n isOptionalNumber,\n isOptionalString,\n isRecord,\n isStringArray,\n} from './shared';\n\nconst APP_CATEGORY_SET = new Set<string>(APP_CATEGORIES);\nconst COLOR_HARMONY_SET = new Set<string>(COLOR_HARMONIES);\nconst CUSTOM_TABS_PRESENTATION_SET = new Set<string>(CUSTOM_TABS_PRESENTATIONS);\nconst FIXED_CUSTOM_TABS_PRESENTATION_SET = new Set<string>(FIXED_CUSTOM_TABS_PRESENTATIONS);\nconst JAVASCRIPT_TABS_PRESENTATION_SET = new Set<string>(JAVASCRIPT_TABS_PRESENTATIONS);\nconst NAVIGATOR_PRESET_SET = new Set<string>(NAVIGATOR_PRESETS);\nconst NAVIGATOR_TYPE_SET = new Set<string>(NAVIGATOR_TYPES);\nconst SPLASH_SCREEN_RESIZE_MODE_SET = new Set<string>(['contain', 'cover', 'native']);\n\nexport function isManifestMetadata(value: unknown): boolean {\n return (\n isRecord(value) &&\n typeof value.name === 'string' &&\n typeof value.slug === 'string' &&\n typeof value.version === 'string' &&\n typeof value.category === 'string' &&\n APP_CATEGORY_SET.has(value.category) &&\n typeof value.themeId === 'string' &&\n isOptionalString(value.created) &&\n isOptionalString(value.updated)\n );\n}\n\nexport function isThemeConfig(value: unknown): boolean {\n return (\n isRecord(value) &&\n typeof value.id === 'string' &&\n typeof value.name === 'string' &&\n isThemeModeConfig(value.light) &&\n isThemeModeConfig(value.dark)\n );\n}\n\n/*** Validate the complete serialized `AppManifest.navigator` slice. */\nexport function isAppNavigatorManifest(value: unknown): boolean {\n return (\n isRecord(value) &&\n isNavigatorNode(value) &&\n (value.preset === undefined ||\n (typeof value.preset === 'string' && NAVIGATOR_PRESET_SET.has(value.preset))) &&\n (value.flows === undefined || isNavigatorFlows(value.flows)) &&\n (value.defaults === undefined || isNavigatorDefaults(value.defaults)) &&\n (value.platforms === undefined || isNavigatorPlatforms(value.platforms))\n );\n}\n\nexport function isScreenRegistry(value: unknown): boolean {\n return (\n isRecord(value) &&\n Object.entries(value).every(\n ([registryKey, screen]) =>\n isScreenSpec(screen) && isRecord(screen) && registryKey === screen.id,\n )\n );\n}\n\nexport function isSplashScreenSpec(value: unknown): boolean {\n return (\n isSplashScreenModeSpec(value) &&\n isRecord(value) &&\n (value.dark === undefined || isSplashScreenModeSpec(value.dark))\n );\n}\n\nfunction isThemeModeConfig(value: unknown): boolean {\n return (\n isRecord(value) &&\n typeof value.primaryColor === 'string' &&\n typeof value.harmony === 'string' &&\n COLOR_HARMONY_SET.has(value.harmony)\n );\n}\n\nfunction isUiNode(value: unknown): boolean {\n return (\n isRecord(value) &&\n typeof value.id === 'string' &&\n typeof value.type === 'string' &&\n isOptionalString(value.alias) &&\n (value.props === undefined || isRecord(value.props)) &&\n (value.style === undefined || isRecord(value.style)) &&\n (value.repeat === undefined || isUiNodeRepeatSpec(value.repeat)) &&\n (value.children === undefined ||\n (Array.isArray(value.children) && value.children.every(isUiNode)))\n );\n}\n\nfunction isUiNodeRepeatSpec(value: unknown): boolean {\n return (\n isRecord(value) &&\n isBindingValueSource(value.source) &&\n isOptionalString(value.itemAlias) &&\n isOptionalString(value.keyPath) &&\n (value.empty === undefined || (Array.isArray(value.empty) && value.empty.every(isUiNode)))\n );\n}\n\nfunction isScreenSpec(value: unknown): boolean {\n return (\n isRecord(value) &&\n typeof value.id === 'string' &&\n typeof value.name === 'string' &&\n isOptionalString(value.title) &&\n isOptionalString(value.description) &&\n (value.dataLoaders === undefined ||\n (Array.isArray(value.dataLoaders) &&\n value.dataLoaders.every(isScreenDataLoaderDefinition))) &&\n (value.requires === undefined || isScreenRequirements(value.requires)) &&\n isUiNode(value.root)\n );\n}\n\n/*** Validate one nested navigator node independently from app-level authoring metadata. */\nfunction isNavigatorNode(value: unknown): boolean {\n return (\n isRecord(value) &&\n typeof value.type === 'string' &&\n NAVIGATOR_TYPE_SET.has(value.type) &&\n isOptionalString(value.initialRouteName) &&\n Array.isArray(value.routes) &&\n value.routes.every(isRouteDefinition) &&\n (value.options === undefined || isRecord(value.options)) &&\n (value.type !== 'tabs' || isTabsImplementationConfig(value))\n );\n}\n\nfunction isRouteDefinition(value: unknown): boolean {\n return (\n isRecord(value) &&\n typeof value.name === 'string' &&\n isOptionalString(value.path) &&\n isOptionalString(value.label) &&\n (value.icon === undefined || isIconSpec(value.icon)) &&\n isOptionalBoolean(value.showInPrimaryNavigation) &&\n (value.guards === undefined || isStringArray(value.guards)) &&\n isOptionalString(value.screenId) &&\n (value.navigator === undefined || isNavigatorNode(value.navigator))\n );\n}\n\n/*** Validate tabs implementation desired state, with omitted implementation meaning adaptive. */\nfunction isTabsImplementationConfig(value: Record<string, unknown>): boolean {\n if (value.implementation === undefined || value.implementation === 'adaptive') {\n return (\n (value.native === undefined || isNativeTabsConfig(value.native)) &&\n (value.web === undefined || isCustomTabsWebConfig(value.web))\n );\n }\n\n if (value.implementation === 'native') return true;\n\n if (value.implementation === 'javascript') {\n return (\n value.presentation === undefined ||\n (typeof value.presentation === 'string' &&\n JAVASCRIPT_TABS_PRESENTATION_SET.has(value.presentation))\n );\n }\n\n return value.implementation === 'custom' && isCustomTabsConfig(value);\n}\n\n/*** Validate the native branch used by adaptive tabs. */\nfunction isNativeTabsConfig(value: unknown): boolean {\n return isRecord(value) && value.implementation === 'native';\n}\n\n/*** Validate a full custom-tabs implementation config. */\nfunction isCustomTabsConfig(value: Record<string, unknown>): boolean {\n return value.implementation === 'custom' && isCustomTabsPresentationConfig(value);\n}\n\n/*** Validate the implementation-free custom-tabs Web branch inside adaptive tabs. */\nfunction isCustomTabsWebConfig(value: unknown): boolean {\n return (\n isRecord(value) && value.implementation === undefined && isCustomTabsPresentationConfig(value)\n );\n}\n\n/*** Validate custom-tab presentation and its conditional serializable configuration. */\nfunction isCustomTabsPresentationConfig(value: Record<string, unknown>): boolean {\n if (\n typeof value.presentation !== 'string' ||\n !CUSTOM_TABS_PRESENTATION_SET.has(value.presentation)\n ) {\n return false;\n }\n\n if (value.responsive !== undefined && !isResponsiveTabsPresentation(value.responsive)) {\n return false;\n }\n\n if (!isOptionalString(value.customPresentationId)) return false;\n if (value.presentation === 'responsive' && value.responsive === undefined) return false;\n\n return (\n value.presentation !== 'custom' ||\n (typeof value.customPresentationId === 'string' && value.customPresentationId.length > 0)\n );\n}\n\n/*** Validate semantic compact/medium/expanded custom-tab presentation mapping. */\nfunction isResponsiveTabsPresentation(value: unknown): boolean {\n return (\n isRecord(value) &&\n typeof value.compact === 'string' &&\n FIXED_CUSTOM_TABS_PRESENTATION_SET.has(value.compact) &&\n (value.medium === undefined ||\n (typeof value.medium === 'string' && FIXED_CUSTOM_TABS_PRESENTATION_SET.has(value.medium))) &&\n typeof value.expanded === 'string' &&\n FIXED_CUSTOM_TABS_PRESENTATION_SET.has(value.expanded)\n );\n}\n\n/*** Validate optional app-level navigator flow intent. */\nfunction isNavigatorFlows(value: unknown): boolean {\n return (\n isRecord(value) &&\n isOptionalBoolean(value.onboarding) &&\n isOptionalBoolean(value.authentication)\n );\n}\n\n/*** Validate package-owned navigator defaults without requiring a navigator node type. */\nfunction isNavigatorDefaults(value: unknown): boolean {\n return (\n isRecord(value) &&\n (value.tabs === undefined || (isRecord(value.tabs) && isTabsImplementationConfig(value.tabs)))\n );\n}\n\n/*** Validate per-platform navigator implementation overrides. */\nfunction isNavigatorPlatforms(value: unknown): boolean {\n return (\n isRecord(value) &&\n (value.android === undefined || isNavigatorPlatformConfig(value.android)) &&\n (value.ios === undefined || isNavigatorPlatformConfig(value.ios)) &&\n (value.web === undefined || isNavigatorPlatformConfig(value.web))\n );\n}\n\n/*** Validate one platform-specific navigator override slice. */\nfunction isNavigatorPlatformConfig(value: unknown): boolean {\n return (\n isRecord(value) &&\n (value.tabs === undefined || (isRecord(value.tabs) && isTabsImplementationConfig(value.tabs)))\n );\n}\n\nfunction isSplashScreenModeSpec(value: unknown): boolean {\n return (\n isRecord(value) &&\n isOptionalString(value.image) &&\n isOptionalNumber(value.imageWidth) &&\n (value.resizeMode === undefined ||\n (typeof value.resizeMode === 'string' &&\n SPLASH_SCREEN_RESIZE_MODE_SET.has(value.resizeMode))) &&\n isOptionalString(value.backgroundColor)\n );\n}\n\nfunction isScreenRequirements(value: unknown): boolean {\n return (\n isRecord(value) &&\n (value.permissions === undefined || isRequirementArray(value.permissions, 'permission')) &&\n (value.capabilities === undefined || isRequirementArray(value.capabilities, 'capability'))\n );\n}\n\nfunction isRequirementArray(value: unknown, key: 'capability' | 'permission'): boolean {\n return (\n Array.isArray(value) &&\n value.every((entry) => isRecord(entry) && typeof entry[key] === 'string')\n );\n}\n"]}
|
package/dist/appManifest.js
CHANGED
|
@@ -3,7 +3,7 @@ import { isDataSourceRegistry } from './appManifest/dataSources';
|
|
|
3
3
|
import { isAppDeployManifest } from './appManifest/deploy';
|
|
4
4
|
import { isInfraManifest } from './appManifest/infra';
|
|
5
5
|
import { isMediaManifest } from './appManifest/media';
|
|
6
|
-
import {
|
|
6
|
+
import { isAppNavigatorManifest, isManifestMetadata, isScreenRegistry, isSplashScreenSpec, isThemeConfig, } from './appManifest/screens';
|
|
7
7
|
import { isRecord, isStringArray } from './appManifest/shared';
|
|
8
8
|
const APP_MANIFEST_KEY_POLICY = {
|
|
9
9
|
metadata: 'required',
|
|
@@ -47,7 +47,7 @@ export function isAppManifest(value) {
|
|
|
47
47
|
(value.media === undefined || isMediaManifest(value.media)) &&
|
|
48
48
|
(value.deploy === undefined || isAppDeployManifest(value.deploy)) &&
|
|
49
49
|
isInfraManifest(value.infra) &&
|
|
50
|
-
|
|
50
|
+
isAppNavigatorManifest(value.navigator) &&
|
|
51
51
|
isScreenRegistry(value.screens) &&
|
|
52
52
|
(value.dataSources === undefined || isDataSourceRegistry(value.dataSources)) &&
|
|
53
53
|
(value.dataBindings === undefined || isComponentDataBindingRegistry(value.dataBindings)) &&
|
package/dist/appManifest.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"appManifest.js","sourceRoot":"","sources":["../src/appManifest.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,8BAA8B,EAAE,MAAM,wBAAwB,CAAC;AACxE,OAAO,EAAE,oBAAoB,EAAE,MAAM,2BAA2B,CAAC;AACjE,OAAO,EAAE,mBAAmB,EAAE,MAAM,sBAAsB,CAAC;AAC3D,OAAO,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AACtD,OAAO,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AACtD,OAAO,EACL,kBAAkB,EAClB,
|
|
1
|
+
{"version":3,"file":"appManifest.js","sourceRoot":"","sources":["../src/appManifest.ts"],"names":[],"mappings":"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","sourcesContent":["import { isComponentDataBindingRegistry } from './appManifest/bindings';\nimport { isDataSourceRegistry } from './appManifest/dataSources';\nimport { isAppDeployManifest } from './appManifest/deploy';\nimport { isInfraManifest } from './appManifest/infra';\nimport { isMediaManifest } from './appManifest/media';\nimport {\n isAppNavigatorManifest,\n isManifestMetadata,\n isScreenRegistry,\n isSplashScreenSpec,\n isThemeConfig,\n} from './appManifest/screens';\nimport { isRecord, isStringArray } from './appManifest/shared';\nimport type { AppManifest } from './types';\n\nexport type AppManifestParseResult =\n | { readonly ok: true; readonly manifest: AppManifest }\n | { readonly ok: false; readonly message: string };\n\nconst APP_MANIFEST_KEY_POLICY = {\n metadata: 'required',\n themes: 'required',\n activeThemeId: 'required',\n activeThemeMode: 'optional',\n splashScreen: 'optional',\n media: 'optional',\n deploy: 'optional',\n infra: 'required',\n navigator: 'required',\n screens: 'required',\n dataSources: 'optional',\n dataBindings: 'optional',\n repository: 'optional',\n settings: 'required',\n} as const satisfies Record<keyof AppManifest, 'optional' | 'required'>;\n\n/**\n * Parse unknown JSON-compatible input at the canonical AppManifest boundary.\n *\n * Contracts owns structural manifest validation. Consumers may add semantic\n * diagnostics after this parser succeeds, but should not reconstruct the\n * AppManifest shape in their own packages.\n */\nexport function parseAppManifest(value: unknown): AppManifestParseResult {\n return isAppManifest(value)\n ? { ok: true, manifest: value }\n : { ok: false, message: 'Value is not a canonical AppManifest.' };\n}\n\n/** Return whether an unknown value satisfies the canonical AppManifest shape. */\nexport function isAppManifest(value: unknown): value is AppManifest {\n return (\n isRecord(value) &&\n hasRequiredManifestKeys(value) &&\n !('generatedApis' in value) &&\n isManifestMetadata(value.metadata) &&\n Array.isArray(value.themes) &&\n value.themes.every(isThemeConfig) &&\n typeof value.activeThemeId === 'string' &&\n isActiveThemeMode(value.activeThemeMode) &&\n (value.splashScreen === undefined || isSplashScreenSpec(value.splashScreen)) &&\n (value.media === undefined || isMediaManifest(value.media)) &&\n (value.deploy === undefined || isAppDeployManifest(value.deploy)) &&\n isInfraManifest(value.infra) &&\n isAppNavigatorManifest(value.navigator) &&\n isScreenRegistry(value.screens) &&\n (value.dataSources === undefined || isDataSourceRegistry(value.dataSources)) &&\n (value.dataBindings === undefined || isComponentDataBindingRegistry(value.dataBindings)) &&\n (value.repository === undefined || isRepositoryManifest(value.repository)) &&\n isAppSettings(value.settings)\n );\n}\n\nfunction hasRequiredManifestKeys(value: Record<string, unknown>): boolean {\n return Object.entries(APP_MANIFEST_KEY_POLICY).every(\n ([key, policy]) => policy === 'optional' || key in value,\n );\n}\n\nfunction isActiveThemeMode(value: unknown): boolean {\n return value === undefined || value === 'dark' || value === 'light';\n}\n\nfunction isRepositoryManifest(value: unknown): boolean {\n return (\n isRecord(value) &&\n value.provider === 'github' &&\n typeof value.owner === 'string' &&\n value.owner.length > 0 &&\n typeof value.name === 'string' &&\n value.name.length > 0 &&\n typeof value.url === 'string' &&\n value.url.length > 0 &&\n value.defaultBranch === 'main'\n );\n}\n\nfunction isAppSettings(value: unknown): boolean {\n return (\n isRecord(value) &&\n !('apiBaseUrl' in value) &&\n isRecord(value.localization) &&\n typeof value.localization.defaultLocale === 'string' &&\n isStringArray(value.localization.locales)\n );\n}\n"]}
|
package/dist/index.d.ts
CHANGED
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,eAAe,CAAC;AAC9B,cAAc,QAAQ,CAAC;AACvB,cAAc,YAAY,CAAC;AAC3B,cAAc,OAAO,CAAC;AACtB,cAAc,QAAQ,CAAC;AACvB,cAAc,MAAM,CAAC;AACrB,cAAc,UAAU,CAAC;AACzB,cAAc,SAAS,CAAC;AACxB,cAAc,cAAc,CAAC;AAC7B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,oBAAoB,CAAC;AACnC,cAAc,kBAAkB,CAAC;AACjC,cAAc,WAAW,CAAC;AAC1B,cAAc,SAAS,CAAC;AACxB,cAAc,WAAW,CAAC;AAC1B,cAAc,SAAS,CAAC;AACxB,cAAc,SAAS,CAAC;AACxB,cAAc,MAAM,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,eAAe,CAAC;AAC9B,cAAc,QAAQ,CAAC;AACvB,cAAc,YAAY,CAAC;AAC3B,cAAc,OAAO,CAAC;AACtB,cAAc,QAAQ,CAAC;AACvB,cAAc,MAAM,CAAC;AACrB,cAAc,UAAU,CAAC;AACzB,cAAc,SAAS,CAAC;AACxB,cAAc,aAAa,CAAC;AAC5B,cAAc,cAAc,CAAC;AAC7B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,oBAAoB,CAAC;AACnC,cAAc,kBAAkB,CAAC;AACjC,cAAc,WAAW,CAAC;AAC1B,cAAc,SAAS,CAAC;AACxB,cAAc,WAAW,CAAC;AAC1B,cAAc,SAAS,CAAC;AACxB,cAAc,SAAS,CAAC;AACxB,cAAc,MAAM,CAAC"}
|
package/dist/index.js
CHANGED
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,eAAe,CAAC;AAC9B,cAAc,QAAQ,CAAC;AACvB,cAAc,YAAY,CAAC;AAC3B,cAAc,OAAO,CAAC;AACtB,cAAc,QAAQ,CAAC;AACvB,cAAc,MAAM,CAAC;AACrB,cAAc,UAAU,CAAC;AACzB,cAAc,SAAS,CAAC;AACxB,cAAc,cAAc,CAAC;AAC7B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,oBAAoB,CAAC;AACnC,cAAc,kBAAkB,CAAC;AACjC,cAAc,WAAW,CAAC;AAC1B,cAAc,SAAS,CAAC;AACxB,cAAc,WAAW,CAAC;AAC1B,cAAc,SAAS,CAAC;AACxB,cAAc,SAAS,CAAC;AACxB,cAAc,MAAM,CAAC","sourcesContent":["export * from './appManifest';\nexport * from './auth';\nexport * from './bindings';\nexport * from './cli';\nexport * from './data';\nexport * from './db';\nexport * from './deploy';\nexport * from './media';\nexport * from './repository';\nexport * from './requirements';\nexport * from './runtimeCallbacks';\nexport * from './secretManifest';\nexport * from './secrets';\nexport * from './state';\nexport * from './storage';\nexport * from './theme';\nexport * from './types';\nexport * from './ui';\n"]}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,eAAe,CAAC;AAC9B,cAAc,QAAQ,CAAC;AACvB,cAAc,YAAY,CAAC;AAC3B,cAAc,OAAO,CAAC;AACtB,cAAc,QAAQ,CAAC;AACvB,cAAc,MAAM,CAAC;AACrB,cAAc,UAAU,CAAC;AACzB,cAAc,SAAS,CAAC;AACxB,cAAc,aAAa,CAAC;AAC5B,cAAc,cAAc,CAAC;AAC7B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,oBAAoB,CAAC;AACnC,cAAc,kBAAkB,CAAC;AACjC,cAAc,WAAW,CAAC;AAC1B,cAAc,SAAS,CAAC;AACxB,cAAc,WAAW,CAAC;AAC1B,cAAc,SAAS,CAAC;AACxB,cAAc,SAAS,CAAC;AACxB,cAAc,MAAM,CAAC","sourcesContent":["export * from './appManifest';\nexport * from './auth';\nexport * from './bindings';\nexport * from './cli';\nexport * from './data';\nexport * from './db';\nexport * from './deploy';\nexport * from './media';\nexport * from './navigator';\nexport * from './repository';\nexport * from './requirements';\nexport * from './runtimeCallbacks';\nexport * from './secretManifest';\nexport * from './secrets';\nexport * from './state';\nexport * from './storage';\nexport * from './theme';\nexport * from './types';\nexport * from './ui';\n"]}
|
|
@@ -0,0 +1,96 @@
|
|
|
1
|
+
import type { IconSpec } from './types';
|
|
2
|
+
export declare const NAVIGATOR_TYPES: readonly ["stack", "tabs", "drawer"];
|
|
3
|
+
export type NavigatorType = (typeof NAVIGATOR_TYPES)[number];
|
|
4
|
+
export declare const NAVIGATOR_PRESETS: readonly ["stack", "tabs", "tabs-stack", "drawer", "drawer-stack", "drawer-tabs", "drawer-tabs-stack", "root-stack-tabs", "root-stack-tabs-stack", "root-stack-drawer", "root-stack-drawer-stack", "root-stack-drawer-tabs", "root-stack-drawer-tabs-stack"];
|
|
5
|
+
export type NavigatorPreset = (typeof NAVIGATOR_PRESETS)[number];
|
|
6
|
+
export declare const FIXED_CUSTOM_TABS_PRESENTATIONS: readonly ["bottom", "top", "rail", "sidebar"];
|
|
7
|
+
export type FixedCustomTabsPresentation = (typeof FIXED_CUSTOM_TABS_PRESENTATIONS)[number];
|
|
8
|
+
export declare const CUSTOM_TABS_PRESENTATIONS: readonly ["bottom", "top", "rail", "sidebar", "responsive", "custom"];
|
|
9
|
+
export type CustomTabsPresentation = (typeof CUSTOM_TABS_PRESENTATIONS)[number];
|
|
10
|
+
export declare const JAVASCRIPT_TABS_PRESENTATIONS: readonly ["bottom", "top"];
|
|
11
|
+
export type JavaScriptTabsPresentation = (typeof JAVASCRIPT_TABS_PRESENTATIONS)[number];
|
|
12
|
+
export interface ResponsiveTabsPresentation {
|
|
13
|
+
compact: FixedCustomTabsPresentation;
|
|
14
|
+
medium?: FixedCustomTabsPresentation;
|
|
15
|
+
expanded: FixedCustomTabsPresentation;
|
|
16
|
+
}
|
|
17
|
+
export interface CustomTabsConfig {
|
|
18
|
+
implementation: 'custom';
|
|
19
|
+
presentation: CustomTabsPresentation;
|
|
20
|
+
responsive?: ResponsiveTabsPresentation;
|
|
21
|
+
/** Serializable registered presentation id used when `presentation` is `custom`. */
|
|
22
|
+
customPresentationId?: string;
|
|
23
|
+
}
|
|
24
|
+
export interface NativeTabsConfig {
|
|
25
|
+
implementation: 'native';
|
|
26
|
+
}
|
|
27
|
+
export interface JavaScriptTabsConfig {
|
|
28
|
+
implementation: 'javascript';
|
|
29
|
+
presentation?: JavaScriptTabsPresentation;
|
|
30
|
+
}
|
|
31
|
+
export interface AdaptiveTabsConfig {
|
|
32
|
+
/** Omission selects the canonical adaptive default. */
|
|
33
|
+
implementation?: 'adaptive';
|
|
34
|
+
/** Android/iOS branch. Expo Router may expose this implementation as unstable. */
|
|
35
|
+
native?: NativeTabsConfig;
|
|
36
|
+
/** Web branch rendered through headless custom tabs. */
|
|
37
|
+
web?: Omit<CustomTabsConfig, 'implementation'>;
|
|
38
|
+
}
|
|
39
|
+
export type TabsImplementationConfig = AdaptiveTabsConfig | CustomTabsConfig | JavaScriptTabsConfig | NativeTabsConfig;
|
|
40
|
+
interface NavigatorNodeBase {
|
|
41
|
+
initialRouteName?: string;
|
|
42
|
+
routes: RouteDefinition[];
|
|
43
|
+
/** Typed upstream options can be layered by the owning Navigator package. */
|
|
44
|
+
options?: Record<string, unknown>;
|
|
45
|
+
}
|
|
46
|
+
export interface StackNavigatorNode extends NavigatorNodeBase {
|
|
47
|
+
type: 'stack';
|
|
48
|
+
}
|
|
49
|
+
export interface DrawerNavigatorNode extends NavigatorNodeBase {
|
|
50
|
+
type: 'drawer';
|
|
51
|
+
}
|
|
52
|
+
export type TabsNavigatorConfig = {
|
|
53
|
+
type: 'tabs';
|
|
54
|
+
} & TabsImplementationConfig;
|
|
55
|
+
export type TabsNavigatorNode = NavigatorNodeBase & TabsNavigatorConfig;
|
|
56
|
+
export type NavigatorNode = DrawerNavigatorNode | StackNavigatorNode | TabsNavigatorNode;
|
|
57
|
+
export interface RouteDefinition {
|
|
58
|
+
name: string;
|
|
59
|
+
path?: string;
|
|
60
|
+
label?: string;
|
|
61
|
+
icon?: IconSpec;
|
|
62
|
+
/** Hide this route from primary Tabs/Drawer presentation without making it unnavigable. */
|
|
63
|
+
showInPrimaryNavigation?: boolean;
|
|
64
|
+
guards?: string[];
|
|
65
|
+
screenId?: string;
|
|
66
|
+
navigator?: NavigatorNode;
|
|
67
|
+
}
|
|
68
|
+
export interface NavigatorFlows {
|
|
69
|
+
onboarding?: boolean;
|
|
70
|
+
authentication?: boolean;
|
|
71
|
+
}
|
|
72
|
+
export interface NavigatorDefaults {
|
|
73
|
+
tabs?: TabsImplementationConfig;
|
|
74
|
+
}
|
|
75
|
+
export interface NavigatorPlatformConfig {
|
|
76
|
+
tabs?: TabsImplementationConfig;
|
|
77
|
+
}
|
|
78
|
+
export interface NavigatorPlatforms {
|
|
79
|
+
android?: NavigatorPlatformConfig;
|
|
80
|
+
ios?: NavigatorPlatformConfig;
|
|
81
|
+
web?: NavigatorPlatformConfig;
|
|
82
|
+
}
|
|
83
|
+
/**
|
|
84
|
+
* Serializable desired state for `AppManifest.navigator`.
|
|
85
|
+
*
|
|
86
|
+
* The manifest slice is the root navigator tree itself; optional authoring metadata does not add
|
|
87
|
+
* a redundant `root` wrapper. The standalone Navigator capability consumes this slice directly.
|
|
88
|
+
*/
|
|
89
|
+
export type AppNavigatorManifest = NavigatorNode & {
|
|
90
|
+
preset?: NavigatorPreset;
|
|
91
|
+
flows?: NavigatorFlows;
|
|
92
|
+
defaults?: NavigatorDefaults;
|
|
93
|
+
platforms?: NavigatorPlatforms;
|
|
94
|
+
};
|
|
95
|
+
export {};
|
|
96
|
+
//# sourceMappingURL=navigator.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"navigator.d.ts","sourceRoot":"","sources":["../src/navigator.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
export const NAVIGATOR_TYPES = ['stack', 'tabs', 'drawer'];
|
|
2
|
+
export const NAVIGATOR_PRESETS = [
|
|
3
|
+
'stack',
|
|
4
|
+
'tabs',
|
|
5
|
+
'tabs-stack',
|
|
6
|
+
'drawer',
|
|
7
|
+
'drawer-stack',
|
|
8
|
+
'drawer-tabs',
|
|
9
|
+
'drawer-tabs-stack',
|
|
10
|
+
'root-stack-tabs',
|
|
11
|
+
'root-stack-tabs-stack',
|
|
12
|
+
'root-stack-drawer',
|
|
13
|
+
'root-stack-drawer-stack',
|
|
14
|
+
'root-stack-drawer-tabs',
|
|
15
|
+
'root-stack-drawer-tabs-stack',
|
|
16
|
+
];
|
|
17
|
+
export const FIXED_CUSTOM_TABS_PRESENTATIONS = ['bottom', 'top', 'rail', 'sidebar'];
|
|
18
|
+
export const CUSTOM_TABS_PRESENTATIONS = [
|
|
19
|
+
...FIXED_CUSTOM_TABS_PRESENTATIONS,
|
|
20
|
+
'responsive',
|
|
21
|
+
'custom',
|
|
22
|
+
];
|
|
23
|
+
export const JAVASCRIPT_TABS_PRESENTATIONS = ['bottom', 'top'];
|
|
24
|
+
//# sourceMappingURL=navigator.js.map
|