@strapi/email 0.0.0-next.ce84fada19d58a7dfbdd553035e6558f8befcba4 → 0.0.0-next.d23f1485e5669cca1cee1bf5f8168b6b8109b78f
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.
- package/dist/admin/constants.js +17 -0
- package/dist/admin/constants.js.map +1 -0
- package/dist/admin/constants.mjs +15 -0
- package/dist/admin/constants.mjs.map +1 -0
- package/dist/admin/index.js +91 -3
- package/dist/admin/index.js.map +1 -1
- package/dist/admin/index.mjs +86 -3
- package/dist/admin/index.mjs.map +1 -1
- package/dist/admin/pages/Settings.js +361 -0
- package/dist/admin/pages/Settings.js.map +1 -0
- package/dist/admin/pages/Settings.mjs +340 -0
- package/dist/admin/pages/Settings.mjs.map +1 -0
- package/dist/admin/translations/ar.json.js +6 -0
- package/dist/admin/translations/ar.json.js.map +1 -0
- package/dist/admin/translations/ar.json.mjs +4 -0
- package/dist/admin/translations/ar.json.mjs.map +1 -0
- package/dist/admin/translations/cs.json.js +6 -0
- package/dist/admin/translations/cs.json.js.map +1 -0
- package/dist/admin/translations/cs.json.mjs +4 -0
- package/dist/admin/translations/cs.json.mjs.map +1 -0
- package/dist/admin/translations/de.json.js +6 -0
- package/dist/admin/translations/de.json.js.map +1 -0
- package/dist/admin/translations/de.json.mjs +4 -0
- package/dist/admin/translations/de.json.mjs.map +1 -0
- package/dist/admin/translations/dk.json.js +27 -0
- package/dist/admin/translations/dk.json.js.map +1 -0
- package/dist/admin/translations/dk.json.mjs +25 -0
- package/dist/admin/translations/dk.json.mjs.map +1 -0
- package/dist/admin/translations/en.json.js +32 -0
- package/dist/admin/translations/en.json.js.map +1 -0
- package/dist/admin/translations/en.json.mjs +27 -0
- package/dist/admin/translations/en.json.mjs.map +1 -0
- package/dist/admin/translations/es.json.js +27 -0
- package/dist/admin/translations/es.json.js.map +1 -0
- package/dist/admin/translations/es.json.mjs +25 -0
- package/dist/admin/translations/es.json.mjs.map +1 -0
- package/dist/admin/translations/fr.json.js +6 -0
- package/dist/admin/translations/fr.json.js.map +1 -0
- package/dist/admin/translations/fr.json.mjs +4 -0
- package/dist/admin/translations/fr.json.mjs.map +1 -0
- package/dist/admin/translations/id.json.js +6 -0
- package/dist/admin/translations/id.json.js.map +1 -0
- package/dist/admin/translations/id.json.mjs +4 -0
- package/dist/admin/translations/id.json.mjs.map +1 -0
- package/dist/admin/translations/it.json.js +6 -0
- package/dist/admin/translations/it.json.js.map +1 -0
- package/dist/admin/translations/it.json.mjs +4 -0
- package/dist/admin/translations/it.json.mjs.map +1 -0
- package/dist/admin/translations/ja.json.js +27 -0
- package/dist/admin/translations/ja.json.js.map +1 -0
- package/dist/admin/translations/ja.json.mjs +25 -0
- package/dist/admin/translations/ja.json.mjs.map +1 -0
- package/dist/admin/translations/ko.json.js +27 -0
- package/dist/admin/translations/ko.json.js.map +1 -0
- package/dist/admin/translations/ko.json.mjs +25 -0
- package/dist/admin/translations/ko.json.mjs.map +1 -0
- package/dist/admin/translations/ms.json.js +6 -0
- package/dist/admin/translations/ms.json.js.map +1 -0
- package/dist/admin/translations/ms.json.mjs +4 -0
- package/dist/admin/translations/ms.json.mjs.map +1 -0
- package/dist/admin/translations/nl.json.js +6 -0
- package/dist/admin/translations/nl.json.js.map +1 -0
- package/dist/admin/translations/nl.json.mjs +4 -0
- package/dist/admin/translations/nl.json.mjs.map +1 -0
- package/dist/admin/translations/pl.json.js +27 -0
- package/dist/admin/translations/pl.json.js.map +1 -0
- package/dist/admin/translations/pl.json.mjs +25 -0
- package/dist/admin/translations/pl.json.mjs.map +1 -0
- package/dist/admin/translations/pt-BR.json.js +6 -0
- package/dist/admin/translations/pt-BR.json.js.map +1 -0
- package/dist/admin/translations/pt-BR.json.mjs +4 -0
- package/dist/admin/translations/pt-BR.json.mjs.map +1 -0
- package/dist/admin/translations/pt.json.js +32 -0
- package/dist/admin/translations/pt.json.js.map +1 -0
- package/dist/admin/translations/pt.json.mjs +27 -0
- package/dist/admin/translations/pt.json.mjs.map +1 -0
- package/dist/admin/translations/ru.json.js +6 -0
- package/dist/admin/translations/ru.json.js.map +1 -0
- package/dist/admin/translations/ru.json.mjs +4 -0
- package/dist/admin/translations/ru.json.mjs.map +1 -0
- package/dist/admin/translations/sk.json.js +6 -0
- package/dist/admin/translations/sk.json.js.map +1 -0
- package/dist/admin/translations/sk.json.mjs +4 -0
- package/dist/admin/translations/sk.json.mjs.map +1 -0
- package/dist/admin/translations/th.json.js +6 -0
- package/dist/admin/translations/th.json.js.map +1 -0
- package/dist/admin/translations/th.json.mjs +4 -0
- package/dist/admin/translations/th.json.mjs.map +1 -0
- package/dist/admin/translations/tr.json.js +32 -0
- package/dist/admin/translations/tr.json.js.map +1 -0
- package/dist/admin/translations/tr.json.mjs +27 -0
- package/dist/admin/translations/tr.json.mjs.map +1 -0
- package/dist/admin/translations/uk.json.js +32 -0
- package/dist/admin/translations/uk.json.js.map +1 -0
- package/dist/admin/translations/uk.json.mjs +27 -0
- package/dist/admin/translations/uk.json.mjs.map +1 -0
- package/dist/admin/translations/vi.json.js +6 -0
- package/dist/admin/translations/vi.json.js.map +1 -0
- package/dist/admin/translations/vi.json.mjs +4 -0
- package/dist/admin/translations/vi.json.mjs.map +1 -0
- package/dist/admin/translations/zh-Hans.json.js +24 -0
- package/dist/admin/translations/zh-Hans.json.js.map +1 -0
- package/dist/admin/translations/zh-Hans.json.mjs +19 -0
- package/dist/admin/translations/zh-Hans.json.mjs.map +1 -0
- package/dist/admin/translations/zh.json.js +32 -0
- package/dist/admin/translations/zh.json.js.map +1 -0
- package/dist/admin/translations/zh.json.mjs +27 -0
- package/dist/admin/translations/zh.json.mjs.map +1 -0
- package/dist/admin/utils/getYupInnerErrors.js +23 -0
- package/dist/admin/utils/getYupInnerErrors.js.map +1 -0
- package/dist/admin/utils/getYupInnerErrors.mjs +21 -0
- package/dist/admin/utils/getYupInnerErrors.mjs.map +1 -0
- package/dist/admin/utils/prefixPluginTranslations.js +11 -0
- package/dist/admin/utils/prefixPluginTranslations.js.map +1 -0
- package/dist/admin/utils/prefixPluginTranslations.mjs +9 -0
- package/dist/admin/utils/prefixPluginTranslations.mjs.map +1 -0
- package/dist/admin/utils/schema.js +30 -0
- package/dist/admin/utils/schema.js.map +1 -0
- package/dist/admin/utils/schema.mjs +9 -0
- package/dist/admin/utils/schema.mjs.map +1 -0
- package/dist/server/bootstrap.js +40 -0
- package/dist/server/bootstrap.js.map +1 -0
- package/dist/server/bootstrap.mjs +38 -0
- package/dist/server/bootstrap.mjs.map +1 -0
- package/dist/server/config.js +15 -0
- package/dist/server/config.js.map +1 -0
- package/dist/server/config.mjs +13 -0
- package/dist/server/config.mjs.map +1 -0
- package/dist/server/controllers/email.js +66 -0
- package/dist/server/controllers/email.js.map +1 -0
- package/dist/server/controllers/email.mjs +64 -0
- package/dist/server/controllers/email.mjs.map +1 -0
- package/dist/server/controllers/index.js +10 -0
- package/dist/server/controllers/index.js.map +1 -0
- package/dist/server/controllers/index.mjs +8 -0
- package/dist/server/controllers/index.mjs.map +1 -0
- package/dist/server/index.js +18 -207
- package/dist/server/index.js.map +1 -1
- package/dist/server/index.mjs +17 -190
- package/dist/server/index.mjs.map +1 -1
- package/dist/server/middlewares/index.js +13 -0
- package/dist/server/middlewares/index.js.map +1 -0
- package/dist/server/middlewares/index.mjs +8 -0
- package/dist/server/middlewares/index.mjs.map +1 -0
- package/dist/server/middlewares/rateLimit.js +37 -0
- package/dist/server/middlewares/rateLimit.js.map +1 -0
- package/dist/server/middlewares/rateLimit.mjs +35 -0
- package/dist/server/middlewares/rateLimit.mjs.map +1 -0
- package/dist/server/routes/admin.js +56 -0
- package/dist/server/routes/admin.js.map +1 -0
- package/dist/server/routes/admin.mjs +54 -0
- package/dist/server/routes/admin.mjs.map +1 -0
- package/dist/server/routes/content-api.js +24 -0
- package/dist/server/routes/content-api.js.map +1 -0
- package/dist/server/routes/content-api.mjs +22 -0
- package/dist/server/routes/content-api.mjs.map +1 -0
- package/dist/server/routes/index.js +12 -0
- package/dist/server/routes/index.js.map +1 -0
- package/dist/server/routes/index.mjs +10 -0
- package/dist/server/routes/index.mjs.map +1 -0
- package/dist/server/routes/validation/email.js +46 -0
- package/dist/server/routes/validation/email.js.map +1 -0
- package/dist/server/routes/validation/email.mjs +25 -0
- package/dist/server/routes/validation/email.mjs.map +1 -0
- package/dist/server/services/email.js +63 -0
- package/dist/server/services/email.js.map +1 -0
- package/dist/server/services/email.mjs +42 -0
- package/dist/server/services/email.mjs.map +1 -0
- package/dist/server/services/index.js +10 -0
- package/dist/server/services/index.js.map +1 -0
- package/dist/server/services/index.mjs +8 -0
- package/dist/server/services/index.mjs.map +1 -0
- package/dist/server/src/index.d.ts +8 -7
- package/dist/server/src/index.d.ts.map +1 -1
- package/dist/server/src/middlewares/index.d.ts +9 -0
- package/dist/server/src/middlewares/index.d.ts.map +1 -0
- package/dist/server/src/middlewares/rateLimit.d.ts +7 -0
- package/dist/server/src/middlewares/rateLimit.d.ts.map +1 -0
- package/dist/server/src/routes/content-api.d.ts +5 -8
- package/dist/server/src/routes/content-api.d.ts.map +1 -1
- package/dist/server/src/routes/index.d.ts +3 -7
- package/dist/server/src/routes/index.d.ts.map +1 -1
- package/dist/server/src/routes/validation/email.d.ts +18 -0
- package/dist/server/src/routes/validation/email.d.ts.map +1 -0
- package/dist/server/src/routes/validation/index.d.ts +2 -0
- package/dist/server/src/routes/validation/index.d.ts.map +1 -0
- package/dist/shared/types.d.ts +0 -1
- package/package.json +21 -17
- package/dist/_chunks/Settings-DELoyxcs.mjs +0 -281
- package/dist/_chunks/Settings-DELoyxcs.mjs.map +0 -1
- package/dist/_chunks/Settings-DtkWJ2F5.js +0 -300
- package/dist/_chunks/Settings-DtkWJ2F5.js.map +0 -1
- package/dist/_chunks/ar-Bf9XlLLo.mjs +0 -5
- package/dist/_chunks/ar-Bf9XlLLo.mjs.map +0 -1
- package/dist/_chunks/ar-C_tQu1XS.js +0 -5
- package/dist/_chunks/ar-C_tQu1XS.js.map +0 -1
- package/dist/_chunks/cs-B0QZJTah.mjs +0 -5
- package/dist/_chunks/cs-B0QZJTah.mjs.map +0 -1
- package/dist/_chunks/cs-CPKIUWLp.js +0 -5
- package/dist/_chunks/cs-CPKIUWLp.js.map +0 -1
- package/dist/_chunks/de-B9kiAC-s.mjs +0 -5
- package/dist/_chunks/de-B9kiAC-s.mjs.map +0 -1
- package/dist/_chunks/de-K6IYQk2d.js +0 -5
- package/dist/_chunks/de-K6IYQk2d.js.map +0 -1
- package/dist/_chunks/dk-31mOPYpI.js +0 -26
- package/dist/_chunks/dk-31mOPYpI.js.map +0 -1
- package/dist/_chunks/dk-DqrbgSkv.mjs +0 -26
- package/dist/_chunks/dk-DqrbgSkv.mjs.map +0 -1
- package/dist/_chunks/en-BCu4d6-o.js +0 -29
- package/dist/_chunks/en-BCu4d6-o.js.map +0 -1
- package/dist/_chunks/en-DF4KtAAC.mjs +0 -29
- package/dist/_chunks/en-DF4KtAAC.mjs.map +0 -1
- package/dist/_chunks/es-BNo7eLLJ.mjs +0 -26
- package/dist/_chunks/es-BNo7eLLJ.mjs.map +0 -1
- package/dist/_chunks/es-Dl2HVmwz.js +0 -26
- package/dist/_chunks/es-Dl2HVmwz.js.map +0 -1
- package/dist/_chunks/fr-C8Qw4iPZ.js +0 -5
- package/dist/_chunks/fr-C8Qw4iPZ.js.map +0 -1
- package/dist/_chunks/fr-hkSxFuzl.mjs +0 -5
- package/dist/_chunks/fr-hkSxFuzl.mjs.map +0 -1
- package/dist/_chunks/id-CHtAzAUz.mjs +0 -5
- package/dist/_chunks/id-CHtAzAUz.mjs.map +0 -1
- package/dist/_chunks/id-CvE5f0zz.js +0 -5
- package/dist/_chunks/id-CvE5f0zz.js.map +0 -1
- package/dist/_chunks/index-BjKoKHEK.js +0 -80
- package/dist/_chunks/index-BjKoKHEK.js.map +0 -1
- package/dist/_chunks/index-DbU58fMi.mjs +0 -81
- package/dist/_chunks/index-DbU58fMi.mjs.map +0 -1
- package/dist/_chunks/it-C7z82V3g.mjs +0 -5
- package/dist/_chunks/it-C7z82V3g.mjs.map +0 -1
- package/dist/_chunks/it-DYpuAHa5.js +0 -5
- package/dist/_chunks/it-DYpuAHa5.js.map +0 -1
- package/dist/_chunks/ja-CiekkoEN.mjs +0 -26
- package/dist/_chunks/ja-CiekkoEN.mjs.map +0 -1
- package/dist/_chunks/ja-PL3WilO7.js +0 -26
- package/dist/_chunks/ja-PL3WilO7.js.map +0 -1
- package/dist/_chunks/ko-CJBkZ375.mjs +0 -26
- package/dist/_chunks/ko-CJBkZ375.mjs.map +0 -1
- package/dist/_chunks/ko-CL2BB_w_.js +0 -26
- package/dist/_chunks/ko-CL2BB_w_.js.map +0 -1
- package/dist/_chunks/ms-BGlHkuJz.js +0 -5
- package/dist/_chunks/ms-BGlHkuJz.js.map +0 -1
- package/dist/_chunks/ms-C1wNkEQw.mjs +0 -5
- package/dist/_chunks/ms-C1wNkEQw.mjs.map +0 -1
- package/dist/_chunks/nl-BuofSsmb.js +0 -5
- package/dist/_chunks/nl-BuofSsmb.js.map +0 -1
- package/dist/_chunks/nl-C79CwB4e.mjs +0 -5
- package/dist/_chunks/nl-C79CwB4e.mjs.map +0 -1
- package/dist/_chunks/pl-DXcJCevg.mjs +0 -26
- package/dist/_chunks/pl-DXcJCevg.mjs.map +0 -1
- package/dist/_chunks/pl-DdtXf3SH.js +0 -26
- package/dist/_chunks/pl-DdtXf3SH.js.map +0 -1
- package/dist/_chunks/pt-BR-B_ii8U63.js +0 -5
- package/dist/_chunks/pt-BR-B_ii8U63.js.map +0 -1
- package/dist/_chunks/pt-BR-DjINUWGk.mjs +0 -5
- package/dist/_chunks/pt-BR-DjINUWGk.mjs.map +0 -1
- package/dist/_chunks/pt-CzRDvk6c.js +0 -29
- package/dist/_chunks/pt-CzRDvk6c.js.map +0 -1
- package/dist/_chunks/pt-DEVCt2mt.mjs +0 -29
- package/dist/_chunks/pt-DEVCt2mt.mjs.map +0 -1
- package/dist/_chunks/ru-C_7wBr9e.mjs +0 -5
- package/dist/_chunks/ru-C_7wBr9e.mjs.map +0 -1
- package/dist/_chunks/ru-Dc-rSPqb.js +0 -5
- package/dist/_chunks/ru-Dc-rSPqb.js.map +0 -1
- package/dist/_chunks/sk-Cnpb4YOK.js +0 -5
- package/dist/_chunks/sk-Cnpb4YOK.js.map +0 -1
- package/dist/_chunks/sk-i1gQKUBN.mjs +0 -5
- package/dist/_chunks/sk-i1gQKUBN.mjs.map +0 -1
- package/dist/_chunks/th-BXTLF08M.js +0 -5
- package/dist/_chunks/th-BXTLF08M.js.map +0 -1
- package/dist/_chunks/th-D-MxpWKr.mjs +0 -5
- package/dist/_chunks/th-D-MxpWKr.mjs.map +0 -1
- package/dist/_chunks/tr-BXu41MLY.mjs +0 -29
- package/dist/_chunks/tr-BXu41MLY.mjs.map +0 -1
- package/dist/_chunks/tr-DwBySNgJ.js +0 -29
- package/dist/_chunks/tr-DwBySNgJ.js.map +0 -1
- package/dist/_chunks/uk-C_1qrLRM.mjs +0 -5
- package/dist/_chunks/uk-C_1qrLRM.mjs.map +0 -1
- package/dist/_chunks/uk-CxIePjBD.js +0 -5
- package/dist/_chunks/uk-CxIePjBD.js.map +0 -1
- package/dist/_chunks/vi-B4uqmjm6.js +0 -5
- package/dist/_chunks/vi-B4uqmjm6.js.map +0 -1
- package/dist/_chunks/vi-BfZkgFxI.mjs +0 -5
- package/dist/_chunks/vi-BfZkgFxI.mjs.map +0 -1
- package/dist/_chunks/zh-BS-XJCSt.mjs +0 -29
- package/dist/_chunks/zh-BS-XJCSt.mjs.map +0 -1
- package/dist/_chunks/zh-DsMIjTgu.js +0 -29
- package/dist/_chunks/zh-DsMIjTgu.js.map +0 -1
- package/dist/_chunks/zh-Hans-BLEEaLoN.mjs +0 -21
- package/dist/_chunks/zh-Hans-BLEEaLoN.mjs.map +0 -1
- package/dist/_chunks/zh-Hans-CmL3sY9o.js +0 -21
- package/dist/_chunks/zh-Hans-CmL3sY9o.js.map +0 -1
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
var utils = require('@strapi/utils');
|
|
4
|
+
var fp = require('lodash/fp');
|
|
5
|
+
|
|
6
|
+
const { RateLimitError } = utils.errors;
|
|
7
|
+
var rateLimit = ((config, { strapi })=>async (ctx, next)=>{
|
|
8
|
+
const pluginConfig = strapi.config.get('plugin::email');
|
|
9
|
+
const rateLimitConfig = {
|
|
10
|
+
enabled: true,
|
|
11
|
+
...pluginConfig.ratelimit || {}
|
|
12
|
+
};
|
|
13
|
+
if (rateLimitConfig.enabled === true) {
|
|
14
|
+
// TODO: TS - Do the dynamic import
|
|
15
|
+
// eslint-disable-next-line @typescript-eslint/no-var-requires
|
|
16
|
+
const rateLimit = require('koa2-ratelimit').RateLimit;
|
|
17
|
+
const requestEmail = fp.get('request.body.email')(ctx);
|
|
18
|
+
const userEmail = fp.isString(requestEmail) ? requestEmail.toLowerCase() : 'unknownEmail';
|
|
19
|
+
const loadConfig = {
|
|
20
|
+
interval: {
|
|
21
|
+
min: 5
|
|
22
|
+
},
|
|
23
|
+
max: 5,
|
|
24
|
+
prefixKey: `${userEmail}`,
|
|
25
|
+
handler () {
|
|
26
|
+
throw new RateLimitError();
|
|
27
|
+
},
|
|
28
|
+
...rateLimitConfig,
|
|
29
|
+
...config
|
|
30
|
+
};
|
|
31
|
+
return rateLimit.middleware(loadConfig)(ctx, next);
|
|
32
|
+
}
|
|
33
|
+
return next();
|
|
34
|
+
});
|
|
35
|
+
|
|
36
|
+
module.exports = rateLimit;
|
|
37
|
+
//# sourceMappingURL=rateLimit.js.map
|
|
@@ -0,0 +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;;;;"}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
import utils from '@strapi/utils';
|
|
2
|
+
import { get, isString } from 'lodash/fp';
|
|
3
|
+
|
|
4
|
+
const { RateLimitError } = utils.errors;
|
|
5
|
+
var rateLimit = ((config, { strapi })=>async (ctx, next)=>{
|
|
6
|
+
const pluginConfig = strapi.config.get('plugin::email');
|
|
7
|
+
const rateLimitConfig = {
|
|
8
|
+
enabled: true,
|
|
9
|
+
...pluginConfig.ratelimit || {}
|
|
10
|
+
};
|
|
11
|
+
if (rateLimitConfig.enabled === true) {
|
|
12
|
+
// TODO: TS - Do the dynamic import
|
|
13
|
+
// eslint-disable-next-line @typescript-eslint/no-var-requires
|
|
14
|
+
const rateLimit = require('koa2-ratelimit').RateLimit;
|
|
15
|
+
const requestEmail = get('request.body.email')(ctx);
|
|
16
|
+
const userEmail = isString(requestEmail) ? requestEmail.toLowerCase() : 'unknownEmail';
|
|
17
|
+
const loadConfig = {
|
|
18
|
+
interval: {
|
|
19
|
+
min: 5
|
|
20
|
+
},
|
|
21
|
+
max: 5,
|
|
22
|
+
prefixKey: `${userEmail}`,
|
|
23
|
+
handler () {
|
|
24
|
+
throw new RateLimitError();
|
|
25
|
+
},
|
|
26
|
+
...rateLimitConfig,
|
|
27
|
+
...config
|
|
28
|
+
};
|
|
29
|
+
return rateLimit.middleware(loadConfig)(ctx, next);
|
|
30
|
+
}
|
|
31
|
+
return next();
|
|
32
|
+
});
|
|
33
|
+
|
|
34
|
+
export { rateLimit as default };
|
|
35
|
+
//# sourceMappingURL=rateLimit.mjs.map
|
|
@@ -0,0 +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;;;;"}
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
var admin = {
|
|
4
|
+
type: 'admin',
|
|
5
|
+
routes: [
|
|
6
|
+
{
|
|
7
|
+
method: 'POST',
|
|
8
|
+
path: '/',
|
|
9
|
+
handler: 'email.send',
|
|
10
|
+
config: {
|
|
11
|
+
policies: [
|
|
12
|
+
'admin::isAuthenticatedAdmin'
|
|
13
|
+
]
|
|
14
|
+
}
|
|
15
|
+
},
|
|
16
|
+
{
|
|
17
|
+
method: 'POST',
|
|
18
|
+
path: '/test',
|
|
19
|
+
handler: 'email.test',
|
|
20
|
+
config: {
|
|
21
|
+
policies: [
|
|
22
|
+
'admin::isAuthenticatedAdmin',
|
|
23
|
+
{
|
|
24
|
+
name: 'admin::hasPermissions',
|
|
25
|
+
config: {
|
|
26
|
+
actions: [
|
|
27
|
+
'plugin::email.settings.read'
|
|
28
|
+
]
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
]
|
|
32
|
+
}
|
|
33
|
+
},
|
|
34
|
+
{
|
|
35
|
+
method: 'GET',
|
|
36
|
+
path: '/settings',
|
|
37
|
+
handler: 'email.getSettings',
|
|
38
|
+
config: {
|
|
39
|
+
policies: [
|
|
40
|
+
'admin::isAuthenticatedAdmin',
|
|
41
|
+
{
|
|
42
|
+
name: 'admin::hasPermissions',
|
|
43
|
+
config: {
|
|
44
|
+
actions: [
|
|
45
|
+
'plugin::email.settings.read'
|
|
46
|
+
]
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
]
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
]
|
|
53
|
+
};
|
|
54
|
+
|
|
55
|
+
module.exports = admin;
|
|
56
|
+
//# sourceMappingURL=admin.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"admin.js","sources":["../../../server/src/routes/admin.ts"],"sourcesContent":["export default {\n type: 'admin',\n routes: [\n {\n method: 'POST',\n path: '/',\n handler: 'email.send',\n config: {\n policies: ['admin::isAuthenticatedAdmin'],\n },\n },\n {\n method: 'POST',\n path: '/test',\n handler: 'email.test',\n config: {\n policies: [\n 'admin::isAuthenticatedAdmin',\n { name: 'admin::hasPermissions', config: { actions: ['plugin::email.settings.read'] } },\n ],\n },\n },\n {\n method: 'GET',\n path: '/settings',\n handler: 'email.getSettings',\n config: {\n policies: [\n 'admin::isAuthenticatedAdmin',\n { name: 'admin::hasPermissions', config: { actions: ['plugin::email.settings.read'] } },\n ],\n },\n },\n ],\n};\n"],"names":["type","routes","method","path","handler","config","policies","name","actions"],"mappings":";;AAAA,YAAe;IACbA,IAAM,EAAA,OAAA;IACNC,MAAQ,EAAA;AACN,QAAA;YACEC,MAAQ,EAAA,MAAA;YACRC,IAAM,EAAA,GAAA;YACNC,OAAS,EAAA,YAAA;YACTC,MAAQ,EAAA;gBACNC,QAAU,EAAA;AAAC,oBAAA;AAA8B;AAC3C;AACF,SAAA;AACA,QAAA;YACEJ,MAAQ,EAAA,MAAA;YACRC,IAAM,EAAA,OAAA;YACNC,OAAS,EAAA,YAAA;YACTC,MAAQ,EAAA;gBACNC,QAAU,EAAA;AACR,oBAAA,6BAAA;AACA,oBAAA;wBAAEC,IAAM,EAAA,uBAAA;wBAAyBF,MAAQ,EAAA;4BAAEG,OAAS,EAAA;AAAC,gCAAA;AAA8B;AAAC;AAAE;AACvF;AACH;AACF,SAAA;AACA,QAAA;YACEN,MAAQ,EAAA,KAAA;YACRC,IAAM,EAAA,WAAA;YACNC,OAAS,EAAA,mBAAA;YACTC,MAAQ,EAAA;gBACNC,QAAU,EAAA;AACR,oBAAA,6BAAA;AACA,oBAAA;wBAAEC,IAAM,EAAA,uBAAA;wBAAyBF,MAAQ,EAAA;4BAAEG,OAAS,EAAA;AAAC,gCAAA;AAA8B;AAAC;AAAE;AACvF;AACH;AACF;AACD;AACH,CAAE;;;;"}
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
var admin = {
|
|
2
|
+
type: 'admin',
|
|
3
|
+
routes: [
|
|
4
|
+
{
|
|
5
|
+
method: 'POST',
|
|
6
|
+
path: '/',
|
|
7
|
+
handler: 'email.send',
|
|
8
|
+
config: {
|
|
9
|
+
policies: [
|
|
10
|
+
'admin::isAuthenticatedAdmin'
|
|
11
|
+
]
|
|
12
|
+
}
|
|
13
|
+
},
|
|
14
|
+
{
|
|
15
|
+
method: 'POST',
|
|
16
|
+
path: '/test',
|
|
17
|
+
handler: 'email.test',
|
|
18
|
+
config: {
|
|
19
|
+
policies: [
|
|
20
|
+
'admin::isAuthenticatedAdmin',
|
|
21
|
+
{
|
|
22
|
+
name: 'admin::hasPermissions',
|
|
23
|
+
config: {
|
|
24
|
+
actions: [
|
|
25
|
+
'plugin::email.settings.read'
|
|
26
|
+
]
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
]
|
|
30
|
+
}
|
|
31
|
+
},
|
|
32
|
+
{
|
|
33
|
+
method: 'GET',
|
|
34
|
+
path: '/settings',
|
|
35
|
+
handler: 'email.getSettings',
|
|
36
|
+
config: {
|
|
37
|
+
policies: [
|
|
38
|
+
'admin::isAuthenticatedAdmin',
|
|
39
|
+
{
|
|
40
|
+
name: 'admin::hasPermissions',
|
|
41
|
+
config: {
|
|
42
|
+
actions: [
|
|
43
|
+
'plugin::email.settings.read'
|
|
44
|
+
]
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
]
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
]
|
|
51
|
+
};
|
|
52
|
+
|
|
53
|
+
export { admin as default };
|
|
54
|
+
//# sourceMappingURL=admin.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"admin.mjs","sources":["../../../server/src/routes/admin.ts"],"sourcesContent":["export default {\n type: 'admin',\n routes: [\n {\n method: 'POST',\n path: '/',\n handler: 'email.send',\n config: {\n policies: ['admin::isAuthenticatedAdmin'],\n },\n },\n {\n method: 'POST',\n path: '/test',\n handler: 'email.test',\n config: {\n policies: [\n 'admin::isAuthenticatedAdmin',\n { name: 'admin::hasPermissions', config: { actions: ['plugin::email.settings.read'] } },\n ],\n },\n },\n {\n method: 'GET',\n path: '/settings',\n handler: 'email.getSettings',\n config: {\n policies: [\n 'admin::isAuthenticatedAdmin',\n { name: 'admin::hasPermissions', config: { actions: ['plugin::email.settings.read'] } },\n ],\n },\n },\n ],\n};\n"],"names":["type","routes","method","path","handler","config","policies","name","actions"],"mappings":"AAAA,YAAe;IACbA,IAAM,EAAA,OAAA;IACNC,MAAQ,EAAA;AACN,QAAA;YACEC,MAAQ,EAAA,MAAA;YACRC,IAAM,EAAA,GAAA;YACNC,OAAS,EAAA,YAAA;YACTC,MAAQ,EAAA;gBACNC,QAAU,EAAA;AAAC,oBAAA;AAA8B;AAC3C;AACF,SAAA;AACA,QAAA;YACEJ,MAAQ,EAAA,MAAA;YACRC,IAAM,EAAA,OAAA;YACNC,OAAS,EAAA,YAAA;YACTC,MAAQ,EAAA;gBACNC,QAAU,EAAA;AACR,oBAAA,6BAAA;AACA,oBAAA;wBAAEC,IAAM,EAAA,uBAAA;wBAAyBF,MAAQ,EAAA;4BAAEG,OAAS,EAAA;AAAC,gCAAA;AAA8B;AAAC;AAAE;AACvF;AACH;AACF,SAAA;AACA,QAAA;YACEN,MAAQ,EAAA,KAAA;YACRC,IAAM,EAAA,WAAA;YACNC,OAAS,EAAA,mBAAA;YACTC,MAAQ,EAAA;gBACNC,QAAU,EAAA;AACR,oBAAA,6BAAA;AACA,oBAAA;wBAAEC,IAAM,EAAA,uBAAA;wBAAyBF,MAAQ,EAAA;4BAAEG,OAAS,EAAA;AAAC,gCAAA;AAA8B;AAAC;AAAE;AACvF;AACH;AACF;AACD;AACH,CAAE;;;;"}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
var utils = require('@strapi/utils');
|
|
4
|
+
var email = require('./validation/email.js');
|
|
5
|
+
|
|
6
|
+
const createRoutes = utils.createContentApiRoutesFactory(()=>{
|
|
7
|
+
const validator = new email.EmailRouteValidator(strapi);
|
|
8
|
+
return [
|
|
9
|
+
{
|
|
10
|
+
method: 'POST',
|
|
11
|
+
path: '/',
|
|
12
|
+
handler: 'email.send',
|
|
13
|
+
request: {
|
|
14
|
+
body: {
|
|
15
|
+
'application/json': validator.sendEmailInput
|
|
16
|
+
}
|
|
17
|
+
},
|
|
18
|
+
response: validator.emailResponse
|
|
19
|
+
}
|
|
20
|
+
];
|
|
21
|
+
});
|
|
22
|
+
|
|
23
|
+
module.exports = createRoutes;
|
|
24
|
+
//# sourceMappingURL=content-api.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"content-api.js","sources":["../../../server/src/routes/content-api.ts"],"sourcesContent":["import type { Core } from '@strapi/types';\nimport { createContentApiRoutesFactory } from '@strapi/utils';\nimport { EmailRouteValidator } from './validation';\n\nconst createRoutes = createContentApiRoutesFactory((): Core.RouterInput['routes'] => {\n const validator = new EmailRouteValidator(strapi);\n\n return [\n {\n method: 'POST',\n path: '/',\n handler: 'email.send',\n request: {\n body: { 'application/json': validator.sendEmailInput },\n },\n response: validator.emailResponse,\n },\n ];\n});\n\nexport default createRoutes;\n"],"names":["createRoutes","createContentApiRoutesFactory","validator","EmailRouteValidator","strapi","method","path","handler","request","body","sendEmailInput","response","emailResponse"],"mappings":";;;;;AAIA,MAAMA,eAAeC,mCAA8B,CAAA,IAAA;IACjD,MAAMC,SAAAA,GAAY,IAAIC,yBAAoBC,CAAAA,MAAAA,CAAAA;IAE1C,OAAO;AACL,QAAA;YACEC,MAAQ,EAAA,MAAA;YACRC,IAAM,EAAA,GAAA;YACNC,OAAS,EAAA,YAAA;YACTC,OAAS,EAAA;gBACPC,IAAM,EAAA;AAAE,oBAAA,kBAAA,EAAoBP,UAAUQ;AAAe;AACvD,aAAA;AACAC,YAAAA,QAAAA,EAAUT,UAAUU;AACtB;AACD,KAAA;AACH,CAAA;;;;"}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import { createContentApiRoutesFactory } from '@strapi/utils';
|
|
2
|
+
import { EmailRouteValidator } from './validation/email.mjs';
|
|
3
|
+
|
|
4
|
+
const createRoutes = createContentApiRoutesFactory(()=>{
|
|
5
|
+
const validator = new EmailRouteValidator(strapi);
|
|
6
|
+
return [
|
|
7
|
+
{
|
|
8
|
+
method: 'POST',
|
|
9
|
+
path: '/',
|
|
10
|
+
handler: 'email.send',
|
|
11
|
+
request: {
|
|
12
|
+
body: {
|
|
13
|
+
'application/json': validator.sendEmailInput
|
|
14
|
+
}
|
|
15
|
+
},
|
|
16
|
+
response: validator.emailResponse
|
|
17
|
+
}
|
|
18
|
+
];
|
|
19
|
+
});
|
|
20
|
+
|
|
21
|
+
export { createRoutes as default };
|
|
22
|
+
//# sourceMappingURL=content-api.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"content-api.mjs","sources":["../../../server/src/routes/content-api.ts"],"sourcesContent":["import type { Core } from '@strapi/types';\nimport { createContentApiRoutesFactory } from '@strapi/utils';\nimport { EmailRouteValidator } from './validation';\n\nconst createRoutes = createContentApiRoutesFactory((): Core.RouterInput['routes'] => {\n const validator = new EmailRouteValidator(strapi);\n\n return [\n {\n method: 'POST',\n path: '/',\n handler: 'email.send',\n request: {\n body: { 'application/json': validator.sendEmailInput },\n },\n response: validator.emailResponse,\n },\n ];\n});\n\nexport default createRoutes;\n"],"names":["createRoutes","createContentApiRoutesFactory","validator","EmailRouteValidator","strapi","method","path","handler","request","body","sendEmailInput","response","emailResponse"],"mappings":";;;AAIA,MAAMA,eAAeC,6BAA8B,CAAA,IAAA;IACjD,MAAMC,SAAAA,GAAY,IAAIC,mBAAoBC,CAAAA,MAAAA,CAAAA;IAE1C,OAAO;AACL,QAAA;YACEC,MAAQ,EAAA,MAAA;YACRC,IAAM,EAAA,GAAA;YACNC,OAAS,EAAA,YAAA;YACTC,OAAS,EAAA;gBACPC,IAAM,EAAA;AAAE,oBAAA,kBAAA,EAAoBP,UAAUQ;AAAe;AACvD,aAAA;AACAC,YAAAA,QAAAA,EAAUT,UAAUU;AACtB;AACD,KAAA;AACH,CAAA;;;;"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sources":["../../../server/src/routes/index.ts"],"sourcesContent":["import admin from './admin';\nimport contentApi from './content-api';\n\nexport const routes = {\n admin,\n 'content-api': contentApi,\n};\n"],"names":["routes","admin","contentApi"],"mappings":";;;;;MAGaA,MAAS,GAAA;AACpBC,IAAAA,KAAAA;IACA,aAAeC,EAAAA;AACjB;;;;"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.mjs","sources":["../../../server/src/routes/index.ts"],"sourcesContent":["import admin from './admin';\nimport contentApi from './content-api';\n\nexport const routes = {\n admin,\n 'content-api': contentApi,\n};\n"],"names":["routes","admin","contentApi"],"mappings":";;;MAGaA,MAAS,GAAA;AACpBC,IAAAA,KAAAA;IACA,aAAeC,EAAAA;AACjB;;;;"}
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
var z = require('zod/v4');
|
|
4
|
+
|
|
5
|
+
function _interopNamespaceDefault(e) {
|
|
6
|
+
var n = Object.create(null);
|
|
7
|
+
if (e) {
|
|
8
|
+
Object.keys(e).forEach(function (k) {
|
|
9
|
+
if (k !== 'default') {
|
|
10
|
+
var d = Object.getOwnPropertyDescriptor(e, k);
|
|
11
|
+
Object.defineProperty(n, k, d.get ? d : {
|
|
12
|
+
enumerable: true,
|
|
13
|
+
get: function () { return e[k]; }
|
|
14
|
+
});
|
|
15
|
+
}
|
|
16
|
+
});
|
|
17
|
+
}
|
|
18
|
+
n.default = e;
|
|
19
|
+
return Object.freeze(n);
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
var z__namespace = /*#__PURE__*/_interopNamespaceDefault(z);
|
|
23
|
+
|
|
24
|
+
class EmailRouteValidator {
|
|
25
|
+
get sendEmailInput() {
|
|
26
|
+
return z__namespace.object({
|
|
27
|
+
from: z__namespace.string().optional(),
|
|
28
|
+
to: z__namespace.string(),
|
|
29
|
+
cc: z__namespace.string().optional(),
|
|
30
|
+
bcc: z__namespace.string().optional(),
|
|
31
|
+
replyTo: z__namespace.string().optional(),
|
|
32
|
+
subject: z__namespace.string(),
|
|
33
|
+
text: z__namespace.string(),
|
|
34
|
+
html: z__namespace.string().optional()
|
|
35
|
+
}).catchall(z__namespace.string());
|
|
36
|
+
}
|
|
37
|
+
get emailResponse() {
|
|
38
|
+
return z__namespace.object({});
|
|
39
|
+
}
|
|
40
|
+
constructor(strapi){
|
|
41
|
+
this._strapi = strapi;
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
exports.EmailRouteValidator = EmailRouteValidator;
|
|
46
|
+
//# sourceMappingURL=email.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"email.js","sources":["../../../../server/src/routes/validation/email.ts"],"sourcesContent":["import type { Core } from '@strapi/types';\nimport * as z from 'zod/v4';\n\nexport class EmailRouteValidator {\n protected readonly _strapi: Core.Strapi;\n\n public constructor(strapi: Core.Strapi) {\n this._strapi = strapi;\n }\n\n get sendEmailInput() {\n return z\n .object({\n from: z.string().optional(),\n to: z.string(),\n cc: z.string().optional(),\n bcc: z.string().optional(),\n replyTo: z.string().optional(),\n subject: z.string(),\n text: z.string(),\n html: z.string().optional(),\n })\n .catchall(z.string());\n }\n\n get emailResponse() {\n return z.object({});\n }\n}\n"],"names":["EmailRouteValidator","sendEmailInput","z","object","from","string","optional","to","cc","bcc","replyTo","subject","text","html","catchall","emailResponse","strapi","_strapi"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;AAGO,MAAMA,mBAAAA,CAAAA;AAOX,IAAA,IAAIC,cAAiB,GAAA;QACnB,OAAOC,YAAAA,CACJC,MAAM,CAAC;YACNC,IAAMF,EAAAA,YAAAA,CAAEG,MAAM,EAAA,CAAGC,QAAQ,EAAA;AACzBC,YAAAA,EAAAA,EAAIL,aAAEG,MAAM,EAAA;YACZG,EAAIN,EAAAA,YAAAA,CAAEG,MAAM,EAAA,CAAGC,QAAQ,EAAA;YACvBG,GAAKP,EAAAA,YAAAA,CAAEG,MAAM,EAAA,CAAGC,QAAQ,EAAA;YACxBI,OAASR,EAAAA,YAAAA,CAAEG,MAAM,EAAA,CAAGC,QAAQ,EAAA;AAC5BK,YAAAA,OAAAA,EAAST,aAAEG,MAAM,EAAA;AACjBO,YAAAA,IAAAA,EAAMV,aAAEG,MAAM,EAAA;YACdQ,IAAMX,EAAAA,YAAAA,CAAEG,MAAM,EAAA,CAAGC,QAAQ;SAE1BQ,CAAAA,CAAAA,QAAQ,CAACZ,YAAAA,CAAEG,MAAM,EAAA,CAAA;AACtB;AAEA,IAAA,IAAIU,aAAgB,GAAA;QAClB,OAAOb,YAAAA,CAAEC,MAAM,CAAC,EAAC,CAAA;AACnB;AArBA,IAAA,WAAA,CAAmBa,MAAmB,CAAE;QACtC,IAAI,CAACC,OAAO,GAAGD,MAAAA;AACjB;AAoBF;;;;"}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import * as z from 'zod/v4';
|
|
2
|
+
|
|
3
|
+
class EmailRouteValidator {
|
|
4
|
+
get sendEmailInput() {
|
|
5
|
+
return z.object({
|
|
6
|
+
from: z.string().optional(),
|
|
7
|
+
to: z.string(),
|
|
8
|
+
cc: z.string().optional(),
|
|
9
|
+
bcc: z.string().optional(),
|
|
10
|
+
replyTo: z.string().optional(),
|
|
11
|
+
subject: z.string(),
|
|
12
|
+
text: z.string(),
|
|
13
|
+
html: z.string().optional()
|
|
14
|
+
}).catchall(z.string());
|
|
15
|
+
}
|
|
16
|
+
get emailResponse() {
|
|
17
|
+
return z.object({});
|
|
18
|
+
}
|
|
19
|
+
constructor(strapi){
|
|
20
|
+
this._strapi = strapi;
|
|
21
|
+
}
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
export { EmailRouteValidator };
|
|
25
|
+
//# sourceMappingURL=email.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"email.mjs","sources":["../../../../server/src/routes/validation/email.ts"],"sourcesContent":["import type { Core } from '@strapi/types';\nimport * as z from 'zod/v4';\n\nexport class EmailRouteValidator {\n protected readonly _strapi: Core.Strapi;\n\n public constructor(strapi: Core.Strapi) {\n this._strapi = strapi;\n }\n\n get sendEmailInput() {\n return z\n .object({\n from: z.string().optional(),\n to: z.string(),\n cc: z.string().optional(),\n bcc: z.string().optional(),\n replyTo: z.string().optional(),\n subject: z.string(),\n text: z.string(),\n html: z.string().optional(),\n })\n .catchall(z.string());\n }\n\n get emailResponse() {\n return z.object({});\n }\n}\n"],"names":["EmailRouteValidator","sendEmailInput","z","object","from","string","optional","to","cc","bcc","replyTo","subject","text","html","catchall","emailResponse","strapi","_strapi"],"mappings":";;AAGO,MAAMA,mBAAAA,CAAAA;AAOX,IAAA,IAAIC,cAAiB,GAAA;QACnB,OAAOC,CAAAA,CACJC,MAAM,CAAC;YACNC,IAAMF,EAAAA,CAAAA,CAAEG,MAAM,EAAA,CAAGC,QAAQ,EAAA;AACzBC,YAAAA,EAAAA,EAAIL,EAAEG,MAAM,EAAA;YACZG,EAAIN,EAAAA,CAAAA,CAAEG,MAAM,EAAA,CAAGC,QAAQ,EAAA;YACvBG,GAAKP,EAAAA,CAAAA,CAAEG,MAAM,EAAA,CAAGC,QAAQ,EAAA;YACxBI,OAASR,EAAAA,CAAAA,CAAEG,MAAM,EAAA,CAAGC,QAAQ,EAAA;AAC5BK,YAAAA,OAAAA,EAAST,EAAEG,MAAM,EAAA;AACjBO,YAAAA,IAAAA,EAAMV,EAAEG,MAAM,EAAA;YACdQ,IAAMX,EAAAA,CAAAA,CAAEG,MAAM,EAAA,CAAGC,QAAQ;SAE1BQ,CAAAA,CAAAA,QAAQ,CAACZ,CAAAA,CAAEG,MAAM,EAAA,CAAA;AACtB;AAEA,IAAA,IAAIU,aAAgB,GAAA;QAClB,OAAOb,CAAAA,CAAEC,MAAM,CAAC,EAAC,CAAA;AACnB;AArBA,IAAA,WAAA,CAAmBa,MAAmB,CAAE;QACtC,IAAI,CAACC,OAAO,GAAGD,MAAAA;AACjB;AAoBF;;;;"}
|
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
var _ = require('lodash');
|
|
4
|
+
var utils = require('@strapi/utils');
|
|
5
|
+
|
|
6
|
+
function _interopNamespaceDefault(e) {
|
|
7
|
+
var n = Object.create(null);
|
|
8
|
+
if (e) {
|
|
9
|
+
Object.keys(e).forEach(function (k) {
|
|
10
|
+
if (k !== 'default') {
|
|
11
|
+
var d = Object.getOwnPropertyDescriptor(e, k);
|
|
12
|
+
Object.defineProperty(n, k, d.get ? d : {
|
|
13
|
+
enumerable: true,
|
|
14
|
+
get: function () { return e[k]; }
|
|
15
|
+
});
|
|
16
|
+
}
|
|
17
|
+
});
|
|
18
|
+
}
|
|
19
|
+
n.default = e;
|
|
20
|
+
return Object.freeze(n);
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
var ___namespace = /*#__PURE__*/_interopNamespaceDefault(_);
|
|
24
|
+
|
|
25
|
+
const { createStrictInterpolationRegExp } = utils.template;
|
|
26
|
+
const getProviderSettings = ()=>strapi.config.get('plugin::email');
|
|
27
|
+
const send = async (options)=>strapi.plugin('email').provider.send(options);
|
|
28
|
+
/**
|
|
29
|
+
* fill subject, text and html using lodash template
|
|
30
|
+
* @param {object} emailOptions - to, from and replyto...
|
|
31
|
+
* @param {object} emailTemplate - object containing attributes to fill
|
|
32
|
+
* @param {object} data - data used to fill the template
|
|
33
|
+
* @returns {{ subject, text, subject }}
|
|
34
|
+
*/ const sendTemplatedEmail = (emailOptions, emailTemplate, data)=>{
|
|
35
|
+
const attributes = [
|
|
36
|
+
'subject',
|
|
37
|
+
'text',
|
|
38
|
+
'html'
|
|
39
|
+
];
|
|
40
|
+
const missingAttributes = ___namespace.difference(attributes, Object.keys(emailTemplate));
|
|
41
|
+
if (missingAttributes.length > 0) {
|
|
42
|
+
throw new Error(`Following attributes are missing from your email template : ${missingAttributes.join(', ')}`);
|
|
43
|
+
}
|
|
44
|
+
const allowedInterpolationVariables = utils.objects.keysDeep(data);
|
|
45
|
+
const interpolate = createStrictInterpolationRegExp(allowedInterpolationVariables, 'g');
|
|
46
|
+
const templatedAttributes = attributes.reduce((compiled, attribute)=>emailTemplate[attribute] ? Object.assign(compiled, {
|
|
47
|
+
[attribute]: ___namespace.template(emailTemplate[attribute], {
|
|
48
|
+
interpolate
|
|
49
|
+
})(data)
|
|
50
|
+
}) : compiled, {});
|
|
51
|
+
return strapi.plugin('email').provider.send({
|
|
52
|
+
...emailOptions,
|
|
53
|
+
...templatedAttributes
|
|
54
|
+
});
|
|
55
|
+
};
|
|
56
|
+
const emailService = ()=>({
|
|
57
|
+
getProviderSettings,
|
|
58
|
+
send,
|
|
59
|
+
sendTemplatedEmail
|
|
60
|
+
});
|
|
61
|
+
|
|
62
|
+
module.exports = emailService;
|
|
63
|
+
//# sourceMappingURL=email.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"email.js","sources":["../../../server/src/services/email.ts"],"sourcesContent":["import * as _ from 'lodash';\nimport { objects, template } from '@strapi/utils';\n\nimport type {\n EmailConfig,\n EmailOptions,\n EmailTemplate,\n EmailTemplateData,\n SendOptions,\n} from '../types';\n\nconst { createStrictInterpolationRegExp } = template;\n\nconst getProviderSettings = (): EmailConfig => strapi.config.get('plugin::email');\n\nconst send = async (options: SendOptions) => strapi.plugin('email').provider.send(options);\n\n/**\n * fill subject, text and html using lodash template\n * @param {object} emailOptions - to, from and replyto...\n * @param {object} emailTemplate - object containing attributes to fill\n * @param {object} data - data used to fill the template\n * @returns {{ subject, text, subject }}\n */\nconst sendTemplatedEmail = (\n emailOptions: EmailOptions,\n emailTemplate: EmailTemplate,\n data: EmailTemplateData\n) => {\n const attributes = ['subject', 'text', 'html'];\n const missingAttributes = _.difference(attributes, Object.keys(emailTemplate));\n\n if (missingAttributes.length > 0) {\n throw new Error(\n `Following attributes are missing from your email template : ${missingAttributes.join(', ')}`\n );\n }\n\n const allowedInterpolationVariables = objects.keysDeep(data);\n const interpolate = createStrictInterpolationRegExp(allowedInterpolationVariables, 'g');\n\n const templatedAttributes = attributes.reduce(\n (compiled, attribute) =>\n emailTemplate[attribute]\n ? Object.assign(compiled, {\n [attribute]: _.template(emailTemplate[attribute], {\n interpolate,\n })(data),\n })\n : compiled,\n {}\n );\n\n return strapi.plugin('email').provider.send({ ...emailOptions, ...templatedAttributes });\n};\n\nconst emailService = () => ({\n getProviderSettings,\n send,\n sendTemplatedEmail,\n});\n\nexport default emailService;\n"],"names":["createStrictInterpolationRegExp","template","getProviderSettings","strapi","config","get","send","options","plugin","provider","sendTemplatedEmail","emailOptions","emailTemplate","data","attributes","missingAttributes","_","difference","Object","keys","length","Error","join","allowedInterpolationVariables","objects","keysDeep","interpolate","templatedAttributes","reduce","compiled","attribute","assign","emailService"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;AAWA,MAAM,EAAEA,+BAA+B,EAAE,GAAGC,cAAAA;AAE5C,MAAMC,sBAAsB,IAAmBC,MAAAA,CAAOC,MAAM,CAACC,GAAG,CAAC,eAAA,CAAA;AAEjE,MAAMC,IAAAA,GAAO,OAAOC,OAAAA,GAAyBJ,MAAOK,CAAAA,MAAM,CAAC,OAASC,CAAAA,CAAAA,QAAQ,CAACH,IAAI,CAACC,OAAAA,CAAAA;AAElF;;;;;;AAMC,IACD,MAAMG,kBAAAA,GAAqB,CACzBC,YAAAA,EACAC,aACAC,EAAAA,IAAAA,GAAAA;AAEA,IAAA,MAAMC,UAAa,GAAA;AAAC,QAAA,SAAA;AAAW,QAAA,MAAA;AAAQ,QAAA;AAAO,KAAA;AAC9C,IAAA,MAAMC,oBAAoBC,YAAEC,CAAAA,UAAU,CAACH,UAAYI,EAAAA,MAAAA,CAAOC,IAAI,CAACP,aAAAA,CAAAA,CAAAA;IAE/D,IAAIG,iBAAAA,CAAkBK,MAAM,GAAG,CAAG,EAAA;QAChC,MAAM,IAAIC,MACR,CAAC,4DAA4D,EAAEN,iBAAkBO,CAAAA,IAAI,CAAC,IAAA,CAAA,CAAM,CAAC,CAAA;AAEjG;IAEA,MAAMC,6BAAAA,GAAgCC,aAAQC,CAAAA,QAAQ,CAACZ,IAAAA,CAAAA;IACvD,MAAMa,WAAAA,GAAc1B,gCAAgCuB,6BAA+B,EAAA,GAAA,CAAA;AAEnF,IAAA,MAAMI,mBAAsBb,GAAAA,UAAAA,CAAWc,MAAM,CAC3C,CAACC,QAAUC,EAAAA,SAAAA,GACTlB,aAAa,CAACkB,SAAU,CAAA,GACpBZ,MAAOa,CAAAA,MAAM,CAACF,QAAU,EAAA;YACtB,CAACC,SAAAA,GAAYd,YAAEf,CAAAA,QAAQ,CAACW,aAAa,CAACkB,UAAU,EAAE;AAChDJ,gBAAAA;aACCb,CAAAA,CAAAA,IAAAA;AACL,SAAA,CAAA,GACAgB,UACN,EAAC,CAAA;AAGH,IAAA,OAAO1B,OAAOK,MAAM,CAAC,SAASC,QAAQ,CAACH,IAAI,CAAC;AAAE,QAAA,GAAGK,YAAY;AAAE,QAAA,GAAGgB;AAAoB,KAAA,CAAA;AACxF,CAAA;AAEMK,MAAAA,YAAAA,GAAe,KAAO;AAC1B9B,QAAAA,mBAAAA;AACAI,QAAAA,IAAAA;AACAI,QAAAA;KACF;;;;"}
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
import * as _ from 'lodash';
|
|
2
|
+
import { objects, template } from '@strapi/utils';
|
|
3
|
+
|
|
4
|
+
const { createStrictInterpolationRegExp } = template;
|
|
5
|
+
const getProviderSettings = ()=>strapi.config.get('plugin::email');
|
|
6
|
+
const send = async (options)=>strapi.plugin('email').provider.send(options);
|
|
7
|
+
/**
|
|
8
|
+
* fill subject, text and html using lodash template
|
|
9
|
+
* @param {object} emailOptions - to, from and replyto...
|
|
10
|
+
* @param {object} emailTemplate - object containing attributes to fill
|
|
11
|
+
* @param {object} data - data used to fill the template
|
|
12
|
+
* @returns {{ subject, text, subject }}
|
|
13
|
+
*/ const sendTemplatedEmail = (emailOptions, emailTemplate, data)=>{
|
|
14
|
+
const attributes = [
|
|
15
|
+
'subject',
|
|
16
|
+
'text',
|
|
17
|
+
'html'
|
|
18
|
+
];
|
|
19
|
+
const missingAttributes = _.difference(attributes, Object.keys(emailTemplate));
|
|
20
|
+
if (missingAttributes.length > 0) {
|
|
21
|
+
throw new Error(`Following attributes are missing from your email template : ${missingAttributes.join(', ')}`);
|
|
22
|
+
}
|
|
23
|
+
const allowedInterpolationVariables = objects.keysDeep(data);
|
|
24
|
+
const interpolate = createStrictInterpolationRegExp(allowedInterpolationVariables, 'g');
|
|
25
|
+
const templatedAttributes = attributes.reduce((compiled, attribute)=>emailTemplate[attribute] ? Object.assign(compiled, {
|
|
26
|
+
[attribute]: _.template(emailTemplate[attribute], {
|
|
27
|
+
interpolate
|
|
28
|
+
})(data)
|
|
29
|
+
}) : compiled, {});
|
|
30
|
+
return strapi.plugin('email').provider.send({
|
|
31
|
+
...emailOptions,
|
|
32
|
+
...templatedAttributes
|
|
33
|
+
});
|
|
34
|
+
};
|
|
35
|
+
const emailService = ()=>({
|
|
36
|
+
getProviderSettings,
|
|
37
|
+
send,
|
|
38
|
+
sendTemplatedEmail
|
|
39
|
+
});
|
|
40
|
+
|
|
41
|
+
export { emailService as default };
|
|
42
|
+
//# sourceMappingURL=email.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"email.mjs","sources":["../../../server/src/services/email.ts"],"sourcesContent":["import * as _ from 'lodash';\nimport { objects, template } from '@strapi/utils';\n\nimport type {\n EmailConfig,\n EmailOptions,\n EmailTemplate,\n EmailTemplateData,\n SendOptions,\n} from '../types';\n\nconst { createStrictInterpolationRegExp } = template;\n\nconst getProviderSettings = (): EmailConfig => strapi.config.get('plugin::email');\n\nconst send = async (options: SendOptions) => strapi.plugin('email').provider.send(options);\n\n/**\n * fill subject, text and html using lodash template\n * @param {object} emailOptions - to, from and replyto...\n * @param {object} emailTemplate - object containing attributes to fill\n * @param {object} data - data used to fill the template\n * @returns {{ subject, text, subject }}\n */\nconst sendTemplatedEmail = (\n emailOptions: EmailOptions,\n emailTemplate: EmailTemplate,\n data: EmailTemplateData\n) => {\n const attributes = ['subject', 'text', 'html'];\n const missingAttributes = _.difference(attributes, Object.keys(emailTemplate));\n\n if (missingAttributes.length > 0) {\n throw new Error(\n `Following attributes are missing from your email template : ${missingAttributes.join(', ')}`\n );\n }\n\n const allowedInterpolationVariables = objects.keysDeep(data);\n const interpolate = createStrictInterpolationRegExp(allowedInterpolationVariables, 'g');\n\n const templatedAttributes = attributes.reduce(\n (compiled, attribute) =>\n emailTemplate[attribute]\n ? Object.assign(compiled, {\n [attribute]: _.template(emailTemplate[attribute], {\n interpolate,\n })(data),\n })\n : compiled,\n {}\n );\n\n return strapi.plugin('email').provider.send({ ...emailOptions, ...templatedAttributes });\n};\n\nconst emailService = () => ({\n getProviderSettings,\n send,\n sendTemplatedEmail,\n});\n\nexport default emailService;\n"],"names":["createStrictInterpolationRegExp","template","getProviderSettings","strapi","config","get","send","options","plugin","provider","sendTemplatedEmail","emailOptions","emailTemplate","data","attributes","missingAttributes","_","difference","Object","keys","length","Error","join","allowedInterpolationVariables","objects","keysDeep","interpolate","templatedAttributes","reduce","compiled","attribute","assign","emailService"],"mappings":";;;AAWA,MAAM,EAAEA,+BAA+B,EAAE,GAAGC,QAAAA;AAE5C,MAAMC,sBAAsB,IAAmBC,MAAAA,CAAOC,MAAM,CAACC,GAAG,CAAC,eAAA,CAAA;AAEjE,MAAMC,IAAAA,GAAO,OAAOC,OAAAA,GAAyBJ,MAAOK,CAAAA,MAAM,CAAC,OAASC,CAAAA,CAAAA,QAAQ,CAACH,IAAI,CAACC,OAAAA,CAAAA;AAElF;;;;;;AAMC,IACD,MAAMG,kBAAAA,GAAqB,CACzBC,YAAAA,EACAC,aACAC,EAAAA,IAAAA,GAAAA;AAEA,IAAA,MAAMC,UAAa,GAAA;AAAC,QAAA,SAAA;AAAW,QAAA,MAAA;AAAQ,QAAA;AAAO,KAAA;AAC9C,IAAA,MAAMC,oBAAoBC,CAAEC,CAAAA,UAAU,CAACH,UAAYI,EAAAA,MAAAA,CAAOC,IAAI,CAACP,aAAAA,CAAAA,CAAAA;IAE/D,IAAIG,iBAAAA,CAAkBK,MAAM,GAAG,CAAG,EAAA;QAChC,MAAM,IAAIC,MACR,CAAC,4DAA4D,EAAEN,iBAAkBO,CAAAA,IAAI,CAAC,IAAA,CAAA,CAAM,CAAC,CAAA;AAEjG;IAEA,MAAMC,6BAAAA,GAAgCC,OAAQC,CAAAA,QAAQ,CAACZ,IAAAA,CAAAA;IACvD,MAAMa,WAAAA,GAAc1B,gCAAgCuB,6BAA+B,EAAA,GAAA,CAAA;AAEnF,IAAA,MAAMI,mBAAsBb,GAAAA,UAAAA,CAAWc,MAAM,CAC3C,CAACC,QAAUC,EAAAA,SAAAA,GACTlB,aAAa,CAACkB,SAAU,CAAA,GACpBZ,MAAOa,CAAAA,MAAM,CAACF,QAAU,EAAA;YACtB,CAACC,SAAAA,GAAYd,CAAEf,CAAAA,QAAQ,CAACW,aAAa,CAACkB,UAAU,EAAE;AAChDJ,gBAAAA;aACCb,CAAAA,CAAAA,IAAAA;AACL,SAAA,CAAA,GACAgB,UACN,EAAC,CAAA;AAGH,IAAA,OAAO1B,OAAOK,MAAM,CAAC,SAASC,QAAQ,CAACH,IAAI,CAAC;AAAE,QAAA,GAAGK,YAAY;AAAE,QAAA,GAAGgB;AAAoB,KAAA,CAAA;AACxF,CAAA;AAEMK,MAAAA,YAAAA,GAAe,KAAO;AAC1B9B,QAAAA,mBAAAA;AACAI,QAAAA,IAAAA;AACAI,QAAAA;KACF;;;;"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sources":["../../../server/src/services/index.ts"],"sourcesContent":["import email from './email';\n\nexport const services = { email };\n"],"names":["services","email"],"mappings":";;;;MAEaA,QAAW,GAAA;AAAEC,IAAAA;AAAM;;;;"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.mjs","sources":["../../../server/src/services/index.ts"],"sourcesContent":["import email from './email';\n\nexport const services = { email };\n"],"names":["services","email"],"mappings":";;MAEaA,QAAW,GAAA;AAAEC,WAAAA;AAAM;;;;"}
|
|
@@ -27,13 +27,9 @@ declare const _default: {
|
|
|
27
27
|
};
|
|
28
28
|
}[];
|
|
29
29
|
};
|
|
30
|
-
'content-api': {
|
|
31
|
-
type:
|
|
32
|
-
routes:
|
|
33
|
-
method: string;
|
|
34
|
-
path: string;
|
|
35
|
-
handler: string;
|
|
36
|
-
}[];
|
|
30
|
+
'content-api': () => {
|
|
31
|
+
type: "content-api";
|
|
32
|
+
routes: import("@strapi/types/dist/core").RouteInput[];
|
|
37
33
|
};
|
|
38
34
|
};
|
|
39
35
|
controllers: {
|
|
@@ -44,6 +40,11 @@ declare const _default: {
|
|
|
44
40
|
};
|
|
45
41
|
};
|
|
46
42
|
config: import("./types").StrapiConfig;
|
|
43
|
+
middlewares: {
|
|
44
|
+
rateLimit: (config: any, { strapi }: {
|
|
45
|
+
strapi: import("@strapi/types/dist/core").Strapi;
|
|
46
|
+
}) => (ctx: import("koa").Context, next: import("koa").Next) => Promise<any>;
|
|
47
|
+
};
|
|
47
48
|
};
|
|
48
49
|
export default _default;
|
|
49
50
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../server/src/index.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../server/src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAOA,wBAOE"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
/// <reference types="koa" />
|
|
2
|
+
export { default as rateLimit } from './rateLimit';
|
|
3
|
+
declare const _default: {
|
|
4
|
+
rateLimit: (config: any, { strapi }: {
|
|
5
|
+
strapi: import("@strapi/types/dist/core").Strapi;
|
|
6
|
+
}) => (ctx: import("koa").Context, next: import("koa").Next) => Promise<any>;
|
|
7
|
+
};
|
|
8
|
+
export default _default;
|
|
9
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../server/src/middlewares/index.ts"],"names":[],"mappings":";AAEA,OAAO,EAAE,OAAO,IAAI,SAAS,EAAE,MAAM,aAAa,CAAC;;;;;;AAEnD,wBAEE"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import type { Context, Next } from 'koa';
|
|
2
|
+
import type { Core } from '@strapi/types';
|
|
3
|
+
declare const _default: (config: any, { strapi }: {
|
|
4
|
+
strapi: Core.Strapi;
|
|
5
|
+
}) => (ctx: Context, next: Next) => Promise<any>;
|
|
6
|
+
export default _default;
|
|
7
|
+
//# sourceMappingURL=rateLimit.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"rateLimit.d.ts","sourceRoot":"","sources":["../../../../server/src/middlewares/rateLimit.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,KAAK,CAAC;AAGzC,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,eAAe,CAAC;iCAIlB,GAAG,cAAc;IAAE,MAAM,EAAE,KAAK,MAAM,CAAA;CAAE,WAClD,OAAO,QAAQ,IAAI;AADjC,wBA+BI"}
|
|
@@ -1,10 +1,7 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
path: string;
|
|
6
|
-
handler: string;
|
|
7
|
-
}[];
|
|
1
|
+
import type { Core } from '@strapi/types';
|
|
2
|
+
declare const createRoutes: () => {
|
|
3
|
+
type: "content-api";
|
|
4
|
+
routes: Core.RouteInput[];
|
|
8
5
|
};
|
|
9
|
-
export default
|
|
6
|
+
export default createRoutes;
|
|
10
7
|
//# sourceMappingURL=content-api.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"content-api.d.ts","sourceRoot":"","sources":["../../../../server/src/routes/content-api.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"content-api.d.ts","sourceRoot":"","sources":["../../../../server/src/routes/content-api.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,eAAe,CAAC;AAI1C,QAAA,MAAM,YAAY;;;CAchB,CAAC;AAEH,eAAe,YAAY,CAAC"}
|