studiocms 0.2.0 → 0.4.0

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 (293) hide show
  1. package/CHANGELOG.md +122 -0
  2. package/dist/cli/add/index.d.ts +2 -2
  3. package/dist/cli/add/index.js +4 -3
  4. package/dist/cli/add/npm-utils.d.ts +6 -6
  5. package/dist/cli/add/tryToInstallPlugins.d.ts +1 -1
  6. package/dist/cli/add/tryToInstallPlugins.js +6 -5
  7. package/dist/cli/add/updateStudioCMSConfig.d.ts +1 -1
  8. package/dist/cli/add/updateStudioCMSConfig.js +3 -4
  9. package/dist/cli/add/validatePlugins.d.ts +1 -2
  10. package/dist/cli/add/validatePlugins.js +15 -9
  11. package/dist/cli/crypto/genJWT/index.d.ts +1 -1
  12. package/dist/cli/crypto/genJWT/index.js +8 -9
  13. package/dist/cli/crypto/index.d.ts +1 -1
  14. package/dist/cli/init/steps/env.js +14 -4
  15. package/dist/cli/init/steps/next.d.ts +1 -1
  16. package/dist/cli/init/steps/next.js +6 -5
  17. package/dist/cli/migrator/index.d.ts +1 -1
  18. package/dist/cli/migrator/index.js +2 -2
  19. package/dist/cli/users/index.d.ts +1 -1
  20. package/dist/cli/users/shared.js +2 -2
  21. package/dist/cli/users/steps/createUsers.js +7 -7
  22. package/dist/cli/users/steps/modifyUsers.js +2 -2
  23. package/dist/cli/users/steps/next.d.ts +1 -1
  24. package/dist/cli/utils/checkRequiredEnvVars.js +2 -2
  25. package/dist/cli/utils/context.d.ts +2 -4
  26. package/dist/cli/utils/context.js +1 -3
  27. package/dist/cli/utils/getCliDbClient.d.ts +1 -1
  28. package/dist/cli/utils/intro.d.ts +1 -1
  29. package/dist/cli/utils/loadConfig.d.ts +54 -49
  30. package/dist/cli/utils/loadConfig.js +5 -8
  31. package/dist/cli/utils/logger.js +3 -3
  32. package/dist/cli/utils/user-utils.d.ts +1 -1
  33. package/dist/cli/utils/user-utils.js +4 -3
  34. package/dist/client/apiClient.d.ts +4923 -0
  35. package/dist/client/apiClient.js +72 -0
  36. package/dist/config.d.ts +1734 -1
  37. package/dist/consts.d.ts +5 -5
  38. package/dist/consts.js +3 -2
  39. package/dist/db/plugins.d.ts +1 -1
  40. package/dist/db/plugins.js +5 -8
  41. package/dist/handlers/frontend/routes.d.ts +4 -18
  42. package/dist/handlers/frontend/routes.js +13 -152
  43. package/dist/handlers/frontend/types.d.ts +1 -1
  44. package/dist/handlers/frontend/utils.js +0 -18
  45. package/dist/handlers/pluginHandler.d.ts +34 -257
  46. package/dist/handlers/pluginHandler.js +92 -46
  47. package/dist/handlers/routeHandler.js +32 -11
  48. package/dist/handlers/setupDbStudio.d.ts +3 -1
  49. package/dist/handlers/setupDbStudio.js +19 -10
  50. package/dist/handlers/storage-manager/core/effectify-astro-context.d.ts +25 -0
  51. package/dist/handlers/storage-manager/core/effectify-astro-context.js +78 -0
  52. package/dist/handlers/storage-manager/no-op.d.ts +2 -2
  53. package/dist/handlers/storage-manager/no-op.js +2 -3
  54. package/dist/index.d.ts +0 -1
  55. package/dist/index.js +10 -20
  56. package/dist/integrations/robots/index.d.ts +2 -2
  57. package/dist/integrations/robots/index.js +1 -3
  58. package/dist/integrations/robots/schema.d.ts +102 -273
  59. package/dist/integrations/robots/schema.js +220 -209
  60. package/dist/plugins/analytics/assets/schemas.d.ts +14 -9
  61. package/dist/plugins/analytics/assets/schemas.js +25 -17
  62. package/dist/plugins/analytics/db-client.d.ts +1 -1
  63. package/dist/plugins/analytics/index.d.ts +823 -3
  64. package/dist/plugins/analytics/index.js +4 -5
  65. package/dist/plugins/analytics/schemas.d.ts +54 -62
  66. package/dist/plugins/analytics/schemas.js +64 -13
  67. package/dist/plugins/analytics/table.d.ts +1 -1
  68. package/dist/plugins.d.ts +0 -1
  69. package/dist/schemas/config/api.d.ts +17 -0
  70. package/dist/schemas/config/api.js +14 -0
  71. package/dist/schemas/config/auth.d.ts +55 -59
  72. package/dist/schemas/config/auth.js +34 -11
  73. package/dist/schemas/config/dashboard.d.ts +43 -79
  74. package/dist/schemas/config/dashboard.js +43 -12
  75. package/dist/schemas/config/db.d.ts +15 -17
  76. package/dist/schemas/config/db.js +13 -5
  77. package/dist/schemas/config/developer.d.ts +33 -45
  78. package/dist/schemas/config/developer.js +22 -5
  79. package/dist/schemas/config/index.d.ts +398 -521
  80. package/dist/schemas/config/index.js +115 -57
  81. package/dist/schemas/config/sdk.d.ts +50 -196
  82. package/dist/schemas/config/sdk.js +61 -73
  83. package/dist/schemas/custom.d.ts +40 -0
  84. package/dist/schemas/custom.js +41 -0
  85. package/dist/schemas/external-schemas.d.ts +171 -0
  86. package/dist/schemas/external-schemas.js +179 -0
  87. package/dist/schemas/index.d.ts +2 -0
  88. package/dist/schemas/index.js +2 -0
  89. package/dist/schemas/plugins/i18n.d.ts +59 -39
  90. package/dist/schemas/plugins/i18n.js +42 -5
  91. package/dist/schemas/plugins/index.d.ts +7126 -10296
  92. package/dist/schemas/plugins/index.js +260 -276
  93. package/dist/schemas/plugins/shared.d.ts +1293 -3718
  94. package/dist/schemas/plugins/shared.js +320 -329
  95. package/dist/test-utils.d.ts +15 -4
  96. package/dist/test-utils.js +27 -11
  97. package/dist/toolbar/db-viewer/db-shared-types.d.ts +6 -6
  98. package/dist/toolbar/db-viewer/studio/connection.d.ts +8 -4
  99. package/dist/toolbar/db-viewer/studio/connection.js +2 -28
  100. package/dist/toolbar/db-viewer/studio/env/libsql.d.ts +7 -0
  101. package/dist/toolbar/db-viewer/studio/env/libsql.js +17 -0
  102. package/dist/toolbar/db-viewer/studio/env/mysql.d.ts +7 -0
  103. package/dist/toolbar/db-viewer/studio/env/mysql.js +23 -0
  104. package/dist/toolbar/db-viewer/studio/env/postgres.d.ts +7 -0
  105. package/dist/toolbar/db-viewer/studio/env/postgres.js +23 -0
  106. package/dist/toolbar/db-viewer/studio/index.js +20 -56
  107. package/dist/toolbar/db-viewer/studio/type.d.ts +1 -2
  108. package/dist/toolbar/db-viewer/studio/virtual-connection/libsql.d.ts +3 -0
  109. package/dist/toolbar/db-viewer/studio/virtual-connection/libsql.js +24 -0
  110. package/dist/toolbar/db-viewer/studio/virtual-connection/mysql.d.ts +3 -0
  111. package/dist/toolbar/db-viewer/studio/virtual-connection/mysql.js +9 -0
  112. package/dist/toolbar/db-viewer/studio/virtual-connection/postgres.d.ts +3 -0
  113. package/dist/toolbar/db-viewer/studio/virtual-connection/postgres.js +9 -0
  114. package/dist/toolbar/db-viewer/viewer.js +20 -21
  115. package/dist/types.d.ts +30 -0
  116. package/dist/utils/effects/smtp.d.ts +1 -1
  117. package/dist/utils/lang-helper.d.ts +10 -2
  118. package/dist/virtual.d.ts +35 -28
  119. package/dist/virtuals/auth/core.d.ts +5 -5
  120. package/dist/virtuals/auth/verify-email.d.ts +6 -6
  121. package/dist/virtuals/components/Generator.astro +2 -2
  122. package/dist/virtuals/components/Renderer.astro +9 -1
  123. package/dist/virtuals/components/renderFn.d.ts +3 -1
  124. package/dist/virtuals/components/renderFn.js +18 -0
  125. package/dist/virtuals/lib/headDefaults.d.ts +4 -2
  126. package/dist/virtuals/lib/headDefaults.js +0 -2
  127. package/dist/virtuals/lib/routeMap.d.ts +0 -12
  128. package/dist/virtuals/lib/routeMap.js +2 -14
  129. package/dist/virtuals/mailer/index.d.ts +3 -3
  130. package/dist/virtuals/notifier/index.d.ts +5 -5
  131. package/dist/virtuals/plugins/dashboard-pages.d.ts +2 -64
  132. package/dist/virtuals/scripts/StorageFileBrowser.d.ts +1 -172
  133. package/dist/virtuals/scripts/StorageFileBrowser.js +216 -119
  134. package/dist/virtuals/template-engine/index.d.ts +4 -4
  135. package/frontend/components/dashboard/configuration/ConfigForm.astro +218 -110
  136. package/frontend/components/dashboard/content-mgmt/ContentSearch.astro +21 -22
  137. package/frontend/components/dashboard/content-mgmt/CreateFolder.astro +66 -54
  138. package/frontend/components/dashboard/content-mgmt/CreatePage.astro +58 -104
  139. package/frontend/components/dashboard/content-mgmt/EditFolder.astro +65 -67
  140. package/frontend/components/dashboard/content-mgmt/EditPage.astro +86 -134
  141. package/frontend/components/dashboard/content-mgmt/InnerSidebarElement.astro +0 -1
  142. package/frontend/components/dashboard/content-mgmt/PageHeader.astro +33 -52
  143. package/frontend/components/dashboard/content-mgmt/PageTypeHandler.astro +2 -2
  144. package/frontend/components/dashboard/profile/APITokens.astro +219 -158
  145. package/frontend/components/dashboard/profile/BasicInfo.astro +165 -106
  146. package/frontend/components/dashboard/profile/Notifications.astro +27 -18
  147. package/frontend/components/dashboard/profile/UpdatePassword.astro +134 -94
  148. package/frontend/components/dashboard/sidebar/VersionCheck.astro +31 -16
  149. package/frontend/components/dashboard/sidebar/VersionCheckChangelog.astro +18 -11
  150. package/frontend/components/dashboard/sidebar-modals/VersionModal.astro +2 -2
  151. package/frontend/components/dashboard/smtp-config/TemplateEditor.astro +14 -14
  152. package/frontend/components/dashboard/taxonomy/InnerSidebarElement.astro +0 -1
  153. package/frontend/components/dashboard/taxonomy/MetaContainer.astro +0 -2
  154. package/frontend/components/dashboard/taxonomy/PageHeader.astro +16 -24
  155. package/frontend/components/dashboard/taxonomy/TaxonomySearch.astro +23 -27
  156. package/frontend/components/dashboard/user-mgmt/InnerSidebarElement.astro +111 -104
  157. package/frontend/components/dashboard/user-mgmt/UserListItem.astro +9 -22
  158. package/frontend/components/dashboard/user-mgmt/UserListItems.astro +18 -0
  159. package/frontend/components/first-time-setup/snippets/{opt2-studiocms.config.diff → studiocms.config.diff} +1 -0
  160. package/frontend/components/shared/Code.astro +1 -4
  161. package/frontend/components/shared/DynamicSettingsRenderer.astro +1 -1
  162. package/frontend/components/shared/SSRUser.astro +2 -4
  163. package/frontend/components/shared/foldertree/FolderTreeNode.astro +0 -6
  164. package/frontend/components/shared/storage-manager/StorageCopyOutput.astro +0 -1
  165. package/frontend/components/shared/taxonomy/TaxonomyTreeNode.astro +0 -6
  166. package/frontend/layouts/DashboardLayout.astro +1 -10
  167. package/frontend/layouts/TaxonomyLayout.astro +0 -1
  168. package/frontend/middleware/index.ts +102 -61
  169. package/frontend/pages/404.astro +5 -9
  170. package/frontend/pages/[dashboard]/[...pluginPage].astro +10 -1
  171. package/frontend/pages/[dashboard]/configuration.astro +10 -1
  172. package/frontend/pages/[dashboard]/content-management/createfolder.astro +10 -1
  173. package/frontend/pages/[dashboard]/content-management/createpage.astro +10 -1
  174. package/frontend/pages/[dashboard]/content-management/diff.astro +39 -14
  175. package/frontend/pages/[dashboard]/content-management/editfolder.astro +10 -1
  176. package/frontend/pages/[dashboard]/content-management/editpage.astro +10 -1
  177. package/frontend/pages/[dashboard]/content-management/index.astro +10 -1
  178. package/frontend/pages/[dashboard]/index.astro +10 -1
  179. package/frontend/pages/[dashboard]/login.astro +86 -25
  180. package/frontend/pages/[dashboard]/password-reset.astro +22 -16
  181. package/frontend/pages/[dashboard]/plugins/[plugin].astro +10 -1
  182. package/frontend/pages/[dashboard]/profile.astro +10 -1
  183. package/frontend/pages/[dashboard]/signup.astro +153 -52
  184. package/frontend/pages/[dashboard]/smtp-configuration.astro +77 -75
  185. package/frontend/pages/[dashboard]/system-management.astro +10 -1
  186. package/frontend/pages/[dashboard]/taxonomy/categories.astro +30 -41
  187. package/frontend/pages/[dashboard]/taxonomy/index.astro +10 -0
  188. package/frontend/pages/[dashboard]/taxonomy/tags.astro +33 -43
  189. package/frontend/pages/[dashboard]/unverified-email.astro +29 -21
  190. package/frontend/pages/[dashboard]/user-management/edit.astro +170 -90
  191. package/frontend/pages/[dashboard]/user-management/index.astro +10 -1
  192. package/frontend/pages/studiocms_api/[...all].ts +106 -0
  193. package/frontend/pages/studiocms_api/_handlers/_utils/auth.ts +26 -0
  194. package/frontend/pages/studiocms_api/_handlers/_utils/changelog.ts +147 -0
  195. package/frontend/pages/studiocms_api/_handlers/_utils/db-studio-driver.ts +46 -0
  196. package/frontend/pages/studiocms_api/_handlers/_utils/parseLogLevel.ts +27 -0
  197. package/frontend/pages/studiocms_api/_handlers/auth/auth.ts +459 -0
  198. package/frontend/pages/studiocms_api/_handlers/auth/index.ts +17 -0
  199. package/frontend/pages/studiocms_api/_handlers/auth/oauth.ts +91 -0
  200. package/frontend/pages/studiocms_api/_handlers/dashboard/_shared.ts +57 -0
  201. package/frontend/pages/studiocms_api/_handlers/dashboard/apiTokens.ts +134 -0
  202. package/frontend/pages/studiocms_api/_handlers/dashboard/config.ts +64 -0
  203. package/frontend/pages/studiocms_api/_handlers/dashboard/content.ts +741 -0
  204. package/frontend/pages/studiocms_api/_handlers/dashboard/create.ts +480 -0
  205. package/frontend/pages/studiocms_api/_handlers/dashboard/emailNotifications.ts +49 -0
  206. package/frontend/pages/studiocms_api/_handlers/dashboard/index.ts +45 -0
  207. package/frontend/pages/studiocms_api/_handlers/dashboard/mailer.ts +136 -0
  208. package/frontend/pages/studiocms_api/_handlers/dashboard/plugins.ts +80 -0
  209. package/frontend/pages/studiocms_api/_handlers/dashboard/profile.ts +275 -0
  210. package/frontend/pages/studiocms_api/_handlers/dashboard/resetPassword.ts +140 -0
  211. package/frontend/pages/studiocms_api/_handlers/dashboard/search.ts +63 -0
  212. package/frontend/pages/studiocms_api/_handlers/dashboard/taxonomy.ts +285 -0
  213. package/frontend/pages/studiocms_api/_handlers/dashboard/templates.ts +75 -0
  214. package/frontend/pages/studiocms_api/_handlers/dashboard/users.ts +312 -0
  215. package/frontend/pages/studiocms_api/_handlers/dashboard/verifyEndpoints.ts +307 -0
  216. package/frontend/pages/studiocms_api/_handlers/integration/dbStudio.ts +98 -0
  217. package/frontend/pages/studiocms_api/_handlers/integration/index.ts +17 -0
  218. package/frontend/pages/studiocms_api/_handlers/integration/storageManager.ts +107 -0
  219. package/frontend/pages/studiocms_api/_handlers/rest-api/index.ts +8 -0
  220. package/frontend/pages/studiocms_api/_handlers/rest-api/v1/_shared.ts +41 -0
  221. package/frontend/pages/studiocms_api/_handlers/rest-api/v1/index.ts +17 -0
  222. package/frontend/pages/studiocms_api/_handlers/rest-api/v1/public.ts +195 -0
  223. package/frontend/pages/studiocms_api/_handlers/rest-api/v1/secure.ts +1726 -0
  224. package/frontend/pages/studiocms_api/_handlers/sdk.ts +129 -0
  225. package/frontend/pages/studiocms_api/_middleware/astroLocals.ts +36 -0
  226. package/frontend/pages/studiocms_api/_middleware/restApi.ts +56 -0
  227. package/frontend/pages/studiocms_api/integrations/[...all].ts +8 -0
  228. package/frontend/scripts/formdata.ts +219 -0
  229. package/frontend/setup-pages/3-done.astro +4 -20
  230. package/frontend/setup-pages/studiocms_api/dashboard/step-2.ts +3 -6
  231. package/frontend/styles/dashboard-base.css +0 -1
  232. package/frontend/web-vitals/endpoint.ts +2 -1
  233. package/package.json +35 -31
  234. package/dist/global.d.ts +0 -9
  235. package/frontend/components/dashboard/LoginChecker.astro +0 -68
  236. package/frontend/components/dashboard/user-mgmt/RankCheck.astro +0 -57
  237. package/frontend/components/first-time-setup/snippets/opt1-astro.config.diff +0 -14
  238. package/frontend/components/first-time-setup/snippets/opt2-astro.config.diff +0 -9
  239. package/frontend/middleware/_authmap.ts +0 -63
  240. package/frontend/pages/studiocms_api/auth/[path].ts +0 -390
  241. package/frontend/pages/studiocms_api/auth/[provider]/[...id].ts +0 -64
  242. package/frontend/pages/studiocms_api/auth/[provider]/_effects/index.ts +0 -101
  243. package/frontend/pages/studiocms_api/auth/_shared.ts +0 -52
  244. package/frontend/pages/studiocms_api/dashboard/api-tokens.ts +0 -115
  245. package/frontend/pages/studiocms_api/dashboard/config.ts +0 -74
  246. package/frontend/pages/studiocms_api/dashboard/content/diff.ts +0 -73
  247. package/frontend/pages/studiocms_api/dashboard/content/folder.ts +0 -220
  248. package/frontend/pages/studiocms_api/dashboard/content/page.ts +0 -359
  249. package/frontend/pages/studiocms_api/dashboard/create-reset-link.ts +0 -77
  250. package/frontend/pages/studiocms_api/dashboard/create-user-invite.ts +0 -231
  251. package/frontend/pages/studiocms_api/dashboard/create-user.ts +0 -186
  252. package/frontend/pages/studiocms_api/dashboard/email-notification-settings-site.ts +0 -74
  253. package/frontend/pages/studiocms_api/dashboard/mailer/check-email.ts +0 -75
  254. package/frontend/pages/studiocms_api/dashboard/mailer/config.ts +0 -136
  255. package/frontend/pages/studiocms_api/dashboard/plugins/[plugin].ts +0 -80
  256. package/frontend/pages/studiocms_api/dashboard/profile.ts +0 -245
  257. package/frontend/pages/studiocms_api/dashboard/resend-verify-email.ts +0 -77
  258. package/frontend/pages/studiocms_api/dashboard/reset-password.ts +0 -124
  259. package/frontend/pages/studiocms_api/dashboard/search-list.ts +0 -59
  260. package/frontend/pages/studiocms_api/dashboard/taxonomy-search.ts +0 -47
  261. package/frontend/pages/studiocms_api/dashboard/taxonomy.ts +0 -230
  262. package/frontend/pages/studiocms_api/dashboard/templates.ts +0 -74
  263. package/frontend/pages/studiocms_api/dashboard/update-user-notifications.ts +0 -86
  264. package/frontend/pages/studiocms_api/dashboard/users.ts +0 -236
  265. package/frontend/pages/studiocms_api/dashboard/verify-email.ts +0 -83
  266. package/frontend/pages/studiocms_api/dashboard/verify-session.ts +0 -187
  267. package/frontend/pages/studiocms_api/integrations/[type]/[...id].ts +0 -15
  268. package/frontend/pages/studiocms_api/integrations/[type]/_routes/db-studio.ts +0 -173
  269. package/frontend/pages/studiocms_api/integrations/[type]/_routes/storage.ts +0 -88
  270. package/frontend/pages/studiocms_api/partials/editor.astro +0 -74
  271. package/frontend/pages/studiocms_api/partials/render.astro +0 -39
  272. package/frontend/pages/studiocms_api/partials/user-list-items.astro +0 -43
  273. package/frontend/pages/studiocms_api/rest/utils/auth-token.ts +0 -59
  274. package/frontend/pages/studiocms_api/rest/v1/[type]/[...id].ts +0 -23
  275. package/frontend/pages/studiocms_api/rest/v1/[type]/_routes/categories.ts +0 -267
  276. package/frontend/pages/studiocms_api/rest/v1/[type]/_routes/folders.ts +0 -283
  277. package/frontend/pages/studiocms_api/rest/v1/[type]/_routes/pages.ts +0 -505
  278. package/frontend/pages/studiocms_api/rest/v1/[type]/_routes/settings.ts +0 -100
  279. package/frontend/pages/studiocms_api/rest/v1/[type]/_routes/tags.ts +0 -229
  280. package/frontend/pages/studiocms_api/rest/v1/[type]/_routes/users.ts +0 -553
  281. package/frontend/pages/studiocms_api/rest/v1/public/[type]/[...id].ts +0 -19
  282. package/frontend/pages/studiocms_api/rest/v1/public/[type]/_routes/categories.ts +0 -74
  283. package/frontend/pages/studiocms_api/rest/v1/public/[type]/_routes/folders.ts +0 -85
  284. package/frontend/pages/studiocms_api/rest/v1/public/[type]/_routes/pages.ts +0 -103
  285. package/frontend/pages/studiocms_api/rest/v1/public/[type]/_routes/tags.ts +0 -67
  286. package/frontend/pages/studiocms_api/sdk/[...path].ts +0 -97
  287. package/frontend/pages/studiocms_api/sdk/utils/changelog.ts +0 -119
  288. package/frontend/scripts/auth/formListener.ts +0 -81
  289. package/frontend/scripts/formdata-utils.ts +0 -116
  290. package/frontend/utils/build-partial-schema.ts +0 -46
  291. package/frontend/utils/errors.ts +0 -6
  292. package/frontend/utils/param-extractor.ts +0 -83
  293. package/frontend/utils/rest-router.ts +0 -444
