studiocms 0.1.0-beta.10

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 (582) hide show
  1. package/CHANGELOG.md +501 -0
  2. package/LICENSE +21 -0
  3. package/README.md +59 -0
  4. package/custom-renderers/index.ts +4 -0
  5. package/custom-renderers/markdocRenderers/markdocReact-components/MarkDocReactRenderer.tsx +8 -0
  6. package/custom-renderers/markdocRenderers/markdocReact-components/MarkDocReactWrapper.astro +13 -0
  7. package/custom-renderers/markdocRenderers/markdocReact.ts +56 -0
  8. package/dist/auth.d.js +0 -0
  9. package/dist/auth.d.ts +397 -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 +36 -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 +77 -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 +317 -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 +317 -0
  73. package/dist/components/dashboard/islands/configuration/LightVsDark.astro +67 -0
  74. package/dist/components/dashboard/islands/content-mgmt/CreateFolder.astro +118 -0
  75. package/dist/components/dashboard/islands/content-mgmt/CreatePage.astro +380 -0
  76. package/dist/components/dashboard/islands/content-mgmt/EditFolder.astro +138 -0
  77. package/dist/components/dashboard/islands/content-mgmt/EditPage.astro +432 -0
  78. package/dist/components/dashboard/islands/content-mgmt/InnerSidebarElement.astro +299 -0
  79. package/dist/components/dashboard/islands/content-mgmt/PageHeader.astro +455 -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 +306 -0
  97. package/dist/components/dashboard/islands/profile/BasicInfo.astro +140 -0
  98. package/dist/components/dashboard/islands/profile/BasicInfoFallback.astro +43 -0
  99. package/dist/components/dashboard/islands/profile/SocialSignin.astro +181 -0
  100. package/dist/components/dashboard/islands/profile/SocialSigninFallback.astro +83 -0
  101. package/dist/components/dashboard/islands/profile/UpdatePassword.astro +166 -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/UserAccount.astro +23 -0
  106. package/dist/components/dashboard/islands/sidebar/VersionCheck.astro +127 -0
  107. package/dist/components/dashboard/islands/sidebar/VersionCheckChangelog.astro +107 -0
  108. package/dist/components/dashboard/islands/user-mgmt/InnerSidebarElement.astro +348 -0
  109. package/dist/components/dashboard/islands/user-mgmt/RankCheck.astro +49 -0
  110. package/dist/components/dashboard/islands/user-mgmt/SocialSignin.astro +109 -0
  111. package/dist/components/dashboard/islands/user-mgmt/UserListItem.astro +60 -0
  112. package/dist/components/dashboard/sidebar-modals/UserManagementModals.astro +103 -0
  113. package/dist/components/dashboard/sidebar-modals/VersionModal.astro +267 -0
  114. package/dist/components/dashboard/sidebarConfig.d.ts +32 -0
  115. package/dist/components/dashboard/sidebarConfig.js +88 -0
  116. package/dist/components/default-grid-items/Recently-created-pages.astro +91 -0
  117. package/dist/components/default-grid-items/Recently-signed-up.astro +71 -0
  118. package/dist/components/default-grid-items/Recently-updated-pages.astro +96 -0
  119. package/dist/components/default-grid-items/Totals.astro +107 -0
  120. package/dist/components/default-grid-items/utils.d.ts +17 -0
  121. package/dist/components/default-grid-items/utils.js +26 -0
  122. package/dist/components/image/CustomImage.astro +90 -0
  123. package/dist/components/user-quick-tools.d.ts +42 -0
  124. package/dist/components/user-quick-tools.js +312 -0
  125. package/dist/config.d.ts +3 -0
  126. package/dist/config.js +4 -0
  127. package/dist/consts.d.ts +61 -0
  128. package/dist/consts.js +39 -0
  129. package/dist/core.d.js +0 -0
  130. package/dist/core.d.ts +226 -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 +1179 -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 +114 -0
  167. package/dist/lib/i18n/client.d.ts +591 -0
  168. package/dist/lib/i18n/client.js +83 -0
  169. package/dist/lib/i18n/config.d.ts +16 -0
  170. package/dist/lib/i18n/config.js +8 -0
  171. package/dist/lib/i18n/index.d.ts +578 -0
  172. package/dist/lib/i18n/index.js +63 -0
  173. package/dist/lib/i18n/translations/de.json +64 -0
  174. package/dist/lib/i18n/translations/en-us.json +238 -0
  175. package/dist/lib/i18n/translations/es.json +64 -0
  176. package/dist/lib/i18n/translations/fr.json +64 -0
  177. package/dist/lib/index.d.ts +7 -0
  178. package/dist/lib/index.js +7 -0
  179. package/dist/lib/jsonUtils.d.ts +2 -0
  180. package/dist/lib/jsonUtils.js +11 -0
  181. package/dist/lib/makeAPIRoute.d.ts +45 -0
  182. package/dist/lib/makeAPIRoute.js +16 -0
  183. package/dist/lib/makePublicRoute.d.ts +7 -0
  184. package/dist/lib/makePublicRoute.js +6 -0
  185. package/dist/lib/pathGenerators.d.ts +20 -0
  186. package/dist/lib/pathGenerators.js +66 -0
  187. package/dist/lib/plugins/dashboard-pages.d.ts +71 -0
  188. package/dist/lib/plugins/dashboard-pages.js +11 -0
  189. package/dist/lib/plugins/frontend-navigation.d.ts +18 -0
  190. package/dist/lib/plugins/frontend-navigation.js +39 -0
  191. package/dist/lib/plugins/index.d.ts +2 -0
  192. package/dist/lib/plugins/index.js +2 -0
  193. package/dist/lib/removeLeadingTrailingSlashes.d.ts +7 -0
  194. package/dist/lib/removeLeadingTrailingSlashes.js +13 -0
  195. package/dist/lib/renderer/astro-remark.d.ts +13 -0
  196. package/dist/lib/renderer/astro-remark.js +11 -0
  197. package/dist/lib/renderer/contentRenderer.d.ts +13 -0
  198. package/dist/lib/renderer/contentRenderer.js +31 -0
  199. package/dist/lib/renderer/errors.d.ts +5 -0
  200. package/dist/lib/renderer/errors.js +25 -0
  201. package/dist/lib/renderer/markdoc-renderers/markdocHTML.d.ts +3 -0
  202. package/dist/lib/renderer/markdoc-renderers/markdocHTML.js +14 -0
  203. package/dist/lib/renderer/markdoc-renderers/markdocReactStatic.d.ts +3 -0
  204. package/dist/lib/renderer/markdoc-renderers/markdocReactStatic.js +14 -0
  205. package/dist/lib/renderer/markdoc.d.ts +11 -0
  206. package/dist/lib/renderer/markdoc.js +28 -0
  207. package/dist/lib/renderer/mdx.d.ts +10 -0
  208. package/dist/lib/renderer/mdx.js +37 -0
  209. package/dist/lib/renderer/runtime.d.ts +8 -0
  210. package/dist/lib/renderer/runtime.js +30 -0
  211. package/dist/lib/renderer/shared.d.ts +15 -0
  212. package/dist/lib/renderer/shared.js +13 -0
  213. package/dist/lib/renderer/studiocms.d.ts +11 -0
  214. package/dist/lib/renderer/studiocms.js +22 -0
  215. package/dist/lib/renderer/types.d.ts +12 -0
  216. package/dist/lib/renderer/types.js +0 -0
  217. package/dist/lib/robots/core.d.ts +24 -0
  218. package/dist/lib/robots/core.js +187 -0
  219. package/dist/lib/robots/index.d.ts +11 -0
  220. package/dist/lib/robots/index.js +47 -0
  221. package/dist/lib/robots/types.d.ts +185 -0
  222. package/dist/lib/robots/types.js +0 -0
  223. package/dist/lib/robots/utils.d.ts +22 -0
  224. package/dist/lib/robots/utils.js +22 -0
  225. package/dist/lib/routeMap.d.ts +257 -0
  226. package/dist/lib/routeMap.js +249 -0
  227. package/dist/lib/urlGen.d.ts +11 -0
  228. package/dist/lib/urlGen.js +26 -0
  229. package/dist/lib/webVitals/checkForWebVitalsPlugin.d.ts +18 -0
  230. package/dist/lib/webVitals/checkForWebVitalsPlugin.js +82 -0
  231. package/dist/lib/webVitals/consts.d.ts +240 -0
  232. package/dist/lib/webVitals/consts.js +40 -0
  233. package/dist/lib/webVitals/dashboard-grid-items/CoreVitals.astro +66 -0
  234. package/dist/lib/webVitals/dashboard-grid-items/MetricCard.astro +24 -0
  235. package/dist/lib/webVitals/dashboard-grid-items/SummaryCard.astro +56 -0
  236. package/dist/lib/webVitals/dashboard-grid-items/metric.css +103 -0
  237. package/dist/lib/webVitals/dashboard-grid-items/shared.d.ts +29 -0
  238. package/dist/lib/webVitals/dashboard-grid-items/shared.js +35 -0
  239. package/dist/lib/webVitals/pages/analytics/body.astro +186 -0
  240. package/dist/lib/webVitals/pages/analytics/header.astro +42 -0
  241. package/dist/lib/webVitals/schemas.d.ts +78 -0
  242. package/dist/lib/webVitals/schemas.js +37 -0
  243. package/dist/lib/webVitals/types.d.ts +156 -0
  244. package/dist/lib/webVitals/types.js +0 -0
  245. package/dist/lib/webVitals/utils/buildDataObject.d.ts +8 -0
  246. package/dist/lib/webVitals/utils/buildDataObject.js +28 -0
  247. package/dist/lib/webVitals/utils/buildPageRouteDataObject.d.ts +15 -0
  248. package/dist/lib/webVitals/utils/buildPageRouteDataObject.js +70 -0
  249. package/dist/lib/webVitals/utils/buildPerPageDataObject.d.ts +23 -0
  250. package/dist/lib/webVitals/utils/buildPerPageDataObject.js +209 -0
  251. package/dist/lib/webVitals/utils/checkDate.d.ts +5 -0
  252. package/dist/lib/webVitals/utils/checkDate.js +19 -0
  253. package/dist/lib/webVitals/utils/webVitalsUtils.d.ts +24 -0
  254. package/dist/lib/webVitals/utils/webVitalsUtils.js +234 -0
  255. package/dist/lib/webVitals/webVital.d.ts +20 -0
  256. package/dist/lib/webVitals/webVital.js +40 -0
  257. package/dist/lib/webVitals/webVitalsRouteSummary.d.ts +19 -0
  258. package/dist/lib/webVitals/webVitalsRouteSummary.js +59 -0
  259. package/dist/lib/webVitals/webVitalsSummary.d.ts +19 -0
  260. package/dist/lib/webVitals/webVitalsSummary.js +49 -0
  261. package/dist/plugins.d.ts +2 -0
  262. package/dist/plugins.js +6 -0
  263. package/dist/renderer.d.js +0 -0
  264. package/dist/renderer.d.ts +23 -0
  265. package/dist/routes/api/render.astro +25 -0
  266. package/dist/routes/auth/api/auth0/callback.d.ts +4 -0
  267. package/dist/routes/auth/api/auth0/callback.js +117 -0
  268. package/dist/routes/auth/api/auth0/index.d.ts +4 -0
  269. package/dist/routes/auth/api/auth0/index.js +36 -0
  270. package/dist/routes/auth/api/auth0/shared.d.ts +13 -0
  271. package/dist/routes/auth/api/auth0/shared.js +24 -0
  272. package/dist/routes/auth/api/discord/callback.d.ts +4 -0
  273. package/dist/routes/auth/api/discord/callback.js +112 -0
  274. package/dist/routes/auth/api/discord/index.d.ts +4 -0
  275. package/dist/routes/auth/api/discord/index.js +36 -0
  276. package/dist/routes/auth/api/discord/shared.d.ts +12 -0
  277. package/dist/routes/auth/api/discord/shared.js +17 -0
  278. package/dist/routes/auth/api/github/callback.d.ts +4 -0
  279. package/dist/routes/auth/api/github/callback.js +112 -0
  280. package/dist/routes/auth/api/github/index.d.ts +4 -0
  281. package/dist/routes/auth/api/github/index.js +36 -0
  282. package/dist/routes/auth/api/github/shared.d.ts +13 -0
  283. package/dist/routes/auth/api/github/shared.js +14 -0
  284. package/dist/routes/auth/api/google/callback.d.ts +4 -0
  285. package/dist/routes/auth/api/google/callback.js +115 -0
  286. package/dist/routes/auth/api/google/index.d.ts +4 -0
  287. package/dist/routes/auth/api/google/index.js +38 -0
  288. package/dist/routes/auth/api/google/shared.d.ts +12 -0
  289. package/dist/routes/auth/api/google/shared.js +19 -0
  290. package/dist/routes/auth/api/login.d.ts +4 -0
  291. package/dist/routes/auth/api/login.js +46 -0
  292. package/dist/routes/auth/api/logout.d.ts +5 -0
  293. package/dist/routes/auth/api/logout.js +55 -0
  294. package/dist/routes/auth/api/register.d.ts +4 -0
  295. package/dist/routes/auth/api/register.js +64 -0
  296. package/dist/routes/auth/api/shared.d.ts +2 -0
  297. package/dist/routes/auth/api/shared.js +21 -0
  298. package/dist/routes/auth/login.astro +118 -0
  299. package/dist/routes/auth/logout.astro +28 -0
  300. package/dist/routes/auth/signup.astro +124 -0
  301. package/dist/routes/dashboard/[...pluginPage].astro +88 -0
  302. package/dist/routes/dashboard/configuration.astro +61 -0
  303. package/dist/routes/dashboard/content-management/createfolder.astro +83 -0
  304. package/dist/routes/dashboard/content-management/createpage.astro +86 -0
  305. package/dist/routes/dashboard/content-management/diff.astro +135 -0
  306. package/dist/routes/dashboard/content-management/editfolder.astro +67 -0
  307. package/dist/routes/dashboard/content-management/editpage.astro +71 -0
  308. package/dist/routes/dashboard/content-management/index.astro +91 -0
  309. package/dist/routes/dashboard/index.astro +56 -0
  310. package/dist/routes/dashboard/password-reset.astro +206 -0
  311. package/dist/routes/dashboard/plugins/[plugin].astro +104 -0
  312. package/dist/routes/dashboard/profile.astro +87 -0
  313. package/dist/routes/dashboard/studiocms_api/dashboard/api-tokens.d.ts +5 -0
  314. package/dist/routes/dashboard/studiocms_api/dashboard/api-tokens.js +90 -0
  315. package/dist/routes/dashboard/studiocms_api/dashboard/config.d.ts +4 -0
  316. package/dist/routes/dashboard/studiocms_api/dashboard/config.js +63 -0
  317. package/dist/routes/dashboard/studiocms_api/dashboard/content/folder.d.ts +6 -0
  318. package/dist/routes/dashboard/studiocms_api/dashboard/content/folder.js +121 -0
  319. package/dist/routes/dashboard/studiocms_api/dashboard/content/page.d.ts +6 -0
  320. package/dist/routes/dashboard/studiocms_api/dashboard/content/page.js +258 -0
  321. package/dist/routes/dashboard/studiocms_api/dashboard/create-reset-link.d.ts +4 -0
  322. package/dist/routes/dashboard/studiocms_api/dashboard/create-reset-link.js +59 -0
  323. package/dist/routes/dashboard/studiocms_api/dashboard/create-user-invite.d.ts +4 -0
  324. package/dist/routes/dashboard/studiocms_api/dashboard/create-user-invite.js +105 -0
  325. package/dist/routes/dashboard/studiocms_api/dashboard/create-user.d.ts +4 -0
  326. package/dist/routes/dashboard/studiocms_api/dashboard/create-user.js +100 -0
  327. package/dist/routes/dashboard/studiocms_api/dashboard/partials/Editor.astro +61 -0
  328. package/dist/routes/dashboard/studiocms_api/dashboard/partials/LiveRender.astro +30 -0
  329. package/dist/routes/dashboard/studiocms_api/dashboard/partials/UserListItems.astro +39 -0
  330. package/dist/routes/dashboard/studiocms_api/dashboard/plugins/[plugin].d.ts +2 -0
  331. package/dist/routes/dashboard/studiocms_api/dashboard/plugins/[plugin].js +32 -0
  332. package/dist/routes/dashboard/studiocms_api/dashboard/profile.d.ts +4 -0
  333. package/dist/routes/dashboard/studiocms_api/dashboard/profile.js +130 -0
  334. package/dist/routes/dashboard/studiocms_api/dashboard/reset-password.d.ts +4 -0
  335. package/dist/routes/dashboard/studiocms_api/dashboard/reset-password.js +105 -0
  336. package/dist/routes/dashboard/studiocms_api/dashboard/search-list.d.ts +4 -0
  337. package/dist/routes/dashboard/studiocms_api/dashboard/search-list.js +55 -0
  338. package/dist/routes/dashboard/studiocms_api/dashboard/users.d.ts +5 -0
  339. package/dist/routes/dashboard/studiocms_api/dashboard/users.js +92 -0
  340. package/dist/routes/dashboard/studiocms_api/dashboard/verify-session.d.ts +2 -0
  341. package/dist/routes/dashboard/studiocms_api/dashboard/verify-session.js +72 -0
  342. package/dist/routes/dashboard/user-management/edit.astro +631 -0
  343. package/dist/routes/dashboard/user-management/index.astro +103 -0
  344. package/dist/routes/error-pages/404.astro +66 -0
  345. package/dist/routes/firstTimeSetupRoutes/1-start.astro +253 -0
  346. package/dist/routes/firstTimeSetupRoutes/2-next.astro +208 -0
  347. package/dist/routes/firstTimeSetupRoutes/3-done.astro +95 -0
  348. package/dist/routes/firstTimeSetupRoutes/api/step-1.d.ts +2 -0
  349. package/dist/routes/firstTimeSetupRoutes/api/step-1.js +126 -0
  350. package/dist/routes/firstTimeSetupRoutes/api/step-2.d.ts +2 -0
  351. package/dist/routes/firstTimeSetupRoutes/api/step-2.js +110 -0
  352. package/dist/routes/firstTimeSetupRoutes/components/Layout.astro +41 -0
  353. package/dist/routes/firstTimeSetupRoutes/components/PageHeader.astro +60 -0
  354. package/dist/routes/firstTimeSetupRoutes/components/TabItem.astro +44 -0
  355. package/dist/routes/firstTimeSetupRoutes/components/Tabs.astro +170 -0
  356. package/dist/routes/firstTimeSetupRoutes/snippets/opt1-astro.config.diff +14 -0
  357. package/dist/routes/firstTimeSetupRoutes/snippets/opt2-astro.config.diff +9 -0
  358. package/dist/routes/firstTimeSetupRoutes/snippets/opt2-studiocms.config.diff +5 -0
  359. package/dist/routes/rest/utils/auth-token.d.ts +17 -0
  360. package/dist/routes/rest/utils/auth-token.js +31 -0
  361. package/dist/routes/rest/v1/folders/[id].d.ts +6 -0
  362. package/dist/routes/rest/v1/folders/[id].js +106 -0
  363. package/dist/routes/rest/v1/folders/index.d.ts +5 -0
  364. package/dist/routes/rest/v1/folders/index.js +88 -0
  365. package/dist/routes/rest/v1/pages/[id]/history/[diffid].d.ts +4 -0
  366. package/dist/routes/rest/v1/pages/[id]/history/[diffid].js +55 -0
  367. package/dist/routes/rest/v1/pages/[id]/history/index.d.ts +4 -0
  368. package/dist/routes/rest/v1/pages/[id]/history/index.js +61 -0
  369. package/dist/routes/rest/v1/pages/[id]/index.d.ts +6 -0
  370. package/dist/routes/rest/v1/pages/[id]/index.js +165 -0
  371. package/dist/routes/rest/v1/pages/index.d.ts +5 -0
  372. package/dist/routes/rest/v1/pages/index.js +113 -0
  373. package/dist/routes/rest/v1/public/folders/[id].d.ts +4 -0
  374. package/dist/routes/rest/v1/public/folders/[id].js +43 -0
  375. package/dist/routes/rest/v1/public/folders/index.d.ts +4 -0
  376. package/dist/routes/rest/v1/public/folders/index.js +49 -0
  377. package/dist/routes/rest/v1/public/pages/[id].d.ts +4 -0
  378. package/dist/routes/rest/v1/public/pages/[id].js +46 -0
  379. package/dist/routes/rest/v1/public/pages/index.d.ts +4 -0
  380. package/dist/routes/rest/v1/public/pages/index.js +61 -0
  381. package/dist/routes/rest/v1/settings/index.d.ts +5 -0
  382. package/dist/routes/rest/v1/settings/index.js +75 -0
  383. package/dist/routes/rest/v1/users/[id].d.ts +6 -0
  384. package/dist/routes/rest/v1/users/[id].js +212 -0
  385. package/dist/routes/rest/v1/users/index.d.ts +5 -0
  386. package/dist/routes/rest/v1/users/index.js +138 -0
  387. package/dist/routes/sdk/fallback-list-pages.json.d.ts +2 -0
  388. package/dist/routes/sdk/fallback-list-pages.json.js +19 -0
  389. package/dist/routes/sdk/fallback-list-pages.json.ts +22 -0
  390. package/dist/routes/sdk/full-changelog.json.d.ts +16 -0
  391. package/dist/routes/sdk/full-changelog.json.js +170 -0
  392. package/dist/routes/sdk/full-changelog.json.ts +224 -0
  393. package/dist/routes/sdk/list-pages.d.ts +4 -0
  394. package/dist/routes/sdk/list-pages.js +34 -0
  395. package/dist/routes/sdk/update-latest-version-cache.d.ts +4 -0
  396. package/dist/routes/sdk/update-latest-version-cache.js +41 -0
  397. package/dist/runtime/AstroComponentProxy.d.ts +29 -0
  398. package/dist/runtime/AstroComponentProxy.js +47 -0
  399. package/dist/runtime/decoder/decode-codepoint.d.ts +18 -0
  400. package/dist/runtime/decoder/decode-codepoint.js +58 -0
  401. package/dist/runtime/decoder/decode-data-html.d.ts +1 -0
  402. package/dist/runtime/decoder/decode-data-html.js +7 -0
  403. package/dist/runtime/decoder/decode-data-xml.d.ts +1 -0
  404. package/dist/runtime/decoder/decode-data-xml.js +7 -0
  405. package/dist/runtime/decoder/index.d.ts +34 -0
  406. package/dist/runtime/decoder/index.js +18 -0
  407. package/dist/runtime/decoder/util.d.ts +208 -0
  408. package/dist/runtime/decoder/util.js +415 -0
  409. package/dist/schemas/config/auth.d.ts +175 -0
  410. package/dist/schemas/config/auth.js +65 -0
  411. package/dist/schemas/config/componentoverrides.d.ts +17 -0
  412. package/dist/schemas/config/componentoverrides.js +14 -0
  413. package/dist/schemas/config/dashboard.d.ts +154 -0
  414. package/dist/schemas/config/dashboard.js +59 -0
  415. package/dist/schemas/config/defaultFrontend.d.ts +125 -0
  416. package/dist/schemas/config/defaultFrontend.js +57 -0
  417. package/dist/schemas/config/developer.d.ts +15 -0
  418. package/dist/schemas/config/developer.js +14 -0
  419. package/dist/schemas/config/imageService.d.ts +13 -0
  420. package/dist/schemas/config/imageService.js +12 -0
  421. package/dist/schemas/config/index.d.ts +1153 -0
  422. package/dist/schemas/config/index.js +95 -0
  423. package/dist/schemas/config/integrations.d.ts +14 -0
  424. package/dist/schemas/config/integrations.js +12 -0
  425. package/dist/schemas/config/markdoc.d.ts +172 -0
  426. package/dist/schemas/config/markdoc.js +68 -0
  427. package/dist/schemas/config/mdx.d.ts +455 -0
  428. package/dist/schemas/config/mdx.js +71 -0
  429. package/dist/schemas/config/rendererConfig.d.ts +659 -0
  430. package/dist/schemas/config/rendererConfig.js +51 -0
  431. package/dist/schemas/config/sdk.d.ts +167 -0
  432. package/dist/schemas/config/sdk.js +85 -0
  433. package/dist/schemas/config/studiocms-markdown-remark.d.ts +292 -0
  434. package/dist/schemas/config/studiocms-markdown-remark.js +63 -0
  435. package/dist/schemas/index.d.ts +2 -0
  436. package/dist/schemas/index.js +2 -0
  437. package/dist/schemas/plugins/index.d.ts +7373 -0
  438. package/dist/schemas/plugins/index.js +192 -0
  439. package/dist/schemas/plugins/shared.d.ts +1752 -0
  440. package/dist/schemas/plugins/shared.js +221 -0
  441. package/dist/scripts/formListener.d.ts +16 -0
  442. package/dist/scripts/formListener.js +46 -0
  443. package/dist/scripts/three.d.ts +1 -0
  444. package/dist/scripts/three.js +278 -0
  445. package/dist/scripts/utils/fitModelToViewport.d.ts +8 -0
  446. package/dist/scripts/utils/fitModelToViewport.js +19 -0
  447. package/dist/sdk/StudioCMSVirtualCache.d.ts +283 -0
  448. package/dist/sdk/StudioCMSVirtualCache.js +685 -0
  449. package/dist/sdk/cache.d.ts +11 -0
  450. package/dist/sdk/cache.js +12 -0
  451. package/dist/sdk/core.d.ts +865 -0
  452. package/dist/sdk/core.js +1966 -0
  453. package/dist/sdk/errors.d.ts +21 -0
  454. package/dist/sdk/errors.js +11 -0
  455. package/dist/sdk/index.d.ts +371 -0
  456. package/dist/sdk/index.js +8 -0
  457. package/dist/sdk/lib/foldertree.d.ts +50 -0
  458. package/dist/sdk/lib/foldertree.js +123 -0
  459. package/dist/sdk/lib/generators.d.ts +30 -0
  460. package/dist/sdk/lib/generators.js +25 -0
  461. package/dist/sdk/lib/packages.d.ts +8 -0
  462. package/dist/sdk/lib/packages.js +14 -0
  463. package/dist/sdk/lib/parsers.d.ts +14 -0
  464. package/dist/sdk/lib/parsers.js +10 -0
  465. package/dist/sdk/lib/users.d.ts +19 -0
  466. package/dist/sdk/lib/users.js +26 -0
  467. package/dist/sdk/tables.d.ts +1198 -0
  468. package/dist/sdk/tables.js +55 -0
  469. package/dist/sdk/types/index.d.ts +175 -0
  470. package/dist/sdk/types/index.js +0 -0
  471. package/dist/sdk/types/tableDefs.d.ts +75 -0
  472. package/dist/sdk/types/tableDefs.js +0 -0
  473. package/dist/sdk/types/tsAlias.d.ts +155 -0
  474. package/dist/sdk/types/tsAlias.js +0 -0
  475. package/dist/sdk/utils/db.d.ts +5 -0
  476. package/dist/sdk/utils/db.js +15 -0
  477. package/dist/stubs/auth-lib.d.ts +2 -0
  478. package/dist/stubs/auth-lib.js +519 -0
  479. package/dist/stubs/auth-scripts.d.ts +2 -0
  480. package/dist/stubs/auth-scripts.js +29 -0
  481. package/dist/stubs/auth-utils.d.ts +2 -0
  482. package/dist/stubs/auth-utils.js +36 -0
  483. package/dist/stubs/changelog.d.ts +2 -0
  484. package/dist/stubs/changelog.js +16 -0
  485. package/dist/stubs/components.d.ts +2 -0
  486. package/dist/stubs/components.js +67 -0
  487. package/dist/stubs/core.d.ts +2 -0
  488. package/dist/stubs/core.js +49 -0
  489. package/dist/stubs/i18n-dts.d.ts +2 -0
  490. package/dist/stubs/i18n-dts.js +117 -0
  491. package/dist/stubs/images.d.ts +1 -0
  492. package/dist/stubs/images.js +30 -0
  493. package/dist/stubs/index.d.ts +1 -0
  494. package/dist/stubs/index.js +40 -0
  495. package/dist/stubs/lib.d.ts +2 -0
  496. package/dist/stubs/lib.js +123 -0
  497. package/dist/stubs/plugins.d.ts +2 -0
  498. package/dist/stubs/plugins.js +60 -0
  499. package/dist/stubs/proxy.d.ts +2 -0
  500. package/dist/stubs/proxy.js +40 -0
  501. package/dist/stubs/renderer-config.d.ts +2 -0
  502. package/dist/stubs/renderer-config.js +18 -0
  503. package/dist/stubs/renderer-markdownConfig.d.ts +2 -0
  504. package/dist/stubs/renderer-markdownConfig.js +17 -0
  505. package/dist/stubs/renderer.d.ts +2 -0
  506. package/dist/stubs/renderer.js +44 -0
  507. package/dist/stubs/sdk.d.ts +2 -0
  508. package/dist/stubs/sdk.js +202 -0
  509. package/dist/stubs/webVitals.d.ts +2 -0
  510. package/dist/stubs/webVitals.js +40 -0
  511. package/dist/styles/404.css +47 -0
  512. package/dist/styles/SyntaxFont.woff2 +0 -0
  513. package/dist/styles/authlayout.css +138 -0
  514. package/dist/styles/dashboard-base.css +493 -0
  515. package/dist/styles/dashboard-code.css +33 -0
  516. package/dist/styles/dashboard-diff.css +389 -0
  517. package/dist/styles/dashboard-tiny-mde.css +224 -0
  518. package/dist/styles/md-remark-callouts/github.css +56 -0
  519. package/dist/styles/md-remark-callouts/obsidian.css +66 -0
  520. package/dist/styles/md-remark-callouts/vitepress.css +58 -0
  521. package/dist/styles/md-remark-headings.css +48 -0
  522. package/dist/types.d.ts +43 -0
  523. package/dist/types.js +0 -0
  524. package/dist/utils/addAPIRoutes.d.ts +9 -0
  525. package/dist/utils/addAPIRoutes.js +33 -0
  526. package/dist/utils/addIntegrationArray.d.ts +24 -0
  527. package/dist/utils/addIntegrationArray.js +11 -0
  528. package/dist/utils/addIntegrationArrayWithCheck.d.ts +11 -0
  529. package/dist/utils/addIntegrationArrayWithCheck.js +24 -0
  530. package/dist/utils/astroConfigCheck.d.ts +8 -0
  531. package/dist/utils/astroConfigCheck.js +31 -0
  532. package/dist/utils/astroEnvConfig.d.ts +45 -0
  533. package/dist/utils/astroEnvConfig.js +9 -0
  534. package/dist/utils/authEnvCheck.d.ts +38 -0
  535. package/dist/utils/authEnvCheck.js +82 -0
  536. package/dist/utils/changelog.d.ts +1 -0
  537. package/dist/utils/changelog.js +53 -0
  538. package/dist/utils/changelogLoader.d.ts +15 -0
  539. package/dist/utils/changelogLoader.js +104 -0
  540. package/dist/utils/checkENV.d.ts +27 -0
  541. package/dist/utils/checkENV.js +115 -0
  542. package/dist/utils/configManager.d.ts +22 -0
  543. package/dist/utils/configManager.js +98 -0
  544. package/dist/utils/configResolver.d.ts +283 -0
  545. package/dist/utils/configResolver.js +105 -0
  546. package/dist/utils/defineStudioCMSConfig.d.ts +165 -0
  547. package/dist/utils/defineStudioCMSConfig.js +6 -0
  548. package/dist/utils/getLabelForPermissionLevel.d.ts +2 -0
  549. package/dist/utils/getLabelForPermissionLevel.js +17 -0
  550. package/dist/utils/injectRouteArray.d.ts +19 -0
  551. package/dist/utils/injectRouteArray.js +75 -0
  552. package/dist/utils/integrationLogger.d.ts +7 -0
  553. package/dist/utils/integrationLogger.js +18 -0
  554. package/dist/utils/integrations.d.ts +4 -0
  555. package/dist/utils/integrations.js +32 -0
  556. package/dist/utils/isDashboardRoute.d.ts +7 -0
  557. package/dist/utils/isDashboardRoute.js +10 -0
  558. package/dist/utils/loginBackgrounds/studiocms-blobs-dark.png +0 -0
  559. package/dist/utils/loginBackgrounds/studiocms-blobs-light.png +0 -0
  560. package/dist/utils/loginBackgrounds/studiocms-blocks-dark.png +0 -0
  561. package/dist/utils/loginBackgrounds/studiocms-blocks-light.png +0 -0
  562. package/dist/utils/loginBackgrounds/studiocms-curves-dark.png +0 -0
  563. package/dist/utils/loginBackgrounds/studiocms-curves-light.png +0 -0
  564. package/dist/utils/makePageTitle.d.ts +3 -0
  565. package/dist/utils/makePageTitle.js +7 -0
  566. package/dist/utils/pageListPackageLabel.d.ts +4 -0
  567. package/dist/utils/pageListPackageLabel.js +12 -0
  568. package/dist/utils/readJson.d.ts +1 -0
  569. package/dist/utils/readJson.js +7 -0
  570. package/dist/utils/routeBuilder.d.ts +18 -0
  571. package/dist/utils/routeBuilder.js +96 -0
  572. package/dist/utils/safeString.d.ts +1 -0
  573. package/dist/utils/safeString.js +6 -0
  574. package/dist/utils/simpleResponse.d.ts +1 -0
  575. package/dist/utils/simpleResponse.js +29 -0
  576. package/dist/utils/validImages.d.ts +13 -0
  577. package/dist/utils/validImages.js +39 -0
  578. package/dist/virtual.d.js +0 -0
  579. package/dist/virtual.d.ts +9 -0
  580. package/package.json +219 -0
  581. package/studiocms-cli.mjs +13 -0
  582. package/ui.d.ts +291 -0
