@ankhorage/studio 0.0.21 → 0.1.1

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.
Files changed (196) hide show
  1. package/README.md +1 -2
  2. package/dist/cli/index.d.ts +4 -4
  3. package/dist/cli/index.d.ts.map +1 -1
  4. package/dist/cli/index.js +81 -66
  5. package/dist/cli/index.js.map +1 -1
  6. package/dist/hooks/useProjects.js +1 -1
  7. package/dist/hooks/useProjects.js.map +1 -1
  8. package/dist/host/createStudioHost.d.ts +13 -0
  9. package/dist/host/createStudioHost.d.ts.map +1 -0
  10. package/dist/host/createStudioHost.js +16 -0
  11. package/dist/host/createStudioHost.js.map +1 -0
  12. package/dist/host/http/security.d.ts +2 -0
  13. package/dist/host/http/security.d.ts.map +1 -0
  14. package/dist/host/http/security.js +55 -0
  15. package/dist/host/http/security.js.map +1 -0
  16. package/dist/host/http/server.d.ts +16 -0
  17. package/dist/host/http/server.d.ts.map +1 -0
  18. package/dist/host/http/server.js +549 -0
  19. package/dist/host/http/server.js.map +1 -0
  20. package/dist/host/index.d.ts +10 -0
  21. package/dist/host/index.d.ts.map +1 -0
  22. package/dist/host/index.js +10 -0
  23. package/dist/host/index.js.map +1 -0
  24. package/dist/host/layout/auth/resolveAuthLayoutPlan.d.ts +38 -0
  25. package/dist/host/layout/auth/resolveAuthLayoutPlan.d.ts.map +1 -0
  26. package/dist/host/layout/auth/resolveAuthLayoutPlan.js +262 -0
  27. package/dist/host/layout/auth/resolveAuthLayoutPlan.js.map +1 -0
  28. package/dist/host/layout/layoutGenerator.d.ts +19 -0
  29. package/dist/host/layout/layoutGenerator.d.ts.map +1 -0
  30. package/dist/host/layout/layoutGenerator.js +418 -0
  31. package/dist/host/layout/layoutGenerator.js.map +1 -0
  32. package/dist/host/layout/templates/auth/adapter.d.ts +6 -0
  33. package/dist/host/layout/templates/auth/adapter.d.ts.map +1 -0
  34. package/dist/host/layout/templates/auth/adapter.js +94 -0
  35. package/dist/host/layout/templates/auth/adapter.js.map +1 -0
  36. package/dist/host/layout/templates/auth/screen.d.ts +12 -0
  37. package/dist/host/layout/templates/auth/screen.d.ts.map +1 -0
  38. package/dist/host/layout/templates/auth/screen.js +648 -0
  39. package/dist/host/layout/templates/auth/screen.js.map +1 -0
  40. package/dist/host/layout/templates/auth/session.d.ts +2 -0
  41. package/dist/host/layout/templates/auth/session.d.ts.map +1 -0
  42. package/dist/host/layout/templates/auth/session.js +326 -0
  43. package/dist/host/layout/templates/auth/session.js.map +1 -0
  44. package/dist/host/layout/templates/auth/signOut.d.ts +2 -0
  45. package/dist/host/layout/templates/auth/signOut.d.ts.map +1 -0
  46. package/dist/host/layout/templates/auth/signOut.js +43 -0
  47. package/dist/host/layout/templates/auth/signOut.js.map +1 -0
  48. package/dist/host/layout/templates/index.d.ts +11 -0
  49. package/dist/host/layout/templates/index.d.ts.map +1 -0
  50. package/dist/host/layout/templates/index.js +10 -0
  51. package/dist/host/layout/templates/index.js.map +1 -0
  52. package/dist/host/layout/templates/navigation.d.ts +16 -0
  53. package/dist/host/layout/templates/navigation.d.ts.map +1 -0
  54. package/dist/host/layout/templates/navigation.js +332 -0
  55. package/dist/host/layout/templates/navigation.js.map +1 -0
  56. package/dist/host/layout/templates/nestedLayout.d.ts +7 -0
  57. package/dist/host/layout/templates/nestedLayout.d.ts.map +1 -0
  58. package/dist/host/layout/templates/nestedLayout.js +56 -0
  59. package/dist/host/layout/templates/nestedLayout.js.map +1 -0
  60. package/dist/host/layout/templates/redirect.d.ts +2 -0
  61. package/dist/host/layout/templates/redirect.d.ts.map +1 -0
  62. package/dist/host/layout/templates/redirect.js +10 -0
  63. package/dist/host/layout/templates/redirect.js.map +1 -0
  64. package/dist/host/layout/templates/rootLayout.d.ts +28 -0
  65. package/dist/host/layout/templates/rootLayout.d.ts.map +1 -0
  66. package/dist/host/layout/templates/rootLayout.js +507 -0
  67. package/dist/host/layout/templates/rootLayout.js.map +1 -0
  68. package/dist/host/layout/templates/screen.d.ts +6 -0
  69. package/dist/host/layout/templates/screen.d.ts.map +1 -0
  70. package/dist/host/layout/templates/screen.js +94 -0
  71. package/dist/host/layout/templates/screen.js.map +1 -0
  72. package/dist/host/layout/templates/utils/routes.d.ts +3 -0
  73. package/dist/host/layout/templates/utils/routes.d.ts.map +1 -0
  74. package/dist/host/layout/templates/utils/routes.js +15 -0
  75. package/dist/host/layout/templates/utils/routes.js.map +1 -0
  76. package/dist/host/layout/templates/utils/strings.d.ts +3 -0
  77. package/dist/host/layout/templates/utils/strings.d.ts.map +1 -0
  78. package/dist/host/layout/templates/utils/strings.js +7 -0
  79. package/dist/host/layout/templates/utils/strings.js.map +1 -0
  80. package/dist/host/layout/utils/escapeStringLiteral.d.ts +2 -0
  81. package/dist/host/layout/utils/escapeStringLiteral.d.ts.map +1 -0
  82. package/dist/host/layout/utils/escapeStringLiteral.js +8 -0
  83. package/dist/host/layout/utils/escapeStringLiteral.js.map +1 -0
  84. package/dist/host/manifestSystem/auth/index.d.ts +2 -0
  85. package/dist/host/manifestSystem/auth/index.d.ts.map +1 -0
  86. package/dist/host/manifestSystem/auth/index.js +2 -0
  87. package/dist/host/manifestSystem/auth/index.js.map +1 -0
  88. package/dist/host/manifestSystem/auth/shared/global.auth.system.tpl.d.ts +4 -0
  89. package/dist/host/manifestSystem/auth/shared/global.auth.system.tpl.d.ts.map +1 -0
  90. package/dist/host/manifestSystem/auth/shared/global.auth.system.tpl.js +7 -0
  91. package/dist/host/manifestSystem/auth/shared/global.auth.system.tpl.js.map +1 -0
  92. package/dist/host/manifestSystem/auth/shared/index.d.ts +3 -0
  93. package/dist/host/manifestSystem/auth/shared/index.d.ts.map +1 -0
  94. package/dist/host/manifestSystem/auth/shared/index.js +8 -0
  95. package/dist/host/manifestSystem/auth/shared/index.js.map +1 -0
  96. package/dist/host/manifestSystem/index.d.ts +5 -0
  97. package/dist/host/manifestSystem/index.d.ts.map +1 -0
  98. package/dist/host/manifestSystem/index.js +23 -0
  99. package/dist/host/manifestSystem/index.js.map +1 -0
  100. package/dist/host/manifestSystem/types.d.ts +8 -0
  101. package/dist/host/manifestSystem/types.d.ts.map +1 -0
  102. package/dist/host/manifestSystem/types.js +2 -0
  103. package/dist/host/manifestSystem/types.js.map +1 -0
  104. package/dist/host/modules/catalog.d.ts +40 -0
  105. package/dist/host/modules/catalog.d.ts.map +1 -0
  106. package/dist/host/modules/catalog.js +112 -0
  107. package/dist/host/modules/catalog.js.map +1 -0
  108. package/dist/host/modules/layout.d.ts +7 -0
  109. package/dist/host/modules/layout.d.ts.map +1 -0
  110. package/dist/host/modules/layout.js +2 -0
  111. package/dist/host/modules/layout.js.map +1 -0
  112. package/dist/host/modules/runtime/LocalFsTargetAdapter.d.ts +34 -0
  113. package/dist/host/modules/runtime/LocalFsTargetAdapter.d.ts.map +1 -0
  114. package/dist/host/modules/runtime/LocalFsTargetAdapter.js +85 -0
  115. package/dist/host/modules/runtime/LocalFsTargetAdapter.js.map +1 -0
  116. package/dist/host/orchestrator/generatedAppFiles.d.ts +8 -0
  117. package/dist/host/orchestrator/generatedAppFiles.d.ts.map +1 -0
  118. package/dist/host/orchestrator/generatedAppFiles.js +125 -0
  119. package/dist/host/orchestrator/generatedAppFiles.js.map +1 -0
  120. package/dist/host/orchestrator/generatedRouteCleanup.d.ts +5 -0
  121. package/dist/host/orchestrator/generatedRouteCleanup.d.ts.map +1 -0
  122. package/dist/host/orchestrator/generatedRouteCleanup.js +117 -0
  123. package/dist/host/orchestrator/generatedRouteCleanup.js.map +1 -0
  124. package/dist/host/orchestrator/infraGenerator.d.ts +35 -0
  125. package/dist/host/orchestrator/infraGenerator.d.ts.map +1 -0
  126. package/dist/host/orchestrator/infraGenerator.js +135 -0
  127. package/dist/host/orchestrator/infraGenerator.js.map +1 -0
  128. package/dist/host/orchestrator/infraRuntime.d.ts +38 -0
  129. package/dist/host/orchestrator/infraRuntime.d.ts.map +1 -0
  130. package/dist/host/orchestrator/infraRuntime.js +227 -0
  131. package/dist/host/orchestrator/infraRuntime.js.map +1 -0
  132. package/dist/host/orchestrator/infraValidation.d.ts +3 -0
  133. package/dist/host/orchestrator/infraValidation.d.ts.map +1 -0
  134. package/dist/host/orchestrator/infraValidation.js +59 -0
  135. package/dist/host/orchestrator/infraValidation.js.map +1 -0
  136. package/dist/host/orchestrator/moduleManager.d.ts +86 -0
  137. package/dist/host/orchestrator/moduleManager.d.ts.map +1 -0
  138. package/dist/host/orchestrator/moduleManager.js +312 -0
  139. package/dist/host/orchestrator/moduleManager.js.map +1 -0
  140. package/dist/host/orchestrator/projectDeletion.d.ts +27 -0
  141. package/dist/host/orchestrator/projectDeletion.d.ts.map +1 -0
  142. package/dist/host/orchestrator/projectDeletion.js +242 -0
  143. package/dist/host/orchestrator/projectDeletion.js.map +1 -0
  144. package/dist/host/orchestrator/projectManager.d.ts +87 -0
  145. package/dist/host/orchestrator/projectManager.d.ts.map +1 -0
  146. package/dist/host/orchestrator/projectManager.js +371 -0
  147. package/dist/host/orchestrator/projectManager.js.map +1 -0
  148. package/dist/host/orchestrator/projectPaths.d.ts +4 -0
  149. package/dist/host/orchestrator/projectPaths.d.ts.map +1 -0
  150. package/dist/host/orchestrator/projectPaths.js +25 -0
  151. package/dist/host/orchestrator/projectPaths.js.map +1 -0
  152. package/dist/host/orchestrator/projectStore.d.ts +24 -0
  153. package/dist/host/orchestrator/projectStore.d.ts.map +1 -0
  154. package/dist/host/orchestrator/projectStore.js +155 -0
  155. package/dist/host/orchestrator/projectStore.js.map +1 -0
  156. package/dist/host/orchestrator/resolveMutations.d.ts +3 -0
  157. package/dist/host/orchestrator/resolveMutations.d.ts.map +1 -0
  158. package/dist/host/orchestrator/resolveMutations.js +12 -0
  159. package/dist/host/orchestrator/resolveMutations.js.map +1 -0
  160. package/dist/host/orchestrator/scaffolder.d.ts +33 -0
  161. package/dist/host/orchestrator/scaffolder.d.ts.map +1 -0
  162. package/dist/host/orchestrator/scaffolder.js +246 -0
  163. package/dist/host/orchestrator/scaffolder.js.map +1 -0
  164. package/dist/host/orchestrator/templates.d.ts +83 -0
  165. package/dist/host/orchestrator/templates.d.ts.map +1 -0
  166. package/dist/host/orchestrator/templates.js +355 -0
  167. package/dist/host/orchestrator/templates.js.map +1 -0
  168. package/dist/host/orchestrator/workspaceRuntime.d.ts +2 -0
  169. package/dist/host/orchestrator/workspaceRuntime.d.ts.map +1 -0
  170. package/dist/host/orchestrator/workspaceRuntime.js +82 -0
  171. package/dist/host/orchestrator/workspaceRuntime.js.map +1 -0
  172. package/dist/host/templateRegistry/index.d.ts +16 -0
  173. package/dist/host/templateRegistry/index.d.ts.map +1 -0
  174. package/dist/host/templateRegistry/index.js +74 -0
  175. package/dist/host/templateRegistry/index.js.map +1 -0
  176. package/dist/host/utils/requirementsInference.d.ts +4 -0
  177. package/dist/host/utils/requirementsInference.d.ts.map +1 -0
  178. package/dist/host/utils/requirementsInference.js +49 -0
  179. package/dist/host/utils/requirementsInference.js.map +1 -0
  180. package/dist/host/utils/trimOutput.d.ts +7 -0
  181. package/dist/host/utils/trimOutput.d.ts.map +1 -0
  182. package/dist/host/utils/trimOutput.js +32 -0
  183. package/dist/host/utils/trimOutput.js.map +1 -0
  184. package/dist/host/utils/workspaceRoot.d.ts +2 -0
  185. package/dist/host/utils/workspaceRoot.d.ts.map +1 -0
  186. package/dist/host/utils/workspaceRoot.js +33 -0
  187. package/dist/host/utils/workspaceRoot.js.map +1 -0
  188. package/dist/host/zoraExtensions/index.d.ts +11 -0
  189. package/dist/host/zoraExtensions/index.d.ts.map +1 -0
  190. package/dist/host/zoraExtensions/index.js +54 -0
  191. package/dist/host/zoraExtensions/index.js.map +1 -0
  192. package/dist/root.d.ts +3 -0
  193. package/dist/root.d.ts.map +1 -0
  194. package/dist/root.js +3 -0
  195. package/dist/root.js.map +1 -0
  196. package/package.json +16 -3
