velocious 1.0.181 → 1.0.184
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 +87 -0
- package/build/src/background-jobs/job-registry.d.ts +9 -0
- package/build/src/background-jobs/job-registry.d.ts.map +1 -1
- package/build/src/background-jobs/job-registry.js +30 -12
- package/build/src/configuration-types.d.ts +18 -0
- package/build/src/configuration-types.d.ts.map +1 -1
- package/build/src/configuration-types.js +6 -1
- package/build/src/configuration.d.ts +11 -1
- package/build/src/configuration.d.ts.map +1 -1
- package/build/src/configuration.js +16 -2
- package/build/src/database/drivers/sqlite/index.d.ts.map +1 -1
- package/build/src/database/drivers/sqlite/index.js +22 -7
- package/build/src/database/drivers/sqlite/index.web.d.ts.map +1 -1
- package/build/src/database/drivers/sqlite/index.web.js +8 -2
- package/build/src/jobs/mail-delivery.d.ts +12 -0
- package/build/src/jobs/mail-delivery.d.ts.map +1 -0
- package/build/src/jobs/mail-delivery.js +19 -0
- package/build/src/mailer/backends/smtp.d.ts +25 -0
- package/build/src/mailer/backends/smtp.d.ts.map +1 -0
- package/build/src/mailer/backends/smtp.js +99 -0
- package/build/src/mailer/base.d.ts +105 -0
- package/build/src/mailer/base.d.ts.map +1 -0
- package/build/src/mailer/base.js +223 -0
- package/build/src/mailer/delivery.d.ts +35 -0
- package/build/src/mailer/delivery.d.ts.map +1 -0
- package/build/src/mailer/delivery.js +48 -0
- package/build/src/mailer/index.d.ts +17 -0
- package/build/src/mailer/index.d.ts.map +1 -0
- package/build/src/mailer/index.js +23 -0
- package/build/src/mailer.d.ts +16 -0
- package/build/src/mailer.d.ts.map +1 -0
- package/build/src/mailer.js +6 -0
- package/build/src/testing/test-runner.d.ts.map +1 -1
- package/build/src/testing/test-runner.js +3 -1
- package/build/tsconfig.tsbuildinfo +1 -1
- package/package.json +7 -3
|
@@ -0,0 +1,105 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Base mailer with view rendering and delivery helpers.
|
|
3
|
+
*/
|
|
4
|
+
export class VelociousMailerBase {
|
|
5
|
+
/**
|
|
6
|
+
* @returns {import("./index.js").MailerDeliveryPayload[]} - Delivered payloads.
|
|
7
|
+
*/
|
|
8
|
+
static deliveries(): import("./index.js").MailerDeliveryPayload[];
|
|
9
|
+
/**
|
|
10
|
+
* @returns {void} - No return value.
|
|
11
|
+
*/
|
|
12
|
+
static clearDeliveries(): void;
|
|
13
|
+
/**
|
|
14
|
+
* @param {(payload: import("./index.js").MailerDeliveryPayload) => Promise<unknown> | unknown} handler - Delivery handler.
|
|
15
|
+
* @returns {void} - No return value.
|
|
16
|
+
*/
|
|
17
|
+
static setDeliveryHandler(handler: (payload: import("./index.js").MailerDeliveryPayload) => Promise<unknown> | unknown): void;
|
|
18
|
+
/**
|
|
19
|
+
* @returns {(payload: import("./index.js").MailerDeliveryPayload) => Promise<unknown> | unknown | null} - Handler or null.
|
|
20
|
+
*/
|
|
21
|
+
static getDeliveryHandler(): (payload: import("./index.js").MailerDeliveryPayload) => Promise<unknown> | unknown | null;
|
|
22
|
+
/**
|
|
23
|
+
* @param {import("./index.js").MailerDeliveryPayload} payload - Mail delivery payload.
|
|
24
|
+
* @returns {Promise<import("./index.js").MailerDeliveryPayload | unknown>} - Handler result.
|
|
25
|
+
*/
|
|
26
|
+
static deliverPayload(payload: import("./index.js").MailerDeliveryPayload): Promise<import("./index.js").MailerDeliveryPayload | unknown>;
|
|
27
|
+
/**
|
|
28
|
+
* @param {import("./index.js").MailerDeliveryPayload} payload - Mail delivery payload.
|
|
29
|
+
* @returns {Promise<string | import("./index.js").MailerDeliveryPayload | null>} - Job id or payload in test mode.
|
|
30
|
+
*/
|
|
31
|
+
static enqueuePayload(payload: import("./index.js").MailerDeliveryPayload): Promise<string | import("./index.js").MailerDeliveryPayload | null>;
|
|
32
|
+
/**
|
|
33
|
+
* @param {object} [args] - Constructor args.
|
|
34
|
+
* @param {import("../configuration.js").default} [args.configuration] - Configuration instance.
|
|
35
|
+
*/
|
|
36
|
+
constructor({ configuration }?: {
|
|
37
|
+
configuration?: import("../configuration.js").default;
|
|
38
|
+
});
|
|
39
|
+
_actionName: string;
|
|
40
|
+
_mailOptions: {
|
|
41
|
+
to: any;
|
|
42
|
+
subject: string;
|
|
43
|
+
from: any;
|
|
44
|
+
cc: any;
|
|
45
|
+
bcc: any;
|
|
46
|
+
replyTo: any;
|
|
47
|
+
headers: Record<string, string>;
|
|
48
|
+
};
|
|
49
|
+
_viewParams: {};
|
|
50
|
+
_configurationPromise: Promise<import("../configuration.js").default>;
|
|
51
|
+
/**
|
|
52
|
+
* @param {Record<string, any>} params - View params.
|
|
53
|
+
* @returns {void} - No return value.
|
|
54
|
+
*/
|
|
55
|
+
assignView(params: Record<string, any>): void;
|
|
56
|
+
/**
|
|
57
|
+
* @param {object} args - Mail options.
|
|
58
|
+
* @param {any} args.to - Recipient.
|
|
59
|
+
* @param {string} args.subject - Subject line.
|
|
60
|
+
* @param {any} [args.from] - Sender.
|
|
61
|
+
* @param {any} [args.cc] - CC recipients.
|
|
62
|
+
* @param {any} [args.bcc] - BCC recipients.
|
|
63
|
+
* @param {any} [args.replyTo] - Reply-to address.
|
|
64
|
+
* @param {Record<string, string>} [args.headers] - Custom headers.
|
|
65
|
+
* @returns {void} - No return value.
|
|
66
|
+
*/
|
|
67
|
+
mail({ to, subject, from, cc, bcc, replyTo, headers, ...restArgs }: {
|
|
68
|
+
to: any;
|
|
69
|
+
subject: string;
|
|
70
|
+
from?: any;
|
|
71
|
+
cc?: any;
|
|
72
|
+
bcc?: any;
|
|
73
|
+
replyTo?: any;
|
|
74
|
+
headers?: Record<string, string>;
|
|
75
|
+
}): void;
|
|
76
|
+
/**
|
|
77
|
+
* @param {string} actionName - Action name.
|
|
78
|
+
* @param {any[]} args - Action args.
|
|
79
|
+
* @returns {MailerDelivery} - Delivery wrapper.
|
|
80
|
+
*/
|
|
81
|
+
_buildDelivery(actionName: string, args: any[]): MailerDelivery;
|
|
82
|
+
/**
|
|
83
|
+
* @returns {Promise<import("../configuration.js").default>} - Configuration instance.
|
|
84
|
+
*/
|
|
85
|
+
_getConfiguration(): Promise<import("../configuration.js").default>;
|
|
86
|
+
/**
|
|
87
|
+
* @returns {string} - Action name.
|
|
88
|
+
*/
|
|
89
|
+
_getActionName(): string;
|
|
90
|
+
/**
|
|
91
|
+
* @param {string} html - Rendered HTML.
|
|
92
|
+
* @returns {import("./index.js").MailerDeliveryPayload} - Delivery payload.
|
|
93
|
+
*/
|
|
94
|
+
_buildPayloadSync(html: string): import("./index.js").MailerDeliveryPayload;
|
|
95
|
+
/**
|
|
96
|
+
* @returns {Promise<import("./index.js").MailerDeliveryPayload>} - Delivery payload.
|
|
97
|
+
*/
|
|
98
|
+
_buildPayload(): Promise<import("./index.js").MailerDeliveryPayload>;
|
|
99
|
+
/**
|
|
100
|
+
* @returns {Promise<string>} - Rendered HTML.
|
|
101
|
+
*/
|
|
102
|
+
_renderView(): Promise<string>;
|
|
103
|
+
}
|
|
104
|
+
import MailerDelivery from "./delivery.js";
|
|
105
|
+
//# sourceMappingURL=base.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"base.d.ts","sourceRoot":"","sources":["../../../src/mailer/base.js"],"names":[],"mappings":"AAyCA;;GAEG;AACH;IAmJE;;OAEG;IACH,qBAFa,OAAO,YAAY,EAAE,qBAAqB,EAAE,CAIxD;IAED;;OAEG;IACH,0BAFa,IAAI,CAIhB;IAED;;;OAGG;IACH,mCAHW,CAAC,OAAO,EAAE,OAAO,YAAY,EAAE,qBAAqB,KAAK,OAAO,CAAC,OAAO,CAAC,GAAG,OAAO,GACjF,IAAI,CAIhB;IAED;;OAEG;IACH,6BAFa,CAAC,OAAO,EAAE,OAAO,YAAY,EAAE,qBAAqB,KAAK,OAAO,CAAC,OAAO,CAAC,GAAG,OAAO,GAAG,IAAI,CAItG;IAED;;;OAGG;IACH,+BAHW,OAAO,YAAY,EAAE,qBAAqB,GACxC,OAAO,CAAC,OAAO,YAAY,EAAE,qBAAqB,GAAG,OAAO,CAAC,CAsBzE;IAED;;;OAGG;IACH,+BAHW,OAAO,YAAY,EAAE,qBAAqB,GACxC,OAAO,CAAC,MAAM,GAAG,OAAO,YAAY,EAAE,qBAAqB,GAAG,IAAI,CAAC,CAW/E;IAtND;;;OAGG;IACH,gCAFG;QAAqD,aAAa,GAA1D,OAAO,qBAAqB,EAAE,OAAO;KAC/C,EAMA;IAJC,oBAAuB;IACvB;;;;;;;;MAAwB;IACxB,gBAAqB;IACrB,sEAAqG;IAGvG;;;OAGG;IACH,mBAHW,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GACjB,IAAI,CAIhB;IAED;;;;;;;;;;OAUG;IACH,oEATG;QAAkB,EAAE,EAAZ,GAAG;QACU,OAAO,EAApB,MAAM;QACK,IAAI,GAAf,GAAG;QACQ,EAAE,GAAb,GAAG;QACQ,GAAG,GAAd,GAAG;QACQ,OAAO,GAAlB,GAAG;QAC2B,OAAO,GAArC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC;KAC9B,GAAU,IAAI,CAMhB;IAED;;;;OAIG;IACH,2BAJW,MAAM,QACN,GAAG,EAAE,GACH,cAAc,CAiB1B;IAED;;OAEG;IACH,qBAFa,OAAO,CAAC,OAAO,qBAAqB,EAAE,OAAO,CAAC,CAI1D;IAED;;OAEG;IACH,kBAFa,MAAM,CAQlB;IAED;;;OAGG;IACH,wBAHW,MAAM,GACJ,OAAO,YAAY,EAAE,qBAAqB,CA6BtD;IAED;;OAEG;IACH,iBAFa,OAAO,CAAC,OAAO,YAAY,EAAE,qBAAqB,CAAC,CAM/D;IAED;;OAEG;IACH,eAFa,OAAO,CAAC,MAAM,CAAC,CAyB3B;CAuEF;2BA7P0B,eAAe"}
|
|
@@ -0,0 +1,223 @@
|
|
|
1
|
+
// @ts-check
|
|
2
|
+
import ejs from "ejs";
|
|
3
|
+
import { incorporate } from "incorporator";
|
|
4
|
+
import * as inflection from "inflection";
|
|
5
|
+
import configurationResolver from "../configuration-resolver.js";
|
|
6
|
+
import restArgsError from "../utils/rest-args-error.js";
|
|
7
|
+
import MailerDelivery from "./delivery.js";
|
|
8
|
+
/** @type {import("./index.js").MailerDeliveryPayload[]} */
|
|
9
|
+
const deliveries = [];
|
|
10
|
+
/** @type {((payload: import("./index.js").MailerDeliveryPayload) => Promise<unknown> | unknown) | null} */
|
|
11
|
+
let deliveryHandler = null;
|
|
12
|
+
/**
|
|
13
|
+
* @param {string} actionName - Mailer action name.
|
|
14
|
+
* @returns {string} - View file name.
|
|
15
|
+
*/
|
|
16
|
+
function viewFileName(actionName) {
|
|
17
|
+
return inflection.dasherize(inflection.underscore(actionName));
|
|
18
|
+
}
|
|
19
|
+
/**
|
|
20
|
+
* @param {string} className - Mailer class name.
|
|
21
|
+
* @returns {string} - Mailer directory name.
|
|
22
|
+
*/
|
|
23
|
+
function mailerDirectoryName(className) {
|
|
24
|
+
const baseName = className.replace(/Mailer$/, "");
|
|
25
|
+
return inflection.dasherize(inflection.underscore(baseName));
|
|
26
|
+
}
|
|
27
|
+
/**
|
|
28
|
+
* @returns {Promise<boolean>} - Whether the current environment is test.
|
|
29
|
+
*/
|
|
30
|
+
async function isTestingEnvironment() {
|
|
31
|
+
const configuration = await configurationResolver();
|
|
32
|
+
return configuration.getEnvironment() === "test";
|
|
33
|
+
}
|
|
34
|
+
/**
|
|
35
|
+
* Base mailer with view rendering and delivery helpers.
|
|
36
|
+
*/
|
|
37
|
+
export class VelociousMailerBase {
|
|
38
|
+
/**
|
|
39
|
+
* @param {object} [args] - Constructor args.
|
|
40
|
+
* @param {import("../configuration.js").default} [args.configuration] - Configuration instance.
|
|
41
|
+
*/
|
|
42
|
+
constructor({ configuration } = {}) {
|
|
43
|
+
this._actionName = null;
|
|
44
|
+
this._mailOptions = null;
|
|
45
|
+
this._viewParams = {};
|
|
46
|
+
this._configurationPromise = configuration ? Promise.resolve(configuration) : configurationResolver();
|
|
47
|
+
}
|
|
48
|
+
/**
|
|
49
|
+
* @param {Record<string, any>} params - View params.
|
|
50
|
+
* @returns {void} - No return value.
|
|
51
|
+
*/
|
|
52
|
+
assignView(params) {
|
|
53
|
+
this._viewParams = Object.assign(this._viewParams, params || {});
|
|
54
|
+
}
|
|
55
|
+
/**
|
|
56
|
+
* @param {object} args - Mail options.
|
|
57
|
+
* @param {any} args.to - Recipient.
|
|
58
|
+
* @param {string} args.subject - Subject line.
|
|
59
|
+
* @param {any} [args.from] - Sender.
|
|
60
|
+
* @param {any} [args.cc] - CC recipients.
|
|
61
|
+
* @param {any} [args.bcc] - BCC recipients.
|
|
62
|
+
* @param {any} [args.replyTo] - Reply-to address.
|
|
63
|
+
* @param {Record<string, string>} [args.headers] - Custom headers.
|
|
64
|
+
* @returns {void} - No return value.
|
|
65
|
+
*/
|
|
66
|
+
mail({ to, subject, from, cc, bcc, replyTo, headers, ...restArgs }) {
|
|
67
|
+
restArgsError(restArgs);
|
|
68
|
+
this._mailOptions = { to, subject, from, cc, bcc, replyTo, headers };
|
|
69
|
+
}
|
|
70
|
+
/**
|
|
71
|
+
* @param {string} actionName - Action name.
|
|
72
|
+
* @param {any[]} args - Action args.
|
|
73
|
+
* @returns {MailerDelivery} - Delivery wrapper.
|
|
74
|
+
*/
|
|
75
|
+
_buildDelivery(actionName, args) {
|
|
76
|
+
const action = this[actionName];
|
|
77
|
+
if (typeof action !== "function") {
|
|
78
|
+
throw new Error(`Unknown mailer method "${actionName}" on ${this.constructor.name}`);
|
|
79
|
+
}
|
|
80
|
+
this._actionName = actionName;
|
|
81
|
+
const actionResult = action.apply(this, args);
|
|
82
|
+
return new MailerDelivery({
|
|
83
|
+
mailer: this,
|
|
84
|
+
actionPromise: Promise.resolve(actionResult),
|
|
85
|
+
actionName
|
|
86
|
+
});
|
|
87
|
+
}
|
|
88
|
+
/**
|
|
89
|
+
* @returns {Promise<import("../configuration.js").default>} - Configuration instance.
|
|
90
|
+
*/
|
|
91
|
+
async _getConfiguration() {
|
|
92
|
+
return await this._configurationPromise;
|
|
93
|
+
}
|
|
94
|
+
/**
|
|
95
|
+
* @returns {string} - Action name.
|
|
96
|
+
*/
|
|
97
|
+
_getActionName() {
|
|
98
|
+
if (!this._actionName) {
|
|
99
|
+
throw new Error(`No mailer action set on ${this.constructor.name}`);
|
|
100
|
+
}
|
|
101
|
+
return this._actionName;
|
|
102
|
+
}
|
|
103
|
+
/**
|
|
104
|
+
* @param {string} html - Rendered HTML.
|
|
105
|
+
* @returns {import("./index.js").MailerDeliveryPayload} - Delivery payload.
|
|
106
|
+
*/
|
|
107
|
+
_buildPayloadSync(html) {
|
|
108
|
+
const mailOptions = this._mailOptions;
|
|
109
|
+
if (!mailOptions) {
|
|
110
|
+
throw new Error(`Missing mail() options for ${this.constructor.name}#${this._getActionName()}. Got: ${String(mailOptions)}`);
|
|
111
|
+
}
|
|
112
|
+
if (!mailOptions.to) {
|
|
113
|
+
throw new Error(`Missing "to" for ${this.constructor.name}#${this._getActionName()}. Got: ${String(mailOptions.to)}`);
|
|
114
|
+
}
|
|
115
|
+
if (!mailOptions.subject) {
|
|
116
|
+
throw new Error(`Missing "subject" for ${this.constructor.name}#${this._getActionName()}. Got: ${String(mailOptions.subject)}`);
|
|
117
|
+
}
|
|
118
|
+
return {
|
|
119
|
+
to: mailOptions.to,
|
|
120
|
+
subject: mailOptions.subject,
|
|
121
|
+
from: mailOptions.from,
|
|
122
|
+
cc: mailOptions.cc,
|
|
123
|
+
bcc: mailOptions.bcc,
|
|
124
|
+
replyTo: mailOptions.replyTo,
|
|
125
|
+
headers: mailOptions.headers,
|
|
126
|
+
html,
|
|
127
|
+
mailer: this.constructor.name,
|
|
128
|
+
action: this._getActionName()
|
|
129
|
+
};
|
|
130
|
+
}
|
|
131
|
+
/**
|
|
132
|
+
* @returns {Promise<import("./index.js").MailerDeliveryPayload>} - Delivery payload.
|
|
133
|
+
*/
|
|
134
|
+
async _buildPayload() {
|
|
135
|
+
const html = await this._renderView();
|
|
136
|
+
return this._buildPayloadSync(html);
|
|
137
|
+
}
|
|
138
|
+
/**
|
|
139
|
+
* @returns {Promise<string>} - Rendered HTML.
|
|
140
|
+
*/
|
|
141
|
+
async _renderView() {
|
|
142
|
+
const configuration = await this._getConfiguration();
|
|
143
|
+
const mailerDir = mailerDirectoryName(this.constructor.name);
|
|
144
|
+
const actionName = this._getActionName();
|
|
145
|
+
const fileName = viewFileName(actionName);
|
|
146
|
+
const viewPath = `${configuration.getDirectory()}/src/mailers/${mailerDir}/${fileName}.ejs`;
|
|
147
|
+
const viewParams = incorporate({ mailer: this }, this._viewParams);
|
|
148
|
+
return await new Promise((resolve, reject) => {
|
|
149
|
+
ejs.renderFile(viewPath, viewParams, {}, (err, str) => {
|
|
150
|
+
if (err) {
|
|
151
|
+
const errorCode = /** @type {{code?: string}} */ (err).code;
|
|
152
|
+
if (errorCode === "ENOENT") {
|
|
153
|
+
reject(new Error(`Missing mailer view file: ${viewPath}`));
|
|
154
|
+
}
|
|
155
|
+
else {
|
|
156
|
+
reject(err);
|
|
157
|
+
}
|
|
158
|
+
}
|
|
159
|
+
else {
|
|
160
|
+
resolve(str);
|
|
161
|
+
}
|
|
162
|
+
});
|
|
163
|
+
});
|
|
164
|
+
}
|
|
165
|
+
/**
|
|
166
|
+
* @returns {import("./index.js").MailerDeliveryPayload[]} - Delivered payloads.
|
|
167
|
+
*/
|
|
168
|
+
static deliveries() {
|
|
169
|
+
return deliveries.slice();
|
|
170
|
+
}
|
|
171
|
+
/**
|
|
172
|
+
* @returns {void} - No return value.
|
|
173
|
+
*/
|
|
174
|
+
static clearDeliveries() {
|
|
175
|
+
deliveries.length = 0;
|
|
176
|
+
}
|
|
177
|
+
/**
|
|
178
|
+
* @param {(payload: import("./index.js").MailerDeliveryPayload) => Promise<unknown> | unknown} handler - Delivery handler.
|
|
179
|
+
* @returns {void} - No return value.
|
|
180
|
+
*/
|
|
181
|
+
static setDeliveryHandler(handler) {
|
|
182
|
+
deliveryHandler = handler;
|
|
183
|
+
}
|
|
184
|
+
/**
|
|
185
|
+
* @returns {(payload: import("./index.js").MailerDeliveryPayload) => Promise<unknown> | unknown | null} - Handler or null.
|
|
186
|
+
*/
|
|
187
|
+
static getDeliveryHandler() {
|
|
188
|
+
return deliveryHandler;
|
|
189
|
+
}
|
|
190
|
+
/**
|
|
191
|
+
* @param {import("./index.js").MailerDeliveryPayload} payload - Mail delivery payload.
|
|
192
|
+
* @returns {Promise<import("./index.js").MailerDeliveryPayload | unknown>} - Handler result.
|
|
193
|
+
*/
|
|
194
|
+
static async deliverPayload(payload) {
|
|
195
|
+
if (await isTestingEnvironment()) {
|
|
196
|
+
deliveries.push(payload);
|
|
197
|
+
return payload;
|
|
198
|
+
}
|
|
199
|
+
const configuration = await configurationResolver();
|
|
200
|
+
const backend = configuration.getMailerBackend();
|
|
201
|
+
if (backend?.deliver) {
|
|
202
|
+
return await backend.deliver({ payload, configuration });
|
|
203
|
+
}
|
|
204
|
+
const handler = deliveryHandler;
|
|
205
|
+
if (!handler) {
|
|
206
|
+
throw new Error(`No mail delivery handler configured for "${payload.subject}" to "${payload.to}"`);
|
|
207
|
+
}
|
|
208
|
+
return await handler(payload);
|
|
209
|
+
}
|
|
210
|
+
/**
|
|
211
|
+
* @param {import("./index.js").MailerDeliveryPayload} payload - Mail delivery payload.
|
|
212
|
+
* @returns {Promise<string | import("./index.js").MailerDeliveryPayload | null>} - Job id or payload in test mode.
|
|
213
|
+
*/
|
|
214
|
+
static async enqueuePayload(payload) {
|
|
215
|
+
if (await isTestingEnvironment()) {
|
|
216
|
+
deliveries.push(payload);
|
|
217
|
+
return payload;
|
|
218
|
+
}
|
|
219
|
+
const { default: mailDeliveryJob } = await import("../jobs/mail-delivery.js");
|
|
220
|
+
return await mailDeliveryJob.performLater(payload);
|
|
221
|
+
}
|
|
222
|
+
}
|
|
223
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFzZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9tYWlsZXIvYmFzZS5qcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxZQUFZO0FBRVosT0FBTyxHQUFHLE1BQU0sS0FBSyxDQUFBO0FBQ3JCLE9BQU8sRUFBQyxXQUFXLEVBQUMsTUFBTSxjQUFjLENBQUE7QUFDeEMsT0FBTyxLQUFLLFVBQVUsTUFBTSxZQUFZLENBQUE7QUFDeEMsT0FBTyxxQkFBcUIsTUFBTSw4QkFBOEIsQ0FBQTtBQUNoRSxPQUFPLGFBQWEsTUFBTSw2QkFBNkIsQ0FBQTtBQUN2RCxPQUFPLGNBQWMsTUFBTSxlQUFlLENBQUE7QUFFMUMsMkRBQTJEO0FBQzNELE1BQU0sVUFBVSxHQUFHLEVBQUUsQ0FBQTtBQUNyQiwyR0FBMkc7QUFDM0csSUFBSSxlQUFlLEdBQUcsSUFBSSxDQUFBO0FBRTFCOzs7R0FHRztBQUNILFNBQVMsWUFBWSxDQUFDLFVBQVU7SUFDOUIsT0FBTyxVQUFVLENBQUMsU0FBUyxDQUFDLFVBQVUsQ0FBQyxVQUFVLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQTtBQUNoRSxDQUFDO0FBRUQ7OztHQUdHO0FBQ0gsU0FBUyxtQkFBbUIsQ0FBQyxTQUFTO0lBQ3BDLE1BQU0sUUFBUSxHQUFHLFNBQVMsQ0FBQyxPQUFPLENBQUMsU0FBUyxFQUFFLEVBQUUsQ0FBQyxDQUFBO0lBRWpELE9BQU8sVUFBVSxDQUFDLFNBQVMsQ0FBQyxVQUFVLENBQUMsVUFBVSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUE7QUFDOUQsQ0FBQztBQUVEOztHQUVHO0FBQ0gsS0FBSyxVQUFVLG9CQUFvQjtJQUNqQyxNQUFNLGFBQWEsR0FBRyxNQUFNLHFCQUFxQixFQUFFLENBQUE7SUFFbkQsT0FBTyxhQUFhLENBQUMsY0FBYyxFQUFFLEtBQUssTUFBTSxDQUFBO0FBQ2xELENBQUM7QUFFRDs7R0FFRztBQUNILE1BQU0sT0FBTyxtQkFBbUI7SUFDOUI7OztPQUdH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Q0FBQyxDQUFBO1FBRTNFLE9BQU8sTUFBTSxlQUFlLENBQUMsWUFBWSxDQUFDLE9BQU8sQ0FBQyxDQUFBO0lBQ3BELENBQUM7Q0FDRiIsInNvdXJjZXNDb250ZW50IjpbIi8vIEB0cy1jaGVja1xuXG5pbXBvcnQgZWpzIGZyb20gXCJlanNcIlxuaW1wb3J0IHtpbmNvcnBvcmF0ZX0gZnJvbSBcImluY29ycG9yYXRvclwiXG5pbXBvcnQgKiBhcyBpbmZsZWN0aW9uIGZyb20gXCJpbmZsZWN0aW9uXCJcbmltcG9ydCBjb25maWd1cmF0aW9uUmVzb2x2ZXIgZnJvbSBcIi4uL2NvbmZpZ3VyYXRpb24tcmVzb2x2ZXIuanNcIlxuaW1wb3J0IHJlc3RBcmdzRXJyb3IgZnJvbSBcIi4uL3V0aWxzL3Jlc3QtYXJncy1lcnJvci5qc1wiXG5pbXBvcnQgTWFpbGVyRGVsaXZlcnkgZnJvbSBcIi4vZGVsaXZlcnkuanNcIlxuXG4vKiogQHR5cGUge2ltcG9ydChcIi4vaW5kZXguanNcIikuTWFpbGVyRGVsaXZlcnlQYXlsb2FkW119ICovXG5jb25zdCBkZWxpdmVyaWVzID0gW11cbi8qKiBAdHlwZSB7KChwYXlsb2FkOiBpbXBvcnQoXCIuL2luZGV4LmpzXCIpLk1haWxlckRlbGl2ZXJ5UGF5bG9hZCkgPT4gUHJvbWlzZTx1bmtub3duPiB8IHVua25vd24pIHwgbnVsbH0gKi9cbmxldCBkZWxpdmVyeUhhbmRsZXIgPSBudWxsXG5cbi8qKlxuICogQHBhcmFtIHtzdHJpbmd9IGFjdGlvbk5hbWUgLSBNYWlsZXIgYWN0aW9uIG5hbWUuXG4gKiBAcmV0dXJucyB7c3RyaW5nfSAtIFZpZXcgZmlsZSBuYW1lLlxuICovXG5mdW5jdGlvbiB2aWV3RmlsZU5hbWUoYWN0aW9uTmFtZSkge1xuICByZXR1cm4gaW5mbGVjdGlvbi5kYXNoZXJpemUoaW5mbGVjdGlvbi51bmRlcnNjb3JlKGFjdGlvbk5hbWUpKVxufVxuXG4vKipcbiAqIEBwYXJhbSB7c3RyaW5nfSBjbGFzc05hbWUgLSBNYWlsZXIgY2xhc3MgbmFtZS5cbiAqIEByZXR1cm5zIHtzdHJpbmd9IC0gTWFpbGVyIGRpcmVjdG9yeSBuYW1lLlxuICovXG5mdW5jdGlvbiBtYWlsZXJEaXJlY3RvcnlOYW1lKGNsYXNzTmFtZSkge1xuICBjb25zdCBiYXNlTmFtZSA9IGNsYXNzTmFtZS5yZXBsYWNlKC9NYWlsZXIkLywgXCJcIilcblxuICByZXR1cm4gaW5mbGVjdGlvbi5kYXNoZXJpemUoaW5mbGVjdGlvbi51bmRlcnNjb3JlKGJhc2VOYW1lKSlcbn1cblxuLyoqXG4gKiBAcmV0dXJucyB7UHJvbWlzZTxib29sZWFuPn0gLSBXaGV0aGVyIHRoZSBjdXJyZW50IGVudmlyb25tZW50IGlzIHRlc3QuXG4gKi9cbmFzeW5jIGZ1bmN0aW9uIGlzVGVzdGluZ0Vudmlyb25tZW50KCkge1xuICBjb25zdCBjb25maWd1cmF0aW9uID0gYXdhaXQgY29uZmlndXJhdGlvblJlc29sdmVyKClcblxuICByZXR1cm4gY29uZmlndXJhdGlvbi5nZXRFbnZpcm9ubWVudCgpID09PSBcInRlc3RcIlxufVxuXG4vKipcbiAqIEJhc2UgbWFpbGVyIHdpdGggdmlldyByZW5kZXJpbmcgYW5kIGRlbGl2ZXJ5IGhlbHBlcnMuXG4gKi9cbmV4cG9ydCBjbGFzcyBWZWxvY2lvdXNNYWlsZXJCYXNlIHtcbiAgLyoqXG4gICAqIEBwYXJhbSB7b2JqZWN0fSBbYXJnc10gLSBDb25zdHJ1Y3RvciBhcmdzLlxuICAgKiBAcGFyYW0ge2ltcG9ydChcIi4uL2NvbmZpZ3VyYXRpb24uanNcIikuZGVmYXVsdH0gW2FyZ3MuY29uZmlndXJhdGlvbl0gLSBDb25maWd1cmF0aW9uIGluc3RhbmNlLlxuICAgKi9cbiAgY29uc3RydWN0b3Ioe2NvbmZpZ3VyYXRpb259ID0ge30pIHtcbiAgICB0aGlzLl9hY3Rpb25OYW1lID0gbnVsbFxuICAgIHRoaXMuX21haWxPcHRpb25zID0gbnVsbFxuICAgIHRoaXMuX3ZpZXdQYXJhbXMgPSB7fVxuICAgIHRoaXMuX2NvbmZpZ3VyYXRpb25Qcm9taXNlID0gY29uZmlndXJhdGlvbiA/IFByb21pc2UucmVzb2x2ZShjb25maWd1cmF0aW9uKSA6IGNvbmZpZ3VyYXRpb25SZXNvbHZlcigpXG4gIH1cblxuICAvKipcbiAgICogQHBhcmFtIHtSZWNvcmQ8c3RyaW5nLCBhbnk+fSBwYXJhbXMgLSBWaWV3IHBhcmFtcy5cbiAgICogQHJldHVybnMge3ZvaWR9IC0gTm8gcmV0dXJuIHZhbHVlLlxuICAgKi9cbiAgYXNzaWduVmlldyhwYXJhbXMpIHtcbiAgICB0aGlzLl92aWV3UGFyYW1zID0gT2JqZWN0LmFzc2lnbih0aGlzLl92aWV3UGFyYW1zLCBwYXJhbXMgfHwge30pXG4gIH1cblxuICAvKipcbiAgICogQHBhcmFtIHtvYmplY3R9IGFyZ3MgLSBNYWlsIG9wdGlvbnMuXG4gICAqIEBwYXJhbSB7YW55fSBhcmdzLnRvIC0gUmVjaXBpZW50LlxuICAgKiBAcGFyYW0ge3N0cmluZ30gYXJncy5zdWJqZWN0IC0gU3ViamVjdCBsaW5lLlxuICAgKiBAcGFyYW0ge2FueX0gW2FyZ3MuZnJvbV0gLSBTZW5kZXIuXG4gICAqIEBwYXJhbSB7YW55fSBbYXJncy5jY10gLSBDQyByZWNpcGllbnRzLlxuICAgKiBAcGFyYW0ge2FueX0gW2FyZ3MuYmNjXSAtIEJDQyByZWNpcGllbnRzLlxuICAgKiBAcGFyYW0ge2FueX0gW2FyZ3MucmVwbHlUb10gLSBSZXBseS10byBhZGRyZXNzLlxuICAgKiBAcGFyYW0ge1JlY29yZDxzdHJpbmcsIHN0cmluZz59IFthcmdzLmhlYWRlcnNdIC0gQ3VzdG9tIGhlYWRlcnMuXG4gICAqIEByZXR1cm5zIHt2b2lkfSAtIE5vIHJldHVybiB2YWx1ZS5cbiAgICovXG4gIG1haWwoe3RvLCBzdWJqZWN0LCBmcm9tLCBjYywgYmNjLCByZXBseVRvLCBoZWFkZXJzLCAuLi5yZXN0QXJnc30pIHtcbiAgICByZXN0QXJnc0Vycm9yKHJlc3RBcmdzKVxuXG4gICAgdGhpcy5fbWFpbE9wdGlvbnMgPSB7dG8sIHN1YmplY3QsIGZyb20sIGNjLCBiY2MsIHJlcGx5VG8sIGhlYWRlcnN9XG4gIH1cblxuICAvKipcbiAgICogQHBhcmFtIHtzdHJpbmd9IGFjdGlvbk5hbWUgLSBBY3Rpb24gbmFtZS5cbiAgICogQHBhcmFtIHthbnlbXX0gYXJncyAtIEFjdGlvbiBhcmdzLlxuICAgKiBAcmV0dXJucyB7TWFpbGVyRGVsaXZlcnl9IC0gRGVsaXZlcnkgd3JhcHBlci5cbiAgICovXG4gIF9idWlsZERlbGl2ZXJ5KGFjdGlvbk5hbWUsIGFyZ3MpIHtcbiAgICBjb25zdCBhY3Rpb24gPSB0aGlzW2FjdGlvbk5hbWVdXG5cbiAgICBpZiAodHlwZW9mIGFjdGlvbiAhPT0gXCJmdW5jdGlvblwiKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYFVua25vd24gbWFpbGVyIG1ldGhvZCBcIiR7YWN0aW9uTmFtZX1cIiBvbiAke3RoaXMuY29uc3RydWN0b3IubmFtZX1gKVxuICAgIH1cblxuICAgIHRoaXMuX2FjdGlvbk5hbWUgPSBhY3Rpb25OYW1lXG4gICAgY29uc3QgYWN0aW9uUmVzdWx0ID0gYWN0aW9uLmFwcGx5KHRoaXMsIGFyZ3MpXG5cbiAgICByZXR1cm4gbmV3IE1haWxlckRlbGl2ZXJ5KHtcbiAgICAgIG1haWxlcjogdGhpcyxcbiAgICAgIGFjdGlvblByb21pc2U6IFByb21pc2UucmVzb2x2ZShhY3Rpb25SZXN1bHQpLFxuICAgICAgYWN0aW9uTmFtZVxuICAgIH0pXG4gIH1cblxuICAvKipcbiAgICogQHJldHVybnMge1Byb21pc2U8aW1wb3J0KFwiLi4vY29uZmlndXJhdGlvbi5qc1wiKS5kZWZhdWx0Pn0gLSBDb25maWd1cmF0aW9uIGluc3RhbmNlLlxuICAgKi9cbiAgYXN5bmMgX2dldENvbmZpZ3VyYXRpb24oKSB7XG4gICAgcmV0dXJuIGF3YWl0IHRoaXMuX2NvbmZpZ3VyYXRpb25Qcm9taXNlXG4gIH1cblxuICAvKipcbiAgICogQHJldHVybnMge3N0cmluZ30gLSBBY3Rpb24gbmFtZS5cbiAgICovXG4gIF9nZXRBY3Rpb25OYW1lKCkge1xuICAgIGlmICghdGhpcy5fYWN0aW9uTmFtZSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGBObyBtYWlsZXIgYWN0aW9uIHNldCBvbiAke3RoaXMuY29uc3RydWN0b3IubmFtZX1gKVxuICAgIH1cblxuICAgIHJldHVybiB0aGlzLl9hY3Rpb25OYW1lXG4gIH1cblxuICAvKipcbiAgICogQHBhcmFtIHtzdHJpbmd9IGh0bWwgLSBSZW5kZXJlZCBIVE1MLlxuICAgKiBAcmV0dXJucyB7aW1wb3J0KFwiLi9pbmRleC5qc1wiKS5NYWlsZXJEZWxpdmVyeVBheWxvYWR9IC0gRGVsaXZlcnkgcGF5bG9hZC5cbiAgICovXG4gIF9idWlsZFBheWxvYWRTeW5jKGh0bWwpIHtcbiAgICBjb25zdCBtYWlsT3B0aW9ucyA9IHRoaXMuX21haWxPcHRpb25zXG5cbiAgICBpZiAoIW1haWxPcHRpb25zKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYE1pc3NpbmcgbWFpbCgpIG9wdGlvbnMgZm9yICR7dGhpcy5jb25zdHJ1Y3Rvci5uYW1lfSMke3RoaXMuX2dldEFjdGlvbk5hbWUoKX0uIEdvdDogJHtTdHJpbmcobWFpbE9wdGlvbnMpfWApXG4gICAgfVxuXG4gICAgaWYgKCFtYWlsT3B0aW9ucy50bykge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGBNaXNzaW5nIFwidG9cIiBmb3IgJHt0aGlzLmNvbnN0cnVjdG9yLm5hbWV9IyR7dGhpcy5fZ2V0QWN0aW9uTmFtZSgpfS4gR290OiAke1N0cmluZyhtYWlsT3B0aW9ucy50byl9YClcbiAgICB9XG5cbiAgICBpZiAoIW1haWxPcHRpb25zLnN1YmplY3QpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgTWlzc2luZyBcInN1YmplY3RcIiBmb3IgJHt0aGlzLmNvbnN0cnVjdG9yLm5hbWV9IyR7dGhpcy5fZ2V0QWN0aW9uTmFtZSgpfS4gR290OiAke1N0cmluZyhtYWlsT3B0aW9ucy5zdWJqZWN0KX1gKVxuICAgIH1cblxuICAgIHJldHVybiB7XG4gICAgICB0bzogbWFpbE9wdGlvbnMudG8sXG4gICAgICBzdWJqZWN0OiBtYWlsT3B0aW9ucy5zdWJqZWN0LFxuICAgICAgZnJvbTogbWFpbE9wdGlvbnMuZnJvbSxcbiAgICAgIGNjOiBtYWlsT3B0aW9ucy5jYyxcbiAgICAgIGJjYzogbWFpbE9wdGlvbnMuYmNjLFxuICAgICAgcmVwbHlUbzogbWFpbE9wdGlvbnMucmVwbHlUbyxcbiAgICAgIGhlYWRlcnM6IG1haWxPcHRpb25zLmhlYWRlcnMsXG4gICAgICBodG1sLFxuICAgICAgbWFpbGVyOiB0aGlzLmNvbnN0cnVjdG9yLm5hbWUsXG4gICAgICBhY3Rpb246IHRoaXMuX2dldEFjdGlvbk5hbWUoKVxuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBAcmV0dXJucyB7UHJvbWlzZTxpbXBvcnQoXCIuL2luZGV4LmpzXCIpLk1haWxlckRlbGl2ZXJ5UGF5bG9hZD59IC0gRGVsaXZlcnkgcGF5bG9hZC5cbiAgICovXG4gIGFzeW5jIF9idWlsZFBheWxvYWQoKSB7XG4gICAgY29uc3QgaHRtbCA9IGF3YWl0IHRoaXMuX3JlbmRlclZpZXcoKVxuXG4gICAgcmV0dXJuIHRoaXMuX2J1aWxkUGF5bG9hZFN5bmMoaHRtbClcbiAgfVxuXG4gIC8qKlxuICAgKiBAcmV0dXJucyB7UHJvbWlzZTxzdHJpbmc+fSAtIFJlbmRlcmVkIEhUTUwuXG4gICAqL1xuICBhc3luYyBfcmVuZGVyVmlldygpIHtcbiAgICBjb25zdCBjb25maWd1cmF0aW9uID0gYXdhaXQgdGhpcy5fZ2V0Q29uZmlndXJhdGlvbigpXG4gICAgY29uc3QgbWFpbGVyRGlyID0gbWFpbGVyRGlyZWN0b3J5TmFtZSh0aGlzLmNvbnN0cnVjdG9yLm5hbWUpXG4gICAgY29uc3QgYWN0aW9uTmFtZSA9IHRoaXMuX2dldEFjdGlvbk5hbWUoKVxuICAgIGNvbnN0IGZpbGVOYW1lID0gdmlld0ZpbGVOYW1lKGFjdGlvbk5hbWUpXG4gICAgY29uc3Qgdmlld1BhdGggPSBgJHtjb25maWd1cmF0aW9uLmdldERpcmVjdG9yeSgpfS9zcmMvbWFpbGVycy8ke21haWxlckRpcn0vJHtmaWxlTmFtZX0uZWpzYFxuICAgIGNvbnN0IHZpZXdQYXJhbXMgPSBpbmNvcnBvcmF0ZSh7bWFpbGVyOiB0aGlzfSwgdGhpcy5fdmlld1BhcmFtcylcblxuICAgIHJldHVybiBhd2FpdCBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gICAgICBlanMucmVuZGVyRmlsZSh2aWV3UGF0aCwgdmlld1BhcmFtcywge30sIChlcnIsIHN0cikgPT4ge1xuICAgICAgICBpZiAoZXJyKSB7XG4gICAgICAgICAgY29uc3QgZXJyb3JDb2RlID0gLyoqIEB0eXBlIHt7Y29kZT86IHN0cmluZ319ICovIChlcnIpLmNvZGVcblxuICAgICAgICAgIGlmIChlcnJvckNvZGUgPT09IFwiRU5PRU5UXCIpIHtcbiAgICAgICAgICAgIHJlamVjdChuZXcgRXJyb3IoYE1pc3NpbmcgbWFpbGVyIHZpZXcgZmlsZTogJHt2aWV3UGF0aH1gKSlcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcmVqZWN0KGVycilcbiAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgcmVzb2x2ZShzdHIpXG4gICAgICAgIH1cbiAgICAgIH0pXG4gICAgfSlcbiAgfVxuXG4gIC8qKlxuICAgKiBAcmV0dXJucyB7aW1wb3J0KFwiLi9pbmRleC5qc1wiKS5NYWlsZXJEZWxpdmVyeVBheWxvYWRbXX0gLSBEZWxpdmVyZWQgcGF5bG9hZHMuXG4gICAqL1xuICBzdGF0aWMgZGVsaXZlcmllcygpIHtcbiAgICByZXR1cm4gZGVsaXZlcmllcy5zbGljZSgpXG4gIH1cblxuICAvKipcbiAgICogQHJldHVybnMge3ZvaWR9IC0gTm8gcmV0dXJuIHZhbHVlLlxuICAgKi9cbiAgc3RhdGljIGNsZWFyRGVsaXZlcmllcygpIHtcbiAgICBkZWxpdmVyaWVzLmxlbmd0aCA9IDBcbiAgfVxuXG4gIC8qKlxuICAgKiBAcGFyYW0geyhwYXlsb2FkOiBpbXBvcnQoXCIuL2luZGV4LmpzXCIpLk1haWxlckRlbGl2ZXJ5UGF5bG9hZCkgPT4gUHJvbWlzZTx1bmtub3duPiB8IHVua25vd259IGhhbmRsZXIgLSBEZWxpdmVyeSBoYW5kbGVyLlxuICAgKiBAcmV0dXJucyB7dm9pZH0gLSBObyByZXR1cm4gdmFsdWUuXG4gICAqL1xuICBzdGF0aWMgc2V0RGVsaXZlcnlIYW5kbGVyKGhhbmRsZXIpIHtcbiAgICBkZWxpdmVyeUhhbmRsZXIgPSBoYW5kbGVyXG4gIH1cblxuICAvKipcbiAgICogQHJldHVybnMgeyhwYXlsb2FkOiBpbXBvcnQoXCIuL2luZGV4LmpzXCIpLk1haWxlckRlbGl2ZXJ5UGF5bG9hZCkgPT4gUHJvbWlzZTx1bmtub3duPiB8IHVua25vd24gfCBudWxsfSAtIEhhbmRsZXIgb3IgbnVsbC5cbiAgICovXG4gIHN0YXRpYyBnZXREZWxpdmVyeUhhbmRsZXIoKSB7XG4gICAgcmV0dXJuIGRlbGl2ZXJ5SGFuZGxlclxuICB9XG5cbiAgLyoqXG4gICAqIEBwYXJhbSB7aW1wb3J0KFwiLi9pbmRleC5qc1wiKS5NYWlsZXJEZWxpdmVyeVBheWxvYWR9IHBheWxvYWQgLSBNYWlsIGRlbGl2ZXJ5IHBheWxvYWQuXG4gICAqIEByZXR1cm5zIHtQcm9taXNlPGltcG9ydChcIi4vaW5kZXguanNcIikuTWFpbGVyRGVsaXZlcnlQYXlsb2FkIHwgdW5rbm93bj59IC0gSGFuZGxlciByZXN1bHQuXG4gICAqL1xuICBzdGF0aWMgYXN5bmMgZGVsaXZlclBheWxvYWQocGF5bG9hZCkge1xuICAgIGlmIChhd2FpdCBpc1Rlc3RpbmdFbnZpcm9ubWVudCgpKSB7XG4gICAgICBkZWxpdmVyaWVzLnB1c2gocGF5bG9hZClcbiAgICAgIHJldHVybiBwYXlsb2FkXG4gICAgfVxuXG4gICAgY29uc3QgY29uZmlndXJhdGlvbiA9IGF3YWl0IGNvbmZpZ3VyYXRpb25SZXNvbHZlcigpXG4gICAgY29uc3QgYmFja2VuZCA9IGNvbmZpZ3VyYXRpb24uZ2V0TWFpbGVyQmFja2VuZCgpXG5cbiAgICBpZiAoYmFja2VuZD8uZGVsaXZlcikge1xuICAgICAgcmV0dXJuIGF3YWl0IGJhY2tlbmQuZGVsaXZlcih7cGF5bG9hZCwgY29uZmlndXJhdGlvbn0pXG4gICAgfVxuXG4gICAgY29uc3QgaGFuZGxlciA9IGRlbGl2ZXJ5SGFuZGxlclxuXG4gICAgaWYgKCFoYW5kbGVyKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYE5vIG1haWwgZGVsaXZlcnkgaGFuZGxlciBjb25maWd1cmVkIGZvciBcIiR7cGF5bG9hZC5zdWJqZWN0fVwiIHRvIFwiJHtwYXlsb2FkLnRvfVwiYClcbiAgICB9XG5cbiAgICByZXR1cm4gYXdhaXQgaGFuZGxlcihwYXlsb2FkKVxuICB9XG5cbiAgLyoqXG4gICAqIEBwYXJhbSB7aW1wb3J0KFwiLi9pbmRleC5qc1wiKS5NYWlsZXJEZWxpdmVyeVBheWxvYWR9IHBheWxvYWQgLSBNYWlsIGRlbGl2ZXJ5IHBheWxvYWQuXG4gICAqIEByZXR1cm5zIHtQcm9taXNlPHN0cmluZyB8IGltcG9ydChcIi4vaW5kZXguanNcIikuTWFpbGVyRGVsaXZlcnlQYXlsb2FkIHwgbnVsbD59IC0gSm9iIGlkIG9yIHBheWxvYWQgaW4gdGVzdCBtb2RlLlxuICAgKi9cbiAgc3RhdGljIGFzeW5jIGVucXVldWVQYXlsb2FkKHBheWxvYWQpIHtcbiAgICBpZiAoYXdhaXQgaXNUZXN0aW5nRW52aXJvbm1lbnQoKSkge1xuICAgICAgZGVsaXZlcmllcy5wdXNoKHBheWxvYWQpXG4gICAgICByZXR1cm4gcGF5bG9hZFxuICAgIH1cblxuICAgIGNvbnN0IHtkZWZhdWx0OiBtYWlsRGVsaXZlcnlKb2J9ID0gYXdhaXQgaW1wb3J0KFwiLi4vam9icy9tYWlsLWRlbGl2ZXJ5LmpzXCIpXG5cbiAgICByZXR1cm4gYXdhaXQgbWFpbERlbGl2ZXJ5Sm9iLnBlcmZvcm1MYXRlcihwYXlsb2FkKVxuICB9XG59XG4iXX0=
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Represents a prepared mail delivery.
|
|
3
|
+
*/
|
|
4
|
+
export default class MailerDelivery {
|
|
5
|
+
/**
|
|
6
|
+
* @param {object} args - Constructor args.
|
|
7
|
+
* @param {import("./base.js").VelociousMailerBase} args.mailer - Mailer instance.
|
|
8
|
+
* @param {Promise<unknown>} args.actionPromise - Action promise.
|
|
9
|
+
* @param {string} args.actionName - Action name.
|
|
10
|
+
*/
|
|
11
|
+
constructor({ mailer, actionPromise, actionName }: {
|
|
12
|
+
mailer: import("./base.js").VelociousMailerBase;
|
|
13
|
+
actionPromise: Promise<unknown>;
|
|
14
|
+
actionName: string;
|
|
15
|
+
});
|
|
16
|
+
/** @type {import("./base.js").VelociousMailerBase} */
|
|
17
|
+
mailer: import("./base.js").VelociousMailerBase;
|
|
18
|
+
/** @type {Promise<unknown>} */
|
|
19
|
+
actionPromise: Promise<unknown>;
|
|
20
|
+
/** @type {string} */
|
|
21
|
+
actionName: string;
|
|
22
|
+
/**
|
|
23
|
+
* @returns {Promise<import("./index.js").MailerDeliveryPayload | unknown>} - Delivered payload or handler result.
|
|
24
|
+
*/
|
|
25
|
+
deliverNow(): Promise<import("./index.js").MailerDeliveryPayload | unknown>;
|
|
26
|
+
/**
|
|
27
|
+
* @returns {Promise<string | import("./index.js").MailerDeliveryPayload | null>} - Job id or payload in test mode.
|
|
28
|
+
*/
|
|
29
|
+
deliverLater(): Promise<string | import("./index.js").MailerDeliveryPayload | null>;
|
|
30
|
+
/**
|
|
31
|
+
* @returns {Promise<string | import("./index.js").MailerDeliveryPayload | null>} - Job id or payload in test mode.
|
|
32
|
+
*/
|
|
33
|
+
deliverLaver(): Promise<string | import("./index.js").MailerDeliveryPayload | null>;
|
|
34
|
+
}
|
|
35
|
+
//# sourceMappingURL=delivery.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"delivery.d.ts","sourceRoot":"","sources":["../../../src/mailer/delivery.js"],"names":[],"mappings":"AAEA;;GAEG;AACH;IAQE;;;;;OAKG;IACH,mDAJG;QAAsD,MAAM,EAApD,OAAO,WAAW,EAAE,mBAAmB;QAChB,aAAa,EAApC,OAAO,CAAC,OAAO,CAAC;QACH,UAAU,EAAvB,MAAM;KAChB,EAKA;IAjBD,sDAAsD;IACtD,QADW,OAAO,WAAW,EAAE,mBAAmB,CAC5C;IACN,+BAA+B;IAC/B,eADW,OAAO,CAAC,OAAO,CAAC,CACd;IACb,qBAAqB;IACrB,YADW,MAAM,CACP;IAcV;;OAEG;IACH,cAFa,OAAO,CAAC,OAAO,YAAY,EAAE,qBAAqB,GAAG,OAAO,CAAC,CAQzE;IAED;;OAEG;IACH,gBAFa,OAAO,CAAC,MAAM,GAAG,OAAO,YAAY,EAAE,qBAAqB,GAAG,IAAI,CAAC,CAQ/E;IAED;;OAEG;IACH,gBAFa,OAAO,CAAC,MAAM,GAAG,OAAO,YAAY,EAAE,qBAAqB,GAAG,IAAI,CAAC,CAI/E;CACF"}
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
// @ts-check
|
|
2
|
+
/**
|
|
3
|
+
* Represents a prepared mail delivery.
|
|
4
|
+
*/
|
|
5
|
+
export default class MailerDelivery {
|
|
6
|
+
/** @type {import("./base.js").VelociousMailerBase} */
|
|
7
|
+
mailer;
|
|
8
|
+
/** @type {Promise<unknown>} */
|
|
9
|
+
actionPromise;
|
|
10
|
+
/** @type {string} */
|
|
11
|
+
actionName;
|
|
12
|
+
/**
|
|
13
|
+
* @param {object} args - Constructor args.
|
|
14
|
+
* @param {import("./base.js").VelociousMailerBase} args.mailer - Mailer instance.
|
|
15
|
+
* @param {Promise<unknown>} args.actionPromise - Action promise.
|
|
16
|
+
* @param {string} args.actionName - Action name.
|
|
17
|
+
*/
|
|
18
|
+
constructor({ mailer, actionPromise, actionName }) {
|
|
19
|
+
this.mailer = mailer;
|
|
20
|
+
this.actionPromise = actionPromise;
|
|
21
|
+
this.actionName = actionName;
|
|
22
|
+
}
|
|
23
|
+
/**
|
|
24
|
+
* @returns {Promise<import("./index.js").MailerDeliveryPayload | unknown>} - Delivered payload or handler result.
|
|
25
|
+
*/
|
|
26
|
+
async deliverNow() {
|
|
27
|
+
await this.actionPromise;
|
|
28
|
+
const payload = /** @type {import("./index.js").MailerDeliveryPayload} */ (await this.mailer._buildPayload());
|
|
29
|
+
const mailerClass = /** @type {typeof import("./base.js").VelociousMailerBase} */ (this.mailer.constructor);
|
|
30
|
+
return await mailerClass.deliverPayload(payload);
|
|
31
|
+
}
|
|
32
|
+
/**
|
|
33
|
+
* @returns {Promise<string | import("./index.js").MailerDeliveryPayload | null>} - Job id or payload in test mode.
|
|
34
|
+
*/
|
|
35
|
+
async deliverLater() {
|
|
36
|
+
await this.actionPromise;
|
|
37
|
+
const payload = /** @type {import("./index.js").MailerDeliveryPayload} */ (await this.mailer._buildPayload());
|
|
38
|
+
const mailerClass = /** @type {typeof import("./base.js").VelociousMailerBase} */ (this.mailer.constructor);
|
|
39
|
+
return await mailerClass.enqueuePayload(payload);
|
|
40
|
+
}
|
|
41
|
+
/**
|
|
42
|
+
* @returns {Promise<string | import("./index.js").MailerDeliveryPayload | null>} - Job id or payload in test mode.
|
|
43
|
+
*/
|
|
44
|
+
async deliverLaver() {
|
|
45
|
+
return await this.deliverLater();
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVsaXZlcnkuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvbWFpbGVyL2RlbGl2ZXJ5LmpzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLFlBQVk7QUFFWjs7R0FFRztBQUNILE1BQU0sQ0FBQyxPQUFPLE9BQU8sY0FBYztJQUNqQyxzREFBc0Q7SUFDdEQsTUFBTSxDQUFBO0lBQ04sK0JBQStCO0lBQy9CLGFBQWEsQ0FBQTtJQUNiLHFCQUFxQjtJQUNyQixVQUFVLENBQUE7SUFFVjs7Ozs7T0FLRztJQUNILFlBQVksRUFBQyxNQUFNLEVBQUUsYUFBYSxFQUFFLFVBQVUsRUFBQztRQUM3QyxJQUFJLENBQUMsTUFBTSxHQUFHLE1BQU0sQ0FBQTtRQUNwQixJQUFJLENBQUMsYUFBYSxHQUFHLGFBQWEsQ0FBQTtRQUNsQyxJQUFJLENBQUMsVUFBVSxHQUFHLFVBQVUsQ0FBQTtJQUM5QixDQUFDO0lBRUQ7O09BRUc7SUFDSCxLQUFLLENBQUMsVUFBVTtRQUNkLE1BQU0sSUFBSSxDQUFDLGFBQWEsQ0FBQTtRQUN4QixNQUFNLE9BQU8sR0FBRyx5REFBeUQsQ0FBQyxDQUFDLE1BQU0sSUFBSSxDQUFDLE1BQU0sQ0FBQyxhQUFhLEVBQUUsQ0FBQyxDQUFBO1FBQzdHLE1BQU0sV0FBVyxHQUFHLDZEQUE2RCxDQUFDLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxXQUFXLENBQUMsQ0FBQTtRQUUzRyxPQUFPLE1BQU0sV0FBVyxDQUFDLGNBQWMsQ0FBQyxPQUFPLENBQUMsQ0FBQTtJQUNsRCxDQUFDO0lBRUQ7O09BRUc7SUFDSCxLQUFLLENBQUMsWUFBWTtRQUNoQixNQUFNLElBQUksQ0FBQyxhQUFhLENBQUE7UUFDeEIsTUFBTSxPQUFPLEdBQUcseURBQXlELENBQUMsQ0FBQyxNQUFNLElBQUksQ0FBQyxNQUFNLENBQUMsYUFBYSxFQUFFLENBQUMsQ0FBQTtRQUM3RyxNQUFNLFdBQVcsR0FBRyw2REFBNkQsQ0FBQyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsV0FBVyxDQUFDLENBQUE7UUFFM0csT0FBTyxNQUFNLFdBQVcsQ0FBQyxjQUFjLENBQUMsT0FBTyxDQUFDLENBQUE7SUFDbEQsQ0FBQztJQUVEOztPQUVHO0lBQ0gsS0FBSyxDQUFDLFlBQVk7UUFDaEIsT0FBTyxNQUFNLElBQUksQ0FBQyxZQUFZLEVBQUUsQ0FBQTtJQUNsQyxDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBAdHMtY2hlY2tcblxuLyoqXG4gKiBSZXByZXNlbnRzIGEgcHJlcGFyZWQgbWFpbCBkZWxpdmVyeS5cbiAqL1xuZXhwb3J0IGRlZmF1bHQgY2xhc3MgTWFpbGVyRGVsaXZlcnkge1xuICAvKiogQHR5cGUge2ltcG9ydChcIi4vYmFzZS5qc1wiKS5WZWxvY2lvdXNNYWlsZXJCYXNlfSAqL1xuICBtYWlsZXJcbiAgLyoqIEB0eXBlIHtQcm9taXNlPHVua25vd24+fSAqL1xuICBhY3Rpb25Qcm9taXNlXG4gIC8qKiBAdHlwZSB7c3RyaW5nfSAqL1xuICBhY3Rpb25OYW1lXG5cbiAgLyoqXG4gICAqIEBwYXJhbSB7b2JqZWN0fSBhcmdzIC0gQ29uc3RydWN0b3IgYXJncy5cbiAgICogQHBhcmFtIHtpbXBvcnQoXCIuL2Jhc2UuanNcIikuVmVsb2Npb3VzTWFpbGVyQmFzZX0gYXJncy5tYWlsZXIgLSBNYWlsZXIgaW5zdGFuY2UuXG4gICAqIEBwYXJhbSB7UHJvbWlzZTx1bmtub3duPn0gYXJncy5hY3Rpb25Qcm9taXNlIC0gQWN0aW9uIHByb21pc2UuXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBhcmdzLmFjdGlvbk5hbWUgLSBBY3Rpb24gbmFtZS5cbiAgICovXG4gIGNvbnN0cnVjdG9yKHttYWlsZXIsIGFjdGlvblByb21pc2UsIGFjdGlvbk5hbWV9KSB7XG4gICAgdGhpcy5tYWlsZXIgPSBtYWlsZXJcbiAgICB0aGlzLmFjdGlvblByb21pc2UgPSBhY3Rpb25Qcm9taXNlXG4gICAgdGhpcy5hY3Rpb25OYW1lID0gYWN0aW9uTmFtZVxuICB9XG5cbiAgLyoqXG4gICAqIEByZXR1cm5zIHtQcm9taXNlPGltcG9ydChcIi4vaW5kZXguanNcIikuTWFpbGVyRGVsaXZlcnlQYXlsb2FkIHwgdW5rbm93bj59IC0gRGVsaXZlcmVkIHBheWxvYWQgb3IgaGFuZGxlciByZXN1bHQuXG4gICAqL1xuICBhc3luYyBkZWxpdmVyTm93KCkge1xuICAgIGF3YWl0IHRoaXMuYWN0aW9uUHJvbWlzZVxuICAgIGNvbnN0IHBheWxvYWQgPSAvKiogQHR5cGUge2ltcG9ydChcIi4vaW5kZXguanNcIikuTWFpbGVyRGVsaXZlcnlQYXlsb2FkfSAqLyAoYXdhaXQgdGhpcy5tYWlsZXIuX2J1aWxkUGF5bG9hZCgpKVxuICAgIGNvbnN0IG1haWxlckNsYXNzID0gLyoqIEB0eXBlIHt0eXBlb2YgaW1wb3J0KFwiLi9iYXNlLmpzXCIpLlZlbG9jaW91c01haWxlckJhc2V9ICovICh0aGlzLm1haWxlci5jb25zdHJ1Y3RvcilcblxuICAgIHJldHVybiBhd2FpdCBtYWlsZXJDbGFzcy5kZWxpdmVyUGF5bG9hZChwYXlsb2FkKVxuICB9XG5cbiAgLyoqXG4gICAqIEByZXR1cm5zIHtQcm9taXNlPHN0cmluZyB8IGltcG9ydChcIi4vaW5kZXguanNcIikuTWFpbGVyRGVsaXZlcnlQYXlsb2FkIHwgbnVsbD59IC0gSm9iIGlkIG9yIHBheWxvYWQgaW4gdGVzdCBtb2RlLlxuICAgKi9cbiAgYXN5bmMgZGVsaXZlckxhdGVyKCkge1xuICAgIGF3YWl0IHRoaXMuYWN0aW9uUHJvbWlzZVxuICAgIGNvbnN0IHBheWxvYWQgPSAvKiogQHR5cGUge2ltcG9ydChcIi4vaW5kZXguanNcIikuTWFpbGVyRGVsaXZlcnlQYXlsb2FkfSAqLyAoYXdhaXQgdGhpcy5tYWlsZXIuX2J1aWxkUGF5bG9hZCgpKVxuICAgIGNvbnN0IG1haWxlckNsYXNzID0gLyoqIEB0eXBlIHt0eXBlb2YgaW1wb3J0KFwiLi9iYXNlLmpzXCIpLlZlbG9jaW91c01haWxlckJhc2V9ICovICh0aGlzLm1haWxlci5jb25zdHJ1Y3RvcilcblxuICAgIHJldHVybiBhd2FpdCBtYWlsZXJDbGFzcy5lbnF1ZXVlUGF5bG9hZChwYXlsb2FkKVxuICB9XG5cbiAgLyoqXG4gICAqIEByZXR1cm5zIHtQcm9taXNlPHN0cmluZyB8IGltcG9ydChcIi4vaW5kZXguanNcIikuTWFpbGVyRGVsaXZlcnlQYXlsb2FkIHwgbnVsbD59IC0gSm9iIGlkIG9yIHBheWxvYWQgaW4gdGVzdCBtb2RlLlxuICAgKi9cbiAgYXN5bmMgZGVsaXZlckxhdmVyKCkge1xuICAgIHJldHVybiBhd2FpdCB0aGlzLmRlbGl2ZXJMYXRlcigpXG4gIH1cbn1cbiJdfQ==
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
export { VelociousMailerBase };
|
|
2
|
+
export default VelociousMailer;
|
|
3
|
+
export type MailerDeliveryPayload = {
|
|
4
|
+
to: any;
|
|
5
|
+
subject: string;
|
|
6
|
+
from?: any;
|
|
7
|
+
cc?: any;
|
|
8
|
+
bcc?: any;
|
|
9
|
+
replyTo?: any;
|
|
10
|
+
headers?: Record<string, string>;
|
|
11
|
+
html: string;
|
|
12
|
+
mailer: string;
|
|
13
|
+
action: string;
|
|
14
|
+
};
|
|
15
|
+
import { VelociousMailerBase } from "./base.js";
|
|
16
|
+
declare const VelociousMailer: typeof VelociousMailerBase;
|
|
17
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/mailer/index.js"],"names":[],"mappings":";;oCAEc;IAAC,EAAE,EAAE,GAAG,CAAC;IAAC,OAAO,EAAE,MAAM,CAAC;IAAC,IAAI,CAAC,EAAE,GAAG,CAAC;IAAC,EAAE,CAAC,EAAE,GAAG,CAAC;IAAC,GAAG,CAAC,EAAE,GAAG,CAAC;IAAC,OAAO,CAAC,EAAE,GAAG,CAAC;IAAC,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAC;oCAEtI,WAAW;AAE7C,0DAkBE"}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
// @ts-check
|
|
2
|
+
/** @typedef {{to: any, subject: string, from?: any, cc?: any, bcc?: any, replyTo?: any, headers?: Record<string, string>, html: string, mailer: string, action: string}} MailerDeliveryPayload */
|
|
3
|
+
import { VelociousMailerBase } from "./base.js";
|
|
4
|
+
const VelociousMailer = new Proxy(VelociousMailerBase, {
|
|
5
|
+
/**
|
|
6
|
+
* @param {typeof VelociousMailerBase} target - Proxy target.
|
|
7
|
+
* @param {string | symbol} prop - Property name.
|
|
8
|
+
* @param {typeof VelociousMailerBase} receiver - Proxy receiver.
|
|
9
|
+
* @returns {any} - Property value.
|
|
10
|
+
*/
|
|
11
|
+
get(target, prop, receiver) {
|
|
12
|
+
if (typeof prop !== "string" || prop in target) {
|
|
13
|
+
return Reflect.get(target, prop, receiver);
|
|
14
|
+
}
|
|
15
|
+
return (...args) => {
|
|
16
|
+
const instance = new receiver();
|
|
17
|
+
return instance._buildDelivery(prop, args);
|
|
18
|
+
};
|
|
19
|
+
}
|
|
20
|
+
});
|
|
21
|
+
export { VelociousMailerBase };
|
|
22
|
+
export default VelociousMailer;
|
|
23
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvbWFpbGVyL2luZGV4LmpzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLFlBQVk7QUFFWixrTUFBa007QUFFbE0sT0FBTyxFQUFDLG1CQUFtQixFQUFDLE1BQU0sV0FBVyxDQUFBO0FBRTdDLE1BQU0sZUFBZSxHQUFHLElBQUksS0FBSyxDQUFDLG1CQUFtQixFQUFFO0lBQ3JEOzs7OztPQUtHO0lBQ0gsR0FBRyxDQUFDLE1BQU0sRUFBRSxJQUFJLEVBQUUsUUFBUTtRQUN4QixJQUFJLE9BQU8sSUFBSSxLQUFLLFFBQVEsSUFBSSxJQUFJLElBQUksTUFBTSxFQUFFLENBQUM7WUFDL0MsT0FBTyxPQUFPLENBQUMsR0FBRyxDQUFDLE1BQU0sRUFBRSxJQUFJLEVBQUUsUUFBUSxDQUFDLENBQUE7UUFDNUMsQ0FBQztRQUVELE9BQU8sQ0FBQyxHQUFHLElBQUksRUFBRSxFQUFFO1lBQ2pCLE1BQU0sUUFBUSxHQUFHLElBQUksUUFBUSxFQUFFLENBQUE7WUFFL0IsT0FBTyxRQUFRLENBQUMsY0FBYyxDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsQ0FBQTtRQUM1QyxDQUFDLENBQUE7SUFDSCxDQUFDO0NBQ0YsQ0FBQyxDQUFBO0FBRUYsT0FBTyxFQUFDLG1CQUFtQixFQUFDLENBQUE7QUFDNUIsZUFBZSxlQUFlLENBQUEiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBAdHMtY2hlY2tcblxuLyoqIEB0eXBlZGVmIHt7dG86IGFueSwgc3ViamVjdDogc3RyaW5nLCBmcm9tPzogYW55LCBjYz86IGFueSwgYmNjPzogYW55LCByZXBseVRvPzogYW55LCBoZWFkZXJzPzogUmVjb3JkPHN0cmluZywgc3RyaW5nPiwgaHRtbDogc3RyaW5nLCBtYWlsZXI6IHN0cmluZywgYWN0aW9uOiBzdHJpbmd9fSBNYWlsZXJEZWxpdmVyeVBheWxvYWQgKi9cblxuaW1wb3J0IHtWZWxvY2lvdXNNYWlsZXJCYXNlfSBmcm9tIFwiLi9iYXNlLmpzXCJcblxuY29uc3QgVmVsb2Npb3VzTWFpbGVyID0gbmV3IFByb3h5KFZlbG9jaW91c01haWxlckJhc2UsIHtcbiAgLyoqXG4gICAqIEBwYXJhbSB7dHlwZW9mIFZlbG9jaW91c01haWxlckJhc2V9IHRhcmdldCAtIFByb3h5IHRhcmdldC5cbiAgICogQHBhcmFtIHtzdHJpbmcgfCBzeW1ib2x9IHByb3AgLSBQcm9wZXJ0eSBuYW1lLlxuICAgKiBAcGFyYW0ge3R5cGVvZiBWZWxvY2lvdXNNYWlsZXJCYXNlfSByZWNlaXZlciAtIFByb3h5IHJlY2VpdmVyLlxuICAgKiBAcmV0dXJucyB7YW55fSAtIFByb3BlcnR5IHZhbHVlLlxuICAgKi9cbiAgZ2V0KHRhcmdldCwgcHJvcCwgcmVjZWl2ZXIpIHtcbiAgICBpZiAodHlwZW9mIHByb3AgIT09IFwic3RyaW5nXCIgfHwgcHJvcCBpbiB0YXJnZXQpIHtcbiAgICAgIHJldHVybiBSZWZsZWN0LmdldCh0YXJnZXQsIHByb3AsIHJlY2VpdmVyKVxuICAgIH1cblxuICAgIHJldHVybiAoLi4uYXJncykgPT4ge1xuICAgICAgY29uc3QgaW5zdGFuY2UgPSBuZXcgcmVjZWl2ZXIoKVxuXG4gICAgICByZXR1cm4gaW5zdGFuY2UuX2J1aWxkRGVsaXZlcnkocHJvcCwgYXJncylcbiAgICB9XG4gIH1cbn0pXG5cbmV4cG9ydCB7VmVsb2Npb3VzTWFpbGVyQmFzZX1cbmV4cG9ydCBkZWZhdWx0IFZlbG9jaW91c01haWxlclxuIl19
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
export { VelociousMailerBase } from "./mailer/base.js";
|
|
2
|
+
export { default as SmtpMailerBackend } from "./mailer/backends/smtp.js";
|
|
3
|
+
export { default } from "./mailer/index.js";
|
|
4
|
+
export type MailerDeliveryPayload = {
|
|
5
|
+
to: any;
|
|
6
|
+
subject: string;
|
|
7
|
+
from?: any;
|
|
8
|
+
cc?: any;
|
|
9
|
+
bcc?: any;
|
|
10
|
+
replyTo?: any;
|
|
11
|
+
headers?: Record<string, string>;
|
|
12
|
+
html: string;
|
|
13
|
+
mailer: string;
|
|
14
|
+
action: string;
|
|
15
|
+
};
|
|
16
|
+
//# sourceMappingURL=mailer.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mailer.d.ts","sourceRoot":"","sources":["../../src/mailer.js"],"names":[],"mappings":";;;oCAEc;IAAC,EAAE,EAAE,GAAG,CAAC;IAAC,OAAO,EAAE,MAAM,CAAC;IAAC,IAAI,CAAC,EAAE,GAAG,CAAC;IAAC,EAAE,CAAC,EAAE,GAAG,CAAC;IAAC,GAAG,CAAC,EAAE,GAAG,CAAC;IAAC,OAAO,CAAC,EAAE,GAAG,CAAC;IAAC,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAC"}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
// @ts-check
|
|
2
|
+
/** @typedef {{to: any, subject: string, from?: any, cc?: any, bcc?: any, replyTo?: any, headers?: Record<string, string>, html: string, mailer: string, action: string}} MailerDeliveryPayload */
|
|
3
|
+
export { VelociousMailerBase } from "./mailer/base.js";
|
|
4
|
+
export { default as SmtpMailerBackend } from "./mailer/backends/smtp.js";
|
|
5
|
+
export { default } from "./mailer/index.js";
|
|
6
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFpbGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL21haWxlci5qcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxZQUFZO0FBRVosa01BQWtNO0FBRWxNLE9BQU8sRUFBQyxtQkFBbUIsRUFBQyxNQUFNLGtCQUFrQixDQUFBO0FBQ3BELE9BQU8sRUFBQyxPQUFPLElBQUksaUJBQWlCLEVBQUMsTUFBTSwyQkFBMkIsQ0FBQTtBQUN0RSxPQUFPLEVBQUMsT0FBTyxFQUFDLE1BQU0sbUJBQW1CLENBQUEiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBAdHMtY2hlY2tcblxuLyoqIEB0eXBlZGVmIHt7dG86IGFueSwgc3ViamVjdDogc3RyaW5nLCBmcm9tPzogYW55LCBjYz86IGFueSwgYmNjPzogYW55LCByZXBseVRvPzogYW55LCBoZWFkZXJzPzogUmVjb3JkPHN0cmluZywgc3RyaW5nPiwgaHRtbDogc3RyaW5nLCBtYWlsZXI6IHN0cmluZywgYWN0aW9uOiBzdHJpbmd9fSBNYWlsZXJEZWxpdmVyeVBheWxvYWQgKi9cblxuZXhwb3J0IHtWZWxvY2lvdXNNYWlsZXJCYXNlfSBmcm9tIFwiLi9tYWlsZXIvYmFzZS5qc1wiXG5leHBvcnQge2RlZmF1bHQgYXMgU210cE1haWxlckJhY2tlbmR9IGZyb20gXCIuL21haWxlci9iYWNrZW5kcy9zbXRwLmpzXCJcbmV4cG9ydCB7ZGVmYXVsdH0gZnJvbSBcIi4vbWFpbGVyL2luZGV4LmpzXCJcbiJdfQ==
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"test-runner.d.ts","sourceRoot":"","sources":["../../../src/testing/test-runner.js"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"test-runner.d.ts","sourceRoot":"","sources":["../../../src/testing/test-runner.js"],"names":[],"mappings":"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"}
|