studiocms 0.1.0-beta.7 → 0.1.0-beta.8
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/CHANGELOG.md +473 -0
- package/LICENSE +1 -1
- package/README.md +17 -10
- package/auth.d.ts +405 -0
- package/core.d.ts +225 -0
- package/custom-renderers/index.ts +4 -0
- package/custom-renderers/markdocRenderers/markdocReact-components/MarkDocReactRenderer.tsx +8 -0
- package/custom-renderers/markdocRenderers/markdocReact-components/MarkDocReactWrapper.astro +13 -0
- package/custom-renderers/markdocRenderers/markdocReact.ts +56 -0
- package/dist/cli/cmds/get-turso.d.ts +1 -0
- package/dist/cli/cmds/get-turso.js +10 -0
- package/dist/cli/cmds/init/index.d.ts +4 -0
- package/dist/cli/cmds/init/index.js +52 -0
- package/dist/cli/cmds/init/steps/data/studiocmsEnv.d.ts +3 -0
- package/dist/cli/cmds/init/steps/data/studiocmsEnv.js +71 -0
- package/dist/cli/cmds/init/steps/envBuilder.d.ts +21 -0
- package/dist/cli/cmds/init/steps/envBuilder.js +368 -0
- package/dist/cli/cmds/init/steps/nextSteps.d.ts +2 -0
- package/dist/cli/cmds/init/steps/nextSteps.js +38 -0
- package/dist/cli/cmds/init.d.ts +1 -0
- package/dist/cli/cmds/init.js +4 -0
- package/dist/cli/index.d.ts +1 -0
- package/dist/cli/index.js +9 -0
- package/dist/cli/lib/commander.d.ts +39 -0
- package/dist/cli/lib/commander.js +87 -0
- package/dist/cli/lib/context.d.ts +28 -0
- package/dist/cli/lib/context.js +55 -0
- package/dist/cli/lib/pathUtil.d.ts +5 -0
- package/dist/cli/lib/pathUtil.js +14 -0
- package/dist/cli/lib/runExternal.d.ts +20 -0
- package/dist/cli/lib/runExternal.js +40 -0
- package/dist/cli/lib/seasonal.d.ts +5 -0
- package/dist/cli/lib/seasonal.js +88 -0
- package/dist/cli/lib/utils.d.ts +55 -0
- package/dist/cli/lib/utils.js +310 -0
- package/dist/cli/shared/intro.d.ts +2 -0
- package/dist/cli/shared/intro.js +24 -0
- package/dist/components/DefaultEditor.astro +138 -0
- package/dist/components/FormattedDate.astro +12 -0
- package/dist/components/Generator.astro +7 -0
- package/dist/components/Renderer.astro +13 -0
- package/dist/components/auth/OAuthButton.astro +21 -0
- package/dist/components/auth/OAuthButtonStack.astro +19 -0
- package/dist/components/auth/StaticAuthCheck.astro +20 -0
- package/dist/components/auth/StudioCMSLogoSVG.astro +13 -0
- package/dist/components/auth/oAuthButtonProviders.d.ts +8 -0
- package/dist/components/auth/oAuthButtonProviders.js +35 -0
- package/dist/components/dashboard/AstroCodeDiffsScript.astro +25 -0
- package/dist/components/dashboard/BaseHead.astro +41 -0
- package/dist/components/dashboard/Code.astro +23 -0
- package/dist/components/dashboard/DashboardPageHeader.astro +60 -0
- package/dist/components/dashboard/DoubleSidebar.astro +26 -0
- package/dist/components/dashboard/Footer.astro +16 -0
- package/dist/components/dashboard/MainSidebarContent.astro +124 -0
- package/dist/components/dashboard/PageHeader.astro +52 -0
- package/dist/components/dashboard/SidebarLink.astro +61 -0
- package/dist/components/dashboard/SidebarModals.astro +6 -0
- package/dist/components/dashboard/SidebarPluginLink.astro +45 -0
- package/dist/components/dashboard/SingleSidebar.astro +23 -0
- package/dist/components/dashboard/StudioCMSLogo.astro +12 -0
- package/dist/components/dashboard/ThemeManager.astro +53 -0
- package/dist/components/dashboard/component-scripts/TinyMDE.astro +6 -0
- package/dist/components/dashboard/component-scripts/dateTimeListener.d.ts +1 -0
- package/dist/components/dashboard/component-scripts/dateTimeListener.js +14 -0
- package/dist/components/dashboard/component-scripts/dateWithTimeAndZone.d.ts +1 -0
- package/dist/components/dashboard/component-scripts/dateWithTimeAndZone.js +12 -0
- package/dist/components/dashboard/component-scripts/makeClientRoutable.d.ts +1 -0
- package/dist/components/dashboard/component-scripts/makeClientRoutable.js +9 -0
- package/dist/components/dashboard/component-scripts/timeAgo.d.ts +1 -0
- package/dist/components/dashboard/component-scripts/timeAgo.js +21 -0
- package/dist/components/dashboard/islands/LoginChecker.astro +52 -0
- package/dist/components/dashboard/islands/configuration/ConfigForm.astro +272 -0
- package/dist/components/dashboard/islands/configuration/LightVsDark.astro +67 -0
- package/dist/components/dashboard/islands/content-mgmt/CreateFolder.astro +91 -0
- package/dist/components/dashboard/islands/content-mgmt/CreatePage.astro +332 -0
- package/dist/components/dashboard/islands/content-mgmt/EditFolder.astro +112 -0
- package/dist/components/dashboard/islands/content-mgmt/EditPage.astro +388 -0
- package/dist/components/dashboard/islands/content-mgmt/InnerSidebarElement.astro +230 -0
- package/dist/components/dashboard/islands/content-mgmt/PageHeader.astro +387 -0
- package/dist/components/dashboard/islands/content-mgmt/PageList.astro +49 -0
- package/dist/components/dashboard/islands/content-mgmt/PluginFields.astro +29 -0
- package/dist/components/dashboard/islands/content-mgmt/TreeRenderer.astro +75 -0
- package/dist/components/dashboard/islands/content-mgmt/TreeSidebarFolder.astro +53 -0
- package/dist/components/dashboard/islands/content-mgmt/TreeSidebarLink.astro +51 -0
- package/dist/components/dashboard/islands/content-mgmt/runtime.d.ts +10 -0
- package/dist/components/dashboard/islands/content-mgmt/runtime.js +33 -0
- package/dist/components/dashboard/islands/content-mgmt/shared.d.ts +27 -0
- package/dist/components/dashboard/islands/content-mgmt/shared.js +31 -0
- package/dist/components/dashboard/islands/dashboard/DashboardGrid.astro +39 -0
- package/dist/components/dashboard/islands/dashboard/DashboardGridItem.astro +34 -0
- package/dist/components/dashboard/islands/dashboard/Test.astro +5 -0
- package/dist/components/dashboard/islands/dashboard/UserName.astro +6 -0
- package/dist/components/dashboard/islands/dashboard/shared.d.ts +2 -0
- package/dist/components/dashboard/islands/dashboard/shared.js +0 -0
- package/dist/components/dashboard/islands/plugins/SettingsRenderer.astro +29 -0
- package/dist/components/dashboard/islands/profile/APITokens.astro +267 -0
- package/dist/components/dashboard/islands/profile/BasicInfo.astro +107 -0
- package/dist/components/dashboard/islands/profile/BasicInfoFallback.astro +43 -0
- package/dist/components/dashboard/islands/profile/SocialSignin.astro +151 -0
- package/dist/components/dashboard/islands/profile/SocialSigninFallback.astro +83 -0
- package/dist/components/dashboard/islands/profile/UpdatePassword.astro +137 -0
- package/dist/components/dashboard/islands/profile/UpdatePasswordFallback.astro +47 -0
- package/dist/components/dashboard/islands/profile/oAuthButtonProviders.d.ts +8 -0
- package/dist/components/dashboard/islands/profile/oAuthButtonProviders.js +35 -0
- package/dist/components/dashboard/islands/sidebar/Admin.astro +103 -0
- package/dist/components/dashboard/islands/sidebar/Editor.astro +18 -0
- package/dist/components/dashboard/islands/sidebar/UserAccount.astro +23 -0
- package/dist/components/dashboard/islands/sidebar/VersionCheck.astro +127 -0
- package/dist/components/dashboard/islands/sidebar/VersionCheckChangelog.astro +107 -0
- package/dist/components/dashboard/islands/user-mgmt/InnerSidebarElement.astro +298 -0
- package/dist/components/dashboard/islands/user-mgmt/RankCheck.astro +49 -0
- package/dist/components/dashboard/islands/user-mgmt/SocialSignin.astro +88 -0
- package/dist/components/dashboard/islands/user-mgmt/UserListItem.astro +60 -0
- package/dist/components/dashboard/sidebar-modals/UserManagementModals.astro +103 -0
- package/dist/components/dashboard/sidebar-modals/VersionModal.astro +267 -0
- package/dist/components/dashboard/sidebarConfig.d.ts +31 -0
- package/dist/components/dashboard/sidebarConfig.js +90 -0
- package/dist/components/default-grid-items/Recently-created-pages.astro +91 -0
- package/dist/components/default-grid-items/Recently-signed-up.astro +71 -0
- package/dist/components/default-grid-items/Recently-updated-pages.astro +96 -0
- package/dist/components/default-grid-items/Totals.astro +107 -0
- package/dist/components/default-grid-items/utils.d.ts +17 -0
- package/dist/components/default-grid-items/utils.js +26 -0
- package/dist/components/image/CustomImage.astro +90 -0
- package/dist/components/user-quick-tools.d.ts +42 -0
- package/dist/components/user-quick-tools.js +312 -0
- package/dist/config.d.ts +3 -0
- package/dist/config.js +4 -0
- package/dist/consts.d.ts +61 -0
- package/dist/consts.js +39 -0
- package/dist/db/config.d.ts +4 -0
- package/dist/db/config.js +6 -0
- package/dist/db/tables.js +168 -0
- package/dist/errors.d.ts +19 -0
- package/dist/errors.js +11 -0
- package/dist/index.d.ts +152 -0
- package/dist/index.js +1177 -0
- package/dist/layouts/auth/AuthLayout.astro +74 -0
- package/dist/layouts/auth/FallbackCanvas.astro +123 -0
- package/dist/layouts/auth/ThemeManager.astro +53 -0
- package/dist/layouts/auth/ThreeCanvasLoader.astro +18 -0
- package/dist/layouts/dashboard/Layout.astro +64 -0
- package/dist/lib/auth/encryption.d.ts +30 -0
- package/dist/lib/auth/encryption.js +39 -0
- package/dist/lib/auth/password.d.ts +27 -0
- package/dist/lib/auth/password.js +42 -0
- package/dist/lib/auth/rate-limit.d.ts +136 -0
- package/dist/lib/auth/rate-limit.js +214 -0
- package/dist/lib/auth/session.d.ts +85 -0
- package/dist/lib/auth/session.js +93 -0
- package/dist/lib/auth/types.d.ts +83 -0
- package/dist/lib/auth/types.js +0 -0
- package/dist/lib/auth/user.d.ts +148 -0
- package/dist/lib/auth/user.js +133 -0
- package/dist/lib/dashboardGrid.d.ts +119 -0
- package/dist/lib/dashboardGrid.js +0 -0
- package/dist/lib/dynamic-sitemap/index.d.ts +42 -0
- package/dist/lib/dynamic-sitemap/index.js +45 -0
- package/dist/lib/dynamic-sitemap/sitemap-index.xml.d.ts +8 -0
- package/dist/lib/dynamic-sitemap/sitemap-index.xml.js +20 -0
- package/dist/lib/dynamic-sitemap/sitemap-index.xml.ts +45 -0
- package/dist/lib/head.d.ts +9 -0
- package/dist/lib/head.js +65 -0
- package/dist/lib/headDefaults.d.ts +18 -0
- package/dist/lib/headDefaults.js +75 -0
- package/dist/lib/i18n/LanguageSelector.astro +103 -0
- package/dist/lib/i18n/config.d.ts +16 -0
- package/dist/lib/i18n/config.js +8 -0
- package/dist/lib/i18n/index.d.ts +228 -0
- package/dist/lib/i18n/index.js +63 -0
- package/dist/lib/i18n/translations/de.json +43 -0
- package/dist/lib/i18n/translations/en-us.json +63 -0
- package/dist/lib/index.d.ts +7 -0
- package/dist/lib/index.js +7 -0
- package/dist/lib/jsonUtils.d.ts +2 -0
- package/dist/lib/jsonUtils.js +11 -0
- package/dist/lib/makeAPIRoute.d.ts +45 -0
- package/dist/lib/makeAPIRoute.js +16 -0
- package/dist/lib/makePublicRoute.d.ts +7 -0
- package/dist/lib/makePublicRoute.js +6 -0
- package/dist/lib/pathGenerators.d.ts +20 -0
- package/dist/lib/pathGenerators.js +66 -0
- package/dist/lib/plugins/dashboard-pages.d.ts +71 -0
- package/dist/lib/plugins/dashboard-pages.js +11 -0
- package/dist/lib/plugins/frontend-navigation.d.ts +18 -0
- package/dist/lib/plugins/frontend-navigation.js +39 -0
- package/dist/lib/plugins/index.d.ts +2 -0
- package/dist/lib/plugins/index.js +2 -0
- package/dist/lib/removeLeadingTrailingSlashes.d.ts +7 -0
- package/dist/lib/removeLeadingTrailingSlashes.js +13 -0
- package/dist/lib/renderer/astro-remark.d.ts +13 -0
- package/dist/lib/renderer/astro-remark.js +11 -0
- package/dist/lib/renderer/contentRenderer.d.ts +13 -0
- package/dist/lib/renderer/contentRenderer.js +31 -0
- package/dist/lib/renderer/errors.d.ts +5 -0
- package/dist/lib/renderer/errors.js +25 -0
- package/dist/lib/renderer/markdoc-renderers/markdocHTML.d.ts +3 -0
- package/dist/lib/renderer/markdoc-renderers/markdocHTML.js +14 -0
- package/dist/lib/renderer/markdoc-renderers/markdocReactStatic.d.ts +3 -0
- package/dist/lib/renderer/markdoc-renderers/markdocReactStatic.js +14 -0
- package/dist/lib/renderer/markdoc.d.ts +11 -0
- package/dist/lib/renderer/markdoc.js +28 -0
- package/dist/lib/renderer/mdx.d.ts +10 -0
- package/dist/lib/renderer/mdx.js +37 -0
- package/dist/lib/renderer/runtime.d.ts +8 -0
- package/dist/lib/renderer/runtime.js +30 -0
- package/dist/lib/renderer/shared.d.ts +15 -0
- package/dist/lib/renderer/shared.js +13 -0
- package/dist/lib/renderer/studiocms.d.ts +11 -0
- package/dist/lib/renderer/studiocms.js +22 -0
- package/dist/lib/renderer/types.d.ts +12 -0
- package/dist/lib/renderer/types.js +0 -0
- package/dist/lib/robots/core.d.ts +24 -0
- package/dist/lib/robots/core.js +187 -0
- package/dist/lib/robots/index.d.ts +11 -0
- package/dist/lib/robots/index.js +47 -0
- package/dist/lib/robots/types.d.ts +185 -0
- package/dist/lib/robots/types.js +0 -0
- package/dist/lib/robots/utils.d.ts +22 -0
- package/dist/lib/robots/utils.js +22 -0
- package/dist/lib/routeMap.d.ts +257 -0
- package/dist/lib/routeMap.js +249 -0
- package/dist/lib/urlGen.d.ts +11 -0
- package/dist/lib/urlGen.js +26 -0
- package/dist/lib/webVitals/checkForWebVitalsPlugin.d.ts +18 -0
- package/dist/lib/webVitals/checkForWebVitalsPlugin.js +82 -0
- package/dist/lib/webVitals/consts.d.ts +240 -0
- package/dist/lib/webVitals/consts.js +40 -0
- package/dist/lib/webVitals/dashboard-grid-items/CoreVitals.astro +66 -0
- package/dist/lib/webVitals/dashboard-grid-items/MetricCard.astro +24 -0
- package/dist/lib/webVitals/dashboard-grid-items/SummaryCard.astro +56 -0
- package/dist/lib/webVitals/dashboard-grid-items/metric.css +103 -0
- package/dist/lib/webVitals/dashboard-grid-items/shared.d.ts +29 -0
- package/dist/lib/webVitals/dashboard-grid-items/shared.js +35 -0
- package/dist/lib/webVitals/pages/analytics/body.astro +186 -0
- package/dist/lib/webVitals/pages/analytics/header.astro +42 -0
- package/dist/lib/webVitals/schemas.d.ts +78 -0
- package/dist/lib/webVitals/schemas.js +37 -0
- package/dist/lib/webVitals/types.d.ts +156 -0
- package/dist/lib/webVitals/types.js +0 -0
- package/dist/lib/webVitals/utils/buildDataObject.d.ts +8 -0
- package/dist/lib/webVitals/utils/buildDataObject.js +28 -0
- package/dist/lib/webVitals/utils/buildPageRouteDataObject.d.ts +15 -0
- package/dist/lib/webVitals/utils/buildPageRouteDataObject.js +70 -0
- package/dist/lib/webVitals/utils/buildPerPageDataObject.d.ts +23 -0
- package/dist/lib/webVitals/utils/buildPerPageDataObject.js +209 -0
- package/dist/lib/webVitals/utils/checkDate.d.ts +5 -0
- package/dist/lib/webVitals/utils/checkDate.js +19 -0
- package/dist/lib/webVitals/utils/webVitalsUtils.d.ts +24 -0
- package/dist/lib/webVitals/utils/webVitalsUtils.js +234 -0
- package/dist/lib/webVitals/webVital.d.ts +20 -0
- package/dist/lib/webVitals/webVital.js +40 -0
- package/dist/lib/webVitals/webVitalsRouteSummary.d.ts +19 -0
- package/dist/lib/webVitals/webVitalsRouteSummary.js +59 -0
- package/dist/lib/webVitals/webVitalsSummary.d.ts +19 -0
- package/dist/lib/webVitals/webVitalsSummary.js +49 -0
- package/dist/plugins.d.ts +2 -0
- package/dist/plugins.js +6 -0
- package/dist/routes/api/render.astro +25 -0
- package/dist/routes/auth/api/auth0/callback.d.ts +4 -0
- package/dist/routes/auth/api/auth0/callback.js +117 -0
- package/dist/routes/auth/api/auth0/index.d.ts +4 -0
- package/dist/routes/auth/api/auth0/index.js +36 -0
- package/dist/routes/auth/api/auth0/shared.d.ts +13 -0
- package/dist/routes/auth/api/auth0/shared.js +24 -0
- package/dist/routes/auth/api/discord/callback.d.ts +4 -0
- package/dist/routes/auth/api/discord/callback.js +112 -0
- package/dist/routes/auth/api/discord/index.d.ts +4 -0
- package/dist/routes/auth/api/discord/index.js +36 -0
- package/dist/routes/auth/api/discord/shared.d.ts +12 -0
- package/dist/routes/auth/api/discord/shared.js +17 -0
- package/dist/routes/auth/api/github/callback.d.ts +4 -0
- package/dist/routes/auth/api/github/callback.js +112 -0
- package/dist/routes/auth/api/github/index.d.ts +4 -0
- package/dist/routes/auth/api/github/index.js +36 -0
- package/dist/routes/auth/api/github/shared.d.ts +13 -0
- package/dist/routes/auth/api/github/shared.js +14 -0
- package/dist/routes/auth/api/google/callback.d.ts +4 -0
- package/dist/routes/auth/api/google/callback.js +115 -0
- package/dist/routes/auth/api/google/index.d.ts +4 -0
- package/dist/routes/auth/api/google/index.js +38 -0
- package/dist/routes/auth/api/google/shared.d.ts +12 -0
- package/dist/routes/auth/api/google/shared.js +19 -0
- package/dist/routes/auth/api/login.d.ts +4 -0
- package/dist/routes/auth/api/login.js +46 -0
- package/dist/routes/auth/api/logout.d.ts +5 -0
- package/dist/routes/auth/api/logout.js +55 -0
- package/dist/routes/auth/api/register.d.ts +4 -0
- package/dist/routes/auth/api/register.js +64 -0
- package/dist/routes/auth/api/shared.d.ts +2 -0
- package/dist/routes/auth/api/shared.js +21 -0
- package/dist/routes/auth/login.astro +67 -0
- package/dist/routes/auth/logout.astro +28 -0
- package/dist/routes/auth/signup.astro +70 -0
- package/dist/routes/dashboard/[...pluginPage].astro +88 -0
- package/dist/routes/dashboard/configuration.astro +27 -0
- package/dist/routes/dashboard/content-management/createfolder.astro +56 -0
- package/dist/routes/dashboard/content-management/createpage.astro +59 -0
- package/dist/routes/dashboard/content-management/diff.astro +100 -0
- package/dist/routes/dashboard/content-management/editfolder.astro +40 -0
- package/dist/routes/dashboard/content-management/editpage.astro +44 -0
- package/dist/routes/dashboard/content-management/index.astro +57 -0
- package/dist/routes/dashboard/index.astro +24 -0
- package/dist/routes/dashboard/password-reset.astro +169 -0
- package/dist/routes/dashboard/plugins/[plugin].astro +60 -0
- package/dist/routes/dashboard/profile.astro +57 -0
- package/dist/routes/dashboard/studiocms_api/dashboard/api-tokens.d.ts +5 -0
- package/dist/routes/dashboard/studiocms_api/dashboard/api-tokens.js +90 -0
- package/dist/routes/dashboard/studiocms_api/dashboard/config.d.ts +4 -0
- package/dist/routes/dashboard/studiocms_api/dashboard/config.js +63 -0
- package/dist/routes/dashboard/studiocms_api/dashboard/content/folder.d.ts +6 -0
- package/dist/routes/dashboard/studiocms_api/dashboard/content/folder.js +121 -0
- package/dist/routes/dashboard/studiocms_api/dashboard/content/page.d.ts +6 -0
- package/dist/routes/dashboard/studiocms_api/dashboard/content/page.js +257 -0
- package/dist/routes/dashboard/studiocms_api/dashboard/create-reset-link.d.ts +4 -0
- package/dist/routes/dashboard/studiocms_api/dashboard/create-reset-link.js +59 -0
- package/dist/routes/dashboard/studiocms_api/dashboard/create-user-invite.d.ts +4 -0
- package/dist/routes/dashboard/studiocms_api/dashboard/create-user-invite.js +105 -0
- package/dist/routes/dashboard/studiocms_api/dashboard/create-user.d.ts +4 -0
- package/dist/routes/dashboard/studiocms_api/dashboard/create-user.js +100 -0
- package/dist/routes/dashboard/studiocms_api/dashboard/partials/Editor.astro +61 -0
- package/dist/routes/dashboard/studiocms_api/dashboard/partials/LiveRender.astro +30 -0
- package/dist/routes/dashboard/studiocms_api/dashboard/partials/UserListItems.astro +39 -0
- package/dist/routes/dashboard/studiocms_api/dashboard/plugins/[plugin].d.ts +2 -0
- package/dist/routes/dashboard/studiocms_api/dashboard/plugins/[plugin].js +32 -0
- package/dist/routes/dashboard/studiocms_api/dashboard/profile.d.ts +4 -0
- package/dist/routes/dashboard/studiocms_api/dashboard/profile.js +130 -0
- package/dist/routes/dashboard/studiocms_api/dashboard/reset-password.d.ts +4 -0
- package/dist/routes/dashboard/studiocms_api/dashboard/reset-password.js +105 -0
- package/dist/routes/dashboard/studiocms_api/dashboard/search-list.d.ts +4 -0
- package/dist/routes/dashboard/studiocms_api/dashboard/search-list.js +55 -0
- package/dist/routes/dashboard/studiocms_api/dashboard/users.d.ts +5 -0
- package/dist/routes/dashboard/studiocms_api/dashboard/users.js +92 -0
- package/dist/routes/dashboard/studiocms_api/dashboard/verify-session.d.ts +2 -0
- package/dist/routes/dashboard/studiocms_api/dashboard/verify-session.js +72 -0
- package/dist/routes/dashboard/user-management/edit.astro +593 -0
- package/dist/routes/dashboard/user-management/index.astro +67 -0
- package/dist/routes/error-pages/404.astro +35 -0
- package/dist/routes/firstTimeSetupRoutes/1-start.astro +253 -0
- package/dist/routes/firstTimeSetupRoutes/2-next.astro +208 -0
- package/dist/routes/firstTimeSetupRoutes/3-done.astro +95 -0
- package/dist/routes/firstTimeSetupRoutes/api/step-1.d.ts +2 -0
- package/dist/routes/firstTimeSetupRoutes/api/step-1.js +126 -0
- package/dist/routes/firstTimeSetupRoutes/api/step-2.d.ts +2 -0
- package/dist/routes/firstTimeSetupRoutes/api/step-2.js +110 -0
- package/dist/routes/firstTimeSetupRoutes/components/Layout.astro +41 -0
- package/dist/routes/firstTimeSetupRoutes/components/PageHeader.astro +60 -0
- package/dist/routes/firstTimeSetupRoutes/components/TabItem.astro +44 -0
- package/dist/routes/firstTimeSetupRoutes/components/Tabs.astro +170 -0
- package/dist/routes/firstTimeSetupRoutes/snippets/opt1-astro.config.diff +14 -0
- package/dist/routes/firstTimeSetupRoutes/snippets/opt2-astro.config.diff +9 -0
- package/dist/routes/firstTimeSetupRoutes/snippets/opt2-studiocms.config.diff +5 -0
- package/dist/routes/rest/utils/auth-token.d.ts +17 -0
- package/dist/routes/rest/utils/auth-token.js +31 -0
- package/dist/routes/rest/v1/folders/[id].d.ts +6 -0
- package/dist/routes/rest/v1/folders/[id].js +106 -0
- package/dist/routes/rest/v1/folders/index.d.ts +5 -0
- package/dist/routes/rest/v1/folders/index.js +88 -0
- package/dist/routes/rest/v1/pages/[id]/history/[diffid].d.ts +4 -0
- package/dist/routes/rest/v1/pages/[id]/history/[diffid].js +55 -0
- package/dist/routes/rest/v1/pages/[id]/history/index.d.ts +4 -0
- package/dist/routes/rest/v1/pages/[id]/history/index.js +61 -0
- package/dist/routes/rest/v1/pages/[id]/index.d.ts +6 -0
- package/dist/routes/rest/v1/pages/[id]/index.js +165 -0
- package/dist/routes/rest/v1/pages/index.d.ts +5 -0
- package/dist/routes/rest/v1/pages/index.js +113 -0
- package/dist/routes/rest/v1/public/folders/[id].d.ts +4 -0
- package/dist/routes/rest/v1/public/folders/[id].js +43 -0
- package/dist/routes/rest/v1/public/folders/index.d.ts +4 -0
- package/dist/routes/rest/v1/public/folders/index.js +49 -0
- package/dist/routes/rest/v1/public/pages/[id].d.ts +4 -0
- package/dist/routes/rest/v1/public/pages/[id].js +46 -0
- package/dist/routes/rest/v1/public/pages/index.d.ts +4 -0
- package/dist/routes/rest/v1/public/pages/index.js +61 -0
- package/dist/routes/rest/v1/settings/index.d.ts +5 -0
- package/dist/routes/rest/v1/settings/index.js +75 -0
- package/dist/routes/rest/v1/users/[id].d.ts +6 -0
- package/dist/routes/rest/v1/users/[id].js +212 -0
- package/dist/routes/rest/v1/users/index.d.ts +5 -0
- package/dist/routes/rest/v1/users/index.js +138 -0
- package/dist/routes/sdk/fallback-list-pages.json.d.ts +2 -0
- package/dist/routes/sdk/fallback-list-pages.json.js +19 -0
- package/dist/routes/sdk/fallback-list-pages.json.ts +22 -0
- package/dist/routes/sdk/full-changelog.json.d.ts +16 -0
- package/dist/routes/sdk/full-changelog.json.js +170 -0
- package/dist/routes/sdk/full-changelog.json.ts +224 -0
- package/dist/routes/sdk/list-pages.d.ts +4 -0
- package/dist/routes/sdk/list-pages.js +34 -0
- package/dist/routes/sdk/update-latest-version-cache.d.ts +4 -0
- package/dist/routes/sdk/update-latest-version-cache.js +41 -0
- package/dist/runtime/AstroComponentProxy.d.ts +29 -0
- package/dist/runtime/AstroComponentProxy.js +47 -0
- package/dist/runtime/decoder/decode-codepoint.d.ts +18 -0
- package/dist/runtime/decoder/decode-codepoint.js +58 -0
- package/dist/runtime/decoder/decode-data-html.d.ts +1 -0
- package/dist/runtime/decoder/decode-data-html.js +7 -0
- package/dist/runtime/decoder/decode-data-xml.d.ts +1 -0
- package/dist/runtime/decoder/decode-data-xml.js +7 -0
- package/dist/runtime/decoder/index.d.ts +34 -0
- package/dist/runtime/decoder/index.js +18 -0
- package/dist/runtime/decoder/util.d.ts +208 -0
- package/dist/runtime/decoder/util.js +415 -0
- package/dist/schemas/config/auth.d.ts +175 -0
- package/dist/schemas/config/auth.js +65 -0
- package/dist/schemas/config/componentoverrides.d.ts +17 -0
- package/dist/schemas/config/componentoverrides.js +14 -0
- package/dist/schemas/config/dashboard.d.ts +154 -0
- package/dist/schemas/config/dashboard.js +59 -0
- package/dist/schemas/config/defaultFrontend.d.ts +125 -0
- package/dist/schemas/config/defaultFrontend.js +57 -0
- package/dist/schemas/config/developer.d.ts +15 -0
- package/dist/schemas/config/developer.js +14 -0
- package/dist/schemas/config/imageService.d.ts +13 -0
- package/dist/schemas/config/imageService.js +12 -0
- package/dist/schemas/config/index.d.ts +1153 -0
- package/dist/schemas/config/index.js +95 -0
- package/dist/schemas/config/integrations.d.ts +14 -0
- package/dist/schemas/config/integrations.js +12 -0
- package/dist/schemas/config/markdoc.d.ts +172 -0
- package/dist/schemas/config/markdoc.js +68 -0
- package/dist/schemas/config/mdx.d.ts +455 -0
- package/dist/schemas/config/mdx.js +71 -0
- package/dist/schemas/config/rendererConfig.d.ts +659 -0
- package/dist/schemas/config/rendererConfig.js +51 -0
- package/dist/schemas/config/sdk.d.ts +167 -0
- package/dist/schemas/config/sdk.js +85 -0
- package/dist/schemas/config/studiocms-markdown-remark.d.ts +292 -0
- package/dist/schemas/config/studiocms-markdown-remark.js +63 -0
- package/dist/schemas/index.d.ts +2 -0
- package/dist/schemas/index.js +2 -0
- package/dist/schemas/plugins/index.d.ts +7373 -0
- package/dist/schemas/plugins/index.js +192 -0
- package/dist/schemas/plugins/shared.d.ts +1752 -0
- package/dist/schemas/plugins/shared.js +221 -0
- package/dist/scripts/formListener.d.ts +16 -0
- package/dist/scripts/formListener.js +46 -0
- package/dist/scripts/three.d.ts +1 -0
- package/dist/scripts/three.js +277 -0
- package/dist/scripts/utils/fitModelToViewport.d.ts +8 -0
- package/dist/scripts/utils/fitModelToViewport.js +19 -0
- package/dist/sdk/StudioCMSVirtualCache.d.ts +283 -0
- package/dist/sdk/StudioCMSVirtualCache.js +685 -0
- package/dist/sdk/cache.d.ts +11 -0
- package/dist/sdk/cache.js +12 -0
- package/dist/sdk/core.d.ts +865 -0
- package/dist/sdk/core.js +1966 -0
- package/dist/sdk/errors.d.ts +21 -0
- package/dist/sdk/errors.js +11 -0
- package/dist/sdk/index.d.ts +371 -0
- package/dist/sdk/index.js +8 -0
- package/dist/sdk/lib/foldertree.d.ts +50 -0
- package/dist/sdk/lib/foldertree.js +123 -0
- package/dist/sdk/lib/generators.d.ts +30 -0
- package/dist/sdk/lib/generators.js +25 -0
- package/dist/sdk/lib/packages.d.ts +8 -0
- package/dist/sdk/lib/packages.js +14 -0
- package/dist/sdk/lib/parsers.d.ts +14 -0
- package/dist/sdk/lib/parsers.js +10 -0
- package/dist/sdk/lib/users.d.ts +19 -0
- package/dist/sdk/lib/users.js +26 -0
- package/dist/sdk/tables.d.ts +1198 -0
- package/dist/sdk/tables.js +55 -0
- package/dist/sdk/types/index.d.ts +175 -0
- package/dist/sdk/types/index.js +0 -0
- package/dist/sdk/types/tableDefs.d.ts +75 -0
- package/dist/sdk/types/tableDefs.js +0 -0
- package/dist/sdk/types/tsAlias.d.ts +155 -0
- package/dist/sdk/types/tsAlias.js +0 -0
- package/dist/sdk/utils/db.d.ts +5 -0
- package/dist/sdk/utils/db.js +15 -0
- package/dist/stubs/auth-lib.d.ts +2 -0
- package/dist/stubs/auth-lib.js +519 -0
- package/dist/stubs/auth-scripts.d.ts +2 -0
- package/dist/stubs/auth-scripts.js +29 -0
- package/dist/stubs/auth-utils.d.ts +2 -0
- package/dist/stubs/auth-utils.js +36 -0
- package/dist/stubs/changelog.d.ts +2 -0
- package/dist/stubs/changelog.js +16 -0
- package/dist/stubs/components.d.ts +2 -0
- package/dist/stubs/components.js +67 -0
- package/dist/stubs/core.d.ts +2 -0
- package/dist/stubs/core.js +49 -0
- package/dist/stubs/i18n-dts.d.ts +2 -0
- package/dist/stubs/i18n-dts.js +117 -0
- package/dist/stubs/images.d.ts +1 -0
- package/dist/stubs/images.js +30 -0
- package/dist/stubs/index.d.ts +1 -0
- package/dist/stubs/index.js +40 -0
- package/dist/stubs/lib.d.ts +2 -0
- package/dist/stubs/lib.js +123 -0
- package/dist/stubs/plugins.d.ts +2 -0
- package/dist/stubs/plugins.js +60 -0
- package/dist/stubs/proxy.d.ts +2 -0
- package/dist/stubs/proxy.js +40 -0
- package/dist/stubs/renderer-config.d.ts +2 -0
- package/dist/stubs/renderer-config.js +18 -0
- package/dist/stubs/renderer-markdownConfig.d.ts +2 -0
- package/dist/stubs/renderer-markdownConfig.js +17 -0
- package/dist/stubs/renderer.d.ts +2 -0
- package/dist/stubs/renderer.js +44 -0
- package/dist/stubs/sdk.d.ts +2 -0
- package/dist/stubs/sdk.js +202 -0
- package/dist/stubs/webVitals.d.ts +2 -0
- package/dist/stubs/webVitals.js +40 -0
- package/dist/styles/404.css +47 -0
- package/dist/styles/SyntaxFont.woff2 +0 -0
- package/dist/styles/authlayout.css +138 -0
- package/dist/styles/dashboard-base.css +493 -0
- package/dist/styles/dashboard-code.css +33 -0
- package/dist/styles/dashboard-diff.css +389 -0
- package/dist/styles/dashboard-tiny-mde.css +224 -0
- package/dist/styles/md-remark-callouts/github.css +56 -0
- package/dist/styles/md-remark-callouts/obsidian.css +66 -0
- package/dist/styles/md-remark-callouts/vitepress.css +58 -0
- package/dist/styles/md-remark-headings.css +48 -0
- package/dist/types.d.ts +48 -0
- package/dist/types.js +0 -0
- package/dist/utils/addAPIRoutes.d.ts +9 -0
- package/dist/utils/addAPIRoutes.js +33 -0
- package/dist/utils/addIntegrationArray.d.ts +24 -0
- package/dist/utils/addIntegrationArray.js +11 -0
- package/dist/utils/addIntegrationArrayWithCheck.d.ts +11 -0
- package/dist/utils/addIntegrationArrayWithCheck.js +24 -0
- package/dist/utils/astroConfigCheck.d.ts +8 -0
- package/dist/utils/astroConfigCheck.js +31 -0
- package/dist/utils/astroEnvConfig.d.ts +45 -0
- package/dist/utils/astroEnvConfig.js +9 -0
- package/dist/utils/authEnvCheck.d.ts +38 -0
- package/dist/utils/authEnvCheck.js +82 -0
- package/dist/utils/changelog.d.ts +1 -0
- package/dist/utils/changelog.js +53 -0
- package/dist/utils/changelogLoader.d.ts +15 -0
- package/dist/utils/changelogLoader.js +104 -0
- package/dist/utils/checkENV.d.ts +27 -0
- package/dist/utils/checkENV.js +115 -0
- package/dist/utils/configManager.d.ts +22 -0
- package/dist/utils/configManager.js +98 -0
- package/dist/utils/configResolver.d.ts +283 -0
- package/dist/utils/configResolver.js +105 -0
- package/dist/utils/defineStudioCMSConfig.d.ts +165 -0
- package/dist/utils/defineStudioCMSConfig.js +6 -0
- package/dist/utils/getLabelForPermissionLevel.d.ts +2 -0
- package/dist/utils/getLabelForPermissionLevel.js +17 -0
- package/dist/utils/injectRouteArray.d.ts +19 -0
- package/dist/utils/injectRouteArray.js +75 -0
- package/dist/utils/integrationLogger.d.ts +7 -0
- package/dist/utils/integrationLogger.js +18 -0
- package/dist/utils/integrations.d.ts +4 -0
- package/dist/utils/integrations.js +32 -0
- package/dist/utils/isDashboardRoute.d.ts +7 -0
- package/dist/utils/isDashboardRoute.js +10 -0
- package/dist/utils/loginBackgrounds/studiocms-blobs-dark.png +0 -0
- package/dist/utils/loginBackgrounds/studiocms-blobs-light.png +0 -0
- package/dist/utils/loginBackgrounds/studiocms-blocks-dark.png +0 -0
- package/dist/utils/loginBackgrounds/studiocms-blocks-light.png +0 -0
- package/dist/utils/loginBackgrounds/studiocms-curves-dark.png +0 -0
- package/dist/utils/loginBackgrounds/studiocms-curves-light.png +0 -0
- package/dist/utils/makePageTitle.d.ts +3 -0
- package/dist/utils/makePageTitle.js +7 -0
- package/dist/utils/pageListPackageLabel.d.ts +4 -0
- package/dist/utils/pageListPackageLabel.js +12 -0
- package/dist/utils/readJson.d.ts +1 -0
- package/dist/utils/readJson.js +7 -0
- package/dist/utils/routeBuilder.d.ts +18 -0
- package/dist/utils/routeBuilder.js +96 -0
- package/dist/utils/safeString.d.ts +1 -0
- package/dist/utils/safeString.js +6 -0
- package/dist/utils/simpleResponse.d.ts +1 -0
- package/dist/utils/simpleResponse.js +29 -0
- package/dist/utils/validImages.d.ts +13 -0
- package/dist/utils/validImages.js +39 -0
- package/dist/virtual.d.js +0 -0
- package/dist/virtual.d.ts +5 -0
- package/package.json +180 -59
- package/renderer.d.ts +25 -0
- package/static/studiocms-resources/auth/studiocms-logo.glb +0 -0
- package/static/studiocms-resources/core/favicon-dark.png +0 -0
- package/static/studiocms-resources/core/favicon-light.png +0 -0
- package/static/studiocms-resources/core/favicon.svg +15 -0
- package/studiocms-cli.mjs +13 -0
- package/ui.d.ts +291 -0
- package/src/blog/index.ts +0 -35
- package/src/index.ts +0 -25
- package/src/integration.ts +0 -130
- package/src/updateCheck.ts +0 -51
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
import reactRenderer from '@astrojs/react/server.js';
|
|
2
|
+
import Markdoc, { type RenderableTreeNode } from '@markdoc/markdoc';
|
|
3
|
+
import { experimental_AstroContainer as AstroContainer } from 'astro/container';
|
|
4
|
+
import * as React from 'react';
|
|
5
|
+
import type { MarkdocRenderer } from 'studiocms/schemas/renderer';
|
|
6
|
+
import ReactWrapper from './markdocReact-components/MarkDocReactWrapper.astro';
|
|
7
|
+
|
|
8
|
+
/**
|
|
9
|
+
* MarkDoc React Components
|
|
10
|
+
*
|
|
11
|
+
* The React components to use for rendering the content
|
|
12
|
+
*
|
|
13
|
+
* @type {Object} - The React components to use for rendering the content
|
|
14
|
+
*/
|
|
15
|
+
// biome-ignore lint/complexity/noBannedTypes: This is a valid use case for `any`
|
|
16
|
+
export type markdocReactComponents = {} | undefined;
|
|
17
|
+
|
|
18
|
+
/**
|
|
19
|
+
* MarkDoc Render for React
|
|
20
|
+
*
|
|
21
|
+
* @requires `@astrojs/react` - Astro React Integration
|
|
22
|
+
* @param components - The React components to use for rendering the content
|
|
23
|
+
* @returns The MarkDoc React Renderer for StudioCMS MarkDoc
|
|
24
|
+
*/
|
|
25
|
+
export function markDocRenderReact(components?: markdocReactComponents): MarkdocRenderer {
|
|
26
|
+
return {
|
|
27
|
+
name: 'react',
|
|
28
|
+
renderer: async (content: RenderableTreeNode) => {
|
|
29
|
+
// Create an Astro container
|
|
30
|
+
const container = await AstroContainer.create();
|
|
31
|
+
|
|
32
|
+
// Add the Astro React server renderer
|
|
33
|
+
container.addServerRenderer({
|
|
34
|
+
name: '@astrojs/react',
|
|
35
|
+
renderer: reactRenderer,
|
|
36
|
+
});
|
|
37
|
+
|
|
38
|
+
// Add the Astro React client renderer
|
|
39
|
+
container.addClientRenderer({
|
|
40
|
+
name: '@astrojs/react',
|
|
41
|
+
entrypoint: '@astrojs/react/client.js',
|
|
42
|
+
});
|
|
43
|
+
|
|
44
|
+
// Return the rendered content
|
|
45
|
+
return await container.renderToString(ReactWrapper, {
|
|
46
|
+
props: {
|
|
47
|
+
content: Markdoc.renderers.react(content, React, {
|
|
48
|
+
components,
|
|
49
|
+
}),
|
|
50
|
+
},
|
|
51
|
+
});
|
|
52
|
+
},
|
|
53
|
+
};
|
|
54
|
+
}
|
|
55
|
+
|
|
56
|
+
export default markDocRenderReact;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { Command } from "../lib/commander.js";
|
|
2
|
+
import { runInteractiveCommand } from "../lib/runExternal";
|
|
3
|
+
await new Command("getTurso").description("Turso CLI Utilities").summary("Turso CLI Utilities").action(async () => {
|
|
4
|
+
try {
|
|
5
|
+
await runInteractiveCommand("curl -sSfL https://get.tur.so/install.sh | bash");
|
|
6
|
+
console.log("Command completed successfully.");
|
|
7
|
+
} catch (error) {
|
|
8
|
+
console.error(`Failed to run Turso install: ${error.message}`);
|
|
9
|
+
}
|
|
10
|
+
}).parseAsync();
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
import color from "chalk";
|
|
2
|
+
import { getContext } from "../../lib/context.js";
|
|
3
|
+
import { StudioCMSColorwayBg, label } from "../../lib/utils.js";
|
|
4
|
+
import { intro } from "../../shared/intro.js";
|
|
5
|
+
import { env } from "./steps/envBuilder.js";
|
|
6
|
+
import { next } from "./steps/nextSteps.js";
|
|
7
|
+
async function initCMD() {
|
|
8
|
+
const opts = this.opts();
|
|
9
|
+
const ctx = await getContext(opts);
|
|
10
|
+
ctx.logger.log("Starting interactive CLI...");
|
|
11
|
+
ctx.debug && ctx.logger.debug(`Options: ${JSON.stringify(opts, null, 2)}`);
|
|
12
|
+
ctx.debug && ctx.logger.debug(`Context: ${JSON.stringify(ctx, null, 2)}`);
|
|
13
|
+
console.log("");
|
|
14
|
+
ctx.debug && ctx.logger.debug("Running interactive CLI Steps...");
|
|
15
|
+
ctx.p.intro(
|
|
16
|
+
`${label("StudioCMS", StudioCMSColorwayBg, color.black)} Interactive CLI - initializing...`
|
|
17
|
+
);
|
|
18
|
+
await intro(ctx);
|
|
19
|
+
const steps = [];
|
|
20
|
+
ctx.debug && ctx.logger.debug("Running Option selection...");
|
|
21
|
+
const options = await ctx.p.multiselect({
|
|
22
|
+
message: "What would you like to do? (Select all that apply)",
|
|
23
|
+
options: [{ value: "env", label: "Setup Environment File", hint: "Create a .env file" }]
|
|
24
|
+
});
|
|
25
|
+
if (typeof options === "symbol") {
|
|
26
|
+
ctx.pCancel(options);
|
|
27
|
+
} else {
|
|
28
|
+
options.includes("env") && steps.push(env);
|
|
29
|
+
}
|
|
30
|
+
ctx.debug && ctx.logger.debug("Running steps...");
|
|
31
|
+
if (steps.length === 0) {
|
|
32
|
+
ctx.p.log.error("No steps selected, exiting...");
|
|
33
|
+
ctx.exit(0);
|
|
34
|
+
}
|
|
35
|
+
for (const step of steps) {
|
|
36
|
+
await step(ctx);
|
|
37
|
+
}
|
|
38
|
+
ctx.debug && ctx.logger.debug("Running tasks...");
|
|
39
|
+
if (ctx.tasks.length === 0) {
|
|
40
|
+
ctx.p.log.error("No tasks selected, exiting...");
|
|
41
|
+
ctx.exit(0);
|
|
42
|
+
}
|
|
43
|
+
await ctx.p.tasks(ctx.tasks);
|
|
44
|
+
ctx.debug && ctx.logger.debug("Running next steps...");
|
|
45
|
+
await next(ctx);
|
|
46
|
+
ctx.debug && ctx.logger.debug("Interactive CLI completed, exiting...");
|
|
47
|
+
ctx.exit(0);
|
|
48
|
+
}
|
|
49
|
+
export {
|
|
50
|
+
getContext,
|
|
51
|
+
initCMD
|
|
52
|
+
};
|
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
const ExampleEnv = `# StudioCMS Environment Variables
|
|
2
|
+
|
|
3
|
+
# libSQL URL and Token for AstroDB
|
|
4
|
+
ASTRO_DB_REMOTE_URL=libsql://your-database.turso.io
|
|
5
|
+
ASTRO_DB_APP_TOKEN=
|
|
6
|
+
|
|
7
|
+
# Auth encryption key
|
|
8
|
+
CMS_ENCRYPTION_KEY="..." # openssl rand --base64 16
|
|
9
|
+
|
|
10
|
+
# credentials for GitHub OAuth
|
|
11
|
+
CMS_GITHUB_CLIENT_ID=
|
|
12
|
+
CMS_GITHUB_CLIENT_SECRET=
|
|
13
|
+
CMS_GITHUB_REDIRECT_URI=http://localhost:4321/studiocms_api/auth/github/callback
|
|
14
|
+
|
|
15
|
+
# credentials for Discord OAuth
|
|
16
|
+
CMS_DISCORD_CLIENT_ID=
|
|
17
|
+
CMS_DISCORD_CLIENT_SECRET=
|
|
18
|
+
CMS_DISCORD_REDIRECT_URI=http://localhost:4321/studiocms_api/auth/discord/callback
|
|
19
|
+
|
|
20
|
+
# credentials for Google OAuth
|
|
21
|
+
CMS_GOOGLE_CLIENT_ID=
|
|
22
|
+
CMS_GOOGLE_CLIENT_SECRET=
|
|
23
|
+
CMS_GOOGLE_REDIRECT_URI=http://localhost:4321/studiocms_api/auth/google/callback
|
|
24
|
+
|
|
25
|
+
# credentials for auth0 OAuth
|
|
26
|
+
CMS_AUTH0_CLIENT_ID=
|
|
27
|
+
CMS_AUTH0_CLIENT_SECRET=
|
|
28
|
+
CMS_AUTH0_DOMAIN=
|
|
29
|
+
CMS_AUTH0_REDIRECT_URI=http://localhost:4321/studiocms_api/auth/auth0/callback
|
|
30
|
+
|
|
31
|
+
## Cloudinary Javascript SDK
|
|
32
|
+
CMS_CLOUDINARY_CLOUDNAME="demo"`;
|
|
33
|
+
function buildEnvFile(envBuilderOpts) {
|
|
34
|
+
return `# StudioCMS Environment Variables
|
|
35
|
+
|
|
36
|
+
# libSQL URL and Token for AstroDB
|
|
37
|
+
ASTRO_DB_REMOTE_URL=${envBuilderOpts.astroDbRemoteUrl}
|
|
38
|
+
ASTRO_DB_APP_TOKEN=${envBuilderOpts.astroDbToken}
|
|
39
|
+
|
|
40
|
+
# Auth encryption key
|
|
41
|
+
CMS_ENCRYPTION_KEY="${envBuilderOpts.encryptionKey}" # openssl rand --base64 16
|
|
42
|
+
|
|
43
|
+
# credentials for GitHub OAuth
|
|
44
|
+
CMS_GITHUB_CLIENT_ID=${envBuilderOpts.githubOAuth?.clientId}
|
|
45
|
+
CMS_GITHUB_CLIENT_SECRET=${envBuilderOpts.githubOAuth?.clientSecret}
|
|
46
|
+
CMS_GITHUB_REDIRECT_URI=${envBuilderOpts.githubOAuth?.redirectUri}/studiocms_api/auth/github/callback
|
|
47
|
+
|
|
48
|
+
# credentials for Discord OAuth
|
|
49
|
+
CMS_DISCORD_CLIENT_ID=${envBuilderOpts.discordOAuth?.clientId}
|
|
50
|
+
CMS_DISCORD_CLIENT_SECRET=${envBuilderOpts.discordOAuth?.clientSecret}
|
|
51
|
+
CMS_DISCORD_REDIRECT_URI=${envBuilderOpts.discordOAuth?.redirectUri}/studiocms_api/auth/discord/callback
|
|
52
|
+
|
|
53
|
+
# credentials for Google OAuth
|
|
54
|
+
CMS_GOOGLE_CLIENT_ID=${envBuilderOpts.googleOAuth?.clientId}
|
|
55
|
+
CMS_GOOGLE_CLIENT_SECRET=${envBuilderOpts.googleOAuth?.clientSecret}
|
|
56
|
+
CMS_GOOGLE_REDIRECT_URI=${envBuilderOpts.googleOAuth?.redirectUri}/studiocms_api/auth/google/callback
|
|
57
|
+
|
|
58
|
+
# credentials for auth0 OAuth
|
|
59
|
+
CMS_AUTH0_CLIENT_ID=${envBuilderOpts.auth0OAuth?.clientId}
|
|
60
|
+
CMS_AUTH0_CLIENT_SECRET=${envBuilderOpts.auth0OAuth?.clientSecret}
|
|
61
|
+
CMS_AUTH0_DOMAIN=${envBuilderOpts.auth0OAuth?.domain}
|
|
62
|
+
CMS_AUTH0_REDIRECT_URI=${envBuilderOpts.auth0OAuth?.redirectUri}/studiocms_api/auth/auth0/callback
|
|
63
|
+
|
|
64
|
+
## Cloudinary Javascript SDK
|
|
65
|
+
CMS_CLOUDINARY_CLOUDNAME="demo"
|
|
66
|
+
`;
|
|
67
|
+
}
|
|
68
|
+
export {
|
|
69
|
+
ExampleEnv,
|
|
70
|
+
buildEnvFile
|
|
71
|
+
};
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import type { Context } from '../../../lib/context.js';
|
|
2
|
+
interface GenericOAuth {
|
|
3
|
+
clientId: string;
|
|
4
|
+
clientSecret: string;
|
|
5
|
+
redirectUri: string;
|
|
6
|
+
}
|
|
7
|
+
interface Auth0OAuth extends GenericOAuth {
|
|
8
|
+
domain: string;
|
|
9
|
+
}
|
|
10
|
+
export interface EnvBuilderOptions {
|
|
11
|
+
astroDbRemoteUrl?: string;
|
|
12
|
+
astroDbToken?: string;
|
|
13
|
+
encryptionKey?: string;
|
|
14
|
+
oAuthOptions?: ('github' | 'discord' | 'google' | 'auth0')[];
|
|
15
|
+
githubOAuth?: GenericOAuth;
|
|
16
|
+
discordOAuth?: GenericOAuth;
|
|
17
|
+
googleOAuth?: GenericOAuth;
|
|
18
|
+
auth0OAuth?: Auth0OAuth;
|
|
19
|
+
}
|
|
20
|
+
export declare function env(ctx: Pick<Context, 'cwd' | 'p' | 'pCancel' | 'pOnCancel' | 'dryRun' | 'tasks' | 'exit' | 'debug' | 'logger'>): Promise<void>;
|
|
21
|
+
export {};
|
|
@@ -0,0 +1,368 @@
|
|
|
1
|
+
import crypto from "node:crypto";
|
|
2
|
+
import fs from "node:fs/promises";
|
|
3
|
+
import os from "node:os";
|
|
4
|
+
import path from "node:path";
|
|
5
|
+
import color from "chalk";
|
|
6
|
+
import { commandExists, runInteractiveCommand, runShellCommand } from "../../../lib/runExternal.js";
|
|
7
|
+
import {
|
|
8
|
+
StudioCMSColorwayError,
|
|
9
|
+
StudioCMSColorwayInfo,
|
|
10
|
+
StudioCMSColorwayWarnBg,
|
|
11
|
+
TursoColorway,
|
|
12
|
+
exists,
|
|
13
|
+
label
|
|
14
|
+
} from "../../../lib/utils.js";
|
|
15
|
+
import { ExampleEnv, buildEnvFile } from "./data/studiocmsEnv.js";
|
|
16
|
+
async function env(ctx) {
|
|
17
|
+
ctx.debug && ctx.logger.debug("Running env...");
|
|
18
|
+
let _env = false;
|
|
19
|
+
let envFileContent;
|
|
20
|
+
const envExists = exists(path.join(ctx.cwd, ".env"));
|
|
21
|
+
ctx.debug && ctx.logger.debug(`Environment file exists: ${envExists}`);
|
|
22
|
+
if (envExists) {
|
|
23
|
+
ctx.p.log.warn(
|
|
24
|
+
`${label("Warning", StudioCMSColorwayWarnBg, color.black)} An environment file already exists. Would you like to overwrite it?`
|
|
25
|
+
);
|
|
26
|
+
const check = await ctx.p.confirm({
|
|
27
|
+
message: "Confirm Overwrite"
|
|
28
|
+
});
|
|
29
|
+
if (typeof check === "symbol") {
|
|
30
|
+
ctx.pCancel(check);
|
|
31
|
+
} else {
|
|
32
|
+
ctx.debug && ctx.logger.debug(`Environment file overwrite selected: ${check}`);
|
|
33
|
+
if (!check) {
|
|
34
|
+
return;
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
const EnvPrompt = await ctx.p.select({
|
|
39
|
+
message: "What kind of environment file would you like to create?",
|
|
40
|
+
options: [
|
|
41
|
+
{ value: "builder", label: "Use Interactive .env Builder" },
|
|
42
|
+
{ value: "example", label: "Use the Example .env file" },
|
|
43
|
+
{ value: "none", label: "Skip Environment File Creation", hint: "Cancel" }
|
|
44
|
+
]
|
|
45
|
+
});
|
|
46
|
+
if (typeof EnvPrompt === "symbol") {
|
|
47
|
+
ctx.pCancel(EnvPrompt);
|
|
48
|
+
} else {
|
|
49
|
+
ctx.debug && ctx.logger.debug(`Environment file type selected: ${EnvPrompt}`);
|
|
50
|
+
_env = EnvPrompt !== "none";
|
|
51
|
+
}
|
|
52
|
+
if (EnvPrompt === "example") {
|
|
53
|
+
envFileContent = ExampleEnv;
|
|
54
|
+
} else if (EnvPrompt === "builder") {
|
|
55
|
+
let envBuilderOpts = {};
|
|
56
|
+
const isWindows = os.platform() === "win32";
|
|
57
|
+
if (isWindows) {
|
|
58
|
+
ctx.p.log.warn(
|
|
59
|
+
`${label("Warning", StudioCMSColorwayWarnBg, color.black)} Turso DB CLI is not supported on Windows outside of WSL.`
|
|
60
|
+
);
|
|
61
|
+
}
|
|
62
|
+
let tursoDB = "no";
|
|
63
|
+
if (!isWindows) {
|
|
64
|
+
tursoDB = await ctx.p.select({
|
|
65
|
+
message: "Would you like us to setup a new Turso DB for you? (Runs `turso db create`)",
|
|
66
|
+
options: [
|
|
67
|
+
{ value: "yes", label: "Yes" },
|
|
68
|
+
{ value: "no", label: "No" }
|
|
69
|
+
]
|
|
70
|
+
});
|
|
71
|
+
}
|
|
72
|
+
if (typeof tursoDB === "symbol") {
|
|
73
|
+
ctx.pCancel(tursoDB);
|
|
74
|
+
} else {
|
|
75
|
+
ctx.debug && ctx.logger.debug(`AstroDB setup selected: ${tursoDB}`);
|
|
76
|
+
if (tursoDB === "yes") {
|
|
77
|
+
if (!commandExists("turso")) {
|
|
78
|
+
ctx.p.log.error(StudioCMSColorwayError("Turso CLI is not installed."));
|
|
79
|
+
const installTurso = await ctx.p.confirm({
|
|
80
|
+
message: "Would you like to install Turso CLI now?"
|
|
81
|
+
});
|
|
82
|
+
if (typeof installTurso === "symbol") {
|
|
83
|
+
ctx.pCancel(installTurso);
|
|
84
|
+
} else {
|
|
85
|
+
if (installTurso) {
|
|
86
|
+
try {
|
|
87
|
+
await runInteractiveCommand("curl -sSfL https://get.tur.so/install.sh | bash");
|
|
88
|
+
console.log("Command completed successfully.");
|
|
89
|
+
} catch (error) {
|
|
90
|
+
console.error(`Failed to run Turso install: ${error.message}`);
|
|
91
|
+
}
|
|
92
|
+
} else {
|
|
93
|
+
ctx.p.log.warn(
|
|
94
|
+
`${label("Warning", StudioCMSColorwayWarnBg, color.black)} You will need to setup your own AstroDB and provide the URL and Token.`
|
|
95
|
+
);
|
|
96
|
+
}
|
|
97
|
+
}
|
|
98
|
+
}
|
|
99
|
+
try {
|
|
100
|
+
const res = await runShellCommand("turso auth login --headless");
|
|
101
|
+
if (!res.includes("Already signed in as") && !res.includes("Success! Existing JWT still valid")) {
|
|
102
|
+
ctx.p.log.message(`Please sign in to Turso to continue.
|
|
103
|
+
${res}`);
|
|
104
|
+
const loginToken = await ctx.p.text({
|
|
105
|
+
message: 'Enter the login token ( the code within the " " )',
|
|
106
|
+
placeholder: "eyJhb...tnPnw"
|
|
107
|
+
});
|
|
108
|
+
if (typeof loginToken === "symbol") {
|
|
109
|
+
ctx.pCancel(loginToken);
|
|
110
|
+
} else {
|
|
111
|
+
const loginRes = await runShellCommand(`turso config set token "${loginToken}"`);
|
|
112
|
+
if (loginRes.includes("Token set succesfully.")) {
|
|
113
|
+
ctx.p.log.success("Successfully logged in to Turso.");
|
|
114
|
+
} else {
|
|
115
|
+
ctx.p.log.error(StudioCMSColorwayError("Unable to login to Turso."));
|
|
116
|
+
process.exit(1);
|
|
117
|
+
}
|
|
118
|
+
}
|
|
119
|
+
}
|
|
120
|
+
} catch (error) {
|
|
121
|
+
if (error instanceof Error) {
|
|
122
|
+
ctx.p.log.error(StudioCMSColorwayError(`Error: ${error.message}`));
|
|
123
|
+
process.exit(1);
|
|
124
|
+
} else {
|
|
125
|
+
ctx.p.log.error(StudioCMSColorwayError("Unknown Error: Unable to login to Turso."));
|
|
126
|
+
process.exit(1);
|
|
127
|
+
}
|
|
128
|
+
}
|
|
129
|
+
const customName = await ctx.p.confirm({
|
|
130
|
+
message: "Would you like to provide a custom name for the database?",
|
|
131
|
+
initialValue: false
|
|
132
|
+
});
|
|
133
|
+
if (typeof customName === "symbol") {
|
|
134
|
+
ctx.pCancel(customName);
|
|
135
|
+
} else {
|
|
136
|
+
const dbName = customName ? await ctx.p.text({
|
|
137
|
+
message: "Enter a custom name for the database",
|
|
138
|
+
initialValue: "your-database-name"
|
|
139
|
+
}) : void 0;
|
|
140
|
+
if (typeof dbName === "symbol") {
|
|
141
|
+
ctx.pCancel(dbName);
|
|
142
|
+
} else {
|
|
143
|
+
ctx.debug && ctx.logger.debug(`Custom database name: ${dbName}`);
|
|
144
|
+
const tursoSetup = ctx.p.spinner();
|
|
145
|
+
tursoSetup.start(
|
|
146
|
+
`${label("Turso", TursoColorway, color.black)} Setting up Turso DB...`
|
|
147
|
+
);
|
|
148
|
+
try {
|
|
149
|
+
tursoSetup.message(
|
|
150
|
+
`${label("Turso", TursoColorway, color.black)} Creating Database...`
|
|
151
|
+
);
|
|
152
|
+
const createRes = await runShellCommand(`turso db create ${dbName ? dbName : ""}`);
|
|
153
|
+
const dbNameMatch = createRes.match(/^Created database (\S+) at group/m);
|
|
154
|
+
const dbFinalName = dbNameMatch ? dbNameMatch[1] : void 0;
|
|
155
|
+
tursoSetup.message(
|
|
156
|
+
`${label("Turso", TursoColorway, color.black)} Retrieving database information...`
|
|
157
|
+
);
|
|
158
|
+
ctx.debug && ctx.logger.debug(`Database name: ${dbFinalName}`);
|
|
159
|
+
const showCMD = `turso db show ${dbFinalName}`;
|
|
160
|
+
const tokenCMD = `turso db tokens create ${dbFinalName}`;
|
|
161
|
+
const showRes = await runShellCommand(showCMD);
|
|
162
|
+
const urlMatch = showRes.match(/^URL:\s+(\S+)/m);
|
|
163
|
+
const dbURL = urlMatch ? urlMatch[1] : void 0;
|
|
164
|
+
ctx.debug && ctx.logger.debug(`Database URL: ${dbURL}`);
|
|
165
|
+
const tokenRes = await runShellCommand(tokenCMD);
|
|
166
|
+
const dbToken = tokenRes.trim();
|
|
167
|
+
ctx.debug && ctx.logger.debug(`Database Token: ${dbToken}`);
|
|
168
|
+
envBuilderOpts.astroDbRemoteUrl = dbURL;
|
|
169
|
+
envBuilderOpts.astroDbToken = dbToken;
|
|
170
|
+
tursoSetup.stop(
|
|
171
|
+
`${label("Turso", TursoColorway, color.black)} Database setup complete. New Database: ${dbFinalName}`
|
|
172
|
+
);
|
|
173
|
+
ctx.p.log.message("Database Token and Url saved to environment file.");
|
|
174
|
+
} catch (e) {
|
|
175
|
+
tursoSetup.stop();
|
|
176
|
+
if (e instanceof Error) {
|
|
177
|
+
ctx.p.log.error(StudioCMSColorwayError(`Error: ${e.message}`));
|
|
178
|
+
process.exit(1);
|
|
179
|
+
} else {
|
|
180
|
+
ctx.p.log.error(
|
|
181
|
+
StudioCMSColorwayError("Unknown Error: Unable to create database.")
|
|
182
|
+
);
|
|
183
|
+
process.exit(1);
|
|
184
|
+
}
|
|
185
|
+
}
|
|
186
|
+
}
|
|
187
|
+
}
|
|
188
|
+
} else {
|
|
189
|
+
ctx.p.log.warn(
|
|
190
|
+
`${label("Warning", StudioCMSColorwayWarnBg, color.black)} You will need to setup your own AstroDB and provide the URL and Token.`
|
|
191
|
+
);
|
|
192
|
+
const envBuilderStep_AstroDB = await ctx.p.group(
|
|
193
|
+
{
|
|
194
|
+
astroDbRemoteUrl: () => ctx.p.text({
|
|
195
|
+
message: "Remote URL for AstroDB",
|
|
196
|
+
initialValue: "libsql://your-database.turso.io"
|
|
197
|
+
}),
|
|
198
|
+
astroDbToken: () => ctx.p.text({
|
|
199
|
+
message: "AstroDB Token",
|
|
200
|
+
initialValue: "your-astrodb-token"
|
|
201
|
+
})
|
|
202
|
+
},
|
|
203
|
+
{
|
|
204
|
+
onCancel: () => ctx.pOnCancel()
|
|
205
|
+
}
|
|
206
|
+
);
|
|
207
|
+
ctx.debug && ctx.logger.debug(`AstroDB setup: ${envBuilderStep_AstroDB}`);
|
|
208
|
+
envBuilderOpts = { ...envBuilderStep_AstroDB };
|
|
209
|
+
}
|
|
210
|
+
}
|
|
211
|
+
const envBuilderStep1 = await ctx.p.group(
|
|
212
|
+
{
|
|
213
|
+
encryptionKey: () => ctx.p.text({
|
|
214
|
+
message: "StudioCMS Auth Encryption Key",
|
|
215
|
+
initialValue: crypto.randomBytes(16).toString("base64")
|
|
216
|
+
}),
|
|
217
|
+
oAuthOptions: () => ctx.p.multiselect({
|
|
218
|
+
message: "Setup OAuth Providers",
|
|
219
|
+
options: [
|
|
220
|
+
{ value: "github", label: "GitHub" },
|
|
221
|
+
{ value: "discord", label: "Discord" },
|
|
222
|
+
{ value: "google", label: "Google" },
|
|
223
|
+
{ value: "auth0", label: "Auth0" }
|
|
224
|
+
],
|
|
225
|
+
required: false
|
|
226
|
+
})
|
|
227
|
+
},
|
|
228
|
+
{
|
|
229
|
+
// On Cancel callback that wraps the group
|
|
230
|
+
// So if the user cancels one of the prompts in the group this function will be called
|
|
231
|
+
onCancel: () => ctx.pOnCancel()
|
|
232
|
+
}
|
|
233
|
+
);
|
|
234
|
+
ctx.debug && ctx.logger.debug(`Environment Builder Step 1: ${envBuilderStep1}`);
|
|
235
|
+
envBuilderOpts = { ...envBuilderStep1 };
|
|
236
|
+
if (envBuilderStep1.oAuthOptions.includes("github")) {
|
|
237
|
+
const githubOAuth = await ctx.p.group(
|
|
238
|
+
{
|
|
239
|
+
clientId: () => ctx.p.text({
|
|
240
|
+
message: "GitHub Client ID",
|
|
241
|
+
initialValue: "your-github-client-id"
|
|
242
|
+
}),
|
|
243
|
+
clientSecret: () => ctx.p.text({
|
|
244
|
+
message: "GitHub Client Secret",
|
|
245
|
+
initialValue: "your-github-client-secret"
|
|
246
|
+
}),
|
|
247
|
+
redirectUri: () => ctx.p.text({
|
|
248
|
+
message: "GitHub Redirect URI Domain",
|
|
249
|
+
initialValue: "http://localhost:4321"
|
|
250
|
+
})
|
|
251
|
+
},
|
|
252
|
+
{
|
|
253
|
+
onCancel: () => ctx.pOnCancel()
|
|
254
|
+
}
|
|
255
|
+
);
|
|
256
|
+
ctx.debug && ctx.logger.debug(`GitHub OAuth: ${githubOAuth}`);
|
|
257
|
+
envBuilderOpts.githubOAuth = githubOAuth;
|
|
258
|
+
}
|
|
259
|
+
if (envBuilderStep1.oAuthOptions.includes("discord")) {
|
|
260
|
+
const discordOAuth = await ctx.p.group(
|
|
261
|
+
{
|
|
262
|
+
clientId: () => ctx.p.text({
|
|
263
|
+
message: "Discord Client ID",
|
|
264
|
+
initialValue: "your-discord-client-id"
|
|
265
|
+
}),
|
|
266
|
+
clientSecret: () => ctx.p.text({
|
|
267
|
+
message: "Discord Client Secret",
|
|
268
|
+
initialValue: "your-discord-client-secret"
|
|
269
|
+
}),
|
|
270
|
+
redirectUri: () => ctx.p.text({
|
|
271
|
+
message: "Discord Redirect URI Domain",
|
|
272
|
+
initialValue: "http://localhost:4321"
|
|
273
|
+
})
|
|
274
|
+
},
|
|
275
|
+
{
|
|
276
|
+
onCancel: () => ctx.pOnCancel()
|
|
277
|
+
}
|
|
278
|
+
);
|
|
279
|
+
ctx.debug && ctx.logger.debug(`Discord OAuth: ${discordOAuth}`);
|
|
280
|
+
envBuilderOpts.discordOAuth = discordOAuth;
|
|
281
|
+
}
|
|
282
|
+
if (envBuilderStep1.oAuthOptions.includes("google")) {
|
|
283
|
+
const googleOAuth = await ctx.p.group(
|
|
284
|
+
{
|
|
285
|
+
clientId: () => ctx.p.text({
|
|
286
|
+
message: "Google Client ID",
|
|
287
|
+
initialValue: "your-google-client-id"
|
|
288
|
+
}),
|
|
289
|
+
clientSecret: () => ctx.p.text({
|
|
290
|
+
message: "Google Client Secret",
|
|
291
|
+
initialValue: "your-google-client-secret"
|
|
292
|
+
}),
|
|
293
|
+
redirectUri: () => ctx.p.text({
|
|
294
|
+
message: "Google Redirect URI Domain",
|
|
295
|
+
initialValue: "http://localhost:4321"
|
|
296
|
+
})
|
|
297
|
+
},
|
|
298
|
+
{
|
|
299
|
+
onCancel: () => ctx.pOnCancel()
|
|
300
|
+
}
|
|
301
|
+
);
|
|
302
|
+
ctx.debug && ctx.logger.debug(`Google OAuth: ${googleOAuth}`);
|
|
303
|
+
envBuilderOpts.googleOAuth = googleOAuth;
|
|
304
|
+
}
|
|
305
|
+
if (envBuilderStep1.oAuthOptions.includes("auth0")) {
|
|
306
|
+
const auth0OAuth = await ctx.p.group(
|
|
307
|
+
{
|
|
308
|
+
clientId: () => ctx.p.text({
|
|
309
|
+
message: "Auth0 Client ID",
|
|
310
|
+
initialValue: "your-auth0-client-id"
|
|
311
|
+
}),
|
|
312
|
+
clientSecret: () => ctx.p.text({
|
|
313
|
+
message: "Auth0 Client Secret",
|
|
314
|
+
initialValue: "your-auth0-client-secret"
|
|
315
|
+
}),
|
|
316
|
+
domain: () => ctx.p.text({
|
|
317
|
+
message: "Auth0 Domain",
|
|
318
|
+
initialValue: "your-auth0-domain"
|
|
319
|
+
}),
|
|
320
|
+
redirectUri: () => ctx.p.text({
|
|
321
|
+
message: "Auth0 Redirect URI Domain",
|
|
322
|
+
initialValue: "http://localhost:4321"
|
|
323
|
+
})
|
|
324
|
+
},
|
|
325
|
+
{
|
|
326
|
+
onCancel: () => ctx.pOnCancel()
|
|
327
|
+
}
|
|
328
|
+
);
|
|
329
|
+
ctx.debug && ctx.logger.debug(`Auth0 OAuth: ${auth0OAuth}`);
|
|
330
|
+
envBuilderOpts.auth0OAuth = auth0OAuth;
|
|
331
|
+
}
|
|
332
|
+
envFileContent = buildEnvFile(envBuilderOpts);
|
|
333
|
+
}
|
|
334
|
+
if (ctx.dryRun) {
|
|
335
|
+
ctx.tasks.push({
|
|
336
|
+
title: `${StudioCMSColorwayInfo.bold("--dry-run")} ${color.dim("Skipping environment file creation")}`,
|
|
337
|
+
task: async (message) => {
|
|
338
|
+
message("Creating environment file... (skipped)");
|
|
339
|
+
}
|
|
340
|
+
});
|
|
341
|
+
} else if (_env) {
|
|
342
|
+
ctx.tasks.push({
|
|
343
|
+
title: color.dim("Creating environment file..."),
|
|
344
|
+
task: async (message) => {
|
|
345
|
+
try {
|
|
346
|
+
await fs.writeFile(path.join(ctx.cwd, ".env"), envFileContent, {
|
|
347
|
+
encoding: "utf-8"
|
|
348
|
+
});
|
|
349
|
+
message("Environment file created");
|
|
350
|
+
} catch (e) {
|
|
351
|
+
if (e instanceof Error) {
|
|
352
|
+
ctx.p.log.error(StudioCMSColorwayError(`Error: ${e.message}`));
|
|
353
|
+
process.exit(1);
|
|
354
|
+
} else {
|
|
355
|
+
ctx.p.log.error(
|
|
356
|
+
StudioCMSColorwayError("Unknown Error: Unable to create environment file.")
|
|
357
|
+
);
|
|
358
|
+
process.exit(1);
|
|
359
|
+
}
|
|
360
|
+
}
|
|
361
|
+
}
|
|
362
|
+
});
|
|
363
|
+
}
|
|
364
|
+
ctx.debug && ctx.logger.debug("Environment complete");
|
|
365
|
+
}
|
|
366
|
+
export {
|
|
367
|
+
env
|
|
368
|
+
};
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
import chalk from "chalk";
|
|
2
|
+
import {
|
|
3
|
+
StudioCMSColorway,
|
|
4
|
+
StudioCMSColorwayBg,
|
|
5
|
+
StudioCMSColorwayInfoBg,
|
|
6
|
+
boxen,
|
|
7
|
+
label
|
|
8
|
+
} from "../../../lib/utils.js";
|
|
9
|
+
async function next(ctx) {
|
|
10
|
+
const commandMap = {
|
|
11
|
+
npm: "npm run dev",
|
|
12
|
+
bun: "bun run dev",
|
|
13
|
+
yarn: "yarn dev",
|
|
14
|
+
pnpm: "pnpm dev"
|
|
15
|
+
};
|
|
16
|
+
const devCmd = commandMap[ctx.packageManager] || "npm run dev";
|
|
17
|
+
ctx.debug && ctx.logger.debug(`Dev command: ${devCmd}`);
|
|
18
|
+
ctx.debug && ctx.logger.debug("Running next steps fn...");
|
|
19
|
+
ctx.p.log.success(
|
|
20
|
+
boxen(
|
|
21
|
+
chalk.bold(
|
|
22
|
+
`${label("Init Complete!", StudioCMSColorwayInfoBg, chalk.bold)} Get started with StudioCMS:`
|
|
23
|
+
),
|
|
24
|
+
{
|
|
25
|
+
ln1: `Ensure your ${chalk.cyanBright(".env")} file is configured correctly.`,
|
|
26
|
+
ln3: `Run ${chalk.cyan("astro db push")} to sync your database schema.`,
|
|
27
|
+
ln4: `Run ${chalk.cyan(devCmd)} to start the dev server. ${chalk.cyanBright("CTRL+C")} to stop.`
|
|
28
|
+
}
|
|
29
|
+
)
|
|
30
|
+
);
|
|
31
|
+
ctx.p.outro(
|
|
32
|
+
`${label("Enjoy your new CMS!", StudioCMSColorwayBg, chalk.bold)} Stuck? Join us on Discord at ${StudioCMSColorway.bold.underline("https://chat.studiocms.dev")}`
|
|
33
|
+
);
|
|
34
|
+
ctx.debug && ctx.logger.debug("Next steps complete");
|
|
35
|
+
}
|
|
36
|
+
export {
|
|
37
|
+
next
|
|
38
|
+
};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import { Option } from "@commander-js/extra-typings";
|
|
2
|
+
import { Command } from "../lib/commander.js";
|
|
3
|
+
import { initCMD } from "./init/index.js";
|
|
4
|
+
await new Command("init").description("Initialize the StudioCMS project after new installation.").summary("Initialize StudioCMS Project").option("-d, --dry-run", "Dry run mode.").option("--skip-banners", "Skip all banners.").addOption(new Option("--debug", "Enable debug mode.").hideHelp(true)).action(initCMD).parseAsync();
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { Option } from "@commander-js/extra-typings";
|
|
2
|
+
import { Command } from "./lib/commander.js";
|
|
3
|
+
import pathUtil from "./lib/pathUtil.js";
|
|
4
|
+
import { CLITitle, readJson } from "./lib/utils.js";
|
|
5
|
+
const pkgJson = readJson(new URL("../../package.json", import.meta.url));
|
|
6
|
+
const { getRelPath } = pathUtil(import.meta.url);
|
|
7
|
+
await new Command("studiocms").description("StudioCMS CLI Utility Toolkit").version(pkgJson.version).addHelpText("beforeAll", CLITitle).showHelpAfterError("(add --help for additional information)").enablePositionalOptions(true).executableDir(getRelPath("cmds")).helpOption("-h, --help", "Display help for command.").addOption(new Option("--color", "Force color output")).addOption(new Option("--no-color", "Disable color output")).command("init", "Initialize the StudioCMS project after new installation.", {
|
|
8
|
+
executableFile: "init.js"
|
|
9
|
+
}).command("get-turso", "Turso CLI Utilities", { executableFile: "get-turso.js" }).parseAsync();
|