@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.
- package/dist/externalVersion.js +6 -6
- package/dist/node_modules/joi/package.json +1 -1
- package/dist/node_modules/nodemailer/dist/cjs/addressparser/index.d.ts +59 -0
- package/dist/node_modules/nodemailer/dist/cjs/addressparser/index.js +790 -0
- package/dist/node_modules/nodemailer/dist/cjs/base64/index.d.ts +36 -0
- package/dist/node_modules/nodemailer/dist/cjs/base64/index.js +119 -0
- package/dist/node_modules/nodemailer/dist/cjs/dkim/index.d.ts +52 -0
- package/dist/node_modules/nodemailer/dist/cjs/dkim/index.js +228 -0
- package/dist/node_modules/nodemailer/dist/cjs/dkim/message-parser.d.ts +48 -0
- package/dist/node_modules/nodemailer/dist/cjs/dkim/message-parser.js +180 -0
- package/dist/node_modules/nodemailer/dist/cjs/dkim/relaxed-body.d.ts +36 -0
- package/dist/node_modules/nodemailer/dist/cjs/dkim/relaxed-body.js +148 -0
- package/dist/node_modules/nodemailer/dist/cjs/dkim/sign.d.ts +52 -0
- package/dist/node_modules/nodemailer/dist/cjs/dkim/sign.js +165 -0
- package/dist/node_modules/nodemailer/dist/cjs/errors.d.ts +96 -0
- package/dist/node_modules/nodemailer/dist/cjs/errors.js +70 -0
- package/dist/node_modules/nodemailer/dist/cjs/fetch/cookies.d.ts +107 -0
- package/dist/node_modules/nodemailer/dist/cjs/fetch/cookies.js +282 -0
- package/dist/node_modules/nodemailer/dist/cjs/fetch/index.d.ts +65 -0
- package/dist/node_modules/nodemailer/dist/cjs/fetch/index.js +384 -0
- package/dist/node_modules/nodemailer/dist/cjs/json-transport/index.d.ts +64 -0
- package/dist/node_modules/nodemailer/dist/cjs/json-transport/index.js +99 -0
- package/dist/node_modules/nodemailer/dist/cjs/mail-composer/index.d.ts +174 -0
- package/dist/node_modules/nodemailer/dist/cjs/mail-composer/index.js +613 -0
- package/dist/node_modules/nodemailer/dist/cjs/mailer/index.d.ts +237 -0
- package/dist/node_modules/nodemailer/dist/cjs/mailer/index.js +415 -0
- package/dist/node_modules/nodemailer/dist/cjs/mailer/mail-message.d.ts +97 -0
- package/dist/node_modules/nodemailer/dist/cjs/mailer/mail-message.js +342 -0
- package/dist/node_modules/nodemailer/dist/cjs/mime-funcs/index.d.ts +161 -0
- package/dist/node_modules/nodemailer/dist/cjs/mime-funcs/index.js +787 -0
- package/dist/node_modules/nodemailer/dist/cjs/mime-funcs/mime-types.d.ts +2 -0
- package/dist/node_modules/nodemailer/dist/cjs/mime-funcs/mime-types.js +2103 -0
- package/dist/node_modules/nodemailer/dist/cjs/mime-node/index.d.ts +333 -0
- package/dist/node_modules/nodemailer/dist/cjs/mime-node/index.js +1493 -0
- package/dist/node_modules/nodemailer/dist/cjs/mime-node/last-newline.d.ts +5 -0
- package/dist/node_modules/nodemailer/dist/cjs/mime-node/last-newline.js +32 -0
- package/dist/node_modules/nodemailer/dist/cjs/mime-node/le-unix.d.ts +9 -0
- package/dist/node_modules/nodemailer/dist/cjs/mime-node/le-unix.js +40 -0
- package/dist/node_modules/nodemailer/dist/cjs/mime-node/le-windows.d.ts +10 -0
- package/dist/node_modules/nodemailer/dist/cjs/mime-node/le-windows.js +47 -0
- package/dist/node_modules/nodemailer/dist/cjs/nodemailer.d.ts +124 -0
- package/dist/node_modules/nodemailer/dist/cjs/nodemailer.js +1 -0
- package/dist/node_modules/nodemailer/dist/cjs/package-info.d.ts +3 -0
- package/dist/node_modules/nodemailer/dist/cjs/package-info.js +7 -0
- package/dist/node_modules/nodemailer/dist/cjs/package.json +3 -0
- package/dist/node_modules/nodemailer/dist/cjs/punycode/index.d.ts +73 -0
- package/dist/node_modules/nodemailer/{lib → dist/cjs}/punycode/index.js +62 -111
- package/dist/node_modules/nodemailer/dist/cjs/qp/index.d.ts +32 -0
- package/dist/node_modules/nodemailer/dist/cjs/qp/index.js +207 -0
- package/dist/node_modules/nodemailer/dist/cjs/sendmail-transport/index.d.ts +69 -0
- package/dist/node_modules/nodemailer/dist/cjs/sendmail-transport/index.js +210 -0
- package/dist/node_modules/nodemailer/dist/cjs/ses-transport/index.d.ts +112 -0
- package/dist/node_modules/nodemailer/dist/cjs/ses-transport/index.js +252 -0
- package/dist/node_modules/nodemailer/dist/cjs/shared/index.d.ts +260 -0
- package/dist/node_modules/nodemailer/dist/cjs/shared/index.js +680 -0
- package/dist/node_modules/nodemailer/dist/cjs/shared/objects.d.ts +23 -0
- package/dist/node_modules/nodemailer/dist/cjs/shared/objects.js +43 -0
- package/dist/node_modules/nodemailer/dist/cjs/shared/url.d.ts +21 -0
- package/dist/node_modules/nodemailer/dist/cjs/shared/url.js +255 -0
- package/dist/node_modules/nodemailer/dist/cjs/smtp-connection/data-stream.d.ts +15 -0
- package/dist/node_modules/nodemailer/dist/cjs/smtp-connection/data-stream.js +108 -0
- package/dist/node_modules/nodemailer/dist/cjs/smtp-connection/http-proxy-client.d.ts +47 -0
- package/dist/node_modules/nodemailer/dist/cjs/smtp-connection/http-proxy-client.js +189 -0
- package/dist/node_modules/nodemailer/dist/cjs/smtp-connection/index.d.ts +416 -0
- package/dist/node_modules/nodemailer/dist/cjs/smtp-connection/index.js +1837 -0
- package/dist/node_modules/nodemailer/dist/cjs/smtp-pool/index.d.ts +133 -0
- package/dist/node_modules/nodemailer/dist/cjs/smtp-pool/index.js +569 -0
- package/dist/node_modules/nodemailer/dist/cjs/smtp-pool/pool-resource.d.ts +62 -0
- package/dist/node_modules/nodemailer/dist/cjs/smtp-pool/pool-resource.js +257 -0
- package/dist/node_modules/nodemailer/dist/cjs/smtp-transport/index.d.ts +156 -0
- package/dist/node_modules/nodemailer/dist/cjs/smtp-transport/index.js +371 -0
- package/dist/node_modules/nodemailer/dist/cjs/stream-transport/index.d.ts +65 -0
- package/dist/node_modules/nodemailer/dist/cjs/stream-transport/index.js +146 -0
- package/dist/node_modules/nodemailer/dist/cjs/well-known/index.d.ts +35 -0
- package/dist/node_modules/nodemailer/dist/cjs/well-known/index.js +41 -0
- package/dist/node_modules/nodemailer/dist/cjs/well-known/services.d.ts +2 -0
- package/dist/node_modules/nodemailer/dist/cjs/well-known/services.js +674 -0
- package/dist/node_modules/nodemailer/dist/cjs/xoauth2/index.d.ts +201 -0
- package/dist/node_modules/nodemailer/dist/cjs/xoauth2/index.js +426 -0
- package/dist/node_modules/nodemailer/dist/esm/addressparser/index.d.ts +59 -0
- package/dist/node_modules/nodemailer/{lib → dist/esm}/addressparser/index.js +361 -131
- package/dist/node_modules/nodemailer/dist/esm/base64/index.d.ts +36 -0
- package/dist/node_modules/nodemailer/{lib → dist/esm}/base64/index.js +31 -56
- package/dist/node_modules/nodemailer/dist/esm/dkim/index.d.ts +52 -0
- package/dist/node_modules/nodemailer/{lib → dist/esm}/dkim/index.js +49 -78
- package/dist/node_modules/nodemailer/dist/esm/dkim/message-parser.d.ts +48 -0
- package/dist/node_modules/nodemailer/{lib → dist/esm}/dkim/message-parser.js +64 -42
- package/dist/node_modules/nodemailer/dist/esm/dkim/relaxed-body.d.ts +36 -0
- package/dist/node_modules/nodemailer/dist/esm/dkim/relaxed-body.js +141 -0
- package/dist/node_modules/nodemailer/dist/esm/dkim/sign.d.ts +52 -0
- package/dist/node_modules/nodemailer/{lib → dist/esm}/dkim/sign.js +50 -46
- package/dist/node_modules/nodemailer/dist/esm/errors.d.ts +96 -0
- package/dist/node_modules/nodemailer/{lib → dist/esm}/errors.js +26 -18
- package/dist/node_modules/nodemailer/dist/esm/fetch/cookies.d.ts +107 -0
- package/dist/node_modules/nodemailer/dist/esm/fetch/cookies.js +242 -0
- package/dist/node_modules/nodemailer/dist/esm/fetch/index.d.ts +65 -0
- package/dist/node_modules/nodemailer/{lib → dist/esm}/fetch/index.js +80 -147
- package/dist/node_modules/nodemailer/dist/esm/json-transport/index.d.ts +64 -0
- package/dist/node_modules/nodemailer/{lib → dist/esm}/json-transport/index.js +19 -39
- package/dist/node_modules/nodemailer/dist/esm/mail-composer/index.d.ts +174 -0
- package/dist/node_modules/nodemailer/{lib → dist/esm}/mail-composer/index.js +199 -265
- package/dist/node_modules/nodemailer/dist/esm/mailer/index.d.ts +237 -0
- package/dist/node_modules/nodemailer/{lib → dist/esm}/mailer/index.js +128 -234
- package/dist/node_modules/nodemailer/dist/esm/mailer/mail-message.d.ts +97 -0
- package/dist/node_modules/nodemailer/{lib → dist/esm}/mailer/mail-message.js +62 -114
- package/dist/node_modules/nodemailer/dist/esm/mime-funcs/index.d.ts +161 -0
- package/dist/node_modules/nodemailer/dist/esm/mime-funcs/index.js +738 -0
- package/dist/node_modules/nodemailer/dist/esm/mime-funcs/mime-types.d.ts +2 -0
- package/dist/node_modules/nodemailer/{lib → dist/esm}/mime-funcs/mime-types.js +29 -42
- package/dist/node_modules/nodemailer/dist/esm/mime-node/index.d.ts +333 -0
- package/dist/node_modules/nodemailer/{lib → dist/esm}/mime-node/index.js +259 -372
- package/dist/node_modules/nodemailer/dist/esm/mime-node/last-newline.d.ts +5 -0
- package/dist/node_modules/nodemailer/{lib → dist/esm}/mime-node/last-newline.js +4 -10
- package/dist/node_modules/nodemailer/dist/esm/mime-node/le-unix.d.ts +9 -0
- package/dist/node_modules/nodemailer/{lib → dist/esm}/mime-node/le-unix.js +6 -11
- package/dist/node_modules/nodemailer/dist/esm/mime-node/le-windows.d.ts +10 -0
- package/dist/node_modules/nodemailer/{lib → dist/esm}/mime-node/le-windows.js +6 -13
- package/dist/node_modules/nodemailer/dist/esm/nodemailer.d.ts +124 -0
- package/dist/node_modules/nodemailer/dist/esm/nodemailer.js +166 -0
- package/dist/node_modules/nodemailer/dist/esm/package-info.d.ts +3 -0
- package/dist/node_modules/nodemailer/dist/esm/package-info.js +4 -0
- package/dist/node_modules/nodemailer/dist/esm/package.json +3 -0
- package/dist/node_modules/nodemailer/dist/esm/punycode/index.d.ts +73 -0
- package/dist/node_modules/nodemailer/dist/esm/punycode/index.js +405 -0
- package/dist/node_modules/nodemailer/dist/esm/qp/index.d.ts +32 -0
- package/dist/node_modules/nodemailer/{lib → dist/esm}/qp/index.js +38 -67
- package/dist/node_modules/nodemailer/dist/esm/sendmail-transport/index.d.ts +69 -0
- package/dist/node_modules/nodemailer/{lib → dist/esm}/sendmail-transport/index.js +51 -101
- package/dist/node_modules/nodemailer/dist/esm/ses-transport/index.d.ts +112 -0
- package/dist/node_modules/nodemailer/dist/esm/ses-transport/index.js +212 -0
- package/dist/node_modules/nodemailer/dist/esm/shared/index.d.ts +260 -0
- package/dist/node_modules/nodemailer/{lib → dist/esm}/shared/index.js +156 -272
- package/dist/node_modules/nodemailer/dist/esm/shared/objects.d.ts +23 -0
- package/dist/node_modules/nodemailer/{lib → dist/esm}/shared/objects.js +13 -17
- package/dist/node_modules/nodemailer/dist/esm/shared/url.d.ts +21 -0
- package/dist/node_modules/nodemailer/dist/esm/shared/url.js +214 -0
- package/dist/node_modules/nodemailer/dist/esm/smtp-connection/data-stream.d.ts +15 -0
- package/dist/node_modules/nodemailer/dist/esm/smtp-connection/data-stream.js +103 -0
- package/dist/node_modules/nodemailer/dist/esm/smtp-connection/http-proxy-client.d.ts +47 -0
- package/dist/node_modules/nodemailer/{lib → dist/esm}/smtp-connection/http-proxy-client.js +49 -74
- package/dist/node_modules/nodemailer/dist/esm/smtp-connection/index.d.ts +416 -0
- package/dist/node_modules/nodemailer/{lib → dist/esm}/smtp-connection/index.js +574 -794
- package/dist/node_modules/nodemailer/dist/esm/smtp-pool/index.d.ts +133 -0
- package/dist/node_modules/nodemailer/{lib → dist/esm}/smtp-pool/index.js +172 -284
- package/dist/node_modules/nodemailer/dist/esm/smtp-pool/pool-resource.d.ts +62 -0
- package/dist/node_modules/nodemailer/{lib → dist/esm}/smtp-pool/pool-resource.js +57 -97
- package/dist/node_modules/nodemailer/dist/esm/smtp-transport/index.d.ts +156 -0
- package/dist/node_modules/nodemailer/{lib → dist/esm}/smtp-transport/index.js +81 -179
- package/dist/node_modules/nodemailer/dist/esm/stream-transport/index.d.ts +65 -0
- package/dist/node_modules/nodemailer/{lib → dist/esm}/stream-transport/index.js +36 -74
- package/dist/node_modules/nodemailer/dist/esm/well-known/index.d.ts +35 -0
- package/dist/node_modules/nodemailer/{lib → dist/esm}/well-known/index.js +5 -16
- package/dist/node_modules/nodemailer/dist/esm/well-known/services.d.ts +2 -0
- package/dist/node_modules/nodemailer/dist/esm/well-known/services.js +671 -0
- package/dist/node_modules/nodemailer/dist/esm/xoauth2/index.d.ts +201 -0
- package/dist/node_modules/nodemailer/{lib → dist/esm}/xoauth2/index.js +125 -187
- package/dist/node_modules/nodemailer/{lib → dist}/well-known/services.json +9 -2
- package/dist/node_modules/nodemailer/package.json +1 -1
- package/package.json +3 -3
- package/dist/node_modules/nodemailer/.gitattributes +0 -6
- package/dist/node_modules/nodemailer/.ncurc.js +0 -9
- package/dist/node_modules/nodemailer/.prettierignore +0 -8
- package/dist/node_modules/nodemailer/.prettierrc +0 -12
- package/dist/node_modules/nodemailer/.prettierrc.js +0 -10
- package/dist/node_modules/nodemailer/.release-please-config.json +0 -9
- package/dist/node_modules/nodemailer/eslint.config.js +0 -88
- package/dist/node_modules/nodemailer/lib/dkim/relaxed-body.js +0 -154
- package/dist/node_modules/nodemailer/lib/fetch/cookies.js +0 -276
- package/dist/node_modules/nodemailer/lib/mime-funcs/index.js +0 -671
- package/dist/node_modules/nodemailer/lib/nodemailer.js +0 -1
- package/dist/node_modules/nodemailer/lib/ses-transport/index.js +0 -266
- package/dist/node_modules/nodemailer/lib/shared/url.js +0 -151
- 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;
|