@ankhorage/studio 0.0.8 → 0.0.10

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/README.md CHANGED
@@ -3,7 +3,7 @@
3
3
 
4
4
  # @ankhorage/studio
5
5
 
6
- ![license: MIT](././paradox/badges/license.svg) ![npm: v0.0.7](././paradox/badges/npm.svg) ![runtime: bun](././paradox/badges/runtime.svg) ![typescript: strict](././paradox/badges/typescript.svg) ![eslint: checked](././paradox/badges/eslint.svg) ![prettier: checked](././paradox/badges/prettier.svg) ![build: checked](././paradox/badges/build.svg) ![tests: checked](././paradox/badges/tests.svg) ![docs: paradox](././paradox/badges/docs.svg)
6
+ ![license: MIT](././paradox/badges/license.svg) ![npm: v0.0.8](././paradox/badges/npm.svg) ![runtime: bun](././paradox/badges/runtime.svg) ![typescript: strict](././paradox/badges/typescript.svg) ![eslint: checked](././paradox/badges/eslint.svg) ![prettier: checked](././paradox/badges/prettier.svg) ![build: checked](././paradox/badges/build.svg) ![tests: checked](././paradox/badges/tests.svg) ![docs: paradox](././paradox/badges/docs.svg)
7
7
 
8
8
  Standalone Studio authoring package for Ankhorage apps.
9
9
 
