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.
Files changed (585) hide show
  1. package/CHANGELOG.md +473 -0
  2. package/LICENSE +1 -1
  3. package/README.md +17 -10
  4. package/auth.d.ts +405 -0
  5. package/core.d.ts +225 -0
  6. package/custom-renderers/index.ts +4 -0
  7. package/custom-renderers/markdocRenderers/markdocReact-components/MarkDocReactRenderer.tsx +8 -0
  8. package/custom-renderers/markdocRenderers/markdocReact-components/MarkDocReactWrapper.astro +13 -0
  9. package/custom-renderers/markdocRenderers/markdocReact.ts +56 -0
  10. package/dist/cli/cmds/get-turso.d.ts +1 -0
  11. package/dist/cli/cmds/get-turso.js +10 -0
  12. package/dist/cli/cmds/init/index.d.ts +4 -0
  13. package/dist/cli/cmds/init/index.js +52 -0
  14. package/dist/cli/cmds/init/steps/data/studiocmsEnv.d.ts +3 -0
  15. package/dist/cli/cmds/init/steps/data/studiocmsEnv.js +71 -0
  16. package/dist/cli/cmds/init/steps/envBuilder.d.ts +21 -0
  17. package/dist/cli/cmds/init/steps/envBuilder.js +368 -0
  18. package/dist/cli/cmds/init/steps/nextSteps.d.ts +2 -0
  19. package/dist/cli/cmds/init/steps/nextSteps.js +38 -0
  20. package/dist/cli/cmds/init.d.ts +1 -0
  21. package/dist/cli/cmds/init.js +4 -0
  22. package/dist/cli/index.d.ts +1 -0
  23. package/dist/cli/index.js +9 -0
  24. package/dist/cli/lib/commander.d.ts +39 -0
  25. package/dist/cli/lib/commander.js +87 -0
  26. package/dist/cli/lib/context.d.ts +28 -0
  27. package/dist/cli/lib/context.js +55 -0
  28. package/dist/cli/lib/pathUtil.d.ts +5 -0
  29. package/dist/cli/lib/pathUtil.js +14 -0
  30. package/dist/cli/lib/runExternal.d.ts +20 -0
  31. package/dist/cli/lib/runExternal.js +40 -0
  32. package/dist/cli/lib/seasonal.d.ts +5 -0
  33. package/dist/cli/lib/seasonal.js +88 -0
  34. package/dist/cli/lib/utils.d.ts +55 -0
  35. package/dist/cli/lib/utils.js +310 -0
  36. package/dist/cli/shared/intro.d.ts +2 -0
  37. package/dist/cli/shared/intro.js +24 -0
  38. package/dist/components/DefaultEditor.astro +138 -0
  39. package/dist/components/FormattedDate.astro +12 -0
  40. package/dist/components/Generator.astro +7 -0
  41. package/dist/components/Renderer.astro +13 -0
  42. package/dist/components/auth/OAuthButton.astro +21 -0
  43. package/dist/components/auth/OAuthButtonStack.astro +19 -0
  44. package/dist/components/auth/StaticAuthCheck.astro +20 -0
  45. package/dist/components/auth/StudioCMSLogoSVG.astro +13 -0
  46. package/dist/components/auth/oAuthButtonProviders.d.ts +8 -0
  47. package/dist/components/auth/oAuthButtonProviders.js +35 -0
  48. package/dist/components/dashboard/AstroCodeDiffsScript.astro +25 -0
  49. package/dist/components/dashboard/BaseHead.astro +41 -0
  50. package/dist/components/dashboard/Code.astro +23 -0
  51. package/dist/components/dashboard/DashboardPageHeader.astro +60 -0
  52. package/dist/components/dashboard/DoubleSidebar.astro +26 -0
  53. package/dist/components/dashboard/Footer.astro +16 -0
  54. package/dist/components/dashboard/MainSidebarContent.astro +124 -0
  55. package/dist/components/dashboard/PageHeader.astro +52 -0
  56. package/dist/components/dashboard/SidebarLink.astro +61 -0
  57. package/dist/components/dashboard/SidebarModals.astro +6 -0
  58. package/dist/components/dashboard/SidebarPluginLink.astro +45 -0
  59. package/dist/components/dashboard/SingleSidebar.astro +23 -0
  60. package/dist/components/dashboard/StudioCMSLogo.astro +12 -0
  61. package/dist/components/dashboard/ThemeManager.astro +53 -0
  62. package/dist/components/dashboard/component-scripts/TinyMDE.astro +6 -0
  63. package/dist/components/dashboard/component-scripts/dateTimeListener.d.ts +1 -0
  64. package/dist/components/dashboard/component-scripts/dateTimeListener.js +14 -0
  65. package/dist/components/dashboard/component-scripts/dateWithTimeAndZone.d.ts +1 -0
  66. package/dist/components/dashboard/component-scripts/dateWithTimeAndZone.js +12 -0
  67. package/dist/components/dashboard/component-scripts/makeClientRoutable.d.ts +1 -0
  68. package/dist/components/dashboard/component-scripts/makeClientRoutable.js +9 -0
  69. package/dist/components/dashboard/component-scripts/timeAgo.d.ts +1 -0
  70. package/dist/components/dashboard/component-scripts/timeAgo.js +21 -0
  71. package/dist/components/dashboard/islands/LoginChecker.astro +52 -0
  72. package/dist/components/dashboard/islands/configuration/ConfigForm.astro +272 -0
  73. package/dist/components/dashboard/islands/configuration/LightVsDark.astro +67 -0
  74. package/dist/components/dashboard/islands/content-mgmt/CreateFolder.astro +91 -0
  75. package/dist/components/dashboard/islands/content-mgmt/CreatePage.astro +332 -0
  76. package/dist/components/dashboard/islands/content-mgmt/EditFolder.astro +112 -0
  77. package/dist/components/dashboard/islands/content-mgmt/EditPage.astro +388 -0
  78. package/dist/components/dashboard/islands/content-mgmt/InnerSidebarElement.astro +230 -0
  79. package/dist/components/dashboard/islands/content-mgmt/PageHeader.astro +387 -0
  80. package/dist/components/dashboard/islands/content-mgmt/PageList.astro +49 -0
  81. package/dist/components/dashboard/islands/content-mgmt/PluginFields.astro +29 -0
  82. package/dist/components/dashboard/islands/content-mgmt/TreeRenderer.astro +75 -0
  83. package/dist/components/dashboard/islands/content-mgmt/TreeSidebarFolder.astro +53 -0
  84. package/dist/components/dashboard/islands/content-mgmt/TreeSidebarLink.astro +51 -0
  85. package/dist/components/dashboard/islands/content-mgmt/runtime.d.ts +10 -0
  86. package/dist/components/dashboard/islands/content-mgmt/runtime.js +33 -0
  87. package/dist/components/dashboard/islands/content-mgmt/shared.d.ts +27 -0
  88. package/dist/components/dashboard/islands/content-mgmt/shared.js +31 -0
  89. package/dist/components/dashboard/islands/dashboard/DashboardGrid.astro +39 -0
  90. package/dist/components/dashboard/islands/dashboard/DashboardGridItem.astro +34 -0
  91. package/dist/components/dashboard/islands/dashboard/Test.astro +5 -0
  92. package/dist/components/dashboard/islands/dashboard/UserName.astro +6 -0
  93. package/dist/components/dashboard/islands/dashboard/shared.d.ts +2 -0
  94. package/dist/components/dashboard/islands/dashboard/shared.js +0 -0
  95. package/dist/components/dashboard/islands/plugins/SettingsRenderer.astro +29 -0
  96. package/dist/components/dashboard/islands/profile/APITokens.astro +267 -0
  97. package/dist/components/dashboard/islands/profile/BasicInfo.astro +107 -0
  98. package/dist/components/dashboard/islands/profile/BasicInfoFallback.astro +43 -0
  99. package/dist/components/dashboard/islands/profile/SocialSignin.astro +151 -0
  100. package/dist/components/dashboard/islands/profile/SocialSigninFallback.astro +83 -0
  101. package/dist/components/dashboard/islands/profile/UpdatePassword.astro +137 -0
  102. package/dist/components/dashboard/islands/profile/UpdatePasswordFallback.astro +47 -0
  103. package/dist/components/dashboard/islands/profile/oAuthButtonProviders.d.ts +8 -0
  104. package/dist/components/dashboard/islands/profile/oAuthButtonProviders.js +35 -0
  105. package/dist/components/dashboard/islands/sidebar/Admin.astro +103 -0
  106. package/dist/components/dashboard/islands/sidebar/Editor.astro +18 -0
  107. package/dist/components/dashboard/islands/sidebar/UserAccount.astro +23 -0
  108. package/dist/components/dashboard/islands/sidebar/VersionCheck.astro +127 -0
  109. package/dist/components/dashboard/islands/sidebar/VersionCheckChangelog.astro +107 -0
  110. package/dist/components/dashboard/islands/user-mgmt/InnerSidebarElement.astro +298 -0
  111. package/dist/components/dashboard/islands/user-mgmt/RankCheck.astro +49 -0
  112. package/dist/components/dashboard/islands/user-mgmt/SocialSignin.astro +88 -0
  113. package/dist/components/dashboard/islands/user-mgmt/UserListItem.astro +60 -0
  114. package/dist/components/dashboard/sidebar-modals/UserManagementModals.astro +103 -0
  115. package/dist/components/dashboard/sidebar-modals/VersionModal.astro +267 -0
  116. package/dist/components/dashboard/sidebarConfig.d.ts +31 -0
  117. package/dist/components/dashboard/sidebarConfig.js +90 -0
  118. package/dist/components/default-grid-items/Recently-created-pages.astro +91 -0
  119. package/dist/components/default-grid-items/Recently-signed-up.astro +71 -0
  120. package/dist/components/default-grid-items/Recently-updated-pages.astro +96 -0
  121. package/dist/components/default-grid-items/Totals.astro +107 -0
  122. package/dist/components/default-grid-items/utils.d.ts +17 -0
  123. package/dist/components/default-grid-items/utils.js +26 -0
  124. package/dist/components/image/CustomImage.astro +90 -0
  125. package/dist/components/user-quick-tools.d.ts +42 -0
  126. package/dist/components/user-quick-tools.js +312 -0
  127. package/dist/config.d.ts +3 -0
  128. package/dist/config.js +4 -0
  129. package/dist/consts.d.ts +61 -0
  130. package/dist/consts.js +39 -0
  131. package/dist/db/config.d.ts +4 -0
  132. package/dist/db/config.js +6 -0
  133. package/dist/db/tables.js +168 -0
  134. package/dist/errors.d.ts +19 -0
  135. package/dist/errors.js +11 -0
  136. package/dist/index.d.ts +152 -0
  137. package/dist/index.js +1177 -0
  138. package/dist/layouts/auth/AuthLayout.astro +74 -0
  139. package/dist/layouts/auth/FallbackCanvas.astro +123 -0
  140. package/dist/layouts/auth/ThemeManager.astro +53 -0
  141. package/dist/layouts/auth/ThreeCanvasLoader.astro +18 -0
  142. package/dist/layouts/dashboard/Layout.astro +64 -0
  143. package/dist/lib/auth/encryption.d.ts +30 -0
  144. package/dist/lib/auth/encryption.js +39 -0
  145. package/dist/lib/auth/password.d.ts +27 -0
  146. package/dist/lib/auth/password.js +42 -0
  147. package/dist/lib/auth/rate-limit.d.ts +136 -0
  148. package/dist/lib/auth/rate-limit.js +214 -0
  149. package/dist/lib/auth/session.d.ts +85 -0
  150. package/dist/lib/auth/session.js +93 -0
  151. package/dist/lib/auth/types.d.ts +83 -0
  152. package/dist/lib/auth/types.js +0 -0
  153. package/dist/lib/auth/user.d.ts +148 -0
  154. package/dist/lib/auth/user.js +133 -0
  155. package/dist/lib/dashboardGrid.d.ts +119 -0
  156. package/dist/lib/dashboardGrid.js +0 -0
  157. package/dist/lib/dynamic-sitemap/index.d.ts +42 -0
  158. package/dist/lib/dynamic-sitemap/index.js +45 -0
  159. package/dist/lib/dynamic-sitemap/sitemap-index.xml.d.ts +8 -0
  160. package/dist/lib/dynamic-sitemap/sitemap-index.xml.js +20 -0
  161. package/dist/lib/dynamic-sitemap/sitemap-index.xml.ts +45 -0
  162. package/dist/lib/head.d.ts +9 -0
  163. package/dist/lib/head.js +65 -0
  164. package/dist/lib/headDefaults.d.ts +18 -0
  165. package/dist/lib/headDefaults.js +75 -0
  166. package/dist/lib/i18n/LanguageSelector.astro +103 -0
  167. package/dist/lib/i18n/config.d.ts +16 -0
  168. package/dist/lib/i18n/config.js +8 -0
  169. package/dist/lib/i18n/index.d.ts +228 -0
  170. package/dist/lib/i18n/index.js +63 -0
  171. package/dist/lib/i18n/translations/de.json +43 -0
  172. package/dist/lib/i18n/translations/en-us.json +63 -0
  173. package/dist/lib/index.d.ts +7 -0
  174. package/dist/lib/index.js +7 -0
  175. package/dist/lib/jsonUtils.d.ts +2 -0
  176. package/dist/lib/jsonUtils.js +11 -0
  177. package/dist/lib/makeAPIRoute.d.ts +45 -0
  178. package/dist/lib/makeAPIRoute.js +16 -0
  179. package/dist/lib/makePublicRoute.d.ts +7 -0
  180. package/dist/lib/makePublicRoute.js +6 -0
  181. package/dist/lib/pathGenerators.d.ts +20 -0
  182. package/dist/lib/pathGenerators.js +66 -0
  183. package/dist/lib/plugins/dashboard-pages.d.ts +71 -0
  184. package/dist/lib/plugins/dashboard-pages.js +11 -0
  185. package/dist/lib/plugins/frontend-navigation.d.ts +18 -0
  186. package/dist/lib/plugins/frontend-navigation.js +39 -0
  187. package/dist/lib/plugins/index.d.ts +2 -0
  188. package/dist/lib/plugins/index.js +2 -0
  189. package/dist/lib/removeLeadingTrailingSlashes.d.ts +7 -0
  190. package/dist/lib/removeLeadingTrailingSlashes.js +13 -0
  191. package/dist/lib/renderer/astro-remark.d.ts +13 -0
  192. package/dist/lib/renderer/astro-remark.js +11 -0
  193. package/dist/lib/renderer/contentRenderer.d.ts +13 -0
  194. package/dist/lib/renderer/contentRenderer.js +31 -0
  195. package/dist/lib/renderer/errors.d.ts +5 -0
  196. package/dist/lib/renderer/errors.js +25 -0
  197. package/dist/lib/renderer/markdoc-renderers/markdocHTML.d.ts +3 -0
  198. package/dist/lib/renderer/markdoc-renderers/markdocHTML.js +14 -0
  199. package/dist/lib/renderer/markdoc-renderers/markdocReactStatic.d.ts +3 -0
  200. package/dist/lib/renderer/markdoc-renderers/markdocReactStatic.js +14 -0
  201. package/dist/lib/renderer/markdoc.d.ts +11 -0
  202. package/dist/lib/renderer/markdoc.js +28 -0
  203. package/dist/lib/renderer/mdx.d.ts +10 -0
  204. package/dist/lib/renderer/mdx.js +37 -0
  205. package/dist/lib/renderer/runtime.d.ts +8 -0
  206. package/dist/lib/renderer/runtime.js +30 -0
  207. package/dist/lib/renderer/shared.d.ts +15 -0
  208. package/dist/lib/renderer/shared.js +13 -0
  209. package/dist/lib/renderer/studiocms.d.ts +11 -0
  210. package/dist/lib/renderer/studiocms.js +22 -0
  211. package/dist/lib/renderer/types.d.ts +12 -0
  212. package/dist/lib/renderer/types.js +0 -0
  213. package/dist/lib/robots/core.d.ts +24 -0
  214. package/dist/lib/robots/core.js +187 -0
  215. package/dist/lib/robots/index.d.ts +11 -0
  216. package/dist/lib/robots/index.js +47 -0
  217. package/dist/lib/robots/types.d.ts +185 -0
  218. package/dist/lib/robots/types.js +0 -0
  219. package/dist/lib/robots/utils.d.ts +22 -0
  220. package/dist/lib/robots/utils.js +22 -0
  221. package/dist/lib/routeMap.d.ts +257 -0
  222. package/dist/lib/routeMap.js +249 -0
  223. package/dist/lib/urlGen.d.ts +11 -0
  224. package/dist/lib/urlGen.js +26 -0
  225. package/dist/lib/webVitals/checkForWebVitalsPlugin.d.ts +18 -0
  226. package/dist/lib/webVitals/checkForWebVitalsPlugin.js +82 -0
  227. package/dist/lib/webVitals/consts.d.ts +240 -0
  228. package/dist/lib/webVitals/consts.js +40 -0
  229. package/dist/lib/webVitals/dashboard-grid-items/CoreVitals.astro +66 -0
  230. package/dist/lib/webVitals/dashboard-grid-items/MetricCard.astro +24 -0
  231. package/dist/lib/webVitals/dashboard-grid-items/SummaryCard.astro +56 -0
  232. package/dist/lib/webVitals/dashboard-grid-items/metric.css +103 -0
  233. package/dist/lib/webVitals/dashboard-grid-items/shared.d.ts +29 -0
  234. package/dist/lib/webVitals/dashboard-grid-items/shared.js +35 -0
  235. package/dist/lib/webVitals/pages/analytics/body.astro +186 -0
  236. package/dist/lib/webVitals/pages/analytics/header.astro +42 -0
  237. package/dist/lib/webVitals/schemas.d.ts +78 -0
  238. package/dist/lib/webVitals/schemas.js +37 -0
  239. package/dist/lib/webVitals/types.d.ts +156 -0
  240. package/dist/lib/webVitals/types.js +0 -0
  241. package/dist/lib/webVitals/utils/buildDataObject.d.ts +8 -0
  242. package/dist/lib/webVitals/utils/buildDataObject.js +28 -0
  243. package/dist/lib/webVitals/utils/buildPageRouteDataObject.d.ts +15 -0
  244. package/dist/lib/webVitals/utils/buildPageRouteDataObject.js +70 -0
  245. package/dist/lib/webVitals/utils/buildPerPageDataObject.d.ts +23 -0
  246. package/dist/lib/webVitals/utils/buildPerPageDataObject.js +209 -0
  247. package/dist/lib/webVitals/utils/checkDate.d.ts +5 -0
  248. package/dist/lib/webVitals/utils/checkDate.js +19 -0
  249. package/dist/lib/webVitals/utils/webVitalsUtils.d.ts +24 -0
  250. package/dist/lib/webVitals/utils/webVitalsUtils.js +234 -0
  251. package/dist/lib/webVitals/webVital.d.ts +20 -0
  252. package/dist/lib/webVitals/webVital.js +40 -0
  253. package/dist/lib/webVitals/webVitalsRouteSummary.d.ts +19 -0
  254. package/dist/lib/webVitals/webVitalsRouteSummary.js +59 -0
  255. package/dist/lib/webVitals/webVitalsSummary.d.ts +19 -0
  256. package/dist/lib/webVitals/webVitalsSummary.js +49 -0
  257. package/dist/plugins.d.ts +2 -0
  258. package/dist/plugins.js +6 -0
  259. package/dist/routes/api/render.astro +25 -0
  260. package/dist/routes/auth/api/auth0/callback.d.ts +4 -0
  261. package/dist/routes/auth/api/auth0/callback.js +117 -0
  262. package/dist/routes/auth/api/auth0/index.d.ts +4 -0
  263. package/dist/routes/auth/api/auth0/index.js +36 -0
  264. package/dist/routes/auth/api/auth0/shared.d.ts +13 -0
  265. package/dist/routes/auth/api/auth0/shared.js +24 -0
  266. package/dist/routes/auth/api/discord/callback.d.ts +4 -0
  267. package/dist/routes/auth/api/discord/callback.js +112 -0
  268. package/dist/routes/auth/api/discord/index.d.ts +4 -0
  269. package/dist/routes/auth/api/discord/index.js +36 -0
  270. package/dist/routes/auth/api/discord/shared.d.ts +12 -0
  271. package/dist/routes/auth/api/discord/shared.js +17 -0
  272. package/dist/routes/auth/api/github/callback.d.ts +4 -0
  273. package/dist/routes/auth/api/github/callback.js +112 -0
  274. package/dist/routes/auth/api/github/index.d.ts +4 -0
  275. package/dist/routes/auth/api/github/index.js +36 -0
  276. package/dist/routes/auth/api/github/shared.d.ts +13 -0
  277. package/dist/routes/auth/api/github/shared.js +14 -0
  278. package/dist/routes/auth/api/google/callback.d.ts +4 -0
  279. package/dist/routes/auth/api/google/callback.js +115 -0
  280. package/dist/routes/auth/api/google/index.d.ts +4 -0
  281. package/dist/routes/auth/api/google/index.js +38 -0
  282. package/dist/routes/auth/api/google/shared.d.ts +12 -0
  283. package/dist/routes/auth/api/google/shared.js +19 -0
  284. package/dist/routes/auth/api/login.d.ts +4 -0
  285. package/dist/routes/auth/api/login.js +46 -0
  286. package/dist/routes/auth/api/logout.d.ts +5 -0
  287. package/dist/routes/auth/api/logout.js +55 -0
  288. package/dist/routes/auth/api/register.d.ts +4 -0
  289. package/dist/routes/auth/api/register.js +64 -0
  290. package/dist/routes/auth/api/shared.d.ts +2 -0
  291. package/dist/routes/auth/api/shared.js +21 -0
  292. package/dist/routes/auth/login.astro +67 -0
  293. package/dist/routes/auth/logout.astro +28 -0
  294. package/dist/routes/auth/signup.astro +70 -0
  295. package/dist/routes/dashboard/[...pluginPage].astro +88 -0
  296. package/dist/routes/dashboard/configuration.astro +27 -0
  297. package/dist/routes/dashboard/content-management/createfolder.astro +56 -0
  298. package/dist/routes/dashboard/content-management/createpage.astro +59 -0
  299. package/dist/routes/dashboard/content-management/diff.astro +100 -0
  300. package/dist/routes/dashboard/content-management/editfolder.astro +40 -0
  301. package/dist/routes/dashboard/content-management/editpage.astro +44 -0
  302. package/dist/routes/dashboard/content-management/index.astro +57 -0
  303. package/dist/routes/dashboard/index.astro +24 -0
  304. package/dist/routes/dashboard/password-reset.astro +169 -0
  305. package/dist/routes/dashboard/plugins/[plugin].astro +60 -0
  306. package/dist/routes/dashboard/profile.astro +57 -0
  307. package/dist/routes/dashboard/studiocms_api/dashboard/api-tokens.d.ts +5 -0
  308. package/dist/routes/dashboard/studiocms_api/dashboard/api-tokens.js +90 -0
  309. package/dist/routes/dashboard/studiocms_api/dashboard/config.d.ts +4 -0
  310. package/dist/routes/dashboard/studiocms_api/dashboard/config.js +63 -0
  311. package/dist/routes/dashboard/studiocms_api/dashboard/content/folder.d.ts +6 -0
  312. package/dist/routes/dashboard/studiocms_api/dashboard/content/folder.js +121 -0
  313. package/dist/routes/dashboard/studiocms_api/dashboard/content/page.d.ts +6 -0
  314. package/dist/routes/dashboard/studiocms_api/dashboard/content/page.js +257 -0
  315. package/dist/routes/dashboard/studiocms_api/dashboard/create-reset-link.d.ts +4 -0
  316. package/dist/routes/dashboard/studiocms_api/dashboard/create-reset-link.js +59 -0
  317. package/dist/routes/dashboard/studiocms_api/dashboard/create-user-invite.d.ts +4 -0
  318. package/dist/routes/dashboard/studiocms_api/dashboard/create-user-invite.js +105 -0
  319. package/dist/routes/dashboard/studiocms_api/dashboard/create-user.d.ts +4 -0
  320. package/dist/routes/dashboard/studiocms_api/dashboard/create-user.js +100 -0
  321. package/dist/routes/dashboard/studiocms_api/dashboard/partials/Editor.astro +61 -0
  322. package/dist/routes/dashboard/studiocms_api/dashboard/partials/LiveRender.astro +30 -0
  323. package/dist/routes/dashboard/studiocms_api/dashboard/partials/UserListItems.astro +39 -0
  324. package/dist/routes/dashboard/studiocms_api/dashboard/plugins/[plugin].d.ts +2 -0
  325. package/dist/routes/dashboard/studiocms_api/dashboard/plugins/[plugin].js +32 -0
  326. package/dist/routes/dashboard/studiocms_api/dashboard/profile.d.ts +4 -0
  327. package/dist/routes/dashboard/studiocms_api/dashboard/profile.js +130 -0
  328. package/dist/routes/dashboard/studiocms_api/dashboard/reset-password.d.ts +4 -0
  329. package/dist/routes/dashboard/studiocms_api/dashboard/reset-password.js +105 -0
  330. package/dist/routes/dashboard/studiocms_api/dashboard/search-list.d.ts +4 -0
  331. package/dist/routes/dashboard/studiocms_api/dashboard/search-list.js +55 -0
  332. package/dist/routes/dashboard/studiocms_api/dashboard/users.d.ts +5 -0
  333. package/dist/routes/dashboard/studiocms_api/dashboard/users.js +92 -0
  334. package/dist/routes/dashboard/studiocms_api/dashboard/verify-session.d.ts +2 -0
  335. package/dist/routes/dashboard/studiocms_api/dashboard/verify-session.js +72 -0
  336. package/dist/routes/dashboard/user-management/edit.astro +593 -0
  337. package/dist/routes/dashboard/user-management/index.astro +67 -0
  338. package/dist/routes/error-pages/404.astro +35 -0
  339. package/dist/routes/firstTimeSetupRoutes/1-start.astro +253 -0
  340. package/dist/routes/firstTimeSetupRoutes/2-next.astro +208 -0
  341. package/dist/routes/firstTimeSetupRoutes/3-done.astro +95 -0
  342. package/dist/routes/firstTimeSetupRoutes/api/step-1.d.ts +2 -0
  343. package/dist/routes/firstTimeSetupRoutes/api/step-1.js +126 -0
  344. package/dist/routes/firstTimeSetupRoutes/api/step-2.d.ts +2 -0
  345. package/dist/routes/firstTimeSetupRoutes/api/step-2.js +110 -0
  346. package/dist/routes/firstTimeSetupRoutes/components/Layout.astro +41 -0
  347. package/dist/routes/firstTimeSetupRoutes/components/PageHeader.astro +60 -0
  348. package/dist/routes/firstTimeSetupRoutes/components/TabItem.astro +44 -0
  349. package/dist/routes/firstTimeSetupRoutes/components/Tabs.astro +170 -0
  350. package/dist/routes/firstTimeSetupRoutes/snippets/opt1-astro.config.diff +14 -0
  351. package/dist/routes/firstTimeSetupRoutes/snippets/opt2-astro.config.diff +9 -0
  352. package/dist/routes/firstTimeSetupRoutes/snippets/opt2-studiocms.config.diff +5 -0
  353. package/dist/routes/rest/utils/auth-token.d.ts +17 -0
  354. package/dist/routes/rest/utils/auth-token.js +31 -0
  355. package/dist/routes/rest/v1/folders/[id].d.ts +6 -0
  356. package/dist/routes/rest/v1/folders/[id].js +106 -0
  357. package/dist/routes/rest/v1/folders/index.d.ts +5 -0
  358. package/dist/routes/rest/v1/folders/index.js +88 -0
  359. package/dist/routes/rest/v1/pages/[id]/history/[diffid].d.ts +4 -0
  360. package/dist/routes/rest/v1/pages/[id]/history/[diffid].js +55 -0
  361. package/dist/routes/rest/v1/pages/[id]/history/index.d.ts +4 -0
  362. package/dist/routes/rest/v1/pages/[id]/history/index.js +61 -0
  363. package/dist/routes/rest/v1/pages/[id]/index.d.ts +6 -0
  364. package/dist/routes/rest/v1/pages/[id]/index.js +165 -0
  365. package/dist/routes/rest/v1/pages/index.d.ts +5 -0
  366. package/dist/routes/rest/v1/pages/index.js +113 -0
  367. package/dist/routes/rest/v1/public/folders/[id].d.ts +4 -0
  368. package/dist/routes/rest/v1/public/folders/[id].js +43 -0
  369. package/dist/routes/rest/v1/public/folders/index.d.ts +4 -0
  370. package/dist/routes/rest/v1/public/folders/index.js +49 -0
  371. package/dist/routes/rest/v1/public/pages/[id].d.ts +4 -0
  372. package/dist/routes/rest/v1/public/pages/[id].js +46 -0
  373. package/dist/routes/rest/v1/public/pages/index.d.ts +4 -0
  374. package/dist/routes/rest/v1/public/pages/index.js +61 -0
  375. package/dist/routes/rest/v1/settings/index.d.ts +5 -0
  376. package/dist/routes/rest/v1/settings/index.js +75 -0
  377. package/dist/routes/rest/v1/users/[id].d.ts +6 -0
  378. package/dist/routes/rest/v1/users/[id].js +212 -0
  379. package/dist/routes/rest/v1/users/index.d.ts +5 -0
  380. package/dist/routes/rest/v1/users/index.js +138 -0
  381. package/dist/routes/sdk/fallback-list-pages.json.d.ts +2 -0
  382. package/dist/routes/sdk/fallback-list-pages.json.js +19 -0
  383. package/dist/routes/sdk/fallback-list-pages.json.ts +22 -0
  384. package/dist/routes/sdk/full-changelog.json.d.ts +16 -0
  385. package/dist/routes/sdk/full-changelog.json.js +170 -0
  386. package/dist/routes/sdk/full-changelog.json.ts +224 -0
  387. package/dist/routes/sdk/list-pages.d.ts +4 -0
  388. package/dist/routes/sdk/list-pages.js +34 -0
  389. package/dist/routes/sdk/update-latest-version-cache.d.ts +4 -0
  390. package/dist/routes/sdk/update-latest-version-cache.js +41 -0
  391. package/dist/runtime/AstroComponentProxy.d.ts +29 -0
  392. package/dist/runtime/AstroComponentProxy.js +47 -0
  393. package/dist/runtime/decoder/decode-codepoint.d.ts +18 -0
  394. package/dist/runtime/decoder/decode-codepoint.js +58 -0
  395. package/dist/runtime/decoder/decode-data-html.d.ts +1 -0
  396. package/dist/runtime/decoder/decode-data-html.js +7 -0
  397. package/dist/runtime/decoder/decode-data-xml.d.ts +1 -0
  398. package/dist/runtime/decoder/decode-data-xml.js +7 -0
  399. package/dist/runtime/decoder/index.d.ts +34 -0
  400. package/dist/runtime/decoder/index.js +18 -0
  401. package/dist/runtime/decoder/util.d.ts +208 -0
  402. package/dist/runtime/decoder/util.js +415 -0
  403. package/dist/schemas/config/auth.d.ts +175 -0
  404. package/dist/schemas/config/auth.js +65 -0
  405. package/dist/schemas/config/componentoverrides.d.ts +17 -0
  406. package/dist/schemas/config/componentoverrides.js +14 -0
  407. package/dist/schemas/config/dashboard.d.ts +154 -0
  408. package/dist/schemas/config/dashboard.js +59 -0
  409. package/dist/schemas/config/defaultFrontend.d.ts +125 -0
  410. package/dist/schemas/config/defaultFrontend.js +57 -0
  411. package/dist/schemas/config/developer.d.ts +15 -0
  412. package/dist/schemas/config/developer.js +14 -0
  413. package/dist/schemas/config/imageService.d.ts +13 -0
  414. package/dist/schemas/config/imageService.js +12 -0
  415. package/dist/schemas/config/index.d.ts +1153 -0
  416. package/dist/schemas/config/index.js +95 -0
  417. package/dist/schemas/config/integrations.d.ts +14 -0
  418. package/dist/schemas/config/integrations.js +12 -0
  419. package/dist/schemas/config/markdoc.d.ts +172 -0
  420. package/dist/schemas/config/markdoc.js +68 -0
  421. package/dist/schemas/config/mdx.d.ts +455 -0
  422. package/dist/schemas/config/mdx.js +71 -0
  423. package/dist/schemas/config/rendererConfig.d.ts +659 -0
  424. package/dist/schemas/config/rendererConfig.js +51 -0
  425. package/dist/schemas/config/sdk.d.ts +167 -0
  426. package/dist/schemas/config/sdk.js +85 -0
  427. package/dist/schemas/config/studiocms-markdown-remark.d.ts +292 -0
  428. package/dist/schemas/config/studiocms-markdown-remark.js +63 -0
  429. package/dist/schemas/index.d.ts +2 -0
  430. package/dist/schemas/index.js +2 -0
  431. package/dist/schemas/plugins/index.d.ts +7373 -0
  432. package/dist/schemas/plugins/index.js +192 -0
  433. package/dist/schemas/plugins/shared.d.ts +1752 -0
  434. package/dist/schemas/plugins/shared.js +221 -0
  435. package/dist/scripts/formListener.d.ts +16 -0
  436. package/dist/scripts/formListener.js +46 -0
  437. package/dist/scripts/three.d.ts +1 -0
  438. package/dist/scripts/three.js +277 -0
  439. package/dist/scripts/utils/fitModelToViewport.d.ts +8 -0
  440. package/dist/scripts/utils/fitModelToViewport.js +19 -0
  441. package/dist/sdk/StudioCMSVirtualCache.d.ts +283 -0
  442. package/dist/sdk/StudioCMSVirtualCache.js +685 -0
  443. package/dist/sdk/cache.d.ts +11 -0
  444. package/dist/sdk/cache.js +12 -0
  445. package/dist/sdk/core.d.ts +865 -0
  446. package/dist/sdk/core.js +1966 -0
  447. package/dist/sdk/errors.d.ts +21 -0
  448. package/dist/sdk/errors.js +11 -0
  449. package/dist/sdk/index.d.ts +371 -0
  450. package/dist/sdk/index.js +8 -0
  451. package/dist/sdk/lib/foldertree.d.ts +50 -0
  452. package/dist/sdk/lib/foldertree.js +123 -0
  453. package/dist/sdk/lib/generators.d.ts +30 -0
  454. package/dist/sdk/lib/generators.js +25 -0
  455. package/dist/sdk/lib/packages.d.ts +8 -0
  456. package/dist/sdk/lib/packages.js +14 -0
  457. package/dist/sdk/lib/parsers.d.ts +14 -0
  458. package/dist/sdk/lib/parsers.js +10 -0
  459. package/dist/sdk/lib/users.d.ts +19 -0
  460. package/dist/sdk/lib/users.js +26 -0
  461. package/dist/sdk/tables.d.ts +1198 -0
  462. package/dist/sdk/tables.js +55 -0
  463. package/dist/sdk/types/index.d.ts +175 -0
  464. package/dist/sdk/types/index.js +0 -0
  465. package/dist/sdk/types/tableDefs.d.ts +75 -0
  466. package/dist/sdk/types/tableDefs.js +0 -0
  467. package/dist/sdk/types/tsAlias.d.ts +155 -0
  468. package/dist/sdk/types/tsAlias.js +0 -0
  469. package/dist/sdk/utils/db.d.ts +5 -0
  470. package/dist/sdk/utils/db.js +15 -0
  471. package/dist/stubs/auth-lib.d.ts +2 -0
  472. package/dist/stubs/auth-lib.js +519 -0
  473. package/dist/stubs/auth-scripts.d.ts +2 -0
  474. package/dist/stubs/auth-scripts.js +29 -0
  475. package/dist/stubs/auth-utils.d.ts +2 -0
  476. package/dist/stubs/auth-utils.js +36 -0
  477. package/dist/stubs/changelog.d.ts +2 -0
  478. package/dist/stubs/changelog.js +16 -0
  479. package/dist/stubs/components.d.ts +2 -0
  480. package/dist/stubs/components.js +67 -0
  481. package/dist/stubs/core.d.ts +2 -0
  482. package/dist/stubs/core.js +49 -0
  483. package/dist/stubs/i18n-dts.d.ts +2 -0
  484. package/dist/stubs/i18n-dts.js +117 -0
  485. package/dist/stubs/images.d.ts +1 -0
  486. package/dist/stubs/images.js +30 -0
  487. package/dist/stubs/index.d.ts +1 -0
  488. package/dist/stubs/index.js +40 -0
  489. package/dist/stubs/lib.d.ts +2 -0
  490. package/dist/stubs/lib.js +123 -0
  491. package/dist/stubs/plugins.d.ts +2 -0
  492. package/dist/stubs/plugins.js +60 -0
  493. package/dist/stubs/proxy.d.ts +2 -0
  494. package/dist/stubs/proxy.js +40 -0
  495. package/dist/stubs/renderer-config.d.ts +2 -0
  496. package/dist/stubs/renderer-config.js +18 -0
  497. package/dist/stubs/renderer-markdownConfig.d.ts +2 -0
  498. package/dist/stubs/renderer-markdownConfig.js +17 -0
  499. package/dist/stubs/renderer.d.ts +2 -0
  500. package/dist/stubs/renderer.js +44 -0
  501. package/dist/stubs/sdk.d.ts +2 -0
  502. package/dist/stubs/sdk.js +202 -0
  503. package/dist/stubs/webVitals.d.ts +2 -0
  504. package/dist/stubs/webVitals.js +40 -0
  505. package/dist/styles/404.css +47 -0
  506. package/dist/styles/SyntaxFont.woff2 +0 -0
  507. package/dist/styles/authlayout.css +138 -0
  508. package/dist/styles/dashboard-base.css +493 -0
  509. package/dist/styles/dashboard-code.css +33 -0
  510. package/dist/styles/dashboard-diff.css +389 -0
  511. package/dist/styles/dashboard-tiny-mde.css +224 -0
  512. package/dist/styles/md-remark-callouts/github.css +56 -0
  513. package/dist/styles/md-remark-callouts/obsidian.css +66 -0
  514. package/dist/styles/md-remark-callouts/vitepress.css +58 -0
  515. package/dist/styles/md-remark-headings.css +48 -0
  516. package/dist/types.d.ts +48 -0
  517. package/dist/types.js +0 -0
  518. package/dist/utils/addAPIRoutes.d.ts +9 -0
  519. package/dist/utils/addAPIRoutes.js +33 -0
  520. package/dist/utils/addIntegrationArray.d.ts +24 -0
  521. package/dist/utils/addIntegrationArray.js +11 -0
  522. package/dist/utils/addIntegrationArrayWithCheck.d.ts +11 -0
  523. package/dist/utils/addIntegrationArrayWithCheck.js +24 -0
  524. package/dist/utils/astroConfigCheck.d.ts +8 -0
  525. package/dist/utils/astroConfigCheck.js +31 -0
  526. package/dist/utils/astroEnvConfig.d.ts +45 -0
  527. package/dist/utils/astroEnvConfig.js +9 -0
  528. package/dist/utils/authEnvCheck.d.ts +38 -0
  529. package/dist/utils/authEnvCheck.js +82 -0
  530. package/dist/utils/changelog.d.ts +1 -0
  531. package/dist/utils/changelog.js +53 -0
  532. package/dist/utils/changelogLoader.d.ts +15 -0
  533. package/dist/utils/changelogLoader.js +104 -0
  534. package/dist/utils/checkENV.d.ts +27 -0
  535. package/dist/utils/checkENV.js +115 -0
  536. package/dist/utils/configManager.d.ts +22 -0
  537. package/dist/utils/configManager.js +98 -0
  538. package/dist/utils/configResolver.d.ts +283 -0
  539. package/dist/utils/configResolver.js +105 -0
  540. package/dist/utils/defineStudioCMSConfig.d.ts +165 -0
  541. package/dist/utils/defineStudioCMSConfig.js +6 -0
  542. package/dist/utils/getLabelForPermissionLevel.d.ts +2 -0
  543. package/dist/utils/getLabelForPermissionLevel.js +17 -0
  544. package/dist/utils/injectRouteArray.d.ts +19 -0
  545. package/dist/utils/injectRouteArray.js +75 -0
  546. package/dist/utils/integrationLogger.d.ts +7 -0
  547. package/dist/utils/integrationLogger.js +18 -0
  548. package/dist/utils/integrations.d.ts +4 -0
  549. package/dist/utils/integrations.js +32 -0
  550. package/dist/utils/isDashboardRoute.d.ts +7 -0
  551. package/dist/utils/isDashboardRoute.js +10 -0
  552. package/dist/utils/loginBackgrounds/studiocms-blobs-dark.png +0 -0
  553. package/dist/utils/loginBackgrounds/studiocms-blobs-light.png +0 -0
  554. package/dist/utils/loginBackgrounds/studiocms-blocks-dark.png +0 -0
  555. package/dist/utils/loginBackgrounds/studiocms-blocks-light.png +0 -0
  556. package/dist/utils/loginBackgrounds/studiocms-curves-dark.png +0 -0
  557. package/dist/utils/loginBackgrounds/studiocms-curves-light.png +0 -0
  558. package/dist/utils/makePageTitle.d.ts +3 -0
  559. package/dist/utils/makePageTitle.js +7 -0
  560. package/dist/utils/pageListPackageLabel.d.ts +4 -0
  561. package/dist/utils/pageListPackageLabel.js +12 -0
  562. package/dist/utils/readJson.d.ts +1 -0
  563. package/dist/utils/readJson.js +7 -0
  564. package/dist/utils/routeBuilder.d.ts +18 -0
  565. package/dist/utils/routeBuilder.js +96 -0
  566. package/dist/utils/safeString.d.ts +1 -0
  567. package/dist/utils/safeString.js +6 -0
  568. package/dist/utils/simpleResponse.d.ts +1 -0
  569. package/dist/utils/simpleResponse.js +29 -0
  570. package/dist/utils/validImages.d.ts +13 -0
  571. package/dist/utils/validImages.js +39 -0
  572. package/dist/virtual.d.js +0 -0
  573. package/dist/virtual.d.ts +5 -0
  574. package/package.json +180 -59
  575. package/renderer.d.ts +25 -0
  576. package/static/studiocms-resources/auth/studiocms-logo.glb +0 -0
  577. package/static/studiocms-resources/core/favicon-dark.png +0 -0
  578. package/static/studiocms-resources/core/favicon-light.png +0 -0
  579. package/static/studiocms-resources/core/favicon.svg +15 -0
  580. package/studiocms-cli.mjs +13 -0
  581. package/ui.d.ts +291 -0
  582. package/src/blog/index.ts +0 -35
  583. package/src/index.ts +0 -25
  584. package/src/integration.ts +0 -130
  585. 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,4 @@
1
+ import type { instanceCommand } from '../../lib/commander.js';
2
+ import { getContext } from '../../lib/context.js';
3
+ export { getContext };
4
+ export declare function initCMD(this: instanceCommand): Promise<void>;
@@ -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,3 @@
1
+ import type { EnvBuilderOptions } from '../envBuilder.js';
2
+ export declare const ExampleEnv: string;
3
+ export declare function buildEnvFile(envBuilderOpts: EnvBuilderOptions): string;
@@ -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,2 @@
1
+ import type { Context } from '../../../lib/context.js';
2
+ export declare function next(ctx: Pick<Context, 'cwd' | 'packageManager' | 'skipBanners' | 'debug' | 'logger' | 'p'>): Promise<void>;
@@ -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();