@strapi/email 0.0.0-next.fc9d26d995624dc886b29f563e1de655d47e6609 → 0.0.0-next.ffc36acb308febe288f1a31b62cbbb75b286585c

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 (256) hide show
  1. package/dist/admin/constants.js +17 -0
  2. package/dist/admin/constants.js.map +1 -0
  3. package/dist/admin/constants.mjs +15 -0
  4. package/dist/admin/constants.mjs.map +1 -0
  5. package/dist/admin/index.js +86 -2
  6. package/dist/admin/index.js.map +1 -1
  7. package/dist/admin/index.mjs +87 -1
  8. package/dist/admin/index.mjs.map +1 -1
  9. package/dist/admin/{chunks/Settings-D8WJjMq7.js → pages/Settings.js} +8 -30
  10. package/dist/admin/pages/Settings.js.map +1 -0
  11. package/dist/admin/{chunks/Settings-DE939EJl.js → pages/Settings.mjs} +5 -27
  12. package/dist/admin/pages/Settings.mjs.map +1 -0
  13. package/dist/admin/translations/ar.json.js +6 -0
  14. package/dist/admin/translations/ar.json.js.map +1 -0
  15. package/dist/admin/{chunks/ar-JWJKrFM-.js → translations/ar.json.mjs} +1 -1
  16. package/dist/admin/translations/ar.json.mjs.map +1 -0
  17. package/dist/admin/translations/cs.json.js +6 -0
  18. package/dist/admin/translations/cs.json.js.map +1 -0
  19. package/dist/admin/{chunks/cs-BZCMeXgq.js → translations/cs.json.mjs} +1 -1
  20. package/dist/admin/translations/cs.json.mjs.map +1 -0
  21. package/dist/admin/translations/de.json.js +6 -0
  22. package/dist/admin/translations/de.json.js.map +1 -0
  23. package/dist/admin/{chunks/de-CGlAhulB.js → translations/de.json.mjs} +1 -1
  24. package/dist/admin/translations/de.json.mjs.map +1 -0
  25. package/dist/admin/{chunks/dk-DW7WecjY.js → translations/dk.json.js} +2 -2
  26. package/dist/admin/translations/dk.json.js.map +1 -0
  27. package/dist/admin/{chunks/dk-B5IuEReS.js → translations/dk.json.mjs} +1 -1
  28. package/dist/admin/translations/dk.json.mjs.map +1 -0
  29. package/dist/admin/{chunks/en-DacnIsXb.js → translations/en.json.js} +3 -1
  30. package/dist/admin/translations/en.json.js.map +1 -0
  31. package/dist/admin/{chunks/en-Dxg2wKLN.js → translations/en.json.mjs} +1 -1
  32. package/dist/admin/translations/en.json.mjs.map +1 -0
  33. package/dist/admin/{chunks/es-DxWi6BKM.js → translations/es.json.js} +2 -2
  34. package/dist/admin/translations/es.json.js.map +1 -0
  35. package/dist/admin/{chunks/es-fdc21M_E.js → translations/es.json.mjs} +1 -1
  36. package/dist/admin/translations/es.json.mjs.map +1 -0
  37. package/dist/admin/translations/fr.json.js +6 -0
  38. package/dist/admin/translations/fr.json.js.map +1 -0
  39. package/dist/admin/{chunks/fr-DZjvYp6C.js → translations/fr.json.mjs} +1 -1
  40. package/dist/admin/translations/fr.json.mjs.map +1 -0
  41. package/dist/admin/translations/id.json.js +6 -0
  42. package/dist/admin/translations/id.json.js.map +1 -0
  43. package/dist/admin/{chunks/id-C1eDxX9W.js → translations/id.json.mjs} +1 -1
  44. package/dist/admin/translations/id.json.mjs.map +1 -0
  45. package/dist/admin/translations/it.json.js +6 -0
  46. package/dist/admin/translations/it.json.js.map +1 -0
  47. package/dist/admin/{chunks/it-DVlJ2EhA.js → translations/it.json.mjs} +1 -1
  48. package/dist/admin/translations/it.json.mjs.map +1 -0
  49. package/dist/admin/{chunks/ja-DdOPbVbe.js → translations/ja.json.js} +2 -2
  50. package/dist/admin/translations/ja.json.js.map +1 -0
  51. package/dist/admin/{chunks/ja-CVosbw2M.js → translations/ja.json.mjs} +1 -1
  52. package/dist/admin/translations/ja.json.mjs.map +1 -0
  53. package/dist/admin/{chunks/ko-CaWqWfC8.js → translations/ko.json.js} +2 -2
  54. package/dist/admin/translations/ko.json.js.map +1 -0
  55. package/dist/admin/{chunks/ko-B8SR--vZ.js → translations/ko.json.mjs} +1 -1
  56. package/dist/admin/translations/ko.json.mjs.map +1 -0
  57. package/dist/admin/translations/ms.json.js +6 -0
  58. package/dist/admin/translations/ms.json.js.map +1 -0
  59. package/dist/admin/{chunks/ms-DLngEN2_.js → translations/ms.json.mjs} +1 -1
  60. package/dist/admin/translations/ms.json.mjs.map +1 -0
  61. package/dist/admin/translations/nl.json.js +6 -0
  62. package/dist/admin/translations/nl.json.js.map +1 -0
  63. package/dist/admin/{chunks/nl-B6Q0VF48.js → translations/nl.json.mjs} +1 -1
  64. package/dist/admin/translations/nl.json.mjs.map +1 -0
  65. package/dist/admin/{chunks/pl-CO-R08qV.js → translations/pl.json.js} +2 -2
  66. package/dist/admin/translations/pl.json.js.map +1 -0
  67. package/dist/admin/{chunks/pl-Bve39qfV.js → translations/pl.json.mjs} +1 -1
  68. package/dist/admin/translations/pl.json.mjs.map +1 -0
  69. package/dist/admin/translations/pt-BR.json.js +6 -0
  70. package/dist/admin/translations/pt-BR.json.js.map +1 -0
  71. package/dist/admin/{chunks/pt-BR-DPqDE4wA.js → translations/pt-BR.json.mjs} +1 -1
  72. package/dist/admin/translations/pt-BR.json.mjs.map +1 -0
  73. package/dist/admin/{chunks/pt-BzFac2P5.js → translations/pt.json.js} +3 -1
  74. package/dist/admin/translations/pt.json.js.map +1 -0
  75. package/dist/admin/{chunks/pt-DLqF-Sb4.js → translations/pt.json.mjs} +1 -1
  76. package/dist/admin/translations/pt.json.mjs.map +1 -0
  77. package/dist/admin/translations/ru.json.js +6 -0
  78. package/dist/admin/translations/ru.json.js.map +1 -0
  79. package/dist/admin/{chunks/ru-rmFYdvwh.js → translations/ru.json.mjs} +1 -1
  80. package/dist/admin/translations/ru.json.mjs.map +1 -0
  81. package/dist/admin/translations/sk.json.js +6 -0
  82. package/dist/admin/translations/sk.json.js.map +1 -0
  83. package/dist/admin/{chunks/sk-DDJmUHcx.js → translations/sk.json.mjs} +1 -1
  84. package/dist/admin/translations/sk.json.mjs.map +1 -0
  85. package/dist/admin/translations/th.json.js +6 -0
  86. package/dist/admin/translations/th.json.js.map +1 -0
  87. package/dist/admin/{chunks/th-BqTCSpUc.js → translations/th.json.mjs} +1 -1
  88. package/dist/admin/translations/th.json.mjs.map +1 -0
  89. package/dist/admin/{chunks/tr-n7J_y4Bh.js → translations/tr.json.js} +3 -1
  90. package/dist/admin/translations/tr.json.js.map +1 -0
  91. package/dist/admin/{chunks/tr-BmrcZCoj.js → translations/tr.json.mjs} +1 -1
  92. package/dist/admin/translations/tr.json.mjs.map +1 -0
  93. package/dist/admin/translations/uk.json.js +32 -0
  94. package/dist/admin/translations/uk.json.js.map +1 -0
  95. package/dist/admin/translations/uk.json.mjs +27 -0
  96. package/dist/admin/translations/uk.json.mjs.map +1 -0
  97. package/dist/admin/translations/vi.json.js +6 -0
  98. package/dist/admin/translations/vi.json.js.map +1 -0
  99. package/dist/admin/{chunks/vi-CO9gCtmD.js → translations/vi.json.mjs} +1 -1
  100. package/dist/admin/translations/vi.json.mjs.map +1 -0
  101. package/dist/admin/{chunks/zh-Hans-D0bb9tfC.js → translations/zh-Hans.json.js} +3 -1
  102. package/dist/admin/translations/zh-Hans.json.js.map +1 -0
  103. package/dist/admin/{chunks/zh-Hans-ChWc00HT.js → translations/zh-Hans.json.mjs} +1 -1
  104. package/dist/admin/translations/zh-Hans.json.mjs.map +1 -0
  105. package/dist/admin/{chunks/zh-9wNbbqde.js → translations/zh.json.js} +3 -1
  106. package/dist/admin/translations/zh.json.js.map +1 -0
  107. package/dist/admin/{chunks/zh-CZQ4DV5L.js → translations/zh.json.mjs} +1 -1
  108. package/dist/admin/translations/zh.json.mjs.map +1 -0
  109. package/dist/admin/utils/getYupInnerErrors.js +23 -0
  110. package/dist/admin/utils/getYupInnerErrors.js.map +1 -0
  111. package/dist/admin/utils/getYupInnerErrors.mjs +21 -0
  112. package/dist/admin/utils/getYupInnerErrors.mjs.map +1 -0
  113. package/dist/admin/utils/prefixPluginTranslations.js +11 -0
  114. package/dist/admin/utils/prefixPluginTranslations.js.map +1 -0
  115. package/dist/admin/utils/prefixPluginTranslations.mjs +9 -0
  116. package/dist/admin/utils/prefixPluginTranslations.mjs.map +1 -0
  117. package/dist/admin/utils/schema.js +30 -0
  118. package/dist/admin/utils/schema.js.map +1 -0
  119. package/dist/admin/utils/schema.mjs +9 -0
  120. package/dist/admin/utils/schema.mjs.map +1 -0
  121. package/dist/server/bootstrap.js +40 -0
  122. package/dist/server/bootstrap.js.map +1 -0
  123. package/dist/server/bootstrap.mjs +38 -0
  124. package/dist/server/bootstrap.mjs.map +1 -0
  125. package/dist/server/config.js +15 -0
  126. package/dist/server/config.js.map +1 -0
  127. package/dist/server/config.mjs +13 -0
  128. package/dist/server/config.mjs.map +1 -0
  129. package/dist/server/controllers/email.js +66 -0
  130. package/dist/server/controllers/email.js.map +1 -0
  131. package/dist/server/controllers/email.mjs +64 -0
  132. package/dist/server/controllers/email.mjs.map +1 -0
  133. package/dist/server/controllers/index.js +10 -0
  134. package/dist/server/controllers/index.js.map +1 -0
  135. package/dist/server/controllers/index.mjs +8 -0
  136. package/dist/server/controllers/index.mjs.map +1 -0
  137. package/dist/server/index.js +12 -246
  138. package/dist/server/index.js.map +1 -1
  139. package/dist/server/index.mjs +8 -223
  140. package/dist/server/index.mjs.map +1 -1
  141. package/dist/server/middlewares/index.js +13 -0
  142. package/dist/server/middlewares/index.js.map +1 -0
  143. package/dist/server/middlewares/index.mjs +8 -0
  144. package/dist/server/middlewares/index.mjs.map +1 -0
  145. package/dist/server/middlewares/rateLimit.js +37 -0
  146. package/dist/server/middlewares/rateLimit.js.map +1 -0
  147. package/dist/server/middlewares/rateLimit.mjs +35 -0
  148. package/dist/server/middlewares/rateLimit.mjs.map +1 -0
  149. package/dist/server/routes/admin.js +56 -0
  150. package/dist/server/routes/admin.js.map +1 -0
  151. package/dist/server/routes/admin.mjs +54 -0
  152. package/dist/server/routes/admin.mjs.map +1 -0
  153. package/dist/server/routes/content-api.js +26 -0
  154. package/dist/server/routes/content-api.js.map +1 -0
  155. package/dist/server/routes/content-api.mjs +24 -0
  156. package/dist/server/routes/content-api.mjs.map +1 -0
  157. package/dist/server/routes/index.js +12 -0
  158. package/dist/server/routes/index.js.map +1 -0
  159. package/dist/server/routes/index.mjs +10 -0
  160. package/dist/server/routes/index.mjs.map +1 -0
  161. package/dist/server/routes/validation/email.js +46 -0
  162. package/dist/server/routes/validation/email.js.map +1 -0
  163. package/dist/server/routes/validation/email.mjs +25 -0
  164. package/dist/server/routes/validation/email.mjs.map +1 -0
  165. package/dist/server/services/email.js +63 -0
  166. package/dist/server/services/email.js.map +1 -0
  167. package/dist/server/services/email.mjs +42 -0
  168. package/dist/server/services/email.mjs.map +1 -0
  169. package/dist/server/services/index.js +10 -0
  170. package/dist/server/services/index.js.map +1 -0
  171. package/dist/server/services/index.mjs +8 -0
  172. package/dist/server/services/index.mjs.map +1 -0
  173. package/dist/server/src/index.d.ts +6 -8
  174. package/dist/server/src/index.d.ts.map +1 -1
  175. package/dist/server/src/middlewares/index.d.ts +9 -0
  176. package/dist/server/src/middlewares/index.d.ts.map +1 -0
  177. package/dist/server/src/middlewares/rateLimit.d.ts +7 -0
  178. package/dist/server/src/middlewares/rateLimit.d.ts.map +1 -0
  179. package/dist/server/src/routes/content-api.d.ts +2 -8
  180. package/dist/server/src/routes/content-api.d.ts.map +1 -1
  181. package/dist/server/src/routes/index.d.ts +1 -8
  182. package/dist/server/src/routes/index.d.ts.map +1 -1
  183. package/dist/server/src/routes/validation/email.d.ts +18 -0
  184. package/dist/server/src/routes/validation/email.d.ts.map +1 -0
  185. package/dist/server/src/routes/validation/index.d.ts +2 -0
  186. package/dist/server/src/routes/validation/index.d.ts.map +1 -0
  187. package/package.json +11 -9
  188. package/dist/admin/chunks/Settings-D8WJjMq7.js.map +0 -1
  189. package/dist/admin/chunks/Settings-DE939EJl.js.map +0 -1
  190. package/dist/admin/chunks/ar-BDHMRt_b.js +0 -6
  191. package/dist/admin/chunks/ar-BDHMRt_b.js.map +0 -1
  192. package/dist/admin/chunks/ar-JWJKrFM-.js.map +0 -1
  193. package/dist/admin/chunks/cs-BZCMeXgq.js.map +0 -1
  194. package/dist/admin/chunks/cs-DrOn3eR2.js +0 -6
  195. package/dist/admin/chunks/cs-DrOn3eR2.js.map +0 -1
  196. package/dist/admin/chunks/de-BlqtkWR3.js +0 -6
  197. package/dist/admin/chunks/de-BlqtkWR3.js.map +0 -1
  198. package/dist/admin/chunks/de-CGlAhulB.js.map +0 -1
  199. package/dist/admin/chunks/dk-B5IuEReS.js.map +0 -1
  200. package/dist/admin/chunks/dk-DW7WecjY.js.map +0 -1
  201. package/dist/admin/chunks/en-DacnIsXb.js.map +0 -1
  202. package/dist/admin/chunks/en-Dxg2wKLN.js.map +0 -1
  203. package/dist/admin/chunks/es-DxWi6BKM.js.map +0 -1
  204. package/dist/admin/chunks/es-fdc21M_E.js.map +0 -1
  205. package/dist/admin/chunks/fr-BsENAPSS.js +0 -6
  206. package/dist/admin/chunks/fr-BsENAPSS.js.map +0 -1
  207. package/dist/admin/chunks/fr-DZjvYp6C.js.map +0 -1
  208. package/dist/admin/chunks/id-BORUwKHm.js +0 -6
  209. package/dist/admin/chunks/id-BORUwKHm.js.map +0 -1
  210. package/dist/admin/chunks/id-C1eDxX9W.js.map +0 -1
  211. package/dist/admin/chunks/index-Ce7DMTUO.js +0 -105
  212. package/dist/admin/chunks/index-Ce7DMTUO.js.map +0 -1
  213. package/dist/admin/chunks/index-HXXlrjit.js +0 -108
  214. package/dist/admin/chunks/index-HXXlrjit.js.map +0 -1
  215. package/dist/admin/chunks/it-DVlJ2EhA.js.map +0 -1
  216. package/dist/admin/chunks/it-eAGyIQ1x.js +0 -6
  217. package/dist/admin/chunks/it-eAGyIQ1x.js.map +0 -1
  218. package/dist/admin/chunks/ja-CVosbw2M.js.map +0 -1
  219. package/dist/admin/chunks/ja-DdOPbVbe.js.map +0 -1
  220. package/dist/admin/chunks/ko-B8SR--vZ.js.map +0 -1
  221. package/dist/admin/chunks/ko-CaWqWfC8.js.map +0 -1
  222. package/dist/admin/chunks/ms-CrRuDILn.js +0 -6
  223. package/dist/admin/chunks/ms-CrRuDILn.js.map +0 -1
  224. package/dist/admin/chunks/ms-DLngEN2_.js.map +0 -1
  225. package/dist/admin/chunks/nl-B6Q0VF48.js.map +0 -1
  226. package/dist/admin/chunks/nl-BMsBb10t.js +0 -6
  227. package/dist/admin/chunks/nl-BMsBb10t.js.map +0 -1
  228. package/dist/admin/chunks/pl-Bve39qfV.js.map +0 -1
  229. package/dist/admin/chunks/pl-CO-R08qV.js.map +0 -1
  230. package/dist/admin/chunks/pt-BR-CBzJhkyg.js +0 -6
  231. package/dist/admin/chunks/pt-BR-CBzJhkyg.js.map +0 -1
  232. package/dist/admin/chunks/pt-BR-DPqDE4wA.js.map +0 -1
  233. package/dist/admin/chunks/pt-BzFac2P5.js.map +0 -1
  234. package/dist/admin/chunks/pt-DLqF-Sb4.js.map +0 -1
  235. package/dist/admin/chunks/ru-DnqOAZDX.js +0 -6
  236. package/dist/admin/chunks/ru-DnqOAZDX.js.map +0 -1
  237. package/dist/admin/chunks/ru-rmFYdvwh.js.map +0 -1
  238. package/dist/admin/chunks/sk-DDJmUHcx.js.map +0 -1
  239. package/dist/admin/chunks/sk-N47IGfwH.js +0 -6
  240. package/dist/admin/chunks/sk-N47IGfwH.js.map +0 -1
  241. package/dist/admin/chunks/th-BqTCSpUc.js.map +0 -1
  242. package/dist/admin/chunks/th-OW3_QVEZ.js +0 -6
  243. package/dist/admin/chunks/th-OW3_QVEZ.js.map +0 -1
  244. package/dist/admin/chunks/tr-BmrcZCoj.js.map +0 -1
  245. package/dist/admin/chunks/tr-n7J_y4Bh.js.map +0 -1
  246. package/dist/admin/chunks/uk-CQim5OiT.js +0 -4
  247. package/dist/admin/chunks/uk-CQim5OiT.js.map +0 -1
  248. package/dist/admin/chunks/uk-nM0yP_CK.js +0 -6
  249. package/dist/admin/chunks/uk-nM0yP_CK.js.map +0 -1
  250. package/dist/admin/chunks/vi-CO9gCtmD.js.map +0 -1
  251. package/dist/admin/chunks/vi-DjJBc-ms.js +0 -6
  252. package/dist/admin/chunks/vi-DjJBc-ms.js.map +0 -1
  253. package/dist/admin/chunks/zh-9wNbbqde.js.map +0 -1
  254. package/dist/admin/chunks/zh-CZQ4DV5L.js.map +0 -1
  255. package/dist/admin/chunks/zh-Hans-ChWc00HT.js.map +0 -1
  256. package/dist/admin/chunks/zh-Hans-D0bb9tfC.js.map +0 -1
