imapflow 1.0.104 → 1.0.107
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.
|
@@ -22,8 +22,6 @@ class ParserInstance {
|
|
|
22
22
|
}
|
|
23
23
|
|
|
24
24
|
async getCommand() {
|
|
25
|
-
let responseCode;
|
|
26
|
-
|
|
27
25
|
if (this.tag === '+') {
|
|
28
26
|
// special case
|
|
29
27
|
this.humanReadable = this.remainder.trim();
|
|
@@ -42,13 +40,28 @@ class ParserInstance {
|
|
|
42
40
|
case 'BAD':
|
|
43
41
|
case 'PREAUTH':
|
|
44
42
|
case 'BYE':
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
43
|
+
{
|
|
44
|
+
let match = this.remainder.match(/^\s+\[/);
|
|
45
|
+
if (match) {
|
|
46
|
+
let nesting = 1;
|
|
47
|
+
for (let i = match[0].length; i <= this.remainder.length; i++) {
|
|
48
|
+
let c = this.remainder[i];
|
|
49
|
+
|
|
50
|
+
if (c === '[') {
|
|
51
|
+
nesting++;
|
|
52
|
+
} else if (c === ']') {
|
|
53
|
+
nesting--;
|
|
54
|
+
}
|
|
55
|
+
if (!nesting) {
|
|
56
|
+
this.humanReadable = this.remainder.substring(i + 1).trim();
|
|
57
|
+
this.remainder = this.remainder.substring(0, i + 1);
|
|
58
|
+
break;
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
} else {
|
|
62
|
+
this.humanReadable = this.remainder.trim();
|
|
63
|
+
this.remainder = '';
|
|
64
|
+
}
|
|
52
65
|
}
|
|
53
66
|
break;
|
|
54
67
|
}
|
|
@@ -167,6 +167,7 @@ class TokenParser {
|
|
|
167
167
|
this.currentNode.isClosed = true;
|
|
168
168
|
this.currentNode.endPos = this.pos + i;
|
|
169
169
|
this.currentNode = this.currentNode.parentNode;
|
|
170
|
+
|
|
170
171
|
checkSP();
|
|
171
172
|
break;
|
|
172
173
|
|
|
@@ -222,7 +223,7 @@ class TokenParser {
|
|
|
222
223
|
// [ starts section
|
|
223
224
|
case '[':
|
|
224
225
|
// If it is the *first* element after response command, then process as a response argument list
|
|
225
|
-
if (['OK', 'NO', 'BAD', 'BYE', 'PREAUTH'].
|
|
226
|
+
if (['OK', 'NO', 'BAD', 'BYE', 'PREAUTH'].includes(this.parent.command.toUpperCase()) && this.currentNode === this.tree) {
|
|
226
227
|
this.currentNode.endPos = this.pos + i;
|
|
227
228
|
|
|
228
229
|
this.currentNode = this.createNode(this.currentNode, this.pos + i);
|
|
@@ -258,6 +259,7 @@ class TokenParser {
|
|
|
258
259
|
// close out the SECTION
|
|
259
260
|
this.currentNode.isClosed = true;
|
|
260
261
|
this.currentNode = this.currentNode.parentNode;
|
|
262
|
+
|
|
261
263
|
checkSP();
|
|
262
264
|
}
|
|
263
265
|
|
|
@@ -302,8 +304,8 @@ class TokenParser {
|
|
|
302
304
|
this.currentNode.endPos = this.pos + i;
|
|
303
305
|
this.currentNode = this.currentNode.parentNode;
|
|
304
306
|
this.state = 'NORMAL';
|
|
305
|
-
|
|
306
307
|
checkSP();
|
|
308
|
+
|
|
307
309
|
break;
|
|
308
310
|
}
|
|
309
311
|
|
|
@@ -541,6 +543,10 @@ class TokenParser {
|
|
|
541
543
|
|
|
542
544
|
this.currentNode.value += chr;
|
|
543
545
|
break;
|
|
546
|
+
|
|
547
|
+
case 'TEXT':
|
|
548
|
+
this.currentNode.value += chr;
|
|
549
|
+
break;
|
|
544
550
|
}
|
|
545
551
|
}
|
|
546
552
|
}
|
package/lib/imap-flow.js
CHANGED
|
@@ -2620,6 +2620,9 @@ class ImapFlow extends EventEmitter {
|
|
|
2620
2620
|
|
|
2621
2621
|
unbind() {
|
|
2622
2622
|
this.socket.unpipe(this.streamer);
|
|
2623
|
+
if (this._inflate) {
|
|
2624
|
+
this._inflate.unpipe(this.streamer);
|
|
2625
|
+
}
|
|
2623
2626
|
|
|
2624
2627
|
this.socket.removeListener('error', this._socketError);
|
|
2625
2628
|
this.socket.removeListener('close', this._socketClose);
|
|
@@ -2628,7 +2631,8 @@ class ImapFlow extends EventEmitter {
|
|
|
2628
2631
|
this.socket.removeListener('timeout', this._socketTimeout);
|
|
2629
2632
|
|
|
2630
2633
|
return {
|
|
2631
|
-
|
|
2634
|
+
readSocket: this._inflate || this.socket,
|
|
2635
|
+
writeSocket: this.writeSocket || this.socket
|
|
2632
2636
|
};
|
|
2633
2637
|
}
|
|
2634
2638
|
}
|
package/lib/search-compiler.js
CHANGED
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "imapflow",
|
|
3
|
-
"version": "1.0.
|
|
3
|
+
"version": "1.0.107",
|
|
4
4
|
"description": "IMAP Client for Node",
|
|
5
5
|
"main": "./lib/imap-flow.js",
|
|
6
6
|
"scripts": {
|
|
@@ -31,9 +31,9 @@
|
|
|
31
31
|
"@babel/eslint-plugin": "7.18.10",
|
|
32
32
|
"@babel/plugin-syntax-class-properties": "7.12.13",
|
|
33
33
|
"@babel/preset-env": "7.18.10",
|
|
34
|
-
"@types/node": "18.7.
|
|
34
|
+
"@types/node": "18.7.14",
|
|
35
35
|
"braintree-jsdoc-template": "3.3.0",
|
|
36
|
-
"eslint": "8.
|
|
36
|
+
"eslint": "8.23.0",
|
|
37
37
|
"eslint-config-nodemailer": "1.2.0",
|
|
38
38
|
"eslint-config-prettier": "8.5.0",
|
|
39
39
|
"grunt": "1.5.3",
|
package/test/imap-parser-test.js
CHANGED
|
@@ -914,11 +914,19 @@ module.exports['IMAP Parser, unicode select'] = test =>
|
|
|
914
914
|
value: '',
|
|
915
915
|
section: [{ type: 'ATOM', value: 'READ-WRITE' }]
|
|
916
916
|
},
|
|
917
|
-
{ type: '
|
|
918
|
-
|
|
919
|
-
|
|
920
|
-
|
|
921
|
-
|
|
917
|
+
{ type: 'TEXT', value: '[Gmail]/Visi laiškai selected. (Success) [THROTTLED]' }
|
|
918
|
+
])
|
|
919
|
+
);
|
|
920
|
+
|
|
921
|
+
module.exports['IMAP Parser, unicode select 2'] = test =>
|
|
922
|
+
asyncWrapper(test, async test =>
|
|
923
|
+
test.deepEqual((await parser('E OK [READ-WRITE] [Gmail]/Вся почта selected. (Success) [THROTTLED]')).attributes, [
|
|
924
|
+
{
|
|
925
|
+
type: 'ATOM',
|
|
926
|
+
value: '',
|
|
927
|
+
section: [{ type: 'ATOM', value: 'READ-WRITE' }]
|
|
928
|
+
},
|
|
929
|
+
{ type: 'TEXT', value: '[Gmail]/Вся почта selected. (Success) [THROTTLED]' }
|
|
922
930
|
])
|
|
923
931
|
);
|
|
924
932
|
|