@terreno/mcp 0.21.0 → 0.22.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 (999) hide show
  1. package/dist/docs/versioned/0.21.0/README.md +29 -0
  2. package/dist/docs/versioned/0.21.0/explanation/README.md +13 -0
  3. package/dist/docs/versioned/0.21.0/explanation/ai-workflows.md +270 -0
  4. package/dist/docs/versioned/0.21.0/explanation/authentication.md +438 -0
  5. package/dist/docs/versioned/0.21.0/explanation/configuration-system.md +428 -0
  6. package/dist/docs/versioned/0.21.0/explanation/dependency-management.md +192 -0
  7. package/dist/docs/versioned/0.21.0/explanation/gcp-hosting-architecture.md +319 -0
  8. package/dist/docs/versioned/0.21.0/explanation/model-router-actions.md +156 -0
  9. package/dist/docs/versioned/0.21.0/explanation/modular-api-design.md +228 -0
  10. package/dist/docs/versioned/0.21.0/how-to/README.md +20 -0
  11. package/dist/docs/versioned/0.21.0/how-to/add-feature-flags.md +115 -0
  12. package/dist/docs/versioned/0.21.0/how-to/add-github-oauth.md +316 -0
  13. package/dist/docs/versioned/0.21.0/how-to/configure-better-auth.md +296 -0
  14. package/dist/docs/versioned/0.21.0/how-to/create-a-model.md +165 -0
  15. package/dist/docs/versioned/0.21.0/how-to/deploy-to-gcp.md +244 -0
  16. package/dist/docs/versioned/0.21.0/how-to/upgrade-banner.md +172 -0
  17. package/dist/docs/versioned/0.21.0/how-to/websocket-integration.md +416 -0
  18. package/dist/docs/versioned/0.21.0/implementationPlans/IP_TEMPLATE.md +47 -0
  19. package/dist/docs/versioned/0.21.0/implementationPlans/ModularAPI.md +844 -0
  20. package/dist/docs/versioned/0.21.0/implementationPlans/PLAN_INDEX.md +21 -0
  21. package/dist/docs/versioned/0.21.0/implementationPlans/README.md +42 -0
  22. package/dist/docs/versioned/0.21.0/implementationPlans/admin-improvements.md +577 -0
  23. package/dist/docs/versioned/0.21.0/implementationPlans/admin-only-research.md +258 -0
  24. package/dist/docs/versioned/0.21.0/implementationPlans/admin-only.md +616 -0
  25. package/dist/docs/versioned/0.21.0/implementationPlans/admin-script-runner.md +107 -0
  26. package/dist/docs/versioned/0.21.0/implementationPlans/admin-ui-v2-django-parity.md +204 -0
  27. package/dist/docs/versioned/0.21.0/implementationPlans/consent-forms.md +417 -0
  28. package/dist/docs/versioned/0.21.0/implementationPlans/design-blend-skill.md +188 -0
  29. package/dist/docs/versioned/0.21.0/implementationPlans/docs-site-and-versioning.md +138 -0
  30. package/dist/docs/versioned/0.21.0/implementationPlans/feature-flags-openfeature.md +545 -0
  31. package/dist/docs/versioned/0.21.0/implementationPlans/feature-flags.md +310 -0
  32. package/dist/docs/versioned/0.21.0/implementationPlans/mcp-boost-parity.md +246 -0
  33. package/dist/docs/versioned/0.21.0/implementationPlans/model-router-actions.md +639 -0
  34. package/dist/docs/versioned/0.21.0/implementationPlans/model-router-mcp.md +186 -0
  35. package/dist/docs/versioned/0.21.0/implementationPlans/offline-mode.md +311 -0
  36. package/dist/docs/versioned/0.21.0/implementationPlans/terreno-langfuse-integration.md +145 -0
  37. package/dist/docs/versioned/0.21.0/implementationPlans/upgrade-banner.md +275 -0
  38. package/dist/docs/versioned/0.21.0/reference/README.md +22 -0
  39. package/dist/docs/versioned/0.21.0/reference/admin-backend.md +122 -0
  40. package/dist/docs/versioned/0.21.0/reference/admin-frontend.md +205 -0
  41. package/dist/docs/versioned/0.21.0/reference/api-health.md +81 -0
  42. package/dist/docs/versioned/0.21.0/reference/api.md +1205 -0
  43. package/dist/docs/versioned/0.21.0/reference/components/README.mdx +65 -0
  44. package/dist/docs/versioned/0.21.0/reference/components/accordion.mdx +36 -0
  45. package/dist/docs/versioned/0.21.0/reference/components/addressfield.mdx +26 -0
  46. package/dist/docs/versioned/0.21.0/reference/components/ai-suggestion-box.mdx +26 -0
  47. package/dist/docs/versioned/0.21.0/reference/components/avatar.mdx +35 -0
  48. package/dist/docs/versioned/0.21.0/reference/components/badge.mdx +38 -0
  49. package/dist/docs/versioned/0.21.0/reference/components/banner.mdx +26 -0
  50. package/dist/docs/versioned/0.21.0/reference/components/boolean-field.mdx +34 -0
  51. package/dist/docs/versioned/0.21.0/reference/components/box.mdx +26 -0
  52. package/dist/docs/versioned/0.21.0/reference/components/button.mdx +43 -0
  53. package/dist/docs/versioned/0.21.0/reference/components/card.mdx +26 -0
  54. package/dist/docs/versioned/0.21.0/reference/components/checkbox.mdx +29 -0
  55. package/dist/docs/versioned/0.21.0/reference/components/consentformscreen.mdx +26 -0
  56. package/dist/docs/versioned/0.21.0/reference/components/custom-select-field.mdx +34 -0
  57. package/dist/docs/versioned/0.21.0/reference/components/datatable.mdx +41 -0
  58. package/dist/docs/versioned/0.21.0/reference/components/date-time-field.mdx +48 -0
  59. package/dist/docs/versioned/0.21.0/reference/components/email-field.mdx +42 -0
  60. package/dist/docs/versioned/0.21.0/reference/components/emoji-selector.mdx +26 -0
  61. package/dist/docs/versioned/0.21.0/reference/components/field.mdx +26 -0
  62. package/dist/docs/versioned/0.21.0/reference/components/height-field.mdx +44 -0
  63. package/dist/docs/versioned/0.21.0/reference/components/icon.mdx +31 -0
  64. package/dist/docs/versioned/0.21.0/reference/components/iconbutton.mdx +42 -0
  65. package/dist/docs/versioned/0.21.0/reference/components/inner-modal-content.mdx +39 -0
  66. package/dist/docs/versioned/0.21.0/reference/components/markdown-editor-field.mdx +49 -0
  67. package/dist/docs/versioned/0.21.0/reference/components/markdownview.mdx +37 -0
  68. package/dist/docs/versioned/0.21.0/reference/components/multiselect-field.mdx +34 -0
  69. package/dist/docs/versioned/0.21.0/reference/components/number-field.mdx +45 -0
  70. package/dist/docs/versioned/0.21.0/reference/components/page.mdx +45 -0
  71. package/dist/docs/versioned/0.21.0/reference/components/pagination.mdx +29 -0
  72. package/dist/docs/versioned/0.21.0/reference/components/password-field.mdx +26 -0
  73. package/dist/docs/versioned/0.21.0/reference/components/phone-number-field.mdx +43 -0
  74. package/dist/docs/versioned/0.21.0/reference/components/radio-field.mdx +31 -0
  75. package/dist/docs/versioned/0.21.0/reference/components/sectiondivider.mdx +26 -0
  76. package/dist/docs/versioned/0.21.0/reference/components/segmented-control.mdx +32 -0
  77. package/dist/docs/versioned/0.21.0/reference/components/select-field.mdx +26 -0
  78. package/dist/docs/versioned/0.21.0/reference/components/selectbadge.mdx +35 -0
  79. package/dist/docs/versioned/0.21.0/reference/components/side-drawer.mdx +34 -0
  80. package/dist/docs/versioned/0.21.0/reference/components/sidebar-navigation-non-expo.mdx +35 -0
  81. package/dist/docs/versioned/0.21.0/reference/components/signature-field.mdx +35 -0
  82. package/dist/docs/versioned/0.21.0/reference/components/slider.mdx +43 -0
  83. package/dist/docs/versioned/0.21.0/reference/components/spinner.mdx +28 -0
  84. package/dist/docs/versioned/0.21.0/reference/components/table-badge.mdx +32 -0
  85. package/dist/docs/versioned/0.21.0/reference/components/table-boolean.mdx +29 -0
  86. package/dist/docs/versioned/0.21.0/reference/components/table-date.mdx +30 -0
  87. package/dist/docs/versioned/0.21.0/reference/components/table-icon-button.mdx +28 -0
  88. package/dist/docs/versioned/0.21.0/reference/components/table-number.mdx +30 -0
  89. package/dist/docs/versioned/0.21.0/reference/components/table-text.mdx +30 -0
  90. package/dist/docs/versioned/0.21.0/reference/components/table-title.mdx +28 -0
  91. package/dist/docs/versioned/0.21.0/reference/components/table.mdx +38 -0
  92. package/dist/docs/versioned/0.21.0/reference/components/tap-to-edit.mdx +26 -0
  93. package/dist/docs/versioned/0.21.0/reference/components/text-area.mdx +49 -0
  94. package/dist/docs/versioned/0.21.0/reference/components/text-field.mdx +51 -0
  95. package/dist/docs/versioned/0.21.0/reference/components/theme.mdx +26 -0
  96. package/dist/docs/versioned/0.21.0/reference/components/toast.mdx +26 -0
  97. package/dist/docs/versioned/0.21.0/reference/components/tooltip.mdx +30 -0
  98. package/dist/docs/versioned/0.21.0/reference/components/userinactivity.mdx +32 -0
  99. package/dist/docs/versioned/0.21.0/reference/environment-variables.md +382 -0
  100. package/dist/docs/versioned/0.21.0/reference/feature-flags.md +304 -0
  101. package/dist/docs/versioned/0.21.0/reference/generated/README.md +17 -0
  102. package/dist/docs/versioned/0.21.0/reference/generated/api/README.md +276 -0
  103. package/dist/docs/versioned/0.21.0/reference/generated/api/classes/APIError.md +96 -0
  104. package/dist/docs/versioned/0.21.0/reference/generated/api/classes/BetterAuthApp.md +84 -0
  105. package/dist/docs/versioned/0.21.0/reference/generated/api/classes/CachingSecretProvider.md +118 -0
  106. package/dist/docs/versioned/0.21.0/reference/generated/api/classes/CompositeSecretProvider.md +79 -0
  107. package/dist/docs/versioned/0.21.0/reference/generated/api/classes/ConfigurationApp.md +94 -0
  108. package/dist/docs/versioned/0.21.0/reference/generated/api/classes/ConsentApp.md +74 -0
  109. package/dist/docs/versioned/0.21.0/reference/generated/api/classes/DateOnly.md +123 -0
  110. package/dist/docs/versioned/0.21.0/reference/generated/api/classes/EnvSecretProvider.md +64 -0
  111. package/dist/docs/versioned/0.21.0/reference/generated/api/classes/GcpSecretProvider.md +76 -0
  112. package/dist/docs/versioned/0.21.0/reference/generated/api/classes/OpenApiMiddlewareBuilder.md +543 -0
  113. package/dist/docs/versioned/0.21.0/reference/generated/api/classes/RealtimeApp.md +112 -0
  114. package/dist/docs/versioned/0.21.0/reference/generated/api/classes/TaskCancelledError.md +23 -0
  115. package/dist/docs/versioned/0.21.0/reference/generated/api/classes/TerrenoApp.md +262 -0
  116. package/dist/docs/versioned/0.21.0/reference/generated/api/classes/VersionCheckPlugin.md +43 -0
  117. package/dist/docs/versioned/0.21.0/reference/generated/api/functions/AdminOwnerTransformer.md +47 -0
  118. package/dist/docs/versioned/0.21.0/reference/generated/api/functions/OwnerQueryFilter.md +11 -0
  119. package/dist/docs/versioned/0.21.0/reference/generated/api/functions/addAuthRoutes.md +19 -0
  120. package/dist/docs/versioned/0.21.0/reference/generated/api/functions/addGitHubAuthRoutes.md +31 -0
  121. package/dist/docs/versioned/0.21.0/reference/generated/api/functions/addMeRoutes.md +19 -0
  122. package/dist/docs/versioned/0.21.0/reference/generated/api/functions/addPopulateToQuery.md +15 -0
  123. package/dist/docs/versioned/0.21.0/reference/generated/api/functions/addQuerySubscription.md +26 -0
  124. package/dist/docs/versioned/0.21.0/reference/generated/api/functions/apiErrorMiddleware.md +23 -0
  125. package/dist/docs/versioned/0.21.0/reference/generated/api/functions/apiFallthroughErrorMiddleware.md +26 -0
  126. package/dist/docs/versioned/0.21.0/reference/generated/api/functions/apiUnauthorizedMiddleware.md +23 -0
  127. package/dist/docs/versioned/0.21.0/reference/generated/api/functions/applyRequestContextToSentry.md +11 -0
  128. package/dist/docs/versioned/0.21.0/reference/generated/api/functions/assertNoActionCollisions.md +21 -0
  129. package/dist/docs/versioned/0.21.0/reference/generated/api/functions/asyncHandler.md +15 -0
  130. package/dist/docs/versioned/0.21.0/reference/generated/api/functions/authenticateMiddleware.md +11 -0
  131. package/dist/docs/versioned/0.21.0/reference/generated/api/functions/baseUserPlugin.md +11 -0
  132. package/dist/docs/versioned/0.21.0/reference/generated/api/functions/buildQuerySchemaFromFields.md +30 -0
  133. package/dist/docs/versioned/0.21.0/reference/generated/api/functions/checkModelsStrict.md +21 -0
  134. package/dist/docs/versioned/0.21.0/reference/generated/api/functions/checkPermissions.md +29 -0
  135. package/dist/docs/versioned/0.21.0/reference/generated/api/functions/clearQueryStore.md +7 -0
  136. package/dist/docs/versioned/0.21.0/reference/generated/api/functions/clearRealtimeRegistry.md +7 -0
  137. package/dist/docs/versioned/0.21.0/reference/generated/api/functions/computeQueryId.md +18 -0
  138. package/dist/docs/versioned/0.21.0/reference/generated/api/functions/configurationPlugin.md +48 -0
  139. package/dist/docs/versioned/0.21.0/reference/generated/api/functions/configureOpenApiValidator.md +28 -0
  140. package/dist/docs/versioned/0.21.0/reference/generated/api/functions/createActionOpenApiMiddleware.md +35 -0
  141. package/dist/docs/versioned/0.21.0/reference/generated/api/functions/createBetterAuth.md +13 -0
  142. package/dist/docs/versioned/0.21.0/reference/generated/api/functions/createBetterAuthSessionMiddleware.md +18 -0
  143. package/dist/docs/versioned/0.21.0/reference/generated/api/functions/createFeatureFlaggedLogger.md +53 -0
  144. package/dist/docs/versioned/0.21.0/reference/generated/api/functions/createModelValidators.md +74 -0
  145. package/dist/docs/versioned/0.21.0/reference/generated/api/functions/createOpenApiBuilder.md +39 -0
  146. package/dist/docs/versioned/0.21.0/reference/generated/api/functions/createRouter.md +19 -0
  147. package/dist/docs/versioned/0.21.0/reference/generated/api/functions/createRouterWithAuth.md +19 -0
  148. package/dist/docs/versioned/0.21.0/reference/generated/api/functions/createScopedLogger.md +53 -0
  149. package/dist/docs/versioned/0.21.0/reference/generated/api/functions/createValidator.md +29 -0
  150. package/dist/docs/versioned/0.21.0/reference/generated/api/functions/createdUpdatedPlugin.md +11 -0
  151. package/dist/docs/versioned/0.21.0/reference/generated/api/functions/cronjob.md +19 -0
  152. package/dist/docs/versioned/0.21.0/reference/generated/api/functions/defaultResponseHandler.md +32 -0
  153. package/dist/docs/versioned/0.21.0/reference/generated/api/functions/defineCollectionAction.md +25 -0
  154. package/dist/docs/versioned/0.21.0/reference/generated/api/functions/defineInstanceAction.md +29 -0
  155. package/dist/docs/versioned/0.21.0/reference/generated/api/functions/envConfigurationPlugin.md +11 -0
  156. package/dist/docs/versioned/0.21.0/reference/generated/api/functions/errorMessage.md +13 -0
  157. package/dist/docs/versioned/0.21.0/reference/generated/api/functions/errorStack.md +13 -0
  158. package/dist/docs/versioned/0.21.0/reference/generated/api/functions/errorsPlugin.md +11 -0
  159. package/dist/docs/versioned/0.21.0/reference/generated/api/functions/findExactlyOne.md +25 -0
  160. package/dist/docs/versioned/0.21.0/reference/generated/api/functions/findOneOrNone.md +24 -0
  161. package/dist/docs/versioned/0.21.0/reference/generated/api/functions/findOneOrNoneFor.md +37 -0
  162. package/dist/docs/versioned/0.21.0/reference/generated/api/functions/findRegistryEntryByCollection.md +13 -0
  163. package/dist/docs/versioned/0.21.0/reference/generated/api/functions/findRegistryEntryByRoutePath.md +13 -0
  164. package/dist/docs/versioned/0.21.0/reference/generated/api/functions/firebaseJWTPlugin.md +11 -0
  165. package/dist/docs/versioned/0.21.0/reference/generated/api/functions/fixMixedFields.md +21 -0
  166. package/dist/docs/versioned/0.21.0/reference/generated/api/functions/flattenToDotPaths.md +24 -0
  167. package/dist/docs/versioned/0.21.0/reference/generated/api/functions/formatLogContextSuffix.md +17 -0
  168. package/dist/docs/versioned/0.21.0/reference/generated/api/functions/generateTokens.md +35 -0
  169. package/dist/docs/versioned/0.21.0/reference/generated/api/functions/getAPIErrorBody.md +11 -0
  170. package/dist/docs/versioned/0.21.0/reference/generated/api/functions/getBetterAuthSession.md +13 -0
  171. package/dist/docs/versioned/0.21.0/reference/generated/api/functions/getCurrentLogContext.md +9 -0
  172. package/dist/docs/versioned/0.21.0/reference/generated/api/functions/getCurrentRequestContext.md +8 -0
  173. package/dist/docs/versioned/0.21.0/reference/generated/api/functions/getCurrentRequestContextAttributes.md +15 -0
  174. package/dist/docs/versioned/0.21.0/reference/generated/api/functions/getDisableExternalErrorTracking.md +15 -0
  175. package/dist/docs/versioned/0.21.0/reference/generated/api/functions/getMongoClientFromMongoose.md +7 -0
  176. package/dist/docs/versioned/0.21.0/reference/generated/api/functions/getOpenApiSpecForModel.md +29 -0
  177. package/dist/docs/versioned/0.21.0/reference/generated/api/functions/getOpenApiValidatorConfig.md +7 -0
  178. package/dist/docs/versioned/0.21.0/reference/generated/api/functions/getQuerySubscriptionsForCollection.md +14 -0
  179. package/dist/docs/versioned/0.21.0/reference/generated/api/functions/getRealtimeRegistry.md +7 -0
  180. package/dist/docs/versioned/0.21.0/reference/generated/api/functions/getRequestContextFromAttributes.md +11 -0
  181. package/dist/docs/versioned/0.21.0/reference/generated/api/functions/getSchemaFromModel.md +25 -0
  182. package/dist/docs/versioned/0.21.0/reference/generated/api/functions/getSessionIdFromJwtPayload.md +11 -0
  183. package/dist/docs/versioned/0.21.0/reference/generated/api/functions/githubUserPlugin.md +22 -0
  184. package/dist/docs/versioned/0.21.0/reference/generated/api/functions/hasBetterAuthSession.md +13 -0
  185. package/dist/docs/versioned/0.21.0/reference/generated/api/functions/installRealtimeSocketHandlers.md +27 -0
  186. package/dist/docs/versioned/0.21.0/reference/generated/api/functions/isAPIError.md +11 -0
  187. package/dist/docs/versioned/0.21.0/reference/generated/api/functions/isDeletedPlugin.md +15 -0
  188. package/dist/docs/versioned/0.21.0/reference/generated/api/functions/isDisabledPlugin.md +15 -0
  189. package/dist/docs/versioned/0.21.0/reference/generated/api/functions/isOpenApiValidatorConfigured.md +8 -0
  190. package/dist/docs/versioned/0.21.0/reference/generated/api/functions/isValidObjectId.md +11 -0
  191. package/dist/docs/versioned/0.21.0/reference/generated/api/functions/jsonResponseRequestIdMiddleware.md +24 -0
  192. package/dist/docs/versioned/0.21.0/reference/generated/api/functions/logRequests.md +19 -0
  193. package/dist/docs/versioned/0.21.0/reference/generated/api/functions/matchesQuery.md +23 -0
  194. package/dist/docs/versioned/0.21.0/reference/generated/api/functions/modelRouter.md +83 -0
  195. package/dist/docs/versioned/0.21.0/reference/generated/api/functions/mongooseErrorToAPIError.md +13 -0
  196. package/dist/docs/versioned/0.21.0/reference/generated/api/functions/mountBetterAuthRoutes.md +21 -0
  197. package/dist/docs/versioned/0.21.0/reference/generated/api/functions/openApiCompatMiddleware.md +22 -0
  198. package/dist/docs/versioned/0.21.0/reference/generated/api/functions/openApiEtagMiddleware.md +23 -0
  199. package/dist/docs/versioned/0.21.0/reference/generated/api/functions/patchAppUse.md +17 -0
  200. package/dist/docs/versioned/0.21.0/reference/generated/api/functions/permissionMiddleware.md +21 -0
  201. package/dist/docs/versioned/0.21.0/reference/generated/api/functions/registerActionRoutes.md +25 -0
  202. package/dist/docs/versioned/0.21.0/reference/generated/api/functions/registerRealtime.md +14 -0
  203. package/dist/docs/versioned/0.21.0/reference/generated/api/functions/removeAllSocketQueries.md +13 -0
  204. package/dist/docs/versioned/0.21.0/reference/generated/api/functions/removeQuerySubscription.md +17 -0
  205. package/dist/docs/versioned/0.21.0/reference/generated/api/functions/requestContextMiddleware.md +26 -0
  206. package/dist/docs/versioned/0.21.0/reference/generated/api/functions/resetOpenApiValidatorConfig.md +9 -0
  207. package/dist/docs/versioned/0.21.0/reference/generated/api/functions/runActionPermissions.md +33 -0
  208. package/dist/docs/versioned/0.21.0/reference/generated/api/functions/runWithRequestContext.md +38 -0
  209. package/dist/docs/versioned/0.21.0/reference/generated/api/functions/runWithRequestContextAttributes.md +25 -0
  210. package/dist/docs/versioned/0.21.0/reference/generated/api/functions/sendToGoogleChat.md +25 -0
  211. package/dist/docs/versioned/0.21.0/reference/generated/api/functions/sendToSlack.md +29 -0
  212. package/dist/docs/versioned/0.21.0/reference/generated/api/functions/sendToZoom.md +67 -0
  213. package/dist/docs/versioned/0.21.0/reference/generated/api/functions/sentryAppVersionMiddleware.md +26 -0
  214. package/dist/docs/versioned/0.21.0/reference/generated/api/functions/serialize.md +25 -0
  215. package/dist/docs/versioned/0.21.0/reference/generated/api/functions/setRequestContext.md +11 -0
  216. package/dist/docs/versioned/0.21.0/reference/generated/api/functions/setupAuth.md +15 -0
  217. package/dist/docs/versioned/0.21.0/reference/generated/api/functions/setupBetterAuthUserSync.md +21 -0
  218. package/dist/docs/versioned/0.21.0/reference/generated/api/functions/setupEnvironment.md +5 -0
  219. package/dist/docs/versioned/0.21.0/reference/generated/api/functions/setupGitHubAuth.md +22 -0
  220. package/dist/docs/versioned/0.21.0/reference/generated/api/functions/setupLogging.md +11 -0
  221. package/dist/docs/versioned/0.21.0/reference/generated/api/functions/signupUser.md +23 -0
  222. package/dist/docs/versioned/0.21.0/reference/generated/api/functions/startChangeStreamWatcher.md +21 -0
  223. package/dist/docs/versioned/0.21.0/reference/generated/api/functions/stopChangeStreamWatcher.md +7 -0
  224. package/dist/docs/versioned/0.21.0/reference/generated/api/functions/syncBetterAuthUser.md +19 -0
  225. package/dist/docs/versioned/0.21.0/reference/generated/api/functions/syncConsents.md +45 -0
  226. package/dist/docs/versioned/0.21.0/reference/generated/api/functions/timeout.md +11 -0
  227. package/dist/docs/versioned/0.21.0/reference/generated/api/functions/transform.md +29 -0
  228. package/dist/docs/versioned/0.21.0/reference/generated/api/functions/unpopulate.md +21 -0
  229. package/dist/docs/versioned/0.21.0/reference/generated/api/functions/updateRequestContextFromRequest.md +15 -0
  230. package/dist/docs/versioned/0.21.0/reference/generated/api/functions/upsertPlugin.md +23 -0
  231. package/dist/docs/versioned/0.21.0/reference/generated/api/functions/validateActionRequest.md +35 -0
  232. package/dist/docs/versioned/0.21.0/reference/generated/api/functions/validateModelRequestBody.md +30 -0
  233. package/dist/docs/versioned/0.21.0/reference/generated/api/functions/validateQueryParams.md +23 -0
  234. package/dist/docs/versioned/0.21.0/reference/generated/api/functions/validateRequestBody.md +26 -0
  235. package/dist/docs/versioned/0.21.0/reference/generated/api/functions/validateResponseData.md +32 -0
  236. package/dist/docs/versioned/0.21.0/reference/generated/api/functions/wrapActionResponse.md +19 -0
  237. package/dist/docs/versioned/0.21.0/reference/generated/api/functions/wrapScript.md +15 -0
  238. package/dist/docs/versioned/0.21.0/reference/generated/api/interfaces/APIErrorConstructor.md +93 -0
  239. package/dist/docs/versioned/0.21.0/reference/generated/api/interfaces/ActionContext.md +49 -0
  240. package/dist/docs/versioned/0.21.0/reference/generated/api/interfaces/AsyncHandlerOptions.md +32 -0
  241. package/dist/docs/versioned/0.21.0/reference/generated/api/interfaces/AuthOptions.md +47 -0
  242. package/dist/docs/versioned/0.21.0/reference/generated/api/interfaces/BackgroundTaskDocument.md +141 -0
  243. package/dist/docs/versioned/0.21.0/reference/generated/api/interfaces/BackgroundTaskMethods.md +55 -0
  244. package/dist/docs/versioned/0.21.0/reference/generated/api/interfaces/BackgroundTaskModel.md +51 -0
  245. package/dist/docs/versioned/0.21.0/reference/generated/api/interfaces/BackgroundTaskStatics.md +19 -0
  246. package/dist/docs/versioned/0.21.0/reference/generated/api/interfaces/BaseUser.md +11 -0
  247. package/dist/docs/versioned/0.21.0/reference/generated/api/interfaces/BetterAuthAppOptions.md +11 -0
  248. package/dist/docs/versioned/0.21.0/reference/generated/api/interfaces/BetterAuthConfig.md +74 -0
  249. package/dist/docs/versioned/0.21.0/reference/generated/api/interfaces/BetterAuthOAuthProvider.md +13 -0
  250. package/dist/docs/versioned/0.21.0/reference/generated/api/interfaces/BetterAuthSession.md +43 -0
  251. package/dist/docs/versioned/0.21.0/reference/generated/api/interfaces/BetterAuthSessionData.md +13 -0
  252. package/dist/docs/versioned/0.21.0/reference/generated/api/interfaces/BetterAuthUser.md +43 -0
  253. package/dist/docs/versioned/0.21.0/reference/generated/api/interfaces/CachingSecretProviderOptions.md +9 -0
  254. package/dist/docs/versioned/0.21.0/reference/generated/api/interfaces/ChangeStreamConfig.md +41 -0
  255. package/dist/docs/versioned/0.21.0/reference/generated/api/interfaces/CollectionActionConfig.md +123 -0
  256. package/dist/docs/versioned/0.21.0/reference/generated/api/interfaces/ConfigRegistration.md +23 -0
  257. package/dist/docs/versioned/0.21.0/reference/generated/api/interfaces/ConfigurationAppOptions.md +51 -0
  258. package/dist/docs/versioned/0.21.0/reference/generated/api/interfaces/ConfigurationMetaResponse.md +7 -0
  259. package/dist/docs/versioned/0.21.0/reference/generated/api/interfaces/ConfigurationModel.md +166 -0
  260. package/dist/docs/versioned/0.21.0/reference/generated/api/interfaces/ConfigurationPermissions.md +45 -0
  261. package/dist/docs/versioned/0.21.0/reference/generated/api/interfaces/ConfigurationPluginOptions.md +30 -0
  262. package/dist/docs/versioned/0.21.0/reference/generated/api/interfaces/ConfigurationStatics.md +107 -0
  263. package/dist/docs/versioned/0.21.0/reference/generated/api/interfaces/ConsentAppOptions.md +85 -0
  264. package/dist/docs/versioned/0.21.0/reference/generated/api/interfaces/ConsentFormCheckbox.md +17 -0
  265. package/dist/docs/versioned/0.21.0/reference/generated/api/interfaces/ConsentFormDefinition.md +83 -0
  266. package/dist/docs/versioned/0.21.0/reference/generated/api/interfaces/ConsentFormDocument.md +123 -0
  267. package/dist/docs/versioned/0.21.0/reference/generated/api/interfaces/ConsentFormModel.md +79 -0
  268. package/dist/docs/versioned/0.21.0/reference/generated/api/interfaces/ConsentFormStatics.md +55 -0
  269. package/dist/docs/versioned/0.21.0/reference/generated/api/interfaces/ConsentResponseDocument.md +105 -0
  270. package/dist/docs/versioned/0.21.0/reference/generated/api/interfaces/ConsentResponseMethods.md +1 -0
  271. package/dist/docs/versioned/0.21.0/reference/generated/api/interfaces/ConsentResponseModel.md +79 -0
  272. package/dist/docs/versioned/0.21.0/reference/generated/api/interfaces/ConsentResponseStatics.md +55 -0
  273. package/dist/docs/versioned/0.21.0/reference/generated/api/interfaces/CreateBetterAuthOptions.md +17 -0
  274. package/dist/docs/versioned/0.21.0/reference/generated/api/interfaces/CreateFeatureFlaggedLoggerOptions.md +29 -0
  275. package/dist/docs/versioned/0.21.0/reference/generated/api/interfaces/CreateScopedLoggerOptions.md +18 -0
  276. package/dist/docs/versioned/0.21.0/reference/generated/api/interfaces/CreateValidatorOptions.md +25 -0
  277. package/dist/docs/versioned/0.21.0/reference/generated/api/interfaces/CreatedDeleted.md +27 -0
  278. package/dist/docs/versioned/0.21.0/reference/generated/api/interfaces/DocumentSubscription.md +17 -0
  279. package/dist/docs/versioned/0.21.0/reference/generated/api/interfaces/FindExactlyOnePlugin.md +30 -0
  280. package/dist/docs/versioned/0.21.0/reference/generated/api/interfaces/FindOneOrNonePlugin.md +30 -0
  281. package/dist/docs/versioned/0.21.0/reference/generated/api/interfaces/GcpSecretProviderOptions.md +9 -0
  282. package/dist/docs/versioned/0.21.0/reference/generated/api/interfaces/GenerateTokensOptions.md +5 -0
  283. package/dist/docs/versioned/0.21.0/reference/generated/api/interfaces/GitHubAuthOptions.md +74 -0
  284. package/dist/docs/versioned/0.21.0/reference/generated/api/interfaces/GitHubUserFields.md +33 -0
  285. package/dist/docs/versioned/0.21.0/reference/generated/api/interfaces/HasUpsert.md +27 -0
  286. package/dist/docs/versioned/0.21.0/reference/generated/api/interfaces/InstanceActionConfig.md +127 -0
  287. package/dist/docs/versioned/0.21.0/reference/generated/api/interfaces/IsDeleted.md +7 -0
  288. package/dist/docs/versioned/0.21.0/reference/generated/api/interfaces/JSONArray.md +7 -0
  289. package/dist/docs/versioned/0.21.0/reference/generated/api/interfaces/JSONObject.md +3 -0
  290. package/dist/docs/versioned/0.21.0/reference/generated/api/interfaces/JwtSessionPayload.md +19 -0
  291. package/dist/docs/versioned/0.21.0/reference/generated/api/interfaces/LogContextFields.md +41 -0
  292. package/dist/docs/versioned/0.21.0/reference/generated/api/interfaces/LoggingOptions.md +73 -0
  293. package/dist/docs/versioned/0.21.0/reference/generated/api/interfaces/ModelRouterOptions.md +524 -0
  294. package/dist/docs/versioned/0.21.0/reference/generated/api/interfaces/ModelRouterRegistration.md +33 -0
  295. package/dist/docs/versioned/0.21.0/reference/generated/api/interfaces/ModelRouterValidationOptions.md +89 -0
  296. package/dist/docs/versioned/0.21.0/reference/generated/api/interfaces/MongoClientLike.md +11 -0
  297. package/dist/docs/versioned/0.21.0/reference/generated/api/interfaces/OpenApiBuildResult.md +34 -0
  298. package/dist/docs/versioned/0.21.0/reference/generated/api/interfaces/OpenApiMiddleware.md +98 -0
  299. package/dist/docs/versioned/0.21.0/reference/generated/api/interfaces/OpenApiParameter.md +66 -0
  300. package/dist/docs/versioned/0.21.0/reference/generated/api/interfaces/OpenApiResponse.md +43 -0
  301. package/dist/docs/versioned/0.21.0/reference/generated/api/interfaces/OpenApiSchema.md +62 -0
  302. package/dist/docs/versioned/0.21.0/reference/generated/api/interfaces/OpenApiSchemaProperty.md +89 -0
  303. package/dist/docs/versioned/0.21.0/reference/generated/api/interfaces/OpenApiValidatorConfig.md +94 -0
  304. package/dist/docs/versioned/0.21.0/reference/generated/api/interfaces/PopulatePath.md +17 -0
  305. package/dist/docs/versioned/0.21.0/reference/generated/api/interfaces/QuerySubscription.md +25 -0
  306. package/dist/docs/versioned/0.21.0/reference/generated/api/interfaces/QueryValidatorOptions.md +31 -0
  307. package/dist/docs/versioned/0.21.0/reference/generated/api/interfaces/RESTPermissions.md +35 -0
  308. package/dist/docs/versioned/0.21.0/reference/generated/api/interfaces/RealtimeAppOptions.md +62 -0
  309. package/dist/docs/versioned/0.21.0/reference/generated/api/interfaces/RealtimeConfig.md +44 -0
  310. package/dist/docs/versioned/0.21.0/reference/generated/api/interfaces/RealtimeEvent.md +57 -0
  311. package/dist/docs/versioned/0.21.0/reference/generated/api/interfaces/RealtimeRegistryEntry.md +41 -0
  312. package/dist/docs/versioned/0.21.0/reference/generated/api/interfaces/RealtimeSocketLike.md +94 -0
  313. package/dist/docs/versioned/0.21.0/reference/generated/api/interfaces/RequestBodyValidatorOptions.md +71 -0
  314. package/dist/docs/versioned/0.21.0/reference/generated/api/interfaces/RequestContext.md +59 -0
  315. package/dist/docs/versioned/0.21.0/reference/generated/api/interfaces/ScopedLogger.md +100 -0
  316. package/dist/docs/versioned/0.21.0/reference/generated/api/interfaces/ScriptContext.md +59 -0
  317. package/dist/docs/versioned/0.21.0/reference/generated/api/interfaces/ScriptResult.md +11 -0
  318. package/dist/docs/versioned/0.21.0/reference/generated/api/interfaces/SecretFieldMeta.md +29 -0
  319. package/dist/docs/versioned/0.21.0/reference/generated/api/interfaces/SecretProvider.md +35 -0
  320. package/dist/docs/versioned/0.21.0/reference/generated/api/interfaces/SyncConsentsOptions.md +15 -0
  321. package/dist/docs/versioned/0.21.0/reference/generated/api/interfaces/SyncConsentsResult.md +23 -0
  322. package/dist/docs/versioned/0.21.0/reference/generated/api/interfaces/TerrenoAppOptions.md +112 -0
  323. package/dist/docs/versioned/0.21.0/reference/generated/api/interfaces/TerrenoPlugin.md +78 -0
  324. package/dist/docs/versioned/0.21.0/reference/generated/api/interfaces/TerrenoRequestLogEntry.md +13 -0
  325. package/dist/docs/versioned/0.21.0/reference/generated/api/interfaces/TerrenoTransformer.md +49 -0
  326. package/dist/docs/versioned/0.21.0/reference/generated/api/interfaces/User.md +26 -0
  327. package/dist/docs/versioned/0.21.0/reference/generated/api/interfaces/UserModel.md +113 -0
  328. package/dist/docs/versioned/0.21.0/reference/generated/api/interfaces/VersionCheckResponse.md +37 -0
  329. package/dist/docs/versioned/0.21.0/reference/generated/api/interfaces/VersionConfigDocument.md +65 -0
  330. package/dist/docs/versioned/0.21.0/reference/generated/api/interfaces/VersionConfigModel.md +51 -0
  331. package/dist/docs/versioned/0.21.0/reference/generated/api/interfaces/WrapScriptOptions.md +27 -0
  332. package/dist/docs/versioned/0.21.0/reference/generated/api/type-aliases/AddRoutes.md +15 -0
  333. package/dist/docs/versioned/0.21.0/reference/generated/api/type-aliases/AuthProvider.md +5 -0
  334. package/dist/docs/versioned/0.21.0/reference/generated/api/type-aliases/BetterAuthInstance.md +3 -0
  335. package/dist/docs/versioned/0.21.0/reference/generated/api/type-aliases/ConfigType.md +1 -0
  336. package/dist/docs/versioned/0.21.0/reference/generated/api/type-aliases/ConfigurationPostUpdateHook.md +24 -0
  337. package/dist/docs/versioned/0.21.0/reference/generated/api/type-aliases/ConfigurationPreUpdateHook.md +20 -0
  338. package/dist/docs/versioned/0.21.0/reference/generated/api/type-aliases/ConsentFormMethods.md +1 -0
  339. package/dist/docs/versioned/0.21.0/reference/generated/api/type-aliases/ConsentFormType.md +1 -0
  340. package/dist/docs/versioned/0.21.0/reference/generated/api/type-aliases/DeepPartial.md +9 -0
  341. package/dist/docs/versioned/0.21.0/reference/generated/api/type-aliases/GooseRESTOptions.md +7 -0
  342. package/dist/docs/versioned/0.21.0/reference/generated/api/type-aliases/JSONPrimitive.md +1 -0
  343. package/dist/docs/versioned/0.21.0/reference/generated/api/type-aliases/JSONValue.md +1 -0
  344. package/dist/docs/versioned/0.21.0/reference/generated/api/type-aliases/PathValue.md +19 -0
  345. package/dist/docs/versioned/0.21.0/reference/generated/api/type-aliases/Paths.md +15 -0
  346. package/dist/docs/versioned/0.21.0/reference/generated/api/type-aliases/PermissionMethod.md +25 -0
  347. package/dist/docs/versioned/0.21.0/reference/generated/api/type-aliases/RESTMethod.md +17 -0
  348. package/dist/docs/versioned/0.21.0/reference/generated/api/type-aliases/RequestContextAttributes.md +1 -0
  349. package/dist/docs/versioned/0.21.0/reference/generated/api/type-aliases/ScriptRunner.md +15 -0
  350. package/dist/docs/versioned/0.21.0/reference/generated/api/type-aliases/VersionCheckStatus.md +1 -0
  351. package/dist/docs/versioned/0.21.0/reference/generated/api/variables/ACTION_NAME_PATTERN.md +1 -0
  352. package/dist/docs/versioned/0.21.0/reference/generated/api/variables/BackgroundTask.md +1 -0
  353. package/dist/docs/versioned/0.21.0/reference/generated/api/variables/Config.md +244 -0
  354. package/dist/docs/versioned/0.21.0/reference/generated/api/variables/ConsentForm.md +1 -0
  355. package/dist/docs/versioned/0.21.0/reference/generated/api/variables/ConsentResponse.md +1 -0
  356. package/dist/docs/versioned/0.21.0/reference/generated/api/variables/MAX_DOCUMENT_SUBSCRIPTIONS.md +1 -0
  357. package/dist/docs/versioned/0.21.0/reference/generated/api/variables/MAX_MODEL_SUBSCRIPTIONS.md +4 -0
  358. package/dist/docs/versioned/0.21.0/reference/generated/api/variables/MAX_QUERY_SUBSCRIPTIONS.md +1 -0
  359. package/dist/docs/versioned/0.21.0/reference/generated/api/variables/Permissions.md +109 -0
  360. package/dist/docs/versioned/0.21.0/reference/generated/api/variables/REQUEST_CONTEXT_ATTRIBUTE_NAMES.md +39 -0
  361. package/dist/docs/versioned/0.21.0/reference/generated/api/variables/VersionConfig.md +1 -0
  362. package/dist/docs/versioned/0.21.0/reference/generated/api/variables/gooseRestRouter.md +85 -0
  363. package/dist/docs/versioned/0.21.0/reference/generated/api/variables/logger.md +109 -0
  364. package/dist/docs/versioned/0.21.0/reference/generated/api/variables/winstonLogger.md +1 -0
  365. package/dist/docs/versioned/0.21.0/reference/generated/rtk/README.md +126 -0
  366. package/dist/docs/versioned/0.21.0/reference/generated/rtk/functions/buildOptimisticCreateItem.md +17 -0
  367. package/dist/docs/versioned/0.21.0/reference/generated/rtk/functions/configureOfflineMutationEndpoints.md +13 -0
  368. package/dist/docs/versioned/0.21.0/reference/generated/rtk/functions/createBetterAuthClient.md +30 -0
  369. package/dist/docs/versioned/0.21.0/reference/generated/rtk/functions/createOfflineMiddleware.md +41 -0
  370. package/dist/docs/versioned/0.21.0/reference/generated/rtk/functions/createSessionApi.md +21 -0
  371. package/dist/docs/versioned/0.21.0/reference/generated/rtk/functions/createStorageAdapter.md +17 -0
  372. package/dist/docs/versioned/0.21.0/reference/generated/rtk/functions/generateAuthSlice.md +35 -0
  373. package/dist/docs/versioned/0.21.0/reference/generated/rtk/functions/generateBetterAuthSlice.md +87 -0
  374. package/dist/docs/versioned/0.21.0/reference/generated/rtk/functions/generateProfileEndpoints.md +35 -0
  375. package/dist/docs/versioned/0.21.0/reference/generated/rtk/functions/generateTags.md +15 -0
  376. package/dist/docs/versioned/0.21.0/reference/generated/rtk/functions/getAuthToken.md +5 -0
  377. package/dist/docs/versioned/0.21.0/reference/generated/rtk/functions/getBaseQuery.md +23 -0
  378. package/dist/docs/versioned/0.21.0/reference/generated/rtk/functions/getFriendlyExpirationInfo.md +5 -0
  379. package/dist/docs/versioned/0.21.0/reference/generated/rtk/functions/getRealtimeSocket.md +7 -0
  380. package/dist/docs/versioned/0.21.0/reference/generated/rtk/functions/getTokenExpirationTimes.md +5 -0
  381. package/dist/docs/versioned/0.21.0/reference/generated/rtk/functions/isNetworkFetchError.md +14 -0
  382. package/dist/docs/versioned/0.21.0/reference/generated/rtk/functions/isWebsocketsDebugEnabled.md +5 -0
  383. package/dist/docs/versioned/0.21.0/reference/generated/rtk/functions/logAuth.md +11 -0
  384. package/dist/docs/versioned/0.21.0/reference/generated/rtk/functions/logSocket.md +15 -0
  385. package/dist/docs/versioned/0.21.0/reference/generated/rtk/functions/populateId.md +23 -0
  386. package/dist/docs/versioned/0.21.0/reference/generated/rtk/functions/realtimeDocument.md +37 -0
  387. package/dist/docs/versioned/0.21.0/reference/generated/rtk/functions/realtimeList.md +43 -0
  388. package/dist/docs/versioned/0.21.0/reference/generated/rtk/functions/refreshAuthToken.md +5 -0
  389. package/dist/docs/versioned/0.21.0/reference/generated/rtk/functions/registerTerrenoDevStore.md +14 -0
  390. package/dist/docs/versioned/0.21.0/reference/generated/rtk/functions/resolveBaseUrls.md +28 -0
  391. package/dist/docs/versioned/0.21.0/reference/generated/rtk/functions/resolveFeatureFlagsOptions.md +14 -0
  392. package/dist/docs/versioned/0.21.0/reference/generated/rtk/functions/selectBetterAuthError.md +13 -0
  393. package/dist/docs/versioned/0.21.0/reference/generated/rtk/functions/selectBetterAuthIsAuthenticated.md +13 -0
  394. package/dist/docs/versioned/0.21.0/reference/generated/rtk/functions/selectBetterAuthIsLoading.md +13 -0
  395. package/dist/docs/versioned/0.21.0/reference/generated/rtk/functions/selectBetterAuthState.md +13 -0
  396. package/dist/docs/versioned/0.21.0/reference/generated/rtk/functions/selectBetterAuthUser.md +13 -0
  397. package/dist/docs/versioned/0.21.0/reference/generated/rtk/functions/selectBetterAuthUserId.md +13 -0
  398. package/dist/docs/versioned/0.21.0/reference/generated/rtk/functions/selectConflicts.md +13 -0
  399. package/dist/docs/versioned/0.21.0/reference/generated/rtk/functions/selectCurrentUserId.md +11 -0
  400. package/dist/docs/versioned/0.21.0/reference/generated/rtk/functions/selectIsAuthenticating.md +11 -0
  401. package/dist/docs/versioned/0.21.0/reference/generated/rtk/functions/selectIsOnline.md +13 -0
  402. package/dist/docs/versioned/0.21.0/reference/generated/rtk/functions/selectIsOnlineSafe.md +15 -0
  403. package/dist/docs/versioned/0.21.0/reference/generated/rtk/functions/selectIsSyncing.md +13 -0
  404. package/dist/docs/versioned/0.21.0/reference/generated/rtk/functions/selectLastTokenRefreshTimestamp.md +11 -0
  405. package/dist/docs/versioned/0.21.0/reference/generated/rtk/functions/selectOfflineQueue.md +13 -0
  406. package/dist/docs/versioned/0.21.0/reference/generated/rtk/functions/selectQueueLength.md +13 -0
  407. package/dist/docs/versioned/0.21.0/reference/generated/rtk/functions/setRealtimeDebug.md +13 -0
  408. package/dist/docs/versioned/0.21.0/reference/generated/rtk/functions/setRealtimeSocket.md +27 -0
  409. package/dist/docs/versioned/0.21.0/reference/generated/rtk/functions/shouldDeferOfflineMutation.md +18 -0
  410. package/dist/docs/versioned/0.21.0/reference/generated/rtk/functions/shouldReplayQueuedMutation.md +18 -0
  411. package/dist/docs/versioned/0.21.0/reference/generated/rtk/functions/shouldShowStillThereModal.md +5 -0
  412. package/dist/docs/versioned/0.21.0/reference/generated/rtk/functions/useFeatureFlags.md +15 -0
  413. package/dist/docs/versioned/0.21.0/reference/generated/rtk/functions/useOfflineStatus.md +16 -0
  414. package/dist/docs/versioned/0.21.0/reference/generated/rtk/functions/useRealtimeDebug.md +18 -0
  415. package/dist/docs/versioned/0.21.0/reference/generated/rtk/functions/useSelectCurrentUserId.md +5 -0
  416. package/dist/docs/versioned/0.21.0/reference/generated/rtk/functions/useSelectIsAuthenticating.md +5 -0
  417. package/dist/docs/versioned/0.21.0/reference/generated/rtk/functions/useServerStatus.md +26 -0
  418. package/dist/docs/versioned/0.21.0/reference/generated/rtk/functions/useSocketConnection.md +19 -0
  419. package/dist/docs/versioned/0.21.0/reference/generated/rtk/functions/useSyncConnection.md +32 -0
  420. package/dist/docs/versioned/0.21.0/reference/generated/rtk/functions/useTerrenoFeatureFlags.md +19 -0
  421. package/dist/docs/versioned/0.21.0/reference/generated/rtk/functions/useUpgradeCheck.md +30 -0
  422. package/dist/docs/versioned/0.21.0/reference/generated/rtk/interfaces/BaseUrls.md +17 -0
  423. package/dist/docs/versioned/0.21.0/reference/generated/rtk/interfaces/BetterAuthClientConfig.md +31 -0
  424. package/dist/docs/versioned/0.21.0/reference/generated/rtk/interfaces/BetterAuthClientInterface.md +23 -0
  425. package/dist/docs/versioned/0.21.0/reference/generated/rtk/interfaces/BetterAuthSession.md +43 -0
  426. package/dist/docs/versioned/0.21.0/reference/generated/rtk/interfaces/BetterAuthSessionData.md +13 -0
  427. package/dist/docs/versioned/0.21.0/reference/generated/rtk/interfaces/BetterAuthState.md +49 -0
  428. package/dist/docs/versioned/0.21.0/reference/generated/rtk/interfaces/BetterAuthUser.md +43 -0
  429. package/dist/docs/versioned/0.21.0/reference/generated/rtk/interfaces/ConflictRecord.md +47 -0
  430. package/dist/docs/versioned/0.21.0/reference/generated/rtk/interfaces/EmailSignupRequest.md +15 -0
  431. package/dist/docs/versioned/0.21.0/reference/generated/rtk/interfaces/ExpoConstantsShape.md +29 -0
  432. package/dist/docs/versioned/0.21.0/reference/generated/rtk/interfaces/GenerateBetterAuthSliceConfig.md +23 -0
  433. package/dist/docs/versioned/0.21.0/reference/generated/rtk/interfaces/GoogleLoginRequest.md +5 -0
  434. package/dist/docs/versioned/0.21.0/reference/generated/rtk/interfaces/ListResponse.md +35 -0
  435. package/dist/docs/versioned/0.21.0/reference/generated/rtk/interfaces/OfflineMiddlewareConfig.md +15 -0
  436. package/dist/docs/versioned/0.21.0/reference/generated/rtk/interfaces/OfflineState.md +23 -0
  437. package/dist/docs/versioned/0.21.0/reference/generated/rtk/interfaces/OfflineStatus.md +87 -0
  438. package/dist/docs/versioned/0.21.0/reference/generated/rtk/interfaces/QueuedMutation.md +55 -0
  439. package/dist/docs/versioned/0.21.0/reference/generated/rtk/interfaces/RealtimeEvent.md +58 -0
  440. package/dist/docs/versioned/0.21.0/reference/generated/rtk/interfaces/ResetPasswordRequest.md +15 -0
  441. package/dist/docs/versioned/0.21.0/reference/generated/rtk/interfaces/ServerStatusOptions.md +31 -0
  442. package/dist/docs/versioned/0.21.0/reference/generated/rtk/interfaces/SocketConnection.md +11 -0
  443. package/dist/docs/versioned/0.21.0/reference/generated/rtk/interfaces/StorageAdapter.md +53 -0
  444. package/dist/docs/versioned/0.21.0/reference/generated/rtk/interfaces/TerrenoFlagDefinition.md +19 -0
  445. package/dist/docs/versioned/0.21.0/reference/generated/rtk/interfaces/UseFeatureFlagsOptions.md +50 -0
  446. package/dist/docs/versioned/0.21.0/reference/generated/rtk/interfaces/UseSocketConnectionOptions.md +87 -0
  447. package/dist/docs/versioned/0.21.0/reference/generated/rtk/interfaces/UseTerrenoFeatureFlagsOptions.md +41 -0
  448. package/dist/docs/versioned/0.21.0/reference/generated/rtk/interfaces/UseTerrenoFeatureFlagsResult.md +33 -0
  449. package/dist/docs/versioned/0.21.0/reference/generated/rtk/interfaces/UserResponse.md +17 -0
  450. package/dist/docs/versioned/0.21.0/reference/generated/rtk/interfaces/VersionCheckResponse.md +39 -0
  451. package/dist/docs/versioned/0.21.0/reference/generated/rtk/type-aliases/BetterAuthClient.md +3 -0
  452. package/dist/docs/versioned/0.21.0/reference/generated/rtk/type-aliases/BetterAuthOAuthProvider.md +3 -0
  453. package/dist/docs/versioned/0.21.0/reference/generated/rtk/type-aliases/BetterAuthSlice.md +3 -0
  454. package/dist/docs/versioned/0.21.0/reference/generated/rtk/type-aliases/EmailLoginRequest.md +1 -0
  455. package/dist/docs/versioned/0.21.0/reference/generated/rtk/type-aliases/RootState.md +1 -0
  456. package/dist/docs/versioned/0.21.0/reference/generated/rtk/type-aliases/ServerStatus.md +1 -0
  457. package/dist/docs/versioned/0.21.0/reference/generated/rtk/type-aliases/TerrenoFlagConfiguration.md +1 -0
  458. package/dist/docs/versioned/0.21.0/reference/generated/rtk/variables/AUTH_DEBUG.md +1 -0
  459. package/dist/docs/versioned/0.21.0/reference/generated/rtk/variables/IsWeb.md +1 -0
  460. package/dist/docs/versioned/0.21.0/reference/generated/rtk/variables/LOGOUT_ACTION_TYPE.md +1 -0
  461. package/dist/docs/versioned/0.21.0/reference/generated/rtk/variables/SAME_ORIGIN_SENTINEL.md +5 -0
  462. package/dist/docs/versioned/0.21.0/reference/generated/rtk/variables/TOKEN_REFRESHED_SUCCESS.md +1 -0
  463. package/dist/docs/versioned/0.21.0/reference/generated/rtk/variables/addConflict.md +1 -0
  464. package/dist/docs/versioned/0.21.0/reference/generated/rtk/variables/baseTasksUrl.md +1 -0
  465. package/dist/docs/versioned/0.21.0/reference/generated/rtk/variables/baseUrl.md +1 -0
  466. package/dist/docs/versioned/0.21.0/reference/generated/rtk/variables/baseWebsocketsUrl.md +1 -0
  467. package/dist/docs/versioned/0.21.0/reference/generated/rtk/variables/clearConflicts.md +1 -0
  468. package/dist/docs/versioned/0.21.0/reference/generated/rtk/variables/clearQueue.md +1 -0
  469. package/dist/docs/versioned/0.21.0/reference/generated/rtk/variables/dequeue.md +1 -0
  470. package/dist/docs/versioned/0.21.0/reference/generated/rtk/variables/dismissConflict.md +1 -0
  471. package/dist/docs/versioned/0.21.0/reference/generated/rtk/variables/emptySplitApi.md +1 -0
  472. package/dist/docs/versioned/0.21.0/reference/generated/rtk/variables/enqueue.md +1 -0
  473. package/dist/docs/versioned/0.21.0/reference/generated/rtk/variables/offlineReducer.md +1 -0
  474. package/dist/docs/versioned/0.21.0/reference/generated/rtk/variables/offlineSlice.md +1 -0
  475. package/dist/docs/versioned/0.21.0/reference/generated/rtk/variables/selectUndismissedConflicts.md +1 -0
  476. package/dist/docs/versioned/0.21.0/reference/generated/rtk/variables/setOnlineStatus.md +1 -0
  477. package/dist/docs/versioned/0.21.0/reference/generated/rtk/variables/setSyncing.md +1 -0
  478. package/dist/docs/versioned/0.21.0/reference/generated/rtk/variables/staggeredBaseQuery.md +1 -0
  479. package/dist/docs/versioned/0.21.0/reference/generated/rtk/variables/useGetVersionCheckQuery.md +1 -0
  480. package/dist/docs/versioned/0.21.0/reference/generated/rtk/variables/useLazyGetVersionCheckQuery.md +1 -0
  481. package/dist/docs/versioned/0.21.0/reference/mcp-server.md +586 -0
  482. package/dist/docs/versioned/0.21.0/reference/rtk.md +439 -0
  483. package/dist/docs/versioned/0.21.0/reference/ui.md +418 -0
  484. package/dist/docs/versioned/0.21.0/tasks/admin-improvements.md +429 -0
  485. package/dist/docs/versioned/0.21.0/tasks/admin-only.md +221 -0
  486. package/dist/docs/versioned/0.21.0/tasks/admin-script-runner.md +50 -0
  487. package/dist/docs/versioned/0.21.0/tasks/admin-ui-v2-django-parity.md +135 -0
  488. package/dist/docs/versioned/0.21.0/tasks/consent-forms.md +193 -0
  489. package/dist/docs/versioned/0.21.0/tasks/design-blend-skill.md +147 -0
  490. package/dist/docs/versioned/0.21.0/tasks/feature-flags-openfeature.md +77 -0
  491. package/dist/docs/versioned/0.21.0/tasks/feature-flags.md +23 -0
  492. package/dist/docs/versioned/0.21.0/tasks/model-router-actions.md +46 -0
  493. package/dist/docs/versioned/0.21.0/tasks/model-router-mcp.md +105 -0
  494. package/dist/docs/versioned/0.21.0/tasks/offline-mode.md +139 -0
  495. package/dist/docs/versioned/0.21.0/tasks/upgrade-banner.md +73 -0
  496. package/dist/docs/versioned/0.21.0/tutorials/README.md +7 -0
  497. package/dist/docs/versioned/0.21.0/tutorials/getting-started.md +44 -0
  498. package/dist/docs/versioned/next/implementationPlans/syncdb-local-first.md +591 -0
  499. package/dist/docs/versioned/next/tasks/syncdb-local-first.md +117 -0
  500. package/package.json +2 -2
  501. package/src/docs/versioned/0.21.0/README.md +29 -0
  502. package/src/docs/versioned/0.21.0/explanation/README.md +13 -0
  503. package/src/docs/versioned/0.21.0/explanation/ai-workflows.md +270 -0
  504. package/src/docs/versioned/0.21.0/explanation/authentication.md +438 -0
  505. package/src/docs/versioned/0.21.0/explanation/configuration-system.md +428 -0
  506. package/src/docs/versioned/0.21.0/explanation/dependency-management.md +192 -0
  507. package/src/docs/versioned/0.21.0/explanation/gcp-hosting-architecture.md +319 -0
  508. package/src/docs/versioned/0.21.0/explanation/model-router-actions.md +156 -0
  509. package/src/docs/versioned/0.21.0/explanation/modular-api-design.md +228 -0
  510. package/src/docs/versioned/0.21.0/how-to/README.md +20 -0
  511. package/src/docs/versioned/0.21.0/how-to/add-feature-flags.md +115 -0
  512. package/src/docs/versioned/0.21.0/how-to/add-github-oauth.md +316 -0
  513. package/src/docs/versioned/0.21.0/how-to/configure-better-auth.md +296 -0
  514. package/src/docs/versioned/0.21.0/how-to/create-a-model.md +165 -0
  515. package/src/docs/versioned/0.21.0/how-to/deploy-to-gcp.md +244 -0
  516. package/src/docs/versioned/0.21.0/how-to/upgrade-banner.md +172 -0
  517. package/src/docs/versioned/0.21.0/how-to/websocket-integration.md +416 -0
  518. package/src/docs/versioned/0.21.0/implementationPlans/IP_TEMPLATE.md +47 -0
  519. package/src/docs/versioned/0.21.0/implementationPlans/ModularAPI.md +844 -0
  520. package/src/docs/versioned/0.21.0/implementationPlans/PLAN_INDEX.md +21 -0
  521. package/src/docs/versioned/0.21.0/implementationPlans/README.md +42 -0
  522. package/src/docs/versioned/0.21.0/implementationPlans/admin-improvements.md +577 -0
  523. package/src/docs/versioned/0.21.0/implementationPlans/admin-only-research.md +258 -0
  524. package/src/docs/versioned/0.21.0/implementationPlans/admin-only.md +616 -0
  525. package/src/docs/versioned/0.21.0/implementationPlans/admin-script-runner.md +107 -0
  526. package/src/docs/versioned/0.21.0/implementationPlans/admin-ui-v2-django-parity.md +204 -0
  527. package/src/docs/versioned/0.21.0/implementationPlans/consent-forms.md +417 -0
  528. package/src/docs/versioned/0.21.0/implementationPlans/design-blend-skill.md +188 -0
  529. package/src/docs/versioned/0.21.0/implementationPlans/docs-site-and-versioning.md +138 -0
  530. package/src/docs/versioned/0.21.0/implementationPlans/feature-flags-openfeature.md +545 -0
  531. package/src/docs/versioned/0.21.0/implementationPlans/feature-flags.md +310 -0
  532. package/src/docs/versioned/0.21.0/implementationPlans/mcp-boost-parity.md +246 -0
  533. package/src/docs/versioned/0.21.0/implementationPlans/model-router-actions.md +639 -0
  534. package/src/docs/versioned/0.21.0/implementationPlans/model-router-mcp.md +186 -0
  535. package/src/docs/versioned/0.21.0/implementationPlans/offline-mode.md +311 -0
  536. package/src/docs/versioned/0.21.0/implementationPlans/terreno-langfuse-integration.md +145 -0
  537. package/src/docs/versioned/0.21.0/implementationPlans/upgrade-banner.md +275 -0
  538. package/src/docs/versioned/0.21.0/reference/README.md +22 -0
  539. package/src/docs/versioned/0.21.0/reference/admin-backend.md +122 -0
  540. package/src/docs/versioned/0.21.0/reference/admin-frontend.md +205 -0
  541. package/src/docs/versioned/0.21.0/reference/api-health.md +81 -0
  542. package/src/docs/versioned/0.21.0/reference/api.md +1205 -0
  543. package/src/docs/versioned/0.21.0/reference/components/README.mdx +65 -0
  544. package/src/docs/versioned/0.21.0/reference/components/accordion.mdx +36 -0
  545. package/src/docs/versioned/0.21.0/reference/components/addressfield.mdx +26 -0
  546. package/src/docs/versioned/0.21.0/reference/components/ai-suggestion-box.mdx +26 -0
  547. package/src/docs/versioned/0.21.0/reference/components/avatar.mdx +35 -0
  548. package/src/docs/versioned/0.21.0/reference/components/badge.mdx +38 -0
  549. package/src/docs/versioned/0.21.0/reference/components/banner.mdx +26 -0
  550. package/src/docs/versioned/0.21.0/reference/components/boolean-field.mdx +34 -0
  551. package/src/docs/versioned/0.21.0/reference/components/box.mdx +26 -0
  552. package/src/docs/versioned/0.21.0/reference/components/button.mdx +43 -0
  553. package/src/docs/versioned/0.21.0/reference/components/card.mdx +26 -0
  554. package/src/docs/versioned/0.21.0/reference/components/checkbox.mdx +29 -0
  555. package/src/docs/versioned/0.21.0/reference/components/consentformscreen.mdx +26 -0
  556. package/src/docs/versioned/0.21.0/reference/components/custom-select-field.mdx +34 -0
  557. package/src/docs/versioned/0.21.0/reference/components/datatable.mdx +41 -0
  558. package/src/docs/versioned/0.21.0/reference/components/date-time-field.mdx +48 -0
  559. package/src/docs/versioned/0.21.0/reference/components/email-field.mdx +42 -0
  560. package/src/docs/versioned/0.21.0/reference/components/emoji-selector.mdx +26 -0
  561. package/src/docs/versioned/0.21.0/reference/components/field.mdx +26 -0
  562. package/src/docs/versioned/0.21.0/reference/components/height-field.mdx +44 -0
  563. package/src/docs/versioned/0.21.0/reference/components/icon.mdx +31 -0
  564. package/src/docs/versioned/0.21.0/reference/components/iconbutton.mdx +42 -0
  565. package/src/docs/versioned/0.21.0/reference/components/inner-modal-content.mdx +39 -0
  566. package/src/docs/versioned/0.21.0/reference/components/markdown-editor-field.mdx +49 -0
  567. package/src/docs/versioned/0.21.0/reference/components/markdownview.mdx +37 -0
  568. package/src/docs/versioned/0.21.0/reference/components/multiselect-field.mdx +34 -0
  569. package/src/docs/versioned/0.21.0/reference/components/number-field.mdx +45 -0
  570. package/src/docs/versioned/0.21.0/reference/components/page.mdx +45 -0
  571. package/src/docs/versioned/0.21.0/reference/components/pagination.mdx +29 -0
  572. package/src/docs/versioned/0.21.0/reference/components/password-field.mdx +26 -0
  573. package/src/docs/versioned/0.21.0/reference/components/phone-number-field.mdx +43 -0
  574. package/src/docs/versioned/0.21.0/reference/components/radio-field.mdx +31 -0
  575. package/src/docs/versioned/0.21.0/reference/components/sectiondivider.mdx +26 -0
  576. package/src/docs/versioned/0.21.0/reference/components/segmented-control.mdx +32 -0
  577. package/src/docs/versioned/0.21.0/reference/components/select-field.mdx +26 -0
  578. package/src/docs/versioned/0.21.0/reference/components/selectbadge.mdx +35 -0
  579. package/src/docs/versioned/0.21.0/reference/components/side-drawer.mdx +34 -0
  580. package/src/docs/versioned/0.21.0/reference/components/sidebar-navigation-non-expo.mdx +35 -0
  581. package/src/docs/versioned/0.21.0/reference/components/signature-field.mdx +35 -0
  582. package/src/docs/versioned/0.21.0/reference/components/slider.mdx +43 -0
  583. package/src/docs/versioned/0.21.0/reference/components/spinner.mdx +28 -0
  584. package/src/docs/versioned/0.21.0/reference/components/table-badge.mdx +32 -0
  585. package/src/docs/versioned/0.21.0/reference/components/table-boolean.mdx +29 -0
  586. package/src/docs/versioned/0.21.0/reference/components/table-date.mdx +30 -0
  587. package/src/docs/versioned/0.21.0/reference/components/table-icon-button.mdx +28 -0
  588. package/src/docs/versioned/0.21.0/reference/components/table-number.mdx +30 -0
  589. package/src/docs/versioned/0.21.0/reference/components/table-text.mdx +30 -0
  590. package/src/docs/versioned/0.21.0/reference/components/table-title.mdx +28 -0
  591. package/src/docs/versioned/0.21.0/reference/components/table.mdx +38 -0
  592. package/src/docs/versioned/0.21.0/reference/components/tap-to-edit.mdx +26 -0
  593. package/src/docs/versioned/0.21.0/reference/components/text-area.mdx +49 -0
  594. package/src/docs/versioned/0.21.0/reference/components/text-field.mdx +51 -0
  595. package/src/docs/versioned/0.21.0/reference/components/theme.mdx +26 -0
  596. package/src/docs/versioned/0.21.0/reference/components/toast.mdx +26 -0
  597. package/src/docs/versioned/0.21.0/reference/components/tooltip.mdx +30 -0
  598. package/src/docs/versioned/0.21.0/reference/components/userinactivity.mdx +32 -0
  599. package/src/docs/versioned/0.21.0/reference/environment-variables.md +382 -0
  600. package/src/docs/versioned/0.21.0/reference/feature-flags.md +304 -0
  601. package/src/docs/versioned/0.21.0/reference/generated/README.md +17 -0
  602. package/src/docs/versioned/0.21.0/reference/generated/api/README.md +276 -0
  603. package/src/docs/versioned/0.21.0/reference/generated/api/classes/APIError.md +96 -0
  604. package/src/docs/versioned/0.21.0/reference/generated/api/classes/BetterAuthApp.md +84 -0
  605. package/src/docs/versioned/0.21.0/reference/generated/api/classes/CachingSecretProvider.md +118 -0
  606. package/src/docs/versioned/0.21.0/reference/generated/api/classes/CompositeSecretProvider.md +79 -0
  607. package/src/docs/versioned/0.21.0/reference/generated/api/classes/ConfigurationApp.md +94 -0
  608. package/src/docs/versioned/0.21.0/reference/generated/api/classes/ConsentApp.md +74 -0
  609. package/src/docs/versioned/0.21.0/reference/generated/api/classes/DateOnly.md +123 -0
  610. package/src/docs/versioned/0.21.0/reference/generated/api/classes/EnvSecretProvider.md +64 -0
  611. package/src/docs/versioned/0.21.0/reference/generated/api/classes/GcpSecretProvider.md +76 -0
  612. package/src/docs/versioned/0.21.0/reference/generated/api/classes/OpenApiMiddlewareBuilder.md +543 -0
  613. package/src/docs/versioned/0.21.0/reference/generated/api/classes/RealtimeApp.md +112 -0
  614. package/src/docs/versioned/0.21.0/reference/generated/api/classes/TaskCancelledError.md +23 -0
  615. package/src/docs/versioned/0.21.0/reference/generated/api/classes/TerrenoApp.md +262 -0
  616. package/src/docs/versioned/0.21.0/reference/generated/api/classes/VersionCheckPlugin.md +43 -0
  617. package/src/docs/versioned/0.21.0/reference/generated/api/functions/AdminOwnerTransformer.md +47 -0
  618. package/src/docs/versioned/0.21.0/reference/generated/api/functions/OwnerQueryFilter.md +11 -0
  619. package/src/docs/versioned/0.21.0/reference/generated/api/functions/addAuthRoutes.md +19 -0
  620. package/src/docs/versioned/0.21.0/reference/generated/api/functions/addGitHubAuthRoutes.md +31 -0
  621. package/src/docs/versioned/0.21.0/reference/generated/api/functions/addMeRoutes.md +19 -0
  622. package/src/docs/versioned/0.21.0/reference/generated/api/functions/addPopulateToQuery.md +15 -0
  623. package/src/docs/versioned/0.21.0/reference/generated/api/functions/addQuerySubscription.md +26 -0
  624. package/src/docs/versioned/0.21.0/reference/generated/api/functions/apiErrorMiddleware.md +23 -0
  625. package/src/docs/versioned/0.21.0/reference/generated/api/functions/apiFallthroughErrorMiddleware.md +26 -0
  626. package/src/docs/versioned/0.21.0/reference/generated/api/functions/apiUnauthorizedMiddleware.md +23 -0
  627. package/src/docs/versioned/0.21.0/reference/generated/api/functions/applyRequestContextToSentry.md +11 -0
  628. package/src/docs/versioned/0.21.0/reference/generated/api/functions/assertNoActionCollisions.md +21 -0
  629. package/src/docs/versioned/0.21.0/reference/generated/api/functions/asyncHandler.md +15 -0
  630. package/src/docs/versioned/0.21.0/reference/generated/api/functions/authenticateMiddleware.md +11 -0
  631. package/src/docs/versioned/0.21.0/reference/generated/api/functions/baseUserPlugin.md +11 -0
  632. package/src/docs/versioned/0.21.0/reference/generated/api/functions/buildQuerySchemaFromFields.md +30 -0
  633. package/src/docs/versioned/0.21.0/reference/generated/api/functions/checkModelsStrict.md +21 -0
  634. package/src/docs/versioned/0.21.0/reference/generated/api/functions/checkPermissions.md +29 -0
  635. package/src/docs/versioned/0.21.0/reference/generated/api/functions/clearQueryStore.md +7 -0
  636. package/src/docs/versioned/0.21.0/reference/generated/api/functions/clearRealtimeRegistry.md +7 -0
  637. package/src/docs/versioned/0.21.0/reference/generated/api/functions/computeQueryId.md +18 -0
  638. package/src/docs/versioned/0.21.0/reference/generated/api/functions/configurationPlugin.md +48 -0
  639. package/src/docs/versioned/0.21.0/reference/generated/api/functions/configureOpenApiValidator.md +28 -0
  640. package/src/docs/versioned/0.21.0/reference/generated/api/functions/createActionOpenApiMiddleware.md +35 -0
  641. package/src/docs/versioned/0.21.0/reference/generated/api/functions/createBetterAuth.md +13 -0
  642. package/src/docs/versioned/0.21.0/reference/generated/api/functions/createBetterAuthSessionMiddleware.md +18 -0
  643. package/src/docs/versioned/0.21.0/reference/generated/api/functions/createFeatureFlaggedLogger.md +53 -0
  644. package/src/docs/versioned/0.21.0/reference/generated/api/functions/createModelValidators.md +74 -0
  645. package/src/docs/versioned/0.21.0/reference/generated/api/functions/createOpenApiBuilder.md +39 -0
  646. package/src/docs/versioned/0.21.0/reference/generated/api/functions/createRouter.md +19 -0
  647. package/src/docs/versioned/0.21.0/reference/generated/api/functions/createRouterWithAuth.md +19 -0
  648. package/src/docs/versioned/0.21.0/reference/generated/api/functions/createScopedLogger.md +53 -0
  649. package/src/docs/versioned/0.21.0/reference/generated/api/functions/createValidator.md +29 -0
  650. package/src/docs/versioned/0.21.0/reference/generated/api/functions/createdUpdatedPlugin.md +11 -0
  651. package/src/docs/versioned/0.21.0/reference/generated/api/functions/cronjob.md +19 -0
  652. package/src/docs/versioned/0.21.0/reference/generated/api/functions/defaultResponseHandler.md +32 -0
  653. package/src/docs/versioned/0.21.0/reference/generated/api/functions/defineCollectionAction.md +25 -0
  654. package/src/docs/versioned/0.21.0/reference/generated/api/functions/defineInstanceAction.md +29 -0
  655. package/src/docs/versioned/0.21.0/reference/generated/api/functions/envConfigurationPlugin.md +11 -0
  656. package/src/docs/versioned/0.21.0/reference/generated/api/functions/errorMessage.md +13 -0
  657. package/src/docs/versioned/0.21.0/reference/generated/api/functions/errorStack.md +13 -0
  658. package/src/docs/versioned/0.21.0/reference/generated/api/functions/errorsPlugin.md +11 -0
  659. package/src/docs/versioned/0.21.0/reference/generated/api/functions/findExactlyOne.md +25 -0
  660. package/src/docs/versioned/0.21.0/reference/generated/api/functions/findOneOrNone.md +24 -0
  661. package/src/docs/versioned/0.21.0/reference/generated/api/functions/findOneOrNoneFor.md +37 -0
  662. package/src/docs/versioned/0.21.0/reference/generated/api/functions/findRegistryEntryByCollection.md +13 -0
  663. package/src/docs/versioned/0.21.0/reference/generated/api/functions/findRegistryEntryByRoutePath.md +13 -0
  664. package/src/docs/versioned/0.21.0/reference/generated/api/functions/firebaseJWTPlugin.md +11 -0
  665. package/src/docs/versioned/0.21.0/reference/generated/api/functions/fixMixedFields.md +21 -0
  666. package/src/docs/versioned/0.21.0/reference/generated/api/functions/flattenToDotPaths.md +24 -0
  667. package/src/docs/versioned/0.21.0/reference/generated/api/functions/formatLogContextSuffix.md +17 -0
  668. package/src/docs/versioned/0.21.0/reference/generated/api/functions/generateTokens.md +35 -0
  669. package/src/docs/versioned/0.21.0/reference/generated/api/functions/getAPIErrorBody.md +11 -0
  670. package/src/docs/versioned/0.21.0/reference/generated/api/functions/getBetterAuthSession.md +13 -0
  671. package/src/docs/versioned/0.21.0/reference/generated/api/functions/getCurrentLogContext.md +9 -0
  672. package/src/docs/versioned/0.21.0/reference/generated/api/functions/getCurrentRequestContext.md +8 -0
  673. package/src/docs/versioned/0.21.0/reference/generated/api/functions/getCurrentRequestContextAttributes.md +15 -0
  674. package/src/docs/versioned/0.21.0/reference/generated/api/functions/getDisableExternalErrorTracking.md +15 -0
  675. package/src/docs/versioned/0.21.0/reference/generated/api/functions/getMongoClientFromMongoose.md +7 -0
  676. package/src/docs/versioned/0.21.0/reference/generated/api/functions/getOpenApiSpecForModel.md +29 -0
  677. package/src/docs/versioned/0.21.0/reference/generated/api/functions/getOpenApiValidatorConfig.md +7 -0
  678. package/src/docs/versioned/0.21.0/reference/generated/api/functions/getQuerySubscriptionsForCollection.md +14 -0
  679. package/src/docs/versioned/0.21.0/reference/generated/api/functions/getRealtimeRegistry.md +7 -0
  680. package/src/docs/versioned/0.21.0/reference/generated/api/functions/getRequestContextFromAttributes.md +11 -0
  681. package/src/docs/versioned/0.21.0/reference/generated/api/functions/getSchemaFromModel.md +25 -0
  682. package/src/docs/versioned/0.21.0/reference/generated/api/functions/getSessionIdFromJwtPayload.md +11 -0
  683. package/src/docs/versioned/0.21.0/reference/generated/api/functions/githubUserPlugin.md +22 -0
  684. package/src/docs/versioned/0.21.0/reference/generated/api/functions/hasBetterAuthSession.md +13 -0
  685. package/src/docs/versioned/0.21.0/reference/generated/api/functions/installRealtimeSocketHandlers.md +27 -0
  686. package/src/docs/versioned/0.21.0/reference/generated/api/functions/isAPIError.md +11 -0
  687. package/src/docs/versioned/0.21.0/reference/generated/api/functions/isDeletedPlugin.md +15 -0
  688. package/src/docs/versioned/0.21.0/reference/generated/api/functions/isDisabledPlugin.md +15 -0
  689. package/src/docs/versioned/0.21.0/reference/generated/api/functions/isOpenApiValidatorConfigured.md +8 -0
  690. package/src/docs/versioned/0.21.0/reference/generated/api/functions/isValidObjectId.md +11 -0
  691. package/src/docs/versioned/0.21.0/reference/generated/api/functions/jsonResponseRequestIdMiddleware.md +24 -0
  692. package/src/docs/versioned/0.21.0/reference/generated/api/functions/logRequests.md +19 -0
  693. package/src/docs/versioned/0.21.0/reference/generated/api/functions/matchesQuery.md +23 -0
  694. package/src/docs/versioned/0.21.0/reference/generated/api/functions/modelRouter.md +83 -0
  695. package/src/docs/versioned/0.21.0/reference/generated/api/functions/mongooseErrorToAPIError.md +13 -0
  696. package/src/docs/versioned/0.21.0/reference/generated/api/functions/mountBetterAuthRoutes.md +21 -0
  697. package/src/docs/versioned/0.21.0/reference/generated/api/functions/openApiCompatMiddleware.md +22 -0
  698. package/src/docs/versioned/0.21.0/reference/generated/api/functions/openApiEtagMiddleware.md +23 -0
  699. package/src/docs/versioned/0.21.0/reference/generated/api/functions/patchAppUse.md +17 -0
  700. package/src/docs/versioned/0.21.0/reference/generated/api/functions/permissionMiddleware.md +21 -0
  701. package/src/docs/versioned/0.21.0/reference/generated/api/functions/registerActionRoutes.md +25 -0
  702. package/src/docs/versioned/0.21.0/reference/generated/api/functions/registerRealtime.md +14 -0
  703. package/src/docs/versioned/0.21.0/reference/generated/api/functions/removeAllSocketQueries.md +13 -0
  704. package/src/docs/versioned/0.21.0/reference/generated/api/functions/removeQuerySubscription.md +17 -0
  705. package/src/docs/versioned/0.21.0/reference/generated/api/functions/requestContextMiddleware.md +26 -0
  706. package/src/docs/versioned/0.21.0/reference/generated/api/functions/resetOpenApiValidatorConfig.md +9 -0
  707. package/src/docs/versioned/0.21.0/reference/generated/api/functions/runActionPermissions.md +33 -0
  708. package/src/docs/versioned/0.21.0/reference/generated/api/functions/runWithRequestContext.md +38 -0
  709. package/src/docs/versioned/0.21.0/reference/generated/api/functions/runWithRequestContextAttributes.md +25 -0
  710. package/src/docs/versioned/0.21.0/reference/generated/api/functions/sendToGoogleChat.md +25 -0
  711. package/src/docs/versioned/0.21.0/reference/generated/api/functions/sendToSlack.md +29 -0
  712. package/src/docs/versioned/0.21.0/reference/generated/api/functions/sendToZoom.md +67 -0
  713. package/src/docs/versioned/0.21.0/reference/generated/api/functions/sentryAppVersionMiddleware.md +26 -0
  714. package/src/docs/versioned/0.21.0/reference/generated/api/functions/serialize.md +25 -0
  715. package/src/docs/versioned/0.21.0/reference/generated/api/functions/setRequestContext.md +11 -0
  716. package/src/docs/versioned/0.21.0/reference/generated/api/functions/setupAuth.md +15 -0
  717. package/src/docs/versioned/0.21.0/reference/generated/api/functions/setupBetterAuthUserSync.md +21 -0
  718. package/src/docs/versioned/0.21.0/reference/generated/api/functions/setupEnvironment.md +5 -0
  719. package/src/docs/versioned/0.21.0/reference/generated/api/functions/setupGitHubAuth.md +22 -0
  720. package/src/docs/versioned/0.21.0/reference/generated/api/functions/setupLogging.md +11 -0
  721. package/src/docs/versioned/0.21.0/reference/generated/api/functions/signupUser.md +23 -0
  722. package/src/docs/versioned/0.21.0/reference/generated/api/functions/startChangeStreamWatcher.md +21 -0
  723. package/src/docs/versioned/0.21.0/reference/generated/api/functions/stopChangeStreamWatcher.md +7 -0
  724. package/src/docs/versioned/0.21.0/reference/generated/api/functions/syncBetterAuthUser.md +19 -0
  725. package/src/docs/versioned/0.21.0/reference/generated/api/functions/syncConsents.md +45 -0
  726. package/src/docs/versioned/0.21.0/reference/generated/api/functions/timeout.md +11 -0
  727. package/src/docs/versioned/0.21.0/reference/generated/api/functions/transform.md +29 -0
  728. package/src/docs/versioned/0.21.0/reference/generated/api/functions/unpopulate.md +21 -0
  729. package/src/docs/versioned/0.21.0/reference/generated/api/functions/updateRequestContextFromRequest.md +15 -0
  730. package/src/docs/versioned/0.21.0/reference/generated/api/functions/upsertPlugin.md +23 -0
  731. package/src/docs/versioned/0.21.0/reference/generated/api/functions/validateActionRequest.md +35 -0
  732. package/src/docs/versioned/0.21.0/reference/generated/api/functions/validateModelRequestBody.md +30 -0
  733. package/src/docs/versioned/0.21.0/reference/generated/api/functions/validateQueryParams.md +23 -0
  734. package/src/docs/versioned/0.21.0/reference/generated/api/functions/validateRequestBody.md +26 -0
  735. package/src/docs/versioned/0.21.0/reference/generated/api/functions/validateResponseData.md +32 -0
  736. package/src/docs/versioned/0.21.0/reference/generated/api/functions/wrapActionResponse.md +19 -0
  737. package/src/docs/versioned/0.21.0/reference/generated/api/functions/wrapScript.md +15 -0
  738. package/src/docs/versioned/0.21.0/reference/generated/api/interfaces/APIErrorConstructor.md +93 -0
  739. package/src/docs/versioned/0.21.0/reference/generated/api/interfaces/ActionContext.md +49 -0
  740. package/src/docs/versioned/0.21.0/reference/generated/api/interfaces/AsyncHandlerOptions.md +32 -0
  741. package/src/docs/versioned/0.21.0/reference/generated/api/interfaces/AuthOptions.md +47 -0
  742. package/src/docs/versioned/0.21.0/reference/generated/api/interfaces/BackgroundTaskDocument.md +141 -0
  743. package/src/docs/versioned/0.21.0/reference/generated/api/interfaces/BackgroundTaskMethods.md +55 -0
  744. package/src/docs/versioned/0.21.0/reference/generated/api/interfaces/BackgroundTaskModel.md +51 -0
  745. package/src/docs/versioned/0.21.0/reference/generated/api/interfaces/BackgroundTaskStatics.md +19 -0
  746. package/src/docs/versioned/0.21.0/reference/generated/api/interfaces/BaseUser.md +11 -0
  747. package/src/docs/versioned/0.21.0/reference/generated/api/interfaces/BetterAuthAppOptions.md +11 -0
  748. package/src/docs/versioned/0.21.0/reference/generated/api/interfaces/BetterAuthConfig.md +74 -0
  749. package/src/docs/versioned/0.21.0/reference/generated/api/interfaces/BetterAuthOAuthProvider.md +13 -0
  750. package/src/docs/versioned/0.21.0/reference/generated/api/interfaces/BetterAuthSession.md +43 -0
  751. package/src/docs/versioned/0.21.0/reference/generated/api/interfaces/BetterAuthSessionData.md +13 -0
  752. package/src/docs/versioned/0.21.0/reference/generated/api/interfaces/BetterAuthUser.md +43 -0
  753. package/src/docs/versioned/0.21.0/reference/generated/api/interfaces/CachingSecretProviderOptions.md +9 -0
  754. package/src/docs/versioned/0.21.0/reference/generated/api/interfaces/ChangeStreamConfig.md +41 -0
  755. package/src/docs/versioned/0.21.0/reference/generated/api/interfaces/CollectionActionConfig.md +123 -0
  756. package/src/docs/versioned/0.21.0/reference/generated/api/interfaces/ConfigRegistration.md +23 -0
  757. package/src/docs/versioned/0.21.0/reference/generated/api/interfaces/ConfigurationAppOptions.md +51 -0
  758. package/src/docs/versioned/0.21.0/reference/generated/api/interfaces/ConfigurationMetaResponse.md +7 -0
  759. package/src/docs/versioned/0.21.0/reference/generated/api/interfaces/ConfigurationModel.md +166 -0
  760. package/src/docs/versioned/0.21.0/reference/generated/api/interfaces/ConfigurationPermissions.md +45 -0
  761. package/src/docs/versioned/0.21.0/reference/generated/api/interfaces/ConfigurationPluginOptions.md +30 -0
  762. package/src/docs/versioned/0.21.0/reference/generated/api/interfaces/ConfigurationStatics.md +107 -0
  763. package/src/docs/versioned/0.21.0/reference/generated/api/interfaces/ConsentAppOptions.md +85 -0
  764. package/src/docs/versioned/0.21.0/reference/generated/api/interfaces/ConsentFormCheckbox.md +17 -0
  765. package/src/docs/versioned/0.21.0/reference/generated/api/interfaces/ConsentFormDefinition.md +83 -0
  766. package/src/docs/versioned/0.21.0/reference/generated/api/interfaces/ConsentFormDocument.md +123 -0
  767. package/src/docs/versioned/0.21.0/reference/generated/api/interfaces/ConsentFormModel.md +79 -0
  768. package/src/docs/versioned/0.21.0/reference/generated/api/interfaces/ConsentFormStatics.md +55 -0
  769. package/src/docs/versioned/0.21.0/reference/generated/api/interfaces/ConsentResponseDocument.md +105 -0
  770. package/src/docs/versioned/0.21.0/reference/generated/api/interfaces/ConsentResponseMethods.md +1 -0
  771. package/src/docs/versioned/0.21.0/reference/generated/api/interfaces/ConsentResponseModel.md +79 -0
  772. package/src/docs/versioned/0.21.0/reference/generated/api/interfaces/ConsentResponseStatics.md +55 -0
  773. package/src/docs/versioned/0.21.0/reference/generated/api/interfaces/CreateBetterAuthOptions.md +17 -0
  774. package/src/docs/versioned/0.21.0/reference/generated/api/interfaces/CreateFeatureFlaggedLoggerOptions.md +29 -0
  775. package/src/docs/versioned/0.21.0/reference/generated/api/interfaces/CreateScopedLoggerOptions.md +18 -0
  776. package/src/docs/versioned/0.21.0/reference/generated/api/interfaces/CreateValidatorOptions.md +25 -0
  777. package/src/docs/versioned/0.21.0/reference/generated/api/interfaces/CreatedDeleted.md +27 -0
  778. package/src/docs/versioned/0.21.0/reference/generated/api/interfaces/DocumentSubscription.md +17 -0
  779. package/src/docs/versioned/0.21.0/reference/generated/api/interfaces/FindExactlyOnePlugin.md +30 -0
  780. package/src/docs/versioned/0.21.0/reference/generated/api/interfaces/FindOneOrNonePlugin.md +30 -0
  781. package/src/docs/versioned/0.21.0/reference/generated/api/interfaces/GcpSecretProviderOptions.md +9 -0
  782. package/src/docs/versioned/0.21.0/reference/generated/api/interfaces/GenerateTokensOptions.md +5 -0
  783. package/src/docs/versioned/0.21.0/reference/generated/api/interfaces/GitHubAuthOptions.md +74 -0
  784. package/src/docs/versioned/0.21.0/reference/generated/api/interfaces/GitHubUserFields.md +33 -0
  785. package/src/docs/versioned/0.21.0/reference/generated/api/interfaces/HasUpsert.md +27 -0
  786. package/src/docs/versioned/0.21.0/reference/generated/api/interfaces/InstanceActionConfig.md +127 -0
  787. package/src/docs/versioned/0.21.0/reference/generated/api/interfaces/IsDeleted.md +7 -0
  788. package/src/docs/versioned/0.21.0/reference/generated/api/interfaces/JSONArray.md +7 -0
  789. package/src/docs/versioned/0.21.0/reference/generated/api/interfaces/JSONObject.md +3 -0
  790. package/src/docs/versioned/0.21.0/reference/generated/api/interfaces/JwtSessionPayload.md +19 -0
  791. package/src/docs/versioned/0.21.0/reference/generated/api/interfaces/LogContextFields.md +41 -0
  792. package/src/docs/versioned/0.21.0/reference/generated/api/interfaces/LoggingOptions.md +73 -0
  793. package/src/docs/versioned/0.21.0/reference/generated/api/interfaces/ModelRouterOptions.md +524 -0
  794. package/src/docs/versioned/0.21.0/reference/generated/api/interfaces/ModelRouterRegistration.md +33 -0
  795. package/src/docs/versioned/0.21.0/reference/generated/api/interfaces/ModelRouterValidationOptions.md +89 -0
  796. package/src/docs/versioned/0.21.0/reference/generated/api/interfaces/MongoClientLike.md +11 -0
  797. package/src/docs/versioned/0.21.0/reference/generated/api/interfaces/OpenApiBuildResult.md +34 -0
  798. package/src/docs/versioned/0.21.0/reference/generated/api/interfaces/OpenApiMiddleware.md +98 -0
  799. package/src/docs/versioned/0.21.0/reference/generated/api/interfaces/OpenApiParameter.md +66 -0
  800. package/src/docs/versioned/0.21.0/reference/generated/api/interfaces/OpenApiResponse.md +43 -0
  801. package/src/docs/versioned/0.21.0/reference/generated/api/interfaces/OpenApiSchema.md +62 -0
  802. package/src/docs/versioned/0.21.0/reference/generated/api/interfaces/OpenApiSchemaProperty.md +89 -0
  803. package/src/docs/versioned/0.21.0/reference/generated/api/interfaces/OpenApiValidatorConfig.md +94 -0
  804. package/src/docs/versioned/0.21.0/reference/generated/api/interfaces/PopulatePath.md +17 -0
  805. package/src/docs/versioned/0.21.0/reference/generated/api/interfaces/QuerySubscription.md +25 -0
  806. package/src/docs/versioned/0.21.0/reference/generated/api/interfaces/QueryValidatorOptions.md +31 -0
  807. package/src/docs/versioned/0.21.0/reference/generated/api/interfaces/RESTPermissions.md +35 -0
  808. package/src/docs/versioned/0.21.0/reference/generated/api/interfaces/RealtimeAppOptions.md +62 -0
  809. package/src/docs/versioned/0.21.0/reference/generated/api/interfaces/RealtimeConfig.md +44 -0
  810. package/src/docs/versioned/0.21.0/reference/generated/api/interfaces/RealtimeEvent.md +57 -0
  811. package/src/docs/versioned/0.21.0/reference/generated/api/interfaces/RealtimeRegistryEntry.md +41 -0
  812. package/src/docs/versioned/0.21.0/reference/generated/api/interfaces/RealtimeSocketLike.md +94 -0
  813. package/src/docs/versioned/0.21.0/reference/generated/api/interfaces/RequestBodyValidatorOptions.md +71 -0
  814. package/src/docs/versioned/0.21.0/reference/generated/api/interfaces/RequestContext.md +59 -0
  815. package/src/docs/versioned/0.21.0/reference/generated/api/interfaces/ScopedLogger.md +100 -0
  816. package/src/docs/versioned/0.21.0/reference/generated/api/interfaces/ScriptContext.md +59 -0
  817. package/src/docs/versioned/0.21.0/reference/generated/api/interfaces/ScriptResult.md +11 -0
  818. package/src/docs/versioned/0.21.0/reference/generated/api/interfaces/SecretFieldMeta.md +29 -0
  819. package/src/docs/versioned/0.21.0/reference/generated/api/interfaces/SecretProvider.md +35 -0
  820. package/src/docs/versioned/0.21.0/reference/generated/api/interfaces/SyncConsentsOptions.md +15 -0
  821. package/src/docs/versioned/0.21.0/reference/generated/api/interfaces/SyncConsentsResult.md +23 -0
  822. package/src/docs/versioned/0.21.0/reference/generated/api/interfaces/TerrenoAppOptions.md +112 -0
  823. package/src/docs/versioned/0.21.0/reference/generated/api/interfaces/TerrenoPlugin.md +78 -0
  824. package/src/docs/versioned/0.21.0/reference/generated/api/interfaces/TerrenoRequestLogEntry.md +13 -0
  825. package/src/docs/versioned/0.21.0/reference/generated/api/interfaces/TerrenoTransformer.md +49 -0
  826. package/src/docs/versioned/0.21.0/reference/generated/api/interfaces/User.md +26 -0
  827. package/src/docs/versioned/0.21.0/reference/generated/api/interfaces/UserModel.md +113 -0
  828. package/src/docs/versioned/0.21.0/reference/generated/api/interfaces/VersionCheckResponse.md +37 -0
  829. package/src/docs/versioned/0.21.0/reference/generated/api/interfaces/VersionConfigDocument.md +65 -0
  830. package/src/docs/versioned/0.21.0/reference/generated/api/interfaces/VersionConfigModel.md +51 -0
  831. package/src/docs/versioned/0.21.0/reference/generated/api/interfaces/WrapScriptOptions.md +27 -0
  832. package/src/docs/versioned/0.21.0/reference/generated/api/type-aliases/AddRoutes.md +15 -0
  833. package/src/docs/versioned/0.21.0/reference/generated/api/type-aliases/AuthProvider.md +5 -0
  834. package/src/docs/versioned/0.21.0/reference/generated/api/type-aliases/BetterAuthInstance.md +3 -0
  835. package/src/docs/versioned/0.21.0/reference/generated/api/type-aliases/ConfigType.md +1 -0
  836. package/src/docs/versioned/0.21.0/reference/generated/api/type-aliases/ConfigurationPostUpdateHook.md +24 -0
  837. package/src/docs/versioned/0.21.0/reference/generated/api/type-aliases/ConfigurationPreUpdateHook.md +20 -0
  838. package/src/docs/versioned/0.21.0/reference/generated/api/type-aliases/ConsentFormMethods.md +1 -0
  839. package/src/docs/versioned/0.21.0/reference/generated/api/type-aliases/ConsentFormType.md +1 -0
  840. package/src/docs/versioned/0.21.0/reference/generated/api/type-aliases/DeepPartial.md +9 -0
  841. package/src/docs/versioned/0.21.0/reference/generated/api/type-aliases/GooseRESTOptions.md +7 -0
  842. package/src/docs/versioned/0.21.0/reference/generated/api/type-aliases/JSONPrimitive.md +1 -0
  843. package/src/docs/versioned/0.21.0/reference/generated/api/type-aliases/JSONValue.md +1 -0
  844. package/src/docs/versioned/0.21.0/reference/generated/api/type-aliases/PathValue.md +19 -0
  845. package/src/docs/versioned/0.21.0/reference/generated/api/type-aliases/Paths.md +15 -0
  846. package/src/docs/versioned/0.21.0/reference/generated/api/type-aliases/PermissionMethod.md +25 -0
  847. package/src/docs/versioned/0.21.0/reference/generated/api/type-aliases/RESTMethod.md +17 -0
  848. package/src/docs/versioned/0.21.0/reference/generated/api/type-aliases/RequestContextAttributes.md +1 -0
  849. package/src/docs/versioned/0.21.0/reference/generated/api/type-aliases/ScriptRunner.md +15 -0
  850. package/src/docs/versioned/0.21.0/reference/generated/api/type-aliases/VersionCheckStatus.md +1 -0
  851. package/src/docs/versioned/0.21.0/reference/generated/api/variables/ACTION_NAME_PATTERN.md +1 -0
  852. package/src/docs/versioned/0.21.0/reference/generated/api/variables/BackgroundTask.md +1 -0
  853. package/src/docs/versioned/0.21.0/reference/generated/api/variables/Config.md +244 -0
  854. package/src/docs/versioned/0.21.0/reference/generated/api/variables/ConsentForm.md +1 -0
  855. package/src/docs/versioned/0.21.0/reference/generated/api/variables/ConsentResponse.md +1 -0
  856. package/src/docs/versioned/0.21.0/reference/generated/api/variables/MAX_DOCUMENT_SUBSCRIPTIONS.md +1 -0
  857. package/src/docs/versioned/0.21.0/reference/generated/api/variables/MAX_MODEL_SUBSCRIPTIONS.md +4 -0
  858. package/src/docs/versioned/0.21.0/reference/generated/api/variables/MAX_QUERY_SUBSCRIPTIONS.md +1 -0
  859. package/src/docs/versioned/0.21.0/reference/generated/api/variables/Permissions.md +109 -0
  860. package/src/docs/versioned/0.21.0/reference/generated/api/variables/REQUEST_CONTEXT_ATTRIBUTE_NAMES.md +39 -0
  861. package/src/docs/versioned/0.21.0/reference/generated/api/variables/VersionConfig.md +1 -0
  862. package/src/docs/versioned/0.21.0/reference/generated/api/variables/gooseRestRouter.md +85 -0
  863. package/src/docs/versioned/0.21.0/reference/generated/api/variables/logger.md +109 -0
  864. package/src/docs/versioned/0.21.0/reference/generated/api/variables/winstonLogger.md +1 -0
  865. package/src/docs/versioned/0.21.0/reference/generated/rtk/README.md +126 -0
  866. package/src/docs/versioned/0.21.0/reference/generated/rtk/functions/buildOptimisticCreateItem.md +17 -0
  867. package/src/docs/versioned/0.21.0/reference/generated/rtk/functions/configureOfflineMutationEndpoints.md +13 -0
  868. package/src/docs/versioned/0.21.0/reference/generated/rtk/functions/createBetterAuthClient.md +30 -0
  869. package/src/docs/versioned/0.21.0/reference/generated/rtk/functions/createOfflineMiddleware.md +41 -0
  870. package/src/docs/versioned/0.21.0/reference/generated/rtk/functions/createSessionApi.md +21 -0
  871. package/src/docs/versioned/0.21.0/reference/generated/rtk/functions/createStorageAdapter.md +17 -0
  872. package/src/docs/versioned/0.21.0/reference/generated/rtk/functions/generateAuthSlice.md +35 -0
  873. package/src/docs/versioned/0.21.0/reference/generated/rtk/functions/generateBetterAuthSlice.md +87 -0
  874. package/src/docs/versioned/0.21.0/reference/generated/rtk/functions/generateProfileEndpoints.md +35 -0
  875. package/src/docs/versioned/0.21.0/reference/generated/rtk/functions/generateTags.md +15 -0
  876. package/src/docs/versioned/0.21.0/reference/generated/rtk/functions/getAuthToken.md +5 -0
  877. package/src/docs/versioned/0.21.0/reference/generated/rtk/functions/getBaseQuery.md +23 -0
  878. package/src/docs/versioned/0.21.0/reference/generated/rtk/functions/getFriendlyExpirationInfo.md +5 -0
  879. package/src/docs/versioned/0.21.0/reference/generated/rtk/functions/getRealtimeSocket.md +7 -0
  880. package/src/docs/versioned/0.21.0/reference/generated/rtk/functions/getTokenExpirationTimes.md +5 -0
  881. package/src/docs/versioned/0.21.0/reference/generated/rtk/functions/isNetworkFetchError.md +14 -0
  882. package/src/docs/versioned/0.21.0/reference/generated/rtk/functions/isWebsocketsDebugEnabled.md +5 -0
  883. package/src/docs/versioned/0.21.0/reference/generated/rtk/functions/logAuth.md +11 -0
  884. package/src/docs/versioned/0.21.0/reference/generated/rtk/functions/logSocket.md +15 -0
  885. package/src/docs/versioned/0.21.0/reference/generated/rtk/functions/populateId.md +23 -0
  886. package/src/docs/versioned/0.21.0/reference/generated/rtk/functions/realtimeDocument.md +37 -0
  887. package/src/docs/versioned/0.21.0/reference/generated/rtk/functions/realtimeList.md +43 -0
  888. package/src/docs/versioned/0.21.0/reference/generated/rtk/functions/refreshAuthToken.md +5 -0
  889. package/src/docs/versioned/0.21.0/reference/generated/rtk/functions/registerTerrenoDevStore.md +14 -0
  890. package/src/docs/versioned/0.21.0/reference/generated/rtk/functions/resolveBaseUrls.md +28 -0
  891. package/src/docs/versioned/0.21.0/reference/generated/rtk/functions/resolveFeatureFlagsOptions.md +14 -0
  892. package/src/docs/versioned/0.21.0/reference/generated/rtk/functions/selectBetterAuthError.md +13 -0
  893. package/src/docs/versioned/0.21.0/reference/generated/rtk/functions/selectBetterAuthIsAuthenticated.md +13 -0
  894. package/src/docs/versioned/0.21.0/reference/generated/rtk/functions/selectBetterAuthIsLoading.md +13 -0
  895. package/src/docs/versioned/0.21.0/reference/generated/rtk/functions/selectBetterAuthState.md +13 -0
  896. package/src/docs/versioned/0.21.0/reference/generated/rtk/functions/selectBetterAuthUser.md +13 -0
  897. package/src/docs/versioned/0.21.0/reference/generated/rtk/functions/selectBetterAuthUserId.md +13 -0
  898. package/src/docs/versioned/0.21.0/reference/generated/rtk/functions/selectConflicts.md +13 -0
  899. package/src/docs/versioned/0.21.0/reference/generated/rtk/functions/selectCurrentUserId.md +11 -0
  900. package/src/docs/versioned/0.21.0/reference/generated/rtk/functions/selectIsAuthenticating.md +11 -0
  901. package/src/docs/versioned/0.21.0/reference/generated/rtk/functions/selectIsOnline.md +13 -0
  902. package/src/docs/versioned/0.21.0/reference/generated/rtk/functions/selectIsOnlineSafe.md +15 -0
  903. package/src/docs/versioned/0.21.0/reference/generated/rtk/functions/selectIsSyncing.md +13 -0
  904. package/src/docs/versioned/0.21.0/reference/generated/rtk/functions/selectLastTokenRefreshTimestamp.md +11 -0
  905. package/src/docs/versioned/0.21.0/reference/generated/rtk/functions/selectOfflineQueue.md +13 -0
  906. package/src/docs/versioned/0.21.0/reference/generated/rtk/functions/selectQueueLength.md +13 -0
  907. package/src/docs/versioned/0.21.0/reference/generated/rtk/functions/setRealtimeDebug.md +13 -0
  908. package/src/docs/versioned/0.21.0/reference/generated/rtk/functions/setRealtimeSocket.md +27 -0
  909. package/src/docs/versioned/0.21.0/reference/generated/rtk/functions/shouldDeferOfflineMutation.md +18 -0
  910. package/src/docs/versioned/0.21.0/reference/generated/rtk/functions/shouldReplayQueuedMutation.md +18 -0
  911. package/src/docs/versioned/0.21.0/reference/generated/rtk/functions/shouldShowStillThereModal.md +5 -0
  912. package/src/docs/versioned/0.21.0/reference/generated/rtk/functions/useFeatureFlags.md +15 -0
  913. package/src/docs/versioned/0.21.0/reference/generated/rtk/functions/useOfflineStatus.md +16 -0
  914. package/src/docs/versioned/0.21.0/reference/generated/rtk/functions/useRealtimeDebug.md +18 -0
  915. package/src/docs/versioned/0.21.0/reference/generated/rtk/functions/useSelectCurrentUserId.md +5 -0
  916. package/src/docs/versioned/0.21.0/reference/generated/rtk/functions/useSelectIsAuthenticating.md +5 -0
  917. package/src/docs/versioned/0.21.0/reference/generated/rtk/functions/useServerStatus.md +26 -0
  918. package/src/docs/versioned/0.21.0/reference/generated/rtk/functions/useSocketConnection.md +19 -0
  919. package/src/docs/versioned/0.21.0/reference/generated/rtk/functions/useSyncConnection.md +32 -0
  920. package/src/docs/versioned/0.21.0/reference/generated/rtk/functions/useTerrenoFeatureFlags.md +19 -0
  921. package/src/docs/versioned/0.21.0/reference/generated/rtk/functions/useUpgradeCheck.md +30 -0
  922. package/src/docs/versioned/0.21.0/reference/generated/rtk/interfaces/BaseUrls.md +17 -0
  923. package/src/docs/versioned/0.21.0/reference/generated/rtk/interfaces/BetterAuthClientConfig.md +31 -0
  924. package/src/docs/versioned/0.21.0/reference/generated/rtk/interfaces/BetterAuthClientInterface.md +23 -0
  925. package/src/docs/versioned/0.21.0/reference/generated/rtk/interfaces/BetterAuthSession.md +43 -0
  926. package/src/docs/versioned/0.21.0/reference/generated/rtk/interfaces/BetterAuthSessionData.md +13 -0
  927. package/src/docs/versioned/0.21.0/reference/generated/rtk/interfaces/BetterAuthState.md +49 -0
  928. package/src/docs/versioned/0.21.0/reference/generated/rtk/interfaces/BetterAuthUser.md +43 -0
  929. package/src/docs/versioned/0.21.0/reference/generated/rtk/interfaces/ConflictRecord.md +47 -0
  930. package/src/docs/versioned/0.21.0/reference/generated/rtk/interfaces/EmailSignupRequest.md +15 -0
  931. package/src/docs/versioned/0.21.0/reference/generated/rtk/interfaces/ExpoConstantsShape.md +29 -0
  932. package/src/docs/versioned/0.21.0/reference/generated/rtk/interfaces/GenerateBetterAuthSliceConfig.md +23 -0
  933. package/src/docs/versioned/0.21.0/reference/generated/rtk/interfaces/GoogleLoginRequest.md +5 -0
  934. package/src/docs/versioned/0.21.0/reference/generated/rtk/interfaces/ListResponse.md +35 -0
  935. package/src/docs/versioned/0.21.0/reference/generated/rtk/interfaces/OfflineMiddlewareConfig.md +15 -0
  936. package/src/docs/versioned/0.21.0/reference/generated/rtk/interfaces/OfflineState.md +23 -0
  937. package/src/docs/versioned/0.21.0/reference/generated/rtk/interfaces/OfflineStatus.md +87 -0
  938. package/src/docs/versioned/0.21.0/reference/generated/rtk/interfaces/QueuedMutation.md +55 -0
  939. package/src/docs/versioned/0.21.0/reference/generated/rtk/interfaces/RealtimeEvent.md +58 -0
  940. package/src/docs/versioned/0.21.0/reference/generated/rtk/interfaces/ResetPasswordRequest.md +15 -0
  941. package/src/docs/versioned/0.21.0/reference/generated/rtk/interfaces/ServerStatusOptions.md +31 -0
  942. package/src/docs/versioned/0.21.0/reference/generated/rtk/interfaces/SocketConnection.md +11 -0
  943. package/src/docs/versioned/0.21.0/reference/generated/rtk/interfaces/StorageAdapter.md +53 -0
  944. package/src/docs/versioned/0.21.0/reference/generated/rtk/interfaces/TerrenoFlagDefinition.md +19 -0
  945. package/src/docs/versioned/0.21.0/reference/generated/rtk/interfaces/UseFeatureFlagsOptions.md +50 -0
  946. package/src/docs/versioned/0.21.0/reference/generated/rtk/interfaces/UseSocketConnectionOptions.md +87 -0
  947. package/src/docs/versioned/0.21.0/reference/generated/rtk/interfaces/UseTerrenoFeatureFlagsOptions.md +41 -0
  948. package/src/docs/versioned/0.21.0/reference/generated/rtk/interfaces/UseTerrenoFeatureFlagsResult.md +33 -0
  949. package/src/docs/versioned/0.21.0/reference/generated/rtk/interfaces/UserResponse.md +17 -0
  950. package/src/docs/versioned/0.21.0/reference/generated/rtk/interfaces/VersionCheckResponse.md +39 -0
  951. package/src/docs/versioned/0.21.0/reference/generated/rtk/type-aliases/BetterAuthClient.md +3 -0
  952. package/src/docs/versioned/0.21.0/reference/generated/rtk/type-aliases/BetterAuthOAuthProvider.md +3 -0
  953. package/src/docs/versioned/0.21.0/reference/generated/rtk/type-aliases/BetterAuthSlice.md +3 -0
  954. package/src/docs/versioned/0.21.0/reference/generated/rtk/type-aliases/EmailLoginRequest.md +1 -0
  955. package/src/docs/versioned/0.21.0/reference/generated/rtk/type-aliases/RootState.md +1 -0
  956. package/src/docs/versioned/0.21.0/reference/generated/rtk/type-aliases/ServerStatus.md +1 -0
  957. package/src/docs/versioned/0.21.0/reference/generated/rtk/type-aliases/TerrenoFlagConfiguration.md +1 -0
  958. package/src/docs/versioned/0.21.0/reference/generated/rtk/variables/AUTH_DEBUG.md +1 -0
  959. package/src/docs/versioned/0.21.0/reference/generated/rtk/variables/IsWeb.md +1 -0
  960. package/src/docs/versioned/0.21.0/reference/generated/rtk/variables/LOGOUT_ACTION_TYPE.md +1 -0
  961. package/src/docs/versioned/0.21.0/reference/generated/rtk/variables/SAME_ORIGIN_SENTINEL.md +5 -0
  962. package/src/docs/versioned/0.21.0/reference/generated/rtk/variables/TOKEN_REFRESHED_SUCCESS.md +1 -0
  963. package/src/docs/versioned/0.21.0/reference/generated/rtk/variables/addConflict.md +1 -0
  964. package/src/docs/versioned/0.21.0/reference/generated/rtk/variables/baseTasksUrl.md +1 -0
  965. package/src/docs/versioned/0.21.0/reference/generated/rtk/variables/baseUrl.md +1 -0
  966. package/src/docs/versioned/0.21.0/reference/generated/rtk/variables/baseWebsocketsUrl.md +1 -0
  967. package/src/docs/versioned/0.21.0/reference/generated/rtk/variables/clearConflicts.md +1 -0
  968. package/src/docs/versioned/0.21.0/reference/generated/rtk/variables/clearQueue.md +1 -0
  969. package/src/docs/versioned/0.21.0/reference/generated/rtk/variables/dequeue.md +1 -0
  970. package/src/docs/versioned/0.21.0/reference/generated/rtk/variables/dismissConflict.md +1 -0
  971. package/src/docs/versioned/0.21.0/reference/generated/rtk/variables/emptySplitApi.md +1 -0
  972. package/src/docs/versioned/0.21.0/reference/generated/rtk/variables/enqueue.md +1 -0
  973. package/src/docs/versioned/0.21.0/reference/generated/rtk/variables/offlineReducer.md +1 -0
  974. package/src/docs/versioned/0.21.0/reference/generated/rtk/variables/offlineSlice.md +1 -0
  975. package/src/docs/versioned/0.21.0/reference/generated/rtk/variables/selectUndismissedConflicts.md +1 -0
  976. package/src/docs/versioned/0.21.0/reference/generated/rtk/variables/setOnlineStatus.md +1 -0
  977. package/src/docs/versioned/0.21.0/reference/generated/rtk/variables/setSyncing.md +1 -0
  978. package/src/docs/versioned/0.21.0/reference/generated/rtk/variables/staggeredBaseQuery.md +1 -0
  979. package/src/docs/versioned/0.21.0/reference/generated/rtk/variables/useGetVersionCheckQuery.md +1 -0
  980. package/src/docs/versioned/0.21.0/reference/generated/rtk/variables/useLazyGetVersionCheckQuery.md +1 -0
  981. package/src/docs/versioned/0.21.0/reference/mcp-server.md +586 -0
  982. package/src/docs/versioned/0.21.0/reference/rtk.md +439 -0
  983. package/src/docs/versioned/0.21.0/reference/ui.md +418 -0
  984. package/src/docs/versioned/0.21.0/tasks/admin-improvements.md +429 -0
  985. package/src/docs/versioned/0.21.0/tasks/admin-only.md +221 -0
  986. package/src/docs/versioned/0.21.0/tasks/admin-script-runner.md +50 -0
  987. package/src/docs/versioned/0.21.0/tasks/admin-ui-v2-django-parity.md +135 -0
  988. package/src/docs/versioned/0.21.0/tasks/consent-forms.md +193 -0
  989. package/src/docs/versioned/0.21.0/tasks/design-blend-skill.md +147 -0
  990. package/src/docs/versioned/0.21.0/tasks/feature-flags-openfeature.md +77 -0
  991. package/src/docs/versioned/0.21.0/tasks/feature-flags.md +23 -0
  992. package/src/docs/versioned/0.21.0/tasks/model-router-actions.md +46 -0
  993. package/src/docs/versioned/0.21.0/tasks/model-router-mcp.md +105 -0
  994. package/src/docs/versioned/0.21.0/tasks/offline-mode.md +139 -0
  995. package/src/docs/versioned/0.21.0/tasks/upgrade-banner.md +73 -0
  996. package/src/docs/versioned/0.21.0/tutorials/README.md +7 -0
  997. package/src/docs/versioned/0.21.0/tutorials/getting-started.md +44 -0
  998. package/src/docs/versioned/next/implementationPlans/syncdb-local-first.md +591 -0
  999. package/src/docs/versioned/next/tasks/syncdb-local-first.md +117 -0
