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
@@ -0,0 +1,179 @@
1
+ import { ParseResult } from "effect";
2
+ import * as Schema from "effect/Schema";
3
+ import { SyncFunctionSchema } from "effectify/schemas";
4
+ import { availableTranslationFileKeys } from "../virtuals/i18n/v-files.js";
5
+ const expectedIconPrefixes = ["heroicons", "simpleicons", "lang-flags"];
6
+ const UIIconListSchema = Schema.declare(
7
+ (input) => {
8
+ if (typeof input !== "string") {
9
+ return false;
10
+ }
11
+ const [prefix] = input.split(":");
12
+ if (!expectedIconPrefixes.includes(prefix)) {
13
+ return false;
14
+ }
15
+ return true;
16
+ },
17
+ {
18
+ title: "UIIconListSchema",
19
+ identifier: "UIIconListSchema",
20
+ description: "Schema for validating UI icon names against the list of available icons in StudioCMS."
21
+ }
22
+ );
23
+ const SanitizeOptionsSchema = Schema.declare(
24
+ (input) => {
25
+ if (typeof input !== "object" || input === null) {
26
+ return false;
27
+ }
28
+ return true;
29
+ },
30
+ {
31
+ title: "SanitizeOptionsSchema",
32
+ identifier: "SanitizeOptionsSchema",
33
+ description: "Schema for validating SanitizeOptions objects used in plugin configurations."
34
+ }
35
+ );
36
+ const AstroComponentSchema = SyncFunctionSchema(Schema.Any, Schema.Any);
37
+ const AstroIntegrationSchema = Schema.declare(
38
+ (input) => {
39
+ if (typeof input !== "object" || input === null) {
40
+ return false;
41
+ }
42
+ if ("name" in input && typeof input.name === "string") {
43
+ return true;
44
+ }
45
+ return false;
46
+ },
47
+ {
48
+ title: "AstroIntegrationSchema",
49
+ identifier: "AstroIntegrationSchema",
50
+ description: "Schema for validating Astro integrations used in plugin configurations."
51
+ }
52
+ );
53
+ const AstroIntegrationLoggerSchema = Schema.declare(
54
+ (input) => {
55
+ if (typeof input !== "object" || input === null) {
56
+ return false;
57
+ }
58
+ if ("info" in input && typeof input.info === "function" && "warn" in input && typeof input.warn === "function" && "error" in input && typeof input.error === "function" && "debug" in input && typeof input.debug === "function") {
59
+ return true;
60
+ }
61
+ return false;
62
+ },
63
+ {
64
+ title: "AstroIntegrationLoggerSchema",
65
+ identifier: "AstroIntegrationLoggerSchema",
66
+ description: "Schema for validating Astro integration loggers used in plugin configurations."
67
+ }
68
+ );
69
+ const I18nKeySchema = Schema.transformOrFail(Schema.String, Schema.String, {
70
+ strict: true,
71
+ decode: (input, _options, ast) => {
72
+ if (typeof input !== "string") {
73
+ return ParseResult.fail(
74
+ new ParseResult.Type(ast, input, "Expected a string for I18nKeySchema")
75
+ );
76
+ }
77
+ if (!availableTranslationFileKeys.includes(input)) {
78
+ return ParseResult.fail(
79
+ new ParseResult.Type(
80
+ ast,
81
+ input,
82
+ `Invalid translation key. Expected one of: ${availableTranslationFileKeys.join(", ")}`
83
+ )
84
+ );
85
+ }
86
+ return ParseResult.succeed(input);
87
+ },
88
+ encode: (output) => ParseResult.succeed(output)
89
+ }).annotations({
90
+ title: "I18nKeySchema",
91
+ identifier: "I18nKeySchema",
92
+ description: "Schema for validating translation keys used in plugin configurations, ensuring that only valid translation keys from the available translation file keys are accepted."
93
+ });
94
+ const LongShortUndefined = Schema.Union(Schema.Literal("long", "short"), Schema.Undefined);
95
+ const LongShortNarrowUndefined = Schema.Union(LongShortUndefined, Schema.Literal("narrow"));
96
+ const Numeric2Digit = Schema.Literal("numeric", "2-digit");
97
+ const Numeric2DigitUndefined = Schema.Union(Numeric2Digit, Schema.Undefined);
98
+ const TZOffsets = Schema.Literal("shortOffset", "longOffset");
99
+ const TZGenerics = Schema.Literal("shortGeneric", "longGeneric");
100
+ const TZName = Schema.Union(LongShortUndefined, TZOffsets, TZGenerics);
101
+ const BestFitUndefined = Schema.Union(Schema.Literal("best fit"), Schema.Undefined);
102
+ class DateTimeFormatOptions extends Schema.Class(
103
+ "DateTimeFormatOptions"
104
+ )(
105
+ {
106
+ localeMatcher: Schema.optional(Schema.Union(BestFitUndefined, Schema.Literal("lookup"))),
107
+ weekday: Schema.optional(LongShortNarrowUndefined),
108
+ era: Schema.optional(LongShortNarrowUndefined),
109
+ year: Schema.optional(Numeric2DigitUndefined),
110
+ month: Schema.optional(Schema.Union(Numeric2Digit, LongShortNarrowUndefined)),
111
+ day: Schema.optional(Numeric2DigitUndefined),
112
+ hour: Schema.optional(Numeric2DigitUndefined),
113
+ minute: Schema.optional(Numeric2DigitUndefined),
114
+ second: Schema.optional(Numeric2DigitUndefined),
115
+ timeZoneName: Schema.optional(TZName),
116
+ formatMatcher: Schema.optional(Schema.Union(BestFitUndefined, Schema.Literal("basic"))),
117
+ hour12: Schema.optional(Schema.Union(Schema.Boolean, Schema.Undefined)),
118
+ timeZone: Schema.optional(Schema.Union(Schema.String, Schema.Undefined))
119
+ },
120
+ {
121
+ title: "DateTimeFormatOptions",
122
+ description: "JavaScript Intl.DateTimeFormatOptions options for formatting dates and times in the dashboard.",
123
+ identifier: "DateTimeFormatOptions"
124
+ }
125
+ ) {
126
+ }
127
+ const ValidEmailSchema = Schema.transformOrFail(Schema.String, Schema.String, {
128
+ strict: true,
129
+ decode: (input, _options, ast) => {
130
+ const emailRegex = /^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}$/;
131
+ if (!emailRegex.test(input)) {
132
+ return ParseResult.fail(
133
+ new ParseResult.Type(
134
+ ast,
135
+ input,
136
+ "Invalid email format, expected a valid email address. (e.g., example@example.com)"
137
+ )
138
+ );
139
+ }
140
+ return ParseResult.succeed(input);
141
+ },
142
+ encode: (output) => ParseResult.succeed(output)
143
+ }).annotations({
144
+ title: "ValidEmailSchema",
145
+ identifier: "ValidEmailSchema",
146
+ description: "A schema for validating email addresses in StudioCMS, ensuring that any provided email addresses adhere to standard email formatting rules.",
147
+ examples: ["example@example.com", "john@doe.com"],
148
+ documentation: "This schema uses a regular expression to validate that the input string is in a valid email format, making it suitable for validating email addresses in plugin configurations or other parts of StudioCMS.",
149
+ jsonSchema: {
150
+ type: "string",
151
+ format: "email"
152
+ }
153
+ });
154
+ const isValidEmail = (email) => {
155
+ const result = Schema.decodeEither(ValidEmailSchema)(email);
156
+ if (result._tag === "Left") {
157
+ return { success: false, error: result.left };
158
+ }
159
+ return { success: true, data: email };
160
+ };
161
+ export {
162
+ AstroComponentSchema,
163
+ AstroIntegrationLoggerSchema,
164
+ AstroIntegrationSchema,
165
+ BestFitUndefined,
166
+ DateTimeFormatOptions,
167
+ I18nKeySchema,
168
+ LongShortNarrowUndefined,
169
+ LongShortUndefined,
170
+ Numeric2Digit,
171
+ Numeric2DigitUndefined,
172
+ SanitizeOptionsSchema,
173
+ TZGenerics,
174
+ TZName,
175
+ TZOffsets,
176
+ UIIconListSchema,
177
+ ValidEmailSchema,
178
+ isValidEmail
179
+ };
@@ -1,2 +1,4 @@
1
1
  export * from './config/index.js';
