m06_task3.js 1.0.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (204) hide show
  1. package/.idea/.name +1 -0
  2. package/.idea/inspectionProfiles/Project_Default.xml +10 -0
  3. package/.idea/jsLibraryMappings.xml +6 -0
  4. package/.idea/modules.xml +8 -0
  5. package/.idea/node_lab_6.iml +12 -0
  6. package/06_task2.html +73 -0
  7. package/06_task2.js +52 -0
  8. package/06_task3.js +3 -0
  9. package/06_task4.js +3 -0
  10. package/m06_task3.js +28 -0
  11. package/package/index.js +28 -0
  12. package/package/node_modules/.package-lock.json +31 -0
  13. package/package/node_modules/@types/node/LICENSE +21 -0
  14. package/package/node_modules/@types/node/README.md +16 -0
  15. package/package/node_modules/@types/node/assert/strict.d.ts +8 -0
  16. package/package/node_modules/@types/node/assert.d.ts +961 -0
  17. package/package/node_modules/@types/node/async_hooks.d.ts +501 -0
  18. package/package/node_modules/@types/node/buffer.d.ts +2258 -0
  19. package/package/node_modules/@types/node/child_process.d.ts +1369 -0
  20. package/package/node_modules/@types/node/cluster.d.ts +410 -0
  21. package/package/node_modules/@types/node/console.d.ts +412 -0
  22. package/package/node_modules/@types/node/constants.d.ts +18 -0
  23. package/package/node_modules/@types/node/crypto.d.ts +3964 -0
  24. package/package/node_modules/@types/node/dgram.d.ts +545 -0
  25. package/package/node_modules/@types/node/diagnostics_channel.d.ts +153 -0
  26. package/package/node_modules/@types/node/dns/promises.d.ts +370 -0
  27. package/package/node_modules/@types/node/dns.d.ts +659 -0
  28. package/package/node_modules/@types/node/dom-events.d.ts +126 -0
  29. package/package/node_modules/@types/node/domain.d.ts +170 -0
  30. package/package/node_modules/@types/node/events.d.ts +678 -0
  31. package/package/node_modules/@types/node/fs/promises.d.ts +1138 -0
  32. package/package/node_modules/@types/node/fs.d.ts +3872 -0
  33. package/package/node_modules/@types/node/globals.d.ts +300 -0
  34. package/package/node_modules/@types/node/globals.global.d.ts +1 -0
  35. package/package/node_modules/@types/node/http.d.ts +1614 -0
  36. package/package/node_modules/@types/node/http2.d.ts +2134 -0
  37. package/package/node_modules/@types/node/https.d.ts +541 -0
  38. package/package/node_modules/@types/node/index.d.ts +133 -0
  39. package/package/node_modules/@types/node/inspector.d.ts +2741 -0
  40. package/package/node_modules/@types/node/module.d.ts +114 -0
  41. package/package/node_modules/@types/node/net.d.ts +869 -0
  42. package/package/node_modules/@types/node/os.d.ts +466 -0
  43. package/package/node_modules/@types/node/package.json +232 -0
  44. package/package/node_modules/@types/node/path.d.ts +191 -0
  45. package/package/node_modules/@types/node/perf_hooks.d.ts +625 -0
  46. package/package/node_modules/@types/node/process.d.ts +1482 -0
  47. package/package/node_modules/@types/node/punycode.d.ts +117 -0
  48. package/package/node_modules/@types/node/querystring.d.ts +131 -0
  49. package/package/node_modules/@types/node/readline/promises.d.ts +143 -0
  50. package/package/node_modules/@types/node/readline.d.ts +653 -0
  51. package/package/node_modules/@types/node/repl.d.ts +424 -0
  52. package/package/node_modules/@types/node/stream/consumers.d.ts +12 -0
  53. package/package/node_modules/@types/node/stream/promises.d.ts +42 -0
  54. package/package/node_modules/@types/node/stream/web.d.ts +330 -0
  55. package/package/node_modules/@types/node/stream.d.ts +1340 -0
  56. package/package/node_modules/@types/node/string_decoder.d.ts +67 -0
  57. package/package/node_modules/@types/node/test.d.ts +314 -0
  58. package/package/node_modules/@types/node/timers/promises.d.ts +68 -0
  59. package/package/node_modules/@types/node/timers.d.ts +94 -0
  60. package/package/node_modules/@types/node/tls.d.ts +1028 -0
  61. package/package/node_modules/@types/node/trace_events.d.ts +171 -0
  62. package/package/node_modules/@types/node/ts4.8/assert/strict.d.ts +8 -0
  63. package/package/node_modules/@types/node/ts4.8/assert.d.ts +961 -0
  64. package/package/node_modules/@types/node/ts4.8/async_hooks.d.ts +501 -0
  65. package/package/node_modules/@types/node/ts4.8/buffer.d.ts +2259 -0
  66. package/package/node_modules/@types/node/ts4.8/child_process.d.ts +1369 -0
  67. package/package/node_modules/@types/node/ts4.8/cluster.d.ts +410 -0
  68. package/package/node_modules/@types/node/ts4.8/console.d.ts +412 -0
  69. package/package/node_modules/@types/node/ts4.8/constants.d.ts +18 -0
  70. package/package/node_modules/@types/node/ts4.8/crypto.d.ts +3964 -0
  71. package/package/node_modules/@types/node/ts4.8/dgram.d.ts +545 -0
  72. package/package/node_modules/@types/node/ts4.8/diagnostics_channel.d.ts +153 -0
  73. package/package/node_modules/@types/node/ts4.8/dns/promises.d.ts +370 -0
  74. package/package/node_modules/@types/node/ts4.8/dns.d.ts +659 -0
  75. package/package/node_modules/@types/node/ts4.8/dom-events.d.ts +126 -0
  76. package/package/node_modules/@types/node/ts4.8/domain.d.ts +170 -0
  77. package/package/node_modules/@types/node/ts4.8/events.d.ts +678 -0
  78. package/package/node_modules/@types/node/ts4.8/fs/promises.d.ts +1138 -0
  79. package/package/node_modules/@types/node/ts4.8/fs.d.ts +3872 -0
  80. package/package/node_modules/@types/node/ts4.8/globals.d.ts +294 -0
  81. package/package/node_modules/@types/node/ts4.8/globals.global.d.ts +1 -0
  82. package/package/node_modules/@types/node/ts4.8/http.d.ts +1614 -0
  83. package/package/node_modules/@types/node/ts4.8/http2.d.ts +2134 -0
  84. package/package/node_modules/@types/node/ts4.8/https.d.ts +541 -0
  85. package/package/node_modules/@types/node/ts4.8/index.d.ts +88 -0
  86. package/package/node_modules/@types/node/ts4.8/inspector.d.ts +2741 -0
  87. package/package/node_modules/@types/node/ts4.8/module.d.ts +114 -0
  88. package/package/node_modules/@types/node/ts4.8/net.d.ts +869 -0
  89. package/package/node_modules/@types/node/ts4.8/os.d.ts +466 -0
  90. package/package/node_modules/@types/node/ts4.8/path.d.ts +191 -0
  91. package/package/node_modules/@types/node/ts4.8/perf_hooks.d.ts +625 -0
  92. package/package/node_modules/@types/node/ts4.8/process.d.ts +1482 -0
  93. package/package/node_modules/@types/node/ts4.8/punycode.d.ts +117 -0
  94. package/package/node_modules/@types/node/ts4.8/querystring.d.ts +131 -0
  95. package/package/node_modules/@types/node/ts4.8/readline/promises.d.ts +143 -0
  96. package/package/node_modules/@types/node/ts4.8/readline.d.ts +653 -0
  97. package/package/node_modules/@types/node/ts4.8/repl.d.ts +424 -0
  98. package/package/node_modules/@types/node/ts4.8/stream/consumers.d.ts +12 -0
  99. package/package/node_modules/@types/node/ts4.8/stream/promises.d.ts +42 -0
  100. package/package/node_modules/@types/node/ts4.8/stream/web.d.ts +330 -0
  101. package/package/node_modules/@types/node/ts4.8/stream.d.ts +1340 -0
  102. package/package/node_modules/@types/node/ts4.8/string_decoder.d.ts +67 -0
  103. package/package/node_modules/@types/node/ts4.8/test.d.ts +314 -0
  104. package/package/node_modules/@types/node/ts4.8/timers/promises.d.ts +68 -0
  105. package/package/node_modules/@types/node/ts4.8/timers.d.ts +94 -0
  106. package/package/node_modules/@types/node/ts4.8/tls.d.ts +1028 -0
  107. package/package/node_modules/@types/node/ts4.8/trace_events.d.ts +171 -0
  108. package/package/node_modules/@types/node/ts4.8/tty.d.ts +206 -0
  109. package/package/node_modules/@types/node/ts4.8/url.d.ts +897 -0
  110. package/package/node_modules/@types/node/ts4.8/util.d.ts +1850 -0
  111. package/package/node_modules/@types/node/ts4.8/v8.d.ts +396 -0
  112. package/package/node_modules/@types/node/ts4.8/vm.d.ts +509 -0
  113. package/package/node_modules/@types/node/ts4.8/wasi.d.ts +158 -0
  114. package/package/node_modules/@types/node/ts4.8/worker_threads.d.ts +689 -0
  115. package/package/node_modules/@types/node/ts4.8/zlib.d.ts +517 -0
  116. package/package/node_modules/@types/node/tty.d.ts +206 -0
  117. package/package/node_modules/@types/node/url.d.ts +897 -0
  118. package/package/node_modules/@types/node/util.d.ts +1850 -0
  119. package/package/node_modules/@types/node/v8.d.ts +396 -0
  120. package/package/node_modules/@types/node/vm.d.ts +509 -0
  121. package/package/node_modules/@types/node/wasi.d.ts +158 -0
  122. package/package/node_modules/@types/node/worker_threads.d.ts +689 -0
  123. package/package/node_modules/@types/node/zlib.d.ts +517 -0
  124. package/package/node_modules/@types/nodemailer/LICENSE +21 -0
  125. package/package/node_modules/@types/nodemailer/README.md +16 -0
  126. package/package/node_modules/@types/nodemailer/index.d.ts +83 -0
  127. package/package/node_modules/@types/nodemailer/lib/addressparser/index.d.ts +31 -0
  128. package/package/node_modules/@types/nodemailer/lib/base64/index.d.ts +22 -0
  129. package/package/node_modules/@types/nodemailer/lib/dkim/index.d.ts +45 -0
  130. package/package/node_modules/@types/nodemailer/lib/dkim/message-parser.d.ts +75 -0
  131. package/package/node_modules/@types/nodemailer/lib/dkim/relaxed-body.d.ts +75 -0
  132. package/package/node_modules/@types/nodemailer/lib/dkim/sign.d.ts +11 -0
  133. package/package/node_modules/@types/nodemailer/lib/fetch/cookies.d.ts +54 -0
  134. package/package/node_modules/@types/nodemailer/lib/fetch/index.d.ts +38 -0
  135. package/package/node_modules/@types/nodemailer/lib/json-transport/index.d.ts +50 -0
  136. package/package/node_modules/@types/nodemailer/lib/mail-composer/index.d.ts +25 -0
  137. package/package/node_modules/@types/nodemailer/lib/mailer/index.d.ts +230 -0
  138. package/package/node_modules/@types/nodemailer/lib/mailer/mail-message.d.ts +28 -0
  139. package/package/node_modules/@types/nodemailer/lib/mime-funcs/index.d.ts +87 -0
  140. package/package/node_modules/@types/nodemailer/lib/mime-funcs/mime-types.d.ts +2 -0
  141. package/package/node_modules/@types/nodemailer/lib/mime-node/index.d.ts +137 -0
  142. package/package/node_modules/@types/nodemailer/lib/mime-node/last-newline.d.ts +9 -0
  143. package/package/node_modules/@types/nodemailer/lib/qp/index.d.ts +23 -0
  144. package/package/node_modules/@types/nodemailer/lib/sendmail-transport/index.d.ts +53 -0
  145. package/package/node_modules/@types/nodemailer/lib/sendmail-transport/le-unix.d.ts +7 -0
  146. package/package/node_modules/@types/nodemailer/lib/sendmail-transport/le-windows.d.ts +7 -0
  147. package/package/node_modules/@types/nodemailer/lib/ses-transport/index.d.ts +136 -0
  148. package/package/node_modules/@types/nodemailer/lib/shared/index.d.ts +51 -0
  149. package/package/node_modules/@types/nodemailer/lib/smtp-connection/data-stream.d.ts +11 -0
  150. package/package/node_modules/@types/nodemailer/lib/smtp-connection/http-proxy-client.d.ts +11 -0
  151. package/package/node_modules/@types/nodemailer/lib/smtp-connection/index.d.ts +254 -0
  152. package/package/node_modules/@types/nodemailer/lib/smtp-pool/index.d.ts +90 -0
  153. package/package/node_modules/@types/nodemailer/lib/smtp-pool/pool-resource.d.ts +66 -0
  154. package/package/node_modules/@types/nodemailer/lib/smtp-transport/index.d.ts +115 -0
  155. package/package/node_modules/@types/nodemailer/lib/stream-transport/index.d.ts +56 -0
  156. package/package/node_modules/@types/nodemailer/lib/well-known/index.d.ts +6 -0
  157. package/package/node_modules/@types/nodemailer/lib/xoauth2/index.d.ts +110 -0
  158. package/package/node_modules/@types/nodemailer/package.json +37 -0
  159. package/package/node_modules/nodemailer/.gitattributes +6 -0
  160. package/package/node_modules/nodemailer/.prettierrc.js +8 -0
  161. package/package/node_modules/nodemailer/CHANGELOG.md +715 -0
  162. package/package/node_modules/nodemailer/CODE_OF_CONDUCT.md +76 -0
  163. package/package/node_modules/nodemailer/CONTRIBUTING.md +67 -0
  164. package/package/node_modules/nodemailer/LICENSE +16 -0
  165. package/package/node_modules/nodemailer/README.md +93 -0
  166. package/package/node_modules/nodemailer/SECURITY.txt +22 -0
  167. package/package/node_modules/nodemailer/lib/addressparser/index.js +313 -0
  168. package/package/node_modules/nodemailer/lib/base64/index.js +142 -0
  169. package/package/node_modules/nodemailer/lib/dkim/index.js +251 -0
  170. package/package/node_modules/nodemailer/lib/dkim/message-parser.js +155 -0
  171. package/package/node_modules/nodemailer/lib/dkim/relaxed-body.js +154 -0
  172. package/package/node_modules/nodemailer/lib/dkim/sign.js +117 -0
  173. package/package/node_modules/nodemailer/lib/fetch/cookies.js +281 -0
  174. package/package/node_modules/nodemailer/lib/fetch/index.js +269 -0
  175. package/package/node_modules/nodemailer/lib/json-transport/index.js +82 -0
  176. package/package/node_modules/nodemailer/lib/mail-composer/index.js +558 -0
  177. package/package/node_modules/nodemailer/lib/mailer/index.js +427 -0
  178. package/package/node_modules/nodemailer/lib/mailer/mail-message.js +315 -0
  179. package/package/node_modules/nodemailer/lib/mime-funcs/index.js +619 -0
  180. package/package/node_modules/nodemailer/lib/mime-funcs/mime-types.js +2102 -0
  181. package/package/node_modules/nodemailer/lib/mime-node/index.js +1290 -0
  182. package/package/node_modules/nodemailer/lib/mime-node/last-newline.js +33 -0
  183. package/package/node_modules/nodemailer/lib/mime-node/le-unix.js +43 -0
  184. package/package/node_modules/nodemailer/lib/mime-node/le-windows.js +52 -0
  185. package/package/node_modules/nodemailer/lib/nodemailer.js +143 -0
  186. package/package/node_modules/nodemailer/lib/qp/index.js +219 -0
  187. package/package/node_modules/nodemailer/lib/sendmail-transport/index.js +210 -0
  188. package/package/node_modules/nodemailer/lib/ses-transport/index.js +349 -0
  189. package/package/node_modules/nodemailer/lib/shared/index.js +639 -0
  190. package/package/node_modules/nodemailer/lib/smtp-connection/data-stream.js +108 -0
  191. package/package/node_modules/nodemailer/lib/smtp-connection/http-proxy-client.js +143 -0
  192. package/package/node_modules/nodemailer/lib/smtp-connection/index.js +1786 -0
  193. package/package/node_modules/nodemailer/lib/smtp-pool/index.js +648 -0
  194. package/package/node_modules/nodemailer/lib/smtp-pool/pool-resource.js +253 -0
  195. package/package/node_modules/nodemailer/lib/smtp-transport/index.js +416 -0
  196. package/package/node_modules/nodemailer/lib/stream-transport/index.js +135 -0
  197. package/package/node_modules/nodemailer/lib/well-known/index.js +47 -0
  198. package/package/node_modules/nodemailer/lib/well-known/services.json +286 -0
  199. package/package/node_modules/nodemailer/lib/xoauth2/index.js +376 -0
  200. package/package/node_modules/nodemailer/package.json +46 -0
  201. package/package/node_modules/nodemailer/postinstall.js +101 -0
  202. package/package/package-lock.json +60 -0
  203. package/package/package.json +6 -0
  204. package/package.json +19 -0