@@ -0,0 +1,10 @@
1
+ import admin from './admin.mjs';
2
+ import contentApi from './content-api.mjs';
3
+
4
+ const routes = {
5
+ admin,
6
+ 'content-api': contentApi
7
+ };
8
+
9
+ export { routes };
10
+ //# sourceMappingURL=index.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.mjs","sources":["../../../server/src/routes/index.ts"],"sourcesContent":["import admin from './admin';\nimport contentApi from './content-api';\n\nexport const routes = {\n admin,\n 'content-api': contentApi,\n};\n"],"names":["routes","admin","contentApi"],"mappings":";;;MAGaA,MAAS,GAAA;AACpBC,IAAAA,KAAAA;IACA,aAAeC,EAAAA;AACjB;;;;"}
@@ -0,0 +1,46 @@
1
+ 'use strict';
2
+
3
+ var z = require('zod/v4');
4
+
5
+ function _interopNamespaceDefault(e) {
6
+ var n = Object.create(null);
7
+ if (e) {
8
+ Object.keys(e).forEach(function (k) {
9
+ if (k !== 'default') {
10
+ var d = Object.getOwnPropertyDescriptor(e, k);
11
+ Object.defineProperty(n, k, d.get ? d : {
12
+ enumerable: true,
13
+ get: function () { return e[k]; }
14
+ });
15
+ }
16
+ });
17
+ }
18
+ n.default = e;
19
+ return Object.freeze(n);
20
+ }
21
+
22
+ var z__namespace = /*#__PURE__*/_interopNamespaceDefault(z);
23
+
24
+ class EmailRouteValidator {
25
+ get sendEmailInput() {
26
+ return z__namespace.object({
27
+ from: z__namespace.string().optional(),
28
+ to: z__namespace.string(),
29
+ cc: z__namespace.string().optional(),
30
+ bcc: z__namespace.string().optional(),
31
+ replyTo: z__namespace.string().optional(),
32
+ subject: z__namespace.string(),
33
+ text: z__namespace.string(),
34
+ html: z__namespace.string().optional()
35
+ }).catchall(z__namespace.string());
36
+ }
37
+ get emailResponse() {
38
+ return z__namespace.object({});
39
+ }
40
+ constructor(strapi){
41
+ this._strapi = strapi;
42
+ }
43
+ }
44
+
45
+ exports.EmailRouteValidator = EmailRouteValidator;
46
+ //# sourceMappingURL=email.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"email.js","sources":["../../../../server/src/routes/validation/email.ts"],"sourcesContent":["import type { Core } from '@strapi/types';\nimport * as z from 'zod/v4';\n\nexport class EmailRouteValidator {\n protected readonly _strapi: Core.Strapi;\n\n public constructor(strapi: Core.Strapi) {\n this._strapi = strapi;\n }\n\n get sendEmailInput() {\n return z\n .object({\n from: z.string().optional(),\n to: z.string(),\n cc: z.string().optional(),\n bcc: z.string().optional(),\n replyTo: z.string().optional(),\n subject: z.string(),\n text: z.string(),\n html: z.string().optional(),\n })\n .catchall(z.string());\n }\n\n get emailResponse() {\n return z.object({});\n }\n}\n"],"names":["EmailRouteValidator","sendEmailInput","z","object","from","string","optional","to","cc","bcc","replyTo","subject","text","html","catchall","emailResponse","strapi","_strapi"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;AAGO,MAAMA,mBAAAA,CAAAA;AAOX,IAAA,IAAIC,cAAiB,GAAA;QACnB,OAAOC,YAAAA,CACJC,MAAM,CAAC;YACNC,IAAMF,EAAAA,YAAAA,CAAEG,MAAM,EAAA,CAAGC,QAAQ,EAAA;AACzBC,YAAAA,EAAAA,EAAIL,aAAEG,MAAM,EAAA;YACZG,EAAIN,EAAAA,YAAAA,CAAEG,MAAM,EAAA,CAAGC,QAAQ,EAAA;YACvBG,GAAKP,EAAAA,YAAAA,CAAEG,MAAM,EAAA,CAAGC,QAAQ,EAAA;YACxBI,OAASR,EAAAA,YAAAA,CAAEG,MAAM,EAAA,CAAGC,QAAQ,EAAA;AAC5BK,YAAAA,OAAAA,EAAST,aAAEG,MAAM,EAAA;AACjBO,YAAAA,IAAAA,EAAMV,aAAEG,MAAM,EAAA;YACdQ,IAAMX,EAAAA,YAAAA,CAAEG,MAAM,EAAA,CAAGC,QAAQ;SAE1BQ,CAAAA,CAAAA,QAAQ,CAACZ,YAAAA,CAAEG,MAAM,EAAA,CAAA;AACtB;AAEA,IAAA,IAAIU,aAAgB,GAAA;QAClB,OAAOb,YAAAA,CAAEC,MAAM,CAAC,EAAC,CAAA;AACnB;AArBA,IAAA,WAAA,CAAmBa,MAAmB,CAAE;QACtC,IAAI,CAACC,OAAO,GAAGD,MAAAA;AACjB;AAoBF;;;;"}
@@ -0,0 +1,25 @@
1
+ import * as z from 'zod/v4';
2
+
3
+ class EmailRouteValidator {
4
+ get sendEmailInput() {
5
+ return z.object({
6
+ from: z.string().optional(),
7
+ to: z.string(),
8
+ cc: z.string().optional(),
9
+ bcc: z.string().optional(),
10
+ replyTo: z.string().optional(),
11
+ subject: z.string(),
12
+ text: z.string(),
13
+ html: z.string().optional()
14
+ }).catchall(z.string());
15
+ }
16
+ get emailResponse() {
17
+ return z.object({});
18
+ }
19
+ constructor(strapi){
20
+ this._strapi = strapi;
21
+ }
22
+ }
23
+
24
+ export { EmailRouteValidator };
25
+ //# sourceMappingURL=email.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"email.mjs","sources":["../../../../server/src/routes/validation/email.ts"],"sourcesContent":["import type { Core } from '@strapi/types';\nimport * as z from 'zod/v4';\n\nexport class EmailRouteValidator {\n protected readonly _strapi: Core.Strapi;\n\n public constructor(strapi: Core.Strapi) {\n this._strapi = strapi;\n }\n\n get sendEmailInput() {\n return z\n .object({\n from: z.string().optional(),\n to: z.string(),\n cc: z.string().optional(),\n bcc: z.string().optional(),\n replyTo: z.string().optional(),\n subject: z.string(),\n text: z.string(),\n html: z.string().optional(),\n })\n .catchall(z.string());\n }\n\n get emailResponse() {\n return z.object({});\n }\n}\n"],"names":["EmailRouteValidator","sendEmailInput","z","object","from","string","optional","to","cc","bcc","replyTo","subject","text","html","catchall","emailResponse","strapi","_strapi"],"mappings":";;AAGO,MAAMA,mBAAAA,CAAAA;AAOX,IAAA,IAAIC,cAAiB,GAAA;QACnB,OAAOC,CAAAA,CACJC,MAAM,CAAC;YACNC,IAAMF,EAAAA,CAAAA,CAAEG,MAAM,EAAA,CAAGC,QAAQ,EAAA;AACzBC,YAAAA,EAAAA,EAAIL,EAAEG,MAAM,EAAA;YACZG,EAAIN,EAAAA,CAAAA,CAAEG,MAAM,EAAA,CAAGC,QAAQ,EAAA;YACvBG,GAAKP,EAAAA,CAAAA,CAAEG,MAAM,EAAA,CAAGC,QAAQ,EAAA;YACxBI,OAASR,EAAAA,CAAAA,CAAEG,MAAM,EAAA,CAAGC,QAAQ,EAAA;AAC5BK,YAAAA,OAAAA,EAAST,EAAEG,MAAM,EAAA;AACjBO,YAAAA,IAAAA,EAAMV,EAAEG,MAAM,EAAA;YACdQ,IAAMX,EAAAA,CAAAA,CAAEG,MAAM,EAAA,CAAGC,QAAQ;SAE1BQ,CAAAA,CAAAA,QAAQ,CAACZ,CAAAA,CAAEG,MAAM,EAAA,CAAA;AACtB;AAEA,IAAA,IAAIU,aAAgB,GAAA;QAClB,OAAOb,CAAAA,CAAEC,MAAM,CAAC,EAAC,CAAA;AACnB;AArBA,IAAA,WAAA,CAAmBa,MAAmB,CAAE;QACtC,IAAI,CAACC,OAAO,GAAGD,MAAAA;AACjB;AAoBF;;;;"}
@@ -0,0 +1,63 @@
1
+ 'use strict';
2
+
3
+ var _ = require('lodash');
4
+ var utils = require('@strapi/utils');
5
+
6
+ function _interopNamespaceDefault(e) {
7
+ var n = Object.create(null);
8
+ if (e) {
9
+ Object.keys(e).forEach(function (k) {
10
+ if (k !== 'default') {
11
+ var d = Object.getOwnPropertyDescriptor(e, k);
12
+ Object.defineProperty(n, k, d.get ? d : {
13
+ enumerable: true,
14
+ get: function () { return e[k]; }
15
+ });
16
+ }
17
+ });
18
+ }
19
+ n.default = e;
20
+ return Object.freeze(n);
21
+ }
22
+
23
+ var ___namespace = /*#__PURE__*/_interopNamespaceDefault(_);
24
+
25
+ const { createStrictInterpolationRegExp } = utils.template;
26
+ const getProviderSettings = ()=>strapi.config.get('plugin::email');
27
+ const send = async (options)=>strapi.plugin('email').provider.send(options);
28
+ /**
29
+ * fill subject, text and html using lodash template
30
+ * @param {object} emailOptions - to, from and replyto...
31
+ * @param {object} emailTemplate - object containing attributes to fill
32
+ * @param {object} data - data used to fill the template
33
+ * @returns {{ subject, text, subject }}
34
+ */ const sendTemplatedEmail = (emailOptions, emailTemplate, data)=>{
35
+ const attributes = [
36
+ 'subject',
37
+ 'text',
38
+ 'html'
39
+ ];
40
+ const missingAttributes = ___namespace.difference(attributes, Object.keys(emailTemplate));
41
+ if (missingAttributes.length > 0) {
42
+ throw new Error(`Following attributes are missing from your email template : ${missingAttributes.join(', ')}`);
43
+ }
44
+ const allowedInterpolationVariables = utils.objects.keysDeep(data);
45
+ const interpolate = createStrictInterpolationRegExp(allowedInterpolationVariables, 'g');
46
+ const templatedAttributes = attributes.reduce((compiled, attribute)=>emailTemplate[attribute] ? Object.assign(compiled, {
47
+ [attribute]: ___namespace.template(emailTemplate[attribute], {
48
+ interpolate
49
+ })(data)
50
+ }) : compiled, {});
51
+ return strapi.plugin('email').provider.send({
52
+ ...emailOptions,
53
+ ...templatedAttributes
54
+ });
55
+ };
56
+ const emailService = ()=>({
57
+ getProviderSettings,
58
+ send,
59
+ sendTemplatedEmail
60
+ });
61
+
62
+ module.exports = emailService;
63
+ //# sourceMappingURL=email.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"email.js","sources":["../../../server/src/services/email.ts"],"sourcesContent":["import * as _ from 'lodash';\nimport { objects, template } from '@strapi/utils';\n\nimport type {\n EmailConfig,\n EmailOptions,\n EmailTemplate,\n EmailTemplateData,\n SendOptions,\n} from '../types';\n\nconst { createStrictInterpolationRegExp } = template;\n\nconst getProviderSettings = (): EmailConfig => strapi.config.get('plugin::email');\n\nconst send = async (options: SendOptions) => strapi.plugin('email').provider.send(options);\n\n/**\n * fill subject, text and html using lodash template\n * @param {object} emailOptions - to, from and replyto...\n * @param {object} emailTemplate - object containing attributes to fill\n * @param {object} data - data used to fill the template\n * @returns {{ subject, text, subject }}\n */\nconst sendTemplatedEmail = (\n emailOptions: EmailOptions,\n emailTemplate: EmailTemplate,\n data: EmailTemplateData\n) => {\n const attributes = ['subject', 'text', 'html'];\n const missingAttributes = _.difference(attributes, Object.keys(emailTemplate));\n\n if (missingAttributes.length > 0) {\n throw new Error(\n `Following attributes are missing from your email template : ${missingAttributes.join(', ')}`\n );\n }\n\n const allowedInterpolationVariables = objects.keysDeep(data);\n const interpolate = createStrictInterpolationRegExp(allowedInterpolationVariables, 'g');\n\n const templatedAttributes = attributes.reduce(\n (compiled, attribute) =>\n emailTemplate[attribute]\n ? Object.assign(compiled, {\n [attribute]: _.template(emailTemplate[attribute], {\n interpolate,\n })(data),\n })\n : compiled,\n {}\n );\n\n return strapi.plugin('email').provider.send({ ...emailOptions, ...templatedAttributes });\n};\n\nconst emailService = () => ({\n getProviderSettings,\n send,\n sendTemplatedEmail,\n});\n\nexport default emailService;\n"],"names":["createStrictInterpolationRegExp","template","getProviderSettings","strapi","config","get","send","options","plugin","provider","sendTemplatedEmail","emailOptions","emailTemplate","data","attributes","missingAttributes","_","difference","Object","keys","length","Error","join","allowedInterpolationVariables","objects","keysDeep","interpolate","templatedAttributes","reduce","compiled","attribute","assign","emailService"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;AAWA,MAAM,EAAEA,+BAA+B,EAAE,GAAGC,cAAAA;AAE5C,MAAMC,sBAAsB,IAAmBC,MAAAA,CAAOC,MAAM,CAACC,GAAG,CAAC,eAAA,CAAA;AAEjE,MAAMC,IAAAA,GAAO,OAAOC,OAAAA,GAAyBJ,MAAOK,CAAAA,MAAM,CAAC,OAASC,CAAAA,CAAAA,QAAQ,CAACH,IAAI,CAACC,OAAAA,CAAAA;AAElF;;;;;;AAMC,IACD,MAAMG,kBAAAA,GAAqB,CACzBC,YAAAA,EACAC,aACAC,EAAAA,IAAAA,GAAAA;AAEA,IAAA,MAAMC,UAAa,GAAA;AAAC,QAAA,SAAA;AAAW,QAAA,MAAA;AAAQ,QAAA;AAAO,KAAA;AAC9C,IAAA,MAAMC,oBAAoBC,YAAEC,CAAAA,UAAU,CAACH,UAAYI,EAAAA,MAAAA,CAAOC,IAAI,CAACP,aAAAA,CAAAA,CAAAA;IAE/D,IAAIG,iBAAAA,CAAkBK,MAAM,GAAG,CAAG,EAAA;QAChC,MAAM,IAAIC,MACR,CAAC,4DAA4D,EAAEN,iBAAkBO,CAAAA,IAAI,CAAC,IAAA,CAAA,CAAM,CAAC,CAAA;AAEjG;IAEA,MAAMC,6BAAAA,GAAgCC,aAAQC,CAAAA,QAAQ,CAACZ,IAAAA,CAAAA;IACvD,MAAMa,WAAAA,GAAc1B,gCAAgCuB,6BAA+B,EAAA,GAAA,CAAA;AAEnF,IAAA,MAAMI,mBAAsBb,GAAAA,UAAAA,CAAWc,MAAM,CAC3C,CAACC,QAAUC,EAAAA,SAAAA,GACTlB,aAAa,CAACkB,SAAU,CAAA,GACpBZ,MAAOa,CAAAA,MAAM,CAACF,QAAU,EAAA;YACtB,CAACC,SAAAA,GAAYd,YAAEf,CAAAA,QAAQ,CAACW,aAAa,CAACkB,UAAU,EAAE;AAChDJ,gBAAAA;aACCb,CAAAA,CAAAA,IAAAA;AACL,SAAA,CAAA,GACAgB,UACN,EAAC,CAAA;AAGH,IAAA,OAAO1B,OAAOK,MAAM,CAAC,SAASC,QAAQ,CAACH,IAAI,CAAC;AAAE,QAAA,GAAGK,YAAY;AAAE,QAAA,GAAGgB;AAAoB,KAAA,CAAA;AACxF,CAAA;AAEMK,MAAAA,YAAAA,GAAe,KAAO;AAC1B9B,QAAAA,mBAAAA;AACAI,QAAAA,IAAAA;AACAI,QAAAA;KACF;;;;"}
@@ -0,0 +1,42 @@
1
+ import * as _ from 'lodash';
2
+ import { objects, template } from '@strapi/utils';
3
+
4
+ const { createStrictInterpolationRegExp } = template;
5
+ const getProviderSettings = ()=>strapi.config.get('plugin::email');
6
+ const send = async (options)=>strapi.plugin('email').provider.send(options);
7
+ /**
8
+ * fill subject, text and html using lodash template
9
+ * @param {object} emailOptions - to, from and replyto...
10
+ * @param {object} emailTemplate - object containing attributes to fill
11
+ * @param {object} data - data used to fill the template
12
+ * @returns {{ subject, text, subject }}
13
+ */ const sendTemplatedEmail = (emailOptions, emailTemplate, data)=>{
14
+ const attributes = [
15
+ 'subject',
16
+ 'text',
17
+ 'html'
18
+ ];
19
+ const missingAttributes = _.difference(attributes, Object.keys(emailTemplate));
20
+ if (missingAttributes.length > 0) {
21
+ throw new Error(`Following attributes are missing from your email template : ${missingAttributes.join(', ')}`);
22
+ }
23
+ const allowedInterpolationVariables = objects.keysDeep(data);
24
+ const interpolate = createStrictInterpolationRegExp(allowedInterpolationVariables, 'g');
25
+ const templatedAttributes = attributes.reduce((compiled, attribute)=>emailTemplate[attribute] ? Object.assign(compiled, {
26
+ [attribute]: _.template(emailTemplate[attribute], {
27
+ interpolate
28
+ })(data)
29
+ }) : compiled, {});
30
+ return strapi.plugin('email').provider.send({
31
+ ...emailOptions,
32
+ ...templatedAttributes
33
+ });
34
+ };
35
+ const emailService = ()=>({
36
+ getProviderSettings,
37
+ send,
38
+ sendTemplatedEmail
39
+ });
40
+
41
+ export { emailService as default };
42
+ //# sourceMappingURL=email.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"email.mjs","sources":["../../../server/src/services/email.ts"],"sourcesContent":["import * as _ from 'lodash';\nimport { objects, template } from '@strapi/utils';\n\nimport type {\n EmailConfig,\n EmailOptions,\n EmailTemplate,\n EmailTemplateData,\n SendOptions,\n} from '../types';\n\nconst { createStrictInterpolationRegExp } = template;\n\nconst getProviderSettings = (): EmailConfig => strapi.config.get('plugin::email');\n\nconst send = async (options: SendOptions) => strapi.plugin('email').provider.send(options);\n\n/**\n * fill subject, text and html using lodash template\n * @param {object} emailOptions - to, from and replyto...\n * @param {object} emailTemplate - object containing attributes to fill\n * @param {object} data - data used to fill the template\n * @returns {{ subject, text, subject }}\n */\nconst sendTemplatedEmail = (\n emailOptions: EmailOptions,\n emailTemplate: EmailTemplate,\n data: EmailTemplateData\n) => {\n const attributes = ['subject', 'text', 'html'];\n const missingAttributes = _.difference(attributes, Object.keys(emailTemplate));\n\n if (missingAttributes.length > 0) {\n throw new Error(\n `Following attributes are missing from your email template : ${missingAttributes.join(', ')}`\n );\n }\n\n const allowedInterpolationVariables = objects.keysDeep(data);\n const interpolate = createStrictInterpolationRegExp(allowedInterpolationVariables, 'g');\n\n const templatedAttributes = attributes.reduce(\n (compiled, attribute) =>\n emailTemplate[attribute]\n ? Object.assign(compiled, {\n [attribute]: _.template(emailTemplate[attribute], {\n interpolate,\n })(data),\n })\n : compiled,\n {}\n );\n\n return strapi.plugin('email').provider.send({ ...emailOptions, ...templatedAttributes });\n};\n\nconst emailService = () => ({\n getProviderSettings,\n send,\n sendTemplatedEmail,\n});\n\nexport default emailService;\n"],"names":["createStrictInterpolationRegExp","template","getProviderSettings","strapi","config","get","send","options","plugin","provider","sendTemplatedEmail","emailOptions","emailTemplate","data","attributes","missingAttributes","_","difference","Object","keys","length","Error","join","allowedInterpolationVariables","objects","keysDeep","interpolate","templatedAttributes","reduce","compiled","attribute","assign","emailService"],"mappings":";;;AAWA,MAAM,EAAEA,+BAA+B,EAAE,GAAGC,QAAAA;AAE5C,MAAMC,sBAAsB,IAAmBC,MAAAA,CAAOC,MAAM,CAACC,GAAG,CAAC,eAAA,CAAA;AAEjE,MAAMC,IAAAA,GAAO,OAAOC,OAAAA,GAAyBJ,MAAOK,CAAAA,MAAM,CAAC,OAASC,CAAAA,CAAAA,QAAQ,CAACH,IAAI,CAACC,OAAAA,CAAAA;AAElF;;;;;;AAMC,IACD,MAAMG,kBAAAA,GAAqB,CACzBC,YAAAA,EACAC,aACAC,EAAAA,IAAAA,GAAAA;AAEA,IAAA,MAAMC,UAAa,GAAA;AAAC,QAAA,SAAA;AAAW,QAAA,MAAA;AAAQ,QAAA;AAAO,KAAA;AAC9C,IAAA,MAAMC,oBAAoBC,CAAEC,CAAAA,UAAU,CAACH,UAAYI,EAAAA,MAAAA,CAAOC,IAAI,CAACP,aAAAA,CAAAA,CAAAA;IAE/D,IAAIG,iBAAAA,CAAkBK,MAAM,GAAG,CAAG,EAAA;QAChC,MAAM,IAAIC,MACR,CAAC,4DAA4D,EAAEN,iBAAkBO,CAAAA,IAAI,CAAC,IAAA,CAAA,CAAM,CAAC,CAAA;AAEjG;IAEA,MAAMC,6BAAAA,GAAgCC,OAAQC,CAAAA,QAAQ,CAACZ,IAAAA,CAAAA;IACvD,MAAMa,WAAAA,GAAc1B,gCAAgCuB,6BAA+B,EAAA,GAAA,CAAA;AAEnF,IAAA,MAAMI,mBAAsBb,GAAAA,UAAAA,CAAWc,MAAM,CAC3C,CAACC,QAAUC,EAAAA,SAAAA,GACTlB,aAAa,CAACkB,SAAU,CAAA,GACpBZ,MAAOa,CAAAA,MAAM,CAACF,QAAU,EAAA;YACtB,CAACC,SAAAA,GAAYd,CAAEf,CAAAA,QAAQ,CAACW,aAAa,CAACkB,UAAU,EAAE;AAChDJ,gBAAAA;aACCb,CAAAA,CAAAA,IAAAA;AACL,SAAA,CAAA,GACAgB,UACN,EAAC,CAAA;AAGH,IAAA,OAAO1B,OAAOK,MAAM,CAAC,SAASC,QAAQ,CAACH,IAAI,CAAC;AAAE,QAAA,GAAGK,YAAY;AAAE,QAAA,GAAGgB;AAAoB,KAAA,CAAA;AACxF,CAAA;AAEMK,MAAAA,YAAAA,GAAe,KAAO;AAC1B9B,QAAAA,mBAAAA;AACAI,QAAAA,IAAAA;AACAI,QAAAA;KACF;;;;"}
@@ -0,0 +1,10 @@
1
+ 'use strict';
2
+
3
+ var email = require('./email.js');
4
+
5
+ const services = {
6
+ email
7
+ };
8
+
9
+ exports.services = services;
10
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sources":["../../../server/src/services/index.ts"],"sourcesContent":["import email from './email';\n\nexport const services = { email };\n"],"names":["services","email"],"mappings":";;;;MAEaA,QAAW,GAAA;AAAEC,IAAAA;AAAM;;;;"}
@@ -0,0 +1,8 @@
1
+ import emailService from './email.mjs';
2
+
3
+ const services = {
4
+ email: emailService
5
+ };
6
+
7
+ export { services };
8
+ //# sourceMappingURL=index.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.mjs","sources":["../../../server/src/services/index.ts"],"sourcesContent":["import email from './email';\n\nexport const services = { email };\n"],"names":["services","email"],"mappings":";;MAEaA,QAAW,GAAA;AAAEC,WAAAA;AAAM;;;;"}
@@ -27,14 +27,7 @@ declare const _default: {
27
27
  };
