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,24 @@
1
+ import { authEnvCheck } from "studiocms:auth/utils/authEnvCheck";
2
+ import { AuthConfig } from "studiocms:config";
3
+ import { Auth0 } from "arctic";
4
+ const {
5
+ AUTH0: { CLIENT_ID = "", CLIENT_SECRET = "", DOMAIN, REDIRECT_URI = "" }
6
+ } = await authEnvCheck(AuthConfig.providers);
7
+ const getClientDomain = () => {
8
+ const cleanDomainSlash = DOMAIN ? DOMAIN.replace(/^\//, "") : "";
9
+ const NoHttpDomain = cleanDomainSlash.replace(/http:\/\//, "").replace(/https:\/\//, "");
10
+ return `https://${NoHttpDomain}`;
11
+ };
12
+ const ProviderID = "auth0";
13
+ const ProviderCookieName = "auth0_oauth_state";
14
+ const auth0 = new Auth0(getClientDomain(), CLIENT_ID, CLIENT_SECRET, REDIRECT_URI);
15
+ export {
16
+ CLIENT_ID,
17
+ CLIENT_SECRET,
18
+ DOMAIN,
19
+ ProviderCookieName,
20
+ ProviderID,
21
+ REDIRECT_URI,
22
+ auth0,
23
+ getClientDomain
24
+ };
@@ -0,0 +1,4 @@
1
+ import type { APIRoute } from 'astro';
2
+ export declare const GET: APIRoute;
3
+ export declare const OPTIONS: APIRoute;
4
+ export declare const ALL: APIRoute;
@@ -0,0 +1,112 @@
1
+ import { createUserSession } from "studiocms:auth/lib/session";
2
+ import { LinkNewOAuthCookieName, createOAuthUser, getUserData } from "studiocms:auth/lib/user";
3
+ import { config } from "studiocms:config";
4
+ import { StudioCMSRoutes } from "studiocms:lib";
5
+ import studioCMS_SDK from "studiocms:sdk";
6
+ import { OAuth2RequestError } from "arctic";
7
+ import { ProviderCookieName, ProviderID, discord } from "./shared.js";
8
+ const GET = async (context) => {
9
+ const { url, cookies, redirect } = context;
10
+ const code = url.searchParams.get("code");
11
+ const state = url.searchParams.get("state");
12
+ const storedState = cookies.get(ProviderCookieName)?.value ?? null;
13
+ if (!code || !state || !storedState || state !== storedState) {
14
+ return redirect(StudioCMSRoutes.authLinks.loginURL);
15
+ }
16
+ let tokens;
17
+ try {
18
+ tokens = await discord.validateAuthorizationCode(code);
19
+ const discordResponse = await fetch("https://discord.com/api/users/@me", {
20
+ headers: {
21
+ Authorization: `Bearer ${tokens.accessToken}`
22
+ }
23
+ });
24
+ const discordUser = await discordResponse.json();
25
+ const discordUserId = discordUser.id;
26
+ const discordUsername = discordUser.username;
27
+ const existingOAuthAccount = await studioCMS_SDK.AUTH.oAuth.searchProvidersForId(
28
+ ProviderID,
29
+ discordUserId
30
+ );
31
+ if (existingOAuthAccount) {
32
+ const user = await studioCMS_SDK.GET.databaseEntry.users.byId(existingOAuthAccount.userId);
33
+ if (!user) {
34
+ return new Response("User not found", {
35
+ status: 404
36
+ });
37
+ }
38
+ await createUserSession(user.id, context);
39
+ return redirect(StudioCMSRoutes.mainLinks.dashboardIndex);
40
+ }
41
+ const loggedInUser = await getUserData(context);
42
+ const linkNewOAuth = !!cookies.get(LinkNewOAuthCookieName)?.value;
43
+ if (loggedInUser.user && linkNewOAuth) {
44
+ const existingUser = await studioCMS_SDK.GET.databaseEntry.users.byId(loggedInUser.user.id);
45
+ if (existingUser) {
46
+ await studioCMS_SDK.AUTH.oAuth.create({
47
+ userId: existingUser.id,
48
+ provider: ProviderID,
49
+ providerUserId: discordUserId
50
+ });
51
+ await createUserSession(existingUser.id, context);
52
+ return redirect(StudioCMSRoutes.mainLinks.dashboardIndex);
53
+ }
54
+ }
55
+ const avatar_url = `https://cdn.discordapp.com/avatars/${discordUserId}/${discordUser.avatar}.png`;
56
+ const newUser = await createOAuthUser(
57
+ {
58
+ id: crypto.randomUUID(),
59
+ username: discordUsername,
60
+ name: discordUser.global_name ?? discordUsername,
61
+ email: discordUser.email,
62
+ avatar: avatar_url,
63
+ createdAt: /* @__PURE__ */ new Date()
64
+ },
65
+ { provider: ProviderID, providerUserId: discordUserId }
66
+ );
67
+ if ("error" in newUser) {
68
+ return new Response("Error creating user", { status: 500 });
69
+ }
70
+ if (config.dbStartPage) {
71
+ return redirect("/done");
72
+ }
73
+ await createUserSession(newUser.id, context);
74
+ return redirect(StudioCMSRoutes.mainLinks.dashboardIndex);
75
+ } catch (e) {
76
+ if (e instanceof OAuth2RequestError) {
77
+ const code2 = e.code;
78
+ return new Response(code2, {
79
+ status: 400
80
+ });
81
+ }
82
+ return new Response(null, {
83
+ status: 500
84
+ });
85
+ }
86
+ };
87
+ const OPTIONS = async () => {
88
+ return new Response(null, {
89
+ status: 204,
90
+ statusText: "No Content",
91
+ headers: {
92
+ Allow: "OPTIONS, GET",
93
+ "ALLOW-ACCESS-CONTROL-ORIGIN": "*",
94
+ "Cache-Control": "public, max-age=604800, immutable",
95
+ Date: (/* @__PURE__ */ new Date()).toUTCString()
96
+ }
97
+ });
98
+ };
99
+ const ALL = async () => {
100
+ return new Response(null, {
101
+ status: 405,
102
+ statusText: "Method Not Allowed",
103
+ headers: {
104
+ "ACCESS-CONTROL-ALLOW-ORIGIN": "*"
105
+ }
106
+ });
107
+ };
108
+ export {
109
+ ALL,
110
+ GET,
111
+ OPTIONS
112
+ };
@@ -0,0 +1,4 @@
1
+ import type { APIRoute } from 'astro';
2
+ export declare const GET: APIRoute;
3
+ export declare const OPTIONS: APIRoute;
4
+ export declare const ALL: APIRoute;
@@ -0,0 +1,36 @@
1
+ import { setOAuthSessionTokenCookie } from "studiocms:auth/lib/session";
2
+ import { generateState } from "arctic";
3
+ import { ProviderCookieName, discord } from "./shared.js";
4
+ const GET = async (context) => {
5
+ const state = generateState();
6
+ const scopes = ["identify", "email"];
7
+ const url = discord.createAuthorizationURL(state, scopes);
8
+ setOAuthSessionTokenCookie(context, ProviderCookieName, state);
9
+ return context.redirect(url.toString());
10
+ };
11
+ const OPTIONS = async () => {
12
+ return new Response(null, {
13
+ status: 204,
14
+ statusText: "No Content",
15
+ headers: {
16
+ Allow: "OPTIONS, GET",
17
+ "ALLOW-ACCESS-CONTROL-ORIGIN": "*",
18
+ "Cache-Control": "public, max-age=604800, immutable",
19
+ Date: (/* @__PURE__ */ new Date()).toUTCString()
20
+ }
21
+ });
22
+ };
23
+ const ALL = async () => {
24
+ return new Response(null, {
25
+ status: 405,
26
+ statusText: "Method Not Allowed",
27
+ headers: {
28
+ "ACCESS-CONTROL-ALLOW-ORIGIN": "*"
29
+ }
30
+ });
31
+ };
32
+ export {
33
+ ALL,
34
+ GET,
35
+ OPTIONS
36
+ };
@@ -0,0 +1,12 @@
1
+ import { Discord } from 'arctic';
2
+ export declare const CLIENT_ID: string, CLIENT_SECRET: string, REDIRECT_URI: string;
3
+ export declare const ProviderID = "discord";
4
+ export declare const ProviderCookieName = "discord_oauth_state";
5
+ export declare const discord: Discord;
6
+ export interface DiscordUser {
7
+ id: string;
8
+ avatar: string;
9
+ username: string;
10
+ global_name: string;
11
+ email: string;
12
+ }
@@ -0,0 +1,17 @@
1
+ import { authEnvCheck } from "studiocms:auth/utils/authEnvCheck";
2
+ import { AuthConfig } from "studiocms:config";
3
+ import { Discord } from "arctic";
4
+ const {
5
+ DISCORD: { CLIENT_ID = "", CLIENT_SECRET = "", REDIRECT_URI = "" }
6
+ } = await authEnvCheck(AuthConfig.providers);
7
+ const ProviderID = "discord";
8
+ const ProviderCookieName = "discord_oauth_state";
9
+ const discord = new Discord(CLIENT_ID, CLIENT_SECRET, REDIRECT_URI);
10
+ export {
11
+ CLIENT_ID,
12
+ CLIENT_SECRET,
13
+ ProviderCookieName,
14
+ ProviderID,
15
+ REDIRECT_URI,
16
+ discord
17
+ };
@@ -0,0 +1,4 @@
1
+ import type { APIRoute } from 'astro';
2
+ export declare const GET: APIRoute;
3
+ export declare const OPTIONS: APIRoute;
4
+ export declare const ALL: APIRoute;
@@ -0,0 +1,112 @@
1
+ import { createUserSession } from "studiocms:auth/lib/session";
2
+ import { LinkNewOAuthCookieName, createOAuthUser, getUserData } from "studiocms:auth/lib/user";
3
+ import { config } from "studiocms:config";
4
+ import { StudioCMSRoutes } from "studiocms:lib";
5
+ import studioCMS_SDK from "studiocms:sdk";
6
+ import { OAuth2RequestError } from "arctic";
7
+ import { ProviderCookieName, ProviderID, github } from "./shared.js";
8
+ const GET = async (context) => {
9
+ const { url, cookies, redirect } = context;
10
+ const code = url.searchParams.get("code");
11
+ const state = url.searchParams.get("state");
12
+ const storedState = cookies.get(ProviderCookieName)?.value ?? null;
13
+ if (!code || !state || !storedState || state !== storedState) {
14
+ return redirect(StudioCMSRoutes.authLinks.loginURL);
15
+ }
16
+ let tokens;
17
+ try {
18
+ tokens = await github.validateAuthorizationCode(code);
19
+ const githubUserResponse = await fetch("https://api.github.com/user", {
20
+ headers: {
21
+ Authorization: `Bearer ${tokens.accessToken}`
22
+ }
23
+ });
24
+ const githubUser = await githubUserResponse.json();
25
+ const githubUserId = githubUser.id;
26
+ const githubUsername = githubUser.login;
27
+ const existingOAuthAccount = await studioCMS_SDK.AUTH.oAuth.searchProvidersForId(
28
+ ProviderID,
29
+ `${githubUserId}`
30
+ );
31
+ if (existingOAuthAccount) {
32
+ const user = await studioCMS_SDK.GET.databaseEntry.users.byId(existingOAuthAccount.userId);
33
+ if (!user) {
34
+ return new Response("User not found", {
35
+ status: 404
36
+ });
37
+ }
38
+ await createUserSession(user.id, context);
39
+ return redirect(StudioCMSRoutes.mainLinks.dashboardIndex);
40
+ }
41
+ const loggedInUser = await getUserData(context);
42
+ const linkNewOAuth = !!cookies.get(LinkNewOAuthCookieName)?.value;
43
+ if (loggedInUser.user && linkNewOAuth) {
44
+ const existingUser = await studioCMS_SDK.GET.databaseEntry.users.byId(loggedInUser.user.id);
45
+ if (existingUser) {
46
+ await studioCMS_SDK.AUTH.oAuth.create({
47
+ userId: existingUser.id,
48
+ provider: ProviderID,
49
+ providerUserId: `${githubUserId}`
50
+ });
51
+ await createUserSession(existingUser.id, context);
52
+ return redirect(StudioCMSRoutes.mainLinks.dashboardIndex);
53
+ }
54
+ }
55
+ const newUser = await createOAuthUser(
56
+ {
57
+ id: crypto.randomUUID(),
58
+ username: githubUsername,
59
+ email: githubUser.email,
60
+ name: githubUser.name,
61
+ avatar: githubUser.avatar_url,
62
+ createdAt: /* @__PURE__ */ new Date(),
63
+ url: githubUser.blog
64
+ },
65
+ { provider: ProviderID, providerUserId: `${githubUserId}` }
66
+ );
67
+ if ("error" in newUser) {
68
+ return new Response("Error creating user", { status: 500 });
69
+ }
70
+ if (config.dbStartPage) {
71
+ return redirect("/done");
72
+ }
73
+ await createUserSession(newUser.id, context);
74
+ return redirect(StudioCMSRoutes.mainLinks.dashboardIndex);
75
+ } catch (e) {
76
+ if (e instanceof OAuth2RequestError) {
77
+ const code2 = e.code;
78
+ return new Response(code2, {
79
+ status: 400
80
+ });
81
+ }
82
+ return new Response(null, {
83
+ status: 400
84
+ });
85
+ }
86
+ };
87
+ const OPTIONS = async () => {
88
+ return new Response(null, {
89
+ status: 204,
90
+ statusText: "No Content",
91
+ headers: {
92
+ Allow: "OPTIONS, GET",
93
+ "ALLOW-ACCESS-CONTROL-ORIGIN": "*",
94
+ "Cache-Control": "public, max-age=604800, immutable",
95
+ Date: (/* @__PURE__ */ new Date()).toUTCString()
96
+ }
97
+ });
98
+ };
99
+ const ALL = async () => {
100
+ return new Response(null, {
101
+ status: 405,
102
+ statusText: "Method Not Allowed",
103
+ headers: {
104
+ "ACCESS-CONTROL-ALLOW-ORIGIN": "*"
105
+ }
106
+ });
107
+ };
108
+ export {
109
+ ALL,
110
+ GET,
111
+ OPTIONS
112
+ };
@@ -0,0 +1,4 @@
1
+ import type { APIRoute } from 'astro';
2
+ export declare const GET: APIRoute;
3
+ export declare const OPTIONS: APIRoute;
4
+ export declare const ALL: APIRoute;
@@ -0,0 +1,36 @@
1
+ import { setOAuthSessionTokenCookie } from "studiocms:auth/lib/session";
2
+ import { generateState } from "arctic";
3
+ import { ProviderCookieName, github } from "./shared.js";
4
+ const GET = async (context) => {
5
+ const state = generateState();
6
+ const scopes = ["user:email", "repo"];
7
+ const url = github.createAuthorizationURL(state, scopes);
8
+ setOAuthSessionTokenCookie(context, ProviderCookieName, state);
9
+ return context.redirect(url.toString());
10
+ };
11
+ const OPTIONS = async () => {
12
+ return new Response(null, {
13
+ status: 204,
14
+ statusText: "No Content",
15
+ headers: {
16
+ Allow: "OPTIONS, GET",
17
+ "ALLOW-ACCESS-CONTROL-ORIGIN": "*",
18
+ "Cache-Control": "public, max-age=604800, immutable",
19
+ Date: (/* @__PURE__ */ new Date()).toUTCString()
20
+ }
21
+ });
22
+ };
23
+ const ALL = async () => {
24
+ return new Response(null, {
25
+ status: 405,
26
+ statusText: "Method Not Allowed",
27
+ headers: {
28
+ "ACCESS-CONTROL-ALLOW-ORIGIN": "*"
29
+ }
30
+ });
31
+ };
32
+ export {
33
+ ALL,
34
+ GET,
35
+ OPTIONS
36
+ };
@@ -0,0 +1,13 @@
1
+ import { GitHub } from 'arctic';
2
+ export declare const ProviderID = "github";
3
+ export declare const ProviderCookieName = "github_oauth_state";
4
+ export declare const github: GitHub;
5
+ export interface GitHubUser {
6
+ id: number;
7
+ html_url: string;
8
+ login: string;
9
+ avatar_url: string;
10
+ name: string;
11
+ blog: string;
12
+ email: string;
13
+ }
@@ -0,0 +1,14 @@
1
+ import { authEnvCheck } from "studiocms:auth/utils/authEnvCheck";
2
+ import { AuthConfig } from "studiocms:config";
3
+ import { GitHub } from "arctic";
4
+ const {
5
+ GITHUB: { CLIENT_ID = "", CLIENT_SECRET = "", REDIRECT_URI = null }
6
+ } = await authEnvCheck(AuthConfig.providers);
7
+ const ProviderID = "github";
8
+ const ProviderCookieName = "github_oauth_state";
9
+ const github = new GitHub(CLIENT_ID, CLIENT_SECRET, REDIRECT_URI);
10
+ export {
11
+ ProviderCookieName,
12
+ ProviderID,
13
+ github
14
+ };
@@ -0,0 +1,4 @@
1
+ import type { APIRoute } from 'astro';
2
+ export declare const GET: APIRoute;
3
+ export declare const OPTIONS: APIRoute;
4
+ export declare const ALL: APIRoute;
@@ -0,0 +1,115 @@
1
+ import { createUserSession } from "studiocms:auth/lib/session";
2
+ import { LinkNewOAuthCookieName, createOAuthUser, getUserData } from "studiocms:auth/lib/user";
3
+ import config from "studiocms:config";
4
+ import { StudioCMSRoutes } from "studiocms:lib";
5
+ import studioCMS_SDK from "studiocms:sdk";
6
+ import { OAuth2RequestError } from "arctic";
7
+ import {
8
+ ProviderCodeVerifier,
9
+ ProviderCookieName,
10
+ ProviderID,
11
+ google
12
+ } from "./shared.js";
13
+ const GET = async (context) => {
14
+ const { url, cookies, redirect } = context;
15
+ const code = url.searchParams.get("code");
16
+ const state = url.searchParams.get("state");
17
+ const codeVerifier = cookies.get(ProviderCodeVerifier)?.value ?? null;
18
+ const storedState = cookies.get(ProviderCookieName)?.value ?? null;
19
+ if (!code || !storedState || !codeVerifier || state !== storedState) {
20
+ return redirect(StudioCMSRoutes.authLinks.loginURL);
21
+ }
22
+ let tokens;
23
+ try {
24
+ tokens = await google.validateAuthorizationCode(code, codeVerifier);
25
+ const googleUserResponse = await fetch("https://openidconnect.googleapis.com/v1/userinfo", {
26
+ headers: {
27
+ Authorization: `Bearer ${tokens.accessToken}`
28
+ }
29
+ });
30
+ const googleUser = await googleUserResponse.json();
31
+ const googleUserId = googleUser.sub;
32
+ const googleUsername = googleUser.name;
33
+ const existingOAuthAccount = await studioCMS_SDK.AUTH.oAuth.searchProvidersForId(
34
+ ProviderID,
35
+ googleUserId
36
+ );
37
+ if (existingOAuthAccount) {
38
+ const user = await studioCMS_SDK.GET.databaseEntry.users.byId(existingOAuthAccount.userId);
39
+ if (!user) {
40
+ return new Response("User not found", { status: 404 });
41
+ }
42
+ await createUserSession(user.id, context);
43
+ return redirect(StudioCMSRoutes.mainLinks.dashboardIndex);
44
+ }
45
+ const loggedInUser = await getUserData(context);
46
+ const linkNewOAuth = !!cookies.get(LinkNewOAuthCookieName)?.value;
47
+ if (loggedInUser.user && linkNewOAuth) {
48
+ const existingUser = await studioCMS_SDK.GET.databaseEntry.users.byId(loggedInUser.user.id);
49
+ if (existingUser) {
50
+ await studioCMS_SDK.AUTH.oAuth.create({
51
+ userId: existingUser.id,
52
+ provider: ProviderID,
53
+ providerUserId: googleUserId
54
+ });
55
+ await createUserSession(existingUser.id, context);
56
+ return redirect(StudioCMSRoutes.mainLinks.dashboardIndex);
57
+ }
58
+ }
59
+ const newUser = await createOAuthUser(
60
+ {
61
+ id: crypto.randomUUID(),
62
+ username: googleUsername,
63
+ email: googleUser.email,
64
+ name: googleUser.name,
65
+ avatar: googleUser.picture,
66
+ createdAt: /* @__PURE__ */ new Date()
67
+ },
68
+ { provider: ProviderID, providerUserId: googleUserId }
69
+ );
70
+ if ("error" in newUser) {
71
+ return new Response("Error creating user", { status: 500 });
72
+ }
73
+ if (config.dbStartPage) {
74
+ return redirect("/done");
75
+ }
76
+ await createUserSession(newUser.id, context);
77
+ return redirect(StudioCMSRoutes.mainLinks.dashboardIndex);
78
+ } catch (e) {
79
+ if (e instanceof OAuth2RequestError) {
80
+ const code2 = e.code;
81
+ return new Response(code2, {
82
+ status: 400
83
+ });
84
+ }
85
+ return new Response(null, {
86
+ status: 500
87
+ });
88
+ }
89
+ };
90
+ const OPTIONS = async () => {
91
+ return new Response(null, {
92
+ status: 204,
93
+ statusText: "No Content",
94
+ headers: {
95
+ Allow: "OPTIONS, GET",
96
+ "ALLOW-ACCESS-CONTROL-ORIGIN": "*",
97
+ "Cache-Control": "public, max-age=604800, immutable",
98
+ Date: (/* @__PURE__ */ new Date()).toUTCString()
99
+ }
100
+ });
101
+ };
102
+ const ALL = async () => {
103
+ return new Response(null, {
104
+ status: 405,
105
+ statusText: "Method Not Allowed",
106
+ headers: {
107
+ "ACCESS-CONTROL-ALLOW-ORIGIN": "*"
108
+ }
109
+ });
110
+ };
111
+ export {
112
+ ALL,
113
+ GET,
114
+ OPTIONS
115
+ };
@@ -0,0 +1,4 @@
1
+ import type { APIRoute } from 'astro';
2
+ export declare const GET: APIRoute;
3
+ export declare const OPTIONS: APIRoute;
4
+ export declare const ALL: APIRoute;
@@ -0,0 +1,38 @@
1
+ import { setOAuthSessionTokenCookie } from "studiocms:auth/lib/session";
2
+ import { generateCodeVerifier, generateState } from "arctic";
3
+ import { ProviderCodeVerifier, ProviderCookieName, google } from "./shared.js";
4
+ const GET = async (context) => {
5
+ const state = generateState();
6
+ const codeVerifier = generateCodeVerifier();
7
+ const scopes = ["profile", "email"];
8
+ const url = google.createAuthorizationURL(state, codeVerifier, scopes);
9
+ setOAuthSessionTokenCookie(context, ProviderCookieName, state);
10
+ setOAuthSessionTokenCookie(context, ProviderCodeVerifier, codeVerifier);
11
+ return context.redirect(url.toString());
12
+ };
13
+ const OPTIONS = async () => {
14
+ return new Response(null, {
15
+ status: 204,
16
+ statusText: "No Content",
17
+ headers: {
18
+ Allow: "OPTIONS, GET",
19
+ "ALLOW-ACCESS-CONTROL-ORIGIN": "*",
20
+ "Cache-Control": "public, max-age=604800, immutable",
21
+ Date: (/* @__PURE__ */ new Date()).toUTCString()
22
+ }
23
+ });
24
+ };
25
+ const ALL = async () => {
26
+ return new Response(null, {
27
+ status: 405,
28
+ statusText: "Method Not Allowed",
29
+ headers: {
30
+ "ACCESS-CONTROL-ALLOW-ORIGIN": "*"
31
+ }
32
+ });
33
+ };
34
+ export {
35
+ ALL,
36
+ GET,
37
+ OPTIONS
38
+ };
@@ -0,0 +1,12 @@
1
+ import { Google } from 'arctic';
2
+ export declare const CLIENT_ID: string, CLIENT_SECRET: string, REDIRECT_URI: string;
3
+ export declare const ProviderID = "google";
4
+ export declare const ProviderCookieName = "google_oauth_state";
5
+ export declare const ProviderCodeVerifier = "google_oauth_code_verifier";
6
+ export declare const google: Google;
7
+ export interface GoogleUser {
8
+ sub: string;
9
+ picture: string;
10
+ name: string;
11
+ email: string;
12
+ }
@@ -0,0 +1,19 @@
1
+ import { authEnvCheck } from "studiocms:auth/utils/authEnvCheck";
2
+ import { AuthConfig } from "studiocms:config";
3
+ import { Google } from "arctic";
4
+ const {
5
+ GOOGLE: { CLIENT_ID = "", CLIENT_SECRET = "", REDIRECT_URI = "" }
6
+ } = await authEnvCheck(AuthConfig.providers);
7
+ const ProviderID = "google";
8
+ const ProviderCookieName = "google_oauth_state";
9
+ const ProviderCodeVerifier = "google_oauth_code_verifier";
10
+ const google = new Google(CLIENT_ID, CLIENT_SECRET, REDIRECT_URI);
11
+ export {
12
+ CLIENT_ID,
13
+ CLIENT_SECRET,
14
+ ProviderCodeVerifier,
15
+ ProviderCookieName,
16
+ ProviderID,
17
+ REDIRECT_URI,
18
+ google
19
+ };
@@ -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,46 @@
1
+ import { verifyPasswordHash } from "studiocms:auth/lib/password";
2
+ import { createUserSession } from "studiocms:auth/lib/session";
3
+ import studioCMS_SDK from "studiocms:sdk";
4
+ import { badFormDataEntry, parseFormDataEntryToString } from "./shared.js";
5
+ const POST = async (context) => {
6
+ const formData = await context.request.formData();
7
+ const username = parseFormDataEntryToString(formData, "username");
8
+ const password = parseFormDataEntryToString(formData, "password");
9
+ if (!username) return badFormDataEntry("Missing field", "Username is required");
10
+ if (!password) return badFormDataEntry("Missing field", "Password is required");
11
+ const existingUser = await studioCMS_SDK.GET.databaseEntry.users.byUsername(username);
12
+ if (!existingUser) return badFormDataEntry("Invalid credentials", "Invalid username or password");
13
+ if (!existingUser.password)
14
+ return badFormDataEntry("Incorrect method", "User is using OAuth login");
15
+ const validPassword = await verifyPasswordHash(existingUser.password, password);
16
+ if (!validPassword)
17
+ return badFormDataEntry("Invalid credentials", "Invalid username or password");
18
+ await createUserSession(existingUser.id, context);
19
+ return new Response();
20
+ };
21
+ const OPTIONS = async () => {
22
+ return new Response(null, {
23
+ status: 204,
24
+ statusText: "No Content",
25
+ headers: {
26
+ Allow: "OPTIONS, POST",
27
+ "ALLOW-ACCESS-CONTROL-ORIGIN": "*",
28
+ "Cache-Control": "public, max-age=604800, immutable",
29
+ Date: (/* @__PURE__ */ new Date()).toUTCString()
30
+ }
31
+ });
32
+ };
33
+ const ALL = async () => {
34
+ return new Response(null, {
35
+ status: 405,
36
+ statusText: "Method Not Allowed",
37
+ headers: {
38
+ "ACCESS-CONTROL-ALLOW-ORIGIN": "*"
39
+ }
40
+ });
41
+ };
42
+ export {
43
+ ALL,
44
+ OPTIONS,
45
+ POST
46
+ };
@@ -0,0 +1,5 @@
1
+ import type { APIRoute } from 'astro';
2
+ export declare const GET: APIRoute;
3
+ export declare const POST: APIRoute;
4
+ export declare const OPTIONS: APIRoute;
5
+ export declare const ALL: APIRoute;