@@ -0,0 +1,262 @@
1
+ import path from 'path';
2
+ const APP_ROOT_REL = 'src/app';
3
+ const AUTH_ADAPTER_FILE_PATH = 'src/auth/adapter.ts';
4
+ const AUTH_SESSION_FILE_PATH = 'src/auth/session.ts';
5
+ const AUTH_SIGN_OUT_FILE_PATH = 'src/app/(app)/sign-out.tsx';
6
+ const DEFAULT_SIGN_IN_SCREEN_ID = 'screen-auth-sign-in';
7
+ const DEFAULT_SIGN_IN_LABEL = 'Sign in';
8
+ const DEFAULT_SIGN_UP_SCREEN_ID = 'screen-auth-sign-up';
9
+ const DEFAULT_SIGN_UP_LABEL = 'Sign up';
10
+ const PUBLIC_GUARD = 'public';
11
+ export function resolveAuthLayoutPlan(input) {
12
+ const { manifest } = input;
13
+ const { auth } = manifest.infra;
14
+ if (auth?.scope !== 'global' || auth.provider !== 'supabase') {
15
+ return createDisabledPlan();
16
+ }
17
+ const signInRoute = manifest.settings.authFlow.signInRoute.trim();
18
+ const signUpRoute = manifest.settings.authFlow.signUpRoute?.trim() ?? '';
19
+ const signOutRoute = manifest.settings.authFlow.signOutRoute?.trim() ?? '';
20
+ const postSignInRoute = manifest.settings.authFlow.postSignInRoute.trim();
21
+ if (!signInRoute || !signUpRoute || !signOutRoute || !postSignInRoute) {
22
+ return createDisabledPlan();
23
+ }
24
+ const signInRouteName = authFlowPathToRouteName(signInRoute);
25
+ const signUpRouteName = authFlowPathToRouteName(signUpRoute);
26
+ const signOutRouteName = authFlowPathToRouteName(signOutRoute);
27
+ const postSignInRouteName = authFlowPathToRouteName(postSignInRoute);
28
+ if (!signInRouteName || !signUpRouteName || !signOutRouteName || !postSignInRouteName) {
29
+ return createDisabledPlan();
30
+ }
31
+ const publicRoutes = collectPublicRoutes(manifest, signInRouteName, signUpRouteName);
32
+ const groupedNavigators = getGroupedAuthNavigators(manifest);
33
+ const hasSignOutRoute = groupedNavigators
34
+ ? groupedNavigators.appNavigator.routes.some((route) => route.name === signOutRouteName)
35
+ : manifest.navigator.routes.some((route) => route.name === signOutRouteName);
36
+ const includeSignOutRoute = !hasSignOutRoute;
37
+ const partitionedNavigators = groupedNavigators
38
+ ? {
39
+ appNavigator: ensureAuthSignOutRoute(groupedNavigators.appNavigator, includeSignOutRoute, signOutRouteName),
40
+ authNavigator: ensureGlobalAuthEntryRoutes(groupedNavigators.authNavigator, {
41
+ signInRouteName,
42
+ signUpRouteName,
43
+ }),
44
+ }
45
+ : partitionRootNavigatorForAuth(manifest, signInRouteName, publicRoutes, includeSignOutRoute, signOutRouteName);
46
+ const authNavigator = groupedNavigators
47
+ ? partitionedNavigators.authNavigator
48
+ : ensureGlobalAuthEntryRoutes(partitionedNavigators.authNavigator, {
49
+ signInRouteName,
50
+ signUpRouteName,
51
+ });
52
+ return {
53
+ enabled: true,
54
+ provider: 'supabase',
55
+ signInRoute,
56
+ signInRouteName,
57
+ signUpRoute,
58
+ signUpRouteName,
59
+ signOutRoute,
60
+ signOutRouteName,
61
+ postSignInRoute,
62
+ postSignInRouteName,
63
+ publicRoutes,
64
+ appNavigator: partitionedNavigators.appNavigator,
65
+ authNavigator,
66
+ generatedFiles: buildGeneratedFilePlans(includeSignOutRoute, signOutRouteName),
67
+ authScreenFiles: [
68
+ ...collectAuthScreenFiles(partitionedNavigators.appNavigator, '(app)', {
69
+ signInRouteName,
70
+ signUpRouteName,
71
+ }),
72
+ ...collectAuthScreenFiles(authNavigator, '(auth)', {
73
+ signInRouteName,
74
+ signUpRouteName,
75
+ }),
76
+ ],
77
+ };
78
+ }
79
+ function createDisabledPlan() {
80
+ return {
81
+ enabled: false,
82
+ publicRoutes: [],
83
+ generatedFiles: [],
84
+ authScreenFiles: [],
85
+ };
86
+ }
87
+ function buildGeneratedFilePlans(includeSignOutRoute, signOutRouteName) {
88
+ const generatedFiles = [
89
+ {
90
+ path: AUTH_ADAPTER_FILE_PATH,
91
+ kind: 'adapter',
92
+ },
93
+ {
94
+ path: AUTH_SESSION_FILE_PATH,
95
+ kind: 'session',
96
+ },
97
+ ];
98
+ if (includeSignOutRoute) {
99
+ generatedFiles.push({
100
+ path: AUTH_SIGN_OUT_FILE_PATH,
101
+ kind: 'sign-out',
102
+ routeName: signOutRouteName,
103
+ });
104
+ }
105
+ return generatedFiles;
106
+ }
107
+ function collectAuthScreenFiles(navigator, currentRel, authRouteNames) {
108
+ const { signInRouteName, signUpRouteName } = authRouteNames;
109
+ const files = [];
110
+ const visit = (node, parentRel) => {
111
+ for (const route of node.routes) {
112
+ const nextRel = parentRel ? path.join(parentRel, route.name) : route.name;
113
+ if (route.navigator) {
114
+ visit(route.navigator, nextRel);
115
+ continue;
116
+ }
117
+ if (!route.screenId || (route.name !== signInRouteName && route.name !== signUpRouteName)) {
118
+ continue;
119
+ }
120
+ files.push({
121
+ path: resolveRouteScreenFilePath(nextRel),
122
+ kind: 'auth-screen',
123
+ routeName: route.name,
124
+ screenId: route.screenId,
125
+ authMode: route.name === signUpRouteName ? 'signUp' : 'signIn',
126
+ });
127
+ }
128
+ };
129
+ visit(navigator, currentRel);
130
+ return files;
131
+ }
132
+ function resolveRouteScreenFilePath(routeRel) {
133
+ const fileName = `${path.basename(routeRel)}.tsx`;
134
+ const dirRel = path.dirname(routeRel);
135
+ const targetDirRel = dirRel === '.' ? '' : dirRel;
136
+ return normalizeRel(path.join(APP_ROOT_REL, targetDirRel, fileName));
137
+ }
138
+ function getGroupedAuthNavigators(manifest) {
139
+ if (manifest.navigator.type !== 'stack') {
140
+ return null;
141
+ }
142
+ const appGroup = manifest.navigator.routes.find((route) => route.name === '(app)');
143
+ const authGroup = manifest.navigator.routes.find((route) => route.name === '(auth)');
144
+ if (!appGroup?.navigator || !authGroup?.navigator) {
145
+ return null;
146
+ }
147
+ return {
148
+ appNavigator: appGroup.navigator,
149
+ authNavigator: authGroup.navigator,
150
+ };
151
+ }
152
+ function ensureAuthSignOutRoute(navigator, includeAuthSignOutRoute, signOutRouteName) {
153
+ if (!includeAuthSignOutRoute ||
154
+ navigator.routes.some((route) => route.name === signOutRouteName)) {
155
+ return navigator;
156
+ }
157
+ return {
158
+ ...navigator,
159
+ routes: [
160
+ ...navigator.routes,
161
+ {
162
+ name: signOutRouteName,
163
+ ...(navigator.type === 'stack' ? {} : { hideInTabBar: true }),
164
+ },
165
+ ],
166
+ };
167
+ }
168
+ function ensureGlobalAuthEntryRoutes(navigator, authRouteNames) {
169
+ const withSignIn = ensureGlobalAuthEntryRoute(navigator, {
170
+ routeName: authRouteNames.signInRouteName,
171
+ routeLabel: DEFAULT_SIGN_IN_LABEL,
172
+ defaultScreenId: DEFAULT_SIGN_IN_SCREEN_ID,
173
+ });
174
+ return ensureGlobalAuthEntryRoute(withSignIn, {
175
+ routeName: authRouteNames.signUpRouteName,
176
+ routeLabel: DEFAULT_SIGN_UP_LABEL,
177
+ defaultScreenId: DEFAULT_SIGN_UP_SCREEN_ID,
178
+ });
179
+ }
180
+ function ensureGlobalAuthEntryRoute(navigator, args) {
181
+ const { routeName, routeLabel, defaultScreenId } = args;
182
+ if (hasRouteName(navigator.routes, routeName)) {
183
+ return navigator;
184
+ }
185
+ return {
186
+ ...navigator,
187
+ routes: [
188
+ ...navigator.routes,
189
+ buildGeneratedAuthRoute({
190
+ routeName,
191
+ routeLabel,
192
+ screenId: defaultScreenId,
193
+ navigatorType: navigator.type,
194
+ }),
195
+ ],
196
+ };
197
+ }
198
+ function partitionRootNavigatorForAuth(manifest, signInRoute, publicRoutes, includeAuthSignOutRoute, signOutRouteName) {
199
+ const publicRouteSet = new Set(publicRoutes);
200
+ const appRoutes = manifest.navigator.routes.filter((route) => !publicRouteSet.has(route.name));
201
+ const authRoutes = manifest.navigator.routes.filter((route) => publicRouteSet.has(route.name));
202
+ const appNavigator = ensureAuthSignOutRoute({
203
+ ...manifest.navigator,
204
+ routes: [...appRoutes],
205
+ }, includeAuthSignOutRoute, signOutRouteName);
206
+ const authNavigator = {
207
+ type: 'stack',
208
+ initialRouteName: signInRoute,
209
+ routes: [...authRoutes],
210
+ };
211
+ return { appNavigator, authNavigator };
212
+ }
213
+ function buildGeneratedAuthRoute(args) {
214
+ const { routeName, routeLabel, screenId, navigatorType } = args;
215
+ return {
216
+ name: routeName,
217
+ label: routeLabel,
218
+ screenId,
219
+ guards: [PUBLIC_GUARD],
220
+ ...(navigatorType === 'tabs' ? { hideInTabBar: true } : {}),
221
+ };
222
+ }
223
+ function collectPublicRoutes(manifest, signInRouteName, signUpRouteName) {
224
+ const unauthorizedRouteName = authFlowPathToRouteName(manifest.settings.authFlow.unauthorizedRoute?.trim() ?? signInRouteName);
225
+ const publicRoutes = new Set([
226
+ signInRouteName,
227
+ signUpRouteName,
228
+ unauthorizedRouteName || signInRouteName,
229
+ ]);
230
+ const visit = (routes) => {
231
+ for (const route of routes) {
232
+ const normalizedGuards = (route.guards ?? []).map((guard) => guard.trim().toLowerCase());
233
+ if (normalizedGuards.some((guard) => guard === 'public' || guard === 'guest')) {
234
+ publicRoutes.add(route.name);
235
+ }
236
+ if (route.navigator?.routes) {
237
+ visit(route.navigator.routes);
238
+ }
239
+ }
240
+ };
241
+ visit(manifest.navigator.routes);
242
+ return [...publicRoutes];
243
+ }
244
+ function hasRouteName(routes, routeName) {
245
+ for (const route of routes) {
246
+ if (route.name === routeName) {
247
+ return true;
248
+ }
249
+ if (route.navigator?.routes && hasRouteName(route.navigator.routes, routeName)) {
250
+ return true;
251
+ }
252
+ }
253
+ return false;
254
+ }
255
+ function normalizeRel(filePath) {
256
+ return filePath.replace(/\\/g, '/');
257
+ }
258
+ function authFlowPathToRouteName(routePath) {
259
+ const normalized = routePath.trim().replace(/^\/+/, '').replace(/\/+$/, '');
260
+ return normalized === '' ? 'index' : normalized;
261
+ }
262
+ //# sourceMappingURL=resolveAuthLayoutPlan.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"resolveAuthLayoutPlan.js","sourceRoot":"","sources":["../../../../src/host/layout/auth/resolveAuthLayoutPlan.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,19 @@
1
+ import type { AppManifest } from '@ankhorage/contracts';
2
+ import { type ExpoRuntimePlan } from '@ankhorage/expo-runtime/planning';
3
+ import type { LayoutMutation } from '../modules/layout';
4
+ export interface GeneratedFile {
5
+ path: string;
6
+ content: string;
7
+ }
8
+ export interface LayoutGenerationOptions {
9
+ includeStudio?: boolean;
10
+ runtimePlan?: ExpoRuntimePlan;
11
+ }
12
+ export declare class LayoutGenerator {
13
+ generateAll(_projectRoot: string, manifest: AppManifest, mutations: LayoutMutation[], options?: LayoutGenerationOptions): GeneratedFile[];
14
+ private getAuthShellLayoutContent;
15
+ private getRootLayoutContent;
16
+ private getGeneratedAuthFileContent;
17
+ private getLayoutTemplate;
18
+ }
19
+ //# sourceMappingURL=layoutGenerator.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"layoutGenerator.d.ts","sourceRoot":"","sources":["../../../src/host/layout/layoutGenerator.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAkC,MAAM,sBAAsB,CAAC;AACxF,OAAO,EACL,KAAK,eAAe,EAErB,MAAM,kCAAkC,CAAC;AAG1C,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAmBxD,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,uBAAuB;IACtC,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,WAAW,CAAC,EAAE,eAAe,CAAC;CAC/B;AAyCD,qBAAa,eAAe;IAC1B,WAAW,CACT,YAAY,EAAE,MAAM,EACpB,QAAQ,EAAE,WAAW,EACrB,SAAS,EAAE,cAAc,EAAE,EAC3B,OAAO,GAAE,uBAA4B,GACpC,aAAa,EAAE;IA6IlB,OAAO,CAAC,yBAAyB;IAkFjC,OAAO,CAAC,oBAAoB;IA+E5B,OAAO,CAAC,2BAA2B;IAmBnC,OAAO,CAAC,iBAAiB;CAO1B"}