@btst/stack 3.0.0-rc.2 → 3.0.0-rc.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +118 -38
- package/dist/api/index.cjs +133 -29
- package/dist/api/index.d.cts +14 -32
- package/dist/api/index.d.mts +14 -32
- package/dist/api/index.d.ts +14 -32
- package/dist/api/index.mjs +133 -28
- package/dist/authorization/client.cjs +154 -0
- package/dist/authorization/client.d.cts +70 -0
- package/dist/authorization/client.d.mts +70 -0
- package/dist/authorization/client.d.ts +70 -0
- package/dist/authorization/client.mjs +152 -0
- package/dist/authorization/index.cjs +371 -0
- package/dist/authorization/index.d.cts +201 -0
- package/dist/authorization/index.d.mts +201 -0
- package/dist/authorization/index.d.ts +201 -0
- package/dist/authorization/index.mjs +365 -0
- package/dist/authorization/remote.cjs +117 -0
- package/dist/authorization/remote.d.cts +79 -0
- package/dist/authorization/remote.d.mts +79 -0
- package/dist/authorization/remote.d.ts +79 -0
- package/dist/authorization/remote.mjs +111 -0
- package/dist/authorization/server.cjs +77 -0
- package/dist/authorization/server.d.cts +51 -0
- package/dist/authorization/server.d.mts +51 -0
- package/dist/authorization/server.d.ts +51 -0
- package/dist/authorization/server.mjs +73 -0
- package/dist/client/components/index.cjs +1 -0
- package/dist/client/components/index.d.cts +23 -6
- package/dist/client/components/index.d.mts +23 -6
- package/dist/client/components/index.d.ts +23 -6
- package/dist/client/components/index.mjs +1 -1
- package/dist/client/hooks/index.cjs +8 -0
- package/dist/client/hooks/index.d.cts +25 -0
- package/dist/client/hooks/index.d.mts +25 -0
- package/dist/client/hooks/index.d.ts +25 -0
- package/dist/client/hooks/index.mjs +2 -0
- package/dist/client/index.cjs +38 -7
- package/dist/client/index.d.cts +30 -100
- package/dist/client/index.d.mts +30 -100
- package/dist/client/index.d.ts +30 -100
- package/dist/client/index.mjs +38 -7
- package/dist/client/server.cjs +96 -0
- package/dist/client/server.d.cts +57 -0
- package/dist/client/server.d.mts +57 -0
- package/dist/client/server.d.ts +57 -0
- package/dist/client/server.mjs +92 -0
- package/dist/components/auto-form/index.d.cts +2 -2
- package/dist/components/auto-form/index.d.mts +2 -2
- package/dist/components/auto-form/index.d.ts +2 -2
- package/dist/components/form-builder/index.d.cts +1 -1
- package/dist/components/form-builder/index.d.mts +1 -1
- package/dist/components/form-builder/index.d.ts +1 -1
- package/dist/components/stepped-auto-form/index.d.cts +1 -1
- package/dist/components/stepped-auto-form/index.d.mts +1 -1
- package/dist/components/stepped-auto-form/index.d.ts +1 -1
- package/dist/context/index.cjs +8 -2
- package/dist/context/index.d.cts +111 -89
- package/dist/context/index.d.mts +111 -89
- package/dist/context/index.d.ts +111 -89
- package/dist/context/index.mjs +3 -1
- package/dist/index.cjs +1 -2
- package/dist/index.d.cts +8 -3
- package/dist/index.d.mts +8 -3
- package/dist/index.d.ts +8 -3
- package/dist/index.mjs +1 -1
- package/dist/next/index.d.cts +19 -7
- package/dist/next/index.d.mts +19 -7
- package/dist/next/index.d.ts +19 -7
- package/dist/next/server.cjs +7 -0
- package/dist/next/server.d.cts +56 -0
- package/dist/next/server.d.mts +56 -0
- package/dist/next/server.d.ts +56 -0
- package/dist/next/server.mjs +1 -0
- package/dist/packages/stack/src/authorization/json.cjs +57 -0
- package/dist/packages/stack/src/authorization/json.mjs +55 -0
- package/dist/packages/stack/src/client/components/compose.cjs +91 -9
- package/dist/packages/stack/src/client/components/compose.mjs +92 -11
- package/dist/packages/stack/src/client/runtime.cjs +295 -0
- package/dist/packages/stack/src/client/runtime.mjs +293 -0
- package/dist/packages/stack/src/context/auth.cjs +141 -73
- package/dist/packages/stack/src/context/auth.mjs +139 -73
- package/dist/packages/stack/src/context/provider.cjs +11 -5
- package/dist/packages/stack/src/context/provider.mjs +11 -5
- package/dist/packages/stack/src/context/router.cjs +9 -0
- package/dist/packages/stack/src/context/router.mjs +7 -0
- package/dist/packages/stack/src/context/site-navigation.cjs +40 -0
- package/dist/packages/stack/src/context/site-navigation.mjs +38 -0
- package/dist/packages/stack/src/next/layout.cjs +27 -0
- package/dist/packages/stack/src/next/layout.mjs +25 -0
- package/dist/packages/stack/src/plugin-registration.cjs +59 -0
- package/dist/packages/stack/src/plugin-registration.mjs +57 -0
- package/dist/packages/stack/src/plugins/ai-chat/api/lifecycle-migrations.cjs +18 -0
- package/dist/packages/stack/src/plugins/ai-chat/api/lifecycle-migrations.mjs +16 -0
- package/dist/packages/stack/src/plugins/ai-chat/api/operations.cjs +1341 -0
- package/dist/packages/stack/src/plugins/ai-chat/api/operations.mjs +1333 -0
- package/dist/packages/stack/src/plugins/ai-chat/api/plugin.cjs +82 -640
- package/dist/packages/stack/src/plugins/ai-chat/api/plugin.mjs +78 -641
- package/dist/packages/stack/src/plugins/ai-chat/api/serializers.cjs +23 -0
- package/dist/packages/stack/src/plugins/ai-chat/api/serializers.mjs +20 -0
- package/dist/packages/stack/src/plugins/ai-chat/client/components/chat-input.cjs +183 -111
- package/dist/packages/stack/src/plugins/ai-chat/client/components/chat-input.mjs +187 -115
- package/dist/packages/stack/src/plugins/ai-chat/client/components/chat-interface.cjs +562 -116
- package/dist/packages/stack/src/plugins/ai-chat/client/components/chat-interface.mjs +567 -121
- package/dist/packages/stack/src/plugins/ai-chat/client/components/chat-layout.cjs +6 -6
- package/dist/packages/stack/src/plugins/ai-chat/client/components/chat-layout.mjs +6 -6
- package/dist/packages/stack/src/plugins/ai-chat/client/components/chat-message.cjs +1 -1
- package/dist/packages/stack/src/plugins/ai-chat/client/components/chat-message.mjs +1 -1
- package/dist/packages/stack/src/plugins/ai-chat/client/components/chat-sidebar.cjs +45 -29
- package/dist/packages/stack/src/plugins/ai-chat/client/components/chat-sidebar.mjs +46 -30
- package/dist/packages/stack/src/plugins/ai-chat/client/components/pages/404-page.cjs +1 -1
- package/dist/packages/stack/src/plugins/ai-chat/client/components/pages/404-page.mjs +1 -1
- package/dist/packages/stack/src/plugins/ai-chat/client/components/pages/chat-page.cjs +46 -7
- package/dist/packages/stack/src/plugins/ai-chat/client/components/pages/chat-page.internal.cjs +5 -3
- package/dist/packages/stack/src/plugins/ai-chat/client/components/pages/chat-page.internal.mjs +5 -3
- package/dist/packages/stack/src/plugins/ai-chat/client/components/pages/chat-page.mjs +48 -9
- package/dist/packages/stack/src/plugins/ai-chat/client/components/shared/default-error.cjs +1 -1
- package/dist/packages/stack/src/plugins/ai-chat/client/components/shared/default-error.mjs +1 -1
- package/dist/packages/stack/src/plugins/ai-chat/client/components/tool-call-display.cjs +1 -1
- package/dist/packages/stack/src/plugins/ai-chat/client/components/tool-call-display.mjs +1 -1
- package/dist/packages/stack/src/plugins/ai-chat/client/hooks/ai-chat-resource.cjs +1 -1
- package/dist/packages/stack/src/plugins/ai-chat/client/hooks/ai-chat-resource.mjs +1 -1
- package/dist/packages/stack/src/plugins/ai-chat/client/hooks/chat-hooks.cjs +179 -19
- package/dist/packages/stack/src/plugins/ai-chat/client/hooks/chat-hooks.mjs +180 -21
- package/dist/packages/stack/src/plugins/ai-chat/client/navigation.cjs +11 -0
- package/dist/packages/stack/src/plugins/ai-chat/client/navigation.mjs +9 -0
- package/dist/packages/stack/src/plugins/ai-chat/client/overrides.cjs +24 -0
- package/dist/packages/stack/src/plugins/ai-chat/client/overrides.mjs +21 -1
- package/dist/packages/stack/src/plugins/ai-chat/client/plugin.cjs +152 -82
- package/dist/packages/stack/src/plugins/ai-chat/client/plugin.mjs +152 -82
- package/dist/packages/stack/src/plugins/api/create-endpoint.cjs +27 -9
- package/dist/packages/stack/src/plugins/api/create-endpoint.mjs +27 -10
- package/dist/packages/stack/src/plugins/api/endpoint-inventory.cjs +125 -0
- package/dist/packages/stack/src/plugins/api/endpoint-inventory.mjs +123 -0
- package/dist/packages/stack/src/plugins/api/operation.cjs +208 -0
- package/dist/packages/stack/src/plugins/api/operation.mjs +198 -0
- package/dist/packages/stack/src/plugins/blog/api/lifecycle-migrations.cjs +17 -0
- package/dist/packages/stack/src/plugins/blog/api/lifecycle-migrations.mjs +15 -0
- package/dist/packages/stack/src/plugins/blog/api/mutations.cjs +10 -2
- package/dist/packages/stack/src/plugins/blog/api/mutations.mjs +10 -2
- package/dist/packages/stack/src/plugins/blog/api/operations.cjs +455 -0
- package/dist/packages/stack/src/plugins/blog/api/operations.mjs +448 -0
- package/dist/packages/stack/src/plugins/blog/api/plugin.cjs +51 -298
- package/dist/packages/stack/src/plugins/blog/api/plugin.mjs +55 -304
- package/dist/packages/stack/src/plugins/blog/client/components/forms/image-field.cjs +2 -1
- package/dist/packages/stack/src/plugins/blog/client/components/forms/image-field.mjs +2 -1
- package/dist/packages/stack/src/plugins/blog/client/components/forms/markdown-editor-with-overrides.cjs +2 -1
- package/dist/packages/stack/src/plugins/blog/client/components/forms/markdown-editor-with-overrides.mjs +2 -1
- package/dist/packages/stack/src/plugins/blog/client/components/forms/post-forms.cjs +82 -67
- package/dist/packages/stack/src/plugins/blog/client/components/forms/post-forms.mjs +84 -69
- package/dist/packages/stack/src/plugins/blog/client/components/pages/404-page.cjs +2 -1
- package/dist/packages/stack/src/plugins/blog/client/components/pages/404-page.mjs +2 -1
- package/dist/packages/stack/src/plugins/blog/client/components/pages/edit-post-page.cjs +22 -4
- package/dist/packages/stack/src/plugins/blog/client/components/pages/edit-post-page.internal.cjs +2 -1
- package/dist/packages/stack/src/plugins/blog/client/components/pages/edit-post-page.internal.mjs +2 -1
- package/dist/packages/stack/src/plugins/blog/client/components/pages/edit-post-page.mjs +23 -5
- package/dist/packages/stack/src/plugins/blog/client/components/pages/home-page.cjs +6 -2
- package/dist/packages/stack/src/plugins/blog/client/components/pages/home-page.internal.cjs +2 -1
- package/dist/packages/stack/src/plugins/blog/client/components/pages/home-page.internal.mjs +2 -1
- package/dist/packages/stack/src/plugins/blog/client/components/pages/home-page.mjs +6 -2
- package/dist/packages/stack/src/plugins/blog/client/components/pages/new-post-page.cjs +4 -2
- package/dist/packages/stack/src/plugins/blog/client/components/pages/new-post-page.internal.cjs +2 -1
- package/dist/packages/stack/src/plugins/blog/client/components/pages/new-post-page.internal.mjs +2 -1
- package/dist/packages/stack/src/plugins/blog/client/components/pages/new-post-page.mjs +4 -2
- package/dist/packages/stack/src/plugins/blog/client/components/pages/post-page.cjs +30 -3
- package/dist/packages/stack/src/plugins/blog/client/components/pages/post-page.internal.cjs +2 -1
- package/dist/packages/stack/src/plugins/blog/client/components/pages/post-page.internal.mjs +2 -1
- package/dist/packages/stack/src/plugins/blog/client/components/pages/post-page.mjs +31 -4
- package/dist/packages/stack/src/plugins/blog/client/components/pages/tag-page.cjs +4 -1
- package/dist/packages/stack/src/plugins/blog/client/components/pages/tag-page.internal.cjs +2 -1
- package/dist/packages/stack/src/plugins/blog/client/components/pages/tag-page.internal.mjs +2 -1
- package/dist/packages/stack/src/plugins/blog/client/components/pages/tag-page.mjs +4 -1
- package/dist/packages/stack/src/plugins/blog/client/components/shared/collapsible-tag-list.cjs +2 -1
- package/dist/packages/stack/src/plugins/blog/client/components/shared/collapsible-tag-list.mjs +2 -1
- package/dist/packages/stack/src/plugins/blog/client/components/shared/default-error.cjs +2 -1
- package/dist/packages/stack/src/plugins/blog/client/components/shared/default-error.mjs +2 -1
- package/dist/packages/stack/src/plugins/blog/client/components/shared/on-this-page.cjs +3 -2
- package/dist/packages/stack/src/plugins/blog/client/components/shared/on-this-page.mjs +3 -2
- package/dist/packages/stack/src/plugins/blog/client/components/shared/page-wrapper.cjs +2 -1
- package/dist/packages/stack/src/plugins/blog/client/components/shared/page-wrapper.mjs +2 -1
- package/dist/packages/stack/src/plugins/blog/client/components/shared/post-card.cjs +2 -1
- package/dist/packages/stack/src/plugins/blog/client/components/shared/post-card.mjs +2 -1
- package/dist/packages/stack/src/plugins/blog/client/components/shared/posts-list.cjs +2 -1
- package/dist/packages/stack/src/plugins/blog/client/components/shared/posts-list.mjs +2 -1
- package/dist/packages/stack/src/plugins/blog/client/components/shared/recent-posts-carousel.cjs +2 -1
- package/dist/packages/stack/src/plugins/blog/client/components/shared/recent-posts-carousel.mjs +2 -1
- package/dist/packages/stack/src/plugins/blog/client/components/shared/search-input.cjs +2 -2
- package/dist/packages/stack/src/plugins/blog/client/components/shared/search-input.mjs +1 -1
- package/dist/packages/stack/src/plugins/blog/client/constants.cjs +5 -0
- package/dist/packages/stack/src/plugins/blog/client/constants.mjs +3 -0
- package/dist/packages/stack/src/plugins/blog/client/hooks/blog-resource.cjs +2 -1
- package/dist/packages/stack/src/plugins/blog/client/hooks/blog-resource.mjs +2 -1
- package/dist/packages/stack/src/plugins/blog/client/plugin.cjs +169 -163
- package/dist/packages/stack/src/plugins/blog/client/plugin.mjs +169 -163
- package/dist/packages/stack/src/plugins/client/resource/hooks.cjs +31 -16
- package/dist/packages/stack/src/plugins/client/resource/hooks.mjs +31 -16
- package/dist/packages/stack/src/plugins/client/resource/internal.cjs +66 -52
- package/dist/packages/stack/src/plugins/client/resource/internal.mjs +66 -52
- package/dist/packages/stack/src/plugins/client/resource/use-form.cjs +20 -17
- package/dist/packages/stack/src/plugins/client/resource/use-form.mjs +20 -17
- package/dist/packages/stack/src/plugins/client/resource/use-select.cjs +39 -33
- package/dist/packages/stack/src/plugins/client/resource/use-select.mjs +39 -33
- package/dist/packages/stack/src/plugins/cms/api/lifecycle-migrations.cjs +13 -0
- package/dist/packages/stack/src/plugins/cms/api/lifecycle-migrations.mjs +11 -0
- package/dist/packages/stack/src/plugins/cms/api/operations.cjs +1763 -0
- package/dist/packages/stack/src/plugins/cms/api/operations.mjs +1756 -0
- package/dist/packages/stack/src/plugins/cms/api/plugin.cjs +165 -752
- package/dist/packages/stack/src/plugins/cms/api/plugin.mjs +164 -755
- package/dist/packages/stack/src/plugins/cms/client/components/forms/content-form.cjs +2 -1
- package/dist/packages/stack/src/plugins/cms/client/components/forms/content-form.mjs +2 -1
- package/dist/packages/stack/src/plugins/cms/client/components/forms/file-upload.cjs +2 -1
- package/dist/packages/stack/src/plugins/cms/client/components/forms/file-upload.mjs +2 -1
- package/dist/packages/stack/src/plugins/cms/client/components/forms/relation-field.cjs +2 -1
- package/dist/packages/stack/src/plugins/cms/client/components/forms/relation-field.mjs +2 -1
- package/dist/packages/stack/src/plugins/cms/client/components/inverse-relations-panel.cjs +23 -13
- package/dist/packages/stack/src/plugins/cms/client/components/inverse-relations-panel.mjs +24 -14
- package/dist/packages/stack/src/plugins/cms/client/components/pages/404-page.cjs +5 -4
- package/dist/packages/stack/src/plugins/cms/client/components/pages/404-page.mjs +6 -5
- package/dist/packages/stack/src/plugins/cms/client/components/pages/content-editor-page.cjs +40 -7
- package/dist/packages/stack/src/plugins/cms/client/components/pages/content-editor-page.internal.cjs +15 -9
- package/dist/packages/stack/src/plugins/cms/client/components/pages/content-editor-page.internal.mjs +14 -8
- package/dist/packages/stack/src/plugins/cms/client/components/pages/content-editor-page.mjs +41 -8
- package/dist/packages/stack/src/plugins/cms/client/components/pages/content-list-page.cjs +7 -1
- package/dist/packages/stack/src/plugins/cms/client/components/pages/content-list-page.internal.cjs +42 -29
- package/dist/packages/stack/src/plugins/cms/client/components/pages/content-list-page.internal.mjs +40 -27
- package/dist/packages/stack/src/plugins/cms/client/components/pages/content-list-page.mjs +7 -1
- package/dist/packages/stack/src/plugins/cms/client/components/pages/dashboard-page.cjs +4 -1
- package/dist/packages/stack/src/plugins/cms/client/components/pages/dashboard-page.internal.cjs +13 -7
- package/dist/packages/stack/src/plugins/cms/client/components/pages/dashboard-page.internal.mjs +12 -6
- package/dist/packages/stack/src/plugins/cms/client/components/pages/dashboard-page.mjs +4 -1
- package/dist/packages/stack/src/plugins/cms/client/components/shared/page-wrapper.cjs +2 -1
- package/dist/packages/stack/src/plugins/cms/client/components/shared/page-wrapper.mjs +2 -1
- package/dist/packages/stack/src/plugins/cms/client/constants.cjs +5 -0
- package/dist/packages/stack/src/plugins/cms/client/constants.mjs +3 -0
- package/dist/packages/stack/src/plugins/cms/client/hooks/cms-resource.cjs +2 -1
- package/dist/packages/stack/src/plugins/cms/client/hooks/cms-resource.mjs +2 -1
- package/dist/packages/stack/src/plugins/cms/client/overrides.cjs +26 -0
- package/dist/packages/stack/src/plugins/cms/client/overrides.mjs +24 -0
- package/dist/packages/stack/src/plugins/cms/client/plugin.cjs +102 -81
- package/dist/packages/stack/src/plugins/cms/client/plugin.mjs +103 -82
- package/dist/packages/stack/src/plugins/comments/api/getters.cjs +6 -2
- package/dist/packages/stack/src/plugins/comments/api/getters.mjs +6 -3
- package/dist/packages/stack/src/plugins/comments/api/lifecycle-migrations.cjs +18 -0
- package/dist/packages/stack/src/plugins/comments/api/lifecycle-migrations.mjs +16 -0
- package/dist/packages/stack/src/plugins/comments/api/mutations.cjs +179 -68
- package/dist/packages/stack/src/plugins/comments/api/mutations.mjs +179 -68
- package/dist/packages/stack/src/plugins/comments/api/operations.cjs +453 -0
- package/dist/packages/stack/src/plugins/comments/api/operations.mjs +445 -0
- package/dist/packages/stack/src/plugins/comments/api/plugin.cjs +51 -276
- package/dist/packages/stack/src/plugins/comments/api/plugin.mjs +48 -277
- package/dist/packages/stack/src/plugins/comments/client/components/comment-count.cjs +32 -5
- package/dist/packages/stack/src/plugins/comments/client/components/comment-count.mjs +34 -7
- package/dist/packages/stack/src/plugins/comments/client/components/comment-thread.cjs +160 -104
- package/dist/packages/stack/src/plugins/comments/client/components/comment-thread.mjs +161 -105
- package/dist/packages/stack/src/plugins/comments/client/components/pages/moderation-page.cjs +14 -2
- package/dist/packages/stack/src/plugins/comments/client/components/pages/moderation-page.internal.cjs +141 -71
- package/dist/packages/stack/src/plugins/comments/client/components/pages/moderation-page.internal.mjs +142 -72
- package/dist/packages/stack/src/plugins/comments/client/components/pages/moderation-page.mjs +14 -2
- package/dist/packages/stack/src/plugins/comments/client/components/pages/moderation-state.cjs +12 -0
- package/dist/packages/stack/src/plugins/comments/client/components/pages/moderation-state.mjs +9 -0
- package/dist/packages/stack/src/plugins/comments/client/components/pages/my-comments-page.cjs +2 -1
- package/dist/packages/stack/src/plugins/comments/client/components/pages/my-comments-page.internal.cjs +40 -26
- package/dist/packages/stack/src/plugins/comments/client/components/pages/my-comments-page.internal.mjs +40 -26
- package/dist/packages/stack/src/plugins/comments/client/components/pages/my-comments-page.mjs +2 -1
- package/dist/packages/stack/src/plugins/comments/client/components/pages/resource-comments-page.cjs +9 -1
- package/dist/packages/stack/src/plugins/comments/client/components/pages/resource-comments-page.internal.cjs +25 -20
- package/dist/packages/stack/src/plugins/comments/client/components/pages/resource-comments-page.internal.mjs +26 -21
- package/dist/packages/stack/src/plugins/comments/client/components/pages/resource-comments-page.mjs +9 -1
- package/dist/packages/stack/src/plugins/comments/client/components/shared/page-wrapper.cjs +2 -1
- package/dist/packages/stack/src/plugins/comments/client/components/shared/page-wrapper.mjs +2 -1
- package/dist/packages/stack/src/plugins/comments/client/components/shared/pagination.cjs +2 -1
- package/dist/packages/stack/src/plugins/comments/client/components/shared/pagination.mjs +2 -1
- package/dist/packages/stack/src/plugins/comments/client/constants.cjs +5 -0
- package/dist/packages/stack/src/plugins/comments/client/constants.mjs +3 -0
- package/dist/packages/stack/src/plugins/comments/client/hooks/use-comments.cjs +323 -290
- package/dist/packages/stack/src/plugins/comments/client/hooks/use-comments.mjs +325 -292
- package/dist/packages/stack/src/plugins/comments/client/localization/comments-thread.cjs +1 -0
- package/dist/packages/stack/src/plugins/comments/client/localization/comments-thread.mjs +1 -0
- package/dist/packages/stack/src/plugins/comments/client/plugin.cjs +78 -46
- package/dist/packages/stack/src/plugins/comments/client/plugin.mjs +80 -48
- package/dist/packages/stack/src/plugins/form-builder/api/getters.cjs +9 -0
- package/dist/packages/stack/src/plugins/form-builder/api/getters.mjs +9 -1
- package/dist/packages/stack/src/plugins/form-builder/api/lifecycle-migrations.cjs +15 -0
- package/dist/packages/stack/src/plugins/form-builder/api/lifecycle-migrations.mjs +13 -0
- package/dist/packages/stack/src/plugins/form-builder/api/operations.cjs +1093 -0
- package/dist/packages/stack/src/plugins/form-builder/api/operations.mjs +1082 -0
- package/dist/packages/stack/src/plugins/form-builder/api/plugin.cjs +97 -466
- package/dist/packages/stack/src/plugins/form-builder/api/plugin.mjs +92 -468
- package/dist/packages/stack/src/plugins/form-builder/api/query-key-defs.cjs +5 -0
- package/dist/packages/stack/src/plugins/form-builder/api/query-key-defs.mjs +5 -0
- package/dist/packages/stack/src/plugins/form-builder/client/components/forms/form-renderer.cjs +41 -11
- package/dist/packages/stack/src/plugins/form-builder/client/components/forms/form-renderer.mjs +42 -12
- package/dist/packages/stack/src/plugins/form-builder/client/components/pages/404-page.cjs +8 -5
- package/dist/packages/stack/src/plugins/form-builder/client/components/pages/404-page.mjs +9 -6
- package/dist/packages/stack/src/plugins/form-builder/client/components/pages/form-builder-page.cjs +36 -3
- package/dist/packages/stack/src/plugins/form-builder/client/components/pages/form-builder-page.internal.cjs +32 -11
- package/dist/packages/stack/src/plugins/form-builder/client/components/pages/form-builder-page.internal.mjs +35 -14
- package/dist/packages/stack/src/plugins/form-builder/client/components/pages/form-builder-page.mjs +37 -4
- package/dist/packages/stack/src/plugins/form-builder/client/components/pages/form-list-page.cjs +6 -1
- package/dist/packages/stack/src/plugins/form-builder/client/components/pages/form-list-page.internal.cjs +34 -26
- package/dist/packages/stack/src/plugins/form-builder/client/components/pages/form-list-page.internal.mjs +34 -26
- package/dist/packages/stack/src/plugins/form-builder/client/components/pages/form-list-page.mjs +6 -1
- package/dist/packages/stack/src/plugins/form-builder/client/components/pages/submissions-page.cjs +24 -7
- package/dist/packages/stack/src/plugins/form-builder/client/components/pages/submissions-page.internal.cjs +72 -40
- package/dist/packages/stack/src/plugins/form-builder/client/components/pages/submissions-page.internal.mjs +76 -44
- package/dist/packages/stack/src/plugins/form-builder/client/components/pages/submissions-page.mjs +25 -8
- package/dist/packages/stack/src/plugins/form-builder/client/components/shared/page-wrapper.cjs +2 -1
- package/dist/packages/stack/src/plugins/form-builder/client/components/shared/page-wrapper.mjs +2 -1
- package/dist/packages/stack/src/plugins/form-builder/client/constants.cjs +5 -0
- package/dist/packages/stack/src/plugins/form-builder/client/constants.mjs +3 -0
- package/dist/packages/stack/src/plugins/form-builder/client/hooks/form-builder-hooks.cjs +29 -0
- package/dist/packages/stack/src/plugins/form-builder/client/hooks/form-builder-hooks.mjs +28 -1
- package/dist/packages/stack/src/plugins/form-builder/client/hooks/form-builder-resource.cjs +2 -1
- package/dist/packages/stack/src/plugins/form-builder/client/hooks/form-builder-resource.mjs +2 -1
- package/dist/packages/stack/src/plugins/form-builder/client/plugin.cjs +113 -86
- package/dist/packages/stack/src/plugins/form-builder/client/plugin.mjs +114 -87
- package/dist/packages/stack/src/plugins/form-builder/schemas.cjs +9 -3
- package/dist/packages/stack/src/plugins/form-builder/schemas.mjs +9 -3
- package/dist/packages/stack/src/plugins/kanban/api/getters.cjs +47 -36
- package/dist/packages/stack/src/plugins/kanban/api/getters.mjs +47 -37
- package/dist/packages/stack/src/plugins/kanban/api/lifecycle-migrations.cjs +23 -0
- package/dist/packages/stack/src/plugins/kanban/api/lifecycle-migrations.mjs +21 -0
- package/dist/packages/stack/src/plugins/kanban/api/operations.cjs +1552 -0
- package/dist/packages/stack/src/plugins/kanban/api/operations.mjs +1543 -0
- package/dist/packages/stack/src/plugins/kanban/api/plugin.cjs +64 -631
- package/dist/packages/stack/src/plugins/kanban/api/plugin.mjs +62 -634
- package/dist/packages/stack/src/plugins/kanban/api/serializers.cjs +21 -0
- package/dist/packages/stack/src/plugins/kanban/api/serializers.mjs +21 -1
- package/dist/packages/stack/src/plugins/kanban/client/components/forms/board-form.cjs +2 -1
- package/dist/packages/stack/src/plugins/kanban/client/components/forms/board-form.mjs +2 -1
- package/dist/packages/stack/src/plugins/kanban/client/components/forms/column-form.cjs +2 -1
- package/dist/packages/stack/src/plugins/kanban/client/components/forms/column-form.mjs +2 -1
- package/dist/packages/stack/src/plugins/kanban/client/components/forms/task-form.cjs +72 -54
- package/dist/packages/stack/src/plugins/kanban/client/components/forms/task-form.mjs +74 -56
- package/dist/packages/stack/src/plugins/kanban/client/components/pages/404-page.cjs +4 -6
- package/dist/packages/stack/src/plugins/kanban/client/components/pages/404-page.mjs +5 -7
- package/dist/packages/stack/src/plugins/kanban/client/components/pages/board-page.cjs +22 -6
- package/dist/packages/stack/src/plugins/kanban/client/components/pages/board-page.internal.cjs +82 -77
- package/dist/packages/stack/src/plugins/kanban/client/components/pages/board-page.internal.mjs +83 -78
- package/dist/packages/stack/src/plugins/kanban/client/components/pages/board-page.mjs +23 -7
- package/dist/packages/stack/src/plugins/kanban/client/components/pages/boards-list-page.cjs +2 -1
- package/dist/packages/stack/src/plugins/kanban/client/components/pages/boards-list-page.internal.cjs +34 -24
- package/dist/packages/stack/src/plugins/kanban/client/components/pages/boards-list-page.internal.mjs +35 -25
- package/dist/packages/stack/src/plugins/kanban/client/components/pages/boards-list-page.mjs +2 -1
- package/dist/packages/stack/src/plugins/kanban/client/components/pages/new-board-page.cjs +2 -1
- package/dist/packages/stack/src/plugins/kanban/client/components/pages/new-board-page.internal.cjs +6 -9
- package/dist/packages/stack/src/plugins/kanban/client/components/pages/new-board-page.internal.mjs +7 -10
- package/dist/packages/stack/src/plugins/kanban/client/components/pages/new-board-page.mjs +2 -1
- package/dist/packages/stack/src/plugins/kanban/client/components/shared/column-content.cjs +72 -45
- package/dist/packages/stack/src/plugins/kanban/client/components/shared/column-content.mjs +73 -46
- package/dist/packages/stack/src/plugins/kanban/client/components/shared/default-error.cjs +2 -1
- package/dist/packages/stack/src/plugins/kanban/client/components/shared/default-error.mjs +2 -1
- package/dist/packages/stack/src/plugins/kanban/client/components/shared/kanban-board.cjs +4 -4
- package/dist/packages/stack/src/plugins/kanban/client/components/shared/kanban-board.mjs +4 -4
- package/dist/packages/stack/src/plugins/kanban/client/components/shared/permission-access-any.cjs +23 -0
- package/dist/packages/stack/src/plugins/kanban/client/components/shared/permission-access-any.mjs +21 -0
- package/dist/packages/stack/src/plugins/kanban/client/components/shared/task-card.cjs +54 -17
- package/dist/packages/stack/src/plugins/kanban/client/components/shared/task-card.mjs +55 -18
- package/dist/packages/stack/src/plugins/kanban/client/components/shared/user-avatar.cjs +2 -1
- package/dist/packages/stack/src/plugins/kanban/client/components/shared/user-avatar.mjs +2 -1
- package/dist/packages/stack/src/plugins/kanban/client/constants.cjs +5 -0
- package/dist/packages/stack/src/plugins/kanban/client/constants.mjs +3 -0
- package/dist/packages/stack/src/plugins/kanban/client/hooks/kanban-hooks.cjs +38 -9
- package/dist/packages/stack/src/plugins/kanban/client/hooks/kanban-hooks.mjs +39 -10
- package/dist/packages/stack/src/plugins/kanban/client/hooks/kanban-resource.cjs +2 -1
- package/dist/packages/stack/src/plugins/kanban/client/hooks/kanban-resource.mjs +2 -1
- package/dist/packages/stack/src/plugins/kanban/client/plugin.cjs +177 -104
- package/dist/packages/stack/src/plugins/kanban/client/plugin.mjs +178 -105
- package/dist/packages/stack/src/plugins/kanban/schemas.cjs +32 -23
- package/dist/packages/stack/src/plugins/kanban/schemas.mjs +33 -21
- package/dist/packages/stack/src/plugins/media/api/lifecycle-migrations.cjs +9 -0
- package/dist/packages/stack/src/plugins/media/api/lifecycle-migrations.mjs +7 -0
- package/dist/packages/stack/src/plugins/media/api/mutations.cjs +7 -2
- package/dist/packages/stack/src/plugins/media/api/mutations.mjs +7 -2
- package/dist/packages/stack/src/plugins/media/api/operations.cjs +1299 -0
- package/dist/packages/stack/src/plugins/media/api/operations.mjs +1290 -0
- package/dist/packages/stack/src/plugins/media/api/plugin.cjs +131 -508
- package/dist/packages/stack/src/plugins/media/api/plugin.mjs +127 -510
- package/dist/packages/stack/src/plugins/media/api/query-key-defs.cjs +26 -2
- package/dist/packages/stack/src/plugins/media/api/query-key-defs.mjs +25 -3
- package/dist/packages/stack/src/plugins/media/api/serializers.cjs +4 -2
- package/dist/packages/stack/src/plugins/media/api/serializers.mjs +4 -2
- package/dist/packages/stack/src/plugins/media/asset-url.cjs +13 -0
- package/dist/packages/stack/src/plugins/media/asset-url.mjs +11 -0
- package/dist/packages/stack/src/plugins/media/client/components/media-picker/asset-card.cjs +10 -10
- package/dist/packages/stack/src/plugins/media/client/components/media-picker/asset-card.mjs +12 -12
- package/dist/packages/stack/src/plugins/media/client/components/media-picker/folder-tree.cjs +47 -27
- package/dist/packages/stack/src/plugins/media/client/components/media-picker/folder-tree.mjs +49 -29
- package/dist/packages/stack/src/plugins/media/client/components/media-picker/index.cjs +225 -180
- package/dist/packages/stack/src/plugins/media/client/components/media-picker/index.mjs +228 -183
- package/dist/packages/stack/src/plugins/media/client/components/media-picker/upload-tab.cjs +1 -8
- package/dist/packages/stack/src/plugins/media/client/components/media-picker/upload-tab.mjs +2 -9
- package/dist/packages/stack/src/plugins/media/client/components/media-picker/url-tab.cjs +0 -6
- package/dist/packages/stack/src/plugins/media/client/components/media-picker/url-tab.mjs +1 -7
- package/dist/packages/stack/src/plugins/media/client/components/pages/library-page.cjs +4 -2
- package/dist/packages/stack/src/plugins/media/client/components/pages/library-page.internal.cjs +92 -75
- package/dist/packages/stack/src/plugins/media/client/components/pages/library-page.internal.mjs +93 -76
- package/dist/packages/stack/src/plugins/media/client/components/pages/library-page.mjs +4 -2
- package/dist/packages/stack/src/plugins/media/client/components/upload-permission-check.cjs +52 -0
- package/dist/packages/stack/src/plugins/media/client/components/upload-permission-check.mjs +49 -0
- package/dist/packages/stack/src/plugins/media/client/constants.cjs +5 -0
- package/dist/packages/stack/src/plugins/media/client/constants.mjs +3 -0
- package/dist/packages/stack/src/plugins/media/client/hooks/media-resource.cjs +2 -1
- package/dist/packages/stack/src/plugins/media/client/hooks/media-resource.mjs +2 -1
- package/dist/packages/stack/src/plugins/media/client/hooks/use-media.cjs +214 -43
- package/dist/packages/stack/src/plugins/media/client/hooks/use-media.mjs +217 -46
- package/dist/packages/stack/src/plugins/media/client/plugin.cjs +122 -62
- package/dist/packages/stack/src/plugins/media/client/plugin.mjs +123 -63
- package/dist/packages/stack/src/plugins/media/client/upload.cjs +121 -52
- package/dist/packages/stack/src/plugins/media/client/upload.mjs +121 -53
- package/dist/packages/stack/src/plugins/media/db.cjs +8 -0
- package/dist/packages/stack/src/plugins/media/db.mjs +8 -0
- package/dist/packages/stack/src/plugins/open-api/api/generator.cjs +36 -5
- package/dist/packages/stack/src/plugins/open-api/api/generator.mjs +36 -5
- package/dist/packages/stack/src/plugins/open-api/api/plugin.cjs +22 -11
- package/dist/packages/stack/src/plugins/open-api/api/plugin.mjs +22 -11
- package/dist/packages/stack/src/plugins/route-docs/client/components/pages/docs-page.cjs +65 -34
- package/dist/packages/stack/src/plugins/route-docs/client/components/pages/docs-page.mjs +56 -25
- package/dist/packages/stack/src/plugins/route-docs/client/constants.cjs +5 -0
- package/dist/packages/stack/src/plugins/route-docs/client/constants.mjs +3 -0
- package/dist/packages/stack/src/plugins/route-docs/client/hooks.cjs +9 -8
- package/dist/packages/stack/src/plugins/route-docs/client/hooks.mjs +10 -9
- package/dist/packages/stack/src/plugins/route-docs/client/plugin.cjs +143 -75
- package/dist/packages/stack/src/plugins/route-docs/client/plugin.mjs +144 -74
- package/dist/packages/stack/src/plugins/route-docs/client/schema.cjs +26 -0
- package/dist/packages/stack/src/plugins/route-docs/client/schema.mjs +23 -0
- package/dist/packages/stack/src/plugins/route-docs/generator.cjs +7 -4
- package/dist/packages/stack/src/plugins/route-docs/generator.mjs +7 -4
- package/dist/packages/stack/src/plugins/ui-builder/client/components/page-renderer.cjs +41 -12
- package/dist/packages/stack/src/plugins/ui-builder/client/components/page-renderer.mjs +42 -13
- package/dist/packages/stack/src/plugins/ui-builder/client/components/pages/page-builder-page.cjs +37 -3
- package/dist/packages/stack/src/plugins/ui-builder/client/components/pages/page-builder-page.internal.cjs +32 -20
- package/dist/packages/stack/src/plugins/ui-builder/client/components/pages/page-builder-page.internal.mjs +34 -22
- package/dist/packages/stack/src/plugins/ui-builder/client/components/pages/page-builder-page.mjs +38 -4
- package/dist/packages/stack/src/plugins/ui-builder/client/components/pages/page-list-page.cjs +8 -2
- package/dist/packages/stack/src/plugins/ui-builder/client/components/pages/page-list-page.internal.cjs +37 -19
- package/dist/packages/stack/src/plugins/ui-builder/client/components/pages/page-list-page.internal.mjs +38 -20
- package/dist/packages/stack/src/plugins/ui-builder/client/components/pages/page-list-page.mjs +8 -2
- package/dist/packages/stack/src/plugins/ui-builder/client/components/shared/default-error.cjs +2 -1
- package/dist/packages/stack/src/plugins/ui-builder/client/components/shared/default-error.mjs +2 -1
- package/dist/packages/stack/src/plugins/ui-builder/client/components/shared/page-wrapper.cjs +2 -1
- package/dist/packages/stack/src/plugins/ui-builder/client/components/shared/page-wrapper.mjs +2 -1
- package/dist/packages/stack/src/plugins/ui-builder/client/constants.cjs +5 -0
- package/dist/packages/stack/src/plugins/ui-builder/client/constants.mjs +3 -0
- package/dist/packages/stack/src/plugins/ui-builder/client/hooks/ui-builder-resource.cjs +2 -1
- package/dist/packages/stack/src/plugins/ui-builder/client/hooks/ui-builder-resource.mjs +2 -1
- package/dist/packages/stack/src/plugins/ui-builder/client/overrides.cjs +8 -0
- package/dist/packages/stack/src/plugins/ui-builder/client/overrides.mjs +6 -0
- package/dist/packages/stack/src/plugins/ui-builder/client/plugin.cjs +93 -53
- package/dist/packages/stack/src/plugins/ui-builder/client/plugin.mjs +94 -54
- package/dist/packages/stack/src/plugins/utils.cjs +4 -12
- package/dist/packages/stack/src/plugins/utils.mjs +5 -12
- package/dist/packages/stack/src/react-router/layout.cjs +14 -0
- package/dist/packages/stack/src/react-router/layout.mjs +12 -0
- package/dist/packages/stack/src/react-router/page.cjs +10 -5
- package/dist/packages/stack/src/react-router/page.mjs +11 -6
- package/dist/packages/stack/src/shared/initial-identity.cjs +27 -0
- package/dist/packages/stack/src/shared/initial-identity.mjs +23 -0
- package/dist/packages/stack/src/tanstack/layout.cjs +10 -0
- package/dist/packages/stack/src/tanstack/layout.mjs +8 -0
- package/dist/packages/stack/src/tanstack/page.cjs +6 -2
- package/dist/packages/stack/src/tanstack/page.mjs +6 -2
- package/dist/plugins/ai-chat/api/index.cjs +10 -0
- package/dist/plugins/ai-chat/api/index.d.cts +31 -5
- package/dist/plugins/ai-chat/api/index.d.mts +31 -5
- package/dist/plugins/ai-chat/api/index.d.ts +31 -5
- package/dist/plugins/ai-chat/api/index.mjs +3 -1
- package/dist/plugins/ai-chat/client/components/index.d.cts +1 -1
- package/dist/plugins/ai-chat/client/components/index.d.mts +1 -1
- package/dist/plugins/ai-chat/client/components/index.d.ts +1 -1
- package/dist/plugins/ai-chat/client/hooks/index.cjs +1 -0
- package/dist/plugins/ai-chat/client/hooks/index.d.cts +14 -8
- package/dist/plugins/ai-chat/client/hooks/index.d.mts +14 -8
- package/dist/plugins/ai-chat/client/hooks/index.d.ts +14 -8
- package/dist/plugins/ai-chat/client/hooks/index.mjs +1 -1
- package/dist/plugins/ai-chat/client/index.d.cts +21 -25
- package/dist/plugins/ai-chat/client/index.d.mts +21 -25
- package/dist/plugins/ai-chat/client/index.d.ts +21 -25
- package/dist/plugins/ai-chat/permissions.cjs +90 -0
- package/dist/plugins/ai-chat/permissions.d.cts +84 -0
- package/dist/plugins/ai-chat/permissions.d.mts +84 -0
- package/dist/plugins/ai-chat/permissions.d.ts +84 -0
- package/dist/plugins/ai-chat/permissions.mjs +88 -0
- package/dist/plugins/ai-chat/query-keys.cjs +116 -18
- package/dist/plugins/ai-chat/query-keys.d.cts +6 -2
- package/dist/plugins/ai-chat/query-keys.d.mts +6 -2
- package/dist/plugins/ai-chat/query-keys.d.ts +6 -2
- package/dist/plugins/ai-chat/query-keys.mjs +116 -19
- package/dist/plugins/api/index.cjs +4 -0
- package/dist/plugins/api/index.d.cts +13 -18
- package/dist/plugins/api/index.d.mts +13 -18
- package/dist/plugins/api/index.d.ts +13 -18
- package/dist/plugins/api/index.mjs +1 -0
- package/dist/plugins/blog/api/index.cjs +9 -2
- package/dist/plugins/blog/api/index.d.cts +118 -4
- package/dist/plugins/blog/api/index.d.mts +118 -4
- package/dist/plugins/blog/api/index.d.ts +118 -4
- package/dist/plugins/blog/api/index.mjs +4 -1
- package/dist/plugins/blog/client/hooks/index.d.cts +2 -2
- package/dist/plugins/blog/client/hooks/index.d.mts +2 -2
- package/dist/plugins/blog/client/hooks/index.d.ts +2 -2
- package/dist/plugins/blog/client/index.d.cts +210 -226
- package/dist/plugins/blog/client/index.d.mts +210 -226
- package/dist/plugins/blog/client/index.d.ts +210 -226
- package/dist/plugins/blog/permissions.cjs +47 -0
- package/dist/plugins/blog/permissions.d.cts +49 -0
- package/dist/plugins/blog/permissions.d.mts +49 -0
- package/dist/plugins/blog/permissions.d.ts +49 -0
- package/dist/plugins/blog/permissions.mjs +45 -0
- package/dist/plugins/blog/query-keys.d.cts +7 -3
- package/dist/plugins/blog/query-keys.d.mts +7 -3
- package/dist/plugins/blog/query-keys.d.ts +7 -3
- package/dist/plugins/client/hooks/index.d.cts +2 -2
- package/dist/plugins/client/hooks/index.d.mts +2 -2
- package/dist/plugins/client/hooks/index.d.ts +2 -2
- package/dist/plugins/client/index.cjs +3 -0
- package/dist/plugins/client/index.d.cts +30 -10
- package/dist/plugins/client/index.d.mts +30 -10
- package/dist/plugins/client/index.d.ts +30 -10
- package/dist/plugins/client/index.mjs +3 -0
- package/dist/plugins/cms/api/index.cjs +7 -0
- package/dist/plugins/cms/api/index.d.cts +173 -4
- package/dist/plugins/cms/api/index.d.mts +173 -4
- package/dist/plugins/cms/api/index.d.ts +173 -4
- package/dist/plugins/cms/api/index.mjs +2 -0
- package/dist/plugins/cms/client/hooks/index.d.cts +1 -1
- package/dist/plugins/cms/client/hooks/index.d.mts +1 -1
- package/dist/plugins/cms/client/hooks/index.d.ts +1 -1
- package/dist/plugins/cms/client/index.d.cts +188 -184
- package/dist/plugins/cms/client/index.d.mts +188 -184
- package/dist/plugins/cms/client/index.d.ts +188 -184
- package/dist/plugins/cms/permissions.cjs +46 -0
- package/dist/plugins/cms/permissions.d.cts +42 -0
- package/dist/plugins/cms/permissions.d.mts +42 -0
- package/dist/plugins/cms/permissions.d.ts +42 -0
- package/dist/plugins/cms/permissions.mjs +44 -0
- package/dist/plugins/cms/query-keys.d.cts +4 -4
- package/dist/plugins/cms/query-keys.d.mts +4 -4
- package/dist/plugins/cms/query-keys.d.ts +4 -4
- package/dist/plugins/comments/api/index.cjs +10 -0
- package/dist/plugins/comments/api/index.d.cts +54 -18
- package/dist/plugins/comments/api/index.d.mts +54 -18
- package/dist/plugins/comments/api/index.d.ts +54 -18
- package/dist/plugins/comments/api/index.mjs +3 -0
- package/dist/plugins/comments/client/components/index.d.cts +2 -2
- package/dist/plugins/comments/client/components/index.d.mts +2 -2
- package/dist/plugins/comments/client/components/index.d.ts +2 -2
- package/dist/plugins/comments/client/hooks/index.d.cts +12 -18
- package/dist/plugins/comments/client/hooks/index.d.mts +12 -18
- package/dist/plugins/comments/client/hooks/index.d.ts +12 -18
- package/dist/plugins/comments/client/index.d.cts +96 -114
- package/dist/plugins/comments/client/index.d.mts +96 -114
- package/dist/plugins/comments/client/index.d.ts +96 -114
- package/dist/plugins/comments/permissions.cjs +70 -0
- package/dist/plugins/comments/permissions.d.cts +76 -0
- package/dist/plugins/comments/permissions.d.mts +76 -0
- package/dist/plugins/comments/permissions.d.ts +76 -0
- package/dist/plugins/comments/permissions.mjs +68 -0
- package/dist/plugins/comments/query-keys.cjs +1 -1
- package/dist/plugins/comments/query-keys.d.cts +16 -19
- package/dist/plugins/comments/query-keys.d.mts +16 -19
- package/dist/plugins/comments/query-keys.d.ts +16 -19
- package/dist/plugins/comments/query-keys.mjs +1 -1
- package/dist/plugins/form-builder/api/index.cjs +8 -0
- package/dist/plugins/form-builder/api/index.d.cts +115 -4
- package/dist/plugins/form-builder/api/index.d.mts +115 -4
- package/dist/plugins/form-builder/api/index.d.ts +115 -4
- package/dist/plugins/form-builder/api/index.mjs +4 -1
- package/dist/plugins/form-builder/client/components/index.d.cts +6 -2
- package/dist/plugins/form-builder/client/components/index.d.mts +6 -2
- package/dist/plugins/form-builder/client/components/index.d.ts +6 -2
- package/dist/plugins/form-builder/client/hooks/index.cjs +2 -0
- package/dist/plugins/form-builder/client/hooks/index.d.cts +34 -8
- package/dist/plugins/form-builder/client/hooks/index.d.mts +34 -8
- package/dist/plugins/form-builder/client/hooks/index.d.ts +34 -8
- package/dist/plugins/form-builder/client/hooks/index.mjs +1 -1
- package/dist/plugins/form-builder/client/index.d.cts +153 -174
- package/dist/plugins/form-builder/client/index.d.mts +153 -174
- package/dist/plugins/form-builder/client/index.d.ts +153 -174
- package/dist/plugins/form-builder/permissions.cjs +95 -0
- package/dist/plugins/form-builder/permissions.d.cts +94 -0
- package/dist/plugins/form-builder/permissions.d.mts +94 -0
- package/dist/plugins/form-builder/permissions.d.ts +94 -0
- package/dist/plugins/form-builder/permissions.mjs +93 -0
- package/dist/plugins/form-builder/query-keys.cjs +11 -4
- package/dist/plugins/form-builder/query-keys.d.cts +38 -12
- package/dist/plugins/form-builder/query-keys.d.mts +38 -12
- package/dist/plugins/form-builder/query-keys.d.ts +38 -12
- package/dist/plugins/form-builder/query-keys.mjs +11 -4
- package/dist/plugins/kanban/api/index.cjs +9 -0
- package/dist/plugins/kanban/api/index.d.cts +137 -5
- package/dist/plugins/kanban/api/index.d.mts +137 -5
- package/dist/plugins/kanban/api/index.d.ts +137 -5
- package/dist/plugins/kanban/api/index.mjs +5 -2
- package/dist/plugins/kanban/client/components/index.d.cts +18 -10
- package/dist/plugins/kanban/client/components/index.d.mts +18 -10
- package/dist/plugins/kanban/client/components/index.d.ts +18 -10
- package/dist/plugins/kanban/client/hooks/index.d.cts +15 -7
- package/dist/plugins/kanban/client/hooks/index.d.mts +15 -7
- package/dist/plugins/kanban/client/hooks/index.d.ts +15 -7
- package/dist/plugins/kanban/client/index.d.cts +32 -28
- package/dist/plugins/kanban/client/index.d.mts +32 -28
- package/dist/plugins/kanban/client/index.d.ts +32 -28
- package/dist/plugins/kanban/permissions.cjs +101 -0
- package/dist/plugins/kanban/permissions.d.cts +109 -0
- package/dist/plugins/kanban/permissions.d.mts +109 -0
- package/dist/plugins/kanban/permissions.d.ts +109 -0
- package/dist/plugins/kanban/permissions.mjs +99 -0
- package/dist/plugins/kanban/query-keys.cjs +14 -15
- package/dist/plugins/kanban/query-keys.d.cts +63 -42
- package/dist/plugins/kanban/query-keys.d.mts +63 -42
- package/dist/plugins/kanban/query-keys.d.ts +63 -42
- package/dist/plugins/kanban/query-keys.mjs +14 -15
- package/dist/plugins/media/api/adapters/local.d.cts +1 -1
- package/dist/plugins/media/api/adapters/local.d.mts +1 -1
- package/dist/plugins/media/api/adapters/local.d.ts +1 -1
- package/dist/plugins/media/api/adapters/s3.d.cts +1 -1
- package/dist/plugins/media/api/adapters/s3.d.mts +1 -1
- package/dist/plugins/media/api/adapters/s3.d.ts +1 -1
- package/dist/plugins/media/api/adapters/vercel-blob.cjs +46 -0
- package/dist/plugins/media/api/adapters/vercel-blob.d.cts +6 -9
- package/dist/plugins/media/api/adapters/vercel-blob.d.mts +6 -9
- package/dist/plugins/media/api/adapters/vercel-blob.d.ts +6 -9
- package/dist/plugins/media/api/adapters/vercel-blob.mjs +46 -0
- package/dist/plugins/media/api/index.cjs +10 -0
- package/dist/plugins/media/api/index.d.cts +93 -6
- package/dist/plugins/media/api/index.d.mts +93 -6
- package/dist/plugins/media/api/index.d.ts +93 -6
- package/dist/plugins/media/api/index.mjs +2 -0
- package/dist/plugins/media/client/components/index.d.cts +1 -1
- package/dist/plugins/media/client/components/index.d.mts +1 -1
- package/dist/plugins/media/client/components/index.d.ts +1 -1
- package/dist/plugins/media/client/hooks/index.d.cts +20 -10
- package/dist/plugins/media/client/hooks/index.d.mts +20 -10
- package/dist/plugins/media/client/hooks/index.d.ts +20 -10
- package/dist/plugins/media/client/index.cjs +1 -0
- package/dist/plugins/media/client/index.d.cts +112 -100
- package/dist/plugins/media/client/index.d.mts +112 -100
- package/dist/plugins/media/client/index.d.ts +112 -100
- package/dist/plugins/media/client/index.mjs +1 -1
- package/dist/plugins/media/permissions.cjs +63 -0
- package/dist/plugins/media/permissions.d.cts +64 -0
- package/dist/plugins/media/permissions.d.mts +64 -0
- package/dist/plugins/media/permissions.d.ts +64 -0
- package/dist/plugins/media/permissions.mjs +61 -0
- package/dist/plugins/media/query-keys.cjs +29 -17
- package/dist/plugins/media/query-keys.d.cts +24 -31
- package/dist/plugins/media/query-keys.d.mts +24 -31
- package/dist/plugins/media/query-keys.d.ts +24 -31
- package/dist/plugins/media/query-keys.mjs +30 -18
- package/dist/plugins/open-api/api/index.d.cts +9 -4
- package/dist/plugins/open-api/api/index.d.mts +9 -4
- package/dist/plugins/open-api/api/index.d.ts +9 -4
- package/dist/plugins/route-docs/client/index.cjs +2 -2
- package/dist/plugins/route-docs/client/index.d.cts +54 -53
- package/dist/plugins/route-docs/client/index.d.mts +54 -53
- package/dist/plugins/route-docs/client/index.d.ts +54 -53
- package/dist/plugins/route-docs/client/index.mjs +2 -1
- package/dist/plugins/ui-builder/client/components/index.d.cts +8 -5
- package/dist/plugins/ui-builder/client/components/index.d.mts +8 -5
- package/dist/plugins/ui-builder/client/components/index.d.ts +8 -5
- package/dist/plugins/ui-builder/client/hooks/index.d.cts +5 -5
- package/dist/plugins/ui-builder/client/hooks/index.d.mts +5 -5
- package/dist/plugins/ui-builder/client/hooks/index.d.ts +5 -5
- package/dist/plugins/ui-builder/client/index.d.cts +151 -199
- package/dist/plugins/ui-builder/client/index.d.mts +151 -199
- package/dist/plugins/ui-builder/client/index.d.ts +151 -199
- package/dist/plugins/ui-builder/index.d.cts +11 -8
- package/dist/plugins/ui-builder/index.d.mts +11 -8
- package/dist/plugins/ui-builder/index.d.ts +11 -8
- package/dist/plugins/ui-builder/query-keys.d.cts +6 -6
- package/dist/plugins/ui-builder/query-keys.d.mts +6 -6
- package/dist/plugins/ui-builder/query-keys.d.ts +6 -6
- package/dist/react-router/index.cjs +2 -0
- package/dist/react-router/index.d.cts +29 -5
- package/dist/react-router/index.d.mts +29 -5
- package/dist/react-router/index.d.ts +29 -5
- package/dist/react-router/index.mjs +1 -0
- package/dist/shared/stack.0O62uXqP.d.ts +613 -0
- package/dist/shared/stack.0y6iTP03.d.ts +533 -0
- package/dist/shared/{stack.CbZenbej.d.cts → stack.1ukVJym7.d.cts} +3 -4
- package/dist/shared/{stack.CbZenbej.d.mts → stack.1ukVJym7.d.mts} +3 -4
- package/dist/shared/{stack.CbZenbej.d.ts → stack.1ukVJym7.d.ts} +3 -4
- package/dist/shared/stack.3Sr6qRtT.d.ts +507 -0
- package/dist/shared/{stack.9BAOaSqE.d.cts → stack.5_zzCejP.d.cts} +16 -14
- package/dist/shared/{stack.9BAOaSqE.d.mts → stack.5_zzCejP.d.mts} +16 -14
- package/dist/shared/{stack.9BAOaSqE.d.ts → stack.5_zzCejP.d.ts} +16 -14
- package/dist/shared/{stack.oVIdV7XS.d.mts → stack.94kN3pEK.d.mts} +4 -4
- package/dist/shared/stack.B1UrNoVl.d.mts +533 -0
- package/dist/shared/{stack.B2xi4jj7.d.cts → stack.B1srlBud.d.mts} +2 -2
- package/dist/shared/stack.B3_aDcYL.d.cts +281 -0
- package/dist/shared/stack.B3_aDcYL.d.mts +281 -0
- package/dist/shared/stack.B3_aDcYL.d.ts +281 -0
- package/dist/shared/stack.B5yPgHsp.d.mts +507 -0
- package/dist/shared/stack.BFP_9pRX.d.cts +707 -0
- package/dist/shared/stack.BJx1ZXrN.d.cts +118 -0
- package/dist/shared/{stack.7b3vsM8_.d.ts → stack.BK9Z2dcL.d.ts} +2 -2
- package/dist/shared/stack.BMHoxAn7.d.mts +707 -0
- package/dist/shared/stack.BMlTZnZp.d.ts +764 -0
- package/dist/shared/stack.BMmvEBH_.d.ts +118 -0
- package/dist/shared/stack.BPLykw4s.d.ts +436 -0
- package/dist/shared/{stack.aqVZ6PEW.d.mts → stack.BRvqQWGt.d.cts} +40 -1
- package/dist/shared/{stack.aqVZ6PEW.d.cts → stack.BRvqQWGt.d.mts} +40 -1
- package/dist/shared/{stack.aqVZ6PEW.d.ts → stack.BRvqQWGt.d.ts} +40 -1
- package/dist/shared/stack.BSACE667.d.cts +23 -0
- package/dist/shared/{stack.DzwZw-Ck.d.cts → stack.BTStHVTy.d.cts} +4 -4
- package/dist/shared/stack.BV0uNV4f.d.cts +764 -0
- package/dist/shared/stack.BYMentwB.d.cts +47 -0
- package/dist/shared/stack.BYMentwB.d.mts +47 -0
- package/dist/shared/stack.BYMentwB.d.ts +47 -0
- package/dist/shared/stack.BggTHKlo.d.mts +1184 -0
- package/dist/shared/stack.Bt8hfw9o.d.ts +707 -0
- package/dist/shared/{stack.D7bewlgt.d.mts → stack.Bu2IPOLi.d.cts} +1 -0
- package/dist/shared/{stack.D7bewlgt.d.ts → stack.Bu2IPOLi.d.mts} +1 -0
- package/dist/shared/{stack.D7bewlgt.d.cts → stack.Bu2IPOLi.d.ts} +1 -0
- package/dist/shared/stack.BzWGB5MG.d.cts +436 -0
- package/dist/shared/stack.C3bU9w6L.d.ts +351 -0
- package/dist/shared/stack.C4oVW2qK.d.cts +507 -0
- package/dist/shared/stack.CGmh-Lpe.d.ts +408 -0
- package/dist/shared/stack.CKXzdGiJ.d.cts +3 -0
- package/dist/shared/stack.CKXzdGiJ.d.mts +3 -0
- package/dist/shared/stack.CKXzdGiJ.d.ts +3 -0
- package/dist/shared/{stack.C3GBG8in.d.ts → stack.COrJrztD.d.cts} +1 -1
- package/dist/shared/{stack.C3GBG8in.d.cts → stack.COrJrztD.d.mts} +1 -1
- package/dist/shared/{stack.C3GBG8in.d.mts → stack.COrJrztD.d.ts} +1 -1
- package/dist/shared/stack.Cbd7sD5M.d.mts +118 -0
- package/dist/shared/{stack.B9NtGpAR.d.ts → stack.CcjENrr4.d.cts} +1 -5
- package/dist/shared/stack.CfK5NKlK.d.mts +613 -0
- package/dist/shared/stack.Cmg7lzzy.d.cts +44 -0
- package/dist/shared/stack.Cmg7lzzy.d.mts +44 -0
- package/dist/shared/stack.Cmg7lzzy.d.ts +44 -0
- package/dist/shared/stack.CpE1mS3p.d.ts +331 -0
- package/dist/shared/stack.CskhFw3z.d.mts +23 -0
- package/dist/shared/stack.CtrnoQgH.d.cts +1184 -0
- package/dist/shared/stack.CvlC5kqe.d.cts +331 -0
- package/dist/shared/stack.CxKc9evq.d.ts +23 -0
- package/dist/shared/{stack.lkebw2nj.d.mts → stack.DVEjWKCT.d.cts} +19 -5
- package/dist/shared/{stack.lkebw2nj.d.ts → stack.DVEjWKCT.d.mts} +19 -5
- package/dist/shared/{stack.lkebw2nj.d.cts → stack.DVEjWKCT.d.ts} +19 -5
- package/dist/shared/{stack.Cp_6mO5s.d.mts → stack.DbbvHbhn.d.mts} +1 -5
- package/dist/shared/{stack.DseBJmGF.d.ts → stack.DfrRYOIl.d.ts} +4 -4
- package/dist/shared/stack.DiuRuzIs.d.cts +613 -0
- package/dist/shared/{stack.BMlLOMED.d.cts → stack.DjGixVx3.d.cts} +6 -2
- package/dist/shared/{stack.BMlLOMED.d.mts → stack.DjGixVx3.d.mts} +6 -2
- package/dist/shared/{stack.BMlLOMED.d.ts → stack.DjGixVx3.d.ts} +6 -2
- package/dist/shared/stack.DlCycSM-.d.mts +331 -0
- package/dist/shared/{stack.DycBcTeg.d.mts → stack.DmpPDPxA.d.cts} +2 -2
- package/dist/shared/stack.Doy2_wgl.d.mts +408 -0
- package/dist/shared/stack.DxHPKr2R.d.mts +436 -0
- package/dist/shared/stack.Mak7pzIV.d.cts +533 -0
- package/dist/shared/stack.OYT8WU4n.d.mts +351 -0
- package/dist/shared/{stack.CPsYC2-Z.d.cts → stack.fdi94T4S.d.cts} +7 -7
- package/dist/shared/{stack.CPsYC2-Z.d.mts → stack.fdi94T4S.d.mts} +7 -7
- package/dist/shared/{stack.CPsYC2-Z.d.ts → stack.fdi94T4S.d.ts} +7 -7
- package/dist/shared/{stack.Dlgtumru.d.cts → stack.kaCV7vEL.d.ts} +1 -5
- package/dist/shared/stack.lPKwd_v0.d.ts +1184 -0
- package/dist/shared/stack.lsbdKRj7.d.mts +764 -0
- package/dist/shared/stack.v2O65JqF.d.cts +351 -0
- package/dist/shared/stack.zch70Loj.d.cts +408 -0
- package/dist/tanstack/index.cjs +2 -0
- package/dist/tanstack/index.d.cts +27 -5
- package/dist/tanstack/index.d.mts +27 -5
- package/dist/tanstack/index.d.ts +27 -5
- package/dist/tanstack/index.mjs +1 -0
- package/dist/tanstack/server.cjs +9 -0
- package/dist/tanstack/server.d.cts +15 -0
- package/dist/tanstack/server.d.mts +15 -0
- package/dist/tanstack/server.d.ts +15 -0
- package/dist/tanstack/server.mjs +7 -0
- package/package.json +198 -3
- package/src/__tests__/ai-chat-client-runtime.test.ts +481 -0
- package/src/__tests__/ai-chat-client-runtime.typecheck.tsx +130 -0
- package/src/__tests__/ai-chat-lifecycle-migrations.typecheck.ts +61 -0
- package/src/__tests__/ai-chat-query-keys.test.ts +125 -22
- package/src/__tests__/auth-provider.test.tsx +41 -314
- package/src/__tests__/auth-test-utils.ts +24 -0
- package/src/__tests__/authorization-client.test.tsx +767 -0
- package/src/__tests__/authorization-contraction.test.ts +182 -0
- package/src/__tests__/authorization-remote.test.ts +222 -0
- package/src/__tests__/authorization-server.test.ts +90 -0
- package/src/__tests__/authorization.test.ts +652 -0
- package/src/__tests__/authorization.typecheck.ts +671 -0
- package/src/__tests__/backend-plugin-factories.test.ts +54 -0
- package/src/__tests__/backend-plugin-factories.typecheck.ts +133 -0
- package/src/__tests__/client-plugin-ssr-loaders.test.ts +304 -138
- package/src/__tests__/client-runtime.test.ts +1021 -0
- package/src/__tests__/client-runtime.typecheck.ts +107 -0
- package/src/__tests__/client-stack-test-utils.ts +36 -0
- package/src/__tests__/content-lifecycle-migrations.typecheck.ts +122 -0
- package/src/__tests__/endpoint-inventory.test.ts +768 -0
- package/src/__tests__/form-builder-query-keys.test.ts +32 -0
- package/src/__tests__/i18n-provider.test.tsx +4 -3
- package/src/__tests__/initial-identity-hydration.test.tsx +156 -0
- package/src/__tests__/initial-identity-layouts.test.tsx +204 -0
- package/src/__tests__/kanban-query-keys.test.ts +189 -2
- package/src/__tests__/managed-origin-hydration.browser.test.tsx +163 -0
- package/src/__tests__/media-query-keys.test.ts +91 -17
- package/src/__tests__/notify-provider.test.tsx +3 -2
- package/src/__tests__/package-metadata.test.ts +294 -0
- package/src/__tests__/page-component-overrides.test.tsx +3 -4
- package/src/__tests__/plugin-registration.test.tsx +183 -0
- package/src/__tests__/plugin-registration.typecheck.tsx +139 -0
- package/src/__tests__/plugins.test.tsx +72 -42
- package/src/__tests__/resource-factory.test.tsx +79 -2
- package/src/__tests__/resource-use-form.test.tsx +2 -2
- package/src/__tests__/resource-use-select.test.tsx +2 -4
- package/src/__tests__/router-overrides.test.tsx +20 -8
- package/src/__tests__/sitemap.test.ts +38 -22
- package/src/__tests__/stack-api.test.ts +39 -34
- package/src/__tests__/stack-auth.test.ts +44 -140
- package/src/__tests__/stack-constructors.test.ts +96 -0
- package/src/__tests__/stack-constructors.typecheck.ts +115 -0
- package/src/__tests__/use-list-state.test.tsx +7 -6
- package/src/__tests__/workflow-lifecycle-migrations.typecheck.ts +150 -0
- package/src/api/index.ts +204 -99
- package/src/authorization/client.tsx +310 -0
- package/src/authorization/index.ts +873 -0
- package/src/authorization/json.ts +70 -0
- package/src/authorization/remote.ts +234 -0
- package/src/authorization/server.ts +171 -0
- package/src/client/__tests__/server-origin.test.ts +119 -0
- package/src/client/components/compose.tsx +126 -18
- package/src/client/hooks/index.ts +12 -0
- package/src/client/hooks/use-list-state.ts +7 -13
- package/src/client/index.ts +105 -50
- package/src/client/runtime.ts +414 -0
- package/src/client/server.ts +174 -0
- package/src/context/auth.tsx +205 -154
- package/src/context/index.ts +10 -4
- package/src/context/provider.tsx +96 -57
- package/src/context/router.tsx +7 -0
- package/src/context/site-navigation.ts +52 -0
- package/src/next/layout.tsx +81 -0
- package/src/next/page.tsx +16 -3
- package/src/next/router.tsx +1 -1
- package/src/next/server.ts +5 -0
- package/src/plugin-registration.ts +70 -0
- package/src/plugins/ai-chat/__tests__/authorization.test.ts +2051 -0
- package/src/plugins/ai-chat/__tests__/chat-hooks.test.tsx +147 -0
- package/src/plugins/ai-chat/__tests__/chat-input-authorization.test.tsx +188 -0
- package/src/plugins/ai-chat/__tests__/client-sweep.test.tsx +1506 -34
- package/src/plugins/ai-chat/__tests__/hooks.test.tsx +131 -23
- package/src/plugins/ai-chat/api/getters.ts +2 -2
- package/src/plugins/ai-chat/api/index.ts +6 -1
- package/src/plugins/ai-chat/api/lifecycle-migrations.ts +20 -0
- package/src/plugins/ai-chat/api/operations.ts +1865 -0
- package/src/plugins/ai-chat/api/plugin.ts +78 -1168
- package/src/plugins/ai-chat/api/serializers.ts +30 -0
- package/src/plugins/ai-chat/client/components/chat-input.tsx +228 -129
- package/src/plugins/ai-chat/client/components/chat-interface.tsx +776 -183
- package/src/plugins/ai-chat/client/components/chat-layout.tsx +6 -7
- package/src/plugins/ai-chat/client/components/chat-message.tsx +1 -1
- package/src/plugins/ai-chat/client/components/chat-sidebar.tsx +57 -37
- package/src/plugins/ai-chat/client/components/pages/404-page.tsx +1 -1
- package/src/plugins/ai-chat/client/components/pages/chat-page.internal.tsx +5 -3
- package/src/plugins/ai-chat/client/components/pages/chat-page.tsx +56 -15
- package/src/plugins/ai-chat/client/components/shared/default-error.tsx +1 -1
- package/src/plugins/ai-chat/client/components/tool-call-display.tsx +1 -1
- package/src/plugins/ai-chat/client/hooks/ai-chat-resource.ts +1 -1
- package/src/plugins/ai-chat/client/hooks/chat-hooks.tsx +253 -20
- package/src/plugins/ai-chat/client/index.ts +1 -0
- package/src/plugins/ai-chat/client/navigation.ts +11 -0
- package/src/plugins/ai-chat/client/overrides.ts +47 -11
- package/src/plugins/ai-chat/client/plugin.tsx +208 -111
- package/src/plugins/ai-chat/permissions.ts +89 -0
- package/src/plugins/ai-chat/query-keys.ts +183 -25
- package/src/plugins/ai-chat/types.ts +7 -5
- package/src/plugins/api/create-endpoint.ts +40 -22
- package/src/plugins/api/endpoint-inventory.ts +206 -0
- package/src/plugins/api/index.ts +38 -4
- package/src/plugins/api/operation.ts +600 -0
- package/src/plugins/blog/__tests__/authorization.test.ts +1366 -0
- package/src/plugins/blog/__tests__/client-runtime.browser.test.tsx +257 -0
- package/src/plugins/blog/__tests__/client-runtime.test.ts +283 -0
- package/src/plugins/blog/__tests__/client-runtime.typecheck.tsx +98 -0
- package/src/plugins/blog/__tests__/client-sweep.test.tsx +212 -37
- package/src/plugins/blog/api/getters.ts +3 -3
- package/src/plugins/blog/api/index.ts +2 -0
- package/src/plugins/blog/api/lifecycle-migrations.ts +19 -0
- package/src/plugins/blog/api/mutations.ts +26 -5
- package/src/plugins/blog/api/operations.ts +727 -0
- package/src/plugins/blog/api/plugin.ts +99 -504
- package/src/plugins/blog/client/components/forms/image-field.tsx +2 -1
- package/src/plugins/blog/client/components/forms/markdown-editor-with-overrides.tsx +2 -1
- package/src/plugins/blog/client/components/forms/post-forms.tsx +61 -33
- package/src/plugins/blog/client/components/pages/404-page.tsx +3 -1
- package/src/plugins/blog/client/components/pages/edit-post-page.internal.tsx +2 -1
- package/src/plugins/blog/client/components/pages/edit-post-page.tsx +28 -5
- package/src/plugins/blog/client/components/pages/home-page.internal.tsx +2 -1
- package/src/plugins/blog/client/components/pages/home-page.tsx +7 -4
- package/src/plugins/blog/client/components/pages/new-post-page.internal.tsx +2 -1
- package/src/plugins/blog/client/components/pages/new-post-page.tsx +5 -2
- package/src/plugins/blog/client/components/pages/post-page.internal.tsx +2 -1
- package/src/plugins/blog/client/components/pages/post-page.tsx +38 -4
- package/src/plugins/blog/client/components/pages/tag-page.internal.tsx +2 -1
- package/src/plugins/blog/client/components/pages/tag-page.tsx +5 -1
- package/src/plugins/blog/client/components/shared/collapsible-tag-list.tsx +2 -1
- package/src/plugins/blog/client/components/shared/default-error.tsx +3 -1
- package/src/plugins/blog/client/components/shared/on-this-page.tsx +5 -2
- package/src/plugins/blog/client/components/shared/page-wrapper.tsx +2 -1
- package/src/plugins/blog/client/components/shared/post-card.tsx +2 -1
- package/src/plugins/blog/client/components/shared/posts-list.tsx +2 -1
- package/src/plugins/blog/client/components/shared/recent-posts-carousel.tsx +2 -1
- package/src/plugins/blog/client/components/shared/search-input.tsx +1 -1
- package/src/plugins/blog/client/constants.ts +2 -0
- package/src/plugins/blog/client/hooks/blog-resource.ts +2 -1
- package/src/plugins/blog/client/overrides.ts +1 -6
- package/src/plugins/blog/client/plugin.tsx +145 -129
- package/src/plugins/blog/permissions.ts +44 -0
- package/src/plugins/client/index.ts +108 -7
- package/src/plugins/client/resource/hooks.tsx +41 -18
- package/src/plugins/client/resource/internal.ts +77 -61
- package/src/plugins/client/resource/queries.ts +3 -4
- package/src/plugins/client/resource/use-form.ts +23 -20
- package/src/plugins/client/resource/use-select.ts +40 -34
- package/src/plugins/cms/__tests__/authorization.test.ts +2188 -0
- package/src/plugins/cms/__tests__/client-runtime.browser.test.tsx +245 -0
- package/src/plugins/cms/__tests__/client-runtime.test.ts +320 -0
- package/src/plugins/cms/__tests__/client-runtime.typecheck.tsx +208 -0
- package/src/plugins/cms/__tests__/client-sweep.test.tsx +202 -50
- package/src/plugins/cms/api/getters.ts +4 -4
- package/src/plugins/cms/api/index.ts +20 -0
- package/src/plugins/cms/api/lifecycle-migrations.ts +15 -0
- package/src/plugins/cms/api/mutations.ts +2 -2
- package/src/plugins/cms/api/operations.ts +2218 -0
- package/src/plugins/cms/api/plugin.ts +169 -1047
- package/src/plugins/cms/api/relations.ts +3 -1
- package/src/plugins/cms/client/components/forms/content-form.tsx +2 -1
- package/src/plugins/cms/client/components/forms/file-upload.tsx +3 -1
- package/src/plugins/cms/client/components/forms/relation-field.tsx +3 -1
- package/src/plugins/cms/client/components/inverse-relations-panel.tsx +29 -17
- package/src/plugins/cms/client/components/pages/404-page.tsx +7 -5
- package/src/plugins/cms/client/components/pages/content-editor-page.internal.tsx +19 -10
- package/src/plugins/cms/client/components/pages/content-editor-page.tsx +50 -12
- package/src/plugins/cms/client/components/pages/content-list-page.internal.tsx +48 -34
- package/src/plugins/cms/client/components/pages/content-list-page.tsx +8 -1
- package/src/plugins/cms/client/components/pages/dashboard-page.internal.tsx +15 -8
- package/src/plugins/cms/client/components/pages/dashboard-page.tsx +5 -1
- package/src/plugins/cms/client/components/shared/page-wrapper.tsx +2 -1
- package/src/plugins/cms/client/constants.ts +2 -0
- package/src/plugins/cms/client/hooks/cms-resource.ts +2 -1
- package/src/plugins/cms/client/index.ts +6 -1
- package/src/plugins/cms/client/overrides.ts +46 -6
- package/src/plugins/cms/client/plugin.tsx +135 -80
- package/src/plugins/cms/permissions.ts +43 -0
- package/src/plugins/cms/types.ts +174 -46
- package/src/plugins/comments/__tests__/authorization.test.ts +1570 -0
- package/src/plugins/comments/__tests__/client-runtime.browser.test.tsx +207 -0
- package/src/plugins/comments/__tests__/client-runtime.test.ts +224 -0
- package/src/plugins/comments/__tests__/client-runtime.typecheck.tsx +85 -0
- package/src/plugins/comments/__tests__/client-sweep.test.tsx +445 -82
- package/src/plugins/comments/api/getters.ts +19 -3
- package/src/plugins/comments/api/index.ts +2 -6
- package/src/plugins/comments/api/lifecycle-migrations.ts +20 -0
- package/src/plugins/comments/api/mutations.ts +261 -88
- package/src/plugins/comments/api/operations.ts +742 -0
- package/src/plugins/comments/api/plugin.ts +76 -548
- package/src/plugins/comments/client/components/comment-count.tsx +38 -5
- package/src/plugins/comments/client/components/comment-thread.tsx +148 -110
- package/src/plugins/comments/client/components/pages/moderation-page.internal.tsx +144 -78
- package/src/plugins/comments/client/components/pages/moderation-page.tsx +18 -2
- package/src/plugins/comments/client/components/pages/moderation-state.ts +13 -0
- package/src/plugins/comments/client/components/pages/my-comments-page.internal.tsx +38 -30
- package/src/plugins/comments/client/components/pages/my-comments-page.tsx +3 -1
- package/src/plugins/comments/client/components/pages/resource-comments-page.internal.tsx +29 -30
- package/src/plugins/comments/client/components/pages/resource-comments-page.tsx +10 -1
- package/src/plugins/comments/client/components/shared/page-wrapper.tsx +2 -1
- package/src/plugins/comments/client/components/shared/pagination.tsx +2 -1
- package/src/plugins/comments/client/constants.ts +2 -0
- package/src/plugins/comments/client/hooks/use-comments.tsx +430 -421
- package/src/plugins/comments/client/localization/comments-thread.ts +1 -0
- package/src/plugins/comments/client/plugin.tsx +113 -72
- package/src/plugins/comments/permissions.ts +68 -0
- package/src/plugins/comments/query-keys.ts +9 -10
- package/src/plugins/comments/schemas.ts +7 -8
- package/src/plugins/form-builder/__tests__/authorization.test.ts +1600 -0
- package/src/plugins/form-builder/__tests__/client-runtime.browser.test.tsx +255 -0
- package/src/plugins/form-builder/__tests__/client-runtime.test.ts +132 -0
- package/src/plugins/form-builder/__tests__/client-runtime.typecheck.tsx +77 -0
- package/src/plugins/form-builder/__tests__/client-sweep.test.tsx +350 -54
- package/src/plugins/form-builder/__tests__/form-renderer-authorization.test.tsx +162 -0
- package/src/plugins/form-builder/api/getters.ts +21 -5
- package/src/plugins/form-builder/api/index.ts +31 -0
- package/src/plugins/form-builder/api/lifecycle-migrations.ts +17 -0
- package/src/plugins/form-builder/api/operations.ts +1493 -0
- package/src/plugins/form-builder/api/plugin.ts +125 -632
- package/src/plugins/form-builder/api/query-key-defs.ts +7 -0
- package/src/plugins/form-builder/api/serializers.ts +1 -0
- package/src/plugins/form-builder/client/components/forms/form-renderer.tsx +49 -19
- package/src/plugins/form-builder/client/components/pages/404-page.tsx +9 -9
- package/src/plugins/form-builder/client/components/pages/form-builder-page.internal.tsx +54 -30
- package/src/plugins/form-builder/client/components/pages/form-builder-page.tsx +42 -9
- package/src/plugins/form-builder/client/components/pages/form-list-page.internal.tsx +46 -34
- package/src/plugins/form-builder/client/components/pages/form-list-page.tsx +6 -2
- package/src/plugins/form-builder/client/components/pages/submissions-page.internal.tsx +98 -64
- package/src/plugins/form-builder/client/components/pages/submissions-page.tsx +29 -9
- package/src/plugins/form-builder/client/components/shared/page-wrapper.tsx +2 -1
- package/src/plugins/form-builder/client/constants.ts +2 -0
- package/src/plugins/form-builder/client/hooks/form-builder-hooks.tsx +68 -4
- package/src/plugins/form-builder/client/hooks/form-builder-resource.ts +2 -1
- package/src/plugins/form-builder/client/hooks/index.tsx +1 -0
- package/src/plugins/form-builder/client/overrides.ts +1 -6
- package/src/plugins/form-builder/client/plugin.tsx +128 -96
- package/src/plugins/form-builder/permissions.ts +94 -0
- package/src/plugins/form-builder/query-keys.ts +28 -3
- package/src/plugins/form-builder/schemas.ts +9 -1
- package/src/plugins/form-builder/types.ts +173 -41
- package/src/plugins/kanban/__tests__/authorization.test.ts +1382 -0
- package/src/plugins/kanban/__tests__/client-runtime.browser.test.tsx +302 -0
- package/src/plugins/kanban/__tests__/client-runtime.test.ts +130 -0
- package/src/plugins/kanban/__tests__/client-runtime.typecheck.tsx +81 -0
- package/src/plugins/kanban/__tests__/client-sweep.test.tsx +418 -33
- package/src/plugins/kanban/__tests__/identity-partition.test.tsx +306 -0
- package/src/plugins/kanban/api/getters.ts +65 -50
- package/src/plugins/kanban/api/index.ts +55 -4
- package/src/plugins/kanban/api/lifecycle-migrations.ts +25 -0
- package/src/plugins/kanban/api/mutations.ts +3 -3
- package/src/plugins/kanban/api/operations.ts +2065 -0
- package/src/plugins/kanban/api/plugin.ts +83 -1013
- package/src/plugins/kanban/api/serializers.ts +26 -0
- package/src/plugins/kanban/client/components/forms/board-form.tsx +3 -1
- package/src/plugins/kanban/client/components/forms/column-form.tsx +3 -1
- package/src/plugins/kanban/client/components/forms/task-form.tsx +92 -74
- package/src/plugins/kanban/client/components/pages/404-page.tsx +6 -9
- package/src/plugins/kanban/client/components/pages/board-page.internal.tsx +57 -74
- package/src/plugins/kanban/client/components/pages/board-page.tsx +31 -7
- package/src/plugins/kanban/client/components/pages/boards-list-page.internal.tsx +54 -45
- package/src/plugins/kanban/client/components/pages/boards-list-page.tsx +2 -1
- package/src/plugins/kanban/client/components/pages/new-board-page.internal.tsx +8 -12
- package/src/plugins/kanban/client/components/pages/new-board-page.tsx +2 -1
- package/src/plugins/kanban/client/components/shared/column-content.tsx +61 -48
- package/src/plugins/kanban/client/components/shared/default-error.tsx +3 -1
- package/src/plugins/kanban/client/components/shared/kanban-board.tsx +6 -6
- package/src/plugins/kanban/client/components/shared/permission-access-any.tsx +32 -0
- package/src/plugins/kanban/client/components/shared/task-card.tsx +64 -20
- package/src/plugins/kanban/client/components/shared/user-avatar.tsx +3 -1
- package/src/plugins/kanban/client/constants.ts +2 -0
- package/src/plugins/kanban/client/hooks/kanban-hooks.tsx +55 -10
- package/src/plugins/kanban/client/hooks/kanban-resource.ts +2 -1
- package/src/plugins/kanban/client/overrides.ts +0 -5
- package/src/plugins/kanban/client/plugin.tsx +201 -113
- package/src/plugins/kanban/permissions.ts +100 -0
- package/src/plugins/kanban/query-keys.ts +61 -21
- package/src/plugins/kanban/schemas.ts +44 -18
- package/src/plugins/kanban/types.ts +381 -1
- package/src/plugins/media/__tests__/authorization.test.ts +1769 -0
- package/src/plugins/media/__tests__/client-runtime.browser.test.tsx +975 -0
- package/src/plugins/media/__tests__/client-runtime.test.ts +539 -0
- package/src/plugins/media/__tests__/client-runtime.typecheck.tsx +135 -0
- package/src/plugins/media/__tests__/client-sweep.test.tsx +292 -24
- package/src/plugins/media/__tests__/identity-partition.test.tsx +741 -0
- package/src/plugins/media/__tests__/plugin.test.ts +68 -28
- package/src/plugins/media/__tests__/query-key-defs.test.ts +32 -2
- package/src/plugins/media/api/adapters/vercel-blob.ts +84 -8
- package/src/plugins/media/api/getters.ts +6 -6
- package/src/plugins/media/api/index.ts +3 -0
- package/src/plugins/media/api/lifecycle-migrations.ts +11 -0
- package/src/plugins/media/api/mutations.ts +19 -13
- package/src/plugins/media/api/operations.ts +1873 -0
- package/src/plugins/media/api/plugin.ts +211 -899
- package/src/plugins/media/api/query-key-defs.ts +66 -4
- package/src/plugins/media/api/serializers.ts +4 -2
- package/src/plugins/media/api/storage-adapter.ts +22 -4
- package/src/plugins/media/asset-url.ts +14 -0
- package/src/plugins/media/client/components/media-picker/asset-card.tsx +105 -98
- package/src/plugins/media/client/components/media-picker/folder-tree.tsx +82 -60
- package/src/plugins/media/client/components/media-picker/index.tsx +235 -171
- package/src/plugins/media/client/components/media-picker/upload-tab.tsx +2 -10
- package/src/plugins/media/client/components/media-picker/url-tab.tsx +1 -8
- package/src/plugins/media/client/components/pages/library-page.internal.tsx +103 -82
- package/src/plugins/media/client/components/pages/library-page.tsx +4 -2
- package/src/plugins/media/client/components/upload-permission-check.tsx +75 -0
- package/src/plugins/media/client/constants.ts +2 -0
- package/src/plugins/media/client/hooks/media-resource.ts +2 -1
- package/src/plugins/media/client/hooks/use-media.tsx +292 -49
- package/src/plugins/media/client/index.ts +16 -3
- package/src/plugins/media/client/overrides.ts +6 -17
- package/src/plugins/media/client/plugin.tsx +188 -123
- package/src/plugins/media/client/upload.ts +170 -53
- package/src/plugins/media/db.ts +8 -0
- package/src/plugins/media/permissions.ts +61 -0
- package/src/plugins/media/query-keys.ts +63 -19
- package/src/plugins/media/types.ts +8 -2
- package/src/plugins/open-api/__tests__/route-introspection.test.ts +277 -0
- package/src/plugins/open-api/api/generator.ts +49 -8
- package/src/plugins/open-api/api/plugin.ts +36 -14
- package/src/plugins/route-docs/client/components/pages/docs-page.tsx +63 -23
- package/src/plugins/route-docs/client/constants.ts +2 -0
- package/src/plugins/route-docs/client/hooks.ts +23 -13
- package/src/plugins/route-docs/client/index.ts +7 -1
- package/src/plugins/route-docs/client/plugin.tsx +222 -145
- package/src/plugins/route-docs/client/schema.ts +31 -0
- package/src/plugins/route-docs/generator.ts +9 -5
- package/src/plugins/ui-builder/__tests__/client-sweep.test.tsx +427 -48
- package/src/plugins/ui-builder/client/components/page-renderer.tsx +58 -16
- package/src/plugins/ui-builder/client/components/pages/page-builder-page.internal.tsx +47 -26
- package/src/plugins/ui-builder/client/components/pages/page-builder-page.tsx +43 -8
- package/src/plugins/ui-builder/client/components/pages/page-list-page.internal.tsx +38 -19
- package/src/plugins/ui-builder/client/components/pages/page-list-page.tsx +8 -2
- package/src/plugins/ui-builder/client/components/shared/default-error.tsx +2 -1
- package/src/plugins/ui-builder/client/components/shared/page-wrapper.tsx +2 -1
- package/src/plugins/ui-builder/client/constants.ts +2 -0
- package/src/plugins/ui-builder/client/hooks/ui-builder-resource.ts +2 -1
- package/src/plugins/ui-builder/client/index.ts +4 -1
- package/src/plugins/ui-builder/client/overrides.ts +16 -21
- package/src/plugins/ui-builder/client/plugin.tsx +119 -66
- package/src/plugins/ui-builder/client/registry.ts +3 -5
- package/src/plugins/ui-builder/types.ts +7 -4
- package/src/plugins/utils.ts +5 -1
- package/src/react-router/index.tsx +5 -0
- package/src/react-router/layout.ts +43 -0
- package/src/react-router/page.tsx +12 -5
- package/src/react-router/router.tsx +1 -1
- package/src/shared/auth-types.ts +19 -70
- package/src/shared/entry-factories.ts +3 -3
- package/src/shared/initial-identity.ts +73 -0
- package/src/shared/list-state.ts +12 -0
- package/src/shared/types.ts +1 -0
- package/src/tanstack/index.tsx +5 -0
- package/src/tanstack/layout.ts +36 -0
- package/src/tanstack/page.tsx +7 -2
- package/src/tanstack/router.tsx +1 -1
- package/src/tanstack/server.ts +18 -0
- package/src/types.ts +557 -65
- package/dist/shared/stack.B8vdOMnQ.d.cts +0 -329
- package/dist/shared/stack.BISAZ5LX.d.mts +0 -492
- package/dist/shared/stack.BL5PvShn.d.mts +0 -193
- package/dist/shared/stack.Be1QIHEn.d.cts +0 -23
- package/dist/shared/stack.Be1QIHEn.d.mts +0 -23
- package/dist/shared/stack.Be1QIHEn.d.ts +0 -23
- package/dist/shared/stack.BjvOk_Bs.d.cts +0 -492
- package/dist/shared/stack.BozPgbrZ.d.cts +0 -201
- package/dist/shared/stack.BozPgbrZ.d.mts +0 -201
- package/dist/shared/stack.BozPgbrZ.d.ts +0 -201
- package/dist/shared/stack.BqTR6qi2.d.ts +0 -193
- package/dist/shared/stack.BsmDN8r9.d.cts +0 -406
- package/dist/shared/stack.C1ATQ3pd.d.ts +0 -416
- package/dist/shared/stack.C4_gEENS.d.cts +0 -97
- package/dist/shared/stack.C4_gEENS.d.mts +0 -97
- package/dist/shared/stack.C4_gEENS.d.ts +0 -97
- package/dist/shared/stack.C5Y5lViI.d.cts +0 -461
- package/dist/shared/stack.C8SwdUz8.d.ts +0 -461
- package/dist/shared/stack.CBsp9rDM.d.cts +0 -193
- package/dist/shared/stack.CKGjOI3Z.d.cts +0 -840
- package/dist/shared/stack.Cf-DbL1A.d.ts +0 -329
- package/dist/shared/stack.CuI_-z-_.d.cts +0 -560
- package/dist/shared/stack.D2RVkQD8.d.mts +0 -560
- package/dist/shared/stack.DHTvwoNG.d.mts +0 -329
- package/dist/shared/stack.DJaKVY7v.d.cts +0 -76
- package/dist/shared/stack.DJaKVY7v.d.mts +0 -76
- package/dist/shared/stack.DJaKVY7v.d.ts +0 -76
- package/dist/shared/stack.DKZMaVr6.d.cts +0 -416
- package/dist/shared/stack.DOzsgzkY.d.ts +0 -406
- package/dist/shared/stack.DQq8DEIv.d.mts +0 -461
- package/dist/shared/stack.DXrOtuek.d.ts +0 -560
- package/dist/shared/stack.DZHEHd-S.d.mts +0 -840
- package/dist/shared/stack.Dd-8shBE.d.ts +0 -492
- package/dist/shared/stack.EOPVnJrF.d.cts +0 -39
- package/dist/shared/stack.EOPVnJrF.d.mts +0 -39
- package/dist/shared/stack.EOPVnJrF.d.ts +0 -39
- package/dist/shared/stack.NGKtwA6S.d.mts +0 -406
- package/dist/shared/stack.WELCDuMs.d.ts +0 -840
- package/dist/shared/stack.aXdBOJAR.d.cts +0 -173
- package/dist/shared/stack.aXdBOJAR.d.mts +0 -173
- package/dist/shared/stack.aXdBOJAR.d.ts +0 -173
- package/dist/shared/stack.oBokjN_J.d.mts +0 -416
- package/dist/shared/{stack.D18Dq3ve.d.mts → stack.CKc_Bais.d.cts} +8 -8
- package/dist/shared/{stack.D18Dq3ve.d.ts → stack.CKc_Bais.d.mts} +8 -8
- package/dist/shared/{stack.D18Dq3ve.d.cts → stack.CKc_Bais.d.ts} +8 -8
package/src/types.ts
CHANGED
|
@@ -1,32 +1,153 @@
|
|
|
1
1
|
import type { Route, createRouter } from "@btst/yar";
|
|
2
|
+
import type { QueryClient } from "@tanstack/react-query";
|
|
2
3
|
import type {
|
|
3
4
|
DBAdapter as Adapter,
|
|
4
5
|
DatabaseDefinition,
|
|
5
6
|
DbPlugin,
|
|
6
7
|
} from "@btst/db";
|
|
7
8
|
import type { Endpoint, Router } from "better-call";
|
|
8
|
-
import type {
|
|
9
|
+
import type { ServerAuth } from "./authorization/server";
|
|
10
|
+
import type {
|
|
11
|
+
OperationApi,
|
|
12
|
+
OperationPermissionRequest,
|
|
13
|
+
OperationRecord,
|
|
14
|
+
RouteOperationApi,
|
|
15
|
+
} from "./plugins/api/operation";
|
|
16
|
+
import type {
|
|
17
|
+
ComposedEndpointInventoryEntry,
|
|
18
|
+
InfrastructureRouteInventory,
|
|
19
|
+
} from "./plugins/api/endpoint-inventory";
|
|
20
|
+
import type {
|
|
21
|
+
AnyAuthorization,
|
|
22
|
+
AuthorizationPermissionRequest,
|
|
23
|
+
} from "./authorization";
|
|
9
24
|
|
|
10
25
|
export type {
|
|
11
|
-
|
|
12
|
-
StackAuthProvider,
|
|
26
|
+
StackClientAuth,
|
|
13
27
|
StackIdentity,
|
|
14
|
-
StackServerAuthProvider,
|
|
15
28
|
} from "./shared/auth-types";
|
|
16
29
|
|
|
30
|
+
/** An absolute origin plus the path mounted below that origin. */
|
|
31
|
+
export interface ClientLocation {
|
|
32
|
+
/** Absolute HTTP(S) origin, without a pathname. */
|
|
33
|
+
baseURL: string;
|
|
34
|
+
/** Mount path below the origin, normalized with a leading slash. */
|
|
35
|
+
basePath: string;
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
/** Shared API transport configured once for a request or browser stack. */
|
|
39
|
+
export interface ClientApiConfig extends ClientLocation {
|
|
40
|
+
/**
|
|
41
|
+
* Per-request server headers. Browser-created stacks reject this field so a
|
|
42
|
+
* request cookie or authorization value cannot enter the provider projection.
|
|
43
|
+
*/
|
|
44
|
+
headers?: HeadersInit;
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
/** A same-origin endpoint replacement that inherits the configured origin. */
|
|
48
|
+
export interface ClientPathEndpointOverride {
|
|
49
|
+
/** Replacement path on the inherited top-level origin. */
|
|
50
|
+
basePath: string;
|
|
51
|
+
/** A path-only replacement cannot partially replace the origin. */
|
|
52
|
+
baseURL?: never;
|
|
53
|
+
}
|
|
54
|
+
|
|
55
|
+
/** A complete endpoint replacement. A new origin never inherits only a path. */
|
|
56
|
+
export interface ClientAbsoluteEndpointOverride extends ClientLocation {}
|
|
57
|
+
|
|
58
|
+
/** A location override must replace a path, or an origin and path together. */
|
|
59
|
+
export type ClientLocationOverride =
|
|
60
|
+
| ClientPathEndpointOverride
|
|
61
|
+
| ClientAbsoluteEndpointOverride;
|
|
62
|
+
|
|
63
|
+
/**
|
|
64
|
+
* Per-plugin API replacement. Headers and credentials declared here are
|
|
65
|
+
* deliberately browser-safe and are the only transport additions projected to
|
|
66
|
+
* the provider. Server request headers are resolved independently.
|
|
67
|
+
*/
|
|
68
|
+
export type ClientApiEndpointOverride = ClientLocationOverride & {
|
|
69
|
+
/** Explicit browser-safe headers used in both server and browser transports. */
|
|
70
|
+
browserHeaders?: HeadersInit;
|
|
71
|
+
/** Explicit browser Fetch credentials behavior for this endpoint. */
|
|
72
|
+
credentials?: RequestCredentials;
|
|
73
|
+
};
|
|
74
|
+
|
|
75
|
+
/**
|
|
76
|
+
* Stack-owned endpoint replacements for one registered client plugin. An empty
|
|
77
|
+
* object inherits both top-level locations unchanged.
|
|
78
|
+
*/
|
|
79
|
+
export interface ClientPluginEndpointOverride {
|
|
80
|
+
/** Optional replacement for the plugin's BTST API endpoint. */
|
|
81
|
+
api?: ClientApiEndpointOverride;
|
|
82
|
+
/** Optional replacement for the plugin's rendered/public site location. */
|
|
83
|
+
site?: ClientLocationOverride;
|
|
84
|
+
}
|
|
85
|
+
|
|
86
|
+
/** Effective API transport captured by a resolved plugin definition. */
|
|
87
|
+
export interface ResolvedClientApi extends ClientLocation {
|
|
88
|
+
/** Effective request headers for this stack instance. Never provider-facing. */
|
|
89
|
+
headers?: Headers;
|
|
90
|
+
/** Explicit browser-safe cross-origin credentials behavior. */
|
|
91
|
+
credentials?: RequestCredentials;
|
|
92
|
+
}
|
|
93
|
+
|
|
94
|
+
/** Shared runtime supplied when a client plugin definition is expanded. */
|
|
95
|
+
export interface ResolvedClientPluginRuntime<TId extends string = string> {
|
|
96
|
+
/** Stable programmatic identifier bound by client-stack registration. */
|
|
97
|
+
id: TId;
|
|
98
|
+
/** Effective API endpoint and request-specific transport values. */
|
|
99
|
+
api: ResolvedClientApi;
|
|
100
|
+
/** Effective public site location for routes, metadata, and sitemap output. */
|
|
101
|
+
site: ClientLocation;
|
|
102
|
+
/** The one React Query client shared by every client-stack consumer. */
|
|
103
|
+
queryClient: QueryClient;
|
|
104
|
+
}
|
|
105
|
+
|
|
106
|
+
/** Provider-safe API transport; it can contain only explicitly public headers. */
|
|
107
|
+
export interface ClientProviderApi extends ClientLocation {
|
|
108
|
+
/** Explicit browser-safe endpoint headers; never server request headers. */
|
|
109
|
+
browserHeaders?: Headers;
|
|
110
|
+
/** Explicit browser Fetch credentials behavior for this endpoint. */
|
|
111
|
+
credentials?: RequestCredentials;
|
|
112
|
+
}
|
|
113
|
+
|
|
114
|
+
/** Provider-safe endpoint view for one registered plugin. */
|
|
115
|
+
export interface ClientProviderPluginRuntime<
|
|
116
|
+
TId extends string = string,
|
|
117
|
+
TConfig extends Readonly<Record<string, unknown>> = Readonly<
|
|
118
|
+
Record<string, unknown>
|
|
119
|
+
>,
|
|
120
|
+
> {
|
|
121
|
+
/** Stable programmatic identifier bound by client-stack registration. */
|
|
122
|
+
id: TId;
|
|
123
|
+
/** Provider-safe effective API endpoint for this plugin. */
|
|
124
|
+
api: ClientProviderApi;
|
|
125
|
+
/** Effective site location for this plugin. */
|
|
126
|
+
site: ClientLocation;
|
|
127
|
+
/**
|
|
128
|
+
* Browser-safe plugin factory values exposed to components. Never contains
|
|
129
|
+
* request headers, secrets, or server-only objects.
|
|
130
|
+
*/
|
|
131
|
+
config?: TConfig;
|
|
132
|
+
}
|
|
133
|
+
|
|
17
134
|
/**
|
|
18
135
|
* Context passed to backend plugins during route creation
|
|
19
136
|
* Provides access to all registered plugins for introspection (used by openAPI plugin)
|
|
20
137
|
*/
|
|
21
138
|
export interface StackContext {
|
|
22
139
|
/** All registered backend plugins */
|
|
23
|
-
plugins: Record<string, BackendPlugin<any, any>>;
|
|
140
|
+
plugins: Record<string, BackendPlugin<any, any, any>>;
|
|
24
141
|
/** The API base path (e.g., "/api/data") */
|
|
25
142
|
basePath: string;
|
|
26
143
|
/** The database adapter */
|
|
27
144
|
adapter: Adapter;
|
|
28
|
-
/** The server-side auth provider, when configured on `
|
|
29
|
-
auth?:
|
|
145
|
+
/** The server-side auth provider, when configured on `createBackendStack()` */
|
|
146
|
+
auth?: ServerAuth<AnyAuthorization>;
|
|
147
|
+
/** Routes already constructed for each plugin, used by introspection plugins. */
|
|
148
|
+
pluginRoutes: Record<string, Record<string, Endpoint>>;
|
|
149
|
+
/** Validated, safe metadata for every operation-first/infrastructure route. */
|
|
150
|
+
readonly endpointInventory?: readonly ComposedEndpointInventoryEntry[];
|
|
30
151
|
}
|
|
31
152
|
|
|
32
153
|
/**
|
|
@@ -54,15 +175,18 @@ export interface ClientStackContext<
|
|
|
54
175
|
* You can optionally provide a base schema via the dbSchema config option.
|
|
55
176
|
*
|
|
56
177
|
* @template TRoutes - The exact shape of routes this plugin provides (preserves keys and endpoint types)
|
|
57
|
-
* @template
|
|
58
|
-
* Defaults to `never` so that plugins without
|
|
59
|
-
* `
|
|
178
|
+
* @template TRaw - The shape of the lower-level server surface exposed via `createBackendStack().raw`.
|
|
179
|
+
* Defaults to `never` so that plugins without a `raw` factory are excluded from the
|
|
180
|
+
* `createBackendStack().raw` namespace entirely, preventing accidental access of `undefined` at runtime.
|
|
60
181
|
*/
|
|
61
182
|
export interface BackendPlugin<
|
|
62
183
|
TRoutes extends Record<string, Endpoint> = Record<string, Endpoint>,
|
|
63
|
-
|
|
184
|
+
TRaw extends Record<string, (...args: any[]) => any> = never,
|
|
185
|
+
TOperations extends OperationRecord = never,
|
|
186
|
+
TId extends string = string,
|
|
64
187
|
> {
|
|
65
|
-
|
|
188
|
+
/** Canonical stable programmatic identifier. */
|
|
189
|
+
readonly id: TId;
|
|
66
190
|
|
|
67
191
|
/**
|
|
68
192
|
* Create API endpoints for this plugin
|
|
@@ -70,19 +194,44 @@ export interface BackendPlugin<
|
|
|
70
194
|
*
|
|
71
195
|
* @param adapter - Better DB adapter instance with methods:
|
|
72
196
|
* create, update, updateMany, delete, deleteMany, findOne, findMany, count
|
|
73
|
-
* @param context -
|
|
197
|
+
* @param context - Stack context with access to all plugins (for introspection)
|
|
198
|
+
* @param operations - Request-bound operations declared by this plugin. When
|
|
199
|
+
* the plugin declares operations, create every business endpoint with an
|
|
200
|
+
* `operations.operationKey.route(ctx => input)` handler.
|
|
74
201
|
*/
|
|
75
|
-
routes
|
|
202
|
+
routes(
|
|
203
|
+
adapter: Adapter,
|
|
204
|
+
context: StackContext | undefined,
|
|
205
|
+
operations: [TOperations] extends [never]
|
|
206
|
+
? Record<string, never>
|
|
207
|
+
: RouteOperationApi<TOperations>,
|
|
208
|
+
): TRoutes;
|
|
76
209
|
dbPlugin: DbPlugin;
|
|
77
210
|
|
|
78
211
|
/**
|
|
79
|
-
* Optional factory that returns
|
|
80
|
-
* The returned object is merged into `
|
|
81
|
-
*
|
|
212
|
+
* Optional factory that returns narrow lower-level helpers bound to the adapter.
|
|
213
|
+
* The returned object is merged into `createBackendStack().raw.<pluginName>.*` for deliberate
|
|
214
|
+
* lower-level or SSG data access without authorization or lifecycle composition.
|
|
82
215
|
*
|
|
83
216
|
* @param adapter - The adapter instance shared with `routes`
|
|
84
217
|
*/
|
|
85
|
-
|
|
218
|
+
raw?: (adapter: Adapter) => TRaw;
|
|
219
|
+
|
|
220
|
+
/**
|
|
221
|
+
* Define operations shared by HTTP, request-scoped, and trusted calls.
|
|
222
|
+
* When present, every composed route must resolve to a same-key operation,
|
|
223
|
+
* an explicit operationRouteMap entry, or an infrastructure declaration.
|
|
224
|
+
*/
|
|
225
|
+
operations?: (adapter: Adapter, context?: StackContext) => TOperations;
|
|
226
|
+
|
|
227
|
+
/**
|
|
228
|
+
* Explicit declarations for true infrastructure routes that cannot use a
|
|
229
|
+
* business operation. When present, all other routes must have same-key
|
|
230
|
+
* operations and stale declarations fail stack composition.
|
|
231
|
+
*/
|
|
232
|
+
infrastructureRoutes?: InfrastructureRouteInventory;
|
|
233
|
+
/** Explicit route-key to operation-key mapping when their public names differ. */
|
|
234
|
+
operationRouteMap?: Readonly<Record<string, string>>;
|
|
86
235
|
}
|
|
87
236
|
|
|
88
237
|
/**
|
|
@@ -96,8 +245,10 @@ export interface BackendPlugin<
|
|
|
96
245
|
export interface ClientPlugin<
|
|
97
246
|
TOverrides = Record<string, never>,
|
|
98
247
|
TRoutes extends Record<string, Route> = Record<string, Route>,
|
|
248
|
+
TId extends string = string,
|
|
99
249
|
> {
|
|
100
|
-
|
|
250
|
+
/** Canonical stable programmatic identifier. */
|
|
251
|
+
readonly id: TId;
|
|
101
252
|
|
|
102
253
|
/**
|
|
103
254
|
* Define routes (pages) for this plugin
|
|
@@ -115,68 +266,348 @@ export interface ClientPlugin<
|
|
|
115
266
|
}
|
|
116
267
|
|
|
117
268
|
/**
|
|
118
|
-
*
|
|
119
|
-
*
|
|
269
|
+
* Runtime-independent client plugin definition. The definition remains safe to
|
|
270
|
+
* import on the server and is expanded against one resolved stack runtime.
|
|
271
|
+
*/
|
|
272
|
+
export interface ClientPluginDefinition<
|
|
273
|
+
TOverrides = Record<string, never>,
|
|
274
|
+
TRoutes extends Record<string, Route> = Record<string, Route>,
|
|
275
|
+
TId extends string = string,
|
|
276
|
+
TProviderConfig extends Readonly<Record<string, unknown>> = Readonly<
|
|
277
|
+
Record<string, unknown>
|
|
278
|
+
>,
|
|
279
|
+
TApiRuntimeFrom extends string = never,
|
|
280
|
+
> {
|
|
281
|
+
/** Canonical stable programmatic identifier. */
|
|
282
|
+
readonly id: TId;
|
|
283
|
+
/**
|
|
284
|
+
* Optional programmatic ID whose effective API transport this definition
|
|
285
|
+
* consumes. The dependent plugin may still resolve its own site endpoint.
|
|
286
|
+
*/
|
|
287
|
+
readonly apiRuntimeFrom?: TApiRuntimeFrom;
|
|
288
|
+
/**
|
|
289
|
+
* Small, browser-safe subset of factory values needed by components through
|
|
290
|
+
* `useStack().plugins[id].config`. Do not include secrets, request headers,
|
|
291
|
+
* server-only objects, or shared API/site/query runtime.
|
|
292
|
+
*/
|
|
293
|
+
providerConfig?: TProviderConfig;
|
|
294
|
+
/** Expand plugin-specific options against one resolved stack runtime. */
|
|
295
|
+
resolve: (
|
|
296
|
+
runtime: ResolvedClientPluginRuntime<TId>,
|
|
297
|
+
) => Omit<ClientPlugin<TOverrides, TRoutes, TId>, "id">;
|
|
298
|
+
}
|
|
299
|
+
|
|
300
|
+
/** Runtime-independent client plugin registration resolved by the client stack. */
|
|
301
|
+
export type ClientPluginRegistration<
|
|
302
|
+
TOverrides = Record<string, never>,
|
|
303
|
+
TRoutes extends Record<string, Route> = Record<string, Route>,
|
|
304
|
+
TId extends string = string,
|
|
305
|
+
TProviderConfig extends Readonly<Record<string, unknown>> = Readonly<
|
|
306
|
+
Record<string, unknown>
|
|
307
|
+
>,
|
|
308
|
+
TApiRuntimeFrom extends string = never,
|
|
309
|
+
> = ClientPluginDefinition<
|
|
310
|
+
TOverrides,
|
|
311
|
+
TRoutes,
|
|
312
|
+
TId,
|
|
313
|
+
TProviderConfig,
|
|
314
|
+
TApiRuntimeFrom
|
|
315
|
+
>;
|
|
316
|
+
|
|
317
|
+
/**
|
|
318
|
+
* Utility type that maps each plugin key to the return type of its `raw` factory.
|
|
319
|
+
* Plugin keys whose `TRaw` resolves to `never` (i.e. plugins with no `raw` factory)
|
|
120
320
|
* are excluded from the resulting type via key remapping, preventing TypeScript from
|
|
121
321
|
* suggesting callable functions on what is actually `undefined` at runtime.
|
|
122
322
|
*/
|
|
123
|
-
export type
|
|
124
|
-
TPlugins extends Record<string, BackendPlugin<any, any>>,
|
|
323
|
+
export type PluginRaw<
|
|
324
|
+
TPlugins extends Record<string, BackendPlugin<any, any, any>>,
|
|
125
325
|
> = {
|
|
126
|
-
[K in keyof TPlugins as
|
|
326
|
+
[K in keyof TPlugins as _RawOf<TPlugins[K]> extends never
|
|
127
327
|
? never
|
|
128
|
-
: K]:
|
|
328
|
+
: K]: _RawOf<TPlugins[K]>;
|
|
129
329
|
};
|
|
130
330
|
|
|
131
|
-
/** @internal Extract the
|
|
132
|
-
type
|
|
331
|
+
/** @internal Extract the TRaw parameter from a BackendPlugin type. */
|
|
332
|
+
type _RawOf<T> = T extends BackendPlugin<
|
|
333
|
+
infer _TRoutes,
|
|
334
|
+
infer TRaw,
|
|
335
|
+
infer _TOps
|
|
336
|
+
>
|
|
337
|
+
? TRaw
|
|
338
|
+
: never;
|
|
339
|
+
|
|
340
|
+
type _OperationsOf<T> = T extends BackendPlugin<
|
|
341
|
+
infer _TRoutes,
|
|
342
|
+
infer _TRaw,
|
|
343
|
+
infer TOperations
|
|
344
|
+
>
|
|
345
|
+
? TOperations
|
|
346
|
+
: never;
|
|
347
|
+
|
|
348
|
+
/** Bound operation APIs, keyed by their registered backend plugin IDs. */
|
|
349
|
+
export type PluginOperations<
|
|
350
|
+
TPlugins extends Record<string, BackendPlugin<any, any, any>>,
|
|
351
|
+
> = {
|
|
352
|
+
[K in keyof TPlugins as _OperationsOf<TPlugins[K]> extends never
|
|
353
|
+
? never
|
|
354
|
+
: K]: OperationApi<_OperationsOf<TPlugins[K]>>;
|
|
355
|
+
};
|
|
356
|
+
|
|
357
|
+
type _OperationPermissionRequests<T> = T extends OperationRecord
|
|
358
|
+
? OperationPermissionRequest<T[keyof T]>
|
|
359
|
+
: never;
|
|
360
|
+
|
|
361
|
+
/** Permission requests required by all operations in a plugin map. */
|
|
362
|
+
export type PluginOperationPermissionRequests<
|
|
363
|
+
TPlugins extends Record<string, BackendPlugin<any, any, any>>,
|
|
364
|
+
> = {
|
|
365
|
+
[K in keyof TPlugins]: _OperationPermissionRequests<
|
|
366
|
+
_OperationsOf<TPlugins[K]>
|
|
367
|
+
>;
|
|
368
|
+
}[keyof TPlugins];
|
|
369
|
+
|
|
370
|
+
type _RequestWithId<TRequest, TId> = TRequest extends { readonly id: TId }
|
|
371
|
+
? TRequest
|
|
372
|
+
: never;
|
|
373
|
+
|
|
374
|
+
type _RequestFacts<TRequest> = TRequest extends { readonly facts: infer TFacts }
|
|
375
|
+
? TFacts
|
|
376
|
+
: never;
|
|
377
|
+
|
|
378
|
+
type _IncompatibleOperationRequests<TOperationRequest, TAuthorizationRequest> =
|
|
379
|
+
TOperationRequest extends { readonly id: infer TId }
|
|
380
|
+
? _RequestWithId<TAuthorizationRequest, TId> extends infer TRegistered
|
|
381
|
+
? [TRegistered] extends [never]
|
|
382
|
+
? TOperationRequest
|
|
383
|
+
: [_RequestFacts<TOperationRequest>] extends [
|
|
384
|
+
_RequestFacts<TRegistered>,
|
|
385
|
+
]
|
|
386
|
+
? [_RequestFacts<TRegistered>] extends [
|
|
387
|
+
_RequestFacts<TOperationRequest>,
|
|
388
|
+
]
|
|
389
|
+
? never
|
|
390
|
+
: TOperationRequest
|
|
391
|
+
: TOperationRequest
|
|
392
|
+
: TOperationRequest
|
|
393
|
+
: TOperationRequest;
|
|
133
394
|
|
|
134
395
|
/**
|
|
135
|
-
*
|
|
396
|
+
* Reject server adapters whose registered catalogs do not cover every
|
|
397
|
+
* operation descriptor in the composed stack.
|
|
136
398
|
*/
|
|
137
|
-
export
|
|
138
|
-
TPlugins extends Record<string, BackendPlugin<any, any
|
|
399
|
+
export type CompatibleStackAuth<
|
|
400
|
+
TPlugins extends Record<string, BackendPlugin<any, any, any>>,
|
|
401
|
+
TAuth extends ServerAuth<AnyAuthorization> | undefined,
|
|
402
|
+
> = TAuth extends ServerAuth<infer TAuthorization extends AnyAuthorization>
|
|
403
|
+
? _IncompatibleOperationRequests<
|
|
404
|
+
PluginOperationPermissionRequests<TPlugins>,
|
|
405
|
+
AuthorizationPermissionRequest<TAuthorization>
|
|
406
|
+
> extends never
|
|
407
|
+
? TAuth
|
|
408
|
+
: never
|
|
409
|
+
: TAuth;
|
|
410
|
+
|
|
411
|
+
/**
|
|
412
|
+
* Configuration for creating the backend stack
|
|
413
|
+
*/
|
|
414
|
+
export interface BackendStackConfig<
|
|
415
|
+
TPlugins extends Record<string, BackendPlugin<any, any, any>> = Record<
|
|
139
416
|
string,
|
|
140
|
-
BackendPlugin<any, any>
|
|
417
|
+
BackendPlugin<any, any, any>
|
|
141
418
|
>,
|
|
419
|
+
TAuth extends ServerAuth<AnyAuthorization> | undefined =
|
|
420
|
+
| ServerAuth<AnyAuthorization>
|
|
421
|
+
| undefined,
|
|
142
422
|
> {
|
|
143
423
|
basePath: string;
|
|
144
424
|
dbSchema?: DatabaseDefinition;
|
|
145
|
-
plugins: TPlugins
|
|
425
|
+
plugins: TPlugins & MatchingPluginRegistrations<TPlugins>;
|
|
146
426
|
adapter: (db: DatabaseDefinition) => Adapter;
|
|
147
427
|
/**
|
|
148
|
-
*
|
|
149
|
-
* request
|
|
150
|
-
*
|
|
151
|
-
*
|
|
428
|
+
* Server authorization created by `createServerAuth()`. When set,
|
|
429
|
+
* request operations evaluate their schema-backed permission after trusted
|
|
430
|
+
* facts are derived. When omitted, request operations remain permissive;
|
|
431
|
+
* use `trusted` to make trusted intent explicit.
|
|
152
432
|
*/
|
|
153
|
-
auth?:
|
|
433
|
+
auth?: TAuth;
|
|
154
434
|
}
|
|
155
435
|
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
436
|
+
type AnyClientPluginRegistration = ClientPluginRegistration<
|
|
437
|
+
any,
|
|
438
|
+
any,
|
|
439
|
+
any,
|
|
440
|
+
any,
|
|
441
|
+
any
|
|
442
|
+
>;
|
|
443
|
+
|
|
444
|
+
/** @internal Extract a plugin's required canonical ID. */
|
|
445
|
+
type _DeclaredPluginId<TPlugin> = TPlugin extends {
|
|
446
|
+
readonly id: infer TId extends string;
|
|
447
|
+
}
|
|
448
|
+
? TId
|
|
449
|
+
: never;
|
|
450
|
+
|
|
451
|
+
/** @internal Extract browser-safe plugin-specific factory values. */
|
|
452
|
+
type _ClientProviderConfig<TPlugin> = TPlugin extends ClientPluginDefinition<
|
|
453
|
+
any,
|
|
454
|
+
any,
|
|
455
|
+
any,
|
|
456
|
+
infer TProviderConfig,
|
|
457
|
+
any
|
|
458
|
+
>
|
|
459
|
+
? TProviderConfig
|
|
460
|
+
: Readonly<Record<string, never>>;
|
|
461
|
+
|
|
462
|
+
/** @internal Extract a plugin definition's API-runtime dependency. */
|
|
463
|
+
type _ClientApiRuntimeSource<TPlugin> = TPlugin extends {
|
|
464
|
+
readonly apiRuntimeFrom: infer TSource extends string;
|
|
465
|
+
}
|
|
466
|
+
? TSource
|
|
467
|
+
: never;
|
|
468
|
+
|
|
469
|
+
/** Reject a registration key that differs from a plugin's declared canonical ID. */
|
|
470
|
+
export type MatchingPluginRegistrations<
|
|
471
|
+
TPlugins extends Record<string, unknown>,
|
|
472
|
+
> = {
|
|
473
|
+
[K in keyof TPlugins]: string extends _DeclaredPluginId<TPlugins[K]>
|
|
474
|
+
? TPlugins[K]
|
|
475
|
+
: K extends _DeclaredPluginId<TPlugins[K]>
|
|
476
|
+
? _DeclaredPluginId<TPlugins[K]> extends K
|
|
477
|
+
? TPlugins[K]
|
|
478
|
+
: never
|
|
479
|
+
: never;
|
|
480
|
+
};
|
|
481
|
+
|
|
482
|
+
/** Stack-owned endpoint replacements, limited to registered plugin keys. */
|
|
483
|
+
export type ClientPluginEndpointOverrides<
|
|
484
|
+
TPlugins extends Record<string, AnyClientPluginRegistration>,
|
|
485
|
+
> = Partial<{
|
|
486
|
+
[K in keyof TPlugins]: [_ClientApiRuntimeSource<TPlugins[K]>] extends [never]
|
|
487
|
+
? ClientPluginEndpointOverride
|
|
488
|
+
: {
|
|
489
|
+
/** API transport is inherited from the declared source plugin. */
|
|
490
|
+
api?: never;
|
|
491
|
+
/** Rendered/public pages may still have a plugin-specific location. */
|
|
492
|
+
site?: ClientLocationOverride;
|
|
493
|
+
};
|
|
494
|
+
}>;
|
|
495
|
+
|
|
496
|
+
/** Canonical shared runtime configured once for the complete client stack. */
|
|
497
|
+
export interface ResolvedClientStackConfig<
|
|
498
|
+
TPlugins extends Record<string, AnyClientPluginRegistration> = Record<
|
|
161
499
|
string,
|
|
162
|
-
|
|
500
|
+
AnyClientPluginRegistration
|
|
163
501
|
>,
|
|
164
502
|
> {
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
503
|
+
/** Shared BTST API endpoint and optional request-specific server headers. */
|
|
504
|
+
api: ClientApiConfig;
|
|
505
|
+
/** Shared location of plugin-rendered public pages. */
|
|
506
|
+
site: ClientLocation;
|
|
507
|
+
/** The one React Query client used by loaders, hydration, and browser hooks. */
|
|
508
|
+
queryClient: QueryClient;
|
|
509
|
+
/** Runtime-independent plugin registrations. */
|
|
510
|
+
plugins: TPlugins & MatchingPluginRegistrations<TPlugins>;
|
|
511
|
+
/** Explicit endpoint replacements keyed by a registered plugin ID. */
|
|
512
|
+
endpoints?: ClientPluginEndpointOverrides<TPlugins>;
|
|
168
513
|
}
|
|
169
514
|
|
|
515
|
+
/** Canonical configuration for a resolved client stack. */
|
|
516
|
+
export type ClientStackConfig<
|
|
517
|
+
TPlugins extends Record<string, AnyClientPluginRegistration> = Record<
|
|
518
|
+
string,
|
|
519
|
+
AnyClientPluginRegistration
|
|
520
|
+
>,
|
|
521
|
+
> = ResolvedClientStackConfig<TPlugins>;
|
|
522
|
+
|
|
170
523
|
/**
|
|
171
524
|
* Utility type to extract override types from plugins
|
|
172
|
-
* Maps plugin
|
|
525
|
+
* Maps plugin IDs to their override types
|
|
173
526
|
*/
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
527
|
+
declare const requiredClientPluginOverrides: unique symbol;
|
|
528
|
+
|
|
529
|
+
/** @internal Marks a client plugin's entire provider override block as required. */
|
|
530
|
+
export type RequiredClientPluginOverrides<TOverrides> = TOverrides & {
|
|
531
|
+
readonly [requiredClientPluginOverrides]: true;
|
|
532
|
+
};
|
|
533
|
+
|
|
534
|
+
type _DeclaredPluginOverrides<TPlugin> = TPlugin extends ClientPlugin<
|
|
535
|
+
infer TOverrides,
|
|
536
|
+
any,
|
|
537
|
+
any
|
|
538
|
+
>
|
|
539
|
+
? TOverrides
|
|
540
|
+
: TPlugin extends ClientPluginDefinition<infer TOverrides, any, any, any, any>
|
|
178
541
|
? TOverrides
|
|
179
542
|
: never;
|
|
543
|
+
|
|
544
|
+
type _PublicPluginOverrides<TOverrides> = Omit<
|
|
545
|
+
TOverrides,
|
|
546
|
+
typeof requiredClientPluginOverrides
|
|
547
|
+
>;
|
|
548
|
+
|
|
549
|
+
export type InferPluginOverrides<
|
|
550
|
+
TPlugins extends Record<string, AnyClientPluginRegistration>,
|
|
551
|
+
> = {
|
|
552
|
+
[K in keyof TPlugins]: _PublicPluginOverrides<
|
|
553
|
+
_DeclaredPluginOverrides<TPlugins[K]>
|
|
554
|
+
>;
|
|
555
|
+
};
|
|
556
|
+
|
|
557
|
+
type _HasNoConfigurableOverrides<TOverrides> = [TOverrides] extends [never]
|
|
558
|
+
? true
|
|
559
|
+
: [keyof TOverrides] extends [never]
|
|
560
|
+
? true
|
|
561
|
+
: TOverrides extends Record<string, never>
|
|
562
|
+
? true
|
|
563
|
+
: false;
|
|
564
|
+
|
|
565
|
+
type _RequiresProviderOverrideBlock<TPlugin> = 0 extends 1 &
|
|
566
|
+
_DeclaredPluginOverrides<TPlugin>
|
|
567
|
+
? false
|
|
568
|
+
: [_DeclaredPluginOverrides<TPlugin>] extends [
|
|
569
|
+
{ readonly [requiredClientPluginOverrides]: true },
|
|
570
|
+
]
|
|
571
|
+
? true
|
|
572
|
+
: false;
|
|
573
|
+
|
|
574
|
+
/**
|
|
575
|
+
* Provider overrides inferred from registered client definitions. Plugins with
|
|
576
|
+
* no configurable fields are omitted rather than requiring empty blocks.
|
|
577
|
+
*/
|
|
578
|
+
export type InferredPluginOverrides<
|
|
579
|
+
TPlugins extends Record<string, AnyClientPluginRegistration>,
|
|
580
|
+
> = keyof _ConfigurablePluginOverrides<TPlugins> extends never
|
|
581
|
+
? Record<string, never>
|
|
582
|
+
: _ConfigurablePluginOverrides<TPlugins>;
|
|
583
|
+
|
|
584
|
+
type _ConfigurablePluginOverrides<
|
|
585
|
+
TPlugins extends Record<string, AnyClientPluginRegistration>,
|
|
586
|
+
> = _RequiredConfigurablePluginOverrides<TPlugins> &
|
|
587
|
+
_OptionalConfigurablePluginOverrides<TPlugins>;
|
|
588
|
+
|
|
589
|
+
type _RequiredConfigurablePluginOverrides<
|
|
590
|
+
TPlugins extends Record<string, AnyClientPluginRegistration>,
|
|
591
|
+
> = {
|
|
592
|
+
[K in keyof TPlugins as _HasNoConfigurableOverrides<
|
|
593
|
+
InferPluginOverrides<TPlugins>[K]
|
|
594
|
+
> extends true
|
|
595
|
+
? never
|
|
596
|
+
: _RequiresProviderOverrideBlock<TPlugins[K]> extends true
|
|
597
|
+
? K
|
|
598
|
+
: never]-?: InferPluginOverrides<TPlugins>[K];
|
|
599
|
+
};
|
|
600
|
+
|
|
601
|
+
type _OptionalConfigurablePluginOverrides<
|
|
602
|
+
TPlugins extends Record<string, AnyClientPluginRegistration>,
|
|
603
|
+
> = {
|
|
604
|
+
[K in keyof TPlugins as _HasNoConfigurableOverrides<
|
|
605
|
+
InferPluginOverrides<TPlugins>[K]
|
|
606
|
+
> extends true
|
|
607
|
+
? never
|
|
608
|
+
: _RequiresProviderOverrideBlock<TPlugins[K]> extends true
|
|
609
|
+
? never
|
|
610
|
+
: K]?: InferPluginOverrides<TPlugins>[K];
|
|
180
611
|
};
|
|
181
612
|
|
|
182
613
|
/**
|
|
@@ -184,7 +615,7 @@ export type InferPluginOverrides<
|
|
|
184
615
|
* Allows partial overrides per plugin
|
|
185
616
|
*/
|
|
186
617
|
export type PluginOverrides<
|
|
187
|
-
TPlugins extends Record<string,
|
|
618
|
+
TPlugins extends Record<string, AnyClientPluginRegistration>,
|
|
188
619
|
> = {
|
|
189
620
|
[K in keyof TPlugins]?: Partial<InferPluginOverrides<TPlugins>[K]>;
|
|
190
621
|
};
|
|
@@ -193,19 +624,20 @@ export type PluginOverrides<
|
|
|
193
624
|
* Extract all routes from all client plugins, merging them into a single record
|
|
194
625
|
*/
|
|
195
626
|
export type PluginRoutes<
|
|
196
|
-
TPlugins extends Record<string,
|
|
627
|
+
TPlugins extends Record<string, AnyClientPluginRegistration>,
|
|
197
628
|
> = MergeAllPluginRoutes<TPlugins>;
|
|
198
629
|
|
|
199
630
|
/**
|
|
200
|
-
* Prefix all backend plugin route keys with the plugin
|
|
631
|
+
* Prefix all backend plugin route keys with the canonical plugin ID
|
|
201
632
|
* Example: { messages: { list: Endpoint } } => { messages_list: Endpoint }
|
|
202
633
|
*/
|
|
203
634
|
export type PrefixedPluginRoutes<
|
|
204
|
-
TPlugins extends Record<string, BackendPlugin<any, any>>,
|
|
635
|
+
TPlugins extends Record<string, BackendPlugin<any, any, any>>,
|
|
205
636
|
> = UnionToIntersection<
|
|
206
637
|
{
|
|
207
638
|
[PluginKey in keyof TPlugins]: TPlugins[PluginKey] extends BackendPlugin<
|
|
208
639
|
infer TRoutes,
|
|
640
|
+
any,
|
|
209
641
|
any
|
|
210
642
|
>
|
|
211
643
|
? {
|
|
@@ -220,28 +652,42 @@ export type PrefixedPluginRoutes<
|
|
|
220
652
|
: Record<string, Endpoint>;
|
|
221
653
|
|
|
222
654
|
/**
|
|
223
|
-
* Result of creating the backend
|
|
655
|
+
* Result of creating the backend stack
|
|
224
656
|
*/
|
|
225
|
-
export interface
|
|
657
|
+
export interface BackendStack<
|
|
226
658
|
TRoutes extends Record<string, Endpoint> = Record<string, Endpoint>,
|
|
227
|
-
|
|
659
|
+
TRaw extends Record<string, Record<string, (...args: any[]) => any>> = Record<
|
|
660
|
+
string,
|
|
661
|
+
Record<string, (...args: any[]) => any>
|
|
662
|
+
>,
|
|
663
|
+
TOperations extends Record<
|
|
228
664
|
string,
|
|
229
665
|
Record<string, (...args: any[]) => any>
|
|
230
666
|
> = Record<string, Record<string, (...args: any[]) => any>>,
|
|
231
667
|
> {
|
|
232
668
|
handler: (request: Request) => Promise<Response>; // API route handler
|
|
233
|
-
router: Router; // Better-call router
|
|
669
|
+
router: Omit<Router, "endpoints"> & { endpoints: TRoutes }; // Better-call router
|
|
234
670
|
dbSchema: DatabaseDefinition; // Better-db schema
|
|
235
671
|
/** The database adapter shared across all plugins */
|
|
236
672
|
adapter: Adapter;
|
|
237
|
-
/**
|
|
238
|
-
|
|
673
|
+
/** Narrow lower-level/SSG helpers that bypass operation composition. */
|
|
674
|
+
raw: TRaw;
|
|
675
|
+
/** User/request-scoped operations with automatic authorization. */
|
|
676
|
+
forRequest: (request: Request) => { operations: TOperations };
|
|
677
|
+
/** Trusted operations that retain validation and lifecycle hooks. */
|
|
678
|
+
trusted: TOperations;
|
|
239
679
|
}
|
|
240
680
|
|
|
241
681
|
/**
|
|
242
682
|
* Helper type to extract routes from a client plugin
|
|
243
683
|
*/
|
|
244
|
-
export type ExtractPluginRoutes<T> = T extends
|
|
684
|
+
export type ExtractPluginRoutes<T> = T extends ClientPluginDefinition<
|
|
685
|
+
any,
|
|
686
|
+
infer TRoutes,
|
|
687
|
+
any,
|
|
688
|
+
any,
|
|
689
|
+
any
|
|
690
|
+
>
|
|
245
691
|
? TRoutes
|
|
246
692
|
: never;
|
|
247
693
|
|
|
@@ -249,7 +695,7 @@ export type ExtractPluginRoutes<T> = T extends ClientPlugin<any, infer TRoutes>
|
|
|
249
695
|
* Helper type to merge all routes from all plugins into a single record
|
|
250
696
|
*/
|
|
251
697
|
export type MergeAllPluginRoutes<
|
|
252
|
-
TPlugins extends Record<string,
|
|
698
|
+
TPlugins extends Record<string, AnyClientPluginRegistration>,
|
|
253
699
|
> = UnionToIntersection<
|
|
254
700
|
{
|
|
255
701
|
[K in keyof TPlugins]: ExtractPluginRoutes<TPlugins[K]>;
|
|
@@ -272,15 +718,61 @@ type UnionToIntersection<U> = (
|
|
|
272
718
|
: never;
|
|
273
719
|
|
|
274
720
|
/**
|
|
275
|
-
* Result of creating the client
|
|
721
|
+
* Result of creating the client stack
|
|
276
722
|
*/
|
|
277
|
-
export interface
|
|
723
|
+
export interface ClientStack<
|
|
278
724
|
TRoutes extends Record<string, Route> = Record<string, Route>,
|
|
279
725
|
> {
|
|
726
|
+
/** Resolved plugin definitions for intentional client-side introspection. */
|
|
727
|
+
context: ClientStackContext;
|
|
280
728
|
router: ReturnType<typeof createRouter<TRoutes, {}>>;
|
|
281
729
|
generateSitemap: () => Promise<Sitemap>;
|
|
282
730
|
}
|
|
283
731
|
|
|
732
|
+
declare const resolvedClientStackPlugins: unique symbol;
|
|
733
|
+
|
|
734
|
+
/** Browser-safe runtime passed to `StackProvider` by the next composition slice. */
|
|
735
|
+
export interface ClientProviderProjection<
|
|
736
|
+
TPlugins extends Record<string, AnyClientPluginRegistration> = Record<
|
|
737
|
+
string,
|
|
738
|
+
AnyClientPluginRegistration
|
|
739
|
+
>,
|
|
740
|
+
> {
|
|
741
|
+
/** Shared provider-safe API location. Never contains request headers. */
|
|
742
|
+
api: ClientLocation;
|
|
743
|
+
/** Shared provider-safe site location. */
|
|
744
|
+
site: ClientLocation;
|
|
745
|
+
/** The one React Query client supplied to the client stack. */
|
|
746
|
+
queryClient: QueryClient;
|
|
747
|
+
/** Effective provider-safe endpoint values for every registered plugin. */
|
|
748
|
+
plugins: {
|
|
749
|
+
[K in keyof TPlugins]: ClientProviderPluginRuntime<
|
|
750
|
+
[_DeclaredPluginId<TPlugins[K]>] extends [never]
|
|
751
|
+
? K & string
|
|
752
|
+
: _DeclaredPluginId<TPlugins[K]>,
|
|
753
|
+
_ClientProviderConfig<TPlugins[K]>
|
|
754
|
+
>;
|
|
755
|
+
};
|
|
756
|
+
}
|
|
757
|
+
|
|
758
|
+
/** Canonical client stack with a browser-safe provider projection. */
|
|
759
|
+
export interface ResolvedClientStack<
|
|
760
|
+
TRoutes extends Record<string, Route> = Record<string, Route>,
|
|
761
|
+
TPlugins extends Record<string, AnyClientPluginRegistration> = Record<
|
|
762
|
+
string,
|
|
763
|
+
AnyClientPluginRegistration
|
|
764
|
+
>,
|
|
765
|
+
> extends ClientStack<TRoutes> {
|
|
766
|
+
/** @internal Type-only registration map used for provider inference. */
|
|
767
|
+
readonly [resolvedClientStackPlugins]?: TPlugins;
|
|
768
|
+
/** Browser-safe projection for provider and browser resource consumers. */
|
|
769
|
+
provider: ClientProviderProjection<TPlugins>;
|
|
770
|
+
}
|
|
771
|
+
|
|
772
|
+
/** Registered plugin definitions carried by a resolved client stack type. */
|
|
773
|
+
export type RegisteredClientPlugins<TStack> =
|
|
774
|
+
TStack extends ResolvedClientStack<any, infer TPlugins> ? TPlugins : never;
|
|
775
|
+
|
|
284
776
|
/**
|
|
285
777
|
* Minimal sitemap entry shape aligned with Next.js MetadataRoute.Sitemap
|
|
286
778
|
*/
|