28
28
  }[];
29
29
  };
30
- 'content-api': {
31
- type: string;
32
- routes: {
33
- method: string;
34
- path: string;
35
- handler: string;
36
- }[];
37
- };
30
+ 'content-api': () => import("@strapi/types/dist/core").RouterInput;
38
31
  };
39
32
  controllers: {
40
33
  email: {
@@ -44,6 +37,11 @@ declare const _default: {
44
37
  };
45
38
  };
46
39
  config: import("./types").StrapiConfig;
40
+ middlewares: {
41
+ rateLimit: (config: any, { strapi }: {
42
+ strapi: import("@strapi/types/dist/core").Strapi;
43
+ }) => (ctx: import("koa").Context, next: import("koa").Next) => Promise<any>;
44
+ };
47
45
  };
48
46
  export default _default;
49
47
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../server/src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAMA,wBAME"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../server/src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAOA,wBAOE"}
@@ -0,0 +1,9 @@
1
+ /// <reference types="koa" />
2
+ export { default as rateLimit } from './rateLimit';
3
+ declare const _default: {
4
+ rateLimit: (config: any, { strapi }: {
5
+ strapi: import("@strapi/types/dist/core").Strapi;
6
+ }) => (ctx: import("koa").Context, next: import("koa").Next) => Promise<any>;
7
+ };
8
+ export default _default;
9
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../server/src/middlewares/index.ts"],"names":[],"mappings":";AAEA,OAAO,EAAE,OAAO,IAAI,SAAS,EAAE,MAAM,aAAa,CAAC;;;;;;AAEnD,wBAEE"}
@@ -0,0 +1,7 @@
1
+ import type { Context, Next } from 'koa';
2
+ import type { Core } from '@strapi/types';
3
+ declare const _default: (config: any, { strapi }: {
4
+ strapi: Core.Strapi;
5
+ }) => (ctx: Context, next: Next) => Promise<any>;
6
+ export default _default;
7
+ //# sourceMappingURL=rateLimit.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"rateLimit.d.ts","sourceRoot":"","sources":["../../../../server/src/middlewares/rateLimit.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,KAAK,CAAC;AAGzC,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,eAAe,CAAC;iCAIlB,GAAG,cAAc;IAAE,MAAM,EAAE,KAAK,MAAM,CAAA;CAAE,WAClD,OAAO,QAAQ,IAAI;AADjC,wBA+BI"}
@@ -1,10 +1,4 @@
1
- declare const _default: {
2
- type: string;
3
- routes: {
4
- method: string;
5
- path: string;
6
- handler: string;
7
- }[];
8
- };
1
+ import type { Core } from '@strapi/types';
2
+ declare const _default: () => Core.RouterInput;
9
3
  export default _default;