@@ -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();
@@ -0,0 +1,39 @@
1
+ import { type CommandUnknownOpts, type OutputConfiguration, Command as _Command, Help as _Help } from '@commander-js/extra-typings';
2
+ import { type ChalkInstance } from 'chalk';
3
+ export declare class Help extends _Help {
4
+ chalk: ChalkInstance;
5
+ colorway: ChalkInstance;
6
+ colorwayError: ChalkInstance;
7
+ sortOptions: boolean;
8
+ sortSubcommands: boolean;
9
+ showGlobalOptions: boolean;
10
+ subcommandTerm: (cmd: CommandUnknownOpts) => string;
11
+ subcommandDescription: (cmd: CommandUnknownOpts) => string;
12
+ constructor();
13
+ prepareContext(contextOptions: {
14
+ error?: boolean;
15
+ helpWidth?: number;
16
+ outputHasColors?: boolean;
17
+ }): void;
18
+ displayWidth(str: string): number;
19
+ boxWrap(str: string, width: number): string;
20
+ styleTitle(str: string): string;
21
+ styleCommandText(str: string): string;
22
+ styleCommandDescription(str: string): string;
23
+ styleDescriptionText(str: string): string;
24
+ styleOptionText(str: string): string;
25
+ styleArgumentText(str: string): string;
26
+ styleSubcommandText(str: string): string;
27
+ }
28
+ export declare class Command extends _Command {
29
+ chalk: ChalkInstance;
30
+ colorwayError: ChalkInstance;
31
+ supportsColor: boolean;
32
+ max: number;
33
+ prefix: string;
34
+ _outputConfiguration: OutputConfiguration | undefined;
35
+ createCommand(name: string | undefined): Command;
36
+ createHelp(): Help & Partial<_Help>;
37
+ }
38
+ export type newInstanceCommand = InstanceType<typeof Command>;
39
+ export type instanceCommand = InstanceType<typeof _Command>;
@@ -0,0 +1,87 @@
1
+ import {
2
+ Command as _Command,
3
+ Help as _Help
4
+ } from "@commander-js/extra-typings";
5
+ import { chalkStderr as chalkStdErr, default as chalkStdOut } from "chalk";
6
+ import stripAnsi from "strip-ansi";
7
+ import wrapAnsi from "wrap-ansi";
8
+ import { StudioCMSColorwayError, date, supportsColor } from "./utils.js";
9
+ class Help extends _Help {
10
+ chalk;
11
+ colorway;
12
+ colorwayError = StudioCMSColorwayError;
13
+ sortOptions = true;
14
+ sortSubcommands = true;
15
+ showGlobalOptions = true;
16
+ subcommandTerm = (cmd) => cmd.name() === "interactive" ? `${this.colorway(cmd.name())}${this.colorwayError("*")}` : this.colorway(cmd.name());
17
+ subcommandDescription = (cmd) => {
18
+ const desc = cmd.summary() || cmd.description();
19
+ return desc;
20
+ };
21
+ constructor() {
22
+ super();
23
+ this.chalk = chalkStdOut;
24
+ this.colorway = this.chalk.hex("#a581f3");
25
+ }
26
+ prepareContext(contextOptions) {
27
+ super.prepareContext(contextOptions);
28
+ if (contextOptions?.error) {
29
+ this.chalk = chalkStdErr;
30
+ }
31
+ }
32
+ displayWidth(str) {
33
+ return stripAnsi(str).length;
34
+ }
35
+ boxWrap(str, width) {
36
+ return wrapAnsi(str, width, { hard: true });
37
+ }
38
+ styleTitle(str) {
39
+ return this.chalk.bold(str);
40
+ }
41
+ styleCommandText(str) {
42
+ return this.chalk.cyan(str);
43
+ }
44
+ styleCommandDescription(str) {
45
+ return this.chalk.magenta(str);
46
+ }
47
+ styleDescriptionText(str) {
48
+ return this.chalk.italic(str);
49
+ }
50
+ styleOptionText(str) {
51
+ return this.chalk.green(str);
52
+ }
53
+ styleArgumentText(str) {
54
+ return this.chalk.yellow(str);
55
+ }
56
+ styleSubcommandText(str) {
57
+ return str;
58
+ }
59
+ }
60
+ class Command extends _Command {
61
+ chalk = chalkStdOut;
62
+ colorwayError = StudioCMSColorwayError;
63
+ supportsColor = supportsColor;
64
+ max = process.stdout.columns;
65
+ prefix = this.max < 80 ? " " : " ".repeat(2);
66
+ _outputConfiguration = {
67
+ writeOut: (str) => process.stdout.write(str),
68
+ writeErr: (str) => process.stdout.write(`ERROR [${date}]: ${str}`),
69
+ // Output errors in red.
70
+ outputError: (str, write) => write(`${this.chalk.red.bold(`ERROR [${date}]:`)} ${this.chalk.red(str)}`),
71
+ getOutHelpWidth: () => process.stdout.isTTY ? process.stdout.columns ?? 80 : 80,
72
+ getErrHelpWidth: () => process.stderr.isTTY ? process.stderr.columns ?? 80 : 80,
73
+ getOutHasColors: () => this.supportsColor,
74
+ getErrHasColors: () => this.supportsColor,
75
+ stripColor: (str) => stripAnsi(str)
76
+ };
77
+ createCommand(name) {
78
+ return new Command(name);
79
+ }
80
+ createHelp() {
81
+ return Object.assign(new Help(), this.configureHelp());
82
+ }
83
+ }
84
+ export {
85
+ Command,
86
+ Help
87
+ };
@@ -0,0 +1,28 @@
1
+ import * as p from '@clack/prompts';
2
+ import colors from 'chalk';
3
+ import { logger } from './utils.js';
4
+ interface BaseContext {
5
+ p: typeof p;
6
+ c: typeof colors;
7
+ pCancel(val: symbol): void;
8
+ pOnCancel(): void;
9
+ cwd: string;
10
+ packageManager: string;
11
+ username: string;
12
+ version: string;
13
+ exit(code: number): never;
14
+ tasks: p.Task[];
15
+ logger: typeof logger;
16
+ welcome: string;
17
+ }
18
+ interface InteractiveOptions {
19
+ dryRun?: boolean;
20
+ skipBanners?: boolean;
21
+ debug?: boolean;
22
+ }
23
+ export interface Context extends BaseContext, InteractiveOptions {
24
+ }
25
+ export declare function getContext(args: InteractiveOptions): Promise<Context>;
26
+ export declare const random: (...arr: any[]) => any;
27
+ export declare function detectPackageManager(): string | undefined;
28
+ export {};
@@ -0,0 +1,55 @@
1
+ import os from "node:os";
2
+ import * as p from "@clack/prompts";
3
+ import colors from "chalk";
4
+ import getSeasonalMessages from "./seasonal.js";
5
+ import { cancelMessage, getName, logger, readJson } from "./utils.js";
6
+ const pkgJson = readJson(new URL("../../../package.json", import.meta.url));
7
+ async function getContext(args) {
8
+ let { debug, dryRun, skipBanners } = args;
9
+ const packageManager = detectPackageManager() ?? "npm";
10
+ const cwd = process.cwd();
11
+ const { messages } = getSeasonalMessages();
12
+ skipBanners = !!((os.platform() === "win32" || skipBanners) && !process.env.CI);
13
+ const context = {
14
+ p,
15
+ c: colors,
16
+ pCancel(val) {
17
+ p.isCancel(val);
18
+ p.cancel(cancelMessage);
19
+ process.exit(0);
20
+ },
21
+ pOnCancel() {
22
+ p.cancel(cancelMessage);
23
+ process.exit(0);
24
+ },
25
+ packageManager,
26
+ username: await getName(),
27
+ version: pkgJson.version,
28
+ welcome: random(messages),
29
+ dryRun,
30
+ debug,
31
+ cwd,
32
+ skipBanners,
33
+ exit(code) {
34
+ process.exit(code);
35
+ },
36
+ tasks: [],
37
+ logger
38
+ };
39
+ return context;
40
+ }
41
+ const random = (...arr) => {
42
+ const flattenedArray = arr.flat(1);
43
+ return flattenedArray[Math.floor(flattenedArray.length * Math.random())];
44
+ };
45
+ function detectPackageManager() {
46
+ if (!process.env.npm_config_user_agent) return;
47
+ const specifier = process.env.npm_config_user_agent.split(" ")[0];
48
+ const name = specifier.substring(0, specifier.lastIndexOf("/"));
49
+ return name === "npminstall" ? "cnpm" : name;
50
+ }
51
+ export {
52
+ detectPackageManager,
53
+ getContext,
54
+ random
55
+ };
@@ -0,0 +1,5 @@
1
+ export default function pathUtil(importMetaUrl: string): {
2
+ filename: string;
3
+ dirname: string;
4
+ getRelPath: (...url: string[]) => string;
5
+ };
@@ -0,0 +1,14 @@
1
+ import path from "node:path";
2
+ import { fileURLToPath } from "node:url";
3
+ function pathUtil(importMetaUrl) {
4
+ const filename = fileURLToPath(importMetaUrl);
5
+ const dirname = path.dirname(filename);
6
+ return {
7
+ filename,
8
+ dirname,
9
+ getRelPath: (...url) => path.join(dirname, ...url)
10
+ };
11
+ }
12
+ export {
13
+ pathUtil as default
14
+ };