@@ -0,0 +1,45 @@
1
+ /// <reference types="node" />
2
+
3
+ import { PassThrough, Readable } from 'stream';
4
+
5
+ declare namespace DKIM {
6
+ interface OptionalOptions {
7
+ /** optional location for cached messages. If not set then caching is not used. */
8
+ cacheDir?: string | false | undefined;
9
+ /** optional size in bytes, if message is larger than this treshold it gets cached to disk (assuming cacheDir is set and writable). Defaults to 131072 (128 kB). */
10
+ cacheTreshold?: number | undefined;
11
+ /** optional algorithm for the body hash, defaults to ‘sha256’ */
12
+ hashAlgo?: string | undefined;
13
+ /** an optional colon separated list of header keys to sign (eg. message-id:date:from:to...') */
14
+ headerFieldNames?: string | undefined;
15
+ /** optional colon separated list of header keys not to sign. This is useful if you want to sign all the relevant keys but your provider changes some values, ie Message-ID and Date. In this case you should use 'message-id:date' to prevent signing these values. */
16
+ skipFields?: string | undefined;
17
+ }
18
+
19
+ interface SingleKeyOptions extends OptionalOptions {
20
+ /** is the domain name to use in the signature */
21
+ domainName: string;
22
+ /** is the DKIM key selector */
23
+ keySelector: string;
24
+ /** is the private key for the selector in PEM format */
25
+ privateKey: string | { key: string; passphrase: string };
26
+ }
27
+
28
+ interface MultipleKeysOptions extends OptionalOptions {
29
+ /** is an optional array of key objects (domainName, keySelector, privateKey) if you want to add more than one signature to the message. If this value is set then the default key values are ignored */
30
+ keys: SingleKeyOptions[];
31
+ }
32
+
33
+ type Options = SingleKeyOptions | MultipleKeysOptions;
34
+ }
35
+
36
+ declare class DKIM {
37
+ options: DKIM.Options;
38
+ keys: DKIM.SingleKeyOptions[];
39
+
40
+ constructor(options?: DKIM.Options);
41
+
42
+ sign(input: string | Buffer | Readable, extraOptions?: DKIM.Options): PassThrough;
43
+ }
44
+
45
+ export = DKIM;
@@ -0,0 +1,75 @@
1
+ /// <reference types="node" />
2
+
3
+ import { Transform } from 'stream';
4
+
5
+ declare namespace MessageParser {
6
+ interface Header {
7
+ key: string;
8
+ line: string;
9
+ }
10
+ }
11
+
12
+ /**
13
+ * MessageParser instance is a transform stream that separates message headers
14
+ * from the rest of the body. Headers are emitted with the 'headers' event. Message
15
+ * body is passed on as the resulting stream.
16
+ */
17
+ declare class MessageParser extends Transform {
18
+ addListener(event: 'headers', listener: (headers: MessageParser.Header[]) => void): this;
19
+ addListener(event: 'close', listener: () => void): this;
20
+ addListener(event: 'data', listener: (chunk: any) => void): this;
21
+ addListener(event: 'end', listener: () => void): this;
22
+ addListener(event: 'readable', listener: () => void): this;
23
+ addListener(event: 'error', listener: (err: Error) => void): this;
24
+ addListener(event: string | symbol, listener: (...args: any[]) => void): this;
25
+
26
+ emit(event: 'headers', headers: MessageParser.Header[]): boolean;
27
+ emit(event: 'close'): boolean;
28
+ emit(event: 'data', chunk: any): boolean;
29
+ emit(event: 'end'): boolean;
30
+ emit(event: 'readable'): boolean;
31
+ emit(event: 'error', err: Error): boolean;
32
+ emit(event: string | symbol, ...args: any[]): boolean;
33
+
34
+ on(event: 'headers', listener: (headers: MessageParser.Header[]) => void): this;
35
+ on(event: 'close', listener: () => void): this;
36
+ on(event: 'data', listener: (chunk: any) => void): this;
37
+ on(event: 'end', listener: () => void): this;
38
+ on(event: 'readable', listener: () => void): this;
39
+ on(event: 'error', listener: (err: Error) => void): this;
40
+ on(event: string | symbol, listener: (...args: any[]) => void): this;
41
+
42
+ once(event: 'headers', listener: (headers: MessageParser.Header[]) => void): this;
43
+ once(event: 'close', listener: () => void): this;
44
+ once(event: 'data', listener: (chunk: any) => void): this;
45
+ once(event: 'end', listener: () => void): this;
46
+ once(event: 'readable', listener: () => void): this;
47
+ once(event: 'error', listener: (err: Error) => void): this;
48
+ once(event: string | symbol, listener: (...args: any[]) => void): this;
49
+
50
+ prependListener(event: 'headers', listener: (headers: MessageParser.Header[]) => void): this;
51
+ prependListener(event: 'close', listener: () => void): this;
52
+ prependListener(event: 'data', listener: (chunk: any) => void): this;
53
+ prependListener(event: 'end', listener: () => void): this;
54
+ prependListener(event: 'readable', listener: () => void): this;
55
+ prependListener(event: 'error', listener: (err: Error) => void): this;
56
+ prependListener(event: string | symbol, listener: (...args: any[]) => void): this;
57
+
58
+ prependOnceListener(event: 'headers', listener: (headers: MessageParser.Header[]) => void): this;
59
+ prependOnceListener(event: 'close', listener: () => void): this;
60
+ prependOnceListener(event: 'data', listener: (chunk: any) => void): this;
61
+ prependOnceListener(event: 'end', listener: () => void): this;
62
+ prependOnceListener(event: 'readable', listener: () => void): this;
63
+ prependOnceListener(event: 'error', listener: (err: Error) => void): this;
64
+ prependOnceListener(event: string | symbol, listener: (...args: any[]) => void): this;
65
+
66
+ removeListener(event: 'headers', listener: (headers: MessageParser.Header[]) => void): this;
67
+ removeListener(event: 'close', listener: () => void): this;
68
+ removeListener(event: 'data', listener: (chunk: any) => void): this;
69
+ removeListener(event: 'end', listener: () => void): this;
70
+ removeListener(event: 'readable', listener: () => void): this;
71
+ removeListener(event: 'error', listener: (err: Error) => void): this;
72
+ removeListener(event: string | symbol, listener: (...args: any[]) => void): this;
73
+ }
74
+
75
+ export = MessageParser;
@@ -0,0 +1,75 @@
1
+ /// <reference types="node" />
2
+
3
+ import { Transform, TransformOptions } from 'stream';
4
+
5
+ declare namespace RelaxedBody {
6
+ interface Options extends TransformOptions {
7
+ hashAlgo?: string;
8
+ debug?: boolean;
9
+ }
10
+ }
11
+
12
+ /**
13
+ * Streams through a message body and calculates relaxed body hash
14
+ */
15
+ declare class RelaxedBody extends Transform {
16
+ constructor(options?: RelaxedBody.Options);
17
+
18
+ addListener(event: 'hash', listener: (digest: Buffer, debugBody: Buffer | false) => void): this;
19
+ addListener(event: 'close', listener: () => void): this;
20
+ addListener(event: 'data', listener: (chunk: any) => void): this;
21
+ addListener(event: 'end', listener: () => void): this;
22
+ addListener(event: 'readable', listener: () => void): this;
23
+ addListener(event: 'error', listener: (err: Error) => void): this;
24
+ addListener(event: string | symbol, listener: (...args: any[]) => void): this;
25
+
26
+ emit(event: 'hash', digest: Buffer, debugBody: Buffer | false): boolean;
27
+ emit(event: 'close'): boolean;
28
+ emit(event: 'data', chunk: any): boolean;
29
+ emit(event: 'end'): boolean;
30
+ emit(event: 'readable'): boolean;
31
+ emit(event: 'error', err: Error): boolean;
32
+ emit(event: string | symbol, ...args: any[]): boolean;
33
+
34
+ on(event: 'hash', listener: (digest: Buffer, debugBody: Buffer | false) => void): this;
35
+ on(event: 'close', listener: () => void): this;
36
+ on(event: 'data', listener: (chunk: any) => void): this;
37
+ on(event: 'end', listener: () => void): this;
38
+ on(event: 'readable', listener: () => void): this;
39
+ on(event: 'error', listener: (err: Error) => void): this;
40
+ on(event: string | symbol, listener: (...args: any[]) => void): this;
41
+
42
+ once(event: 'hash', listener: (digest: Buffer, debugBody: Buffer | false) => void): this;
43
+ once(event: 'close', listener: () => void): this;
44
+ once(event: 'data', listener: (chunk: any) => void): this;
45
+ once(event: 'end', listener: () => void): this;
46
+ once(event: 'readable', listener: () => void): this;
47
+ once(event: 'error', listener: (err: Error) => void): this;
48
+ once(event: string | symbol, listener: (...args: any[]) => void): this;
49
+
50
+ prependListener(event: 'hash', listener: (digest: Buffer, debugBody: Buffer | false) => void): this;
51
+ prependListener(event: 'close', listener: () => void): this;
52
+ prependListener(event: 'data', listener: (chunk: any) => void): this;
53
+ prependListener(event: 'end', listener: () => void): this;
54
+ prependListener(event: 'readable', listener: () => void): this;
55
+ prependListener(event: 'error', listener: (err: Error) => void): this;
56
+ prependListener(event: string | symbol, listener: (...args: any[]) => void): this;
57
+
58
+ prependOnceListener(event: 'hash', listener: (digest: Buffer, debugBody: Buffer | false) => void): this;
59
+ prependOnceListener(event: 'close', listener: () => void): this;
60
+ prependOnceListener(event: 'data', listener: (chunk: any) => void): this;
61
+ prependOnceListener(event: 'end', listener: () => void): this;
62
+ prependOnceListener(event: 'readable', listener: () => void): this;
63
+ prependOnceListener(event: 'error', listener: (err: Error) => void): this;
64
+ prependOnceListener(event: string | symbol, listener: (...args: any[]) => void): this;
65
+
66
+ removeListener(event: 'hash', listener: (digest: Buffer, debugBody: Buffer | false) => void): this;
67
+ removeListener(event: 'close', listener: () => void): this;
68
+ removeListener(event: 'data', listener: (chunk: any) => void): this;
69
+ removeListener(event: 'end', listener: () => void): this;
70
+ removeListener(event: 'readable', listener: () => void): this;
71
+ removeListener(event: 'error', listener: (err: Error) => void): this;
72
+ removeListener(event: string | symbol, listener: (...args: any[]) => void): this;
73
+ }
74
+
75
+ export = RelaxedBody;
@@ -0,0 +1,11 @@
1
+ import DKIM = require('.');
2
+ import MessageParser = require('./message-parser');
3
+
4
+ /** Returns DKIM signature header line */
5
+ declare function relaxedHeaders(headers: MessageParser.Header[], hashAlgo: string, bodyHash: string, options?: DKIM.SingleKeyOptions): string;
6
+
7
+ declare namespace relaxedHeaders {
8
+ function relaxedHeaders(headers: MessageParser.Header[], hashAlgo: string, bodyHash: string, options?: DKIM.SingleKeyOptions): string;
9
+ }
10
+
11
+ export = relaxedHeaders;
@@ -0,0 +1,54 @@
1
+ type s = number;
2
+
3
+ declare namespace Cookies {
4
+ interface Cookie {
5
+ name: string;
6
+ value?: string | undefined;
7
+ expires?: Date | undefined;
8
+ path?: string | undefined;
9
+ domain?: string | undefined;
10
+ secure?: boolean | undefined;
11
+ httponly?: boolean | undefined;
12
+ }
13
+
14
+ interface Options {
15
+ sessionTimeout?: s | undefined;
16
+ }
17
+ }
18
+
19
+ /** Creates a biskviit cookie jar for managing cookie values in memory */
20
+ declare class Cookies {
21
+ options: Cookies.Options;
22
+ cookies: Cookies.Cookie[];
23
+
24
+ constructor(options?: Cookies.Options);
25
+
26
+ /** Stores a cookie string to the cookie storage */
27
+ set(cookieStr: string, url: string): boolean;
28
+
29
+ /** Returns cookie string for the 'Cookie:' header. */
30
+ get(url: string): string;
31
+
32
+ /** Lists all valied cookie objects for the specified URL */
33
+ list(url: string): Cookies.Cookie[];
34
+
35
+ /** Parses cookie string from the 'Set-Cookie:' header */
36
+ parse(cookieStr: string): Cookies.Cookie;
37
+
38
+ /** Checks if a cookie object is valid for a specified URL */
39
+ match(cookie: Cookies.Cookie, url: string): boolean;
40
+
41
+ /** Adds (or updates/removes if needed) a cookie object to the cookie storage */
42
+ add(cookie: Cookies.Cookie): boolean;
43
+
44
+ /** Checks if two cookie objects are the same */
45
+ compare(a: Cookies.Cookie, b: Cookies.Cookie): boolean;
46
+
47
+ /** Checks if a cookie is expired */
48
+ isExpired(cookie: Cookies.Cookie): boolean;
49
+
50
+ /** Returns normalized cookie path for an URL path argument */
51
+ getPath(pathname: string): string;
52
+ }
53
+
54
+ export = Cookies;
@@ -0,0 +1,38 @@
1
+ /// <reference types="node" />
2
+
3
+ type ms = number;
4
+
5
+ import _Cookies = require('./cookies');
6
+
7
+ import * as http from 'http';
8
+ import { Writable } from 'stream';
9
+ import * as tls from 'tls';
10
+
11
+ declare namespace fetch {
12
+ type Cookies = _Cookies;
13
+
14
+ interface WritableResponse extends Writable {
15
+ statusCode: number;
16
+ headers: http.IncomingHttpHeaders;
17
+ }
18
+
19
+ interface Options {
20
+ fetchRes?: Writable | undefined;
21
+ cookies?: Cookies | undefined;
22
+ cookie?: string | undefined;
23
+ redirects?: number | undefined;
24
+ maxRedirects?: number | undefined;
25
+ method?: string | undefined;
26
+ headers?: { [key: string]: string } | undefined;
27
+ userAgent?: string | undefined;
28
+ body?: Buffer | string | { [key: string]: string } | undefined;
29
+ contentType?: string | false | undefined;
30
+ tls?: tls.TlsOptions | undefined;
31
+ timeout?: ms | undefined;
32
+ allowErrorResponse?: boolean | undefined;
33
+ }
34
+ }
35
+
36
+ declare function fetch(url: string, options?: fetch.Options): fetch.WritableResponse;
37
+
38
+ export = fetch;
@@ -0,0 +1,50 @@
1
+ /// <reference types="node" />
2
+
3
+ import { EventEmitter } from 'events';
4
+
5
+ import { Transport, TransportOptions } from '../..';
6
+
7
+ import * as shared from '../shared';
8
+
9
+ import Mail = require('../mailer');
10
+ import MailMessage = require('../mailer/mail-message');
11
+ import MimeNode = require('../mime-node');
12
+
13
+ declare namespace JSONTransport {
14
+ type MailOptions = Mail.Options;
15
+
16
+ interface Options extends MailOptions, TransportOptions {
17
+ jsonTransport: true;
18
+ skipEncoding?: boolean | undefined;
19
+ }
20
+
21
+ interface SentMessageInfo {
22
+ /** an envelope object {from:‘address’, to:[‘address’]} */
23
+ envelope: MimeNode.Envelope;
24
+ /** the Message-ID header value */
25
+ messageId: string;
26
+ /** JSON string */
27
+ message: string;
28
+ accepted: Array<string | Mail.Address>;
29
+ rejected: Array<string | Mail.Address>;
30
+ pending: Array<string | Mail.Address>;
31
+ response: string;
32
+ }
33
+ }
34
+
35
+ declare class JSONTransport implements Transport<JSONTransport.SentMessageInfo> {
36
+ options: JSONTransport.Options;
37
+
38
+ logger: shared.Logger;
39
+ mailer: Mail<JSONTransport.SentMessageInfo>;
40
+
41
+ name: string;
42
+ version: string;
43
+
44
+ constructor(options: JSONTransport.Options);
45
+
46
+ /** Compiles a mailcomposer message and forwards it to handler that sends it */
47
+ send(mail: MailMessage<JSONTransport.SentMessageInfo>, callback: (err: Error | null, info: JSONTransport.SentMessageInfo) => void): void;
48
+ }
49
+
50
+ export = JSONTransport;
@@ -0,0 +1,25 @@
1
+ /// <reference types="node" />
2
+
3
+ import { URL } from 'url';
4
+
5
+ import Mail = require('../mailer');
6
+ import MimeNode = require('../mime-node');
7
+
8
+ /** Creates the object for composing a MimeNode instance out from the mail options */
9
+ declare class MailComposer {
10
+ mail: Mail.Options;
11
+ message: MimeNode | false;
12
+
13
+ constructor(mail: Mail.Options);
14
+
15
+ /** Builds MimeNode instance */
16
+ compile(): MimeNode;
17
+
18
+ /** List all attachments. Resulting attachment objects can be used as input for MimeNode nodes */
19
+ getAttachments(findRelated: boolean): Mail.Attachment[];
20
+
21
+ /** List alternatives. Resulting objects can be used as input for MimeNode nodes */
22
+ getAlternatives(): Mail.Attachment[];
23
+ }
24
+
25
+ export = MailComposer;
@@ -0,0 +1,230 @@
1
+ /// <reference types="node" />
2
+
3
+ import { EventEmitter } from 'events';
4
+ import { Socket } from 'net';
5
+ import { Readable } from 'stream';
6
+ import { Url } from 'url';
7
+
8
+ import { Transport, TransportOptions } from '../..';
9
+ import * as shared from '../shared';
10
+
11
+ import DKIM = require('../dkim');
12
+ import MailMessage = require('./mail-message');
13
+ import MimeNode = require('../mime-node');
14
+ import SMTPConnection = require('../smtp-connection');
15
+ import XOAuth2 = require('../xoauth2');
16
+
17
+ declare namespace Mail {
18
+ type Headers = { [key: string]: string | string[] | { prepared: boolean, value: string } } | Array<{ key: string, value: string }>;
19
+
20
+ type ListHeader = string | { url: string, comment: string };
21
+
22
+ interface ListHeaders {
23
+ [key: string]: ListHeader | ListHeader[] | ListHeader[][];
24
+ }
25
+
26
+ type TextEncoding = 'quoted-printable' | 'base64';
27
+
28
+ interface Address {
29
+ name: string;
30
+ address: string;
31
+ }
32
+
33
+ interface AttachmentLike {
34
+ /** String, Buffer or a Stream contents for the attachmentent */
35
+ content?: string | Buffer | Readable | undefined;
36
+ /** path to a file or an URL (data uris are allowed as well) if you want to stream the file instead of including it (better for larger attachments) */
37
+ path?: string | Url | undefined;
38
+ }
39
+
40
+ interface Attachment extends AttachmentLike {
41
+ /** filename to be reported as the name of the attached file, use of unicode is allowed. If you do not want to use a filename, set this value as false, otherwise a filename is generated automatically */
42
+ filename?: string | false | undefined;
43
+ /** optional content id for using inline images in HTML message source. Using cid sets the default contentDisposition to 'inline' and moves the attachment into a multipart/related mime node, so use it only if you actually want to use this attachment as an embedded image */
44
+ cid?: string | undefined;
45
+ /** If set and content is string, then encodes the content to a Buffer using the specified encoding. Example values: base64, hex, binary etc. Useful if you want to use binary attachments in a JSON formatted e-mail object */
46
+ encoding?: string | undefined;
47
+ /** optional content type for the attachment, if not set will be derived from the filename property */
48
+ contentType?: string | undefined;
49
+ /** optional transfer encoding for the attachment, if not set it will be derived from the contentType property. Example values: quoted-printable, base64. If it is unset then base64 encoding is used for the attachment. If it is set to false then previous default applies (base64 for most, 7bit for text). */
50
+ contentTransferEncoding?: '7bit' | 'base64' | 'quoted-printable' | false | undefined;
51
+ /** optional content disposition type for the attachment, defaults to ‘attachment’ */
52
+ contentDisposition?: 'attachment' | 'inline' | undefined;
53
+ /** is an object of additional headers */
54
+ headers?: Headers | undefined;
55
+ /** an optional value that overrides entire node content in the mime message. If used then all other options set for this node are ignored. */
56
+ raw?: string | Buffer | Readable | AttachmentLike | undefined;
57
+ }
58
+
59
+ interface AmpAttachment extends AttachmentLike {
60
+ /** is an alternative for content to load the AMP4EMAIL data from an URL */
61
+ href?: string | undefined;
62
+ /** defines optional content encoding, eg. ‘base64’ or ‘hex’. This only applies if the content is a string. By default an unicode string is assumed. */
63
+ encoding?: string | undefined;
64
+ /** optional content type for the attachment, if not set will be derived from the filename property */
65
+ contentType?: string | undefined;
66
+ /** an optional value that overrides entire node content in the mime message. If used then all other options set for this node are ignored. */
67
+ raw?: string | Buffer | Readable | AttachmentLike | undefined;
68
+ }
69
+
70
+ interface IcalAttachment extends AttachmentLike {
71
+ /** optional method, case insensitive, defaults to ‘publish’. Other possible values would be ‘request’, ‘reply’, ‘cancel’ or any other valid calendar method listed in RFC5546. This should match the METHOD: value in calendar event file. */
72
+ method?: string | undefined;
73
+ /** optional filename, defaults to ‘invite.ics’ */
74
+ filename?: string | false | undefined;
75
+ /** is an alternative for content to load the calendar data from an URL */
76
+ href?: string | undefined;
77
+ /** defines optional content encoding, eg. ‘base64’ or ‘hex’. This only applies if the content is a string. By default an unicode string is assumed. */
78
+ encoding?: string | undefined;
79
+ }
80
+
81
+ interface Connection {
82
+ connection: Socket;
83
+ }
84
+
85
+ interface Envelope {
86
+ /** the first address gets used as MAIL FROM address in SMTP */
87
+ from?: string | undefined;
88
+ /** addresses from this value get added to RCPT TO list */
89
+ to?: string | undefined;
90
+ /** addresses from this value get added to RCPT TO list */
91
+ cc?: string | undefined;
92
+ /** addresses from this value get added to RCPT TO list */
93
+ bcc?: string | undefined;
94
+ }
95
+
96
+ interface Options {
97
+ /** The e-mail address of the sender. All e-mail addresses can be plain 'sender@server.com' or formatted 'Sender Name <sender@server.com>' */
98
+ from?: string | Address | undefined;
99
+ /** An e-mail address that will appear on the Sender: field */
100
+ sender?: string | Address | undefined;
101
+ /** Comma separated list or an array of recipients e-mail addresses that will appear on the To: field */
102
+ to?: string | Address | Array<string | Address> | undefined;
103
+ /** Comma separated list or an array of recipients e-mail addresses that will appear on the Cc: field */
104
+ cc?: string | Address | Array<string | Address> | undefined;
105
+ /** Comma separated list or an array of recipients e-mail addresses that will appear on the Bcc: field */
106
+ bcc?: string | Address | Array<string | Address> | undefined;
107
+ /** Comma separated list or an array of e-mail addresses that will appear on the Reply-To: field */
108
+ replyTo?: string | Address | Array<string | Address> | undefined;
109
+ /** The message-id this message is replying */
110
+ inReplyTo?: string | Address | undefined;
111
+ /** Message-id list (an array or space separated string) */
112
+ references?: string | string[] | undefined;
113
+ /** The subject of the e-mail */
114
+ subject?: string | undefined;
115
+ /** The plaintext version of the message */
116
+ text?: string | Buffer | Readable | AttachmentLike | undefined;
117
+ /** The HTML version of the message */
118
+ html?: string | Buffer | Readable | AttachmentLike | undefined;
119
+ /** Apple Watch specific HTML version of the message, same usage as with text and html */
120
+ watchHtml?: string | Buffer | Readable | AttachmentLike | undefined;
121
+ /** AMP4EMAIL specific HTML version of the message, same usage as with text and html. Make sure it is a full and valid AMP4EMAIL document, otherwise the displaying email client falls back to html and ignores the amp part */
122
+ amp?: string | Buffer | Readable | AmpAttachment | undefined;
123
+ /** iCalendar event, same usage as with text and html. Event method attribute defaults to ‘PUBLISH’ or define it yourself: {method: 'REQUEST', content: iCalString}. This value is added as an additional alternative to html or text. Only utf-8 content is allowed */
124
+ icalEvent?: string | Buffer | Readable | IcalAttachment | undefined;
125
+ /** An object or array of additional header fields */
126
+ headers?: Headers | undefined;
127
+ /** An object where key names are converted into list headers. List key help becomes List-Help header etc. */
128
+ list?: ListHeaders | undefined;
129
+ /** An array of attachment objects */
130
+ attachments?: Attachment[] | undefined;
131
+ /** An array of alternative text contents (in addition to text and html parts) */
132
+ alternatives?: Attachment[] | undefined;
133
+ /** optional SMTP envelope, if auto generated envelope is not suitable */
134
+ envelope?: Envelope | MimeNode.Envelope | undefined;
135
+ /** optional Message-Id value, random value will be generated if not set */
136
+ messageId?: string | undefined;
137
+ /** optional Date value, current UTC string will be used if not set */
138
+ date?: Date | string | undefined;
139
+ /** optional transfer encoding for the textual parts */
140
+ encoding?: string | undefined;
141
+ /** if set then overwrites entire message output with this value. The value is not parsed, so you should still set address headers or the envelope value for the message to work */
142
+ raw?: string | Buffer | Readable | AttachmentLike | undefined;
143
+ /** set explicitly which encoding to use for text parts (quoted-printable or base64). If not set then encoding is detected from text content (mostly ascii means quoted-printable, otherwise base64) */
144
+ textEncoding?: TextEncoding | undefined;
145
+ /** if set to true then fails with an error when a node tries to load content from URL */
146
+ disableUrlAccess?: boolean | undefined;
147
+ /** if set to true then fails with an error when a node tries to load content from a file */
148
+ disableFileAccess?: boolean | undefined;
149
+ /** is an object with DKIM options */
150
+ dkim?: DKIM.Options | undefined;
151
+ /** method to normalize header keys for custom caseing */
152
+ normalizeHeaderKey?(key: string): string;
153
+ priority?: "high"|"normal"|"low" | undefined;
154
+ }
155
+
156
+ type PluginFunction<T = any> = (mail: MailMessage<T>, callback: (err?: Error | null) => void) => void;
157
+ }
158
+
159
+ /** Creates an object for exposing the Mail API */
160
+ declare class Mail<T = any> extends EventEmitter {
161
+ options: Mail.Options;
162
+ meta: Map<string, any>;
163
+ dkim: DKIM;
164
+ transporter: Transport<T>;
165
+ logger: shared.Logger;
166
+
167
+ /** Usage: typeof transporter.MailMessage */
168
+ MailMessage: MailMessage<T>;
169
+
170
+ constructor(transporter: Transport<T>, options?: TransportOptions, defaults?: TransportOptions);
171
+
172
+ /** Closes all connections in the pool. If there is a message being sent, the connection is closed later */
173
+ close(): void;
174
+
175
+ /** Returns true if there are free slots in the queue */
176
+ isIdle(): boolean;
177
+
178
+ /** Verifies SMTP configuration */
179
+ verify(callback: (err: Error | null, success: true) => void): void;
180
+ verify(): Promise<true>;
181
+
182
+ use(step: string, plugin: Mail.PluginFunction<T>): this;
183
+
184
+ /** Sends an email using the preselected transport object */
185
+ sendMail(mailOptions: Mail.Options, callback: (err: Error | null, info: T) => void): void;
186
+ sendMail(mailOptions: Mail.Options): Promise<T>;
187
+
188
+ getVersionString(): string;
189
+
190
+ /** Sets up proxy handler for a Nodemailer object */
191
+ setupProxy(proxyUrl: string): void;
192
+
193
+ set(key: 'oauth2_provision_cb', value: (user: string, renew: boolean, callback: (err: Error | null, accessToken?: string, expires?: number) => void) => void): Map<string, any>;
194
+ set(key: 'proxy_handler_http' | 'proxy_handler_https' | 'proxy_handler_socks' | 'proxy_handler_socks5' | 'proxy_handler_socks4' | 'proxy_handler_socks4a', value: (proxy: Url, options: TransportOptions, callback: (err: Error | null, socketOptions?: { connection: Socket }) => void) => void): Map<string, any>;
195
+ set(key: string, value: any): Map<string, any>;
196
+
197
+ get(key: 'oauth2_provision_cb'): (user: string, renew: boolean, callback: (err: Error | null, accessToken: string, expires: number) => void) => void;
198
+ get(key: 'proxy_handler_http' | 'proxy_handler_https' | 'proxy_handler_socks' | 'proxy_handler_socks5' | 'proxy_handler_socks4' | 'proxy_handler_socks4a'): (proxy: Url, options: TransportOptions, callback: (err: Error | null, socketOptions: { connection: Socket }) => void) => void;
199
+ get(key: string): any;
200
+
201
+ addListener(event: 'error', listener: (err: Error) => void): this;
202
+ addListener(event: 'idle', listener: () => void): this;
203
+ addListener(event: 'token', listener: (token: XOAuth2.Token) => void): this;
204
+
205
+ emit(event: 'error', error: Error): boolean;
206
+ emit(event: 'idle'): boolean;
207
+ emit(event: 'token', token: XOAuth2.Token): boolean;
208
+
209
+ on(event: 'error', listener: (err: Error) => void): this;
210
+ on(event: 'idle', listener: () => void): this;
211
+ on(event: 'token', listener: (token: XOAuth2.Token) => void): this;
212
+
213
+ once(event: 'error', listener: (err: Error) => void): this;
214
+ once(event: 'idle', listener: () => void): this;
215
+ once(event: 'token', listener: (token: XOAuth2.Token) => void): this;
216
+
217
+ prependListener(event: 'error', listener: (err: Error) => void): this;
218
+ prependListener(event: 'idle', listener: () => void): this;
219
+ prependListener(event: 'end', listener: (token: XOAuth2.Token) => void): this;
220
+
221
+ prependOnceListener(event: 'error', listener: (err: Error) => void): this;
222
+ prependOnceListener(event: 'idle', listener: () => void): this;
223
+ prependOnceListener(event: 'end', listener: (token: XOAuth2.Token) => void): this;
224
+
225
+ listeners(event: 'error'): Array<(err: Error) => void>;
226
+ listeners(event: 'idle'): Array<() => void>;
227
+ listeners(event: 'end'): Array<(token: XOAuth2.Token) => void>;
228
+ }
229
+
230
+ export = Mail;
@@ -0,0 +1,28 @@
1
+ /// <reference types="node" />
2
+
3
+ import { Readable } from 'stream';
4
+
5
+ import Mail = require('.');
6
+ import MimeNode = require('../mime-node');
7
+
8
+ declare class MailMessage<T = any> {
9
+ mailer: Mail<T>;
10
+ data: Mail.Options;
11
+ message: MimeNode;
12
+
13
+ constructor(mailer: Mail<T>, data: Mail.Options);
14
+
15
+ resolveContent(data: object | any[], key: string | number, callback: (err: Error | null, value?: any) => any): Promise<any>;
16
+
17
+ resolveAll(callback: (err?: Error | null, data?: Mail.Options) => void): void;
18
+
19
+ normalize(callback: (err?: Error | null, data?: Mail.Options) => void): void;
20
+
21
+ setMailerHeader(): void;
22
+
23
+ setPriorityHeaders(): void;
24
+
25
+ setListHeaders(): void;
26
+ }
27
+
28
+ export = MailMessage;