@things-factory/integration-email 7.0.1-rc.1 → 7.0.1-rc.7

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.
@@ -1 +1 @@
1
- export {};
1
+ import 'ses';
@@ -2,7 +2,7 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  const tslib_1 = require("tslib");
4
4
  const nodemailer = tslib_1.__importStar(require("nodemailer"));
5
- const vm2_1 = require("vm2");
5
+ require("ses");
6
6
  const integration_base_1 = require("@things-factory/integration-base");
7
7
  const debug = require('debug')('things-factory:email-send');
8
8
  async function emailSend(step, { logger, domain, data, lng, variables }) {
@@ -22,21 +22,31 @@ async function emailSend(step, { logger, domain, data, lng, variables }) {
22
22
  pass
23
23
  }
24
24
  });
25
- const vm = new vm2_1.VM({
26
- sandbox: {
27
- domain,
28
- user,
29
- lng,
30
- data,
31
- variables
32
- }
25
+ const compartment = new Compartment({
26
+ domain,
27
+ user,
28
+ lng,
29
+ data,
30
+ variables,
31
+ console
33
32
  });
33
+ let evalFrom, evalTo, evalSubject, evalContents, evalHtml;
34
+ try {
35
+ evalFrom = compartment.evaluate('`' + from + '`');
36
+ evalTo = compartment.evaluate('`' + to + '`');
37
+ evalSubject = compartment.evaluate('`' + subject + '`');
38
+ evalContents = compartment.evaluate('`' + contents + '`');
39
+ evalHtml = compartment.evaluate('`' + html + '`');
40
+ }
41
+ catch (err) {
42
+ throw new Error(`Failed to evaluate template: ${err.message}`);
43
+ }
34
44
  const info = await transporter.sendMail({
35
- from: vm.run('`' + from + '`'),
36
- to: vm.run('`' + to + '`'),
37
- subject: vm.run('`' + subject + '`'),
38
- text: vm.run('`' + contents + '`'),
39
- html: vm.run('`' + html + '`')
45
+ from: evalFrom,
46
+ to: evalTo,
47
+ subject: evalSubject,
48
+ text: evalContents,
49
+ html: evalHtml
40
50
  });
41
51
  return {
42
52
  data: info
@@ -1 +1 @@
1
- {"version":3,"file":"email-send.js","sourceRoot":"","sources":["../../../server/engine/task/email-send.ts"],"names":[],"mappings":"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","sourcesContent":["import * as nodemailer from 'nodemailer'\nimport { VM } from 'vm2'\n\nimport { ConnectionManager, TaskRegistry } from '@things-factory/integration-base'\n\nconst debug = require('debug')('things-factory:email-send')\n\nasync function emailSend(step, { logger, domain, data, lng, variables }) {\n const {\n connection,\n params: { from, to, subject, contents, html }\n } = step\n\n const client = ConnectionManager.getConnectionInstanceByName(domain, connection)\n if (!client) {\n debug(`no connection : ${connection}`)\n throw new Error(`no connection : ${connection}`)\n }\n\n const { host, port = 587 /* SSL은 465 TLS는 587 */, secure = false /* SSL은 true TLS는 false */, user, pass } = client\n\n const transporter = nodemailer.createTransport({\n host,\n port,\n secure,\n auth: {\n user,\n pass\n }\n })\n\n const vm = new VM({\n sandbox: {\n domain,\n user,\n lng,\n data,\n variables\n }\n })\n\n const info = await transporter.sendMail({\n from: vm.run('`' + from + '`'),\n to: vm.run('`' + to + '`'),\n subject: vm.run('`' + subject + '`'),\n text: vm.run('`' + contents + '`'),\n html: vm.run('`' + html + '`')\n })\n\n return {\n data: info\n }\n}\n\nemailSend.parameterSpec = [\n {\n type: 'string',\n name: 'from',\n label: 'email.from'\n },\n {\n type: 'string',\n name: 'to',\n label: 'email.to'\n },\n {\n type: 'string',\n name: 'subject',\n label: 'email.subject'\n },\n {\n type: 'textarea',\n name: 'contents',\n label: 'email.contents',\n property: {\n language: 'text',\n showLineNumbers: true\n },\n styles: {\n flex: '1'\n }\n },\n {\n type: 'textarea',\n name: 'html',\n label: 'email.html',\n property: {\n language: 'text',\n showLineNumbers: true\n },\n styles: {\n flex: '1'\n }\n }\n]\n\nemailSend.help = 'integration/task/email-send'\n\nTaskRegistry.registerTaskHandler('email-send', emailSend)\n"]}
1
+ {"version":3,"file":"email-send.js","sourceRoot":"","sources":["../../../server/engine/task/email-send.ts"],"names":[],"mappings":"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","sourcesContent":["import * as nodemailer from 'nodemailer'\nimport 'ses'\nimport { ConnectionManager, TaskRegistry } from '@things-factory/integration-base'\n\nconst debug = require('debug')('things-factory:email-send')\n\nasync function emailSend(step, { logger, domain, data, lng, variables }) {\n const {\n connection,\n params: { from, to, subject, contents, html }\n } = step\n\n const client = ConnectionManager.getConnectionInstanceByName(domain, connection)\n if (!client) {\n debug(`no connection : ${connection}`)\n throw new Error(`no connection : ${connection}`)\n }\n\n const { host, port = 587 /* SSL은 465 TLS는 587 */, secure = false /* SSL은 true TLS는 false */, user, pass } = client\n\n const transporter = nodemailer.createTransport({\n host,\n port,\n secure,\n auth: {\n user,\n pass\n }\n })\n\n const compartment = new Compartment({\n domain,\n user,\n lng,\n data,\n variables,\n console\n })\n\n let evalFrom, evalTo, evalSubject, evalContents, evalHtml\n try {\n evalFrom = compartment.evaluate('`' + from + '`')\n evalTo = compartment.evaluate('`' + to + '`')\n evalSubject = compartment.evaluate('`' + subject + '`')\n evalContents = compartment.evaluate('`' + contents + '`')\n evalHtml = compartment.evaluate('`' + html + '`')\n } catch (err) {\n throw new Error(`Failed to evaluate template: ${err.message}`)\n }\n\n const info = await transporter.sendMail({\n from: evalFrom,\n to: evalTo,\n subject: evalSubject,\n text: evalContents,\n html: evalHtml\n })\n\n return {\n data: info\n }\n}\n\nemailSend.parameterSpec = [\n {\n type: 'string',\n name: 'from',\n label: 'email.from'\n },\n {\n type: 'string',\n name: 'to',\n label: 'email.to'\n },\n {\n type: 'string',\n name: 'subject',\n label: 'email.subject'\n },\n {\n type: 'textarea',\n name: 'contents',\n label: 'email.contents',\n property: {\n language: 'text',\n showLineNumbers: true\n },\n styles: {\n flex: '1'\n }\n },\n {\n type: 'textarea',\n name: 'html',\n label: 'email.html',\n property: {\n language: 'text',\n showLineNumbers: true\n },\n styles: {\n flex: '1'\n }\n }\n]\n\nemailSend.help = 'integration/task/email-send'\n\nTaskRegistry.registerTaskHandler('email-send', emailSend)\n"]}