@@ -1,293 +1,248 @@
1
- import { z } from "astro/zod";
2
- import { pluginTranslationsSchema } from "./i18n.js";
1
+ import * as Schema from "effect/Schema";
2
+ import { FunctionSchema, SyncFunctionSchema } from "effectify/schemas";
3
+ import { AstroIntegrationLoggerSchema, AstroIntegrationSchema } from "../external-schemas.js";
4
+ import { PluginTranslationsSchema } from "./i18n.js";
3
5
  import {
4
- astroIntegrationSchema,
5
6
  DashboardPageSchema,
6
7
  FrontendNavigationLinksSchema,
8
+ GridItemInputSchema,
7
9
  PageTypesSchema,
8
10
  SettingsPageSchema
9
11
  } from "./shared.js";
10
- const ComponentRenderAugmentSchema = z.object({
11
- type: z.literal("component"),
12
- id: z.string(),
13
- components: z.record(z.string())
14
- });
15
- const PrefixRenderAugmentSchema = ComponentRenderAugmentSchema.extend({
16
- type: z.literal("prefix"),
17
- html: z.string()
18
- });
19
- const SuffixRenderAugmentSchema = ComponentRenderAugmentSchema.extend({
20
- type: z.literal("suffix"),
21
- html: z.string()
22
- });
23
- const RenderAugmentSchema = z.union([
12
+ class PostProcessorSchema extends Schema.Class("PostProcessorSchema")({
13
+ id: Schema.String,
14
+ postProcessor: Schema.String
15
+ }) {
16
+ }
17
+ class RenderAugmentBaseSchema extends Schema.Class(
18
+ "RenderAugmentBaseSchema"
19
+ )({
20
+ id: Schema.String,
21
+ components: Schema.Record({
22
+ key: Schema.String,
23
+ value: Schema.String
24
+ })
25
+ }) {
26
+ }
27
+ class ComponentRenderAugmentSchema extends RenderAugmentBaseSchema.extend(
28
+ "ComponentRenderAugmentSchema"
29
+ )({
30
+ type: Schema.Literal("component")
31
+ }) {
32
+ }
33
+ class PrefixRenderAugmentSchema extends RenderAugmentBaseSchema.extend(
34
+ "PrefixRenderAugmentSchema"
35
+ )({
36
+ type: Schema.Literal("prefix"),
37
+ html: Schema.String
38
+ }) {
39
+ }
40
+ class SuffixRenderAugmentSchema extends RenderAugmentBaseSchema.extend(
41
+ "SuffixRenderAugmentSchema"
42
+ )({
43
+ type: Schema.Literal("suffix"),
44
+ html: Schema.String
45
+ }) {
46
+ }
47
+ class PostProcessorAugmentSchema extends PostProcessorSchema.extend(
48
+ "PostProcessorAugmentSchema"
49
+ )({
50
+ type: Schema.Literal("post-processor")
51
+ }) {
52
+ }
53
+ const RenderAugmentSchema = Schema.Union(
24
54
  ComponentRenderAugmentSchema,
25
55
  PrefixRenderAugmentSchema,
26
- SuffixRenderAugmentSchema
27
- ]);
28
- const RenderAugmentsSchema = z.array(RenderAugmentSchema).optional();
29
- const StudioCMSSanitizeOptionsSchema = z.object({
30
- /** An Array of strings indicating elements that the sanitizer should not remove. All elements not in the array will be dropped. */
31
- allowElements: z.array(z.string()).optional(),
32
- /** An Array of strings indicating elements that the sanitizer should remove. Children will be kept. */
33
- blockElements: z.array(z.string()).optional(),
34
- /** An Array of strings indicating elements (including nested elements) that the sanitizer should remove. */
35
- dropElements: z.array(z.string()).optional(),
36
- /** An object where each key is the attribute name and the value is an array of allowed tag names. Matching attributes will not be removed. All attributes that are not in the array will be dropped. */
37
- allowAttributes: z.record(z.array(z.string())).optional(),
38
- /** An object where each key is the attribute name and the value is an array of dropped tag names. Matching attributes will be removed. */
39
- dropAttributes: z.record(z.array(z.string())).optional(),
40
- /** A boolean value to remove components and their children. If set to true, components will be subject to built-in and custom configuration checks (and will be retained or dropped based on those checks). Default is `false`. */
41
- allowComponents: z.boolean().optional(),
42
- /** A boolean value to remove custom elements and their children. If set to true, custom elements will be subject to built-in and custom configuration checks (and will be retained or dropped based on those checks). Default is `false` */
43
- allowCustomElements: z.boolean().optional(),
44
- /** A boolean value to remove HTML comments. Set to true in order to keep comments. Default is `false`. */
45
- allowComments: z.boolean().optional()
46
- }).optional();
47
- const dashboardPagesArray = z.array(DashboardPageSchema).optional();
48
- const astroIntegrationLoggerSchema = z.custom();
49
- const SafePluginListItemSchema = z.object({
50
- /**
51
- * Identifier of the plugin from the package.json
52
- */
53
- identifier: z.string(),
54
- /**
55
- * Label of the plugin to be displayed in the StudioCMS Dashboard
56
- */
57
- name: z.string(),
58
- /**
59
- * If this exists, the plugin will have its own setting page
60
- */
61
- settingsPage: SettingsPageSchema.optional(),
62
- /**
63
- * Navigation Links for use with the `@studiocms/frontend` package to display links in the frontend
64
- */
65
- frontendNavigationLinks: FrontendNavigationLinksSchema.optional(),
66
- /**
67
- * Page Type definition. If this is present, the plugin wants to be able to modify the page creation process
68
- */
69
- pageTypes: PageTypesSchema.optional()
56
+ SuffixRenderAugmentSchema,
57
+ PostProcessorAugmentSchema
58
+ );
59
+ const RenderAugmentsSchema = Schema.Array(RenderAugmentSchema);
60
+ const dashboardPagesArray = Schema.Array(DashboardPageSchema);
61
+ const SafePluginListItemSchema = Schema.Struct({
62
+ identifier: Schema.String,
63
+ name: Schema.String,
64
+ settingsPage: SettingsPageSchema,
65
+ frontendNavigationLinks: FrontendNavigationLinksSchema,
66
+ pageTypes: PageTypesSchema
70
67
  });
71
- const SafePluginListSchema = z.array(SafePluginListItemSchema);
72
- const SitemapConfigSchema = z.object({
73
- /**
74
- * If this is true, the plugin will enable the Sitemap
75
- */
76
- triggerSitemap: z.boolean().optional(),
77
- /**
78
- * Allows the plugin to add sitemap endpoints
79
- */
80
- sitemaps: z.array(
81
- z.object({
82
- /**
83
- * The name of the plugin
84
- */
85
- pluginName: z.string(),
86
- /**
87
- * The path to the sitemap XML file
88
- */
89
- sitemapXMLEndpointPath: z.string().or(z.instanceof(URL))
68
+ const SafePluginListSchema = Schema.mutable(Schema.Array(SafePluginListItemSchema));
69
+ const SitemapConfigSchema = Schema.mutable(
70
+ Schema.Struct({
71
+ triggerSitemap: Schema.optional(Schema.Boolean),
72
+ sitemaps: Schema.optional(
73
+ Schema.Array(
74
+ Schema.Struct({
75
+ pluginName: Schema.String,
76
+ sitemapXMLEndpointPath: Schema.Union(Schema.String, Schema.URL)
77
+ })
78
+ )
79
+ )
80
+ })
81
+ );
82
+ const DashboardConfigSchema = Schema.mutable(
83
+ Schema.Struct({
84
+ translations: PluginTranslationsSchema,
85
+ dashboardGridItems: Schema.optional(Schema.Array(GridItemInputSchema)),
86
+ dashboardPages: Schema.optional(
87
+ Schema.Struct({
88
+ user: Schema.optional(dashboardPagesArray),
89
+ admin: Schema.optional(dashboardPagesArray)
90
+ })
91
+ ),
92
+ settingsPage: SettingsPageSchema
93
+ })
94
+ );
95
+ const DashboardAugmentSchema = Schema.mutable(
96
+ Schema.Struct({
97
+ scripts: Schema.optional(Schema.Array(Schema.String)),
98
+ components: Schema.optional(
99
+ Schema.Record({
100
+ key: Schema.String,
101
+ value: Schema.String
102
+ })
103
+ )
104
+ })
105
+ );
106
+ const FrontendConfigSchema = Schema.mutable(
107
+ Schema.Struct({
108
+ frontendNavigationLinks: FrontendNavigationLinksSchema
109
+ })
110
+ );
111
+ const RenderingConfigSchema = Schema.mutable(
112
+ Schema.Struct({
113
+ pageTypes: PageTypesSchema,
114
+ augments: Schema.optional(RenderAugmentsSchema),
115
+ postProcessor: Schema.optional(PostProcessorSchema)
116
+ })
117
+ );
118
+ const ImageServiceConfigSchema = Schema.mutable(
119
+ Schema.Struct({
120
+ imageService: Schema.optional(
121
+ Schema.Struct({
122
+ identifier: Schema.String,
123
+ servicePath: Schema.Union(Schema.String, Schema.URL)
124
+ })
125
+ )
126
+ })
127
+ );
128
+ const AuthServiceConfigSchema = Schema.mutable(
129
+ Schema.Struct({
130
+ oAuthProvider: Schema.Struct({
131
+ name: Schema.String,
132
+ formattedName: Schema.String,
133
+ svg: Schema.String,
134
+ endpointPath: Schema.String,
135
+ requiredEnvVariables: Schema.optional(Schema.Array(Schema.String))
90
136
  })
91
- ).optional()
92
- });
93
- const DashboardConfigSchema = z.object({
94
- /**
95
- * The translations for the plugin in the following format:
96
- *
97
- * ```json
98
- * {
99
- * "en": {
100
- * "component1": {
101
- * "title": "Title",
102
- * "description": "Description"
103
- * },
104
- * "component2": {
105
- * "title": "Title",
106
- * "description": "Description"
107
- * }
108
- * },
109
- * "fr": {
110
- * "component1": {
111
- * "title": "Titre",
112
- * "description": "Description"
113
- * },
114
- * "component2": {
115
- * "title": "Titre",
116
- * "description": "Description"
117
- * }
118
- * }
119
- * }
120
- * ```
121
- */
122
- translations: pluginTranslationsSchema,
123
- /**
124
- * Allows the plugin to add custom dashboard grid items
125
- */
126
- dashboardGridItems: z.custom().optional(),
127
- /**
128
- * Dashboard Pages for the plugin
129
- */
130
- dashboardPages: z.object({
131
- /**
132
- * Pages for the user role
133
- *
134
- * These are shown in the "Dashboard" section of the dashboard sidebar
135
- */
136
- user: dashboardPagesArray,
137
- /**
138
- * Pages for the editor role
139
- *
140
- * These are shown in the "Admin" section of the dashboard sidebar
141
- */
142
- admin: dashboardPagesArray
143
- }).optional(),
144
- /**
145
- * If this exists, the plugin will have its own setting page
146
- */
147
- settingsPage: SettingsPageSchema
148
- });
149
- const DashboardAugmentSchema = z.object({
150
- /**
151
- * Scripts to be added to the dashboard
152
- *
153
- * Scripts should be paths to the client side files that will be loaded in the dashboard
154
- *
155
- * These files should be able to imported as ambient modules
156
- */
157
- scripts: z.array(z.string()).optional(),
158
- /**
159
- * Astro Components to be added to the dashboard
160
- *
161
- * These components should be self-contained and not rely on any external state
162
- *
163
- * The key is the component identifier, and the value is the path to the component file
164
- */
165
- components: z.record(z.string()).optional()
166
- });
167
- const FrontendConfigSchema = z.object({
168
- /**
169
- * Navigation Links for use with the `@studiocms/frontend` package to display links in the frontend
170
- */
171
- frontendNavigationLinks: FrontendNavigationLinksSchema
172
- });
173
- const RenderingConfigSchema = z.object({
174
- /**
175
- * Page Type definition. If this is present, the plugin wants to be able to modify the page creation process
176
- */
177
- pageTypes: PageTypesSchema,
178
- /**
179
- * Augments to modify component rendering
180
- *
181
- * When adding new augments, please ensure that the `id` field is unique across all augments.
182
- *
183
- * the `id` field is also used to identify augment translations from the plugin translations
184
- * schema, below is an example of how to add augment translations:
185
- *
186
- * ```json
187
- * {
188
- * "en": {
189
- * "augments": {
190
- * "augment-id": "This is the augment text"
191
- * }
192
- * },
193
- * "fr": {
194
- * "augments": {
195
- * "augment-id": "Ceci est le texte d'augmentation"
196
- * }
197
- * }
198
- * }
199
- * ```
200
- */
201
- augments: RenderAugmentsSchema
202
- });
203
- const ImageServiceConfigSchema = z.object({
204
- imageService: z.object({
205
- /**
206
- * Identifier used for the `preferredImageService` setting on StudioCMS
207
- */
208
- identifier: z.string(),
209
- /**
210
- * The Service Path to the file that contains your service, the service must be exported as a default export.
211
- *
212
- * For an example of a service, checkout `/src/imageServices/cloudinary-js-service.ts` and its plugin `/src/imageServices/cloudinary-js.ts` within the StudioCMS package on GitHub.
213
- */
214
- servicePath: z.string().or(z.instanceof(URL))
215
- }).optional()
216
- });
217
- const AuthServiceConfigSchema = z.object({
218
- oAuthProvider: z.object({
219
- /**
220
- * The name of the OAuth provider, e.g., 'google', 'github', etc.
221
- */
222
- name: z.string(),
223
- /**
224
- * The formatted name of the OAuth provider, e.g., 'Google', 'GitHub', etc.
225
- */
226
- formattedName: z.string(),
227
- /**
228
- * The inline SVG image for the OAuth provider button.
229
- * This should be a string containing the SVG markup.
230
- *
231
- * Note: Please ensure the class `oauth-logo` is included in the SVG for styling purposes.
232
- *
233
- * @example
234
- * `<svg width="24px" height="24px" viewBox="0 0 98 96" xmlns="http://www.w3.org/2000/svg" class="oauth-logo">...</svg>`,
235
- */
236
- svg: z.string(),
237
- /**
238
- * The path to the endpoint file that handles the OAuth authentication for this provider.
239
- * This should be a string or URL pointing to the endpoint ts file.
240
- *
241
- * Note: The endpoint should export two functions:
242
- * - `initSession`: Initializes the session for the OAuth provider.
243
- * - `initCallback`: Handles the callback from the OAuth provider after authentication.
244
- *
245
- * @example
246
- * `/src/auth/providers/google.ts`
247
- */
248
- endpointPath: z.string(),
249
- /**
250
- * Required environment variables for the OAuth provider.
251
- * This is an optional array of strings that specifies which environment variables are required for the OAuth provider to function correctly.
252
- * If specified, these variables must be set in the environment for the OAuth provider to work.
253
- */
254
- requiredEnvVariables: z.array(z.string()).optional()
255
137
  })
138
+ );
139
+ const StorageManagerConfigSchema = Schema.Struct({
140
+ managerPath: Schema.String
256
141
  });
257
- const StorageManagerConfigSchema = z.object({
258
- managerPath: z.string()
259
- });
260
- const baseHookSchema = z.object({
261
- logger: astroIntegrationLoggerSchema
262
- });
263
- const astroConfigHookSchema = baseHookSchema.extend({
264
- addIntegrations: z.function(
265
- z.tuple([z.union([astroIntegrationSchema, z.array(astroIntegrationSchema)])]),
266
- z.void()
142
+ class BaseHookSchema extends Schema.Class("BaseHookSchema")({
143
+ logger: AstroIntegrationLoggerSchema
144
+ }) {
145
+ }
146
+ class astroConfigHookSchema extends BaseHookSchema.extend(
147
+ "astroConfigHookSchema"
148
+ )({
149
+ addIntegrations: FunctionSchema(
150
+ Schema.Union(AstroIntegrationSchema, Schema.mutable(Schema.Array(AstroIntegrationSchema))),
151
+ Schema.Void
267
152
  )
153
+ }) {
154
+ }
155
+ class SitemapHookSchema extends BaseHookSchema.extend(
156
+ "SitemapHookSchema"
157
+ )({
158
+ setSitemap: FunctionSchema(SitemapConfigSchema, Schema.Void)
159
+ }) {
160
+ }
161
+ class DashboardHookSchema extends BaseHookSchema.extend(
162
+ "DashboardHookSchema"
163
+ )({
164
+ setDashboard: FunctionSchema(DashboardConfigSchema, Schema.Void),
165
+ augmentDashboard: FunctionSchema(DashboardAugmentSchema, Schema.Void)
166
+ }) {
167
+ }
168
+ class FrontendHookSchema extends BaseHookSchema.extend(
169
+ "FrontendHookSchema"
170
+ )({
171
+ setFrontend: FunctionSchema(FrontendConfigSchema, Schema.Void)
172
+ }) {
173
+ }
174
+ class RenderingHookSchema extends BaseHookSchema.extend(
175
+ "RenderingHookSchema"
176
+ )({
177
+ setRendering: FunctionSchema(RenderingConfigSchema, Schema.Void)
178
+ }) {
179
+ }
180
+ class ImageServiceHookSchema extends BaseHookSchema.extend(
181
+ "ImageServiceHookSchema"
182
+ )({
183
+ setImageService: FunctionSchema(ImageServiceConfigSchema, Schema.Void)
184
+ }) {
185
+ }
186
+ class AuthServiceHookSchema extends BaseHookSchema.extend(
187
+ "AuthServiceHookSchema"
188
+ )({
189
+ setAuthService: FunctionSchema(AuthServiceConfigSchema, Schema.Void)
190
+ }) {
191
+ }
192
+ class StorageManagerHookSchema extends BaseHookSchema.extend(
193
+ "StorageManagerHookSchema"
194
+ )({
195
+ setStorageManager: FunctionSchema(StorageManagerConfigSchema, Schema.Void)
196
+ }) {
197
+ }
198
+ const makeHookSchema = (argsSchema) => Schema.optional(
199
+ Schema.Union(
200
+ FunctionSchema(argsSchema, Schema.Void),
201
+ SyncFunctionSchema(argsSchema, Schema.Void)
202
+ )
203
+ ).annotations({
204
+ description: "A hook schema for validating the structure of hooks that plugins can implement to integrate with various aspects of the StudioCMS system."
268
205
  });
269
- const studiocms_SitemapHookSchema = baseHookSchema.extend({
270
- setSitemap: z.function(z.tuple([SitemapConfigSchema]), z.void())
271
- });
272
- const studiocms_DashboardHookSchema = baseHookSchema.extend({
273
- setDashboard: z.function(z.tuple([DashboardConfigSchema]), z.void()),
274
- augmentDashboard: z.function(z.tuple([DashboardAugmentSchema]), z.void())
275
- });
276
- const studiocms_FrontendHookSchema = baseHookSchema.extend({
277
- setFrontend: z.function(z.tuple([FrontendConfigSchema]), z.void())
278
- });
279
- const studiocms_RenderingHookSchema = baseHookSchema.extend({
280
- setRendering: z.function(z.tuple([RenderingConfigSchema]), z.void())
281
- });
282
- const studiocms_ImageServiceHookSchema = baseHookSchema.extend({
283
- setImageService: z.function(z.tuple([ImageServiceConfigSchema]), z.void())
284
- });
285
- const studiocms_AuthHookSchema = baseHookSchema.extend({
286
- setAuthService: z.function(z.tuple([AuthServiceConfigSchema]), z.void())
287
- });
288
- const studiocms_StorageManagerHookSchema = baseHookSchema.extend({
289
- setStorageManager: z.function(z.tuple([StorageManagerConfigSchema]), z.void())
206
+ const InternalPluginHooksSchema = Schema.Struct({
207
+ "studiocms:astro-config": makeHookSchema(astroConfigHookSchema),
208
+ "studiocms:auth": makeHookSchema(AuthServiceHookSchema),
209
+ "studiocms:dashboard": makeHookSchema(DashboardHookSchema),
210
+ "studiocms:frontend": makeHookSchema(FrontendHookSchema),
211
+ "studiocms:rendering": makeHookSchema(RenderingHookSchema),
212
+ "studiocms:image-service": makeHookSchema(ImageServiceHookSchema),
213
+ "studiocms:sitemap": makeHookSchema(SitemapHookSchema)
290
214
  });
215
+ const BasePluginHooksSchema = Schema.mutable(InternalPluginHooksSchema);
216
+ const StorageManagerPluginHooksSchema = Schema.mutable(
217
+ Schema.Struct({
218
+ ...InternalPluginHooksSchema.fields,
219
+ "studiocms:storage-manager": makeHookSchema(StorageManagerHookSchema)
220
+ })
221
+ );
222
+ class StudioCMSPluginBaseSchema extends Schema.Class(
223
+ "StudioCMSPluginBaseSchema"
224
+ )({
225
+ identifier: Schema.String,
226
+ name: Schema.String,
227
+ /**
228
+ * @deprecated The `studiocmsMinimumVersion` property is deprecated and will be removed in a future release. Please ensure that your plugin is compatible with the latest version of StudioCMS and remove this property from your plugin configuration. It is recommended to use `peerDependencies` in your plugin's package.json to specify the compatible versions of StudioCMS instead of relying on this property for version compatibility checks.
229
+ */
230
+ studiocmsMinimumVersion: Schema.optional(Schema.String),
231
+ requires: Schema.optional(Schema.Array(Schema.String))
232
+ }) {
233
+ }
234
+ class StudioCMSPluginSchema extends StudioCMSPluginBaseSchema.extend(
235
+ "StudioCMSPluginSchema"
236
+ )({
237
+ hooks: BasePluginHooksSchema
238
+ }) {
239
+ }
240
+ class StudioCMSStorageManagerSchema extends StudioCMSPluginBaseSchema.extend(
241
+ "StudioCMSStorageManagerSchema"
242
+ )({
243
+ hooks: StorageManagerPluginHooksSchema
244
+ }) {
245
+ }
291
246
  function definePlugin(options) {
292
247
  return options;
293
248
  }
@@ -295,11 +250,40 @@ function defineStorageManager(options) {
295
250
  return options;
296
251
  }
297
252
  export {
253
+ AuthServiceConfigSchema,
254
+ AuthServiceHookSchema,
255
+ BaseHookSchema,
256
+ BasePluginHooksSchema,
257
+ ComponentRenderAugmentSchema,
258
+ DashboardAugmentSchema,
259
+ DashboardConfigSchema,
260
+ DashboardHookSchema,
261
+ FrontendConfigSchema,
262
+ FrontendHookSchema,
263
+ ImageServiceConfigSchema,
264
+ ImageServiceHookSchema,
265
+ InternalPluginHooksSchema,
266
+ PostProcessorAugmentSchema,
267
+ PostProcessorSchema,
268
+ PrefixRenderAugmentSchema,
269
+ RenderAugmentBaseSchema,
298
270
  RenderAugmentSchema,
299
271
  RenderAugmentsSchema,
272
+ RenderingConfigSchema,
273
+ RenderingHookSchema,
300
274
  SafePluginListItemSchema,
301
275
  SafePluginListSchema,
302
- StudioCMSSanitizeOptionsSchema,
276
+ SitemapConfigSchema,
277
+ SitemapHookSchema,
278
+ StorageManagerConfigSchema,
279
+ StorageManagerHookSchema,
280
+ StorageManagerPluginHooksSchema,
281
+ StudioCMSPluginBaseSchema,
282
+ StudioCMSPluginSchema,
283
+ StudioCMSStorageManagerSchema,
284
+ SuffixRenderAugmentSchema,
285
+ astroConfigHookSchema,
286
+ dashboardPagesArray,
303
287
  definePlugin,
304
288
  defineStorageManager
305
289
  };