@nextsparkjs/core 0.1.0-beta.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +42 -0
- package/bin/dist/init.js +317 -0
- package/dist/bin/dist/init.js +317 -0
- package/dist/bin/init.ts +419 -0
- package/dist/bin/nextspark.mjs +211 -0
- package/dist/bin/test-local.sh +307 -0
- package/dist/bin/tsup.config.ts +13 -0
- package/dist/components/api/keys/ApiKeyDisplay.d.ts +9 -0
- package/dist/components/api/keys/ApiKeyDisplay.d.ts.map +1 -0
- package/dist/components/api/keys/ApiKeyDisplay.js +150 -0
- package/dist/components/api/keys/CreateApiKeyDialog.d.ts +14 -0
- package/dist/components/api/keys/CreateApiKeyDialog.d.ts.map +1 -0
- package/dist/components/api/keys/CreateApiKeyDialog.js +252 -0
- package/dist/components/app/guards/DeveloperGuard.d.ts +24 -0
- package/dist/components/app/guards/DeveloperGuard.d.ts.map +1 -0
- package/dist/components/app/guards/DeveloperGuard.js +88 -0
- package/dist/components/app/guards/SuperAdminGuard.d.ts +31 -0
- package/dist/components/app/guards/SuperAdminGuard.d.ts.map +1 -0
- package/dist/components/app/guards/SuperAdminGuard.js +87 -0
- package/dist/components/app/guards/index.d.ts +8 -0
- package/dist/components/app/guards/index.d.ts.map +1 -0
- package/dist/components/app/guards/index.js +9 -0
- package/dist/components/app/index.d.ts +11 -0
- package/dist/components/app/index.d.ts.map +1 -0
- package/dist/components/app/index.js +15 -0
- package/dist/components/app/layouts/PublicFooter.d.js +0 -0
- package/dist/components/app/layouts/PublicFooter.d.ts +2 -0
- package/dist/components/app/layouts/PublicFooter.d.ts.map +1 -0
- package/dist/components/app/layouts/PublicFooter.js +136 -0
- package/dist/components/app/layouts/PublicNavbar.d.js +0 -0
- package/dist/components/app/layouts/PublicNavbar.d.ts +2 -0
- package/dist/components/app/layouts/PublicNavbar.d.ts.map +1 -0
- package/dist/components/app/layouts/PublicNavbar.js +101 -0
- package/dist/components/app/layouts/index.d.ts +8 -0
- package/dist/components/app/layouts/index.d.ts.map +1 -0
- package/dist/components/app/layouts/index.js +6 -0
- package/dist/components/app/misc/ThemeToggle.d.js +0 -0
- package/dist/components/app/misc/ThemeToggle.d.ts +2 -0
- package/dist/components/app/misc/ThemeToggle.d.ts.map +1 -0
- package/dist/components/app/misc/ThemeToggle.js +157 -0
- package/dist/components/app/misc/index.d.ts +7 -0
- package/dist/components/app/misc/index.d.ts.map +1 -0
- package/dist/components/app/misc/index.js +4 -0
- package/dist/components/auth/DevKeyring.d.ts +22 -0
- package/dist/components/auth/DevKeyring.d.ts.map +1 -0
- package/dist/components/auth/DevKeyring.js +187 -0
- package/dist/components/auth/forms/LoginForm.d.ts +2 -0
- package/dist/components/auth/forms/LoginForm.d.ts.map +1 -0
- package/dist/components/auth/forms/LoginForm.js +474 -0
- package/dist/components/auth/forms/SignupForm.d.ts +2 -0
- package/dist/components/auth/forms/SignupForm.d.ts.map +1 -0
- package/dist/components/auth/forms/SignupForm.js +504 -0
- package/dist/components/auth/forms/index.d.ts +8 -0
- package/dist/components/auth/forms/index.d.ts.map +1 -0
- package/dist/components/auth/forms/index.js +6 -0
- package/dist/components/auth/index.d.ts +11 -0
- package/dist/components/auth/index.d.ts.map +1 -0
- package/dist/components/auth/index.js +12 -0
- package/dist/components/auth/layouts/AuthWrapper.d.ts +9 -0
- package/dist/components/auth/layouts/AuthWrapper.d.ts.map +1 -0
- package/dist/components/auth/layouts/AuthWrapper.js +7 -0
- package/dist/components/auth/layouts/AuthWrapperWithPreload.d.ts +9 -0
- package/dist/components/auth/layouts/AuthWrapperWithPreload.d.ts.map +1 -0
- package/dist/components/auth/layouts/AuthWrapperWithPreload.js +12 -0
- package/dist/components/auth/layouts/index.d.ts +8 -0
- package/dist/components/auth/layouts/index.d.ts.map +1 -0
- package/dist/components/auth/layouts/index.js +6 -0
- package/dist/components/billing/DowngradeWarning.d.ts +30 -0
- package/dist/components/billing/DowngradeWarning.d.ts.map +1 -0
- package/dist/components/billing/DowngradeWarning.js +58 -0
- package/dist/components/billing/FeatureGate.d.ts +21 -0
- package/dist/components/billing/FeatureGate.d.ts.map +1 -0
- package/dist/components/billing/FeatureGate.js +46 -0
- package/dist/components/billing/FeaturePlaceholder.d.ts +24 -0
- package/dist/components/billing/FeaturePlaceholder.d.ts.map +1 -0
- package/dist/components/billing/FeaturePlaceholder.js +34 -0
- package/dist/components/billing/InvoiceStatusBadge.d.ts +8 -0
- package/dist/components/billing/InvoiceStatusBadge.d.ts.map +1 -0
- package/dist/components/billing/InvoiceStatusBadge.js +29 -0
- package/dist/components/billing/InvoicesEmptyState.d.ts +2 -0
- package/dist/components/billing/InvoicesEmptyState.d.ts.map +1 -0
- package/dist/components/billing/InvoicesEmptyState.js +29 -0
- package/dist/components/billing/InvoicesPagination.d.ts +12 -0
- package/dist/components/billing/InvoicesPagination.d.ts.map +1 -0
- package/dist/components/billing/InvoicesPagination.js +79 -0
- package/dist/components/billing/InvoicesTable.d.ts +21 -0
- package/dist/components/billing/InvoicesTable.d.ts.map +1 -0
- package/dist/components/billing/InvoicesTable.js +125 -0
- package/dist/components/billing/ManageBillingButton.d.ts +23 -0
- package/dist/components/billing/ManageBillingButton.d.ts.map +1 -0
- package/dist/components/billing/ManageBillingButton.js +64 -0
- package/dist/components/billing/PricingTable.d.ts +15 -0
- package/dist/components/billing/PricingTable.d.ts.map +1 -0
- package/dist/components/billing/PricingTable.js +91 -0
- package/dist/components/billing/SubscriptionStatus.d.ts +15 -0
- package/dist/components/billing/SubscriptionStatus.d.ts.map +1 -0
- package/dist/components/billing/SubscriptionStatus.js +58 -0
- package/dist/components/billing/UpgradeModal.d.ts +20 -0
- package/dist/components/billing/UpgradeModal.d.ts.map +1 -0
- package/dist/components/billing/UpgradeModal.js +28 -0
- package/dist/components/billing/UsageBar.d.ts +16 -0
- package/dist/components/billing/UsageBar.d.ts.map +1 -0
- package/dist/components/billing/UsageBar.js +45 -0
- package/dist/components/billing/UsageDashboard.d.ts +14 -0
- package/dist/components/billing/UsageDashboard.d.ts.map +1 -0
- package/dist/components/billing/UsageDashboard.js +23 -0
- package/dist/components/billing/index.d.ts +14 -0
- package/dist/components/billing/index.d.ts.map +1 -0
- package/dist/components/billing/index.js +24 -0
- package/dist/components/dashboard/block-editor/array-field.d.ts +9 -0
- package/dist/components/dashboard/block-editor/array-field.d.ts.map +1 -0
- package/dist/components/dashboard/block-editor/array-field.js +260 -0
- package/dist/components/dashboard/block-editor/block-canvas.d.ts +14 -0
- package/dist/components/dashboard/block-editor/block-canvas.d.ts.map +1 -0
- package/dist/components/dashboard/block-editor/block-canvas.js +102 -0
- package/dist/components/dashboard/block-editor/block-picker.d.ts +8 -0
- package/dist/components/dashboard/block-editor/block-picker.d.ts.map +1 -0
- package/dist/components/dashboard/block-editor/block-picker.js +111 -0
- package/dist/components/dashboard/block-editor/block-preview-canvas.d.ts +11 -0
- package/dist/components/dashboard/block-editor/block-preview-canvas.d.ts.map +1 -0
- package/dist/components/dashboard/block-editor/block-preview-canvas.js +133 -0
- package/dist/components/dashboard/block-editor/block-settings-panel.d.ts +9 -0
- package/dist/components/dashboard/block-editor/block-settings-panel.d.ts.map +1 -0
- package/dist/components/dashboard/block-editor/block-settings-panel.js +168 -0
- package/dist/components/dashboard/block-editor/builder-editor-view.d.ts +9 -0
- package/dist/components/dashboard/block-editor/builder-editor-view.d.ts.map +1 -0
- package/dist/components/dashboard/block-editor/builder-editor-view.js +448 -0
- package/dist/components/dashboard/block-editor/dynamic-form.d.ts +9 -0
- package/dist/components/dashboard/block-editor/dynamic-form.d.ts.map +1 -0
- package/dist/components/dashboard/block-editor/dynamic-form.js +425 -0
- package/dist/components/dashboard/block-editor/entity-fields-sidebar.d.ts +17 -0
- package/dist/components/dashboard/block-editor/entity-fields-sidebar.d.ts.map +1 -0
- package/dist/components/dashboard/block-editor/entity-fields-sidebar.js +171 -0
- package/dist/components/dashboard/block-editor/page-settings-panel.d.ts +23 -0
- package/dist/components/dashboard/block-editor/page-settings-panel.d.ts.map +1 -0
- package/dist/components/dashboard/block-editor/page-settings-panel.js +187 -0
- package/dist/components/dashboard/block-editor/sortable-block.d.ts +11 -0
- package/dist/components/dashboard/block-editor/sortable-block.d.ts.map +1 -0
- package/dist/components/dashboard/block-editor/sortable-block.js +124 -0
- package/dist/components/dashboard/block-editor/status-selector.d.ts +12 -0
- package/dist/components/dashboard/block-editor/status-selector.d.ts.map +1 -0
- package/dist/components/dashboard/block-editor/status-selector.js +26 -0
- package/dist/components/dashboard/index.d.ts +3 -0
- package/dist/components/dashboard/index.d.ts.map +1 -0
- package/dist/components/dashboard/index.js +2 -0
- package/dist/components/dashboard/layouts/AuthGuard.d.ts +6 -0
- package/dist/components/dashboard/layouts/AuthGuard.d.ts.map +1 -0
- package/dist/components/dashboard/layouts/AuthGuard.js +29 -0
- package/dist/components/dashboard/layouts/DashboardShell.d.ts +8 -0
- package/dist/components/dashboard/layouts/DashboardShell.d.ts.map +1 -0
- package/dist/components/dashboard/layouts/DashboardShell.js +38 -0
- package/dist/components/dashboard/layouts/Sidebar.d.ts +8 -0
- package/dist/components/dashboard/layouts/Sidebar.d.ts.map +1 -0
- package/dist/components/dashboard/layouts/Sidebar.js +120 -0
- package/dist/components/dashboard/layouts/TopNavbar.d.ts +8 -0
- package/dist/components/dashboard/layouts/TopNavbar.d.ts.map +1 -0
- package/dist/components/dashboard/layouts/TopNavbar.js +689 -0
- package/dist/components/dashboard/layouts/index.d.ts +5 -0
- package/dist/components/dashboard/layouts/index.d.ts.map +1 -0
- package/dist/components/dashboard/layouts/index.js +10 -0
- package/dist/components/dashboard/misc/NotificationsDropdown.d.ts +2 -0
- package/dist/components/dashboard/misc/NotificationsDropdown.d.ts.map +1 -0
- package/dist/components/dashboard/misc/NotificationsDropdown.js +257 -0
- package/dist/components/dashboard/misc/QuickCreateDropdown.d.ts +2 -0
- package/dist/components/dashboard/misc/QuickCreateDropdown.d.ts.map +1 -0
- package/dist/components/dashboard/misc/QuickCreateDropdown.js +86 -0
- package/dist/components/dashboard/misc/SearchDropdown.d.ts +2 -0
- package/dist/components/dashboard/misc/SearchDropdown.d.ts.map +1 -0
- package/dist/components/dashboard/misc/SearchDropdown.js +336 -0
- package/dist/components/dashboard/mobile/MobileBottomNav.d.ts +2 -0
- package/dist/components/dashboard/mobile/MobileBottomNav.d.ts.map +1 -0
- package/dist/components/dashboard/mobile/MobileBottomNav.js +149 -0
- package/dist/components/dashboard/mobile/MobileMoreSheet.d.ts +7 -0
- package/dist/components/dashboard/mobile/MobileMoreSheet.d.ts.map +1 -0
- package/dist/components/dashboard/mobile/MobileMoreSheet.js +135 -0
- package/dist/components/dashboard/mobile/MobileTopBar.d.ts +2 -0
- package/dist/components/dashboard/mobile/MobileTopBar.d.ts.map +1 -0
- package/dist/components/dashboard/mobile/MobileTopBar.js +109 -0
- package/dist/components/dashboard/mobile/QuickCreateSheet.d.ts +7 -0
- package/dist/components/dashboard/mobile/QuickCreateSheet.d.ts.map +1 -0
- package/dist/components/dashboard/mobile/QuickCreateSheet.js +69 -0
- package/dist/components/dashboard/mobile/index.d.ts +5 -0
- package/dist/components/dashboard/mobile/index.d.ts.map +1 -0
- package/dist/components/dashboard/mobile/index.js +10 -0
- package/dist/components/dashboard/navigation/DynamicNavigation.d.ts +10 -0
- package/dist/components/dashboard/navigation/DynamicNavigation.d.ts.map +1 -0
- package/dist/components/dashboard/navigation/DynamicNavigation.js +207 -0
- package/dist/components/devtools/BlockDetailViewer.d.ts +15 -0
- package/dist/components/devtools/BlockDetailViewer.d.ts.map +1 -0
- package/dist/components/devtools/BlockDetailViewer.js +309 -0
- package/dist/components/devtools/BlocksViewer.d.ts +14 -0
- package/dist/components/devtools/BlocksViewer.d.ts.map +1 -0
- package/dist/components/devtools/BlocksViewer.js +264 -0
- package/dist/components/devtools/ConfigViewer.d.ts +12 -0
- package/dist/components/devtools/ConfigViewer.d.ts.map +1 -0
- package/dist/components/devtools/ConfigViewer.js +209 -0
- package/dist/components/devtools/DevtoolsMobileHeader.d.ts +8 -0
- package/dist/components/devtools/DevtoolsMobileHeader.d.ts.map +1 -0
- package/dist/components/devtools/DevtoolsMobileHeader.js +16 -0
- package/dist/components/devtools/DevtoolsSidebar.d.ts +9 -0
- package/dist/components/devtools/DevtoolsSidebar.d.ts.map +1 -0
- package/dist/components/devtools/DevtoolsSidebar.js +224 -0
- package/dist/components/devtools/FeaturesViewer.d.ts +13 -0
- package/dist/components/devtools/FeaturesViewer.d.ts.map +1 -0
- package/dist/components/devtools/FeaturesViewer.js +216 -0
- package/dist/components/devtools/FileTree.d.ts +30 -0
- package/dist/components/devtools/FileTree.d.ts.map +1 -0
- package/dist/components/devtools/FileTree.js +95 -0
- package/dist/components/devtools/FlowsViewer.d.ts +14 -0
- package/dist/components/devtools/FlowsViewer.d.ts.map +1 -0
- package/dist/components/devtools/FlowsViewer.js +229 -0
- package/dist/components/devtools/MarkdownViewer.d.ts +20 -0
- package/dist/components/devtools/MarkdownViewer.d.ts.map +1 -0
- package/dist/components/devtools/MarkdownViewer.js +90 -0
- package/dist/components/devtools/TagsOverview.d.ts +12 -0
- package/dist/components/devtools/TagsOverview.d.ts.map +1 -0
- package/dist/components/devtools/TagsOverview.js +284 -0
- package/dist/components/devtools/TestCasesViewer.d.ts +19 -0
- package/dist/components/devtools/TestCasesViewer.d.ts.map +1 -0
- package/dist/components/devtools/TestCasesViewer.js +201 -0
- package/dist/components/devtools/api-tester/ApiTester.d.ts +3 -0
- package/dist/components/devtools/api-tester/ApiTester.d.ts.map +1 -0
- package/dist/components/devtools/api-tester/ApiTester.js +197 -0
- package/dist/components/devtools/api-tester/AuthSelector.d.ts +12 -0
- package/dist/components/devtools/api-tester/AuthSelector.d.ts.map +1 -0
- package/dist/components/devtools/api-tester/AuthSelector.js +75 -0
- package/dist/components/devtools/api-tester/KeyValueEditor.d.ts +11 -0
- package/dist/components/devtools/api-tester/KeyValueEditor.d.ts.map +1 -0
- package/dist/components/devtools/api-tester/KeyValueEditor.js +92 -0
- package/dist/components/devtools/api-tester/MethodSelector.d.ts +9 -0
- package/dist/components/devtools/api-tester/MethodSelector.d.ts.map +1 -0
- package/dist/components/devtools/api-tester/MethodSelector.js +32 -0
- package/dist/components/devtools/api-tester/PathParamsEditor.d.ts +8 -0
- package/dist/components/devtools/api-tester/PathParamsEditor.d.ts.map +1 -0
- package/dist/components/devtools/api-tester/PathParamsEditor.js +36 -0
- package/dist/components/devtools/api-tester/PayloadEditor.d.ts +7 -0
- package/dist/components/devtools/api-tester/PayloadEditor.d.ts.map +1 -0
- package/dist/components/devtools/api-tester/PayloadEditor.js +33 -0
- package/dist/components/devtools/api-tester/ResponseViewer.d.ts +9 -0
- package/dist/components/devtools/api-tester/ResponseViewer.d.ts.map +1 -0
- package/dist/components/devtools/api-tester/ResponseViewer.js +77 -0
- package/dist/components/devtools/api-tester/hooks/useApiRequest.d.ts +3 -0
- package/dist/components/devtools/api-tester/hooks/useApiRequest.d.ts.map +1 -0
- package/dist/components/devtools/api-tester/hooks/useApiRequest.js +93 -0
- package/dist/components/devtools/api-tester/index.d.ts +10 -0
- package/dist/components/devtools/api-tester/index.d.ts.map +1 -0
- package/dist/components/devtools/api-tester/index.js +19 -0
- package/dist/components/devtools/api-tester/types.d.ts +84 -0
- package/dist/components/devtools/api-tester/types.d.ts.map +1 -0
- package/dist/components/devtools/api-tester/types.js +0 -0
- package/dist/components/devtools/api-tester/utils/url-builder.d.ts +19 -0
- package/dist/components/devtools/api-tester/utils/url-builder.d.ts.map +1 -0
- package/dist/components/devtools/api-tester/utils/url-builder.js +70 -0
- package/dist/components/devtools/bdd/BDDHeader.d.ts +16 -0
- package/dist/components/devtools/bdd/BDDHeader.d.ts.map +1 -0
- package/dist/components/devtools/bdd/BDDHeader.js +114 -0
- package/dist/components/devtools/bdd/BDDTableOfContents.d.ts +14 -0
- package/dist/components/devtools/bdd/BDDTableOfContents.d.ts.map +1 -0
- package/dist/components/devtools/bdd/BDDTableOfContents.js +54 -0
- package/dist/components/devtools/bdd/BDDTestCard.d.ts +23 -0
- package/dist/components/devtools/bdd/BDDTestCard.d.ts.map +1 -0
- package/dist/components/devtools/bdd/BDDTestCard.js +127 -0
- package/dist/components/devtools/bdd/BDDTestViewer.d.ts +18 -0
- package/dist/components/devtools/bdd/BDDTestViewer.d.ts.map +1 -0
- package/dist/components/devtools/bdd/BDDTestViewer.js +175 -0
- package/dist/components/devtools/bdd/GherkinHighlighter.d.ts +17 -0
- package/dist/components/devtools/bdd/GherkinHighlighter.d.ts.map +1 -0
- package/dist/components/devtools/bdd/GherkinHighlighter.js +82 -0
- package/dist/components/devtools/bdd/index.d.ts +13 -0
- package/dist/components/devtools/bdd/index.d.ts.map +1 -0
- package/dist/components/devtools/bdd/index.js +14 -0
- package/dist/components/devtools/bdd/parser.d.ts +12 -0
- package/dist/components/devtools/bdd/parser.d.ts.map +1 -0
- package/dist/components/devtools/bdd/parser.js +141 -0
- package/dist/components/devtools/bdd/types.d.ts +41 -0
- package/dist/components/devtools/bdd/types.d.ts.map +1 -0
- package/dist/components/devtools/bdd/types.js +0 -0
- package/dist/components/devtools/index.d.ts +20 -0
- package/dist/components/devtools/index.d.ts.map +1 -0
- package/dist/components/devtools/index.js +27 -0
- package/dist/components/devtools/scheduled-actions/actions-table.d.ts +10 -0
- package/dist/components/devtools/scheduled-actions/actions-table.d.ts.map +1 -0
- package/dist/components/devtools/scheduled-actions/actions-table.js +105 -0
- package/dist/components/devtools/scheduled-actions/filters.d.ts +12 -0
- package/dist/components/devtools/scheduled-actions/filters.d.ts.map +1 -0
- package/dist/components/devtools/scheduled-actions/filters.js +96 -0
- package/dist/components/devtools/scheduled-actions/types.d.ts +24 -0
- package/dist/components/devtools/scheduled-actions/types.d.ts.map +1 -0
- package/dist/components/devtools/scheduled-actions/types.js +0 -0
- package/dist/components/docs/docs-breadcrumbs.d.ts +10 -0
- package/dist/components/docs/docs-breadcrumbs.d.ts.map +1 -0
- package/dist/components/docs/docs-breadcrumbs.js +45 -0
- package/dist/components/docs/docs-content.d.ts +6 -0
- package/dist/components/docs/docs-content.d.ts.map +1 -0
- package/dist/components/docs/docs-content.js +15 -0
- package/dist/components/docs/docs-layout.d.ts +6 -0
- package/dist/components/docs/docs-layout.d.ts.map +1 -0
- package/dist/components/docs/docs-layout.js +58 -0
- package/dist/components/docs/docs-sidebar.d.ts +7 -0
- package/dist/components/docs/docs-sidebar.d.ts.map +1 -0
- package/dist/components/docs/docs-sidebar.js +355 -0
- package/dist/components/docs/index.d.ts +11 -0
- package/dist/components/docs/index.d.ts.map +1 -0
- package/dist/components/docs/index.js +10 -0
- package/dist/components/entities/EntityBulkActions.d.ts +14 -0
- package/dist/components/entities/EntityBulkActions.d.ts.map +1 -0
- package/dist/components/entities/EntityBulkActions.js +259 -0
- package/dist/components/entities/EntityChildManager.d.ts +36 -0
- package/dist/components/entities/EntityChildManager.d.ts.map +1 -0
- package/dist/components/entities/EntityChildManager.js +614 -0
- package/dist/components/entities/EntityDetail.d.ts +61 -0
- package/dist/components/entities/EntityDetail.d.ts.map +1 -0
- package/dist/components/entities/EntityDetail.js +231 -0
- package/dist/components/entities/EntityDetailHeader.d.ts +46 -0
- package/dist/components/entities/EntityDetailHeader.d.ts.map +1 -0
- package/dist/components/entities/EntityDetailHeader.js +192 -0
- package/dist/components/entities/EntityDetailPage.d.ts +15 -0
- package/dist/components/entities/EntityDetailPage.d.ts.map +1 -0
- package/dist/components/entities/EntityDetailPage.js +129 -0
- package/dist/components/entities/EntityFieldRenderer.d.ts +29 -0
- package/dist/components/entities/EntityFieldRenderer.d.ts.map +1 -0
- package/dist/components/entities/EntityFieldRenderer.js +735 -0
- package/dist/components/entities/EntityForm.d.ts +28 -0
- package/dist/components/entities/EntityForm.d.ts.map +1 -0
- package/dist/components/entities/EntityForm.js +426 -0
- package/dist/components/entities/EntityList.d.ts +39 -0
- package/dist/components/entities/EntityList.d.ts.map +1 -0
- package/dist/components/entities/EntityList.js +478 -0
- package/dist/components/entities/EntityNavigation.d.ts +48 -0
- package/dist/components/entities/EntityNavigation.d.ts.map +1 -0
- package/dist/components/entities/EntityNavigation.js +260 -0
- package/dist/components/entities/EntityPageHeader.d.ts +16 -0
- package/dist/components/entities/EntityPageHeader.d.ts.map +1 -0
- package/dist/components/entities/EntityPageHeader.js +56 -0
- package/dist/components/entities/EntitySearch.d.ts +55 -0
- package/dist/components/entities/EntitySearch.d.ts.map +1 -0
- package/dist/components/entities/EntitySearch.js +494 -0
- package/dist/components/entities/EntityTable.d.ts +26 -0
- package/dist/components/entities/EntityTable.d.ts.map +1 -0
- package/dist/components/entities/EntityTable.js +781 -0
- package/dist/components/entities/ErrorBoundary.d.ts +48 -0
- package/dist/components/entities/ErrorBoundary.d.ts.map +1 -0
- package/dist/components/entities/ErrorBoundary.js +261 -0
- package/dist/components/entities/entity-table.types.d.ts +224 -0
- package/dist/components/entities/entity-table.types.d.ts.map +1 -0
- package/dist/components/entities/entity-table.types.js +17 -0
- package/dist/components/entities/index.d.ts +33 -0
- package/dist/components/entities/index.d.ts.map +1 -0
- package/dist/components/entities/index.js +43 -0
- package/dist/components/entities/wrappers/EntityDetailWrapper.d.ts +24 -0
- package/dist/components/entities/wrappers/EntityDetailWrapper.d.ts.map +1 -0
- package/dist/components/entities/wrappers/EntityDetailWrapper.js +381 -0
- package/dist/components/entities/wrappers/EntityFormWrapper.d.ts +25 -0
- package/dist/components/entities/wrappers/EntityFormWrapper.d.ts.map +1 -0
- package/dist/components/entities/wrappers/EntityFormWrapper.js +121 -0
- package/dist/components/entities/wrappers/EntityListWrapper.d.ts +24 -0
- package/dist/components/entities/wrappers/EntityListWrapper.d.ts.map +1 -0
- package/dist/components/entities/wrappers/EntityListWrapper.js +283 -0
- package/dist/components/entities/wrappers/index.d.ts +13 -0
- package/dist/components/entities/wrappers/index.d.ts.map +1 -0
- package/dist/components/entities/wrappers/index.js +8 -0
- package/dist/components/permissions/NoPermission.d.ts +22 -0
- package/dist/components/permissions/NoPermission.d.ts.map +1 -0
- package/dist/components/permissions/NoPermission.js +73 -0
- package/dist/components/permissions/PermissionGate.d.ts +73 -0
- package/dist/components/permissions/PermissionGate.d.ts.map +1 -0
- package/dist/components/permissions/PermissionGate.js +58 -0
- package/dist/components/permissions/PermissionsMatrix.d.ts +32 -0
- package/dist/components/permissions/PermissionsMatrix.d.ts.map +1 -0
- package/dist/components/permissions/PermissionsMatrix.js +92 -0
- package/dist/components/permissions/index.d.ts +9 -0
- package/dist/components/permissions/index.d.ts.map +1 -0
- package/dist/components/permissions/index.js +9 -0
- package/dist/components/public/entities/PublicEntityCard.d.ts +16 -0
- package/dist/components/public/entities/PublicEntityCard.d.ts.map +1 -0
- package/dist/components/public/entities/PublicEntityCard.js +89 -0
- package/dist/components/public/entities/PublicEntityDetail.d.ts +15 -0
- package/dist/components/public/entities/PublicEntityDetail.d.ts.map +1 -0
- package/dist/components/public/entities/PublicEntityDetail.js +171 -0
- package/dist/components/public/entities/PublicEntityGrid.d.ts +17 -0
- package/dist/components/public/entities/PublicEntityGrid.d.ts.map +1 -0
- package/dist/components/public/entities/PublicEntityGrid.js +203 -0
- package/dist/components/public/entities/index.d.ts +9 -0
- package/dist/components/public/entities/index.d.ts.map +1 -0
- package/dist/components/public/entities/index.js +8 -0
- package/dist/components/settings/SettingsPageSkeleton.d.ts +11 -0
- package/dist/components/settings/SettingsPageSkeleton.d.ts.map +1 -0
- package/dist/components/settings/SettingsPageSkeleton.js +129 -0
- package/dist/components/settings/index.d.ts +8 -0
- package/dist/components/settings/index.d.ts.map +1 -0
- package/dist/components/settings/index.js +6 -0
- package/dist/components/settings/layouts/SettingsSidebar.d.ts +6 -0
- package/dist/components/settings/layouts/SettingsSidebar.d.ts.map +1 -0
- package/dist/components/settings/layouts/SettingsSidebar.js +201 -0
- package/dist/components/settings/layouts/index.d.ts +7 -0
- package/dist/components/settings/layouts/index.d.ts.map +1 -0
- package/dist/components/settings/layouts/index.js +4 -0
- package/dist/components/shared/CopyableId.d.ts +13 -0
- package/dist/components/shared/CopyableId.d.ts.map +1 -0
- package/dist/components/shared/CopyableId.js +37 -0
- package/dist/components/shared/MultiSelectFilter.d.ts +41 -0
- package/dist/components/shared/MultiSelectFilter.d.ts.map +1 -0
- package/dist/components/shared/MultiSelectFilter.js +140 -0
- package/dist/components/shared/SearchInput.d.ts +22 -0
- package/dist/components/shared/SearchInput.d.ts.map +1 -0
- package/dist/components/shared/SearchInput.js +41 -0
- package/dist/components/shared/index.d.ts +11 -0
- package/dist/components/shared/index.d.ts.map +1 -0
- package/dist/components/shared/index.js +8 -0
- package/dist/components/superadmin/filters/FilterDropdown.d.ts +24 -0
- package/dist/components/superadmin/filters/FilterDropdown.d.ts.map +1 -0
- package/dist/components/superadmin/filters/FilterDropdown.js +50 -0
- package/dist/components/superadmin/filters/PaginationControls.d.ts +18 -0
- package/dist/components/superadmin/filters/PaginationControls.d.ts.map +1 -0
- package/dist/components/superadmin/filters/PaginationControls.js +127 -0
- package/dist/components/superadmin/filters/SearchInput.d.ts +17 -0
- package/dist/components/superadmin/filters/SearchInput.d.ts.map +1 -0
- package/dist/components/superadmin/filters/SearchInput.js +64 -0
- package/dist/components/superadmin/filters/index.d.ts +4 -0
- package/dist/components/superadmin/filters/index.d.ts.map +1 -0
- package/dist/components/superadmin/filters/index.js +8 -0
- package/dist/components/superadmin/index.d.ts +14 -0
- package/dist/components/superadmin/index.d.ts.map +1 -0
- package/dist/components/superadmin/index.js +20 -0
- package/dist/components/superadmin/layouts/SuperadminSidebar.d.ts +8 -0
- package/dist/components/superadmin/layouts/SuperadminSidebar.d.ts.map +1 -0
- package/dist/components/superadmin/layouts/SuperadminSidebar.js +184 -0
- package/dist/components/superadmin/layouts/index.d.ts +7 -0
- package/dist/components/superadmin/layouts/index.d.ts.map +1 -0
- package/dist/components/superadmin/layouts/index.js +4 -0
- package/dist/components/superadmin/misc/ComponentGallery.d.ts +8 -0
- package/dist/components/superadmin/misc/ComponentGallery.d.ts.map +1 -0
- package/dist/components/superadmin/misc/ComponentGallery.js +539 -0
- package/dist/components/superadmin/misc/FieldTypesGallery.d.ts +7 -0
- package/dist/components/superadmin/misc/FieldTypesGallery.d.ts.map +1 -0
- package/dist/components/superadmin/misc/FieldTypesGallery.js +664 -0
- package/dist/components/superadmin/misc/ThemePreview.d.ts +8 -0
- package/dist/components/superadmin/misc/ThemePreview.d.ts.map +1 -0
- package/dist/components/superadmin/misc/ThemePreview.js +347 -0
- package/dist/components/superadmin/misc/index.d.ts +9 -0
- package/dist/components/superadmin/misc/index.d.ts.map +1 -0
- package/dist/components/superadmin/misc/index.js +8 -0
- package/dist/components/superadmin/tables/PlanFeaturesMatrix.d.ts +21 -0
- package/dist/components/superadmin/tables/PlanFeaturesMatrix.d.ts.map +1 -0
- package/dist/components/superadmin/tables/PlanFeaturesMatrix.js +161 -0
- package/dist/components/superadmin/tables/RolesPermissionsMatrix.d.ts +25 -0
- package/dist/components/superadmin/tables/RolesPermissionsMatrix.d.ts.map +1 -0
- package/dist/components/superadmin/tables/RolesPermissionsMatrix.js +138 -0
- package/dist/components/superadmin/tables/TeamsTable.d.ts +26 -0
- package/dist/components/superadmin/tables/TeamsTable.d.ts.map +1 -0
- package/dist/components/superadmin/tables/TeamsTable.js +137 -0
- package/dist/components/superadmin/tables/index.d.ts +9 -0
- package/dist/components/superadmin/tables/index.d.ts.map +1 -0
- package/dist/components/superadmin/tables/index.js +8 -0
- package/dist/components/teams/CreateTeamButton.d.ts +47 -0
- package/dist/components/teams/CreateTeamButton.d.ts.map +1 -0
- package/dist/components/teams/CreateTeamButton.js +43 -0
- package/dist/components/teams/CreateTeamDialog.d.ts +7 -0
- package/dist/components/teams/CreateTeamDialog.d.ts.map +1 -0
- package/dist/components/teams/CreateTeamDialog.js +133 -0
- package/dist/components/teams/InviteMemberButton.d.ts +58 -0
- package/dist/components/teams/InviteMemberButton.d.ts.map +1 -0
- package/dist/components/teams/InviteMemberButton.js +67 -0
- package/dist/components/teams/InviteMemberDialog.d.ts +17 -0
- package/dist/components/teams/InviteMemberDialog.d.ts.map +1 -0
- package/dist/components/teams/InviteMemberDialog.js +120 -0
- package/dist/components/teams/TeamBadge.d.ts +9 -0
- package/dist/components/teams/TeamBadge.d.ts.map +1 -0
- package/dist/components/teams/TeamBadge.js +27 -0
- package/dist/components/teams/TeamDetailSection.d.ts +9 -0
- package/dist/components/teams/TeamDetailSection.d.ts.map +1 -0
- package/dist/components/teams/TeamDetailSection.js +20 -0
- package/dist/components/teams/TeamMembersList.d.ts +15 -0
- package/dist/components/teams/TeamMembersList.d.ts.map +1 -0
- package/dist/components/teams/TeamMembersList.js +157 -0
- package/dist/components/teams/TeamPendingInvitations.d.ts +6 -0
- package/dist/components/teams/TeamPendingInvitations.d.ts.map +1 -0
- package/dist/components/teams/TeamPendingInvitations.js +168 -0
- package/dist/components/teams/TeamSwitchModal.d.js +0 -0
- package/dist/components/teams/TeamSwitchModal.d.ts +16 -0
- package/dist/components/teams/TeamSwitchModal.d.ts.map +1 -0
- package/dist/components/teams/TeamSwitchModal.js +169 -0
- package/dist/components/teams/TeamSwitcher.d.ts +6 -0
- package/dist/components/teams/TeamSwitcher.d.ts.map +1 -0
- package/dist/components/teams/TeamSwitcher.js +109 -0
- package/dist/components/teams/TeamSwitcherCompact.d.ts +21 -0
- package/dist/components/teams/TeamSwitcherCompact.d.ts.map +1 -0
- package/dist/components/teams/TeamSwitcherCompact.js +123 -0
- package/dist/components/teams/index.d.ts +17 -0
- package/dist/components/teams/index.d.ts.map +1 -0
- package/dist/components/teams/index.js +24 -0
- package/dist/components/ui/accordion.d.js +0 -0
- package/dist/components/ui/accordion.d.ts +8 -0
- package/dist/components/ui/accordion.d.ts.map +1 -0
- package/dist/components/ui/accordion.js +48 -0
- package/dist/components/ui/address-input.d.ts +19 -0
- package/dist/components/ui/address-input.d.ts.map +1 -0
- package/dist/components/ui/address-input.js +201 -0
- package/dist/components/ui/alert-dialog.d.ts +21 -0
- package/dist/components/ui/alert-dialog.d.ts.map +1 -0
- package/dist/components/ui/alert-dialog.js +117 -0
- package/dist/components/ui/alert.d.ts +9 -0
- package/dist/components/ui/alert.d.ts.map +1 -0
- package/dist/components/ui/alert.js +51 -0
- package/dist/components/ui/audio-upload.d.ts +22 -0
- package/dist/components/ui/audio-upload.d.ts.map +1 -0
- package/dist/components/ui/audio-upload.js +270 -0
- package/dist/components/ui/avatar.d.js +0 -0
- package/dist/components/ui/avatar.d.ts +7 -0
- package/dist/components/ui/avatar.d.ts.map +1 -0
- package/dist/components/ui/avatar.js +43 -0
- package/dist/components/ui/badge.d.js +0 -0
- package/dist/components/ui/badge.d.ts +10 -0
- package/dist/components/ui/badge.d.ts.map +1 -0
- package/dist/components/ui/badge.js +26 -0
- package/dist/components/ui/breadcrumb.d.ts +20 -0
- package/dist/components/ui/breadcrumb.d.ts.map +1 -0
- package/dist/components/ui/breadcrumb.js +93 -0
- package/dist/components/ui/button-group.d.ts +19 -0
- package/dist/components/ui/button-group.d.ts.map +1 -0
- package/dist/components/ui/button-group.js +70 -0
- package/dist/components/ui/button.d.js +0 -0
- package/dist/components/ui/button.d.ts +11 -0
- package/dist/components/ui/button.d.ts.map +1 -0
- package/dist/components/ui/button.js +50 -0
- package/dist/components/ui/calendar.d.ts +9 -0
- package/dist/components/ui/calendar.d.ts.map +1 -0
- package/dist/components/ui/calendar.js +192 -0
- package/dist/components/ui/card.d.js +0 -0
- package/dist/components/ui/card.d.ts +9 -0
- package/dist/components/ui/card.d.ts.map +1 -0
- package/dist/components/ui/card.js +61 -0
- package/dist/components/ui/checkbox.d.ts +5 -0
- package/dist/components/ui/checkbox.d.ts.map +1 -0
- package/dist/components/ui/checkbox.js +28 -0
- package/dist/components/ui/collapsible.d.ts +6 -0
- package/dist/components/ui/collapsible.d.ts.map +1 -0
- package/dist/components/ui/collapsible.js +10 -0
- package/dist/components/ui/combobox.d.ts +20 -0
- package/dist/components/ui/combobox.d.ts.map +1 -0
- package/dist/components/ui/combobox.js +126 -0
- package/dist/components/ui/command.d.ts +81 -0
- package/dist/components/ui/command.d.ts.map +1 -0
- package/dist/components/ui/command.js +115 -0
- package/dist/components/ui/context-menu.d.ts +28 -0
- package/dist/components/ui/context-menu.d.ts.map +1 -0
- package/dist/components/ui/context-menu.js +154 -0
- package/dist/components/ui/country-select.d.ts +11 -0
- package/dist/components/ui/country-select.d.ts.map +1 -0
- package/dist/components/ui/country-select.js +141 -0
- package/dist/components/ui/currency-select.d.ts +11 -0
- package/dist/components/ui/currency-select.d.ts.map +1 -0
- package/dist/components/ui/currency-select.js +70 -0
- package/dist/components/ui/dialog.d.js +0 -0
- package/dist/components/ui/dialog.d.ts +16 -0
- package/dist/components/ui/dialog.d.ts.map +1 -0
- package/dist/components/ui/dialog.js +137 -0
- package/dist/components/ui/double-range.d.ts +14 -0
- package/dist/components/ui/double-range.d.ts.map +1 -0
- package/dist/components/ui/double-range.js +158 -0
- package/dist/components/ui/dropdown-menu.d.js +0 -0
- package/dist/components/ui/dropdown-menu.d.ts +28 -0
- package/dist/components/ui/dropdown-menu.d.ts.map +1 -0
- package/dist/components/ui/dropdown-menu.js +153 -0
- package/dist/components/ui/file-upload.d.ts +23 -0
- package/dist/components/ui/file-upload.d.ts.map +1 -0
- package/dist/components/ui/file-upload.js +196 -0
- package/dist/components/ui/form.d.ts +24 -0
- package/dist/components/ui/form.d.ts.map +1 -0
- package/dist/components/ui/form.js +114 -0
- package/dist/components/ui/google-icon.d.ts +11 -0
- package/dist/components/ui/google-icon.d.ts.map +1 -0
- package/dist/components/ui/google-icon.js +52 -0
- package/dist/components/ui/image-upload.d.ts +24 -0
- package/dist/components/ui/image-upload.d.ts.map +1 -0
- package/dist/components/ui/image-upload.js +230 -0
- package/dist/components/ui/index.d.ts +48 -0
- package/dist/components/ui/index.d.ts.map +1 -0
- package/dist/components/ui/index.js +47 -0
- package/dist/components/ui/input.d.js +0 -0
- package/dist/components/ui/input.d.ts +4 -0
- package/dist/components/ui/input.d.ts.map +1 -0
- package/dist/components/ui/input.js +23 -0
- package/dist/components/ui/label.d.ts +5 -0
- package/dist/components/ui/label.d.ts.map +1 -0
- package/dist/components/ui/label.js +23 -0
- package/dist/components/ui/last-used-badge.d.ts +9 -0
- package/dist/components/ui/last-used-badge.d.ts.map +1 -0
- package/dist/components/ui/last-used-badge.js +27 -0
- package/dist/components/ui/menubar.d.ts +29 -0
- package/dist/components/ui/menubar.d.ts.map +1 -0
- package/dist/components/ui/menubar.js +203 -0
- package/dist/components/ui/multi-select.d.ts +18 -0
- package/dist/components/ui/multi-select.d.ts.map +1 -0
- package/dist/components/ui/multi-select.js +110 -0
- package/dist/components/ui/pagination.d.ts +30 -0
- package/dist/components/ui/pagination.d.ts.map +1 -0
- package/dist/components/ui/pagination.js +105 -0
- package/dist/components/ui/password-input.d.ts +8 -0
- package/dist/components/ui/password-input.d.ts.map +1 -0
- package/dist/components/ui/password-input.js +58 -0
- package/dist/components/ui/phone-input.d.ts +12 -0
- package/dist/components/ui/phone-input.d.ts.map +1 -0
- package/dist/components/ui/phone-input.js +84 -0
- package/dist/components/ui/popover.d.ts +8 -0
- package/dist/components/ui/popover.d.ts.map +1 -0
- package/dist/components/ui/popover.js +28 -0
- package/dist/components/ui/progress.d.js +0 -0
- package/dist/components/ui/progress.d.ts +5 -0
- package/dist/components/ui/progress.d.ts.map +1 -0
- package/dist/components/ui/progress.js +27 -0
- package/dist/components/ui/radio-group.d.ts +6 -0
- package/dist/components/ui/radio-group.d.ts.map +1 -0
- package/dist/components/ui/radio-group.js +36 -0
- package/dist/components/ui/rating.d.ts +14 -0
- package/dist/components/ui/rating.d.ts.map +1 -0
- package/dist/components/ui/rating.js +109 -0
- package/dist/components/ui/relation-display.d.ts +13 -0
- package/dist/components/ui/relation-display.d.ts.map +1 -0
- package/dist/components/ui/relation-display.js +121 -0
- package/dist/components/ui/rich-text-editor.d.ts +22 -0
- package/dist/components/ui/rich-text-editor.d.ts.map +1 -0
- package/dist/components/ui/rich-text-editor.js +130 -0
- package/dist/components/ui/scroll-area.d.js +0 -0
- package/dist/components/ui/scroll-area.d.ts +6 -0
- package/dist/components/ui/scroll-area.d.ts.map +1 -0
- package/dist/components/ui/scroll-area.js +39 -0
- package/dist/components/ui/select.d.js +0 -0
- package/dist/components/ui/select.d.ts +14 -0
- package/dist/components/ui/select.d.ts.map +1 -0
- package/dist/components/ui/select.js +125 -0
- package/dist/components/ui/separator.d.js +0 -0
- package/dist/components/ui/separator.d.ts +5 -0
- package/dist/components/ui/separator.d.ts.map +1 -0
- package/dist/components/ui/separator.js +25 -0
- package/dist/components/ui/sheet.d.ts +26 -0
- package/dist/components/ui/sheet.d.ts.map +1 -0
- package/dist/components/ui/sheet.js +116 -0
- package/dist/components/ui/simple-relation-select.d.ts +30 -0
- package/dist/components/ui/simple-relation-select.d.ts.map +1 -0
- package/dist/components/ui/simple-relation-select.js +516 -0
- package/dist/components/ui/skeleton-detail.d.ts +30 -0
- package/dist/components/ui/skeleton-detail.d.ts.map +1 -0
- package/dist/components/ui/skeleton-detail.js +83 -0
- package/dist/components/ui/skeleton-form.d.ts +46 -0
- package/dist/components/ui/skeleton-form.d.ts.map +1 -0
- package/dist/components/ui/skeleton-form.js +103 -0
- package/dist/components/ui/skeleton-list.d.ts +45 -0
- package/dist/components/ui/skeleton-list.d.ts.map +1 -0
- package/dist/components/ui/skeleton-list.js +102 -0
- package/dist/components/ui/skeleton.d.ts +3 -0
- package/dist/components/ui/skeleton.d.ts.map +1 -0
- package/dist/components/ui/skeleton.js +17 -0
- package/dist/components/ui/slider.d.ts +5 -0
- package/dist/components/ui/slider.d.ts.map +1 -0
- package/dist/components/ui/slider.js +24 -0
- package/dist/components/ui/sonner.d.ts +5 -0
- package/dist/components/ui/sonner.d.ts.map +1 -0
- package/dist/components/ui/sonner.js +26 -0
- package/dist/components/ui/switch.d.ts +5 -0
- package/dist/components/ui/switch.d.ts.map +1 -0
- package/dist/components/ui/switch.js +28 -0
- package/dist/components/ui/table.d.js +0 -0
- package/dist/components/ui/table.d.ts +11 -0
- package/dist/components/ui/table.d.ts.map +1 -0
- package/dist/components/ui/table.js +90 -0
- package/dist/components/ui/tabs.d.ts +8 -0
- package/dist/components/ui/tabs.d.ts.map +1 -0
- package/dist/components/ui/tabs.js +48 -0
- package/dist/components/ui/tags-input.d.ts +13 -0
- package/dist/components/ui/tags-input.d.ts.map +1 -0
- package/dist/components/ui/tags-input.js +120 -0
- package/dist/components/ui/textarea.d.js +0 -0
- package/dist/components/ui/textarea.d.ts +4 -0
- package/dist/components/ui/textarea.d.ts.map +1 -0
- package/dist/components/ui/textarea.js +20 -0
- package/dist/components/ui/timezone-select.d.ts +11 -0
- package/dist/components/ui/timezone-select.d.ts.map +1 -0
- package/dist/components/ui/timezone-select.js +65 -0
- package/dist/components/ui/toggle.d.ts +13 -0
- package/dist/components/ui/toggle.d.ts.map +1 -0
- package/dist/components/ui/toggle.js +39 -0
- package/dist/components/ui/tooltip.d.ts +8 -0
- package/dist/components/ui/tooltip.d.ts.map +1 -0
- package/dist/components/ui/tooltip.js +35 -0
- package/dist/components/ui/user-display.d.ts +15 -0
- package/dist/components/ui/user-display.d.ts.map +1 -0
- package/dist/components/ui/user-display.js +117 -0
- package/dist/components/ui/user-select.d.ts +28 -0
- package/dist/components/ui/user-select.d.ts.map +1 -0
- package/dist/components/ui/user-select.js +310 -0
- package/dist/components/ui/video-upload.d.ts +22 -0
- package/dist/components/ui/video-upload.d.ts.map +1 -0
- package/dist/components/ui/video-upload.js +234 -0
- package/dist/components/users/tables/SuperAdminsTable.d.ts +26 -0
- package/dist/components/users/tables/SuperAdminsTable.d.ts.map +1 -0
- package/dist/components/users/tables/SuperAdminsTable.js +161 -0
- package/dist/components/users/tables/UsersTable.d.ts +27 -0
- package/dist/components/users/tables/UsersTable.d.ts.map +1 -0
- package/dist/components/users/tables/UsersTable.js +364 -0
- package/dist/config/protected-paths.d.ts +64 -0
- package/dist/config/protected-paths.d.ts.map +1 -0
- package/dist/config/protected-paths.js +74 -0
- package/dist/config/protected-paths.ts +123 -0
- package/dist/contexts/SubscriptionContext.d.ts +42 -0
- package/dist/contexts/SubscriptionContext.d.ts.map +1 -0
- package/dist/contexts/SubscriptionContext.js +99 -0
- package/dist/contexts/TeamContext.d.js +0 -0
- package/dist/contexts/TeamContext.d.ts +17 -0
- package/dist/contexts/TeamContext.d.ts.map +1 -0
- package/dist/contexts/TeamContext.js +162 -0
- package/dist/contexts/index.d.ts +4 -0
- package/dist/contexts/index.d.ts.map +1 -0
- package/dist/contexts/index.js +3 -0
- package/dist/contexts/sidebar-context.d.ts +13 -0
- package/dist/contexts/sidebar-context.d.ts.map +1 -0
- package/dist/contexts/sidebar-context.js +20 -0
- package/dist/hooks/index.d.ts +40 -0
- package/dist/hooks/index.d.ts.map +1 -0
- package/dist/hooks/index.js +39 -0
- package/dist/hooks/useAuth.d.js +0 -0
- package/dist/hooks/useAuth.d.ts +132 -0
- package/dist/hooks/useAuth.d.ts.map +1 -0
- package/dist/hooks/useAuth.js +186 -0
- package/dist/hooks/useAuthMethodDetector.d.ts +6 -0
- package/dist/hooks/useAuthMethodDetector.d.ts.map +1 -0
- package/dist/hooks/useAuthMethodDetector.js +25 -0
- package/dist/hooks/useContentTranslation.d.ts +55 -0
- package/dist/hooks/useContentTranslation.d.ts.map +1 -0
- package/dist/hooks/useContentTranslation.js +198 -0
- package/dist/hooks/useContextAwareTranslations.d.ts +15 -0
- package/dist/hooks/useContextAwareTranslations.d.ts.map +1 -0
- package/dist/hooks/useContextAwareTranslations.js +96 -0
- package/dist/hooks/useDebounce.d.ts +21 -0
- package/dist/hooks/useDebounce.d.ts.map +1 -0
- package/dist/hooks/useDebounce.js +85 -0
- package/dist/hooks/useEnabledEntities.d.ts +25 -0
- package/dist/hooks/useEnabledEntities.d.ts.map +1 -0
- package/dist/hooks/useEnabledEntities.js +63 -0
- package/dist/hooks/useEnsureUserMetadata.d.ts +2 -0
- package/dist/hooks/useEnsureUserMetadata.d.ts.map +1 -0
- package/dist/hooks/useEnsureUserMetadata.js +71 -0
- package/dist/hooks/useEntity.d.ts +69 -0
- package/dist/hooks/useEntity.d.ts.map +1 -0
- package/dist/hooks/useEntity.js +189 -0
- package/dist/hooks/useEntityConfig.d.ts +41 -0
- package/dist/hooks/useEntityConfig.d.ts.map +1 -0
- package/dist/hooks/useEntityConfig.js +131 -0
- package/dist/hooks/useEntityMutations.d.ts +31 -0
- package/dist/hooks/useEntityMutations.d.ts.map +1 -0
- package/dist/hooks/useEntityMutations.js +188 -0
- package/dist/hooks/useEntityQuery.d.ts +207 -0
- package/dist/hooks/useEntityQuery.d.ts.map +1 -0
- package/dist/hooks/useEntityQuery.js +101 -0
- package/dist/hooks/useEntitySearch.d.ts +35 -0
- package/dist/hooks/useEntitySearch.d.ts.map +1 -0
- package/dist/hooks/useEntitySearch.js +190 -0
- package/dist/hooks/useEntityTranslations.d.ts +26 -0
- package/dist/hooks/useEntityTranslations.d.ts.map +1 -0
- package/dist/hooks/useEntityTranslations.js +105 -0
- package/dist/hooks/useEntityWithMeta.d.ts +80 -0
- package/dist/hooks/useEntityWithMeta.d.ts.map +1 -0
- package/dist/hooks/useEntityWithMeta.js +132 -0
- package/dist/hooks/useFeature.d.ts +16 -0
- package/dist/hooks/useFeature.d.ts.map +1 -0
- package/dist/hooks/useFeature.js +14 -0
- package/dist/hooks/useInvoice.d.ts +14 -0
- package/dist/hooks/useInvoice.d.ts.map +1 -0
- package/dist/hooks/useInvoice.js +29 -0
- package/dist/hooks/useInvoices.d.ts +21 -0
- package/dist/hooks/useInvoices.d.ts.map +1 -0
- package/dist/hooks/useInvoices.js +31 -0
- package/dist/hooks/useLastAuthMethod.d.js +0 -0
- package/dist/hooks/useLastAuthMethod.d.ts +7 -0
- package/dist/hooks/useLastAuthMethod.d.ts.map +1 -0
- package/dist/hooks/useLastAuthMethod.js +48 -0
- package/dist/hooks/useLocale.d.ts +8 -0
- package/dist/hooks/useLocale.d.ts.map +1 -0
- package/dist/hooks/useLocale.js +37 -0
- package/dist/hooks/useMembership.d.ts +64 -0
- package/dist/hooks/useMembership.d.ts.map +1 -0
- package/dist/hooks/useMembership.js +76 -0
- package/dist/hooks/useNotifications.d.ts +18 -0
- package/dist/hooks/useNotifications.d.ts.map +1 -0
- package/dist/hooks/useNotifications.js +105 -0
- package/dist/hooks/useOrigin.d.js +0 -0
- package/dist/hooks/useOrigin.d.ts +2 -0
- package/dist/hooks/useOrigin.d.ts.map +1 -0
- package/dist/hooks/useOrigin.js +25 -0
- package/dist/hooks/useQuickCreateEntities.d.ts +13 -0
- package/dist/hooks/useQuickCreateEntities.d.ts.map +1 -0
- package/dist/hooks/useQuickCreateEntities.js +46 -0
- package/dist/hooks/useQuota.d.ts +26 -0
- package/dist/hooks/useQuota.d.ts.map +1 -0
- package/dist/hooks/useQuota.js +37 -0
- package/dist/hooks/useSearch.d.ts +23 -0
- package/dist/hooks/useSearch.d.ts.map +1 -0
- package/dist/hooks/useSearch.js +179 -0
- package/dist/hooks/useSidebarState.d.ts +7 -0
- package/dist/hooks/useSidebarState.d.ts.map +1 -0
- package/dist/hooks/useSidebarState.js +46 -0
- package/dist/hooks/useSubscription.d.ts +10 -0
- package/dist/hooks/useSubscription.d.ts.map +1 -0
- package/dist/hooks/useSubscription.js +7 -0
- package/dist/hooks/useTeam.d.ts +10 -0
- package/dist/hooks/useTeam.d.ts.map +1 -0
- package/dist/hooks/useTeam.js +14 -0
- package/dist/hooks/useTeamInvitations.d.ts +14 -0
- package/dist/hooks/useTeamInvitations.d.ts.map +1 -0
- package/dist/hooks/useTeamInvitations.js +60 -0
- package/dist/hooks/useTeamMembers.d.ts +29 -0
- package/dist/hooks/useTeamMembers.d.ts.map +1 -0
- package/dist/hooks/useTeamMembers.js +88 -0
- package/dist/hooks/useTeams.d.ts +13 -0
- package/dist/hooks/useTeams.d.ts.map +1 -0
- package/dist/hooks/useTeams.js +44 -0
- package/dist/hooks/useTeamsConfig.d.ts +35 -0
- package/dist/hooks/useTeamsConfig.d.ts.map +1 -0
- package/dist/hooks/useTeamsConfig.js +24 -0
- package/dist/hooks/useToast.d.ts +19 -0
- package/dist/hooks/useToast.d.ts.map +1 -0
- package/dist/hooks/useToast.js +60 -0
- package/dist/hooks/useTranslationPreload.d.ts +13 -0
- package/dist/hooks/useTranslationPreload.d.ts.map +1 -0
- package/dist/hooks/useTranslationPreload.js +94 -0
- package/dist/hooks/useTreeNavigation.d.ts +48 -0
- package/dist/hooks/useTreeNavigation.d.ts.map +1 -0
- package/dist/hooks/useTreeNavigation.js +113 -0
- package/dist/hooks/useUrlFilters.d.ts +5 -0
- package/dist/hooks/useUrlFilters.d.ts.map +1 -0
- package/dist/hooks/useUrlFilters.js +127 -0
- package/dist/hooks/useUrlFilters.types.d.ts +92 -0
- package/dist/hooks/useUrlFilters.types.d.ts.map +1 -0
- package/dist/hooks/useUrlFilters.types.js +0 -0
- package/dist/hooks/useUrlFilters.utils.d.ts +32 -0
- package/dist/hooks/useUrlFilters.utils.d.ts.map +1 -0
- package/dist/hooks/useUrlFilters.utils.js +184 -0
- package/dist/hooks/useUserProfile.d.ts +27 -0
- package/dist/hooks/useUserProfile.d.ts.map +1 -0
- package/dist/hooks/useUserProfile.js +60 -0
- package/dist/hooks/useUserSettings.d.ts +40 -0
- package/dist/hooks/useUserSettings.d.ts.map +1 -0
- package/dist/hooks/useUserSettings.js +82 -0
- package/dist/hooks/useValidationSchemas.d.ts +42 -0
- package/dist/hooks/useValidationSchemas.d.ts.map +1 -0
- package/dist/hooks/useValidationSchemas.js +27 -0
- package/dist/i18n.d.ts +12 -0
- package/dist/i18n.d.ts.map +1 -0
- package/dist/i18n.js +139 -0
- package/dist/index.d.ts +6 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +7 -0
- package/dist/lib/api/auth/devtools-auth.d.ts +24 -0
- package/dist/lib/api/auth/devtools-auth.d.ts.map +1 -0
- package/dist/lib/api/auth/devtools-auth.js +46 -0
- package/dist/lib/api/auth/dual-auth.d.js +0 -0
- package/dist/lib/api/auth/dual-auth.d.ts +55 -0
- package/dist/lib/api/auth/dual-auth.d.ts.map +1 -0
- package/dist/lib/api/auth/dual-auth.js +158 -0
- package/dist/lib/api/auth/permissions.d.ts +25 -0
- package/dist/lib/api/auth/permissions.d.ts.map +1 -0
- package/dist/lib/api/auth/permissions.js +20 -0
- package/dist/lib/api/auth.d.js +0 -0
- package/dist/lib/api/auth.d.ts +58 -0
- package/dist/lib/api/auth.d.ts.map +1 -0
- package/dist/lib/api/auth.js +224 -0
- package/dist/lib/api/cache.d.js +0 -0
- package/dist/lib/api/cache.d.ts +48 -0
- package/dist/lib/api/cache.d.ts.map +1 -0
- package/dist/lib/api/cache.js +129 -0
- package/dist/lib/api/entities.d.ts +151 -0
- package/dist/lib/api/entities.d.ts.map +1 -0
- package/dist/lib/api/entities.js +473 -0
- package/dist/lib/api/entity/generic-handler.d.ts +53 -0
- package/dist/lib/api/entity/generic-handler.d.ts.map +1 -0
- package/dist/lib/api/entity/generic-handler.js +1181 -0
- package/dist/lib/api/entity/public-resolver.d.ts +28 -0
- package/dist/lib/api/entity/public-resolver.d.ts.map +1 -0
- package/dist/lib/api/entity/public-resolver.js +95 -0
- package/dist/lib/api/entity/resolver.d.ts +26 -0
- package/dist/lib/api/entity/resolver.d.ts.map +1 -0
- package/dist/lib/api/entity/resolver.js +101 -0
- package/dist/lib/api/entity-handler.d.ts +202 -0
- package/dist/lib/api/entity-handler.d.ts.map +1 -0
- package/dist/lib/api/entity-handler.js +349 -0
- package/dist/lib/api/helpers.d.ts +178 -0
- package/dist/lib/api/helpers.d.ts.map +1 -0
- package/dist/lib/api/helpers.js +517 -0
- package/dist/lib/api/index.d.ts +14 -0
- package/dist/lib/api/index.d.ts.map +1 -0
- package/dist/lib/api/index.js +5 -0
- package/dist/lib/api/keys.d.js +0 -0
- package/dist/lib/api/keys.d.ts +129 -0
- package/dist/lib/api/keys.d.ts.map +1 -0
- package/dist/lib/api/keys.js +155 -0
- package/dist/lib/api/meta.middleware.d.ts +16 -0
- package/dist/lib/api/meta.middleware.d.ts.map +1 -0
- package/dist/lib/api/meta.middleware.js +115 -0
- package/dist/lib/api/permission-middleware.d.ts +94 -0
- package/dist/lib/api/permission-middleware.d.ts.map +1 -0
- package/dist/lib/api/permission-middleware.js +62 -0
- package/dist/lib/api/rate-limit.d.ts +53 -0
- package/dist/lib/api/rate-limit.d.ts.map +1 -0
- package/dist/lib/api/rate-limit.js +134 -0
- package/dist/lib/auth/api-keys.d.ts +75 -0
- package/dist/lib/auth/api-keys.d.ts.map +1 -0
- package/dist/lib/auth/api-keys.js +146 -0
- package/dist/lib/auth-client.d.js +0 -0
- package/dist/lib/auth-client.d.ts +2900 -0
- package/dist/lib/auth-client.d.ts.map +1 -0
- package/dist/lib/auth-client.js +29 -0
- package/dist/lib/auth-context.d.js +0 -0
- package/dist/lib/auth-context.d.ts +71 -0
- package/dist/lib/auth-context.d.ts.map +1 -0
- package/dist/lib/auth-context.js +18 -0
- package/dist/lib/auth.d.js +0 -0
- package/dist/lib/auth.d.ts +3068 -0
- package/dist/lib/auth.d.ts.map +1 -0
- package/dist/lib/auth.js +271 -0
- package/dist/lib/billing/config-types.d.js +0 -0
- package/dist/lib/billing/config-types.d.ts +77 -0
- package/dist/lib/billing/config-types.d.ts.map +1 -0
- package/dist/lib/billing/config-types.js +0 -0
- package/dist/lib/billing/enforcement.d.js +0 -0
- package/dist/lib/billing/enforcement.d.ts +36 -0
- package/dist/lib/billing/enforcement.d.ts.map +1 -0
- package/dist/lib/billing/enforcement.js +55 -0
- package/dist/lib/billing/gateways/stripe.d.js +0 -0
- package/dist/lib/billing/gateways/stripe.d.ts +76 -0
- package/dist/lib/billing/gateways/stripe.d.ts.map +1 -0
- package/dist/lib/billing/gateways/stripe.js +110 -0
- package/dist/lib/billing/helpers.d.js +0 -0
- package/dist/lib/billing/helpers.d.ts +86 -0
- package/dist/lib/billing/helpers.d.ts.map +1 -0
- package/dist/lib/billing/helpers.js +91 -0
- package/dist/lib/billing/jobs.d.js +0 -0
- package/dist/lib/billing/jobs.d.ts +30 -0
- package/dist/lib/billing/jobs.d.ts.map +1 -0
- package/dist/lib/billing/jobs.js +85 -0
- package/dist/lib/billing/queries.d.ts +48 -0
- package/dist/lib/billing/queries.d.ts.map +1 -0
- package/dist/lib/billing/queries.js +56 -0
- package/dist/lib/billing/schema.d.ts +150 -0
- package/dist/lib/billing/schema.d.ts.map +1 -0
- package/dist/lib/billing/schema.js +77 -0
- package/dist/lib/billing/types.d.js +0 -0
- package/dist/lib/billing/types.d.ts +141 -0
- package/dist/lib/billing/types.d.ts.map +1 -0
- package/dist/lib/billing/types.js +0 -0
- package/dist/lib/blocks/loader.d.js +0 -0
- package/dist/lib/blocks/loader.d.ts +47 -0
- package/dist/lib/blocks/loader.d.ts.map +1 -0
- package/dist/lib/blocks/loader.js +54 -0
- package/dist/lib/config/app.config.d.js +0 -0
- package/dist/lib/config/app.config.d.ts +12 -0
- package/dist/lib/config/app.config.d.ts.map +1 -0
- package/dist/lib/config/app.config.js +397 -0
- package/dist/lib/config/config-loader.d.js +0 -0
- package/dist/lib/config/config-loader.d.ts +26 -0
- package/dist/lib/config/config-loader.d.ts.map +1 -0
- package/dist/lib/config/config-loader.js +164 -0
- package/dist/lib/config/config-sync.d.js +0 -0
- package/dist/lib/config/config-sync.d.ts +49 -0
- package/dist/lib/config/config-sync.d.ts.map +1 -0
- package/dist/lib/config/config-sync.js +160 -0
- package/dist/lib/config/config-types.d.js +0 -0
- package/dist/lib/config/config-types.d.ts +96 -0
- package/dist/lib/config/config-types.d.ts.map +1 -0
- package/dist/lib/config/config-types.js +0 -0
- package/dist/lib/config/config-utils.d.js +0 -0
- package/dist/lib/config/config-utils.d.ts +58 -0
- package/dist/lib/config/config-utils.d.ts.map +1 -0
- package/dist/lib/config/config-utils.js +103 -0
- package/dist/lib/config/dashboard-schema.d.ts +463 -0
- package/dist/lib/config/dashboard-schema.d.ts.map +1 -0
- package/dist/lib/config/dashboard-schema.js +260 -0
- package/dist/lib/config/dashboard-types.d.js +0 -0
- package/dist/lib/config/dashboard-types.d.ts +234 -0
- package/dist/lib/config/dashboard-types.d.ts.map +1 -0
- package/dist/lib/config/dashboard-types.js +0 -0
- package/dist/lib/config/dashboard.config.d.js +0 -0
- package/dist/lib/config/dashboard.config.d.ts +436 -0
- package/dist/lib/config/dashboard.config.d.ts.map +1 -0
- package/dist/lib/config/dashboard.config.js +457 -0
- package/dist/lib/config/features-types.d.ts +102 -0
- package/dist/lib/config/features-types.d.ts.map +1 -0
- package/dist/lib/config/features-types.js +10 -0
- package/dist/lib/config/icon-map.d.js +0 -0
- package/dist/lib/config/icon-map.d.ts +99 -0
- package/dist/lib/config/icon-map.d.ts.map +1 -0
- package/dist/lib/config/icon-map.js +64 -0
- package/dist/lib/config/index.d.js +7 -0
- package/dist/lib/config/index.d.ts +14 -0
- package/dist/lib/config/index.d.ts.map +1 -0
- package/dist/lib/config/index.js +7 -0
- package/dist/lib/config/nextspark-types.d.js +0 -0
- package/dist/lib/config/nextspark-types.d.ts +41 -0
- package/dist/lib/config/nextspark-types.d.ts.map +1 -0
- package/dist/lib/config/nextspark-types.js +6 -0
- package/dist/lib/config/roles-merge.d.js +0 -0
- package/dist/lib/config/roles-merge.d.ts +153 -0
- package/dist/lib/config/roles-merge.d.ts.map +1 -0
- package/dist/lib/config/roles-merge.js +181 -0
- package/dist/lib/config/types.d.js +0 -0
- package/dist/lib/config/types.d.ts +357 -0
- package/dist/lib/config/types.d.ts.map +1 -0
- package/dist/lib/config/types.js +0 -0
- package/dist/lib/constants/reserved-slugs.d.ts +28 -0
- package/dist/lib/constants/reserved-slugs.d.ts.map +1 -0
- package/dist/lib/constants/reserved-slugs.js +110 -0
- package/dist/lib/contents/types.d.ts +137 -0
- package/dist/lib/contents/types.d.ts.map +1 -0
- package/dist/lib/contents/types.js +0 -0
- package/dist/lib/countries-timezones.d.ts +9 -0
- package/dist/lib/countries-timezones.d.ts.map +1 -0
- package/dist/lib/countries-timezones.js +334 -0
- package/dist/lib/db.d.js +0 -0
- package/dist/lib/db.d.ts +75 -0
- package/dist/lib/db.d.ts.map +1 -0
- package/dist/lib/db.js +106 -0
- package/dist/lib/docs/parser.d.ts +49 -0
- package/dist/lib/docs/parser.d.ts.map +1 -0
- package/dist/lib/docs/parser.js +28 -0
- package/dist/lib/docs/utils.d.ts +35 -0
- package/dist/lib/docs/utils.d.ts.map +1 -0
- package/dist/lib/docs/utils.js +15 -0
- package/dist/lib/email/factory.d.js +0 -0
- package/dist/lib/email/factory.d.ts +18 -0
- package/dist/lib/email/factory.d.ts.map +1 -0
- package/dist/lib/email/factory.js +55 -0
- package/dist/lib/email/index.d.js +3 -0
- package/dist/lib/email/index.d.ts +4 -0
- package/dist/lib/email/index.d.ts.map +1 -0
- package/dist/lib/email/index.js +3 -0
- package/dist/lib/email/providers/console.d.js +0 -0
- package/dist/lib/email/providers/console.d.ts +13 -0
- package/dist/lib/email/providers/console.d.ts.map +1 -0
- package/dist/lib/email/providers/console.js +108 -0
- package/dist/lib/email/providers/resend.d.js +0 -0
- package/dist/lib/email/providers/resend.d.ts +9 -0
- package/dist/lib/email/providers/resend.d.ts.map +1 -0
- package/dist/lib/email/providers/resend.js +67 -0
- package/dist/lib/email/templates.d.js +0 -0
- package/dist/lib/email/templates.d.ts +28 -0
- package/dist/lib/email/templates.d.ts.map +1 -0
- package/dist/lib/email/templates.js +267 -0
- package/dist/lib/email/types.d.js +0 -0
- package/dist/lib/email/types.d.ts +55 -0
- package/dist/lib/email/types.d.ts.map +1 -0
- package/dist/lib/email/types.js +0 -0
- package/dist/lib/entities/api-generator.d.ts +78 -0
- package/dist/lib/entities/api-generator.d.ts.map +1 -0
- package/dist/lib/entities/api-generator.js +440 -0
- package/dist/lib/entities/entity-hooks.d.ts +94 -0
- package/dist/lib/entities/entity-hooks.d.ts.map +1 -0
- package/dist/lib/entities/entity-hooks.js +246 -0
- package/dist/lib/entities/external-api-generator.d.ts +89 -0
- package/dist/lib/entities/external-api-generator.d.ts.map +1 -0
- package/dist/lib/entities/external-api-generator.js +388 -0
- package/dist/lib/entities/helpers.d.ts +118 -0
- package/dist/lib/entities/helpers.d.ts.map +1 -0
- package/dist/lib/entities/helpers.js +44 -0
- package/dist/lib/entities/hooks.d.ts +130 -0
- package/dist/lib/entities/hooks.d.ts.map +1 -0
- package/dist/lib/entities/hooks.js +254 -0
- package/dist/lib/entities/meta-adapter.d.ts +76 -0
- package/dist/lib/entities/meta-adapter.d.ts.map +1 -0
- package/dist/lib/entities/meta-adapter.js +122 -0
- package/dist/lib/entities/migration-helper.d.ts +78 -0
- package/dist/lib/entities/migration-helper.d.ts.map +1 -0
- package/dist/lib/entities/migration-helper.js +559 -0
- package/dist/lib/entities/performance.d.ts +121 -0
- package/dist/lib/entities/performance.d.ts.map +1 -0
- package/dist/lib/entities/performance.js +287 -0
- package/dist/lib/entities/queries.d.ts +75 -0
- package/dist/lib/entities/queries.d.ts.map +1 -0
- package/dist/lib/entities/queries.js +96 -0
- package/dist/lib/entities/query-generator.d.ts +81 -0
- package/dist/lib/entities/query-generator.d.ts.map +1 -0
- package/dist/lib/entities/query-generator.js +430 -0
- package/dist/lib/entities/registry.client.d.ts +59 -0
- package/dist/lib/entities/registry.client.d.ts.map +1 -0
- package/dist/lib/entities/registry.client.js +84 -0
- package/dist/lib/entities/registry.d.ts +157 -0
- package/dist/lib/entities/registry.d.ts.map +1 -0
- package/dist/lib/entities/registry.js +347 -0
- package/dist/lib/entities/schema-generator.d.ts +80 -0
- package/dist/lib/entities/schema-generator.d.ts.map +1 -0
- package/dist/lib/entities/schema-generator.js +945 -0
- package/dist/lib/entities/serialization.d.ts +18 -0
- package/dist/lib/entities/serialization.d.ts.map +1 -0
- package/dist/lib/entities/serialization.js +75 -0
- package/dist/lib/entities/system-fields.d.ts +56 -0
- package/dist/lib/entities/system-fields.d.ts.map +1 -0
- package/dist/lib/entities/system-fields.js +83 -0
- package/dist/lib/entities/testing.d.ts +79 -0
- package/dist/lib/entities/testing.d.ts.map +1 -0
- package/dist/lib/entities/testing.js +400 -0
- package/dist/lib/entities/types.d.js +0 -0
- package/dist/lib/entities/types.d.ts +708 -0
- package/dist/lib/entities/types.d.ts.map +1 -0
- package/dist/lib/entities/types.js +0 -0
- package/dist/lib/formatters.d.ts +7 -0
- package/dist/lib/formatters.d.ts.map +1 -0
- package/dist/lib/formatters.js +42 -0
- package/dist/lib/helpers/entity-meta.helpers.d.ts +24 -0
- package/dist/lib/helpers/entity-meta.helpers.d.ts.map +1 -0
- package/dist/lib/helpers/entity-meta.helpers.js +55 -0
- package/dist/lib/i18n/AuthTranslationPreloader.d.ts +7 -0
- package/dist/lib/i18n/AuthTranslationPreloader.d.ts.map +1 -0
- package/dist/lib/i18n/AuthTranslationPreloader.js +9 -0
- package/dist/lib/i18n/DashboardTranslationPreloader.d.ts +7 -0
- package/dist/lib/i18n/DashboardTranslationPreloader.d.ts.map +1 -0
- package/dist/lib/i18n/DashboardTranslationPreloader.js +9 -0
- package/dist/lib/i18n-utils.d.ts +22 -0
- package/dist/lib/i18n-utils.d.ts.map +1 -0
- package/dist/lib/i18n-utils.js +66 -0
- package/dist/lib/index.d.ts +9 -0
- package/dist/lib/index.d.ts.map +1 -0
- package/dist/lib/index.js +11 -0
- package/dist/lib/locale-client.d.ts +5 -0
- package/dist/lib/locale-client.d.ts.map +1 -0
- package/dist/lib/locale-client.js +16 -0
- package/dist/lib/locale.d.ts +6 -0
- package/dist/lib/locale.d.ts.map +1 -0
- package/dist/lib/locale.js +63 -0
- package/dist/lib/namespace-loader.d.ts +41 -0
- package/dist/lib/namespace-loader.d.ts.map +1 -0
- package/dist/lib/namespace-loader.js +138 -0
- package/dist/lib/oauth/encryption.d.ts +90 -0
- package/dist/lib/oauth/encryption.d.ts.map +1 -0
- package/dist/lib/oauth/encryption.js +219 -0
- package/dist/lib/oauth/index.d.ts +15 -0
- package/dist/lib/oauth/index.d.ts.map +1 -0
- package/dist/lib/oauth/index.js +11 -0
- package/dist/lib/oauth/metadata.d.ts +77 -0
- package/dist/lib/oauth/metadata.d.ts.map +1 -0
- package/dist/lib/oauth/metadata.js +264 -0
- package/dist/lib/oauth/token-refresh.d.ts +85 -0
- package/dist/lib/oauth/token-refresh.d.ts.map +1 -0
- package/dist/lib/oauth/token-refresh.js +372 -0
- package/dist/lib/oauth/types.d.ts +136 -0
- package/dist/lib/oauth/types.d.ts.map +1 -0
- package/dist/lib/oauth/types.js +24 -0
- package/dist/lib/permissions/check.d.ts +82 -0
- package/dist/lib/permissions/check.d.ts.map +1 -0
- package/dist/lib/permissions/check.js +68 -0
- package/dist/lib/permissions/hooks.d.ts +62 -0
- package/dist/lib/permissions/hooks.d.ts.map +1 -0
- package/dist/lib/permissions/hooks.js +54 -0
- package/dist/lib/permissions/init.d.ts +29 -0
- package/dist/lib/permissions/init.d.ts.map +1 -0
- package/dist/lib/permissions/init.js +41 -0
- package/dist/lib/permissions/merge.d.ts +42 -0
- package/dist/lib/permissions/merge.d.ts.map +1 -0
- package/dist/lib/permissions/merge.js +93 -0
- package/dist/lib/permissions/system.d.js +0 -0
- package/dist/lib/permissions/system.d.ts +13 -0
- package/dist/lib/permissions/system.d.ts.map +1 -0
- package/dist/lib/permissions/system.js +113 -0
- package/dist/lib/permissions/types.d.js +0 -0
- package/dist/lib/permissions/types.d.ts +228 -0
- package/dist/lib/permissions/types.d.ts.map +1 -0
- package/dist/lib/permissions/types.js +0 -0
- package/dist/lib/plugins/env-loader.d.ts +47 -0
- package/dist/lib/plugins/env-loader.d.ts.map +1 -0
- package/dist/lib/plugins/env-loader.js +129 -0
- package/dist/lib/plugins/hook-system.d.js +0 -0
- package/dist/lib/plugins/hook-system.d.ts +110 -0
- package/dist/lib/plugins/hook-system.d.ts.map +1 -0
- package/dist/lib/plugins/hook-system.js +212 -0
- package/dist/lib/plugins/plugin-loader.d.ts +46 -0
- package/dist/lib/plugins/plugin-loader.d.ts.map +1 -0
- package/dist/lib/plugins/plugin-loader.js +159 -0
- package/dist/lib/rate-limit.d.ts +30 -0
- package/dist/lib/rate-limit.d.ts.map +1 -0
- package/dist/lib/rate-limit.js +62 -0
- package/dist/lib/role-helpers.d.ts +41 -0
- package/dist/lib/role-helpers.d.ts.map +1 -0
- package/dist/lib/role-helpers.js +25 -0
- package/dist/lib/scheduled-actions/cleanup.d.js +0 -0
- package/dist/lib/scheduled-actions/cleanup.d.ts +21 -0
- package/dist/lib/scheduled-actions/cleanup.d.ts.map +1 -0
- package/dist/lib/scheduled-actions/cleanup.js +22 -0
- package/dist/lib/scheduled-actions/index.d.js +19 -0
- package/dist/lib/scheduled-actions/index.d.ts +34 -0
- package/dist/lib/scheduled-actions/index.d.ts.map +1 -0
- package/dist/lib/scheduled-actions/index.js +36 -0
- package/dist/lib/scheduled-actions/initializer.d.js +1 -0
- package/dist/lib/scheduled-actions/initializer.d.ts +40 -0
- package/dist/lib/scheduled-actions/initializer.d.ts.map +1 -0
- package/dist/lib/scheduled-actions/initializer.js +38 -0
- package/dist/lib/scheduled-actions/processor.d.js +0 -0
- package/dist/lib/scheduled-actions/processor.d.ts +18 -0
- package/dist/lib/scheduled-actions/processor.d.ts.map +1 -0
- package/dist/lib/scheduled-actions/processor.js +152 -0
- package/dist/lib/scheduled-actions/registry.d.js +0 -0
- package/dist/lib/scheduled-actions/registry.d.ts +48 -0
- package/dist/lib/scheduled-actions/registry.d.ts.map +1 -0
- package/dist/lib/scheduled-actions/registry.js +33 -0
- package/dist/lib/scheduled-actions/scheduler.d.js +0 -0
- package/dist/lib/scheduled-actions/scheduler.d.ts +58 -0
- package/dist/lib/scheduled-actions/scheduler.d.ts.map +1 -0
- package/dist/lib/scheduled-actions/scheduler.js +100 -0
- package/dist/lib/scheduled-actions/types.d.js +0 -0
- package/dist/lib/scheduled-actions/types.d.ts +62 -0
- package/dist/lib/scheduled-actions/types.d.ts.map +1 -0
- package/dist/lib/scheduled-actions/types.js +0 -0
- package/dist/lib/search-highlighting.d.ts +47 -0
- package/dist/lib/search-highlighting.d.ts.map +1 -0
- package/dist/lib/search-highlighting.js +139 -0
- package/dist/lib/security/input-sanitizer.d.ts +30 -0
- package/dist/lib/security/input-sanitizer.d.ts.map +1 -0
- package/dist/lib/security/input-sanitizer.js +97 -0
- package/dist/lib/services/api-routes.service.d.js +0 -0
- package/dist/lib/services/api-routes.service.d.ts +174 -0
- package/dist/lib/services/api-routes.service.d.ts.map +1 -0
- package/dist/lib/services/api-routes.service.js +217 -0
- package/dist/lib/services/base-entity.service.d.ts +160 -0
- package/dist/lib/services/base-entity.service.d.ts.map +1 -0
- package/dist/lib/services/base-entity.service.js +330 -0
- package/dist/lib/services/block.service.d.ts +74 -0
- package/dist/lib/services/block.service.d.ts.map +1 -0
- package/dist/lib/services/block.service.js +68 -0
- package/dist/lib/services/entity-type.service.d.js +0 -0
- package/dist/lib/services/entity-type.service.d.ts +124 -0
- package/dist/lib/services/entity-type.service.d.ts.map +1 -0
- package/dist/lib/services/entity-type.service.js +106 -0
- package/dist/lib/services/feature.service.d.ts +100 -0
- package/dist/lib/services/feature.service.d.ts.map +1 -0
- package/dist/lib/services/feature.service.js +145 -0
- package/dist/lib/services/index.d.js +40 -0
- package/dist/lib/services/index.d.ts +43 -0
- package/dist/lib/services/index.d.ts.map +1 -0
- package/dist/lib/services/index.js +40 -0
- package/dist/lib/services/invoice.service.d.js +0 -0
- package/dist/lib/services/invoice.service.d.ts +236 -0
- package/dist/lib/services/invoice.service.d.ts.map +1 -0
- package/dist/lib/services/invoice.service.js +494 -0
- package/dist/lib/services/membership.service.d.js +0 -0
- package/dist/lib/services/membership.service.d.ts +171 -0
- package/dist/lib/services/membership.service.d.ts.map +1 -0
- package/dist/lib/services/membership.service.js +313 -0
- package/dist/lib/services/meta.service.d.js +0 -0
- package/dist/lib/services/meta.service.d.ts +58 -0
- package/dist/lib/services/meta.service.d.ts.map +1 -0
- package/dist/lib/services/meta.service.js +262 -0
- package/dist/lib/services/middleware.service.d.js +0 -0
- package/dist/lib/services/middleware.service.d.ts +66 -0
- package/dist/lib/services/middleware.service.d.ts.map +1 -0
- package/dist/lib/services/middleware.service.js +110 -0
- package/dist/lib/services/namespace.service.d.js +0 -0
- package/dist/lib/services/namespace.service.d.ts +168 -0
- package/dist/lib/services/namespace.service.d.ts.map +1 -0
- package/dist/lib/services/namespace.service.js +155 -0
- package/dist/lib/services/permission.service.d.js +0 -0
- package/dist/lib/services/permission.service.d.ts +212 -0
- package/dist/lib/services/permission.service.d.ts.map +1 -0
- package/dist/lib/services/permission.service.js +218 -0
- package/dist/lib/services/plan.service.d.js +0 -0
- package/dist/lib/services/plan.service.d.ts +174 -0
- package/dist/lib/services/plan.service.d.ts.map +1 -0
- package/dist/lib/services/plan.service.js +264 -0
- package/dist/lib/services/plugin.service.d.js +0 -0
- package/dist/lib/services/plugin.service.d.ts +435 -0
- package/dist/lib/services/plugin.service.d.ts.map +1 -0
- package/dist/lib/services/plugin.service.js +536 -0
- package/dist/lib/services/route-handler.service.d.js +0 -0
- package/dist/lib/services/route-handler.service.d.ts +155 -0
- package/dist/lib/services/route-handler.service.d.ts.map +1 -0
- package/dist/lib/services/route-handler.service.js +160 -0
- package/dist/lib/services/scope.service.d.js +0 -0
- package/dist/lib/services/scope.service.d.ts +213 -0
- package/dist/lib/services/scope.service.d.ts.map +1 -0
- package/dist/lib/services/scope.service.js +195 -0
- package/dist/lib/services/subscription.service.d.js +0 -0
- package/dist/lib/services/subscription.service.d.ts +270 -0
- package/dist/lib/services/subscription.service.d.ts.map +1 -0
- package/dist/lib/services/subscription.service.js +858 -0
- package/dist/lib/services/team-member.service.d.js +0 -0
- package/dist/lib/services/team-member.service.d.ts +226 -0
- package/dist/lib/services/team-member.service.d.ts.map +1 -0
- package/dist/lib/services/team-member.service.js +548 -0
- package/dist/lib/services/team.service.d.js +0 -0
- package/dist/lib/services/team.service.d.ts +193 -0
- package/dist/lib/services/team.service.d.ts.map +1 -0
- package/dist/lib/services/team.service.js +444 -0
- package/dist/lib/services/template.service.d.ts +148 -0
- package/dist/lib/services/template.service.d.ts.map +1 -0
- package/dist/lib/services/template.service.js +184 -0
- package/dist/lib/services/theme.service.d.js +0 -0
- package/dist/lib/services/theme.service.d.ts +101 -0
- package/dist/lib/services/theme.service.d.ts.map +1 -0
- package/dist/lib/services/theme.service.js +144 -0
- package/dist/lib/services/transactional-meta.service.d.ts +106 -0
- package/dist/lib/services/transactional-meta.service.d.ts.map +1 -0
- package/dist/lib/services/transactional-meta.service.js +200 -0
- package/dist/lib/services/translation.service.d.ts +92 -0
- package/dist/lib/services/translation.service.d.ts.map +1 -0
- package/dist/lib/services/translation.service.js +102 -0
- package/dist/lib/services/usage.service.d.js +0 -0
- package/dist/lib/services/usage.service.d.ts +225 -0
- package/dist/lib/services/usage.service.d.ts.map +1 -0
- package/dist/lib/services/usage.service.js +589 -0
- package/dist/lib/services/user-flags.service.d.js +0 -0
- package/dist/lib/services/user-flags.service.d.ts +65 -0
- package/dist/lib/services/user-flags.service.d.ts.map +1 -0
- package/dist/lib/services/user-flags.service.js +177 -0
- package/dist/lib/services/user.service.d.js +0 -0
- package/dist/lib/services/user.service.d.ts +233 -0
- package/dist/lib/services/user.service.d.ts.map +1 -0
- package/dist/lib/services/user.service.js +615 -0
- package/dist/lib/teams/actions.d.ts +152 -0
- package/dist/lib/teams/actions.d.ts.map +1 -0
- package/dist/lib/teams/actions.js +229 -0
- package/dist/lib/teams/helpers.d.js +0 -0
- package/dist/lib/teams/helpers.d.ts +113 -0
- package/dist/lib/teams/helpers.d.ts.map +1 -0
- package/dist/lib/teams/helpers.js +34 -0
- package/dist/lib/teams/permissions.d.js +0 -0
- package/dist/lib/teams/permissions.d.ts +129 -0
- package/dist/lib/teams/permissions.d.ts.map +1 -0
- package/dist/lib/teams/permissions.js +110 -0
- package/dist/lib/teams/schema.d.ts +152 -0
- package/dist/lib/teams/schema.d.ts.map +1 -0
- package/dist/lib/teams/schema.js +96 -0
- package/dist/lib/teams/types.d.js +0 -0
- package/dist/lib/teams/types.d.ts +146 -0
- package/dist/lib/teams/types.d.ts.map +1 -0
- package/dist/lib/teams/types.js +14 -0
- package/dist/lib/template-resolver.d.ts +104 -0
- package/dist/lib/template-resolver.d.ts.map +1 -0
- package/dist/lib/template-resolver.js +121 -0
- package/dist/lib/test/core-selectors.d.js +0 -0
- package/dist/lib/test/core-selectors.d.ts +863 -0
- package/dist/lib/test/core-selectors.d.ts.map +1 -0
- package/dist/lib/test/core-selectors.js +887 -0
- package/dist/lib/test/index.d.js +33 -0
- package/dist/lib/test/index.d.ts +24 -0
- package/dist/lib/test/index.d.ts.map +1 -0
- package/dist/lib/test/index.js +50 -0
- package/dist/lib/test/selector-factory.d.js +0 -0
- package/dist/lib/test/selector-factory.d.ts +122 -0
- package/dist/lib/test/selector-factory.d.ts.map +1 -0
- package/dist/lib/test/selector-factory.js +89 -0
- package/dist/lib/test/selectors.d.js +4 -0
- package/dist/lib/test/selectors.d.ts +1764 -0
- package/dist/lib/test/selectors.d.ts.map +1 -0
- package/dist/lib/test/selectors.js +26 -0
- package/dist/lib/test/utils.d.js +0 -0
- package/dist/lib/test/utils.d.ts +215 -0
- package/dist/lib/test/utils.d.ts.map +1 -0
- package/dist/lib/test/utils.js +190 -0
- package/dist/lib/testing-utils.d.js +0 -0
- package/dist/lib/testing-utils.d.ts +215 -0
- package/dist/lib/testing-utils.d.ts.map +1 -0
- package/dist/lib/testing-utils.js +190 -0
- package/dist/lib/theme/ThemeProvider.d.ts +54 -0
- package/dist/lib/theme/ThemeProvider.d.ts.map +1 -0
- package/dist/lib/theme/ThemeProvider.js +164 -0
- package/dist/lib/theme/get-default-theme-mode.d.ts +15 -0
- package/dist/lib/theme/get-default-theme-mode.d.ts.map +1 -0
- package/dist/lib/theme/get-default-theme-mode.js +42 -0
- package/dist/lib/theme/import-resolver.d.ts +55 -0
- package/dist/lib/theme/import-resolver.d.ts.map +1 -0
- package/dist/lib/theme/import-resolver.js +142 -0
- package/dist/lib/theme/override-resolver.d.ts +36 -0
- package/dist/lib/theme/override-resolver.d.ts.map +1 -0
- package/dist/lib/theme/override-resolver.js +103 -0
- package/dist/lib/theme/theme-loader.d.ts +59 -0
- package/dist/lib/theme/theme-loader.d.ts.map +1 -0
- package/dist/lib/theme/theme-loader.js +187 -0
- package/dist/lib/theme/types.d.ts +88 -0
- package/dist/lib/theme/types.d.ts.map +1 -0
- package/dist/lib/theme/types.js +0 -0
- package/dist/lib/translations/i18n-integration.d.ts +27 -0
- package/dist/lib/translations/i18n-integration.d.ts.map +1 -0
- package/dist/lib/translations/i18n-integration.js +136 -0
- package/dist/lib/translations/registry.d.ts +83 -0
- package/dist/lib/translations/registry.d.ts.map +1 -0
- package/dist/lib/translations/registry.js +233 -0
- package/dist/lib/user-data-client.d.ts +62 -0
- package/dist/lib/user-data-client.d.ts.map +1 -0
- package/dist/lib/user-data-client.js +237 -0
- package/dist/lib/user-data-utils.d.ts +33 -0
- package/dist/lib/user-data-utils.d.ts.map +1 -0
- package/dist/lib/user-data-utils.js +36 -0
- package/dist/lib/user-data.d.ts +37 -0
- package/dist/lib/user-data.d.ts.map +1 -0
- package/dist/lib/user-data.js +123 -0
- package/dist/lib/utils/config-merge.d.js +0 -0
- package/dist/lib/utils/config-merge.d.ts +86 -0
- package/dist/lib/utils/config-merge.d.ts.map +1 -0
- package/dist/lib/utils/config-merge.js +89 -0
- package/dist/lib/utils/environment.server.d.ts +22 -0
- package/dist/lib/utils/environment.server.d.ts.map +1 -0
- package/dist/lib/utils/environment.server.js +28 -0
- package/dist/lib/utils/file-logger.d.js +0 -0
- package/dist/lib/utils/file-logger.d.ts +65 -0
- package/dist/lib/utils/file-logger.d.ts.map +1 -0
- package/dist/lib/utils/file-logger.js +107 -0
- package/dist/lib/utils/shiki.d.ts +12 -0
- package/dist/lib/utils/shiki.d.ts.map +1 -0
- package/dist/lib/utils/shiki.js +49 -0
- package/dist/lib/utils.d.js +0 -0
- package/dist/lib/utils.d.ts +3 -0
- package/dist/lib/utils.d.ts.map +1 -0
- package/dist/lib/utils.js +8 -0
- package/dist/lib/validation/invoices.d.ts +40 -0
- package/dist/lib/validation/invoices.d.ts.map +1 -0
- package/dist/lib/validation/invoices.js +22 -0
- package/dist/lib/validation-schemas.d.ts +54 -0
- package/dist/lib/validation-schemas.d.ts.map +1 -0
- package/dist/lib/validation-schemas.js +76 -0
- package/dist/lib/validation.d.ts +52 -0
- package/dist/lib/validation.d.ts.map +1 -0
- package/dist/lib/validation.js +65 -0
- package/dist/messages/en/auth.json +103 -0
- package/dist/messages/en/billing.json +167 -0
- package/dist/messages/en/common.json +172 -0
- package/dist/messages/en/dashboard.json +41 -0
- package/dist/messages/en/devtools.json +250 -0
- package/dist/messages/en/docs.json +24 -0
- package/dist/messages/en/footer.json +23 -0
- package/dist/messages/en/home.json +13 -0
- package/dist/messages/en/index.d.ts +1596 -0
- package/dist/messages/en/index.d.ts.map +1 -0
- package/dist/messages/en/index.js +35 -0
- package/dist/messages/en/index.ts +33 -0
- package/dist/messages/en/navigation.json +11 -0
- package/dist/messages/en/permissions.json +27 -0
- package/dist/messages/en/public.json +1 -0
- package/dist/messages/en/settings.json +404 -0
- package/dist/messages/en/superadmin.json +194 -0
- package/dist/messages/en/teams.json +140 -0
- package/dist/messages/en/validation.json +48 -0
- package/dist/messages/es/auth.json +103 -0
- package/dist/messages/es/billing.json +167 -0
- package/dist/messages/es/common.json +172 -0
- package/dist/messages/es/dashboard.json +41 -0
- package/dist/messages/es/devtools.json +250 -0
- package/dist/messages/es/docs.json +24 -0
- package/dist/messages/es/footer.json +23 -0
- package/dist/messages/es/home.json +13 -0
- package/dist/messages/es/index.d.ts +1596 -0
- package/dist/messages/es/index.d.ts.map +1 -0
- package/dist/messages/es/index.js +35 -0
- package/dist/messages/es/index.ts +33 -0
- package/dist/messages/es/navigation.json +11 -0
- package/dist/messages/es/permissions.json +27 -0
- package/dist/messages/es/public.json +1 -0
- package/dist/messages/es/settings.json +404 -0
- package/dist/messages/es/superadmin.json +194 -0
- package/dist/messages/es/teams.json +140 -0
- package/dist/messages/es/validation.json +48 -0
- package/dist/messages/index.d.ts +4 -0
- package/dist/messages/index.d.ts.map +1 -0
- package/dist/messages/index.js +7 -0
- package/dist/messages/index.ts +6 -0
- package/dist/messages/types.d.ts +27 -0
- package/dist/messages/types.d.ts.map +1 -0
- package/dist/messages/types.js +0 -0
- package/dist/messages/types.ts +43 -0
- package/dist/migrations/001_better_auth_and_functions.sql +69 -0
- package/dist/migrations/002_auth_tables.sql +158 -0
- package/dist/migrations/003_user_metas.sql +70 -0
- package/dist/migrations/004_api_key.sql +80 -0
- package/dist/migrations/005_api_audit_log.sql +62 -0
- package/dist/migrations/006_taxonomies_table.sql +106 -0
- package/dist/migrations/007_teams_table.sql +68 -0
- package/dist/migrations/008_team_members_table.sql +102 -0
- package/dist/migrations/009_team_invitations_table.sql +132 -0
- package/dist/migrations/010_teams_functions_triggers.sql +178 -0
- package/dist/migrations/011_invoices_table.sql +95 -0
- package/dist/migrations/012_billing_plans.sql +108 -0
- package/dist/migrations/013_billing_subscriptions.sql +148 -0
- package/dist/migrations/014_billing_usage.sql +99 -0
- package/dist/migrations/015_billing_usage_events.sql +98 -0
- package/dist/migrations/016_billing_events.sql +87 -0
- package/dist/migrations/017_scheduled_actions_table.sql +106 -0
- package/dist/migrations/090_sample_data.sql +242 -0
- package/dist/migrations/README.md +101 -0
- package/dist/next.d.ts +26 -0
- package/dist/next.d.ts.map +1 -0
- package/dist/next.js +25 -0
- package/dist/nextspark-registries.d.ts +509 -0
- package/dist/presets/ai-workflow/claude/README.md +279 -0
- package/dist/presets/ai-workflow/claude/agents/api-tester.md +629 -0
- package/dist/presets/ai-workflow/claude/agents/architecture-supervisor.md +1088 -0
- package/dist/presets/ai-workflow/claude/agents/backend-developer.md +979 -0
- package/dist/presets/ai-workflow/claude/agents/backend-validator.md +393 -0
- package/dist/presets/ai-workflow/claude/agents/bdd-docs-writer.md +732 -0
- package/dist/presets/ai-workflow/claude/agents/block-developer.md +635 -0
- package/dist/presets/ai-workflow/claude/agents/code-reviewer.md +1434 -0
- package/dist/presets/ai-workflow/claude/agents/db-developer.md +719 -0
- package/dist/presets/ai-workflow/claude/agents/db-validator.md +402 -0
- package/dist/presets/ai-workflow/claude/agents/demo-video-generator.md +462 -0
- package/dist/presets/ai-workflow/claude/agents/dev-plugin.md +951 -0
- package/dist/presets/ai-workflow/claude/agents/documentation-writer.md +1235 -0
- package/dist/presets/ai-workflow/claude/agents/frontend-developer.md +1159 -0
- package/dist/presets/ai-workflow/claude/agents/frontend-validator.md +771 -0
- package/dist/presets/ai-workflow/claude/agents/functional-validator.md +625 -0
- package/dist/presets/ai-workflow/claude/agents/plugin-creator.md +459 -0
- package/dist/presets/ai-workflow/claude/agents/plugin-validator.md +353 -0
- package/dist/presets/ai-workflow/claude/agents/product-manager.md +861 -0
- package/dist/presets/ai-workflow/claude/agents/qa-automation.md +1685 -0
- package/dist/presets/ai-workflow/claude/agents/qa-manual.md +566 -0
- package/dist/presets/ai-workflow/claude/agents/qa-tester.md +1021 -0
- package/dist/presets/ai-workflow/claude/agents/release-manager.md +627 -0
- package/dist/presets/ai-workflow/claude/agents/theme-creator.md +457 -0
- package/dist/presets/ai-workflow/claude/agents/theme-validator.md +359 -0
- package/dist/presets/ai-workflow/claude/agents/unit-test-writer.md +766 -0
- package/dist/presets/ai-workflow/claude/agents/workflow-maintainer.md +383 -0
- package/dist/presets/ai-workflow/claude/commands/bdd:write.md +300 -0
- package/dist/presets/ai-workflow/claude/commands/block:create.md +156 -0
- package/dist/presets/ai-workflow/claude/commands/block:docs.md +251 -0
- package/dist/presets/ai-workflow/claude/commands/block:list.md +175 -0
- package/dist/presets/ai-workflow/claude/commands/block:update.md +156 -0
- package/dist/presets/ai-workflow/claude/commands/block:validate.md +239 -0
- package/dist/presets/ai-workflow/claude/commands/db:entity.md +470 -0
- package/dist/presets/ai-workflow/claude/commands/db:fix.md +385 -0
- package/dist/presets/ai-workflow/claude/commands/db:sample.md +266 -0
- package/dist/presets/ai-workflow/claude/commands/doc:demo-feature.md +472 -0
- package/dist/presets/ai-workflow/claude/commands/doc:feature.md +427 -0
- package/dist/presets/ai-workflow/claude/commands/doc:read.md +278 -0
- package/dist/presets/ai-workflow/claude/commands/fix:bug.md +442 -0
- package/dist/presets/ai-workflow/claude/commands/fix:build.md +284 -0
- package/dist/presets/ai-workflow/claude/commands/plugin:create.md +193 -0
- package/dist/presets/ai-workflow/claude/commands/release:version.md +450 -0
- package/dist/presets/ai-workflow/claude/commands/task:demo.md +345 -0
- package/dist/presets/ai-workflow/claude/commands/task:execute.md +920 -0
- package/dist/presets/ai-workflow/claude/commands/task:explain.md +276 -0
- package/dist/presets/ai-workflow/claude/commands/task:pending.md +299 -0
- package/dist/presets/ai-workflow/claude/commands/task:plan.md +344 -0
- package/dist/presets/ai-workflow/claude/commands/task:pre-commit.md +408 -0
- package/dist/presets/ai-workflow/claude/commands/task:refine.md +398 -0
- package/dist/presets/ai-workflow/claude/commands/task:requirements.md +547 -0
- package/dist/presets/ai-workflow/claude/commands/task:review-final.md +181 -0
- package/dist/presets/ai-workflow/claude/commands/task:scope-change.md +565 -0
- package/dist/presets/ai-workflow/claude/commands/test:fix.md +744 -0
- package/dist/presets/ai-workflow/claude/commands/test:run.md +422 -0
- package/dist/presets/ai-workflow/claude/commands/test:write.md +1115 -0
- package/dist/presets/ai-workflow/claude/commands/workflow-update.md +191 -0
- package/dist/presets/ai-workflow/claude/config/agents.example.json +40 -0
- package/dist/presets/ai-workflow/claude/config/workflow.example.md +1287 -0
- package/dist/presets/ai-workflow/claude/settings.local.json +111 -0
- package/dist/presets/ai-workflow/claude/tools/clickup/api.md +942 -0
- package/dist/presets/ai-workflow/claude/tools/clickup/mcp.md +588 -0
- package/dist/presets/ai-workflow/claude/tools/clickup/templates/task.md +32 -0
- package/dist/presets/ai-workflow/claude/tools/sessions/templates/clickup_task.md +121 -0
- package/dist/presets/ai-workflow/claude/tools/sessions/templates/context.md +418 -0
- package/dist/presets/ai-workflow/claude/tools/sessions/templates/pendings.md +127 -0
- package/dist/presets/ai-workflow/claude/tools/sessions/templates/plan.md +401 -0
- package/dist/presets/ai-workflow/claude/tools/sessions/templates/progress.md +398 -0
- package/dist/presets/ai-workflow/claude/tools/sessions/templates/requirements.md +177 -0
- package/dist/presets/ai-workflow/claude/tools/sessions/templates/scope.json +56 -0
- package/dist/presets/ai-workflow/claude/tools/sessions/templates/tests.md +220 -0
- package/dist/presets/blocks/README.md +80 -0
- package/dist/presets/blocks/cta-section/component.tsx +99 -0
- package/dist/presets/blocks/cta-section/config.ts +10 -0
- package/dist/presets/blocks/cta-section/fields.ts +89 -0
- package/dist/presets/blocks/cta-section/index.ts +6 -0
- package/dist/presets/blocks/cta-section/schema.ts +32 -0
- package/dist/presets/blocks/cta-section/thumbnail.png +1 -0
- package/dist/presets/blocks/features-grid/component.tsx +111 -0
- package/dist/presets/blocks/features-grid/config.ts +10 -0
- package/dist/presets/blocks/features-grid/fields.ts +97 -0
- package/dist/presets/blocks/features-grid/index.ts +6 -0
- package/dist/presets/blocks/features-grid/schema.ts +40 -0
- package/dist/presets/blocks/features-grid/thumbnail.png +1 -0
- package/dist/presets/blocks/hero/component.tsx +99 -0
- package/dist/presets/blocks/hero/config.ts +10 -0
- package/dist/presets/blocks/hero/fields.ts +60 -0
- package/dist/presets/blocks/hero/index.ts +6 -0
- package/dist/presets/blocks/hero/schema.ts +32 -0
- package/dist/presets/blocks/hero/thumbnail.png +1 -0
- package/dist/presets/blocks/testimonials/component.tsx +113 -0
- package/dist/presets/blocks/testimonials/config.ts +10 -0
- package/dist/presets/blocks/testimonials/fields.ts +105 -0
- package/dist/presets/blocks/testimonials/index.ts +6 -0
- package/dist/presets/blocks/testimonials/schema.ts +41 -0
- package/dist/presets/blocks/testimonials/thumbnail.png +1 -0
- package/dist/presets/blocks/text-content/component.tsx +96 -0
- package/dist/presets/blocks/text-content/config.ts +10 -0
- package/dist/presets/blocks/text-content/fields.ts +88 -0
- package/dist/presets/blocks/text-content/index.ts +6 -0
- package/dist/presets/blocks/text-content/schema.ts +30 -0
- package/dist/presets/blocks/text-content/thumbnail.png +1 -0
- package/dist/presets/ci-workflows/README.md +71 -0
- package/dist/presets/ci-workflows/github/cypress-regression.yml +136 -0
- package/dist/presets/ci-workflows/github/cypress-smoke.yml +94 -0
- package/dist/presets/entity-tests/README.md +206 -0
- package/dist/presets/entity-tests/controllers/EntityAPIController.js.template +203 -0
- package/dist/presets/entity-tests/e2e/entity-crud.cy.ts.template +346 -0
- package/dist/presets/entity-tests/e2e/entity-owner.cy.ts.template +204 -0
- package/dist/presets/entity-tests/pom/EntityPOM.ts.template +169 -0
- package/dist/presets/entity-tests/selectors/entity-selectors.cy.ts.template +119 -0
- package/dist/presets/migrations/README.md +408 -0
- package/dist/presets/migrations/private-mode/001_entity_table.sql.template +94 -0
- package/dist/presets/migrations/private-mode/002_entity_metas.sql.template +102 -0
- package/dist/presets/migrations/private-mode/003_entity_child.sql.template +92 -0
- package/dist/presets/migrations/private-mode/100_entity_sample_data.sql.template +113 -0
- package/dist/presets/migrations/public-mode/001_entity_table.sql.template +139 -0
- package/dist/presets/migrations/public-mode/002_entity_metas.sql.template +110 -0
- package/dist/presets/migrations/public-mode/003_entity_child.sql.template +93 -0
- package/dist/presets/migrations/public-mode/100_entity_sample_data.sql.template +144 -0
- package/dist/presets/migrations/shared-mode/001_entity_table.sql.template +103 -0
- package/dist/presets/migrations/shared-mode/002_entity_metas.sql.template +89 -0
- package/dist/presets/migrations/shared-mode/003_entity_child.sql.template +79 -0
- package/dist/presets/migrations/shared-mode/100_entity_sample_data.sql.template +104 -0
- package/dist/presets/migrations/team-mode/001_entity_table.sql.template +87 -0
- package/dist/presets/migrations/team-mode/002_entity_metas.sql.template +106 -0
- package/dist/presets/migrations/team-mode/003_entity_child.sql.template +99 -0
- package/dist/presets/migrations/team-mode/100_entity_sample_data.sql.template +140 -0
- package/dist/presets/plugin/.env.example.template +19 -0
- package/dist/presets/plugin/README.md.template +97 -0
- package/dist/presets/plugin/api/example/route.ts.template +94 -0
- package/dist/presets/plugin/components/ExampleWidget.tsx.template +115 -0
- package/dist/presets/plugin/entities/.gitkeep +18 -0
- package/dist/presets/plugin/hooks/usePlugin.ts.template +102 -0
- package/dist/presets/plugin/lib/core.ts.template +67 -0
- package/dist/presets/plugin/lib/types.ts.template +105 -0
- package/dist/presets/plugin/messages/en.json +37 -0
- package/dist/presets/plugin/messages/es.json +37 -0
- package/dist/presets/plugin/migrations/README.md +65 -0
- package/dist/presets/plugin/plugin.config.ts.template +49 -0
- package/dist/presets/plugin/tests/plugin.test.ts.template +85 -0
- package/dist/presets/theme/README.md +111 -0
- package/dist/presets/theme/about/business.md +43 -0
- package/dist/presets/theme/about/features.json +101 -0
- package/dist/presets/theme/about/team.md +63 -0
- package/dist/presets/theme/blocks/.gitkeep +17 -0
- package/dist/presets/theme/blocks/hero/component.tsx +99 -0
- package/dist/presets/theme/blocks/hero/config.ts +10 -0
- package/dist/presets/theme/blocks/hero/fields.ts +60 -0
- package/dist/presets/theme/blocks/hero/index.ts +6 -0
- package/dist/presets/theme/blocks/hero/schema.ts +32 -0
- package/dist/presets/theme/blocks/hero/thumbnail.png +1 -0
- package/dist/presets/theme/config/app.config.ts.template +199 -0
- package/dist/presets/theme/config/billing.config.ts.template +237 -0
- package/dist/presets/theme/config/dashboard.config.ts.template +417 -0
- package/dist/presets/theme/config/dev.config.ts.template +91 -0
- package/dist/presets/theme/config/permissions.config.ts.template +172 -0
- package/dist/presets/theme/config/theme.config.ts.template +101 -0
- package/dist/presets/theme/docs/01-overview/01-introduction.md +98 -0
- package/dist/presets/theme/docs/01-overview/02-customization.md +109 -0
- package/dist/presets/theme/entities/tasks/messages/en.json +204 -0
- package/dist/presets/theme/entities/tasks/messages/es.json +204 -0
- package/dist/presets/theme/entities/tasks/migrations/001_tasks_table.sql +105 -0
- package/dist/presets/theme/entities/tasks/migrations/002_task_metas.sql +85 -0
- package/dist/presets/theme/entities/tasks/migrations/003_tasks_sample_data.sql +250 -0
- package/dist/presets/theme/entities/tasks/migrations/100_tasks_sample_data.sql +204 -0
- package/dist/presets/theme/entities/tasks/migrations/sample_data.json +77 -0
- package/dist/presets/theme/entities/tasks/tasks.config.ts +96 -0
- package/dist/presets/theme/entities/tasks/tasks.fields.ts +196 -0
- package/dist/presets/theme/entities/tasks/tasks.service.ts +329 -0
- package/dist/presets/theme/entities/tasks/tasks.types.ts +55 -0
- package/dist/presets/theme/messages/en.json +96 -0
- package/dist/presets/theme/messages/es.json +96 -0
- package/dist/presets/theme/migrations/001_example_schema.sql +73 -0
- package/dist/presets/theme/migrations/002_custom_team_roles.sql +25 -0
- package/dist/presets/theme/migrations/README.md +57 -0
- package/dist/presets/theme/public/brand/.gitkeep +8 -0
- package/dist/presets/theme/styles/components.css +101 -0
- package/dist/presets/theme/styles/globals.css +158 -0
- package/dist/presets/theme/templates/(public)/layout.tsx +31 -0
- package/dist/presets/theme/templates/(public)/page.tsx +125 -0
- package/dist/presets/theme/templates/(public)/support/page.tsx +162 -0
- package/dist/presets/theme/tests/cypress/.gitkeep +10 -0
- package/dist/presets/theme/tests/cypress/_examples/tasks/TaskAPIController.js +240 -0
- package/dist/presets/theme/tests/cypress/_examples/tasks/TasksPOM.ts +177 -0
- package/dist/presets/theme/tests/cypress/_examples/tasks/tasks-crud.cy.ts +609 -0
- package/dist/presets/theme/tests/cypress/_examples/tasks/tasks-owner.cy.ts +201 -0
- package/dist/presets/theme/tests/cypress/e2e/api/billing/BillingAPIController.js +178 -0
- package/dist/presets/theme/tests/cypress/e2e/api/billing/check-action.cy.ts +326 -0
- package/dist/presets/theme/tests/cypress/e2e/api/billing/checkout.cy.ts +358 -0
- package/dist/presets/theme/tests/cypress/e2e/api/billing/lifecycle.cy.ts +423 -0
- package/dist/presets/theme/tests/cypress/e2e/api/billing/portal.cy.ts +313 -0
- package/dist/presets/theme/tests/cypress/fixtures/entities.json +21 -0
- package/dist/presets/theme/tests/cypress/src/controllers/BaseAPIController.js +317 -0
- package/dist/presets/theme/tests/cypress/src/controllers/index.js +12 -0
- package/dist/presets/theme/tests/cypress/src/core/AuthPOM.ts +450 -0
- package/dist/presets/theme/tests/cypress/src/core/BasePOM.ts +86 -0
- package/dist/presets/theme/tests/cypress/src/core/BlockEditorBasePOM.ts +576 -0
- package/dist/presets/theme/tests/cypress/src/core/DashboardEntityPOM.ts +692 -0
- package/dist/presets/theme/tests/cypress/src/core/index.ts +14 -0
- package/dist/presets/theme/tests/cypress/src/helpers/ApiInterceptor.ts +170 -0
- package/dist/presets/theme/tests/cypress/src/selectors.ts +129 -0
- package/dist/presets/theme/tests/cypress/src/session-helpers.ts +209 -0
- package/dist/presets/theme/tests/cypress/support/commands.ts +51 -0
- package/dist/presets/theme/tests/cypress/support/doc-commands.ts +260 -0
- package/dist/presets/theme/tests/cypress/support/e2e.ts +21 -0
- package/dist/presets/theme/tests/cypress.config.ts +155 -0
- package/dist/presets/theme/tests/jest/README.md +50 -0
- package/dist/presets/theme/tests/tsconfig.json +15 -0
- package/dist/providers/PluginProvider.d.ts +62 -0
- package/dist/providers/PluginProvider.d.ts.map +1 -0
- package/dist/providers/PluginProvider.js +130 -0
- package/dist/providers/TranslationContextManager.d.ts +6 -0
- package/dist/providers/TranslationContextManager.d.ts.map +1 -0
- package/dist/providers/TranslationContextManager.js +16 -0
- package/dist/providers/index.d.ts +5 -0
- package/dist/providers/index.d.ts.map +1 -0
- package/dist/providers/index.js +4 -0
- package/dist/providers/query-provider.d.ts +5 -0
- package/dist/providers/query-provider.d.ts.map +1 -0
- package/dist/providers/query-provider.js +24 -0
- package/dist/providers/theme-provider.d.ts +3 -0
- package/dist/providers/theme-provider.d.ts.map +1 -0
- package/dist/providers/theme-provider.js +9 -0
- package/dist/styles/classes.json +1005 -0
- package/dist/styles/ui.css +2 -0
- package/dist/templates/app/(auth)/forgot-password/page.tsx +216 -0
- package/dist/templates/app/(auth)/layout.tsx +51 -0
- package/dist/templates/app/(auth)/login/page.tsx +21 -0
- package/dist/templates/app/(auth)/reset-password/page.tsx +212 -0
- package/dist/templates/app/(auth)/signup/page.tsx +21 -0
- package/dist/templates/app/(auth)/verify-email/page.tsx +190 -0
- package/dist/templates/app/(public)/[...slug]/page.tsx +271 -0
- package/dist/templates/app/(public)/docs/[category]/[section]/[page]/page.tsx +134 -0
- package/dist/templates/app/(public)/docs/[category]/page.tsx +139 -0
- package/dist/templates/app/(public)/docs/layout.tsx +23 -0
- package/dist/templates/app/(public)/docs/page.tsx +210 -0
- package/dist/templates/app/(public)/docs/plugins/[plugin]/[section]/[page]/page.tsx +125 -0
- package/dist/templates/app/(public)/docs/plugins/page.tsx +160 -0
- package/dist/templates/app/(public)/layout.tsx +41 -0
- package/dist/templates/app/(public)/page.tsx +19 -0
- package/dist/templates/app/(templates)/(public)/blog/[slug]/page.d.ts +9 -0
- package/dist/templates/app/(templates)/(public)/blog/[slug]/page.tsx +9 -0
- package/dist/templates/app/(templates)/(public)/layout.d.ts +9 -0
- package/dist/templates/app/(templates)/(public)/layout.tsx +9 -0
- package/dist/templates/app/(templates)/(public)/page.d.ts +9 -0
- package/dist/templates/app/(templates)/(public)/support/page.d.ts +9 -0
- package/dist/templates/app/(templates)/(public)/support/page.tsx +9 -0
- package/dist/templates/app/(templates)/dashboard/(main)/agent-multi/page.d.ts +9 -0
- package/dist/templates/app/(templates)/dashboard/(main)/agent-multi/page.tsx +9 -0
- package/dist/templates/app/(templates)/dashboard/(main)/agent-single/page.d.ts +9 -0
- package/dist/templates/app/(templates)/dashboard/(main)/agent-single/page.tsx +9 -0
- package/dist/templates/app/(templates)/dashboard/(main)/layout.tsx +33 -0
- package/dist/templates/app/(templates)/dashboard/(main)/settings/ai-usage/page.d.ts +9 -0
- package/dist/templates/app/(templates)/dashboard/(main)/settings/ai-usage/page.tsx +9 -0
- package/dist/templates/app/(templates)/dashboard/layout.tsx +90 -0
- package/dist/templates/app/(templates)/dashboard/settings/layout.tsx +127 -0
- package/dist/templates/app/(templates)/superadmin/ai-observability/[traceId]/page.d.ts +9 -0
- package/dist/templates/app/(templates)/superadmin/ai-observability/[traceId]/page.tsx +9 -0
- package/dist/templates/app/(templates)/superadmin/ai-observability/page.d.ts +9 -0
- package/dist/templates/app/(templates)/superadmin/ai-observability/page.tsx +9 -0
- package/dist/templates/app/(templates)/superadmin/layout.tsx +67 -0
- package/dist/templates/app/403/page.tsx +89 -0
- package/dist/templates/app/README.md +39 -0
- package/dist/templates/app/accept-invite/[token]/page.tsx +342 -0
- package/dist/templates/app/api/auth/[...all]/route.ts +70 -0
- package/dist/templates/app/api/cron/billing/lifecycle/route.ts +98 -0
- package/dist/templates/app/api/devtools/config/entities/route.ts +109 -0
- package/dist/templates/app/api/devtools/config/theme/route.ts +66 -0
- package/dist/templates/app/api/devtools/tests/[...path]/route.ts +130 -0
- package/dist/templates/app/api/devtools/tests/route.ts +134 -0
- package/dist/templates/app/api/health/route.ts +29 -0
- package/dist/templates/app/api/internal/user-metadata/route.ts +36 -0
- package/dist/templates/app/api/superadmin/subscriptions/route.ts +310 -0
- package/dist/templates/app/api/superadmin/teams/[teamId]/route.ts +286 -0
- package/dist/templates/app/api/superadmin/teams/route.ts +188 -0
- package/dist/templates/app/api/superadmin/users/[userId]/route.ts +540 -0
- package/dist/templates/app/api/superadmin/users/route.ts +323 -0
- package/dist/templates/app/api/user/delete-account/route.ts +55 -0
- package/dist/templates/app/api/user/plan-flags/route.ts +283 -0
- package/dist/templates/app/api/user/profile/route.ts +133 -0
- package/dist/templates/app/api/v1/[entity]/[id]/child/[childType]/[childId]/route.ts +202 -0
- package/dist/templates/app/api/v1/[entity]/[id]/child/[childType]/route.ts +323 -0
- package/dist/templates/app/api/v1/[entity]/[id]/route.ts +26 -0
- package/dist/templates/app/api/v1/[entity]/route.ts +22 -0
- package/dist/templates/app/api/v1/api-keys/[id]/route.ts +303 -0
- package/dist/templates/app/api/v1/api-keys/route.ts +250 -0
- package/dist/templates/app/api/v1/auth/signup-with-invite/route.ts +227 -0
- package/dist/templates/app/api/v1/billing/cancel/route.ts +206 -0
- package/dist/templates/app/api/v1/billing/change-plan/route.ts +97 -0
- package/dist/templates/app/api/v1/billing/check-action/route.ts +81 -0
- package/dist/templates/app/api/v1/billing/checkout/route.ts +124 -0
- package/dist/templates/app/api/v1/billing/plans/route.ts +85 -0
- package/dist/templates/app/api/v1/billing/portal/route.ts +90 -0
- package/dist/templates/app/api/v1/billing/webhooks/stripe/route.ts +428 -0
- package/dist/templates/app/api/v1/blocks/[slug]/route.ts +29 -0
- package/dist/templates/app/api/v1/blocks/route.ts +45 -0
- package/dist/templates/app/api/v1/blocks/validate/route.ts +45 -0
- package/dist/templates/app/api/v1/cron/process/route.ts +108 -0
- package/dist/templates/app/api/v1/devtools/blocks/route.ts +82 -0
- package/dist/templates/app/api/v1/devtools/features/route.ts +61 -0
- package/dist/templates/app/api/v1/devtools/flows/route.ts +61 -0
- package/dist/templates/app/api/v1/devtools/scheduled-actions/route.ts +120 -0
- package/dist/templates/app/api/v1/devtools/testing/route.ts +82 -0
- package/dist/templates/app/api/v1/media/upload/route.ts +150 -0
- package/dist/templates/app/api/v1/plugin/[...path]/route.ts +373 -0
- package/dist/templates/app/api/v1/plugin/route.ts +96 -0
- package/dist/templates/app/api/v1/post-categories/[id]/route.ts +255 -0
- package/dist/templates/app/api/v1/post-categories/route.ts +119 -0
- package/dist/templates/app/api/v1/team-invitations/[token]/accept/route.ts +179 -0
- package/dist/templates/app/api/v1/team-invitations/[token]/decline/route.ts +120 -0
- package/dist/templates/app/api/v1/team-invitations/[token]/route.ts +89 -0
- package/dist/templates/app/api/v1/team-invitations/route.ts +114 -0
- package/dist/templates/app/api/v1/teams/[teamId]/invitations/route.ts +171 -0
- package/dist/templates/app/api/v1/teams/[teamId]/invoices/[invoiceNumber]/route.ts +105 -0
- package/dist/templates/app/api/v1/teams/[teamId]/invoices/route.ts +125 -0
- package/dist/templates/app/api/v1/teams/[teamId]/members/[memberId]/route.ts +263 -0
- package/dist/templates/app/api/v1/teams/[teamId]/members/route.ts +358 -0
- package/dist/templates/app/api/v1/teams/[teamId]/route.ts +294 -0
- package/dist/templates/app/api/v1/teams/[teamId]/subscription/route.ts +50 -0
- package/dist/templates/app/api/v1/teams/[teamId]/usage/[limitSlug]/route.ts +91 -0
- package/dist/templates/app/api/v1/teams/route.ts +293 -0
- package/dist/templates/app/api/v1/teams/switch/route.ts +88 -0
- package/dist/templates/app/api/v1/theme/[...path]/route.ts +361 -0
- package/dist/templates/app/api/v1/theme/route.ts +96 -0
- package/dist/templates/app/api/v1/users/[id]/meta/[key]/route.ts +363 -0
- package/dist/templates/app/api/v1/users/[id]/route.ts +302 -0
- package/dist/templates/app/api/v1/users/route.ts +197 -0
- package/dist/templates/app/components/page-renderer.d.ts +13 -0
- package/dist/templates/app/components/page-renderer.d.ts.map +1 -0
- package/dist/templates/app/components/page-renderer.tsx +89 -0
- package/dist/templates/app/dashboard/(main)/[entity]/[id]/edit/page.tsx +117 -0
- package/dist/templates/app/dashboard/(main)/[entity]/[id]/page.tsx +98 -0
- package/dist/templates/app/dashboard/(main)/[entity]/create/page.tsx +95 -0
- package/dist/templates/app/dashboard/(main)/[entity]/error.tsx +51 -0
- package/dist/templates/app/dashboard/(main)/[entity]/layout.tsx +113 -0
- package/dist/templates/app/dashboard/(main)/[entity]/loading.tsx +61 -0
- package/dist/templates/app/dashboard/(main)/[entity]/page.tsx +83 -0
- package/dist/templates/app/dashboard/(main)/layout.tsx +39 -0
- package/dist/templates/app/dashboard/(main)/page.tsx +203 -0
- package/dist/templates/app/dashboard/features/analytics/page.tsx +35 -0
- package/dist/templates/app/dashboard/features/automation/page.tsx +35 -0
- package/dist/templates/app/dashboard/features/layout.tsx +13 -0
- package/dist/templates/app/dashboard/features/webhooks/page.tsx +35 -0
- package/dist/templates/app/dashboard/layout.tsx +86 -0
- package/dist/templates/app/dashboard/permission-denied/page.tsx +29 -0
- package/dist/templates/app/dashboard/settings/api-keys/page.tsx +513 -0
- package/dist/templates/app/dashboard/settings/billing/page.tsx +295 -0
- package/dist/templates/app/dashboard/settings/invoices/[invoiceNumber]/page.tsx +222 -0
- package/dist/templates/app/dashboard/settings/invoices/page.tsx +82 -0
- package/dist/templates/app/dashboard/settings/layout.tsx +161 -0
- package/dist/templates/app/dashboard/settings/notifications/page.tsx +483 -0
- package/dist/templates/app/dashboard/settings/page.tsx +96 -0
- package/dist/templates/app/dashboard/settings/password/page.tsx +330 -0
- package/dist/templates/app/dashboard/settings/plans/page.tsx +40 -0
- package/dist/templates/app/dashboard/settings/profile/page.tsx +723 -0
- package/dist/templates/app/dashboard/settings/security/page.tsx +541 -0
- package/dist/templates/app/dashboard/settings/teams/page.tsx +273 -0
- package/dist/templates/app/dashboard/settings/teams/permissions/page.tsx +92 -0
- package/dist/templates/app/devtools/api/[...path]/page.tsx +36 -0
- package/dist/templates/app/devtools/api/page.tsx +213 -0
- package/dist/templates/app/devtools/blocks/[slug]/page.tsx +39 -0
- package/dist/templates/app/devtools/blocks/page.tsx +31 -0
- package/dist/templates/app/devtools/config/page.tsx +31 -0
- package/dist/templates/app/devtools/features/page.tsx +31 -0
- package/dist/templates/app/devtools/flows/page.tsx +31 -0
- package/dist/templates/app/devtools/layout.tsx +58 -0
- package/dist/templates/app/devtools/page.tsx +121 -0
- package/dist/templates/app/devtools/scheduled-actions/page.tsx +157 -0
- package/dist/templates/app/devtools/style/page.tsx +330 -0
- package/dist/templates/app/devtools/tags/page.tsx +31 -0
- package/dist/templates/app/devtools/tests/[[...path]]/page.tsx +47 -0
- package/dist/templates/app/favicon.ico +0 -0
- package/dist/templates/app/globals.css +317 -0
- package/dist/templates/app/layout.tsx +90 -0
- package/dist/templates/app/layout.tsx.ejs +90 -0
- package/dist/templates/app/public/page.tsx +30 -0
- package/dist/templates/app/superadmin/layout.tsx +67 -0
- package/dist/templates/app/superadmin/page.tsx +149 -0
- package/dist/templates/app/superadmin/subscriptions/page.tsx +654 -0
- package/dist/templates/app/superadmin/team-roles/page.tsx +493 -0
- package/dist/templates/app/superadmin/teams/[teamId]/page.tsx +687 -0
- package/dist/templates/app/superadmin/teams/page.tsx +349 -0
- package/dist/templates/app/superadmin/users/[userId]/page.tsx +548 -0
- package/dist/templates/app/superadmin/users/page.tsx +526 -0
- package/dist/templates/app/theme-styles.css +202 -0
- package/dist/templates/contents/plugins/.gitkeep +0 -0
- package/dist/templates/contents/plugins/README.md +42 -0
- package/dist/templates/contents/plugins/langchain/.env.example +41 -0
- package/dist/templates/contents/plugins/langchain/api/observability/metrics/route.ts +110 -0
- package/dist/templates/contents/plugins/langchain/api/observability/traces/[traceId]/route.ts +398 -0
- package/dist/templates/contents/plugins/langchain/api/observability/traces/route.ts +205 -0
- package/dist/templates/contents/plugins/langchain/api/sessions/route.ts +332 -0
- package/dist/templates/contents/plugins/langchain/components/observability/CollapsibleJson.tsx +71 -0
- package/dist/templates/contents/plugins/langchain/components/observability/CompactTimeline.tsx +75 -0
- package/dist/templates/contents/plugins/langchain/components/observability/ConversationFlow.tsx +271 -0
- package/dist/templates/contents/plugins/langchain/components/observability/DisabledMessage.tsx +21 -0
- package/dist/templates/contents/plugins/langchain/components/observability/FiltersPanel.tsx +82 -0
- package/dist/templates/contents/plugins/langchain/components/observability/ObservabilityDashboard.tsx +230 -0
- package/dist/templates/contents/plugins/langchain/components/observability/SpansList.tsx +210 -0
- package/dist/templates/contents/plugins/langchain/components/observability/TraceDetail.tsx +335 -0
- package/dist/templates/contents/plugins/langchain/components/observability/TraceStatusBadge.tsx +39 -0
- package/dist/templates/contents/plugins/langchain/components/observability/TracesTable.tsx +97 -0
- package/dist/templates/contents/plugins/langchain/components/observability/index.ts +7 -0
- package/dist/templates/contents/plugins/langchain/docs/01-getting-started/01-overview.md +196 -0
- package/dist/templates/contents/plugins/langchain/docs/01-getting-started/02-installation.md +368 -0
- package/dist/templates/contents/plugins/langchain/docs/01-getting-started/03-configuration.md +794 -0
- package/dist/templates/contents/plugins/langchain/docs/02-core-concepts/01-architecture.md +566 -0
- package/dist/templates/contents/plugins/langchain/docs/02-core-concepts/02-agents.md +597 -0
- package/dist/templates/contents/plugins/langchain/docs/02-core-concepts/03-tools.md +689 -0
- package/dist/templates/contents/plugins/langchain/docs/03-orchestration/01-graph-orchestrator.md +809 -0
- package/dist/templates/contents/plugins/langchain/docs/03-orchestration/02-legacy-react.md +650 -0
- package/dist/templates/contents/plugins/langchain/docs/04-advanced/01-observability.md +645 -0
- package/dist/templates/contents/plugins/langchain/docs/04-advanced/02-token-tracking.md +469 -0
- package/dist/templates/contents/plugins/langchain/docs/04-advanced/03-streaming.md +476 -0
- package/dist/templates/contents/plugins/langchain/docs/04-advanced/04-guardrails.md +597 -0
- package/dist/templates/contents/plugins/langchain/docs/05-reference/01-api-reference.md +1403 -0
- package/dist/templates/contents/plugins/langchain/docs/05-reference/02-customization.md +646 -0
- package/dist/templates/contents/plugins/langchain/docs/05-reference/03-examples.md +881 -0
- package/dist/templates/contents/plugins/langchain/docs/index.md +85 -0
- package/dist/templates/contents/plugins/langchain/hooks/observability/useMetrics.ts +31 -0
- package/dist/templates/contents/plugins/langchain/hooks/observability/useTraceDetail.ts +48 -0
- package/dist/templates/contents/plugins/langchain/hooks/observability/useTraces.ts +59 -0
- package/dist/templates/contents/plugins/langchain/lib/agent-factory.ts +354 -0
- package/dist/templates/contents/plugins/langchain/lib/agent-helpers.ts +201 -0
- package/dist/templates/contents/plugins/langchain/lib/db-memory-store.ts +417 -0
- package/dist/templates/contents/plugins/langchain/lib/graph/index.ts +58 -0
- package/dist/templates/contents/plugins/langchain/lib/graph/nodes/combiner.ts +399 -0
- package/dist/templates/contents/plugins/langchain/lib/graph/nodes/router.ts +440 -0
- package/dist/templates/contents/plugins/langchain/lib/graph/orchestrator-graph.ts +386 -0
- package/dist/templates/contents/plugins/langchain/lib/graph/prompts/combiner.md +131 -0
- package/dist/templates/contents/plugins/langchain/lib/graph/prompts/router.md +193 -0
- package/dist/templates/contents/plugins/langchain/lib/graph/types.ts +365 -0
- package/dist/templates/contents/plugins/langchain/lib/guardrails.ts +230 -0
- package/dist/templates/contents/plugins/langchain/lib/index.ts +44 -0
- package/dist/templates/contents/plugins/langchain/lib/logger.ts +70 -0
- package/dist/templates/contents/plugins/langchain/lib/memory-store.ts +168 -0
- package/dist/templates/contents/plugins/langchain/lib/message-serializer.ts +110 -0
- package/dist/templates/contents/plugins/langchain/lib/prompt-renderer.ts +94 -0
- package/dist/templates/contents/plugins/langchain/lib/providers.ts +226 -0
- package/dist/templates/contents/plugins/langchain/lib/streaming.ts +232 -0
- package/dist/templates/contents/plugins/langchain/lib/token-tracker.ts +298 -0
- package/dist/templates/contents/plugins/langchain/lib/tools-builder.ts +192 -0
- package/dist/templates/contents/plugins/langchain/lib/tracer-callbacks.ts +342 -0
- package/dist/templates/contents/plugins/langchain/lib/tracer.ts +350 -0
- package/dist/templates/contents/plugins/langchain/migrations/001_langchain_memory.sql +83 -0
- package/dist/templates/contents/plugins/langchain/migrations/002_token_usage.sql +127 -0
- package/dist/templates/contents/plugins/langchain/migrations/003_observability.sql +257 -0
- package/dist/templates/contents/plugins/langchain/package.json +17 -0
- package/dist/templates/contents/plugins/langchain/plugin.config.ts +170 -0
- package/dist/templates/contents/plugins/langchain/presets/lib/langchain.config.ts.preset +142 -0
- package/dist/templates/contents/plugins/langchain/presets/templates/sector7/ai-observability/[traceId]/page.tsx +91 -0
- package/dist/templates/contents/plugins/langchain/presets/templates/sector7/ai-observability/page.tsx +54 -0
- package/dist/templates/contents/plugins/langchain/types/langchain.types.ts +274 -0
- package/dist/templates/contents/plugins/langchain/types/observability.types.ts +270 -0
- package/dist/templates/contents/themes/.gitkeep +0 -0
- package/dist/templates/contents/themes/default/about/business.md +49 -0
- package/dist/templates/contents/themes/default/about/features.json +302 -0
- package/dist/templates/contents/themes/default/about/team.md +79 -0
- package/dist/templates/contents/themes/default/api/ai/chat/stream/route.ts +212 -0
- package/dist/templates/contents/themes/default/api/ai/orchestrator/route.ts +226 -0
- package/dist/templates/contents/themes/default/api/ai/single-agent/route.ts +291 -0
- package/dist/templates/contents/themes/default/api/ai/usage/route.ts +122 -0
- package/dist/templates/contents/themes/default/blocks/benefits/component.tsx +100 -0
- package/dist/templates/contents/themes/default/blocks/benefits/config.ts +11 -0
- package/dist/templates/contents/themes/default/blocks/benefits/examples.ts +85 -0
- package/dist/templates/contents/themes/default/blocks/benefits/fields.ts +156 -0
- package/dist/templates/contents/themes/default/blocks/benefits/schema.ts +33 -0
- package/dist/templates/contents/themes/default/blocks/cta-section/component.tsx +100 -0
- package/dist/templates/contents/themes/default/blocks/cta-section/config.ts +11 -0
- package/dist/templates/contents/themes/default/blocks/cta-section/examples.ts +41 -0
- package/dist/templates/contents/themes/default/blocks/cta-section/fields.ts +89 -0
- package/dist/templates/contents/themes/default/blocks/cta-section/index.ts +6 -0
- package/dist/templates/contents/themes/default/blocks/cta-section/schema.ts +32 -0
- package/dist/templates/contents/themes/default/blocks/cta-section/thumbnail.png +1 -0
- package/dist/templates/contents/themes/default/blocks/faq-accordion/component.tsx +156 -0
- package/dist/templates/contents/themes/default/blocks/faq-accordion/config.ts +11 -0
- package/dist/templates/contents/themes/default/blocks/faq-accordion/examples.ts +77 -0
- package/dist/templates/contents/themes/default/blocks/faq-accordion/fields.ts +119 -0
- package/dist/templates/contents/themes/default/blocks/faq-accordion/index.ts +6 -0
- package/dist/templates/contents/themes/default/blocks/faq-accordion/schema.ts +45 -0
- package/dist/templates/contents/themes/default/blocks/features-grid/component.tsx +112 -0
- package/dist/templates/contents/themes/default/blocks/features-grid/config.ts +11 -0
- package/dist/templates/contents/themes/default/blocks/features-grid/examples.ts +63 -0
- package/dist/templates/contents/themes/default/blocks/features-grid/fields.ts +97 -0
- package/dist/templates/contents/themes/default/blocks/features-grid/index.ts +6 -0
- package/dist/templates/contents/themes/default/blocks/features-grid/schema.ts +40 -0
- package/dist/templates/contents/themes/default/blocks/features-grid/thumbnail.png +1 -0
- package/dist/templates/contents/themes/default/blocks/hero/component.tsx +100 -0
- package/dist/templates/contents/themes/default/blocks/hero/config.ts +11 -0
- package/dist/templates/contents/themes/default/blocks/hero/examples.ts +35 -0
- package/dist/templates/contents/themes/default/blocks/hero/fields.ts +60 -0
- package/dist/templates/contents/themes/default/blocks/hero/index.ts +6 -0
- package/dist/templates/contents/themes/default/blocks/hero/schema.ts +32 -0
- package/dist/templates/contents/themes/default/blocks/hero/thumbnail.png +1 -0
- package/dist/templates/contents/themes/default/blocks/hero/thumbnail.png.txt +6 -0
- package/dist/templates/contents/themes/default/blocks/hero-with-form/component.tsx +232 -0
- package/dist/templates/contents/themes/default/blocks/hero-with-form/config.ts +11 -0
- package/dist/templates/contents/themes/default/blocks/hero-with-form/examples.ts +16 -0
- package/dist/templates/contents/themes/default/blocks/hero-with-form/fields.ts +207 -0
- package/dist/templates/contents/themes/default/blocks/hero-with-form/index.ts +6 -0
- package/dist/templates/contents/themes/default/blocks/hero-with-form/schema.ts +54 -0
- package/dist/templates/contents/themes/default/blocks/jumbotron/component.tsx +136 -0
- package/dist/templates/contents/themes/default/blocks/jumbotron/config.ts +11 -0
- package/dist/templates/contents/themes/default/blocks/jumbotron/examples.ts +36 -0
- package/dist/templates/contents/themes/default/blocks/jumbotron/fields.ts +202 -0
- package/dist/templates/contents/themes/default/blocks/jumbotron/index.ts +6 -0
- package/dist/templates/contents/themes/default/blocks/jumbotron/schema.ts +55 -0
- package/dist/templates/contents/themes/default/blocks/logo-cloud/component.tsx +154 -0
- package/dist/templates/contents/themes/default/blocks/logo-cloud/config.ts +11 -0
- package/dist/templates/contents/themes/default/blocks/logo-cloud/examples.ts +34 -0
- package/dist/templates/contents/themes/default/blocks/logo-cloud/fields.ts +133 -0
- package/dist/templates/contents/themes/default/blocks/logo-cloud/index.ts +6 -0
- package/dist/templates/contents/themes/default/blocks/logo-cloud/schema.ts +46 -0
- package/dist/templates/contents/themes/default/blocks/post-content/component.tsx +197 -0
- package/dist/templates/contents/themes/default/blocks/post-content/config.ts +11 -0
- package/dist/templates/contents/themes/default/blocks/post-content/examples.ts +33 -0
- package/dist/templates/contents/themes/default/blocks/post-content/fields.ts +165 -0
- package/dist/templates/contents/themes/default/blocks/post-content/index.ts +4 -0
- package/dist/templates/contents/themes/default/blocks/post-content/schema.ts +46 -0
- package/dist/templates/contents/themes/default/blocks/pricing-table/component.tsx +154 -0
- package/dist/templates/contents/themes/default/blocks/pricing-table/config.ts +11 -0
- package/dist/templates/contents/themes/default/blocks/pricing-table/examples.ts +96 -0
- package/dist/templates/contents/themes/default/blocks/pricing-table/fields.ts +161 -0
- package/dist/templates/contents/themes/default/blocks/pricing-table/index.ts +4 -0
- package/dist/templates/contents/themes/default/blocks/pricing-table/schema.ts +50 -0
- package/dist/templates/contents/themes/default/blocks/split-content/component.tsx +135 -0
- package/dist/templates/contents/themes/default/blocks/split-content/config.ts +11 -0
- package/dist/templates/contents/themes/default/blocks/split-content/examples.ts +38 -0
- package/dist/templates/contents/themes/default/blocks/split-content/fields.ts +198 -0
- package/dist/templates/contents/themes/default/blocks/split-content/index.ts +6 -0
- package/dist/templates/contents/themes/default/blocks/split-content/schema.ts +67 -0
- package/dist/templates/contents/themes/default/blocks/stats-counter/component.tsx +124 -0
- package/dist/templates/contents/themes/default/blocks/stats-counter/config.ts +11 -0
- package/dist/templates/contents/themes/default/blocks/stats-counter/examples.ts +61 -0
- package/dist/templates/contents/themes/default/blocks/stats-counter/fields.ts +134 -0
- package/dist/templates/contents/themes/default/blocks/stats-counter/index.ts +6 -0
- package/dist/templates/contents/themes/default/blocks/stats-counter/schema.ts +47 -0
- package/dist/templates/contents/themes/default/blocks/testimonials/component.tsx +114 -0
- package/dist/templates/contents/themes/default/blocks/testimonials/config.ts +11 -0
- package/dist/templates/contents/themes/default/blocks/testimonials/examples.ts +65 -0
- package/dist/templates/contents/themes/default/blocks/testimonials/fields.ts +105 -0
- package/dist/templates/contents/themes/default/blocks/testimonials/index.ts +6 -0
- package/dist/templates/contents/themes/default/blocks/testimonials/schema.ts +41 -0
- package/dist/templates/contents/themes/default/blocks/testimonials/thumbnail.png +1 -0
- package/dist/templates/contents/themes/default/blocks/text-content/component.tsx +97 -0
- package/dist/templates/contents/themes/default/blocks/text-content/config.ts +11 -0
- package/dist/templates/contents/themes/default/blocks/text-content/examples.ts +30 -0
- package/dist/templates/contents/themes/default/blocks/text-content/fields.ts +88 -0
- package/dist/templates/contents/themes/default/blocks/text-content/index.ts +6 -0
- package/dist/templates/contents/themes/default/blocks/text-content/schema.ts +30 -0
- package/dist/templates/contents/themes/default/blocks/text-content/thumbnail.png +1 -0
- package/dist/templates/contents/themes/default/blocks/timeline/component.tsx +267 -0
- package/dist/templates/contents/themes/default/blocks/timeline/config.ts +11 -0
- package/dist/templates/contents/themes/default/blocks/timeline/examples.ts +68 -0
- package/dist/templates/contents/themes/default/blocks/timeline/fields.ts +147 -0
- package/dist/templates/contents/themes/default/blocks/timeline/index.ts +6 -0
- package/dist/templates/contents/themes/default/blocks/timeline/schema.ts +49 -0
- package/dist/templates/contents/themes/default/blocks/video-hero/component.tsx +270 -0
- package/dist/templates/contents/themes/default/blocks/video-hero/config.ts +11 -0
- package/dist/templates/contents/themes/default/blocks/video-hero/examples.ts +24 -0
- package/dist/templates/contents/themes/default/blocks/video-hero/fields.ts +98 -0
- package/dist/templates/contents/themes/default/blocks/video-hero/index.ts +6 -0
- package/dist/templates/contents/themes/default/blocks/video-hero/schema.ts +39 -0
- package/dist/templates/contents/themes/default/components/ai-chat/ChatPanel.tsx +575 -0
- package/dist/templates/contents/themes/default/components/ai-chat/ConversationItem.tsx +266 -0
- package/dist/templates/contents/themes/default/components/ai-chat/ConversationSidebar.tsx +99 -0
- package/dist/templates/contents/themes/default/components/ai-chat/MarkdownRenderer.tsx +15 -0
- package/dist/templates/contents/themes/default/components/ai-chat/Message.tsx +42 -0
- package/dist/templates/contents/themes/default/components/ai-chat/MessageInput.tsx +49 -0
- package/dist/templates/contents/themes/default/components/ai-chat/MessageList.tsx +46 -0
- package/dist/templates/contents/themes/default/components/ai-chat/TypingIndicator.tsx +11 -0
- package/dist/templates/contents/themes/default/config/app.config.ts +367 -0
- package/dist/templates/contents/themes/default/config/billing.config.ts +349 -0
- package/dist/templates/contents/themes/default/config/dashboard.config.ts +506 -0
- package/dist/templates/contents/themes/default/config/dev.config.ts +104 -0
- package/dist/templates/contents/themes/default/config/features.config.ts +203 -0
- package/dist/templates/contents/themes/default/config/flows.config.ts +129 -0
- package/dist/templates/contents/themes/default/config/permissions.config.ts +245 -0
- package/dist/templates/contents/themes/default/config/theme.config.ts +74 -0
- package/dist/templates/contents/themes/default/docs/01-overview/01-introduction.md +335 -0
- package/dist/templates/contents/themes/default/docs/01-overview/02-customization.md +671 -0
- package/dist/templates/contents/themes/default/docs/02-features/01-components.md +155 -0
- package/dist/templates/contents/themes/default/docs/02-features/02-styling.md +139 -0
- package/dist/templates/contents/themes/default/docs/02-features/03-tasks-entity.md +407 -0
- package/dist/templates/contents/themes/default/docs/03-ai/01-overview.md +211 -0
- package/dist/templates/contents/themes/default/docs/03-ai/02-customization.md +436 -0
- package/dist/templates/contents/themes/default/entities/customers/customers.config.ts +86 -0
- package/dist/templates/contents/themes/default/entities/customers/customers.fields.ts +165 -0
- package/dist/templates/contents/themes/default/entities/customers/customers.service.ts +516 -0
- package/dist/templates/contents/themes/default/entities/customers/customers.types.ts +83 -0
- package/dist/templates/contents/themes/default/entities/customers/messages/en.json +66 -0
- package/dist/templates/contents/themes/default/entities/customers/messages/es.json +66 -0
- package/dist/templates/contents/themes/default/entities/customers/migrations/001_customers_table.sql +102 -0
- package/dist/templates/contents/themes/default/entities/customers/migrations/002_customers_metas.sql +92 -0
- package/dist/templates/contents/themes/default/entities/pages/messages/en.json +41 -0
- package/dist/templates/contents/themes/default/entities/pages/messages/es.json +41 -0
- package/dist/templates/contents/themes/default/entities/pages/migrations/001_pages_table.sql +112 -0
- package/dist/templates/contents/themes/default/entities/pages/migrations/002_pages_metas.sql +56 -0
- package/dist/templates/contents/themes/default/entities/pages/migrations/003_add_status.sql +50 -0
- package/dist/templates/contents/themes/default/entities/pages/pages-management.service.ts +610 -0
- package/dist/templates/contents/themes/default/entities/pages/pages.config.ts +105 -0
- package/dist/templates/contents/themes/default/entities/pages/pages.fields.ts +101 -0
- package/dist/templates/contents/themes/default/entities/pages/pages.service.ts +290 -0
- package/dist/templates/contents/themes/default/entities/pages/pages.types.ts +124 -0
- package/dist/templates/contents/themes/default/entities/posts/components/post-header.tsx +97 -0
- package/dist/templates/contents/themes/default/entities/posts/messages/en.json +55 -0
- package/dist/templates/contents/themes/default/entities/posts/messages/es.json +55 -0
- package/dist/templates/contents/themes/default/entities/posts/migrations/001_posts_table.sql +115 -0
- package/dist/templates/contents/themes/default/entities/posts/migrations/003_add_status.sql +44 -0
- package/dist/templates/contents/themes/default/entities/posts/migrations/004_entity_taxonomy_relations.sql +129 -0
- package/dist/templates/contents/themes/default/entities/posts/migrations/006_posts_metas.sql +56 -0
- package/dist/templates/contents/themes/default/entities/posts/posts.config.ts +112 -0
- package/dist/templates/contents/themes/default/entities/posts/posts.fields.ts +116 -0
- package/dist/templates/contents/themes/default/entities/posts/posts.service.ts +376 -0
- package/dist/templates/contents/themes/default/entities/posts/posts.types.ts +74 -0
- package/dist/templates/contents/themes/default/entities/tasks/messages/en.json +204 -0
- package/dist/templates/contents/themes/default/entities/tasks/messages/es.json +204 -0
- package/dist/templates/contents/themes/default/entities/tasks/migrations/001_tasks_table.sql +105 -0
- package/dist/templates/contents/themes/default/entities/tasks/migrations/002_task_metas.sql +85 -0
- package/dist/templates/contents/themes/default/entities/tasks/migrations/sample_data.json +77 -0
- package/dist/templates/contents/themes/default/entities/tasks/tasks.config.ts +90 -0
- package/dist/templates/contents/themes/default/entities/tasks/tasks.fields.ts +196 -0
- package/dist/templates/contents/themes/default/entities/tasks/tasks.service.ts +541 -0
- package/dist/templates/contents/themes/default/entities/tasks/tasks.types.ts +56 -0
- package/dist/templates/contents/themes/default/lib/hooks/useAiChat.ts +114 -0
- package/dist/templates/contents/themes/default/lib/hooks/useConversations.ts +376 -0
- package/dist/templates/contents/themes/default/lib/hooks/useOrchestratorChat.ts +122 -0
- package/dist/templates/contents/themes/default/lib/hooks/usePersistentChat.ts +315 -0
- package/dist/templates/contents/themes/default/lib/hooks/useStreamingChat.ts +127 -0
- package/dist/templates/contents/themes/default/lib/hooks/useTokenUsage.ts +63 -0
- package/dist/templates/contents/themes/default/lib/langchain/agents/customer-assistant.md +69 -0
- package/dist/templates/contents/themes/default/lib/langchain/agents/index.ts +61 -0
- package/dist/templates/contents/themes/default/lib/langchain/agents/orchestrator.md +59 -0
- package/dist/templates/contents/themes/default/lib/langchain/agents/page-assistant.md +85 -0
- package/dist/templates/contents/themes/default/lib/langchain/agents/single-agent.md +46 -0
- package/dist/templates/contents/themes/default/lib/langchain/agents/task-assistant.md +55 -0
- package/dist/templates/contents/themes/default/lib/langchain/config.ts +45 -0
- package/dist/templates/contents/themes/default/lib/langchain/handlers/customer-handler.ts +338 -0
- package/dist/templates/contents/themes/default/lib/langchain/handlers/page-handler.ts +232 -0
- package/dist/templates/contents/themes/default/lib/langchain/handlers/task-handler.ts +323 -0
- package/dist/templates/contents/themes/default/lib/langchain/langchain.config.ts +223 -0
- package/dist/templates/contents/themes/default/lib/langchain/observability.config.ts +30 -0
- package/dist/templates/contents/themes/default/lib/langchain/orchestrator.ts +562 -0
- package/dist/templates/contents/themes/default/lib/langchain/tools/customers.ts +176 -0
- package/dist/templates/contents/themes/default/lib/langchain/tools/index.ts +10 -0
- package/dist/templates/contents/themes/default/lib/langchain/tools/orchestrator.ts +92 -0
- package/dist/templates/contents/themes/default/lib/langchain/tools/pages.ts +289 -0
- package/dist/templates/contents/themes/default/lib/langchain/tools/tasks.ts +167 -0
- package/dist/templates/contents/themes/default/lib/scheduled-actions/billing.ts +149 -0
- package/dist/templates/contents/themes/default/lib/scheduled-actions/index.ts +170 -0
- package/dist/templates/contents/themes/default/lib/scheduled-actions/webhook.ts +231 -0
- package/dist/templates/contents/themes/default/lib/selectors.ts +196 -0
- package/dist/templates/contents/themes/default/messages/en/admin.json +219 -0
- package/dist/templates/contents/themes/default/messages/en/aiUsage.json +36 -0
- package/dist/templates/contents/themes/default/messages/en/buttons.json +19 -0
- package/dist/templates/contents/themes/default/messages/en/categories.json +35 -0
- package/dist/templates/contents/themes/default/messages/en/common.json +16 -0
- package/dist/templates/contents/themes/default/messages/en/dev.json +106 -0
- package/dist/templates/contents/themes/default/messages/en/docs.json +27 -0
- package/dist/templates/contents/themes/default/messages/en/entities.json +7 -0
- package/dist/templates/contents/themes/default/messages/en/features.json +119 -0
- package/dist/templates/contents/themes/default/messages/en/footer.json +22 -0
- package/dist/templates/contents/themes/default/messages/en/home.json +57 -0
- package/dist/templates/contents/themes/default/messages/en/index.ts +39 -0
- package/dist/templates/contents/themes/default/messages/en/mobileNav.json +13 -0
- package/dist/templates/contents/themes/default/messages/en/navigation.json +8 -0
- package/dist/templates/contents/themes/default/messages/en/observability.json +74 -0
- package/dist/templates/contents/themes/default/messages/en/posts.json +54 -0
- package/dist/templates/contents/themes/default/messages/en/pricing.json +102 -0
- package/dist/templates/contents/themes/default/messages/en/support.json +9 -0
- package/dist/templates/contents/themes/default/messages/en/teams.json +8 -0
- package/dist/templates/contents/themes/default/messages/en.json +934 -0
- package/dist/templates/contents/themes/default/messages/en.json.backup +934 -0
- package/dist/templates/contents/themes/default/messages/es.json +929 -0
- package/dist/templates/contents/themes/default/migrations/089_add_editor_team_role.sql +39 -0
- package/dist/templates/contents/themes/default/migrations/090_demo_users_teams.sql +540 -0
- package/dist/templates/contents/themes/default/migrations/091_greek_teams_billing.sql +523 -0
- package/dist/templates/contents/themes/default/migrations/092_billing_sample_data.sql +774 -0
- package/dist/templates/contents/themes/default/migrations/093_pages_sample_data.sql +1158 -0
- package/dist/templates/contents/themes/default/migrations/094_posts_sample_data.sql +278 -0
- package/dist/templates/contents/themes/default/migrations/095_tasks_sample_data.sql +440 -0
- package/dist/templates/contents/themes/default/migrations/096_customers_sample_data.sql +358 -0
- package/dist/templates/contents/themes/default/migrations/097_scheduled_actions_sample_data.sql +111 -0
- package/dist/templates/contents/themes/default/public/docs/desktop-layout-example.png +0 -0
- package/dist/templates/contents/themes/default/styles/components.css +11 -0
- package/dist/templates/contents/themes/default/styles/globals.css +179 -0
- package/dist/templates/contents/themes/default/templates/(public)/blog/[slug]/page.tsx +65 -0
- package/dist/templates/contents/themes/default/templates/(public)/layout.tsx +25 -0
- package/dist/templates/contents/themes/default/templates/(public)/page.tsx +200 -0
- package/dist/templates/contents/themes/default/templates/(public)/support/page.tsx +321 -0
- package/dist/templates/contents/themes/default/templates/dashboard/(main)/agent-multi/page.tsx +63 -0
- package/dist/templates/contents/themes/default/templates/dashboard/(main)/agent-single/page.tsx +142 -0
- package/dist/templates/contents/themes/default/templates/dashboard/(main)/settings/ai-usage/page.tsx +157 -0
- package/dist/templates/contents/themes/default/templates/superadmin/ai-observability/[traceId]/page.tsx +27 -0
- package/dist/templates/contents/themes/default/templates/superadmin/ai-observability/page.tsx +17 -0
- package/dist/templates/contents/themes/default/tests/cypress/e2e/_devtools/access.bdd.md +262 -0
- package/dist/templates/contents/themes/default/tests/cypress/e2e/_devtools/access.cy.ts +171 -0
- package/dist/templates/contents/themes/default/tests/cypress/e2e/_devtools/navigation.bdd.md +261 -0
- package/dist/templates/contents/themes/default/tests/cypress/e2e/_devtools/navigation.cy.ts +157 -0
- package/dist/templates/contents/themes/default/tests/cypress/e2e/_devtools/pages.bdd.md +303 -0
- package/dist/templates/contents/themes/default/tests/cypress/e2e/_devtools/pages.cy.ts +184 -0
- package/dist/templates/contents/themes/default/tests/cypress/e2e/_docs/README.md +215 -0
- package/dist/templates/contents/themes/default/tests/cypress/e2e/_docs/tutorials/sector7-superadmin-teams.narration.json +155 -0
- package/dist/templates/contents/themes/default/tests/cypress/e2e/_docs/tutorials/sector7-superadmin.cy.ts +390 -0
- package/dist/templates/contents/themes/default/tests/cypress/e2e/_docs/tutorials/teams-system.doc.cy.ts +349 -0
- package/dist/templates/contents/themes/default/tests/cypress/e2e/_docs/tutorials/teams-system.narration.json +165 -0
- package/dist/templates/contents/themes/default/tests/cypress/e2e/_selectors/auth.cy.ts +306 -0
- package/dist/templates/contents/themes/default/tests/cypress/e2e/_selectors/billing.cy.ts +89 -0
- package/dist/templates/contents/themes/default/tests/cypress/e2e/_selectors/dashboard-mobile.cy.ts +113 -0
- package/dist/templates/contents/themes/default/tests/cypress/e2e/_selectors/dashboard-navigation.cy.ts +89 -0
- package/dist/templates/contents/themes/default/tests/cypress/e2e/_selectors/dashboard-sidebar.cy.ts +60 -0
- package/dist/templates/contents/themes/default/tests/cypress/e2e/_selectors/dashboard-topnav.cy.ts +146 -0
- package/dist/templates/contents/themes/default/tests/cypress/e2e/_selectors/devtools.cy.ts +210 -0
- package/dist/templates/contents/themes/default/tests/cypress/e2e/_selectors/global-search.cy.ts +88 -0
- package/dist/templates/contents/themes/default/tests/cypress/e2e/_selectors/pages-editor.cy.ts +179 -0
- package/dist/templates/contents/themes/default/tests/cypress/e2e/_selectors/posts-editor.cy.ts +282 -0
- package/dist/templates/contents/themes/default/tests/cypress/e2e/_selectors/public.cy.ts +112 -0
- package/dist/templates/contents/themes/default/tests/cypress/e2e/_selectors/settings-api-keys.cy.ts +228 -0
- package/dist/templates/contents/themes/default/tests/cypress/e2e/_selectors/settings-billing.cy.ts +105 -0
- package/dist/templates/contents/themes/default/tests/cypress/e2e/_selectors/settings-layout.cy.ts +119 -0
- package/dist/templates/contents/themes/default/tests/cypress/e2e/_selectors/settings-password.cy.ts +71 -0
- package/dist/templates/contents/themes/default/tests/cypress/e2e/_selectors/settings-profile.cy.ts +82 -0
- package/dist/templates/contents/themes/default/tests/cypress/e2e/_selectors/settings-teams.cy.ts +68 -0
- package/dist/templates/contents/themes/default/tests/cypress/e2e/_selectors/superadmin.cy.ts +185 -0
- package/dist/templates/contents/themes/default/tests/cypress/e2e/_selectors/tasks.cy.ts +242 -0
- package/dist/templates/contents/themes/default/tests/cypress/e2e/_selectors/taxonomies.cy.ts +126 -0
- package/dist/templates/contents/themes/default/tests/cypress/e2e/_selectors/teams.cy.ts +142 -0
- package/dist/templates/contents/themes/default/tests/cypress/e2e/_superadmin/all-teams.bdd.md +261 -0
- package/dist/templates/contents/themes/default/tests/cypress/e2e/_superadmin/all-teams.cy.ts +177 -0
- package/dist/templates/contents/themes/default/tests/cypress/e2e/_superadmin/all-users.bdd.md +406 -0
- package/dist/templates/contents/themes/default/tests/cypress/e2e/_superadmin/all-users.cy.ts +294 -0
- package/dist/templates/contents/themes/default/tests/cypress/e2e/_superadmin/dashboard.bdd.md +235 -0
- package/dist/templates/contents/themes/default/tests/cypress/e2e/_superadmin/dashboard.cy.ts +149 -0
- package/dist/templates/contents/themes/default/tests/cypress/e2e/_superadmin/subscriptions-overview.bdd.md +290 -0
- package/dist/templates/contents/themes/default/tests/cypress/e2e/_superadmin/subscriptions-overview.cy.ts +194 -0
- package/dist/templates/contents/themes/default/tests/cypress/e2e/ai/ai-usage.cy.ts +209 -0
- package/dist/templates/contents/themes/default/tests/cypress/e2e/ai/chat-api.cy.ts +107 -0
- package/dist/templates/contents/themes/default/tests/cypress/e2e/ai/guardrails.cy.ts +332 -0
- package/dist/templates/contents/themes/default/tests/cypress/e2e/api/billing/BillingAPIController.js +319 -0
- package/dist/templates/contents/themes/default/tests/cypress/e2e/api/billing/check-action.cy.ts +326 -0
- package/dist/templates/contents/themes/default/tests/cypress/e2e/api/billing/checkout.cy.ts +358 -0
- package/dist/templates/contents/themes/default/tests/cypress/e2e/api/billing/lifecycle.cy.ts +423 -0
- package/dist/templates/contents/themes/default/tests/cypress/e2e/api/billing/plans/README.md +345 -0
- package/dist/templates/contents/themes/default/tests/cypress/e2e/api/billing/plans/business.cy.ts +412 -0
- package/dist/templates/contents/themes/default/tests/cypress/e2e/api/billing/plans/downgrade.cy.ts +510 -0
- package/dist/templates/contents/themes/default/tests/cypress/e2e/api/billing/plans/fixtures/billing-plans.json +163 -0
- package/dist/templates/contents/themes/default/tests/cypress/e2e/api/billing/plans/free.cy.ts +500 -0
- package/dist/templates/contents/themes/default/tests/cypress/e2e/api/billing/plans/pro.cy.ts +497 -0
- package/dist/templates/contents/themes/default/tests/cypress/e2e/api/billing/plans/starter.cy.ts +342 -0
- package/dist/templates/contents/themes/default/tests/cypress/e2e/api/billing/portal.cy.ts +313 -0
- package/dist/templates/contents/themes/default/tests/cypress/e2e/api/devtools/registries.bdd.md +300 -0
- package/dist/templates/contents/themes/default/tests/cypress/e2e/api/devtools/registries.cy.ts +368 -0
- package/dist/templates/contents/themes/default/tests/cypress/e2e/api/entities/blocks-scope.cy.ts +396 -0
- package/dist/templates/contents/themes/default/tests/cypress/e2e/api/entities/customers-crud.cy.ts +648 -0
- package/dist/templates/contents/themes/default/tests/cypress/e2e/api/entities/customers-metas.cy.ts +839 -0
- package/dist/templates/contents/themes/default/tests/cypress/e2e/api/entities/pages-crud.cy.ts +425 -0
- package/dist/templates/contents/themes/default/tests/cypress/e2e/api/entities/pages-status.cy.ts +335 -0
- package/dist/templates/contents/themes/default/tests/cypress/e2e/api/entities/post-categories-crud.cy.ts +610 -0
- package/dist/templates/contents/themes/default/tests/cypress/e2e/api/entities/posts-crud.cy.ts +709 -0
- package/dist/templates/contents/themes/default/tests/cypress/e2e/api/entities/posts-status.cy.ts +396 -0
- package/dist/templates/contents/themes/default/tests/cypress/e2e/api/entities/tasks-crud.cy.ts +602 -0
- package/dist/templates/contents/themes/default/tests/cypress/e2e/api/entities/tasks-metas.cy.ts +878 -0
- package/dist/templates/contents/themes/default/tests/cypress/e2e/api/entities/users-crud.cy.ts +469 -0
- package/dist/templates/contents/themes/default/tests/cypress/e2e/api/entities/users-metas.cy.ts +913 -0
- package/dist/templates/contents/themes/default/tests/cypress/e2e/api/entities/users-security.cy.ts +375 -0
- package/dist/templates/contents/themes/default/tests/cypress/e2e/api/scheduled-actions/cron-endpoint.bdd.md +375 -0
- package/dist/templates/contents/themes/default/tests/cypress/e2e/api/scheduled-actions/cron-endpoint.cy.ts +346 -0
- package/dist/templates/contents/themes/default/tests/cypress/e2e/api/scheduled-actions/devtools-endpoint.bdd.md +451 -0
- package/dist/templates/contents/themes/default/tests/cypress/e2e/api/scheduled-actions/devtools-endpoint.cy.ts +447 -0
- package/dist/templates/contents/themes/default/tests/cypress/e2e/api/scheduled-actions/scheduling.bdd.md +649 -0
- package/dist/templates/contents/themes/default/tests/cypress/e2e/api/scheduled-actions/scheduling.cy.ts +333 -0
- package/dist/templates/contents/themes/default/tests/cypress/e2e/api/settings/api-keys.crud.cy.ts +923 -0
- package/dist/templates/contents/themes/default/tests/cypress/e2e/uat/auth/app-roles/developer-login.bdd.md +231 -0
- package/dist/templates/contents/themes/default/tests/cypress/e2e/uat/auth/app-roles/developer-login.cy.ts +144 -0
- package/dist/templates/contents/themes/default/tests/cypress/e2e/uat/auth/app-roles/superadmin-login.bdd.md +118 -0
- package/dist/templates/contents/themes/default/tests/cypress/e2e/uat/auth/app-roles/superadmin-login.cy.ts +84 -0
- package/dist/templates/contents/themes/default/tests/cypress/e2e/uat/auth/custom-roles/editor-login.bdd.md +288 -0
- package/dist/templates/contents/themes/default/tests/cypress/e2e/uat/auth/custom-roles/editor-login.cy.ts +188 -0
- package/dist/templates/contents/themes/default/tests/cypress/e2e/uat/auth/login-logout.bdd.md +160 -0
- package/dist/templates/contents/themes/default/tests/cypress/e2e/uat/auth/login-logout.cy.ts +116 -0
- package/dist/templates/contents/themes/default/tests/cypress/e2e/uat/auth/password-reset.bdd.md +289 -0
- package/dist/templates/contents/themes/default/tests/cypress/e2e/uat/auth/password-reset.cy.ts +200 -0
- package/dist/templates/contents/themes/default/tests/cypress/e2e/uat/auth/team-roles/admin-login.bdd.md +225 -0
- package/dist/templates/contents/themes/default/tests/cypress/e2e/uat/auth/team-roles/admin-login.cy.ts +148 -0
- package/dist/templates/contents/themes/default/tests/cypress/e2e/uat/auth/team-roles/member-login.bdd.md +251 -0
- package/dist/templates/contents/themes/default/tests/cypress/e2e/uat/auth/team-roles/member-login.cy.ts +163 -0
- package/dist/templates/contents/themes/default/tests/cypress/e2e/uat/auth/team-roles/owner-login.bdd.md +231 -0
- package/dist/templates/contents/themes/default/tests/cypress/e2e/uat/auth/team-roles/owner-login.cy.ts +141 -0
- package/dist/templates/contents/themes/default/tests/cypress/e2e/uat/billing/extended.bdd.md +273 -0
- package/dist/templates/contents/themes/default/tests/cypress/e2e/uat/billing/extended.cy.ts +209 -0
- package/dist/templates/contents/themes/default/tests/cypress/e2e/uat/billing/feature-gates.bdd.md +407 -0
- package/dist/templates/contents/themes/default/tests/cypress/e2e/uat/billing/feature-gates.cy.ts +307 -0
- package/dist/templates/contents/themes/default/tests/cypress/e2e/uat/billing/page.bdd.md +329 -0
- package/dist/templates/contents/themes/default/tests/cypress/e2e/uat/billing/page.cy.ts +250 -0
- package/dist/templates/contents/themes/default/tests/cypress/e2e/uat/billing/status.bdd.md +190 -0
- package/dist/templates/contents/themes/default/tests/cypress/e2e/uat/billing/status.cy.ts +145 -0
- package/dist/templates/contents/themes/default/tests/cypress/e2e/uat/billing/team-switch.bdd.md +156 -0
- package/dist/templates/contents/themes/default/tests/cypress/e2e/uat/billing/team-switch.cy.ts +122 -0
- package/dist/templates/contents/themes/default/tests/cypress/e2e/uat/billing/usage.bdd.md +218 -0
- package/dist/templates/contents/themes/default/tests/cypress/e2e/uat/billing/usage.cy.ts +176 -0
- package/dist/templates/contents/themes/default/tests/cypress/e2e/uat/blocks/hero.bdd.md +124 -0
- package/dist/templates/contents/themes/default/tests/cypress/e2e/uat/blocks/hero.cy.ts +56 -0
- package/dist/templates/contents/themes/default/tests/cypress/e2e/uat/devtools/api-tester.cy.ts +390 -0
- package/dist/templates/contents/themes/default/tests/cypress/e2e/uat/entities/customers/member.bdd.md +275 -0
- package/dist/templates/contents/themes/default/tests/cypress/e2e/uat/entities/customers/member.cy.ts +122 -0
- package/dist/templates/contents/themes/default/tests/cypress/e2e/uat/entities/customers/owner.bdd.md +243 -0
- package/dist/templates/contents/themes/default/tests/cypress/e2e/uat/entities/customers/owner.cy.ts +165 -0
- package/dist/templates/contents/themes/default/tests/cypress/e2e/uat/entities/pages/block-crud.bdd.md +476 -0
- package/dist/templates/contents/themes/default/tests/cypress/e2e/uat/entities/pages/block-crud.cy.ts +486 -0
- package/dist/templates/contents/themes/default/tests/cypress/e2e/uat/entities/pages/block-editor.bdd.md +460 -0
- package/dist/templates/contents/themes/default/tests/cypress/e2e/uat/entities/pages/block-editor.cy.ts +301 -0
- package/dist/templates/contents/themes/default/tests/cypress/e2e/uat/entities/pages/list.bdd.md +432 -0
- package/dist/templates/contents/themes/default/tests/cypress/e2e/uat/entities/pages/list.cy.ts +273 -0
- package/dist/templates/contents/themes/default/tests/cypress/e2e/uat/entities/pages/public-rendering.bdd.md +696 -0
- package/dist/templates/contents/themes/default/tests/cypress/e2e/uat/entities/pages/public-rendering.cy.ts +340 -0
- package/dist/templates/contents/themes/default/tests/cypress/e2e/uat/entities/posts/categories-api-aware.bdd.md +161 -0
- package/dist/templates/contents/themes/default/tests/cypress/e2e/uat/entities/posts/categories-api-aware.cy.ts +104 -0
- package/dist/templates/contents/themes/default/tests/cypress/e2e/uat/entities/posts/categories.bdd.md +375 -0
- package/dist/templates/contents/themes/default/tests/cypress/e2e/uat/entities/posts/categories.cy.ts +241 -0
- package/dist/templates/contents/themes/default/tests/cypress/e2e/uat/entities/posts/editor.bdd.md +429 -0
- package/dist/templates/contents/themes/default/tests/cypress/e2e/uat/entities/posts/editor.cy.ts +257 -0
- package/dist/templates/contents/themes/default/tests/cypress/e2e/uat/entities/posts/list.bdd.md +340 -0
- package/dist/templates/contents/themes/default/tests/cypress/e2e/uat/entities/posts/list.cy.ts +177 -0
- package/dist/templates/contents/themes/default/tests/cypress/e2e/uat/entities/posts/public.bdd.md +614 -0
- package/dist/templates/contents/themes/default/tests/cypress/e2e/uat/entities/posts/public.cy.ts +249 -0
- package/dist/templates/contents/themes/default/tests/cypress/e2e/uat/entities/tasks/member.bdd.md +222 -0
- package/dist/templates/contents/themes/default/tests/cypress/e2e/uat/entities/tasks/member.cy.ts +165 -0
- package/dist/templates/contents/themes/default/tests/cypress/e2e/uat/entities/tasks/owner.bdd.md +419 -0
- package/dist/templates/contents/themes/default/tests/cypress/e2e/uat/entities/tasks/owner.cy.ts +191 -0
- package/dist/templates/contents/themes/default/tests/cypress/e2e/uat/roles/editor-role.bdd.md +552 -0
- package/dist/templates/contents/themes/default/tests/cypress/e2e/uat/roles/editor-role.cy.ts +210 -0
- package/dist/templates/contents/themes/default/tests/cypress/e2e/uat/roles/member-restrictions.bdd.md +450 -0
- package/dist/templates/contents/themes/default/tests/cypress/e2e/uat/roles/member-restrictions.cy.ts +189 -0
- package/dist/templates/contents/themes/default/tests/cypress/e2e/uat/roles/owner-full-crud.bdd.md +530 -0
- package/dist/templates/contents/themes/default/tests/cypress/e2e/uat/roles/owner-full-crud.cy.ts +247 -0
- package/dist/templates/contents/themes/default/tests/cypress/e2e/uat/scheduled-actions/devtools-ui.bdd.md +736 -0
- package/dist/templates/contents/themes/default/tests/cypress/e2e/uat/scheduled-actions/devtools-ui.cy.ts +740 -0
- package/dist/templates/contents/themes/default/tests/cypress/e2e/uat/teams/roles-matrix.bdd.md +553 -0
- package/dist/templates/contents/themes/default/tests/cypress/e2e/uat/teams/roles-matrix.cy.ts +185 -0
- package/dist/templates/contents/themes/default/tests/cypress/e2e/uat/teams/switcher.bdd.md +1151 -0
- package/dist/templates/contents/themes/default/tests/cypress/e2e/uat/teams/switcher.cy.ts +497 -0
- package/dist/templates/contents/themes/default/tests/cypress/e2e/uat/teams/team-switcher.md +198 -0
- package/dist/templates/contents/themes/default/tests/cypress/fixtures/blocks.json +218 -0
- package/dist/templates/contents/themes/default/tests/cypress/fixtures/entities.json +78 -0
- package/dist/templates/contents/themes/default/tests/cypress/fixtures/page-builder.json +21 -0
- package/dist/templates/contents/themes/default/tests/cypress/src/components/CategoriesPOM.ts +382 -0
- package/dist/templates/contents/themes/default/tests/cypress/src/components/CustomersPOM.ts +439 -0
- package/dist/templates/contents/themes/default/tests/cypress/src/components/DevKeyringPOM.ts +160 -0
- package/dist/templates/contents/themes/default/tests/cypress/src/components/EntityForm.ts +375 -0
- package/dist/templates/contents/themes/default/tests/cypress/src/components/EntityList.ts +389 -0
- package/dist/templates/contents/themes/default/tests/cypress/src/components/PageBuilderPOM.ts +710 -0
- package/dist/templates/contents/themes/default/tests/cypress/src/components/PostEditorPOM.ts +370 -0
- package/dist/templates/contents/themes/default/tests/cypress/src/components/PostsListPOM.ts +223 -0
- package/dist/templates/contents/themes/default/tests/cypress/src/components/PublicPagePOM.ts +447 -0
- package/dist/templates/contents/themes/default/tests/cypress/src/components/PublicPostPOM.ts +146 -0
- package/dist/templates/contents/themes/default/tests/cypress/src/components/TasksPOM.ts +272 -0
- package/dist/templates/contents/themes/default/tests/cypress/src/components/TeamSwitcherPOM.ts +450 -0
- package/dist/templates/contents/themes/default/tests/cypress/src/components/index.ts +21 -0
- package/dist/templates/contents/themes/default/tests/cypress/src/controllers/ApiKeysAPIController.js +178 -0
- package/dist/templates/contents/themes/default/tests/cypress/src/controllers/BaseAPIController.js +317 -0
- package/dist/templates/contents/themes/default/tests/cypress/src/controllers/CustomerAPIController.js +251 -0
- package/dist/templates/contents/themes/default/tests/cypress/src/controllers/PagesAPIController.js +226 -0
- package/dist/templates/contents/themes/default/tests/cypress/src/controllers/PostsAPIController.js +250 -0
- package/dist/templates/contents/themes/default/tests/cypress/src/controllers/TaskAPIController.js +240 -0
- package/dist/templates/contents/themes/default/tests/cypress/src/controllers/UsersAPIController.js +242 -0
- package/dist/templates/contents/themes/default/tests/cypress/src/controllers/index.js +25 -0
- package/dist/templates/contents/themes/default/tests/cypress/src/core/AuthPOM.ts +450 -0
- package/dist/templates/contents/themes/default/tests/cypress/src/core/BasePOM.ts +86 -0
- package/dist/templates/contents/themes/default/tests/cypress/src/core/BlockEditorBasePOM.ts +576 -0
- package/dist/templates/contents/themes/default/tests/cypress/src/core/DashboardEntityPOM.ts +692 -0
- package/dist/templates/contents/themes/default/tests/cypress/src/core/index.ts +14 -0
- package/dist/templates/contents/themes/default/tests/cypress/src/entities/CustomersPOM.ts +172 -0
- package/dist/templates/contents/themes/default/tests/cypress/src/entities/PagesPOM.ts +137 -0
- package/dist/templates/contents/themes/default/tests/cypress/src/entities/PostsPOM.ts +137 -0
- package/dist/templates/contents/themes/default/tests/cypress/src/entities/TasksPOM.ts +176 -0
- package/dist/templates/contents/themes/default/tests/cypress/src/entities/index.ts +14 -0
- package/dist/templates/contents/themes/default/tests/cypress/src/features/BillingPOM.ts +385 -0
- package/dist/templates/contents/themes/default/tests/cypress/src/features/DashboardPOM.ts +245 -0
- package/dist/templates/contents/themes/default/tests/cypress/src/features/DevtoolsPOM.ts +739 -0
- package/dist/templates/contents/themes/default/tests/cypress/src/features/PageBuilderPOM.ts +263 -0
- package/dist/templates/contents/themes/default/tests/cypress/src/features/PostEditorPOM.ts +313 -0
- package/dist/templates/contents/themes/default/tests/cypress/src/features/ScheduledActionsPOM.ts +463 -0
- package/dist/templates/contents/themes/default/tests/cypress/src/features/SettingsPOM.ts +362 -0
- package/dist/templates/contents/themes/default/tests/cypress/src/features/SuperadminPOM.ts +331 -0
- package/dist/templates/contents/themes/default/tests/cypress/src/features/SuperadminTeamRolesPOM.ts +285 -0
- package/dist/templates/contents/themes/default/tests/cypress/src/features/index.ts +28 -0
- package/dist/templates/contents/themes/default/tests/cypress/src/helpers/ApiInterceptor.ts +177 -0
- package/dist/templates/contents/themes/default/tests/cypress/src/index.ts +101 -0
- package/dist/templates/contents/themes/default/tests/cypress/src/pages/dashboard/Dashboard.js +677 -0
- package/dist/templates/contents/themes/default/tests/cypress/src/pages/dashboard/DashboardPage.js +43 -0
- package/dist/templates/contents/themes/default/tests/cypress/src/pages/dashboard/DashboardStats.js +546 -0
- package/dist/templates/contents/themes/default/tests/cypress/src/pages/dashboard/index.js +6 -0
- package/dist/templates/contents/themes/default/tests/cypress/src/pages/index.js +5 -0
- package/dist/templates/contents/themes/default/tests/cypress/src/pages/public/FeaturesPage.js +28 -0
- package/dist/templates/contents/themes/default/tests/cypress/src/pages/public/LandingPage.js +69 -0
- package/dist/templates/contents/themes/default/tests/cypress/src/pages/public/PricingPage.js +33 -0
- package/dist/templates/contents/themes/default/tests/cypress/src/pages/public/index.js +6 -0
- package/dist/templates/contents/themes/default/tests/cypress/src/selectors.ts +46 -0
- package/dist/templates/contents/themes/default/tests/cypress/src/session-helpers.ts +500 -0
- package/dist/templates/contents/themes/default/tests/cypress/support/commands.ts +9 -0
- package/dist/templates/contents/themes/default/tests/cypress/support/doc-commands.ts +260 -0
- package/dist/templates/contents/themes/default/tests/cypress/support/e2e.ts +18 -0
- package/dist/templates/contents/themes/default/tests/cypress.config.ts +137 -0
- package/dist/templates/contents/themes/default/tests/jest/example.test.ts +24 -0
- package/dist/templates/contents/themes/default/tests/jest/jest.config.ts +71 -0
- package/dist/templates/contents/themes/default/tests/jest/setup.ts +58 -0
- package/dist/templates/contents/themes/default/tests/jest/tsconfig.jest.json +8 -0
- package/dist/templates/contents/themes/default/tests/jest/validation/categories.test.ts +429 -0
- package/dist/templates/contents/themes/default/tests/jest/validation/posts.test.ts +546 -0
- package/dist/templates/contents/themes/default/tests/tsconfig.json +14 -0
- package/dist/templates/cypress.d.ts +19 -0
- package/dist/templates/i18n.ts +4 -0
- package/dist/templates/next.config.mjs +113 -0
- package/dist/templates/npmrc +3 -0
- package/dist/templates/postcss.config.mjs +5 -0
- package/dist/templates/public/sw.js +10 -0
- package/dist/templates/public/theme/blocks/cta-section/thumbnail.png +1 -0
- package/dist/templates/public/theme/blocks/features-grid/thumbnail.png +1 -0
- package/dist/templates/public/theme/blocks/hero/thumbnail.png +1 -0
- package/dist/templates/public/theme/blocks/testimonials/thumbnail.png +1 -0
- package/dist/templates/public/theme/blocks/text-content/thumbnail.png +1 -0
- package/dist/templates/public/theme/docs/desktop-layout-example.png +0 -0
- package/dist/templates/public/theme/fonts/InterVariable.woff2 +0 -0
- package/dist/templates/public/theme/fonts/JetBrainsMono-Regular.woff2 +0 -0
- package/dist/templates/public/uploads/.gitignore +6 -0
- package/dist/templates/public/uploads/README.md +97 -0
- package/dist/templates/public/uploads/temp/.gitkeep +1 -0
- package/dist/templates/tsconfig.cypress.json +28 -0
- package/dist/templates/tsconfig.json +73 -0
- package/dist/testing/factories.d.ts +15 -0
- package/dist/testing/factories.d.ts.map +1 -0
- package/dist/testing/factories.js +33 -0
- package/dist/testing/index.d.ts +4 -0
- package/dist/testing/index.d.ts.map +1 -0
- package/dist/testing/index.js +14 -0
- package/dist/testing/mocks.d.ts +32 -0
- package/dist/testing/mocks.d.ts.map +1 -0
- package/dist/testing/mocks.js +49 -0
- package/dist/testing/render-helpers.js +24 -0
- package/dist/types/auth.d.js +0 -0
- package/dist/types/auth.d.ts +20 -0
- package/dist/types/auth.d.ts.map +1 -0
- package/dist/types/auth.js +0 -0
- package/dist/types/blocks.d.js +0 -0
- package/dist/types/blocks.d.ts +390 -0
- package/dist/types/blocks.d.ts.map +1 -0
- package/dist/types/blocks.js +203 -0
- package/dist/types/docs.d.ts +28 -0
- package/dist/types/docs.d.ts.map +1 -0
- package/dist/types/docs.js +0 -0
- package/dist/types/index.d.ts +15 -0
- package/dist/types/index.d.ts.map +1 -0
- package/dist/types/index.js +23 -0
- package/dist/types/meta.types.d.js +0 -0
- package/dist/types/meta.types.d.ts +52 -0
- package/dist/types/meta.types.d.ts.map +1 -0
- package/dist/types/meta.types.js +58 -0
- package/dist/types/plugin.d.js +0 -0
- package/dist/types/plugin.d.ts +58 -0
- package/dist/types/plugin.d.ts.map +1 -0
- package/dist/types/plugin.js +0 -0
- package/dist/types/task.types.d.ts +61 -0
- package/dist/types/task.types.d.ts.map +1 -0
- package/dist/types/task.types.js +26 -0
- package/dist/types/testing.types.d.js +0 -0
- package/dist/types/testing.types.d.ts +91 -0
- package/dist/types/testing.types.d.ts.map +1 -0
- package/dist/types/testing.types.js +0 -0
- package/dist/types/theme.d.js +0 -0
- package/dist/types/theme.d.ts +75 -0
- package/dist/types/theme.d.ts.map +1 -0
- package/dist/types/theme.js +0 -0
- package/dist/types/user.types.d.js +0 -0
- package/dist/types/user.types.d.ts +112 -0
- package/dist/types/user.types.d.ts.map +1 -0
- package/dist/types/user.types.js +71 -0
- package/dist/utils/dev/TranslationDebugger.d.ts +8 -0
- package/dist/utils/dev/TranslationDebugger.d.ts.map +1 -0
- package/dist/utils/dev/TranslationDebugger.js +138 -0
- package/globals.css +305 -0
- package/migrations/001_better_auth_and_functions.sql +69 -0
- package/migrations/002_auth_tables.sql +158 -0
- package/migrations/003_user_metas.sql +70 -0
- package/migrations/004_api_key.sql +80 -0
- package/migrations/005_api_audit_log.sql +62 -0
- package/migrations/006_taxonomies_table.sql +106 -0
- package/migrations/007_teams_table.sql +68 -0
- package/migrations/008_team_members_table.sql +102 -0
- package/migrations/009_team_invitations_table.sql +132 -0
- package/migrations/010_teams_functions_triggers.sql +178 -0
- package/migrations/011_invoices_table.sql +95 -0
- package/migrations/012_billing_plans.sql +108 -0
- package/migrations/013_billing_subscriptions.sql +148 -0
- package/migrations/014_billing_usage.sql +99 -0
- package/migrations/015_billing_usage_events.sql +98 -0
- package/migrations/016_billing_events.sql +87 -0
- package/migrations/017_scheduled_actions_table.sql +106 -0
- package/migrations/090_sample_data.sql +242 -0
- package/migrations/README.md +101 -0
- package/package.json +283 -0
- package/scripts/build/build-ui-css.mjs +351 -0
- package/scripts/build/config-loader.mjs +77 -0
- package/scripts/build/docs-registry.mjs +373 -0
- package/scripts/build/docs.mjs +392 -0
- package/scripts/build/registry/config.mjs +177 -0
- package/scripts/build/registry/discovery/auth.mjs +50 -0
- package/scripts/build/registry/discovery/blocks.mjs +129 -0
- package/scripts/build/registry/discovery/core-routes.mjs +159 -0
- package/scripts/build/registry/discovery/entities.mjs +281 -0
- package/scripts/build/registry/discovery/index.mjs +19 -0
- package/scripts/build/registry/discovery/middlewares.mjs +93 -0
- package/scripts/build/registry/discovery/parent-child.mjs +185 -0
- package/scripts/build/registry/discovery/permissions.mjs +198 -0
- package/scripts/build/registry/discovery/plugins.mjs +217 -0
- package/scripts/build/registry/discovery/templates.mjs +174 -0
- package/scripts/build/registry/discovery/test-tags.mjs +243 -0
- package/scripts/build/registry/discovery/themes.mjs +417 -0
- package/scripts/build/registry/generators/auth-registry.mjs +85 -0
- package/scripts/build/registry/generators/billing-registry.mjs +219 -0
- package/scripts/build/registry/generators/block-registry.mjs +142 -0
- package/scripts/build/registry/generators/entity-registry.mjs +449 -0
- package/scripts/build/registry/generators/entity-types.mjs +86 -0
- package/scripts/build/registry/generators/feature-registry.mjs +408 -0
- package/scripts/build/registry/generators/index.mjs +25 -0
- package/scripts/build/registry/generators/middleware-registry.mjs +80 -0
- package/scripts/build/registry/generators/namespace-registry.mjs +109 -0
- package/scripts/build/registry/generators/permissions-registry.mjs +481 -0
- package/scripts/build/registry/generators/plugin-registry.mjs +224 -0
- package/scripts/build/registry/generators/plugin-registry.mjs.bak +219 -0
- package/scripts/build/registry/generators/route-handlers.mjs +257 -0
- package/scripts/build/registry/generators/scheduled-actions-registry.mjs +82 -0
- package/scripts/build/registry/generators/scope-registry.mjs +150 -0
- package/scripts/build/registry/generators/template-registry.mjs +316 -0
- package/scripts/build/registry/generators/theme-registry.mjs +186 -0
- package/scripts/build/registry/generators/translation-registry.mjs +100 -0
- package/scripts/build/registry/generators/unified-registry.mjs +85 -0
- package/scripts/build/registry/index.mjs +86 -0
- package/scripts/build/registry/post-build/index.mjs +17 -0
- package/scripts/build/registry/post-build/page-generator.mjs +412 -0
- package/scripts/build/registry/post-build/route-cleanup.mjs +188 -0
- package/scripts/build/registry/post-build/test-fixtures.mjs +234 -0
- package/scripts/build/registry/post-build/tree-display.mjs +226 -0
- package/scripts/build/registry/validation/entity-validator.mjs +95 -0
- package/scripts/build/registry/watch.mjs +130 -0
- package/scripts/build/registry.mjs +336 -0
- package/scripts/build/theme.mjs +364 -0
- package/scripts/build/update-tsconfig.mjs +218 -0
- package/scripts/convert-to-relative-imports.mjs +165 -0
- package/scripts/create-plugin.mjs +370 -0
- package/scripts/create-theme.mjs +306 -0
- package/scripts/db/run-migrations.mjs +750 -0
- package/scripts/db/verify-tables.mjs +142 -0
- package/scripts/db/verify-teams.mjs +92 -0
- package/scripts/deploy/deploy.sh +36 -0
- package/scripts/deploy/release-version.mjs +364 -0
- package/scripts/deploy/vercel-deploy.mjs +1787 -0
- package/scripts/dev/next-dev.mjs +31 -0
- package/scripts/dev/watch-plugins.mjs +136 -0
- package/scripts/generate-app.mjs +190 -0
- package/scripts/maintenance/update-core.mjs +847 -0
- package/scripts/registry-build.js +81 -0
- package/scripts/registry-watch.js +157 -0
- package/scripts/setup/npm-postinstall.mjs +193 -0
- package/scripts/setup/postinstall.mjs +157 -0
- package/scripts/setup/setup-ci.mjs +176 -0
- package/scripts/setup/setup-claude.mjs +294 -0
- package/scripts/test/build-entities.mjs +373 -0
- package/scripts/test/cy.mjs +75 -0
- package/scripts/test/jest.mjs +60 -0
- package/scripts/update-registry-imports.mjs +123 -0
- package/scripts/utils/file-utils.mjs +163 -0
- package/scripts/utils/index.mjs +26 -0
- package/scripts/utils/logging.mjs +55 -0
- package/scripts/validation/check-imports.sh +235 -0
- package/templates/app/(auth)/forgot-password/page.tsx +216 -0
- package/templates/app/(auth)/layout.tsx +51 -0
- package/templates/app/(auth)/login/page.tsx +21 -0
- package/templates/app/(auth)/reset-password/page.tsx +212 -0
- package/templates/app/(auth)/signup/page.tsx +21 -0
- package/templates/app/(auth)/verify-email/page.tsx +190 -0
- package/templates/app/(public)/[...slug]/page.tsx +271 -0
- package/templates/app/(public)/docs/[category]/[section]/[page]/page.tsx +134 -0
- package/templates/app/(public)/docs/[category]/page.tsx +139 -0
- package/templates/app/(public)/docs/layout.tsx +23 -0
- package/templates/app/(public)/docs/page.tsx +210 -0
- package/templates/app/(public)/docs/plugins/[plugin]/[section]/[page]/page.tsx +125 -0
- package/templates/app/(public)/docs/plugins/page.tsx +160 -0
- package/templates/app/(public)/layout.tsx +41 -0
- package/templates/app/(public)/page.tsx +19 -0
- package/templates/app/(templates)/(public)/blog/[slug]/page.d.ts +9 -0
- package/templates/app/(templates)/(public)/blog/[slug]/page.tsx +9 -0
- package/templates/app/(templates)/(public)/layout.d.ts +9 -0
- package/templates/app/(templates)/(public)/layout.tsx +9 -0
- package/templates/app/(templates)/(public)/page.d.ts +9 -0
- package/templates/app/(templates)/(public)/support/page.d.ts +9 -0
- package/templates/app/(templates)/(public)/support/page.tsx +9 -0
- package/templates/app/(templates)/dashboard/(main)/agent-multi/page.d.ts +9 -0
- package/templates/app/(templates)/dashboard/(main)/agent-multi/page.tsx +9 -0
- package/templates/app/(templates)/dashboard/(main)/agent-single/page.d.ts +9 -0
- package/templates/app/(templates)/dashboard/(main)/agent-single/page.tsx +9 -0
- package/templates/app/(templates)/dashboard/(main)/layout.tsx +33 -0
- package/templates/app/(templates)/dashboard/(main)/settings/ai-usage/page.d.ts +9 -0
- package/templates/app/(templates)/dashboard/(main)/settings/ai-usage/page.tsx +9 -0
- package/templates/app/(templates)/dashboard/layout.tsx +90 -0
- package/templates/app/(templates)/dashboard/settings/layout.tsx +127 -0
- package/templates/app/(templates)/superadmin/ai-observability/[traceId]/page.d.ts +9 -0
- package/templates/app/(templates)/superadmin/ai-observability/[traceId]/page.tsx +9 -0
- package/templates/app/(templates)/superadmin/ai-observability/page.d.ts +9 -0
- package/templates/app/(templates)/superadmin/ai-observability/page.tsx +9 -0
- package/templates/app/(templates)/superadmin/layout.tsx +67 -0
- package/templates/app/403/page.tsx +89 -0
- package/templates/app/README.md +39 -0
- package/templates/app/accept-invite/[token]/page.tsx +342 -0
- package/templates/app/api/auth/[...all]/route.ts +70 -0
- package/templates/app/api/cron/billing/lifecycle/route.ts +98 -0
- package/templates/app/api/devtools/config/entities/route.ts +109 -0
- package/templates/app/api/devtools/config/theme/route.ts +66 -0
- package/templates/app/api/devtools/tests/[...path]/route.ts +130 -0
- package/templates/app/api/devtools/tests/route.ts +134 -0
- package/templates/app/api/health/route.ts +29 -0
- package/templates/app/api/internal/user-metadata/route.ts +36 -0
- package/templates/app/api/superadmin/subscriptions/route.ts +310 -0
- package/templates/app/api/superadmin/teams/[teamId]/route.ts +286 -0
- package/templates/app/api/superadmin/teams/route.ts +188 -0
- package/templates/app/api/superadmin/users/[userId]/route.ts +540 -0
- package/templates/app/api/superadmin/users/route.ts +323 -0
- package/templates/app/api/user/delete-account/route.ts +55 -0
- package/templates/app/api/user/plan-flags/route.ts +283 -0
- package/templates/app/api/user/profile/route.ts +133 -0
- package/templates/app/api/v1/[entity]/[id]/child/[childType]/[childId]/route.ts +202 -0
- package/templates/app/api/v1/[entity]/[id]/child/[childType]/route.ts +323 -0
- package/templates/app/api/v1/[entity]/[id]/route.ts +26 -0
- package/templates/app/api/v1/[entity]/route.ts +22 -0
- package/templates/app/api/v1/api-keys/[id]/route.ts +303 -0
- package/templates/app/api/v1/api-keys/route.ts +250 -0
- package/templates/app/api/v1/auth/signup-with-invite/route.ts +227 -0
- package/templates/app/api/v1/billing/cancel/route.ts +206 -0
- package/templates/app/api/v1/billing/change-plan/route.ts +97 -0
- package/templates/app/api/v1/billing/check-action/route.ts +81 -0
- package/templates/app/api/v1/billing/checkout/route.ts +124 -0
- package/templates/app/api/v1/billing/plans/route.ts +85 -0
- package/templates/app/api/v1/billing/portal/route.ts +90 -0
- package/templates/app/api/v1/billing/webhooks/stripe/route.ts +428 -0
- package/templates/app/api/v1/blocks/[slug]/route.ts +29 -0
- package/templates/app/api/v1/blocks/route.ts +45 -0
- package/templates/app/api/v1/blocks/validate/route.ts +45 -0
- package/templates/app/api/v1/cron/process/route.ts +108 -0
- package/templates/app/api/v1/devtools/blocks/route.ts +82 -0
- package/templates/app/api/v1/devtools/features/route.ts +61 -0
- package/templates/app/api/v1/devtools/flows/route.ts +61 -0
- package/templates/app/api/v1/devtools/scheduled-actions/route.ts +120 -0
- package/templates/app/api/v1/devtools/testing/route.ts +82 -0
- package/templates/app/api/v1/media/upload/route.ts +150 -0
- package/templates/app/api/v1/plugin/[...path]/route.ts +373 -0
- package/templates/app/api/v1/plugin/route.ts +96 -0
- package/templates/app/api/v1/post-categories/[id]/route.ts +255 -0
- package/templates/app/api/v1/post-categories/route.ts +119 -0
- package/templates/app/api/v1/team-invitations/[token]/accept/route.ts +179 -0
- package/templates/app/api/v1/team-invitations/[token]/decline/route.ts +120 -0
- package/templates/app/api/v1/team-invitations/[token]/route.ts +89 -0
- package/templates/app/api/v1/team-invitations/route.ts +114 -0
- package/templates/app/api/v1/teams/[teamId]/invitations/route.ts +171 -0
- package/templates/app/api/v1/teams/[teamId]/invoices/[invoiceNumber]/route.ts +105 -0
- package/templates/app/api/v1/teams/[teamId]/invoices/route.ts +125 -0
- package/templates/app/api/v1/teams/[teamId]/members/[memberId]/route.ts +263 -0
- package/templates/app/api/v1/teams/[teamId]/members/route.ts +358 -0
- package/templates/app/api/v1/teams/[teamId]/route.ts +294 -0
- package/templates/app/api/v1/teams/[teamId]/subscription/route.ts +50 -0
- package/templates/app/api/v1/teams/[teamId]/usage/[limitSlug]/route.ts +91 -0
- package/templates/app/api/v1/teams/route.ts +293 -0
- package/templates/app/api/v1/teams/switch/route.ts +88 -0
- package/templates/app/api/v1/theme/[...path]/route.ts +361 -0
- package/templates/app/api/v1/theme/route.ts +96 -0
- package/templates/app/api/v1/users/[id]/meta/[key]/route.ts +363 -0
- package/templates/app/api/v1/users/[id]/route.ts +302 -0
- package/templates/app/api/v1/users/route.ts +197 -0
- package/templates/app/components/page-renderer.d.ts +13 -0
- package/templates/app/components/page-renderer.d.ts.map +1 -0
- package/templates/app/components/page-renderer.tsx +89 -0
- package/templates/app/dashboard/(main)/[entity]/[id]/edit/page.tsx +117 -0
- package/templates/app/dashboard/(main)/[entity]/[id]/page.tsx +98 -0
- package/templates/app/dashboard/(main)/[entity]/create/page.tsx +95 -0
- package/templates/app/dashboard/(main)/[entity]/error.tsx +51 -0
- package/templates/app/dashboard/(main)/[entity]/layout.tsx +113 -0
- package/templates/app/dashboard/(main)/[entity]/loading.tsx +61 -0
- package/templates/app/dashboard/(main)/[entity]/page.tsx +83 -0
- package/templates/app/dashboard/(main)/layout.tsx +39 -0
- package/templates/app/dashboard/(main)/page.tsx +203 -0
- package/templates/app/dashboard/features/analytics/page.tsx +35 -0
- package/templates/app/dashboard/features/automation/page.tsx +35 -0
- package/templates/app/dashboard/features/layout.tsx +13 -0
- package/templates/app/dashboard/features/webhooks/page.tsx +35 -0
- package/templates/app/dashboard/layout.tsx +86 -0
- package/templates/app/dashboard/permission-denied/page.tsx +29 -0
- package/templates/app/dashboard/settings/api-keys/page.tsx +513 -0
- package/templates/app/dashboard/settings/billing/page.tsx +295 -0
- package/templates/app/dashboard/settings/invoices/[invoiceNumber]/page.tsx +222 -0
- package/templates/app/dashboard/settings/invoices/page.tsx +82 -0
- package/templates/app/dashboard/settings/layout.tsx +161 -0
- package/templates/app/dashboard/settings/notifications/page.tsx +483 -0
- package/templates/app/dashboard/settings/page.tsx +96 -0
- package/templates/app/dashboard/settings/password/page.tsx +330 -0
- package/templates/app/dashboard/settings/plans/page.tsx +40 -0
- package/templates/app/dashboard/settings/profile/page.tsx +723 -0
- package/templates/app/dashboard/settings/security/page.tsx +541 -0
- package/templates/app/dashboard/settings/teams/page.tsx +273 -0
- package/templates/app/dashboard/settings/teams/permissions/page.tsx +92 -0
- package/templates/app/devtools/api/[...path]/page.tsx +36 -0
- package/templates/app/devtools/api/page.tsx +213 -0
- package/templates/app/devtools/blocks/[slug]/page.tsx +39 -0
- package/templates/app/devtools/blocks/page.tsx +31 -0
- package/templates/app/devtools/config/page.tsx +31 -0
- package/templates/app/devtools/features/page.tsx +31 -0
- package/templates/app/devtools/flows/page.tsx +31 -0
- package/templates/app/devtools/layout.tsx +58 -0
- package/templates/app/devtools/page.tsx +121 -0
- package/templates/app/devtools/scheduled-actions/page.tsx +157 -0
- package/templates/app/devtools/style/page.tsx +330 -0
- package/templates/app/devtools/tags/page.tsx +31 -0
- package/templates/app/devtools/tests/[[...path]]/page.tsx +47 -0
- package/templates/app/favicon.ico +0 -0
- package/templates/app/globals.css +317 -0
- package/templates/app/layout.tsx +90 -0
- package/templates/app/layout.tsx.ejs +90 -0
- package/templates/app/public/page.tsx +30 -0
- package/templates/app/superadmin/layout.tsx +67 -0
- package/templates/app/superadmin/page.tsx +149 -0
- package/templates/app/superadmin/subscriptions/page.tsx +654 -0
- package/templates/app/superadmin/team-roles/page.tsx +493 -0
- package/templates/app/superadmin/teams/[teamId]/page.tsx +687 -0
- package/templates/app/superadmin/teams/page.tsx +349 -0
- package/templates/app/superadmin/users/[userId]/page.tsx +548 -0
- package/templates/app/superadmin/users/page.tsx +526 -0
- package/templates/app/theme-styles.css +202 -0
- package/templates/contents/plugins/.gitkeep +0 -0
- package/templates/contents/plugins/README.md +42 -0
- package/templates/contents/plugins/langchain/.env.example +41 -0
- package/templates/contents/plugins/langchain/api/observability/metrics/route.ts +110 -0
- package/templates/contents/plugins/langchain/api/observability/traces/[traceId]/route.ts +398 -0
- package/templates/contents/plugins/langchain/api/observability/traces/route.ts +205 -0
- package/templates/contents/plugins/langchain/api/sessions/route.ts +332 -0
- package/templates/contents/plugins/langchain/components/observability/CollapsibleJson.tsx +71 -0
- package/templates/contents/plugins/langchain/components/observability/CompactTimeline.tsx +75 -0
- package/templates/contents/plugins/langchain/components/observability/ConversationFlow.tsx +271 -0
- package/templates/contents/plugins/langchain/components/observability/DisabledMessage.tsx +21 -0
- package/templates/contents/plugins/langchain/components/observability/FiltersPanel.tsx +82 -0
- package/templates/contents/plugins/langchain/components/observability/ObservabilityDashboard.tsx +230 -0
- package/templates/contents/plugins/langchain/components/observability/SpansList.tsx +210 -0
- package/templates/contents/plugins/langchain/components/observability/TraceDetail.tsx +335 -0
- package/templates/contents/plugins/langchain/components/observability/TraceStatusBadge.tsx +39 -0
- package/templates/contents/plugins/langchain/components/observability/TracesTable.tsx +97 -0
- package/templates/contents/plugins/langchain/components/observability/index.ts +7 -0
- package/templates/contents/plugins/langchain/docs/01-getting-started/01-overview.md +196 -0
- package/templates/contents/plugins/langchain/docs/01-getting-started/02-installation.md +368 -0
- package/templates/contents/plugins/langchain/docs/01-getting-started/03-configuration.md +794 -0
- package/templates/contents/plugins/langchain/docs/02-core-concepts/01-architecture.md +566 -0
- package/templates/contents/plugins/langchain/docs/02-core-concepts/02-agents.md +597 -0
- package/templates/contents/plugins/langchain/docs/02-core-concepts/03-tools.md +689 -0
- package/templates/contents/plugins/langchain/docs/03-orchestration/01-graph-orchestrator.md +809 -0
- package/templates/contents/plugins/langchain/docs/03-orchestration/02-legacy-react.md +650 -0
- package/templates/contents/plugins/langchain/docs/04-advanced/01-observability.md +645 -0
- package/templates/contents/plugins/langchain/docs/04-advanced/02-token-tracking.md +469 -0
- package/templates/contents/plugins/langchain/docs/04-advanced/03-streaming.md +476 -0
- package/templates/contents/plugins/langchain/docs/04-advanced/04-guardrails.md +597 -0
- package/templates/contents/plugins/langchain/docs/05-reference/01-api-reference.md +1403 -0
- package/templates/contents/plugins/langchain/docs/05-reference/02-customization.md +646 -0
- package/templates/contents/plugins/langchain/docs/05-reference/03-examples.md +881 -0
- package/templates/contents/plugins/langchain/docs/index.md +85 -0
- package/templates/contents/plugins/langchain/hooks/observability/useMetrics.ts +31 -0
- package/templates/contents/plugins/langchain/hooks/observability/useTraceDetail.ts +48 -0
- package/templates/contents/plugins/langchain/hooks/observability/useTraces.ts +59 -0
- package/templates/contents/plugins/langchain/lib/agent-factory.ts +354 -0
- package/templates/contents/plugins/langchain/lib/agent-helpers.ts +201 -0
- package/templates/contents/plugins/langchain/lib/db-memory-store.ts +417 -0
- package/templates/contents/plugins/langchain/lib/graph/index.ts +58 -0
- package/templates/contents/plugins/langchain/lib/graph/nodes/combiner.ts +399 -0
- package/templates/contents/plugins/langchain/lib/graph/nodes/router.ts +440 -0
- package/templates/contents/plugins/langchain/lib/graph/orchestrator-graph.ts +386 -0
- package/templates/contents/plugins/langchain/lib/graph/prompts/combiner.md +131 -0
- package/templates/contents/plugins/langchain/lib/graph/prompts/router.md +193 -0
- package/templates/contents/plugins/langchain/lib/graph/types.ts +365 -0
- package/templates/contents/plugins/langchain/lib/guardrails.ts +230 -0
- package/templates/contents/plugins/langchain/lib/index.ts +44 -0
- package/templates/contents/plugins/langchain/lib/logger.ts +70 -0
- package/templates/contents/plugins/langchain/lib/memory-store.ts +168 -0
- package/templates/contents/plugins/langchain/lib/message-serializer.ts +110 -0
- package/templates/contents/plugins/langchain/lib/prompt-renderer.ts +94 -0
- package/templates/contents/plugins/langchain/lib/providers.ts +226 -0
- package/templates/contents/plugins/langchain/lib/streaming.ts +232 -0
- package/templates/contents/plugins/langchain/lib/token-tracker.ts +298 -0
- package/templates/contents/plugins/langchain/lib/tools-builder.ts +192 -0
- package/templates/contents/plugins/langchain/lib/tracer-callbacks.ts +342 -0
- package/templates/contents/plugins/langchain/lib/tracer.ts +350 -0
- package/templates/contents/plugins/langchain/migrations/001_langchain_memory.sql +83 -0
- package/templates/contents/plugins/langchain/migrations/002_token_usage.sql +127 -0
- package/templates/contents/plugins/langchain/migrations/003_observability.sql +257 -0
- package/templates/contents/plugins/langchain/package.json +17 -0
- package/templates/contents/plugins/langchain/plugin.config.ts +170 -0
- package/templates/contents/plugins/langchain/presets/lib/langchain.config.ts.preset +142 -0
- package/templates/contents/plugins/langchain/presets/templates/sector7/ai-observability/[traceId]/page.tsx +91 -0
- package/templates/contents/plugins/langchain/presets/templates/sector7/ai-observability/page.tsx +54 -0
- package/templates/contents/plugins/langchain/types/langchain.types.ts +274 -0
- package/templates/contents/plugins/langchain/types/observability.types.ts +270 -0
- package/templates/contents/themes/.gitkeep +0 -0
- package/templates/contents/themes/default/about/business.md +49 -0
- package/templates/contents/themes/default/about/features.json +302 -0
- package/templates/contents/themes/default/about/team.md +79 -0
- package/templates/contents/themes/default/api/ai/chat/stream/route.ts +212 -0
- package/templates/contents/themes/default/api/ai/orchestrator/route.ts +226 -0
- package/templates/contents/themes/default/api/ai/single-agent/route.ts +291 -0
- package/templates/contents/themes/default/api/ai/usage/route.ts +122 -0
- package/templates/contents/themes/default/blocks/benefits/component.tsx +100 -0
- package/templates/contents/themes/default/blocks/benefits/config.ts +11 -0
- package/templates/contents/themes/default/blocks/benefits/examples.ts +85 -0
- package/templates/contents/themes/default/blocks/benefits/fields.ts +156 -0
- package/templates/contents/themes/default/blocks/benefits/schema.ts +33 -0
- package/templates/contents/themes/default/blocks/cta-section/component.tsx +100 -0
- package/templates/contents/themes/default/blocks/cta-section/config.ts +11 -0
- package/templates/contents/themes/default/blocks/cta-section/examples.ts +41 -0
- package/templates/contents/themes/default/blocks/cta-section/fields.ts +89 -0
- package/templates/contents/themes/default/blocks/cta-section/index.ts +6 -0
- package/templates/contents/themes/default/blocks/cta-section/schema.ts +32 -0
- package/templates/contents/themes/default/blocks/cta-section/thumbnail.png +1 -0
- package/templates/contents/themes/default/blocks/faq-accordion/component.tsx +156 -0
- package/templates/contents/themes/default/blocks/faq-accordion/config.ts +11 -0
- package/templates/contents/themes/default/blocks/faq-accordion/examples.ts +77 -0
- package/templates/contents/themes/default/blocks/faq-accordion/fields.ts +119 -0
- package/templates/contents/themes/default/blocks/faq-accordion/index.ts +6 -0
- package/templates/contents/themes/default/blocks/faq-accordion/schema.ts +45 -0
- package/templates/contents/themes/default/blocks/features-grid/component.tsx +112 -0
- package/templates/contents/themes/default/blocks/features-grid/config.ts +11 -0
- package/templates/contents/themes/default/blocks/features-grid/examples.ts +63 -0
- package/templates/contents/themes/default/blocks/features-grid/fields.ts +97 -0
- package/templates/contents/themes/default/blocks/features-grid/index.ts +6 -0
- package/templates/contents/themes/default/blocks/features-grid/schema.ts +40 -0
- package/templates/contents/themes/default/blocks/features-grid/thumbnail.png +1 -0
- package/templates/contents/themes/default/blocks/hero/component.tsx +100 -0
- package/templates/contents/themes/default/blocks/hero/config.ts +11 -0
- package/templates/contents/themes/default/blocks/hero/examples.ts +35 -0
- package/templates/contents/themes/default/blocks/hero/fields.ts +60 -0
- package/templates/contents/themes/default/blocks/hero/index.ts +6 -0
- package/templates/contents/themes/default/blocks/hero/schema.ts +32 -0
- package/templates/contents/themes/default/blocks/hero/thumbnail.png +1 -0
- package/templates/contents/themes/default/blocks/hero/thumbnail.png.txt +6 -0
- package/templates/contents/themes/default/blocks/hero-with-form/component.tsx +232 -0
- package/templates/contents/themes/default/blocks/hero-with-form/config.ts +11 -0
- package/templates/contents/themes/default/blocks/hero-with-form/examples.ts +16 -0
- package/templates/contents/themes/default/blocks/hero-with-form/fields.ts +207 -0
- package/templates/contents/themes/default/blocks/hero-with-form/index.ts +6 -0
- package/templates/contents/themes/default/blocks/hero-with-form/schema.ts +54 -0
- package/templates/contents/themes/default/blocks/jumbotron/component.tsx +136 -0
- package/templates/contents/themes/default/blocks/jumbotron/config.ts +11 -0
- package/templates/contents/themes/default/blocks/jumbotron/examples.ts +36 -0
- package/templates/contents/themes/default/blocks/jumbotron/fields.ts +202 -0
- package/templates/contents/themes/default/blocks/jumbotron/index.ts +6 -0
- package/templates/contents/themes/default/blocks/jumbotron/schema.ts +55 -0
- package/templates/contents/themes/default/blocks/logo-cloud/component.tsx +154 -0
- package/templates/contents/themes/default/blocks/logo-cloud/config.ts +11 -0
- package/templates/contents/themes/default/blocks/logo-cloud/examples.ts +34 -0
- package/templates/contents/themes/default/blocks/logo-cloud/fields.ts +133 -0
- package/templates/contents/themes/default/blocks/logo-cloud/index.ts +6 -0
- package/templates/contents/themes/default/blocks/logo-cloud/schema.ts +46 -0
- package/templates/contents/themes/default/blocks/post-content/component.tsx +197 -0
- package/templates/contents/themes/default/blocks/post-content/config.ts +11 -0
- package/templates/contents/themes/default/blocks/post-content/examples.ts +33 -0
- package/templates/contents/themes/default/blocks/post-content/fields.ts +165 -0
- package/templates/contents/themes/default/blocks/post-content/index.ts +4 -0
- package/templates/contents/themes/default/blocks/post-content/schema.ts +46 -0
- package/templates/contents/themes/default/blocks/pricing-table/component.tsx +154 -0
- package/templates/contents/themes/default/blocks/pricing-table/config.ts +11 -0
- package/templates/contents/themes/default/blocks/pricing-table/examples.ts +96 -0
- package/templates/contents/themes/default/blocks/pricing-table/fields.ts +161 -0
- package/templates/contents/themes/default/blocks/pricing-table/index.ts +4 -0
- package/templates/contents/themes/default/blocks/pricing-table/schema.ts +50 -0
- package/templates/contents/themes/default/blocks/split-content/component.tsx +135 -0
- package/templates/contents/themes/default/blocks/split-content/config.ts +11 -0
- package/templates/contents/themes/default/blocks/split-content/examples.ts +38 -0
- package/templates/contents/themes/default/blocks/split-content/fields.ts +198 -0
- package/templates/contents/themes/default/blocks/split-content/index.ts +6 -0
- package/templates/contents/themes/default/blocks/split-content/schema.ts +67 -0
- package/templates/contents/themes/default/blocks/stats-counter/component.tsx +124 -0
- package/templates/contents/themes/default/blocks/stats-counter/config.ts +11 -0
- package/templates/contents/themes/default/blocks/stats-counter/examples.ts +61 -0
- package/templates/contents/themes/default/blocks/stats-counter/fields.ts +134 -0
- package/templates/contents/themes/default/blocks/stats-counter/index.ts +6 -0
- package/templates/contents/themes/default/blocks/stats-counter/schema.ts +47 -0
- package/templates/contents/themes/default/blocks/testimonials/component.tsx +114 -0
- package/templates/contents/themes/default/blocks/testimonials/config.ts +11 -0
- package/templates/contents/themes/default/blocks/testimonials/examples.ts +65 -0
- package/templates/contents/themes/default/blocks/testimonials/fields.ts +105 -0
- package/templates/contents/themes/default/blocks/testimonials/index.ts +6 -0
- package/templates/contents/themes/default/blocks/testimonials/schema.ts +41 -0
- package/templates/contents/themes/default/blocks/testimonials/thumbnail.png +1 -0
- package/templates/contents/themes/default/blocks/text-content/component.tsx +97 -0
- package/templates/contents/themes/default/blocks/text-content/config.ts +11 -0
- package/templates/contents/themes/default/blocks/text-content/examples.ts +30 -0
- package/templates/contents/themes/default/blocks/text-content/fields.ts +88 -0
- package/templates/contents/themes/default/blocks/text-content/index.ts +6 -0
- package/templates/contents/themes/default/blocks/text-content/schema.ts +30 -0
- package/templates/contents/themes/default/blocks/text-content/thumbnail.png +1 -0
- package/templates/contents/themes/default/blocks/timeline/component.tsx +267 -0
- package/templates/contents/themes/default/blocks/timeline/config.ts +11 -0
- package/templates/contents/themes/default/blocks/timeline/examples.ts +68 -0
- package/templates/contents/themes/default/blocks/timeline/fields.ts +147 -0
- package/templates/contents/themes/default/blocks/timeline/index.ts +6 -0
- package/templates/contents/themes/default/blocks/timeline/schema.ts +49 -0
- package/templates/contents/themes/default/blocks/video-hero/component.tsx +270 -0
- package/templates/contents/themes/default/blocks/video-hero/config.ts +11 -0
- package/templates/contents/themes/default/blocks/video-hero/examples.ts +24 -0
- package/templates/contents/themes/default/blocks/video-hero/fields.ts +98 -0
- package/templates/contents/themes/default/blocks/video-hero/index.ts +6 -0
- package/templates/contents/themes/default/blocks/video-hero/schema.ts +39 -0
- package/templates/contents/themes/default/components/ai-chat/ChatPanel.tsx +575 -0
- package/templates/contents/themes/default/components/ai-chat/ConversationItem.tsx +266 -0
- package/templates/contents/themes/default/components/ai-chat/ConversationSidebar.tsx +99 -0
- package/templates/contents/themes/default/components/ai-chat/MarkdownRenderer.tsx +15 -0
- package/templates/contents/themes/default/components/ai-chat/Message.tsx +42 -0
- package/templates/contents/themes/default/components/ai-chat/MessageInput.tsx +49 -0
- package/templates/contents/themes/default/components/ai-chat/MessageList.tsx +46 -0
- package/templates/contents/themes/default/components/ai-chat/TypingIndicator.tsx +11 -0
- package/templates/contents/themes/default/config/app.config.ts +367 -0
- package/templates/contents/themes/default/config/billing.config.ts +349 -0
- package/templates/contents/themes/default/config/dashboard.config.ts +506 -0
- package/templates/contents/themes/default/config/dev.config.ts +104 -0
- package/templates/contents/themes/default/config/features.config.ts +203 -0
- package/templates/contents/themes/default/config/flows.config.ts +129 -0
- package/templates/contents/themes/default/config/permissions.config.ts +245 -0
- package/templates/contents/themes/default/config/theme.config.ts +74 -0
- package/templates/contents/themes/default/docs/01-overview/01-introduction.md +335 -0
- package/templates/contents/themes/default/docs/01-overview/02-customization.md +671 -0
- package/templates/contents/themes/default/docs/02-features/01-components.md +155 -0
- package/templates/contents/themes/default/docs/02-features/02-styling.md +139 -0
- package/templates/contents/themes/default/docs/02-features/03-tasks-entity.md +407 -0
- package/templates/contents/themes/default/docs/03-ai/01-overview.md +211 -0
- package/templates/contents/themes/default/docs/03-ai/02-customization.md +436 -0
- package/templates/contents/themes/default/entities/customers/customers.config.ts +86 -0
- package/templates/contents/themes/default/entities/customers/customers.fields.ts +165 -0
- package/templates/contents/themes/default/entities/customers/customers.service.ts +516 -0
- package/templates/contents/themes/default/entities/customers/customers.types.ts +83 -0
- package/templates/contents/themes/default/entities/customers/messages/en.json +66 -0
- package/templates/contents/themes/default/entities/customers/messages/es.json +66 -0
- package/templates/contents/themes/default/entities/customers/migrations/001_customers_table.sql +102 -0
- package/templates/contents/themes/default/entities/customers/migrations/002_customers_metas.sql +92 -0
- package/templates/contents/themes/default/entities/pages/messages/en.json +41 -0
- package/templates/contents/themes/default/entities/pages/messages/es.json +41 -0
- package/templates/contents/themes/default/entities/pages/migrations/001_pages_table.sql +112 -0
- package/templates/contents/themes/default/entities/pages/migrations/002_pages_metas.sql +56 -0
- package/templates/contents/themes/default/entities/pages/migrations/003_add_status.sql +50 -0
- package/templates/contents/themes/default/entities/pages/pages-management.service.ts +610 -0
- package/templates/contents/themes/default/entities/pages/pages.config.ts +105 -0
- package/templates/contents/themes/default/entities/pages/pages.fields.ts +101 -0
- package/templates/contents/themes/default/entities/pages/pages.service.ts +290 -0
- package/templates/contents/themes/default/entities/pages/pages.types.ts +124 -0
- package/templates/contents/themes/default/entities/posts/components/post-header.tsx +97 -0
- package/templates/contents/themes/default/entities/posts/messages/en.json +55 -0
- package/templates/contents/themes/default/entities/posts/messages/es.json +55 -0
- package/templates/contents/themes/default/entities/posts/migrations/001_posts_table.sql +115 -0
- package/templates/contents/themes/default/entities/posts/migrations/003_add_status.sql +44 -0
- package/templates/contents/themes/default/entities/posts/migrations/004_entity_taxonomy_relations.sql +129 -0
- package/templates/contents/themes/default/entities/posts/migrations/006_posts_metas.sql +56 -0
- package/templates/contents/themes/default/entities/posts/posts.config.ts +112 -0
- package/templates/contents/themes/default/entities/posts/posts.fields.ts +116 -0
- package/templates/contents/themes/default/entities/posts/posts.service.ts +376 -0
- package/templates/contents/themes/default/entities/posts/posts.types.ts +74 -0
- package/templates/contents/themes/default/entities/tasks/messages/en.json +204 -0
- package/templates/contents/themes/default/entities/tasks/messages/es.json +204 -0
- package/templates/contents/themes/default/entities/tasks/migrations/001_tasks_table.sql +105 -0
- package/templates/contents/themes/default/entities/tasks/migrations/002_task_metas.sql +85 -0
- package/templates/contents/themes/default/entities/tasks/migrations/sample_data.json +77 -0
- package/templates/contents/themes/default/entities/tasks/tasks.config.ts +90 -0
- package/templates/contents/themes/default/entities/tasks/tasks.fields.ts +196 -0
- package/templates/contents/themes/default/entities/tasks/tasks.service.ts +541 -0
- package/templates/contents/themes/default/entities/tasks/tasks.types.ts +56 -0
- package/templates/contents/themes/default/lib/hooks/useAiChat.ts +114 -0
- package/templates/contents/themes/default/lib/hooks/useConversations.ts +376 -0
- package/templates/contents/themes/default/lib/hooks/useOrchestratorChat.ts +122 -0
- package/templates/contents/themes/default/lib/hooks/usePersistentChat.ts +315 -0
- package/templates/contents/themes/default/lib/hooks/useStreamingChat.ts +127 -0
- package/templates/contents/themes/default/lib/hooks/useTokenUsage.ts +63 -0
- package/templates/contents/themes/default/lib/langchain/agents/customer-assistant.md +69 -0
- package/templates/contents/themes/default/lib/langchain/agents/index.ts +61 -0
- package/templates/contents/themes/default/lib/langchain/agents/orchestrator.md +59 -0
- package/templates/contents/themes/default/lib/langchain/agents/page-assistant.md +85 -0
- package/templates/contents/themes/default/lib/langchain/agents/single-agent.md +46 -0
- package/templates/contents/themes/default/lib/langchain/agents/task-assistant.md +55 -0
- package/templates/contents/themes/default/lib/langchain/config.ts +45 -0
- package/templates/contents/themes/default/lib/langchain/handlers/customer-handler.ts +338 -0
- package/templates/contents/themes/default/lib/langchain/handlers/page-handler.ts +232 -0
- package/templates/contents/themes/default/lib/langchain/handlers/task-handler.ts +323 -0
- package/templates/contents/themes/default/lib/langchain/langchain.config.ts +223 -0
- package/templates/contents/themes/default/lib/langchain/observability.config.ts +30 -0
- package/templates/contents/themes/default/lib/langchain/orchestrator.ts +562 -0
- package/templates/contents/themes/default/lib/langchain/tools/customers.ts +176 -0
- package/templates/contents/themes/default/lib/langchain/tools/index.ts +10 -0
- package/templates/contents/themes/default/lib/langchain/tools/orchestrator.ts +92 -0
- package/templates/contents/themes/default/lib/langchain/tools/pages.ts +289 -0
- package/templates/contents/themes/default/lib/langchain/tools/tasks.ts +167 -0
- package/templates/contents/themes/default/lib/scheduled-actions/billing.ts +149 -0
- package/templates/contents/themes/default/lib/scheduled-actions/index.ts +170 -0
- package/templates/contents/themes/default/lib/scheduled-actions/webhook.ts +231 -0
- package/templates/contents/themes/default/lib/selectors.ts +196 -0
- package/templates/contents/themes/default/messages/en/admin.json +219 -0
- package/templates/contents/themes/default/messages/en/aiUsage.json +36 -0
- package/templates/contents/themes/default/messages/en/buttons.json +19 -0
- package/templates/contents/themes/default/messages/en/categories.json +35 -0
- package/templates/contents/themes/default/messages/en/common.json +16 -0
- package/templates/contents/themes/default/messages/en/dev.json +106 -0
- package/templates/contents/themes/default/messages/en/docs.json +27 -0
- package/templates/contents/themes/default/messages/en/entities.json +7 -0
- package/templates/contents/themes/default/messages/en/features.json +119 -0
- package/templates/contents/themes/default/messages/en/footer.json +22 -0
- package/templates/contents/themes/default/messages/en/home.json +57 -0
- package/templates/contents/themes/default/messages/en/index.ts +39 -0
- package/templates/contents/themes/default/messages/en/mobileNav.json +13 -0
- package/templates/contents/themes/default/messages/en/navigation.json +8 -0
- package/templates/contents/themes/default/messages/en/observability.json +74 -0
- package/templates/contents/themes/default/messages/en/posts.json +54 -0
- package/templates/contents/themes/default/messages/en/pricing.json +102 -0
- package/templates/contents/themes/default/messages/en/support.json +9 -0
- package/templates/contents/themes/default/messages/en/teams.json +8 -0
- package/templates/contents/themes/default/messages/en.json +934 -0
- package/templates/contents/themes/default/messages/en.json.backup +934 -0
- package/templates/contents/themes/default/messages/es.json +929 -0
- package/templates/contents/themes/default/migrations/089_add_editor_team_role.sql +39 -0
- package/templates/contents/themes/default/migrations/090_demo_users_teams.sql +540 -0
- package/templates/contents/themes/default/migrations/091_greek_teams_billing.sql +523 -0
- package/templates/contents/themes/default/migrations/092_billing_sample_data.sql +774 -0
- package/templates/contents/themes/default/migrations/093_pages_sample_data.sql +1158 -0
- package/templates/contents/themes/default/migrations/094_posts_sample_data.sql +278 -0
- package/templates/contents/themes/default/migrations/095_tasks_sample_data.sql +440 -0
- package/templates/contents/themes/default/migrations/096_customers_sample_data.sql +358 -0
- package/templates/contents/themes/default/migrations/097_scheduled_actions_sample_data.sql +111 -0
- package/templates/contents/themes/default/public/docs/desktop-layout-example.png +0 -0
- package/templates/contents/themes/default/styles/components.css +11 -0
- package/templates/contents/themes/default/styles/globals.css +179 -0
- package/templates/contents/themes/default/templates/(public)/blog/[slug]/page.tsx +65 -0
- package/templates/contents/themes/default/templates/(public)/layout.tsx +25 -0
- package/templates/contents/themes/default/templates/(public)/page.tsx +200 -0
- package/templates/contents/themes/default/templates/(public)/support/page.tsx +321 -0
- package/templates/contents/themes/default/templates/dashboard/(main)/agent-multi/page.tsx +63 -0
- package/templates/contents/themes/default/templates/dashboard/(main)/agent-single/page.tsx +142 -0
- package/templates/contents/themes/default/templates/dashboard/(main)/settings/ai-usage/page.tsx +157 -0
- package/templates/contents/themes/default/templates/superadmin/ai-observability/[traceId]/page.tsx +27 -0
- package/templates/contents/themes/default/templates/superadmin/ai-observability/page.tsx +17 -0
- package/templates/contents/themes/default/tests/cypress/e2e/_devtools/access.bdd.md +262 -0
- package/templates/contents/themes/default/tests/cypress/e2e/_devtools/access.cy.ts +171 -0
- package/templates/contents/themes/default/tests/cypress/e2e/_devtools/navigation.bdd.md +261 -0
- package/templates/contents/themes/default/tests/cypress/e2e/_devtools/navigation.cy.ts +157 -0
- package/templates/contents/themes/default/tests/cypress/e2e/_devtools/pages.bdd.md +303 -0
- package/templates/contents/themes/default/tests/cypress/e2e/_devtools/pages.cy.ts +184 -0
- package/templates/contents/themes/default/tests/cypress/e2e/_docs/README.md +215 -0
- package/templates/contents/themes/default/tests/cypress/e2e/_docs/tutorials/sector7-superadmin-teams.narration.json +155 -0
- package/templates/contents/themes/default/tests/cypress/e2e/_docs/tutorials/sector7-superadmin.cy.ts +390 -0
- package/templates/contents/themes/default/tests/cypress/e2e/_docs/tutorials/teams-system.doc.cy.ts +349 -0
- package/templates/contents/themes/default/tests/cypress/e2e/_docs/tutorials/teams-system.narration.json +165 -0
- package/templates/contents/themes/default/tests/cypress/e2e/_selectors/auth.cy.ts +306 -0
- package/templates/contents/themes/default/tests/cypress/e2e/_selectors/billing.cy.ts +89 -0
- package/templates/contents/themes/default/tests/cypress/e2e/_selectors/dashboard-mobile.cy.ts +113 -0
- package/templates/contents/themes/default/tests/cypress/e2e/_selectors/dashboard-navigation.cy.ts +89 -0
- package/templates/contents/themes/default/tests/cypress/e2e/_selectors/dashboard-sidebar.cy.ts +60 -0
- package/templates/contents/themes/default/tests/cypress/e2e/_selectors/dashboard-topnav.cy.ts +146 -0
- package/templates/contents/themes/default/tests/cypress/e2e/_selectors/devtools.cy.ts +210 -0
- package/templates/contents/themes/default/tests/cypress/e2e/_selectors/global-search.cy.ts +88 -0
- package/templates/contents/themes/default/tests/cypress/e2e/_selectors/pages-editor.cy.ts +179 -0
- package/templates/contents/themes/default/tests/cypress/e2e/_selectors/posts-editor.cy.ts +282 -0
- package/templates/contents/themes/default/tests/cypress/e2e/_selectors/public.cy.ts +112 -0
- package/templates/contents/themes/default/tests/cypress/e2e/_selectors/settings-api-keys.cy.ts +228 -0
- package/templates/contents/themes/default/tests/cypress/e2e/_selectors/settings-billing.cy.ts +105 -0
- package/templates/contents/themes/default/tests/cypress/e2e/_selectors/settings-layout.cy.ts +119 -0
- package/templates/contents/themes/default/tests/cypress/e2e/_selectors/settings-password.cy.ts +71 -0
- package/templates/contents/themes/default/tests/cypress/e2e/_selectors/settings-profile.cy.ts +82 -0
- package/templates/contents/themes/default/tests/cypress/e2e/_selectors/settings-teams.cy.ts +68 -0
- package/templates/contents/themes/default/tests/cypress/e2e/_selectors/superadmin.cy.ts +185 -0
- package/templates/contents/themes/default/tests/cypress/e2e/_selectors/tasks.cy.ts +242 -0
- package/templates/contents/themes/default/tests/cypress/e2e/_selectors/taxonomies.cy.ts +126 -0
- package/templates/contents/themes/default/tests/cypress/e2e/_selectors/teams.cy.ts +142 -0
- package/templates/contents/themes/default/tests/cypress/e2e/_superadmin/all-teams.bdd.md +261 -0
- package/templates/contents/themes/default/tests/cypress/e2e/_superadmin/all-teams.cy.ts +177 -0
- package/templates/contents/themes/default/tests/cypress/e2e/_superadmin/all-users.bdd.md +406 -0
- package/templates/contents/themes/default/tests/cypress/e2e/_superadmin/all-users.cy.ts +294 -0
- package/templates/contents/themes/default/tests/cypress/e2e/_superadmin/dashboard.bdd.md +235 -0
- package/templates/contents/themes/default/tests/cypress/e2e/_superadmin/dashboard.cy.ts +149 -0
- package/templates/contents/themes/default/tests/cypress/e2e/_superadmin/subscriptions-overview.bdd.md +290 -0
- package/templates/contents/themes/default/tests/cypress/e2e/_superadmin/subscriptions-overview.cy.ts +194 -0
- package/templates/contents/themes/default/tests/cypress/e2e/ai/ai-usage.cy.ts +209 -0
- package/templates/contents/themes/default/tests/cypress/e2e/ai/chat-api.cy.ts +107 -0
- package/templates/contents/themes/default/tests/cypress/e2e/ai/guardrails.cy.ts +332 -0
- package/templates/contents/themes/default/tests/cypress/e2e/api/billing/BillingAPIController.js +319 -0
- package/templates/contents/themes/default/tests/cypress/e2e/api/billing/check-action.cy.ts +326 -0
- package/templates/contents/themes/default/tests/cypress/e2e/api/billing/checkout.cy.ts +358 -0
- package/templates/contents/themes/default/tests/cypress/e2e/api/billing/lifecycle.cy.ts +423 -0
- package/templates/contents/themes/default/tests/cypress/e2e/api/billing/plans/README.md +345 -0
- package/templates/contents/themes/default/tests/cypress/e2e/api/billing/plans/business.cy.ts +412 -0
- package/templates/contents/themes/default/tests/cypress/e2e/api/billing/plans/downgrade.cy.ts +510 -0
- package/templates/contents/themes/default/tests/cypress/e2e/api/billing/plans/fixtures/billing-plans.json +163 -0
- package/templates/contents/themes/default/tests/cypress/e2e/api/billing/plans/free.cy.ts +500 -0
- package/templates/contents/themes/default/tests/cypress/e2e/api/billing/plans/pro.cy.ts +497 -0
- package/templates/contents/themes/default/tests/cypress/e2e/api/billing/plans/starter.cy.ts +342 -0
- package/templates/contents/themes/default/tests/cypress/e2e/api/billing/portal.cy.ts +313 -0
- package/templates/contents/themes/default/tests/cypress/e2e/api/devtools/registries.bdd.md +300 -0
- package/templates/contents/themes/default/tests/cypress/e2e/api/devtools/registries.cy.ts +368 -0
- package/templates/contents/themes/default/tests/cypress/e2e/api/entities/blocks-scope.cy.ts +396 -0
- package/templates/contents/themes/default/tests/cypress/e2e/api/entities/customers-crud.cy.ts +648 -0
- package/templates/contents/themes/default/tests/cypress/e2e/api/entities/customers-metas.cy.ts +839 -0
- package/templates/contents/themes/default/tests/cypress/e2e/api/entities/pages-crud.cy.ts +425 -0
- package/templates/contents/themes/default/tests/cypress/e2e/api/entities/pages-status.cy.ts +335 -0
- package/templates/contents/themes/default/tests/cypress/e2e/api/entities/post-categories-crud.cy.ts +610 -0
- package/templates/contents/themes/default/tests/cypress/e2e/api/entities/posts-crud.cy.ts +709 -0
- package/templates/contents/themes/default/tests/cypress/e2e/api/entities/posts-status.cy.ts +396 -0
- package/templates/contents/themes/default/tests/cypress/e2e/api/entities/tasks-crud.cy.ts +602 -0
- package/templates/contents/themes/default/tests/cypress/e2e/api/entities/tasks-metas.cy.ts +878 -0
- package/templates/contents/themes/default/tests/cypress/e2e/api/entities/users-crud.cy.ts +469 -0
- package/templates/contents/themes/default/tests/cypress/e2e/api/entities/users-metas.cy.ts +913 -0
- package/templates/contents/themes/default/tests/cypress/e2e/api/entities/users-security.cy.ts +375 -0
- package/templates/contents/themes/default/tests/cypress/e2e/api/scheduled-actions/cron-endpoint.bdd.md +375 -0
- package/templates/contents/themes/default/tests/cypress/e2e/api/scheduled-actions/cron-endpoint.cy.ts +346 -0
- package/templates/contents/themes/default/tests/cypress/e2e/api/scheduled-actions/devtools-endpoint.bdd.md +451 -0
- package/templates/contents/themes/default/tests/cypress/e2e/api/scheduled-actions/devtools-endpoint.cy.ts +447 -0
- package/templates/contents/themes/default/tests/cypress/e2e/api/scheduled-actions/scheduling.bdd.md +649 -0
- package/templates/contents/themes/default/tests/cypress/e2e/api/scheduled-actions/scheduling.cy.ts +333 -0
- package/templates/contents/themes/default/tests/cypress/e2e/api/settings/api-keys.crud.cy.ts +923 -0
- package/templates/contents/themes/default/tests/cypress/e2e/uat/auth/app-roles/developer-login.bdd.md +231 -0
- package/templates/contents/themes/default/tests/cypress/e2e/uat/auth/app-roles/developer-login.cy.ts +144 -0
- package/templates/contents/themes/default/tests/cypress/e2e/uat/auth/app-roles/superadmin-login.bdd.md +118 -0
- package/templates/contents/themes/default/tests/cypress/e2e/uat/auth/app-roles/superadmin-login.cy.ts +84 -0
- package/templates/contents/themes/default/tests/cypress/e2e/uat/auth/custom-roles/editor-login.bdd.md +288 -0
- package/templates/contents/themes/default/tests/cypress/e2e/uat/auth/custom-roles/editor-login.cy.ts +188 -0
- package/templates/contents/themes/default/tests/cypress/e2e/uat/auth/login-logout.bdd.md +160 -0
- package/templates/contents/themes/default/tests/cypress/e2e/uat/auth/login-logout.cy.ts +116 -0
- package/templates/contents/themes/default/tests/cypress/e2e/uat/auth/password-reset.bdd.md +289 -0
- package/templates/contents/themes/default/tests/cypress/e2e/uat/auth/password-reset.cy.ts +200 -0
- package/templates/contents/themes/default/tests/cypress/e2e/uat/auth/team-roles/admin-login.bdd.md +225 -0
- package/templates/contents/themes/default/tests/cypress/e2e/uat/auth/team-roles/admin-login.cy.ts +148 -0
- package/templates/contents/themes/default/tests/cypress/e2e/uat/auth/team-roles/member-login.bdd.md +251 -0
- package/templates/contents/themes/default/tests/cypress/e2e/uat/auth/team-roles/member-login.cy.ts +163 -0
- package/templates/contents/themes/default/tests/cypress/e2e/uat/auth/team-roles/owner-login.bdd.md +231 -0
- package/templates/contents/themes/default/tests/cypress/e2e/uat/auth/team-roles/owner-login.cy.ts +141 -0
- package/templates/contents/themes/default/tests/cypress/e2e/uat/billing/extended.bdd.md +273 -0
- package/templates/contents/themes/default/tests/cypress/e2e/uat/billing/extended.cy.ts +209 -0
- package/templates/contents/themes/default/tests/cypress/e2e/uat/billing/feature-gates.bdd.md +407 -0
- package/templates/contents/themes/default/tests/cypress/e2e/uat/billing/feature-gates.cy.ts +307 -0
- package/templates/contents/themes/default/tests/cypress/e2e/uat/billing/page.bdd.md +329 -0
- package/templates/contents/themes/default/tests/cypress/e2e/uat/billing/page.cy.ts +250 -0
- package/templates/contents/themes/default/tests/cypress/e2e/uat/billing/status.bdd.md +190 -0
- package/templates/contents/themes/default/tests/cypress/e2e/uat/billing/status.cy.ts +145 -0
- package/templates/contents/themes/default/tests/cypress/e2e/uat/billing/team-switch.bdd.md +156 -0
- package/templates/contents/themes/default/tests/cypress/e2e/uat/billing/team-switch.cy.ts +122 -0
- package/templates/contents/themes/default/tests/cypress/e2e/uat/billing/usage.bdd.md +218 -0
- package/templates/contents/themes/default/tests/cypress/e2e/uat/billing/usage.cy.ts +176 -0
- package/templates/contents/themes/default/tests/cypress/e2e/uat/blocks/hero.bdd.md +124 -0
- package/templates/contents/themes/default/tests/cypress/e2e/uat/blocks/hero.cy.ts +56 -0
- package/templates/contents/themes/default/tests/cypress/e2e/uat/devtools/api-tester.cy.ts +390 -0
- package/templates/contents/themes/default/tests/cypress/e2e/uat/entities/customers/member.bdd.md +275 -0
- package/templates/contents/themes/default/tests/cypress/e2e/uat/entities/customers/member.cy.ts +122 -0
- package/templates/contents/themes/default/tests/cypress/e2e/uat/entities/customers/owner.bdd.md +243 -0
- package/templates/contents/themes/default/tests/cypress/e2e/uat/entities/customers/owner.cy.ts +165 -0
- package/templates/contents/themes/default/tests/cypress/e2e/uat/entities/pages/block-crud.bdd.md +476 -0
- package/templates/contents/themes/default/tests/cypress/e2e/uat/entities/pages/block-crud.cy.ts +486 -0
- package/templates/contents/themes/default/tests/cypress/e2e/uat/entities/pages/block-editor.bdd.md +460 -0
- package/templates/contents/themes/default/tests/cypress/e2e/uat/entities/pages/block-editor.cy.ts +301 -0
- package/templates/contents/themes/default/tests/cypress/e2e/uat/entities/pages/list.bdd.md +432 -0
- package/templates/contents/themes/default/tests/cypress/e2e/uat/entities/pages/list.cy.ts +273 -0
- package/templates/contents/themes/default/tests/cypress/e2e/uat/entities/pages/public-rendering.bdd.md +696 -0
- package/templates/contents/themes/default/tests/cypress/e2e/uat/entities/pages/public-rendering.cy.ts +340 -0
- package/templates/contents/themes/default/tests/cypress/e2e/uat/entities/posts/categories-api-aware.bdd.md +161 -0
- package/templates/contents/themes/default/tests/cypress/e2e/uat/entities/posts/categories-api-aware.cy.ts +104 -0
- package/templates/contents/themes/default/tests/cypress/e2e/uat/entities/posts/categories.bdd.md +375 -0
- package/templates/contents/themes/default/tests/cypress/e2e/uat/entities/posts/categories.cy.ts +241 -0
- package/templates/contents/themes/default/tests/cypress/e2e/uat/entities/posts/editor.bdd.md +429 -0
- package/templates/contents/themes/default/tests/cypress/e2e/uat/entities/posts/editor.cy.ts +257 -0
- package/templates/contents/themes/default/tests/cypress/e2e/uat/entities/posts/list.bdd.md +340 -0
- package/templates/contents/themes/default/tests/cypress/e2e/uat/entities/posts/list.cy.ts +177 -0
- package/templates/contents/themes/default/tests/cypress/e2e/uat/entities/posts/public.bdd.md +614 -0
- package/templates/contents/themes/default/tests/cypress/e2e/uat/entities/posts/public.cy.ts +249 -0
- package/templates/contents/themes/default/tests/cypress/e2e/uat/entities/tasks/member.bdd.md +222 -0
- package/templates/contents/themes/default/tests/cypress/e2e/uat/entities/tasks/member.cy.ts +165 -0
- package/templates/contents/themes/default/tests/cypress/e2e/uat/entities/tasks/owner.bdd.md +419 -0
- package/templates/contents/themes/default/tests/cypress/e2e/uat/entities/tasks/owner.cy.ts +191 -0
- package/templates/contents/themes/default/tests/cypress/e2e/uat/roles/editor-role.bdd.md +552 -0
- package/templates/contents/themes/default/tests/cypress/e2e/uat/roles/editor-role.cy.ts +210 -0
- package/templates/contents/themes/default/tests/cypress/e2e/uat/roles/member-restrictions.bdd.md +450 -0
- package/templates/contents/themes/default/tests/cypress/e2e/uat/roles/member-restrictions.cy.ts +189 -0
- package/templates/contents/themes/default/tests/cypress/e2e/uat/roles/owner-full-crud.bdd.md +530 -0
- package/templates/contents/themes/default/tests/cypress/e2e/uat/roles/owner-full-crud.cy.ts +247 -0
- package/templates/contents/themes/default/tests/cypress/e2e/uat/scheduled-actions/devtools-ui.bdd.md +736 -0
- package/templates/contents/themes/default/tests/cypress/e2e/uat/scheduled-actions/devtools-ui.cy.ts +740 -0
- package/templates/contents/themes/default/tests/cypress/e2e/uat/teams/roles-matrix.bdd.md +553 -0
- package/templates/contents/themes/default/tests/cypress/e2e/uat/teams/roles-matrix.cy.ts +185 -0
- package/templates/contents/themes/default/tests/cypress/e2e/uat/teams/switcher.bdd.md +1151 -0
- package/templates/contents/themes/default/tests/cypress/e2e/uat/teams/switcher.cy.ts +497 -0
- package/templates/contents/themes/default/tests/cypress/e2e/uat/teams/team-switcher.md +198 -0
- package/templates/contents/themes/default/tests/cypress/fixtures/blocks.json +218 -0
- package/templates/contents/themes/default/tests/cypress/fixtures/entities.json +78 -0
- package/templates/contents/themes/default/tests/cypress/fixtures/page-builder.json +21 -0
- package/templates/contents/themes/default/tests/cypress/src/components/CategoriesPOM.ts +382 -0
- package/templates/contents/themes/default/tests/cypress/src/components/CustomersPOM.ts +439 -0
- package/templates/contents/themes/default/tests/cypress/src/components/DevKeyringPOM.ts +160 -0
- package/templates/contents/themes/default/tests/cypress/src/components/EntityForm.ts +375 -0
- package/templates/contents/themes/default/tests/cypress/src/components/EntityList.ts +389 -0
- package/templates/contents/themes/default/tests/cypress/src/components/PageBuilderPOM.ts +710 -0
- package/templates/contents/themes/default/tests/cypress/src/components/PostEditorPOM.ts +370 -0
- package/templates/contents/themes/default/tests/cypress/src/components/PostsListPOM.ts +223 -0
- package/templates/contents/themes/default/tests/cypress/src/components/PublicPagePOM.ts +447 -0
- package/templates/contents/themes/default/tests/cypress/src/components/PublicPostPOM.ts +146 -0
- package/templates/contents/themes/default/tests/cypress/src/components/TasksPOM.ts +272 -0
- package/templates/contents/themes/default/tests/cypress/src/components/TeamSwitcherPOM.ts +450 -0
- package/templates/contents/themes/default/tests/cypress/src/components/index.ts +21 -0
- package/templates/contents/themes/default/tests/cypress/src/controllers/ApiKeysAPIController.js +178 -0
- package/templates/contents/themes/default/tests/cypress/src/controllers/BaseAPIController.js +317 -0
- package/templates/contents/themes/default/tests/cypress/src/controllers/CustomerAPIController.js +251 -0
- package/templates/contents/themes/default/tests/cypress/src/controllers/PagesAPIController.js +226 -0
- package/templates/contents/themes/default/tests/cypress/src/controllers/PostsAPIController.js +250 -0
- package/templates/contents/themes/default/tests/cypress/src/controllers/TaskAPIController.js +240 -0
- package/templates/contents/themes/default/tests/cypress/src/controllers/UsersAPIController.js +242 -0
- package/templates/contents/themes/default/tests/cypress/src/controllers/index.js +25 -0
- package/templates/contents/themes/default/tests/cypress/src/core/AuthPOM.ts +450 -0
- package/templates/contents/themes/default/tests/cypress/src/core/BasePOM.ts +86 -0
- package/templates/contents/themes/default/tests/cypress/src/core/BlockEditorBasePOM.ts +576 -0
- package/templates/contents/themes/default/tests/cypress/src/core/DashboardEntityPOM.ts +692 -0
- package/templates/contents/themes/default/tests/cypress/src/core/index.ts +14 -0
- package/templates/contents/themes/default/tests/cypress/src/entities/CustomersPOM.ts +172 -0
- package/templates/contents/themes/default/tests/cypress/src/entities/PagesPOM.ts +137 -0
- package/templates/contents/themes/default/tests/cypress/src/entities/PostsPOM.ts +137 -0
- package/templates/contents/themes/default/tests/cypress/src/entities/TasksPOM.ts +176 -0
- package/templates/contents/themes/default/tests/cypress/src/entities/index.ts +14 -0
- package/templates/contents/themes/default/tests/cypress/src/features/BillingPOM.ts +385 -0
- package/templates/contents/themes/default/tests/cypress/src/features/DashboardPOM.ts +245 -0
- package/templates/contents/themes/default/tests/cypress/src/features/DevtoolsPOM.ts +739 -0
- package/templates/contents/themes/default/tests/cypress/src/features/PageBuilderPOM.ts +263 -0
- package/templates/contents/themes/default/tests/cypress/src/features/PostEditorPOM.ts +313 -0
- package/templates/contents/themes/default/tests/cypress/src/features/ScheduledActionsPOM.ts +463 -0
- package/templates/contents/themes/default/tests/cypress/src/features/SettingsPOM.ts +362 -0
- package/templates/contents/themes/default/tests/cypress/src/features/SuperadminPOM.ts +331 -0
- package/templates/contents/themes/default/tests/cypress/src/features/SuperadminTeamRolesPOM.ts +285 -0
- package/templates/contents/themes/default/tests/cypress/src/features/index.ts +28 -0
- package/templates/contents/themes/default/tests/cypress/src/helpers/ApiInterceptor.ts +177 -0
- package/templates/contents/themes/default/tests/cypress/src/index.ts +101 -0
- package/templates/contents/themes/default/tests/cypress/src/pages/dashboard/Dashboard.js +677 -0
- package/templates/contents/themes/default/tests/cypress/src/pages/dashboard/DashboardPage.js +43 -0
- package/templates/contents/themes/default/tests/cypress/src/pages/dashboard/DashboardStats.js +546 -0
- package/templates/contents/themes/default/tests/cypress/src/pages/dashboard/index.js +6 -0
- package/templates/contents/themes/default/tests/cypress/src/pages/index.js +5 -0
- package/templates/contents/themes/default/tests/cypress/src/pages/public/FeaturesPage.js +28 -0
- package/templates/contents/themes/default/tests/cypress/src/pages/public/LandingPage.js +69 -0
- package/templates/contents/themes/default/tests/cypress/src/pages/public/PricingPage.js +33 -0
- package/templates/contents/themes/default/tests/cypress/src/pages/public/index.js +6 -0
- package/templates/contents/themes/default/tests/cypress/src/selectors.ts +46 -0
- package/templates/contents/themes/default/tests/cypress/src/session-helpers.ts +500 -0
- package/templates/contents/themes/default/tests/cypress/support/commands.ts +9 -0
- package/templates/contents/themes/default/tests/cypress/support/doc-commands.ts +260 -0
- package/templates/contents/themes/default/tests/cypress/support/e2e.ts +18 -0
- package/templates/contents/themes/default/tests/cypress.config.ts +137 -0
- package/templates/contents/themes/default/tests/jest/example.test.ts +24 -0
- package/templates/contents/themes/default/tests/jest/jest.config.ts +71 -0
- package/templates/contents/themes/default/tests/jest/setup.ts +58 -0
- package/templates/contents/themes/default/tests/jest/tsconfig.jest.json +8 -0
- package/templates/contents/themes/default/tests/jest/validation/categories.test.ts +429 -0
- package/templates/contents/themes/default/tests/jest/validation/posts.test.ts +546 -0
- package/templates/contents/themes/default/tests/tsconfig.json +14 -0
- package/templates/cypress.d.ts +19 -0
- package/templates/i18n.ts +4 -0
- package/templates/next.config.mjs +113 -0
- package/templates/npmrc +3 -0
- package/templates/postcss.config.mjs +5 -0
- package/templates/public/sw.js +10 -0
- package/templates/public/theme/blocks/cta-section/thumbnail.png +1 -0
- package/templates/public/theme/blocks/features-grid/thumbnail.png +1 -0
- package/templates/public/theme/blocks/hero/thumbnail.png +1 -0
- package/templates/public/theme/blocks/testimonials/thumbnail.png +1 -0
- package/templates/public/theme/blocks/text-content/thumbnail.png +1 -0
- package/templates/public/theme/docs/desktop-layout-example.png +0 -0
- package/templates/public/theme/fonts/InterVariable.woff2 +0 -0
- package/templates/public/theme/fonts/JetBrainsMono-Regular.woff2 +0 -0
- package/templates/public/uploads/.gitignore +6 -0
- package/templates/public/uploads/README.md +97 -0
- package/templates/public/uploads/temp/.gitkeep +1 -0
- package/templates/tsconfig.cypress.json +28 -0
- package/templates/tsconfig.json +73 -0
- package/tests/cypress/support/allure.ts +2 -0
- package/tests/cypress/support/commands/auth.ts +31 -0
- package/tests/cypress/support/commands/forms.ts +27 -0
- package/tests/cypress/support/commands/index.ts +7 -0
- package/tests/cypress/support/commands/navigation.ts +19 -0
- package/tests/cypress/support/commands.js +61 -0
- package/tests/cypress/support/commands.ts +71 -0
- package/tests/cypress/support/e2e.js +49 -0
- package/tests/cypress/support/e2e.ts +67 -0
- package/tests/cypress/support/index.ts +7 -0
- package/tests/cypress/support/pom/BasePage.ts +23 -0
- package/tests/cypress/support/pom/index.ts +1 -0
- package/tests/cypress/support/test-commands.ts +336 -0
- package/tests/jest/__mocks__/better-auth-next.js +13 -0
- package/tests/jest/__mocks__/better-auth.js +19 -0
- package/tests/jest/__mocks__/db-mocks.ts +96 -0
- package/tests/jest/__mocks__/jose.js +22 -0
- package/tests/jest/__mocks__/next-server.js +56 -0
- package/tests/jest/__mocks__/server-only.js +1 -0
- package/tests/jest/__mocks__/uncrypto.js +17 -0
- package/tests/jest/setup.ts +35 -0
- package/theme-styles.css +202 -0
|
@@ -0,0 +1,1787 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* Unified Vercel Deployment & Environment Management Script
|
|
5
|
+
*
|
|
6
|
+
* Features:
|
|
7
|
+
* - Merges local .env files (root + plugins + environment-specific)
|
|
8
|
+
* - Uploads environment variables to Vercel (with diff visualization)
|
|
9
|
+
* - Deploys to Vercel with automatic domain management
|
|
10
|
+
* - Vercel Custom Environments support for staging (NEW!)
|
|
11
|
+
* - Automatic staging environment creation and configuration
|
|
12
|
+
* - Domain assignment to custom environments
|
|
13
|
+
*
|
|
14
|
+
* Usage:
|
|
15
|
+
* pnpm vercel:deploy --prod # Deploy to production
|
|
16
|
+
* pnpm vercel:deploy --staging # Deploy to staging custom environment
|
|
17
|
+
* pnpm vercel:deploy --prod --skip-env # Skip env var update
|
|
18
|
+
*
|
|
19
|
+
* Staging Environment Setup (Using Custom Environments):
|
|
20
|
+
* 1. Create .env.staging file with your staging configuration
|
|
21
|
+
* 2. Set NEXT_PUBLIC_APP_URL=https://staging.yourdomain.com
|
|
22
|
+
* 3. Run: pnpm vercel:deploy --staging
|
|
23
|
+
* 4. Script will automatically:
|
|
24
|
+
* - Check if "staging" custom environment exists in Vercel
|
|
25
|
+
* - Create custom environment if missing (with branch matcher: "staging")
|
|
26
|
+
* - Check if domain exists and is configured
|
|
27
|
+
* - Add domain to project with custom environment assignment
|
|
28
|
+
* - Deploy to staging custom environment
|
|
29
|
+
* - Configure environment variables for preview scope
|
|
30
|
+
*
|
|
31
|
+
* Environment Variable Precedence (for staging):
|
|
32
|
+
* 1. Root .env (base configuration)
|
|
33
|
+
* 2. Plugin .env files (plugin-specific vars)
|
|
34
|
+
* 3. .env.staging (staging overrides)
|
|
35
|
+
* 4. Debug variables automatically set to false
|
|
36
|
+
*
|
|
37
|
+
* Environment Variable Scoping:
|
|
38
|
+
* - Production: Uses "production" environment in Vercel
|
|
39
|
+
* - Staging: Uses "preview" environment scope (custom environment inherits this)
|
|
40
|
+
* - Variables are scoped per Vercel's environment system
|
|
41
|
+
*
|
|
42
|
+
* Vercel Custom Environments Explained:
|
|
43
|
+
* Custom Environments are pre-production environments (staging, QA, etc.)
|
|
44
|
+
* designed for long-running use, unlike ephemeral preview deployments.
|
|
45
|
+
*
|
|
46
|
+
* Benefits:
|
|
47
|
+
* - Dedicated domains per environment
|
|
48
|
+
* - Branch-based automatic deployments (e.g., "staging" branch → staging env)
|
|
49
|
+
* - Environment-specific configuration
|
|
50
|
+
* - Up to 12 custom environments per project
|
|
51
|
+
*
|
|
52
|
+
* This script uses Vercel REST API to:
|
|
53
|
+
* - List custom environments: GET /v9/projects/{id}/custom-environments
|
|
54
|
+
* - Create custom environment: POST /v9/projects/{id}/custom-environments
|
|
55
|
+
* - Add domain to custom environment: POST /v9/projects/{id}/domains
|
|
56
|
+
*
|
|
57
|
+
* Git Branch Workflow (Recommended):
|
|
58
|
+
* 1. Create a "staging" branch: git checkout -b staging
|
|
59
|
+
* 2. Push to remote: git push origin staging
|
|
60
|
+
* 3. Run: pnpm vercel:deploy --staging
|
|
61
|
+
* 4. Future pushes to "staging" branch auto-deploy to staging environment
|
|
62
|
+
*
|
|
63
|
+
* Authentication:
|
|
64
|
+
* Script uses VERCEL_TOKEN environment variable or Vercel CLI authentication.
|
|
65
|
+
* Requires sufficient permissions to manage custom environments and domains.
|
|
66
|
+
*/
|
|
67
|
+
|
|
68
|
+
import { spawn } from 'child_process'
|
|
69
|
+
import { existsSync, readFileSync, writeFileSync, readdirSync, statSync } from 'fs'
|
|
70
|
+
import { join, dirname } from 'path'
|
|
71
|
+
import { fileURLToPath } from 'url'
|
|
72
|
+
import readline from 'readline'
|
|
73
|
+
|
|
74
|
+
const __filename = fileURLToPath(import.meta.url)
|
|
75
|
+
const __dirname = dirname(__filename)
|
|
76
|
+
// Path from packages/core/scripts/deploy/ to project root (4 levels up)
|
|
77
|
+
const projectRoot = join(__dirname, '../../../..')
|
|
78
|
+
|
|
79
|
+
// ============================================================================
|
|
80
|
+
// Load Environment Variables from .env
|
|
81
|
+
// ============================================================================
|
|
82
|
+
|
|
83
|
+
/**
|
|
84
|
+
* Load environment variables from .env file into process.env
|
|
85
|
+
* This ensures VERCEL_TOKEN and other vars are available
|
|
86
|
+
*/
|
|
87
|
+
function loadEnvironmentVariables() {
|
|
88
|
+
const envPath = join(projectRoot, '.env')
|
|
89
|
+
|
|
90
|
+
if (!existsSync(envPath)) {
|
|
91
|
+
return // .env not found, continue without it
|
|
92
|
+
}
|
|
93
|
+
|
|
94
|
+
try {
|
|
95
|
+
const envContent = readFileSync(envPath, 'utf-8')
|
|
96
|
+
const lines = envContent.split('\n')
|
|
97
|
+
|
|
98
|
+
for (const line of lines) {
|
|
99
|
+
const trimmed = line.trim()
|
|
100
|
+
if (!trimmed || trimmed.startsWith('#')) continue
|
|
101
|
+
|
|
102
|
+
const match = trimmed.match(/^([A-Z_][A-Z0-9_]*)\s*=\s*(.*)$/)
|
|
103
|
+
if (match) {
|
|
104
|
+
const [, key, rawValue] = match
|
|
105
|
+
// Remove surrounding quotes if present
|
|
106
|
+
let value = rawValue.trim()
|
|
107
|
+
if ((value.startsWith('"') && value.endsWith('"')) ||
|
|
108
|
+
(value.startsWith("'") && value.endsWith("'"))) {
|
|
109
|
+
value = value.slice(1, -1)
|
|
110
|
+
}
|
|
111
|
+
|
|
112
|
+
// Only set if not already defined in process.env
|
|
113
|
+
if (!process.env[key]) {
|
|
114
|
+
process.env[key] = value
|
|
115
|
+
}
|
|
116
|
+
}
|
|
117
|
+
}
|
|
118
|
+
} catch (error) {
|
|
119
|
+
console.warn(`⚠️ Warning: Could not load .env file: ${error.message}`)
|
|
120
|
+
}
|
|
121
|
+
}
|
|
122
|
+
|
|
123
|
+
// Load environment variables immediately
|
|
124
|
+
loadEnvironmentVariables()
|
|
125
|
+
|
|
126
|
+
// ============================================================================
|
|
127
|
+
// Configuration
|
|
128
|
+
// ============================================================================
|
|
129
|
+
|
|
130
|
+
/**
|
|
131
|
+
* Read deployment configuration from .env file
|
|
132
|
+
*/
|
|
133
|
+
function readDeploymentConfig() {
|
|
134
|
+
const envPath = join(projectRoot, '.env')
|
|
135
|
+
|
|
136
|
+
if (!existsSync(envPath)) {
|
|
137
|
+
console.error('❌ Error: .env file not found')
|
|
138
|
+
console.error(' Cannot determine deployment configuration')
|
|
139
|
+
process.exit(1)
|
|
140
|
+
}
|
|
141
|
+
|
|
142
|
+
const envContent = readFileSync(envPath, 'utf-8')
|
|
143
|
+
|
|
144
|
+
// Extract VERCEL_TEAM (required)
|
|
145
|
+
const teamMatch = envContent.match(/^VERCEL_TEAM\s*=\s*['"]?([^'"\n]+)['"]?/m)
|
|
146
|
+
if (!teamMatch) {
|
|
147
|
+
console.error('❌ Error: VERCEL_TEAM not found in .env')
|
|
148
|
+
console.error(' This variable is required to determine the Vercel team')
|
|
149
|
+
console.error(' Add to .env: VERCEL_TEAM=your-team-slug')
|
|
150
|
+
process.exit(1)
|
|
151
|
+
}
|
|
152
|
+
|
|
153
|
+
// Extract VERCEL_PROJECT (optional - falls back to theme name)
|
|
154
|
+
const projectMatch = envContent.match(/^VERCEL_PROJECT\s*=\s*['"]?([^'"\n]+)['"]?/m)
|
|
155
|
+
|
|
156
|
+
// Extract NEXT_PUBLIC_ACTIVE_THEME (fallback if VERCEL_PROJECT not set)
|
|
157
|
+
const themeMatch = envContent.match(/^NEXT_PUBLIC_ACTIVE_THEME\s*=\s*['"]?([^'"\n]+)['"]?/m)
|
|
158
|
+
|
|
159
|
+
// Use VERCEL_PROJECT if available, otherwise fallback to theme
|
|
160
|
+
const project = projectMatch ? projectMatch[1].trim() : (themeMatch ? themeMatch[1].trim() : null)
|
|
161
|
+
|
|
162
|
+
if (!project) {
|
|
163
|
+
console.error('❌ Error: Neither VERCEL_PROJECT nor NEXT_PUBLIC_ACTIVE_THEME found in .env')
|
|
164
|
+
console.error(' At least one is required to determine the Vercel project name')
|
|
165
|
+
console.error(' Add to .env: VERCEL_PROJECT=your-project-name')
|
|
166
|
+
process.exit(1)
|
|
167
|
+
}
|
|
168
|
+
|
|
169
|
+
return {
|
|
170
|
+
project: project,
|
|
171
|
+
team: teamMatch[1].trim()
|
|
172
|
+
}
|
|
173
|
+
}
|
|
174
|
+
|
|
175
|
+
/**
|
|
176
|
+
* Build project config dynamically based on .env configuration
|
|
177
|
+
*/
|
|
178
|
+
function getProjectConfig(target) {
|
|
179
|
+
const { project, team } = readDeploymentConfig()
|
|
180
|
+
|
|
181
|
+
// Determine project name:
|
|
182
|
+
// - If VERCEL_PROJECT exists: use it as-is (same project, different envs)
|
|
183
|
+
// - If using theme name: append '-staging' for staging target
|
|
184
|
+
const envContent = readFileSync(join(projectRoot, '.env'), 'utf-8')
|
|
185
|
+
const hasExplicitProject = /^VERCEL_PROJECT\s*=/m.test(envContent)
|
|
186
|
+
|
|
187
|
+
const projectName = hasExplicitProject
|
|
188
|
+
? project // Use VERCEL_PROJECT as-is (same project for both)
|
|
189
|
+
: (target === 'production' ? project : `${project}-staging`) // Theme-based: append -staging
|
|
190
|
+
|
|
191
|
+
// Read staging domain from .env.staging if available
|
|
192
|
+
let stagingDomain = null
|
|
193
|
+
if (target === 'staging') {
|
|
194
|
+
const stagingEnvPath = join(projectRoot, '.env.staging')
|
|
195
|
+
if (existsSync(stagingEnvPath)) {
|
|
196
|
+
const stagingEnvContent = readFileSync(stagingEnvPath, 'utf-8')
|
|
197
|
+
const urlMatch = stagingEnvContent.match(/^NEXT_PUBLIC_APP_URL\s*=\s*['"]?https?:\/\/([^'"\n]+)['"]?/m)
|
|
198
|
+
if (urlMatch) {
|
|
199
|
+
stagingDomain = urlMatch[1].trim()
|
|
200
|
+
}
|
|
201
|
+
}
|
|
202
|
+
}
|
|
203
|
+
|
|
204
|
+
return {
|
|
205
|
+
name: projectName,
|
|
206
|
+
team: team,
|
|
207
|
+
url: `https://vercel.com/${team}/${projectName}`,
|
|
208
|
+
// Environment configuration:
|
|
209
|
+
// With VERCEL_PROJECT: same project, different environments (production vs preview)
|
|
210
|
+
// With theme fallback: different projects, both use production environment
|
|
211
|
+
env: target === 'production' ? 'production' : 'preview',
|
|
212
|
+
stagingDomain: stagingDomain
|
|
213
|
+
}
|
|
214
|
+
}
|
|
215
|
+
|
|
216
|
+
const SENSITIVE_PATTERNS = [
|
|
217
|
+
/SECRET/i, /KEY$/i, /TOKEN/i, /PASSWORD/i, /API_KEY/i, /PRIVATE/i,
|
|
218
|
+
/DATABASE_URL/i, /WEBHOOK_SECRET/i, /_KEY$/i, /_SECRET$/i,
|
|
219
|
+
/ANTHROPIC/i, /OPENAI/i, /STRIPE.*KEY/i, /RESEND/i, /BETTER_AUTH_SECRET/i
|
|
220
|
+
]
|
|
221
|
+
|
|
222
|
+
const PUBLIC_EXCEPTIONS = [/^NEXT_PUBLIC_/i, /PUBLISHABLE/i, /PUBLIC_KEY/i]
|
|
223
|
+
|
|
224
|
+
// Debug variable patterns (automatically set to false in production/staging)
|
|
225
|
+
const DEBUG_PATTERNS = [
|
|
226
|
+
/^.*_DEBUG$/i, // Ends with _DEBUG (e.g., AI_PLUGIN_DEBUG)
|
|
227
|
+
/^DEBUG_/i, // Starts with DEBUG_ (e.g., DEBUG_MODE)
|
|
228
|
+
/^NEXT_PUBLIC_.*_DEBUG$/i // Public debug vars (e.g., NEXT_PUBLIC_API_DEBUG)
|
|
229
|
+
]
|
|
230
|
+
|
|
231
|
+
// ============================================================================
|
|
232
|
+
// Utilities
|
|
233
|
+
// ============================================================================
|
|
234
|
+
|
|
235
|
+
/**
|
|
236
|
+
* Normalize environment variable value by removing quotes and whitespace
|
|
237
|
+
* Used for both comparison and upload to ensure consistent formatting
|
|
238
|
+
*/
|
|
239
|
+
function normalizeValue(val) {
|
|
240
|
+
if (!val) return val
|
|
241
|
+
|
|
242
|
+
// Remove trailing whitespace and newlines
|
|
243
|
+
let normalized = val.trim()
|
|
244
|
+
|
|
245
|
+
// Remove all surrounding quotes (double or single) recursively
|
|
246
|
+
// Trim after each iteration to handle cases like: "value\n" → value\n → value
|
|
247
|
+
let prevValue = ''
|
|
248
|
+
while (normalized !== prevValue) {
|
|
249
|
+
prevValue = normalized
|
|
250
|
+
normalized = normalized.replace(/^["'](.*)["']$/, '$1').trim()
|
|
251
|
+
}
|
|
252
|
+
|
|
253
|
+
// Remove literal \n, \r, \t that Vercel CLI sometimes adds as string literals
|
|
254
|
+
normalized = normalized.replace(/\\n$/g, '').replace(/\\r$/g, '').replace(/\\t$/g, '')
|
|
255
|
+
|
|
256
|
+
return normalized
|
|
257
|
+
}
|
|
258
|
+
|
|
259
|
+
function execCommand(command, args = [], input = null, options = {}) {
|
|
260
|
+
return new Promise((resolve, reject) => {
|
|
261
|
+
const proc = spawn(command, args, {
|
|
262
|
+
stdio: input ? ['pipe', 'pipe', 'pipe'] : options.inheritStdio ? 'inherit' : 'pipe',
|
|
263
|
+
cwd: options.cwd || projectRoot
|
|
264
|
+
})
|
|
265
|
+
|
|
266
|
+
let stdout = ''
|
|
267
|
+
let stderr = ''
|
|
268
|
+
|
|
269
|
+
if (!options.inheritStdio) {
|
|
270
|
+
if (proc.stdout) proc.stdout.on('data', (data) => stdout += data.toString())
|
|
271
|
+
if (proc.stderr) proc.stderr.on('data', (data) => stderr += data.toString())
|
|
272
|
+
}
|
|
273
|
+
|
|
274
|
+
if (input && proc.stdin) {
|
|
275
|
+
proc.stdin.write(input)
|
|
276
|
+
proc.stdin.end()
|
|
277
|
+
}
|
|
278
|
+
|
|
279
|
+
proc.on('close', (code) => {
|
|
280
|
+
if (code === 0) {
|
|
281
|
+
resolve({ stdout, stderr, code })
|
|
282
|
+
} else {
|
|
283
|
+
reject(new Error(`Command failed with code ${code}: ${stderr || stdout}`))
|
|
284
|
+
}
|
|
285
|
+
})
|
|
286
|
+
|
|
287
|
+
proc.on('error', (error) => reject(error))
|
|
288
|
+
})
|
|
289
|
+
}
|
|
290
|
+
|
|
291
|
+
function confirm(message) {
|
|
292
|
+
const rl = readline.createInterface({
|
|
293
|
+
input: process.stdin,
|
|
294
|
+
output: process.stdout
|
|
295
|
+
})
|
|
296
|
+
|
|
297
|
+
return new Promise((resolve) => {
|
|
298
|
+
rl.question(`${message} (y/N): `, (answer) => {
|
|
299
|
+
rl.close()
|
|
300
|
+
resolve(answer.toLowerCase() === 'y' || answer.toLowerCase() === 'yes')
|
|
301
|
+
})
|
|
302
|
+
})
|
|
303
|
+
}
|
|
304
|
+
|
|
305
|
+
// ============================================================================
|
|
306
|
+
// Vercel API Helpers
|
|
307
|
+
// ============================================================================
|
|
308
|
+
|
|
309
|
+
/**
|
|
310
|
+
* Get Vercel API token from environment or CLI config file
|
|
311
|
+
*/
|
|
312
|
+
async function getVercelToken() {
|
|
313
|
+
// Priority 1: Check if VERCEL_TOKEN is in environment
|
|
314
|
+
if (process.env.VERCEL_TOKEN) {
|
|
315
|
+
return process.env.VERCEL_TOKEN
|
|
316
|
+
}
|
|
317
|
+
|
|
318
|
+
// Priority 2: Try to read token from Vercel CLI auth.json
|
|
319
|
+
// Default location: ~/.local/share/com.vercel.cli/auth.json
|
|
320
|
+
const os = await import('os')
|
|
321
|
+
const possiblePaths = [
|
|
322
|
+
join(os.homedir(), '.local/share/com.vercel.cli/auth.json'),
|
|
323
|
+
join(os.homedir(), '.vercel/auth.json'),
|
|
324
|
+
join(os.homedir(), '.config/com.vercel.cli/auth.json')
|
|
325
|
+
]
|
|
326
|
+
|
|
327
|
+
for (const authPath of possiblePaths) {
|
|
328
|
+
if (existsSync(authPath)) {
|
|
329
|
+
try {
|
|
330
|
+
const authData = JSON.parse(readFileSync(authPath, 'utf-8'))
|
|
331
|
+
if (authData.token) {
|
|
332
|
+
return authData.token
|
|
333
|
+
}
|
|
334
|
+
} catch (error) {
|
|
335
|
+
// Continue to next path if parsing fails
|
|
336
|
+
continue
|
|
337
|
+
}
|
|
338
|
+
}
|
|
339
|
+
}
|
|
340
|
+
|
|
341
|
+
// No token found
|
|
342
|
+
console.error(' ❌ Could not retrieve Vercel API token')
|
|
343
|
+
console.error(' Please either:')
|
|
344
|
+
console.error(' 1. Run: vercel login')
|
|
345
|
+
console.error(' 2. Set VERCEL_TOKEN environment variable\n')
|
|
346
|
+
process.exit(1)
|
|
347
|
+
}
|
|
348
|
+
|
|
349
|
+
/**
|
|
350
|
+
* Make a Vercel API request
|
|
351
|
+
*/
|
|
352
|
+
async function vercelAPIRequest(endpoint, options = {}) {
|
|
353
|
+
const token = await getVercelToken()
|
|
354
|
+
const baseURL = 'https://api.vercel.com'
|
|
355
|
+
|
|
356
|
+
const url = `${baseURL}${endpoint}`
|
|
357
|
+
const headers = {
|
|
358
|
+
'Authorization': `Bearer ${token}`,
|
|
359
|
+
'Content-Type': 'application/json',
|
|
360
|
+
...options.headers
|
|
361
|
+
}
|
|
362
|
+
|
|
363
|
+
try {
|
|
364
|
+
const response = await fetch(url, {
|
|
365
|
+
...options,
|
|
366
|
+
headers
|
|
367
|
+
})
|
|
368
|
+
|
|
369
|
+
const data = await response.json()
|
|
370
|
+
|
|
371
|
+
if (!response.ok) {
|
|
372
|
+
throw new Error(`API Error ${response.status}: ${data.error?.message || JSON.stringify(data)}`)
|
|
373
|
+
}
|
|
374
|
+
|
|
375
|
+
return data
|
|
376
|
+
} catch (error) {
|
|
377
|
+
throw new Error(`Vercel API request failed: ${error.message}`)
|
|
378
|
+
}
|
|
379
|
+
}
|
|
380
|
+
|
|
381
|
+
// ============================================================================
|
|
382
|
+
// Custom Environment Management
|
|
383
|
+
// ============================================================================
|
|
384
|
+
|
|
385
|
+
/**
|
|
386
|
+
* List all custom environments for the project
|
|
387
|
+
*/
|
|
388
|
+
async function listCustomEnvironments(projectConfig) {
|
|
389
|
+
try {
|
|
390
|
+
const endpoint = `/v9/projects/${projectConfig.name}/custom-environments?teamId=${projectConfig.team}`
|
|
391
|
+
const data = await vercelAPIRequest(endpoint, { method: 'GET' })
|
|
392
|
+
|
|
393
|
+
// API returns "environments" not "customEnvironments"
|
|
394
|
+
return data.environments || data.customEnvironments || []
|
|
395
|
+
} catch (error) {
|
|
396
|
+
console.warn(' ⚠️ Could not list custom environments:', error.message)
|
|
397
|
+
return []
|
|
398
|
+
}
|
|
399
|
+
}
|
|
400
|
+
|
|
401
|
+
/**
|
|
402
|
+
* Check if a custom environment exists
|
|
403
|
+
*/
|
|
404
|
+
async function customEnvironmentExists(projectConfig, envSlug) {
|
|
405
|
+
const environments = await listCustomEnvironments(projectConfig)
|
|
406
|
+
return environments.find(env => env.slug === envSlug) || null
|
|
407
|
+
}
|
|
408
|
+
|
|
409
|
+
/**
|
|
410
|
+
* Create a custom environment for staging
|
|
411
|
+
*/
|
|
412
|
+
async function createCustomEnvironment(projectConfig) {
|
|
413
|
+
console.log(`\n🔧 Creating custom environment "staging"...`)
|
|
414
|
+
|
|
415
|
+
try {
|
|
416
|
+
const endpoint = `/v9/projects/${projectConfig.name}/custom-environments?teamId=${projectConfig.team}`
|
|
417
|
+
|
|
418
|
+
const requestBody = {
|
|
419
|
+
slug: 'staging',
|
|
420
|
+
description: 'Staging environment for pre-production testing',
|
|
421
|
+
branchMatcher: {
|
|
422
|
+
type: 'equals',
|
|
423
|
+
pattern: 'staging'
|
|
424
|
+
}
|
|
425
|
+
}
|
|
426
|
+
|
|
427
|
+
const data = await vercelAPIRequest(endpoint, {
|
|
428
|
+
method: 'POST',
|
|
429
|
+
body: JSON.stringify(requestBody)
|
|
430
|
+
})
|
|
431
|
+
|
|
432
|
+
console.log(` ✅ Custom environment created: ${data.slug}`)
|
|
433
|
+
console.log(` 💡 Branch matcher: ${data.branchMatcher?.type} "${data.branchMatcher?.pattern}"\n`)
|
|
434
|
+
|
|
435
|
+
return data
|
|
436
|
+
} catch (error) {
|
|
437
|
+
console.error(`\n ❌ Failed to create custom environment`)
|
|
438
|
+
console.error(` Error: ${error.message}\n`)
|
|
439
|
+
console.error(' 💡 You may need to create it manually via Vercel Dashboard:')
|
|
440
|
+
console.error(` ${projectConfig.url}/settings/environments\n`)
|
|
441
|
+
|
|
442
|
+
throw error
|
|
443
|
+
}
|
|
444
|
+
}
|
|
445
|
+
|
|
446
|
+
/**
|
|
447
|
+
* Ensure staging custom environment exists
|
|
448
|
+
*/
|
|
449
|
+
async function ensureCustomEnvironment(projectConfig) {
|
|
450
|
+
console.log(`\n📋 Checking staging custom environment...\n`)
|
|
451
|
+
|
|
452
|
+
// Check if staging environment already exists
|
|
453
|
+
const existingEnv = await customEnvironmentExists(projectConfig, 'staging')
|
|
454
|
+
|
|
455
|
+
if (existingEnv) {
|
|
456
|
+
console.log(` ✅ Custom environment "staging" already exists`)
|
|
457
|
+
console.log(` ID: ${existingEnv.id}`)
|
|
458
|
+
if (existingEnv.branchMatcher) {
|
|
459
|
+
console.log(` Branch matcher: ${existingEnv.branchMatcher.type} "${existingEnv.branchMatcher.pattern}"`)
|
|
460
|
+
}
|
|
461
|
+
console.log('')
|
|
462
|
+
return existingEnv
|
|
463
|
+
}
|
|
464
|
+
|
|
465
|
+
// Environment doesn't exist, ask user if they want to create it
|
|
466
|
+
console.log(` ℹ️ Custom environment "staging" not found`)
|
|
467
|
+
const shouldCreate = await confirm(' Create custom environment for staging')
|
|
468
|
+
|
|
469
|
+
if (!shouldCreate) {
|
|
470
|
+
console.log('\n ⏭️ Skipping custom environment creation')
|
|
471
|
+
console.log(' ⚠️ Without a custom environment, deployments will use preview environment\n')
|
|
472
|
+
return null
|
|
473
|
+
}
|
|
474
|
+
|
|
475
|
+
// Create the custom environment
|
|
476
|
+
return await createCustomEnvironment(projectConfig)
|
|
477
|
+
}
|
|
478
|
+
|
|
479
|
+
// ============================================================================
|
|
480
|
+
// Domain Management
|
|
481
|
+
// ============================================================================
|
|
482
|
+
|
|
483
|
+
/**
|
|
484
|
+
* Check if domain is already assigned to this project using Vercel API
|
|
485
|
+
* Returns domain info including current customEnvironmentId if any
|
|
486
|
+
*/
|
|
487
|
+
async function isDomainOnThisProject(domain, projectConfig) {
|
|
488
|
+
try {
|
|
489
|
+
// Use Vercel API to get domain info from project
|
|
490
|
+
const endpoint = `/v9/projects/${projectConfig.name}/domains/${domain}?teamId=${projectConfig.team}`
|
|
491
|
+
const data = await vercelAPIRequest(endpoint, { method: 'GET' })
|
|
492
|
+
|
|
493
|
+
// Domain exists on this project
|
|
494
|
+
return {
|
|
495
|
+
onThisProject: true,
|
|
496
|
+
data,
|
|
497
|
+
currentCustomEnvId: data.customEnvironmentId || null
|
|
498
|
+
}
|
|
499
|
+
} catch (error) {
|
|
500
|
+
// Domain not found on this project (404) or other error
|
|
501
|
+
return { onThisProject: false }
|
|
502
|
+
}
|
|
503
|
+
}
|
|
504
|
+
|
|
505
|
+
/**
|
|
506
|
+
* Add a domain to the Vercel project with custom environment support
|
|
507
|
+
*/
|
|
508
|
+
async function addDomainToProject(domain, projectConfig, customEnvironmentId = null) {
|
|
509
|
+
console.log(`\n🌐 Configuring domain for project...`)
|
|
510
|
+
console.log(` Domain: ${domain}`)
|
|
511
|
+
console.log(` Project: ${projectConfig.name}`)
|
|
512
|
+
if (customEnvironmentId) {
|
|
513
|
+
console.log(` Custom Environment: staging (${customEnvironmentId})`)
|
|
514
|
+
}
|
|
515
|
+
console.log(` Team: ${projectConfig.team}\n`)
|
|
516
|
+
|
|
517
|
+
// First, check if domain is already on this project
|
|
518
|
+
console.log(` 🔍 Checking if domain is already configured...`)
|
|
519
|
+
const checkResult = await isDomainOnThisProject(domain, projectConfig)
|
|
520
|
+
|
|
521
|
+
if (checkResult.onThisProject) {
|
|
522
|
+
// Domain exists on project - check if custom environment ID needs update
|
|
523
|
+
const currentEnvId = checkResult.currentCustomEnvId
|
|
524
|
+
|
|
525
|
+
if (customEnvironmentId && currentEnvId !== customEnvironmentId) {
|
|
526
|
+
console.log(` ⚠️ Domain exists but assigned to different custom environment`)
|
|
527
|
+
console.log(` Current: ${currentEnvId || 'none'}`)
|
|
528
|
+
console.log(` Target: ${customEnvironmentId}`)
|
|
529
|
+
console.log(` 🔄 Updating domain assignment...\n`)
|
|
530
|
+
|
|
531
|
+
// Update domain's custom environment ID via PATCH
|
|
532
|
+
try {
|
|
533
|
+
const endpoint = `/v9/projects/${projectConfig.name}/domains/${domain}?teamId=${projectConfig.team}`
|
|
534
|
+
await vercelAPIRequest(endpoint, {
|
|
535
|
+
method: 'PATCH',
|
|
536
|
+
body: JSON.stringify({ customEnvironmentId })
|
|
537
|
+
})
|
|
538
|
+
console.log(` ✅ Domain updated to new custom environment\n`)
|
|
539
|
+
return { success: true, alreadyConfigured: true, updated: true }
|
|
540
|
+
} catch (error) {
|
|
541
|
+
console.log(` ⚠️ Could not update domain: ${error.message}`)
|
|
542
|
+
console.log(` 💡 You may need to update manually via Vercel Dashboard\n`)
|
|
543
|
+
return { success: true, alreadyConfigured: true, updated: false }
|
|
544
|
+
}
|
|
545
|
+
}
|
|
546
|
+
|
|
547
|
+
console.log(` ✅ Domain already configured correctly\n`)
|
|
548
|
+
return { success: true, alreadyConfigured: true }
|
|
549
|
+
}
|
|
550
|
+
|
|
551
|
+
console.log(` ℹ️ Domain not found on this project, attempting to add...\n`)
|
|
552
|
+
|
|
553
|
+
try {
|
|
554
|
+
// Use Vercel API to add domain with custom environment support
|
|
555
|
+
const endpoint = `/v9/projects/${projectConfig.name}/domains?teamId=${projectConfig.team}`
|
|
556
|
+
|
|
557
|
+
const requestBody = {
|
|
558
|
+
name: domain
|
|
559
|
+
}
|
|
560
|
+
|
|
561
|
+
// If custom environment ID is provided, associate domain with it
|
|
562
|
+
if (customEnvironmentId) {
|
|
563
|
+
requestBody.customEnvironmentId = customEnvironmentId
|
|
564
|
+
}
|
|
565
|
+
|
|
566
|
+
const data = await vercelAPIRequest(endpoint, {
|
|
567
|
+
method: 'POST',
|
|
568
|
+
body: JSON.stringify(requestBody)
|
|
569
|
+
})
|
|
570
|
+
|
|
571
|
+
console.log(` ✅ Domain added successfully: ${domain}`)
|
|
572
|
+
|
|
573
|
+
if (!data.verified) {
|
|
574
|
+
console.log(` ⚠️ Domain needs verification`)
|
|
575
|
+
console.log(` 💡 Configure DNS records:`)
|
|
576
|
+
if (data.verification && data.verification.length > 0) {
|
|
577
|
+
data.verification.forEach(record => {
|
|
578
|
+
console.log(` ${record.type} ${record.domain} → ${record.value}`)
|
|
579
|
+
})
|
|
580
|
+
}
|
|
581
|
+
}
|
|
582
|
+
|
|
583
|
+
console.log('')
|
|
584
|
+
return { success: true, alreadyConfigured: false, data }
|
|
585
|
+
|
|
586
|
+
} catch (error) {
|
|
587
|
+
const errorMsg = error.message.toLowerCase()
|
|
588
|
+
|
|
589
|
+
// Case 1: Domain already assigned to ANOTHER project
|
|
590
|
+
if (errorMsg.includes('already assigned') || errorMsg.includes('in use')) {
|
|
591
|
+
console.log(`\n ⚠️ Domain is assigned to a different Vercel project\n`)
|
|
592
|
+
console.log(' 📋 To use this domain with the current project:\n')
|
|
593
|
+
console.log(' Option 1 (Recommended): Move domain via Vercel Dashboard')
|
|
594
|
+
console.log(` 1. Go to: https://vercel.com/${projectConfig.team}`)
|
|
595
|
+
console.log(' 2. Find the project that currently owns the domain')
|
|
596
|
+
console.log(` 3. Remove ${domain} from that project`)
|
|
597
|
+
console.log(` 4. Go to: ${projectConfig.url}/settings/domains`)
|
|
598
|
+
console.log(` 5. Add ${domain} to this project\n`)
|
|
599
|
+
|
|
600
|
+
return { success: false, alreadyOnOtherProject: true }
|
|
601
|
+
}
|
|
602
|
+
|
|
603
|
+
// Case 2: Other errors (permissions, network, etc.)
|
|
604
|
+
console.error(`\n ❌ Failed to configure domain`)
|
|
605
|
+
console.error(` Error: ${error.message}\n`)
|
|
606
|
+
console.error(' 💡 You may need to configure it manually via Vercel Dashboard:')
|
|
607
|
+
console.error(` ${projectConfig.url}/settings/domains\n`)
|
|
608
|
+
|
|
609
|
+
return { success: false, error: error.message }
|
|
610
|
+
}
|
|
611
|
+
}
|
|
612
|
+
|
|
613
|
+
/**
|
|
614
|
+
* Ensure staging domain is configured for the project with custom environment
|
|
615
|
+
* Returns an object with configuration status details
|
|
616
|
+
*/
|
|
617
|
+
async function ensureStagingDomain(projectConfig, customEnvironment) {
|
|
618
|
+
if (!projectConfig.stagingDomain) {
|
|
619
|
+
console.log('\n📋 Staging Domain Configuration\n')
|
|
620
|
+
console.log(' ⚠️ No staging domain configured in .env.staging')
|
|
621
|
+
console.log(' 💡 To set up a staging domain:')
|
|
622
|
+
console.log(' 1. Add to .env.staging: NEXT_PUBLIC_APP_URL=https://staging.yourdomain.com')
|
|
623
|
+
console.log(' 2. Re-run this deployment script\n')
|
|
624
|
+
console.log(' ℹ️ Deployment will continue without custom domain (will use Vercel preview URL)\n')
|
|
625
|
+
return { configured: false, reason: 'no_domain_in_env' }
|
|
626
|
+
}
|
|
627
|
+
|
|
628
|
+
console.log(`\n📋 Staging Domain Configuration`)
|
|
629
|
+
console.log(` Domain: ${projectConfig.stagingDomain}`)
|
|
630
|
+
|
|
631
|
+
if (customEnvironment) {
|
|
632
|
+
console.log(` Target: Custom Environment "staging"`)
|
|
633
|
+
} else {
|
|
634
|
+
console.log(` ⚠️ No custom environment - domain will use default preview environment`)
|
|
635
|
+
}
|
|
636
|
+
|
|
637
|
+
console.log('')
|
|
638
|
+
|
|
639
|
+
// FIRST: Check if domain already exists before asking user
|
|
640
|
+
const customEnvId = customEnvironment ? customEnvironment.id : null
|
|
641
|
+
console.log(` 🔍 Checking if domain is already configured...`)
|
|
642
|
+
const checkResult = await isDomainOnThisProject(projectConfig.stagingDomain, projectConfig)
|
|
643
|
+
|
|
644
|
+
if (checkResult.onThisProject) {
|
|
645
|
+
// Domain already exists on this project
|
|
646
|
+
const currentEnvId = checkResult.currentCustomEnvId
|
|
647
|
+
|
|
648
|
+
if (customEnvId && currentEnvId === customEnvId) {
|
|
649
|
+
// Domain is already assigned to the correct custom environment
|
|
650
|
+
console.log(` ✅ Domain already configured correctly`)
|
|
651
|
+
console.log(` 📌 Assigned to: Custom Environment "staging"\n`)
|
|
652
|
+
return { configured: true, alreadyConfigured: true, customEnvironment }
|
|
653
|
+
} else if (customEnvId && currentEnvId !== customEnvId) {
|
|
654
|
+
// Domain exists but assigned to different environment
|
|
655
|
+
console.log(` ⚠️ Domain exists but assigned to different environment`)
|
|
656
|
+
console.log(` Current: ${currentEnvId || 'none'}`)
|
|
657
|
+
console.log(` Target: ${customEnvId}`)
|
|
658
|
+
const shouldUpdate = await confirm(' Update domain assignment to staging environment')
|
|
659
|
+
|
|
660
|
+
if (!shouldUpdate) {
|
|
661
|
+
console.log('\n ⏭️ Skipping domain update\n')
|
|
662
|
+
return { configured: true, alreadyConfigured: true, needsUpdate: true }
|
|
663
|
+
}
|
|
664
|
+
|
|
665
|
+
// Update domain to new custom environment
|
|
666
|
+
const result = await addDomainToProject(projectConfig.stagingDomain, projectConfig, customEnvId)
|
|
667
|
+
return result.success
|
|
668
|
+
? { configured: true, updated: true, customEnvironment }
|
|
669
|
+
: { configured: false, reason: 'update_failed' }
|
|
670
|
+
} else {
|
|
671
|
+
// Domain exists, no custom environment required or already correct
|
|
672
|
+
console.log(` ✅ Domain already configured\n`)
|
|
673
|
+
return { configured: true, alreadyConfigured: true }
|
|
674
|
+
}
|
|
675
|
+
}
|
|
676
|
+
|
|
677
|
+
// Domain doesn't exist, ask if user wants to add it
|
|
678
|
+
console.log(` ℹ️ Domain not found on this project`)
|
|
679
|
+
const shouldAdd = await confirm(' Add this domain to the project')
|
|
680
|
+
|
|
681
|
+
if (!shouldAdd) {
|
|
682
|
+
console.log('\n ⏭️ Skipping domain configuration')
|
|
683
|
+
console.log(' ℹ️ Deployment will use Vercel preview URL')
|
|
684
|
+
console.log(` 💡 You can add the domain later via Vercel Dashboard\n`)
|
|
685
|
+
return { configured: false, reason: 'user_skipped' }
|
|
686
|
+
}
|
|
687
|
+
|
|
688
|
+
// Add domain with custom environment ID if available
|
|
689
|
+
const result = await addDomainToProject(projectConfig.stagingDomain, projectConfig, customEnvId)
|
|
690
|
+
|
|
691
|
+
if (result.success) {
|
|
692
|
+
return { configured: true, alreadyConfigured: result.alreadyConfigured, customEnvironment }
|
|
693
|
+
} else if (result.alreadyOnOtherProject) {
|
|
694
|
+
// User needs to migrate domain first
|
|
695
|
+
const shouldContinue = await confirm(' Continue deployment without domain configuration')
|
|
696
|
+
|
|
697
|
+
if (shouldContinue) {
|
|
698
|
+
console.log('\n ⏭️ Continuing with deployment')
|
|
699
|
+
console.log(' ℹ️ Deployment will use Vercel preview URL')
|
|
700
|
+
console.log(' 💡 Configure the domain and redeploy to use custom URL\n')
|
|
701
|
+
return { configured: false, reason: 'domain_on_other_project' }
|
|
702
|
+
} else {
|
|
703
|
+
console.log('\n ❌ Deployment cancelled')
|
|
704
|
+
console.log(' Please migrate the domain and try again\n')
|
|
705
|
+
process.exit(0)
|
|
706
|
+
}
|
|
707
|
+
} else {
|
|
708
|
+
// Other error occurred
|
|
709
|
+
const shouldContinue = await confirm(' Continue deployment despite domain configuration error')
|
|
710
|
+
|
|
711
|
+
if (shouldContinue) {
|
|
712
|
+
console.log('\n ⏭️ Continuing with deployment\n')
|
|
713
|
+
return { configured: false, reason: 'configuration_error' }
|
|
714
|
+
} else {
|
|
715
|
+
console.log('\n ❌ Deployment cancelled\n')
|
|
716
|
+
process.exit(0)
|
|
717
|
+
}
|
|
718
|
+
}
|
|
719
|
+
}
|
|
720
|
+
|
|
721
|
+
// ============================================================================
|
|
722
|
+
// Environment Variable Merging
|
|
723
|
+
// ============================================================================
|
|
724
|
+
|
|
725
|
+
function parseEnvFile(content) {
|
|
726
|
+
const lines = content.split('\n')
|
|
727
|
+
const vars = {}
|
|
728
|
+
|
|
729
|
+
for (const line of lines) {
|
|
730
|
+
const trimmed = line.trim()
|
|
731
|
+
if (!trimmed || trimmed.startsWith('#')) continue
|
|
732
|
+
|
|
733
|
+
const match = trimmed.match(/^([A-Z_][A-Z0-9_]*)\s*=\s*(.*)$/)
|
|
734
|
+
if (match) {
|
|
735
|
+
const [, key, value] = match
|
|
736
|
+
// Normalize value to remove quotes and whitespace artifacts from Vercel CLI
|
|
737
|
+
vars[key] = normalizeValue(value)
|
|
738
|
+
}
|
|
739
|
+
}
|
|
740
|
+
|
|
741
|
+
return vars
|
|
742
|
+
}
|
|
743
|
+
|
|
744
|
+
function readEnvFile(path) {
|
|
745
|
+
if (!existsSync(path)) return {}
|
|
746
|
+
|
|
747
|
+
try {
|
|
748
|
+
const content = readFileSync(path, 'utf-8')
|
|
749
|
+
return parseEnvFile(content)
|
|
750
|
+
} catch (error) {
|
|
751
|
+
console.error(`❌ Error reading ${path}:`, error.message)
|
|
752
|
+
return {}
|
|
753
|
+
}
|
|
754
|
+
}
|
|
755
|
+
|
|
756
|
+
function sanitizeDebugVariables(vars, target, explicitOverrides = {}) {
|
|
757
|
+
const sanitized = { ...vars }
|
|
758
|
+
const debugVars = []
|
|
759
|
+
|
|
760
|
+
for (const [key, value] of Object.entries(sanitized)) {
|
|
761
|
+
const isDebugVar = DEBUG_PATTERNS.some(pattern => pattern.test(key))
|
|
762
|
+
const hasExplicitOverride = key in explicitOverrides
|
|
763
|
+
|
|
764
|
+
// Only sanitize if it's a debug var, not 'false', and not explicitly overridden
|
|
765
|
+
if (isDebugVar && value !== 'false' && !hasExplicitOverride) {
|
|
766
|
+
debugVars.push({ key, original: value })
|
|
767
|
+
sanitized[key] = 'false'
|
|
768
|
+
}
|
|
769
|
+
}
|
|
770
|
+
|
|
771
|
+
if (debugVars.length > 0) {
|
|
772
|
+
console.log(`\n🔒 Security: Setting ${debugVars.length} debug variable(s) to false for ${target}:\n`)
|
|
773
|
+
for (const { key, original } of debugVars) {
|
|
774
|
+
console.log(` 🔧 ${key}: ${original} → false`)
|
|
775
|
+
}
|
|
776
|
+
console.log(`\n 💡 To enable debug in ${target}, add to .env.${target}\n`)
|
|
777
|
+
}
|
|
778
|
+
|
|
779
|
+
return sanitized
|
|
780
|
+
}
|
|
781
|
+
|
|
782
|
+
function findPluginEnvFiles() {
|
|
783
|
+
const pluginsDir = join(projectRoot, 'contents/plugins')
|
|
784
|
+
const pluginEnvFiles = []
|
|
785
|
+
|
|
786
|
+
if (!existsSync(pluginsDir)) return pluginEnvFiles
|
|
787
|
+
|
|
788
|
+
const entries = readdirSync(pluginsDir)
|
|
789
|
+
|
|
790
|
+
for (const entry of entries) {
|
|
791
|
+
const pluginPath = join(pluginsDir, entry)
|
|
792
|
+
if (!statSync(pluginPath).isDirectory()) continue
|
|
793
|
+
|
|
794
|
+
const envPath = join(pluginPath, '.env')
|
|
795
|
+
if (existsSync(envPath)) {
|
|
796
|
+
pluginEnvFiles.push({ name: entry, path: envPath })
|
|
797
|
+
}
|
|
798
|
+
}
|
|
799
|
+
|
|
800
|
+
return pluginEnvFiles
|
|
801
|
+
}
|
|
802
|
+
|
|
803
|
+
function mergeEnvironmentVariables(target) {
|
|
804
|
+
console.log('\n📦 Merging environment variables...\n')
|
|
805
|
+
|
|
806
|
+
const allVars = {}
|
|
807
|
+
const sections = []
|
|
808
|
+
|
|
809
|
+
// 1. Root .env (development defaults)
|
|
810
|
+
const rootVars = readEnvFile(join(projectRoot, '.env'))
|
|
811
|
+
if (Object.keys(rootVars).length > 0) {
|
|
812
|
+
console.log(` ✅ Root .env (${Object.keys(rootVars).length} variables)`)
|
|
813
|
+
Object.assign(allVars, rootVars)
|
|
814
|
+
sections.push({
|
|
815
|
+
title: 'CORE APPLICATION VARIABLES',
|
|
816
|
+
vars: rootVars
|
|
817
|
+
})
|
|
818
|
+
}
|
|
819
|
+
|
|
820
|
+
// 2. Plugin .env files
|
|
821
|
+
const pluginEnvFiles = findPluginEnvFiles()
|
|
822
|
+
for (const { name, path } of pluginEnvFiles) {
|
|
823
|
+
const vars = readEnvFile(path)
|
|
824
|
+
if (Object.keys(vars).length > 0) {
|
|
825
|
+
console.log(` ✅ Plugin: ${name} (${Object.keys(vars).length} variables)`)
|
|
826
|
+
Object.assign(allVars, vars)
|
|
827
|
+
sections.push({
|
|
828
|
+
title: `PLUGIN: ${name.toUpperCase()}`,
|
|
829
|
+
vars
|
|
830
|
+
})
|
|
831
|
+
}
|
|
832
|
+
}
|
|
833
|
+
|
|
834
|
+
// 3. Environment-specific overrides
|
|
835
|
+
// Try target-specific file first (e.g., .env.staging or .env.prod)
|
|
836
|
+
// Then fall back to .env.production.local for backward compatibility
|
|
837
|
+
const targetEnvPath = join(projectRoot, `.env.${target}`)
|
|
838
|
+
const legacyEnvPath = join(projectRoot, '.env.production.local')
|
|
839
|
+
|
|
840
|
+
let overrides = {}
|
|
841
|
+
let overridesSource = null
|
|
842
|
+
|
|
843
|
+
if (existsSync(targetEnvPath)) {
|
|
844
|
+
overrides = readEnvFile(targetEnvPath)
|
|
845
|
+
overridesSource = `.env.${target}`
|
|
846
|
+
} else if (existsSync(legacyEnvPath)) {
|
|
847
|
+
overrides = readEnvFile(legacyEnvPath)
|
|
848
|
+
overridesSource = '.env.production.local'
|
|
849
|
+
}
|
|
850
|
+
|
|
851
|
+
if (Object.keys(overrides).length > 0) {
|
|
852
|
+
console.log(` ✅ ${overridesSource} (${Object.keys(overrides).length} variables)`)
|
|
853
|
+
Object.assign(allVars, overrides)
|
|
854
|
+
sections.push({
|
|
855
|
+
title: `ENVIRONMENT OVERRIDES (${target})`,
|
|
856
|
+
vars: overrides
|
|
857
|
+
})
|
|
858
|
+
} else {
|
|
859
|
+
console.log(` ⚠️ No .env.${target} or .env.production.local found`)
|
|
860
|
+
console.log(` 💡 Create .env.${target} for ${target}-specific config`)
|
|
861
|
+
}
|
|
862
|
+
|
|
863
|
+
// Sanitize debug variables for production/staging (respecting explicit overrides)
|
|
864
|
+
const sanitizedVars = sanitizeDebugVariables(allVars, target, overrides)
|
|
865
|
+
|
|
866
|
+
// Generate consolidated merged file (target-specific naming for clarity)
|
|
867
|
+
let output = `# Auto-generated: ${new Date().toISOString()}\n# DO NOT EDIT MANUALLY - DO NOT COMMIT\n#\n# Merged from:\n`
|
|
868
|
+
|
|
869
|
+
for (const section of sections) {
|
|
870
|
+
output += `# - ${section.title}\n`
|
|
871
|
+
}
|
|
872
|
+
|
|
873
|
+
output += `\n`
|
|
874
|
+
|
|
875
|
+
// Write all variables (using sanitizedVars which has final merged + sanitized values)
|
|
876
|
+
// Normalize values to match what will be uploaded to Vercel
|
|
877
|
+
for (const [key, value] of Object.entries(sanitizedVars)) {
|
|
878
|
+
const normalizedValue = normalizeValue(value)
|
|
879
|
+
output += `${key}=${normalizedValue}\n`
|
|
880
|
+
}
|
|
881
|
+
|
|
882
|
+
// Use target-specific filename: .env.merged.staging, .env.merged.production
|
|
883
|
+
// Use 'target' for filename to match user's expectation (--staging → staging, --prod → prod)
|
|
884
|
+
const outputPath = join(projectRoot, `.env.merged.${target}`)
|
|
885
|
+
writeFileSync(outputPath, output, 'utf-8')
|
|
886
|
+
|
|
887
|
+
const totalVars = Object.keys(sanitizedVars).length
|
|
888
|
+
console.log(`\n ✅ Created .env.merged.${target} with ${totalVars} variables\n`)
|
|
889
|
+
|
|
890
|
+
return { outputPath, totalVars, target }
|
|
891
|
+
}
|
|
892
|
+
|
|
893
|
+
// ============================================================================
|
|
894
|
+
// Environment Variable Upload
|
|
895
|
+
// ============================================================================
|
|
896
|
+
|
|
897
|
+
function parseEnvFileForUpload(filePath) {
|
|
898
|
+
if (!existsSync(filePath)) {
|
|
899
|
+
console.error(`❌ File not found: ${filePath}`)
|
|
900
|
+
process.exit(1)
|
|
901
|
+
}
|
|
902
|
+
|
|
903
|
+
const content = readFileSync(filePath, 'utf-8')
|
|
904
|
+
const lines = content.split('\n')
|
|
905
|
+
const vars = []
|
|
906
|
+
|
|
907
|
+
for (let i = 0; i < lines.length; i++) {
|
|
908
|
+
const line = lines[i].trim()
|
|
909
|
+
if (!line || line.startsWith('#')) continue
|
|
910
|
+
|
|
911
|
+
const match = line.match(/^([A-Z_][A-Z0-9_]*)\s*=\s*(.*)$/)
|
|
912
|
+
if (match) {
|
|
913
|
+
const [, key, rawValue] = match
|
|
914
|
+
// Normalize value to remove quotes, whitespace, and newlines
|
|
915
|
+
const value = normalizeValue(rawValue)
|
|
916
|
+
vars.push({ key, value })
|
|
917
|
+
}
|
|
918
|
+
}
|
|
919
|
+
|
|
920
|
+
return vars
|
|
921
|
+
}
|
|
922
|
+
|
|
923
|
+
/**
|
|
924
|
+
* Validate variables for production deployment
|
|
925
|
+
* Detects localhost URLs and other dev-only values
|
|
926
|
+
*/
|
|
927
|
+
function validateProductionVars(vars) {
|
|
928
|
+
const critical = []
|
|
929
|
+
const warnings = []
|
|
930
|
+
|
|
931
|
+
// Variables that should NEVER have localhost in production
|
|
932
|
+
const criticalVars = [
|
|
933
|
+
'BETTER_AUTH_URL',
|
|
934
|
+
'NEXT_PUBLIC_APP_URL',
|
|
935
|
+
'NEXT_PUBLIC_API_URL',
|
|
936
|
+
'WEBHOOK_URL'
|
|
937
|
+
]
|
|
938
|
+
|
|
939
|
+
// Variables that are OK to have localhost (optional/dev features)
|
|
940
|
+
const allowedLocalhostVars = [
|
|
941
|
+
'OLLAMA_BASE_URL', // Local AI - optional
|
|
942
|
+
'LOCAL_API_URL', // Development API
|
|
943
|
+
'DEV_SERVER_URL' // Development server
|
|
944
|
+
]
|
|
945
|
+
|
|
946
|
+
for (const { key, value } of vars) {
|
|
947
|
+
// Check for localhost URLs
|
|
948
|
+
if (value.includes('localhost') || value.includes('127.0.0.1')) {
|
|
949
|
+
if (criticalVars.includes(key)) {
|
|
950
|
+
critical.push({
|
|
951
|
+
key,
|
|
952
|
+
issue: `🔴 CRITICAL - Contains localhost (${value.substring(0, 40)}...)`
|
|
953
|
+
})
|
|
954
|
+
} else if (!allowedLocalhostVars.includes(key)) {
|
|
955
|
+
warnings.push({
|
|
956
|
+
key,
|
|
957
|
+
issue: `⚠️ Info - Contains localhost (${value.substring(0, 40)}...)`
|
|
958
|
+
})
|
|
959
|
+
}
|
|
960
|
+
// Silently allow for allowedLocalhostVars
|
|
961
|
+
}
|
|
962
|
+
|
|
963
|
+
// Check for development-specific values
|
|
964
|
+
if (key.includes('DEV') && !key.includes('DEVELOPER') && !key.includes('DEFAULT')) {
|
|
965
|
+
warnings.push({
|
|
966
|
+
key,
|
|
967
|
+
issue: '⚠️ Info - Looks like a dev-only variable'
|
|
968
|
+
})
|
|
969
|
+
}
|
|
970
|
+
|
|
971
|
+
// Check for empty required variables
|
|
972
|
+
if (!value || value.trim() === '') {
|
|
973
|
+
warnings.push({
|
|
974
|
+
key,
|
|
975
|
+
issue: '⚠️ Info - Empty value'
|
|
976
|
+
})
|
|
977
|
+
}
|
|
978
|
+
}
|
|
979
|
+
|
|
980
|
+
return { critical, warnings }
|
|
981
|
+
}
|
|
982
|
+
|
|
983
|
+
/**
|
|
984
|
+
* Upload a single environment variable via Vercel CLI
|
|
985
|
+
* Uses projectConfig.env which is set to the custom environment slug if detected
|
|
986
|
+
*/
|
|
987
|
+
async function uploadVariable(key, value, projectConfig, customEnvironmentSlug = null) {
|
|
988
|
+
try {
|
|
989
|
+
// Use the environment from projectConfig (already set to "staging", "production", etc.)
|
|
990
|
+
// customEnvironmentSlug parameter kept for backward compatibility but projectConfig.env is now authoritative
|
|
991
|
+
const environment = customEnvironmentSlug || projectConfig.env
|
|
992
|
+
|
|
993
|
+
// Execute: echo "value" | vercel env add KEY environment
|
|
994
|
+
const result = await execCommand('vercel', ['env', 'add', key, environment], value)
|
|
995
|
+
|
|
996
|
+
// Check if output indicates success (vercel outputs to stderr, not stdout)
|
|
997
|
+
const output = result.stderr + result.stdout
|
|
998
|
+
const isSuccess = output.includes('Added Environment Variable') ||
|
|
999
|
+
output.includes('Environment Variable already exists')
|
|
1000
|
+
|
|
1001
|
+
if (!isSuccess) {
|
|
1002
|
+
// Command executed but didn't produce expected output
|
|
1003
|
+
const errorMsg = output.trim() || 'Unknown error'
|
|
1004
|
+
return { success: false, error: errorMsg }
|
|
1005
|
+
}
|
|
1006
|
+
|
|
1007
|
+
const action = output.includes('already exists') ? 'updated' : 'added'
|
|
1008
|
+
return { success: true, action }
|
|
1009
|
+
|
|
1010
|
+
} catch (error) {
|
|
1011
|
+
return { success: false, error: error.message || 'Command execution failed' }
|
|
1012
|
+
}
|
|
1013
|
+
}
|
|
1014
|
+
|
|
1015
|
+
/**
|
|
1016
|
+
* Update an existing environment variable by removing and re-adding it
|
|
1017
|
+
* This is necessary because Vercel CLI doesn't have an 'update' command
|
|
1018
|
+
*/
|
|
1019
|
+
async function updateVariable(key, value, projectConfig, customEnvironmentSlug = null) {
|
|
1020
|
+
const environment = customEnvironmentSlug || projectConfig.env
|
|
1021
|
+
|
|
1022
|
+
try {
|
|
1023
|
+
// Step 1: Remove existing variable
|
|
1024
|
+
await execCommand('vercel', ['env', 'rm', key, environment, '--yes'])
|
|
1025
|
+
|
|
1026
|
+
// Step 2: Add with new value
|
|
1027
|
+
const result = await execCommand('vercel', ['env', 'add', key, environment], value)
|
|
1028
|
+
|
|
1029
|
+
// Check if output indicates success
|
|
1030
|
+
const output = result.stderr + result.stdout
|
|
1031
|
+
const isSuccess = output.includes('Added Environment Variable')
|
|
1032
|
+
|
|
1033
|
+
if (!isSuccess) {
|
|
1034
|
+
const errorMsg = output.trim() || 'Failed to add variable after removal'
|
|
1035
|
+
return { success: false, error: errorMsg }
|
|
1036
|
+
}
|
|
1037
|
+
|
|
1038
|
+
return { success: true, action: 'updated' }
|
|
1039
|
+
|
|
1040
|
+
} catch (error) {
|
|
1041
|
+
return { success: false, error: error.message || 'Update failed' }
|
|
1042
|
+
}
|
|
1043
|
+
}
|
|
1044
|
+
|
|
1045
|
+
async function uploadVariables(projectConfig, customEnvironmentSlug = null, diffResult = null) {
|
|
1046
|
+
// If diffResult provided, only upload changed variables (new + modified)
|
|
1047
|
+
let varsToUpload = []
|
|
1048
|
+
|
|
1049
|
+
if (diffResult) {
|
|
1050
|
+
// Upload only new and modified variables
|
|
1051
|
+
varsToUpload = [
|
|
1052
|
+
...diffResult.newVars.map(v => ({ key: v.key, value: v.value, action: 'add' })),
|
|
1053
|
+
...diffResult.modifiedVars.map(v => ({ key: v.key, value: v.new, action: 'update' }))
|
|
1054
|
+
]
|
|
1055
|
+
} else {
|
|
1056
|
+
// Fallback: upload all variables from merged file
|
|
1057
|
+
const envFilePath = projectConfig.mergedEnvFile || join(projectRoot, '.env.production')
|
|
1058
|
+
const allVars = parseEnvFileForUpload(envFilePath)
|
|
1059
|
+
varsToUpload = allVars.map(v => ({ key: v.key, value: v.value, action: 'add' }))
|
|
1060
|
+
}
|
|
1061
|
+
|
|
1062
|
+
if (varsToUpload.length === 0) {
|
|
1063
|
+
console.error(' ❌ No variables to upload')
|
|
1064
|
+
return false
|
|
1065
|
+
}
|
|
1066
|
+
|
|
1067
|
+
// Validate production-ready variables
|
|
1068
|
+
const { critical, warnings } = validateProductionVars(varsToUpload)
|
|
1069
|
+
|
|
1070
|
+
// Show critical issues - require confirmation
|
|
1071
|
+
if (critical.length > 0) {
|
|
1072
|
+
console.log('\n🔴 CRITICAL ISSUES DETECTED:\n')
|
|
1073
|
+
critical.forEach(w => console.log(` • ${w.key}: ${w.issue}`))
|
|
1074
|
+
console.log('\n These variables will likely break your deployment!\n')
|
|
1075
|
+
|
|
1076
|
+
const shouldContinue = await confirm(' Continue with upload anyway')
|
|
1077
|
+
if (!shouldContinue) {
|
|
1078
|
+
console.log('\n ❌ Upload cancelled. Fix the critical issues and try again.\n')
|
|
1079
|
+
process.exit(0)
|
|
1080
|
+
}
|
|
1081
|
+
}
|
|
1082
|
+
|
|
1083
|
+
// Show informational warnings - don't block
|
|
1084
|
+
if (warnings.length > 0) {
|
|
1085
|
+
console.log('\n💡 Informational warnings:\n')
|
|
1086
|
+
warnings.forEach(w => console.log(` • ${w.key}: ${w.issue}`))
|
|
1087
|
+
console.log('\n (These are informational only - continuing with upload)\n')
|
|
1088
|
+
}
|
|
1089
|
+
|
|
1090
|
+
// Log upload destination
|
|
1091
|
+
let destination = `${projectConfig.env} environment`
|
|
1092
|
+
if (customEnvironmentSlug) {
|
|
1093
|
+
destination += ` (custom environment: ${customEnvironmentSlug})`
|
|
1094
|
+
}
|
|
1095
|
+
console.log(`\n📤 Uploading ${varsToUpload.length} variables to ${destination}...\n`)
|
|
1096
|
+
|
|
1097
|
+
let added = 0
|
|
1098
|
+
let updated = 0
|
|
1099
|
+
let failed = 0
|
|
1100
|
+
const errors = []
|
|
1101
|
+
|
|
1102
|
+
for (let i = 0; i < varsToUpload.length; i++) {
|
|
1103
|
+
const { key, value, action } = varsToUpload[i]
|
|
1104
|
+
const progress = `[${i + 1}/${varsToUpload.length}]`
|
|
1105
|
+
|
|
1106
|
+
process.stdout.write(` ${progress} ${key}...`)
|
|
1107
|
+
|
|
1108
|
+
// For update action, remove first then add
|
|
1109
|
+
let result
|
|
1110
|
+
if (action === 'update') {
|
|
1111
|
+
result = await updateVariable(key, value, projectConfig, customEnvironmentSlug)
|
|
1112
|
+
} else {
|
|
1113
|
+
result = await uploadVariable(key, value, projectConfig, customEnvironmentSlug)
|
|
1114
|
+
}
|
|
1115
|
+
|
|
1116
|
+
if (result.success) {
|
|
1117
|
+
if (result.action === 'added') {
|
|
1118
|
+
process.stdout.write(`\r ${progress} ✅ ${key} (new)\n`)
|
|
1119
|
+
added++
|
|
1120
|
+
} else {
|
|
1121
|
+
process.stdout.write(`\r ${progress} ✅ ${key} (updated)\n`)
|
|
1122
|
+
updated++
|
|
1123
|
+
}
|
|
1124
|
+
} else {
|
|
1125
|
+
process.stdout.write(`\r ${progress} ❌ ${key} - ${result.error}\n`)
|
|
1126
|
+
failed++
|
|
1127
|
+
errors.push({ key, error: result.error, details: result.details })
|
|
1128
|
+
}
|
|
1129
|
+
|
|
1130
|
+
await new Promise(resolve => setTimeout(resolve, 150))
|
|
1131
|
+
}
|
|
1132
|
+
|
|
1133
|
+
console.log(`\n 📊 Results: ${added} added | ${updated} updated | ${failed} failed\n`)
|
|
1134
|
+
|
|
1135
|
+
if (errors.length > 0) {
|
|
1136
|
+
console.log(' ⚠️ Failed variables:')
|
|
1137
|
+
errors.forEach(({ key, error }) => {
|
|
1138
|
+
console.log(` • ${key}: ${error}`)
|
|
1139
|
+
})
|
|
1140
|
+
console.log('')
|
|
1141
|
+
}
|
|
1142
|
+
|
|
1143
|
+
return failed === 0
|
|
1144
|
+
}
|
|
1145
|
+
|
|
1146
|
+
// ============================================================================
|
|
1147
|
+
// Vercel Validation
|
|
1148
|
+
// ============================================================================
|
|
1149
|
+
|
|
1150
|
+
async function checkVercelCLI() {
|
|
1151
|
+
try {
|
|
1152
|
+
const { stdout } = await execCommand('vercel', ['--version'])
|
|
1153
|
+
console.log(` ✅ Vercel CLI: ${stdout.trim()}`)
|
|
1154
|
+
return true
|
|
1155
|
+
} catch (error) {
|
|
1156
|
+
console.error(' ❌ Vercel CLI not found')
|
|
1157
|
+
console.error(' Install: npm i -g vercel && vercel login\n')
|
|
1158
|
+
process.exit(1)
|
|
1159
|
+
}
|
|
1160
|
+
}
|
|
1161
|
+
|
|
1162
|
+
async function checkVercelAuth() {
|
|
1163
|
+
try {
|
|
1164
|
+
await execCommand('vercel', ['whoami'])
|
|
1165
|
+
console.log(' ✅ Authenticated')
|
|
1166
|
+
return true
|
|
1167
|
+
} catch (error) {
|
|
1168
|
+
console.error(' ❌ Not authenticated')
|
|
1169
|
+
console.error(' Run: vercel login\n')
|
|
1170
|
+
process.exit(1)
|
|
1171
|
+
}
|
|
1172
|
+
}
|
|
1173
|
+
|
|
1174
|
+
async function checkProjectLink(projectConfig) {
|
|
1175
|
+
const vercelDir = join(projectRoot, '.vercel')
|
|
1176
|
+
const projectJsonPath = join(vercelDir, 'project.json')
|
|
1177
|
+
|
|
1178
|
+
if (!existsSync(projectJsonPath)) {
|
|
1179
|
+
console.error(` ❌ Project not linked`)
|
|
1180
|
+
console.error(` Need to link to: ${projectConfig.name}\n`)
|
|
1181
|
+
|
|
1182
|
+
const shouldLink = await confirm(' Link project now')
|
|
1183
|
+
|
|
1184
|
+
if (shouldLink) {
|
|
1185
|
+
return await linkToProject(projectConfig)
|
|
1186
|
+
} else {
|
|
1187
|
+
console.log('\n ❌ Cannot deploy without linking project\n')
|
|
1188
|
+
process.exit(1)
|
|
1189
|
+
}
|
|
1190
|
+
}
|
|
1191
|
+
|
|
1192
|
+
// Check if linked to correct project
|
|
1193
|
+
try {
|
|
1194
|
+
const projectJson = JSON.parse(readFileSync(projectJsonPath, 'utf-8'))
|
|
1195
|
+
const linkedProject = projectJson.projectName || projectJson.name
|
|
1196
|
+
|
|
1197
|
+
if (linkedProject !== projectConfig.name) {
|
|
1198
|
+
console.error(` ❌ Linked to wrong project: ${linkedProject}`)
|
|
1199
|
+
console.error(` Expected: ${projectConfig.name}`)
|
|
1200
|
+
console.error(` Team: ${projectConfig.team}\n`)
|
|
1201
|
+
|
|
1202
|
+
const shouldRelink = await confirm(' Unlink current and link to correct project')
|
|
1203
|
+
|
|
1204
|
+
if (shouldRelink) {
|
|
1205
|
+
console.log('\n 🔄 Unlinking current project...')
|
|
1206
|
+
try {
|
|
1207
|
+
await execCommand('vercel', ['unlink'])
|
|
1208
|
+
console.log(' ✅ Unlinked\n')
|
|
1209
|
+
} catch (error) {
|
|
1210
|
+
console.warn(' ⚠️ Unlink failed, continuing anyway...\n')
|
|
1211
|
+
}
|
|
1212
|
+
|
|
1213
|
+
return await linkToProject(projectConfig)
|
|
1214
|
+
} else {
|
|
1215
|
+
console.log('\n ❌ Cannot deploy to wrong project\n')
|
|
1216
|
+
process.exit(1)
|
|
1217
|
+
}
|
|
1218
|
+
}
|
|
1219
|
+
|
|
1220
|
+
console.log(` ✅ Project linked: ${linkedProject}`)
|
|
1221
|
+
return true
|
|
1222
|
+
} catch (error) {
|
|
1223
|
+
console.error(' ❌ Error reading project configuration:', error.message)
|
|
1224
|
+
process.exit(1)
|
|
1225
|
+
}
|
|
1226
|
+
}
|
|
1227
|
+
|
|
1228
|
+
async function linkToProject(projectConfig) {
|
|
1229
|
+
console.log(` 🔗 Linking to: ${projectConfig.name}`)
|
|
1230
|
+
console.log(` Team: ${projectConfig.team}\n`)
|
|
1231
|
+
|
|
1232
|
+
try {
|
|
1233
|
+
await execCommand('vercel', ['link'], null, { inheritStdio: true })
|
|
1234
|
+
|
|
1235
|
+
// Verify the link was successful
|
|
1236
|
+
const projectJsonPath = join(projectRoot, '.vercel/project.json')
|
|
1237
|
+
if (existsSync(projectJsonPath)) {
|
|
1238
|
+
const projectJson = JSON.parse(readFileSync(projectJsonPath, 'utf-8'))
|
|
1239
|
+
const linkedProject = projectJson.projectName || projectJson.name
|
|
1240
|
+
|
|
1241
|
+
console.log(`\n ✅ Successfully linked to: ${linkedProject}\n`)
|
|
1242
|
+
|
|
1243
|
+
if (linkedProject !== projectConfig.name) {
|
|
1244
|
+
console.error(` ⚠️ Warning: Linked to ${linkedProject} but expected ${projectConfig.name}`)
|
|
1245
|
+
const shouldContinue = await confirm(' Continue anyway')
|
|
1246
|
+
if (!shouldContinue) {
|
|
1247
|
+
process.exit(1)
|
|
1248
|
+
}
|
|
1249
|
+
}
|
|
1250
|
+
|
|
1251
|
+
return true
|
|
1252
|
+
} else {
|
|
1253
|
+
console.error(' ❌ Link failed - no project.json created\n')
|
|
1254
|
+
process.exit(1)
|
|
1255
|
+
}
|
|
1256
|
+
} catch (error) {
|
|
1257
|
+
console.error(' ❌ Failed to link project:', error.message)
|
|
1258
|
+
console.error(' Manual steps:')
|
|
1259
|
+
console.error(' 1. Run: vercel link')
|
|
1260
|
+
console.error(` 2. Select team: ${projectConfig.team}`)
|
|
1261
|
+
console.error(` 3. Select project: ${projectConfig.name}\n`)
|
|
1262
|
+
process.exit(1)
|
|
1263
|
+
}
|
|
1264
|
+
}
|
|
1265
|
+
|
|
1266
|
+
async function pullEnvironmentVariables(projectConfig) {
|
|
1267
|
+
console.log(`\n📥 Pulling current environment variables from Vercel...`)
|
|
1268
|
+
console.log(` Environment: ${projectConfig.env}`)
|
|
1269
|
+
console.log(` Project: ${projectConfig.name}\n`)
|
|
1270
|
+
|
|
1271
|
+
// Use environment-specific filename for clarity: .env.vercel.production, .env.vercel.staging, etc.
|
|
1272
|
+
const vercelEnvFile = `.env.vercel.${projectConfig.env}`
|
|
1273
|
+
|
|
1274
|
+
try {
|
|
1275
|
+
await execCommand('vercel', ['env', 'pull', vercelEnvFile, '--environment', projectConfig.env])
|
|
1276
|
+
|
|
1277
|
+
if (existsSync(join(projectRoot, vercelEnvFile))) {
|
|
1278
|
+
console.log(` ✅ Successfully pulled current Vercel env vars to ${vercelEnvFile}\n`)
|
|
1279
|
+
return true
|
|
1280
|
+
}
|
|
1281
|
+
} catch (error) {
|
|
1282
|
+
console.warn(' ⚠️ No env vars in Vercel yet (first deployment?)\n')
|
|
1283
|
+
}
|
|
1284
|
+
|
|
1285
|
+
return false
|
|
1286
|
+
}
|
|
1287
|
+
|
|
1288
|
+
/**
|
|
1289
|
+
* Compare current Vercel env vars with new local vars and show diff
|
|
1290
|
+
*/
|
|
1291
|
+
function showEnvDiff(projectConfig) {
|
|
1292
|
+
// Use environment-specific Vercel file: .env.vercel.production, .env.vercel.staging, etc.
|
|
1293
|
+
const vercelEnvPath = join(projectRoot, `.env.vercel.${projectConfig.env}`)
|
|
1294
|
+
// Use the merged environment file specific to the target
|
|
1295
|
+
const localEnvPath = projectConfig.mergedEnvFile || join(projectRoot, '.env.production')
|
|
1296
|
+
|
|
1297
|
+
// Parse both files
|
|
1298
|
+
const vercelVars = existsSync(vercelEnvPath) ? parseEnvFile(readFileSync(vercelEnvPath, 'utf-8')) : {}
|
|
1299
|
+
const localVars = existsSync(localEnvPath) ? parseEnvFile(readFileSync(localEnvPath, 'utf-8')) : {}
|
|
1300
|
+
|
|
1301
|
+
const vercelKeys = new Set(Object.keys(vercelVars))
|
|
1302
|
+
const localKeys = new Set(Object.keys(localVars))
|
|
1303
|
+
|
|
1304
|
+
// Categorize changes
|
|
1305
|
+
const newVars = []
|
|
1306
|
+
const modifiedVars = []
|
|
1307
|
+
const unchangedVars = []
|
|
1308
|
+
const deletedVars = []
|
|
1309
|
+
|
|
1310
|
+
// Check local vars
|
|
1311
|
+
for (const key of localKeys) {
|
|
1312
|
+
if (!vercelKeys.has(key)) {
|
|
1313
|
+
newVars.push({ key, value: localVars[key] })
|
|
1314
|
+
} else {
|
|
1315
|
+
const oldVal = vercelVars[key]
|
|
1316
|
+
const newVal = localVars[key]
|
|
1317
|
+
const oldNormalized = normalizeValue(oldVal)
|
|
1318
|
+
const newNormalized = normalizeValue(newVal)
|
|
1319
|
+
|
|
1320
|
+
if (oldVal !== newVal) {
|
|
1321
|
+
// Check if only formatting differs (quotes)
|
|
1322
|
+
const isFormatOnly = oldNormalized === newNormalized
|
|
1323
|
+
modifiedVars.push({
|
|
1324
|
+
key,
|
|
1325
|
+
old: oldVal,
|
|
1326
|
+
new: newVal,
|
|
1327
|
+
formatOnly: isFormatOnly
|
|
1328
|
+
})
|
|
1329
|
+
} else {
|
|
1330
|
+
unchangedVars.push(key)
|
|
1331
|
+
}
|
|
1332
|
+
}
|
|
1333
|
+
}
|
|
1334
|
+
|
|
1335
|
+
// Check for deleted vars (filter out Vercel system variables)
|
|
1336
|
+
const systemVarPatterns = [/^VERCEL_/, /^TURBO_/, /^NX_/]
|
|
1337
|
+
for (const key of vercelKeys) {
|
|
1338
|
+
if (!localKeys.has(key)) {
|
|
1339
|
+
// Skip system variables
|
|
1340
|
+
const isSystemVar = systemVarPatterns.some(pattern => pattern.test(key))
|
|
1341
|
+
if (!isSystemVar) {
|
|
1342
|
+
deletedVars.push(key)
|
|
1343
|
+
}
|
|
1344
|
+
}
|
|
1345
|
+
}
|
|
1346
|
+
|
|
1347
|
+
// Display diff
|
|
1348
|
+
console.log('\n' + '=' .repeat(70))
|
|
1349
|
+
console.log('📊 Environment Variables Diff')
|
|
1350
|
+
console.log('=' .repeat(70))
|
|
1351
|
+
|
|
1352
|
+
if (newVars.length > 0) {
|
|
1353
|
+
console.log(`\n✅ New variables (${newVars.length}):\n`)
|
|
1354
|
+
newVars.forEach(({ key, value }) => {
|
|
1355
|
+
const isSensitive = SENSITIVE_PATTERNS.some(pattern => pattern.test(key)) &&
|
|
1356
|
+
!PUBLIC_EXCEPTIONS.some(pattern => pattern.test(key))
|
|
1357
|
+
const displayValue = isSensitive
|
|
1358
|
+
? value.substring(0, 8) + '***' + value.substring(value.length - 4)
|
|
1359
|
+
: value.length > 50 ? value.substring(0, 47) + '...' : value
|
|
1360
|
+
console.log(` + ${key} = ${displayValue}`)
|
|
1361
|
+
})
|
|
1362
|
+
}
|
|
1363
|
+
|
|
1364
|
+
if (modifiedVars.length > 0) {
|
|
1365
|
+
// Separate format-only changes from real changes
|
|
1366
|
+
const realChanges = modifiedVars.filter(v => !v.formatOnly)
|
|
1367
|
+
const formatChanges = modifiedVars.filter(v => v.formatOnly)
|
|
1368
|
+
|
|
1369
|
+
if (realChanges.length > 0) {
|
|
1370
|
+
console.log(`\n🔄 Modified variables (${realChanges.length}):\n`)
|
|
1371
|
+
realChanges.forEach(({ key, old, new: newVal }) => {
|
|
1372
|
+
const isSensitive = SENSITIVE_PATTERNS.some(pattern => pattern.test(key)) &&
|
|
1373
|
+
!PUBLIC_EXCEPTIONS.some(pattern => pattern.test(key))
|
|
1374
|
+
if (isSensitive) {
|
|
1375
|
+
console.log(` ~ ${key}`)
|
|
1376
|
+
console.log(` - Old: ${old.substring(0, 8)}***${old.substring(old.length - 4)}`)
|
|
1377
|
+
console.log(` + New: ${newVal.substring(0, 8)}***${newVal.substring(newVal.length - 4)}`)
|
|
1378
|
+
} else {
|
|
1379
|
+
const displayOld = old.length > 40 ? old.substring(0, 37) + '...' : old
|
|
1380
|
+
const displayNew = newVal.length > 40 ? newVal.substring(0, 37) + '...' : newVal
|
|
1381
|
+
console.log(` ~ ${key}`)
|
|
1382
|
+
console.log(` - Old: ${displayOld}`)
|
|
1383
|
+
console.log(` + New: ${displayNew}`)
|
|
1384
|
+
}
|
|
1385
|
+
})
|
|
1386
|
+
}
|
|
1387
|
+
|
|
1388
|
+
// Only show format corrections if there are also real changes
|
|
1389
|
+
// (otherwise it's just noise from Vercel CLI's quote-adding behavior)
|
|
1390
|
+
if (formatChanges.length > 0 && realChanges.length > 0) {
|
|
1391
|
+
console.log(`\n🔧 Format corrections: ${formatChanges.length} variables with quote wrapping differences\n`)
|
|
1392
|
+
|
|
1393
|
+
// Show one example to illustrate the problem
|
|
1394
|
+
const example = formatChanges[0]
|
|
1395
|
+
const isSensitive = SENSITIVE_PATTERNS.some(pattern => pattern.test(example.key)) &&
|
|
1396
|
+
!PUBLIC_EXCEPTIONS.some(pattern => pattern.test(example.key))
|
|
1397
|
+
|
|
1398
|
+
console.log(` Example: ${example.key}`)
|
|
1399
|
+
if (isSensitive) {
|
|
1400
|
+
console.log(` Vercel: ${example.old.substring(0, 12)}***${example.old.substring(example.old.length - 4)}`)
|
|
1401
|
+
console.log(` Local: ${example.new.substring(0, 12)}***${example.new.substring(example.new.length - 4)}`)
|
|
1402
|
+
} else {
|
|
1403
|
+
const displayOld = example.old.length > 45 ? example.old.substring(0, 42) + '...' : example.old
|
|
1404
|
+
const displayNew = example.new.length > 45 ? example.new.substring(0, 42) + '...' : example.new
|
|
1405
|
+
console.log(` Vercel: ${displayOld}`)
|
|
1406
|
+
console.log(` Local: ${displayNew}`)
|
|
1407
|
+
}
|
|
1408
|
+
|
|
1409
|
+
if (formatChanges.length > 1) {
|
|
1410
|
+
const otherVars = formatChanges.slice(1, 4).map(v => v.key).join(', ')
|
|
1411
|
+
const remaining = formatChanges.length - 4
|
|
1412
|
+
console.log(` Also: ${otherVars}${remaining > 0 ? `, +${remaining} more` : ''}`)
|
|
1413
|
+
}
|
|
1414
|
+
console.log('')
|
|
1415
|
+
}
|
|
1416
|
+
}
|
|
1417
|
+
|
|
1418
|
+
if (deletedVars.length > 0) {
|
|
1419
|
+
console.log(`\n⚠️ Variables only in Vercel (${deletedVars.length}) - will remain unchanged:\n`)
|
|
1420
|
+
deletedVars.forEach(key => {
|
|
1421
|
+
console.log(` ! ${key}`)
|
|
1422
|
+
})
|
|
1423
|
+
console.log(`\n 💡 Note: These won't be deleted, just not managed locally`)
|
|
1424
|
+
}
|
|
1425
|
+
|
|
1426
|
+
if (unchangedVars.length > 0) {
|
|
1427
|
+
console.log(`\n💡 Unchanged variables: ${unchangedVars.length}`)
|
|
1428
|
+
}
|
|
1429
|
+
|
|
1430
|
+
console.log('\n' + '=' .repeat(70))
|
|
1431
|
+
|
|
1432
|
+
// Summary
|
|
1433
|
+
const realChanges = modifiedVars.filter(v => !v.formatOnly)
|
|
1434
|
+
const formatChanges = modifiedVars.filter(v => v.formatOnly)
|
|
1435
|
+
const totalChanges = newVars.length + realChanges.length
|
|
1436
|
+
|
|
1437
|
+
// Treat format-only changes as "no changes" when there are no new/modified variables
|
|
1438
|
+
if (totalChanges === 0) {
|
|
1439
|
+
console.log('\n✅ No changes detected - all variables are up to date\n')
|
|
1440
|
+
|
|
1441
|
+
if (formatChanges.length > 0) {
|
|
1442
|
+
console.log(` 💡 Note: ${formatChanges.length} variables have different quote formatting in Vercel,`)
|
|
1443
|
+
console.log(` but values are identical. This is normal - Vercel CLI adds quotes when pulling.\n`)
|
|
1444
|
+
}
|
|
1445
|
+
|
|
1446
|
+
return {
|
|
1447
|
+
hasChanges: false,
|
|
1448
|
+
stats: {
|
|
1449
|
+
new: 0,
|
|
1450
|
+
modified: 0,
|
|
1451
|
+
formatOnly: formatChanges.length,
|
|
1452
|
+
deleted: 0,
|
|
1453
|
+
unchanged: unchangedVars.length
|
|
1454
|
+
},
|
|
1455
|
+
newVars: [],
|
|
1456
|
+
modifiedVars: [],
|
|
1457
|
+
unchangedVars
|
|
1458
|
+
}
|
|
1459
|
+
} else {
|
|
1460
|
+
const parts = []
|
|
1461
|
+
if (newVars.length > 0) parts.push(`${newVars.length} new`)
|
|
1462
|
+
if (realChanges.length > 0) parts.push(`${realChanges.length} modified`)
|
|
1463
|
+
if (formatChanges.length > 0) parts.push(`${formatChanges.length} format fixes`)
|
|
1464
|
+
|
|
1465
|
+
console.log(`\n📊 Summary: ${parts.join(' | ')}\n`)
|
|
1466
|
+
return {
|
|
1467
|
+
hasChanges: true,
|
|
1468
|
+
stats: {
|
|
1469
|
+
new: newVars.length,
|
|
1470
|
+
modified: realChanges.length,
|
|
1471
|
+
formatOnly: formatChanges.length,
|
|
1472
|
+
deleted: deletedVars.length,
|
|
1473
|
+
unchanged: unchangedVars.length
|
|
1474
|
+
},
|
|
1475
|
+
newVars,
|
|
1476
|
+
modifiedVars: realChanges,
|
|
1477
|
+
unchangedVars
|
|
1478
|
+
}
|
|
1479
|
+
}
|
|
1480
|
+
}
|
|
1481
|
+
|
|
1482
|
+
// ============================================================================
|
|
1483
|
+
// Deployment
|
|
1484
|
+
// ============================================================================
|
|
1485
|
+
|
|
1486
|
+
async function deployToVercel(projectConfig) {
|
|
1487
|
+
console.log(`\n🚀 Deploying to Vercel (${projectConfig.env})...\n`)
|
|
1488
|
+
|
|
1489
|
+
try {
|
|
1490
|
+
// Step 1: Deploy with visible output (inheritStdio shows progress)
|
|
1491
|
+
const args = projectConfig.env === 'production' ? ['--prod'] : []
|
|
1492
|
+
await execCommand('vercel', args, null, { inheritStdio: true })
|
|
1493
|
+
|
|
1494
|
+
console.log('\n ✅ Deployment successful!\n')
|
|
1495
|
+
|
|
1496
|
+
// Step 2: Get the most recent deployment URL
|
|
1497
|
+
console.log(' 📋 Retrieving deployment URL...\n')
|
|
1498
|
+
const { stdout } = await execCommand('vercel', ['ls'])
|
|
1499
|
+
|
|
1500
|
+
// Parse text output to find first deployment URL
|
|
1501
|
+
// Format: " 16m https://content-buddy-xyz-the-money-team.vercel.app ● Ready"
|
|
1502
|
+
const lines = stdout.split('\n')
|
|
1503
|
+
const urlLine = lines.find(line => line.includes('https://'))
|
|
1504
|
+
|
|
1505
|
+
if (urlLine) {
|
|
1506
|
+
const urlMatch = urlLine.match(/(https:\/\/[^\s]+)/)
|
|
1507
|
+
if (urlMatch) {
|
|
1508
|
+
const deploymentUrl = urlMatch[1]
|
|
1509
|
+
console.log(` 🔗 Deployment URL: ${deploymentUrl}\n`)
|
|
1510
|
+
return { success: true, url: deploymentUrl }
|
|
1511
|
+
}
|
|
1512
|
+
}
|
|
1513
|
+
|
|
1514
|
+
console.log(' ⚠️ Could not retrieve deployment URL\n')
|
|
1515
|
+
return { success: true, url: null }
|
|
1516
|
+
} catch (error) {
|
|
1517
|
+
console.error('\n ❌ Deployment failed\n')
|
|
1518
|
+
return { success: false, url: null }
|
|
1519
|
+
}
|
|
1520
|
+
}
|
|
1521
|
+
|
|
1522
|
+
/**
|
|
1523
|
+
* Assign a custom domain alias to a deployment
|
|
1524
|
+
* Only used when --deploy flag is provided (manual deployment)
|
|
1525
|
+
*/
|
|
1526
|
+
async function assignAlias(deploymentUrl, domain) {
|
|
1527
|
+
console.log(`\n🔗 Assigning custom domain to deployment...`)
|
|
1528
|
+
console.log(` Deployment: ${deploymentUrl}`)
|
|
1529
|
+
console.log(` Domain: ${domain}\n`)
|
|
1530
|
+
|
|
1531
|
+
try {
|
|
1532
|
+
await execCommand('vercel', ['alias', 'set', deploymentUrl, domain])
|
|
1533
|
+
console.log(` ✅ Successfully assigned: ${domain} → ${deploymentUrl}\n`)
|
|
1534
|
+
return true
|
|
1535
|
+
} catch (error) {
|
|
1536
|
+
console.error(` ❌ Failed to assign alias: ${error.message}\n`)
|
|
1537
|
+
return false
|
|
1538
|
+
}
|
|
1539
|
+
}
|
|
1540
|
+
|
|
1541
|
+
// ============================================================================
|
|
1542
|
+
// Main Workflow
|
|
1543
|
+
// ============================================================================
|
|
1544
|
+
|
|
1545
|
+
async function main() {
|
|
1546
|
+
const args = process.argv.slice(2)
|
|
1547
|
+
const hasProd = args.includes('--prod')
|
|
1548
|
+
const hasStaging = args.includes('--staging')
|
|
1549
|
+
const skipEnv = args.includes('--skip-env')
|
|
1550
|
+
const shouldDeploy = args.includes('--deploy')
|
|
1551
|
+
|
|
1552
|
+
// Validate required flag
|
|
1553
|
+
if (!hasProd && !hasStaging) {
|
|
1554
|
+
console.log('=' .repeat(70))
|
|
1555
|
+
console.log('🚀 Vercel Deployment Script')
|
|
1556
|
+
console.log('=' .repeat(70))
|
|
1557
|
+
console.error('\n❌ Error: You must specify a deployment target')
|
|
1558
|
+
console.log('\nUsage:')
|
|
1559
|
+
console.log(' pnpm vercel:deploy --staging # Setup only (recommended)')
|
|
1560
|
+
console.log(' pnpm vercel:deploy --staging --deploy # Setup + manual deploy')
|
|
1561
|
+
console.log(' pnpm vercel:deploy --prod # Deploy to production')
|
|
1562
|
+
console.log(' pnpm vercel:deploy --prod --skip-env # Deploy without updating env vars')
|
|
1563
|
+
console.log('\n' + '=' .repeat(70))
|
|
1564
|
+
process.exit(1)
|
|
1565
|
+
}
|
|
1566
|
+
|
|
1567
|
+
// Prevent conflicting flags
|
|
1568
|
+
if (hasProd && hasStaging) {
|
|
1569
|
+
console.error('\n❌ Error: Cannot specify both --prod and --staging')
|
|
1570
|
+
process.exit(1)
|
|
1571
|
+
}
|
|
1572
|
+
|
|
1573
|
+
// Normalize target names to match Vercel environment names for consistency
|
|
1574
|
+
const target = hasProd ? 'production' : 'staging'
|
|
1575
|
+
const projectConfig = getProjectConfig(target)
|
|
1576
|
+
|
|
1577
|
+
console.log('=' .repeat(70))
|
|
1578
|
+
console.log('🚀 Vercel Deployment Workflow')
|
|
1579
|
+
console.log('=' .repeat(70))
|
|
1580
|
+
console.log(` Target: ${target.toUpperCase()}`)
|
|
1581
|
+
console.log(` Project: ${projectConfig.name}`)
|
|
1582
|
+
console.log(` Environment: ${target === 'staging' ? 'staging (detecting custom environment...)' : projectConfig.env}`)
|
|
1583
|
+
console.log(` URL: ${projectConfig.url}`)
|
|
1584
|
+
console.log('=' .repeat(70))
|
|
1585
|
+
|
|
1586
|
+
// Step 1: Merge local env files
|
|
1587
|
+
const mergeResult = mergeEnvironmentVariables(target)
|
|
1588
|
+
projectConfig.mergedEnvFile = mergeResult.outputPath
|
|
1589
|
+
|
|
1590
|
+
// Step 2: Validate Vercel setup
|
|
1591
|
+
console.log('\n📋 Validating Vercel setup...\n')
|
|
1592
|
+
await checkVercelCLI()
|
|
1593
|
+
await checkVercelAuth()
|
|
1594
|
+
await checkProjectLink(projectConfig)
|
|
1595
|
+
|
|
1596
|
+
// Step 2.5: For staging, ensure custom environment and domain are configured
|
|
1597
|
+
let customEnvironment = null
|
|
1598
|
+
if (target === 'staging') {
|
|
1599
|
+
// First, ensure the custom environment exists
|
|
1600
|
+
customEnvironment = await ensureCustomEnvironment(projectConfig)
|
|
1601
|
+
|
|
1602
|
+
// CRITICAL: Update projectConfig to use the custom environment slug
|
|
1603
|
+
// This ensures all subsequent operations (env pull, upload, deploy) target the correct environment
|
|
1604
|
+
if (customEnvironment) {
|
|
1605
|
+
projectConfig.env = customEnvironment.slug // "staging" instead of "preview"
|
|
1606
|
+
projectConfig.isCustomEnvironment = true
|
|
1607
|
+
console.log(` 🎯 Using custom environment: ${customEnvironment.slug}\n`)
|
|
1608
|
+
}
|
|
1609
|
+
|
|
1610
|
+
// Then, configure the domain with the custom environment
|
|
1611
|
+
await ensureStagingDomain(projectConfig, customEnvironment)
|
|
1612
|
+
|
|
1613
|
+
// Log completion of custom environment setup
|
|
1614
|
+
console.log(' ✅ Custom environment setup complete\n')
|
|
1615
|
+
}
|
|
1616
|
+
|
|
1617
|
+
// Step 3: Pull current Vercel env vars (for comparison)
|
|
1618
|
+
console.log('=' .repeat(70))
|
|
1619
|
+
console.log('📋 Environment Variables Configuration')
|
|
1620
|
+
console.log('=' .repeat(70))
|
|
1621
|
+
await pullEnvironmentVariables(projectConfig)
|
|
1622
|
+
|
|
1623
|
+
// Step 4: Upload merged env vars (with confirmation)
|
|
1624
|
+
console.log('\n' + '=' .repeat(70))
|
|
1625
|
+
console.log('📤 Step 4: Environment Variable Upload')
|
|
1626
|
+
console.log('=' .repeat(70))
|
|
1627
|
+
|
|
1628
|
+
let uploadSuccess = true
|
|
1629
|
+
|
|
1630
|
+
if (skipEnv) {
|
|
1631
|
+
console.log('\n⏭️ Skipping environment variable update (--skip-env flag)\n')
|
|
1632
|
+
} else {
|
|
1633
|
+
// Show diff between current Vercel vars and new local vars
|
|
1634
|
+
console.log('\n📊 Analyzing environment variable changes...\n')
|
|
1635
|
+
const diffResult = showEnvDiff(projectConfig)
|
|
1636
|
+
|
|
1637
|
+
// If no changes, skip the upload automatically
|
|
1638
|
+
if (!diffResult.hasChanges) {
|
|
1639
|
+
console.log('\n✅ All environment variables are already up to date in Vercel')
|
|
1640
|
+
console.log(' ⏭️ Skipping upload step (no changes to push)\n')
|
|
1641
|
+
} else {
|
|
1642
|
+
// Ask user if they want to update env vars
|
|
1643
|
+
console.log('=' .repeat(70))
|
|
1644
|
+
console.log('📋 Confirm Environment Variable Update')
|
|
1645
|
+
console.log('=' .repeat(70))
|
|
1646
|
+
console.log(`\n Target: ${projectConfig.name} (${projectConfig.env})`)
|
|
1647
|
+
|
|
1648
|
+
const changeParts = []
|
|
1649
|
+
if (diffResult.stats.new > 0) changeParts.push(`${diffResult.stats.new} new`)
|
|
1650
|
+
if (diffResult.stats.modified > 0) changeParts.push(`${diffResult.stats.modified} modified`)
|
|
1651
|
+
if (diffResult.stats.formatOnly > 0) changeParts.push(`${diffResult.stats.formatOnly} format fixes`)
|
|
1652
|
+
|
|
1653
|
+
console.log(` Changes: ${changeParts.join(', ')}`)
|
|
1654
|
+
|
|
1655
|
+
if (diffResult.stats.modified > 0) {
|
|
1656
|
+
console.log(`\n ⚠️ Warning: This will overwrite ${diffResult.stats.modified} existing variable(s) on Vercel`)
|
|
1657
|
+
}
|
|
1658
|
+
if (diffResult.stats.formatOnly > 0) {
|
|
1659
|
+
console.log(` 💡 Note: ${diffResult.stats.formatOnly} variables have same value but incorrect quote format`)
|
|
1660
|
+
}
|
|
1661
|
+
console.log('')
|
|
1662
|
+
|
|
1663
|
+
const shouldUpdateEnv = await confirm(' Proceed with environment variable update')
|
|
1664
|
+
|
|
1665
|
+
if (shouldUpdateEnv) {
|
|
1666
|
+
// Pass custom environment slug if deploying to staging
|
|
1667
|
+
const customEnvSlug = customEnvironment ? customEnvironment.slug : null
|
|
1668
|
+
uploadSuccess = await uploadVariables(projectConfig, customEnvSlug, diffResult)
|
|
1669
|
+
|
|
1670
|
+
if (!uploadSuccess) {
|
|
1671
|
+
const shouldContinue = await confirm('\n Some uploads failed. Continue with deployment')
|
|
1672
|
+
if (!shouldContinue) {
|
|
1673
|
+
console.log('\n ❌ Deployment cancelled\n')
|
|
1674
|
+
process.exit(1)
|
|
1675
|
+
}
|
|
1676
|
+
}
|
|
1677
|
+
} else {
|
|
1678
|
+
console.log('\n ⏭️ Skipping environment variable update')
|
|
1679
|
+
console.log(' 📝 Note: Deployment will use existing Vercel env vars\n')
|
|
1680
|
+
}
|
|
1681
|
+
}
|
|
1682
|
+
}
|
|
1683
|
+
|
|
1684
|
+
// Step 5: Deploy (optional with --deploy flag)
|
|
1685
|
+
if (shouldDeploy) {
|
|
1686
|
+
console.log('\n' + '=' .repeat(70))
|
|
1687
|
+
console.log('🚀 Step 5: Vercel Deployment')
|
|
1688
|
+
console.log('=' .repeat(70))
|
|
1689
|
+
const shouldProceed = await confirm(' Proceed with deployment')
|
|
1690
|
+
|
|
1691
|
+
if (!shouldProceed) {
|
|
1692
|
+
console.log('\n ❌ Deployment cancelled\n')
|
|
1693
|
+
process.exit(0)
|
|
1694
|
+
}
|
|
1695
|
+
|
|
1696
|
+
const deployResult = await deployToVercel(projectConfig)
|
|
1697
|
+
|
|
1698
|
+
if (deployResult.success) {
|
|
1699
|
+
// Step 6: Assign alias for manual deployments
|
|
1700
|
+
let finalUrl = deployResult.url
|
|
1701
|
+
|
|
1702
|
+
if (deployResult.url) {
|
|
1703
|
+
// For staging, use the pre-configured stagingDomain
|
|
1704
|
+
// For production, read from .env.production
|
|
1705
|
+
let customDomain = null
|
|
1706
|
+
|
|
1707
|
+
if (target === 'staging' && projectConfig.stagingDomain) {
|
|
1708
|
+
customDomain = projectConfig.stagingDomain
|
|
1709
|
+
} else {
|
|
1710
|
+
// Read from environment file
|
|
1711
|
+
const envFile = target === 'staging' ? '.env.staging' : '.env.production'
|
|
1712
|
+
const envPath = join(projectRoot, envFile)
|
|
1713
|
+
|
|
1714
|
+
if (existsSync(envPath)) {
|
|
1715
|
+
const envContent = readFileSync(envPath, 'utf-8')
|
|
1716
|
+
const urlMatch = envContent.match(/^NEXT_PUBLIC_APP_URL\s*=\s*['"]?https?:\/\/([^'"\n]+)['"]?/m)
|
|
1717
|
+
if (urlMatch) {
|
|
1718
|
+
customDomain = urlMatch[1].trim()
|
|
1719
|
+
}
|
|
1720
|
+
}
|
|
1721
|
+
}
|
|
1722
|
+
|
|
1723
|
+
if (customDomain) {
|
|
1724
|
+
const aliasSuccess = await assignAlias(deployResult.url, customDomain)
|
|
1725
|
+
|
|
1726
|
+
if (aliasSuccess) {
|
|
1727
|
+
finalUrl = `https://${customDomain}`
|
|
1728
|
+
console.log(` 🌐 Custom domain active: https://${customDomain}\n`)
|
|
1729
|
+
} else {
|
|
1730
|
+
console.log(` ⚠️ Warning: ${target} deployment successful but alias assignment failed`)
|
|
1731
|
+
console.log(` Manual command: vercel alias set ${deployResult.url} ${customDomain}\n`)
|
|
1732
|
+
}
|
|
1733
|
+
} else {
|
|
1734
|
+
if (target === 'staging') {
|
|
1735
|
+
console.log(`\n ⚠️ No staging domain configured`)
|
|
1736
|
+
console.log(` 💡 Add NEXT_PUBLIC_APP_URL to .env.staging for custom domain setup\n`)
|
|
1737
|
+
}
|
|
1738
|
+
}
|
|
1739
|
+
}
|
|
1740
|
+
|
|
1741
|
+
console.log('=' .repeat(70))
|
|
1742
|
+
console.log('🎉 Deployment Complete!')
|
|
1743
|
+
console.log('=' .repeat(70))
|
|
1744
|
+
console.log(`\n Environment: ${target.toUpperCase()}`)
|
|
1745
|
+
console.log(` Project: ${projectConfig.name}`)
|
|
1746
|
+
console.log(` Vercel Dashboard: ${projectConfig.url}`)
|
|
1747
|
+
|
|
1748
|
+
if (finalUrl) {
|
|
1749
|
+
console.log(`\n 🚀 Live URL: ${finalUrl}`)
|
|
1750
|
+
}
|
|
1751
|
+
if (deployResult.url && deployResult.url !== finalUrl) {
|
|
1752
|
+
console.log(` 📋 Deployment URL: ${deployResult.url}`)
|
|
1753
|
+
}
|
|
1754
|
+
console.log('')
|
|
1755
|
+
} else {
|
|
1756
|
+
process.exit(1)
|
|
1757
|
+
}
|
|
1758
|
+
} else {
|
|
1759
|
+
// Setup complete - no deployment
|
|
1760
|
+
console.log('\n' + '=' .repeat(70))
|
|
1761
|
+
console.log('✅ Setup Complete!')
|
|
1762
|
+
console.log('=' .repeat(70))
|
|
1763
|
+
console.log(`\n Environment: ${target.toUpperCase()}`)
|
|
1764
|
+
console.log(` Project: ${projectConfig.name}`)
|
|
1765
|
+
console.log(` Custom Environment: staging (with Branch Tracking)`)
|
|
1766
|
+
if (projectConfig.stagingDomain) {
|
|
1767
|
+
console.log(` Domain: ${projectConfig.stagingDomain}`)
|
|
1768
|
+
}
|
|
1769
|
+
console.log(`\n 💡 Next steps:`)
|
|
1770
|
+
console.log(` 1. git add . && git commit -m "Update staging config"`)
|
|
1771
|
+
console.log(` 2. git push origin staging`)
|
|
1772
|
+
console.log(` 3. Branch Tracking will auto-deploy and assign domain\n`)
|
|
1773
|
+
console.log(` Or run with --deploy flag for manual deployment:\n`)
|
|
1774
|
+
console.log(` pnpm vercel:deploy --staging --deploy\n`)
|
|
1775
|
+
console.log('=' .repeat(70))
|
|
1776
|
+
console.log('')
|
|
1777
|
+
}
|
|
1778
|
+
}
|
|
1779
|
+
|
|
1780
|
+
// ============================================================================
|
|
1781
|
+
// Run
|
|
1782
|
+
// ============================================================================
|
|
1783
|
+
|
|
1784
|
+
main().catch(error => {
|
|
1785
|
+
console.error('❌ Fatal error:', error.message)
|
|
1786
|
+
process.exit(1)
|
|
1787
|
+
})
|