@nocobase/plugin-workflow-mailer 2.3.0-beta.13 → 2.3.0-beta.14

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.
Files changed (173) hide show
  1. package/dist/externalVersion.js +6 -6
  2. package/dist/node_modules/joi/package.json +1 -1
  3. package/dist/node_modules/nodemailer/dist/cjs/addressparser/index.d.ts +59 -0
  4. package/dist/node_modules/nodemailer/dist/cjs/addressparser/index.js +790 -0
  5. package/dist/node_modules/nodemailer/dist/cjs/base64/index.d.ts +36 -0
  6. package/dist/node_modules/nodemailer/dist/cjs/base64/index.js +119 -0
  7. package/dist/node_modules/nodemailer/dist/cjs/dkim/index.d.ts +52 -0
  8. package/dist/node_modules/nodemailer/dist/cjs/dkim/index.js +228 -0
  9. package/dist/node_modules/nodemailer/dist/cjs/dkim/message-parser.d.ts +48 -0
  10. package/dist/node_modules/nodemailer/dist/cjs/dkim/message-parser.js +180 -0
  11. package/dist/node_modules/nodemailer/dist/cjs/dkim/relaxed-body.d.ts +36 -0
  12. package/dist/node_modules/nodemailer/dist/cjs/dkim/relaxed-body.js +148 -0
  13. package/dist/node_modules/nodemailer/dist/cjs/dkim/sign.d.ts +52 -0
  14. package/dist/node_modules/nodemailer/dist/cjs/dkim/sign.js +165 -0
  15. package/dist/node_modules/nodemailer/dist/cjs/errors.d.ts +96 -0
  16. package/dist/node_modules/nodemailer/dist/cjs/errors.js +70 -0
  17. package/dist/node_modules/nodemailer/dist/cjs/fetch/cookies.d.ts +107 -0
  18. package/dist/node_modules/nodemailer/dist/cjs/fetch/cookies.js +282 -0
  19. package/dist/node_modules/nodemailer/dist/cjs/fetch/index.d.ts +65 -0
  20. package/dist/node_modules/nodemailer/dist/cjs/fetch/index.js +384 -0
  21. package/dist/node_modules/nodemailer/dist/cjs/json-transport/index.d.ts +64 -0
  22. package/dist/node_modules/nodemailer/dist/cjs/json-transport/index.js +99 -0
  23. package/dist/node_modules/nodemailer/dist/cjs/mail-composer/index.d.ts +174 -0
  24. package/dist/node_modules/nodemailer/dist/cjs/mail-composer/index.js +613 -0
  25. package/dist/node_modules/nodemailer/dist/cjs/mailer/index.d.ts +237 -0
  26. package/dist/node_modules/nodemailer/dist/cjs/mailer/index.js +415 -0
  27. package/dist/node_modules/nodemailer/dist/cjs/mailer/mail-message.d.ts +97 -0
  28. package/dist/node_modules/nodemailer/dist/cjs/mailer/mail-message.js +342 -0
  29. package/dist/node_modules/nodemailer/dist/cjs/mime-funcs/index.d.ts +161 -0
  30. package/dist/node_modules/nodemailer/dist/cjs/mime-funcs/index.js +787 -0
  31. package/dist/node_modules/nodemailer/dist/cjs/mime-funcs/mime-types.d.ts +2 -0
  32. package/dist/node_modules/nodemailer/dist/cjs/mime-funcs/mime-types.js +2103 -0
  33. package/dist/node_modules/nodemailer/dist/cjs/mime-node/index.d.ts +333 -0
  34. package/dist/node_modules/nodemailer/dist/cjs/mime-node/index.js +1493 -0
  35. package/dist/node_modules/nodemailer/dist/cjs/mime-node/last-newline.d.ts +5 -0
  36. package/dist/node_modules/nodemailer/dist/cjs/mime-node/last-newline.js +32 -0
  37. package/dist/node_modules/nodemailer/dist/cjs/mime-node/le-unix.d.ts +9 -0
  38. package/dist/node_modules/nodemailer/dist/cjs/mime-node/le-unix.js +40 -0
  39. package/dist/node_modules/nodemailer/dist/cjs/mime-node/le-windows.d.ts +10 -0
  40. package/dist/node_modules/nodemailer/dist/cjs/mime-node/le-windows.js +47 -0
  41. package/dist/node_modules/nodemailer/dist/cjs/nodemailer.d.ts +124 -0
  42. package/dist/node_modules/nodemailer/dist/cjs/nodemailer.js +1 -0
  43. package/dist/node_modules/nodemailer/dist/cjs/package-info.d.ts +3 -0
  44. package/dist/node_modules/nodemailer/dist/cjs/package-info.js +7 -0
  45. package/dist/node_modules/nodemailer/dist/cjs/package.json +3 -0
  46. package/dist/node_modules/nodemailer/dist/cjs/punycode/index.d.ts +73 -0
  47. package/dist/node_modules/nodemailer/{lib → dist/cjs}/punycode/index.js +62 -111
  48. package/dist/node_modules/nodemailer/dist/cjs/qp/index.d.ts +32 -0
  49. package/dist/node_modules/nodemailer/dist/cjs/qp/index.js +207 -0
  50. package/dist/node_modules/nodemailer/dist/cjs/sendmail-transport/index.d.ts +69 -0
  51. package/dist/node_modules/nodemailer/dist/cjs/sendmail-transport/index.js +210 -0
  52. package/dist/node_modules/nodemailer/dist/cjs/ses-transport/index.d.ts +112 -0
  53. package/dist/node_modules/nodemailer/dist/cjs/ses-transport/index.js +252 -0
  54. package/dist/node_modules/nodemailer/dist/cjs/shared/index.d.ts +260 -0
  55. package/dist/node_modules/nodemailer/dist/cjs/shared/index.js +680 -0
  56. package/dist/node_modules/nodemailer/dist/cjs/shared/objects.d.ts +23 -0
  57. package/dist/node_modules/nodemailer/dist/cjs/shared/objects.js +43 -0
  58. package/dist/node_modules/nodemailer/dist/cjs/shared/url.d.ts +21 -0
  59. package/dist/node_modules/nodemailer/dist/cjs/shared/url.js +255 -0
  60. package/dist/node_modules/nodemailer/dist/cjs/smtp-connection/data-stream.d.ts +15 -0
  61. package/dist/node_modules/nodemailer/dist/cjs/smtp-connection/data-stream.js +108 -0
  62. package/dist/node_modules/nodemailer/dist/cjs/smtp-connection/http-proxy-client.d.ts +47 -0
  63. package/dist/node_modules/nodemailer/dist/cjs/smtp-connection/http-proxy-client.js +189 -0
  64. package/dist/node_modules/nodemailer/dist/cjs/smtp-connection/index.d.ts +416 -0
  65. package/dist/node_modules/nodemailer/dist/cjs/smtp-connection/index.js +1837 -0
  66. package/dist/node_modules/nodemailer/dist/cjs/smtp-pool/index.d.ts +133 -0
  67. package/dist/node_modules/nodemailer/dist/cjs/smtp-pool/index.js +569 -0
  68. package/dist/node_modules/nodemailer/dist/cjs/smtp-pool/pool-resource.d.ts +62 -0
  69. package/dist/node_modules/nodemailer/dist/cjs/smtp-pool/pool-resource.js +257 -0
  70. package/dist/node_modules/nodemailer/dist/cjs/smtp-transport/index.d.ts +156 -0
  71. package/dist/node_modules/nodemailer/dist/cjs/smtp-transport/index.js +371 -0
  72. package/dist/node_modules/nodemailer/dist/cjs/stream-transport/index.d.ts +65 -0
  73. package/dist/node_modules/nodemailer/dist/cjs/stream-transport/index.js +146 -0
  74. package/dist/node_modules/nodemailer/dist/cjs/well-known/index.d.ts +35 -0
  75. package/dist/node_modules/nodemailer/dist/cjs/well-known/index.js +41 -0
  76. package/dist/node_modules/nodemailer/dist/cjs/well-known/services.d.ts +2 -0
  77. package/dist/node_modules/nodemailer/dist/cjs/well-known/services.js +674 -0
  78. package/dist/node_modules/nodemailer/dist/cjs/xoauth2/index.d.ts +201 -0
  79. package/dist/node_modules/nodemailer/dist/cjs/xoauth2/index.js +426 -0
  80. package/dist/node_modules/nodemailer/dist/esm/addressparser/index.d.ts +59 -0
  81. package/dist/node_modules/nodemailer/{lib → dist/esm}/addressparser/index.js +361 -131
  82. package/dist/node_modules/nodemailer/dist/esm/base64/index.d.ts +36 -0
  83. package/dist/node_modules/nodemailer/{lib → dist/esm}/base64/index.js +31 -56
  84. package/dist/node_modules/nodemailer/dist/esm/dkim/index.d.ts +52 -0
  85. package/dist/node_modules/nodemailer/{lib → dist/esm}/dkim/index.js +49 -78
  86. package/dist/node_modules/nodemailer/dist/esm/dkim/message-parser.d.ts +48 -0
  87. package/dist/node_modules/nodemailer/{lib → dist/esm}/dkim/message-parser.js +64 -42
  88. package/dist/node_modules/nodemailer/dist/esm/dkim/relaxed-body.d.ts +36 -0
  89. package/dist/node_modules/nodemailer/dist/esm/dkim/relaxed-body.js +141 -0
  90. package/dist/node_modules/nodemailer/dist/esm/dkim/sign.d.ts +52 -0
  91. package/dist/node_modules/nodemailer/{lib → dist/esm}/dkim/sign.js +50 -46
  92. package/dist/node_modules/nodemailer/dist/esm/errors.d.ts +96 -0
  93. package/dist/node_modules/nodemailer/{lib → dist/esm}/errors.js +26 -18
  94. package/dist/node_modules/nodemailer/dist/esm/fetch/cookies.d.ts +107 -0
  95. package/dist/node_modules/nodemailer/dist/esm/fetch/cookies.js +242 -0
  96. package/dist/node_modules/nodemailer/dist/esm/fetch/index.d.ts +65 -0
  97. package/dist/node_modules/nodemailer/{lib → dist/esm}/fetch/index.js +80 -147
  98. package/dist/node_modules/nodemailer/dist/esm/json-transport/index.d.ts +64 -0
  99. package/dist/node_modules/nodemailer/{lib → dist/esm}/json-transport/index.js +19 -39
  100. package/dist/node_modules/nodemailer/dist/esm/mail-composer/index.d.ts +174 -0
  101. package/dist/node_modules/nodemailer/{lib → dist/esm}/mail-composer/index.js +199 -265
  102. package/dist/node_modules/nodemailer/dist/esm/mailer/index.d.ts +237 -0
  103. package/dist/node_modules/nodemailer/{lib → dist/esm}/mailer/index.js +128 -234
  104. package/dist/node_modules/nodemailer/dist/esm/mailer/mail-message.d.ts +97 -0
  105. package/dist/node_modules/nodemailer/{lib → dist/esm}/mailer/mail-message.js +62 -114
  106. package/dist/node_modules/nodemailer/dist/esm/mime-funcs/index.d.ts +161 -0
  107. package/dist/node_modules/nodemailer/dist/esm/mime-funcs/index.js +738 -0
  108. package/dist/node_modules/nodemailer/dist/esm/mime-funcs/mime-types.d.ts +2 -0
  109. package/dist/node_modules/nodemailer/{lib → dist/esm}/mime-funcs/mime-types.js +29 -42
  110. package/dist/node_modules/nodemailer/dist/esm/mime-node/index.d.ts +333 -0
  111. package/dist/node_modules/nodemailer/{lib → dist/esm}/mime-node/index.js +259 -372
  112. package/dist/node_modules/nodemailer/dist/esm/mime-node/last-newline.d.ts +5 -0
  113. package/dist/node_modules/nodemailer/{lib → dist/esm}/mime-node/last-newline.js +4 -10
  114. package/dist/node_modules/nodemailer/dist/esm/mime-node/le-unix.d.ts +9 -0
  115. package/dist/node_modules/nodemailer/{lib → dist/esm}/mime-node/le-unix.js +6 -11
  116. package/dist/node_modules/nodemailer/dist/esm/mime-node/le-windows.d.ts +10 -0
  117. package/dist/node_modules/nodemailer/{lib → dist/esm}/mime-node/le-windows.js +6 -13
  118. package/dist/node_modules/nodemailer/dist/esm/nodemailer.d.ts +124 -0
  119. package/dist/node_modules/nodemailer/dist/esm/nodemailer.js +166 -0
  120. package/dist/node_modules/nodemailer/dist/esm/package-info.d.ts +3 -0
  121. package/dist/node_modules/nodemailer/dist/esm/package-info.js +4 -0
  122. package/dist/node_modules/nodemailer/dist/esm/package.json +3 -0
  123. package/dist/node_modules/nodemailer/dist/esm/punycode/index.d.ts +73 -0
  124. package/dist/node_modules/nodemailer/dist/esm/punycode/index.js +405 -0
  125. package/dist/node_modules/nodemailer/dist/esm/qp/index.d.ts +32 -0
  126. package/dist/node_modules/nodemailer/{lib → dist/esm}/qp/index.js +38 -67
  127. package/dist/node_modules/nodemailer/dist/esm/sendmail-transport/index.d.ts +69 -0
  128. package/dist/node_modules/nodemailer/{lib → dist/esm}/sendmail-transport/index.js +51 -101
  129. package/dist/node_modules/nodemailer/dist/esm/ses-transport/index.d.ts +112 -0
  130. package/dist/node_modules/nodemailer/dist/esm/ses-transport/index.js +212 -0
  131. package/dist/node_modules/nodemailer/dist/esm/shared/index.d.ts +260 -0
  132. package/dist/node_modules/nodemailer/{lib → dist/esm}/shared/index.js +156 -272
  133. package/dist/node_modules/nodemailer/dist/esm/shared/objects.d.ts +23 -0
  134. package/dist/node_modules/nodemailer/{lib → dist/esm}/shared/objects.js +13 -17
  135. package/dist/node_modules/nodemailer/dist/esm/shared/url.d.ts +21 -0
  136. package/dist/node_modules/nodemailer/dist/esm/shared/url.js +214 -0
  137. package/dist/node_modules/nodemailer/dist/esm/smtp-connection/data-stream.d.ts +15 -0
  138. package/dist/node_modules/nodemailer/dist/esm/smtp-connection/data-stream.js +103 -0
  139. package/dist/node_modules/nodemailer/dist/esm/smtp-connection/http-proxy-client.d.ts +47 -0
  140. package/dist/node_modules/nodemailer/{lib → dist/esm}/smtp-connection/http-proxy-client.js +49 -74
  141. package/dist/node_modules/nodemailer/dist/esm/smtp-connection/index.d.ts +416 -0
  142. package/dist/node_modules/nodemailer/{lib → dist/esm}/smtp-connection/index.js +574 -794
  143. package/dist/node_modules/nodemailer/dist/esm/smtp-pool/index.d.ts +133 -0
  144. package/dist/node_modules/nodemailer/{lib → dist/esm}/smtp-pool/index.js +172 -284
  145. package/dist/node_modules/nodemailer/dist/esm/smtp-pool/pool-resource.d.ts +62 -0
  146. package/dist/node_modules/nodemailer/{lib → dist/esm}/smtp-pool/pool-resource.js +57 -97
  147. package/dist/node_modules/nodemailer/dist/esm/smtp-transport/index.d.ts +156 -0
  148. package/dist/node_modules/nodemailer/{lib → dist/esm}/smtp-transport/index.js +81 -179
  149. package/dist/node_modules/nodemailer/dist/esm/stream-transport/index.d.ts +65 -0
  150. package/dist/node_modules/nodemailer/{lib → dist/esm}/stream-transport/index.js +36 -74
  151. package/dist/node_modules/nodemailer/dist/esm/well-known/index.d.ts +35 -0
  152. package/dist/node_modules/nodemailer/{lib → dist/esm}/well-known/index.js +5 -16
  153. package/dist/node_modules/nodemailer/dist/esm/well-known/services.d.ts +2 -0
  154. package/dist/node_modules/nodemailer/dist/esm/well-known/services.js +671 -0
  155. package/dist/node_modules/nodemailer/dist/esm/xoauth2/index.d.ts +201 -0
  156. package/dist/node_modules/nodemailer/{lib → dist/esm}/xoauth2/index.js +125 -187
  157. package/dist/node_modules/nodemailer/{lib → dist}/well-known/services.json +9 -2
  158. package/dist/node_modules/nodemailer/package.json +1 -1
  159. package/package.json +3 -3
  160. package/dist/node_modules/nodemailer/.gitattributes +0 -6
  161. package/dist/node_modules/nodemailer/.ncurc.js +0 -9
  162. package/dist/node_modules/nodemailer/.prettierignore +0 -8
  163. package/dist/node_modules/nodemailer/.prettierrc +0 -12
  164. package/dist/node_modules/nodemailer/.prettierrc.js +0 -10
  165. package/dist/node_modules/nodemailer/.release-please-config.json +0 -9
  166. package/dist/node_modules/nodemailer/eslint.config.js +0 -88
  167. package/dist/node_modules/nodemailer/lib/dkim/relaxed-body.js +0 -154
  168. package/dist/node_modules/nodemailer/lib/fetch/cookies.js +0 -276
  169. package/dist/node_modules/nodemailer/lib/mime-funcs/index.js +0 -671
  170. package/dist/node_modules/nodemailer/lib/nodemailer.js +0 -1
  171. package/dist/node_modules/nodemailer/lib/ses-transport/index.js +0 -266
  172. package/dist/node_modules/nodemailer/lib/shared/url.js +0 -151
  173. package/dist/node_modules/nodemailer/lib/smtp-connection/data-stream.js +0 -105