10
4
  //# sourceMappingURL=content-api.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"content-api.d.ts","sourceRoot":"","sources":["../../../../server/src/routes/content-api.ts"],"names":[],"mappings":";;;;;;;;AAAA,wBASE"}
1
+ {"version":3,"file":"content-api.d.ts","sourceRoot":"","sources":["../../../../server/src/routes/content-api.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,eAAe,CAAC;8BAGvB,KAAK,WAAW;AAAnC,wBAiBE"}
@@ -15,13 +15,6 @@ export declare const routes: {
15
15
  };
16
16
  }[];
17
17
  };
18
- 'content-api': {
19
- type: string;
20
- routes: {
21
- method: string;
22
- path: string;
23
- handler: string;
24
- }[];
25
- };
18
+ 'content-api': () => import("@strapi/types/dist/core").RouterInput;
26
19
  };
27
20
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../server/src/routes/index.ts"],"names":[],"mappings":"AAGA,eAAO,MAAM,MAAM;;;;;;;;;;;;;;;;;;;;;;;;;CAGlB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../server/src/routes/index.ts"],"names":[],"mappings":"AAGA,eAAO,MAAM,MAAM;;;;;;;;;;;;;;;;;;CAGlB,CAAC"}
@@ -0,0 +1,18 @@
1
+ import type { Core } from '@strapi/types';
2
+ import * as z from 'zod/v4';
3
+ export declare class EmailRouteValidator {
4
+ protected readonly _strapi: Core.Strapi;
5
+ constructor(strapi: Core.Strapi);
6
+ get sendEmailInput(): z.ZodObject<{
7
+ from: z.ZodOptional<z.ZodString>;
8
+ to: z.ZodString;
9
+ cc: z.ZodOptional<z.ZodString>;
10
+ bcc: z.ZodOptional<z.ZodString>;
11
+ replyTo: z.ZodOptional<z.ZodString>;
12
+ subject: z.ZodString;
13
+ text: z.ZodString;
14
+ html: z.ZodOptional<z.ZodString>;
15
+ }, z.core.$catchall<z.ZodString>>;
16
+ get emailResponse(): z.ZodObject<{}, z.core.$strip>;
17
+ }
18
+ //# sourceMappingURL=email.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"email.d.ts","sourceRoot":"","sources":["../../../../../server/src/routes/validation/email.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,eAAe,CAAC;AAC1C,OAAO,KAAK,CAAC,MAAM,QAAQ,CAAC;AAE5B,qBAAa,mBAAmB;IAC9B,SAAS,CAAC,QAAQ,CAAC,OAAO,EAAE,IAAI,CAAC,MAAM,CAAC;gBAErB,MAAM,EAAE,IAAI,CAAC,MAAM;IAItC,IAAI,cAAc;;;;;;;;;sCAajB;IAED,IAAI,aAAa,mCAEhB;CACF"}
@@ -0,0 +1,2 @@
1
+ export { EmailRouteValidator } from './email';
2
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../server/src/routes/validation/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAE,MAAM,SAAS,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@strapi/email",
3
- "version": "0.0.0-next.fc9d26d995624dc886b29f563e1de655d47e6609",
3
+ "version": "0.0.0-next.ffc36acb308febe288f1a31b62cbbb75b286585c",
4
4
  "description": "Easily configure your Strapi application to send emails.",
