@terreno/mcp 0.23.0 → 0.24.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/docs/versioned/0.23.0/README.md +29 -0
- package/dist/docs/versioned/0.23.0/explanation/README.md +13 -0
- package/dist/docs/versioned/0.23.0/explanation/ai-workflows.md +270 -0
- package/dist/docs/versioned/0.23.0/explanation/authentication.md +438 -0
- package/dist/docs/versioned/0.23.0/explanation/configuration-system.md +428 -0
- package/dist/docs/versioned/0.23.0/explanation/dependency-management.md +192 -0
- package/dist/docs/versioned/0.23.0/explanation/gcp-hosting-architecture.md +319 -0
- package/dist/docs/versioned/0.23.0/explanation/model-router-actions.md +156 -0
- package/dist/docs/versioned/0.23.0/explanation/modular-api-design.md +228 -0
- package/dist/docs/versioned/0.23.0/how-to/README.md +20 -0
- package/dist/docs/versioned/0.23.0/how-to/add-feature-flags.md +115 -0
- package/dist/docs/versioned/0.23.0/how-to/add-github-oauth.md +316 -0
- package/dist/docs/versioned/0.23.0/how-to/configure-better-auth.md +296 -0
- package/dist/docs/versioned/0.23.0/how-to/create-a-model.md +165 -0
- package/dist/docs/versioned/0.23.0/how-to/deploy-to-gcp.md +244 -0
- package/dist/docs/versioned/0.23.0/how-to/upgrade-banner.md +172 -0
- package/dist/docs/versioned/0.23.0/how-to/websocket-integration.md +416 -0
- package/dist/docs/versioned/0.23.0/implementationPlans/IP_TEMPLATE.md +47 -0
- package/dist/docs/versioned/0.23.0/implementationPlans/ModularAPI.md +844 -0
- package/dist/docs/versioned/0.23.0/implementationPlans/PLAN_INDEX.md +21 -0
- package/dist/docs/versioned/0.23.0/implementationPlans/README.md +42 -0
- package/dist/docs/versioned/0.23.0/implementationPlans/admin-improvements.md +577 -0
- package/dist/docs/versioned/0.23.0/implementationPlans/admin-only-research.md +258 -0
- package/dist/docs/versioned/0.23.0/implementationPlans/admin-only.md +616 -0
- package/dist/docs/versioned/0.23.0/implementationPlans/admin-script-runner.md +107 -0
- package/dist/docs/versioned/0.23.0/implementationPlans/admin-ui-v2-django-parity.md +204 -0
- package/dist/docs/versioned/0.23.0/implementationPlans/consent-forms.md +417 -0
- package/dist/docs/versioned/0.23.0/implementationPlans/design-blend-skill.md +188 -0
- package/dist/docs/versioned/0.23.0/implementationPlans/docs-site-and-versioning.md +138 -0
- package/dist/docs/versioned/0.23.0/implementationPlans/feature-flags-openfeature.md +545 -0
- package/dist/docs/versioned/0.23.0/implementationPlans/feature-flags.md +310 -0
- package/dist/docs/versioned/0.23.0/implementationPlans/mcp-boost-parity.md +246 -0
- package/dist/docs/versioned/0.23.0/implementationPlans/model-router-actions.md +639 -0
- package/dist/docs/versioned/0.23.0/implementationPlans/model-router-mcp.md +186 -0
- package/dist/docs/versioned/0.23.0/implementationPlans/offline-mode.md +311 -0
- package/dist/docs/versioned/0.23.0/implementationPlans/syncdb-local-first.md +591 -0
- package/dist/docs/versioned/0.23.0/implementationPlans/terreno-langfuse-integration.md +145 -0
- package/dist/docs/versioned/0.23.0/implementationPlans/upgrade-banner.md +275 -0
- package/dist/docs/versioned/0.23.0/reference/README.md +22 -0
- package/dist/docs/versioned/0.23.0/reference/admin-backend.md +122 -0
- package/dist/docs/versioned/0.23.0/reference/admin-frontend.md +205 -0
- package/dist/docs/versioned/0.23.0/reference/api-health.md +81 -0
- package/dist/docs/versioned/0.23.0/reference/api.md +1205 -0
- package/dist/docs/versioned/0.23.0/reference/components/README.mdx +65 -0
- package/dist/docs/versioned/0.23.0/reference/components/accordion.mdx +37 -0
- package/dist/docs/versioned/0.23.0/reference/components/addressfield.mdx +26 -0
- package/dist/docs/versioned/0.23.0/reference/components/ai-suggestion-box.mdx +26 -0
- package/dist/docs/versioned/0.23.0/reference/components/avatar.mdx +35 -0
- package/dist/docs/versioned/0.23.0/reference/components/badge.mdx +38 -0
- package/dist/docs/versioned/0.23.0/reference/components/banner.mdx +26 -0
- package/dist/docs/versioned/0.23.0/reference/components/boolean-field.mdx +36 -0
- package/dist/docs/versioned/0.23.0/reference/components/box.mdx +26 -0
- package/dist/docs/versioned/0.23.0/reference/components/button.mdx +44 -0
- package/dist/docs/versioned/0.23.0/reference/components/card.mdx +26 -0
- package/dist/docs/versioned/0.23.0/reference/components/checkbox.mdx +30 -0
- package/dist/docs/versioned/0.23.0/reference/components/consentformscreen.mdx +26 -0
- package/dist/docs/versioned/0.23.0/reference/components/custom-select-field.mdx +36 -0
- package/dist/docs/versioned/0.23.0/reference/components/datatable.mdx +44 -0
- package/dist/docs/versioned/0.23.0/reference/components/date-time-field.mdx +49 -0
- package/dist/docs/versioned/0.23.0/reference/components/email-field.mdx +43 -0
- package/dist/docs/versioned/0.23.0/reference/components/emoji-selector.mdx +26 -0
- package/dist/docs/versioned/0.23.0/reference/components/field.mdx +26 -0
- package/dist/docs/versioned/0.23.0/reference/components/height-field.mdx +45 -0
- package/dist/docs/versioned/0.23.0/reference/components/icon.mdx +31 -0
- package/dist/docs/versioned/0.23.0/reference/components/iconbutton.mdx +42 -0
- package/dist/docs/versioned/0.23.0/reference/components/inner-modal-content.mdx +41 -0
- package/dist/docs/versioned/0.23.0/reference/components/markdown-editor-field.mdx +50 -0
- package/dist/docs/versioned/0.23.0/reference/components/markdownview.mdx +37 -0
- package/dist/docs/versioned/0.23.0/reference/components/multiselect-field.mdx +36 -0
- package/dist/docs/versioned/0.23.0/reference/components/number-field.mdx +46 -0
- package/dist/docs/versioned/0.23.0/reference/components/page.mdx +46 -0
- package/dist/docs/versioned/0.23.0/reference/components/pagination.mdx +30 -0
- package/dist/docs/versioned/0.23.0/reference/components/password-field.mdx +26 -0
- package/dist/docs/versioned/0.23.0/reference/components/phone-number-field.mdx +44 -0
- package/dist/docs/versioned/0.23.0/reference/components/radio-field.mdx +31 -0
- package/dist/docs/versioned/0.23.0/reference/components/sectiondivider.mdx +26 -0
- package/dist/docs/versioned/0.23.0/reference/components/segmented-control.mdx +34 -0
- package/dist/docs/versioned/0.23.0/reference/components/select-field.mdx +26 -0
- package/dist/docs/versioned/0.23.0/reference/components/selectbadge.mdx +35 -0
- package/dist/docs/versioned/0.23.0/reference/components/side-drawer.mdx +34 -0
- package/dist/docs/versioned/0.23.0/reference/components/sidebar-navigation-non-expo.mdx +35 -0
- package/dist/docs/versioned/0.23.0/reference/components/signature-field.mdx +35 -0
- package/dist/docs/versioned/0.23.0/reference/components/slider.mdx +43 -0
- package/dist/docs/versioned/0.23.0/reference/components/spinner.mdx +29 -0
- package/dist/docs/versioned/0.23.0/reference/components/table-badge.mdx +32 -0
- package/dist/docs/versioned/0.23.0/reference/components/table-boolean.mdx +29 -0
- package/dist/docs/versioned/0.23.0/reference/components/table-date.mdx +30 -0
- package/dist/docs/versioned/0.23.0/reference/components/table-icon-button.mdx +28 -0
- package/dist/docs/versioned/0.23.0/reference/components/table-number.mdx +30 -0
- package/dist/docs/versioned/0.23.0/reference/components/table-text.mdx +30 -0
- package/dist/docs/versioned/0.23.0/reference/components/table-title.mdx +28 -0
- package/dist/docs/versioned/0.23.0/reference/components/table.mdx +38 -0
- package/dist/docs/versioned/0.23.0/reference/components/tap-to-edit.mdx +26 -0
- package/dist/docs/versioned/0.23.0/reference/components/text-area.mdx +50 -0
- package/dist/docs/versioned/0.23.0/reference/components/text-field.mdx +52 -0
- package/dist/docs/versioned/0.23.0/reference/components/theme.mdx +26 -0
- package/dist/docs/versioned/0.23.0/reference/components/toast.mdx +26 -0
- package/dist/docs/versioned/0.23.0/reference/components/tooltip.mdx +30 -0
- package/dist/docs/versioned/0.23.0/reference/components/userinactivity.mdx +32 -0
- package/dist/docs/versioned/0.23.0/reference/environment-variables.md +382 -0
- package/dist/docs/versioned/0.23.0/reference/feature-flags.md +304 -0
- package/dist/docs/versioned/0.23.0/reference/generated/README.md +17 -0
- package/dist/docs/versioned/0.23.0/reference/generated/api/README.md +282 -0
- package/dist/docs/versioned/0.23.0/reference/generated/api/classes/APIError.md +96 -0
- package/dist/docs/versioned/0.23.0/reference/generated/api/classes/BetterAuthApp.md +84 -0
- package/dist/docs/versioned/0.23.0/reference/generated/api/classes/CachingSecretProvider.md +118 -0
- package/dist/docs/versioned/0.23.0/reference/generated/api/classes/CompositeSecretProvider.md +79 -0
- package/dist/docs/versioned/0.23.0/reference/generated/api/classes/ConfigurationApp.md +94 -0
- package/dist/docs/versioned/0.23.0/reference/generated/api/classes/ConsentApp.md +74 -0
- package/dist/docs/versioned/0.23.0/reference/generated/api/classes/DateOnly.md +123 -0
- package/dist/docs/versioned/0.23.0/reference/generated/api/classes/EnvSecretProvider.md +64 -0
- package/dist/docs/versioned/0.23.0/reference/generated/api/classes/GcpSecretProvider.md +76 -0
- package/dist/docs/versioned/0.23.0/reference/generated/api/classes/OpenApiMiddlewareBuilder.md +577 -0
- package/dist/docs/versioned/0.23.0/reference/generated/api/classes/RealtimeApp.md +112 -0
- package/dist/docs/versioned/0.23.0/reference/generated/api/classes/TaskCancelledError.md +23 -0
- package/dist/docs/versioned/0.23.0/reference/generated/api/classes/TerrenoApp.md +262 -0
- package/dist/docs/versioned/0.23.0/reference/generated/api/classes/VersionCheckPlugin.md +43 -0
- package/dist/docs/versioned/0.23.0/reference/generated/api/functions/AdminOwnerTransformer.md +47 -0
- package/dist/docs/versioned/0.23.0/reference/generated/api/functions/OwnerQueryFilter.md +11 -0
- package/dist/docs/versioned/0.23.0/reference/generated/api/functions/addAuthRoutes.md +19 -0
- package/dist/docs/versioned/0.23.0/reference/generated/api/functions/addGitHubAuthRoutes.md +31 -0
- package/dist/docs/versioned/0.23.0/reference/generated/api/functions/addMeRoutes.md +19 -0
- package/dist/docs/versioned/0.23.0/reference/generated/api/functions/addPopulateToQuery.md +15 -0
- package/dist/docs/versioned/0.23.0/reference/generated/api/functions/addQuerySubscription.md +26 -0
- package/dist/docs/versioned/0.23.0/reference/generated/api/functions/apiErrorMiddleware.md +23 -0
- package/dist/docs/versioned/0.23.0/reference/generated/api/functions/apiFallthroughErrorMiddleware.md +26 -0
- package/dist/docs/versioned/0.23.0/reference/generated/api/functions/apiUnauthorizedMiddleware.md +23 -0
- package/dist/docs/versioned/0.23.0/reference/generated/api/functions/applyRequestContextToSentry.md +11 -0
- package/dist/docs/versioned/0.23.0/reference/generated/api/functions/assertNoActionCollisions.md +21 -0
- package/dist/docs/versioned/0.23.0/reference/generated/api/functions/asyncHandler.md +15 -0
- package/dist/docs/versioned/0.23.0/reference/generated/api/functions/authenticateMiddleware.md +11 -0
- package/dist/docs/versioned/0.23.0/reference/generated/api/functions/baseUserPlugin.md +11 -0
- package/dist/docs/versioned/0.23.0/reference/generated/api/functions/buildQuerySchemaFromFields.md +30 -0
- package/dist/docs/versioned/0.23.0/reference/generated/api/functions/checkModelsStrict.md +21 -0
- package/dist/docs/versioned/0.23.0/reference/generated/api/functions/checkPermissions.md +29 -0
- package/dist/docs/versioned/0.23.0/reference/generated/api/functions/clearQueryStore.md +7 -0
- package/dist/docs/versioned/0.23.0/reference/generated/api/functions/clearRealtimeRegistry.md +7 -0
- package/dist/docs/versioned/0.23.0/reference/generated/api/functions/computeQueryId.md +18 -0
- package/dist/docs/versioned/0.23.0/reference/generated/api/functions/configurationPlugin.md +48 -0
- package/dist/docs/versioned/0.23.0/reference/generated/api/functions/configureOpenApiValidator.md +28 -0
- package/dist/docs/versioned/0.23.0/reference/generated/api/functions/createActionOpenApiMiddleware.md +35 -0
- package/dist/docs/versioned/0.23.0/reference/generated/api/functions/createBetterAuth.md +13 -0
- package/dist/docs/versioned/0.23.0/reference/generated/api/functions/createBetterAuthSessionMiddleware.md +18 -0
- package/dist/docs/versioned/0.23.0/reference/generated/api/functions/createFeatureFlaggedLogger.md +53 -0
- package/dist/docs/versioned/0.23.0/reference/generated/api/functions/createModelValidators.md +74 -0
- package/dist/docs/versioned/0.23.0/reference/generated/api/functions/createOpenApiBuilder.md +39 -0
- package/dist/docs/versioned/0.23.0/reference/generated/api/functions/createRouter.md +19 -0
- package/dist/docs/versioned/0.23.0/reference/generated/api/functions/createRouterWithAuth.md +19 -0
- package/dist/docs/versioned/0.23.0/reference/generated/api/functions/createScopedLogger.md +53 -0
- package/dist/docs/versioned/0.23.0/reference/generated/api/functions/createScriptArgs.md +33 -0
- package/dist/docs/versioned/0.23.0/reference/generated/api/functions/createValidator.md +29 -0
- package/dist/docs/versioned/0.23.0/reference/generated/api/functions/createdUpdatedPlugin.md +11 -0
- package/dist/docs/versioned/0.23.0/reference/generated/api/functions/cronjob.md +19 -0
- package/dist/docs/versioned/0.23.0/reference/generated/api/functions/defaultResponseHandler.md +32 -0
- package/dist/docs/versioned/0.23.0/reference/generated/api/functions/defineCollectionAction.md +25 -0
- package/dist/docs/versioned/0.23.0/reference/generated/api/functions/defineInstanceAction.md +29 -0
- package/dist/docs/versioned/0.23.0/reference/generated/api/functions/envConfigurationPlugin.md +11 -0
- package/dist/docs/versioned/0.23.0/reference/generated/api/functions/errorMessage.md +13 -0
- package/dist/docs/versioned/0.23.0/reference/generated/api/functions/errorStack.md +13 -0
- package/dist/docs/versioned/0.23.0/reference/generated/api/functions/errorsPlugin.md +11 -0
- package/dist/docs/versioned/0.23.0/reference/generated/api/functions/findExactlyOne.md +25 -0
- package/dist/docs/versioned/0.23.0/reference/generated/api/functions/findOneOrNone.md +24 -0
- package/dist/docs/versioned/0.23.0/reference/generated/api/functions/findOneOrNoneFor.md +37 -0
- package/dist/docs/versioned/0.23.0/reference/generated/api/functions/findRegistryEntryByCollection.md +13 -0
- package/dist/docs/versioned/0.23.0/reference/generated/api/functions/findRegistryEntryByRoutePath.md +13 -0
- package/dist/docs/versioned/0.23.0/reference/generated/api/functions/firebaseJWTPlugin.md +11 -0
- package/dist/docs/versioned/0.23.0/reference/generated/api/functions/fixMixedFields.md +21 -0
- package/dist/docs/versioned/0.23.0/reference/generated/api/functions/flattenToDotPaths.md +24 -0
- package/dist/docs/versioned/0.23.0/reference/generated/api/functions/formatLogContextSuffix.md +17 -0
- package/dist/docs/versioned/0.23.0/reference/generated/api/functions/generateTokens.md +35 -0
- package/dist/docs/versioned/0.23.0/reference/generated/api/functions/getAPIErrorBody.md +11 -0
- package/dist/docs/versioned/0.23.0/reference/generated/api/functions/getBetterAuthSession.md +13 -0
- package/dist/docs/versioned/0.23.0/reference/generated/api/functions/getCurrentLogContext.md +9 -0
- package/dist/docs/versioned/0.23.0/reference/generated/api/functions/getCurrentRequestContext.md +8 -0
- package/dist/docs/versioned/0.23.0/reference/generated/api/functions/getCurrentRequestContextAttributes.md +15 -0
- package/dist/docs/versioned/0.23.0/reference/generated/api/functions/getDisableExternalErrorTracking.md +15 -0
- package/dist/docs/versioned/0.23.0/reference/generated/api/functions/getMongoClientFromMongoose.md +7 -0
- package/dist/docs/versioned/0.23.0/reference/generated/api/functions/getOpenApiSpecForModel.md +29 -0
- package/dist/docs/versioned/0.23.0/reference/generated/api/functions/getOpenApiValidatorConfig.md +7 -0
- package/dist/docs/versioned/0.23.0/reference/generated/api/functions/getQuerySubscriptionsForCollection.md +14 -0
- package/dist/docs/versioned/0.23.0/reference/generated/api/functions/getRealtimeRegistry.md +7 -0
- package/dist/docs/versioned/0.23.0/reference/generated/api/functions/getRequestContextFromAttributes.md +11 -0
- package/dist/docs/versioned/0.23.0/reference/generated/api/functions/getSchemaFromModel.md +25 -0
- package/dist/docs/versioned/0.23.0/reference/generated/api/functions/getSessionIdFromJwtPayload.md +11 -0
- package/dist/docs/versioned/0.23.0/reference/generated/api/functions/githubUserPlugin.md +22 -0
- package/dist/docs/versioned/0.23.0/reference/generated/api/functions/hasBetterAuthSession.md +13 -0
- package/dist/docs/versioned/0.23.0/reference/generated/api/functions/installRealtimeSocketHandlers.md +27 -0
- package/dist/docs/versioned/0.23.0/reference/generated/api/functions/isAPIError.md +11 -0
- package/dist/docs/versioned/0.23.0/reference/generated/api/functions/isDeletedPlugin.md +15 -0
- package/dist/docs/versioned/0.23.0/reference/generated/api/functions/isDisabledPlugin.md +15 -0
- package/dist/docs/versioned/0.23.0/reference/generated/api/functions/isOpenApiValidatorConfigured.md +8 -0
- package/dist/docs/versioned/0.23.0/reference/generated/api/functions/isValidObjectId.md +11 -0
- package/dist/docs/versioned/0.23.0/reference/generated/api/functions/jsonResponseRequestIdMiddleware.md +24 -0
- package/dist/docs/versioned/0.23.0/reference/generated/api/functions/logRequests.md +19 -0
- package/dist/docs/versioned/0.23.0/reference/generated/api/functions/matchesQuery.md +23 -0
- package/dist/docs/versioned/0.23.0/reference/generated/api/functions/modelRouter.md +83 -0
- package/dist/docs/versioned/0.23.0/reference/generated/api/functions/mongooseErrorToAPIError.md +13 -0
- package/dist/docs/versioned/0.23.0/reference/generated/api/functions/mountBetterAuthRoutes.md +21 -0
- package/dist/docs/versioned/0.23.0/reference/generated/api/functions/openApiCompatMiddleware.md +22 -0
- package/dist/docs/versioned/0.23.0/reference/generated/api/functions/openApiEtagMiddleware.md +23 -0
- package/dist/docs/versioned/0.23.0/reference/generated/api/functions/parseScriptArgs.md +35 -0
- package/dist/docs/versioned/0.23.0/reference/generated/api/functions/patchAppUse.md +17 -0
- package/dist/docs/versioned/0.23.0/reference/generated/api/functions/permissionMiddleware.md +21 -0
- package/dist/docs/versioned/0.23.0/reference/generated/api/functions/registerActionRoutes.md +25 -0
- package/dist/docs/versioned/0.23.0/reference/generated/api/functions/registerRealtime.md +14 -0
- package/dist/docs/versioned/0.23.0/reference/generated/api/functions/removeAllSocketQueries.md +13 -0
- package/dist/docs/versioned/0.23.0/reference/generated/api/functions/removeQuerySubscription.md +17 -0
- package/dist/docs/versioned/0.23.0/reference/generated/api/functions/requestContextMiddleware.md +26 -0
- package/dist/docs/versioned/0.23.0/reference/generated/api/functions/resetOpenApiValidatorConfig.md +9 -0
- package/dist/docs/versioned/0.23.0/reference/generated/api/functions/runActionPermissions.md +33 -0
- package/dist/docs/versioned/0.23.0/reference/generated/api/functions/runWithRequestContext.md +38 -0
- package/dist/docs/versioned/0.23.0/reference/generated/api/functions/runWithRequestContextAttributes.md +25 -0
- package/dist/docs/versioned/0.23.0/reference/generated/api/functions/sendToGoogleChat.md +25 -0
- package/dist/docs/versioned/0.23.0/reference/generated/api/functions/sendToSlack.md +29 -0
- package/dist/docs/versioned/0.23.0/reference/generated/api/functions/sendToZoom.md +67 -0
- package/dist/docs/versioned/0.23.0/reference/generated/api/functions/sentryAppVersionMiddleware.md +26 -0
- package/dist/docs/versioned/0.23.0/reference/generated/api/functions/serialize.md +25 -0
- package/dist/docs/versioned/0.23.0/reference/generated/api/functions/setRequestContext.md +11 -0
- package/dist/docs/versioned/0.23.0/reference/generated/api/functions/setupAuth.md +15 -0
- package/dist/docs/versioned/0.23.0/reference/generated/api/functions/setupBetterAuthUserSync.md +21 -0
- package/dist/docs/versioned/0.23.0/reference/generated/api/functions/setupEnvironment.md +5 -0
- package/dist/docs/versioned/0.23.0/reference/generated/api/functions/setupGitHubAuth.md +22 -0
- package/dist/docs/versioned/0.23.0/reference/generated/api/functions/setupLogging.md +11 -0
- package/dist/docs/versioned/0.23.0/reference/generated/api/functions/signupUser.md +23 -0
- package/dist/docs/versioned/0.23.0/reference/generated/api/functions/startChangeStreamWatcher.md +21 -0
- package/dist/docs/versioned/0.23.0/reference/generated/api/functions/stopChangeStreamWatcher.md +7 -0
- package/dist/docs/versioned/0.23.0/reference/generated/api/functions/syncBetterAuthUser.md +19 -0
- package/dist/docs/versioned/0.23.0/reference/generated/api/functions/syncConsents.md +45 -0
- package/dist/docs/versioned/0.23.0/reference/generated/api/functions/timeout.md +11 -0
- package/dist/docs/versioned/0.23.0/reference/generated/api/functions/transform.md +29 -0
- package/dist/docs/versioned/0.23.0/reference/generated/api/functions/unpopulate.md +21 -0
- package/dist/docs/versioned/0.23.0/reference/generated/api/functions/updateRequestContextFromRequest.md +15 -0
- package/dist/docs/versioned/0.23.0/reference/generated/api/functions/upsertPlugin.md +23 -0
- package/dist/docs/versioned/0.23.0/reference/generated/api/functions/validateActionRequest.md +35 -0
- package/dist/docs/versioned/0.23.0/reference/generated/api/functions/validateModelRequestBody.md +30 -0
- package/dist/docs/versioned/0.23.0/reference/generated/api/functions/validateQueryParams.md +23 -0
- package/dist/docs/versioned/0.23.0/reference/generated/api/functions/validateRequestBody.md +26 -0
- package/dist/docs/versioned/0.23.0/reference/generated/api/functions/validateResponseData.md +32 -0
- package/dist/docs/versioned/0.23.0/reference/generated/api/functions/wrapActionResponse.md +19 -0
- package/dist/docs/versioned/0.23.0/reference/generated/api/functions/wrapScript.md +15 -0
- package/dist/docs/versioned/0.23.0/reference/generated/api/interfaces/APIErrorConstructor.md +93 -0
- package/dist/docs/versioned/0.23.0/reference/generated/api/interfaces/ActionContext.md +49 -0
- package/dist/docs/versioned/0.23.0/reference/generated/api/interfaces/AsyncHandlerOptions.md +32 -0
- package/dist/docs/versioned/0.23.0/reference/generated/api/interfaces/AuthOptions.md +47 -0
- package/dist/docs/versioned/0.23.0/reference/generated/api/interfaces/BackgroundTaskDocument.md +141 -0
- package/dist/docs/versioned/0.23.0/reference/generated/api/interfaces/BackgroundTaskMethods.md +55 -0
- package/dist/docs/versioned/0.23.0/reference/generated/api/interfaces/BackgroundTaskModel.md +51 -0
- package/dist/docs/versioned/0.23.0/reference/generated/api/interfaces/BackgroundTaskStatics.md +19 -0
- package/dist/docs/versioned/0.23.0/reference/generated/api/interfaces/BaseUser.md +11 -0
- package/dist/docs/versioned/0.23.0/reference/generated/api/interfaces/BetterAuthAppOptions.md +11 -0
- package/dist/docs/versioned/0.23.0/reference/generated/api/interfaces/BetterAuthConfig.md +74 -0
- package/dist/docs/versioned/0.23.0/reference/generated/api/interfaces/BetterAuthOAuthProvider.md +13 -0
- package/dist/docs/versioned/0.23.0/reference/generated/api/interfaces/BetterAuthSession.md +43 -0
- package/dist/docs/versioned/0.23.0/reference/generated/api/interfaces/BetterAuthSessionData.md +13 -0
- package/dist/docs/versioned/0.23.0/reference/generated/api/interfaces/BetterAuthUser.md +43 -0
- package/dist/docs/versioned/0.23.0/reference/generated/api/interfaces/CachingSecretProviderOptions.md +9 -0
- package/dist/docs/versioned/0.23.0/reference/generated/api/interfaces/ChangeStreamConfig.md +41 -0
- package/dist/docs/versioned/0.23.0/reference/generated/api/interfaces/CollectionActionConfig.md +123 -0
- package/dist/docs/versioned/0.23.0/reference/generated/api/interfaces/ConfigRegistration.md +23 -0
- package/dist/docs/versioned/0.23.0/reference/generated/api/interfaces/ConfigurationAppOptions.md +51 -0
- package/dist/docs/versioned/0.23.0/reference/generated/api/interfaces/ConfigurationMetaResponse.md +7 -0
- package/dist/docs/versioned/0.23.0/reference/generated/api/interfaces/ConfigurationModel.md +166 -0
- package/dist/docs/versioned/0.23.0/reference/generated/api/interfaces/ConfigurationPermissions.md +45 -0
- package/dist/docs/versioned/0.23.0/reference/generated/api/interfaces/ConfigurationPluginOptions.md +30 -0
- package/dist/docs/versioned/0.23.0/reference/generated/api/interfaces/ConfigurationStatics.md +107 -0
- package/dist/docs/versioned/0.23.0/reference/generated/api/interfaces/ConsentAppOptions.md +85 -0
- package/dist/docs/versioned/0.23.0/reference/generated/api/interfaces/ConsentFormCheckbox.md +17 -0
- package/dist/docs/versioned/0.23.0/reference/generated/api/interfaces/ConsentFormDefinition.md +83 -0
- package/dist/docs/versioned/0.23.0/reference/generated/api/interfaces/ConsentFormDocument.md +123 -0
- package/dist/docs/versioned/0.23.0/reference/generated/api/interfaces/ConsentFormModel.md +79 -0
- package/dist/docs/versioned/0.23.0/reference/generated/api/interfaces/ConsentFormStatics.md +55 -0
- package/dist/docs/versioned/0.23.0/reference/generated/api/interfaces/ConsentResponseDocument.md +105 -0
- package/dist/docs/versioned/0.23.0/reference/generated/api/interfaces/ConsentResponseMethods.md +1 -0
- package/dist/docs/versioned/0.23.0/reference/generated/api/interfaces/ConsentResponseModel.md +79 -0
- package/dist/docs/versioned/0.23.0/reference/generated/api/interfaces/ConsentResponseStatics.md +55 -0
- package/dist/docs/versioned/0.23.0/reference/generated/api/interfaces/CreateBetterAuthOptions.md +17 -0
- package/dist/docs/versioned/0.23.0/reference/generated/api/interfaces/CreateFeatureFlaggedLoggerOptions.md +29 -0
- package/dist/docs/versioned/0.23.0/reference/generated/api/interfaces/CreateScopedLoggerOptions.md +18 -0
- package/dist/docs/versioned/0.23.0/reference/generated/api/interfaces/CreateValidatorOptions.md +25 -0
- package/dist/docs/versioned/0.23.0/reference/generated/api/interfaces/CreatedDeleted.md +27 -0
- package/dist/docs/versioned/0.23.0/reference/generated/api/interfaces/DocumentSubscription.md +17 -0
- package/dist/docs/versioned/0.23.0/reference/generated/api/interfaces/FindExactlyOnePlugin.md +30 -0
- package/dist/docs/versioned/0.23.0/reference/generated/api/interfaces/FindOneOrNonePlugin.md +30 -0
- package/dist/docs/versioned/0.23.0/reference/generated/api/interfaces/GcpSecretProviderOptions.md +9 -0
- package/dist/docs/versioned/0.23.0/reference/generated/api/interfaces/GenerateTokensOptions.md +5 -0
- package/dist/docs/versioned/0.23.0/reference/generated/api/interfaces/GitHubAuthOptions.md +74 -0
- package/dist/docs/versioned/0.23.0/reference/generated/api/interfaces/GitHubUserFields.md +33 -0
- package/dist/docs/versioned/0.23.0/reference/generated/api/interfaces/HasUpsert.md +27 -0
- package/dist/docs/versioned/0.23.0/reference/generated/api/interfaces/InstanceActionConfig.md +127 -0
- package/dist/docs/versioned/0.23.0/reference/generated/api/interfaces/IsDeleted.md +7 -0
- package/dist/docs/versioned/0.23.0/reference/generated/api/interfaces/JSONArray.md +7 -0
- package/dist/docs/versioned/0.23.0/reference/generated/api/interfaces/JSONObject.md +3 -0
- package/dist/docs/versioned/0.23.0/reference/generated/api/interfaces/JwtSessionPayload.md +19 -0
- package/dist/docs/versioned/0.23.0/reference/generated/api/interfaces/LogContextFields.md +41 -0
- package/dist/docs/versioned/0.23.0/reference/generated/api/interfaces/LoggingOptions.md +73 -0
- package/dist/docs/versioned/0.23.0/reference/generated/api/interfaces/ModelRouterOptions.md +524 -0
- package/dist/docs/versioned/0.23.0/reference/generated/api/interfaces/ModelRouterRegistration.md +33 -0
- package/dist/docs/versioned/0.23.0/reference/generated/api/interfaces/ModelRouterValidationOptions.md +89 -0
- package/dist/docs/versioned/0.23.0/reference/generated/api/interfaces/MongoClientLike.md +11 -0
- package/dist/docs/versioned/0.23.0/reference/generated/api/interfaces/OpenApiBuildResult.md +34 -0
- package/dist/docs/versioned/0.23.0/reference/generated/api/interfaces/OpenApiMiddleware.md +98 -0
- package/dist/docs/versioned/0.23.0/reference/generated/api/interfaces/OpenApiParameter.md +66 -0
- package/dist/docs/versioned/0.23.0/reference/generated/api/interfaces/OpenApiResponse.md +43 -0
- package/dist/docs/versioned/0.23.0/reference/generated/api/interfaces/OpenApiSchema.md +62 -0
- package/dist/docs/versioned/0.23.0/reference/generated/api/interfaces/OpenApiSchemaProperty.md +89 -0
- package/dist/docs/versioned/0.23.0/reference/generated/api/interfaces/OpenApiValidatorConfig.md +94 -0
- package/dist/docs/versioned/0.23.0/reference/generated/api/interfaces/PopulatePath.md +17 -0
- package/dist/docs/versioned/0.23.0/reference/generated/api/interfaces/QuerySubscription.md +25 -0
- package/dist/docs/versioned/0.23.0/reference/generated/api/interfaces/QueryValidatorOptions.md +31 -0
- package/dist/docs/versioned/0.23.0/reference/generated/api/interfaces/RESTPermissions.md +35 -0
- package/dist/docs/versioned/0.23.0/reference/generated/api/interfaces/RealtimeAppOptions.md +62 -0
- package/dist/docs/versioned/0.23.0/reference/generated/api/interfaces/RealtimeConfig.md +44 -0
- package/dist/docs/versioned/0.23.0/reference/generated/api/interfaces/RealtimeEvent.md +57 -0
- package/dist/docs/versioned/0.23.0/reference/generated/api/interfaces/RealtimeRegistryEntry.md +41 -0
- package/dist/docs/versioned/0.23.0/reference/generated/api/interfaces/RealtimeSocketLike.md +94 -0
- package/dist/docs/versioned/0.23.0/reference/generated/api/interfaces/RequestBodyValidatorOptions.md +71 -0
- package/dist/docs/versioned/0.23.0/reference/generated/api/interfaces/RequestContext.md +59 -0
- package/dist/docs/versioned/0.23.0/reference/generated/api/interfaces/ScopedLogger.md +100 -0
- package/dist/docs/versioned/0.23.0/reference/generated/api/interfaces/ScriptArgDef.md +60 -0
- package/dist/docs/versioned/0.23.0/reference/generated/api/interfaces/ScriptArgs.md +121 -0
- package/dist/docs/versioned/0.23.0/reference/generated/api/interfaces/ScriptContext.md +67 -0
- package/dist/docs/versioned/0.23.0/reference/generated/api/interfaces/ScriptResult.md +11 -0
- package/dist/docs/versioned/0.23.0/reference/generated/api/interfaces/SecretFieldMeta.md +29 -0
- package/dist/docs/versioned/0.23.0/reference/generated/api/interfaces/SecretProvider.md +35 -0
- package/dist/docs/versioned/0.23.0/reference/generated/api/interfaces/SyncConsentsOptions.md +15 -0
- package/dist/docs/versioned/0.23.0/reference/generated/api/interfaces/SyncConsentsResult.md +23 -0
- package/dist/docs/versioned/0.23.0/reference/generated/api/interfaces/TerrenoAppOptions.md +112 -0
- package/dist/docs/versioned/0.23.0/reference/generated/api/interfaces/TerrenoPlugin.md +78 -0
- package/dist/docs/versioned/0.23.0/reference/generated/api/interfaces/TerrenoRequestLogEntry.md +13 -0
- package/dist/docs/versioned/0.23.0/reference/generated/api/interfaces/TerrenoTransformer.md +49 -0
- package/dist/docs/versioned/0.23.0/reference/generated/api/interfaces/User.md +26 -0
- package/dist/docs/versioned/0.23.0/reference/generated/api/interfaces/UserModel.md +113 -0
- package/dist/docs/versioned/0.23.0/reference/generated/api/interfaces/VersionCheckResponse.md +37 -0
- package/dist/docs/versioned/0.23.0/reference/generated/api/interfaces/VersionConfigDocument.md +65 -0
- package/dist/docs/versioned/0.23.0/reference/generated/api/interfaces/VersionConfigModel.md +51 -0
- package/dist/docs/versioned/0.23.0/reference/generated/api/interfaces/WrapScriptOptions.md +27 -0
- package/dist/docs/versioned/0.23.0/reference/generated/api/type-aliases/AddRoutes.md +15 -0
- package/dist/docs/versioned/0.23.0/reference/generated/api/type-aliases/AuthProvider.md +5 -0
- package/dist/docs/versioned/0.23.0/reference/generated/api/type-aliases/BetterAuthInstance.md +3 -0
- package/dist/docs/versioned/0.23.0/reference/generated/api/type-aliases/ConfigType.md +1 -0
- package/dist/docs/versioned/0.23.0/reference/generated/api/type-aliases/ConfigurationPostUpdateHook.md +24 -0
- package/dist/docs/versioned/0.23.0/reference/generated/api/type-aliases/ConfigurationPreUpdateHook.md +20 -0
- package/dist/docs/versioned/0.23.0/reference/generated/api/type-aliases/ConsentFormMethods.md +1 -0
- package/dist/docs/versioned/0.23.0/reference/generated/api/type-aliases/ConsentFormType.md +1 -0
- package/dist/docs/versioned/0.23.0/reference/generated/api/type-aliases/DeepPartial.md +9 -0
- package/dist/docs/versioned/0.23.0/reference/generated/api/type-aliases/GooseRESTOptions.md +7 -0
- package/dist/docs/versioned/0.23.0/reference/generated/api/type-aliases/JSONPrimitive.md +1 -0
- package/dist/docs/versioned/0.23.0/reference/generated/api/type-aliases/JSONValue.md +1 -0
- package/dist/docs/versioned/0.23.0/reference/generated/api/type-aliases/PathValue.md +19 -0
- package/dist/docs/versioned/0.23.0/reference/generated/api/type-aliases/Paths.md +15 -0
- package/dist/docs/versioned/0.23.0/reference/generated/api/type-aliases/PermissionMethod.md +25 -0
- package/dist/docs/versioned/0.23.0/reference/generated/api/type-aliases/RESTMethod.md +17 -0
- package/dist/docs/versioned/0.23.0/reference/generated/api/type-aliases/RequestContextAttributes.md +1 -0
- package/dist/docs/versioned/0.23.0/reference/generated/api/type-aliases/ScriptArgValue.md +3 -0
- package/dist/docs/versioned/0.23.0/reference/generated/api/type-aliases/ScriptRunner.md +15 -0
- package/dist/docs/versioned/0.23.0/reference/generated/api/type-aliases/VersionCheckStatus.md +1 -0
- package/dist/docs/versioned/0.23.0/reference/generated/api/variables/ACTION_NAME_PATTERN.md +1 -0
- package/dist/docs/versioned/0.23.0/reference/generated/api/variables/BackgroundTask.md +1 -0
- package/dist/docs/versioned/0.23.0/reference/generated/api/variables/Config.md +244 -0
- package/dist/docs/versioned/0.23.0/reference/generated/api/variables/ConsentForm.md +1 -0
- package/dist/docs/versioned/0.23.0/reference/generated/api/variables/ConsentResponse.md +1 -0
- package/dist/docs/versioned/0.23.0/reference/generated/api/variables/MAX_DOCUMENT_SUBSCRIPTIONS.md +1 -0
- package/dist/docs/versioned/0.23.0/reference/generated/api/variables/MAX_MODEL_SUBSCRIPTIONS.md +4 -0
- package/dist/docs/versioned/0.23.0/reference/generated/api/variables/MAX_QUERY_SUBSCRIPTIONS.md +1 -0
- package/dist/docs/versioned/0.23.0/reference/generated/api/variables/Permissions.md +109 -0
- package/dist/docs/versioned/0.23.0/reference/generated/api/variables/REQUEST_CONTEXT_ATTRIBUTE_NAMES.md +39 -0
- package/dist/docs/versioned/0.23.0/reference/generated/api/variables/VersionConfig.md +1 -0
- package/dist/docs/versioned/0.23.0/reference/generated/api/variables/consentResponsePopulatePaths.md +3 -0
- package/dist/docs/versioned/0.23.0/reference/generated/api/variables/gooseRestRouter.md +85 -0
- package/dist/docs/versioned/0.23.0/reference/generated/api/variables/logger.md +109 -0
- package/dist/docs/versioned/0.23.0/reference/generated/api/variables/winstonLogger.md +1 -0
- package/dist/docs/versioned/0.23.0/reference/generated/rtk/README.md +126 -0
- package/dist/docs/versioned/0.23.0/reference/generated/rtk/functions/buildOptimisticCreateItem.md +17 -0
- package/dist/docs/versioned/0.23.0/reference/generated/rtk/functions/configureOfflineMutationEndpoints.md +13 -0
- package/dist/docs/versioned/0.23.0/reference/generated/rtk/functions/createBetterAuthClient.md +30 -0
- package/dist/docs/versioned/0.23.0/reference/generated/rtk/functions/createOfflineMiddleware.md +41 -0
- package/dist/docs/versioned/0.23.0/reference/generated/rtk/functions/createSessionApi.md +21 -0
- package/dist/docs/versioned/0.23.0/reference/generated/rtk/functions/createStorageAdapter.md +17 -0
- package/dist/docs/versioned/0.23.0/reference/generated/rtk/functions/generateAuthSlice.md +35 -0
- package/dist/docs/versioned/0.23.0/reference/generated/rtk/functions/generateBetterAuthSlice.md +87 -0
- package/dist/docs/versioned/0.23.0/reference/generated/rtk/functions/generateProfileEndpoints.md +35 -0
- package/dist/docs/versioned/0.23.0/reference/generated/rtk/functions/generateTags.md +15 -0
- package/dist/docs/versioned/0.23.0/reference/generated/rtk/functions/getAuthToken.md +5 -0
- package/dist/docs/versioned/0.23.0/reference/generated/rtk/functions/getBaseQuery.md +23 -0
- package/dist/docs/versioned/0.23.0/reference/generated/rtk/functions/getFriendlyExpirationInfo.md +5 -0
- package/dist/docs/versioned/0.23.0/reference/generated/rtk/functions/getRealtimeSocket.md +7 -0
- package/dist/docs/versioned/0.23.0/reference/generated/rtk/functions/getTokenExpirationTimes.md +5 -0
- package/dist/docs/versioned/0.23.0/reference/generated/rtk/functions/isNetworkFetchError.md +14 -0
- package/dist/docs/versioned/0.23.0/reference/generated/rtk/functions/isWebsocketsDebugEnabled.md +5 -0
- package/dist/docs/versioned/0.23.0/reference/generated/rtk/functions/logAuth.md +11 -0
- package/dist/docs/versioned/0.23.0/reference/generated/rtk/functions/logSocket.md +15 -0
- package/dist/docs/versioned/0.23.0/reference/generated/rtk/functions/populateId.md +23 -0
- package/dist/docs/versioned/0.23.0/reference/generated/rtk/functions/realtimeDocument.md +37 -0
- package/dist/docs/versioned/0.23.0/reference/generated/rtk/functions/realtimeList.md +43 -0
- package/dist/docs/versioned/0.23.0/reference/generated/rtk/functions/refreshAuthToken.md +5 -0
- package/dist/docs/versioned/0.23.0/reference/generated/rtk/functions/registerTerrenoDevStore.md +14 -0
- package/dist/docs/versioned/0.23.0/reference/generated/rtk/functions/resolveBaseUrls.md +28 -0
- package/dist/docs/versioned/0.23.0/reference/generated/rtk/functions/resolveFeatureFlagsOptions.md +14 -0
- package/dist/docs/versioned/0.23.0/reference/generated/rtk/functions/selectBetterAuthError.md +13 -0
- package/dist/docs/versioned/0.23.0/reference/generated/rtk/functions/selectBetterAuthIsAuthenticated.md +13 -0
- package/dist/docs/versioned/0.23.0/reference/generated/rtk/functions/selectBetterAuthIsLoading.md +13 -0
- package/dist/docs/versioned/0.23.0/reference/generated/rtk/functions/selectBetterAuthState.md +13 -0
- package/dist/docs/versioned/0.23.0/reference/generated/rtk/functions/selectBetterAuthUser.md +13 -0
- package/dist/docs/versioned/0.23.0/reference/generated/rtk/functions/selectBetterAuthUserId.md +13 -0
- package/dist/docs/versioned/0.23.0/reference/generated/rtk/functions/selectConflicts.md +13 -0
- package/dist/docs/versioned/0.23.0/reference/generated/rtk/functions/selectCurrentUserId.md +11 -0
- package/dist/docs/versioned/0.23.0/reference/generated/rtk/functions/selectIsAuthenticating.md +11 -0
- package/dist/docs/versioned/0.23.0/reference/generated/rtk/functions/selectIsOnline.md +13 -0
- package/dist/docs/versioned/0.23.0/reference/generated/rtk/functions/selectIsOnlineSafe.md +15 -0
- package/dist/docs/versioned/0.23.0/reference/generated/rtk/functions/selectIsSyncing.md +13 -0
- package/dist/docs/versioned/0.23.0/reference/generated/rtk/functions/selectLastTokenRefreshTimestamp.md +11 -0
- package/dist/docs/versioned/0.23.0/reference/generated/rtk/functions/selectOfflineQueue.md +13 -0
- package/dist/docs/versioned/0.23.0/reference/generated/rtk/functions/selectQueueLength.md +13 -0
- package/dist/docs/versioned/0.23.0/reference/generated/rtk/functions/setRealtimeDebug.md +13 -0
- package/dist/docs/versioned/0.23.0/reference/generated/rtk/functions/setRealtimeSocket.md +27 -0
- package/dist/docs/versioned/0.23.0/reference/generated/rtk/functions/shouldDeferOfflineMutation.md +18 -0
- package/dist/docs/versioned/0.23.0/reference/generated/rtk/functions/shouldReplayQueuedMutation.md +18 -0
- package/dist/docs/versioned/0.23.0/reference/generated/rtk/functions/shouldShowStillThereModal.md +5 -0
- package/dist/docs/versioned/0.23.0/reference/generated/rtk/functions/useFeatureFlags.md +15 -0
- package/dist/docs/versioned/0.23.0/reference/generated/rtk/functions/useOfflineStatus.md +16 -0
- package/dist/docs/versioned/0.23.0/reference/generated/rtk/functions/useRealtimeDebug.md +18 -0
- package/dist/docs/versioned/0.23.0/reference/generated/rtk/functions/useSelectCurrentUserId.md +5 -0
- package/dist/docs/versioned/0.23.0/reference/generated/rtk/functions/useSelectIsAuthenticating.md +5 -0
- package/dist/docs/versioned/0.23.0/reference/generated/rtk/functions/useServerStatus.md +26 -0
- package/dist/docs/versioned/0.23.0/reference/generated/rtk/functions/useSocketConnection.md +19 -0
- package/dist/docs/versioned/0.23.0/reference/generated/rtk/functions/useSyncConnection.md +32 -0
- package/dist/docs/versioned/0.23.0/reference/generated/rtk/functions/useTerrenoFeatureFlags.md +19 -0
- package/dist/docs/versioned/0.23.0/reference/generated/rtk/functions/useUpgradeCheck.md +30 -0
- package/dist/docs/versioned/0.23.0/reference/generated/rtk/interfaces/BaseUrls.md +17 -0
- package/dist/docs/versioned/0.23.0/reference/generated/rtk/interfaces/BetterAuthClientConfig.md +31 -0
- package/dist/docs/versioned/0.23.0/reference/generated/rtk/interfaces/BetterAuthClientInterface.md +23 -0
- package/dist/docs/versioned/0.23.0/reference/generated/rtk/interfaces/BetterAuthSession.md +43 -0
- package/dist/docs/versioned/0.23.0/reference/generated/rtk/interfaces/BetterAuthSessionData.md +13 -0
- package/dist/docs/versioned/0.23.0/reference/generated/rtk/interfaces/BetterAuthState.md +49 -0
- package/dist/docs/versioned/0.23.0/reference/generated/rtk/interfaces/BetterAuthUser.md +43 -0
- package/dist/docs/versioned/0.23.0/reference/generated/rtk/interfaces/ConflictRecord.md +47 -0
- package/dist/docs/versioned/0.23.0/reference/generated/rtk/interfaces/EmailSignupRequest.md +15 -0
- package/dist/docs/versioned/0.23.0/reference/generated/rtk/interfaces/ExpoConstantsShape.md +29 -0
- package/dist/docs/versioned/0.23.0/reference/generated/rtk/interfaces/GenerateBetterAuthSliceConfig.md +23 -0
- package/dist/docs/versioned/0.23.0/reference/generated/rtk/interfaces/GoogleLoginRequest.md +5 -0
- package/dist/docs/versioned/0.23.0/reference/generated/rtk/interfaces/ListResponse.md +35 -0
- package/dist/docs/versioned/0.23.0/reference/generated/rtk/interfaces/OfflineMiddlewareConfig.md +15 -0
- package/dist/docs/versioned/0.23.0/reference/generated/rtk/interfaces/OfflineState.md +23 -0
- package/dist/docs/versioned/0.23.0/reference/generated/rtk/interfaces/OfflineStatus.md +87 -0
- package/dist/docs/versioned/0.23.0/reference/generated/rtk/interfaces/QueuedMutation.md +55 -0
- package/dist/docs/versioned/0.23.0/reference/generated/rtk/interfaces/RealtimeEvent.md +58 -0
- package/dist/docs/versioned/0.23.0/reference/generated/rtk/interfaces/ResetPasswordRequest.md +15 -0
- package/dist/docs/versioned/0.23.0/reference/generated/rtk/interfaces/ServerStatusOptions.md +31 -0
- package/dist/docs/versioned/0.23.0/reference/generated/rtk/interfaces/SocketConnection.md +11 -0
- package/dist/docs/versioned/0.23.0/reference/generated/rtk/interfaces/StorageAdapter.md +53 -0
- package/dist/docs/versioned/0.23.0/reference/generated/rtk/interfaces/TerrenoFlagDefinition.md +19 -0
- package/dist/docs/versioned/0.23.0/reference/generated/rtk/interfaces/UseFeatureFlagsOptions.md +50 -0
- package/dist/docs/versioned/0.23.0/reference/generated/rtk/interfaces/UseSocketConnectionOptions.md +87 -0
- package/dist/docs/versioned/0.23.0/reference/generated/rtk/interfaces/UseTerrenoFeatureFlagsOptions.md +41 -0
- package/dist/docs/versioned/0.23.0/reference/generated/rtk/interfaces/UseTerrenoFeatureFlagsResult.md +33 -0
- package/dist/docs/versioned/0.23.0/reference/generated/rtk/interfaces/UserResponse.md +17 -0
- package/dist/docs/versioned/0.23.0/reference/generated/rtk/interfaces/VersionCheckResponse.md +39 -0
- package/dist/docs/versioned/0.23.0/reference/generated/rtk/type-aliases/BetterAuthClient.md +3 -0
- package/dist/docs/versioned/0.23.0/reference/generated/rtk/type-aliases/BetterAuthOAuthProvider.md +3 -0
- package/dist/docs/versioned/0.23.0/reference/generated/rtk/type-aliases/BetterAuthSlice.md +3 -0
- package/dist/docs/versioned/0.23.0/reference/generated/rtk/type-aliases/EmailLoginRequest.md +1 -0
- package/dist/docs/versioned/0.23.0/reference/generated/rtk/type-aliases/RootState.md +1 -0
- package/dist/docs/versioned/0.23.0/reference/generated/rtk/type-aliases/ServerStatus.md +1 -0
- package/dist/docs/versioned/0.23.0/reference/generated/rtk/type-aliases/TerrenoFlagConfiguration.md +1 -0
- package/dist/docs/versioned/0.23.0/reference/generated/rtk/variables/AUTH_DEBUG.md +1 -0
- package/dist/docs/versioned/0.23.0/reference/generated/rtk/variables/IsWeb.md +1 -0
- package/dist/docs/versioned/0.23.0/reference/generated/rtk/variables/LOGOUT_ACTION_TYPE.md +1 -0
- package/dist/docs/versioned/0.23.0/reference/generated/rtk/variables/SAME_ORIGIN_SENTINEL.md +5 -0
- package/dist/docs/versioned/0.23.0/reference/generated/rtk/variables/TOKEN_REFRESHED_SUCCESS.md +1 -0
- package/dist/docs/versioned/0.23.0/reference/generated/rtk/variables/addConflict.md +1 -0
- package/dist/docs/versioned/0.23.0/reference/generated/rtk/variables/baseTasksUrl.md +1 -0
- package/dist/docs/versioned/0.23.0/reference/generated/rtk/variables/baseUrl.md +1 -0
- package/dist/docs/versioned/0.23.0/reference/generated/rtk/variables/baseWebsocketsUrl.md +1 -0
- package/dist/docs/versioned/0.23.0/reference/generated/rtk/variables/clearConflicts.md +1 -0
- package/dist/docs/versioned/0.23.0/reference/generated/rtk/variables/clearQueue.md +1 -0
- package/dist/docs/versioned/0.23.0/reference/generated/rtk/variables/dequeue.md +1 -0
- package/dist/docs/versioned/0.23.0/reference/generated/rtk/variables/dismissConflict.md +1 -0
- package/dist/docs/versioned/0.23.0/reference/generated/rtk/variables/emptySplitApi.md +1 -0
- package/dist/docs/versioned/0.23.0/reference/generated/rtk/variables/enqueue.md +1 -0
- package/dist/docs/versioned/0.23.0/reference/generated/rtk/variables/offlineReducer.md +1 -0
- package/dist/docs/versioned/0.23.0/reference/generated/rtk/variables/offlineSlice.md +1 -0
- package/dist/docs/versioned/0.23.0/reference/generated/rtk/variables/selectUndismissedConflicts.md +1 -0
- package/dist/docs/versioned/0.23.0/reference/generated/rtk/variables/setOnlineStatus.md +1 -0
- package/dist/docs/versioned/0.23.0/reference/generated/rtk/variables/setSyncing.md +1 -0
- package/dist/docs/versioned/0.23.0/reference/generated/rtk/variables/staggeredBaseQuery.md +1 -0
- package/dist/docs/versioned/0.23.0/reference/generated/rtk/variables/useGetVersionCheckQuery.md +1 -0
- package/dist/docs/versioned/0.23.0/reference/generated/rtk/variables/useLazyGetVersionCheckQuery.md +1 -0
- package/dist/docs/versioned/0.23.0/reference/mcp-server.md +586 -0
- package/dist/docs/versioned/0.23.0/reference/rtk.md +439 -0
- package/dist/docs/versioned/0.23.0/reference/ui.md +418 -0
- package/dist/docs/versioned/0.23.0/tasks/admin-improvements.md +429 -0
- package/dist/docs/versioned/0.23.0/tasks/admin-only.md +221 -0
- package/dist/docs/versioned/0.23.0/tasks/admin-script-runner.md +50 -0
- package/dist/docs/versioned/0.23.0/tasks/admin-ui-v2-django-parity.md +135 -0
- package/dist/docs/versioned/0.23.0/tasks/consent-forms.md +193 -0
- package/dist/docs/versioned/0.23.0/tasks/design-blend-skill.md +147 -0
- package/dist/docs/versioned/0.23.0/tasks/feature-flags-openfeature.md +77 -0
- package/dist/docs/versioned/0.23.0/tasks/feature-flags.md +23 -0
- package/dist/docs/versioned/0.23.0/tasks/model-router-actions.md +46 -0
- package/dist/docs/versioned/0.23.0/tasks/model-router-mcp.md +105 -0
- package/dist/docs/versioned/0.23.0/tasks/offline-mode.md +139 -0
- package/dist/docs/versioned/0.23.0/tasks/syncdb-local-first.md +117 -0
- package/dist/docs/versioned/0.23.0/tasks/upgrade-banner.md +73 -0
- package/dist/docs/versioned/0.23.0/tutorials/README.md +7 -0
- package/dist/docs/versioned/0.23.0/tutorials/getting-started.md +44 -0
- package/dist/docs/versioned/next/reference/environment-variables.md +7 -3
- package/dist/docs/versioned/next/reference/rtk.md +11 -4
- package/package.json +3 -3
- package/src/docs/versioned/0.23.0/README.md +29 -0
- package/src/docs/versioned/0.23.0/explanation/README.md +13 -0
- package/src/docs/versioned/0.23.0/explanation/ai-workflows.md +270 -0
- package/src/docs/versioned/0.23.0/explanation/authentication.md +438 -0
- package/src/docs/versioned/0.23.0/explanation/configuration-system.md +428 -0
- package/src/docs/versioned/0.23.0/explanation/dependency-management.md +192 -0
- package/src/docs/versioned/0.23.0/explanation/gcp-hosting-architecture.md +319 -0
- package/src/docs/versioned/0.23.0/explanation/model-router-actions.md +156 -0
- package/src/docs/versioned/0.23.0/explanation/modular-api-design.md +228 -0
- package/src/docs/versioned/0.23.0/how-to/README.md +20 -0
- package/src/docs/versioned/0.23.0/how-to/add-feature-flags.md +115 -0
- package/src/docs/versioned/0.23.0/how-to/add-github-oauth.md +316 -0
- package/src/docs/versioned/0.23.0/how-to/configure-better-auth.md +296 -0
- package/src/docs/versioned/0.23.0/how-to/create-a-model.md +165 -0
- package/src/docs/versioned/0.23.0/how-to/deploy-to-gcp.md +244 -0
- package/src/docs/versioned/0.23.0/how-to/upgrade-banner.md +172 -0
- package/src/docs/versioned/0.23.0/how-to/websocket-integration.md +416 -0
- package/src/docs/versioned/0.23.0/implementationPlans/IP_TEMPLATE.md +47 -0
- package/src/docs/versioned/0.23.0/implementationPlans/ModularAPI.md +844 -0
- package/src/docs/versioned/0.23.0/implementationPlans/PLAN_INDEX.md +21 -0
- package/src/docs/versioned/0.23.0/implementationPlans/README.md +42 -0
- package/src/docs/versioned/0.23.0/implementationPlans/admin-improvements.md +577 -0
- package/src/docs/versioned/0.23.0/implementationPlans/admin-only-research.md +258 -0
- package/src/docs/versioned/0.23.0/implementationPlans/admin-only.md +616 -0
- package/src/docs/versioned/0.23.0/implementationPlans/admin-script-runner.md +107 -0
- package/src/docs/versioned/0.23.0/implementationPlans/admin-ui-v2-django-parity.md +204 -0
- package/src/docs/versioned/0.23.0/implementationPlans/consent-forms.md +417 -0
- package/src/docs/versioned/0.23.0/implementationPlans/design-blend-skill.md +188 -0
- package/src/docs/versioned/0.23.0/implementationPlans/docs-site-and-versioning.md +138 -0
- package/src/docs/versioned/0.23.0/implementationPlans/feature-flags-openfeature.md +545 -0
- package/src/docs/versioned/0.23.0/implementationPlans/feature-flags.md +310 -0
- package/src/docs/versioned/0.23.0/implementationPlans/mcp-boost-parity.md +246 -0
- package/src/docs/versioned/0.23.0/implementationPlans/model-router-actions.md +639 -0
- package/src/docs/versioned/0.23.0/implementationPlans/model-router-mcp.md +186 -0
- package/src/docs/versioned/0.23.0/implementationPlans/offline-mode.md +311 -0
- package/src/docs/versioned/0.23.0/implementationPlans/syncdb-local-first.md +591 -0
- package/src/docs/versioned/0.23.0/implementationPlans/terreno-langfuse-integration.md +145 -0
- package/src/docs/versioned/0.23.0/implementationPlans/upgrade-banner.md +275 -0
- package/src/docs/versioned/0.23.0/reference/README.md +22 -0
- package/src/docs/versioned/0.23.0/reference/admin-backend.md +122 -0
- package/src/docs/versioned/0.23.0/reference/admin-frontend.md +205 -0
- package/src/docs/versioned/0.23.0/reference/api-health.md +81 -0
- package/src/docs/versioned/0.23.0/reference/api.md +1205 -0
- package/src/docs/versioned/0.23.0/reference/components/README.mdx +65 -0
- package/src/docs/versioned/0.23.0/reference/components/accordion.mdx +37 -0
- package/src/docs/versioned/0.23.0/reference/components/addressfield.mdx +26 -0
- package/src/docs/versioned/0.23.0/reference/components/ai-suggestion-box.mdx +26 -0
- package/src/docs/versioned/0.23.0/reference/components/avatar.mdx +35 -0
- package/src/docs/versioned/0.23.0/reference/components/badge.mdx +38 -0
- package/src/docs/versioned/0.23.0/reference/components/banner.mdx +26 -0
- package/src/docs/versioned/0.23.0/reference/components/boolean-field.mdx +36 -0
- package/src/docs/versioned/0.23.0/reference/components/box.mdx +26 -0
- package/src/docs/versioned/0.23.0/reference/components/button.mdx +44 -0
- package/src/docs/versioned/0.23.0/reference/components/card.mdx +26 -0
- package/src/docs/versioned/0.23.0/reference/components/checkbox.mdx +30 -0
- package/src/docs/versioned/0.23.0/reference/components/consentformscreen.mdx +26 -0
- package/src/docs/versioned/0.23.0/reference/components/custom-select-field.mdx +36 -0
- package/src/docs/versioned/0.23.0/reference/components/datatable.mdx +44 -0
- package/src/docs/versioned/0.23.0/reference/components/date-time-field.mdx +49 -0
- package/src/docs/versioned/0.23.0/reference/components/email-field.mdx +43 -0
- package/src/docs/versioned/0.23.0/reference/components/emoji-selector.mdx +26 -0
- package/src/docs/versioned/0.23.0/reference/components/field.mdx +26 -0
- package/src/docs/versioned/0.23.0/reference/components/height-field.mdx +45 -0
- package/src/docs/versioned/0.23.0/reference/components/icon.mdx +31 -0
- package/src/docs/versioned/0.23.0/reference/components/iconbutton.mdx +42 -0
- package/src/docs/versioned/0.23.0/reference/components/inner-modal-content.mdx +41 -0
- package/src/docs/versioned/0.23.0/reference/components/markdown-editor-field.mdx +50 -0
- package/src/docs/versioned/0.23.0/reference/components/markdownview.mdx +37 -0
- package/src/docs/versioned/0.23.0/reference/components/multiselect-field.mdx +36 -0
- package/src/docs/versioned/0.23.0/reference/components/number-field.mdx +46 -0
- package/src/docs/versioned/0.23.0/reference/components/page.mdx +46 -0
- package/src/docs/versioned/0.23.0/reference/components/pagination.mdx +30 -0
- package/src/docs/versioned/0.23.0/reference/components/password-field.mdx +26 -0
- package/src/docs/versioned/0.23.0/reference/components/phone-number-field.mdx +44 -0
- package/src/docs/versioned/0.23.0/reference/components/radio-field.mdx +31 -0
- package/src/docs/versioned/0.23.0/reference/components/sectiondivider.mdx +26 -0
- package/src/docs/versioned/0.23.0/reference/components/segmented-control.mdx +34 -0
- package/src/docs/versioned/0.23.0/reference/components/select-field.mdx +26 -0
- package/src/docs/versioned/0.23.0/reference/components/selectbadge.mdx +35 -0
- package/src/docs/versioned/0.23.0/reference/components/side-drawer.mdx +34 -0
- package/src/docs/versioned/0.23.0/reference/components/sidebar-navigation-non-expo.mdx +35 -0
- package/src/docs/versioned/0.23.0/reference/components/signature-field.mdx +35 -0
- package/src/docs/versioned/0.23.0/reference/components/slider.mdx +43 -0
- package/src/docs/versioned/0.23.0/reference/components/spinner.mdx +29 -0
- package/src/docs/versioned/0.23.0/reference/components/table-badge.mdx +32 -0
- package/src/docs/versioned/0.23.0/reference/components/table-boolean.mdx +29 -0
- package/src/docs/versioned/0.23.0/reference/components/table-date.mdx +30 -0
- package/src/docs/versioned/0.23.0/reference/components/table-icon-button.mdx +28 -0
- package/src/docs/versioned/0.23.0/reference/components/table-number.mdx +30 -0
- package/src/docs/versioned/0.23.0/reference/components/table-text.mdx +30 -0
- package/src/docs/versioned/0.23.0/reference/components/table-title.mdx +28 -0
- package/src/docs/versioned/0.23.0/reference/components/table.mdx +38 -0
- package/src/docs/versioned/0.23.0/reference/components/tap-to-edit.mdx +26 -0
- package/src/docs/versioned/0.23.0/reference/components/text-area.mdx +50 -0
- package/src/docs/versioned/0.23.0/reference/components/text-field.mdx +52 -0
- package/src/docs/versioned/0.23.0/reference/components/theme.mdx +26 -0
- package/src/docs/versioned/0.23.0/reference/components/toast.mdx +26 -0
- package/src/docs/versioned/0.23.0/reference/components/tooltip.mdx +30 -0
- package/src/docs/versioned/0.23.0/reference/components/userinactivity.mdx +32 -0
- package/src/docs/versioned/0.23.0/reference/environment-variables.md +382 -0
- package/src/docs/versioned/0.23.0/reference/feature-flags.md +304 -0
- package/src/docs/versioned/0.23.0/reference/generated/README.md +17 -0
- package/src/docs/versioned/0.23.0/reference/generated/api/README.md +282 -0
- package/src/docs/versioned/0.23.0/reference/generated/api/classes/APIError.md +96 -0
- package/src/docs/versioned/0.23.0/reference/generated/api/classes/BetterAuthApp.md +84 -0
- package/src/docs/versioned/0.23.0/reference/generated/api/classes/CachingSecretProvider.md +118 -0
- package/src/docs/versioned/0.23.0/reference/generated/api/classes/CompositeSecretProvider.md +79 -0
- package/src/docs/versioned/0.23.0/reference/generated/api/classes/ConfigurationApp.md +94 -0
- package/src/docs/versioned/0.23.0/reference/generated/api/classes/ConsentApp.md +74 -0
- package/src/docs/versioned/0.23.0/reference/generated/api/classes/DateOnly.md +123 -0
- package/src/docs/versioned/0.23.0/reference/generated/api/classes/EnvSecretProvider.md +64 -0
- package/src/docs/versioned/0.23.0/reference/generated/api/classes/GcpSecretProvider.md +76 -0
- package/src/docs/versioned/0.23.0/reference/generated/api/classes/OpenApiMiddlewareBuilder.md +577 -0
- package/src/docs/versioned/0.23.0/reference/generated/api/classes/RealtimeApp.md +112 -0
- package/src/docs/versioned/0.23.0/reference/generated/api/classes/TaskCancelledError.md +23 -0
- package/src/docs/versioned/0.23.0/reference/generated/api/classes/TerrenoApp.md +262 -0
- package/src/docs/versioned/0.23.0/reference/generated/api/classes/VersionCheckPlugin.md +43 -0
- package/src/docs/versioned/0.23.0/reference/generated/api/functions/AdminOwnerTransformer.md +47 -0
- package/src/docs/versioned/0.23.0/reference/generated/api/functions/OwnerQueryFilter.md +11 -0
- package/src/docs/versioned/0.23.0/reference/generated/api/functions/addAuthRoutes.md +19 -0
- package/src/docs/versioned/0.23.0/reference/generated/api/functions/addGitHubAuthRoutes.md +31 -0
- package/src/docs/versioned/0.23.0/reference/generated/api/functions/addMeRoutes.md +19 -0
- package/src/docs/versioned/0.23.0/reference/generated/api/functions/addPopulateToQuery.md +15 -0
- package/src/docs/versioned/0.23.0/reference/generated/api/functions/addQuerySubscription.md +26 -0
- package/src/docs/versioned/0.23.0/reference/generated/api/functions/apiErrorMiddleware.md +23 -0
- package/src/docs/versioned/0.23.0/reference/generated/api/functions/apiFallthroughErrorMiddleware.md +26 -0
- package/src/docs/versioned/0.23.0/reference/generated/api/functions/apiUnauthorizedMiddleware.md +23 -0
- package/src/docs/versioned/0.23.0/reference/generated/api/functions/applyRequestContextToSentry.md +11 -0
- package/src/docs/versioned/0.23.0/reference/generated/api/functions/assertNoActionCollisions.md +21 -0
- package/src/docs/versioned/0.23.0/reference/generated/api/functions/asyncHandler.md +15 -0
- package/src/docs/versioned/0.23.0/reference/generated/api/functions/authenticateMiddleware.md +11 -0
- package/src/docs/versioned/0.23.0/reference/generated/api/functions/baseUserPlugin.md +11 -0
- package/src/docs/versioned/0.23.0/reference/generated/api/functions/buildQuerySchemaFromFields.md +30 -0
- package/src/docs/versioned/0.23.0/reference/generated/api/functions/checkModelsStrict.md +21 -0
- package/src/docs/versioned/0.23.0/reference/generated/api/functions/checkPermissions.md +29 -0
- package/src/docs/versioned/0.23.0/reference/generated/api/functions/clearQueryStore.md +7 -0
- package/src/docs/versioned/0.23.0/reference/generated/api/functions/clearRealtimeRegistry.md +7 -0
- package/src/docs/versioned/0.23.0/reference/generated/api/functions/computeQueryId.md +18 -0
- package/src/docs/versioned/0.23.0/reference/generated/api/functions/configurationPlugin.md +48 -0
- package/src/docs/versioned/0.23.0/reference/generated/api/functions/configureOpenApiValidator.md +28 -0
- package/src/docs/versioned/0.23.0/reference/generated/api/functions/createActionOpenApiMiddleware.md +35 -0
- package/src/docs/versioned/0.23.0/reference/generated/api/functions/createBetterAuth.md +13 -0
- package/src/docs/versioned/0.23.0/reference/generated/api/functions/createBetterAuthSessionMiddleware.md +18 -0
- package/src/docs/versioned/0.23.0/reference/generated/api/functions/createFeatureFlaggedLogger.md +53 -0
- package/src/docs/versioned/0.23.0/reference/generated/api/functions/createModelValidators.md +74 -0
- package/src/docs/versioned/0.23.0/reference/generated/api/functions/createOpenApiBuilder.md +39 -0
- package/src/docs/versioned/0.23.0/reference/generated/api/functions/createRouter.md +19 -0
- package/src/docs/versioned/0.23.0/reference/generated/api/functions/createRouterWithAuth.md +19 -0
- package/src/docs/versioned/0.23.0/reference/generated/api/functions/createScopedLogger.md +53 -0
- package/src/docs/versioned/0.23.0/reference/generated/api/functions/createScriptArgs.md +33 -0
- package/src/docs/versioned/0.23.0/reference/generated/api/functions/createValidator.md +29 -0
- package/src/docs/versioned/0.23.0/reference/generated/api/functions/createdUpdatedPlugin.md +11 -0
- package/src/docs/versioned/0.23.0/reference/generated/api/functions/cronjob.md +19 -0
- package/src/docs/versioned/0.23.0/reference/generated/api/functions/defaultResponseHandler.md +32 -0
- package/src/docs/versioned/0.23.0/reference/generated/api/functions/defineCollectionAction.md +25 -0
- package/src/docs/versioned/0.23.0/reference/generated/api/functions/defineInstanceAction.md +29 -0
- package/src/docs/versioned/0.23.0/reference/generated/api/functions/envConfigurationPlugin.md +11 -0
- package/src/docs/versioned/0.23.0/reference/generated/api/functions/errorMessage.md +13 -0
- package/src/docs/versioned/0.23.0/reference/generated/api/functions/errorStack.md +13 -0
- package/src/docs/versioned/0.23.0/reference/generated/api/functions/errorsPlugin.md +11 -0
- package/src/docs/versioned/0.23.0/reference/generated/api/functions/findExactlyOne.md +25 -0
- package/src/docs/versioned/0.23.0/reference/generated/api/functions/findOneOrNone.md +24 -0
- package/src/docs/versioned/0.23.0/reference/generated/api/functions/findOneOrNoneFor.md +37 -0
- package/src/docs/versioned/0.23.0/reference/generated/api/functions/findRegistryEntryByCollection.md +13 -0
- package/src/docs/versioned/0.23.0/reference/generated/api/functions/findRegistryEntryByRoutePath.md +13 -0
- package/src/docs/versioned/0.23.0/reference/generated/api/functions/firebaseJWTPlugin.md +11 -0
- package/src/docs/versioned/0.23.0/reference/generated/api/functions/fixMixedFields.md +21 -0
- package/src/docs/versioned/0.23.0/reference/generated/api/functions/flattenToDotPaths.md +24 -0
- package/src/docs/versioned/0.23.0/reference/generated/api/functions/formatLogContextSuffix.md +17 -0
- package/src/docs/versioned/0.23.0/reference/generated/api/functions/generateTokens.md +35 -0
- package/src/docs/versioned/0.23.0/reference/generated/api/functions/getAPIErrorBody.md +11 -0
- package/src/docs/versioned/0.23.0/reference/generated/api/functions/getBetterAuthSession.md +13 -0
- package/src/docs/versioned/0.23.0/reference/generated/api/functions/getCurrentLogContext.md +9 -0
- package/src/docs/versioned/0.23.0/reference/generated/api/functions/getCurrentRequestContext.md +8 -0
- package/src/docs/versioned/0.23.0/reference/generated/api/functions/getCurrentRequestContextAttributes.md +15 -0
- package/src/docs/versioned/0.23.0/reference/generated/api/functions/getDisableExternalErrorTracking.md +15 -0
- package/src/docs/versioned/0.23.0/reference/generated/api/functions/getMongoClientFromMongoose.md +7 -0
- package/src/docs/versioned/0.23.0/reference/generated/api/functions/getOpenApiSpecForModel.md +29 -0
- package/src/docs/versioned/0.23.0/reference/generated/api/functions/getOpenApiValidatorConfig.md +7 -0
- package/src/docs/versioned/0.23.0/reference/generated/api/functions/getQuerySubscriptionsForCollection.md +14 -0
- package/src/docs/versioned/0.23.0/reference/generated/api/functions/getRealtimeRegistry.md +7 -0
- package/src/docs/versioned/0.23.0/reference/generated/api/functions/getRequestContextFromAttributes.md +11 -0
- package/src/docs/versioned/0.23.0/reference/generated/api/functions/getSchemaFromModel.md +25 -0
- package/src/docs/versioned/0.23.0/reference/generated/api/functions/getSessionIdFromJwtPayload.md +11 -0
- package/src/docs/versioned/0.23.0/reference/generated/api/functions/githubUserPlugin.md +22 -0
- package/src/docs/versioned/0.23.0/reference/generated/api/functions/hasBetterAuthSession.md +13 -0
- package/src/docs/versioned/0.23.0/reference/generated/api/functions/installRealtimeSocketHandlers.md +27 -0
- package/src/docs/versioned/0.23.0/reference/generated/api/functions/isAPIError.md +11 -0
- package/src/docs/versioned/0.23.0/reference/generated/api/functions/isDeletedPlugin.md +15 -0
- package/src/docs/versioned/0.23.0/reference/generated/api/functions/isDisabledPlugin.md +15 -0
- package/src/docs/versioned/0.23.0/reference/generated/api/functions/isOpenApiValidatorConfigured.md +8 -0
- package/src/docs/versioned/0.23.0/reference/generated/api/functions/isValidObjectId.md +11 -0
- package/src/docs/versioned/0.23.0/reference/generated/api/functions/jsonResponseRequestIdMiddleware.md +24 -0
- package/src/docs/versioned/0.23.0/reference/generated/api/functions/logRequests.md +19 -0
- package/src/docs/versioned/0.23.0/reference/generated/api/functions/matchesQuery.md +23 -0
- package/src/docs/versioned/0.23.0/reference/generated/api/functions/modelRouter.md +83 -0
- package/src/docs/versioned/0.23.0/reference/generated/api/functions/mongooseErrorToAPIError.md +13 -0
- package/src/docs/versioned/0.23.0/reference/generated/api/functions/mountBetterAuthRoutes.md +21 -0
- package/src/docs/versioned/0.23.0/reference/generated/api/functions/openApiCompatMiddleware.md +22 -0
- package/src/docs/versioned/0.23.0/reference/generated/api/functions/openApiEtagMiddleware.md +23 -0
- package/src/docs/versioned/0.23.0/reference/generated/api/functions/parseScriptArgs.md +35 -0
- package/src/docs/versioned/0.23.0/reference/generated/api/functions/patchAppUse.md +17 -0
- package/src/docs/versioned/0.23.0/reference/generated/api/functions/permissionMiddleware.md +21 -0
- package/src/docs/versioned/0.23.0/reference/generated/api/functions/registerActionRoutes.md +25 -0
- package/src/docs/versioned/0.23.0/reference/generated/api/functions/registerRealtime.md +14 -0
- package/src/docs/versioned/0.23.0/reference/generated/api/functions/removeAllSocketQueries.md +13 -0
- package/src/docs/versioned/0.23.0/reference/generated/api/functions/removeQuerySubscription.md +17 -0
- package/src/docs/versioned/0.23.0/reference/generated/api/functions/requestContextMiddleware.md +26 -0
- package/src/docs/versioned/0.23.0/reference/generated/api/functions/resetOpenApiValidatorConfig.md +9 -0
- package/src/docs/versioned/0.23.0/reference/generated/api/functions/runActionPermissions.md +33 -0
- package/src/docs/versioned/0.23.0/reference/generated/api/functions/runWithRequestContext.md +38 -0
- package/src/docs/versioned/0.23.0/reference/generated/api/functions/runWithRequestContextAttributes.md +25 -0
- package/src/docs/versioned/0.23.0/reference/generated/api/functions/sendToGoogleChat.md +25 -0
- package/src/docs/versioned/0.23.0/reference/generated/api/functions/sendToSlack.md +29 -0
- package/src/docs/versioned/0.23.0/reference/generated/api/functions/sendToZoom.md +67 -0
- package/src/docs/versioned/0.23.0/reference/generated/api/functions/sentryAppVersionMiddleware.md +26 -0
- package/src/docs/versioned/0.23.0/reference/generated/api/functions/serialize.md +25 -0
- package/src/docs/versioned/0.23.0/reference/generated/api/functions/setRequestContext.md +11 -0
- package/src/docs/versioned/0.23.0/reference/generated/api/functions/setupAuth.md +15 -0
- package/src/docs/versioned/0.23.0/reference/generated/api/functions/setupBetterAuthUserSync.md +21 -0
- package/src/docs/versioned/0.23.0/reference/generated/api/functions/setupEnvironment.md +5 -0
- package/src/docs/versioned/0.23.0/reference/generated/api/functions/setupGitHubAuth.md +22 -0
- package/src/docs/versioned/0.23.0/reference/generated/api/functions/setupLogging.md +11 -0
- package/src/docs/versioned/0.23.0/reference/generated/api/functions/signupUser.md +23 -0
- package/src/docs/versioned/0.23.0/reference/generated/api/functions/startChangeStreamWatcher.md +21 -0
- package/src/docs/versioned/0.23.0/reference/generated/api/functions/stopChangeStreamWatcher.md +7 -0
- package/src/docs/versioned/0.23.0/reference/generated/api/functions/syncBetterAuthUser.md +19 -0
- package/src/docs/versioned/0.23.0/reference/generated/api/functions/syncConsents.md +45 -0
- package/src/docs/versioned/0.23.0/reference/generated/api/functions/timeout.md +11 -0
- package/src/docs/versioned/0.23.0/reference/generated/api/functions/transform.md +29 -0
- package/src/docs/versioned/0.23.0/reference/generated/api/functions/unpopulate.md +21 -0
- package/src/docs/versioned/0.23.0/reference/generated/api/functions/updateRequestContextFromRequest.md +15 -0
- package/src/docs/versioned/0.23.0/reference/generated/api/functions/upsertPlugin.md +23 -0
- package/src/docs/versioned/0.23.0/reference/generated/api/functions/validateActionRequest.md +35 -0
- package/src/docs/versioned/0.23.0/reference/generated/api/functions/validateModelRequestBody.md +30 -0
- package/src/docs/versioned/0.23.0/reference/generated/api/functions/validateQueryParams.md +23 -0
- package/src/docs/versioned/0.23.0/reference/generated/api/functions/validateRequestBody.md +26 -0
- package/src/docs/versioned/0.23.0/reference/generated/api/functions/validateResponseData.md +32 -0
- package/src/docs/versioned/0.23.0/reference/generated/api/functions/wrapActionResponse.md +19 -0
- package/src/docs/versioned/0.23.0/reference/generated/api/functions/wrapScript.md +15 -0
- package/src/docs/versioned/0.23.0/reference/generated/api/interfaces/APIErrorConstructor.md +93 -0
- package/src/docs/versioned/0.23.0/reference/generated/api/interfaces/ActionContext.md +49 -0
- package/src/docs/versioned/0.23.0/reference/generated/api/interfaces/AsyncHandlerOptions.md +32 -0
- package/src/docs/versioned/0.23.0/reference/generated/api/interfaces/AuthOptions.md +47 -0
- package/src/docs/versioned/0.23.0/reference/generated/api/interfaces/BackgroundTaskDocument.md +141 -0
- package/src/docs/versioned/0.23.0/reference/generated/api/interfaces/BackgroundTaskMethods.md +55 -0
- package/src/docs/versioned/0.23.0/reference/generated/api/interfaces/BackgroundTaskModel.md +51 -0
- package/src/docs/versioned/0.23.0/reference/generated/api/interfaces/BackgroundTaskStatics.md +19 -0
- package/src/docs/versioned/0.23.0/reference/generated/api/interfaces/BaseUser.md +11 -0
- package/src/docs/versioned/0.23.0/reference/generated/api/interfaces/BetterAuthAppOptions.md +11 -0
- package/src/docs/versioned/0.23.0/reference/generated/api/interfaces/BetterAuthConfig.md +74 -0
- package/src/docs/versioned/0.23.0/reference/generated/api/interfaces/BetterAuthOAuthProvider.md +13 -0
- package/src/docs/versioned/0.23.0/reference/generated/api/interfaces/BetterAuthSession.md +43 -0
- package/src/docs/versioned/0.23.0/reference/generated/api/interfaces/BetterAuthSessionData.md +13 -0
- package/src/docs/versioned/0.23.0/reference/generated/api/interfaces/BetterAuthUser.md +43 -0
- package/src/docs/versioned/0.23.0/reference/generated/api/interfaces/CachingSecretProviderOptions.md +9 -0
- package/src/docs/versioned/0.23.0/reference/generated/api/interfaces/ChangeStreamConfig.md +41 -0
- package/src/docs/versioned/0.23.0/reference/generated/api/interfaces/CollectionActionConfig.md +123 -0
- package/src/docs/versioned/0.23.0/reference/generated/api/interfaces/ConfigRegistration.md +23 -0
- package/src/docs/versioned/0.23.0/reference/generated/api/interfaces/ConfigurationAppOptions.md +51 -0
- package/src/docs/versioned/0.23.0/reference/generated/api/interfaces/ConfigurationMetaResponse.md +7 -0
- package/src/docs/versioned/0.23.0/reference/generated/api/interfaces/ConfigurationModel.md +166 -0
- package/src/docs/versioned/0.23.0/reference/generated/api/interfaces/ConfigurationPermissions.md +45 -0
- package/src/docs/versioned/0.23.0/reference/generated/api/interfaces/ConfigurationPluginOptions.md +30 -0
- package/src/docs/versioned/0.23.0/reference/generated/api/interfaces/ConfigurationStatics.md +107 -0
- package/src/docs/versioned/0.23.0/reference/generated/api/interfaces/ConsentAppOptions.md +85 -0
- package/src/docs/versioned/0.23.0/reference/generated/api/interfaces/ConsentFormCheckbox.md +17 -0
- package/src/docs/versioned/0.23.0/reference/generated/api/interfaces/ConsentFormDefinition.md +83 -0
- package/src/docs/versioned/0.23.0/reference/generated/api/interfaces/ConsentFormDocument.md +123 -0
- package/src/docs/versioned/0.23.0/reference/generated/api/interfaces/ConsentFormModel.md +79 -0
- package/src/docs/versioned/0.23.0/reference/generated/api/interfaces/ConsentFormStatics.md +55 -0
- package/src/docs/versioned/0.23.0/reference/generated/api/interfaces/ConsentResponseDocument.md +105 -0
- package/src/docs/versioned/0.23.0/reference/generated/api/interfaces/ConsentResponseMethods.md +1 -0
- package/src/docs/versioned/0.23.0/reference/generated/api/interfaces/ConsentResponseModel.md +79 -0
- package/src/docs/versioned/0.23.0/reference/generated/api/interfaces/ConsentResponseStatics.md +55 -0
- package/src/docs/versioned/0.23.0/reference/generated/api/interfaces/CreateBetterAuthOptions.md +17 -0
- package/src/docs/versioned/0.23.0/reference/generated/api/interfaces/CreateFeatureFlaggedLoggerOptions.md +29 -0
- package/src/docs/versioned/0.23.0/reference/generated/api/interfaces/CreateScopedLoggerOptions.md +18 -0
- package/src/docs/versioned/0.23.0/reference/generated/api/interfaces/CreateValidatorOptions.md +25 -0
- package/src/docs/versioned/0.23.0/reference/generated/api/interfaces/CreatedDeleted.md +27 -0
- package/src/docs/versioned/0.23.0/reference/generated/api/interfaces/DocumentSubscription.md +17 -0
- package/src/docs/versioned/0.23.0/reference/generated/api/interfaces/FindExactlyOnePlugin.md +30 -0
- package/src/docs/versioned/0.23.0/reference/generated/api/interfaces/FindOneOrNonePlugin.md +30 -0
- package/src/docs/versioned/0.23.0/reference/generated/api/interfaces/GcpSecretProviderOptions.md +9 -0
- package/src/docs/versioned/0.23.0/reference/generated/api/interfaces/GenerateTokensOptions.md +5 -0
- package/src/docs/versioned/0.23.0/reference/generated/api/interfaces/GitHubAuthOptions.md +74 -0
- package/src/docs/versioned/0.23.0/reference/generated/api/interfaces/GitHubUserFields.md +33 -0
- package/src/docs/versioned/0.23.0/reference/generated/api/interfaces/HasUpsert.md +27 -0
- package/src/docs/versioned/0.23.0/reference/generated/api/interfaces/InstanceActionConfig.md +127 -0
- package/src/docs/versioned/0.23.0/reference/generated/api/interfaces/IsDeleted.md +7 -0
- package/src/docs/versioned/0.23.0/reference/generated/api/interfaces/JSONArray.md +7 -0
- package/src/docs/versioned/0.23.0/reference/generated/api/interfaces/JSONObject.md +3 -0
- package/src/docs/versioned/0.23.0/reference/generated/api/interfaces/JwtSessionPayload.md +19 -0
- package/src/docs/versioned/0.23.0/reference/generated/api/interfaces/LogContextFields.md +41 -0
- package/src/docs/versioned/0.23.0/reference/generated/api/interfaces/LoggingOptions.md +73 -0
- package/src/docs/versioned/0.23.0/reference/generated/api/interfaces/ModelRouterOptions.md +524 -0
- package/src/docs/versioned/0.23.0/reference/generated/api/interfaces/ModelRouterRegistration.md +33 -0
- package/src/docs/versioned/0.23.0/reference/generated/api/interfaces/ModelRouterValidationOptions.md +89 -0
- package/src/docs/versioned/0.23.0/reference/generated/api/interfaces/MongoClientLike.md +11 -0
- package/src/docs/versioned/0.23.0/reference/generated/api/interfaces/OpenApiBuildResult.md +34 -0
- package/src/docs/versioned/0.23.0/reference/generated/api/interfaces/OpenApiMiddleware.md +98 -0
- package/src/docs/versioned/0.23.0/reference/generated/api/interfaces/OpenApiParameter.md +66 -0
- package/src/docs/versioned/0.23.0/reference/generated/api/interfaces/OpenApiResponse.md +43 -0
- package/src/docs/versioned/0.23.0/reference/generated/api/interfaces/OpenApiSchema.md +62 -0
- package/src/docs/versioned/0.23.0/reference/generated/api/interfaces/OpenApiSchemaProperty.md +89 -0
- package/src/docs/versioned/0.23.0/reference/generated/api/interfaces/OpenApiValidatorConfig.md +94 -0
- package/src/docs/versioned/0.23.0/reference/generated/api/interfaces/PopulatePath.md +17 -0
- package/src/docs/versioned/0.23.0/reference/generated/api/interfaces/QuerySubscription.md +25 -0
- package/src/docs/versioned/0.23.0/reference/generated/api/interfaces/QueryValidatorOptions.md +31 -0
- package/src/docs/versioned/0.23.0/reference/generated/api/interfaces/RESTPermissions.md +35 -0
- package/src/docs/versioned/0.23.0/reference/generated/api/interfaces/RealtimeAppOptions.md +62 -0
- package/src/docs/versioned/0.23.0/reference/generated/api/interfaces/RealtimeConfig.md +44 -0
- package/src/docs/versioned/0.23.0/reference/generated/api/interfaces/RealtimeEvent.md +57 -0
- package/src/docs/versioned/0.23.0/reference/generated/api/interfaces/RealtimeRegistryEntry.md +41 -0
- package/src/docs/versioned/0.23.0/reference/generated/api/interfaces/RealtimeSocketLike.md +94 -0
- package/src/docs/versioned/0.23.0/reference/generated/api/interfaces/RequestBodyValidatorOptions.md +71 -0
- package/src/docs/versioned/0.23.0/reference/generated/api/interfaces/RequestContext.md +59 -0
- package/src/docs/versioned/0.23.0/reference/generated/api/interfaces/ScopedLogger.md +100 -0
- package/src/docs/versioned/0.23.0/reference/generated/api/interfaces/ScriptArgDef.md +60 -0
- package/src/docs/versioned/0.23.0/reference/generated/api/interfaces/ScriptArgs.md +121 -0
- package/src/docs/versioned/0.23.0/reference/generated/api/interfaces/ScriptContext.md +67 -0
- package/src/docs/versioned/0.23.0/reference/generated/api/interfaces/ScriptResult.md +11 -0
- package/src/docs/versioned/0.23.0/reference/generated/api/interfaces/SecretFieldMeta.md +29 -0
- package/src/docs/versioned/0.23.0/reference/generated/api/interfaces/SecretProvider.md +35 -0
- package/src/docs/versioned/0.23.0/reference/generated/api/interfaces/SyncConsentsOptions.md +15 -0
- package/src/docs/versioned/0.23.0/reference/generated/api/interfaces/SyncConsentsResult.md +23 -0
- package/src/docs/versioned/0.23.0/reference/generated/api/interfaces/TerrenoAppOptions.md +112 -0
- package/src/docs/versioned/0.23.0/reference/generated/api/interfaces/TerrenoPlugin.md +78 -0
- package/src/docs/versioned/0.23.0/reference/generated/api/interfaces/TerrenoRequestLogEntry.md +13 -0
- package/src/docs/versioned/0.23.0/reference/generated/api/interfaces/TerrenoTransformer.md +49 -0
- package/src/docs/versioned/0.23.0/reference/generated/api/interfaces/User.md +26 -0
- package/src/docs/versioned/0.23.0/reference/generated/api/interfaces/UserModel.md +113 -0
- package/src/docs/versioned/0.23.0/reference/generated/api/interfaces/VersionCheckResponse.md +37 -0
- package/src/docs/versioned/0.23.0/reference/generated/api/interfaces/VersionConfigDocument.md +65 -0
- package/src/docs/versioned/0.23.0/reference/generated/api/interfaces/VersionConfigModel.md +51 -0
- package/src/docs/versioned/0.23.0/reference/generated/api/interfaces/WrapScriptOptions.md +27 -0
- package/src/docs/versioned/0.23.0/reference/generated/api/type-aliases/AddRoutes.md +15 -0
- package/src/docs/versioned/0.23.0/reference/generated/api/type-aliases/AuthProvider.md +5 -0
- package/src/docs/versioned/0.23.0/reference/generated/api/type-aliases/BetterAuthInstance.md +3 -0
- package/src/docs/versioned/0.23.0/reference/generated/api/type-aliases/ConfigType.md +1 -0
- package/src/docs/versioned/0.23.0/reference/generated/api/type-aliases/ConfigurationPostUpdateHook.md +24 -0
- package/src/docs/versioned/0.23.0/reference/generated/api/type-aliases/ConfigurationPreUpdateHook.md +20 -0
- package/src/docs/versioned/0.23.0/reference/generated/api/type-aliases/ConsentFormMethods.md +1 -0
- package/src/docs/versioned/0.23.0/reference/generated/api/type-aliases/ConsentFormType.md +1 -0
- package/src/docs/versioned/0.23.0/reference/generated/api/type-aliases/DeepPartial.md +9 -0
- package/src/docs/versioned/0.23.0/reference/generated/api/type-aliases/GooseRESTOptions.md +7 -0
- package/src/docs/versioned/0.23.0/reference/generated/api/type-aliases/JSONPrimitive.md +1 -0
- package/src/docs/versioned/0.23.0/reference/generated/api/type-aliases/JSONValue.md +1 -0
- package/src/docs/versioned/0.23.0/reference/generated/api/type-aliases/PathValue.md +19 -0
- package/src/docs/versioned/0.23.0/reference/generated/api/type-aliases/Paths.md +15 -0
- package/src/docs/versioned/0.23.0/reference/generated/api/type-aliases/PermissionMethod.md +25 -0
- package/src/docs/versioned/0.23.0/reference/generated/api/type-aliases/RESTMethod.md +17 -0
- package/src/docs/versioned/0.23.0/reference/generated/api/type-aliases/RequestContextAttributes.md +1 -0
- package/src/docs/versioned/0.23.0/reference/generated/api/type-aliases/ScriptArgValue.md +3 -0
- package/src/docs/versioned/0.23.0/reference/generated/api/type-aliases/ScriptRunner.md +15 -0
- package/src/docs/versioned/0.23.0/reference/generated/api/type-aliases/VersionCheckStatus.md +1 -0
- package/src/docs/versioned/0.23.0/reference/generated/api/variables/ACTION_NAME_PATTERN.md +1 -0
- package/src/docs/versioned/0.23.0/reference/generated/api/variables/BackgroundTask.md +1 -0
- package/src/docs/versioned/0.23.0/reference/generated/api/variables/Config.md +244 -0
- package/src/docs/versioned/0.23.0/reference/generated/api/variables/ConsentForm.md +1 -0
- package/src/docs/versioned/0.23.0/reference/generated/api/variables/ConsentResponse.md +1 -0
- package/src/docs/versioned/0.23.0/reference/generated/api/variables/MAX_DOCUMENT_SUBSCRIPTIONS.md +1 -0
- package/src/docs/versioned/0.23.0/reference/generated/api/variables/MAX_MODEL_SUBSCRIPTIONS.md +4 -0
- package/src/docs/versioned/0.23.0/reference/generated/api/variables/MAX_QUERY_SUBSCRIPTIONS.md +1 -0
- package/src/docs/versioned/0.23.0/reference/generated/api/variables/Permissions.md +109 -0
- package/src/docs/versioned/0.23.0/reference/generated/api/variables/REQUEST_CONTEXT_ATTRIBUTE_NAMES.md +39 -0
- package/src/docs/versioned/0.23.0/reference/generated/api/variables/VersionConfig.md +1 -0
- package/src/docs/versioned/0.23.0/reference/generated/api/variables/consentResponsePopulatePaths.md +3 -0
- package/src/docs/versioned/0.23.0/reference/generated/api/variables/gooseRestRouter.md +85 -0
- package/src/docs/versioned/0.23.0/reference/generated/api/variables/logger.md +109 -0
- package/src/docs/versioned/0.23.0/reference/generated/api/variables/winstonLogger.md +1 -0
- package/src/docs/versioned/0.23.0/reference/generated/rtk/README.md +126 -0
- package/src/docs/versioned/0.23.0/reference/generated/rtk/functions/buildOptimisticCreateItem.md +17 -0
- package/src/docs/versioned/0.23.0/reference/generated/rtk/functions/configureOfflineMutationEndpoints.md +13 -0
- package/src/docs/versioned/0.23.0/reference/generated/rtk/functions/createBetterAuthClient.md +30 -0
- package/src/docs/versioned/0.23.0/reference/generated/rtk/functions/createOfflineMiddleware.md +41 -0
- package/src/docs/versioned/0.23.0/reference/generated/rtk/functions/createSessionApi.md +21 -0
- package/src/docs/versioned/0.23.0/reference/generated/rtk/functions/createStorageAdapter.md +17 -0
- package/src/docs/versioned/0.23.0/reference/generated/rtk/functions/generateAuthSlice.md +35 -0
- package/src/docs/versioned/0.23.0/reference/generated/rtk/functions/generateBetterAuthSlice.md +87 -0
- package/src/docs/versioned/0.23.0/reference/generated/rtk/functions/generateProfileEndpoints.md +35 -0
- package/src/docs/versioned/0.23.0/reference/generated/rtk/functions/generateTags.md +15 -0
- package/src/docs/versioned/0.23.0/reference/generated/rtk/functions/getAuthToken.md +5 -0
- package/src/docs/versioned/0.23.0/reference/generated/rtk/functions/getBaseQuery.md +23 -0
- package/src/docs/versioned/0.23.0/reference/generated/rtk/functions/getFriendlyExpirationInfo.md +5 -0
- package/src/docs/versioned/0.23.0/reference/generated/rtk/functions/getRealtimeSocket.md +7 -0
- package/src/docs/versioned/0.23.0/reference/generated/rtk/functions/getTokenExpirationTimes.md +5 -0
- package/src/docs/versioned/0.23.0/reference/generated/rtk/functions/isNetworkFetchError.md +14 -0
- package/src/docs/versioned/0.23.0/reference/generated/rtk/functions/isWebsocketsDebugEnabled.md +5 -0
- package/src/docs/versioned/0.23.0/reference/generated/rtk/functions/logAuth.md +11 -0
- package/src/docs/versioned/0.23.0/reference/generated/rtk/functions/logSocket.md +15 -0
- package/src/docs/versioned/0.23.0/reference/generated/rtk/functions/populateId.md +23 -0
- package/src/docs/versioned/0.23.0/reference/generated/rtk/functions/realtimeDocument.md +37 -0
- package/src/docs/versioned/0.23.0/reference/generated/rtk/functions/realtimeList.md +43 -0
- package/src/docs/versioned/0.23.0/reference/generated/rtk/functions/refreshAuthToken.md +5 -0
- package/src/docs/versioned/0.23.0/reference/generated/rtk/functions/registerTerrenoDevStore.md +14 -0
- package/src/docs/versioned/0.23.0/reference/generated/rtk/functions/resolveBaseUrls.md +28 -0
- package/src/docs/versioned/0.23.0/reference/generated/rtk/functions/resolveFeatureFlagsOptions.md +14 -0
- package/src/docs/versioned/0.23.0/reference/generated/rtk/functions/selectBetterAuthError.md +13 -0
- package/src/docs/versioned/0.23.0/reference/generated/rtk/functions/selectBetterAuthIsAuthenticated.md +13 -0
- package/src/docs/versioned/0.23.0/reference/generated/rtk/functions/selectBetterAuthIsLoading.md +13 -0
- package/src/docs/versioned/0.23.0/reference/generated/rtk/functions/selectBetterAuthState.md +13 -0
- package/src/docs/versioned/0.23.0/reference/generated/rtk/functions/selectBetterAuthUser.md +13 -0
- package/src/docs/versioned/0.23.0/reference/generated/rtk/functions/selectBetterAuthUserId.md +13 -0
- package/src/docs/versioned/0.23.0/reference/generated/rtk/functions/selectConflicts.md +13 -0
- package/src/docs/versioned/0.23.0/reference/generated/rtk/functions/selectCurrentUserId.md +11 -0
- package/src/docs/versioned/0.23.0/reference/generated/rtk/functions/selectIsAuthenticating.md +11 -0
- package/src/docs/versioned/0.23.0/reference/generated/rtk/functions/selectIsOnline.md +13 -0
- package/src/docs/versioned/0.23.0/reference/generated/rtk/functions/selectIsOnlineSafe.md +15 -0
- package/src/docs/versioned/0.23.0/reference/generated/rtk/functions/selectIsSyncing.md +13 -0
- package/src/docs/versioned/0.23.0/reference/generated/rtk/functions/selectLastTokenRefreshTimestamp.md +11 -0
- package/src/docs/versioned/0.23.0/reference/generated/rtk/functions/selectOfflineQueue.md +13 -0
- package/src/docs/versioned/0.23.0/reference/generated/rtk/functions/selectQueueLength.md +13 -0
- package/src/docs/versioned/0.23.0/reference/generated/rtk/functions/setRealtimeDebug.md +13 -0
- package/src/docs/versioned/0.23.0/reference/generated/rtk/functions/setRealtimeSocket.md +27 -0
- package/src/docs/versioned/0.23.0/reference/generated/rtk/functions/shouldDeferOfflineMutation.md +18 -0
- package/src/docs/versioned/0.23.0/reference/generated/rtk/functions/shouldReplayQueuedMutation.md +18 -0
- package/src/docs/versioned/0.23.0/reference/generated/rtk/functions/shouldShowStillThereModal.md +5 -0
- package/src/docs/versioned/0.23.0/reference/generated/rtk/functions/useFeatureFlags.md +15 -0
- package/src/docs/versioned/0.23.0/reference/generated/rtk/functions/useOfflineStatus.md +16 -0
- package/src/docs/versioned/0.23.0/reference/generated/rtk/functions/useRealtimeDebug.md +18 -0
- package/src/docs/versioned/0.23.0/reference/generated/rtk/functions/useSelectCurrentUserId.md +5 -0
- package/src/docs/versioned/0.23.0/reference/generated/rtk/functions/useSelectIsAuthenticating.md +5 -0
- package/src/docs/versioned/0.23.0/reference/generated/rtk/functions/useServerStatus.md +26 -0
- package/src/docs/versioned/0.23.0/reference/generated/rtk/functions/useSocketConnection.md +19 -0
- package/src/docs/versioned/0.23.0/reference/generated/rtk/functions/useSyncConnection.md +32 -0
- package/src/docs/versioned/0.23.0/reference/generated/rtk/functions/useTerrenoFeatureFlags.md +19 -0
- package/src/docs/versioned/0.23.0/reference/generated/rtk/functions/useUpgradeCheck.md +30 -0
- package/src/docs/versioned/0.23.0/reference/generated/rtk/interfaces/BaseUrls.md +17 -0
- package/src/docs/versioned/0.23.0/reference/generated/rtk/interfaces/BetterAuthClientConfig.md +31 -0
- package/src/docs/versioned/0.23.0/reference/generated/rtk/interfaces/BetterAuthClientInterface.md +23 -0
- package/src/docs/versioned/0.23.0/reference/generated/rtk/interfaces/BetterAuthSession.md +43 -0
- package/src/docs/versioned/0.23.0/reference/generated/rtk/interfaces/BetterAuthSessionData.md +13 -0
- package/src/docs/versioned/0.23.0/reference/generated/rtk/interfaces/BetterAuthState.md +49 -0
- package/src/docs/versioned/0.23.0/reference/generated/rtk/interfaces/BetterAuthUser.md +43 -0
- package/src/docs/versioned/0.23.0/reference/generated/rtk/interfaces/ConflictRecord.md +47 -0
- package/src/docs/versioned/0.23.0/reference/generated/rtk/interfaces/EmailSignupRequest.md +15 -0
- package/src/docs/versioned/0.23.0/reference/generated/rtk/interfaces/ExpoConstantsShape.md +29 -0
- package/src/docs/versioned/0.23.0/reference/generated/rtk/interfaces/GenerateBetterAuthSliceConfig.md +23 -0
- package/src/docs/versioned/0.23.0/reference/generated/rtk/interfaces/GoogleLoginRequest.md +5 -0
- package/src/docs/versioned/0.23.0/reference/generated/rtk/interfaces/ListResponse.md +35 -0
- package/src/docs/versioned/0.23.0/reference/generated/rtk/interfaces/OfflineMiddlewareConfig.md +15 -0
- package/src/docs/versioned/0.23.0/reference/generated/rtk/interfaces/OfflineState.md +23 -0
- package/src/docs/versioned/0.23.0/reference/generated/rtk/interfaces/OfflineStatus.md +87 -0
- package/src/docs/versioned/0.23.0/reference/generated/rtk/interfaces/QueuedMutation.md +55 -0
- package/src/docs/versioned/0.23.0/reference/generated/rtk/interfaces/RealtimeEvent.md +58 -0
- package/src/docs/versioned/0.23.0/reference/generated/rtk/interfaces/ResetPasswordRequest.md +15 -0
- package/src/docs/versioned/0.23.0/reference/generated/rtk/interfaces/ServerStatusOptions.md +31 -0
- package/src/docs/versioned/0.23.0/reference/generated/rtk/interfaces/SocketConnection.md +11 -0
- package/src/docs/versioned/0.23.0/reference/generated/rtk/interfaces/StorageAdapter.md +53 -0
- package/src/docs/versioned/0.23.0/reference/generated/rtk/interfaces/TerrenoFlagDefinition.md +19 -0
- package/src/docs/versioned/0.23.0/reference/generated/rtk/interfaces/UseFeatureFlagsOptions.md +50 -0
- package/src/docs/versioned/0.23.0/reference/generated/rtk/interfaces/UseSocketConnectionOptions.md +87 -0
- package/src/docs/versioned/0.23.0/reference/generated/rtk/interfaces/UseTerrenoFeatureFlagsOptions.md +41 -0
- package/src/docs/versioned/0.23.0/reference/generated/rtk/interfaces/UseTerrenoFeatureFlagsResult.md +33 -0
- package/src/docs/versioned/0.23.0/reference/generated/rtk/interfaces/UserResponse.md +17 -0
- package/src/docs/versioned/0.23.0/reference/generated/rtk/interfaces/VersionCheckResponse.md +39 -0
- package/src/docs/versioned/0.23.0/reference/generated/rtk/type-aliases/BetterAuthClient.md +3 -0
- package/src/docs/versioned/0.23.0/reference/generated/rtk/type-aliases/BetterAuthOAuthProvider.md +3 -0
- package/src/docs/versioned/0.23.0/reference/generated/rtk/type-aliases/BetterAuthSlice.md +3 -0
- package/src/docs/versioned/0.23.0/reference/generated/rtk/type-aliases/EmailLoginRequest.md +1 -0
- package/src/docs/versioned/0.23.0/reference/generated/rtk/type-aliases/RootState.md +1 -0
- package/src/docs/versioned/0.23.0/reference/generated/rtk/type-aliases/ServerStatus.md +1 -0
- package/src/docs/versioned/0.23.0/reference/generated/rtk/type-aliases/TerrenoFlagConfiguration.md +1 -0
- package/src/docs/versioned/0.23.0/reference/generated/rtk/variables/AUTH_DEBUG.md +1 -0
- package/src/docs/versioned/0.23.0/reference/generated/rtk/variables/IsWeb.md +1 -0
- package/src/docs/versioned/0.23.0/reference/generated/rtk/variables/LOGOUT_ACTION_TYPE.md +1 -0
- package/src/docs/versioned/0.23.0/reference/generated/rtk/variables/SAME_ORIGIN_SENTINEL.md +5 -0
- package/src/docs/versioned/0.23.0/reference/generated/rtk/variables/TOKEN_REFRESHED_SUCCESS.md +1 -0
- package/src/docs/versioned/0.23.0/reference/generated/rtk/variables/addConflict.md +1 -0
- package/src/docs/versioned/0.23.0/reference/generated/rtk/variables/baseTasksUrl.md +1 -0
- package/src/docs/versioned/0.23.0/reference/generated/rtk/variables/baseUrl.md +1 -0
- package/src/docs/versioned/0.23.0/reference/generated/rtk/variables/baseWebsocketsUrl.md +1 -0
- package/src/docs/versioned/0.23.0/reference/generated/rtk/variables/clearConflicts.md +1 -0
- package/src/docs/versioned/0.23.0/reference/generated/rtk/variables/clearQueue.md +1 -0
- package/src/docs/versioned/0.23.0/reference/generated/rtk/variables/dequeue.md +1 -0
- package/src/docs/versioned/0.23.0/reference/generated/rtk/variables/dismissConflict.md +1 -0
- package/src/docs/versioned/0.23.0/reference/generated/rtk/variables/emptySplitApi.md +1 -0
- package/src/docs/versioned/0.23.0/reference/generated/rtk/variables/enqueue.md +1 -0
- package/src/docs/versioned/0.23.0/reference/generated/rtk/variables/offlineReducer.md +1 -0
- package/src/docs/versioned/0.23.0/reference/generated/rtk/variables/offlineSlice.md +1 -0
- package/src/docs/versioned/0.23.0/reference/generated/rtk/variables/selectUndismissedConflicts.md +1 -0
- package/src/docs/versioned/0.23.0/reference/generated/rtk/variables/setOnlineStatus.md +1 -0
- package/src/docs/versioned/0.23.0/reference/generated/rtk/variables/setSyncing.md +1 -0
- package/src/docs/versioned/0.23.0/reference/generated/rtk/variables/staggeredBaseQuery.md +1 -0
- package/src/docs/versioned/0.23.0/reference/generated/rtk/variables/useGetVersionCheckQuery.md +1 -0
- package/src/docs/versioned/0.23.0/reference/generated/rtk/variables/useLazyGetVersionCheckQuery.md +1 -0
- package/src/docs/versioned/0.23.0/reference/mcp-server.md +586 -0
- package/src/docs/versioned/0.23.0/reference/rtk.md +439 -0
- package/src/docs/versioned/0.23.0/reference/ui.md +418 -0
- package/src/docs/versioned/0.23.0/tasks/admin-improvements.md +429 -0
- package/src/docs/versioned/0.23.0/tasks/admin-only.md +221 -0
- package/src/docs/versioned/0.23.0/tasks/admin-script-runner.md +50 -0
- package/src/docs/versioned/0.23.0/tasks/admin-ui-v2-django-parity.md +135 -0
- package/src/docs/versioned/0.23.0/tasks/consent-forms.md +193 -0
- package/src/docs/versioned/0.23.0/tasks/design-blend-skill.md +147 -0
- package/src/docs/versioned/0.23.0/tasks/feature-flags-openfeature.md +77 -0
- package/src/docs/versioned/0.23.0/tasks/feature-flags.md +23 -0
- package/src/docs/versioned/0.23.0/tasks/model-router-actions.md +46 -0
- package/src/docs/versioned/0.23.0/tasks/model-router-mcp.md +105 -0
- package/src/docs/versioned/0.23.0/tasks/offline-mode.md +139 -0
- package/src/docs/versioned/0.23.0/tasks/syncdb-local-first.md +117 -0
- package/src/docs/versioned/0.23.0/tasks/upgrade-banner.md +73 -0
- package/src/docs/versioned/0.23.0/tutorials/README.md +7 -0
- package/src/docs/versioned/0.23.0/tutorials/getting-started.md +44 -0
- package/src/docs/versioned/next/reference/environment-variables.md +7 -3
- package/src/docs/versioned/next/reference/rtk.md +11 -4
|
@@ -0,0 +1,639 @@
|
|
|
1
|
+
# Implementation Plan: modelRouter Actions
|
|
2
|
+
|
|
3
|
+
## Goal
|
|
4
|
+
|
|
5
|
+
Add first-class support for **actions** in `modelRouter` — URLs that perform a named operation rather than CRUD. Actions live either at `/resource/action` (collection scope) or `/resource/:id/action` (instance scope). They inherit modelRouter's permissions system, are wrapped in `asyncHandler` + the standard error envelope automatically, and appear in the generated OpenAPI spec without extra wiring.
|
|
6
|
+
|
|
7
|
+
Today, callers like `consentApp.ts` hand-roll actions inside the existing `endpoints` callback — wiring auth, error handling, doc loading, and OpenAPI manually. This plan replaces that boilerplate with a declarative API.
|
|
8
|
+
|
|
9
|
+
## Decisions
|
|
10
|
+
|
|
11
|
+
| Topic | Decision |
|
|
12
|
+
|---|---|
|
|
13
|
+
| Methods | `GET` and `POST` only. `PUT`, `PATCH`, and `DELETE` actions are intentionally unsupported in v1 to avoid confusion with CRUD and array-field update/delete routes |
|
|
14
|
+
| Schemas | Zod (input + output), used for both runtime validation and OpenAPI |
|
|
15
|
+
| Doc loading | Auto-load on instance actions; 404 if missing; pass via `ctx.doc` |
|
|
16
|
+
| Permissions | Same `PermissionMethod<T>[]` shape as CRUD; **required**; empty array `[]` means "disabled" (returns 405, matching CRUD semantics at `permissions.ts:90–95`); missing field throws at register time |
|
|
17
|
+
| Handler signature | RORO: `async ({req, res, doc, body, query, user}) => result` |
|
|
18
|
+
| Config shape | Top-level `instanceActions` and `collectionActions` records on `ModelRouterOptions` |
|
|
19
|
+
| URL casing | Action name verbatim (no kebab-case transform) |
|
|
20
|
+
| Response | Handler returns raw data; framework auto-wraps in `{data: ...}`. Skipped if `res.headersSent` (streaming escape hatch) |
|
|
21
|
+
| OpenAPI tag | Default to model tag; per-action `tag` override |
|
|
22
|
+
| Collisions | Throw at register time on conflicts with CRUD paths (`/`, `/:id`) or array-field operations (`/:id/:field`) |
|
|
23
|
+
| Hooks | No pre/post hooks on actions in v1 |
|
|
24
|
+
| Bulk helpers | Userland — no built-in `bulkUpdate` |
|
|
25
|
+
|
|
26
|
+
## Public API
|
|
27
|
+
|
|
28
|
+
### Types (added to `api/src/actions.ts`, re-exported from `api/src/index.ts`)
|
|
29
|
+
|
|
30
|
+
```typescript
|
|
31
|
+
import {z, ZodSchema} from 'zod';
|
|
32
|
+
import type {PermissionMethod} from './permissions';
|
|
33
|
+
import type {Request, Response} from 'express';
|
|
34
|
+
|
|
35
|
+
export interface ActionContext<TDoc, TBody, TQuery> {
|
|
36
|
+
req: Request;
|
|
37
|
+
res: Response;
|
|
38
|
+
user: User | undefined;
|
|
39
|
+
body: TBody; // inferred from body schema; undefined if no schema
|
|
40
|
+
query: TQuery; // inferred from query schema; undefined if no schema
|
|
41
|
+
doc: TDoc; // only present for instance actions
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
interface BaseActionConfig<TDoc, TBody, TQuery, TResponse> {
|
|
45
|
+
method: 'GET' | 'POST';
|
|
46
|
+
permissions: PermissionMethod<TDoc>[];
|
|
47
|
+
body?: ZodSchema<TBody>;
|
|
48
|
+
query?: ZodSchema<TQuery>;
|
|
49
|
+
response?: ZodSchema<TResponse>;
|
|
50
|
+
summary?: string;
|
|
51
|
+
description?: string;
|
|
52
|
+
tag?: string;
|
|
53
|
+
status?: number; // default 200
|
|
54
|
+
}
|
|
55
|
+
|
|
56
|
+
export interface InstanceActionConfig<TDoc, TBody, TQuery, TResponse>
|
|
57
|
+
extends BaseActionConfig<TDoc, TBody, TQuery, TResponse> {
|
|
58
|
+
handler: (ctx: ActionContext<TDoc, TBody, TQuery>) =>
|
|
59
|
+
TResponse | Promise<TResponse>;
|
|
60
|
+
}
|
|
61
|
+
|
|
62
|
+
export interface CollectionActionConfig<TBody, TQuery, TResponse>
|
|
63
|
+
extends BaseActionConfig<never, TBody, TQuery, TResponse> {
|
|
64
|
+
handler: (ctx: Omit<ActionContext<never, TBody, TQuery>, 'doc'>) =>
|
|
65
|
+
TResponse | Promise<TResponse>;
|
|
66
|
+
}
|
|
67
|
+
```
|
|
68
|
+
|
|
69
|
+
### `ModelRouterOptions<T>` additions (in `api/src/api.ts`)
|
|
70
|
+
|
|
71
|
+
```typescript
|
|
72
|
+
export interface ModelRouterOptions<T> {
|
|
73
|
+
// ... existing fields ...
|
|
74
|
+
instanceActions?: Record<string, InstanceActionConfig<T, unknown, unknown, unknown>>;
|
|
75
|
+
collectionActions?: Record<string, CollectionActionConfig<unknown, unknown, unknown>>;
|
|
76
|
+
}
|
|
77
|
+
```
|
|
78
|
+
|
|
79
|
+
### Type-preserving action factories
|
|
80
|
+
|
|
81
|
+
The `Record<string, ...<unknown, unknown, unknown>>` boundary above erases per-action generics. To let call-sites keep full inference of `body`/`query`/`response` types inside handlers, ship two const-friendly factory helpers:
|
|
82
|
+
|
|
83
|
+
```typescript
|
|
84
|
+
// Returns the config as-is, but with per-action generics preserved by the `const` capture.
|
|
85
|
+
export function defineInstanceAction<TDoc, TBody = never, TQuery = never, TResponse = unknown>(
|
|
86
|
+
config: InstanceActionConfig<TDoc, TBody, TQuery, TResponse>
|
|
87
|
+
): InstanceActionConfig<TDoc, TBody, TQuery, TResponse> {
|
|
88
|
+
return config;
|
|
89
|
+
}
|
|
90
|
+
|
|
91
|
+
export function defineCollectionAction<TBody = never, TQuery = never, TResponse = unknown>(
|
|
92
|
+
config: CollectionActionConfig<TBody, TQuery, TResponse>
|
|
93
|
+
): CollectionActionConfig<TBody, TQuery, TResponse> {
|
|
94
|
+
return config;
|
|
95
|
+
}
|
|
96
|
+
```
|
|
97
|
+
|
|
98
|
+
Call-site:
|
|
99
|
+
|
|
100
|
+
```typescript
|
|
101
|
+
import {defineInstanceAction, defineCollectionAction} from '@terreno/api';
|
|
102
|
+
|
|
103
|
+
instanceActions: {
|
|
104
|
+
publish: defineInstanceAction<ScheduleDoc>({
|
|
105
|
+
method: 'POST',
|
|
106
|
+
permissions: [Permissions.IsOwner],
|
|
107
|
+
body: z.object({notifyUsers: z.boolean()}),
|
|
108
|
+
handler: async ({doc, body}) => {
|
|
109
|
+
// ^ ScheduleDoc, ^ {notifyUsers: boolean} — fully inferred
|
|
110
|
+
},
|
|
111
|
+
}),
|
|
112
|
+
}
|
|
113
|
+
```
|
|
114
|
+
|
|
115
|
+
The factories are zero-runtime-cost (identity functions). They're optional — bare object literals still work, just with `unknown` widening on the per-action generics.
|
|
116
|
+
|
|
117
|
+
### Call-site example
|
|
118
|
+
|
|
119
|
+
```typescript
|
|
120
|
+
import {z} from 'zod';
|
|
121
|
+
import {modelRouter, Permissions} from '@terreno/api';
|
|
122
|
+
|
|
123
|
+
export const scheduleRouter = modelRouter('/schedules', Schedule, {
|
|
124
|
+
permissions: { /* CRUD perms */ },
|
|
125
|
+
|
|
126
|
+
instanceActions: {
|
|
127
|
+
status: {
|
|
128
|
+
method: 'GET',
|
|
129
|
+
permissions: [Permissions.IsOwner],
|
|
130
|
+
response: z.object({state: z.enum(['draft', 'published'])}),
|
|
131
|
+
summary: 'Get schedule status',
|
|
132
|
+
handler: async ({doc}) => {
|
|
133
|
+
return {state: doc.publishedAt ? 'published' : 'draft'};
|
|
134
|
+
},
|
|
135
|
+
},
|
|
136
|
+
|
|
137
|
+
publish: {
|
|
138
|
+
method: 'POST',
|
|
139
|
+
permissions: [Permissions.IsOwner],
|
|
140
|
+
body: z.object({notifyUsers: z.boolean()}),
|
|
141
|
+
response: z.object({publishedAt: z.string().datetime()}),
|
|
142
|
+
summary: 'Publish a schedule',
|
|
143
|
+
handler: async ({doc, body}) => {
|
|
144
|
+
doc.publishedAt = new Date();
|
|
145
|
+
if (body.notifyUsers) await notifyUsers(doc);
|
|
146
|
+
await doc.save();
|
|
147
|
+
return {publishedAt: doc.publishedAt.toISOString()};
|
|
148
|
+
},
|
|
149
|
+
},
|
|
150
|
+
},
|
|
151
|
+
|
|
152
|
+
collectionActions: {
|
|
153
|
+
bulkArchive: {
|
|
154
|
+
method: 'POST',
|
|
155
|
+
permissions: [Permissions.IsAdmin],
|
|
156
|
+
body: z.object({ids: z.array(z.string())}),
|
|
157
|
+
response: z.object({archivedCount: z.number()}),
|
|
158
|
+
handler: async ({body}) => {
|
|
159
|
+
const result = await Schedule.updateMany(
|
|
160
|
+
{_id: {$in: body.ids}},
|
|
161
|
+
{$set: {archived: true}}
|
|
162
|
+
);
|
|
163
|
+
return {archivedCount: result.modifiedCount};
|
|
164
|
+
},
|
|
165
|
+
},
|
|
166
|
+
},
|
|
167
|
+
});
|
|
168
|
+
```
|
|
169
|
+
|
|
170
|
+
### Wire response
|
|
171
|
+
|
|
172
|
+
```
|
|
173
|
+
GET /schedules/507f.../status
|
|
174
|
+
→ 200 OK
|
|
175
|
+
{"data": {"state": "published"}}
|
|
176
|
+
|
|
177
|
+
POST /schedules/507f.../publish
|
|
178
|
+
→ 200 OK
|
|
179
|
+
{"data": {"publishedAt": "2026-05-15T18:32:11.000Z"}}
|
|
180
|
+
```
|
|
181
|
+
|
|
182
|
+
## Internal Mechanics
|
|
183
|
+
|
|
184
|
+
### Action name validation
|
|
185
|
+
|
|
186
|
+
Before route registration, each action name is validated against `/^[A-Za-z][A-Za-z0-9_-]+$/`. Empty names and names containing path-special characters (`*`, `:`, `/`, `(`, `)`) throw at register time with a clear message. This guards against `path-to-regexp` v6 surprises in Express 5.
|
|
187
|
+
|
|
188
|
+
### Permission method mapping
|
|
189
|
+
|
|
190
|
+
When invoking permission functions, the action passes a synthetic CRUD `method` so existing permissions like `IsAuthenticatedOrReadOnly` work:
|
|
191
|
+
|
|
192
|
+
| Scope | HTTP | `method` passed to permission |
|
|
193
|
+
|---|---|---|
|
|
194
|
+
| instance | GET | `'read'` |
|
|
195
|
+
| instance | POST | `'update'` |
|
|
196
|
+
| collection | GET | `'list'` |
|
|
197
|
+
| collection | POST | `'create'` |
|
|
198
|
+
|
|
199
|
+
### Action middleware chain (per registered action)
|
|
200
|
+
|
|
201
|
+
```
|
|
202
|
+
asyncHandler(
|
|
203
|
+
authenticateMiddleware(options.allowAnonymous) // honors parent allowAnonymous
|
|
204
|
+
→ runActionPermissions(action, req, undefined) // pre-doc cheap check (matches CRUD)
|
|
205
|
+
→ (instance only) loadDocOr404(model, id) // attaches req.obj
|
|
206
|
+
→ (instance only) runActionPermissions(action, req, req.obj) // post-doc with-doc check
|
|
207
|
+
→ validateZod(body, query) if provided // throws APIError 400 on failure
|
|
208
|
+
→ action.handler(ctx) // user code; receives parsed body/query in ctx
|
|
209
|
+
→ autoWrapResponse(returned, action.status, res)
|
|
210
|
+
)
|
|
211
|
+
```
|
|
212
|
+
|
|
213
|
+
`apiErrorMiddleware` already lives at the router level and converts thrown errors.
|
|
214
|
+
|
|
215
|
+
**Important compatibility points:**
|
|
216
|
+
- `authenticateMiddleware(options.allowAnonymous)` — must pass the parent `allowAnonymous` so anonymous-allowed routers don't 401 before permission checks run (`auth.ts:42`).
|
|
217
|
+
- **Two-stage permission check** mirrors `permissions.ts:135–207`. Pre-doc check throws **405** ("Method not allowed") on denial (matches CRUD `permissions.ts:136`). Post-doc check throws **403** on denial (matches CRUD `permissions.ts:203`). Empty `permissions: []` fails the pre-doc check → 405 disabled.
|
|
218
|
+
- Instance auto-load uses `model.findById(id)` only — **`queryFilter` is intentionally not applied** to match existing CRUD permission middleware (`permissions.ts:148`). This means action handlers may see docs that wouldn't appear in list responses; permission functions are responsible for the final check. This is an existing leak (403 confirms existence vs. 404 hides it) that the actions feature inherits. Document; don't fix in this PR.
|
|
219
|
+
- `req.obj` is set to the loaded doc on instance actions, matching CRUD behavior. `ctx.doc` aliases `req.obj`.
|
|
220
|
+
|
|
221
|
+
### `loadDocOr404` helper
|
|
222
|
+
|
|
223
|
+
Extracted from the existing permission middleware doc-load logic (`api/src/api.ts:148–210`). Signature:
|
|
224
|
+
|
|
225
|
+
```typescript
|
|
226
|
+
async function loadDocOr404<T>(
|
|
227
|
+
model: Model<T>,
|
|
228
|
+
id: string,
|
|
229
|
+
populatePaths?: PopulatePath[]
|
|
230
|
+
): Promise<T>;
|
|
231
|
+
```
|
|
232
|
+
|
|
233
|
+
Preserves the soft-delete-aware 404 metadata behavior. Used by both the existing CRUD permission middleware (after refactor) and the new instance-action middleware.
|
|
234
|
+
|
|
235
|
+
### `runActionPermissions` helper
|
|
236
|
+
|
|
237
|
+
```typescript
|
|
238
|
+
async function runActionPermissions<T>(
|
|
239
|
+
action: BaseActionConfig<unknown, unknown, unknown, unknown>,
|
|
240
|
+
scope: 'instance' | 'collection',
|
|
241
|
+
req: Request,
|
|
242
|
+
doc?: T // undefined for pre-doc check or for collection actions
|
|
243
|
+
): Promise<void>;
|
|
244
|
+
```
|
|
245
|
+
|
|
246
|
+
Maps HTTP method + scope → CRUD method (table above). Invokes each `PermissionMethod` with `(method, req.user, doc)`. **Status codes match the existing CRUD middleware exactly** (`permissions.ts:103–217`):
|
|
247
|
+
|
|
248
|
+
- Pre-doc denial (or any denial on collection actions) → **`APIError({status: 405, title: \`Access to ${METHOD} on ${model.modelName} denied for ${user?.id}\`})`** (parity with `permissions.ts:136`).
|
|
249
|
+
- Post-doc denial on instance actions → **`APIError({status: 403, title: \`Access to ${METHOD} on ${model.modelName}:${id} denied for ${user?.id}\`})`** (parity with `permissions.ts:203`).
|
|
250
|
+
- Empty `permissions: []` array → `checkPermissions` returns `false` on the pre-doc check → 405 (matches CRUD: empty array disables the method).
|
|
251
|
+
- 401 responses come from `apiUnauthorizedMiddleware` for passport failures, not from this helper. Tests should assert the wire envelope from that path, not synthesize it.
|
|
252
|
+
|
|
253
|
+
### Zod validation
|
|
254
|
+
|
|
255
|
+
```typescript
|
|
256
|
+
const parsedBody = action.body?.safeParse(req.body);
|
|
257
|
+
if (parsedBody && !parsedBody.success) {
|
|
258
|
+
const fieldErrors = parsedBody.error.flatten().fieldErrors;
|
|
259
|
+
const fields: Record<string, string> = {};
|
|
260
|
+
for (const [key, msgs] of Object.entries(fieldErrors)) {
|
|
261
|
+
fields[key] = (msgs as string[])[0];
|
|
262
|
+
}
|
|
263
|
+
throw new APIError({status: 400, title: 'Validation failed', fields});
|
|
264
|
+
}
|
|
265
|
+
const parsedQuery = action.query?.safeParse(req.query);
|
|
266
|
+
// (query parsing follows same pattern)
|
|
267
|
+
|
|
268
|
+
// Parsed values are passed through ctx — DO NOT reassign req.body / req.query.
|
|
269
|
+
// Express 5 makes req.query a getter; assignment throws.
|
|
270
|
+
ctx.body = parsedBody?.data;
|
|
271
|
+
ctx.query = parsedQuery?.data;
|
|
272
|
+
```
|
|
273
|
+
|
|
274
|
+
**Wire shape of validation errors:** `APIError.fields` is folded into `meta.fields` by `errors.ts:117–121` and emitted as `{status: 400, title: "Validation failed", meta: {fields: {...}}}` (not `{..., fields: {...}}`). Tests and frontends consume `meta.fields`. This matches existing CRUD validation errors.
|
|
275
|
+
|
|
276
|
+
**Zod object parsing strategy:** Zod 4 `.object()` defaults to **strip** (silently drops unknown fields). For actions we use `safeParse` against the user's schema as-is — the user can opt into `.strict()` to reject unknown fields. Document the default in the explainer.
|
|
277
|
+
|
|
278
|
+
### Auto-wrap response
|
|
279
|
+
|
|
280
|
+
```typescript
|
|
281
|
+
const result = await action.handler(ctx);
|
|
282
|
+
if (res.headersSent) return; // handler streamed
|
|
283
|
+
res.status(action.status ?? 200).json({data: result ?? null});
|
|
284
|
+
```
|
|
285
|
+
|
|
286
|
+
Matches the **read/update/delete** CRUD envelope (`{data: ...}`). It deliberately does **not** match:
|
|
287
|
+
|
|
288
|
+
- **List shape** (`{data, limit, more, page, total}` at `api.ts:761–767`) — list-style pagination is the user's responsibility. If a collection action wants paginated output, the handler builds the envelope itself and calls `res.json(...)`, then returns; the `headersSent` check skips the auto-wrap.
|
|
289
|
+
- **Create status 201** (`api.ts:615`) — actions default to **200**. Users who want 201 set `status: 201` on the action config.
|
|
290
|
+
|
|
291
|
+
Streaming handlers must complete the response (write headers via `res.json`/`res.end`) before returning so `res.headersSent` is true on the check.
|
|
292
|
+
|
|
293
|
+
### Collision detection (register time)
|
|
294
|
+
|
|
295
|
+
Before routes register, walk both action maps and validate:
|
|
296
|
+
|
|
297
|
+
1. Empty action name → `Error("Action name cannot be empty")`.
|
|
298
|
+
2. Action name matches a Mongoose schema array field path → `Error("instanceAction 'tags' collides with array field operations on /:id/tags")`.
|
|
299
|
+
3. Action name is one of the reserved CRUD path segments (`""`, none for `:id` since the param is positional — but action paths like `id` are fine).
|
|
300
|
+
4. Duplicate names across `instanceActions` and `collectionActions` are allowed (different scopes, different paths).
|
|
301
|
+
|
|
302
|
+
Throw synchronously so app boot fails loudly.
|
|
303
|
+
|
|
304
|
+
### OpenAPI emission
|
|
305
|
+
|
|
306
|
+
**Emission must work under both `TerrenoApp` (which calls `_buildWithOpenApi`) and legacy `setupServer` (which never calls `_buildWithOpenApi`; `expressServer.ts:257`).** Therefore action OpenAPI registration uses the **same per-request middleware pattern as CRUD** (`openApi.ts:138–326`): a middleware factory captures the action config + Zod schemas at register time and emits the operation via `oapi.path()` on first request through that route.
|
|
307
|
+
|
|
308
|
+
```typescript
|
|
309
|
+
// Composed into the action middleware chain at register time:
|
|
310
|
+
const actionOpenApiMiddleware = createActionOpenApiMiddleware({
|
|
311
|
+
action,
|
|
312
|
+
model,
|
|
313
|
+
scope, // 'instance' | 'collection'
|
|
314
|
+
actionName,
|
|
315
|
+
tag: action.tag, // defaults to model.collection.collectionName
|
|
316
|
+
});
|
|
317
|
+
```
|
|
318
|
+
|
|
319
|
+
Inside the middleware, the first request through the route calls `oapi.path(operationObject)` with an Operation Object built from:
|
|
320
|
+
- method/path/tag/summary/description/status
|
|
321
|
+
- `operationId: '${tag}_${actionName}'` so RTK Query Code Generation produces stable, deterministic hook names
|
|
322
|
+
- `parameters` containing `id` for instance actions
|
|
323
|
+
- `requestBody`/`responses` whose `schema` is the inlined JSON-Schema fragment from `@asteasolutions/zod-to-openapi`'s `OpenApiGeneratorV3.generateSchema()` (no global registry — every schema is inlined, so no cross-router component-name collisions)
|
|
324
|
+
|
|
325
|
+
**Dependency pinning:** `@asteasolutions/zod-to-openapi` MUST be pinned to **`^8.5.0`** (the first major with `peerDependencies: {zod: "^4.0.0"}`). Earlier majors pin to Zod 3 and break against the codebase's `zod ^4.3.6`.
|
|
326
|
+
|
|
327
|
+
**Double-build interaction:** `api.ts:495` shows `_buildWithOpenApi` re-invokes `_buildModelRouter`, which re-invokes `options.endpoints` — so action route registration also happens twice for `TerrenoApp` consumers (once with `openApi: undefined`, once with `openApi: <real>`). This is fine because each invocation gets a fresh `express.Router()`, and the OpenAPI middleware no-ops when `options.openApi` is undefined. `assertNoActionCollisions` runs synchronously inside the constructor and is also idempotent (just throws or doesn't).
|
|
328
|
+
|
|
329
|
+
## Files to Create / Modify
|
|
330
|
+
|
|
331
|
+
| File | Action | Why |
|
|
332
|
+
|---|---|---|
|
|
333
|
+
| `api/src/actions.ts` | **create** | Public types (`ActionContext`, `InstanceActionConfig`, `CollectionActionConfig`) + helpers (`runActionPermissions`, `validateActionRequest`, `wrapActionResponse`, `registerActionRoutes`, `createActionOpenApiMiddleware`, `assertNoActionCollisions`) |
|
|
334
|
+
| `api/src/docLoader.ts` | **create** | `loadDocOr404(model, id, populatePaths?)` helper, extracted from existing permission middleware. Neutral module to avoid `actions.ts` ↔ `permissions.ts` circular import |
|
|
335
|
+
| `api/src/permissions.ts` | modify | Refactor `permissionMiddleware` to call `loadDocOr404` (behavior-preserving; soft-delete metadata + 404 fallback intact) |
|
|
336
|
+
| `api/src/api.ts` | modify | Extend `ModelRouterOptions<T>` with `instanceActions`/`collectionActions`; call `assertNoActionCollisions` + `registerActionRoutes` in the pre-CRUD endpoints slot. No new `_buildWithOpenApi` work — action OpenAPI emits via per-request middleware composed into the action chain |
|
|
337
|
+
| `api/src/index.ts` | modify | Re-export `ActionContext`, `InstanceActionConfig`, `CollectionActionConfig` |
|
|
338
|
+
| `api/package.json` | modify | Add `zod ^4.3.6` as a **peerDependency** (matching `example-backend`'s installed version) plus `^4.3.6` in `devDependencies` for compile + tests. Add `@asteasolutions/zod-to-openapi ^8.5.0` as a regular `dependency` (it bundles its own usage). Bump `@terreno/api` version |
|
|
339
|
+
| `api/src/consentApp.ts` | modify | Migrate the three `/consent-forms` `endpoints` actions (`generate`, `translate` — both conditional on `aiConfig`; `/:id/publish`). The `/consents/*` routes (`consentApp.ts:195–457`) are out of scope — they aren't on a `modelRouter` |
|
|
340
|
+
| `api/src/actions.test.ts` | **create** | Unit + integration tests (see test plan) |
|
|
341
|
+
| `example-backend/src/api/todos.ts` | modify | Add an instance action (`markComplete`) and a collection action (`bulkComplete`) to dogfood + demonstrate |
|
|
342
|
+
| `example-frontend/store/openApiSdk.ts` | regenerate | Via `bun run sdk` after backend changes |
|
|
343
|
+
| `docs/explanation/model-router-actions.md` | **create** | User-facing docs page |
|
|
344
|
+
| `mcp-server/src/tools.ts` or `prompts.ts` | modify (if applicable) | Add `actions` to `generate_route` so AI assistants suggest the new API |
|
|
345
|
+
|
|
346
|
+
## Phasing
|
|
347
|
+
|
|
348
|
+
### Phase 1 — Foundation (types + runtime + per-route OpenAPI middleware)
|
|
349
|
+
|
|
350
|
+
1. Add `zod ^4.3.6` and `@asteasolutions/zod-to-openapi ^8.5.0` to `api/package.json`. If a Bun catalog version of Zod exists, use it.
|
|
351
|
+
2. Create `api/src/docLoader.ts` exporting `loadDocOr404(model, id, populatePaths?)`. Refactor `permissionMiddleware` in `api/src/permissions.ts` to call it. Behavior-preserving — added test asserts soft-delete 404 metadata is intact.
|
|
352
|
+
3. Create `api/src/actions.ts` with public types and helpers, including the per-route `createActionOpenApiMiddleware` factory (no-ops when `options.openApi` is undefined; emits via `oapi.path()` on first request when present).
|
|
353
|
+
4. Extend `ModelRouterOptions<T>` types in `api/src/api.ts`.
|
|
354
|
+
5. Wire `assertNoActionCollisions` + `registerActionRoutes` into modelRouter, registered in the pre-CRUD `endpoints` slot. Action middleware chain composes: `authenticateMiddleware(options.allowAnonymous)` → pre-doc `runActionPermissions` → (instance) `loadDocOr404` → (instance) post-doc `runActionPermissions` → `validateActionRequest` → `action.handler` → `wrapActionResponse`. The `actionOpenApiMiddleware` runs alongside the chain for spec emission.
|
|
355
|
+
6. Unit tests cover: types compile; instance + collection happy path (GET + POST); pre-doc perm denied → 405 (with title matching CRUD's "Method not allowed"); post-doc perm denied → 403; 401 path comes from `apiUnauthorizedMiddleware`; doc not found → 404 with soft-delete metadata; validation error → 400 with `meta.fields`; collision detection at register time; action-name regex; empty-array `permissions: []` → 405; auto-wrap shape; `res.headersSent` escape hatch.
|
|
356
|
+
|
|
357
|
+
### Phase 2 — OpenAPI verification
|
|
358
|
+
|
|
359
|
+
Per-action OpenAPI emission is part of Phase 1's middleware chain; this phase verifies the emitted spec.
|
|
360
|
+
|
|
361
|
+
1. Tests against the generated `openapi.json`: contains action operations under `paths`; method + path correct; default tag = `model.collection.collectionName`; `tag` override honored; `requestBody.content."application/json".schema` is the Zod-derived JSON Schema (inlined); `responses[status].content."application/json".schema` likewise; instance paths include the `id` path parameter; collection paths do not; deterministic `operationId: '${tag}_${actionName}'`.
|
|
362
|
+
2. Verify both code paths emit: `TerrenoApp` (via `_buildWithOpenApi` rebuild) **and** legacy `setupServer` (per-request middleware fires on first hit). Add a test asserting parity between the two paths.
|
|
363
|
+
|
|
364
|
+
### Phase 3 — Migration + dogfooding
|
|
365
|
+
|
|
366
|
+
1. Migrate `consentApp.ts` `/consent-forms` endpoint actions to the new API:
|
|
367
|
+
- `generate` → `collectionActions.generate` (constructed conditionally on `aiConfig`).
|
|
368
|
+
- `translate` → `collectionActions.translate` (same conditional).
|
|
369
|
+
- `/:id/publish` → `instanceActions.publish`.
|
|
370
|
+
- Leave `/consents/*` routes (`consentApp.ts:195–457`) unchanged — not on a `modelRouter`.
|
|
371
|
+
2. Confirm existing consent-form tests pass without modification.
|
|
372
|
+
3. Add a `markComplete` instance action and `bulkComplete` collection action to `example-backend/src/api/todos.ts`.
|
|
373
|
+
4. Regenerate `example-frontend` SDK: `cd example-frontend && bun run sdk`.
|
|
374
|
+
5. Smoke-test full stack: `bun run backend:dev` + `bun run frontend:web`; exercise both new todo actions via curl + regenerated hooks.
|
|
375
|
+
|
|
376
|
+
### Phase 4 — Consumer compile-check + docs
|
|
377
|
+
|
|
378
|
+
1. Verify all in-repo consumers of `@terreno/api` compile and test cleanly under the new deps: `admin-backend`, `admin-frontend`, `ai`, `api-health`, `feature-flags`, `mcp-server`, `rtk`, `example-backend`. Run `bun run compile` (and `bun run test` where present) per package.
|
|
379
|
+
2. Decide and document whether `zod` is a `dependency` or `peerDependency` of `@terreno/api`. Default: hard `dependency` (matches `mongoose-to-swagger` etc.).
|
|
380
|
+
3. Write `docs/explanation/model-router-actions.md` with the call-site example, semantics (permission status codes, response envelope, validation wire shape, collision detection, Zod `.strict()` recommendation), and migration notes from hand-rolled `endpoints` actions.
|
|
381
|
+
4. Update `mcp-server/src/tools.ts` `generate_route` to suggest `instanceActions`/`collectionActions`.
|
|
382
|
+
5. Bump `@terreno/api` version and prepare changelog entry mentioning the new feature, the new deps, and the behavior-preserving permission middleware refactor.
|
|
383
|
+
|
|
384
|
+
## Test Plan
|
|
385
|
+
|
|
386
|
+
All tests in `api/src/actions.test.ts` using the existing pattern (`getBaseServer`, `authAsUser`, `setupDb`, `supertest`).
|
|
387
|
+
|
|
388
|
+
### Registration
|
|
389
|
+
|
|
390
|
+
- Throws when `permissions` missing.
|
|
391
|
+
- Throws when `permissions` is an empty array.
|
|
392
|
+
- Throws when an action name collides with an array-field operation.
|
|
393
|
+
- Throws on empty action name.
|
|
394
|
+
- Does not throw on instance + collection actions sharing a name.
|
|
395
|
+
|
|
396
|
+
### Routing & permissions
|
|
397
|
+
|
|
398
|
+
- `POST /resource/:id/action` invokes handler with loaded `doc` and `req.obj` set.
|
|
399
|
+
- `POST /resource/action` invokes handler with no `doc`.
|
|
400
|
+
- `GET` actions work for both scopes.
|
|
401
|
+
- `404` when instance action id doesn't exist (and reflects soft-delete metadata, matching CRUD).
|
|
402
|
+
- `401` when unauthenticated and `IsAuthenticated` in permissions — coming from `apiUnauthorizedMiddleware`, with the existing 401 wire shape (not from a synthesized APIError).
|
|
403
|
+
- Pre-doc perm denial → **405** with title `Access to <METHOD> on <Model> denied for <userId>` (matches `permissions.ts:136`).
|
|
404
|
+
- Post-doc perm denial → **403** with title `Access to <METHOD> on <Model>:<id> denied for <userId>` (matches `permissions.ts:203`).
|
|
405
|
+
- Empty `permissions: []` → **405** (method disabled), matching CRUD.
|
|
406
|
+
- `IsAuthenticatedOrReadOnly` passes for GET actions even when `allowAnonymous: true` and no auth header (validates the method mapping AND that `authenticateMiddleware(options.allowAnonymous)` is honoured).
|
|
407
|
+
- `IsOwner` works on instance actions (validates the two-phase permission flow: pre-doc returns true when `obj` is undefined; post-doc checks `ownerId`).
|
|
408
|
+
|
|
409
|
+
### Validation
|
|
410
|
+
|
|
411
|
+
- Valid body parses through and reaches handler via `ctx.body`.
|
|
412
|
+
- Invalid body → 400 with `meta.fields` populated (per `errors.ts:117–121` wire shape).
|
|
413
|
+
- Body parsing coerces (Zod-style) — `z.coerce.number()` transforms `"5"` to `5` in `ctx.body`.
|
|
414
|
+
- Query schema validates query params; parsed result in `ctx.query`. `req.query` is NOT reassigned (Express 5 getter).
|
|
415
|
+
- Missing body when schema requires → 400.
|
|
416
|
+
- Default `.strip` behavior of Zod objects — unknown fields silently dropped from `ctx.body`. Tests assert this and the explainer doc recommends `.strict()`.
|
|
417
|
+
|
|
418
|
+
### Response shape
|
|
419
|
+
|
|
420
|
+
- Handler return value wrapped in `{data: ...}` (matches read/update/delete CRUD envelope).
|
|
421
|
+
- `status` option respected (e.g. 202).
|
|
422
|
+
- `null`/`undefined` return → `{data: null}`.
|
|
423
|
+
- Headers-sent escape hatch: handler that calls `res.json` directly is not re-wrapped.
|
|
424
|
+
- Test asserting list-style envelope is **user's responsibility** (collection action that calls `res.json({data, total, more, ...})` then returns is not re-wrapped).
|
|
425
|
+
|
|
426
|
+
### OpenAPI
|
|
427
|
+
|
|
428
|
+
- Generated spec contains operations for each registered action.
|
|
429
|
+
- Default tag = model collection name; `tag` override applied when set.
|
|
430
|
+
- Request body schema converted from Zod and included in operation.
|
|
431
|
+
- Response schema included under the configured status code.
|
|
432
|
+
- Path parameters present for instance actions (`{id}`).
|
|
433
|
+
|
|
434
|
+
### Migration
|
|
435
|
+
|
|
436
|
+
- Existing `consentApp.ts` tests pass against migrated code.
|
|
437
|
+
|
|
438
|
+
## Acceptance Criteria
|
|
439
|
+
|
|
440
|
+
Each criterion is independently testable. Most are exercised by the bun-test suite in `api/src/actions.test.ts`; smoke criteria are exercised manually against `example-backend` + `example-frontend`.
|
|
441
|
+
|
|
442
|
+
### AC1 — Instance action happy path (POST)
|
|
443
|
+
|
|
444
|
+
**Given** a modelRouter with `instanceActions: {publish: {method: 'POST', permissions: [IsOwner], body: z.object({notify: z.boolean()}), response: z.object({ok: z.boolean()}), handler}}`
|
|
445
|
+
**When** an owner POSTs `{notify: true}` to `/resource/{validId}/publish`
|
|
446
|
+
**Then** the handler receives `ctx.doc` (the loaded document), `ctx.body.notify === true`, `ctx.user` is set; response is `200 {data: {ok: true}}`.
|
|
447
|
+
|
|
448
|
+
### AC2 — Collection action happy path (POST)
|
|
449
|
+
|
|
450
|
+
**Given** a modelRouter with `collectionActions: {bulkArchive: {method: 'POST', permissions: [IsAdmin], body, handler}}`
|
|
451
|
+
**When** an admin POSTs a valid body to `/resource/bulkArchive`
|
|
452
|
+
**Then** the handler receives `ctx.body` parsed and `ctx.doc` is `undefined`; response is `200 {data: <handler return>}`.
|
|
453
|
+
|
|
454
|
+
### AC3 — GET actions
|
|
455
|
+
|
|
456
|
+
**Given** an instance action with `method: 'GET'` and a `query` schema
|
|
457
|
+
**When** a permitted user GETs `/resource/{id}/actionName?x=1`
|
|
458
|
+
**Then** `ctx.query` is parsed and passed; response is wrapped in `{data: ...}`.
|
|
459
|
+
|
|
460
|
+
### AC4 — Auth required → 401
|
|
461
|
+
|
|
462
|
+
**Given** an action with `permissions: [IsAuthenticated]`
|
|
463
|
+
**When** an unauthenticated request hits the action URL
|
|
464
|
+
**Then** response is `401` with the existing unauthorized wire shape from `apiUnauthorizedMiddleware` (`errors.ts:208–219`).
|
|
465
|
+
|
|
466
|
+
### AC5 — Permission denied: pre-doc → 405, post-doc → 403
|
|
467
|
+
|
|
468
|
+
**Given** an instance action with `permissions: [IsOwner]` and a non-owner authenticated user
|
|
469
|
+
**When** they POST to the action
|
|
470
|
+
**Then** the request reaches the post-doc permission check (since `IsOwner` returns `true` when `obj` is undefined). The post-doc check fails on `ownerId` mismatch and response is **403** with title `Access to UPDATE on <Model>:<id> denied for <userId>`.
|
|
471
|
+
|
|
472
|
+
**Given** a collection action with `permissions: [IsAdmin]` and a non-admin authenticated user
|
|
473
|
+
**When** they POST to the action
|
|
474
|
+
**Then** response is **405** with title `Access to CREATE on <Model> denied for <userId>` (pre-doc denial, matching `permissions.ts:136`).
|
|
475
|
+
|
|
476
|
+
### AC6 — `IsAuthenticatedOrReadOnly` mapping
|
|
477
|
+
|
|
478
|
+
**Given** an action with `permissions: [IsAuthenticatedOrReadOnly]` and `method: 'GET'`
|
|
479
|
+
**When** an unauthenticated user GETs it
|
|
480
|
+
**Then** request succeeds (validates that the method mapping treats GET actions as `'read'` / `'list'`).
|
|
481
|
+
|
|
482
|
+
### AC7 — Instance doc not found → 404
|
|
483
|
+
|
|
484
|
+
**Given** any instance action
|
|
485
|
+
**When** a request hits `/resource/{nonexistentId}/action`
|
|
486
|
+
**Then** response is `404` with the existing `APIError` shape (matching the CRUD GET-by-id 404 metadata behavior for soft-deleted documents).
|
|
487
|
+
|
|
488
|
+
### AC8 — Validation error → 400 with field-level errors
|
|
489
|
+
|
|
490
|
+
**Given** an action with `body: z.object({email: z.string().email()})`
|
|
491
|
+
**When** a request sends `{email: "not-an-email"}`
|
|
492
|
+
**Then** response is `400` with `title === "Validation failed"` and the body contains `meta.fields.email` populated with the Zod error message (per `errors.ts:117–121` wire shape — `fields` is folded into `meta.fields`).
|
|
493
|
+
|
|
494
|
+
### AC9 — Coercion via Zod
|
|
495
|
+
|
|
496
|
+
**Given** an action with `body: z.object({count: z.coerce.number()})` and request body `{count: "5"}`
|
|
497
|
+
**Then** handler receives `ctx.body.count === 5` (parsed value passed via `ctx`, NOT via mutating `req.body`).
|
|
498
|
+
|
|
499
|
+
### AC10 — Response envelope
|
|
500
|
+
|
|
501
|
+
**Given** an action handler that returns `{x: 1}`
|
|
502
|
+
**Then** the HTTP response body is exactly `{"data": {"x": 1}}` and HTTP status defaults to `200`.
|
|
503
|
+
|
|
504
|
+
### AC11 — Custom status code
|
|
505
|
+
|
|
506
|
+
**Given** an action with `status: 202` returning `{queued: true}`
|
|
507
|
+
**Then** the HTTP response status is `202` and body is `{"data": {"queued": true}}`.
|
|
508
|
+
|
|
509
|
+
### AC12 — Null return
|
|
510
|
+
|
|
511
|
+
**Given** an action handler that returns `undefined`
|
|
512
|
+
**Then** the response body is `{"data": null}`.
|
|
513
|
+
|
|
514
|
+
### AC13 — Streaming escape hatch
|
|
515
|
+
|
|
516
|
+
**Given** an action handler that calls `res.json({custom: 1})` then returns
|
|
517
|
+
**Then** the response body is `{"custom": 1}` (not re-wrapped); no exception thrown.
|
|
518
|
+
|
|
519
|
+
### AC14 — Missing permissions throws at register time; empty array disables
|
|
520
|
+
|
|
521
|
+
**Given** an action config with `permissions` **omitted entirely**
|
|
522
|
+
**When** modelRouter is constructed
|
|
523
|
+
**Then** an `Error` is thrown synchronously with a clear message naming the offending action.
|
|
524
|
+
|
|
525
|
+
**Given** an action config with `permissions: []`
|
|
526
|
+
**When** modelRouter is constructed
|
|
527
|
+
**Then** no error is thrown at register time — the action is registered but every request to it returns **405** (pre-doc check fails because `checkPermissions` returns false for empty arrays per `permissions.ts:90–95`). This matches CRUD "method disabled" semantics.
|
|
528
|
+
|
|
529
|
+
### AC14b — Action name validation
|
|
530
|
+
|
|
531
|
+
**Given** an action keyed under `"foo*bar"` or `"foo:bar"` or `"foo/bar"`
|
|
532
|
+
**When** modelRouter is constructed
|
|
533
|
+
**Then** an `Error` is thrown naming the invalid name and the regex it must match (`/^[A-Za-z][A-Za-z0-9_-]+$/`).
|
|
534
|
+
|
|
535
|
+
### AC15 — Collision detection
|
|
536
|
+
|
|
537
|
+
**Given** an instance action named `tags` on a model with a `tags` array field
|
|
538
|
+
**When** modelRouter is constructed
|
|
539
|
+
**Then** an `Error` is thrown naming the collision (`/:id/tags`).
|
|
540
|
+
|
|
541
|
+
### AC16 — Empty action name rejected
|
|
542
|
+
|
|
543
|
+
**Given** an action keyed under `""`
|
|
544
|
+
**Then** modelRouter construction throws.
|
|
545
|
+
|
|
546
|
+
### AC17 — OpenAPI: operation appears under BOTH TerrenoApp and setupServer
|
|
547
|
+
|
|
548
|
+
**Given** an action registered as above
|
|
549
|
+
**When** the generated `openapi.json` is fetched (after at least one request through the action route, since OpenAPI emission is on-first-request middleware)
|
|
550
|
+
**Then** the spec contains an operation at the correct path + method with the action's `summary` (or default), `description`, `tag` (default = model collection name), `requestBody` schema (from Zod, inlined), `responses[status].content.application/json.schema` (inlined Zod-derived), and `operationId: '${tag}_${actionName}'`. This must hold both for routers registered via `TerrenoApp.register(...)` and via `setupServer({addRoutes})` paths.
|
|
551
|
+
|
|
552
|
+
### AC18 — OpenAPI: tag override
|
|
553
|
+
|
|
554
|
+
**Given** an action with `tag: 'Custom Tag'`
|
|
555
|
+
**Then** the OpenAPI operation lists `tags: ['Custom Tag']`.
|
|
556
|
+
|
|
557
|
+
### AC19 — OpenAPI: path parameter present for instance actions
|
|
558
|
+
|
|
559
|
+
**Given** any instance action
|
|
560
|
+
**Then** its OpenAPI operation lists a path parameter `id` (string).
|
|
561
|
+
|
|
562
|
+
### AC19b — OpenAPI: deterministic operationId
|
|
563
|
+
|
|
564
|
+
**Given** an action named `publish` on a model with tag `schedules`
|
|
565
|
+
**Then** the operation's `operationId` is `schedules_publish` — guaranteeing RTK Query Code Generation produces a stable hook name.
|
|
566
|
+
|
|
567
|
+
### AC20 — `consentApp.ts` migration behaviour-preserving
|
|
568
|
+
|
|
569
|
+
**Given** the consent forms test suite
|
|
570
|
+
**When** `consentApp.ts` is migrated to the new actions API
|
|
571
|
+
**Then** all existing tests pass without modification.
|
|
572
|
+
|
|
573
|
+
### AC21 — Example backend exposes new actions
|
|
574
|
+
|
|
575
|
+
**Given** `example-backend/src/api/todos.ts` declares `markComplete` and `bulkComplete` actions
|
|
576
|
+
**When** the backend is started and the OpenAPI spec is fetched
|
|
577
|
+
**Then** both operations appear under the Todos tag with correct paths/methods.
|
|
578
|
+
|
|
579
|
+
### AC22 — Example frontend SDK regeneration
|
|
580
|
+
|
|
581
|
+
**Given** the regenerated `example-frontend/store/openApiSdk.ts`
|
|
582
|
+
**Then** typed hooks for both new actions exist and compile.
|
|
583
|
+
|
|
584
|
+
### AC23 — Test suite passes
|
|
585
|
+
|
|
586
|
+
**Given** `bun run test` in `api/`
|
|
587
|
+
**Then** all tests pass (including new `actions.test.ts` and existing consent + modelRouter suites).
|
|
588
|
+
|
|
589
|
+
### AC24 — Type checking
|
|
590
|
+
|
|
591
|
+
**Given** `bun run compile` in every `@terreno/api` consumer (`api`, `admin-backend`, `admin-frontend`, `ai`, `api-health`, `feature-flags`, `mcp-server`, `rtk`, `example-backend`, `example-frontend`)
|
|
592
|
+
**Then** all compilations succeed.
|
|
593
|
+
|
|
594
|
+
### AC25 — No regression in `endpoints` callback
|
|
595
|
+
|
|
596
|
+
**Given** an existing modelRouter using `endpoints: (router) => { router.get('/custom', handler) }`
|
|
597
|
+
**Then** the custom route still works unchanged after this PR (the action system is additive).
|
|
598
|
+
|
|
599
|
+
### AC26 — `allowAnonymous` propagation
|
|
600
|
+
|
|
601
|
+
**Given** `modelRouter(Model, {allowAnonymous: true, instanceActions: {foo: {method: 'GET', permissions: [IsAuthenticatedOrReadOnly], handler}}})`
|
|
602
|
+
**When** an unauthenticated request hits `/{id}/foo`
|
|
603
|
+
**Then** the request succeeds (no 401). Validates that `authenticateMiddleware(options.allowAnonymous)` is honoured.
|
|
604
|
+
|
|
605
|
+
### AC27 — Co-registration precedence
|
|
606
|
+
|
|
607
|
+
**Given** a modelRouter with `instanceActions: {foo: {...}}` **and** `endpoints: (router) => { router.get('/:id/foo', handler) }`
|
|
608
|
+
**When** a request hits `/:id/foo`
|
|
609
|
+
**Then** the action handler runs (actions register first in the pre-CRUD slot, before user `options.endpoints`).
|
|
610
|
+
|
|
611
|
+
### AC28 — Type-preserving factories
|
|
612
|
+
|
|
613
|
+
**Given** a call-site using `defineInstanceAction<ScheduleDoc>({body: z.object({x: z.string()}), handler: async ({doc, body}) => { /* ... */ }})`
|
|
614
|
+
**Then** `tsc --noEmit` confirms `doc: ScheduleDoc` and `body: {x: string}` (per-action generics preserved across the `Record<string, ...>` boundary).
|
|
615
|
+
|
|
616
|
+
## Risks & Open Items
|
|
617
|
+
|
|
618
|
+
| # | Risk / Item | Mitigation |
|
|
619
|
+
|---|---|---|
|
|
620
|
+
| 1 | Adding `zod` + `zod-to-openapi` to `@terreno/api` is a new direction (today's validation is AJV/JSON-schema). | Action validation is parallel, not replacing AJV. Coexists. Pin `@asteasolutions/zod-to-openapi ^8.5.0` so the Zod 4 peer-dep is satisfied. |
|
|
621
|
+
| 2 | `loadDocOr404` extraction touches the hot permission middleware path. | Extract to a neutral `api/src/docLoader.ts` module to avoid circular imports. Refactor must be behavior-preserving — added test asserting current 404 metadata behavior. |
|
|
622
|
+
| 3 | TypeScript inference across `Record<string, InstanceActionConfig<T, unknown, unknown, unknown>>` loses per-action body/query/response types at the record boundary. | Ship `defineInstanceAction()` / `defineCollectionAction()` identity helpers that preserve per-action generics (`TBody`, `TQuery`, `TResponse`) for full handler-side inference. Bare object literals still work, just with `unknown` widening. |
|
|
623
|
+
| 4 | `IsAuthenticatedOrReadOnly` on collection POST → mapped to `'create'`, denies anon access. | Cover in test + docs. |
|
|
624
|
+
| 5 | Generated SDK changes — frontends consuming `@terreno/rtk` will see new endpoints with deterministic `operationId`-based hook names. | Expected. Standard SDK regeneration step in Phase 3. `operationId: '${tag}_${actionName}'` ensures stable names. |
|
|
625
|
+
| 6 | Existing `endpoints` callers might want to migrate piecemeal — both APIs need to coexist. | They do: actions sit on top of the `endpoints` slot internally. Document `endpoints` as the escape hatch. AC25 explicitly tests this. |
|
|
626
|
+
| 7 | `_buildModelRouter` runs twice for `TerrenoApp` registrations (`api.ts:495`). Action registration + OpenAPI middleware fire twice. | Idempotent: each call gets a fresh router; OpenAPI middleware no-ops when `options.openApi` is undefined (first call) and emits when defined (second call). Documented in "Internal Mechanics → Double-build interaction." |
|
|
627
|
+
| 8 | Instance action auto-load uses `findById` and bypasses `queryFilter` (matches existing CRUD permission middleware at `permissions.ts:148`). Reveals doc existence via 403 vs 404. | Pre-existing leak inherited unchanged. Document. Out of scope to fix. |
|
|
628
|
+
| 9 | Concurrent action handlers loading the same doc + `doc.save()` → `VersionError` → 500. | Existing CRUD limitation (see `api.ts:1118–1130`). Document in explainer: "actions are not transactional; for concurrent writes prefer `findOneAndUpdate`." |
|
|
629
|
+
| 10 | Express 5 makes `req.query` getter-only. Plan avoids mutating it; parsed body/query is passed via `ctx`. | Tests assert `ctx.query` carries parsed value while `req.query` is untouched. |
|
|
630
|
+
| 11 | Zod 4 `.object()` defaults to `.strip` — unknown fields silently dropped. | Document and recommend `.strict()` in the explainer. AC test asserts default `.strip` behavior so users aren't surprised. |
|
|
631
|
+
|
|
632
|
+
## Out of Scope
|
|
633
|
+
|
|
634
|
+
- Pre/post hooks on actions (deferred until a clear pattern emerges).
|
|
635
|
+
- Built-in bulk helpers (`bulkUpdate`, `bulkDelete`) — userland for now.
|
|
636
|
+
- Automatic kebab-case URL transformation.
|
|
637
|
+
- Action permissions inheritance from the model's CRUD permissions.
|
|
638
|
+
- Webhook / async actions.
|
|
639
|
+
- Per-action rate limiting.
|