@@ -0,0 +1,282 @@
1
+ "use strict";
2
+ // module to handle cookies
3
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
4
+ if (k2 === undefined) k2 = k;
5
+ var desc = Object.getOwnPropertyDescriptor(m, k);
6
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
7
+ desc = { enumerable: true, get: function() { return m[k]; } };
8
+ }
9
+ Object.defineProperty(o, k2, desc);
10
+ }) : (function(o, m, k, k2) {
11
+ if (k2 === undefined) k2 = k;
12
+ o[k2] = m[k];
13
+ }));
14
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
15
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
16
+ }) : function(o, v) {
17
+ o["default"] = v;
18
+ });
19
+ var __importStar = (this && this.__importStar) || (function () {
20
+ var ownKeys = function(o) {
21
+ ownKeys = Object.getOwnPropertyNames || function (o) {
22
+ var ar = [];
23
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
24
+ return ar;
25
+ };
26
+ return ownKeys(o);
27
+ };
28
+ return function (mod) {
29
+ if (mod && mod.__esModule) return mod;
30
+ var result = {};
31
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
32
+ __setModuleDefault(result, mod);
33
+ return result;
34
+ };
35
+ })();
36
+ var __importDefault = (this && this.__importDefault) || function (mod) {
37
+ return (mod && mod.__esModule) ? mod : { "default": mod };
38
+ };
39
+ Object.defineProperty(exports, "__esModule", { value: true });
40
+ const node_net_1 = __importDefault(require("node:net"));
41
+ const urllib = __importStar(require("../shared/url.js"));
42
+ const SESSION_TIMEOUT = 1800; // 30 min
43
+ /**
44
+ * Creates a biskviit cookie jar for managing cookie values in memory
45
+ *
46
+ * @constructor
47
+ * @param [options] Optional options object
48
+ */
49
+ class Cookies {
50
+ constructor(options) {
51
+ this.options = options || {};
52
+ this.cookies = [];
53
+ }
54
+ /**
55
+ * Stores a cookie string to the cookie storage
56
+ *
57
+ * @param cookieStr Value from the 'Set-Cookie:' header
58
+ * @param url Current URL
59
+ */
60
+ set(cookieStr, url) {
61
+ const urlparts = urllib.parse(url || '');
62
+ const cookie = this.parse(cookieStr);
63
+ let domain;
64
+ if (cookie.domain) {
65
+ domain = cookie.domain.replace(/^\./, '');
66
+ // do not allow cross origin cookies. There is no public suffix list here, so a
67
+ // multi-label suffix like 'co.uk' can not be told apart from a registrable domain
68
+ if (
69
+ // can't be valid if the requested domain is shorter than current hostname
70
+ urlparts.hostname.length < domain.length ||
71
+ // a top level domain is not a valid scope, 'Domain=com' would otherwise be
72
+ // sent to every .com host. A trailing dot does not make 'com.' any better
73
+ domain.indexOf('.') < 0 ||
74
+ domain.endsWith('.') ||
75
+ // an IP address has no subdomains, so cookies set on it stay host-only
76
+ node_net_1.default.isIP(urlparts.hostname) ||
77
+ // prefix domains with dot to be sure that partial matches are not used
78
+ !('.' + urlparts.hostname).endsWith('.' + domain)) {
79
+ cookie.domain = urlparts.hostname;
80
+ }
81
+ }
82
+ else {
83
+ cookie.domain = urlparts.hostname;
84
+ }
85
+ if (!cookie.path) {
86
+ cookie.path = this.getPath(urlparts.pathname);
87
+ }
88
+ // if no expire date, then use sessionTimeout value
89
+ if (!cookie.expires) {
90
+ cookie.expires = new Date(Date.now() + (Number(this.options.sessionTimeout || SESSION_TIMEOUT) || SESSION_TIMEOUT) * 1000);
91
+ }
92
+ return this.add(cookie);
93
+ }
94
+ /**
95
+ * Returns cookie string for the 'Cookie:' header.
96
+ *
97
+ * @param url URL to check for
98
+ * @returns Cookie header or empty string if no matches were found
99
+ */
100
+ get(url) {
101
+ return this.list(url)
102
+ .map(cookie => cookie.name + '=' + cookie.value)
103
+ .join('; ');
104
+ }
105
+ /**
106
+ * Lists all valied cookie objects for the specified URL
107
+ *
108
+ * @param url URL to check for
109
+ * @returns An array of cookie objects
110
+ */
111
+ list(url) {
112
+ const result = [];
113
+ for (let i = this.cookies.length - 1; i >= 0; i--) {
114
+ const cookie = this.cookies[i];
115
+ if (this.isExpired(cookie)) {
116
+ this.cookies.splice(i, 1);
117
+ continue;
118
+ }
119
+ if (this.match(cookie, url)) {
120
+ result.unshift(cookie);
121
+ }
122
+ }
123
+ return result;
124
+ }
125
+ /**
126
+ * Parses cookie string from the 'Set-Cookie:' header
127
+ *
128
+ * @param cookieStr String from the 'Set-Cookie:' header
129
+ * @returns Cookie object
130
+ */
131
+ parse(cookieStr) {
132
+ const cookie = {};
133
+ (cookieStr || '')
134
+ .toString()
135
+ .split(';')
136
+ .forEach(cookiePart => {
137
+ const valueParts = cookiePart.split('=');
138
+ const key = valueParts.shift().trim().toLowerCase();
139
+ let value = valueParts.join('=').trim();
140
+ let domain;
141
+ if (!key) {
142
+ // skip empty parts
143
+ return;
144
+ }
145
+ switch (key) {
146
+ case 'expires': {
147
+ const expires = new Date(value);
148
+ // ignore date if can not parse it
149
+ if (expires.toString() !== 'Invalid Date') {
150
+ cookie.expires = expires;
151
+ }
152
+ break;
153
+ }
154
+ case 'path':
155
+ cookie.path = value;
156
+ break;
157
+ case 'domain':
158
+ domain = value.toLowerCase();
159
+ if (domain.length && domain.charAt(0) !== '.') {
160
+ domain = '.' + domain; // ensure preceeding dot for user set domains
161
+ }
162
+ cookie.domain = domain;
163
+ break;
164
+ case 'max-age':
165
+ cookie.expires = new Date(Date.now() + (Number(value) || 0) * 1000);
166
+ break;
167
+ case 'secure':
168
+ cookie.secure = true;
169
+ break;
170
+ case 'httponly':
171
+ cookie.httponly = true;
172
+ break;
173
+ default:
174
+ if (!cookie.name) {
175
+ cookie.name = key;
176
+ cookie.value = value;
177
+ }
178
+ }
179
+ });
180
+ return cookie;
181
+ }
182
+ /**
183
+ * Checks if a cookie object is valid for a specified URL
184
+ *
185
+ * @param cookie Cookie object
186
+ * @param url URL to check for
187
+ * @returns true if cookie is valid for specifiec URL
188
+ */
189
+ match(cookie, url) {
190
+ const urlparts = urllib.parse(url || '');
191
+ // check if hostname matches
192
+ // .foo.com also matches subdomains, foo.com does not
193
+ if (urlparts.hostname !== cookie.domain &&
194
+ (cookie.domain.charAt(0) !== '.' ||
195
+ ('.' + urlparts.hostname).substr(-cookie.domain.length) !== cookie.domain)) {
196
+ return false;
197
+ }
198
+ // check if the request path path-matches the cookie path (RFC 6265 section 5.1.4):
199
+ // identical paths match, otherwise the cookie path must be a directory prefix
200
+ const pathname = urlparts.pathname || '/';
201
+ const cookiePath = cookie.path;
202
+ const pathMatches = pathname === cookiePath ||
203
+ (pathname.startsWith(cookiePath) && (cookiePath.endsWith('/') || pathname.charAt(cookiePath.length) === '/'));
204
+ if (!pathMatches) {
205
+ return false;
206
+ }
207
+ // check secure argument
208
+ if (cookie.secure && urlparts.protocol !== 'https:') {
209
+ return false;
210
+ }
211
+ return true;
212
+ }
213
+ /**
214
+ * Adds (or updates/removes if needed) a cookie object to the cookie storage
215
+ *
216
+ * @param cookie Cookie value to be stored
217
+ */
218
+ add(cookie) {
219
+ // nothing to do here
220
+ if (!cookie || !cookie.name) {
221
+ return false;
222
+ }
223
+ // overwrite if has same params
224
+ for (let i = 0, len = this.cookies.length; i < len; i++) {
225
+ if (this.compare(this.cookies[i], cookie)) {
226
+ // check if the cookie needs to be removed instead
227
+ if (this.isExpired(cookie)) {
228
+ this.cookies.splice(i, 1); // remove expired/unset cookie
229
+ return false;
230
+ }
231
+ this.cookies[i] = cookie;
232
+ return true;
233
+ }
234
+ }
235
+ // add as new if not already expired
236
+ if (!this.isExpired(cookie)) {
237
+ this.cookies.push(cookie);
238
+ }
239
+ return true;
240
+ }
241
+ /**
242
+ * Checks if two cookie objects are the same
243
+ *
244
+ * @param a Cookie to check against
245
+ * @param b Cookie to check against
246
+ * @returns True, if the cookies are the same
247
+ */
248
+ compare(a, b) {
249
+ return a.name === b.name && a.path === b.path && a.domain === b.domain && a.secure === b.secure && a.httponly === b.httponly;
250
+ }
251
+ /**
252
+ * Checks if a cookie is expired
253
+ *
254
+ * @param cookie Cookie object to check against
255
+ * @returns True, if the cookie is expired
256
+ */
257
+ isExpired(cookie) {
258
+ return (cookie.expires && cookie.expires < new Date()) || !cookie.value;
259
+ }
260
+ /**
261
+ * Returns the default path for an URL path argument, the default-path of
262
+ * RFC 6265 section 5.1.4. A cookie that carries no Path attribute is scoped
263
+ * to the directory of the URL it was set from
264
+ *
265
+ * @param pathname
266
+ * @returns Default path
267
+ */
268
+ getPath(pathname) {
269
+ const pathParts = (pathname || '/').split('/');
270
+ pathParts.pop(); // remove filename part
271
+ const path = pathParts.join('/').trim();
272
+ // a path that holds no more than one '/' is scoped to the root path, and so
273
+ // is one that does not start with '/' at all
274
+ if (path.charAt(0) !== '/') {
275
+ return '/';
276
+ }
277
+ return path;
278
+ }
279
+ }
280
+ exports.default = Cookies;
281
+ module.exports = exports.default;
282
+ Object.defineProperty(module.exports, 'default', { value: exports.default, enumerable: false, writable: true, configurable: true });
@@ -0,0 +1,65 @@
1
+ import http from 'node:http';
2
+ import { PassThrough, type Readable } from 'node:stream';
3
+ import Cookies from './cookies.js';
4
+ /**
5
+ * Options for nmfetch
6
+ */
7
+ export interface FetchOptions {
8
+ /** HTTP method, defaults to GET, or to POST when a body is given */
9
+ method?: string | undefined;
10
+ /** Request headers, keys are lowercased before use */
11
+ headers?: http.OutgoingHttpHeaders | undefined;
12
+ /** Overrides the default User-Agent header */
13
+ userAgent?: string | undefined;
14
+ /** Cookie string(s) to seed the cookie jar with for this URL */
15
+ cookie?: string | string[] | false | undefined;
16
+ /** Cookie jar shared across redirects, created when missing */
17
+ cookies?: Cookies | undefined;
18
+ /** Request body: a readable stream, a Buffer, a form object or a string */
19
+ body?: Readable | Buffer | {
20
+ [key: string]: any;
21
+ } | string | false | undefined;
22
+ /** Content-Type header for the body, false leaves it out for a stream body */
23
+ contentType?: string | false | undefined;
24
+ /** TLS settings, only the keys listed in TLS_OPTION_KEYS are used */
25
+ tls?: {
26
+ [key: string]: any;
27
+ } | undefined;
28
+ /** Socket inactivity timeout in milliseconds, defaults to 60000, 0 disables it */
29
+ timeout?: number | undefined;
30
+ /** Maximum size of the (decoded) response body in bytes, defaults to 64 MB, Infinity disables the limit */
31
+ maxBytes?: number | undefined;
32
+ /** Maximum number of redirects to follow (default 5) */
33
+ maxRedirects?: number | undefined;
34
+ /** Resolve responses with a status code of 300 or above instead of emitting an error */
35
+ allowErrorResponse?: boolean | undefined;
36
+ /** Redirects followed so far, set by nmfetch itself */
37
+ redirects?: number | undefined;
38
+ /** Response stream shared across redirects, set by nmfetch itself */
39
+ fetchRes?: FetchResponse | undefined;
40
+ }
41
+ /**
42
+ * The stream nmfetch returns. The response body is piped into it, the status code and
43
+ * headers of the final response are attached once they arrive
44
+ */
45
+ export interface FetchResponse extends PassThrough {
46
+ statusCode?: number | undefined;
47
+ headers?: http.IncomingHttpHeaders | undefined;
48
+ }
49
+ declare function nmfetch(url: string, options?: FetchOptions): FetchResponse;
50
+ declare namespace nmfetch {
51
+ var Cookies: typeof import("./cookies.js").default;
52
+ var DEFAULT_TIMEOUT: number;
53
+ }
54
+ type CookiesJar = Cookies;
55
+ /**
56
+ * Type aliases in the layout of @types/nodemailer, so `fetch.Options` style references keep working
57
+ */
58
+ declare namespace nmfetch {
59
+ type Options = FetchOptions;
60
+ type WritableResponse = FetchResponse;
61
+ type Cookies = CookiesJar;
62
+ }
63
+ /** The same aliases as module level exports, for `import * as fetch` and `import fetch = require()` */
64
+ export type { FetchOptions as Options, FetchResponse as WritableResponse, Cookies };
65
+ export default nmfetch;