@strapi/email 0.0.0-next.f0bfcece1007e5aa527570187635aefc86db536e → 0.0.0-next.f0f36e3df4b18f167036dcbca529dcb933bf4e1d

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.
@@ -23,7 +23,7 @@ function __variableDynamicImportRuntime1__(path) {
23
23
  case './translations/pl.json': return Promise.resolve().then(function () { return /*#__PURE__*/_interopNamespaceDefaultOnly(require('./translations/pl.json.js')); });
24
24
  case './translations/pt-BR.json': return Promise.resolve().then(function () { return /*#__PURE__*/_interopNamespaceDefaultOnly(require('./translations/pt-BR.json.js')); });
25
25
  case './translations/pt.json': return Promise.resolve().then(function () { return require('./translations/pt.json.js'); });
26
- case './translations/ru.json': return Promise.resolve().then(function () { return /*#__PURE__*/_interopNamespaceDefaultOnly(require('./translations/ru.json.js')); });
26
+ case './translations/ru.json': return Promise.resolve().then(function () { return require('./translations/ru.json.js'); });
27
27
  case './translations/sk.json': return Promise.resolve().then(function () { return /*#__PURE__*/_interopNamespaceDefaultOnly(require('./translations/sk.json.js')); });
28
28
  case './translations/th.json': return Promise.resolve().then(function () { return /*#__PURE__*/_interopNamespaceDefaultOnly(require('./translations/th.json.js')); });
29
29
  case './translations/tr.json': return Promise.resolve().then(function () { return require('./translations/tr.json.js'); });
@@ -199,7 +199,7 @@ const SettingsPage = ()=>{
199
199
  children: [
200
200
  /*#__PURE__*/ jsxRuntime.jsx(designSystem.Grid.Item, {
201
201
  col: 6,
202
- s: 12,
202
+ xs: 12,
203
203
  direction: "column",
204
204
  alignItems: "stretch",
205
205
  children: /*#__PURE__*/ jsxRuntime.jsxs(designSystem.Field.Root, {
@@ -217,14 +217,16 @@ const SettingsPage = ()=>{
217
217
  defaultMessage: "ex: Strapi No-Reply '<'no-reply@strapi.io'>'"
218
218
  }),
219
219
  disabled: true,
220
- value: data.settings.defaultFrom
220
+ readOnly: true,
221
+ value: data.settings.defaultFrom,
222
+ type: "email"
221
223
  })
222
224
  ]
223
225
  })
224
226
  }),
225
227
  /*#__PURE__*/ jsxRuntime.jsx(designSystem.Grid.Item, {
226
228
  col: 6,
227
- s: 12,
229
+ xs: 12,
228
230
  direction: "column",
229
231
  alignItems: "stretch",
230
232
  children: /*#__PURE__*/ jsxRuntime.jsxs(designSystem.Field.Root, {
@@ -242,14 +244,16 @@ const SettingsPage = ()=>{
242
244
  defaultMessage: `ex: Strapi '<'example@strapi.io'>'`
243
245
  }),
244
246
  disabled: true,
245
- value: data.settings.defaultReplyTo
247
+ readOnly: true,
248
+ value: data.settings.defaultReplyTo,
249
+ type: "email"
246
250
  })
247
251
  ]
248
252
  })
249
253
  }),
