velocious 1.0.383 → 1.0.384

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 CHANGED
@@ -264,6 +264,8 @@ Install the SMTP peer dependency in your app:
264
264
  npm install smtp-connection
265
265
  ```
266
266
 
267
+ When `connectionOptions.auth` is present, the SMTP backend authenticates before sending the message.
268
+
267
269
  Test deliveries are stored in memory:
268
270
 
269
271
  ```js
@@ -4,14 +4,14 @@
4
4
  export default class SmtpMailerBackend {
5
5
  /**
6
6
  * @param {object} args - Constructor args.
7
- * @param {object} args.connectionOptions - smtp-connection options.
7
+ * @param {SmtpConnectionOptions} args.connectionOptions - smtp-connection options.
8
8
  * @param {string} [args.defaultFrom] - Default from address.
9
9
  */
10
10
  constructor({ connectionOptions, defaultFrom, ...restArgs }: {
11
- connectionOptions: object;
11
+ connectionOptions: SmtpConnectionOptions;
12
12
  defaultFrom?: string | undefined;
13
13
  });
14
- connectionOptions: object;
14
+ connectionOptions: import("smtp-connection").SMTPConnectionOptions;
15
15
  defaultFrom: string | undefined;
16
16
  /**
17
17
  * @param {object} args - Delivery args.
@@ -22,4 +22,5 @@ export default class SmtpMailerBackend {
22
22
  payload: import("../index.js").MailerDeliveryPayload;
23
23
  }): Promise<void>;
24
24
  }
25
+ export type SmtpConnectionOptions = import("smtp-connection").SMTPConnectionOptions;
25
26
  //# sourceMappingURL=smtp.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"smtp.d.ts","sourceRoot":"","sources":["../../../../src/mailer/backends/smtp.js"],"names":[],"mappings":"AAyBA;;GAEG;AACH;IACE;;;;OAIG;IACH,6DAHG;QAAqB,iBAAiB,EAA9B,MAAM;QACQ,WAAW;KACnC,EAUA;IAFC,0BAA0C;IAC1C,gCAA8B;IAGhC;;;;OAIG;IACH,kCAHG;QAA0D,OAAO,EAAzD,OAAO,aAAa,EAAE,qBAAqB;KACnD,GAAU,OAAO,CAAC,IAAI,CAAC,CA8DzB;CACF"}
1
+ {"version":3,"file":"smtp.d.ts","sourceRoot":"","sources":["../../../../src/mailer/backends/smtp.js"],"names":[],"mappings":"AA2BA;;GAEG;AACH;IACE;;;;OAIG;IACH,6DAHG;QAAoC,iBAAiB,EAA7C,qBAAqB;QACP,WAAW;KACnC,EAUA;IAFC,mEAA0C;IAC1C,gCAA8B;IAGhC;;;;OAIG;IACH,kCAHG;QAA0D,OAAO,EAAzD,OAAO,aAAa,EAAE,qBAAqB;KACnD,GAAU,OAAO,CAAC,IAAI,CAAC,CAuHzB;CACF;oCAtKa,OAAO,iBAAiB,EAAE,qBAAqB"}
@@ -1,5 +1,6 @@
1
1
  // @ts-check
2
2
  import restArgsError from "../../utils/rest-args-error.js";
3
+ /** @typedef {import("smtp-connection").SMTPConnectionOptions} SmtpConnectionOptions */
3
4
  /**
4
5
  * @param {any} value - Recipient input.
5
6
  * @returns {string[]} - Normalized recipients.
@@ -27,7 +28,7 @@ function headerLine(name, value) {
27
28
  export default class SmtpMailerBackend {
28
29
  /**
29
30
  * @param {object} args - Constructor args.
30
- * @param {object} args.connectionOptions - smtp-connection options.
31
+ * @param {SmtpConnectionOptions} args.connectionOptions - smtp-connection options.
31
32
  * @param {string} [args.defaultFrom] - Default from address.
32
33
  */
33
34
  constructor({ connectionOptions, defaultFrom, ...restArgs }) {
@@ -71,29 +72,74 @@ export default class SmtpMailerBackend {
71
72
  }
72
73
  const message = `${headers.join("\r\n")}\r\n\r\n${payload.html}`;
73
74
  const { default: SmtpConnection } = await import("smtp-connection");
74
- const connection = new SmtpConnection(/** @type {Record<string, unknown>} */ (this.connectionOptions));
75
+ const connectionOptions = this.connectionOptions;
76
+ const connection = new SmtpConnection(connectionOptions);
75
77
  await new Promise((resolve, reject) => {
76
- connection.connect((connectError) => {
77
- if (connectError) {
78
- reject(connectError);
78
+ let settled = false;
79
+ let shuttingDown = false;
80
+ const cleanup = () => {
81
+ connection.removeListener("end", onEnd);
82
+ connection.removeListener("error", onError);
83
+ };
84
+ const resolveDelivery = () => {
85
+ if (settled)
86
+ return;
87
+ settled = true;
88
+ cleanup();
89
+ resolve(undefined);
90
+ };
91
+ /**
92
+ * @param {Error} error - Error that failed delivery.
93
+ */
94
+ const rejectDelivery = (error) => {
95
+ if (settled)
96
+ return;
97
+ settled = true;
98
+ cleanup();
99
+ connection.close();
100
+ reject(error);
101
+ };
102
+ const onEnd = () => resolveDelivery();
103
+ /**
104
+ * @param {Error} error - Error emitted by the SMTP connection.
105
+ */
106
+ const onError = (error) => {
107
+ if (shuttingDown) {
108
+ resolveDelivery();
79
109
  return;
80
110
  }
111
+ rejectDelivery(error);
112
+ };
113
+ const quitAfterAcceptedMessage = () => {
114
+ shuttingDown = true;
115
+ connection.once("end", onEnd);
116
+ connection.quit();
117
+ };
118
+ const sendMessage = () => {
81
119
  connection.send({ from, to: recipients }, /** @type {any} */ (message), (/** @type {Error | null | undefined} */ sendError) => {
82
120
  if (sendError) {
83
- connection.quit(() => reject(sendError));
121
+ rejectDelivery(sendError);
122
+ return;
123
+ }
124
+ quitAfterAcceptedMessage();
125
+ });
126
+ };
127
+ const authenticateAndSend = () => {
128
+ if (!connectionOptions.auth) {
129
+ sendMessage();
130
+ return;
131
+ }
132
+ connection.login(connectionOptions.auth, (loginError) => {
133
+ if (loginError) {
134
+ rejectDelivery(loginError);
84
135
  return;
85
136
  }
86
- connection.quit((quitError) => {
87
- if (quitError) {
88
- reject(quitError);
89
- }
90
- else {
91
- resolve(null);
92
- }
93
- });
137
+ sendMessage();
94
138
  });
95
- });
139
+ };
140
+ connection.on("error", onError);
141
+ connection.connect(authenticateAndSend);
96
142
  });
97
143
  }
98
144
  }
99
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic210cC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9tYWlsZXIvYmFja2VuZHMvc210cC5qcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxZQUFZO0FBRVosT0FBTyxhQUFhLE1BQU0sZ0NBQWdDLENBQUE7QUFFMUQ7OztHQUdHO0FBQ0gsU0FBUyxtQkFBbUIsQ0FBQyxLQUFLO0lBQ2hDLElBQUksQ0FBQyxLQUFLO1FBQUUsT0FBTyxFQUFFLENBQUE7SUFDckIsSUFBSSxLQUFLLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQztRQUFFLE9BQU8sS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsS0FBSyxDQUFDLENBQUE7SUFDL0QsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsS0FBSyxDQUFDLENBQUE7QUFDekMsQ0FBQztBQUVEOzs7O0dBSUc7QUFDSCxTQUFTLFVBQVUsQ0FBQyxJQUFJLEVBQUUsS0FBSztJQUM3QixJQUFJLENBQUMsS0FBSztRQUFFLE9BQU8sSUFBSSxDQUFBO0lBRXZCLE9BQU8sR0FBRyxJQUFJLEtBQUssS0FBSyxFQUFFLENBQUE7QUFDNUIsQ0FBQztBQUVEOztHQUVHO0FBQ0gsTUFBTSxDQUFDLE9BQU8sT0FBTyxpQkFBaUI7SUFDcEM7Ozs7T0FJRztJQUNILFlBQVksRUFBQyxpQkFBaUIsRUFBRSxXQUFXLEVBQUUsR0FBRyxRQUFRLEVBQUM7UUFDdkQsYUFBYSxDQUFDLFFBQVEsQ0FBQyxDQUFBO1FBRXZCLElBQUksQ0FBQyxpQkFBaUIsRUFBRSxDQUFDO1lBQ3ZCLE1BQU0sSUFBSSxLQUFLLENBQUMseUNBQXlDLE1BQU0sQ0FBQyxpQkFBaUIsQ0FBQyxFQUFFLENBQUMsQ0FBQTtRQUN2RixDQUFDO1FBRUQsSUFBSSxDQUFDLGlCQUFpQixHQUFHLGlCQUFpQixDQUFBO1FBQzFDLElBQUksQ0FBQyxX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TSxDQUFDLFlBQVksQ0FBQyxDQUFBO29CQUNwQixPQUFNO2dCQUNSLENBQUM7Z0JBRUQsVUFBVSxDQUFDLElBQUksQ0FBQyxFQUFDLElBQUksRUFBRSxFQUFFLEVBQUUsVUFBVSxFQUFDLEVBQUUsa0JBQWtCLENBQUMsQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDLHVDQUF1QyxDQUFDLFNBQVMsRUFBRSxFQUFFO29CQUMxSCxJQUFJLFNBQVMsRUFBRSxDQUFDO3dCQUNkLFVBQVUsQ0FBQyxJQUFJLENBQUMsR0FBRyxFQUFFLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUE7d0JBQ3hDLE9BQU07b0JBQ1IsQ0FBQztvQkFFRCxVQUFVLENBQUMsSUFBSSxDQUFDLENBQUMsU0FBUyxFQUFFLEVBQUU7d0JBQzVCLElBQUksU0FBUyxFQUFFLENBQUM7NEJBQ2QsTUFBTSxDQUFDLFNBQVMsQ0FBQyxDQUFBO3dCQUNuQixDQUFDOzZCQUFNLENBQUM7NEJBQ04sT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFBO3dCQUNmLENBQUM7b0JBQ0gsQ0FBQyxDQUFDLENBQUE7Z0JBQ0osQ0FBQyxDQUFDLENBQUE7WUFDSixDQUFDLENBQUMsQ0FBQTtRQUNKLENBQUMsQ0FBQyxDQUFBO0lBQ0osQ0FBQztDQUNGIiwic291cmNlc0NvbnRlbnQiOlsiLy8gQHRzLWNoZWNrXG5cbmltcG9ydCByZXN0QXJnc0Vycm9yIGZyb20gXCIuLi8uLi91dGlscy9yZXN0LWFyZ3MtZXJyb3IuanNcIlxuXG4vKipcbiAqIEBwYXJhbSB7YW55fSB2YWx1ZSAtIFJlY2lwaWVudCBpbnB1dC5cbiAqIEByZXR1cm5zIHtzdHJpbmdbXX0gLSBOb3JtYWxpemVkIHJlY2lwaWVudHMuXG4gKi9cbmZ1bmN0aW9uIG5vcm1hbGl6ZVJlY2lwaWVudHModmFsdWUpIHtcbiAgaWYgKCF2YWx1ZSkgcmV0dXJuIFtdXG4gIGlmIChBcnJheS5pc0FycmF5KHZhbHVlKSkgcmV0dXJuIHZhbHVlLmZpbHRlcigoZW50cnkpID0+IGVudHJ5KVxuICByZXR1cm4gW3ZhbHVlXS5maWx0ZXIoKGVudHJ5KSA9PiBlbnRyeSlcbn1cblxuLyoqXG4gKiBAcGFyYW0ge3N0cmluZ30gbmFtZSAtIEhlYWRlciBuYW1lLlxuICogQHBhcmFtIHtzdHJpbmcgfCB1bmRlZmluZWR9IHZhbHVlIC0gSGVhZGVyIHZhbHVlLlxuICogQHJldHVybnMge3N0cmluZyB8IG51bGx9IC0gSGVhZGVyIGxpbmUuXG4gKi9cbmZ1bmN0aW9uIGhlYWRlckxpbmUobmFtZSwgdmFsdWUpIHtcbiAgaWYgKCF2YWx1ZSkgcmV0dXJuIG51bGxcblxuICByZXR1cm4gYCR7bmFtZX06ICR7dmFsdWV9YFxufVxuXG4vKipcbiAqIFNNVFAgbWFpbGVyIGJhY2tlbmQgdXNpbmcgc210cC1jb25uZWN0aW9uLlxuICovXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBTbXRwTWFpbGVyQmFja2VuZCB7XG4gIC8qKlxuICAgKiBAcGFyYW0ge29iamVjdH0gYXJncyAtIENvbnN0cnVjdG9yIGFyZ3MuXG4gICAqIEBwYXJhbSB7b2JqZWN0fSBhcmdzLmNvbm5lY3Rpb25PcHRpb25zIC0gc210cC1jb25uZWN0aW9uIG9wdGlvbnMuXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBbYXJncy5kZWZhdWx0RnJvbV0gLSBEZWZhdWx0IGZyb20gYWRkcmVzcy5cbiAgICovXG4gIGNvbnN0cnVjdG9yKHtjb25uZWN0aW9uT3B0aW9ucywgZGVmYXVsdEZyb20sIC4uLnJlc3RBcmdzfSkge1xuICAgIHJlc3RBcmdzRXJyb3IocmVzdEFyZ3MpXG5cbiAgICBpZiAoIWNvbm5lY3Rpb25PcHRpb25zKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYE1pc3Npbmcgc210cCBjb25uZWN0aW9uIG9wdGlvbnMuIEdvdDogJHtTdHJpbmcoY29ubmVjdGlvbk9wdGlvbnMpfWApXG4gICAgfVxuXG4gICAgdGhpcy5jb25uZWN0aW9uT3B0aW9ucyA9IGNvbm5lY3Rpb25PcHRpb25zXG4gICAgdGhpcy5kZWZhdWx0RnJvbSA9IGRlZmF1bHRGcm9tXG4gIH1cblxuICAvKipcbiAgICogQHBhcmFtIHtvYmplY3R9IGFyZ3MgLSBEZWxpdmVyeSBhcmdzLlxuICAgKiBAcGFyYW0ge2ltcG9ydChcIi4uL2luZGV4LmpzXCIpLk1haWxlckRlbGl2ZXJ5UGF5bG9hZH0gYXJncy5wYXlsb2FkIC0gTWFpbCBkZWxpdmVyeSBwYXlsb2FkLlxuICAgKiBAcmV0dXJucyB7UHJvbWlzZTx2b2lkPn0gLSBSZXNvbHZlcyB3aGVuIGNvbXBsZXRlLlxuICAgKi9cbiAgYXN5bmMgZGVsaXZlcih7cGF5bG9hZCwgLi4ucmVzdEFyZ3N9KSB7XG4gICAgcmVzdEFyZ3NFcnJvcihyZXN0QXJncylcblxuICAgIGNvbnN0IGZyb20gPSBwYXlsb2FkLmZyb20gfHwgdGhpcy5kZWZhdWx0RnJvbVxuXG4gICAgaWYgKCFmcm9tKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYE1pc3NpbmcgbWFpbCBcImZyb21cIiBhZGRyZXNzLiBHb3Q6ICR7U3RyaW5nKGZyb20pfWApXG4gICAgfVxuXG4gICAgY29uc3QgdG9MaXN0ID0gbm9ybWFsaXplUmVjaXBpZW50cyhwYXlsb2FkLnRvKVxuICAgIGNvbnN0IGNjTGlzdCA9IG5vcm1hbGl6ZVJlY2lwaWVudHMocGF5bG9hZC5jYylcbiAgICBjb25zdCBiY2NMaXN0ID0gbm9ybWFsaXplUmVjaXBpZW50cyhwYXlsb2FkLmJjYylcbiAgICBjb25zdCByZWNpcGllbnRzID0gWy4uLnRvTGlzdCwgLi4uY2NMaXN0LCAuLi5iY2NMaXN0XVxuXG4gICAgaWYgKHJlY2lwaWVudHMubGVuZ3RoID09PSAwKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYE1pc3NpbmcgbWFpbCByZWNpcGllbnRzLiBHb3Q6ICR7SlNPTi5zdHJpbmdpZnkoe3RvOiBwYXlsb2FkLnRvLCBjYzogcGF5bG9hZC5jYywgYmNjOiBwYXlsb2FkLmJjY30pfWApXG4gICAgfVxuXG4gICAgY29uc3QgaGVhZGVycyA9IFtcbiAgICAgIGhlYWRlckxpbmUoXCJGcm9tXCIsIGZyb20pLFxuICAgICAgaGVhZGVyTGluZShcIlRvXCIsIHRvTGlzdC5sZW5ndGggPiAwID8gdG9MaXN0LmpvaW4oXCIsIFwiKSA6IHVuZGVmaW5lZCksXG4gICAgICBoZWFkZXJMaW5lKFwiQ2NcIiwgY2NMaXN0Lmxlbmd0aCA+IDAgPyBjY0xpc3Quam9pbihcIiwgXCIpIDogdW5kZWZpbmVkKSxcbiAgICAgIGhlYWRlckxpbmUoXCJTdWJqZWN0XCIsIHBheWxvYWQuc3ViamVjdCksXG4gICAgICBcIk1JTUUtVmVyc2lvbjogMS4wXCIsXG4gICAgICBcIkNvbnRlbnQtVHlwZTogdGV4dC9odG1sOyBjaGFyc2V0PVVURi04XCJcbiAgICBdLmZpbHRlcigobGluZSkgPT4gbGluZSlcblxuICAgIGlmIChwYXlsb2FkLmhlYWRlcnMpIHtcbiAgICAgIGZvciAoY29uc3QgW2hlYWRlck5hbWUsIGhlYWRlclZhbHVlXSBvZiBPYmplY3QuZW50cmllcyhwYXlsb2FkLmhlYWRlcnMpKSB7XG4gICAgICAgIGhlYWRlcnMucHVzaChgJHtoZWFkZXJOYW1lfTogJHtoZWFkZXJWYWx1ZX1gKVxuICAgICAgfVxuICAgIH1cblxuICAgIGNvbnN0IG1lc3NhZ2UgPSBgJHtoZWFkZXJzLmpvaW4oXCJcXHJcXG5cIil9XFxyXFxuXFxyXFxuJHtwYXlsb2FkLmh0bWx9YFxuICAgIGNvbnN0IHtkZWZhdWx0OiBTbXRwQ29ubmVjdGlvbn0gPSBhd2FpdCBpbXBvcnQoXCJzbXRwLWNvbm5lY3Rpb25cIilcbiAgICBjb25zdCBjb25uZWN0aW9uID0gbmV3IFNtdHBDb25uZWN0aW9uKC8qKiBAdHlwZSB7UmVjb3JkPHN0cmluZywgdW5rbm93bj59ICovICh0aGlzLmNvbm5lY3Rpb25PcHRpb25zKSlcblxuICAgIGF3YWl0IG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICAgIGNvbm5lY3Rpb24uY29ubmVjdCgoY29ubmVjdEVycm9yKSA9PiB7XG4gICAgICAgIGlmIChjb25uZWN0RXJyb3IpIHtcbiAgICAgICAgICByZWplY3QoY29ubmVjdEVycm9yKVxuICAgICAgICAgIHJldHVyblxuICAgICAgICB9XG5cbiAgICAgICAgY29ubmVjdGlvbi5zZW5kKHtmcm9tLCB0bzogcmVjaXBpZW50c30sIC8qKiBAdHlwZSB7YW55fSAqLyAobWVzc2FnZSksICgvKiogQHR5cGUge0Vycm9yIHwgbnVsbCB8IHVuZGVmaW5lZH0gKi8gc2VuZEVycm9yKSA9PiB7XG4gICAgICAgICAgaWYgKHNlbmRFcnJvcikge1xuICAgICAgICAgICAgY29ubmVjdGlvbi5xdWl0KCgpID0+IHJlamVjdChzZW5kRXJyb3IpKVxuICAgICAgICAgICAgcmV0dXJuXG4gICAgICAgICAgfVxuXG4gICAgICAgICAgY29ubmVjdGlvbi5xdWl0KChxdWl0RXJyb3IpID0+IHtcbiAgICAgICAgICAgIGlmIChxdWl0RXJyb3IpIHtcbiAgICAgICAgICAgICAgcmVqZWN0KHF1aXRFcnJvcilcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgIHJlc29sdmUobnVsbClcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9KVxuICAgICAgICB9KVxuICAgICAgfSlcbiAgICB9KVxuICB9XG59XG4iXX0=
145
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic210cC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9tYWlsZXIvYmFja2VuZHMvc210cC5qcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxZQUFZO0FBRVosT0FBTyxhQUFhLE1BQU0sZ0NBQWdDLENBQUE7QUFFMUQsdUZBQXVGO0FBRXZGOzs7R0FHRztBQUNILFNBQVMsbUJBQW1CLENBQUMsS0FBSztJQUNoQyxJQUFJLENBQUMsS0FBSztRQUFFLE9BQU8sRUFBRSxDQUFBO0lBQ3JCLElBQUksS0FBSyxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUM7UUFBRSxPQUFPLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLEtBQUssQ0FBQyxDQUFBO0lBQy9ELE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLEtBQUssQ0FBQyxDQUFBO0FBQ3pDLENBQUM7QUFFRDs7OztHQUlHO0FBQ0gsU0FBUyxVQUFVLENBQUMsSUFBSSxFQUFFLEtBQUs7SUFDN0IsSUFBSSxDQUFDLEtBQUs7UUFBRSxPQUFPLElBQUksQ0FBQTtJQUV2QixPQUFPLEdBQUcsSUFBSSxLQUFLLEtBQUssRUFBRSxDQUFBO0FBQzVCLENBQUM7QUFFRDs7R0FFRztBQUNILE1BQU0sQ0FBQyxPQUFPLE9BQU8saUJBQWlCO0lBQ3BDOzs7O09BSUc7SUFDSCxZQUFZLEVBQUMsaUJBQWlCLEVBQUUsV0FBVyxFQUFFLEdBQUcsUUFBUSxFQUFDO1FBQ3ZELGFBQWEsQ0FBQyxRQUFRLENBQUMsQ0FBQTtRQUV2QixJQUFJLENBQUMsaUJBQWlCLEVBQUUsQ0FBQztZQUN2QixNQUFNLElBQUksS0FBSyxDQUFDLHlDQUF5QyxNQUFNLENBQUMsaUJBQWlCLENBQUMsRUFBRSxDQUFDLENBQUE7UUFDdkYsQ0FBQztRQUVELElBQUksQ0FBQyxpQkFBaUIsR0FBRyxpQkFBaUIsQ0FBQTtRQUMx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QUFNLFdBQVcsR0FBRyxHQUFHLEVBQUU7Z0JBQ3ZCLFVBQVUsQ0FBQyxJQUFJLENBQUMsRUFBQyxJQUFJLEVBQUUsRUFBRSxFQUFFLFVBQVUsRUFBQyxFQUFFLGtCQUFrQixDQUFDLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQyx1Q0FBdUMsQ0FBQyxTQUFTLEVBQUUsRUFBRTtvQkFDMUgsSUFBSSxTQUFTLEVBQUUsQ0FBQzt3QkFDZCxjQUFjLENBQUMsU0FBUyxDQUFDLENBQUE7d0JBQ3pCLE9BQU07b0JBQ1IsQ0FBQztvQkFFRCx3QkFBd0IsRUFBRSxDQUFBO2dCQUM1QixDQUFDLENBQUMsQ0FBQTtZQUNKLENBQUMsQ0FBQTtZQUVELE1BQU0sbUJBQW1CLEdBQUcsR0FBRyxFQUFFO2dCQUMvQixJQUFJLENBQUMsaUJBQWlCLENBQUMsSUFBSSxFQUFFLENBQUM7b0JBQzVCLFdBQVcsRUFBRSxDQUFBO29CQUNiLE9BQU07Z0JBQ1IsQ0FBQztnQkFFRCxVQUFVLENBQUMsS0FBSyxDQUFDLGlCQUFpQixDQUFDLElBQUksRUFBRSxDQUFDLFVBQVUsRUFBRSxFQUFFO29CQUN0RCxJQUFJLFVBQVUsRUFBRSxDQUFDO3dCQUNmLGNBQWMsQ0FBQyxVQUFVLENBQUMsQ0FBQTt3QkFDMUIsT0FBTTtvQkFDUixDQUFDO29CQUVELFdBQVcsRUFBRSxDQUFBO2dCQUNmLENBQUMsQ0FBQyxDQUFBO1lBQ0osQ0FBQyxDQUFBO1lBRUQsVUFBVSxDQUFDLEVBQUUsQ0FBQyxPQUFPLEVBQUUsT0FBTyxDQUFDLENBQUE7WUFDL0IsVUFBVSxDQUFDLE9BQU8sQ0FBQyxtQkFBbUIsQ0FBQyxDQUFBO1FBQ3pDLENBQUMsQ0FBQyxDQUFBO0lBQ0osQ0FBQztDQUNGIiwic291cmNlc0NvbnRlbnQiOlsiLy8gQHRzLWNoZWNrXG5cbmltcG9ydCByZXN0QXJnc0Vycm9yIGZyb20gXCIuLi8uLi91dGlscy9yZXN0LWFyZ3MtZXJyb3IuanNcIlxuXG4vKiogQHR5cGVkZWYge2ltcG9ydChcInNtdHAtY29ubmVjdGlvblwiKS5TTVRQQ29ubmVjdGlvbk9wdGlvbnN9IFNtdHBDb25uZWN0aW9uT3B0aW9ucyAqL1xuXG4vKipcbiAqIEBwYXJhbSB7YW55fSB2YWx1ZSAtIFJlY2lwaWVudCBpbnB1dC5cbiAqIEByZXR1cm5zIHtzdHJpbmdbXX0gLSBOb3JtYWxpemVkIHJlY2lwaWVudHMuXG4gKi9cbmZ1bmN0aW9uIG5vcm1hbGl6ZVJlY2lwaWVudHModmFsdWUpIHtcbiAgaWYgKCF2YWx1ZSkgcmV0dXJuIFtdXG4gIGlmIChBcnJheS5pc0FycmF5KHZhbHVlKSkgcmV0dXJuIHZhbHVlLmZpbHRlcigoZW50cnkpID0+IGVudHJ5KVxuICByZXR1cm4gW3ZhbHVlXS5maWx0ZXIoKGVudHJ5KSA9PiBlbnRyeSlcbn1cblxuLyoqXG4gKiBAcGFyYW0ge3N0cmluZ30gbmFtZSAtIEhlYWRlciBuYW1lLlxuICogQHBhcmFtIHtzdHJpbmcgfCB1bmRlZmluZWR9IHZhbHVlIC0gSGVhZGVyIHZhbHVlLlxuICogQHJldHVybnMge3N0cmluZyB8IG51bGx9IC0gSGVhZGVyIGxpbmUuXG4gKi9cbmZ1bmN0aW9uIGhlYWRlckxpbmUobmFtZSwgdmFsdWUpIHtcbiAgaWYgKCF2YWx1ZSkgcmV0dXJuIG51bGxcblxuICByZXR1cm4gYCR7bmFtZX06ICR7dmFsdWV9YFxufVxuXG4vKipcbiAqIFNNVFAgbWFpbGVyIGJhY2tlbmQgdXNpbmcgc210cC1jb25uZWN0aW9uLlxuICovXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBTbXRwTWFpbGVyQmFja2VuZCB7XG4gIC8qKlxuICAgKiBAcGFyYW0ge29iamVjdH0gYXJncyAtIENvbnN0cnVjdG9yIGFyZ3MuXG4gICAqIEBwYXJhbSB7U210cENvbm5lY3Rpb25PcHRpb25zfSBhcmdzLmNvbm5lY3Rpb25PcHRpb25zIC0gc210cC1jb25uZWN0aW9uIG9wdGlvbnMuXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBbYXJncy5kZWZhdWx0RnJvbV0gLSBEZWZhdWx0IGZyb20gYWRkcmVzcy5cbiAgICovXG4gIGNvbnN0cnVjdG9yKHtjb25uZWN0aW9uT3B0aW9ucywgZGVmYXVsdEZyb20sIC4uLnJlc3RBcmdzfSkge1xuICAgIHJlc3RBcmdzRXJyb3IocmVzdEFyZ3MpXG5cbiAgICBpZiAoIWNvbm5lY3Rpb25PcHRpb25zKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYE1pc3Npbmcgc210cCBjb25uZWN0aW9uIG9wdGlvbnMuIEdvdDogJHtTdHJpbmcoY29ubmVjdGlvbk9wdGlvbnMpfWApXG4gICAgfVxuXG4gICAgdGhpcy5jb25uZWN0aW9uT3B0aW9ucyA9IGNvbm5lY3Rpb25PcHRpb25zXG4gICAgdGhpcy5kZWZhdWx0RnJvbSA9IGRlZmF1bHRGcm9tXG4gIH1cblxuICAvKipcbiAgICogQHBhcmFtIHtvYmplY3R9IGFyZ3MgLSBEZWxpdmVyeSBhcmdzLlxuICAgKiBAcGFyYW0ge2ltcG9ydChcIi4uL2luZGV4LmpzXCIpLk1haWxlckRlbGl2ZXJ5UGF5bG9hZH0gYXJncy5wYXlsb2FkIC0gTWFpbCBkZWxpdmVyeSBwYXlsb2FkLlxuICAgKiBAcmV0dXJucyB7UHJvbWlzZTx2b2lkPn0gLSBSZXNvbHZlcyB3aGVuIGNvbXBsZXRlLlxuICAgKi9cbiAgYXN5bmMgZGVsaXZlcih7cGF5bG9hZCwgLi4ucmVzdEFyZ3N9KSB7XG4gICAgcmVzdEFyZ3NFcnJvcihyZXN0QXJncylcblxuICAgIGNvbnN0IGZyb20gPSBwYXlsb2FkLmZyb20gfHwgdGhpcy5kZWZhdWx0RnJvbVxuXG4gICAgaWYgKCFmcm9tKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYE1pc3NpbmcgbWFpbCBcImZyb21cIiBhZGRyZXNzLiBHb3Q6ICR7U3RyaW5nKGZyb20pfWApXG4gICAgfVxuXG4gICAgY29uc3QgdG9MaXN0ID0gbm9ybWFsaXplUmVjaXBpZW50cyhwYXlsb2FkLnRvKVxuICAgIGNvbnN0IGNjTGlzdCA9IG5vcm1hbGl6ZVJlY2lwaWVudHMocGF5bG9hZC5jYylcbiAgICBjb25zdCBiY2NMaXN0ID0gbm9ybWFsaXplUmVjaXBpZW50cyhwYXlsb2FkLmJjYylcbiAgICBjb25zdCByZWNpcGllbnRzID0gWy4uLnRvTGlzdCwgLi4uY2NMaXN0LCAuLi5iY2NMaXN0XVxuXG4gICAgaWYgKHJlY2lwaWVudHMubGVuZ3RoID09PSAwKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYE1pc3NpbmcgbWFpbCByZWNpcGllbnRzLiBHb3Q6ICR7SlNPTi5zdHJpbmdpZnkoe3RvOiBwYXlsb2FkLnRvLCBjYzogcGF5bG9hZC5jYywgYmNjOiBwYXlsb2FkLmJjY30pfWApXG4gICAgfVxuXG4gICAgY29uc3QgaGVhZGVycyA9IFtcbiAgICAgIGhlYWRlckxpbmUoXCJGcm9tXCIsIGZyb20pLFxuICAgICAgaGVhZGVyTGluZShcIlRvXCIsIHRvTGlzdC5sZW5ndGggPiAwID8gdG9MaXN0LmpvaW4oXCIsIFwiKSA6IHVuZGVmaW5lZCksXG4gICAgICBoZWFkZXJMaW5lKFwiQ2NcIiwgY2NMaXN0Lmxlbmd0aCA+IDAgPyBjY0xpc3Quam9pbihcIiwgXCIpIDogdW5kZWZpbmVkKSxcbiAgICAgIGhlYWRlckxpbmUoXCJTdWJqZWN0XCIsIHBheWxvYWQuc3ViamVjdCksXG4gICAgICBcIk1JTUUtVmVyc2lvbjogMS4wXCIsXG4gICAgICBcIkNvbnRlbnQtVHlwZTogdGV4dC9odG1sOyBjaGFyc2V0PVVURi04XCJcbiAgICBdLmZpbHRlcigobGluZSkgPT4gbGluZSlcblxuICAgIGlmIChwYXlsb2FkLmhlYWRlcnMpIHtcbiAgICAgIGZvciAoY29uc3QgW2hlYWRlck5hbWUsIGhlYWRlclZhbHVlXSBvZiBPYmplY3QuZW50cmllcyhwYXlsb2FkLmhlYWRlcnMpKSB7XG4gICAgICAgIGhlYWRlcnMucHVzaChgJHtoZWFkZXJOYW1lfTogJHtoZWFkZXJWYWx1ZX1gKVxuICAgICAgfVxuICAgIH1cblxuICAgIGNvbnN0IG1lc3NhZ2UgPSBgJHtoZWFkZXJzLmpvaW4oXCJcXHJcXG5cIil9XFxyXFxuXFxyXFxuJHtwYXlsb2FkLmh0bWx9YFxuICAgIGNvbnN0IHtkZWZhdWx0OiBTbXRwQ29ubmVjdGlvbn0gPSBhd2FpdCBpbXBvcnQoXCJzbXRwLWNvbm5lY3Rpb25cIilcbiAgICBjb25zdCBjb25uZWN0aW9uT3B0aW9ucyA9IHRoaXMuY29ubmVjdGlvbk9wdGlvbnNcbiAgICBjb25zdCBjb25uZWN0aW9uID0gbmV3IFNtdHBDb25uZWN0aW9uKGNvbm5lY3Rpb25PcHRpb25zKVxuXG4gICAgYXdhaXQgbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuICAgICAgbGV0IHNldHRsZWQgPSBmYWxzZVxuICAgICAgbGV0IHNodXR0aW5nRG93biA9IGZhbHNlXG5cbiAgICAgIGNvbnN0IGNsZWFudXAgPSAoKSA9PiB7XG4gICAgICAgIGNvbm5lY3Rpb24ucmVtb3ZlTGlzdGVuZXIoXCJlbmRcIiwgb25FbmQpXG4gICAgICAgIGNvbm5lY3Rpb24ucmVtb3ZlTGlzdGVuZXIoXCJlcnJvclwiLCBvbkVycm9yKVxuICAgICAgfVxuXG4gICAgICBjb25zdCByZXNvbHZlRGVsaXZlcnkgPSAoKSA9PiB7XG4gICAgICAgIGlmIChzZXR0bGVkKSByZXR1cm5cblxuICAgICAgICBzZXR0bGVkID0gdHJ1ZVxuICAgICAgICBjbGVhbnVwKClcbiAgICAgICAgcmVzb2x2ZSh1bmRlZmluZWQpXG4gICAgICB9XG5cbiAgICAgIC8qKlxuICAgICAgICogQHBhcmFtIHtFcnJvcn0gZXJyb3IgLSBFcnJvciB0aGF0IGZhaWxlZCBkZWxpdmVyeS5cbiAgICAgICAqL1xuICAgICAgY29uc3QgcmVqZWN0RGVsaXZlcnkgPSAoZXJyb3IpID0+IHtcbiAgICAgICAgaWYgKHNldHRsZWQpIHJldHVyblxuXG4gICAgICAgIHNldHRsZWQgPSB0cnVlXG4gICAgICAgIGNsZWFudXAoKVxuICAgICAgICBjb25uZWN0aW9uLmNsb3NlKClcbiAgICAgICAgcmVqZWN0KGVycm9yKVxuICAgICAgfVxuXG4gICAgICBjb25zdCBvbkVuZCA9ICgpID0+IHJlc29sdmVEZWxpdmVyeSgpXG5cbiAgICAgIC8qKlxuICAgICAgICogQHBhcmFtIHtFcnJvcn0gZXJyb3IgLSBFcnJvciBlbWl0dGVkIGJ5IHRoZSBTTVRQIGNvbm5lY3Rpb24uXG4gICAgICAgKi9cbiAgICAgIGNvbnN0IG9uRXJyb3IgPSAoZXJyb3IpID0+IHtcbiAgICAgICAgaWYgKHNodXR0aW5nRG93bikge1xuICAgICAgICAgIHJlc29sdmVEZWxpdmVyeSgpXG4gICAgICAgICAgcmV0dXJuXG4gICAgICAgIH1cblxuICAgICAgICByZWplY3REZWxpdmVyeShlcnJvcilcbiAgICAgIH1cblxuICAgICAgY29uc3QgcXVpdEFmdGVyQWNjZXB0ZWRNZXNzYWdlID0gKCkgPT4ge1xuICAgICAgICBzaHV0dGluZ0Rvd24gPSB0cnVlXG4gICAgICAgIGNvbm5lY3Rpb24ub25jZShcImVuZFwiLCBvbkVuZClcbiAgICAgICAgY29ubmVjdGlvbi5xdWl0KClcbiAgICAgIH1cblxuICAgICAgY29uc3Qgc2VuZE1lc3NhZ2UgPSAoKSA9PiB7XG4gICAgICAgIGNvbm5lY3Rpb24uc2VuZCh7ZnJvbSwgdG86IHJlY2lwaWVudHN9LCAvKiogQHR5cGUge2FueX0gKi8gKG1lc3NhZ2UpLCAoLyoqIEB0eXBlIHtFcnJvciB8IG51bGwgfCB1bmRlZmluZWR9ICovIHNlbmRFcnJvcikgPT4ge1xuICAgICAgICAgIGlmIChzZW5kRXJyb3IpIHtcbiAgICAgICAgICAgIHJlamVjdERlbGl2ZXJ5KHNlbmRFcnJvcilcbiAgICAgICAgICAgIHJldHVyblxuICAgICAgICAgIH1cblxuICAgICAgICAgIHF1aXRBZnRlckFjY2VwdGVkTWVzc2FnZSgpXG4gICAgICAgIH0pXG4gICAgICB9XG5cbiAgICAgIGNvbnN0IGF1dGhlbnRpY2F0ZUFuZFNlbmQgPSAoKSA9PiB7XG4gICAgICAgIGlmICghY29ubmVjdGlvbk9wdGlvbnMuYXV0aCkge1xuICAgICAgICAgIHNlbmRNZXNzYWdlKClcbiAgICAgICAgICByZXR1cm5cbiAgICAgICAgfVxuXG4gICAgICAgIGNvbm5lY3Rpb24ubG9naW4oY29ubmVjdGlvbk9wdGlvbnMuYXV0aCwgKGxvZ2luRXJyb3IpID0+IHtcbiAgICAgICAgICBpZiAobG9naW5FcnJvcikge1xuICAgICAgICAgICAgcmVqZWN0RGVsaXZlcnkobG9naW5FcnJvcilcbiAgICAgICAgICAgIHJldHVyblxuICAgICAgICAgIH1cblxuICAgICAgICAgIHNlbmRNZXNzYWdlKClcbiAgICAgICAgfSlcbiAgICAgIH1cblxuICAgICAgY29ubmVjdGlvbi5vbihcImVycm9yXCIsIG9uRXJyb3IpXG4gICAgICBjb25uZWN0aW9uLmNvbm5lY3QoYXV0aGVudGljYXRlQW5kU2VuZClcbiAgICB9KVxuICB9XG59XG4iXX0=
package/package.json CHANGED
@@ -3,7 +3,7 @@
3
3
  "velocious": "build/bin/velocious.js"
4
4
  },
5
5
  "name": "velocious",
6
- "version": "1.0.383",
6
+ "version": "1.0.384",
7
7
  "main": "build/index.js",
8
8
  "types": "build/index.d.ts",
9
9
  "files": [
@@ -17,7 +17,7 @@
17
17
  "copy:templates": "cpy \"src/templates/**/*.js\" build/src/templates",
18
18
  "lint": "eslint",
19
19
  "prepare": "npm run build",
20
- "release:patch": "node scripts/release-patch.js",
20
+ "release:patch": "release-patch",
21
21
  "test": "node scripts/run-tests.js",
22
22
  "test:browser": "node scripts/test-browser.js",
23
23
  "prepublishOnly": "npm run build && node scripts/ensure-bin-executable.js",
@@ -85,6 +85,7 @@
85
85
  "mysql": "^2.18.1",
86
86
  "node-fetch": "^3.3.1",
87
87
  "pg": "^8.16.3",
88
+ "release-patch": "^1.0.0",
88
89
  "require-context": "^1.1.0",
89
90
  "sqlite": "^5.1.1",
90
91
  "sqlite3": "^6.0.1",