@@ -0,0 +1,616 @@
1
+ # Admin-Only: Serve Admin SPA From a Terreno Backend (Opt-In)
2
+
3
+ **Status:** Draft
4
+ **Branch:** `admin-only`
5
+ **Owner:** Josh Gachnang
6
+ **Created:** 2026-05-11
7
+
8
+ ## Goal
9
+
10
+ Let any Terreno backend opt-in to serving a pre-built admin SPA from the same Node process, eliminating the need for a separate static-site deploy to GCS / Netlify / Cloudflare Pages. The default backend image stays small (no React) — admin assets only ship in the npm tarball for consumers who actually want them.
11
+
12
+ The embedded use case (admin screens inside the consumer's main Expo app, as `example-frontend/app/admin/*` does today) remains supported and unchanged.
13
+
14
+ ## Non-Goals
15
+
16
+ - **SSR.** Admin is behind auth, no SEO benefit, and would drag the Expo runtime into backend containers.
17
+ - **A breaking change to existing `/admin/*` API paths.** The SPA mounts at `/console` (configurable). The `AdminApp` plugin's `basePath` default is untouched. Path consolidation onto `/admin` is a future, opt-in migration.
18
+ - **Standalone-consumable Expo Router subtree** for embedding into other apps. Deferred — complex with file-based routing.
19
+ - **Legacy JWT/Passport auth in the standalone SPA.** Better-Auth only for v1.
20
+ - **Tenant scoping in URLs** (e.g. `/console/{tenant}`). Consumer-owned via permissions.
21
+ - **Bundle splitting**, brotli precompression, custom font subsetting. Defer to v2 perf pass.
22
+
23
+ ## Decisions
24
+
25
+ | Question | Decision |
26
+ |---|---|
27
+ | SPA path | `/console` (configurable via `basePath` option). Non-breaking. |
28
+ | Build | `bun expo export -p web --output-dir dist`, run in `prepublishOnly`. `dist/` ships in npm tarball. Build with **no** `experiments.baseUrl` — bundle is path-agnostic. |
29
+ | Path-agnostic SPA | `AdminSpaServeApp` rewrites absolute `/_expo/` / `/assets/` references inside `dist/index.html` to `${basePath}/_expo/` / `${basePath}/assets/` once at boot (cached). One pre-built bundle works at any `basePath`. |
30
+ | Auth | Better-Auth same-origin session cookies. Admin-spa calls `createAuthClient` from `better-auth/react` **directly** (no expo plugin — admin-spa is web-only). `basePath` passed in via app-config. |
31
+ | Base URL resolution | New `__SAME_ORIGIN__` sentinel in `@terreno/rtk`. Resolves to `window.location.origin` at runtime. Sentinel check moves to the **top** of `resolveBaseUrls` (before the `!isDev` gate). |
32
+ | Theming / branding | Runtime `GET ${basePath}/app-config.json` (absolute, not relative). Served by `AdminSpaServeApp` from constructor options. SPA fetches on boot. |
33
+ | Asset caching | `_expo/` and `assets/` directories: `Cache-Control: public, max-age=31536000, immutable`. `index.html` and `app-config.json`: `Cache-Control: no-store`. |
34
+ | Admin gate | Bundle is served to anyone; gating happens in-app (session check + `user.admin === true`). Non-admins see a "Forbidden" screen, not the login form. |
35
+ | Navigation vs API base | `@terreno/admin-frontend` is refactored to accept **two** props — `apiBase` (where the JSON lives) and `routeBase` (where navigation points). Backward-compat: `baseUrl` is kept as a deprecated alias that defaults both. The embedded case keeps passing `baseUrl="/admin"` — both ends. The standalone SPA passes `apiBase="/admin"` + `routeBase=""` so `router.push` stays inside the SPA's own root. |
36
+ | Express 5 wildcard syntax | Use `${basePath}/*splat` to match the existing convention in `api/src/betterAuthSetup.ts:215`. Register a separate `app.get(basePath, ...)` to handle the no-trailing-slash case without a redirect. |
37
+ | Dev iteration | New `bun run admin-spa:dev` script runs `bun expo start --web --port 8083`. Backend in dev mode optionally proxies `/console/*` to `:8083` when `ADMIN_SPA_DEV_PROXY=http://localhost:8083` is set. Avoids 30–60s `expo export` per change. |
38
+
39
+ ## Architecture
40
+
41
+ ```
42
+ ┌──────────────────────────────────────────────────┐
43
+ │ Consumer's Terreno backend (one Node process) │
44
+ │ │
45
+ Browser ──── GET /console/ ──▶ │ AdminSpaServeApp │
46
+ │ └─ express.static(dist/_expo, immutable) │
47
+ │ └─ express.static(dist/assets, immutable) │
48
+ │ └─ GET /console/app-config.json (no-store) │
49
+ │ └─ GET /console/* → dist/index.html (no-store)│
50
+ │ │
51
+ Browser ──── GET /admin/config ▶│ AdminApp (existing, unchanged) │
52
+ Browser ──── POST /api/auth/* ─▶│ BetterAuthApp (existing, unchanged) │
53
+ └──────────────────────────────────────────────────┘
54
+ ```
55
+
56
+ Same-origin everywhere → session cookies attach automatically, no CORS.
57
+
58
+ ## Package layout
59
+
60
+ New workspace package `admin-spa/`:
61
+
62
+ ```
63
+ admin-spa/
64
+ package.json # bun workspace + dist/** in files
65
+ tsconfig.json # two tsconfigs: one for app/, one for src/
66
+ tsconfig.server.json
67
+ biome.jsonc
68
+ bunfig.toml
69
+ app.json # Expo config — web.output:"static", extra.BASE_URL:"__SAME_ORIGIN__"
70
+ README.md
71
+ metro.config.js # if needed for workspace monorepo resolution
72
+ babel.config.js
73
+ openapi-config.ts # SDK codegen pointing at admin endpoints only
74
+ app/ # Expo Router source (the SPA itself)
75
+ _layout.tsx
76
+ index.tsx # AdminModelList route
77
+ login.tsx # Better-Auth login
78
+ forbidden.tsx # Non-admin landing
79
+ configuration.tsx
80
+ scripts.tsx
81
+ version-config.tsx
82
+ [model]/
83
+ _layout.tsx
84
+ index.tsx
85
+ [id].tsx
86
+ create.tsx
87
+ store/
88
+ index.ts # Redux store + persistor + better-auth slice
89
+ sdk.ts # Enhanced endpoints + tags
90
+ openApiSdk.ts # Generated (gitignored)
91
+ components/
92
+ AppConfigGate.tsx # Fetches /console/app-config.json, blocks until ready
93
+ AdminGate.tsx # Session check + admin check; redirects to login or forbidden
94
+ src/ # Backend-side code (the Express plugin)
95
+ index.ts
96
+ serve.ts
97
+ appConfig.ts # AppConfig type + defaults
98
+ serve.test.ts
99
+ dist/ # Pre-built static export (gitignored, populated at publish)
100
+ ```
101
+
102
+ Two TypeScript projects: `app/` + `store/` + `components/` compile against Expo's RN web tsconfig, `src/` compiles to plain Node ESM for the Express plugin.
103
+
104
+ ## Files to Create / Modify
105
+
106
+ ### NEW — `admin-spa/` (full package)
107
+
108
+ | File | Purpose |
109
+ |---|---|
110
+ | `admin-spa/package.json` | Workspace package. `name: "@terreno/admin-spa"`. `main: "./src/dist/index.js"` (server plugin). `exports`: `"."` → server, `"./serve"` → plugin alias, `"./dist/*"` → static bytes. `files: ["src/dist/**", "dist/**"]`. Scripts: `compile`, `dev`, `build:web`, `prepublishOnly`, `test`, `lint`. Dev deps mirror example-frontend; runtime deps are `@terreno/admin-frontend`, `@terreno/api` (peer), `@terreno/rtk`, `@terreno/ui`, `expo`, `expo-router`, `react`, `react-dom`, `react-native`, `react-native-web`, `react-redux`, `redux-persist`, `better-auth`. |
111
+ | `admin-spa/tsconfig.json` | App-side TS config (extends Expo's TS preset). |
112
+ | `admin-spa/tsconfig.server.json` | Server-side TS config for `src/*.ts` → `src/dist/*.js`. |
113
+ | `admin-spa/biome.jsonc` | Mirror `admin-frontend/biome.jsonc`. |
114
+ | `admin-spa/bunfig.toml` | Mirror `admin-frontend/bunfig.toml`. |
115
+ | `admin-spa/app.json` | Expo config. `web: {bundler: "metro", output: "static"}`, `extra: {BASE_URL: "__SAME_ORIGIN__"}`, `scheme: "terreno-admin"`. |
116
+ | `admin-spa/babel.config.js` | Match example-frontend. |
117
+ | `admin-spa/metro.config.js` | Workspace resolution for monorepo. Match example-frontend. |
118
+ | `admin-spa/openapi-config.ts` | Codegen against `http://localhost:4000/openapi.json` → `store/openApiSdk.ts`. Filtered to admin endpoints (`endpointFilter` for paths starting with `/admin`). |
119
+ | `admin-spa/app/_layout.tsx` | Root. `<Provider><PersistGate><TerrenoProvider><AppConfigGate><AdminGate><Stack/></AdminGate></AppConfigGate></TerrenoProvider></PersistGate></Provider>`. |
120
+ | `admin-spa/app/login.tsx` | Calls `authClient.signIn.email` + `<SocialLoginButton>` for each configured provider. Provider list is read from app-config.json. |
121
+ | `admin-spa/app/forbidden.tsx` | "You must be an admin to access this page." + sign-out button. |
122
+ | `admin-spa/app/index.tsx` | Wraps `<AdminModelList api={terrenoApi} baseUrl="/admin" />`. |
123
+ | `admin-spa/app/[model]/_layout.tsx` | `<Stack/>` for model sub-routes. |
124
+ | `admin-spa/app/[model]/index.tsx` | Wraps `<AdminModelTable />`. |
125
+ | `admin-spa/app/[model]/[id].tsx` | Wraps `<AdminModelForm id={id} />`. |
126
+ | `admin-spa/app/[model]/create.tsx` | Wraps `<AdminModelForm />` (no id). |
127
+ | `admin-spa/app/configuration.tsx` | Wraps `<ConfigurationScreen />`. |
128
+ | `admin-spa/app/scripts.tsx` | Wraps `<AdminScriptList />`. |
129
+ | `admin-spa/app/version-config.tsx` | Wraps `<AdminVersionConfig />`. |
130
+ | `admin-spa/store/index.ts` | `configureStore` + `generateBetterAuthSlice(authClient)` + persistor. |
131
+ | `admin-spa/store/sdk.ts` | Re-exports `openapi` with custom endpoints + tag types. |
132
+ | `admin-spa/components/AppConfigGate.tsx` | Fetches `${basePath}/app-config.json` on boot. Provides via React context. Blocks render until loaded. |
133
+ | `admin-spa/components/AdminGate.tsx` | Reads `useSelectIsAuthenticated`. If unauth → redirect to `/login`. If auth but not admin → redirect to `/forbidden`. |
134
+ | `admin-spa/src/index.ts` | Server-side entry. Exports `AdminSpaServeApp`, `AdminSpaAppConfig`. |
135
+ | `admin-spa/src/serve.ts` | `AdminSpaServeApp implements TerrenoPlugin` — see below. |
136
+ | `admin-spa/src/appConfig.ts` | `AdminSpaAppConfig` interface; default values. |
137
+ | `admin-spa/src/serve.test.ts` | Supertest-driven tests for the plugin. |
138
+ | `admin-spa/README.md` | Install, register, customize. |
139
+
140
+ ### MODIFIED — existing files
141
+
142
+ | File | Change |
143
+ |---|---|
144
+ | `package.json` (root) | Add `"admin-spa"` to `workspaces` array. Add `admin-spa:*` scripts mirroring `admin-frontend:*`. |
145
+ | `rtk/src/constants.ts` | Add `SAME_ORIGIN_SENTINEL = "__SAME_ORIGIN__"`. In `resolveBaseUrls`, if `baseFromExtra === SAME_ORIGIN_SENTINEL` and `typeof window !== "undefined"`, return `baseUrl: window.location.origin` (+ `wss:` for websockets). |
146
+ | `rtk/src/constants.test.ts` | Add tests for the sentinel — both with and without `window`. |
147
+ | `example-backend/src/server.ts` | Add `.register(new AdminSpaServeApp({basePath: "/console", appConfig: {brandName: "Terreno Example", primaryColor: "#7C3AED"}}))` — gated on `process.env.ADMIN_SPA_ENABLED === "true"` so we don't force-enable in tests. |
148
+ | `example-backend/package.json` | Add `"@terreno/admin-spa": "workspace:*"` dep. |
149
+ | `CLAUDE.local.md` | Add `admin-spa/` to packages list and example commands. |
150
+ | `.claude/rules/admin-spa/00-admin-spa.md` (NEW via `rulesync`) | Package docs file for AI/dev rules — mirror `admin-frontend/00-admin-frontend.md` shape. |
151
+
152
+ ## Express plugin — `AdminSpaServeApp` shape
153
+
154
+ ```typescript
155
+ // admin-spa/src/serve.ts
156
+ import express from "express";
157
+ import fs from "node:fs";
158
+ import path from "node:path";
159
+ import {fileURLToPath} from "node:url";
160
+ import type {TerrenoPlugin} from "@terreno/api";
161
+ import {logger} from "@terreno/api";
162
+ import type {AdminSpaAppConfig} from "./appConfig";
163
+
164
+ const __dirname = path.dirname(fileURLToPath(import.meta.url));
165
+ const DIST_DIR = path.resolve(__dirname, "../../dist"); // src/dist/ -> ../../dist
166
+
167
+ export interface AdminSpaServeOptions {
168
+ basePath?: string; // default "/console"
169
+ appConfig?: AdminSpaAppConfig; // brand name, logo URL, primary color, enabled providers
170
+ distDir?: string; // override for tests / custom builds
171
+ /** In dev, proxy SPA paths to a running `expo start --web` server. e.g. "http://localhost:8083". */
172
+ devProxyTarget?: string;
173
+ }
174
+
175
+ export class AdminSpaServeApp implements TerrenoPlugin {
176
+ constructor(private readonly opts: AdminSpaServeOptions = {}) {}
177
+
178
+ register(app: express.Application): void {
179
+ const basePath = this.opts.basePath ?? "/console";
180
+ const distDir = this.opts.distDir ?? DIST_DIR;
181
+ const appConfig: AdminSpaAppConfig = {
182
+ brandName: "Terreno Admin",
183
+ primaryColor: "#2563EB",
184
+ providers: ["email"],
185
+ ...this.opts.appConfig,
186
+ };
187
+
188
+ // 0. Dev proxy short-circuit. Forwards everything under basePath to `expo start --web`.
189
+ if (this.opts.devProxyTarget) {
190
+ const {createProxyMiddleware} = require("http-proxy-middleware");
191
+ app.use(basePath, createProxyMiddleware({
192
+ target: this.opts.devProxyTarget,
193
+ changeOrigin: true,
194
+ pathRewrite: {[`^${basePath}`]: ""},
195
+ ws: true,
196
+ }));
197
+ // app-config still served by the plugin so the dev SPA reads it from the same path.
198
+ app.get(`${basePath}/app-config.json`, (_req, res) => {
199
+ res.set("Cache-Control", "no-store").json(appConfig);
200
+ });
201
+ logger.info(`Admin SPA dev-proxied to ${this.opts.devProxyTarget} at ${basePath}/`);
202
+ return;
203
+ }
204
+
205
+ // Read index.html once and rewrite absolute /_expo/ and /assets/ refs to ${basePath}/_expo/...
206
+ // Lets the same pre-built bundle be served from any basePath without rebuilding.
207
+ const rawIndex = fs.readFileSync(path.join(distDir, "index.html"), "utf-8");
208
+ const indexHtml = rawIndex
209
+ .replaceAll('href="/_expo/', `href="${basePath}/_expo/`)
210
+ .replaceAll('src="/_expo/', `src="${basePath}/_expo/`)
211
+ .replaceAll('href="/assets/', `href="${basePath}/assets/`)
212
+ .replaceAll('src="/assets/', `src="${basePath}/assets/`);
213
+
214
+ // 1. Hashed asset directories — long cache, immutable.
215
+ const staticOpts = {immutable: true, maxAge: "365d" as const};
216
+ app.use(`${basePath}/_expo`, express.static(path.join(distDir, "_expo"), staticOpts));
217
+ app.use(`${basePath}/assets`, express.static(path.join(distDir, "assets"), staticOpts));
218
+
219
+ // 2. Runtime config — never cached.
220
+ app.get(`${basePath}/app-config.json`, (_req, res) => {
221
+ res.set("Cache-Control", "no-store");
222
+ res.json(appConfig);
223
+ });
224
+
225
+ // 3. SPA fallback. Two registrations: bare basePath (no trailing slash) AND splat. Matches
226
+ // `api/src/betterAuthSetup.ts:215` convention (`/*name`, no braces).
227
+ const serveSpa = (_req: express.Request, res: express.Response): void => {
228
+ res.set("Cache-Control", "no-store").type("html").send(indexHtml);
229
+ };
230
+ app.get(basePath, serveSpa);
231
+ app.get(`${basePath}/*splat`, serveSpa);
232
+
233
+ logger.info(`Admin SPA mounted at ${basePath}/`);
234
+ }
235
+ }
236
+ ```
237
+
238
+ Path-agnostic plumbing: assets are emitted by Expo at absolute `/_expo/...` and `/assets/...`. We don't pass `experiments.baseUrl` at build time (that would bake the path into the bundle). Instead the plugin rewrites the asset URLs in `index.html` once at boot. The hashed JS files don't need rewriting because they reference each other via relative-to-bundle imports, not absolute roots. **Phase 1 acceptance must grep `dist/index.html` for `_expo` paths and confirm this assumption.** If Expo Router 6 changes asset-reference format (e.g. emits `<link rel="modulepreload" href="...">` differently), the rewrite list must grow.
239
+
240
+ Express 5 wildcard: matches the repo convention (`/*name`, no braces). Two registrations needed because `/*splat` on its own does NOT match `GET /console` without a trailing slash — Express 5 would otherwise redirect.
241
+
242
+ ## Same-origin BASE_URL — `@terreno/rtk` patch
243
+
244
+ `rtk/src/constants.ts:75` currently gates `baseFromExtra` behind `!isDev`, so a naive "check sentinel at the end" patch silently breaks the sentinel in dev mode. The sentinel check must run **before** the existing branching:
245
+
246
+ ```typescript
247
+ // rtk/src/constants.ts (delta)
248
+ export const SAME_ORIGIN_SENTINEL = "__SAME_ORIGIN__";
249
+
250
+ export const resolveBaseUrls = (args: {
251
+ envApiUrl?: string;
252
+ expoConstants: ExpoConstantsShape;
253
+ isDev: boolean;
254
+ // NEW — defaults to globalThis.location.origin. Injectable for tests.
255
+ windowOrigin?: string;
256
+ }): BaseUrls => {
257
+ const baseFromExtra = args.expoConstants.expoConfig?.extra?.BASE_URL;
258
+ const origin =
259
+ args.windowOrigin ??
260
+ (typeof globalThis !== "undefined" && (globalThis as {location?: Location}).location?.origin) ??
261
+ undefined;
262
+
263
+ // Sentinel: resolves at runtime to window.location.origin, regardless of isDev.
264
+ if (baseFromExtra === SAME_ORIGIN_SENTINEL && origin) {
265
+ const wsBase = origin.replace(/^http/, "ws");
266
+ return {baseUrl: origin, baseTasksUrl: `${origin}/tasks`, baseWebsocketsUrl: `${wsBase}/`};
267
+ }
268
+
269
+ // ...existing resolution unchanged (hostUri / experience / LOCALHOST fallback).
270
+ };
271
+ ```
272
+
273
+ - Sentinel + native (no `window`): falls through to existing resolution. Admin SPA is web-only — this is a safety net.
274
+ - Module-level call passes `globalThis.location?.origin` with a `typeof` guard so it doesn't blow up under Bun/Jest.
275
+ - Tests in `rtk/src/constants.test.ts`: sentinel + `https://api.example.com` origin → `baseUrl/wss`; sentinel + http origin → `ws`; sentinel + no window → fallback path; sentinel + isDev=true + window → still returns the origin (regression for the `!isDev` gate); non-sentinel BASE_URL → unchanged.
276
+
277
+ ## App-config endpoint
278
+
279
+ Lives at `${basePath}/app-config.json`, served by `AdminSpaServeApp`. Shape:
280
+
281
+ ```typescript
282
+ // admin-spa/src/appConfig.ts
283
+ export interface AdminSpaAppConfig {
284
+ /** Brand name shown in header (default: "Terreno Admin") */
285
+ brandName: string;
286
+ /** Logo asset URL (absolute or relative; optional) */
287
+ logoUrl?: string;
288
+ /** Primary brand color (hex). Default: "#2563EB". */
289
+ primaryColor: string;
290
+ /** Enabled login providers. Drives login screen rendering. */
291
+ providers: ReadonlyArray<"email" | "google" | "github" | "apple">;
292
+ /** Base path of the better-auth routes on this same origin. Default: "/api/auth". */
293
+ authBasePath?: string;
294
+ /** Base path of admin API on this same origin. Default: "/admin". */
295
+ adminApiBasePath?: string;
296
+ }
297
+ ```
298
+
299
+ The SPA fetches this on boot (`AppConfigGate`), uses it to:
300
+ - Set theme primaries.
301
+ - Conditionally render `<SocialLoginButton provider="google" />` etc. on login.
302
+ - Pass `adminApiBasePath` as `baseUrl` to admin-frontend components.
303
+ - Build the better-auth client with `basePath: appConfig.authBasePath`.
304
+
305
+ This lets one pre-built bundle work for any consumer without rebuild.
306
+
307
+ ## SDK generation
308
+
309
+ `admin-spa/openapi-config.ts`:
310
+
311
+ ```typescript
312
+ import type {ConfigFile} from "@rtk-query/codegen-openapi";
313
+
314
+ const config: ConfigFile = {
315
+ apiFile: "@terreno/rtk",
316
+ apiImport: "emptySplitApi",
317
+ outputFile: "./store/openApiSdk.ts",
318
+ schemaFile: "http://localhost:4000/openapi.json",
319
+ hooks: true,
320
+ tag: true,
321
+ flattenArg: true,
322
+ filterEndpoints: [/^get.+Admin/i, /^post.+Admin/i, /^patch.+Admin/i, /^delete.+Admin/i],
323
+ };
324
+ export default config;
325
+ ```
326
+
327
+ The filter narrows the generated hooks to admin endpoints. We still generate the file at build time so types stay correct, but the runtime cost is bound by admin-only endpoints.
328
+
329
+ ## Build / publish pipeline
330
+
331
+ `admin-spa/package.json` scripts:
332
+
333
+ ```json
334
+ {
335
+ "scripts": {
336
+ "compile": "tsc -p tsconfig.server.json",
337
+ "compile:watch": "tsc -p tsconfig.server.json -w",
338
+ "build:web": "bun expo export --platform web --output-dir dist",
339
+ "sdk": "bunx @rtk-query/codegen-openapi openapi-config.ts",
340
+ "prepublishOnly": "bun run sdk && bun run build:web && bun run compile",
341
+ "test": "bun test src/",
342
+ "test:ci": "bun run test",
343
+ "lint": "biome check ./src ./app ./store ./components",
344
+ "lint:fix": "biome check --write ./src ./app ./store ./components"
345
+ }
346
+ }
347
+ ```
348
+
349
+ - `dist/` is gitignored; included in npm tarball via `files: ["src/dist/**", "dist/**"]`.
350
+ - `prepublishOnly` runs SDK gen, builds the SPA, compiles the server plugin. On a fresh checkout the consumer skips this — they pull a published tarball.
351
+
352
+ ## Consumer DX
353
+
354
+ ```typescript
355
+ import {AdminSpaServeApp} from "@terreno/admin-spa";
356
+
357
+ new TerrenoApp({userModel: User})
358
+ .register(new BetterAuthApp({config: betterAuthConfig, userModel: User}))
359
+ .register(new AdminApp({models: [...]}))
360
+ .register(new AdminSpaServeApp({
361
+ basePath: "/console",
362
+ appConfig: {
363
+ brandName: "Acme Admin",
364
+ logoUrl: "/static/logo.svg",
365
+ primaryColor: "#FF6B35",
366
+ providers: ["email", "google"],
367
+ },
368
+ }))
369
+ .start();
370
+ ```
371
+
372
+ Open `https://api.acme.com/console/` → admin UI. Done.
373
+
374
+ ## Phases
375
+
376
+ ### Phase 0 — `@terreno/admin-frontend` API split (prerequisite — adversarial review fallout)
377
+ Before any admin-spa work: refactor `AdminModelList`, `AdminModelTable`, `AdminModelForm`, etc. to accept `apiBase` and `routeBase` separately. Existing `baseUrl` prop is kept as deprecated alias that defaults both. Embedded consumers continue to work with no changes (they pass `baseUrl="/admin"` → both become `/admin`). The standalone SPA passes `apiBase="/admin"` + `routeBase=""` so `router.push(\`${routeBase}/${modelName}\`)` stays inside the SPA root.
378
+
379
+ Tasks:
380
+ - 0.1 Add `apiBase` + `routeBase` props to each admin-frontend component that currently accepts `baseUrl`. Internally: `const resolvedApiBase = apiBase ?? baseUrl; const resolvedRouteBase = routeBase ?? baseUrl;`. Use `resolvedApiBase` everywhere data is fetched and `resolvedRouteBase` for every `router.push` / `href` call. Files: `admin-frontend/src/AdminModelList.tsx`, `AdminModelTable.tsx`, `AdminModelForm.tsx`, `AdminRefField.tsx`, `AdminScriptList.tsx`, `AdminVersionConfig.tsx`, `ConfigurationScreen.tsx`, `useAdminConfig.tsx`, `useAdminApi.ts`.
381
+ - 0.2 Update existing tests to keep using `baseUrl` (alias path) — verify backward compat.
382
+ - 0.3 Add a focused test in admin-frontend that asserts `router.push` is called with the `routeBase`-prefixed path when both props are passed independently.
383
+ - 0.4 Verify `example-frontend` (embedded admin) still compiles and renders unchanged.
384
+
385
+ ### Phase 1 — Scaffold the package (foundation)
386
+ Create the empty `admin-spa/` workspace, wire it into root `package.json`, get `bun install` + `bun run compile` green. Smallest-possible Expo Router app that exports successfully.
387
+
388
+ Tasks:
389
+ - 1.1 Create `admin-spa/package.json` (runtime deps: `@terreno/admin-frontend`, `@terreno/rtk`, `@terreno/ui`, `expo`, `expo-router`, `expo-constants`, `expo-font`, `react`, `react-dom`, `react-native`, `react-native-web`, `react-native-screens`, `react-native-safe-area-context`, `react-redux`, `redux-persist`, `@reduxjs/toolkit`, `@react-native-async-storage/async-storage`, `better-auth`; peer dep `@terreno/api`; runtime dep `http-proxy-middleware` for the dev proxy; dev deps mirror `example-frontend`). Add `tsconfig.json`, `tsconfig.server.json`, `biome.jsonc`, `bunfig.toml`, `app.json` (with `web.output: "static"`, `extra.BASE_URL: "__SAME_ORIGIN__"`, **no** `experiments.baseUrl`), `babel.config.js`. **No `expo-secure-store`** — admin-spa is web-only.
390
+ - 1.2 Copy `example-frontend/metro.config.js` to `admin-spa/`, adjust `monorepoPackages` to include `@terreno/admin-frontend` (already there) and exclude `@terreno/api`, `express`, anything backend-only via `backendOnlyModules`.
391
+ - 1.3 Add `"admin-spa"` to root `workspaces`. Add `admin-spa:compile`, `admin-spa:lint`, `admin-spa:test`, `admin-spa:build`, `admin-spa:dev`, `admin-spa:sdk` scripts.
392
+ - 1.4 Stub `src/index.ts` exporting `AdminSpaServeApp` (no-op `register`). Add `"type": "module"` to `admin-spa/package.json`. Verify `tsc -p tsconfig.server.json` produces `src/dist/index.js`.
393
+ - 1.5 Stub `app/_layout.tsx` + `app/index.tsx` returning a "Hello admin" `Box`.
394
+ - 1.6 Verify `bun run --filter '@terreno/admin-spa' build:web` succeeds and outputs `dist/index.html`. **Grep `dist/index.html` for `_expo` and verify the path prefix matches what `AdminSpaServeApp` rewrites** (`/_expo/` absolute). If Expo emits a different format, expand the rewrite list in `serve.ts` before Phase 3.
395
+
396
+ ### Phase 2 — Same-origin BASE_URL support (`@terreno/rtk`)
397
+ The one change to an existing package.
398
+
399
+ Tasks:
400
+ - 2.1 Add `SAME_ORIGIN_SENTINEL` export and `windowOrigin` parameter to `resolveBaseUrls` in `rtk/src/constants.ts`.
401
+ - 2.2 Wire the resolver call to read `globalThis.location?.origin`.
402
+ - 2.3 Tests: sentinel + window (http → ws, https → wss), sentinel + no window (falls back), sentinel + dev mode + window, missing sentinel (unchanged behavior).
403
+ - 2.4 Verify `bun run rtk:test` passes.
404
+
405
+ ### Phase 3 — Express plugin (`AdminSpaServeApp`)
406
+ Backend-side serving + app-config endpoint. No SPA logic yet; serve a placeholder `index.html`.
407
+
408
+ Tasks:
409
+ - 3.1 Implement `src/appConfig.ts` (type + defaults).
410
+ - 3.2 Implement `src/serve.ts` with static + `app-config.json` + SPA fallback.
411
+ - 3.3 `src/serve.test.ts` — supertest cases:
412
+ - `GET /console/` returns 200 + HTML.
413
+ - `GET /console/users` returns 200 + same HTML (SPA fallback).
414
+ - `GET /console/_expo/hashed-asset.js` returns 200 with immutable cache header.
415
+ - `GET /console/app-config.json` returns 200 + provided config + `Cache-Control: no-store`.
416
+ - `GET /console/app-config.json` returns defaults when no config passed.
417
+ - With `basePath: "/admin-ui"` everything moves.
418
+ - Passing a `distDir` override works (use a tmpdir with stub files).
419
+ - 3.4 `bun run admin-spa:test` passes.
420
+
421
+ ### Phase 4 — App-config gate, store creation, auth gate (UI plumbing)
422
+ Ordering is critical: app-config drives the auth client config, which the Redux store depends on. So app-config must be loaded **before** the Redux Provider is mounted.
423
+
424
+ Tasks:
425
+ - 4.1 `components/AppConfigGate.tsx` — top-level component (above `<Provider>`). Fetches `${basePath}/app-config.json` using `window.location.pathname` to derive `basePath` (split on the first `/` after origin and take everything before the SPA-internal route). Falls back to the path the SPA is mounted at — exposes via a small helper. Provides config via React context, shows splash with `testID="admin-spa-app-config-loading"` while loading. Errors → retry button.
426
+ - 4.2 `components/StoreProvider.tsx` (NEW — replaces the "factory function inside child" pattern from the prior draft) — child of `AppConfigGate`. Reads `useAppConfig()`. **Inside the component body** builds:
427
+ - `authClient = createAuthClient({baseURL: window.location.origin, basePath: appConfig.authBasePath ?? "/api/auth"})` (using `better-auth/react`'s `createAuthClient` **directly** — not the `@terreno/rtk` factory, because the Expo plugin is native-only).
428
+ - `{betterAuthReducer, middleware, selectors} = generateBetterAuthSlice(authClient)`.
429
+ - `store = configureStore(...)` + `persistor = persistStore(store)`.
430
+ - Memoizes these once and renders `<Provider store={store}><PersistGate loading={<Spinner/>} persistor={persistor}>{children}</PersistGate></Provider>`. The PersistGate **must** have a `loading` prop so children don't render with empty state during rehydration (admin gate would otherwise flash login screen).
431
+ - 4.3 `components/AdminGate.tsx` — child of `StoreProvider`. Calls `authClient.getSession()` on mount. While loading → spinner with `testID="admin-spa-admin-gate-loading"`. Unauth + not on `/login` → `router.replace("/login")`. Auth + `user.admin !== true` and not on `/forbidden` → `router.replace("/forbidden")`. Auth + admin + on `/login` or `/forbidden` → `router.replace("/")`. Otherwise pass-through.
432
+ - 4.4 `app/login.tsx` — `useAppConfig().providers`. Email/password form via `authClient.signIn.email`. Per non-`"email"` provider, `<SocialLoginButton onPress={() => authClient.signIn.social({provider})}>`. On success → `router.replace("/")`.
433
+ - 4.5 `app/forbidden.tsx` — heading + sign-out button calling `authClient.signOut()` then `router.replace("/login")`.
434
+ - 4.6 `app/_layout.tsx` — final assembly order: `<AppConfigGate><StoreProvider><TerrenoProvider><AdminGate><Stack/></AdminGate></TerrenoProvider></StoreProvider></AppConfigGate>`. (`AppConfigGate` outside because we can't build the store without the config. `StoreProvider` includes `Provider` + `PersistGate`. `TerrenoProvider` is inside Provider so its theme hooks work. `AdminGate` is innermost so it has full access to Redux + persisted state.)
435
+
436
+ ### Phase 5 — Wire the admin screens
437
+ Drop in the existing admin-frontend components on the right routes. **All screens now pass `apiBase={appConfig.adminApiBasePath ?? "/admin"}` and `routeBase=""`** — navigation stays inside the SPA's own `/console` root.
438
+
439
+ Tasks:
440
+ - 5.1 `app/index.tsx` — `<AdminModelList api={terrenoApi} apiBase={apiBase} routeBase={routeBase} customScreens={[]} />`. Get `apiBase`/`routeBase` from `useAppConfig()`.
441
+ - 5.2 `app/[model]/_layout.tsx`, `[model]/index.tsx`, `[model]/[id].tsx`, `[model]/create.tsx` — wire `AdminModelTable` / `AdminModelForm` using `useLocalSearchParams`. Sentinel-handle `__scripts` and `version-config` like example-frontend does — those route to `<AdminScriptList>` and `<AdminVersionConfig>` instead of the generic table.
442
+ - 5.3 `app/configuration.tsx`, `app/scripts.tsx`, `app/version-config.tsx` — wrap the corresponding `@terreno/admin-frontend` screens.
443
+ - 5.4 `app/+not-found.tsx` + `app/+html.tsx` (Expo Router conventions; `+html.tsx` carries `<meta>` viewport + favicon).
444
+
445
+ ### Phase 6 — SDK glue
446
+ Most admin endpoints are injected at runtime by `admin-frontend/src/useAdminApi.ts` and `useAdminConfig.tsx` — they do NOT depend on `@rtk-query/codegen-openapi`. The codegen-filter scheme in the prior draft was theatre.
447
+
448
+ Tasks:
449
+ - 6.1 Commit a hand-written `store/sdk.ts` that re-exports `emptySplitApi as openapi` from `@terreno/rtk` and adds the tag types admin-frontend expects (`admin-models`, `admin-version-config`, `admin-scripts`, `profile`). Export a `terrenoApi` that admin-frontend components are passed.
450
+ - 6.2 Optional `openapi-config.ts` for consumers who want generated types for their **own** non-admin endpoints (useful if admin-spa is ever extended with custom screens). Default is to ship without running codegen.
451
+ - 6.3 Document the optional codegen workflow in README; do not bake it into `prepublishOnly`.
452
+
453
+ ### Phase 7 — Example backend integration
454
+ Make `example-backend` demo the new flow.
455
+
456
+ Tasks:
457
+ - 7.1 Add dep to `example-backend/package.json`.
458
+ - 7.2 Register `AdminSpaServeApp` in `example-backend/src/server.ts`, gated on `ADMIN_SPA_ENABLED=true`.
459
+ - 7.3 Manual smoke test:
460
+ - Start backend with `ADMIN_SPA_ENABLED=true AUTH_PROVIDER=better-auth`.
461
+ - Visit `http://localhost:4000/console/` → login screen.
462
+ - Sign in with admin user → admin list shown.
463
+ - Click "Users" → users table loads from `/admin/users`.
464
+ - Click a user → form loads, edit, save, see toast.
465
+ - Verify `app-config.json` is served and bundle is cached.
466
+
467
+ ### Phase 8 — Docs, rules, CI
468
+ Update repo-level docs and the publish pipeline.
469
+
470
+ Tasks:
471
+ - 8.1 `admin-spa/README.md`.
472
+ - 8.2 Author `.claude/rules/admin-spa/00-admin-spa.md`. Run `bun run rules` to regenerate rulesync artifacts. Verify `bun run rules:check` passes in the same PR.
473
+ - 8.3 Add `admin-spa:*` to `CLAUDE.local.md`.
474
+ - 8.4 "Standalone admin SPA" subsection in `admin-backend/README.md` pointing at admin-spa.
475
+ - 8.5 **Add an `admin-spa` publish job to `.github/workflows/publish-on-tag.yml`** mirroring the existing 8 publish jobs but running `bun run --filter '@terreno/admin-spa' build:web` (and `compile`) before `bun publish` so the `dist/` directory is populated in the tarball. Without this, tagged releases will publish an empty `dist/`.
476
+ - 8.6 Add a CI smoke job (separate workflow or extension of existing E2E): boot `example-backend` with `ADMIN_SPA_ENABLED=true AUTH_PROVIDER=better-auth` and `bun run --filter '@terreno/admin-spa' build:web`; curl `/console/`, `/console/app-config.json`, and one `/console/_expo/static/js/web/*.js` asset; assert 200s with correct cache headers. Catches the path-rewrite logic in CI.
477
+
478
+ ### Phase 9 — E2E (optional, only if Phase 7 looks shaky)
479
+ Playwright test that exercises the full flow against example-backend. Spec: `e2e/admin-spa.spec.ts`. testIDs to add: `admin-spa-login-email`, `admin-spa-login-submit`, `admin-spa-model-list-screen`, `admin-spa-users-row-{id}`. Defer if Phase 7 manual smoke is sufficient.
480
+
481
+ ## Files needing testIDs (added during Phase 4/5)
482
+
483
+ | Component | testID |
484
+ |---|---|
485
+ | `AppConfigGate` loading screen | `admin-spa-app-config-loading` |
486
+ | `AdminGate` loading screen | `admin-spa-admin-gate-loading` |
487
+ | `login.tsx` email input | `admin-spa-login-email` |
488
+ | `login.tsx` password input | `admin-spa-login-password` |
489
+ | `login.tsx` submit button | `admin-spa-login-submit` |
490
+ | `login.tsx` per-provider button | `admin-spa-login-{provider}` |
491
+ | `forbidden.tsx` root | `admin-spa-forbidden-screen` |
492
+ | `forbidden.tsx` sign-out button | `admin-spa-forbidden-signout` |
493
+ | `app/index.tsx` root | `admin-spa-model-list-screen` |
494
+
495
+ Existing `@terreno/admin-frontend` components already expose their own testIDs (verified in `admin-frontend/src/AdminModelList.test.tsx`).
496
+
497
+ ## Risks
498
+
499
+ | Risk | Mitigation |
500
+ |---|---|
501
+ | **`baseUrl` overload in admin-frontend** — `AdminModelList.tsx:129`, `AdminModelTable.tsx:126,222,314` use `baseUrl` BOTH as API path AND as navigation path. SPA-at-`/console` + API-at-`/admin` breaks navigation. | Phase 0 splits the prop into `apiBase` + `routeBase` with `baseUrl` as a deprecated alias defaulting both. Embedded consumers unchanged. |
502
+ | **`createBetterAuthClient` has no `basePath` param** — only takes `baseURL`/`scheme`/`storagePrefix`. Prior draft of Task 4.2 wouldn't compile. | Admin-spa is web-only, so we call `createAuthClient` from `better-auth/react` **directly** (no expo plugin) and pass `basePath` as a top-level option. |
503
+ | **Expo `experiments.baseUrl` would make the bundle path-specific** — baking `/console` into the build means the configurable `basePath` is fiction. | Don't pass `experiments.baseUrl`. The `AdminSpaServeApp` rewrites the absolute `/_expo/` and `/assets/` URLs in `index.html` once at boot to match the configured `basePath`. One pre-built tarball works at any path. Phase 1.6 verifies the rewrite list covers all generated references. |
504
+ | **Expo Router web export breaks under monorepo** (Metro resolution of workspace deps) | Copy `example-frontend/metro.config.js` and its `extraNodeModules`, `nodeModulesPaths`, `unstable_enableSymlinks` settings. Phase 1.2 explicitly clones the file. |
505
+ | **Express 5 wildcard syntax** — Express 5 ships path-to-regexp v8; bare `*` is gone. | Use `${basePath}/*splat` (named splat, no braces) to match `api/src/betterAuthSetup.ts:215`. Register a separate `app.get(basePath, ...)` for the no-trailing-slash case to avoid a redirect. AC3 tests both `GET /console` and `GET /console/`. |
506
+ | **`!isDev` gate in `rtk/src/constants.ts:75`** silently kills the sentinel in dev mode. | Move the sentinel check to the top of `resolveBaseUrls`, before any branching. Test for `isDev=true + sentinel + window` returning origin. |
507
+ | **PersistGate hydration races AdminGate** — store starts empty → AdminGate runs → flashes login screen → rehydration completes. | `PersistGate` gets a `loading={<Spinner/>}` prop so children don't render until rehydration is done. Phase 4.2 codifies this. |
508
+ | **`app-config.json` fetched relative breaks on deep refresh** — from `/console/users/abc`, `./app-config.json` becomes `/console/users/app-config.json` → falls through to SPA fallback → returns HTML → JSON.parse error. | Use an absolute `${basePath}/app-config.json` URL, derived by `AppConfigGate` from `window.location.pathname` at the SPA root. |
509
+ | **`createBetterAuthClient` Expo plugin** stores tokens in SecureStore on native; web variant uses AsyncStorage; both go through the RN-targeted factory. The admin-spa is web-only and using the factory drags `expo-secure-store` into the bundle for no reason. | Call `createAuthClient` from `better-auth/react` directly in admin-spa; rely on better-auth's built-in browser session cookies (no client-side token storage needed). |
510
+ | **Auth cookie SameSite / Secure flags** — production HTTPS only. | Same-origin → `SameSite=Lax` default works for both http://localhost and HTTPS. Document. |
511
+ | **Cookie `Path=/` from better-auth** — verify the session cookie set at `/api/auth/login` is sent to `/admin/*` and `/console/*` requests on the same origin. Default is `Path=/`; assumed correct but not verified against `betterAuthSetup.ts:73-89`. | Phase 7.3 manual smoke verifies; add a `supertest` regression in `betterAuthSetup.test.ts` if it bites. |
512
+ | **Stale `index.html` at the edge** after a redeploy | Plugin returns `Cache-Control: no-store` on HTML and `app-config.json`. CDN/proxy may still cache — document. |
513
+ | **Bundle size** — admin-frontend pulls in jspdf, signature-canvas, markdown editor. Plan's "1–3 MB gzip" estimate is unverified. | Measure in Phase 1.6. If > 5 MB gzip, code-split deferred imports (`AdminScriptRunModal`, `ConsentFormEditor`, etc.) via React.lazy or Expo Router's per-route splitting. |
514
+ | **`Constants.expoConfig?.extra?.BASE_URL` propagation in static export** — assumed yes, not verified. | Phase 1.6 adds: `bun run admin-spa:build` then `grep -r '__SAME_ORIGIN__' admin-spa/dist/` — must find the sentinel string in at least one bundle JS file. If not, switch to a different injection mechanism (e.g. `<script>window.__ADMIN_BASE__ = "${origin}"</script>` injected by the plugin). |
515
+ | **CI publish job missing for admin-spa** | Phase 8.5 adds it to `.github/workflows/publish-on-tag.yml`. |
516
+ | **No dev iteration story** — re-exporting on every change is 30–60s. | Phase 4 + serve plugin support a `devProxyTarget` option. Dev workflow: run `bun run admin-spa:dev` (= `bun expo start --web --port 8083`) + `ADMIN_SPA_DEV_PROXY=http://localhost:8083 bun run backend:dev`. |
517
+ | **`@rtk-query/codegen-openapi` filter regex was theatre** — admin endpoints are injected at runtime by `useAdminApi.ts:47-104`, not generated. | Phase 6 drops the codegen filter; ships a hand-written `store/sdk.ts` instead. Optional codegen is documented but not part of the build. |
518
+ | **`bun pm ls | grep` heuristic for AC9** is unreliable (transitive deps from other workspace packages can pollute results). | AC9 verifies by reading the consumer's resolved lockfile / running `bun install` in a stripped-down test fixture without `admin-spa` and confirming no `react-native-web` or `expo-router` entries. |
519
+
520
+ ## Acceptance Criteria
521
+
522
+ Each criterion lists: **Setup**, **Steps**, **Expected**, and (where relevant) **testIDs** needed for automated runs.
523
+
524
+ ### AC1 — Static export builds clean (automated)
525
+ - **Setup:** Phase 1 + 4 + 5 complete. `bun install` done.
526
+ - **Steps:** Run `bun run --filter '@terreno/admin-spa' build:web` from repo root.
527
+ - **Expected:** Exit code 0. `admin-spa/dist/index.html` exists and is non-empty. `admin-spa/dist/_expo/static/js/web/` contains at least one bundled `.js` file. No `error:` lines in output. No `Cannot find module` warnings.
528
+
529
+ ### AC2 — Same-origin BASE_URL sentinel works (automated)
530
+ - **Setup:** Phase 2 complete.
531
+ - **Steps:** Run `bun run rtk:test`.
532
+ - **Expected:** Existing tests pass. New cases pass: sentinel + `https` origin → `baseUrl: "https://api.example.com"`, `baseWebsocketsUrl: "wss://api.example.com/"`; sentinel + `http` origin → `ws://...`; sentinel + no window → falls back to existing localhost resolution; non-sentinel BASE_URL → unchanged behavior.
533
+
534
+ ### AC3 — Plugin serves bundle and config (automated)
535
+ - **Setup:** Phase 3 complete.
536
+ - **Steps:** Run `bun run --filter '@terreno/admin-spa' test`.
537
+ - **Expected:** Supertest cases pass: `GET /console/` → 200 + HTML + `Cache-Control: no-store`; `GET /console/users/abc` → same HTML; `GET /console/_expo/static/js/web/foo.abc123.js` → 200 + `Cache-Control: public, max-age=31536000, immutable`; `GET /console/app-config.json` → 200 + JSON + `Cache-Control: no-store`; defaults returned when no `appConfig` passed; provided `appConfig` overrides defaults field-by-field; custom `basePath` works; `GET /unrelated` → 404.
538
+
539
+ ### AC4 — Anonymous user lands on login (manual + E2E)
540
+ - **Setup:** Backend running with `ADMIN_SPA_ENABLED=true AUTH_PROVIDER=better-auth`. SPA built.
541
+ - **Steps:** Open browser to `http://localhost:4000/console/` in a fresh incognito window.
542
+ - **Expected:** No flash of admin content. Login screen renders. Brand name from `app-config.json` is visible. Email + password fields present. URL navigates to `/console/login` after redirect.
543
+ - **testIDs:** `admin-spa-login-email`, `admin-spa-login-password`, `admin-spa-login-submit`.
544
+
545
+ ### AC5 — Email/password sign-in succeeds for admin (manual + E2E)
546
+ - **Setup:** Same as AC4. An admin user (`admin: true`) exists in DB.
547
+ - **Steps:** Fill email + password. Click sign in.
548
+ - **Expected:** Loading spinner during request. On success, redirects to `/console/`. Admin model list renders. `app-config.json` brand name appears in header. No console errors.
549
+ - **testIDs:** `admin-spa-model-list-screen` after login.
550
+
551
+ ### AC6 — Non-admin user is forbidden (manual + E2E)
552
+ - **Setup:** A user with `admin: false` exists.
553
+ - **Steps:** Sign in as that user.
554
+ - **Expected:** No admin model list shown. URL becomes `/console/forbidden`. "Admins only" message + sign-out button visible.
555
+ - **testIDs:** `admin-spa-forbidden-screen`, `admin-spa-forbidden-signout`.
556
+
557
+ ### AC7 — CRUD round-trip on a model (manual)
558
+ - **Setup:** Logged in as admin. At least one User exists.
559
+ - **Steps:** From the model list, click "Users". Click a row. Edit the `name` field. Click save.
560
+ - **Expected:** Form opens with current values. Saving shows success toast. Navigating back to the table reflects the new value. Page reload preserves the change (server-confirmed).
561
+
562
+ ### AC8 — Embedded admin still works (manual regression)
563
+ - **Setup:** `example-frontend` running locally (`bun run frontend:web`) against the example-backend.
564
+ - **Steps:** Log in as admin in the main app. Navigate to the existing `/admin` route inside the main Expo app.
565
+ - **Expected:** No regression — the embedded admin screens render identically to before this branch. (Spot-check the model list, a model table, and a form.)
566
+
567
+ ### AC9 — Backend image stays small when admin-spa is not installed (manual / inspection)
568
+ - **Setup:** A fresh consumer project that depends on `@terreno/api` but not `@terreno/admin-spa`.
569
+ - **Steps:** `bun install`. Inspect `node_modules` for `react`, `react-dom`, `react-native-web`, `expo`, `expo-router`.
570
+ - **Expected:** None of those packages appear in the consumer's resolved deps. (Verified by `bun pm ls 2>&1 | grep -E 'react-native-web|expo-router'` returning empty.)
571
+
572
+ ### AC10 — Default app-config returned when none provided (automated)
573
+ - **Setup:** Plugin registered with no `appConfig` argument.
574
+ - **Steps:** `GET /console/app-config.json`.
575
+ - **Expected:** Returns `{brandName: "Terreno Admin", primaryColor: "#2563EB", providers: ["email"]}` (plus optional fields undefined).
576
+
577
+ ### AC11 — Provider list drives login UI (manual + E2E)
578
+ - **Setup:** Plugin registered with `appConfig: {providers: ["email", "google"]}`.
579
+ - **Steps:** Open login screen.
580
+ - **Expected:** Email/password form + a Google `<SocialLoginButton>`. No GitHub or Apple buttons. With `providers: ["email", "google", "github", "apple"]`, all three social buttons render.
581
+ - **testIDs:** `admin-spa-login-google`, `admin-spa-login-github`, `admin-spa-login-apple`.
582
+
583
+ ### AC12 — Sign-out clears session and returns to login (manual)
584
+ - **Setup:** Logged in as admin, on model list screen.
585
+ - **Steps:** Trigger sign-out (from the header menu or `/console/forbidden` if testing non-admin).
586
+ - **Expected:** Session cookie cleared. Redirects to `/console/login`. Hitting `/console/` directly afterwards re-routes to login. (Verified by clearing devtools `Application > Cookies` shows the better-auth session cookie removed.)
587
+
588
+ ## Review Log (2026-05-11 / 2026-05-12)
589
+
590
+ Adversarial review (Opus, fallback after codex CLI hit 401) found 5 verified CRITICAL issues against an earlier draft. All have been folded back into the plan above:
591
+
592
+ 1. **`baseUrl` is overloaded as nav + API in admin-frontend.** Verified at `AdminModelList.tsx:129`, `AdminModelTable.tsx:126,222,314`. → Added **Phase 0**: split `baseUrl` into `apiBase` + `routeBase`, with backward-compat alias.
593
+ 2. **`createBetterAuthClient` has no `basePath` prop.** Verified at `rtk/src/betterAuthClient.ts:91-105` + `betterAuthTypes.ts`. → Plan now uses `createAuthClient` from `better-auth/react` **directly** in admin-spa (web-only, no expo plugin).
594
+ 3. **Express 5 wildcard syntax was invented** (`{/*splat}`). Repo convention is `/*name` per `betterAuthSetup.ts:215`. → Updated `AdminSpaServeApp` to use `${basePath}/*splat` + a separate `app.get(basePath, ...)` for the no-slash case.
595
+ 4. **Expo Router emits absolute `/_expo/...` paths** in `dist/index.html` — without `experiments.baseUrl` they 404 when mounted at `/console`; WITH `experiments.baseUrl` the bundle becomes path-specific (contradicting "one tarball, any path"). → Don't pass `experiments.baseUrl`; have the plugin rewrite `/_expo/` and `/assets/` in `index.html` at boot.
596
+ 5. **`rtk/src/constants.ts:75` gates `baseFromExtra` behind `!isDev`** — sentinel would be silently dead in dev. → Sentinel check moves to the **top** of `resolveBaseUrls`, before all branching.
597
+
598
+ Also folded in HIGH/MEDIUM findings:
599
+ - Codegen `filterEndpoints` regex was theatre (admin endpoints are injected at runtime). Phase 6 now ships a hand-written sdk.ts.
600
+ - PersistGate needs an explicit `loading` prop or AdminGate flashes login screen. Phase 4.2 codifies this.
601
+ - `app-config.json` fetched with a relative URL breaks on deep refresh. Use absolute `${basePath}/app-config.json`.
602
+ - Provider order: AppConfigGate must be **outside** Provider (the store is built using config). Phase 4 reorders.
603
+ - Missing CI publish job → Phase 8.5.
604
+ - Missing dev iteration story → `devProxyTarget` option + `admin-spa:dev` script.
605
+ - Missing deps in package.json (`better-auth`, `@react-native-async-storage/async-storage`, `http-proxy-middleware`) — Task 1.1 enumerated.
606
+ - `metro.config.js` workspace setup must be cloned from `example-frontend`, not handwaved — Task 1.2 explicit.
607
+
608
+ ## Out of Scope (Future Work)
609
+
610
+ - Path consolidation: SPA at `/admin`, API moved to `/admin/_api/*`. One-time breaking change.
611
+ - Embeddable Expo Router subtree (`@terreno/admin-spa/routes`) for consumers wanting to drop admin into their main app without 7 wrapper files.
612
+ - Multi-bundle per-tenant theming (`/console/{tenantSlug}` with tenant-aware app-config).
613
+ - Brotli/gzip precompression of static assets.
614
+ - Service worker for offline / PWA support.
615
+ - JWT/Passport fallback in standalone SPA.
616
+ - Custom field renderer plugin system.