2
+ export * from './custom.js';
3
+ export * from './external-schemas.js';
2
4
  export * from './plugins/index.js';
@@ -1,2 +1,4 @@
1
1
  export * from "./config/index.js";
2
+ export * from "./custom.js";
3
+ export * from "./external-schemas.js";
2
4
  export * from "./plugins/index.js";
@@ -1,40 +1,67 @@
1
- import { z } from 'astro/zod';
2
- export interface TranslationsJSON {
3
- [key: string]: string;
4
- }
5
- export interface ComponentsJSON {
6
- [component: string]: TranslationsJSON;
7
- }
8
- export interface PluginTranslations {
9
- [language: string]: ComponentsJSON;
10
- }
11
- /**
12
- * Plugin Translation PluginTranslationCollection
1
+ import * as Schema from 'effect/Schema';
2
+ /**
3
+ * Plugin Translations Schema
4
+ */
5
+ export declare const TranslationsJSONSchema: Schema.mutable<Schema.Record$<typeof Schema.String, typeof Schema.String>>;
6
+ /**
7
+ * Type for the plugin translations JSON object.
8
+ */
9
+ export type TranslationsJSON = typeof TranslationsJSONSchema.Type;
10
+ /**
11
+ * Schema for the components translations JSON object.
12
+ */
13
+ export declare const ComponentsJSONSchema: Schema.mutable<Schema.Record$<typeof Schema.String, Schema.mutable<Schema.Record$<typeof Schema.String, typeof Schema.String>>>>;
14
+ /**
15
+ * Type for the components translations JSON object.
16
+ */
17
+ export type ComponentsJSON = typeof ComponentsJSONSchema.Type;
18
+ /**
19
+ * Schema for the plugin translations collection.
20
+ */
21
+ export declare const PluginTranslationsSchema: Schema.mutable<Schema.Record$<typeof Schema.String, Schema.mutable<Schema.Record$<typeof Schema.String, Schema.mutable<Schema.Record$<typeof Schema.String, typeof Schema.String>>>>>>;
22
+ /**
23
+ * Type for the plugin translations collection.
24
+ */
25
+ export type PluginTranslations = typeof PluginTranslationsSchema.Type;
26
+ /**
27
+ * Schema for a collection of plugin translations.
28
+ */
29
+ export declare const PluginTranslationCollectionSchema: Schema.mutable<Schema.Record$<typeof Schema.String, Schema.mutable<Schema.Record$<typeof Schema.String, Schema.mutable<Schema.Record$<typeof Schema.String, Schema.mutable<Schema.Record$<typeof Schema.String, typeof Schema.String>>>>>>>>;
30
+ /**
31
+ * Type for a collection of plugin translations.
32
+ */
33
+ export type PluginTranslationCollection = typeof PluginTranslationCollectionSchema.Type;
34
+ /**
35
+ * Schema for the plugin augments translations JSON object.
36
+ */
37
+ export declare const AugmentsJSONSchema: Schema.mutable<Schema.Struct<{
38
+ augments: Schema.mutable<Schema.Record$<typeof Schema.String, typeof Schema.String>>;
39
+ }>>;
40
+ /**
41
+ * Type for the plugin augments translations JSON object.
42
+ */
43
+ export type AugmentsJSON = typeof AugmentsJSONSchema.Type;
44
+ /**
45
+ * Schema for a collection of plugin augments translations.
13
46
  *
14
47
  * @example
15
48
  * {
16
- * 'plugin1': {
17
- * en: {
18
- * comp1: {
19
- * title: 'Comp Title',
20
- * 'another-key': 'Hello!'
21
- * },
22
- * },
23
- * fr: {
24
- * comp1: { ... }
25
- * },
26
- * },
27
- * 'plugin2': { ... }
49
+ * en: {
50
+ * augments: {
51
+ * 'augment-key': 'Augment Text',
52
+ * 'another-augment': 'More augment text'
53
+ * }
54
+ * },
55
+ * fr: {
56
+ * augments: { ... }
57
+ * }
28
58
  * }
29
59
  */