@@ -0,0 +1,7 @@
1
+ export interface StudioLocalizationConfig {
2
+ locales?: string[];
3
+ }
4
+ export declare function isStringArray(value: unknown): value is string[];
5
+ export declare function isStringRecord(value: unknown): value is Record<string, string>;
6
+ export declare function readLocalizationConfig(value: unknown): StudioLocalizationConfig | null;
7
+ //# sourceMappingURL=localizationConfig.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"localizationConfig.d.ts","sourceRoot":"","sources":["../src/localizationConfig.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,wBAAwB;IACvC,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;CACpB;AAMD,wBAAgB,aAAa,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,MAAM,EAAE,CAE/D;AAED,wBAAgB,cAAc,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAE9E;AAED,wBAAgB,sBAAsB,CAAC,KAAK,EAAE,OAAO,GAAG,wBAAwB,GAAG,IAAI,CAUtF"}
@@ -0,0 +1,19 @@
1
+ function isRecord(value) {
2
+ return typeof value === 'object' && value !== null && !Array.isArray(value);
3
+ }
4
+ export function isStringArray(value) {
5
+ return Array.isArray(value) && value.every((item) => typeof item === 'string');
6
+ }
7
+ export function isStringRecord(value) {
8
+ return isRecord(value) && Object.values(value).every((item) => typeof item === 'string');
9
+ }
10
+ export function readLocalizationConfig(value) {
11
+ if (!isRecord(value)) {
12
+ return null;
13
+ }
14
+ if (value.locales === undefined) {
15
+ return {};
16
+ }
17
+ return isStringArray(value.locales) ? { locales: value.locales } : null;
18
+ }
19
+ //# sourceMappingURL=localizationConfig.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"localizationConfig.js","sourceRoot":"","sources":["../src/localizationConfig.ts"],"names":[],"mappings":"AAIA,SAAS,QAAQ,CAAC,KAAc;IAC9B,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;AAC9E,CAAC;AAED,MAAM,UAAU,aAAa,CAAC,KAAc;IAC1C,OAAO,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,KAAK,CAAC,KAAK,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,OAAO,IAAI,KAAK,QAAQ,CAAC,CAAC;AACjF,CAAC;AAED,MAAM,UAAU,cAAc,CAAC,KAAc;IAC3C,OAAO,QAAQ,CAAC,KAAK,CAAC,IAAI,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,OAAO,IAAI,KAAK,QAAQ,CAAC,CAAC;AAC3F,CAAC;AAED,MAAM,UAAU,sBAAsB,CAAC,KAAc;IACnD,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC;QACrB,OAAO,IAAI,CAAC;IACd,CAAC;IAED,IAAI,KAAK,CAAC,OAAO,KAAK,SAAS,EAAE,CAAC;QAChC,OAAO,EAAE,CAAC;IACZ,CAAC;IAED,OAAO,aAAa,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC;AAC1E,CAAC"}
@@ -0,0 +1,40 @@
1
+ import type { AppManifest, IconSpec, NavigatorSpec, RouteDefinition } from '@ankhorage/contracts';
2
+ export interface PreviewNavigationDiagnostic {
3
+ kind: 'icon';
4
+ severity: 'warning';
5
+ message: string;
6
+ routeName: string;
7
+ provider?: string;
8
+ iconName?: string;
9
+ }
10
+ export interface PreviewNavigationRoute {
11
+ name: string;
12
+ label: string;
13
+ icon?: IconSpec;
14
+ route: RouteDefinition;
15
+ }
16
+ export interface StudioNavigationRouteMapEntry {
17
+ label: string;
18
+ icon?: IconSpec;
19
+ }
20
+ export type StudioNavigationRouteMap = Record<string, StudioNavigationRouteMapEntry>;
21
+ export interface ManifestNavigatorPreviewModel {
22
+ navigator: NavigatorSpec;
23
+ visibleRoutes: readonly PreviewNavigationRoute[];
24
+ routeMap: StudioNavigationRouteMap;
25
+ activeRouteIndex: number;
26
+ activeRouteName: string | null;
27
+ resolvedActiveScreenId: string | null;
28
+ iconDiagnostics: readonly PreviewNavigationDiagnostic[];
29
+ }
30
+ export declare function resolveLeafScreenIdForRoute(route: RouteDefinition): string | null;
31
+ export declare function resolveLeafScreenIdForChromeRouteName(args: {
32
+ navigator: NavigatorSpec;
33
+ visibleRoutes: readonly PreviewNavigationRoute[];
34
+ routeName: string;
35
+ }): string | null;
36
+ export declare function buildManifestNavigatorPreviewModel(args: {
37
+ manifest: AppManifest;
38
+ activeScreenId?: string | undefined;
39
+ }): ManifestNavigatorPreviewModel;
40
+ //# sourceMappingURL=manifestNavigatorPreviewModel.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"manifestNavigatorPreviewModel.d.ts","sourceRoot":"","sources":["../src/manifestNavigatorPreviewModel.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,QAAQ,EAAE,aAAa,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAQlG,MAAM,WAAW,2BAA2B;IAC1C,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,SAAS,CAAC;IACpB,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,sBAAsB;IACrC,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,QAAQ,CAAC;IAChB,KAAK,EAAE,eAAe,CAAC;CACxB;AAED,MAAM,WAAW,6BAA6B;IAC5C,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,QAAQ,CAAC;CACjB;AAED,MAAM,MAAM,wBAAwB,GAAG,MAAM,CAAC,MAAM,EAAE,6BAA6B,CAAC,CAAC;AAErF,MAAM,WAAW,6BAA6B;IAC5C,SAAS,EAAE,aAAa,CAAC;IACzB,aAAa,EAAE,SAAS,sBAAsB,EAAE,CAAC;IACjD,QAAQ,EAAE,wBAAwB,CAAC;IACnC,gBAAgB,EAAE,MAAM,CAAC;IACzB,eAAe,EAAE,MAAM,GAAG,IAAI,CAAC;IAC/B,sBAAsB,EAAE,MAAM,GAAG,IAAI,CAAC;IACtC,eAAe,EAAE,SAAS,2BAA2B,EAAE,CAAC;CACzD;AA4FD,wBAAgB,2BAA2B,CAAC,KAAK,EAAE,eAAe,GAAG,MAAM,GAAG,IAAI,CAYjF;AAED,wBAAgB,qCAAqC,CAAC,IAAI,EAAE;IAC1D,SAAS,EAAE,aAAa,CAAC;IACzB,aAAa,EAAE,SAAS,sBAAsB,EAAE,CAAC;IACjD,SAAS,EAAE,MAAM,CAAC;CACnB,GAAG,MAAM,GAAG,IAAI,CAKhB;AAsFD,wBAAgB,kCAAkC,CAAC,IAAI,EAAE;IACvD,QAAQ,EAAE,WAAW,CAAC;IACtB,cAAc,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;CACrC,GAAG,6BAA6B,CAyChC"}
@@ -0,0 +1,190 @@
1
+ import { collectScreenRouteEntries, findNavigatorAtPath, getPrimaryNavigatorPath, } from './routeUtils';
2
+ function normalizeAuthFlowPathToRouteName(routePath) {
3
+ const normalized = routePath.trim().replace(/^\/+/, '').replace(/\/+$/, '');
4
+ return normalized === '' ? 'index' : normalized;
5
+ }
6
+ function collectAuthFlowRouteNames(manifest) {
7
+ const flow = manifest.settings.authFlow;
8
+ const routeNames = new Set();
9
+ const candidates = [
10
+ flow.signInRoute,
11
+ flow.signUpRoute,
12
+ flow.signOutRoute,
13
+ flow.forgotPasswordRoute,
14
+ flow.otpRoute,
15
+ flow.unauthorizedRoute,
16
+ ];
17
+ for (const routePath of candidates) {
18
+ if (typeof routePath !== 'string')
19
+ continue;
20
+ const trimmed = routePath.trim();
21
+ if (!trimmed)
22
+ continue;
23
+ routeNames.add(normalizeAuthFlowPathToRouteName(trimmed));
24
+ }
25
+ return routeNames;
26
+ }
27
+ function resolveRouteLabelString(route, manifest) {
28
+ const screen = route.screenId ? manifest.screens[route.screenId] : undefined;
29
+ return route.label ?? screen?.title ?? screen?.name ?? route.name;
30
+ }
31
+ function resolvePrimaryNavigator(manifest) {
32
+ const primaryNavigatorPath = getPrimaryNavigatorPath(manifest.navigator.routes);
33
+ return findNavigatorAtPath(manifest.navigator, primaryNavigatorPath) ?? manifest.navigator;
34
+ }
35
+ function resolveVisibleChromeRoutes(args) {
36
+ const { manifest, navigator } = args;
37
+ const authRouteNames = collectAuthFlowRouteNames(manifest);
38
+ return navigator.routes
39
+ .filter((route) => route.hideInTabBar !== true)
40
+ .filter((route) => !authRouteNames.has(route.name))
41
+ .map((route) => ({
42
+ name: route.name,
43
+ label: resolveRouteLabelString(route, manifest),
44
+ icon: route.icon,
45
+ route,
46
+ }));
47
+ }
48
+ function resolveInitialVisibleRouteName(args) {
49
+ const { navigator, visibleRoutes } = args;
50
+ const visibleNames = new Set(visibleRoutes.map((r) => r.name));
51
+ if (navigator.initialRouteName && visibleNames.has(navigator.initialRouteName)) {
52
+ return navigator.initialRouteName;
53
+ }
54
+ const [first] = visibleRoutes;
55
+ return first ? first.name : null;
56
+ }
57
+ function resolveActiveChromeRouteName(args) {
58
+ const { navigator, visibleRoutes, activeScreenId } = args;
59
+ if (activeScreenId) {
60
+ const entries = collectScreenRouteEntries(navigator.routes);
61
+ const entry = entries.find((candidate) => candidate.screenId === activeScreenId);
62
+ const routeName = entry?.routePath[0] ?? null;
63
+ if (routeName && visibleRoutes.some((route) => route.name === routeName)) {
64
+ return routeName;
65
+ }
66
+ }
67
+ return resolveInitialVisibleRouteName({ navigator, visibleRoutes });
68
+ }
69
+ export function resolveLeafScreenIdForRoute(route) {
70
+ if (route.screenId)
71
+ return route.screenId;
72
+ const nested = route.navigator;
73
+ if (!nested || nested.routes.length === 0)
74
+ return null;
75
+ const candidate = (nested.initialRouteName
76
+ ? nested.routes.find((r) => r.name === nested.initialRouteName)
77
+ : null) ?? nested.routes[0];
78
+ if (!candidate)
79
+ return null;
80
+ return resolveLeafScreenIdForRoute(candidate);
81
+ }
82
+ export function resolveLeafScreenIdForChromeRouteName(args) {
83
+ const { visibleRoutes, routeName } = args;
84
+ const route = visibleRoutes.find((item) => item.name === routeName)?.route;
85
+ if (!route)
86
+ return null;
87
+ return resolveLeafScreenIdForRoute(route);
88
+ }
89
+ const EXPO_VECTOR_ICON_PROVIDER_ALIASES = {
90
+ 'material-community': 'MaterialCommunityIcons',
91
+ };
92
+ const KNOWN_EXPO_VECTOR_ICON_PROVIDERS = new Set([
93
+ 'AntDesign',
94
+ 'Entypo',
95
+ 'EvilIcons',
96
+ 'Feather',
97
+ 'FontAwesome',
98
+ 'FontAwesome5',
99
+ 'FontAwesome6',
100
+ 'Fontisto',
101
+ 'Foundation',
102
+ 'Ionicons',
103
+ 'MaterialCommunityIcons',
104
+ 'MaterialIcons',
105
+ 'Octicons',
106
+ 'SimpleLineIcons',
107
+ 'Zocial',
108
+ ]);
109
+ function normalizeExpoIconProvider(provider) {
110
+ const trimmed = provider.trim();
111
+ const normalizedKey = trimmed.toLowerCase();
112
+ return EXPO_VECTOR_ICON_PROVIDER_ALIASES[normalizedKey] ?? trimmed;
113
+ }
114
+ function resolvePreviewIconDiagnostics(routes) {
115
+ const diagnostics = [];
116
+ for (const route of routes) {
117
+ const { icon } = route;
118
+ if (!icon)
119
+ continue;
120
+ if (typeof icon.provider !== 'string' || icon.provider.trim().length === 0) {
121
+ continue;
122
+ }
123
+ const provider = normalizeExpoIconProvider(icon.provider);
124
+ if (!KNOWN_EXPO_VECTOR_ICON_PROVIDERS.has(provider)) {
125
+ diagnostics.push({
126
+ kind: 'icon',
127
+ severity: 'warning',
128
+ message: `Unknown icon provider "${provider}" for route "${route.name}".`,
129
+ routeName: route.name,
130
+ provider,
131
+ iconName: icon.name,
132
+ });
133
+ continue;
134
+ }
135
+ }
136
+ return diagnostics;
137
+ }
138
+ function buildStudioRouteMap(args) {
139
+ const { manifest, visibleRoutes } = args;
140
+ const routeMap = {};
141
+ for (const item of visibleRoutes) {
142
+ const { route } = item;
143
+ const label = resolveRouteLabelString(route, manifest);
144
+ const icon = route.icon
145
+ ? {
146
+ name: route.icon.name,
147
+ ...(route.icon.provider ? { provider: route.icon.provider } : {}),
148
+ }
149
+ : undefined;
150
+ routeMap[item.name] = {
151
+ label,
152
+ ...(icon ? { icon } : {}),
153
+ };
154
+ }
155
+ return routeMap;
156
+ }
157
+ export function buildManifestNavigatorPreviewModel(args) {
158
+ const { manifest, activeScreenId } = args;
159
+ const navigator = resolvePrimaryNavigator(manifest);
160
+ const visibleRoutes = resolveVisibleChromeRoutes({ manifest, navigator });
161
+ const activeRouteName = resolveActiveChromeRouteName({
162
+ navigator,
163
+ visibleRoutes,
164
+ activeScreenId,
165
+ });
166
+ const activeRouteIndex = activeRouteName && visibleRoutes.length > 0
167
+ ? Math.max(0, visibleRoutes.findIndex((route) => route.name === activeRouteName))
168
+ : 0;
169
+ const clampedIndex = visibleRoutes.length === 0 ? 0 : Math.min(activeRouteIndex, visibleRoutes.length - 1);
170
+ const normalizedActiveRouteName = visibleRoutes[clampedIndex]?.name ?? null;
171
+ const resolvedActiveScreenId = normalizedActiveRouteName
172
+ ? resolveLeafScreenIdForChromeRouteName({
173
+ navigator,
174
+ visibleRoutes,
175
+ routeName: normalizedActiveRouteName,
176
+ })
177
+ : null;
178
+ const routeMap = buildStudioRouteMap({ manifest, visibleRoutes });
179
+ const iconDiagnostics = resolvePreviewIconDiagnostics(visibleRoutes);
180
+ return {
181
+ navigator,
182
+ visibleRoutes,
183
+ routeMap,
184
+ activeRouteIndex: clampedIndex,
185
+ activeRouteName: normalizedActiveRouteName,
186
+ resolvedActiveScreenId,
187
+ iconDiagnostics,
188
+ };
189
+ }
190
+ //# sourceMappingURL=manifestNavigatorPreviewModel.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"manifestNavigatorPreviewModel.js","sourceRoot":"","sources":["../src/manifestNavigatorPreviewModel.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@ankhorage/studio",
3
- "version": "0.0.8",
3
+ "version": "0.0.10",
4
4
  "description": "Studio authoring package for Ankhorage apps",
5
5
  "license": "MIT",
6
6
  "homepage": "https://github.com/ankhorage/studio#readme",
@@ -32,6 +32,14 @@
32
32
  "types": "./dist/canvasDropZones.d.ts",
33
33
  "import": "./dist/canvasDropZones.js"
34
34
  },
35
+ "./localizationConfig": {
36
+ "types": "./dist/localizationConfig.d.ts",
37
+ "import": "./dist/localizationConfig.js"
38
+ },
39
+ "./manifestNavigatorPreviewModel": {
40
+ "types": "./dist/manifestNavigatorPreviewModel.d.ts",
41
+ "import": "./dist/manifestNavigatorPreviewModel.js"
42
+ },
35
43
  "./manifestState": {
36
44
  "types": "./dist/manifestState.d.ts",
37
45
  "import": "./dist/manifestState.js"