5
5
  "repository": {
6
6
  "type": "git",
@@ -56,22 +56,24 @@
56
56
  "watch": "run -T rollup -c -w"
57
57
  },
58
58
  "dependencies": {
59
- "@strapi/design-system": "2.0.0-rc.14",
60
- "@strapi/icons": "2.0.0-rc.14",
61
- "@strapi/provider-email-sendmail": "0.0.0-next.fc9d26d995624dc886b29f563e1de655d47e6609",
62
- "@strapi/utils": "0.0.0-next.fc9d26d995624dc886b29f563e1de655d47e6609",
59
+ "@strapi/design-system": "2.0.0-rc.29",
60
+ "@strapi/icons": "2.0.0-rc.29",
61
+ "@strapi/provider-email-sendmail": "0.0.0-next.ffc36acb308febe288f1a31b62cbbb75b286585c",
62
+ "@strapi/utils": "0.0.0-next.ffc36acb308febe288f1a31b62cbbb75b286585c",
63
+ "koa2-ratelimit": "^1.1.3",
63
64
  "lodash": "4.17.21",
64
65
  "react-intl": "6.6.2",
65
66
  "react-query": "3.39.3",
66
- "yup": "0.32.9"
67
+ "yup": "0.32.9",
68
+ "zod": "3.25.67"
67
69
  },