250
254
  /*#__PURE__*/ jsxRuntime.jsx(designSystem.Grid.Item, {
251
255
  col: 6,
252
- s: 12,
256
+ xs: 12,
253
257
  direction: "column",
254
258
  alignItems: "stretch",
255
259
  children: /*#__PURE__*/ jsxRuntime.jsxs(designSystem.Field.Root, {
@@ -302,7 +306,7 @@ const SettingsPage = ()=>{
302
306
  children: [
303
307
  /*#__PURE__*/ jsxRuntime.jsx(designSystem.Grid.Item, {
304
308
  col: 6,
305
- s: 12,
309
+ xs: 12,
306
310
  direction: "column",
307
311
  alignItems: "stretch",
308
312
  children: /*#__PURE__*/ jsxRuntime.jsxs(designSystem.Field.Root, {
@@ -324,14 +328,15 @@ const SettingsPage = ()=>{
324
328
  placeholder: formatMessage({
325
329
  id: 'email.Settings.email.plugin.placeholder.testAddress',
326
330
  defaultMessage: 'ex: developer@example.com'
327
- })
331
+ }),
332
+ type: "email"
328
333
  })
329
334
  ]
330
335
  })
331
336
  }),
332
337
  /*#__PURE__*/ jsxRuntime.jsx(designSystem.Grid.Item, {
333
338
  col: 7,
334
- s: 12,
339
+ xs: 12,
335
340
  direction: "column",
336
341
  alignItems: "start",
337
342
  children: /*#__PURE__*/ jsxRuntime.jsx(designSystem.Button, {
@@ -1 +1 @@
1
- {"version":3,"file":"Settings.js","sources":["../../../admin/src/pages/Settings.tsx"],"sourcesContent":["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":["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","type","message","id","defaultMessage","to","onSuccess","retry","useEffect","schema","validate","email","abortEarly","then","catch","handleChange","event","target","value","handleSubmit","preventDefault","error","ValidationError","getYupInnerErrors","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
+ {"version":3,"file":"Settings.js","sources":["../../../admin/src/pages/Settings.tsx"],"sourcesContent":["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} xs={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 readOnly\n value={data.settings.defaultFrom}\n type=\"email\"\n />\n </Field.Root>\n </Grid.Item>\n\n <Grid.Item col={6} xs={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 readOnly\n value={data.settings.defaultReplyTo}\n type=\"email\"\n />\n </Field.Root>\n </Grid.Item>\n\n <Grid.Item col={6} xs={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} xs={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 type=\"email\"\n />\n </Field.Root>\n </Grid.Item>\n <Grid.Item col={7} xs={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":["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","type","message","id","defaultMessage","to","onSuccess","retry","useEffect","schema","validate","email","abortEarly","then","catch","handleChange","event","target","value","handleSubmit","preventDefault","error","ValidationError","getYupInnerErrors","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","xs","Field","Label","TextInput","placeholder","disabled","readOnly","defaultFrom","defaultReplyTo","SingleSelect","provider","SingleSelectOption","onChange","Button","loading","startIcon","Mail"],"mappings":"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"}
@@ -178,7 +178,7 @@ const SettingsPage = ()=>{
178
178
  children: [
179
179
  /*#__PURE__*/ jsx(Grid.Item, {
180
180
  col: 6,
181
- s: 12,
181
+ xs: 12,
182
182
  direction: "column",
183
183
  alignItems: "stretch",
184
184
  children: /*#__PURE__*/ jsxs(Field.Root, {
@@ -196,14 +196,16 @@ const SettingsPage = ()=>{
196
196
  defaultMessage: "ex: Strapi No-Reply '<'no-reply@strapi.io'>'"
197
197
  }),
198
198
  disabled: true,
199
- value: data.settings.defaultFrom
199
+ readOnly: true,
200
+ value: data.settings.defaultFrom,
201
+ type: "email"
200
202
  })
201
203
  ]
202
204
  })
203
205
  }),
204
206
  /*#__PURE__*/ jsx(Grid.Item, {
205
207
  col: 6,
206
- s: 12,
208
+ xs: 12,
207
209
  direction: "column",
208
210
  alignItems: "stretch",
209
211
  children: /*#__PURE__*/ jsxs(Field.Root, {
@@ -221,14 +223,16 @@ const SettingsPage = ()=>{
221
223
  defaultMessage: `ex: Strapi '<'example@strapi.io'>'`
222
224
  }),
223
225
  disabled: true,
224
- value: data.settings.defaultReplyTo
226
+ readOnly: true,
227
+ value: data.settings.defaultReplyTo,
228
+ type: "email"
225
229
  })
226
230
  ]
227
231
  })
228
232
  }),
229
233
  /*#__PURE__*/ jsx(Grid.Item, {
230
234
  col: 6,
231
- s: 12,
235
+ xs: 12,
232
236
  direction: "column",
233
237
  alignItems: "stretch",
234
238
  children: /*#__PURE__*/ jsxs(Field.Root, {
@@ -281,7 +285,7 @@ const SettingsPage = ()=>{
281
285
  children: [
282
286
  /*#__PURE__*/ jsx(Grid.Item, {
283
287
  col: 6,
284
- s: 12,
288
+ xs: 12,
285
289
  direction: "column",
286
290
  alignItems: "stretch",
287
291
  children: /*#__PURE__*/ jsxs(Field.Root, {
@@ -303,14 +307,15 @@ const SettingsPage = ()=>{
303
307
  placeholder: formatMessage({
304
308
  id: 'email.Settings.email.plugin.placeholder.testAddress',
305
309
  defaultMessage: 'ex: developer@example.com'
306
- })
310
+ }),
311
+ type: "email"
307
312
  })
308
313
  ]
309
314
  })
310
315
  }),
311
316
  /*#__PURE__*/ jsx(Grid.Item, {
312
317
  col: 7,
313
- s: 12,
318
+ xs: 12,
314
319
  direction: "column",
315
320
  alignItems: "start",
316
321
  children: /*#__PURE__*/ jsx(Button, {
@@ -1 +1 @@
1
- {"version":3,"file":"Settings.mjs","sources":["../../../admin/src/pages/Settings.tsx"],"sourcesContent":["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":["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","type","message","id","defaultMessage","to","onSuccess","retry","useEffect","schema","validate","email","abortEarly","then","catch","handleChange","event","target","value","handleSubmit","preventDefault","error","ValidationError","getYupInnerErrors","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
+ {"version":3,"file":"Settings.mjs","sources":["../../../admin/src/pages/Settings.tsx"],"sourcesContent":["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} xs={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 readOnly\n value={data.settings.defaultFrom}\n type=\"email\"\n />\n </Field.Root>\n </Grid.Item>\n\n <Grid.Item col={6} xs={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 readOnly\n value={data.settings.defaultReplyTo}\n type=\"email\"\n />\n </Field.Root>\n </Grid.Item>\n\n <Grid.Item col={6} xs={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} xs={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 type=\"email\"\n />\n </Field.Root>\n </Grid.Item>\n <Grid.Item col={7} xs={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":["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","type","message","id","defaultMessage","to","onSuccess","retry","useEffect","schema","validate","email","abortEarly","then","catch","handleChange","event","target","value","handleSubmit","preventDefault","error","ValidationError","getYupInnerErrors","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","xs","Field","Label","TextInput","placeholder","disabled","readOnly","defaultFrom","defaultReplyTo","SingleSelect","provider","SingleSelectOption","onChange","Button","loading","startIcon","Mail"],"mappings":"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"}
@@ -1,6 +1,32 @@
1
1
  'use strict';
2
2
 
3
- var ru = {};
3
+ Object.defineProperty(exports, '__esModule', { value: true });
4
4
 
5
- module.exports = ru;
5
+ var link = "Ссылка";
6
+ var ru = {
7
+ link: link,
8
+ "Settings.email.plugin.button.test-email": "Отправить тестовое письмо",
9
+ "Settings.email.plugin.label.defaultFrom": "Email отправителя по умолчанию",
10
+ "Settings.email.plugin.label.defaultReplyTo": "Email ответа по умолчанию",
11
+ "Settings.email.plugin.label.provider": "Провайдер email",
12
+ "Settings.email.plugin.label.testAddress": "Email получателя",
13
+ "Settings.email.plugin.notification.config.error": "Не удалось получить конфигурацию email",
14
+ "Settings.email.plugin.notification.data.loaded": "Данные настроек email загружены",
15
+ "Settings.email.plugin.notification.test.error": "Не удалось отправить тестовое письмо на {to}",
16
+ "Settings.email.plugin.notification.test.success": "Тест email прошел успешно, проверьте почтовый ящик {to}",
17
+ "Settings.email.plugin.placeholder.defaultFrom": "напр.: Strapi No-Reply <no-reply@strapi.io>",
18
+ "Settings.email.plugin.placeholder.defaultReplyTo": "напр.: Strapi <example@strapi.io>",
19
+ "Settings.email.plugin.placeholder.testAddress": "напр.: developer@example.com",
20
+ "Settings.email.plugin.subTitle": "Протестируйте настройки для плагина Email",
21
+ "Settings.email.plugin.text.configuration": "Плагин настраивается через файл {file}, ознакомьтесь с {link} для документации.",
22
+ "Settings.email.plugin.title": "Конфигурация",
23
+ "Settings.email.plugin.title.config": "Конфигурация",
24
+ "Settings.email.plugin.title.test": "Тест доставки email",
25
+ "SettingsNav.link.settings": "Настройки",
26
+ "SettingsNav.section-label": "Плагин Email",
27
+ "components.Input.error.validation.email": "Это недействительный email"
28
+ };
29
+
30
+ exports.default = ru;
31
+ exports.link = link;
6
32
  //# sourceMappingURL=ru.json.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"ru.json.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;"}
1
+ {"version":3,"file":"ru.json.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
@@ -1,4 +1,27 @@
1
- var ru = {};
1
+ var link = "Ссылка";
2
+ var ru = {
3
+ link: link,
4
+ "Settings.email.plugin.button.test-email": "Отправить тестовое письмо",
5
+ "Settings.email.plugin.label.defaultFrom": "Email отправителя по умолчанию",
6
+ "Settings.email.plugin.label.defaultReplyTo": "Email ответа по умолчанию",
7
+ "Settings.email.plugin.label.provider": "Провайдер email",
8
+ "Settings.email.plugin.label.testAddress": "Email получателя",
9
+ "Settings.email.plugin.notification.config.error": "Не удалось получить конфигурацию email",
10
+ "Settings.email.plugin.notification.data.loaded": "Данные настроек email загружены",
11
+ "Settings.email.plugin.notification.test.error": "Не удалось отправить тестовое письмо на {to}",
12
+ "Settings.email.plugin.notification.test.success": "Тест email прошел успешно, проверьте почтовый ящик {to}",
13
+ "Settings.email.plugin.placeholder.defaultFrom": "напр.: Strapi No-Reply <no-reply@strapi.io>",
14
+ "Settings.email.plugin.placeholder.defaultReplyTo": "напр.: Strapi <example@strapi.io>",
15
+ "Settings.email.plugin.placeholder.testAddress": "напр.: developer@example.com",
16
+ "Settings.email.plugin.subTitle": "Протестируйте настройки для плагина Email",
17
+ "Settings.email.plugin.text.configuration": "Плагин настраивается через файл {file}, ознакомьтесь с {link} для документации.",
18
+ "Settings.email.plugin.title": "Конфигурация",
19
+ "Settings.email.plugin.title.config": "Конфигурация",
20
+ "Settings.email.plugin.title.test": "Тест доставки email",
21
+ "SettingsNav.link.settings": "Настройки",
22
+ "SettingsNav.section-label": "Плагин Email",
23
+ "components.Input.error.validation.email": "Это недействительный email"
24
+ };
2
25
 
3
- export { ru as default };
26
+ export { ru as default, link };
4
27
  //# sourceMappingURL=ru.json.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"ru.json.mjs","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;"}
1
+ {"version":3,"file":"ru.json.mjs","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;"}
@@ -1 +1 @@
1
- {"version":3,"file":"prefixPluginTranslations.js","sources":["../../../admin/src/utils/prefixPluginTranslations.ts"],"sourcesContent":["type TradOptions = Record<string, string>;\n\nconst prefixPluginTranslations = (trad: TradOptions, pluginId: string): TradOptions => {\n if (!pluginId) {\n throw new TypeError(\"pluginId can't be empty\");\n }\n return Object.keys(trad).reduce((acc, current) => {\n acc[`${pluginId}.${current}`] = trad[current];\n return acc;\n }, {} as TradOptions);\n};\n\nexport { prefixPluginTranslations };\n"],"names":["prefixPluginTranslations","trad","pluginId","Object","keys","reduce","acc","current"],"mappings":";;AAEMA,MAAAA,wBAAAA,GAA2B,CAACC,IAAmBC,EAAAA,QAAAA,GAAAA;AAInD,IAAA,OAAOC,OAAOC,IAAI,CAACH,MAAMI,MAAM,CAAC,CAACC,GAAKC,EAAAA,OAAAA,GAAAA;AACpCD,QAAAA,GAAG,CAAC,CAAC,EAAEJ,QAAAA,CAAS,CAAC,EAAEK,OAAQ,CAAA,CAAC,CAAC,GAAGN,IAAI,CAACM,OAAQ,CAAA;QAC7C,OAAOD,GAAAA;AACT,KAAA,EAAG,EAAC,CAAA;AACN;;;;"}
1
+ {"version":3,"file":"prefixPluginTranslations.js","sources":["../../../admin/src/utils/prefixPluginTranslations.ts"],"sourcesContent":["type TradOptions = Record<string, string>;\n\nconst prefixPluginTranslations = (trad: TradOptions, pluginId: string): TradOptions => {\n if (!pluginId) {\n throw new TypeError(\"pluginId can't be empty\");\n }\n return Object.keys(trad).reduce((acc, current) => {\n acc[`${pluginId}.${current}`] = trad[current];\n return acc;\n }, {} as TradOptions);\n};\n\nexport { prefixPluginTranslations };\n"],"names":["prefixPluginTranslations","trad","pluginId","Object","keys","reduce","acc","current"],"mappings":";;AAEMA,MAAAA,wBAAAA,GAA2B,CAACC,IAAmBC,EAAAA,QAAAA,GAAAA;AAInD,IAAA,OAAOC,OAAOC,IAAI,CAACH,MAAMI,MAAM,CAAC,CAACC,GAAKC,EAAAA,OAAAA,GAAAA;QACpCD,GAAG,CAAC,CAAGJ,EAAAA,QAAAA,CAAS,CAAC,EAAEK,SAAS,CAAC,GAAGN,IAAI,CAACM,OAAQ,CAAA;QAC7C,OAAOD,GAAAA;AACT,KAAA,EAAG,EAAC,CAAA;AACN;;;;"}
@@ -1 +1 @@
1
- {"version":3,"file":"prefixPluginTranslations.mjs","sources":["../../../admin/src/utils/prefixPluginTranslations.ts"],"sourcesContent":["type TradOptions = Record<string, string>;\n\nconst prefixPluginTranslations = (trad: TradOptions, pluginId: string): TradOptions => {\n if (!pluginId) {\n throw new TypeError(\"pluginId can't be empty\");\n }\n return Object.keys(trad).reduce((acc, current) => {\n acc[`${pluginId}.${current}`] = trad[current];\n return acc;\n }, {} as TradOptions);\n};\n\nexport { prefixPluginTranslations };\n"],"names":["prefixPluginTranslations","trad","pluginId","Object","keys","reduce","acc","current"],"mappings":"AAEMA,MAAAA,wBAAAA,GAA2B,CAACC,IAAmBC,EAAAA,QAAAA,GAAAA;AAInD,IAAA,OAAOC,OAAOC,IAAI,CAACH,MAAMI,MAAM,CAAC,CAACC,GAAKC,EAAAA,OAAAA,GAAAA;AACpCD,QAAAA,GAAG,CAAC,CAAC,EAAEJ,QAAAA,CAAS,CAAC,EAAEK,OAAQ,CAAA,CAAC,CAAC,GAAGN,IAAI,CAACM,OAAQ,CAAA;QAC7C,OAAOD,GAAAA;AACT,KAAA,EAAG,EAAC,CAAA;AACN;;;;"}
1
+ {"version":3,"file":"prefixPluginTranslations.mjs","sources":["../../../admin/src/utils/prefixPluginTranslations.ts"],"sourcesContent":["type TradOptions = Record<string, string>;\n\nconst prefixPluginTranslations = (trad: TradOptions, pluginId: string): TradOptions => {\n if (!pluginId) {\n throw new TypeError(\"pluginId can't be empty\");\n }\n return Object.keys(trad).reduce((acc, current) => {\n acc[`${pluginId}.${current}`] = trad[current];\n return acc;\n }, {} as TradOptions);\n};\n\nexport { prefixPluginTranslations };\n"],"names":["prefixPluginTranslations","trad","pluginId","Object","keys","reduce","acc","current"],"mappings":"AAEMA,MAAAA,wBAAAA,GAA2B,CAACC,IAAmBC,EAAAA,QAAAA,GAAAA;AAInD,IAAA,OAAOC,OAAOC,IAAI,CAACH,MAAMI,MAAM,CAAC,CAACC,GAAKC,EAAAA,OAAAA,GAAAA;QACpCD,GAAG,CAAC,CAAGJ,EAAAA,QAAAA,CAAS,CAAC,EAAEK,SAAS,CAAC,GAAGN,IAAI,CAACM,OAAQ,CAAA;QAC7C,OAAOD,GAAAA;AACT,KAAA,EAAG,EAAC,CAAA;AACN;;;;"}
@@ -16,7 +16,11 @@ const createProvider = (emailConfig)=>{
16
16
  try {
17
17
  provider = require(modulePath);
18
18
  } catch (err) {
19
- throw new Error(`Could not load email provider "${providerName}".`);
19
+ const newError = new Error(`Could not load email provider "${providerName}".`);
20
+ if (err instanceof Error) {
21
+ newError.stack = err.stack;
22
+ }
23
+ throw newError;
20
24
  }
21
25
  return provider.init(emailConfig.providerOptions, emailConfig.settings);
22
26
  };
@@ -1 +1 @@
1
- {"version":3,"file":"bootstrap.js","sources":["../../server/src/bootstrap.ts"],"sourcesContent":["import type { Core } from '@strapi/types';\nimport type { EmailConfig, SendOptions } from './types';\n\ninterface EmailProvider {\n send: (options: SendOptions) => Promise<any>;\n}\n\ninterface EmailProviderModule {\n init: (\n options: EmailConfig['providerOptions'],\n settings: EmailConfig['settings']\n ) => EmailProvider;\n name?: string;\n provider?: string;\n}\n\nconst createProvider = (emailConfig: EmailConfig) => {\n const providerName = emailConfig.provider.toLowerCase();\n let provider: EmailProviderModule;\n\n let modulePath: string;\n try {\n modulePath = require.resolve(`@strapi/provider-email-${providerName}`);\n } catch (error) {\n if (\n error !== null &&\n typeof error === 'object' &&\n 'code' in error &&\n error.code === 'MODULE_NOT_FOUND'\n ) {\n modulePath = providerName;\n } else {\n throw error;\n }\n }\n\n try {\n provider = require(modulePath);\n } catch (err) {\n throw new Error(`Could not load email provider \"${providerName}\".`);\n }\n\n return provider.init(emailConfig.providerOptions, emailConfig.settings);\n};\n\nexport const bootstrap = async ({ strapi }: { strapi: Core.Strapi }) => {\n const emailConfig: EmailConfig = strapi.config.get('plugin::email');\n strapi.plugin('email').provider = createProvider(emailConfig);\n\n // Add permissions\n const actions = [\n {\n section: 'settings',\n category: 'email',\n displayName: 'Access the Email Settings page',\n uid: 'settings.read',\n pluginName: 'email',\n },\n ];\n\n await strapi.service('admin::permission').actionProvider.registerMany(actions);\n};\n"],"names":["createProvider","emailConfig","providerName","provider","toLowerCase","modulePath","require","resolve","error","code","err","Error","init","providerOptions","settings","bootstrap","strapi","config","get","plugin","actions","section","category","displayName","uid","pluginName","service","actionProvider","registerMany"],"mappings":";;AAgBA,MAAMA,iBAAiB,CAACC,WAAAA,GAAAA;AACtB,IAAA,MAAMC,YAAeD,GAAAA,WAAAA,CAAYE,QAAQ,CAACC,WAAW,EAAA;IACrD,IAAID,QAAAA;IAEJ,IAAIE,UAAAA;IACJ,IAAI;AACFA,QAAAA,UAAAA,GAAaC,QAAQC,OAAO,CAAC,CAAC,uBAAuB,EAAEL,aAAa,CAAC,CAAA;AACvE,KAAA,CAAE,OAAOM,KAAO,EAAA;QACd,IACEA,KAAAA,KAAU,IACV,IAAA,OAAOA,KAAU,KAAA,QAAA,IACjB,UAAUA,KACVA,IAAAA,KAAAA,CAAMC,IAAI,KAAK,kBACf,EAAA;YACAJ,UAAaH,GAAAA,YAAAA;SACR,MAAA;YACL,MAAMM,KAAAA;AACR;AACF;IAEA,IAAI;AACFL,QAAAA,QAAAA,GAAWG,OAAQD,CAAAA,UAAAA,CAAAA;AACrB,KAAA,CAAE,OAAOK,GAAK,EAAA;AACZ,QAAA,MAAM,IAAIC,KAAM,CAAA,CAAC,+BAA+B,EAAET,YAAAA,CAAa,EAAE,CAAC,CAAA;AACpE;AAEA,IAAA,OAAOC,SAASS,IAAI,CAACX,YAAYY,eAAe,EAAEZ,YAAYa,QAAQ,CAAA;AACxE,CAAA;AAEaC,MAAAA,SAAAA,GAAY,OAAO,EAAEC,MAAM,EAA2B,GAAA;AACjE,IAAA,MAAMf,WAA2Be,GAAAA,MAAAA,CAAOC,MAAM,CAACC,GAAG,CAAC,eAAA,CAAA;AACnDF,IAAAA,MAAAA,CAAOG,MAAM,CAAC,OAAShB,CAAAA,CAAAA,QAAQ,GAAGH,cAAeC,CAAAA,WAAAA,CAAAA;;AAGjD,IAAA,MAAMmB,OAAU,GAAA;AACd,QAAA;YACEC,OAAS,EAAA,UAAA;YACTC,QAAU,EAAA,OAAA;YACVC,WAAa,EAAA,gCAAA;YACbC,GAAK,EAAA,eAAA;YACLC,UAAY,EAAA;AACd;AACD,KAAA;AAED,IAAA,MAAMT,OAAOU,OAAO,CAAC,qBAAqBC,cAAc,CAACC,YAAY,CAACR,OAAAA,CAAAA;AACxE;;;;"}
1
+ {"version":3,"file":"bootstrap.js","sources":["../../server/src/bootstrap.ts"],"sourcesContent":["import type { Core } from '@strapi/types';\nimport type { EmailConfig, SendOptions } from './types';\n\ninterface EmailProvider {\n send: (options: SendOptions) => Promise<any>;\n}\n\ninterface EmailProviderModule {\n init: (\n options: EmailConfig['providerOptions'],\n settings: EmailConfig['settings']\n ) => EmailProvider;\n name?: string;\n provider?: string;\n}\n\nconst createProvider = (emailConfig: EmailConfig) => {\n const providerName = emailConfig.provider.toLowerCase();\n let provider: EmailProviderModule;\n\n let modulePath: string;\n try {\n modulePath = require.resolve(`@strapi/provider-email-${providerName}`);\n } catch (error) {\n if (\n error !== null &&\n typeof error === 'object' &&\n 'code' in error &&\n error.code === 'MODULE_NOT_FOUND'\n ) {\n modulePath = providerName;\n } else {\n throw error;\n }\n }\n\n try {\n provider = require(modulePath);\n } catch (err) {\n const newError = new Error(`Could not load email provider \"${providerName}\".`);\n if (err instanceof Error) {\n newError.stack = err.stack;\n }\n throw newError;\n }\n\n return provider.init(emailConfig.providerOptions, emailConfig.settings);\n};\n\nexport const bootstrap = async ({ strapi }: { strapi: Core.Strapi }) => {\n const emailConfig: EmailConfig = strapi.config.get('plugin::email');\n strapi.plugin('email').provider = createProvider(emailConfig);\n\n // Add permissions\n const actions = [\n {\n section: 'settings',\n category: 'email',\n displayName: 'Access the Email Settings page',\n uid: 'settings.read',\n pluginName: 'email',\n },\n ];\n\n await strapi.service('admin::permission').actionProvider.registerMany(actions);\n};\n"],"names":["createProvider","emailConfig","providerName","provider","toLowerCase","modulePath","require","resolve","error","code","err","newError","Error","stack","init","providerOptions","settings","bootstrap","strapi","config","get","plugin","actions","section","category","displayName","uid","pluginName","service","actionProvider","registerMany"],"mappings":";;AAgBA,MAAMA,iBAAiB,CAACC,WAAAA,GAAAA;AACtB,IAAA,MAAMC,YAAeD,GAAAA,WAAAA,CAAYE,QAAQ,CAACC,WAAW,EAAA;IACrD,IAAID,QAAAA;IAEJ,IAAIE,UAAAA;IACJ,IAAI;AACFA,QAAAA,UAAAA,GAAaC,QAAQC,OAAO,CAAC,CAAC,uBAAuB,EAAEL,YAAc,CAAA,CAAA,CAAA;AACvE,KAAA,CAAE,OAAOM,KAAO,EAAA;QACd,IACEA,KAAAA,KAAU,IACV,IAAA,OAAOA,KAAU,KAAA,QAAA,IACjB,UAAUA,KACVA,IAAAA,KAAAA,CAAMC,IAAI,KAAK,kBACf,EAAA;YACAJ,UAAaH,GAAAA,YAAAA;SACR,MAAA;YACL,MAAMM,KAAAA;AACR;AACF;IAEA,IAAI;AACFL,QAAAA,QAAAA,GAAWG,OAAQD,CAAAA,UAAAA,CAAAA;AACrB,KAAA,CAAE,OAAOK,GAAK,EAAA;QACZ,MAAMC,QAAAA,GAAW,IAAIC,KAAM,CAAA,CAAC,+BAA+B,EAAEV,YAAAA,CAAa,EAAE,CAAC,CAAA;AAC7E,QAAA,IAAIQ,eAAeE,KAAO,EAAA;YACxBD,QAASE,CAAAA,KAAK,GAAGH,GAAAA,CAAIG,KAAK;AAC5B;QACA,MAAMF,QAAAA;AACR;AAEA,IAAA,OAAOR,SAASW,IAAI,CAACb,YAAYc,eAAe,EAAEd,YAAYe,QAAQ,CAAA;AACxE,CAAA;AAEaC,MAAAA,SAAAA,GAAY,OAAO,EAAEC,MAAM,EAA2B,GAAA;AACjE,IAAA,MAAMjB,WAA2BiB,GAAAA,MAAAA,CAAOC,MAAM,CAACC,GAAG,CAAC,eAAA,CAAA;AACnDF,IAAAA,MAAAA,CAAOG,MAAM,CAAC,OAASlB,CAAAA,CAAAA,QAAQ,GAAGH,cAAeC,CAAAA,WAAAA,CAAAA;;AAGjD,IAAA,MAAMqB,OAAU,GAAA;AACd,QAAA;YACEC,OAAS,EAAA,UAAA;YACTC,QAAU,EAAA,OAAA;YACVC,WAAa,EAAA,gCAAA;YACbC,GAAK,EAAA,eAAA;YACLC,UAAY,EAAA;AACd;AACD,KAAA;AAED,IAAA,MAAMT,OAAOU,OAAO,CAAC,qBAAqBC,cAAc,CAACC,YAAY,CAACR,OAAAA,CAAAA;AACxE;;;;"}
@@ -14,7 +14,11 @@ const createProvider = (emailConfig)=>{
14
14
  try {
15
15
  provider = require(modulePath);
16
16
  } catch (err) {
17
- throw new Error(`Could not load email provider "${providerName}".`);
17
+ const newError = new Error(`Could not load email provider "${providerName}".`);
18
+ if (err instanceof Error) {
19
+ newError.stack = err.stack;
20
+ }
21
+ throw newError;
18
22
  }
19
23
  return provider.init(emailConfig.providerOptions, emailConfig.settings);
20
24
  };
@@ -1 +1 @@
1
- {"version":3,"file":"bootstrap.mjs","sources":["../../server/src/bootstrap.ts"],"sourcesContent":["import type { Core } from '@strapi/types';\nimport type { EmailConfig, SendOptions } from './types';\n\ninterface EmailProvider {\n send: (options: SendOptions) => Promise<any>;\n}\n\ninterface EmailProviderModule {\n init: (\n options: EmailConfig['providerOptions'],\n settings: EmailConfig['settings']\n ) => EmailProvider;\n name?: string;\n provider?: string;\n}\n\nconst createProvider = (emailConfig: EmailConfig) => {\n const providerName = emailConfig.provider.toLowerCase();\n let provider: EmailProviderModule;\n\n let modulePath: string;\n try {\n modulePath = require.resolve(`@strapi/provider-email-${providerName}`);\n } catch (error) {\n if (\n error !== null &&\n typeof error === 'object' &&\n 'code' in error &&\n error.code === 'MODULE_NOT_FOUND'\n ) {\n modulePath = providerName;\n } else {\n throw error;\n }\n }\n\n try {\n provider = require(modulePath);\n } catch (err) {\n throw new Error(`Could not load email provider \"${providerName}\".`);\n }\n\n return provider.init(emailConfig.providerOptions, emailConfig.settings);\n};\n\nexport const bootstrap = async ({ strapi }: { strapi: Core.Strapi }) => {\n const emailConfig: EmailConfig = strapi.config.get('plugin::email');\n strapi.plugin('email').provider = createProvider(emailConfig);\n\n // Add permissions\n const actions = [\n {\n section: 'settings',\n category: 'email',\n displayName: 'Access the Email Settings page',\n uid: 'settings.read',\n pluginName: 'email',\n },\n ];\n\n await strapi.service('admin::permission').actionProvider.registerMany(actions);\n};\n"],"names":["createProvider","emailConfig","providerName","provider","toLowerCase","modulePath","require","resolve","error","code","err","Error","init","providerOptions","settings","bootstrap","strapi","config","get","plugin","actions","section","category","displayName","uid","pluginName","service","actionProvider","registerMany"],"mappings":"AAgBA,MAAMA,iBAAiB,CAACC,WAAAA,GAAAA;AACtB,IAAA,MAAMC,YAAeD,GAAAA,WAAAA,CAAYE,QAAQ,CAACC,WAAW,EAAA;IACrD,IAAID,QAAAA;IAEJ,IAAIE,UAAAA;IACJ,IAAI;AACFA,QAAAA,UAAAA,GAAaC,QAAQC,OAAO,CAAC,CAAC,uBAAuB,EAAEL,aAAa,CAAC,CAAA;AACvE,KAAA,CAAE,OAAOM,KAAO,EAAA;QACd,IACEA,KAAAA,KAAU,IACV,IAAA,OAAOA,KAAU,KAAA,QAAA,IACjB,UAAUA,KACVA,IAAAA,KAAAA,CAAMC,IAAI,KAAK,kBACf,EAAA;YACAJ,UAAaH,GAAAA,YAAAA;SACR,MAAA;YACL,MAAMM,KAAAA;AACR;AACF;IAEA,IAAI;AACFL,QAAAA,QAAAA,GAAWG,OAAQD,CAAAA,UAAAA,CAAAA;AACrB,KAAA,CAAE,OAAOK,GAAK,EAAA;AACZ,QAAA,MAAM,IAAIC,KAAM,CAAA,CAAC,+BAA+B,EAAET,YAAAA,CAAa,EAAE,CAAC,CAAA;AACpE;AAEA,IAAA,OAAOC,SAASS,IAAI,CAACX,YAAYY,eAAe,EAAEZ,YAAYa,QAAQ,CAAA;AACxE,CAAA;AAEaC,MAAAA,SAAAA,GAAY,OAAO,EAAEC,MAAM,EAA2B,GAAA;AACjE,IAAA,MAAMf,WAA2Be,GAAAA,MAAAA,CAAOC,MAAM,CAACC,GAAG,CAAC,eAAA,CAAA;AACnDF,IAAAA,MAAAA,CAAOG,MAAM,CAAC,OAAShB,CAAAA,CAAAA,QAAQ,GAAGH,cAAeC,CAAAA,WAAAA,CAAAA;;AAGjD,IAAA,MAAMmB,OAAU,GAAA;AACd,QAAA;YACEC,OAAS,EAAA,UAAA;YACTC,QAAU,EAAA,OAAA;YACVC,WAAa,EAAA,gCAAA;YACbC,GAAK,EAAA,eAAA;YACLC,UAAY,EAAA;AACd;AACD,KAAA;AAED,IAAA,MAAMT,OAAOU,OAAO,CAAC,qBAAqBC,cAAc,CAACC,YAAY,CAACR,OAAAA,CAAAA;AACxE;;;;"}
1
+ {"version":3,"file":"bootstrap.mjs","sources":["../../server/src/bootstrap.ts"],"sourcesContent":["import type { Core } from '@strapi/types';\nimport type { EmailConfig, SendOptions } from './types';\n\ninterface EmailProvider {\n send: (options: SendOptions) => Promise<any>;\n}\n\ninterface EmailProviderModule {\n init: (\n options: EmailConfig['providerOptions'],\n settings: EmailConfig['settings']\n ) => EmailProvider;\n name?: string;\n provider?: string;\n}\n\nconst createProvider = (emailConfig: EmailConfig) => {\n const providerName = emailConfig.provider.toLowerCase();\n let provider: EmailProviderModule;\n\n let modulePath: string;\n try {\n modulePath = require.resolve(`@strapi/provider-email-${providerName}`);\n } catch (error) {\n if (\n error !== null &&\n typeof error === 'object' &&\n 'code' in error &&\n error.code === 'MODULE_NOT_FOUND'\n ) {\n modulePath = providerName;\n } else {\n throw error;\n }\n }\n\n try {\n provider = require(modulePath);\n } catch (err) {\n const newError = new Error(`Could not load email provider \"${providerName}\".`);\n if (err instanceof Error) {\n newError.stack = err.stack;\n }\n throw newError;\n }\n\n return provider.init(emailConfig.providerOptions, emailConfig.settings);\n};\n\nexport const bootstrap = async ({ strapi }: { strapi: Core.Strapi }) => {\n const emailConfig: EmailConfig = strapi.config.get('plugin::email');\n strapi.plugin('email').provider = createProvider(emailConfig);\n\n // Add permissions\n const actions = [\n {\n section: 'settings',\n category: 'email',\n displayName: 'Access the Email Settings page',\n uid: 'settings.read',\n pluginName: 'email',\n },\n ];\n\n await strapi.service('admin::permission').actionProvider.registerMany(actions);\n};\n"],"names":["createProvider","emailConfig","providerName","provider","toLowerCase","modulePath","require","resolve","error","code","err","newError","Error","stack","init","providerOptions","settings","bootstrap","strapi","config","get","plugin","actions","section","category","displayName","uid","pluginName","service","actionProvider","registerMany"],"mappings":"AAgBA,MAAMA,iBAAiB,CAACC,WAAAA,GAAAA;AACtB,IAAA,MAAMC,YAAeD,GAAAA,WAAAA,CAAYE,QAAQ,CAACC,WAAW,EAAA;IACrD,IAAID,QAAAA;IAEJ,IAAIE,UAAAA;IACJ,IAAI;AACFA,QAAAA,UAAAA,GAAaC,QAAQC,OAAO,CAAC,CAAC,uBAAuB,EAAEL,YAAc,CAAA,CAAA,CAAA;AACvE,KAAA,CAAE,OAAOM,KAAO,EAAA;QACd,IACEA,KAAAA,KAAU,IACV,IAAA,OAAOA,KAAU,KAAA,QAAA,IACjB,UAAUA,KACVA,IAAAA,KAAAA,CAAMC,IAAI,KAAK,kBACf,EAAA;YACAJ,UAAaH,GAAAA,YAAAA;SACR,MAAA;YACL,MAAMM,KAAAA;AACR;AACF;IAEA,IAAI;AACFL,QAAAA,QAAAA,GAAWG,OAAQD,CAAAA,UAAAA,CAAAA;AACrB,KAAA,CAAE,OAAOK,GAAK,EAAA;QACZ,MAAMC,QAAAA,GAAW,IAAIC,KAAM,CAAA,CAAC,+BAA+B,EAAEV,YAAAA,CAAa,EAAE,CAAC,CAAA;AAC7E,QAAA,IAAIQ,eAAeE,KAAO,EAAA;YACxBD,QAASE,CAAAA,KAAK,GAAGH,GAAAA,CAAIG,KAAK;AAC5B;QACA,MAAMF,QAAAA;AACR;AAEA,IAAA,OAAOR,SAASW,IAAI,CAACb,YAAYc,eAAe,EAAEd,YAAYe,QAAQ,CAAA;AACxE,CAAA;AAEaC,MAAAA,SAAAA,GAAY,OAAO,EAAEC,MAAM,EAA2B,GAAA;AACjE,IAAA,MAAMjB,WAA2BiB,GAAAA,MAAAA,CAAOC,MAAM,CAACC,GAAG,CAAC,eAAA,CAAA;AACnDF,IAAAA,MAAAA,CAAOG,MAAM,CAAC,OAASlB,CAAAA,CAAAA,QAAQ,GAAGH,cAAeC,CAAAA,WAAAA,CAAAA;;AAGjD,IAAA,MAAMqB,OAAU,GAAA;AACd,QAAA;YACEC,OAAS,EAAA,UAAA;YACTC,QAAU,EAAA,OAAA;YACVC,WAAa,EAAA,gCAAA;YACbC,GAAK,EAAA,eAAA;YACLC,UAAY,EAAA;AACd;AACD,KAAA;AAED,IAAA,MAAMT,OAAOU,OAAO,CAAC,qBAAqBC,cAAc,CAACC,YAAY,CAACR,OAAAA,CAAAA;AACxE;;;;"}
@@ -1 +1 @@
1
- {"version":3,"file":"email.js","sources":["../../../server/src/controllers/email.ts"],"sourcesContent":["import { pick } from 'lodash/fp';\nimport { errors } from '@strapi/utils';\n\nimport type Koa from 'koa';\nimport type {} from 'koa-body';\nimport type { EmailConfig, SendOptions } from '../types';\n\nconst { ApplicationError } = errors;\n\n/**\n * Email.js controller\n *\n * @description: A set of functions called \"actions\" of the `email` plugin.\n */\nconst emailController = {\n async send(ctx: Koa.Context) {\n const options = ctx.request.body as SendOptions;\n\n try {\n await strapi.plugin('email').service('email').send(options);\n } catch (error) {\n if (error instanceof Error) {\n if ('statusCode' in error && error.statusCode === 400) {\n throw new ApplicationError(error.message);\n } else {\n throw new Error(`Couldn't send email: ${error.message}.`);\n }\n }\n }\n\n // Send 200 `ok`\n ctx.send({});\n },\n\n async test(ctx: Koa.Context) {\n const { to } = ctx.request.body as Pick<SendOptions, 'to'>;\n\n if (!to) {\n throw new ApplicationError('No recipient(s) are given');\n }\n\n const email: SendOptions = {\n to,\n subject: `Strapi test mail to: ${to}`,\n text: `Great! You have correctly configured the Strapi email plugin with the ${strapi.config.get(\n 'plugin::email.provider'\n )} provider. \\r\\nFor documentation on how to use the email plugin checkout: https://docs.strapi.io/developer-docs/latest/plugins/email.html`,\n };\n\n try {\n await strapi.plugin('email').service('email').send(email);\n } catch (error) {\n if (error instanceof Error) {\n if ('statusCode' in error && error.statusCode === 400) {\n throw new ApplicationError(error.message);\n } else {\n throw new Error(`Couldn't send test email: ${error.message}.`);\n }\n }\n }\n\n // Send 200 `ok`\n ctx.send({});\n },\n\n async getSettings(ctx: Koa.Context) {\n const config: EmailConfig = strapi.plugin('email').service('email').getProviderSettings();\n\n ctx.send({\n config: pick(\n ['provider', 'settings.defaultFrom', 'settings.defaultReplyTo', 'settings.testAddress'],\n config\n ),\n });\n },\n};\n\nexport default emailController;\n"],"names":["ApplicationError","errors","emailController","send","ctx","options","request","body","strapi","plugin","service","error","Error","statusCode","message","test","to","email","subject","text","config","get","getSettings","getProviderSettings","pick"],"mappings":";;;;;AAOA,MAAM,EAAEA,gBAAgB,EAAE,GAAGC,YAAAA;AAE7B;;;;AAIC,UACKC,eAAkB,GAAA;AACtB,IAAA,MAAMC,MAAKC,GAAgB,EAAA;AACzB,QAAA,MAAMC,OAAUD,GAAAA,GAAAA,CAAIE,OAAO,CAACC,IAAI;QAEhC,IAAI;YACF,MAAMC,MAAAA,CAAOC,MAAM,CAAC,OAAA,CAAA,CAASC,OAAO,CAAC,OAAA,CAAA,CAASP,IAAI,CAACE,OAAAA,CAAAA;AACrD,SAAA,CAAE,OAAOM,KAAO,EAAA;AACd,YAAA,IAAIA,iBAAiBC,KAAO,EAAA;AAC1B,gBAAA,IAAI,YAAgBD,IAAAA,KAAAA,IAASA,KAAME,CAAAA,UAAU,KAAK,GAAK,EAAA;oBACrD,MAAM,IAAIb,gBAAiBW,CAAAA,KAAAA,CAAMG,OAAO,CAAA;iBACnC,MAAA;oBACL,MAAM,IAAIF,MAAM,CAAC,qBAAqB,EAAED,KAAMG,CAAAA,OAAO,CAAC,CAAC,CAAC,CAAA;AAC1D;AACF;AACF;;QAGAV,GAAID,CAAAA,IAAI,CAAC,EAAC,CAAA;AACZ,KAAA;AAEA,IAAA,MAAMY,MAAKX,GAAgB,EAAA;AACzB,QAAA,MAAM,EAAEY,EAAE,EAAE,GAAGZ,GAAIE,CAAAA,OAAO,CAACC,IAAI;AAE/B,QAAA,IAAI,CAACS,EAAI,EAAA;AACP,YAAA,MAAM,IAAIhB,gBAAiB,CAAA,2BAAA,CAAA;AAC7B;AAEA,QAAA,MAAMiB,KAAqB,GAAA;AACzBD,YAAAA,EAAAA;AACAE,YAAAA,OAAAA,EAAS,CAAC,qBAAqB,EAAEF,EAAAA,CAAG,CAAC;YACrCG,IAAM,EAAA,CAAC,sEAAsE,EAAEX,MAAOY,CAAAA,MAAM,CAACC,GAAG,CAC9F,wBACA,CAAA,CAAA,yIAAyI;AAC7I,SAAA;QAEA,IAAI;YACF,MAAMb,MAAAA,CAAOC,MAAM,CAAC,OAAA,CAAA,CAASC,OAAO,CAAC,OAAA,CAAA,CAASP,IAAI,CAACc,KAAAA,CAAAA;AACrD,SAAA,CAAE,OAAON,KAAO,EAAA;AACd,YAAA,IAAIA,iBAAiBC,KAAO,EAAA;AAC1B,gBAAA,IAAI,YAAgBD,IAAAA,KAAAA,IAASA,KAAME,CAAAA,UAAU,KAAK,GAAK,EAAA;oBACrD,MAAM,IAAIb,gBAAiBW,CAAAA,KAAAA,CAAMG,OAAO,CAAA;iBACnC,MAAA;oBACL,MAAM,IAAIF,MAAM,CAAC,0BAA0B,EAAED,KAAMG,CAAAA,OAAO,CAAC,CAAC,CAAC,CAAA;AAC/D;AACF;AACF;;QAGAV,GAAID,CAAAA,IAAI,CAAC,EAAC,CAAA;AACZ,KAAA;AAEA,IAAA,MAAMmB,aAAYlB,GAAgB,EAAA;QAChC,MAAMgB,MAAAA,GAAsBZ,OAAOC,MAAM,CAAC,SAASC,OAAO,CAAC,SAASa,mBAAmB,EAAA;AAEvFnB,QAAAA,GAAAA,CAAID,IAAI,CAAC;AACPiB,YAAAA,MAAAA,EAAQI,OACN,CAAA;AAAC,gBAAA,UAAA;AAAY,gBAAA,sBAAA;AAAwB,gBAAA,yBAAA;AAA2B,gBAAA;aAAuB,EACvFJ,MAAAA;AAEJ,SAAA,CAAA;AACF;AACF;;;;"}
1
+ {"version":3,"file":"email.js","sources":["../../../server/src/controllers/email.ts"],"sourcesContent":["import { pick } from 'lodash/fp';\nimport { errors } from '@strapi/utils';\n\nimport type Koa from 'koa';\nimport type {} from 'koa-body';\nimport type { EmailConfig, SendOptions } from '../types';\n\nconst { ApplicationError } = errors;\n\n/**\n * Email.js controller\n *\n * @description: A set of functions called \"actions\" of the `email` plugin.\n */\nconst emailController = {\n async send(ctx: Koa.Context) {\n const options = ctx.request.body as SendOptions;\n\n try {\n await strapi.plugin('email').service('email').send(options);\n } catch (error) {\n if (error instanceof Error) {\n if ('statusCode' in error && error.statusCode === 400) {\n throw new ApplicationError(error.message);\n } else {\n throw new Error(`Couldn't send email: ${error.message}.`);\n }\n }\n }\n\n // Send 200 `ok`\n ctx.send({});\n },\n\n async test(ctx: Koa.Context) {\n const { to } = ctx.request.body as Pick<SendOptions, 'to'>;\n\n if (!to) {\n throw new ApplicationError('No recipient(s) are given');\n }\n\n const email: SendOptions = {\n to,\n subject: `Strapi test mail to: ${to}`,\n text: `Great! You have correctly configured the Strapi email plugin with the ${strapi.config.get(\n 'plugin::email.provider'\n )} provider. \\r\\nFor documentation on how to use the email plugin checkout: https://docs.strapi.io/developer-docs/latest/plugins/email.html`,\n };\n\n try {\n await strapi.plugin('email').service('email').send(email);\n } catch (error) {\n if (error instanceof Error) {\n if ('statusCode' in error && error.statusCode === 400) {\n throw new ApplicationError(error.message);\n } else {\n throw new Error(`Couldn't send test email: ${error.message}.`);\n }\n }\n }\n\n // Send 200 `ok`\n ctx.send({});\n },\n\n async getSettings(ctx: Koa.Context) {\n const config: EmailConfig = strapi.plugin('email').service('email').getProviderSettings();\n\n ctx.send({\n config: pick(\n ['provider', 'settings.defaultFrom', 'settings.defaultReplyTo', 'settings.testAddress'],\n config\n ),\n });\n },\n};\n\nexport default emailController;\n"],"names":["ApplicationError","errors","emailController","send","ctx","options","request","body","strapi","plugin","service","error","Error","statusCode","message","test","to","email","subject","text","config","get","getSettings","getProviderSettings","pick"],"mappings":";;;;;AAOA,MAAM,EAAEA,gBAAgB,EAAE,GAAGC,YAAAA;AAE7B;;;;AAIC,UACKC,eAAkB,GAAA;AACtB,IAAA,MAAMC,MAAKC,GAAgB,EAAA;AACzB,QAAA,MAAMC,OAAUD,GAAAA,GAAAA,CAAIE,OAAO,CAACC,IAAI;QAEhC,IAAI;YACF,MAAMC,MAAAA,CAAOC,MAAM,CAAC,OAAA,CAAA,CAASC,OAAO,CAAC,OAAA,CAAA,CAASP,IAAI,CAACE,OAAAA,CAAAA;AACrD,SAAA,CAAE,OAAOM,KAAO,EAAA;AACd,YAAA,IAAIA,iBAAiBC,KAAO,EAAA;AAC1B,gBAAA,IAAI,YAAgBD,IAAAA,KAAAA,IAASA,KAAME,CAAAA,UAAU,KAAK,GAAK,EAAA;oBACrD,MAAM,IAAIb,gBAAiBW,CAAAA,KAAAA,CAAMG,OAAO,CAAA;iBACnC,MAAA;oBACL,MAAM,IAAIF,MAAM,CAAC,qBAAqB,EAAED,KAAMG,CAAAA,OAAO,CAAC,CAAC,CAAC,CAAA;AAC1D;AACF;AACF;;QAGAV,GAAID,CAAAA,IAAI,CAAC,EAAC,CAAA;AACZ,KAAA;AAEA,IAAA,MAAMY,MAAKX,GAAgB,EAAA;AACzB,QAAA,MAAM,EAAEY,EAAE,EAAE,GAAGZ,GAAIE,CAAAA,OAAO,CAACC,IAAI;AAE/B,QAAA,IAAI,CAACS,EAAI,EAAA;AACP,YAAA,MAAM,IAAIhB,gBAAiB,CAAA,2BAAA,CAAA;AAC7B;AAEA,QAAA,MAAMiB,KAAqB,GAAA;AACzBD,YAAAA,EAAAA;YACAE,OAAS,EAAA,CAAC,qBAAqB,EAAEF,EAAI,CAAA,CAAA;YACrCG,IAAM,EAAA,CAAC,sEAAsE,EAAEX,MAAOY,CAAAA,MAAM,CAACC,GAAG,CAC9F,wBACA,CAAA,CAAA,yIAAyI;AAC7I,SAAA;QAEA,IAAI;YACF,MAAMb,MAAAA,CAAOC,MAAM,CAAC,OAAA,CAAA,CAASC,OAAO,CAAC,OAAA,CAAA,CAASP,IAAI,CAACc,KAAAA,CAAAA;AACrD,SAAA,CAAE,OAAON,KAAO,EAAA;AACd,YAAA,IAAIA,iBAAiBC,KAAO,EAAA;AAC1B,gBAAA,IAAI,YAAgBD,IAAAA,KAAAA,IAASA,KAAME,CAAAA,UAAU,KAAK,GAAK,EAAA;oBACrD,MAAM,IAAIb,gBAAiBW,CAAAA,KAAAA,CAAMG,OAAO,CAAA;iBACnC,MAAA;oBACL,MAAM,IAAIF,MAAM,CAAC,0BAA0B,EAAED,KAAMG,CAAAA,OAAO,CAAC,CAAC,CAAC,CAAA;AAC/D;AACF;AACF;;QAGAV,GAAID,CAAAA,IAAI,CAAC,EAAC,CAAA;AACZ,KAAA;AAEA,IAAA,MAAMmB,aAAYlB,GAAgB,EAAA;QAChC,MAAMgB,MAAAA,GAAsBZ,OAAOC,MAAM,CAAC,SAASC,OAAO,CAAC,SAASa,mBAAmB,EAAA;AAEvFnB,QAAAA,GAAAA,CAAID,IAAI,CAAC;AACPiB,YAAAA,MAAAA,EAAQI,OACN,CAAA;AAAC,gBAAA,UAAA;AAAY,gBAAA,sBAAA;AAAwB,gBAAA,yBAAA;AAA2B,gBAAA;aAAuB,EACvFJ,MAAAA;AAEJ,SAAA,CAAA;AACF;AACF;;;;"}
@@ -1 +1 @@
1
- {"version":3,"file":"email.mjs","sources":["../../../server/src/controllers/email.ts"],"sourcesContent":["import { pick } from 'lodash/fp';\nimport { errors } from '@strapi/utils';\n\nimport type Koa from 'koa';\nimport type {} from 'koa-body';\nimport type { EmailConfig, SendOptions } from '../types';\n\nconst { ApplicationError } = errors;\n\n/**\n * Email.js controller\n *\n * @description: A set of functions called \"actions\" of the `email` plugin.\n */\nconst emailController = {\n async send(ctx: Koa.Context) {\n const options = ctx.request.body as SendOptions;\n\n try {\n await strapi.plugin('email').service('email').send(options);\n } catch (error) {\n if (error instanceof Error) {\n if ('statusCode' in error && error.statusCode === 400) {\n throw new ApplicationError(error.message);\n } else {\n throw new Error(`Couldn't send email: ${error.message}.`);\n }\n }\n }\n\n // Send 200 `ok`\n ctx.send({});\n },\n\n async test(ctx: Koa.Context) {\n const { to } = ctx.request.body as Pick<SendOptions, 'to'>;\n\n if (!to) {\n throw new ApplicationError('No recipient(s) are given');\n }\n\n const email: SendOptions = {\n to,\n subject: `Strapi test mail to: ${to}`,\n text: `Great! You have correctly configured the Strapi email plugin with the ${strapi.config.get(\n 'plugin::email.provider'\n )} provider. \\r\\nFor documentation on how to use the email plugin checkout: https://docs.strapi.io/developer-docs/latest/plugins/email.html`,\n };\n\n try {\n await strapi.plugin('email').service('email').send(email);\n } catch (error) {\n if (error instanceof Error) {\n if ('statusCode' in error && error.statusCode === 400) {\n throw new ApplicationError(error.message);\n } else {\n throw new Error(`Couldn't send test email: ${error.message}.`);\n }\n }\n }\n\n // Send 200 `ok`\n ctx.send({});\n },\n\n async getSettings(ctx: Koa.Context) {\n const config: EmailConfig = strapi.plugin('email').service('email').getProviderSettings();\n\n ctx.send({\n config: pick(\n ['provider', 'settings.defaultFrom', 'settings.defaultReplyTo', 'settings.testAddress'],\n config\n ),\n });\n },\n};\n\nexport default emailController;\n"],"names":["ApplicationError","errors","emailController","send","ctx","options","request","body","strapi","plugin","service","error","Error","statusCode","message","test","to","email","subject","text","config","get","getSettings","getProviderSettings","pick"],"mappings":";;;AAOA,MAAM,EAAEA,gBAAgB,EAAE,GAAGC,MAAAA;AAE7B;;;;AAIC,UACKC,eAAkB,GAAA;AACtB,IAAA,MAAMC,MAAKC,GAAgB,EAAA;AACzB,QAAA,MAAMC,OAAUD,GAAAA,GAAAA,CAAIE,OAAO,CAACC,IAAI;QAEhC,IAAI;YACF,MAAMC,MAAAA,CAAOC,MAAM,CAAC,OAAA,CAAA,CAASC,OAAO,CAAC,OAAA,CAAA,CAASP,IAAI,CAACE,OAAAA,CAAAA;AACrD,SAAA,CAAE,OAAOM,KAAO,EAAA;AACd,YAAA,IAAIA,iBAAiBC,KAAO,EAAA;AAC1B,gBAAA,IAAI,YAAgBD,IAAAA,KAAAA,IAASA,KAAME,CAAAA,UAAU,KAAK,GAAK,EAAA;oBACrD,MAAM,IAAIb,gBAAiBW,CAAAA,KAAAA,CAAMG,OAAO,CAAA;iBACnC,MAAA;oBACL,MAAM,IAAIF,MAAM,CAAC,qBAAqB,EAAED,KAAMG,CAAAA,OAAO,CAAC,CAAC,CAAC,CAAA;AAC1D;AACF;AACF;;QAGAV,GAAID,CAAAA,IAAI,CAAC,EAAC,CAAA;AACZ,KAAA;AAEA,IAAA,MAAMY,MAAKX,GAAgB,EAAA;AACzB,QAAA,MAAM,EAAEY,EAAE,EAAE,GAAGZ,GAAIE,CAAAA,OAAO,CAACC,IAAI;AAE/B,QAAA,IAAI,CAACS,EAAI,EAAA;AACP,YAAA,MAAM,IAAIhB,gBAAiB,CAAA,2BAAA,CAAA;AAC7B;AAEA,QAAA,MAAMiB,KAAqB,GAAA;AACzBD,YAAAA,EAAAA;AACAE,YAAAA,OAAAA,EAAS,CAAC,qBAAqB,EAAEF,EAAAA,CAAG,CAAC;YACrCG,IAAM,EAAA,CAAC,sEAAsE,EAAEX,MAAOY,CAAAA,MAAM,CAACC,GAAG,CAC9F,wBACA,CAAA,CAAA,yIAAyI;AAC7I,SAAA;QAEA,IAAI;YACF,MAAMb,MAAAA,CAAOC,MAAM,CAAC,OAAA,CAAA,CAASC,OAAO,CAAC,OAAA,CAAA,CAASP,IAAI,CAACc,KAAAA,CAAAA;AACrD,SAAA,CAAE,OAAON,KAAO,EAAA;AACd,YAAA,IAAIA,iBAAiBC,KAAO,EAAA;AAC1B,gBAAA,IAAI,YAAgBD,IAAAA,KAAAA,IAASA,KAAME,CAAAA,UAAU,KAAK,GAAK,EAAA;oBACrD,MAAM,IAAIb,gBAAiBW,CAAAA,KAAAA,CAAMG,OAAO,CAAA;iBACnC,MAAA;oBACL,MAAM,IAAIF,MAAM,CAAC,0BAA0B,EAAED,KAAMG,CAAAA,OAAO,CAAC,CAAC,CAAC,CAAA;AAC/D;AACF;AACF;;QAGAV,GAAID,CAAAA,IAAI,CAAC,EAAC,CAAA;AACZ,KAAA;AAEA,IAAA,MAAMmB,aAAYlB,GAAgB,EAAA;QAChC,MAAMgB,MAAAA,GAAsBZ,OAAOC,MAAM,CAAC,SAASC,OAAO,CAAC,SAASa,mBAAmB,EAAA;AAEvFnB,QAAAA,GAAAA,CAAID,IAAI,CAAC;AACPiB,YAAAA,MAAAA,EAAQI,IACN,CAAA;AAAC,gBAAA,UAAA;AAAY,gBAAA,sBAAA;AAAwB,gBAAA,yBAAA;AAA2B,gBAAA;aAAuB,EACvFJ,MAAAA;AAEJ,SAAA,CAAA;AACF;AACF;;;;"}
1
+ {"version":3,"file":"email.mjs","sources":["../../../server/src/controllers/email.ts"],"sourcesContent":["import { pick } from 'lodash/fp';\nimport { errors } from '@strapi/utils';\n\nimport type Koa from 'koa';\nimport type {} from 'koa-body';\nimport type { EmailConfig, SendOptions } from '../types';\n\nconst { ApplicationError } = errors;\n\n/**\n * Email.js controller\n *\n * @description: A set of functions called \"actions\" of the `email` plugin.\n */\nconst emailController = {\n async send(ctx: Koa.Context) {\n const options = ctx.request.body as SendOptions;\n\n try {\n await strapi.plugin('email').service('email').send(options);\n } catch (error) {\n if (error instanceof Error) {\n if ('statusCode' in error && error.statusCode === 400) {\n throw new ApplicationError(error.message);\n } else {\n throw new Error(`Couldn't send email: ${error.message}.`);\n }\n }\n }\n\n // Send 200 `ok`\n ctx.send({});\n },\n\n async test(ctx: Koa.Context) {\n const { to } = ctx.request.body as Pick<SendOptions, 'to'>;\n\n if (!to) {\n throw new ApplicationError('No recipient(s) are given');\n }\n\n const email: SendOptions = {\n to,\n subject: `Strapi test mail to: ${to}`,\n text: `Great! You have correctly configured the Strapi email plugin with the ${strapi.config.get(\n 'plugin::email.provider'\n )} provider. \\r\\nFor documentation on how to use the email plugin checkout: https://docs.strapi.io/developer-docs/latest/plugins/email.html`,\n };\n\n try {\n await strapi.plugin('email').service('email').send(email);\n } catch (error) {\n if (error instanceof Error) {\n if ('statusCode' in error && error.statusCode === 400) {\n throw new ApplicationError(error.message);\n } else {\n throw new Error(`Couldn't send test email: ${error.message}.`);\n }\n }\n }\n\n // Send 200 `ok`\n ctx.send({});\n },\n\n async getSettings(ctx: Koa.Context) {\n const config: EmailConfig = strapi.plugin('email').service('email').getProviderSettings();\n\n ctx.send({\n config: pick(\n ['provider', 'settings.defaultFrom', 'settings.defaultReplyTo', 'settings.testAddress'],\n config\n ),\n });\n },\n};\n\nexport default emailController;\n"],"names":["ApplicationError","errors","emailController","send","ctx","options","request","body","strapi","plugin","service","error","Error","statusCode","message","test","to","email","subject","text","config","get","getSettings","getProviderSettings","pick"],"mappings":";;;AAOA,MAAM,EAAEA,gBAAgB,EAAE,GAAGC,MAAAA;AAE7B;;;;AAIC,UACKC,eAAkB,GAAA;AACtB,IAAA,MAAMC,MAAKC,GAAgB,EAAA;AACzB,QAAA,MAAMC,OAAUD,GAAAA,GAAAA,CAAIE,OAAO,CAACC,IAAI;QAEhC,IAAI;YACF,MAAMC,MAAAA,CAAOC,MAAM,CAAC,OAAA,CAAA,CAASC,OAAO,CAAC,OAAA,CAAA,CAASP,IAAI,CAACE,OAAAA,CAAAA;AACrD,SAAA,CAAE,OAAOM,KAAO,EAAA;AACd,YAAA,IAAIA,iBAAiBC,KAAO,EAAA;AAC1B,gBAAA,IAAI,YAAgBD,IAAAA,KAAAA,IAASA,KAAME,CAAAA,UAAU,KAAK,GAAK,EAAA;oBACrD,MAAM,IAAIb,gBAAiBW,CAAAA,KAAAA,CAAMG,OAAO,CAAA;iBACnC,MAAA;oBACL,MAAM,IAAIF,MAAM,CAAC,qBAAqB,EAAED,KAAMG,CAAAA,OAAO,CAAC,CAAC,CAAC,CAAA;AAC1D;AACF;AACF;;QAGAV,GAAID,CAAAA,IAAI,CAAC,EAAC,CAAA;AACZ,KAAA;AAEA,IAAA,MAAMY,MAAKX,GAAgB,EAAA;AACzB,QAAA,MAAM,EAAEY,EAAE,EAAE,GAAGZ,GAAIE,CAAAA,OAAO,CAACC,IAAI;AAE/B,QAAA,IAAI,CAACS,EAAI,EAAA;AACP,YAAA,MAAM,IAAIhB,gBAAiB,CAAA,2BAAA,CAAA;AAC7B;AAEA,QAAA,MAAMiB,KAAqB,GAAA;AACzBD,YAAAA,EAAAA;YACAE,OAAS,EAAA,CAAC,qBAAqB,EAAEF,EAAI,CAAA,CAAA;YACrCG,IAAM,EAAA,CAAC,sEAAsE,EAAEX,MAAOY,CAAAA,MAAM,CAACC,GAAG,CAC9F,wBACA,CAAA,CAAA,yIAAyI;AAC7I,SAAA;QAEA,IAAI;YACF,MAAMb,MAAAA,CAAOC,MAAM,CAAC,OAAA,CAAA,CAASC,OAAO,CAAC,OAAA,CAAA,CAASP,IAAI,CAACc,KAAAA,CAAAA;AACrD,SAAA,CAAE,OAAON,KAAO,EAAA;AACd,YAAA,IAAIA,iBAAiBC,KAAO,EAAA;AAC1B,gBAAA,IAAI,YAAgBD,IAAAA,KAAAA,IAASA,KAAME,CAAAA,UAAU,KAAK,GAAK,EAAA;oBACrD,MAAM,IAAIb,gBAAiBW,CAAAA,KAAAA,CAAMG,OAAO,CAAA;iBACnC,MAAA;oBACL,MAAM,IAAIF,MAAM,CAAC,0BAA0B,EAAED,KAAMG,CAAAA,OAAO,CAAC,CAAC,CAAC,CAAA;AAC/D;AACF;AACF;;QAGAV,GAAID,CAAAA,IAAI,CAAC,EAAC,CAAA;AACZ,KAAA;AAEA,IAAA,MAAMmB,aAAYlB,GAAgB,EAAA;QAChC,MAAMgB,MAAAA,GAAsBZ,OAAOC,MAAM,CAAC,SAASC,OAAO,CAAC,SAASa,mBAAmB,EAAA;AAEvFnB,QAAAA,GAAAA,CAAID,IAAI,CAAC;AACPiB,YAAAA,MAAAA,EAAQI,IACN,CAAA;AAAC,gBAAA,UAAA;AAAY,gBAAA,sBAAA;AAAwB,gBAAA,yBAAA;AAA2B,gBAAA;aAAuB,EACvFJ,MAAAA;AAEJ,SAAA,CAAA;AACF;AACF;;;;"}
@@ -1 +1 @@
1
- {"version":3,"file":"rateLimit.js","sources":["../../../server/src/middlewares/rateLimit.ts"],"sourcesContent":["import type { Context, Next } from 'koa';\nimport utils from '@strapi/utils';\nimport { isString, get } from 'lodash/fp';\nimport type { Core } from '@strapi/types';\n\nconst { RateLimitError } = utils.errors;\n\nexport default (config: any, { strapi }: { strapi: Core.Strapi }) =>\n async (ctx: Context, next: Next) => {\n const pluginConfig = strapi.config.get('plugin::email') as any;\n const rateLimitConfig = {\n enabled: true,\n ...(pluginConfig.ratelimit || {}),\n };\n\n if (rateLimitConfig.enabled === true) {\n // TODO: TS - Do the dynamic import\n // eslint-disable-next-line @typescript-eslint/no-var-requires\n const rateLimit = require('koa2-ratelimit').RateLimit;\n\n const requestEmail = get('request.body.email')(ctx);\n const userEmail = isString(requestEmail) ? requestEmail.toLowerCase() : 'unknownEmail';\n\n const loadConfig = {\n interval: { min: 5 },\n max: 5,\n prefixKey: `${userEmail}`,\n handler() {\n throw new RateLimitError();\n },\n ...rateLimitConfig,\n ...config,\n };\n\n return rateLimit.middleware(loadConfig)(ctx, next);\n }\n\n return next();\n };\n"],"names":["RateLimitError","utils","errors","config","strapi","ctx","next","pluginConfig","get","rateLimitConfig","enabled","ratelimit","rateLimit","require","RateLimit","requestEmail","userEmail","isString","toLowerCase","loadConfig","interval","min","max","prefixKey","handler","middleware"],"mappings":";;;;;AAKA,MAAM,EAAEA,cAAc,EAAE,GAAGC,MAAMC,MAAM;AAEvC,gBAAe,CAAA,CAACC,MAAa,EAAA,EAAEC,MAAM,EAA2B,GAC9D,OAAOC,GAAcC,EAAAA,IAAAA,GAAAA;AACnB,QAAA,MAAMC,YAAeH,GAAAA,MAAAA,CAAOD,MAAM,CAACK,GAAG,CAAC,eAAA,CAAA;AACvC,QAAA,MAAMC,eAAkB,GAAA;YACtBC,OAAS,EAAA,IAAA;AACT,YAAA,GAAIH,YAAaI,CAAAA,SAAS,IAAI;AAChC,SAAA;QAEA,IAAIF,eAAAA,CAAgBC,OAAO,KAAK,IAAM,EAAA;;;YAGpC,MAAME,SAAAA,GAAYC,OAAQ,CAAA,gBAAA,CAAA,CAAkBC,SAAS;YAErD,MAAMC,YAAAA,GAAeP,OAAI,oBAAsBH,CAAAA,CAAAA,GAAAA,CAAAA;AAC/C,YAAA,MAAMW,SAAYC,GAAAA,WAAAA,CAASF,YAAgBA,CAAAA,GAAAA,YAAAA,CAAaG,WAAW,EAAK,GAAA,cAAA;AAExE,YAAA,MAAMC,UAAa,GAAA;gBACjBC,QAAU,EAAA;oBAAEC,GAAK,EAAA;AAAE,iBAAA;gBACnBC,GAAK,EAAA,CAAA;gBACLC,SAAW,EAAA,CAAC,EAAEP,SAAAA,CAAU,CAAC;AACzBQ,gBAAAA,OAAAA,CAAAA,GAAAA;AACE,oBAAA,MAAM,IAAIxB,cAAAA,EAAAA;AACZ,iBAAA;AACA,gBAAA,GAAGS,eAAe;AAClB,gBAAA,GAAGN;AACL,aAAA;AAEA,YAAA,OAAOS,SAAUa,CAAAA,UAAU,CAACN,UAAAA,CAAAA,CAAYd,GAAKC,EAAAA,IAAAA,CAAAA;AAC/C;QAEA,OAAOA,IAAAA,EAAAA;AACT,KAAA;;;;"}
1
+ {"version":3,"file":"rateLimit.js","sources":["../../../server/src/middlewares/rateLimit.ts"],"sourcesContent":["import type { Context, Next } from 'koa';\nimport utils from '@strapi/utils';\nimport { isString, get } from 'lodash/fp';\nimport type { Core } from '@strapi/types';\n\nconst { RateLimitError } = utils.errors;\n\nexport default (config: any, { strapi }: { strapi: Core.Strapi }) =>\n async (ctx: Context, next: Next) => {\n const pluginConfig = strapi.config.get('plugin::email') as any;\n const rateLimitConfig = {\n enabled: true,\n ...(pluginConfig.ratelimit || {}),\n };\n\n if (rateLimitConfig.enabled === true) {\n // TODO: TS - Do the dynamic import\n // eslint-disable-next-line @typescript-eslint/no-var-requires\n const rateLimit = require('koa2-ratelimit').RateLimit;\n\n const requestEmail = get('request.body.email')(ctx);\n const userEmail = isString(requestEmail) ? requestEmail.toLowerCase() : 'unknownEmail';\n\n const loadConfig = {\n interval: { min: 5 },\n max: 5,\n prefixKey: `${userEmail}`,\n handler() {\n throw new RateLimitError();\n },\n ...rateLimitConfig,\n ...config,\n };\n\n return rateLimit.middleware(loadConfig)(ctx, next);\n }\n\n return next();\n };\n"],"names":["RateLimitError","utils","errors","config","strapi","ctx","next","pluginConfig","get","rateLimitConfig","enabled","ratelimit","rateLimit","require","RateLimit","requestEmail","userEmail","isString","toLowerCase","loadConfig","interval","min","max","prefixKey","handler","middleware"],"mappings":";;;;;AAKA,MAAM,EAAEA,cAAc,EAAE,GAAGC,MAAMC,MAAM;AAEvC,gBAAe,CAAA,CAACC,MAAa,EAAA,EAAEC,MAAM,EAA2B,GAC9D,OAAOC,GAAcC,EAAAA,IAAAA,GAAAA;AACnB,QAAA,MAAMC,YAAeH,GAAAA,MAAAA,CAAOD,MAAM,CAACK,GAAG,CAAC,eAAA,CAAA;AACvC,QAAA,MAAMC,eAAkB,GAAA;YACtBC,OAAS,EAAA,IAAA;AACT,YAAA,GAAIH,YAAaI,CAAAA,SAAS,IAAI;AAChC,SAAA;QAEA,IAAIF,eAAAA,CAAgBC,OAAO,KAAK,IAAM,EAAA;;;YAGpC,MAAME,SAAAA,GAAYC,OAAQ,CAAA,gBAAA,CAAA,CAAkBC,SAAS;YAErD,MAAMC,YAAAA,GAAeP,OAAI,oBAAsBH,CAAAA,CAAAA,GAAAA,CAAAA;AAC/C,YAAA,MAAMW,SAAYC,GAAAA,WAAAA,CAASF,YAAgBA,CAAAA,GAAAA,YAAAA,CAAaG,WAAW,EAAK,GAAA,cAAA;AAExE,YAAA,MAAMC,UAAa,GAAA;gBACjBC,QAAU,EAAA;oBAAEC,GAAK,EAAA;AAAE,iBAAA;gBACnBC,GAAK,EAAA,CAAA;AACLC,gBAAAA,SAAAA,EAAW,GAAGP,SAAW,CAAA,CAAA;AACzBQ,gBAAAA,OAAAA,CAAAA,GAAAA;AACE,oBAAA,MAAM,IAAIxB,cAAAA,EAAAA;AACZ,iBAAA;AACA,gBAAA,GAAGS,eAAe;AAClB,gBAAA,GAAGN;AACL,aAAA;AAEA,YAAA,OAAOS,SAAUa,CAAAA,UAAU,CAACN,UAAAA,CAAAA,CAAYd,GAAKC,EAAAA,IAAAA,CAAAA;AAC/C;QAEA,OAAOA,IAAAA,EAAAA;AACT,KAAA;;;;"}
@@ -1 +1 @@
1
- {"version":3,"file":"rateLimit.mjs","sources":["../../../server/src/middlewares/rateLimit.ts"],"sourcesContent":["import type { Context, Next } from 'koa';\nimport utils from '@strapi/utils';\nimport { isString, get } from 'lodash/fp';\nimport type { Core } from '@strapi/types';\n\nconst { RateLimitError } = utils.errors;\n\nexport default (config: any, { strapi }: { strapi: Core.Strapi }) =>\n async (ctx: Context, next: Next) => {\n const pluginConfig = strapi.config.get('plugin::email') as any;\n const rateLimitConfig = {\n enabled: true,\n ...(pluginConfig.ratelimit || {}),\n };\n\n if (rateLimitConfig.enabled === true) {\n // TODO: TS - Do the dynamic import\n // eslint-disable-next-line @typescript-eslint/no-var-requires\n const rateLimit = require('koa2-ratelimit').RateLimit;\n\n const requestEmail = get('request.body.email')(ctx);\n const userEmail = isString(requestEmail) ? requestEmail.toLowerCase() : 'unknownEmail';\n\n const loadConfig = {\n interval: { min: 5 },\n max: 5,\n prefixKey: `${userEmail}`,\n handler() {\n throw new RateLimitError();\n },\n ...rateLimitConfig,\n ...config,\n };\n\n return rateLimit.middleware(loadConfig)(ctx, next);\n }\n\n return next();\n };\n"],"names":["RateLimitError","utils","errors","config","strapi","ctx","next","pluginConfig","get","rateLimitConfig","enabled","ratelimit","rateLimit","require","RateLimit","requestEmail","userEmail","isString","toLowerCase","loadConfig","interval","min","max","prefixKey","handler","middleware"],"mappings":";;;AAKA,MAAM,EAAEA,cAAc,EAAE,GAAGC,MAAMC,MAAM;AAEvC,gBAAe,CAAA,CAACC,MAAa,EAAA,EAAEC,MAAM,EAA2B,GAC9D,OAAOC,GAAcC,EAAAA,IAAAA,GAAAA;AACnB,QAAA,MAAMC,YAAeH,GAAAA,MAAAA,CAAOD,MAAM,CAACK,GAAG,CAAC,eAAA,CAAA;AACvC,QAAA,MAAMC,eAAkB,GAAA;YACtBC,OAAS,EAAA,IAAA;AACT,YAAA,GAAIH,YAAaI,CAAAA,SAAS,IAAI;AAChC,SAAA;QAEA,IAAIF,eAAAA,CAAgBC,OAAO,KAAK,IAAM,EAAA;;;YAGpC,MAAME,SAAAA,GAAYC,OAAQ,CAAA,gBAAA,CAAA,CAAkBC,SAAS;YAErD,MAAMC,YAAAA,GAAeP,IAAI,oBAAsBH,CAAAA,CAAAA,GAAAA,CAAAA;AAC/C,YAAA,MAAMW,SAAYC,GAAAA,QAAAA,CAASF,YAAgBA,CAAAA,GAAAA,YAAAA,CAAaG,WAAW,EAAK,GAAA,cAAA;AAExE,YAAA,MAAMC,UAAa,GAAA;gBACjBC,QAAU,EAAA;oBAAEC,GAAK,EAAA;AAAE,iBAAA;gBACnBC,GAAK,EAAA,CAAA;gBACLC,SAAW,EAAA,CAAC,EAAEP,SAAAA,CAAU,CAAC;AACzBQ,gBAAAA,OAAAA,CAAAA,GAAAA;AACE,oBAAA,MAAM,IAAIxB,cAAAA,EAAAA;AACZ,iBAAA;AACA,gBAAA,GAAGS,eAAe;AAClB,gBAAA,GAAGN;AACL,aAAA;AAEA,YAAA,OAAOS,SAAUa,CAAAA,UAAU,CAACN,UAAAA,CAAAA,CAAYd,GAAKC,EAAAA,IAAAA,CAAAA;AAC/C;QAEA,OAAOA,IAAAA,EAAAA;AACT,KAAA;;;;"}
1
+ {"version":3,"file":"rateLimit.mjs","sources":["../../../server/src/middlewares/rateLimit.ts"],"sourcesContent":["import type { Context, Next } from 'koa';\nimport utils from '@strapi/utils';\nimport { isString, get } from 'lodash/fp';\nimport type { Core } from '@strapi/types';\n\nconst { RateLimitError } = utils.errors;\n\nexport default (config: any, { strapi }: { strapi: Core.Strapi }) =>\n async (ctx: Context, next: Next) => {\n const pluginConfig = strapi.config.get('plugin::email') as any;\n const rateLimitConfig = {\n enabled: true,\n ...(pluginConfig.ratelimit || {}),\n };\n\n if (rateLimitConfig.enabled === true) {\n // TODO: TS - Do the dynamic import\n // eslint-disable-next-line @typescript-eslint/no-var-requires\n const rateLimit = require('koa2-ratelimit').RateLimit;\n\n const requestEmail = get('request.body.email')(ctx);\n const userEmail = isString(requestEmail) ? requestEmail.toLowerCase() : 'unknownEmail';\n\n const loadConfig = {\n interval: { min: 5 },\n max: 5,\n prefixKey: `${userEmail}`,\n handler() {\n throw new RateLimitError();\n },\n ...rateLimitConfig,\n ...config,\n };\n\n return rateLimit.middleware(loadConfig)(ctx, next);\n }\n\n return next();\n };\n"],"names":["RateLimitError","utils","errors","config","strapi","ctx","next","pluginConfig","get","rateLimitConfig","enabled","ratelimit","rateLimit","require","RateLimit","requestEmail","userEmail","isString","toLowerCase","loadConfig","interval","min","max","prefixKey","handler","middleware"],"mappings":";;;AAKA,MAAM,EAAEA,cAAc,EAAE,GAAGC,MAAMC,MAAM;AAEvC,gBAAe,CAAA,CAACC,MAAa,EAAA,EAAEC,MAAM,EAA2B,GAC9D,OAAOC,GAAcC,EAAAA,IAAAA,GAAAA;AACnB,QAAA,MAAMC,YAAeH,GAAAA,MAAAA,CAAOD,MAAM,CAACK,GAAG,CAAC,eAAA,CAAA;AACvC,QAAA,MAAMC,eAAkB,GAAA;YACtBC,OAAS,EAAA,IAAA;AACT,YAAA,GAAIH,YAAaI,CAAAA,SAAS,IAAI;AAChC,SAAA;QAEA,IAAIF,eAAAA,CAAgBC,OAAO,KAAK,IAAM,EAAA;;;YAGpC,MAAME,SAAAA,GAAYC,OAAQ,CAAA,gBAAA,CAAA,CAAkBC,SAAS;YAErD,MAAMC,YAAAA,GAAeP,IAAI,oBAAsBH,CAAAA,CAAAA,GAAAA,CAAAA;AAC/C,YAAA,MAAMW,SAAYC,GAAAA,QAAAA,CAASF,YAAgBA,CAAAA,GAAAA,YAAAA,CAAaG,WAAW,EAAK,GAAA,cAAA;AAExE,YAAA,MAAMC,UAAa,GAAA;gBACjBC,QAAU,EAAA;oBAAEC,GAAK,EAAA;AAAE,iBAAA;gBACnBC,GAAK,EAAA,CAAA;AACLC,gBAAAA,SAAAA,EAAW,GAAGP,SAAW,CAAA,CAAA;AACzBQ,gBAAAA,OAAAA,CAAAA,GAAAA;AACE,oBAAA,MAAM,IAAIxB,cAAAA,EAAAA;AACZ,iBAAA;AACA,gBAAA,GAAGS,eAAe;AAClB,gBAAA,GAAGN;AACL,aAAA;AAEA,YAAA,OAAOS,SAAUa,CAAAA,UAAU,CAACN,UAAAA,CAAAA,CAAYd,GAAKC,EAAAA,IAAAA,CAAAA;AAC/C;QAEA,OAAOA,IAAAA,EAAAA;AACT,KAAA;;;;"}
@@ -1 +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;;;;"}
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,IAAO,CAAA,CAAA,CAAA,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;;;;"}
@@ -1 +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;;;;"}
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,IAAO,CAAA,CAAA,CAAA,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;;;;"}
@@ -1 +1 @@
1
- {"version":3,"file":"bootstrap.d.ts","sourceRoot":"","sources":["../../../server/src/bootstrap.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,eAAe,CAAC;AA6C1C,eAAO,MAAM,SAAS,eAAsB;IAAE,MAAM,EAAE,KAAK,MAAM,CAAA;CAAE,kBAgBlE,CAAC"}
1
+ {"version":3,"file":"bootstrap.d.ts","sourceRoot":"","sources":["../../../server/src/bootstrap.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,eAAe,CAAC;AAiD1C,eAAO,MAAM,SAAS,eAAsB;IAAE,MAAM,EAAE,KAAK,MAAM,CAAA;CAAE,kBAgBlE,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@strapi/email",
3
- "version": "0.0.0-next.f0bfcece1007e5aa527570187635aefc86db536e",
3
+ "version": "0.0.0-next.f0f36e3df4b18f167036dcbca529dcb933bf4e1d",
4
4
  "description": "Easily configure your Strapi application to send emails.",
5
5
  "repository": {
6
6
  "type": "git",
@@ -56,10 +56,10 @@
56
56
  "watch": "run -T rollup -c -w"
57
57
  },
58
58
  "dependencies": {
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.f0bfcece1007e5aa527570187635aefc86db536e",
62
- "@strapi/utils": "0.0.0-next.f0bfcece1007e5aa527570187635aefc86db536e",
59
+ "@strapi/design-system": "2.0.1",
60
+ "@strapi/icons": "2.0.1",
61
+ "@strapi/provider-email-sendmail": "0.0.0-next.f0f36e3df4b18f167036dcbca529dcb933bf4e1d",
62
+ "@strapi/utils": "0.0.0-next.f0f36e3df4b18f167036dcbca529dcb933bf4e1d",
63
63
  "koa2-ratelimit": "^1.1.3",
64
64
  "lodash": "4.17.21",
65
65
  "react-intl": "6.6.2",
@@ -68,9 +68,9 @@
68
68
  "zod": "3.25.67"
69
69
  },
70
70
  "devDependencies": {
71
- "@strapi/admin": "0.0.0-next.f0bfcece1007e5aa527570187635aefc86db536e",
72
- "@strapi/types": "0.0.0-next.f0bfcece1007e5aa527570187635aefc86db536e",
73
- "@testing-library/react": "15.0.7",
71
+ "@strapi/admin": "0.0.0-next.f0f36e3df4b18f167036dcbca529dcb933bf4e1d",
72
+ "@strapi/types": "0.0.0-next.f0f36e3df4b18f167036dcbca529dcb933bf4e1d",
73
+ "@testing-library/react": "16.3.0",
74
74
  "@types/koa": "2.13.4",
75
75
  "@types/lodash": "^4.14.191",
76
76
  "koa": "2.16.1",
@@ -90,7 +90,7 @@
90
90
  "styled-components": "^6.0.0"
91
91
  },
92
92
  "engines": {
93
- "node": ">=18.0.0 <=22.x.x",
93
+ "node": ">=20.0.0 <=24.x.x",
94
94
  "npm": ">=6.0.0"
95
95
  },
96
96
  "strapi": {