@webiny/api-mailer 0.0.0-unstable.e53eceafb5 → 0.0.0-unstable.e6f0dc8ca7
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/README.md +10 -13
- package/constants.d.ts +1 -0
- package/constants.js +3 -0
- package/constants.js.map +1 -0
- package/domain/CodeMailerSettings/abstractions.d.ts +8 -0
- package/domain/CodeMailerSettings/abstractions.js +4 -0
- package/domain/CodeMailerSettings/abstractions.js.map +1 -0
- package/domain/MailTransport/abstractions.d.ts +26 -0
- package/domain/MailTransport/abstractions.js +6 -0
- package/domain/MailTransport/abstractions.js.map +1 -0
- package/domain/MailerService/abstractions.d.ts +19 -0
- package/domain/MailerService/abstractions.js +4 -0
- package/domain/MailerService/abstractions.js.map +1 -0
- package/domain/MailerService/errors.d.ts +16 -0
- package/domain/MailerService/errors.js +30 -0
- package/domain/MailerService/errors.js.map +1 -0
- package/domain/errors.d.ts +28 -0
- package/domain/errors.js +52 -0
- package/domain/errors.js.map +1 -0
- package/exports/api/mailer.d.ts +4 -0
- package/exports/api/mailer.js +6 -0
- package/exports/api/mailer.js.map +1 -0
- package/features/CodeMailerSettings/CodeMailerSettingsImpl.d.ts +12 -0
- package/features/CodeMailerSettings/CodeMailerSettingsImpl.js +22 -0
- package/features/CodeMailerSettings/CodeMailerSettingsImpl.js.map +1 -0
- package/features/CodeMailerSettings/feature.d.ts +4 -0
- package/features/CodeMailerSettings/feature.js +10 -0
- package/features/CodeMailerSettings/feature.js.map +1 -0
- package/features/DummyTransport/DummyMailTransport.d.ts +9 -0
- package/features/DummyTransport/DummyMailTransport.js +12 -0
- package/features/DummyTransport/DummyMailTransport.js.map +1 -0
- package/features/DummyTransport/DummyMailTransportFactory.d.ts +9 -0
- package/features/DummyTransport/DummyMailTransportFactory.js +14 -0
- package/features/DummyTransport/DummyMailTransportFactory.js.map +1 -0
- package/features/DummyTransport/feature.d.ts +4 -0
- package/features/DummyTransport/feature.js +10 -0
- package/features/DummyTransport/feature.js.map +1 -0
- package/features/GetSettings/GetSettingsRepository.d.ts +16 -0
- package/features/GetSettings/GetSettingsRepository.js +58 -0
- package/features/GetSettings/GetSettingsRepository.js.map +1 -0
- package/features/GetSettings/GetSettingsUseCase.d.ts +11 -0
- package/features/GetSettings/GetSettingsUseCase.js +15 -0
- package/features/GetSettings/GetSettingsUseCase.js.map +1 -0
- package/features/GetSettings/abstractions.d.ts +22 -0
- package/features/GetSettings/abstractions.js +5 -0
- package/features/GetSettings/abstractions.js.map +1 -0
- package/features/GetSettings/feature.d.ts +4 -0
- package/features/GetSettings/feature.js +12 -0
- package/features/GetSettings/feature.js.map +1 -0
- package/features/GetSettings/index.d.ts +1 -0
- package/features/GetSettings/index.js +3 -0
- package/features/GetSettings/index.js.map +1 -0
- package/features/MailerService/ActiveTransport.d.ts +10 -0
- package/features/MailerService/ActiveTransport.js +20 -0
- package/features/MailerService/ActiveTransport.js.map +1 -0
- package/features/MailerService/MailerService.d.ts +16 -0
- package/features/MailerService/MailerService.js +53 -0
- package/features/MailerService/MailerService.js.map +1 -0
- package/features/MailerService/feature.d.ts +4 -0
- package/features/MailerService/feature.js +12 -0
- package/features/MailerService/feature.js.map +1 -0
- package/features/SaveSettings/SaveSettingsRepository.d.ts +13 -0
- package/features/SaveSettings/SaveSettingsRepository.js +59 -0
- package/features/SaveSettings/SaveSettingsRepository.js.map +1 -0
- package/features/SaveSettings/SaveSettingsUseCase.d.ts +18 -0
- package/features/SaveSettings/SaveSettingsUseCase.js +69 -0
- package/features/SaveSettings/SaveSettingsUseCase.js.map +1 -0
- package/features/SaveSettings/abstractions.d.ts +61 -0
- package/features/SaveSettings/abstractions.js +20 -0
- package/features/SaveSettings/abstractions.js.map +1 -0
- package/features/SaveSettings/events.d.ts +10 -0
- package/features/SaveSettings/events.js +16 -0
- package/features/SaveSettings/events.js.map +1 -0
- package/features/SaveSettings/feature.d.ts +4 -0
- package/features/SaveSettings/feature.js +12 -0
- package/features/SaveSettings/feature.js.map +1 -0
- package/features/SaveSettings/index.d.ts +1 -0
- package/features/SaveSettings/index.js +3 -0
- package/features/SaveSettings/index.js.map +1 -0
- package/features/SaveSettings/validation.d.ts +9 -0
- package/features/SaveSettings/validation.js +23 -0
- package/features/SaveSettings/validation.js.map +1 -0
- package/features/SendMail/SendMailUseCase.d.ts +16 -0
- package/features/SendMail/SendMailUseCase.js +65 -0
- package/features/SendMail/SendMailUseCase.js.map +1 -0
- package/features/SendMail/abstractions.d.ts +45 -0
- package/features/SendMail/abstractions.js +11 -0
- package/features/SendMail/abstractions.js.map +1 -0
- package/features/SendMail/events.d.ts +14 -0
- package/features/SendMail/events.js +22 -0
- package/features/SendMail/events.js.map +1 -0
- package/features/SendMail/feature.d.ts +4 -0
- package/features/SendMail/feature.js +10 -0
- package/features/SendMail/feature.js.map +1 -0
- package/features/SendMail/index.d.ts +1 -0
- package/features/SendMail/index.js +3 -0
- package/features/SendMail/index.js.map +1 -0
- package/features/SmtpTransport/SmtpConfig.d.ts +6 -0
- package/features/SmtpTransport/SmtpConfig.js +29 -0
- package/features/SmtpTransport/SmtpConfig.js.map +1 -0
- package/features/SmtpTransport/SmtpMailTransport.d.ts +68 -0
- package/features/SmtpTransport/SmtpMailTransport.js +67 -0
- package/features/SmtpTransport/SmtpMailTransport.js.map +1 -0
- package/features/SmtpTransport/SmtpMailTransportFactory.d.ts +10 -0
- package/features/SmtpTransport/SmtpMailTransportFactory.js +15 -0
- package/features/SmtpTransport/SmtpMailTransportFactory.js.map +1 -0
- package/features/SmtpTransport/feature.d.ts +4 -0
- package/features/SmtpTransport/feature.js +10 -0
- package/features/SmtpTransport/feature.js.map +1 -0
- package/graphql/settings.d.ts +2 -2
- package/graphql/settings.js +60 -36
- package/graphql/settings.js.map +1 -1
- package/index.d.ts +4 -5
- package/index.js +22 -78
- package/index.js.map +1 -1
- package/package.json +27 -31
- package/types.d.ts +0 -107
- package/types.js +1 -5
- package/types.js.map +1 -1
- package/utils/isMailboxAddress.d.ts +6 -0
- package/utils/isMailboxAddress.js +12 -0
- package/utils/isMailboxAddress.js.map +1 -0
- package/context.d.ts +0 -3
- package/context.js +0 -20
- package/context.js.map +0 -1
- package/crud/settings/hooks.d.ts +0 -5
- package/crud/settings/hooks.js +0 -42
- package/crud/settings/hooks.js.map +0 -1
- package/crud/settings/model.d.ts +0 -2
- package/crud/settings/model.js +0 -72
- package/crud/settings/model.js.map +0 -1
- package/crud/settings/password.d.ts +0 -7
- package/crud/settings/password.js +0 -55
- package/crud/settings/password.js.map +0 -1
- package/crud/settings/secret.d.ts +0 -1
- package/crud/settings/secret.js +0 -19
- package/crud/settings/secret.js.map +0 -1
- package/crud/settings/transform.d.ts +0 -13
- package/crud/settings/transform.js +0 -46
- package/crud/settings/transform.js.map +0 -1
- package/crud/settings/validation.d.ts +0 -45
- package/crud/settings/validation.js +0 -28
- package/crud/settings/validation.js.map +0 -1
- package/crud/settings.crud.d.ts +0 -5
- package/crud/settings.crud.js +0 -269
- package/crud/settings.crud.js.map +0 -1
- package/crud/transport/onTransportBeforeSend.d.ts +0 -7
- package/crud/transport/onTransportBeforeSend.js +0 -62
- package/crud/transport/onTransportBeforeSend.js.map +0 -1
- package/crud/transporter.crud.d.ts +0 -2
- package/crud/transporter.crud.js +0 -158
- package/crud/transporter.crud.js.map +0 -1
- package/graphql/index.d.ts +0 -1
- package/graphql/index.js +0 -13
- package/graphql/index.js.map +0 -1
- package/plugins/CreateTransportPlugin.d.ts +0 -17
- package/plugins/CreateTransportPlugin.js +0 -24
- package/plugins/CreateTransportPlugin.js.map +0 -1
- package/plugins/index.d.ts +0 -1
- package/plugins/index.js +0 -18
- package/plugins/index.js.map +0 -1
- package/transports/createDummyTransport.d.ts +0 -5
- package/transports/createDummyTransport.js +0 -25
- package/transports/createDummyTransport.js.map +0 -1
- package/transports/createSmtpTransport.d.ts +0 -13
- package/transports/createSmtpTransport.js +0 -94
- package/transports/createSmtpTransport.js.map +0 -1
- package/transports/index.d.ts +0 -2
- package/transports/index.js +0 -29
- package/transports/index.js.map +0 -1
package/graphql/settings.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["
|
|
1
|
+
{"version":3,"names":["ErrorResponse","GraphQLSchemaPlugin","GetSettingsUseCase","SaveSettingsUseCase","ActiveTransport","emptyResolver","toPublicSettings","settings","source","password","_password","publicSettings","createSettingsGraphQL","typeDefs","resolvers","Query","mailer","MailerQuery","getSettings","_","__","context","activeTransport","container","resolve","transportName","name","data","error","result","execute","value","ex","Mutation","MailerMutation","saveSettings","args","isFail"],"sources":["settings.ts"],"sourcesContent":["import { ErrorResponse, GraphQLSchemaPlugin } from \"@webiny/handler-graphql\";\nimport { GetSettingsUseCase } from \"~/features/GetSettings/abstractions.js\";\nimport { SaveSettingsUseCase } from \"~/features/SaveSettings/abstractions.js\";\nimport { ActiveTransport } from \"~/domain/MailTransport/abstractions.js\";\nimport type { MailerSettingsSource } from \"~/features/GetSettings/abstractions.js\";\nimport type { Context } from \"@webiny/api/types.js\";\nimport type { TransportSettings } from \"~/types.js\";\n\nconst emptyResolver = () => ({});\n\n// Strip `password` before the settings leave the server and tack on `source`\n// so the admin UI can branch on code-vs-storage. Accepts both the full\n// `TransportSettings` (from getSettings) and the already-stripped\n// `Omit<TransportSettings, \"password\">` (from saveSettings) — defense in depth\n// even when the input type carries no password to begin with.\nconst toPublicSettings = (\n settings: TransportSettings | Omit<TransportSettings, \"password\"> | null,\n source: MailerSettingsSource\n): (Omit<TransportSettings, \"password\"> & { source: MailerSettingsSource }) | null => {\n if (!settings) {\n return null;\n }\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n const { password: _password, ...publicSettings } = settings as TransportSettings;\n return { ...publicSettings, source };\n};\n\nexport const createSettingsGraphQL = () => {\n return new GraphQLSchemaPlugin<Context>({\n typeDefs: `\n type MailerTransportSettingsError {\n message: String!\n code: String\n data: JSON\n }\n\n type MailerTransportSettings {\n host: String\n port: Number\n user: String\n from: String\n replyTo: String\n source: String\n }\n\n type MailerTransportSettingsResponse {\n data: MailerTransportSettings\n error: MailerTransportSettingsError\n }\n\n type MailerQuery {\n getSettings: MailerTransportSettingsResponse!\n }\n\n input MailerTransportSettingsInput {\n host: String!\n port: Number\n user: String!\n password: String\n from: String!\n replyTo: String\n }\n\n type MailerMutation {\n saveSettings(data: MailerTransportSettingsInput!): MailerTransportSettingsResponse!\n }\n\n extend type Query {\n mailer: MailerQuery\n }\n extend type Mutation {\n mailer: MailerMutation\n }\n `,\n resolvers: {\n Query: {\n mailer: emptyResolver\n },\n MailerQuery: {\n getSettings: async (_, __, context) => {\n try {\n const activeTransport = context.container.resolve(ActiveTransport);\n const transportName = activeTransport.name();\n\n if (!transportName) {\n return { data: null, error: null };\n }\n\n const getSettings = context.container.resolve(GetSettingsUseCase);\n const result = await getSettings.execute(transportName);\n\n const { settings, source } = result.value;\n\n return {\n data: toPublicSettings(settings, source),\n error: null\n };\n } catch (ex) {\n return new ErrorResponse(ex);\n }\n }\n },\n Mutation: {\n mailer: emptyResolver\n },\n MailerMutation: {\n saveSettings: async (_, args: any, context) => {\n try {\n const saveSettings = context.container.resolve(SaveSettingsUseCase);\n const result = await saveSettings.execute(args.data);\n\n if (result.isFail()) {\n return new ErrorResponse(result.error);\n }\n\n return {\n data: toPublicSettings(result.value, \"storage\"),\n error: null\n };\n } catch (ex) {\n return new ErrorResponse(ex);\n }\n }\n }\n }\n });\n};\n"],"mappings":"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","ignoreList":[]}
|
package/index.d.ts
CHANGED
|
@@ -1,5 +1,4 @@
|
|
|
1
|
-
|
|
2
|
-
export
|
|
3
|
-
export
|
|
4
|
-
export declare const
|
|
5
|
-
export declare const createMailerGraphQL: () => import("@webiny/handler-graphql").GraphQLSchemaPlugin<import("./types").MailerContext>[];
|
|
1
|
+
export { MailerService } from "./domain/MailerService/abstractions.js";
|
|
2
|
+
export type { IMailerService, IMailerServiceErrors } from "./domain/MailerService/abstractions.js";
|
|
3
|
+
export declare const createMailerContext: () => import("@webiny/api").ContextPlugin<import("@webiny/api/types.js").Context>;
|
|
4
|
+
export declare const createMailerGraphQL: () => import("@webiny/handler-graphql/index.js").GraphQLSchemaPlugin<import("@webiny/api/types.js").Context>;
|
package/index.js
CHANGED
|
@@ -1,83 +1,27 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
}
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
};
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
get: function () {
|
|
22
|
-
return _plugins[key];
|
|
23
|
-
}
|
|
24
|
-
});
|
|
25
|
-
});
|
|
26
|
-
var _model = require("./crud/settings/model");
|
|
27
|
-
var _graphql = require("./graphql");
|
|
28
|
-
var _transports = require("./transports");
|
|
29
|
-
Object.keys(_transports).forEach(function (key) {
|
|
30
|
-
if (key === "default" || key === "__esModule") return;
|
|
31
|
-
if (Object.prototype.hasOwnProperty.call(_exportNames, key)) return;
|
|
32
|
-
if (key in exports && exports[key] === _transports[key]) return;
|
|
33
|
-
Object.defineProperty(exports, key, {
|
|
34
|
-
enumerable: true,
|
|
35
|
-
get: function () {
|
|
36
|
-
return _transports[key];
|
|
37
|
-
}
|
|
1
|
+
import { createContextPlugin } from "@webiny/api";
|
|
2
|
+
import { CodeMailerSettingsFeature } from "./features/CodeMailerSettings/feature.js";
|
|
3
|
+
import { GetSettingsFeature } from "./features/GetSettings/feature.js";
|
|
4
|
+
import { SaveSettingsFeature } from "./features/SaveSettings/feature.js";
|
|
5
|
+
import { DummyTransportFeature } from "./features/DummyTransport/feature.js";
|
|
6
|
+
import { SmtpTransportFeature } from "./features/SmtpTransport/feature.js";
|
|
7
|
+
import { MailerServiceFeature } from "./features/MailerService/feature.js";
|
|
8
|
+
import { SendMailFeature } from "./features/SendMail/feature.js";
|
|
9
|
+
import { createSettingsGraphQL } from "./graphql/settings.js";
|
|
10
|
+
export { MailerService } from "./domain/MailerService/abstractions.js";
|
|
11
|
+
export const createMailerContext = () => {
|
|
12
|
+
return createContextPlugin(context => {
|
|
13
|
+
// Register all features.
|
|
14
|
+
CodeMailerSettingsFeature.register(context.container);
|
|
15
|
+
DummyTransportFeature.register(context.container);
|
|
16
|
+
SmtpTransportFeature.register(context.container);
|
|
17
|
+
GetSettingsFeature.register(context.container);
|
|
18
|
+
SaveSettingsFeature.register(context.container);
|
|
19
|
+
MailerServiceFeature.register(context.container);
|
|
20
|
+
SendMailFeature.register(context.container);
|
|
38
21
|
});
|
|
39
|
-
});
|
|
40
|
-
const createMailerContext = () => {
|
|
41
|
-
return [
|
|
42
|
-
/**
|
|
43
|
-
* Models to use via the CMS
|
|
44
|
-
*/
|
|
45
|
-
(0, _model.createSettingsModel)(),
|
|
46
|
-
/**
|
|
47
|
-
* If something is wrong with the smtp mailer, we will initialize the dummy one.
|
|
48
|
-
*/
|
|
49
|
-
(0, _plugins.createTransport)(async () => {
|
|
50
|
-
const plugin = await (0, _createDummyTransport.createDummyTransport)();
|
|
51
|
-
plugin.name = "mailer.dummy-default";
|
|
52
|
-
return plugin;
|
|
53
|
-
}),
|
|
54
|
-
/**
|
|
55
|
-
* Smtp mailer goes into the plugins after the dummy one because plugins are loaded in reverse.
|
|
56
|
-
*/
|
|
57
|
-
(0, _plugins.createTransport)(async ({
|
|
58
|
-
settings
|
|
59
|
-
}) => {
|
|
60
|
-
/**
|
|
61
|
-
* We need to map our settings to the required settings for the SMTP NodeMailer transport.
|
|
62
|
-
*/
|
|
63
|
-
const config = {
|
|
64
|
-
...(settings || {})
|
|
65
|
-
};
|
|
66
|
-
if (settings) {
|
|
67
|
-
config.auth = {
|
|
68
|
-
user: settings.user,
|
|
69
|
-
pass: settings.password
|
|
70
|
-
};
|
|
71
|
-
}
|
|
72
|
-
const plugin = await (0, _createSmtpTransport.createSmtpTransport)(config);
|
|
73
|
-
plugin.name = "mailer.smtp-default";
|
|
74
|
-
return plugin;
|
|
75
|
-
}), (0, _context.createMailerContext)()];
|
|
76
22
|
};
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
return [...(0, _graphql.createGraphQL)()];
|
|
23
|
+
export const createMailerGraphQL = () => {
|
|
24
|
+
return createSettingsGraphQL();
|
|
80
25
|
};
|
|
81
|
-
exports.createMailerGraphQL = createMailerGraphQL;
|
|
82
26
|
|
|
83
27
|
//# sourceMappingURL=index.js.map
|
package/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["
|
|
1
|
+
{"version":3,"names":["createContextPlugin","CodeMailerSettingsFeature","GetSettingsFeature","SaveSettingsFeature","DummyTransportFeature","SmtpTransportFeature","MailerServiceFeature","SendMailFeature","createSettingsGraphQL","MailerService","createMailerContext","context","register","container","createMailerGraphQL"],"sources":["index.ts"],"sourcesContent":["import { createContextPlugin } from \"@webiny/api\";\nimport { CodeMailerSettingsFeature } from \"~/features/CodeMailerSettings/feature.js\";\nimport { GetSettingsFeature } from \"~/features/GetSettings/feature.js\";\nimport { SaveSettingsFeature } from \"~/features/SaveSettings/feature.js\";\nimport { DummyTransportFeature } from \"~/features/DummyTransport/feature.js\";\nimport { SmtpTransportFeature } from \"~/features/SmtpTransport/feature.js\";\nimport { MailerServiceFeature } from \"~/features/MailerService/feature.js\";\nimport { SendMailFeature } from \"~/features/SendMail/feature.js\";\nimport { createSettingsGraphQL } from \"~/graphql/settings.js\";\n\nexport { MailerService } from \"./domain/MailerService/abstractions.js\";\nexport type { IMailerService, IMailerServiceErrors } from \"./domain/MailerService/abstractions.js\";\n\nexport const createMailerContext = () => {\n return createContextPlugin(context => {\n // Register all features.\n CodeMailerSettingsFeature.register(context.container);\n DummyTransportFeature.register(context.container);\n SmtpTransportFeature.register(context.container);\n GetSettingsFeature.register(context.container);\n SaveSettingsFeature.register(context.container);\n MailerServiceFeature.register(context.container);\n SendMailFeature.register(context.container);\n });\n};\n\nexport const createMailerGraphQL = () => {\n return createSettingsGraphQL();\n};\n"],"mappings":"AAAA,SAASA,mBAAmB,QAAQ,aAAa;AACjD,SAASC,yBAAyB;AAClC,SAASC,kBAAkB;AAC3B,SAASC,mBAAmB;AAC5B,SAASC,qBAAqB;AAC9B,SAASC,oBAAoB;AAC7B,SAASC,oBAAoB;AAC7B,SAASC,eAAe;AACxB,SAASC,qBAAqB;AAE9B,SAASC,aAAa;AAGtB,OAAO,MAAMC,mBAAmB,GAAGA,CAAA,KAAM;EACrC,OAAOV,mBAAmB,CAACW,OAAO,IAAI;IAClC;IACAV,yBAAyB,CAACW,QAAQ,CAACD,OAAO,CAACE,SAAS,CAAC;IACrDT,qBAAqB,CAACQ,QAAQ,CAACD,OAAO,CAACE,SAAS,CAAC;IACjDR,oBAAoB,CAACO,QAAQ,CAACD,OAAO,CAACE,SAAS,CAAC;IAChDX,kBAAkB,CAACU,QAAQ,CAACD,OAAO,CAACE,SAAS,CAAC;IAC9CV,mBAAmB,CAACS,QAAQ,CAACD,OAAO,CAACE,SAAS,CAAC;IAC/CP,oBAAoB,CAACM,QAAQ,CAACD,OAAO,CAACE,SAAS,CAAC;IAChDN,eAAe,CAACK,QAAQ,CAACD,OAAO,CAACE,SAAS,CAAC;EAC/C,CAAC,CAAC;AACN,CAAC;AAED,OAAO,MAAMC,mBAAmB,GAAGA,CAAA,KAAM;EACrC,OAAON,qBAAqB,CAAC,CAAC;AAClC,CAAC","ignoreList":[]}
|
package/package.json
CHANGED
|
@@ -1,7 +1,11 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@webiny/api-mailer",
|
|
3
|
-
"version": "0.0.0-unstable.
|
|
4
|
-
"
|
|
3
|
+
"version": "0.0.0-unstable.e6f0dc8ca7",
|
|
4
|
+
"type": "module",
|
|
5
|
+
"exports": {
|
|
6
|
+
".": "./index.js",
|
|
7
|
+
"./*": "./*"
|
|
8
|
+
},
|
|
5
9
|
"repository": {
|
|
6
10
|
"type": "git",
|
|
7
11
|
"url": "https://github.com/webiny/webiny-js.git",
|
|
@@ -14,41 +18,33 @@
|
|
|
14
18
|
"description": "The API to send e-mails.",
|
|
15
19
|
"license": "MIT",
|
|
16
20
|
"dependencies": {
|
|
17
|
-
"@webiny/api": "0.0.0-unstable.
|
|
18
|
-
"@webiny/api-headless-cms": "0.0.0-unstable.
|
|
19
|
-
"@webiny/
|
|
20
|
-
"@webiny/handler-graphql": "0.0.0-unstable.
|
|
21
|
-
"@webiny/plugins": "0.0.0-unstable.
|
|
22
|
-
"
|
|
23
|
-
"
|
|
24
|
-
"
|
|
25
|
-
"nodemailer": "6.9.16",
|
|
26
|
-
"zod": "3.23.8"
|
|
21
|
+
"@webiny/api": "0.0.0-unstable.e6f0dc8ca7",
|
|
22
|
+
"@webiny/api-headless-cms": "0.0.0-unstable.e6f0dc8ca7",
|
|
23
|
+
"@webiny/feature": "0.0.0-unstable.e6f0dc8ca7",
|
|
24
|
+
"@webiny/handler-graphql": "0.0.0-unstable.e6f0dc8ca7",
|
|
25
|
+
"@webiny/plugins": "0.0.0-unstable.e6f0dc8ca7",
|
|
26
|
+
"email-addresses": "5.0.0",
|
|
27
|
+
"nodemailer": "8.0.7",
|
|
28
|
+
"zod": "4.4.3"
|
|
27
29
|
},
|
|
28
30
|
"devDependencies": {
|
|
29
|
-
"@types/
|
|
30
|
-
"@
|
|
31
|
-
"@webiny/
|
|
32
|
-
"@webiny/
|
|
33
|
-
"@webiny/
|
|
34
|
-
"@webiny/
|
|
35
|
-
"@webiny/handler": "0.0.0-unstable.
|
|
36
|
-
"@webiny/
|
|
37
|
-
"
|
|
38
|
-
"@webiny/project-utils": "0.0.0-unstable.e53eceafb5",
|
|
39
|
-
"graphql": "15.9.0",
|
|
40
|
-
"jest": "29.7.0",
|
|
31
|
+
"@types/nodemailer": "8.0.0",
|
|
32
|
+
"@webiny/api-core": "0.0.0-unstable.e6f0dc8ca7",
|
|
33
|
+
"@webiny/build-tools": "0.0.0-unstable.e6f0dc8ca7",
|
|
34
|
+
"@webiny/db-dynamodb": "0.0.0-unstable.e6f0dc8ca7",
|
|
35
|
+
"@webiny/handler": "0.0.0-unstable.e6f0dc8ca7",
|
|
36
|
+
"@webiny/handler-aws": "0.0.0-unstable.e6f0dc8ca7",
|
|
37
|
+
"@webiny/handler-db": "0.0.0-unstable.e6f0dc8ca7",
|
|
38
|
+
"@webiny/project-utils": "0.0.0-unstable.e6f0dc8ca7",
|
|
39
|
+
"graphql": "16.14.0",
|
|
41
40
|
"jest-dynalite": "3.6.1",
|
|
42
|
-
"rimraf": "6.
|
|
43
|
-
"typescript": "
|
|
41
|
+
"rimraf": "6.1.3",
|
|
42
|
+
"typescript": "6.0.3",
|
|
43
|
+
"vitest": "4.1.5"
|
|
44
44
|
},
|
|
45
45
|
"publishConfig": {
|
|
46
46
|
"access": "public",
|
|
47
47
|
"directory": "dist"
|
|
48
48
|
},
|
|
49
|
-
"
|
|
50
|
-
"build": "node ../cli/bin.js run build",
|
|
51
|
-
"watch": "node ../cli/bin.js run watch"
|
|
52
|
-
},
|
|
53
|
-
"gitHead": "e53eceafb5ce1a3872c9b4548939bb2eae5b1aef"
|
|
49
|
+
"gitHead": "e6f0dc8ca741c1fcc3fec9a5b9e86fdd49544641"
|
|
54
50
|
}
|
package/types.d.ts
CHANGED
|
@@ -1,106 +1,3 @@
|
|
|
1
|
-
import type { CmsContext } from "@webiny/api-headless-cms/types";
|
|
2
|
-
import type { Topic } from "@webiny/pubsub/types";
|
|
3
|
-
export interface MailerTransporterContext<T extends Transport = Transport> {
|
|
4
|
-
onTransportBeforeSend: Topic<OnTransportBeforeSendParams>;
|
|
5
|
-
onTransportAfterSend: Topic<OnTransportAfterSendParams>;
|
|
6
|
-
onTransportError: Topic<OnTransportErrorParams>;
|
|
7
|
-
getTransport: () => Promise<T | null>;
|
|
8
|
-
sendMail: <D>(data: TransportSendData) => Promise<TransportSendResponse<D>>;
|
|
9
|
-
}
|
|
10
|
-
export interface MailerSettingsCreateParams {
|
|
11
|
-
input: Partial<TransportSettings>;
|
|
12
|
-
}
|
|
13
|
-
export interface MailerSettingsUpdateParams {
|
|
14
|
-
input: Partial<TransportSettings>;
|
|
15
|
-
original?: ExtendedTransportSettings | null;
|
|
16
|
-
}
|
|
17
|
-
export interface MailerSettingsSaveParams {
|
|
18
|
-
input: Partial<TransportSettings>;
|
|
19
|
-
}
|
|
20
|
-
export interface OnSettingsBeforeGetTopicParams {
|
|
21
|
-
tenant: string;
|
|
22
|
-
}
|
|
23
|
-
export interface OnSettingsAfterGetTopicParams {
|
|
24
|
-
tenant: string;
|
|
25
|
-
settings: TransportSettings | null;
|
|
26
|
-
}
|
|
27
|
-
export interface OnSettingsGetErrorTopicParams {
|
|
28
|
-
tenant: string;
|
|
29
|
-
error: Error;
|
|
30
|
-
}
|
|
31
|
-
export interface OnSettingsBeforeCreateTopicParams {
|
|
32
|
-
settings: TransportSettings;
|
|
33
|
-
}
|
|
34
|
-
export interface OnSettingsAfterCreateTopicParams {
|
|
35
|
-
settings: TransportSettings;
|
|
36
|
-
}
|
|
37
|
-
export interface OnSettingsCreateErrorTopicParams {
|
|
38
|
-
settings: TransportSettings;
|
|
39
|
-
error: Error;
|
|
40
|
-
}
|
|
41
|
-
export interface OnSettingsBeforeUpdateTopicParams {
|
|
42
|
-
settings: TransportSettings;
|
|
43
|
-
original: TransportSettings;
|
|
44
|
-
}
|
|
45
|
-
export interface OnSettingsAfterUpdateTopicParams {
|
|
46
|
-
original: TransportSettings;
|
|
47
|
-
settings: TransportSettings;
|
|
48
|
-
}
|
|
49
|
-
export interface OnSettingsUpdateErrorTopicParams {
|
|
50
|
-
original: TransportSettings;
|
|
51
|
-
settings: TransportSettings;
|
|
52
|
-
error: Error;
|
|
53
|
-
}
|
|
54
|
-
export interface ExtendedTransportSettings extends TransportSettings {
|
|
55
|
-
id: string;
|
|
56
|
-
}
|
|
57
|
-
export interface MailerSettingsContext {
|
|
58
|
-
getSettings: () => Promise<ExtendedTransportSettings | null>;
|
|
59
|
-
/**
|
|
60
|
-
* Method should not be used outside of mailer
|
|
61
|
-
* @internal
|
|
62
|
-
*/
|
|
63
|
-
createSettings: (params: MailerSettingsCreateParams) => Promise<TransportSettings>;
|
|
64
|
-
/**
|
|
65
|
-
* Method should not be used outside of mailer
|
|
66
|
-
* @internal
|
|
67
|
-
*/
|
|
68
|
-
updateSettings: (params: MailerSettingsUpdateParams) => Promise<TransportSettings>;
|
|
69
|
-
/**
|
|
70
|
-
* Use to store the settings data.
|
|
71
|
-
*/
|
|
72
|
-
saveSettings: (params: MailerSettingsSaveParams) => Promise<TransportSettings>;
|
|
73
|
-
/**
|
|
74
|
-
* Lifecycle events
|
|
75
|
-
*/
|
|
76
|
-
onSettingsBeforeGet: Topic<OnSettingsBeforeGetTopicParams>;
|
|
77
|
-
onSettingsAfterGet: Topic<OnSettingsAfterGetTopicParams>;
|
|
78
|
-
onSettingsGetError: Topic<OnSettingsGetErrorTopicParams>;
|
|
79
|
-
onSettingsBeforeCreate: Topic<OnSettingsBeforeCreateTopicParams>;
|
|
80
|
-
onSettingsAfterCreate: Topic<OnSettingsAfterCreateTopicParams>;
|
|
81
|
-
onSettingsCreateError: Topic<OnSettingsCreateErrorTopicParams>;
|
|
82
|
-
onSettingsBeforeUpdate: Topic<OnSettingsBeforeUpdateTopicParams>;
|
|
83
|
-
onSettingsAfterUpdate: Topic<OnSettingsAfterUpdateTopicParams>;
|
|
84
|
-
onSettingsUpdateError: Topic<OnSettingsUpdateErrorTopicParams>;
|
|
85
|
-
}
|
|
86
|
-
export interface MailerContextObject<T extends Transport = Transport> extends MailerTransporterContext<T>, MailerSettingsContext {
|
|
87
|
-
}
|
|
88
|
-
export interface MailerContext extends CmsContext {
|
|
89
|
-
mailer: MailerContextObject;
|
|
90
|
-
}
|
|
91
|
-
export interface OnTransportBeforeSendParams {
|
|
92
|
-
data: TransportSendData;
|
|
93
|
-
transport: Transport;
|
|
94
|
-
}
|
|
95
|
-
export interface OnTransportAfterSendParams {
|
|
96
|
-
data: TransportSendData;
|
|
97
|
-
transport: Transport;
|
|
98
|
-
}
|
|
99
|
-
export interface OnTransportErrorParams {
|
|
100
|
-
error: Error;
|
|
101
|
-
data: TransportSendData;
|
|
102
|
-
transport: Transport;
|
|
103
|
-
}
|
|
104
1
|
/**
|
|
105
2
|
* Interface to implement the actual mailer.
|
|
106
3
|
*/
|
|
@@ -134,10 +31,6 @@ interface BaseTransportSendData {
|
|
|
134
31
|
replyTo?: string;
|
|
135
32
|
}
|
|
136
33
|
export type TransportSendData = BaseTransportSendData & (TransportSendToData | TransportSendBccData | TransportSendCcData);
|
|
137
|
-
export interface Transport<T = any> {
|
|
138
|
-
name: string;
|
|
139
|
-
send: (params: TransportSendData) => Promise<TransportSendResponse<T>>;
|
|
140
|
-
}
|
|
141
34
|
export interface TransportSettings {
|
|
142
35
|
host: string;
|
|
143
36
|
port: number;
|
package/types.js
CHANGED
package/types.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":[],"sources":["types.ts"],"sourcesContent":["
|
|
1
|
+
{"version":3,"names":[],"sources":["types.ts"],"sourcesContent":["// TODO: place types into appropriate domain abstractions\n\n/**\n * Interface to implement the actual mailer.\n */\nexport interface TransportSendResponse<T = any> {\n result: T | null;\n error: {\n message: string;\n code: string;\n data?: {\n [key: string]: any;\n };\n } | null;\n}\n\ninterface TransportSendToData {\n to: string[];\n}\ninterface TransportSendCcData {\n cc: string[];\n}\ninterface TransportSendBccData {\n bcc: string[];\n}\n\ninterface BaseTransportSendData {\n to?: string[];\n cc?: string[];\n bcc?: string[];\n from?: string;\n subject: string;\n text?: string;\n html?: string;\n replyTo?: string;\n}\n\nexport type TransportSendData = BaseTransportSendData &\n (TransportSendToData | TransportSendBccData | TransportSendCcData);\n\nexport interface TransportSettings {\n host: string;\n port: number;\n user: string;\n password: string;\n from: string;\n replyTo?: string;\n}\n"],"mappings":"","ignoreList":[]}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* RFC 5322 mailbox validator. Accepts both addr-spec ("addr@domain") and
|
|
3
|
+
* name-addr ("Display Name <addr@domain>") forms — both are valid SMTP
|
|
4
|
+
* From / Reply-To inputs that nodemailer and most providers accept.
|
|
5
|
+
*/
|
|
6
|
+
export declare const isMailboxAddress: (value: string) => boolean;
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import emailAddresses from "email-addresses";
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* RFC 5322 mailbox validator. Accepts both addr-spec ("addr@domain") and
|
|
5
|
+
* name-addr ("Display Name <addr@domain>") forms — both are valid SMTP
|
|
6
|
+
* From / Reply-To inputs that nodemailer and most providers accept.
|
|
7
|
+
*/
|
|
8
|
+
export const isMailboxAddress = value => {
|
|
9
|
+
return emailAddresses.parseOneAddress(value) !== null;
|
|
10
|
+
};
|
|
11
|
+
|
|
12
|
+
//# sourceMappingURL=isMailboxAddress.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["emailAddresses","isMailboxAddress","value","parseOneAddress"],"sources":["isMailboxAddress.ts"],"sourcesContent":["import emailAddresses from \"email-addresses\";\n\n/**\n * RFC 5322 mailbox validator. Accepts both addr-spec (\"addr@domain\") and\n * name-addr (\"Display Name <addr@domain>\") forms — both are valid SMTP\n * From / Reply-To inputs that nodemailer and most providers accept.\n */\nexport const isMailboxAddress = (value: string): boolean => {\n return emailAddresses.parseOneAddress(value) !== null;\n};\n"],"mappings":"AAAA,OAAOA,cAAc,MAAM,iBAAiB;;AAE5C;AACA;AACA;AACA;AACA;AACA,OAAO,MAAMC,gBAAgB,GAAIC,KAAa,IAAc;EACxD,OAAOF,cAAc,CAACG,eAAe,CAACD,KAAK,CAAC,KAAK,IAAI;AACzD,CAAC","ignoreList":[]}
|
package/context.d.ts
DELETED
package/context.js
DELETED
|
@@ -1,20 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
|
|
3
|
-
Object.defineProperty(exports, "__esModule", {
|
|
4
|
-
value: true
|
|
5
|
-
});
|
|
6
|
-
exports.createMailerContext = void 0;
|
|
7
|
-
var _api = require("@webiny/api");
|
|
8
|
-
var _transporter = require("./crud/transporter.crud");
|
|
9
|
-
var _settings = require("./crud/settings.crud");
|
|
10
|
-
const createMailerContext = () => {
|
|
11
|
-
return new _api.ContextPlugin(async context => {
|
|
12
|
-
context.mailer = {
|
|
13
|
-
...(await (0, _transporter.createTransporterCrud)(context)),
|
|
14
|
-
...(await (0, _settings.createSettingsCrud)(context))
|
|
15
|
-
};
|
|
16
|
-
});
|
|
17
|
-
};
|
|
18
|
-
exports.createMailerContext = createMailerContext;
|
|
19
|
-
|
|
20
|
-
//# sourceMappingURL=context.js.map
|
package/context.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"names":["_api","require","_transporter","_settings","createMailerContext","ContextPlugin","context","mailer","createTransporterCrud","createSettingsCrud","exports"],"sources":["context.ts"],"sourcesContent":["import { ContextPlugin } from \"@webiny/api\";\nimport type { MailerContext } from \"./types\";\nimport { createTransporterCrud } from \"~/crud/transporter.crud\";\nimport { createSettingsCrud } from \"~/crud/settings.crud\";\n\nexport const createMailerContext = () => {\n return new ContextPlugin<MailerContext>(async context => {\n context.mailer = {\n ...(await createTransporterCrud(context)),\n ...(await createSettingsCrud(context))\n };\n });\n};\n"],"mappings":";;;;;;AAAA,IAAAA,IAAA,GAAAC,OAAA;AAEA,IAAAC,YAAA,GAAAD,OAAA;AACA,IAAAE,SAAA,GAAAF,OAAA;AAEO,MAAMG,mBAAmB,GAAGA,CAAA,KAAM;EACrC,OAAO,IAAIC,kBAAa,CAAgB,MAAMC,OAAO,IAAI;IACrDA,OAAO,CAACC,MAAM,GAAG;MACb,IAAI,MAAM,IAAAC,kCAAqB,EAACF,OAAO,CAAC,CAAC;MACzC,IAAI,MAAM,IAAAG,4BAAkB,EAACH,OAAO,CAAC;IACzC,CAAC;EACL,CAAC,CAAC;AACN,CAAC;AAACI,OAAA,CAAAN,mBAAA,GAAAA,mBAAA","ignoreList":[]}
|
package/crud/settings/hooks.d.ts
DELETED
package/crud/settings/hooks.js
DELETED
|
@@ -1,42 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
|
|
3
|
-
Object.defineProperty(exports, "__esModule", {
|
|
4
|
-
value: true
|
|
5
|
-
});
|
|
6
|
-
exports.attachPasswordObfuscatingHooks = void 0;
|
|
7
|
-
var _model = require("./model");
|
|
8
|
-
const obfuscatePassword = values => {
|
|
9
|
-
// eslint-disable-next-line
|
|
10
|
-
const {
|
|
11
|
-
password,
|
|
12
|
-
...rest
|
|
13
|
-
} = values;
|
|
14
|
-
return {
|
|
15
|
-
rest
|
|
16
|
-
};
|
|
17
|
-
};
|
|
18
|
-
const hook = async params => {
|
|
19
|
-
if (params.model.modelId !== _model.SETTINGS_MODEL_ID) {
|
|
20
|
-
return;
|
|
21
|
-
}
|
|
22
|
-
delete params.input["password"];
|
|
23
|
-
params.entry.values = obfuscatePassword(params.entry.values);
|
|
24
|
-
if (typeof params.original !== "undefined") {
|
|
25
|
-
params.original.values = obfuscatePassword(params.original.values);
|
|
26
|
-
}
|
|
27
|
-
if (params.storageEntry) {
|
|
28
|
-
params.storageEntry.values = obfuscatePassword(params.storageEntry.values);
|
|
29
|
-
}
|
|
30
|
-
};
|
|
31
|
-
/**
|
|
32
|
-
* We need to remove password from all error reporting and all returns.
|
|
33
|
-
*/
|
|
34
|
-
const attachPasswordObfuscatingHooks = context => {
|
|
35
|
-
context.cms.onEntryAfterCreate.subscribe(hook);
|
|
36
|
-
context.cms.onEntryCreateError.subscribe(hook);
|
|
37
|
-
context.cms.onEntryAfterUpdate.subscribe(hook);
|
|
38
|
-
context.cms.onEntryUpdateError.subscribe(hook);
|
|
39
|
-
};
|
|
40
|
-
exports.attachPasswordObfuscatingHooks = attachPasswordObfuscatingHooks;
|
|
41
|
-
|
|
42
|
-
//# sourceMappingURL=hooks.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"names":["_model","require","obfuscatePassword","values","password","rest","hook","params","model","modelId","SETTINGS_MODEL_ID","input","entry","original","storageEntry","attachPasswordObfuscatingHooks","context","cms","onEntryAfterCreate","subscribe","onEntryCreateError","onEntryAfterUpdate","onEntryUpdateError","exports"],"sources":["hooks.ts"],"sourcesContent":["import type { MailerContext } from \"~/types\";\nimport type {\n OnEntryAfterCreateTopicParams,\n OnEntryAfterUpdateTopicParams,\n OnEntryCreateErrorTopicParams,\n OnEntryUpdateErrorTopicParams\n} from \"@webiny/api-headless-cms/types\";\nimport { SETTINGS_MODEL_ID } from \"~/crud/settings/model\";\n\nconst obfuscatePassword = (values: Record<string, any>) => {\n // eslint-disable-next-line\n const { password, ...rest } = values;\n\n return { rest };\n};\n\ntype Params = (\n | OnEntryAfterCreateTopicParams\n | OnEntryCreateErrorTopicParams\n | OnEntryAfterUpdateTopicParams\n | OnEntryUpdateErrorTopicParams\n) & {\n storageEntry?: any;\n original?: any;\n};\n\nconst hook = async (params: Params) => {\n if (params.model.modelId !== SETTINGS_MODEL_ID) {\n return;\n }\n delete params.input[\"password\"];\n params.entry.values = obfuscatePassword(params.entry.values);\n if (typeof params.original !== \"undefined\") {\n params.original.values = obfuscatePassword(params.original.values);\n }\n if (params.storageEntry) {\n params.storageEntry.values = obfuscatePassword(params.storageEntry.values);\n }\n};\n/**\n * We need to remove password from all error reporting and all returns.\n */\nexport const attachPasswordObfuscatingHooks = (context: MailerContext) => {\n context.cms.onEntryAfterCreate.subscribe(hook);\n context.cms.onEntryCreateError.subscribe(hook);\n context.cms.onEntryAfterUpdate.subscribe(hook);\n context.cms.onEntryUpdateError.subscribe(hook);\n};\n"],"mappings":";;;;;;AAOA,IAAAA,MAAA,GAAAC,OAAA;AAEA,MAAMC,iBAAiB,GAAIC,MAA2B,IAAK;EACvD;EACA,MAAM;IAAEC,QAAQ;IAAE,GAAGC;EAAK,CAAC,GAAGF,MAAM;EAEpC,OAAO;IAAEE;EAAK,CAAC;AACnB,CAAC;AAYD,MAAMC,IAAI,GAAG,MAAOC,MAAc,IAAK;EACnC,IAAIA,MAAM,CAACC,KAAK,CAACC,OAAO,KAAKC,wBAAiB,EAAE;IAC5C;EACJ;EACA,OAAOH,MAAM,CAACI,KAAK,CAAC,UAAU,CAAC;EAC/BJ,MAAM,CAACK,KAAK,CAACT,MAAM,GAAGD,iBAAiB,CAACK,MAAM,CAACK,KAAK,CAACT,MAAM,CAAC;EAC5D,IAAI,OAAOI,MAAM,CAACM,QAAQ,KAAK,WAAW,EAAE;IACxCN,MAAM,CAACM,QAAQ,CAACV,MAAM,GAAGD,iBAAiB,CAACK,MAAM,CAACM,QAAQ,CAACV,MAAM,CAAC;EACtE;EACA,IAAII,MAAM,CAACO,YAAY,EAAE;IACrBP,MAAM,CAACO,YAAY,CAACX,MAAM,GAAGD,iBAAiB,CAACK,MAAM,CAACO,YAAY,CAACX,MAAM,CAAC;EAC9E;AACJ,CAAC;AACD;AACA;AACA;AACO,MAAMY,8BAA8B,GAAIC,OAAsB,IAAK;EACtEA,OAAO,CAACC,GAAG,CAACC,kBAAkB,CAACC,SAAS,CAACb,IAAI,CAAC;EAC9CU,OAAO,CAACC,GAAG,CAACG,kBAAkB,CAACD,SAAS,CAACb,IAAI,CAAC;EAC9CU,OAAO,CAACC,GAAG,CAACI,kBAAkB,CAACF,SAAS,CAACb,IAAI,CAAC;EAC9CU,OAAO,CAACC,GAAG,CAACK,kBAAkB,CAACH,SAAS,CAACb,IAAI,CAAC;AAClD,CAAC;AAACiB,OAAA,CAAAR,8BAAA,GAAAA,8BAAA","ignoreList":[]}
|
package/crud/settings/model.d.ts
DELETED
package/crud/settings/model.js
DELETED
|
@@ -1,72 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
|
|
3
|
-
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default;
|
|
4
|
-
Object.defineProperty(exports, "__esModule", {
|
|
5
|
-
value: true
|
|
6
|
-
});
|
|
7
|
-
exports.createSettingsModel = exports.SETTINGS_MODEL_ID = void 0;
|
|
8
|
-
var _camelCase = _interopRequireDefault(require("lodash/camelCase"));
|
|
9
|
-
var _apiHeadlessCms = require("@webiny/api-headless-cms");
|
|
10
|
-
const SETTINGS_MODEL_ID = exports.SETTINGS_MODEL_ID = "mailerSettings";
|
|
11
|
-
const createField = params => {
|
|
12
|
-
const {
|
|
13
|
-
label,
|
|
14
|
-
required,
|
|
15
|
-
type
|
|
16
|
-
} = params;
|
|
17
|
-
const id = (0, _camelCase.default)(label);
|
|
18
|
-
const validation = [];
|
|
19
|
-
if (required) {
|
|
20
|
-
validation.push({
|
|
21
|
-
message: `Field "${label}" is required!`,
|
|
22
|
-
name: "required",
|
|
23
|
-
settings: {}
|
|
24
|
-
});
|
|
25
|
-
}
|
|
26
|
-
return {
|
|
27
|
-
label,
|
|
28
|
-
id,
|
|
29
|
-
fieldId: id,
|
|
30
|
-
storageId: id,
|
|
31
|
-
type,
|
|
32
|
-
validation
|
|
33
|
-
};
|
|
34
|
-
};
|
|
35
|
-
const createTextField = params => {
|
|
36
|
-
return createField({
|
|
37
|
-
...params,
|
|
38
|
-
type: "text"
|
|
39
|
-
});
|
|
40
|
-
};
|
|
41
|
-
const createNumberField = params => {
|
|
42
|
-
return createField({
|
|
43
|
-
...params,
|
|
44
|
-
type: "number"
|
|
45
|
-
});
|
|
46
|
-
};
|
|
47
|
-
const createSettingsModel = () => {
|
|
48
|
-
return (0, _apiHeadlessCms.createCmsModel)((0, _apiHeadlessCms.createPrivateModel)({
|
|
49
|
-
name: "Mailer Settings",
|
|
50
|
-
modelId: SETTINGS_MODEL_ID,
|
|
51
|
-
fields: [createTextField({
|
|
52
|
-
label: "Host",
|
|
53
|
-
required: true
|
|
54
|
-
}), createNumberField({
|
|
55
|
-
label: "Port"
|
|
56
|
-
}), createTextField({
|
|
57
|
-
label: "User",
|
|
58
|
-
required: true
|
|
59
|
-
}), createTextField({
|
|
60
|
-
label: "Password",
|
|
61
|
-
required: true
|
|
62
|
-
}), createTextField({
|
|
63
|
-
label: "From",
|
|
64
|
-
required: true
|
|
65
|
-
}), createTextField({
|
|
66
|
-
label: "Reply-To"
|
|
67
|
-
})]
|
|
68
|
-
}));
|
|
69
|
-
};
|
|
70
|
-
exports.createSettingsModel = createSettingsModel;
|
|
71
|
-
|
|
72
|
-
//# sourceMappingURL=model.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"names":["_camelCase","_interopRequireDefault","require","_apiHeadlessCms","SETTINGS_MODEL_ID","exports","createField","params","label","required","type","id","lodashCamelCase","validation","push","message","name","settings","fieldId","storageId","createTextField","createNumberField","createSettingsModel","createCmsModel","createPrivateModel","modelId","fields"],"sources":["model.ts"],"sourcesContent":["import lodashCamelCase from \"lodash/camelCase\";\nimport { createCmsModel, createPrivateModel } from \"@webiny/api-headless-cms\";\nimport type { CmsModelField, CmsModelFieldValidation } from \"@webiny/api-headless-cms/types\";\n\nexport const SETTINGS_MODEL_ID = \"mailerSettings\";\n\ninterface CreateFieldParams {\n type: string;\n label: string;\n required?: boolean;\n}\nconst createField = (params: CreateFieldParams): CmsModelField => {\n const { label, required, type } = params;\n const id = lodashCamelCase(label);\n\n const validation: CmsModelFieldValidation[] = [];\n if (required) {\n validation.push({\n message: `Field \"${label}\" is required!`,\n name: \"required\",\n settings: {}\n });\n }\n return {\n label,\n id,\n fieldId: id,\n storageId: id,\n type,\n validation\n };\n};\n\nconst createTextField = (params: Omit<CreateFieldParams, \"type\">) => {\n return createField({\n ...params,\n type: \"text\"\n });\n};\nconst createNumberField = (params: Omit<CreateFieldParams, \"type\">) => {\n return createField({\n ...params,\n type: \"number\"\n });\n};\n\nexport const createSettingsModel = () => {\n return createCmsModel(\n createPrivateModel({\n name: \"Mailer Settings\",\n modelId: SETTINGS_MODEL_ID,\n fields: [\n createTextField({\n label: \"Host\",\n required: true\n }),\n createNumberField({\n label: \"Port\"\n }),\n createTextField({\n label: \"User\",\n required: true\n }),\n createTextField({\n label: \"Password\",\n required: true\n }),\n createTextField({\n label: \"From\",\n required: true\n }),\n createTextField({\n label: \"Reply-To\"\n })\n ]\n })\n );\n};\n"],"mappings":";;;;;;;AAAA,IAAAA,UAAA,GAAAC,sBAAA,CAAAC,OAAA;AACA,IAAAC,eAAA,GAAAD,OAAA;AAGO,MAAME,iBAAiB,GAAAC,OAAA,CAAAD,iBAAA,GAAG,gBAAgB;AAOjD,MAAME,WAAW,GAAIC,MAAyB,IAAoB;EAC9D,MAAM;IAAEC,KAAK;IAAEC,QAAQ;IAAEC;EAAK,CAAC,GAAGH,MAAM;EACxC,MAAMI,EAAE,GAAG,IAAAC,kBAAe,EAACJ,KAAK,CAAC;EAEjC,MAAMK,UAAqC,GAAG,EAAE;EAChD,IAAIJ,QAAQ,EAAE;IACVI,UAAU,CAACC,IAAI,CAAC;MACZC,OAAO,EAAE,UAAUP,KAAK,gBAAgB;MACxCQ,IAAI,EAAE,UAAU;MAChBC,QAAQ,EAAE,CAAC;IACf,CAAC,CAAC;EACN;EACA,OAAO;IACHT,KAAK;IACLG,EAAE;IACFO,OAAO,EAAEP,EAAE;IACXQ,SAAS,EAAER,EAAE;IACbD,IAAI;IACJG;EACJ,CAAC;AACL,CAAC;AAED,MAAMO,eAAe,GAAIb,MAAuC,IAAK;EACjE,OAAOD,WAAW,CAAC;IACf,GAAGC,MAAM;IACTG,IAAI,EAAE;EACV,CAAC,CAAC;AACN,CAAC;AACD,MAAMW,iBAAiB,GAAId,MAAuC,IAAK;EACnE,OAAOD,WAAW,CAAC;IACf,GAAGC,MAAM;IACTG,IAAI,EAAE;EACV,CAAC,CAAC;AACN,CAAC;AAEM,MAAMY,mBAAmB,GAAGA,CAAA,KAAM;EACrC,OAAO,IAAAC,8BAAc,EACjB,IAAAC,kCAAkB,EAAC;IACfR,IAAI,EAAE,iBAAiB;IACvBS,OAAO,EAAErB,iBAAiB;IAC1BsB,MAAM,EAAE,CACJN,eAAe,CAAC;MACZZ,KAAK,EAAE,MAAM;MACbC,QAAQ,EAAE;IACd,CAAC,CAAC,EACFY,iBAAiB,CAAC;MACdb,KAAK,EAAE;IACX,CAAC,CAAC,EACFY,eAAe,CAAC;MACZZ,KAAK,EAAE,MAAM;MACbC,QAAQ,EAAE;IACd,CAAC,CAAC,EACFW,eAAe,CAAC;MACZZ,KAAK,EAAE,UAAU;MACjBC,QAAQ,EAAE;IACd,CAAC,CAAC,EACFW,eAAe,CAAC;MACZZ,KAAK,EAAE,MAAM;MACbC,QAAQ,EAAE;IACd,CAAC,CAAC,EACFW,eAAe,CAAC;MACZZ,KAAK,EAAE;IACX,CAAC,CAAC;EAEV,CAAC,CACL,CAAC;AACL,CAAC;AAACH,OAAA,CAAAiB,mBAAA,GAAAA,mBAAA","ignoreList":[]}
|