imapflow 1.7.8 → 2.0.1

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 (296) hide show
  1. package/CHANGELOG.md +27 -0
  2. package/README.md +8 -2
  3. package/dist/cjs/charsets.d.ts +1 -0
  4. package/dist/cjs/charsets.js +294 -0
  5. package/dist/cjs/commands/append.d.ts +22 -0
  6. package/dist/cjs/commands/append.js +151 -0
  7. package/dist/cjs/commands/authenticate.d.ts +24 -0
  8. package/dist/cjs/commands/authenticate.js +223 -0
  9. package/dist/cjs/commands/capability.d.ts +8 -0
  10. package/dist/cjs/commands/capability.js +32 -0
  11. package/dist/cjs/commands/close.d.ts +8 -0
  12. package/dist/cjs/commands/close.js +39 -0
  13. package/dist/cjs/commands/compress.d.ts +8 -0
  14. package/dist/cjs/commands/compress.js +56 -0
  15. package/dist/cjs/commands/copy.d.ts +13 -0
  16. package/dist/cjs/commands/copy.js +44 -0
  17. package/dist/cjs/commands/copyuid-parser.d.ts +11 -0
  18. package/dist/cjs/commands/copyuid-parser.js +32 -0
  19. package/dist/cjs/commands/create.d.ts +11 -0
  20. package/dist/cjs/commands/create.js +80 -0
  21. package/dist/cjs/commands/delete.d.ts +11 -0
  22. package/dist/cjs/commands/delete.js +40 -0
  23. package/dist/cjs/commands/enable.d.ts +9 -0
  24. package/dist/cjs/commands/enable.js +61 -0
  25. package/dist/cjs/commands/esearch-parser.d.ts +17 -0
  26. package/dist/cjs/commands/esearch-parser.js +91 -0
  27. package/dist/cjs/commands/expunge.d.ts +12 -0
  28. package/dist/cjs/commands/expunge.js +60 -0
  29. package/dist/cjs/commands/fetch.d.ts +30 -0
  30. package/dist/cjs/commands/fetch.js +241 -0
  31. package/dist/cjs/commands/id.d.ts +10 -0
  32. package/dist/cjs/commands/id.js +80 -0
  33. package/dist/cjs/commands/idle.d.ts +9 -0
  34. package/dist/cjs/commands/idle.js +347 -0
  35. package/dist/cjs/commands/list.d.ts +16 -0
  36. package/dist/cjs/commands/list.js +520 -0
  37. package/dist/cjs/commands/login.d.ts +11 -0
  38. package/dist/cjs/commands/login.js +42 -0
  39. package/dist/cjs/commands/logout.d.ts +8 -0
  40. package/dist/cjs/commands/logout.js +47 -0
  41. package/dist/cjs/commands/move.d.ts +13 -0
  42. package/dist/cjs/commands/move.js +57 -0
  43. package/dist/cjs/commands/namespace.d.ts +25 -0
  44. package/dist/cjs/commands/namespace.js +139 -0
  45. package/dist/cjs/commands/noop.d.ts +8 -0
  46. package/dist/cjs/commands/noop.js +22 -0
  47. package/dist/cjs/commands/quota.d.ts +10 -0
  48. package/dist/cjs/commands/quota.js +119 -0
  49. package/dist/cjs/commands/rename.d.ts +12 -0
  50. package/dist/cjs/commands/rename.js +48 -0
  51. package/dist/cjs/commands/search.d.ts +15 -0
  52. package/dist/cjs/commands/search.js +228 -0
  53. package/dist/cjs/commands/select.d.ts +25 -0
  54. package/dist/cjs/commands/select.js +250 -0
  55. package/dist/cjs/commands/starttls.d.ts +8 -0
  56. package/dist/cjs/commands/starttls.js +30 -0
  57. package/dist/cjs/commands/status-fields.d.ts +14 -0
  58. package/dist/cjs/commands/status-fields.js +61 -0
  59. package/dist/cjs/commands/status.d.ts +12 -0
  60. package/dist/cjs/commands/status.js +108 -0
  61. package/dist/cjs/commands/store.d.ts +19 -0
  62. package/dist/cjs/commands/store.js +93 -0
  63. package/dist/cjs/commands/subscribe.d.ts +9 -0
  64. package/dist/cjs/commands/subscribe.js +31 -0
  65. package/dist/cjs/commands/unsubscribe.d.ts +9 -0
  66. package/dist/cjs/commands/unsubscribe.js +31 -0
  67. package/dist/cjs/connection-deadline.d.ts +49 -0
  68. package/dist/cjs/connection-deadline.js +91 -0
  69. package/dist/cjs/errors.d.ts +83 -0
  70. package/dist/cjs/errors.js +13 -0
  71. package/dist/cjs/handler/imap-compiler.d.ts +24 -0
  72. package/dist/cjs/handler/imap-compiler.js +285 -0
  73. package/dist/cjs/handler/imap-formal-syntax.d.ts +28 -0
  74. package/dist/cjs/handler/imap-formal-syntax.js +121 -0
  75. package/dist/cjs/handler/imap-handler.d.ts +9 -0
  76. package/dist/cjs/handler/imap-handler.js +10 -0
  77. package/dist/cjs/handler/imap-parser.d.ts +16 -0
  78. package/dist/cjs/handler/imap-parser.js +90 -0
  79. package/dist/cjs/handler/imap-stream.d.ts +181 -0
  80. package/dist/cjs/handler/imap-stream.js +446 -0
  81. package/dist/cjs/handler/limits.d.ts +25 -0
  82. package/dist/cjs/handler/limits.js +51 -0
  83. package/dist/cjs/handler/parser-instance.d.ts +68 -0
  84. package/dist/cjs/handler/parser-instance.js +223 -0
  85. package/dist/cjs/handler/token-parser.d.ts +91 -0
  86. package/dist/cjs/handler/token-parser.js +673 -0
  87. package/dist/cjs/handler/types.d.ts +91 -0
  88. package/dist/cjs/handler/types.js +4 -0
  89. package/dist/cjs/imap-commands.d.ts +16 -0
  90. package/dist/cjs/imap-commands.js +74 -0
  91. package/dist/cjs/imap-flow.d.ts +676 -0
  92. package/dist/cjs/imap-flow.js +3956 -0
  93. package/dist/cjs/jp-decoder.d.ts +12 -0
  94. package/dist/cjs/jp-decoder.js +79 -0
  95. package/dist/cjs/limited-passthrough.d.ts +25 -0
  96. package/dist/cjs/limited-passthrough.js +54 -0
  97. package/dist/cjs/logger.d.ts +3 -0
  98. package/dist/cjs/logger.js +11 -0
  99. package/dist/cjs/package-info.d.ts +3 -0
  100. package/dist/cjs/package-info.js +7 -0
  101. package/dist/cjs/package.json +3 -0
  102. package/dist/cjs/proxy-connection.d.ts +33 -0
  103. package/dist/cjs/proxy-connection.js +392 -0
  104. package/dist/cjs/search-compiler.d.ts +34 -0
  105. package/dist/cjs/search-compiler.js +476 -0
  106. package/dist/cjs/special-use.d.ts +22 -0
  107. package/dist/cjs/special-use.js +911 -0
  108. package/dist/cjs/tools.d.ts +427 -0
  109. package/dist/cjs/tools.js +1496 -0
  110. package/{lib/imap-flow.d.ts → dist/cjs/types.d.ts} +387 -517
  111. package/dist/cjs/types.js +5 -0
  112. package/dist/esm/charsets.d.ts +1 -0
  113. package/{lib → dist/esm}/charsets.js +1 -6
  114. package/dist/esm/commands/append.d.ts +22 -0
  115. package/{lib → dist/esm}/commands/append.js +22 -52
  116. package/dist/esm/commands/authenticate.d.ts +24 -0
  117. package/{lib → dist/esm}/commands/authenticate.js +62 -87
  118. package/dist/esm/commands/capability.d.ts +8 -0
  119. package/{lib → dist/esm}/commands/capability.js +6 -9
  120. package/dist/esm/commands/close.d.ts +8 -0
  121. package/{lib → dist/esm}/commands/close.js +6 -10
  122. package/dist/esm/commands/compress.d.ts +8 -0
  123. package/{lib → dist/esm}/commands/compress.js +7 -11
  124. package/dist/esm/commands/copy.d.ts +13 -0
  125. package/{lib → dist/esm}/commands/copy.js +12 -20
  126. package/dist/esm/commands/copyuid-parser.d.ts +11 -0
  127. package/{lib → dist/esm}/commands/copyuid-parser.js +9 -15
  128. package/dist/esm/commands/create.d.ts +11 -0
  129. package/{lib → dist/esm}/commands/create.js +13 -27
  130. package/dist/esm/commands/delete.d.ts +11 -0
  131. package/{lib → dist/esm}/commands/delete.js +9 -14
  132. package/dist/esm/commands/enable.d.ts +9 -0
  133. package/{lib → dist/esm}/commands/enable.js +23 -30
  134. package/dist/esm/commands/esearch-parser.d.ts +17 -0
  135. package/dist/esm/commands/esearch-parser.js +88 -0
  136. package/dist/esm/commands/expunge.d.ts +12 -0
  137. package/{lib → dist/esm}/commands/expunge.js +17 -22
  138. package/dist/esm/commands/fetch.d.ts +30 -0
  139. package/{lib → dist/esm}/commands/fetch.js +32 -64
  140. package/dist/esm/commands/id.d.ts +10 -0
  141. package/{lib → dist/esm}/commands/id.js +17 -23
  142. package/dist/esm/commands/idle.d.ts +9 -0
  143. package/{lib → dist/esm}/commands/idle.js +47 -81
  144. package/dist/esm/commands/list.d.ts +16 -0
  145. package/{lib → dist/esm}/commands/list.js +60 -123
  146. package/dist/esm/commands/login.d.ts +11 -0
  147. package/{lib → dist/esm}/commands/login.js +10 -15
  148. package/dist/esm/commands/logout.d.ts +8 -0
  149. package/{lib → dist/esm}/commands/logout.js +9 -11
  150. package/dist/esm/commands/move.d.ts +13 -0
  151. package/{lib → dist/esm}/commands/move.js +13 -21
  152. package/dist/esm/commands/namespace.d.ts +25 -0
  153. package/{lib → dist/esm}/commands/namespace.js +34 -44
  154. package/dist/esm/commands/noop.d.ts +8 -0
  155. package/{lib → dist/esm}/commands/noop.js +6 -7
  156. package/dist/esm/commands/quota.d.ts +10 -0
  157. package/{lib → dist/esm}/commands/quota.js +18 -36
  158. package/dist/esm/commands/rename.d.ts +12 -0
  159. package/{lib → dist/esm}/commands/rename.js +10 -15
  160. package/dist/esm/commands/search.d.ts +15 -0
  161. package/{lib → dist/esm}/commands/search.js +36 -135
  162. package/dist/esm/commands/select.d.ts +25 -0
  163. package/{lib → dist/esm}/commands/select.js +33 -64
  164. package/dist/esm/commands/starttls.d.ts +8 -0
  165. package/{lib → dist/esm}/commands/starttls.js +6 -8
  166. package/dist/esm/commands/status-fields.d.ts +14 -0
  167. package/{lib → dist/esm}/commands/status-fields.js +5 -16
  168. package/dist/esm/commands/status.d.ts +12 -0
  169. package/{lib → dist/esm}/commands/status.js +18 -29
  170. package/dist/esm/commands/store.d.ts +19 -0
  171. package/{lib → dist/esm}/commands/store.js +24 -37
  172. package/dist/esm/commands/subscribe.d.ts +9 -0
  173. package/{lib → dist/esm}/commands/subscribe.js +8 -12
  174. package/dist/esm/commands/unsubscribe.d.ts +9 -0
  175. package/{lib → dist/esm}/commands/unsubscribe.js +8 -12
  176. package/dist/esm/connection-deadline.d.ts +49 -0
  177. package/{lib → dist/esm}/connection-deadline.js +14 -25
  178. package/dist/esm/errors.d.ts +83 -0
  179. package/dist/esm/errors.js +9 -0
  180. package/dist/esm/handler/imap-compiler.d.ts +24 -0
  181. package/{lib → dist/esm}/handler/imap-compiler.js +22 -80
  182. package/dist/esm/handler/imap-formal-syntax.d.ts +28 -0
  183. package/dist/esm/handler/imap-formal-syntax.js +117 -0
  184. package/dist/esm/handler/imap-handler.d.ts +9 -0
  185. package/dist/esm/handler/imap-handler.js +9 -0
  186. package/dist/esm/handler/imap-parser.d.ts +16 -0
  187. package/{lib → dist/esm}/handler/imap-parser.js +31 -44
  188. package/dist/esm/handler/imap-stream.d.ts +181 -0
  189. package/{lib → dist/esm}/handler/imap-stream.js +29 -121
  190. package/dist/esm/handler/limits.d.ts +25 -0
  191. package/{lib → dist/esm}/handler/limits.js +13 -22
  192. package/dist/esm/handler/parser-instance.d.ts +68 -0
  193. package/{lib → dist/esm}/handler/parser-instance.js +19 -47
  194. package/dist/esm/handler/token-parser.d.ts +91 -0
  195. package/{lib → dist/esm}/handler/token-parser.js +71 -155
  196. package/dist/esm/handler/types.d.ts +91 -0
  197. package/dist/esm/handler/types.js +3 -0
  198. package/dist/esm/imap-commands.d.ts +16 -0
  199. package/dist/esm/imap-commands.js +67 -0
  200. package/dist/esm/imap-flow.d.ts +676 -0
  201. package/{lib → dist/esm}/imap-flow.js +769 -1790
  202. package/dist/esm/jp-decoder.d.ts +12 -0
  203. package/{lib → dist/esm}/jp-decoder.js +6 -21
  204. package/dist/esm/limited-passthrough.d.ts +25 -0
  205. package/{lib → dist/esm}/limited-passthrough.js +7 -20
  206. package/dist/esm/logger.d.ts +3 -0
  207. package/dist/esm/logger.js +4 -0
  208. package/dist/esm/package-info.d.ts +3 -0
  209. package/dist/esm/package-info.js +4 -0
  210. package/dist/esm/package.json +3 -0
  211. package/dist/esm/proxy-connection.d.ts +33 -0
  212. package/{lib → dist/esm}/proxy-connection.js +56 -127
  213. package/dist/esm/search-compiler.d.ts +34 -0
  214. package/{lib → dist/esm}/search-compiler.js +54 -110
  215. package/dist/esm/special-use.d.ts +22 -0
  216. package/dist/esm/special-use.js +907 -0
  217. package/dist/esm/tools.d.ts +427 -0
  218. package/dist/esm/tools.js +1446 -0
  219. package/dist/esm/types.d.ts +828 -0
  220. package/dist/esm/types.js +4 -0
  221. package/package.json +60 -20
  222. package/.gitattributes +0 -1
  223. package/.github/CODE_OF_CONDUCT.md +0 -76
  224. package/.github/FUNDING.yml +0 -4
  225. package/.github/ISSUE_TEMPLATE/bug_report.md +0 -40
  226. package/.github/ISSUE_TEMPLATE/feature_request.md +0 -19
  227. package/.github/contributing.md +0 -17
  228. package/.github/workflows/release.yaml +0 -36
  229. package/.github/workflows/stale.yml +0 -29
  230. package/.github/workflows/test.yml +0 -51
  231. package/.ncurc.js +0 -4
  232. package/.prettierignore +0 -4
  233. package/.prettierrc.js +0 -8
  234. package/.release-please-manifest.json +0 -3
  235. package/CLAUDE.md +0 -104
  236. package/Gruntfile.js +0 -23
  237. package/eslint.config.js +0 -45
  238. package/lib/handler/imap-formal-syntax.js +0 -189
  239. package/lib/handler/imap-handler.js +0 -17
  240. package/lib/imap-commands.js +0 -45
  241. package/lib/logger.js +0 -5
  242. package/lib/special-use.js +0 -923
  243. package/lib/tools.js +0 -1612
  244. package/release-please-config.json +0 -10
  245. package/test/authentication-test.js +0 -101
  246. package/test/auto-idle-test.js +0 -470
  247. package/test/bodystructure-test.js +0 -899
  248. package/test/charsets-test.js +0 -161
  249. package/test/commands-branches-test.js +0 -1095
  250. package/test/commands-integration-test.js +0 -11124
  251. package/test/commands-test.js +0 -73
  252. package/test/connection-edge-cases-test.js +0 -1828
  253. package/test/connection-test.js +0 -162
  254. package/test/copyuid-parser-test.js +0 -173
  255. package/test/fetch-generator-test.js +0 -218
  256. package/test/fixtures/fake-timers.js +0 -115
  257. package/test/fixtures/serialized-mimetorture.js +0 -2738
  258. package/test/fixtures/test-client.js +0 -101
  259. package/test/fixtures/test-tls.js +0 -8
  260. package/test/handler-branches-test.js +0 -310
  261. package/test/idle-polling-test.js +0 -518
  262. package/test/imap-compiler-test.js +0 -809
  263. package/test/imap-flow-compress-test.js +0 -166
  264. package/test/imap-flow-coverage-test.js +0 -612
  265. package/test/imap-flow-fetch-download-test.js +0 -909
  266. package/test/imap-flow-internals-test.js +0 -725
  267. package/test/imap-flow-methods-test.js +0 -889
  268. package/test/imap-flow-proxy-paths-test.js +0 -366
  269. package/test/imap-flow-secure-test.js +0 -573
  270. package/test/imap-flow-server-test.js +0 -1474
  271. package/test/imap-formal-syntax-test.js +0 -293
  272. package/test/imap-parser-test.js +0 -1474
  273. package/test/imap-stream-edge-cases-test.js +0 -666
  274. package/test/imap-stream-test.js +0 -177
  275. package/test/imapflow-test.js +0 -258
  276. package/test/integration/README.md +0 -52
  277. package/test/integration/dovecot-test.conf +0 -27
  278. package/test/integration/rev2-live-test.js +0 -431
  279. package/test/integration/run-rev2-tests.sh +0 -75
  280. package/test/integration-test.js +0 -83
  281. package/test/jp-decoder-test.js +0 -304
  282. package/test/limited-passthrough-test.js +0 -299
  283. package/test/memory-cleanup-test.js +0 -144
  284. package/test/memory-leak-test.js +0 -667
  285. package/test/parser-limits-test.js +0 -292
  286. package/test/proxy-connection-test.js +0 -738
  287. package/test/reliability-improvements-test.js +0 -548
  288. package/test/search-compiler-test.js +0 -1300
  289. package/test/search-test.js +0 -329
  290. package/test/special-use-test.js +0 -418
  291. package/test/starttls-injection-test.js +0 -181
  292. package/test/tag-correlation-test.js +0 -333
  293. package/test/timer-policy-test.js +0 -227
  294. package/test/token-parser-test.js +0 -456
  295. package/test/tools-test.js +0 -2013
  296. package/test/unhandled-rejection-test.js +0 -661