68
70
  "devDependencies": {
69
- "@strapi/admin": "0.0.0-next.fc9d26d995624dc886b29f563e1de655d47e6609",
70
- "@strapi/types": "0.0.0-next.fc9d26d995624dc886b29f563e1de655d47e6609",
71
+ "@strapi/admin": "0.0.0-next.ffc36acb308febe288f1a31b62cbbb75b286585c",
72
+ "@strapi/types": "0.0.0-next.ffc36acb308febe288f1a31b62cbbb75b286585c",
71
73
  "@testing-library/react": "15.0.7",
72
74
  "@types/koa": "2.13.4",
73
75
  "@types/lodash": "^4.14.191",
74
- "koa": "2.15.2",
76
+ "koa": "2.16.1",
75
77
  "koa-body": "6.0.1",
76
78
  "msw": "1.3.0",
77
79
  "react": "18.3.1",
@@ -1 +0,0 @@
1
- {"version":3,"file":"Settings-D8WJjMq7.js","sources":["../../../admin/src/utils/getYupInnerErrors.ts","../../../admin/src/utils/schema.ts","../../../admin/src/pages/Settings.tsx"],"sourcesContent":["import type { MessageDescriptor, PrimitiveType } from 'react-intl';\nimport type { ValidationError } from 'yup';\n\ninterface TranslationMessage extends MessageDescriptor {\n values?: Record<string, PrimitiveType>;\n}\n\nconst extractValuesFromYupError = (\n errorType?: string | undefined,\n errorParams?: Record<string, any> | undefined\n) => {\n if (!errorType || !errorParams) {\n return {};\n }\n\n return {\n [errorType]: errorParams[errorType],\n };\n};\n\nconst getYupInnerErrors = (error: ValidationError) =>\n (error?.inner || []).reduce<Record<string, TranslationMessage>>((acc, currentError) => {\n if (currentError.path) {\n acc[currentError.path.split('[').join('.').split(']').join('')] = {\n id: currentError.message,\n defaultMessage: currentError.message,\n values: extractValuesFromYupError(currentError?.type, currentError?.params),\n };\n }\n\n return acc;\n }, {});\n\nexport { getYupInnerErrors };\n","import { translatedErrors } from '@strapi/admin/strapi-admin';\nimport * as yup from 'yup';\n\nexport const schema = yup.object().shape({\n email: yup.string().email(translatedErrors.email.id).required(translatedErrors.required.id),\n});\n","import * as React from 'react';\n\nimport { Page, useNotification, useFetchClient, Layouts } from '@strapi/admin/strapi-admin';\nimport {\n Box,\n Button,\n Flex,\n Grid,\n SingleSelectOption,\n SingleSelect,\n TextInput,\n Typography,\n Field,\n} from '@strapi/design-system';\nimport { Mail } from '@strapi/icons';\nimport { useIntl } from 'react-intl';\nimport { useQuery, useMutation } from 'react-query';\nimport { styled } from 'styled-components';\nimport { ValidationError } from 'yup';\n\nimport { PERMISSIONS } from '../constants';\nimport { getYupInnerErrors } from '../utils/getYupInnerErrors';\nimport { schema } from '../utils/schema';\n\nimport type { EmailSettings } from '../../../shared/types';\n\nconst DocumentationLink = styled.a`\n color: ${({ theme }) => theme.colors.primary600};\n`;\n\ninterface MutationBody {\n to: string;\n}\n\nexport const ProtectedSettingsPage = () => (\n <Page.Protect permissions={PERMISSIONS.settings}>\n <SettingsPage />\n </Page.Protect>\n);\n\nconst SettingsPage = () => {\n const { toggleNotification } = useNotification();\n const { formatMessage } = useIntl();\n const { get, post } = useFetchClient();\n\n const [testAddress, setTestAddress] = React.useState('');\n const [isTestAddressValid, setIsTestAddressValid] = React.useState(false);\n\n // TODO: I'm not sure how to type this. I think it should be Record<string, TranslationMessage> but that type is defined in the helper-plugin\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const [formErrors, setFormErrors] = React.useState<Record<string, any>>({});\n\n const { data, isLoading } = useQuery(['email', 'settings'], async () => {\n const res = await get<EmailSettings>('/email/settings');\n const {\n data: { config },\n } = res;\n\n return config;\n });\n\n const mutation = useMutation<void, Error, MutationBody>(\n async (body) => {\n await post('/email/test', body);\n },\n {\n onError() {\n toggleNotification!({\n type: 'danger',\n message: formatMessage(\n {\n id: 'email.Settings.email.plugin.notification.test.error',\n defaultMessage: 'Failed to send a test mail to {to}',\n },\n { to: testAddress }\n ),\n });\n },\n onSuccess() {\n toggleNotification!({\n type: 'success',\n message: formatMessage(\n {\n id: 'email.Settings.email.plugin.notification.test.success',\n defaultMessage: 'Email test succeeded, check the {to} mailbox',\n },\n { to: testAddress }\n ),\n });\n },\n retry: false,\n }\n );\n\n React.useEffect(() => {\n schema\n .validate({ email: testAddress }, { abortEarly: false })\n .then(() => setIsTestAddressValid(true))\n .catch(() => setIsTestAddressValid(false));\n }, [testAddress]);\n\n const handleChange = (event: React.ChangeEvent<HTMLInputElement>) => {\n setTestAddress(() => event.target.value);\n };\n\n const handleSubmit = async (event: React.FormEvent<HTMLFormElement>) => {\n event.preventDefault();\n\n try {\n await schema.validate({ email: testAddress }, { abortEarly: false });\n } catch (error) {\n if (error instanceof ValidationError) {\n setFormErrors(getYupInnerErrors(error));\n }\n }\n\n mutation.mutate({ to: testAddress });\n };\n\n if (isLoading) {\n return <Page.Loading />;\n }\n\n return (\n <Page.Main labelledBy=\"title\" aria-busy={isLoading || mutation.isLoading}>\n <Page.Title>\n {formatMessage(\n { id: 'Settings.PageTitle', defaultMessage: 'Settings - {name}' },\n {\n name: formatMessage({\n id: 'email.Settings.email.plugin.title',\n defaultMessage: 'Configuration',\n }),\n }\n )}\n </Page.Title>\n <Layouts.Header\n id=\"title\"\n title={formatMessage({\n id: 'email.Settings.email.plugin.title',\n defaultMessage: 'Configuration',\n })}\n subtitle={formatMessage({\n id: 'email.Settings.email.plugin.subTitle',\n defaultMessage: 'Test the settings for the Email plugin',\n })}\n />\n\n <Layouts.Content>\n {data && (\n <form onSubmit={handleSubmit}>\n <Flex direction=\"column\" alignItems=\"stretch\" gap={7}>\n <Box\n background=\"neutral0\"\n hasRadius\n shadow=\"filterShadow\"\n paddingTop={6}\n paddingBottom={6}\n paddingLeft={7}\n paddingRight={7}\n >\n <Flex direction=\"column\" alignItems=\"stretch\" gap={4}>\n <Flex direction=\"column\" alignItems=\"stretch\" gap={1}>\n <Typography variant=\"delta\" tag=\"h2\">\n {formatMessage({\n id: 'email.Settings.email.plugin.title.config',\n defaultMessage: 'Configuration',\n })}\n </Typography>\n <Typography>\n {formatMessage(\n {\n id: 'email.Settings.email.plugin.text.configuration',\n defaultMessage:\n 'The plugin is configured through the {file} file, checkout this {link} for the documentation.',\n },\n {\n file: './config/plugins.js',\n link: (\n <DocumentationLink\n href=\"https://docs.strapi.io/developer-docs/latest/plugins/email.html\"\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n >\n {formatMessage({\n id: 'email.link',\n defaultMessage: 'Link',\n })}\n </DocumentationLink>\n ),\n }\n )}\n </Typography>\n </Flex>\n\n <Grid.Root gap={5}>\n <Grid.Item col={6} s={12} direction=\"column\" alignItems=\"stretch\">\n <Field.Root name=\"shipper-email\">\n <Field.Label>\n {formatMessage({\n id: 'email.Settings.email.plugin.label.defaultFrom',\n defaultMessage: 'Default sender email',\n })}\n </Field.Label>\n <TextInput\n placeholder={formatMessage({\n id: 'email.Settings.email.plugin.placeholder.defaultFrom',\n defaultMessage: \"ex: Strapi No-Reply '<'no-reply@strapi.io'>'\",\n })}\n disabled\n value={data.settings.defaultFrom}\n />\n </Field.Root>\n </Grid.Item>\n\n <Grid.Item col={6} s={12} direction=\"column\" alignItems=\"stretch\">\n <Field.Root name=\"response-email\">\n <Field.Label>\n {formatMessage({\n id: 'email.Settings.email.plugin.label.defaultReplyTo',\n defaultMessage: 'Default response email',\n })}\n </Field.Label>\n <TextInput\n placeholder={formatMessage({\n id: 'email.Settings.email.plugin.placeholder.defaultReplyTo',\n defaultMessage: `ex: Strapi '<'example@strapi.io'>'`,\n })}\n disabled\n value={data.settings.defaultReplyTo}\n />\n </Field.Root>\n </Grid.Item>\n\n <Grid.Item col={6} s={12} direction=\"column\" alignItems=\"stretch\">\n <Field.Root name=\"email-provider\">\n <Field.Label>\n {formatMessage({\n id: 'email.Settings.email.plugin.label.provider',\n defaultMessage: 'Email provider',\n })}\n </Field.Label>\n <SingleSelect disabled value={data.provider}>\n <SingleSelectOption value={data.provider}>\n {data.provider}\n </SingleSelectOption>\n </SingleSelect>\n </Field.Root>\n </Grid.Item>\n </Grid.Root>\n </Flex>\n </Box>\n\n <Flex\n alignItems=\"stretch\"\n background=\"neutral0\"\n direction=\"column\"\n gap={4}\n hasRadius\n shadow=\"filterShadow\"\n paddingTop={6}\n paddingBottom={6}\n paddingLeft={7}\n paddingRight={7}\n >\n <Typography variant=\"delta\" tag=\"h2\">\n {formatMessage({\n id: 'email.Settings.email.plugin.title.test',\n defaultMessage: 'Test email delivery',\n })}\n </Typography>\n\n <Grid.Root gap={5}>\n <Grid.Item col={6} s={12} direction=\"column\" alignItems=\"stretch\">\n <Field.Root\n name=\"test-address\"\n error={\n formErrors.email?.id &&\n formatMessage({\n id: `email.${formErrors.email?.id}`,\n defaultMessage: 'This is not a valid email',\n })\n }\n >\n <Field.Label>\n {formatMessage({\n id: 'email.Settings.email.plugin.label.testAddress',\n defaultMessage: 'Recipient email',\n })}\n </Field.Label>\n <TextInput\n onChange={handleChange}\n value={testAddress}\n placeholder={formatMessage({\n id: 'email.Settings.email.plugin.placeholder.testAddress',\n defaultMessage: 'ex: developer@example.com',\n })}\n />\n </Field.Root>\n </Grid.Item>\n <Grid.Item col={7} s={12} direction=\"column\" alignItems=\"start\">\n <Button\n loading={mutation.isLoading}\n disabled={!isTestAddressValid}\n type=\"submit\"\n startIcon={<Mail />}\n >\n {formatMessage({\n id: 'email.Settings.email.plugin.button.test-email',\n defaultMessage: 'Send test email',\n })}\n </Button>\n </Grid.Item>\n </Grid.Root>\n </Flex>\n </Flex>\n </form>\n )}\n </Layouts.Content>\n </Page.Main>\n );\n};\n"],"names":["extractValuesFromYupError","errorType","errorParams","getYupInnerErrors","error","inner","reduce","acc","currentError","path","split","join","id","message","defaultMessage","values","type","params","schema","yup","object","shape","email","string","translatedErrors","required","DocumentationLink","styled","a","theme","colors","primary600","ProtectedSettingsPage","_jsx","Page","Protect","permissions","PERMISSIONS","settings","SettingsPage","toggleNotification","useNotification","formatMessage","useIntl","get","post","useFetchClient","testAddress","setTestAddress","React","useState","isTestAddressValid","setIsTestAddressValid","formErrors","setFormErrors","data","isLoading","useQuery","res","config","mutation","useMutation","body","onError","to","onSuccess","retry","useEffect","validate","abortEarly","then","catch","handleChange","event","target","value","handleSubmit","preventDefault","ValidationError","mutate","Loading","_jsxs","Main","labelledBy","aria-busy","Title","name","Layouts","Header","title","subtitle","Content","form","onSubmit","Flex","direction","alignItems","gap","Box","background","hasRadius","shadow","paddingTop","paddingBottom","paddingLeft","paddingRight","Typography","variant","tag","file","link","href","rel","Grid","Root","Item","col","s","Field","Label","TextInput","placeholder","disabled","defaultFrom","defaultReplyTo","SingleSelect","provider","SingleSelectOption","onChange","Button","loading","startIcon","Mail"],"mappings":"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"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"Settings-DE939EJl.js","sources":["../../../admin/src/utils/getYupInnerErrors.ts","../../../admin/src/utils/schema.ts","../../../admin/src/pages/Settings.tsx"],"sourcesContent":["import type { MessageDescriptor, PrimitiveType } from 'react-intl';\nimport type { ValidationError } from 'yup';\n\ninterface TranslationMessage extends MessageDescriptor {\n values?: Record<string, PrimitiveType>;\n}\n\nconst extractValuesFromYupError = (\n errorType?: string | undefined,\n errorParams?: Record<string, any> | undefined\n) => {\n if (!errorType || !errorParams) {\n return {};\n }\n\n return {\n [errorType]: errorParams[errorType],\n };\n};\n\nconst getYupInnerErrors = (error: ValidationError) =>\n (error?.inner || []).reduce<Record<string, TranslationMessage>>((acc, currentError) => {\n if (currentError.path) {\n acc[currentError.path.split('[').join('.').split(']').join('')] = {\n id: currentError.message,\n defaultMessage: currentError.message,\n values: extractValuesFromYupError(currentError?.type, currentError?.params),\n };\n }\n\n return acc;\n }, {});\n\nexport { getYupInnerErrors };\n","import { translatedErrors } from '@strapi/admin/strapi-admin';\nimport * as yup from 'yup';\n\nexport const schema = yup.object().shape({\n email: yup.string().email(translatedErrors.email.id).required(translatedErrors.required.id),\n});\n","import * as React from 'react';\n\nimport { Page, useNotification, useFetchClient, Layouts } from '@strapi/admin/strapi-admin';\nimport {\n Box,\n Button,\n Flex,\n Grid,\n SingleSelectOption,\n SingleSelect,\n TextInput,\n Typography,\n Field,\n} from '@strapi/design-system';\nimport { Mail } from '@strapi/icons';\nimport { useIntl } from 'react-intl';\nimport { useQuery, useMutation } from 'react-query';\nimport { styled } from 'styled-components';\nimport { ValidationError } from 'yup';\n\nimport { PERMISSIONS } from '../constants';\nimport { getYupInnerErrors } from '../utils/getYupInnerErrors';\nimport { schema } from '../utils/schema';\n\nimport type { EmailSettings } from '../../../shared/types';\n\nconst DocumentationLink = styled.a`\n color: ${({ theme }) => theme.colors.primary600};\n`;\n\ninterface MutationBody {\n to: string;\n}\n\nexport const ProtectedSettingsPage = () => (\n <Page.Protect permissions={PERMISSIONS.settings}>\n <SettingsPage />\n </Page.Protect>\n);\n\nconst SettingsPage = () => {\n const { toggleNotification } = useNotification();\n const { formatMessage } = useIntl();\n const { get, post } = useFetchClient();\n\n const [testAddress, setTestAddress] = React.useState('');\n const [isTestAddressValid, setIsTestAddressValid] = React.useState(false);\n\n // TODO: I'm not sure how to type this. I think it should be Record<string, TranslationMessage> but that type is defined in the helper-plugin\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const [formErrors, setFormErrors] = React.useState<Record<string, any>>({});\n\n const { data, isLoading } = useQuery(['email', 'settings'], async () => {\n const res = await get<EmailSettings>('/email/settings');\n const {\n data: { config },\n } = res;\n\n return config;\n });\n\n const mutation = useMutation<void, Error, MutationBody>(\n async (body) => {\n await post('/email/test', body);\n },\n {\n onError() {\n toggleNotification!({\n type: 'danger',\n message: formatMessage(\n {\n id: 'email.Settings.email.plugin.notification.test.error',\n defaultMessage: 'Failed to send a test mail to {to}',\n },\n { to: testAddress }\n ),\n });\n },\n onSuccess() {\n toggleNotification!({\n type: 'success',\n message: formatMessage(\n {\n id: 'email.Settings.email.plugin.notification.test.success',\n defaultMessage: 'Email test succeeded, check the {to} mailbox',\n },\n { to: testAddress }\n ),\n });\n },\n retry: false,\n }\n );\n\n React.useEffect(() => {\n schema\n .validate({ email: testAddress }, { abortEarly: false })\n .then(() => setIsTestAddressValid(true))\n .catch(() => setIsTestAddressValid(false));\n }, [testAddress]);\n\n const handleChange = (event: React.ChangeEvent<HTMLInputElement>) => {\n setTestAddress(() => event.target.value);\n };\n\n const handleSubmit = async (event: React.FormEvent<HTMLFormElement>) => {\n event.preventDefault();\n\n try {\n await schema.validate({ email: testAddress }, { abortEarly: false });\n } catch (error) {\n if (error instanceof ValidationError) {\n setFormErrors(getYupInnerErrors(error));\n }\n }\n\n mutation.mutate({ to: testAddress });\n };\n\n if (isLoading) {\n return <Page.Loading />;\n }\n\n return (\n <Page.Main labelledBy=\"title\" aria-busy={isLoading || mutation.isLoading}>\n <Page.Title>\n {formatMessage(\n { id: 'Settings.PageTitle', defaultMessage: 'Settings - {name}' },\n {\n name: formatMessage({\n id: 'email.Settings.email.plugin.title',\n defaultMessage: 'Configuration',\n }),\n }\n )}\n </Page.Title>\n <Layouts.Header\n id=\"title\"\n title={formatMessage({\n id: 'email.Settings.email.plugin.title',\n defaultMessage: 'Configuration',\n })}\n subtitle={formatMessage({\n id: 'email.Settings.email.plugin.subTitle',\n defaultMessage: 'Test the settings for the Email plugin',\n })}\n />\n\n <Layouts.Content>\n {data && (\n <form onSubmit={handleSubmit}>\n <Flex direction=\"column\" alignItems=\"stretch\" gap={7}>\n <Box\n background=\"neutral0\"\n hasRadius\n shadow=\"filterShadow\"\n paddingTop={6}\n paddingBottom={6}\n paddingLeft={7}\n paddingRight={7}\n >\n <Flex direction=\"column\" alignItems=\"stretch\" gap={4}>\n <Flex direction=\"column\" alignItems=\"stretch\" gap={1}>\n <Typography variant=\"delta\" tag=\"h2\">\n {formatMessage({\n id: 'email.Settings.email.plugin.title.config',\n defaultMessage: 'Configuration',\n })}\n </Typography>\n <Typography>\n {formatMessage(\n {\n id: 'email.Settings.email.plugin.text.configuration',\n defaultMessage:\n 'The plugin is configured through the {file} file, checkout this {link} for the documentation.',\n },\n {\n file: './config/plugins.js',\n link: (\n <DocumentationLink\n href=\"https://docs.strapi.io/developer-docs/latest/plugins/email.html\"\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n >\n {formatMessage({\n id: 'email.link',\n defaultMessage: 'Link',\n })}\n </DocumentationLink>\n ),\n }\n )}\n </Typography>\n </Flex>\n\n <Grid.Root gap={5}>\n <Grid.Item col={6} s={12} direction=\"column\" alignItems=\"stretch\">\n <Field.Root name=\"shipper-email\">\n <Field.Label>\n {formatMessage({\n id: 'email.Settings.email.plugin.label.defaultFrom',\n defaultMessage: 'Default sender email',\n })}\n </Field.Label>\n <TextInput\n placeholder={formatMessage({\n id: 'email.Settings.email.plugin.placeholder.defaultFrom',\n defaultMessage: \"ex: Strapi No-Reply '<'no-reply@strapi.io'>'\",\n })}\n disabled\n value={data.settings.defaultFrom}\n />\n </Field.Root>\n </Grid.Item>\n\n <Grid.Item col={6} s={12} direction=\"column\" alignItems=\"stretch\">\n <Field.Root name=\"response-email\">\n <Field.Label>\n {formatMessage({\n id: 'email.Settings.email.plugin.label.defaultReplyTo',\n defaultMessage: 'Default response email',\n })}\n </Field.Label>\n <TextInput\n placeholder={formatMessage({\n id: 'email.Settings.email.plugin.placeholder.defaultReplyTo',\n defaultMessage: `ex: Strapi '<'example@strapi.io'>'`,\n })}\n disabled\n value={data.settings.defaultReplyTo}\n />\n </Field.Root>\n </Grid.Item>\n\n <Grid.Item col={6} s={12} direction=\"column\" alignItems=\"stretch\">\n <Field.Root name=\"email-provider\">\n <Field.Label>\n {formatMessage({\n id: 'email.Settings.email.plugin.label.provider',\n defaultMessage: 'Email provider',\n })}\n </Field.Label>\n <SingleSelect disabled value={data.provider}>\n <SingleSelectOption value={data.provider}>\n {data.provider}\n </SingleSelectOption>\n </SingleSelect>\n </Field.Root>\n </Grid.Item>\n </Grid.Root>\n </Flex>\n </Box>\n\n <Flex\n alignItems=\"stretch\"\n background=\"neutral0\"\n direction=\"column\"\n gap={4}\n hasRadius\n shadow=\"filterShadow\"\n paddingTop={6}\n paddingBottom={6}\n paddingLeft={7}\n paddingRight={7}\n >\n <Typography variant=\"delta\" tag=\"h2\">\n {formatMessage({\n id: 'email.Settings.email.plugin.title.test',\n defaultMessage: 'Test email delivery',\n })}\n </Typography>\n\n <Grid.Root gap={5}>\n <Grid.Item col={6} s={12} direction=\"column\" alignItems=\"stretch\">\n <Field.Root\n name=\"test-address\"\n error={\n formErrors.email?.id &&\n formatMessage({\n id: `email.${formErrors.email?.id}`,\n defaultMessage: 'This is not a valid email',\n })\n }\n >\n <Field.Label>\n {formatMessage({\n id: 'email.Settings.email.plugin.label.testAddress',\n defaultMessage: 'Recipient email',\n })}\n </Field.Label>\n <TextInput\n onChange={handleChange}\n value={testAddress}\n placeholder={formatMessage({\n id: 'email.Settings.email.plugin.placeholder.testAddress',\n defaultMessage: 'ex: developer@example.com',\n })}\n />\n </Field.Root>\n </Grid.Item>\n <Grid.Item col={7} s={12} direction=\"column\" alignItems=\"start\">\n <Button\n loading={mutation.isLoading}\n disabled={!isTestAddressValid}\n type=\"submit\"\n startIcon={<Mail />}\n >\n {formatMessage({\n id: 'email.Settings.email.plugin.button.test-email',\n defaultMessage: 'Send test email',\n })}\n </Button>\n </Grid.Item>\n </Grid.Root>\n </Flex>\n </Flex>\n </form>\n )}\n </Layouts.Content>\n </Page.Main>\n );\n};\n"],"names":["extractValuesFromYupError","errorType","errorParams","getYupInnerErrors","error","inner","reduce","acc","currentError","path","split","join","id","message","defaultMessage","values","type","params","schema","yup","object","shape","email","string","translatedErrors","required","DocumentationLink","styled","a","theme","colors","primary600","ProtectedSettingsPage","_jsx","Page","Protect","permissions","PERMISSIONS","settings","SettingsPage","toggleNotification","useNotification","formatMessage","useIntl","get","post","useFetchClient","testAddress","setTestAddress","React","useState","isTestAddressValid","setIsTestAddressValid","formErrors","setFormErrors","data","isLoading","useQuery","res","config","mutation","useMutation","body","onError","to","onSuccess","retry","useEffect","validate","abortEarly","then","catch","handleChange","event","target","value","handleSubmit","preventDefault","ValidationError","mutate","Loading","_jsxs","Main","labelledBy","aria-busy","Title","name","Layouts","Header","title","subtitle","Content","form","onSubmit","Flex","direction","alignItems","gap","Box","background","hasRadius","shadow","paddingTop","paddingBottom","paddingLeft","paddingRight","Typography","variant","tag","file","link","href","rel","Grid","Root","Item","col","s","Field","Label","TextInput","placeholder","disabled","defaultFrom","defaultReplyTo","SingleSelect","provider","SingleSelectOption","onChange","Button","loading","startIcon","Mail"],"mappings":"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"}
@@ -1,6 +0,0 @@
1
- 'use strict';
2
-
3
- var ar = {};
4
-
5
- exports.default = ar;
6
- //# sourceMappingURL=ar-BDHMRt_b.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"ar-BDHMRt_b.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"ar-JWJKrFM-.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"cs-BZCMeXgq.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;"}
@@ -1,6 +0,0 @@
1
- 'use strict';
2
-
3
- var cs = {};
4
-
5
- exports.default = cs;
6
- //# sourceMappingURL=cs-DrOn3eR2.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"cs-DrOn3eR2.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;"}
@@ -1,6 +0,0 @@
1
- 'use strict';
2
-
3
- var de = {};
4
-
5
- exports.default = de;
6
- //# sourceMappingURL=de-BlqtkWR3.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"de-BlqtkWR3.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"de-CGlAhulB.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"dk-B5IuEReS.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"dk-DW7WecjY.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"en-DacnIsXb.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"en-Dxg2wKLN.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;"}