30
- export interface PluginTranslationCollection {
31
- [plugin: string]: PluginTranslations;
32
- }
33
- export interface AugmentsJSON {
34
- augments: TranslationsJSON;
35
- }
60
+ export declare const PluginAugmentsTranslationCollectionSchema: Schema.mutable<Schema.Record$<typeof Schema.String, Schema.mutable<Schema.Struct<{
61
+ augments: Schema.mutable<Schema.Record$<typeof Schema.String, typeof Schema.String>>;
62
+ }>>>>;
36
63
  /**
37
- * Plugin Augments Translation Collection
64
+ * Type for a collection of plugin augments translations.
38
65
  *
39
66
  * @example
40
67
  * {
@@ -49,11 +76,4 @@ export interface AugmentsJSON {
49
76
  * }
50
77
  * }
51
78
  */
52
- export interface PluginAugmentsTranslationCollection {
53
- [language: string]: AugmentsJSON;
54
- }
55
- export declare const pluginTranslationsSchema: z.ZodType<PluginTranslations, z.ZodTypeDef, PluginTranslations>;
56
- /**
57
- * Schema for a collection of plugin translations.
58
- */
59
- export declare const pluginTranslationCollectionSchema: z.ZodType<PluginTranslationCollection, z.ZodTypeDef, PluginTranslationCollection>;
79
+ export type PluginAugmentsTranslationCollection = typeof PluginAugmentsTranslationCollectionSchema.Type;
@@ -1,7 +1,44 @@
1
- import { z } from "astro/zod";
2
- const pluginTranslationsSchema = z.custom();
3
- const pluginTranslationCollectionSchema = z.custom();
1
+ import * as Schema from "effect/Schema";
2
+ const TranslationsJSONSchema = Schema.mutable(
3
+ Schema.Record({
4
+ key: Schema.String,
5
+ value: Schema.String
6
+ })
7
+ );
8
+ const ComponentsJSONSchema = Schema.mutable(
9
+ Schema.Record({
10
+ key: Schema.String,
11
+ value: TranslationsJSONSchema
12
+ })
13
+ );
14
+ const PluginTranslationsSchema = Schema.mutable(
15
+ Schema.Record({
16
+ key: Schema.String,
17
+ value: ComponentsJSONSchema
18
+ })
19
+ );
20
+ const PluginTranslationCollectionSchema = Schema.mutable(
21
+ Schema.Record({
22
+ key: Schema.String,
23
+ value: PluginTranslationsSchema
24
+ })
25
+ );
26
+ const AugmentsJSONSchema = Schema.mutable(
27
+ Schema.Struct({
28
+ augments: TranslationsJSONSchema
29
+ })
30
+ );
31
+ const PluginAugmentsTranslationCollectionSchema = Schema.mutable(
32
+ Schema.Record({
33
+ key: Schema.String,
34
+ value: AugmentsJSONSchema
35
+ })
36
+ );
4
37
  export {
5
- pluginTranslationCollectionSchema,
6
- pluginTranslationsSchema
38
+ AugmentsJSONSchema,
39
+ ComponentsJSONSchema,
40
+ PluginAugmentsTranslationCollectionSchema,
41
+ PluginTranslationCollectionSchema,
42
+ PluginTranslationsSchema,
43
+ TranslationsJSONSchema
7
44
  };