@@ -1,899 +0,0 @@
1
- 'use strict';
2
-
3
- const { parseBodystructure } = require('../lib/tools');
4
-
5
- module.exports['Process correct TEXT with line count'] = test => {
6
- let attribute = [
7
- [
8
- [
9
- {
10
- type: 'STRING',
11
- value: 'text'
12
- },
13
- {
14
- type: 'STRING',
15
- value: 'plain'
16
- },
17
- [
18
- {
19
- type: 'STRING',
20
- value: 'charset'
21
- },
22
- {
23
- type: 'STRING',
24
- value: 'UTF-8'
25
- }
26
- ],
27
- null,
28
- null,
29
- {
30
- type: 'STRING',
31
- value: '7bit'
32
- },
33
- {
34
- type: 'ATOM',
35
- value: '23'
36
- },
37
- {
38
- type: 'ATOM',
39
- value: '1'
40
- },
41
- null,
42
- null,
43
- null,
44
- null
45
- ],
46
- [
47
- {
48
- type: 'STRING',
49
- value: 'text'
50
- },
51
- {
52
- type: 'STRING',
53
- value: 'html'
54
- },
55
- [
56
- {
57
- type: 'STRING',
58
- value: 'charset'
59
- },
60
- {
61
- type: 'STRING',
62
- value: 'UTF-8'
63
- }
64
- ],
65
- null,
66
- null,
67
- {
68
- type: 'STRING',
69
- value: '7bit'
70
- },
71
- {
72
- type: 'ATOM',
73
- value: '49'
74
- },
75
- {
76
- type: 'ATOM',
77
- value: '1'
78
- },
79
- null,
80
- null,
81
- null,
82
- null
83
- ],
84
- {
85
- type: 'STRING',
86
- value: 'alternative'
87
- },
88
- [
89
- {
90
- type: 'STRING',
91
- value: 'boundary'
92
- },
93
- {
94
- type: 'STRING',
95
- value: '000000000000b56402062b1fba83'
96
- }
97
- ],
98
- null,
99
- null,
100
- null
101
- ],
102
- [
103
- {
104
- type: 'STRING',
105
- value: 'text'
106
- },
107
- {
108
- type: 'STRING',
109
- value: 'plain'
110
- },
111
- [
112
- {
113
- type: 'STRING',
114
- value: 'charset'
115
- },
116
- {
117
- type: 'STRING',
118
- value: 'US-ASCII'
119
- },
120
- {
121
- type: 'STRING',
122
- value: 'name'
123
- },
124
- {
125
- type: 'STRING',
126
- value: 'log_imap_missing_attachments.txt'
127
- }
128
- ],
129
- {
130
- type: 'STRING',
131
- value: '<f_m5mnf91y1>'
132
- },
133
- null,
134
- {
135
- type: 'STRING',
136
- value: 'base64'
137
- },
138
- {
139
- type: 'ATOM',
140
- value: '33954'
141
- },
142
- {
143
- type: 'ATOM',
144
- value: '435'
145
- },
146
- null,
147
- [
148
- {
149
- type: 'STRING',
150
- value: 'attachment'
151
- },
152
- [
153
- {
154
- type: 'STRING',
155
- value: 'filename'
156
- },
157
- {
158
- type: 'STRING',
159
- value: 'log_imap_missing_attachments.txt'
160
- }
161
- ]
162
- ],
163
- null,
164
- null
165
- ],
166
- [
167
- {
168
- type: 'STRING',
169
- value: 'image'
170
- },
171
- {
172
- type: 'STRING',
173
- value: 'jpeg'
174
- },
175
- [
176
- {
177
- type: 'STRING',
178
- value: 'name'
179
- },
180
- {
181
- type: 'STRING',
182
- value: 'img2.jpeg'
183
- }
184
- ],
185
- {
186
- type: 'STRING',
187
- value: '<f_m5mnf4c70>'
188
- },
189
- null,
190
- {
191
- type: 'STRING',
192
- value: 'base64'
193
- },
194
- {
195
- type: 'ATOM',
196
- value: '3776960'
197
- },
198
- null,
199
- [
200
- {
201
- type: 'STRING',
202
- value: 'attachment'
203
- },
204
- [
205
- {
206
- type: 'STRING',
207
- value: 'filename'
208
- },
209
- {
210
- type: 'STRING',
211
- value: 'img2.jpeg'
212
- }
213
- ]
214
- ],
215
- null,
216
- null
217
- ],
218
- {
219
- type: 'STRING',
220
- value: 'mixed'
221
- },
222
- [
223
- {
224
- type: 'STRING',
225
- value: 'boundary'
226
- },
227
- {
228
- type: 'STRING',
229
- value: '000000000000b56402062b1fba85'
230
- }
231
- ],
232
- null,
233
- null,
234
- null
235
- ];
236
-
237
- let bodyStruct = parseBodystructure(attribute);
238
-
239
- test.deepEqual(bodyStruct, {
240
- childNodes: [
241
- {
242
- part: '1',
243
- childNodes: [
244
- {
245
- part: '1.1',
246
- type: 'text/plain',
247
- parameters: {
248
- charset: 'UTF-8'
249
- },
250
- encoding: '7bit',
251
- size: 23,
252
- lineCount: 1
253
- },
254
- {
255
- part: '1.2',
256
- type: 'text/html',
257
- parameters: {
258
- charset: 'UTF-8'
259
- },
260
- encoding: '7bit',
261
- size: 49,
262
- lineCount: 1
263
- }
264
- ],
265
- type: 'multipart/alternative',
266
- parameters: {
267
- boundary: '000000000000b56402062b1fba83'
268
- }
269
- },
270
- {
271
- part: '2',
272
- type: 'text/plain',
273
- parameters: {
274
- charset: 'US-ASCII',
275
- name: 'log_imap_missing_attachments.txt'
276
- },
277
- id: '<f_m5mnf91y1>',
278
- encoding: 'base64',
279
- size: 33954,
280
- lineCount: 435,
281
- disposition: 'attachment',
282
- dispositionParameters: {
283
- filename: 'log_imap_missing_attachments.txt'
284
- }
285
- },
286
- {
287
- part: '3',
288
- type: 'image/jpeg',
289
- parameters: {
290
- name: 'img2.jpeg'
291
- },
292
- id: '<f_m5mnf4c70>',
293
- encoding: 'base64',
294
- size: 3776960,
295
- disposition: 'attachment',
296
- dispositionParameters: {
297
- filename: 'img2.jpeg'
298
- }
299
- }
300
- ],
301
- type: 'multipart/mixed',
302
- parameters: {
303
- boundary: '000000000000b56402062b1fba85'
304
- }
305
- });
306
- test.done();
307
- };
308
-
309
- module.exports['Process invalid TEXT without line count'] = test => {
310
- let attribute = [
311
- [
312
- [
313
- {
314
- type: 'STRING',
315
- value: 'TEXT'
316
- },
317
- {
318
- type: 'STRING',
319
- value: 'PLAIN'
320
- },
321
- [
322
- {
323
- type: 'STRING',
324
- value: 'CHARSET'
325
- },
326
- {
327
- type: 'STRING',
328
- value: 'UTF-8'
329
- }
330
- ],
331
- null,
332
- null,
333
- {
334
- type: 'STRING',
335
- value: '7bit'
336
- },
337
- {
338
- type: 'ATOM',
339
- value: '2'
340
- },
341
- null,
342
- null,
343
- null,
344
- null,
345
- null
346
- ],
347
- [
348
- {
349
- type: 'STRING',
350
- value: 'TEXT'
351
- },
352
- {
353
- type: 'STRING',
354
- value: 'HTML'
355
- },
356
- [
357
- {
358
- type: 'STRING',
359
- value: 'CHARSET'
360
- },
361
- {
362
- type: 'STRING',
363
- value: 'UTF-8'
364
- }
365
- ],
366
- null,
367
- null,
368
- {
369
- type: 'STRING',
370
- value: '7bit'
371
- },
372
- {
373
- type: 'ATOM',
374
- value: '27'
375
- },
376
- null,
377
- null,
378
- null,
379
- null,
380
- null
381
- ],
382
- {
383
- type: 'STRING',
384
- value: 'ALTERNATIVE'
385
- },
386
- [
387
- {
388
- type: 'ATOM',
389
- value: 'BOUNDARY'
390
- },
391
- {
392
- type: 'STRING',
393
- value: '-=Part.1=-'
394
- }
395
- ],
396
- null,
397
- null,
398
- null
399
- ],
400
- [
401
- {
402
- type: 'STRING',
403
- value: 'TEXT'
404
- },
405
- {
406
- type: 'STRING',
407
- value: 'PLAIN'
408
- },
409
- [
410
- {
411
- type: 'STRING',
412
- value: 'CHARSET'
413
- },
414
- {
415
- type: 'STRING',
416
- value: 'US-ASCII'
417
- }
418
- ],
419
- {
420
- type: 'STRING',
421
- value: '<f_m5mjjzj32>'
422
- },
423
- null,
424
- {
425
- type: 'STRING',
426
- value: 'base64'
427
- },
428
- {
429
- type: 'ATOM',
430
- value: '49'
431
- },
432
- null,
433
- [
434
- {
435
- type: 'STRING',
436
- value: 'ATTACHMENT'
437
- },
438
- [
439
- {
440
- type: 'STRING',
441
- value: 'FILENAME'
442
- },
443
- {
444
- type: 'STRING',
445
- value: 'logs.txt'
446
- }
447
- ]
448
- ],
449
- null,
450
- null
451
- ],
452
- [
453
- {
454
- type: 'STRING',
455
- value: 'TEXT'
456
- },
457
- {
458
- type: 'STRING',
459
- value: 'HTML'
460
- },
461
- [
462
- {
463
- type: 'STRING',
464
- value: 'CHARSET'
465
- },
466
- {
467
- type: 'STRING',
468
- value: 'US-ASCII'
469
- }
470
- ],
471
- {
472
- type: 'STRING',
473
- value: '<f_m5mjjziw1>'
474
- },
475
- null,
476
- {
477
- type: 'STRING',
478
- value: 'base64'
479
- },
480
- {
481
- type: 'ATOM',
482
- value: '4437'
483
- },
484
- null,
485
- [
486
- {
487
- type: 'STRING',
488
- value: 'ATTACHMENT'
489
- },
490
- [
491
- {
492
- type: 'STRING',
493
- value: 'FILENAME'
494
- },
495
- {
496
- type: 'STRING',
497
- value: 'TITI.html'
498
- }
499
- ]
500
- ],
501
- null,
502
- null
503
- ],
504
- [
505
- {
506
- type: 'STRING',
507
- value: 'IMAGE'
508
- },
509
- {
510
- type: 'STRING',
511
- value: 'PNG'
512
- },
513
- null,
514
- {
515
- type: 'STRING',
516
- value: '<f_m5mjjzih0>'
517
- },
518
- null,
519
- {
520
- type: 'STRING',
521
- value: 'base64'
522
- },
523
- {
524
- type: 'ATOM',
525
- value: '32085'
526
- },
527
- null,
528
- [
529
- {
530
- type: 'STRING',
531
- value: 'ATTACHMENT'
532
- },
533
- [
534
- {
535
- type: 'STRING',
536
- value: 'FILENAME'
537
- },
538
- {
539
- type: 'STRING',
540
- value: 'Logo-google-icon-PNG.png'
541
- }
542
- ]
543
- ],
544
- null,
545
- null
546
- ],
547
- [
548
- {
549
- type: 'STRING',
550
- value: 'APPLICATION'
551
- },
552
- {
553
- type: 'STRING',
554
- value: 'OCTET-STREAM'
555
- },
556
- null,
557
- {
558
- type: 'STRING',
559
- value: '<f_m5mjjzjb3>'
560
- },
561
- null,
562
- {
563
- type: 'STRING',
564
- value: 'base64'
565
- },
566
- {
567
- type: 'ATOM',
568
- value: '354150'
569
- },
570
- null,
571
- [
572
- {
573
- type: 'STRING',
574
- value: 'ATTACHMENT'
575
- },
576
- [
577
- {
578
- type: 'STRING',
579
- value: 'FILENAME'
580
- },
581
- {
582
- type: 'STRING',
583
- value: 'logs_not_txt'
584
- }
585
- ]
586
- ],
587
- null,
588
- null
589
- ],
590
- [
591
- {
592
- type: 'STRING',
593
- value: 'TEXT'
594
- },
595
- {
596
- type: 'STRING',
597
- value: 'MARKDOWN'
598
- },
599
- [
600
- {
601
- type: 'STRING',
602
- value: 'CHARSET'
603
- },
604
- {
605
- type: 'STRING',
606
- value: 'UTF-8'
607
- }
608
- ],
609
- {
610
- type: 'STRING',
611
- value: '<f_m5mjk5le4>'
612
- },
613
- null,
614
- {
615
- type: 'STRING',
616
- value: 'base64'
617
- },
618
- {
619
- type: 'ATOM',
620
- value: '21064'
621
- },
622
- null,
623
- [
624
- {
625
- type: 'STRING',
626
- value: 'ATTACHMENT'
627
- },
628
- [
629
- {
630
- type: 'STRING',
631
- value: 'FILENAME'
632
- },
633
- {
634
- type: 'STRING',
635
- value: 'README.md'
636
- }
637
- ]
638
- ],
639
- null,
640
- null
641
- ],
642
- {
643
- type: 'STRING',
644
- value: 'MIXED'
645
- },
646
- [
647
- {
648
- type: 'ATOM',
649
- value: 'BOUNDARY'
650
- },
651
- {
652
- type: 'STRING',
653
- value: '-=Part.TEXT=-'
654
- }
655
- ],
656
- null,
657
- null,
658
- null
659
- ];
660
-
661
- let bodyStruct = parseBodystructure(attribute);
662
-
663
- test.deepEqual(bodyStruct, {
664
- childNodes: [
665
- {
666
- part: '1',
667
- childNodes: [
668
- {
669
- part: '1.1',
670
- type: 'text/plain',
671
- parameters: {
672
- charset: 'UTF-8'
673
- },
674
- encoding: '7bit',
675
- size: 2
676
- },
677
- {
678
- part: '1.2',
679
- type: 'text/html',
680
- parameters: {
681
- charset: 'UTF-8'
682
- },
683
- encoding: '7bit',
684
- size: 27
685
- }
686
- ],
687
- type: 'multipart/alternative',
688
- parameters: {
689
- boundary: '-=Part.1=-'
690
- }
691
- },
692
- {
693
- part: '2',
694
- type: 'text/plain',
695
- parameters: {
696
- charset: 'US-ASCII'
697
- },
698
- id: '<f_m5mjjzj32>',
699
- encoding: 'base64',
700
- size: 49,
701
- disposition: 'attachment',
702
- dispositionParameters: {
703
- filename: 'logs.txt'
704
- }
705
- },
706
- {
707
- part: '3',
708
- type: 'text/html',
709
- parameters: {
710
- charset: 'US-ASCII'
711
- },
712
- id: '<f_m5mjjziw1>',
713
- encoding: 'base64',
714
- size: 4437,
715
- disposition: 'attachment',
716
- dispositionParameters: {
717
- filename: 'TITI.html'
718
- }
719
- },
720
- {
721
- part: '4',
722
- type: 'image/png',
723
- id: '<f_m5mjjzih0>',
724
- encoding: 'base64',
725
- size: 32085,
726
- disposition: 'attachment',
727
- dispositionParameters: {
728
- filename: 'Logo-google-icon-PNG.png'
729
- }
730
- },
731
- {
732
- part: '5',
733
- type: 'application/octet-stream',
734
- id: '<f_m5mjjzjb3>',
735
- encoding: 'base64',
736
- size: 354150,
737
- disposition: 'attachment',
738
- dispositionParameters: {
739
- filename: 'logs_not_txt'
740
- }
741
- },
742
- {
743
- part: '6',
744
- type: 'text/markdown',
745
- parameters: {
746
- charset: 'UTF-8'
747
- },
748
- id: '<f_m5mjk5le4>',
749
- encoding: 'base64',
750
- size: 21064,
751
- disposition: 'attachment',
752
- dispositionParameters: {
753
- filename: 'README.md'
754
- }
755
- }
756
- ],
757
- type: 'multipart/mixed',
758
- parameters: {
759
- boundary: '-=Part.TEXT=-'
760
- }
761
- });
762
- test.done();
763
- };
764
-
765
- module.exports['Process non-standard unicode filename property'] = test => {
766
- let attribute = [
767
- [
768
- [
769
- { type: 'STRING', value: 'text' },
770
- { type: 'STRING', value: 'plain' },
771
- [
772
- { type: 'STRING', value: 'charset' },
773
- { type: 'STRING', value: 'utf-8' }
774
- ],
775
- null,
776
- null,
777
- { type: 'STRING', value: 'quoted-printable' },
778
- { type: 'ATOM', value: '275385' },
779
- { type: 'ATOM', value: '3531' },
780
- null,
781
- null,
782
- null,
783
- null
784
- ],
785
- [
786
- [
787
- { type: 'STRING', value: 'text' },
788
- { type: 'STRING', value: 'html' },
789
- [
790
- { type: 'STRING', value: 'charset' },
791
- { type: 'STRING', value: 'utf-8' }
792
- ],
793
- null,
794
- null,
795
- { type: 'STRING', value: 'quoted-printable' },
796
- { type: 'ATOM', value: '333' },
797
- { type: 'ATOM', value: '6' },
798
- null,
799
- null,
800
- null,
801
- null
802
- ],
803
- [
804
- { type: 'STRING', value: 'image' },
805
- { type: 'STRING', value: 'png' },
806
- [
807
- { type: 'STRING', value: 'name' },
808
- { type: 'STRING', value: 'image-1.png' }
809
- ],
810
- {
811
- type: 'STRING',
812
- value: '<7e1703a0-b8b7-4d00-9193-989506afb76e@emailengine>'
813
- },
814
- null,
815
- { type: 'STRING', value: 'base64' },
816
- { type: 'ATOM', value: '271540' },
817
- null,
818
- [
819
- { type: 'STRING', value: 'inline' },
820
- [
821
- { type: 'STRING', value: 'filename' },
822
- { type: 'STRING', value: 'image-1.png' }
823
- ]
824
- ],
825
- null,
826
- null
827
- ],
828
- { type: 'STRING', value: 'related' },
829
- [
830
- { type: 'STRING', value: 'type' },
831
- { type: 'STRING', value: 'text/html' },
832
- { type: 'STRING', value: 'boundary' },
833
- {
834
- type: 'STRING',
835
- value: '----=_Part-GUieKCU_ZWVAMi40OS43_nvE0TCtGsQo-Part_4'
836
- }
837
- ],
838
- null,
839
- null
840
- ],
841
- { type: 'STRING', value: 'alternative' },
842
- [
843
- { type: 'STRING', value: 'boundary' },
844
- {
845
- type: 'STRING',
846
- value: '----=_Part-GUieKCU_ZWVAMi40OS43_nvE0TCtGsQo-Part_2'
847
- }
848
- ],
849
- null,
850
- null
851
- ],
852
- [
853
- { type: 'STRING', value: 'application' },
854
- {
855
- type: 'STRING',
856
- value: 'vnd.openxmlformats-officedocument.spreadsheetml.sheet'
857
- },
858
- [
859
- { type: 'STRING', value: 'name' },
860
- {
861
- type: 'STRING',
862
- value: '=?UTF-8?Q?Trang=5Fghi=5F=C3=A2m_=288=29_=281=29=2E?= =?UTF-8?Q?xlsx?='
863
- }
864
- ],
865
- null,
866
- null,
867
- { type: 'STRING', value: 'base64' },
868
- { type: 'ATOM', value: '532006' },
869
- null,
870
- [
871
- { type: 'STRING', value: 'attachment' },
872
- [
873
- { type: 'STRING', value: 'filename' },
874
- {
875
- type: 'STRING',
876
- value: "utf-8''Trang_ghi_%C3%A2m%20%288%29%20%281%29.xlsx"
877
- }
878
- ]
879
- ],
880
- null,
881
- null
882
- ],
883
- { type: 'STRING', value: 'mixed' },
884
- [
885
- { type: 'STRING', value: 'boundary' },
886
- {
887
- type: 'STRING',
888
- value: '----=_Part-GUieKCU_ZWVAMi40OS43_nvE0TCtGsQo-Part_1'
889
- }
890
- ],
891
- null,
892
- null
893
- ];
894
-
895
- let bodyStruct = parseBodystructure(attribute);
896
-
897
- test.deepEqual(bodyStruct.childNodes[1].dispositionParameters.filename, 'Trang_ghi_âm (8) (1).xlsx');
898
- test.done();
899
- };