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,6 @@
1
+ import type { APIRoute } from 'astro';
2
+ export declare const POST: APIRoute;
3
+ export declare const PATCH: APIRoute;
4
+ export declare const DELETE: APIRoute;
5
+ export declare const OPTIONS: APIRoute;
6
+ export declare const ALL: APIRoute;
@@ -0,0 +1,258 @@
1
+ import { getUserData, verifyUserPermissionLevel } from "studiocms:auth/lib/user";
2
+ import { developerConfig } from "studiocms:config";
3
+ import plugins from "studiocms:plugins";
4
+ import studioCMS_SDK from "studiocms:sdk";
5
+ import studioCMS_SDK_Cache from "studiocms:sdk/cache";
6
+ import { simpleResponse } from "../../../../../utils/simpleResponse.js";
7
+ const pageTypeOptions = plugins.flatMap(({ pageTypes }) => {
8
+ const pageTypeOutput = [];
9
+ if (!pageTypes) {
10
+ return pageTypeOutput;
11
+ }
12
+ for (const pageType of pageTypes) {
13
+ pageTypeOutput.push(pageType);
14
+ }
15
+ return pageTypeOutput;
16
+ });
17
+ function getPageTypeEndpoints(pkg, type) {
18
+ const currentPageType = pageTypeOptions.find((pageType) => pageType.identifier === pkg);
19
+ if (!currentPageType) {
20
+ return void 0;
21
+ }
22
+ return currentPageType.apiEndpoints?.[type];
23
+ }
24
+ const { testingAndDemoMode } = developerConfig;
25
+ function getParentFolderValue(value) {
26
+ if (value === "null") return null;
27
+ return value;
28
+ }
29
+ const POST = async (context) => {
30
+ if (testingAndDemoMode) {
31
+ return simpleResponse(400, "Testing and demo mode is enabled, this action is disabled.");
32
+ }
33
+ const userData = await getUserData(context);
34
+ if (!userData.isLoggedIn) {
35
+ return simpleResponse(403, "Unauthorized");
36
+ }
37
+ const isAuthorized = await verifyUserPermissionLevel(userData, "editor");
38
+ if (!isAuthorized) {
39
+ return simpleResponse(403, "Unauthorized");
40
+ }
41
+ const formData = await context.request.formData();
42
+ const data = {
43
+ title: formData.get("page-title")?.toString(),
44
+ slug: formData.get("page-slug")?.toString(),
45
+ description: formData.get("page-description")?.toString(),
46
+ package: formData.get("page-type")?.toString(),
47
+ showOnNav: formData.get("show-in-nav")?.toString() === "true",
48
+ heroImage: formData.get("page-hero-image")?.toString(),
49
+ parentFolder: getParentFolderValue(formData.get("parent-folder")?.toString()),
50
+ showAuthor: formData.get("show-author")?.toString() === "true",
51
+ showContributors: formData.get("show-contributors")?.toString() === "true",
52
+ categories: [],
53
+ tags: [],
54
+ draft: true
55
+ };
56
+ const content = {
57
+ id: crypto.randomUUID(),
58
+ content: formData.get("page-content")?.toString() ?? ""
59
+ };
60
+ if (!data) {
61
+ return simpleResponse(400, "Invalid form data, data is required");
62
+ }
63
+ if (!content) {
64
+ return simpleResponse(400, "Invalid form data, content is required");
65
+ }
66
+ const dataId = crypto.randomUUID();
67
+ const contentId = crypto.randomUUID();
68
+ if (!data.title) {
69
+ return simpleResponse(400, "Invalid form data, title is required");
70
+ }
71
+ const apiRoute = getPageTypeEndpoints(data.package, "onCreate");
72
+ try {
73
+ await studioCMS_SDK.POST.databaseEntry.pages(
74
+ {
75
+ id: dataId,
76
+ // biome-ignore lint/style/noNonNullAssertion: <explanation>
77
+ title: data.title,
78
+ slug: data.slug || data.title.toLowerCase().replace(/\s/g, "-"),
79
+ description: data.description || "",
80
+ authorId: userData.user?.id || null,
81
+ ...data
82
+ },
83
+ { id: contentId, ...content }
84
+ );
85
+ if (apiRoute) {
86
+ await apiRoute(context);
87
+ }
88
+ studioCMS_SDK_Cache.CLEAR.pages();
89
+ return simpleResponse(200, "Page created successfully");
90
+ } catch (error) {
91
+ return simpleResponse(500, "Failed to create page");
92
+ }
93
+ };
94
+ const PATCH = async (context) => {
95
+ if (testingAndDemoMode) {
96
+ return simpleResponse(400, "Testing and demo mode is enabled, this action is disabled.");
97
+ }
98
+ const userData = await getUserData(context);
99
+ if (!userData.isLoggedIn) {
100
+ return simpleResponse(403, "Unauthorized");
101
+ }
102
+ const isAuthorized = await verifyUserPermissionLevel(userData, "editor");
103
+ if (!isAuthorized) {
104
+ return simpleResponse(403, "Unauthorized");
105
+ }
106
+ const formData = await context.request.formData();
107
+ const data = {
108
+ title: formData.get("page-title")?.toString(),
109
+ slug: formData.get("page-slug")?.toString(),
110
+ description: formData.get("page-description")?.toString(),
111
+ package: formData.get("page-type")?.toString(),
112
+ showOnNav: formData.get("show-in-nav") === "true",
113
+ heroImage: formData.get("page-hero-image")?.toString(),
114
+ parentFolder: getParentFolderValue(formData.get("parent-folder")?.toString()),
115
+ showAuthor: formData.get("show-author") === "true",
116
+ showContributors: formData.get("show-contributors")?.toString() === "true",
117
+ categories: [],
118
+ tags: [],
119
+ id: formData.get("page-id")?.toString(),
120
+ draft: formData.get("draft")?.toString() === "true"
121
+ };
122
+ const content = {
123
+ id: formData.get("page-content-id")?.toString(),
124
+ content: formData.get("page-content")?.toString()
125
+ };
126
+ if (!data) {
127
+ return simpleResponse(400, "Invalid form data, data is required");
128
+ }
129
+ if (!content) {
130
+ return simpleResponse(400, "Invalid form data, content is required");
131
+ }
132
+ if (!data.id) {
133
+ return simpleResponse(400, "Invalid form data, id is required");
134
+ }
135
+ if (!content.id) {
136
+ return simpleResponse(400, "Invalid form data, id is required");
137
+ }
138
+ const currentPageData = await studioCMS_SDK_Cache.GET.page.byId(data.id);
139
+ if (!currentPageData.data) {
140
+ return simpleResponse(404, "Page not found");
141
+ }
142
+ const { authorId, contributorIds } = currentPageData.data;
143
+ let AuthorId = authorId;
144
+ if (!authorId) {
145
+ AuthorId = userData.user?.id || null;
146
+ }
147
+ const ContributorIds = contributorIds || [];
148
+ if (!ContributorIds.includes(userData.user.id)) {
149
+ ContributorIds.push(userData.user.id);
150
+ }
151
+ data.authorId = AuthorId;
152
+ data.contributorIds = JSON.stringify(ContributorIds);
153
+ data.updatedAt = /* @__PURE__ */ new Date();
154
+ const startMetaData = (await studioCMS_SDK.GET.databaseTable.pageData()).find(
155
+ (metaData) => metaData.id === data.id
156
+ );
157
+ const {
158
+ data: { defaultContent }
159
+ } = await studioCMS_SDK_Cache.GET.page.byId(data.id);
160
+ const apiRoute = getPageTypeEndpoints(data.package, "onEdit");
161
+ try {
162
+ await studioCMS_SDK_Cache.UPDATE.page.byId(data.id, {
163
+ pageData: data,
164
+ pageContent: content
165
+ });
166
+ const updatedMetaData = (await studioCMS_SDK.GET.databaseTable.pageData()).find(
167
+ (metaData) => metaData.id === data.id
168
+ );
169
+ const { enableDiffs, diffPerPage } = (await studioCMS_SDK_Cache.GET.siteConfig()).data;
170
+ if (enableDiffs) {
171
+ await studioCMS_SDK.diffTracking.insert(
172
+ // biome-ignore lint/style/noNonNullAssertion: <explanation>
173
+ userData.user.id,
174
+ data.id,
175
+ {
176
+ content: {
177
+ start: defaultContent?.content || "",
178
+ end: content.content || ""
179
+ },
180
+ // biome-ignore lint/style/noNonNullAssertion: <explanation>
181
+ metaData: { start: startMetaData, end: updatedMetaData }
182
+ },
183
+ diffPerPage
184
+ );
185
+ }
186
+ if (apiRoute) {
187
+ await apiRoute(context);
188
+ }
189
+ return simpleResponse(200, "Page updated successfully");
190
+ } catch (error) {
191
+ return simpleResponse(500, "Failed to update page");
192
+ }
193
+ };
194
+ const DELETE = async (context) => {
195
+ if (testingAndDemoMode) {
196
+ return simpleResponse(400, "Testing and demo mode is enabled, this action is disabled.");
197
+ }
198
+ const userData = await getUserData(context);
199
+ if (!userData.isLoggedIn) {
200
+ return simpleResponse(403, "Unauthorized");
201
+ }
202
+ const isAuthorized = await verifyUserPermissionLevel(userData, "admin");
203
+ if (!isAuthorized) {
204
+ return simpleResponse(403, "Unauthorized");
205
+ }
206
+ const jsonData = await context.request.json();
207
+ const { id, slug } = jsonData;
208
+ if (!id) {
209
+ return simpleResponse(400, "Invalid request");
210
+ }
211
+ if (!slug) {
212
+ return simpleResponse(400, "Invalid request");
213
+ }
214
+ const isHomePage = await studioCMS_SDK_Cache.GET.page.bySlug("index");
215
+ if (isHomePage.data && isHomePage.data.id === id) {
216
+ return simpleResponse(400, "Cannot delete home page");
217
+ }
218
+ const pageToDelete = await studioCMS_SDK_Cache.GET.page.byId(id);
219
+ const apiRoute = getPageTypeEndpoints(pageToDelete.data.package, "onCreate");
220
+ try {
221
+ await studioCMS_SDK.DELETE.page(id);
222
+ studioCMS_SDK_Cache.CLEAR.page.byId(id);
223
+ if (apiRoute) {
224
+ await apiRoute(context);
225
+ }
226
+ return simpleResponse(200, "Page deleted successfully");
227
+ } catch (error) {
228
+ return simpleResponse(500, "Failed to delete page");
229
+ }
230
+ };
231
+ const OPTIONS = async () => {
232
+ return new Response(null, {
233
+ status: 204,
234
+ statusText: "No Content",
235
+ headers: {
236
+ Allow: "OPTIONS, POST, DELETE, PATCH",
237
+ "ALLOW-ACCESS-CONTROL-ORIGIN": "*",
238
+ "Cache-Control": "public, max-age=604800, immutable",
239
+ Date: (/* @__PURE__ */ new Date()).toUTCString()
240
+ }
241
+ });
242
+ };
243
+ const ALL = async () => {
244
+ return new Response(null, {
245
+ status: 405,
246
+ statusText: "Method Not Allowed",
247
+ headers: {
248
+ "ACCESS-CONTROL-ALLOW-ORIGIN": "*"
249
+ }
250
+ });
251
+ };
252
+ export {
253
+ ALL,
254
+ DELETE,
255
+ OPTIONS,
256
+ PATCH,
257
+ POST
258
+ };
@@ -0,0 +1,4 @@
1
+ import type { APIRoute } from 'astro';
2
+ export declare const POST: APIRoute;
3
+ export declare const OPTIONS: APIRoute;
4
+ export declare const ALL: APIRoute;
@@ -0,0 +1,59 @@
1
+ import { getUserData, verifyUserPermissionLevel } from "studiocms:auth/lib/user";
2
+ import { developerConfig } from "studiocms:config";
3
+ import studioCMS_SDK from "studiocms:sdk";
4
+ import { simpleResponse } from "../../../../utils/simpleResponse.js";
5
+ const { testingAndDemoMode } = developerConfig;
6
+ const POST = async (ctx) => {
7
+ if (testingAndDemoMode) {
8
+ return simpleResponse(400, "Testing and demo mode is enabled, this action is disabled.");
9
+ }
10
+ const userData = await getUserData(ctx);
11
+ if (!userData.isLoggedIn) {
12
+ return simpleResponse(403, "Unauthorized");
13
+ }
14
+ const isAuthorized = await verifyUserPermissionLevel(userData, "admin");
15
+ if (!isAuthorized) {
16
+ return simpleResponse(403, "Unauthorized");
17
+ }
18
+ const jsonData = await ctx.request.json();
19
+ const { userId } = jsonData;
20
+ if (!userId) {
21
+ return simpleResponse(400, "Invalid form data, userId is required");
22
+ }
23
+ const token = await studioCMS_SDK.resetTokenBucket.new(userId);
24
+ if (!token) {
25
+ return simpleResponse(500, "Failed to create reset link");
26
+ }
27
+ return new Response(JSON.stringify(token), {
28
+ headers: {
29
+ "content-type": "application/json"
30
+ },
31
+ status: 200
32
+ });
33
+ };
34
+ const OPTIONS = async () => {
35
+ return new Response(null, {
36
+ status: 204,
37
+ statusText: "No Content",
38
+ headers: {
39
+ Allow: "OPTIONS, POST",
40
+ "ALLOW-ACCESS-CONTROL-ORIGIN": "*",
41
+ "Cache-Control": "public, max-age=604800, immutable",
42
+ Date: (/* @__PURE__ */ new Date()).toUTCString()
43
+ }
44
+ });
45
+ };
46
+ const ALL = async () => {
47
+ return new Response(null, {
48
+ status: 405,
49
+ statusText: "Method Not Allowed",
50
+ headers: {
51
+ "ACCESS-CONTROL-ALLOW-ORIGIN": "*"
52
+ }
53
+ });
54
+ };
55
+ export {
56
+ ALL,
57
+ OPTIONS,
58
+ POST
59
+ };
@@ -0,0 +1,4 @@
1
+ import type { APIRoute } from 'astro';
2
+ export declare const POST: APIRoute;
3
+ export declare const OPTIONS: APIRoute;
4
+ export declare const ALL: APIRoute;
@@ -0,0 +1,105 @@
1
+ import {
2
+ getUserData,
3
+ verifyUserPermissionLevel,
4
+ verifyUsernameInput
5
+ } from "studiocms:auth/lib/user";
6
+ import { developerConfig } from "studiocms:config";
7
+ import { StudioCMSRoutes, removeLeadingTrailingSlashes } from "studiocms:lib";
8
+ import studioCMS_SDK from "studiocms:sdk";
9
+ import { z } from "astro/zod";
10
+ import { simpleResponse } from "../../../../utils/simpleResponse.js";
11
+ const { testingAndDemoMode } = developerConfig;
12
+ const POST = async (ctx) => {
13
+ if (testingAndDemoMode) {
14
+ return simpleResponse(400, "Testing and demo mode is enabled, this action is disabled.");
15
+ }
16
+ const userData = await getUserData(ctx);
17
+ if (!userData.isLoggedIn) {
18
+ return simpleResponse(403, "Unauthorized");
19
+ }
20
+ const isAuthorized = await verifyUserPermissionLevel(userData, "admin");
21
+ if (!isAuthorized) {
22
+ return simpleResponse(403, "Unauthorized");
23
+ }
24
+ const jsonData = await ctx.request.json();
25
+ const { username, email, displayname, rank, originalUrl } = jsonData;
26
+ if (!username) {
27
+ return simpleResponse(400, "Missing field: Username is required");
28
+ }
29
+ if (!email) {
30
+ return simpleResponse(400, "Missing field: Email is required");
31
+ }
32
+ if (!displayname) {
33
+ return simpleResponse(400, "Missing field: Display name is required");
34
+ }
35
+ if (!rank) {
36
+ return simpleResponse(400, "Missing field: Rank is required");
37
+ }
38
+ if (verifyUsernameInput(username) !== true) {
39
+ return simpleResponse(
40
+ 400,
41
+ "Invalid username: Username must be between 3 and 20 characters, only contain lowercase letters, numbers, -, and _ as well as not be a commonly used username (admin, root, etc.)"
42
+ );
43
+ }
44
+ const checkEmail = z.coerce.string().email({ message: "Email address is invalid" }).safeParse(email);
45
+ if (!checkEmail.success) {
46
+ return simpleResponse(400, `Invalid email: ${checkEmail.error.message}`);
47
+ }
48
+ const { usernameSearch, emailSearch } = await studioCMS_SDK.AUTH.user.searchUsersForUsernameOrEmail(username, checkEmail.data);
49
+ if (usernameSearch.length > 0) {
50
+ return simpleResponse(400, "Invalid username: Username is already in use");
51
+ }
52
+ if (emailSearch.length > 0) {
53
+ return simpleResponse(400, "Invalid email: Email is already in use");
54
+ }
55
+ function generateResetLink(token2) {
56
+ return `${originalUrl}${StudioCMSRoutes.mainLinks.dashboardIndex}/reset-password?userid=${token2.userId}&token=${token2.token}&id=${token2.id}`;
57
+ }
58
+ const newUser = await studioCMS_SDK.AUTH.user.create(
59
+ {
60
+ username,
61
+ email: checkEmail.data,
62
+ name: displayname,
63
+ createdAt: /* @__PURE__ */ new Date(),
64
+ id: crypto.randomUUID()
65
+ },
66
+ rank
67
+ );
68
+ const token = await studioCMS_SDK.resetTokenBucket.new(newUser.id);
69
+ if (!token) {
70
+ return simpleResponse(500, "Failed to create reset token");
71
+ }
72
+ const resetLink = generateResetLink(token);
73
+ return new Response(JSON.stringify({ link: resetLink }), {
74
+ headers: {
75
+ "content-type": "application/json"
76
+ },
77
+ status: 200
78
+ });
79
+ };
80
+ const OPTIONS = async () => {
81
+ return new Response(null, {
82
+ status: 204,
83
+ statusText: "No Content",
84
+ headers: {
85
+ Allow: "OPTIONS, POST",
86
+ "ALLOW-ACCESS-CONTROL-ORIGIN": "*",
87
+ "Cache-Control": "public, max-age=604800, immutable",
88
+ Date: (/* @__PURE__ */ new Date()).toUTCString()
89
+ }
90
+ });
91
+ };
92
+ const ALL = async () => {
93
+ return new Response(null, {
94
+ status: 405,
95
+ statusText: "Method Not Allowed",
96
+ headers: {
97
+ "ACCESS-CONTROL-ALLOW-ORIGIN": "*"
98
+ }
99
+ });
100
+ };
101
+ export {
102
+ ALL,
103
+ OPTIONS,
104
+ POST
105
+ };
@@ -0,0 +1,4 @@
1
+ import type { APIRoute } from 'astro';
2
+ export declare const POST: APIRoute;
3
+ export declare const OPTIONS: APIRoute;
4
+ export declare const ALL: APIRoute;
@@ -0,0 +1,100 @@
1
+ import { verifyPasswordStrength } from "studiocms:auth/lib/password";
2
+ import {
3
+ createLocalUser,
4
+ getUserData,
5
+ verifyUserPermissionLevel,
6
+ verifyUsernameInput
7
+ } from "studiocms:auth/lib/user";
8
+ import { developerConfig } from "studiocms:config";
9
+ import studioCMS_SDK from "studiocms:sdk";
10
+ import { z } from "astro/zod";
11
+ import { simpleResponse } from "../../../../utils/simpleResponse.js";
12
+ const { testingAndDemoMode } = developerConfig;
13
+ const POST = async (ctx) => {
14
+ if (testingAndDemoMode) {
15
+ return simpleResponse(400, "Testing and demo mode is enabled, this action is disabled.");
16
+ }
17
+ const userData = await getUserData(ctx);
18
+ if (!userData.isLoggedIn) {
19
+ return simpleResponse(403, "Unauthorized");
20
+ }
21
+ const isAuthorized = await verifyUserPermissionLevel(userData, "admin");
22
+ if (!isAuthorized) {
23
+ return simpleResponse(403, "Unauthorized");
24
+ }
25
+ const jsonData = await ctx.request.json();
26
+ let { username, password, email, displayname, rank } = jsonData;
27
+ if (!username) {
28
+ return simpleResponse(400, "Missing field: Username is required");
29
+ }
30
+ if (!password) {
31
+ password = studioCMS_SDK.generateRandomPassword(12);
32
+ }
33
+ if (!email) {
34
+ return simpleResponse(400, "Missing field: Email is required");
35
+ }
36
+ if (!displayname) {
37
+ return simpleResponse(400, "Missing field: Display name is required");
38
+ }
39
+ if (!rank) {
40
+ return simpleResponse(400, "Missing field: Rank is required");
41
+ }
42
+ if (verifyUsernameInput(username) !== true) {
43
+ return simpleResponse(
44
+ 400,
45
+ "Invalid username: Username must be between 3 and 20 characters, only contain lowercase letters, numbers, -, and _ as well as not be a commonly used username (admin, root, etc.)"
46
+ );
47
+ }
48
+ if (await verifyPasswordStrength(password) !== true) {
49
+ return simpleResponse(
50
+ 400,
51
+ 'Invalid password: Password must be between 6 and 255 characters, and not be in the <a href="https://haveibeenpwned.com/Passwords" target="_blank">pwned password database</a>.'
52
+ );
53
+ }
54
+ const checkEmail = z.coerce.string().email({ message: "Email address is invalid" }).safeParse(email);
55
+ if (!checkEmail.success) {
56
+ return simpleResponse(400, `Invalid email: ${checkEmail.error.message}`);
57
+ }
58
+ const { usernameSearch, emailSearch } = await studioCMS_SDK.AUTH.user.searchUsersForUsernameOrEmail(username, checkEmail.data);
59
+ if (usernameSearch.length > 0) {
60
+ return simpleResponse(400, "Invalid username: Username is already in use");
61
+ }
62
+ if (emailSearch.length > 0) {
63
+ return simpleResponse(400, "Invalid email: Email is already in use");
64
+ }
65
+ const newUser = await createLocalUser(displayname, username, email, password);
66
+ const updateRank = await studioCMS_SDK.UPDATE.permissions({
67
+ user: newUser.id,
68
+ rank
69
+ });
70
+ return simpleResponse(
71
+ 200,
72
+ JSON.stringify({ username, email, displayname, rank: updateRank.rank, password })
73
+ );
74
+ };
75
+ const OPTIONS = async () => {
76
+ return new Response(null, {
77
+ status: 204,
78
+ statusText: "No Content",
79
+ headers: {
80
+ Allow: "OPTIONS, POST",
81
+ "ALLOW-ACCESS-CONTROL-ORIGIN": "*",
82
+ "Cache-Control": "public, max-age=604800, immutable",
83
+ Date: (/* @__PURE__ */ new Date()).toUTCString()
84
+ }
85
+ });
86
+ };
87
+ const ALL = async () => {
88
+ return new Response(null, {
89
+ status: 405,
90
+ statusText: "Method Not Allowed",
91
+ headers: {
92
+ "ACCESS-CONTROL-ALLOW-ORIGIN": "*"
93
+ }
94
+ });
95
+ };
96
+ export {
97
+ ALL,
98
+ OPTIONS,
99
+ POST
100
+ };
@@ -0,0 +1,61 @@
1
+ ---
2
+ import pluginsList from 'studiocms:plugins';
3
+
4
+ const pageTypeComponents = async () => {
5
+ const pageTypeComponents: {
6
+ identifier: string;
7
+ // biome-ignore lint/suspicious/noExplicitAny: <explanation>
8
+ Component: (Props?: { content?: string | null | undefined }) => any;
9
+ }[] = [];
10
+
11
+ for (const { pageTypes } of pluginsList) {
12
+ if (!pageTypes) {
13
+ return pageTypeComponents;
14
+ }
15
+
16
+ for (const { identifier, pageContentComponent } of pageTypes) {
17
+ if (!pageContentComponent) {
18
+ continue;
19
+ }
20
+
21
+ pageTypeComponents.push({
22
+ identifier,
23
+ Component: (await import(/* @vite-ignore */ pageContentComponent)).default,
24
+ });
25
+ }
26
+
27
+ return pageTypeComponents;
28
+ }
29
+
30
+ return pageTypeComponents;
31
+ };
32
+
33
+ export const partial = true;
34
+
35
+ async function setContent() {
36
+ const jsonData: { content: string | undefined; editor: string } | undefined =
37
+ await Astro.request.json();
38
+
39
+ const editors = await pageTypeComponents();
40
+
41
+ let currentEditor = editors.find((ed) => {
42
+ if (ed.identifier === jsonData?.editor) {
43
+ return ed;
44
+ }
45
+ });
46
+
47
+ if (!currentEditor) {
48
+ // biome-ignore lint/style/noNonNullAssertion: <explanation>
49
+ currentEditor = editors.find((editor) => editor.identifier === 'studiocms/markdown')!;
50
+ }
51
+
52
+ if (jsonData?.content) {
53
+ return { content: jsonData.content, ActiveEditor: currentEditor.Component };
54
+ }
55
+
56
+ return { content: 'No content to display', ActiveEditor: currentEditor.Component };
57
+ }
58
+
59
+ const { content, ActiveEditor } = await setContent();
60
+ ---
61
+ <ActiveEditor content={content} />
@@ -0,0 +1,30 @@
1
+ ---
2
+ export const partial = true;
3
+ import { StudioCMSRenderer } from 'studiocms:renderer';
4
+
5
+ type Content = string;
6
+
7
+ const queryParam = Astro.url.searchParams.get('content');
8
+ const preQuery = Astro.url.searchParams.get('preload-content');
9
+
10
+ async function setContent() {
11
+ const jsonData: { content: string | undefined } | undefined = await Astro.request.json();
12
+
13
+ if (jsonData?.content) {
14
+ return jsonData.content;
15
+ }
16
+
17
+ if (queryParam && queryParam !== 'null') {
18
+ return queryParam;
19
+ }
20
+
21
+ if (preQuery && preQuery !== 'null') {
22
+ return preQuery;
23
+ }
24
+
25
+ return 'No content to display';
26
+ }
27
+
28
+ const content: Content = await setContent();
29
+ ---
30
+ <StudioCMSRenderer {content} />
@@ -0,0 +1,39 @@
1
+ ---
2
+ import UserListItem from '../../../../../components/dashboard/islands/user-mgmt/UserListItem.astro';
3
+
4
+ export const partial = true;
5
+
6
+ async function setData() {
7
+ const jsonData:
8
+ | {
9
+ users: {
10
+ id: string;
11
+ name: string;
12
+ email: string | null;
13
+ avatar: string | null;
14
+ username: string;
15
+ permissionsData:
16
+ | {
17
+ user: string;
18
+ rank: string;
19
+ }
20
+ | undefined;
21
+ }[];
22
+ searchQuery?: string;
23
+ }
24
+ | undefined = await Astro.request.json();
25
+
26
+ if (jsonData) {
27
+ return jsonData;
28
+ }
29
+
30
+ return 'No Users to display';
31
+ }
32
+
33
+ const Data = await setData();
34
+ ---
35
+ {
36
+ typeof Data !== 'string'
37
+ ? Data.users.map((user) => <UserListItem user={user} searchQuery={Data.searchQuery} />)
38
+ : Data
39
+ }
@@ -0,0 +1,2 @@
1
+ import type { APIRoute } from 'astro';
2
+ export declare const POST: APIRoute;